From cebcc9a3d9734e32fa540b3252dfeebffc06eec2 Mon Sep 17 00:00:00 2001 From: Reve Date: Fri, 12 Nov 2021 12:12:48 +0100 Subject: [PATCH 1/2] source code for contract jack --- Jack/ClientFxDLL/BaseFx.cpp | 572 + Jack/ClientFxDLL/ClientFxDLL.vcproj | 473 + Jack/ClientFxDLL/ClientFxDLL.vcproj.vspscc | 10 + Jack/ClientFxDLL/CreateFX.cpp | 146 + Jack/ClientFxDLL/CreateFX.h | 54 + Jack/ClientFxDLL/FlareSpriteFX.cpp | 381 + Jack/ClientFxDLL/FlareSpriteFX.h | 61 + Jack/ClientFxDLL/LTBbouncychunkfx.cpp | 413 + Jack/ClientFxDLL/LTBbouncychunkfx.h | 75 + Jack/ClientFxDLL/ParticleSystemFX.cpp | 1182 ++ Jack/ClientFxDLL/ParticleSystemFX.h | 136 + Jack/ClientFxDLL/bouncychunkfx.cpp | 413 + Jack/ClientFxDLL/bouncychunkfx.h | 74 + Jack/ClientFxDLL/camjitterfx.cpp | 228 + Jack/ClientFxDLL/camjitterfx.h | 49 + Jack/ClientFxDLL/camwobblefx.cpp | 265 + Jack/ClientFxDLL/camwobblefx.h | 55 + Jack/ClientFxDLL/clientfx.cpp | 905 ++ Jack/ClientFxDLL/clientfx.h | 160 + Jack/ClientFxDLL/cycletimer.cpp | 18 + Jack/ClientFxDLL/cycletimer.h | 16 + Jack/ClientFxDLL/dynalightfx.cpp | 228 + Jack/ClientFxDLL/dynalightfx.h | 57 + Jack/ClientFxDLL/fallingstufffx.cpp | 693 ++ Jack/ClientFxDLL/fallingstufffx.h | 115 + Jack/ClientFxDLL/lightningfx.cpp | 912 ++ Jack/ClientFxDLL/lightningfx.h | 189 + Jack/ClientFxDLL/ltbmodelfx.cpp | 580 + Jack/ClientFxDLL/ltbmodelfx.h | 75 + Jack/ClientFxDLL/memarray.h | 286 + Jack/ClientFxDLL/nullfx.cpp | 269 + Jack/ClientFxDLL/nullfx.h | 56 + Jack/ClientFxDLL/playrandomsoundfx.cpp | 339 + Jack/ClientFxDLL/playrandomsoundfx.h | 69 + Jack/ClientFxDLL/playsoundfx.cpp | 362 + Jack/ClientFxDLL/playsoundfx.h | 70 + Jack/ClientFxDLL/polyfanfx.cpp | 220 + Jack/ClientFxDLL/polyfanfx.h | 64 + Jack/ClientFxDLL/polytubefx.cpp | 698 ++ Jack/ClientFxDLL/polytubefx.h | 111 + Jack/ClientFxDLL/resource.h | 33 + Jack/ClientFxDLL/screentrail.cpp | 180 + Jack/ClientFxDLL/screentrail.h | 45 + Jack/ClientFxDLL/spritefx.cpp | 431 + Jack/ClientFxDLL/spritefx.h | 77 + Jack/ClientFxDLL/spritesystemfx.cpp | 926 ++ Jack/ClientFxDLL/spritesystemfx.h | 133 + Jack/ClientFxDLL/stdafx.cpp | 8 + Jack/ClientFxDLL/stdafx.h | 74 + Jack/ClientFxDLL/swaplist.h | 142 + Jack/ClientRes/ClientRes.h | 9637 ++++++++++++++++ Jack/ClientRes/ClientRes.vcproj | 832 ++ Jack/ClientRes/ClientRes.vcproj.vspscc | 10 + Jack/ClientRes/Lang/DE/ClientRes.rc | 7722 +++++++++++++ Jack/ClientRes/Lang/DE/credits.txt | 332 + Jack/ClientRes/Lang/DE/intro.txt | 104 + Jack/ClientRes/Lang/EN/ClientRes.rc | 7808 +++++++++++++ Jack/ClientRes/Lang/EN/credits.txt | 334 + Jack/ClientRes/Lang/EN/intro.txt | 104 + Jack/ClientRes/Lang/ES/ClientRes.rc | 7715 +++++++++++++ Jack/ClientRes/Lang/ES/credits.txt | 333 + Jack/ClientRes/Lang/ES/intro.txt | 104 + Jack/ClientRes/Lang/FR/ClientRes.rc | 7747 +++++++++++++ Jack/ClientRes/Lang/FR/credits.txt | 332 + Jack/ClientRes/Lang/FR/intro.txt | 104 + Jack/ClientRes/Lang/IT/ClientRes.rc | 7734 +++++++++++++ Jack/ClientRes/Lang/IT/credits.txt | 332 + Jack/ClientRes/Lang/IT/intro.txt | 104 + Jack/ClientRes/arrow.cur | Bin 0 -> 2558 bytes Jack/ClientRes/main.cpp | 7 + Jack/ClientRes/samplecredits.txt | 23 + Jack/ClientShellDLL/ActivateObjectFX.cpp | 175 + Jack/ClientShellDLL/ActivateObjectFX.h | 73 + Jack/ClientShellDLL/AimMagnetFX.cpp | 112 + Jack/ClientShellDLL/AimMagnetFX.h | 55 + Jack/ClientShellDLL/AutoTargetMgr.cpp | 646 ++ Jack/ClientShellDLL/AutoTargetMgr.h | 93 + Jack/ClientShellDLL/BaseLineSystemFX.cpp | 95 + Jack/ClientShellDLL/BaseLineSystemFX.h | 36 + Jack/ClientShellDLL/BaseMenu.cpp | 390 + Jack/ClientShellDLL/BaseMenu.h | 132 + Jack/ClientShellDLL/BaseParticleSystemFX.cpp | 342 + Jack/ClientShellDLL/BaseParticleSystemFX.h | 112 + Jack/ClientShellDLL/BasePolyDrawFX.cpp | 102 + Jack/ClientShellDLL/BasePolyDrawFX.h | 102 + Jack/ClientShellDLL/BaseScaleFX.cpp | 417 + Jack/ClientShellDLL/BaseScaleFX.h | 191 + Jack/ClientShellDLL/BaseScreen.cpp | 2214 ++++ Jack/ClientShellDLL/BaseScreen.h | 378 + Jack/ClientShellDLL/BeamFX.cpp | 131 + Jack/ClientShellDLL/BeamFX.h | 63 + Jack/ClientShellDLL/BodyFX.cpp | 1013 ++ Jack/ClientShellDLL/BodyFX.h | 136 + Jack/ClientShellDLL/BulletTrailFX.cpp | 225 + Jack/ClientShellDLL/BulletTrailFX.h | 89 + Jack/ClientShellDLL/CMoveMgr.cpp | 3036 +++++ Jack/ClientShellDLL/CMoveMgr.h | 280 + Jack/ClientShellDLL/CameraFX.h | 144 + Jack/ClientShellDLL/CameraOffsetMgr.cpp | 457 + Jack/ClientShellDLL/CameraOffsetMgr.h | 135 + Jack/ClientShellDLL/ChainedFX.cpp | 94 + Jack/ClientShellDLL/ChainedFX.h | 57 + Jack/ClientShellDLL/CharacterFX.cpp | 3362 ++++++ Jack/ClientShellDLL/CharacterFX.h | 286 + Jack/ClientShellDLL/ChassisFX.cpp | 88 + Jack/ClientShellDLL/ChassisFX.h | 58 + Jack/ClientShellDLL/ChassisPieceFX.cpp | 242 + Jack/ClientShellDLL/ChassisPieceFX.h | 77 + Jack/ClientShellDLL/CheatMgr.cpp | 1407 +++ Jack/ClientShellDLL/CheatMgr.h | 98 + Jack/ClientShellDLL/ClientButeMgr.cpp | 714 ++ Jack/ClientShellDLL/ClientButeMgr.h | 97 + Jack/ClientShellDLL/ClientFXDB.cpp | 929 ++ Jack/ClientShellDLL/ClientFXDB.h | 202 + Jack/ClientShellDLL/ClientFXMgr.cpp | 1744 +++ Jack/ClientShellDLL/ClientFXMgr.h | 293 + Jack/ClientShellDLL/ClientInfoMgr.cpp | 371 + Jack/ClientShellDLL/ClientInfoMgr.h | 63 + Jack/ClientShellDLL/ClientMultiplayerMgr.cpp | 1474 +++ Jack/ClientShellDLL/ClientMultiplayerMgr.h | 220 + Jack/ClientShellDLL/ClientSaveLoadMgr.cpp | 491 + Jack/ClientShellDLL/ClientSaveLoadMgr.h | 62 + Jack/ClientShellDLL/ClientShellDLL.vcproj | 2121 ++++ .../ClientShellDLL.vcproj.vspscc | 10 + Jack/ClientShellDLL/ClientSoundMgr.cpp | 239 + Jack/ClientShellDLL/ClientSoundMgr.h | 54 + .../ClientTrackedNodeContext.cpp | 108 + .../ClientShellDLL/ClientTrackedNodeContext.h | 35 + Jack/ClientShellDLL/ClientTrackedNodeMgr.cpp | 46 + Jack/ClientShellDLL/ClientTrackedNodeMgr.h | 18 + Jack/ClientShellDLL/ClientUtilities.cpp | 636 ++ Jack/ClientShellDLL/ClientUtilities.h | 128 + Jack/ClientShellDLL/ClientWeapon.cpp | 5992 ++++++++++ Jack/ClientShellDLL/ClientWeapon.h | 495 + Jack/ClientShellDLL/ClientWeaponAllocator.h | 27 + Jack/ClientShellDLL/ClientWeaponBase.h | 176 + Jack/ClientShellDLL/ClientWeaponMgr.cpp | 1338 +++ Jack/ClientShellDLL/ClientWeaponMgr.h | 159 + Jack/ClientShellDLL/ClientWeaponNone.h | 27 + Jack/ClientShellDLL/ClientWeaponUtils.cpp | 106 + Jack/ClientShellDLL/ClientWeaponUtils.h | 43 + Jack/ClientShellDLL/Credits.cpp | 976 ++ Jack/ClientShellDLL/Credits.h | 165 + Jack/ClientShellDLL/CursorMgr.cpp | 535 + Jack/ClientShellDLL/CursorMgr.h | 70 + Jack/ClientShellDLL/DamageFXMgr.cpp | 1443 +++ Jack/ClientShellDLL/DamageFXMgr.h | 223 + Jack/ClientShellDLL/DeathFX.cpp | 303 + Jack/ClientShellDLL/DeathFX.h | 72 + Jack/ClientShellDLL/DebrisFX.cpp | 759 ++ Jack/ClientShellDLL/DebrisFX.h | 148 + Jack/ClientShellDLL/DebugLineFX.cpp | 281 + Jack/ClientShellDLL/DebugLineFX.h | 70 + Jack/ClientShellDLL/DynamicLightFX.cpp | 161 + Jack/ClientShellDLL/DynamicLightFX.h | 88 + .../DynamicOccluderVolumeFX.cpp | 175 + Jack/ClientShellDLL/DynamicOccluderVolumeFX.h | 55 + Jack/ClientShellDLL/ExplosionFX.cpp | 116 + Jack/ClientShellDLL/ExplosionFX.h | 36 + Jack/ClientShellDLL/FastList.h | 589 + Jack/ClientShellDLL/FireFX.cpp | 404 + Jack/ClientShellDLL/FireFX.h | 95 + Jack/ClientShellDLL/FlashLight.cpp | 402 + Jack/ClientShellDLL/FlashLight.h | 75 + Jack/ClientShellDLL/FullScreenTint.cpp | 131 + Jack/ClientShellDLL/FullScreenTint.h | 43 + Jack/ClientShellDLL/GadgetDisabler.cpp | 335 + Jack/ClientShellDLL/GadgetDisabler.h | 57 + Jack/ClientShellDLL/GadgetTargetFX.cpp | 56 + Jack/ClientShellDLL/GadgetTargetFX.h | 59 + Jack/ClientShellDLL/GameButes.h | 109 + Jack/ClientShellDLL/GameClientShell.cpp | 5107 +++++++++ Jack/ClientShellDLL/GameClientShell.h | 395 + Jack/ClientShellDLL/GameSettings.cpp | 200 + Jack/ClientShellDLL/GameSettings.h | 161 + Jack/ClientShellDLL/GibFX.cpp | 941 ++ Jack/ClientShellDLL/GibFX.h | 187 + Jack/ClientShellDLL/GlobalClientMgr.cpp | 265 + Jack/ClientShellDLL/GlobalClientMgr.h | 49 + Jack/ClientShellDLL/GlobalsInit.cpp | 23 + Jack/ClientShellDLL/HUDAir.cpp | 158 + Jack/ClientShellDLL/HUDAir.h | 65 + Jack/ClientShellDLL/HUDAmmo.cpp | 216 + Jack/ClientShellDLL/HUDAmmo.h | 70 + Jack/ClientShellDLL/HUDBar.cpp | 141 + Jack/ClientShellDLL/HUDBar.h | 36 + Jack/ClientShellDLL/HUDBombTarget.cpp | 168 + Jack/ClientShellDLL/HUDBombTarget.h | 58 + Jack/ClientShellDLL/HUDCarrying.cpp | 227 + Jack/ClientShellDLL/HUDCarrying.h | 92 + Jack/ClientShellDLL/HUDChatInput.cpp | 284 + Jack/ClientShellDLL/HUDChatInput.h | 71 + Jack/ClientShellDLL/HUDChooser.cpp | 507 + Jack/ClientShellDLL/HUDChooser.h | 106 + Jack/ClientShellDLL/HUDCompass.cpp | 133 + Jack/ClientShellDLL/HUDCompass.h | 53 + Jack/ClientShellDLL/HUDCrosshair.cpp | 628 ++ Jack/ClientShellDLL/HUDCrosshair.h | 91 + Jack/ClientShellDLL/HUDDamage.cpp | 114 + Jack/ClientShellDLL/HUDDamage.h | 42 + Jack/ClientShellDLL/HUDDamageDir.cpp | 165 + Jack/ClientShellDLL/HUDDamageDir.h | 55 + Jack/ClientShellDLL/HUDDecision.cpp | 289 + Jack/ClientShellDLL/HUDDecision.h | 75 + Jack/ClientShellDLL/HUDDisplayMeter.cpp | 58 + Jack/ClientShellDLL/HUDDisplayMeter.h | 36 + Jack/ClientShellDLL/HUDDistance.cpp | 246 + Jack/ClientShellDLL/HUDDistance.h | 61 + Jack/ClientShellDLL/HUDDoomsday.cpp | 210 + Jack/ClientShellDLL/HUDDoomsday.h | 57 + Jack/ClientShellDLL/HUDHealth.cpp | 202 + Jack/ClientShellDLL/HUDHealth.h | 73 + Jack/ClientShellDLL/HUDHiding.cpp | 201 + Jack/ClientShellDLL/HUDHiding.h | 60 + Jack/ClientShellDLL/HUDHidingBar.cpp | 69 + Jack/ClientShellDLL/HUDHidingBar.h | 30 + Jack/ClientShellDLL/HUDItem.h | 57 + Jack/ClientShellDLL/HUDMessage.cpp | 400 + Jack/ClientShellDLL/HUDMessage.h | 136 + Jack/ClientShellDLL/HUDMessageQueue.cpp | 534 + Jack/ClientShellDLL/HUDMessageQueue.h | 124 + Jack/ClientShellDLL/HUDMeter.cpp | 125 + Jack/ClientShellDLL/HUDMeter.h | 58 + Jack/ClientShellDLL/HUDMgr.cpp | 244 + Jack/ClientShellDLL/HUDMgr.h | 145 + Jack/ClientShellDLL/HUDMissionText.cpp | 161 + Jack/ClientShellDLL/HUDMissionText.h | 68 + Jack/ClientShellDLL/HUDObjectives.cpp | 149 + Jack/ClientShellDLL/HUDObjectives.h | 56 + Jack/ClientShellDLL/HUDPaused.cpp | 89 + Jack/ClientShellDLL/HUDPaused.h | 48 + Jack/ClientShellDLL/HUDPopup.cpp | 177 + Jack/ClientShellDLL/HUDPopup.h | 62 + Jack/ClientShellDLL/HUDProgressBar.cpp | 74 + Jack/ClientShellDLL/HUDProgressBar.h | 30 + Jack/ClientShellDLL/HUDRadar.cpp | 784 ++ Jack/ClientShellDLL/HUDRadar.h | 132 + Jack/ClientShellDLL/HUDRadio.cpp | 271 + Jack/ClientShellDLL/HUDRadio.h | 65 + Jack/ClientShellDLL/HUDRespawn.cpp | 268 + Jack/ClientShellDLL/HUDRespawn.h | 64 + Jack/ClientShellDLL/HUDScores.cpp | 420 + Jack/ClientShellDLL/HUDScores.h | 72 + Jack/ClientShellDLL/HUDSubtitles.cpp | 387 + Jack/ClientShellDLL/HUDSubtitles.h | 81 + Jack/ClientShellDLL/HUDTransmission.cpp | 91 + Jack/ClientShellDLL/HUDTransmission.h | 50 + Jack/ClientShellDLL/HUDWeaponHeat.cpp | 115 + Jack/ClientShellDLL/HUDWeaponHeat.h | 49 + Jack/ClientShellDLL/HeadBobMgr.cpp | 545 + Jack/ClientShellDLL/HeadBobMgr.h | 51 + Jack/ClientShellDLL/HitBox.cpp | 301 + Jack/ClientShellDLL/HitBox.h | 57 + Jack/ClientShellDLL/IntelItemList.cpp | 122 + Jack/ClientShellDLL/IntelItemList.h | 61 + Jack/ClientShellDLL/InterfaceMgr.cpp | 6516 +++++++++++ Jack/ClientShellDLL/InterfaceMgr.h | 641 ++ Jack/ClientShellDLL/InterfaceResMgr.cpp | 608 + Jack/ClientShellDLL/InterfaceResMgr.h | 145 + Jack/ClientShellDLL/InterfaceSurfMgr.cpp | 184 + Jack/ClientShellDLL/InterfaceSurfMgr.h | 73 + Jack/ClientShellDLL/InterfaceTimer.cpp | 138 + Jack/ClientShellDLL/InterfaceTimer.h | 55 + Jack/ClientShellDLL/IpMgr.cpp | 560 + Jack/ClientShellDLL/IpMgr.h | 126 + Jack/ClientShellDLL/JumpVolumeFX.cpp | 85 + Jack/ClientShellDLL/JumpVolumeFX.h | 42 + Jack/ClientShellDLL/LaserBeam.cpp | 285 + Jack/ClientShellDLL/LaserBeam.h | 40 + Jack/ClientShellDLL/LaserTriggerFX.cpp | 312 + Jack/ClientShellDLL/LaserTriggerFX.h | 55 + Jack/ClientShellDLL/LayoutMgr.cpp | 2673 +++++ Jack/ClientShellDLL/LayoutMgr.h | 387 + Jack/ClientShellDLL/LeanMgr.cpp | 612 + Jack/ClientShellDLL/LeanMgr.h | 83 + Jack/ClientShellDLL/LensFlareFX.cpp | 373 + Jack/ClientShellDLL/LensFlareFX.h | 99 + Jack/ClientShellDLL/LightFX.cpp | 451 + Jack/ClientShellDLL/LightFX.h | 123 + Jack/ClientShellDLL/LightGroupFX.cpp | 97 + Jack/ClientShellDLL/LightGroupFX.h | 44 + Jack/ClientShellDLL/LightScaleMgr.cpp | 99 + Jack/ClientShellDLL/LightScaleMgr.h | 54 + Jack/ClientShellDLL/LightningFX.cpp | 352 + Jack/ClientShellDLL/LightningFX.h | 132 + Jack/ClientShellDLL/LineSystemFX.cpp | 591 + Jack/ClientShellDLL/LineSystemFX.h | 120 + Jack/ClientShellDLL/LoadingScreen.cpp | 1047 ++ Jack/ClientShellDLL/LoadingScreen.h | 162 + Jack/ClientShellDLL/MarkSFX.cpp | 279 + Jack/ClientShellDLL/MarkSFX.h | 70 + Jack/ClientShellDLL/MenuEnum.h | 33 + Jack/ClientShellDLL/MenuIntel.cpp | 303 + Jack/ClientShellDLL/MenuIntel.h | 49 + Jack/ClientShellDLL/MenuInventory.cpp | 324 + Jack/ClientShellDLL/MenuInventory.h | 56 + Jack/ClientShellDLL/MenuKeys.cpp | 168 + Jack/ClientShellDLL/MenuKeys.h | 39 + Jack/ClientShellDLL/MenuMgr.cpp | 1026 ++ Jack/ClientShellDLL/MenuMgr.h | 162 + Jack/ClientShellDLL/MenuMission.cpp | 406 + Jack/ClientShellDLL/MenuMission.h | 51 + Jack/ClientShellDLL/MenuSystem.cpp | 248 + Jack/ClientShellDLL/MenuSystem.h | 41 + Jack/ClientShellDLL/MessageBox.cpp | 459 + Jack/ClientShellDLL/MessageBox.h | 113 + Jack/ClientShellDLL/MineFX.cpp | 191 + Jack/ClientShellDLL/MineFX.h | 47 + Jack/ClientShellDLL/MissionMgr.cpp | 1096 ++ Jack/ClientShellDLL/MissionMgr.h | 180 + Jack/ClientShellDLL/Music.cpp | 740 ++ Jack/ClientShellDLL/Music.h | 178 + Jack/ClientShellDLL/MuzzleFlashFX.cpp | 561 + Jack/ClientShellDLL/MuzzleFlashFX.h | 89 + Jack/ClientShellDLL/MuzzleFlashParticleFX.cpp | 229 + Jack/ClientShellDLL/MuzzleFlashParticleFX.h | 64 + Jack/ClientShellDLL/NodeController.cpp | 1024 ++ Jack/ClientShellDLL/NodeController.h | 199 + Jack/ClientShellDLL/NodeLinesFX.cpp | 124 + Jack/ClientShellDLL/NodeLinesFX.h | 60 + Jack/ClientShellDLL/ObjSpriteFX.cpp | 84 + Jack/ClientShellDLL/ObjSpriteFX.h | 41 + Jack/ClientShellDLL/ObjectiveControl.cpp | 119 + Jack/ClientShellDLL/ObjectiveControl.h | 50 + Jack/ClientShellDLL/Overlays.h | 48 + Jack/ClientShellDLL/PVFXMgr.cpp | 510 + Jack/ClientShellDLL/PVFXMgr.h | 92 + Jack/ClientShellDLL/ParticleExplosionFX.cpp | 448 + Jack/ClientShellDLL/ParticleExplosionFX.h | 174 + Jack/ClientShellDLL/ParticleShowerFX.cpp | 163 + Jack/ClientShellDLL/ParticleShowerFX.h | 76 + Jack/ClientShellDLL/ParticleSystemFX.cpp | 344 + Jack/ClientShellDLL/ParticleSystemFX.h | 98 + Jack/ClientShellDLL/ParticleTrailFX.cpp | 203 + Jack/ClientShellDLL/ParticleTrailFX.h | 69 + .../ClientShellDLL/ParticleTrailSegmentFX.cpp | 346 + Jack/ClientShellDLL/ParticleTrailSegmentFX.h | 93 + Jack/ClientShellDLL/PerformanceEnum.h | 36 + Jack/ClientShellDLL/PerformanceMgr.cpp | 503 + Jack/ClientShellDLL/PerformanceMgr.h | 99 + Jack/ClientShellDLL/PerformanceTest.cpp | 220 + Jack/ClientShellDLL/PerformanceTest.h | 69 + Jack/ClientShellDLL/PickupItemFX.cpp | 180 + Jack/ClientShellDLL/PickupItemFX.h | 59 + Jack/ClientShellDLL/PlayerCamera.cpp | 1061 ++ Jack/ClientShellDLL/PlayerCamera.h | 206 + Jack/ClientShellDLL/PlayerLureFX.cpp | 166 + Jack/ClientShellDLL/PlayerLureFX.h | 82 + Jack/ClientShellDLL/PlayerMgr.cpp | 5822 ++++++++++ Jack/ClientShellDLL/PlayerMgr.h | 513 + Jack/ClientShellDLL/PlayerSoundFX.cpp | 97 + Jack/ClientShellDLL/PlayerSoundFX.h | 66 + Jack/ClientShellDLL/PlayerStats.cpp | 17 + Jack/ClientShellDLL/PlayerStats.h | 151 + Jack/ClientShellDLL/PlayerVehicleFX.cpp | 232 + Jack/ClientShellDLL/PlayerVehicleFX.h | 50 + .../PlayerViewAttachmentMgr.cpp | 365 + Jack/ClientShellDLL/PlayerViewAttachmentMgr.h | 70 + Jack/ClientShellDLL/PolyDebrisFX.cpp | 386 + Jack/ClientShellDLL/PolyDebrisFX.h | 75 + Jack/ClientShellDLL/PolyGridFX.cpp | 1487 +++ Jack/ClientShellDLL/PolyGridFX.h | 334 + Jack/ClientShellDLL/PolyLineFX.cpp | 947 ++ Jack/ClientShellDLL/PolyLineFX.h | 245 + Jack/ClientShellDLL/PolygridBuffer.h | 124 + Jack/ClientShellDLL/PopupMgr.cpp | 145 + Jack/ClientShellDLL/PopupMgr.h | 65 + Jack/ClientShellDLL/PopupText.cpp | 154 + Jack/ClientShellDLL/PopupText.h | 69 + Jack/ClientShellDLL/ProfileMgr.cpp | 1968 ++++ Jack/ClientShellDLL/ProfileMgr.h | 358 + Jack/ClientShellDLL/ProjectileFX.cpp | 654 ++ Jack/ClientShellDLL/ProjectileFX.h | 115 + Jack/ClientShellDLL/RadarObjectFX.cpp | 104 + Jack/ClientShellDLL/RadarObjectFX.h | 44 + Jack/ClientShellDLL/RagDoll.cpp | 778 ++ Jack/ClientShellDLL/RagDoll.h | 170 + Jack/ClientShellDLL/RagDollConstraint.cpp | 455 + Jack/ClientShellDLL/RagDollConstraint.h | 191 + .../RagDollDistanceConstraint.h | 38 + Jack/ClientShellDLL/RagDollNode.h | 42 + Jack/ClientShellDLL/RandomSparksFX.cpp | 180 + Jack/ClientShellDLL/RandomSparksFX.h | 73 + Jack/ClientShellDLL/SFXMgr.cpp | 2130 ++++ Jack/ClientShellDLL/SFXMgr.h | 154 + Jack/ClientShellDLL/ScatterFX.cpp | 634 ++ Jack/ClientShellDLL/ScatterFX.h | 170 + .../ScmdConsoleDriver_CShell.cpp | 70 + .../ClientShellDLL/ScmdConsoleDriver_CShell.h | 43 + Jack/ClientShellDLL/ScreenAudio.cpp | 380 + Jack/ClientShellDLL/ScreenAudio.h | 62 + Jack/ClientShellDLL/ScreenCommands.h | 137 + Jack/ClientShellDLL/ScreenConfigure.cpp | 919 ++ Jack/ClientShellDLL/ScreenConfigure.h | 96 + Jack/ClientShellDLL/ScreenControls.cpp | 220 + Jack/ClientShellDLL/ScreenControls.h | 44 + Jack/ClientShellDLL/ScreenCrosshair.cpp | 265 + Jack/ClientShellDLL/ScreenCrosshair.h | 57 + Jack/ClientShellDLL/ScreenDisplay.cpp | 691 ++ Jack/ClientShellDLL/ScreenDisplay.h | 103 + Jack/ClientShellDLL/ScreenEndCoopMission.cpp | 286 + Jack/ClientShellDLL/ScreenEndCoopMission.h | 42 + Jack/ClientShellDLL/ScreenEndDMMission.cpp | 237 + Jack/ClientShellDLL/ScreenEndDMMission.h | 46 + Jack/ClientShellDLL/ScreenEndMission.cpp | 267 + Jack/ClientShellDLL/ScreenEndMission.h | 51 + Jack/ClientShellDLL/ScreenEnum.h | 85 + Jack/ClientShellDLL/ScreenFailure.cpp | 268 + Jack/ClientShellDLL/ScreenFailure.h | 48 + Jack/ClientShellDLL/ScreenGame.cpp | 215 + Jack/ClientShellDLL/ScreenGame.h | 52 + Jack/ClientShellDLL/ScreenHost.cpp | 861 ++ Jack/ClientShellDLL/ScreenHost.h | 95 + Jack/ClientShellDLL/ScreenHostDDOptions.cpp | 235 + Jack/ClientShellDLL/ScreenHostDDOptions.h | 61 + Jack/ClientShellDLL/ScreenHostDMOptions.cpp | 156 + Jack/ClientShellDLL/ScreenHostDMOptions.h | 54 + .../ScreenHostDemolitionOptions.cpp | 192 + .../ScreenHostDemolitionOptions.h | 54 + Jack/ClientShellDLL/ScreenHostLevels.cpp | 457 + Jack/ClientShellDLL/ScreenHostLevels.h | 55 + Jack/ClientShellDLL/ScreenHostMission.cpp | 677 ++ Jack/ClientShellDLL/ScreenHostMission.h | 65 + Jack/ClientShellDLL/ScreenHostOptions.cpp | 122 + Jack/ClientShellDLL/ScreenHostOptions.h | 49 + Jack/ClientShellDLL/ScreenHostTDMOptions.cpp | 208 + Jack/ClientShellDLL/ScreenHostTDMOptions.h | 59 + Jack/ClientShellDLL/ScreenHostWeapons.cpp | 505 + Jack/ClientShellDLL/ScreenHostWeapons.h | 59 + Jack/ClientShellDLL/ScreenJoin.cpp | 1781 +++ Jack/ClientShellDLL/ScreenJoin.h | 200 + Jack/ClientShellDLL/ScreenJoystick.cpp | 162 + Jack/ClientShellDLL/ScreenJoystick.h | 40 + Jack/ClientShellDLL/ScreenKeyboard.cpp | 156 + Jack/ClientShellDLL/ScreenKeyboard.h | 46 + Jack/ClientShellDLL/ScreenLoad.cpp | 359 + Jack/ClientShellDLL/ScreenLoad.h | 52 + Jack/ClientShellDLL/ScreenMain.cpp | 277 + Jack/ClientShellDLL/ScreenMain.h | 46 + Jack/ClientShellDLL/ScreenMgr.cpp | 368 + Jack/ClientShellDLL/ScreenMgr.h | 102 + Jack/ClientShellDLL/ScreenMouse.cpp | 160 + Jack/ClientShellDLL/ScreenMouse.h | 47 + Jack/ClientShellDLL/ScreenMulti.cpp | 629 ++ Jack/ClientShellDLL/ScreenMulti.h | 66 + Jack/ClientShellDLL/ScreenOptions.cpp | 106 + Jack/ClientShellDLL/ScreenOptions.h | 36 + Jack/ClientShellDLL/ScreenPerformance.cpp | 839 ++ Jack/ClientShellDLL/ScreenPerformance.h | 86 + Jack/ClientShellDLL/ScreenPlayer.cpp | 505 + Jack/ClientShellDLL/ScreenPlayer.h | 68 + Jack/ClientShellDLL/ScreenPlayerTeam.cpp | 625 ++ Jack/ClientShellDLL/ScreenPlayerTeam.h | 71 + Jack/ClientShellDLL/ScreenPostload.cpp | 713 ++ Jack/ClientShellDLL/ScreenPostload.h | 88 + Jack/ClientShellDLL/ScreenPreload.cpp | 382 + Jack/ClientShellDLL/ScreenPreload.h | 53 + Jack/ClientShellDLL/ScreenProfile.cpp | 438 + Jack/ClientShellDLL/ScreenProfile.h | 61 + Jack/ClientShellDLL/ScreenSave.cpp | 382 + Jack/ClientShellDLL/ScreenSave.h | 44 + Jack/ClientShellDLL/ScreenSingle.cpp | 675 ++ Jack/ClientShellDLL/ScreenSingle.h | 68 + Jack/ClientShellDLL/ScreenSpriteMgr.cpp | 738 ++ Jack/ClientShellDLL/ScreenSpriteMgr.h | 156 + Jack/ClientShellDLL/ScreenTeam.cpp | 403 + Jack/ClientShellDLL/ScreenTeam.h | 63 + Jack/ClientShellDLL/ScreenTintMgr.cpp | 76 + Jack/ClientShellDLL/ScreenTintMgr.h | 47 + Jack/ClientShellDLL/SearchLightFX.cpp | 253 + Jack/ClientShellDLL/SearchLightFX.h | 88 + Jack/ClientShellDLL/Searcher.cpp | 204 + Jack/ClientShellDLL/Searcher.h | 52 + Jack/ClientShellDLL/SharedDefs.h | 21 + Jack/ClientShellDLL/ShellCasingFX.cpp | 389 + Jack/ClientShellDLL/ShellCasingFX.h | 85 + Jack/ClientShellDLL/SmokeFX.cpp | 205 + Jack/ClientShellDLL/SmokeFX.h | 108 + Jack/ClientShellDLL/SnowFX.cpp | 1042 ++ Jack/ClientShellDLL/SnowFX.h | 205 + Jack/ClientShellDLL/SoundFX.cpp | 112 + Jack/ClientShellDLL/SoundFX.h | 87 + Jack/ClientShellDLL/Sparam.cpp | 130 + Jack/ClientShellDLL/Sparam.h | 29 + Jack/ClientShellDLL/SpecialFX.h | 150 + Jack/ClientShellDLL/SpecialFXList.cpp | 108 + Jack/ClientShellDLL/SpecialFXList.h | 75 + Jack/ClientShellDLL/Stdafx.cpp | 1 + Jack/ClientShellDLL/Stdafx.h | 50 + Jack/ClientShellDLL/SteamFX.cpp | 324 + Jack/ClientShellDLL/SteamFX.h | 65 + Jack/ClientShellDLL/SystemDependant.h | 21 + .../TO2ClientWeaponAllocator.cpp | 72 + .../ClientShellDLL/TO2ClientWeaponAllocator.h | 26 + Jack/ClientShellDLL/TO2GameClientShell.cpp | 157 + Jack/ClientShellDLL/TO2GameClientShell.h | 56 + Jack/ClientShellDLL/TO2HUDMgr.cpp | 99 + Jack/ClientShellDLL/TO2HUDMgr.h | 73 + Jack/ClientShellDLL/TO2InterfaceMgr.cpp | 216 + Jack/ClientShellDLL/TO2InterfaceMgr.h | 46 + Jack/ClientShellDLL/TO2LayoutMgr.cpp | 43 + Jack/ClientShellDLL/TO2LayoutMgr.h | 28 + Jack/ClientShellDLL/TO2PlayerMgr.cpp | 115 + Jack/ClientShellDLL/TO2PlayerMgr.h | 37 + Jack/ClientShellDLL/TO2PlayerStats.cpp | 1776 +++ Jack/ClientShellDLL/TO2PlayerStats.h | 208 + Jack/ClientShellDLL/TO2ScreenMgr.cpp | 275 + Jack/ClientShellDLL/TO2ScreenMgr.h | 34 + Jack/ClientShellDLL/TargetMgr.cpp | 1247 +++ Jack/ClientShellDLL/TargetMgr.h | 92 + Jack/ClientShellDLL/TextureFXMgr.cpp | 78 + Jack/ClientShellDLL/TextureFXMgr.h | 47 + Jack/ClientShellDLL/TimedText.cpp | 597 + Jack/ClientShellDLL/TimedText.h | 203 + Jack/ClientShellDLL/TracerFX.cpp | 212 + Jack/ClientShellDLL/TracerFX.h | 71 + Jack/ClientShellDLL/TransitionFXMgr.cpp | 406 + Jack/ClientShellDLL/TransitionFXMgr.h | 61 + Jack/ClientShellDLL/TriggerFX.cpp | 461 + Jack/ClientShellDLL/TriggerFX.h | 64 + Jack/ClientShellDLL/VKDefs.cpp | 93 + Jack/ClientShellDLL/VKDefs.h | 171 + Jack/ClientShellDLL/VarTrack.h | 133 + Jack/ClientShellDLL/VehicleMgr.cpp | 4881 ++++++++ Jack/ClientShellDLL/VehicleMgr.h | 280 + Jack/ClientShellDLL/VehicleWeapon.cpp | 501 + Jack/ClientShellDLL/VehicleWeapon.h | 85 + Jack/ClientShellDLL/VisionModeMgr.cpp | 128 + Jack/ClientShellDLL/VisionModeMgr.h | 43 + Jack/ClientShellDLL/VolumeBrushFX.h | 184 + Jack/ClientShellDLL/WeaponChooser.cpp | 368 + Jack/ClientShellDLL/WeaponChooser.h | 79 + Jack/ClientShellDLL/WeaponFX.cpp | 1521 +++ Jack/ClientShellDLL/WeaponFX.h | 183 + Jack/ClientShellDLL/WeaponStringDefs.h | 42 + Jack/ClientShellDLL/WeatherFX.cpp | 588 + Jack/ClientShellDLL/WeatherFX.h | 102 + Jack/ClientShellDLL/client_physics.cpp | 218 + Jack/ClientShellDLL/client_physics.h | 88 + Jack/ClientShellDLL/plasma.h | 9 + Jack/ClientShellDLL/resource.h | 15 + Jack/ClientShellDLL/sprinklesfx.cpp | 445 + Jack/ClientShellDLL/sprinklesfx.h | 118 + Jack/ClientShellDLL/stack.h | 118 + Jack/Launcher/AniButton.cpp | 155 + Jack/Launcher/AniButton.h | 57 + Jack/Launcher/AnimDlg.cpp | 193 + Jack/Launcher/AnimDlg.h | 80 + Jack/Launcher/BitmapCheckButton.cpp | 259 + Jack/Launcher/BitmapCheckButton.h | 85 + Jack/Launcher/ButtonEx.cpp | 170 + Jack/Launcher/ButtonEx.h | 71 + Jack/Launcher/CustomizeDlg.cpp | 476 + Jack/Launcher/CustomizeDlg.h | 72 + Jack/Launcher/DetailSettingsDlg.cpp | 184 + Jack/Launcher/DetailSettingsDlg.h | 71 + Jack/Launcher/DisplayDlg.cpp | 211 + Jack/Launcher/DisplayDlg.h | 68 + Jack/Launcher/DisplayMgr.cpp | 1515 +++ Jack/Launcher/DisplayMgr.h | 267 + Jack/Launcher/DlgEx.cpp | 392 + Jack/Launcher/DlgEx.h | 85 + Jack/Launcher/EditEx.cpp | 66 + Jack/Launcher/EditEx.h | 60 + Jack/Launcher/Launcher.cpp | 720 ++ Jack/Launcher/Launcher.h | 152 + Jack/Launcher/Launcher.vcproj | 2033 ++++ Jack/Launcher/Launcher.vcproj.vspscc | 13 + Jack/Launcher/LauncherDlg.cpp | 1230 +++ Jack/Launcher/LauncherDlg.h | 79 + Jack/Launcher/MessageBoxDlg.cpp | 217 + Jack/Launcher/MessageBoxDlg.h | 73 + Jack/Launcher/MoveDlg.cpp | 131 + Jack/Launcher/MoveDlg.h | 66 + Jack/Launcher/MultiplayerDlg.cpp | 194 + Jack/Launcher/MultiplayerDlg.h | 67 + Jack/Launcher/OptionsDlg.cpp | 349 + Jack/Launcher/OptionsDlg.h | 71 + Jack/Launcher/PlaySound.h | 54 + Jack/Launcher/RES/Lang/DE/Launcher.rc | 524 + Jack/Launcher/RES/Lang/DE/bmp/CancelD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/CancelF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/CancelU.bmp | Bin 0 -> 9056 bytes .../Launcher/RES/Lang/DE/bmp/Company1WebD.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/DE/bmp/Company1WebF.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/DE/bmp/Company1WebU.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/DE/bmp/Company2WebD.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/DE/bmp/Company2WebF.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/DE/bmp/Company2WebU.bmp | Bin 0 -> 3252 bytes .../RES/Lang/DE/bmp/CustomBackground.bmp | Bin 0 -> 570296 bytes Jack/Launcher/RES/Lang/DE/bmp/CustomD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/CustomF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/CustomU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/CustomX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/DE/bmp/DemoMainAppBackground.bmp | Bin 0 -> 386176 bytes .../Lang/DE/bmp/DetailSettingsBackground.bmp | Bin 0 -> 656696 bytes .../RES/Lang/DE/bmp/DisplayBackground.bmp | Bin 0 -> 709256 bytes Jack/Launcher/RES/Lang/DE/bmp/DisplayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/DisplayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/DisplayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/DisplayX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/HighDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/HighDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/HighDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/InstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/InstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/InstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/LowDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/LowDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/LowDetailU.bmp | Bin 0 -> 15536 bytes .../RES/Lang/DE/bmp/MainAppBackground.bmp | Bin 0 -> 386176 bytes .../RES/Lang/DE/bmp/MediumDetailD.bmp | Bin 0 -> 15536 bytes .../RES/Lang/DE/bmp/MediumDetailF.bmp | Bin 0 -> 15536 bytes .../RES/Lang/DE/bmp/MediumDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/DE/bmp/NextD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/NextF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/NextU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/NextX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/OKD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/OKU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/OkF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/DE/bmp/OptionsBackground.bmp | Bin 0 -> 656696 bytes Jack/Launcher/RES/Lang/DE/bmp/OptionsF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/OptionsX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PlayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PlayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PlayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PreviousD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PreviousF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PreviousU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/PreviousX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/DE/bmp/Publisher1WebD.bmp | Bin 0 -> 6296 bytes .../RES/Lang/DE/bmp/Publisher1WebF.bmp | Bin 0 -> 6296 bytes .../RES/Lang/DE/bmp/Publisher1WebU.bmp | Bin 0 -> 6296 bytes .../RES/Lang/DE/bmp/Publisher2WebD.bmp | Bin 0 -> 9056 bytes .../RES/Lang/DE/bmp/Publisher2WebF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/DE/bmp/Publisher2WebU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/QuitD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/QuitF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/QuitU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/UninstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/UninstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/UninstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/UninstallX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/optionsd.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/DE/bmp/optionsu.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/Launcher.rc | 518 + Jack/Launcher/RES/Lang/EN/PSD/Cancel.psd | Bin 0 -> 126522 bytes .../RES/Lang/EN/PSD/CustomBackground.psd | Bin 0 -> 1898400 bytes .../Lang/EN/PSD/DetailSettingsBackground.psd | Bin 0 -> 3247144 bytes .../RES/Lang/EN/PSD/DisplayBackground.psd | Bin 0 -> 1219308 bytes Jack/Launcher/RES/Lang/EN/PSD/Error.psd | Bin 0 -> 25190 bytes Jack/Launcher/RES/Lang/EN/PSD/Information.psd | Bin 0 -> 28136 bytes Jack/Launcher/RES/Lang/EN/PSD/Install.psd | Bin 0 -> 126336 bytes .../RES/Lang/EN/PSD/MainAppBackground.psd | Bin 0 -> 1767232 bytes .../Lang/EN/PSD/MainAppBackgroundbuttons.psd | Bin 0 -> 373959 bytes Jack/Launcher/RES/Lang/EN/PSD/Ok.psd | Bin 0 -> 123052 bytes .../RES/Lang/EN/PSD/OptionsBackground.psd | Bin 0 -> 2119978 bytes Jack/Launcher/RES/Lang/EN/PSD/Warning.psd | Bin 0 -> 23951 bytes Jack/Launcher/RES/Lang/EN/PSD/custom.psd | Bin 0 -> 35420 bytes Jack/Launcher/RES/Lang/EN/PSD/next.psd | Bin 0 -> 140924 bytes Jack/Launcher/RES/Lang/EN/PSD/previous.psd | Bin 0 -> 144772 bytes Jack/Launcher/RES/Lang/EN/bmp/CancelD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/CancelF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/CancelU.bmp | Bin 0 -> 9056 bytes .../Launcher/RES/Lang/EN/bmp/Company1WebD.bmp | Bin 0 -> 5096 bytes .../Launcher/RES/Lang/EN/bmp/Company1WebF.bmp | Bin 0 -> 5096 bytes .../Launcher/RES/Lang/EN/bmp/Company1WebU.bmp | Bin 0 -> 5096 bytes .../Launcher/RES/Lang/EN/bmp/Company2WebD.bmp | Bin 0 -> 5130 bytes .../Launcher/RES/Lang/EN/bmp/Company2WebF.bmp | Bin 0 -> 5130 bytes .../Launcher/RES/Lang/EN/bmp/Company2WebU.bmp | Bin 0 -> 5130 bytes .../RES/Lang/EN/bmp/CustomBackground.bmp | Bin 0 -> 570296 bytes Jack/Launcher/RES/Lang/EN/bmp/CustomD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/CustomF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/CustomU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/CustomX.bmp | Bin 0 -> 9056 bytes .../Lang/EN/bmp/DetailSettingsBackground.bmp | Bin 0 -> 875576 bytes .../RES/Lang/EN/bmp/DisplayBackground.bmp | Bin 0 -> 709256 bytes Jack/Launcher/RES/Lang/EN/bmp/DisplayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/DisplayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/DisplayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/DisplayX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/HighDetailD.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/HighDetailF.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/HighDetailU.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/InstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/InstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/InstallU.bmp | Bin 0 -> 9056 bytes .../Lang/EN/bmp/Launcher Art Requirements.doc | Bin 0 -> 904192 bytes Jack/Launcher/RES/Lang/EN/bmp/LowDetailD.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/LowDetailF.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/LowDetailU.bmp | Bin 0 -> 19136 bytes .../RES/Lang/EN/bmp/MainAppBackground.bmp | Bin 0 -> 386176 bytes .../RES/Lang/EN/bmp/MediumDetailD.bmp | Bin 0 -> 19136 bytes .../RES/Lang/EN/bmp/MediumDetailF.bmp | Bin 0 -> 19136 bytes .../RES/Lang/EN/bmp/MediumDetailU.bmp | Bin 0 -> 19136 bytes Jack/Launcher/RES/Lang/EN/bmp/NextD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/NextF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/NextU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/NextX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/OKD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/OKU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/OkF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/EN/bmp/OptionsBackground.bmp | Bin 0 -> 656696 bytes Jack/Launcher/RES/Lang/EN/bmp/OptionsF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/OptionsX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PlayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PlayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PlayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PreviousD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PreviousF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PreviousU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/PreviousX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/EN/bmp/Publisher1WebD.bmp | Bin 0 -> 6296 bytes .../RES/Lang/EN/bmp/Publisher1WebF.bmp | Bin 0 -> 6296 bytes .../RES/Lang/EN/bmp/Publisher1WebU.bmp | Bin 0 -> 6296 bytes .../RES/Lang/EN/bmp/Publisher2WebD.bmp | Bin 0 -> 5096 bytes .../RES/Lang/EN/bmp/Publisher2WebF.bmp | Bin 0 -> 5096 bytes .../RES/Lang/EN/bmp/Publisher2WebU.bmp | Bin 0 -> 5096 bytes Jack/Launcher/RES/Lang/EN/bmp/QuitD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/QuitF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/QuitU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/UninstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/UninstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/UninstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/UninstallX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/optionsd.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/EN/bmp/optionsu.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/Launcher.rc | 520 + Jack/Launcher/RES/Lang/ES/bmp/CancelD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/CancelF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/CancelU.bmp | Bin 0 -> 9056 bytes .../Launcher/RES/Lang/ES/bmp/Company1WebD.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/ES/bmp/Company1WebF.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/ES/bmp/Company1WebU.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/ES/bmp/Company2WebD.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/ES/bmp/Company2WebF.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/ES/bmp/Company2WebU.bmp | Bin 0 -> 3252 bytes .../RES/Lang/ES/bmp/CustomBackground.bmp | Bin 0 -> 570296 bytes Jack/Launcher/RES/Lang/ES/bmp/CustomD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/CustomF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/CustomU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/CustomX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/ES/bmp/DemoMainAppBackground.bmp | Bin 0 -> 386176 bytes .../Lang/ES/bmp/DetailSettingsBackground.bmp | Bin 0 -> 656696 bytes .../RES/Lang/ES/bmp/DisplayBackground.bmp | Bin 0 -> 709256 bytes Jack/Launcher/RES/Lang/ES/bmp/DisplayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/DisplayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/DisplayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/DisplayX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/HighDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/HighDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/HighDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/InstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/InstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/InstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/LowDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/LowDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/LowDetailU.bmp | Bin 0 -> 15536 bytes .../RES/Lang/ES/bmp/MainAppBackground.bmp | Bin 0 -> 386176 bytes .../RES/Lang/ES/bmp/MediumDetailD.bmp | Bin 0 -> 15536 bytes .../RES/Lang/ES/bmp/MediumDetailF.bmp | Bin 0 -> 15536 bytes .../RES/Lang/ES/bmp/MediumDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/ES/bmp/NextD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/NextF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/NextU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/NextX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/OKD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/OKU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/OkF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/ES/bmp/OptionsBackground.bmp | Bin 0 -> 656696 bytes Jack/Launcher/RES/Lang/ES/bmp/OptionsF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/OptionsX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PlayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PlayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PlayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PreviousD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PreviousF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PreviousU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/PreviousX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/ES/bmp/Publisher1WebD.bmp | Bin 0 -> 6296 bytes .../RES/Lang/ES/bmp/Publisher1WebF.bmp | Bin 0 -> 6296 bytes .../RES/Lang/ES/bmp/Publisher1WebU.bmp | Bin 0 -> 6296 bytes .../RES/Lang/ES/bmp/Publisher2WebD.bmp | Bin 0 -> 9056 bytes .../RES/Lang/ES/bmp/Publisher2WebF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/ES/bmp/Publisher2WebU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/QuitD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/QuitF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/QuitU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/UninstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/UninstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/UninstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/UninstallX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/optionsd.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/ES/bmp/optionsu.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/Launcher.rc | 520 + Jack/Launcher/RES/Lang/FR/bmp/CancelD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/CancelF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/CancelU.bmp | Bin 0 -> 9056 bytes .../Launcher/RES/Lang/FR/bmp/Company1WebD.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/FR/bmp/Company1WebF.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/FR/bmp/Company1WebU.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/FR/bmp/Company2WebD.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/FR/bmp/Company2WebF.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/FR/bmp/Company2WebU.bmp | Bin 0 -> 3252 bytes .../RES/Lang/FR/bmp/CustomBackground.bmp | Bin 0 -> 570296 bytes Jack/Launcher/RES/Lang/FR/bmp/CustomD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/CustomF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/CustomU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/CustomX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/FR/bmp/DemoMainAppBackground.bmp | Bin 0 -> 386176 bytes .../Lang/FR/bmp/DetailSettingsBackground.bmp | Bin 0 -> 656696 bytes .../RES/Lang/FR/bmp/DisplayBackground.bmp | Bin 0 -> 709256 bytes Jack/Launcher/RES/Lang/FR/bmp/DisplayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/DisplayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/DisplayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/DisplayX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/HighDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/HighDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/HighDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/InstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/InstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/InstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/LowDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/LowDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/LowDetailU.bmp | Bin 0 -> 15536 bytes .../RES/Lang/FR/bmp/MainAppBackground.bmp | Bin 0 -> 386176 bytes .../RES/Lang/FR/bmp/MediumDetailD.bmp | Bin 0 -> 15536 bytes .../RES/Lang/FR/bmp/MediumDetailF.bmp | Bin 0 -> 15536 bytes .../RES/Lang/FR/bmp/MediumDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/FR/bmp/NextD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/NextF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/NextU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/NextX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/OKD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/OKU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/OkF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/FR/bmp/OptionsBackground.bmp | Bin 0 -> 656696 bytes Jack/Launcher/RES/Lang/FR/bmp/OptionsF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/OptionsX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PlayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PlayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PlayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PreviousD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PreviousF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PreviousU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/PreviousX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/FR/bmp/Publisher1WebD.bmp | Bin 0 -> 6296 bytes .../RES/Lang/FR/bmp/Publisher1WebF.bmp | Bin 0 -> 6296 bytes .../RES/Lang/FR/bmp/Publisher1WebU.bmp | Bin 0 -> 6296 bytes .../RES/Lang/FR/bmp/Publisher2WebD.bmp | Bin 0 -> 9056 bytes .../RES/Lang/FR/bmp/Publisher2WebF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/FR/bmp/Publisher2WebU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/QuitD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/QuitF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/QuitU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/UninstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/UninstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/UninstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/UninstallX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/optionsd.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/FR/bmp/optionsu.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/Launcher.rc | 519 + Jack/Launcher/RES/Lang/IT/bmp/CancelD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/CancelF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/CancelU.bmp | Bin 0 -> 9056 bytes .../Launcher/RES/Lang/IT/bmp/Company1WebD.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/IT/bmp/Company1WebF.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/IT/bmp/Company1WebU.bmp | Bin 0 -> 3184 bytes .../Launcher/RES/Lang/IT/bmp/Company2WebD.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/IT/bmp/Company2WebF.bmp | Bin 0 -> 3252 bytes .../Launcher/RES/Lang/IT/bmp/Company2WebU.bmp | Bin 0 -> 3252 bytes .../RES/Lang/IT/bmp/CustomBackground.bmp | Bin 0 -> 570296 bytes Jack/Launcher/RES/Lang/IT/bmp/CustomD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/CustomF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/CustomU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/CustomX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/IT/bmp/DemoMainAppBackground.bmp | Bin 0 -> 386176 bytes .../Lang/IT/bmp/DetailSettingsBackground.bmp | Bin 0 -> 656696 bytes .../RES/Lang/IT/bmp/DisplayBackground.bmp | Bin 0 -> 709256 bytes Jack/Launcher/RES/Lang/IT/bmp/DisplayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/DisplayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/DisplayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/DisplayX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/HighDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/HighDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/HighDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/InstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/InstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/InstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/LowDetailD.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/LowDetailF.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/LowDetailU.bmp | Bin 0 -> 15536 bytes .../RES/Lang/IT/bmp/MainAppBackground.bmp | Bin 0 -> 386176 bytes .../RES/Lang/IT/bmp/MediumDetailD.bmp | Bin 0 -> 15536 bytes .../RES/Lang/IT/bmp/MediumDetailF.bmp | Bin 0 -> 15536 bytes .../RES/Lang/IT/bmp/MediumDetailU.bmp | Bin 0 -> 15536 bytes Jack/Launcher/RES/Lang/IT/bmp/NextD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/NextF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/NextU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/NextX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/OKD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/OKU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/OkF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/IT/bmp/OptionsBackground.bmp | Bin 0 -> 656696 bytes Jack/Launcher/RES/Lang/IT/bmp/OptionsF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/OptionsX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PlayD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PlayF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PlayU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PreviousD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PreviousF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PreviousU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/PreviousX.bmp | Bin 0 -> 9056 bytes .../RES/Lang/IT/bmp/Publisher1WebD.bmp | Bin 0 -> 6296 bytes .../RES/Lang/IT/bmp/Publisher1WebF.bmp | Bin 0 -> 6296 bytes .../RES/Lang/IT/bmp/Publisher1WebU.bmp | Bin 0 -> 6296 bytes .../RES/Lang/IT/bmp/Publisher2WebD.bmp | Bin 0 -> 9056 bytes .../RES/Lang/IT/bmp/Publisher2WebF.bmp | Bin 0 -> 9056 bytes .../RES/Lang/IT/bmp/Publisher2WebU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/QuitD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/QuitF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/QuitU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/UninstallD.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/UninstallF.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/UninstallU.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/UninstallX.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/optionsd.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Lang/IT/bmp/optionsu.bmp | Bin 0 -> 9056 bytes Jack/Launcher/RES/Launcher.ico | Bin 0 -> 7406 bytes Jack/Launcher/RES/Launcher.rc2 | 13 + Jack/Launcher/RES/WebHand.cur | Bin 0 -> 326 bytes Jack/Launcher/RES/bmp/BoxBackground.bmp | Bin 0 -> 450056 bytes Jack/Launcher/RES/bmp/CheckBoxC.bmp | Bin 0 -> 940 bytes Jack/Launcher/RES/bmp/CheckBoxF.bmp | Bin 0 -> 940 bytes Jack/Launcher/RES/bmp/CheckBoxN.bmp | Bin 0 -> 940 bytes Jack/Launcher/RES/bmp/Error.bmp | Bin 0 -> 4464 bytes Jack/Launcher/RES/bmp/Information.bmp | Bin 0 -> 4464 bytes Jack/Launcher/RES/bmp/MinimizeD.bmp | Bin 0 -> 728 bytes Jack/Launcher/RES/bmp/MinimizeU.bmp | Bin 0 -> 728 bytes Jack/Launcher/RES/bmp/Warning.bmp | Bin 0 -> 4464 bytes Jack/Launcher/RES/bmp/closed.bmp | Bin 0 -> 728 bytes Jack/Launcher/RES/bmp/closeu.bmp | Bin 0 -> 728 bytes Jack/Launcher/RES/snd/Click.wav | Bin 0 -> 7882 bytes Jack/Launcher/RES/snd/Intro.wav | Bin 0 -> 616776 bytes Jack/Launcher/RES/snd/Select.wav | Bin 0 -> 1194 bytes Jack/Launcher/RES/snd/TypeBack.wav | Bin 0 -> 1120 bytes Jack/Launcher/RES/snd/buttondown.wav | Bin 0 -> 3304 bytes Jack/Launcher/RES/snd/type1.WAV | Bin 0 -> 4790 bytes Jack/Launcher/RES/snd/type2.WAV | Bin 0 -> 2988 bytes Jack/Launcher/RES/snd/type3.WAV | Bin 0 -> 2322 bytes Jack/Launcher/RezFind.cpp | 202 + Jack/Launcher/RezFind.h | 27 + Jack/Launcher/StaticEx.cpp | 294 + Jack/Launcher/StaticEx.h | 87 + Jack/Launcher/StdAfx.cpp | 8 + Jack/Launcher/StdAfx.h | 29 + Jack/Launcher/TextCheckBox.cpp | 223 + Jack/Launcher/TextCheckBox.h | 79 + Jack/Launcher/Utils.cpp | 461 + Jack/Launcher/Utils.h | 44 + Jack/Launcher/resource.h | 184 + Jack/Libs/GameSpy/GameSpy.lib | Bin 0 -> 5890 bytes Jack/Libs/GameSpy/IGameSpy.h | 387 + Jack/Libs/LTGUIMgr/ltguibutton.cpp | 268 + Jack/Libs/LTGUIMgr/ltguibutton.h | 93 + Jack/Libs/LTGUIMgr/ltguicolumnctrl.cpp | 311 + Jack/Libs/LTGUIMgr/ltguicolumnctrl.h | 103 + Jack/Libs/LTGUIMgr/ltguicommandhandler.cpp | 26 + Jack/Libs/LTGUIMgr/ltguicommandhandler.h | 32 + Jack/Libs/LTGUIMgr/ltguictrl.cpp | 70 + Jack/Libs/LTGUIMgr/ltguictrl.h | 171 + Jack/Libs/LTGUIMgr/ltguicyclectrl.cpp | 391 + Jack/Libs/LTGUIMgr/ltguicyclectrl.h | 102 + Jack/Libs/LTGUIMgr/ltguieditctrl.cpp | 567 + Jack/Libs/LTGUIMgr/ltguieditctrl.h | 147 + Jack/Libs/LTGUIMgr/ltguiframe.cpp | 286 + Jack/Libs/LTGUIMgr/ltguiframe.h | 73 + Jack/Libs/LTGUIMgr/ltguilargetext.cpp | 503 + Jack/Libs/LTGUIMgr/ltguilargetext.h | 100 + Jack/Libs/LTGUIMgr/ltguilistctrl.cpp | 988 ++ Jack/Libs/LTGUIMgr/ltguilistctrl.h | 157 + Jack/Libs/LTGUIMgr/ltguimgr.h | 58 + Jack/Libs/LTGUIMgr/ltguimgr60.vcproj | 273 + Jack/Libs/LTGUIMgr/ltguimgr60.vcproj.vspscc | 10 + Jack/Libs/LTGUIMgr/ltguislider.cpp | 559 + Jack/Libs/LTGUIMgr/ltguislider.h | 146 + Jack/Libs/LTGUIMgr/ltguitextitemctrl.cpp | 278 + Jack/Libs/LTGUIMgr/ltguitextitemctrl.h | 99 + Jack/Libs/LTGUIMgr/ltguitoggle.cpp | 108 + Jack/Libs/LTGUIMgr/ltguitoggle.h | 54 + Jack/Libs/LTGUIMgr/ltguiwindow.cpp | 553 + Jack/Libs/LTGUIMgr/ltguiwindow.h | 117 + Jack/Libs/LTGUIMgr/ltquaduvutils.h | 79 + Jack/Libs/LTGUIMgr/vkdefs.h | 152 + Jack/ObjectDLL/AI.cpp | 6361 +++++++++++ Jack/ObjectDLL/AI.h | 787 ++ Jack/ObjectDLL/AIAssert.cpp | 66 + Jack/ObjectDLL/AIAssert.h | 111 + Jack/ObjectDLL/AIBrain.cpp | 499 + Jack/ObjectDLL/AIBrain.h | 171 + Jack/ObjectDLL/AIButeMgr.cpp | 810 ++ Jack/ObjectDLL/AIButeMgr.h | 363 + Jack/ObjectDLL/AICentralKnowledgeMgr.cpp | 582 + Jack/ObjectDLL/AICentralKnowledgeMgr.h | 123 + Jack/ObjectDLL/AIClassFactory.cpp | 189 + Jack/ObjectDLL/AIClassFactory.h | 197 + Jack/ObjectDLL/AIDataTypeEnums.h | 85 + Jack/ObjectDLL/AIGoalAbstract.cpp | 824 ++ Jack/ObjectDLL/AIGoalAbstract.h | 227 + Jack/ObjectDLL/AIGoalAbstractSearch.cpp | 259 + Jack/ObjectDLL/AIGoalAbstractSearch.h | 65 + Jack/ObjectDLL/AIGoalAbstractStimulated.cpp | 227 + Jack/ObjectDLL/AIGoalAbstractStimulated.h | 88 + Jack/ObjectDLL/AIGoalAbstractTargeted.cpp | 74 + Jack/ObjectDLL/AIGoalAbstractTargeted.h | 46 + Jack/ObjectDLL/AIGoalAbstractUseObject.cpp | 605 + Jack/ObjectDLL/AIGoalAbstractUseObject.h | 93 + Jack/ObjectDLL/AIGoalAlarm.cpp | 328 + Jack/ObjectDLL/AIGoalAlarm.h | 66 + Jack/ObjectDLL/AIGoalAnimate.cpp | 167 + Jack/ObjectDLL/AIGoalAnimate.h | 60 + Jack/ObjectDLL/AIGoalApprehend.cpp | 189 + Jack/ObjectDLL/AIGoalApprehend.h | 57 + Jack/ObjectDLL/AIGoalAssassinate.cpp | 197 + Jack/ObjectDLL/AIGoalAssassinate.h | 66 + Jack/ObjectDLL/AIGoalAttack.cpp | 651 ++ Jack/ObjectDLL/AIGoalAttack.h | 105 + Jack/ObjectDLL/AIGoalAttackFromCover.cpp | 444 + Jack/ObjectDLL/AIGoalAttackFromCover.h | 68 + .../ObjectDLL/AIGoalAttackFromRandomVantage.h | 39 + Jack/ObjectDLL/AIGoalAttackFromRoofVantage.h | 40 + Jack/ObjectDLL/AIGoalAttackFromVantage.h | 60 + Jack/ObjectDLL/AIGoalAttackFromView.cpp | 355 + Jack/ObjectDLL/AIGoalAttackFromView.h | 67 + Jack/ObjectDLL/AIGoalAttackMelee.cpp | 103 + Jack/ObjectDLL/AIGoalAttackMelee.h | 46 + Jack/ObjectDLL/AIGoalAttackProne.cpp | 326 + Jack/ObjectDLL/AIGoalAttackProne.h | 65 + Jack/ObjectDLL/AIGoalAttackProp.cpp | 238 + Jack/ObjectDLL/AIGoalAttackProp.h | 59 + Jack/ObjectDLL/AIGoalAttackRanged.cpp | 64 + Jack/ObjectDLL/AIGoalAttackRanged.h | 42 + Jack/ObjectDLL/AIGoalAttackRangedDynamic.cpp | 362 + Jack/ObjectDLL/AIGoalAttackRangedDynamic.h | 69 + .../AIGoalAttackfromRandomVantage.cpp | 93 + .../ObjectDLL/AIGoalAttackfromRoofVantage.cpp | 102 + Jack/ObjectDLL/AIGoalAttackfromVantage.cpp | 235 + Jack/ObjectDLL/AIGoalButeMgr.cpp | 707 ++ Jack/ObjectDLL/AIGoalButeMgr.h | 176 + Jack/ObjectDLL/AIGoalCatch.cpp | 243 + Jack/ObjectDLL/AIGoalCatch.h | 89 + Jack/ObjectDLL/AIGoalCharge.cpp | 196 + Jack/ObjectDLL/AIGoalCharge.h | 63 + Jack/ObjectDLL/AIGoalChase.cpp | 1002 ++ Jack/ObjectDLL/AIGoalChase.h | 104 + Jack/ObjectDLL/AIGoalCheckBody.cpp | 623 ++ Jack/ObjectDLL/AIGoalCheckBody.h | 82 + Jack/ObjectDLL/AIGoalCover.cpp | 305 + Jack/ObjectDLL/AIGoalCover.h | 70 + Jack/ObjectDLL/AIGoalDeflect.cpp | 286 + Jack/ObjectDLL/AIGoalDeflect.h | 91 + Jack/ObjectDLL/AIGoalDisappearReappear.cpp | 244 + Jack/ObjectDLL/AIGoalDisappearReappear.h | 67 + .../AIGoalDisappearReappearEvasive.cpp | 297 + .../AIGoalDisappearReappearEvasive.h | 69 + Jack/ObjectDLL/AIGoalDistress.cpp | 220 + Jack/ObjectDLL/AIGoalDistress.h | 62 + Jack/ObjectDLL/AIGoalDramaDeath.cpp | 323 + Jack/ObjectDLL/AIGoalDramaDeath.h | 70 + Jack/ObjectDLL/AIGoalDrawWeapon.cpp | 244 + Jack/ObjectDLL/AIGoalDrawWeapon.h | 55 + Jack/ObjectDLL/AIGoalExitLevel.cpp | 115 + Jack/ObjectDLL/AIGoalExitLevel.h | 48 + Jack/ObjectDLL/AIGoalFlee.cpp | 374 + Jack/ObjectDLL/AIGoalFlee.h | 74 + Jack/ObjectDLL/AIGoalFollow.cpp | 273 + Jack/ObjectDLL/AIGoalFollow.h | 65 + Jack/ObjectDLL/AIGoalFollowFootprint.cpp | 201 + Jack/ObjectDLL/AIGoalFollowFootprint.h | 58 + Jack/ObjectDLL/AIGoalGetBackup.cpp | 380 + Jack/ObjectDLL/AIGoalGetBackup.h | 73 + Jack/ObjectDLL/AIGoalGoto.cpp | 183 + Jack/ObjectDLL/AIGoalGoto.h | 60 + Jack/ObjectDLL/AIGoalGuard.cpp | 376 + Jack/ObjectDLL/AIGoalGuard.h | 74 + Jack/ObjectDLL/AIGoalHolsterWeapon.cpp | 150 + Jack/ObjectDLL/AIGoalHolsterWeapon.h | 48 + Jack/ObjectDLL/AIGoalInvestigate.cpp | 1272 +++ Jack/ObjectDLL/AIGoalInvestigate.h | 109 + Jack/ObjectDLL/AIGoalLoveKitty.cpp | 238 + Jack/ObjectDLL/AIGoalLoveKitty.h | 63 + Jack/ObjectDLL/AIGoalLunge.cpp | 417 + Jack/ObjectDLL/AIGoalLunge.h | 72 + Jack/ObjectDLL/AIGoalMenace.cpp | 137 + Jack/ObjectDLL/AIGoalMenace.h | 50 + Jack/ObjectDLL/AIGoalMgr.cpp | 1650 +++ Jack/ObjectDLL/AIGoalMgr.h | 172 + Jack/ObjectDLL/AIGoalMountedFlashlight.cpp | 177 + Jack/ObjectDLL/AIGoalMountedFlashlight.h | 51 + Jack/ObjectDLL/AIGoalObstruct.cpp | 321 + Jack/ObjectDLL/AIGoalObstruct.h | 109 + Jack/ObjectDLL/AIGoalPatrol.cpp | 426 + Jack/ObjectDLL/AIGoalPatrol.h | 75 + Jack/ObjectDLL/AIGoalProximityCommand.cpp | 125 + Jack/ObjectDLL/AIGoalProximityCommand.h | 52 + Jack/ObjectDLL/AIGoalPsychoChase.cpp | 97 + Jack/ObjectDLL/AIGoalPsychoChase.h | 42 + Jack/ObjectDLL/AIGoalReclassifyToEnemy.cpp | 103 + Jack/ObjectDLL/AIGoalReclassifyToEnemy.h | 76 + Jack/ObjectDLL/AIGoalRespondToAlarm.cpp | 404 + Jack/ObjectDLL/AIGoalRespondToAlarm.h | 73 + Jack/ObjectDLL/AIGoalRespondToBackup.cpp | 269 + Jack/ObjectDLL/AIGoalRespondToBackup.h | 64 + Jack/ObjectDLL/AIGoalResurrecting.cpp | 310 + Jack/ObjectDLL/AIGoalResurrecting.h | 88 + Jack/ObjectDLL/AIGoalRetreat.cpp | 301 + Jack/ObjectDLL/AIGoalRetreat.h | 67 + Jack/ObjectDLL/AIGoalSearch.cpp | 227 + Jack/ObjectDLL/AIGoalSearch.h | 54 + Jack/ObjectDLL/AIGoalSentryChallenge.cpp | 358 + Jack/ObjectDLL/AIGoalSentryChallenge.h | 87 + Jack/ObjectDLL/AIGoalSentryMark.cpp | 339 + Jack/ObjectDLL/AIGoalSentryMark.h | 76 + Jack/ObjectDLL/AIGoalSerumDeath.cpp | 248 + Jack/ObjectDLL/AIGoalSerumDeath.h | 66 + Jack/ObjectDLL/AIGoalSleep.cpp | 210 + Jack/ObjectDLL/AIGoalSleep.h | 48 + Jack/ObjectDLL/AIGoalSniper.cpp | 503 + Jack/ObjectDLL/AIGoalSniper.h | 80 + Jack/ObjectDLL/AIGoalSpecialDamage.cpp | 1336 +++ Jack/ObjectDLL/AIGoalSpecialDamage.h | 97 + Jack/ObjectDLL/AIGoalTail.cpp | 123 + Jack/ObjectDLL/AIGoalTail.h | 47 + Jack/ObjectDLL/AIGoalTalk.cpp | 562 + Jack/ObjectDLL/AIGoalTalk.h | 98 + Jack/ObjectDLL/AIGoalTypeEnums.h | 97 + Jack/ObjectDLL/AIGoalWork.cpp | 308 + Jack/ObjectDLL/AIGoalWork.h | 89 + Jack/ObjectDLL/AIHuman.cpp | 2606 +++++ Jack/ObjectDLL/AIHuman.h | 261 + Jack/ObjectDLL/AIHumanState.cpp | 9827 +++++++++++++++++ Jack/ObjectDLL/AIHumanState.h | 1494 +++ Jack/ObjectDLL/AIHumanStateApprehend.cpp | 195 + Jack/ObjectDLL/AIHumanStateApprehend.h | 44 + Jack/ObjectDLL/AIHumanStateAttackMove.cpp | 288 + Jack/ObjectDLL/AIHumanStateAttackMove.h | 49 + Jack/ObjectDLL/AIHumanStateAttackProne.cpp | 226 + Jack/ObjectDLL/AIHumanStateAttackProne.h | 46 + Jack/ObjectDLL/AIHumanStateCatch.cpp | 400 + Jack/ObjectDLL/AIHumanStateCatch.h | 112 + Jack/ObjectDLL/AIHumanStateDeflect.cpp | 471 + Jack/ObjectDLL/AIHumanStateDeflect.h | 129 + .../AIHumanStateDisappearReappear.cpp | 316 + .../ObjectDLL/AIHumanStateDisappearReappear.h | 57 + Jack/ObjectDLL/AIHumanStateLaunch.cpp | 106 + Jack/ObjectDLL/AIHumanStateLaunch.h | 47 + Jack/ObjectDLL/AIHumanStateObstruct.cpp | 393 + Jack/ObjectDLL/AIHumanStateObstruct.h | 111 + Jack/ObjectDLL/AIHumanStateResurrecting.cpp | 270 + Jack/ObjectDLL/AIHumanStateResurrecting.h | 97 + .../ObjectDLL/AIHumanStateSentryChallenge.cpp | 929 ++ Jack/ObjectDLL/AIHumanStateSentryChallenge.h | 223 + Jack/ObjectDLL/AIHumanStateSniper.cpp | 288 + Jack/ObjectDLL/AIHumanStateSniper.h | 49 + Jack/ObjectDLL/AIHumanStrategy.cpp | 4869 ++++++++ Jack/ObjectDLL/AIHumanStrategy.h | 933 ++ Jack/ObjectDLL/AIHumanStrategyShootStream.cpp | 423 + Jack/ObjectDLL/AIHumanStrategyShootStream.h | 104 + .../ObjectDLL/AIHumanStrategyToggleLights.cpp | 524 + Jack/ObjectDLL/AIHumanStrategyToggleLights.h | 72 + Jack/ObjectDLL/AIInformationVolumeMgr.cpp | 74 + Jack/ObjectDLL/AIInformationVolumeMgr.h | 63 + Jack/ObjectDLL/AIMovement.cpp | 1284 +++ Jack/ObjectDLL/AIMovement.h | 124 + Jack/ObjectDLL/AIMovementModifier.cpp | 207 + Jack/ObjectDLL/AIMovementModifier.h | 136 + Jack/ObjectDLL/AINode.cpp | 2534 +++++ Jack/ObjectDLL/AINode.h | 1043 ++ Jack/ObjectDLL/AINodeDisturbance.cpp | 145 + Jack/ObjectDLL/AINodeDisturbance.h | 58 + Jack/ObjectDLL/AINodeGuard.cpp | 197 + Jack/ObjectDLL/AINodeGuard.h | 80 + Jack/ObjectDLL/AINodeMgr.cpp | 1416 +++ Jack/ObjectDLL/AINodeMgr.h | 109 + Jack/ObjectDLL/AINodeSensing.cpp | 654 ++ Jack/ObjectDLL/AINodeSensing.h | 139 + Jack/ObjectDLL/AINodeSniper.cpp | 90 + Jack/ObjectDLL/AINodeSniper.h | 44 + Jack/ObjectDLL/AINodeTypeEnums.h | 80 + Jack/ObjectDLL/AIPath.cpp | 453 + Jack/ObjectDLL/AIPath.h | 184 + Jack/ObjectDLL/AIPathKnowledgeMgr.cpp | 203 + Jack/ObjectDLL/AIPathKnowledgeMgr.h | 54 + Jack/ObjectDLL/AIPathMgr.cpp | 2272 ++++ Jack/ObjectDLL/AIPathMgr.h | 190 + Jack/ObjectDLL/AIRegion.cpp | 369 + Jack/ObjectDLL/AIRegion.h | 92 + Jack/ObjectDLL/AIRegionMgr.cpp | 135 + Jack/ObjectDLL/AIRegionMgr.h | 43 + Jack/ObjectDLL/AISenseRecorderAbstract.cpp | 1008 ++ Jack/ObjectDLL/AISenseRecorderAbstract.h | 172 + Jack/ObjectDLL/AISenseRecorderGame.cpp | 922 ++ Jack/ObjectDLL/AISenseRecorderGame.h | 49 + Jack/ObjectDLL/AISenseTypeEnums.h | 66 + Jack/ObjectDLL/AISensing.h | 77 + Jack/ObjectDLL/AISoundTypeEnums.h | 105 + Jack/ObjectDLL/AISounds.cpp | 128 + Jack/ObjectDLL/AISounds.h | 40 + Jack/ObjectDLL/AISpatialRepresentationMgr.cpp | 707 ++ Jack/ObjectDLL/AISpatialRepresentationMgr.h | 108 + Jack/ObjectDLL/AIState.cpp | 330 + Jack/ObjectDLL/AIState.h | 187 + Jack/ObjectDLL/AIStateTypeEnums.h | 126 + Jack/ObjectDLL/AIStimulusMgr.cpp | 1733 +++ Jack/ObjectDLL/AIStimulusMgr.h | 260 + Jack/ObjectDLL/AIStimulusTypeEnums.h | 72 + Jack/ObjectDLL/AIStrategy.h | 19 + Jack/ObjectDLL/AIStrategyTypeEnums.h | 48 + Jack/ObjectDLL/AITarget.cpp | 555 + Jack/ObjectDLL/AITarget.h | 110 + Jack/ObjectDLL/AITypes.cpp | 116 + Jack/ObjectDLL/AITypes.h | 278 + Jack/ObjectDLL/AIUtils.cpp | 460 + Jack/ObjectDLL/AIUtils.h | 170 + Jack/ObjectDLL/AIVolume.cpp | 2766 +++++ Jack/ObjectDLL/AIVolume.h | 832 ++ Jack/ObjectDLL/AIVolumeMgr.cpp | 275 + Jack/ObjectDLL/AIVolumeMgr.h | 54 + Jack/ObjectDLL/AIVolumeNeighbor.cpp | 339 + Jack/ObjectDLL/AIVolumeNeighbor.h | 130 + Jack/ObjectDLL/AIVolumeTypeEnums.h | 51 + Jack/ObjectDLL/ActiveWorldModel.cpp | 2389 ++++ Jack/ObjectDLL/ActiveWorldModel.h | 274 + Jack/ObjectDLL/AimMagnet.cpp | 497 + Jack/ObjectDLL/AimMagnet.h | 81 + Jack/ObjectDLL/Alarm.cpp | 769 ++ Jack/ObjectDLL/Alarm.h | 106 + Jack/ObjectDLL/AmmoBox.cpp | 564 + Jack/ObjectDLL/AmmoBox.h | 87 + Jack/ObjectDLL/AnimationLex.cpp | 2 + Jack/ObjectDLL/AnimationLex.h | 41 + Jack/ObjectDLL/AnimationLex.l | 124 + Jack/ObjectDLL/AnimationMgr.cpp | 1512 +++ Jack/ObjectDLL/AnimationMgr.h | 512 + Jack/ObjectDLL/AnimationMovement.h | 37 + Jack/ObjectDLL/AnimationMovementEnums.h | 47 + Jack/ObjectDLL/AnimationParse.cpp | 1 + Jack/ObjectDLL/AnimationParse.h | 8 + Jack/ObjectDLL/AnimationParse.y | 129 + Jack/ObjectDLL/AnimationParser.cpp | 358 + Jack/ObjectDLL/AnimationParser.h | 105 + Jack/ObjectDLL/AnimationProp.h | 41 + Jack/ObjectDLL/AnimationPropEnums.h | 247 + Jack/ObjectDLL/AnimationPropGroupEnums.h | 42 + Jack/ObjectDLL/AnimationPropStrings.h | 31 + Jack/ObjectDLL/AnimationStd.h | 714 ++ Jack/ObjectDLL/AnimatorPlayer.cpp | 1486 +++ Jack/ObjectDLL/AnimatorPlayer.h | 487 + Jack/ObjectDLL/Attachments.cpp | 2206 ++++ Jack/ObjectDLL/Attachments.h | 598 + Jack/ObjectDLL/BanIPMgr.cpp | 510 + Jack/ObjectDLL/BanIPMgr.h | 94 + Jack/ObjectDLL/Body.cpp | 2311 ++++ Jack/ObjectDLL/Body.h | 276 + Jack/ObjectDLL/BodyState.cpp | 1610 +++ Jack/ObjectDLL/BodyState.h | 366 + Jack/ObjectDLL/Bombable.cpp | 877 ++ Jack/ObjectDLL/Bombable.h | 96 + Jack/ObjectDLL/Breakable.cpp | 30 + Jack/ObjectDLL/Breakable.h | 102 + Jack/ObjectDLL/ButeTools.cpp | 258 + Jack/ObjectDLL/ButeTools.h | 60 + Jack/ObjectDLL/CDynArray.h | 91 + Jack/ObjectDLL/CVarTrack.h | 105 + Jack/ObjectDLL/Camera.cpp | 639 ++ Jack/ObjectDLL/Camera.h | 104 + Jack/ObjectDLL/Character.cpp | 4928 +++++++++ Jack/ObjectDLL/Character.h | 671 ++ Jack/ObjectDLL/CharacterHitBox.cpp | 1053 ++ Jack/ObjectDLL/CharacterHitBox.h | 123 + Jack/ObjectDLL/CharacterMgr.cpp | 726 ++ Jack/ObjectDLL/CharacterMgr.h | 122 + Jack/ObjectDLL/Chassis.cpp | 719 ++ Jack/ObjectDLL/Chassis.h | 138 + Jack/ObjectDLL/ChassisPiece.cpp | 615 ++ Jack/ObjectDLL/ChassisPiece.h | 103 + Jack/ObjectDLL/ClassHlp.but | 1455 +++ Jack/ObjectDLL/ClientLightFX.cpp | 659 ++ Jack/ObjectDLL/ClientLightFX.h | 171 + Jack/ObjectDLL/ClientSFX.cpp | 35 + Jack/ObjectDLL/ClientSFX.h | 28 + Jack/ObjectDLL/ClientWeaponSFX.cpp | 188 + Jack/ObjectDLL/ClientWeaponSFX.h | 45 + Jack/ObjectDLL/CollectiveRelationMgr.cpp | 269 + Jack/ObjectDLL/CollectiveRelationMgr.h | 103 + Jack/ObjectDLL/CommandButeMgr.cpp | 441 + Jack/ObjectDLL/CommandButeMgr.h | 70 + Jack/ObjectDLL/CommandMgr.cpp | 4875 ++++++++ Jack/ObjectDLL/CommandMgr.h | 567 + Jack/ObjectDLL/CommandObject.cpp | 531 + Jack/ObjectDLL/CommandObject.h | 105 + Jack/ObjectDLL/Controller.cpp | 507 + Jack/ObjectDLL/Controller.h | 157 + Jack/ObjectDLL/CoopMissionMgr.cpp | 136 + Jack/ObjectDLL/CoopMissionMgr.h | 31 + Jack/ObjectDLL/DEditColors.h | 40 + Jack/ObjectDLL/DeathMatchMissionMgr.cpp | 264 + Jack/ObjectDLL/DeathMatchMissionMgr.h | 56 + Jack/ObjectDLL/DeathScene.cpp | 171 + Jack/ObjectDLL/DeathScene.h | 70 + Jack/ObjectDLL/DebrisFuncs.cpp | 118 + Jack/ObjectDLL/DebrisFuncs.h | 91 + Jack/ObjectDLL/DebugLineSystem.cpp | 542 + Jack/ObjectDLL/DebugLineSystem.h | 227 + Jack/ObjectDLL/DecisionObject.cpp | 492 + Jack/ObjectDLL/DecisionObject.h | 110 + Jack/ObjectDLL/DemolitionMissionMgr.cpp | 275 + Jack/ObjectDLL/DemolitionMissionMgr.h | 57 + Jack/ObjectDLL/Destructible.cpp | 2140 ++++ Jack/ObjectDLL/Destructible.h | 385 + Jack/ObjectDLL/DestructibleModel.cpp | 750 ++ Jack/ObjectDLL/DestructibleModel.h | 119 + Jack/ObjectDLL/Dialogue.cpp | 890 ++ Jack/ObjectDLL/Dialogue.h | 104 + Jack/ObjectDLL/DisplayMeter.cpp | 517 + Jack/ObjectDLL/DisplayMeter.h | 109 + Jack/ObjectDLL/DisplayTimer.cpp | 632 ++ Jack/ObjectDLL/DisplayTimer.h | 89 + Jack/ObjectDLL/DoomsDayDevice.cpp | 687 ++ Jack/ObjectDLL/DoomsDayDevice.h | 97 + Jack/ObjectDLL/DoomsDayMissionMgr.cpp | 367 + Jack/ObjectDLL/DoomsDayMissionMgr.h | 79 + Jack/ObjectDLL/DoomsDayPiece.cpp | 282 + Jack/ObjectDLL/DoomsDayPiece.h | 62 + Jack/ObjectDLL/Door.cpp | 702 ++ Jack/ObjectDLL/Door.h | 97 + Jack/ObjectDLL/DoorKnob.cpp | 63 + Jack/ObjectDLL/DoorKnob.h | 27 + Jack/ObjectDLL/DynamicOccluderVolume.cpp | 366 + Jack/ObjectDLL/DynamicOccluderVolume.h | 58 + Jack/ObjectDLL/Editable.cpp | 593 + Jack/ObjectDLL/Editable.h | 73 + Jack/ObjectDLL/EventCounter.cpp | 483 + Jack/ObjectDLL/EventCounter.h | 109 + Jack/ObjectDLL/ExitTrigger.cpp | 258 + Jack/ObjectDLL/ExitTrigger.h | 44 + Jack/ObjectDLL/Explosion.cpp | 789 ++ Jack/ObjectDLL/Explosion.h | 91 + Jack/ObjectDLL/Fire.cpp | 311 + Jack/ObjectDLL/Fire.h | 57 + Jack/ObjectDLL/GadgetTarget.cpp | 1523 +++ Jack/ObjectDLL/GadgetTarget.h | 143 + Jack/ObjectDLL/GadgetTargetMgr.cpp | 508 + Jack/ObjectDLL/GadgetTargetMgr.h | 172 + Jack/ObjectDLL/GameBase.cpp | 819 ++ Jack/ObjectDLL/GameBase.h | 82 + Jack/ObjectDLL/GameBaseLite.cpp | 262 + Jack/ObjectDLL/GameBaseLite.h | 147 + Jack/ObjectDLL/GameServerShell.cpp | 6010 ++++++++++ Jack/ObjectDLL/GameServerShell.h | 499 + Jack/ObjectDLL/GameStartPoint.cpp | 398 + Jack/ObjectDLL/GameStartPoint.h | 126 + Jack/ObjectDLL/GearItems.cpp | 472 + Jack/ObjectDLL/GearItems.h | 74 + Jack/ObjectDLL/GeneralInventory.h | 55 + Jack/ObjectDLL/GlobalServerMgr.cpp | 422 + Jack/ObjectDLL/GlobalServerMgr.h | 67 + Jack/ObjectDLL/GlobalsInit.cpp | 9 + Jack/ObjectDLL/Group.cpp | 224 + Jack/ObjectDLL/Group.h | 43 + Jack/ObjectDLL/GunMount.cpp | 812 ++ Jack/ObjectDLL/GunMount.h | 108 + Jack/ObjectDLL/HHWeaponModel.cpp | 441 + Jack/ObjectDLL/HHWeaponModel.h | 56 + Jack/ObjectDLL/IHitBoxUser.h | 49 + Jack/ObjectDLL/IntelMgr.cpp | 376 + Jack/ObjectDLL/IntelMgr.h | 108 + Jack/ObjectDLL/Intelligence.cpp | 708 ++ Jack/ObjectDLL/Intelligence.h | 103 + Jack/ObjectDLL/InventoryButeMgr.cpp | 200 + Jack/ObjectDLL/InventoryButeMgr.h | 54 + Jack/ObjectDLL/JumpVolume.cpp | 292 + Jack/ObjectDLL/JumpVolume.h | 54 + Jack/ObjectDLL/Key.cpp | 52 + Jack/ObjectDLL/Key.h | 42 + Jack/ObjectDLL/KeyData.cpp | 162 + Jack/ObjectDLL/KeyData.h | 50 + Jack/ObjectDLL/KeyFramer.cpp | 2615 +++++ Jack/ObjectDLL/KeyFramer.h | 204 + Jack/ObjectDLL/KeyItem.cpp | 616 ++ Jack/ObjectDLL/KeyItem.h | 98 + Jack/ObjectDLL/KeyPad.cpp | 548 + Jack/ObjectDLL/KeyPad.h | 68 + Jack/ObjectDLL/LaserTrigger.cpp | 252 + Jack/ObjectDLL/LaserTrigger.h | 43 + Jack/ObjectDLL/LightGroup.cpp | 358 + Jack/ObjectDLL/LightGroup.h | 55 + Jack/ObjectDLL/Lightning.cpp | 427 + Jack/ObjectDLL/Lightning.h | 73 + Jack/ObjectDLL/LiteObjectMgr.cpp | 776 ++ Jack/ObjectDLL/LiteObjectMgr.h | 136 + Jack/ObjectDLL/Lock.cpp | 623 ++ Jack/ObjectDLL/Lock.h | 58 + Jack/ObjectDLL/Mine.cpp | 244 + Jack/ObjectDLL/Mine.h | 50 + Jack/ObjectDLL/ModItem.cpp | 462 + Jack/ObjectDLL/ModItem.h | 72 + Jack/ObjectDLL/MusicMgr.cpp | 334 + Jack/ObjectDLL/MusicMgr.h | 117 + Jack/ObjectDLL/NoPlayerTrigger.cpp | 172 + Jack/ObjectDLL/NoPlayerTrigger.h | 42 + Jack/ObjectDLL/NodeLine.cpp | 64 + Jack/ObjectDLL/NodeLine.h | 36 + Jack/ObjectDLL/Object.vcproj | 2657 +++++ Jack/ObjectDLL/Object.vcproj.vspscc | 10 + Jack/ObjectDLL/ObjectMsgs.h | 85 + Jack/ObjectDLL/ObjectRelationMgr.cpp | 513 + Jack/ObjectDLL/ObjectRelationMgr.h | 135 + Jack/ObjectDLL/ObjectRemover.cpp | 436 + Jack/ObjectDLL/ObjectRemover.h | 49 + Jack/ObjectDLL/ObjectTemplateMgr.cpp | 224 + Jack/ObjectDLL/ObjectTemplateMgr.h | 50 + Jack/ObjectDLL/ObjectiveSprite.cpp | 431 + Jack/ObjectDLL/ObjectiveSprite.h | 56 + Jack/ObjectDLL/PSets.h | 22 + Jack/ObjectDLL/ParticleSystem.cpp | 332 + Jack/ObjectDLL/ParticleSystem.h | 59 + Jack/ObjectDLL/PickupItem.cpp | 1064 ++ Jack/ObjectDLL/PickupItem.h | 127 + Jack/ObjectDLL/PlayerButes.h | 45 + Jack/ObjectDLL/PlayerLure.cpp | 372 + Jack/ObjectDLL/PlayerLure.h | 72 + Jack/ObjectDLL/PlayerObj.cpp | 9376 ++++++++++++++++ Jack/ObjectDLL/PlayerObj.h | 645 ++ Jack/ObjectDLL/PlayerTracker.cpp | 276 + Jack/ObjectDLL/PlayerTracker.h | 73 + Jack/ObjectDLL/PlayerTrigger.cpp | 221 + Jack/ObjectDLL/PlayerTrigger.h | 44 + Jack/ObjectDLL/PlayerVehicle.cpp | 867 ++ Jack/ObjectDLL/PlayerVehicle.h | 123 + Jack/ObjectDLL/Point.cpp | 23 + Jack/ObjectDLL/Point.h | 29 + Jack/ObjectDLL/PolyGrid.cpp | 801 ++ Jack/ObjectDLL/PolyGrid.h | 112 + Jack/ObjectDLL/PolyGridModifier.cpp | 138 + Jack/ObjectDLL/PolyGridModifier.h | 50 + Jack/ObjectDLL/PowerArmor.cpp | 818 ++ Jack/ObjectDLL/PowerArmor.h | 173 + Jack/ObjectDLL/Projectile.cpp | 2657 +++++ Jack/ObjectDLL/Projectile.h | 194 + Jack/ObjectDLL/ProjectileTypes.cpp | 2814 +++++ Jack/ObjectDLL/ProjectileTypes.h | 292 + Jack/ObjectDLL/Prop.cpp | 1877 ++++ Jack/ObjectDLL/Prop.h | 196 + Jack/ObjectDLL/PropType.cpp | 353 + Jack/ObjectDLL/PropType.h | 76 + Jack/ObjectDLL/PropTypeMgr.cpp | 549 + Jack/ObjectDLL/PropTypeMgr.h | 157 + Jack/ObjectDLL/RadarObject.cpp | 505 + Jack/ObjectDLL/RadarObject.h | 81 + Jack/ObjectDLL/RandomSpawner.cpp | 317 + Jack/ObjectDLL/RandomSpawner.h | 55 + Jack/ObjectDLL/RelationButeMgr.cpp | 1318 +++ Jack/ObjectDLL/RelationButeMgr.h | 452 + Jack/ObjectDLL/RelationChangeObserver.h | 132 + Jack/ObjectDLL/RelationMgr.cpp | 549 + Jack/ObjectDLL/RelationMgr.h | 129 + Jack/ObjectDLL/RotatingDoor.cpp | 70 + Jack/ObjectDLL/RotatingDoor.h | 40 + Jack/ObjectDLL/RotatingSwitch.cpp | 68 + Jack/ObjectDLL/RotatingSwitch.h | 36 + Jack/ObjectDLL/RotatingWorldModel.cpp | 58 + Jack/ObjectDLL/RotatingWorldModel.h | 30 + Jack/ObjectDLL/SFXFuncs.cpp | 169 + Jack/ObjectDLL/SFXFuncs.h | 159 + Jack/ObjectDLL/ScaleSprite.cpp | 544 + Jack/ObjectDLL/ScaleSprite.h | 74 + Jack/ObjectDLL/Scanner.cpp | 1038 ++ Jack/ObjectDLL/Scanner.h | 188 + Jack/ObjectDLL/ScatterVolume.cpp | 229 + Jack/ObjectDLL/ScatterVolume.h | 54 + Jack/ObjectDLL/ScmdServer.cpp | 1370 +++ Jack/ObjectDLL/ScmdServer.h | 69 + Jack/ObjectDLL/ScreenShake.cpp | 336 + Jack/ObjectDLL/ScreenShake.h | 48 + Jack/ObjectDLL/SearchLight.cpp | 958 ++ Jack/ObjectDLL/SearchLight.h | 149 + Jack/ObjectDLL/SearchProp.cpp | 181 + Jack/ObjectDLL/SearchProp.h | 69 + Jack/ObjectDLL/Searchable.cpp | 1002 ++ Jack/ObjectDLL/Searchable.h | 158 + Jack/ObjectDLL/SecurityCamera.cpp | 1355 +++ Jack/ObjectDLL/SecurityCamera.h | 136 + Jack/ObjectDLL/ServerAssetMgr.cpp | 140 + Jack/ObjectDLL/ServerAssetMgr.h | 29 + Jack/ObjectDLL/ServerButeMgr.cpp | 365 + Jack/ObjectDLL/ServerButeMgr.h | 74 + Jack/ObjectDLL/ServerMark.cpp | 185 + Jack/ObjectDLL/ServerMark.h | 37 + Jack/ObjectDLL/ServerMissionMgr.cpp | 1198 ++ Jack/ObjectDLL/ServerMissionMgr.h | 182 + Jack/ObjectDLL/ServerMissionSettings.h | 74 + Jack/ObjectDLL/ServerRes.h | 127 + Jack/ObjectDLL/ServerSaveLoadMgr.cpp | 1382 +++ Jack/ObjectDLL/ServerSaveLoadMgr.h | 174 + Jack/ObjectDLL/ServerSoundFX.cpp | 527 + Jack/ObjectDLL/ServerSoundFX.h | 76 + Jack/ObjectDLL/ServerSoundMgr.cpp | 203 + Jack/ObjectDLL/ServerSoundMgr.h | 63 + Jack/ObjectDLL/ServerSpecialFX.cpp | 713 ++ Jack/ObjectDLL/ServerSpecialFX.h | 112 + Jack/ObjectDLL/ServerTrackedNodeContext.cpp | 347 + Jack/ObjectDLL/ServerTrackedNodeContext.h | 71 + Jack/ObjectDLL/ServerTrackedNodeMgr.cpp | 46 + Jack/ObjectDLL/ServerTrackedNodeMgr.h | 18 + Jack/ObjectDLL/ServerUtilities.cpp | 1491 +++ Jack/ObjectDLL/ServerUtilities.h | 413 + Jack/ObjectDLL/SinglePlayerMissionMgr.cpp | 67 + Jack/ObjectDLL/SinglePlayerMissionMgr.h | 29 + Jack/ObjectDLL/Skills.cpp | 323 + Jack/ObjectDLL/Skills.h | 60 + Jack/ObjectDLL/SlidingDoor.cpp | 73 + Jack/ObjectDLL/SlidingDoor.h | 36 + Jack/ObjectDLL/SlidingSwitch.cpp | 68 + Jack/ObjectDLL/SlidingSwitch.h | 36 + Jack/ObjectDLL/SlidingWorldModel.cpp | 68 + Jack/ObjectDLL/SlidingWorldModel.h | 36 + Jack/ObjectDLL/SnowVolume.cpp | 281 + Jack/ObjectDLL/SnowVolume.h | 59 + Jack/ObjectDLL/SoundButeFX.cpp | 441 + Jack/ObjectDLL/SoundButeFX.h | 90 + Jack/ObjectDLL/Sparam.cpp | 130 + Jack/ObjectDLL/Sparam.h | 31 + Jack/ObjectDLL/Spawner.cpp | 620 ++ Jack/ObjectDLL/Spawner.h | 70 + Jack/ObjectDLL/Speaker.cpp | 186 + Jack/ObjectDLL/Speaker.h | 33 + Jack/ObjectDLL/SpinningWorldModel.cpp | 525 + Jack/ObjectDLL/SpinningWorldModel.h | 63 + Jack/ObjectDLL/Sprinkles.cpp | 201 + Jack/ObjectDLL/Sprinkles.h | 33 + Jack/ObjectDLL/StartupCommand.cpp | 317 + Jack/ObjectDLL/StartupCommand.h | 89 + Jack/ObjectDLL/Stdafx.cpp | 3 + Jack/ObjectDLL/Stdafx.h | 50 + Jack/ObjectDLL/Steam.cpp | 416 + Jack/ObjectDLL/Steam.h | 64 + Jack/ObjectDLL/Switch.cpp | 112 + Jack/ObjectDLL/Switch.h | 37 + Jack/ObjectDLL/TeamDeathMatchMissionMgr.cpp | 213 + Jack/ObjectDLL/TeamDeathMatchMissionMgr.h | 54 + Jack/ObjectDLL/TeleportPoint.cpp | 110 + Jack/ObjectDLL/TeleportPoint.h | 41 + Jack/ObjectDLL/TextureFX.cpp | 372 + Jack/ObjectDLL/TextureFX.h | 66 + Jack/ObjectDLL/TransitionAggregate.cpp | 237 + Jack/ObjectDLL/TransitionAggregate.h | 55 + Jack/ObjectDLL/TransitionArea.cpp | 316 + Jack/ObjectDLL/TransitionArea.h | 64 + Jack/ObjectDLL/TransitionMgr.cpp | 589 + Jack/ObjectDLL/TransitionMgr.h | 67 + Jack/ObjectDLL/Trigger.cpp | 1190 ++ Jack/ObjectDLL/Trigger.h | 148 + Jack/ObjectDLL/VolumeBrush.cpp | 759 ++ Jack/ObjectDLL/VolumeBrush.h | 123 + Jack/ObjectDLL/VolumeBrushTypes.cpp | 533 + Jack/ObjectDLL/VolumeBrushTypes.h | 232 + Jack/ObjectDLL/VolumeEffect.cpp | 109 + Jack/ObjectDLL/VolumeEffect.h | 47 + Jack/ObjectDLL/Weapon.cpp | 824 ++ Jack/ObjectDLL/Weapon.h | 176 + Jack/ObjectDLL/WeaponFireInfo.h | 103 + Jack/ObjectDLL/WeaponItems.cpp | 528 + Jack/ObjectDLL/WeaponItems.h | 81 + Jack/ObjectDLL/Weapons.cpp | 1317 +++ Jack/ObjectDLL/Weapons.h | 179 + Jack/ObjectDLL/WorldModel.cpp | 1490 +++ Jack/ObjectDLL/WorldModel.h | 165 + Jack/ObjectDLL/WorldModelDebris.cpp | 266 + Jack/ObjectDLL/WorldModelDebris.h | 53 + Jack/ObjectDLL/WorldProperties.cpp | 1071 ++ Jack/ObjectDLL/WorldProperties.h | 79 + Jack/ObjectDLL/bison.hairy | 668 ++ Jack/ObjectDLL/bison.simple | 1363 +++ .../ServerApp/ScmdConsoleDriver_ServerApp.cpp | 78 + Jack/ServerApp/ScmdConsoleDriver_ServerApp.h | 43 + Jack/ServerApp/SelectConfigDlg.cpp | 114 + Jack/ServerApp/SelectConfigDlg.h | 58 + Jack/ServerApp/ServerApp.cpp | 79 + Jack/ServerApp/ServerApp.h | 52 + Jack/ServerApp/ServerApp.vcproj | 1033 ++ Jack/ServerApp/ServerApp.vcproj.vspscc | 10 + Jack/ServerApp/ServerDlg.cpp | 1847 ++++ Jack/ServerApp/ServerDlg.h | 273 + Jack/ServerApp/Splash.cpp | 141 + Jack/ServerApp/Splash.h | 55 + Jack/ServerApp/StdAfx.cpp | 6 + Jack/ServerApp/StdAfx.h | 30 + Jack/ServerApp/res/Lang/DE/ServerApp.rc | 307 + Jack/ServerApp/res/Lang/DE/splash.bmp | Bin 0 -> 921656 bytes Jack/ServerApp/res/Lang/EN/ServerApp.rc | 307 + Jack/ServerApp/res/Lang/EN/splash.bmp | Bin 0 -> 921656 bytes Jack/ServerApp/res/Lang/EN/splash.psd | Bin 0 -> 2208432 bytes Jack/ServerApp/res/Lang/ES/ServerApp.rc | 309 + Jack/ServerApp/res/Lang/ES/splash.bmp | Bin 0 -> 921656 bytes Jack/ServerApp/res/Lang/FR/ServerApp.rc | 309 + Jack/ServerApp/res/Lang/FR/splash.bmp | Bin 0 -> 921656 bytes Jack/ServerApp/res/Lang/IT/ServerApp.rc | 309 + Jack/ServerApp/res/Lang/IT/splash.bmp | Bin 0 -> 921656 bytes Jack/ServerApp/res/ServerApp.ico | Bin 0 -> 7406 bytes Jack/ServerApp/res/ServerApp.rc2 | 13 + Jack/ServerApp/res/selected.ico | Bin 0 -> 318 bytes Jack/ServerApp/resource.h | 75 + Jack/ServerRes/TO2/MAIN.CPP | 7 + Jack/ServerRes/TO2/ServerRes.h | 127 + Jack/ServerRes/TO2/ServerRes.rc | 63 + Jack/ServerRes/TO2/ServerRes.vcproj | 236 + Jack/ServerRes/TO2/ServerRes.vcproj.vspscc | 10 + Jack/Shared/ActivateTypeMgr.cpp | 794 ++ Jack/Shared/ActivateTypeMgr.h | 169 + Jack/Shared/ActivationData.h | 63 + Jack/Shared/Animator.cpp | 404 + Jack/Shared/Animator.h | 110 + Jack/Shared/AssertMgr.cpp | 157 + Jack/Shared/AssertMgr.h | 31 + Jack/Shared/AttachButeMgr.cpp | 481 + Jack/Shared/AttachButeMgr.h | 73 + Jack/Shared/AutoMessage.h | 119 + Jack/Shared/BankedList.h | 148 + Jack/Shared/BankedList_impl.h | 770 ++ Jack/Shared/BaseFx.h | 412 + Jack/Shared/BuildDefines.h | 62 + Jack/Shared/ButeListReader.cpp | 183 + Jack/Shared/ButeListReader.h | 47 + Jack/Shared/CRC32.cpp | 151 + Jack/Shared/CRC32.h | 15 + Jack/Shared/CharacterAlignment.cpp | 792 ++ Jack/Shared/CharacterAlignment.h | 266 + Jack/Shared/ChassisButeMgr.cpp | 256 + Jack/Shared/ChassisButeMgr.h | 89 + Jack/Shared/CheatDefs.h | 62 + Jack/Shared/ClientServerShared.cpp | 257 + Jack/Shared/ClientServerShared.h | 437 + Jack/Shared/CommandIDs.h | 109 + Jack/Shared/CommonUtilities.cpp | 430 + Jack/Shared/CommonUtilities.h | 259 + Jack/Shared/ContainerCodes.h | 234 + Jack/Shared/Creator.h | 30 + Jack/Shared/DamageTypes.cpp | 353 + Jack/Shared/DamageTypes.h | 222 + Jack/Shared/DamageTypesEnum.h | 74 + Jack/Shared/DebrisMgr.cpp | 522 + Jack/Shared/DebrisMgr.h | 147 + Jack/Shared/DebugLine.cpp | 39 + Jack/Shared/DebugLine.h | 67 + Jack/Shared/DebugMgr.cpp | 711 ++ Jack/Shared/DebugMgr.h | 70 + Jack/Shared/DebugNew.cpp | 123 + Jack/Shared/DebugNew.h | 44 + Jack/Shared/DebugNew_impl.h | 102 + Jack/Shared/FXButeMgr.cpp | 4704 ++++++++ Jack/Shared/FXButeMgr.h | 849 ++ Jack/Shared/FXProp.h | 176 + Jack/Shared/FXStructs.cpp | 589 + Jack/Shared/FXStructs.h | 159 + Jack/Shared/Factory.h | 299 + Jack/Shared/FastHeap.h | 140 + Jack/Shared/FastList.h | 589 + Jack/Shared/FastStack.h | 87 + Jack/Shared/FxDefs.h | 22 + Jack/Shared/FxFlags.h | 19 + Jack/Shared/GadgetTargetTypes.h | 90 + Jack/Shared/GameAlloc.cpp | 21 + Jack/Shared/GameButeMgr.cpp | 225 + Jack/Shared/GameButeMgr.h | 61 + Jack/Shared/GibTypes.h | 27 + Jack/Shared/GlobalMgr.cpp | 165 + Jack/Shared/GlobalMgr.h | 52 + Jack/Shared/Globals.h | 74 + Jack/Shared/HierarchicalButeMgr.h | 354 + Jack/Shared/IDList.h | 113 + Jack/Shared/ImpactType.h | 21 + Jack/Shared/KeyMgr.cpp | 429 + Jack/Shared/KeyMgr.h | 128 + Jack/Shared/LTPoly.h | 28 + Jack/Shared/Lang/DE/ResShared.rc | 124 + Jack/Shared/Lang/EN/ResShared.rc | 136 + Jack/Shared/Lang/ES/ResShared.rc | 124 + Jack/Shared/Lang/FR/ResShared.rc | 123 + Jack/Shared/Lang/IT/ResShared.rc | 124 + Jack/Shared/MissionButeMgr.cpp | 535 + Jack/Shared/MissionButeMgr.h | 148 + Jack/Shared/ModelButeMgr.cpp | 2030 ++++ Jack/Shared/ModelButeMgr.h | 631 ++ Jack/Shared/MsgIDs.h | 357 + Jack/Shared/NetDefs.cpp | 67 + Jack/Shared/NetDefs.h | 95 + Jack/Shared/ParsedMsg.cpp | 85 + Jack/Shared/ParsedMsg.h | 69 + Jack/Shared/PlayerShared.h | 31 + Jack/Shared/ProfileUtils.cpp | 785 ++ Jack/Shared/ProfileUtils.h | 285 + Jack/Shared/RadarTypeMgr.cpp | 354 + Jack/Shared/RadarTypeMgr.h | 116 + Jack/Shared/RelationTraitTypeEnums.h | 43 + Jack/Shared/ResShared.h | 63 + Jack/Shared/SFXMsgIds.h | 222 + Jack/Shared/SaveLoadMgr.cpp | 514 + Jack/Shared/SaveLoadMgr.h | 240 + Jack/Shared/ScmdConsole.cpp | 1537 +++ Jack/Shared/ScmdConsole.h | 100 + Jack/Shared/ScmdShared.h | 48 + Jack/Shared/SearchItemMgr.cpp | 560 + Jack/Shared/SearchItemMgr.h | 170 + Jack/Shared/SharedBaseFXStructs.h | 45 + Jack/Shared/SharedFXStructs.cpp | 826 ++ Jack/Shared/SharedFXStructs.h | 491 + Jack/Shared/SharedMission.cpp | 117 + Jack/Shared/SharedMission.h | 47 + Jack/Shared/SharedMovement.cpp | 48 + Jack/Shared/SharedMovement.h | 119 + Jack/Shared/SharedScoring.cpp | 140 + Jack/Shared/SharedScoring.h | 46 + Jack/Shared/SkillsButeMgr.cpp | 320 + Jack/Shared/SkillsButeMgr.h | 221 + Jack/Shared/SoundButeMgr.cpp | 444 + Jack/Shared/SoundButeMgr.h | 196 + Jack/Shared/SoundFilterMgr.cpp | 346 + Jack/Shared/SoundFilterMgr.h | 115 + Jack/Shared/SoundMgr.cpp | 475 + Jack/Shared/SoundMgr.h | 52 + Jack/Shared/SoundTypes.h | 35 + Jack/Shared/StandardCreator.h | 41 + Jack/Shared/SurfaceDefs.h | 39 + Jack/Shared/SurfaceFunctions.cpp | 393 + Jack/Shared/SurfaceFunctions.h | 152 + Jack/Shared/SurfaceMgr.cpp | 723 ++ Jack/Shared/SurfaceMgr.h | 236 + Jack/Shared/TO2MissionButeMgr.cpp | 77 + Jack/Shared/TO2MissionButeMgr.h | 26 + Jack/Shared/TeamMgr.cpp | 563 + Jack/Shared/TeamMgr.h | 134 + Jack/Shared/TemplateList.cpp | 5 + Jack/Shared/TemplateList.h | 307 + Jack/Shared/Timer.h | 137 + Jack/Shared/TrackedNode.cpp | 44 + Jack/Shared/TrackedNode.h | 125 + Jack/Shared/TrackedNodeContext.cpp | 529 + Jack/Shared/TrackedNodeContext.h | 106 + Jack/Shared/TrackedNodeControlFn.cpp | 743 ++ Jack/Shared/TrackedNodeMgr.cpp | 672 ++ Jack/Shared/TrackedNodeMgr.h | 248 + Jack/Shared/TriggerTypeMgr.cpp | 360 + Jack/Shared/TriggerTypeMgr.h | 116 + Jack/Shared/UberAssert.cpp | 95 + Jack/Shared/UberAssert.h | 82 + Jack/Shared/VehicleButeMgr.cpp | 443 + Jack/Shared/VehicleButeMgr.h | 160 + Jack/Shared/VersionMgr.cpp | 189 + Jack/Shared/VersionMgr.h | 91 + Jack/Shared/WaveFn.cpp | 95 + Jack/Shared/WaveFn.h | 46 + Jack/Shared/WeaponFXTypes.h | 54 + Jack/Shared/WeaponMgr.cpp | 3253 ++++++ Jack/Shared/WeaponMgr.h | 884 ++ Jack/Shared/WinUtil.cpp | 268 + Jack/Shared/WinUtil.h | 39 + Jack/Shared/linklist.h | 551 + Jack/Shared/stacktrace.cpp | 301 + Jack/Shared/stacktrace.h | 696 ++ Jack/Shared/unistd.h | 0 1772 files changed, 529022 insertions(+) create mode 100644 Jack/ClientFxDLL/BaseFx.cpp create mode 100644 Jack/ClientFxDLL/ClientFxDLL.vcproj create mode 100644 Jack/ClientFxDLL/ClientFxDLL.vcproj.vspscc create mode 100644 Jack/ClientFxDLL/CreateFX.cpp create mode 100644 Jack/ClientFxDLL/CreateFX.h create mode 100644 Jack/ClientFxDLL/FlareSpriteFX.cpp create mode 100644 Jack/ClientFxDLL/FlareSpriteFX.h create mode 100644 Jack/ClientFxDLL/LTBbouncychunkfx.cpp create mode 100644 Jack/ClientFxDLL/LTBbouncychunkfx.h create mode 100644 Jack/ClientFxDLL/ParticleSystemFX.cpp create mode 100644 Jack/ClientFxDLL/ParticleSystemFX.h create mode 100644 Jack/ClientFxDLL/bouncychunkfx.cpp create mode 100644 Jack/ClientFxDLL/bouncychunkfx.h create mode 100644 Jack/ClientFxDLL/camjitterfx.cpp create mode 100644 Jack/ClientFxDLL/camjitterfx.h create mode 100644 Jack/ClientFxDLL/camwobblefx.cpp create mode 100644 Jack/ClientFxDLL/camwobblefx.h create mode 100644 Jack/ClientFxDLL/clientfx.cpp create mode 100644 Jack/ClientFxDLL/clientfx.h create mode 100644 Jack/ClientFxDLL/cycletimer.cpp create mode 100644 Jack/ClientFxDLL/cycletimer.h create mode 100644 Jack/ClientFxDLL/dynalightfx.cpp create mode 100644 Jack/ClientFxDLL/dynalightfx.h create mode 100644 Jack/ClientFxDLL/fallingstufffx.cpp create mode 100644 Jack/ClientFxDLL/fallingstufffx.h create mode 100644 Jack/ClientFxDLL/lightningfx.cpp create mode 100644 Jack/ClientFxDLL/lightningfx.h create mode 100644 Jack/ClientFxDLL/ltbmodelfx.cpp create mode 100644 Jack/ClientFxDLL/ltbmodelfx.h create mode 100644 Jack/ClientFxDLL/memarray.h create mode 100644 Jack/ClientFxDLL/nullfx.cpp create mode 100644 Jack/ClientFxDLL/nullfx.h create mode 100644 Jack/ClientFxDLL/playrandomsoundfx.cpp create mode 100644 Jack/ClientFxDLL/playrandomsoundfx.h create mode 100644 Jack/ClientFxDLL/playsoundfx.cpp create mode 100644 Jack/ClientFxDLL/playsoundfx.h create mode 100644 Jack/ClientFxDLL/polyfanfx.cpp create mode 100644 Jack/ClientFxDLL/polyfanfx.h create mode 100644 Jack/ClientFxDLL/polytubefx.cpp create mode 100644 Jack/ClientFxDLL/polytubefx.h create mode 100644 Jack/ClientFxDLL/resource.h create mode 100644 Jack/ClientFxDLL/screentrail.cpp create mode 100644 Jack/ClientFxDLL/screentrail.h create mode 100644 Jack/ClientFxDLL/spritefx.cpp create mode 100644 Jack/ClientFxDLL/spritefx.h create mode 100644 Jack/ClientFxDLL/spritesystemfx.cpp create mode 100644 Jack/ClientFxDLL/spritesystemfx.h create mode 100644 Jack/ClientFxDLL/stdafx.cpp create mode 100644 Jack/ClientFxDLL/stdafx.h create mode 100644 Jack/ClientFxDLL/swaplist.h create mode 100644 Jack/ClientRes/ClientRes.h create mode 100644 Jack/ClientRes/ClientRes.vcproj create mode 100644 Jack/ClientRes/ClientRes.vcproj.vspscc create mode 100644 Jack/ClientRes/Lang/DE/ClientRes.rc create mode 100644 Jack/ClientRes/Lang/DE/credits.txt create mode 100644 Jack/ClientRes/Lang/DE/intro.txt create mode 100644 Jack/ClientRes/Lang/EN/ClientRes.rc create mode 100644 Jack/ClientRes/Lang/EN/credits.txt create mode 100644 Jack/ClientRes/Lang/EN/intro.txt create mode 100644 Jack/ClientRes/Lang/ES/ClientRes.rc create mode 100644 Jack/ClientRes/Lang/ES/credits.txt create mode 100644 Jack/ClientRes/Lang/ES/intro.txt create mode 100644 Jack/ClientRes/Lang/FR/ClientRes.rc create mode 100644 Jack/ClientRes/Lang/FR/credits.txt create mode 100644 Jack/ClientRes/Lang/FR/intro.txt create mode 100644 Jack/ClientRes/Lang/IT/ClientRes.rc create mode 100644 Jack/ClientRes/Lang/IT/credits.txt create mode 100644 Jack/ClientRes/Lang/IT/intro.txt create mode 100644 Jack/ClientRes/arrow.cur create mode 100644 Jack/ClientRes/main.cpp create mode 100644 Jack/ClientRes/samplecredits.txt create mode 100644 Jack/ClientShellDLL/ActivateObjectFX.cpp create mode 100644 Jack/ClientShellDLL/ActivateObjectFX.h create mode 100644 Jack/ClientShellDLL/AimMagnetFX.cpp create mode 100644 Jack/ClientShellDLL/AimMagnetFX.h create mode 100644 Jack/ClientShellDLL/AutoTargetMgr.cpp create mode 100644 Jack/ClientShellDLL/AutoTargetMgr.h create mode 100644 Jack/ClientShellDLL/BaseLineSystemFX.cpp create mode 100644 Jack/ClientShellDLL/BaseLineSystemFX.h create mode 100644 Jack/ClientShellDLL/BaseMenu.cpp create mode 100644 Jack/ClientShellDLL/BaseMenu.h create mode 100644 Jack/ClientShellDLL/BaseParticleSystemFX.cpp create mode 100644 Jack/ClientShellDLL/BaseParticleSystemFX.h create mode 100644 Jack/ClientShellDLL/BasePolyDrawFX.cpp create mode 100644 Jack/ClientShellDLL/BasePolyDrawFX.h create mode 100644 Jack/ClientShellDLL/BaseScaleFX.cpp create mode 100644 Jack/ClientShellDLL/BaseScaleFX.h create mode 100644 Jack/ClientShellDLL/BaseScreen.cpp create mode 100644 Jack/ClientShellDLL/BaseScreen.h create mode 100644 Jack/ClientShellDLL/BeamFX.cpp create mode 100644 Jack/ClientShellDLL/BeamFX.h create mode 100644 Jack/ClientShellDLL/BodyFX.cpp create mode 100644 Jack/ClientShellDLL/BodyFX.h create mode 100644 Jack/ClientShellDLL/BulletTrailFX.cpp create mode 100644 Jack/ClientShellDLL/BulletTrailFX.h create mode 100644 Jack/ClientShellDLL/CMoveMgr.cpp create mode 100644 Jack/ClientShellDLL/CMoveMgr.h create mode 100644 Jack/ClientShellDLL/CameraFX.h create mode 100644 Jack/ClientShellDLL/CameraOffsetMgr.cpp create mode 100644 Jack/ClientShellDLL/CameraOffsetMgr.h create mode 100644 Jack/ClientShellDLL/ChainedFX.cpp create mode 100644 Jack/ClientShellDLL/ChainedFX.h create mode 100644 Jack/ClientShellDLL/CharacterFX.cpp create mode 100644 Jack/ClientShellDLL/CharacterFX.h create mode 100644 Jack/ClientShellDLL/ChassisFX.cpp create mode 100644 Jack/ClientShellDLL/ChassisFX.h create mode 100644 Jack/ClientShellDLL/ChassisPieceFX.cpp create mode 100644 Jack/ClientShellDLL/ChassisPieceFX.h create mode 100644 Jack/ClientShellDLL/CheatMgr.cpp create mode 100644 Jack/ClientShellDLL/CheatMgr.h create mode 100644 Jack/ClientShellDLL/ClientButeMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientButeMgr.h create mode 100644 Jack/ClientShellDLL/ClientFXDB.cpp create mode 100644 Jack/ClientShellDLL/ClientFXDB.h create mode 100644 Jack/ClientShellDLL/ClientFXMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientFXMgr.h create mode 100644 Jack/ClientShellDLL/ClientInfoMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientInfoMgr.h create mode 100644 Jack/ClientShellDLL/ClientMultiplayerMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientMultiplayerMgr.h create mode 100644 Jack/ClientShellDLL/ClientSaveLoadMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientSaveLoadMgr.h create mode 100644 Jack/ClientShellDLL/ClientShellDLL.vcproj create mode 100644 Jack/ClientShellDLL/ClientShellDLL.vcproj.vspscc create mode 100644 Jack/ClientShellDLL/ClientSoundMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientSoundMgr.h create mode 100644 Jack/ClientShellDLL/ClientTrackedNodeContext.cpp create mode 100644 Jack/ClientShellDLL/ClientTrackedNodeContext.h create mode 100644 Jack/ClientShellDLL/ClientTrackedNodeMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientTrackedNodeMgr.h create mode 100644 Jack/ClientShellDLL/ClientUtilities.cpp create mode 100644 Jack/ClientShellDLL/ClientUtilities.h create mode 100644 Jack/ClientShellDLL/ClientWeapon.cpp create mode 100644 Jack/ClientShellDLL/ClientWeapon.h create mode 100644 Jack/ClientShellDLL/ClientWeaponAllocator.h create mode 100644 Jack/ClientShellDLL/ClientWeaponBase.h create mode 100644 Jack/ClientShellDLL/ClientWeaponMgr.cpp create mode 100644 Jack/ClientShellDLL/ClientWeaponMgr.h create mode 100644 Jack/ClientShellDLL/ClientWeaponNone.h create mode 100644 Jack/ClientShellDLL/ClientWeaponUtils.cpp create mode 100644 Jack/ClientShellDLL/ClientWeaponUtils.h create mode 100644 Jack/ClientShellDLL/Credits.cpp create mode 100644 Jack/ClientShellDLL/Credits.h create mode 100644 Jack/ClientShellDLL/CursorMgr.cpp create mode 100644 Jack/ClientShellDLL/CursorMgr.h create mode 100644 Jack/ClientShellDLL/DamageFXMgr.cpp create mode 100644 Jack/ClientShellDLL/DamageFXMgr.h create mode 100644 Jack/ClientShellDLL/DeathFX.cpp create mode 100644 Jack/ClientShellDLL/DeathFX.h create mode 100644 Jack/ClientShellDLL/DebrisFX.cpp create mode 100644 Jack/ClientShellDLL/DebrisFX.h create mode 100644 Jack/ClientShellDLL/DebugLineFX.cpp create mode 100644 Jack/ClientShellDLL/DebugLineFX.h create mode 100644 Jack/ClientShellDLL/DynamicLightFX.cpp create mode 100644 Jack/ClientShellDLL/DynamicLightFX.h create mode 100644 Jack/ClientShellDLL/DynamicOccluderVolumeFX.cpp create mode 100644 Jack/ClientShellDLL/DynamicOccluderVolumeFX.h create mode 100644 Jack/ClientShellDLL/ExplosionFX.cpp create mode 100644 Jack/ClientShellDLL/ExplosionFX.h create mode 100644 Jack/ClientShellDLL/FastList.h create mode 100644 Jack/ClientShellDLL/FireFX.cpp create mode 100644 Jack/ClientShellDLL/FireFX.h create mode 100644 Jack/ClientShellDLL/FlashLight.cpp create mode 100644 Jack/ClientShellDLL/FlashLight.h create mode 100644 Jack/ClientShellDLL/FullScreenTint.cpp create mode 100644 Jack/ClientShellDLL/FullScreenTint.h create mode 100644 Jack/ClientShellDLL/GadgetDisabler.cpp create mode 100644 Jack/ClientShellDLL/GadgetDisabler.h create mode 100644 Jack/ClientShellDLL/GadgetTargetFX.cpp create mode 100644 Jack/ClientShellDLL/GadgetTargetFX.h create mode 100644 Jack/ClientShellDLL/GameButes.h create mode 100644 Jack/ClientShellDLL/GameClientShell.cpp create mode 100644 Jack/ClientShellDLL/GameClientShell.h create mode 100644 Jack/ClientShellDLL/GameSettings.cpp create mode 100644 Jack/ClientShellDLL/GameSettings.h create mode 100644 Jack/ClientShellDLL/GibFX.cpp create mode 100644 Jack/ClientShellDLL/GibFX.h create mode 100644 Jack/ClientShellDLL/GlobalClientMgr.cpp create mode 100644 Jack/ClientShellDLL/GlobalClientMgr.h create mode 100644 Jack/ClientShellDLL/GlobalsInit.cpp create mode 100644 Jack/ClientShellDLL/HUDAir.cpp create mode 100644 Jack/ClientShellDLL/HUDAir.h create mode 100644 Jack/ClientShellDLL/HUDAmmo.cpp create mode 100644 Jack/ClientShellDLL/HUDAmmo.h create mode 100644 Jack/ClientShellDLL/HUDBar.cpp create mode 100644 Jack/ClientShellDLL/HUDBar.h create mode 100644 Jack/ClientShellDLL/HUDBombTarget.cpp create mode 100644 Jack/ClientShellDLL/HUDBombTarget.h create mode 100644 Jack/ClientShellDLL/HUDCarrying.cpp create mode 100644 Jack/ClientShellDLL/HUDCarrying.h create mode 100644 Jack/ClientShellDLL/HUDChatInput.cpp create mode 100644 Jack/ClientShellDLL/HUDChatInput.h create mode 100644 Jack/ClientShellDLL/HUDChooser.cpp create mode 100644 Jack/ClientShellDLL/HUDChooser.h create mode 100644 Jack/ClientShellDLL/HUDCompass.cpp create mode 100644 Jack/ClientShellDLL/HUDCompass.h create mode 100644 Jack/ClientShellDLL/HUDCrosshair.cpp create mode 100644 Jack/ClientShellDLL/HUDCrosshair.h create mode 100644 Jack/ClientShellDLL/HUDDamage.cpp create mode 100644 Jack/ClientShellDLL/HUDDamage.h create mode 100644 Jack/ClientShellDLL/HUDDamageDir.cpp create mode 100644 Jack/ClientShellDLL/HUDDamageDir.h create mode 100644 Jack/ClientShellDLL/HUDDecision.cpp create mode 100644 Jack/ClientShellDLL/HUDDecision.h create mode 100644 Jack/ClientShellDLL/HUDDisplayMeter.cpp create mode 100644 Jack/ClientShellDLL/HUDDisplayMeter.h create mode 100644 Jack/ClientShellDLL/HUDDistance.cpp create mode 100644 Jack/ClientShellDLL/HUDDistance.h create mode 100644 Jack/ClientShellDLL/HUDDoomsday.cpp create mode 100644 Jack/ClientShellDLL/HUDDoomsday.h create mode 100644 Jack/ClientShellDLL/HUDHealth.cpp create mode 100644 Jack/ClientShellDLL/HUDHealth.h create mode 100644 Jack/ClientShellDLL/HUDHiding.cpp create mode 100644 Jack/ClientShellDLL/HUDHiding.h create mode 100644 Jack/ClientShellDLL/HUDHidingBar.cpp create mode 100644 Jack/ClientShellDLL/HUDHidingBar.h create mode 100644 Jack/ClientShellDLL/HUDItem.h create mode 100644 Jack/ClientShellDLL/HUDMessage.cpp create mode 100644 Jack/ClientShellDLL/HUDMessage.h create mode 100644 Jack/ClientShellDLL/HUDMessageQueue.cpp create mode 100644 Jack/ClientShellDLL/HUDMessageQueue.h create mode 100644 Jack/ClientShellDLL/HUDMeter.cpp create mode 100644 Jack/ClientShellDLL/HUDMeter.h create mode 100644 Jack/ClientShellDLL/HUDMgr.cpp create mode 100644 Jack/ClientShellDLL/HUDMgr.h create mode 100644 Jack/ClientShellDLL/HUDMissionText.cpp create mode 100644 Jack/ClientShellDLL/HUDMissionText.h create mode 100644 Jack/ClientShellDLL/HUDObjectives.cpp create mode 100644 Jack/ClientShellDLL/HUDObjectives.h create mode 100644 Jack/ClientShellDLL/HUDPaused.cpp create mode 100644 Jack/ClientShellDLL/HUDPaused.h create mode 100644 Jack/ClientShellDLL/HUDPopup.cpp create mode 100644 Jack/ClientShellDLL/HUDPopup.h create mode 100644 Jack/ClientShellDLL/HUDProgressBar.cpp create mode 100644 Jack/ClientShellDLL/HUDProgressBar.h create mode 100644 Jack/ClientShellDLL/HUDRadar.cpp create mode 100644 Jack/ClientShellDLL/HUDRadar.h create mode 100644 Jack/ClientShellDLL/HUDRadio.cpp create mode 100644 Jack/ClientShellDLL/HUDRadio.h create mode 100644 Jack/ClientShellDLL/HUDRespawn.cpp create mode 100644 Jack/ClientShellDLL/HUDRespawn.h create mode 100644 Jack/ClientShellDLL/HUDScores.cpp create mode 100644 Jack/ClientShellDLL/HUDScores.h create mode 100644 Jack/ClientShellDLL/HUDSubtitles.cpp create mode 100644 Jack/ClientShellDLL/HUDSubtitles.h create mode 100644 Jack/ClientShellDLL/HUDTransmission.cpp create mode 100644 Jack/ClientShellDLL/HUDTransmission.h create mode 100644 Jack/ClientShellDLL/HUDWeaponHeat.cpp create mode 100644 Jack/ClientShellDLL/HUDWeaponHeat.h create mode 100644 Jack/ClientShellDLL/HeadBobMgr.cpp create mode 100644 Jack/ClientShellDLL/HeadBobMgr.h create mode 100644 Jack/ClientShellDLL/HitBox.cpp create mode 100644 Jack/ClientShellDLL/HitBox.h create mode 100644 Jack/ClientShellDLL/IntelItemList.cpp create mode 100644 Jack/ClientShellDLL/IntelItemList.h create mode 100644 Jack/ClientShellDLL/InterfaceMgr.cpp create mode 100644 Jack/ClientShellDLL/InterfaceMgr.h create mode 100644 Jack/ClientShellDLL/InterfaceResMgr.cpp create mode 100644 Jack/ClientShellDLL/InterfaceResMgr.h create mode 100644 Jack/ClientShellDLL/InterfaceSurfMgr.cpp create mode 100644 Jack/ClientShellDLL/InterfaceSurfMgr.h create mode 100644 Jack/ClientShellDLL/InterfaceTimer.cpp create mode 100644 Jack/ClientShellDLL/InterfaceTimer.h create mode 100644 Jack/ClientShellDLL/IpMgr.cpp create mode 100644 Jack/ClientShellDLL/IpMgr.h create mode 100644 Jack/ClientShellDLL/JumpVolumeFX.cpp create mode 100644 Jack/ClientShellDLL/JumpVolumeFX.h create mode 100644 Jack/ClientShellDLL/LaserBeam.cpp create mode 100644 Jack/ClientShellDLL/LaserBeam.h create mode 100644 Jack/ClientShellDLL/LaserTriggerFX.cpp create mode 100644 Jack/ClientShellDLL/LaserTriggerFX.h create mode 100644 Jack/ClientShellDLL/LayoutMgr.cpp create mode 100644 Jack/ClientShellDLL/LayoutMgr.h create mode 100644 Jack/ClientShellDLL/LeanMgr.cpp create mode 100644 Jack/ClientShellDLL/LeanMgr.h create mode 100644 Jack/ClientShellDLL/LensFlareFX.cpp create mode 100644 Jack/ClientShellDLL/LensFlareFX.h create mode 100644 Jack/ClientShellDLL/LightFX.cpp create mode 100644 Jack/ClientShellDLL/LightFX.h create mode 100644 Jack/ClientShellDLL/LightGroupFX.cpp create mode 100644 Jack/ClientShellDLL/LightGroupFX.h create mode 100644 Jack/ClientShellDLL/LightScaleMgr.cpp create mode 100644 Jack/ClientShellDLL/LightScaleMgr.h create mode 100644 Jack/ClientShellDLL/LightningFX.cpp create mode 100644 Jack/ClientShellDLL/LightningFX.h create mode 100644 Jack/ClientShellDLL/LineSystemFX.cpp create mode 100644 Jack/ClientShellDLL/LineSystemFX.h create mode 100644 Jack/ClientShellDLL/LoadingScreen.cpp create mode 100644 Jack/ClientShellDLL/LoadingScreen.h create mode 100644 Jack/ClientShellDLL/MarkSFX.cpp create mode 100644 Jack/ClientShellDLL/MarkSFX.h create mode 100644 Jack/ClientShellDLL/MenuEnum.h create mode 100644 Jack/ClientShellDLL/MenuIntel.cpp create mode 100644 Jack/ClientShellDLL/MenuIntel.h create mode 100644 Jack/ClientShellDLL/MenuInventory.cpp create mode 100644 Jack/ClientShellDLL/MenuInventory.h create mode 100644 Jack/ClientShellDLL/MenuKeys.cpp create mode 100644 Jack/ClientShellDLL/MenuKeys.h create mode 100644 Jack/ClientShellDLL/MenuMgr.cpp create mode 100644 Jack/ClientShellDLL/MenuMgr.h create mode 100644 Jack/ClientShellDLL/MenuMission.cpp create mode 100644 Jack/ClientShellDLL/MenuMission.h create mode 100644 Jack/ClientShellDLL/MenuSystem.cpp create mode 100644 Jack/ClientShellDLL/MenuSystem.h create mode 100644 Jack/ClientShellDLL/MessageBox.cpp create mode 100644 Jack/ClientShellDLL/MessageBox.h create mode 100644 Jack/ClientShellDLL/MineFX.cpp create mode 100644 Jack/ClientShellDLL/MineFX.h create mode 100644 Jack/ClientShellDLL/MissionMgr.cpp create mode 100644 Jack/ClientShellDLL/MissionMgr.h create mode 100644 Jack/ClientShellDLL/Music.cpp create mode 100644 Jack/ClientShellDLL/Music.h create mode 100644 Jack/ClientShellDLL/MuzzleFlashFX.cpp create mode 100644 Jack/ClientShellDLL/MuzzleFlashFX.h create mode 100644 Jack/ClientShellDLL/MuzzleFlashParticleFX.cpp create mode 100644 Jack/ClientShellDLL/MuzzleFlashParticleFX.h create mode 100644 Jack/ClientShellDLL/NodeController.cpp create mode 100644 Jack/ClientShellDLL/NodeController.h create mode 100644 Jack/ClientShellDLL/NodeLinesFX.cpp create mode 100644 Jack/ClientShellDLL/NodeLinesFX.h create mode 100644 Jack/ClientShellDLL/ObjSpriteFX.cpp create mode 100644 Jack/ClientShellDLL/ObjSpriteFX.h create mode 100644 Jack/ClientShellDLL/ObjectiveControl.cpp create mode 100644 Jack/ClientShellDLL/ObjectiveControl.h create mode 100644 Jack/ClientShellDLL/Overlays.h create mode 100644 Jack/ClientShellDLL/PVFXMgr.cpp create mode 100644 Jack/ClientShellDLL/PVFXMgr.h create mode 100644 Jack/ClientShellDLL/ParticleExplosionFX.cpp create mode 100644 Jack/ClientShellDLL/ParticleExplosionFX.h create mode 100644 Jack/ClientShellDLL/ParticleShowerFX.cpp create mode 100644 Jack/ClientShellDLL/ParticleShowerFX.h create mode 100644 Jack/ClientShellDLL/ParticleSystemFX.cpp create mode 100644 Jack/ClientShellDLL/ParticleSystemFX.h create mode 100644 Jack/ClientShellDLL/ParticleTrailFX.cpp create mode 100644 Jack/ClientShellDLL/ParticleTrailFX.h create mode 100644 Jack/ClientShellDLL/ParticleTrailSegmentFX.cpp create mode 100644 Jack/ClientShellDLL/ParticleTrailSegmentFX.h create mode 100644 Jack/ClientShellDLL/PerformanceEnum.h create mode 100644 Jack/ClientShellDLL/PerformanceMgr.cpp create mode 100644 Jack/ClientShellDLL/PerformanceMgr.h create mode 100644 Jack/ClientShellDLL/PerformanceTest.cpp create mode 100644 Jack/ClientShellDLL/PerformanceTest.h create mode 100644 Jack/ClientShellDLL/PickupItemFX.cpp create mode 100644 Jack/ClientShellDLL/PickupItemFX.h create mode 100644 Jack/ClientShellDLL/PlayerCamera.cpp create mode 100644 Jack/ClientShellDLL/PlayerCamera.h create mode 100644 Jack/ClientShellDLL/PlayerLureFX.cpp create mode 100644 Jack/ClientShellDLL/PlayerLureFX.h create mode 100644 Jack/ClientShellDLL/PlayerMgr.cpp create mode 100644 Jack/ClientShellDLL/PlayerMgr.h create mode 100644 Jack/ClientShellDLL/PlayerSoundFX.cpp create mode 100644 Jack/ClientShellDLL/PlayerSoundFX.h create mode 100644 Jack/ClientShellDLL/PlayerStats.cpp create mode 100644 Jack/ClientShellDLL/PlayerStats.h create mode 100644 Jack/ClientShellDLL/PlayerVehicleFX.cpp create mode 100644 Jack/ClientShellDLL/PlayerVehicleFX.h create mode 100644 Jack/ClientShellDLL/PlayerViewAttachmentMgr.cpp create mode 100644 Jack/ClientShellDLL/PlayerViewAttachmentMgr.h create mode 100644 Jack/ClientShellDLL/PolyDebrisFX.cpp create mode 100644 Jack/ClientShellDLL/PolyDebrisFX.h create mode 100644 Jack/ClientShellDLL/PolyGridFX.cpp create mode 100644 Jack/ClientShellDLL/PolyGridFX.h create mode 100644 Jack/ClientShellDLL/PolyLineFX.cpp create mode 100644 Jack/ClientShellDLL/PolyLineFX.h create mode 100644 Jack/ClientShellDLL/PolygridBuffer.h create mode 100644 Jack/ClientShellDLL/PopupMgr.cpp create mode 100644 Jack/ClientShellDLL/PopupMgr.h create mode 100644 Jack/ClientShellDLL/PopupText.cpp create mode 100644 Jack/ClientShellDLL/PopupText.h create mode 100644 Jack/ClientShellDLL/ProfileMgr.cpp create mode 100644 Jack/ClientShellDLL/ProfileMgr.h create mode 100644 Jack/ClientShellDLL/ProjectileFX.cpp create mode 100644 Jack/ClientShellDLL/ProjectileFX.h create mode 100644 Jack/ClientShellDLL/RadarObjectFX.cpp create mode 100644 Jack/ClientShellDLL/RadarObjectFX.h create mode 100644 Jack/ClientShellDLL/RagDoll.cpp create mode 100644 Jack/ClientShellDLL/RagDoll.h create mode 100644 Jack/ClientShellDLL/RagDollConstraint.cpp create mode 100644 Jack/ClientShellDLL/RagDollConstraint.h create mode 100644 Jack/ClientShellDLL/RagDollDistanceConstraint.h create mode 100644 Jack/ClientShellDLL/RagDollNode.h create mode 100644 Jack/ClientShellDLL/RandomSparksFX.cpp create mode 100644 Jack/ClientShellDLL/RandomSparksFX.h create mode 100644 Jack/ClientShellDLL/SFXMgr.cpp create mode 100644 Jack/ClientShellDLL/SFXMgr.h create mode 100644 Jack/ClientShellDLL/ScatterFX.cpp create mode 100644 Jack/ClientShellDLL/ScatterFX.h create mode 100644 Jack/ClientShellDLL/ScmdConsoleDriver_CShell.cpp create mode 100644 Jack/ClientShellDLL/ScmdConsoleDriver_CShell.h create mode 100644 Jack/ClientShellDLL/ScreenAudio.cpp create mode 100644 Jack/ClientShellDLL/ScreenAudio.h create mode 100644 Jack/ClientShellDLL/ScreenCommands.h create mode 100644 Jack/ClientShellDLL/ScreenConfigure.cpp create mode 100644 Jack/ClientShellDLL/ScreenConfigure.h create mode 100644 Jack/ClientShellDLL/ScreenControls.cpp create mode 100644 Jack/ClientShellDLL/ScreenControls.h create mode 100644 Jack/ClientShellDLL/ScreenCrosshair.cpp create mode 100644 Jack/ClientShellDLL/ScreenCrosshair.h create mode 100644 Jack/ClientShellDLL/ScreenDisplay.cpp create mode 100644 Jack/ClientShellDLL/ScreenDisplay.h create mode 100644 Jack/ClientShellDLL/ScreenEndCoopMission.cpp create mode 100644 Jack/ClientShellDLL/ScreenEndCoopMission.h create mode 100644 Jack/ClientShellDLL/ScreenEndDMMission.cpp create mode 100644 Jack/ClientShellDLL/ScreenEndDMMission.h create mode 100644 Jack/ClientShellDLL/ScreenEndMission.cpp create mode 100644 Jack/ClientShellDLL/ScreenEndMission.h create mode 100644 Jack/ClientShellDLL/ScreenEnum.h create mode 100644 Jack/ClientShellDLL/ScreenFailure.cpp create mode 100644 Jack/ClientShellDLL/ScreenFailure.h create mode 100644 Jack/ClientShellDLL/ScreenGame.cpp create mode 100644 Jack/ClientShellDLL/ScreenGame.h create mode 100644 Jack/ClientShellDLL/ScreenHost.cpp create mode 100644 Jack/ClientShellDLL/ScreenHost.h create mode 100644 Jack/ClientShellDLL/ScreenHostDDOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostDDOptions.h create mode 100644 Jack/ClientShellDLL/ScreenHostDMOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostDMOptions.h create mode 100644 Jack/ClientShellDLL/ScreenHostDemolitionOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostDemolitionOptions.h create mode 100644 Jack/ClientShellDLL/ScreenHostLevels.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostLevels.h create mode 100644 Jack/ClientShellDLL/ScreenHostMission.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostMission.h create mode 100644 Jack/ClientShellDLL/ScreenHostOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostOptions.h create mode 100644 Jack/ClientShellDLL/ScreenHostTDMOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostTDMOptions.h create mode 100644 Jack/ClientShellDLL/ScreenHostWeapons.cpp create mode 100644 Jack/ClientShellDLL/ScreenHostWeapons.h create mode 100644 Jack/ClientShellDLL/ScreenJoin.cpp create mode 100644 Jack/ClientShellDLL/ScreenJoin.h create mode 100644 Jack/ClientShellDLL/ScreenJoystick.cpp create mode 100644 Jack/ClientShellDLL/ScreenJoystick.h create mode 100644 Jack/ClientShellDLL/ScreenKeyboard.cpp create mode 100644 Jack/ClientShellDLL/ScreenKeyboard.h create mode 100644 Jack/ClientShellDLL/ScreenLoad.cpp create mode 100644 Jack/ClientShellDLL/ScreenLoad.h create mode 100644 Jack/ClientShellDLL/ScreenMain.cpp create mode 100644 Jack/ClientShellDLL/ScreenMain.h create mode 100644 Jack/ClientShellDLL/ScreenMgr.cpp create mode 100644 Jack/ClientShellDLL/ScreenMgr.h create mode 100644 Jack/ClientShellDLL/ScreenMouse.cpp create mode 100644 Jack/ClientShellDLL/ScreenMouse.h create mode 100644 Jack/ClientShellDLL/ScreenMulti.cpp create mode 100644 Jack/ClientShellDLL/ScreenMulti.h create mode 100644 Jack/ClientShellDLL/ScreenOptions.cpp create mode 100644 Jack/ClientShellDLL/ScreenOptions.h create mode 100644 Jack/ClientShellDLL/ScreenPerformance.cpp create mode 100644 Jack/ClientShellDLL/ScreenPerformance.h create mode 100644 Jack/ClientShellDLL/ScreenPlayer.cpp create mode 100644 Jack/ClientShellDLL/ScreenPlayer.h create mode 100644 Jack/ClientShellDLL/ScreenPlayerTeam.cpp create mode 100644 Jack/ClientShellDLL/ScreenPlayerTeam.h create mode 100644 Jack/ClientShellDLL/ScreenPostload.cpp create mode 100644 Jack/ClientShellDLL/ScreenPostload.h create mode 100644 Jack/ClientShellDLL/ScreenPreload.cpp create mode 100644 Jack/ClientShellDLL/ScreenPreload.h create mode 100644 Jack/ClientShellDLL/ScreenProfile.cpp create mode 100644 Jack/ClientShellDLL/ScreenProfile.h create mode 100644 Jack/ClientShellDLL/ScreenSave.cpp create mode 100644 Jack/ClientShellDLL/ScreenSave.h create mode 100644 Jack/ClientShellDLL/ScreenSingle.cpp create mode 100644 Jack/ClientShellDLL/ScreenSingle.h create mode 100644 Jack/ClientShellDLL/ScreenSpriteMgr.cpp create mode 100644 Jack/ClientShellDLL/ScreenSpriteMgr.h create mode 100644 Jack/ClientShellDLL/ScreenTeam.cpp create mode 100644 Jack/ClientShellDLL/ScreenTeam.h create mode 100644 Jack/ClientShellDLL/ScreenTintMgr.cpp create mode 100644 Jack/ClientShellDLL/ScreenTintMgr.h create mode 100644 Jack/ClientShellDLL/SearchLightFX.cpp create mode 100644 Jack/ClientShellDLL/SearchLightFX.h create mode 100644 Jack/ClientShellDLL/Searcher.cpp create mode 100644 Jack/ClientShellDLL/Searcher.h create mode 100644 Jack/ClientShellDLL/SharedDefs.h create mode 100644 Jack/ClientShellDLL/ShellCasingFX.cpp create mode 100644 Jack/ClientShellDLL/ShellCasingFX.h create mode 100644 Jack/ClientShellDLL/SmokeFX.cpp create mode 100644 Jack/ClientShellDLL/SmokeFX.h create mode 100644 Jack/ClientShellDLL/SnowFX.cpp create mode 100644 Jack/ClientShellDLL/SnowFX.h create mode 100644 Jack/ClientShellDLL/SoundFX.cpp create mode 100644 Jack/ClientShellDLL/SoundFX.h create mode 100644 Jack/ClientShellDLL/Sparam.cpp create mode 100644 Jack/ClientShellDLL/Sparam.h create mode 100644 Jack/ClientShellDLL/SpecialFX.h create mode 100644 Jack/ClientShellDLL/SpecialFXList.cpp create mode 100644 Jack/ClientShellDLL/SpecialFXList.h create mode 100644 Jack/ClientShellDLL/Stdafx.cpp create mode 100644 Jack/ClientShellDLL/Stdafx.h create mode 100644 Jack/ClientShellDLL/SteamFX.cpp create mode 100644 Jack/ClientShellDLL/SteamFX.h create mode 100644 Jack/ClientShellDLL/SystemDependant.h create mode 100644 Jack/ClientShellDLL/TO2ClientWeaponAllocator.cpp create mode 100644 Jack/ClientShellDLL/TO2ClientWeaponAllocator.h create mode 100644 Jack/ClientShellDLL/TO2GameClientShell.cpp create mode 100644 Jack/ClientShellDLL/TO2GameClientShell.h create mode 100644 Jack/ClientShellDLL/TO2HUDMgr.cpp create mode 100644 Jack/ClientShellDLL/TO2HUDMgr.h create mode 100644 Jack/ClientShellDLL/TO2InterfaceMgr.cpp create mode 100644 Jack/ClientShellDLL/TO2InterfaceMgr.h create mode 100644 Jack/ClientShellDLL/TO2LayoutMgr.cpp create mode 100644 Jack/ClientShellDLL/TO2LayoutMgr.h create mode 100644 Jack/ClientShellDLL/TO2PlayerMgr.cpp create mode 100644 Jack/ClientShellDLL/TO2PlayerMgr.h create mode 100644 Jack/ClientShellDLL/TO2PlayerStats.cpp create mode 100644 Jack/ClientShellDLL/TO2PlayerStats.h create mode 100644 Jack/ClientShellDLL/TO2ScreenMgr.cpp create mode 100644 Jack/ClientShellDLL/TO2ScreenMgr.h create mode 100644 Jack/ClientShellDLL/TargetMgr.cpp create mode 100644 Jack/ClientShellDLL/TargetMgr.h create mode 100644 Jack/ClientShellDLL/TextureFXMgr.cpp create mode 100644 Jack/ClientShellDLL/TextureFXMgr.h create mode 100644 Jack/ClientShellDLL/TimedText.cpp create mode 100644 Jack/ClientShellDLL/TimedText.h create mode 100644 Jack/ClientShellDLL/TracerFX.cpp create mode 100644 Jack/ClientShellDLL/TracerFX.h create mode 100644 Jack/ClientShellDLL/TransitionFXMgr.cpp create mode 100644 Jack/ClientShellDLL/TransitionFXMgr.h create mode 100644 Jack/ClientShellDLL/TriggerFX.cpp create mode 100644 Jack/ClientShellDLL/TriggerFX.h create mode 100644 Jack/ClientShellDLL/VKDefs.cpp create mode 100644 Jack/ClientShellDLL/VKDefs.h create mode 100644 Jack/ClientShellDLL/VarTrack.h create mode 100644 Jack/ClientShellDLL/VehicleMgr.cpp create mode 100644 Jack/ClientShellDLL/VehicleMgr.h create mode 100644 Jack/ClientShellDLL/VehicleWeapon.cpp create mode 100644 Jack/ClientShellDLL/VehicleWeapon.h create mode 100644 Jack/ClientShellDLL/VisionModeMgr.cpp create mode 100644 Jack/ClientShellDLL/VisionModeMgr.h create mode 100644 Jack/ClientShellDLL/VolumeBrushFX.h create mode 100644 Jack/ClientShellDLL/WeaponChooser.cpp create mode 100644 Jack/ClientShellDLL/WeaponChooser.h create mode 100644 Jack/ClientShellDLL/WeaponFX.cpp create mode 100644 Jack/ClientShellDLL/WeaponFX.h create mode 100644 Jack/ClientShellDLL/WeaponStringDefs.h create mode 100644 Jack/ClientShellDLL/WeatherFX.cpp create mode 100644 Jack/ClientShellDLL/WeatherFX.h create mode 100644 Jack/ClientShellDLL/client_physics.cpp create mode 100644 Jack/ClientShellDLL/client_physics.h create mode 100644 Jack/ClientShellDLL/plasma.h create mode 100644 Jack/ClientShellDLL/resource.h create mode 100644 Jack/ClientShellDLL/sprinklesfx.cpp create mode 100644 Jack/ClientShellDLL/sprinklesfx.h create mode 100644 Jack/ClientShellDLL/stack.h create mode 100644 Jack/Launcher/AniButton.cpp create mode 100644 Jack/Launcher/AniButton.h create mode 100644 Jack/Launcher/AnimDlg.cpp create mode 100644 Jack/Launcher/AnimDlg.h create mode 100644 Jack/Launcher/BitmapCheckButton.cpp create mode 100644 Jack/Launcher/BitmapCheckButton.h create mode 100644 Jack/Launcher/ButtonEx.cpp create mode 100644 Jack/Launcher/ButtonEx.h create mode 100644 Jack/Launcher/CustomizeDlg.cpp create mode 100644 Jack/Launcher/CustomizeDlg.h create mode 100644 Jack/Launcher/DetailSettingsDlg.cpp create mode 100644 Jack/Launcher/DetailSettingsDlg.h create mode 100644 Jack/Launcher/DisplayDlg.cpp create mode 100644 Jack/Launcher/DisplayDlg.h create mode 100644 Jack/Launcher/DisplayMgr.cpp create mode 100644 Jack/Launcher/DisplayMgr.h create mode 100644 Jack/Launcher/DlgEx.cpp create mode 100644 Jack/Launcher/DlgEx.h create mode 100644 Jack/Launcher/EditEx.cpp create mode 100644 Jack/Launcher/EditEx.h create mode 100644 Jack/Launcher/Launcher.cpp create mode 100644 Jack/Launcher/Launcher.h create mode 100644 Jack/Launcher/Launcher.vcproj create mode 100644 Jack/Launcher/Launcher.vcproj.vspscc create mode 100644 Jack/Launcher/LauncherDlg.cpp create mode 100644 Jack/Launcher/LauncherDlg.h create mode 100644 Jack/Launcher/MessageBoxDlg.cpp create mode 100644 Jack/Launcher/MessageBoxDlg.h create mode 100644 Jack/Launcher/MoveDlg.cpp create mode 100644 Jack/Launcher/MoveDlg.h create mode 100644 Jack/Launcher/MultiplayerDlg.cpp create mode 100644 Jack/Launcher/MultiplayerDlg.h create mode 100644 Jack/Launcher/OptionsDlg.cpp create mode 100644 Jack/Launcher/OptionsDlg.h create mode 100644 Jack/Launcher/PlaySound.h create mode 100644 Jack/Launcher/RES/Lang/DE/Launcher.rc create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CancelD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CancelF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CancelU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Company2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CustomBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CustomD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CustomF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CustomU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/CustomX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DemoMainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DetailSettingsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DisplayBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DisplayD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DisplayF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DisplayU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/DisplayX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/HighDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/HighDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/HighDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/InstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/InstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/InstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/LowDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/LowDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/LowDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/MainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/MediumDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/MediumDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/MediumDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/NextD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/NextF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/NextU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/NextX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OKD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OKU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OkF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OptionsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OptionsF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/OptionsX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PlayD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PlayF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PlayU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PreviousD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PreviousF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PreviousU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/PreviousX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/Publisher2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/QuitD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/QuitF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/QuitU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/UninstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/UninstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/UninstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/UninstallX.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/optionsd.bmp create mode 100644 Jack/Launcher/RES/Lang/DE/bmp/optionsu.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/Launcher.rc create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Cancel.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/CustomBackground.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/DetailSettingsBackground.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/DisplayBackground.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Error.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Information.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Install.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/MainAppBackground.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/MainAppBackgroundbuttons.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Ok.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/OptionsBackground.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/Warning.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/custom.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/next.psd create mode 100644 Jack/Launcher/RES/Lang/EN/PSD/previous.psd create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CancelD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CancelF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CancelU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Company2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CustomBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CustomD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CustomF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CustomU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/CustomX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DetailSettingsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DisplayBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DisplayD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DisplayF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DisplayU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/DisplayX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/HighDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/HighDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/HighDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/InstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/InstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/InstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Launcher Art Requirements.doc create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/LowDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/LowDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/LowDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/MainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/MediumDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/MediumDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/MediumDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/NextD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/NextF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/NextU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/NextX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OKD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OKU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OkF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OptionsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OptionsF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/OptionsX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PlayD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PlayF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PlayU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PreviousD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PreviousF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PreviousU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/PreviousX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/QuitD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/QuitF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/QuitU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/UninstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/UninstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/UninstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/UninstallX.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/optionsd.bmp create mode 100644 Jack/Launcher/RES/Lang/EN/bmp/optionsu.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/Launcher.rc create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CancelD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CancelF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CancelU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Company2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CustomBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CustomD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CustomF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CustomU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/CustomX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DemoMainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DetailSettingsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DisplayBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DisplayD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DisplayF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DisplayU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/DisplayX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/HighDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/HighDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/HighDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/InstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/InstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/InstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/LowDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/LowDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/LowDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/MainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/MediumDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/MediumDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/MediumDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/NextD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/NextF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/NextU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/NextX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OKD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OKU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OkF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OptionsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OptionsF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/OptionsX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PlayD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PlayF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PlayU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PreviousD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PreviousF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PreviousU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/PreviousX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/Publisher2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/QuitD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/QuitF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/QuitU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/UninstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/UninstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/UninstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/UninstallX.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/optionsd.bmp create mode 100644 Jack/Launcher/RES/Lang/ES/bmp/optionsu.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/Launcher.rc create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CancelD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CancelF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CancelU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Company2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CustomBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CustomD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CustomF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CustomU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/CustomX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DemoMainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DetailSettingsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DisplayBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DisplayD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DisplayF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DisplayU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/DisplayX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/HighDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/HighDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/HighDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/InstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/InstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/InstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/LowDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/LowDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/LowDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/MainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/MediumDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/MediumDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/MediumDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/NextD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/NextF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/NextU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/NextX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OKD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OKU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OkF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OptionsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OptionsF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/OptionsX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PlayD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PlayF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PlayU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PreviousD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PreviousF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PreviousU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/PreviousX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/Publisher2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/QuitD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/QuitF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/QuitU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/UninstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/UninstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/UninstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/UninstallX.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/optionsd.bmp create mode 100644 Jack/Launcher/RES/Lang/FR/bmp/optionsu.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/Launcher.rc create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CancelD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CancelF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CancelU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Company2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CustomBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CustomD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CustomF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CustomU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/CustomX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DemoMainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DetailSettingsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DisplayBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DisplayD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DisplayF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DisplayU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/DisplayX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/HighDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/HighDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/HighDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/InstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/InstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/InstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/LowDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/LowDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/LowDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/MainAppBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/MediumDetailD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/MediumDetailF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/MediumDetailU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/NextD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/NextF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/NextU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/NextX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OKD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OKU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OkF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OptionsBackground.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OptionsF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/OptionsX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PlayD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PlayF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PlayU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PreviousD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PreviousF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PreviousU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/PreviousX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher2WebD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher2WebF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/Publisher2WebU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/QuitD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/QuitF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/QuitU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/UninstallD.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/UninstallF.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/UninstallU.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/UninstallX.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/optionsd.bmp create mode 100644 Jack/Launcher/RES/Lang/IT/bmp/optionsu.bmp create mode 100644 Jack/Launcher/RES/Launcher.ico create mode 100644 Jack/Launcher/RES/Launcher.rc2 create mode 100644 Jack/Launcher/RES/WebHand.cur create mode 100644 Jack/Launcher/RES/bmp/BoxBackground.bmp create mode 100644 Jack/Launcher/RES/bmp/CheckBoxC.bmp create mode 100644 Jack/Launcher/RES/bmp/CheckBoxF.bmp create mode 100644 Jack/Launcher/RES/bmp/CheckBoxN.bmp create mode 100644 Jack/Launcher/RES/bmp/Error.bmp create mode 100644 Jack/Launcher/RES/bmp/Information.bmp create mode 100644 Jack/Launcher/RES/bmp/MinimizeD.bmp create mode 100644 Jack/Launcher/RES/bmp/MinimizeU.bmp create mode 100644 Jack/Launcher/RES/bmp/Warning.bmp create mode 100644 Jack/Launcher/RES/bmp/closed.bmp create mode 100644 Jack/Launcher/RES/bmp/closeu.bmp create mode 100644 Jack/Launcher/RES/snd/Click.wav create mode 100644 Jack/Launcher/RES/snd/Intro.wav create mode 100644 Jack/Launcher/RES/snd/Select.wav create mode 100644 Jack/Launcher/RES/snd/TypeBack.wav create mode 100644 Jack/Launcher/RES/snd/buttondown.wav create mode 100644 Jack/Launcher/RES/snd/type1.WAV create mode 100644 Jack/Launcher/RES/snd/type2.WAV create mode 100644 Jack/Launcher/RES/snd/type3.WAV create mode 100644 Jack/Launcher/RezFind.cpp create mode 100644 Jack/Launcher/RezFind.h create mode 100644 Jack/Launcher/StaticEx.cpp create mode 100644 Jack/Launcher/StaticEx.h create mode 100644 Jack/Launcher/StdAfx.cpp create mode 100644 Jack/Launcher/StdAfx.h create mode 100644 Jack/Launcher/TextCheckBox.cpp create mode 100644 Jack/Launcher/TextCheckBox.h create mode 100644 Jack/Launcher/Utils.cpp create mode 100644 Jack/Launcher/Utils.h create mode 100644 Jack/Launcher/resource.h create mode 100644 Jack/Libs/GameSpy/GameSpy.lib create mode 100644 Jack/Libs/GameSpy/IGameSpy.h create mode 100644 Jack/Libs/LTGUIMgr/ltguibutton.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguibutton.h create mode 100644 Jack/Libs/LTGUIMgr/ltguicolumnctrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguicolumnctrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguicommandhandler.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguicommandhandler.h create mode 100644 Jack/Libs/LTGUIMgr/ltguictrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguictrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguicyclectrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguicyclectrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguieditctrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguieditctrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguiframe.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguiframe.h create mode 100644 Jack/Libs/LTGUIMgr/ltguilargetext.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguilargetext.h create mode 100644 Jack/Libs/LTGUIMgr/ltguilistctrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguilistctrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguimgr.h create mode 100644 Jack/Libs/LTGUIMgr/ltguimgr60.vcproj create mode 100644 Jack/Libs/LTGUIMgr/ltguimgr60.vcproj.vspscc create mode 100644 Jack/Libs/LTGUIMgr/ltguislider.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguislider.h create mode 100644 Jack/Libs/LTGUIMgr/ltguitextitemctrl.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguitextitemctrl.h create mode 100644 Jack/Libs/LTGUIMgr/ltguitoggle.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguitoggle.h create mode 100644 Jack/Libs/LTGUIMgr/ltguiwindow.cpp create mode 100644 Jack/Libs/LTGUIMgr/ltguiwindow.h create mode 100644 Jack/Libs/LTGUIMgr/ltquaduvutils.h create mode 100644 Jack/Libs/LTGUIMgr/vkdefs.h create mode 100644 Jack/ObjectDLL/AI.cpp create mode 100644 Jack/ObjectDLL/AI.h create mode 100644 Jack/ObjectDLL/AIAssert.cpp create mode 100644 Jack/ObjectDLL/AIAssert.h create mode 100644 Jack/ObjectDLL/AIBrain.cpp create mode 100644 Jack/ObjectDLL/AIBrain.h create mode 100644 Jack/ObjectDLL/AIButeMgr.cpp create mode 100644 Jack/ObjectDLL/AIButeMgr.h create mode 100644 Jack/ObjectDLL/AICentralKnowledgeMgr.cpp create mode 100644 Jack/ObjectDLL/AICentralKnowledgeMgr.h create mode 100644 Jack/ObjectDLL/AIClassFactory.cpp create mode 100644 Jack/ObjectDLL/AIClassFactory.h create mode 100644 Jack/ObjectDLL/AIDataTypeEnums.h create mode 100644 Jack/ObjectDLL/AIGoalAbstract.cpp create mode 100644 Jack/ObjectDLL/AIGoalAbstract.h create mode 100644 Jack/ObjectDLL/AIGoalAbstractSearch.cpp create mode 100644 Jack/ObjectDLL/AIGoalAbstractSearch.h create mode 100644 Jack/ObjectDLL/AIGoalAbstractStimulated.cpp create mode 100644 Jack/ObjectDLL/AIGoalAbstractStimulated.h create mode 100644 Jack/ObjectDLL/AIGoalAbstractTargeted.cpp create mode 100644 Jack/ObjectDLL/AIGoalAbstractTargeted.h create mode 100644 Jack/ObjectDLL/AIGoalAbstractUseObject.cpp create mode 100644 Jack/ObjectDLL/AIGoalAbstractUseObject.h create mode 100644 Jack/ObjectDLL/AIGoalAlarm.cpp create mode 100644 Jack/ObjectDLL/AIGoalAlarm.h create mode 100644 Jack/ObjectDLL/AIGoalAnimate.cpp create mode 100644 Jack/ObjectDLL/AIGoalAnimate.h create mode 100644 Jack/ObjectDLL/AIGoalApprehend.cpp create mode 100644 Jack/ObjectDLL/AIGoalApprehend.h create mode 100644 Jack/ObjectDLL/AIGoalAssassinate.cpp create mode 100644 Jack/ObjectDLL/AIGoalAssassinate.h create mode 100644 Jack/ObjectDLL/AIGoalAttack.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttack.h create mode 100644 Jack/ObjectDLL/AIGoalAttackFromCover.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackFromCover.h create mode 100644 Jack/ObjectDLL/AIGoalAttackFromRandomVantage.h create mode 100644 Jack/ObjectDLL/AIGoalAttackFromRoofVantage.h create mode 100644 Jack/ObjectDLL/AIGoalAttackFromVantage.h create mode 100644 Jack/ObjectDLL/AIGoalAttackFromView.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackFromView.h create mode 100644 Jack/ObjectDLL/AIGoalAttackMelee.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackMelee.h create mode 100644 Jack/ObjectDLL/AIGoalAttackProne.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackProne.h create mode 100644 Jack/ObjectDLL/AIGoalAttackProp.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackProp.h create mode 100644 Jack/ObjectDLL/AIGoalAttackRanged.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackRanged.h create mode 100644 Jack/ObjectDLL/AIGoalAttackRangedDynamic.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackRangedDynamic.h create mode 100644 Jack/ObjectDLL/AIGoalAttackfromRandomVantage.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackfromRoofVantage.cpp create mode 100644 Jack/ObjectDLL/AIGoalAttackfromVantage.cpp create mode 100644 Jack/ObjectDLL/AIGoalButeMgr.cpp create mode 100644 Jack/ObjectDLL/AIGoalButeMgr.h create mode 100644 Jack/ObjectDLL/AIGoalCatch.cpp create mode 100644 Jack/ObjectDLL/AIGoalCatch.h create mode 100644 Jack/ObjectDLL/AIGoalCharge.cpp create mode 100644 Jack/ObjectDLL/AIGoalCharge.h create mode 100644 Jack/ObjectDLL/AIGoalChase.cpp create mode 100644 Jack/ObjectDLL/AIGoalChase.h create mode 100644 Jack/ObjectDLL/AIGoalCheckBody.cpp create mode 100644 Jack/ObjectDLL/AIGoalCheckBody.h create mode 100644 Jack/ObjectDLL/AIGoalCover.cpp create mode 100644 Jack/ObjectDLL/AIGoalCover.h create mode 100644 Jack/ObjectDLL/AIGoalDeflect.cpp create mode 100644 Jack/ObjectDLL/AIGoalDeflect.h create mode 100644 Jack/ObjectDLL/AIGoalDisappearReappear.cpp create mode 100644 Jack/ObjectDLL/AIGoalDisappearReappear.h create mode 100644 Jack/ObjectDLL/AIGoalDisappearReappearEvasive.cpp create mode 100644 Jack/ObjectDLL/AIGoalDisappearReappearEvasive.h create mode 100644 Jack/ObjectDLL/AIGoalDistress.cpp create mode 100644 Jack/ObjectDLL/AIGoalDistress.h create mode 100644 Jack/ObjectDLL/AIGoalDramaDeath.cpp create mode 100644 Jack/ObjectDLL/AIGoalDramaDeath.h create mode 100644 Jack/ObjectDLL/AIGoalDrawWeapon.cpp create mode 100644 Jack/ObjectDLL/AIGoalDrawWeapon.h create mode 100644 Jack/ObjectDLL/AIGoalExitLevel.cpp create mode 100644 Jack/ObjectDLL/AIGoalExitLevel.h create mode 100644 Jack/ObjectDLL/AIGoalFlee.cpp create mode 100644 Jack/ObjectDLL/AIGoalFlee.h create mode 100644 Jack/ObjectDLL/AIGoalFollow.cpp create mode 100644 Jack/ObjectDLL/AIGoalFollow.h create mode 100644 Jack/ObjectDLL/AIGoalFollowFootprint.cpp create mode 100644 Jack/ObjectDLL/AIGoalFollowFootprint.h create mode 100644 Jack/ObjectDLL/AIGoalGetBackup.cpp create mode 100644 Jack/ObjectDLL/AIGoalGetBackup.h create mode 100644 Jack/ObjectDLL/AIGoalGoto.cpp create mode 100644 Jack/ObjectDLL/AIGoalGoto.h create mode 100644 Jack/ObjectDLL/AIGoalGuard.cpp create mode 100644 Jack/ObjectDLL/AIGoalGuard.h create mode 100644 Jack/ObjectDLL/AIGoalHolsterWeapon.cpp create mode 100644 Jack/ObjectDLL/AIGoalHolsterWeapon.h create mode 100644 Jack/ObjectDLL/AIGoalInvestigate.cpp create mode 100644 Jack/ObjectDLL/AIGoalInvestigate.h create mode 100644 Jack/ObjectDLL/AIGoalLoveKitty.cpp create mode 100644 Jack/ObjectDLL/AIGoalLoveKitty.h create mode 100644 Jack/ObjectDLL/AIGoalLunge.cpp create mode 100644 Jack/ObjectDLL/AIGoalLunge.h create mode 100644 Jack/ObjectDLL/AIGoalMenace.cpp create mode 100644 Jack/ObjectDLL/AIGoalMenace.h create mode 100644 Jack/ObjectDLL/AIGoalMgr.cpp create mode 100644 Jack/ObjectDLL/AIGoalMgr.h create mode 100644 Jack/ObjectDLL/AIGoalMountedFlashlight.cpp create mode 100644 Jack/ObjectDLL/AIGoalMountedFlashlight.h create mode 100644 Jack/ObjectDLL/AIGoalObstruct.cpp create mode 100644 Jack/ObjectDLL/AIGoalObstruct.h create mode 100644 Jack/ObjectDLL/AIGoalPatrol.cpp create mode 100644 Jack/ObjectDLL/AIGoalPatrol.h create mode 100644 Jack/ObjectDLL/AIGoalProximityCommand.cpp create mode 100644 Jack/ObjectDLL/AIGoalProximityCommand.h create mode 100644 Jack/ObjectDLL/AIGoalPsychoChase.cpp create mode 100644 Jack/ObjectDLL/AIGoalPsychoChase.h create mode 100644 Jack/ObjectDLL/AIGoalReclassifyToEnemy.cpp create mode 100644 Jack/ObjectDLL/AIGoalReclassifyToEnemy.h create mode 100644 Jack/ObjectDLL/AIGoalRespondToAlarm.cpp create mode 100644 Jack/ObjectDLL/AIGoalRespondToAlarm.h create mode 100644 Jack/ObjectDLL/AIGoalRespondToBackup.cpp create mode 100644 Jack/ObjectDLL/AIGoalRespondToBackup.h create mode 100644 Jack/ObjectDLL/AIGoalResurrecting.cpp create mode 100644 Jack/ObjectDLL/AIGoalResurrecting.h create mode 100644 Jack/ObjectDLL/AIGoalRetreat.cpp create mode 100644 Jack/ObjectDLL/AIGoalRetreat.h create mode 100644 Jack/ObjectDLL/AIGoalSearch.cpp create mode 100644 Jack/ObjectDLL/AIGoalSearch.h create mode 100644 Jack/ObjectDLL/AIGoalSentryChallenge.cpp create mode 100644 Jack/ObjectDLL/AIGoalSentryChallenge.h create mode 100644 Jack/ObjectDLL/AIGoalSentryMark.cpp create mode 100644 Jack/ObjectDLL/AIGoalSentryMark.h create mode 100644 Jack/ObjectDLL/AIGoalSerumDeath.cpp create mode 100644 Jack/ObjectDLL/AIGoalSerumDeath.h create mode 100644 Jack/ObjectDLL/AIGoalSleep.cpp create mode 100644 Jack/ObjectDLL/AIGoalSleep.h create mode 100644 Jack/ObjectDLL/AIGoalSniper.cpp create mode 100644 Jack/ObjectDLL/AIGoalSniper.h create mode 100644 Jack/ObjectDLL/AIGoalSpecialDamage.cpp create mode 100644 Jack/ObjectDLL/AIGoalSpecialDamage.h create mode 100644 Jack/ObjectDLL/AIGoalTail.cpp create mode 100644 Jack/ObjectDLL/AIGoalTail.h create mode 100644 Jack/ObjectDLL/AIGoalTalk.cpp create mode 100644 Jack/ObjectDLL/AIGoalTalk.h create mode 100644 Jack/ObjectDLL/AIGoalTypeEnums.h create mode 100644 Jack/ObjectDLL/AIGoalWork.cpp create mode 100644 Jack/ObjectDLL/AIGoalWork.h create mode 100644 Jack/ObjectDLL/AIHuman.cpp create mode 100644 Jack/ObjectDLL/AIHuman.h create mode 100644 Jack/ObjectDLL/AIHumanState.cpp create mode 100644 Jack/ObjectDLL/AIHumanState.h create mode 100644 Jack/ObjectDLL/AIHumanStateApprehend.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateApprehend.h create mode 100644 Jack/ObjectDLL/AIHumanStateAttackMove.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateAttackMove.h create mode 100644 Jack/ObjectDLL/AIHumanStateAttackProne.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateAttackProne.h create mode 100644 Jack/ObjectDLL/AIHumanStateCatch.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateCatch.h create mode 100644 Jack/ObjectDLL/AIHumanStateDeflect.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateDeflect.h create mode 100644 Jack/ObjectDLL/AIHumanStateDisappearReappear.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateDisappearReappear.h create mode 100644 Jack/ObjectDLL/AIHumanStateLaunch.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateLaunch.h create mode 100644 Jack/ObjectDLL/AIHumanStateObstruct.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateObstruct.h create mode 100644 Jack/ObjectDLL/AIHumanStateResurrecting.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateResurrecting.h create mode 100644 Jack/ObjectDLL/AIHumanStateSentryChallenge.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateSentryChallenge.h create mode 100644 Jack/ObjectDLL/AIHumanStateSniper.cpp create mode 100644 Jack/ObjectDLL/AIHumanStateSniper.h create mode 100644 Jack/ObjectDLL/AIHumanStrategy.cpp create mode 100644 Jack/ObjectDLL/AIHumanStrategy.h create mode 100644 Jack/ObjectDLL/AIHumanStrategyShootStream.cpp create mode 100644 Jack/ObjectDLL/AIHumanStrategyShootStream.h create mode 100644 Jack/ObjectDLL/AIHumanStrategyToggleLights.cpp create mode 100644 Jack/ObjectDLL/AIHumanStrategyToggleLights.h create mode 100644 Jack/ObjectDLL/AIInformationVolumeMgr.cpp create mode 100644 Jack/ObjectDLL/AIInformationVolumeMgr.h create mode 100644 Jack/ObjectDLL/AIMovement.cpp create mode 100644 Jack/ObjectDLL/AIMovement.h create mode 100644 Jack/ObjectDLL/AIMovementModifier.cpp create mode 100644 Jack/ObjectDLL/AIMovementModifier.h create mode 100644 Jack/ObjectDLL/AINode.cpp create mode 100644 Jack/ObjectDLL/AINode.h create mode 100644 Jack/ObjectDLL/AINodeDisturbance.cpp create mode 100644 Jack/ObjectDLL/AINodeDisturbance.h create mode 100644 Jack/ObjectDLL/AINodeGuard.cpp create mode 100644 Jack/ObjectDLL/AINodeGuard.h create mode 100644 Jack/ObjectDLL/AINodeMgr.cpp create mode 100644 Jack/ObjectDLL/AINodeMgr.h create mode 100644 Jack/ObjectDLL/AINodeSensing.cpp create mode 100644 Jack/ObjectDLL/AINodeSensing.h create mode 100644 Jack/ObjectDLL/AINodeSniper.cpp create mode 100644 Jack/ObjectDLL/AINodeSniper.h create mode 100644 Jack/ObjectDLL/AINodeTypeEnums.h create mode 100644 Jack/ObjectDLL/AIPath.cpp create mode 100644 Jack/ObjectDLL/AIPath.h create mode 100644 Jack/ObjectDLL/AIPathKnowledgeMgr.cpp create mode 100644 Jack/ObjectDLL/AIPathKnowledgeMgr.h create mode 100644 Jack/ObjectDLL/AIPathMgr.cpp create mode 100644 Jack/ObjectDLL/AIPathMgr.h create mode 100644 Jack/ObjectDLL/AIRegion.cpp create mode 100644 Jack/ObjectDLL/AIRegion.h create mode 100644 Jack/ObjectDLL/AIRegionMgr.cpp create mode 100644 Jack/ObjectDLL/AIRegionMgr.h create mode 100644 Jack/ObjectDLL/AISenseRecorderAbstract.cpp create mode 100644 Jack/ObjectDLL/AISenseRecorderAbstract.h create mode 100644 Jack/ObjectDLL/AISenseRecorderGame.cpp create mode 100644 Jack/ObjectDLL/AISenseRecorderGame.h create mode 100644 Jack/ObjectDLL/AISenseTypeEnums.h create mode 100644 Jack/ObjectDLL/AISensing.h create mode 100644 Jack/ObjectDLL/AISoundTypeEnums.h create mode 100644 Jack/ObjectDLL/AISounds.cpp create mode 100644 Jack/ObjectDLL/AISounds.h create mode 100644 Jack/ObjectDLL/AISpatialRepresentationMgr.cpp create mode 100644 Jack/ObjectDLL/AISpatialRepresentationMgr.h create mode 100644 Jack/ObjectDLL/AIState.cpp create mode 100644 Jack/ObjectDLL/AIState.h create mode 100644 Jack/ObjectDLL/AIStateTypeEnums.h create mode 100644 Jack/ObjectDLL/AIStimulusMgr.cpp create mode 100644 Jack/ObjectDLL/AIStimulusMgr.h create mode 100644 Jack/ObjectDLL/AIStimulusTypeEnums.h create mode 100644 Jack/ObjectDLL/AIStrategy.h create mode 100644 Jack/ObjectDLL/AIStrategyTypeEnums.h create mode 100644 Jack/ObjectDLL/AITarget.cpp create mode 100644 Jack/ObjectDLL/AITarget.h create mode 100644 Jack/ObjectDLL/AITypes.cpp create mode 100644 Jack/ObjectDLL/AITypes.h create mode 100644 Jack/ObjectDLL/AIUtils.cpp create mode 100644 Jack/ObjectDLL/AIUtils.h create mode 100644 Jack/ObjectDLL/AIVolume.cpp create mode 100644 Jack/ObjectDLL/AIVolume.h create mode 100644 Jack/ObjectDLL/AIVolumeMgr.cpp create mode 100644 Jack/ObjectDLL/AIVolumeMgr.h create mode 100644 Jack/ObjectDLL/AIVolumeNeighbor.cpp create mode 100644 Jack/ObjectDLL/AIVolumeNeighbor.h create mode 100644 Jack/ObjectDLL/AIVolumeTypeEnums.h create mode 100644 Jack/ObjectDLL/ActiveWorldModel.cpp create mode 100644 Jack/ObjectDLL/ActiveWorldModel.h create mode 100644 Jack/ObjectDLL/AimMagnet.cpp create mode 100644 Jack/ObjectDLL/AimMagnet.h create mode 100644 Jack/ObjectDLL/Alarm.cpp create mode 100644 Jack/ObjectDLL/Alarm.h create mode 100644 Jack/ObjectDLL/AmmoBox.cpp create mode 100644 Jack/ObjectDLL/AmmoBox.h create mode 100644 Jack/ObjectDLL/AnimationLex.cpp create mode 100644 Jack/ObjectDLL/AnimationLex.h create mode 100644 Jack/ObjectDLL/AnimationLex.l create mode 100644 Jack/ObjectDLL/AnimationMgr.cpp create mode 100644 Jack/ObjectDLL/AnimationMgr.h create mode 100644 Jack/ObjectDLL/AnimationMovement.h create mode 100644 Jack/ObjectDLL/AnimationMovementEnums.h create mode 100644 Jack/ObjectDLL/AnimationParse.cpp create mode 100644 Jack/ObjectDLL/AnimationParse.h create mode 100644 Jack/ObjectDLL/AnimationParse.y create mode 100644 Jack/ObjectDLL/AnimationParser.cpp create mode 100644 Jack/ObjectDLL/AnimationParser.h create mode 100644 Jack/ObjectDLL/AnimationProp.h create mode 100644 Jack/ObjectDLL/AnimationPropEnums.h create mode 100644 Jack/ObjectDLL/AnimationPropGroupEnums.h create mode 100644 Jack/ObjectDLL/AnimationPropStrings.h create mode 100644 Jack/ObjectDLL/AnimationStd.h create mode 100644 Jack/ObjectDLL/AnimatorPlayer.cpp create mode 100644 Jack/ObjectDLL/AnimatorPlayer.h create mode 100644 Jack/ObjectDLL/Attachments.cpp create mode 100644 Jack/ObjectDLL/Attachments.h create mode 100644 Jack/ObjectDLL/BanIPMgr.cpp create mode 100644 Jack/ObjectDLL/BanIPMgr.h create mode 100644 Jack/ObjectDLL/Body.cpp create mode 100644 Jack/ObjectDLL/Body.h create mode 100644 Jack/ObjectDLL/BodyState.cpp create mode 100644 Jack/ObjectDLL/BodyState.h create mode 100644 Jack/ObjectDLL/Bombable.cpp create mode 100644 Jack/ObjectDLL/Bombable.h create mode 100644 Jack/ObjectDLL/Breakable.cpp create mode 100644 Jack/ObjectDLL/Breakable.h create mode 100644 Jack/ObjectDLL/ButeTools.cpp create mode 100644 Jack/ObjectDLL/ButeTools.h create mode 100644 Jack/ObjectDLL/CDynArray.h create mode 100644 Jack/ObjectDLL/CVarTrack.h create mode 100644 Jack/ObjectDLL/Camera.cpp create mode 100644 Jack/ObjectDLL/Camera.h create mode 100644 Jack/ObjectDLL/Character.cpp create mode 100644 Jack/ObjectDLL/Character.h create mode 100644 Jack/ObjectDLL/CharacterHitBox.cpp create mode 100644 Jack/ObjectDLL/CharacterHitBox.h create mode 100644 Jack/ObjectDLL/CharacterMgr.cpp create mode 100644 Jack/ObjectDLL/CharacterMgr.h create mode 100644 Jack/ObjectDLL/Chassis.cpp create mode 100644 Jack/ObjectDLL/Chassis.h create mode 100644 Jack/ObjectDLL/ChassisPiece.cpp create mode 100644 Jack/ObjectDLL/ChassisPiece.h create mode 100644 Jack/ObjectDLL/ClassHlp.but create mode 100644 Jack/ObjectDLL/ClientLightFX.cpp create mode 100644 Jack/ObjectDLL/ClientLightFX.h create mode 100644 Jack/ObjectDLL/ClientSFX.cpp create mode 100644 Jack/ObjectDLL/ClientSFX.h create mode 100644 Jack/ObjectDLL/ClientWeaponSFX.cpp create mode 100644 Jack/ObjectDLL/ClientWeaponSFX.h create mode 100644 Jack/ObjectDLL/CollectiveRelationMgr.cpp create mode 100644 Jack/ObjectDLL/CollectiveRelationMgr.h create mode 100644 Jack/ObjectDLL/CommandButeMgr.cpp create mode 100644 Jack/ObjectDLL/CommandButeMgr.h create mode 100644 Jack/ObjectDLL/CommandMgr.cpp create mode 100644 Jack/ObjectDLL/CommandMgr.h create mode 100644 Jack/ObjectDLL/CommandObject.cpp create mode 100644 Jack/ObjectDLL/CommandObject.h create mode 100644 Jack/ObjectDLL/Controller.cpp create mode 100644 Jack/ObjectDLL/Controller.h create mode 100644 Jack/ObjectDLL/CoopMissionMgr.cpp create mode 100644 Jack/ObjectDLL/CoopMissionMgr.h create mode 100644 Jack/ObjectDLL/DEditColors.h create mode 100644 Jack/ObjectDLL/DeathMatchMissionMgr.cpp create mode 100644 Jack/ObjectDLL/DeathMatchMissionMgr.h create mode 100644 Jack/ObjectDLL/DeathScene.cpp create mode 100644 Jack/ObjectDLL/DeathScene.h create mode 100644 Jack/ObjectDLL/DebrisFuncs.cpp create mode 100644 Jack/ObjectDLL/DebrisFuncs.h create mode 100644 Jack/ObjectDLL/DebugLineSystem.cpp create mode 100644 Jack/ObjectDLL/DebugLineSystem.h create mode 100644 Jack/ObjectDLL/DecisionObject.cpp create mode 100644 Jack/ObjectDLL/DecisionObject.h create mode 100644 Jack/ObjectDLL/DemolitionMissionMgr.cpp create mode 100644 Jack/ObjectDLL/DemolitionMissionMgr.h create mode 100644 Jack/ObjectDLL/Destructible.cpp create mode 100644 Jack/ObjectDLL/Destructible.h create mode 100644 Jack/ObjectDLL/DestructibleModel.cpp create mode 100644 Jack/ObjectDLL/DestructibleModel.h create mode 100644 Jack/ObjectDLL/Dialogue.cpp create mode 100644 Jack/ObjectDLL/Dialogue.h create mode 100644 Jack/ObjectDLL/DisplayMeter.cpp create mode 100644 Jack/ObjectDLL/DisplayMeter.h create mode 100644 Jack/ObjectDLL/DisplayTimer.cpp create mode 100644 Jack/ObjectDLL/DisplayTimer.h create mode 100644 Jack/ObjectDLL/DoomsDayDevice.cpp create mode 100644 Jack/ObjectDLL/DoomsDayDevice.h create mode 100644 Jack/ObjectDLL/DoomsDayMissionMgr.cpp create mode 100644 Jack/ObjectDLL/DoomsDayMissionMgr.h create mode 100644 Jack/ObjectDLL/DoomsDayPiece.cpp create mode 100644 Jack/ObjectDLL/DoomsDayPiece.h create mode 100644 Jack/ObjectDLL/Door.cpp create mode 100644 Jack/ObjectDLL/Door.h create mode 100644 Jack/ObjectDLL/DoorKnob.cpp create mode 100644 Jack/ObjectDLL/DoorKnob.h create mode 100644 Jack/ObjectDLL/DynamicOccluderVolume.cpp create mode 100644 Jack/ObjectDLL/DynamicOccluderVolume.h create mode 100644 Jack/ObjectDLL/Editable.cpp create mode 100644 Jack/ObjectDLL/Editable.h create mode 100644 Jack/ObjectDLL/EventCounter.cpp create mode 100644 Jack/ObjectDLL/EventCounter.h create mode 100644 Jack/ObjectDLL/ExitTrigger.cpp create mode 100644 Jack/ObjectDLL/ExitTrigger.h create mode 100644 Jack/ObjectDLL/Explosion.cpp create mode 100644 Jack/ObjectDLL/Explosion.h create mode 100644 Jack/ObjectDLL/Fire.cpp create mode 100644 Jack/ObjectDLL/Fire.h create mode 100644 Jack/ObjectDLL/GadgetTarget.cpp create mode 100644 Jack/ObjectDLL/GadgetTarget.h create mode 100644 Jack/ObjectDLL/GadgetTargetMgr.cpp create mode 100644 Jack/ObjectDLL/GadgetTargetMgr.h create mode 100644 Jack/ObjectDLL/GameBase.cpp create mode 100644 Jack/ObjectDLL/GameBase.h create mode 100644 Jack/ObjectDLL/GameBaseLite.cpp create mode 100644 Jack/ObjectDLL/GameBaseLite.h create mode 100644 Jack/ObjectDLL/GameServerShell.cpp create mode 100644 Jack/ObjectDLL/GameServerShell.h create mode 100644 Jack/ObjectDLL/GameStartPoint.cpp create mode 100644 Jack/ObjectDLL/GameStartPoint.h create mode 100644 Jack/ObjectDLL/GearItems.cpp create mode 100644 Jack/ObjectDLL/GearItems.h create mode 100644 Jack/ObjectDLL/GeneralInventory.h create mode 100644 Jack/ObjectDLL/GlobalServerMgr.cpp create mode 100644 Jack/ObjectDLL/GlobalServerMgr.h create mode 100644 Jack/ObjectDLL/GlobalsInit.cpp create mode 100644 Jack/ObjectDLL/Group.cpp create mode 100644 Jack/ObjectDLL/Group.h create mode 100644 Jack/ObjectDLL/GunMount.cpp create mode 100644 Jack/ObjectDLL/GunMount.h create mode 100644 Jack/ObjectDLL/HHWeaponModel.cpp create mode 100644 Jack/ObjectDLL/HHWeaponModel.h create mode 100644 Jack/ObjectDLL/IHitBoxUser.h create mode 100644 Jack/ObjectDLL/IntelMgr.cpp create mode 100644 Jack/ObjectDLL/IntelMgr.h create mode 100644 Jack/ObjectDLL/Intelligence.cpp create mode 100644 Jack/ObjectDLL/Intelligence.h create mode 100644 Jack/ObjectDLL/InventoryButeMgr.cpp create mode 100644 Jack/ObjectDLL/InventoryButeMgr.h create mode 100644 Jack/ObjectDLL/JumpVolume.cpp create mode 100644 Jack/ObjectDLL/JumpVolume.h create mode 100644 Jack/ObjectDLL/Key.cpp create mode 100644 Jack/ObjectDLL/Key.h create mode 100644 Jack/ObjectDLL/KeyData.cpp create mode 100644 Jack/ObjectDLL/KeyData.h create mode 100644 Jack/ObjectDLL/KeyFramer.cpp create mode 100644 Jack/ObjectDLL/KeyFramer.h create mode 100644 Jack/ObjectDLL/KeyItem.cpp create mode 100644 Jack/ObjectDLL/KeyItem.h create mode 100644 Jack/ObjectDLL/KeyPad.cpp create mode 100644 Jack/ObjectDLL/KeyPad.h create mode 100644 Jack/ObjectDLL/LaserTrigger.cpp create mode 100644 Jack/ObjectDLL/LaserTrigger.h create mode 100644 Jack/ObjectDLL/LightGroup.cpp create mode 100644 Jack/ObjectDLL/LightGroup.h create mode 100644 Jack/ObjectDLL/Lightning.cpp create mode 100644 Jack/ObjectDLL/Lightning.h create mode 100644 Jack/ObjectDLL/LiteObjectMgr.cpp create mode 100644 Jack/ObjectDLL/LiteObjectMgr.h create mode 100644 Jack/ObjectDLL/Lock.cpp create mode 100644 Jack/ObjectDLL/Lock.h create mode 100644 Jack/ObjectDLL/Mine.cpp create mode 100644 Jack/ObjectDLL/Mine.h create mode 100644 Jack/ObjectDLL/ModItem.cpp create mode 100644 Jack/ObjectDLL/ModItem.h create mode 100644 Jack/ObjectDLL/MusicMgr.cpp create mode 100644 Jack/ObjectDLL/MusicMgr.h create mode 100644 Jack/ObjectDLL/NoPlayerTrigger.cpp create mode 100644 Jack/ObjectDLL/NoPlayerTrigger.h create mode 100644 Jack/ObjectDLL/NodeLine.cpp create mode 100644 Jack/ObjectDLL/NodeLine.h create mode 100644 Jack/ObjectDLL/Object.vcproj create mode 100644 Jack/ObjectDLL/Object.vcproj.vspscc create mode 100644 Jack/ObjectDLL/ObjectMsgs.h create mode 100644 Jack/ObjectDLL/ObjectRelationMgr.cpp create mode 100644 Jack/ObjectDLL/ObjectRelationMgr.h create mode 100644 Jack/ObjectDLL/ObjectRemover.cpp create mode 100644 Jack/ObjectDLL/ObjectRemover.h create mode 100644 Jack/ObjectDLL/ObjectTemplateMgr.cpp create mode 100644 Jack/ObjectDLL/ObjectTemplateMgr.h create mode 100644 Jack/ObjectDLL/ObjectiveSprite.cpp create mode 100644 Jack/ObjectDLL/ObjectiveSprite.h create mode 100644 Jack/ObjectDLL/PSets.h create mode 100644 Jack/ObjectDLL/ParticleSystem.cpp create mode 100644 Jack/ObjectDLL/ParticleSystem.h create mode 100644 Jack/ObjectDLL/PickupItem.cpp create mode 100644 Jack/ObjectDLL/PickupItem.h create mode 100644 Jack/ObjectDLL/PlayerButes.h create mode 100644 Jack/ObjectDLL/PlayerLure.cpp create mode 100644 Jack/ObjectDLL/PlayerLure.h create mode 100644 Jack/ObjectDLL/PlayerObj.cpp create mode 100644 Jack/ObjectDLL/PlayerObj.h create mode 100644 Jack/ObjectDLL/PlayerTracker.cpp create mode 100644 Jack/ObjectDLL/PlayerTracker.h create mode 100644 Jack/ObjectDLL/PlayerTrigger.cpp create mode 100644 Jack/ObjectDLL/PlayerTrigger.h create mode 100644 Jack/ObjectDLL/PlayerVehicle.cpp create mode 100644 Jack/ObjectDLL/PlayerVehicle.h create mode 100644 Jack/ObjectDLL/Point.cpp create mode 100644 Jack/ObjectDLL/Point.h create mode 100644 Jack/ObjectDLL/PolyGrid.cpp create mode 100644 Jack/ObjectDLL/PolyGrid.h create mode 100644 Jack/ObjectDLL/PolyGridModifier.cpp create mode 100644 Jack/ObjectDLL/PolyGridModifier.h create mode 100644 Jack/ObjectDLL/PowerArmor.cpp create mode 100644 Jack/ObjectDLL/PowerArmor.h create mode 100644 Jack/ObjectDLL/Projectile.cpp create mode 100644 Jack/ObjectDLL/Projectile.h create mode 100644 Jack/ObjectDLL/ProjectileTypes.cpp create mode 100644 Jack/ObjectDLL/ProjectileTypes.h create mode 100644 Jack/ObjectDLL/Prop.cpp create mode 100644 Jack/ObjectDLL/Prop.h create mode 100644 Jack/ObjectDLL/PropType.cpp create mode 100644 Jack/ObjectDLL/PropType.h create mode 100644 Jack/ObjectDLL/PropTypeMgr.cpp create mode 100644 Jack/ObjectDLL/PropTypeMgr.h create mode 100644 Jack/ObjectDLL/RadarObject.cpp create mode 100644 Jack/ObjectDLL/RadarObject.h create mode 100644 Jack/ObjectDLL/RandomSpawner.cpp create mode 100644 Jack/ObjectDLL/RandomSpawner.h create mode 100644 Jack/ObjectDLL/RelationButeMgr.cpp create mode 100644 Jack/ObjectDLL/RelationButeMgr.h create mode 100644 Jack/ObjectDLL/RelationChangeObserver.h create mode 100644 Jack/ObjectDLL/RelationMgr.cpp create mode 100644 Jack/ObjectDLL/RelationMgr.h create mode 100644 Jack/ObjectDLL/RotatingDoor.cpp create mode 100644 Jack/ObjectDLL/RotatingDoor.h create mode 100644 Jack/ObjectDLL/RotatingSwitch.cpp create mode 100644 Jack/ObjectDLL/RotatingSwitch.h create mode 100644 Jack/ObjectDLL/RotatingWorldModel.cpp create mode 100644 Jack/ObjectDLL/RotatingWorldModel.h create mode 100644 Jack/ObjectDLL/SFXFuncs.cpp create mode 100644 Jack/ObjectDLL/SFXFuncs.h create mode 100644 Jack/ObjectDLL/ScaleSprite.cpp create mode 100644 Jack/ObjectDLL/ScaleSprite.h create mode 100644 Jack/ObjectDLL/Scanner.cpp create mode 100644 Jack/ObjectDLL/Scanner.h create mode 100644 Jack/ObjectDLL/ScatterVolume.cpp create mode 100644 Jack/ObjectDLL/ScatterVolume.h create mode 100644 Jack/ObjectDLL/ScmdServer.cpp create mode 100644 Jack/ObjectDLL/ScmdServer.h create mode 100644 Jack/ObjectDLL/ScreenShake.cpp create mode 100644 Jack/ObjectDLL/ScreenShake.h create mode 100644 Jack/ObjectDLL/SearchLight.cpp create mode 100644 Jack/ObjectDLL/SearchLight.h create mode 100644 Jack/ObjectDLL/SearchProp.cpp create mode 100644 Jack/ObjectDLL/SearchProp.h create mode 100644 Jack/ObjectDLL/Searchable.cpp create mode 100644 Jack/ObjectDLL/Searchable.h create mode 100644 Jack/ObjectDLL/SecurityCamera.cpp create mode 100644 Jack/ObjectDLL/SecurityCamera.h create mode 100644 Jack/ObjectDLL/ServerAssetMgr.cpp create mode 100644 Jack/ObjectDLL/ServerAssetMgr.h create mode 100644 Jack/ObjectDLL/ServerButeMgr.cpp create mode 100644 Jack/ObjectDLL/ServerButeMgr.h create mode 100644 Jack/ObjectDLL/ServerMark.cpp create mode 100644 Jack/ObjectDLL/ServerMark.h create mode 100644 Jack/ObjectDLL/ServerMissionMgr.cpp create mode 100644 Jack/ObjectDLL/ServerMissionMgr.h create mode 100644 Jack/ObjectDLL/ServerMissionSettings.h create mode 100644 Jack/ObjectDLL/ServerRes.h create mode 100644 Jack/ObjectDLL/ServerSaveLoadMgr.cpp create mode 100644 Jack/ObjectDLL/ServerSaveLoadMgr.h create mode 100644 Jack/ObjectDLL/ServerSoundFX.cpp create mode 100644 Jack/ObjectDLL/ServerSoundFX.h create mode 100644 Jack/ObjectDLL/ServerSoundMgr.cpp create mode 100644 Jack/ObjectDLL/ServerSoundMgr.h create mode 100644 Jack/ObjectDLL/ServerSpecialFX.cpp create mode 100644 Jack/ObjectDLL/ServerSpecialFX.h create mode 100644 Jack/ObjectDLL/ServerTrackedNodeContext.cpp create mode 100644 Jack/ObjectDLL/ServerTrackedNodeContext.h create mode 100644 Jack/ObjectDLL/ServerTrackedNodeMgr.cpp create mode 100644 Jack/ObjectDLL/ServerTrackedNodeMgr.h create mode 100644 Jack/ObjectDLL/ServerUtilities.cpp create mode 100644 Jack/ObjectDLL/ServerUtilities.h create mode 100644 Jack/ObjectDLL/SinglePlayerMissionMgr.cpp create mode 100644 Jack/ObjectDLL/SinglePlayerMissionMgr.h create mode 100644 Jack/ObjectDLL/Skills.cpp create mode 100644 Jack/ObjectDLL/Skills.h create mode 100644 Jack/ObjectDLL/SlidingDoor.cpp create mode 100644 Jack/ObjectDLL/SlidingDoor.h create mode 100644 Jack/ObjectDLL/SlidingSwitch.cpp create mode 100644 Jack/ObjectDLL/SlidingSwitch.h create mode 100644 Jack/ObjectDLL/SlidingWorldModel.cpp create mode 100644 Jack/ObjectDLL/SlidingWorldModel.h create mode 100644 Jack/ObjectDLL/SnowVolume.cpp create mode 100644 Jack/ObjectDLL/SnowVolume.h create mode 100644 Jack/ObjectDLL/SoundButeFX.cpp create mode 100644 Jack/ObjectDLL/SoundButeFX.h create mode 100644 Jack/ObjectDLL/Sparam.cpp create mode 100644 Jack/ObjectDLL/Sparam.h create mode 100644 Jack/ObjectDLL/Spawner.cpp create mode 100644 Jack/ObjectDLL/Spawner.h create mode 100644 Jack/ObjectDLL/Speaker.cpp create mode 100644 Jack/ObjectDLL/Speaker.h create mode 100644 Jack/ObjectDLL/SpinningWorldModel.cpp create mode 100644 Jack/ObjectDLL/SpinningWorldModel.h create mode 100644 Jack/ObjectDLL/Sprinkles.cpp create mode 100644 Jack/ObjectDLL/Sprinkles.h create mode 100644 Jack/ObjectDLL/StartupCommand.cpp create mode 100644 Jack/ObjectDLL/StartupCommand.h create mode 100644 Jack/ObjectDLL/Stdafx.cpp create mode 100644 Jack/ObjectDLL/Stdafx.h create mode 100644 Jack/ObjectDLL/Steam.cpp create mode 100644 Jack/ObjectDLL/Steam.h create mode 100644 Jack/ObjectDLL/Switch.cpp create mode 100644 Jack/ObjectDLL/Switch.h create mode 100644 Jack/ObjectDLL/TeamDeathMatchMissionMgr.cpp create mode 100644 Jack/ObjectDLL/TeamDeathMatchMissionMgr.h create mode 100644 Jack/ObjectDLL/TeleportPoint.cpp create mode 100644 Jack/ObjectDLL/TeleportPoint.h create mode 100644 Jack/ObjectDLL/TextureFX.cpp create mode 100644 Jack/ObjectDLL/TextureFX.h create mode 100644 Jack/ObjectDLL/TransitionAggregate.cpp create mode 100644 Jack/ObjectDLL/TransitionAggregate.h create mode 100644 Jack/ObjectDLL/TransitionArea.cpp create mode 100644 Jack/ObjectDLL/TransitionArea.h create mode 100644 Jack/ObjectDLL/TransitionMgr.cpp create mode 100644 Jack/ObjectDLL/TransitionMgr.h create mode 100644 Jack/ObjectDLL/Trigger.cpp create mode 100644 Jack/ObjectDLL/Trigger.h create mode 100644 Jack/ObjectDLL/VolumeBrush.cpp create mode 100644 Jack/ObjectDLL/VolumeBrush.h create mode 100644 Jack/ObjectDLL/VolumeBrushTypes.cpp create mode 100644 Jack/ObjectDLL/VolumeBrushTypes.h create mode 100644 Jack/ObjectDLL/VolumeEffect.cpp create mode 100644 Jack/ObjectDLL/VolumeEffect.h create mode 100644 Jack/ObjectDLL/Weapon.cpp create mode 100644 Jack/ObjectDLL/Weapon.h create mode 100644 Jack/ObjectDLL/WeaponFireInfo.h create mode 100644 Jack/ObjectDLL/WeaponItems.cpp create mode 100644 Jack/ObjectDLL/WeaponItems.h create mode 100644 Jack/ObjectDLL/Weapons.cpp create mode 100644 Jack/ObjectDLL/Weapons.h create mode 100644 Jack/ObjectDLL/WorldModel.cpp create mode 100644 Jack/ObjectDLL/WorldModel.h create mode 100644 Jack/ObjectDLL/WorldModelDebris.cpp create mode 100644 Jack/ObjectDLL/WorldModelDebris.h create mode 100644 Jack/ObjectDLL/WorldProperties.cpp create mode 100644 Jack/ObjectDLL/WorldProperties.h create mode 100644 Jack/ObjectDLL/bison.hairy create mode 100644 Jack/ObjectDLL/bison.simple create mode 100644 Jack/ServerApp/ScmdConsoleDriver_ServerApp.cpp create mode 100644 Jack/ServerApp/ScmdConsoleDriver_ServerApp.h create mode 100644 Jack/ServerApp/SelectConfigDlg.cpp create mode 100644 Jack/ServerApp/SelectConfigDlg.h create mode 100644 Jack/ServerApp/ServerApp.cpp create mode 100644 Jack/ServerApp/ServerApp.h create mode 100644 Jack/ServerApp/ServerApp.vcproj create mode 100644 Jack/ServerApp/ServerApp.vcproj.vspscc create mode 100644 Jack/ServerApp/ServerDlg.cpp create mode 100644 Jack/ServerApp/ServerDlg.h create mode 100644 Jack/ServerApp/Splash.cpp create mode 100644 Jack/ServerApp/Splash.h create mode 100644 Jack/ServerApp/StdAfx.cpp create mode 100644 Jack/ServerApp/StdAfx.h create mode 100644 Jack/ServerApp/res/Lang/DE/ServerApp.rc create mode 100644 Jack/ServerApp/res/Lang/DE/splash.bmp create mode 100644 Jack/ServerApp/res/Lang/EN/ServerApp.rc create mode 100644 Jack/ServerApp/res/Lang/EN/splash.bmp create mode 100644 Jack/ServerApp/res/Lang/EN/splash.psd create mode 100644 Jack/ServerApp/res/Lang/ES/ServerApp.rc create mode 100644 Jack/ServerApp/res/Lang/ES/splash.bmp create mode 100644 Jack/ServerApp/res/Lang/FR/ServerApp.rc create mode 100644 Jack/ServerApp/res/Lang/FR/splash.bmp create mode 100644 Jack/ServerApp/res/Lang/IT/ServerApp.rc create mode 100644 Jack/ServerApp/res/Lang/IT/splash.bmp create mode 100644 Jack/ServerApp/res/ServerApp.ico create mode 100644 Jack/ServerApp/res/ServerApp.rc2 create mode 100644 Jack/ServerApp/res/selected.ico create mode 100644 Jack/ServerApp/resource.h create mode 100644 Jack/ServerRes/TO2/MAIN.CPP create mode 100644 Jack/ServerRes/TO2/ServerRes.h create mode 100644 Jack/ServerRes/TO2/ServerRes.rc create mode 100644 Jack/ServerRes/TO2/ServerRes.vcproj create mode 100644 Jack/ServerRes/TO2/ServerRes.vcproj.vspscc create mode 100644 Jack/Shared/ActivateTypeMgr.cpp create mode 100644 Jack/Shared/ActivateTypeMgr.h create mode 100644 Jack/Shared/ActivationData.h create mode 100644 Jack/Shared/Animator.cpp create mode 100644 Jack/Shared/Animator.h create mode 100644 Jack/Shared/AssertMgr.cpp create mode 100644 Jack/Shared/AssertMgr.h create mode 100644 Jack/Shared/AttachButeMgr.cpp create mode 100644 Jack/Shared/AttachButeMgr.h create mode 100644 Jack/Shared/AutoMessage.h create mode 100644 Jack/Shared/BankedList.h create mode 100644 Jack/Shared/BankedList_impl.h create mode 100644 Jack/Shared/BaseFx.h create mode 100644 Jack/Shared/BuildDefines.h create mode 100644 Jack/Shared/ButeListReader.cpp create mode 100644 Jack/Shared/ButeListReader.h create mode 100644 Jack/Shared/CRC32.cpp create mode 100644 Jack/Shared/CRC32.h create mode 100644 Jack/Shared/CharacterAlignment.cpp create mode 100644 Jack/Shared/CharacterAlignment.h create mode 100644 Jack/Shared/ChassisButeMgr.cpp create mode 100644 Jack/Shared/ChassisButeMgr.h create mode 100644 Jack/Shared/CheatDefs.h create mode 100644 Jack/Shared/ClientServerShared.cpp create mode 100644 Jack/Shared/ClientServerShared.h create mode 100644 Jack/Shared/CommandIDs.h create mode 100644 Jack/Shared/CommonUtilities.cpp create mode 100644 Jack/Shared/CommonUtilities.h create mode 100644 Jack/Shared/ContainerCodes.h create mode 100644 Jack/Shared/Creator.h create mode 100644 Jack/Shared/DamageTypes.cpp create mode 100644 Jack/Shared/DamageTypes.h create mode 100644 Jack/Shared/DamageTypesEnum.h create mode 100644 Jack/Shared/DebrisMgr.cpp create mode 100644 Jack/Shared/DebrisMgr.h create mode 100644 Jack/Shared/DebugLine.cpp create mode 100644 Jack/Shared/DebugLine.h create mode 100644 Jack/Shared/DebugMgr.cpp create mode 100644 Jack/Shared/DebugMgr.h create mode 100644 Jack/Shared/DebugNew.cpp create mode 100644 Jack/Shared/DebugNew.h create mode 100644 Jack/Shared/DebugNew_impl.h create mode 100644 Jack/Shared/FXButeMgr.cpp create mode 100644 Jack/Shared/FXButeMgr.h create mode 100644 Jack/Shared/FXProp.h create mode 100644 Jack/Shared/FXStructs.cpp create mode 100644 Jack/Shared/FXStructs.h create mode 100644 Jack/Shared/Factory.h create mode 100644 Jack/Shared/FastHeap.h create mode 100644 Jack/Shared/FastList.h create mode 100644 Jack/Shared/FastStack.h create mode 100644 Jack/Shared/FxDefs.h create mode 100644 Jack/Shared/FxFlags.h create mode 100644 Jack/Shared/GadgetTargetTypes.h create mode 100644 Jack/Shared/GameAlloc.cpp create mode 100644 Jack/Shared/GameButeMgr.cpp create mode 100644 Jack/Shared/GameButeMgr.h create mode 100644 Jack/Shared/GibTypes.h create mode 100644 Jack/Shared/GlobalMgr.cpp create mode 100644 Jack/Shared/GlobalMgr.h create mode 100644 Jack/Shared/Globals.h create mode 100644 Jack/Shared/HierarchicalButeMgr.h create mode 100644 Jack/Shared/IDList.h create mode 100644 Jack/Shared/ImpactType.h create mode 100644 Jack/Shared/KeyMgr.cpp create mode 100644 Jack/Shared/KeyMgr.h create mode 100644 Jack/Shared/LTPoly.h create mode 100644 Jack/Shared/Lang/DE/ResShared.rc create mode 100644 Jack/Shared/Lang/EN/ResShared.rc create mode 100644 Jack/Shared/Lang/ES/ResShared.rc create mode 100644 Jack/Shared/Lang/FR/ResShared.rc create mode 100644 Jack/Shared/Lang/IT/ResShared.rc create mode 100644 Jack/Shared/MissionButeMgr.cpp create mode 100644 Jack/Shared/MissionButeMgr.h create mode 100644 Jack/Shared/ModelButeMgr.cpp create mode 100644 Jack/Shared/ModelButeMgr.h create mode 100644 Jack/Shared/MsgIDs.h create mode 100644 Jack/Shared/NetDefs.cpp create mode 100644 Jack/Shared/NetDefs.h create mode 100644 Jack/Shared/ParsedMsg.cpp create mode 100644 Jack/Shared/ParsedMsg.h create mode 100644 Jack/Shared/PlayerShared.h create mode 100644 Jack/Shared/ProfileUtils.cpp create mode 100644 Jack/Shared/ProfileUtils.h create mode 100644 Jack/Shared/RadarTypeMgr.cpp create mode 100644 Jack/Shared/RadarTypeMgr.h create mode 100644 Jack/Shared/RelationTraitTypeEnums.h create mode 100644 Jack/Shared/ResShared.h create mode 100644 Jack/Shared/SFXMsgIds.h create mode 100644 Jack/Shared/SaveLoadMgr.cpp create mode 100644 Jack/Shared/SaveLoadMgr.h create mode 100644 Jack/Shared/ScmdConsole.cpp create mode 100644 Jack/Shared/ScmdConsole.h create mode 100644 Jack/Shared/ScmdShared.h create mode 100644 Jack/Shared/SearchItemMgr.cpp create mode 100644 Jack/Shared/SearchItemMgr.h create mode 100644 Jack/Shared/SharedBaseFXStructs.h create mode 100644 Jack/Shared/SharedFXStructs.cpp create mode 100644 Jack/Shared/SharedFXStructs.h create mode 100644 Jack/Shared/SharedMission.cpp create mode 100644 Jack/Shared/SharedMission.h create mode 100644 Jack/Shared/SharedMovement.cpp create mode 100644 Jack/Shared/SharedMovement.h create mode 100644 Jack/Shared/SharedScoring.cpp create mode 100644 Jack/Shared/SharedScoring.h create mode 100644 Jack/Shared/SkillsButeMgr.cpp create mode 100644 Jack/Shared/SkillsButeMgr.h create mode 100644 Jack/Shared/SoundButeMgr.cpp create mode 100644 Jack/Shared/SoundButeMgr.h create mode 100644 Jack/Shared/SoundFilterMgr.cpp create mode 100644 Jack/Shared/SoundFilterMgr.h create mode 100644 Jack/Shared/SoundMgr.cpp create mode 100644 Jack/Shared/SoundMgr.h create mode 100644 Jack/Shared/SoundTypes.h create mode 100644 Jack/Shared/StandardCreator.h create mode 100644 Jack/Shared/SurfaceDefs.h create mode 100644 Jack/Shared/SurfaceFunctions.cpp create mode 100644 Jack/Shared/SurfaceFunctions.h create mode 100644 Jack/Shared/SurfaceMgr.cpp create mode 100644 Jack/Shared/SurfaceMgr.h create mode 100644 Jack/Shared/TO2MissionButeMgr.cpp create mode 100644 Jack/Shared/TO2MissionButeMgr.h create mode 100644 Jack/Shared/TeamMgr.cpp create mode 100644 Jack/Shared/TeamMgr.h create mode 100644 Jack/Shared/TemplateList.cpp create mode 100644 Jack/Shared/TemplateList.h create mode 100644 Jack/Shared/Timer.h create mode 100644 Jack/Shared/TrackedNode.cpp create mode 100644 Jack/Shared/TrackedNode.h create mode 100644 Jack/Shared/TrackedNodeContext.cpp create mode 100644 Jack/Shared/TrackedNodeContext.h create mode 100644 Jack/Shared/TrackedNodeControlFn.cpp create mode 100644 Jack/Shared/TrackedNodeMgr.cpp create mode 100644 Jack/Shared/TrackedNodeMgr.h create mode 100644 Jack/Shared/TriggerTypeMgr.cpp create mode 100644 Jack/Shared/TriggerTypeMgr.h create mode 100644 Jack/Shared/UberAssert.cpp create mode 100644 Jack/Shared/UberAssert.h create mode 100644 Jack/Shared/VehicleButeMgr.cpp create mode 100644 Jack/Shared/VehicleButeMgr.h create mode 100644 Jack/Shared/VersionMgr.cpp create mode 100644 Jack/Shared/VersionMgr.h create mode 100644 Jack/Shared/WaveFn.cpp create mode 100644 Jack/Shared/WaveFn.h create mode 100644 Jack/Shared/WeaponFXTypes.h create mode 100644 Jack/Shared/WeaponMgr.cpp create mode 100644 Jack/Shared/WeaponMgr.h create mode 100644 Jack/Shared/WinUtil.cpp create mode 100644 Jack/Shared/WinUtil.h create mode 100644 Jack/Shared/linklist.h create mode 100644 Jack/Shared/stacktrace.cpp create mode 100644 Jack/Shared/stacktrace.h create mode 100644 Jack/Shared/unistd.h diff --git a/Jack/ClientFxDLL/BaseFx.cpp b/Jack/ClientFxDLL/BaseFx.cpp new file mode 100644 index 00000000..e6888b84 --- /dev/null +++ b/Jack/ClientFxDLL/BaseFx.cpp @@ -0,0 +1,572 @@ +#include "stdafx.h" +#include "BaseFx.h" +#include "ClientFX.h" + +CBaseFXProps::CBaseFXProps() : + m_pScaleKeys (NULL), + m_nNumScaleKeys (0), + m_pColorKeys (NULL), + m_nNumColorKeys (0), + m_nFollowType (UP_FIXED), + m_nMenuLayer (0) +{ + m_szAttach[0] = '\0'; +} + +CBaseFXProps::~CBaseFXProps() +{ + debug_deletea( m_pColorKeys ); + debug_deletea( m_pScaleKeys ); +} + +//sets up parameters for the effects lifetime +void CBaseFXProps::SetLifetime(float fLifespan, uint32 nNumRepeats) +{ + m_tmLifespan = fLifespan; + m_tmActualEnd = fLifespan * nNumRepeats; +} + + +//this will take a list of properties and convert it to internal values +bool CBaseFXProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + //counts of how many of each key + uint32 nNumColorKeys = 0; + uint32 nNumScaleKeys = 0; + + //go through the property list and parse in all the known variables and + //count up how many of each key type we have + uint32 nCurrProp = 0; + + for(nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, FXPROP_UPDATEPOS )) + { + m_nFollowType = (uint32)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_ATTACHNAME )) + { + fxProp.GetStringVal( m_szAttach ); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_OFFSET )) + { + m_vOffset = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_ROTATEADD )) + { + m_vRotAdd = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_MENULAYER )) + { + m_nMenuLayer = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "Ck" )) + { + nNumColorKeys++; + } + else if( !_stricmp( fxProp.m_sName, "Sk" )) + { + nNumScaleKeys++; + } + } + + //allocate our arrays of key types + debug_deletea( m_pColorKeys ); + m_pColorKeys = debug_newa( FX_COLOURKEY, nNumColorKeys ); + m_nNumColorKeys = 0; + + debug_deletea( m_pScaleKeys ); + m_pScaleKeys = debug_newa( FX_SCALEKEY, nNumScaleKeys ); + m_nNumScaleKeys = 0; + + //now actually read in each key type + for(nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Ck" )) + { + // Add this key to the list of keys + + FX_COLOURKEY fxClrKey; + + fxClrKey.m_tmKey = fxProp.m_data.m_clrKey.m_tmKey; + fxClrKey.m_red = (float) (fxProp.m_data.m_clrKey.m_dwCol & 0x000000FF); + fxClrKey.m_green = (float)((fxProp.m_data.m_clrKey.m_dwCol & 0x0000FF00) >> 8); + fxClrKey.m_blue = (float)((fxProp.m_data.m_clrKey.m_dwCol & 0x00FF0000) >> 16); + fxClrKey.m_alpha = (float)((fxProp.m_data.m_clrKey.m_dwCol & 0xFF000000) >> 24); + + if(m_pColorKeys) + m_pColorKeys[m_nNumColorKeys++] = fxClrKey; + } + else if( !_stricmp( fxProp.m_sName, "Sk" )) + { + // Add this key to the list of keys + + FX_SCALEKEY fxSclKey; + + fxSclKey.m_tmKey = fxProp.m_data.m_fVec4[0]; + fxSclKey.m_scale = fxProp.m_data.m_fVec4[1]; + + if(m_pScaleKeys) + m_pScaleKeys[m_nNumScaleKeys++] = fxSclKey; + } + } + + return true; +} + + +CBaseFX::CBaseFX( FXType nType) : + m_pLTClient (NULL), + m_hObject (NULL), + m_hParent (NULL), + m_dwState (0), + m_nFXType (nType), + m_bUpdateColour (true), + m_bUpdateScale (true), + m_nCurrScaleKey (0), + m_tmElapsed (0), + m_pProps (NULL) +{ +} + + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises base class CBaseFX +// +//------------------------------------------------------------------ + +bool CBaseFX::Init(ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps) +{ + //make sure we have properties + if(!pProps) + return false; + + //save our prop pointer + m_pProps = pProps; + + // Store the client LT pointers + + m_pLTClient = pLTClient; + + // Store the base data + + m_dwID = pData->m_dwID; + m_hParent = pData->m_hParent; + m_hCamera = pData->m_hCamera; + + if (m_hParent) + { + m_pLTClient->GetObjectPos(m_hParent, &m_vCreatePos); + m_pLTClient->GetObjectRotation(m_hParent, &m_rCreateRot); + } + else + { + m_vCreatePos = pData->m_vPos; + m_rCreateRot = pData->m_rRot; + } + + m_nCurrScaleKey = 0; + m_nCurrColorKey = 0; + m_vPos = m_vCreatePos + GetProps()->m_vOffset; + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Render() +// +// PURPOSE : This will determine whether or not the effect needs updating +// +//------------------------------------------------------------------ + +bool CBaseFX::Render() +{ + if(!g_bAppFocus || IsSuspended() || !IsActive()) + return false; + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : SuspendedUpdate() +// +// PURPOSE : This version of update is called while the effect is suspended so that it can do +// things like smooth shutdown depending upon the effect type +// +//------------------------------------------------------------------ +bool CBaseFX::SuspendedUpdate(float tmFrameTime) +{ + if(!IsActive()) + return false; + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Called to update the effect. Returns whether or not the effect should update +// +//------------------------------------------------------------------ + +bool CBaseFX::Update(float tmFrameTime) +{ + if (IsSuspended() || !IsActive()) + { + return false; + } + + m_tmElapsed += tmFrameTime; + + LTRotation rRot; + m_pLTClient->GetObjectRotation(m_hObject, &rRot); + + // We are in our pre update + + if (m_hParent) + { + // Compute the aligned offset + + LTVector vAlignedOffset; + + LTVector vRight, vUp, vForward; + + m_pLTClient->GetObjectRotation(m_hParent, &rRot); + + ILTModel *pModelLT = m_pLTClient->GetModelLT(); + + vAlignedOffset = (rRot.Right() * GetProps()->m_vOffset.x) + + (rRot.Up() * GetProps()->m_vOffset.y) + + (rRot.Forward() * GetProps()->m_vOffset.z); + + // Depending on the Update type find the position we should be at... + + switch (GetProps()->m_nFollowType) + { + case UP_FIXED : + { + // Keep us in place + + m_vPos = m_vCreatePos + vAlignedOffset; + } + break; + + case UP_FOLLOW : + { + // Move with our parent + + m_pLTClient->GetObjectPos(m_hParent, &m_vPos); + m_vPos += vAlignedOffset; + } + break; + + case UP_PLAYERVIEW : + { + // Let game code set our position. + } + break; + + case UP_NODEATTACH : + { + // Move with our attach node if one was specified... + + LTransform lTrans; + HMODELNODE hNode; + + if( LT_OK == pModelLT->GetNode( m_hParent, GetProps()->m_szAttach, hNode ) ) + { + if( LT_OK == pModelLT->GetNodeTransform( m_hParent, hNode, lTrans, LTTRUE ) ) + { + m_vPos = lTrans.m_Pos + vAlignedOffset; + rRot = lTrans.m_Rot; + } + } + } + break; + + case UP_SOCKETATTACH : + { + // Move with our attach socket if one was specified... + + LTransform lTrans; + HMODELSOCKET hSocket; + + if( LT_OK == pModelLT->GetSocket( m_hParent, GetProps()->m_szAttach, hSocket ) ) + { + if( LT_OK == pModelLT->GetSocketTransform( m_hParent, hSocket, lTrans, LTTRUE ) ) + { + m_vPos = lTrans.m_Pos + vAlignedOffset; + rRot = lTrans.m_Rot; + } + } + else + { + if( GetAttachmentSocketTransform( m_hParent, GetProps()->m_szAttach, lTrans.m_Pos, lTrans.m_Rot )) + { + m_vPos = lTrans.m_Pos + vAlignedOffset; + rRot = lTrans.m_Rot; + } + } + } + break; + + case UP_PVNODEATTACH : + { + // Move with our attach node if one was specified... + + LTransform lTrans; + HMODELNODE hNode; + + if( LT_OK == pModelLT->GetNode( m_hParent, GetProps()->m_szAttach, hNode ) ) + { + if( LT_OK == pModelLT->GetNodeTransform( m_hParent, hNode, lTrans, LTFALSE ) ) + { + //grab the position of the object to compensate for offset + LTVector vObjectPos; + m_pLTClient->GetObjectPos(m_hParent, &vObjectPos); + + m_vPos = lTrans.m_Pos + vAlignedOffset + vObjectPos; + rRot = lTrans.m_Rot; + + } + } + } + break; + + case UP_PVSOCKETATTACH: + { + // Move with our attach socket if one was specified... + + LTransform lTrans; + HMODELSOCKET hSocket; + + if( LT_OK == pModelLT->GetSocket( m_hParent, GetProps()->m_szAttach, hSocket ) ) + { + if( LT_OK == pModelLT->GetSocketTransform( m_hParent, hSocket, lTrans, LTFALSE ) ) + { + //grab the position of the object to compensate for offset + LTVector vObjectPos; + m_pLTClient->GetObjectPos(m_hParent, &vObjectPos); + + m_vPos = lTrans.m_Pos + vAlignedOffset + vObjectPos; + rRot = lTrans.m_Rot; + } + } + } + break; + + default: + ASSERT( false ); // Check the property values cause if we got here, "UpdatePos" has to be f'd up!! + break; + } + } + + // Move object to correct position + + LTVector vReal = m_vPos; + + LTVector vCurPos; + m_pLTClient->GetObjectPos( m_hObject, &vCurPos ); + if( vCurPos != vReal ) + m_pLTClient->SetObjectPos(m_hObject, &vReal ); + + LTRotation rCurRot; + m_pLTClient->GetObjectRotation( m_hObject, &rCurRot ); + if( rCurRot != rRot ) + m_pLTClient->SetObjectRotation( m_hObject, &rRot ); + + // Update the colour + + if (m_bUpdateColour && GetProps()->m_pColorKeys) + { + CalcColour(m_tmElapsed, GetLifespan(), &m_red, &m_green, &m_blue, &m_alpha, &m_nCurrColorKey); + m_pLTClient->SetObjectColor(m_hObject, m_red, m_green, m_blue, m_alpha); + } + + // Compute the current scale based on keyframes and update the + // keyframe pointer + if (m_bUpdateScale && GetProps()->m_pScaleKeys) + { + CalcScale(m_tmElapsed, GetLifespan(), &m_scale, &m_nCurrScaleKey); + + uint32 dwObjectType; + m_pLTClient->Common()->GetObjectType(m_hObject, &dwObjectType); + + if ((dwObjectType == OT_MODEL) || (dwObjectType == OT_SPRITE)) + { + LTVector vScale; + vScale.Init(m_scale, m_scale, m_scale); + + LTVector vCurScale; + m_pLTClient->GetObjectScale( m_hObject, &vCurScale ); + if( vCurScale != vScale ) + m_pLTClient->SetObjectScale(m_hObject, &vScale); + } + } + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CalcColour() +// +// PURPOSE : Calculates the current colour based on parms +// +//------------------------------------------------------------------ + +void CBaseFX::CalcColour(float tmElapsed, float tmLifespan, float *pRed, float *pGreen, float *pBlue, float *pAlpha, uint32* pKeyHint) +{ + float tmActual = (tmElapsed / tmLifespan); + tmActual = (float)fmod(tmActual, 1.0f); + + uint32 nCurrColour = 0; + + FX_COLOURKEY* pKeys = GetProps()->m_pColorKeys; + uint32 nNumKeys = GetProps()->m_nNumColorKeys; + + //see if we should use the specified hint if it is provided (this saves us from having + //to run through a lot of keys to get up to that point + if(pKeyHint && (pKeys[*pKeyHint].m_tmKey < tmActual)) + nCurrColour = *pKeyHint; + + + // Locate the keyframe + for (; nCurrColour + 1 < nNumKeys; nCurrColour++) + { + FX_COLOURKEY& endKey = pKeys[nCurrColour + 1]; + + if (tmActual < endKey.m_tmKey) + { + FX_COLOURKEY& startKey = pKeys[nCurrColour]; + + // Use this and the previous key to compute the colour + + float tmDist = endKey.m_tmKey - startKey.m_tmKey; + + if (tmDist > 0.0f) + { + float ratio = (tmActual - startKey.m_tmKey) / tmDist; + + *pRed = (startKey.m_red + ((endKey.m_red - startKey.m_red) * ratio)) / 255.0f; + *pGreen = (startKey.m_green + ((endKey.m_green - startKey.m_green) * ratio)) / 255.0f; + *pBlue = (startKey.m_blue + ((endKey.m_blue - startKey.m_blue) * ratio)) / 255.0f; + *pAlpha = (startKey.m_alpha + (endKey.m_alpha - startKey.m_alpha) * ratio) / 255.0f; + } + else + { + *pAlpha = endKey.m_red / 255.0f; + *pGreen = endKey.m_green / 255.0f; + *pBlue = endKey.m_blue / 255.0f; + *pAlpha = endKey.m_alpha / 255.0f; + } + + //invert the alpha + *pAlpha = 1.0f - *pAlpha; + + //all done calculating colors, might as well bail + break; + } + } + + //save the hint back out + if(pKeyHint) + *pKeyHint = nCurrColour; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CalcScale() +// +// PURPOSE : Calulates object scale +// +//------------------------------------------------------------------ + +void CBaseFX::CalcScale(float tmElapsed, float tmLifespan, float *pScale, uint32* pKeyHint) +{ + float tmActual = (tmElapsed / tmLifespan); + tmActual = (float)fmod(tmActual, 1.0f); + + uint32 nCurrScaleKey = 0; + + FX_SCALEKEY* pKeys = GetProps()->m_pScaleKeys; + uint32 nNumKeys = GetProps()->m_nNumScaleKeys; + + //see if we should use the specified hint if it is provided (this saves us from having + //to run through a lot of keys to get up to that point + if(pKeyHint && (pKeys[*pKeyHint].m_tmKey < tmActual)) + nCurrScaleKey = *pKeyHint; + + // Locate the keyframe + for (; nCurrScaleKey + 1 < nNumKeys; nCurrScaleKey++) + { + FX_SCALEKEY& endKey = pKeys[nCurrScaleKey + 1]; + + if (tmActual < endKey.m_tmKey) + { + FX_SCALEKEY& startKey = pKeys[nCurrScaleKey]; + + // Use this and the previous key to compute the colour + + float tmDist = endKey.m_tmKey - startKey.m_tmKey; + + if (tmDist > 0.0f) + { + float rat = (endKey.m_scale - startKey.m_scale) / tmDist; + float tmKey = tmActual - startKey.m_tmKey; + + *pScale = startKey.m_scale + (rat * tmKey); + } + else + { + *pScale = startKey.m_scale; + } + + //got the scale, bail + break; + } + } + + //save the hint back out + if(pKeyHint) + *pKeyHint = nCurrScaleKey; + +} + + +void CBaseFX::Pause(bool bPause) +{ + if(m_hObject && m_pLTClient) + { + m_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, (bPause) ? FLAG_PAUSED : 0, FLAG_PAUSED); + } +} + + +void CBaseFX::CreateDummyObject() +{ + ObjectCreateStruct ocs; + + LTVector vScale; + vScale.x = 1.0f; + vScale.y = 1.0f; + vScale.z = 1.0f; + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Pos = m_vCreatePos; + ocs.m_Rotation = m_rCreateRot; + ocs.m_Scale = vScale; + + if (!m_hObject) m_hObject = m_pLTClient->CreateObject(&ocs); +} diff --git a/Jack/ClientFxDLL/ClientFxDLL.vcproj b/Jack/ClientFxDLL/ClientFxDLL.vcproj new file mode 100644 index 00000000..31971bf9 --- /dev/null +++ b/Jack/ClientFxDLL/ClientFxDLL.vcproj @@ -0,0 +1,473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jack/ClientFxDLL/ClientFxDLL.vcproj.vspscc b/Jack/ClientFxDLL/ClientFxDLL.vcproj.vspscc new file mode 100644 index 00000000..d31d7b48 --- /dev/null +++ b/Jack/ClientFxDLL/ClientFxDLL.vcproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "file:C:\\proj\\to2\\source\\Game\\ClientFxDLL\\ClientFxDLL.vcproj" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Jack/ClientFxDLL/CreateFX.cpp b/Jack/ClientFxDLL/CreateFX.cpp new file mode 100644 index 00000000..4d40b50e --- /dev/null +++ b/Jack/ClientFxDLL/CreateFX.cpp @@ -0,0 +1,146 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CreateFX.cpp +// +// PURPOSE : The ActiveWorldModel object +// +// CREATED : 7/27/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "fxflags.h" + #include "CreateFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCreateProps::CCreateProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CCreateProps::CCreateProps() : + m_dwFXFlags ( 0 ) +{ + m_szFXName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamJitterProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CCreateProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "FXName" )) + { + fxProp.GetStringVal( m_szFXName ); + } + else if( !_stricmp( fxProp.m_sName, "Loop" )) + { + if( fxProp.GetComboVal() ) + m_dwFXFlags |= FXFLAG_LOOP; + } + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCreateFX::CCreateFX +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CCreateFX::CCreateFX( ) +: CBaseFX ( CBaseFX::eCreateFX ) +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCreateFX::~CCreateFX +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CCreateFX::~CCreateFX( ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCreateFX::Init +// +// PURPOSE: Initialises class CCreateFX +// +// NOTE: Fill the FX_BASEDATA struct out with the properties for +// creating a whole new fx in the ClientFXMgr and return false +// so this fx will get deleted and the new one will get created. +// +// ----------------------------------------------------------------------- // + +bool CCreateFX::Init( ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps ) +{ + // Perform base class initialisation + + if( !CBaseFX::Init( pLTClient, pData, pProps ) ) + return false; + + // Set the new FX name to the node so we can use it when we create the new FX + + strcpy( pData->m_sNode, GetProps()->m_szFXName ); + pData->m_dwFlags = GetProps()->m_dwFXFlags; + pData->m_vPos = m_vCreatePos; + pData->m_rRot = m_rCreateRot; + + // Always return false from this FX! + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxGetCreateProps +// +// PURPOSE: Returns a list of properties for this FX +// +// ----------------------------------------------------------------------- // + +void fxGetCreateProps(CFastList *pList) +{ + FX_PROP fxProp; + + fxProp.String( "FXName", "" ); + pList->AddTail(fxProp); + + fxProp.Combo( "Loop", "0,No,Yes" ); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/CreateFX.h b/Jack/ClientFxDLL/CreateFX.h new file mode 100644 index 00000000..926205a6 --- /dev/null +++ b/Jack/ClientFxDLL/CreateFX.h @@ -0,0 +1,54 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CreateFX.h +// +// PURPOSE : This FX is used to dynamicly create another FX within a Group +// +// CREATED : 7/27/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CREATEFX_H__ +#define __CREATEFX_H__ + +// +// Includes... +// + + #include "basefx.h" + #include "ClientFX.h" + + class CCreateProps : public CBaseFXProps + { + public: + + CCreateProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_szFXName[32]; + uint32 m_dwFXFlags; + }; + + class CCreateFX : public CBaseFX + { + private: // Members... + + const CCreateProps* GetProps() { return (const CCreateProps*)m_pProps; } + + + + public: // Methods... + + CCreateFX( ); + ~CCreateFX( ); + + bool Init( ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps ); + bool Update( float tmCur ) { return false; } + void Term( void ) { }; + }; + +#endif // __CREATEFX_H__ \ No newline at end of file diff --git a/Jack/ClientFxDLL/FlareSpriteFX.cpp b/Jack/ClientFxDLL/FlareSpriteFX.cpp new file mode 100644 index 00000000..a1ea9fde --- /dev/null +++ b/Jack/ClientFxDLL/FlareSpriteFX.cpp @@ -0,0 +1,381 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FlareSpriteFX.cpp +// +// PURPOSE : This FX is used as a blinding flare +// +// CREATED : 8/01/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "ClientFX.h" + #include "FlareSpriteFX.h" + #include "ClientServerShared.h" + +void fxGetSpriteProps(CFastList *pList); +extern HOBJECT g_hPlayer; + + +//Function to handle filtering of the intersect segment calls needed by the flare sprite +inline bool FlareSpriteListFilterFn(HOBJECT hTest, void *pUserData) +{ + // Check for the object type. We only want to be blocked by world models since + //otherwise models will cause us to flicker and we can get hit by lots of other items + uint32 nObjType; + if(g_pLTClient->Common()->GetObjectType(hTest, &nObjType) != LT_OK) + return false; + + if(nObjType != OT_WORLDMODEL) + return false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteProps::CFlareSpriteProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CFlareSpriteProps::CFlareSpriteProps() : + m_fMinAngle ( 0.0f ), + m_bUseCameraAngle ( LTTRUE ), + m_fMinAlpha ( 0.0f ), + m_fMaxAlpha ( 0.0f ), + m_fMinScale ( 0.0f ), + m_fMaxScale ( 10.0f ), + m_fScaleRange ( 0.0f ), + m_fBlindSprAngle ( 0.0f ), + m_fBlindCamAngle ( 0.0f ), + m_bBlindingFlare ( LTFALSE ), + m_fBlindMaxScale ( 10.0f ) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CFlareSpriteProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CSpriteProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "MinAngle" )) + { + m_fMinAngle = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "ObjectAngle" )) + { + m_bUseCameraAngle = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinAlpha" )) + { + m_fMinAlpha = LTCLAMP( fxProp.GetFloatVal(), 0.0f, 1.0f ); + } + else if( !_stricmp( fxProp.m_sName, "MaxAlpha" )) + { + m_fMaxAlpha = LTCLAMP( fxProp.GetFloatVal(), 0.0f, 1.0f ); + } + else if( !_stricmp( fxProp.m_sName, "MinScale" )) + { + m_fMinScale = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxScale" )) + { + m_fMaxScale = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlindObjectAngle" )) + { + m_bUseCamBlindAngle = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlindSpriteAngle" )) + { + m_fBlindSprAngle = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlindCameraAngle" )) + { + m_fBlindCamAngle = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlindMaxScale" )) + { + m_fBlindMaxScale = fxProp.GetFloatVal(); + } + } + + if( m_fMinAlpha > m_fMaxAlpha ) + { + m_fMinAlpha = 0.0f; + m_fMaxAlpha = 1.0f; + } + + if( m_fMinScale > m_fMaxScale ) + { + m_fMinScale = m_fMaxScale; + } + + m_fScaleRange = m_fMaxScale - m_fMinScale; + + if( (m_fBlindSprAngle > MATH_EPSILON) || (m_fBlindCamAngle > MATH_EPSILON) ) + m_bBlindingFlare = LTTRUE; + + if( m_fBlindMaxScale < m_fMaxScale ) + m_fBlindMaxScale = m_fMaxScale; + + //force rotation on this sprite + m_bRotate = TRUE; + + //the parent sprite should NEVER be doing a ray cast though since we already + //will be, so make sure that is false + m_bCastVisibleRay = false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteFX::CFlareSpriteFX +// +// PURPOSE: Standard constuctor +// +// ----------------------------------------------------------------------- // + +CFlareSpriteFX::CFlareSpriteFX() +: CSpriteFX ( CBaseFX::eFlareSpriteFX ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteFX::~CFlareSpriteFX +// +// PURPOSE: Standard destructor +// +// ----------------------------------------------------------------------- // + +CFlareSpriteFX::~CFlareSpriteFX() +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteFX::Init +// +// PURPOSE: Initialises class CFlareSpriteFX +// +// ----------------------------------------------------------------------- // + +bool CFlareSpriteFX::Init( ILTClient *pClientDE, FX_BASEDATA *pBaseData, CBaseFXProps *pProps) +{ + // Let the CSpriteFX base class create the actuall object + + if( !CSpriteFX::Init( pClientDE, pBaseData, pProps ) ) + return LTFALSE; + + // We always want to rotate so we know what the correct forward is... + + m_pLTClient->Common()->SetObjectFlags( m_hObject, OFT_Flags, FLAG_ROTATEABLESPRITE, FLAG_ROTATEABLESPRITE ); + + m_bUpdateScale = LTFALSE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlareSpriteFX::Update +// +// PURPOSE: Updates class CFlareSpriteFX +// +// ----------------------------------------------------------------------- // + +bool CFlareSpriteFX::Update( float tmCur ) +{ + // Let our base class handel the normal sprite update + + if( !CSpriteFX::Update( tmCur ) ) + return LTFALSE; + + if( !m_hCamera ) + return LTFALSE; + + // Get the Forwards of the Sprite and the Camera and calculate the direction... + + LTVector vObjPos, vCamPos; + m_pLTClient->GetObjectPos( m_hObject, &vObjPos ); + m_pLTClient->GetObjectPos( m_hCamera, &vCamPos ); + + LTRotation rObjRot, rCamRot; + LTFLOAT fCamFace = (GetProps()->m_nFacing == FACE_CAMERAFACING) ? -1.0f : 1.0f; + + m_pLTClient->GetObjectRotation( m_hObject, &rObjRot ); + m_pLTClient->GetObjectRotation( m_hCamera, &rCamRot ); + + LTVector vObjF, vCamF; + vObjF = rObjRot.Forward(); + vCamF = rCamRot.Forward(); + + LTVector vDir = vObjPos - vCamPos; + vDir.Normalize(); + + // Find the angles... + + LTFLOAT fCameraAngle = vDir.Dot( vCamF ); + fCameraAngle = fCameraAngle < 0.0f ? 0.0f : fCameraAngle; + fCameraAngle *= 90.0f; + + LTFLOAT fObjectAngle = -vDir.Dot( vObjF ) * fCamFace; + fObjectAngle = fObjectAngle < 0.0f ? 0.0f : fObjectAngle; + fObjectAngle *= 90.0f; + + // Do we want to use the Camera or Parent angle? + + LTFLOAT fAngle = GetProps()->m_bUseCameraAngle ? fCameraAngle : fObjectAngle; + + // If we are within the threshold of looking at the flare update the color and scale... + + if( fAngle < ( 90.0f - GetProps()->m_fMinAngle ) ) + { + // ...otherwise make it invisible. + + m_pLTClient->Common()->SetObjectFlags( m_hObject, OFT_Flags, 0, FLAG_VISIBLE ); + } + else + { + if( GetProps()->m_bBlindingFlare ) + { + m_pLTClient->Common()->SetObjectFlags( m_hObject, OFT_Flags, FLAG_SPRITEBIAS | FLAG_VISIBLE, FLAG_SPRITE_NOZ | FLAG_SPRITEBIAS | FLAG_VISIBLE); + } + else + { + m_pLTClient->Common()->SetObjectFlags( m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + } + + // Calculate the multiplier we want to use based on the angle + + LTFLOAT fMultiplier = ( fAngle + GetProps()->m_fMinAngle - 90.0f ) / GetProps()->m_fMinAngle; + + // Update the color and alpha based on off from direct center of the sprite we are looking + + LTFLOAT a = LTCLAMP( fMultiplier * m_alpha, GetProps()->m_fMinAlpha, GetProps()->m_fMaxAlpha ); + m_pLTClient->SetObjectColor( m_hObject, + fMultiplier * m_red, + fMultiplier * m_green, + fMultiplier * m_blue, + a ); // make sure alpha doesn't go outside our range + + // Update the scale... + + LTFLOAT fScale = GetProps()->m_fMinScale + ( fMultiplier * GetProps()->m_fScaleRange ); + + m_pLTClient->SetObjectScale( m_hObject, <Vector( fScale, fScale, fScale )); + + // No since in updating anymore if the sprite is completly see through + + if( a < 0.001 ) + return LTTRUE; + + if( GetProps()->m_bBlindingFlare ) + { + if( (fObjectAngle > ( 90.0f - GetProps()->m_fBlindSprAngle )) && (fCameraAngle > ( 90.0f - GetProps()->m_fBlindCamAngle )) ) + { + // See if anything is blocking our path to the camera + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID; + iQuery.m_FilterFn = FlareSpriteListFilterFn; + iQuery.m_pUserData = NULL; + iQuery.m_From = vObjPos; + iQuery.m_To = vCamPos; + + if( !m_pLTClient->IntersectSegment( &iQuery, &iInfo ) ) + { + LTFLOAT fBlindingAngle = GetProps()->m_bUseCamBlindAngle ? GetProps()->m_fBlindCamAngle : GetProps()->m_fBlindSprAngle; + fAngle = GetProps()->m_bUseCamBlindAngle ? fCameraAngle : fObjectAngle; + + fMultiplier = ( fAngle + fBlindingAngle - 90.0f ) / fBlindingAngle; + + LTFLOAT fBlindScaleRange = GetProps()->m_fBlindMaxScale - fScale; + fScale = fScale + ( fMultiplier * fBlindScaleRange ); + m_pLTClient->SetObjectScale( m_hObject, <Vector( fScale, fScale, fScale )); + + m_pLTClient->Common()->SetObjectFlags( m_hObject, OFT_Flags, FLAG_SPRITE_NOZ, FLAG_SPRITEBIAS | FLAG_SPRITE_NOZ); + } + + } + } + + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxGetFlareSpriteProps +// +// PURPOSE: Returns a list of properties for this FX +// +// ----------------------------------------------------------------------- // + +void fxGetFlareSpriteProps(CFastList *pList) +{ + fxGetSpriteProps( pList ); + + FX_PROP fxProp; + + fxProp.Float( "MinAngle", 45.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "ObjectAngle", "1,Sprite,Camera" ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinAlpha", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxAlpha", 1.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinScale", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxScale", 10.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "BlindObjectAngle", "1,Sprite,Camera" ); + pList->AddTail( fxProp ); + + fxProp.Float( "BlindSpriteAngle", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "BlindCameraAngle", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "BlindMaxScale", 10.0f ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/FlareSpriteFX.h b/Jack/ClientFxDLL/FlareSpriteFX.h new file mode 100644 index 00000000..026243d2 --- /dev/null +++ b/Jack/ClientFxDLL/FlareSpriteFX.h @@ -0,0 +1,61 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FlareSpriteFX.h +// +// PURPOSE : This FX is used as a blinding flare +// +// CREATED : 8/01/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __FLARESPRITEFX_H__ +#define __FLARESPRITEFX_H__ + +// +// Includes... +// + + #include "SpriteFX.h" + + class CFlareSpriteProps : public CSpriteProps + { + public: + + CFlareSpriteProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + LTFLOAT m_fMinAngle; + LTBOOL m_bUseCameraAngle; + LTFLOAT m_fMinAlpha; + LTFLOAT m_fMaxAlpha; + LTFLOAT m_fMinScale; + LTFLOAT m_fMaxScale; + LTFLOAT m_fScaleRange; + LTBOOL m_bUseCamBlindAngle; + LTFLOAT m_fBlindSprAngle; + LTFLOAT m_fBlindCamAngle; + LTFLOAT m_fBlindMaxScale; + LTBOOL m_bBlindingFlare; + }; + + + class CFlareSpriteFX : public CSpriteFX + { + protected: // Members... + + CFlareSpriteProps* GetProps() { return (CFlareSpriteProps*)m_pProps; } + + public: // Methods... + + CFlareSpriteFX(); + ~CFlareSpriteFX(); + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, CBaseFXProps *pProps); + bool Update(float tmCur); + }; + +#endif // __FLARESPRITEFX_H__ \ No newline at end of file diff --git a/Jack/ClientFxDLL/LTBbouncychunkfx.cpp b/Jack/ClientFxDLL/LTBbouncychunkfx.cpp new file mode 100644 index 00000000..84ea9785 --- /dev/null +++ b/Jack/ClientFxDLL/LTBbouncychunkfx.cpp @@ -0,0 +1,413 @@ +//------------------------------------------------------------------ +// +// MODULE : BOUNCYCHUNKFX.CPP +// +// PURPOSE : Implements class CLTBBouncyChunkFX +// +// CREATED : On 12/3/98 At 6:34:44 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "LTBBouncyChunkFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLTBBouncyChunkProps::CBouncyChunkProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CLTBBouncyChunkProps::CLTBBouncyChunkProps() : + m_bPlayImpactSound(false), + m_fChunkSpeed(0.0f), + m_fChunkSpread(0.0f), + m_vChunkDir(0.0f, 0.0f, 0.0f), + m_vGravity(0.0f, 0.0f, 0.0f), + m_fGravityAmount(0.0f) +{ + m_sModelName[0] = '\0'; + m_sSkinName[0] = '\0'; + m_sImpactSound[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLTBBouncyChunkProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CLTBBouncyChunkProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if (!stricmp(fxProp.m_sName, "Model")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sModelName, sPath); + } + else if (!stricmp(fxProp.m_sName, "Skin")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sSkinName, sPath); + } + else if (!stricmp(fxProp.m_sName, "ChunkSound")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) + { + strcpy(m_sImpactSound, sPath); + m_bPlayImpactSound = true; + } + } + else if (!stricmp(fxProp.m_sName, "Amount")) + { + m_fGravityAmount = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "Gravity")) + { + m_vGravity.x = fxProp.m_data.m_fVec[0]; + m_vGravity.y = fxProp.m_data.m_fVec[1]; + m_vGravity.z = fxProp.m_data.m_fVec[2]; + m_vGravity.Norm(); + } + else if (!stricmp(fxProp.m_sName, "ChunkDir")) + { + m_vChunkDir.x = fxProp.m_data.m_fVec[0]; + m_vChunkDir.y = fxProp.m_data.m_fVec[1]; + m_vChunkDir.z = fxProp.m_data.m_fVec[2]; + m_vChunkDir.Norm(); + } + else if (!stricmp(fxProp.m_sName, "ChunkSpeed")) + { + m_fChunkSpeed = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "ChunkSpread")) + { + m_fChunkSpread = fxProp.m_data.m_fVal; + } + } + + m_vGravity *= m_fGravityAmount; + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CLTBBouncyChunkFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CLTBBouncyChunkFX::CLTBBouncyChunkFX() +: CBaseFX ( CBaseFX::eLTBBouncyChunkFX ), + m_hBouncyChunk ( LTNULL ), + m_hImpactSound ( LTNULL ) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CLTBBouncyChunkFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CLTBBouncyChunkFX::~CLTBBouncyChunkFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CLTBBouncyChunkFX +// +//------------------------------------------------------------------ + +bool CLTBBouncyChunkFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + LTVector vChunkDir = GetProps()->m_vChunkDir; + if (pBaseData->m_bUseTargetData) + { + vChunkDir = pBaseData->m_vTargetNorm; + } + + LTVector vPos; + LTRotation rRot; + if (m_hParent) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + m_pLTClient->GetObjectRotation(m_hParent, &rRot); + } + else + { + vPos = m_vCreatePos; + rRot = m_rCreateRot; + } + + float scale; + CalcScale(m_tmElapsed, GetProps()->m_tmLifespan, &scale); + + LTVector vScale(scale, scale, scale); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_NOLIGHT | FLAG_VISIBLE; + ocs.m_Pos = vPos + GetProps()->m_vOffset; + ocs.m_Rotation = rRot; + ocs.m_Scale = vScale; + strcpy(ocs.m_Filename, GetProps()->m_sModelName); + strcpy(ocs.m_SkinName, GetProps()->m_sSkinName); + + m_hBouncyChunk = m_pLTClient->CreateObject(&ocs); + + // Setup an initial vector for the velocity + + LTVector vOther; + vOther.x = 1.0f; + vOther.y = 0.0f; + vOther.z = 1.0f; + vOther.Norm(); + + LTVector vRight = vChunkDir.Cross(vOther); + LTVector vUp = vRight.Cross(vOther); + + m_vVel = vRight * (-GetProps()->m_fChunkSpread + (float)(rand() % (int)(GetProps()->m_fChunkSpread * 2.0f))); + m_vVel += vUp * (-GetProps()->m_fChunkSpread + (float)(rand() % (int)(GetProps()->m_fChunkSpread * 2.0f))); + m_vVel += vChunkDir * GetProps()->m_fChunkSpeed; + m_vVel.Norm(GetProps()->m_fChunkSpeed); + + // Create the base object + + CreateDummyObject(); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CLTBBouncyChunkFX +// +//------------------------------------------------------------------ + +void CLTBBouncyChunkFX::Term() +{ + if (m_hBouncyChunk) m_pLTClient->RemoveObject(m_hBouncyChunk); + m_hBouncyChunk = NULL; + + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; + + if (m_hImpactSound) + { + m_pLTClient->SoundMgr()->KillSound(m_hImpactSound); + m_hImpactSound = NULL; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CLTBBouncyChunkFX +// +//------------------------------------------------------------------ + +bool CLTBBouncyChunkFX::Update(float tmFrameTime) +{ + // Base class update first + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + if ((m_hImpactSound) && (m_pLTClient->IsDone(m_hImpactSound))) + { + m_pLTClient->SoundMgr()->KillSound(m_hImpactSound); + m_hImpactSound = NULL; + } + + // Set the object scale + + LTVector vScale(m_scale, m_scale, m_scale); + + m_pLTClient->SetObjectScale(m_hBouncyChunk, &vScale); + + LTVector vCur; + m_pLTClient->GetObjectPos(m_hBouncyChunk, &vCur); + + // Compute the new position of the chunk + + LTVector vNew = vCur; + vNew += m_vVel * tmFrameTime; + + m_vVel += GetProps()->m_vGravity * tmFrameTime; + + // Move the object and collide against the world + + ClientIntersectQuery ciq; + ClientIntersectInfo cii; + + ciq.m_From = vCur; + ciq.m_To = vNew; + + if (m_pLTClient->IntersectSegment(&ciq, &cii)) + { + vNew = cii.m_Point + cii.m_Plane.m_Normal; + vCur = vNew; + + // Compute the reflected velocity + + LTVector N = cii.m_Plane.m_Normal; + LTVector L = m_vVel; + L.x = -L.x; + L.y = -L.y; + L.z = -L.z; + + LTVector vReflected = N * 2.0f; + vReflected *= (N.Dot(L)); + vReflected -= L; + + vReflected.Norm(); + vReflected *= (m_vVel.Mag() * 0.7f); + + m_vVel = vReflected; + + const char *sImpactSound = GetProps()->m_sImpactSound; + if (sImpactSound[0] != '.') + { + // Play the bounce sound + + PlaySoundInfo psi; + memset(&psi, 0, sizeof(PlaySoundInfo)); + + psi.m_dwFlags = PLAYSOUND_GETHANDLE | + PLAYSOUND_CTRL_VOL | + PLAYSOUND_CLIENT | + PLAYSOUND_TIME | + PLAYSOUND_3D | + PLAYSOUND_REVERB; + + psi.m_nVolume = 50; + + strcpy(psi.m_szSoundName, GetProps()->m_sImpactSound); + psi.m_nPriority = 0; + psi.m_vPosition = m_vPos; + psi.m_fInnerRadius = 100; + psi.m_fOuterRadius = 300; + + if (!m_hImpactSound) + { + if (m_pLTClient->SoundMgr()->PlaySound(&psi, m_hImpactSound) == LT_OK) + { + m_hImpactSound = psi.m_hSound; + } + } + } + } + + m_pLTClient->SetObjectPos(m_hBouncyChunk, &vNew); + m_pLTClient->SetObjectColor(m_hBouncyChunk, m_red, m_green, m_blue, m_alpha); + m_pLTClient->SetObjectPos(m_hObject, &vNew); + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetBouncyChunkFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetLTBBouncyChunkProps(CFastList *pList) +{ + FX_PROP fxProp; + + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 1.0f; + fVec[2] = 0.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Model", "ltb|..."); + pList->AddTail(fxProp); + + fxProp.Path("Skin", "dtx|..."); + pList->AddTail(fxProp); + + fxProp.Vector("ChunkDir", fVec); + pList->AddTail(fxProp); + + fxProp.Float("ChunkSpeed", 40.0f); + pList->AddTail(fxProp); + + fxProp.Float("ChunkSpread", 40.0f); + pList->AddTail(fxProp); + + fVec[0] = 0.0f; + fVec[1] = -1.0f; + fVec[2] = 0.0f; + + fxProp.Vector("Gravity", fVec); + pList->AddTail(fxProp); + + fxProp.Float("Amount", 10.0f); + pList->AddTail(fxProp); + + fxProp.Path("ChunkSound", "wav|..."); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/LTBbouncychunkfx.h b/Jack/ClientFxDLL/LTBbouncychunkfx.h new file mode 100644 index 00000000..c6184a4e --- /dev/null +++ b/Jack/ClientFxDLL/LTBbouncychunkfx.h @@ -0,0 +1,75 @@ +//------------------------------------------------------------------ +// +// MODULE : LTBBOUNCYCHUNKFX.H +// +// PURPOSE : Defines class CLTBBouncyChunkFX +// +// CREATED : On 12/3/98 At 6:34:45 PM +// +//------------------------------------------------------------------ + +#ifndef __LTBBOUNCYCHUNKFX__H_ + #define __LTBBOUNCYCHUNKFX__H_ + + // Includes.... + + #include "basefx.h" + + class CLTBBouncyChunkProps : public CBaseFXProps + { + public: + + CLTBBouncyChunkProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sModelName[128]; + char m_sSkinName[128]; + + bool m_bPlayImpactSound; + char m_sImpactSound[128]; + + LTVector m_vGravity; + float m_fGravityAmount; + + float m_fChunkSpeed; + float m_fChunkSpread; + + LTVector m_vChunkDir; + }; + + class CLTBBouncyChunkFX : public CBaseFX + { + public : + + // Constuctor + + CLTBBouncyChunkFX(); + + // Destructor + + ~CLTBBouncyChunkFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmCur); + void ReadProps( CLinkList *pProps ); + void Term(); + + // Accessors + + protected : + + const CLTBBouncyChunkProps* GetProps() { return (const CLTBBouncyChunkProps*)m_pProps; } + + // Member Variables + + HOBJECT m_hBouncyChunk; + HLTSOUND m_hImpactSound; + + LTVector m_vVel; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/ParticleSystemFX.cpp b/Jack/ClientFxDLL/ParticleSystemFX.cpp new file mode 100644 index 00000000..cced22e3 --- /dev/null +++ b/Jack/ClientFxDLL/ParticleSystemFX.cpp @@ -0,0 +1,1182 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleSystemFX.cpp +// +// PURPOSE : The ParticleSystemFX object +// +// CREATED : 4/10/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "ClientFX.h" + #include "ParticleSystemFX.h" + +// +// Angle macros... +// + +#define PI 3.14159f +#define DEG_TO_RAD(x) (((x) * PI) / 180.0f) + +// Macros for accessing varous parts of the user data which holds +// 15 bits: Color key offset +// 15 bits: Scale key offset +// 1 bit: Bounce flag +// 1 bit: Splatter flag +#define KEY_INDEX_MASK ((1<<15) - 1) +#define COLOR_KEY_OFFSET (0) +#define SCALE_KEY_OFFSET (15) +#define BOUNCE_FLAG (1<<30) +#define SPLAT_FLAG (1<<31) + +inline uint32 GetKeyOffset(uint32 nVal, uint32 nOffset) +{ + return (nVal >> nOffset) & KEY_INDEX_MASK; +} + +inline void SetKeyOffset(uint32& nVal, uint32 nKey, uint32 nOffset) +{ + nVal &= ~(KEY_INDEX_MASK << nOffset); + nVal |= (nKey & KEY_INDEX_MASK) << nOffset; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::CParticleSystemProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CParticleSystemProps::CParticleSystemProps() : + m_vMinVelocity ( 0.0f, 0.0f, 0.0f ), + m_vMaxVelocity ( 0.0f, 0.0f, 0.0f ), + m_vPlaneDir ( 0.0f, 0.0f, 0.0f ), + m_nParticlesPerEmission ( 0 ), + m_fMinLifeSpan ( 0.0f ), + m_fMinRadius ( 0.0f ), + m_fMaxRadius ( 0.0f ), + m_eType ( PS_eSphere ), + m_eVelocityType ( PSV_eRandom ), + m_fPercentToBounce ( 0.0f ), + m_bFlipOrder ( LTFALSE ), + m_dwBlendMode ( 0 ), + m_bObjectSpace ( LTFALSE ), + m_bLight ( LTFALSE ), + m_bRotate ( LTFALSE ), + m_bCollideModels ( LTFALSE ), + m_bSwarm ( LTFALSE ), + m_vAcceleration ( 0.0f, 0.0f, 0.0f ), + m_fFriction ( 0.0f), + m_bInfiniteLife ( LTFALSE ), + m_bKillOnSplat ( LTTRUE ), + m_fPercentToSplat ( 0.0f ), + m_fEmissionInterval ( 0.0f ) +{ + m_szSplatEffect[0] = '\0'; + m_szFileName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CParticleSystemProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + LTFLOAT fGravity = 0.0f; + + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Sprite" ) ) + { + fxProp.GetPath( m_szFileName ); + } + else if( !_stricmp( fxProp.m_sName, "Texture" ) ) + { + if( !m_szFileName[0] ) + { + fxProp.GetPath( m_szFileName ); + } + } + else if( !_stricmp( fxProp.m_sName, "EmissionInterval" ) ) + { + m_fEmissionInterval = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "ParticlesPerEmission" ) ) + { + m_nParticlesPerEmission = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "GravityAcceleration" ) ) + { + fGravity = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinParticleLifeSpan" ) ) + { + m_fMinLifeSpan = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxParticleLifeSpan" ) ) + { + m_fMaxLifeSpan = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinRadius" ) ) + { + m_fMinRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxRadius" ) ) + { + m_fMaxRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "AdditionalAcceleration") ) + { + m_vAcceleration = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "EmissionPlane" ) ) + { + m_vPlaneDir = fxProp.GetVector(); + + m_vPlaneDir.Norm(); + + // Get the perpindicular vectors to this plane + FindPerps(m_vPlaneDir, m_vPerp1, m_vPerp2); + } + else if( !_stricmp( fxProp.m_sName, "MinParticleVelocity" ) ) + { + m_vMinVelocity = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "MaxParticleVelocity" ) ) + { + m_vMaxVelocity = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "Type" ) ) + { + m_eType = (ePSType)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "PercentToBounce" ) ) + { + m_fPercentToBounce = fxProp.GetFloatVal(); + m_fPercentToBounce = LTCLAMP(m_fPercentToBounce, 0.0f, 100.0f); + } + else if( !_stricmp( fxProp.m_sName, "FlipRenderingOrder" ) ) + { + m_bFlipOrder = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "LightParticles" ) ) + { + m_bLight = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "RotateParticles" ) ) + { + m_bRotate = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlendMode" ) ) + { + int nBlendMode = fxProp.GetComboVal(); + + if( nBlendMode == 1 ) + { + m_dwBlendMode = FLAG2_ADDITIVE; + } + else if( nBlendMode == 2 ) + { + m_dwBlendMode = FLAG2_MULTIPLY; + } + } + else if( !_stricmp( fxProp.m_sName, "MoveParticlesWithSystem" ) ) + { + m_bObjectSpace = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinAngularVelocity" ) ) + { + m_fMinAngularVelocity = DEG_TO_RAD(fxProp.GetFloatVal()); + } + else if( !_stricmp( fxProp.m_sName, "MaxAngularVelocity" ) ) + { + m_fMaxAngularVelocity = DEG_TO_RAD(fxProp.GetFloatVal()); + } + else if( !_stricmp( fxProp.m_sName, "CollideModels" ) ) + { + m_bCollideModels = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "Friction" ) ) + { + m_fFriction = fxProp.GetFloatVal(); + m_fFriction = LTCLAMP(m_fFriction, 0.0f, 1.0f); + } + else if( !_stricmp( fxProp.m_sName, "VelocityType" ) ) + { + m_eVelocityType = (ePSVelocityType)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "InfiniteLife" ) ) + { + m_bInfiniteLife = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "SplatEffect" ) ) + { + fxProp.GetStringVal(m_szSplatEffect); + } + else if( !_stricmp( fxProp.m_sName, "SplatPercent" ) ) + { + m_fPercentToSplat = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "KillOnSplat" ) ) + { + m_bKillOnSplat = (LTBOOL)fxProp.GetComboVal(); + } + } + + //adjust the acceleration vector to include gravitational acceleration + m_vAcceleration.y += fGravity; + + m_bSwarm = ( (m_vRotAdd.x != 0.0f) || (m_vRotAdd.y != 0.0f) || (m_vRotAdd.z != 0.0f) ) ? LTTRUE : LTFALSE ; + + return true; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::CParticleSystemFX +// +// PURPOSE: Standard Constructor +// +// ----------------------------------------------------------------------- // + +CParticleSystemFX::CParticleSystemFX( void ) +: CBaseFX ( CBaseFX::eParticleSystemFX ), + m_nOptCount ( 0 ), + m_nNumParticles ( 0 ), + m_nNumBounceParticles ( 0 ), + m_nNumSplatParticles ( 0 ), + m_fVisRadius ( PS_DEFAULT_VISRADIUS ), + m_tmElapsedEmission ( 0.0f ), + m_bRendered ( false ) +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::~CParticleSystemFX +// +// PURPOSE: Standard Destructor +// +// ----------------------------------------------------------------------- // + +CParticleSystemFX::~CParticleSystemFX( void ) +{ + Term(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Init +// +// PURPOSE: Creates and initialises the Particle system +// +// ----------------------------------------------------------------------- // + +bool CParticleSystemFX::Init( ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps) +{ + // Perform base class initialization + if( !CBaseFX::Init( pLTClient, pData, pProps) ) + return false; + + ObjectCreateStruct ocs; + + // Create Particle System + ocs.m_ObjectType = OT_PARTICLESYSTEM; + ocs.m_Flags |= FLAG_VISIBLE | FLAG_UPDATEUNSEEN | FLAG_FOGDISABLE | pData->m_dwObjectFlags; + ocs.m_Flags2 |= pData->m_dwObjectFlags2 | GetProps()->m_dwBlendMode; + ocs.m_Pos = m_vCreatePos; + ocs.m_Rotation = m_rCreateRot; + + // Develop the Right and Up vectors based off the Forward... + + if( pData->m_vTargetNorm.LengthSquared() > MATH_EPSILON ) + { + LTVector vR, vU; + + pData->m_vTargetNorm.Normalize(); + + if( (1.0f == pData->m_vTargetNorm.y) || (-1.0f == pData->m_vTargetNorm.y) ) + { + vR = LTVector( 1.0f, 0.0f, 0.0f ).Cross( pData->m_vTargetNorm ); + } + else + { + vR = LTVector( 0.0f, 1.0f, 0.0f ).Cross( pData->m_vTargetNorm ); + } + + vU = pData->m_vTargetNorm.Cross( vR ); + ocs.m_Rotation = LTRotation( pData->m_vTargetNorm, vU ); + } + + m_hObject = m_pLTClient->CreateObject( &ocs ); + if( !m_hObject ) + return LTFALSE; + + uint32 dwWidth, dwHeight; + HSURFACE hScreen = m_pLTClient->GetScreenSurface(); + + m_pLTClient->GetSurfaceDims(hScreen, &dwWidth, &dwHeight); + m_fVisRadius /= ((LTFLOAT)dwWidth); + + //The flags for the particle system + uint32 nFlags = PS_DUMB; + + if(GetProps()->m_bRotate) + nFlags |= PS_USEROTATION; + + if(GetProps()->m_bLight) + nFlags |= PS_LIGHT; + + if(GetProps()->m_bCollideModels) + nFlags |= PS_COLLIDE; + + if(!GetProps()->m_bObjectSpace) + nFlags |= PS_WORLDSPACE; + + m_pLTClient->SetupParticleSystem( m_hObject, + GetProps()->m_szFileName, + 0.0f, + nFlags, + m_fVisRadius ); + + // Dont let the base class update theese + m_bUpdateColour = LTFALSE; + m_bUpdateScale = LTFALSE; + + if( GetProps()->m_eType == PS_ePoint ) + { + // Get a random point on our plane for use in point emision + m_vRandomPoint = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + m_vRandomPoint.Norm(); + + // Now scale it into our desired range + m_vRandomPoint *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::UpdateParticleColor +// +// Given a particle, it will calculate the color of it where RGB range +// from 0..255, and A ranges from 0..1. +// +// ----------------------------------------------------------------------- // +void CParticleSystemFX::UpdateParticleColor(LTParticle* pLTParticle) +{ + assert(pLTParticle); + + float tmActual = (1.0f - pLTParticle->m_Lifetime / pLTParticle->m_TotalLifetime); + + FX_COLOURKEY* pKeys = GetProps()->m_pColorKeys; + uint32 nNumKeys = GetProps()->m_nNumColorKeys; + + // Locate the keyframe, we can start at the cached keyframe since particle + // lifetimes only move forward (this is stored in the high word of the user + // data) + uint32 nCurrColour = GetKeyOffset(pLTParticle->m_nUserData, COLOR_KEY_OFFSET); + + for (; nCurrColour + 1 < nNumKeys; nCurrColour++) + { + FX_COLOURKEY& endKey = pKeys[nCurrColour + 1]; + + if (tmActual < endKey.m_tmKey) + { + FX_COLOURKEY& startKey = pKeys[nCurrColour]; + + // Use this and the previous key to compute the colour + + float tmDist = endKey.m_tmKey - startKey.m_tmKey; + + //note that the distance should always be greater than 0 + assert(tmDist > 0.0f); + + float ratio = (tmActual - startKey.m_tmKey) / tmDist; + + pLTParticle->m_Color.x = (startKey.m_red + ((endKey.m_red - startKey.m_red) * ratio)); + pLTParticle->m_Color.y = (startKey.m_green + ((endKey.m_green - startKey.m_green) * ratio)); + pLTParticle->m_Color.z = (startKey.m_blue + ((endKey.m_blue - startKey.m_blue) * ratio)); + pLTParticle->m_Alpha = 1.0f - (startKey.m_alpha + (endKey.m_alpha - startKey.m_alpha) * ratio) / 255.0f; + + //all done calculating colors, might as well bail + break; + } + } + + //save this color keyframe for next time... + SetKeyOffset(pLTParticle->m_nUserData, nCurrColour, COLOR_KEY_OFFSET); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::CalcParticleScale +// +// Given a particle, it will calculate the scale for it based upon the +// scale keyframes +// +// ----------------------------------------------------------------------- // +void CParticleSystemFX::UpdateParticleScale(LTParticle* pLTParticle) +{ + assert(pLTParticle); + + float tmActual = (1.0f - pLTParticle->m_Lifetime / pLTParticle->m_TotalLifetime); + + FX_SCALEKEY* pKeys = GetProps()->m_pScaleKeys; + uint32 nNumKeys = GetProps()->m_nNumScaleKeys; + + // Locate the keyframe + uint32 nCurrScaleKey = GetKeyOffset(pLTParticle->m_nUserData, SCALE_KEY_OFFSET); + + for (; nCurrScaleKey + 1 < nNumKeys; nCurrScaleKey++) + { + FX_SCALEKEY& endKey = pKeys[nCurrScaleKey + 1]; + + if (tmActual < endKey.m_tmKey) + { + FX_SCALEKEY& startKey = pKeys[nCurrScaleKey]; + + // Use this and the previous key to compute the colour + + float tmDist = endKey.m_tmKey - startKey.m_tmKey; + + assert(tmDist > 0.0f); + + float ratio = (endKey.m_scale - startKey.m_scale) / tmDist; + pLTParticle->m_Size = startKey.m_scale + (ratio * (tmActual - startKey.m_tmKey)); + + //got the scale, bail + break; + } + } + + //cache this scale for next time... + SetKeyOffset(pLTParticle->m_nUserData, nCurrScaleKey, SCALE_KEY_OFFSET); +} + + +bool CParticleSystemFX::SuspendedUpdate( float tmFrameTime ) +{ + if(!CBaseFX::SuspendedUpdate(tmFrameTime)) + return false; + + UpdateParticles(tmFrameTime); + return true; +} + +bool CParticleSystemFX::Render() +{ + m_bRendered = true; + return CBaseFX::Render(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Update +// +// PURPOSE: NONE +// +// ----------------------------------------------------------------------- // + +bool CParticleSystemFX::Update( float tmFrameTime ) +{ + ASSERT( m_hObject ); + + uint32 dwFlags; + + // Was this system drawn last frame? Dont update if it was not + m_pLTClient->Common()->GetObjectFlags( m_hObject, OFT_Flags, dwFlags ); + if( m_bRendered && !(dwFlags & FLAG_WASDRAWN ) ) + { + return LTTRUE; + } + + //allow the base effect to handle any updates + if(!CBaseFX::Update( tmFrameTime )) + return false; + + // Are we ready for another emission? + if(!IsShuttingDown()) + { + //update our emission time + m_tmElapsedEmission += tmFrameTime; + + //if this is the first frame, we need to handle emitting particles + if(IsInitialFrame()) + { + AddParticles(); + m_tmElapsedEmission = 0.0f; + } + + //see if we want to emit any more particles + float fEmissionInterval = GetProps()->m_fEmissionInterval; + if(fEmissionInterval > 0.0f) + { + //we will only be able to see particles from the point of one emission interval + //minus the maximum lifespan + float tmStartEmissions = fEmissionInterval + GetProps()->m_fMaxLifeSpan; + + while(m_tmElapsedEmission >= fEmissionInterval) + { + //however, don't bother trying to add these particles if they won't live long enough + //to show up in the next frame + if(m_tmElapsedEmission >= tmStartEmissions) + { + m_tmElapsedEmission -= fEmissionInterval; + continue; + } + + // We have emission + AddParticles(); + m_tmElapsedEmission -= fEmissionInterval; + + //see if we should run an update on those particles + if(m_tmElapsedEmission >= fEmissionInterval) + { + //we need to run an update + UpdateParticles(fEmissionInterval); + tmFrameTime -= fEmissionInterval; + } + } + } + } + + UpdateParticles( tmFrameTime ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::AddParticles +// +// PURPOSE: Emit Particles +// +// ----------------------------------------------------------------------- // + +void CParticleSystemFX::AddParticles( ) +{ + LTVector vPos; + LTVector vVel; + LTVector vColor( GetProps()->m_pColorKeys[0].m_red, GetProps()->m_pColorKeys[0].m_green, GetProps()->m_pColorKeys[0].m_blue ); + LTFLOAT fTempLifeSpan; + + LTRotation rRot; + LTMatrix mMat; + + + if( !GetProps()->m_bObjectSpace ) + { + // Get the rotation of the system so we can apply it to the velocity of each particle... + + m_pLTClient->GetObjectRotation( m_hObject, &rRot ); + rRot.ConvertToMatrix( mMat ); + } + + + for( uint32 i = 0; i < GetProps()->m_nParticlesPerEmission; i++ ) + { + // What kind of emission do we have? + switch( GetProps()->m_eType ) + { + case PS_eSphere: + { + vPos.x = GetRandom( -1.0f, 1.0f ); + vPos.y = GetRandom( -1.0f, 1.0f ); + vPos.z = GetRandom( -1.0f, 1.0f ); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + + } + break; + + case PS_ePoint: + { + vPos = m_vRandomPoint; + } + break; + + case PS_eCircle: + { + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + } + break; + + case PS_eCone: + { + //the real trick here is evenly distributing the particles + //inside of the cone since if we just blindly picked a height, the + //particles would bunch up at the bottom. This is done by + //using a square, since it bunches numbers more towards the lower + //end of the spectrum, so if the lower end corresponds to the end + //of the cone, it will tend to bunch it up more there + float fRandom = GetRandom(0.0f, (float)sqrt(GetProps()->m_fMaxRadius)); + float fOffset = GetProps()->m_fMaxRadius - fRandom * fRandom; + + //generate a point on that circle + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + //find the radius of the cone at that point + float fRadius = GetProps()->m_fMinRadius * fOffset / GetProps()->m_fMaxRadius; + + // Now scale it into our desired range + vPos *= GetRandom(0.0f, fRadius); + + //now offset it appropriately + vPos += (GetProps()->m_vPlaneDir * fOffset); + } + break; + + case PS_eCylinder: + { + //position it on a circle + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom(0.0f, GetProps()->m_fMinRadius); + + //offset it along the height + vPos += GetProps()->m_vPlaneDir * GetRandom(0.0f, GetProps()->m_fMaxRadius); + } + break; + + default: + assert(!"Unknown particle emission type"); + break; + + } + + // Randomize the velocity within our range + switch(GetProps()->m_eVelocityType) + { + case PSV_eRandom: + { + vVel.x = GetRandom( GetProps()->m_vMinVelocity.x, GetProps()->m_vMaxVelocity.x ); + vVel.y = GetRandom( GetProps()->m_vMinVelocity.y, GetProps()->m_vMaxVelocity.y ); + vVel.z = GetRandom( GetProps()->m_vMinVelocity.z, GetProps()->m_vMaxVelocity.z ); + } + break; + case PSV_eCenter: + { + //velocity direction is based upon position from 0, 0, 0 + float fVelocityScale = GetRandom(GetProps()->m_vMinVelocity.x, GetProps()->m_vMaxVelocity.x) / vPos.Mag(); + vVel = vPos * fVelocityScale; + } + break; + default: + assert(!"Unknown particle velocity type"); + break; + } + + + if( !GetProps()->m_bObjectSpace ) + { + //convert velocity into world space + vVel = mMat * vVel; + + //also convert our position + vPos += m_vPos; + } + + fTempLifeSpan = GetRandom( GetProps()->m_fMinLifeSpan, GetProps()->m_fMaxLifeSpan ); + + // Try and add the new particle to the system + LTParticle* pParticle = m_pLTClient->AddParticle( m_hObject, &vPos, &vVel, &vColor, fTempLifeSpan ); + if( !pParticle ) + { + return; + } + + pParticle->m_nUserData = 0; + pParticle->m_Alpha = GetProps()->m_pColorKeys[0].m_alpha; + pParticle->m_Size = GetProps()->m_pScaleKeys[m_nCurrScaleKey].m_scale; + + //update our counts + m_nNumParticles++; + + // Randomize the angle information if needed + if(GetProps()->m_bRotate) + { + pParticle->m_fAngle = GetRandom(0.0f, 2 * PI); + pParticle->m_fAngularVelocity = GetRandom(GetProps()->m_fMinAngularVelocity, GetProps()->m_fMaxAngularVelocity); + } + + //determine if we want this particle to bounce + if((GetProps()->m_fPercentToBounce > 0.001f) && (GetRandom(0.0f, 100.0f) < GetProps()->m_fPercentToBounce)) + { + //this particle should bounce + pParticle->m_nUserData |= BOUNCE_FLAG; + m_nNumBounceParticles++; + } + + //determine if we want this particle to splat + if(GetProps()->m_szSplatEffect[0] && (GetProps()->m_fPercentToSplat > 0.001f) && (GetRandom(0.0f, 100.0f) < GetProps()->m_fPercentToSplat)) + { + //this particle should bounce + pParticle->m_nUserData |= SPLAT_FLAG; + m_nNumSplatParticles++; + } + + + // To change the rendering order, move the newly added particle from the tail to the head. + + if( GetProps()->m_bFlipOrder ) + { + LTParticle *pHead = LTNULL; + LTParticle *pTail = LTNULL; + + if( m_pLTClient->GetParticles( m_hObject, &pHead, &pTail ) ) + { + if( pHead != pParticle ) + { + // Move the Cur particle to the head... + + pParticle->m_pPrev->m_pNext = pParticle->m_pNext; + pTail->m_pPrev = pParticle->m_pPrev; + pParticle->m_pNext = pHead->m_pNext; + pHead->m_pNext->m_pPrev = pParticle; + pHead->m_pNext = pParticle; + } + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::RemoveParticle +// +// PURPOSE: Removes the passed in particle from the system and maintains +// appropriate counts +// +// ----------------------------------------------------------------------- // + +void CParticleSystemFX::RemoveParticle(LTParticle* pParticle) +{ + // Update the counts and remove the particle + if(pParticle->m_nUserData & BOUNCE_FLAG) + { + m_nNumBounceParticles--; + } + if(pParticle->m_nUserData & SPLAT_FLAG) + { + m_nNumSplatParticles--; + } + + // Disable this particle + m_pLTClient->RemoveParticle( m_hObject, pParticle ); + + assert(m_nNumParticles > 0); + m_nNumParticles--; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::UpdateParticles +// +// PURPOSE: Manually move and update the particles +// +// ----------------------------------------------------------------------- // + +void CParticleSystemFX::UpdateParticles( LTFLOAT tmFrame ) +{ + LTVector vGravity = GetProps()->m_vAcceleration * tmFrame; + + //find the frictional coefficient (this is what we multiply the velocity vector by). + //this needs to be scaled based upon the time delta so that the friction amount is + //reduced by the amount specified per second + LTFLOAT fFrictionCoef = (float)pow(1.0f - GetProps()->m_fFriction, tmFrame); + + // Check to see if this is a swarming system and then setup our matrix if it is + if( GetProps()->m_bSwarm ) + { + // Setup the swarmming matrix + SetupRotation( m_matSwarm, LTRotation(GetProps()->m_vRotAdd.x * tmFrame, GetProps()->m_vRotAdd.y * tmFrame, GetProps()->m_vRotAdd.z * tmFrame)); + } + + // Since the particles pos and velocity is relative to the system we need to convert gravity to world space... + if(GetProps()->m_bObjectSpace) + { + LTRotation rRot; + m_pLTClient->GetObjectRotation( m_hObject, &rRot ); + LTMatrix mInvObjSpace; + rRot.Conjugate().ConvertToMatrix( mInvObjSpace ); + + vGravity = mInvObjSpace * vGravity; + } + + LTParticle *pHead = LTNULL; + LTParticle *pTail = LTNULL; + + if( !m_pLTClient->GetParticles( m_hObject, &pHead, &pTail ) ) + return; + + LTParticle *pLTParticle = pHead; + LTParticle *pNext; + + while(pLTParticle != pTail) + { + //cache the next in case this particle is removed + pNext = pLTParticle->m_pNext; + + //update the lifetime + pLTParticle->m_Lifetime -= tmFrame; + + // Check for expiration + if( pLTParticle->m_Lifetime <= 0.0f ) + { + if(GetProps()->m_bInfiniteLife) + { + //this particle has died, but resurrect it since it lives forever + pLTParticle->m_Lifetime = pLTParticle->m_TotalLifetime - fmodf(-pLTParticle->m_Lifetime, pLTParticle->m_TotalLifetime); + + //reset the color and scale keys so that they won't get messed up + SetKeyOffset(pLTParticle->m_nUserData, 0, COLOR_KEY_OFFSET); + SetKeyOffset(pLTParticle->m_nUserData, 0, SCALE_KEY_OFFSET); + } + else + { + RemoveParticle(pLTParticle); + } + } + else + { + // Give the particle an update + + // Update the angle if appropriate + pLTParticle->m_fAngle += pLTParticle->m_fAngularVelocity * tmFrame; + pLTParticle->m_Pos += pLTParticle->m_Velocity * tmFrame; + + // Move it + if( GetProps()->m_bObjectSpace && GetProps()->m_bSwarm) + { + pLTParticle->m_Pos = m_matSwarm * pLTParticle->m_Pos; + } + + //update the velocity, applying gravity and friction + pLTParticle->m_Velocity.x = pLTParticle->m_Velocity.x * fFrictionCoef + vGravity.x; + pLTParticle->m_Velocity.y = pLTParticle->m_Velocity.y * fFrictionCoef + vGravity.y; + pLTParticle->m_Velocity.z = pLTParticle->m_Velocity.z * fFrictionCoef + vGravity.z; + + // Color it and scale it + UpdateParticleColor(pLTParticle); + UpdateParticleScale(pLTParticle); + } + + pLTParticle = pNext; + } + + //bounce is broken out of the above loop since it was rarely used, so it was + //just adding an additional if per particle as well as adding a lot of code + //to the inner loop + if( (m_nNumBounceParticles > 0) || (m_nNumSplatParticles > 0) ) + { + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + //we need to re-get the head and tail pointers (in case they were removed because of lifespan) + if( !m_pLTClient->GetParticles( m_hObject, &pHead, &pTail ) ) + return; + + //figure out our transform if we are in object space + LTMatrix mObjTransform; + if(GetProps()->m_bObjectSpace) + { + // Setup rotation + LTRotation rObjRot; + LTVector vObjPos; + + m_pLTClient->GetObjectPos( m_hObject, &vObjPos ); + m_pLTClient->GetObjectRotation( m_hObject, &rObjRot ); + + // Setup the swarmming matrix + SetupRotationAroundPoint( mObjTransform, rObjRot, vObjPos ); + } + + LTParticle* pNext = NULL; + for(pLTParticle = pHead; pLTParticle != pTail; pLTParticle = pNext) + { + //save the next particle in case it gets removed + pNext = pLTParticle->m_pNext; + + //make sure that this particle is set to bounce + if(!(pLTParticle->m_nUserData & (BOUNCE_FLAG | SPLAT_FLAG))) + continue; + + //see if we need to convert our points into world space + if(GetProps()->m_bObjectSpace) + { + LTVector vPos = m_vPos + pLTParticle->m_Pos; + iQuery.m_From = mObjTransform * vPos; + iQuery.m_To = mObjTransform * (vPos + pLTParticle->m_Velocity * tmFrame); + } + else + { + iQuery.m_From = pLTParticle->m_Pos; + iQuery.m_To = pLTParticle->m_Pos + pLTParticle->m_Velocity * tmFrame; + } + + if( m_pLTClient->IntersectSegment( &iQuery, &iInfo ) ) + { + //handle bounce + if(pLTParticle->m_nUserData & BOUNCE_FLAG) + { + LTVector& vVel = pLTParticle->m_Velocity; + const LTVector& vNormal = iInfo.m_Plane.m_Normal; + + //reflect the velocity over the normal + vVel -= vNormal * (2.0f * vVel.Dot(vNormal)); + + //apply some hack coefficient of restitution + vVel *= 0.75f; + } + + //handle splat + if(pLTParticle->m_nUserData & SPLAT_FLAG) + { + //alright, we now need to create a splat effect + + //first build up an orientation space + LTVector vForward = iInfo.m_Plane.m_Normal; + + //create a random vector + LTVector vUp(GetRandom(-1.0f, 1.0f), GetRandom(-1.0f, 1.0f), GetRandom(-1.0f, 1.0f)); + + //make sure we have a magnitude + if(vUp.MagSqr() < 0.1f) + { + vUp.Init(0.0f, 1.0f, 0.0f); + } + else + { + vUp.Normalize(); + } + + //now see if we are too close to our other input vector + if(vUp.Dot(vForward) > 0.95f) + { + vUp.Init(vUp.x, vUp.z, -vUp.y); + } + + //reorthogonalize + LTVector vRight = vForward.Cross(vUp); + vRight.Normalize(); + + vUp = vRight.Cross(vForward); + vUp.Normalize(); + + //build up a matrix + LTMatrix mMat; + mMat.SetBasisVectors(&vRight, &vUp, &vForward); + + LTRotation rRot; + rRot.ConvertFromMatrix(mMat); + + + CLIENTFX_CREATESTRUCT CreateStruct(GetProps()->m_szSplatEffect, 0, iInfo.m_Point, rRot); + CreateNewFX(CreateStruct, true); + + //see if we need to kill the particle + if(GetProps()->m_bKillOnSplat) + { + //we do.... + RemoveParticle(pLTParticle); + } + } + + //NOTE: Particle should not be used from this point or beyond since + //it can be removed above + } + } + } + + if( ++m_nOptCount == PS_OPTIMIZE_COUNT ) + { + m_pLTClient->OptimizeParticles( m_hObject ); + m_nOptCount = 0; + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Term +// +// PURPOSE: NONE +// +// ----------------------------------------------------------------------- // + +void CParticleSystemFX::Term( void ) +{ + if( m_hObject ) + m_pLTClient->RemoveObject( m_hObject ); + + m_hObject = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxGetParticleSystemProps +// +// PURPOSE: Returns a list of properties for ths effect to be used in FxED +// +// ----------------------------------------------------------------------- // + +void fxGetParticleSystemProps( CFastList *pList ) +{ + FX_PROP fxProp; + float fYVec[3]; + fYVec[0] = 0.0f; + fYVec[1] = 1.0f; + fYVec[2] = 0.0f; + + float fZeroVec[3]; + fZeroVec[0] = 0.0f; + fZeroVec[1] = 0.0f; + fZeroVec[2] = 0.0f; + + // Add the generic "every effect has theese" props + AddBaseProps( pList ); + + // Add specific Particle System Props + + fxProp.Path( "Sprite", "spr|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "Texture", "dtx|..." ); + pList->AddTail( fxProp ); + + fxProp.Float( "EmissionInterval", 0.01f ); + pList->AddTail( fxProp ); + + fxProp.Int( "ParticlesPerEmission", 5 ); + pList->AddTail( fxProp ); + + fxProp.Float( "GravityAcceleration", -500.0f ); + pList->AddTail( fxProp ); + + fxProp.Vector( "AdditionalAcceleration", fZeroVec ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinParticleLifeSpan", 2.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxParticleLifeSpan", 3.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinRadius", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxRadius", 10.0f ); + pList->AddTail( fxProp ); + + fxProp.Vector( "EmissionPlane", fYVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MinParticleVelocity", fYVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MaxParticleVelocity", fYVec ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Type", "0, Sphere, Point, Circle, Cone, Cylinder" ); + pList->AddTail( fxProp ); + + fxProp.Float( "PercentToBounce", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "FlipRenderingOrder", "0, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "LightParticles", "0, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "RotateParticles", "0, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinAngularVelocity", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxAngularVelocity", 360.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "BlendMode", "0, None, Additive, Multiply" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "MoveParticlesWithSystem", "1, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "CollideModels", "0, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Float( "Friction", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "VelocityType", "0, Random, FromCenter" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "InfiniteLife", "0, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.Float( "SplatPercent", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Combo( "KillOnSplat", "1, No, Yes" ); + pList->AddTail( fxProp ); + + fxProp.String( "SplatEffect", ""); + pList->AddTail( fxProp ); + +} + diff --git a/Jack/ClientFxDLL/ParticleSystemFX.h b/Jack/ClientFxDLL/ParticleSystemFX.h new file mode 100644 index 00000000..cfabda36 --- /dev/null +++ b/Jack/ClientFxDLL/ParticleSystemFX.h @@ -0,0 +1,136 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleSystemFX.h +// +// PURPOSE : The ParticleSystemFX object +// +// CREATED : 4/10/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLESYSTEMFX__H_ + #define __PARTICLESYSTEMFX__H_ + +// +// Includes... +// + + #include "basefx.h" + +// +// Defines... +// + + #define PS_DEFAULT_VISRADIUS 500 + #define PS_OPTIMIZE_COUNT 60 // How many updates before we optimize again + + enum ePSType + { + PS_eSphere = 0, + PS_ePoint, + PS_eCircle, + PS_eCone, + PS_eCylinder + }; + + enum ePSVelocityType + { + PSV_eRandom, + PSV_eCenter + }; + +// +// Classes... +// + + class CParticleSystemProps : public CBaseFXProps + { + public: + + CParticleSystemProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + LTBOOL m_bInfiniteLife; // Whether or not the particles should live forever + LTFLOAT m_fPercentToSplat; // Percentage of particles that should create splat effects when hitting world [0..100] + LTBOOL m_bKillOnSplat; // Should particles that splat be instantly killed? + char m_szSplatEffect[128]; // The name of the splat effect to create + LTVector m_vMinVelocity; + LTVector m_vMaxVelocity; + LTVector m_vAcceleration; //additional acceleration vector + LTFLOAT m_fFriction; //Friction multiplier per second + LTFLOAT m_fEmissionInterval; + uint32 m_nParticlesPerEmission; + LTFLOAT m_fMinAngularVelocity; + LTFLOAT m_fMaxAngularVelocity; + LTFLOAT m_fMinLifeSpan; + LTFLOAT m_fMaxLifeSpan; + LTFLOAT m_fMinRadius; + LTFLOAT m_fMaxRadius; + ePSVelocityType m_eVelocityType; // The method of generation for the velocity + LTBOOL m_bCollideModels; // Should this attempt to collide against models? + LTBOOL m_bObjectSpace; // Do the particles move with the system? + uint32 m_dwBlendMode; // Specifys what blend operation to preform + ePSType m_eType; // The emmission method + LTFLOAT m_fPercentToBounce; // Percentage of particles that should bounce [0..100] + LTBOOL m_bFlipOrder; // Allows for the flipping of the rendering order + LTBOOL m_bLight; // Determines if lighting should e done on the particles (slower) + LTBOOL m_bRotate; // Determines if the angle of the particles should be used for rotation (slower) + LTVector m_vPlaneDir; // direction of the emission + LTVector m_vPerp1; // These two are perpindicular to the emission dir + LTVector m_vPerp2; // to form a plane + char m_szFileName[128]; // can .spr or .dtx + LTBOOL m_bSwarm; + }; + + + class CParticleSystemFX : public CBaseFX + { + protected: + + LTFLOAT m_fVisRadius; + LTFLOAT m_tmElapsedEmission; + LTMatrix m_matSwarm; + LTVector m_vRandomPoint; // Random for the system not per particle + + uint8 m_nOptCount; // we only want to optimize the system every so often... + // this keeps track of when. + uint32 m_nNumParticles; // the number of currently outstanding particles + uint32 m_nNumBounceParticles; // the number of currently outstanding particles that bounce + uint32 m_nNumSplatParticles; // the number of currently outstanding particles that splat + + bool m_bRendered; // has this particle system been rendered before? If so we can use the visible flag as an indicator + + public: + + CParticleSystemFX( void ); + ~CParticleSystemFX( void ); + + bool Init( ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps); + bool Update( float tmFrameTime ); + bool Render(); + bool SuspendedUpdate( float tmFrameTime ); + void Term( void ); + + bool IsVisibleWhileSuspended() { return m_nNumParticles != 0; } + bool IsFinishedShuttingDown() { return m_nNumParticles == 0; } + + + protected: + + const CParticleSystemProps* GetProps() { return (const CParticleSystemProps*)m_pProps; } + + void RemoveParticle(LTParticle* pParticle); + + void UpdateParticleColor(LTParticle* pParticle); + void UpdateParticleScale(LTParticle* pParticle); + + void ReadProps( CLinkList *pProps ); + void AddParticles( ); + void UpdateParticles( LTFLOAT tmCur ); + }; + +#endif // __PARTICLESYSTEMFX__H_ diff --git a/Jack/ClientFxDLL/bouncychunkfx.cpp b/Jack/ClientFxDLL/bouncychunkfx.cpp new file mode 100644 index 00000000..4ad6594f --- /dev/null +++ b/Jack/ClientFxDLL/bouncychunkfx.cpp @@ -0,0 +1,413 @@ +//------------------------------------------------------------------ +// +// MODULE : BOUNCYCHUNKFX.CPP +// +// PURPOSE : Implements class CBouncyChunkFX +// +// CREATED : On 12/3/98 At 6:34:44 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "BouncyChunkFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBouncyChunkProps::CBouncyChunkProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CBouncyChunkProps::CBouncyChunkProps() : + m_bPlayImpactSound(false), + m_fChunkSpeed(0.0f), + m_fChunkSpread(0.0f), + m_vChunkDir(0.0f, 0.0f, 0.0f), + m_vGravity(0.0f, 0.0f, 0.0f), + m_fGravityAmount(0.0f) +{ + m_sModelName[0] = '\0'; + m_sSkinName[0] = '\0'; + m_sImpactSound[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBouncyChunkProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CBouncyChunkProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if (!stricmp(fxProp.m_sName, "Model")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sModelName, sPath); + } + else if (!stricmp(fxProp.m_sName, "Skin")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sSkinName, sPath); + } + else if (!stricmp(fxProp.m_sName, "ChunkSound")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) + { + strcpy(m_sImpactSound, sPath); + m_bPlayImpactSound = true; + } + } + else if (!stricmp(fxProp.m_sName, "Amount")) + { + m_fGravityAmount = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "Gravity")) + { + m_vGravity.x = fxProp.m_data.m_fVec[0]; + m_vGravity.y = fxProp.m_data.m_fVec[1]; + m_vGravity.z = fxProp.m_data.m_fVec[2]; + m_vGravity.Norm(); + } + else if (!stricmp(fxProp.m_sName, "ChunkDir")) + { + m_vChunkDir.x = fxProp.m_data.m_fVec[0]; + m_vChunkDir.y = fxProp.m_data.m_fVec[1]; + m_vChunkDir.z = fxProp.m_data.m_fVec[2]; + m_vChunkDir.Norm(); + } + else if (!stricmp(fxProp.m_sName, "ChunkSpeed")) + { + m_fChunkSpeed = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "ChunkSpread")) + { + m_fChunkSpread = fxProp.m_data.m_fVal; + } + } + + m_vGravity *= m_fGravityAmount; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CBouncyChunkFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CBouncyChunkFX::CBouncyChunkFX() +{ + m_hBouncyChunk = NULL; + m_hImpactSound = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CBouncyChunkFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CBouncyChunkFX::~CBouncyChunkFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CBouncyChunkFX +// +//------------------------------------------------------------------ + +bool CBouncyChunkFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + // Initialise members + LTVector vPos; + LTRotation rRot; + if (m_hParent) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + m_pLTClient->GetObjectRotation(m_hParent, &rRot); + } + else + { + vPos = m_vCreatePos; + rRot = m_rCreateRot; + } + + float scale; + CalcScale(m_tmElapsed, GetProps()->m_tmLifespan, &scale); + + LTVector vScale(scale, scale, scale); + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_NOLIGHT | FLAG_VISIBLE; + ocs.m_Pos = vPos + GetProps()->m_vOffset; + ocs.m_Rotation = rRot; + ocs.m_Scale = vScale; + strcpy(ocs.m_Filename, GetProps()->m_sModelName); + strcpy(ocs.m_SkinName, GetProps()->m_sSkinName); + + m_hBouncyChunk = m_pLTClient->CreateObject(&ocs); + + // Setup an initial vector for the velocity + + LTVector vOther; + vOther.x = 1.0f; + vOther.y = 0.0f; + vOther.z = 1.0f; + vOther.Norm(); + + LTVector vChunkDir = GetProps()->m_vChunkDir; + + if (pBaseData->m_bUseTargetData) + { + vChunkDir = pBaseData->m_vTargetNorm; + } + + LTVector vRight = vChunkDir.Cross(vOther); + LTVector vUp = vRight.Cross(vOther); + + m_vVel = vRight * (-GetProps()->m_fChunkSpread + (float)(rand() % (int)(GetProps()->m_fChunkSpread * 2.0f))); + m_vVel += vUp * (-GetProps()->m_fChunkSpread + (float)(rand() % (int)(GetProps()->m_fChunkSpread * 2.0f))); + m_vVel += vChunkDir * GetProps()->m_fChunkSpeed; + m_vVel.Norm(GetProps()->m_fChunkSpeed); + + + // Create the base object + + CreateDummyObject(); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CBouncyChunkFX +// +//------------------------------------------------------------------ + +void CBouncyChunkFX::Term() +{ + if (m_hBouncyChunk) m_pLTClient->RemoveObject(m_hBouncyChunk); + m_hBouncyChunk = NULL; + + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; + + if (m_hImpactSound) + { + m_pLTClient->SoundMgr()->KillSound(m_hImpactSound); + m_hImpactSound = NULL; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CBouncyChunkFX +// +//------------------------------------------------------------------ + +bool CBouncyChunkFX::Update(float tmFrameTime) +{ + // Base class update first + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + if ((m_hImpactSound) && (m_pLTClient->IsDone(m_hImpactSound))) + { + m_pLTClient->SoundMgr()->KillSound(m_hImpactSound); + m_hImpactSound = NULL; + } + + // Set the object scale + + LTVector vScale(m_scale, m_scale, m_scale); + + m_pLTClient->SetObjectScale(m_hBouncyChunk, &vScale); + + LTVector vCur; + m_pLTClient->GetObjectPos(m_hBouncyChunk, &vCur); + + // Compute the new position of the chunk + + LTVector vNew = vCur; + vNew += m_vVel * tmFrameTime; + + m_vVel += GetProps()->m_vGravity * tmFrameTime; + + // Move the object and collide against the world + + ClientIntersectQuery ciq; + ClientIntersectInfo cii; + + ciq.m_From = vCur; + ciq.m_To = vNew; + + if (m_pLTClient->IntersectSegment(&ciq, &cii)) + { + vNew = cii.m_Point + cii.m_Plane.m_Normal; + vCur = vNew; + + // Compute the reflected velocity + + LTVector N = cii.m_Plane.m_Normal; + LTVector L = m_vVel; + L.x = -L.x; + L.y = -L.y; + L.z = -L.z; + + LTVector vReflected = N * 2.0f; + vReflected *= (N.Dot(L)); + vReflected -= L; + + vReflected.Norm(); + vReflected *= (m_vVel.Mag() * 0.7f); + + m_vVel = vReflected; + + const char *sImpactSound = GetProps()->m_sImpactSound; + if (sImpactSound[0] != '.') + { + // Play the bounce sound + + PlaySoundInfo psi; + memset(&psi, 0, sizeof(PlaySoundInfo)); + + psi.m_dwFlags = PLAYSOUND_GETHANDLE | + PLAYSOUND_CTRL_VOL | + PLAYSOUND_CLIENT | + PLAYSOUND_TIME | + PLAYSOUND_3D | + PLAYSOUND_REVERB; + + psi.m_nVolume = 50; + + strcpy(psi.m_szSoundName, GetProps()->m_sImpactSound); + psi.m_nPriority = 0; + psi.m_vPosition = m_vPos; + psi.m_fInnerRadius = 100; + psi.m_fOuterRadius = 300; + + if (!m_hImpactSound) + { + if (m_pLTClient->SoundMgr()->PlaySound(&psi, m_hImpactSound) == LT_OK) + { + m_hImpactSound = psi.m_hSound; + } + } + } + } + + m_pLTClient->SetObjectPos(m_hBouncyChunk, &vNew); + m_pLTClient->SetObjectColor(m_hBouncyChunk, m_red, m_green, m_blue, m_alpha); + m_pLTClient->SetObjectPos(m_hObject, &vNew); + + // Success !! + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetBouncyChunkFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetBouncyChunkProps(CFastList *pList) +{ + FX_PROP fxProp; + + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 1.0f; + fVec[2] = 0.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Model", "ltb|..."); + pList->AddTail(fxProp); + + fxProp.Path("Skin", "dtx|..."); + pList->AddTail(fxProp); + + fxProp.Vector("ChunkDir", fVec); + pList->AddTail(fxProp); + + fxProp.Float("ChunkSpeed", 40.0f); + pList->AddTail(fxProp); + + fxProp.Float("ChunkSpread", 40.0f); + pList->AddTail(fxProp); + + fVec[0] = 0.0f; + fVec[1] = -1.0f; + fVec[2] = 0.0f; + + fxProp.Vector("Gravity", fVec); + pList->AddTail(fxProp); + + fxProp.Float("Amount", 10.0f); + pList->AddTail(fxProp); + + fxProp.Path("ChunkSound", "wav|..."); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/bouncychunkfx.h b/Jack/ClientFxDLL/bouncychunkfx.h new file mode 100644 index 00000000..55f35846 --- /dev/null +++ b/Jack/ClientFxDLL/bouncychunkfx.h @@ -0,0 +1,74 @@ +//------------------------------------------------------------------ +// +// MODULE : BOUNCYCHUNKFX.H +// +// PURPOSE : Defines class CBouncyChunkFX +// +// CREATED : On 12/3/98 At 6:34:45 PM +// +//------------------------------------------------------------------ + +#ifndef __BOUNCYCHUNKFX__H_ + #define __BOUNCYCHUNKFX__H_ + + // Includes.... + + #include "basefx.h" + + class CBouncyChunkProps : public CBaseFXProps + { + public: + + CBouncyChunkProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sModelName[128]; + char m_sSkinName[128]; + + bool m_bPlayImpactSound; + char m_sImpactSound[128]; + + LTVector m_vGravity; + float m_fGravityAmount; + + float m_fChunkSpeed; + float m_fChunkSpread; + + LTVector m_vChunkDir; + }; + + class CBouncyChunkFX : public CBaseFX + { + public : + + // Constuctor + + CBouncyChunkFX(); + + // Destructor + + ~CBouncyChunkFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmFrameTime); + void Term(); + + // Accessors + + protected : + + const CBouncyChunkProps* GetProps() { return (const CBouncyChunkProps*)m_pProps; } + + // Member Variables + + HOBJECT m_hBouncyChunk; + HLTSOUND m_hImpactSound; + + LTVector m_vVel; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/camjitterfx.cpp b/Jack/ClientFxDLL/camjitterfx.cpp new file mode 100644 index 00000000..d92db69b --- /dev/null +++ b/Jack/ClientFxDLL/camjitterfx.cpp @@ -0,0 +1,228 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CamJitterFX.cpp +// +// PURPOSE : The CamJitterFX object +// +// CREATED : 12/30/98 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// Includes.... + +#include "stdafx.h" +#include "clientfx.h" +#include "CamJitterFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamJitterProps::CCamJitterProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CCamJitterProps::CCamJitterProps() : + m_fInnerDistSqrd ( 250000.0f ), + m_fOuterDistSqrd ( 360000.0f ) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamJitterProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CCamJitterProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "InnerRadius" )) + { + LTFLOAT fRad = fxProp.GetFloatVal(); + m_fInnerDistSqrd = fRad * fRad; + } + else if( !_stricmp( fxProp.m_sName, "OuterRadius" )) + { + LTFLOAT fRad = fxProp.GetFloatVal(); + m_fOuterDistSqrd = fRad * fRad; + } + } + + if( m_fInnerDistSqrd >= m_fOuterDistSqrd ) + m_fOuterDistSqrd = m_fInnerDistSqrd + 1.0f; + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CCamJitterFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CCamJitterFX::CCamJitterFX() +: CBaseFX ( CBaseFX::eCamJitterFX ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CCamJitterFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CCamJitterFX::~CCamJitterFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CCamJitterFX +// +//------------------------------------------------------------------ + +bool CCamJitterFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + m_bUpdateScale = true; + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CCamJitterFX +// +//------------------------------------------------------------------ + +void CCamJitterFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CCamJitterFX +// +//------------------------------------------------------------------ + +bool CCamJitterFX::Update(float tmCur) +{ + // Base class update first + + if (!CBaseFX::Update(tmCur)) + return false; + + // Return out if we have shutdown + + if (IsShuttingDown()) + return true; + + if (!g_bAppFocus) + { + return true; + } + + LTVector vCurCamPos; + LTVector vObjPos; + + // Retrieve the current position of the camera and get the distance to it + + m_pLTClient->GetObjectPos(m_hCamera, &vCurCamPos); + + if( m_hParent ) + { + m_pLTClient->GetObjectPos( m_hParent, &vObjPos ); + } + else + { + vObjPos = m_vCreatePos; + } + + LTFLOAT fDistSqrd = vObjPos.DistSqr( vCurCamPos ); + LTFLOAT fFallOff; + + // Figure out the fall off of the shaking based on the inner and outer radii... + + if( fDistSqrd > GetProps()->m_fOuterDistSqrd ) + { + return LTTRUE; + } + else if( fDistSqrd <= GetProps()->m_fInnerDistSqrd ) + { + fFallOff = 1.0f; + } + else + { + fFallOff = 1 - ((fDistSqrd - GetProps()->m_fInnerDistSqrd) / (GetProps()->m_fOuterDistSqrd - GetProps()->m_fInnerDistSqrd)); + } + + // Randomize the position offset mased on the scale of hte FX and the fall off + + LTVector vRand; + vRand.x = GetRandom( -1.0f, 1.0f ) * m_scale * fFallOff; + vRand.y = GetRandom( -1.0f, 1.0f ) * m_scale * fFallOff; + vRand.z = GetRandom( -1.0f, 1.0f ) * m_scale * fFallOff; + + vRand += vCurCamPos; + + m_pLTClient->SetObjectPos(m_hCamera, &vRand); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetCamJitterFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetCamJitterProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + fxProp.Float( "InnerRadius", 500.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "OuterRadius", 600.0f ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/camjitterfx.h b/Jack/ClientFxDLL/camjitterfx.h new file mode 100644 index 00000000..cc2f8115 --- /dev/null +++ b/Jack/ClientFxDLL/camjitterfx.h @@ -0,0 +1,49 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CamJitterFX.cpp +// +// PURPOSE : The CamJitterFX object +// +// CREATED : 12/30/98 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CAMJITTERFX__H_ + #define __CAMJITTERFX__H_ + + // Includes.... + + #include "basefx.h" + + class CCamJitterProps : public CBaseFXProps + { + public: + + CCamJitterProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + LTFLOAT m_fInnerDistSqrd; + LTFLOAT m_fOuterDistSqrd; + }; + + class CCamJitterFX : public CBaseFX + { + public : // Methods... + + CCamJitterFX(); + ~CCamJitterFX(); + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + + protected: + + const CCamJitterProps* GetProps() { return (const CCamJitterProps*)m_pProps; } + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/camwobblefx.cpp b/Jack/ClientFxDLL/camwobblefx.cpp new file mode 100644 index 00000000..b77405d9 --- /dev/null +++ b/Jack/ClientFxDLL/camwobblefx.cpp @@ -0,0 +1,265 @@ +//------------------------------------------------------------------ +// +// MODULE : CAMWOBBLEFX.CPP +// +// PURPOSE : Implements class CCamWobbleFX +// +// CREATED : On 12/30/98 At 3:28:28 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "clientfx.h" +#include "CamWobbleFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamWobbleProps::CCamWobbleProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CCamWobbleProps::CCamWobbleProps() : + m_fPeriod ( 1.0f ), + m_xMultiplier ( 0.05f ), + m_yMultiplier ( 0.05f ), + m_fInnerDistSqrd ( 250000.0f ), + m_fOuterDistSqrd ( 360000.0f ) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamWobbleProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CCamWobbleProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "xMultiplier")) + { + m_xMultiplier = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "yMultiplier")) + { + m_yMultiplier = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "Reps")) + { + m_fPeriod = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "InnerRadius" )) + { + LTFLOAT fRad = fxProp.GetFloatVal(); + m_fInnerDistSqrd = fRad * fRad; + } + else if( !_stricmp( fxProp.m_sName, "OuterRadius" )) + { + LTFLOAT fRad = fxProp.GetFloatVal(); + m_fOuterDistSqrd = fRad * fRad; + } + } + + if( m_fInnerDistSqrd >= m_fOuterDistSqrd ) + m_fOuterDistSqrd = m_fInnerDistSqrd + 1.0f; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CCamWobbleFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CCamWobbleFX::CCamWobbleFX() +: CBaseFX ( CBaseFX::eCamWobbleFX ), + m_xFovAnchor ( 0.0f ), + m_yFovAnchor ( 0.0f ) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CCamWobbleFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CCamWobbleFX::~CCamWobbleFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CCamWobbleFX +// +//------------------------------------------------------------------ + +bool CCamWobbleFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + m_bUpdateScale = false; + + // Save the initial camera field of view + + m_pLTClient->GetCameraFOV(m_hCamera, &m_xFovAnchor, &m_yFovAnchor); + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CCamWobbleFX +// +//------------------------------------------------------------------ + +void CCamWobbleFX::Term() +{ + // Reset the FOV + + if (m_hCamera) m_pLTClient->SetCameraFOV(m_hCamera, m_xFovAnchor, m_yFovAnchor); + + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CCamWobbleFX +// +//------------------------------------------------------------------ + +bool CCamWobbleFX::Update(float tmFrameTime) +{ + // Base class update first + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + // Return out if we have shutdown + + if (IsShuttingDown()) + return true; + + if (!g_bAppFocus) + { + return true; + } + + LTVector vCurCamPos; + LTVector vObjPos; + + // Retrieve the current position of the camera and get the distance to it + + m_pLTClient->GetObjectPos(m_hCamera, &vCurCamPos); + + if( m_hParent ) + { + m_pLTClient->GetObjectPos( m_hParent, &vObjPos ); + } + else + { + vObjPos = m_vCreatePos; + } + + LTFLOAT fDistSqrd = vObjPos.DistSqr( vCurCamPos ); + LTFLOAT fFallOff; + + // Figure out the fall off of the shaking based on the inner and outer radii... + + if( fDistSqrd > GetProps()->m_fOuterDistSqrd ) + { + return LTTRUE; + } + else if( fDistSqrd <= GetProps()->m_fInnerDistSqrd ) + { + fFallOff = 1.0f; + } + else + { + fFallOff = 1 - ((fDistSqrd - GetProps()->m_fInnerDistSqrd) / (GetProps()->m_fOuterDistSqrd - GetProps()->m_fInnerDistSqrd)); + } + + // Compute the FOV offsets + + float fLen = GetProps()->m_tmLifespan / GetProps()->m_fPeriod; + + float fVal = fmodf(m_tmElapsed, fLen); + + float fRadVal = (MATH_CIRCLE / fLen) * fVal; + + float xOff = m_xFovAnchor + ((float)sin(fRadVal) * GetProps()->m_xMultiplier * fFallOff); + float yOff = m_yFovAnchor + ((float)cos(fRadVal) * GetProps()->m_yMultiplier * fFallOff); + + m_pLTClient->SetCameraFOV(m_hCamera, xOff, yOff); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetCamWobbleFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetCamWobbleProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + fxProp.Float("xMultiplier", 0.05f); + pList->AddTail(fxProp); + + fxProp.Float("yMultiplier", 0.05f); + pList->AddTail(fxProp); + + fxProp.Float("Reps", 5.0f); + pList->AddTail(fxProp); + + fxProp.Float( "InnerRadius", 500.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "OuterRadius", 600.0f ); + pList->AddTail( fxProp ); +} diff --git a/Jack/ClientFxDLL/camwobblefx.h b/Jack/ClientFxDLL/camwobblefx.h new file mode 100644 index 00000000..394fb29e --- /dev/null +++ b/Jack/ClientFxDLL/camwobblefx.h @@ -0,0 +1,55 @@ +//------------------------------------------------------------------ +// +// MODULE : CAMWOBBLEFX.H +// +// PURPOSE : Defines class CCamWobbleFX +// +// CREATED : On 12/30/98 At 3:28:28 PM +// +//------------------------------------------------------------------ + +#ifndef __CAMWOBBLEFX__H_ + #define __CAMWOBBLEFX__H_ + + // Includes.... + + #include "basefx.h" + + class CCamWobbleProps : public CBaseFXProps + { + public: + + CCamWobbleProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + LTFLOAT m_fPeriod; + LTFLOAT m_xMultiplier; + LTFLOAT m_yMultiplier; + LTFLOAT m_fInnerDistSqrd; + LTFLOAT m_fOuterDistSqrd; + }; + + + + class CCamWobbleFX : public CBaseFX + { + protected : // Members... + + const CCamWobbleProps* GetProps() { return (const CCamWobbleProps*)m_pProps; } + + LTFLOAT m_xFovAnchor; + LTFLOAT m_yFovAnchor; + + public : // Methods... + + CCamWobbleFX(); + ~CCamWobbleFX(); + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/clientfx.cpp b/Jack/ClientFxDLL/clientfx.cpp new file mode 100644 index 00000000..da0e32af --- /dev/null +++ b/Jack/ClientFxDLL/clientfx.cpp @@ -0,0 +1,905 @@ +//------------------------------------------------------------------ +// +// MODULE : CLIENTFX.CPP +// +// PURPOSE : Implements client FX +// +// CREATED : On 10/6/98 At 9:21:36 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "resource.h" +#include "ClientFX.h" +#include "SpriteSystemFX.h" +#include "SpriteFX.h" +#include "DynaLightFX.h" +#include "PlaySoundFX.h" +#include "CamJitterFX.h" +#include "CamWobbleFX.h" +#include "BouncyChunkFX.h" +#include "NullFX.h" +#include "FallingStuffFX.h" +#include "PolyTubeFX.h" +#include "PlayRandomSoundFX.h" +#include "LTBModelFX.h" +#include "LTBBouncyChunkFX.h" +#include "ParticleSystemFX.h" +#include "CreateFX.h" +#include "FlareSpriteFX.h" +#include "lightningfx.h" + +#ifdef _WIN32 + #include "windows.h" +#endif + +ILTClient *g_pLTClient; +define_holder(ILTClient, g_pLTClient); + +// Function prototypes +CBaseFX* fxCreateParticleSystem(); +void fxGetParticleSystemProps(CFastList *pList); + +CBaseFX* fxCreateSprite(); +void fxGetSpriteProps(CFastList *pList); + +CBaseFX* fxCreateDynaLight(); +void fxGetDynaLightProps(CFastList *pList); + +CBaseFX* fxCreatePlaySound(); +void fxGetPlaySoundProps(CFastList *pList); + +CBaseFX* fxCreateCamJitter(); +void fxGetCamJitterProps(CFastList *pList); + +CBaseFX* fxCreateCamWobble(); +void fxGetCamWobbleProps(CFastList *pList); + +CBaseFX* fxCreateBouncyChunk(); +void fxGetBouncyChunkProps(CFastList *pList); + +CBaseFX* fxCreateLTBBouncyChunk(); +void fxGetLTBBouncyChunkProps(CFastList *pList); + +CBaseFX* fxCreateNull(); +void fxGetNullProps(CFastList *pList); + +CBaseFX* fxCreateFallingStuff(); +void fxGetFallingStuffProps(CFastList *pList); + +CBaseFX* fxCreatePolyTube(); +void fxGetPolyTubeProps(CFastList *pList); + +CBaseFX* fxCreatePlayRandomSound(); +void fxGetPlayRandomSoundProps(CFastList *pList); + +CBaseFX* fxCreateLTBModel(); +void fxGetLTBModelProps(CFastList *pList); + +CBaseFX* fxCreateSpriteSystem(); +void fxGetSpriteSystemProps(CFastList *pList); + +CBaseFX* fxCreateCreateFX(); +void fxGetCreateProps(CFastList *pList); + +CBaseFX* fxCreateFlareSpriteFX(); +void fxGetFlareSpriteProps(CFastList *pList); + +CBaseFX* fxCreateLightningFX(); +void fxGetLightningProps(CFastList *pList); + + +// Globals.... + + +CBankedList g_ParticleSystemFX_Bank; +CBankedList g_SpriteFX_Bank; +CBankedList g_LTBModelFX_Bank; +CBankedList g_DynaLightFX_Bank; +CBankedList g_PlaySoundFX_Bank; +CBankedList g_CamJitterFX_Bank; +CBankedList g_CamWobbleFX_Bank; +CBankedList g_LTBBouncyChunkFX_Bank; +CBankedList g_NullFX_Bank; +CBankedList g_PolyTubeFX_Bank; +CBankedList g_PlayRandomSoundFX_Bank; +CBankedList g_SpriteSystem_Bank; +CBankedList g_CreateFX_Bank; +CBankedList g_FlareSpriteFX_Bank; +CBankedList g_LightningFX_Bank; + + +LT_POLYGT3 g_pTris [MAX_BUFFER_TRIS]; +LTVector g_pVerts[MAX_BUFFER_VERTS]; +HOBJECT g_hPlayer; +LTBOOL g_bAppFocus; + +//the function to call in order to create client FX +TCreateClientFXFn g_pCreateClientFxFn; +void* g_pCreateClientFxUserData; + + +// Extern.... + +extern "C" +{ + +bool APIENTRY DllMain( HANDLE hModule, + uint32 ul_reason_for_call, + LPVOID lpReserved + ) +{ + + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetNum() +// +// PURPOSE : Returns the number of special fx in this dll +// +//------------------------------------------------------------------ + +__declspec(dllexport) int fxGetNum() +{ + // Success !! + + return NUM_FX; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetRef() +// +// PURPOSE : Returns a reference structure for a given fx +// +//------------------------------------------------------------------ + +__declspec(dllexport) FX_REF fxGetRef(int nFx) +{ + FX_REF fxRef; + + switch (nFx) + { + case 0 : + { + LTStrCpy( fxRef.m_sName, "ParticleSystem", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateParticleSystem; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetParticleSystemProps; + } + break; + + case 1 : + { + LTStrCpy(fxRef.m_sName, "Sprite", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateSprite; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetSpriteProps; + } + break; + + case 2 : + { + LTStrCpy(fxRef.m_sName, "Null", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateNull; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetNullProps; + } + break; + + case 3 : + { + LTStrCpy(fxRef.m_sName, "LTBModel", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateLTBModel; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetLTBModelProps; + } + break; + + case 4 : + { + LTStrCpy(fxRef.m_sName, "DynaLight", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateDynaLight; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetDynaLightProps; + } + break; + + case 5 : + { + LTStrCpy(fxRef.m_sName, "PlaySound", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDMOTIONKEY | FX_NEEDVOLUMEKEY; + fxRef.m_pfnCreate = fxCreatePlaySound; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetPlaySoundProps; + } + break; + + case 6 : + { + LTStrCpy(fxRef.m_sName, "CamJitter", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDCAMERA | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateCamJitter; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetCamJitterProps; + } + break; + + case 7 : + { + LTStrCpy(fxRef.m_sName, "WonkyFX", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDCAMERA | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateCamWobble; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetCamWobbleProps; + } + break; + + case 8 : + { + LTStrCpy(fxRef.m_sName, "BouncyChunk", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateBouncyChunk; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetBouncyChunkProps; + } + break; + + case 9 : + { + LTStrCpy(fxRef.m_sName, "LTBBouncyChunk", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateLTBBouncyChunk; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetLTBBouncyChunkProps; + } + break; + + case 10 : + { + LTStrCpy(fxRef.m_sName, "FallingStuff", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDCAMERA | FX_NEEDOBJECT | FX_NEEDMOTIONKEY | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateFallingStuff; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetFallingStuffProps; + } + break; + + case 11 : + { + LTStrCpy(fxRef.m_sName, "PolyTrail", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDMOTIONKEY | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreatePolyTube; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetPolyTubeProps; + } + break; + + case 12 : + { + LTStrCpy(fxRef.m_sName, "PlayRandomSound", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreatePlayRandomSound; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetPlayRandomSoundProps; + } + break; + + case 13 : + { + LTStrCpy(fxRef.m_sName, "SpriteSystem", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY | FX_NEEDMOTIONKEY; + fxRef.m_pfnCreate = fxCreateSpriteSystem; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetSpriteSystemProps; + } + break; + + case 14 : + { + LTStrCpy(fxRef.m_sName, "CreateFX", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = 0; + fxRef.m_pfnCreate = fxCreateCreateFX; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetCreateProps; + } + break; + + case 15 : + { + LTStrCpy(fxRef.m_sName, "FlareSpriteFX", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDCOLOURKEY; + fxRef.m_pfnCreate = fxCreateFlareSpriteFX; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetFlareSpriteProps; + } + break; + + case 16 : + { + LTStrCpy(fxRef.m_sName, "LightningFX", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = FX_NEEDOBJECT | FX_NEEDMOTIONKEY | FX_NEEDCOLOURKEY | FX_NEEDSCALEKEY; + fxRef.m_pfnCreate = fxCreateLightningFX; + fxRef.m_pfnDelete = fxDelete; + fxRef.m_pfnGetProps = fxGetLightningProps; + } + break; + + default: + { + LTStrCpy(fxRef.m_sName, "--INVALID_FX--", sizeof(fxRef.m_sName) ); + fxRef.m_dwType = 0; + fxRef.m_pfnCreate = LTNULL; + fxRef.m_pfnDelete = LTNULL; + fxRef.m_pfnGetProps = LTNULL; + } + break; + } + + // Success !! + + return fxRef; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxDelete() +// +// PURPOSE : Deletes the FX +// +//------------------------------------------------------------------ + +__declspec(dllexport) void fxDelete(CBaseFX *pDeleteFX) +{ + // Figure out what kind of FX we are deleting and make sure the propper bank handles it... + + switch( pDeleteFX->GetFXType() ) + { + case CBaseFX::eParticleSystemFX : + { + g_ParticleSystemFX_Bank.Delete( (CParticleSystemFX*)pDeleteFX ); + } + break; + + case CBaseFX::eSpriteFX : + { + g_SpriteFX_Bank.Delete( (CSpriteFX*)pDeleteFX ); + } + break; + + case CBaseFX::eLTBModelFX : + { + g_LTBModelFX_Bank.Delete( (CLTBModelFX*)pDeleteFX ); + } + break; + + case CBaseFX::eDynaLightFX : + { + g_DynaLightFX_Bank.Delete( (CDynaLightFX*)pDeleteFX ); + } + break; + + case CBaseFX::ePlaySoundFX : + { + g_PlaySoundFX_Bank.Delete( (CPlaySoundFX*)pDeleteFX ); + } + break; + + case CBaseFX::eCamJitterFX : + { + g_CamJitterFX_Bank.Delete( (CCamJitterFX*)pDeleteFX ); + } + break; + + case CBaseFX::eCamWobbleFX : + { + g_CamWobbleFX_Bank.Delete( (CCamWobbleFX*)pDeleteFX ); + } + break; + + case CBaseFX::eLTBBouncyChunkFX : + { + g_LTBBouncyChunkFX_Bank.Delete( (CLTBBouncyChunkFX*)pDeleteFX ); + } + break; + + case CBaseFX::eNullFX : + { + g_NullFX_Bank.Delete( (CNullFX*)pDeleteFX ); + } + break; + + case CBaseFX::ePolyTubeFX : + { + g_PolyTubeFX_Bank.Delete( (CPolyTubeFX*)pDeleteFX ); + } + break; + + case CBaseFX::ePlayRandomSoundFX : + { + g_PlayRandomSoundFX_Bank.Delete( (CPlayRandomSoundFX*)pDeleteFX ); + } + break; + + case CBaseFX::eSpriteSystem : + { + g_SpriteSystem_Bank.Delete( (CSpriteSystem*)pDeleteFX ); + } + break; + + case CBaseFX::eCreateFX : + { + g_CreateFX_Bank.Delete( (CCreateFX*)pDeleteFX ); + } + break; + + case CBaseFX::eFlareSpriteFX : + { + g_FlareSpriteFX_Bank.Delete( (CFlareSpriteFX*)pDeleteFX ); + } + break; + + case CBaseFX::eLightningFX : + { + g_LightningFX_Bank.Delete( (CLightningFX*)pDeleteFX ); + } + break; + + default: + { + // We should never be getting here! + ASSERT( LTFALSE ); + } + break; + } + +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxSetPlayer() +// +// PURPOSE : Sets the current player (client) object +// +//------------------------------------------------------------------ +__declspec(dllexport) CBaseFXProps* fxCreatePropList(int nFx) +{ + switch(nFx) + { + case 0 : + return debug_new(CParticleSystemProps); + break; + + case 1 : + return debug_new(CSpriteProps); + break; + + case 2 : + return debug_new(CNullProps); + break; + + case 3 : + return debug_new(CLTBModelProps); + break; + + case 4 : + return debug_new(CDynaLightProps); + break; + + case 5 : + return debug_new(CPlaySoundProps); + break; + + case 6 : + return debug_new(CCamJitterProps); + break; + + case 7 : + return debug_new(CCamWobbleProps); + break; + + case 8 : + return debug_new(CBouncyChunkProps); + break; + + case 9 : + return debug_new(CLTBBouncyChunkProps); + break; + + case 10 : + return debug_new(CFallingStuffProps); + break; + + case 11 : + return debug_new(CPolyTubeProps); + break; + + case 12 : + return debug_new(CPlayRandomSoundProps); + break; + + case 13 : + return debug_new(CSpriteSystemProps); + break; + + case 14 : + return debug_new(CCreateProps); + break; + + case 15 : + return debug_new(CFlareSpriteProps); + break; + + case 16 : + return debug_new(CLightningProps); + break; + + default: + { + assert(!"Invalid property type requested"); + return NULL; + } + break; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxFreePropList() +// +// PURPOSE : Sets the current player (client) object +// +//------------------------------------------------------------------ +__declspec(dllexport) void fxFreePropList(CBaseFXProps* pPropList) +{ + debug_delete(pPropList); +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxSetPlayer() +// +// PURPOSE : Sets the current player (client) object +// +//------------------------------------------------------------------ + +__declspec(dllexport) void fxSetPlayer(HOBJECT hPlayer) +{ + g_hPlayer = hPlayer; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxSetParams() +// +// PURPOSE : Sets up parameters for FX engine +// +//------------------------------------------------------------------ + +__declspec(dllexport) void fxSetAppFocus(bool bAppFocus) +{ + g_bAppFocus = bAppFocus; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxSetParams() +// +// PURPOSE : Sets up the function for creating new client FX +// +//------------------------------------------------------------------ + +__declspec(dllexport) void fxSetCreateFunction(TCreateClientFXFn pFn, void* pUserData) +{ + g_pCreateClientFxFn = pFn; + g_pCreateClientFxUserData = pUserData; +} + +// End extern "C" +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateSpriteSystem() +// +// PURPOSE : Creates a particle system FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateParticleSystem() +{ + return g_ParticleSystemFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateSprite +// +// PURPOSE : Creates a sprite FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateSprite() +{ + return g_SpriteFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateLTBModel +// +// PURPOSE : Creates a model FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateLTBModel() +{ + return g_LTBModelFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateDynaLight +// +// PURPOSE : Creates a dynamic light FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateDynaLight() +{ + return g_DynaLightFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreatePlaySound +// +// PURPOSE : Creates a play sound FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreatePlaySound() +{ + return g_PlaySoundFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateCamJitter +// +// PURPOSE : Creates a camera jitter FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateCamJitter() +{ + return g_CamJitterFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateCamWobble +// +// PURPOSE : Creates a camera wobble FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateCamWobble() +{ + return g_CamWobbleFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateBouncyChunk +// +// PURPOSE : Creates a bouncy chunk FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateBouncyChunk() +{ + return LTNULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateLTBBouncyChunk +// +// PURPOSE : Creates a bouncy chunk FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateLTBBouncyChunk() +{ + return g_LTBBouncyChunkFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateNumbers +// +// PURPOSE : Creates a null FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateNull() +{ + return g_NullFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreateFallingStuff +// +// PURPOSE : Creates a falling stuff FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreateFallingStuff() +{ + return LTNULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreatePolyTube +// +// PURPOSE : Creates a poly tube FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreatePolyTube() +{ + return g_PolyTubeFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxCreatePlayRandomSound +// +// PURPOSE : Creates a play random sound FX +// +//------------------------------------------------------------------ + +CBaseFX* fxCreatePlayRandomSound() +{ + return g_PlayRandomSoundFX_Bank.New(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxCreateSpriteSystem +// +// PURPOSE: Creates a Sprite System FX +// +// ----------------------------------------------------------------------- // + +CBaseFX* fxCreateSpriteSystem() +{ + return g_SpriteSystem_Bank.New(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxCreateCreateFX +// +// PURPOSE: Creates a CreateFX +// +// ----------------------------------------------------------------------- // + +CBaseFX* fxCreateCreateFX() +{ + return g_CreateFX_Bank.New(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxCreateFlareSpriteFX +// +// PURPOSE: Create a FlareSpriteFX +// +// ----------------------------------------------------------------------- // + +CBaseFX* fxCreateFlareSpriteFX() +{ + return g_FlareSpriteFX_Bank.New(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: fxCreateLightningFX +// +// PURPOSE: Create a LightningFX +// +// ----------------------------------------------------------------------- // + +CBaseFX* fxCreateLightningFX() +{ + return g_LightningFX_Bank.New(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : AddBaseProps() +// +// PURPOSE : Adds base properties +// +//------------------------------------------------------------------ + +void AddBaseProps(CFastList *pList) +{ + FX_PROP fxProp; + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 0.0f; + fVec[2] = 0.0f; + + fxProp.Combo( FXPROP_UPDATEPOS,"0,Fixed,Follow,PlayerView,NodeAttach,SocketAttach,PV_NodeAttach,PV_SocketAttach"); + pList->AddTail(fxProp); + + fxProp.String( FXPROP_ATTACHNAME, "" ); + pList->AddTail( fxProp ); + + fxProp.Vector( FXPROP_OFFSET, fVec); + pList->AddTail(fxProp); + + fxProp.Vector( FXPROP_ROTATEADD, fVec); + pList->AddTail(fxProp); + + fxProp.Combo( FXPROP_DISABLEATDIST, "1,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Int( FXPROP_MENULAYER, 0 ); + pList->AddTail(fxProp); + + fxProp.Float( FXPROP_MAXSTARTOFFSET, 0.0f); + pList->AddTail(fxProp); + + fxProp.Combo( FXPROP_RANDOMSTARTOFFSET, "1,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Float( FXPROP_STARTOFFSETINTERVAL, 0.0f); + pList->AddTail(fxProp); + + fxProp.Combo( FXPROP_SMOOTHSHUTDOWN, "1,No,Yes"); + pList->AddTail(fxProp); + + //the detail settings properties. Note that this must match the table in clientfxmgr.cpp + fxProp.Combo( FXPROP_DETAILLEVEL, "0,All,High,Medium,Low,Medium+High,Low+Medium,Low+High"); + pList->AddTail(fxProp); + + fxProp.Combo( FXPROP_ISGORE, "0,No,Yes,LowViolenceOnly"); + pList->AddTail(fxProp); +} + +bool CreateNewFX(const CLIENTFX_CREATESTRUCT& CreateInfo, bool bStartInst) +{ + if(g_pCreateClientFxFn) + { + return g_pCreateClientFxFn(CreateInfo, bStartInst, g_pCreateClientFxUserData); + } + + return false; +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/clientfx.h b/Jack/ClientFxDLL/clientfx.h new file mode 100644 index 00000000..89c91be7 --- /dev/null +++ b/Jack/ClientFxDLL/clientfx.h @@ -0,0 +1,160 @@ +//------------------------------------------------------------------ +// +// MODULE : CLIENTFX.H +// +// PURPOSE : Defines client fx stuff +// +// CREATED : On 10/6/98 At 9:21:50 PM +// +//------------------------------------------------------------------ + +#ifndef __CLIENTFX_H_ + #define __CLIENTFX_H_ + + // Includes.... + + #include "basefx.h" + #include "debugnew.h" + #include "iltdrawprim.h" + #include "iltsoundmgr.h" + + // Defines.... + + #define NUM_FX 17 + + extern "C" + { + + __declspec(dllexport) int fxGetNum(); + __declspec(dllexport) FX_REF fxGetRef(int nFx); + + __declspec(dllexport) void fxDelete(CBaseFX *pDeleteFX); + + __declspec(dllexport) void fxSetPlayer(HOBJECT hPlayer); + + __declspec(dllexport) void fxSetAppFocus(bool bAppFocus); + + __declspec(dllexport) void fxSetCreateFunction(TCreateClientFXFn pFn, void* pUserData); + + __declspec(dllexport) CBaseFXProps* fxCreatePropList(int nFx); + + __declspec(dllexport) void fxFreePropList(CBaseFXProps* pPropList); + } + + // FX Creation functions + + void AddBaseProps(CFastList *pList); + + // Externs.... + + #define MAX_BUFFER_TRIS 256 + #define MAX_BUFFER_VERTS (MAX_BUFFER_TRIS * 3) + + extern LT_POLYGT3 g_pTris[MAX_BUFFER_TRIS]; + extern LTVector g_pVerts[MAX_BUFFER_VERTS]; + + extern LTBOOL g_bAppFocus; + + // Helper functions + + inline void SetupVert(LT_POLYGT3 *pPoly, int nIndex, const LTVector& vVert, uint8 r, uint8 g, uint8 b, uint8 a, float u, float v) + { + pPoly->verts[nIndex].x = vVert.x; + pPoly->verts[nIndex].y = vVert.y; + pPoly->verts[nIndex].z = vVert.z; + pPoly->verts[nIndex].rgba.r = r; + pPoly->verts[nIndex].rgba.g = g; + pPoly->verts[nIndex].rgba.b = b; + pPoly->verts[nIndex].rgba.a = a; + pPoly->verts[nIndex].u = u; + pPoly->verts[nIndex].v = v; + } + + inline LTMatrix GetCamTransform(ILTClient *pClientDE, HOBJECT hCamera) + { + LTVector vPos; + LTVector vRight, vUp, vForward; + LTRotation orient; + + pClientDE->GetObjectPos(hCamera, &vPos); + pClientDE->GetObjectRotation(hCamera, &orient); + + vPos.x = -vPos.x; + vPos.y = -vPos.y; + vPos.z = -vPos.z; + + LTMatrix mTran, mRot, mFull; + + Mat_SetBasisVectors(&mRot, &orient.Right(), &orient.Up(), &orient.Forward()); + MatTranspose3x3(&mRot); + + Mat_Identity(&mTran); + mTran.m[0][3] = vPos.x; + mTran.m[1][3] = vPos.y; + mTran.m[2][3] = vPos.z; + + MatMul(&mFull, &mRot, &mTran); + + return mFull; + } + + + inline LTFLOAT GetRandom( LTFLOAT min, LTFLOAT max ) + { + LTFLOAT randNum = (LTFLOAT)rand() / RAND_MAX; + return (min + (max - min ) * randNum); + } + + inline int GetRandom( int min, int max ) + { + if( (max - min + 1) == 0) // check for divide-by-zero case + { + if( rand() & 1 ) return( min ); + else return( max ); + } + + return( (rand() % (max - min + 1)) + min ); + } + + + inline void SetupRotationAroundPoint(LTMatrix &mMat, const LTRotation &rRot, const LTVector &vPoint) + { + LTMatrix mForward, mRotate, mBackward; + + mForward.Identity(); + mRotate.Identity(); + mBackward.Identity(); + + mForward.SetTranslation( vPoint ); + mBackward.SetTranslation( -vPoint ); + + rRot.ConvertToMatrix( mRotate ); + + mMat = mForward * mRotate * mBackward; + } + + inline void SetupRotation(LTMatrix &mMat, const LTRotation &rRot) + { + rRot.ConvertToMatrix( mMat ); + } + + inline void FindPerps(const LTVector vPlaneDir, LTVector& vPerp1, LTVector& vPerp2) + { + // Get coplanar perp vector to normalized direction + if( (1.0f == vPlaneDir.y) || (-1.0f == vPlaneDir.y) ) + { + vPerp1 = LTVector( 1.0f, 0.0f, 0.0f ).Cross( vPlaneDir ); + } + else + { + vPerp1 = LTVector( 0.0f, 1.0f, 0.0f ).Cross( vPlaneDir ); + } + + // Get coplanar perp vector to initial perp + vPerp2 = vPerp1.Cross( vPlaneDir ); + } + + bool CreateNewFX(const CLIENTFX_CREATESTRUCT& CreateInfo, bool bStartInst); + + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/cycletimer.cpp b/Jack/ClientFxDLL/cycletimer.cpp new file mode 100644 index 00000000..ad20e136 --- /dev/null +++ b/Jack/ClientFxDLL/cycletimer.cpp @@ -0,0 +1,18 @@ +//------------------------------------------------------------------ +// +// MODULE : CYCLETIMER.CPP +// +// PURPOSE : Declares some globals +// +// CREATED : On 5/13/99 At 2:09:52 PM +// +// COPYRIGHT : (C) 1999 Monolith Productions Inc +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "cycletimer.h" + +// Globals.... diff --git a/Jack/ClientFxDLL/cycletimer.h b/Jack/ClientFxDLL/cycletimer.h new file mode 100644 index 00000000..4a4e2a37 --- /dev/null +++ b/Jack/ClientFxDLL/cycletimer.h @@ -0,0 +1,16 @@ +//------------------------------------------------------------------ +// +// MODULE : CYCLETIMER.H +// +// PURPOSE : Defines cycle timing macros +// +// CREATED : On 5/13/99 At 11:54:50 AM +// +// COPYRIGHT : (C) 1999 Monolith Productions Inc +// +//------------------------------------------------------------------ + +#ifndef __CYCLETIMER_H_ + #define __CYCLETIMER_H_ + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/dynalightfx.cpp b/Jack/ClientFxDLL/dynalightfx.cpp new file mode 100644 index 00000000..c63f12e3 --- /dev/null +++ b/Jack/ClientFxDLL/dynalightfx.cpp @@ -0,0 +1,228 @@ +//------------------------------------------------------------------ +// +// MODULE : DYNALIGHTFX.CPP +// +// PURPOSE : Implements class CDynaLightFX +// +// CREATED : On 12/14/98 At 5:43:43 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "DynaLightFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynaLightProps::CDynaLightProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CDynaLightProps::CDynaLightProps() : + m_bFlicker(false), + m_bForceLightWorld(false) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynaLightProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CDynaLightProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Flicker")) + { + m_bFlicker = fxProp.GetIntegerVal() ? true : false; + } + else if( !_stricmp( fxProp.m_sName, "ForceLightWorld")) + { + m_bForceLightWorld = fxProp.GetComboVal() ? true : false; + } + } + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CDynaLightFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CDynaLightFX::CDynaLightFX() +: CBaseFX ( CBaseFX::eDynaLightFX ) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CDynaLightFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CDynaLightFX::~CDynaLightFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CDynaLightFX +// +//------------------------------------------------------------------ + +bool CDynaLightFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + LTVector vScale; + vScale.Init(100.0f, 100.0f, 100.0f); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_LIGHT; + ocs.m_Flags = pBaseData->m_dwObjectFlags; + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2; + ocs.m_Pos = m_vCreatePos; + ocs.m_Rotation = m_rCreateRot; + ocs.m_Scale = vScale; + + if(GetProps()->m_bForceLightWorld) + { + ocs.m_Flags2 |= FLAG2_FORCEDYNAMICLIGHTWORLD; + } + + // Lights can't be really close + + ocs.m_Flags &= ~FLAG_REALLYCLOSE; + + // Create the light + + m_hObject = m_pLTClient->CreateObject(&ocs); + + // We want the colour updated thankyou + + m_bUpdateColour = true; + m_bUpdateScale = true; + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CDynaLightFX +// +//------------------------------------------------------------------ + +void CDynaLightFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CDynaLightFX +// +//------------------------------------------------------------------ + +bool CDynaLightFX::Update(float tmFrameTime) +{ + // Base class update first + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + if (IsShuttingDown()) + { + m_pLTClient->SetLightRadius(m_hObject, 0); + + return true; + } + + // If we're flickering, change some of the attributes slightly + + if (GetProps()->m_bFlicker) + { + float fRand = 0.3f + GetRandom(0.0f, 0.19f); + + m_red *= fRand; + m_green *= fRand; + m_blue *= fRand; + } + + // Try to add some sort of intensity based off the alpha... + + m_red = LTCLAMP( m_red * m_alpha, 0.0f, 1.0f ); + m_green = LTCLAMP( m_green * m_alpha, 0.0f, 1.0f ); + m_blue = LTCLAMP( m_blue * m_alpha, 0.0f, 1.0f ); + + // Set the new light colour + + m_pLTClient->SetLightColor(m_hObject, m_red, m_green, m_blue); + + // Set the new light scale + + m_pLTClient->SetLightRadius(m_hObject, m_scale); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetDynaLightFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetDynaLightProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + fxProp.Int("Flicker", 0); + pList->AddTail(fxProp); + + fxProp.Combo( "ForceLightWorld", "0, No, Yes" ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/dynalightfx.h b/Jack/ClientFxDLL/dynalightfx.h new file mode 100644 index 00000000..98ed0749 --- /dev/null +++ b/Jack/ClientFxDLL/dynalightfx.h @@ -0,0 +1,57 @@ +//------------------------------------------------------------------ +// +// MODULE : DYNALIGHTFX.H +// +// PURPOSE : Defines class CDynaLightFX +// +// CREATED : On 12/14/98 At 5:43:43 PM +// +//------------------------------------------------------------------ + +#ifndef __DYNALIGHTFX__H_ + #define __DYNALIGHTFX__H_ + + // Includes.... + + #include "basefx.h" + + class CDynaLightProps : public CBaseFXProps + { + public: + + CDynaLightProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + bool m_bFlicker; + bool m_bForceLightWorld; + }; + + class CDynaLightFX : public CBaseFX + { + public : + + // Constuctor + + CDynaLightFX(); + + // Destructor + + ~CDynaLightFX(); + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + + // Accessors + + protected : + + const CDynaLightProps* GetProps() { return (const CDynaLightProps*)m_pProps; } + + // Member Variables + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/fallingstufffx.cpp b/Jack/ClientFxDLL/fallingstufffx.cpp new file mode 100644 index 00000000..6de5f5d4 --- /dev/null +++ b/Jack/ClientFxDLL/fallingstufffx.cpp @@ -0,0 +1,693 @@ +//------------------------------------------------------------------ +// +// MODULE : FALLINGSTUFFFX.CPP +// +// PURPOSE : Implements class CFallingStuffFX +// +// CREATED : On 10/26/98 At 3:59:54 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "ClientFX.h" +#include "FallingStuffFX.h" +#include "FastList.h" +#include "math.h" + +// Globals.... + +uint32 g_dwSplash = 0; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFallingStuffProps::CFallingStuffProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CFallingStuffProps::CFallingStuffProps() +{ + m_nFallingStuffFXEmission = 1; + m_tmFallingStuffFXEmission = 1.0f; + m_tmSpriteLifespan = 1.0f; + m_fRadius = 100.0f; + m_fVel = 10.0f; + + m_vWind.x = 0.0f; + m_vWind.y = -1.0f; + m_vWind.z = 0.0f; + m_fWindAmount = 1.0f; + + m_vPlaneDir.Init(0.0f, 1.0f, 0.0f); + + m_fStretchMul = 12.0f; + + m_nImpactCreate = 20; + + memset(m_sImpactSpriteName, 0, 128); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFallingStuffProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CFallingStuffProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if (!stricmp(fxProp.m_sName, "Sprite")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sSpriteName, sPath); + } + else if (!stricmp(fxProp.m_sName, "StuffPerEmission")) + { + m_nFallingStuffFXEmission = fxProp.m_data.m_nVal; + } + else if (!stricmp(fxProp.m_sName, "EmissionInterval")) + { + m_tmFallingStuffFXEmission = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "StuffLifespan")) + { + m_tmSpriteLifespan = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "Radius")) + { + m_fRadius = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "Velocity")) + { + m_fVel = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "Stretch")) + { + m_fStretchMul = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "WindDir")) + { + m_vWind.x = fxProp.m_data.m_fVec[0]; + m_vWind.y = fxProp.m_data.m_fVec[1]; + m_vWind.z = fxProp.m_data.m_fVec[2]; + } + else if (!stricmp(fxProp.m_sName, "WindAmount")) + { + m_fWindAmount = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "PlaneDir")) + { + m_vPlaneDir.x = fxProp.m_data.m_fVec[0]; + m_vPlaneDir.y = fxProp.m_data.m_fVec[1]; + m_vPlaneDir.z = fxProp.m_data.m_fVec[2]; + } + else if (!stricmp(fxProp.m_sName, "ImpactSprite")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sImpactSpriteName, sPath); + } + else if (!stricmp(fxProp.m_sName, "ImpactScale1")) + { + m_fImpactScale1 = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "ImpactScale2")) + { + m_fImpactScale2 = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "ImpactLifespan")) + { + m_tmImpactLifespan = fxProp.m_data.m_fVal; + } + else if (!stricmp(fxProp.m_sName, "ImpactCreate")) + { + m_nImpactCreate = fxProp.m_data.m_nVal; + } + } + + m_bUseSpin = ((m_vRotAdd.x != 0) || (m_vRotAdd.y != 0.0f) || (m_vRotAdd.z != 0.0f)) ? true : false; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CFallingStuffFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CFallingStuffFX::CFallingStuffFX() +{ + m_tmElapsedEmission = 0.0f; + m_xRot = 0.0f; + m_yRot = 0.0f; + m_zRot = 0.0f; + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CFallingStuffFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CFallingStuffFX::~CFallingStuffFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CFallingStuffFX +// +//------------------------------------------------------------------ + +bool CFallingStuffFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + // Store the first position as the last position + + m_vLastPos = pBaseData->m_vPos; + + // If we have a parent object, get it and apply it's rotation + // to the plane direction + m_vPlaneDir = GetProps()->m_vPlaneDir; + if (m_hParent) + { + LTRotation orient; + m_pLTClient->GetObjectRotation(m_hParent, &orient); + + LTMatrix mRot; + Mat_SetBasisVectors(&mRot, &orient.Right(), &orient.Up(), &orient.Forward()); + + LTVector vTmp = m_vPlaneDir; + + MatVMul(&m_vPlaneDir, &mRot, &vTmp); + } + + LTVector vUp; + vUp.x = 0.0f; + vUp.y = 1.0f; + vUp.z = 0.0f; + + LTVector vTest = m_vPlaneDir; + vTest.x = (float)fabs(vTest.x); + vTest.y = (float)fabs(vTest.y); + vTest.z = (float)fabs(vTest.z); + + if (vTest == vUp) + { + // Gotsta use another axis + + vUp.x = -1.0f; + vUp.y = 0.0f; + vUp.z = 0.0f; + } + + m_vRight = m_vPlaneDir.Cross(vUp); + m_vUp = m_vPlaneDir.Cross(m_vRight); + + + // Create the base object + + CreateDummyObject(); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CFallingStuffFX +// +//------------------------------------------------------------------ + +void CFallingStuffFX::Term() +{ + // Delete any left over sprites + + if (m_collSprites.GetSize()) + { + CLinkListNode *pNode = m_collSprites.GetHead(); + + while (pNode) + { + m_pLTClient->RemoveObject(pNode->m_Data->m_hObject); + debug_delete( pNode->m_Data ); + + pNode = pNode->m_pNext; + } + + m_collSprites.RemoveAll(); + } + + if (m_collSplashes.GetSize()) + { + CLinkListNode *pNode = m_collSplashes.GetHead(); + + while (pNode) + { + m_pLTClient->RemoveObject(pNode->m_Data->m_hObject); + debug_delete( pNode->m_Data ); + + pNode = pNode->m_pNext; + } + + m_collSplashes.RemoveAll(); + } + + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CFallingStuffFX +// +//------------------------------------------------------------------ + +bool CFallingStuffFX::Update(float tmFrameTime) +{ + // Base class update first + + m_vLastPos = m_vPos; + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + //increment our emission time by the elapsed frame time + m_tmElapsedEmission += tmFrameTime; + + if (!IsShuttingDown() && !IsSuspended() && (m_tmElapsedEmission > GetProps()->m_tmFallingStuffFXEmission)) + { + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + LTVector vScale; + vScale.Init(m_scale, m_scale, m_scale); + + LTVector vInterp; + LTVector vInterpCur = m_vPos; + + // Calculate interpolant for particle system + + if (GetProps()->m_nFallingStuffFXEmission) + { + vInterp = m_vPos - m_vLastPos; + vInterp /= (float)GetProps()->m_nFallingStuffFXEmission; + } + + for (uint32 i = 0; i < GetProps()->m_nFallingStuffFXEmission; i ++) + { + ocs.m_ObjectType = OT_SPRITE; + ocs.m_Flags = FLAG_VISIBLE | FLAG_NOLIGHT | FLAG_ROTATABLESPRITE; + + // Compute the initial position + + float xRand = GetProps()->m_fRadius * ((-10000.0f + (rand() % 20000)) / 10000.0f); + float zRand = GetProps()->m_fRadius * ((-10000.0f + (rand() % 20000)) / 10000.0f); + + ocs.m_Pos = m_vPos + (m_vRight * xRand) + (m_vUp * zRand); + + ocs.m_Scale = vScale; + strcpy(ocs.m_Filename, GetProps()->m_sSpriteName); + + // Move the start point + + vInterpCur += vInterp; + + HLOCALOBJ hNewSprite = m_pLTClient->CreateObject(&ocs); + + if (hNewSprite) + { + // Create a new sprite + + FALLING_THING *pNewSprite = debug_new( FALLING_THING ); + + if (GetProps()->m_nImpactCreate) + { + if (g_dwSplash > (uint32)GetProps()->m_nImpactCreate) + { + pNewSprite->m_bSplash = true; + g_dwSplash = 0; + } + else + { + pNewSprite->m_bSplash = false; + } + } + else + { + pNewSprite->m_bSplash = false; + } + + g_dwSplash ++; + + if (pNewSprite) + { + LTVector v; + + // Compute the initial velocity + + v = m_vPlaneDir * GetProps()->m_fVel; + + pNewSprite->m_hObject = hNewSprite; + pNewSprite->m_vVel = v; + pNewSprite->m_tmElapsed = 0.0f; + pNewSprite->m_vPos = ocs.m_Pos; + pNewSprite->m_vLastPos = ocs.m_Pos; + + m_collSprites.AddTail(pNewSprite); + } + } + } + + m_tmElapsedEmission = 0.0f; + + // And store the last position + + m_vLastPos = m_vPos; + } + + LTMatrix mSpin; + + if (GetProps()->m_bUseSpin) + { + // Setup rotation + + LTMatrix vRight; + LTMatrix vUp; + LTMatrix vForward; + LTMatrix vTmp; + + Mat_SetupRot(&vRight, &m_vRight, m_xRot); + Mat_SetupRot(&vUp, &m_vUp, m_yRot); + Mat_SetupRot(&vForward, &m_vPlaneDir, m_zRot); + + MatMul(&vTmp, &vRight, &vUp); + MatMul(&mSpin, &vTmp, &vForward); + + m_xRot += GetProps()->m_vRotAdd.x * tmFrameTime; + m_yRot += GetProps()->m_vRotAdd.y * tmFrameTime; + m_zRot += GetProps()->m_vRotAdd.z * tmFrameTime; + } + + // Get the camera rotation + + LTRotation orient; + m_pLTClient->GetObjectRotation(m_hCamera, &orient); + + LTRotation dRot(orient); + + LTVector vF = orient.Forward(); + + float rot = (float)atan2(vF.x, vF.z); + + // Update the sprites.... + + CLinkListNode *pNode = m_collSprites.GetHead(); + CLinkListNode *pDelNode; + + while (pNode) + { + pDelNode = NULL; + + FALLING_THING *pSprite = pNode->m_Data; + + //adjust our elapsed time + pSprite->m_tmElapsed += tmFrameTime; + + // Check for expiration + + if (pSprite->m_tmElapsed > GetProps()->m_tmSpriteLifespan) + { + // Destroy this object + + m_pLTClient->RemoveObject(pSprite->m_hObject); + + pDelNode = pNode; + } + else + { + // Update !! + + pSprite->m_vLastPos = pSprite->m_vPos; + + pSprite->m_vPos += (pSprite->m_vVel * tmFrameTime); + + // Rotate if neccessary + + TVector3 vPos = pSprite->m_vPos; + + if (GetProps()->m_bUseSpin) + { + MatVMul_InPlace(&mSpin, &vPos); + } + + // Add in wind + + vPos += (GetProps()->m_vWind * GetProps()->m_fWindAmount) * tmFrameTime; + + // Setup the new sprite position + + LTVector vPos2 = vPos; + m_pLTClient->SetObjectPos(pSprite->m_hObject, &vPos2); + + + // Setup the colour + + float r, g, b, a; + + m_pLTClient->GetObjectColor(pSprite->m_hObject, &r, &g, &b, &a); + CalcColour(pSprite->m_tmElapsed, GetProps()->m_tmSpriteLifespan, &r, &g, &b, &a); + m_pLTClient->SetObjectColor(pSprite->m_hObject, r, g, b, a); + + // Setup the scale + + float scale = 0.1f; + + CalcScale(pSprite->m_tmElapsed, GetProps()->m_tmSpriteLifespan, &scale); + + LTVector vScale; + vScale.Init(scale, scale * GetProps()->m_fStretchMul, scale); + m_pLTClient->SetObjectScale(pSprite->m_hObject, &vScale); + + // Setup the rotation + + dRot = LTRotation(0, 0, 0, 1); + LTRotation orient(dRot); + + orient.Rotate( orient.Up(), rot ); + + m_pLTClient->SetObjectRotation(pSprite->m_hObject, &orient); + + // Check to see if we need to start a splash sprite + + if (pSprite->m_bSplash) + { + ClientIntersectQuery ciq; + ClientIntersectInfo cii; + + ciq.m_From = pSprite->m_vLastPos; + ciq.m_To = pSprite->m_vPos; + + if ((GetProps()->m_sImpactSpriteName[0]) && (m_pLTClient->IntersectSegment(&ciq, &cii))) + { + // Create a splash sprite + + SPLASH *pSplash = debug_new( SPLASH ); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + LTVector vScale; + vScale.Init(0.0f, 0.0f, 0.0f); + + ocs.m_ObjectType = OT_SPRITE; + ocs.m_Flags = FLAG_VISIBLE | FLAG_ROTATABLESPRITE | FLAG_NOLIGHT; + ocs.m_Pos = cii.m_Point + (cii.m_Plane.m_Normal * 2.0f); + ocs.m_Scale = vScale; + + LTRotation dOrient( cii.m_Plane.m_Normal, LTVector(0.0f, 1.0f, 0.0f) ); + + strcpy(ocs.m_Filename, GetProps()->m_sImpactSpriteName); + + pSplash->m_hObject = m_pLTClient->CreateObject(&ocs); + pSplash->m_scale = 0.0f; + + LTRotation orient(dRot); + m_pLTClient->SetObjectRotation(pSplash->m_hObject, &orient); + + pSplash->m_tmElapsed = 0.0f; + + m_collSplashes.AddTail(pSplash); + + // Destroy this object + + m_pLTClient->RemoveObject(pSprite->m_hObject); + + // Delete the sprite + + pDelNode = pNode; + } + } + } + + pNode = pNode->m_pNext; + + if (pDelNode) m_collSprites.Remove(pDelNode); + } + + // Update our splashes + + CLinkListNode *pSplashNode = m_collSplashes.GetHead(); + + while (pSplashNode) + { + CLinkListNode *pDelNode = NULL; + + SPLASH *pSplash = pSplashNode->m_Data; + + //update the elapsed time on the splash + pSplash->m_tmElapsed += tmFrameTime; + + // Calculate the new scale + + float scale = GetProps()->m_fImpactScale1 + ((GetProps()->m_fImpactScale2 - GetProps()->m_fImpactScale1) * (pSplash->m_tmElapsed / GetProps()->m_tmImpactLifespan)); + + LTVector vScale(scale, scale, scale); + m_pLTClient->SetObjectScale(pSplash->m_hObject, &vScale); + + float r, g, b, a; + + m_pLTClient->GetObjectColor(pSplash->m_hObject, &r, &g, &b, &a); + + a = (float)(int)(pSplash->m_tmElapsed / GetProps()->m_tmImpactLifespan); + if (a < 0.0f) a = 0.0f; + if (a > 1.0f) a = 1.0f; + + m_pLTClient->SetObjectColor(pSplash->m_hObject, r, g, b, a); + + if (pSplash->m_tmElapsed > GetProps()->m_tmImpactLifespan) + { + m_pLTClient->RemoveObject(pSplash->m_hObject); + pDelNode = pSplashNode; + } + + pSplashNode = pSplashNode->m_pNext; + + if (pDelNode) m_collSplashes.Remove(pDelNode); + } + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetFallingStuffProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetFallingStuffProps(CFastList *pList) +{ + FX_PROP fxProp; + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 1.0f; + fVec[2] = 0.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Combo("Interpolate", "0,Yes,No"); + pList->AddTail(fxProp); + + fxProp.Path("Sprite", "spr|..."); + pList->AddTail(fxProp); + + fxProp.Int("StuffPerEmission", 5); + pList->AddTail(fxProp); + + fxProp.Float("EmissionInterval", 0.01f); + pList->AddTail(fxProp); + + fxProp.Float("StuffLifespan", 2.0f); + pList->AddTail(fxProp); + + fxProp.Float("Radius", 10.0f); + pList->AddTail(fxProp); + + fxProp.Vector("PlaneDir", fVec); + pList->AddTail(fxProp); + + fxProp.Float("Velocity", 10.0f); + pList->AddTail(fxProp); + + fxProp.Float("Stretch", 10.0f); + pList->AddTail(fxProp); + + fxProp.Path("ImpactSprite", "spr|..."); + pList->AddTail(fxProp); + + fxProp.Float("ImpactLifespan", 1.0f); + pList->AddTail(fxProp); + + fxProp.Float("ImpactScale1", 1.0f); + pList->AddTail(fxProp); + + fxProp.Float("ImpactScale2", 1.0f); + pList->AddTail(fxProp); + + fxProp.Int("ImpactCreate", 20); + pList->AddTail(fxProp); + + fxProp.Combo("ImpactPerturb", "0,None,Sine,Pendulum"); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/fallingstufffx.h b/Jack/ClientFxDLL/fallingstufffx.h new file mode 100644 index 00000000..c85fb38f --- /dev/null +++ b/Jack/ClientFxDLL/fallingstufffx.h @@ -0,0 +1,115 @@ +//------------------------------------------------------------------ +// +// MODULE : FALLINGSTUFFFX.H +// +// PURPOSE : Defines class CFallingStuffFX +// +// CREATED : On 10/26/98 At 4:00:00 PM +// +//------------------------------------------------------------------ + +#ifndef __FALLINGSTUFFFX__H_ + #define __FALLINGSTUFFFX__H_ + + // Includes.... + + #include "basefx.h" + #include "linklist.h" + #include "spritesystemfx.h" + + // Structures.... + + struct FALLING_THING + { + float m_tmElapsed; + LTVector m_vLastPos; + LTVector m_vPos; + LTVector m_vVel; + HLOCALOBJ m_hObject; + bool m_bSplash; + }; + + struct SPLASH + { + HOBJECT m_hObject; + float m_tmElapsed; + float m_scale; + }; + + // Defines.... + + #define FS_PLANEUP 3 + + #define FSPT_NONE 0 + #define FSPT_SINE 1 + #define FSPT_PENDULUM 2 + + // Classes.... + + class CFallingStuffProps : public CBaseFXProps + { + public: + + CFallingStuffProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sSpriteName[128]; + float m_fRadius; + uint32 m_nFallingStuffFXEmission; + float m_tmFallingStuffFXEmission; + float m_tmSpriteLifespan; + LTVector m_vPlaneDir; + float m_fVel; + LTVector m_vWind; + float m_fWindAmount; + float m_fStretchMul; + char m_sImpactSpriteName[128]; + float m_tmImpactLifespan; + float m_fImpactScale1; + float m_fImpactScale2; + int m_nImpactCreate; + bool m_bUseSpin; + }; + + class CFallingStuffFX : public CBaseFX + { + public : + + // Constuctor + + CFallingStuffFX(); + + // Destructor + + ~CFallingStuffFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + bool IsFinishedShuttingDown() { return (m_collSprites.GetSize() == 0) ? true : false; } + + // Accessors + + protected : + + const CFallingStuffProps* GetProps() { return (const CFallingStuffProps*)m_pProps; } + + // Member Variables + CLinkList m_collSprites; + float m_tmElapsedEmission; + float m_xRot; + float m_yRot; + float m_zRot; + CLinkList m_collSplashes; + int m_nImpactPerturbType; + LTVector m_vPlaneDir; + LTVector m_vUp; + LTVector m_vRight; + LTVector m_vLastPos; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/lightningfx.cpp b/Jack/ClientFxDLL/lightningfx.cpp new file mode 100644 index 00000000..b607c679 --- /dev/null +++ b/Jack/ClientFxDLL/lightningfx.cpp @@ -0,0 +1,912 @@ +//------------------------------------------------------------------ +// +// MODULE : LIGHTNINGFX.CPP +// +// PURPOSE : Implements class CLightningFX +// +// CREATED : On 10/12/98 At 5:07:14 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "LightningFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningProps::CLightningProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CLightningProps::CLightningProps() : + m_eBlendMode ( DRAWPRIM_NOBLEND ), + m_eAlphaTest ( DRAWPRIM_NOALPHATEST ), + m_eColorOp ( DRAWPRIM_NOCOLOROP ), + m_eFillMode ( DRAWPRIM_FILL ), + m_eAllignment ( ePTA_Camera ), + m_nMinNumBolts ( 1 ), + m_nMaxNumBolts ( 5 ), + m_nMinSegmentsPerBolt ( 10 ), + m_nMaxSegmentsPerBolt ( 50 ), + m_fMinBoltWidth ( 0.5f ), + m_fMaxBoltWidth ( 3.0f ), + m_fMinPerturb ( 0.0f ), + m_fMaxPerturb ( 35.0f ), + m_fMinLifetime ( 0.1f ), + m_fMaxLifetime ( 3.0f ), + m_fMinDelay ( 0.0f ), + m_fMaxDelay ( 0.1f ), + m_fPulse ( 0.0f ), + m_fOmniDirectionalRadius( 0.0f ) +{ + m_szNodeAttractors[0] = '\0'; + m_szSocketAttractors[0] = '\0'; + m_szTexture[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CLightningProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Texture" )) + { + fxProp.GetPath( m_szTexture ); + } + else if( !_stricmp( fxProp.m_sName, "BlendMode" )) + { + m_eBlendMode = (ELTBlendMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "AlphaTest" )) + { + m_eAlphaTest = (ELTTestMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "ColorOp" )) + { + m_eColorOp = (ELTColorOp)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "FillMode" )) + { + m_eFillMode = (ELTDPFillMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "Allignment" )) + { + m_eAllignment = (EPTAllignment)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "NodeAttractors" )) + { + fxProp.GetStringVal( m_szNodeAttractors ); + } + else if( !_stricmp( fxProp.m_sName, "SocketAttractors" )) + { + fxProp.GetStringVal( m_szSocketAttractors ); + } + else if( !_stricmp( fxProp.m_sName, "OmniDirectionalRadius" )) + { + m_fOmniDirectionalRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinNumBolts" )) + { + m_nMinNumBolts = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxNumBolts" )) + { + m_nMaxNumBolts = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinSegmentsPerBolt" )) + { + m_nMinSegmentsPerBolt = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxSegmentsPerBolt" )) + { + m_nMaxSegmentsPerBolt = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinBoltWidth" )) + { + m_fMinBoltWidth = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxBoltWidth" )) + { + m_fMaxBoltWidth = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinPerturb" )) + { + m_fMinPerturb = (float)fabs( fxProp.GetFloatVal()); + } + else if( !_stricmp( fxProp.m_sName, "MaxPerturb" )) + { + m_fMaxPerturb = (float)fabs( fxProp.GetFloatVal() ); + } + else if( !_stricmp( fxProp.m_sName, "MinLifetime" )) + { + m_fMinLifetime = (float)fabs( fxProp.GetFloatVal() ); + } + else if( !_stricmp( fxProp.m_sName, "MaxLifetime" )) + { + m_fMaxLifetime = (float)fabs( fxProp.GetFloatVal() ); + } + else if( !_stricmp( fxProp.m_sName, "MinDelay" )) + { + m_fMinDelay = (float)fabs( fxProp.GetFloatVal() ); + } + else if( !_stricmp( fxProp.m_sName, "MaxDelay" )) + { + m_fMaxDelay = (float)fabs( fxProp.GetFloatVal() ); + } + else if( !_stricmp( fxProp.m_sName, "Pulse" )) + { + m_fPulse = fxProp.GetFloatVal(); + } + } + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CLightningFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CLightningFX::CLightningFX() +: CBaseFX ( CBaseFX::eLightningFX ), + m_hTexture ( LTNULL ), + m_vTargetPos ( 0.0f, 0.0f, 0.0f ), + m_hTarget ( LTNULL ), + m_bReallyClose ( false ), + m_fDelay ( 0.0f ), + m_tmElapsedEmission ( 0.0f ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CLightningFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CLightningFX::~CLightningFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CLightningFX +// +//------------------------------------------------------------------ + +bool CLightningFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + LTVector vSave = pBaseData->m_vPos; + + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = pBaseData->m_dwObjectFlags | FLAG_NOLIGHT; + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2; + ocs.m_Pos = m_vCreatePos; + + m_hObject = m_pLTClient->CreateObject(&ocs); + if( !m_hObject ) + return false; + + // Are we rendering really close? + + m_bReallyClose = !!(pBaseData->m_dwObjectFlags & FLAG_REALLYCLOSE); + + + // Create the max number of bolts + + CLightningBolt *pBolt = LTNULL; + PT_TRAIL_SECTION ts; + + for( uint32 nBolts = 0; nBolts < GetProps()->m_nMaxNumBolts; ++nBolts ) + { + pBolt = debug_new( CLightningBolt ); + + pBolt->m_nNumSegments = GetRandom( (int)GetProps()->m_nMinSegmentsPerBolt, (int)GetProps()->m_nMaxSegmentsPerBolt ); + + // Add all the trail sections now since we don't need to constantly create and delete them... + + for( uint32 nSegs = 0; nSegs < pBolt->m_nNumSegments; ++nSegs ) + { + ts.m_vPos = m_vCreatePos; + pBolt->m_collPathPts.AddTail( ts ); + } + + m_lstBolts.push_back( pBolt ); + } + + + // Setup the target data so we now where the lightning is going... + + if( pBaseData->m_bUseTargetData ) + { + if( pBaseData->m_hTarget ) + { + m_hTarget = pBaseData->m_hTarget; + } + else if( m_hParent ) + { + m_hTarget = m_hParent; + } + else + { + m_hTarget = LTNULL; + } + + m_vTargetPos = pBaseData->m_vTargetPos; + } + else + { + // Use our parent as the target if we have one otherwise just use ourselves... + + m_hTarget = (m_hParent ? m_hParent : m_hObject); + m_vTargetPos = m_vCreatePos; + } + + // Load the texture if one was specified... + + if( !m_hTexture && GetProps()->m_szTexture[0] ) + { + m_pLTClient->GetTexInterface()->CreateTextureFromName( m_hTexture, GetProps()->m_szTexture ); + } + + // Create a list of attractor nodes + + if( m_hTarget ) + { + ILTModel *pModelLT = m_pLTClient->GetModelLT(); + ILTCommon *pCommonLT = m_pLTClient->Common(); + HMODELNODE hNode = -1; + HMODELSOCKET hSocket = -1; + HATTRACTOR hAttractor = INVALID_ATTRACTOR; + CAttractor cAttractor; + + // Add any nodes to our attractor list... + + if( GetProps()->m_szNodeAttractors[0] ) + { + ConParse parse( GetProps()->m_szNodeAttractors ); + while( pCommonLT->Parse( &parse ) == LT_OK ) + { + if( parse.m_nArgs > 0 && parse.m_Args[0] ) + { + if( pModelLT->GetNode( m_hTarget, parse.m_Args[0], hAttractor ) == LT_OK ) + { + cAttractor.m_hModel = m_hTarget; + cAttractor.m_hAttractor = hAttractor; + cAttractor.m_eType = CAttractor::eNode; + + m_lstAttractors.push_back( cAttractor ); + } + } + } + } + + // Add any sockets to our attractor list... + + if( GetProps()->m_szSocketAttractors[0] ) + { + ConParse parse( GetProps()->m_szSocketAttractors ); + while( pCommonLT->Parse( &parse ) == LT_OK ) + { + if( parse.m_nArgs > 0 && parse.m_Args[0] ) + { + if( pModelLT->GetSocket( m_hTarget, parse.m_Args[0], hAttractor ) == LT_OK ) + { + cAttractor.m_hModel = m_hTarget; + cAttractor.m_hAttractor = hAttractor; + cAttractor.m_eType = CAttractor::eSocket; + + m_lstAttractors.push_back( cAttractor ); + } + } + } + } + } + + m_tmElapsedEmission = 0.0f; + m_fDelay = 0.0f; + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CLightningFX +// +//------------------------------------------------------------------ + +void CLightningFX::Term() +{ + if( m_hObject ) + m_pLTClient->RemoveObject(m_hObject); + + m_hObject = NULL; + + if( m_hTexture ) + { + m_pLTClient->GetTexInterface()->ReleaseTextureHandle(m_hTexture); + m_hTexture = LTNULL; + } + + LightningBolts::iterator iter; + for( iter = m_lstBolts.begin(); iter != m_lstBolts.end(); ++iter ) + { + debug_delete( *iter ); + } + + m_lstBolts.clear(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : EmitBolts() +// +// PURPOSE : Decides how many bolts to show and sets them up +// +//------------------------------------------------------------------ + +void CLightningFX::EmitBolts( float tmFrameTime ) +{ + // Make sure enough time between emissions has passed... + m_tmElapsedEmission += tmFrameTime; + + if( m_fDelay < m_tmElapsedEmission ) + { + LTransform lTrans; + LTVector vAttractorPos; + ILTModel *pModelLT = m_pLTClient->GetModelLT(); + + uint32 nActiveBolts = GetRandom( (int)GetProps()->m_nMinNumBolts, (int)GetProps()->m_nMaxNumBolts ); + uint32 nBolt; + + bool bCanUseAttractors = (m_lstAttractors.size() > 0); + bool bCanUseRadius = (GetProps()->m_fOmniDirectionalRadius >= 1.0f); + + CLightningBolt *pBolt = LTNULL; + LightningBolts::iterator iter; + + for( nBolt = 0, iter = m_lstBolts.begin(); iter != m_lstBolts.end(), nBolt < nActiveBolts; ++iter, ++nBolt ) + { + pBolt = *iter; + + pBolt->m_fWidth = GetRandom( GetProps()->m_fMinBoltWidth, GetProps()->m_fMaxBoltWidth ); + pBolt->m_fLifetime = GetRandom( GetProps()->m_fMinLifetime, GetProps()->m_fMaxLifetime ); + pBolt->m_tmElapsed = 0.0f; + pBolt->m_bActive = true; + + // Grab the position of the object to compensate for offset + + if( m_hTarget ) + { + m_pLTClient->GetObjectPos( m_hTarget, &vAttractorPos ); + } + else + { + vAttractorPos = m_vTargetPos; + } + + // Decide if we should use an attractor or radius for the end pos... + + if( bCanUseAttractors && (!bCanUseRadius || GetRandom(0,1)) ) + { + uint8 nIndex = GetRandom( 0, m_lstAttractors.size() - 1 ); + CAttractor cAttractor = m_lstAttractors[nIndex]; + + if( cAttractor.GetTransform( lTrans, true ) == LT_OK ) + { + vAttractorPos = lTrans.m_Pos; + } + } + else if( bCanUseRadius ) + { + LTVector vRandomPos; + vRandomPos.x = GetRandom( -1.0f, 1.0f ); + vRandomPos.y = GetRandom( -1.0f, 1.0f ); + vRandomPos.z = GetRandom( -1.0f, 1.0f ); + + vRandomPos.Normalize(); + vRandomPos *= GetRandom( -GetProps()->m_fOmniDirectionalRadius, GetProps()->m_fOmniDirectionalRadius ); + + vAttractorPos = m_vPos + vRandomPos; + + IntersectQuery iQuery; + IntersectInfo iInfo; + + iQuery.m_From = m_vPos; + iQuery.m_To = vAttractorPos; + + if( m_pLTClient->IntersectSegment( &iQuery, &iInfo )) + { + vAttractorPos = iInfo.m_Point; + } + } + + + LTVector vNew = m_vPos; + LTVector vDir = vAttractorPos - vNew; + + float fStep = vDir.Length() / (float)pBolt->m_nNumSegments; + float fPerturb = GetRandom( GetProps()->m_fMinPerturb, GetProps()->m_fMaxPerturb ); + + vDir.Normalize(); + LTRotation rRot = LTRotation( vDir, LTVector( 0.0f, 1.0f, 0.0f )); + + CLinkListNode *pNode = pBolt->m_collPathPts.GetHead(); + while( pNode ) + { + pNode->m_Data.m_vPos = vNew; + pNode->m_Data.m_tmElapsed = 0.0f; + pNode->m_Data.m_vBisector.Init(); + + // Add in some perturb going in the direction of the attractor pos for the next section... + + vNew += (rRot.Forward() * fStep ); + vNew += (rRot.Up() * GetRandom( -fPerturb, fPerturb )); + vNew += (rRot.Right() * GetRandom( -fPerturb, fPerturb )); + + // Make sure the last section goes to the end pos... + + if( !pNode->m_pNext ) + pNode->m_Data.m_vPos = vAttractorPos; + + pNode = pNode->m_pNext; + } + } + + // Decide when the next emission will be... + + m_tmElapsedEmission = 0.0f; + m_fDelay = GetRandom( GetProps()->m_fMinDelay, GetProps()->m_fMaxDelay ); + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : PreRender() +// +// PURPOSE : Handle some precalculations of the bolts before they render +// +//------------------------------------------------------------------ + +void CLightningFX::PreRender( float tmFrameTime ) +{ + + LTVector vPulse; + LTVector vF(0.0f, 0.0f, 1.0f); + LTVector vU(0.0f, 1.0f, 0.0f); + LTVector vR(1.0f, 0.0f, 0.0f); + + + // Transform the bolt + + LTMatrix mCam; + if( m_bReallyClose ) + { + mCam.Identity(); + } + else + { + mCam = GetCamTransform(m_pLTClient, m_hCamera); + } + + + CLightningBolt *pBolt = LTNULL; + LightningBolts::iterator iter; + for( iter = m_lstBolts.begin(); iter != m_lstBolts.end(); ++iter ) + { + pBolt = *iter; + + // Skip this bolt if there are not enough segments... + + if( pBolt->m_collPathPts.GetSize() < 2 || !pBolt->m_bActive ) + continue; + + CLinkListNode *pNode = pBolt->m_collPathPts.GetHead(); + + //as long as some amount of time has passed, apply a pulse onto the bolt to make + //it jitter + if(tmFrameTime > 0.001f) + { + while (pNode) + { + vPulse = pNode->m_Data.m_vPos; + vPulse += (vF * GetRandom( -GetProps()->m_fPulse, GetProps()->m_fPulse )); + vPulse += (vU * GetRandom( -GetProps()->m_fPulse, GetProps()->m_fPulse )); + vPulse += (vR * GetRandom( -GetProps()->m_fPulse, GetProps()->m_fPulse )); + + if( pNode == pBolt->m_collPathPts.GetHead() || !pNode->m_pNext ) + { + MatVMul(&pNode->m_Data.m_vTran, &mCam, &pNode->m_Data.m_vPos); + } + else + { + MatVMul(&pNode->m_Data.m_vTran, &mCam, &vPulse); + } + + pNode = pNode->m_pNext; + } + } + + // Do some precalculations + + float fScale; + CalcScale( pBolt->m_tmElapsed, pBolt->m_fLifetime, &fScale ); + float fWidth = pBolt->m_fWidth * fScale; + + // Setup the colour + + float r, g, b, a; + CalcColour( pBolt->m_tmElapsed, pBolt->m_fLifetime, &r, &g, &b, &a ); + + int ir = Clamp( (int)(r * 255.0f), 0, 255 ); + int ig = Clamp( (int)(g * 255.0f), 0, 255 ); + int ib = Clamp( (int)(b * 255.0f), 0, 255 ); + int ia = Clamp( (int)(a * 255.0f), 0, 255 ); + + LTVector vStart, vEnd, vPrev, vBisector; + vBisector.z = 0.0f; + + pNode = pBolt->m_collPathPts.GetHead(); + + while( pNode ) + { + if( GetProps()->m_eAllignment == ePTA_Camera ) + { + // Compute the midpoint vectors + + if( pNode == pBolt->m_collPathPts.GetHead() ) + { + vStart = pNode->m_Data.m_vTran; + vEnd = pNode->m_pNext->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else if( pNode == pBolt->m_collPathPts.GetTail() ) + { + vEnd = pNode->m_Data.m_vTran; + vStart = pNode->m_pPrev->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else + { + vPrev = pNode->m_pPrev->m_Data.m_vTran; + vStart = pNode->m_Data.m_vTran; + vEnd = pNode->m_pNext->m_Data.m_vTran; + + float x1 = vEnd.y - vStart.y; + float y1 = -(vEnd.x - vStart.x); + float z1 = vStart.z - vEnd.z; + + float x2 = vStart.y - vPrev.y; + float y2 = -(vStart.x - vPrev.x); + float z2 = vPrev.z - vEnd.z; + + vBisector.x = (x1 + x2) / 2.0f; + vBisector.y = (y1 + y2) / 2.0f; + } + + pNode->m_Data.m_vBisector = vBisector; + } + + // Set the width for this section... + + pNode->m_Data.m_vBisector.Norm( fWidth ); + + // Set the color for this section... + + pNode->m_Data.m_red = ir; + pNode->m_Data.m_green = ig; + pNode->m_Data.m_blue = ib; + pNode->m_Data.m_alpha = ia; + + pNode = pNode->m_pNext; + } + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates the lightning +// +//------------------------------------------------------------------ + +bool CLightningFX::Update(float tmFrameTime) +{ + // Base class update first + + if (!CBaseFX::Update(tmFrameTime)) + return false; + + + if( !IsShuttingDown() ) + { + EmitBolts( tmFrameTime ); + } + + // Check to see if any bolts have expired... + + CLightningBolt *pBolt = LTNULL; + LightningBolts::iterator iter; + for( iter = m_lstBolts.begin(); iter != m_lstBolts.end(); ++iter ) + { + pBolt = *iter; + + //adjust our start time + pBolt->m_tmElapsed += tmFrameTime; + + if( pBolt->m_fLifetime < pBolt->m_tmElapsed ) + pBolt->m_bActive = false; + } + + // Setup the bolts for rendering + + PreRender( tmFrameTime ); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Render() +// +// PURPOSE : Renders the lightning using DrawPrim +// +//------------------------------------------------------------------ + +bool CLightningFX::Render() +{ + if(!CBaseFX::Render()) + return false; + + // Render the bolts... + + uint32 nTris = 0; + uint32 nVerts = 0; + + LT_POLYGT3 *pTri = g_pTris; + LTVector *pVerts = g_pVerts; + + + ILTDrawPrim *pDrawPrimLT; + pDrawPrimLT = m_pLTClient->GetDrawPrim(); + + if(!pDrawPrimLT) + return false; + + // Draw the polylist + pDrawPrimLT->SetTexture( m_hTexture ); + pDrawPrimLT->SetReallyClose( m_bReallyClose ); + pDrawPrimLT->SetCamera( m_hCamera ); + pDrawPrimLT->SetTransformType( DRAWPRIM_TRANSFORM_CAMERA ); + pDrawPrimLT->SetZBufferMode( DRAWPRIM_ZRO ); + pDrawPrimLT->SetFillMode( GetProps()->m_eFillMode ); + pDrawPrimLT->SetAlphaTestMode( GetProps()->m_eAlphaTest ); + pDrawPrimLT->SetAlphaBlendMode( GetProps()->m_eBlendMode ); + pDrawPrimLT->SetColorOp( GetProps()->m_eColorOp ); + + pDrawPrimLT->BeginDrawPrim(); + + CLinkListNode *pNode = LTNULL; + CLightningBolt *pBolt = LTNULL; + LightningBolts::iterator iter; + + for( iter = m_lstBolts.begin(); iter != m_lstBolts.end(); ++iter ) + { + pBolt = *iter; + + if( !pBolt->m_bActive ) + continue; + + pNode = pBolt->m_collPathPts.GetHead(); + + while (pNode->m_pNext) + { + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + LTVector vBisector1 = pNode->m_Data.m_vBisector; + LTVector vBisector2 = pNode->m_pNext->m_Data.m_vBisector; + + *pVerts ++ = vStart + vBisector1; + *pVerts ++ = vEnd + vBisector2; + *pVerts ++ = vEnd - vBisector2; + *pVerts ++ = vStart - vBisector1; + + uint8 r1 = pNode->m_Data.m_red; + uint8 g1 = pNode->m_Data.m_green; + uint8 b1 = pNode->m_Data.m_blue; + uint8 a1 = pNode->m_Data.m_alpha; + + uint8 r2 = pNode->m_pNext->m_Data.m_red; + uint8 g2 = pNode->m_pNext->m_Data.m_green; + uint8 b2 = pNode->m_pNext->m_Data.m_blue; + uint8 a2 = pNode->m_pNext->m_Data.m_alpha; + + + SetupVert(pTri, 0, g_pVerts[nVerts], r1, g1, b1, a1, 0.0f, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 1], r2, g2, b2, a2, 1.0f, 0.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 2], r2, g2, b2, a2, 1.0f, 1.0f); + + pTri ++; + nTris ++; + + SetupVert(pTri, 0, g_pVerts[nVerts], r1, g1, b1, a1, 0.0f, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 2], r2, g2, b2, a2, 1.0f, 1.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 3], r1, g1, b1, a1, 0.0f, 1.0f); + + pTri ++; + nTris ++; + + nVerts += 4; + + pNode = pNode->m_pNext; + + //see if we need to flush our buffer + if(nTris >= MAX_BUFFER_TRIS - 2) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + nTris = 0; + nVerts = 0; + pTri = g_pTris; + pVerts = g_pVerts; + } + } + } + + if(nTris > 0) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + } + + pDrawPrimLT->EndDrawPrim(); + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : OnRendererShutdown() +// +// PURPOSE : Handles app focus issues..... +// +//------------------------------------------------------------------ + +void CLightningFX::OnRendererShutdown() +{ + if (m_hTexture) + { + m_pLTClient->GetTexInterface()->ReleaseTextureHandle(m_hTexture); + m_hTexture = LTNULL; + } +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetLightningProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetLightningProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + + fxProp.Path("Texture", "dtx|..."); + pList->AddTail(fxProp); + + fxProp.Combo("BlendMode", "0,None,Add,Saturate,ModSrcAlpha,ModSrcColor,ModDstColor,MulSrcColDstCol,MulSrcAlphaOne,MulSrcAlpha,MulSrcColOne,MulDstColZero" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "AlphaTest", "0,None,Less,LessOrEqual,Greater,GreaterOrEqual,Equal,NotEqual" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "ColorOp", "0,NoTexture,Modulate,Additive,NoColor" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "FillMode", "1,WireFrame,Fill" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Allignment", "0,Camera,Up,Right,Forward" ); + pList->AddTail( fxProp ); + + fxProp.String( "NodeAttractors", "" ); + pList->AddTail( fxProp ); + + fxProp.String( "SocketAttractors", "" ); + pList->AddTail( fxProp ); + + fxProp.Float( "OmniDirectionalRadius", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Int( "MinNumBolts", 1 ); + pList->AddTail( fxProp ); + + fxProp.Int( "MaxNumBolts", 5 ); + pList->AddTail( fxProp ); + + fxProp.Int( "MinSegmentsPerBolt", 10 ); + pList->AddTail( fxProp ); + + fxProp.Int( "MaxSegmentsPerBolt", 50 ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinBoltWidth", 0.5f ); + pList->AddTail(fxProp); + + fxProp.Float( "MaxBoltWidth", 3.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinPerturb", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxPerturb", 35.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinLifetime", 0.1f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxLifetime", 3.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MinDelay", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxDelay", 0.1f ); + pList->AddTail( fxProp ); + + fxProp.Float( "Pulse", 5.0f ); + pList->AddTail( fxProp ); +} + diff --git a/Jack/ClientFxDLL/lightningfx.h b/Jack/ClientFxDLL/lightningfx.h new file mode 100644 index 00000000..5146264d --- /dev/null +++ b/Jack/ClientFxDLL/lightningfx.h @@ -0,0 +1,189 @@ +//------------------------------------------------------------------ +// +// MODULE : LIGHTNINGFX.H +// +// PURPOSE : Defines class CLightningFX +// +// CREATED : On 10/12/98 At 5:07:15 PM +// +//------------------------------------------------------------------ + +#ifndef __LIGHTNINGFX__H_ + #define __LIGHTNINGFX__H_ + + // Includes.... + + #include "polytubefx.h" + + typedef uint32 HATTRACTOR; + #define INVALID_ATTRACTOR ((HATTRACTOR)-1) + + + class CLightningProps : public CBaseFXProps + { + public: + + CLightningProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_szTexture[128]; + + ELTBlendMode m_eBlendMode; + ELTTestMode m_eAlphaTest; + ELTColorOp m_eColorOp; + ELTDPFillMode m_eFillMode; + EPTAllignment m_eAllignment; + + char m_szNodeAttractors[128]; + char m_szSocketAttractors[128]; + + uint32 m_nMinNumBolts; + uint32 m_nMaxNumBolts; + + uint32 m_nMinSegmentsPerBolt; + uint32 m_nMaxSegmentsPerBolt; + + float m_fMinBoltWidth; + float m_fMaxBoltWidth; + + float m_fMinPerturb; + float m_fMaxPerturb; + + float m_fMinLifetime; + float m_fMaxLifetime; + + float m_fMinDelay; + float m_fMaxDelay; + + float m_fPulse; + float m_fOmniDirectionalRadius; + }; + + class CLightningFX : public CBaseFX + { + public : + + CLightningFX(); + ~CLightningFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmCur); + bool Render(); + void ReadProps( CLinkList *pProps ); + void Term(); + void OnRendererShutdown(); + + + protected: + + void EmitBolts( float tmCur ); + void PreRender( float tmCur ); + + protected: + + class CLightningBolt + { + public: + + CLightningBolt() + : m_fLifetime ( 0.0f ), + m_tmElapsed ( 0.0f ), + m_fWidth ( 0.0f ), + m_nNumSegments ( 0 ), + m_bActive ( false ) + + { + + } + + ~CLightningBolt() + { + m_collPathPts.RemoveAll(); + } + + CLinkList m_collPathPts; + + float m_fLifetime; + float m_tmElapsed; + float m_fWidth; + uint32 m_nNumSegments; + bool m_bActive; + + LTVector m_vLastEmitterPos; + LTVector m_vLastAttractorPos; + }; + + class CAttractor + { + public: + + CAttractor() + : m_hModel ( LTNULL ), + m_hAttractor ( INVALID_ATTRACTOR ), + m_eType ( eInvalid ) + { + } + + LTRESULT GetTransform( LTransform &trans, bool bWorldSpace = false ) + { + if( m_hModel && (m_hAttractor != INVALID_ATTRACTOR) ) + { + switch( m_eType ) + { + case eNode: + { + return g_pLTClient->GetModelLT()->GetNodeTransform( m_hModel, m_hAttractor, trans, bWorldSpace ); + } + break; + + case eSocket: + { + return g_pLTClient->GetModelLT()->GetSocketTransform( m_hModel, m_hAttractor, trans, bWorldSpace ); + } + break; + + default: + break; + } + } + + return LT_ERROR; + } + + enum AttractorType + { + eInvalid, + eNode, + eSocket, + }; + + HOBJECT m_hModel; + HATTRACTOR m_hAttractor; + AttractorType m_eType; + }; + + const CLightningProps* GetProps() { return (const CLightningProps*)m_pProps; } + + typedef std::vector LightningBolts; + LightningBolts m_lstBolts; + + typedef std::vector AttractorList; + AttractorList m_lstAttractors; + + HTEXTURE m_hTexture; + + bool m_bReallyClose; + + HOBJECT m_hTarget; + LTVector m_vTargetPos; + float m_fDelay; + + float m_tmElapsedEmission; + + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/ltbmodelfx.cpp b/Jack/ClientFxDLL/ltbmodelfx.cpp new file mode 100644 index 00000000..9704f7d2 --- /dev/null +++ b/Jack/ClientFxDLL/ltbmodelfx.cpp @@ -0,0 +1,580 @@ +//------------------------------------------------------------------ +// +// MODULE : LTBMODELFX.CPP +// +// PURPOSE : Implements class CLTBModelFX +// +// CREATED : On 12/3/98 At 6:34:44 PM +// +//------------------------------------------------------------------ + +// +// Includes.... +// + + #include "stdafx.h" + #include "LTBModelFX.h" + #include "ClientFX.h" + +// +// Defines... +// + + #define FACE_CAMERAFACING 0 + #define FACE_PARENTALIGN 2 + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLTBModelProps::CLTBModelProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CLTBModelProps::CLTBModelProps() : + m_vNorm ( 0.0f, 0.0f, 1.0f ), + m_nFacing ( 0 ), + m_bShadow ( LTFALSE ), + m_bOverrideAniLength ( LTFALSE ), + m_fAniLength ( 0.0f ), + m_bSyncToModelAnim ( LTFALSE ), + m_bSyncToKey ( LTFALSE ), + m_bRotate ( LTFALSE ) +{ + m_szModelName[0] = '\0'; + m_szAnimName[0] = '\0'; + + m_szSkinName[0][0] = '\0'; + m_szSkinName[1][0] = '\0'; + m_szSkinName[2][0] = '\0'; + m_szSkinName[3][0] = '\0'; + m_szSkinName[4][0] = '\0'; + + m_szRenderStyle[0][0] = '\0'; + m_szRenderStyle[1][0] = '\0'; + m_szRenderStyle[2][0] = '\0'; + m_szRenderStyle[3][0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCamJitterProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CLTBModelProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Model" )) + { + fxProp.GetPath( m_szModelName ); + } + else if( !_stricmp( fxProp.m_sName, "Skin0" )) + { + fxProp.GetPath( m_szSkinName[0] ); + } + else if( !_stricmp( fxProp.m_sName, "Skin1" )) + { + fxProp.GetPath( m_szSkinName[1] ); + } + else if( !_stricmp( fxProp.m_sName, "Skin2" )) + { + fxProp.GetPath( m_szSkinName[2] ); + } + else if( !_stricmp( fxProp.m_sName, "Skin3" )) + { + fxProp.GetPath( m_szSkinName[3] ); + } + else if( !_stricmp( fxProp.m_sName, "Skin4" )) + { + fxProp.GetPath( m_szSkinName[4] ); + } + else if( !_stricmp( fxProp.m_sName, "Facing" )) + { + m_nFacing = fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "Normal" )) + { + m_vNorm = fxProp.GetVector(); + + // Dont norm a zero length vector! + + if( m_vNorm.LengthSquared() > MATH_EPSILON ) + { + m_vNorm.Normalize(); + } + else + { + // Just kludge the forward down the Z + + m_vNorm.Init( 0.0f, 0.0f, 1.0f ); + } + + } + else if( !_stricmp( fxProp.m_sName, "Shadow" )) + { + m_bShadow = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "OverrideAniLength" )) + { + m_bOverrideAniLength = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "AniName" )) + { + fxProp.GetStringVal(m_szAnimName); + } + else if( !_stricmp( fxProp.m_sName, "AniLength" )) + { + m_fAniLength = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "RenderStyle0" )) + { + fxProp.GetPath( m_szRenderStyle[0] ); + } + else if( !_stricmp( fxProp.m_sName, "RenderStyle1" )) + { + fxProp.GetPath( m_szRenderStyle[1] ); + } + else if( !_stricmp( fxProp.m_sName, "RenderStyle2" )) + { + fxProp.GetPath( m_szRenderStyle[2] ); + } + else if( !_stricmp( fxProp.m_sName, "RenderStyle3" )) + { + fxProp.GetPath( m_szRenderStyle[3] ); + } + else if( !_stricmp( fxProp.m_sName, "SyncToModelAnim" ) ) + { + m_bSyncToModelAnim = (LTBOOL)fxProp.GetComboVal(); + m_bSyncToKey = LTFALSE; + } + else if( !_stricmp( fxProp.m_sName, "SyncToKey" ) ) + { + m_bSyncToKey = (LTBOOL)fxProp.GetComboVal(); + m_bSyncToModelAnim = LTFALSE; + } + } + + m_bRotate = ( (m_vRotAdd.x != 0.0f) || (m_vRotAdd.y != 0.0f) || (m_vRotAdd.z != 0.0f) ) ? LTTRUE : LTFALSE ; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CLTBModelFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CLTBModelFX::CLTBModelFX() +: CBaseFX ( CBaseFX::eLTBModelFX ), + m_fAniRate ( 0.0f ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CLTBModelFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CLTBModelFX::~CLTBModelFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CLTBModelFX +// +//------------------------------------------------------------------ + +bool CLTBModelFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + // Use the "target" Normal instead, if one was specified... + + LTVector vNorm = GetProps()->m_vNorm; + + if( pBaseData->m_vTargetNorm.LengthSquared() > MATH_EPSILON ) + { + vNorm = pBaseData->m_vTargetNorm; + vNorm.Normalize(); + } + + // Develop the Right and Up vectors based off the Forward... + + LTVector vR, vU; + if( (1.0f == vNorm.y) || (-1.0f == vNorm.y) ) + { + vR = LTVector( 1.0f, 0.0f, 0.0f ).Cross( vNorm ); + } + else + { + vR = LTVector( 0.0f, 1.0f, 0.0f ).Cross( vNorm ); + } + + vU = vNorm.Cross( vR ); + m_rNormalRot = LTRotation( vNorm, vU ); + + + ObjectCreateStruct ocs; + + // Combine the direction we would like to face with our parents rotation... + + if( m_hParent ) + { + m_pLTClient->GetObjectRotation( m_hParent, &ocs.m_Rotation ); + } + else + { + ocs.m_Rotation = m_rCreateRot; + } + + ocs.m_Rotation = ocs.m_Rotation * m_rNormalRot; + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags |= pBaseData->m_dwObjectFlags | (GetProps()->m_bShadow ? FLAG_SHADOW : 0 ); + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2; + + // Calculate the position with the offset in 'local' coordinate space... + + LTMatrix mMat; + ocs.m_Rotation.ConvertToMatrix( mMat ); + + m_vPos = ocs.m_Pos = m_vCreatePos + (mMat * GetProps()->m_vOffset); + + + SAFE_STRCPY( ocs.m_Filename, GetProps()->m_szModelName ); + + SAFE_STRCPY( ocs.m_SkinNames[0], GetProps()->m_szSkinName[0] ); + SAFE_STRCPY( ocs.m_SkinNames[1], GetProps()->m_szSkinName[1] ); + SAFE_STRCPY( ocs.m_SkinNames[2], GetProps()->m_szSkinName[2] ); + SAFE_STRCPY( ocs.m_SkinNames[3], GetProps()->m_szSkinName[3] ); + SAFE_STRCPY( ocs.m_SkinNames[4], GetProps()->m_szSkinName[4] ); + + SAFE_STRCPY( ocs.m_RenderStyleNames[0], GetProps()->m_szRenderStyle[0] ); + SAFE_STRCPY( ocs.m_RenderStyleNames[1], GetProps()->m_szRenderStyle[1] ); + SAFE_STRCPY( ocs.m_RenderStyleNames[2], GetProps()->m_szRenderStyle[2] ); + SAFE_STRCPY( ocs.m_RenderStyleNames[3], GetProps()->m_szRenderStyle[3] ); + + m_hObject = m_pLTClient->CreateObject(&ocs); + if( !m_hObject ) + return LTFALSE; + + ILTModel *pLTModel = m_pLTClient->GetModelLT(); + ANIMTRACKERID nTracker; + + pLTModel->GetMainTracker( m_hObject, nTracker ); + + //setup the animation if the user specified one + if( strlen(GetProps()->m_szAnimName) > 0) + { + //ok, we need to set this + HMODELANIM hAnim = m_pLTClient->GetAnimIndex(m_hObject, GetProps()->m_szAnimName); + + if(hAnim != INVALID_MODEL_ANIM) + { + //ok, lets set this animation + pLTModel->SetCurAnim(m_hObject, nTracker, hAnim); + pLTModel->ResetAnim(m_hObject, nTracker); + } + } + //disable looping on this animation (so we can actually stop!) + pLTModel->SetLooping(m_hObject, nTracker, false); + + // Setup the initial data needed to override the models animation length... + if( GetProps()->m_bOverrideAniLength ) + { + uint32 nAnimLength; + + pLTModel->GetCurAnimLength( m_hObject, nTracker, nAnimLength ); + pLTModel->SetCurAnimTime( m_hObject, nTracker, 0 ); + + float fAniLength = (GetProps()->m_fAniLength < MATH_EPSILON) ? GetProps()->m_tmLifespan : GetProps()->m_fAniLength; + + if( fAniLength >= MATH_EPSILON || fAniLength <= -MATH_EPSILON ) + m_fAniRate = (nAnimLength * 0.001f) / fAniLength; + + pLTModel->SetAnimRate( m_hObject, nTracker, m_fAniRate ); + } + + // Success !! + + return LTTRUE; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CLTBModelFX +// +//------------------------------------------------------------------ + +bool CLTBModelFX::IsFinishedShuttingDown() +{ + //if we are syncing to the model key, we are always done + if(GetProps()->m_bSyncToKey) + { + return true; + } + + //otherwise just ask the animation if it has completed + ANIMTRACKERID nTracker; + m_pLTClient->GetModelLT()->GetMainTracker( m_hObject, nTracker ); + + uint32 dwState = 0; + m_pLTClient->GetModelLT()->GetPlaybackState(m_hObject,nTracker,dwState); + + return (bool)(!!(dwState & MS_PLAYDONE)); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CLTBModelFX +// +//------------------------------------------------------------------ + +void CLTBModelFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CLTBModelFX +// +//------------------------------------------------------------------ + +bool CLTBModelFX::Update(float tmFrameTime) +{ + + //Ok, what we are going to do is see if we are supposed to be sync'd to the + //animation. If so, we are going to flat out ignore tmCur, and instead generate + //our own. This way we can match the model exactly. + if(GetProps()->m_bSyncToModelAnim) + { + //we need to find out where in the animation the model currently is + ILTModel *pLTModel = m_pLTClient->GetModelLT(); + ANIMTRACKERID nTracker; + + if(pLTModel->GetMainTracker( m_hObject, nTracker ) == LT_OK) + { + //we have the main tracker, see where in its timeline it is + uint32 nCurrTime; + uint32 nAnimTime; + + pLTModel->GetCurAnimTime(m_hObject, nTracker, nCurrTime); + pLTModel->GetCurAnimLength(m_hObject, nTracker, nAnimTime); + + if(nAnimTime) + { + //handle wrapping + nCurrTime %= nAnimTime; + + //ok, now convert cur time to a valid time + m_tmElapsed = (nCurrTime * GetProps()->m_tmLifespan) / (float)nAnimTime; + } + else + { + //zero length animation? + m_tmElapsed = 0.0f; + } + } + } + else if(GetProps()->m_bSyncToKey) + { + //we need to find out where in the key we currently are + ILTModel *pLTModel = m_pLTClient->GetModelLT(); + ANIMTRACKERID nTracker; + + if(pLTModel->GetMainTracker( m_hObject, nTracker ) == LT_OK) + { + //we have the main tracker, see where in its timeline it is + uint32 nAnimLength; + m_pLTClient->GetModelLT()->ResetAnim( m_hObject, nTracker ); + pLTModel->GetCurAnimLength(m_hObject, nTracker, nAnimLength); + + if(nAnimLength > 0) + nAnimLength--; + + float tmWrappedTime = fmodf(m_tmElapsed / GetProps()->m_tmLifespan, 1.0f); + uint32 nAnimTime = (uint32)(tmWrappedTime * nAnimLength); + pLTModel->SetCurAnimTime(m_hObject, nTracker, nAnimTime); + } + } + + // Base class update first + if (!CBaseFX::Update(tmFrameTime)) + return false; + + + //see if we should reset our model animation + if(!GetProps()->m_bSyncToKey && IsFinishedShuttingDown()) + { + //Reset the animation + ANIMTRACKERID nTracker; + + m_pLTClient->GetModelLT()->GetMainTracker( m_hObject, nTracker ); + m_pLTClient->GetModelLT()->ResetAnim( m_hObject, nTracker ); + + if(GetProps()->m_bOverrideAniLength) + m_pLTClient->GetModelLT()->SetAnimRate( m_hObject, nTracker, m_fAniRate); + } + + // Align if neccessary, to the rotation of our parent + + if ((m_hParent) && (GetProps()->m_nFacing == FACE_PARENTALIGN)) + { + LTRotation rParentRot; + m_pLTClient->GetObjectRotation(m_hParent, &rParentRot); + rParentRot = (GetProps()->m_bRotate ? rParentRot : rParentRot * m_rNormalRot); + m_pLTClient->SetObjectRotation(m_hObject, &rParentRot); + } + + + // If we want to add a rotation, make sure we are facing the correct way... + + if( GetProps()->m_bRotate ) + { + LTFLOAT tmFrame = tmFrameTime; + LTVector vR( m_rRot.Right() ); + LTVector vU( m_rRot.Up() ); + LTVector vF( m_rRot.Forward() ); + + LTRotation rRotation; + + if( m_hCamera && (GetProps()->m_nFacing == FACE_CAMERAFACING)) + { + m_pLTClient->GetObjectRotation( m_hCamera, &rRotation ); + } + else + { + m_pLTClient->GetObjectRotation( m_hObject, &rRotation ); + } + + m_rRot.Rotate( vR, MATH_DEGREES_TO_RADIANS( GetProps()->m_vRotAdd.x * tmFrame )); + m_rRot.Rotate( vU, MATH_DEGREES_TO_RADIANS( GetProps()->m_vRotAdd.y * tmFrame )); + m_rRot.Rotate( vF, MATH_DEGREES_TO_RADIANS( GetProps()->m_vRotAdd.z * tmFrame )); + + rRotation = rRotation * m_rRot; + + m_pLTClient->SetObjectRotation( m_hObject, &(rRotation * m_rNormalRot)); + } + else if( GetProps()->m_nFacing == FACE_CAMERAFACING ) + { + LTRotation rCamRot; + + m_pLTClient->GetObjectRotation( m_hCamera, &rCamRot ); + m_pLTClient->SetObjectRotation( m_hObject, &(rCamRot * m_rNormalRot) ); + } + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetModelFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetLTBModelProps(CFastList *pList) +{ + FX_PROP fxProp; + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 0.0f; + fVec[2] = 1.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path( "Model", "ltb|..." ); + pList->AddTail(fxProp); + + fxProp.Path( "Skin0", "dtx|..." ); + pList->AddTail(fxProp); + + fxProp.Path( "Skin1", "dtx|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "Skin2", "dtx|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "Skin3", "dtx|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "Skin4", "dtx|..." ); + pList->AddTail( fxProp ); + + fxProp.Vector( "Normal", fVec ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Facing", "2,CameraFacing,AlongNormal,ParentAlign" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Shadow", "0,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "OverrideAniLength", "0,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.String( "AniName", ""); + pList->AddTail( fxProp ); + + fxProp.Float( "AniLength", 0 ); + pList->AddTail( fxProp ); + + fxProp.Path( "RenderStyle0", "ltb|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "RenderStyle1", "ltb|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "RenderStyle2", "ltb|..." ); + pList->AddTail( fxProp ); + + fxProp.Path( "RenderStyle3", "ltb|..." ); + pList->AddTail( fxProp ); + + fxProp.Combo( "SyncToModelAnim", "0,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "SyncToKey", "0,No,Yes" ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/ltbmodelfx.h b/Jack/ClientFxDLL/ltbmodelfx.h new file mode 100644 index 00000000..987a1b7a --- /dev/null +++ b/Jack/ClientFxDLL/ltbmodelfx.h @@ -0,0 +1,75 @@ +//------------------------------------------------------------------ +// +// MODULE : LTBMODELFX.H +// +// PURPOSE : Defines class CLTBModelFX +// +// CREATED : On 12/3/98 At 6:34:45 PM +// +//------------------------------------------------------------------ + +#ifndef __LTBMODELFX__H_ + #define __LTBMODELFX__H_ + + // Includes.... + + #include "basefx.h" + + class CLTBModelProps : public CBaseFXProps + { + public: + + CLTBModelProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_szModelName[MAX_CS_FILENAME_LEN+1]; + char m_szSkinName[5][MAX_CS_FILENAME_LEN+1]; + char m_szRenderStyle[4][MAX_CS_FILENAME_LEN+1]; + char m_szAnimName[MAX_CS_FILENAME_LEN+1]; + LTVector m_vNorm; + uint8 m_nFacing; + LTBOOL m_bShadow; + LTBOOL m_bOverrideAniLength; + LTBOOL m_bSyncToModelAnim; + LTBOOL m_bSyncToKey; + LTFLOAT m_fAniLength; + LTBOOL m_bRotate; + }; + + + + class CLTBModelFX : public CBaseFX + { + public : + + // Constuctor + + CLTBModelFX(); + + // Destructor + + ~CLTBModelFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmCur); + void Term(); + + virtual bool IsFinishedShuttingDown(); + + // Accessors + + protected : + + const CLTBModelProps* GetProps() { return (const CLTBModelProps*)m_pProps; } + + // Member Variables + LTRotation m_rRot; + float m_fAniRate; + LTRotation m_rNormalRot; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/memarray.h b/Jack/ClientFxDLL/memarray.h new file mode 100644 index 00000000..1c19de79 --- /dev/null +++ b/Jack/ClientFxDLL/memarray.h @@ -0,0 +1,286 @@ +//---------------------------------------------------------- +// +// MODULE : MEMARRAY.H +// +// PUROSE : CMemArray definition file +// +// CREATED : 10 / 27 / 1996 +// +//---------------------------------------------------------- + +#ifndef __MEMARRAY_H_ + #define __MEMARRAY_H_ + + // Defines.... + + #define DEFAULT_GROWBY 50 + + // Class declaration.... + + template class CMemArray + { + public: + + // Constructor + + CMemArray(); + + // Destructor + + ~CMemArray() { Term(); } + + // Member Functions + + void Term(); + + T* Add(T data); + T Get(uint32 i); + void Remove(uint32 i); + void Remove(T pPtr); + void RemoveAll(); + void SetNumElements(uint32 nElements) { m_nElements = nElements; } + void SetGrowBy(int GrowBy) { m_nGrowBy = GrowBy; } + + // Operators + + T operator [] (uint32 i) { return m_pData[i]; } + + // Accessors + + T* GetData() { return m_pData; } + uint32 GetSize() { return m_nElements; } + + private: + + // Member Variables + + T *m_pData; + uint32 m_nElements; + uint32 m_nSize; + uint32 m_nGrowBy; + }; + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray() + // + // PURPOSE : Standard constructor + // + //---------------------------------------------------------- + + template inline CMemArray::CMemArray() + { + m_pData = NULL; + m_nElements = 0; + m_nSize = 0; + m_nGrowBy = DEFAULT_GROWBY; + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::Term() + // + // PURPOSE : Terminates a CMemArray + // + //---------------------------------------------------------- + + template inline void CMemArray::Term() + { + if (m_pData) debug_deletea( m_pData ); + + m_pData = NULL; + m_nElements = 0; + m_nSize = 0; + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::Add() + // + // PURPOSE : Adds and element to the array + // + //---------------------------------------------------------- + + template inline T* CMemArray::Add(T data) + { + if ((m_nSize) && (m_nElements < m_nSize - 1)) + { + // Simply add the data to the array + + m_pData[m_nElements ++] = data; + + return m_pData + m_nElements - 1; + } + else + { + // If m_pData is NULL, create array + + if (!m_pData) + { + m_pData = debug_newa( T, m_nGrowBy ); + if (!m_pData) return NULL; + + m_nSize = m_nGrowBy; + + // Add the data + + m_pData[m_nElements ++] = data; + + return m_pData + m_nElements - 1; + } + else + { + // Must grow the array + + T* pTmp = debug_newa( T, m_nSize + m_nGrowBy ); + if (!pTmp) return NULL; + + m_nSize += m_nGrowBy; + + // Copy m_pData to pTmp; + + memcpy(pTmp, m_pData, m_nElements * sizeof(T)); + + // Delete the old array + + debug_deletea( m_pData ); + + // And set the new array + + m_pData = pTmp; + + // Add the data + + m_pData[m_nElements ++] = data; + + return m_pData + m_nElements - 1; + } + } + + return NULL; + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::Get() + // + // PURPOSE : Gets an entry in the array + // + //---------------------------------------------------------- + + template inline T CMemArray::Get(uint32 i) + { + ASSERT(m_pData); + ASSERT(i < m_nElements); + + return m_pData[i]; + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::Remove() + // + // PURPOSE : Removes an entry from the array + // + //---------------------------------------------------------- + + template inline void CMemArray::Remove(uint32 i) + { + ASSERT(m_pData); + ASSERT(m_nElements > 0); + ASSERT(i < m_nElements); + + // Remove the array element + + T *pPtr = m_pData + i; + + if (i < m_nElements) + { + // Copy all elements down by one + + for (uint32 j = i; j < m_nElements - 1; j ++) + { + m_pData[j] = m_pData[j + 1]; + } + } + + m_nElements --; + + if (m_nElements == 0) RemoveAll(); + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::Remove() + // + // PURPOSE : Removes an entry from the array + // + //---------------------------------------------------------- + + template inline void CMemArray::Remove(T pPtr) + { + ASSERT(m_pData); + ASSERT(m_nElements > 0); + + // Remove the array element + + uint32 i; + + for (i = 0; i < m_nElements; i ++) + { + if (m_pData[i] = pPtr) break; + } + + if (i < m_nElements) + { + // Copy all elements down by one + + for (uint32 j = i; j < m_nElements - 1; j ++) + { + m_pData[j] = m_pData[j + 1]; + } + } + + m_nElements --; + + if (m_nElements == 0) RemoveAll(); + } + + //---------------------------------------------------------- + // + // FUNCTION : CMemArray::RemoveAll() + // + // PURPOSE : Removes all elements from array + // + //---------------------------------------------------------- + + template inline void CMemArray::RemoveAll() + { + Term(); + } + + //---------------------------------------------------------- + // + // FUNCTION : + // + // PURPOSE : + // + //---------------------------------------------------------- + + //---------------------------------------------------------- + // + // FUNCTION : + // + // PURPOSE : + // + //---------------------------------------------------------- + + //---------------------------------------------------------- + // + // FUNCTION : + // + // PURPOSE : + // + //---------------------------------------------------------- + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/nullfx.cpp b/Jack/ClientFxDLL/nullfx.cpp new file mode 100644 index 00000000..e7f93ae4 --- /dev/null +++ b/Jack/ClientFxDLL/nullfx.cpp @@ -0,0 +1,269 @@ +//------------------------------------------------------------------ +// +// MODULE : NULLFX.CPP +// +// PURPOSE : Implements class CNullFX +// +// CREATED : On 12/3/98 At 6:34:44 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "NullFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNullProps::CNullProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CNullProps::CNullProps() : + m_fGravity ( 0.0f ), + m_vMinVel ( 0.0f, 0.0f, 0.0f ), + m_vMaxVel ( 0.0f, 0.0f, 0.0f ), + m_bBounce ( LTFALSE ) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNullProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CNullProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "GravityAcceleration" ) ) + { + m_fGravity = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinVelocity" ) ) + { + m_vMinVel = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "MaxVelocity" ) ) + { + m_vMaxVel = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "Bounce" ) ) + { + m_bBounce = (LTBOOL)fxProp.GetComboVal(); + } + } + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CNullFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CNullFX::CNullFX() +: CBaseFX ( CBaseFX::eNullFX ), + m_vVelocity ( 0.0f, 0.0f, 0.0f ), + m_vPosition ( 0.0f, 0.0f, 0.0f ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CNullFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CNullFX::~CNullFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CNullFX +// +//------------------------------------------------------------------ + +bool CNullFX::Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pData, pProps)) + return false; + + //setup our velocity + m_vVelocity.x = GetRandom( GetProps()->m_vMinVel.x, GetProps()->m_vMaxVel.x ); + m_vVelocity.y = GetRandom( GetProps()->m_vMinVel.y, GetProps()->m_vMaxVel.y ); + m_vVelocity.z = GetRandom( GetProps()->m_vMinVel.z, GetProps()->m_vMaxVel.z ); + + ObjectCreateStruct ocs; + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = FLAG_NOLIGHT; + ocs.m_Pos = m_vPosition = m_vCreatePos; + ocs.m_Rotation = m_rCreateRot; + + // Develop the Right and Up vectors based off the Forward... + LTMatrix mInitRot; + mInitRot.Identity(); + + if( pData->m_vTargetNorm.LengthSquared() > MATH_EPSILON ) + { + LTVector vR, vU; + + pData->m_vTargetNorm.Normalize(); + + if( (1.0f == pData->m_vTargetNorm.y) || (-1.0f == pData->m_vTargetNorm.y) ) + { + vR = LTVector( 1.0f, 0.0f, 0.0f ).Cross( pData->m_vTargetNorm ); + } + else + { + vR = LTVector( 0.0f, 1.0f, 0.0f ).Cross( pData->m_vTargetNorm ); + } + + vU = pData->m_vTargetNorm.Cross( vR ); + ocs.m_Rotation = LTRotation( pData->m_vTargetNorm, vU ); + ocs.m_Rotation.ConvertToMatrix( mInitRot ); + } + + m_hObject = m_pLTClient->CreateObject( &ocs ); + if( !m_hObject ) + return LTFALSE; + + m_bUpdateColour = LTFALSE; + m_bUpdateScale = LTFALSE; + + // Compute our Velocity based on Initial Rotation... + + m_vVelocity = mInitRot * m_vVelocity; + + // Success !! + + return LTTRUE; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CNullFX +// +//------------------------------------------------------------------ + +void CNullFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = LTNULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CNullFX +// +//------------------------------------------------------------------ + +bool CNullFX::Update( LTFLOAT tmFrameTime) +{ + // Base class update first + + if( !CBaseFX::Update(tmFrameTime) ) + return false; + + // If we want a bouncy FX check for an intersection on our "next" position... + + if( GetProps()->m_bBounce ) + { + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_From = m_vPosition; + iQuery.m_To = iQuery.m_From + (m_vVelocity * tmFrameTime); + + if( m_pLTClient->IntersectSegment( &iQuery, &iInfo ) ) + { + + LTVector vNewVel = iInfo.m_Plane.m_Normal * 2; + LTVector vL = -m_vVelocity; + LTFLOAT Dot = iInfo.m_Plane.m_Normal.Dot( vL ); + + // Develop the normalized reflected angle... + + vNewVel *= Dot; + vNewVel -= vL; + vNewVel.Norm(); + + // Scale it out with a decreased velocity magnitude + + m_vVelocity = vNewVel * ( m_vVelocity.Mag() * 0.75f); + } + } + + m_vPosition += m_vVelocity * tmFrameTime; + m_vVelocity.y += GetProps()->m_fGravity; + + m_pLTClient->SetObjectPos( m_hObject, &m_vPosition ); + + // Success !! + + return LTTRUE; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetNullProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetNullProps(CFastList *pList) +{ + FX_PROP fxProp; + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 1.0f; + fVec[2] = 0.0f; + + // Add the base props + + AddBaseProps(pList); + + fxProp.Float( "GravityAcceleration", -500.0f ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MinVelocity", fVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MaxVelocity", fVec ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Bounce", "0, No, Yes" ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/nullfx.h b/Jack/ClientFxDLL/nullfx.h new file mode 100644 index 00000000..c49bdf15 --- /dev/null +++ b/Jack/ClientFxDLL/nullfx.h @@ -0,0 +1,56 @@ +//------------------------------------------------------------------ +// +// MODULE : NULLFX.H +// +// PURPOSE : Defines class NullFX +// +// CREATED : On 12/3/98 At 6:34:45 PM +// +//------------------------------------------------------------------ + +#ifndef __NULLFX__H_ + #define __NULLFX__H_ + + // Includes.... + + #include "basefx.h" + #include "ClientFX.h" + + class CNullProps : public CBaseFXProps + { + public: + + CNullProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + LTFLOAT m_fGravity; + LTVector m_vMinVel; + LTVector m_vMaxVel; + LTBOOL m_bBounce; + }; + + + class CNullFX : public CBaseFX + { + private: // Members + + const CNullProps* GetProps() { return (const CNullProps*)m_pProps; } + + LTVector m_vVelocity; + LTVector m_vPosition; + + public : + + CNullFX(); + ~CNullFX(); + + // Member Functions + + bool Init( ILTClient *pLTClient, FX_BASEDATA *pData, const CBaseFXProps *pProps); + bool Update( float tmCur ); + void Term( void ); + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/playrandomsoundfx.cpp b/Jack/ClientFxDLL/playrandomsoundfx.cpp new file mode 100644 index 00000000..109d1e6f --- /dev/null +++ b/Jack/ClientFxDLL/playrandomsoundfx.cpp @@ -0,0 +1,339 @@ +//------------------------------------------------------------------ +// +// MODULE : PLAYRANDOMSOUNDFX.CPP +// +// PURPOSE : Implements class CPlayRandomSoundFX +// +// CREATED : On 12/15/98 At 5:06:01 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "PlayRandomSoundFX.h" +#include "ClientFX.h" +#include "stdio.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayRandomSoundProps::CPlayRandomSoundProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CPlayRandomSoundProps::CPlayRandomSoundProps() : + m_bLoop ( LTFALSE ), + m_bPlayLocal ( LTFALSE ), + m_nVolume ( 100 ), + m_nRand ( 0 ) +{ + m_sSoundName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayRandomSoundProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CPlayRandomSoundProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Sound" )) + { + fxProp.GetPath( m_sSoundName ); + } + else if( !stricmp( fxProp.m_sName, "NumRand" )) + { + m_nRand = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "InnerRadius" )) + { + m_fInnerRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "OuterRadius" )) + { + m_fOuterRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "Volume" )) + { + m_nVolume = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "Priority" )) + { + m_nPriority = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "Loop" )) + { + m_bLoop = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "PlayLocal" )) + { + m_bPlayLocal = (LTBOOL)fxProp.GetComboVal(); + } + } + + // Strip of the extension and single number + m_sSoundName[strlen(m_sSoundName) - 5] = 0; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CPlayRandomSoundFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CPlayRandomSoundFX::CPlayRandomSoundFX() +: CBaseFX ( CBaseFX::ePlayRandomSoundFX ), + m_hSound ( LTNULL ), + m_bFirstUpdate ( true ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CPlayRandomSoundFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CPlayRandomSoundFX::~CPlayRandomSoundFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CPlayRandomSoundFX +// +//------------------------------------------------------------------ + +bool CPlayRandomSoundFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + LTVector vPos; + if( m_hParent ) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + } + else + { + vPos = m_vCreatePos; + } + + LTVector vScale; + vScale.Init(1.0f, 1.0f, 1.0f); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = FLAG_NOLIGHT; + ocs.m_Pos = vPos; + ocs.m_Scale = vScale; + + m_hObject = m_pLTClient->CreateObject(&ocs); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CPlayRandomSoundFX +// +//------------------------------------------------------------------ + +void CPlayRandomSoundFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + + if (m_hSound) + { + if (m_hSound) m_pLTClient->SoundMgr()->KillSound(m_hSound); + } + + m_hObject = NULL; + m_hSound = NULL; + m_bFirstUpdate = true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CPlayRandomSoundFX +// +//------------------------------------------------------------------ + +bool CPlayRandomSoundFX::Update(float tmCur) +{ + // Play our sound if we have one... + + if (m_bFirstUpdate) + { + m_bFirstUpdate = false; + PlaySound(); + } + + // Base class update first + + if (!CBaseFX::Update(tmCur)) return false; + + if (IsShuttingDown()) + { + if (m_hSound) + { + m_pLTClient->SoundMgr()->KillSound(m_hSound); + m_hSound = NULL; + m_bFirstUpdate = true; + } + + return true; + } + + if (m_hSound) + { + LTVector vPos = m_vPos; + ((ILTClientSoundMgr*)m_pLTClient->SoundMgr())->SetSoundPosition(m_hSound, &vPos); + } + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : PlaySound() +// +// PURPOSE : Play the sound +// +//------------------------------------------------------------------ + +void CPlayRandomSoundFX::PlaySound() +{ + if (m_hSound) return; + + PlaySoundInfo psi; + memset(&psi, 0, sizeof(PlaySoundInfo)); + + psi.m_dwFlags = PLAYSOUND_GETHANDLE | + PLAYSOUND_CTRL_VOL | + PLAYSOUND_CLIENT; + + if (GetProps()->m_bPlayLocal) + { + psi.m_dwFlags |= PLAYSOUND_LOCAL; + } + else + { + psi.m_dwFlags |= PLAYSOUND_3D | PLAYSOUND_REVERB; + } + + if (GetProps()->m_bLoop) + { + psi.m_dwFlags |= PLAYSOUND_LOOP; + } + + psi.m_nVolume = GetProps()->m_nVolume; + + char sTmp[256]; + + if (GetProps()->m_nRand) + { + sprintf(sTmp, "%s%d.wav", GetProps()->m_sSoundName, rand() % GetProps()->m_nRand); + } + else + { + sprintf(sTmp, "%s.wav", GetProps()->m_sSoundName); + } + + strcpy(psi.m_szSoundName, sTmp); + psi.m_nPriority = GetProps()->m_nPriority; + psi.m_vPosition = m_vPos; + psi.m_fInnerRadius = GetProps()->m_fInnerRadius; + psi.m_fOuterRadius = GetProps()->m_fOuterRadius; + + m_hSound = NULL; + if (g_bAppFocus) + { + if (m_pLTClient->SoundMgr()->PlaySound(&psi, m_hSound) == LT_OK) + { + m_hSound = psi.m_hSound; + } + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetPlayRandomSoundFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetPlayRandomSoundProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Sound", "wav|..."); + pList->AddTail(fxProp); + + fxProp.Int("NumRand", 0); + pList->AddTail(fxProp); + + fxProp.Combo("Loop", "0,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Combo("PlayLocal", "0,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Float("InnerRadius", 100.0f); + pList->AddTail(fxProp); + + fxProp.Float("OuterRadius", 500.0f); + pList->AddTail(fxProp); + + fxProp.Int("Volume", 100); + pList->AddTail(fxProp); + + fxProp.Int("Priority", 0); + pList->AddTail(fxProp); + + fxProp.Path("MultiPlaySound", "wav|..."); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/playrandomsoundfx.h b/Jack/ClientFxDLL/playrandomsoundfx.h new file mode 100644 index 00000000..8a93cfb5 --- /dev/null +++ b/Jack/ClientFxDLL/playrandomsoundfx.h @@ -0,0 +1,69 @@ +//------------------------------------------------------------------ +// +// MODULE : PLAYRANDOMSOUNDFX.H +// +// PURPOSE : Defines class CPlayRandomSoundFX +// +// CREATED : On 12/15/98 At 5:06:02 PM +// +//------------------------------------------------------------------ + +#ifndef __PLAYRANDOMSOUNDFX__H_ + #define __PLAYRANDOMSOUNDFX__H_ + + // Includes.... + + #include "basefx.h" + + class CPlayRandomSoundProps : public CBaseFXProps + { + public: + + CPlayRandomSoundProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sSoundName[128]; + uint32 m_nPriority; + float m_fOuterRadius; + float m_fInnerRadius; + LTBOOL m_bLoop; + LTBOOL m_bPlayLocal; + uint32 m_nVolume; + uint32 m_nRand; + }; + + class CPlayRandomSoundFX : public CBaseFX + { + public : + + // Constuctor + + CPlayRandomSoundFX(); + + // Destructor + + ~CPlayRandomSoundFX(); + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + + // Accessors + + protected : + + const CPlayRandomSoundProps* GetProps() { return (const CPlayRandomSoundProps*)m_pProps; } + + + // Member Variables + + HLTSOUND m_hSound; + bool m_bFirstUpdate; + + void PlaySound(); + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/playsoundfx.cpp b/Jack/ClientFxDLL/playsoundfx.cpp new file mode 100644 index 00000000..c061e2f4 --- /dev/null +++ b/Jack/ClientFxDLL/playsoundfx.cpp @@ -0,0 +1,362 @@ +//------------------------------------------------------------------ +// +// MODULE : PLAYSOUNDFX.CPP +// +// PURPOSE : Implements class CPlaySoundFX +// +// CREATED : On 12/15/98 At 5:06:01 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "PlaySoundFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlaySoundProps::CPlaySoundProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CPlaySoundProps::CPlaySoundProps() : + m_bLoop ( LTFALSE ), + m_bPlayLocal ( LTFALSE ), + m_nVolume ( 100 ), + m_fPitch ( 1.0f ) +{ + m_sSoundName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlaySoundProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CPlaySoundProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Sound" )) + { + fxProp.GetPath( m_sSoundName ); + } + else if( !_stricmp( fxProp.m_sName, "InnerRadius" )) + { + m_fInnerRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "OuterRadius" )) + { + m_fOuterRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "PitchShift" )) + { + m_fPitch = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "Volume" )) + { + m_nVolume = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "Priority" )) + { + m_nPriority = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "Loop" )) + { + m_bLoop = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "PlayLocal" )) + { + m_bPlayLocal = (LTBOOL)fxProp.GetComboVal(); + } + } + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CPlaySoundFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CPlaySoundFX::CPlaySoundFX() +: CBaseFX ( CBaseFX::ePlaySoundFX ), + m_hSound ( LTNULL ), + m_bFirstUpdate ( true ) +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CPlaySoundFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CPlaySoundFX::~CPlaySoundFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CPlaySoundFX +// +//------------------------------------------------------------------ + +bool CPlaySoundFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + LTVector vPos; + if( m_hParent ) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + } + else + { + vPos = m_vCreatePos; + } + + LTVector vScale; + vScale.Init(1.0f, 1.0f, 1.0f); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = FLAG_NOLIGHT; + ocs.m_Pos = vPos; + ocs.m_Scale = vScale; + + m_hObject = m_pLTClient->CreateObject(&ocs); + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CPlaySoundFX +// +//------------------------------------------------------------------ + +void CPlaySoundFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + + if (m_hSound) + { + m_pLTClient->SoundMgr()->KillSound(m_hSound); + } + + m_hObject = NULL; + m_hSound = NULL; + m_bFirstUpdate = true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CPlaySoundFX +// +//------------------------------------------------------------------ + +bool CPlaySoundFX::Update(float tmCur) +{ + // Play our sound if we have one... + + if (m_bFirstUpdate) + { + m_bFirstUpdate = false; + PlaySound(); + } + + // Base class update first + + if (!CBaseFX::Update(tmCur)) return false; + + if (IsShuttingDown()) + { + if (m_hSound) + { + m_pLTClient->SoundMgr()->KillSound(m_hSound); + m_hSound = NULL; + m_bFirstUpdate = true; + } + + return true; + } + + // move the sound + if( GetProps()->m_nFollowType == UP_FOLLOW ) + { + if ((m_hSound) && (g_bAppFocus)) + { + LTVector vPos; + if( m_hParent ) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + } + else + { + vPos = m_vCreatePos; + } + + ((ILTClientSoundMgr*)m_pLTClient->SoundMgr())->SetSoundPosition(m_hSound, &vPos); + } + } + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : PlaySound() +// +// PURPOSE : Play the sound +// +//------------------------------------------------------------------ + +void CPlaySoundFX::PlaySound() +{ + if (m_hSound) return; + + // Play the sound + + PlaySoundInfo psi; + memset(&psi, 0, sizeof(PlaySoundInfo)); + + psi.m_dwFlags = PLAYSOUND_GETHANDLE | + PLAYSOUND_CTRL_VOL | + PLAYSOUND_CTRL_PITCH | + PLAYSOUND_CLIENT; + + if (GetProps()->m_bPlayLocal) + { + psi.m_dwFlags |= PLAYSOUND_LOCAL; + } + else + { + psi.m_dwFlags |= PLAYSOUND_3D | PLAYSOUND_REVERB; + } + + if( GetProps()->m_nFollowType == UP_FOLLOW ) + { + psi.m_dwFlags |= PLAYSOUND_ATTACHED; + } + + + if (GetProps()->m_bLoop) + { + psi.m_dwFlags |= PLAYSOUND_LOOP; + } + + psi.m_nVolume = GetProps()->m_nVolume; + strcpy(psi.m_szSoundName, GetProps()->m_sSoundName); + + psi.m_nPriority = GetProps()->m_nPriority; + psi.m_vPosition = m_vPos; + psi.m_hObject = m_hParent ; + psi.m_fInnerRadius = GetProps()->m_fInnerRadius; + psi.m_fOuterRadius = GetProps()->m_fOuterRadius; + psi.m_fPitchShift = GetProps()->m_fPitch; + + if ((g_bAppFocus) && (m_pLTClient->SoundMgr()->PlaySound(&psi, m_hSound) == LT_OK)) + { + m_hSound = psi.m_hSound; + } + else + { + HCONSOLEVAR hVar = m_pLTClient->GetConsoleVar("fxdebug"); + if (hVar) + { + float fValue = m_pLTClient->GetVarValueFloat(hVar); + + if (fValue) + { + m_pLTClient->CPrint("PlaySoundFX: Invalid sound [%s]", GetProps()->m_sSoundName); + } + } + } +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetPlaySoundFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetPlaySoundProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Sound", "wav|..."); + pList->AddTail(fxProp); + + fxProp.Combo("Loop", "0,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Combo("PlayLocal", "0,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Float("InnerRadius", 100.0f); + pList->AddTail(fxProp); + + fxProp.Float("OuterRadius", 500.0f); + pList->AddTail(fxProp); + + fxProp.Int("Volume", 100); + pList->AddTail(fxProp); + + fxProp.Int("Priority", 0); + pList->AddTail(fxProp); + + fxProp.Combo("UseMarkers", "0,No,Yes"); + pList->AddTail(fxProp); + + fxProp.Float("PitchShift", 1.0f); + pList->AddTail(fxProp); + + fxProp.Path("MultiPlaySound", "wav|..."); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/playsoundfx.h b/Jack/ClientFxDLL/playsoundfx.h new file mode 100644 index 00000000..089b1ffd --- /dev/null +++ b/Jack/ClientFxDLL/playsoundfx.h @@ -0,0 +1,70 @@ +//------------------------------------------------------------------ +// +// MODULE : PLAYSOUNDFX.H +// +// PURPOSE : Defines class CPlaySoundFX +// +// CREATED : On 12/15/98 At 5:06:02 PM +// +//------------------------------------------------------------------ + +#ifndef __PLAYSOUNDFX__H_ + #define __PLAYSOUNDFX__H_ + + // Includes.... + + #include "basefx.h" + + class CPlaySoundProps : public CBaseFXProps + { + public: + + CPlaySoundProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sSoundName[128]; + int m_nPriority; + LTFLOAT m_fOuterRadius; + LTFLOAT m_fInnerRadius; + LTBOOL m_bLoop; + LTBOOL m_bPlayLocal; + int m_nVolume; + LTFLOAT m_fPitch; + }; + + + class CPlaySoundFX : public CBaseFX + { + public : + + // Constuctor + + CPlaySoundFX(); + + // Destructor + + ~CPlaySoundFX(); + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmCur); + + // Accessors + + protected : + + const CPlaySoundProps* GetProps() { return (const CPlaySoundProps*)m_pProps; } + + + // Member Variables + + HLTSOUND m_hSound; + bool m_bFirstUpdate; + + void PlaySound(); + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/polyfanfx.cpp b/Jack/ClientFxDLL/polyfanfx.cpp new file mode 100644 index 00000000..843a68d4 --- /dev/null +++ b/Jack/ClientFxDLL/polyfanfx.cpp @@ -0,0 +1,220 @@ +//------------------------------------------------------------------ +// +// MODULE : PolyFanFX.CPP +// +// PURPOSE : Implements class CPolyFanFX +// +// CREATED : On 11/23/98 At 6:21:37 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "PolyFanFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyFanProps::CPolyFanProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CPolyFanProps::CPolyFanProps() : + m_nAlongNormal (0), + m_bParentRotate (false) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyFanProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CPolyFanProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if (!stricmp(fxProp.m_sName, "PolyFan")) + { + char sTmp[128]; + strcpy(sTmp, fxProp.m_data.m_sVal); + + // Get the path name + + char *sExt = strtok(sTmp, "|"); + char *sPath = strtok(NULL, "|"); + if (sPath) strcpy(m_sPolyFanName, sPath); + } + if (!stricmp(fxProp.m_sName, "Facing")) + { + m_nAlongNormal = fxProp.GetComboVal(); + } + if (!stricmp(fxProp.m_sName, "ParentRotate")) + { + m_bParentRotate = fxProp.GetComboVal() ? true : false; + } + else if (!stricmp(fxProp.m_sName, "Normal")) + { + m_vRot.x = fxProp.m_data.m_fVec[0]; + m_vRot.y = fxProp.m_data.m_fVec[1]; + m_vRot.z = fxProp.m_data.m_fVec[2]; + } + } + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CPolyFanFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CPolyFanFX::CPolyFanFX() +{ +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CPolyFanFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CPolyFanFX::~CPolyFanFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CPolyFanFX +// +//------------------------------------------------------------------ + +bool CPolyFanFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + LTVector vPos; + if( m_hParent ) + { + m_pLTClient->GetObjectPos(m_hParent, &vPos); + } + else + { + vPos = m_vCreatePos; + } + + LTVector vScale; + vScale.Init(1.0f, 1.0f, 1.0f); + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = 0; + ocs.m_Pos = vPos; + ocs.m_Scale = vScale; + strcpy(ocs.m_Filename, GetProps()->m_sPolyFanName); + + m_hObject = m_pLTClient->CreateObject(&ocs); + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CPolyFanFX +// +//------------------------------------------------------------------ + +void CPolyFanFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CPolyFanFX +// +//------------------------------------------------------------------ + +bool CPolyFanFX::Update(float tmCur) +{ + // Base class update first + + if (!CBaseFX::Update(tmCur)) return false; + + // Align if neccessary, to the rotation of our parent + + if ((m_hParent) && (GetProps()->m_nAlongNormal == 2)) + { + LTRotation parentRot; + m_pLTClient->GetObjectRotation(m_hParent, &parentRot); + m_pLTClient->SetObjectRotation(m_hObject, &parentRot); + } + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetPolyFanFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetPolyFanProps(CFastList *pList) +{ + FX_PROP fxProp; + float vTmp[3]; + vTmp[0] = 0.0f; + vTmp[1] = 0.0f; + vTmp[2] = 1.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Texture", "dtx|..."); + pList->AddTail(fxProp); + + fxProp.Combo("2nd Node","0,LeftHand,RightHand,LeftFoot,RightFoot,Head,Tail,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10"); + pList->AddTail(fxProp); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/polyfanfx.h b/Jack/ClientFxDLL/polyfanfx.h new file mode 100644 index 00000000..275c2bb1 --- /dev/null +++ b/Jack/ClientFxDLL/polyfanfx.h @@ -0,0 +1,64 @@ +//------------------------------------------------------------------ +// +// MODULE : POLYFANFX.H +// +// PURPOSE : Defines class CPolyFanFX +// +// CREATED : On 11/23/98 At 6:21:38 PM +// +//------------------------------------------------------------------ + +#ifndef __POLYFANFX__H_ + #define __POLYFANFX__H_ + + // Includes.... + + #include "basefx.h" + + class CPolyFanProps : public CBaseFXProps + { + public: + + CPolyFanProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sPolyFanName[128]; + uint32 m_nAlongNormal; + bool m_bParentRotate; + float m_fYaw; + LTVector m_vRot; + }; + + + + class CPolyFanFX : public CBaseFX + { + public : + + // Constuctor + + CPolyFanFX(); + + // Destructor + + ~CPolyFanFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmCur); + void Term(); + + // Accessors + + protected : + + const CPolyFanProps* GetProps() { return (const CPolyFanProps*)m_pProps; } + + // Member Variables + + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/polytubefx.cpp b/Jack/ClientFxDLL/polytubefx.cpp new file mode 100644 index 00000000..492e0020 --- /dev/null +++ b/Jack/ClientFxDLL/polytubefx.cpp @@ -0,0 +1,698 @@ +//------------------------------------------------------------------ +// +// MODULE : POLYTUBEFX.CPP +// +// PURPOSE : Implements class CPolyTubeFX +// +// CREATED : On 12/3/98 At 6:34:44 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "PolyTubeFX.h" +#include "ClientFX.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyTubeProps::CPolyTubeProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CPolyTubeProps::CPolyTubeProps() : + m_tmAddPtInterval (0.1f), + m_nMaxTrailLength (50), + m_tmSectionLifespan (2.0f), + m_uAdd (0.0f), + m_fTrailWidth (20.0f), + m_eBlendMode (DRAWPRIM_NOBLEND), + m_eAlphaTest (DRAWPRIM_NOALPHATEST), + m_eColorOp (DRAWPRIM_NOCOLOROP), + m_eFillMode (DRAWPRIM_FILL), + m_eWidthStyle (ePTWS_Constant), + m_eAllignment (ePTA_Camera) +{ + m_sPath[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyTubeProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CPolyTubeProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Texture" )) + { + fxProp.GetPath( m_sPath ); + } + else if( !_stricmp( fxProp.m_sName, "TrailWidth" )) + { + m_fTrailWidth = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "WidthStyle" )) + { + m_eWidthStyle = (EPTWidthStyle)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "UAdd" )) + { + m_uAdd = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "SectionLifespan" )) + { + m_tmSectionLifespan = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "TrailLen" )) + { + m_nMaxTrailLength = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "SectionInterval" )) + { + m_tmAddPtInterval = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "BlendMode" )) + { + m_eBlendMode = (ELTBlendMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "AlphaTest" )) + { + m_eAlphaTest = (ELTTestMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "ColorOp" )) + { + m_eColorOp = (ELTColorOp)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "FillMode" )) + { + m_eFillMode = (ELTDPFillMode)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "Allignment" )) + { + m_eAllignment = (EPTAllignment)fxProp.GetComboVal(); + } + + } + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CPolyTubeFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CPolyTubeFX::CPolyTubeFX( ) +: CBaseFX ( CBaseFX::ePolyTubeFX ), + m_tmElapsedEmission (0.0f), + m_dwWidth (1), + m_hTexture (LTNULL), + m_uOffset (0.0f), + m_bLoadFailed (false), + m_bReallyClose (false) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CPolyTubeFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CPolyTubeFX::~CPolyTubeFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CPolyTubeFX +// +//------------------------------------------------------------------ + +bool CPolyTubeFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + LTVector vSave = pBaseData->m_vPos; + + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + if( !GetProps()->m_nMaxTrailLength || !GetProps()->m_fTrailWidth ) + return LTFALSE; + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = pBaseData->m_dwObjectFlags | FLAG_NOLIGHT; + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2; + ocs.m_Pos = m_vCreatePos; + + m_hObject = m_pLTClient->CreateObject(&ocs); + if( !m_hObject ) + return false; + + // Are we rendering really close? + + m_bReallyClose = !!(pBaseData->m_dwObjectFlags & FLAG_REALLYCLOSE); + + // Make sure we don't exceed the total length of the polytrail.... + + LTVector vStart, vEnd; + + vStart = vSave; + m_pLTClient->GetObjectPos(m_hParent, &vEnd); + + float fLen = (vStart - vEnd).Mag(); + + if (fLen > 256.0f) + { + // This is too big of a distance, start polytrail at the right spot... + + vSave = m_vPos; + } + + // Add an initial point + + PT_TRAIL_SECTION ts; + ts.m_vPos = vSave; + ts.m_tmElapsed = 0.0f; + ts.m_uVal = 0.0f; + m_collPathPts.AddTail(ts); + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CPolyTubeFX +// +//------------------------------------------------------------------ + +void CPolyTubeFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + if (m_hTexture) + { + m_pLTClient->GetTexInterface()->ReleaseTextureHandle(m_hTexture); + m_hTexture = LTNULL; + } + m_hObject = NULL; + +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CPolyTubeFX +// +//------------------------------------------------------------------ + +bool CPolyTubeFX::Update(float tmFrameTime) +{ + // Base class update first + if (!CBaseFX::Update(tmFrameTime)) + return false; + + if ((!m_hTexture) && (!m_bLoadFailed)) + { + m_pLTClient->GetTexInterface()->CreateTextureFromName(m_hTexture, GetProps()->m_sPath); + + if (m_hTexture) + { + // Retrieve texture dims + uint32 nHeight; + m_pLTClient->GetTexInterface()->GetTextureDims(m_hTexture, m_dwWidth, nHeight); + } + else + { + m_bLoadFailed = true; + } + } + + if ((m_collPathPts.GetSize() < 2) && IsShuttingDown()) + { + m_collPathPts.RemoveAll(); + return true; + } + + float tmAddPtInterval = GetProps()->m_tmAddPtInterval * 2.0f; + + LTRotation rRot; + m_pLTClient->GetObjectRotation( m_hObject, &rRot ); + + //increase the emission time elapse + m_tmElapsedEmission += tmFrameTime; + + if (!IsShuttingDown() && + (m_collPathPts.GetSize() < GetProps()->m_nMaxTrailLength) && + ((m_tmElapsedEmission > GetProps()->m_tmAddPtInterval) || (m_collPathPts.GetSize() == 1))) + { + LTVector vNew = m_vPos; + + // Only add the new point if it's not the same as the last one.... + + // Add a new trail section + + PT_TRAIL_SECTION ts; + ts.m_vPos = vNew; + ts.m_tmElapsed = 0.0f; + + switch( GetProps()->m_eAllignment ) + { + case ePTA_Up: + ts.m_vBisector = rRot.Up(); + break; + + case ePTA_Right: + ts.m_vBisector = rRot.Right(); + break; + + case ePTA_Forward: + ts.m_vBisector = rRot.Forward(); + break; + + case ePTA_Camera: + default: + ts.m_vBisector.Init(); + break; + } + + + // Compute u coordinate + + if (m_collPathPts.GetSize()) + { + LTVector vPrev = m_collPathPts.GetTail()->m_Data.m_vPos; + float fUPrev = m_collPathPts.GetTail()->m_Data.m_uVal; + + float fWidth = (float)m_dwWidth; + float fScalar = fWidth / GetProps()->m_fTrailWidth; + + ts.m_uVal = fUPrev + ((((vNew - vPrev).Mag()) / fWidth) * fScalar); + + } + else + { + ts.m_uVal = 0.0f; + } + + m_collPathPts.AddTail(ts); + + m_tmElapsedEmission = 0.0f; + } + + // Render the tube.... + + if (m_collPathPts.GetSize() < 2) return true; + + CLinkListNode *pNode = m_collPathPts.GetHead(); + + // Fudge the last point to be the current one... + + if( !IsShuttingDown() ) + m_collPathPts.GetTail()->m_Data.m_vPos = m_vPos; + + // Transform the path + + LTMatrix mCam; + if( m_bReallyClose || (GetProps()->m_eAllignment != ePTA_Camera)) + { + mCam.Identity(); + } + else + { + mCam = GetCamTransform(m_pLTClient, m_hCamera); + } + + while (pNode) + { + MatVMul(&pNode->m_Data.m_vTran, &mCam, &pNode->m_Data.m_vPos); + pNode = pNode->m_pNext; + } + + // Do some precalculations + + pNode = m_collPathPts.GetHead(); + + float fCurU = 0.0f; + + while (pNode) + { + pNode->m_Data.m_tmElapsed += tmFrameTime; + + if( GetProps()->m_eAllignment == ePTA_Camera ) + { + LTVector vBisector; + vBisector.z = 0.0f; + + // Compute the midpoint vectors + + if (pNode == m_collPathPts.GetHead()) + { + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else if (pNode == m_collPathPts.GetTail()) + { + LTVector vEnd = pNode->m_Data.m_vTran; + LTVector vStart = pNode->m_pPrev->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else + { + LTVector vPrev = pNode->m_pPrev->m_Data.m_vTran; + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + float x1 = vEnd.y - vStart.y; + float y1 = -(vEnd.x - vStart.x); + float z1 = vStart.z - vEnd.z; + + float x2 = vStart.y - vPrev.y; + float y2 = -(vStart.x - vPrev.x); + float z2 = vPrev.z - vEnd.z; + + vBisector.x = (x1 + x2) / 2.0f; + vBisector.y = (y1 + y2) / 2.0f; + } + + pNode->m_Data.m_vBisector = vBisector; + } + + LTFLOAT fWidth = CalcCurWidth(); + pNode->m_Data.m_vBisector.Norm( fWidth ); + + // Setup the colour + + float r, g, b, a; + CalcColour(pNode->m_Data.m_tmElapsed, GetProps()->m_tmSectionLifespan, &r, &g, &b, &a); + + int ir = (int)(r * 255.0f); + int ig = (int)(g * 255.0f); + int ib = (int)(b * 255.0f); + int ia = (int)(a * 255.0f); + + pNode->m_Data.m_red = Clamp( ir, 0, 255 ); + pNode->m_Data.m_green = Clamp( ig, 0, 255 ); + pNode->m_Data.m_blue = Clamp( ib, 0, 255 ); + pNode->m_Data.m_alpha = Clamp( ia, 0, 255 ); + + pNode = pNode->m_pNext; + } + + pNode = m_collPathPts.GetHead(); + + pNode = m_collPathPts.GetHead(); + + // Delete any dead nodes + + while (pNode->m_pNext) + { + CLinkListNode *pDelNode= NULL; + + if (pNode->m_Data.m_tmElapsed >= GetProps()->m_tmSectionLifespan) + { + pDelNode = pNode; + } + + pNode = pNode->m_pNext; + + if (pDelNode) m_collPathPts.Remove(pDelNode); + } + + // Increment the offset + m_uOffset += tmFrameTime * GetProps()->m_uAdd; + + // Success !! + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyTubeFX::Render +// +// PURPOSE: Renders the polytube to the screen using DrawPrim +// +// ----------------------------------------------------------------------- // + +bool CPolyTubeFX::Render() +{ + if(!CBaseFX::Render()) + return false; + + CLinkListNode *pNode = m_collPathPts.GetHead(); + + //make sure that we have at least one node + if(!pNode) + return true; + + ILTDrawPrim *pDrawPrimLT; + pDrawPrimLT = m_pLTClient->GetDrawPrim(); + + // Draw the polylist + if( !pDrawPrimLT ) + return false; + + pDrawPrimLT->SetTexture( m_hTexture ); + pDrawPrimLT->SetReallyClose( m_bReallyClose ); + pDrawPrimLT->SetCamera( m_hCamera ); + pDrawPrimLT->SetTransformType( (GetProps()->m_eAllignment == ePTA_Camera ? DRAWPRIM_TRANSFORM_CAMERA : DRAWPRIM_TRANSFORM_WORLD) ); + pDrawPrimLT->SetZBufferMode( DRAWPRIM_ZRO ); + pDrawPrimLT->SetFillMode( GetProps()->m_eFillMode ); + pDrawPrimLT->SetAlphaTestMode( GetProps()->m_eAlphaTest ); + pDrawPrimLT->SetAlphaBlendMode( GetProps()->m_eBlendMode ); + pDrawPrimLT->SetColorOp( GetProps()->m_eColorOp ); + + uint32 nTris = 0; + uint32 nVerts = 0; + + LT_POLYGT3 *pTri = g_pTris; + LTVector *pVerts = g_pVerts; + + pDrawPrimLT->BeginDrawPrim(); + + while (pNode->m_pNext) + { + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + LTVector vBisector1 = pNode->m_Data.m_vBisector; + LTVector vBisector2 = pNode->m_pNext->m_Data.m_vBisector; + + *pVerts ++ = vStart + vBisector1; + *pVerts ++ = vEnd + vBisector2; + *pVerts ++ = vEnd - vBisector2; + *pVerts ++ = vStart - vBisector1; + + uint8 r1 = pNode->m_Data.m_red; + uint8 g1 = pNode->m_Data.m_green; + uint8 b1 = pNode->m_Data.m_blue; + uint8 a1 = pNode->m_Data.m_alpha; + float u1 = pNode->m_Data.m_uVal + m_uOffset; + + uint8 r2 = pNode->m_pNext->m_Data.m_red; + uint8 g2 = pNode->m_pNext->m_Data.m_green; + uint8 b2 = pNode->m_pNext->m_Data.m_blue; + uint8 a2 = pNode->m_pNext->m_Data.m_alpha; + float u2 = pNode->m_pNext->m_Data.m_uVal + m_uOffset; + + SetupVert(pTri, 0, g_pVerts[nVerts], r1, g1, b1, a1, u1, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 1], r2, g2, b2, a2, u2, 0.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 2], r2, g2, b2, a2, u2, 1.0f); + + pTri ++; + nTris ++; + + SetupVert(pTri, 0, g_pVerts[nVerts], r1, g1, b1, a1, u1, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 2], r2, g2, b2, a2, u2, 1.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 3], r1, g1, b1, a1, u1, 1.0f); + + pTri ++; + nTris ++; + + nVerts += 4; + + pNode = pNode->m_pNext; + + //see if we need to flush our buffer + if(nTris >= MAX_BUFFER_TRIS - 2) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + nTris = 0; + nVerts = 0; + pTri = g_pTris; + pVerts = g_pVerts; + } + } + + + if(nTris > 0) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + } + + pDrawPrimLT->EndDrawPrim(); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyTubeFX::CalcCurWidth +// +// PURPOSE: Gets the current width of the trail depending on style +// +// ----------------------------------------------------------------------- // + +LTFLOAT CPolyTubeFX::CalcCurWidth( ) +{ + switch( GetProps()->m_eWidthStyle ) + { + case ePTWS_Constant: + { + return GetProps()->m_fTrailWidth; + } + break; + + case ePTWS_SmallToBig: + { + return GetProps()->m_fTrailWidth * ( LTFLOAT(m_collPathPts.GetSize() - 2) / LTFLOAT(GetProps()->m_nMaxTrailLength) ); + } + break; + + case ePTWS_SmallToSmall: + { + LTFLOAT fHalfPts = (GetProps()->m_nMaxTrailLength+1) * 0.5f; + + if( m_collPathPts.GetSize() < fHalfPts ) + { + return GetProps()->m_fTrailWidth * ( LTFLOAT(m_collPathPts.GetSize() - 2) / LTFLOAT(GetProps()->m_nMaxTrailLength) ); + } + else + { + return GetProps()->m_fTrailWidth * ( LTFLOAT(GetProps()->m_nMaxTrailLength - (m_collPathPts.GetSize() - 2 )) / LTFLOAT(GetProps()->m_nMaxTrailLength) ); + } + } + break; + + case ePTWS_BigToSmall: + { + return GetProps()->m_fTrailWidth * ( LTFLOAT(GetProps()->m_nMaxTrailLength - (m_collPathPts.GetSize() - 2 )) / LTFLOAT(GetProps()->m_nMaxTrailLength) ); + } + break; + + default: + return 0; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : OnRendererShutdown() +// +// PURPOSE : Handles app focus issues..... +// +//------------------------------------------------------------------ + +void CPolyTubeFX::OnRendererShutdown() +{ + if (m_hTexture) + { + m_pLTClient->GetTexInterface()->ReleaseTextureHandle(m_hTexture); + m_hTexture = LTNULL; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetPolyTubeProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetPolyTubeProps(CFastList *pList) +{ + FX_PROP fxProp; + + // Add the base props + + AddBaseProps(pList); + + // Add the class props + + fxProp.Path("Texture", "dtx|..."); + pList->AddTail(fxProp); + + fxProp.Float("TrailWidth", 20.0f); + pList->AddTail(fxProp); + + fxProp.Combo("WidthStyle", "0,Constant,SmallToBig,SmallToSmall,BigToSmall" ); + pList->AddTail( fxProp ); + + fxProp.Int("TrailLen", 50); + pList->AddTail(fxProp); + + fxProp.Float("SectionLifespan", 1.0f); + pList->AddTail(fxProp); + + fxProp.Float("UAdd", 0.0f); + pList->AddTail(fxProp); + + fxProp.Float("SectionInterval", 0.1f); + pList->AddTail(fxProp); + + fxProp.Combo("BlendMode", "0,None,Add,Saturate,ModSrcAlpha,ModSrcColor,ModDstColor,MulSrcColDstCol,MulSrcAlphaOne,MulSrcAlpha,MulSrcColOne,MulDstColZero" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "AlphaTest", "0,None,Less,LessOrEqual,Greater,GreaterOrEqual,Equal,NotEqual" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "ColorOp", "0,NoTexture,Modulate,Additive,NoColor" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "FillMode", "1,WireFrame,Fill" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "Allignment", "0,Camera,Up,Right,Forward" ); + pList->AddTail( fxProp ); +} diff --git a/Jack/ClientFxDLL/polytubefx.h b/Jack/ClientFxDLL/polytubefx.h new file mode 100644 index 00000000..02b4ae7b --- /dev/null +++ b/Jack/ClientFxDLL/polytubefx.h @@ -0,0 +1,111 @@ +//------------------------------------------------------------------ +// +// MODULE : POLYTUBEFX.H +// +// PURPOSE : Defines class CPolyTubeFX +// +// CREATED : On 3/22/99 At 4:00:54 PM +// +//------------------------------------------------------------------ + +#ifndef __POLYTUBEFX_H_ + #define __POLYTUBEFX_H_ + + // Includes.... + + #include "clientfx.h" + + enum EPTWidthStyle + { + ePTWS_Constant, + ePTWS_SmallToBig, + ePTWS_SmallToSmall, + ePTWS_BigToSmall + }; + + enum EPTAllignment + { + ePTA_Camera, + ePTA_Up, + ePTA_Right, + ePTA_Forward + }; + + struct PT_TRAIL_SECTION + { + LTVector m_vPos; + LTVector m_vTran; + LTVector m_vBisector; + uint8 m_red; + uint8 m_blue; + uint8 m_green; + uint8 m_alpha; + float m_fScale; + float m_uVal; + float m_tmElapsed; + }; + + class CPolyTubeProps : public CBaseFXProps + { + public: + + CPolyTubeProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + float m_tmAddPtInterval; + float m_tmSectionLifespan; + uint32 m_nMaxTrailLength; + float m_fTrailWidth; + float m_uAdd; + char m_sPath[128]; + ELTBlendMode m_eBlendMode; + ELTTestMode m_eAlphaTest; + ELTColorOp m_eColorOp; + ELTDPFillMode m_eFillMode; + EPTWidthStyle m_eWidthStyle; + EPTAllignment m_eAllignment; + }; + + class CPolyTubeFX : public CBaseFX + { + public : + + // Constuctor + + CPolyTubeFX(); + // Destructor + + ~CPolyTubeFX(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + bool Update(float tmCur); + bool Render(); + void ReadProps( CLinkList *pProps ); + void Term(); + + void OnRendererShutdown(); + + bool IsFinishedShuttingDown() { return (m_collPathPts.GetSize() == 0) ? true : false; } + + LTFLOAT CalcCurWidth( ); + + // Accessors + + protected : + + const CPolyTubeProps* GetProps() { return (const CPolyTubeProps*)m_pProps; } + + CLinkList m_collPathPts; + float m_tmElapsedEmission; + uint32 m_dwWidth; + HTEXTURE m_hTexture; + bool m_bReallyClose; + bool m_bLoadFailed; + float m_uOffset; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/resource.h b/Jack/ClientFxDLL/resource.h new file mode 100644 index 00000000..a82e7c44 --- /dev/null +++ b/Jack/ClientFxDLL/resource.h @@ -0,0 +1,33 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by ClientFX.rc +// +#define IDI_LIGHTNING 101 +#define IDI_PARTICLEFLURRY 102 +#define IDI_SPRITESYSTEM 103 +#define IDI_SPRITE 104 +#define IDI_MODEL 105 +#define IDI_DYNALIGHT 106 +#define IDI_PLAYSOUND 107 +#define IDI_CAMJITTER 108 +#define IDI_BOUNCYCHUNK 109 +#define IDI_NUMBERS 110 +#define IDI_NULL 111 +#define IDI_FALLINGSTUFF 112 +#define IDI_POLYTUBE 113 +#define IDI_LINE 114 +#define IDI_PLAYRANDOMSOUND 115 +#define IDI_EXPLODINGMODEL 116 +#define IDI_RINGMAKER 117 +#define IDI_POLYFAN 118 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Jack/ClientFxDLL/screentrail.cpp b/Jack/ClientFxDLL/screentrail.cpp new file mode 100644 index 00000000..d4a412ec --- /dev/null +++ b/Jack/ClientFxDLL/screentrail.cpp @@ -0,0 +1,180 @@ +//------------------------------------------------------------------ +// +// MODULE : SCREENTRAIL.CPP +// +// PURPOSE : Implements screen poly draw trail stuff +// +// CREATED : On 7/19/99 At 5:56:00 PM +// +// COPYRIGHT : (C) 1999 Monolith Productions Inc +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "ScreenTrail.h" + +void RenderPolyTrail(ILTClient *pClientDE, + CLinkList *pList, + HOBJECT hCamera, + float fTrailWidth, + uint8 r, + uint8 g, + uint8 b, + uint8 a, + HTEXTURE hTexture, + uint32 dwExtraFlags) +{ + CLinkListNode *pNode = pList->GetHead(); + + // Transform the path + + LTMatrix mCam = GetCamTransform(pClientDE, hCamera); + + while (pNode) + { + MatVMul(&pNode->m_Data.m_vTran, &mCam, &pNode->m_Data.m_vPos); + + pNode = pNode->m_pNext; + } + + // Do some precalculations + + pNode = pList->GetHead(); + + float fCurU = 0.0f; + + while (pNode) + { + LTVector vBisector; + vBisector.z = 0.0f; + + // Compute the midpoint vectors + + if (pNode == pList->GetHead()) + { + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else if (pNode == pList->GetTail()) + { + LTVector vEnd = pNode->m_Data.m_vTran; + LTVector vStart = pNode->m_pPrev->m_Data.m_vTran; + + vBisector.x = vEnd.y - vStart.y; + vBisector.y = -(vEnd.x - vStart.x); + } + else + { + LTVector vPrev = pNode->m_pPrev->m_Data.m_vTran; + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + float x1 = vEnd.y - vStart.y; + float y1 = -(vEnd.x - vStart.x); + + float x2 = vStart.y - vPrev.y; + float y2 = -(vStart.x - vPrev.x); + + vBisector.x = (x1 + x2) / 2.0f; + vBisector.y = (y1 + y2) / 2.0f; + } + + vBisector.Norm(fTrailWidth); + pNode->m_Data.m_vBisector = vBisector; + + pNode->m_Data.m_red = r; + pNode->m_Data.m_green = g; + pNode->m_Data.m_blue = b; + pNode->m_Data.m_alpha = a; + + pNode = pNode->m_pNext; + } + + pNode = pList->GetHead(); + + if (pList->GetSize() < 2) return; + + pNode = pList->GetHead(); + + ILTDrawPrim *pDrawPrimLT; + pDrawPrimLT = pClientDE->GetDrawPrim(); + + pDrawPrimLT->SetTexture(hTexture); + pDrawPrimLT->SetTransformType(DRAWPRIM_TRANSFORM_CAMERA); + pDrawPrimLT->BeginDrawPrim(); + + + if (g_bAppFocus) + { + uint32 nTris = 0; + uint32 nVerts = 0; + + LT_POLYGT3 *pTri = g_pTris; + LTVector *pVerts = g_pVerts; + + while (pNode->m_pNext) + { + LTVector vStart = pNode->m_Data.m_vTran; + LTVector vEnd = pNode->m_pNext->m_Data.m_vTran; + + LTVector vBisector1 = pNode->m_Data.m_vBisector; + LTVector vBisector2 = pNode->m_pNext->m_Data.m_vBisector; + + *pVerts ++ = vStart + vBisector1; + *pVerts ++ = vEnd + vBisector2; + *pVerts ++ = vEnd - vBisector2; + *pVerts ++ = vStart - vBisector1; + + uint8 r1 = pNode->m_Data.m_red; + uint8 g1 = pNode->m_Data.m_green; + uint8 b1 = pNode->m_Data.m_blue; + uint8 a1 = pNode->m_Data.m_alpha; + float u1 = pNode->m_Data.m_uVal; + + uint8 r2 = pNode->m_pNext->m_Data.m_red; + uint8 g2 = pNode->m_pNext->m_Data.m_green; + uint8 b2 = pNode->m_pNext->m_Data.m_blue; + uint8 a2 = pNode->m_pNext->m_Data.m_alpha; + float u2 = pNode->m_pNext->m_Data.m_uVal; + + SetupVert(pTri, 0, g_pVerts[nVerts].x, g_pVerts[nVerts].y, g_pVerts[nVerts].z, r1, g1, b1, a1, u1, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 1].x, g_pVerts[nVerts + 1].y, g_pVerts[nVerts + 1].z, r2, g2, b2, a2, u2, 1.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 2].x, g_pVerts[nVerts + 2].y, g_pVerts[nVerts + 2].z, r2, g2, b2, a2, u2, 1.0f); + + pTri ++; + nTris ++; + + SetupVert(pTri, 0, g_pVerts[nVerts].x, g_pVerts[nVerts].y, g_pVerts[nVerts].z, r1, g1, b1, a1, u1, 0.0f); + SetupVert(pTri, 1, g_pVerts[nVerts + 2].x, g_pVerts[nVerts + 2].y, g_pVerts[nVerts + 2].z, r2, g2, b2, a2, u2, 1.0f); + SetupVert(pTri, 2, g_pVerts[nVerts + 3].x, g_pVerts[nVerts + 3].y, g_pVerts[nVerts + 3].z, r1, g1, b1, a1, u1, 0.0f); + + pTri ++; + nTris ++; + + nVerts += 4; + + pNode = pNode->m_pNext; + + //see if we need to flush our buffer + if(nTris >= MAX_BUFFER_TRIS - 2) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + nTris = 0; + } + } + + // Draw the polylist + if(nTris > 0) + { + pDrawPrimLT->DrawPrim(g_pTris, nTris); + nTris = 0; + } + } + + pDrawPrimLT->BeginDrawPrim(); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/screentrail.h b/Jack/ClientFxDLL/screentrail.h new file mode 100644 index 00000000..27d717b4 --- /dev/null +++ b/Jack/ClientFxDLL/screentrail.h @@ -0,0 +1,45 @@ +//------------------------------------------------------------------ +// +// MODULE : SCREENTRAIL.H +// +// PURPOSE : Defines screen poly draw trail stuff +// +// CREATED : On 7/19/99 At 5:46:08 PM +// +// COPYRIGHT : (C) 1999 Monolith Productions Inc +// +//------------------------------------------------------------------ + +#ifndef __SCREENTRAIL_H_ + #define __SCREENTRAIL_H_ + + // Includes.... + + #include "basefx.h" + #include "clientfx.h" + + struct TRAIL_SECTION + { + LTVector m_vPos; + LTVector m_vTran; + LTVector m_vBisector; + uint8 m_red; + uint8 m_blue; + uint8 m_green; + uint8 m_alpha; + float m_fScale; + float m_uVal; + }; + + void RenderPolyTrail(ILTClient *pClientDE, + CLinkList *pList, + HOBJECT hCamera, + float fTrailWidth, + uint8 r, + uint8 g, + uint8 b, + uint8 a, + HTEXTURE hTexture, + uint32 dwExtraFlags); + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/spritefx.cpp b/Jack/ClientFxDLL/spritefx.cpp new file mode 100644 index 00000000..05bccb71 --- /dev/null +++ b/Jack/ClientFxDLL/spritefx.cpp @@ -0,0 +1,431 @@ +//------------------------------------------------------------------ +// +// MODULE : SPRITEFX.CPP +// +// PURPOSE : Implements class CSpriteFX +// +// CREATED : On 11/23/98 At 6:21:37 PM +// +//------------------------------------------------------------------ + +// +// Includes.... +// + +#include "stdafx.h" +#include "ClientFX.h" +#include "SpriteFX.h" +#include "iltspritecontrol.h" + +//Function to handle filtering of the intersect segment calls needed by the flare sprite +inline bool SpriteListFilterFn(HOBJECT hTest, void *pUserData) +{ + // Check for the object type. We only want to be blocked by world models since + //otherwise models will cause us to flicker and we can get hit by lots of other items + uint32 nObjType; + if(g_pLTClient->Common()->GetObjectType(hTest, &nObjType) != LT_OK) + return false; + + if(nObjType != OT_WORLDMODEL) + return false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteProps::CSpriteProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CSpriteProps::CSpriteProps() : + m_nFacing ( 0 ), + m_bCastVisibleRay ( LTFALSE ), + m_dwObjectFlags2 ( 0 ), + m_dwObjectFlags ( 0 ), + m_vNorm ( 0.0f, 0.0f ,1.0f ), + m_bRotate ( LTFALSE ) +{ + m_sSpriteName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CSpriteProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Sprite" )) + { + fxProp.GetPath( m_sSpriteName ); + } + else if( !_stricmp( fxProp.m_sName, "Facing" )) + { + m_nFacing = fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "Normal")) + { + m_vNorm = fxProp.GetVector(); + + // Dont norm a zero length vector! + + if( m_vNorm.LengthSquared() > MATH_EPSILON ) + { + m_vNorm.Normalize(); + } + else + { + // Just kludge the forward down the Z + + m_vNorm.Init( 0.0f, 0.0f, 1.0f ); + } + } + else if( !_stricmp( fxProp.m_sName, "BlendMode" )) + { + int nBlendMode = fxProp.GetComboVal(); + + if( nBlendMode == 1 ) + { + m_dwObjectFlags |= FLAG_NOLIGHT; + m_dwObjectFlags2 |= FLAG2_ADDITIVE; + } + else if( nBlendMode == 2 ) + { + m_dwObjectFlags |= FLAG_NOLIGHT; + m_dwObjectFlags2 |= FLAG2_MULTIPLY; + } + } + else if( !_stricmp( fxProp.m_sName, "DisableZ" )) + { + LTBOOL bNoZ = (LTBOOL)fxProp.GetComboVal(); + + m_dwObjectFlags |= ( bNoZ ? FLAG_SPRITE_NOZ : 0 ); + } + else if( !_stricmp( fxProp.m_sName, "DisableLight" )) + { + LTBOOL bNoLight = (LTBOOL)fxProp.GetComboVal(); + + m_dwObjectFlags |= ( bNoLight ? FLAG_NOLIGHT : 0 ); + } + else if( !_stricmp( fxProp.m_sName, "CastVisibleRay" )) + { + m_bCastVisibleRay = (LTBOOL)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "ZBias" )) + { + if((LTBOOL)fxProp.GetComboVal()) + { + m_dwObjectFlags |= FLAG_SPRITEBIAS; + } + } + } + + m_bRotate = ( (m_vRotAdd.x != 0.0f) || (m_vRotAdd.y != 0.0f) || (m_vRotAdd.z != 0.0f) ) ? LTTRUE : LTFALSE ; + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CSpriteFX() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CSpriteFX::CSpriteFX( CBaseFX::FXType nType ) +: CBaseFX ( nType ) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CSpriteFX +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CSpriteFX::~CSpriteFX() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CSpriteFX +// +//------------------------------------------------------------------ + +bool CSpriteFX::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + + // Perform base class initialisation + + if( !CBaseFX::Init( pClientDE, pBaseData, pProps)) + return false; + + // Use the "target" Normal instead, if one was specified... + LTVector vNorm = GetProps()->m_vNorm; + + if( pBaseData->m_vTargetNorm.LengthSquared() > MATH_EPSILON ) + { + vNorm = pBaseData->m_vTargetNorm; + vNorm.Normalize(); + } + + // Develop the Right and Up vectors based off the Forward... + + LTVector vR, vU; + if( (1.0f == vNorm.y) || (-1.0f == vNorm.y) ) + { + vR = LTVector( 1.0f, 0.0f, 0.0f ).Cross( vNorm ); + } + else + { + vR = LTVector( 0.0f, 1.0f, 0.0f ).Cross( vNorm ); + } + + vU = vNorm.Cross( vR ); + m_rNormalRot = LTRotation( vNorm, vU ); + + + // Combine the direction we would like to face with our parents rotation... + + ObjectCreateStruct ocs; + if( m_hParent ) + { + m_pLTClient->GetObjectRotation( m_hParent, &ocs.m_Rotation ); + } + else + { + ocs.m_Rotation = m_rCreateRot; + } + + ocs.m_Rotation = ocs.m_Rotation * m_rNormalRot; + + ocs.m_ObjectType = OT_SPRITE; + ocs.m_Flags |= GetProps()->m_dwObjectFlags | pBaseData->m_dwObjectFlags | (GetProps()->m_nFacing || GetProps()->m_bRotate ? FLAG_ROTATABLESPRITE : 0); + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2 | GetProps()->m_dwObjectFlags2; + + // Calculate the position with the offset in 'local' coordinate space... + + LTMatrix mMat; + ocs.m_Rotation.ConvertToMatrix( mMat ); + + m_vPos = ocs.m_Pos = m_vCreatePos + (mMat * GetProps()->m_vOffset); + + // When camera facing we want the Normal rotation at the identity... + + if( GetProps()->m_nFacing == FACE_CAMERAFACING ) + m_rNormalRot.Init(); + + strcpy( ocs.m_Filename, GetProps()->m_sSpriteName ); + + m_hObject = m_pLTClient->CreateObject( &ocs ); + if( !m_hObject ) + return LTFALSE; + + // Success !! + + return LTTRUE; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CSpriteFX +// +//------------------------------------------------------------------ + +void CSpriteFX::Term() +{ + if (m_hObject) m_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; + +} + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CSpriteFX +// +//------------------------------------------------------------------ + +bool CSpriteFX::Update(float tmFrameTime) +{ + // Shutdown.... + + if( IsShuttingDown() ) + { + m_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAGMASK_ALL); + } + else if( IsInitialFrame() ) + { + //we are on the initial frame of another play, so we need to reset + //our sprite's current position in the animation to the beginning + //so it doesn't get out of sync, which happens quite a bit. + ILTSpriteControl *pControl; + m_pLTClient->GetSpriteControl(m_hObject, pControl); + + pControl->SetCurPos(0, 0); + } + + // Base class update first + + if( !CBaseFX::Update(tmFrameTime) ) + return true; + + if(GetProps()->m_bCastVisibleRay) + { + // See if anything is blocking our path to the camera + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + LTVector vObjPos, vCamPos; + m_pLTClient->GetObjectPos( m_hObject, &vObjPos ); + m_pLTClient->GetObjectPos( m_hCamera, &vCamPos ); + + iQuery.m_Flags = INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID; + iQuery.m_FilterFn = SpriteListFilterFn; + iQuery.m_pUserData = NULL; + iQuery.m_From = vObjPos; + iQuery.m_To = vCamPos; + + if( m_pLTClient->IntersectSegment( &iQuery, &iInfo ) ) + { + m_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + + //don't bother updating anything else since we aren't visible + return true; + } + else + { + m_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + // Align if neccessary, to the rotation of our parent + + if( (m_hParent) && (GetProps()->m_nFacing == FACE_PARENTALIGN) ) + { + LTRotation rParentRot; + m_pLTClient->GetObjectRotation(m_hParent, &rParentRot); + rParentRot = ( GetProps()->m_bRotate ? rParentRot : rParentRot * m_rNormalRot ); + m_pLTClient->SetObjectRotation(m_hObject, &rParentRot); + } + + // If we want to add a rotation, make sure we are facing the correct way... + + if( GetProps()->m_bRotate ) + { + LTFLOAT tmFrame = tmFrameTime; + LTVector vR( m_rRot.Right() ); + LTVector vU( m_rRot.Up() ); + LTVector vF( m_rRot.Forward() ); + + LTRotation rRotation; + + if( m_hCamera && (GetProps()->m_nFacing == FACE_CAMERAFACING)) + { + //grab the flags for this object + uint32 nFlags; + m_pLTClient->Common()->GetObjectFlags(m_hObject, OFT_Flags, nFlags); + + if(nFlags & FLAG_REALLYCLOSE) + { + rRotation.Identity(); + } + else + { + m_pLTClient->GetObjectRotation( m_hCamera, &rRotation ); + } + } + else + { + m_pLTClient->GetObjectRotation( m_hObject, &rRotation ); + } + + m_rRot.Rotate( vR, MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.x * tmFrame) ); + m_rRot.Rotate( vU, MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.y * tmFrame) ); + m_rRot.Rotate( vF, MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.z * tmFrame) ); + + rRotation = rRotation * m_rRot; + + m_pLTClient->SetObjectRotation( m_hObject, &(rRotation * m_rNormalRot) ); + } + + // Success !! + + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetSpriteFXProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetSpriteProps(CFastList *pList) +{ + FX_PROP fxProp; + float vTmp[3]; + vTmp[0] = 0.0f; + vTmp[1] = 0.0f; + vTmp[2] = 1.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path( "Sprite", "spr|..." ); + pList->AddTail(fxProp); + + fxProp.Vector( "Normal", vTmp ); + pList->AddTail(fxProp); + + fxProp.Combo( "Facing", "0,CameraFacing,AlongNormal,ParentAlign" ); + pList->AddTail(fxProp); + + fxProp.Combo( "BlendMode", "0, None, Additive, Multiply" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "DisableZ", "0,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "DisableLight", "1,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "CastVisibleRay", "0,No,Yes" ); + pList->AddTail( fxProp ); + + fxProp.Combo( "ZBias", "1,No,Yes" ); + pList->AddTail( fxProp ); +} \ No newline at end of file diff --git a/Jack/ClientFxDLL/spritefx.h b/Jack/ClientFxDLL/spritefx.h new file mode 100644 index 00000000..f57b707a --- /dev/null +++ b/Jack/ClientFxDLL/spritefx.h @@ -0,0 +1,77 @@ +//------------------------------------------------------------------ +// +// MODULE : SPRITEFX.H +// +// PURPOSE : Defines class CSpriteFX +// +// CREATED : On 11/23/98 At 6:21:38 PM +// +//------------------------------------------------------------------ + +#ifndef __SpriteFX__H_ + #define __SpriteFX__H_ + + // Includes.... + + #include "basefx.h" + + // + // Defines... + // + + #define FACE_CAMERAFACING 0 + #define FACE_ALONGNORMAL 1 + #define FACE_PARENTALIGN 2 + + class CSpriteProps : public CBaseFXProps + { + public: + + CSpriteProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + char m_sSpriteName[128]; + LTBOOL m_bCastVisibleRay; + uint8 m_nFacing; + uint32 m_dwObjectFlags2; + uint32 m_dwObjectFlags; + LTVector m_vNorm; + LTBOOL m_bRotate; + }; + + + + class CSpriteFX : public CBaseFX + { + public : + + // Constuctor + + CSpriteFX( CBaseFX::FXType nType = CBaseFX::eSpriteFX ); + + // Destructor + + virtual ~CSpriteFX(); + + // Member Functions + + virtual bool Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps); + virtual bool Update(float tmCur); + virtual void Term(); + void ReadProps( CLinkList *pProps ); + + // Accessors + + protected : + + const CSpriteProps* GetProps() { return (const CSpriteProps*)m_pProps; } + + // Member Variables + + LTRotation m_rRot; + LTRotation m_rNormalRot; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/spritesystemfx.cpp b/Jack/ClientFxDLL/spritesystemfx.cpp new file mode 100644 index 00000000..53c1da76 --- /dev/null +++ b/Jack/ClientFxDLL/spritesystemfx.cpp @@ -0,0 +1,926 @@ +//------------------------------------------------------------------ +// +// MODULE : SPRITESYSTEM.CPP +// +// PURPOSE : Implements class CSpriteSystem +// +// CREATED : On 10/26/98 At 3:59:54 PM +// +//------------------------------------------------------------------ + +// Includes.... + +#include "stdafx.h" +#include "ClientFX.h" +#include "SpriteSystemFX.h" +#include "FastList.h" +#include "CycleTimer.h" +#include "iltspritecontrol.h" +#include "stdio.h" +#include "time.h" + +// Globals.... + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteSystemProps::CSpriteSystemProps +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CSpriteSystemProps::CSpriteSystemProps() : + m_nSpritesPerEmission ( 5 ), + m_fGravity ( 0.0f) , + m_fEmissionInterval ( 1.0f ), + m_fMinSpriteLifespan ( 1.0f ), + m_fMaxSpriteLifespan ( 2.0f ), + m_nEmissionType ( SS_POINT ), + m_fMinRadius ( 0.0f ), + m_fMaxRadius ( 10.0f ), + m_vPlaneDir ( 0.0f, 1.0f, 0.0f ), + m_vMinSpriteVelocity ( 0.0f, 0.0f, 0.0f ), + m_vMaxSpriteVelocity ( 0.0f, 0.0f, 0.0f ), + m_vMinSpriteRotation ( 0.0f, 0.0f, 0.0f ), + m_vMaxSpriteRotation ( 0.0f, 0.0f, 0.0f ), + m_nAlphaType ( 0 ), + m_fStretchU ( 1.0f ), + m_fStretchV ( 1.0f ), + m_nAnimLengthType ( SS_ANIMLEN_SPRITEDEFAULT ), + m_fAnimSpeed ( 1.0f ), + m_bInfiniteLife ( LTFALSE ), + m_bUseSpin ( LTFALSE ) +{ + m_szFileName[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteSystemProps::ReadProps +// +// PURPOSE: Read in the proporty values that were set in FxED +// +// ----------------------------------------------------------------------- // + +bool CSpriteSystemProps::ParseProperties(FX_PROP* pProps, uint32 nNumProps) +{ + if(!CBaseFXProps::ParseProperties(pProps, nNumProps)) + return false; + + // + // Loop through the props to initialize data + // + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pProps[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, "Sprite" )) + { + fxProp.GetPath( m_szFileName ); + } + else if( !_stricmp( fxProp.m_sName, "EmissionInterval" )) + { + m_fEmissionInterval = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "SpritesPerEmission" )) + { + m_nSpritesPerEmission = fxProp.GetIntegerVal(); + } + else if( !_stricmp( fxProp.m_sName, "MinSpriteRotation" )) + { + m_vMinSpriteRotation = fxProp.GetVector(); + + m_vMinSpriteRotation.x = MATH_DEGREES_TO_RADIANS( m_vMinSpriteRotation.x ); + m_vMinSpriteRotation.y = MATH_DEGREES_TO_RADIANS( m_vMinSpriteRotation.y ); + m_vMinSpriteRotation.z = MATH_DEGREES_TO_RADIANS( m_vMinSpriteRotation.z ); + } + else if( !_stricmp( fxProp.m_sName, "MaxSpriteRotation" )) + { + m_vMaxSpriteRotation = fxProp.GetVector(); + + m_vMaxSpriteRotation.x = MATH_DEGREES_TO_RADIANS( m_vMaxSpriteRotation.x ); + m_vMaxSpriteRotation.y = MATH_DEGREES_TO_RADIANS( m_vMaxSpriteRotation.y ); + m_vMaxSpriteRotation.z = MATH_DEGREES_TO_RADIANS( m_vMaxSpriteRotation.z ); + } + else if( !_stricmp( fxProp.m_sName, "GravityAcceleration" )) + { + m_fGravity = fxProp.GetFloatVal(); + } + else if (!_stricmp( fxProp.m_sName, "MinSpriteLifespan" )) + { + m_fMinSpriteLifespan = fxProp.GetFloatVal(); + } + else if (!_stricmp( fxProp.m_sName, "MaxSpriteLifespan" )) + { + m_fMaxSpriteLifespan = fxProp.GetFloatVal(); + } + else if (!_stricmp( fxProp.m_sName, "MinRadius" )) + { + m_fMinRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "MaxRadius" )) + { + m_fMaxRadius = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "EmissionPlane" )) + { + m_vPlaneDir = fxProp.GetVector(); + + m_vPlaneDir.Norm(); + + // Get the perpindicular vectors to this plane + FindPerps(m_vPlaneDir, m_vPerp1, m_vPerp2); + } + else if( !_stricmp( fxProp.m_sName, "MinSpriteVelocity" )) + { + m_vMinSpriteVelocity = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "MaxSpriteVelocity" )) + { + m_vMaxSpriteVelocity = fxProp.GetVector(); + } + else if( !_stricmp( fxProp.m_sName, "EmissionType" )) + { + m_nEmissionType = (uint32)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "AType" )) + { + m_nAlphaType = (uint32)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "StretchU" )) + { + m_fStretchU = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "StretchV" )) + { + m_fStretchV = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, "AnimationLength" )) + { + m_nAnimLengthType = (uint32)fxProp.GetComboVal(); + } + else if( !_stricmp( fxProp.m_sName, "AnimationSpeed" )) + { + m_fAnimSpeed = fxProp.GetFloatVal(); + + //make sure it isn't infinitely fast! + m_fAnimSpeed = LTMAX(m_fAnimSpeed, 0.001f); + } + else if( !_stricmp( fxProp.m_sName, "InfiniteLife" ) ) + { + m_bInfiniteLife = (LTBOOL)fxProp.GetComboVal(); + } + } + + m_bUseSpin = ((m_vRotAdd.x != 0) || (m_vRotAdd.y != 0.0f) || (m_vRotAdd.z != 0.0f)) ? true : false; + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CSpriteSystem() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CSpriteSystem::CSpriteSystem() +: CBaseFX ( CBaseFX::eSpriteSystem ), + m_tmElapsedEmission ( 0.0f ), + m_pTexArray ( LTNULL ), + m_vRandomPoint ( 0.0f, 0.0f, 0.0f ), + m_nSpriteFrames ( 0 ) +{ + +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CSpriteSystem +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CSpriteSystem::~CSpriteSystem() +{ + Term(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CSpriteSystem +// +//------------------------------------------------------------------ + +bool CSpriteSystem::Init(ILTClient *pClientDE, FX_BASEDATA *pBaseData, const CBaseFXProps *pProps) +{ + // Perform base class initialisation + + if (!CBaseFX::Init(pClientDE, pBaseData, pProps)) + return false; + + + if( GetProps()->m_bUseSpin ) + { + m_rSpin.Identity(); + } + + // Allocate the static sprite array, handling the case where the user only wants one emission + uint32 nNumAllocSprites = GetProps()->m_nSpritesPerEmission; + if(GetProps()->m_fEmissionInterval > 0.0f) + { + nNumAllocSprites = (uint32)(((1.0f / GetProps()->m_fEmissionInterval) * GetProps()->m_nSpritesPerEmission) * GetProps()->m_fMaxSpriteLifespan) + GetProps()->m_nSpritesPerEmission; + } + + m_collSprites.Init(nNumAllocSprites); + + // Create the base object + + ObjectCreateStruct ocs; + + ocs.m_ObjectType = OT_SPRITE; + ocs.m_Flags |= pBaseData->m_dwObjectFlags | FLAG_ROTATEABLESPRITE; + ocs.m_Flags2 |= pBaseData->m_dwObjectFlags2; + ocs.m_Pos = m_vCreatePos; + ocs.m_Rotation = m_rCreateRot; + ocs.m_Scale.Init( 0.0f, 0.0f, 0.0f ); + + SAFE_STRCPY(ocs.m_Filename, GetProps()->m_szFileName); + + // Develop the Right and Up vectors based off the Forward... + + if( pBaseData->m_vTargetNorm.LengthSquared() > MATH_EPSILON ) + { + LTVector vR, vU; + + pBaseData->m_vTargetNorm.Normalize(); + + if( (1.0f == pBaseData->m_vTargetNorm.y) || (-1.0f == pBaseData->m_vTargetNorm.y) ) + { + vR = LTVector( 1.0f, 0.0f, 0.0f ).Cross( pBaseData->m_vTargetNorm ); + } + else + { + vR = LTVector( 0.0f, 1.0f, 0.0f ).Cross( pBaseData->m_vTargetNorm ); + } + + vU = pBaseData->m_vTargetNorm.Cross( vR ); + ocs.m_Rotation = LTRotation( pBaseData->m_vTargetNorm, vU ); + } + + + m_hObject = m_pLTClient->CreateObject(&ocs); + if( !m_hObject ) + return LTFALSE; + + + ILTSpriteControl *pControl; + m_pLTClient->GetSpriteControl(m_hObject, pControl); + + if( pControl ) + { + uint32 tmSpriteLen; + + pControl->GetAnimLength(tmSpriteLen, 0); + + pControl->GetNumFrames(0, m_nSpriteFrames); + + //ok, this takes some convoluted math in order to figure out the length of + //this sprite. The value of tmSpriteLen is the time FPS * Number of frames, + //so we can get the number of frames a second, and find the actual time in seconds + float fFPS = (float)tmSpriteLen / (float)m_nSpriteFrames; + + m_fSpriteLen = m_nSpriteFrames / fFPS; + + if( m_nSpriteFrames ) + { + m_pTexArray = debug_newa( HTEXTURE, m_nSpriteFrames); + + for (uint32 i = 0; i < m_nSpriteFrames; i ++) + { + pControl->GetFrameTextureHandle(m_pTexArray[i], 0, i); + } + } + } + + + m_bUpdateColour = LTFALSE; + m_bUpdateScale = LTFALSE; + + if( GetProps()->m_nEmissionType == SS_POINT ) + { + // Get a random point on our plane for use in point emision + + m_vRandomPoint = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + + m_vRandomPoint.Norm(); + + // Now scale it into our desired range + + m_vRandomPoint *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + } + + // Success !! + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CSpriteSystem +// +//------------------------------------------------------------------ + +void CSpriteSystem::Term() +{ + // Make sure these are released before the object is released... + if (m_pTexArray) + { + for (uint32 i=0; i < m_nSpriteFrames; i++) + { + if (m_pTexArray[i]) + { + m_pLTClient->GetTexInterface()->ReleaseTextureHandle(m_pTexArray[i]); + } + } + } + + if( m_hObject ) + { + m_pLTClient->RemoveObject( m_hObject ); + m_hObject = LTNULL; + } + + debug_deletea( m_pTexArray ); + m_pTexArray = NULL; + m_nSpriteFrames = 0; +} + +bool CSpriteSystem::SuspendedUpdate( float tmFrameTime ) +{ + if(!CBaseFX::SuspendedUpdate(tmFrameTime)) + return false; + + UpdateSprites(tmFrameTime); + return true; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : Update() +// +// PURPOSE : Updates class CSpriteSystem +// +//------------------------------------------------------------------ + +bool CSpriteSystem::Update(float tmFrameTime) +{ + if( !m_hObject ) + return LTFALSE; + + // Base class update first + + if( !CBaseFX::Update( tmFrameTime ) ) + return LTFALSE; + + //update our elapsed emission time + m_tmElapsedEmission += tmFrameTime; + + // Are we ready for another emission? + if(!IsShuttingDown()) + { + //if this is the first frame, we need to handle emitting particles + if(IsInitialFrame()) + { + AddSprites(); + m_tmElapsedEmission = 0.0f; + } + + //see if we want to emit any more particles + if(GetProps()->m_fEmissionInterval > 0.0f) + { + while(m_tmElapsedEmission >= GetProps()->m_fEmissionInterval) + { + //however, don't bother trying to add these particles if they won't live long enough + //to show up in the next frame + if(m_tmElapsedEmission >= GetProps()->m_fMaxSpriteLifespan) + { + m_tmElapsedEmission -= GetProps()->m_fEmissionInterval; + continue; + } + + // We have emission + AddSprites(); + m_tmElapsedEmission -= GetProps()->m_fEmissionInterval; + + //see if we should run an update on those particles + if(m_tmElapsedEmission >= GetProps()->m_fEmissionInterval) + { + //we need to run an update + UpdateSprites(GetProps()->m_fEmissionInterval); + tmFrameTime -= GetProps()->m_fEmissionInterval; + } + } + } + } + + UpdateSprites( tmFrameTime ); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteSystem::AddSprites +// +// PURPOSE: Emit sprites +// +// ----------------------------------------------------------------------- // + +void CSpriteSystem::AddSprites( ) +{ + LTVector vPos; + LTVector vObjPos; + LTRotation rObjRot; + LTMatrix mObjRot; + + vObjPos = m_vPos; + m_pLTClient->GetObjectRotation( m_hObject, &rObjRot ); + rObjRot.ConvertToMatrix( mObjRot ); + + for( uint32 i = 0; i < GetProps()->m_nSpritesPerEmission; i++ ) + { + // Get an unused sprite + + SPRITE *pNewSprite = m_collSprites.Alloc(); + + if (pNewSprite) + { + // What kind of emission do we have? + switch( GetProps()->m_nEmissionType ) + { + case SS_SPHERE: + { + vPos.x = GetRandom( -1.0f, 1.0f ); + vPos.y = GetRandom( -1.0f, 1.0f ); + vPos.z = GetRandom( -1.0f, 1.0f ); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + + } + break; + + case SS_POINT: + { + vPos = m_vRandomPoint; + } + break; + + case SS_CIRCLE: + { + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom( GetProps()->m_fMinRadius, GetProps()->m_fMaxRadius ); + } + break; + + case SS_CONE: + { + //the real trick here is evenly distributing the particles + //inside of the cone since if we just blindly picked a height, the + //particles would bunch up at the bottom. This is done by + //using a square, since it bunches numbers more towards the lower + //end of the spectrum, so if the lower end corresponds to the end + //of the cone, it will tend to bunch it up more there + float fRandom = GetRandom(0.0f, (float)sqrt(GetProps()->m_fMaxRadius)); + float fOffset = GetProps()->m_fMaxRadius - fRandom * fRandom; + + //generate a point on that circle + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + //find the radius of the cone at that point + float fRadius = GetProps()->m_fMinRadius * fOffset / GetProps()->m_fMaxRadius; + + // Now scale it into our desired range + vPos *= GetRandom(0.0f, fRadius); + + //now offset it appropriately + vPos += (GetProps()->m_vPlaneDir * fOffset); + } + break; + + case SS_CYLINDER: + { + //position it on a circle + vPos = (GetProps()->m_vPerp1 * GetRandom( -1.0f, 1.0f )) + + (GetProps()->m_vPerp2 * GetRandom( -1.0f, 1.0f )); + + // Normalize it + vPos.Norm(); + + // Now scale it into our desired range + vPos *= GetRandom(0.0f, GetProps()->m_fMinRadius); + + //offset it along the height + vPos += GetProps()->m_vPlaneDir * GetRandom(0.0f, GetProps()->m_fMaxRadius); + } + break; + + default: + assert(!"Error: Unknown sprite system emission type encountered"); + return; + + } + + // Randomize the velocity within our range + + pNewSprite->m_vVel.x = GetRandom( GetProps()->m_vMinSpriteVelocity.x, GetProps()->m_vMaxSpriteVelocity.x ); + pNewSprite->m_vVel.y = GetRandom( GetProps()->m_vMinSpriteVelocity.y, GetProps()->m_vMaxSpriteVelocity.y ); + pNewSprite->m_vVel.z = GetRandom( GetProps()->m_vMinSpriteVelocity.z, GetProps()->m_vMaxSpriteVelocity.z ); + + // Set the velocity in the correct rotation to keep "localized" + + pNewSprite->m_vVel = mObjRot * pNewSprite->m_vVel; + + // Randomize our rotation... + + pNewSprite->m_vRotAdd.x = GetRandom( GetProps()->m_vMinSpriteRotation.x, GetProps()->m_vMaxSpriteRotation.x ); + pNewSprite->m_vRotAdd.y = GetRandom( GetProps()->m_vMinSpriteRotation.y, GetProps()->m_vMaxSpriteRotation.y ); + pNewSprite->m_vRotAdd.z = GetRandom( GetProps()->m_vMinSpriteRotation.z, GetProps()->m_vMaxSpriteRotation.z ); + + pNewSprite->m_rRot = LTRotation( pNewSprite->m_vRotAdd.x, pNewSprite->m_vRotAdd.y, pNewSprite->m_vRotAdd.z ); + pNewSprite->m_vPos = vPos + vObjPos; + pNewSprite->m_fLifespan = GetRandom( GetProps()->m_fMinSpriteLifespan, GetProps()->m_fMaxSpriteLifespan ); + pNewSprite->m_tmElapsed = 0.0f; + } + + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteSystem::UpdateSprites +// +// PURPOSE: Manually move and update the particles +// +// ----------------------------------------------------------------------- // + +void CSpriteSystem::UpdateSprites( LTFLOAT tmFrameTime ) +{ + //if there is no time elapsed, don't bother to update + if(tmFrameTime < 0.0001f) + return; + + SPRITE *pSprites = m_collSprites.GetData(); + uint32 nSprites = m_collSprites.GetUsed(); + + if( !pSprites ) + return; + + if (GetProps()->m_bUseSpin) + { + // Add on our rotation + m_rSpin.Rotate( m_rSpin.Right(), MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.x * tmFrameTime) ); + m_rSpin.Rotate( m_rSpin.Up(), MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.y * tmFrameTime) ); + m_rSpin.Rotate( m_rSpin.Forward(), MATH_DEGREES_TO_RADIANS(GetProps()->m_vRotAdd.z * tmFrameTime) ); + } + + // Update the sprites.... + + for( uint32 i = 0; i < nSprites; i ++) + { + pSprites->m_tmElapsed += tmFrameTime; + + if (pSprites->m_tmElapsed >= pSprites->m_fLifespan) + { + if(GetProps()->m_bInfiniteLife) + { + //we have infinite life, update the lifepsan + pSprites->m_tmElapsed = fmodf(pSprites->m_tmElapsed, pSprites->m_fLifespan); + } + else + { + // Destroy this sprite + m_collSprites.Free(pSprites); + continue; + } + } + + pSprites->m_vPos += (pSprites->m_vVel * tmFrameTime); + pSprites->m_vVel.y += (GetProps()->m_fGravity * tmFrameTime); + + //add onto our rotation + pSprites->m_rRot.Rotate( pSprites->m_rRot.Right(), pSprites->m_vRotAdd.x * tmFrameTime ); + pSprites->m_rRot.Rotate( pSprites->m_rRot.Up(), pSprites->m_vRotAdd.y * tmFrameTime ); + pSprites->m_rRot.Rotate( pSprites->m_rRot.Forward(), pSprites->m_vRotAdd.z * tmFrameTime ); + + pSprites ++; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSpriteSystem::Render +// +// PURPOSE: Renders the sprites to the scene using DrawPrim +// +// ----------------------------------------------------------------------- // + +bool CSpriteSystem::Render() +{ + //don't bother if we don't have focus + if( !CBaseFX::Render() ) + return false; + + SPRITE *pSprites = m_collSprites.GetData(); + uint32 nSprites = m_collSprites.GetUsed(); + + if( !pSprites ) + return true; + + // Build the camera transform + + LTMatrix mFull = GetCamTransform(m_pLTClient, m_hCamera); + + uint32 nFlags; + m_pLTClient->Common()->GetObjectFlags(m_hObject, OFT_Flags, nFlags); + + //matrix holding the representation for this sprite sytem + LTMatrix mSpin; + + if (GetProps()->m_bUseSpin) + { + // Setup rotation + + LTVector vObjPos; + LTRotation rObjRot; + + m_pLTClient->GetObjectPos( m_hObject, &vObjPos ); + m_pLTClient->GetObjectRotation( m_hObject, &rObjRot ); + + // Setup the swarmming matrix + SetupRotationAroundPoint( mSpin, rObjRot * m_rSpin, vObjPos ); + } + + // Setup the draw primitive... + + ILTDrawPrim *pDrawPrimitive = m_pLTClient->GetDrawPrim(); + + if(nFlags & FLAG_REALLYCLOSE) + { + mFull.Identity(); + pDrawPrimitive->SetReallyClose(true); + } + + pDrawPrimitive->SetTransformType(DRAWPRIM_TRANSFORM_CAMERA); + + if (GetProps()->m_nAlphaType) + { + pDrawPrimitive->SetAlphaBlendMode(DRAWPRIM_BLEND_MUL_SRCALPHA_ONE); + } + else + { + pDrawPrimitive->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + } + + pDrawPrimitive->SetColorOp(DRAWPRIM_MODULATE); + pDrawPrimitive->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + pDrawPrimitive->SetZBufferMode(DRAWPRIM_ZRO); + + LTFLOAT r, g, b, a; + LTFLOAT scale = 0.2f; + HTEXTURE hTexture = m_pTexArray[0]; + HTEXTURE hPrevTexture = NULL; + uint32 dwWidth = 0; + uint32 dwHeight = 0; + LTVector vWorldPos; + + //calculate the duration of the sprite animation (note that this will be overwritten + //if the animation length is specified to be dependent upon the lifespan of + //the individual particles) + float fAnimLength = 1.0f; + + if(GetProps()->m_nAnimLengthType == SS_ANIMLEN_SPRITEDEFAULT) + fAnimLength = m_fSpriteLen; + else if(GetProps()->m_nAnimLengthType == SS_ANIMLEN_KEY) + fAnimLength = GetLifespan(); + + //make sure to adjust our animation speed based upon the provided multiplier + fAnimLength /= GetProps()->m_fAnimSpeed; + + // Update the sprites.... + + //tell draw primitive that we are going to be making a lot of calls, so that it doesn't + //need to constantly reset all the states + pDrawPrimitive->BeginDrawPrim(); + + for( uint32 i = 0; i < nSprites; i ++) + { + // Rotate if neccessary + LTVector vPos = pSprites->m_vPos; + + if( GetProps()->m_bUseSpin ) + { + MatVMul_InPlace(&mSpin, &vPos); + } + + // Setup the color and scale + CalcColour( pSprites->m_tmElapsed, pSprites->m_fLifespan, &r, &g, &b, &a ); + CalcScale( pSprites->m_tmElapsed, pSprites->m_fLifespan, &scale ); + + // Set up the current texture we should be using... + if (m_nSpriteFrames > 1) + { + //see if we need to base the lifespan off of the sprite particle's + if(GetProps()->m_nAnimLengthType == SS_ANIMLEN_PARTICLE) + fAnimLength = pSprites->m_fLifespan * GetProps()->m_fAnimSpeed; + + int nIndex = (int)((float)m_nSpriteFrames * pSprites->m_tmElapsed / fAnimLength); + nIndex = nIndex % m_nSpriteFrames; + + hTexture = m_pTexArray[nIndex]; + } + + // Draw the particle + if(hPrevTexture != hTexture) + { + m_pLTClient->GetTexInterface()->GetTextureDims(hTexture, dwWidth, dwHeight); + pDrawPrimitive->SetTexture(hTexture); + + hPrevTexture = hTexture; + } + + MatVMul(&vWorldPos, &mFull, &vPos); + + SetupParticle(vWorldPos, scale, (float)dwHeight * scale / (float)dwWidth, pSprites->m_rRot, + (uint8)(r * 255.0f), (uint8)(g * 255.0f), (uint8)(b * 255.0f), (uint8)(a * 255.0f)); + + pDrawPrimitive->DrawPrim(g_pTris, 2); + + pSprites ++; + } + + pDrawPrimitive->EndDrawPrim(); + pDrawPrimitive->SetZBufferMode(DRAWPRIM_ZRW); + + if(nFlags & FLAG_REALLYCLOSE) + { + pDrawPrimitive->SetReallyClose(false); + } + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CSpriteSystem::SetupParticle() +// +// PURPOSE : Adds a particle quad into the vertex list +// +//------------------------------------------------------------------ + +void CSpriteSystem::SetupParticle(const LTVector& vPos, float fWidth, float fHeight, const LTRotation& rSpin, uint8 r, uint8 g, uint8 b, uint8 a) +{ + LT_POLYGT3 *pTris = g_pTris; + + if (vPos.z < 0.0f) + return; + + fWidth *= GetProps()->m_fStretchU; + fHeight *= GetProps()->m_fStretchV; + + LTVector vVert[4]; + + vVert[0] = LTVector( vPos.x - fWidth, vPos.y + fHeight, vPos.z ); + vVert[1] = LTVector( vPos.x + fWidth, vPos.y + fHeight, vPos.z ); + vVert[2] = LTVector( vPos.x + fWidth, vPos.y - fHeight, vPos.z ); + vVert[3] = LTVector( vPos.x - fWidth, vPos.y - fHeight, vPos.z ); + + if( !rSpin.IsIdentity() ) + { + LTMatrix mSpin; + SetupRotationAroundPoint( mSpin, rSpin, vPos ); + + vVert[0] = mSpin * vVert[0]; + vVert[1] = mSpin * vVert[1]; + vVert[2] = mSpin * vVert[2]; + vVert[3] = mSpin * vVert[3]; + } + + SetupVert(pTris, 0, vVert[0], r, g, b, a, 0.0f, 0.0f); + SetupVert(pTris, 1, vVert[1], r, g, b, a, 1.0f, 0.0f); + SetupVert(pTris, 2, vVert[2], r, g, b, a, 1.0f, 1.0f); + + pTris ++; + + SetupVert(pTris, 0, vVert[0], r, g, b, a, 0.0f, 0.0f); + SetupVert(pTris, 1, vVert[2], r, g, b, a, 1.0f, 1.0f); + SetupVert(pTris, 2, vVert[3], r, g, b, a, 0.0f, 1.0f); +} + +//------------------------------------------------------------------ +// +// FUNCTION : fxGetSpriteSystemProps() +// +// PURPOSE : Returns a list of properties for this FX +// +//------------------------------------------------------------------ + +void fxGetSpriteSystemProps(CFastList *pList) +{ + FX_PROP fxProp; + float fVec[3]; + fVec[0] = 0.0f; + fVec[1] = 1.0f; + fVec[2] = 0.0f; + + // Add the base props + + AddBaseProps(pList); + + // Add all the props to the list + + fxProp.Path("Sprite", "spr|..."); + pList->AddTail(fxProp); + + fxProp.Float("EmissionInterval", 0.01f); + pList->AddTail(fxProp); + + fxProp.Int("SpritesPerEmission", 5); + pList->AddTail(fxProp); + + fxProp.Vector( "MinSpriteRotation", fVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MaxSpriteRotation", fVec ); + pList->AddTail( fxProp ); + + fxProp.Float( "GravityAcceleration", -500.0f ); + pList->AddTail( fxProp ); + + fxProp.Float("MinSpriteLifespan", 1.0f); + pList->AddTail(fxProp); + + fxProp.Float("MaxSpriteLifespan", 2.0f); + pList->AddTail(fxProp); + + fxProp.Float( "MinRadius", 0.0f ); + pList->AddTail( fxProp ); + + fxProp.Float( "MaxRadius", 10.0f ); + pList->AddTail( fxProp ); + + fxProp.Vector( "EmissionPlane", fVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MinSpriteVelocity", fVec ); + pList->AddTail( fxProp ); + + fxProp.Vector( "MaxSpriteVelocity", fVec ); + pList->AddTail( fxProp ); + + fxProp.Combo( "EmissionType", "0,Sphere,Point,Circle,Cone,Cylinder" ); + pList->AddTail( fxProp ); + + fxProp.Combo("AType", "0,Norm,Add"); + pList->AddTail(fxProp); + + fxProp.Float("StretchU", 1.0f); + pList->AddTail(fxProp); + + fxProp.Float("StretchV", 1.0f); + pList->AddTail(fxProp); + + fxProp.Combo("AnimationLength", "0,SpriteDefault,ParticleLife,KeyLength"); + pList->AddTail(fxProp); + + fxProp.Float("AnimationSpeed", 1.0f); + pList->AddTail(fxProp); + + fxProp.Combo("InfiniteLife", "0, No, Yes" ); + pList->AddTail(fxProp); +} + diff --git a/Jack/ClientFxDLL/spritesystemfx.h b/Jack/ClientFxDLL/spritesystemfx.h new file mode 100644 index 00000000..3aaf3996 --- /dev/null +++ b/Jack/ClientFxDLL/spritesystemfx.h @@ -0,0 +1,133 @@ +//------------------------------------------------------------------ +// +// MODULE : SPRITESYSTEM.H +// +// PURPOSE : Defines class CSpriteSystem +// +// CREATED : On 10/26/98 At 4:00:00 PM +// +//------------------------------------------------------------------ + +#ifndef __SPRITESYSTEM__H_ + #define __SPRITESYSTEM__H_ + + // Includes.... + + #include "basefx.h" + #include "linklist.h" + #include "fastlist.h" + #include "swaplist.h" + + // Structures.... + + struct SPRITE + { + LTFLOAT m_tmElapsed; + LTFLOAT m_fLifespan; + LTVector m_vPos; + LTVector m_vVel; + LTVector m_vRotAdd; + LTRotation m_rRot; + }; + + // Defines.... + + enum + { + SS_SPHERE, + SS_POINT, + SS_CIRCLE, + SS_CONE, + SS_CYLINDER + }; + + + enum + { + SS_ANIMLEN_SPRITEDEFAULT, + SS_ANIMLEN_PARTICLE, + SS_ANIMLEN_KEY + }; + + // Classes.... + + class CSpriteSystemProps : public CBaseFXProps + { + public: + + CSpriteSystemProps(); + + //this will take a list of properties and convert it to internal values + virtual bool ParseProperties(FX_PROP* pProps, uint32 nNumProps); + + uint32 m_nSpritesPerEmission; + uint32 m_nAnimLengthType; + LTFLOAT m_fAnimSpeed; + LTFLOAT m_fEmissionInterval; + LTFLOAT m_fGravity; + LTFLOAT m_fMinSpriteLifespan; + LTFLOAT m_fMaxSpriteLifespan; + uint32 m_nEmissionType; + LTFLOAT m_fMinRadius; + LTFLOAT m_fMaxRadius; + LTVector m_vPlaneDir; + LTVector m_vPerp1; + LTVector m_vPerp2; + LTVector m_vMinSpriteVelocity; + LTVector m_vMaxSpriteVelocity; + LTVector m_vMinSpriteRotation; + LTVector m_vMaxSpriteRotation; + LTBOOL m_bInfiniteLife; + uint32 m_nAlphaType; + LTFLOAT m_fStretchU; + LTFLOAT m_fStretchV; + char m_szFileName[128]; + LTBOOL m_bUseSpin; + }; + + + class CSpriteSystem : public CBaseFX + { + public : + + // Constuctor + + CSpriteSystem(); + + // Destructor + + ~CSpriteSystem(); + + // Member Functions + + bool Init(ILTClient *pClientDE, FX_BASEDATA *pData, const CBaseFXProps *pProps); + void Term(); + bool Update(float tmFrameTime); + bool SuspendedUpdate(float tmFrameTime); + bool Render(); + bool IsVisibleWhileSuspended() { return m_collSprites.GetUsed() != 0; } + bool IsFinishedShuttingDown() { return m_collSprites.GetUsed() == 0; } + + protected: + + void AddSprites( ); + void UpdateSprites( LTFLOAT tmFrameTime ); + void SetupParticle(const LTVector& vPos, float fWidth, float fHeight, const LTRotation& rSpin, uint8 r, uint8 g, uint8 b, uint8 a); + + // Accessors + + protected : + + const CSpriteSystemProps* GetProps() { return (const CSpriteSystemProps*)m_pProps; } + + // Member Variables + LTFLOAT m_tmElapsedEmission; + LTVector m_vRandomPoint; + LTRotation m_rSpin; + LTFLOAT m_fSpriteLen; + uint32 m_nSpriteFrames; + HTEXTURE *m_pTexArray; + CSwapList m_collSprites; + }; + +#endif \ No newline at end of file diff --git a/Jack/ClientFxDLL/stdafx.cpp b/Jack/ClientFxDLL/stdafx.cpp new file mode 100644 index 00000000..c4036307 --- /dev/null +++ b/Jack/ClientFxDLL/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// ClientFX.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/Jack/ClientFxDLL/stdafx.h b/Jack/ClientFxDLL/stdafx.h new file mode 100644 index 00000000..3bcd9daf --- /dev/null +++ b/Jack/ClientFxDLL/stdafx.h @@ -0,0 +1,74 @@ +#ifndef __STDAFX_H_ + #define __STDAFX_H_ + +// This removes warnings about truncating symbol names when using stl maps. +// +#pragma warning( disable : 4786 ) + +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include + +#include "mfcstub.h" + +#include "DebugNew.h" + +#include "BuildDefines.h" +#include "iltclient.h" +#include "iltserver.h" +#include "iltmessage.h" +#include "globals.h" + +#include "iltmodel.h" +#include "ilttransform.h" +#include "iltphysics.h" +#include "iltmath.h" +#include "iltsoundmgr.h" +#include "ltobjref.h" +#include "ltobjectcreate.h" +#include "iltcommon.h" + +#include "TemplateList.h" + +extern ILTClient *g_pLTClient; + + +#define ARRAY_LEN(array) (sizeof((array)) / sizeof((array)[0])) + +inline LTBOOL GetAttachmentSocketTransform(HOBJECT hObj, const char* pSocketName, + LTVector & vPos, LTRotation & rRot) +{ + if (!hObj || !pSocketName) return LTFALSE; + + HOBJECT hAttachList[30]; + uint32 dwListSize, dwNumAttachments; + + if (g_pLTClient->Common()->GetAttachments(hObj, hAttachList, + ARRAY_LEN(hAttachList), dwListSize, dwNumAttachments) == LT_OK) + { + for (uint32 i=0; i < dwListSize; i++) + { + if (hAttachList[i]) + { + HMODELSOCKET hSocket; + + if (g_pLTClient->GetModelLT()->GetSocket(hAttachList[i], pSocketName, hSocket) == LT_OK) + { + LTransform transform; + if (g_pLTClient->GetModelLT()->GetSocketTransform(hAttachList[i], hSocket, transform, LTTRUE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + return LTTRUE; + } + } + } + } + } + + return LTFALSE; +} + +#endif diff --git a/Jack/ClientFxDLL/swaplist.h b/Jack/ClientFxDLL/swaplist.h new file mode 100644 index 00000000..9c3b1d8f --- /dev/null +++ b/Jack/ClientFxDLL/swaplist.h @@ -0,0 +1,142 @@ +//------------------------------------------------------------------ +// +// MODULE : SWAPLIST.H +// +// PURPOSE : Implements static array using swap method +// +// CREATED : On 5/13/99 At 2:59:31 PM +// +// COPYRIGHT : (C) 1999 Monolith Productions Inc +// +//------------------------------------------------------------------ + +#ifndef __SWAPLIST_H_ + #define __SWAPLIST_H_ + + template class CSwapList + { + public : + + // Constructor + + CSwapList() + { + m_pData = NULL; + m_dwSize = 0; + m_dwUsed = 0; + } + + // Destructor + + ~CSwapList() + { + Term(); + } + + // Member Functions + + bool Init(uint32 dwSize); + void Term(); + + T* Alloc(); + void Free(T *pElem); + + // Accessors + + T* GetData() { return m_pData; } + uint32 GetSize() { return m_dwSize; } + uint32 GetUsed() { return m_dwUsed; } + + + private : + + T *m_pData; + uint32 m_dwSize; + uint32 m_dwUsed; + }; + + //------------------------------------------------------------------ + // + // FUNCTION : Init() + // + // PURPOSE : Initialises class CSwapList + // + //------------------------------------------------------------------ + + template inline bool CSwapList::Init(uint32 dwSize) + { + m_pData = debug_newa( T, dwSize ); + if (!m_pData) return false; + + m_dwSize = dwSize; + m_dwUsed = 0; + + // Success !! + + return true; + } + + //------------------------------------------------------------------ + // + // FUNCTION : Term() + // + // PURPOSE : Terminates class CSwapList + // + //------------------------------------------------------------------ + + template inline void CSwapList::Term() + { + if (m_pData) debug_deletea( m_pData ); + m_pData = NULL; + m_dwSize = 0; + m_dwUsed = 0; + } + + //------------------------------------------------------------------ + // + // FUNCTION : Alloc() + // + // PURPOSE : Allocates a new element + // + //------------------------------------------------------------------ + + template inline T* CSwapList::Alloc() + { + if (m_dwUsed < m_dwSize) + { + T *pNewElem = m_pData + m_dwUsed; + m_dwUsed ++; + + return pNewElem; + } + else + { + return NULL; + } + } + + //------------------------------------------------------------------ + // + // FUNCTION : Free() + // + // PURPOSE : Frees an element + // + //------------------------------------------------------------------ + + template inline void CSwapList::Free(T *pElem) + { + if (!m_dwUsed) return; + + if ((pElem - m_pData) == (int)(m_dwUsed - 1)) + { + m_dwUsed --; + return; + } + + // Swap the last used element with this one + + *pElem = m_pData[m_dwUsed - 1]; + m_dwUsed --; + } + +#endif \ No newline at end of file diff --git a/Jack/ClientRes/ClientRes.h b/Jack/ClientRes/ClientRes.h new file mode 100644 index 00000000..0f280ee6 --- /dev/null +++ b/Jack/ClientRes/ClientRes.h @@ -0,0 +1,9637 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by C:\Program Files\Perforce\source\To2\Game\ClientRes\Lang\En\ClientRes.rc +// +#define IDS_VERSION 500 +#define IDS_TITLE_GAME 502 +#define IDS_TITLE_DIFFICULTY 503 +#define IDS_TITLE_OPTIONS 504 +#define IDS_TITLE_NEWGAME 505 +#define IDS_TITLE_LOADGAME 506 +#define IDS_TITLE_SAVEGAME 507 +#define IDS_TITLE_CUSTOMLEVELS 508 +#define IDS_TITLE_DISPLAYOPTIONS 509 +#define IDS_TITLE_TEXTURE 510 +#define IDS_TITLE_PERFORMANCE 511 +#define IDS_TITLE_SOUND 512 +#define IDS_TITLE_KEYBOARD 513 +#define IDS_TITLE_MOUSE 514 +#define IDS_TITLE_JOYSTICK 515 +#define IDS_TITLE_BRIEFING 516 +#define IDS_TITLE_STATUS 517 +#define IDS_NO_DM_MAPS 517 +#define IDS_TITLE_ENDMISSION 518 +#define IDS_TITLE_PROFILE 519 +#define IDS_TITLE_PLAYER 520 +#define IDS_TITLE_CROSSHAIR 521 +#define IDS_TITLE_CONTROLS 522 +#define IDS_TITLE_CONFIGURE 523 +#define IDS_TITLE_MULTI 524 +#define IDS_TITLE_HOST_OPTIONS 525 +#define IDS_M_STAT_SECRETS 526 +#define IDS_TITLE_OBJECTIVES 527 +#define IDS_TITLE_GAME_OPTIONS 528 +#define IDS_TITLE_INVENTORY 529 +#define IDS_TITLE_ADVDISPLAY 530 +#define IDS_TITLE_EFFECTS 531 +#define IDS_TITLE_JOIN 532 +#define IDS_TITLE_HOST 533 +#define IDS_TITLE_HOST_MISSIONS 534 +#define IDS_TITLE_PLAYER_SETUP 535 +#define IDS_TITLE_SUMMARY 536 +#define IDS_STRING536 536 +#define IDS_FOUND_SECRET 536 +#define IDS_CHAPTERS 537 +#define IDS_TITLE_INTEL 538 +#define IDS_TITLE_HOST_CAMPAIGN 539 +#define IDS_TITLE_SYSTEM 540 +#define IDS_TITLE_KEYS 541 +#define IDS_SUBROUTINES 542 +#define IDS_HOST_NAME_TDM_DEFAULT 542 +#define IDS_TEAM_SAY 543 +#define IDS_HELP_SUBROUTINES 544 +#define IDS_HOST_NAME_DD_DEFAULT 544 +#define IDS_HELP_MULTIPLAYER_LAN 545 +#define IDS_RATINGS 546 +#define IDS_TITLE_TEAM 546 +#define IDS_HELP_CHAPTERS 547 +#define IDS_HELP_RATINGS 548 +#define IDS_HELP_TEAM_NAME 548 +#define IDS_HELP_CHAPTER_LIST 549 +#define IDS_HELP_FAILURE 550 +#define IDS_PRESS_ANY_KEY 551 +#define IDS_NORMAL 552 +#define IDS_PERFORMANCE_TEST 553 +#define IDS_CUSTOM 554 +#define IDS_ON 555 +#define IDS_OFF 556 +#define IDS_YES 557 +#define IDS_NO 558 +#define IDS_NONE 559 +#define IDS_FEW 560 +#define IDS_SOME 561 +#define IDS_LOTS 562 +#define IDS_ALL 563 +#define IDS_CLOSE 564 +#define IDS_SPACER 565 +#define IDS_BACK 566 +#define IDS_CREATE 567 +#define IDS_LOAD 568 +#define IDS_DELETE 569 +#define IDS_OK 570 +#define IDS_CANCEL 571 +#define IDS_ENTER_NAME 572 +#define IDS_CONTINUE 573 +#define IDS_EMPTY_SLOT 574 +#define IDS_WHEEL_UP 575 +#define IDS_WHEEL_DOWN 576 +#define IDS_TEAM_1_OPTIONS 577 +#define IDS_STRING578 578 +#define IDS_TEAM_2_OPTIONS 578 +#define IDS_SINGLEPLAYER 579 +#define IDS_MULTIPLAYER 580 +#define IDS_OPTIONS 581 +#define IDS_CREDITS 582 +#define IDS_EXIT 583 +#define IDS_NEWGAME 584 +#define IDS_LOADGAME 585 +#define IDS_SAVEGAME 586 +#define IDS_CUSTOM_LEVEL 587 +#define IDS_DISPLAY 588 +#define IDS_SOUND 589 +#define IDS_KEYBOARD 590 +#define IDS_MOUSE 591 +#define IDS_JOYSTICK 592 +#define IDS_RESTOREDEFAULTS 593 +#define IDS_CONFIGURE 594 +#define IDS_BRIEFING 595 +#define IDS_OBJECTIVES 596 +#define IDS_NORMALTURN 597 +#define IDS_FASTTURN 598 +#define IDS_LOOKUP 599 +#define IDS_START_MISSION 600 +#define IDS_CH_ALPHA 601 +#define IDS_CH_R 602 +#define IDS_CH_G 603 +#define IDS_CH_B 604 +#define IDS_CH_STYLE 605 +#define IDS_CH_BASIC 606 +#define IDS_CH_CROSSBAR 607 +#define IDS_CH_DOTCROSS 608 +#define IDS_CH_POST 609 +#define IDS_CH_DOT 610 +#define IDS_CH_CORNER 611 +#define IDS_CH_DYNAMIC 612 +#define IDS_CONTROLS_CROSSHAIR 613 +#define IDS_PROFILE 614 +#define IDS_HELP_PROFILE 615 +#define IDS_56K 616 +#define IDS_CABLE 617 +#define IDS_DSL 618 +#define IDS_TEAM_NAME 618 +#define IDS_DSL_HIGH 619 +#define IDS_T1 620 +#define IDS_T3 621 +#define IDS_BANDWIDTH_CYCLE 622 +#define IDS_HELP_BANDWIDTH_CYCLE 623 +#define IDS_HELP_BANDWIDTH_EDIT 625 +#define IDS_BANDWIDTH_EDIT 626 +#define IDS_PROFILE_LIST 627 +#define IDS_RESUME 628 +#define IDS_CONTINUE_GAME 629 +#define IDC_POINTER 630 +#define IDS_TEAM_MODEL 630 +#define IDS_GAMMA 631 +#define IDS_HEADBOB 632 +#define IDS_WEAPONSWAY 633 +#define IDS_HELP_HEADBOB 634 +#define IDS_HELP_WEAPONSWAY 635 +#define IDS_HELP_PICKUP_MSG_DUR 636 +#define IDS_PICKUP_MSG_DUR 637 +#define IDS_IGNORE_TAUNTS 638 +#define IDS_HELP_IGNORE_TAUNTS 639 +#define IDS_ALLOW_TAUNTS 640 +#define IDS_HELP_ALLOW_TAUNTS 641 +#define IDS_RENAME 642 +#define IDS_VERSION_FILTER 643 +#define IDS_MAIN 644 +#define IDS_HELP_GAMMA 645 +#define IDS_HELP_SINGLEPLAYER 646 +#define IDS_HELP_MULTIPLAYER 647 +#define IDS_HELP_OPTIONS 648 +#define IDS_HELP_EXIT 649 +#define IDS_HELP_NEW 650 +#define IDS_HELP_LOAD 651 +#define IDS_HELP_SAVE 652 +#define IDS_HELP_CUSTOM 653 +#define IDS_HELP_PROFILE_CREATE 654 +#define IDS_HELP_BACK 655 +#define IDS_HELP_DIFFICULTY 656 +#define IDS_HELP_DISPLAY 657 +#define IDS_HELP_SOUND 658 +#define IDS_HELP_CONTROLS 659 +#define IDS_HELP_RENDERER 660 +#define IDS_HELP_RESOLUTION 661 +#define IDS_HELP_ANTIALIAS 662 +#define IDS_HELP_DETAILLEVEL 663 +#define IDS_HELP_ADVDISPLAY 664 +#define IDS_HELP_LOOKSPRING 665 +#define IDS_HELP_RUNLOCK 666 +#define IDS_HELP_CROSSHAIR 667 +#define IDS_HELP_GORE 668 +#define IDS_HELP_SHADOWS 669 +#define IDS_TITLE_SUBROUTINES 670 +#define IDS_HELP_TEAM_MODEL 670 +#define IDS_HOST_CAMPAIGN 671 +#define IDS_TITLE_RATINGS 672 +#define IDS_TEAM_1 672 +#define IDS_HELP_CAMPAIGN_NAME 673 +#define IDS_DETAILTEXTURES 674 +#define IDS_HELP_DETAILTEXTURES 675 +#define IDS_ENVIRONMENT_MAP 676 +#define IDS_HELP_ENVIRONMENT_MAP 677 +#define IDS_DYNAMICLIGHTS 678 +#define IDS_HELP_DYNAMICLIGHTS 679 +#define IDS_TRIPLE_BUFF 680 +#define IDS_HELP_TRIPLE_BUFF 681 +#define IDS_HELP_SETCONTROL 682 +#define IDS_HELP_CUSTOMCONTROLS 683 +#define IDS_HELP_MOUSE 684 +#define IDS_HELP_JOYSTICK 685 +#define IDS_HELP_ADVCONTROLS 686 +#define IDS_HELP_RESTORE 687 +#define IDS_HELP_SOUNDFX 688 +#define IDS_HELP_SOUNDVOL 689 +#define IDS_HELP_SOUNDQUAL 690 +#define IDS_HELP_MUSIC 691 +#define IDS_HELP_MUSICVOL 692 +#define IDS_HELP_CUSTOMLEVEL 693 +#define IDS_HELP_USEJOYSTICK 694 +#define IDS_HELP_INVERTAXIS 695 +#define IDS_HELP_DEADZONE 696 +#define IDS_HELP_ANALOG 697 +#define IDS_HELP_JOY_SENSE 698 +#define IDS_HELP_JOY_CENTER 699 +#define IDS_HELP_INVERTY 700 +#define IDS_HELP_MOUSELOOK 701 +#define IDS_HELP_MOUSE_SENSE 702 +#define IDS_HELP_MOUSE_INPUT 703 +#define IDS_HELP_MOUSE_BUTTON 704 +#define IDS_HELP_NORMALTURN 705 +#define IDS_HELP_FASTTURN 706 +#define IDS_HELP_LOOKUP 707 +#define IDS_HOST_CAMPAIGN_DEFAULT 708 +#define IDS_HELP_CROSSHAIRMENU 709 +#define IDS_HELP_LEFT 710 +#define IDS_HELP_RIGHT 711 +#define IDS_HELP_QUICKSAVE 712 +#define IDS_HELP_SAVEGAME 713 +#define IDS_HELP_QUICKLOAD 714 +#define IDS_HELP_LOADGAME 715 +#define IDS_HELP_RELOAD 716 +#define IDS_HELP_CAMPAIGN 717 +#define IDS_HELP_RESUME 718 +#define IDS_HELP_CONTINUE_GAME 719 +#define IDS_HELP_CH_ALPHA 720 +#define IDS_HELP_CH_R 721 +#define IDS_HELP_CH_G 722 +#define IDS_HELP_CH_B 723 +#define IDS_HELP_CH_STYLE 724 +#define IDS_HELP_CH_DYNAMIC 725 +#define IDS_HELP_MAIN 726 +#define IDS_HELP_NEXTMISSION 727 +#define IDS_HELP_CONTINUE 728 +#define IDS_CAMPAIGN_EXISTS 729 +#define IDS_GUN_NOPICKUP 730 +#define IDS_GUN_NOPICKUP_INF 731 +#define IDS_PLAYER_SETUP 732 +#define IDS_JOIN 733 +#define IDS_HOST 734 +#define IDS_HELP_PLAYER 735 +#define IDS_HELP_JOIN 736 +#define IDS_HELP_HOST 737 +#define IDS_HOST_ADD_MISSION 738 +#define IDS_HOST_REMOVE_MISSION 739 +#define IDS_HOST_ADD_ALL 740 +#define IDS_HOST_REMOVE_ALL 741 +#define IDS_NOLEVELS 742 +#define IDS_HELP_OK 743 +#define IDS_SCENENUMBER 744 +#define IDS_LOOP_MISSIONS 746 +#define IDS_MOVE_CONTROLS 747 +#define IDS_INV_CONTROLS 748 +#define IDS_VIEW_CONTROLS 749 +#define IDS_MISC_CONTROLS 750 +#define IDS_HELP_KEYBOARD 751 +#define IDS_GAME_OPTIONS 753 +#define IDS_HELP_GAME_OPTIONS 754 +#define IDS_DISPLAY_SUBTITLES 755 +#define IDS_HELP_COMPILE 756 +#define IDS_TEAM_2 756 +#define IDS_HELP_LOOP_MISSIONS 757 +#define IDS_CAMPAIGN_LIST 758 +#define IDS_STAT_COMBAT 759 +#define IDS_STAT_DEFENSE 760 +#define IDS_STAT_ACCURACY 761 +#define IDS_HELP_CAMPAIGN_CREATE 762 +#define IDS_HELP_CAMPAIGN_LOAD 763 +#define IDS_HELP_SUBTITLES 764 +#define IDS_GAME_TYPE 765 +#define IDS_HELP_TEAM_1 766 +#define IDS_HELP_TEAM_2 767 +#define IDS_DEDICATED 768 +#define IDS_HELP_DEDICATED 769 +#define IDS_GAME_LANGUAGE 770 +#define IDS_MENU_VKEY_YES 771 +#define IDS_MENU_VKEY_NO 772 +#define IDS_DEMOVERSION 773 +#define IDS_HELP_CAMPAIGN_DELETE 774 +#define IDS_HELP_CAMPAIGN_RENAME 775 +#define IDS_HELP_VERSION_FILTER 776 +#define IDS_ALL_VERSIONS 777 +#define IDS_CURRENT_VERSION 778 +#define IDS_PERFORMANCE 779 +#define IDS_HELP_PERFORMANCE 780 +#define IDS_SFX 781 +#define IDS_HELP_SFX 782 +#define IDS_POLYGRIDBUMP 783 +#define IDS_HELP_POLYGRIDBUMP 784 +#define IDS_POLYGRIDFRES 785 +#define IDS_HELP_POLYGRIDFRES 786 +#define IDS_TEXTURE_RES 787 +#define IDS_HELP_TEXTURE_RES 788 +#define IDS_BUMPMAP 789 +#define IDS_HELP_BUMPMAP 790 +#define IDS_BILINEAR 791 +#define IDS_HELP_BILINEAR 792 +#define IDS_SHADOWS 793 +#define IDS_SOUND_HIGH 794 +#define IDS_SOUND_LOW 795 +#define IDS_QUICKLOAD 796 +#define IDS_QUICKSAVE 797 +#define IDS_LOADCURRENT 798 +#define IDS_OBJECTIVES_OPTIONAL 799 +#define IDS_OBJECTIVES_CHANGED 801 +#define IDS_HELP_RESET_SKILLS 803 +#define IDS_X_OF_Y 804 +#define IDS_SERVER_LAN 805 +#define IDS_SERVER_LAN_ONLY 806 +#define IDS_USE_CROSSHAIR 807 +#define IDS_SERVER_INTERNET 808 +#define IDS_HUD_LAYOUT0 809 +#define IDS_HUD_LAYOUT1 810 +#define IDS_HUD_LAYOUT2 811 +#define IDS_HUDLAYOUT 812 +#define IDS_HELP_HUDLAYOUT 813 +#define IDS_NO_INVENTORY 814 +#define IDS_VEHICLETURN 815 +#define IDS_HELP_VEHICLETURN 816 +#define IDS_HELP_RETURN 817 +#define IDS_TRILINEAR 818 +#define IDS_HELP_TRILINEAR 819 +#define IDS_ANISOTROPIC 820 +#define IDS_HELP_ANISOTROPIC 821 +#define IDS_DETAILLEVEL 822 +#define IDS_TRACERS 823 +#define IDS_HELP_TRACERS 824 +#define IDS_DISPLAY_CURRENTMODE 825 +#define IDS_SERVER_NORESPONSE 826 +#define IDS_SERVER_DETAIL_VERSION 827 +#define IDS_DISPLAY_CHANGE 828 +#define IDS_DISPLAY_GORE 829 +#define IDS_ENV_DETAIL 830 +#define IDS_HELP_ENV_DETAIL 831 +#define IDS_RESPAWN 832 +#define IDS_SOUND_MUSICENABLED 833 +#define IDS_SOUND_MUSICVOL 834 +#define IDS_SOUND_FX 835 +#define IDS_SOUND_FXVOL 836 +#define IDS_SOUND_QUALITY 837 +#define IDS_SOUND_NONE 838 +#define IDS_SOUND_IMA 839 +#define IDS_LOW 840 +#define IDS_MEDIUM 841 +#define IDS_HIGH 842 +#define IDS_CUSTOMIZED 843 +#define IDS_MOUSE_MOUSELOOK 844 +#define IDS_MOUSE_LOOKSPRING 845 +#define IDS_MOUSE_INVERTYAXIS 846 +#define IDS_MOUSE_SENSITIVITY 847 +#define IDS_MOUSE_INPUTRATE 848 +#define IDS_MOUSE_LEFTBUTTON 849 +#define IDS_MOUSE_MIDDLEBUTTON 850 +#define IDS_MOUSE_RIGHTBUTTON 851 +#define IDS_JOYSTICK_USE 852 +#define IDS_JOYSTICK_TURN 853 +#define IDS_JOYSTICK_LOOK 854 +#define IDS_JOYSTICK_MOVE 855 +#define IDS_JOYSTICK_STRAFE 856 +#define IDS_JOYSTICK_BUTTONNUM 857 +#define IDS_JOYSTICK_AXIS 858 +#define IDS_JOYSTICK_ACTION 859 +#define IDS_HELP_SERVER_LAN 860 +#define IDS_POV_MOVE 861 +#define IDS_JOYSTICK_INVERT 862 +#define IDS_POV_LOOK 863 +#define IDS_JOYSTICK_AXISNONE 864 +#define IDS_HELP_AXIS 865 +#define IDS_DISPLAY_BITDEPTH 866 +#define IDS_ANTIALIAS 867 +#define IDS_ADVCONTROLS_RUNLOCK 868 +#define IDS_NEW_EASY 869 +#define IDS_NEW_MEDIUM 870 +#define IDS_NEW_HARD 871 +#define IDS_NEW_INSANE 872 +#define IDS_ADVCONTROLS_CROSSHAIR 873 +#define IDS_DISPLAY_RENDERER 874 +#define IDS_DISPLAY_RESOLUTION 875 +#define IDS_TEAM1_NAME 876 +#define IDS_CONTROLS 877 +#define IDS_HELP_PROFILE_LOAD 878 +#define IDS_SERVER_NAME 879 +#define IDS_SERVER_PLAYERS 880 +#define IDS_SERVER_PING 881 +#define IDS_SERVER_GAME 882 +#define IDS_SERVER_MAP 883 +#define IDS_JOIN_PLAYER_NAME 884 +#define IDS_JOIN_PLAYER_SCORE 885 +#define IDS_OPTION_NAME 886 +#define IDS_OPTION_VALUE 887 +#define IDS_SERVER_REFRESH 888 +#define IDS_SERVER_REPING 889 +#define IDS_FILTER_ALLGAMES 890 +#define IDS_FILTER_DM 891 +#define IDS_FILTER_COOP 892 +#define IDS_FILTER_ALLPOP 893 +#define IDS_FILTER_NOTFULL 894 +#define IDS_FILTER_NOTEMPTY 895 +#define IDS_FILTER_NOT_BOTH 896 +#define IDS_SERVER_LOCKED 897 +#define IDS_SERVER_MISSION 898 +#define IDS_SERVER_VERSION 898 +#define IDS_HELP_SERVER_MISSION 899 +#define IDS_HELP_SERVER_VERSION 899 +#define IDS_HOST_NAME 900 +#define IDS_HOST_OPTIONS 901 +#define IDS_HOST_MISSIONS 902 +#define IDS_HOST_LAUNCH 903 +#define IDS_SERVER_FILTERS 904 +#define IDS_POP_FILTER 905 +#define IDS_NIGHT_SCOPE 906 +#define IDS_SILENCER 907 +#define IDS_LASER 908 +#define IDS_TEAM2_NAME 908 +#define IDS_FILTER_PING 909 +#define IDS_SCOPE 910 +#define IDS_CAMERA_SCOPE 911 +#define IDS_KILLEDMYSELF 912 +#define IDS_HEKILLEDME 913 +#define IDS_IKILLEDHIM 914 +#define IDS_HEKILLEDHIMSELF 915 +#define IDS_HEKILLEDHIM 916 +#define IDS_HOST_NAME_COOP_DEFAULT 942 +#define IDS_PASSWORD_DEFAULT 943 +#define IDS_TARGET_SEARCH 944 +#define IDS_TARGET_MOVE 945 +#define IDS_TARGET_DROP 946 +#define IDS_TARGET_TALK 947 +#define IDS_TARGET_USE 948 +#define IDS_TARGET_TAKE 949 +#define IDS_TARGET_HACK 950 +#define IDS_TITLE_HOST_WEAPONS 950 +#define IDS_TARGET_HACKKEYPAD 951 +#define IDS_TARGET_WELD 952 +#define IDS_TARGET_DECODE 953 +#define IDS_TARGET_PICK 954 +#define IDS_TARGET_PHOTO 955 +#define IDS_TARGET_BOMB 956 +#define IDS_TARGET_INK 957 +#define IDS_TARGET_BUG 958 +#define IDS_TARGET_INNOCENT 959 +#define IDS_TARGET_SEARCHING 960 +#define IDS_SPEECH_FXVOL 963 +#define IDS_HELP_SPEECHVOL 964 +#define IDS_TARGET_REVIVE 965 +#define IDS_CURRENT_CAMPAIGN 966 +#define IDS_M_STAT_UNDAMAGED 967 +#define IDS_M_STAT_TIMES_HIT 968 +#define IDS_M_STAT_MARKSMANSHIP 969 +#define IDS_M_STAT_ACCURACY 970 +#define IDS_IWASKILLED 971 +#define IDS_ENTER_CAMPAIGN_NAME 972 +#define IDS_HEWASKILLED 973 +#define IDS_TARGET_HACKING 974 +#define IDS_HELP_ADD_WEAPON 974 +#define IDS_TARGET_HACKINGKEYPAD 975 +#define IDS_TARGET_WELDING 976 +#define IDS_TARGET_DECODING 977 +#define IDS_TARGET_PICKING 978 +#define IDS_TARGET_PHOTOGRAPHING 979 +#define IDS_TARGET_BOMBING 980 +#define IDS_TARGET_INKING 981 +#define IDS_TARGET_BUGGING 982 +#define IDS_COOP_STAT_ACCURACY 983 +#define IDS_COOP_STAT_KILLS 984 +#define IDS_COOP_STAT_DEATHS 985 +#define IDS_STAT_MISSION 986 +#define IDS_FILTER_ALLPING 987 +#define IDS_FILTER_LOWPING 988 +#define IDS_FILTER_MEDPING 989 +#define IDS_FILTER_HIGHPING 990 +#define IDS_HELP_FILTER_PING 991 +#define IDS_CDKEY_ENTER 992 +#define IDS_CDKEY_INVALID 993 +#define IDS_CDKEY 994 +#define IDS_BANDWIDTH_INVALID 995 +#define IDS_AMMO_NOPICKUP 996 +#define IDS_DMODE_RENDERER 997 +#define IDS_DMODE_RESOLUTION 998 +#define IDS_TARGET_WAKEUP 999 +#define IDS_JOIN_GAME 1000 +#define IDS_PLAYER_NAME 1001 +#define IDS_DMODE_PLEASEWAIT1 1002 +#define IDS_DMODE_PLEASEWAIT2 1003 +#define IDS_HELP_PLAYER_MODEL 1004 +#define IDS_HELP_PLAYER_NAME 1005 +#define IDS_SCORE_PING 1006 +#define IDS_HELP_SERVER_NAME 1007 +#define IDS_HELP_SERVER_PLAYERS 1008 +#define IDS_HELP_SERVER_PING 1009 +#define IDS_HELP_SORT_PLYR_NAME 1010 +#define IDS_HELP_SORT_PLYR_SCORE 1011 +#define IDS_HELP_SORT_PLYR_PING 1012 +#define IDS_HELP_REFRESH 1013 +#define IDS_HELP_REPING 1014 +#define IDS_HELP_GAME_FILTER 1015 +#define IDS_HELP_POP_FILTER 1016 +#define IDS_HELP_REM_ALL_WPNS 1017 +#define IDS_MOD_NOPICKUP 1018 +#define IDS_GEAR_NOPICKUP 1019 +#define IDS_HELP_REM_WEAPON 1020 +#define IDS_CHANGING_AMMO 1021 +#define IDS_HELP_JOIN_GAME 1022 +#define IDS_HELP_SESSION_NAME 1023 +#define IDS_HELP_GAME_TYPE 1024 +#define IDS_HELP_HOST_OPTIONS 1025 +#define IDS_HELP_HOST_MISSIONS 1026 +#define IDS_HELP_LAUNCH 1027 +#define IDS_HELP_AVAIL_MISSIONS 1028 +#define IDS_HELP_POV 1029 +#define IDS_HELP_SEL_MISSIONS 1030 +#define IDS_HELP_ADD_MISSION 1031 +#define IDS_HELP_ADD_ALL 1032 +#define IDS_HELP_REM_MISSION 1033 +#define IDS_HELP_REM_ALL 1034 +#define IDS_VSYNC 1035 +#define IDS_HELP_VSYNC 1036 +#define IDS_CURRENT 1037 +#define IDS_UPGRADE 1038 +#define IDS_LOW_VIOLENCE 1039 +#define IDS_TARGET_DEFUSE 1040 +#define IDS_DISARMED 1041 +#define IDS_HELP_CDKEY 1042 +#define IDS_MUSIC_QUALITY 1043 +#define IDS_HELP_MUSIC_QUALITY 1044 +#define IDS_CONFIRM_MUSIC 1045 +#define IDS_CONFIRM_SOUND 1046 +#define IDS_PLAYER_MODEL 1047 +#define IDS_HELP_PERFORMANCE_TEST 1048 +#define IDS_HOST_AVAIL_MISSIONS 1049 +#define IDS_TITLE_PERFORMANCE_TEST 1050 +#define IDS_RES_DIFFERS 1051 +#define IDS_PRECACHE 1052 +#define IDS_LOAD_USERGAME 1053 +#define IDS_SHELLCASINGS 1054 +#define IDS_DISCONNECT 1055 +#define IDS_HELP_SHELLCASINGS 1056 +#define IDS_SHUTDOWN 1057 +#define IDS_HELP_PRECACHE 1058 +#define IDS_PERFORMANCE_FPS 1059 +#define IDS_WPN_RESTRICT 1059 +#define IDS_PERFORMANCE_FPS_AVE 1060 +#define IDS_PERFORMANCE_RESULTS 1061 +#define IDS_OVERALL_PERFORM 1062 +#define IDS_HELP_OVERALL_PERFORM 1063 +#define IDS_PERFORM_HIGH 1064 +#define IDS_PERFORM_MEDIUM 1065 +#define IDS_PERFORM_LOW 1066 +#define IDS_AUTOSWITCH_WEAPONS 1067 +#define IDS_HELP_AUTOSWITCH_WEAPONS 1068 +#define IDS_STARTNEXTLEVEL 1069 +#define IDS_PERFORMANCE_FPS_MIN 1070 +#define IDS_PERFORMANCE_FPS_MAX 1071 +#define IDS_JOYSTICK_UNBOUND 1072 +#define IDS_FX_DETAIL 1073 +#define IDS_HELP_FX_DETAIL 1074 +#define IDS_PERFORMANCE_FPS_BELOW_MIN 1075 +#define IDS_PERFORMANCE_FPS_MINTOMAX 1076 +#define IDS_CONFIRM_RESTORE 1077 +#define IDS_PERFORMANCE_FPS_ABOVE_MAX 1078 +#define IDS_PERFORMANCE_TEST_ABORTED 1079 +#define IDS_NEW_MOTD 1080 +#define IDS_VALIDATION_FAILED 1081 +#define IDS_HARDWARE_CURSOR 1082 +#define IDS_HELP_HARDWARE_CURSOR 1083 +#define IDS_CONFIRM_CURSOR 1084 +#define IDS_LAUNCH_UPDATE 1085 +#define IDS_HELP_LAUNCH_UPDATE 1086 +#define IDS_NEW_VERSION 1087 +#define IDS_INTERNET 1088 +#define IDS_NO_CDKEY 1089 +#define IDS_TARGET_HACKCARDREADER 1090 +#define IDS_LARGE 1091 +#define IDS_SMALL 1092 +#define IDS_JOIN_LAN 1093 +#define IDS_GUNPICKUP 1094 +#define IDS_OUTOFAMMO 1095 +#define IDS_GEARPICKUP 1096 +#define IDS_AMMOPICKUP 1097 +#define IDS_MODPICKUP 1098 +#define IDS_INTELLIGENCE 1099 +#define IDS_HELP_JOIN_LAN 1100 +#define IDS_SERVER_ADDRESS 1101 +#define IDS_NO_SERVERS 1102 +#define IDS_LOOKING_FOR_SERVERS 1103 +#define IDS_CONNECTING_TO_SERVER 1104 +#define IDS_UNKNOWN_PLAYER 1105 +#define IDS_HELP_EASY 1106 +#define IDS_HELP_MEDIUM 1107 +#define IDS_HELP_HARD 1108 +#define IDS_HELP_INSANE 1109 +#define IDS_DIFF_REMINDER 1110 +#define IDS_SERVERS_SHOWN 1111 +#define IDS_GUNPICKUP2 1112 +#define IDS_HELP_WPN_RESTRICT 1112 +#define IDS_KEY_PICKUP 1113 +#define IDS_STATUS_STRING 1114 +#define IDS_WAITING 1115 +#define IDS_QUERYING 1116 +#define IDS_VALIDATING 1117 +#define IDS_TARGET_HACKINGCARDREADER 1118 +#define IDS_LOAD_TIPS 1119 +#define IDS_HELP_LOAD_TIPS 1120 +#define IDS_DSL_LOW 1122 +#define IDS_CONTOUR 1123 +#define IDS_HELP_CONTOUR 1124 +#define IDS_PERFORMANCE_RECOMMEND_LOWER 1125 +#define IDS_PAUSED 1126 +#define IDS_UNUSED 1127 +#define IDS_PERFORMANCE_RECOMMEND_HIGHER 1128 +#define IDS_PERFORMANCE_RECOMMEND_CURRENT 1129 +#define IDS_PRESSANYKEY 1130 +#define IDS_EMPTY 1131 +#define IDS_PRESSKEYTOCONTINUE 1132 +#define IDS_SUREWANTQUIT 1133 +#define IDS_SUREWANTABORT 1134 +#define IDS_BUMPER_LOADING 1135 +#define IDS_INTEL_ITEMS 1136 +#define IDS_UP 1137 +#define IDS_DOWN 1138 +#define IDS_DISCON_MISSINGFILE 1139 +#define IDS_DISCON_CONNECTTERM 1140 +#define IDS_DISCON_SERVERBOOT 1141 +#define IDS_DISCON_TIMEOUT 1142 +#define IDS_WEAPON 1143 +#define IDS_KEY 1144 +#define IDS_DEVICE_MOUSE 1145 +#define IDS_DEVICE_JOYSTICK 1146 +#define IDS_AUTOSWITCH_AMMO 1147 +#define IDS_HELP_AUTOSWITCH_AMMO 1148 +#define IDS_PORT 1149 +#define IDS_HELP_ENTER_PORT 1150 +#define IDS_SERVER_PORT 1151 +#define IDS_FIND_SERVERS 1152 +#define IDS_HELP_FIND_SERVERS 1153 +#define IDS_HELP_PROFILE_DELETE 1154 +#define IDS_HELP_PROFILE_RENAME 1155 +#define IDS_CONFIRM_DELETE 1156 +#define IDS_CURRENT_PROFILE 1157 +#define IDS_ENTER_PROFILE_NAME 1158 +#define IDS_CONFIRM_NEWPROFILE 1159 +#define IDS_PERFORMANCE_TEST_BRIEF 1160 +#define IDS_PARAMETERS 1161 +#define IDS_SELECT_AMMO_TEXT 1162 +#define IDS_EXIT_WAITING 1163 +#define IDS_EXIT_WAITING_1 1164 +#define IDS_EXIT_WAITING_NAME 1165 +#define IDS_EXIT_PLAYER_WAITING 1166 +#define IDS_EXIT_PLAYER_WAITING_1 1167 +#define IDS_EXIT_PLAYER_WAITING_NAME 1168 +#define IDS_NET_GAME_END 1169 +#define IDS_NET_GAME_END_HELP 1170 +#define IDS_CHOOSE_TEAM 1172 +#define IDS_FRAG_LIMIT_HELP 1173 +#define IDS_HELP_CHOOSE_TEAM_1 1174 +#define IDS_TIME_LIMIT_HELP 1175 +#define IDS_MAX_PLAYERS 1176 +#define IDS_MAX_PLAYERS_HELP 1177 +#define IDS_ROUNDS_HELP 1178 +#define IDS_RUN_SPEED_HELP 1179 +#define IDS_HELP_CHOOSE_TEAM_2 1180 +#define IDS_FRIENDLY_FIRE_HELP 1181 +#define IDS_AUTO_SELECT 1182 +#define IDS_HELP_HOST_PLAYERDIFF 1183 +#define IDS_WEAPONS_STAY 1184 +#define IDS_WEAPONS_STAY_HELP 1185 +#define IDS_USE_SPAWN_LIMIT 1186 +#define IDS_HELP_AUTO_SELECT 1186 +#define IDS_USE_SPAWN_LIMIT_HELP 1187 +#define IDS_HELP_TEAM_SELECT 1187 +#define IDS_SPAWN_LIMIT 1188 +#define IDS_CANCELREVIVE 1188 +#define IDS_SPAWN_LIMIT_HELP 1189 +#define IDS_SERVER_MOD 1189 +#define IDS_FILTER_TYPE 1189 +#define IDS_HIT_LOCATION 1190 +#define IDS_HIT_LOCATION_HELP 1191 +#define IDS_SCORE_LIMIT 1192 +#define IDS_HELP_SCORE_LIMIT 1193 +#define IDS_ALLOWED_WEAPONS 1194 +#define IDS_DISABLED_WEAPONS 1195 +#define IDS_END_SCORE 1196 +#define IDS_TEAM1_BOMB 1197 +#define IDS_TEAM2_BOMB 1198 +#define IDS_HOST_ADD_WEAPON 1199 +#define IDS_YES_VK_CODE 1200 +#define IDS_NO_VK_CODE 1201 +#define IDS_ALLOW_GORE 1202 +#define IDS_END_TIME 1203 +#define IDS_END_FRAG 1204 +#define IDS_END_UNKNOWN 1205 +#define IDS_USE_PASSWORD 1206 +#define IDS_HELP_PASSWORD 1207 +#define IDS_PASSWORD 1208 +#define IDS_HELP_ENTER_PASSWORD 1209 +#define IDS_NOCUSTOMWORLDS 1210 +#define IDS_DEMONOCUSTOMWORLDS 1211 +#define IDS_DEMODISCONNECT 1212 +#define IDS_DEMOINFO 1213 +#define IDS_WAITINGFOROTHERPLAYERS 1214 +#define IDS_NOJOYSTICKDETECTED 1215 +#define IDS_NOQUICKSAVEGAME 1216 +#define IDS_LOADGAMEFAILED 1217 +#define IDS_SAVEGAMEFAILED 1218 +#define IDS_NOLOADLEVEL 1219 +#define IDS_SOUNDNOTINITED 1220 +#define IDS_UNSPECIFIEDERROR 1221 +#define IDS_NOREMAPKEY 1222 +#define IDS_NOSOUNDCHANGE 1223 +#define IDS_NOMUSICCHANGE 1224 +#define IDS_ENDCURRENTGAME 1225 +#define IDS_REINITIALIZING_RENDERER 1226 +#define IDS_INVALID3DSOUNDPROVIDER 1227 +#define IDS_CONFIRMSAVE 1228 +#define IDS_GAMESAVED 1229 +#define IDS_REBINDING_TEXTURES 1230 +#define IDS_REBINDING_LIGHTMAPS 1231 +#define IDS_SHUTDOWNSERVER 1232 +#define IDS_NETERR_GENERIC 1233 +#define IDS_NETERR_SELECTSERVICE 1234 +#define IDS_NETERR_FILLSERVICE 1235 +#define IDS_NETERR_JOINSESSION 1236 +#define IDS_NETERR_HOSTSESSION 1237 +#define IDS_NETERR_INIT 1238 +#define IDS_NETERR_CANTBINDTOPORT 1239 +#define IDS_NETERR_NOTSAMEGUID 1240 +#define IDS_PLAYER 1241 +#define IDS_SAY 1242 +#define IDS_NETERR_WRONGPASS 1243 +#define IDS_YOUWEREKILLED 1244 +#define IDS_QUICKSAVING 1245 +#define IDS_SERVERFULL 1246 +#define IDS_SERVER_WRONGVERSION 1247 +#define IDS_JOINEDGAME 1248 +#define IDS_LEFTGAME 1249 +#define IDS_SAVINGGAME 1250 +#define IDS_CANTQUICKSAVE 1251 +#define IDS_ACCESSGRANTED 1252 +#define IDS_ACCESSDENIED 1253 +#define IDS_LOCKED 1254 +#define ID_FILLSTUFF 1255 +#define IDS_HELP_ENTER_SCMDPASSWORD 1255 +#define IDS_WON_MOTD_STATUS 1256 +#define IDS_WON_MOTD_SUCCESS 1257 +#define IDS_WON_MOTD_FAIL 1258 +#define IDS_WON_VERSION_STATUS 1259 +#define IDS_WON_VERSION_SUCCESS 1260 +#define IDS_WON_VERSION_FAIL 1261 +#define IDS_WON_CDKEY_STATUS 1262 +#define IDS_WON_CDKEY_SUCCESS 1263 +#define IDS_WON_CDKEY_FAIL 1264 +#define IDS_WON_PUB_STATUS 1265 +#define IDS_WON_PUB_SUCCESS 1266 +#define IDS_WON_PUB_FAIL 1267 +#define IDS_WON_REM_STATUS 1268 +#define IDS_WON_REM_SUCCESS 1269 +#define IDS_WON_REM_FAIL 1270 +#define IDS_WON_LIST_STATUS 1271 +#define IDS_WON_LIST_SUCCESS 1272 +#define IDS_WON_LIST_FAIL 1273 +#define IDS_WON_CLEAR_REQ_LIST 1274 +#define IDS_WON_PROCESS_REQ 1275 +#define IDS_WON_PING_SUCCESS 1276 +#define IDS_WON_DETAIL_SUCCESS 1277 +#define IDS_WON_DETAIL_FAIL 1278 +#define IDS_WON_VAL_SUCCESS 1279 +#define IDS_WON_VAL_FAIL 1280 +#define IDS_WON_SERV_VAL 1281 +#define IDS_DISCONNECTED_FROM_SERVER 1282 +#define IDS_CANT_CONNECT_TO_SERVER 1283 +#define IDS_CONTROL_FORWARD 1284 +#define IDS_CONTROL_BACKWARD 1285 +#define IDS_CONTROL_TURNLEFT 1286 +#define IDS_CONTROL_TURNRIGHT 1287 +#define IDS_CONTROL_STRAFE 1288 +#define IDS_CONTROL_STRAFELEFT 1289 +#define IDS_CONTROL_STRAFERIGHT 1290 +#define IDS_CONTROL_TURNAROUND 1291 +#define IDS_CONTROL_RUN 1292 +#define IDS_CONTROL_FIRE 1293 +#define IDS_CONTROL_ACTIVATE 1294 +#define IDS_CONTROL_JUMP 1295 +#define IDS_CONTROL_RELOAD 1296 +#define IDS_CONTROL_DUCK 1297 +#define IDS_CONTROL_NEXTWEAPON 1298 +#define IDS_CONTROL_PREVIOUSWEAPON 1299 +#define IDS_CONTROL_LOOKUP 1300 +#define IDS_CONTROL_LOOKDOWN 1301 +#define IDS_CONTROL_CENTERVIEW 1302 +#define IDS_CONTROL_INVENTORY 1303 +#define IDS_CONTROL_MISSION 1304 +#define IDS_CONTROL_HOLSTERWEAPON 1305 +#define IDS_CONTROL_STATUS 1306 +#define IDS_CONTROL_SAY 1307 +#define IDS_CONTROL_ALT_FIRING 1308 +#define IDS_CONTROL_NEXT_AMMO 1309 +#define IDS_CONTROL_KEYS 1310 +#define IDS_CONTROL_INTEL 1311 +#define IDS_CONTROL_RUNLOCKTOGGLE 1312 +#define IDS_CONTROL_WEAPON1 1313 +#define IDS_CONTROL_WEAPON2 1314 +#define IDS_CONTROL_WEAPON3 1315 +#define IDS_CONTROL_WEAPON4 1316 +#define IDS_CONTROL_WEAPON5 1317 +#define IDS_CONTROL_WEAPON6 1318 +#define IDS_CONTROL_WEAPON7 1319 +#define IDS_CONTROL_WEAPON8 1320 +#define IDS_CONTROL_WEAPON9 1321 +#define IDS_CONTROL_WEAPON10 1322 +#define IDS_CONTROL_ZOOM_IN 1323 +#define IDS_CONTROL_ZOOM_OUT 1324 +#define IDS_CONTROL_UNASSIGNED 1325 +#define IDS_CONTROL_NEXTVISMODE 1326 +#define IDS_CONTROL_COMPASS 1327 +#define IDS_CONTROL_LEANLEFT 1328 +#define IDS_CONTROL_LEANRIGHT 1329 +#define IDS_CONTROL_CROUCHTOGGLE 1330 +#define IDS_CONTROL_MOVE_BODY 1331 +#define IDS_CONTROL_FLASHLIGHT 1332 +#define IDS_CONTROL_RADIO 1333 +#define IDS_CONTROL_LASTWEAPON 1334 +#define IDS_ABORT 1376 +#define IDS_DECODEMSG_CHARSET 1377 +#define IDS_SCMDPASSWORD 1378 +#define IDS_HELP_ALLOWSCMD 1379 +#define IDS_HOST_NAME_DM_DEFAULT 1380 +#define IDS_TAGGEDMYSELF 1381 +#define IDS_HETAGGEDME 1382 +#define IDS_ITAGGEDHIM 1383 +#define IDS_HETAGGEDHIMSELF 1384 +#define IDS_HETAGGEDHIM 1385 +#define IDS_IWASTAGGED 1386 +#define IDS_HEWASTAGGED 1387 +#define IDS_KICKED 1388 +#define IDS_SCORE_SCORE 1389 +#define IDS_SCORE_PLAYERS 1390 +#define IDS_SCORE_KILLS 1391 +#define IDS_CONTROL_TEAM_SAY 1393 +#define IDS_DOOMSDAY_CORE 1395 +#define IDS_DOOMSDAY_TRANSMITTER 1396 +#define IDS_DOOMSDAY_BATTERIES 1397 +#define IDS_DOOMSDAY_PICKEDUP 1398 +#define IDS_DOOMSDAY_DROPPED 1399 +#define IDS_DOOMSDAY_PLACED 1400 +#define IDS_DOOMSDAY_STOLE 1401 +#define IDS_DOOMSDAY_DEVICE_COMPLETED 1402 +#define IDS_DOOMSDAY_RESPAWNED 1403 +#define IDS_HELP_SERVER_MOD 1404 +#define IDS_HELP_SERVER_TYPE 1404 +#define IDS_FILTER_MOD 1405 +#define IDS_HELP_FILTER_MOD 1406 +#define IDS_FILTER_ALLMODS 1407 +#define IDS_FILTER_CURRENTMOD 1409 +#define IDS_SERVER_WRONGMOD 1410 +#define IDS_HECHANGED 1411 +#define IDS_ICHANGED 1412 +#define IDS_IWILLCHANGE 1413 +#define IDS_FRAG_SCORE 1414 +#define IDS_FRAG_SCORE_HELP 1415 +#define IDS_TAG_SCORE 1416 +#define IDS_TAG_SCORE_HELP 1417 +#define IDS_REVIVE_SCORE 1418 +#define IDS_REVIVE_SCORE_HELP 1419 +#define IDS_DD_COMP_SCORE 1420 +#define IDS_DD_COMP_SCORE_HELP 1421 +#define IDS_DD_HVY_SCORE 1422 +#define IDS_DD_HVY_SCORE_HELP 1423 +#define IDS_DD_LGT_SCORE 1424 +#define IDS_DD_LGT_SCORE_HELP 1425 +#define IDS_DD_REMOVED_SCORE 1426 +#define IDS_DD_REMOVED_SCORE_HELP 1427 +#define IDS_HOST_REMOVE_WEAPON 1428 +#define IDS_HELP_ADD_WEAPONS 1429 +#define IDS_HELP_REM_WEAPONS 1430 +#define IDS_MISSING_WORLD 1431 +#define IDS_GAME_VERSION 1432 +#define IDS_HOST_NAME_DE_DEFAULT 1433 +#define IDS_WEAPONSSTAY_HELP 1434 +#define IDS_HELP_FILTER_TYPE 1435 +#define IDS_STRING1436 1436 +#define IDS_UNKNOWN 1436 +#define IDS_CONTROL_MANUALAIM 1437 +#define IDS_SCANLANPORTS 1439 +#define IDS_NETERR_VERIFYCDKEYFAIL 1440 +#define IDS_NETERR_INVALIDASSETS 1441 +#define IDS_NETERR_BANNED 1442 +#define IDS_GETPATCH 1443 +#define IDS_LOADCHECKPOINT 1444 +#define IDS_HELP_LOADCHECKPOINTSAVE 1445 +#define IDS_SAVINGCHECKPOINT 1446 +#define IDS_NETWORK_DISTRIBUTIONID 1447 +#define IDS_ALLOW_SCMD_COMMANDS 2176 +#define IDS_TARGET_OPEN_2177 2177 +#define IDS_TARGET_CLOSE_2178 2178 +#define IDS_TARGET_TIPOVER_2179 2179 +#define IDS_APP_SHUTDOWN_1 2200 +#define IDS_PROFILE_ALREADY_EXISTS 2201 +#define IDS_CONFIRM_DELETE_PROFILE 2202 +#define IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE 2203 +#define IDS_MISSION_00_NAME 2500 +#define IDS_MISSION_01_NAME 2501 +#define IDS_MISSION_02_NAME 2502 +#define IDS_MISSION_03_NAME 2503 +#define IDS_MISSION_04_NAME 2504 +#define IDS_MISSION_05_NAME 2505 +#define IDS_MISSION_06_NAME 2506 +#define IDS_MISSION_07_NAME 2507 +#define IDS_MISSION_08_NAME 2508 +#define IDS_MISSION_09_NAME 2509 +#define IDS_MISSION_10_NAME 2510 +#define IDS_MISSION_09_NAME2 2510 +#define IDS_MISSION_11_NAME 2511 +#define IDS_MISSION_09_NAME3 2511 +#define IDS_MISSION_12_NAME 2512 +#define IDS_MISSION_09_NAME4 2512 +#define IDS_MISSION_13_NAME 2513 +#define IDS_MISSION_09_NAME5 2513 +#define IDS_MISSION_14_NAME 2514 +#define IDS_MISSION_09_NAME6 2514 +#define IDS_MISSION_15_NAME 2515 +#define IDS_MISSION_09_NAME7 2515 +#define IDS_MISSION_16_NAME 2516 +#define IDS_MISSION_09_NAME8 2516 +#define IDS_MISSION_17_NAME 2517 +#define IDS_MISSION_09_NAME9 2517 +#define IDS_MISSION_18_NAME 2518 +#define IDS_MISSION_09_NAME10 2518 +#define IDS_MISSION_19_NAME 2519 +#define IDS_MISSION_09_NAME11 2519 +#define IDS_MISSION_20_NAME 2520 +#define IDS_MISSION_09_NAME12 2520 +#define IDS_MISSION_21_NAME 2521 +#define IDS_MISSION_09_NAME13 2521 +#define IDS_MISSION_22_NAME 2522 +#define IDS_MISSION_09_NAME14 2522 +#define IDS_MISSION_23_NAME 2523 +#define IDS_MISSION_09_NAME15 2523 +#define IDS_MISSION_24_NAME 2524 +#define IDS_MISSION_09_NAME16 2524 +#define IDS_MISSION_DD_01 2525 +#define IDS_MISSION_DD_02 2526 +#define IDS_MISSION_DD_03 2527 +#define IDS_MISSION_DD_04 2528 +#define IDS_MISSION_DD_05 2529 +#define IDS_MISSION_DD_06 2530 +#define IDS_MISSION_DD_07 2531 +#define IDS_MISSION_DD_08 2532 +#define IDS_MISSION_DD_09 2533 +#define IDS_MISSION_DE_01 2534 +#define IDS_MISSION_DE_02 2535 +#define IDS_MISSION_DE_03 2536 +#define IDS_MISSION_DE_04 2537 +#define IDS_MISSION_DE_05 2538 +#define IDS_MISSION_DE_06 2539 +#define IDS_MISSION_DE_07 2540 +#define IDS_MISSION_DE_08 2541 +#define IDS_MISSION_DE_09 2542 +#define IDS_MISSION_DE_10 2543 +#define IDS_MISSION_DE_11 2544 +#define IDS_MISSION_DE_12 2545 +#define IDS_MISSION_DM_01 2546 +#define IDS_MISSION_DM_02 2547 +#define IDS_MISSION_DM_03 2548 +#define IDS_MISSION_DM_04 2549 +#define IDS_MISSION_00_LEVEL_00_NAME 2550 +#define IDS_MISSION_00_LEVEL_00_NAME2 2551 +#define IDS_MISSION_00_LEVEL_00_NAME3 2552 +#define IDS_MISSION_00_LEVEL_00_NAME4 2553 +#define IDS_MISSION_00_LEVEL_00_NAME5 2554 +#define IDS_MISSION_00_LEVEL_00_NAME6 2555 +#define IDS_MISSION_00_LEVEL_00_NAME7 2556 +#define IDS_MISSION_00_LEVEL_00_NAME8 2557 +#define IDS_MISSION_00_LEVEL_00_NAME9 2558 +#define IDS_MISSION_00_LEVEL_00_NAME10 2559 +#define IDS_MISSION_00_LEVEL_00_NAME11 2560 +#define IDS_MISSION_00_LEVEL_00_NAME12 2561 +#define IDS_MISSION_00_LEVEL_00_NAME13 2562 +#define IDS_MISSION_00_LEVEL_00_NAME14 2563 +#define IDS_MISSION_00_LEVEL_00_NAME15 2564 +#define IDS_MISSION_00_LEVEL_00_NAME16 2565 +#define IDS_MISSION_00_LEVEL_00_NAME17 2566 +#define IDS_MISSION_00_LEVEL_00_NAME18 2567 +#define IDS_MISSION_00_LEVEL_00_NAME19 2568 +#define IDS_MISSION_00_LEVEL_00_NAME20 2569 +#define IDS_MISSION_00_LEVEL_00_NAME21 2570 +#define IDS_MISSION_00_LEVEL_00_NAME22 2571 +#define IDS_MISSION_00_LEVEL_00_NAME23 2572 +#define IDS_MISSION_00_LEVEL_00_NAME24 2573 +#define IDS_MISSION_00_LEVEL_00_NAME25 2574 +#define IDS_MISSION_00_LEVEL_00_NAME26 2575 +#define IDS_MISSION_00_LEVEL_00_NAME27 2576 +#define IDS_MISSION_00_LEVEL_00_NAME28 2577 +#define IDS_MISSION_00_LEVEL_00_NAME29 2578 +#define IDS_MISSION_00_LEVEL_00_NAME30 2579 +#define IDS_MISSION_00_LEVEL_00_NAME31 2580 +#define IDS_MISSION_00_LEVEL_00_NAME32 2581 +#define IDS_MISSION_00_LEVEL_00_NAME33 2582 +#define IDS_MISSION_00_LEVEL_00_NAME34 2583 +#define IDS_MISSION_00_LEVEL_00_NAME35 2584 +#define IDS_MISSION_00_LEVEL_00_NAME36 2585 +#define IDS_MISSION_00_LEVEL_00_NAME37 2586 +#define IDS_MISSION_00_LEVEL_00_NAME38 2587 +#define IDS_MISSION_00_LEVEL_00_NAME39 2588 +#define IDS_MISSION_00_LEVEL_00_NAME40 2589 +#define IDS_MISSION_00_LEVEL_00_NAME41 2590 +#define IDS_MISSION_00_LEVEL_00_NAME42 2591 +#define IDS_MISSION_00_LEVEL_00_NAME43 2592 +#define IDS_MISSION_00_LEVEL_00_NAME44 2593 +#define IDS_MISSION_00_LEVEL_00_NAME45 2594 +#define IDS_MISSION_00_LEVEL_00_NAME46 2595 +#define IDS_MISSION_00_LEVEL_00_NAME47 2596 +#define IDS_MISSION_00_LEVEL_00_NAME48 2597 +#define IDS_MISSION_00_LEVEL_00_NAME49 2598 +#define IDS_MISSION_00_LEVEL_00_NAME50 2599 +#define IDS_MISSION_00_DESC 2600 +#define IDS_MISSION_00_LEVEL_00_NAME51 2600 +#define IDS_MISSION_01_DESC 2601 +#define IDS_MISSION_00_LEVEL_00_NAME52 2601 +#define IDS_MISSION_02_DESC 2602 +#define IDS_MISSION_00_LEVEL_00_NAME53 2602 +#define IDS_MISSION_03_DESC 2603 +#define IDS_MISSION_00_LEVEL_00_NAME54 2603 +#define IDS_MISSION_04_DESC 2604 +#define IDS_MISSION_00_LEVEL_00_NAME55 2604 +#define IDS_MISSION_05_DESC 2605 +#define IDS_MISSION_00_LEVEL_00_NAME56 2605 +#define IDS_MISSION_06_DESC 2606 +#define IDS_MISSION_00_LEVEL_00_NAME57 2606 +#define IDS_MISSION_07_DESC 2607 +#define IDS_MISSION_00_LEVEL_00_NAME58 2607 +#define IDS_MISSION_08_DESC 2608 +#define IDS_MISSION_00_LEVEL_00_NAME59 2608 +#define IDS_MISSION_09_DESC 2609 +#define IDS_MISSION_00_LEVEL_00_NAME60 2609 +#define IDS_MISSION_10_DESC 2610 +#define IDS_MISSION_09_DESC2 2610 +#define IDS_MISSION_00_LEVEL_00_NAME61 2610 +#define IDS_MISSION_11_DESC 2611 +#define IDS_MISSION_09_DESC3 2611 +#define IDS_MISSION_00_LEVEL_00_NAME62 2611 +#define IDS_MISSION_12_DESC 2612 +#define IDS_MISSION_09_DESC4 2612 +#define IDS_MISSION_00_LEVEL_00_NAME63 2612 +#define IDS_MISSION_13_DESC 2613 +#define IDS_MISSION_09_DESC5 2613 +#define IDS_MISSION_14_DESC 2614 +#define IDS_MISSION_09_DESC6 2614 +#define IDS_MISSION_15_DESC 2615 +#define IDS_MISSION_09_DESC7 2615 +#define IDS_MISSION_16_DESC 2616 +#define IDS_MISSION_09_DESC8 2616 +#define IDS_MISSION_17_DESC 2617 +#define IDS_MISSION_09_DESC9 2617 +#define IDS_MISSION_18_DESC 2618 +#define IDS_MISSION_09_DESC10 2618 +#define IDS_MISSION_19_DESC 2619 +#define IDS_MISSION_09_DESC11 2619 +#define IDS_MISSION_20_DESC 2620 +#define IDS_MISSION_09_DESC12 2620 +#define IDS_MISSION_21_DESC 2621 +#define IDS_MISSION_22_DESC 2622 +#define IDS_MISSION_23_DESC 2623 +#define IDS_MISSION_24_DESC 2624 +#define IDS_MISSION_25_DESC 2625 +#define IDS_MISSION_26_DESC 2626 +#define IDS_MISSION_26_DESC2 2627 +#define IDS_MISSION_27_DESC 2627 +#define IDS_MISSION_28_DESC 2628 +#define IDS_MISSION_29_DESC 2629 +#define IDS_MISSION_30_DESC 2630 +#define IDS_MISSION_31_DESC 2631 +#define IDS_MISSION_00_BRIEF 2700 +#define IDS_MISSION_01_BRIEF 2701 +#define IDS_MISSION_02_BRIEF 2702 +#define IDS_MISSION_03_BRIEF 2703 +#define IDS_MISSION_04_BRIEF 2704 +#define IDS_MISSION_05_BRIEF 2705 +#define IDS_MISSION_06_BRIEF 2706 +#define IDS_MISSION_07_BRIEF 2707 +#define IDS_MISSION_08_BRIEF 2708 +#define IDS_MISSION_09_BRIEF 2709 +#define IDS_MISSION_10_BRIEF 2710 +#define IDS_MISSION_09_BRIEF2 2710 +#define IDS_MISSION_11_BRIEF 2711 +#define IDS_MISSION_09_BRIEF3 2711 +#define IDS_MISSION_12_BRIEF 2712 +#define IDS_MISSION_09_BRIEF4 2712 +#define IDS_MISSION_13_BRIEF 2713 +#define IDS_MISSION_09_BRIEF5 2713 +#define IDS_MISSION_14_BRIEF 2714 +#define IDS_MISSION_09_BRIEF6 2714 +#define IDS_MISSION_15_BRIEF 2715 +#define IDS_MISSION_09_BRIEF7 2715 +#define IDS_MISSION_16_BRIEF 2716 +#define IDS_MISSION_09_BRIEF8 2716 +#define IDS_MISSION_TEMP_BRIEF 2716 +#define IDS_MISSION_17_BRIEF 2717 +#define IDS_MISSION_09_BRIEF9 2717 +#define IDS_MISSION_TEMP_BRIEF2 2717 +#define IDS_MISSION_18_BRIEF 2718 +#define IDS_MISSION_09_BRIEF10 2718 +#define IDS_MISSION_TEMP_BRIEF3 2718 +#define IDS_MISSION_19_BRIEF 2719 +#define IDS_MISSION_09_BRIEF11 2719 +#define IDS_MISSION_TEMP_BRIEF4 2719 +#define IDS_MISSION_20_BRIEF 2720 +#define IDS_MISSION_09_BRIEF12 2720 +#define IDS_MISSION_TEMP_BRIEF5 2720 +#define IDS_MISSION_21_BRIEF 2721 +#define IDS_MISSION_09_BRIEF13 2721 +#define IDS_MISSION_TEMP_BRIEF6 2721 +#define IDS_MISSION_22_BRIEF 2722 +#define IDS_MISSION_09_BRIEF14 2722 +#define IDS_MISSION_TEMP_BRIEF7 2722 +#define IDS_MISSION_23_BRIEF 2723 +#define IDS_MISSION_09_BRIEF15 2723 +#define IDS_MISSION_TEMP_BRIEF8 2723 +#define IDS_MISSION_24_BRIEF 2724 +#define IDS_MISSION_09_BRIEF16 2724 +#define IDS_MISSION_TEMP_BRIEF9 2724 +#define IDS_MISSION_25_BRIEF 2725 +#define IDS_MISSION_09_BRIEF17 2725 +#define IDS_MISSION_TEMP_BRIEF10 2725 +#define IDS_MISSION_26_BRIEF 2726 +#define IDS_MISSION_27_BRIEF 2727 +#define IDS_MISSION_28_BRIEF 2728 +#define IDS_MISSION_DESC_2750 2750 +#define IDS_MISSION_DESC_2751 2751 +#define IDS_MISSION_DESC_2752 2752 +#define IDS_MISSION_DESC_2753 2753 +#define IDS_MISSION_DESC_2754 2754 +#define IDS_MISSION_DESC_2755 2755 +#define IDS_MISSION_DESC_2756 2756 +#define IDS_MISSION_DESC_2757 2757 +#define IDS_MISSION_DESC_2758 2758 +#define IDS_MISSION_DESC_2759 2759 +#define IDS_MISSION_DESC_2760 2760 +#define IDS_MISSION_DESC_2761 2761 +#define IDS_MISSION_DESC_2762 2762 +#define IDS_MISSION_DESC_2763 2763 +#define IDS_MISSION_DESC_2764 2764 +#define IDS_MISSION_DESC_2765 2765 +#define IDS_MISSION_DESC_2766 2766 +#define IDS_MISSION_DESC_2767 2767 +#define IDS_MISSION_DESC_2768 2768 +#define IDS_MISSION_DESC_2769 2769 +#define IDS_RANK_NOVICE 2800 +#define IDS_RANK_TRAINEE 2801 +#define IDS_RANK_AGENT 2802 +#define IDS_RANK_SPY 2803 +#define IDS_RANK_OPERATIVE 2804 +#define IDS_RANK_MASTERSPY 2805 +#define IDS_RANK_SUPERSPY 2806 +#define IDS_TARGET_2900 2900 +#define IDS_TARGET_2901 2901 +#define IDS_TARGET_2902 2902 +#define IDS_TARGET_2903 2903 +#define IDS_TARGET_2904 2904 +#define IDS_TARGET_2905 2905 +#define IDS_TARGET_2906 2906 +#define IDS_TARGET_2907 2907 +#define IDS_TARGET_2908 2908 +#define IDS_TARGET_2909 2909 +#define IDS_TARGET_2910 2910 +#define IDS_TARGET_2911 2911 +#define IDS_TARGET_2912 2912 +#define IDS_TARGET_2913 2913 +#define IDS_TARGET_2914 2914 +#define IDS_TARGET_2915 2915 +#define IDS_TARGET_2916 2916 +#define IDS_TARGET_2917 2917 +#define IDS_TARGET_2918 2918 +#define IDS_TARGET_2919 2919 +#define IDS_TARGET_2920 2920 +#define IDS_TARGET_2921 2921 +#define IDS_TARGET_2922 2922 +#define IDS_TARGET_2923 2923 +#define IDS_TARGET_2924 2924 +#define IDS_TARGET_2925 2925 +#define IDS_TARGET_2926 2926 +#define IDS_TARGET_2927 2927 +#define IDS_TARGET_2928 2928 +#define IDS_TARGET_2929 2929 +#define IDS_TARGET_2930 2930 +#define IDS_TARGET_2931 2931 +#define IDS_TARGET_2932 2932 +#define IDS_TARGET_2933 2933 +#define IDS_TARGET_2934 2934 +#define IDS_TARGET_2935 2935 +#define IDS_TARGET_2936 2936 +#define IDS_TARGET_2937 2937 +#define IDS_TARGET_2938 2938 +#define IDS_TARGET_2939 2939 +#define IDS_TARGET_2940 2940 +#define IDS_TARGET_2941 2941 +#define IDS_TARGET_2942 2942 +#define IDS_HINT_3100 3100 +#define IDS_HINT_3101 3101 +#define IDS_HINT_3102 3102 +#define IDS_HINT_3103 3103 +#define IDS_HINT_3104 3104 +#define IDS_HINT_3105 3105 +#define IDS_HINT_3106 3106 +#define IDS_HINT_3107 3107 +#define IDS_HINT_3108 3108 +#define IDS_HINT_3109 3109 +#define IDS_HINT_3110 3110 +#define IDS_HINT_3111 3111 +#define IDS_HINT_3112 3112 +#define IDS_HINT_3113 3113 +#define IDS_HINT_3114 3114 +#define IDS_HINT_3115 3115 +#define IDS_HINT_3116 3116 +#define IDS_HINT_3117 3117 +#define IDS_HINT_3118 3118 +#define IDS_HINT_3119 3119 +#define IDS_HINT_3120 3120 +#define IDS_HINT_3121 3121 +#define IDS_HINT_3122 3122 +#define IDS_HINT_3123 3123 +#define IDS_HINT_3124 3124 +#define IDS_HINT_3125 3125 +#define IDS_HINT_3126 3126 +#define IDS_HINT_3127 3127 +#define IDS_HINT_3128 3128 +#define IDS_HINT_3129 3129 +#define IDS_HINT_3130 3130 +#define IDS_HINT_3131 3131 +#define IDS_HINT_3132 3132 +#define IDS_HINT_3133 3133 +#define IDS_HINT_3134 3134 +#define IDS_HINT_3135 3135 +#define IDS_HINT_3136 3136 +#define IDS_HINT_3137 3137 +#define IDS_HINT_3138 3138 +#define IDS_HINT_3139 3139 +#define IDS_HINT_3140 3140 +#define IDS_HINT_3141 3141 +#define IDS_HINT_3142 3142 +#define IDS_HINT_3143 3143 +#define IDS_HINT_3144 3144 +#define IDS_HINT_3145 3145 +#define IDS_HINT_3146 3146 +#define IDS_HINT_3147 3147 +#define IDS_HINT_3148 3148 +#define IDS_HINT_3149 3149 +#define IDS_HINT_3150 3150 +#define IDS_HINT_3151 3151 +#define IDS_HINT_3152 3152 +#define IDS_NAMES_3300 3300 +#define IDS_NAMES_3301 3301 +#define IDS_NAMES_3302 3302 +#define IDS_NAMES_3303 3303 +#define IDS_NAMES_3304 3304 +#define IDS_NAMES_3305 3305 +#define IDS_NAMES_3306 3306 +#define IDS_NAMES_3307 3307 +#define IDS_NAMES_3308 3308 +#define IDS_NAMES_3309 3309 +#define IDS_NAMES_3310 3310 +#define IDS_NAMES_3311 3311 +#define IDS_NAMES_3312 3312 +#define IDS_NAMES_3313 3313 +#define IDS_NAMES_3314 3314 +#define IDS_NAMES_3315 3315 +#define IDS_NAMES_3316 3316 +#define IDS_NAMES_3317 3317 +#define IDS_SEARCH_ITEM_3500 3500 +#define IDS_SEARCH_ITEM_3501 3501 +#define IDS_SEARCH_ITEM_3502 3502 +#define IDS_SEARCH_ITEM_3503 3503 +#define IDS_SEARCH_ITEM_3504 3504 +#define IDS_SEARCH_ITEM_3505 3505 +#define IDS_SEARCH_ITEM_3506 3506 +#define IDS_SEARCH_ITEM_3507 3507 +#define IDS_SEARCH_ITEM_3508 3508 +#define IDS_SEARCH_ITEM_3509 3509 +#define IDS_SEARCH_ITEM_3510 3510 +#define IDS_SEARCH_ITEM_3511 3511 +#define IDS_SEARCH_ITEM_3512 3512 +#define IDS_SEARCH_ITEM_3513 3513 +#define IDS_SEARCH_ITEM_3514 3514 +#define IDS_SEARCH_ITEM_3515 3515 +#define IDS_SEARCH_ITEM_3516 3516 +#define IDS_SEARCH_ITEM_3517 3517 +#define IDS_SEARCH_ITEM_3518 3518 +#define IDS_SEARCH_ITEM_3519 3519 +#define IDS_SEARCH_ITEM_3520 3520 +#define IDS_SEARCH_ITEM_3521 3521 +#define IDS_SEARCH_ITEM_3522 3522 +#define IDS_SEARCH_ITEM_3523 3523 +#define IDS_SEARCH_ITEM_3524 3524 +#define IDS_SEARCH_ITEM_3525 3525 +#define IDS_SEARCH_ITEM_3526 3526 +#define IDS_SEARCH_ITEM_3527 3527 +#define IDS_SEARCH_ITEM_3528 3528 +#define IDS_SEARCH_ITEM_3529 3529 +#define IDS_SEARCH_ITEM_3530 3530 +#define IDS_SEARCH_ITEM_3531 3531 +#define IDS_SEARCH_ITEM_3532 3532 +#define IDS_SEARCH_ITEM_3533 3533 +#define IDS_SEARCH_ITEM_3534 3534 +#define IDS_SEARCH_ITEM_3535 3535 +#define IDS_SEARCH_ITEM_3536 3536 +#define IDS_SEARCH_ITEM_3537 3537 +#define IDS_SEARCH_ITEM_3538 3538 +#define IDS_SEARCH_ITEM_3539 3539 +#define IDS_SEARCH_ITEM_3540 3540 +#define IDS_SEARCH_ITEM_3541 3541 +#define IDS_SEARCH_ITEM_3542 3542 +#define IDS_SEARCH_ITEM_3543 3543 +#define IDS_SEARCH_ITEM_3544 3544 +#define IDS_SEARCH_ITEM_3545 3545 +#define IDS_SEARCH_ITEM_3546 3546 +#define IDS_SEARCH_ITEM_3547 3547 +#define IDS_SEARCH_ITEM_3548 3548 +#define IDS_SEARCH_ITEM_3549 3549 +#define IDS_SEARCH_ITEM_3550 3550 +#define IDS_SEARCH_ITEM_3551 3551 +#define IDS_SEARCH_ITEM_3552 3552 +#define IDS_SEARCH_ITEM_3553 3553 +#define IDS_SEARCH_ITEM_3554 3554 +#define IDS_SEARCH_ITEM_3555 3555 +#define IDS_SEARCH_ITEM_3556 3556 +#define IDS_SEARCH_ITEM_3557 3557 +#define IDS_SEARCH_ITEM_3558 3558 +#define IDS_SEARCH_ITEM_3559 3559 +#define IDS_SEARCH_ITEM_3560 3560 +#define IDS_SEARCH_ITEM_3561 3561 +#define IDS_SEARCH_ITEM_3562 3562 +#define IDS_SEARCH_ITEM_3563 3563 +#define IDS_SEARCH_ITEM_3564 3564 +#define IDS_SEARCH_ITEM_3565 3565 +#define IDS_SEARCH_ITEM_3566 3566 +#define IDS_SEARCH_ITEM_3567 3567 +#define IDS_SEARCH_ITEM_3568 3568 +#define IDS_SEARCH_ITEM_3569 3569 +#define IDS_SEARCH_ITEM_3570 3570 +#define IDS_SEARCH_ITEM_3571 3571 +#define IDS_SEARCH_ITEM_3572 3572 +#define IDS_SEARCH_ITEM_3573 3573 +#define IDS_SEARCH_ITEM_3574 3574 +#define IDS_SEARCH_ITEM_3575 3575 +#define IDS_SEARCH_ITEM_3576 3576 +#define IDS_SEARCH_ITEM_3577 3577 +#define IDS_SEARCH_ITEM_3578 3578 +#define IDS_SEARCH_ITEM_3579 3579 +#define IDS_SEARCH_ITEM_3580 3580 +#define IDS_SEARCH_ITEM_3581 3581 +#define IDS_SEARCH_ITEM_3582 3582 +#define IDS_SEARCH_ITEM_3583 3583 +#define IDS_SEARCH_ITEM_3584 3584 +#define IDS_SEARCH_ITEM_3585 3585 +#define IDS_SEARCH_ITEM_3586 3586 +#define IDS_SEARCH_ITEM_3587 3587 +#define IDS_SEARCH_ITEM_3588 3588 +#define IDS_SEARCH_ITEM_3589 3589 +#define IDS_SEARCH_ITEM_3590 3590 +#define IDS_SEARCH_ITEM_3591 3591 +#define IDS_SEARCH_ITEM_3592 3592 +#define IDS_SEARCH_ITEM_3593 3593 +#define IDS_SEARCH_ITEM_3594 3594 +#define IDS_SEARCH_ITEM_3595 3595 +#define IDS_SEARCH_ITEM_3596 3596 +#define IDS_SEARCH_ITEM_3597 3597 +#define IDS_SEARCH_ITEM_3598 3598 +#define IDS_SEARCH_ITEM_3599 3599 +#define IDS_SEARCH_ITEM_3600 3600 +#define IDS_SEARCH_ITEM_3601 3601 +#define IDS_SEARCH_ITEM_3602 3602 +#define IDS_SEARCH_ITEM_3603 3603 +#define IDS_SEARCH_ITEM_3604 3604 +#define IDS_SEARCH_ITEM_3605 3605 +#define IDS_SEARCH_ITEM_3606 3606 +#define IDS_SEARCH_ITEM_3607 3607 +#define IDS_SEARCH_ITEM_3608 3608 +#define IDS_SEARCH_ITEM_3609 3609 +#define IDS_SEARCH_ITEM_3610 3610 +#define IDS_SEARCH_ITEM_3611 3611 +#define IDS_SEARCH_ITEM_3612 3612 +#define IDS_SEARCH_ITEM_3613 3613 +#define IDS_SEARCH_ITEM_3614 3614 +#define IDS_SEARCH_ITEM_3615 3615 +#define IDS_SEARCH_ITEM_3616 3616 +#define IDS_SEARCH_ITEM_3617 3617 +#define IDS_SEARCH_ITEM_3618 3618 +#define IDS_SEARCH_ITEM_3619 3619 +#define IDS_SEARCH_ITEM_3620 3620 +#define IDS_SEARCH_ITEM_3621 3621 +#define IDS_SEARCH_ITEM_3622 3622 +#define IDS_SEARCH_ITEM_3623 3623 +#define IDS_SEARCH_ITEM_3624 3624 +#define IDS_SEARCH_ITEM_3625 3625 +#define IDS_SEARCH_ITEM_3626 3626 +#define IDS_SEARCH_ITEM_3627 3627 +#define IDS_SEARCH_ITEM_3628 3628 +#define IDS_SEARCH_ITEM_3629 3629 +#define IDS_SEARCH_ITEM_3630 3630 +#define IDS_SEARCH_ITEM_3631 3631 +#define IDS_SEARCH_ITEM_3632 3632 +#define IDS_SEARCH_ITEM_3633 3633 +#define IDS_SEARCH_ITEM_3634 3634 +#define IDS_SEARCH_ITEM_3635 3635 +#define IDS_SEARCH_ITEM_3636 3636 +#define IDS_SEARCH_ITEM_3637 3637 +#define IDS_SEARCH_ITEM_3638 3638 +#define IDS_SEARCH_ITEM_3639 3639 +#define IDS_SEARCH_ITEM_3640 3640 +#define IDS_SEARCH_ITEM_3641 3641 +#define IDS_SEARCH_ITEM_3642 3642 +#define IDS_SEARCH_ITEM_3643 3643 +#define IDS_SEARCH_ITEM_3644 3644 +#define IDS_SEARCH_ITEM_3645 3645 +#define IDS_SEARCH_ITEM_3646 3646 +#define IDS_SEARCH_ITEM_3647 3647 +#define IDS_SEARCH_ITEM_3648 3648 +#define IDS_SEARCH_ITEM_3649 3649 +#define IDS_SEARCH_ITEM_3650 3650 +#define IDS_SEARCH_ITEM_3651 3651 +#define IDS_SEARCH_ITEM_3652 3652 +#define IDS_SEARCH_ITEM_3653 3653 +#define IDS_SEARCH_ITEM_3654 3654 +#define IDS_SEARCH_ITEM_3655 3655 +#define IDS_SEARCH_ITEM_3656 3656 +#define IDS_SEARCH_ITEM_3657 3657 +#define IDS_SEARCH_ITEM_3658 3658 +#define IDS_SEARCH_ITEM_3659 3659 +#define IDS_SEARCH_ITEM_3660 3660 +#define IDS_SEARCH_ITEM_3661 3661 +#define IDS_SEARCH_ITEM_3662 3662 +#define IDS_SEARCH_ITEM_3663 3663 +#define IDS_SEARCH_ITEM_3664 3664 +#define IDS_SEARCH_ITEM_3665 3665 +#define IDS_SEARCH_ITEM_3666 3666 +#define IDS_SEARCH_ITEM_3667 3667 +#define IDS_SEARCH_ITEM_3668 3668 +#define IDS_SEARCH_ITEM_3669 3669 +#define IDS_SEARCH_ITEM_3670 3670 +#define IDS_SEARCH_ITEM_3671 3671 +#define IDS_SEARCH_ITEM_3672 3672 +#define IDS_SEARCH_ITEM_3673 3673 +#define IDS_SEARCH_ITEM_3674 3674 +#define IDS_SEARCH_ITEM_3675 3675 +#define IDS_SEARCH_ITEM_3676 3676 +#define IDS_SEARCH_ITEM_3677 3677 +#define IDS_SEARCH_ITEM_3678 3678 +#define IDS_SEARCH_ITEM_3679 3679 +#define IDS_SEARCH_ITEM_3680 3680 +#define IDS_SEARCH_ITEM_3681 3681 +#define IDS_SEARCH_ITEM_3682 3682 +#define IDS_SEARCH_ITEM_3683 3683 +#define IDS_SEARCH_ITEM_3684 3684 +#define IDS_SEARCH_ITEM_3685 3685 +#define IDS_SEARCH_ITEM_3686 3686 +#define IDS_SEARCH_ITEM_3687 3687 +#define IDS_SEARCH_ITEM_3688 3688 +#define IDS_SEARCH_ITEM_3689 3689 +#define IDS_SEARCH_ITEM_3690 3690 +#define IDS_SEARCH_ITEM_3691 3691 +#define IDS_SEARCH_ITEM_3692 3692 +#define IDS_SEARCH_ITEM_3693 3693 +#define IDS_SEARCH_ITEM_3694 3694 +#define IDS_SEARCH_ITEM_3695 3695 +#define IDS_SEARCH_ITEM_3696 3696 +#define IDS_SEARCH_ITEM_3697 3697 +#define IDS_SEARCH_ITEM_3698 3698 +#define IDS_SEARCH_ITEM_3699 3699 +#define IDS_SEARCH_ITEM_3700 3700 +#define IDS_SEARCH_ITEM_3701 3701 +#define IDS_SEARCH_ITEM_3702 3702 +#define IDS_SEARCH_ITEM_3703 3703 +#define IDS_SEARCH_ITEM_3704 3704 +#define IDS_SEARCH_ITEM_3705 3705 +#define IDS_SEARCH_ITEM_3706 3706 +#define IDS_SEARCH_ITEM_3707 3707 +#define IDS_SEARCH_ITEM_3708 3708 +#define IDS_SEARCH_ITEM_3709 3709 +#define IDS_SEARCH_ITEM_3710 3710 +#define IDS_SEARCH_ITEM_3711 3711 +#define IDS_SEARCH_ITEM_3712 3712 +#define IDS_SEARCH_ITEM_3713 3713 +#define IDS_SEARCH_ITEM_3714 3714 +#define IDS_SEARCH_ITEM_3715 3715 +#define IDS_SEARCH_ITEM_3716 3716 +#define IDS_SEARCH_ITEM_3717 3717 +#define IDS_SEARCH_ITEM_3718 3718 +#define IDS_SEARCH_ITEM_3719 3719 +#define IDS_SEARCH_ITEM_3720 3720 +#define IDS_SEARCH_ITEM_3721 3721 +#define IDS_SEARCH_ITEM_3722 3722 +#define IDS_SEARCH_ITEM_3723 3723 +#define IDS_SEARCH_ITEM_3724 3724 +#define IDS_SEARCH_ITEM_3725 3725 +#define IDS_SEARCH_ITEM_3726 3726 +#define IDS_SEARCH_ITEM_3727 3727 +#define IDS_SEARCH_ITEM_3728 3728 +#define IDS_SEARCH_ITEM_3729 3729 +#define IDS_SEARCH_ITEM_3730 3730 +#define IDS_SEARCH_ITEM_3731 3731 +#define IDS_SEARCH_ITEM_3732 3732 +#define IDS_SEARCH_ITEM_3733 3733 +#define IDS_SEARCH_ITEM_3734 3734 +#define IDS_SEARCH_ITEM_3735 3735 +#define IDS_SEARCH_ITEM_3736 3736 +#define IDS_SEARCH_ITEM_3737 3737 +#define IDS_SEARCH_ITEM_3738 3738 +#define IDS_SEARCH_ITEM_3739 3739 +#define IDS_SEARCH_ITEM_3740 3740 +#define IDS_SEARCH_ITEM_3741 3741 +#define IDS_SEARCH_ITEM_3742 3742 +#define IDS_SEARCH_ITEM_3743 3743 +#define IDS_SEARCH_ITEM_3744 3744 +#define IDS_SEARCH_ITEM_3745 3745 +#define IDS_SEARCH_ITEM_3746 3746 +#define IDS_SEARCH_ITEM_3747 3747 +#define IDS_SEARCH_ITEM_3748 3748 +#define IDS_SEARCH_ITEM_3749 3749 +#define IDS_SEARCH_ITEM_3750 3750 +#define IDS_SEARCH_ITEM_3751 3751 +#define IDS_SEARCH_ITEM_3752 3752 +#define IDS_SEARCH_ITEM_3753 3753 +#define IDS_SEARCH_ITEM_3754 3754 +#define IDS_SEARCH_ITEM_3755 3755 +#define IDS_SEARCH_ITEM_3756 3756 +#define IDS_SEARCH_ITEM_3757 3757 +#define IDS_SEARCH_ITEM_3758 3758 +#define IDS_SEARCH_ITEM_3759 3759 +#define IDS_SEARCH_ITEM_3760 3760 +#define IDS_SEARCH_ITEM_3761 3761 +#define IDS_SEARCH_ITEM_3762 3762 +#define IDS_SEARCH_ITEM_3763 3763 +#define IDS_SEARCH_ITEM_3764 3764 +#define IDS_SEARCH_ITEM_3765 3765 +#define IDS_SEARCH_ITEM_3766 3766 +#define IDS_SEARCH_ITEM_3767 3767 +#define IDS_SEARCH_ITEM_3768 3768 +#define IDS_SEARCH_ITEM_3769 3769 +#define IDS_SEARCH_ITEM_3770 3770 +#define IDS_SEARCH_ITEM_3771 3771 +#define IDS_SEARCH_ITEM_3772 3772 +#define IDS_SEARCH_ITEM_3773 3773 +#define IDS_SEARCH_ITEM_3774 3774 +#define IDS_SEARCH_ITEM_3775 3775 +#define IDS_SEARCH_ITEM_3776 3776 +#define IDS_SEARCH_ITEM_3777 3777 +#define IDS_SEARCH_ITEM_3778 3778 +#define IDS_SEARCH_ITEM_3779 3779 +#define IDS_SEARCH_ITEM_3780 3780 +#define IDS_SEARCH_ITEM_3781 3781 +#define IDS_SEARCH_ITEM_3782 3782 +#define IDS_SEARCH_ITEM_3783 3783 +#define IDS_SEARCH_ITEM_3784 3784 +#define IDS_SEARCH_ITEM_3785 3785 +#define IDS_SEARCH_ITEM_3786 3786 +#define IDS_SEARCH_ITEM_3787 3787 +#define IDS_SEARCH_ITEM_3788 3788 +#define IDS_SEARCH_ITEM_3789 3789 +#define IDS_SEARCH_ITEM_3790 3790 +#define IDS_SEARCH_ITEM_3791 3791 +#define IDS_SEARCH_ITEM_3792 3792 +#define IDS_SEARCH_ITEM_3793 3793 +#define IDS_SEARCH_ITEM_3794 3794 +#define IDS_SEARCH_ITEM_3795 3795 +#define IDS_SEARCH_ITEM_3796 3796 +#define IDS_SEARCH_ITEM_3797 3797 +#define IDS_SEARCH_ITEM_3798 3798 +#define IDS_SEARCH_ITEM_3799 3799 +#define IDS_SEARCH_ITEM_3800 3800 +#define IDS_WEAPON_1 4000 +#define IDS_WEAPON_2 4001 +#define IDS_WEAPON_3 4002 +#define IDS_WEAPON_4 4003 +#define IDS_WEAPON_5 4004 +#define IDS_WEAPON_6 4005 +#define IDS_WEAPON_7 4006 +#define IDS_WEAPON_8 4007 +#define IDS_WEAPON_9 4008 +#define IDS_WEAPON_10 4009 +#define IDS_WEAPON_11 4010 +#define IDS_WEAPON_12 4011 +#define IDS_WEAPON_13 4012 +#define IDS_WEAPON_14 4013 +#define IDS_WEAPON_15 4014 +#define IDS_WEAPON_16 4015 +#define IDS_WEAPON_17 4016 +#define IDS_WEAPON_18 4017 +#define IDS_WEAPON_19 4018 +#define IDS_WEAPON_20 4019 +#define IDS_WEAPON_21 4020 +#define IDS_WEAPON_22 4021 +#define IDS_WEAPON_23 4022 +#define IDS_WEAPON_24 4023 +#define IDS_WEAPON_25 4024 +#define IDS_WEAPON_26 4025 +#define IDS_WEAPON_27 4026 +#define IDS_WEAPON_28 4027 +#define IDS_WEAPON_29 4028 +#define IDS_WEAPON_30 4029 +#define IDS_WEAPON_31 4030 +#define IDS_WEAPON_32 4031 +#define IDS_WEAPON_NOPICKUP_1 4032 +#define IDS_WEAPON_NOPICKUP_2 4033 +#define IDS_WEAPON_NOPICKUP_3 4034 +#define IDS_WEAPON_NOPICKUP_4 4035 +#define IDS_WEAPON_NOPICKUP_5 4036 +#define IDS_WEAPON_NOPICKUP_6 4037 +#define IDS_WEAPON_NOPICKUP_7 4038 +#define IDS_WEAPON_NOPICKUP_8 4039 +#define IDS_WEAPON_NOPICKUP_9 4040 +#define IDS_WEAPON_NOPICKUP_10 4041 +#define IDS_WEAPON_NOPICKUP_11 4042 +#define IDS_WEAPON_NOPICKUP_12 4043 +#define IDS_WEAPON_DESC_1 4050 +#define IDS_WEAPON_DESC_2 4051 +#define IDS_WEAPON_DESC_3 4052 +#define IDS_WEAPON_DESC_4 4053 +#define IDS_WEAPON_DESC_5 4054 +#define IDS_WEAPON_DESC_6 4055 +#define IDS_WEAPON_DESC_7 4056 +#define IDS_WEAPON_DESC_8 4057 +#define IDS_WEAPON_DESC_9 4058 +#define IDS_WEAPON_DESC_10 4059 +#define IDS_WEAPON_DESC_11 4060 +#define IDS_WEAPON_DESC_12 4061 +#define IDS_WEAPON_DESC_13 4062 +#define IDS_WEAPON_DESC_14 4063 +#define IDS_WEAPON_DESC_15 4064 +#define IDS_WEAPON_DESC_16 4065 +#define IDS_WEAPON_DESC_17 4066 +#define IDS_WEAPON_DESC_18 4067 +#define IDS_WEAPON_DESC_19 4068 +#define IDS_WEAPON_DESC_20 4069 +#define IDS_WEAPON_DESC_21 4070 +#define IDS_WEAPON_DESC_22 4071 +#define IDS_WEAPON_DESC_23 4072 +#define IDS_WEAPON_DESC_24 4073 +#define IDS_WEAPON_DESC_25 4074 +#define IDS_WEAPON_DESC_26 4075 +#define IDS_WEAPON_DESC_27 4076 +#define IDS_WEAPON_DESC_28 4077 +#define IDS_WEAPON_DESC_29 4078 +#define IDS_WEAPON_DESC_30 4079 +#define IDS_WEAPON_DESC_31 4080 +#define IDS_WEAPON_DESC_32 4081 +#define IDS_AMMO_1 4100 +#define IDS_AMMO_2 4101 +#define IDS_AMMO_3 4102 +#define IDS_AMMO_4 4103 +#define IDS_AMMO_5 4104 +#define IDS_AMMO_6 4105 +#define IDS_AMMO_7 4106 +#define IDS_AMMO_8 4107 +#define IDS_AMMO_9 4108 +#define IDS_AMMO_10 4109 +#define IDS_AMMO_11 4110 +#define IDS_AMMO_12 4111 +#define IDS_AMMO_13 4112 +#define IDS_AMMO_14 4113 +#define IDS_AMMO_15 4114 +#define IDS_AMMO_16 4115 +#define IDS_AMMO_17 4116 +#define IDS_AMMO_18 4117 +#define IDS_AMMO_19 4118 +#define IDS_AMMO_20 4119 +#define IDS_AMMO_21 4120 +#define IDS_AMMO_22 4121 +#define IDS_AMMO_23 4122 +#define IDS_AMMO_24 4123 +#define IDS_AMMO_25 4124 +#define IDS_AMMO_26 4125 +#define IDS_AMMO_27 4126 +#define IDS_AMMO_28 4127 +#define IDS_AMMO_29 4128 +#define IDS_AMMO_30 4129 +#define IDS_AMMO_31 4130 +#define IDS_AMMO_32 4131 +#define IDS_AMMO_33 4132 +#define IDS_AMMO_34 4133 +#define IDS_AMMO_35 4134 +#define IDS_AMMO_36 4135 +#define IDS_AMMO_37 4136 +#define IDS_AMMO_38 4137 +#define IDS_AMMO_39 4138 +#define IDS_AMMO_40 4139 +#define IDS_AMMO_41 4140 +#define IDS_AMMO_42 4141 +#define IDS_AMMO_43 4142 +#define IDS_AMMO_44 4143 +#define IDS_AMMO_45 4144 +#define IDS_AMMO_46 4145 +#define IDS_AMMO_47 4146 +#define IDS_AMMO_48 4147 +#define IDS_AMMO_49 4148 +#define IDS_AMMO_50 4149 +#define IDS_AMMO_51 4150 +#define IDS_AMMO_52 4151 +#define IDS_AMMO_53 4152 +#define IDS_AMMO_54 4153 +#define IDS_AMMO_55 4154 +#define IDS_AMMO_56 4155 +#define IDS_AMMO_57 4156 +#define IDS_AMMO_58 4157 +#define IDS_AMMO_59 4158 +#define IDS_AMMO_60 4159 +#define IDS_AMMO_61 4160 +#define IDS_AMMO_62 4161 +#define IDS_AMMO_63 4162 +#define IDS_AMMO_64 4163 +#define IDS_AMMO_65 4164 +#define IDS_AMMO_66 4165 +#define IDS_AMMO_67 4166 +#define IDS_AMMO_68 4167 +#define IDS_AMMO_69 4168 +#define IDS_AMMO_70 4169 +#define IDS_AMMO_71 4170 +#define IDS_GEAR_NAME_1 4200 +#define IDS_GEAR_NAME_4200 4200 +#define IDS_GEAR_NAME_2 4201 +#define IDS_GEAR_NAME_4201 4201 +#define IDS_GEAR_NAME_3 4202 +#define IDS_GEAR_NAME_4202 4202 +#define IDS_GEAR_NAME_4 4203 +#define IDS_GEAR_NAME_4203 4203 +#define IDS_GEAR_NAME_5 4204 +#define IDS_GEAR_NAME_4204 4204 +#define IDS_GEAR_NAME_6 4205 +#define IDS_GEAR_NAME_4205 4205 +#define IDS_GEAR_NAME_7 4206 +#define IDS_GEAR_NAME_8 4207 +#define IDS_GEAR_DESC_1 4210 +#define IDS_GEAR_DESC_2 4211 +#define IDS_GEAR_DESC_3 4212 +#define IDS_GEAR_DESC_4 4213 +#define IDS_GEAR_DESC_5 4214 +#define IDS_GEAR_DESC_6 4215 +#define IDS_GEAR_DESC_7 4216 +#define IDS_GEAR_DESC_8 4217 +#define IDS_MOD_1 4250 +#define IDS_MOD_2 4251 +#define IDS_MOD_3 4252 +#define IDS_MOD_4 4253 +#define IDS_MOD_5 4254 +#define IDS_MOD_6 4255 +#define IDS_MOD_7 4256 +#define IDS_MOD_8 4257 +#define IDS_MOD_9 4258 +#define IDS_MOD_10 4259 +#define IDS_MOD_11 4260 +#define IDS_MOD_12 4261 +#define IDS_MOD_13 4262 +#define IDS_MOD_14 4263 +#define IDS_MOD_15 4264 +#define IDS_MOD_16 4265 +#define IDS_MOD_17 4266 +#define IDS_MOD_18 4267 +#define IDS_MOD_19 4268 +#define IDS_AMMO_DESC_1 4300 +#define IDS_AMMO_DESC_2 4301 +#define IDS_AMMO_DESC_3 4302 +#define IDS_AMMO_DESC_4 4303 +#define IDS_AMMO_DESC_5 4304 +#define IDS_AMMO_DESC_6 4305 +#define IDS_AMMO_DESC_7 4306 +#define IDS_AMMO_DESC_8 4307 +#define IDS_AMMO_DESC_9 4308 +#define IDS_AMMO_DESC_10 4309 +#define IDS_AMMO_DESC_11 4310 +#define IDS_AMMO_DESC_12 4311 +#define IDS_AMMO_DESC_13 4312 +#define IDS_AMMO_DESC_14 4313 +#define IDS_AMMO_DESC_15 4314 +#define IDS_AMMO_DESC_16 4315 +#define IDS_AMMO_DESC_17 4316 +#define IDS_AMMO_DESC_18 4317 +#define IDS_AMMO_DESC_19 4318 +#define IDS_AMMO_DESC_20 4319 +#define IDS_AMMO_DESC_21 4320 +#define IDS_AMMO_DESC_22 4321 +#define IDS_AMMO_DESC_23 4322 +#define IDS_AMMO_DESC_24 4323 +#define IDS_AMMO_DESC_25 4324 +#define IDS_AMMO_DESC_26 4325 +#define IDS_AMMO_DESC_27 4326 +#define IDS_AMMO_DESC_28 4327 +#define IDS_AMMO_DESC_29 4328 +#define IDS_AMMO_DESC_30 4329 +#define IDS_AMMO_DESC_31 4330 +#define IDS_AMMO_DESC_32 4331 +#define IDS_AMMO_DESC_33 4332 +#define IDS_AMMO_DESC_34 4333 +#define IDS_AMMO_DESC_35 4334 +#define IDS_AMMO_DESC_36 4335 +#define IDS_AMMO_DESC_37 4336 +#define IDS_AMMO_DESC_38 4337 +#define IDS_AMMO_DESC_39 4338 +#define IDS_AMMO_DESC_40 4339 +#define IDS_AMMO_DESC_41 4340 +#define IDS_AMMO_DESC_42 4341 +#define IDS_AMMO_DESC_43 4342 +#define IDS_AMMO_DESC_44 4343 +#define IDS_AMMO_DESC_45 4344 +#define IDS_AMMO_DESC_46 4345 +#define IDS_AMMO_DESC_47 4346 +#define IDS_AMMO_DESC_48 4347 +#define IDS_AMMO_DESC_49 4348 +#define IDS_AMMO_DESC_50 4349 +#define IDS_AMMO_DESC_51 4350 +#define IDS_AMMO_DESC_52 4351 +#define IDS_AMMO_DESC_53 4352 +#define IDS_AMMO_DESC_54 4353 +#define IDS_AMMO_DESC_55 4354 +#define IDS_AMMO_DESC_56 4355 +#define IDS_AMMO_DESC_57 4356 +#define IDS_AMMO_DESC_58 4357 +#define IDS_AMMO_DESC_59 4358 +#define IDS_AMMO_DESC_60 4359 +#define IDS_AMMO_DESC_61 4360 +#define IDS_AMMO_DESC_62 4361 +#define IDS_AMMO_DESC_63 4362 +#define IDS_AMMO_DESC_64 4363 +#define IDS_AMMO_DESC_65 4364 +#define IDS_AMMO_DESC_66 4365 +#define IDS_AMMO_DESC_67 4366 +#define IDS_SEARCH_ITEM_4400 4400 +#define IDS_SEARCH_ITEM_4401 4401 +#define IDS_SEARCH_ITEM_4402 4402 +#define IDS_SEARCH_ITEM_4403 4403 +#define IDS_SEARCH_ITEM_4404 4404 +#define IDS_SEARCH_ITEM_4405 4405 +#define IDS_SEARCH_ITEM_4406 4406 +#define IDS_SEARCH_ITEM_4407 4407 +#define IDS_SEARCH_ITEM_4408 4408 +#define IDS_SEARCH_ITEM_4409 4409 +#define IDS_SEARCH_ITEM_4410 4410 +#define IDS_KEY_ITEM_4500 4500 +#define IDS_KEY_ITEM_4501 4501 +#define IDS_KEY_ITEM_4502 4502 +#define IDS_KEY_ITEM_4503 4503 +#define IDS_KEY_ITEM_4504 4504 +#define IDS_KEY_ITEM_4505 4505 +#define IDS_KEY_ITEM_4506 4506 +#define IDS_KEY_ITEM_4507 4507 +#define IDS_KEY_ITEM_4508 4508 +#define IDS_KEY_ITEM_4509 4509 +#define IDS_KEY_ITEM_4510 4510 +#define IDS_KEY_ITEM_4511 4511 +#define IDS_KEY_ITEM_4512 4512 +#define IDS_KEY_ITEM_4513 4513 +#define IDS_KEY_ITEM_4514 4514 +#define IDS_KEY_ITEM_4515 4515 +#define IDS_KEY_ITEM_4516 4516 +#define IDS_KEY_ITEM_4517 4517 +#define IDS_KEY_ITEM_4518 4518 +#define IDS_KEY_ITEM_4519 4519 +#define IDS_KEY_ITEM_4520 4520 +#define IDS_KEY_ITEM_4521 4521 +#define IDS_KEY_ITEM_4522 4522 +#define IDS_KEY_ITEM_4523 4523 +#define IDS_KEY_ITEM_4524 4524 +#define IDS_KEY_ITEM_4525 4525 +#define IDS_KEY_ITEM_4526 4526 +#define IDS_KEY_ITEM_4527 4527 +#define IDS_KEY_ITEM_4528 4528 +#define IDS_KEY_ITEM_4529 4529 +#define IDS_KEY_ITEM_4530 4530 +#define IDS_KEY_ITEM_4531 4531 +#define IDS_KEY_ITEM_4532 4532 +#define IDS_KEY_ITEM_4533 4533 +#define IDS_KEY_ITEM_4534 4534 +#define IDS_KEY_ITEM_4535 4535 +#define IDS_KEY_ITEM_4536 4536 +#define IDS_KEY_ITEM_4537 4537 +#define IDS_KEY_ITEM_4538 4538 +#define IDS_KEY_ITEM_4539 4539 +#define IDS_KEY_ITEM_4540 4540 +#define IDS_KEY_ITEM_4541 4541 +#define IDS_KEY_ITEM_4542 4542 +#define IDS_KEY_ITEM_4543 4543 +#define IDS_KEY_ITEM_4544 4544 +#define IDS_KEY_ITEM_4545 4545 +#define IDS_KEY_ITEM_4546 4546 +#define IDS_KEY_ITEM_4547 4547 +#define IDS_KEY_ITEM_4548 4548 +#define IDS_KEY_ITEM_4549 4549 +#define IDS_KEY_ITEM_4550 4550 +#define IDS_KEY_ITEM_4551 4551 +#define IDS_KEY_ITEM_4552 4552 +#define IDS_KEY_DESC_4700 4700 +#define IDS_KEY_DESC_4701 4701 +#define IDS_KEY_DESC_4702 4702 +#define IDS_KEY_DESC_4703 4703 +#define IDS_KEY_DESC_4750 4750 +#define IDS_KEY_DESC_4751 4751 +#define IDS_KEY_DESC_4752 4752 +#define IDS_KEY_DESC_4753 4753 +#define IDS_KEY_DESC_4754 4754 +#define IDS_KEY_DESC_4755 4755 +#define IDS_KEY_DESC_4756 4756 +#define IDS_KEY_DESC_4757 4757 +#define IDS_KEY_DESC_4758 4758 +#define IDS_KEY_DESC_4759 4759 +#define IDS_KEY_DESC_4760 4760 +#define IDS_KEY_DESC_4761 4761 +#define IDS_KEY_DESC_4762 4762 +#define IDS_KEY_DESC_4763 4763 +#define IDS_KEY_DESC_4764 4764 +#define IDS_KEY_DESC_4765 4765 +#define IDS_KEY_DESC_4766 4766 +#define IDS_KEY_DESC_4767 4767 +#define IDS_KEY_DESC_4768 4768 +#define IDS_KEY_DESC_4769 4769 +#define IDS_KEY_DESC_4770 4770 +#define IDS_KEY_DESC_4771 4771 +#define IDS_KEY_DESC_4772 4772 +#define IDS_KEY_DESC_4773 4773 +#define IDS_KEY_DESC_4774 4774 +#define IDS_KEY_DESC_4775 4775 +#define IDS_KEY_DESC_4776 4776 +#define IDS_KEY_DESC_4777 4777 +#define IDS_KEY_DESC_4778 4778 +#define IDS_KEY_DESC_4779 4779 +#define IDS_KEY_DESC_4780 4780 +#define IDS_KEY_DESC_4781 4781 +#define IDS_KEY_DESC_4782 4782 +#define IDS_KEY_DESC_4783 4783 +#define IDS_KEY_DESC_4784 4784 +#define IDS_KEY_DESC_4785 4785 +#define IDS_KEY_DESC_4786 4786 +#define IDS_KEY_DESC_4787 4787 +#define IDS_KEY_DESC_4788 4788 +#define IDS_KEY_DESC_4789 4789 +#define IDS_KEY_DESC_4790 4790 +#define IDS_KEY_DESC_4791 4791 +#define IDS_KEY_DESC_4792 4792 +#define IDS_KEY_DESC_4793 4793 +#define IDS_KEY_DESC_4794 4794 +#define IDS_KEY_DESC_4795 4795 +#define IDS_KEY_DESC_4796 4796 +#define IDS_KEY_DESC_4797 4797 +#define IDS_KEY_DESC_4798 4798 +#define IDS_KEY_DESC_4799 4799 +#define IDS_KEY_DESC_4800 4800 +#define IDS_MISSION_OBJ_5000 5000 +#define IDS_MISSION_OBJ_5001 5001 +#define IDS_MISSION_OBJ_5002 5002 +#define IDS_MISSION_OBJ_5003 5003 +#define IDS_MISSION_OBJ_5004 5004 +#define IDS_MISSION_OBJ_5005 5005 +#define IDS_MISSION_OBJ_5006 5006 +#define IDS_MISSION_OBJ_5007 5007 +#define IDS_MISSION_OBJ_5008 5008 +#define IDS_MISSION_OBJ_5009 5009 +#define IDS_MISSION_OBJ_5010 5010 +#define IDS_MISSION_OBJ_5011 5011 +#define IDS_MISSION_OBJ_5012 5012 +#define IDS_MISSION_OBJ_5013 5013 +#define IDS_MISSION_OBJ_5014 5014 +#define IDS_MISSION_OBJ_5015 5015 +#define IDS_MISSION_OBJ_5016 5016 +#define IDS_MISSION_OBJ_5017 5017 +#define IDS_MISSION_OBJ_5018 5018 +#define IDS_MISSION_OBJ_5019 5019 +#define IDS_MISSION_OBJ_5020 5020 +#define IDS_MISSION_OBJ_5021 5021 +#define IDS_MISSION_OBJ_5022 5022 +#define IDS_MISSION_OBJ_5023 5023 +#define IDS_MISSION_OBJ_5024 5024 +#define IDS_MISSION_OBJ_5025 5025 +#define IDS_MISSION_OBJ_5026 5026 +#define IDS_MISSION_OBJ_5027 5027 +#define IDS_MISSION_OBJ_5028 5028 +#define IDS_MISSION_OBJ_5029 5029 +#define IDS_MISSION_OBJ_5030 5030 +#define IDS_MISSION_OBJ_5031 5031 +#define IDS_MISSION_OBJ_5032 5032 +#define IDS_MISSION_OBJ_5033 5033 +#define IDS_MISSION_OBJ_5034 5034 +#define IDS_MISSION_OBJ_5035 5035 +#define IDS_MISSION_OBJ_5036 5036 +#define IDS_MISSION_OBJ_5037 5037 +#define IDS_MISSION_OBJ_5038 5038 +#define IDS_MISSION_OBJ_5039 5039 +#define IDS_MISSION_OBJ_5040 5040 +#define IDS_MISSION_OBJ_5041 5041 +#define IDS_MISSION_OBJ_5042 5042 +#define IDS_MISSION_OBJ_5043 5043 +#define IDS_MISSION_OBJ_5044 5044 +#define IDS_MISSION_OBJ_5045 5045 +#define IDS_MISSION_OBJ_5046 5046 +#define IDS_MISSION_OBJ_5047 5047 +#define IDS_MISSION_OBJ_5048 5048 +#define IDS_MISSION_OBJ_5049 5049 +#define IDS_MISSION_OBJ_5050 5050 +#define IDS_MISSION_OBJ_5051 5051 +#define IDS_MISSION_OBJ_5052 5052 +#define IDS_MISSION_OBJ_5053 5053 +#define IDS_MISSION_OBJ_5054 5054 +#define IDS_MISSION_OBJ_5055 5055 +#define IDS_MISSION_OBJ_5056 5056 +#define IDS_MISSION_OBJ_5057 5057 +#define IDS_MISSION_OBJ_5058 5058 +#define IDS_MISSION_OBJ_5059 5059 +#define IDS_MISSION_OBJ_5060 5060 +#define IDS_MISSION_OBJ_5061 5061 +#define IDS_MISSION_OBJ_5062 5062 +#define IDS_MISSION_OBJ_5063 5063 +#define IDS_MISSION_OBJ_5064 5064 +#define IDS_MISSION_OBJ_5065 5065 +#define IDS_MISSION_OBJ_5066 5066 +#define IDS_MISSION_OBJ_5067 5067 +#define IDS_MISSION_OBJ_5068 5068 +#define IDS_MISSION_OBJ_5069 5069 +#define IDS_MISSION_OBJ_5070 5070 +#define IDS_MISSION_OBJ_5071 5071 +#define IDS_MISSION_OBJ_5072 5072 +#define IDS_MISSION_OBJ_5073 5073 +#define IDS_MISSION_OBJ_5074 5074 +#define IDS_MISSION_OBJ_5075 5075 +#define IDS_MISSION_OBJ_5076 5076 +#define IDS_MISSION_OBJ_5077 5077 +#define IDS_MISSION_OBJ_5078 5078 +#define IDS_MISSION_OBJ_5079 5079 +#define IDS_MISSION_OBJ_5080 5080 +#define IDS_MISSION_OBJ_5081 5081 +#define IDS_MISSION_OBJ_5082 5082 +#define IDS_MISSION_OBJ_5083 5083 +#define IDS_MISSION_OBJ_5084 5084 +#define IDS_MISSION_OBJ_5085 5085 +#define IDS_MISSION_OBJ_5086 5086 +#define IDS_MISSION_OBJ_5087 5087 +#define IDS_MISSION_OBJ_5088 5088 +#define IDS_MISSION_OBJ_5089 5089 +#define IDS_MISSION_OBJ_5090 5090 +#define IDS_MISSION_OBJ_5091 5091 +#define IDS_MISSION_OBJ_5092 5092 +#define IDS_MISSION_OBJ_5093 5093 +#define IDS_MISSION_OBJ_5094 5094 +#define IDS_MISSION_OBJ_5095 5095 +#define IDS_MISSION_OBJ_5096 5096 +#define IDS_MISSION_OBJ_5097 5097 +#define IDS_MISSION_OBJ_5098 5098 +#define IDS_MISSION_OBJ_5099 5099 +#define IDS_MISSION_OBJ_5100 5100 +#define IDS_MISSION_OBJ_5101 5101 +#define IDS_MISSION_OBJ_5102 5102 +#define IDS_MISSION_OBJ_5103 5103 +#define IDS_MISSION_OBJ_5104 5104 +#define IDS_MISSION_OBJ_5105 5105 +#define IDS_MISSION_OBJ_5106 5106 +#define IDS_MISSION_OBJ_5107 5107 +#define IDS_MISSION_OBJ_5108 5108 +#define IDS_MISSION_OBJ_5109 5109 +#define IDS_MISSION_OBJ_5110 5110 +#define IDS_MISSION_OBJ_5111 5111 +#define IDS_MISSION_OBJ_5112 5112 +#define IDS_MISSION_OBJ_5113 5113 +#define IDS_MISSION_OBJ_5114 5114 +#define IDS_MISSION_OBJ_5115 5115 +#define IDS_MISSION_OBJ_5116 5116 +#define IDS_MISSION_OBJ_5117 5117 +#define IDS_MISSION_OBJ_5118 5118 +#define IDS_MISSION_OBJ_5119 5119 +#define IDS_MISSION_OBJ_5120 5120 +#define IDS_MISSION_OBJ_5121 5121 +#define IDS_MISSION_OBJ_5122 5122 +#define IDS_MISSION_OBJ_5123 5123 +#define IDS_MISSION_OBJ_5124 5124 +#define IDS_MISSION_OBJ_5125 5125 +#define IDS_MISSION_OBJ_5126 5126 +#define IDS_MISSION_OBJ_5127 5127 +#define IDS_MISSION_OBJ_5128 5128 +#define IDS_MISSION_OBJ_5129 5129 +#define IDS_MISSION_OBJ_5130 5130 +#define IDS_MISSION_OBJ_5131 5131 +#define IDS_MISSION_OBJ_5132 5132 +#define IDS_MISSION_OBJ_5133 5133 +#define IDS_MISSION_OBJ_5134 5134 +#define IDS_MISSION_OBJ_5135 5135 +#define IDS_MISSION_OBJ_5136 5136 +#define IDS_MISSION_OBJ_5137 5137 +#define IDS_MISSION_OBJ_5138 5138 +#define IDS_MISSION_OBJ_5139 5139 +#define IDS_MISSION_OBJ_5140 5140 +#define IDS_MISSION_OBJ_5141 5141 +#define IDS_MISSION_OBJ_5142 5142 +#define IDS_MISSION_OBJ_5143 5143 +#define IDS_MISSION_OBJ_5144 5144 +#define IDS_MISSION_OBJ_5145 5145 +#define IDS_MISSION_OBJ_5146 5146 +#define IDS_MISSION_OBJ_5147 5147 +#define IDS_MISSION_OBJ_5148 5148 +#define IDS_MISSION_OBJ_5149 5149 +#define IDS_MISSION_OBJ_5150 5150 +#define IDS_MISSION_OBJ_5151 5151 +#define IDS_MISSION_OBJ_5152 5152 +#define IDS_MISSION_OBJ_5153 5153 +#define IDS_MISSION_OBJ_5154 5154 +#define IDS_MISSION_OBJ_5155 5155 +#define IDS_MISSION_OBJ_5156 5156 +#define IDS_MISSION_OBJ_5157 5157 +#define IDS_MISSION_OBJ_5158 5158 +#define IDS_MISSION_OBJ_5159 5159 +#define IDS_MISSION_OBJ_5160 5160 +#define IDS_MISSION_OBJ_5161 5161 +#define IDS_MISSION_OBJ_5162 5162 +#define IDS_MISSION_OBJ_5163 5163 +#define IDS_MISSION_OBJ_5164 5164 +#define IDS_MISSION_OBJ_5165 5165 +#define IDS_MISSION_OBJ_5166 5166 +#define IDS_MISSION_OBJ_5167 5167 +#define IDS_MISSION_OBJ_5168 5168 +#define IDS_MISSION_OBJ_5169 5169 +#define IDS_MISSION_OBJ_5170 5170 +#define IDS_MISSION_OBJ_5171 5171 +#define IDS_MISSION_OBJ_5172 5172 +#define IDS_MISSION_OBJ_5173 5173 +#define IDS_MISSION_OBJ_5174 5174 +#define IDS_MISSION_OBJ_5175 5175 +#define IDS_MISSION_OBJ_5176 5176 +#define IDS_MISSION_OBJ_5177 5177 +#define IDS_MISSION_OBJ_5178 5178 +#define IDS_MISSION_OBJ_5179 5179 +#define IDS_MISSION_OBJ_5180 5180 +#define IDS_MISSION_OBJ_5181 5181 +#define IDS_MISSION_OBJ_5182 5182 +#define IDS_MISSION_OBJ_5183 5183 +#define IDS_MISSION_OBJ_5184 5184 +#define IDS_MISSION_OBJ_5185 5185 +#define IDS_MISSION_OBJ_5186 5186 +#define IDS_MISSION_OBJ_5187 5187 +#define IDS_MISSION_OBJ_5188 5188 +#define IDS_MISSION_OBJ_5189 5189 +#define IDS_MISSION_OBJ_5190 5190 +#define IDS_MISSION_OBJ_5191 5191 +#define IDS_MISSION_OBJ_5192 5192 +#define IDS_MISSION_OBJ_5193 5193 +#define IDS_MISSION_OBJ_5194 5194 +#define IDS_MISSION_OBJ_5195 5195 +#define IDS_MISSION_OBJ_5196 5196 +#define IDS_MISSION_OBJ_5197 5197 +#define IDS_MISSION_OBJ_5198 5198 +#define IDS_MISSION_OBJ_5199 5199 +#define IDS_MISSION_OBJ_5200 5200 +#define IDS_MISSION_OBJ_5201 5201 +#define IDS_MISSION_OBJ_5202 5202 +#define IDS_MISSION_OBJ_5203 5203 +#define IDS_MISSION_OBJ_5204 5204 +#define IDS_MISSION_OBJ_5205 5205 +#define IDS_COOP_MISSION_OBJ_5500 5500 +#define IDS_COOP_MISSION_OBJ_5501 5501 +#define IDS_COOP_MISSION_OBJ_5502 5502 +#define IDS_COOP_MISSION_OBJ_5503 5503 +#define IDS_COOP_MISSION_OBJ_5504 5504 +#define IDS_COOP_MISSION_OBJ_5505 5505 +#define IDS_COOP_MISSION_OBJ_5506 5506 +#define IDS_COOP_MISSION_OBJ_5507 5507 +#define IDS_COOP_MISSION_OBJ_5508 5508 +#define IDS_COOP_MISSION_OBJ_5509 5509 +#define IDS_COOP_MISSION_OBJ_5510 5510 +#define IDS_COOP_MISSION_OBJ_5511 5511 +#define IDS_COOP_MISSION_OBJ_5512 5512 +#define IDS_COOP_MISSION_OBJ_5513 5513 +#define IDS_COOP_MISSION_OBJ_5514 5514 +#define IDS_COOP_MISSION_OBJ_5515 5515 +#define IDS_COOP_MISSION_OBJ_5516 5516 +#define IDS_COOP_MISSION_OBJ_5517 5517 +#define IDS_COOP_MISSION_OBJ_5518 5518 +#define IDS_COOP_MISSION_OBJ_5519 5519 +#define IDS_COOP_MISSION_OBJ_5520 5520 +#define IDS_COOP_MISSION_OBJ_5521 5521 +#define IDS_COOP_MISSION_OBJ_5522 5522 +#define IDS_COOP_MISSION_OBJ_5523 5523 +#define IDS_COOP_MISSION_OBJ_5524 5524 +#define IDS_COOP_MISSION_OBJ_5525 5525 +#define IDS_COOP_MISSION_OBJ_5526 5526 +#define IDS_COOP_MISSION_OBJ_5527 5527 +#define IDS_COOP_MISSION_OBJ_5528 5528 +#define IDS_COOP_MISSION_OBJ_5529 5529 +#define IDS_COOP_MISSION_OBJ_5530 5530 +#define IDS_COOP_MISSION_OBJ_5531 5531 +#define IDS_COOP_MISSION_OBJ_5532 5532 +#define IDS_COOP_MISSION_OBJ_5533 5533 +#define IDS_COOP_MISSION_OBJ_5534 5534 +#define IDS_COOP_MISSION_OBJ_5535 5535 +#define IDS_COOP_MISSION_OBJ_5536 5536 +#define IDS_COOP_MISSION_OBJ_5537 5537 +#define IDS_COOP_MISSION_OBJ_5538 5538 +#define IDS_COOP_MISSION_OBJ_5539 5539 +#define IDS_COOP_MISSION_OBJ_5540 5540 +#define IDS_COOP_MISSION_OBJ_5541 5541 +#define IDS_COOP_MISSION_OBJ_5542 5542 +#define IDS_COOP_MISSION_OBJ_5543 5543 +#define IDS_COOP_MISSION_OBJ_5544 5544 +#define IDS_COOP_MISSION_OBJ_5545 5545 +#define IDS_COOP_MISSION_OBJ_5546 5546 +#define IDS_COOP_MISSION_OBJ_5547 5547 +#define IDS_COOP_MISSION_OBJ_5548 5548 +#define IDS_COOP_MISSION_OBJ_5549 5549 +#define IDS_COOP_MISSION_OBJ_5550 5550 +#define IDS_COOP_MISSION_OBJ_5551 5551 +#define IDS_COOP_MISSION_OBJ_5552 5552 +#define IDS_COOP_MISSION_OBJ_5553 5553 +#define IDS_COOP_MISSION_OBJ_5554 5554 +#define IDS_COOP_MISSION_OBJ_5555 5555 +#define IDS_COOP_MISSION_OBJ_5556 5556 +#define IDS_COOP_MISSION_OBJ_5557 5557 +#define IDS_COOP_MISSION_OBJ_5558 5558 +#define IDS_COOP_MISSION_OBJ_5559 5559 +#define IDS_COOP_MISSION_OBJ_5560 5560 +#define IDS_COOP_MISSION_OBJ_5561 5561 +#define IDS_COOP_MISSION_OBJ_5562 5562 +#define IDS_COOP_MISSION_OBJ_5563 5563 +#define IDS_COOP_MISSION_OBJ_5564 5564 +#define IDS_COOP_MISSION_OBJ_5565 5565 +#define IDS_COOP_MISSION_OBJ_5566 5566 +#define IDS_COOP_MISSION_OBJ_5567 5567 +#define IDS_COOP_MISSION_OBJ_5568 5568 +#define IDS_COOP_MISSION_OBJ_5569 5569 +#define IDS_COOP_MISSION_OBJ_5570 5570 +#define IDS_COOP_MISSION_OBJ_5571 5571 +#define IDS_COOP_MISSION_OBJ_5572 5572 +#define IDS_COOP_MISSION_OBJ_5573 5573 +#define IDS_COOP_MISSION_OBJ_5574 5574 +#define IDS_COOP_MISSION_OBJ_5575 5575 +#define IDS_COOP_MISSION_OBJ_5576 5576 +#define IDS_STRING5577 5577 +#define IDS_MISSION_TEXT 6000 +#define IDS_MISSION_TEXT_6000 6000 +#define IDS_MISSION_TEXT2 6001 +#define IDS_MISSION_TEXT_6001 6001 +#define IDS_MISSION_TEXT3 6002 +#define IDS_MISSION_TEXT_6002 6002 +#define IDS_MISSION_TEXT4 6003 +#define IDS_MISSION_TEXT_6003 6003 +#define IDS_MISSION_TEXT5 6004 +#define IDS_MISSION_TEXT_6004 6004 +#define IDS_MISSION_TEXT6 6005 +#define IDS_MISSION_TEXT_6005 6005 +#define IDS_MISSION_TEXT7 6006 +#define IDS_MISSION_TEXT_6006 6006 +#define IDS_MISSION_TEXT8 6007 +#define IDS_MISSION_TEXT_6007 6007 +#define IDS_MISSION_TEXT9 6008 +#define IDS_MISSION_TEXT_6008 6008 +#define IDS_MISSION_TEXT10 6009 +#define IDS_MISSION_TEXT_6009 6009 +#define IDS_MISSION_TEXT11 6010 +#define IDS_MISSION_TEXT_6010 6010 +#define IDS_MISSION_TEXT12 6011 +#define IDS_MISSION_TEXT_6011 6011 +#define IDS_MISSION_TEXT13 6012 +#define IDS_MISSION_TEXT_6012 6012 +#define IDS_MISSION_TEXT14 6013 +#define IDS_MISSION_TEXT_6013 6013 +#define IDS_MISSION_TEXT15 6014 +#define IDS_MISSION_TEXT_6014 6014 +#define IDS_MISSION_TEXT16 6015 +#define IDS_MISSION_TEXT_6015 6015 +#define IDS_MISSION_TEXT17 6016 +#define IDS_MISSION_TEXT_6016 6016 +#define IDS_MISSION_TEXT18 6017 +#define IDS_MISSION_TEXT_6017 6017 +#define IDS_MISSION_TEXT19 6018 +#define IDS_MISSION_TEXT20 6019 +#define IDS_MISSION_TEXT21 6020 +#define IDS_MISSION_TEXT22 6021 +#define IDS_MISSION_TEXT23 6022 +#define IDS_MISSION_TEXT24 6023 +#define IDS_MISSION_TEXT25 6024 +#define IDS_MISSION_TEXT26 6025 +#define IDS_MISSION_TEXT27 6026 +#define IDS_MISSION_TEXT28 6027 +#define IDS_MISSION_TEXT29 6028 +#define IDS_MISSION_TEXT30 6029 +#define IDS_MISSION_TEXT31 6030 +#define IDS_MISSION_TEXT32 6031 +#define IDS_MISSION_TEXT33 6032 +#define IDS_MISSION_TEXT34 6033 +#define IDS_MISSION_TEXT35 6034 +#define IDS_MISSION_TEXT36 6035 +#define IDS_MISSIONFAILURE 6500 +#define IDS_MISSIONFAILURE2 6501 +#define IDS_MISSIONFAILURE3 6502 +#define IDS_MISSIONFAILURE4 6503 +#define IDS_MISSIONFAILURE5 6504 +#define IDS_MISSIONFAILURE6 6505 +#define IDS_MISSIONFAILURE7 6506 +#define IDS_MISSIONFAILURE8 6507 +#define IDS_MISSIONFAILURE9 6508 +#define IDS_MISSIONFAILURE10 6509 +#define IDS_MISSIONFAILURE11 6510 +#define IDS_MISSIONFAILURE12 6511 +#define IDS_MISSIONFAILURE13 6512 +#define IDS_MISSIONFAILURE14 6513 +#define IDS_MISSIONFAILURE15 6514 +#define IDS_MISSIONFAILURE16 6515 +#define IDS_MISSIONFAILURE17 6516 +#define IDS_MISSIONFAILURE18 6517 +#define IDS_MISSIONFAILURE19 6518 +#define IDS_MISSIONFAILURE20 6519 +#define IDS_MISSIONFAILURE21 6520 +#define IDS_MISSIONFAILURE22 6521 +#define IDS_MISSIONFAILURE23 6522 +#define IDS_MISSIONFAILURE24 6523 +#define IDS_MISSIONFAILURE25 6524 +#define IDS_MISSIONFAILURE26 6525 +#define IDS_MISSIONFAILURE27 6526 +#define IDS_MISSIONFAILURE28 6527 +#define IDS_MISSIONFAILURE29 6528 +#define IDS_MISSIONFAILURE30 6529 +#define IDS_MISSIONFAILURE31 6530 +#define IDS_MISSIONFAILURE32 6531 +#define IDS_MISSIONFAILURE33 6532 +#define IDS_MISSIONFAILURE34 6533 +#define IDS_MISSIONFAILURE35 6534 +#define IDS_MULTI_OBJ_7000 7000 +#define IDS_TRANSMISSIONS_7000 7000 +#define IDS_TRANSMISSIONS_7001 7001 +#define IDS_TRANSMISSIONS_7002 7002 +#define IDS_TRANSMISSIONS_7003 7003 +#define IDS_TRANSMISSIONS_7004 7004 +#define IDS_TRANSMISSIONS_7005 7005 +#define IDS_TRANSMISSIONS_7006 7006 +#define IDS_TRANSMISSIONS_7007 7007 +#define IDS_TRANSMISSIONS_7008 7008 +#define IDS_TRANSMISSIONS_7009 7009 +#define IDS_TRANSMISSIONS_7010 7010 +#define IDS_TRANSMISSIONS_7011 7011 +#define IDS_TRANSMISSIONS_7012 7012 +#define IDS_TRANSMISSIONS_7013 7013 +#define IDS_TRANSMISSIONS_7014 7014 +#define IDS_TRANSMISSIONS_7015 7015 +#define IDS_TRANSMISSIONS_7016 7016 +#define IDS_TRANSMISSIONS_7017 7017 +#define IDS_TRANSMISSIONS_7018 7018 +#define IDS_TRANSMISSIONS_7019 7019 +#define IDS_TRANSMISSIONS_7020 7020 +#define IDS_TRANSMISSIONS_7021 7021 +#define IDS_TRANSMISSIONS_7022 7022 +#define IDS_TRANSMISSIONS_7023 7023 +#define IDS_TRANSMISSIONS_7024 7024 +#define IDS_TRANSMISSIONS_7025 7025 +#define IDS_TRANSMISSIONS_7026 7026 +#define IDS_TRANSMISSIONS_7027 7027 +#define IDS_TRANSMISSIONS_7028 7028 +#define IDS_TRANSMISSIONS_7029 7029 +#define IDS_TRANSMISSIONS_7030 7030 +#define IDS_TRANSMISSIONS_7031 7031 +#define IDS_TRANSMISSIONS_7032 7032 +#define IDS_TRANSMISSIONS_7033 7033 +#define IDS_TRANSMISSIONS_7034 7034 +#define IDS_TRANSMISSIONS_7035 7035 +#define IDS_TRANSMISSIONS_7036 7036 +#define IDS_TRANSMISSIONS_7037 7037 +#define IDS_TRANSMISSIONS_7038 7038 +#define IDS_TRANSMISSIONS_7039 7039 +#define IDS_TRANSMISSIONS_7040 7040 +#define IDS_TRANSMISSIONS_7041 7041 +#define IDS_TRANSMISSIONS_7042 7042 +#define IDS_TRANSMISSIONS_7043 7043 +#define IDS_TRANSMISSIONS_7044 7044 +#define IDS_TRANSMISSIONS_7045 7045 +#define IDS_TRANSMISSIONS_7046 7046 +#define IDS_TRANSMISSIONS_7047 7047 +#define IDS_TRANSMISSIONS_7048 7048 +#define IDS_TRANSMISSIONS_7049 7049 +#define IDS_TRANSMISSIONS_7050 7050 +#define IDS_TRANSMISSIONS_7051 7051 +#define IDS_TRANSMISSIONS_7052 7052 +#define IDS_TRANSMISSIONS_7053 7053 +#define IDS_TRANSMISSIONS_7054 7054 +#define IDS_TRANSMISSIONS_7055 7055 +#define IDS_TRANSMISSIONS_7056 7056 +#define IDS_TRANSMISSIONS_7057 7057 +#define IDS_TRANSMISSIONS_7058 7058 +#define IDS_TRANSMISSIONS_7059 7059 +#define IDS_TRANSMISSIONS_7060 7060 +#define IDS_TRANSMISSIONS_7061 7061 +#define IDS_TRANSMISSIONS_7062 7062 +#define IDS_TRANSMISSIONS_7063 7063 +#define IDS_TRANSMISSIONS_7064 7064 +#define IDS_TRANSMISSIONS_7065 7065 +#define IDS_TRANSMISSIONS_7066 7066 +#define IDS_TRANSMISSIONS_7067 7067 +#define IDS_TRANSMISSIONS_7068 7068 +#define IDS_TRANSMISSIONS_7069 7069 +#define IDS_TRANSMISSIONS_7070 7070 +#define IDS_TRANSMISSIONS_7071 7071 +#define IDS_TRANSMISSIONS_7072 7072 +#define IDS_TRANSMISSIONS_7073 7073 +#define IDS_TRANSMISSIONS_7074 7074 +#define IDS_TRANSMISSIONS_7075 7075 +#define IDS_TRANSMISSIONS_7076 7076 +#define IDS_TRANSMISSIONS_7077 7077 +#define IDS_TRANSMISSIONS_7078 7078 +#define IDS_TRANSMISSIONS_7079 7079 +#define IDS_TRANSMISSIONS_7080 7080 +#define IDS_TRANSMISSIONS_7081 7081 +#define IDS_TRANSMISSIONS_7082 7082 +#define IDS_TRANSMISSIONS_7083 7083 +#define IDS_TRANSMISSIONS_7084 7084 +#define IDS_TRANSMISSIONS_7085 7085 +#define IDS_TRANSMISSIONS_7086 7086 +#define IDS_TRANSMISSIONS_7087 7087 +#define IDS_TRANSMISSIONS_7088 7088 +#define IDS_TRANSMISSIONS_7089 7089 +#define IDS_TRANSMISSIONS_7090 7090 +#define IDS_TRANSMISSIONS_7091 7091 +#define IDS_TRANSMISSIONS_7092 7092 +#define IDS_TRANSMISSIONS_7093 7093 +#define IDS_TRANSMISSIONS_7094 7094 +#define IDS_TRANSMISSIONS_7095 7095 +#define IDS_TRANSMISSIONS_7096 7096 +#define IDS_MULTI_WIN_7100 7100 +#define IDS_DECISIONS_7500 7500 +#define IDS_DECISIONS_7501 7501 +#define IDS_DECISIONS_7502 7502 +#define IDS_DECISIONS_7503 7503 +#define IDS_DECISIONS_7504 7504 +#define IDS_DECISIONS_7505 7505 +#define IDS_DECISIONS_7506 7506 +#define IDS_DECISIONS_7507 7507 +#define IDS_DECISIONS_7508 7508 +#define IDS_DECISIONS_7509 7509 +#define IDS_DECISIONS_7510 7510 +#define IDS_DECISIONS_7511 7511 +#define IDS_DECISIONS_7512 7512 +#define IDS_CODEDTEXT_7700 7700 +#define IDS_CODEDTEXT_7701 7701 +#define IDS_CODEDTEXT_7702 7702 +#define IDS_CODEDTEXT_7703 7703 +#define IDS_CODEDTEXT_7704 7704 +#define IDS_INTEL_TEXT_8000 8000 +#define IDS_INTEL_TEXT_8001 8001 +#define IDS_INTEL_TEXT_8002 8002 +#define IDS_INTEL_TEXT_8003 8003 +#define IDS_INTEL_TEXT_8004 8004 +#define IDS_INTEL_TEXT_8005 8005 +#define IDS_INTEL_TEXT_8006 8006 +#define IDS_INTEL_TEXT_8007 8007 +#define IDS_INTEL_TEXT_8008 8008 +#define IDS_INTEL_TEXT_8009 8009 +#define IDS_INTEL_TEXT_8010 8010 +#define IDS_INTEL_TEXT_8011 8011 +#define IDS_INTEL_TEXT_8012 8012 +#define IDS_INTEL_TEXT_8013 8013 +#define IDS_INTEL_TEXT_8014 8014 +#define IDS_INTEL_TEXT_8015 8015 +#define IDS_TEXT_DIALOGUE_9000 9000 +#define IDS_TEXT_DIALOGUE_9001 9001 +#define IDS_TEXT_DIALOGUE_9002 9002 +#define IDS_TEXT_DIALOGUE_9003 9003 +#define IDS_TEXT_DIALOGUE_9004 9004 +#define IDS_TEXT_DIALOGUE_9005 9005 +#define IDS_TEXT_DIALOGUE_9006 9006 +#define IDS_TEXT_DIALOGUE_9007 9007 +#define IDS_TEXT_DIALOGUE_9008 9008 +#define IDS_TEXT_DIALOGUE_9009 9009 +#define IDS_TEXT_DIALOGUE_9010 9010 +#define IDS_TEXT_DIALOGUE_9011 9011 +#define IDS_TEXT_DIALOGUE_9012 9012 +#define IDS_TEXT_DIALOGUE_9013 9013 +#define IDS_TEXT_DIALOGUE_9014 9014 +#define IDS_TEXT_DIALOGUE_9015 9015 +#define IDS_TEXT_DIALOGUE_9016 9016 +#define IDS_TEXT_DIALOGUE_9017 9017 +#define IDS_DIALOGUE_10000 10000 +#define IDS_DIALOGUE_10001 10001 +#define IDS_DIALOGUE_10002 10002 +#define IDS_DIALOGUE_10003 10003 +#define IDS_DIALOGUE_10004 10004 +#define IDS_DIALOGUE_10005 10005 +#define IDS_DIALOGUE_10006 10006 +#define IDS_DIALOGUE_10007 10007 +#define IDS_DIALOGUE_10008 10008 +#define IDS_DIALOGUE_10009 10009 +#define IDS_DIALOGUE_10010 10010 +#define IDS_DIALOGUE_10011 10011 +#define IDS_DIALOGUE_10012 10012 +#define IDS_DIALOGUE_10013 10013 +#define IDS_DIALOGUE_10014 10014 +#define IDS_DIALOGUE_10015 10015 +#define IDS_DIALOGUE_10016 10016 +#define IDS_DIALOGUE_10017 10017 +#define IDS_DIALOGUE_10018 10018 +#define IDS_DIALOGUE_10019 10019 +#define IDS_DIALOGUE_10020 10020 +#define IDS_DIALOGUE_10021 10021 +#define IDS_DIALOGUE_10022 10022 +#define IDS_DIALOGUE_10023 10023 +#define IDS_DIALOGUE_10024 10024 +#define IDS_DIALOGUE_10025 10025 +#define IDS_DIALOGUE_10026 10026 +#define IDS_DIALOGUE_10027 10027 +#define IDS_DIALOGUE_10028 10028 +#define IDS_DIALOGUE_10029 10029 +#define IDS_DIALOGUE_10030 10030 +#define IDS_DIALOGUE_10031 10031 +#define IDS_DIALOGUE_10032 10032 +#define IDS_DIALOGUE_10033 10033 +#define IDS_DIALOGUE_10034 10034 +#define IDS_DIALOGUE_10035 10035 +#define IDS_DIALOGUE_10036 10036 +#define IDS_DIALOGUE_10037 10037 +#define IDS_DIALOGUE_10038 10038 +#define IDS_DIALOGUE_10039 10039 +#define IDS_DIALOGUE_10040 10040 +#define IDS_DIALOGUE_10041 10041 +#define IDS_DIALOGUE_10042 10042 +#define IDS_DIALOGUE_10043 10043 +#define IDS_DIALOGUE_10044 10044 +#define IDS_DIALOGUE_10045 10045 +#define IDS_DIALOGUE_10046 10046 +#define IDS_DIALOGUE_10047 10047 +#define IDS_DIALOGUE_10048 10048 +#define IDS_DIALOGUE_10049 10049 +#define IDS_DIALOGUE_10050 10050 +#define IDS_DIALOGUE_10051 10051 +#define IDS_DIALOGUE_10052 10052 +#define IDS_DIALOGUE_10053 10053 +#define IDS_DIALOGUE_10054 10054 +#define IDS_DIALOGUE_10055 10055 +#define IDS_DIALOGUE_10056 10056 +#define IDS_DIALOGUE_10057 10057 +#define IDS_DIALOGUE_10058 10058 +#define IDS_DIALOGUE_10059 10059 +#define IDS_DIALOGUE_10060 10060 +#define IDS_DIALOGUE_10061 10061 +#define IDS_DIALOGUE_10062 10062 +#define IDS_DIALOGUE_10063 10063 +#define IDS_DIALOGUE_10064 10064 +#define IDS_DIALOGUE_10065 10065 +#define IDS_DIALOGUE_10066 10066 +#define IDS_DIALOGUE_10067 10067 +#define IDS_DIALOGUE_10068 10068 +#define IDS_DIALOGUE_10069 10069 +#define IDS_DIALOGUE_10070 10070 +#define IDS_DIALOGUE_10071 10071 +#define IDS_DIALOGUE_10072 10072 +#define IDS_DIALOGUE_10073 10073 +#define IDS_DIALOGUE_10074 10074 +#define IDS_DIALOGUE_10075 10075 +#define IDS_DIALOGUE_10076 10076 +#define IDS_DIALOGUE_10077 10077 +#define IDS_DIALOGUE_10078 10078 +#define IDS_DIALOGUE_10079 10079 +#define IDS_DIALOGUE_10080 10080 +#define IDS_DIALOGUE_10081 10081 +#define IDS_DIALOGUE_10082 10082 +#define IDS_DIALOGUE_10083 10083 +#define IDS_DIALOGUE_10084 10084 +#define IDS_DIALOGUE_10085 10085 +#define IDS_DIALOGUE_10086 10086 +#define IDS_DIALOGUE_10087 10087 +#define IDS_DIALOGUE_10088 10088 +#define IDS_DIALOGUE_10089 10089 +#define IDS_DIALOGUE_10090 10090 +#define IDS_DIALOGUE_10091 10091 +#define IDS_DIALOGUE_10092 10092 +#define IDS_DIALOGUE_10093 10093 +#define IDS_DIALOGUE_10094 10094 +#define IDS_DIALOGUE_10095 10095 +#define IDS_DIALOGUE_10096 10096 +#define IDS_DIALOGUE_10097 10097 +#define IDS_DIALOGUE_10098 10098 +#define IDS_DIALOGUE_10099 10099 +#define IDS_DIALOGUE_10100 10100 +#define IDS_DIALOGUE_10101 10101 +#define IDS_DIALOGUE_10102 10102 +#define IDS_DIALOGUE_10103 10103 +#define IDS_DIALOGUE_10104 10104 +#define IDS_DIALOGUE_10105 10105 +#define IDS_DIALOGUE_10106 10106 +#define IDS_DIALOGUE_10107 10107 +#define IDS_DIALOGUE_10108 10108 +#define IDS_DIALOGUE_10109 10109 +#define IDS_DIALOGUE_10110 10110 +#define IDS_DIALOGUE_10111 10111 +#define IDS_DIALOGUE_10112 10112 +#define IDS_DIALOGUE_10113 10113 +#define IDS_DIALOGUE_10114 10114 +#define IDS_DIALOGUE_10115 10115 +#define IDS_DIALOGUE_10116 10116 +#define IDS_DIALOGUE_10117 10117 +#define IDS_DIALOGUE_10118 10118 +#define IDS_DIALOGUE_10119 10119 +#define IDS_DIALOGUE_10120 10120 +#define IDS_DIALOGUE_10121 10121 +#define IDS_DIALOGUE_10122 10122 +#define IDS_DIALOGUE_10123 10123 +#define IDS_DIALOGUE_10124 10124 +#define IDS_DIALOGUE_10125 10125 +#define IDS_DIALOGUE_10126 10126 +#define IDS_DIALOGUE_10127 10127 +#define IDS_DIALOGUE_10128 10128 +#define IDS_DIALOGUE_10129 10129 +#define IDS_DIALOGUE_10130 10130 +#define IDS_DIALOGUE_10131 10131 +#define IDS_DIALOGUE_10132 10132 +#define IDS_DIALOGUE_10133 10133 +#define IDS_DIALOGUE_10134 10134 +#define IDS_DIALOGUE_10135 10135 +#define IDS_DIALOGUE_10136 10136 +#define IDS_DIALOGUE_10137 10137 +#define IDS_DIALOGUE_10138 10138 +#define IDS_DIALOGUE_10139 10139 +#define IDS_DIALOGUE_10140 10140 +#define IDS_DIALOGUE_10141 10141 +#define IDS_DIALOGUE_10142 10142 +#define IDS_DIALOGUE_10143 10143 +#define IDS_DIALOGUE_10144 10144 +#define IDS_DIALOGUE_10145 10145 +#define IDS_DIALOGUE_10146 10146 +#define IDS_DIALOGUE_10147 10147 +#define IDS_DIALOGUE_10148 10148 +#define IDS_DIALOGUE_10149 10149 +#define IDS_DIALOGUE_10150 10150 +#define IDS_DIALOGUE_10151 10151 +#define IDS_DIALOGUE_10152 10152 +#define IDS_DIALOGUE_10153 10153 +#define IDS_DIALOGUE_10154 10154 +#define IDS_DIALOGUE_10155 10155 +#define IDS_DIALOGUE_10156 10156 +#define IDS_DIALOGUE_10157 10157 +#define IDS_DIALOGUE_10158 10158 +#define IDS_DIALOGUE_10159 10159 +#define IDS_DIALOGUE_10160 10160 +#define IDS_DIALOGUE_10161 10161 +#define IDS_DIALOGUE_10162 10162 +#define IDS_DIALOGUE_10163 10163 +#define IDS_DIALOGUE_10164 10164 +#define IDS_DIALOGUE_10165 10165 +#define IDS_DIALOGUE_10166 10166 +#define IDS_DIALOGUE_10167 10167 +#define IDS_DIALOGUE_10168 10168 +#define IDS_DIALOGUE_10169 10169 +#define IDS_DIALOGUE_10170 10170 +#define IDS_DIALOGUE_10171 10171 +#define IDS_DIALOGUE_10172 10172 +#define IDS_DIALOGUE_10173 10173 +#define IDS_DIALOGUE_10174 10174 +#define IDS_DIALOGUE_10175 10175 +#define IDS_DIALOGUE_10176 10176 +#define IDS_DIALOGUE_10177 10177 +#define IDS_DIALOGUE_10178 10178 +#define IDS_DIALOGUE_10179 10179 +#define IDS_DIALOGUE_10180 10180 +#define IDS_DIALOGUE_10181 10181 +#define IDS_DIALOGUE_10182 10182 +#define IDS_DIALOGUE_10183 10183 +#define IDS_DIALOGUE_10184 10184 +#define IDS_DIALOGUE_10185 10185 +#define IDS_DIALOGUE_10186 10186 +#define IDS_DIALOGUE_10187 10187 +#define IDS_DIALOGUE_10188 10188 +#define IDS_DIALOGUE_10189 10189 +#define IDS_DIALOGUE_10190 10190 +#define IDS_DIALOGUE_10191 10191 +#define IDS_DIALOGUE_10192 10192 +#define IDS_DIALOGUE_10193 10193 +#define IDS_DIALOGUE_10194 10194 +#define IDS_DIALOGUE_10195 10195 +#define IDS_DIALOGUE_10196 10196 +#define IDS_DIALOGUE_10197 10197 +#define IDS_DIALOGUE_10198 10198 +#define IDS_DIALOGUE_10199 10199 +#define IDS_DIALOGUE_10200 10200 +#define IDS_DIALOGUE_10201 10201 +#define IDS_DIALOGUE_10202 10202 +#define IDS_DIALOGUE_10203 10203 +#define IDS_DIALOGUE_10204 10204 +#define IDS_DIALOGUE_10205 10205 +#define IDS_DIALOGUE_10206 10206 +#define IDS_DIALOGUE_10207 10207 +#define IDS_DIALOGUE_10208 10208 +#define IDS_DIALOGUE_10209 10209 +#define IDS_DIALOGUE_10210 10210 +#define IDS_DIALOGUE_10211 10211 +#define IDS_DIALOGUE_10212 10212 +#define IDS_DIALOGUE_10213 10213 +#define IDS_DIALOGUE_10214 10214 +#define IDS_DIALOGUE_10215 10215 +#define IDS_DIALOGUE_10216 10216 +#define IDS_DIALOGUE_10217 10217 +#define IDS_DIALOGUE_10218 10218 +#define IDS_DIALOGUE_10219 10219 +#define IDS_DIALOGUE_10220 10220 +#define IDS_DIALOGUE_10221 10221 +#define IDS_DIALOGUE_10222 10222 +#define IDS_DIALOGUE_10223 10223 +#define IDS_DIALOGUE_10224 10224 +#define IDS_DIALOGUE_10225 10225 +#define IDS_DIALOGUE_10226 10226 +#define IDS_DIALOGUE_10227 10227 +#define IDS_DIALOGUE_10228 10228 +#define IDS_DIALOGUE_10229 10229 +#define IDS_DIALOGUE_10230 10230 +#define IDS_DIALOGUE_10231 10231 +#define IDS_DIALOGUE_10232 10232 +#define IDS_DIALOGUE_10233 10233 +#define IDS_DIALOGUE_10234 10234 +#define IDS_DIALOGUE_10235 10235 +#define IDS_DIALOGUE_10236 10236 +#define IDS_DIALOGUE_10237 10237 +#define IDS_DIALOGUE_10238 10238 +#define IDS_DIALOGUE_10239 10239 +#define IDS_DIALOGUE_10240 10240 +#define IDS_DIALOGUE_10241 10241 +#define IDS_DIALOGUE_10242 10242 +#define IDS_DIALOGUE_10243 10243 +#define IDS_DIALOGUE_10244 10244 +#define IDS_DIALOGUE_10245 10245 +#define IDS_DIALOGUE_10246 10246 +#define IDS_DIALOGUE_10247 10247 +#define IDS_DIALOGUE_10248 10248 +#define IDS_DIALOGUE_10249 10249 +#define IDS_DIALOGUE_10250 10250 +#define IDS_DIALOGUE_10251 10251 +#define IDS_DIALOGUE_10252 10252 +#define IDS_DIALOGUE_10253 10253 +#define IDS_DIALOGUE_10254 10254 +#define IDS_DIALOGUE_10255 10255 +#define IDS_DIALOGUE_10256 10256 +#define IDS_DIALOGUE_10257 10257 +#define IDS_DIALOGUE_10258 10258 +#define IDS_DIALOGUE_10259 10259 +#define IDS_DIALOGUE_10260 10260 +#define IDS_DIALOGUE_10261 10261 +#define IDS_DIALOGUE_10262 10262 +#define IDS_DIALOGUE_10263 10263 +#define IDS_DIALOGUE_10264 10264 +#define IDS_DIALOGUE_10265 10265 +#define IDS_DIALOGUE_10266 10266 +#define IDS_DIALOGUE_10267 10267 +#define IDS_DIALOGUE_10268 10268 +#define IDS_DIALOGUE_10269 10269 +#define IDS_DIALOGUE_10270 10270 +#define IDS_DIALOGUE_10271 10271 +#define IDS_DIALOGUE_10272 10272 +#define IDS_DIALOGUE_10273 10273 +#define IDS_DIALOGUE_10274 10274 +#define IDS_DIALOGUE_10275 10275 +#define IDS_DIALOGUE_10276 10276 +#define IDS_DIALOGUE_10277 10277 +#define IDS_DIALOGUE_10278 10278 +#define IDS_DIALOGUE_10279 10279 +#define IDS_DIALOGUE_10280 10280 +#define IDS_DIALOGUE_10281 10281 +#define IDS_DIALOGUE_10282 10282 +#define IDS_DIALOGUE_10283 10283 +#define IDS_DIALOGUE_10284 10284 +#define IDS_DIALOGUE_10285 10285 +#define IDS_DIALOGUE_10286 10286 +#define IDS_DIALOGUE_10287 10287 +#define IDS_DIALOGUE_10288 10288 +#define IDS_DIALOGUE_10289 10289 +#define IDS_DIALOGUE_10290 10290 +#define IDS_DIALOGUE_10291 10291 +#define IDS_DIALOGUE_10292 10292 +#define IDS_DIALOGUE_10293 10293 +#define IDS_DIALOGUE_10294 10294 +#define IDS_DIALOGUE_10295 10295 +#define IDS_DIALOGUE_10296 10296 +#define IDS_DIALOGUE_10297 10297 +#define IDS_DIALOGUE_10298 10298 +#define IDS_DIALOGUE_10299 10299 +#define IDS_DIALOGUE_10300 10300 +#define IDS_DIALOGUE_10301 10301 +#define IDS_DIALOGUE_10302 10302 +#define IDS_DIALOGUE_10303 10303 +#define IDS_DIALOGUE_10304 10304 +#define IDS_DIALOGUE_10305 10305 +#define IDS_DIALOGUE_10306 10306 +#define IDS_DIALOGUE_10307 10307 +#define IDS_DIALOGUE_10308 10308 +#define IDS_DIALOGUE_10309 10309 +#define IDS_DIALOGUE_10310 10310 +#define IDS_DIALOGUE_10311 10311 +#define IDS_DIALOGUE_10312 10312 +#define IDS_DIALOGUE_10313 10313 +#define IDS_DIALOGUE_10314 10314 +#define IDS_DIALOGUE_10315 10315 +#define IDS_DIALOGUE_10316 10316 +#define IDS_DIALOGUE_10317 10317 +#define IDS_DIALOGUE_10318 10318 +#define IDS_DIALOGUE_10319 10319 +#define IDS_DIALOGUE_10320 10320 +#define IDS_DIALOGUE_10321 10321 +#define IDS_DIALOGUE_10322 10322 +#define IDS_DIALOGUE_10323 10323 +#define IDS_DIALOGUE_10324 10324 +#define IDS_DIALOGUE_10325 10325 +#define IDS_DIALOGUE_10326 10326 +#define IDS_DIALOGUE_10327 10327 +#define IDS_DIALOGUE_10328 10328 +#define IDS_DIALOGUE_10329 10329 +#define IDS_DIALOGUE_10330 10330 +#define IDS_DIALOGUE_10331 10331 +#define IDS_DIALOGUE_10332 10332 +#define IDS_DIALOGUE_10333 10333 +#define IDS_DIALOGUE_10334 10334 +#define IDS_DIALOGUE_10335 10335 +#define IDS_DIALOGUE_10336 10336 +#define IDS_DIALOGUE_10337 10337 +#define IDS_DIALOGUE_10338 10338 +#define IDS_DIALOGUE_10339 10339 +#define IDS_DIALOGUE_10340 10340 +#define IDS_DIALOGUE_10341 10341 +#define IDS_DIALOGUE_10342 10342 +#define IDS_DIALOGUE_10343 10343 +#define IDS_DIALOGUE_10344 10344 +#define IDS_DIALOGUE_10345 10345 +#define IDS_DIALOGUE_10346 10346 +#define IDS_DIALOGUE_10347 10347 +#define IDS_DIALOGUE_10348 10348 +#define IDS_DIALOGUE_10349 10349 +#define IDS_DIALOGUE_10350 10350 +#define IDS_DIALOGUE_10351 10351 +#define IDS_DIALOGUE_10352 10352 +#define IDS_DIALOGUE_10353 10353 +#define IDS_DIALOGUE_10354 10354 +#define IDS_DIALOGUE_10355 10355 +#define IDS_DIALOGUE_10356 10356 +#define IDS_DIALOGUE_10357 10357 +#define IDS_DIALOGUE_10358 10358 +#define IDS_DIALOGUE_10359 10359 +#define IDS_DIALOGUE_10360 10360 +#define IDS_DIALOGUE_10361 10361 +#define IDS_DIALOGUE_10362 10362 +#define IDS_DIALOGUE_10363 10363 +#define IDS_DIALOGUE_10364 10364 +#define IDS_DIALOGUE_10365 10365 +#define IDS_DIALOGUE_10366 10366 +#define IDS_DIALOGUE_10367 10367 +#define IDS_DIALOGUE_10368 10368 +#define IDS_DIALOGUE_10369 10369 +#define IDS_DIALOGUE_10370 10370 +#define IDS_DIALOGUE_10371 10371 +#define IDS_DIALOGUE_10372 10372 +#define IDS_DIALOGUE_10373 10373 +#define IDS_DIALOGUE_10374 10374 +#define IDS_DIALOGUE_10375 10375 +#define IDS_DIALOGUE_10376 10376 +#define IDS_DIALOGUE_10377 10377 +#define IDS_DIALOGUE_10378 10378 +#define IDS_DIALOGUE_10379 10379 +#define IDS_DIALOGUE_10380 10380 +#define IDS_DIALOGUE_10381 10381 +#define IDS_DIALOGUE_10382 10382 +#define IDS_DIALOGUE_10383 10383 +#define IDS_DIALOGUE_10384 10384 +#define IDS_DIALOGUE_10385 10385 +#define IDS_DIALOGUE_10386 10386 +#define IDS_DIALOGUE_10387 10387 +#define IDS_DIALOGUE_10388 10388 +#define IDS_DIALOGUE_10389 10389 +#define IDS_DIALOGUE_10390 10390 +#define IDS_DIALOGUE_10391 10391 +#define IDS_DIALOGUE_10392 10392 +#define IDS_DIALOGUE_10393 10393 +#define IDS_DIALOGUE_10394 10394 +#define IDS_DIALOGUE_10395 10395 +#define IDS_DIALOGUE_10396 10396 +#define IDS_DIALOGUE_10397 10397 +#define IDS_DIALOGUE_10398 10398 +#define IDS_DIALOGUE_10399 10399 +#define IDS_DIALOGUE_10400 10400 +#define IDS_DIALOGUE_10401 10401 +#define IDS_DIALOGUE_10402 10402 +#define IDS_DIALOGUE_10403 10403 +#define IDS_DIALOGUE_10404 10404 +#define IDS_DIALOGUE_10405 10405 +#define IDS_DIALOGUE_10406 10406 +#define IDS_DIALOGUE_10407 10407 +#define IDS_DIALOGUE_10408 10408 +#define IDS_DIALOGUE_10409 10409 +#define IDS_DIALOGUE_10410 10410 +#define IDS_DIALOGUE_10411 10411 +#define IDS_DIALOGUE_10412 10412 +#define IDS_DIALOGUE_10413 10413 +#define IDS_DIALOGUE_10414 10414 +#define IDS_DIALOGUE_10415 10415 +#define IDS_DIALOGUE_10416 10416 +#define IDS_DIALOGUE_10417 10417 +#define IDS_DIALOGUE_10418 10418 +#define IDS_DIALOGUE_10419 10419 +#define IDS_DIALOGUE_10420 10420 +#define IDS_DIALOGUE_10421 10421 +#define IDS_DIALOGUE_10422 10422 +#define IDS_DIALOGUE_10423 10423 +#define IDS_DIALOGUE_10424 10424 +#define IDS_DIALOGUE_10425 10425 +#define IDS_DIALOGUE_10426 10426 +#define IDS_DIALOGUE_10427 10427 +#define IDS_DIALOGUE_10428 10428 +#define IDS_DIALOGUE_10429 10429 +#define IDS_DIALOGUE_10430 10430 +#define IDS_DIALOGUE_10431 10431 +#define IDS_DIALOGUE_10432 10432 +#define IDS_DIALOGUE_10433 10433 +#define IDS_DIALOGUE_10434 10434 +#define IDS_DIALOGUE_10435 10435 +#define IDS_DIALOGUE_10436 10436 +#define IDS_DIALOGUE_10437 10437 +#define IDS_DIALOGUE_10438 10438 +#define IDS_DIALOGUE_10439 10439 +#define IDS_DIALOGUE_10440 10440 +#define IDS_DIALOGUE_10441 10441 +#define IDS_DIALOGUE_10442 10442 +#define IDS_DIALOGUE_10443 10443 +#define IDS_DIALOGUE_10444 10444 +#define IDS_DIALOGUE_10445 10445 +#define IDS_DIALOGUE_10446 10446 +#define IDS_DIALOGUE_10447 10447 +#define IDS_DIALOGUE_10448 10448 +#define IDS_DIALOGUE_10449 10449 +#define IDS_DIALOGUE_10450 10450 +#define IDS_DIALOGUE_10451 10451 +#define IDS_DIALOGUE_10452 10452 +#define IDS_DIALOGUE_10453 10453 +#define IDS_DIALOGUE_10454 10454 +#define IDS_DIALOGUE_10455 10455 +#define IDS_DIALOGUE_10456 10456 +#define IDS_DIALOGUE_10457 10457 +#define IDS_DIALOGUE_10458 10458 +#define IDS_DIALOGUE_10459 10459 +#define IDS_DIALOGUE_10460 10460 +#define IDS_DIALOGUE_10461 10461 +#define IDS_DIALOGUE_10462 10462 +#define IDS_DIALOGUE_10463 10463 +#define IDS_DIALOGUE_10464 10464 +#define IDS_DIALOGUE_10465 10465 +#define IDS_DIALOGUE_10466 10466 +#define IDS_DIALOGUE_10467 10467 +#define IDS_DIALOGUE_10468 10468 +#define IDS_DIALOGUE_10469 10469 +#define IDS_DIALOGUE_10470 10470 +#define IDS_DIALOGUE_10471 10471 +#define IDS_DIALOGUE_10472 10472 +#define IDS_DIALOGUE_10473 10473 +#define IDS_DIALOGUE_10474 10474 +#define IDS_DIALOGUE_10475 10475 +#define IDS_DIALOGUE_10476 10476 +#define IDS_DIALOGUE_10477 10477 +#define IDS_DIALOGUE_10478 10478 +#define IDS_DIALOGUE_10479 10479 +#define IDS_DIALOGUE_10480 10480 +#define IDS_DIALOGUE_10481 10481 +#define IDS_DIALOGUE_10482 10482 +#define IDS_DIALOGUE_10483 10483 +#define IDS_DIALOGUE_10484 10484 +#define IDS_DIALOGUE_10485 10485 +#define IDS_DIALOGUE_10486 10486 +#define IDS_DIALOGUE_10487 10487 +#define IDS_DIALOGUE_10488 10488 +#define IDS_DIALOGUE_10489 10489 +#define IDS_DIALOGUE_10490 10490 +#define IDS_DIALOGUE_10491 10491 +#define IDS_DIALOGUE_10492 10492 +#define IDS_DIALOGUE_10493 10493 +#define IDS_DIALOGUE_10494 10494 +#define IDS_DIALOGUE_10495 10495 +#define IDS_DIALOGUE_10496 10496 +#define IDS_DIALOGUE_10497 10497 +#define IDS_DIALOGUE_10498 10498 +#define IDS_DIALOGUE_10499 10499 +#define IDS_DIALOGUE_10500 10500 +#define IDS_DIALOGUE_10501 10501 +#define IDS_DIALOGUE_10502 10502 +#define IDS_DIALOGUE_10503 10503 +#define IDS_DIALOGUE_10504 10504 +#define IDS_DIALOGUE_10505 10505 +#define IDS_DIALOGUE_10506 10506 +#define IDS_DIALOGUE_10507 10507 +#define IDS_DIALOGUE_10508 10508 +#define IDS_DIALOGUE_10509 10509 +#define IDS_DIALOGUE_10510 10510 +#define IDS_DIALOGUE_10511 10511 +#define IDS_DIALOGUE_10512 10512 +#define IDS_DIALOGUE_10513 10513 +#define IDS_DIALOGUE_10514 10514 +#define IDS_DIALOGUE_10515 10515 +#define IDS_DIALOGUE_10516 10516 +#define IDS_DIALOGUE_10517 10517 +#define IDS_DIALOGUE_10518 10518 +#define IDS_DIALOGUE_10519 10519 +#define IDS_DIALOGUE_10520 10520 +#define IDS_DIALOGUE_10521 10521 +#define IDS_DIALOGUE_10522 10522 +#define IDS_DIALOGUE_10523 10523 +#define IDS_DIALOGUE_10524 10524 +#define IDS_DIALOGUE_10525 10525 +#define IDS_DIALOGUE_10526 10526 +#define IDS_DIALOGUE_10527 10527 +#define IDS_DIALOGUE_10528 10528 +#define IDS_DIALOGUE_10529 10529 +#define IDS_DIALOGUE_10530 10530 +#define IDS_DIALOGUE_10531 10531 +#define IDS_DIALOGUE_10532 10532 +#define IDS_DIALOGUE_10533 10533 +#define IDS_DIALOGUE_10534 10534 +#define IDS_DIALOGUE_10535 10535 +#define IDS_DIALOGUE_10536 10536 +#define IDS_DIALOGUE_10537 10537 +#define IDS_DIALOGUE_10538 10538 +#define IDS_DIALOGUE_10539 10539 +#define IDS_DIALOGUE_10540 10540 +#define IDS_DIALOGUE_10541 10541 +#define IDS_DIALOGUE_10542 10542 +#define IDS_DIALOGUE_10543 10543 +#define IDS_DIALOGUE_10544 10544 +#define IDS_DIALOGUE_10545 10545 +#define IDS_DIALOGUE_10546 10546 +#define IDS_DIALOGUE_10547 10547 +#define IDS_DIALOGUE_10548 10548 +#define IDS_DIALOGUE_10549 10549 +#define IDS_DIALOGUE_10550 10550 +#define IDS_DIALOGUE_10551 10551 +#define IDS_DIALOGUE_10552 10552 +#define IDS_DIALOGUE_10553 10553 +#define IDS_DIALOGUE_10554 10554 +#define IDS_DIALOGUE_10555 10555 +#define IDS_DIALOGUE_10556 10556 +#define IDS_DIALOGUE_10557 10557 +#define IDS_DIALOGUE_10558 10558 +#define IDS_DIALOGUE_10559 10559 +#define IDS_DIALOGUE_10560 10560 +#define IDS_DIALOGUE_10561 10561 +#define IDS_DIALOGUE_10562 10562 +#define IDS_DIALOGUE_10563 10563 +#define IDS_DIALOGUE_10564 10564 +#define IDS_DIALOGUE_10565 10565 +#define IDS_DIALOGUE_10566 10566 +#define IDS_DIALOGUE_10567 10567 +#define IDS_DIALOGUE_10568 10568 +#define IDS_DIALOGUE_10569 10569 +#define IDS_DIALOGUE_10570 10570 +#define IDS_DIALOGUE_10571 10571 +#define IDS_DIALOGUE_10572 10572 +#define IDS_DIALOGUE_10573 10573 +#define IDS_DIALOGUE_10574 10574 +#define IDS_DIALOGUE_10575 10575 +#define IDS_DIALOGUE_10576 10576 +#define IDS_DIALOGUE_10577 10577 +#define IDS_DIALOGUE_10578 10578 +#define IDS_DIALOGUE_10579 10579 +#define IDS_DIALOGUE_10580 10580 +#define IDS_DIALOGUE_10581 10581 +#define IDS_DIALOGUE_10582 10582 +#define IDS_DIALOGUE_10583 10583 +#define IDS_DIALOGUE_10584 10584 +#define IDS_DIALOGUE_10585 10585 +#define IDS_DIALOGUE_10586 10586 +#define IDS_DIALOGUE_10587 10587 +#define IDS_DIALOGUE_10588 10588 +#define IDS_DIALOGUE_10589 10589 +#define IDS_DIALOGUE_10590 10590 +#define IDS_DIALOGUE_10591 10591 +#define IDS_DIALOGUE_10592 10592 +#define IDS_DIALOGUE_10593 10593 +#define IDS_DIALOGUE_10594 10594 +#define IDS_DIALOGUE_10595 10595 +#define IDS_DIALOGUE_10596 10596 +#define IDS_DIALOGUE_10597 10597 +#define IDS_DIALOGUE_10598 10598 +#define IDS_DIALOGUE_10599 10599 +#define IDS_DIALOGUE_10600 10600 +#define IDS_DIALOGUE_10601 10601 +#define IDS_DIALOGUE_10602 10602 +#define IDS_DIALOGUE_10603 10603 +#define IDS_DIALOGUE_10604 10604 +#define IDS_DIALOGUE_10605 10605 +#define IDS_DIALOGUE_10606 10606 +#define IDS_DIALOGUE_10607 10607 +#define IDS_DIALOGUE_10608 10608 +#define IDS_DIALOGUE_10609 10609 +#define IDS_DIALOGUE_10610 10610 +#define IDS_DIALOGUE_10611 10611 +#define IDS_DIALOGUE_10612 10612 +#define IDS_DIALOGUE_10613 10613 +#define IDS_DIALOGUE_10614 10614 +#define IDS_DIALOGUE_10615 10615 +#define IDS_DIALOGUE_10616 10616 +#define IDS_DIALOGUE_10617 10617 +#define IDS_DIALOGUE_10618 10618 +#define IDS_DIALOGUE_10619 10619 +#define IDS_DIALOGUE_10620 10620 +#define IDS_DIALOGUE_10621 10621 +#define IDS_DIALOGUE_10622 10622 +#define IDS_DIALOGUE_10623 10623 +#define IDS_DIALOGUE_10624 10624 +#define IDS_DIALOGUE_10625 10625 +#define IDS_DIALOGUE_10626 10626 +#define IDS_DIALOGUE_10627 10627 +#define IDS_DIALOGUE_10628 10628 +#define IDS_DIALOGUE_10629 10629 +#define IDS_DIALOGUE_10630 10630 +#define IDS_DIALOGUE_10631 10631 +#define IDS_DIALOGUE_10632 10632 +#define IDS_DIALOGUE_10633 10633 +#define IDS_DIALOGUE_10634 10634 +#define IDS_DIALOGUE_10635 10635 +#define IDS_DIALOGUE_10636 10636 +#define IDS_DIALOGUE_10637 10637 +#define IDS_DIALOGUE_10638 10638 +#define IDS_DIALOGUE_10639 10639 +#define IDS_DIALOGUE_10640 10640 +#define IDS_DIALOGUE_10641 10641 +#define IDS_DIALOGUE_10642 10642 +#define IDS_DIALOGUE_10643 10643 +#define IDS_DIALOGUE_10644 10644 +#define IDS_DIALOGUE_10645 10645 +#define IDS_DIALOGUE_10646 10646 +#define IDS_DIALOGUE_10647 10647 +#define IDS_DIALOGUE_10648 10648 +#define IDS_DIALOGUE_10649 10649 +#define IDS_DIALOGUE_10650 10650 +#define IDS_DIALOGUE_10651 10651 +#define IDS_DIALOGUE_10652 10652 +#define IDS_DIALOGUE_10653 10653 +#define IDS_DIALOGUE_10654 10654 +#define IDS_DIALOGUE_10655 10655 +#define IDS_DIALOGUE_10656 10656 +#define IDS_DIALOGUE_10657 10657 +#define IDS_DIALOGUE_10658 10658 +#define IDS_DIALOGUE_10659 10659 +#define IDS_DIALOGUE_10660 10660 +#define IDS_DIALOGUE_10661 10661 +#define IDS_DIALOGUE_10662 10662 +#define IDS_DIALOGUE_10663 10663 +#define IDS_DIALOGUE_10664 10664 +#define IDS_DIALOGUE_10665 10665 +#define IDS_DIALOGUE_10666 10666 +#define IDS_DIALOGUE_10667 10667 +#define IDS_DIALOGUE_10668 10668 +#define IDS_DIALOGUE_10669 10669 +#define IDS_DIALOGUE_10670 10670 +#define IDS_DIALOGUE_10671 10671 +#define IDS_DIALOGUE_10672 10672 +#define IDS_DIALOGUE_10673 10673 +#define IDS_DIALOGUE_10674 10674 +#define IDS_DIALOGUE_10675 10675 +#define IDS_DIALOGUE_10676 10676 +#define IDS_DIALOGUE_10677 10677 +#define IDS_DIALOGUE_10678 10678 +#define IDS_DIALOGUE_10679 10679 +#define IDS_DIALOGUE_10680 10680 +#define IDS_DIALOGUE_10681 10681 +#define IDS_DIALOGUE_10682 10682 +#define IDS_DIALOGUE_10683 10683 +#define IDS_DIALOGUE_10684 10684 +#define IDS_DIALOGUE_10685 10685 +#define IDS_DIALOGUE_10686 10686 +#define IDS_DIALOGUE_10687 10687 +#define IDS_DIALOGUE_10688 10688 +#define IDS_DIALOGUE_10689 10689 +#define IDS_DIALOGUE_10690 10690 +#define IDS_DIALOGUE_10691 10691 +#define IDS_DIALOGUE_10692 10692 +#define IDS_DIALOGUE_10693 10693 +#define IDS_DIALOGUE_10694 10694 +#define IDS_DIALOGUE_10695 10695 +#define IDS_DIALOGUE_10696 10696 +#define IDS_DIALOGUE_10697 10697 +#define IDS_DIALOGUE_10698 10698 +#define IDS_DIALOGUE_10699 10699 +#define IDS_DIALOGUE_10700 10700 +#define IDS_DIALOGUE_10701 10701 +#define IDS_DIALOGUE_10702 10702 +#define IDS_DIALOGUE_10703 10703 +#define IDS_DIALOGUE_10704 10704 +#define IDS_DIALOGUE_10705 10705 +#define IDS_DIALOGUE_10706 10706 +#define IDS_DIALOGUE_10707 10707 +#define IDS_DIALOGUE_10708 10708 +#define IDS_DIALOGUE_10709 10709 +#define IDS_DIALOGUE_10710 10710 +#define IDS_DIALOGUE_10711 10711 +#define IDS_DIALOGUE_10712 10712 +#define IDS_DIALOGUE_10713 10713 +#define IDS_DIALOGUE_10714 10714 +#define IDS_DIALOGUE_10715 10715 +#define IDS_DIALOGUE_10716 10716 +#define IDS_DIALOGUE_10717 10717 +#define IDS_DIALOGUE_10718 10718 +#define IDS_DIALOGUE_10719 10719 +#define IDS_DIALOGUE_10720 10720 +#define IDS_DIALOGUE_10721 10721 +#define IDS_DIALOGUE_10722 10722 +#define IDS_DIALOGUE_10723 10723 +#define IDS_DIALOGUE_10724 10724 +#define IDS_DIALOGUE_10725 10725 +#define IDS_DIALOGUE_10726 10726 +#define IDS_DIALOGUE_10727 10727 +#define IDS_DIALOGUE_10728 10728 +#define IDS_DIALOGUE_10729 10729 +#define IDS_DIALOGUE_10730 10730 +#define IDS_DIALOGUE_10731 10731 +#define IDS_DIALOGUE_10732 10732 +#define IDS_DIALOGUE_10733 10733 +#define IDS_DIALOGUE_10734 10734 +#define IDS_DIALOGUE_10735 10735 +#define IDS_DIALOGUE_10736 10736 +#define IDS_DIALOGUE_10737 10737 +#define IDS_DIALOGUE_10738 10738 +#define IDS_DIALOGUE_10739 10739 +#define IDS_DIALOGUE_10740 10740 +#define IDS_DIALOGUE_10741 10741 +#define IDS_DIALOGUE_10742 10742 +#define IDS_DIALOGUE_10743 10743 +#define IDS_DIALOGUE_10744 10744 +#define IDS_DIALOGUE_10745 10745 +#define IDS_DIALOGUE_10746 10746 +#define IDS_DIALOGUE_10747 10747 +#define IDS_DIALOGUE_10748 10748 +#define IDS_DIALOGUE_10749 10749 +#define IDS_DIALOGUE_10750 10750 +#define IDS_DIALOGUE_10751 10751 +#define IDS_DIALOGUE_10752 10752 +#define IDS_DIALOGUE_10753 10753 +#define IDS_DIALOGUE_10754 10754 +#define IDS_DIALOGUE_10755 10755 +#define IDS_DIALOGUE_10756 10756 +#define IDS_DIALOGUE_10757 10757 +#define IDS_DIALOGUE_10758 10758 +#define IDS_DIALOGUE_10759 10759 +#define IDS_DIALOGUE_10760 10760 +#define IDS_DIALOGUE_10761 10761 +#define IDS_DIALOGUE_10762 10762 +#define IDS_DIALOGUE_10763 10763 +#define IDS_DIALOGUE_10764 10764 +#define IDS_DIALOGUE_10765 10765 +#define IDS_DIALOGUE_10766 10766 +#define IDS_DIALOGUE_10767 10767 +#define IDS_DIALOGUE_10768 10768 +#define IDS_DIALOGUE_10769 10769 +#define IDS_DIALOGUE_10770 10770 +#define IDS_DIALOGUE_10771 10771 +#define IDS_DIALOGUE_10772 10772 +#define IDS_DIALOGUE_10773 10773 +#define IDS_DIALOGUE_10774 10774 +#define IDS_DIALOGUE_10775 10775 +#define IDS_DIALOGUE_10776 10776 +#define IDS_DIALOGUE_10777 10777 +#define IDS_DIALOGUE_10778 10778 +#define IDS_DIALOGUE_10779 10779 +#define IDS_DIALOGUE_10780 10780 +#define IDS_DIALOGUE_10781 10781 +#define IDS_DIALOGUE_10782 10782 +#define IDS_DIALOGUE_10783 10783 +#define IDS_DIALOGUE_10784 10784 +#define IDS_DIALOGUE_10785 10785 +#define IDS_DIALOGUE_10786 10786 +#define IDS_DIALOGUE_10787 10787 +#define IDS_DIALOGUE_10788 10788 +#define IDS_DIALOGUE_10789 10789 +#define IDS_DIALOGUE_10790 10790 +#define IDS_DIALOGUE_10791 10791 +#define IDS_DIALOGUE_10792 10792 +#define IDS_DIALOGUE_10793 10793 +#define IDS_DIALOGUE_10794 10794 +#define IDS_DIALOGUE_10795 10795 +#define IDS_DIALOGUE_10796 10796 +#define IDS_DIALOGUE_10797 10797 +#define IDS_DIALOGUE_10798 10798 +#define IDS_DIALOGUE_10799 10799 +#define IDS_DIALOGUE_10800 10800 +#define IDS_DIALOGUE_10801 10801 +#define IDS_DIALOGUE_10802 10802 +#define IDS_DIALOGUE_10803 10803 +#define IDS_DIALOGUE_10804 10804 +#define IDS_DIALOGUE_10805 10805 +#define IDS_DIALOGUE_10806 10806 +#define IDS_DIALOGUE_10807 10807 +#define IDS_DIALOGUE_10808 10808 +#define IDS_DIALOGUE_10809 10809 +#define IDS_DIALOGUE_10810 10810 +#define IDS_DIALOGUE_10811 10811 +#define IDS_DIALOGUE_10812 10812 +#define IDS_DIALOGUE_10813 10813 +#define IDS_DIALOGUE_10814 10814 +#define IDS_DIALOGUE_10815 10815 +#define IDS_DIALOGUE_10816 10816 +#define IDS_DIALOGUE_10817 10817 +#define IDS_DIALOGUE_10818 10818 +#define IDS_DIALOGUE_10819 10819 +#define IDS_DIALOGUE_10820 10820 +#define IDS_DIALOGUE_10821 10821 +#define IDS_DIALOGUE_10822 10822 +#define IDS_DIALOGUE_10823 10823 +#define IDS_DIALOGUE_10824 10824 +#define IDS_DIALOGUE_10825 10825 +#define IDS_DIALOGUE_10826 10826 +#define IDS_DIALOGUE_10827 10827 +#define IDS_DIALOGUE_10828 10828 +#define IDS_DIALOGUE_10829 10829 +#define IDS_DIALOGUE_10830 10830 +#define IDS_DIALOGUE_10831 10831 +#define IDS_DIALOGUE_10832 10832 +#define IDS_DIALOGUE_10833 10833 +#define IDS_DIALOGUE_10834 10834 +#define IDS_DIALOGUE_10835 10835 +#define IDS_DIALOGUE_10836 10836 +#define IDS_DIALOGUE_10837 10837 +#define IDS_DIALOGUE_10838 10838 +#define IDS_DIALOGUE_10839 10839 +#define IDS_DIALOGUE_10840 10840 +#define IDS_DIALOGUE_10841 10841 +#define IDS_DIALOGUE_10842 10842 +#define IDS_DIALOGUE_10843 10843 +#define IDS_DIALOGUE_10844 10844 +#define IDS_DIALOGUE_10845 10845 +#define IDS_DIALOGUE_10846 10846 +#define IDS_DIALOGUE_10847 10847 +#define IDS_DIALOGUE_10848 10848 +#define IDS_DIALOGUE_10849 10849 +#define IDS_DIALOGUE_10850 10850 +#define IDS_DIALOGUE_10851 10851 +#define IDS_DIALOGUE_10852 10852 +#define IDS_DIALOGUE_10853 10853 +#define IDS_DIALOGUE_10854 10854 +#define IDS_DIALOGUE_10855 10855 +#define IDS_DIALOGUE_10856 10856 +#define IDS_DIALOGUE_10857 10857 +#define IDS_DIALOGUE_10858 10858 +#define IDS_DIALOGUE_10859 10859 +#define IDS_DIALOGUE_10860 10860 +#define IDS_DIALOGUE_10861 10861 +#define IDS_DIALOGUE_10862 10862 +#define IDS_DIALOGUE_10863 10863 +#define IDS_DIALOGUE_10864 10864 +#define IDS_DIALOGUE_10865 10865 +#define IDS_DIALOGUE_10866 10866 +#define IDS_DIALOGUE_10867 10867 +#define IDS_DIALOGUE_10868 10868 +#define IDS_DIALOGUE_10869 10869 +#define IDS_DIALOGUE_10870 10870 +#define IDS_DIALOGUE_10871 10871 +#define IDS_DIALOGUE_10872 10872 +#define IDS_DIALOGUE_10873 10873 +#define IDS_DIALOGUE_10874 10874 +#define IDS_DIALOGUE_10875 10875 +#define IDS_DIALOGUE_10876 10876 +#define IDS_DIALOGUE_10877 10877 +#define IDS_DIALOGUE_10878 10878 +#define IDS_DIALOGUE_10879 10879 +#define IDS_DIALOGUE_10880 10880 +#define IDS_DIALOGUE_10881 10881 +#define IDS_DIALOGUE_10882 10882 +#define IDS_DIALOGUE_10883 10883 +#define IDS_DIALOGUE_10884 10884 +#define IDS_DIALOGUE_10885 10885 +#define IDS_DIALOGUE_10886 10886 +#define IDS_DIALOGUE_10887 10887 +#define IDS_DIALOGUE_10888 10888 +#define IDS_DIALOGUE_10889 10889 +#define IDS_DIALOGUE_10890 10890 +#define IDS_DIALOGUE_10891 10891 +#define IDS_DIALOGUE_10892 10892 +#define IDS_DIALOGUE_10893 10893 +#define IDS_DIALOGUE_10894 10894 +#define IDS_DIALOGUE_10895 10895 +#define IDS_DIALOGUE_10896 10896 +#define IDS_DIALOGUE_10897 10897 +#define IDS_DIALOGUE_10898 10898 +#define IDS_DIALOGUE_10899 10899 +#define IDS_DIALOGUE_10900 10900 +#define IDS_DIALOGUE_10901 10901 +#define IDS_DIALOGUE_10902 10902 +#define IDS_DIALOGUE_10903 10903 +#define IDS_DIALOGUE_10904 10904 +#define IDS_DIALOGUE_10905 10905 +#define IDS_DIALOGUE_10906 10906 +#define IDS_DIALOGUE_10907 10907 +#define IDS_DIALOGUE_10908 10908 +#define IDS_DIALOGUE_10909 10909 +#define IDS_DIALOGUE_10910 10910 +#define IDS_DIALOGUE_10911 10911 +#define IDS_DIALOGUE_10912 10912 +#define IDS_DIALOGUE_10913 10913 +#define IDS_DIALOGUE_10914 10914 +#define IDS_DIALOGUE_10915 10915 +#define IDS_DIALOGUE_10916 10916 +#define IDS_DIALOGUE_10917 10917 +#define IDS_DIALOGUE_10918 10918 +#define IDS_DIALOGUE_10919 10919 +#define IDS_DIALOGUE_10920 10920 +#define IDS_DIALOGUE_10921 10921 +#define IDS_DIALOGUE_10922 10922 +#define IDS_DIALOGUE_10923 10923 +#define IDS_DIALOGUE_10924 10924 +#define IDS_DIALOGUE_10925 10925 +#define IDS_DIALOGUE_10926 10926 +#define IDS_DIALOGUE_10927 10927 +#define IDS_DIALOGUE_10928 10928 +#define IDS_DIALOGUE_10929 10929 +#define IDS_DIALOGUE_10930 10930 +#define IDS_DIALOGUE_10931 10931 +#define IDS_DIALOGUE_10932 10932 +#define IDS_DIALOGUE_10933 10933 +#define IDS_DIALOGUE_10934 10934 +#define IDS_DIALOGUE_10935 10935 +#define IDS_DIALOGUE_10936 10936 +#define IDS_DIALOGUE_10937 10937 +#define IDS_DIALOGUE_10938 10938 +#define IDS_DIALOGUE_10939 10939 +#define IDS_DIALOGUE_10940 10940 +#define IDS_DIALOGUE_10941 10941 +#define IDS_DIALOGUE_10942 10942 +#define IDS_DIALOGUE_10943 10943 +#define IDS_DIALOGUE_10944 10944 +#define IDS_DIALOGUE_10945 10945 +#define IDS_DIALOGUE_10946 10946 +#define IDS_DIALOGUE_10947 10947 +#define IDS_DIALOGUE_10948 10948 +#define IDS_DIALOGUE_10949 10949 +#define IDS_DIALOGUE_10950 10950 +#define IDS_DIALOGUE_10951 10951 +#define IDS_DIALOGUE_10952 10952 +#define IDS_DIALOGUE_10953 10953 +#define IDS_DIALOGUE_10954 10954 +#define IDS_DIALOGUE_10955 10955 +#define IDS_DIALOGUE_10956 10956 +#define IDS_DIALOGUE_10957 10957 +#define IDS_DIALOGUE_10958 10958 +#define IDS_DIALOGUE_10959 10959 +#define IDS_DIALOGUE_10960 10960 +#define IDS_DIALOGUE_10961 10961 +#define IDS_DIALOGUE_10962 10962 +#define IDS_DIALOGUE_10963 10963 +#define IDS_DIALOGUE_10964 10964 +#define IDS_DIALOGUE_10965 10965 +#define IDS_DIALOGUE_10966 10966 +#define IDS_DIALOGUE_10967 10967 +#define IDS_DIALOGUE_10968 10968 +#define IDS_DIALOGUE_10969 10969 +#define IDS_DIALOGUE_10970 10970 +#define IDS_DIALOGUE_10971 10971 +#define IDS_DIALOGUE_10972 10972 +#define IDS_DIALOGUE_10973 10973 +#define IDS_DIALOGUE_10974 10974 +#define IDS_DIALOGUE_10975 10975 +#define IDS_DIALOGUE_10976 10976 +#define IDS_DIALOGUE_10977 10977 +#define IDS_DIALOGUE_10978 10978 +#define IDS_DIALOGUE_10979 10979 +#define IDS_DIALOGUE_10980 10980 +#define IDS_DIALOGUE_10981 10981 +#define IDS_DIALOGUE_10982 10982 +#define IDS_DIALOGUE_10983 10983 +#define IDS_DIALOGUE_10984 10984 +#define IDS_DIALOGUE_10985 10985 +#define IDS_DIALOGUE_10986 10986 +#define IDS_DIALOGUE_10987 10987 +#define IDS_DIALOGUE_10988 10988 +#define IDS_DIALOGUE_10989 10989 +#define IDS_DIALOGUE_10990 10990 +#define IDS_DIALOGUE_10991 10991 +#define IDS_DIALOGUE_10992 10992 +#define IDS_DIALOGUE_10993 10993 +#define IDS_DIALOGUE_10994 10994 +#define IDS_DIALOGUE_10995 10995 +#define IDS_DIALOGUE_10996 10996 +#define IDS_DIALOGUE_10997 10997 +#define IDS_DIALOGUE_10998 10998 +#define IDS_DIALOGUE_10999 10999 +#define IDS_DIALOGUE_11000 11000 +#define IDS_DIALOGUE_11001 11001 +#define IDS_DIALOGUE_11002 11002 +#define IDS_DIALOGUE_11003 11003 +#define IDS_DIALOGUE_11004 11004 +#define IDS_DIALOGUE_11005 11005 +#define IDS_DIALOGUE_11006 11006 +#define IDS_DIALOGUE_11007 11007 +#define IDS_DIALOGUE_11008 11008 +#define IDS_DIALOGUE_11009 11009 +#define IDS_DIALOGUE_11010 11010 +#define IDS_DIALOGUE_11011 11011 +#define IDS_DIALOGUE_11012 11012 +#define IDS_DIALOGUE_11013 11013 +#define IDS_DIALOGUE_11014 11014 +#define IDS_DIALOGUE_11015 11015 +#define IDS_DIALOGUE_11016 11016 +#define IDS_DIALOGUE_11017 11017 +#define IDS_DIALOGUE_11018 11018 +#define IDS_DIALOGUE_11019 11019 +#define IDS_DIALOGUE_11020 11020 +#define IDS_DIALOGUE_11021 11021 +#define IDS_DIALOGUE_11022 11022 +#define IDS_DIALOGUE_11023 11023 +#define IDS_DIALOGUE_11024 11024 +#define IDS_DIALOGUE_11025 11025 +#define IDS_DIALOGUE_11026 11026 +#define IDS_DIALOGUE_11027 11027 +#define IDS_DIALOGUE_11028 11028 +#define IDS_DIALOGUE_11029 11029 +#define IDS_DIALOGUE_11030 11030 +#define IDS_DIALOGUE_11031 11031 +#define IDS_DIALOGUE_11032 11032 +#define IDS_DIALOGUE_11033 11033 +#define IDS_DIALOGUE_11034 11034 +#define IDS_DIALOGUE_11035 11035 +#define IDS_DIALOGUE_11036 11036 +#define IDS_DIALOGUE_11037 11037 +#define IDS_DIALOGUE_11038 11038 +#define IDS_DIALOGUE_11039 11039 +#define IDS_DIALOGUE_11040 11040 +#define IDS_DIALOGUE_11041 11041 +#define IDS_DIALOGUE_11042 11042 +#define IDS_DIALOGUE_11043 11043 +#define IDS_DIALOGUE_11044 11044 +#define IDS_DIALOGUE_11045 11045 +#define IDS_DIALOGUE_11046 11046 +#define IDS_DIALOGUE_11047 11047 +#define IDS_DIALOGUE_11048 11048 +#define IDS_DIALOGUE_11049 11049 +#define IDS_DIALOGUE_11050 11050 +#define IDS_DIALOGUE_11051 11051 +#define IDS_DIALOGUE_11052 11052 +#define IDS_DIALOGUE_11053 11053 +#define IDS_DIALOGUE_11054 11054 +#define IDS_DIALOGUE_11055 11055 +#define IDS_DIALOGUE_11056 11056 +#define IDS_DIALOGUE_11057 11057 +#define IDS_DIALOGUE_11058 11058 +#define IDS_DIALOGUE_11059 11059 +#define IDS_DIALOGUE_11060 11060 +#define IDS_DIALOGUE_11061 11061 +#define IDS_DIALOGUE_11062 11062 +#define IDS_DIALOGUE_11063 11063 +#define IDS_DIALOGUE_11064 11064 +#define IDS_DIALOGUE_11065 11065 +#define IDS_DIALOGUE_11066 11066 +#define IDS_DIALOGUE_11067 11067 +#define IDS_DIALOGUE_11068 11068 +#define IDS_DIALOGUE_11069 11069 +#define IDS_DIALOGUE_11070 11070 +#define IDS_DIALOGUE_11071 11071 +#define IDS_DIALOGUE_11072 11072 +#define IDS_DIALOGUE_11073 11073 +#define IDS_DIALOGUE_11074 11074 +#define IDS_DIALOGUE_11075 11075 +#define IDS_DIALOGUE_11076 11076 +#define IDS_DIALOGUE_11077 11077 +#define IDS_DIALOGUE_11078 11078 +#define IDS_DIALOGUE_11079 11079 +#define IDS_DIALOGUE_11080 11080 +#define IDS_DIALOGUE_11081 11081 +#define IDS_DIALOGUE_11082 11082 +#define IDS_DIALOGUE_11083 11083 +#define IDS_DIALOGUE_11084 11084 +#define IDS_DIALOGUE_11085 11085 +#define IDS_DIALOGUE_11086 11086 +#define IDS_DIALOGUE_11087 11087 +#define IDS_DIALOGUE_11088 11088 +#define IDS_DIALOGUE_11089 11089 +#define IDS_DIALOGUE_11090 11090 +#define IDS_DIALOGUE_11091 11091 +#define IDS_DIALOGUE_11092 11092 +#define IDS_DIALOGUE_11093 11093 +#define IDS_DIALOGUE_11094 11094 +#define IDS_DIALOGUE_11095 11095 +#define IDS_DIALOGUE_11096 11096 +#define IDS_DIALOGUE_11097 11097 +#define IDS_DIALOGUE_11098 11098 +#define IDS_DIALOGUE_11099 11099 +#define IDS_DIALOGUE_11100 11100 +#define IDS_DIALOGUE_11101 11101 +#define IDS_DIALOGUE_11102 11102 +#define IDS_DIALOGUE_11103 11103 +#define IDS_DIALOGUE_11104 11104 +#define IDS_DIALOGUE_11105 11105 +#define IDS_DIALOGUE_11106 11106 +#define IDS_DIALOGUE_11107 11107 +#define IDS_DIALOGUE_11108 11108 +#define IDS_DIALOGUE_11109 11109 +#define IDS_DIALOGUE_11110 11110 +#define IDS_DIALOGUE_11111 11111 +#define IDS_DIALOGUE_11112 11112 +#define IDS_DIALOGUE_11113 11113 +#define IDS_DIALOGUE_11114 11114 +#define IDS_DIALOGUE_11115 11115 +#define IDS_DIALOGUE_11116 11116 +#define IDS_DIALOGUE_11117 11117 +#define IDS_DIALOGUE_11118 11118 +#define IDS_DIALOGUE_11119 11119 +#define IDS_DIALOGUE_11120 11120 +#define IDS_DIALOGUE_11121 11121 +#define IDS_DIALOGUE_11122 11122 +#define IDS_DIALOGUE_11123 11123 +#define IDS_DIALOGUE_11124 11124 +#define IDS_DIALOGUE_11125 11125 +#define IDS_DIALOGUE_11126 11126 +#define IDS_DIALOGUE_11127 11127 +#define IDS_DIALOGUE_11128 11128 +#define IDS_DIALOGUE_11129 11129 +#define IDS_DIALOGUE_11130 11130 +#define IDS_DIALOGUE_11131 11131 +#define IDS_DIALOGUE_11132 11132 +#define IDS_DIALOGUE_11133 11133 +#define IDS_DIALOGUE_11134 11134 +#define IDS_DIALOGUE_11135 11135 +#define IDS_DIALOGUE_11136 11136 +#define IDS_DIALOGUE_11137 11137 +#define IDS_DIALOGUE_11138 11138 +#define IDS_DIALOGUE_11139 11139 +#define IDS_DIALOGUE_11140 11140 +#define IDS_DIALOGUE_11141 11141 +#define IDS_DIALOGUE_11142 11142 +#define IDS_DIALOGUE_11143 11143 +#define IDS_DIALOGUE_11144 11144 +#define IDS_DIALOGUE_11145 11145 +#define IDS_DIALOGUE_11146 11146 +#define IDS_DIALOGUE_11147 11147 +#define IDS_DIALOGUE_11148 11148 +#define IDS_DIALOGUE_11149 11149 +#define IDS_DIALOGUE_11150 11150 +#define IDS_DIALOGUE_11151 11151 +#define IDS_DIALOGUE_11152 11152 +#define IDS_DIALOGUE_11153 11153 +#define IDS_DIALOGUE_11154 11154 +#define IDS_DIALOGUE_11155 11155 +#define IDS_DIALOGUE_11156 11156 +#define IDS_DIALOGUE_11157 11157 +#define IDS_DIALOGUE_11158 11158 +#define IDS_DIALOGUE_11159 11159 +#define IDS_DIALOGUE_11160 11160 +#define IDS_DIALOGUE_11161 11161 +#define IDS_DIALOGUE_11162 11162 +#define IDS_DIALOGUE_11163 11163 +#define IDS_DIALOGUE_11164 11164 +#define IDS_DIALOGUE_11165 11165 +#define IDS_DIALOGUE_11166 11166 +#define IDS_DIALOGUE_11167 11167 +#define IDS_DIALOGUE_11168 11168 +#define IDS_DIALOGUE_11169 11169 +#define IDS_DIALOGUE_11170 11170 +#define IDS_DIALOGUE_11171 11171 +#define IDS_DIALOGUE_11172 11172 +#define IDS_DIALOGUE_11173 11173 +#define IDS_DIALOGUE_11174 11174 +#define IDS_DIALOGUE_11175 11175 +#define IDS_DIALOGUE_11176 11176 +#define IDS_DIALOGUE_11177 11177 +#define IDS_DIALOGUE_11178 11178 +#define IDS_DIALOGUE_11179 11179 +#define IDS_DIALOGUE_11180 11180 +#define IDS_DIALOGUE_11181 11181 +#define IDS_DIALOGUE_11182 11182 +#define IDS_DIALOGUE_11183 11183 +#define IDS_DIALOGUE_11184 11184 +#define IDS_DIALOGUE_11185 11185 +#define IDS_DIALOGUE_11186 11186 +#define IDS_DIALOGUE_11187 11187 +#define IDS_DIALOGUE_11188 11188 +#define IDS_DIALOGUE_11189 11189 +#define IDS_DIALOGUE_11190 11190 +#define IDS_DIALOGUE_11191 11191 +#define IDS_DIALOGUE_11192 11192 +#define IDS_DIALOGUE_11193 11193 +#define IDS_DIALOGUE_11194 11194 +#define IDS_DIALOGUE_11195 11195 +#define IDS_DIALOGUE_11196 11196 +#define IDS_DIALOGUE_11197 11197 +#define IDS_DIALOGUE_11198 11198 +#define IDS_DIALOGUE_11199 11199 +#define IDS_DIALOGUE_11200 11200 +#define IDS_DIALOGUE_11201 11201 +#define IDS_DIALOGUE_11202 11202 +#define IDS_DIALOGUE_11203 11203 +#define IDS_DIALOGUE_11204 11204 +#define IDS_DIALOGUE_11205 11205 +#define IDS_DIALOGUE_11206 11206 +#define IDS_DIALOGUE_11207 11207 +#define IDS_DIALOGUE_11208 11208 +#define IDS_DIALOGUE_11209 11209 +#define IDS_DIALOGUE_11210 11210 +#define IDS_DIALOGUE_11211 11211 +#define IDS_DIALOGUE_11212 11212 +#define IDS_DIALOGUE_11213 11213 +#define IDS_DIALOGUE_11214 11214 +#define IDS_DIALOGUE_11215 11215 +#define IDS_DIALOGUE_11216 11216 +#define IDS_DIALOGUE_11217 11217 +#define IDS_DIALOGUE_11218 11218 +#define IDS_DIALOGUE_11219 11219 +#define IDS_DIALOGUE_11220 11220 +#define IDS_DIALOGUE_11221 11221 +#define IDS_DIALOGUE_11222 11222 +#define IDS_DIALOGUE_11223 11223 +#define IDS_DIALOGUE_11224 11224 +#define IDS_DIALOGUE_11225 11225 +#define IDS_DIALOGUE_11226 11226 +#define IDS_DIALOGUE_11227 11227 +#define IDS_DIALOGUE_11228 11228 +#define IDS_DIALOGUE_11229 11229 +#define IDS_DIALOGUE_11230 11230 +#define IDS_DIALOGUE_11231 11231 +#define IDS_DIALOGUE_11232 11232 +#define IDS_DIALOGUE_11233 11233 +#define IDS_DIALOGUE_11234 11234 +#define IDS_DIALOGUE_11235 11235 +#define IDS_DIALOGUE_11236 11236 +#define IDS_DIALOGUE_11237 11237 +#define IDS_DIALOGUE_11238 11238 +#define IDS_DIALOGUE_11239 11239 +#define IDS_DIALOGUE_11240 11240 +#define IDS_DIALOGUE_11241 11241 +#define IDS_DIALOGUE_11242 11242 +#define IDS_DIALOGUE_11243 11243 +#define IDS_DIALOGUE_11244 11244 +#define IDS_DIALOGUE_11245 11245 +#define IDS_DIALOGUE_11246 11246 +#define IDS_DIALOGUE_11247 11247 +#define IDS_DIALOGUE_11248 11248 +#define IDS_DIALOGUE_11249 11249 +#define IDS_DIALOGUE_11250 11250 +#define IDS_DIALOGUE_11251 11251 +#define IDS_DIALOGUE_11252 11252 +#define IDS_DIALOGUE_11253 11253 +#define IDS_DIALOGUE_11254 11254 +#define IDS_DIALOGUE_11255 11255 +#define IDS_DIALOGUE_11256 11256 +#define IDS_DIALOGUE_11257 11257 +#define IDS_DIALOGUE_11258 11258 +#define IDS_DIALOGUE_11259 11259 +#define IDS_DIALOGUE_11260 11260 +#define IDS_DIALOGUE_11261 11261 +#define IDS_DIALOGUE_11262 11262 +#define IDS_DIALOGUE_11263 11263 +#define IDS_DIALOGUE_11264 11264 +#define IDS_DIALOGUE_11265 11265 +#define IDS_DIALOGUE_11266 11266 +#define IDS_DIALOGUE_11267 11267 +#define IDS_DIALOGUE_11268 11268 +#define IDS_DIALOGUE_11269 11269 +#define IDS_DIALOGUE_11270 11270 +#define IDS_DIALOGUE_11271 11271 +#define IDS_DIALOGUE_11272 11272 +#define IDS_DIALOGUE_11273 11273 +#define IDS_DIALOGUE_11274 11274 +#define IDS_DIALOGUE_11275 11275 +#define IDS_DIALOGUE_11276 11276 +#define IDS_DIALOGUE_11277 11277 +#define IDS_DIALOGUE_11278 11278 +#define IDS_DIALOGUE_11279 11279 +#define IDS_DIALOGUE_11280 11280 +#define IDS_DIALOGUE_11281 11281 +#define IDS_DIALOGUE_11282 11282 +#define IDS_DIALOGUE_11283 11283 +#define IDS_DIALOGUE_11284 11284 +#define IDS_DIALOGUE_11285 11285 +#define IDS_DIALOGUE_11286 11286 +#define IDS_DIALOGUE_11287 11287 +#define IDS_DIALOGUE_11288 11288 +#define IDS_DIALOGUE_11289 11289 +#define IDS_DIALOGUE_11290 11290 +#define IDS_DIALOGUE_11291 11291 +#define IDS_DIALOGUE_11292 11292 +#define IDS_DIALOGUE_11293 11293 +#define IDS_DIALOGUE_11294 11294 +#define IDS_DIALOGUE_11295 11295 +#define IDS_DIALOGUE_11296 11296 +#define IDS_DIALOGUE_11297 11297 +#define IDS_DIALOGUE_11298 11298 +#define IDS_DIALOGUE_11299 11299 +#define IDS_DIALOGUE_11300 11300 +#define IDS_DIALOGUE_11301 11301 +#define IDS_DIALOGUE_11302 11302 +#define IDS_DIALOGUE_11303 11303 +#define IDS_DIALOGUE_11304 11304 +#define IDS_DIALOGUE_11305 11305 +#define IDS_DIALOGUE_11306 11306 +#define IDS_DIALOGUE_11307 11307 +#define IDS_DIALOGUE_11308 11308 +#define IDS_DIALOGUE_11309 11309 +#define IDS_DIALOGUE_11310 11310 +#define IDS_DIALOGUE_11311 11311 +#define IDS_DIALOGUE_11312 11312 +#define IDS_DIALOGUE_11313 11313 +#define IDS_DIALOGUE_11314 11314 +#define IDS_DIALOGUE_11315 11315 +#define IDS_DIALOGUE_11316 11316 +#define IDS_DIALOGUE_11317 11317 +#define IDS_DIALOGUE_11318 11318 +#define IDS_DIALOGUE_11319 11319 +#define IDS_DIALOGUE_11320 11320 +#define IDS_DIALOGUE_11321 11321 +#define IDS_DIALOGUE_11322 11322 +#define IDS_DIALOGUE_11323 11323 +#define IDS_DIALOGUE_11324 11324 +#define IDS_DIALOGUE_11325 11325 +#define IDS_DIALOGUE_11326 11326 +#define IDS_DIALOGUE_11327 11327 +#define IDS_DIALOGUE_11328 11328 +#define IDS_DIALOGUE_11329 11329 +#define IDS_DIALOGUE_11330 11330 +#define IDS_DIALOGUE_11331 11331 +#define IDS_DIALOGUE_11332 11332 +#define IDS_DIALOGUE_11333 11333 +#define IDS_DIALOGUE_11334 11334 +#define IDS_DIALOGUE_11335 11335 +#define IDS_DIALOGUE_11336 11336 +#define IDS_DIALOGUE_11337 11337 +#define IDS_DIALOGUE_11338 11338 +#define IDS_DIALOGUE_11339 11339 +#define IDS_DIALOGUE_11340 11340 +#define IDS_DIALOGUE_11341 11341 +#define IDS_DIALOGUE_11342 11342 +#define IDS_DIALOGUE_11343 11343 +#define IDS_DIALOGUE_11344 11344 +#define IDS_DIALOGUE_11345 11345 +#define IDS_DIALOGUE_11346 11346 +#define IDS_DIALOGUE_11347 11347 +#define IDS_DIALOGUE_11348 11348 +#define IDS_DIALOGUE_11349 11349 +#define IDS_DIALOGUE_11350 11350 +#define IDS_DIALOGUE_11351 11351 +#define IDS_DIALOGUE_11352 11352 +#define IDS_DIALOGUE_11353 11353 +#define IDS_DIALOGUE_11354 11354 +#define IDS_DIALOGUE_11355 11355 +#define IDS_DIALOGUE_11356 11356 +#define IDS_DIALOGUE_11357 11357 +#define IDS_DIALOGUE_11358 11358 +#define IDS_DIALOGUE_11359 11359 +#define IDS_DIALOGUE_11360 11360 +#define IDS_DIALOGUE_11361 11361 +#define IDS_DIALOGUE_11362 11362 +#define IDS_DIALOGUE_11363 11363 +#define IDS_DIALOGUE_11364 11364 +#define IDS_DIALOGUE_11365 11365 +#define IDS_DIALOGUE_11366 11366 +#define IDS_DIALOGUE_11367 11367 +#define IDS_DIALOGUE_11368 11368 +#define IDS_DIALOGUE_11369 11369 +#define IDS_DIALOGUE_11370 11370 +#define IDS_DIALOGUE_11371 11371 +#define IDS_DIALOGUE_11372 11372 +#define IDS_DIALOGUE_11373 11373 +#define IDS_DIALOGUE_11374 11374 +#define IDS_DIALOGUE_11375 11375 +#define IDS_DIALOGUE_11376 11376 +#define IDS_DIALOGUE_11377 11377 +#define IDS_DIALOGUE_11378 11378 +#define IDS_DIALOGUE_11379 11379 +#define IDS_DIALOGUE_11380 11380 +#define IDS_DIALOGUE_11381 11381 +#define IDS_DIALOGUE_11382 11382 +#define IDS_DIALOGUE_11383 11383 +#define IDS_DIALOGUE_11384 11384 +#define IDS_DIALOGUE_11385 11385 +#define IDS_DIALOGUE_11386 11386 +#define IDS_DIALOGUE_11387 11387 +#define IDS_DIALOGUE_11388 11388 +#define IDS_DIALOGUE_11389 11389 +#define IDS_DIALOGUE_11390 11390 +#define IDS_DIALOGUE_11391 11391 +#define IDS_DIALOGUE_11392 11392 +#define IDS_DIALOGUE_11393 11393 +#define IDS_DIALOGUE_11394 11394 +#define IDS_DIALOGUE_11395 11395 +#define IDS_DIALOGUE_11396 11396 +#define IDS_DIALOGUE_11397 11397 +#define IDS_DIALOGUE_11398 11398 +#define IDS_DIALOGUE_11399 11399 +#define IDS_DIALOGUE_11400 11400 +#define IDS_DIALOGUE_11401 11401 +#define IDS_DIALOGUE_11402 11402 +#define IDS_DIALOGUE_11403 11403 +#define IDS_DIALOGUE_11404 11404 +#define IDS_DIALOGUE_11405 11405 +#define IDS_DIALOGUE_11406 11406 +#define IDS_DIALOGUE_11407 11407 +#define IDS_DIALOGUE_11408 11408 +#define IDS_DIALOGUE_11409 11409 +#define IDS_DIALOGUE_11410 11410 +#define IDS_DIALOGUE_11411 11411 +#define IDS_DIALOGUE_11412 11412 +#define IDS_DIALOGUE_11413 11413 +#define IDS_DIALOGUE_11414 11414 +#define IDS_DIALOGUE_11415 11415 +#define IDS_DIALOGUE_11416 11416 +#define IDS_DIALOGUE_11417 11417 +#define IDS_DIALOGUE_11418 11418 +#define IDS_DIALOGUE_11419 11419 +#define IDS_DIALOGUE_11420 11420 +#define IDS_DIALOGUE_11421 11421 +#define IDS_DIALOGUE_11422 11422 +#define IDS_DIALOGUE_11423 11423 +#define IDS_DIALOGUE_11424 11424 +#define IDS_DIALOGUE_11425 11425 +#define IDS_DIALOGUE_11426 11426 +#define IDS_DIALOGUE_11427 11427 +#define IDS_DIALOGUE_11428 11428 +#define IDS_DIALOGUE_11429 11429 +#define IDS_DIALOGUE_11430 11430 +#define IDS_DIALOGUE_11431 11431 +#define IDS_DIALOGUE_11432 11432 +#define IDS_DIALOGUE_11433 11433 +#define IDS_DIALOGUE_11434 11434 +#define IDS_DIALOGUE_11435 11435 +#define IDS_DIALOGUE_11436 11436 +#define IDS_DIALOGUE_11437 11437 +#define IDS_DIALOGUE_11438 11438 +#define IDS_DIALOGUE_11439 11439 +#define IDS_DIALOGUE_11440 11440 +#define IDS_DIALOGUE_11441 11441 +#define IDS_DIALOGUE_11442 11442 +#define IDS_DIALOGUE_11443 11443 +#define IDS_DIALOGUE_11444 11444 +#define IDS_DIALOGUE_11445 11445 +#define IDS_DIALOGUE_11446 11446 +#define IDS_DIALOGUE_11447 11447 +#define IDS_DIALOGUE_11448 11448 +#define IDS_DIALOGUE_11449 11449 +#define IDS_DIALOGUE_11450 11450 +#define IDS_DIALOGUE_11451 11451 +#define IDS_DIALOGUE_11452 11452 +#define IDS_DIALOGUE_11453 11453 +#define IDS_DIALOGUE_11454 11454 +#define IDS_DIALOGUE_11455 11455 +#define IDS_DIALOGUE_11456 11456 +#define IDS_DIALOGUE_11457 11457 +#define IDS_DIALOGUE_11458 11458 +#define IDS_DIALOGUE_11459 11459 +#define IDS_DIALOGUE_11460 11460 +#define IDS_DIALOGUE_11461 11461 +#define IDS_DIALOGUE_11462 11462 +#define IDS_DIALOGUE_11463 11463 +#define IDS_DIALOGUE_11464 11464 +#define IDS_DIALOGUE_11465 11465 +#define IDS_DIALOGUE_11466 11466 +#define IDS_DIALOGUE_11467 11467 +#define IDS_DIALOGUE_11468 11468 +#define IDS_DIALOGUE_11469 11469 +#define IDS_DIALOGUE_11470 11470 +#define IDS_DIALOGUE_11471 11471 +#define IDS_DIALOGUE_11472 11472 +#define IDS_DIALOGUE_11473 11473 +#define IDS_DIALOGUE_11474 11474 +#define IDS_DIALOGUE_11475 11475 +#define IDS_DIALOGUE_11476 11476 +#define IDS_DIALOGUE_11477 11477 +#define IDS_DIALOGUE_11478 11478 +#define IDS_DIALOGUE_11479 11479 +#define IDS_DIALOGUE_11480 11480 +#define IDS_DIALOGUE_11481 11481 +#define IDS_DIALOGUE_11482 11482 +#define IDS_DIALOGUE_11483 11483 +#define IDS_DIALOGUE_11484 11484 +#define IDS_DIALOGUE_11485 11485 +#define IDS_DIALOGUE_11486 11486 +#define IDS_DIALOGUE_11487 11487 +#define IDS_DIALOGUE_11488 11488 +#define IDS_DIALOGUE_11489 11489 +#define IDS_DIALOGUE_11490 11490 +#define IDS_DIALOGUE_11491 11491 +#define IDS_DIALOGUE_11492 11492 +#define IDS_DIALOGUE_11493 11493 +#define IDS_DIALOGUE_11494 11494 +#define IDS_DIALOGUE_11495 11495 +#define IDS_DIALOGUE_11496 11496 +#define IDS_DIALOGUE_11497 11497 +#define IDS_DIALOGUE_11498 11498 +#define IDS_DIALOGUE_11499 11499 +#define IDS_DIALOGUE_11500 11500 +#define IDS_DIALOGUE_11501 11501 +#define IDS_DIALOGUE_11502 11502 +#define IDS_DIALOGUE_11503 11503 +#define IDS_DIALOGUE_11504 11504 +#define IDS_DIALOGUE_11505 11505 +#define IDS_DIALOGUE_11506 11506 +#define IDS_DIALOGUE_11507 11507 +#define IDS_DIALOGUE_11508 11508 +#define IDS_DIALOGUE_11509 11509 +#define IDS_DIALOGUE_11510 11510 +#define IDS_DIALOGUE_11511 11511 +#define IDS_DIALOGUE_11512 11512 +#define IDS_DIALOGUE_11513 11513 +#define IDS_DIALOGUE_11514 11514 +#define IDS_DIALOGUE_11515 11515 +#define IDS_DIALOGUE_11516 11516 +#define IDS_DIALOGUE_11517 11517 +#define IDS_DIALOGUE_11518 11518 +#define IDS_DIALOGUE_11519 11519 +#define IDS_DIALOGUE_11520 11520 +#define IDS_DIALOGUE_11521 11521 +#define IDS_DIALOGUE_11522 11522 +#define IDS_DIALOGUE_11523 11523 +#define IDS_DIALOGUE_11524 11524 +#define IDS_DIALOGUE_11525 11525 +#define IDS_DIALOGUE_11526 11526 +#define IDS_DIALOGUE_11527 11527 +#define IDS_DIALOGUE_11528 11528 +#define IDS_DIALOGUE_11529 11529 +#define IDS_DIALOGUE_11530 11530 +#define IDS_DIALOGUE_11531 11531 +#define IDS_DIALOGUE_11532 11532 +#define IDS_DIALOGUE_11533 11533 +#define IDS_DIALOGUE_11534 11534 +#define IDS_DIALOGUE_11535 11535 +#define IDS_DIALOGUE_11536 11536 +#define IDS_DIALOGUE_11537 11537 +#define IDS_DIALOGUE_11538 11538 +#define IDS_DIALOGUE_11539 11539 +#define IDS_DIALOGUE_11540 11540 +#define IDS_DIALOGUE_11541 11541 +#define IDS_DIALOGUE_11542 11542 +#define IDS_DIALOGUE_11543 11543 +#define IDS_DIALOGUE_11544 11544 +#define IDS_DIALOGUE_11545 11545 +#define IDS_DIALOGUE_11546 11546 +#define IDS_DIALOGUE_11547 11547 +#define IDS_DIALOGUE_11548 11548 +#define IDS_DIALOGUE_11549 11549 +#define IDS_DIALOGUE_11550 11550 +#define IDS_DIALOGUE_11551 11551 +#define IDS_DIALOGUE_11552 11552 +#define IDS_DIALOGUE_11553 11553 +#define IDS_DIALOGUE_11554 11554 +#define IDS_DIALOGUE_11555 11555 +#define IDS_DIALOGUE_11556 11556 +#define IDS_DIALOGUE_11557 11557 +#define IDS_DIALOGUE_11558 11558 +#define IDS_DIALOGUE_11559 11559 +#define IDS_DIALOGUE_11560 11560 +#define IDS_DIALOGUE_11561 11561 +#define IDS_DIALOGUE_11562 11562 +#define IDS_DIALOGUE_11563 11563 +#define IDS_DIALOGUE_11564 11564 +#define IDS_DIALOGUE_11565 11565 +#define IDS_DIALOGUE_11566 11566 +#define IDS_DIALOGUE_11567 11567 +#define IDS_DIALOGUE_11568 11568 +#define IDS_DIALOGUE_11569 11569 +#define IDS_DIALOGUE_11570 11570 +#define IDS_DIALOGUE_11571 11571 +#define IDS_DIALOGUE_11572 11572 +#define IDS_DIALOGUE_11573 11573 +#define IDS_DIALOGUE_11574 11574 +#define IDS_DIALOGUE_11575 11575 +#define IDS_DIALOGUE_11576 11576 +#define IDS_DIALOGUE_11577 11577 +#define IDS_DIALOGUE_11578 11578 +#define IDS_DIALOGUE_11579 11579 +#define IDS_DIALOGUE_11580 11580 +#define IDS_DIALOGUE_11581 11581 +#define IDS_DIALOGUE_11582 11582 +#define IDS_DIALOGUE_11583 11583 +#define IDS_DIALOGUE_11584 11584 +#define IDS_DIALOGUE_11585 11585 +#define IDS_DIALOGUE_11586 11586 +#define IDS_DIALOGUE_11587 11587 +#define IDS_DIALOGUE_11588 11588 +#define IDS_DIALOGUE_11589 11589 +#define IDS_DIALOGUE_11590 11590 +#define IDS_DIALOGUE_11591 11591 +#define IDS_DIALOGUE_11592 11592 +#define IDS_DIALOGUE_11593 11593 +#define IDS_DIALOGUE_11594 11594 +#define IDS_DIALOGUE_11595 11595 +#define IDS_DIALOGUE_11596 11596 +#define IDS_DIALOGUE_11597 11597 +#define IDS_DIALOGUE_11598 11598 +#define IDS_DIALOGUE_11599 11599 +#define IDS_DIALOGUE_11600 11600 +#define IDS_DIALOGUE_11601 11601 +#define IDS_DIALOGUE_11602 11602 +#define IDS_DIALOGUE_11603 11603 +#define IDS_DIALOGUE_11604 11604 +#define IDS_DIALOGUE_11605 11605 +#define IDS_DIALOGUE_11606 11606 +#define IDS_DIALOGUE_11607 11607 +#define IDS_DIALOGUE_11608 11608 +#define IDS_DIALOGUE_11609 11609 +#define IDS_DIALOGUE_11610 11610 +#define IDS_DIALOGUE_11611 11611 +#define IDS_DIALOGUE_11612 11612 +#define IDS_DIALOGUE_11613 11613 +#define IDS_DIALOGUE_11614 11614 +#define IDS_DIALOGUE_11615 11615 +#define IDS_DIALOGUE_11616 11616 +#define IDS_DIALOGUE_11617 11617 +#define IDS_DIALOGUE_11618 11618 +#define IDS_DIALOGUE_11619 11619 +#define IDS_DIALOGUE_11620 11620 +#define IDS_DIALOGUE_11621 11621 +#define IDS_DIALOGUE_11622 11622 +#define IDS_DIALOGUE_11623 11623 +#define IDS_DIALOGUE_11624 11624 +#define IDS_DIALOGUE_11625 11625 +#define IDS_DIALOGUE_11626 11626 +#define IDS_DIALOGUE_11627 11627 +#define IDS_DIALOGUE_11628 11628 +#define IDS_DIALOGUE_11629 11629 +#define IDS_DIALOGUE_11630 11630 +#define IDS_DIALOGUE_11631 11631 +#define IDS_DIALOGUE_11632 11632 +#define IDS_DIALOGUE_11633 11633 +#define IDS_DIALOGUE_11634 11634 +#define IDS_DIALOGUE_11635 11635 +#define IDS_DIALOGUE_11636 11636 +#define IDS_DIALOGUE_11637 11637 +#define IDS_DIALOGUE_11638 11638 +#define IDS_DIALOGUE_11639 11639 +#define IDS_DIALOGUE_11640 11640 +#define IDS_DIALOGUE_11641 11641 +#define IDS_DIALOGUE_11642 11642 +#define IDS_DIALOGUE_11643 11643 +#define IDS_DIALOGUE_11644 11644 +#define IDS_DIALOGUE_11645 11645 +#define IDS_DIALOGUE_11646 11646 +#define IDS_DIALOGUE_11647 11647 +#define IDS_DIALOGUE_11648 11648 +#define IDS_DIALOGUE_11649 11649 +#define IDS_DIALOGUE_11650 11650 +#define IDS_DIALOGUE_11651 11651 +#define IDS_DIALOGUE_11652 11652 +#define IDS_DIALOGUE_11653 11653 +#define IDS_DIALOGUE_11654 11654 +#define IDS_DIALOGUE_11655 11655 +#define IDS_DIALOGUE_11656 11656 +#define IDS_DIALOGUE_11657 11657 +#define IDS_DIALOGUE_11658 11658 +#define IDS_DIALOGUE_11659 11659 +#define IDS_DIALOGUE_11660 11660 +#define IDS_DIALOGUE_11661 11661 +#define IDS_DIALOGUE_11662 11662 +#define IDS_DIALOGUE_11663 11663 +#define IDS_DIALOGUE_11664 11664 +#define IDS_DIALOGUE_11665 11665 +#define IDS_DIALOGUE_11666 11666 +#define IDS_DIALOGUE_11667 11667 +#define IDS_DIALOGUE_11668 11668 +#define IDS_DIALOGUE_11669 11669 +#define IDS_DIALOGUE_11670 11670 +#define IDS_DIALOGUE_11671 11671 +#define IDS_DIALOGUE_11672 11672 +#define IDS_DIALOGUE_11673 11673 +#define IDS_DIALOGUE_11674 11674 +#define IDS_DIALOGUE_11675 11675 +#define IDS_DIALOGUE_11676 11676 +#define IDS_DIALOGUE_11677 11677 +#define IDS_DIALOGUE_11678 11678 +#define IDS_DIALOGUE_11679 11679 +#define IDS_DIALOGUE_11680 11680 +#define IDS_DIALOGUE_11681 11681 +#define IDS_DIALOGUE_11682 11682 +#define IDS_DIALOGUE_11683 11683 +#define IDS_DIALOGUE_11684 11684 +#define IDS_DIALOGUE_11685 11685 +#define IDS_DIALOGUE_11686 11686 +#define IDS_DIALOGUE_11687 11687 +#define IDS_DIALOGUE_11688 11688 +#define IDS_DIALOGUE_11689 11689 +#define IDS_DIALOGUE_11690 11690 +#define IDS_DIALOGUE_11691 11691 +#define IDS_DIALOGUE_11692 11692 +#define IDS_DIALOGUE_11693 11693 +#define IDS_DIALOGUE_11694 11694 +#define IDS_DIALOGUE_11695 11695 +#define IDS_DIALOGUE_11696 11696 +#define IDS_DIALOGUE_11697 11697 +#define IDS_DIALOGUE_11698 11698 +#define IDS_DIALOGUE_11699 11699 +#define IDS_DIALOGUE_11700 11700 +#define IDS_DIALOGUE_11701 11701 +#define IDS_DIALOGUE_11702 11702 +#define IDS_DIALOGUE_11703 11703 +#define IDS_DIALOGUE_11704 11704 +#define IDS_DIALOGUE_11705 11705 +#define IDS_DIALOGUE_11706 11706 +#define IDS_DIALOGUE_11707 11707 +#define IDS_DIALOGUE_11708 11708 +#define IDS_DIALOGUE_11709 11709 +#define IDS_DIALOGUE_11710 11710 +#define IDS_DIALOGUE_11711 11711 +#define IDS_DIALOGUE_11712 11712 +#define IDS_DIALOGUE_11713 11713 +#define IDS_DIALOGUE_11714 11714 +#define IDS_DIALOGUE_11715 11715 +#define IDS_DIALOGUE_11716 11716 +#define IDS_DIALOGUE_11717 11717 +#define IDS_DIALOGUE_11718 11718 +#define IDS_DIALOGUE_11719 11719 +#define IDS_DIALOGUE_11720 11720 +#define IDS_DIALOGUE_11721 11721 +#define IDS_DIALOGUE_11722 11722 +#define IDS_DIALOGUE_11723 11723 +#define IDS_DIALOGUE_11724 11724 +#define IDS_DIALOGUE_11725 11725 +#define IDS_DIALOGUE_11726 11726 +#define IDS_DIALOGUE_11727 11727 +#define IDS_DIALOGUE_11728 11728 +#define IDS_DIALOGUE_11729 11729 +#define IDS_DIALOGUE_11730 11730 +#define IDS_DIALOGUE_11731 11731 +#define IDS_DIALOGUE_11732 11732 +#define IDS_DIALOGUE_11733 11733 +#define IDS_DIALOGUE_11734 11734 +#define IDS_DIALOGUE_11735 11735 +#define IDS_DIALOGUE_11736 11736 +#define IDS_DIALOGUE_11737 11737 +#define IDS_DIALOGUE_11738 11738 +#define IDS_DIALOGUE_11739 11739 +#define IDS_DIALOGUE_11740 11740 +#define IDS_DIALOGUE_11741 11741 +#define IDS_DIALOGUE_11742 11742 +#define IDS_DIALOGUE_11743 11743 +#define IDS_DIALOGUE_11744 11744 +#define IDS_DIALOGUE_11745 11745 +#define IDS_DIALOGUE_11746 11746 +#define IDS_DIALOGUE_11747 11747 +#define IDS_DIALOGUE_11748 11748 +#define IDS_DIALOGUE_11749 11749 +#define IDS_DIALOGUE_11750 11750 +#define IDS_DIALOGUE_11751 11751 +#define IDS_DIALOGUE_11752 11752 +#define IDS_DIALOGUE_11753 11753 +#define IDS_DIALOGUE_11754 11754 +#define IDS_DIALOGUE_11755 11755 +#define IDS_DIALOGUE_11756 11756 +#define IDS_DIALOGUE_11757 11757 +#define IDS_DIALOGUE_11758 11758 +#define IDS_DIALOGUE_11759 11759 +#define IDS_DIALOGUE_11760 11760 +#define IDS_DIALOGUE_11761 11761 +#define IDS_DIALOGUE_11762 11762 +#define IDS_DIALOGUE_11763 11763 +#define IDS_DIALOGUE_11764 11764 +#define IDS_DIALOGUE_11765 11765 +#define IDS_DIALOGUE_11766 11766 +#define IDS_DIALOGUE_11767 11767 +#define IDS_DIALOGUE_11768 11768 +#define IDS_DIALOGUE_11769 11769 +#define IDS_DIALOGUE_11770 11770 +#define IDS_DIALOGUE_11771 11771 +#define IDS_DIALOGUE_11772 11772 +#define IDS_DIALOGUE_11773 11773 +#define IDS_DIALOGUE_11774 11774 +#define IDS_DIALOGUE_11775 11775 +#define IDS_DIALOGUE_11776 11776 +#define IDS_DIALOGUE_11777 11777 +#define IDS_DIALOGUE_11778 11778 +#define IDS_DIALOGUE_11779 11779 +#define IDS_DIALOGUE_11780 11780 +#define IDS_DIALOGUE_11781 11781 +#define IDS_DIALOGUE_11782 11782 +#define IDS_DIALOGUE_11783 11783 +#define IDS_DIALOGUE_11784 11784 +#define IDS_DIALOGUE_11785 11785 +#define IDS_DIALOGUE_11786 11786 +#define IDS_DIALOGUE_11787 11787 +#define IDS_DIALOGUE_11788 11788 +#define IDS_DIALOGUE_11789 11789 +#define IDS_DIALOGUE_11790 11790 +#define IDS_DIALOGUE_11791 11791 +#define IDS_DIALOGUE_11792 11792 +#define IDS_DIALOGUE_11793 11793 +#define IDS_DIALOGUE_11794 11794 +#define IDS_DIALOGUE_11795 11795 +#define IDS_DIALOGUE_11796 11796 +#define IDS_DIALOGUE_11797 11797 +#define IDS_DIALOGUE_11798 11798 +#define IDS_DIALOGUE_11799 11799 +#define IDS_DIALOGUE_11800 11800 +#define IDS_DIALOGUE_11801 11801 +#define IDS_DIALOGUE_11802 11802 +#define IDS_DIALOGUE_11803 11803 +#define IDS_DIALOGUE_11804 11804 +#define IDS_DIALOGUE_11805 11805 +#define IDS_DIALOGUE_11806 11806 +#define IDS_DIALOGUE_11807 11807 +#define IDS_DIALOGUE_11808 11808 +#define IDS_DIALOGUE_11809 11809 +#define IDS_DIALOGUE_11810 11810 +#define IDS_DIALOGUE_11811 11811 +#define IDS_DIALOGUE_11812 11812 +#define IDS_DIALOGUE_11813 11813 +#define IDS_DIALOGUE_11814 11814 +#define IDS_DIALOGUE_11815 11815 +#define IDS_DIALOGUE_11816 11816 +#define IDS_DIALOGUE_11817 11817 +#define IDS_DIALOGUE_11818 11818 +#define IDS_DIALOGUE_11819 11819 +#define IDS_DIALOGUE_11820 11820 +#define IDS_DIALOGUE_11821 11821 +#define IDS_DIALOGUE_11822 11822 +#define IDS_DIALOGUE_11823 11823 +#define IDS_DIALOGUE_11824 11824 +#define IDS_DIALOGUE_11825 11825 +#define IDS_DIALOGUE_11826 11826 +#define IDS_DIALOGUE_11827 11827 +#define IDS_DIALOGUE_11828 11828 +#define IDS_DIALOGUE_11829 11829 +#define IDS_DIALOGUE_11830 11830 +#define IDS_DIALOGUE_11831 11831 +#define IDS_DIALOGUE_11832 11832 +#define IDS_DIALOGUE_11833 11833 +#define IDS_DIALOGUE_11834 11834 +#define IDS_DIALOGUE_11835 11835 +#define IDS_DIALOGUE_11836 11836 +#define IDS_DIALOGUE_11837 11837 +#define IDS_DIALOGUE_11838 11838 +#define IDS_DIALOGUE_11839 11839 +#define IDS_DIALOGUE_11840 11840 +#define IDS_DIALOGUE_11841 11841 +#define IDS_DIALOGUE_11842 11842 +#define IDS_DIALOGUE_11843 11843 +#define IDS_DIALOGUE_11844 11844 +#define IDS_DIALOGUE_11845 11845 +#define IDS_DIALOGUE_11846 11846 +#define IDS_DIALOGUE_11847 11847 +#define IDS_DIALOGUE_11848 11848 +#define IDS_DIALOGUE_11849 11849 +#define IDS_DIALOGUE_11850 11850 +#define IDS_DIALOGUE_11851 11851 +#define IDS_DIALOGUE_11852 11852 +#define IDS_DIALOGUE_11853 11853 +#define IDS_DIALOGUE_11854 11854 +#define IDS_DIALOGUE_11855 11855 +#define IDS_DIALOGUE_11856 11856 +#define IDS_DIALOGUE_11857 11857 +#define IDS_DIALOGUE_11858 11858 +#define IDS_DIALOGUE_11859 11859 +#define IDS_DIALOGUE_11860 11860 +#define IDS_DIALOGUE_11861 11861 +#define IDS_DIALOGUE_11862 11862 +#define IDS_DIALOGUE_11863 11863 +#define IDS_DIALOGUE_11864 11864 +#define IDS_DIALOGUE_11865 11865 +#define IDS_DIALOGUE_11866 11866 +#define IDS_DIALOGUE_11867 11867 +#define IDS_DIALOGUE_11868 11868 +#define IDS_DIALOGUE_11869 11869 +#define IDS_DIALOGUE_11870 11870 +#define IDS_DIALOGUE_11871 11871 +#define IDS_DIALOGUE_11872 11872 +#define IDS_DIALOGUE_11873 11873 +#define IDS_DIALOGUE_11874 11874 +#define IDS_DIALOGUE_11875 11875 +#define IDS_DIALOGUE_11876 11876 +#define IDS_DIALOGUE_11877 11877 +#define IDS_DIALOGUE_11878 11878 +#define IDS_DIALOGUE_11879 11879 +#define IDS_DIALOGUE_11880 11880 +#define IDS_DIALOGUE_11881 11881 +#define IDS_DIALOGUE_11882 11882 +#define IDS_DIALOGUE_11883 11883 +#define IDS_DIALOGUE_11884 11884 +#define IDS_DIALOGUE_11885 11885 +#define IDS_DIALOGUE_11886 11886 +#define IDS_DIALOGUE_11887 11887 +#define IDS_DIALOGUE_11888 11888 +#define IDS_DIALOGUE_11889 11889 +#define IDS_DIALOGUE_11890 11890 +#define IDS_DIALOGUE_11891 11891 +#define IDS_DIALOGUE_11892 11892 +#define IDS_DIALOGUE_11893 11893 +#define IDS_DIALOGUE_11894 11894 +#define IDS_DIALOGUE_11895 11895 +#define IDS_DIALOGUE_11896 11896 +#define IDS_DIALOGUE_11897 11897 +#define IDS_DIALOGUE_11898 11898 +#define IDS_DIALOGUE_11899 11899 +#define IDS_DIALOGUE_11900 11900 +#define IDS_DIALOGUE_11901 11901 +#define IDS_DIALOGUE_11902 11902 +#define IDS_DIALOGUE_11903 11903 +#define IDS_DIALOGUE_11904 11904 +#define IDS_DIALOGUE_11905 11905 +#define IDS_DIALOGUE_11906 11906 +#define IDS_DIALOGUE_11907 11907 +#define IDS_DIALOGUE_11908 11908 +#define IDS_DIALOGUE_11909 11909 +#define IDS_DIALOGUE_11910 11910 +#define IDS_DIALOGUE_11911 11911 +#define IDS_DIALOGUE_11912 11912 +#define IDS_DIALOGUE_11913 11913 +#define IDS_DIALOGUE_11914 11914 +#define IDS_DIALOGUE_11915 11915 +#define IDS_DIALOGUE_11916 11916 +#define IDS_DIALOGUE_11917 11917 +#define IDS_DIALOGUE_11918 11918 +#define IDS_DIALOGUE_11919 11919 +#define IDS_DIALOGUE_11920 11920 +#define IDS_DIALOGUE_11921 11921 +#define IDS_DIALOGUE_11922 11922 +#define IDS_DIALOGUE_11923 11923 +#define IDS_DIALOGUE_11924 11924 +#define IDS_DIALOGUE_11925 11925 +#define IDS_DIALOGUE_11926 11926 +#define IDS_DIALOGUE_11927 11927 +#define IDS_DIALOGUE_11928 11928 +#define IDS_DIALOGUE_11929 11929 +#define IDS_DIALOGUE_11930 11930 +#define IDS_DIALOGUE_11931 11931 +#define IDS_DIALOGUE_11932 11932 +#define IDS_DIALOGUE_11933 11933 +#define IDS_DIALOGUE_11934 11934 +#define IDS_DIALOGUE_11935 11935 +#define IDS_DIALOGUE_11936 11936 +#define IDS_DIALOGUE_11937 11937 +#define IDS_DIALOGUE_11938 11938 +#define IDS_DIALOGUE_11939 11939 +#define IDS_DIALOGUE_11940 11940 +#define IDS_DIALOGUE_11941 11941 +#define IDS_DIALOGUE_11942 11942 +#define IDS_DIALOGUE_11943 11943 +#define IDS_DIALOGUE_11944 11944 +#define IDS_DIALOGUE_11945 11945 +#define IDS_DIALOGUE_11946 11946 +#define IDS_DIALOGUE_11947 11947 +#define IDS_DIALOGUE_11948 11948 +#define IDS_DIALOGUE_11949 11949 +#define IDS_DIALOGUE_11950 11950 +#define IDS_DIALOGUE_11951 11951 +#define IDS_DIALOGUE_11952 11952 +#define IDS_DIALOGUE_11953 11953 +#define IDS_DIALOGUE_11954 11954 +#define IDS_DIALOGUE_11955 11955 +#define IDS_DIALOGUE_11956 11956 +#define IDS_DIALOGUE_11957 11957 +#define IDS_DIALOGUE_11958 11958 +#define IDS_DIALOGUE_11959 11959 +#define IDS_DIALOGUE_11960 11960 +#define IDS_DIALOGUE_11961 11961 +#define IDS_DIALOGUE_11962 11962 +#define IDS_DIALOGUE_11963 11963 +#define IDS_DIALOGUE_11964 11964 +#define IDS_DIALOGUE_11965 11965 +#define IDS_DIALOGUE_11966 11966 +#define IDS_DIALOGUE_11967 11967 +#define IDS_DIALOGUE_11968 11968 +#define IDS_DIALOGUE_11969 11969 +#define IDS_DIALOGUE_11970 11970 +#define IDS_DIALOGUE_11971 11971 +#define IDS_DIALOGUE_11972 11972 +#define IDS_DIALOGUE_11973 11973 +#define IDS_DIALOGUE_11974 11974 +#define IDS_DIALOGUE_11975 11975 +#define IDS_DIALOGUE_11976 11976 +#define IDS_DIALOGUE_11977 11977 +#define IDS_DIALOGUE_11978 11978 +#define IDS_DIALOGUE_11979 11979 +#define IDS_DIALOGUE_11980 11980 +#define IDS_DIALOGUE_11981 11981 +#define IDS_DIALOGUE_11982 11982 +#define IDS_DIALOGUE_11983 11983 +#define IDS_DIALOGUE_11984 11984 +#define IDS_DIALOGUE_11985 11985 +#define IDS_DIALOGUE_11986 11986 +#define IDS_DIALOGUE_11987 11987 +#define IDS_DIALOGUE_11988 11988 +#define IDS_DIALOGUE_11989 11989 +#define IDS_DIALOGUE_11990 11990 +#define IDS_DIALOGUE_11991 11991 +#define IDS_DIALOGUE_11992 11992 +#define IDS_DIALOGUE_11993 11993 +#define IDS_DIALOGUE_11994 11994 +#define IDS_DIALOGUE_11995 11995 +#define IDS_DIALOGUE_11996 11996 +#define IDS_DIALOGUE_11997 11997 +#define IDS_DIALOGUE_11998 11998 +#define IDS_DIALOGUE_11999 11999 +#define IDS_DIALOGUE_12000 12000 +#define IDS_DIALOGUE_12001 12001 +#define IDS_DIALOGUE_12002 12002 +#define IDS_DIALOGUE_12003 12003 +#define IDS_DIALOGUE_12004 12004 +#define IDS_DIALOGUE_12005 12005 +#define IDS_DIALOGUE_12006 12006 +#define IDS_DIALOGUE_12007 12007 +#define IDS_DIALOGUE_12008 12008 +#define IDS_DIALOGUE_12009 12009 +#define IDS_DIALOGUE_12010 12010 +#define IDS_DIALOGUE_12011 12011 +#define IDS_DIALOGUE_12012 12012 +#define IDS_DIALOGUE_12013 12013 +#define IDS_DIALOGUE_12014 12014 +#define IDS_DIALOGUE_12015 12015 +#define IDS_DIALOGUE_12016 12016 +#define IDS_DIALOGUE_12017 12017 +#define IDS_DIALOGUE_12018 12018 +#define IDS_DIALOGUE_12019 12019 +#define IDS_DIALOGUE_12020 12020 +#define IDS_DIALOGUE_12021 12021 +#define IDS_DIALOGUE_12022 12022 +#define IDS_DIALOGUE_12023 12023 +#define IDS_DIALOGUE_12024 12024 +#define IDS_DIALOGUE_12025 12025 +#define IDS_DIALOGUE_12026 12026 +#define IDS_DIALOGUE_12027 12027 +#define IDS_DIALOGUE_12028 12028 +#define IDS_DIALOGUE_12029 12029 +#define IDS_DIALOGUE_12030 12030 +#define IDS_DIALOGUE_12031 12031 +#define IDS_DIALOGUE_12032 12032 +#define IDS_DIALOGUE_12033 12033 +#define IDS_DIALOGUE_12034 12034 +#define IDS_DIALOGUE_12035 12035 +#define IDS_DIALOGUE_12036 12036 +#define IDS_DIALOGUE_12037 12037 +#define IDS_DIALOGUE_12038 12038 +#define IDS_DIALOGUE_12039 12039 +#define IDS_DIALOGUE_12040 12040 +#define IDS_DIALOGUE_12041 12041 +#define IDS_DIALOGUE_12042 12042 +#define IDS_DIALOGUE_12043 12043 +#define IDS_DIALOGUE_12044 12044 +#define IDS_DIALOGUE_12045 12045 +#define IDS_DIALOGUE_12046 12046 +#define IDS_DIALOGUE_12047 12047 +#define IDS_DIALOGUE_12048 12048 +#define IDS_DIALOGUE_12049 12049 +#define IDS_DIALOGUE_12050 12050 +#define IDS_DIALOGUE_12051 12051 +#define IDS_DIALOGUE_12052 12052 +#define IDS_DIALOGUE_12053 12053 +#define IDS_DIALOGUE_12054 12054 +#define IDS_DIALOGUE_12055 12055 +#define IDS_DIALOGUE_12056 12056 +#define IDS_DIALOGUE_12057 12057 +#define IDS_DIALOGUE_12058 12058 +#define IDS_DIALOGUE_12059 12059 +#define IDS_DIALOGUE_12060 12060 +#define IDS_DIALOGUE_12061 12061 +#define IDS_DIALOGUE_12062 12062 +#define IDS_DIALOGUE_12063 12063 +#define IDS_DIALOGUE_12064 12064 +#define IDS_DIALOGUE_12065 12065 +#define IDS_DIALOGUE_12066 12066 +#define IDS_DIALOGUE_12067 12067 +#define IDS_DIALOGUE_12068 12068 +#define IDS_DIALOGUE_12069 12069 +#define IDS_DIALOGUE_12070 12070 +#define IDS_DIALOGUE_12071 12071 +#define IDS_DIALOGUE_12072 12072 +#define IDS_DIALOGUE_12073 12073 +#define IDS_DIALOGUE_12074 12074 +#define IDS_DIALOGUE_12075 12075 +#define IDS_DIALOGUE_12076 12076 +#define IDS_DIALOGUE_12077 12077 +#define IDS_DIALOGUE_12078 12078 +#define IDS_DIALOGUE_12079 12079 +#define IDS_DIALOGUE_12080 12080 +#define IDS_DIALOGUE_12081 12081 +#define IDS_DIALOGUE_12082 12082 +#define IDS_DIALOGUE_12083 12083 +#define IDS_DIALOGUE_12084 12084 +#define IDS_DIALOGUE_12085 12085 +#define IDS_DIALOGUE_12086 12086 +#define IDS_DIALOGUE_12087 12087 +#define IDS_DIALOGUE_12088 12088 +#define IDS_DIALOGUE_12089 12089 +#define IDS_DIALOGUE_12090 12090 +#define IDS_DIALOGUE_12091 12091 +#define IDS_DIALOGUE_12092 12092 +#define IDS_DIALOGUE_12093 12093 +#define IDS_DIALOGUE_12094 12094 +#define IDS_DIALOGUE_12095 12095 +#define IDS_DIALOGUE_12096 12096 +#define IDS_DIALOGUE_12097 12097 +#define IDS_DIALOGUE_12098 12098 +#define IDS_DIALOGUE_12099 12099 +#define IDS_DIALOGUE_12100 12100 +#define IDS_DIALOGUE_12101 12101 +#define IDS_DIALOGUE_12102 12102 +#define IDS_DIALOGUE_12103 12103 +#define IDS_DIALOGUE_12104 12104 +#define IDS_DIALOGUE_12105 12105 +#define IDS_DIALOGUE_12106 12106 +#define IDS_DIALOGUE_12107 12107 +#define IDS_DIALOGUE_12108 12108 +#define IDS_DIALOGUE_12109 12109 +#define IDS_DIALOGUE_12110 12110 +#define IDS_DIALOGUE_12111 12111 +#define IDS_DIALOGUE_12112 12112 +#define IDS_DIALOGUE_12113 12113 +#define IDS_DIALOGUE_12114 12114 +#define IDS_DIALOGUE_12115 12115 +#define IDS_DIALOGUE_12116 12116 +#define IDS_DIALOGUE_12117 12117 +#define IDS_DIALOGUE_12118 12118 +#define IDS_DIALOGUE_12119 12119 +#define IDS_DIALOGUE_12120 12120 +#define IDS_DIALOGUE_12121 12121 +#define IDS_DIALOGUE_12122 12122 +#define IDS_DIALOGUE_12123 12123 +#define IDS_DIALOGUE_12124 12124 +#define IDS_DIALOGUE_12125 12125 +#define IDS_DIALOGUE_12126 12126 +#define IDS_DIALOGUE_12127 12127 +#define IDS_DIALOGUE_12128 12128 +#define IDS_DIALOGUE_12129 12129 +#define IDS_DIALOGUE_12130 12130 +#define IDS_DIALOGUE_12131 12131 +#define IDS_DIALOGUE_12132 12132 +#define IDS_DIALOGUE_12133 12133 +#define IDS_DIALOGUE_12134 12134 +#define IDS_DIALOGUE_12135 12135 +#define IDS_DIALOGUE_12136 12136 +#define IDS_DIALOGUE_12137 12137 +#define IDS_DIALOGUE_12138 12138 +#define IDS_DIALOGUE_12139 12139 +#define IDS_DIALOGUE_12140 12140 +#define IDS_DIALOGUE_12141 12141 +#define IDS_DIALOGUE_12142 12142 +#define IDS_DIALOGUE_12143 12143 +#define IDS_DIALOGUE_12144 12144 +#define IDS_DIALOGUE_12145 12145 +#define IDS_DIALOGUE_12146 12146 +#define IDS_DIALOGUE_12147 12147 +#define IDS_DIALOGUE_12148 12148 +#define IDS_DIALOGUE_12149 12149 +#define IDS_DIALOGUE_12150 12150 +#define IDS_DIALOGUE_12151 12151 +#define IDS_DIALOGUE_12152 12152 +#define IDS_DIALOGUE_12153 12153 +#define IDS_DIALOGUE_12154 12154 +#define IDS_DIALOGUE_12155 12155 +#define IDS_DIALOGUE_12156 12156 +#define IDS_DIALOGUE_12157 12157 +#define IDS_DIALOGUE_12158 12158 +#define IDS_DIALOGUE_12159 12159 +#define IDS_DIALOGUE_12160 12160 +#define IDS_DIALOGUE_12161 12161 +#define IDS_DIALOGUE_12162 12162 +#define IDS_DIALOGUE_12163 12163 +#define IDS_DIALOGUE_12164 12164 +#define IDS_DIALOGUE_12165 12165 +#define IDS_DIALOGUE_12166 12166 +#define IDS_DIALOGUE_12167 12167 +#define IDS_DIALOGUE_12168 12168 +#define IDS_DIALOGUE_12169 12169 +#define IDS_DIALOGUE_12170 12170 +#define IDS_DIALOGUE_12171 12171 +#define IDS_DIALOGUE_12172 12172 +#define IDS_DIALOGUE_12173 12173 +#define IDS_DIALOGUE_12174 12174 +#define IDS_DIALOGUE_12175 12175 +#define IDS_DIALOGUE_12176 12176 +#define IDS_DIALOGUE_12177 12177 +#define IDS_DIALOGUE_12178 12178 +#define IDS_DIALOGUE_12179 12179 +#define IDS_DIALOGUE_12180 12180 +#define IDS_DIALOGUE_12181 12181 +#define IDS_DIALOGUE_12182 12182 +#define IDS_DIALOGUE_12183 12183 +#define IDS_DIALOGUE_12184 12184 +#define IDS_DIALOGUE_12185 12185 +#define IDS_DIALOGUE_12186 12186 +#define IDS_DIALOGUE_12187 12187 +#define IDS_DIALOGUE_12188 12188 +#define IDS_DIALOGUE_12189 12189 +#define IDS_DIALOGUE_12190 12190 +#define IDS_DIALOGUE_12191 12191 +#define IDS_DIALOGUE_12192 12192 +#define IDS_DIALOGUE_12193 12193 +#define IDS_DIALOGUE_12194 12194 +#define IDS_DIALOGUE_12195 12195 +#define IDS_DIALOGUE_12196 12196 +#define IDS_DIALOGUE_12197 12197 +#define IDS_DIALOGUE_12198 12198 +#define IDS_DIALOGUE_12199 12199 +#define IDS_DIALOGUE_12200 12200 +#define IDS_DIALOGUE_12201 12201 +#define IDS_DIALOGUE_12202 12202 +#define IDS_DIALOGUE_12203 12203 +#define IDS_DIALOGUE_12204 12204 +#define IDS_DIALOGUE_12205 12205 +#define IDS_DIALOGUE_12206 12206 +#define IDS_DIALOGUE_12207 12207 +#define IDS_DIALOGUE_12208 12208 +#define IDS_DIALOGUE_12209 12209 +#define IDS_DIALOGUE_12210 12210 +#define IDS_DIALOGUE_12211 12211 +#define IDS_DIALOGUE_12212 12212 +#define IDS_DIALOGUE_12213 12213 +#define IDS_DIALOGUE_12214 12214 +#define IDS_DIALOGUE_12215 12215 +#define IDS_DIALOGUE_12216 12216 +#define IDS_DIALOGUE_12217 12217 +#define IDS_DIALOGUE_12218 12218 +#define IDS_DIALOGUE_12219 12219 +#define IDS_DIALOGUE_12220 12220 +#define IDS_DIALOGUE_12221 12221 +#define IDS_DIALOGUE_12222 12222 +#define IDS_DIALOGUE_12223 12223 +#define IDS_DIALOGUE_12224 12224 +#define IDS_DIALOGUE_12225 12225 +#define IDS_DIALOGUE_12226 12226 +#define IDS_DIALOGUE_12227 12227 +#define IDS_DIALOGUE_12228 12228 +#define IDS_DIALOGUE_12229 12229 +#define IDS_DIALOGUE_12230 12230 +#define IDS_DIALOGUE_12231 12231 +#define IDS_DIALOGUE_12232 12232 +#define IDS_DIALOGUE_12233 12233 +#define IDS_DIALOGUE_12234 12234 +#define IDS_DIALOGUE_12235 12235 +#define IDS_DIALOGUE_12236 12236 +#define IDS_DIALOGUE_12237 12237 +#define IDS_DIALOGUE_12238 12238 +#define IDS_DIALOGUE_12239 12239 +#define IDS_DIALOGUE_12240 12240 +#define IDS_DIALOGUE_12241 12241 +#define IDS_DIALOGUE_12242 12242 +#define IDS_DIALOGUE_12243 12243 +#define IDS_DIALOGUE_12244 12244 +#define IDS_DIALOGUE_12245 12245 +#define IDS_DIALOGUE_12246 12246 +#define IDS_DIALOGUE_12247 12247 +#define IDS_DIALOGUE_12248 12248 +#define IDS_DIALOGUE_12249 12249 +#define IDS_DIALOGUE_12250 12250 +#define IDS_DIALOGUE_12251 12251 +#define IDS_DIALOGUE_12252 12252 +#define IDS_DIALOGUE_12253 12253 +#define IDS_DIALOGUE_12254 12254 +#define IDS_DIALOGUE_12255 12255 +#define IDS_DIALOGUE_12256 12256 +#define IDS_DIALOGUE_12257 12257 +#define IDS_DIALOGUE_12258 12258 +#define IDS_DIALOGUE_12259 12259 +#define IDS_DIALOGUE_12260 12260 +#define IDS_DIALOGUE_12261 12261 +#define IDS_DIALOGUE_12262 12262 +#define IDS_DIALOGUE_12263 12263 +#define IDS_DIALOGUE_12264 12264 +#define IDS_DIALOGUE_12265 12265 +#define IDS_DIALOGUE_12266 12266 +#define IDS_DIALOGUE_12267 12267 +#define IDS_DIALOGUE_12268 12268 +#define IDS_DIALOGUE_12269 12269 +#define IDS_DIALOGUE_12270 12270 +#define IDS_DIALOGUE_12271 12271 +#define IDS_DIALOGUE_12272 12272 +#define IDS_DIALOGUE_12273 12273 +#define IDS_DIALOGUE_12274 12274 +#define IDS_DIALOGUE_12275 12275 +#define IDS_DIALOGUE_12276 12276 +#define IDS_DIALOGUE_12277 12277 +#define IDS_DIALOGUE_12278 12278 +#define IDS_DIALOGUE_12279 12279 +#define IDS_DIALOGUE_12280 12280 +#define IDS_DIALOGUE_12281 12281 +#define IDS_DIALOGUE_12282 12282 +#define IDS_DIALOGUE_12283 12283 +#define IDS_DIALOGUE_12284 12284 +#define IDS_DIALOGUE_12285 12285 +#define IDS_DIALOGUE_12286 12286 +#define IDS_DIALOGUE_12287 12287 +#define IDS_DIALOGUE_12288 12288 +#define IDS_DIALOGUE_12289 12289 +#define IDS_DIALOGUE_12290 12290 +#define IDS_DIALOGUE_12291 12291 +#define IDS_DIALOGUE_12292 12292 +#define IDS_DIALOGUE_12293 12293 +#define IDS_DIALOGUE_12294 12294 +#define IDS_DIALOGUE_12295 12295 +#define IDS_DIALOGUE_12296 12296 +#define IDS_DIALOGUE_12297 12297 +#define IDS_DIALOGUE_12298 12298 +#define IDS_DIALOGUE_12299 12299 +#define IDS_DIALOGUE_12300 12300 +#define IDS_DIALOGUE_12301 12301 +#define IDS_DIALOGUE_12302 12302 +#define IDS_DIALOGUE_12303 12303 +#define IDS_DIALOGUE_12304 12304 +#define IDS_DIALOGUE_12305 12305 +#define IDS_DIALOGUE_12306 12306 +#define IDS_DIALOGUE_12307 12307 +#define IDS_DIALOGUE_12308 12308 +#define IDS_DIALOGUE_12309 12309 +#define IDS_DIALOGUE_12310 12310 +#define IDS_DIALOGUE_12311 12311 +#define IDS_DIALOGUE_12312 12312 +#define IDS_DIALOGUE_12313 12313 +#define IDS_DIALOGUE_12314 12314 +#define IDS_DIALOGUE_12315 12315 +#define IDS_DIALOGUE_12316 12316 +#define IDS_DIALOGUE_12317 12317 +#define IDS_DIALOGUE_12318 12318 +#define IDS_DIALOGUE_12319 12319 +#define IDS_DIALOGUE_12320 12320 +#define IDS_DIALOGUE_12321 12321 +#define IDS_DIALOGUE_12322 12322 +#define IDS_DIALOGUE_12323 12323 +#define IDS_DIALOGUE_12324 12324 +#define IDS_DIALOGUE_12325 12325 +#define IDS_DIALOGUE_12326 12326 +#define IDS_DIALOGUE_12327 12327 +#define IDS_DIALOGUE_12328 12328 +#define IDS_DIALOGUE_12329 12329 +#define IDS_DIALOGUE_12330 12330 +#define IDS_DIALOGUE_12331 12331 +#define IDS_DIALOGUE_12332 12332 +#define IDS_DIALOGUE_12333 12333 +#define IDS_DIALOGUE_12334 12334 +#define IDS_DIALOGUE_12335 12335 +#define IDS_DIALOGUE_12336 12336 +#define IDS_DIALOGUE_12337 12337 +#define IDS_DIALOGUE_12338 12338 +#define IDS_DIALOGUE_12339 12339 +#define IDS_DIALOGUE_12340 12340 +#define IDS_DIALOGUE_12341 12341 +#define IDS_DIALOGUE_12342 12342 +#define IDS_DIALOGUE_12343 12343 +#define IDS_DIALOGUE_12344 12344 +#define IDS_DIALOGUE_12345 12345 +#define IDS_DIALOGUE_12346 12346 +#define IDS_DIALOGUE_12347 12347 +#define IDS_DIALOGUE_12348 12348 +#define IDS_DIALOGUE_12349 12349 +#define IDS_DIALOGUE_12350 12350 +#define IDS_DIALOGUE_12351 12351 +#define IDS_DIALOGUE_12352 12352 +#define IDS_DIALOGUE_12353 12353 +#define IDS_DIALOGUE_12354 12354 +#define IDS_DIALOGUE_12355 12355 +#define IDS_DIALOGUE_12356 12356 +#define IDS_DIALOGUE_12357 12357 +#define IDS_DIALOGUE_12358 12358 +#define IDS_DIALOGUE_12359 12359 +#define IDS_DIALOGUE_12360 12360 +#define IDS_DIALOGUE_12361 12361 +#define IDS_DIALOGUE_12362 12362 +#define IDS_DIALOGUE_12363 12363 +#define IDS_DIALOGUE_12364 12364 +#define IDS_DIALOGUE_12365 12365 +#define IDS_DIALOGUE_12366 12366 +#define IDS_DIALOGUE_12367 12367 +#define IDS_DIALOGUE_12368 12368 +#define IDS_DIALOGUE_12369 12369 +#define IDS_DIALOGUE_12370 12370 +#define IDS_DIALOGUE_12371 12371 +#define IDS_DIALOGUE_12372 12372 +#define IDS_DIALOGUE_12373 12373 +#define IDS_DIALOGUE_12374 12374 +#define IDS_DIALOGUE_12375 12375 +#define IDS_DIALOGUE_12376 12376 +#define IDS_DIALOGUE_12377 12377 +#define IDS_DIALOGUE_12378 12378 +#define IDS_DIALOGUE_12379 12379 +#define IDS_DIALOGUE_12380 12380 +#define IDS_DIALOGUE_12381 12381 +#define IDS_DIALOGUE_12382 12382 +#define IDS_DIALOGUE_12383 12383 +#define IDS_DIALOGUE_12384 12384 +#define IDS_DIALOGUE_12385 12385 +#define IDS_DIALOGUE_12386 12386 +#define IDS_DIALOGUE_12387 12387 +#define IDS_DIALOGUE_12388 12388 +#define IDS_DIALOGUE_12389 12389 +#define IDS_DIALOGUE_12390 12390 +#define IDS_DIALOGUE_12391 12391 +#define IDS_DIALOGUE_12392 12392 +#define IDS_DIALOGUE_12393 12393 +#define IDS_DIALOGUE_12394 12394 +#define IDS_DIALOGUE_12395 12395 +#define IDS_DIALOGUE_12396 12396 +#define IDS_DIALOGUE_12397 12397 +#define IDS_DIALOGUE_12398 12398 +#define IDS_DIALOGUE_12399 12399 +#define IDS_DIALOGUE_12400 12400 +#define IDS_DIALOGUE_12401 12401 +#define IDS_DIALOGUE_12402 12402 +#define IDS_DIALOGUE_12403 12403 +#define IDS_DIALOGUE_12404 12404 +#define IDS_DIALOGUE_12405 12405 +#define IDS_DIALOGUE_12406 12406 +#define IDS_DIALOGUE_12407 12407 +#define IDS_DIALOGUE_12408 12408 +#define IDS_DIALOGUE_12409 12409 +#define IDS_DIALOGUE_12410 12410 +#define IDS_DIALOGUE_12411 12411 +#define IDS_DIALOGUE_12412 12412 +#define IDS_DIALOGUE_12413 12413 +#define IDS_DIALOGUE_12414 12414 +#define IDS_DIALOGUE_12415 12415 +#define IDS_DIALOGUE_12416 12416 +#define IDS_DIALOGUE_12417 12417 +#define IDS_DIALOGUE_12418 12418 +#define IDS_DIALOGUE_12419 12419 +#define IDS_DIALOGUE_12420 12420 +#define IDS_DIALOGUE_12421 12421 +#define IDS_DIALOGUE_12422 12422 +#define IDS_DIALOGUE_12423 12423 +#define IDS_DIALOGUE_12424 12424 +#define IDS_DIALOGUE_12425 12425 +#define IDS_DIALOGUE_12426 12426 +#define IDS_DIALOGUE_12427 12427 +#define IDS_DIALOGUE_12428 12428 +#define IDS_DIALOGUE_12429 12429 +#define IDS_DIALOGUE_12430 12430 +#define IDS_DIALOGUE_12431 12431 +#define IDS_DIALOGUE_12432 12432 +#define IDS_DIALOGUE_12433 12433 +#define IDS_DIALOGUE_12434 12434 +#define IDS_DIALOGUE_12435 12435 +#define IDS_DIALOGUE_12436 12436 +#define IDS_DIALOGUE_12437 12437 +#define IDS_DIALOGUE_12438 12438 +#define IDS_DIALOGUE_12439 12439 +#define IDS_DIALOGUE_12440 12440 +#define IDS_DIALOGUE_12441 12441 +#define IDS_DIALOGUE_12442 12442 +#define IDS_DIALOGUE_12443 12443 +#define IDS_DIALOGUE_12444 12444 +#define IDS_DIALOGUE_12445 12445 +#define IDS_DIALOGUE_12446 12446 +#define IDS_DIALOGUE_12447 12447 +#define IDS_DIALOGUE_12448 12448 +#define IDS_DIALOGUE_12449 12449 +#define IDS_DIALOGUE_12450 12450 +#define IDS_DIALOGUE_12451 12451 +#define IDS_DIALOGUE_12452 12452 +#define IDS_DIALOGUE_12453 12453 +#define IDS_DIALOGUE_12454 12454 +#define IDS_DIALOGUE_12455 12455 +#define IDS_DIALOGUE_12456 12456 +#define IDS_DIALOGUE_12457 12457 +#define IDS_DIALOGUE_12458 12458 +#define IDS_DIALOGUE_12459 12459 +#define IDS_DIALOGUE_12460 12460 +#define IDS_DIALOGUE_12461 12461 +#define IDS_DIALOGUE_12462 12462 +#define IDS_DIALOGUE_12463 12463 +#define IDS_DIALOGUE_12464 12464 +#define IDS_DIALOGUE_12465 12465 +#define IDS_DIALOGUE_12466 12466 +#define IDS_DIALOGUE_12467 12467 +#define IDS_DIALOGUE_12468 12468 +#define IDS_DIALOGUE_12469 12469 +#define IDS_DIALOGUE_12470 12470 +#define IDS_DIALOGUE_12471 12471 +#define IDS_DIALOGUE_12472 12472 +#define IDS_DIALOGUE_12473 12473 +#define IDS_DIALOGUE_12474 12474 +#define IDS_DIALOGUE_12475 12475 +#define IDS_DIALOGUE_12476 12476 +#define IDS_DIALOGUE_12477 12477 +#define IDS_DIALOGUE_12478 12478 +#define IDS_DIALOGUE_12479 12479 +#define IDS_DIALOGUE_12480 12480 +#define IDS_DIALOGUE_12481 12481 +#define IDS_DIALOGUE_12482 12482 +#define IDS_DIALOGUE_12483 12483 +#define IDS_DIALOGUE_12484 12484 +#define IDS_DIALOGUE_12485 12485 +#define IDS_DIALOGUE_12486 12486 +#define IDS_DIALOGUE_12487 12487 +#define IDS_DIALOGUE_12488 12488 +#define IDS_DIALOGUE_12489 12489 +#define IDS_DIALOGUE_12490 12490 +#define IDS_DIALOGUE_12491 12491 +#define IDS_DIALOGUE_12492 12492 +#define IDS_DIALOGUE_12493 12493 +#define IDS_DIALOGUE_12494 12494 +#define IDS_DIALOGUE_12495 12495 +#define IDS_DIALOGUE_12496 12496 +#define IDS_DIALOGUE_12497 12497 +#define IDS_DIALOGUE_12498 12498 +#define IDS_DIALOGUE_12499 12499 +#define IDS_DIALOGUE_12500 12500 +#define IDS_DIALOGUE_12501 12501 +#define IDS_DIALOGUE_12502 12502 +#define IDS_DIALOGUE_12503 12503 +#define IDS_DIALOGUE_12504 12504 +#define IDS_DIALOGUE_12505 12505 +#define IDS_DIALOGUE_12506 12506 +#define IDS_DIALOGUE_12507 12507 +#define IDS_DIALOGUE_12508 12508 +#define IDS_DIALOGUE_12509 12509 +#define IDS_DIALOGUE_12510 12510 +#define IDS_DIALOGUE_12511 12511 +#define IDS_DIALOGUE_12512 12512 +#define IDS_DIALOGUE_12513 12513 +#define IDS_DIALOGUE_12514 12514 +#define IDS_DIALOGUE_12515 12515 +#define IDS_DIALOGUE_12516 12516 +#define IDS_DIALOGUE_12517 12517 +#define IDS_DIALOGUE_12518 12518 +#define IDS_DIALOGUE_12519 12519 +#define IDS_DIALOGUE_12520 12520 +#define IDS_DIALOGUE_12521 12521 +#define IDS_DIALOGUE_12522 12522 +#define IDS_DIALOGUE_12523 12523 +#define IDS_DIALOGUE_12524 12524 +#define IDS_DIALOGUE_12525 12525 +#define IDS_DIALOGUE_12526 12526 +#define IDS_DIALOGUE_12527 12527 +#define IDS_DIALOGUE_12528 12528 +#define IDS_DIALOGUE_12529 12529 +#define IDS_DIALOGUE_12530 12530 +#define IDS_DIALOGUE_12531 12531 +#define IDS_DIALOGUE_12532 12532 +#define IDS_DIALOGUE_12533 12533 +#define IDS_DIALOGUE_12534 12534 +#define IDS_DIALOGUE_12535 12535 +#define IDS_DIALOGUE_12536 12536 +#define IDS_DIALOGUE_12537 12537 +#define IDS_DIALOGUE_12538 12538 +#define IDS_DIALOGUE_12539 12539 +#define IDS_DIALOGUE_12540 12540 +#define IDS_DIALOGUE_12541 12541 +#define IDS_DIALOGUE_12542 12542 +#define IDS_DIALOGUE_12543 12543 +#define IDS_DIALOGUE_12544 12544 +#define IDS_DIALOGUE_12545 12545 +#define IDS_DIALOGUE_12546 12546 +#define IDS_DIALOGUE_12547 12547 +#define IDS_DIALOGUE_12548 12548 +#define IDS_DIALOGUE_12549 12549 +#define IDS_DIALOGUE_12550 12550 +#define IDS_DIALOGUE_12551 12551 +#define IDS_DIALOGUE_12552 12552 +#define IDS_DIALOGUE_12553 12553 +#define IDS_DIALOGUE_12554 12554 +#define IDS_DIALOGUE_12555 12555 +#define IDS_DIALOGUE_12556 12556 +#define IDS_DIALOGUE_12557 12557 +#define IDS_DIALOGUE_12558 12558 +#define IDS_DIALOGUE_12559 12559 +#define IDS_DIALOGUE_12560 12560 +#define IDS_DIALOGUE_12561 12561 +#define IDS_DIALOGUE_12562 12562 +#define IDS_DIALOGUE_12563 12563 +#define IDS_DIALOGUE_12564 12564 +#define IDS_DIALOGUE_12565 12565 +#define IDS_DIALOGUE_12566 12566 +#define IDS_DIALOGUE_12567 12567 +#define IDS_DIALOGUE_12568 12568 +#define IDS_DIALOGUE_12569 12569 +#define IDS_DIALOGUE_12570 12570 +#define IDS_DIALOGUE_12571 12571 +#define IDS_DIALOGUE_12572 12572 +#define IDS_DIALOGUE_12573 12573 +#define IDS_DIALOGUE_12574 12574 +#define IDS_DIALOGUE_12575 12575 +#define IDS_DIALOGUE_12576 12576 +#define IDS_DIALOGUE_12577 12577 +#define IDS_DIALOGUE_12578 12578 +#define IDS_DIALOGUE_12579 12579 +#define IDS_DIALOGUE_12580 12580 +#define IDS_DIALOGUE_12581 12581 +#define IDS_DIALOGUE_12582 12582 +#define IDS_DIALOGUE_12583 12583 +#define IDS_DIALOGUE_12584 12584 +#define IDS_DIALOGUE_12585 12585 +#define IDS_DIALOGUE_12586 12586 +#define IDS_DIALOGUE_12587 12587 +#define IDS_DIALOGUE_12588 12588 +#define IDS_DIALOGUE_12589 12589 +#define IDS_DIALOGUE_12590 12590 +#define IDS_DIALOGUE_12591 12591 +#define IDS_DIALOGUE_12592 12592 +#define IDS_DIALOGUE_12593 12593 +#define IDS_DIALOGUE_12594 12594 +#define IDS_DIALOGUE_12595 12595 +#define IDS_DIALOGUE_12596 12596 +#define IDS_DIALOGUE_12597 12597 +#define IDS_DIALOGUE_12598 12598 +#define IDS_DIALOGUE_12599 12599 +#define IDS_DIALOGUE_12600 12600 +#define IDS_DIALOGUE_12601 12601 +#define IDS_DIALOGUE_12602 12602 +#define IDS_DIALOGUE_12603 12603 +#define IDS_DIALOGUE_12604 12604 +#define IDS_DIALOGUE_12605 12605 +#define IDS_DIALOGUE_12606 12606 +#define IDS_DIALOGUE_12607 12607 +#define IDS_DIALOGUE_12608 12608 +#define IDS_DIALOGUE_12609 12609 +#define IDS_DIALOGUE_12610 12610 +#define IDS_DIALOGUE_12611 12611 +#define IDS_DIALOGUE_12612 12612 +#define IDS_DIALOGUE_12613 12613 +#define IDS_DIALOGUE_12614 12614 +#define IDS_DIALOGUE_12615 12615 +#define IDS_DIALOGUE_12616 12616 +#define IDS_DIALOGUE_12617 12617 +#define IDS_DIALOGUE_12618 12618 +#define IDS_DIALOGUE_12619 12619 +#define IDS_DIALOGUE_12620 12620 +#define IDS_DIALOGUE_12621 12621 +#define IDS_DIALOGUE_12622 12622 +#define IDS_DIALOGUE_12623 12623 +#define IDS_DIALOGUE_12624 12624 +#define IDS_DIALOGUE_12625 12625 +#define IDS_DIALOGUE_12626 12626 +#define IDS_DIALOGUE_12627 12627 +#define IDS_DIALOGUE_12628 12628 +#define IDS_DIALOGUE_12629 12629 +#define IDS_DIALOGUE_12630 12630 +#define IDS_DIALOGUE_12631 12631 +#define IDS_DIALOGUE_12632 12632 +#define IDS_DIALOGUE_12633 12633 +#define IDS_DIALOGUE_12634 12634 +#define IDS_DIALOGUE_12635 12635 +#define IDS_DIALOGUE_12636 12636 +#define IDS_DIALOGUE_12637 12637 +#define IDS_DIALOGUE_12638 12638 +#define IDS_DIALOGUE_12639 12639 +#define IDS_DIALOGUE_12640 12640 +#define IDS_DIALOGUE_12641 12641 +#define IDS_DIALOGUE_12642 12642 +#define IDS_DIALOGUE_12643 12643 +#define IDS_DIALOGUE_12644 12644 +#define IDS_DIALOGUE_12645 12645 +#define IDS_DIALOGUE_12646 12646 +#define IDS_DIALOGUE_12647 12647 +#define IDS_DIALOGUE_12648 12648 +#define IDS_DIALOGUE_12649 12649 +#define IDS_DIALOGUE_12650 12650 +#define IDS_DIALOGUE_12651 12651 +#define IDS_DIALOGUE_12652 12652 +#define IDS_DIALOGUE_12653 12653 +#define IDS_DIALOGUE_12654 12654 +#define IDS_DIALOGUE_12655 12655 +#define IDS_DIALOGUE_12656 12656 +#define IDS_DIALOGUE_12657 12657 +#define IDS_DIALOGUE_12658 12658 +#define IDS_DIALOGUE_12659 12659 +#define IDS_DIALOGUE_12660 12660 +#define IDS_DIALOGUE_12661 12661 +#define IDS_DIALOGUE_12662 12662 +#define IDS_DIALOGUE_12663 12663 +#define IDS_DIALOGUE_12664 12664 +#define IDS_DIALOGUE_12665 12665 +#define IDS_DIALOGUE_12666 12666 +#define IDS_DIALOGUE_12667 12667 +#define IDS_DIALOGUE_12668 12668 +#define IDS_DIALOGUE_12669 12669 +#define IDS_DIALOGUE_12670 12670 +#define IDS_DIALOGUE_12671 12671 +#define IDS_DIALOGUE_12672 12672 +#define IDS_DIALOGUE_12673 12673 +#define IDS_DIALOGUE_12674 12674 +#define IDS_DIALOGUE_12675 12675 +#define IDS_DIALOGUE_12676 12676 +#define IDS_DIALOGUE_12677 12677 +#define IDS_DIALOGUE_12678 12678 +#define IDS_DIALOGUE_12679 12679 +#define IDS_DIALOGUE_12680 12680 +#define IDS_DIALOGUE_12681 12681 +#define IDS_DIALOGUE_12682 12682 +#define IDS_DIALOGUE_12683 12683 +#define IDS_DIALOGUE_12684 12684 +#define IDS_DIALOGUE_12685 12685 +#define IDS_DIALOGUE_12686 12686 +#define IDS_DIALOGUE_12687 12687 +#define IDS_DIALOGUE_12688 12688 +#define IDS_DIALOGUE_12689 12689 +#define IDS_DIALOGUE_12690 12690 +#define IDS_DIALOGUE_12691 12691 +#define IDS_DIALOGUE_12692 12692 +#define IDS_DIALOGUE_12693 12693 +#define IDS_DIALOGUE_12694 12694 +#define IDS_DIALOGUE_12695 12695 +#define IDS_DIALOGUE_12696 12696 +#define IDS_DIALOGUE_12697 12697 +#define IDS_DIALOGUE_12698 12698 +#define IDS_DIALOGUE_12699 12699 +#define IDS_DIALOGUE_12700 12700 +#define IDS_DIALOGUE_12701 12701 +#define IDS_DIALOGUE_12702 12702 +#define IDS_DIALOGUE_12703 12703 +#define IDS_DIALOGUE_12704 12704 +#define IDS_DIALOGUE_12705 12705 +#define IDS_DIALOGUE_12706 12706 +#define IDS_DIALOGUE_12707 12707 +#define IDS_DIALOGUE_12708 12708 +#define IDS_DIALOGUE_12709 12709 +#define IDS_DIALOGUE_12710 12710 +#define IDS_DIALOGUE_12711 12711 +#define IDS_DIALOGUE_12712 12712 +#define IDS_DIALOGUE_12713 12713 +#define IDS_DIALOGUE_12714 12714 +#define IDS_DIALOGUE_12715 12715 +#define IDS_DIALOGUE_12716 12716 +#define IDS_DIALOGUE_12717 12717 +#define IDS_DIALOGUE_12718 12718 +#define IDS_DIALOGUE_12719 12719 +#define IDS_DIALOGUE_12720 12720 +#define IDS_DIALOGUE_12721 12721 +#define IDS_DIALOGUE_12722 12722 +#define IDS_DIALOGUE_12723 12723 +#define IDS_DIALOGUE_12724 12724 +#define IDS_DIALOGUE_12725 12725 +#define IDS_DIALOGUE_12726 12726 +#define IDS_DIALOGUE_12727 12727 +#define IDS_DIALOGUE_12728 12728 +#define IDS_DIALOGUE_12729 12729 +#define IDS_DIALOGUE_12730 12730 +#define IDS_DIALOGUE_12731 12731 +#define IDS_DIALOGUE_12732 12732 +#define IDS_DIALOGUE_12733 12733 +#define IDS_DIALOGUE_12734 12734 +#define IDS_DIALOGUE_12735 12735 +#define IDS_DIALOGUE_12736 12736 +#define IDS_DIALOGUE_12737 12737 +#define IDS_DIALOGUE_12738 12738 +#define IDS_DIALOGUE_12739 12739 +#define IDS_DIALOGUE_12740 12740 +#define IDS_DIALOGUE_12741 12741 +#define IDS_DIALOGUE_12742 12742 +#define IDS_DIALOGUE_12743 12743 +#define IDS_DIALOGUE_12744 12744 +#define IDS_DIALOGUE_12745 12745 +#define IDS_DIALOGUE_12746 12746 +#define IDS_DIALOGUE_12747 12747 +#define IDS_DIALOGUE_12748 12748 +#define IDS_DIALOGUE_12749 12749 +#define IDS_DIALOGUE_12750 12750 +#define IDS_DIALOGUE_12751 12751 +#define IDS_DIALOGUE_12752 12752 +#define IDS_DIALOGUE_12753 12753 +#define IDS_DIALOGUE_12754 12754 +#define IDS_DIALOGUE_12755 12755 +#define IDS_DIALOGUE_12756 12756 +#define IDS_DIALOGUE_12757 12757 +#define IDS_DIALOGUE_12758 12758 +#define IDS_DIALOGUE_12759 12759 +#define IDS_DIALOGUE_12760 12760 +#define IDS_DIALOGUE_12761 12761 +#define IDS_DIALOGUE_12762 12762 +#define IDS_DIALOGUE_12763 12763 +#define IDS_DIALOGUE_12764 12764 +#define IDS_DIALOGUE_12765 12765 +#define IDS_DIALOGUE_12766 12766 +#define IDS_DIALOGUE_12767 12767 +#define IDS_DIALOGUE_12768 12768 +#define IDS_DIALOGUE_12769 12769 +#define IDS_DIALOGUE_12770 12770 +#define IDS_DIALOGUE_12771 12771 +#define IDS_DIALOGUE_12772 12772 +#define IDS_DIALOGUE_12773 12773 +#define IDS_DIALOGUE_12774 12774 +#define IDS_DIALOGUE_12775 12775 +#define IDS_DIALOGUE_12776 12776 +#define IDS_DIALOGUE_12777 12777 +#define IDS_DIALOGUE_12778 12778 +#define IDS_DIALOGUE_12779 12779 +#define IDS_DIALOGUE_12780 12780 +#define IDS_DIALOGUE_12781 12781 +#define IDS_DIALOGUE_12782 12782 +#define IDS_DIALOGUE_12783 12783 +#define IDS_DIALOGUE_12784 12784 +#define IDS_DIALOGUE_12785 12785 +#define IDS_DIALOGUE_12786 12786 +#define IDS_DIALOGUE_12787 12787 +#define IDS_DIALOGUE_12788 12788 +#define IDS_DIALOGUE_12789 12789 +#define IDS_DIALOGUE_12790 12790 +#define IDS_DIALOGUE_12791 12791 +#define IDS_DIALOGUE_12792 12792 +#define IDS_DIALOGUE_12793 12793 +#define IDS_DIALOGUE_12794 12794 +#define IDS_DIALOGUE_12795 12795 +#define IDS_DIALOGUE_12796 12796 +#define IDS_DIALOGUE_12797 12797 +#define IDS_DIALOGUE_12798 12798 +#define IDS_DIALOGUE_12799 12799 +#define IDS_DIALOGUE_12800 12800 +#define IDS_DIALOGUE_12801 12801 +#define IDS_DIALOGUE_12802 12802 +#define IDS_DIALOGUE_12803 12803 +#define IDS_DIALOGUE_12804 12804 +#define IDS_DIALOGUE_12805 12805 +#define IDS_DIALOGUE_12806 12806 +#define IDS_DIALOGUE_12807 12807 +#define IDS_DIALOGUE_12808 12808 +#define IDS_DIALOGUE_12809 12809 +#define IDS_DIALOGUE_12810 12810 +#define IDS_DIALOGUE_12811 12811 +#define IDS_DIALOGUE_12812 12812 +#define IDS_DIALOGUE_12813 12813 +#define IDS_DIALOGUE_12814 12814 +#define IDS_DIALOGUE_12815 12815 +#define IDS_DIALOGUE_12816 12816 +#define IDS_DIALOGUE_12817 12817 +#define IDS_DIALOGUE_12818 12818 +#define IDS_DIALOGUE_12819 12819 +#define IDS_DIALOGUE_12820 12820 +#define IDS_DIALOGUE_12821 12821 +#define IDS_DIALOGUE_12822 12822 +#define IDS_DIALOGUE_12823 12823 +#define IDS_DIALOGUE_12824 12824 +#define IDS_DIALOGUE_12825 12825 +#define IDS_DIALOGUE_12826 12826 +#define IDS_DIALOGUE_12827 12827 +#define IDS_DIALOGUE_12828 12828 +#define IDS_DIALOGUE_12829 12829 +#define IDS_DIALOGUE_12830 12830 +#define IDS_DIALOGUE_12831 12831 +#define IDS_DIALOGUE_12832 12832 +#define IDS_DIALOGUE_12833 12833 +#define IDS_DIALOGUE_12834 12834 +#define IDS_DIALOGUE_12835 12835 +#define IDS_DIALOGUE_12836 12836 +#define IDS_DIALOGUE_12837 12837 +#define IDS_DIALOGUE_12838 12838 +#define IDS_DIALOGUE_12839 12839 +#define IDS_DIALOGUE_12840 12840 +#define IDS_DIALOGUE_12841 12841 +#define IDS_DIALOGUE_12842 12842 +#define IDS_DIALOGUE_12843 12843 +#define IDS_DIALOGUE_12844 12844 +#define IDS_DIALOGUE_12845 12845 +#define IDS_DIALOGUE_12846 12846 +#define IDS_DIALOGUE_12847 12847 +#define IDS_DIALOGUE_12848 12848 +#define IDS_DIALOGUE_12849 12849 +#define IDS_DIALOGUE_12850 12850 +#define IDS_DIALOGUE_12851 12851 +#define IDS_DIALOGUE_12852 12852 +#define IDS_DIALOGUE_12853 12853 +#define IDS_DIALOGUE_12854 12854 +#define IDS_DIALOGUE_12855 12855 +#define IDS_DIALOGUE_12856 12856 +#define IDS_DIALOGUE_12857 12857 +#define IDS_DIALOGUE_12858 12858 +#define IDS_DIALOGUE_12859 12859 +#define IDS_DIALOGUE_12860 12860 +#define IDS_DIALOGUE_12861 12861 +#define IDS_DIALOGUE_12862 12862 +#define IDS_DIALOGUE_12863 12863 +#define IDS_DIALOGUE_12864 12864 +#define IDS_DIALOGUE_12865 12865 +#define IDS_DIALOGUE_12866 12866 +#define IDS_DIALOGUE_12867 12867 +#define IDS_DIALOGUE_12868 12868 +#define IDS_DIALOGUE_12869 12869 +#define IDS_DIALOGUE_12870 12870 +#define IDS_DIALOGUE_12871 12871 +#define IDS_DIALOGUE_12872 12872 +#define IDS_DIALOGUE_12873 12873 +#define IDS_DIALOGUE_12874 12874 +#define IDS_DIALOGUE_12875 12875 +#define IDS_DIALOGUE_12876 12876 +#define IDS_DIALOGUE_12877 12877 +#define IDS_DIALOGUE_12878 12878 +#define IDS_DIALOGUE_12879 12879 +#define IDS_DIALOGUE_12880 12880 +#define IDS_DIALOGUE_12881 12881 +#define IDS_DIALOGUE_12882 12882 +#define IDS_DIALOGUE_12883 12883 +#define IDS_DIALOGUE_12884 12884 +#define IDS_DIALOGUE_12885 12885 +#define IDS_DIALOGUE_12886 12886 +#define IDS_DIALOGUE_12887 12887 +#define IDS_DIALOGUE_12888 12888 +#define IDS_DIALOGUE_12889 12889 +#define IDS_DIALOGUE_12890 12890 +#define IDS_DIALOGUE_12891 12891 +#define IDS_DIALOGUE_12892 12892 +#define IDS_DIALOGUE_12893 12893 +#define IDS_DIALOGUE_12894 12894 +#define IDS_DIALOGUE_12895 12895 +#define IDS_DIALOGUE_12896 12896 +#define IDS_DIALOGUE_12897 12897 +#define IDS_DIALOGUE_12898 12898 +#define IDS_DIALOGUE_12899 12899 +#define IDS_DIALOGUE_12900 12900 +#define IDS_DIALOGUE_12901 12901 +#define IDS_DIALOGUE_12902 12902 +#define IDS_DIALOGUE_12903 12903 +#define IDS_DIALOGUE_12904 12904 +#define IDS_DIALOGUE_12905 12905 +#define IDS_DIALOGUE_12906 12906 +#define IDS_DIALOGUE_12907 12907 +#define IDS_DIALOGUE_12908 12908 +#define IDS_DIALOGUE_12909 12909 +#define IDS_DIALOGUE_12910 12910 +#define IDS_DIALOGUE_12911 12911 +#define IDS_DIALOGUE_12912 12912 +#define IDS_DIALOGUE_12913 12913 +#define IDS_DIALOGUE_12914 12914 +#define IDS_DIALOGUE_12915 12915 +#define IDS_DIALOGUE_12916 12916 +#define IDS_DIALOGUE_12917 12917 +#define IDS_DIALOGUE_12918 12918 +#define IDS_DIALOGUE_12919 12919 +#define IDS_DIALOGUE_12920 12920 +#define IDS_DIALOGUE_12921 12921 +#define IDS_DIALOGUE_12922 12922 +#define IDS_DIALOGUE_12923 12923 +#define IDS_DIALOGUE_12924 12924 +#define IDS_DIALOGUE_12925 12925 +#define IDS_DIALOGUE_12926 12926 +#define IDS_DIALOGUE_12927 12927 +#define IDS_DIALOGUE_12928 12928 +#define IDS_DIALOGUE_12929 12929 +#define IDS_DIALOGUE_12930 12930 +#define IDS_DIALOGUE_12931 12931 +#define IDS_DIALOGUE_12932 12932 +#define IDS_DIALOGUE_12933 12933 +#define IDS_DIALOGUE_12934 12934 +#define IDS_DIALOGUE_12935 12935 +#define IDS_DIALOGUE_12936 12936 +#define IDS_DIALOGUE_12937 12937 +#define IDS_DIALOGUE_12938 12938 +#define IDS_DIALOGUE_12939 12939 +#define IDS_DIALOGUE_12940 12940 +#define IDS_DIALOGUE_12941 12941 +#define IDS_DIALOGUE_12942 12942 +#define IDS_DIALOGUE_12943 12943 +#define IDS_DIALOGUE_12944 12944 +#define IDS_DIALOGUE_12945 12945 +#define IDS_DIALOGUE_12946 12946 +#define IDS_DIALOGUE_12947 12947 +#define IDS_DIALOGUE_12948 12948 +#define IDS_DIALOGUE_12949 12949 +#define IDS_DIALOGUE_12950 12950 +#define IDS_DIALOGUE_12951 12951 +#define IDS_DIALOGUE_12952 12952 +#define IDS_DIALOGUE_12953 12953 +#define IDS_DIALOGUE_12954 12954 +#define IDS_DIALOGUE_12955 12955 +#define IDS_DIALOGUE_12956 12956 +#define IDS_DIALOGUE_12957 12957 +#define IDS_DIALOGUE_12958 12958 +#define IDS_DIALOGUE_12959 12959 +#define IDS_DIALOGUE_12960 12960 +#define IDS_DIALOGUE_12961 12961 +#define IDS_DIALOGUE_12962 12962 +#define IDS_DIALOGUE_12963 12963 +#define IDS_DIALOGUE_12964 12964 +#define IDS_DIALOGUE_12965 12965 +#define IDS_DIALOGUE_12966 12966 +#define IDS_DIALOGUE_12967 12967 +#define IDS_DIALOGUE_12968 12968 +#define IDS_DIALOGUE_12969 12969 +#define IDS_DIALOGUE_12970 12970 +#define IDS_DIALOGUE_12971 12971 +#define IDS_DIALOGUE_12972 12972 +#define IDS_DIALOGUE_12973 12973 +#define IDS_DIALOGUE_12974 12974 +#define IDS_DIALOGUE_12975 12975 +#define IDS_DIALOGUE_12976 12976 +#define IDS_DIALOGUE_12977 12977 +#define IDS_DIALOGUE_12978 12978 +#define IDS_DIALOGUE_12979 12979 +#define IDS_DIALOGUE_12980 12980 +#define IDS_DIALOGUE_12981 12981 +#define IDS_DIALOGUE_12982 12982 +#define IDS_DIALOGUE_12983 12983 +#define IDS_DIALOGUE_12984 12984 +#define IDS_DIALOGUE_12985 12985 +#define IDS_DIALOGUE_12986 12986 +#define IDS_DIALOGUE_12987 12987 +#define IDS_DIALOGUE_12988 12988 +#define IDS_DIALOGUE_12989 12989 +#define IDS_DIALOGUE_12990 12990 +#define IDS_DIALOGUE_12991 12991 +#define IDS_DIALOGUE_12992 12992 +#define IDS_DIALOGUE_12993 12993 +#define IDS_DIALOGUE_12994 12994 +#define IDS_DIALOGUE_12995 12995 +#define IDS_DIALOGUE_12996 12996 +#define IDS_DIALOGUE_12997 12997 +#define IDS_DIALOGUE_12998 12998 +#define IDS_DIALOGUE_12999 12999 +#define IDS_DIALOGUE_13000 13000 +#define IDS_DIALOGUE_13001 13001 +#define IDS_DIALOGUE_13002 13002 +#define IDS_DIALOGUE_13003 13003 +#define IDS_DIALOGUE_13004 13004 +#define IDS_DIALOGUE_13005 13005 +#define IDS_DIALOGUE_13006 13006 +#define IDS_DIALOGUE_13007 13007 +#define IDS_DIALOGUE_13008 13008 +#define IDS_DIALOGUE_13009 13009 +#define IDS_DIALOGUE_13010 13010 +#define IDS_DIALOGUE_13011 13011 +#define IDS_DIALOGUE_13012 13012 +#define IDS_DIALOGUE_13013 13013 +#define IDS_DIALOGUE_13014 13014 +#define IDS_DIALOGUE_13015 13015 +#define IDS_DIALOGUE_13016 13016 +#define IDS_DIALOGUE_13017 13017 +#define IDS_DIALOGUE_13018 13018 +#define IDS_DIALOGUE_13019 13019 +#define IDS_DIALOGUE_13020 13020 +#define IDS_DIALOGUE_13021 13021 +#define IDS_DIALOGUE_13022 13022 +#define IDS_DIALOGUE_13023 13023 +#define IDS_DIALOGUE_13024 13024 +#define IDS_DIALOGUE_13025 13025 +#define IDS_DIALOGUE_13026 13026 +#define IDS_DIALOGUE_13027 13027 +#define IDS_DIALOGUE_13028 13028 +#define IDS_DIALOGUE_13029 13029 +#define IDS_DIALOGUE_13030 13030 +#define IDS_DIALOGUE_13031 13031 +#define IDS_DIALOGUE_13032 13032 +#define IDS_DIALOGUE_13033 13033 +#define IDS_DIALOGUE_13034 13034 +#define IDS_DIALOGUE_13035 13035 +#define IDS_DIALOGUE_13036 13036 +#define IDS_DIALOGUE_13037 13037 +#define IDS_DIALOGUE_13038 13038 +#define IDS_DIALOGUE_13039 13039 +#define IDS_DIALOGUE_13040 13040 +#define IDS_DIALOGUE_13041 13041 +#define IDS_DIALOGUE_13042 13042 +#define IDS_DIALOGUE_13043 13043 +#define IDS_DIALOGUE_13044 13044 +#define IDS_DIALOGUE_13045 13045 +#define IDS_DIALOGUE_13046 13046 +#define IDS_DIALOGUE_13047 13047 +#define IDS_DIALOGUE_13048 13048 +#define IDS_DIALOGUE_13049 13049 +#define IDS_DIALOGUE_13050 13050 +#define IDS_DIALOGUE_13051 13051 +#define IDS_DIALOGUE_13052 13052 +#define IDS_DIALOGUE_13053 13053 +#define IDS_DIALOGUE_13054 13054 +#define IDS_DIALOGUE_13055 13055 +#define IDS_DIALOGUE_13056 13056 +#define IDS_DIALOGUE_13057 13057 +#define IDS_DIALOGUE_13058 13058 +#define IDS_DIALOGUE_13059 13059 +#define IDS_DIALOGUE_13060 13060 +#define IDS_DIALOGUE_13061 13061 +#define IDS_DIALOGUE_13062 13062 +#define IDS_DIALOGUE_13063 13063 +#define IDS_DIALOGUE_13064 13064 +#define IDS_DIALOGUE_13065 13065 +#define IDS_DIALOGUE_13066 13066 +#define IDS_DIALOGUE_13067 13067 +#define IDS_DIALOGUE_13068 13068 +#define IDS_DIALOGUE_13069 13069 +#define IDS_DIALOGUE_13070 13070 +#define IDS_DIALOGUE_13071 13071 +#define IDS_DIALOGUE_13072 13072 +#define IDS_DIALOGUE_13073 13073 +#define IDS_DIALOGUE_13074 13074 +#define IDS_DIALOGUE_13075 13075 +#define IDS_DIALOGUE_13076 13076 +#define IDS_DIALOGUE_13077 13077 +#define IDS_DIALOGUE_13078 13078 +#define IDS_DIALOGUE_13079 13079 +#define IDS_DIALOGUE_13080 13080 +#define IDS_DIALOGUE_13081 13081 +#define IDS_DIALOGUE_13082 13082 +#define IDS_DIALOGUE_13083 13083 +#define IDS_DIALOGUE_13084 13084 +#define IDS_DIALOGUE_13085 13085 +#define IDS_DIALOGUE_13086 13086 +#define IDS_DIALOGUE_13087 13087 +#define IDS_DIALOGUE_13088 13088 +#define IDS_DIALOGUE_13089 13089 +#define IDS_DIALOGUE_13090 13090 +#define IDS_DIALOGUE_13091 13091 +#define IDS_DIALOGUE_13092 13092 +#define IDS_DIALOGUE_13093 13093 +#define IDS_DIALOGUE_13094 13094 +#define IDS_DIALOGUE_13095 13095 +#define IDS_DIALOGUE_13096 13096 +#define IDS_DIALOGUE_13097 13097 +#define IDS_DIALOGUE_13098 13098 +#define IDS_DIALOGUE_13099 13099 +#define IDS_DIALOGUE_13100 13100 +#define IDS_DIALOGUE_13101 13101 +#define IDS_DIALOGUE_13102 13102 +#define IDS_DIALOGUE_13103 13103 +#define IDS_DIALOGUE_13104 13104 +#define IDS_DIALOGUE_13105 13105 +#define IDS_DIALOGUE_13106 13106 +#define IDS_DIALOGUE_13107 13107 +#define IDS_DIALOGUE_13108 13108 +#define IDS_DIALOGUE_13109 13109 +#define IDS_DIALOGUE_13110 13110 +#define IDS_DIALOGUE_13111 13111 +#define IDS_DIALOGUE_13112 13112 +#define IDS_DIALOGUE_13113 13113 +#define IDS_DIALOGUE_13114 13114 +#define IDS_DIALOGUE_13115 13115 +#define IDS_DIALOGUE_13116 13116 +#define IDS_DIALOGUE_13117 13117 +#define IDS_DIALOGUE_13118 13118 +#define IDS_DIALOGUE_13119 13119 +#define IDS_DIALOGUE_13120 13120 +#define IDS_DIALOGUE_13121 13121 +#define IDS_DIALOGUE_13122 13122 +#define IDS_DIALOGUE_13123 13123 +#define IDS_DIALOGUE_13124 13124 +#define IDS_DIALOGUE_13125 13125 +#define IDS_DIALOGUE_13126 13126 +#define IDS_DIALOGUE_13127 13127 +#define IDS_DIALOGUE_13128 13128 +#define IDS_DIALOGUE_13129 13129 +#define IDS_DIALOGUE_13130 13130 +#define IDS_DIALOGUE_13131 13131 +#define IDS_DIALOGUE_13132 13132 +#define IDS_DIALOGUE_13133 13133 +#define IDS_DIALOGUE_13134 13134 +#define IDS_DIALOGUE_13135 13135 +#define IDS_DIALOGUE_13136 13136 +#define IDS_DIALOGUE_13137 13137 +#define IDS_DIALOGUE_13138 13138 +#define IDS_DIALOGUE_13139 13139 +#define IDS_DIALOGUE_13140 13140 +#define IDS_DIALOGUE_13141 13141 +#define IDS_DIALOGUE_13142 13142 +#define IDS_DIALOGUE_13143 13143 +#define IDS_DIALOGUE_13144 13144 +#define IDS_DIALOGUE_13145 13145 +#define IDS_DIALOGUE_13146 13146 +#define IDS_DIALOGUE_13147 13147 +#define IDS_DIALOGUE_13148 13148 +#define IDS_DIALOGUE_13149 13149 +#define IDS_DIALOGUE_13150 13150 +#define IDS_DIALOGUE_13151 13151 +#define IDS_DIALOGUE_13152 13152 +#define IDS_DIALOGUE_13153 13153 +#define IDS_DIALOGUE_13154 13154 +#define IDS_DIALOGUE_13155 13155 +#define IDS_DIALOGUE_13156 13156 +#define IDS_DIALOGUE_13157 13157 +#define IDS_DIALOGUE_13158 13158 +#define IDS_DIALOGUE_13159 13159 +#define IDS_DIALOGUE_13160 13160 +#define IDS_DIALOGUE_13161 13161 +#define IDS_DIALOGUE_13162 13162 +#define IDS_DIALOGUE_13163 13163 +#define IDS_DIALOGUE_13164 13164 +#define IDS_DIALOGUE_13165 13165 +#define IDS_DIALOGUE_13166 13166 +#define IDS_DIALOGUE_13167 13167 +#define IDS_DIALOGUE_13168 13168 +#define IDS_DIALOGUE_13169 13169 +#define IDS_DIALOGUE_13170 13170 +#define IDS_DIALOGUE_13171 13171 +#define IDS_DIALOGUE_13172 13172 +#define IDS_DIALOGUE_13173 13173 +#define IDS_DIALOGUE_13174 13174 +#define IDS_DIALOGUE_13175 13175 +#define IDS_DIALOGUE_13176 13176 +#define IDS_DIALOGUE_13177 13177 +#define IDS_DIALOGUE_13178 13178 +#define IDS_DIALOGUE_13179 13179 +#define IDS_DIALOGUE_13180 13180 +#define IDS_DIALOGUE_13181 13181 +#define IDS_DIALOGUE_13182 13182 +#define IDS_DIALOGUE_13183 13183 +#define IDS_DIALOGUE_13184 13184 +#define IDS_DIALOGUE_13185 13185 +#define IDS_DIALOGUE_13186 13186 +#define IDS_DIALOGUE_13187 13187 +#define IDS_DIALOGUE_13188 13188 +#define IDS_DIALOGUE_13189 13189 +#define IDS_DIALOGUE_13190 13190 +#define IDS_DIALOGUE_13191 13191 +#define IDS_DIALOGUE_13192 13192 +#define IDS_DIALOGUE_13193 13193 +#define IDS_DIALOGUE_13194 13194 +#define IDS_DIALOGUE_13195 13195 +#define IDS_DIALOGUE_13196 13196 +#define IDS_DIALOGUE_13197 13197 +#define IDS_DIALOGUE_13198 13198 +#define IDS_DIALOGUE_13199 13199 +#define IDS_DIALOGUE_13200 13200 +#define IDS_DIALOGUE_13201 13201 +#define IDS_DIALOGUE_13202 13202 +#define IDS_DIALOGUE_13203 13203 +#define IDS_DIALOGUE_13204 13204 +#define IDS_DIALOGUE_13205 13205 +#define IDS_DIALOGUE_13206 13206 +#define IDS_DIALOGUE_13207 13207 +#define IDS_DIALOGUE_13208 13208 +#define IDS_DIALOGUE_13209 13209 +#define IDS_DIALOGUE_13210 13210 +#define IDS_DIALOGUE_13211 13211 +#define IDS_DIALOGUE_13212 13212 +#define IDS_DIALOGUE_13213 13213 +#define IDS_DIALOGUE_13214 13214 +#define IDS_DIALOGUE_13215 13215 +#define IDS_DIALOGUE_13216 13216 +#define IDS_DIALOGUE_13217 13217 +#define IDS_DIALOGUE_13218 13218 +#define IDS_DIALOGUE_13219 13219 +#define IDS_DIALOGUE_13220 13220 +#define IDS_DIALOGUE_13221 13221 +#define IDS_DIALOGUE_13222 13222 +#define IDS_DIALOGUE_13223 13223 +#define IDS_DIALOGUE_13224 13224 +#define IDS_DIALOGUE_13225 13225 +#define IDS_DIALOGUE_13226 13226 +#define IDS_DIALOGUE_13227 13227 +#define IDS_DIALOGUE_13228 13228 +#define IDS_DIALOGUE_13229 13229 +#define IDS_DIALOGUE_13230 13230 +#define IDS_DIALOGUE_13231 13231 +#define IDS_DIALOGUE_13232 13232 +#define IDS_DIALOGUE_13233 13233 +#define IDS_DIALOGUE_13234 13234 +#define IDS_DIALOGUE_13235 13235 +#define IDS_DIALOGUE_13236 13236 +#define IDS_DIALOGUE_13237 13237 +#define IDS_DIALOGUE_13238 13238 +#define IDS_DIALOGUE_13239 13239 +#define IDS_DIALOGUE_13240 13240 +#define IDS_DIALOGUE_13241 13241 +#define IDS_DIALOGUE_13242 13242 +#define IDS_DIALOGUE_13243 13243 +#define IDS_DIALOGUE_13244 13244 +#define IDS_DIALOGUE_13245 13245 +#define IDS_DIALOGUE_13246 13246 +#define IDS_DIALOGUE_13247 13247 +#define IDS_DIALOGUE_13248 13248 +#define IDS_DIALOGUE_13249 13249 +#define IDS_DIALOGUE_13250 13250 +#define IDS_DIALOGUE_13251 13251 +#define IDS_DIALOGUE_13252 13252 +#define IDS_DIALOGUE_13253 13253 +#define IDS_DIALOGUE_13254 13254 +#define IDS_DIALOGUE_13255 13255 +#define IDS_DIALOGUE_13256 13256 +#define IDS_DIALOGUE_13257 13257 +#define IDS_DIALOGUE_13258 13258 +#define IDS_DIALOGUE_13259 13259 +#define IDS_DIALOGUE_13260 13260 +#define IDS_DIALOGUE_13261 13261 +#define IDS_DIALOGUE_13262 13262 +#define IDS_DIALOGUE_13263 13263 +#define IDS_DIALOGUE_13264 13264 +#define IDS_DIALOGUE_13265 13265 +#define IDS_DIALOGUE_13266 13266 +#define IDS_DIALOGUE_13267 13267 +#define IDS_DIALOGUE_13268 13268 +#define IDS_DIALOGUE_13269 13269 +#define IDS_DIALOGUE_13270 13270 +#define IDS_DIALOGUE_13271 13271 +#define IDS_DIALOGUE_13272 13272 +#define IDS_DIALOGUE_13273 13273 +#define IDS_DIALOGUE_13274 13274 +#define IDS_DIALOGUE_13275 13275 +#define IDS_DIALOGUE_13276 13276 +#define IDS_DIALOGUE_13277 13277 +#define IDS_DIALOGUE_13278 13278 +#define IDS_DIALOGUE_13279 13279 +#define IDS_DIALOGUE_13280 13280 +#define IDS_DIALOGUE_13281 13281 +#define IDS_DIALOGUE_13282 13282 +#define IDS_DIALOGUE_13283 13283 +#define IDS_DIALOGUE_13284 13284 +#define IDS_DIALOGUE_13285 13285 +#define IDS_DIALOGUE_13286 13286 +#define IDS_DIALOGUE_13287 13287 +#define IDS_DIALOGUE_13288 13288 +#define IDS_DIALOGUE_13289 13289 +#define IDS_DIALOGUE_13290 13290 +#define IDS_DIALOGUE_13291 13291 +#define IDS_DIALOGUE_13292 13292 +#define IDS_DIALOGUE_13293 13293 +#define IDS_DIALOGUE_13294 13294 +#define IDS_DIALOGUE_13295 13295 +#define IDS_DIALOGUE_13296 13296 +#define IDS_DIALOGUE_13297 13297 +#define IDS_DIALOGUE_13298 13298 +#define IDS_DIALOGUE_13299 13299 +#define IDS_DIALOGUE_13300 13300 +#define IDS_DIALOGUE_13301 13301 +#define IDS_DIALOGUE_13302 13302 +#define IDS_DIALOGUE_13303 13303 +#define IDS_DIALOGUE_13304 13304 +#define IDS_DIALOGUE_13305 13305 +#define IDS_DIALOGUE_13306 13306 +#define IDS_DIALOGUE_13307 13307 +#define IDS_DIALOGUE_13308 13308 +#define IDS_DIALOGUE_13309 13309 +#define IDS_DIALOGUE_13310 13310 +#define IDS_DIALOGUE_13311 13311 +#define IDS_DIALOGUE_13312 13312 +#define IDS_DIALOGUE_13313 13313 +#define IDS_DIALOGUE_13314 13314 +#define IDS_DIALOGUE_13315 13315 +#define IDS_DIALOGUE_13316 13316 +#define IDS_DIALOGUE_13317 13317 +#define IDS_DIALOGUE_13318 13318 +#define IDS_DIALOGUE_13319 13319 +#define IDS_DIALOGUE_13320 13320 +#define IDS_DIALOGUE_13321 13321 +#define IDS_DIALOGUE_13322 13322 +#define IDS_DIALOGUE_13323 13323 +#define IDS_DIALOGUE_13324 13324 +#define IDS_DIALOGUE_13325 13325 +#define IDS_DIALOGUE_13326 13326 +#define IDS_DIALOGUE_13327 13327 +#define IDS_DIALOGUE_13328 13328 +#define IDS_DIALOGUE_13329 13329 +#define IDS_DIALOGUE_13330 13330 +#define IDS_DIALOGUE_13331 13331 +#define IDS_DIALOGUE_13332 13332 +#define IDS_DIALOGUE_13333 13333 +#define IDS_DIALOGUE_13334 13334 +#define IDS_DIALOGUE_13335 13335 +#define IDS_DIALOGUE_13336 13336 +#define IDS_DIALOGUE_13337 13337 +#define IDS_DIALOGUE_13338 13338 +#define IDS_DIALOGUE_13339 13339 +#define IDS_DIALOGUE_13340 13340 +#define IDS_DIALOGUE_13341 13341 +#define IDS_DIALOGUE_13342 13342 +#define IDS_DIALOGUE_13343 13343 +#define IDS_DIALOGUE_13344 13344 +#define IDS_DIALOGUE_13345 13345 +#define IDS_DIALOGUE_13346 13346 +#define IDS_DIALOGUE_13347 13347 +#define IDS_DIALOGUE_13348 13348 +#define IDS_DIALOGUE_13349 13349 +#define IDS_DIALOGUE_13350 13350 +#define IDS_DIALOGUE_13351 13351 +#define IDS_DIALOGUE_13352 13352 +#define IDS_DIALOGUE_13353 13353 +#define IDS_DIALOGUE_13354 13354 +#define IDS_DIALOGUE_13355 13355 +#define IDS_DIALOGUE_13356 13356 +#define IDS_DIALOGUE_13357 13357 +#define IDS_DIALOGUE_13358 13358 +#define IDS_DIALOGUE_13359 13359 +#define IDS_DIALOGUE_13360 13360 +#define IDS_DIALOGUE_13361 13361 +#define IDS_DIALOGUE_13362 13362 +#define IDS_DIALOGUE_13363 13363 +#define IDS_DIALOGUE_13364 13364 +#define IDS_DIALOGUE_13365 13365 +#define IDS_DIALOGUE_13366 13366 +#define IDS_DIALOGUE_13367 13367 +#define IDS_DIALOGUE_13368 13368 +#define IDS_DIALOGUE_13369 13369 +#define IDS_DIALOGUE_13370 13370 +#define IDS_DIALOGUE_13371 13371 +#define IDS_DIALOGUE_13372 13372 +#define IDS_DIALOGUE_13373 13373 +#define IDS_DIALOGUE_13374 13374 +#define IDS_DIALOGUE_13375 13375 +#define IDS_DIALOGUE_13376 13376 +#define IDS_DIALOGUE_13377 13377 +#define IDS_DIALOGUE_13378 13378 +#define IDS_DIALOGUE_13379 13379 +#define IDS_DIALOGUE_13380 13380 +#define IDS_DIALOGUE_13381 13381 +#define IDS_DIALOGUE_13382 13382 +#define IDS_DIALOGUE_13383 13383 +#define IDS_DIALOGUE_13384 13384 +#define IDS_DIALOGUE_13385 13385 +#define IDS_DIALOGUE_13386 13386 +#define IDS_DIALOGUE_13387 13387 +#define IDS_DIALOGUE_13388 13388 +#define IDS_DIALOGUE_13389 13389 +#define IDS_DIALOGUE_13390 13390 +#define IDS_DIALOGUE_13391 13391 +#define IDS_DIALOGUE_13392 13392 +#define IDS_DIALOGUE_13393 13393 +#define IDS_DIALOGUE_13394 13394 +#define IDS_DIALOGUE_13395 13395 +#define IDS_DIALOGUE_13396 13396 +#define IDS_DIALOGUE_13397 13397 +#define IDS_DIALOGUE_13398 13398 +#define IDS_DIALOGUE_13399 13399 +#define IDS_DIALOGUE_13400 13400 +#define IDS_DIALOGUE_13401 13401 +#define IDS_DIALOGUE_13402 13402 +#define IDS_DIALOGUE_13403 13403 +#define IDS_DIALOGUE_13404 13404 +#define IDS_DIALOGUE_13405 13405 +#define IDS_DIALOGUE_13406 13406 +#define IDS_DIALOGUE_13407 13407 +#define IDS_DIALOGUE_13408 13408 +#define IDS_DIALOGUE_13409 13409 +#define IDS_DIALOGUE_13410 13410 +#define IDS_DIALOGUE_13411 13411 +#define IDS_DIALOGUE_13412 13412 +#define IDS_DIALOGUE_13413 13413 +#define IDS_DIALOGUE_13414 13414 +#define IDS_DIALOGUE_13415 13415 +#define IDS_DIALOGUE_13416 13416 +#define IDS_DIALOGUE_13417 13417 +#define IDS_DIALOGUE_13418 13418 +#define IDS_DIALOGUE_13419 13419 +#define IDS_DIALOGUE_13420 13420 +#define IDS_DIALOGUE_13421 13421 +#define IDS_DIALOGUE_13422 13422 +#define IDS_DIALOGUE_13423 13423 +#define IDS_DIALOGUE_13424 13424 +#define IDS_DIALOGUE_13425 13425 +#define IDS_DIALOGUE_13426 13426 +#define IDS_DIALOGUE_13427 13427 +#define IDS_DIALOGUE_13428 13428 +#define IDS_DIALOGUE_13429 13429 +#define IDS_DIALOGUE_13430 13430 +#define IDS_DIALOGUE_13431 13431 +#define IDS_DIALOGUE_13432 13432 +#define IDS_DIALOGUE_13433 13433 +#define IDS_DIALOGUE_13434 13434 +#define IDS_DIALOGUE_13435 13435 +#define IDS_DIALOGUE_13436 13436 +#define IDS_DIALOGUE_13437 13437 +#define IDS_DIALOGUE_13438 13438 +#define IDS_DIALOGUE_13439 13439 +#define IDS_DIALOGUE_13440 13440 +#define IDS_DIALOGUE_13441 13441 +#define IDS_DIALOGUE_13442 13442 +#define IDS_DIALOGUE_13443 13443 +#define IDS_DIALOGUE_13444 13444 +#define IDS_DIALOGUE_13445 13445 +#define IDS_DIALOGUE_13446 13446 +#define IDS_DIALOGUE_13447 13447 +#define IDS_DIALOGUE_13448 13448 +#define IDS_DIALOGUE_13449 13449 +#define IDS_DIALOGUE_13450 13450 +#define IDS_DIALOGUE_13451 13451 +#define IDS_DIALOGUE_13452 13452 +#define IDS_DIALOGUE_13453 13453 +#define IDS_DIALOGUE_13454 13454 +#define IDS_DIALOGUE_13455 13455 +#define IDS_DIALOGUE_13456 13456 +#define IDS_DIALOGUE_13457 13457 +#define IDS_DIALOGUE_13458 13458 +#define IDS_DIALOGUE_13459 13459 +#define IDS_DIALOGUE_13460 13460 +#define IDS_DIALOGUE_13461 13461 +#define IDS_DIALOGUE_13462 13462 +#define IDS_DIALOGUE_13463 13463 +#define IDS_DIALOGUE_13464 13464 +#define IDS_DIALOGUE_13465 13465 +#define IDS_DIALOGUE_13466 13466 +#define IDS_DIALOGUE_13467 13467 +#define IDS_DIALOGUE_13468 13468 +#define IDS_DIALOGUE_13469 13469 +#define IDS_DIALOGUE_13470 13470 +#define IDS_DIALOGUE_13471 13471 +#define IDS_DIALOGUE_13472 13472 +#define IDS_DIALOGUE_13473 13473 +#define IDS_DIALOGUE_13474 13474 +#define IDS_DIALOGUE_13475 13475 +#define IDS_DIALOGUE_13476 13476 +#define IDS_DIALOGUE_13477 13477 +#define IDS_DIALOGUE_13478 13478 +#define IDS_DIALOGUE_13479 13479 +#define IDS_DIALOGUE_13480 13480 +#define IDS_DIALOGUE_13481 13481 +#define IDS_DIALOGUE_13482 13482 +#define IDS_DIALOGUE_13483 13483 +#define IDS_DIALOGUE_13484 13484 +#define IDS_DIALOGUE_13485 13485 +#define IDS_DIALOGUE_13486 13486 +#define IDS_DIALOGUE_13487 13487 +#define IDS_DIALOGUE_13488 13488 +#define IDS_DIALOGUE_13489 13489 +#define IDS_DIALOGUE_13490 13490 +#define IDS_DIALOGUE_13491 13491 +#define IDS_DIALOGUE_13492 13492 +#define IDS_DIALOGUE_13493 13493 +#define IDS_DIALOGUE_13494 13494 +#define IDS_DIALOGUE_13495 13495 +#define IDS_DIALOGUE_13496 13496 +#define IDS_DIALOGUE_13497 13497 +#define IDS_DIALOGUE_13498 13498 +#define IDS_DIALOGUE_13499 13499 +#define IDS_DIALOGUE_13500 13500 +#define IDS_DIALOGUE_13501 13501 +#define IDS_DIALOGUE_13502 13502 +#define IDS_DIALOGUE_13503 13503 +#define IDS_DIALOGUE_13504 13504 +#define IDS_DIALOGUE_13505 13505 +#define IDS_DIALOGUE_13506 13506 +#define IDS_DIALOGUE_13507 13507 +#define IDS_DIALOGUE_13508 13508 +#define IDS_DIALOGUE_13509 13509 +#define IDS_DIALOGUE_13510 13510 +#define IDS_DIALOGUE_13511 13511 +#define IDS_DIALOGUE_13512 13512 +#define IDS_DIALOGUE_13513 13513 +#define IDS_DIALOGUE_13514 13514 +#define IDS_DIALOGUE_13515 13515 +#define IDS_DIALOGUE_13516 13516 +#define IDS_DIALOGUE_13517 13517 +#define IDS_DIALOGUE_13518 13518 +#define IDS_DIALOGUE_13519 13519 +#define IDS_DIALOGUE_13520 13520 +#define IDS_DIALOGUE_13521 13521 +#define IDS_DIALOGUE_13522 13522 +#define IDS_DIALOGUE_13523 13523 +#define IDS_DIALOGUE_13524 13524 +#define IDS_DIALOGUE_13525 13525 +#define IDS_DIALOGUE_13526 13526 +#define IDS_DIALOGUE_13527 13527 +#define IDS_DIALOGUE_13528 13528 +#define IDS_DIALOGUE_13529 13529 +#define IDS_DIALOGUE_13530 13530 +#define IDS_DIALOGUE_13531 13531 +#define IDS_DIALOGUE_13532 13532 +#define IDS_DIALOGUE_13533 13533 +#define IDS_DIALOGUE_13534 13534 +#define IDS_DIALOGUE_13535 13535 +#define IDS_DIALOGUE_13536 13536 +#define IDS_DIALOGUE_13537 13537 +#define IDS_DIALOGUE_13538 13538 +#define IDS_DIALOGUE_13539 13539 +#define IDS_DIALOGUE_13540 13540 +#define IDS_DIALOGUE_13541 13541 +#define IDS_DIALOGUE_13542 13542 +#define IDS_DIALOGUE_13543 13543 +#define IDS_DIALOGUE_13544 13544 +#define IDS_DIALOGUE_13545 13545 +#define IDS_DIALOGUE_13546 13546 +#define IDS_DIALOGUE_13547 13547 +#define IDS_DIALOGUE_13548 13548 +#define IDS_DIALOGUE_13549 13549 +#define IDS_DIALOGUE_13550 13550 +#define IDS_DIALOGUE_13551 13551 +#define IDS_DIALOGUE_13552 13552 +#define IDS_DIALOGUE_13553 13553 +#define IDS_DIALOGUE_13554 13554 +#define IDS_DIALOGUE_13555 13555 +#define IDS_DIALOGUE_13556 13556 +#define IDS_DIALOGUE_13557 13557 +#define IDS_DIALOGUE_13558 13558 +#define IDS_DIALOGUE_13559 13559 +#define IDS_DIALOGUE_13560 13560 +#define IDS_DIALOGUE_13561 13561 +#define IDS_DIALOGUE_13562 13562 +#define IDS_DIALOGUE_13563 13563 +#define IDS_DIALOGUE_13564 13564 +#define IDS_DIALOGUE_13565 13565 +#define IDS_DIALOGUE_13566 13566 +#define IDS_DIALOGUE_13567 13567 +#define IDS_DIALOGUE_13568 13568 +#define IDS_DIALOGUE_13569 13569 +#define IDS_DIALOGUE_13570 13570 +#define IDS_DIALOGUE_13571 13571 +#define IDS_DIALOGUE_13572 13572 +#define IDS_DIALOGUE_13573 13573 +#define IDS_DIALOGUE_13574 13574 +#define IDS_DIALOGUE_13575 13575 +#define IDS_DIALOGUE_13576 13576 +#define IDS_DIALOGUE_13577 13577 +#define IDS_DIALOGUE_13578 13578 +#define IDS_DIALOGUE_13579 13579 +#define IDS_DIALOGUE_13580 13580 +#define IDS_DIALOGUE_13581 13581 +#define IDS_DIALOGUE_13582 13582 +#define IDS_DIALOGUE_13583 13583 +#define IDS_DIALOGUE_13584 13584 +#define IDS_DIALOGUE_13585 13585 +#define IDS_DIALOGUE_13586 13586 +#define IDS_DIALOGUE_13587 13587 +#define IDS_DIALOGUE_13588 13588 +#define IDS_DIALOGUE_13589 13589 +#define IDS_DIALOGUE_13590 13590 +#define IDS_DIALOGUE_13591 13591 +#define IDS_DIALOGUE_13592 13592 +#define IDS_DIALOGUE_13593 13593 +#define IDS_DIALOGUE_13594 13594 +#define IDS_DIALOGUE_13595 13595 +#define IDS_DIALOGUE_13596 13596 +#define IDS_DIALOGUE_13597 13597 +#define IDS_DIALOGUE_13598 13598 +#define IDS_DIALOGUE_13599 13599 +#define IDS_DIALOGUE_13600 13600 +#define IDS_DIALOGUE_13601 13601 +#define IDS_DIALOGUE_13602 13602 +#define IDS_DIALOGUE_13603 13603 +#define IDS_DIALOGUE_13604 13604 +#define IDS_DIALOGUE_13605 13605 +#define IDS_DIALOGUE_13606 13606 +#define IDS_DIALOGUE_13607 13607 +#define IDS_DIALOGUE_13608 13608 +#define IDS_DIALOGUE_13609 13609 +#define IDS_DIALOGUE_13610 13610 +#define IDS_DIALOGUE_13611 13611 +#define IDS_DIALOGUE_13612 13612 +#define IDS_DIALOGUE_13613 13613 +#define IDS_DIALOGUE_13614 13614 +#define IDS_DIALOGUE_13615 13615 +#define IDS_DIALOGUE_13616 13616 +#define IDS_DIALOGUE_13617 13617 +#define IDS_DIALOGUE_13618 13618 +#define IDS_DIALOGUE_13619 13619 +#define IDS_DIALOGUE_13620 13620 +#define IDS_DIALOGUE_13621 13621 +#define IDS_DIALOGUE_13622 13622 +#define IDS_DIALOGUE_13623 13623 +#define IDS_DIALOGUE_13624 13624 +#define IDS_DIALOGUE_13625 13625 +#define IDS_DIALOGUE_13626 13626 +#define IDS_DIALOGUE_13627 13627 +#define IDS_DIALOGUE_13628 13628 +#define IDS_DIALOGUE_13629 13629 +#define IDS_DIALOGUE_13630 13630 +#define IDS_DIALOGUE_13631 13631 +#define IDS_DIALOGUE_13632 13632 +#define IDS_DIALOGUE_13633 13633 +#define IDS_DIALOGUE_13634 13634 +#define IDS_DIALOGUE_13635 13635 +#define IDS_DIALOGUE_13636 13636 +#define IDS_DIALOGUE_13637 13637 +#define IDS_DIALOGUE_13638 13638 +#define IDS_DIALOGUE_13639 13639 +#define IDS_DIALOGUE_13640 13640 +#define IDS_DIALOGUE_13641 13641 +#define IDS_DIALOGUE_13642 13642 +#define IDS_DIALOGUE_13643 13643 +#define IDS_DIALOGUE_13644 13644 +#define IDS_DIALOGUE_13645 13645 +#define IDS_DIALOGUE_13646 13646 +#define IDS_DIALOGUE_13647 13647 +#define IDS_DIALOGUE_13648 13648 +#define IDS_DIALOGUE_13649 13649 +#define IDS_DIALOGUE_13650 13650 +#define IDS_DIALOGUE_13651 13651 +#define IDS_DIALOGUE_13652 13652 +#define IDS_DIALOGUE_13653 13653 +#define IDS_DIALOGUE_13654 13654 +#define IDS_DIALOGUE_13655 13655 +#define IDS_DIALOGUE_13656 13656 +#define IDS_DIALOGUE_13657 13657 +#define IDS_DIALOGUE_13658 13658 +#define IDS_DIALOGUE_13659 13659 +#define IDS_DIALOGUE_13660 13660 +#define IDS_DIALOGUE_13661 13661 +#define IDS_DIALOGUE_13662 13662 +#define IDS_DIALOGUE_13663 13663 +#define IDS_DIALOGUE_13664 13664 +#define IDS_DIALOGUE_13665 13665 +#define IDS_DIALOGUE_13666 13666 +#define IDS_DIALOGUE_13667 13667 +#define IDS_DIALOGUE_13668 13668 +#define IDS_DIALOGUE_13669 13669 +#define IDS_DIALOGUE_13670 13670 +#define IDS_DIALOGUE_13671 13671 +#define IDS_DIALOGUE_13672 13672 +#define IDS_DIALOGUE_13673 13673 +#define IDS_DIALOGUE_13674 13674 +#define IDS_DIALOGUE_13675 13675 +#define IDS_DIALOGUE_13676 13676 +#define IDS_DIALOGUE_13677 13677 +#define IDS_DIALOGUE_13678 13678 +#define IDS_DIALOGUE_13679 13679 +#define IDS_DIALOGUE_13680 13680 +#define IDS_DIALOGUE_13681 13681 +#define IDS_DIALOGUE_13682 13682 +#define IDS_DIALOGUE_13683 13683 +#define IDS_DIALOGUE_13684 13684 +#define IDS_DIALOGUE_13685 13685 +#define IDS_DIALOGUE_13686 13686 +#define IDS_DIALOGUE_13687 13687 +#define IDS_DIALOGUE_13688 13688 +#define IDS_DIALOGUE_13689 13689 +#define IDS_DIALOGUE_13690 13690 +#define IDS_DIALOGUE_13691 13691 +#define IDS_DIALOGUE_13692 13692 +#define IDS_DIALOGUE_13693 13693 +#define IDS_DIALOGUE_13694 13694 +#define IDS_DIALOGUE_13695 13695 +#define IDS_DIALOGUE_13696 13696 +#define IDS_DIALOGUE_13697 13697 +#define IDS_DIALOGUE_13698 13698 +#define IDS_DIALOGUE_13699 13699 +#define IDS_DIALOGUE_13700 13700 +#define IDS_DIALOGUE_13701 13701 +#define IDS_DIALOGUE_13702 13702 +#define IDS_DIALOGUE_13703 13703 +#define IDS_DIALOGUE_13704 13704 +#define IDS_DIALOGUE_13705 13705 +#define IDS_DIALOGUE_13706 13706 +#define IDS_DIALOGUE_13707 13707 +#define IDS_DIALOGUE_13708 13708 +#define IDS_DIALOGUE_13709 13709 +#define IDS_DIALOGUE_13710 13710 +#define IDS_DIALOGUE_13711 13711 +#define IDS_DIALOGUE_13712 13712 +#define IDS_DIALOGUE_13713 13713 +#define IDS_DIALOGUE_13714 13714 +#define IDS_DIALOGUE_13715 13715 +#define IDS_DIALOGUE_13716 13716 +#define IDS_DIALOGUE_13717 13717 +#define IDS_DIALOGUE_13718 13718 +#define IDS_DIALOGUE_13719 13719 +#define IDS_DIALOGUE_13720 13720 +#define IDS_DIALOGUE_13721 13721 +#define IDS_DIALOGUE_13722 13722 +#define IDS_DIALOGUE_13723 13723 +#define IDS_DIALOGUE_13724 13724 +#define IDS_DIALOGUE_13725 13725 +#define IDS_DIALOGUE_13726 13726 +#define IDS_DIALOGUE_13727 13727 +#define IDS_DIALOGUE_13728 13728 +#define IDS_DIALOGUE_13729 13729 +#define IDS_DIALOGUE_13730 13730 +#define IDS_DIALOGUE_13731 13731 +#define IDS_DIALOGUE_13732 13732 +#define IDS_DIALOGUE_13733 13733 +#define IDS_DIALOGUE_13734 13734 +#define IDS_DIALOGUE_13735 13735 +#define IDS_DIALOGUE_13736 13736 +#define IDS_DIALOGUE_13737 13737 +#define IDS_DIALOGUE_13738 13738 +#define IDS_DIALOGUE_13739 13739 +#define IDS_DIALOGUE_13740 13740 +#define IDS_DIALOGUE_13741 13741 +#define IDS_DIALOGUE_13742 13742 +#define IDS_DIALOGUE_13743 13743 +#define IDS_DIALOGUE_13744 13744 +#define IDS_DIALOGUE_13745 13745 +#define IDS_DIALOGUE_13746 13746 +#define IDS_DIALOGUE_13747 13747 +#define IDS_DIALOGUE_13748 13748 +#define IDS_DIALOGUE_13749 13749 +#define IDS_DIALOGUE_13750 13750 +#define IDS_DIALOGUE_13751 13751 +#define IDS_DIALOGUE_13752 13752 +#define IDS_DIALOGUE_13753 13753 +#define IDS_DIALOGUE_13754 13754 +#define IDS_DIALOGUE_13755 13755 +#define IDS_DIALOGUE_13756 13756 +#define IDS_DIALOGUE_13757 13757 +#define IDS_DIALOGUE_14000 14000 +#define IDS_INTEL_20000 20000 +#define IDS_AISOUNDS_20000 20000 +#define IDS_INTEL_20001 20001 +#define IDS_AISOUNDS_20001 20001 +#define IDS_INTEL_20002 20002 +#define IDS_AISOUNDS_20002 20002 +#define IDS_INTEL_20003 20003 +#define IDS_AISOUNDS_20003 20003 +#define IDS_INTEL_20004 20004 +#define IDS_INTEL_20005 20005 +#define IDS_INTEL_20006 20006 +#define IDS_INTEL_20007 20007 +#define IDS_INTEL_20008 20008 +#define IDS_INTEL_20009 20009 +#define IDS_INTEL_20010 20010 +#define IDS_INTEL_20011 20011 +#define IDS_INTEL_20012 20012 +#define IDS_INTEL_20013 20013 +#define IDS_INTEL_20014 20014 +#define IDS_INTEL_20015 20015 +#define IDS_INTEL_20016 20016 +#define IDS_INTEL_20017 20017 +#define IDS_INTEL_20018 20018 +#define IDS_INTEL_20019 20019 +#define IDS_INTEL_20020 20020 +#define IDS_INTEL_20021 20021 +#define IDS_INTEL_20022 20022 +#define IDS_INTEL_20023 20023 +#define IDS_INTEL_20024 20024 +#define IDS_INTEL_20025 20025 +#define IDS_INTEL_20026 20026 +#define IDS_INTEL_20027 20027 +#define IDS_INTEL_20028 20028 +#define IDS_INTEL_20029 20029 +#define IDS_INTEL_20030 20030 +#define IDS_INTEL_20031 20031 +#define IDS_INTEL_20032 20032 +#define IDS_INTEL_20033 20033 +#define IDS_INTEL_20034 20034 +#define IDS_INTEL_20035 20035 +#define IDS_INTEL_20036 20036 +#define IDS_INTEL_20037 20037 +#define IDS_INTEL_20038 20038 +#define IDS_INTEL_20039 20039 +#define IDS_INTEL_20040 20040 +#define IDS_INTEL_20041 20041 +#define IDS_INTEL_20042 20042 +#define IDS_INTEL_20043 20043 +#define IDS_INTEL_20044 20044 +#define IDS_INTEL_20045 20045 +#define IDS_INTEL_20046 20046 +#define IDS_INTEL_20047 20047 +#define IDS_INTEL_20048 20048 +#define IDS_INTEL_20049 20049 +#define IDS_INTEL_20050 20050 +#define IDS_INTEL_20051 20051 +#define IDS_INTEL_20052 20052 +#define IDS_INTEL_20053 20053 +#define IDS_INTEL_20054 20054 +#define IDS_INTEL_20055 20055 +#define IDS_INTEL_20056 20056 +#define IDS_INTEL_20057 20057 +#define IDS_INTEL_20058 20058 +#define IDS_INTEL_20059 20059 +#define IDS_INTEL_20060 20060 +#define IDS_INTEL_20061 20061 +#define IDS_INTEL_20062 20062 +#define IDS_INTEL_20063 20063 +#define IDS_INTEL_20064 20064 +#define IDS_INTEL_20065 20065 +#define IDS_INTEL_20066 20066 +#define IDS_INTEL_20067 20067 +#define IDS_INTEL_20068 20068 +#define IDS_INTEL_20069 20069 +#define IDS_INTEL_20070 20070 +#define IDS_INTEL_20071 20071 +#define IDS_INTEL_20072 20072 +#define IDS_INTEL_20073 20073 +#define IDS_INTEL_20074 20074 +#define IDS_INTEL_20075 20075 +#define IDS_INTEL_20076 20076 +#define IDS_INTEL_20077 20077 +#define IDS_INTEL_20078 20078 +#define IDS_INTEL_20079 20079 +#define IDS_INTEL_20080 20080 +#define IDS_INTEL_20081 20081 +#define IDS_INTEL_20082 20082 +#define IDS_INTEL_20083 20083 +#define IDS_INTEL_20084 20084 +#define IDS_INTEL_20085 20085 +#define IDS_INTEL_20086 20086 +#define IDS_INTEL_20087 20087 +#define IDS_INTEL_20088 20088 +#define IDS_INTEL_20089 20089 +#define IDS_INTEL_20090 20090 +#define IDS_INTEL_20091 20091 +#define IDS_INTEL_20092 20092 +#define IDS_INTEL_20093 20093 +#define IDS_INTEL_20094 20094 +#define IDS_INTEL_20095 20095 +#define IDS_INTEL_20096 20096 +#define IDS_INTEL_20097 20097 +#define IDS_INTEL_20098 20098 +#define IDS_INTEL_20099 20099 +#define IDS_INTEL_20100 20100 +#define IDS_INTEL_20101 20101 +#define IDS_INTEL_20102 20102 +#define IDS_INTEL_20103 20103 +#define IDS_INTEL_20104 20104 +#define IDS_INTEL_20105 20105 +#define IDS_INTEL_20106 20106 +#define IDS_INTEL_20107 20107 +#define IDS_INTEL_20108 20108 +#define IDS_INTEL_20109 20109 +#define IDS_INTEL_20110 20110 +#define IDS_INTEL_20111 20111 +#define IDS_INTEL_20112 20112 +#define IDS_INTEL_20113 20113 +#define IDS_INTEL_20114 20114 +#define IDS_INTEL_20115 20115 +#define IDS_INTEL_20116 20116 +#define IDS_INTEL_20117 20117 +#define IDS_INTEL_20118 20118 +#define IDS_INTEL_20119 20119 +#define IDS_INTEL_20120 20120 +#define IDS_INTEL_20121 20121 +#define IDS_INTEL_20122 20122 +#define IDS_INTEL_20123 20123 +#define IDS_INTEL_20124 20124 +#define IDS_INTEL_20125 20125 +#define IDS_INTEL_20126 20126 +#define IDS_INTEL_20127 20127 +#define IDS_INTEL_20128 20128 +#define IDS_INTEL_20129 20129 +#define IDS_INTEL_20130 20130 +#define IDS_INTEL_20131 20131 +#define IDS_INTEL_20132 20132 +#define IDS_INTEL_20133 20133 +#define IDS_INTEL_20134 20134 +#define IDS_INTEL_20135 20135 +#define IDS_INTEL_20136 20136 +#define IDS_INTEL_20137 20137 +#define IDS_INTEL_20138 20138 +#define IDS_DIALOGUE_20138 20138 +#define IDS_INTEL_20139 20139 +#define IDS_INTEL_20140 20140 +#define IDS_DIALOGUE_20140 20140 +#define IDS_INTEL_20141 20141 +#define IDS_DIALOGUE_20141 20141 +#define IDS_INTEL_20142 20142 +#define IDS_DIALOGUE_20142 20142 +#define IDS_INTEL_20143 20143 +#define IDS_DIALOGUE_20143 20143 +#define IDS_INTEL_20144 20144 +#define IDS_INTEL_20145 20145 +#define IDS_INTEL_20146 20146 +#define IDS_INTEL_20147 20147 +#define IDS_DIALOGUE_20147 20147 +#define IDS_INTEL_20148 20148 +#define IDS_DIALOGUE_20148 20148 +#define IDS_INTEL_20149 20149 +#define IDS_DIALOGUE_20149 20149 +#define IDS_INTEL_20150 20150 +#define IDS_DIALOGUE_20150 20150 +#define IDS_INTEL_20151 20151 +#define IDS_INTEL_20152 20152 +#define IDS_INTEL_20153 20153 +#define IDS_INTEL_20154 20154 +#define IDS_DIALOGUE_20154 20154 +#define IDS_INTEL_20155 20155 +#define IDS_DIALOGUE_20155 20155 +#define IDS_INTEL_20156 20156 +#define IDS_DIALOGUE_20156 20156 +#define IDS_INTEL_20157 20157 +#define IDS_DIALOGUE_20157 20157 +#define IDS_INTEL_20158 20158 +#define IDS_INTEL_20159 20159 +#define IDS_INTEL_20160 20160 +#define IDS_INTEL_20161 20161 +#define IDS_INTEL_20162 20162 +#define IDS_INTEL_20163 20163 +#define IDS_INTEL_20164 20164 +#define IDS_INTEL_20165 20165 +#define IDS_INTEL_20166 20166 +#define IDS_INTEL_20167 20167 +#define IDS_INTEL_20168 20168 +#define IDS_INTEL_20169 20169 +#define IDS_INTEL_20170 20170 +#define IDS_INTEL_20171 20171 +#define IDS_INTEL_20172 20172 +#define IDS_INTEL_20173 20173 +#define IDS_INTEL_20174 20174 +#define IDS_INTEL_20175 20175 +#define IDS_INTEL_20176 20176 +#define IDS_INTEL_20177 20177 +#define IDS_INTEL_20178 20178 +#define IDS_INTEL_20179 20179 +#define IDS_INTEL_20180 20180 +#define IDS_DIALOGUE_20180 20180 +#define IDS_INTEL_20181 20181 +#define IDS_INTEL_20182 20182 +#define IDS_DIALOGUE_20182 20182 +#define IDS_INTEL_20183 20183 +#define IDS_DIALOGUE_20183 20183 +#define IDS_INTEL_20184 20184 +#define IDS_DIALOGUE_20184 20184 +#define IDS_INTEL_20185 20185 +#define IDS_DIALOGUE_20185 20185 +#define IDS_INTEL_20186 20186 +#define IDS_DIALOGUE_20186 20186 +#define IDS_INTEL_20187 20187 +#define IDS_DIALOGUE_20187 20187 +#define IDS_INTEL_20188 20188 +#define IDS_INTEL_20189 20189 +#define IDS_INTEL_20190 20190 +#define IDS_DIALOGUE_20190 20190 +#define IDS_INTEL_20191 20191 +#define IDS_INTEL_20192 20192 +#define IDS_INTEL_20193 20193 +#define IDS_INTEL_20194 20194 +#define IDS_INTEL_20195 20195 +#define IDS_INTEL_20196 20196 +#define IDS_INTEL_20197 20197 +#define IDS_INTEL_20198 20198 +#define IDS_INTEL_20199 20199 +#define IDS_INTEL_20200 20200 +#define IDS_INTEL_20201 20201 +#define IDS_INTEL_20202 20202 +#define IDS_INTEL_20203 20203 +#define IDS_INTEL_20204 20204 +#define IDS_INTEL_20205 20205 +#define IDS_INTEL_20206 20206 +#define IDS_INTEL_20207 20207 +#define IDS_INTEL_20208 20208 +#define IDS_INTEL_20209 20209 +#define IDS_INTEL_20210 20210 +#define IDS_INTEL_20211 20211 +#define IDS_INTEL_20212 20212 +#define IDS_INTEL_20213 20213 +#define IDS_INTEL_20214 20214 +#define IDS_INTEL_20215 20215 +#define IDS_INTEL_20216 20216 +#define IDS_INTEL_20217 20217 +#define IDS_INTEL_20218 20218 +#define IDS_INTEL_20219 20219 +#define IDS_INTEL_20220 20220 +#define IDS_INTEL_20221 20221 +#define IDS_INTEL_20222 20222 +#define IDS_INTEL_20223 20223 +#define IDS_INTEL_20224 20224 +#define IDS_INTEL_20225 20225 +#define IDS_INTEL_20226 20226 +#define IDS_INTEL_20227 20227 +#define IDS_INTEL_20228 20228 +#define IDS_INTEL_20229 20229 +#define IDS_INTEL_20230 20230 +#define IDS_INTEL_20231 20231 +#define IDS_INTEL_20232 20232 +#define IDS_INTEL_20233 20233 +#define IDS_INTEL_20234 20234 +#define IDS_INTEL_20235 20235 +#define IDS_INTEL_20236 20236 +#define IDS_INTEL_20237 20237 +#define IDS_INTEL_20238 20238 +#define IDS_INTEL_20239 20239 +#define IDS_INTEL_20240 20240 +#define IDS_INTEL_20241 20241 +#define IDS_INTEL_20242 20242 +#define IDS_INTEL_20243 20243 +#define IDS_INTEL_20244 20244 +#define IDS_INTEL_20245 20245 +#define IDS_INTEL_20246 20246 +#define IDS_INTEL_20247 20247 +#define IDS_INTEL_20248 20248 +#define IDS_INTEL_20249 20249 +#define IDS_INTEL_20250 20250 +#define IDS_INTEL_20251 20251 +#define IDS_INTEL_20252 20252 +#define IDS_INTEL_20253 20253 +#define IDS_INTEL_20254 20254 +#define IDS_INTEL_20255 20255 +#define IDS_INTEL_20256 20256 +#define IDS_INTEL_20257 20257 +#define IDS_INTEL_20258 20258 +#define IDS_INTEL_20259 20259 +#define IDS_INTEL_20260 20260 +#define IDS_INTEL_20261 20261 +#define IDS_INTEL_20262 20262 +#define IDS_INTEL_20263 20263 +#define IDS_INTEL_20264 20264 +#define IDS_INTEL_20265 20265 +#define IDS_INTEL_20266 20266 +#define IDS_INTEL_20267 20267 +#define IDS_INTEL_20268 20268 +#define IDS_INTEL_20269 20269 +#define IDS_INTEL_20270 20270 +#define IDS_INTEL_20271 20271 +#define IDS_INTEL_20272 20272 +#define IDS_INTEL_20273 20273 +#define IDS_INTEL_20274 20274 +#define IDS_INTEL_20275 20275 +#define IDS_INTEL_20276 20276 +#define IDS_INTEL_20277 20277 +#define IDS_INTEL_20278 20278 +#define IDS_INTEL_20279 20279 +#define IDS_INTEL_20280 20280 +#define IDS_INTEL_20281 20281 +#define IDS_INTEL_20282 20282 +#define IDS_INTEL_20283 20283 +#define IDS_INTEL_20284 20284 +#define IDS_INTEL_20285 20285 +#define IDS_INTEL_20286 20286 +#define IDS_INTEL_20287 20287 +#define IDS_INTEL_20288 20288 +#define IDS_INTEL_20289 20289 +#define IDS_INTEL_20290 20290 +#define IDS_INTEL_20291 20291 +#define IDS_INTEL_20292 20292 +#define IDS_INTEL_20293 20293 +#define IDS_INTEL_20294 20294 +#define IDS_INTEL_20295 20295 +#define IDS_INTEL_20296 20296 +#define IDS_INTEL_20297 20297 +#define IDS_INTEL_20298 20298 +#define IDS_INTEL_20299 20299 +#define IDS_INTEL_20300 20300 +#define IDS_INTEL_20301 20301 +#define IDS_INTEL_20302 20302 +#define IDS_INTEL_20303 20303 +#define IDS_INTEL_20304 20304 +#define IDS_INTEL_20305 20305 +#define IDS_INTEL_20306 20306 +#define IDS_INTEL_20307 20307 +#define IDS_INTEL_20308 20308 +#define IDS_INTEL_20309 20309 +#define IDS_INTEL_20310 20310 +#define IDS_INTEL_20311 20311 +#define IDS_INTEL_20312 20312 +#define IDS_INTEL_20313 20313 +#define IDS_INTEL_20314 20314 +#define IDS_INTEL_20315 20315 +#define IDS_INTEL_20316 20316 +#define IDS_INTEL_20317 20317 +#define IDS_INTEL_20318 20318 +#define IDS_INTEL_20319 20319 +#define IDS_INTEL_20320 20320 +#define IDS_INTEL_20321 20321 +#define IDS_INTEL_20322 20322 +#define IDS_INTEL_20323 20323 +#define IDS_INTEL_20324 20324 +#define IDS_INTEL_20325 20325 +#define IDS_INTEL_20326 20326 +#define IDS_INTEL_20327 20327 +#define IDS_INTEL_20328 20328 +#define IDS_INTEL_20329 20329 +#define IDS_INTEL_20330 20330 +#define IDS_INTEL_20331 20331 +#define IDS_INTEL_20332 20332 +#define IDS_INTEL_20333 20333 +#define IDS_INTEL_20334 20334 +#define IDS_INTEL_20335 20335 +#define IDS_INTEL_20336 20336 +#define IDS_INTEL_20337 20337 +#define IDS_INTEL_20338 20338 +#define IDS_INTEL_20339 20339 +#define IDS_INTEL_20340 20340 +#define IDS_INTEL_20341 20341 +#define IDS_INTEL_20342 20342 +#define IDS_INTEL_20343 20343 +#define IDS_INTEL_20344 20344 +#define IDS_INTEL_20345 20345 +#define IDS_INTEL_20346 20346 +#define IDS_INTEL_20347 20347 +#define IDS_INTEL_20348 20348 +#define IDS_INTEL_20349 20349 +#define IDS_INTEL_20350 20350 +#define IDS_INTEL_20351 20351 +#define IDS_INTEL_20352 20352 +#define IDS_INTEL_20353 20353 +#define IDS_INTEL_20354 20354 +#define IDS_INTEL_20355 20355 +#define IDS_INTEL_20356 20356 +#define IDS_INTEL_20357 20357 +#define IDS_INTEL_20358 20358 +#define IDS_INTEL_20359 20359 +#define IDS_INTEL_20360 20360 +#define IDS_INTEL_20361 20361 +#define IDS_INTEL_20362 20362 +#define IDS_INTEL_20363 20363 +#define IDS_INTEL_20364 20364 +#define IDS_INTEL_20365 20365 +#define IDS_INTEL_20366 20366 +#define IDS_INTEL_20367 20367 +#define IDS_INTEL_20368 20368 +#define IDS_INTEL_20369 20369 +#define IDS_INTEL_20370 20370 +#define IDS_INTEL_20371 20371 +#define IDS_INTEL_20372 20372 +#define IDS_INTEL_20373 20373 +#define IDS_INTEL_20374 20374 +#define IDS_INTEL_20375 20375 +#define IDS_INTEL_20376 20376 +#define IDS_INTEL_20377 20377 +#define IDS_INTEL_20378 20378 +#define IDS_INTEL_20379 20379 +#define IDS_INTEL_20380 20380 +#define IDS_INTEL_20381 20381 +#define IDS_INTEL_20382 20382 +#define IDS_INTEL_20383 20383 +#define IDS_INTEL_20384 20384 +#define IDS_INTEL_20385 20385 +#define IDS_INTEL_20386 20386 +#define IDS_INTEL_20387 20387 +#define IDS_INTEL_20388 20388 +#define IDS_INTEL_20389 20389 +#define IDS_INTEL_20390 20390 +#define IDS_INTEL_20391 20391 +#define IDS_INTEL_20392 20392 +#define IDS_INTEL_20393 20393 +#define IDS_INTEL_20394 20394 +#define IDS_INTEL_20395 20395 +#define IDS_INTEL_20396 20396 +#define IDS_INTEL_20397 20397 +#define IDS_INTEL_20398 20398 +#define IDS_INTEL_20399 20399 +#define IDS_INTEL_20400 20400 +#define IDS_INTEL_20401 20401 +#define IDS_INTEL_20402 20402 +#define IDS_INTEL_20403 20403 +#define IDS_INTEL_20404 20404 +#define IDS_INTEL_20405 20405 +#define IDS_INTEL_20406 20406 +#define IDS_INTEL_20407 20407 +#define IDS_INTEL_20408 20408 +#define IDS_INTEL_20409 20409 +#define IDS_INTEL_20410 20410 +#define IDS_INTEL_20411 20411 +#define IDS_INTEL_20412 20412 +#define IDS_INTEL_20413 20413 +#define IDS_INTEL_20414 20414 +#define IDS_INTEL_20415 20415 +#define IDS_INTEL_20416 20416 +#define IDS_INTEL_20417 20417 +#define IDS_INTEL_20418 20418 +#define IDS_INTEL_20419 20419 +#define IDS_INTEL_20420 20420 +#define IDS_INTEL_20421 20421 +#define IDS_INTEL_20422 20422 +#define IDS_INTEL_20423 20423 +#define IDS_INTEL_20424 20424 +#define IDS_INTEL_20425 20425 +#define IDS_INTEL_20426 20426 +#define IDS_INTEL_20427 20427 +#define IDS_INTEL_20428 20428 +#define IDS_INTEL_20429 20429 +#define IDS_INTEL_20430 20430 +#define IDS_INTEL_20431 20431 +#define IDS_INTEL_20432 20432 +#define IDS_INTEL_20433 20433 +#define IDS_INTEL_20434 20434 +#define IDS_INTEL_20435 20435 +#define IDS_INTEL_20436 20436 +#define IDS_INTEL_20437 20437 +#define IDS_INTEL_20438 20438 +#define IDS_INTEL_20439 20439 +#define IDS_INTEL_20440 20440 +#define IDS_INTEL_20441 20441 +#define IDS_INTEL_20442 20442 +#define IDS_INTEL_20443 20443 +#define IDS_INTEL_20444 20444 +#define IDS_INTEL_20445 20445 +#define IDS_INTEL_20446 20446 +#define IDS_INTEL_20447 20447 +#define IDS_INTEL_20448 20448 +#define IDS_INTEL_20449 20449 +#define IDS_INTEL_20450 20450 +#define IDS_INTEL_20451 20451 +#define IDS_INTEL_20452 20452 +#define IDS_INTEL_20453 20453 +#define IDS_INTEL_20454 20454 +#define IDS_INTEL_20455 20455 +#define IDS_INTEL_20456 20456 +#define IDS_INTEL_20457 20457 +#define IDS_INTEL_20458 20458 +#define IDS_INTEL_20459 20459 +#define IDS_INTEL_20460 20460 +#define IDS_INTEL_20461 20461 +#define IDS_INTEL_20462 20462 +#define IDS_INTEL_20463 20463 +#define IDS_INTEL_20464 20464 +#define IDS_INTEL_20465 20465 +#define IDS_INTEL_20466 20466 +#define IDS_INTEL_20467 20467 +#define IDS_INTEL_20468 20468 +#define IDS_INTEL_20469 20469 +#define IDS_INTEL_20470 20470 +#define IDS_INTEL_20471 20471 +#define IDS_INTEL_20472 20472 +#define IDS_INTEL_20473 20473 +#define IDS_INTEL_20474 20474 +#define IDS_INTEL_20475 20475 +#define IDS_INTEL_20476 20476 +#define IDS_INTEL_20477 20477 +#define IDS_INTEL_20478 20478 +#define IDS_INTEL_20479 20479 +#define IDS_INTEL_20480 20480 +#define IDS_INTEL_20481 20481 +#define IDS_INTEL_20482 20482 +#define IDS_INTEL_20483 20483 +#define IDS_INTEL_20484 20484 +#define IDS_INTEL_20485 20485 +#define IDS_INTEL_20486 20486 +#define IDS_INTEL_20487 20487 +#define IDS_INTEL_20488 20488 +#define IDS_INTEL_20489 20489 +#define IDS_INTEL_20490 20490 +#define IDS_INTEL_20491 20491 +#define IDS_INTEL_20492 20492 +#define IDS_INTEL_20493 20493 +#define IDS_INTEL_20494 20494 +#define IDS_INTEL_20495 20495 +#define IDS_INTEL_20496 20496 +#define IDS_INTEL_20497 20497 +#define IDS_INTEL_20498 20498 +#define IDS_INTEL_20499 20499 +#define IDS_INTEL_20500 20500 +#define IDS_INTEL_20501 20501 +#define IDS_INTEL_20502 20502 +#define IDS_INTEL_20503 20503 +#define IDS_INTEL_20504 20504 +#define IDS_INTEL_20505 20505 +#define IDS_INTEL_20506 20506 +#define IDS_INTEL_20507 20507 +#define IDS_INTEL_20508 20508 +#define IDS_INTEL_20509 20509 +#define IDS_INTEL_20510 20510 +#define IDS_INTEL_20511 20511 +#define IDS_INTEL_20512 20512 +#define IDS_INTEL_20513 20513 +#define IDS_INTEL_20514 20514 +#define IDS_INTEL_20515 20515 +#define IDS_INTEL_20516 20516 +#define IDS_INTEL_20517 20517 +#define IDS_INTEL_20518 20518 +#define IDS_INTEL_20519 20519 +#define IDS_INTEL_20520 20520 +#define IDS_INTEL_20521 20521 +#define IDS_INTEL_20522 20522 +#define IDS_INTEL_20523 20523 +#define IDS_INTEL_20524 20524 +#define IDS_INTEL_20525 20525 +#define IDS_INTEL_20526 20526 +#define IDS_INTEL_20527 20527 +#define IDS_INTEL_20528 20528 +#define IDS_INTEL_20529 20529 +#define IDS_INTEL_20530 20530 +#define IDS_INTEL_20531 20531 +#define IDS_INTEL_20532 20532 +#define IDS_INTEL_20533 20533 +#define IDS_INTEL_20534 20534 +#define IDS_INTEL_20535 20535 +#define IDS_INTEL_20536 20536 +#define IDS_INTEL_20537 20537 +#define IDS_INTEL_20538 20538 +#define IDS_INTEL_20539 20539 +#define IDS_INTEL_20540 20540 +#define IDS_INTEL_20541 20541 +#define IDS_INTEL_20542 20542 +#define IDS_INTEL_20543 20543 +#define IDS_INTEL_20544 20544 +#define IDS_INTEL_20545 20545 +#define IDS_INTEL_20546 20546 +#define IDS_INTEL_20547 20547 +#define IDS_INTEL_20548 20548 +#define IDS_INTEL_20549 20549 +#define IDS_INTEL_20550 20550 +#define IDS_DIALOGUE_20603 20603 +#define IDS_DIALOGUE_20605 20605 +#define IDS_DIALOGUE_20606 20606 +#define IDS_DIALOGUE_20607 20607 +#define IDS_DIALOGUE_20608 20608 +#define IDS_DIALOGUE_20612 20612 +#define IDS_DIALOGUE_20613 20613 +#define IDS_DIALOGUE_20614 20614 +#define IDS_DIALOGUE_20615 20615 +#define IDS_DIALOGUE_20619 20619 +#define IDS_DIALOGUE_20620 20620 +#define IDS_DIALOGUE_20621 20621 +#define IDS_DIALOGUE_20622 20622 +#define IDS_DIALOGUE_20645 20645 +#define IDS_DIALOGUE_20647 20647 +#define IDS_DIALOGUE_20648 20648 +#define IDS_DIALOGUE_20649 20649 +#define IDS_DIALOGUE_20650 20650 +#define IDS_DIALOGUE_20651 20651 +#define IDS_DIALOGUE_20652 20652 +#define IDS_DIALOGUE_20655 20655 +#define IDS_DIALOGUE_20930 20930 +#define IDS_DIALOGUE_20931 20931 +#define IDS_DIALOGUE_20932 20932 +#define IDS_DIALOGUE_20956 20956 +#define IDS_DIALOGUE_20957 20957 +#define IDS_DIALOGUE_20959 20959 +#define IDS_DIALOGUE_20961 20961 +#define IDS_DIALOGUE_20962 20962 +#define IDS_DIALOGUE_20963 20963 +#define IDS_DIALOGUE_20964 20964 +#define IDS_DIALOGUE_20965 20965 +#define IDS_DIALOGUE_20966 20966 +#define IDS_DIALOGUE_20967 20967 +#define IDS_DIALOGUE_20968 20968 +#define IDS_DIALOGUE_20969 20969 +#define IDS_DIALOGUE_20970 20970 +#define IDS_DIALOGUE_20971 20971 +#define IDS_DIALOGUE_20972 20972 +#define IDS_DIALOGUE_20973 20973 +#define IDS_DIALOGUE_20974 20974 +#define IDS_DIALOGUE_20975 20975 +#define IDS_DIALOGUE_20976 20976 +#define IDS_DIALOGUE_20977 20977 +#define IDS_DIALOGUE_20978 20978 +#define IDS_DIALOGUE_20979 20979 +#define IDS_DIALOGUE_20980 20980 +#define IDS_DIALOGUE_20981 20981 +#define IDS_DIALOGUE_20982 20982 +#define IDS_DIALOGUE_20983 20983 +#define IDS_DIALOGUE_20984 20984 +#define IDS_DIALOGUE_20985 20985 +#define IDS_DIALOGUE_20986 20986 +#define IDS_DIALOGUE_20987 20987 +#define IDS_DIALOGUE_20988 20988 +#define IDS_DIALOGUE_20989 20989 +#define IDS_DIALOGUE_20990 20990 +#define IDS_DIALOGUE_20992 20992 +#define IDS_DIALOGUE_20993 20993 +#define IDS_DIALOGUE_20994 20994 +#define IDS_DIALOGUE_20995 20995 +#define IDS_DIALOGUE_20996 20996 +#define IDS_DIALOGUE_20997 20997 +#define IDS_DIALOGUE_20998 20998 +#define IDS_DIALOGUE_21162 21162 +#define IDS_DIALOGUE_21163 21163 +#define IDS_DIALOGUE_21164 21164 +#define IDS_DIALOGUE_21165 21165 +#define IDS_DIALOGUE_21166 21166 +#define IDS_DIALOGUE_21167 21167 +#define IDS_DIALOGUE_21168 21168 +#define IDS_DIALOGUE_21169 21169 +#define IDS_DIALOGUE_21170 21170 +#define IDS_DIALOGUE_21171 21171 +#define IDS_DIALOGUE_21172 21172 +#define IDS_DIALOGUE_21173 21173 +#define IDS_DIALOGUE_21174 21174 +#define IDS_DIALOGUE_21177 21177 +#define IDS_DIALOGUE_21184 21184 +#define IDS_DIALOGUE_21185 21185 +#define IDS_DIALOGUE_21186 21186 +#define IDS_DIALOGUE_21188 21188 +#define IDS_DIALOGUE_21189 21189 +#define IDS_DIALOGUE_21190 21190 +#define IDS_DIALOGUE_21191 21191 +#define IDS_DIALOGUE_21192 21192 +#define IDS_INTEL_25000 25000 +#define IDS_INTEL_25001 25001 +#define IDS_INTEL_25002 25002 +#define IDS_INTEL_25003 25003 +#define IDS_INTEL_25004 25004 +#define IDS_INTEL_25005 25005 +#define IDS_INTEL_25006 25006 +#define IDS_INTEL_25007 25007 +#define IDS_INTEL_25008 25008 +#define IDS_INTEL_25009 25009 +#define IDS_INTEL_25010 25010 +#define IDS_INTEL_25011 25011 +#define IDS_INTEL_25012 25012 +#define IDS_INTEL_25013 25013 +#define IDS_INTEL_25014 25014 +#define IDS_INTEL_25015 25015 +#define IDS_INTEL_25016 25016 +#define IDS_INTEL_25017 25017 +#define IDS_INTEL_25018 25018 +#define IDS_INTEL_25019 25019 +#define IDS_INTEL_25020 25020 +#define IDS_INTEL_25021 25021 +#define IDS_INTEL_25022 25022 +#define IDS_INTEL_25023 25023 +#define IDS_INTEL_25024 25024 +#define IDS_INTEL_25025 25025 +#define IDS_INTEL_25026 25026 +#define IDS_INTEL_25027 25027 +#define IDS_INTEL_25028 25028 +#define IDS_INTEL_25029 25029 +#define IDS_INTEL_25030 25030 +#define IDS_INTEL_25031 25031 +#define IDS_INTEL_25032 25032 +#define IDS_INTEL_25033 25033 +#define IDS_INTEL_25034 25034 +#define IDS_INTEL_25035 25035 +#define IDS_INTEL_25036 25036 +#define IDS_INTEL_25037 25037 +#define IDS_INTEL_25038 25038 +#define IDS_INTEL_25039 25039 +#define IDS_INTEL_25040 25040 +#define IDS_INTEL_25041 25041 +#define IDS_INTEL_25042 25042 +#define IDS_INTEL_25043 25043 +#define IDS_INTEL_25044 25044 +#define IDS_INTEL_25045 25045 +#define IDS_INTEL_25046 25046 +#define IDS_INTEL_25047 25047 +#define IDS_INTEL_25048 25048 +#define IDS_INTEL_25049 25049 +#define IDS_INTEL_25050 25050 +#define IDS_INTEL_25051 25051 +#define IDS_INTEL_25052 25052 +#define IDS_INTEL_25053 25053 +#define IDS_INTEL_25054 25054 +#define IDS_INTEL_25055 25055 +#define IDS_INTEL_25056 25056 +#define IDS_INTEL_25057 25057 +#define IDS_INTEL_25058 25058 +#define IDS_INTEL_25059 25059 +#define IDS_INTEL_25060 25060 +#define IDS_INTEL_25061 25061 +#define IDS_INTEL_25062 25062 +#define IDS_INTEL_25063 25063 +#define IDS_INTEL_25064 25064 +#define IDS_INTEL_25065 25065 +#define IDS_INTEL_25066 25066 +#define IDS_INTEL_25067 25067 +#define IDS_INTEL_25068 25068 +#define IDS_INTEL_25069 25069 +#define IDS_INTEL_25070 25070 +#define IDS_INTEL_25071 25071 +#define IDS_INTEL_25072 25072 +#define IDS_INTEL_25073 25073 +#define IDS_INTEL_25074 25074 +#define IDS_INTEL_25075 25075 +#define IDS_INTEL_25076 25076 +#define IDS_INTEL_25077 25077 +#define IDS_INTEL_25078 25078 +#define IDS_INTEL_25079 25079 +#define IDS_INTEL_25080 25080 +#define IDS_INTEL_25081 25081 +#define IDS_INTEL_25082 25082 +#define IDS_INTEL_25083 25083 +#define IDS_INTEL_25084 25084 +#define IDS_INTEL_25085 25085 +#define IDS_INTEL_25086 25086 +#define IDS_INTEL_25087 25087 +#define IDS_INTEL_25088 25088 +#define IDS_INTEL_25089 25089 +#define IDS_INTEL_25090 25090 +#define IDS_INTEL_25091 25091 +#define IDS_INTEL_25092 25092 +#define IDS_INTEL_25093 25093 +#define IDS_INTEL_25094 25094 +#define IDS_INTEL_25095 25095 +#define IDS_INTEL_25096 25096 +#define IDS_INTEL_25097 25097 +#define IDS_INTEL_25098 25098 +#define IDS_INTEL_25099 25099 +#define IDS_INTEL_25100 25100 +#define IDS_INTEL_25101 25101 +#define IDS_INTEL_25102 25102 +#define IDS_INTEL_25103 25103 +#define IDS_INTEL_25104 25104 +#define IDS_INTEL_25105 25105 +#define IDS_INTEL_25106 25106 +#define IDS_INTEL_25107 25107 +#define IDS_INTEL_25108 25108 +#define IDS_INTEL_25109 25109 +#define IDS_INTEL_25110 25110 +#define IDS_INTEL_25111 25111 +#define IDS_INTEL_25112 25112 +#define IDS_INTEL_25113 25113 +#define IDS_INTEL_25114 25114 +#define IDS_INTEL_25115 25115 +#define IDS_INTEL_25116 25116 +#define IDS_INTEL_25117 25117 +#define IDS_INTEL_25118 25118 +#define IDS_INTEL_25119 25119 +#define IDS_INTEL_25120 25120 +#define IDS_INTEL_25121 25121 +#define IDS_INTEL_25122 25122 +#define IDS_INTEL_25123 25123 +#define IDS_INTEL_25124 25124 +#define IDS_INTEL_25125 25125 +#define IDS_INTEL_25126 25126 +#define IDS_INTEL_25127 25127 +#define IDS_INTEL_25128 25128 +#define IDS_INTEL_25129 25129 +#define IDS_INTEL_25130 25130 +#define IDS_INTEL_25131 25131 +#define IDS_INTEL_25132 25132 +#define IDS_INTEL_25133 25133 +#define IDS_INTEL_25134 25134 +#define IDS_INTEL_25135 25135 +#define IDS_INTEL_25136 25136 +#define IDS_INTEL_25137 25137 +#define IDS_INTEL_25138 25138 +#define IDS_INTEL_25139 25139 +#define IDS_INTEL_25140 25140 +#define IDS_INTEL_25141 25141 +#define IDS_INTEL_25142 25142 +#define IDS_INTEL_25143 25143 +#define IDS_INTEL_25144 25144 +#define IDS_INTEL_25145 25145 +#define IDS_INTEL_25146 25146 +#define IDS_INTEL_25147 25147 +#define IDS_INTEL_25148 25148 +#define IDS_INTEL_25149 25149 +#define IDS_INTEL_25150 25150 +#define IDS_INTEL_25151 25151 +#define IDS_INTEL_25152 25152 +#define IDS_INTEL_25153 25153 +#define IDS_INTEL_25154 25154 +#define IDS_INTEL_25155 25155 +#define IDS_INTEL_25156 25156 +#define IDS_INTEL_25157 25157 +#define IDS_INTEL_25158 25158 +#define IDS_INTEL_25159 25159 +#define IDS_INTEL_25160 25160 +#define IDS_INTEL_25161 25161 +#define IDS_INTEL_25162 25162 +#define IDS_INTEL_25163 25163 +#define IDS_INTEL_25164 25164 +#define IDS_INTEL_25165 25165 +#define IDS_INTEL_25166 25166 +#define IDS_INTEL_25167 25167 +#define IDS_INTEL_25168 25168 +#define IDS_INTEL_25169 25169 +#define IDS_INTEL_25170 25170 +#define IDS_INTEL_25171 25171 +#define IDS_INTEL_25172 25172 +#define IDS_INTEL_25173 25173 +#define IDS_INTEL_25174 25174 +#define IDS_INTEL_25175 25175 +#define IDS_INTEL_25176 25176 +#define IDS_INTEL_25177 25177 +#define IDS_INTEL_25178 25178 +#define IDS_INTEL_25179 25179 +#define IDS_INTEL_25180 25180 +#define IDS_INTEL_25181 25181 +#define IDS_INTEL_25182 25182 +#define IDS_INTEL_25183 25183 +#define IDS_INTEL_25184 25184 +#define IDS_INTEL_25185 25185 +#define IDS_INTEL_25186 25186 +#define IDS_INTEL_25187 25187 +#define IDS_INTEL_25188 25188 +#define IDS_INTEL_25189 25189 +#define IDS_INTEL_25190 25190 +#define IDS_INTEL_25191 25191 +#define IDS_INTEL_25192 25192 +#define IDS_INTEL_25193 25193 +#define IDS_INTEL_25194 25194 +#define IDS_INTEL_25195 25195 +#define IDS_INTEL_25196 25196 +#define IDS_INTEL_25197 25197 +#define IDS_INTEL_25198 25198 +#define IDS_INTEL_25199 25199 +#define IDS_INTEL_25200 25200 +#define IDS_INTEL_25201 25201 +#define IDS_INTEL_25202 25202 +#define IDS_INTEL_25203 25203 +#define IDS_INTEL_25204 25204 +#define IDS_INTEL_25205 25205 +#define IDS_INTEL_25206 25206 +#define IDS_INTEL_25207 25207 +#define IDS_INTEL_25208 25208 +#define IDS_INTEL_25209 25209 +#define IDS_INTEL_25210 25210 +#define IDS_INTEL_25211 25211 +#define IDS_INTEL_25212 25212 +#define IDS_INTEL_25213 25213 +#define IDS_INTEL_25214 25214 +#define IDS_INTEL_25215 25215 +#define IDS_INTEL_25216 25216 +#define IDS_INTEL_25217 25217 +#define IDS_INTEL_25218 25218 +#define IDS_INTEL_25219 25219 +#define IDS_INTEL_25220 25220 +#define IDS_INTEL_25221 25221 +#define IDS_INTEL_25222 25222 +#define IDS_INTEL_25223 25223 +#define IDS_INTEL_25224 25224 +#define IDS_INTEL_25225 25225 +#define IDS_INTEL_25226 25226 +#define IDS_INTEL_25227 25227 +#define IDS_INTEL_25228 25228 +#define IDS_INTEL_25229 25229 +#define IDS_INTEL_25230 25230 +#define IDS_INTEL_25231 25231 +#define IDS_INTEL_25232 25232 +#define IDS_INTEL_25233 25233 +#define IDS_INTEL_25234 25234 +#define IDS_INTEL_25235 25235 +#define IDS_INTEL_25236 25236 +#define IDS_INTEL_25237 25237 +#define IDS_INTEL_25238 25238 +#define IDS_INTEL_25239 25239 +#define IDS_INTEL_25240 25240 +#define IDS_INTEL_25241 25241 +#define IDS_INTEL_25242 25242 +#define IDS_INTEL_25243 25243 +#define IDS_INTEL_25244 25244 +#define IDS_INTEL_25245 25245 +#define IDS_INTEL_25246 25246 +#define IDS_INTEL_25247 25247 +#define IDS_INTEL_25248 25248 +#define IDS_INTEL_25249 25249 +#define IDS_INTEL_25250 25250 +#define IDS_INTEL_25251 25251 +#define IDS_INTEL_25252 25252 +#define IDS_INTEL_25253 25253 +#define IDS_INTEL_25254 25254 +#define IDS_INTEL_25255 25255 +#define IDS_INTEL_25256 25256 +#define IDS_INTEL_25257 25257 +#define IDS_INTEL_25258 25258 +#define IDS_INTEL_25259 25259 +#define IDS_INTEL_25260 25260 +#define IDS_INTEL_25261 25261 +#define IDS_INTEL_25262 25262 +#define IDS_INTEL_25263 25263 +#define IDS_INTEL_25264 25264 +#define IDS_INTEL_25265 25265 +#define IDS_INTEL_25266 25266 +#define IDS_INTEL_25267 25267 +#define IDS_INTEL_25268 25268 +#define IDS_INTEL_25269 25269 +#define IDS_INTEL_25270 25270 +#define IDS_INTEL_25271 25271 +#define IDS_INTEL_25272 25272 +#define IDS_INTEL_25273 25273 +#define IDS_INTEL_25274 25274 +#define IDS_INTEL_25275 25275 +#define IDS_INTEL_25276 25276 +#define IDS_INTEL_25277 25277 +#define IDS_INTEL_25278 25278 +#define IDS_INTEL_25279 25279 +#define IDS_INTEL_25280 25280 +#define IDS_INTEL_25281 25281 +#define IDS_INTEL_25282 25282 +#define IDS_INTEL_25283 25283 +#define IDS_INTEL_25284 25284 +#define IDS_INTEL_25285 25285 +#define IDS_INTEL_25286 25286 +#define IDS_INTEL_25287 25287 +#define IDS_INTEL_25288 25288 +#define IDS_INTEL_25289 25289 +#define IDS_INTEL_25290 25290 +#define IDS_INTEL_25291 25291 +#define IDS_INTEL_25292 25292 +#define IDS_INTEL_25293 25293 +#define IDS_INTEL_25294 25294 +#define IDS_INTEL_25295 25295 +#define IDS_INTEL_25296 25296 +#define IDS_INTEL_25297 25297 +#define IDS_INTEL_25298 25298 +#define IDS_INTEL_25299 25299 +#define IDS_INTEL_25300 25300 +#define IDS_INTEL_25301 25301 +#define IDS_INTEL_25302 25302 +#define IDS_INTEL_25303 25303 +#define IDS_INTEL_25304 25304 +#define IDS_INTEL_25305 25305 +#define IDS_INTEL_25306 25306 +#define IDS_INTEL_25307 25307 +#define IDS_INTEL_25308 25308 +#define IDS_INTEL_25309 25309 +#define IDS_INTEL_25310 25310 +#define IDS_INTEL_25311 25311 +#define IDS_INTEL_25312 25312 +#define IDS_INTEL_25313 25313 +#define IDS_INTEL_25314 25314 +#define IDS_INTEL_25315 25315 +#define IDS_INTEL_25316 25316 +#define IDS_INTEL_25317 25317 +#define IDS_INTEL_25318 25318 +#define IDS_INTEL_25319 25319 +#define IDS_INTEL_25320 25320 +#define IDS_INTEL_25321 25321 +#define IDS_INTEL_25322 25322 +#define IDS_INTEL_25323 25323 +#define IDS_INTEL_25324 25324 +#define IDS_INTEL_25325 25325 +#define IDS_INTEL_25326 25326 +#define IDS_INTEL_25327 25327 +#define IDS_INTEL_25328 25328 +#define IDS_INTEL_25329 25329 +#define IDS_INTEL_25330 25330 +#define IDS_INTEL_25331 25331 +#define IDS_INTEL_25332 25332 +#define IDS_INTEL_25333 25333 +#define IDS_INTEL_25334 25334 +#define IDS_INTEL_25335 25335 +#define IDS_INTEL_25336 25336 +#define IDS_INTEL_25337 25337 +#define IDS_INTEL_25338 25338 +#define IDS_INTEL_25339 25339 +#define IDS_INTEL_25340 25340 +#define IDS_INTEL_25341 25341 +#define IDS_INTEL_25342 25342 +#define IDS_INTEL_25343 25343 +#define IDS_INTEL_25344 25344 +#define IDS_INTEL_25345 25345 +#define IDS_INTEL_25346 25346 +#define IDS_INTEL_25347 25347 +#define IDS_INTEL_25348 25348 +#define IDS_INTEL_25349 25349 +#define IDS_INTEL_25350 25350 +#define IDS_INTEL_25351 25351 +#define IDS_INTEL_25352 25352 +#define IDS_INTEL_25353 25353 +#define IDS_INTEL_25354 25354 +#define IDS_INTEL_25355 25355 +#define IDS_INTEL_25356 25356 +#define IDS_INTEL_25357 25357 +#define IDS_INTEL_25358 25358 +#define IDS_INTEL_25359 25359 +#define IDS_INTEL_25360 25360 +#define IDS_INTEL_25361 25361 +#define IDS_INTEL_25362 25362 +#define IDS_INTEL_25363 25363 +#define IDS_INTEL_25364 25364 +#define IDS_INTEL_25365 25365 +#define IDS_INTEL_25366 25366 +#define IDS_INTEL_25367 25367 +#define IDS_INTEL_25368 25368 +#define IDS_INTEL_25369 25369 +#define IDS_INTEL_25370 25370 +#define IDS_INTEL_25371 25371 +#define IDS_INTEL_25372 25372 +#define IDS_INTEL_25373 25373 +#define IDS_INTEL_25374 25374 +#define IDS_INTEL_25375 25375 +#define IDS_INTEL_25376 25376 +#define IDS_INTEL_25377 25377 +#define IDS_INTEL_25378 25378 +#define IDS_INTEL_25379 25379 +#define IDS_INTEL_25380 25380 +#define IDS_INTEL_25381 25381 +#define IDS_INTEL_25382 25382 +#define IDS_INTEL_25383 25383 +#define IDS_INTEL_25384 25384 +#define IDS_INTEL_25385 25385 +#define IDS_INTEL_25386 25386 +#define IDS_INTEL_25387 25387 +#define IDS_INTEL_25388 25388 +#define IDS_INTEL_25389 25389 +#define IDS_INTEL_25390 25390 +#define IDS_INTEL_25391 25391 +#define IDS_INTEL_25392 25392 +#define IDS_INTEL_25393 25393 +#define IDS_INTEL_25394 25394 +#define IDS_INTEL_25395 25395 +#define IDS_INTEL_25396 25396 +#define IDS_INTEL_25397 25397 +#define IDS_INTEL_25398 25398 +#define IDS_INTEL_25399 25399 +#define IDS_INTEL_25400 25400 +#define IDS_INTEL_25401 25401 +#define IDS_INTEL_25402 25402 +#define IDS_INTEL_25403 25403 +#define IDS_INTEL_25404 25404 +#define IDS_INTEL_25405 25405 +#define IDS_INTEL_25406 25406 +#define IDS_INTEL_25407 25407 +#define IDS_INTEL_25408 25408 +#define IDS_INTEL_25409 25409 +#define IDS_INTEL_25410 25410 +#define IDS_INTEL_25411 25411 +#define IDS_INTEL_25412 25412 +#define IDS_INTEL_25413 25413 +#define IDS_INTEL_25414 25414 +#define IDS_INTEL_25415 25415 +#define IDS_INTEL_25416 25416 +#define IDS_INTEL_25417 25417 +#define IDS_INTEL_25418 25418 +#define IDS_INTEL_25419 25419 +#define IDS_INTEL_25420 25420 +#define IDS_INTEL_25421 25421 +#define IDS_INTEL_25422 25422 +#define IDS_INTEL_25423 25423 +#define IDS_INTEL_25424 25424 +#define IDS_INTEL_25425 25425 +#define IDS_INTEL_25426 25426 +#define IDS_INTEL_25427 25427 +#define IDS_INTEL_25428 25428 +#define IDS_INTEL_25429 25429 +#define IDS_INTEL_25430 25430 +#define IDS_INTEL_25431 25431 +#define IDS_INTEL_25432 25432 +#define IDS_INTEL_25433 25433 +#define IDS_INTEL_25434 25434 +#define IDS_INTEL_25435 25435 +#define IDS_INTEL_25436 25436 +#define IDS_INTEL_25437 25437 +#define IDS_INTEL_25438 25438 +#define IDS_INTEL_25439 25439 +#define IDS_INTEL_25440 25440 +#define IDS_INTEL_25441 25441 +#define IDS_INTEL_25442 25442 +#define IDS_INTEL_25443 25443 +#define IDS_INTEL_25444 25444 +#define IDS_INTEL_25445 25445 +#define IDS_INTEL_25446 25446 +#define IDS_INTEL_25447 25447 +#define IDS_INTEL_25448 25448 +#define IDS_INTEL_25449 25449 +#define IDS_INTEL_25450 25450 +#define IDS_INTEL_25451 25451 +#define IDS_INTEL_25452 25452 +#define IDS_INTEL_25453 25453 +#define IDS_INTEL_25454 25454 +#define IDS_INTEL_25455 25455 +#define IDS_INTEL_25456 25456 +#define IDS_INTEL_25457 25457 +#define IDS_INTEL_25458 25458 +#define IDS_INTEL_25459 25459 +#define IDS_INTEL_25460 25460 +#define IDS_INTEL_25461 25461 +#define IDS_INTEL_25462 25462 +#define IDS_INTEL_25463 25463 +#define IDS_INTEL_25464 25464 +#define IDS_INTEL_25465 25465 +#define IDS_INTEL_25466 25466 +#define IDS_INTEL_25467 25467 +#define IDS_INTEL_25468 25468 +#define IDS_INTEL_25469 25469 +#define IDS_INTEL_25470 25470 +#define IDS_INTEL_25471 25471 +#define IDS_INTEL_25472 25472 +#define IDS_INTEL_25473 25473 +#define IDS_INTEL_25474 25474 +#define IDS_INTEL_25475 25475 +#define IDS_INTEL_25476 25476 +#define IDS_INTEL_25477 25477 +#define IDS_INTEL_25478 25478 +#define IDS_INTEL_25479 25479 +#define IDS_INTEL_25480 25480 +#define IDS_INTEL_25481 25481 +#define IDS_INTEL_25482 25482 +#define IDS_INTEL_25483 25483 +#define IDS_INTEL_25484 25484 +#define IDS_INTEL_25485 25485 +#define IDS_INTEL_25486 25486 +#define IDS_INTEL_25487 25487 +#define IDS_INTEL_25488 25488 +#define IDS_INTEL_25489 25489 +#define IDS_INTEL_25490 25490 +#define IDS_INTEL_25491 25491 +#define IDS_INTEL_25492 25492 +#define IDS_INTEL_25493 25493 +#define IDS_INTEL_25494 25494 +#define IDS_INTEL_25495 25495 +#define IDS_INTEL_25496 25496 +#define IDS_INTEL_25497 25497 +#define IDS_INTEL_25498 25498 +#define IDS_INTEL_25499 25499 +#define IDS_INTEL_25500 25500 +#define IDS_INTEL_25501 25501 +#define IDS_INTEL_25502 25502 +#define IDS_INTEL_25503 25503 +#define IDS_INTEL_25504 25504 +#define IDS_INTEL_25505 25505 +#define IDS_INTEL_25506 25506 +#define IDS_INTEL_25507 25507 +#define IDS_INTEL_25508 25508 +#define IDS_INTEL_25509 25509 +#define IDS_INTEL_25510 25510 +#define IDS_INTEL_25511 25511 +#define IDS_INTEL_25512 25512 +#define IDS_INTEL_25513 25513 +#define IDS_INTEL_25514 25514 +#define IDS_INTEL_25515 25515 +#define IDS_INTEL_25516 25516 +#define IDS_INTEL_25517 25517 +#define IDS_INTEL_25518 25518 +#define IDS_INTEL_25519 25519 +#define IDS_INTEL_25520 25520 +#define IDS_INTEL_25521 25521 +#define IDS_INTEL_25522 25522 +#define IDS_INTEL_25523 25523 +#define IDS_INTEL_25524 25524 +#define IDS_INTEL_25525 25525 +#define IDS_INTEL_25526 25526 +#define IDS_INTEL_25527 25527 +#define IDS_INTEL_25528 25528 +#define IDS_INTEL_25529 25529 +#define IDS_INTEL_25530 25530 +#define IDS_INTEL_25531 25531 +#define IDS_INTEL_25532 25532 +#define IDS_INTEL_25533 25533 +#define IDS_INTEL_25534 25534 +#define IDS_INTEL_25535 25535 +#define IDS_INTEL_25536 25536 +#define IDS_INTEL_25537 25537 +#define IDS_INTEL_25538 25538 +#define IDS_INTEL_25539 25539 +#define IDS_INTEL_25540 25540 +#define IDS_INTEL_25541 25541 +#define IDS_INTEL_25542 25542 +#define IDS_INTEL_25543 25543 +#define IDS_INTEL_25544 25544 +#define IDS_INTEL_25545 25545 +#define IDS_INTEL_25546 25546 +#define IDS_INTEL_25547 25547 +#define IDS_INTEL_25548 25548 +#define IDS_INTEL_25549 25549 +#define IDS_INTEL_25550 25550 +#define IDS_INTEL_25551 25551 +#define IDS_INTEL_25552 25552 +#define IDS_INTEL_25553 25553 +#define IDS_INTEL_25554 25554 +#define IDS_INTEL_25555 25555 +#define IDS_INTEL_25556 25556 +#define IDS_INTEL_25557 25557 +#define IDS_INTEL_25558 25558 +#define IDS_INTEL_25559 25559 +#define IDS_INTEL_25560 25560 +#define IDS_INTEL_25561 25561 +#define IDS_INTEL_25562 25562 +#define IDS_INTEL_25563 25563 +#define IDS_INTEL_25564 25564 +#define IDS_INTEL_25565 25565 +#define IDS_INTEL_25566 25566 +#define IDS_INTEL_25567 25567 +#define IDS_INTEL_25568 25568 +#define IDS_INTEL_25569 25569 +#define IDS_INTEL_25570 25570 +#define IDS_INTEL_25571 25571 +#define IDS_INTEL_25572 25572 +#define IDS_INTEL_25573 25573 +#define IDS_INTEL_25574 25574 +#define IDS_INTEL_25575 25575 +#define IDS_INTEL_25576 25576 +#define IDS_INTEL_25577 25577 +#define IDS_INTEL_25578 25578 +#define IDS_INTEL_25579 25579 +#define IDS_INTEL_25580 25580 +#define IDS_INTEL_25581 25581 +#define IDS_INTEL_25582 25582 +#define IDS_INTEL_25583 25583 +#define IDS_INTEL_25584 25584 +#define IDS_INTEL_25585 25585 +#define IDS_INTEL_25586 25586 +#define IDS_INTEL_25587 25587 +#define IDS_INTEL_25588 25588 +#define IDS_INTEL_25589 25589 +#define IDS_INTEL_25590 25590 +#define IDS_INTEL_25591 25591 +#define IDS_INTEL_25592 25592 +#define IDS_INTEL_25593 25593 +#define IDS_INTEL_25594 25594 +#define IDS_INTEL_25595 25595 +#define IDS_INTEL_25596 25596 +#define IDS_INTEL_25597 25597 +#define IDS_INTEL_25598 25598 +#define IDS_INTEL_25599 25599 +#define IDS_INTEL_25600 25600 +#define IDS_INTEL_25601 25601 +#define IDS_INTEL_25602 25602 +#define IDS_INTEL_25603 25603 +#define IDS_INTEL_25604 25604 +#define IDS_INTEL_25605 25605 +#define IDS_INTEL_25606 25606 +#define IDS_INTEL_25607 25607 +#define IDS_INTEL_25608 25608 +#define IDS_INTEL_25609 25609 +#define IDS_INTEL_25610 25610 +#define IDS_INTEL_25611 25611 +#define IDS_INTEL_25612 25612 +#define IDS_INTEL_25613 25613 +#define IDS_INTEL_25614 25614 +#define IDS_INTEL_25615 25615 +#define IDS_INTEL_25616 25616 +#define IDS_INTEL_25617 25617 +#define IDS_INTEL_25618 25618 +#define IDS_INTEL_25619 25619 +#define IDS_INTEL_25620 25620 +#define IDS_INTEL_25621 25621 +#define IDS_INTEL_25622 25622 +#define IDS_INTEL_25623 25623 +#define IDS_INTEL_25624 25624 +#define IDS_INTEL_25625 25625 +#define IDS_INTEL_25626 25626 +#define IDS_INTEL_25627 25627 +#define IDS_INTEL_25628 25628 +#define IDS_INTEL_25629 25629 +#define IDS_INTEL_25630 25630 +#define IDS_INTEL_25631 25631 +#define IDS_INTEL_25632 25632 +#define IDS_INTEL_25633 25633 +#define IDS_INTEL_25634 25634 +#define IDS_INTEL_25635 25635 +#define IDS_INTEL_25636 25636 +#define IDS_INTEL_25637 25637 +#define IDS_INTEL_25638 25638 +#define IDS_INTEL_25639 25639 +#define IDS_INTEL_25640 25640 +#define IDS_INTEL_25641 25641 +#define IDS_INTEL_25642 25642 +#define IDS_INTEL_25643 25643 +#define IDS_INTEL_25644 25644 +#define IDS_INTEL_25645 25645 +#define IDS_INTEL_25646 25646 +#define IDS_INTEL_25647 25647 +#define IDS_INTEL_25648 25648 +#define IDS_INTEL_25649 25649 +#define IDS_INTEL_25650 25650 +#define IDS_INTEL_25651 25651 +#define IDS_INTEL_25652 25652 +#define IDS_INTEL_25653 25653 +#define IDS_INTEL_25654 25654 +#define IDS_INTEL_25655 25655 +#define IDS_INTEL_25656 25656 +#define IDS_INTEL_25657 25657 +#define IDS_INTEL_25658 25658 +#define IDS_INTEL_25659 25659 +#define IDS_INTEL_25660 25660 +#define IDS_INTEL_25661 25661 +#define IDS_INTEL_25662 25662 +#define IDS_INTEL_25663 25663 +#define IDS_INTEL_25664 25664 +#define IDS_INTEL_25665 25665 +#define IDS_INTEL_25666 25666 +#define IDS_INTEL_25667 25667 +#define IDS_INTEL_25668 25668 +#define IDS_INTEL_25669 25669 +#define IDS_INTEL_25670 25670 +#define IDS_INTEL_25671 25671 +#define IDS_INTEL_25672 25672 +#define IDS_INTEL_25673 25673 +#define IDS_INTEL_25674 25674 +#define IDS_INTEL_25675 25675 +#define IDS_INTEL_25676 25676 +#define IDS_INTEL_25677 25677 +#define IDS_INTEL_25678 25678 +#define IDS_INTEL_25679 25679 +#define IDS_INTEL_25680 25680 +#define IDS_INTEL_25681 25681 +#define IDS_INTEL_25682 25682 +#define IDS_INTEL_25683 25683 +#define IDS_INTEL_25684 25684 +#define IDS_INTEL_25685 25685 +#define IDS_INTEL_25686 25686 +#define IDS_INTEL_25687 25687 +#define IDS_INTEL_25688 25688 +#define IDS_INTEL_25689 25689 +#define IDS_INTEL_25690 25690 +#define IDS_INTEL_25691 25691 +#define IDS_INTEL_25692 25692 +#define IDS_INTEL_25693 25693 +#define IDS_INTEL_25694 25694 +#define IDS_INTEL_25695 25695 +#define IDS_INTEL_25696 25696 +#define IDS_INTEL_25697 25697 +#define IDS_INTEL_25698 25698 +#define IDS_INTEL_25699 25699 +#define IDS_INTEL_25700 25700 +#define IDS_INTEL_25701 25701 +#define IDS_INTEL_25702 25702 +#define IDS_INTEL_25703 25703 +#define IDS_INTEL_25704 25704 +#define IDS_INTEL_25705 25705 +#define IDS_INTEL_25706 25706 +#define IDS_INTEL_25707 25707 +#define IDS_INTEL_25708 25708 +#define IDS_INTEL_25709 25709 +#define IDS_INTEL_25710 25710 +#define IDS_INTEL_25711 25711 +#define IDS_INTEL_25712 25712 +#define IDS_INTEL_25713 25713 +#define IDS_INTEL_25714 25714 +#define IDS_INTEL_25715 25715 +#define IDS_INTEL_25716 25716 +#define IDS_INTEL_25717 25717 +#define IDS_INTEL_25718 25718 +#define IDS_INTEL_25719 25719 +#define IDS_INTEL_25720 25720 +#define IDS_INTEL_25721 25721 +#define IDS_INTEL_25722 25722 +#define IDS_INTEL_25723 25723 +#define IDS_INTEL_25724 25724 +#define IDS_INTEL_25725 25725 +#define IDS_INTEL_25726 25726 +#define IDS_INTEL_25727 25727 +#define IDS_INTEL_25728 25728 +#define IDS_INTEL_25729 25729 +#define IDS_INTEL_25730 25730 +#define IDS_INTEL_25731 25731 +#define IDS_INTEL_25732 25732 +#define IDS_INTEL_25733 25733 +#define IDS_INTEL_25734 25734 +#define IDS_INTEL_25735 25735 +#define IDS_INTEL_25736 25736 +#define IDS_INTEL_25737 25737 +#define IDS_INTEL_25738 25738 +#define IDS_INTEL_25739 25739 +#define IDS_INTEL_25740 25740 +#define IDS_INTEL_25741 25741 +#define IDS_INTEL_25742 25742 +#define IDS_INTEL_25743 25743 +#define IDS_INTEL_25744 25744 +#define IDS_INTEL_25745 25745 +#define IDS_INTEL_25746 25746 +#define IDS_INTEL_25747 25747 +#define IDS_INTEL_25748 25748 +#define IDS_INTEL_25749 25749 +#define IDS_INTEL_25750 25750 +#define IDS_INTEL_25751 25751 +#define IDS_INTEL_25752 25752 +#define IDS_INTEL_25753 25753 +#define IDS_INTEL_25754 25754 +#define IDS_INTEL_25755 25755 +#define IDS_INTEL_25756 25756 +#define IDS_INTEL_25757 25757 +#define IDS_INTEL_25758 25758 +#define IDS_INTEL_25759 25759 +#define IDS_INTEL_25760 25760 +#define IDS_INTEL_25761 25761 +#define IDS_INTEL_25762 25762 +#define IDS_INTEL_25763 25763 +#define IDS_INTEL_25764 25764 +#define IDS_INTEL_25765 25765 +#define IDS_INTEL_25766 25766 +#define IDS_INTEL_25767 25767 +#define IDS_INTEL_25768 25768 +#define IDS_INTEL_25769 25769 +#define IDS_INTEL_25770 25770 +#define IDS_INTEL_25771 25771 +#define IDS_INTEL_25772 25772 +#define IDS_INTEL_25773 25773 +#define IDS_INTEL_25774 25774 +#define IDS_INTEL_25775 25775 +#define IDS_INTEL_25776 25776 +#define IDS_INTEL_25777 25777 +#define IDS_INTEL_25778 25778 +#define IDS_INTEL_25779 25779 +#define IDS_INTEL_25780 25780 +#define IDS_INTEL_25781 25781 +#define IDS_INTEL_25782 25782 +#define IDS_INTEL_25783 25783 +#define IDS_INTEL_25784 25784 +#define IDS_INTEL_25785 25785 +#define IDS_INTEL_25786 25786 +#define IDS_INTEL_25787 25787 +#define IDS_INTEL_25788 25788 +#define IDS_INTEL_25789 25789 +#define IDS_INTEL_25790 25790 +#define IDS_INTEL_25791 25791 +#define IDS_INTEL_25792 25792 +#define IDS_INTEL_25793 25793 +#define IDS_INTEL_25794 25794 +#define IDS_INTEL_25795 25795 +#define IDS_INTEL_25796 25796 +#define IDS_INTEL_25797 25797 +#define IDS_INTEL_25798 25798 +#define IDS_INTEL_25799 25799 +#define IDS_INTEL_25800 25800 +#define IDS_INTEL_25801 25801 +#define IDS_INTEL_25802 25802 +#define IDS_INTEL_25803 25803 +#define IDS_INTEL_25804 25804 +#define IDS_INTEL_25805 25805 +#define IDS_INTEL_25806 25806 +#define IDS_INTEL_25807 25807 +#define IDS_INTEL_25808 25808 +#define IDS_INTEL_25809 25809 +#define IDS_INTEL_25810 25810 +#define IDS_INTEL_25811 25811 +#define IDS_INTEL_25812 25812 +#define IDS_INTEL_25813 25813 +#define IDS_INTEL_25814 25814 +#define IDS_INTEL_25815 25815 +#define IDS_INTEL_25816 25816 +#define IDS_INTEL_25817 25817 +#define IDS_INTEL_25818 25818 +#define IDS_INTEL_25819 25819 +#define IDS_INTEL_25820 25820 +#define IDS_INTEL_25821 25821 +#define IDS_INTEL_25822 25822 +#define IDS_INTEL_25823 25823 +#define IDS_INTEL_25824 25824 +#define IDS_INTEL_25825 25825 +#define IDS_INTEL_25826 25826 +#define IDS_INTEL_25827 25827 +#define IDS_INTEL_25828 25828 +#define IDS_INTEL_25829 25829 +#define IDS_INTEL_25830 25830 +#define IDS_INTEL_25831 25831 +#define IDS_INTEL_25832 25832 +#define IDS_INTEL_25833 25833 +#define IDS_INTEL_25834 25834 +#define IDS_INTEL_25835 25835 +#define IDS_INTEL_25836 25836 +#define IDS_INTEL_25837 25837 +#define IDS_INTEL_25838 25838 +#define IDS_INTEL_25839 25839 +#define IDS_INTEL_25840 25840 +#define IDS_INTEL_25841 25841 +#define IDS_INTEL_25842 25842 +#define IDS_INTEL_25843 25843 +#define IDS_INTEL_25844 25844 +#define IDS_INTEL_25845 25845 +#define IDS_INTEL_25846 25846 +#define IDS_INTEL_25847 25847 +#define IDS_INTEL_25848 25848 +#define IDS_INTEL_25849 25849 +#define IDS_INTEL_25850 25850 +#define IDS_INTEL_25851 25851 +#define IDS_INTEL_25852 25852 +#define IDS_INTEL_25853 25853 +#define IDS_INTEL_25854 25854 +#define IDS_INTEL_25855 25855 +#define IDS_INTEL_25856 25856 +#define IDS_INTEL_25857 25857 +#define IDS_INTEL_25858 25858 +#define IDS_INTEL_25859 25859 +#define IDS_INTEL_25860 25860 +#define IDS_INTEL_25861 25861 +#define IDS_INTEL_25862 25862 +#define IDS_INTEL_25863 25863 +#define IDS_INTEL_25864 25864 +#define IDS_INTEL_25865 25865 +#define IDS_INTEL_25866 25866 +#define IDS_INTEL_25867 25867 +#define IDS_INTEL_25868 25868 +#define IDS_INTEL_25869 25869 +#define IDS_INTEL_25870 25870 +#define IDS_INTEL_25871 25871 +#define IDS_INTEL_25872 25872 +#define IDS_INTEL_25873 25873 +#define IDS_INTEL_25874 25874 +#define IDS_INTEL_25875 25875 +#define IDS_INTEL_25876 25876 +#define IDS_INTEL_25877 25877 +#define IDS_INTEL_25878 25878 +#define IDS_INTEL_25879 25879 +#define IDS_INTEL_25880 25880 +#define IDS_INTEL_25881 25881 +#define IDS_INTEL_25882 25882 +#define IDS_INTEL_25883 25883 +#define IDS_INTEL_25884 25884 +#define IDS_INTEL_25885 25885 +#define IDS_INTEL_25886 25886 +#define IDS_INTEL_25887 25887 +#define IDS_INTEL_25888 25888 +#define IDS_INTEL_25889 25889 +#define IDS_INTEL_25890 25890 +#define IDS_INTEL_25891 25891 +#define IDS_INTEL_25892 25892 +#define IDS_INTEL_25893 25893 +#define IDS_INTEL_25894 25894 +#define IDS_INTEL_25895 25895 +#define IDS_INTEL_25896 25896 +#define IDS_INTEL_25897 25897 +#define IDS_INTEL_25898 25898 +#define IDS_INTEL_25899 25899 +#define IDS_INTEL_25900 25900 +#define IDS_INTEL_25901 25901 +#define IDS_INTEL_25902 25902 +#define IDS_INTEL_25903 25903 +#define IDS_INTEL_25904 25904 +#define IDS_INTEL_25905 25905 +#define IDS_INTEL_25906 25906 +#define IDS_INTEL_25907 25907 +#define IDS_INTEL_25908 25908 +#define IDS_INTEL_25909 25909 +#define IDS_INTEL_25910 25910 +#define IDS_INTEL_25911 25911 +#define IDS_INTEL_25912 25912 +#define IDS_INTEL_25913 25913 +#define IDS_INTEL_25914 25914 +#define IDS_INTEL_25915 25915 +#define IDS_INTEL_25916 25916 +#define IDS_INTEL_25917 25917 +#define IDS_INTEL_25918 25918 +#define IDS_INTEL_25919 25919 +#define IDS_INTEL_25920 25920 +#define IDS_INTEL_25921 25921 +#define IDS_INTEL_25922 25922 +#define IDS_INTEL_25923 25923 +#define IDS_INTEL_25924 25924 +#define IDS_INTEL_25925 25925 +#define IDS_INTEL_25926 25926 +#define IDS_INTEL_25927 25927 +#define IDS_INTEL_25928 25928 +#define IDS_INTEL_25929 25929 +#define IDS_INTEL_25930 25930 +#define IDS_INTEL_25931 25931 +#define IDS_INTEL_25932 25932 +#define IDS_INTEL_25933 25933 +#define IDS_INTEL_25934 25934 +#define IDS_INTEL_25935 25935 +#define IDS_INTEL_25936 25936 +#define IDS_INTEL_25937 25937 +#define IDS_INTEL_25938 25938 +#define IDS_INTEL_25939 25939 +#define IDS_INTEL_25940 25940 +#define IDS_INTEL_25941 25941 +#define IDS_INTEL_25942 25942 +#define IDS_INTEL_25943 25943 +#define IDS_INTEL_25944 25944 +#define IDS_INTEL_25945 25945 +#define IDS_INTEL_25946 25946 +#define IDS_INTEL_25947 25947 +#define IDS_INTEL_25948 25948 +#define IDS_INTEL_25949 25949 +#define IDS_INTEL_25950 25950 +#define IDS_INTEL_25951 25951 +#define IDS_INTEL_25952 25952 +#define IDS_INTEL_25953 25953 +#define IDS_INTEL_25954 25954 +#define IDS_INTEL_25955 25955 +#define IDS_INTEL_25956 25956 +#define IDS_INTEL_25957 25957 +#define IDS_INTEL_25958 25958 +#define IDS_INTEL_25959 25959 +#define IDS_INTEL_25960 25960 +#define IDS_INTEL_25961 25961 +#define IDS_INTEL_25962 25962 +#define IDS_INTEL_25963 25963 +#define IDS_INTEL_25964 25964 +#define IDS_INTEL_25965 25965 +#define IDS_INTEL_25966 25966 +#define IDS_INTEL_25967 25967 +#define IDS_INTEL_25968 25968 +#define IDS_INTEL_25969 25969 +#define IDS_INTEL_25970 25970 +#define IDS_INTEL_25971 25971 +#define IDS_INTEL_25972 25972 +#define IDS_INTEL_25973 25973 +#define IDS_INTEL_25974 25974 +#define IDS_INTEL_25975 25975 +#define IDS_INTEL_25976 25976 +#define IDS_INTEL_25977 25977 +#define IDS_INTEL_25978 25978 +#define IDS_INTEL_25979 25979 +#define IDS_INTEL_25980 25980 +#define IDS_INTEL_25981 25981 +#define IDS_INTEL_25982 25982 +#define IDS_INTEL_25983 25983 +#define IDS_INTEL_25984 25984 +#define IDS_INTEL_25985 25985 +#define IDS_INTEL_25986 25986 +#define IDS_INTEL_25987 25987 +#define IDS_INTEL_25988 25988 +#define IDS_INTEL_25989 25989 +#define IDS_INTEL_25990 25990 +#define IDS_INTEL_25991 25991 +#define IDS_INTEL_25992 25992 +#define IDS_INTEL_25993 25993 +#define IDS_INTEL_25994 25994 +#define IDS_INTEL_25995 25995 +#define IDS_INTEL_25996 25996 +#define IDS_INTEL_25997 25997 +#define IDS_INTEL_25998 25998 +#define IDS_INTEL_25999 25999 +#define IDS_INTEL_26000 26000 +#define IDS_INTEL_26001 26001 +#define IDS_INTEL_26002 26002 +#define IDS_INTEL_26003 26003 +#define IDS_INTEL_26004 26004 +#define IDS_INTEL_26005 26005 +#define IDS_INTEL_26006 26006 +#define IDS_INTEL_26007 26007 +#define IDS_INTEL_26008 26008 +#define IDS_INTEL_26009 26009 +#define IDS_INTEL_26010 26010 +#define IDS_INTEL_26011 26011 +#define IDS_INTEL_26012 26012 +#define IDS_INTEL_26013 26013 +#define IDS_INTEL_26014 26014 +#define IDS_INTEL_26015 26015 +#define IDS_INTEL_26016 26016 +#define IDS_INTEL_26017 26017 +#define IDS_INTEL_26018 26018 +#define IDS_INTEL_26019 26019 +#define IDS_INTEL_26020 26020 +#define IDS_INTEL_26021 26021 +#define IDS_INTEL_26022 26022 +#define IDS_INTEL_26023 26023 +#define IDS_INTEL_26024 26024 +#define IDS_INTEL_26025 26025 +#define IDS_INTEL_26026 26026 +#define IDS_INTEL_26027 26027 +#define IDS_INTEL_26028 26028 +#define IDS_INTEL_26029 26029 +#define IDS_INTEL_26030 26030 +#define IDS_INTEL_26031 26031 +#define IDS_INTEL_26032 26032 +#define IDS_INTEL_26033 26033 +#define IDS_INTEL_26034 26034 +#define IDS_INTEL_26035 26035 +#define IDS_INTEL_26036 26036 +#define IDS_INTEL_26037 26037 +#define IDS_INTEL_26038 26038 +#define IDS_INTEL_26039 26039 +#define IDS_INTEL_26040 26040 +#define IDS_INTEL_26041 26041 +#define IDS_INTEL_26042 26042 +#define IDS_INTEL_26043 26043 +#define IDS_INTEL_26044 26044 +#define IDS_INTEL_26045 26045 +#define IDS_INTEL_26046 26046 +#define IDS_INTEL_26047 26047 +#define IDS_INTEL_26048 26048 +#define IDS_INTEL_26049 26049 +#define IDS_INTEL_26050 26050 +#define IDS_INTEL_26051 26051 +#define IDS_INTEL_26052 26052 +#define IDS_INTEL_26053 26053 +#define IDS_INTEL_26054 26054 +#define IDS_INTEL_26055 26055 +#define IDS_INTEL_26056 26056 +#define IDS_INTEL_26057 26057 +#define IDS_INTEL_26058 26058 +#define IDS_INTEL_26059 26059 +#define IDS_INTEL_26060 26060 +#define IDS_INTEL_26061 26061 +#define IDS_INTEL_26062 26062 +#define IDS_INTEL_26063 26063 +#define IDS_INTEL_26064 26064 +#define IDS_INTEL_26065 26065 +#define IDS_INTEL_26066 26066 +#define IDS_INTEL_26067 26067 +#define IDS_INTEL_26068 26068 +#define IDS_INTEL_26069 26069 +#define IDS_INTEL_26070 26070 +#define IDS_INTEL_26071 26071 +#define IDS_INTEL_26072 26072 +#define IDS_INTEL_26073 26073 +#define IDS_INTEL_26074 26074 +#define IDS_INTEL_26075 26075 +#define IDS_INTEL_26076 26076 +#define IDS_INTEL_26077 26077 +#define IDS_INTEL_26078 26078 +#define IDS_INTEL_26079 26079 +#define IDS_INTEL_26080 26080 +#define IDS_INTEL_26081 26081 +#define IDS_INTEL_26082 26082 +#define IDS_INTEL_26083 26083 +#define IDS_INTEL_26084 26084 +#define IDS_INTEL_26085 26085 +#define IDS_INTEL_26086 26086 +#define IDS_INTEL_26087 26087 +#define IDS_INTEL_26088 26088 +#define IDS_INTEL_26089 26089 +#define IDS_INTEL_26090 26090 +#define IDS_INTEL_26091 26091 +#define IDS_INTEL_26092 26092 +#define IDS_INTEL_26093 26093 +#define IDS_INTEL_26094 26094 +#define IDS_INTEL_26095 26095 +#define IDS_INTEL_26096 26096 +#define IDS_INTEL_26097 26097 +#define IDS_INTEL_26098 26098 +#define IDS_INTEL_26099 26099 +#define IDS_INTEL_26100 26100 +#define IDS_INTEL_26101 26101 +#define IDS_INTEL_26102 26102 +#define IDS_INTEL_26103 26103 +#define IDS_INTEL_26104 26104 +#define IDS_INTEL_26105 26105 +#define IDS_INTEL_26106 26106 +#define IDS_INTEL_26107 26107 +#define IDS_INTEL_26108 26108 +#define IDS_INTEL_26109 26109 +#define IDS_INTEL_26110 26110 +#define IDS_INTEL_26111 26111 +#define IDS_INTEL_26112 26112 +#define IDS_INTEL_26113 26113 +#define IDS_INTEL_26114 26114 +#define IDS_INTEL_26115 26115 +#define IDS_INTEL_26116 26116 +#define IDS_INTEL_26117 26117 +#define IDS_INTEL_26118 26118 +#define IDS_INTEL_26119 26119 +#define IDS_INTEL_26120 26120 +#define IDS_INTEL_26121 26121 +#define IDS_INTEL_26122 26122 +#define IDS_INTEL_26123 26123 +#define IDS_INTEL_26124 26124 +#define IDS_INTEL_26125 26125 +#define IDS_INTEL_26126 26126 +#define IDS_INTEL_26127 26127 +#define IDS_INTEL_26128 26128 +#define IDS_INTEL_26129 26129 +#define IDS_INTEL_26130 26130 +#define IDS_INTEL_26131 26131 +#define IDS_INTEL_26132 26132 +#define IDS_INTEL_26133 26133 +#define IDS_INTEL_26134 26134 +#define IDS_INTEL_26135 26135 +#define IDS_INTEL_26136 26136 +#define IDS_INTEL_26137 26137 +#define IDS_INTEL_26138 26138 +#define IDS_INTEL_26139 26139 +#define IDS_INTEL_26140 26140 +#define IDS_INTEL_26141 26141 +#define IDS_INTEL_26142 26142 +#define IDS_INTEL_26143 26143 +#define IDS_INTEL_26144 26144 +#define IDS_INTEL_26145 26145 +#define IDS_INTEL_26146 26146 +#define IDS_INTEL_26147 26147 +#define IDS_INTEL_26148 26148 +#define IDS_INTEL_26149 26149 +#define IDS_INTEL_26150 26150 +#define IDS_INTEL_26151 26151 +#define IDS_INTEL_26152 26152 +#define IDS_INTEL_26153 26153 +#define IDS_INTEL_26154 26154 +#define IDS_INTEL_26155 26155 +#define IDS_INTEL_26156 26156 +#define IDS_INTEL_26157 26157 +#define IDS_INTEL_26158 26158 +#define IDS_INTEL_26159 26159 +#define IDS_INTEL_26160 26160 +#define IDS_INTEL_26161 26161 +#define IDS_INTEL_26162 26162 +#define IDS_INTEL_26163 26163 +#define IDS_INTEL_26164 26164 +#define IDS_INTEL_26165 26165 +#define IDS_INTEL_26166 26166 +#define IDS_INTEL_26167 26167 +#define IDS_INTEL_26168 26168 +#define IDS_INTEL_26169 26169 +#define IDS_INTEL_26170 26170 +#define IDS_INTEL_26171 26171 +#define IDS_INTEL_26172 26172 +#define IDS_INTEL_26173 26173 +#define IDS_INTEL_26174 26174 +#define IDS_INTEL_26175 26175 +#define IDS_INTEL_26176 26176 +#define IDS_INTEL_26177 26177 +#define IDS_INTEL_26178 26178 +#define IDS_INTEL_26179 26179 +#define IDS_INTEL_26180 26180 +#define IDS_INTEL_26181 26181 +#define IDS_INTEL_26182 26182 +#define IDS_INTEL_26183 26183 +#define IDS_INTEL_26184 26184 +#define IDS_INTEL_26185 26185 +#define IDS_INTEL_26186 26186 +#define IDS_INTEL_26187 26187 +#define IDS_INTEL_26188 26188 +#define IDS_INTEL_26189 26189 +#define IDS_INTEL_26190 26190 +#define IDS_INTEL_26191 26191 +#define IDS_INTEL_26192 26192 +#define IDS_INTEL_26193 26193 +#define IDS_INTEL_26194 26194 +#define IDS_INTEL_26195 26195 +#define IDS_INTEL_26196 26196 +#define IDS_INTEL_26197 26197 +#define IDS_INTEL_26198 26198 +#define IDS_INTEL_26199 26199 +#define IDS_INTEL_26200 26200 +#define IDS_INTEL_26201 26201 +#define IDS_INTEL_26202 26202 +#define IDS_INTEL_26203 26203 +#define IDS_INTEL_26204 26204 +#define IDS_INTEL_26205 26205 +#define IDS_INTEL_26206 26206 +#define IDS_INTEL_26207 26207 +#define IDS_INTEL_26208 26208 +#define IDS_INTEL_26209 26209 +#define IDS_INTEL_26210 26210 +#define IDS_INTEL_26211 26211 +#define IDS_INTEL_26212 26212 +#define IDS_INTEL_26213 26213 +#define IDS_INTEL_26214 26214 +#define IDS_INTEL_26215 26215 +#define IDS_INTEL_26216 26216 +#define IDS_INTEL_26217 26217 +#define IDS_INTEL_26218 26218 +#define IDS_INTEL_26219 26219 +#define IDS_INTEL_26220 26220 +#define IDS_INTEL_26221 26221 +#define IDS_INTEL_26222 26222 +#define IDS_INTEL_26223 26223 +#define IDS_INTEL_26224 26224 +#define IDS_INTEL_26225 26225 +#define IDS_INTEL_26226 26226 +#define IDS_INTEL_26227 26227 +#define IDS_INTEL_26228 26228 +#define IDS_INTEL_26229 26229 +#define IDS_INTEL_26230 26230 +#define IDS_INTEL_26231 26231 +#define IDS_INTEL_26232 26232 +#define IDS_INTEL_26233 26233 +#define IDS_INTEL_26234 26234 +#define IDS_INTEL_26235 26235 +#define IDS_INTEL_26236 26236 +#define IDS_INTEL_26237 26237 +#define IDS_INTEL_26238 26238 +#define IDS_INTEL_26239 26239 +#define IDS_INTEL_26240 26240 +#define IDS_INTEL_26241 26241 +#define IDS_INTEL_26242 26242 +#define IDS_INTEL_26243 26243 +#define IDS_INTEL_26244 26244 +#define IDS_INTEL_26245 26245 +#define IDS_INTEL_26246 26246 +#define IDS_INTEL_26247 26247 +#define IDS_INTEL_26248 26248 +#define IDS_INTEL_26249 26249 +#define IDS_INTEL_26250 26250 +#define IDS_INTEL_26251 26251 +#define IDS_INTEL_26252 26252 +#define IDS_INTEL_26253 26253 +#define IDS_INTEL_26254 26254 +#define IDS_INTEL_26255 26255 +#define IDS_INTEL_26256 26256 +#define IDS_INTEL_26257 26257 +#define IDS_INTEL_26258 26258 +#define IDS_INTEL_26259 26259 +#define IDS_INTEL_26260 26260 +#define IDS_INTEL_26261 26261 +#define IDS_INTEL_26262 26262 +#define IDS_INTEL_26263 26263 +#define IDS_INTEL_26264 26264 +#define IDS_INTEL_26265 26265 +#define IDS_INTEL_26266 26266 +#define IDS_INTEL_26267 26267 +#define IDS_INTEL_26268 26268 +#define IDS_INTEL_26269 26269 +#define IDS_INTEL_26270 26270 +#define IDS_INTEL_26271 26271 +#define IDS_INTEL_26272 26272 +#define IDS_INTEL_26273 26273 +#define IDS_INTEL_26274 26274 +#define IDS_INTEL_26275 26275 +#define IDS_INTEL_26276 26276 +#define IDS_INTEL_26277 26277 +#define IDS_INTEL_26278 26278 +#define IDS_INTEL_26279 26279 +#define IDS_INTEL_26280 26280 +#define IDS_INTEL_26281 26281 +#define IDS_INTEL_26282 26282 +#define IDS_INTEL_26283 26283 +#define IDS_INTEL_26284 26284 +#define IDS_INTEL_26285 26285 +#define IDS_INTEL_26286 26286 +#define IDS_INTEL_26287 26287 +#define IDS_INTEL_26288 26288 +#define IDS_INTEL_26289 26289 +#define IDS_INTEL_26290 26290 +#define IDS_INTEL_26291 26291 +#define IDS_INTEL_26292 26292 +#define IDS_INTEL_26293 26293 +#define IDS_INTEL_26294 26294 +#define IDS_INTEL_26295 26295 +#define IDS_INTEL_26296 26296 +#define IDS_INTEL_26297 26297 +#define IDS_INTEL_26298 26298 +#define IDS_INTEL_26299 26299 +#define IDS_INTEL_26300 26300 +#define IDS_INTEL_26301 26301 +#define IDS_INTEL_26302 26302 +#define IDS_INTEL_26303 26303 +#define IDS_INTEL_26304 26304 +#define IDS_INTEL_26305 26305 +#define IDS_INTEL_26306 26306 +#define IDS_INTEL_26307 26307 +#define IDS_INTEL_26308 26308 +#define IDS_INTEL_26309 26309 +#define IDS_INTEL_26310 26310 +#define IDS_INTEL_26311 26311 +#define IDS_INTEL_26312 26312 +#define IDS_INTEL_26313 26313 +#define IDS_INTEL_26314 26314 +#define IDS_INTEL_26315 26315 +#define IDS_INTEL_26316 26316 +#define IDS_INTEL_26317 26317 +#define IDS_INTEL_26318 26318 +#define IDS_INTEL_26319 26319 +#define IDS_INTEL_26320 26320 +#define IDS_INTEL_26321 26321 +#define IDS_INTEL_26322 26322 +#define IDS_INTEL_26323 26323 +#define IDS_INTEL_26324 26324 +#define IDS_INTEL_26325 26325 +#define IDS_INTEL_26326 26326 +#define IDS_INTEL_26327 26327 +#define IDS_INTEL_26328 26328 +#define IDS_INTEL_26329 26329 +#define IDS_INTEL_26330 26330 +#define IDS_INTEL_26331 26331 +#define IDS_INTEL_26332 26332 +#define IDS_INTEL_26333 26333 +#define IDS_INTEL_26334 26334 +#define IDS_INTEL_26335 26335 +#define IDS_INTEL_26336 26336 +#define IDS_INTEL_26337 26337 +#define IDS_INTEL_26338 26338 +#define IDS_INTEL_26339 26339 +#define IDS_INTEL_26340 26340 +#define IDS_INTEL_26341 26341 +#define IDS_INTEL_26342 26342 +#define IDS_INTEL_26343 26343 +#define IDS_INTEL_26344 26344 +#define IDS_INTEL_26345 26345 +#define IDS_INTEL_26346 26346 +#define IDS_INTEL_26347 26347 +#define IDS_INTEL_26348 26348 +#define IDS_INTEL_26349 26349 +#define IDS_INTEL_26350 26350 +#define IDS_INTEL_26351 26351 +#define IDS_INTEL_26352 26352 +#define IDS_INTEL_26353 26353 +#define IDS_INTEL_26354 26354 +#define IDS_INTEL_26355 26355 +#define IDS_INTEL_26356 26356 +#define IDS_INTEL_26357 26357 +#define IDS_INTEL_26358 26358 +#define IDS_INTEL_26359 26359 +#define IDS_REWARD_MSG_1 30000 +#define IDS_REWARD_MSG_2 30001 +#define IDS_REWARD_MSG_3 30002 +#define IDS_REWARD_MSG_4 30003 +#define IDS_REWARD_MSG_5 30004 +#define IDS_REWARD_MSG_6 30005 +#define IDS_REWARD_MSG_7 30006 +#define IDS_REWARD_MSG_8 30007 +#define IDS_REWARD_MSG_9 30008 +#define IDS_REWARD_MSG_10 30009 +#define IDS_REWARD_MSG_11 30010 +#define IDS_REWARD_MSG_12 30011 +#define IDS_REWARD_MSG_13 30012 +#define IDS_REWARD_MSG_14 30013 +#define IDS_REWARD_MSG_15 30014 +#define IDS_REWARD_MSG_16 30015 +#define IDS_REWARD_MSG_17 30016 +#define IDS_REWARD_MSG_18 30017 +#define IDS_REWARD_MSG_19 30018 +#define IDS_REWARD_MSG_20 30019 +#define IDS_REWARD_MSG_21 30020 +#define IDS_REWARD_MSG_22 30021 +#define IDS_REWARD_MSG_23 30022 +#define IDS_REWARD_MSG_24 30023 +#define IDS_REWARD_MSG_25 30024 +#define IDS_REWARD_MSG_26 30025 +#define IDS_REWARD_MSG_27 30026 +#define IDS_REWARD_MSG_28 30027 +#define IDS_REWARD_MSG_29 30028 +#define IDS_REWARD_MSG_30 30029 +#define IDS_REWARD_MSG_31 30030 +#define IDS_REWARD_MSG_32 30031 +#define IDS_REWARD_MSG_33 30032 +#define IDS_REWARD_MSG_34 30033 +#define IDS_REWARD_MSG_35 30034 +#define IDS_REWARD_MSG_36 30035 +#define IDS_REWARD_MSG_37 30036 +#define IDS_REWARD_MSG_38 30037 +#define IDS_REWARD_MSG_39 30038 +#define IDS_REWARD_MSG_40 30039 +#define IDS_REWARD_MSG_41 30040 +#define IDS_REWARD_MSG_42 30041 +#define IDS_REWARD_MSG_43 30042 +#define IDS_REWARD_MSG_44 30043 +#define IDS_REWARD_MSG_45 30044 +#define IDS_REWARD_MSG_46 30045 +#define IDS_REWARD_MSG_47 30046 +#define IDS_REWARD_MSG_48 30047 +#define IDS_REWARD_MSG_49 30048 +#define IDS_REWARD_MSG_50 30049 +#define IDS_REWARD_MSG_51 30050 +#define IDS_REWARD_MSG_52 30051 +#define IDS_REWARD_MSG_53 30052 +#define IDS_REWARD_MSG_54 30053 +#define IDS_REWARD_MSG_55 30054 +#define IDS_REWARD_MSG_56 30055 +#define IDS_REWARD_MSG_57 30056 +#define IDS_REWARD_MSG_58 30057 +#define IDS_REWARD_MSG_59 30058 +#define IDS_REWARD_MSG_60 30059 +#define IDS_REWARD_MSG_61 30060 +#define IDS_REWARD_MSG_62 30061 +#define IDS_REWARD_MSG_63 30062 +#define IDS_REWARD_MSG_64 30063 +#define IDS_REWARD_MSG_65 30064 +#define IDS_REWARD_MSG_66 30065 +#define IDS_REWARD_MSG_67 30066 +#define IDS_REWARD_MSG_68 30067 +#define IDS_REWARD_MSG_69 30068 +#define IDS_REWARD_MSG_70 30069 +#define IDS_REWARD_MSG_71 30070 +#define IDS_REWARD_MSG_72 30071 +#define IDS_REWARD_MSG_73 30072 +#define IDS_REWARD_MSG_74 30073 +#define IDS_REWARD_MSG_75 30074 +#define IDS_REWARD_MSG_76 30075 +#define IDS_REWARD_MSG_77 30076 +#define IDS_REWARD_MSG_78 30077 +#define IDS_REWARD_MSG_79 30078 +#define IDS_REWARD_MSG_80 30079 +#define IDS_REWARD_MSG_81 30080 +#define IDS_REWARD_MSG_82 30081 +#define IDS_REWARD_MSG_83 30082 +#define IDS_REWARD_MSG_84 30083 +#define IDS_REWARD_MSG_85 30084 +#define IDS_REWARD_MSG_86 30085 +#define IDS_REWARD_MSG_87 30086 +#define IDS_REWARD_MSG_88 30087 +#define IDS_REWARD_MSG_89 30088 +#define IDS_REWARD_MSG_90 30089 +#define IDS_REWARD_MSG_91 30090 +#define IDS_REWARD_MSG_92 30091 +#define IDS_REWARD_MSG_93 30092 +#define IDS_REWARD_MSG_94 30093 +#define IDS_REWARD_MSG_95 30094 +#define IDS_REWARD_MSG_96 30095 +#define IDS_REWARD_MSG_97 30096 +#define IDS_REWARD_MSG_98 30097 +#define IDS_REWARD_MSG_99 30098 +#define IDS_REWARD_MSG_100 30099 +#define IDS_REWARD_MSG_101 30100 +#define IDS_REWARD_MSG_102 30101 +#define IDS_REWARD_MSG_103 30102 +#define IDS_REWARD_MSG_104 30103 +#define IDS_REWARD_MSG_105 30104 +#define IDS_REWARD_MSG_106 30105 +#define IDS_REWARD_MSG_107 30106 +#define IDS_REWARD_MSG_108 30107 +#define IDS_REWARD_MSG_109 30108 +#define IDS_REWARD_MSG_110 30109 +#define IDS_REWARD_MSG_111 30110 +#define IDS_REWARD_MSG_112 30111 +#define IDS_REWARD_MSG_113 30112 +#define IDS_REWARD_MSG_114 30113 +#define IDS_REWARD_MSG_115 30114 +#define IDS_REWARD_MSG_116 30115 +#define IDS_REWARD_MSG_117 30116 +#define IDS_REWARD_MSG_118 30117 +#define IDS_REWARD_MSG_119 30118 +#define IDS_REWARD_MSG_120 30119 +#define IDS_REWARD_MSG_121 30120 +#define IDS_REWARD_MSG_122 30121 +#define IDS_REWARD_MSG_123 30122 +#define IDS_REWARD_MSG_124 30123 +#define IDS_REWARD_MSG_125 30124 +#define IDS_REWARD_MSG_126 30125 +#define IDS_REWARD_MSG_127 30126 +#define IDS_REWARD_MSG_128 30127 +#define IDS_REWARD_MSG_129 30128 +#define IDS_REWARD_MSG_130 30129 +#define IDS_REWARD_MSG_131 30130 +#define IDS_REWARD_MSG_132 30131 +#define IDS_REWARD_MSG_133 30132 +#define IDS_REWARD_MSG_134 30133 +#define IDS_REWARD_MSG_135 30134 +#define IDS_REWARD_MSG_136 30135 +#define IDS_REWARD_MSG_137 30136 +#define IDS_REWARD_MSG_138 30137 +#define IDS_REWARD_MSG_139 30138 +#define IDS_REWARD_MSG_140 30139 +#define IDS_REWARD_MSG_141 30140 +#define IDS_REWARD_MSG_142 30141 +#define IDS_REWARD_MSG_143 30142 +#define IDS_REWARD_MSG_144 30143 +#define IDS_REWARD_MSG_145 30144 +#define IDS_REWARD_MSG_146 30145 +#define IDS_REWARD_MSG_147 30146 +#define IDS_REWARD_MSG_148 30147 +#define IDS_REWARD_MSG_149 30148 +#define IDS_REWARD_MSG_150 30149 +#define IDS_REWARD_MSG_151 30150 +#define IDS_REWARD_MSG_152 30151 +#define IDS_REWARD_MSG_153 30152 +#define IDS_REWARD_MSG_154 30153 +#define IDS_REWARD_MSG_155 30154 +#define IDS_REWARD_MSG_156 30155 +#define IDS_REWARD_MSG_157 30156 +#define IDS_REWARD_MSG_158 30157 +#define IDS_REWARD_MSG_159 30158 +#define IDS_REWARD_MSG_160 30159 +#define IDS_REWARD_MSG_161 30160 +#define IDS_REWARD_MSG_162 30161 +#define IDS_REWARD_MSG_163 30162 +#define IDS_REWARD_MSG_164 30163 +#define IDS_REWARD_MSG_165 30164 +#define IDS_REWARD_MSG_166 30165 +#define IDS_REWARD_MSG_167 30166 +#define IDS_REWARD_MSG_168 30167 +#define IDS_REWARD_MSG_169 30168 +#define IDS_REWARD_MSG_170 30169 +#define IDS_REWARD_MSG_171 30170 +#define IDS_REWARD_MSG_172 30171 +#define IDS_REWARD_MSG_173 30172 +#define IDS_REWARD_MSG_174 30173 +#define IDS_REWARD_MSG_175 30174 +#define IDS_REWARD_MSG_176 30175 +#define IDS_REWARD_MSG_177 30176 +#define IDS_REWARD_MSG_178 30177 +#define IDS_REWARD_MSG_179 30178 +#define IDS_REWARD_MSG_180 30179 +#define IDS_REWARD_MSG_181 30180 +#define IDS_REWARD_MSG_182 30181 +#define IDS_REWARD_MSG_183 30182 +#define IDS_REWARD_MSG_184 30183 +#define IDS_REWARD_MSG_185 30184 +#define IDS_REWARD_MSG_186 30185 +#define IDS_REWARD_MSG_187 30186 +#define IDS_REWARD_MSG_188 30187 +#define IDS_REWARD_MSG_189 30188 +#define IDS_REWARD_MSG_190 30189 +#define IDS_REWARD_MSG_191 30190 +#define IDS_REWARD_MSG_192 30191 +#define IDS_REWARD_MSG_193 30192 +#define IDS_REWARD_MSG_194 30193 +#define IDS_REWARD_MSG_195 30194 +#define IDS_REWARD_MSG_196 30195 +#define IDS_REWARD_MSG_197 30196 +#define IDS_REWARD_MSG_198 30197 +#define IDS_REWARD_MSG_199 30198 +#define IDS_REWARD_MSG_200 30199 +#define IDS_REWARD_MSG_201 30200 +#define IDS_REWARD_MSG_202 30201 +#define IDS_REWARD_MSG_203 30202 +#define IDS_REWARD_MSG_204 30203 +#define IDS_REWARD_MSG_205 30204 +#define IDS_REWARD_MSG_206 30205 +#define IDS_REWARD_MSG_207 30206 +#define IDS_REWARD_MSG_208 30207 +#define IDS_REWARD_MSG_209 30208 +#define IDS_REWARD_MSG_210 30209 +#define IDS_REWARD_MSG_211 30210 +#define IDS_REWARD_MSG_212 30211 +#define IDS_REWARD_MSG_213 30212 +#define IDS_REWARD_MSG_214 30213 +#define IDS_REWARD_MSG_215 30214 +#define IDS_REWARD_MSG_216 30215 +#define IDS_REWARD_MSG_217 30216 +#define IDS_REWARD_MSG_218 30217 +#define IDS_REWARD_MSG_219 30218 +#define IDS_REWARD_MSG_220 30219 +#define IDS_REWARD_MSG_221 30220 +#define IDS_REWARD_MSG_222 30221 +#define IDS_REWARD_MSG_223 30222 +#define IDS_REWARD_MSG_224 30223 +#define IDS_REWARD_MSG_225 30224 +#define IDS_REWARD_MSG_226 30225 +#define IDS_REWARD_MSG_227 30226 +#define IDS_REWARD_MSG_228 30227 +#define IDS_REWARD_MSG_229 30228 +#define IDS_REWARD_MSG_230 30229 +#define IDS_REWARD_MSG_231 30230 +#define IDS_REWARD_MSG_232 30231 +#define IDS_REWARD_MSG_233 30232 +#define IDS_REWARD_MSG_234 30233 +#define IDS_REWARD_MSG_235 30234 +#define IDS_REWARD_MSG_236 30235 +#define IDS_REWARD_MSG_237 30236 +#define IDS_REWARD_MSG_238 30237 +#define IDS_REWARD_MSG_239 30238 +#define IDS_REWARD_MSG_240 30239 +#define IDS_REWARD_MSG_241 30240 +#define IDS_REWARD_MSG_242 30241 +#define IDS_REWARD_MSG_243 30242 +#define IDS_REWARD_MSG_244 30243 +#define IDS_REWARD_MSG_245 30244 +#define IDS_REWARD_MSG_246 30245 +#define IDS_REWARD_MSG_247 30246 +#define IDS_REWARD_MSG_248 30247 +#define IDS_REWARD_MSG_249 30248 +#define IDS_REWARD_MSG_250 30249 +#define IDS_REWARD_MSG_251 30250 +#define IDS_REWARD_MSG_252 30251 +#define IDS_REWARD_MSG_253 30252 +#define IDS_REWARD_MSG_254 30253 +#define IDS_REWARD_MSG_255 30254 +#define IDS_REWARD_MSG_256 30255 +#define IDS_REWARD_MSG_257 30256 +#define IDS_REWARD_MSG_258 30257 +#define IDS_REWARD_MSG_259 30258 +#define IDS_REWARD_MSG_260 30259 +#define IDS_REWARD_MSG_261 30260 +#define IDS_REWARD_MSG_262 30261 +#define IDS_REWARD_MSG_263 30262 +#define IDS_REWARD_MSG_264 30263 +#define IDS_REWARD_MSG_265 30264 +#define IDS_REWARD_MSG_266 30265 +#define IDS_REWARD_MSG_267 30266 +#define IDS_REWARD_MSG_268 30267 +#define IDS_REWARD_MSG_269 30268 +#define IDS_REWARD_MSG_270 30269 +#define IDS_REWARD_MSG_271 30270 +#define IDS_REWARD_MSG_272 30271 +#define IDS_REWARD_MSG_273 30272 +#define IDS_REWARD_MSG_274 30273 +#define IDS_REWARD_MSG_275 30274 +#define IDS_REWARD_MSG_276 30275 +#define IDS_REWARD_MSG_277 30276 +#define IDS_REWARD_MSG_278 30277 +#define IDS_REWARD_MSG_279 30278 +#define IDS_REWARD_MSG_280 30279 +#define IDS_REWARD_MSG_281 30280 +#define IDS_REWARD_MSG_282 30281 +#define IDS_REWARD_MSG_283 30282 +#define IDS_REWARD_MSG_284 30283 +#define IDS_REWARD_MSG_285 30284 +#define IDS_REWARD_MSG_286 30285 +#define IDS_REWARD_MSG_287 30286 +#define IDS_REWARD_MSG_288 30287 +#define IDS_REWARD_MSG_289 30288 +#define IDS_REWARD_MSG_290 30289 +#define IDS_REWARD_MSG_291 30290 +#define IDS_REWARD_MSG_292 30291 +#define IDS_REWARD_MSG_293 30292 +#define IDS_REWARD_MSG_294 30293 +#define IDS_REWARD_MSG_295 30294 +#define IDS_REWARD_MSG_296 30295 +#define IDS_REWARD_MSG_297 30296 +#define IDS_REWARD_MSG_298 30297 +#define IDS_REWARD_MSG_299 30298 +#define IDS_REWARD_MSG_300 30299 +#define IDS_DIALOGUE_32000 32000 +#define IDS_DIALOGUE_32001 32001 +#define IDS_DIALOGUE_32002 32002 +#define IDS_DIALOGUE_32003 32003 +#define IDS_DIALOGUE_32004 32004 +#define IDS_DIALOGUE_32005 32005 +#define IDS_DIALOGUE_32006 32006 +#define IDS_DIALOGUE_32007 32007 +#define IDS_DIALOGUE_32009 32009 +#define IDS_DIALOGUE_32010 32010 +#define IDS_DIALOGUE_32011 32011 +#define IDS_DIALOGUE_32012 32012 +#define IDS_DIALOGUE_32014 32014 +#define IDS_DIALOGUE_32015 32015 +#define IDS_DIALOGUE_32016 32016 +#define IDS_DIALOGUE_32017 32017 +#define IDS_DIALOGUE_32018 32018 +#define IDS_DIALOGUE_32019 32019 +#define IDS_DIALOGUE_32020 32020 +#define IDS_DIALOGUE_32021 32021 +#define IDS_DIALOGUE_32022 32022 +#define IDS_DIALOGUE_32023 32023 +#define IDS_DIALOGUE_32024 32024 +#define IDS_DIALOGUE_32025 32025 +#define IDS_DIALOGUE_32026 32026 +#define IDS_DIALOGUE_32027 32027 +#define IDS_DIALOGUE_32028 32028 +#define IDS_DIALOGUE_32033 32033 +#define IDS_DIALOGUE_32034 32034 +#define IDS_DIALOGUE_32035 32035 +#define IDS_DIALOGUE_32036 32036 +#define IDS_DIALOGUE_32037 32037 +#define IDS_DIALOGUE_32039 32039 +#define IDS_DIALOGUE_32040 32040 +#define IDS_DIALOGUE_32041 32041 +#define IDS_DIALOGUE_32042 32042 +#define IDS_DIALOGUE_32046 32046 +#define IDS_DIALOGUE_32047 32047 +#define IDS_DIALOGUE_32051 32051 +#define IDS_DIALOGUE_32052 32052 +#define IDS_DIALOGUE_32053 32053 +#define IDS_DIALOGUE_32056 32056 +#define IDS_DIALOGUE_32057 32057 +#define IDS_DIALOGUE_32070 32070 +#define IDS_DIALOGUE_32071 32071 +#define IDS_DIALOGUE_32072 32072 +#define IDS_DIALOGUE_32073 32073 +#define IDS_DIALOGUE_32074 32074 +#define IDS_DIALOGUE_32075 32075 +#define IDS_DIALOGUE_32076 32076 +#define IDS_DIALOGUE_32077 32077 +#define IDS_DIALOGUE_32078 32078 +#define IDS_DIALOGUE_32079 32079 +#define IDS_DIALOGUE_32080 32080 +#define IDS_DIALOGUE_32081 32081 +#define IDS_DIALOGUE_32082 32082 +#define IDS_DIALOGUE_32083 32083 +#define IDS_DIALOGUE_32084 32084 +#define IDS_DIALOGUE_32085 32085 +#define IDS_DIALOGUE_32086 32086 +#define IDS_DIALOGUE_32087 32087 +#define IDS_DIALOGUE_32088 32088 +#define IDS_DIALOGUE_32089 32089 +#define IDS_DIALOGUE_32090 32090 +#define IDS_DIALOGUE_32091 32091 +#define IDS_DIALOGUE_32092 32092 +#define IDS_DIALOGUE_32093 32093 +#define IDS_DIALOGUE_32094 32094 +#define IDS_DIALOGUE_32095 32095 +#define IDS_DIALOGUE_32096 32096 +#define IDS_DIALOGUE_32097 32097 +#define IDS_DIALOGUE_32098 32098 +#define IDS_DIALOGUE_32099 32099 +#define IDS_DIALOGUE_32100 32100 +#define IDS_DIALOGUE_32101 32101 +#define IDS_DIALOGUE_32102 32102 +#define IDS_DIALOGUE_32103 32103 +#define IDS_DIALOGUE_32104 32104 +#define IDS_DIALOGUE_32105 32105 +#define IDS_DIALOGUE_32106 32106 +#define IDS_DIALOGUE_32107 32107 +#define IDS_DIALOGUE_32108 32108 +#define IDS_DIALOGUE_32122 32122 +#define IDS_DIALOGUE_32123 32123 +#define IDS_DIALOGUE_32134 32134 +#define IDS_DIALOGUE_32135 32135 +#define IDS_DIALOGUE_32136 32136 +#define IDS_DIALOGUE_32137 32137 +#define IDS_DIALOGUE_32138 32138 +#define IDS_DIALOGUE_32139 32139 +#define IDS_DIALOGUE_32140 32140 +#define IDS_DIALOGUE_32141 32141 +#define IDS_DIALOGUE_32142 32142 +#define IDS_DIALOGUE_32143 32143 +#define IDS_DIALOGUE_32144 32144 +#define IDS_DIALOGUE_32145 32145 +#define IDS_DIALOGUE_32146 32146 +#define IDS_DIALOGUE_32147 32147 +#define IDS_DIALOGUE_32148 32148 +#define IDS_DIALOGUE_32149 32149 +#define IDS_DIALOGUE_32150 32150 +#define IDS_DIALOGUE_32151 32151 +#define IDS_DIALOGUE_32152 32152 +#define IDS_DIALOGUE_32153 32153 +#define IDS_DIALOGUE_32154 32154 +#define IDS_DIALOGUE_32155 32155 +#define IDS_DIALOGUE_32156 32156 +#define IDS_DIALOGUE_32162 32162 +#define IDS_DIALOGUE_32163 32163 +#define IDS_DIALOGUE_32164 32164 +#define IDS_DIALOGUE_32166 32166 +#define IDS_DIALOGUE_32168 32168 +#define IDS_DIALOGUE_32169 32169 +#define IDS_DIALOGUE_32170 32170 +#define IDS_DIALOGUE_32171 32171 +#define IDS_DIALOGUE_32172 32172 +#define IDS_DIALOGUE_32173 32173 +#define IDS_DIALOGUE_32174 32174 +#define IDS_DIALOGUE_32175 32175 +#define IDS_DIALOGUE_32176 32176 +#define IDS_DIALOGUE_32177 32177 +#define IDS_DIALOGUE_32178 32178 +#define IDS_DIALOGUE_32179 32179 +#define IDS_DIALOGUE_32180 32180 +#define IDS_DIALOGUE_32181 32181 +#define IDS_DIALOGUE_32182 32182 +#define IDS_DIALOGUE_32183 32183 +#define IDS_DIALOGUE_32184 32184 +#define IDS_DIALOGUE_32185 32185 +#define IDS_DIALOGUE_32186 32186 +#define IDS_DIALOGUE_32188 32188 +#define IDS_DIALOGUE_32189 32189 +#define IDS_DIALOGUE_32190 32190 +#define IDS_DIALOGUE_32191 32191 +#define IDS_DIALOGUE_32192 32192 +#define IDS_DIALOGUE_32193 32193 +#define IDS_DIALOGUE_32194 32194 +#define IDS_DIALOGUE_32195 32195 +#define IDS_DIALOGUE_32196 32196 +#define IDS_DIALOGUE_32197 32197 +#define IDS_DIALOGUE_32198 32198 +#define IDS_DIALOGUE_32199 32199 +#define IDS_DIALOGUE_32200 32200 +#define IDS_DIALOGUE_32201 32201 +#define IDS_DIALOGUE_32202 32202 +#define IDS_DIALOGUE_32203 32203 +#define IDS_DIALOGUE_32204 32204 +#define IDS_DIALOGUE_32205 32205 +#define IDS_DIALOGUE_32206 32206 +#define IDS_DIALOGUE_32207 32207 +#define IDS_DIALOGUE_32208 32208 +#define IDS_DIALOGUE_32209 32209 +#define IDS_DIALOGUE_32210 32210 +#define IDS_DIALOGUE_32211 32211 +#define IDS_DIALOGUE_32212 32212 +#define IDS_DIALOGUE_32213 32213 +#define IDS_DIALOGUE_32214 32214 +#define IDS_DIALOGUE_32215 32215 +#define IDS_DIALOGUE_32216 32216 +#define IDS_DIALOGUE_32217 32217 +#define IDS_DIALOGUE_32218 32218 +#define IDS_DIALOGUE_32219 32219 +#define IDS_DIALOGUE_32220 32220 +#define IDS_DIALOGUE_32221 32221 +#define IDS_DIALOGUE_32222 32222 +#define IDS_DIALOGUE_32223 32223 +#define IDS_DIALOGUE_32224 32224 +#define IDS_DIALOGUE_32225 32225 +#define IDS_DIALOGUE_32227 32227 +#define IDS_DIALOGUE_32228 32228 +#define IDS_DIALOGUE_32229 32229 +#define IDS_DIALOGUE_32230 32230 +#define IDS_DIALOGUE_32234 32234 +#define IDS_DIALOGUE_32235 32235 +#define IDS_DIALOGUE_32239 32239 +#define IDS_DIALOGUE_32240 32240 +#define IDS_DIALOGUE_32241 32241 +#define IDS_DIALOGUE_32242 32242 +#define IDS_DIALOGUE_32243 32243 +#define IDS_DIALOGUE_32244 32244 +#define IDS_DIALOGUE_32245 32245 +#define IDS_DIALOGUE_32258 32258 +#define IDS_DIALOGUE_32259 32259 +#define IDS_DIALOGUE_32260 32260 +#define IDS_DIALOGUE_32261 32261 +#define IDS_DIALOGUE_32262 32262 +#define IDS_DIALOGUE_32263 32263 +#define IDS_DIALOGUE_32264 32264 +#define IDS_DIALOGUE_32265 32265 +#define IDS_DIALOGUE_32266 32266 +#define IDS_DIALOGUE_32267 32267 +#define IDS_DIALOGUE_32268 32268 +#define IDS_DIALOGUE_32269 32269 +#define IDS_DIALOGUE_32270 32270 +#define IDS_DIALOGUE_32271 32271 +#define IDS_DIALOGUE_32272 32272 +#define IDS_DIALOGUE_32273 32273 +#define IDS_DIALOGUE_32274 32274 +#define IDS_DIALOGUE_32275 32275 +#define IDS_DIALOGUE_32276 32276 +#define IDS_DIALOGUE_32277 32277 +#define IDS_DIALOGUE_32278 32278 +#define IDS_DIALOGUE_32279 32279 +#define IDS_DIALOGUE_32280 32280 +#define IDS_DIALOGUE_32281 32281 +#define IDS_DIALOGUE_32282 32282 +#define IDS_DIALOGUE_32283 32283 +#define IDS_DIALOGUE_32284 32284 +#define IDS_DIALOGUE_32285 32285 +#define IDS_DIALOGUE_32286 32286 +#define IDS_DIALOGUE_32287 32287 +#define IDS_DIALOGUE_32288 32288 +#define IDS_DIALOGUE_32289 32289 +#define IDS_DIALOGUE_32290 32290 +#define IDS_DIALOGUE_32291 32291 +#define IDS_DIALOGUE_32292 32292 +#define IDS_DIALOGUE_32293 32293 +#define IDS_DIALOGUE_32294 32294 +#define IDS_DIALOGUE_32295 32295 +#define IDS_DIALOGUE_32296 32296 +#define IDS_DIALOGUE_32299 32299 +#define IDS_DIALOGUE_32300 32300 +#define IDS_DIALOGUE_32301 32301 +#define IDS_DIALOGUE_32310 32310 +#define IDS_DIALOGUE_32311 32311 +#define IDS_DIALOGUE_32312 32312 +#define IDS_DIALOGUE_32313 32313 +#define IDS_DIALOGUE_32324 32324 +#define IDS_DIALOGUE_32325 32325 +#define IDS_DIALOGUE_32326 32326 +#define IDS_DIALOGUE_32327 32327 +#define IDS_DIALOGUE_32328 32328 +#define IDS_DIALOGUE_32329 32329 +#define IDS_DIALOGUE_32330 32330 +#define IDS_DIALOGUE_32331 32331 +#define IDS_DIALOGUE_32332 32332 +#define IDS_DIALOGUE_32333 32333 +#define IDS_DIALOGUE_32334 32334 +#define IDS_DIALOGUE_32335 32335 +#define IDS_DIALOGUE_32336 32336 +#define IDS_DIALOGUE_32337 32337 +#define IDS_DIALOGUE_32338 32338 +#define IDS_DIALOGUE_32339 32339 +#define IDS_DIALOGUE_32340 32340 +#define IDS_DIALOGUE_32341 32341 +#define IDS_DIALOGUE_32342 32342 +#define IDS_DIALOGUE_32343 32343 +#define IDS_DIALOGUE_32344 32344 +#define IDS_DIALOGUE_32345 32345 +#define IDS_DIALOGUE_32346 32346 +#define IDS_DIALOGUE_32347 32347 +#define IDS_DIALOGUE_32353 32353 +#define IDS_DIALOGUE_32354 32354 +#define IDS_DIALOGUE_32355 32355 +#define IDS_DIALOGUE_32356 32356 +#define IDS_DIALOGUE_32358 32358 +#define IDS_DIALOGUE_32360 32360 +#define IDS_DIALOGUE_32361 32361 +#define IDS_DIALOGUE_32362 32362 +#define IDS_DIALOGUE_32363 32363 +#define IDS_DIALOGUE_32364 32364 +#define IDS_DIALOGUE_32365 32365 +#define IDS_DIALOGUE_32366 32366 +#define IDS_DIALOGUE_32367 32367 +#define IDS_DIALOGUE_32368 32368 +#define IDS_DIALOGUE_32369 32369 +#define IDS_DIALOGUE_32370 32370 +#define IDS_DIALOGUE_32371 32371 +#define IDS_DIALOGUE_32372 32372 +#define IDS_DIALOGUE_32373 32373 +#define IDS_DIALOGUE_32374 32374 +#define IDS_DIALOGUE_32375 32375 +#define IDS_DIALOGUE_32376 32376 +#define IDS_DIALOGUE_32377 32377 +#define IDS_DIALOGUE_32378 32378 +#define IDS_DIALOGUE_32380 32380 +#define IDS_DIALOGUE_32381 32381 +#define IDS_DIALOGUE_32382 32382 +#define IDS_DIALOGUE_32383 32383 +#define IDS_DIALOGUE_32384 32384 +#define IDS_DIALOGUE_32385 32385 +#define IDS_DIALOGUE_32386 32386 +#define IDS_DIALOGUE_32387 32387 +#define IDS_DIALOGUE_32388 32388 +#define IDS_DIALOGUE_32389 32389 +#define IDS_DIALOGUE_32390 32390 +#define IDS_DIALOGUE_32391 32391 +#define IDS_DIALOGUE_32392 32392 +#define IDS_DIALOGUE_32393 32393 +#define IDS_DIALOGUE_32394 32394 +#define IDS_DIALOGUE_32395 32395 +#define IDS_DIALOGUE_32396 32396 +#define IDS_DIALOGUE_32397 32397 +#define IDS_DIALOGUE_32398 32398 +#define IDS_DIALOGUE_32399 32399 +#define IDS_DIALOGUE_32400 32400 +#define IDS_DIALOGUE_32401 32401 +#define IDS_DIALOGUE_32402 32402 +#define IDS_DIALOGUE_32403 32403 +#define IDS_DIALOGUE_32404 32404 +#define IDS_DIALOGUE_32405 32405 +#define IDS_DIALOGUE_32406 32406 +#define IDS_DIALOGUE_32407 32407 +#define IDS_DIALOGUE_32408 32408 +#define IDS_DIALOGUE_32409 32409 +#define IDS_DIALOGUE_32410 32410 +#define IDS_DIALOGUE_32411 32411 +#define IDS_DIALOGUE_32413 32413 +#define IDS_DIALOGUE_32414 32414 +#define IDS_DIALOGUE_32415 32415 +#define IDS_DIALOGUE_32416 32416 +#define IDS_DIALOGUE_32417 32417 +#define IDS_DIALOGUE_32418 32418 +#define IDS_DIALOGUE_32419 32419 +#define IDS_DIALOGUE_32420 32420 +#define IDS_DIALOGUE_32422 32422 +#define IDS_DIALOGUE_32423 32423 +#define IDS_DIALOGUE_32424 32424 +#define IDS_DIALOGUE_32425 32425 +#define IDS_DIALOGUE_32426 32426 +#define IDS_DIALOGUE_32428 32428 +#define IDS_DIALOGUE_32429 32429 +#define IDS_DIALOGUE_32430 32430 +#define IDS_DIALOGUE_32431 32431 +#define IDS_DIALOGUE_32435 32435 +#define IDS_DIALOGUE_32436 32436 +#define IDS_DIALOGUE_32437 32437 +#define IDS_DIALOGUE_32438 32438 +#define IDS_DIALOGUE_32439 32439 +#define IDS_DIALOGUE_32440 32440 +#define IDS_DIALOGUE_32441 32441 +#define IDS_DIALOGUE_32454 32454 +#define IDS_DIALOGUE_32455 32455 +#define IDS_DIALOGUE_32456 32456 +#define IDS_DIALOGUE_32457 32457 +#define IDS_DIALOGUE_32458 32458 +#define IDS_DIALOGUE_32459 32459 +#define IDS_DIALOGUE_32460 32460 +#define IDS_DIALOGUE_32461 32461 +#define IDS_DIALOGUE_32462 32462 +#define IDS_DIALOGUE_32463 32463 +#define IDS_DIALOGUE_32464 32464 +#define IDS_DIALOGUE_32465 32465 +#define IDS_DIALOGUE_32466 32466 +#define IDS_DIALOGUE_32467 32467 +#define IDS_DIALOGUE_32468 32468 +#define IDS_DIALOGUE_32469 32469 +#define IDS_DIALOGUE_32470 32470 +#define IDS_DIALOGUE_32471 32471 +#define IDS_DIALOGUE_32472 32472 +#define IDS_DIALOGUE_32473 32473 +#define IDS_DIALOGUE_32474 32474 +#define IDS_DIALOGUE_32475 32475 +#define IDS_DIALOGUE_32476 32476 +#define IDS_DIALOGUE_32477 32477 +#define IDS_DIALOGUE_32478 32478 +#define IDS_DIALOGUE_32479 32479 +#define IDS_DIALOGUE_32480 32480 +#define IDS_DIALOGUE_32481 32481 +#define IDS_DIALOGUE_32482 32482 +#define IDS_DIALOGUE_32483 32483 +#define IDS_DIALOGUE_32484 32484 +#define IDS_DIALOGUE_32485 32485 +#define IDS_DIALOGUE_32486 32486 +#define IDS_DIALOGUE_32487 32487 +#define IDS_DIALOGUE_32488 32488 +#define IDS_DIALOGUE_32489 32489 +#define IDS_DIALOGUE_32490 32490 +#define IDS_DIALOGUE_32491 32491 +#define IDS_DIALOGUE_32492 32492 +#define IDS_DIALOGUE_32495 32495 +#define IDS_DIALOGUE_32496 32496 +#define IDS_DIALOGUE_32497 32497 +#define IDS_DIALOGUE_32503 32503 +#define IDS_DIALOGUE_32504 32504 +#define IDS_DIALOGUE_32505 32505 +#define IDS_DIALOGUE_32506 32506 +#define IDS_DIALOGUE_32507 32507 +#define IDS_DIALOGUE_32508 32508 +#define IDS_DIALOGUE_32509 32509 +#define IDS_DIALOGUE_32520 32520 +#define IDS_DIALOGUE_32521 32521 +#define IDS_DIALOGUE_32522 32522 +#define IDS_DIALOGUE_32523 32523 +#define IDS_DIALOGUE_32524 32524 +#define IDS_DIALOGUE_32525 32525 +#define IDS_DIALOGUE_32526 32526 +#define IDS_DIALOGUE_32527 32527 +#define IDS_DIALOGUE_32528 32528 +#define IDS_DIALOGUE_32529 32529 +#define IDS_DIALOGUE_32530 32530 +#define IDS_DIALOGUE_32531 32531 +#define IDS_DIALOGUE_32532 32532 +#define IDS_DIALOGUE_32533 32533 +#define IDS_DIALOGUE_32534 32534 +#define IDS_DIALOGUE_32535 32535 +#define IDS_DIALOGUE_32536 32536 +#define IDS_DIALOGUE_32537 32537 +#define IDS_DIALOGUE_32538 32538 +#define IDS_DIALOGUE_32539 32539 +#define IDS_DIALOGUE_32540 32540 +#define IDS_DIALOGUE_32541 32541 +#define IDS_DIALOGUE_32542 32542 +#define IDS_DIALOGUE_32543 32543 +#define IDS_DIALOGUE_32549 32549 +#define IDS_DIALOGUE_32550 32550 +#define IDS_DIALOGUE_32551 32551 +#define IDS_DIALOGUE_32553 32553 +#define IDS_DIALOGUE_32555 32555 +#define IDS_DIALOGUE_32556 32556 +#define IDS_DIALOGUE_32557 32557 +#define IDS_DIALOGUE_32558 32558 +#define IDS_DIALOGUE_32559 32559 +#define IDS_DIALOGUE_32560 32560 +#define IDS_DIALOGUE_32561 32561 +#define IDS_DIALOGUE_32562 32562 +#define IDS_DIALOGUE_32563 32563 +#define IDS_DIALOGUE_32564 32564 +#define IDS_DIALOGUE_32565 32565 +#define IDS_DIALOGUE_32566 32566 +#define IDS_DIALOGUE_32567 32567 +#define IDS_DIALOGUE_32568 32568 +#define IDS_DIALOGUE_32569 32569 +#define IDS_DIALOGUE_32570 32570 +#define IDS_DIALOGUE_32571 32571 +#define IDS_DIALOGUE_32572 32572 +#define IDS_DIALOGUE_32573 32573 +#define IDS_DIALOGUE_32577 32577 +#define IDS_DIALOGUE_32578 32578 +#define IDS_DIALOGUE_32579 32579 +#define IDS_DIALOGUE_32580 32580 +#define IDS_DIALOGUE_32581 32581 +#define IDS_DIALOGUE_32582 32582 +#define IDS_DIALOGUE_32583 32583 +#define IDS_DIALOGUE_32584 32584 +#define IDS_DIALOGUE_32585 32585 +#define IDS_DIALOGUE_32586 32586 +#define IDS_DIALOGUE_32587 32587 +#define IDS_DIALOGUE_32588 32588 +#define IDS_DIALOGUE_32589 32589 +#define IDS_DIALOGUE_32590 32590 +#define IDS_DIALOGUE_32591 32591 +#define IDS_DIALOGUE_32592 32592 +#define IDS_DIALOGUE_32593 32593 +#define IDS_DIALOGUE_32594 32594 +#define IDS_DIALOGUE_32595 32595 +#define IDS_DIALOGUE_32596 32596 +#define IDS_DIALOGUE_32597 32597 +#define IDS_DIALOGUE_32598 32598 +#define IDS_DIALOGUE_32599 32599 +#define IDS_DIALOGUE_32600 32600 +#define IDS_DIALOGUE_32601 32601 +#define IDS_DIALOGUE_32602 32602 +#define IDS_DIALOGUE_32603 32603 +#define IDS_DIALOGUE_32604 32604 +#define IDS_DIALOGUE_32606 32606 +#define IDS_DIALOGUE_32607 32607 +#define IDS_DIALOGUE_32608 32608 +#define IDS_DIALOGUE_32609 32609 +#define IDS_DIALOGUE_32610 32610 +#define IDS_DIALOGUE_32611 32611 +#define IDS_DIALOGUE_32612 32612 +#define IDS_DIALOGUE_32613 32613 +#define IDS_DIALOGUE_32615 32615 +#define IDS_DIALOGUE_32616 32616 +#define IDS_DIALOGUE_32617 32617 +#define IDS_DIALOGUE_32618 32618 +#define IDS_DIALOGUE_32619 32619 +#define IDS_DIALOGUE_32623 32623 +#define IDS_DIALOGUE_32624 32624 +#define IDS_DIALOGUE_32628 32628 +#define IDS_DIALOGUE_32629 32629 +#define IDS_DIALOGUE_32630 32630 +#define IDS_DIALOGUE_32631 32631 +#define IDS_DIALOGUE_32632 32632 +#define IDS_DIALOGUE_32633 32633 +#define IDS_DIALOGUE_32634 32634 +#define IDS_DIALOGUE_32647 32647 +#define IDS_DIALOGUE_32648 32648 +#define IDS_DIALOGUE_32649 32649 +#define IDS_DIALOGUE_32650 32650 +#define IDS_DIALOGUE_32651 32651 +#define IDS_DIALOGUE_32652 32652 +#define IDS_DIALOGUE_32653 32653 +#define IDS_DIALOGUE_32654 32654 +#define IDS_DIALOGUE_32655 32655 +#define IDS_DIALOGUE_32656 32656 +#define IDS_DIALOGUE_32657 32657 +#define IDS_DIALOGUE_32658 32658 +#define IDS_DIALOGUE_32659 32659 +#define IDS_DIALOGUE_32660 32660 +#define IDS_DIALOGUE_32661 32661 +#define IDS_DIALOGUE_32662 32662 +#define IDS_DIALOGUE_32663 32663 +#define IDS_DIALOGUE_32664 32664 +#define IDS_DIALOGUE_32665 32665 +#define IDS_DIALOGUE_32666 32666 +#define IDS_DIALOGUE_32667 32667 +#define IDS_DIALOGUE_32668 32668 +#define IDS_DIALOGUE_32669 32669 +#define IDS_DIALOGUE_32670 32670 +#define IDS_DIALOGUE_32671 32671 +#define IDS_DIALOGUE_32672 32672 +#define IDS_DIALOGUE_32673 32673 +#define IDS_DIALOGUE_32674 32674 +#define IDS_DIALOGUE_32675 32675 +#define IDS_DIALOGUE_32676 32676 +#define IDS_DIALOGUE_32677 32677 +#define IDS_DIALOGUE_32678 32678 +#define IDS_DIALOGUE_32692 32692 +#define IDS_DIALOGUE_32693 32693 +#define IDS_DIALOGUE_32694 32694 +#define IDS_DIALOGUE_32695 32695 +#define IDS_DIALOGUE_32706 32706 +#define IDS_DIALOGUE_32707 32707 +#define IDS_DIALOGUE_32708 32708 +#define IDS_DIALOGUE_32709 32709 +#define IDS_DIALOGUE_32710 32710 +#define IDS_DIALOGUE_32711 32711 +#define IDS_DIALOGUE_32712 32712 +#define IDS_DIALOGUE_32713 32713 +#define IDS_DIALOGUE_32714 32714 +#define IDS_DIALOGUE_32741 32741 +#define IDS_DIALOGUE_32742 32742 +#define IDS_DIALOGUE_32743 32743 +#define IDS_DIALOGUE_32744 32744 +#define IDS_DIALOGUE_32745 32745 +#define IDS_DIALOGUE_32746 32746 +#define IDS_DIALOGUE_32747 32747 +#define IDS_DIALOGUE_32748 32748 +#define IDS_DIALOGUE_32749 32749 +#define IDS_DIALOGUE_32750 32750 +#define IDS_DIALOGUE_32754 32754 +#define IDS_DIALOGUE_32755 32755 +#define IDS_DIALOGUE_32756 32756 +#define IDS_DIALOGUE_32760 32760 +#define IDS_DIALOGUE_32761 32761 +#define IDS_DIALOGUE_32762 32762 +#define IDS_DIALOGUE_32763 32763 +#define IDS_DIALOGUE_32764 32764 +#define IDS_DIALOGUE_32765 32765 +#define IDS_DIALOGUE_32766 32766 +#define IDS_DIALOGUE_32767 32767 +#define IDS_DIALOGUE_32768 32768 +#define IDS_DIALOGUE_32769 32769 +#define IDS_DIALOGUE_32770 32770 +#define IDS_DIALOGUE_32771 32771 +#define IDS_DIALOGUE_32772 32772 +#define IDS_DIALOGUE_32773 32773 +#define IDS_DIALOGUE_32774 32774 +#define IDS_DIALOGUE_32775 32775 +#define IDS_DIALOGUE_32776 32776 +#define IDS_DIALOGUE_32777 32777 +#define IDS_DIALOGUE_32778 32778 +#define IDS_DIALOGUE_32779 32779 +#define IDS_DIALOGUE_32780 32780 +#define IDS_DIALOGUE_32781 32781 +#define IDS_DIALOGUE_32782 32782 +#define IDS_DIALOGUE_32783 32783 +#define IDS_DIALOGUE_32784 32784 +#define IDS_DIALOGUE_32785 32785 +#define IDS_DIALOGUE_32786 32786 +#define IDS_DIALOGUE_32787 32787 +#define IDS_DIALOGUE_32789 32789 +#define IDS_DIALOGUE_32790 32790 +#define IDS_DIALOGUE_32791 32791 +#define IDS_DIALOGUE_32792 32792 +#define IDS_DIALOGUE_32793 32793 +#define IDS_DIALOGUE_32794 32794 +#define IDS_DIALOGUE_32795 32795 +#define IDS_DIALOGUE_32796 32796 +#define IDS_DIALOGUE_32798 32798 +#define IDS_DIALOGUE_32799 32799 +#define IDS_DIALOGUE_32800 32800 +#define IDS_DIALOGUE_32801 32801 +#define IDS_DIALOGUE_32802 32802 +#define IDS_DIALOGUE_32806 32806 +#define IDS_DIALOGUE_32807 32807 +#define IDS_DIALOGUE_32811 32811 +#define IDS_DIALOGUE_32812 32812 +#define IDS_DIALOGUE_32813 32813 +#define IDS_DIALOGUE_32814 32814 +#define IDS_DIALOGUE_32815 32815 +#define IDS_DIALOGUE_32816 32816 +#define IDS_DIALOGUE_32817 32817 +#define IDS_DIALOGUE_32830 32830 +#define IDS_DIALOGUE_32831 32831 +#define IDS_DIALOGUE_32832 32832 +#define IDS_DIALOGUE_32833 32833 +#define IDS_DIALOGUE_32834 32834 +#define IDS_DIALOGUE_32835 32835 +#define IDS_DIALOGUE_32836 32836 +#define IDS_DIALOGUE_32837 32837 +#define IDS_DIALOGUE_32838 32838 +#define IDS_DIALOGUE_32839 32839 +#define IDS_DIALOGUE_32840 32840 +#define IDS_DIALOGUE_32841 32841 +#define IDS_DIALOGUE_32842 32842 +#define IDS_DIALOGUE_32843 32843 +#define IDS_DIALOGUE_32844 32844 +#define IDS_DIALOGUE_32845 32845 +#define IDS_DIALOGUE_32846 32846 +#define IDS_DIALOGUE_32847 32847 +#define IDS_DIALOGUE_32848 32848 +#define IDS_DIALOGUE_32849 32849 +#define IDS_DIALOGUE_32850 32850 +#define IDS_DIALOGUE_32851 32851 +#define IDS_DIALOGUE_32852 32852 +#define IDS_DIALOGUE_32853 32853 +#define IDS_DIALOGUE_32854 32854 +#define IDS_DIALOGUE_32855 32855 +#define IDS_DIALOGUE_32856 32856 +#define IDS_DIALOGUE_32857 32857 +#define IDS_DIALOGUE_32858 32858 +#define IDS_DIALOGUE_32859 32859 +#define IDS_DIALOGUE_32860 32860 +#define IDS_DIALOGUE_32861 32861 +#define IDS_DIALOGUE_32862 32862 +#define IDS_DIALOGUE_32863 32863 +#define IDS_DIALOGUE_32864 32864 +#define IDS_DIALOGUE_32865 32865 +#define IDS_DIALOGUE_32866 32866 +#define IDS_DIALOGUE_32867 32867 +#define IDS_DIALOGUE_32868 32868 +#define IDS_DIALOGUE_32871 32871 +#define IDS_DIALOGUE_32872 32872 +#define IDS_DIALOGUE_32873 32873 +#define IDS_DIALOGUE_32882 32882 +#define IDS_DIALOGUE_32883 32883 +#define IDS_DIALOGUE_32884 32884 +#define IDS_DIALOGUE_32885 32885 +#define IDS_DIALOGUE_32896 32896 +#define IDS_DIALOGUE_32897 32897 +#define IDS_DIALOGUE_32898 32898 +#define IDS_DIALOGUE_32899 32899 +#define IDS_DIALOGUE_32900 32900 +#define IDS_DIALOGUE_32901 32901 +#define IDS_DIALOGUE_32902 32902 +#define IDS_DIALOGUE_32903 32903 +#define IDS_DIALOGUE_32904 32904 +#define IDS_DIALOGUE_32905 32905 +#define IDS_DIALOGUE_32906 32906 +#define IDS_DIALOGUE_32907 32907 +#define IDS_DIALOGUE_32908 32908 +#define IDS_DIALOGUE_32909 32909 +#define IDS_DIALOGUE_32910 32910 +#define IDS_DIALOGUE_32911 32911 +#define IDS_DIALOGUE_32912 32912 +#define IDS_DIALOGUE_32913 32913 +#define IDS_DIALOGUE_32914 32914 +#define IDS_DIALOGUE_32915 32915 +#define IDS_DIALOGUE_32916 32916 +#define IDS_DIALOGUE_32917 32917 +#define IDS_DIALOGUE_32918 32918 +#define IDS_DIALOGUE_32919 32919 +#define IDS_DIALOGUE_32925 32925 +#define IDS_DIALOGUE_32926 32926 +#define IDS_DIALOGUE_32927 32927 +#define IDS_DIALOGUE_32928 32928 +#define IDS_DIALOGUE_32930 32930 +#define IDS_DIALOGUE_32932 32932 +#define IDS_DIALOGUE_32933 32933 +#define IDS_DIALOGUE_32934 32934 +#define IDS_DIALOGUE_32935 32935 +#define IDS_DIALOGUE_32936 32936 +#define IDS_DIALOGUE_32937 32937 +#define IDS_DIALOGUE_32938 32938 +#define IDS_DIALOGUE_32939 32939 +#define IDS_DIALOGUE_32940 32940 +#define IDS_DIALOGUE_32941 32941 +#define IDS_DIALOGUE_32942 32942 +#define IDS_DIALOGUE_32943 32943 +#define IDS_DIALOGUE_32944 32944 +#define IDS_DIALOGUE_32945 32945 +#define IDS_DIALOGUE_32946 32946 +#define IDS_DIALOGUE_32947 32947 +#define IDS_DIALOGUE_32948 32948 +#define IDS_DIALOGUE_32949 32949 +#define IDS_DIALOGUE_32950 32950 +#define IDS_DIALOGUE_32952 32952 +#define IDS_DIALOGUE_32953 32953 +#define IDS_DIALOGUE_32954 32954 +#define IDS_DIALOGUE_32955 32955 +#define IDS_DIALOGUE_32956 32956 +#define IDS_DIALOGUE_32957 32957 +#define IDS_DIALOGUE_32958 32958 +#define IDS_DIALOGUE_32959 32959 +#define IDS_DIALOGUE_32961 32961 +#define IDS_DIALOGUE_32962 32962 +#define IDS_DIALOGUE_32963 32963 +#define IDS_DIALOGUE_32964 32964 +#define IDS_DIALOGUE_32965 32965 +#define IDS_DIALOGUE_32966 32966 +#define IDS_DIALOGUE_32967 32967 +#define IDS_DIALOGUE_32968 32968 +#define IDS_DIALOGUE_32969 32969 +#define IDS_DIALOGUE_32970 32970 +#define IDS_DIALOGUE_32971 32971 +#define IDS_DIALOGUE_32973 32973 +#define IDS_DIALOGUE_32974 32974 +#define IDS_DIALOGUE_32975 32975 +#define IDS_DIALOGUE_32976 32976 +#define IDS_DIALOGUE_32977 32977 +#define IDS_DIALOGUE_32978 32978 +#define IDS_DIALOGUE_32979 32979 +#define IDS_DIALOGUE_32981 32981 +#define IDS_DIALOGUE_32982 32982 +#define IDS_DIALOGUE_32983 32983 +#define IDS_DIALOGUE_32984 32984 +#define IDS_DIALOGUE_32985 32985 +#define IDS_DIALOGUE_32986 32986 +#define IDS_DIALOGUE_32987 32987 +#define IDS_DIALOGUE_32988 32988 +#define IDS_DIALOGUE_32990 32990 +#define IDS_DIALOGUE_32991 32991 +#define IDS_DIALOGUE_32992 32992 +#define IDS_DIALOGUE_32993 32993 +#define IDS_DIALOGUE_32994 32994 +#define IDS_DIALOGUE_32998 32998 +#define IDS_DIALOGUE_32999 32999 +#define IDS_DIALOGUE_33003 33003 +#define IDS_DIALOGUE_33004 33004 +#define IDS_DIALOGUE_33005 33005 +#define IDS_DIALOGUE_33006 33006 +#define IDS_DIALOGUE_33007 33007 +#define IDS_DIALOGUE_33008 33008 +#define IDS_DIALOGUE_33009 33009 +#define IDS_DIALOGUE_33024 33024 +#define IDS_DIALOGUE_33025 33025 +#define IDS_DIALOGUE_33026 33026 +#define IDS_DIALOGUE_33027 33027 +#define IDS_DIALOGUE_33028 33028 +#define IDS_DIALOGUE_33032 33032 +#define IDS_DIALOGUE_33033 33033 +#define IDS_DIALOGUE_33034 33034 +#define IDS_DIALOGUE_33035 33035 +#define IDS_DIALOGUE_33036 33036 +#define IDS_DIALOGUE_33037 33037 +#define IDS_DIALOGUE_33038 33038 +#define IDS_DIALOGUE_33039 33039 +#define IDS_DIALOGUE_33040 33040 +#define IDS_DIALOGUE_33041 33041 +#define IDS_DIALOGUE_33042 33042 +#define IDS_DIALOGUE_33043 33043 +#define IDS_DIALOGUE_33044 33044 +#define IDS_DIALOGUE_33045 33045 +#define IDS_DIALOGUE_33046 33046 +#define IDS_DIALOGUE_33047 33047 +#define IDS_DIALOGUE_33048 33048 +#define IDS_DIALOGUE_33049 33049 +#define IDS_DIALOGUE_33050 33050 +#define IDS_DIALOGUE_33051 33051 +#define IDS_DIALOGUE_33052 33052 +#define IDS_DIALOGUE_33053 33053 +#define IDS_DIALOGUE_33054 33054 +#define IDS_DIALOGUE_33055 33055 +#define IDS_DIALOGUE_33056 33056 +#define IDS_DIALOGUE_33057 33057 +#define IDS_DIALOGUE_33058 33058 +#define IDS_DIALOGUE_33059 33059 +#define IDS_DIALOGUE_33060 33060 +#define IDS_DIALOGUE_33061 33061 +#define IDS_DIALOGUE_33062 33062 +#define IDS_DIALOGUE_33065 33065 +#define IDS_DIALOGUE_33066 33066 +#define IDS_DIALOGUE_33067 33067 +#define IDS_DIALOGUE_33076 33076 +#define IDS_DIALOGUE_33077 33077 +#define IDS_DIALOGUE_33078 33078 +#define IDS_DIALOGUE_33079 33079 +#define IDS_DIALOGUE_33090 33090 +#define IDS_DIALOGUE_33091 33091 +#define IDS_DIALOGUE_33092 33092 +#define IDS_DIALOGUE_33093 33093 +#define IDS_DIALOGUE_33094 33094 +#define IDS_DIALOGUE_33095 33095 +#define IDS_DIALOGUE_33096 33096 +#define IDS_DIALOGUE_33097 33097 +#define IDS_DIALOGUE_33098 33098 +#define IDS_DIALOGUE_33099 33099 +#define IDS_DIALOGUE_33100 33100 +#define IDS_DIALOGUE_33101 33101 +#define IDS_DIALOGUE_33102 33102 +#define IDS_DIALOGUE_33103 33103 +#define IDS_DIALOGUE_33104 33104 +#define IDS_DIALOGUE_33105 33105 +#define IDS_DIALOGUE_33106 33106 +#define IDS_DIALOGUE_33107 33107 +#define IDS_DIALOGUE_33110 33110 +#define IDS_DIALOGUE_33111 33111 +#define IDS_DIALOGUE_33112 33112 +#define IDS_DIALOGUE_33113 33113 +#define IDS_DIALOGUE_33120 33120 +#define IDS_DIALOGUE_33121 33121 +#define IDS_DIALOGUE_33129 33129 +#define IDS_DIALOGUE_33131 33131 +#define IDS_DIALOGUE_33132 33132 +#define IDS_DIALOGUE_33133 33133 +#define IDS_DIALOGUE_33134 33134 +#define IDS_DIALOGUE_33135 33135 +#define IDS_DIALOGUE_33136 33136 +#define IDS_DIALOGUE_33137 33137 +#define IDS_DIALOGUE_33138 33138 +#define IDS_DIALOGUE_33139 33139 +#define IDS_DIALOGUE_33140 33140 +#define IDS_DIALOGUE_33141 33141 +#define IDS_DIALOGUE_33142 33142 +#define IDS_DIALOGUE_33143 33143 +#define IDS_DIALOGUE_33144 33144 +#define IDS_DIALOGUE_33146 33146 +#define IDS_DIALOGUE_33147 33147 +#define IDS_DIALOGUE_33148 33148 +#define IDS_DIALOGUE_33149 33149 +#define IDS_DIALOGUE_33150 33150 +#define IDS_DIALOGUE_33151 33151 +#define IDS_DIALOGUE_33152 33152 +#define IDS_DIALOGUE_33153 33153 +#define IDS_DIALOGUE_33154 33154 +#define IDS_DIALOGUE_33155 33155 +#define IDS_DIALOGUE_33156 33156 +#define IDS_DIALOGUE_33157 33157 +#define IDS_DIALOGUE_33158 33158 +#define IDS_DIALOGUE_33159 33159 +#define IDS_DIALOGUE_33160 33160 +#define IDS_DIALOGUE_33161 33161 +#define IDS_DIALOGUE_33162 33162 +#define IDS_DIALOGUE_33163 33163 +#define IDS_DIALOGUE_33164 33164 +#define IDS_DIALOGUE_33165 33165 +#define IDS_DIALOGUE_33166 33166 +#define IDS_DIALOGUE_33167 33167 +#define IDS_DIALOGUE_33168 33168 +#define IDS_DIALOGUE_33169 33169 +#define IDS_DIALOGUE_33170 33170 +#define IDS_DIALOGUE_33171 33171 +#define IDS_DIALOGUE_33172 33172 +#define IDS_DIALOGUE_33173 33173 +#define IDS_DIALOGUE_33175 33175 +#define IDS_DIALOGUE_33176 33176 +#define IDS_DIALOGUE_33177 33177 +#define IDS_DIALOGUE_33178 33178 +#define IDS_DIALOGUE_33179 33179 +#define IDS_DIALOGUE_33180 33180 +#define IDS_DIALOGUE_33181 33181 +#define IDS_DIALOGUE_33182 33182 +#define IDS_DIALOGUE_33184 33184 +#define IDS_DIALOGUE_33185 33185 +#define IDS_DIALOGUE_33186 33186 +#define IDS_DIALOGUE_33187 33187 +#define IDS_DIALOGUE_33188 33188 +#define IDS_DIALOGUE_33190 33190 +#define IDS_DIALOGUE_33191 33191 +#define IDS_DIALOGUE_33192 33192 +#define IDS_DIALOGUE_33193 33193 +#define IDS_DIALOGUE_33197 33197 +#define IDS_DIALOGUE_33198 33198 +#define IDS_DIALOGUE_33199 33199 +#define IDS_DIALOGUE_33200 33200 +#define IDS_DIALOGUE_33201 33201 +#define IDS_DIALOGUE_33202 33202 +#define IDS_DIALOGUE_33203 33203 +#define IDS_DIALOGUE_33216 33216 +#define IDS_DIALOGUE_33217 33217 +#define IDS_DIALOGUE_33218 33218 +#define IDS_DIALOGUE_33219 33219 +#define IDS_DIALOGUE_33220 33220 +#define IDS_DIALOGUE_33221 33221 +#define IDS_DIALOGUE_33222 33222 +#define IDS_DIALOGUE_33223 33223 +#define IDS_DIALOGUE_33224 33224 +#define IDS_DIALOGUE_33225 33225 +#define IDS_DIALOGUE_33226 33226 +#define IDS_DIALOGUE_33227 33227 +#define IDS_DIALOGUE_33228 33228 +#define IDS_DIALOGUE_33229 33229 +#define IDS_DIALOGUE_33230 33230 +#define IDS_DIALOGUE_33231 33231 +#define IDS_DIALOGUE_33232 33232 +#define IDS_DIALOGUE_33233 33233 +#define IDS_DIALOGUE_33234 33234 +#define IDS_DIALOGUE_33235 33235 +#define IDS_DIALOGUE_33236 33236 +#define IDS_DIALOGUE_33237 33237 +#define IDS_DIALOGUE_33238 33238 +#define IDS_DIALOGUE_33239 33239 +#define IDS_DIALOGUE_33240 33240 +#define IDS_DIALOGUE_33241 33241 +#define IDS_DIALOGUE_33242 33242 +#define IDS_DIALOGUE_33243 33243 +#define IDS_DIALOGUE_33244 33244 +#define IDS_DIALOGUE_33245 33245 +#define IDS_DIALOGUE_33246 33246 +#define IDS_DIALOGUE_33247 33247 +#define IDS_DIALOGUE_33248 33248 +#define IDS_DIALOGUE_33249 33249 +#define IDS_DIALOGUE_33250 33250 +#define IDS_DIALOGUE_33251 33251 +#define IDS_DIALOGUE_33252 33252 +#define IDS_DIALOGUE_33253 33253 +#define IDS_DIALOGUE_33254 33254 +#define IDS_DIALOGUE_33257 33257 +#define IDS_DIALOGUE_33258 33258 +#define IDS_DIALOGUE_33259 33259 +#define IDS_DIALOGUE_33265 33265 +#define IDS_DIALOGUE_33266 33266 +#define IDS_DIALOGUE_33267 33267 +#define IDS_DIALOGUE_33268 33268 +#define IDS_DIALOGUE_33269 33269 +#define IDS_DIALOGUE_33270 33270 +#define IDS_DIALOGUE_33271 33271 +#define IDS_DIALOGUE_33282 33282 +#define IDS_DIALOGUE_33283 33283 +#define IDS_DIALOGUE_33284 33284 +#define IDS_DIALOGUE_33285 33285 +#define IDS_DIALOGUE_33286 33286 +#define IDS_DIALOGUE_33287 33287 +#define IDS_DIALOGUE_33288 33288 +#define IDS_DIALOGUE_33289 33289 +#define IDS_DIALOGUE_33290 33290 +#define IDS_DIALOGUE_33291 33291 +#define IDS_DIALOGUE_33292 33292 +#define IDS_DIALOGUE_33293 33293 +#define IDS_DIALOGUE_33294 33294 +#define IDS_DIALOGUE_33295 33295 +#define IDS_DIALOGUE_33296 33296 +#define IDS_DIALOGUE_33297 33297 +#define IDS_DIALOGUE_33298 33298 +#define IDS_DIALOGUE_33299 33299 +#define IDS_DIALOGUE_33300 33300 +#define IDS_DIALOGUE_33301 33301 +#define IDS_DIALOGUE_33302 33302 +#define IDS_DIALOGUE_33303 33303 +#define IDS_DIALOGUE_33304 33304 +#define IDS_DIALOGUE_33305 33305 +#define IDS_DIALOGUE_33311 33311 +#define IDS_DIALOGUE_33312 33312 +#define IDS_DIALOGUE_33313 33313 +#define IDS_DIALOGUE_33314 33314 +#define IDS_DIALOGUE_33316 33316 +#define IDS_DIALOGUE_33318 33318 +#define IDS_DIALOGUE_33319 33319 +#define IDS_DIALOGUE_33320 33320 +#define IDS_DIALOGUE_33321 33321 +#define IDS_DIALOGUE_33322 33322 +#define IDS_DIALOGUE_33323 33323 +#define IDS_DIALOGUE_33324 33324 +#define IDS_DIALOGUE_33325 33325 +#define IDS_DIALOGUE_33326 33326 +#define IDS_DIALOGUE_33327 33327 +#define IDS_DIALOGUE_33328 33328 +#define IDS_DIALOGUE_33329 33329 +#define IDS_DIALOGUE_33330 33330 +#define IDS_DIALOGUE_33331 33331 +#define IDS_DIALOGUE_33332 33332 +#define IDS_DIALOGUE_33333 33333 +#define IDS_DIALOGUE_33334 33334 +#define IDS_DIALOGUE_33335 33335 +#define IDS_DIALOGUE_33336 33336 +#define IDS_DIALOGUE_33338 33338 +#define IDS_DIALOGUE_33339 33339 +#define IDS_DIALOGUE_33340 33340 +#define IDS_DIALOGUE_33341 33341 +#define IDS_DIALOGUE_33342 33342 +#define IDS_DIALOGUE_33343 33343 +#define IDS_DIALOGUE_33344 33344 +#define IDS_DIALOGUE_33345 33345 +#define IDS_DIALOGUE_33346 33346 +#define IDS_DIALOGUE_33347 33347 +#define IDS_DIALOGUE_33348 33348 +#define IDS_DIALOGUE_33349 33349 +#define IDS_DIALOGUE_33350 33350 +#define IDS_DIALOGUE_33351 33351 +#define IDS_DIALOGUE_33352 33352 +#define IDS_DIALOGUE_33353 33353 +#define IDS_DIALOGUE_33354 33354 +#define IDS_DIALOGUE_33355 33355 +#define IDS_DIALOGUE_33356 33356 +#define IDS_DIALOGUE_33357 33357 +#define IDS_DIALOGUE_33358 33358 +#define IDS_DIALOGUE_33359 33359 +#define IDS_DIALOGUE_33361 33361 +#define IDS_DIALOGUE_33362 33362 +#define IDS_DIALOGUE_33363 33363 +#define IDS_DIALOGUE_33364 33364 +#define IDS_DIALOGUE_33373 33373 +#define IDS_DIALOGUE_33374 33374 +#define IDS_DIALOGUE_33375 33375 +#define IDS_DIALOGUE_33376 33376 +#define IDS_DIALOGUE_33377 33377 +#define IDS_DIALOGUE_33378 33378 +#define IDS_DIALOGUE_33379 33379 +#define IDS_DIALOGUE_33380 33380 +#define IDS_DIALOGUE_33381 33381 +#define IDS_DIALOGUE_33382 33382 +#define IDS_DIALOGUE_33383 33383 +#define IDS_DIALOGUE_33384 33384 +#define IDS_DIALOGUE_33385 33385 +#define IDS_DIALOGUE_33386 33386 +#define IDS_DIALOGUE_33387 33387 +#define IDS_DIALOGUE_33388 33388 +#define IDS_DIALOGUE_33389 33389 +#define IDS_DIALOGUE_33390 33390 +#define IDS_DIALOGUE_33391 33391 +#define IDS_DIALOGUE_33392 33392 +#define IDS_DIALOGUE_33393 33393 +#define IDS_DIALOGUE_33394 33394 +#define IDS_DIALOGUE_33395 33395 +#define IDS_DIALOGUE_33396 33396 +#define IDS_DIALOGUE_33397 33397 +#define IDS_DIALOGUE_33398 33398 +#define IDS_DIALOGUE_33399 33399 +#define IDS_DIALOGUE_33400 33400 +#define IDS_DIALOGUE_33401 33401 +#define IDS_DIALOGUE_33402 33402 +#define IDS_DIALOGUE_33403 33403 +#define IDS_DIALOGUE_33404 33404 +#define IDS_DIALOGUE_33405 33405 +#define IDS_DIALOGUE_33406 33406 +#define IDS_DIALOGUE_33417 33417 +#define IDS_DIALOGUE_33418 33418 +#define IDS_DIALOGUE_33419 33419 +#define IDS_DIALOGUE_33420 33420 +#define IDS_DIALOGUE_33426 33426 +#define IDS_DIALOGUE_33427 33427 +#define IDS_DIALOGUE_33428 33428 +#define IDS_DIALOGUE_33430 33430 +#define IDS_DIALOGUE_33432 33432 +#define IDS_DIALOGUE_33433 33433 +#define IDS_DIALOGUE_33434 33434 +#define IDS_DIALOGUE_33435 33435 +#define IDS_DIALOGUE_33436 33436 +#define IDS_DIALOGUE_33437 33437 +#define IDS_DIALOGUE_33438 33438 +#define IDS_DIALOGUE_33439 33439 +#define IDS_DIALOGUE_33441 33441 +#define IDS_DIALOGUE_33442 33442 +#define IDS_DIALOGUE_33443 33443 +#define IDS_DIALOGUE_33444 33444 +#define IDS_DIALOGUE_33445 33445 +#define IDS_DIALOGUE_33449 33449 +#define IDS_DIALOGUE_33450 33450 +#define IDS_DIALOGUE_33451 33451 +#define IDS_DIALOGUE_33456 33456 +#define IDS_DIALOGUE_33457 33457 +#define IDS_DIALOGUE_33458 33458 +#define IDS_DIALOGUE_33459 33459 +#define IDS_DIALOGUE_33460 33460 +#define IDS_DIALOGUE_33461 33461 +#define IDS_DIALOGUE_33462 33462 +#define IDS_DIALOGUE_33463 33463 +#define IDS_DIALOGUE_33464 33464 +#define IDS_DIALOGUE_33465 33465 +#define IDS_DIALOGUE_33466 33466 +#define IDS_DIALOGUE_33467 33467 +#define IDS_DIALOGUE_33468 33468 +#define IDS_DIALOGUE_33469 33469 +#define IDS_DIALOGUE_33470 33470 +#define IDS_DIALOGUE_33471 33471 +#define IDS_DIALOGUE_33472 33472 +#define IDS_DIALOGUE_33473 33473 +#define IDS_DIALOGUE_33474 33474 +#define IDS_DIALOGUE_33475 33475 +#define IDS_DIALOGUE_33575 33575 +#define IDS_DIALOGUE_33579 33579 +#define IDS_DIALOGUE_33582 33582 +#define IDS_DIALOGUE_33584 33584 +#define IDS_DIALOGUE_33588 33588 +#define IDS_DIALOGUE_33590 33590 +#define IDS_DIALOGUE_33593 33593 +#define IDS_DIALOGUE_33596 33596 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 40001 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 40001 +#define _APS_NEXT_SYMED_VALUE 40001 +#endif +#endif diff --git a/Jack/ClientRes/ClientRes.vcproj b/Jack/ClientRes/ClientRes.vcproj new file mode 100644 index 00000000..f50e1860 --- /dev/null +++ b/Jack/ClientRes/ClientRes.vcproj @@ -0,0 +1,832 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jack/ClientRes/ClientRes.vcproj.vspscc b/Jack/ClientRes/ClientRes.vcproj.vspscc new file mode 100644 index 00000000..9446c802 --- /dev/null +++ b/Jack/ClientRes/ClientRes.vcproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "file:C:\\proj\\to2\\source\\Game\\ClientRes\\ClientRes.vcproj" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Jack/ClientRes/Lang/DE/ClientRes.rc b/Jack/ClientRes/Lang/DE/ClientRes.rc new file mode 100644 index 00000000..ee7f8d1b --- /dev/null +++ b/Jack/ClientRes/Lang/DE/ClientRes.rc @@ -0,0 +1,7722 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\ClientRes.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "..\..\..\shared\resshared.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\ClientRes.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""..\\..\\..\\shared\\resshared.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""ResShared.rc""\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT +// + +CREDITS TEXT "credits.txt" +INTRO TEXT "intro.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR "..\\..\\arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_TITLE_GAME "EINZELSPIELER" + IDS_TITLE_DIFFICULTY "SCHWIERIGKEIT" + IDS_TITLE_OPTIONS "OPTIONEN" + IDS_TITLE_NEWGAME "NEUES SPIEL" + IDS_TITLE_LOADGAME "SPIEL LADEN" + IDS_TITLE_SAVEGAME "SPIEL SPEICHERN" + IDS_TITLE_CUSTOMLEVELS "SELBST ERSTELLTE LEVELS" + IDS_TITLE_DISPLAYOPTIONS "ANZEIGE-OPTIONEN" + IDS_TITLE_TEXTURE "TEXTUR-AUFLÖSUNG" + IDS_TITLE_PERFORMANCE "LEISTUNG" +END + +STRINGTABLE +BEGIN + IDS_TITLE_SOUND "SOUND" + IDS_TITLE_KEYBOARD "TASTATUR" + IDS_TITLE_MOUSE "MAUS" + IDS_TITLE_JOYSTICK "JOYSTICK" + IDS_TITLE_BRIEFING "MISSION" + IDS_NO_DM_MAPS "No maps available for this game mode." + IDS_TITLE_ENDMISSION "MISSIONSZUSAMMENFASSUNG" + IDS_TITLE_PROFILE "SPIELER-PROFIL" + IDS_TITLE_PLAYER "SPIELER" + IDS_TITLE_CROSSHAIR "FADENKREUZ" + IDS_TITLE_CONTROLS "STEUERUNG" + IDS_TITLE_CONFIGURE "STEUERUNG KONFIGURIEREN" + IDS_TITLE_MULTI "MULTIPLAYER" + IDS_TITLE_HOST_OPTIONS "SPIEL-OPTIONEN" + IDS_TITLE_OBJECTIVES "MISSIONSZIELE" +END + +STRINGTABLE +BEGIN + IDS_TITLE_GAME_OPTIONS "SPIEL-OPTIONEN" + IDS_TITLE_INVENTORY "AUSRÜSTUNG" + IDS_TITLE_ADVDISPLAY "ERWEITERTE ANZEIGE-OPTIONEN" + IDS_TITLE_EFFECTS "SPEZIALEFFEKTE" + IDS_TITLE_JOIN "IN SPIEL EINKLINKEN" + IDS_TITLE_HOST "SPIEL LEITEN" + IDS_TITLE_HOST_MISSIONS "MISSIONEN" + IDS_TITLE_PLAYER_SETUP "SPIELER-SETUP" + IDS_CHAPTERS "Kapitelliste" + IDS_TITLE_INTEL "GEHEIMDIENST" + IDS_TITLE_HOST_CAMPAIGN "MAP SELECTION" + IDS_TITLE_SYSTEM "SYSTEM" + IDS_TITLE_KEYS "INVENTAR" + IDS_HOST_NAME_TDM_DEFAULT "NOLF2 Team Deathmatch" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_DD_DEFAULT "NOLF2 Doomsday" + IDS_HELP_MULTIPLAYER_LAN + "Startet ein Multiplayer-Spiel in Ihrem lokalen Netzwerk (LAN) oder stellt die Multiplayer-Optionen ein." + IDS_TITLE_TEAM "TEAM SETUP" + IDS_HELP_CHAPTERS "Ein Kapitel noch mal spielen." + IDS_HELP_TEAM_NAME "Set the name of the team." + IDS_HELP_CHAPTER_LIST "Das markierte Kapitel noch mal spielen." + IDS_HELP_FAILURE "Drücken Sie F9 zum Schnellladen.\nDrücken Sie eine beliebige andere Taste, um zum Lade-Bildschirm zu gelangen." + IDS_PRESS_ANY_KEY "Weiter mit beliebiger Taste." + IDS_NORMAL "Normal" + IDS_PERFORMANCE_TEST "Test-Einstellungen" + IDS_CUSTOM "Selbst erstellt" + IDS_ON "Ein" + IDS_OFF "Aus" + IDS_YES "Ja" + IDS_NO "Nein" + IDS_NONE "Keine" +END + +STRINGTABLE +BEGIN + IDS_YES_VK_CODE "89" + IDS_NO_VK_CODE "78" + IDS_ALLOW_GORE "FALSE" + IDS_END_TIME "Zeit-Limit erreicht." + IDS_END_FRAG "Frag-Limit erreicht." + IDS_END_UNKNOWN "Level abgebrochen." + IDS_USE_PASSWORD "Server absichern" + IDS_HELP_PASSWORD "Erfordert von Spielern die Eingabe eines Passworts, wenn sie sich in eine Session einklinken." + IDS_PASSWORD "Passwort" + IDS_HELP_ENTER_PASSWORD "Bestimmt das Passwort, das die Spieler eingeben müssen, um sich in eine Session einzuklinken." + IDS_NOCUSTOMWORLDS "Keine selbst erstellten Welten gefunden." + IDS_DEMONOCUSTOMWORLDS "Selbst erstellte Welten stehen im Demo nicht zur Verfügung." + IDS_DEMODISCONNECT "Verbindung mit dem Server wurde getrennt. (Hinweis: Demo-Spiele müssen von Demo-Servern gehostet werden.)" + IDS_WAITINGFOROTHERPLAYERS "Warten auf andere Spieler ..." + IDS_NOJOYSTICKDETECTED "Kein Joystick oder Gamepad gefunden. Überprüfen Sie bitte den Anschluss und die Konfiguration Ihres Controllers." +END + +STRINGTABLE +BEGIN + IDS_FEW "Wenige" + IDS_SOME "Einige" + IDS_LOTS "Viele" + IDS_ALL "Alle" + IDS_CLOSE "Schließen" + IDS_SPACER " - " + IDS_BACK "Zurück" + IDS_CREATE "Erstellen" + IDS_LOAD "Laden" + IDS_DELETE "Löschen" + IDS_OK "OK" + IDS_CANCEL "Abbrechen" + IDS_ENTER_NAME "Geben Sie einen Namen für dieses Spiel ein:" + IDS_CONTINUE "Weiter" + IDS_EMPTY_SLOT "[Leerer Platz]" + IDS_WHEEL_UP "Mausrad aufwärts" +END + +STRINGTABLE +BEGIN + IDS_WHEEL_DOWN "Mausrad abwärts" + IDS_SINGLEPLAYER "Einzelspieler" + IDS_MULTIPLAYER "Multiplayer (Internet)" + IDS_OPTIONS "Optionen" + IDS_CREDITS "Mitwirkende" + IDS_EXIT "Beenden" + IDS_NEWGAME "Neues Spiel" + IDS_LOADGAME "Spiel laden" + IDS_SAVEGAME "Spiel speichern" + IDS_CUSTOM_LEVEL "Selbst erstelltes Level" + IDS_DISPLAY "Anzeige" + IDS_SOUND "Sound" + IDS_KEYBOARD "Tastatur" + IDS_MOUSE "Maus" +END + + +STRINGTABLE +BEGIN + IDS_DD_LGT_SCORE "Light piece score" + IDS_DD_LGT_SCORE_HELP "Points recevived for placing a light piece of the device." + IDS_DD_REMOVED_SCORE "Steal piece score" + IDS_DD_REMOVED_SCORE_HELP + "Points recevived for stealing a piece of the opponent's device." + IDS_HOST_REMOVE_WEAPON "< Remove restriction" + IDS_HELP_ADD_WEAPONS "Add items to the restricted list." + IDS_HELP_REM_WEAPONS "Remove items from the restricted list." + IDS_MISSING_WORLD "Unable to load world resources." + IDS_GAME_VERSION "v1.0" + IDS_HOST_NAME_DE_DEFAULT "NOLF2 Demolition" + IDS_WEAPONSSTAY_HELP "Toggle whether or not weapons stay after picking them up." + IDS_HELP_FILTER_TYPE "Set filtering of servers based on game type." + IDS_UNKNOWN "Unknown" + IDS_CONTROL_MANUALAIM "Manual Aim" +END + +STRINGTABLE +BEGIN + IDS_ABORT "Spiel verlassen" + IDS_DECODEMSG_CHARSET "AaBbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxYyZz" + IDS_SCMDPASSWORD "SCMD-Passwort" + IDS_HELP_ALLOWSCMD "Erlaubt das Einloggen als SCMD-Admin." + IDS_HOST_NAME_DM_DEFAULT "NOLF 2 - Deathmatch" + IDS_TAGGEDMYSELF "Sie haben sich selbst markiert!" + IDS_HETAGGEDME "Sie wurden von %1!s! markiert!" + IDS_ITAGGEDHIM "Sie haben %1!s! markiert." + IDS_HETAGGEDHIMSELF "%1!s! hat sich selbst markiert." + IDS_HETAGGEDHIM "%1!s! hat %2!s! markiert." + IDS_IWASTAGGED "Sie wurden markiert!" + IDS_HEWASTAGGED "%1!s! wurde markiert!" + IDS_SCORE_SCORE "Punkte:" + IDS_SCORE_PLAYERS "Spieler:" + IDS_SCORE_KILLS "Volltreffer:" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK "Joystick/Gamepad konfigurieren" + IDS_RESTOREDEFAULTS "Standard wiederherstellen" + IDS_CONFIGURE "Steuerung konfigurieren" + IDS_BRIEFING "Briefing:" + IDS_OBJECTIVES "Aufgaben:" + IDS_NORMALTURN "Normale Drehgeschwindigkeit" + IDS_FASTTURN "Schnelle Drehgeschwindigkeit" + IDS_LOOKUP "Nach-oben/unten-Sehen-Geschwindigkeit" + IDS_START_MISSION "Mission starten" + IDS_CH_ALPHA "Durchsichtigkeit" + IDS_CH_R "Rot" + IDS_CH_G "Grün" + IDS_CH_B "Blau" + IDS_CH_STYLE "Stil" + IDS_CH_BASIC "Einfach" + IDS_CH_CROSSBAR "Kreuz" +END + +STRINGTABLE +BEGIN + IDS_CH_DOTCROSS "Punktkreuz" + IDS_CH_POST "Pfahl" + IDS_CH_DOT "Punkt" + IDS_CH_CORNER "Ecke" + IDS_CH_DYNAMIC "Dynamische Skalierung" + IDS_CONTROLS_CROSSHAIR "Fadenkreuz" + IDS_PROFILE "Profil" + IDS_HELP_PROFILE "Wählt, erstellt oder löscht Spieler-Profile." + IDS_56K "56k" + IDS_CABLE "Kabel" + IDS_TEAM_NAME "Team name" + IDS_DSL_HIGH "DSL (hoch)" + IDS_T1 "T1" + IDS_T3 "T3" + IDS_BANDWIDTH_CYCLE "Bandbreite" + IDS_HELP_BANDWIDTH_CYCLE "Durch die Bandbreiten-Einstellungen schalten." +END + +STRINGTABLE +BEGIN + IDS_HELP_BANDWIDTH_EDIT "Eine angepasste Bandbreite angeben." + IDS_BANDWIDTH_EDIT "Bandbreite (angepasst)" + IDS_PROFILE_LIST "Profile:" + IDS_RESUME "Spiel fortsetzen" + IDS_CONTINUE_GAME "Weiterspielen" + IDS_TEAM_MODEL "Team model" + IDS_GAMMA "Gamma" + IDS_HEADBOB "Kopfbewegung" + IDS_WEAPONSWAY "Waffenbewegung" + IDS_HELP_HEADBOB "Stellt den Grad der simulierten Kopfbewegung beim Gehen ein." + IDS_HELP_WEAPONSWAY "Stellt den Grad der simulierten Waffenbewegung beim Gehen ein." + IDS_HELP_PICKUP_MSG_DUR "Stellt die Dauer ein, die Nachrichten auf dem Bildschirm angezeigt werden." + IDS_PICKUP_MSG_DUR "Nachrichten-Dauer" + IDS_IGNORE_TAUNTS "Spötteleien ignorieren" + IDS_HELP_IGNORE_TAUNTS "Die Verwendung von Audio-Spötteleien ein- oder ausschalten." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_TAUNTS "Audio-Spötteleien" + IDS_HELP_ALLOW_TAUNTS "Die Verwendung von Audio-Spötteleien ein- oder ausschalten." + IDS_RENAME "Umbenennen" + IDS_VERSION_FILTER "Version:" + IDS_MAIN "Hauptmenü" + IDS_HELP_GAMMA "Stellt die Gamma-Stufe der Anzeige ein." + IDS_HELP_SINGLEPLAYER "Startet, lädt oder speichert ein Einzelspieler-Spiel." + IDS_HELP_MULTIPLAYER "Startet ein Internet-Multiplayer-Spiel oder stellt die Multiplayer-Optionen ein." + IDS_HELP_OPTIONS "Stellt die Optionen für Anzeige, Sound, Steuerung, Spiel und Leistung ein." + IDS_HELP_EXIT "Beendet das Spiel." + IDS_HELP_NEW "Startet ein neues Spiel." + IDS_HELP_LOAD "Lädt ein gespeichertes Spiel." + IDS_HELP_SAVE "Speichert das aktuelle Spiel." + IDS_HELP_CUSTOM "Lädt ein selbst erstelltes Level." + IDS_HELP_PROFILE_CREATE "Erstellt ein neues Profil." + IDS_HELP_BACK "Kehrt zum vorigen Bildschirm zurück." +END + +STRINGTABLE +BEGIN + IDS_HELP_DIFFICULTY "Stellt den Schwierigkeitsgrad des Spiels ein." + IDS_HELP_DISPLAY "Stellt die Anzeige-Optionen ein." + IDS_HELP_SOUND "Stellt die Audio-Optionen ein." + IDS_HELP_CONTROLS "Stellt die Controller-Konfiguration ein." + IDS_HELP_RENDERER "Wählt den Renderer." + IDS_HELP_RESOLUTION "Stellt die Bildschirmauflösung und die Farbtiefe ein." + IDS_HELP_ANTIALIAS "Schaltet Vollbild-Anti-Aliasing ein oder aus." + IDS_HELP_DETAILLEVEL "Stellt die voreingestellte Stufe für Textur-Details ein." + IDS_HELP_ADVDISPLAY "Stellt die Anzeige-Optionen ein, die Einfluss auf die Leistung haben können." + IDS_HELP_LOOKSPRING "Blick beim Bewegen automatisch wieder zentrieren." + IDS_HELP_RUNLOCK "Rennen als Standard-Bewegung ein- oder ausschalten." + IDS_HELP_CROSSHAIR "Die Verwendung des Fadenkreuzes ein- oder ausschalten." + IDS_HELP_GORE "Die Verwendung von Blut-Effekten ein- oder ausschalten." + IDS_HELP_SHADOWS "Die Detailstufe der Charakter-Schatten einstellen." + IDS_HELP_TEAM_MODEL "Set the model used for the team." + IDS_HOST_CAMPAIGN "Map Selection" +END + +STRINGTABLE +BEGIN + IDS_WON_VAL_FAIL "Fehler bei der Client-Überprüfung." + IDS_WON_SERV_VAL "Server-Überprüfung initialisiert." + IDS_DISCONNECTED_FROM_SERVER "Verbindung mit dem Server wurde getrennt." + IDS_CANT_CONNECT_TO_SERVER "Verbindungsaufbau zum Server fehlgeschlagen." + IDS_CONTROL_FORWARD "Vorwärts" + IDS_CONTROL_BACKWARD "Rückwärts" + IDS_CONTROL_TURNLEFT "Nach links drehen" + IDS_CONTROL_TURNRIGHT "Nach rechts drehen" + IDS_CONTROL_STRAFE "Seitschritt" + IDS_CONTROL_STRAFELEFT "Seitschritt links" + IDS_CONTROL_STRAFERIGHT "Seitschritt rechts" + IDS_CONTROL_TURNAROUND "Umdrehen" + IDS_CONTROL_RUN "Schleichen" + IDS_CONTROL_FIRE "Feuern" + IDS_CONTROL_ACTIVATE "Aktion" + IDS_CONTROL_JUMP "Springen" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RELOAD "Nachladen" + IDS_CONTROL_DUCK "Kriechen" + IDS_CONTROL_NEXTWEAPON "Nächste Waffe" + IDS_CONTROL_PREVIOUSWEAPON "Vorige Waffe" + IDS_CONTROL_LOOKUP "Nach oben sehen" + IDS_CONTROL_LOOKDOWN "Nach unten sehen" + IDS_CONTROL_CENTERVIEW "Blick zentrieren" + IDS_CONTROL_INVENTORY "Ausrüstung" + IDS_CONTROL_MISSION "Missionsstatus" + IDS_CONTROL_HOLSTERWEAPON "Waffe wegstecken" + IDS_CONTROL_STATUS "Spieler-Status" + IDS_CONTROL_SAY "Reden" + IDS_CONTROL_ALT_FIRING "Alt. feuern" + IDS_CONTROL_NEXT_AMMO "Munition wechseln" + IDS_CONTROL_KEYS "Inventar" + IDS_CONTROL_INTEL "Geheimdienst" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RUNLOCKTOGGLE "Schleichen umschalten" + IDS_CONTROL_WEAPON1 "Waffe 1" + IDS_CONTROL_WEAPON2 "Waffe 2" + IDS_CONTROL_WEAPON3 "Waffe 3" + IDS_CONTROL_WEAPON4 "Waffe 4" + IDS_CONTROL_WEAPON5 "Waffe 5" + IDS_CONTROL_WEAPON6 "Waffe 6" + IDS_CONTROL_WEAPON7 "Waffe 7" + IDS_CONTROL_WEAPON8 "Waffe 8" + IDS_CONTROL_WEAPON9 "Waffe 9" + IDS_CONTROL_WEAPON10 "Waffe 10" + IDS_CONTROL_ZOOM_IN "Heranzoomen" + IDS_CONTROL_ZOOM_OUT "Wegzoomen" + IDS_CONTROL_UNASSIGNED "[nicht zugewiesen]" + IDS_CONTROL_NEXTVISMODE "Sonnenbrille" + IDS_CONTROL_COMPASS "Kompass" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_LEANLEFT "Nach links lehnen" + IDS_CONTROL_LEANRIGHT "Nach rechts lehnen" + IDS_CONTROL_CROUCHTOGGLE "Kriechen umschalten" + IDS_CONTROL_MOVE_BODY "Move body/piece" + IDS_CONTROL_FLASHLIGHT "Schlüsselanhänger-Lampe" + IDS_CONTROL_RADIO "Funkgerät" + IDS_CONTROL_LASTWEAPON "Vorige Waffe" +END + + +STRINGTABLE +BEGIN + IDS_GAME_OPTIONS "Spiel" + IDS_HELP_GAME_OPTIONS "Stellt die Spiel- und Inhalt-Optionen ein." + IDS_DISPLAY_SUBTITLES "Untertitel" + IDS_TEAM_2 "Red team" + IDS_HELP_LOOP_MISSIONS "Restart first map after completing the last map." + IDS_CAMPAIGN_LIST "Map Lists:" + IDS_STAT_COMBAT ".Kampf" + IDS_STAT_DEFENSE ".Verteidigen" + IDS_STAT_ACCURACY ".Genauigkeit" + IDS_HELP_CAMPAIGN_CREATE "Create a new map list." + IDS_HELP_CAMPAIGN_LOAD "Load the selected map list." + IDS_HELP_SUBTITLES "Schaltet die Verwendung von Untertiteln ein oder aus." + IDS_GAME_TYPE "Spielart" + IDS_HELP_TEAM_1 "Set options for the Blue team" + IDS_HELP_TEAM_2 "Set options for the Red team" +END + +STRINGTABLE +BEGIN + IDS_DEDICATED "Dedizierter Server" + IDS_HELP_DEDICATED "Schaltet um, ob der Server dediziert gestartet werden soll oder nicht." + IDS_GAME_LANGUAGE "German" + IDS_MENU_VKEY_YES "89" + IDS_MENU_VKEY_NO "78" + IDS_DEMOVERSION "TECHNOLOGIE-DEMO v1.0" + IDS_HELP_CAMPAIGN_DELETE "Delete the selected map list." + IDS_HELP_CAMPAIGN_RENAME "Rename the selected map list." + IDS_HELP_VERSION_FILTER "Die Filterung der Server basierend auf der Versionsnummer ein- oder ausschalten." + IDS_ALL_VERSIONS "Alle Versionen" + IDS_CURRENT_VERSION "Aktuelle Version:" + IDS_PERFORMANCE "Leistung" + IDS_HELP_PERFORMANCE "Stellt die Optionen je nach Leistung ein." + IDS_SFX "Spezialeffekte" + IDS_HELP_SFX "Stellt die Spezialeffekt-Optionen ein." + IDS_POLYGRIDBUMP "Polygongitter-Bump-Mapping" +END + +STRINGTABLE +BEGIN + IDS_HELP_POLYGRIDBUMP "Die Verwendung des Bump-Mappings bei Polygongittern ein- oder ausschalten." + IDS_POLYGRIDFRES "Polygongitter-Fresnel" + IDS_HELP_POLYGRIDFRES "Die Verwendung des Fresnel bei Polygongittern ein- oder ausschalten." + IDS_TEXTURE_RES "Textur-Auflösung" + IDS_HELP_TEXTURE_RES "Die Auflösung der im Spiel verwendeten Texturen einstellen." + IDS_BUMPMAP "Umgebungs-Bump-Mapping" + IDS_HELP_BUMPMAP "Die Verwendung des Umgebungs-Bump-Mappings ein- oder ausschalten." + IDS_BILINEAR "Bilinearer Filter" + IDS_HELP_BILINEAR "Die Verwendung des bilinearen Filters bei Texturen ein- oder ausschalten." + IDS_SHADOWS "Schatten" + IDS_SOUND_HIGH "Hoch" + IDS_SOUND_LOW "Niedrig" + IDS_QUICKLOAD "Schnellladen (F9)" + IDS_QUICKSAVE "Schnellspeichern (F6)" + IDS_LOADCURRENT "Automatisch speichern" + IDS_OBJECTIVES_OPTIONAL " (Optional)" +END + +STRINGTABLE +BEGIN + IDS_OBJECTIVES_CHANGED "Missionsziele aktualisiert" + IDS_X_OF_Y "%1!d! von %2!d!" + IDS_SERVER_LAN "Nur LAN" + IDS_USE_CROSSHAIR "Fadenkreuz verwenden" + IDS_HUD_LAYOUT0 "Gesundheitsanzeige, Munitionstext" + IDS_HUD_LAYOUT1 "Gesundheitstext, Munitionstext" + IDS_HUD_LAYOUT2 "Gesundheitsanzeige, Munitionsanzeige" + IDS_HUDLAYOUT "Heads-Up-Display-Stil" + IDS_HELP_HUDLAYOUT "Stellt den Stil der Interface-Anzeige ein." + IDS_NO_INVENTORY "[Kein Inventar]" + IDS_VEHICLETURN "Fahrzeug-Drehgeschwindigkeit" +END + +STRINGTABLE +BEGIN + IDS_HELP_VEHICLETURN "Stellt die Drehgeschwindigkeit für Fahrzeuge ein." + IDS_HELP_RETURN "Kehrt zum Spiel zurück." + IDS_TRILINEAR "Trilinearer Filter" + IDS_HELP_TRILINEAR "Schaltet die Verwendung des trilinearen Filters ein oder aus." + IDS_ANISOTROPIC "Anisotropischer Filter" + IDS_HELP_ANISOTROPIC "Die Verwendung des anisotropischen Filters ein- oder ausschalten." + IDS_DETAILLEVEL "Gesamt" + IDS_TRACERS "Leuchtspuren" + IDS_HELP_TRACERS "Die Leuchtspur-Effekte der Waffen ein- oder ausschalten." + IDS_DISPLAY_CURRENTMODE "Anzeige-Modus" + IDS_SERVER_NORESPONSE "Server antwortet nicht." + IDS_SERVER_DETAIL_VERSION + "Details sind nicht verfügbar, da der Spiel-Server eine unterschiedliche Version verwendet." + IDS_DISPLAY_CHANGE "Modus wechseln" + IDS_DISPLAY_GORE "Blut" + IDS_ENV_DETAIL "Umgebung" + IDS_HELP_ENV_DETAIL "Die Anzahl der Umgebungsdetails einstellen, darunter Schnee- und Graseffekte." +END + +STRINGTABLE +BEGIN + IDS_RESPAWN "Respawn" + IDS_SOUND_MUSICENABLED "Musik" + IDS_SOUND_MUSICVOL "Musik-Lautstärke" + IDS_SOUND_FX "Soundeffekte" + IDS_SOUND_FXVOL "Soundeffekt-Lautstärke" + IDS_SOUND_QUALITY "Soundeffekt-Qualität" + IDS_SOUND_NONE "Keine" + IDS_SOUND_IMA "DirectMusic" + IDS_LOW "Niedrig" + IDS_MEDIUM "Mittel" + IDS_HIGH "Hoch" + IDS_CUSTOMIZED "Selbst erstellt" + IDS_MOUSE_MOUSELOOK "Immer Sehen mit Maus" + IDS_MOUSE_LOOKSPRING "Automatisch zentrieren" + IDS_MOUSE_INVERTYAXIS "Y-Achse umkehren" + IDS_MOUSE_SENSITIVITY "Mausempfindlichkeit" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCHING "Durchsuchung erfolgt" + IDS_SPEECH_FXVOL "Sprach-Lautstärke" + IDS_HELP_SPEECHVOL "Stellt die Lautstärke der Sprache ein." + IDS_TARGET_REVIVE "%1!s! wiederbeleben" + IDS_CURRENT_CAMPAIGN "Current Map List: %1!s!" + IDS_M_STAT_UNDAMAGED "Sie haben jegliche Verletzungen vermieden." + IDS_M_STAT_TIMES_HIT "Sie wurden %1!d! mal getroffen." + IDS_M_STAT_MARKSMANSHIP "Treffsicherheit: %1!d! Gezielte Treffer." + IDS_M_STAT_ACCURACY "Genauigkeit: %1!d! Treffer: %2!d! Schüsse: (%3!d!%%)" + IDS_IWASKILLED "Sie wurden ausgeschaltet!" + IDS_ENTER_CAMPAIGN_NAME "Enter a name for this map list:" + IDS_HEWASKILLED "%1!s! wurde erledigt!" + IDS_HELP_ADD_WEAPON "Add selected item to the list of restricted items." + IDS_TARGET_HACKINGKEYPAD "Dekodierung erfolgt" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_TEAM_SAY "Team Say" + IDS_DOOMSDAY_CORE "Core" + IDS_DOOMSDAY_TRANSMITTER "Transmitter" + IDS_DOOMSDAY_BATTERIES "Batteries" + IDS_DOOMSDAY_PICKEDUP "%1!s! picked up the %2!s!" + IDS_DOOMSDAY_DROPPED "%1!s! dropped the %2!s!" + IDS_DOOMSDAY_PLACED "%1!s! placed the %2!s!" + IDS_DOOMSDAY_STOLE "%1!s! stole the %2!s!" + IDS_DOOMSDAY_DEVICE_COMPLETED "%1!s! completed the Dooms Day Device." + IDS_DOOMSDAY_RESPAWNED "The %1!s! has respawned." + IDS_HELP_SERVER_MOD "Sort servers by Mod " + IDS_FILTER_MOD "Mod:" + IDS_HELP_FILTER_MOD "Toggle filtering of servers based on mod." + IDS_FILTER_ALLMODS "All Mods" +END + +STRINGTABLE +BEGIN + IDS_TARGET_WELDING "Es wird geschweißt" + IDS_TARGET_DECODING "Dekodierung erfolgt" + IDS_TARGET_PICKING "Schloss wird geknackt" + IDS_TARGET_PHOTOGRAPHING "Fotografie wird gemacht" + IDS_TARGET_BOMBING "Bombe wird entschärft" + IDS_TARGET_INKING "Enthüllung erfolgt" + IDS_TARGET_BUGGING "Wanze wird platziert" + IDS_COOP_STAT_ACCURACY "Genauigkeit" + IDS_COOP_STAT_KILLS "Treffer" + IDS_COOP_STAT_DEATHS "Frags" + IDS_STAT_MISSION "Mission:" + IDS_FILTER_ALLPING "Alle" + IDS_FILTER_LOWPING "< 100" + IDS_FILTER_MEDPING "< 300" + IDS_FILTER_HIGHPING "< 500" + IDS_HELP_FILTER_PING "Filtert die Server nach Ping." +END + +STRINGTABLE +BEGIN + IDS_MOUSE_INPUTRATE "Mausglättung" + IDS_MOUSE_LEFTBUTTON "Linke Maustaste" + IDS_MOUSE_MIDDLEBUTTON "Mittlere Maustaste" + IDS_MOUSE_RIGHTBUTTON "Rechte Maustaste" + IDS_JOYSTICK_USE "Joystick/Gamepad verwenden" + IDS_JOYSTICK_TURN "Nach links/rechts drehen" + IDS_JOYSTICK_LOOK "Nach oben/unten sehen" + IDS_JOYSTICK_MOVE "Vorwärts/Rückwärts bewegen" + IDS_JOYSTICK_STRAFE "Seitlich links/rechts gehen" + IDS_JOYSTICK_BUTTONNUM "Joystick-Taste %1!d!" + IDS_JOYSTICK_AXIS "Achse" + IDS_JOYSTICK_ACTION "Aktion" + IDS_HELP_SERVER_LAN "Die Option, den Server im Internet zu veröffentlichen, ein- oder ausschalten." + IDS_POV_MOVE "Bewegen" + IDS_JOYSTICK_INVERT "Nach oben/unten sehen (umgekehrt)" + IDS_POV_LOOK "Ansehen" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_AXISNONE "Keine" + IDS_HELP_AXIS "Stellt die mit dieser Joystick-/Gamepad-Achse verbundene Aktion ein." + IDS_DISPLAY_BITDEPTH "Farbtiefe" + IDS_ANTIALIAS "Anti-Aliasing" + IDS_ADVCONTROLS_RUNLOCK "Immer rennen" + IDS_NEW_EASY "Einfach" + IDS_NEW_MEDIUM "Normal" + IDS_NEW_HARD "Schwer" + IDS_NEW_INSANE "Super-Spion" + IDS_ADVCONTROLS_CROSSHAIR "Fadenkreuz" + IDS_DISPLAY_RENDERER "Renderer" + IDS_DISPLAY_RESOLUTION "Auflösung" + IDS_TEAM1_NAME "Blue" + IDS_CONTROLS "Steuerung" + IDS_HELP_PROFILE_LOAD "Lädt das ausgewählte Profil." + IDS_SERVER_NAME "Server-Name" +END + +STRINGTABLE +BEGIN + IDS_SERVER_PLAYERS "Spieler" + IDS_SERVER_PING "Ping" + IDS_SERVER_GAME "Spiel" + IDS_SERVER_MAP "Karte" + IDS_JOIN_PLAYER_NAME "Spieler-Name" + IDS_JOIN_PLAYER_SCORE "Punkte" + IDS_OPTION_NAME "Spiel-Option" + IDS_OPTION_VALUE "Wert" + IDS_SERVER_REFRESH "Server aktualisieren" + IDS_SERVER_REPING "Server erneut pingen" + IDS_FILTER_ALLGAMES "Alle Spiele" + IDS_FILTER_DM "Nur Deathmatch" + IDS_FILTER_COOP "Nur " + IDS_FILTER_ALLPOP "Beliebige Anzahl Spieler" + IDS_FILTER_NOTFULL "Nicht voll" + IDS_FILTER_NOTEMPTY "Nicht leer" +END + +STRINGTABLE +BEGIN + IDS_FILTER_NOT_BOTH "Nicht leer und nicht voll" + IDS_SERVER_LOCKED "Festlegen" + IDS_SERVER_VERSION "Version" + IDS_HELP_SERVER_VERSION "Sort servers by game version." + IDS_HOST_NAME "Session-Name" + IDS_HOST_OPTIONS "Host-Optionen" + IDS_HOST_MISSIONS "Missionen" + IDS_HOST_LAUNCH "Starten" + IDS_SERVER_FILTERS "Filter" + IDS_POP_FILTER "Spieler:" + IDS_NIGHT_SCOPE "Vergrößert die Ansicht für genauere Schüsse und bietet Lichtverstärkung bei Nacht-Operationen." + IDS_SILENCER "Verringert die Schussgeräusche." + IDS_TEAM2_NAME "Red" + IDS_FILTER_PING "Ping:" + IDS_SCOPE "Vergrößert die Ansicht für genauere Schüsse." + IDS_CAMERA_SCOPE "Einstellbare Vergrößerungslinsen." +END + +STRINGTABLE +BEGIN + IDS_KILLEDMYSELF "Sie haben sich selbst ausgeschaltet!" + IDS_HEKILLEDME "Sie wurden von %1!s! erledigt!" + IDS_IKILLEDHIM "Sie haben %1!s! erledigt." + IDS_HEKILLEDHIMSELF "%1!s! schaltete sich selbst aus!" + IDS_HEKILLEDHIM "%1!s! hat %2!s! erledigt." +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_COOP_DEFAULT "NOLF 2 - Kooperativ" + IDS_PASSWORD_DEFAULT "passwort" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCH "Durchsuchen" + IDS_TARGET_MOVE "Körper/Rucksack bewegen" + IDS_TARGET_DROP "Körper/Rucksack fallen lassen" + IDS_TARGET_TALK "Reden" + IDS_TARGET_USE "Benutzen" + IDS_TARGET_TAKE "Aufnehmen" + IDS_TITLE_HOST_WEAPONS "WEAPON RESTRICTIONS" + IDS_TARGET_HACKKEYPAD "Dekodieren" + IDS_TARGET_WELD "Schweißen" + IDS_TARGET_DECODE "Dekodieren" + IDS_TARGET_PICK "Schloss knacken" + IDS_TARGET_PHOTO "Fotografieren" + IDS_TARGET_BOMB "Bombe platzieren" + IDS_TARGET_INK "Enthüllen" + IDS_TARGET_BUG "Wanze platzieren" + IDS_TARGET_INNOCENT "Freund" +END + +STRINGTABLE +BEGIN + IDS_CDKEY_ENTER "CD-Code eingeben" + IDS_CDKEY_INVALID "Ungültiger CD-Code" + IDS_CDKEY "CD-Code" + IDS_BANDWIDTH_INVALID "Ungültige Bandbreite. Bitte einen Wert zwischen %1!d! und %2!d! eingeben." + IDS_AMMO_NOPICKUP "%1!s!: Kann nicht mehr Munition aufnehmen!" + IDS_DMODE_RENDERER "%1!s! - %2!s!" + IDS_DMODE_RESOLUTION "%1!d!x%2!d!x%3!d!" + IDS_TARGET_WAKEUP "Aufwachen" + IDS_JOIN_GAME "In Spiel einklinken" + IDS_PLAYER_NAME "Spieler-Name" + IDS_DMODE_PLEASEWAIT1 "Bitte warten, während NOLF" + IDS_DMODE_PLEASEWAIT2 "eine Liste der Renderer erstellt..." + IDS_HELP_PLAYER_MODEL "Das angezeigte Charakter-Modell einstellen." + IDS_HELP_PLAYER_NAME "Den Spieler-Namen einstellen." + IDS_SCORE_PING "Ping:" + IDS_HELP_SERVER_NAME "Sortiert die Server nach Namen." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_SCMD_COMMANDS "SCMD zulassen" + IDS_TARGET_OPEN_2177 "Öffnen" + IDS_TARGET_CLOSE_2178 "Schließen" + IDS_TARGET_TIPOVER_2179 "Neigen" +END + +STRINGTABLE +BEGIN + IDS_HELP_SERVER_PLAYERS "Sortiert die Server nach der Anzahl der Spieler." + IDS_HELP_SERVER_PING "Sortiert die Server nach Ping-Zeiten." + IDS_HELP_SORT_PLYR_NAME "Sortiert die Spieler nach Namen." + IDS_HELP_SORT_PLYR_SCORE "Sortiert die Spieler nach Punkten." + IDS_HELP_SORT_PLYR_PING "Sortiert die Spieler nach Ping-Zeiten." + IDS_HELP_REFRESH "Aktualisiert die Liste der Server." + IDS_HELP_REPING "Pingt alle aufgelisteten Server erneut." + IDS_HELP_GAME_FILTER "Filtert die Spiele nach Typ." + IDS_HELP_POP_FILTER "Filtert die Spiele basierend auf der Anzahl der Spieler." + IDS_HELP_REM_ALL_WPNS "Remove all items from the restriction list." + IDS_MOD_NOPICKUP "%1!s!: Bereits vorhanden!" + IDS_GEAR_NOPICKUP "%1!s!: Kann nicht benutzt werden!" + IDS_HELP_REM_WEAPON "Remove the selected item from the restriction list." + IDS_CHANGING_AMMO "Wechsel zu Munition: %1!s!" + IDS_HELP_JOIN_GAME "In das ausgewählte Spiel einklinken." + IDS_HELP_SESSION_NAME "Den Namen der zu leitenden Session einstellen." +END + +STRINGTABLE +BEGIN + IDS_TARGET_DEFUSE "Entschärfen" + IDS_DISARMED "Entwaffnet!" + IDS_HELP_CDKEY "Geben Sie einen CD-Code ein, um Internet-Spiele freizuschalten." + IDS_MUSIC_QUALITY "Musik-Qualität" + IDS_HELP_MUSIC_QUALITY "Stellt die Qualität der Musik ein. Dies hat Einfluss auf die Leistung." + IDS_CONFIRM_MUSIC "Wenn eine hohe Musikqualität aktiviert ist, kann die Performance des gesamten Spiels beeinträchtigt werden. Möchten Sie hohe Musikqualität aktivieren?" + IDS_CONFIRM_SOUND "Hohe Soundqualität benötigt viel Speicherplatz und kann die Performance des Spiels beeinträchtigen. Möchten Sie die hohe Soundqualität aktivieren?" + IDS_PLAYER_MODEL "Spieler-Modell" + IDS_HELP_PERFORMANCE_TEST + "Ein Beispiel-Level starten, um die Leistungsoptionen auszuprobieren." + IDS_HOST_AVAIL_MISSIONS "Verfügbare Missionen" + IDS_TITLE_PERFORMANCE_TEST "Leistungseinstellungen werden überprüft ..." + IDS_RES_DIFFERS "(Anzeigen-Auflösung wird zurückgesetzt.)" + IDS_PRECACHE "Precache-Vorzüge" + IDS_LOAD_USERGAME "Gespeicherte Spiele" + IDS_SHELLCASINGS "Patronenhülsen" + IDS_DISCONNECT "Verbindung mit dem Server trennen" +END + +STRINGTABLE +BEGIN + IDS_HELP_SHELLCASINGS "Schaltet die Berechnung der Waffen-Patronenhülsen ein oder aus." + IDS_SHUTDOWN "Spiel beenden" + IDS_HELP_PRECACHE "Wenn Precaching aktiviert ist, kann das Spiel flüssiger gespielt werden, die Ladezeiten erhöhen sich jedoch und es wird mehr Speicherplatz benötigt." + IDS_WPN_RESTRICT "Weapons restrictions" + IDS_PERFORMANCE_FPS_AVE "Durchschn. Frame-Rate: %1!d!" + IDS_PERFORMANCE_RESULTS "Test abgeschlossen" + IDS_OVERALL_PERFORM "Leistungsoptimierung" + IDS_HELP_OVERALL_PERFORM + "Bestimmt die voreingestellten Leistungs-Optionen für Systeme mit viel, mittlerer und wenig Leistung." + IDS_PERFORM_HIGH "Niedrige Detailstufe" + IDS_PERFORM_MEDIUM "Mittlere Detailstufe" + IDS_PERFORM_LOW "Hohe Detailstufe" + IDS_AUTOSWITCH_WEAPONS "Automatisch Waffen wechseln" + IDS_HELP_AUTOSWITCH_WEAPONS + "Die Option ein- oder ausschalten, nach der die zuletzt aufgesammelte Waffe automatisch angewählt wird." + IDS_STARTNEXTLEVEL "Nächstes Level wird gestartet..." + IDS_PERFORMANCE_FPS_MIN "Min. Frame-Rate: %1!d!" + IDS_PERFORMANCE_FPS_MAX "Max. Frame-Rate: %1!d!" +END + +STRINGTABLE +BEGIN + IDS_HELP_GAME_TYPE "Den Typ des zu leitenden Spiels einstellen." + IDS_HELP_HOST_OPTIONS "Multiplayer-Spiel-Optionen einstellen." + IDS_HELP_HOST_MISSIONS "Set the list of maps for this map list." + IDS_HELP_LAUNCH "Das Spiel starten." + IDS_HELP_AVAIL_MISSIONS "Liste der verfügbaren Missionen." + IDS_HELP_POV "Stellt die mit dieser POV-Steuerung verbundene Aktion ein." + IDS_HELP_SEL_MISSIONS "Die Liste der Missionen, die in dieser Session verwendet werden sollen." + IDS_HELP_ADD_MISSION "Add the selected map to the list." + IDS_HELP_ADD_ALL "Add all available maps to the list." + IDS_HELP_REM_MISSION "Remove the selected map from the list." + IDS_HELP_REM_ALL "Remove all maps from the list." + IDS_VSYNC "V-Sync" + IDS_HELP_VSYNC "Den Bildaufbau mit der Hardware synchronisieren, um Störungen zu vermeiden." + IDS_LOW_VIOLENCE "Wenig Gewalt" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_UNBOUND "Ihr Joystick oder Gamepad ist momentan nicht konfiguriert. Möchten Sie die Konfiguration jetzt durchführen?" + IDS_FX_DETAIL "Effekte" + IDS_HELP_FX_DETAIL "Die Anzahl der Details bei Effekten wie zum Beispiel Explosionen, Trümmern und Waffen-Einschlägen steuern." + IDS_PERFORMANCE_FPS_BELOW_MIN "%1!d!%% unter %2!d!% FPS" + IDS_PERFORMANCE_FPS_MINTOMAX "%1!d!%% zwischen %2!d!% und %3!d!% FPS" + IDS_CONFIRM_RESTORE "Das Wiederherstellen der Standard-Einstellungen überschreibt alle Änderungen, die Sie an der Steuerungskonfiguration vorgenommen haben. Möchten Sie wirklich weitermachen?" + IDS_PERFORMANCE_FPS_ABOVE_MAX "%1!d!%% über %2!d!% FPS" + IDS_PERFORMANCE_TEST_ABORTED "Leistungstest abgebrochen." + IDS_NEW_MOTD "Der Tipp des Tages ist aktualisiert worden." + IDS_VALIDATION_FAILED "FEHLER - Prüfung der Server-Version fehlgeschlagen." + IDS_HARDWARE_CURSOR "Hardware-Cursor" + IDS_HELP_HARDWARE_CURSOR + "Die Verwendung des Hardware-Cursors ein- oder ausschalten." + IDS_CONFIRM_CURSOR "Das Einschalten des Hardware-Cursors führt zu weicheren Cursor-Bewegungen. Einige Grafikkarten unterstützen die Verwendung eines Hardware-Cursors jedoch nicht. Möchten Sie den Hardware-Cursor aktivieren?" + IDS_LAUNCH_UPDATE "Update auf neueste Version" + IDS_HELP_LAUNCH_UPDATE "Das Spiel schließen und die aktuellste Version des Spiels versuchen herunterzuladen." + IDS_NEW_VERSION "Eine aktualisierte Version des Spiels ist verfügbar." +END + +STRINGTABLE +BEGIN + IDS_INTERNET "Internet-Verbindung wird hergestellt …" + IDS_NO_CDKEY "Sie müssen einen gültigen CD-Code eingeben, um sich im Internet in Spiele einzuklinken oder dort Spiele zu leiten." + IDS_TARGET_HACKCARDREADER "Karte dekodieren/eingeben" + IDS_LARGE "Groß" + IDS_SMALL "Klein" + IDS_JOIN_LAN "In LAN-Spiel einklinken" + IDS_GUNPICKUP "%1!s!!" + IDS_OUTOFAMMO "%1!s! ohne Munition" + IDS_GEARPICKUP "%1!s!" + IDS_AMMOPICKUP "%2!s! ( %1!d! )" + IDS_MODPICKUP "%1!s!" + IDS_INTELLIGENCE "Geheimdienstgegenstand!" + IDS_HELP_JOIN_LAN "In ein LAN-Multiplayer-Spiel einklinken." + IDS_SERVER_ADDRESS "Adresse" + IDS_NO_SERVERS "- Keine Server gefunden -" + IDS_LOOKING_FOR_SERVERS "Server werden gesucht..." +END + +STRINGTABLE +BEGIN + IDS_CONNECTING_TO_SERVER "Verbindung zu Server wird aufgebaut..." + IDS_UNKNOWN_PLAYER "ein Spieler" + IDS_HELP_EASY "Easy: you will take less damage when hit, and the AI will be far less accurate." + IDS_HELP_MEDIUM "Normal: Sie nehmen bei Treffern etwas mehr Schaden und die KI ist etwas genauer." + IDS_HELP_HARD "Schwer: Die Genauigkeit der KI ist durchschnittlich und Sie nehmen leichter Schaden." + IDS_HELP_INSANE "Super-Spion: Die KI ist sehr genau und Sie nehmen wesentlich mehr Schaden." + IDS_DIFF_REMINDER "Die Schwierigkeitsstufe kann während der Mission jederzeit im Bildschirm " + IDS_SERVERS_SHOWN "(Server %1!d!-%2!d!)" + IDS_HELP_WPN_RESTRICT "Restrict the use of certain weapons, ammo, and gear." + IDS_KEY_PICKUP "Found %1!s!!" + IDS_STATUS_STRING "Status: %1!s!!" + IDS_WAITING "Bitte warten..." + IDS_QUERYING "Server werden abgefragt..." + IDS_VALIDATING "CD-Code wird überprüft..." + IDS_TARGET_HACKINGCARDREADER "Dekodierung erfolgt" + IDS_LOAD_TIPS "Tipps im Lade-Bildschirm " +END + +STRINGTABLE +BEGIN + IDS_HELP_LOAD_TIPS "Anzeige von Tipps im Lade-Bildschirm ein- und ausschalten." + IDS_DSL_LOW "DSL (niedrig)" + IDS_CONTOUR "Schneemobil-Konturen" + IDS_HELP_CONTOUR "Schneemobil passt sich an Gelände an. Ausschalten könnte die Steuerung erleichtern." + IDS_PERFORMANCE_RECOMMEND_LOWER + "Wir empfehlen, vor dem Spielen die Detail-Einstellungen zu verringern." + IDS_PAUSED "Spiel angehalten" + IDS_UNUSED "Nicht verwendet" + IDS_PERFORMANCE_RECOMMEND_HIGHER + "Wir empfehlen, vor dem Spielen die Detail-Einstellungen zu erhöhen." + IDS_PERFORMANCE_RECOMMEND_CURRENT + "Das Spiel sollte mit den aktuellen Detail-Einstellungen akzeptabel laufen." + IDS_PRESSANYKEY "Drücken Sie eine Taste..." + IDS_EMPTY " [leer]" + IDS_PRESSKEYTOCONTINUE "Weiter mit der Eingabetaste." + IDS_SUREWANTQUIT "Möchten Sie wirklich aufhören?" + IDS_SUREWANTABORT "Möchten Sie das laufende Spiel wirklich abbrechen?" + IDS_BUMPER_LOADING "Es wird geladen..." +END + +STRINGTABLE +BEGIN + IDS_INTEL_ITEMS "Geheimdienstgegenstände:" + IDS_UP "Oben" + IDS_DOWN "Unten" + IDS_DISCON_MISSINGFILE "Datei %1!s! fehlt." + IDS_DISCON_CONNECTTERM "Sie haben die Verbindung zum Server getrennt." + IDS_DISCON_SERVERBOOT "Der Server hat Sie hinausgeworfen." + IDS_DISCON_TIMEOUT "Zeitüberschreitung bei Verbindungsaufbau mit Server." + IDS_WEAPON "Waffe" + IDS_KEY "Taste" + IDS_DEVICE_MOUSE "Maus" + IDS_DEVICE_JOYSTICK "Joystick" + IDS_AUTOSWITCH_AMMO "Automatisch Munition wechseln" + IDS_HELP_AUTOSWITCH_AMMO + "Die Option ein- oder ausschalten, nach der die zuletzt aufgesammelte Munition automatisch angewählt wird." + IDS_PORT "Netzwerk-Port" + IDS_HELP_ENTER_PORT "Geben Sie den gewünschten Netzwerk-Port ein." + IDS_SERVER_PORT "Port" +END + +STRINGTABLE +BEGIN + IDS_NOQUICKSAVEGAME "Es existieren keine Schnellspeicher-Spiele." + IDS_LOADGAMEFAILED "Fehler beim Laden eines Spiels." + IDS_SAVEGAMEFAILED "Fehler beim Speichern eines Spiels." + IDS_NOLOADLEVEL "Das Level konnte nicht geladen werden." + IDS_SOUNDNOTINITED "Der Sound konnte nicht initialisiert werden. Bitte stellen Sie sicher, dass Ihre Soundkarte richtig konfiguriert ist." + IDS_UNSPECIFIEDERROR "Ein nicht-spezifizierter Fehler ist aufgetreten." + IDS_NOREMAPKEY "Diese Taste kann nicht neu zugewiesen werden." + IDS_NOSOUNDCHANGE "Soundeffekte müssen aktiviert sein, um diesen Wert zu ändern." + IDS_NOMUSICCHANGE "Musik muss aktiviert sein, um diesen Wert zu ändern." + IDS_ENDCURRENTGAME "Hiermit wird Ihr aktuelles Spiel beendet. Weitermachen?" + IDS_REINITIALIZING_RENDERER "Renderer wird neu initialisiert." + IDS_INVALID3DSOUNDPROVIDER "Ungültiger 3D-Soundprovider." + IDS_CONFIRMSAVE "Möchten Sie dieses gespeicherte Spiel überschreiben?" + IDS_GAMESAVED "Spiel wurde gespeichert." + IDS_REBINDING_TEXTURES "Texturen werden neu zugewiesen." + IDS_REBINDING_LIGHTMAPS "Lightmaps werden neu zugewiesen." +END + +STRINGTABLE +BEGIN + IDS_SHUTDOWNSERVER "Hiermit fahren Sie den Server herunter und trennen alle Clients. Weitermachen?" + IDS_NETERR_GENERIC "FEHLER - Netzwerk-Spiel kann nicht erstellt werden." + IDS_NETERR_SELECTSERVICE + "FEHLER - Die ausgewählten Netzwerk-Dienste können nicht verwendet werden." + IDS_NETERR_FILLSERVICE "FEHLER - Zugriff auf verfügbare Netzwerk-Dienste nicht möglich." + IDS_NETERR_JOINSESSION "FEHLER - Einklinken in die ausgewählte Spiel-Session nicht möglich." + IDS_NETERR_HOSTSESSION "FEHLER - Spiel-Session kann nicht geleitet werden." + IDS_NETERR_INIT "FEHLER - Das Netzwerk-System kann nicht initialisiert werden." + IDS_NETERR_CANTBINDTOPORT + "Der angeforderte Port konnte nicht reserviert werden." + IDS_NETERR_NOTSAMEGUID "FEHLER - Einklinken in den Spiel-Server nicht möglich, da er eine unterschiedliche Version oder ein anderes Spiel verwendet." + IDS_PLAYER "Spieler" + IDS_SAY "SAGEN:" + IDS_NETERR_WRONGPASS "Falsches Passwort." + IDS_YOUWEREKILLED "Sie wurden eliminiert!" + IDS_QUICKSAVING "Schnellspeichern erfolgt..." + IDS_SERVERFULL "Einklinken nicht möglich. Der Server ist voll." + IDS_SERVER_WRONGVERSION "Einklinken nicht möglich, da der Spiel-Server eine unterschiedliche Version verwendet. Das neueste Produkt-Update erhalten Sie bei www.the-operative.com." +END + +STRINGTABLE +BEGIN + IDS_JOINEDGAME "%1!s! hat sich in das Spiel eingeklinkt!" + IDS_LEFTGAME "%1!s! hat das Spiel verlassen." + IDS_SAVINGGAME "Spiel wird gespeichert ..." + IDS_CANTQUICKSAVE "Speichern jetzt nicht möglich ..." + IDS_ACCESSGRANTED "Zugang gewährt" + IDS_ACCESSDENIED "Zugang verweigert" + IDS_LOCKED "Fest" + IDS_HELP_ENTER_SCMDPASSWORD + "Gibt das Passwort zum Einloggen als SCMD-Admin an." + IDS_WON_MOTD_STATUS "Tipp des Tages wird empfangen ..." + IDS_WON_MOTD_SUCCESS "Tipp des Tages erfolgreich empfangen." + IDS_WON_MOTD_FAIL "Fehler bei Empfangen des Tipps des Tages." + IDS_WON_VERSION_STATUS "Aktuellste Versionsinformationen werden empfangen ..." + IDS_WON_VERSION_SUCCESS "Aktuellste Versionsinformationen erfolgreich empfangen." + IDS_WON_VERSION_FAIL "Fehler bei Empfang der aktuellsten Versionsinformationen." + IDS_WON_CDKEY_STATUS "CD-Code wird überprüft ..." + IDS_WON_CDKEY_SUCCESS "CD-Code erfolgreich überprüft." +END + +STRINGTABLE +BEGIN + IDS_FIND_SERVERS "Refresh Server List" + IDS_HELP_FIND_SERVERS "Nach Servern suchen." + IDS_HELP_PROFILE_DELETE "Löscht das ausgewählte Profil." + IDS_HELP_PROFILE_RENAME "Benennt das ausgewählte Profil um." + IDS_CONFIRM_DELETE "Möchten Sie diese Datei wirklich löschen?" + IDS_CURRENT_PROFILE "Aktuelles Profil: %1!s!" + IDS_ENTER_PROFILE_NAME "Geben Sie einen Namen für dieses Profil ein:" + IDS_CONFIRM_NEWPROFILE "Hiermit wird Ihr aktuelles Spiel beendet. Möchten Sie es wirklich beenden?" + IDS_PERFORMANCE_TEST_BRIEF + "Es wird ein kurzes Spiel-Video geladen, um festzustellen, mit welcher Qualität das Spiel unter den aktuellen Leistungs-Einstellungen laufen wird. Nach dem Video wird eine Empfehlung zu den Leistungs-Einstellungen angezeigt.\n\nSie können während des Videos jederzeit die ESC-Taste drücken, um die Überprüfung der Leistungs-Einstellungen abzubrechen." + IDS_PARAMETERS "Parameter:" + IDS_SELECT_AMMO_TEXT "Wähle" + IDS_EXIT_WAITING "%1!d! Spieler warten auf Sie." + IDS_EXIT_WAITING_1 "1 Spieler wartet auf Sie." + IDS_EXIT_WAITING_NAME "%1!s! wartet auf Sie." + IDS_EXIT_PLAYER_WAITING "Sie warten auf %1!d! Spieler." + IDS_EXIT_PLAYER_WAITING_1 "Sie warten auf 1 Spieler." +END + +STRINGTABLE +BEGIN + IDS_EXIT_PLAYER_WAITING_NAME "Sie warten auf %1!s!." + IDS_NET_GAME_END "Level-Ende-Bedingungen" + IDS_NET_GAME_END_HELP "Stellt die Bedingungen ein, die die Karte beenden." + IDS_CHOOSE_TEAM "Choose team" + IDS_FRAG_LIMIT_HELP "Sets the score needed to win the round." + IDS_HELP_CHOOSE_TEAM_1 "Choose the Blue Team" + IDS_TIME_LIMIT_HELP "Set the number of minutes the round will last." + IDS_MAX_PLAYERS "Max. Spieler" + IDS_MAX_PLAYERS_HELP "Die maximale Anzahl der in dieser Session zugelassenen Spieler einstellen." + IDS_ROUNDS_HELP "Set the number of rounds to play on a map before switching." + IDS_RUN_SPEED_HELP "Den Prozentwert der normalen Laufgeschwindigkeit bestimmen, die in dieser Session benutzt wird." + IDS_HELP_CHOOSE_TEAM_2 "Choose the Red Team" + IDS_FRIENDLY_FIRE_HELP "Ein- oder ausschalten, ob Teamkameraden einander Schaden zufügen können oder nicht." + IDS_AUTO_SELECT "Auto-Select" + IDS_HELP_HOST_PLAYERDIFF + "Einstellen, wie stark sich die Schwierigkeit des Spiels durch zusätzliche Spieler erhöht." +END + +STRINGTABLE +BEGIN + IDS_WON_CDKEY_FAIL "Fehler beim Überprüfen des CD-Codes." + IDS_WON_PUB_STATUS "Server wird veröffentlicht ..." + IDS_WON_PUB_SUCCESS "Server erfolgreich veröffentlicht." + IDS_WON_PUB_FAIL "Fehler beim Veröffentlichen des Servers." + IDS_WON_REM_STATUS "Server wird entfernt ..." + IDS_WON_REM_SUCCESS "Server erfolgreich entfernt." + IDS_WON_REM_FAIL "Fehler beim Entfernen des Servers." + IDS_WON_LIST_STATUS "Server-Liste wird empfangen ..." + IDS_WON_LIST_SUCCESS "Server-Liste erfolgreich empfangen." + IDS_WON_LIST_FAIL "Fehler beim Empfangen der Server-Liste." + IDS_WON_CLEAR_REQ_LIST "Anforderungsliste wird gelöscht ..." + IDS_WON_PROCESS_REQ "Außer-Betrieb-Anforderung wird bearbeitet." + IDS_WON_PING_SUCCESS "Peer-Liste erfolgreich gepingt." + IDS_WON_DETAIL_SUCCESS "Server-Details erfolgreich abgefragt." + IDS_WON_DETAIL_FAIL "Server antwortet nicht." + IDS_WON_VAL_SUCCESS "Client erfolgreich überprüft." +END + +STRINGTABLE +BEGIN + IDS_TEAM_1 "Blue team" + IDS_HELP_CAMPAIGN_NAME "Choose the map list to use for this session." + IDS_DETAILTEXTURES "Detail-Texturen" + IDS_HELP_DETAILTEXTURES "Die Verwendung von Detail-Texturen ein- oder ausschalten." + IDS_ENVIRONMENT_MAP "Umgebungsmaps" + IDS_HELP_ENVIRONMENT_MAP + "Die Verwendung von Umgebungsmaps ein- oder ausschalten." + IDS_DYNAMICLIGHTS "Dynamische Beleuchtung" + IDS_HELP_DYNAMICLIGHTS "Schaltet die Verwendung dynamischer Beleuchtung ein oder aus." + IDS_TRIPLE_BUFF "Triple-Buffer" + IDS_HELP_TRIPLE_BUFF "Die Verwendung des Triple-Buffers ein- oder ausschalten." + IDS_HELP_SETCONTROL "Drücken Sie die Eingabetaste oder klicken Sie mit der linken Maustaste, um dieser Aktion ein Steuerelement zuzuweisen." + IDS_HELP_CUSTOMCONTROLS "Weist Tastatur-, Maus- und Spielcontroller-Aktionen zu." + IDS_HELP_MOUSE "Stellt die Optionen für die Maus-Konfiguration ein." + IDS_HELP_JOYSTICK "Stellt die Optionen für Joystick- oder Gamepad-Konfiguration ein." + IDS_HELP_ADVCONTROLS "Stellt die erweiterten Steuerungs-Optionen ein." + IDS_HELP_RESTORE "Setzt die Steuerung auf die Standard-Werte zurück." +END + +STRINGTABLE +BEGIN + IDS_HELP_SOUNDFX "Schaltet das Abspielen der Soundeffekte ein oder aus." + IDS_HELP_SOUNDVOL "Stellt die Lautstärke der Soundeffekte ein." + IDS_HELP_SOUNDQUAL "Stellt die Qualität der Soundeffekte ein. Dies kann Einfluss auf die Leistung haben." + IDS_HELP_MUSIC "Schaltet das Abspielen der Musik ein oder aus." + IDS_HELP_MUSICVOL "Stellt die Lautstärke der Musik ein." + IDS_HELP_CUSTOMLEVEL "Lädt das ausgewählte selbst erstellte Level." + IDS_HELP_USEJOYSTICK "Schaltet die Verwendung von Joystick oder Gamepad ein oder aus." + IDS_HELP_INVERTAXIS "Schaltet die Umkehrung dieser Achse ein oder aus." + IDS_HELP_DEADZONE "Stellt den Neutralbereich für diese Achse ein." + IDS_HELP_ANALOG "Schaltet zwischen Analog und Digital um." + IDS_HELP_JOY_SENSE "Stellt die Empfindlichkeit des Joysticks für diese Achse ein." + IDS_HELP_JOY_CENTER "Schaltet die Verwendung der Zentrumskorrektur ein oder aus." + IDS_HELP_INVERTY "Schaltet die Umkehrung der Mausbewegungen ein oder aus." + IDS_HELP_MOUSELOOK "Schaltet die Verwendung der Maus zum Sehen ein oder aus." + IDS_HELP_MOUSE_SENSE "Stellt die Empfindlichkeit der Maus ein." + IDS_HELP_MOUSE_INPUT "Einstellen, wie stark die Mausbewegungen abgerundet werden." +END + +STRINGTABLE +BEGIN + IDS_HELP_MOUSE_BUTTON "Stellt die diesem Button zugewiesene Aktion ein." + IDS_HELP_NORMALTURN "Stellt die normale Drehgeschwindigkeit für die Tastatur-Steuerung ein." + IDS_HELP_FASTTURN "Stellt die schnelle Drehgeschwindigkeit für die Tastatur-Steuerung ein." + IDS_HELP_LOOKUP "Stellt für die Tastatur-Steuerung die Geschwindigkeit beim Nach-oben/unten-Sehen ein." + IDS_HOST_CAMPAIGN_DEFAULT "Default Map List" + IDS_HELP_CROSSHAIRMENU "Stellt die Fadenkreuz-Optionen ein." + IDS_HELP_LEFT "Zeigt die vorige Seite an." + IDS_HELP_RIGHT "Zeigt die nächste Seite an." + IDS_HELP_QUICKSAVE "Speichert das aktuelle Spiel im Schnellspeicher-Platz." + IDS_HELP_SAVEGAME "Speichert das Spiel an diesem Platz." + IDS_HELP_QUICKLOAD "Lädt das im Schnellspeicher-Platz gespeicherte Spiel." + IDS_HELP_LOADGAME "Lädt das an diesem Platz gespeicherte Spiel." + IDS_HELP_RELOAD "Lädt das automatisch gespeicherte Spiel. Das Spiel wird automatisch nach dem Beginn eines Levels gespeichert." + IDS_HELP_CAMPAIGN "Select map list." + IDS_HELP_RESUME "Kehrt zum laufenden Spiel zurück." + IDS_HELP_CONTINUE_GAME "Setzt das zuletzt gespeicherte Spiel fort." +END + +STRINGTABLE +BEGIN + IDS_HELP_JOIN "In ein Multiplayer-Spiel einklinken." + IDS_HELP_HOST "Ein neues Multiplayer-Spiel leiten." + IDS_HOST_ADD_MISSION "> Hinzufügen" + IDS_HOST_REMOVE_MISSION "< Entfernen" + IDS_HOST_ADD_ALL "> Alle hinzufügen" + IDS_HOST_REMOVE_ALL "< Alle entfernen" + IDS_NOLEVELS "Bitte wählen Sie die Levels, die in diesem Spiel gespielt werden sollen." + IDS_HELP_OK "Akzeptiert diese Einstellungen." + IDS_SCENENUMBER "Szene %1!d!" + IDS_LOOP_MISSIONS "Schleife" + IDS_MOVE_CONTROLS "Bewegung" + IDS_INV_CONTROLS "Interagieren" + IDS_VIEW_CONTROLS "Ansehen" + IDS_MISC_CONTROLS "Status" + IDS_HELP_KEYBOARD "Stellt die Optionen für die Tastatur-Konfiguration ein." +END + +STRINGTABLE +BEGIN + IDS_HELP_CH_ALPHA "Durchsichtigkeit des Fadenkreuzes." + IDS_HELP_CH_R "Rot-Anteil der Fadenkreuz-Farbe." + IDS_HELP_CH_G "Grün-Anteil der Fadenkreuz-Farbe." + IDS_HELP_CH_B "Blau-Anteil der Fadenkreuz-Farbe." + IDS_HELP_CH_STYLE "Stellt die Art des zu verwendenden Fadenkreuzes ein." + IDS_HELP_CH_DYNAMIC "Die dynamische Skalierung des Fadenkreuzes umschalten." + IDS_HELP_MAIN "Kehrt zum Hauptmenü zurück." + IDS_HELP_NEXTMISSION "Startet die nächste Mission." + IDS_HELP_CONTINUE "Geht zum nächsten Bildschirm weiter." + IDS_CAMPAIGN_EXISTS "A map list of that name already exists." + IDS_GUN_NOPICKUP "%1!s!: Bereits volle Munition erreicht!" + IDS_GUN_NOPICKUP_INF "%1!s!: Bereits vorhanden!" + IDS_PLAYER_SETUP "Spieler-Setup" + IDS_JOIN "Einklinken" + IDS_HOST "Host" + IDS_HELP_PLAYER "Stellt Ihre Spieler-Optionen ein." +END + +STRINGTABLE +BEGIN + IDS_WEAPONS_STAY "Waffen bleiben" + IDS_WEAPONS_STAY_HELP "Ein- oder ausschalten, ob die Waffen sofort wieder neu erscheinen sollen." + IDS_HELP_AUTO_SELECT "Let the server choose a team for you." + IDS_HELP_TEAM_SELECT "Join this team." + IDS_CANCELREVIVE "Cancel Revive" + IDS_FILTER_TYPE "Game type:" + IDS_HIT_LOCATION "Ortsabhängiger Schaden" + IDS_HIT_LOCATION_HELP "Modifiziert den Schaden basierend auf dem getroffenen Körperteil." + IDS_SCORE_LIMIT "Gewinn-Punkte" + IDS_HELP_SCORE_LIMIT "Die zum Beenden der Karte benötigten Punkte einstellen." + IDS_ALLOWED_WEAPONS "Allowed weapons" + IDS_DISABLED_WEAPONS "Restricted weapons" + IDS_END_SCORE "Gewinn-Punktzahl erreicht." + IDS_TEAM1_BOMB "The Blue team planted a bomb." + IDS_TEAM2_BOMB "The Red team planted a bomb." + IDS_HOST_ADD_WEAPON "> Add restriction" +END + +STRINGTABLE +BEGIN + IDS_APP_SHUTDOWN_1 "Fehler beim Initialisieren des Renderers. Um %1!s! zu spielen, müssen Sie DirectX 8.1 installiert haben." + IDS_PROFILE_ALREADY_EXISTS + "Es existiert bereits ein Profil mit diesem Namen. Bitte einen anderen Namen wählen." + IDS_CONFIRM_DELETE_PROFILE + "Möchten Sie dieses Profil mit allen damit verbundenen Einstellungen und gespeicherten Spielständen wirklich löschen?" + IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE + "Ein Hardware-T&L-Gerät konnte nicht erzeugt werden. Das könnte daran liegen, dass DirectX 8.1 nicht installiert oder Ihre Grafikkarte nicht Hardware-T&L-fähig ist. Beides ist erforderlich, um %1!s! zu spielen. Sie können das Spiel zwar spielen, wenn Sie auf ‚OK‘ klicken, aber beachten Sie bitte, dass dies nicht offiziell unterstützt wird und zu Abstürzen, Hängern und schlechter Leistung führen kann." +END + +STRINGTABLE +BEGIN + IDS_FILTER_CURRENTMOD "Current Mod" + IDS_SERVER_WRONGMOD "Unable to join because the game server is running a different Mod than your current Mod." + IDS_HECHANGED "%1!s! changed teams to the %2!s!" + IDS_ICHANGED "You changed teams to the %1!s!" + IDS_IWILLCHANGE "You will change teams when you respawn." + IDS_FRAG_SCORE "Frag score" + IDS_FRAG_SCORE_HELP "Points received for kills." + IDS_TAG_SCORE "Tag score" + IDS_TAG_SCORE_HELP "Points received for non-lethal knockdowns." + IDS_REVIVE_SCORE "Revive score" + IDS_REVIVE_SCORE_HELP "Points recevived for reviving teammates." + IDS_DD_COMP_SCORE "Completion score" + IDS_DD_COMP_SCORE_HELP "Points recevived for completing the doomsday device." + IDS_DD_HVY_SCORE "Heavy piece score" + IDS_DD_HVY_SCORE_HELP "Points recevived for placing a heavy piece of the device." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_1 "Mascara-Betäubungsgewehr" + IDS_WEAPON_2 "Katana" + IDS_WEAPON_3 "Tulwar" + IDS_WEAPON_4 "Schuriken" + IDS_WEAPON_5 "Handgranate" + IDS_WEAPON_6 "Wütendes-Kätzchen-Näherungsgerät@Wütendes Kätzchen" + IDS_WEAPON_7 "Automatische McAllister-Pistole.32@.32 Pistole" + IDS_WEAPON_8 "CT-180-Mehrzweck-Werfer@Mehrzweck-Werfer" + IDS_WEAPON_9 "Bacalov-Instigator-Kampfschrotgewehr@Kampfschrotgewehr" + IDS_WEAPON_10 "Gordon 9-mm-Maschinenpistole@Gordon-SMG" + IDS_WEAPON_11 "M1921-A1-Maschinenpistole@M1921-A1 SMG" + IDS_WEAPON_12 "AK-47-Sturmgewehr@AK-47" + IDS_WEAPON_13 "RFA-Bolt-Action-Gewehr Serie 4@Scharfschützengewehr" + IDS_WEAPON_14 "Vindicator-Sportarmbrust@Armbrust" + IDS_WEAPON_15 "Mikroraketen-Werfer" + IDS_WEAPON_16 "Lippenstift-Spionagekamera@Spionagekamera" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_17 "Sprengkörper" + IDS_WEAPON_18 "Puderdosen-Codeknacker@Codeknacker" + IDS_WEAPON_19 "Haarspray-Schweißgerät@Schweißgerät" + IDS_WEAPON_20 "Nagelclipper-Dietrich@Dietrich" + IDS_WEAPON_21 "Abhörwanze@Wanze" + IDS_WEAPON_22 "Leichenentsorgerparfüm@Leichenentsorger" + IDS_WEAPON_23 "Münze" + IDS_WEAPON_24 "Bärenfalle" + IDS_WEAPON_25 "Schlüsselanhänger-Lampe" + IDS_WEAPON_26 "Banane" + IDS_WEAPON_27 "[Halfter]" + IDS_WEAPON_28 "Betäubungsgasgranate" + IDS_WEAPON_29 "Schlafgasgranate" + IDS_WEAPON_30 "Säuregasgranate" + IDS_WEAPON_31 "Lachgasgranate" + IDS_WEAPON_32 "Gordon 9-mm-MP mit Schalldämpfer@Schallgedämpftes SMG" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_1 "Dieses als Mascara-Hülse getarnte heimtückische Gerät setzt Gegner für kurze Zeit lautlos außer Gefecht." + IDS_WEAPON_DESC_2 "Ein traditionelles japanisches Langschwert. Ein gut getimter Hieb kann Projektile wie Schuriken und Kleinkaliberkugeln abwehren." + IDS_WEAPON_DESC_3 "Ein indischer Krummsäbel. Nützlich, wenn man Gegner lautlos ausschalten möchte. Kann auch Kleinkaliberkugeln und bestimmte andere Projektile abhalten." + IDS_WEAPON_DESC_4 "Japanische Wurfsterne sind Waffen von Attentätern. Am wirksamsten sind sie gegen ahnungslose Gegner." + IDS_WEAPON_DESC_5 "Ein explodierendes Wurfgeschoss, das man über Mauern oder um Ecken werfen kann. Was ihm an Unauffälligkeit fehlt, macht die durchschlagende Wirkung wieder wett." + IDS_WEAPON_DESC_6 "Eine mächtige Sprengladung, die geschickt als gewöhnliche Straßenkatze getarnt wurde. Ist der Bewegungszünder aktiviert, jagt sie ihrem Opfer hinterher und explodiert." + IDS_WEAPON_DESC_7 "Eine Handfeuerwaffe Kaliber.32. Zuverlässig und wirksam. Kann mit einem Schalldämpfer ausgestattet werden." + IDS_WEAPON_DESC_8 "Dieses Mehrzweckgerät wurde so entwickelt, dass es einen großen zylinderförmigen Kanister aufnimmt, der mit verschiedenen Geräten und Munitionsarten bestückt werden kann." + IDS_WEAPON_DESC_9 "Ein Schrotgewehr gehört zwar nicht zur Standardausrüstung für Spione, kann aber in bestimmten Situationen nützlich sein. Geeignet für Patronen und verschiedene Arten von Kugeln." + IDS_WEAPON_DESC_10 "Diese Maschinenpistole ist wegen ihrer Zuverlässigkeit und ihres schicken Designs beliebt. Es wird zwar nicht empfohlen, sie am seitlich befestigten Magazin zu halten, aber die meisten Agenten machen es trotzdem." + IDS_WEAPON_DESC_11 "Die robuste M1921-A1-Maschinenpistole ist bei gewissen Verbrecherorganisationen wegen ihres Gangsterimages sehr beliebt." + IDS_WEAPON_DESC_12 "Ein kompaktes, zuverlässiges Sturmgewehr aus dem Ostblock, das sich bei Verbrechern und Terroristen zunehmender Beliebtheit erfreut." + IDS_WEAPON_DESC_13 "Dieses schussstarke Bolt-Action-Gewehr ist eine wirkungsvolle Scharfschützenwaffe. Besitzt ein eingebautes 4fach-Zielfernrohr und kann mit einem Schalldämpfer versehen werden." + IDS_WEAPON_DESC_14 "Eine stabile Sportarmbrust. Ideal für Situationen, bei denen mehr Unauffälligkeit als brutale Feuerkraft gefragt ist. Ein Zielfernrohr für bessere Treffsicherheit auf größere Entfernungen kann befestigt werden." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_15 "Dieser ausklappbare Mikroraketen-Werfer passt bequem in jede Damenhandtasche. So kann er auch von einer Agentin leicht mitgeführt werden und Gegner können ihn nur schwer entdecken." + IDS_WEAPON_DESC_16 "Diese Mini-Spionagekamera ist in einem funktionsfähigen Lippenstift versteckt. Die Kamera hat eine begrenzte Tiefenschärfe, daher kann es nötig sein zu zoomen, um ein scharfes Bild zu erhalten." + IDS_WEAPON_DESC_17 "Eine industrielle Sprengladung, die geradezu ideal für Sabotage ist." + IDS_WEAPON_DESC_18 "Diese unauffällige Damenpuderdose verbirgt eine komplexe Dechiffriereinheit, mit der man verschlüsselte Texte lesen und Zifferncodes für Sicherheitsanlagen bestimmen kann." + IDS_WEAPON_DESC_19 "Dieses Miniaturschweißgerät arbeitet mit Haarspray als Treibstoff, wodurch er schwerer zu entdecken, wenn auch nicht ganz so leistungsfähig wie ein normales Schweißgerät ist." + IDS_WEAPON_DESC_20 "Sieht wie ein gewöhnlicher Zehennagel-Clipper aus, ist aber in Wahrheit ein raffinierter Dietrich." + IDS_WEAPON_DESC_21 "Wird diese elektronische Wanze an einem Telefon angebracht, zeichnet sie Audiodaten auf. Sie müssen die Wanze anschließend aktivieren, um beide Seiten der Unterhaltung anzuhören." + IDS_WEAPON_DESC_22 "Diese Parfümflasche versprüht eine Lösung, mit der sterbliche Überreste schnell und bequem beseitigt werden können. Es sollte nicht versäumt werden, Zielobjekte vor der Entfernung auf nützliche Gegenstände zu durchsuchen." + IDS_WEAPON_DESC_23 "Wenn du diese Münze wirfst, kannst du für Ablenkung sorgen, um Wachen von ihrem Posten wegzulocken." + IDS_WEAPON_DESC_24 "Du kannst Bärenfallen aufstellen, um Gegner zu fangen. Aber tritt nicht selbst hinein." + IDS_WEAPON_DESC_25 "Die Kugel dieses Schlüsselanhängers ist in Wahrheit eine kleine Glühbirne, die schwach leuchtet." + IDS_WEAPON_DESC_26 "Sogar eine gewöhnliche Banane kann in den richtigen Händen verheerend sein. Lass sie irgendwo liegen, wo jemand darauf treten kann." + IDS_WEAPON_DESC_27 "Steck deine Waffe weg, damit du keine Zivilisten ängstigst." + IDS_WEAPON_DESC_28 "Dieses Gerät macht vorübergehend jeden benommen, der sich im Explosionsradius aufhält." + IDS_WEAPON_DESC_29 "Diese Kanistergranate setzt bei der Explosion eine Wolke Schlafgas frei, die Gegner für kurze Zeit bewusstlos macht." + IDS_WEAPON_DESC_30 "Setzt eine Wolke ätzenden Gases frei, das die Haut reizt und die Atmung erschwert. Sehr gefährlich." +END + +STRINGTABLE +BEGIN + IDS_AMMO_1 "Taser" + IDS_AMMO_2 "Katana" + IDS_AMMO_3 "Tulwar" + IDS_AMMO_4 "Schuriken" + IDS_AMMO_5 "Granate" + IDS_AMMO_6 "Betäubungsgranate" + IDS_AMMO_7 "Schlafgasgranate" + IDS_AMMO_8 "Säuregasgranate" + IDS_AMMO_9 ".32 FMJ" + IDS_AMMO_10 ".32 Zyanid" + IDS_AMMO_11 "Beruhigungsmittel" + IDS_AMMO_12 "Kamerastörer" +END + +STRINGTABLE +BEGIN + IDS_AMMO_13 "Leimbombe" + IDS_AMMO_14 "Elektrische Ladung" + IDS_AMMO_15 "ASSS" + IDS_AMMO_16 "Lachgasgranate" + IDS_AMMO_17 "Kaliber.12 Schrot" + IDS_AMMO_18 "Kaliber.12 Explosivgeschoss" + IDS_AMMO_19 "9-mm-FMJ" + IDS_AMMO_20 ".45 FMJ" + IDS_AMMO_21 "7.62x39 FMJ" + IDS_AMMO_22 "7.62x39 Phosphor" + IDS_AMMO_23 ".308 FMJ" + IDS_AMMO_24 "Pfeil" + IDS_AMMO_25 "Giftpfeil" + IDS_AMMO_26 "Feuerpfeil" + IDS_AMMO_27 "Explosivpfeil" + IDS_AMMO_28 "Mikrorakete" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_NAME "KAPITEL 1. Cate Archer muss sterben!" + IDS_MISSION_01_NAME "KAPITEL 2. Leb wohl, Spionin" + IDS_MISSION_02_NAME "KAPITEL 3. Projekt Omega" + IDS_MISSION_03_NAME "KAPITEL 4. Agentin in geheimer Mission" + IDS_MISSION_04_NAME "KAPITEL 5. Nachtflug" + IDS_MISSION_05_NAME "KAPITEL 6. Tagebuch eines Doppelagenten" + IDS_MISSION_06_NAME "KAPITEL 7. Falsches Spiel" + IDS_MISSION_07_NAME "Kapitel 8. Die Kunst des Verbrechens" + IDS_MISSION_08_NAME "KAPITEL 9. Eisstation Bosheit" + IDS_MISSION_09_NAME "KAPITEL 10. Kalis Fluch" + IDS_MISSION_10_NAME "KAPITEL 11. Die Eindringlinge" + IDS_MISSION_11_NAME "KAPITEL 12. Unter Wasser" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME " " + IDS_MISSION_00_LEVEL_00_NAME2 " " + IDS_MISSION_00_LEVEL_00_NAME3 " " + IDS_MISSION_00_LEVEL_00_NAME4 " " + IDS_MISSION_00_LEVEL_00_NAME5 " " + IDS_MISSION_00_LEVEL_00_NAME6 " " + IDS_MISSION_00_LEVEL_00_NAME7 " " + IDS_MISSION_00_LEVEL_00_NAME8 " " + IDS_MISSION_00_LEVEL_00_NAME9 " " + IDS_MISSION_00_LEVEL_00_NAME10 " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME43 " " + IDS_MISSION_00_LEVEL_00_NAME44 " " + IDS_MISSION_00_LEVEL_00_NAME45 " " + IDS_MISSION_00_LEVEL_00_NAME46 " " + IDS_MISSION_00_LEVEL_00_NAME47 " " + IDS_MISSION_00_LEVEL_00_NAME48 " " + IDS_MISSION_00_LEVEL_00_NAME49 " " + IDS_MISSION_00_LEVEL_00_NAME50 " " + IDS_MISSION_00_LEVEL_00_NAME51 " " + IDS_MISSION_00_LEVEL_00_NAME52 " " + IDS_MISSION_00_LEVEL_00_NAME53 " " + IDS_MISSION_00_LEVEL_00_NAME54 " " + IDS_MISSION_00_LEVEL_00_NAME55 " " + IDS_MISSION_00_LEVEL_00_NAME56 " " + IDS_MISSION_00_LEVEL_00_NAME57 " " + IDS_MISSION_00_LEVEL_00_NAME58 " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_BRIEF " " + IDS_MISSION_01_BRIEF " " + IDS_MISSION_02_BRIEF " " + IDS_MISSION_03_BRIEF " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_04_BRIEF " " + IDS_MISSION_05_BRIEF " " + IDS_MISSION_06_BRIEF " " + IDS_MISSION_07_BRIEF " " + IDS_MISSION_08_BRIEF " " + IDS_MISSION_09_BRIEF " " + IDS_MISSION_10_BRIEF " " + IDS_MISSION_11_BRIEF " " + IDS_MISSION_12_BRIEF " " + IDS_MISSION_13_BRIEF " " + IDS_MISSION_14_BRIEF " " + IDS_MISSION_15_BRIEF " " + IDS_MISSION_TEMP_BRIEF " " + IDS_MISSION_TEMP_BRIEF2 " " + IDS_MISSION_TEMP_BRIEF3 " " + IDS_MISSION_TEMP_BRIEF4 " " +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_1 "Lässt Gegner für kurze Zeit bewusstlos werden." + IDS_AMMO_DESC_2 "Katana" + IDS_AMMO_DESC_3 "Tulwar" + IDS_AMMO_DESC_4 "Wurfprojektil mit rasiermesserscharfen Kanten. Kann auch als Ablenkung verwendet werden." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_5 "Splitterbombe mit einem Drei-Sekunden-Zünder." + IDS_AMMO_DESC_6 "Setzt eine Wolke aus Betäubungsgas frei, die Ziele vorübergehend benommen macht." + IDS_AMMO_DESC_7 "Bereichseffekt, der Gegner vorübergehend bewusstlos werden lässt." + IDS_AMMO_DESC_8 "Erzeugt eine Ätzgas-Wolke." + IDS_AMMO_DESC_9 "Standard Kaliber.32-Millimeter-FMJ-Vollmantelmunition." + IDS_AMMO_DESC_10 "Geschosse Kaliber.32 mit winzigen Giftkapseln in der Spitze jeder Patrone. Wirksam gegen lebende Ziele." + IDS_AMMO_DESC_11 "Lässt Gegner für kurze Zeit bewusstlos werden." + IDS_AMMO_DESC_12 "Deaktiviert Überwachungskameras durch Abspielen einer harmlosen Videoschleife." + IDS_AMMO_DESC_13 "Erzeugt eine Lache eines starken Klebemittels. Gegner sind für kurze Zeit nicht fähig, sich von der Stelle zu bewegen." + IDS_AMMO_DESC_14 "Gibt eine starke elektrische Ladung ab." + IDS_AMMO_DESC_15 "Anti-Supersoldaten-Serum bewirkt eine chemische Reaktion, die Supersoldaten zum Kochen bringt. Bei Menschen harmlos." + IDS_AMMO_DESC_16 "Erzeugt eine Wolke von Lachgas, das die Gegner schwächt." + IDS_AMMO_DESC_17 "Kaliber.12-Geschosse schießen aus dem Gewehrlauf heraus und erzeugen einen Feuerbogen, der auf kurze Distanz äußerst effektiv ist." + IDS_AMMO_DESC_18 "Explosiv-Kugeln explodieren beim Aufprall und erzeugen beim Ziel massiven Schaden." + IDS_AMMO_DESC_19 "Standard 9-Millimeter-FMJ-Vollmantelmunition." + IDS_AMMO_DESC_20 "Standard Kaliber.45-Millimeter-FMJ-Vollmantelmunition." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_21 "Standard 7.62x39-FMJ-Vollmantelmunition." + IDS_AMMO_DESC_22 "Phosphor-beschichtete 7.62x39-Munition, die nach dem Aufprall weiterbrennt." + IDS_AMMO_DESC_23 "Standard Kaliber.308-Millimeter-FMJ-Vollmantelmunition." + IDS_AMMO_DESC_24 "Standard-Armbrustmunition. Kann manchmal von weichen Zielen wiederbeschafft werden." + IDS_AMMO_DESC_25 "Gift-beschichtete Armbrustmunition. Kann manchmal von weichen Zielen wiederbeschafft werden." + IDS_AMMO_DESC_26 "Brand-Armbrustmunition, die nach dem Aufprall weiterbrennt." + IDS_AMMO_DESC_27 "Armbrustmunition mit Sprengkörperspitze, die beim Aufprall explodiert." + IDS_AMMO_DESC_28 "Kleine Rakete mit Eigenantrieb, die beim Aufprall explodiert." + IDS_AMMO_DESC_29 "Zoom-Spionagekamera-Funktion." + IDS_AMMO_DESC_30 "Zeitbombe mit einstellbarem Zeitzünder." + IDS_AMMO_DESC_31 "Elektronischer Standard-Code-Analysierer und -Dechiffrierer." + IDS_AMMO_DESC_32 "Tragbares Schweißgerät." + IDS_AMMO_DESC_33 "Dietrich" + IDS_AMMO_DESC_34 "Abhörwanze." + IDS_AMMO_DESC_35 "Bewirkt sofortige Atomisierung von Rucksäcken und entfernt sie dauerhaft." + IDS_AMMO_DESC_36 "Neutralisiert unsichtbare Tinte auf chemischem Weg und macht sie fürs bloße Auge sichtbar." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5000 "" + IDS_MISSION_OBJ_5001 " " + IDS_MISSION_OBJ_5002 " " + IDS_MISSION_OBJ_5003 " " + IDS_MISSION_OBJ_5004 " " + IDS_MISSION_OBJ_5005 " " + IDS_MISSION_OBJ_5006 " " + IDS_MISSION_OBJ_5007 " " +END + +STRINGTABLE +BEGIN + IDS_GEAR_NAME_4200 "Schwere Körperpanzerung" + IDS_GEAR_NAME_4201 "Leichte Körperpanzerung" + IDS_GEAR_NAME_4202 "Erste-Hilfe-Kasten" + IDS_GEAR_NAME_4203 "Verbandszeug" + IDS_GEAR_NAME_4204 "Schutzpanzer" + IDS_GEAR_NAME_4205 "Small Bandage" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6000 " " + IDS_MISSION_TEXT_6001 " " + IDS_MISSION_TEXT_6002 " " + IDS_MISSION_TEXT_6003 " " + IDS_MISSION_TEXT_6004 " " + IDS_MISSION_TEXT_6005 " " + IDS_MISSION_TEXT_6006 " " + IDS_MISSION_TEXT_6007 " " + IDS_MISSION_TEXT_6008 " " + IDS_MISSION_TEXT_6009 " " + IDS_MISSION_TEXT_6010 " " + IDS_MISSION_TEXT_6011 " " + IDS_MISSION_TEXT_6012 " " + IDS_MISSION_TEXT_6013 " " + IDS_MISSION_TEXT_6014 " " + IDS_MISSION_TEXT_6015 " " +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE "Zahl der zivilen Opfer inakzeptabel!" + IDS_MISSIONFAILURE2 "Du hast einen Zivilisten ausgeschaltet!" + IDS_MISSIONFAILURE3 "Du wurdest festgenommen!" + IDS_MISSIONFAILURE4 " " + IDS_MISSIONFAILURE5 " " + IDS_MISSIONFAILURE6 "Du bist tot!" + IDS_MISSIONFAILURE7 " " + IDS_MISSIONFAILURE8 " " + IDS_MISSIONFAILURE9 "Du bist tot!" + IDS_MISSIONFAILURE10 "Du bist tot!" + IDS_MISSIONFAILURE11 " " + IDS_MISSIONFAILURE12 " " +END + +STRINGTABLE +BEGIN + IDS_AMMO_29 "Kamera" + IDS_AMMO_30 "Sprengkörper" + IDS_AMMO_31 "Codeknacker" + IDS_AMMO_32 "Schweißgerät" + IDS_AMMO_33 "Dietrich" + IDS_AMMO_34 "Wanze" + IDS_AMMO_35 "Rucksack-Entsorger" + IDS_AMMO_36 "" + IDS_AMMO_37 "Münze" + IDS_AMMO_38 "Wütendes Kätzchen" + IDS_AMMO_39 "Bärenfalle" + IDS_AMMO_40 "Banane" + IDS_AMMO_41 "Verfolgerpfeil" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7000 "" + IDS_TRANSMISSIONS_7001 "Lass dir vom mechanischen Mynah-Vogel einen nützlichen Rat geben." + IDS_TRANSMISSIONS_7002 "Die Sicherung ist tot. Sie muss ersetzt werden." + IDS_TRANSMISSIONS_7003 "Die Tür ist verschlossen." + IDS_TRANSMISSIONS_7004 "Die Drähte sind durchgeschmort. Sie können repariert werden, wenn du etwas Kupferdraht findest." + IDS_TRANSMISSIONS_7005 "Der Griff des Ventils fehlt. Mit bloßen Händen kannst du es nicht gut greifen." + IDS_TRANSMISSIONS_7006 "Der Türknauf fehlt." + IDS_TRANSMISSIONS_7007 "Der Strom ist ausgefallen." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_37 "Münze." + IDS_AMMO_DESC_38 "Wütendes Kätzchen." + IDS_AMMO_DESC_39 "Bärenfalle." + IDS_AMMO_DESC_40 "Banane" + IDS_AMMO_DESC_41 "Radiosender-Pfeile markieren die Position eines Gegners auf Ihrem Radar." +END + +STRINGTABLE +BEGIN + IDS_TEXT_DIALOGUE_9000 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10001 " " + IDS_DIALOGUE_10002 " " + IDS_DIALOGUE_10003 " " + IDS_DIALOGUE_10004 " " + IDS_DIALOGUE_10005 " " + IDS_DIALOGUE_10006 " " + IDS_DIALOGUE_10007 " " + IDS_DIALOGUE_10008 " " + IDS_DIALOGUE_10009 " " + IDS_DIALOGUE_10010 " " + IDS_DIALOGUE_10011 " " + IDS_DIALOGUE_10012 " " + IDS_DIALOGUE_10013 " " + IDS_DIALOGUE_10014 " " + IDS_DIALOGUE_10015 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10065 " " + IDS_DIALOGUE_10066 " " + IDS_DIALOGUE_10067 " " + IDS_DIALOGUE_10068 " " + IDS_DIALOGUE_10069 " " + IDS_DIALOGUE_10070 " " + IDS_DIALOGUE_10071 " " + IDS_DIALOGUE_10072 " " + IDS_DIALOGUE_10073 " " + IDS_DIALOGUE_10074 " " + IDS_DIALOGUE_10075 " " + IDS_DIALOGUE_10076 " " + IDS_DIALOGUE_10077 " " + IDS_DIALOGUE_10078 " " + IDS_DIALOGUE_10079 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10080 " " + IDS_DIALOGUE_10081 " " + IDS_DIALOGUE_10082 " " + IDS_DIALOGUE_10083 " " + IDS_DIALOGUE_10084 " " + IDS_DIALOGUE_10085 " " + IDS_DIALOGUE_10086 " " + IDS_DIALOGUE_10087 " " + IDS_DIALOGUE_10088 " " + IDS_DIALOGUE_10089 " " + IDS_DIALOGUE_10090 " " + IDS_DIALOGUE_10091 " " + IDS_DIALOGUE_10092 " " + IDS_DIALOGUE_10093 " " + IDS_DIALOGUE_10094 " " + IDS_DIALOGUE_10095 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10096 " " + IDS_DIALOGUE_10097 " " + IDS_DIALOGUE_10098 " " + IDS_DIALOGUE_10099 " " + IDS_DIALOGUE_10100 " " + IDS_DIALOGUE_10101 " " + IDS_DIALOGUE_10102 " " + IDS_DIALOGUE_10103 " " + IDS_DIALOGUE_10104 " " + IDS_DIALOGUE_10105 " " + IDS_DIALOGUE_10106 " " + IDS_DIALOGUE_10107 " " + IDS_DIALOGUE_10108 " " + IDS_DIALOGUE_10109 " " + IDS_DIALOGUE_10110 " " + IDS_DIALOGUE_10111 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10112 " " + IDS_DIALOGUE_10113 " " + IDS_DIALOGUE_10114 " " + IDS_DIALOGUE_10115 " " + IDS_DIALOGUE_10116 " " + IDS_DIALOGUE_10117 " " + IDS_DIALOGUE_10118 " " + IDS_DIALOGUE_10119 " " + IDS_DIALOGUE_10120 " " + IDS_DIALOGUE_10121 " " + IDS_DIALOGUE_10122 " " + IDS_DIALOGUE_10123 " " + IDS_DIALOGUE_10124 " " + IDS_DIALOGUE_10125 " " + IDS_DIALOGUE_10126 " " + IDS_DIALOGUE_10127 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10128 " " + IDS_DIALOGUE_10129 " " + IDS_DIALOGUE_10130 " " + IDS_DIALOGUE_10131 " " + IDS_DIALOGUE_10132 " " + IDS_DIALOGUE_10133 " " + IDS_DIALOGUE_10134 " " + IDS_DIALOGUE_10135 " " + IDS_DIALOGUE_10136 " " + IDS_DIALOGUE_10137 " " + IDS_DIALOGUE_10138 " " + IDS_DIALOGUE_10139 " " + IDS_DIALOGUE_10140 " " + IDS_DIALOGUE_10141 " " + IDS_DIALOGUE_10142 " " + IDS_DIALOGUE_10143 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10144 " " + IDS_DIALOGUE_10145 " " + IDS_DIALOGUE_10146 " " + IDS_DIALOGUE_10147 " " + IDS_DIALOGUE_10148 " " + IDS_DIALOGUE_10149 " " + IDS_DIALOGUE_10150 " " + IDS_DIALOGUE_10151 " " + IDS_DIALOGUE_10152 " " + IDS_DIALOGUE_10154 " " + IDS_DIALOGUE_10155 " " + IDS_DIALOGUE_10156 " " + IDS_DIALOGUE_10158 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10160 " " + IDS_DIALOGUE_10161 " " + IDS_DIALOGUE_10167 " " + IDS_DIALOGUE_10168 " " + IDS_DIALOGUE_10169 " " + IDS_DIALOGUE_10170 " " + IDS_DIALOGUE_10171 " " + IDS_DIALOGUE_10172 " " + IDS_DIALOGUE_10173 " " + IDS_DIALOGUE_10174 " " + IDS_DIALOGUE_10175 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10177 " " + IDS_DIALOGUE_10178 " " + IDS_DIALOGUE_10179 " " + IDS_DIALOGUE_10180 " " + IDS_DIALOGUE_10181 " " + IDS_DIALOGUE_10182 " " + IDS_DIALOGUE_10183 " " + IDS_DIALOGUE_10184 " " + IDS_DIALOGUE_10185 " " + IDS_DIALOGUE_10186 " " + IDS_DIALOGUE_10187 " " + IDS_DIALOGUE_10188 " " + IDS_DIALOGUE_10189 " " + IDS_DIALOGUE_10190 " " + IDS_DIALOGUE_10191 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10192 " " + IDS_DIALOGUE_10193 " " + IDS_DIALOGUE_10194 " " + IDS_DIALOGUE_10195 " " + IDS_DIALOGUE_10196 " " + IDS_DIALOGUE_10197 " " + IDS_DIALOGUE_10198 " " + IDS_DIALOGUE_10199 " " + IDS_DIALOGUE_10200 " " + IDS_DIALOGUE_10201 " " + IDS_DIALOGUE_10202 " " + IDS_DIALOGUE_10203 " " + IDS_DIALOGUE_10204 " " + IDS_DIALOGUE_10205 " " + IDS_DIALOGUE_10206 " " + IDS_DIALOGUE_10207 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10208 " " + IDS_DIALOGUE_10209 " " + IDS_DIALOGUE_10210 " " + IDS_DIALOGUE_10211 " " + IDS_DIALOGUE_10212 " " + IDS_DIALOGUE_10213 " " + IDS_DIALOGUE_10214 " " + IDS_DIALOGUE_10215 " " + IDS_DIALOGUE_10216 " " + IDS_DIALOGUE_10217 " " + IDS_DIALOGUE_10218 " " + IDS_DIALOGUE_10219 " " + IDS_DIALOGUE_10220 " " + IDS_DIALOGUE_10221 " " + IDS_DIALOGUE_10222 " " + IDS_DIALOGUE_10223 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10224 " " + IDS_DIALOGUE_10225 " " + IDS_DIALOGUE_10228 " " + IDS_DIALOGUE_10229 " " + IDS_DIALOGUE_10232 " " + IDS_DIALOGUE_10233 " " + IDS_DIALOGUE_10234 " " + IDS_DIALOGUE_10235 " " + IDS_DIALOGUE_10236 " " + IDS_DIALOGUE_10238 " " + IDS_DIALOGUE_10239 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10240 " " + IDS_DIALOGUE_10245 " " + IDS_DIALOGUE_10246 " " + IDS_DIALOGUE_10247 " " + IDS_DIALOGUE_10248 " " + IDS_DIALOGUE_10249 " " + IDS_DIALOGUE_10250 " " + IDS_DIALOGUE_10251 " " + IDS_DIALOGUE_10252 " " + IDS_DIALOGUE_10253 " " + IDS_DIALOGUE_10254 " " + IDS_DIALOGUE_10255 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10256 " " + IDS_DIALOGUE_10257 " " + IDS_DIALOGUE_10258 " " + IDS_DIALOGUE_10259 " " + IDS_DIALOGUE_10261 " " + IDS_DIALOGUE_10262 " " + IDS_DIALOGUE_10263 " " + IDS_DIALOGUE_10264 " " + IDS_DIALOGUE_10265 " " + IDS_DIALOGUE_10266 " " + IDS_DIALOGUE_10267 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10298 " " + IDS_DIALOGUE_10299 " " + IDS_DIALOGUE_10300 " " + IDS_DIALOGUE_10301 " " + IDS_DIALOGUE_10302 " " + IDS_DIALOGUE_10303 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10304 " " + IDS_DIALOGUE_10305 " " + IDS_DIALOGUE_10306 " " + IDS_DIALOGUE_10307 " " + IDS_DIALOGUE_10308 " " + IDS_DIALOGUE_10309 " " + IDS_DIALOGUE_10312 " " + IDS_DIALOGUE_10313 " " + IDS_DIALOGUE_10314 " " + IDS_DIALOGUE_10315 " " + IDS_DIALOGUE_10316 " " + IDS_DIALOGUE_10317 " " + IDS_DIALOGUE_10318 " " + IDS_DIALOGUE_10319 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10320 " " + IDS_DIALOGUE_10321 " " + IDS_DIALOGUE_10322 " " + IDS_DIALOGUE_10323 " " + IDS_DIALOGUE_10324 " " + IDS_DIALOGUE_10325 " " + IDS_DIALOGUE_10326 " " + IDS_DIALOGUE_10327 " " + IDS_DIALOGUE_10328 " " + IDS_DIALOGUE_10329 " " + IDS_DIALOGUE_10330 " " + IDS_DIALOGUE_10331 " " + IDS_DIALOGUE_10332 " " + IDS_DIALOGUE_10333 " " + IDS_DIALOGUE_10334 " " + IDS_DIALOGUE_10335 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10336 " " + IDS_DIALOGUE_10337 " " + IDS_DIALOGUE_10340 " " + IDS_DIALOGUE_10341 " " + IDS_DIALOGUE_10342 " " + IDS_DIALOGUE_10343 " " + IDS_DIALOGUE_10344 " " + IDS_DIALOGUE_10345 " " + IDS_DIALOGUE_10346 " " + IDS_DIALOGUE_10347 " " + IDS_DIALOGUE_10348 " " + IDS_DIALOGUE_10349 " " + IDS_DIALOGUE_10350 " " + IDS_DIALOGUE_10351 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10352 " " + IDS_DIALOGUE_10353 " " + IDS_DIALOGUE_10354 " " + IDS_DIALOGUE_10355 " " + IDS_DIALOGUE_10356 " " + IDS_DIALOGUE_10357 " " + IDS_DIALOGUE_10358 " " + IDS_DIALOGUE_10359 " " + IDS_DIALOGUE_10360 " " + IDS_DIALOGUE_10361 " " + IDS_DIALOGUE_10362 " " + IDS_DIALOGUE_10363 " " + IDS_DIALOGUE_10364 " " + IDS_DIALOGUE_10365 " " + IDS_DIALOGUE_10366 " " + IDS_DIALOGUE_10367 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10368 " " + IDS_DIALOGUE_10369 " " + IDS_DIALOGUE_10370 " " + IDS_DIALOGUE_10371 " " + IDS_DIALOGUE_10372 " " + IDS_DIALOGUE_10373 " " + IDS_DIALOGUE_10374 " " + IDS_DIALOGUE_10375 " " + IDS_DIALOGUE_10376 " " + IDS_DIALOGUE_10377 " " + IDS_DIALOGUE_10378 " " + IDS_DIALOGUE_10379 " " + IDS_DIALOGUE_10380 " " + IDS_DIALOGUE_10381 " " + IDS_DIALOGUE_10382 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10384 " " + IDS_DIALOGUE_10385 " " + IDS_DIALOGUE_10386 " " + IDS_DIALOGUE_10387 " " + IDS_DIALOGUE_10388 " " + IDS_DIALOGUE_10389 " " + IDS_DIALOGUE_10390 " " + IDS_DIALOGUE_10391 " " + IDS_DIALOGUE_10392 " " + IDS_DIALOGUE_10393 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10401 " " + IDS_DIALOGUE_10402 " " + IDS_DIALOGUE_10403 " " + IDS_DIALOGUE_10404 " " + IDS_DIALOGUE_10405 " " + IDS_DIALOGUE_10406 " " + IDS_DIALOGUE_10407 " " + IDS_DIALOGUE_10408 " " + IDS_DIALOGUE_10409 " " + IDS_DIALOGUE_10410 " " + IDS_DIALOGUE_10411 " " + IDS_DIALOGUE_10412 " " + IDS_DIALOGUE_10413 " " + IDS_DIALOGUE_10414 " " + IDS_DIALOGUE_10415 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10416 " " + IDS_DIALOGUE_10417 " " + IDS_DIALOGUE_10418 " " + IDS_DIALOGUE_10419 " " + IDS_DIALOGUE_10420 " " + IDS_DIALOGUE_10421 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10444 " " + IDS_DIALOGUE_10445 " " + IDS_DIALOGUE_10446 " " + IDS_DIALOGUE_10447 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10448 " " + IDS_DIALOGUE_10449 " " + IDS_DIALOGUE_10450 " " + IDS_DIALOGUE_10451 " " + IDS_DIALOGUE_10452 " " + IDS_DIALOGUE_10462 " " + IDS_DIALOGUE_10463 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10464 " " + IDS_DIALOGUE_10465 " " + IDS_DIALOGUE_10466 " " + IDS_DIALOGUE_10467 " " + IDS_DIALOGUE_10468 " " + IDS_DIALOGUE_10469 " " + IDS_DIALOGUE_10470 " " + IDS_DIALOGUE_10471 " " + IDS_DIALOGUE_10472 " " + IDS_DIALOGUE_10473 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10481 " " + IDS_DIALOGUE_10482 " " + IDS_DIALOGUE_10483 " " + IDS_DIALOGUE_10484 " " + IDS_DIALOGUE_10485 " " + IDS_DIALOGUE_10486 " " + IDS_DIALOGUE_10487 " " + IDS_DIALOGUE_10488 " " + IDS_DIALOGUE_10489 " " + IDS_DIALOGUE_10492 " " + IDS_DIALOGUE_10493 " " + IDS_DIALOGUE_10494 " " + IDS_DIALOGUE_10495 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10496 " " + IDS_DIALOGUE_10497 " " + IDS_DIALOGUE_10498 " " + IDS_DIALOGUE_10499 " " + IDS_DIALOGUE_10500 " " + IDS_DIALOGUE_10501 " " + IDS_DIALOGUE_10502 " " + IDS_DIALOGUE_10503 " " + IDS_DIALOGUE_10504 " " + IDS_DIALOGUE_10505 " " + IDS_DIALOGUE_10506 " " + IDS_DIALOGUE_10507 " " + IDS_DIALOGUE_10508 " " + IDS_DIALOGUE_10509 " " + IDS_DIALOGUE_10510 " " + IDS_DIALOGUE_10511 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10512 " " + IDS_DIALOGUE_10513 " " + IDS_DIALOGUE_10514 " " + IDS_DIALOGUE_10515 " " + IDS_DIALOGUE_10516 " " + IDS_DIALOGUE_10517 " " + IDS_DIALOGUE_10518 " " + IDS_DIALOGUE_10519 " " + IDS_DIALOGUE_10520 " " + IDS_DIALOGUE_10521 " " + IDS_DIALOGUE_10522 " " + IDS_DIALOGUE_10523 " " + IDS_DIALOGUE_10524 " " + IDS_DIALOGUE_10525 " " + IDS_DIALOGUE_10526 " " + IDS_DIALOGUE_10527 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10528 " " + IDS_DIALOGUE_10529 " " + IDS_DIALOGUE_10530 " " + IDS_DIALOGUE_10534 " " + IDS_DIALOGUE_10535 " " + IDS_DIALOGUE_10536 " " + IDS_DIALOGUE_10537 " " + IDS_DIALOGUE_10538 " " + IDS_DIALOGUE_10539 " " + IDS_DIALOGUE_10540 " " + IDS_DIALOGUE_10541 " " + IDS_DIALOGUE_10542 " " + IDS_DIALOGUE_10543 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10544 " " + IDS_DIALOGUE_10545 " " + IDS_DIALOGUE_10546 " " + IDS_DIALOGUE_10547 " " + IDS_DIALOGUE_10548 " " + IDS_DIALOGUE_10549 " " + IDS_DIALOGUE_10550 " " + IDS_DIALOGUE_10551 " " + IDS_DIALOGUE_10552 " " + IDS_DIALOGUE_10553 " " + IDS_DIALOGUE_10554 " " + IDS_DIALOGUE_10555 " " + IDS_DIALOGUE_10556 " " + IDS_DIALOGUE_10557 " " + IDS_DIALOGUE_10558 " " + IDS_DIALOGUE_10559 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10560 " " + IDS_DIALOGUE_10561 " " + IDS_DIALOGUE_10562 " " + IDS_DIALOGUE_10563 " " + IDS_DIALOGUE_10564 " " + IDS_DIALOGUE_10565 " " + IDS_DIALOGUE_10566 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10576 " " + IDS_DIALOGUE_10577 " " + IDS_DIALOGUE_10578 " " + IDS_DIALOGUE_10579 " " + IDS_DIALOGUE_10580 " " + IDS_DIALOGUE_10581 " " + IDS_DIALOGUE_10582 " " + IDS_DIALOGUE_10583 " " + IDS_DIALOGUE_10584 " " + IDS_DIALOGUE_10585 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10592 " " + IDS_DIALOGUE_10593 " " + IDS_DIALOGUE_10594 " " + IDS_DIALOGUE_10595 " " + IDS_DIALOGUE_10596 " " + IDS_DIALOGUE_10597 " " + IDS_DIALOGUE_10598 " " + IDS_DIALOGUE_10599 " " + IDS_DIALOGUE_10600 " " + IDS_DIALOGUE_10601 " " + IDS_DIALOGUE_10602 " " + IDS_DIALOGUE_10603 " " + IDS_DIALOGUE_10604 " " + IDS_DIALOGUE_10605 " " + IDS_DIALOGUE_10606 " " + IDS_DIALOGUE_10607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10608 " " + IDS_DIALOGUE_10609 " " + IDS_DIALOGUE_10610 " " + IDS_DIALOGUE_10611 " " + IDS_DIALOGUE_10621 " " + IDS_DIALOGUE_10622 " " + IDS_DIALOGUE_10623 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10624 " " + IDS_DIALOGUE_10625 " " + IDS_DIALOGUE_10626 " " + IDS_DIALOGUE_10627 " " + IDS_DIALOGUE_10628 " " + IDS_DIALOGUE_10629 " " + IDS_DIALOGUE_10630 " " + IDS_DIALOGUE_10631 " " + IDS_DIALOGUE_10632 " " + IDS_DIALOGUE_10633 " " + IDS_DIALOGUE_10634 " " + IDS_DIALOGUE_10635 " " + IDS_DIALOGUE_10636 " " + IDS_DIALOGUE_10637 " " + IDS_DIALOGUE_10638 " " + IDS_DIALOGUE_10639 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10640 " " + IDS_DIALOGUE_10641 " " + IDS_DIALOGUE_10642 " " + IDS_DIALOGUE_10644 " " + IDS_DIALOGUE_10645 " " + IDS_DIALOGUE_10646 " " + IDS_DIALOGUE_10647 " " + IDS_DIALOGUE_10648 " " + IDS_DIALOGUE_10649 " " + IDS_DIALOGUE_10650 " " + IDS_DIALOGUE_10651 " " + IDS_DIALOGUE_10652 " " + IDS_DIALOGUE_10653 "..." + IDS_DIALOGUE_10654 " " + IDS_DIALOGUE_10655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10656 " " + IDS_DIALOGUE_10657 " " + IDS_DIALOGUE_10658 " " + IDS_DIALOGUE_10659 " " + IDS_DIALOGUE_10660 " " + IDS_DIALOGUE_10661 " " + IDS_DIALOGUE_10662 " " + IDS_DIALOGUE_10663 " " + IDS_DIALOGUE_10664 " " + IDS_DIALOGUE_10665 " " + IDS_DIALOGUE_10666 " " + IDS_DIALOGUE_10667 " " + IDS_DIALOGUE_10668 " " + IDS_DIALOGUE_10669 " " + IDS_DIALOGUE_10670 " " + IDS_DIALOGUE_10671 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10672 " " + IDS_DIALOGUE_10673 " " + IDS_DIALOGUE_10674 " " + IDS_DIALOGUE_10675 " " + IDS_DIALOGUE_10676 " " + IDS_DIALOGUE_10677 " " + IDS_DIALOGUE_10678 " " + IDS_DIALOGUE_10679 " " + IDS_DIALOGUE_10680 " " + IDS_DIALOGUE_10681 " " + IDS_DIALOGUE_10682 " " + IDS_DIALOGUE_10683 " " + IDS_DIALOGUE_10684 " " + IDS_DIALOGUE_10685 " " + IDS_DIALOGUE_10686 " " + IDS_DIALOGUE_10687 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10688 " " + IDS_DIALOGUE_10689 " " + IDS_DIALOGUE_10690 " " + IDS_DIALOGUE_10691 " " + IDS_DIALOGUE_10692 " " + IDS_DIALOGUE_10693 " " + IDS_DIALOGUE_10694 " " + IDS_DIALOGUE_10695 " " + IDS_DIALOGUE_10696 " " + IDS_DIALOGUE_10697 " " + IDS_DIALOGUE_10698 " " + IDS_DIALOGUE_10699 " " + IDS_DIALOGUE_10700 " " + IDS_DIALOGUE_10701 " " + IDS_DIALOGUE_10702 " " + IDS_DIALOGUE_10703 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10704 " " + IDS_DIALOGUE_10705 " " + IDS_DIALOGUE_10706 " " + IDS_DIALOGUE_10707 " " + IDS_DIALOGUE_10708 " " + IDS_DIALOGUE_10709 " " + IDS_DIALOGUE_10710 " " + IDS_DIALOGUE_10711 " " + IDS_DIALOGUE_10712 " " + IDS_DIALOGUE_10713 " " + IDS_DIALOGUE_10714 " " + IDS_DIALOGUE_10715 " " + IDS_DIALOGUE_10716 " " + IDS_DIALOGUE_10717 " " + IDS_DIALOGUE_10718 " " + IDS_DIALOGUE_10719 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10720 " " + IDS_DIALOGUE_10721 " " + IDS_DIALOGUE_10724 " " + IDS_DIALOGUE_10725 " " + IDS_DIALOGUE_10726 " " + IDS_DIALOGUE_10727 " " + IDS_DIALOGUE_10728 " " + IDS_DIALOGUE_10729 " " + IDS_DIALOGUE_10730 " " + IDS_DIALOGUE_10731 " " + IDS_DIALOGUE_10732 " " + IDS_DIALOGUE_10733 " " + IDS_DIALOGUE_10734 " " + IDS_DIALOGUE_10735 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10736 " " + IDS_DIALOGUE_10737 " " + IDS_DIALOGUE_10738 " " + IDS_DIALOGUE_10739 " " + IDS_DIALOGUE_10740 " " + IDS_DIALOGUE_10741 " " + IDS_DIALOGUE_10742 " " + IDS_DIALOGUE_10743 " " + IDS_DIALOGUE_10744 " " + IDS_DIALOGUE_10745 " " + IDS_DIALOGUE_10748 " " + IDS_DIALOGUE_10749 " " + IDS_DIALOGUE_10750 " " + IDS_DIALOGUE_10751 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10752 " " + IDS_DIALOGUE_10753 " " + IDS_DIALOGUE_10754 " " + IDS_DIALOGUE_10755 " " + IDS_DIALOGUE_10756 " " + IDS_DIALOGUE_10757 " " + IDS_DIALOGUE_10758 " " + IDS_DIALOGUE_10759 " " + IDS_DIALOGUE_10760 " " + IDS_DIALOGUE_10761 " " + IDS_DIALOGUE_10762 " " + IDS_DIALOGUE_10763 " " + IDS_DIALOGUE_10764 " " + IDS_DIALOGUE_10765 " " + IDS_DIALOGUE_10766 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10770 " " + IDS_DIALOGUE_10771 " " + IDS_DIALOGUE_10773 " " + IDS_DIALOGUE_10774 " " + IDS_DIALOGUE_10775 " " + IDS_DIALOGUE_10776 " " + IDS_DIALOGUE_10777 " " + IDS_DIALOGUE_10779 " " + IDS_DIALOGUE_10780 " " + IDS_DIALOGUE_10781 " " + IDS_DIALOGUE_10782 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10784 " " + IDS_DIALOGUE_10785 " " + IDS_DIALOGUE_10786 " " + IDS_DIALOGUE_10787 " " + IDS_DIALOGUE_10788 " " + IDS_DIALOGUE_10789 " " + IDS_DIALOGUE_10792 " " + IDS_DIALOGUE_10793 " " + IDS_DIALOGUE_10795 " " + IDS_DIALOGUE_10796 " " + IDS_DIALOGUE_10797 " " + IDS_DIALOGUE_10798 " " + IDS_DIALOGUE_10799 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10800 " " + IDS_DIALOGUE_10801 " " + IDS_DIALOGUE_10802 " " + IDS_DIALOGUE_10803 " " + IDS_DIALOGUE_10804 " " + IDS_DIALOGUE_10805 " " + IDS_DIALOGUE_10806 " " + IDS_DIALOGUE_10807 " " + IDS_DIALOGUE_10808 " " + IDS_DIALOGUE_10809 " " + IDS_DIALOGUE_10810 " " + IDS_DIALOGUE_10811 " " + IDS_DIALOGUE_10812 " " + IDS_DIALOGUE_10815 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10816 " " + IDS_DIALOGUE_10817 " " + IDS_DIALOGUE_10818 " " + IDS_DIALOGUE_10819 " " + IDS_DIALOGUE_10820 " " + IDS_DIALOGUE_10821 " " + IDS_DIALOGUE_10822 " " + IDS_DIALOGUE_10823 " " + IDS_DIALOGUE_10824 " " + IDS_DIALOGUE_10825 " " + IDS_DIALOGUE_10826 " " + IDS_DIALOGUE_10827 " " + IDS_DIALOGUE_10828 " " + IDS_DIALOGUE_10829 " " + IDS_DIALOGUE_10830 " " + IDS_DIALOGUE_10831 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10832 " " + IDS_DIALOGUE_10833 " " + IDS_DIALOGUE_10834 " " + IDS_DIALOGUE_10835 " " + IDS_DIALOGUE_10836 " " + IDS_DIALOGUE_10837 " " + IDS_DIALOGUE_10838 " " + IDS_DIALOGUE_10839 " " + IDS_DIALOGUE_10840 " " + IDS_DIALOGUE_10841 " " + IDS_DIALOGUE_10842 " " + IDS_DIALOGUE_10844 " " + IDS_DIALOGUE_10845 " " + IDS_DIALOGUE_10846 " " + IDS_DIALOGUE_10847 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10848 " " + IDS_DIALOGUE_10849 " " + IDS_DIALOGUE_10850 " " + IDS_DIALOGUE_10851 " " + IDS_DIALOGUE_10852 " " + IDS_DIALOGUE_10853 " " + IDS_DIALOGUE_10854 " " + IDS_DIALOGUE_10855 " " + IDS_DIALOGUE_10858 " " + IDS_DIALOGUE_10859 " " + IDS_DIALOGUE_10860 " " + IDS_DIALOGUE_10861 " " + IDS_DIALOGUE_10862 " " + IDS_DIALOGUE_10863 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10864 " " + IDS_DIALOGUE_10865 " " + IDS_DIALOGUE_10866 " " + IDS_DIALOGUE_10867 " " + IDS_DIALOGUE_10868 " " + IDS_DIALOGUE_10869 " " + IDS_DIALOGUE_10870 " " + IDS_DIALOGUE_10871 " " + IDS_DIALOGUE_10872 " " + IDS_DIALOGUE_10873 " " + IDS_DIALOGUE_10874 " " + IDS_DIALOGUE_10875 " " + IDS_DIALOGUE_10876 " " + IDS_DIALOGUE_10877 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10889 " " + IDS_DIALOGUE_10890 " " + IDS_DIALOGUE_10891 " " + IDS_DIALOGUE_10892 " " + IDS_DIALOGUE_10893 " " + IDS_DIALOGUE_10894 " " + IDS_DIALOGUE_10895 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10896 " " + IDS_DIALOGUE_10897 " " + IDS_DIALOGUE_10899 "(" + IDS_DIALOGUE_10900 " " + IDS_DIALOGUE_10901 " " + IDS_DIALOGUE_10902 " " + IDS_DIALOGUE_10903 " " + IDS_DIALOGUE_10904 " " + IDS_DIALOGUE_10905 " " + IDS_DIALOGUE_10906 " " + IDS_DIALOGUE_10907 " " + IDS_DIALOGUE_10908 " " + IDS_DIALOGUE_10909 " " + IDS_DIALOGUE_10910 " " + IDS_DIALOGUE_10911 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10912 " " + IDS_DIALOGUE_10913 " " + IDS_DIALOGUE_10914 " " + IDS_DIALOGUE_10915 " " + IDS_DIALOGUE_10916 " " + IDS_DIALOGUE_10917 " " + IDS_DIALOGUE_10918 " " + IDS_DIALOGUE_10919 " " + IDS_DIALOGUE_10920 " " + IDS_DIALOGUE_10921 " " + IDS_DIALOGUE_10922 " " + IDS_DIALOGUE_10923 " " + IDS_DIALOGUE_10924 " " + IDS_DIALOGUE_10925 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11001 " " + IDS_DIALOGUE_11002 " " + IDS_DIALOGUE_11003 " " + IDS_DIALOGUE_11004 " " + IDS_DIALOGUE_11005 " " + IDS_DIALOGUE_11006 " " + IDS_DIALOGUE_11007 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11008 " " + IDS_DIALOGUE_11009 " " + IDS_DIALOGUE_11010 " " + IDS_DIALOGUE_11011 " " + IDS_DIALOGUE_11012 " " + IDS_DIALOGUE_11013 " " + IDS_DIALOGUE_11014 " " + IDS_DIALOGUE_11015 " " + IDS_DIALOGUE_11016 " " + IDS_DIALOGUE_11017 " " + IDS_DIALOGUE_11018 " " + IDS_DIALOGUE_11019 " " + IDS_DIALOGUE_11020 " " + IDS_DIALOGUE_11021 " " + IDS_DIALOGUE_11022 " " + IDS_DIALOGUE_11023 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11024 " " + IDS_DIALOGUE_11025 " " + IDS_DIALOGUE_11026 " " + IDS_DIALOGUE_11028 " " + IDS_DIALOGUE_11029 " " + IDS_DIALOGUE_11030 " " + IDS_DIALOGUE_11031 " " + IDS_DIALOGUE_11032 " " + IDS_DIALOGUE_11033 " " + IDS_DIALOGUE_11034 " " + IDS_DIALOGUE_11035 " " + IDS_DIALOGUE_11036 " " + IDS_DIALOGUE_11037 " " + IDS_DIALOGUE_11038 " " + IDS_DIALOGUE_11039 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11040 " " + IDS_DIALOGUE_11041 " " + IDS_DIALOGUE_11042 " " + IDS_DIALOGUE_11043 " " + IDS_DIALOGUE_11044 " " + IDS_DIALOGUE_11045 " " + IDS_DIALOGUE_11046 " " + IDS_DIALOGUE_11047 " " + IDS_DIALOGUE_11049 " " + IDS_DIALOGUE_11050 " " + IDS_DIALOGUE_11053 " " + IDS_DIALOGUE_11054 " " + IDS_DIALOGUE_11055 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11056 " " + IDS_DIALOGUE_11057 " " + IDS_DIALOGUE_11058 " " + IDS_DIALOGUE_11059 " " + IDS_DIALOGUE_11060 " " + IDS_DIALOGUE_11061 " " + IDS_DIALOGUE_11062 " " + IDS_DIALOGUE_11063 " " + IDS_DIALOGUE_11064 " " + IDS_DIALOGUE_11065 " " + IDS_DIALOGUE_11066 " " + IDS_DIALOGUE_11067 " " + IDS_DIALOGUE_11068 " " + IDS_DIALOGUE_11069 " " + IDS_DIALOGUE_11070 " " + IDS_DIALOGUE_11071 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11072 " " + IDS_DIALOGUE_11073 " " + IDS_DIALOGUE_11074 " " + IDS_DIALOGUE_11075 " " + IDS_DIALOGUE_11076 " " + IDS_DIALOGUE_11077 " " + IDS_DIALOGUE_11078 " " + IDS_DIALOGUE_11079 " " + IDS_DIALOGUE_11080 " " + IDS_DIALOGUE_11081 " " + IDS_DIALOGUE_11082 " " + IDS_DIALOGUE_11083 " " + IDS_DIALOGUE_11084 " " + IDS_DIALOGUE_11085 " " + IDS_DIALOGUE_11086 " " + IDS_DIALOGUE_11087 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11088 " " + IDS_DIALOGUE_11089 " " + IDS_DIALOGUE_11090 " " + IDS_DIALOGUE_11091 " " + IDS_DIALOGUE_11092 " " + IDS_DIALOGUE_11093 " " + IDS_DIALOGUE_11094 " " + IDS_DIALOGUE_11095 " " + IDS_DIALOGUE_11096 " " + IDS_DIALOGUE_11097 " " + IDS_DIALOGUE_11098 " " + IDS_DIALOGUE_11099 " " + IDS_DIALOGUE_11100 " " + IDS_DIALOGUE_11101 " " + IDS_DIALOGUE_11102 " " + IDS_DIALOGUE_11103 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11104 " " + IDS_DIALOGUE_11105 " " + IDS_DIALOGUE_11106 " " + IDS_DIALOGUE_11107 " " + IDS_DIALOGUE_11108 " " + IDS_DIALOGUE_11109 " " + IDS_DIALOGUE_11110 " " + IDS_DIALOGUE_11111 " " + IDS_DIALOGUE_11112 " " + IDS_DIALOGUE_11113 " " + IDS_DIALOGUE_11114 " " + IDS_DIALOGUE_11115 " " + IDS_DIALOGUE_11116 " " + IDS_DIALOGUE_11117 " " + IDS_DIALOGUE_11118 " " + IDS_DIALOGUE_11119 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11120 " " + IDS_DIALOGUE_11121 " " + IDS_DIALOGUE_11122 " " + IDS_DIALOGUE_11123 " " + IDS_DIALOGUE_11124 " " + IDS_DIALOGUE_11125 " " + IDS_DIALOGUE_11126 " " + IDS_DIALOGUE_11127 " " + IDS_DIALOGUE_11128 " " + IDS_DIALOGUE_11129 " " + IDS_DIALOGUE_11130 " " + IDS_DIALOGUE_11131 " " + IDS_DIALOGUE_11132 " " + IDS_DIALOGUE_11133 " " + IDS_DIALOGUE_11134 " " + IDS_DIALOGUE_11135 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11136 " " + IDS_DIALOGUE_11137 " " + IDS_DIALOGUE_11138 " " + IDS_DIALOGUE_11139 " " + IDS_DIALOGUE_11140 " " + IDS_DIALOGUE_11141 " " + IDS_DIALOGUE_11142 " " + IDS_DIALOGUE_11143 " " + IDS_DIALOGUE_11144 " " + IDS_DIALOGUE_11145 " " + IDS_DIALOGUE_11146 " " + IDS_DIALOGUE_11147 " " + IDS_DIALOGUE_11148 " " + IDS_DIALOGUE_11149 " " + IDS_DIALOGUE_11150 " " + IDS_DIALOGUE_11151 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11152 " " + IDS_DIALOGUE_11153 " " + IDS_DIALOGUE_11154 " " + IDS_DIALOGUE_11155 " " + IDS_DIALOGUE_11156 " " + IDS_DIALOGUE_11157 " " + IDS_DIALOGUE_11158 " " + IDS_DIALOGUE_11159 " " + IDS_DIALOGUE_11160 " " + IDS_DIALOGUE_11161 " " + IDS_DIALOGUE_11162 " " + IDS_DIALOGUE_11163 " " + IDS_DIALOGUE_11164 " " + IDS_DIALOGUE_11165 " " + IDS_DIALOGUE_11166 " " + IDS_DIALOGUE_11167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11168 " " + IDS_DIALOGUE_11169 " " + IDS_DIALOGUE_11170 " " + IDS_DIALOGUE_11171 " " + IDS_DIALOGUE_11172 " " + IDS_DIALOGUE_11173 " " + IDS_DIALOGUE_11174 " " + IDS_DIALOGUE_11175 " " + IDS_DIALOGUE_11176 " " + IDS_DIALOGUE_11177 " " + IDS_DIALOGUE_11178 " " + IDS_DIALOGUE_11179 " " + IDS_DIALOGUE_11180 " " + IDS_DIALOGUE_11181 " " + IDS_DIALOGUE_11182 " " + IDS_DIALOGUE_11183 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11184 " " + IDS_DIALOGUE_11185 " " + IDS_DIALOGUE_11186 " " + IDS_DIALOGUE_11187 " " + IDS_DIALOGUE_11188 " " + IDS_DIALOGUE_11189 " " + IDS_DIALOGUE_11190 " " + IDS_DIALOGUE_11191 " " + IDS_DIALOGUE_11192 " " + IDS_DIALOGUE_11193 " " + IDS_DIALOGUE_11194 " " + IDS_DIALOGUE_11195 " " + IDS_DIALOGUE_11196 " " + IDS_DIALOGUE_11197 " " + IDS_DIALOGUE_11198 " " + IDS_DIALOGUE_11199 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11200 " " + IDS_DIALOGUE_11201 " " + IDS_DIALOGUE_11202 " " + IDS_DIALOGUE_11203 " " + IDS_DIALOGUE_11204 " " + IDS_DIALOGUE_11205 " " + IDS_DIALOGUE_11206 " " + IDS_DIALOGUE_11207 " " + IDS_DIALOGUE_11208 " " + IDS_DIALOGUE_11209 " " + IDS_DIALOGUE_11210 " " + IDS_DIALOGUE_11211 " " + IDS_DIALOGUE_11212 " " + IDS_DIALOGUE_11213 " " + IDS_DIALOGUE_11214 " " + IDS_DIALOGUE_11215 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11216 " " + IDS_DIALOGUE_11217 " " + IDS_DIALOGUE_11218 " " + IDS_DIALOGUE_11219 " " + IDS_DIALOGUE_11220 " " + IDS_DIALOGUE_11221 " " + IDS_DIALOGUE_11222 " " + IDS_DIALOGUE_11223 " " + IDS_DIALOGUE_11224 " " + IDS_DIALOGUE_11225 " " + IDS_DIALOGUE_11226 " " + IDS_DIALOGUE_11227 " " + IDS_DIALOGUE_11228 " " + IDS_DIALOGUE_11229 " " + IDS_DIALOGUE_11230 " " + IDS_DIALOGUE_11231 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11232 " " + IDS_DIALOGUE_11233 " " + IDS_DIALOGUE_11234 " " + IDS_DIALOGUE_11235 " " + IDS_DIALOGUE_11236 " " + IDS_DIALOGUE_11237 " " + IDS_DIALOGUE_11238 " " + IDS_DIALOGUE_11239 " " + IDS_DIALOGUE_11240 " " + IDS_DIALOGUE_11241 " " + IDS_DIALOGUE_11242 " " + IDS_DIALOGUE_11243 " " + IDS_DIALOGUE_11244 " " + IDS_DIALOGUE_11245 " " + IDS_DIALOGUE_11246 " " + IDS_DIALOGUE_11247 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11248 " " + IDS_DIALOGUE_11249 " " + IDS_DIALOGUE_11250 " " + IDS_DIALOGUE_11251 " " + IDS_DIALOGUE_11252 " " + IDS_DIALOGUE_11253 " " + IDS_DIALOGUE_11254 " " + IDS_DIALOGUE_11255 " " + IDS_DIALOGUE_11256 " " + IDS_DIALOGUE_11257 " " + IDS_DIALOGUE_11258 " " + IDS_DIALOGUE_11259 " " + IDS_DIALOGUE_11260 " " + IDS_DIALOGUE_11261 " " + IDS_DIALOGUE_11262 " " + IDS_DIALOGUE_11263 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11264 " " + IDS_DIALOGUE_11265 " " + IDS_DIALOGUE_11266 " " + IDS_DIALOGUE_11267 " " + IDS_DIALOGUE_11268 " " + IDS_DIALOGUE_11269 " " + IDS_DIALOGUE_11270 " " + IDS_DIALOGUE_11271 " " + IDS_DIALOGUE_11272 " " + IDS_DIALOGUE_11273 " " + IDS_DIALOGUE_11274 " " + IDS_DIALOGUE_11275 " " + IDS_DIALOGUE_11276 " " + IDS_DIALOGUE_11277 " " + IDS_DIALOGUE_11278 " " + IDS_DIALOGUE_11279 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11280 " " + IDS_DIALOGUE_11281 " " + IDS_DIALOGUE_11282 " " + IDS_DIALOGUE_11283 " " + IDS_DIALOGUE_11284 " " + IDS_DIALOGUE_11285 " " + IDS_DIALOGUE_11286 " " + IDS_DIALOGUE_11287 " " + IDS_DIALOGUE_11288 " " + IDS_DIALOGUE_11289 " " + IDS_DIALOGUE_11290 " " + IDS_DIALOGUE_11291 " " + IDS_DIALOGUE_11292 " " + IDS_DIALOGUE_11293 " " + IDS_DIALOGUE_11294 " " + IDS_DIALOGUE_11295 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11296 " " + IDS_DIALOGUE_11297 " " + IDS_DIALOGUE_11298 " " + IDS_DIALOGUE_11299 " " + IDS_DIALOGUE_11300 " " + IDS_DIALOGUE_11301 " " + IDS_DIALOGUE_11302 " " + IDS_DIALOGUE_11303 " " + IDS_DIALOGUE_11304 " " + IDS_DIALOGUE_11305 " " + IDS_DIALOGUE_11306 " " + IDS_DIALOGUE_11307 " " + IDS_DIALOGUE_11308 " " + IDS_DIALOGUE_11309 " " + IDS_DIALOGUE_11310 " " + IDS_DIALOGUE_11311 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11312 " " + IDS_DIALOGUE_11313 " " + IDS_DIALOGUE_11314 " " + IDS_DIALOGUE_11315 " " + IDS_DIALOGUE_11316 " " + IDS_DIALOGUE_11319 " " + IDS_DIALOGUE_11320 " " + IDS_DIALOGUE_11321 " " + IDS_DIALOGUE_11322 " " + IDS_DIALOGUE_11323 " " + IDS_DIALOGUE_11324 " " + IDS_DIALOGUE_11325 " " + IDS_DIALOGUE_11326 " " + IDS_DIALOGUE_11327 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11328 " " + IDS_DIALOGUE_11329 " " + IDS_DIALOGUE_11330 " " + IDS_DIALOGUE_11331 " " + IDS_DIALOGUE_11332 " " + IDS_DIALOGUE_11333 " " + IDS_DIALOGUE_11334 " " + IDS_DIALOGUE_11335 " " + IDS_DIALOGUE_11336 " " + IDS_DIALOGUE_11337 " " + IDS_DIALOGUE_11338 " " + IDS_DIALOGUE_11339 " " + IDS_DIALOGUE_11340 " " + IDS_DIALOGUE_11341 " " + IDS_DIALOGUE_11342 " " + IDS_DIALOGUE_11343 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11344 " " + IDS_DIALOGUE_11345 " " + IDS_DIALOGUE_11346 " " + IDS_DIALOGUE_11347 " " + IDS_DIALOGUE_11348 " " + IDS_DIALOGUE_11349 " " + IDS_DIALOGUE_11350 " " + IDS_DIALOGUE_11351 " " + IDS_DIALOGUE_11352 " " + IDS_DIALOGUE_11353 " " + IDS_DIALOGUE_11354 " " + IDS_DIALOGUE_11355 " " + IDS_DIALOGUE_11356 " " + IDS_DIALOGUE_11357 " " + IDS_DIALOGUE_11358 " " + IDS_DIALOGUE_11359 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11360 " " + IDS_DIALOGUE_11361 " " + IDS_DIALOGUE_11362 " " + IDS_DIALOGUE_11363 " " + IDS_DIALOGUE_11364 " " + IDS_DIALOGUE_11365 " " + IDS_DIALOGUE_11366 " " + IDS_DIALOGUE_11367 " " + IDS_DIALOGUE_11368 " " + IDS_DIALOGUE_11369 " " + IDS_DIALOGUE_11370 " " + IDS_DIALOGUE_11371 " " + IDS_DIALOGUE_11372 " " + IDS_DIALOGUE_11373 " " + IDS_DIALOGUE_11374 " " + IDS_DIALOGUE_11375 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11376 " " + IDS_DIALOGUE_11377 " " + IDS_DIALOGUE_11378 " " + IDS_DIALOGUE_11379 " " + IDS_DIALOGUE_11380 " " + IDS_DIALOGUE_11381 " " + IDS_DIALOGUE_11382 " " + IDS_DIALOGUE_11383 " " + IDS_DIALOGUE_11384 " " + IDS_DIALOGUE_11385 " " + IDS_DIALOGUE_11387 " " + IDS_DIALOGUE_11388 " " + IDS_DIALOGUE_11389 " " + IDS_DIALOGUE_11390 " " + IDS_DIALOGUE_11391 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11392 " " + IDS_DIALOGUE_11393 " " + IDS_DIALOGUE_11394 " " + IDS_DIALOGUE_11395 " " + IDS_DIALOGUE_11396 " " + IDS_DIALOGUE_11397 " " + IDS_DIALOGUE_11398 " " + IDS_DIALOGUE_11399 " " + IDS_DIALOGUE_11400 " " + IDS_DIALOGUE_11401 " " + IDS_DIALOGUE_11402 " " + IDS_DIALOGUE_11403 " " + IDS_DIALOGUE_11404 " " + IDS_DIALOGUE_11405 " " + IDS_DIALOGUE_11406 " " + IDS_DIALOGUE_11407 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11408 " " + IDS_DIALOGUE_11409 " " + IDS_DIALOGUE_11410 " " + IDS_DIALOGUE_11411 " " + IDS_DIALOGUE_11412 " " + IDS_DIALOGUE_11413 " " + IDS_DIALOGUE_11414 " " + IDS_DIALOGUE_11415 " " + IDS_DIALOGUE_11416 " " + IDS_DIALOGUE_11417 " " + IDS_DIALOGUE_11418 " " + IDS_DIALOGUE_11419 " " + IDS_DIALOGUE_11420 " " + IDS_DIALOGUE_11421 " " + IDS_DIALOGUE_11422 " " + IDS_DIALOGUE_11423 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11424 " " + IDS_DIALOGUE_11425 " " + IDS_DIALOGUE_11426 " " + IDS_DIALOGUE_11427 " " + IDS_DIALOGUE_11428 " " + IDS_DIALOGUE_11429 " " + IDS_DIALOGUE_11430 " " + IDS_DIALOGUE_11431 " " + IDS_DIALOGUE_11432 " " + IDS_DIALOGUE_11433 " " + IDS_DIALOGUE_11434 " " + IDS_DIALOGUE_11435 " " + IDS_DIALOGUE_11436 " " + IDS_DIALOGUE_11437 " " + IDS_DIALOGUE_11438 " " + IDS_DIALOGUE_11439 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11440 " " + IDS_DIALOGUE_11441 " " + IDS_DIALOGUE_11442 " " + IDS_DIALOGUE_11443 " " + IDS_DIALOGUE_11444 " " + IDS_DIALOGUE_11445 " " + IDS_DIALOGUE_11446 " " + IDS_DIALOGUE_11447 " " + IDS_DIALOGUE_11448 " " + IDS_DIALOGUE_11449 " " + IDS_DIALOGUE_11450 " " + IDS_DIALOGUE_11451 " " + IDS_DIALOGUE_11452 " " + IDS_DIALOGUE_11453 " " + IDS_DIALOGUE_11454 " " + IDS_DIALOGUE_11455 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11456 " " + IDS_DIALOGUE_11457 " " + IDS_DIALOGUE_11458 " " + IDS_DIALOGUE_11459 " " + IDS_DIALOGUE_11460 " " + IDS_DIALOGUE_11461 " " + IDS_DIALOGUE_11462 " " + IDS_DIALOGUE_11463 " " + IDS_DIALOGUE_11464 " " + IDS_DIALOGUE_11465 " " + IDS_DIALOGUE_11466 " " + IDS_DIALOGUE_11467 " " + IDS_DIALOGUE_11468 " " + IDS_DIALOGUE_11469 " " + IDS_DIALOGUE_11470 " " + IDS_DIALOGUE_11471 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11472 " " + IDS_DIALOGUE_11473 " " + IDS_DIALOGUE_11474 " " + IDS_DIALOGUE_11475 " " + IDS_DIALOGUE_11476 " " + IDS_DIALOGUE_11477 " " + IDS_DIALOGUE_11478 " " + IDS_DIALOGUE_11479 " " + IDS_DIALOGUE_11480 " " + IDS_DIALOGUE_11481 " " + IDS_DIALOGUE_11482 " " + IDS_DIALOGUE_11483 " " + IDS_DIALOGUE_11484 " " + IDS_DIALOGUE_11485 " " + IDS_DIALOGUE_11486 " " + IDS_DIALOGUE_11487 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11488 " " + IDS_DIALOGUE_11489 " " + IDS_DIALOGUE_11490 " " + IDS_DIALOGUE_11491 " " + IDS_DIALOGUE_11492 " " + IDS_DIALOGUE_11493 " " + IDS_DIALOGUE_11494 " " + IDS_DIALOGUE_11495 " " + IDS_DIALOGUE_11496 " " + IDS_DIALOGUE_11497 " " + IDS_DIALOGUE_11498 " " + IDS_DIALOGUE_11499 " " + IDS_DIALOGUE_11500 " " + IDS_DIALOGUE_11501 " " + IDS_DIALOGUE_11502 " " + IDS_DIALOGUE_11503 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11504 " " + IDS_DIALOGUE_11505 " " + IDS_DIALOGUE_11506 " " + IDS_DIALOGUE_11507 " " + IDS_DIALOGUE_11508 " " + IDS_DIALOGUE_11509 " " + IDS_DIALOGUE_11510 " " + IDS_DIALOGUE_11511 " " + IDS_DIALOGUE_11512 " " + IDS_DIALOGUE_11513 " " + IDS_DIALOGUE_11514 " " + IDS_DIALOGUE_11515 " " + IDS_DIALOGUE_11516 " " + IDS_DIALOGUE_11517 " " + IDS_DIALOGUE_11518 " " + IDS_DIALOGUE_11519 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11520 " " + IDS_DIALOGUE_11521 " " + IDS_DIALOGUE_11522 " " + IDS_DIALOGUE_11523 " " + IDS_DIALOGUE_11524 " " + IDS_DIALOGUE_11525 " " + IDS_DIALOGUE_11526 " " + IDS_DIALOGUE_11527 " " + IDS_DIALOGUE_11528 " " + IDS_DIALOGUE_11529 " " + IDS_DIALOGUE_11530 " " + IDS_DIALOGUE_11531 " " + IDS_DIALOGUE_11532 " " + IDS_DIALOGUE_11533 " " + IDS_DIALOGUE_11534 " " + IDS_DIALOGUE_11535 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11536 " " + IDS_DIALOGUE_11537 " " + IDS_DIALOGUE_11538 " " + IDS_DIALOGUE_11539 " " + IDS_DIALOGUE_11540 " " + IDS_DIALOGUE_11541 " " + IDS_DIALOGUE_11542 " " + IDS_DIALOGUE_11543 " " + IDS_DIALOGUE_11544 " " + IDS_DIALOGUE_11545 " " + IDS_DIALOGUE_11546 " " + IDS_DIALOGUE_11547 " " + IDS_DIALOGUE_11548 " " + IDS_DIALOGUE_11549 " " + IDS_DIALOGUE_11550 " " + IDS_DIALOGUE_11551 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11552 " " + IDS_DIALOGUE_11553 " " + IDS_DIALOGUE_11554 " " + IDS_DIALOGUE_11555 " " + IDS_DIALOGUE_11556 " " + IDS_DIALOGUE_11557 " " + IDS_DIALOGUE_11558 " " + IDS_DIALOGUE_11559 " " + IDS_DIALOGUE_11560 " " + IDS_DIALOGUE_11561 " " + IDS_DIALOGUE_11562 " " + IDS_DIALOGUE_11563 " " + IDS_DIALOGUE_11564 " " + IDS_DIALOGUE_11565 " " + IDS_DIALOGUE_11566 " " + IDS_DIALOGUE_11567 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11568 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11600 " " + IDS_DIALOGUE_11601 " " + IDS_DIALOGUE_11602 " " + IDS_DIALOGUE_11603 " " + IDS_DIALOGUE_11604 " " + IDS_DIALOGUE_11605 " " + IDS_DIALOGUE_11606 " " + IDS_DIALOGUE_11607 " " + IDS_DIALOGUE_11608 " " + IDS_DIALOGUE_11609 " " + IDS_DIALOGUE_11610 " " + IDS_DIALOGUE_11611 " " + IDS_DIALOGUE_11612 " " + IDS_DIALOGUE_11613 " " + IDS_DIALOGUE_11614 " " + IDS_DIALOGUE_11615 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11616 " " + IDS_DIALOGUE_11617 " " + IDS_DIALOGUE_11618 " " + IDS_DIALOGUE_11619 " " + IDS_DIALOGUE_11620 " " + IDS_DIALOGUE_11621 " " + IDS_DIALOGUE_11622 " " + IDS_DIALOGUE_11623 " " + IDS_DIALOGUE_11624 " " + IDS_DIALOGUE_11625 " " + IDS_DIALOGUE_11626 " " + IDS_DIALOGUE_11627 " " + IDS_DIALOGUE_11628 " " + IDS_DIALOGUE_11629 " " + IDS_DIALOGUE_11630 " " + IDS_DIALOGUE_11631 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11632 " " + IDS_DIALOGUE_11633 " " + IDS_DIALOGUE_11634 " " + IDS_DIALOGUE_11635 " " + IDS_DIALOGUE_11636 " " + IDS_DIALOGUE_11637 " " + IDS_DIALOGUE_11638 " " + IDS_DIALOGUE_11639 " " + IDS_DIALOGUE_11640 " " + IDS_DIALOGUE_11641 " " + IDS_DIALOGUE_11642 " " + IDS_DIALOGUE_11643 " " + IDS_DIALOGUE_11644 " " + IDS_DIALOGUE_11645 " " + IDS_DIALOGUE_11646 " " + IDS_DIALOGUE_11647 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11648 " " + IDS_DIALOGUE_11649 " " + IDS_DIALOGUE_11650 " " + IDS_DIALOGUE_11651 " " + IDS_DIALOGUE_11652 " " + IDS_DIALOGUE_11653 " " + IDS_DIALOGUE_11654 " " + IDS_DIALOGUE_11655 " " + IDS_DIALOGUE_11656 " " + IDS_DIALOGUE_11657 " " + IDS_DIALOGUE_11658 " " + IDS_DIALOGUE_11659 " " + IDS_DIALOGUE_11660 " " + IDS_DIALOGUE_11661 " " + IDS_DIALOGUE_11662 " " + IDS_DIALOGUE_11663 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11664 " " + IDS_DIALOGUE_11665 " " + IDS_DIALOGUE_11666 " " + IDS_DIALOGUE_11667 " " + IDS_DIALOGUE_11668 " " + IDS_DIALOGUE_11669 " " + IDS_DIALOGUE_11670 " " + IDS_DIALOGUE_11671 " " + IDS_DIALOGUE_11672 " " + IDS_DIALOGUE_11673 " " + IDS_DIALOGUE_11674 " " + IDS_DIALOGUE_11675 " " + IDS_DIALOGUE_11676 " " + IDS_DIALOGUE_11677 " " + IDS_DIALOGUE_11678 " " + IDS_DIALOGUE_11679 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11680 " " + IDS_DIALOGUE_11681 " " + IDS_DIALOGUE_11682 " " + IDS_DIALOGUE_11683 " " + IDS_DIALOGUE_11684 " " + IDS_DIALOGUE_11685 " " + IDS_DIALOGUE_11686 " " + IDS_DIALOGUE_11687 " " + IDS_DIALOGUE_11688 " " + IDS_DIALOGUE_11689 " " + IDS_DIALOGUE_11690 " " + IDS_DIALOGUE_11691 " " + IDS_DIALOGUE_11692 " " + IDS_DIALOGUE_11693 " " + IDS_DIALOGUE_11694 " " + IDS_DIALOGUE_11695 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11696 " " + IDS_DIALOGUE_11697 " " + IDS_DIALOGUE_11698 " " + IDS_DIALOGUE_11699 " " + IDS_DIALOGUE_11700 " " + IDS_DIALOGUE_11701 " " + IDS_DIALOGUE_11702 " " + IDS_DIALOGUE_11703 " " + IDS_DIALOGUE_11704 " " + IDS_DIALOGUE_11705 " " + IDS_DIALOGUE_11706 " " + IDS_DIALOGUE_11707 " " + IDS_DIALOGUE_11708 " " + IDS_DIALOGUE_11709 " " + IDS_DIALOGUE_11710 " " + IDS_DIALOGUE_11711 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11712 " " + IDS_DIALOGUE_11713 " " + IDS_DIALOGUE_11714 " " + IDS_DIALOGUE_11715 " " + IDS_DIALOGUE_11716 " " + IDS_DIALOGUE_11717 " " + IDS_DIALOGUE_11718 " " + IDS_DIALOGUE_11719 " " + IDS_DIALOGUE_11720 " " + IDS_DIALOGUE_11721 " " + IDS_DIALOGUE_11722 " " + IDS_DIALOGUE_11723 " " + IDS_DIALOGUE_11724 " " + IDS_DIALOGUE_11725 " " + IDS_DIALOGUE_11726 " " + IDS_DIALOGUE_11727 " " +END + +STRINGTABLE +BEGIN + IDS_AISOUNDS_20000 "leer" + IDS_AISOUNDS_20001 "leer" + IDS_AISOUNDS_20002 "leer" + IDS_AISOUNDS_20003 "leer" +END + +STRINGTABLE +BEGIN + IDS_INTEL_TEXT_8000 "Du hast einen Brief mit geheimen Informationen gefunden." + IDS_INTEL_TEXT_8001 "Du hast eine Rolle 35-mm-Film gefunden." + IDS_INTEL_TEXT_8002 "Du hast eine wichtige Blaupause gefunden." + IDS_INTEL_TEXT_8003 "Du hast eine Aktentasche gefunden." + IDS_INTEL_TEXT_8004 "Du hast ein Dossier gefunden." + IDS_INTEL_TEXT_8005 "Du hast ein paar lose Akten gefunden." + IDS_INTEL_TEXT_8006 "Du hast einen Umschlag gefunden." + IDS_INTEL_TEXT_8007 "Du hast ein Tonband gefunden." + IDS_INTEL_TEXT_8008 "Du hast etwas Wichtiges fotografiert." + IDS_INTEL_TEXT_8009 "Du hast eine Kladde fotografiert." + IDS_INTEL_TEXT_8010 "Du hast eine Kladde fotografiert." + IDS_INTEL_TEXT_8011 "Du hast eine Notiz gefunden." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5008 "Die Aktentasche zu Hatori-san bringen." + IDS_MISSION_OBJ_5009 "Die Kreidezeichen an drei toten Briefkästen entfernen." + IDS_MISSION_OBJ_5010 "Die Gegner daran hindern, Alarm zu schlagen." + IDS_MISSION_OBJ_5011 "Sechs Seiten des UNITY-Einsatzhandbuchs suchen." + IDS_MISSION_OBJ_5012 "Hatori-san fotografieren." + IDS_MISSION_OBJ_5013 "Die gesamten vier Seiten des UNITY-Einsatzhandbuchs suchen." + IDS_MISSION_OBJ_5014 "GESCHEITERT: Das Treffen fotografieren." + IDS_MISSION_OBJ_5015 "Keinen Alarm im Garten um das Hauptgebäude herum auslösen." + IDS_MISSION_OBJ_5016 "Keine verdächtigen Geräusche in der Nähe des Fensters machen!" + IDS_MISSION_OBJ_5017 "" + IDS_MISSION_OBJ_5018 "" + IDS_MISSION_OBJ_5019 "" + IDS_MISSION_OBJ_5020 "" + IDS_MISSION_OBJ_5021 "Zwecks Anweisungen über Funk bei der Einsatzkontrolle von UNITY melden." + IDS_MISSION_OBJ_5022 "Die Jagdhütte als Operationsbasis finden und sichern." + IDS_MISSION_OBJ_5023 "Drei Sprengladungen an den Pfeilern der Hauptbrücke befestigen." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5024 "Die Fernmelde-Relaisstation suchen." + IDS_MISSION_OBJ_5025 "Das Kraftwerk suchen." + IDS_MISSION_OBJ_5026 "Die Hauptbrücke meiden, die zum Stützpunkt führt." + IDS_MISSION_OBJ_5027 "Die sowjetischen Verluste um jeden Preis minimieren." + IDS_MISSION_OBJ_5028 "Das Kraftwerk sabotieren." + IDS_MISSION_OBJ_5029 "Sprengladung am Fuß des Funkturms anbringen. " + IDS_MISSION_OBJ_5030 "Sprengstoff an der Umspannstation anbringen." + IDS_MISSION_OBJ_5031 "Den Piloten aus den Händen der sowjetischen Häscher retten und ihn aus der Anlage hinausbegleiten." + IDS_MISSION_OBJ_5032 "Zur Jagdhütte zurückkehren und warten, bis es dunkel wird." + IDS_MISSION_OBJ_5033 "Näheres über die aufgedeckte Verschwörung herausfinden." + IDS_MISSION_OBJ_5034 "Versuchen, Sowjetsoldaten daran zu hindern, Verstärkung zu rufen." + IDS_MISSION_OBJ_5035 "Das Zentralarchiv suchen." + IDS_MISSION_OBJ_5036 "Sprengladung am Außentor anbringen." + IDS_MISSION_OBJ_5037 "Sprengladung am Treibstoffdepot in der Fahrbereitschaft anbringen." + IDS_MISSION_OBJ_5038 "Sprengladung am Propangastank bei der Offiziersmesse anbringen." + IDS_MISSION_OBJ_5039 "Informationen über Projekt Omega sammeln. " +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5040 "Zurück zum Flugzeug gehen." + IDS_MISSION_OBJ_5041 "Nikolaj Schukov liquidieren." + IDS_MISSION_OBJ_5042 "Zum Einsatzpunkt zurückkehren." + IDS_MISSION_OBJ_5043 "Beide Seiten des sowjetischen Militäreinsatzberichts suchen." + IDS_MISSION_OBJ_5044 "In die Anlage eindringen." + IDS_MISSION_OBJ_5045 "Alle vier Kostenberichte sammeln." + IDS_MISSION_OBJ_5046 "Abhörwanzen in vier Telefonen des Hauptarchivgebäudes anbringen." + IDS_MISSION_OBJ_5047 "Drei Ziele fotografieren. (TBD)" + IDS_MISSION_OBJ_5048 "H.A.R.M. davon abhalten, Ihr Flugzeug in die Luft zu jagen." + IDS_MISSION_OBJ_5049 "Dem Piloten helfen, nüchtern zu werden." + IDS_MISSION_OBJ_5050 "Die andere Seite des sowjetischen Militäreinsatzberichts suchen." + IDS_MISSION_OBJ_5051 "Streng geheimes Dokument aus dem Tresor im alten Archivgebäude beschaffen." + IDS_MISSION_OBJ_5052 "Vorräte aus dem Schuppen beschaffen." + IDS_MISSION_OBJ_5053 "Das Hauptarchivgebäude infiltrieren." + IDS_MISSION_OBJ_5054 "Den Piloten aus den Händen von H.A.R.M. retten." + IDS_MISSION_OBJ_5055 "Weitere Informationen über ANATOLI beschaffen." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5056 "" + IDS_MISSION_OBJ_5057 "" + IDS_MISSION_OBJ_5058 "" + IDS_MISSION_OBJ_5059 "" + IDS_MISSION_OBJ_5060 "" + IDS_MISSION_OBJ_5061 "Informationen über Projekt Omega suchen." + IDS_MISSION_OBJ_5062 "Mit den Beweisen fliehen." + IDS_MISSION_OBJ_5063 "Isako besiegen." + IDS_MISSION_OBJ_5064 "Ninja-Angreifer abwehren." + IDS_MISSION_OBJ_5065 "Alle Stimmaufnahmen suchen." + IDS_MISSION_OBJ_5066 "Die Korrespondenz zwischen Goodman und Mr. Smith suchen." + IDS_MISSION_OBJ_5067 "" + IDS_MISSION_OBJ_5068 "" + IDS_MISSION_OBJ_5069 "" + IDS_MISSION_OBJ_5070 "" + IDS_MISSION_OBJ_5071 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5072 "" + IDS_MISSION_OBJ_5073 "" + IDS_MISSION_OBJ_5074 "" + IDS_MISSION_OBJ_5075 "" + IDS_MISSION_OBJ_5076 "" + IDS_MISSION_OBJ_5077 "" + IDS_MISSION_OBJ_5078 "" + IDS_MISSION_OBJ_5079 "" + IDS_MISSION_OBJ_5080 "" + IDS_MISSION_OBJ_5081 "Mit Kamal treffen. Darauf achten, keine Unschuldigen oder Polizeipatrouillen in diesem Bereich zu verletzen." + IDS_MISSION_OBJ_5082 "Zutritt zum H.A.R.M.-Hauptquartier verschaffen." + IDS_MISSION_OBJ_5083 "Wanze im Telefon in Anoop Banerjees Büro anbringen und dann die Unterhaltung erneut anhören." + IDS_MISSION_OBJ_5084 "Den Telefon-Verteilerkasten suchen." + IDS_MISSION_OBJ_5085 "Zur Eingangshalle zurückkehren, bevor deine Abwesenheit bemerkt wird." + IDS_MISSION_OBJ_5086 "Sammeln Sie die Fahndungsplakate ein, ehe Zivilpersonen sie entdecken." + IDS_MISSION_OBJ_5087 "Das Hauptquartier der Bösen Allianz infiltrieren." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5088 "Den Tresor des Managers ausräumen." + IDS_MISSION_OBJ_5089 "Sprengladung an Stelle 1 anbringen." + IDS_MISSION_OBJ_5090 "Sprengladung an Stelle 2 anbringen." + IDS_MISSION_OBJ_5091 "Sprengladung an Stelle 3 anbringen." + IDS_MISSION_OBJ_5092 "Sprengladung im geheimen Filmtresor der Bösen Allianz anbringen." + IDS_MISSION_OBJ_5093 "Aus dem Hauptquartier der Bösen Allianz fliehen." + IDS_MISSION_OBJ_5094 "Informationen über Projekt Omega aus dem Haupttresor besorgen." + IDS_MISSION_OBJ_5095 "Mit Armstrong treffen." + IDS_MISSION_OBJ_5096 "Armstrong folgen, um in Sicherheit zu gelangen." + IDS_MISSION_OBJ_5097 "Mit Armstrong flüchten." + IDS_MISSION_OBJ_5098 "Armstrong um jeden Preis beschützen." + IDS_MISSION_OBJ_5099 "Den Pantomimen-König verhaften." + IDS_MISSION_OBJ_5100 "Ziele im Hauptquartier von H.A.R.M. fotografieren (TBD)." + IDS_MISSION_OBJ_5101 "Abhörwanzen in drei Telefonen im H.A.R.M.-Hauptquartier anbringen." + IDS_MISSION_OBJ_5102 "Dokumente im Wandtresor fotografieren." + IDS_MISSION_OBJ_5103 "Beweise für Kamals Erpressung beschaffen." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5104 "Niemanden eliminieren oder die Mission ist gescheitert!" + IDS_MISSION_OBJ_5105 "Vermeiden, erwischt zu werden, sonst wirst du in die Halle zurückgebracht und musst es noch mal versuchen!" + IDS_MISSION_OBJ_5106 "Mit Armstrong sprechen." + IDS_MISSION_OBJ_5107 "Kamal suchen." + IDS_MISSION_OBJ_5108 "Das untere Stockwerk erreichen, ohne jemanden zu töten." + IDS_MISSION_OBJ_5109 "Vorräte aus einer Telefonzelle in der Nähe des Kinos abholen." + IDS_MISSION_OBJ_5110 "Nicht fangen lassen, sonst ist dieMission ist gescheitert!" + IDS_MISSION_OBJ_5111 "" + IDS_MISSION_OBJ_5112 "" + IDS_MISSION_OBJ_5113 "" + IDS_MISSION_OBJ_5114 "" + IDS_MISSION_OBJ_5115 "" + IDS_MISSION_OBJ_5116 "" + IDS_MISSION_OBJ_5117 "" + IDS_MISSION_OBJ_5118 "" + IDS_MISSION_OBJ_5119 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5120 "" + IDS_MISSION_OBJ_5121 "Informationen über Projekt Omega sammeln." + IDS_MISSION_OBJ_5122 "Lebendig entkommen." + IDS_MISSION_OBJ_5123 "Drei Seiten des medizinischen Berichts besorgen." + IDS_MISSION_OBJ_5124 "Weitere Informationen über Leutnant Anders beschaffen." + IDS_MISSION_OBJ_5125 "" + IDS_MISSION_OBJ_5126 "" + IDS_MISSION_OBJ_5127 "" + IDS_MISSION_OBJ_5128 "" + IDS_MISSION_OBJ_5129 "" + IDS_MISSION_OBJ_5130 "" + IDS_MISSION_OBJ_5131 "Zivilisten vor Supersoldaten retten." + IDS_MISSION_OBJ_5132 "Kamal beschützen." + IDS_MISSION_OBJ_5133 "Put out the fire for Crazy Harij or he'll be very angry!" + IDS_MISSION_OBJ_5134 "" + IDS_MISSION_OBJ_5135 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5136 "" + IDS_MISSION_OBJ_5137 "" + IDS_MISSION_OBJ_5138 "" + IDS_MISSION_OBJ_5139 "" + IDS_MISSION_OBJ_5140 "" + IDS_MISSION_OBJ_5141 "Dr. Schenkers Brille suchen." + IDS_MISSION_OBJ_5142 "Die Eindringlinge loswerden." + IDS_MISSION_OBJ_5143 "Dr. Schenker suchen." + IDS_MISSION_OBJ_5144 "UNITY-Personal beschützen." + IDS_MISSION_OBJ_5145 "Die vier verlegten Dokumente suchen." + IDS_MISSION_OBJ_5146 "Alle Sprengsätze entschärfen." + IDS_MISSION_OBJ_5147 "" + IDS_MISSION_OBJ_5148 "" + IDS_MISSION_OBJ_5149 "" + IDS_MISSION_OBJ_5150 "" + IDS_MISSION_OBJ_5151 "Herausfinden, wo Armstrong festgehalten wird." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5152 "Armstrong retten. Er wird in den unteren Decks in einer Supersoldat-Kapsel gefangen gehalten." + IDS_MISSION_OBJ_5153 "Einen Weg aus dem Unterwasserstützpunkt finden, bevor er implodiert." + IDS_MISSION_OBJ_5154 "Zugang zum Privatdeck des Direktors verschaffen." + IDS_MISSION_OBJ_5155 "Informationen über das supergeheime U-Boot von H.A.R.M. beschaffen." + IDS_MISSION_OBJ_5156 "Die Ausgabe von H.A.R.M.s Handbuch für Angestellte beschaffen." + IDS_MISSION_OBJ_5157 "Pierre besiegen." + IDS_MISSION_OBJ_5158 "Supercomputer-Benutzerhandbuch-Nachtrag V. 1.0 in der Supercomputerservice-Abteilung finden." + IDS_MISSION_OBJ_5159 "Anforderungsformular 207-B suchen." + IDS_MISSION_OBJ_5160 "Supercomputer-Benutzerhandbuch-Anhang V. 2.0 suchen." + IDS_MISSION_OBJ_5161 "Ventil der Speigattpumpe finden und öffnen." + IDS_MISSION_OBJ_5162 "Ein Exemplar des neuesten H.A.R.M.-Missionsberichts beschaffen." + IDS_MISSION_OBJ_5163 "Den Verbindungsgang zum Kommandodeck finden." + IDS_MISSION_OBJ_5164 "" + IDS_MISSION_OBJ_5165 "" + IDS_MISSION_OBJ_5166 "" + IDS_MISSION_OBJ_5167 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5168 "" + IDS_MISSION_OBJ_5169 "" + IDS_MISSION_OBJ_5170 "" + IDS_MISSION_OBJ_5171 "Aus der unnötig komplizierten Todesfalle entkommen." + IDS_MISSION_OBJ_5172 "Volkov besiegen." + IDS_MISSION_OBJ_5173 "Aus dem geheimen unterirdischen Versteck fliehen." + IDS_MISSION_OBJ_5174 "Isako besiegen." + IDS_MISSION_OBJ_5175 "Den neuen Public-Relations-Plan von H.A.R.M. beschaffen." + IDS_MISSION_OBJ_5176 "H.A.R.M.s Invasionsplan für Khios beschaffen." + IDS_MISSION_OBJ_5177 "Zerstören Sie den Generator." + IDS_MISSION_OBJ_5178 "Zerstören Sie Supercomputer." + IDS_MISSION_OBJ_5179 "" + IDS_MISSION_OBJ_5180 "" + IDS_MISSION_OBJ_5181 "Die Invasion der Supersoldaten aufhalten." + IDS_MISSION_OBJ_5182 "Den Leutnant der Supersoldaten besiegen." + IDS_MISSION_OBJ_5183 "Mit Armstrong im Fort treffen." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5184 "Das supergeheime H.A.R.M.-U-Boot versenken." + IDS_MISSION_OBJ_5185 "" + IDS_MISSION_OBJ_5186 "Hijack a rocket back to Earth" + IDS_MISSION_OBJ_5187 "Get to your car and escape" + IDS_MISSION_OBJ_5188 "Read the note on your windshield" + IDS_MISSION_OBJ_5189 "Survive Volkov's test" + IDS_MISSION_OBJ_5190 "Commandeer the prototype snowmobile" + IDS_MISSION_OBJ_5191 "Head north to the secret facility" + IDS_MISSION_OBJ_5192 "Get aboard the train at Outpost 3" + IDS_MISSION_OBJ_5193 "Discover Danger Danger's intentions" + IDS_MISSION_OBJ_5194 "Secure transportation to the moon" + IDS_MISSION_OBJ_5195 "Recover the launch key" + IDS_MISSION_OBJ_5196 "Retrieve Dr. Mabius" + IDS_MISSION_OBJ_5197 "Hijack a rocket back to Earth before you crash into the sun" + IDS_MISSION_OBJ_5198 "Destroy all four enemy cannons" + IDS_MISSION_OBJ_5199 "Destroy the three remaining enemy cannons" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5200 "Destroy the two remaining enemy cannons" + IDS_MISSION_OBJ_5201 "Destroy the remaining enemy cannon" + IDS_MISSION_OBJ_5202 "Defeat Il Pazzo" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4500 "" + IDS_KEY_ITEM_4501 "Schraubendreher" + IDS_KEY_ITEM_4502 "Glühbirne" + IDS_KEY_ITEM_4503 "Leere Batterien" + IDS_KEY_ITEM_4504 "Frische Batterien" + IDS_KEY_ITEM_4505 "Aktentasche" + IDS_KEY_ITEM_4506 "Treibstoffkanister" + IDS_KEY_ITEM_4507 "Sicherung" + IDS_KEY_ITEM_4508 "Schlüsselring" + IDS_KEY_ITEM_4509 "Drahtspule" + IDS_KEY_ITEM_4510 "Schraubenschlüssel" + IDS_KEY_ITEM_4511 "Türknauf" +END + +STRINGTABLE +BEGIN + IDS_GEAR_DESC_1 "Hebt Giftschaden auf, der durch Zyanidspitzengeschosse und vergiftete Armbrustpfeile verursacht wurde." + IDS_GEAR_DESC_2 "Reduziert Feuerschaden, der durch Phosphorgeschosse, heißen Dampf und andere Hitzequellen verursacht wurde." + IDS_GEAR_DESC_3 "Reduziert von Explosionen verursachten Erschütterungsschaden." + IDS_GEAR_DESC_4 "Reduziert elektrischen Schaden." + IDS_GEAR_DESC_5 "Unterwasser-Sauerstoffvorrat." + IDS_GEAR_DESC_6 "Reduziert Bewegungsgeräusche um die Hälfte." + IDS_GEAR_DESC_7 "Verhindert starken Blutverlust durch Dumdum-Geschosse." + IDS_GEAR_DESC_8 "Schützt den Träger vor den meisten Arten von Schäden." +END + +STRINGTABLE +BEGIN + IDS_MOD_1 "Schalldämpfer für automatische McAllister-Pistole.32" + IDS_MOD_2 "Kamera-Zoom" + IDS_MOD_3 "Schalldämpfer für RFA-Bolt-Action-Gewehr Serie 4" + IDS_MOD_4 "Schalldämpfer für Gordon 9-mm-SMG" + IDS_MOD_5 "Zielfernrohr für AK-47-Sturmgewehr" + IDS_MOD_6 "Zielfernrohr für Mehrzweck-Werfer" +END + +STRINGTABLE +BEGIN + IDS_MOD_7 "Zielfernrohr für Vindicator-Sportarmbrust" + IDS_MOD_8 "Zielfernrohr für Bacalov-Korrektor" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25000 "" + IDS_INTEL_25001 "UNUSED" + IDS_INTEL_25002 "Bekanntmachung: Ausgangssperre im Dorf@BEKANNTMACHUNG:\n\nHeute abend gilt eine obligatorische Ausgangssperre von 18 Uhr bis 6 Uhr. Wer sich während der Ausgangssperre im Freien aufhält, muss mit strengen Strafen rechnen. \n\nHaruko Muroi\nStellvertretender Vorsitzender\nKatakuri Ninja-Clan" + IDS_INTEL_25003 "Ninja-Clan-Memo: Patrouillen@An alle Clan-Mitglieder:\n\nWir erwarten, dass die Spionin von Osten her in das Dorf hineinkommen wird, wo die meisten Touristenattraktionen zu finden sind, es ist aber ebenso möglich, dass sie sich aus der Richtung der Wasserfälle nähert. Bitte meldet euch heute Abend pünktlich an den euch zugewiesenen Posten. Am besten esst ihr noch vor eurem Schichtbeginn, da unser Lebensmittelbudget durch den Angriff auf das Hauptquartier des Oshii-Clans im letzten Monat bereits aufgebraucht worden ist.\n\nHaruko Muroi\nStellvertretender Vorsitzender" + IDS_INTEL_25004 "UNITY-Dossier: Ninjas@Cate,\n\nInformationen über den Ninja-Clan in Inotakimura sind zwar immer noch recht spärlich, aber wir konnten die folgenden Details ermitteln:\n\n- Ninjas werden so ausgebildet, dass sie für kraftvolle Angriffe auf ihre Gegner auch größere Entfernungen überqueren können.\n\n- Sie verwenden Rauchbomben, um plötzlich zu verschwinden, und tauchen oft sehr nahe bei ihren Zielen für einen Überraschungsangriff wieder auf.\n\nIch hoffe, diese Information wird von Nutzen sein. Pass gut auf Dich auf.\n\nBruno Lawrie\nVerantwortlicher Außendienstler\nUNITY, Sondereinsatz-Division" + IDS_INTEL_25005 "UNITY-Memo: Bonus-Missionen@Agentin Archer,\n\nmanchmal bieten sich Ihnen Gelegenheiten zu Bonus-Missionen, die Sie absolvieren können, um zusätzliche Fertigkeitenpunkte zu erlangen. Sie sollten nach Gegenständen wie Notizen, Aktentaschen oder Briefen Ausschau halten.\n\nHier eine einfache freiwillige Mission zum Üben: Ich habe sechs Seiten aus dem UNITY-Handbuch überall im Gelände verstreut. Sammeln Sie alle ein, ehe Sie weitermachen.\n\nSanta,\nLeiter Gerätetechnik,\nUNITY-Spielzeugabteilung" + IDS_INTEL_25006 "UNITY-Handbuch: Suchen@SUCHEN\n\nGegner haben oft wertvolle Dinge wie Munition, Panzerung, Erste-Hilfe-Kästen oder auch wichtige Dokumente bei sich. Sie sollten gründlich durchsucht werden, indem man die Aktion-Taste gedrückt hält, bis die Fortschritts-Anzeige verschwindet. Die Opfer sollten im Schatten sein, bevor man sie durchsucht, um unnötige Aufmerksamkeit zu vermeiden.\n\nMan kann auch Aktenschränke und Papierstapel nach Hinweisen und nützlichen Geheimdienstgegenständen durchsuchen. Beim Durchsuchen werden häufig auch Bonus-Aufgaben entdeckt." + IDS_INTEL_25007 "UNITY-Handbuch: Bewusstlose Gegner@BEWUSSTLOSE GEGNER\n\nGegner, die bewusstlos gemacht wurden, etwa durch einen Taser oder Schlafgas, wachen irgendwann wieder auf. Sie können auch durch ihre Genossen wieder wachgerüttelt werden.\n\nMan kann bewusstlose Gegner entwaffnen, indem man sie durchsucht, und sie damit als Bedrohung ausschalten, solange sie sich keine Ersatzwaffe beschaffen." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25008 "UNITY-Handbuch: Aktion-Taste@AKTION-TASTE\n\nWenn man ein Objekt oder eine Figur anvisiert, mit der man interagieren kann, erscheint in der Mitte des Bildschirms ein Text, der angibt, was geschehen wird, wenn man die Aktion-Taste (Standardtaste: Rechte Maustaste) drückt. Bei gegrautem Text ist Interaktion erst möglich, wenn bestimmte Bedingungen erfüllt sind. Beispielsweise muss man eine Tür aufschließen oder einen notwendigen Inventar-Gegenstand erwerben.\n\nDie Aktion-Taste wird die aktuell ausgewählte Waffe neu laden (vorausgesetzt, sie kann neu geladen werden), wenn kein Ziel anvisiert wird." + IDS_INTEL_25009 "UNITY-Handbuch: Verstecken@VERSTECKEN\n\nImmer, wenn man ein mögliches Versteck betritt, erscheint das Versteck-Symbol in der unteren Bildschirmecke. Wenn Sie völlig reglos stehen, sind Sie sofort versteckt, das bedeutet, Gegner können Sie nur sehen, wenn sie ganz nahe rankommen. Sie bleiben versteckt, solange Sie sich im Versteck aufhalten und sich nicht schnell bewegen oder eine Waffe abfeuern.\n\nWenn Sie sich nicht verstecken können, weil ein Gegner weiß, wo Sie sind, ist das Symbol durchgestrichen." + IDS_INTEL_25010 "Geheimdienstgegenstände@GEHEIMDIENSTGEGENST.\n\nEs ist stets ratsam, überall nach wichtigen Dokumenten zu suchen. Manche enthalten lebenswichtige Informationen für Ihre aktuelle Mission. Andere können Ihnen Fertigkeitenpunkte als Belohnung geben.\n\nAufgehobene Dokumente können während einer Mission jederzeit über den 'Geheimdienst'-Bildschirm gelesen werden (Standard-Tastaturkürzel: I)." + IDS_INTEL_25011 "UNITY-Handbuch: Bereich verlassen 1@EINEN BEREICH VERLASSEN, TEIL 1\n\nWenn das Tür-Symbol erscheint, bedeutet das, dass Sie an das Ende eines Bereiches kommen. Gehen Sie weiter in Richtung Ausgang, um den Bereich zu verlassen. Tun Sie dies aber nur, wenn Sie Ihre Erkundungen beendet haben." + IDS_INTEL_25012 "UNITY-Memo: Geschenke@Agent Archer,\n\nwann immer es möglich ist, werde ich dafür sorgen, dass für Sie nützliche Ausrüstung oder Munition am Einsatzort deponiert wird. Halten Sie Ausschau nach Weihnachtspäckchen wie diesem hier.\n\nDie hier enthaltenen Münzen haben einen höheren Wert als nur den Nennwert, denn Sie können sie werfen, um Gegner abzulenken. Sie können sogar Gegner von ihren Posten weglocken, indem Sie eine Münze um eine Ecke herum oder in eine Gasse werfen.\n\nSanta" + IDS_INTEL_25013 "Erinnerung: Missionsstatus@MISSIONEN-BILDSCHIRM\n\nSehen Sie sich den Missionen-Bildschirm an (Standard-Tastaturkürzel: Tabulator). Hier werden Informationen über Ihren aktuellen Auftrag angezeigt. Hier finden Sie Ihre aktuellen Aufgaben, die Sie alle lösen müssen, um Ihre Mission zu vollenden. Optionale Aufgaben (Nebenaufgaben, die Sie durchführen können, um Bonus-Fertigkeitenpunkte zu erhalten) werden ebenfalls hier aufgelistet, zusammen mit den Parametern, die allgemeine Anleitungen oder Verhaltensmaßregeln sind. Die Verletzung der Parameter kann zum Abzug von Fertigkeitenpunkten oder sogar zum Fehlschlagen der Mission führen." + IDS_INTEL_25014 "Erinnerung: Ausrüstung-Bildschirm@AUSRÜSTUNG-BILDSCHIRM\n\nImmer wenn Sie neue Waffen, Geräte oder Munition erwerben, können Sie am Ausrüstungs-Bildschirm (Standard-Tastaturkürzel: M) Informationen über ihre Funktionen und ihren Nutzen nachlesen. Mit diesem Bildschirm können Sie auch Ausrüstung und Munition oder Funktionen von Hilfsmitteln auswählen, solange das Spiel auf Pause steht." + IDS_INTEL_25015 "Erinnerung: Fertigkeitenpunkte@FERTIGKEITENPUNKTE\n\nSie erhalten Fertigkeitenpunkte, wenn Sie bestimmte Hindernisse überwinden oder spezielle Aufgaben erfüllen. Im Spieler-Bildschirm (Standard-Tastaturkürzel: P) können Sie mit diesen Punkten Ihre Fertigkeiten verbessern. Überlegen Sie sich Ihren Spielstil genau, bevor Sie Ihre Punkte verteilen." + IDS_INTEL_25016 "Erinnerung: Gegner neutralisieren@GEGNER NEUTRALISIEREN\n\nSie können Gegner heimlich loswerden, wenn Sie leise Waffen wie den Taser, die Armbrust oder eine Pistole mit Schalldämpfer verwenden. Wenn Gegner auf Ihre Präsenz aufmerksam werden, rufen sie und schlagen Alarm." + IDS_INTEL_25017 "Erinnerung: Körper bewegen@KÖRPER BEWEGEN\n\nGegner werden alarmiert, wenn sie einen gefallenen Genossen sehen, aber mit der Taste ‚Körper bewegen‘ (Standardtaste: G) können Sie außer Gefecht gesetzte Gegenspieler aufheben und sie außer Sichtweite wieder absetzen. Wenn man einen Körper trägt, kann man weder rennen, noch eine Waffe tragen, also sollte man seine Bewegungen zeitlich sorgfältig abstimmen." + IDS_INTEL_25018 "Erinnerung: Störungen@STÖRUNGEN\n\nFeinde können die gleichen Laute hören wie Sie, also müssen Sie sich vorsichtig bewegen. Sie können schleichen (Standardtaste: Umschalttaste links), um sich leise fortzubewegen. Auch können bestimmte Oberflächen (wie Gras, Teppich oder Schnee) die Schritte dämpfen, während andere Oberflächen (wie Metall oder Keramikfliesen) Geräusche verstärken. \n\nStörungen können auch verursacht werden, wenn Sie gegen ein Windspiel stoßen oder eine Flasche umwerfen, also seien Sie vorsichtig." + IDS_INTEL_25019 "Erinnerung: Spähen@SPÄHEN\n\nSpähen Sie um Ecken (Standardtasten: Q und E), um zu sehen, was vor Ihnen liegt. Aber irgendwann bemerken die Gegner Sie, also machen Sie es kurz." + IDS_INTEL_25020 "" + IDS_INTEL_25021 "UNITY-Handbuch: Kompass@KOMPASS\n\nMit dem Kompass können Sie sich nicht nur in der Umgebung orientieren, er versorgt Sie auch mit weiteren nützlichen Informationen. Das Aufgaben-Symbol führt Sie an Orte, die für Ihre Mission sehr wichtig sind. Hin und wieder können Sie auch ein X sehen, das auf Wegpunkte oder andere wichtige Ziele deutet." + IDS_INTEL_25022 "Ninja-Clan-Memo: Cate Archer@ACHTUNG, AN ALLE CLAN-MITGLIEDER\n\nDie Ankunft von UNITY-Agentin Cate Archer ist in Kürze zu erwarten. Sie ist vermutlich bewaffnet und sehr gefährlich! Sobald sie auftaucht, ist Takashi-san unverzüglich Meldung zu machen. \n\nHaruko Muroi\nStellvertretender Vorsitzender" + IDS_INTEL_25023 "UNITY-Handbuch: Schwierigkeit@SCHWIERIGKEITSEINSTELLUNGEN\n\nDenken Sie dran, dass Sie zu jeder Zeit den Schwierigkeitsgrad Ihrer Mission ändern können, indem Sie das Optionen-Menü aufrufen und dann erst die Option ‚Spiel‘ und anschließend die gewünschte Einstellung auswählen. Die Schwierigkeitseinstellungen beeinflussen vor allem, wie viel Schaden Ihre Gegner Ihnen zufügen können. Bevor Sie also zu frustriert sind oder sich unterfordert fühlen, ändern Sie die Einstellungen, um sie an Ihre Bedürfnisse anzupassen." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4750 "" + IDS_KEY_DESC_4751 "Ein rostiger Flachkopf-Schraubendreher." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4752 "Eine 60-Watt-Glühbirne." + IDS_KEY_DESC_4753 "Schmutzige AA-Batterien. Sie scheinen leer zu sein." + IDS_KEY_DESC_4754 "Glänzende neue AA-Batterien." + IDS_KEY_DESC_4755 "Eine Aktentasche muss zu Hatori-san gebracht werden." + IDS_KEY_DESC_4756 "Dieser Treibstoff kann für das Schneemobil verwendet werden." + IDS_KEY_DESC_4757 "Diese Sicherung scheint in gutem Zustand zu sein." + IDS_KEY_DESC_4758 "Ein gewöhnlicher Schlüsselring mit verschiedenen Schlüsseln." + IDS_KEY_DESC_4759 "Eine Spule Kupferdraht für Elektroarbeiten." + IDS_KEY_DESC_4760 "Ein schwerer Schraubenschlüssel. Er hilft, wenn man etwas nicht mit bloßen Händen schafft." + IDS_KEY_DESC_4761 "Ein einzelner Türknauf. Er könnte nützlich sein, um einen fehlenden oder kaputten Türknauf zu ersetzen." + IDS_KEY_DESC_4762 "Der Klöppel einer Windharfe." + IDS_KEY_DESC_4763 "Ein leerer Eimer. Sieht aus, als könnte er eine Menge Wasser fassen." + IDS_KEY_DESC_4764 "Der Griff eines Wasserhahns." + IDS_KEY_DESC_4765 "Supercomputer-Benutzerhandbuch V. 1.0. Enthält Eingabeprozeduren für den Supercomputer." + IDS_KEY_DESC_4766 "Dieses Anforderungsformular 207-B wurde ausgefüllt, um das Supercomputer-Benutzerhandbuch zu anzufordern." + IDS_KEY_DESC_4767 "Supercomputer-Benutzerhandbuch-Anhang V. 2.0. Enthält aktualisierte Eingabeprozedur für den Supercomputer." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4512 "Windharfen-Klöppel" + IDS_KEY_ITEM_4513 "Eimer" + IDS_KEY_ITEM_4514 "Wasserhahngriff" + IDS_KEY_ITEM_4515 "Supercomputer-Benutzerhandbuch V. 1.0" + IDS_KEY_ITEM_4516 "Anforderungsformular 207-B" + IDS_KEY_ITEM_4517 "Supercomputer-Handbuch V.2.0" + IDS_KEY_ITEM_4518 "H.A.R.M.-ID-Anstecker" + IDS_KEY_ITEM_4519 "Computer-Vakuumschlauch" + IDS_KEY_ITEM_4520 "Zuckertüte" + IDS_KEY_ITEM_4521 "Computer-Überbrückungsgerät" + IDS_KEY_ITEM_4522 "M-9-Passwort: Piroschki" + IDS_KEY_ITEM_4523 "M-9-Band 689: Projekt Omega" + IDS_KEY_ITEM_4524 "Rupien" + IDS_KEY_ITEM_4525 "Schlüssel für Schneemobil" + IDS_KEY_ITEM_4526 "DATENVERARBEITUNGSANLAGE M-9" + IDS_KEY_ITEM_4527 "M-9-Sicherheitscode" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5500 "" + IDS_COOP_MISSION_OBJ_5501 + "Balaji Malpani suchen und fotografieren. Sein Apartment wäre ein guter Ausgangspunkt." + IDS_COOP_MISSION_OBJ_5502 + "Zur Abholstelle im Café nicht weit von Balajis Apartment begeben." + IDS_COOP_MISSION_OBJ_5503 + "Das Team in der UNITY-Blockhütte treffen und das Hauptquartier zwecks letzter Anweisungen anfunken." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5504 + "Computer durch Infiltrieren der Anlage und Anbringen von 4 Sprengladungen ausschalten. " + IDS_COOP_MISSION_OBJ_5505 + "Computer durch Anbringen von Sprengladungen ausschalten. 3 Ziele sind noch übrig." + IDS_COOP_MISSION_OBJ_5506 + "Computer durch Anbringen von Sprengladungen ausschalten. 2 Ziele sind noch übrig." + IDS_COOP_MISSION_OBJ_5507 + "Computer durch Anbringen von Sprengladungen ausschalten. 1 Ziel ist noch übrig." + IDS_COOP_MISSION_OBJ_5508 + "Weitere Daten über das Projekt Supersoldat sammeln." + IDS_COOP_MISSION_OBJ_5509 + "Zur UNITY-Blockhütte zurückkehren und zwecks Abholung das Hauptquartier anfunken." + IDS_COOP_MISSION_OBJ_5510 + "Cate suchen. Ihr letzter bekannter Aufenthaltsort war in der Nähe des Wasserfalls vor dem Dorf." + IDS_COOP_MISSION_OBJ_5511 "Mit Cate zur Abholstelle zurückkehren." + IDS_COOP_MISSION_OBJ_5512 + "Generator suchen und den Strom zu allen Türen und Toren des Bereichs abschalten." + IDS_COOP_MISSION_OBJ_5513 + "Nach einem Ersatzschlüsselbund oder Dietrich Ausschau halten, um Zutritt zu Balajis Apartment zu erlangen." + IDS_COOP_MISSION_OBJ_5514 + "Finden Sie einen guten Aussichtspunkt, von dem aus Sie Balaji im Apartment seiner Geliebten fotografieren können." + IDS_COOP_MISSION_OBJ_5515 "" + IDS_COOP_MISSION_OBJ_5516 "Armstrong suchen und retten." + IDS_COOP_MISSION_OBJ_5517 + "Informationen darüber suchen, wohin Armstrong von H.A.R.M. gebracht wird." + IDS_COOP_MISSION_OBJ_5518 + "Nach passenden Zielen suchen und 6 Sprengladungen anbringen. " + IDS_COOP_MISSION_OBJ_5519 + "Nach passenden Zielen suchen und 5 Sprengladungen anbringen. " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25024 "UNITY-Handbuch: Speichern@SPEICHERN\n\nDenken Sie daran, von Zeit zu Zeit Ihren Fortschritt abzuspeichern, indem Sie entweder im System-Menü die Option ‚Spiel speichern‘ anklicken oder die Schnellspeichertaste verwenden (F6). Ihr Fortschritt wird ebenfalls immer dann automatisch gespeichert, wenn Sie ein neues Gebiet betreten, sodass Sie, falls notwendig, die Option haben, das Level noch einmal von vorn zu starten." + IDS_INTEL_25025 "UNITY-Handbuch: Ablenkungen@ABLENKUNGEN\n\nEine der effektivsten Möglichkeiten, sich an feindlichen Agenten vorbeizuschleichen, besteht darin, sie abzulenken. Sie können beispielsweise eine Münze in eine dunkle Gasse werfen, um Wachen von ihren Posten wegzulocken. Falls die Gefahr durch einen Eindringling ihre Aufmerksamkeit nicht weckt, so wird das unverwechselbare Geklimper von Münzen auf dem Boden es bestimmt schaffen. Wenn Sie keine Münze haben, können Sie immer noch mit Ihrer Armbrust improvisieren. Machen Sie aber nicht zu viel Lärm, sonst werden Ihre Gegner noch auf Sie aufmerksam." + IDS_INTEL_25026 "Ninja-Clan-Memo: Treffen verlegt@WICHTIG! DRINGENDE KENNTNISNAHME!\n\nAuf Drängen des Direktors wurde das Treffen heute Abend ins Hauptgebäude verlegt. Um die Verwirrung so gering wie möglich zu halten, bitte vor Dienstantritt erst die revidierte Wachposten-Übersicht lesen. Wenn ihr in unbekanntem Gebiet patrouilliert, stellt sicher, dass ihr wisst, wo sich die nächstgelegenen Toiletten befinden.\n\nHaruko Muroi\nStellvertretender Vorsitzender" + IDS_INTEL_25027 "UNUSED" + IDS_INTEL_25028 "UNUSED" + IDS_INTEL_25029 "UNUSED" + IDS_INTEL_25030 "KARTE: Anwesen@" + IDS_INTEL_25031 "Notiz von Hatori-san: Instruktionen@Agentin Archer,\n\nich habe Ihnen Instruktionen hinterlassen, wie und wo ich zu erreichen bin. Aus Sicherheitsgründen habe ich vier verschlüsselte Notizen in der Umgegend verteilt, die jede einen Teil der Nachricht enthalten. Auf diese Weise ist meine Sicherheit nicht gefährdet, sollte eine der Notizen abgefangen und entschlüsselt werden.\n\nDarüber hinaus habe ich ein Geschenk für Sie bei einem Automaten hinterlegt.\n\nIsamu Hatori" + IDS_INTEL_25032 "Notiz von Hatori-san: Rendezvous@Wir treffen uns im Süßwarenladen an der Westseite des Viertels. Halten Sie nach dem Schild mit dem Kranich Ausschau." + IDS_INTEL_25033 "Notiz von Hatori-san: Roter Briefkasten@Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer speziellen Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer rote Briefkasten sollte offen sein." + IDS_INTEL_25034 "Notiz von Hatori-san: Grauer Briefkasten@Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer bestimmten Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer graue Briefkasten sollte geschlossen sein." + IDS_INTEL_25035 "Notiz von Hatori-san: Blauer Briefkasten@Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer speziellen Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer blaue Briefkasten sollte offen sein." + IDS_INTEL_25036 "Ninja-Clan-Memo: Beschwerden@An alle Clan-Mitglieder:\n\nMir ist zu Ohren gekommen, dass einige von euch unzufrieden mit unserem aktuellen Auftrag sind. Mir ist klar, dass der Direktor kein besonders angenehmer Arbeitgeber ist, aber vergesst nicht, dass Isako-san in seiner Ehrenschuld steht. Ich appelliere an euch, persönlichen Groll im Interesse des Clans zurückzustellen.\n\nSolltet ihr Probleme haben, mit eurer Abneigung fertig zu werden, wird Obaba euch für eine Beratung zur Verfügung stehen, sobald sie ihre letzte Ladung Gift fertig gestellt hat.\n\nMikiko Shena\nMoraloffizierin " + IDS_INTEL_25037 "Notiz: Zustellung einer Aktentasche@Agentin Archer\n\nBitte bringen Sie diese Aktentasche so schnell es sich einrichten lässt zu Hatori-san. Sie enthält wichtige Informationen für seinen nächsten Auftrag.\n\nSanta" + IDS_INTEL_25038 "UNUSED" + IDS_INTEL_25039 "Agenten-Handbuch@AGENTENTRAINING-HANDBUCH" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25040 "" + IDS_INTEL_25041 "Brief von Isako: Seite 1@An: Hideko Sato\nVon: Isako, Anführer des Katakuri Ninja-Clans\n\nIch bin für Ihre Sorge sehr dankbar, sehe mich aber nicht in der Lage, Ihr großzügiges Angebot anzunehmen. Wie Sie wissen, stehe ich bei dem Direktor in einer Ehrenschuld. Ich sehe mich daher völlig außerstande, bei seiner Ermordung einfach zuzusehen, auch wenn sein Tod mich befreien würde. Einen solchen Verrat könnte ich mit meinem Gewissen nicht vereinbaren." + IDS_INTEL_25042 "Brief von Isako: Seite 2@Vielleicht können Sie meine Beweggründe eher nachvollziehen, wenn Sie die Umstände meiner Verpflichtung verstehen. Nachdem meine Eltern ermordet wurden, las mich eine alte Frau in den Straßen von Kioto auf. Ihre angegriffene Gesundheit machte es ihr unmöglich, für mich zu sorgen, aber sie konnte ihre Tochter davon überzeugen, mich aufzunehmen und auszubilden. Sie war damals die Anführerin des Sakuragaoka-Ninja-Clans." + IDS_INTEL_25043 "Brief von Isako: Seite 3@Als ich 14 Jahre alt wurde, erhielt ich meinen ersten Auftrag: Ich sollte einen gierigen Händler ermorden, der Mädchen aus ihren Familien raubte, um sie als Prostituierte in seinen Spielhöllen arbeiten zu lassen. Es war eine leichte Aufgabe, aber ich wurde gefangen genommen, bevor ich ihn töten konnte, verraten von demselben Mann, der den Mord in Auftrag gegeben hatte. Er hatte uns ausgetrickst, sodass er mich aufhalten und die Gunst seines Meisters erlangen konnte." + IDS_INTEL_25044 "Brief von Isako: Seite 4@Bevor der Händler mich töten lassen konnte, griff sein europäischer Freund ein und bat darum, mich zu verschonen, damit ich für ihn arbeiten konnte. Der Händler stimmte zu und der Direktor, denn er war dieser Freund, wurde mein neuer Meister. Sie sehen also, auch wenn es mich sehr betrübt, ich schulde diesem Mann mein Leben und muss ihm seine Großzügigkeit zurückzahlen, egal wie egoistisch sie auch begründet gewesen sein mag. Ich danke Ihnen jedoch sehr für Ihr Wohlwollen.\n\nIsako" + IDS_INTEL_25045 "Agenten-Handbuch@AGENTENTRAINING-HANDBUCH" + IDS_INTEL_25046 "Notiz von Hatori-san: Entschuldigung@Agentin Archer,\n\nDurch vermehrte Ninja-Aktivitäten kann ich mich nicht länger in diesem Gebiet aufhalten. Bitte begeben Sie sich zurück zur Brücke, wo Yamata-san auf Ihre Rückkehr wartet.\n\nSeien Sie äußerst vorsichtig. Ich habe den Clan noch nie so entschlossen gesehen.\n\nIsamu Hatori" + IDS_INTEL_25047 "UNITY-Memo: Mit Leuten sprechen@Agentin Archer\n\nSprechen Sie immer mit Leuten, die als Freunde identifiziert sind, um herauszufinden, ob sie nützliche Ratschläge oder Informationen haben. Sie müssen sie möglicherweise einige Male ansprechen, um alles zu hören, was sie zu sagen haben.\n\nSanta" + IDS_INTEL_25048 "Brief: Der Direktor@Lieber Mr. Jones,\n\nich habe einige Informationen über diesen geheimnisvollen Engländer gesammelt. Laut den örtlichen Quellen hat er das Fujioka-Anwesen vor mehr als zehn Jahren erworben. Man hat ihn sagen hören, dass der Grund, warum er nach Japan gekommen ist, die Entfernung zu England sei, obwohl niemand zu wissen scheint, warum das für ihn so wichtig sein sollte. Ich werde weiter nachforschen.\n\nIsamu Hatori" + IDS_INTEL_25049 "Brief: Isakos Geburtstag@Meine liebe Isako,\n\nich weiß, dass ich nicht immer der perfekte Mentor war und dass du mir mehr aus Pflichtgefühl dienst als aus echter Loyalität. Ich kann nicht behaupten, dass ich es dir sehr verdenke. Ich hoffe jedoch, dass du verstehen kannst, wie wichtig du mir bist.\n\nEhrenhaftigkeit und Kompetenz sind bei den arroganten, gesetzestreuen Heuchlern, die ich zu terrorisieren geschworen habe, schon selten genug. In unserem Geschäft gibt es sie schon fast nicht mehr.\n\nHerzlichen Glückwunsch zum Geburtstag.\n\nDer Direktor" + IDS_INTEL_25050 "Notiz: Isako und der Direktor@Ehrenwerter Stellvertretender Direktor,\n\nletzte Nacht hatte ich Wachdienst beim Haupthaus. Als ich am Dach entlang patrouillierte, konnte ich durch ein offenes Fenster Gelächter hören. Der Direktor war gerade dabei, seinen Gästen die manipulativen Spielchen zu erklären, die er spielen muss, um seine loyale Ninja-Dienerin zu besänftigen. Er sagte, dass Isako wie ein Hund durch gelegentliche Demonstration von elterlicher Wärme leicht beeinflusst werden könne. Sie MÜSSEN es ihr sagen! Der Mann ist unerträglich.\n\nMasayo" + IDS_INTEL_25051 "Notiz: Kreidezeichen@Agentin Archer,\n\nHatori-san informierte uns, dass er einen Ninja gesehen hat, der vor drei Gebäuden in diesem Gebiet Kreidezeichen anbrachte. Wir gehen davon aus, dass diese Zeichen Signale für Agenten sind, die wertvolle Gegenstände oder Informationen hinterlassen.\n\nBitte versuchen Sie, diese Zeichen zu finden und zu entfernen, damit wir die Lieferungen an Orte unserer Wahl umleiten können.\n\nSanta" + IDS_INTEL_25052 "Notiz: Geduld@Masayo-san\n\nich verstehe und teile Ihre Unzufriedenheit, aber wir müssen Geduld haben. Isako-sans Ehrenkodex geht sehr weit. Reines Hörensagen wird sie nicht überzeugen, davon abzulassen. Ich weiß es aus Erfahrung. Er wird sich eines Tages ihr gegenüber selbst verraten. Ich kann nur dafür sorgen, dass er immer genügend Sake zur Verfügung hat, damit seine Zunge gelöst bleibt.\n\nHaruko Muroi\nStellvertretender Vorsitzender" + IDS_INTEL_25053 "Notiz von Hatori-san: Vorsicht@Agentin Archer,\n\nwenn Sie das Zielgebiet erreichen, machen Sie nicht zu viel Lärm! Wenn Sie eine Störung verursachen, haben Sie vielleicht keine Möglichkeit mehr, den Direktor zu fotografieren. Es wäre eine Schande, den Fertigkeitenpunkt nur aufgrund von Unbesonnenheit nicht zu erhalten.\n\nIsamu Hatori" + IDS_INTEL_25054 "UNITY-Memo: Mehrzweck-Werfer@Agentin Archer,\n\nder CT-180 Mehrzweck-Werfer ist eine unserer vielseitigsten Waffen. Seine Standard-Munition ist ein Miniatur-Peilsender, der die Position eines Ziels auf Ihrem Kompass anzeigt. Der Pfeil ist so leicht, dass Gegner es nicht bemerken, wenn sie davon getroffen wurden. \n\nSanta" + IDS_INTEL_25055 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25056 "UNUSED" + IDS_INTEL_25057 "UNUSED" + IDS_INTEL_25058 "UNUSED" + IDS_INTEL_25059 "UNUSED" + IDS_INTEL_25060 "" + IDS_INTEL_25061 "Ninja-Clan-Memo: Alarm@Alle Clan-Mitglieder müssen äußerst wachsam sein! Die Spionin ist immer noch frei! Stellt Straßenblockaden an den östlichen und westlichen Eingängen auf!\n\nSie darf nicht entkommen!\n\nHaruko Muroi\nStellvertretender Vorsitzender" + IDS_INTEL_25062 "Ninja-Clan-Memo: Die Spionin@ACHTUNG, AN ALLE CLAN-MITGLIEDER\n\nDie Spionin soll ehrenvoll und schnell ausgeschaltet werden. Der Direktor und sein seelenloser Lakai sollen keine Befriedigung ob ihrer Eliminierung verspüren.\n\nIsako" + IDS_INTEL_25063 "Notiz: Emiko zu spät@Emiko,\n\nwo bist du? Es wurde Alarm gegeben und jeder muss sich an seinem Posten melden. Wenn du diese Notiz bekommst, dann beeil dich, bevor Isako-san bemerkt, dass du fehlst!\n\nYukiko" + IDS_INTEL_25064 "Agenten-Handbuch@AGENTENTRAINING-HANDBUCH" + IDS_INTEL_25065 "Ninja-Clan-Memo: Cate Archer@ACHTUNG, AN ALLE CLAN-MITGLIEDER\n\nDie Zielperson der heutigen Operation ist die britische Topagentin Cate Archer. Unterschätzt sie nicht.\n\nAch ja, und lasst sie schön leiden.\n\nDer Direktor" + IDS_INTEL_25066 "UNUSED" + IDS_INTEL_25067 "UNUSED" + IDS_INTEL_25068 "UNUSED" + IDS_INTEL_25069 "" + IDS_INTEL_25070 "Ninja-Clan-Memo: Bestrafung mit Gedichtvortrag@ACHTUNG, AN ALLE CLAN-MITGLIEDER\n\nDer Direktor hat angeordnet, dass, sollte die Spionin entkommen, der gesamte Clan zur Strafe einer Gedicht-Rezitation beiwohnen muss, und zwar mit ausgewählten Gedichten aus den gesammelten Werken seiner Mutter, einschließlich ihres Epos’ " + IDS_INTEL_25071 "Ninja-Clan-Memo: Party-Absage@ACHTUNG, AN ALLE CLAN-MITGLIEDER\n\nDurch den heutigen Notfall wird Mikiko-sans Geburtstagsfeier auf morgen Abend verschoben.\n\nHaruko Muroi\nStellervertretender Vorsitzender" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25072 "UNUSED" + IDS_INTEL_25073 "UNUSED" + IDS_INTEL_25074 "UNUSED" + IDS_INTEL_25075 "UNUSED" + IDS_INTEL_25076 "UNUSED" + IDS_INTEL_25077 "UNUSED" + IDS_INTEL_25078 "UNUSED" + IDS_INTEL_25079 "UNUSED" + IDS_INTEL_25080 "" + IDS_INTEL_25081 "UNITY-Handbuch: Bereich verlassen 2@EINEN BEREICH VERLASSEN, TEIL 2\n\nEin Tür-Symbol mit einem Pfeil mit zwei Spitzen bedeutet, dass Sie wieder in den Bereich zurückkehren können, auch wenn Sie ihn schon verlassen haben. Hin und wieder werden Sie zwischen verschiedenen Bereichen hin- und herpendeln müssen, um Hindernisse zu überwinden oder bestimmte Aufgaben zu erfüllen." + IDS_INTEL_25082 "KARTE: Stützpunktgebiet@" + IDS_INTEL_25083 "Sowjetisches Memo: Ertrinken@An: Gesamtes Personal\nVon: Rekrutierungs- und Personalbüro\n\nDie Produktivität unserer großartigen Anlage hat durch den unglückseligen, vermutlich durch Unfall eingetretenen Tod durch Ertrinken der Genossen Semljanoj und Alexej in der letzten Woche stark gelitten. Den Patrouillen wird hiermit bis auf weiteres verboten, Abkürzungen über den zugefrorenen See zu nehmen.\n\nSie werden beobachtet." + IDS_INTEL_25084 "UNUSED" + IDS_INTEL_25085 "UNITY-Memo: Schweißgerät@Agent Archer,\n\nich habe Ihr Haarspray um eine Kleinigkeit ergänzt. Sie können damit bestimmte Arten von Metallschlössern und Scharnieren abschweißen. Viel Glück!\n\nSanta" + IDS_INTEL_25086 "Sowj. Papierkram: Zigaretten-Rationen.@An: GESAMTES PERSONAL\n\nNachtrag 90/C-4 des Persönlichen Hygiene- & Fitness-Handbuchs (Band 7, Seite 3.483) legt eine tägliche Ration von 18 Zigaretten pro Soldat fest. Die Überschreitung dieser Zuteilung wird mit dem Tod bestraft, es sei denn, die Zigaretten sind gestohlen (was mit Folter und Tod bestraft wird) oder freiwillig von einem Kameraden abgegeben worden (wird mit Folter, aber nicht mit dem Tod bestraft). Das Unterschreiten der 18-Zigaretten-Ration wird ebenfalls mit dem Tod bestraft.\n\nSie werden beobachtet." + IDS_INTEL_25087 "UNITY-Memo: Missionsbesprechung@Agentin Archer,\n\nunser Geheimdienst ist der Meinung, dass es viel einfacher sein wird, in die Anlage hineinzukommen als wieder heraus. Deshalb wird Ihre erste Aufgabe darin bestehen, Fernmeldeverbindungen und Stromversorgung des Gegners zu sabotieren.\nSie werden auch Sprengladungen an einer Brücke in der Nähe Ihrer augenblicklichen Position anbringen müssen, die bei Ihrer Rückkehr gezündet werden sollen. Die Zerstörung der Brücke sollte jegliche Verfolgung unmöglich machen.\nIch habe die Position einer Jagdhütte markiert, in der ich einige zusätzliche Vorräte für Sie hinterlassen habe, inklusive eines Scharfschützengewehrs, das Ihnen gelegen kommen sollte.\n\nSanta." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25088 "UNITY-Memo: Mehrzweck-Werfer@Agentin Archer,\n\nbeigefügt ist ein Standard-CT-180-Mehrzweck-Werfer mit 10 wiederverwendbaren Betäubungspfeilen. Jeder Pfeil enthält ein starkes Sedativum, das ein sofortiges Einschlafen des Ziels bewirkt. Denken Sie aber daran, dass bewusstlose Gegner auch wieder aufwachen.\n\nSie können die Taste 'Munition wechseln' (Standardtaste: F) verwenden, um zwischen der Betäubungs- und der Peilsender-Munition zu wechseln. Denken Sie daran, dass Sie auch mit Hilfe des Ausrüstung-Bildschirms die Munition wechseln können, solange das Spiel auf Pause steht.\n\nSanta" + IDS_INTEL_25089 "UNUSED" + IDS_INTEL_25090 "UNUSED" + IDS_INTEL_25091 "UNUSED" + IDS_INTEL_25092 "UNUSED" + IDS_INTEL_25093 "UNUSED" + IDS_INTEL_25094 "UNUSED" + IDS_INTEL_25095 "UNUSED" + IDS_INTEL_25096 "UNUSED" + IDS_INTEL_25097 "UNUSED" + IDS_INTEL_25098 "UNUSED" + IDS_INTEL_25099 "UNUSED" + IDS_INTEL_25100 "" + IDS_INTEL_25101 "UNITY-Memo: Jagdhütte@Agentin Archer,\n\nhier finden Sie die Vorräte, die unser Agent für Sie bereitgestellt hat.\n\nWenn Sie Ihre Aufgaben erledigt haben, kehren Sie hierher zurück und funken das Hauptquartier an. Sie sollten die Dunkelheit abwarten, bevor Sie zum Militärgelände aufbrechen.\n\nSanta" + IDS_INTEL_25102 "UNUSED" + IDS_INTEL_25103 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25104 "UNUSED" + IDS_INTEL_25105 "UNUSED" + IDS_INTEL_25106 "UNUSED" + IDS_INTEL_25107 "UNUSED" + IDS_INTEL_25108 "UNUSED" + IDS_INTEL_25109 "UNUSED" + IDS_INTEL_25110 "UNUSED" + IDS_INTEL_25111 "UNUSED" + IDS_INTEL_25112 "UNUSED" + IDS_INTEL_25113 "UNUSED" + IDS_INTEL_25114 "UNUSED" + IDS_INTEL_25115 "UNUSED" + IDS_INTEL_25116 "UNUSED" + IDS_INTEL_25117 "UNUSED" + IDS_INTEL_25118 "UNUSED" + IDS_INTEL_25119 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25120 "" + IDS_INTEL_25121 "Sowjetischer Papierkram: Kaffee-Konsum@An: GESAMTES PERSONAL\n\nNachtrag 90/C-4 des Persönlichen Hygiene- & Fitness-Handbuchs (Band 12, Seite 4) legt fest, dass jeder Soldat nicht mehr und nicht weniger als 9 Tassen Kaffee pro Tag konsumieren darf. Personal, das beim Verdünnen des Kaffees mit Wasser oder anderen flüssigen Substanzen ertappt wird, wird sofort erschossen. Jeder, der Kaffee in Pflanzenkübel oder den Abfluss entsorgt und dabei ertappt wird, wird durch Giftinjektion exekutiert. Den Kaffee einem Hund zu geben, wird mit Aktensortierung im Hauptarchivgebäude bestraft.\n\nSie werden beobachtet." + IDS_INTEL_25122 "Sowjetisches Memo: M-9 Zugangs-Antrag@Leutnant Guniko,\n\nich ersuche um Zugriff auf die Datenverarbeitungsanlage M-9 im Hauptarchivgebäude. Ich wurde dem Projekt Omega erneut zugeteilt, kann mich aber ohne die richtige Sicherheitsbefugnis nicht ordnungsgemäß zum Dienst melden. Ich habe bereits mehrere Anträge auf die Befugnis gestellt, die mir aufgrund der Tatsache, dass ich keinen Zugang zum Bereich der M-9 Datenverarbeitungslage habe, verweigert wurde. Ich bin nicht sicher, wie ich weiter vorgehen soll.\n\nErgebenst,\nFeldwebel Butschenko" + IDS_INTEL_25123 "Sowjetisches Memo: M-9-Zugang verweigert@Feldwebel Butschenko,\n\nEs tut mir Leid, aber ich kann Ihrem Gesuch auf Zugriff auf die Datenverarbeitungsanlage M-9 im Hauptarchivgebäude nicht stattgeben. Obwohl ich die Schwierigkeit Ihres Problems durchaus anerkenne, verfüge ich leider nicht über die Autorität, eine Sicherheitsbefugnis zu erteilen, wenn nicht bereits Zugang zum Bereich der M-9 Datenverarbeitungslage vorhanden ist. Sobald Sie die notwendige Autorisation erlangt haben, kann ich die notwendige Autorisation erteilen. Ich hoffe, diese Information kann Ihnen weiterhelfen.\n\nLeutnant Guniko" + IDS_INTEL_25124 "UNUSED" + IDS_INTEL_25125 "UNUSED" + IDS_INTEL_25126 "UNUSED" + IDS_INTEL_25127 "Dokument: Einsatzbericht Teil 1@Sowjetischer Militäreinsatzbericht\n\nTeil I. Hintergrundinformation\n\nDieser Bericht wurde in Übereinstimmung mit den Wünschen von General Nikolaj Schukov erstellt, der ein sehr netter General und einer meiner persönlichen Helden ist. Wussten Sie, dass General Schukov ein hoch dekorierter Veteran des Großen Patriotischen Krieges war? Das ist wahr! Er ist auch ein begeisterter Botaniker mit einem besonderen Interesse an Kreuzblütlern, die ich auch sehr mag. Insbesondere Mangold." + IDS_INTEL_25128 "UNUSED" + IDS_INTEL_25129 "UNUSED" + IDS_INTEL_25130 "Sowj. Papierkram: Treibstoffanforderung@ANFORDERUNGSFORMULAR J-9:\n\n1. Angeforderter Gegenstand: Fahrzeugtreibstoff, 10 Fässer.\n2. Grund der Anforderung: Unzureichende Vorräte.\n3. Wollen Sie mit dieser Anforderung andeuten, dass die Sowjetunion Ihren Bedarf nicht decken kann? ( )Ja (x)Nein" + IDS_INTEL_25131 "UNUSED" + IDS_INTEL_25132 "UNUSED" + IDS_INTEL_25133 "UNUSED" + IDS_INTEL_25134 "UNUSED" + IDS_INTEL_25135 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25136 "UNUSED" + IDS_INTEL_25137 "UNUSED" + IDS_INTEL_25138 "UNUSED" + IDS_INTEL_25139 "UNUSED" + IDS_INTEL_25140 "" + IDS_INTEL_25141 "Sowjetischer Bericht: BLINDSIDE@An: General Schukov\nVon: KLAUS\n\nBLINDSIDE läuft planmäßig. Von all unseren ruhmreichen Operationen gegen den Hauptwidersacher war keine jemals so kühn oder so ehrgeizig wie diese, noch konnten wir jemals so sicher sein, einen solch absoluten Sieg der Sowjetunion zu erringen und unsere Gegner ganz und gar demütigen zu können. Ich werde erneut berichten, sobald ich Kontakt zu MR. BIG hergestellt und unseren Vorschlag unterbreitet habe. Ich bin sicher, er wird sehr empfänglich für unser großzügiges Angebot sein." + IDS_INTEL_25142 "Sowjetischer Bericht: BLINDSIDE ausgesetzt@An: General Schukov\nVon: KLAUS\n\nBLINDSIDE ist gestorben. Ich vermute Verrat, da meine Versuche, MR. BIG zu treffen, wiederholt gescheitert sind. Der Hauptwidersacher muss von unserer Absicht erfahren habe, Präsident Johnson für unsere Sache zu gewinnen, was erklärt, warum ich keinen Termin bei ihm bekomme. Ich bin sicher, dass ein Gespräch von nur fünf Minuten ausreichend gewesen wäre, ihn für unsere Sache zu gewinnen, aber die Amerikaner sind äußerst gerissen. Trauen Sie niemandem." + IDS_INTEL_25143 "Agententraining-Handbuch@AGENTENTRAINING-HANDBUCH" + IDS_INTEL_25144 "UNUSED" + IDS_INTEL_25145 "UNUSED" + IDS_INTEL_25146 "Dokument: Einsatzbericht Teil II@Sowjetischer Militäreinsatzbericht\n\nTeil II. Schlussfolgerung\n\nWie bereits erwähnt, ist General Schukov ein besonders bewundernswertes Individuum, dessen vielfältige ausgezeichneten Leistungen ein exzellentes Beispiel darstellen, dem alle guten Sowjets nacheifern sollten. Er liebt Skilanglauf, sibirische Volksmusik sowie romantische Abende am Ufer des Baikal-Sees mit einer seiner vielen Mätressen, unter anderem auch meiner Frau Nadja. Ich denke, damit ist schlussendlich erwiesen, dass das sowjetische Militär mit einem Anführer gesegnet ist, dessen Weisheit alle Bereitschaft darstellt, die wir uns nur wünschen könnten." + IDS_INTEL_25147 "Sowjetisches Memo: Sabotage@STRENG GEHEIMER ANTI-SABOTAGE-BERICHT\n\nGenosse Karpov,\n\nnach der Inspektion Ihrer Anlage schließe ich, dass die einzige ernst zu nehmende Sabotage-Bedrohung, die Sie fürchten müssen, in einer im Zugangspaneel zwischen den beiden Hauptgeneratoren untergebrachten Sprengladung besteht. Es ist jedoch mit an Sicherheit grenzender Wahrscheinlichkeit auszuschließen, dass ein dekadenter Kapitalisten-Spion diese Möglichkeit erkennt.\n\nIch muss ja wohl nicht erwähnen, dass dieser Bericht unter Verschluss aufbewahrt werden sollte.\n\nFeldwebel Butschenko." + IDS_INTEL_25148 "UNUSED" + IDS_INTEL_25149 "UNUSED" + IDS_INTEL_25150 "UNUSED" + IDS_INTEL_25151 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25152 "UNUSED" + IDS_INTEL_25153 "UNUSED" + IDS_INTEL_25154 "UNUSED" + IDS_INTEL_25155 "UNUSED" + IDS_INTEL_25156 "UNUSED" + IDS_INTEL_25157 "UNUSED" + IDS_INTEL_25158 "UNUSED" + IDS_INTEL_25159 "UNUSED" + IDS_INTEL_25160 "" + IDS_INTEL_25161 "Sowj. Papierkram: M-9-Zugriffs-Anfordg.@ZUGRIFFSANFORDERUNG FÜR DATENVERARBEITUNGSANLAGE M-9\n\n1. Grund der Anforderung: Lagebericht 4. Quartal für General Schukov über Projekt Omega\n2. Zugriff:\n ( ) in 3 Monaten\n, ( ) in 6 Monaten\n, ( ) irgendwann nächstes Jahr\n, (x) andere: Befehl der Priorität 1 von General Schukov\n3. Wenn Sie " + IDS_INTEL_25162 "Brief: Anjas Besuch@Liebster Sergej,\n\nvielen Dank für deinen lieben Brief. Selbstverständlich vergebe ich dir. Ich weiß, dass du betrunken warst. Abgesehen davon sieht man die Narbe fast gar nicht.\n\nIch kann kaum glauben, dass du mir drei amerikanische Bluejeans besorgt hast! Ich vermisse dich so sehr. Ich muss dich sofort besuchen! Bist du sicher, dass sie die richtige Größe haben? Oh, wie sehne ich mich danach, dich zu sehen. Ich bin ja so aufgeregt! Wie oft habe ich von Bluejeans geträumt!\n\nAnja" + IDS_INTEL_25163 "Brief: Anjas Versicherung@Liebster Sergej,\n\nmein Süßer, wie kannst du nur so etwas denken?! Natürlich bin ich wegen der Jeans aufgeregt, aber ich will doch vor allen Dingen DICH sehen. Ich gehöre nicht zu den Frauen, die einen Groll gegen einen Mann hegen, nur weil der ohne Grund eine Wodkaflasche auf ihrem Kopf zerschlagen hat! Die Tage, die ich im Krankenhaus verbracht habe, waren für mich eher wie ein lange benötigter Urlaub. Und der Arzt sagt, dass die Anfälle bald vorüber sein werden! Kannst du es denn nicht auch kaum abwarten, mich in amerikanischem Denim zu sehen?\n\nAnja" + IDS_INTEL_25164 "Brief: Anjas Vergebung@Sergej, mein Liebster,\n\nich kann es kaum erwarten, dich zu sehen! Es ist sehr aufmerksam von dir, die Hintertür unverschlossen zu lassen, aber ich mache mir Sorgen wegen des elektrischen Sicherheitszauns. Erinnerst du dich, was letzten Sommer mit Juris armer Frau passiert ist? Allerdings passt ihre neue Frisur sehr gut zu ihr. Mein Bruder sagt, du könntest Zucker in den Benzintank des Generators schütten, der den Sicherheitszaun mit Strom versorgt, weil der an einen anderen Stromkreis angeschlossen sei. Er war mal dort stationiert.\n\nAnja" + IDS_INTEL_25165 "KARTE: Sowjetisches Gelände@" + IDS_INTEL_25166 "UNITY-Memo: Treibstoffdepot-Sabotage@Agentin Archer,\n\ndas Treibstoffdepot des Stützpunktes befindet sich im äußeren Hof nahe Ihrer jetzigen Position. Seine Sabotage hat zwei Ziele. Zum einen sollte das eine ziemlich dramatische Ablenkung bewirken, die Ihre Flucht vom Stützpunkt vereinfachen soll. Zum anderen können so die Operationen des Stützpunktes eingeschränkt werden, bis das Depot repariert werden kann. Dies wird sich vorteilhaft auf unsere kommenden verdeckten Missionen in der Nähe auswirken. Der Zeitzünder dieser Sprengsätze ist so eingestellt, dass er während Ihrer Flucht hochgeht." + IDS_INTEL_25167 "Rezept für Suppe@Russische Kohlsuppe: \n\n1 kg Rinderschulter, 1 mittelgroßer geschnittener Kohlkopf, 1 große Zwiebel, 2 Esslöffel Essig, 1 Knoblauchzehe, 2 Esslöffel Zucker. \n\nZutaten in einem großen Topf mit kaltem Wasser bedecken. 1 Stunde ziehen lassen. 3 Stunden kochen." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25168 "Notiz: Kein Kohl mehr!@Keine Kohlsuppe mehr! Haben Sie sich jüngst in der Nähe der Latrine aufgehalten? Haben Sie Mitleid mit Ihren Genossen!" + IDS_INTEL_25169 "Sowjetischer Papierkram: Kohl-Anforderung@ANFORDERUNGSFORMULAR FÜR FRISCHGEMÜSE R-4/2:\n\n1. Angefordertes Frischgemüse-Produkt: \n (x) Kohl, ( ) Bete, ( ) Kartoffeln, ( ) Rettich\n2. Menge: 400 Köpfe.\n3. Lieferpriorität: \n (x) Eine Woche, ( ) Ein Monat, ( ) Ein Jahr, ( ) Völlig egal" + IDS_INTEL_25170 "UNUSED" + IDS_INTEL_25171 "UNUSED" + IDS_INTEL_25172 "UNUSED" + IDS_INTEL_25173 "UNUSED" + IDS_INTEL_25174 "UNUSED" + IDS_INTEL_25175 "UNUSED" + IDS_INTEL_25176 "UNUSED" + IDS_INTEL_25177 "UNUSED" + IDS_INTEL_25178 "UNUSED" + IDS_INTEL_25179 "UNUSED" + IDS_INTEL_25180 "" + IDS_INTEL_25181 "Notiz: Seltsames Paket@Leutnant Pupkin,\n\nich habe dieses seltsame Paket während meiner Patrouille nahe der südlichen Mauer gefunden. Die glänzende, schöne Verpackung lässt mich einen ausgeklügelten, kapitalistischen Plan vermuten. Ich verlasse mich auf Ihr weises Urteil bezüglich der weiteren Vorgehensweise.\n\nOberfeldwebel Kominski" + IDS_INTEL_25182 "Bevor Sie auch nur dran DENKEN, Zucker in diesen Benzintank zu schütten, damit Ihre kleine Süße am elektrischen Zaun vorbeikommt, denken Sie an das Schicksal von Sergej Putkin, dessen sehr gewissenhafte Freundin Anja mir am Morgen, nachdem er den Generator sabotiert hatte, um sie auf das Gelände zu schmuggeln, ein tränenreiches Geständnis machte. Machen Sie sich bewusst, dass die Würmer die Haut von seinen feigen, unpatriotischen Knochen abnagen.\n\nSie werden beobachtet." + IDS_INTEL_25183 "SSowj. Papierkram: Anforderungsformular@ANFORDERUNGSFORMULAR J-9:\n\n1. Angeforderter Gegenstand: Toilettenpapier, 1 Rolle.\n2. Grund der Anforderung: Unzureichende Vorräte.\n3. Gewünschte Lieferadresse: \n ( ) Moskau, (x) Petrograd, \n ( ) Bukarest, ( ) Miami Beach\n4. Lieferpriorität: \n ( ) Eine Woche, ( ) Ein Monat, ( ) Ein Jahr, \n ( ) Ich vermute, meine Antwort hat keinen Einfluss auf die Lieferzeit" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25184 "Sowj. Papierkram: Ablehnungsformular@ABLEHNUNGSFORMULAR R-27\n\nDie Anforderung von Toilettenpapier mittels Anforderungsformular J-9 wurde abgelehnt. Es war keine Lieferpriorität angegeben." + IDS_INTEL_25185 "Sowj. Papierkram: Erneute-Eingabe-Formular@ANFORDERUNG EINES ERNEUTEN-EINGABE-FORMULARS J-9-17b, NACHTRAG\n\nAuf Seite 137 der Anweisung zum Ausfüllen von Anforderungsformular J-9 heißt es: " + IDS_INTEL_25186 "Sowj. Papierkram: Disziplinierg./Trunkenheit@DISZIPLINARMASSNAHMENFORMULAR B-21-K\n\n1. Grund der Disziplinierung: Trunkenheit im Dienst\n2. Anzahl des zu disziplinierenden Personals: \n ( ) Unter 5, (x) 5 - 10, ( ) Über 10\n3. Geforderte Art der Bestrafung: \n (x) Tod durch Erschießungskommando, ( ) Tod durch Erhängen, ( ) Aktensortierung" + IDS_INTEL_25187 "Sowjetisches Memo: Nachtrag G-9@An: Rekrutierungs- und Personalbüro\nVon: Leutnant Petrakov\n\nAufgrund der Publikation von Nachtrag G-9 des Sowjetischen Disziplinarmaßnahmenformulars, die zwei neue freiwillige Alternativstrafmaßnahmen anbietet (im Wortlaut, Tod durch Erschießungskommando und Tod durch Erhängen), bereiten Sie sich bitte auf eine Zunahme von Anforderungen für Erschießungskommandos und Erhängungsseile vor." + IDS_INTEL_25188 "UNITY-Handbuch: Überwachungskameras@ÜBERWACHUNGSKAMERAS\n\nSollte eine Überwachungskamera Sie entdecken, wird ein Alarm ertönen, wodurch Verstärkung zur Durchsuchung in das Gebiet kommt. Die Kamera wird etwas Zeit benötigen, um Sie ins Visier zu nehmen und als Bedrohung zu identifizieren, also müssen Sie lernen, sich in dem Moment außer Sicht zu bringen, wenn Sie das charakteristische mechanische Surren des sich drehenden Objektivs hören. Da Kameras von fern überwacht werden, wird ihre Zerstörung einen Alarm auslösen, aber Sie können spezielle Munition zum Ausschalten von Kameras für Ihren CT-180-Mehrzweck-Werfer verwenden, um sie funktionsuntüchtig zu machen." + IDS_INTEL_25189 "UNITY-Memo: Kamerastörer@Agentin Archer,\n\nich hoffe, dass dieses Paket Sie unbeschädigt erreicht. Ich musste es auf etwas unkonventionellem Weg schicken. \n\nAnbei finden Sie einen CT-180 Mehrzweck-Werfer mit Kamerastörer-Munition. Diese raffinierten Geräte schließen sich an Überwachungskameras an, von deren Blickwinkel aus sie Bilder aufnehmen. Diese falschen Bilder werden dann auf das Kamera-Objektiv projiziert. Jeder, der das Überwachungssystem kontrolliert, wird denken, dass er Live-Aufnahmen sieht.\n\nSanta" + IDS_INTEL_25190 "UNUSED" + IDS_INTEL_25191 "UNUSED" + IDS_INTEL_25192 "UNUSED" + IDS_INTEL_25193 "UNUSED" + IDS_INTEL_25194 "UNUSED" + IDS_INTEL_25195 "UNUSED" + IDS_INTEL_25196 "Notiz: Rauchen verboten!@RAUCHEN IST IN DIESEM BEREICH NICHT ERLAUBT.\n\nZuwiderhandelnde werden eliminiert." + IDS_INTEL_25197 "UNUSED" + IDS_INTEL_25198 "Rezept: Hering im Pelzmantel@Mama Pupkins Rezept für Hering im Pelzmantel:\n\nEin Hering, 3 gekochte Kartoffeln, 1 gekochte Rote Bete, 6 Frühlingszwiebeln, 1 Glas in Öl eingelegte, schwarze Oliven, 2 hartgekochte Eier, in Scheiben geschnitten.\n\nHering entgräten und in 2 cm große Würfel schneiden. Kartoffeln und Rote Bete schälen und in 1 cm große Stücke schneiden. Frühlingszwiebeln in 5 mm große Stücke schneiden. Heringsstücke auf dem Boden einer Servierschüssel verteilen, mit den Frühlingszwiebeln belegen, dann die Kartoffeln und dann die Rote Bete darüberschichten. Mayonnaise über die Bete verteilen und mit Oliven und Eierscheiben verzieren. Kühl servieren." + IDS_INTEL_25199 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25200 "" + IDS_INTEL_25201 "Notiz: Zucker@ACHTUNG\n\nBis auf weiteres wird der Zucker unter Verschluss gehalten, um eine Wiederholung der Generator-Sabotage vom letzten Samstag zu vermeiden. Um Zucker anzufordern, reichen Sie ein Anforderungsformular bei Ihrem leitenden Offizier ein." + IDS_INTEL_25202 "Notiz: Kohlsuppen-Bonus@ACHTUNG, AN DAS GESAMTE PERSONAL: Da die Sterblichkeitsrate durch Unfall oder Quasiunfall im letzten Monat um 2 Prozent gefallen ist, werden alle Soldaten zur Belohnung an jedem Abend dieser Woche eine Extraportion Kohlsuppe erhalten! Macht weiter so, und bald werdet ihr so viel Kohlsuppe haben, wie ihr nur essen könnt!\n\nGeneral Schukov" + IDS_INTEL_25203 "UNUSED" + IDS_INTEL_25204 "UNUSED" + IDS_INTEL_25205 "UNUSED" + IDS_INTEL_25206 "UNUSED" + IDS_INTEL_25207 "UNUSED" + IDS_INTEL_25208 "UNUSED" + IDS_INTEL_25209 "UNUSED" + IDS_INTEL_25210 "UNUSED" + IDS_INTEL_25211 "Tresorkombination@Leutnant Petrakov,\n\nich wurde nach Moskau gerufen, um an einem besonderen Tribunal teilzunehmen, das unpatriotische Bürger in Regierungspositionen ausmerzen soll. Ich habe das " + IDS_INTEL_25212 "Brief von Oleg@Meine Mitverschwörer,\n\ndie Stunde der Revolution ist nahe. Ich habe die notwendigen Vorbereitungen getroffen. In weniger als einer Woche werden wir drei die Ketten der Tyrannei abgeworfen und ein leuchtendes Beispiel für alle Russen gesetzt haben, die ebenso wie wir nach Befreiung hungern.\n\nOleg Dorofjew" + IDS_INTEL_25213 "Brief von Sergej@Meine Brüder der Verschwörung,\n\ndie Revolution steht tatsächlich kurz bevor. Ich kann praktisch schon den süßen Wind der Freiheit auf meiner Haut spüren. Die Warterei ist wie ein Gefängnis. Ich fühle mich eingepfercht, in gespannter Erwartung, gefangen in dieser elenden Uniform und allem, wofür sie steht.\n\nSergej Romanov" + IDS_INTEL_25214 "Brief von Juri@Liebe Mit-Revolutionäre,\n\nich habe gerade den Wetterbericht gesehen. Vom Norden her kommt eine Kaltfront auf uns zu. Obwohl es mich, genau wie euch beide, in die Freiheit drängt, können wir vielleicht die Revolution verschieben, bis sich das Wetter verbessert. Inmitten eines Gewitters nackt durch das Gelände zu laufen, klingt eher nach Wahnsinn als nach Aufstand.\n\nJuri Prokofiev" + IDS_INTEL_25215 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25216 "" + IDS_INTEL_25217 "" + IDS_INTEL_25218 "" + IDS_INTEL_25219 "" + IDS_INTEL_25220 "" + IDS_INTEL_25221 "Sowjetisches Memo: Projekt Omega@An: Leutnant Pupkin\nVon: General Schukovs Büro\n\nDer General verlangt von Ihnen, ihm innerhalb von 10 Tagen eine Durchführbarkeitsmatrix zum Projekt Omega zukommen zu lassen. Bitte besorgen Sie sich ein Zugriffsgenehmigungsformular für M-9 im Formularbüro." + IDS_INTEL_25222 "Sowjetisches Memo: Projekt Omega@An: Leutnant Petrakov\nVon: Oberst Pupkin\n\nAlso, Evo, was hältst du von dieser Omega-Geschichte des Generals? Ich soll nächste Woche eine Durchführbarkeitsmatrix mit der M-9 erstellen, vorausgesetzt, ich bekomme die Erlaubnis, die Maschine zu benutzen. Ich hab's im Urin, dass das Zeitverschwendung ist. Ich sage, sollen sie doch gegen den dekadenten Westen marschieren." + IDS_INTEL_25223 "Sowjetischer Papierkram: M-9-Anforderung@ZUGRIFFSANFORDERUNG FÜR DATENVERARBEITUNGSZENTRUM M-9\n\n1. Grund der Anforderung: Monatliche Terminierung von Personal\n2. Zugriff: \n ( ) in 3 Monaten, ( ) in 6 Monaten, ( ) irgendwann nächstes Jahr, (x) andere: Befehl der Priorität 1 von General Schukov\n3. Wenn Sie " + IDS_INTEL_25224 "Brief: Projekt Augen auf@Pupkov-Laboratorium, Petropavlovsk-Kamtschatskij\n\nProjekt " + IDS_INTEL_25225 "Fotografie: Dimitrij Volkov@" + IDS_INTEL_25226 "UNUSED" + IDS_INTEL_25227 "UNUSED" + IDS_INTEL_25228 "UNUSED" + IDS_INTEL_25229 "BLAUPAUSE: Keller des Archivgebäudes@" + IDS_INTEL_25230 "UNUSED" + IDS_INTEL_25231 "Fotografie: General Schukov@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25232 "UNUSED" + IDS_INTEL_25233 "UNUSED" + IDS_INTEL_25234 "UNUSED" + IDS_INTEL_25235 "UNUSED" + IDS_INTEL_25236 "UNUSED" + IDS_INTEL_25237 "UNUSED" + IDS_INTEL_25238 "UNUSED" + IDS_INTEL_25239 "UNUSED" + IDS_INTEL_25240 "" + IDS_INTEL_25241 "Sowjetisches Kommuniqué: Der Direktor@An: Commander Pim\nVon: General Nikolaj Schukov\n\nBitte informieren Sie Ihren ruhmreichen Direktor, dass ich als stolzer Kommunist gegen seine kapitalistischen Zwangsverkaufstaktiken immun bin. Sogar ein Anführer, der so weitblickend ist wie ich, wird sich nicht einfach so auf irgendwelche Pläne stürzen, die die globale Stabilität gefährden. Ich schätze Ihre Bereitschaft, Service-Personal zu entsenden, das Seminare für meine Belegschaft abhält, aber gehen Sie nicht davon aus, dass ich dann so dankbar sein werde, dass ich einen Vertrag unterzeichne, ohne vorher genau die Dienstleistung einzuschätzen, die ich erwerbe." + IDS_INTEL_25242 "Sowj. Papierkram: Toilette reparieren@REPARATURANFORDERUNGSFORMULAR 19a\n\n1. Angeforderte Reparatur(en): Loch in Damentoilette zugipsen.\n2. Grund der Anforderung: Der Anblick unserer edlen russischen Frauen lenkt schwer arbeitende Männer von ihren Pflichten ab.\n3. Genehmigt: Oberfeldwebel Igor." + IDS_INTEL_25243 "Sowj.Papierkram: WC-Reparatur abgelehnt@ABLEHNUNGSFORMULAR R-27\n\nDer Antrag auf Reparatur der Damentoilette im neuen Archivgebäude wird abgelehnt.\n\nUnterzeichnet: General Nikolaj Schukov" + IDS_INTEL_25244 "Sowjetisches Memo: US-Pläne@An: General Schukov\nVon: Wladimir Kryutschkov\n\nIch hoffe, Sie sitzen gerade, Genosse. Letzte Nacht bekam ich eine Nachricht von ANATOLI, unserem Mann in Palm Beach. Das ist der Bauernjunge, den wir aus Kamtschatka geschickt haben, um in die höchsten Ebenen des Pentagon einzudringen, was ihm sehr schnell gelungen ist, wenn man bedenkt, wie schlecht er Englisch spricht. Wie wir befürchtet haben, hat der Hauptwidersacher große Pläne für Khios. Bitte lesen Sie den beigelegten Bericht." + IDS_INTEL_25245 "Sowjetischer Bericht: Khios 1@US-PLÄNE FÜR KHIOS\nTeil I.\n\nWie wir alle wissen, haben die USA ein Projekt entwickelt, um heimlich einen nuklearen Erstschlag gegen die Sowjetunion zu führen, indem sie Sprengköpfe an Tigerhaien befestigen und sie vom Schwarzen Meer aus den Dnjepr nach Moskau hoch schicken. Sie haben sogar einen Spezialapparat für die Haie konstruiert, damit sie im Süßwasser überleben können. Jetzt berichtet ANATOLI, dass dieses Projekt auf Eis gelegt worden ist, damit die amerikanische Invasion von Khios vorbereitet werden kann." + IDS_INTEL_25246 "Sowjetischer Bericht: Khios 2@US-PLÄNE FÜR KHIOS\nTeil II.\n\nDie Ziele des Hauptwidersachers sind eindeutig: militärische Einnahme von Khios, Durchführung höchst unmoralischer, wissenschaftlicher Experimente an der Zivilbevölkerung und Ersetzung der Schulen und Krankenhäuser der Insel durch Fast-Food-Ketten und Hotelanlagen, alles nur, um die wertvollen natürlichen Rohstoffe von Khios auszubeuten." + IDS_INTEL_25247 "Spesenkonto: ANATOLI@SPESENKONTO-ZUSAMMENFASSUNG\nCodename des Agenten: ANATOLI\nEinsatzort: Palm Beach, Florida\nGesamtausgaben: 573.000 US $.\n\nListe der einzelnen erworbenen Gegenstände:\n – Strandhaus (um Agentenlegende zu schaffen)\n – Chevrolet Corvette Stingray (Transportmittel)\n – 10 Meter-Jacht (für den Fall, dass ich aus den USA fliehen muss)\nLebenshaltungskosten (grundlegende Dinge wie Lebensmittel, Gebrauchsgegenstände, Kneipenrechnungen, Konzertkarten, Prostituierte usw.)" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25248 "Sowjetisches Memo: Projekt Omega@An: Direktor von H.A.R.M.\nVon: General Nikolaj Schukov\n\nWas dieses so genannte Projekt Omega angeht, so müssen wir einige Dinge klären, bevor wir eine Absichtserklärung abgeben. Erstens, wir suchen nach einer Lösung, die es uns möglich macht, Khios zu annektieren und es auch zu verteidigen, sobald wir unser ultimatives Ziel erreichen: das erste kommunistische Fünf-Sterne-Hotel mit Kasino an der Nordspitze der Insel zu bauen. Kann Projekt Omega diese Bedingung erfüllen?" + IDS_INTEL_25249 "BLAUPAUSE: Archivgebäude 1. Stock@" + IDS_INTEL_25250 "BLAUPAUSE: Archivgebäude 2. Stock@" + IDS_INTEL_25251 "Notiz: Automat@Genossen, lassen Sie sich nicht von dieser Maschine täuschen! Während meiner Archivierungsarbeit fand ich gestern Beweise für eine ausgeklügelte Verschwörung, die ehrliche Sowjetbürger um ihre kostbaren Rubel bringen soll. Diese Automaten enthalten gar keine UdSSR-Limonade. Es sind nur leere Kästen mit einer großen Lade, die die Münzen sammelt, und einem kleinen Lautsprecher, der mechanische Geräusche von sich gibt. Trauen Sie niemandem!\n\nMichail" + IDS_INTEL_25252 "Bericht: Papageientaucher@FRATERCULA CIRRHATA\n\nDer büschelige Papageientaucher verdankt seinen Namen dem auffälligen gelben Gefieder, das direkt über den Augen des Vogels wächst. Die Augen selbst haben eine außergewöhnliche Gelbfärbung mit einem hellroten Ring außen. Der Papageientaucher ist ein monogames Lebewesen, das seinem Partner ein Leben lang die Treue hält. Das Pärchen kümmert sich abwechselnd um das eine Junge im felsigen Nest, während der jeweils andere Elternteil den ganzen Tag für die Familie Fische fängt." + IDS_INTEL_25253 "Bericht: Seeadler@HALIAECTUS SPELLAGICUS\n\nEin Steller-Seeadler jagt so gut wie nie selbst nach Nahrung. Er beginnt sein Tagwerk damit, dass er kleineren Raubvögeln nachspioniert, wie etwa Raben, und ihnen zu potenziellen Mahlzeiten folgt. Danach macht sich der Seeadler daran, die Nahrung zu stehlen. Es kann zu erbitterten Kämpfen kommen, wenn mehrere Adler versuchen, dieselbe Nahrung zu stehlen. Nicht selten kommen Schnäbel und Klauen bei diesen Kämpfen zum Einsatz." + IDS_INTEL_25254 "Bericht: Braunbär@URSUS ARCTOS\n\nFast den gesamten Frühling über lebt der Braunbär vegetarisch, aber im Sommer frisst er sich mit Flusslachsen voll, um sich auf den langen Winterschlaf vorzubereiten. Ein erwachsener Bär kann über den Winter bis zu 350 Pfund Gewicht verlieren, die er sich vor der nächsten Kälteperiode wieder anfressen muss." + IDS_INTEL_25255 "Bericht: Pelzrobbe@CALLORHINUS URSINUS\n\nDie nördliche Pelzrobbe ist ein faszinierendes Meeressäugetier. Kolonien oder Rudel männlicher Tiere treffen im Mai und Juni ein und sichern sich ihr Territorium in Gegenden wie den Pribilof-Inseln. Die Männchen hüten ihren Harem extrem eifersüchtig und lassen sich auf brutale Kämpfe ein, bei denen sie laute und eigentümliche Rufe ausstoßen, um ihre Ansprüche geltend zu machen und ihre Stärke zu beweisen." + IDS_INTEL_25256 "Sowjetisches Memo: Kamtschatka-Vermessung@An: General Schukovs Büro\nVon: Feldwebel Pupkin\n\nAnbetungswürdiger Führer, die ruhmreiche Vermessung der Region Kamtschatka durch das Volk ist abgeschlossen. Wir können jetzt mit der Entfernung dieser Tiere beginnen, um Platz für zehn ruhmreiche neue Fabriken zu schaffen, die in dieser Region geplant sind. Jede Einzelne davon wird Fabrik-Einrichtungen produzieren, mit denen wir weitere Fabriken errichten können! Wir erwarten eine enorme Steigerung der Produktivität!" + IDS_INTEL_25257 "UNITY-Memo: General Schukov@Agentin Archer,\n\nsollten Sie auf General Nikolaj Schukov stoßen, betrachten Sie ihn als optionales Ziel. Er gehörte zum NKVD. 1944 war er an der Umsiedlung der Tschetschenen nach Zentralasien beteiligt und er wird mit verschiedenen Menschenrechtsverletzungen, darunter auch einem besonders grausamen Massenmord, in Verbindung gebracht. Wir möchten, dass er ausgeschaltet wird.\n\nSanta" + IDS_INTEL_25258 "UNUSED" + IDS_INTEL_25259 "UNUSED" + IDS_INTEL_25260 "" + IDS_INTEL_25261 "Notiz: Spione gemeldet@ACHTUNG\n\nEin weiblicher kapitalistischer Spion wurde in der Gegend gesichtet. Diejenigen, auf deren Konto die Festnahme der Spionin geht, erhalten Extraportionen Kohlsuppe. Diejenigen, die NICHT für ihre Festnahme verantwortlich sind, erhalten Latrinendienst." + IDS_INTEL_25262 "UNUSED" + IDS_INTEL_25263 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25264 "UNUSED" + IDS_INTEL_25265 "UNUSED" + IDS_INTEL_25266 "UNUSED" + IDS_INTEL_25267 "UNUSED" + IDS_INTEL_25268 "UNUSED" + IDS_INTEL_25269 "UNUSED" + IDS_INTEL_25270 "UNUSED" + IDS_INTEL_25271 "UNUSED" + IDS_INTEL_25272 "UNUSED" + IDS_INTEL_25273 "UNUSED" + IDS_INTEL_25274 "UNUSED" + IDS_INTEL_25275 "UNUSED" + IDS_INTEL_25276 "UNUSED" + IDS_INTEL_25277 "UNUSED" + IDS_INTEL_25278 "UNUSED" + IDS_INTEL_25279 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25280 "" + IDS_INTEL_25281 "Sowjetisches Memo: Jüngste Explosionen@An: Wartungsabteilung\nVon: Oberfeldwebel Butschenko\n\nIch habe andere wiederholt vor den Gefahren gewarnt, die das Lagern von Treibstoff in offenen Bereichen nach sich zieht. Die jüngste Serie von Explosionen hat meine Ansichten bestätigt. Ich schlage vor, dass eine Treibstoffkommission eingesetzt wird, um die Situation zu diskutieren und die Lösung zu dokumentieren." + IDS_INTEL_25282 "UNUSED" + IDS_INTEL_25283 "UNUSED" + IDS_INTEL_25284 "UNUSED" + IDS_INTEL_25285 "UNUSED" + IDS_INTEL_25286 "UNUSED" + IDS_INTEL_25287 "UNUSED" + IDS_INTEL_25288 "UNUSED" + IDS_INTEL_25289 "UNUSED" + IDS_INTEL_25290 "UNUSED" + IDS_INTEL_25291 "UNUSED" + IDS_INTEL_25292 "UNUSED" + IDS_INTEL_25293 "UNUSED" + IDS_INTEL_25294 "UNUSED" + IDS_INTEL_25295 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25296 "UNUSED" + IDS_INTEL_25297 "UNUSED" + IDS_INTEL_25298 "UNUSED" + IDS_INTEL_25299 "UNUSED" + IDS_INTEL_25300 "" + IDS_INTEL_25301 "Notiz: Spione immer noch frei@Es macht mich wirklich traurig, dass noch niemand die kapitalistische Spionin zum Wohle von Mütterchen Russland gefangen hat! Sollte dieser Spion bis zum Morgen nicht gefasst sein, wird das verantwortliche Personal durch Hinrichtung zur Rechenschaft gezogen.\n\nOberst Pupkin" + IDS_INTEL_25302 "UNUSED" + IDS_INTEL_25303 "UNUSED" + IDS_INTEL_25304 "UNUSED" + IDS_INTEL_25305 "UNUSED" + IDS_INTEL_25306 "UNUSED" + IDS_INTEL_25307 "UNUSED" + IDS_INTEL_25308 "UNUSED" + IDS_INTEL_25309 "UNUSED" + IDS_INTEL_25310 "UNUSED" + IDS_INTEL_25311 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25312 "UNUSED" + IDS_INTEL_25313 "UNUSED" + IDS_INTEL_25314 "UNUSED" + IDS_INTEL_25315 "UNUSED" + IDS_INTEL_25316 "UNUSED" + IDS_INTEL_25317 "UNUSED" + IDS_INTEL_25318 "UNUSED" + IDS_INTEL_25319 "UNUSED" + IDS_INTEL_25320 "" + IDS_INTEL_25321 "UNUSED" + IDS_INTEL_25322 "UNUSED" + IDS_INTEL_25323 "UNUSED" + IDS_INTEL_25324 "UNUSED" + IDS_INTEL_25325 "UNUSED" + IDS_INTEL_25326 "UNUSED" + IDS_INTEL_25327 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25328 "UNUSED" + IDS_INTEL_25329 "UNUSED" + IDS_INTEL_25330 "UNUSED" + IDS_INTEL_25331 "UNUSED" + IDS_INTEL_25332 "UNUSED" + IDS_INTEL_25333 "UNUSED" + IDS_INTEL_25334 "UNUSED" + IDS_INTEL_25335 "UNUSED" + IDS_INTEL_25336 "UNUSED" + IDS_INTEL_25337 "UNUSED" + IDS_INTEL_25338 "UNUSED" + IDS_INTEL_25339 "UNUSED" + IDS_INTEL_25340 "" + IDS_INTEL_25341 "Brief: Liebe Mutter@Liebe Mutter,\n\nwie geht es dir? Es ist schon lange her, ja? Wie geht es Cincinnati? Ich bin jetzt großer Pilot. Heute bin ich nach Sibirien auf geheime Mission geflogen. Arbeit ist gefährlich, aber ich bekomme gutes Geld. Du bekommst Schecks, ja? Das macht mich glücklich.\n\nIn Liebe,\nMischa" + IDS_INTEL_25342 "UNUSED" + IDS_INTEL_25343 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25344 "UNUSED" + IDS_INTEL_25345 "UNUSED" + IDS_INTEL_25346 "UNUSED" + IDS_INTEL_25347 "UNUSED" + IDS_INTEL_25348 "UNUSED" + IDS_INTEL_25349 "UNUSED" + IDS_INTEL_25350 "UNUSED" + IDS_INTEL_25351 "UNUSED" + IDS_INTEL_25352 "UNUSED" + IDS_INTEL_25353 "UNUSED" + IDS_INTEL_25354 "UNUSED" + IDS_INTEL_25355 "UNUSED" + IDS_INTEL_25356 "UNUSED" + IDS_INTEL_25357 "UNUSED" + IDS_INTEL_25358 "UNUSED" + IDS_INTEL_25359 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25360 "" + IDS_INTEL_25361 "Brief: Blitznys Ausbildung@28. Februar 1967\n\nMr. Blitzny (oder sollte ich sagen, Mr. Goodman),\n\nes ist unumgänglich, dass Ihre Ausbildung bis Anfang Juni abgeschlossen ist. In Amsterdam hat sich eine einmalige Gelegenheit ergeben.\n\nGrüße,\nMr. X" + IDS_INTEL_25362 "Durchschlag: Probleme mit Tussies@Durchschlag\n\n6. März 1967\n\nMr. X,\n\nich habe immer noch Schwierigkeiten, Tussies aufzureißen. Es fällt mir sehr schwer, mich als echter Superspion zu fühlen, wenn Mädchen nicht einmal mit mir reden möchten. In Filmen bekommen Spione immer jede Menge Frauen. Diese Situation beeinträchtigt meine Moral. Wenn das so weitergeht, weiß ich nicht, ob ich bis Juni bereit sein kann.\n\nDringend,\nMelvin Blitzny\nalias Tom Goodman" + IDS_INTEL_25363 "Brief: Verzögerung nicht akzeptabel@19. März 1967\n\nMr. Blitzny, \n\nVerzögerungen sind nicht akzeptabel. Sie WERDEN bereit sein, die Identität von Tom Goodman planmäßig anzunehmen. Ich brauche Sie schnellstens in den Diensten von UNITY. Hoffentlich habe ich mich klar genug ausgedrückt.\n\nGrüße,\nMr. Smith" + IDS_INTEL_25364 "Durchschlag: Nicht drängen!@Durchschlag\n\n20. März 1967\n\nMr. X (oder sollte ich lieber Smith sagen),\n\nich habe es satt, mir immer wieder Ihre Terminvorgaben anzuhören. Wenn ich eines als Staubsaugervertreter gelernt habe, dann ist es das: Gut Ding will Weile haben. Ich bin bereit, wenn ich bereit bin, und keine Minute früher. Schreiben Sie sich das hinter Ihre Segelfliegerohren.\n\nGrüße,\nTom Goodman" + IDS_INTEL_25365 "Brief: Jammerlappen@29. März 1967\n\nHören Sie, Sie kleiner Jammerlappen, ich habe Ihre Anmaßungen satt. Vielleicht begreifen Sie den Ernst der Situation nicht, daher will ich es Ihnen so erklären, dass Ihr kleines Spatzenhirn es auch versteht. Sie werden beobachtet. Ständig. Sollten Sie von dem Plan abweichen, den ich für Sie aufgestellt habe, werden Sie spurlos verschwinden. Ich werde Ihre Vernichtung persönlich überwachen und dafür sorgen, dass sie schmerzhaft wird und so lange wie möglich dauert.\n\nSmith" + IDS_INTEL_25366 "Nicht abgeschickter Brief: Zum Teufel mit Ihnen@Nicht abgeschicktes Original\n\n29. März 1967\n\nMr. Memme,\n\nwarum gehst du nicht zum Teufel, du blöder Idiot. Ich hasse dich! Ich hasse dich! Ich hasse dich!\n\nVerrecke,\nGoodman" + IDS_INTEL_25367 "H.A.R.M.-Memo@Folgendes streng geheime Material ist nur für H.A.R.M.-Personal bestimmt!\n\nAn: Gesamtes H.A.R.M.-Personal\nVon: Anoop Banerjee\nDatum: 2. September 1967\nThema: Projekt Omega\n\nAb November diesen Jahres beginnt H.A.R.M. mit dem Prototypen für eine neue Geheimwaffe namens Projekt Omega. Wir suchen einen erfahrenen, tüchtigen Produktmanager für die Leitung dieses Unternehmens. Wenn Sie oder jemand, den Sie kennen, Interesse daran hat, mit unserem hochrangigen Forschungs- und Entwicklungsteam an diesem aufregenden Projekt zu arbeiten, melden Sie sich über internen Kurier in unserem Büro in Kalkutta." + IDS_INTEL_25368 "Rechnung für Staubsauger@RECHNUNG 2306a\n\nAn: Mr. Melvin Blitzny\nVon: Staubsaugerfirma Gut Saug, Walla Walla, Washington\n\nBestellung über 260 Staubsauger Gut Saug Modell B mit abnehmbarem Rüssel und Drehkopf." + IDS_INTEL_25369 "H.A.R.M.-Kommuniqué: Magnus Armstrong@An: Melvin Blitzny/Tom Goodman\nVon: Dimitrij Volkov\n\nSie werden sich am 4. April in Oslo, Schweden, zur H.A.R.M.-Orientierung und mentalen Vorbereitung melden. Einer meiner Mitarbeiter, Magnus Armstrong, wird Sie vom Flughafen abholen. Er ist leicht zu erkennen. Seine unverwechselbaren Merkmale sind unter anderem ein dichter roter Bart, ein Kilt (den er bei jedem Wetter trägt) und das durchdringende Aroma von schottischem Whisky. Sie werden tun, was er Ihnen sagt.\n\nWillkommen bei H.A.R.M." + IDS_INTEL_25370 "" + IDS_INTEL_25371 "" + IDS_INTEL_25372 "" + IDS_INTEL_25373 "" + IDS_INTEL_25374 "" + IDS_INTEL_25375 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25376 "" + IDS_INTEL_25377 "" + IDS_INTEL_25378 "" + IDS_INTEL_25379 "" + IDS_INTEL_25380 "" + IDS_INTEL_25381 "Brief: Schluss-mach-Brief@Liebe Loni,\n\nich verlasse dich und ziehe mit deiner besten Freundin Jill zusammen. Tut mir Leid, Zuckerpuppe, aber du hast mir nie gegeben, was mir zusteht! Sobald wir zusammen waren, hast du aufgehört, Make-up zu tragen, hast 30 Pfund zugenommen und seit über einer Woche das Geschirr nicht mehr gespült. Kannst du mir verübeln, dass ich dich verlasse?\n\nDein Ex-Mann Kevin" + IDS_INTEL_25382 "Farley-Fruchtbarkeitsklinik-Brief@FARLEY FRUCHTBARKEITSKLINIK\n\nAn: Mrs. Loni Hickey,\n\ndie Ergebnisse unseres Tests beweisen, dass Mr. Hickey nicht der biologische Vater des Kindes sein kann. Danke, dass Sie der Farley-Fruchtbarkeitsklinik Ihr Vertrauen geschenkt haben. Viel Glück bei der Suche nach dem Vater!" + IDS_INTEL_25383 "Brief: Steve oder Dwayne@Betty,\n\nwas soll ich nur tun! Das Baby ist nicht von Kevin. Wenigstens schränkt das die möglichen Kandidaten auf Steve und Dwayne ein. Meinst du, ich sollte es ihnen sagen?\n\nLoni" + IDS_INTEL_25384 "" + IDS_INTEL_25385 "" + IDS_INTEL_25386 "" + IDS_INTEL_25387 "" + IDS_INTEL_25388 "" + IDS_INTEL_25389 "" + IDS_INTEL_25390 "" + IDS_INTEL_25391 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25392 "" + IDS_INTEL_25393 "" + IDS_INTEL_25394 "" + IDS_INTEL_25395 "" + IDS_INTEL_25396 "" + IDS_INTEL_25397 "" + IDS_INTEL_25398 "" + IDS_INTEL_25399 "" + IDS_INTEL_25400 "" + IDS_INTEL_25401 "Werbung für Wohnmobil@DIE VORTEILE EINES WOHNMOBILS!\n\nHaben Sie es nicht satt, Jahr für Jahr ständig nur dieselbe Aussicht zu haben? Ein Wohnmobil könnte die Lösung sein!" + IDS_INTEL_25402 "Brief: Antrag abgelehnt@Sehr geehrter Mr. Hickey,\n\nIhr Kreditantrag für ein Wohnmobil wurde aufgrund Ihres kürzlichen Bankrotts abgelehnt.\n\nGezeichnet: Mr. Lang-Weiler\nFirst Bank of Stucky" + IDS_INTEL_25403 "" + IDS_INTEL_25404 "" + IDS_INTEL_25405 "" + IDS_INTEL_25406 "" + IDS_INTEL_25407 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25408 "" + IDS_INTEL_25409 "" + IDS_INTEL_25410 "" + IDS_INTEL_25411 "" + IDS_INTEL_25412 "" + IDS_INTEL_25413 "" + IDS_INTEL_25414 "" + IDS_INTEL_25415 "" + IDS_INTEL_25416 "" + IDS_INTEL_25417 "" + IDS_INTEL_25418 "" + IDS_INTEL_25419 "" + IDS_INTEL_25420 "" + IDS_INTEL_25421 "" + IDS_INTEL_25422 "" + IDS_INTEL_25423 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25424 "" + IDS_INTEL_25425 "" + IDS_INTEL_25426 "" + IDS_INTEL_25427 "" + IDS_INTEL_25428 "" + IDS_INTEL_25429 "" + IDS_INTEL_25430 "" + IDS_INTEL_25431 "" + IDS_INTEL_25432 "" + IDS_INTEL_25433 "" + IDS_INTEL_25434 "" + IDS_INTEL_25435 "" + IDS_INTEL_25436 "" + IDS_INTEL_25437 "" + IDS_INTEL_25438 "" + IDS_INTEL_25439 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25440 "" + IDS_INTEL_25441 "Fotografie: Kamal Khubchandani@" + IDS_INTEL_25442 "Brief: Erpressung Kamal@Lieber Kamal,\n\nwie geht es Ihnen? Mir geht es gut. Mein Freund, wie Sie an diesem Bild sehen können, wissen wir, dass Sie Geheimnisse an UNITY weitergegeben haben. Wenn Sie uns nicht bis nächsten Dienstag 5000 Rupien zahlen, werden wir mal sehen, ob Ihr Boss, Anoop Banerjee, nicht vielleicht bereit ist, die Bilder zu kaufen.\n\nBöse Allianz" + IDS_INTEL_25443 "H.A.R.M.-Passwort@An: Das gesamte H.A.R.M.-Personal\n\nDas heutige Passwort sollte eigentlich Mulligatawny heißen, aber mein Gefühl sagt mir, dass der Boss es wieder ändern wird in das übliche: " + IDS_INTEL_25444 "Brief: Fund des H.A.R.M.-Passworts@Agentin Archer,\n\num sich Zutritt zum indischen Hauptquartier von H.A.R.M. zu verschaffen, müssen Sie Balaji Malpani, die rechte Hand von Anoop Banerjee, finden. Er ist verantwortlich für die Erfindung und Verteilung neuer täglicher Passwörter. Schalten Sie ihn entweder aus oder benutzen Sie dieses Aufzeichnungsgerät, um ihn zu belauschen, wenn er Banerjee heute Nachmittag anruft.\nBalaji hat ein Zimmer im Hotel Zum Glücklichen Gast. Bringen Sie die Wanze am Telefon in seinem Apartment an, suchen Sie sich ein Versteck, bis das Gespräch zu Ende ist, und aktivieren Sie dann die Wanze, um das gesamte Gespräch anzuhören.\n\nViel Glück,\nKamal" + IDS_INTEL_25445 "Fotografie: Balaji Malpani@" + IDS_INTEL_25446 "Brief: Erpressung Kamal@Agentin Archer,\n\neine Gangsterbande der Bösen Allianz hat herausgefunden, dass ich Geheimnisse an UNITY weitergebe. Bevor man die nicht erwischt hat, kann ich mich nicht mehr sehen lassen. Ich habe gehört, dass ihr Versteck irgendwo in diesem Stadtteil liegen soll. Bitte versuchen Sie, sie aus dem Verkehr zu ziehen und Beweise für die Erpressung zu finden.\n\nMöge Schiwa Sie beschützen!\nKamal" + IDS_INTEL_25447 "KARTE: Viertel@" + IDS_INTEL_25448 "Brief: Angaraka-Bande@An: Böse Allianz-Studio 4\nVon: Kumar\n\nMeine Freunde, der Vertrag ist fast unterschrieben! Bald können wir der Bösen Allianz auf Wiedersehen sagen und unser erstes Projekt als die Angaraka-Bande beginnen!\n\n(Nicht außerhalb von Studio 4 verteilen!)" + IDS_INTEL_25449 "Brief: Angaraka-Bande@An: Kumar\nVon: Ganesh\n\nWas? Wann haben wir einen neuen Namen bekommen? Angaraka-Bande? Alle werden glauben, dass wir an einem schlimmen Hautausschlag leiden! Wer ist für diesen Quatsch verantwortlich!?! Niemand wird sich daran erinnern, dass Angaraka auch das Amulett ist, das den Träger von Schulden befreit!\n\nWir sollten nicht schlauer sein als uns gut tut, mein Freund!" + IDS_INTEL_25450 "UNUSED" + IDS_INTEL_25451 "" + IDS_INTEL_25452 "" + IDS_INTEL_25453 "" + IDS_INTEL_25454 "" + IDS_INTEL_25455 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25456 "" + IDS_INTEL_25457 "" + IDS_INTEL_25458 "" + IDS_INTEL_25459 "" + IDS_INTEL_25460 "" + IDS_INTEL_25461 "Notiz: Offene Fenster@ACHTUNG, AN ALLE MITARBEITER\n\nDer Zutritt zum Hof ist für Unbefugte verboten. Sollte ich diese Fenster noch einmal offen vorfinden, möge Wischnu den Täter vor meinem Zorn beschützen!\n\nAnoop Banerjee\nLeitender Geschäftsführer" + IDS_INTEL_25462 "Notiz: Unbezahlte Fenster-Rechnung@An: Erin Keyes, H.A.R.M.-Rechnungswesen\nVon: Fensterreinigung Nanda Devi\n\nMs. Keyes, unsere Buchführung weist einen ausstehenden Betrag von 47 Rupien für geleistete Dienste aus. Wir haben bereits versucht, uns in dieser Angelegenheit an Mr. Banerjee in Ihrem indischen Hauptquartier zu wenden, aber er war leider äußerst unkooperativ. Bitte begleichen Sie die ausstehende Zahlung innerhalb von 30 Tagen oder wir werden zur Vergeltung Affenmist gegen die Fenster Ihrer Anlage werfen." + IDS_INTEL_25463 "H.A.R.M.-Memo: Fenster reinigen@An: Anoop Banerjee\nVon: Erin Keyes, H.A.R.M.-Rechnungswesen\n\nMr. Banerjee, ich habe eine Beschwerde von der Firma Fensterreinigung Nanda Devi wegen einer nicht bezahlten Fensterreinigungs-Rechnung erhalten. Bitte erledigen Sie die Angelegenheit auf die übliche Weise." + IDS_INTEL_25464 "H.A.R.M.-Memo: Fenster@An: Fensterreinigung Nanda Devi\nVon: Anoop Banerjee\n\nDas nennen Sie saubere Fenster? Ich verfluche Ihre Mutter, Ihre Schwestern und Ihren Hund. Ich werde Ihnen einen Repräsentanten vorbeischicken, der dafür sorgt, dass Sie die Bezahlung erhalten, die Sie verdienen. Schönen Tag." + IDS_INTEL_25465 "Notiz: Rechnungskorrektur@An: Anoop Banerjee\nKopie: Erin Keyes, H.A.R.M.-Rechnungswesen\nVon: Fensterreinigung Nanda Devi\n\nMr. Banerjee, wir müssen uns sehr entschuldigen! Es scheint so, dass der ausstehende Betrag, den wir Ihnen mitteilten, ein Schreibfehler unsererseits war. Wie fürchterlich dumm von uns! Es tut uns wirklich Leid, Ihnen Unannehmlichkeiten verursacht zu haben! Um dieses unglückliche Missverständnis wieder gutzumachen, freuen wir uns sehr, Ihnen unsere Dienste ab sofort gratis anzubieten!" + IDS_INTEL_25466 "H.A.R.M.-Observierung: B.A.@OBSERVIERUNGSBERICHT 9F\nAchtung: Anoop Banerjee\n\nSir, ich glaube, unsere Freunde werden bald handeln. Ich würde vorschlagen, wir bringen die Ware in die Gefriertruhe im Keller. Die ist sicherer als die in der Angestellten-Lounge.\n\nPrem" + IDS_INTEL_25467 "H.A.R.M.-Observierung: Razzia@OBSERVIERUNGSBERICHT 9H\nAchtung: Anoop Banerjee\n\nSir, PacPac hat den Standort der indischen Zweigstelle der Bösen Allianz ausfindig gemacht! Sie benutzen das alte Kino unten an der Straße! Ich habe eine nächtliche Razzia für nächsten Dienstag um 21.30 Uhr angesetzt, wenn sie ihre Spätvorstellung haben. Ich konnte für Samir und Ajay keine Karten mehr bekommen, aber wir können sie nach Filmbeginn durch die Seitentür hereinlassen.\n\nPrem" + IDS_INTEL_25468 "UNUSED" + IDS_INTEL_25469 "UNUSED" + IDS_INTEL_25470 "UNUSED" + IDS_INTEL_25471 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25472 "" + IDS_INTEL_25473 "" + IDS_INTEL_25474 "" + IDS_INTEL_25475 "" + IDS_INTEL_25476 "" + IDS_INTEL_25477 "" + IDS_INTEL_25478 "" + IDS_INTEL_25479 "" + IDS_INTEL_25480 "" + IDS_INTEL_25481 "Notiz von Kamal: Ausrüstung@Agentin Archer,\n\ndie Böse Allianz hat ihr Hauptquartier in dem alten Kino gegenüber. Ich nehme an, es passt genau zu ihrem theatralischen, übermäßig dramatischen Modus operandi. Ich konnte mir eine Gebäudeskizze beschaffen, die einige Punkte angibt, an denen Sprengladungen den größten Gebäudeschaden anrichten würden. Sprengstoff müssen Sie am Einsatzort suchen.\n\nKamal\n\nP.S. Santa hat Ihnen dieses Paket geschickt." + IDS_INTEL_25482 "Brief: Jetzt durchbrennen!@An Ms. Lala Faqueera,\n14 Pullagura Street\n\nLala,\n\nich mache mir solche Sorgen! Dein Vater möchte immer noch seinen Kopf durchsetzen und dich mit einem anderen Mann verheiraten. Wir müssen bald durchbrennen!\n\nAlles Liebe, \n Prem" + IDS_INTEL_25483 "Brief: Wilde Tochter@Dr. Nallapuneni,\n\nDoktor, ich mache mir große Sorgen wegen meiner Tochter. Mein Mann hat versucht, einen guten Ehemann für sie zu finden, aber niemand will sie haben! Sie ist eine wilde Kratzbürste. Nur für die übelste Sorte von Männern ist sie attraktiv. Was soll ich nur tun?\n\nMit freundlichen Grüßen,\nMrs. Faqueera" + IDS_INTEL_25484 "Brief: Gauri-Amulett@Mrs. Faqueera,\n\nich verstehe Ihre Sorgen. Sie müssen ein Gauri-Amulett und etwas eingelegten Knoblauch kaufen und unter ihrem Bett verstecken, damit sie einen guten Mann findet. Bei meiner eigenen Tochter Phoolwati hat das wahre Wunder gewirkt!\n\nDr. Nallapuneni" + IDS_INTEL_25485 "GEBÄUDESKIZZE: Kino@" + IDS_INTEL_25486 "" + IDS_INTEL_25487 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25488 "" + IDS_INTEL_25489 "" + IDS_INTEL_25490 "" + IDS_INTEL_25491 "" + IDS_INTEL_25492 "" + IDS_INTEL_25493 "" + IDS_INTEL_25494 "" + IDS_INTEL_25495 "" + IDS_INTEL_25496 "" + IDS_INTEL_25497 "" + IDS_INTEL_25498 "" + IDS_INTEL_25499 "" + IDS_INTEL_25500 "" + IDS_INTEL_25501 "Tresorkombination@An: Sicherheits-Assistent Sonal\nVon: Co-Teamchef Madhu\n\nDie Monatsberichte MÜSSEN bis Morgen früh vorliegen. Achten Sie auch darauf, dass die Kassenbelege zusammengerechnet werden. Sie wissen, wie der Boss über Mathematik denkt.\n\nP.S. Ich bin sicher, dass Sie die Kombination für den Tresor wieder vergessen haben. Also, sie lautet 6-23-6." + IDS_INTEL_25502 "B. A. Memo: H.A.R.M.-Hinterhalt@Vijay,\n\ngute Neuigkeiten! Die Zeit für die Rache ist gekommen. Der H.A.R.M.-Veranstaltungs-Direktor hat gerade 30 Plätze für die Vorstellung am Donnerstagabend reserviert. Wir können sie überfallen, sobald die Vorstellung beginnt. Bitte geben Sie Munition an die Männer aus, aber überschreiten Sie nicht die wöchentliche Zuteilung!\n\nCo-Teamchef Madhu" + IDS_INTEL_25503 "B. A. Memo: Sprengkörper@An: Sicherheits-Assistent Sonal\nVon: Co-Teamchef Madhu\n\nDiese Sprengkörper sind für die große Operation am nächsten Donnerstag. Sorgen Sie dafür, dass sie im geheimen Film-Tresor eingeschlossen werden, wo sie sicher aufgehoben sind." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25504 "Notiz: Gefährliche Sandsäcke@Aufgrund der bedauerlichen Unfälle der Junior-Mitarbeiter Ramesh und Samir ist das Betreten der Hauptbühne untersagt, bis die Wartungsabteilung die gefährlichen hängenden Sandsäcke entfernt hat." + IDS_INTEL_25505 "B. A. Memo: Venkatachalapathi@An: Co-Teamchef Madhu\nVon: Teammitglied Vijay\n\nSir, ich möchte mit dem gebotenen Respekt vorschlagen, dass wir Operation Venkatachalapathi umbenennen. Die Leute verwechseln es mit Operation Velatachalapathi. Es ist demoralisierend, mit diesem schändlichen Vorfall verwechselt zu werden. Wir schlagen einen neuen Namen vor: Operation Shakti. Das klingt gut, nicht?" + IDS_INTEL_25506 "B. A. Memo: Venkatachalapathi@An: Teammitglied Vijay\nVon: Co-Teamchef Madhu\n\nVijay, ich kann nicht glauben, dass Sie das jetzt vorschlagen. Das Marketing hat Operation Venkatachalapathi bereits gebilligt. Wissen Sie, was für ein Aufwand es ist, einen neuen Namen zu wählen? Ich kann nichts versprechen." + IDS_INTEL_25507 "B. A. Memo: Wie ist es mit Shakti@An: Marketing\nVon: Co-Teamchef Madhu\n\nIch ersuche förmlich darum, Projekt Venkatachalapathi in Projekt Shakti umzubenennen. Sie müssen zugeben, dass sich Venkatachalapathi nicht gut in unserem neuen Briefkopf macht." + IDS_INTEL_25508 "B. A. Memo: Sind Sie verrückt?@An: Co-Teamchef Madhu\nVon: Marketing\n\nMöge Ganeshas heilige Axt Ihren linken kleinen Finger abhacken! Haben Sie noch nie von Shakti-Cola gehört? Die würden uns mit Vergnügen einen Urheberrechtsprozess reinwürgen. Wir haben unser Budget bereits überzogen. Ihr Gesuch ist abgelehnt. Punktum." + IDS_INTEL_25509 "B. A. Memo: Marketing ist wertlos@An: Teammitglied Vijay\nVon: Co-Teamchef Madhu\n\nWohlan, mein Freund, einmal mehr hat die Marketingabteilung bewiesen, wie wertlos sie ist. Es bleibt bei Projekt Venkatachalapathi." + IDS_INTEL_25510 "Suche nach Markenzeichen: Venkatachalapathi@SUCHE NACH MARKENZEICHEN: Venkatachalapathi\n\nWir haben lediglich zwei Namen gefunden, mit denen es Probleme geben könnte. Einer ist eine kleine Papaya-Plantage, der andere ein Nagetierentsorgungsservice. Wir glauben, die Unterschiede dazu sind so eindeutig, dass es keine Probleme mit dem Markenzeichen bzw. -namen geben dürfte. Gesamtkosten der Suche: 10.000 Rupien." + IDS_INTEL_25511 "Aufforderung zur Unterlassung: Venkatachalapathi@AUFFORDERUNG ZUR UNTERLASSUNG\n\nVon: Venkatachalapathi Nagetierentsorgung\nAn: Mr. Baba Madhu\n\nMr. Madhu, mit diesem Brief setze ich Sie offiziell davon in Kenntnis, dass Sie mein eingetragenes Markenzeichen bzw. -namen verletzen. Bitte unterlassen Sie das auf der Stelle, sonst sehen wir uns vor Gericht!" + IDS_INTEL_25512 "B. A. Memo: Markenzeichen-Bereinigung@An: Wartungsabteilung\nVon: Co-Teamchef Madhu\n\nHaben Sie diesen Unterlassungsbrief gelesen? Ich gehe davon aus, die Wartungsabteilung wird das Problem auf die übliche Weise regeln. Wenn ich es recht bedenke, machen Sie es extra schmerzhaft.\n\nGewiss muss ich in meinem früheren Leben etwas sehr Böses getan haben, dass mir jetzt diese Schikanen auferlegt werden!" + IDS_INTEL_25513 "UNUSED" + IDS_INTEL_25514 "" + IDS_INTEL_25515 "" + IDS_INTEL_25516 "" + IDS_INTEL_25517 "" + IDS_INTEL_25518 "" + IDS_INTEL_25519 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25520 "" + IDS_INTEL_25521 "Notiz: H.A.R.M.-Tresor@Agentin Archer,\n\nes wird nicht einfach sein, in den Tresor zu gelangen. Zuerst müssen Sie die elektronischen Tore und die Überwachungskameras umgehen. Sie sollten außerdem damit rechnen, dass im unteren Bereich Wachen aufgestellt sind.\n\nLeider bin ich niemals weiter als bis zu diesem Punkt gekommen, aber ich habe Anoop über die Lampen an den Wänden sprechen hören. Ich nehme an, die könnten vielleicht ganz nützlich sein.\n\nViel Glück,\nKamal" + IDS_INTEL_25522 "H.A.R.M.-Memo: Tresor-Sicherheit@An: Anoop Banerjee\nVon: Der Direktor\n\nIch habe gerade die Ergebnisse der letzten Sicherheits-Inspektion durchgesehen und war erfreut zu lesen, dass Ihre Bewertung sich in diesem Jahr so dramatisch verbessert hat. Allerdings, viel schlechter hätte sie ja auch nicht werden können, oder? Trotzdem, es ist überaus erfreulich, auch nur den kleinsten Rückgang Ihrer Inkompetenz zu verbuchen. Machen Sie weiter so!" + IDS_INTEL_25523 "Brief: Dank von UNITY@An: Kamal Khubchandami\nVon: Bruno Lawrie, Kommissarischer Direktor von UNITY\n\nIch muss Ihnen herzlich für Ihre unschätzbare und selbstlose Hilfe in dieser Angelegenheit danken. Ich bin nicht ganz sicher, was Ihre Motivation war, uns zu helfen, aber ich versichere Ihnen, dass UNITY Sie großzügig entschädigen wird. Sollten Sie, als Konsequenz Ihres Tuns, nun eine neue Anstellung suchen, bin ich sicher, dass wir da was arrangieren können." + IDS_INTEL_25524 "H.A.R.M.-Memo: Chemikalien-Anforderung@An: Dr. Kussman, Zweigstelle Antarktis\nVon: Anoop Banerjee, H.A.R.M.-Hauptquartier Indien\nBetr.: Projekt Omega Materialien\n\nDie Chemikalien, die Sie bestellt hatten, wurden über die Falklandinseln nach McMurdo geschickt. Der gewünschte Tee ist in der roten Dose. Viel Spaß, mein Freund!" + IDS_INTEL_25525 "Notiz: Wanzen@Agentin Archer,\n\nSanta möchte gern noch mehr über H.A.R.M.s Operationen in Indien herausfinden. Er hat darum gebeten, dass Sie die Telefone von drei wichtigen Mitarbeitern verwanzen. Diese Wanzen werden später von anderen Agenten wieder abgeholt, also müssen Sie sie nur anbringen, um Ihre Aufgabe zu erfüllen. Viel Glück!\n\nKamal" + IDS_INTEL_25526 "Brief: Kamals Antwort@Durchschlag\n\nAn: Bruno Lawrie\nVon: Kamal Khubchandani\n\nIch danke Ihnen für Ihr großzügiges Angebot. Mein Motiv Ihnen zu helfen ist ganz einfach: Ich hab die Schnauze voll. Ich will nicht so tun, als sei ich besonders rechtschaffen, aber vor Kurzem wurde meine Tochter Lakshmi geboren. Als ich sie das erste Mal sah, war ich von einer solch überwältigenden Liebe und Frieden erfüllt, dass ich weinen musste. Danach war es sehr schwierig, zurück an die Arbeit zu gehen und so zu tun, als würde ich das Zusammensein mit diesen Möchtegern-Kriminellen und ihre kleinen Intrigen genießen. Ich habe genug von Abscheulichkeiten." + IDS_INTEL_25527 "Dokument: Projekt Omega@An: Anoop Banerjee\nVon: Dr. Kussman\n\nNun, mein guter Freund, Projekt Omega ist exakt im Plan. Wir hatten ein paar kleinere Rückschläge, aber nichts, was Anlass zur Sorge geben würde. Die Welt wird 1966 niemals vergessen, das Jahr von Omega! Wir werden die Latte bei bösartigen Plänen für das Ende der Welt unerreichbar hoch legen!\n\nAlso, wann werden Sie mich in der Antarktis besuchen kommen? Ich leide unter einem Mangel an intelligenter Konversation. Wir befinden uns etwa zwei Flugstunden südlich von Russkaja. Viel zu tun gibt es hier zwar nicht, aber wir haben einen Pingpong-Tisch!\n" + IDS_INTEL_25528 "Quittung: Wiesel-Ersatz@An: Anoop Banerjee\nVon: GeBöFiTi, Import von gemeingefährlichen, bösartigen und fiesen Tieren\n\nZu unserem Bedauern müssen wir Ihnen mitteilen, dass wir bislang nicht in der Lage waren, wilde und tollwütige Wiesel für Ihre Todesfalle zu besorgen. Unser Lieferant sicherte uns zu, dass eine Lieferung aus Kanada unterwegs sei. Bis zum Eintreffen der Ware bitten wir Sie, diesen provisorischen Ersatz anzunehmen. Obwohl sie nicht so tödlich sind wie tollwütige Wiesel, können diese Kreaturen ziemlich nervtötend sein." + IDS_INTEL_25529 "" + IDS_INTEL_25530 "" + IDS_INTEL_25531 "" + IDS_INTEL_25532 "" + IDS_INTEL_25533 "" + IDS_INTEL_25534 "" + IDS_INTEL_25535 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25536 "" + IDS_INTEL_25537 "" + IDS_INTEL_25538 "" + IDS_INTEL_25539 "" + IDS_INTEL_25540 "" + IDS_INTEL_25541 "Bekanntmachung: Pantomimen-Festival@Sanjay Productions stellt vor\n\nDer weltberühmte\nPIERRE, DER KÖNIG DER PANTOMIME\nund seine Troupe de Pantomime\n\nNur eine Abendvorstellung! Der Kartenvorrat ist begrenzt." + IDS_INTEL_25542 "" + IDS_INTEL_25543 "" + IDS_INTEL_25544 "" + IDS_INTEL_25545 "" + IDS_INTEL_25546 "" + IDS_INTEL_25547 "" + IDS_INTEL_25548 "" + IDS_INTEL_25549 "" + IDS_INTEL_25550 "" + IDS_INTEL_25551 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25552 "" + IDS_INTEL_25553 "" + IDS_INTEL_25554 "" + IDS_INTEL_25555 "" + IDS_INTEL_25556 "" + IDS_INTEL_25557 "" + IDS_INTEL_25558 "" + IDS_INTEL_25559 "" + IDS_INTEL_25560 "" + IDS_INTEL_25561 "Notiz: Tauziehen@Sacre Bleu! Meine Geduld ist bald zu Ende. Zum tausendsten Mal, Tauziehen beginnt man mit der RECHTEN Hand. Dem Nächsten von euch, der eine solch unentschuldbare Inkompetenz in meiner Gegenwart begeht, wird die linke Hand amputiert, als dauerhafte Erinnerung an seine Dummheit.\n\nWir führen eine geheiligte Kunst aus, mes amis! Ehrt sie und ihr werdet in meiner Gnade aufblühen.\n\nPierre" + IDS_INTEL_25562 "Brief: Gescheiterter Pantomime@Liebe Babette,\n\nMon Dieu! Anscheinend mache ich gar nichts richtig! Jeden Tag ein neuer Fehler, eine neue Unzulänglichkeit. Ich kann diesen Selbsthass nicht ertragen! Ich bin ein abscheulicher Makel auf dem göttlichen Angesicht der Pantomime. Ich vermisse dich ganz fürchterlich, meine Süße.\n\nAlles Liebe, \nJacques" + IDS_INTEL_25563 "Pantomimen-Handbuch@DIE KUNST DER PANTOMIME\n\nTechnik ist BEEINDRUCKEND. Kunstfertigkeit ist INTERESSANT. Was nur BEEINDRUCKEND ist, wird schnell vergessen. Der nächste Künstler kommt daher und ist größer als du, schneller, begabter. Wer BEEINDRUCKT, muss sich vergleichen lassen: besser oder schlechter. Souverän dagegen steht, was INTERESSANT ist. Wenn etwas INTERESSANT ist, steht die Zeit still! Das ist der Schlüssel!" + IDS_INTEL_25564 "H.A.R.M.-Akte: Archer-Profil@H.A.R.M.-AKTE 2317: Catherine Archer, aktualisiertes Profil\n\nArcher wurde 1942 als Tochter von Lord William Archer und Catherine Anne MacDougal geboren. Mutter starb an Komplikationen bei der Geburt. Lord Archer warf seine Gesundheit weg und verschleuderte sein Erbe. Er nahm sich das Leben, als Archer 12 Jahre alt war. Sie verbrachte einige Zeit im Waisenhaus und verschiedenen Pflegefamilien, bevor sie fortlief und nach London ging. Dort wurde sie zu einer berüchtigten Fassadenkletterin und unter dem Namen The Fox bekannt. Einige Jahre später wurde sie von Bruno Lawrie angeworben, um für UNITY zu arbeiten." + IDS_INTEL_25565 "Fotografie: Magnus Armstrong@" + IDS_INTEL_25566 "H.A.R.M.-Akte: Archer-Info@H.A.R.M.-AKTE 2345: Catherine Anne Archer (alias The Fox)\n\nGröße: 173 cm\nAugenfarbe: Grün\nHaarfarbe: Braun\nNationalität: Schottisch\nLetzter bestätigter Kontakt: Sibirien" + IDS_INTEL_25567 "H.A.R.M.-Akte: Armstrong@H.A.R.M.-AKTE 1201: Magnus Armstrong\n\nGröße: 190 cm\nAugenfarbe: Blau\nHaarfarbe: Rot\nNationalität: Schottisch\nLetzter bestätigter Kontakt: England" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25568 "Fotografie: Cate Archer@" + IDS_INTEL_25569 "" + IDS_INTEL_25570 "" + IDS_INTEL_25571 "" + IDS_INTEL_25572 "" + IDS_INTEL_25573 "" + IDS_INTEL_25574 "" + IDS_INTEL_25575 "" + IDS_INTEL_25576 "" + IDS_INTEL_25577 "" + IDS_INTEL_25578 "" + IDS_INTEL_25579 "" + IDS_INTEL_25580 "" + IDS_INTEL_25581 "" + IDS_INTEL_25582 "" + IDS_INTEL_25583 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25584 "" + IDS_INTEL_25585 "" + IDS_INTEL_25586 "" + IDS_INTEL_25587 "" + IDS_INTEL_25588 "" + IDS_INTEL_25589 "" + IDS_INTEL_25590 "" + IDS_INTEL_25591 "" + IDS_INTEL_25592 "" + IDS_INTEL_25593 "" + IDS_INTEL_25594 "" + IDS_INTEL_25595 "" + IDS_INTEL_25596 "" + IDS_INTEL_25597 "" + IDS_INTEL_25598 "" + IDS_INTEL_25599 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25640 "" + IDS_INTEL_25641 "H.A.R.M.-Memo: Anmeldung@An: General Schukov\nVon: Dr. Kussman\nBetr.: Projekt Omega: Monatsbericht\n\nGeneral, wir sind bereit, nächste Woche erste Feldversuche durchzuführen, drei Wochen früher als geplant. Haben Ihre Genossen schon eine definitive Entscheidung angesichts dieser einmaligen Gelegenheit gefällt? Ich mache Sie darauf aufmerksam, dass es noch weitere Interessenten gibt. Sollten Sie sich in den nächsten 48 Stunden anmelden, erhalten Sie gratis unsere verlängerte Garantie von 18 Monaten." + IDS_INTEL_25642 "Propagandaliteratur@PROJEKT OMEGA UND SIE!\n\nWenn Sie so wie ich sind, haben auch Sie die Projekt Omega-Statusberichte im monatlichen Rundschreiben gesehen und sich gefragt: " + IDS_INTEL_25643 "H.A.R.M.-Akte: Schukov@H.A.R.M.-AKTE 6987: General Nikolaj Schukov\n\nNach einem Zerwürfnis mit General Kopat in Petrograd derzeit in Sibirien stationiert. Könnte mit der Affäre Schukovs mit Kopats 18 Jahre alter Ehefrau zusammenhängen. Oder seiner 24 Jahre alten Tochter. Schukov ist das ideale Ziel für Projekt Omega, eine perfekte Mischung aus militärischem Rang und mentaler Mittelmäßigkeit. Damit wird er die Vorteile des Projekts erkennen, ohne dessen Unzulänglichkeiten in Betracht zu ziehen." + IDS_INTEL_25644 "H.A.R.M.-Memo: Defekte Türknäufe@An: Dr. Kussman\nVon: Wartungsabteilung\n\nLeider sehen wir uns im Augenblick außerstande, Ihren defekten Türknauf zu reparieren, da wir zur zeit die Sprengstoffe aus dem Lager der Wartungsabteilung entfernen." + IDS_INTEL_25645 "Rechnung für Chemikalien@ACME Chemie\n\nRECHNUNG Nr.4032\n\nKunde: Dr. Karl Kussman\nProdukte: 400 Liter Einbalsamierungsflüssigkeit, 60 Kilogramm doppeltkohlensaures Natrium, 20 Packungen superscharfe Zuckerknaller." + IDS_INTEL_25646 "H.A.R.M.-Memo: Zeitplan-Überziehungen@An: Dr. Kussman\nVon: Der Direktor\n\nIch nehme an, dass ich Sie nicht darauf aufmerksam machen muss, dass wir Gefahr laufen, uneinholbar hinter den Zeitplan zurückzufallen, Doktor. Noch sollte ich Sie daran erinnern müssen, dass Sie persönlich diese Deadline unterschrieben haben. Ein interessantes Wort, " + IDS_INTEL_25647 "Fotografie von Abigail Anders@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25648 "Tagebuch: Hotchkins@Tagebuch von Melbert Hotchkins. Tag 189.\n\nIm Lauf der vergangenen Woche wurde Objekt Nr. 42 (Anders, Joseph, Lt.) zunehmend feindseliger. Wir haben seine Dosis erhöht, aber ich befürchte, wir müssen ihn aufgeben. Es gibt noch eine andere Option, aber dafür müssen wir ihn in die Unterwasser-Anlage in der Ägäis zur Rekonditionierung bringen." + IDS_INTEL_25649 "H.A.R.M.-Akte: Lt. Anders@H.A.R.M.-AKTE 6714: Lt. Joseph Anders\n\nVon US-Militärstützpunkt in Norwegen während Operation Shanghai rekrutiert. Hat eine Ehefrau, Marianne, eine Tochter, Abigail, und einen Terrier, Sparky. Hervorragende Armeekarriere mit sehr viel Kampferfahrung.\n\nNotizen: Was seinen professionellen Hintergrund angeht, so ist er der perfekte Kandidat, aber ich sorge mich wegen seiner starken Familienbande. Sorgfältig beobachten.\n\nDr. Kussman" + IDS_INTEL_25650 "H.A.R.M.-Memo: Feldversuch@An: Dr. Kussman\nVon: Der Direktor\n\nDie Zweigstelle in Indien hat versagt. Es scheint, als hätte Superagentin Cate Archer es geschafft, da in den Tresor zu gelangen. Wir müssen den Zeitplan beschleunigen und die Supersoldaten einem Feldversuch unterziehen. Die gesamte Division soll auf dem Weg nach Indien sein, bevor UNITY dort eintrifft. Wir müssen sicherstellen, dass die Supersoldaten so unverwundbar sind, wie Sie es versprechen.\n\nUnd ich will keine Entschuldigungen über Ihren so genannten abtrünnigen Leutnant hören! Wenn Sie ihre eigenen Testobjekte nicht kontrollieren können, finde ich einen verrückten Wissenschaftler, der das kann." + IDS_INTEL_25651 "H.A.R.M.-Memo: Sprengkörper@An: Wartungsabteilung\nVon: Dr. Kussman\n\nBitte veranlassen Sie, dass die Sprengladungen aus Labor 2 sofort in das Lager der Wartungsabteilung gebracht werden. Ich sollte nicht darauf hinweisen müssen, dass es keine gute Idee ist, Sprengstoff an Orten zu lagern, in deren Nähe Waffentests durchgeführt werden. Vielleicht möchten Sie ihn ja unter Ihren Pritschen lagern?" + IDS_INTEL_25652 "Supersoldat-Blaupause@" + IDS_INTEL_25653 "H.A.R.M.-Memo: Vorräte@An: Dr. Kussman\nVon: Dimitrij Volkov, Direktor Exekutiv-Aktionen\n\nVielen Dank für die Genesungswünsche. Das war sehr nett von Ihnen, wenn man bedenkt, dass ich vor all diesen Jahren Ihren Onkel in Oslo umbrachte. Ich weiß, Sie standen sich sehr nahe.\n\nWas nun mein Missgeschick angeht, so lief ich kurz nach dem Ableben von Baroness Dumas, unserer ruhmreichen ehemaligen Stellvertretenden Direktorin, Ski in den Alpen und wollte ein Kind über den Haufen fahren. Dabei erwischte ich leider seine Schwester und stürzte mit ihr dreißig Meter in die Tiefe, direkt in ein kleines Café. Glücklicherweise bremste sie meinen Fall ab." + IDS_INTEL_25654 "Statusbericht: Objekt Nr. 42@INTERNER STATUSBERICHT\n(Nicht zur Veröffentlichung im monatlichen Rundschreiben!)\n\nIm Großen und Ganzen sind unsere Ergebnisse äußerst zufrieden stellend. Wir liegen fast zwei Wochen vor dem Zeitplan. Allerdings haben wir auch einen bedauerlichen Rückschlag hinnehmen müssen. Objekt Nr.42, einer unserer beiden Leutnants, zeigt immer noch Anzeichen von Autonomie. Ausfälle haben an Häufigkeit und Aggression zugenommen. Empfehle totale Rekonditionierung bei nächster Gelegenheit. Projekt Omega kann sich keine Abtrünnigen leisten!" + IDS_INTEL_25655 "" + IDS_INTEL_25656 "" + IDS_INTEL_25657 "" + IDS_INTEL_25658 "" + IDS_INTEL_25659 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25680 "" + IDS_INTEL_25681 "Notiz: Bestrafung@An: Gesamtes Personal\nVon: Anoop Banerjee\n\nMeine Freunde, es scheint, als ob der Direktor seinen Zorn an uns auslässt, anstatt an den erbärmlichen Pantomimen. Wenn ich persönlich auch gewillt bin, mich schuldig zu bekennen, auf die Spionin hereingefallen zu sein, hat der Franzose immer noch Schuld daran, dass sie entkommen konnte. Aus diesem Grund habe ich mich entschlossen, bei H.A.R.M. zu kündigen und eine private Sicherheitsfirma zu gründen. Diejenigen unter Ihnen, die an einem neuen Wirkungskreis interessiert sind, können gern bei diesem spannenden Unternehmen mitmachen." + IDS_INTEL_25682 "" + IDS_INTEL_25683 "" + IDS_INTEL_25684 "" + IDS_INTEL_25685 "" + IDS_INTEL_25686 "" + IDS_INTEL_25687 "" + IDS_INTEL_25688 "" + IDS_INTEL_25689 "" + IDS_INTEL_25690 "" + IDS_INTEL_25691 "" + IDS_INTEL_25692 "" + IDS_INTEL_25693 "" + IDS_INTEL_25694 "" + IDS_INTEL_25695 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25696 "" + IDS_INTEL_25697 "" + IDS_INTEL_25698 "" + IDS_INTEL_25699 "" + IDS_INTEL_25700 "" + IDS_INTEL_25701 "" + IDS_INTEL_25702 "" + IDS_INTEL_25703 "" + IDS_INTEL_25704 "" + IDS_INTEL_25705 "" + IDS_INTEL_25706 "" + IDS_INTEL_25707 "" + IDS_INTEL_25708 "" + IDS_INTEL_25709 "" + IDS_INTEL_25710 "" + IDS_INTEL_25711 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25712 "" + IDS_INTEL_25713 "" + IDS_INTEL_25714 "" + IDS_INTEL_25715 "" + IDS_INTEL_25716 "" + IDS_INTEL_25717 "" + IDS_INTEL_25718 "" + IDS_INTEL_25719 "" + IDS_INTEL_25720 "" + IDS_INTEL_25721 "UNITY-Memo: Jones im Urlaub@An: Gesamtes Personal\nVon: Mr. Jones\n\nBitte denken Sie daran, dass ich ab kommendem Montag für drei Wochen in Urlaub bin. Bruno Lawrie wird in meiner Abwesenheit Kommissarischer UNITY-Direktor sein. Bitte bringen Sie ihm alles Wohlwollen entgegen. Bis bald!" + IDS_INTEL_25722 "Memo: Brunos Bitte@An: Gesamtes Personal\nVon: Bruno Lawrie, Kommissarischer Direktor\n\nIch weiß, dass Sie es alle äußerst witzig finden, dass mir die Leitung übertragen wurde, aber bitte, versuchen Sie wenigstens anstandshalber, dem Drang zu widerstehen, mich mit " + IDS_INTEL_25723 "Brief: Klatsch und Tratsch@Liebe Emma,\n\nDarling! Wie geht es dir? Seit du weg bist, ist es ja so langweilig hier. Ich habe gehört, dass sie den netten Mr. Goodman gefeuert haben, in den du so verknallt warst. Schrecklich, sage ich. Phyllis ist immer noch mit Bob zusammen. Man sollte meinen, dass sie wenigstens etwas mehr auf seine Kleidung achten würde! Nun ja, zurück zu den Akten. Schreib mir!\n\nTiffany" + IDS_INTEL_25724 "Notiz: Dr. Schenker Versteck@Cate,\n\nich verstecke mich.\n\nHerzlichst,\nDr. Schenker" + IDS_INTEL_25725 "Bericht: SITBER@SITUATIONSBERICHT\nProjekt Omega\nAngefertigt von Isaac Barnes\n\nUNITY-Agenten haben das Wesen und die Aufgaben von Projekt Omega herausgefunden, die die Invasion von Khios mit fast unzerstörbaren, chemisch hergestellten Supersoldaten beinhaltet. Die entsprechenden Dokumente weisen darauf hin, dass die Sowjets eine Art kommunistisches Super-Kasino planen, aber wir vermuten, dass das wahre Ziel die Ausbeutung der wertvollen Natur- und Bodenschätze der Insel ist. Es ist offensichtlich, dass diese Art der erzwungenen, militaristischen Ausbeutung durch die Sowjets mit der genialen, manipulativen Ausbeutung, die von der NATO geplant ist, in Konflikt geraten wird. Wir müssen schnell und entschieden handeln." + IDS_INTEL_25726 "Memo: Brunos Bitte@An: Gesamtes Personal\nVon: Bruno Lawrie, Kommissarischer Direktor\n\nVielleicht habe ich mich in meiner vorherigen Bitte nicht genau genug ausgedrückt. Ich wäre ewig dankbar, wenn Sie unsäglich übertriebene Anreden jeglicher Art vermeiden würden, einschließlich:\n\n- Mein Fürst\n- Euer Ehren\n- Eure Heiligkeit\n- Mein höchster Befehlshaber\n\nVielen Dank." + IDS_INTEL_25727 "SKIZZE: Hai-U-Boot@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25728 "UNUSED" + IDS_INTEL_25729 "UNUSED" + IDS_INTEL_25730 "UNUSED" + IDS_INTEL_25731 "UNUSED" + IDS_INTEL_25732 "UNUSED" + IDS_INTEL_25733 "UNUSED" + IDS_INTEL_25734 "UNUSED" + IDS_INTEL_25735 "UNUSED" + IDS_INTEL_25736 "UNUSED" + IDS_INTEL_25737 "UNUSED" + IDS_INTEL_25738 "UNUSED" + IDS_INTEL_25739 "UNUSED" + IDS_INTEL_25740 "" + IDS_INTEL_25741 "Dienstplan@DIENSTPLANÄNDERUNG\n\nBitte beachten, dass Franks Team diese Woche die Tagschicht übernimmt. Ich nehme an, das kommt dabei heraus, wenn man wie ein kleines Mädchen rumheult, dass man nicht genug Schlaf bekommt! Meine Güte." + IDS_INTEL_25742 "Frachtbrief für neue Uniformen@Frachtbrief\n\nVier Dutzend H.A.R.M.-Uniformen (schwarz und rot). \n\nDie alten Uniformen bitte zur Wiederaufbereitung ins Hauptquartier zurückschicken." + IDS_INTEL_25743 "Notiz: Geheimhaltung@An: Gesamtes Personal\nVon: Commander Pim\n\nWie Sie wissen, sind die supergeheimen U-Boote der Schlüssel für den Erfolg von Projekt Omega. Aus diesem Grund müssen wir einen Code der striktesten Geheimhaltung einhalten, was ihre Existenz und ihre Fähigkeiten angeht. Sprechen Sie nicht darüber, auch nicht mit Ihren Ehefrauen oder Freundinnen. Lockerer Mund - das Schiff auf dem Grund, heißt es.\n\nDenken Sie daran, was H.A.R.M. bedeutet!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25744 "Motto Nr.1@An: Gesamtes Personal\nVon: Megan O’Malledy, Moraloffizierin\n\nHallo, alle zusammen! Wie Sie wissen, haben wir kürzlich einen Wettbewerb abgehalten, bei dem alle Angestellten ihre Vorschläge für das neue Motto von H.A.R.M. einreichen konnten. Vielen Dank an die vier Teilnehmer! Leider ist nur Platz für ein Motto auf dem H.A.R.M.-Emblem, also haben drei von Ihnen einfach Pech gehabt! Hier der drittplatzierte Vorschlag:\n\n" + IDS_INTEL_25745 "Brief: Neue Uniformen@He, Rodney,\n\nkannst du dir vorstellen, dass sie endlich einmal auf uns vom Fußvolk gehört und uns anständige Uniformen besorgt haben? Ich hoffe, sie machen das Kompaniefoto neu. Kannst du mich mit Margaret verkuppeln, wenn ich wieder zurück bin? Sie ist echt scharf!\n\nDein Kumpel \nNathan" + IDS_INTEL_25746 "Brief: Clarks Antrag@Liebe Martha,\n\nseit jenem schicksalhaften Tag in Marokko leide ich unsägliche Qualen. Seit Monaten geißele ich mich innerlich für meine unüberlegte Entscheidung. Letzten Monat habe ich meine Frau verlassen und mich von der Sowjetunion losgesagt, um bei einer unabhängigen Firma mit besseren Vergünstigungen und einem ausgezeichneten Gewinnbeteiligungsprogramm zu arbeiten. Ich vermisse dich ganz fürchterlich und möchte, dass wir wieder zusammen sind. Willst du mich wieder zurücknehmen?\n\nClark" + IDS_INTEL_25747 "Motto Nr.2@An: Gesamtes Personal\nVon: Megan O’Malledy, Moraloffizierin\n\nHallo, Leute! Hier der zweitplatzierte Vorschlag in unserem Motto-Wettbewerb:\n\n" + IDS_INTEL_25748 "Motto Nr.3@An: Gesamtes Personal\nVon: Megan O’Malledy, Moraloffizierin\n\nHallihallo, Kollegen und H.A.R.M.-Mitarbeiter! Ich habe die Ehre, das neue H.A.R.M.-Motto vorzustellen, eingereicht von Dimitrij Volkov, unserem ruhmreichen Direktor für Exekutiv-Aktionen:\n\n" + IDS_INTEL_25749 "Notiz: Briefkopf@An: Alle Sektions-Chefs\nVon: Verwaltung\n\nDer neue H.A.R.M.-Briefkopf ist eingetroffen! Die Versorgungsabteilung wird das alte Briefpapier diese Woche zur Wiederaufbereitung abholen." + IDS_INTEL_25750 "H.A.R.M.-Memo: Epsilon - Beendigung@An: Professor Hibbard\nVon: Commander Pim\n\nMan informierte mich, dass Sie sich beim Hauptquartier über die Beendigung von Projekt Epsilon beschwert haben. Mein lieber Professor, Sie können unmöglich glauben, dass bei diesem Schlamassel noch etwas zu retten sei. Das Letzte, was wir so kurz vor Stufe Omega brauchen können, ist eine allzu ehrgeizige und schlecht geführte Ablenkung wie Epsilon, die unsere Ressourcen aufbraucht und die Moral untergräbt." + IDS_INTEL_25751 "UNUSED" + IDS_INTEL_25752 "Notiz: Roboter im Verbindungsgang@DRINGENDE NOTIZ!!!\n\nUnter KEINEN Umständen dürfen Roboter im Verbindungsgang eingesetzt werden. Ihre Zielerfassungssysteme sind nicht weit genug entwickelt, um zwischen gegnerischen Agenten und großen Fischen unterscheiden zu können. Ich bin sicher, auch der am wenigsten Phantasiebegabte unter Ihnen kann vorhersehen, was es für Folgen hätte, wenn Roboter durch das Glas auf vorbeischwimmende Meeresbewohner schießen." + IDS_INTEL_25753 "UNUSED" + IDS_INTEL_25754 "UNUSED" + IDS_INTEL_25755 "UNUSED" + IDS_INTEL_25756 "UNUSED" + IDS_INTEL_25757 "UNUSED" + IDS_INTEL_25758 "UNUSED" + IDS_INTEL_25759 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25760 "" + IDS_INTEL_25761 "H.A.R.M.-Memo: Objekt Nr.42@An: Dr. Hall\nVon: Dr. Kussman\n\nWenn man die enormen Ausgaben für die Entwicklung eines Supersoldaten bedenkt, finde ich, dass die einzig vernünftige Vorgehensweise darin besteht, den Versuch zu machen, Objekt Nr. 42 einer Rekonditionierung zu unterziehen. Meine Forschungen weisen darauf hin, dass weiterer Kontakt mit der Lösung wahrscheinlich eine kumulative Wirkung haben wird, demnach ist es immer noch gut möglich, dass wir Lt. Anders retten können. Es ist mit Sicherheit einen Versuch wert!" + IDS_INTEL_25762 "H.A.R.M.-Memo: Bottiche@An: Doktor Hall\nVon: Wartungsabteilung\n\nWir haben die Objekt-Bottiche für die Tests nach Ihren Angaben installiert. Wir werden diese Woche wegen des Meltdown der Klimaanlagen sehr viel zu tun haben, sollten also Änderungen notwendig sein, teilen Sie uns dies bitte im Voraus (d. h. 24 Stunden vorher, nicht 15 Minuten) mit." + IDS_INTEL_25763 "H.A.R.M.-Memo: Armstrong@An: Gesamtes Personal\nVon: Commander Pim\n\nBitte nehmen Sie zur Kenntnis, dass der Bereich der Test-Objekte von niemandem außer von Omega-Team-Mitgliedern betreten werden darf. Dies gilt bis auf weiteres. Im Moment sind bei uns zwei äußerst gefährliche Individuen untergebracht, aber Dr. Hall hat uns versichert, dass sie bis Ende der Woche sanft sein werden wie kleine Kätzchen.\n\nDenken Sie daran, was H.A.R.M. bedeutet!" + IDS_INTEL_25764 "H.A.R.M.-Memo: Roboter außer Betrieb@An: Konfuzius Lee, Roboter-Abt.\nVon: Commander Pim\n\nMr. Lee, heute morgen fand ich einen Roboter außer Betrieb auf dem Crew-Deck. Er selbst scheint den Kurzschluss ausgelöst zu haben, der ihn außer Betrieb setzte, indem er eine Gabel in eine Steckdose stieß. Ist dieses Verhalten normal?" + IDS_INTEL_25765 "H.A.R.M.-Memo: Roboter-Fehlfunktion@An: Commander Pim\nVon: Konfuzius Lee, Roboter-Abt.\n\nCommander, wie Sie sich erinnern werden, wurde mir befohlen, die Bauspezifikationen von Sicherheitschef Fenster auf das Genaueste zu befolgen, was ich allerdings nur ungern getan habe. Während Sicherheitschef Fenster größten Wert darauf legte, die Roboter unempfindlich gegenüber kleineren Waffen und sogar den stärksten Sprengkörpern zu machen, hat er nicht daran gedacht, die Schaltungskreise zu isolieren. Aus diesem Grund sind sie Strom gegenüber sehr empfindlich. Das ist nicht der erste Bericht über den Selbstmord eines Roboters. Vielleicht liegt es daran, dass sie für Projekt Omega nicht angenommen wurden?" + IDS_INTEL_25766 "H.A.R.M.-Memo: Service-Abt.@An: Alle Teamchefs\nVon: Commander Pim\nPriorität: STRENG GEHEIM\n\nMit diesem Kommuniqué möchten wir Sie auf eine Sitzung an diesem Donnerstag aufmerksam machen, bei der der einzige Tagesordnungspunkt die sich zuspitzende Situation mit der Service-Abteilung für Supercomputer sein wird. Wir müssen entweder das neue Anforderungssystem komplett überholen oder sechzehn neue Service-Repräsentanten einstellen, um mit dem Arbeitsaufkommen fertig zu werden. Angesichts unserer bereits astronomischen Verwaltungskosten ist eine solch dramatische Aufstockung des Personals nicht wirklich eine Alternative." + IDS_INTEL_25767 "Supercomputer-Handbuch@Supercomputer-Benutzerhandbuch, Anhang 18-G" + IDS_INTEL_25768 "UNUSED" + IDS_INTEL_25769 "UNUSED" + IDS_INTEL_25770 "UNUSED" + IDS_INTEL_25771 "Notiz: Pinkelpause@Mache gerade Pinkelpause. Bin in 5 Minuten wieder da.\n\nSpencer" + IDS_INTEL_25772 "Katalog-Anforderungsformular@ANFORDERUNGSFORMULAR 207-B\n\nProdukt: Supercomputerservice-Handbuch\nArtikelnummer: #349295-290948-2934/Z\nWie sind Sie an diese Produktnummer gekommen?\n (x) Supercomputerservice-Produktkatalog\n ( ) durch einen Freund\n ( ) Erpressung\n ( ) hab ich mir ausgedacht" + IDS_INTEL_25773 "Supercomputer-Benutzerhandbuch@Supercomputer-Benutzerhandbuch." + IDS_INTEL_25774 "Supercomputerservice-Produktkatalog@Supercomputerservice-Produktkatalog" + IDS_INTEL_25775 "H.A.R.M.-Memo: Nicht-Bezahlung@An: General Schukov\nVon: Erin Keyes, H.A.R.M.-Rechnungswesen\n\nBitte beachten Sie, dass, sollten Sie die ausstehende Rechnung für Ihr Supersoldaten-Lösung-Platin-Plus-Paket über 1 Mio $ (zzgl. 612,47 $ für Verpackung und Porto) nicht begleichen, H.A.R.M. laut den Bedingungen in der Absichtserklärung autorisiert ist, Stufe Omega zu Lasten der Sowjetunion einzuführen. Sollten Sie diesen Betrag bereits in einem Offshore-Konto deponiert haben, betrachten Sie diese Mitteilung als gegenstandslos.\n\n H.A.R.M. freut sich auf weitere illegale Transaktionen mit Ihnen!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25776 "H.A.R.M.-Memo: Armstrongs Schicksal@An: Commander Pim\nVon: Büro des Direktors\n\nDer Direktor hat für Magnus Armstrong eine passende Bestrafung ausgewählt, dessen moralische Ambivalenz und nationalistische Neigungen indirekt zur Auflösung des Projekts Lambda und der Zerstörung des Dumas-Alpenschlosses geführt haben. Da seine Loyalität so inkonsistent ist, werden wir sie zwangsweise verstärken... indem wir aus ihm einen Supersoldaten machen! Bringen Sie ihn zur sofortigen Vollstreckung in die Labors in Untergeschoss 4." + IDS_INTEL_25777 "H.A.R.M.-Memo: Supergeheimes U-Boot@An: Commander Pim\nVon: Kapitän Clayton\n\nDie Jungfernfahrt des supergeheimen U-Bootes war ein unerwarteter Erfolg (abgesehen von ein paar Lecks im Maschinenraum und der Tatsache, dass wir aus unerfindlichen Gründen 15 Minuten lang keinen Strom hatten). Es freut mich auch, berichten zu können, dass die Radartests die Erwartungen bei weitem übertroffen haben. Wir konnten uns an ein US-Kriegsschiff heranschleichen und Beleidigungen auf den Rumpf schweißen, die beim nächsten Trockendock-Aufenthalt für einen gewaltigen Aufruhr sorgen sollten." + IDS_INTEL_25778 "UNUSED" + IDS_INTEL_25779 "UNUSED" + IDS_INTEL_25780 "" + IDS_INTEL_25781 "H.A.R.M.-Memo: Privat-Lounge@An: Commander Pim\nVon: Der Direktor\n\nCommander, meine Privat-Lounge darf von niemandem betreten werden, nicht einmal von Ihnen. Versuchen Sie gar nicht erst zu leugnen, ich habe die leere Champagnerflasche auf Fingerabdrücke untersuchen lassen. Ich bin sicher, Sie können sich denken, von wem sie stammen. Diese Lounge ist meine Fluchtkapsel für den Fall eines Notfalls auf dem Stützpunkt. Wenn ich schon Stunden auf Rettung warten muss, dann will ich das nicht inmitten der Abfälle von jemand anderem tun." + IDS_INTEL_25782 "Brief: Epsilon-Gerücht@Wes,\n\nhast du das Gerücht über Epsilon gehört? Schreib mal schnell deinen Lebenslauf! Ich habe gehört, M.A.L.A.D.Y. stellt Leute ein. Kennst du nicht jemanden bei denen? Vielleicht kannst du ein gutes Wort für mich einlegen.\n\nJames" + IDS_INTEL_25783 "Brief: Epsilon-Gerücht nicht wahr@James,\n\nsei doch nicht so leichtgläubig! Projekt Epsilon wird ein Riesenerfolg! Professor Hibbard hat mir versichert, dass an den Gerüchten nichts dran ist. Ich glaube ihm!\n\nWes" + IDS_INTEL_25784 "UNUSED" + IDS_INTEL_25785 "UNUSED" + IDS_INTEL_25786 "Beschwerdeformular@H.A.R.M.-ANGESTELLTEN-BESCHWERDEFORMULAR\nGrund für die Beschwerde: Teamgeistübungen.\nKommentare: Seitdem diese ganze Umstrukturierung begonnen hat, geht der Laden den Bach runter. Zuerst die Uniformen. Dann das Logo. Dann diese ganze Markenzeichen-Sache mit Harten Alternativen Rundungen für Männer oder wie auch immer das hieß. Und jetzt sollen wir jeden Tag um 6 Uhr aufstehen für " + IDS_INTEL_25787 "Checkliste der Wartungsabteilung@WARTUNGSABTEILUNG-CHECKLISTE:\n\n (x) Undichte Rohranschlüsse\n (x) Feuergefahr\n (x) Unvorschriftsmäßige Lagerung von Chemikalien\n (x) Rutschige Laufstege " + IDS_INTEL_25788 "Fotografie von Super-U-Boot@" + IDS_INTEL_25789 "H.A.R.M.-Memo: Epsilon-Entlassungen@An: Gesamtes Personal\nVon: Commander Pim\n\nDas Projekt-Epsilon-Team ist wegen völliger Inkompetenz gefeuert worden. Möglicherweise werden Sie die Leute an den Fenstern draußen vorbeischweben sehen, also keine Panik.\n\nWir sollten das als Hinweis nehmen, die Bewerbungen beim nächsten Mal gründlicher zu studieren!\n\nDenkt dran, was H.A.R.M. bedeutet!" + IDS_INTEL_25790 "UNUSED" + IDS_INTEL_25791 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25792 "" + IDS_INTEL_25793 "" + IDS_INTEL_25794 "" + IDS_INTEL_25795 "" + IDS_INTEL_25796 "" + IDS_INTEL_25797 "" + IDS_INTEL_25798 "" + IDS_INTEL_25799 "" + IDS_INTEL_25800 "" + IDS_INTEL_25801 "H.A.R.M.-Memo: Unser amerikanischer Freund@An: Commander Pim\nVon: Der Direktor\n\nLaut unserem eifrigen amerikanischem Freund können die USA es gar nicht abwarten, so bald wie möglich einen Atomkrieg zu beginnen. Es fehlt nur noch ein ausreichender Grund. Er hat unseren bescheidenen Vorschlag mit größtem Vergnügen begrüßt. Ich denke, wir haben den perfekten Verbündeten gefunden." + IDS_INTEL_25802 "H.A.R.M.-Memo: Roboter@An: Konfuzius Lee\nVon: Hugo Madmiller\n\nSir, ich bin am Ende meiner Kräfte. Jedes Mal, wenn jemand ein Problem mit einem dieser blöden Roboter hat, bekomme ich einen Vortrag zu hören. Heute musste ich Keith Stevens Erzählung über die Roboter anhören, die er entworfen hat, als er noch bei Mörderleicht arbeitete. Ich habe versucht, ihm zu sagen, dass wir die Roboter nicht entworfen haben, aber er hat mich einfach weiter belästigt. Ich hätte ihm am liebsten eine reingehauen." + IDS_INTEL_25803 "H.A.R.M.-Memo: Roboter@An: J.P. Fenster, Sicherheitschef\nVon: Konfuzius Lee, Roboter-Abt.\n\nIch habe jetzt alle Beschwerden über die Superroboter an das Büro des Direktors weitergeleitet, zusammen mit Ihren Original-Bauspezifikationen. Ich glaube, Sie werden merken, dass Ihr lächerlicher Versuch, mich für die Unzulänglichkeiten der Roboter verantwortlich zu machen, einer genaueren Betrachtung nicht standhält. Bevor Sie Ihre nächste Spezi abgeben (vorausgesetzt, Sie leben noch so lange), sollten Sie vielleicht DIE SCHOTTS AUSMESSEN UND SO SICHERSTELLEN, DASS DIE ROBOTER HINDURCHPASSEN, SIE IDIOT!!!" + IDS_INTEL_25804 "Brief: Gerücht?@Bill,\n\nstimmt es, was in Indien passiert ist? Und jetzt mit Epsilon? Dieser Laden braucht eine Gewerkschaft!\n\nRhett" + IDS_INTEL_25805 "UNUSED" + IDS_INTEL_25806 "Notiz: Roboter und Wasser@ACHTUNG, GESAMTES PERSONAL:\n\nDank der großartigen Bauspezifikationen von Sicherheitschef Fenster haben die Superroboter ab einem Feuchtigkeitsgehalt von ca. 60 Prozent Fehlfunktionen. Ich muss aus diesem Grund wohl nicht noch extra erwähnen, dass direkter Kontakt mit Wasser in diesem Fall eine SEHR SCHLECHTE IDEE ist. Roboter sind von feuchten Räumen fern zu halten." + IDS_INTEL_25807 "Brief: Marthas Antwort@Clark,\n\nmeine Mutter hat deinen Brief an mich weitergeleitet. Du denkst wohl, ich bin vollkommen blöd. Zu dir zurückkehren? Nachdem du mich auf eine solch schändliche Weise in Marokko zurückgelassen hast? Ich war am Boden zerstört, Clark. Ich bin wochenlang in der Wüste herumgeirrt, außer mir vor Schmerz, bis Berber-Nomaden mich fast verhungert bei Merzouga gefunden haben. Clark, ich habe mich in die Wüste verliebt. Die Leere, die du mit deinen Lügen und deinem Betrug in meinem Herzen hinterlassen hast, ist jetzt mit wahrer Verehrung für die großartige Sahara erfüllt. Sie ist mehr Freund für mich, als du jemals warst.\n\nMartha" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25808 "H.A.R.M.-Memo: CT-180@An: Commander Pim\nVon: Teammitglied Miller\n\nIch kann meine Analyse der UNITY-CT-180 nicht beenden, da ich das Munitionsgehäuse anscheinend an meinen Schreibtisch festgeklebt habe. Die Wartungsabteilung wurde unterrichtet. Ich hoffe, dass ich morgen wieder einsatzbereit bin." + IDS_INTEL_25809 "H.A.R.M.-Memo: Magnus Armstrong@An: Sicherheit\nVon: Commander Pim\n\nDer Direktor wird heute hier erwartet. Er will sich wahrscheinlich über Armstrong auslassen, sorgen Sie daher für auf Abruf bereite Sicherheitsleute. Wir wollen keine unglückseligen Unfälle." + IDS_INTEL_25810 "" + IDS_INTEL_25811 "" + IDS_INTEL_25812 "" + IDS_INTEL_25813 "" + IDS_INTEL_25814 "" + IDS_INTEL_25815 "" + IDS_INTEL_25816 "" + IDS_INTEL_25817 "" + IDS_INTEL_25818 "" + IDS_INTEL_25819 "" + IDS_INTEL_25820 "" + IDS_INTEL_25821 "" + IDS_INTEL_25822 "" + IDS_INTEL_25823 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25824 "" + IDS_INTEL_25825 "" + IDS_INTEL_25826 "" + IDS_INTEL_25827 "" + IDS_INTEL_25828 "" + IDS_INTEL_25829 "" + IDS_INTEL_25830 "" + IDS_INTEL_25831 "" + IDS_INTEL_25832 "" + IDS_INTEL_25833 "" + IDS_INTEL_25834 "" + IDS_INTEL_25835 "" + IDS_INTEL_25836 "" + IDS_INTEL_25837 "" + IDS_INTEL_25838 "" + IDS_INTEL_25839 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25840 "" + IDS_INTEL_25841 "" + IDS_INTEL_25842 "" + IDS_INTEL_25843 "" + IDS_INTEL_25844 "" + IDS_INTEL_25845 "" + IDS_INTEL_25846 "" + IDS_INTEL_25847 "" + IDS_INTEL_25848 "" + IDS_INTEL_25849 "" + IDS_INTEL_25850 "" + IDS_INTEL_25851 "" + IDS_INTEL_25852 "" + IDS_INTEL_25853 "" + IDS_INTEL_25854 "" + IDS_INTEL_25855 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25856 "" + IDS_INTEL_25857 "" + IDS_INTEL_25858 "" + IDS_INTEL_25859 "" + IDS_INTEL_25860 "" + IDS_INTEL_25861 "H.A.R.M.-Memo: Positives Denken@An: Gesamtes Personal\nVon: Megan O'Malledy, Moraloffizierin\n\nIch weiß, dass wir in einer gemeinen und schädlichen Branche arbeiten, die stolz darauf ist, Zerstörung und Leiden zu verursachen, aber das ist noch lange kein Grund für eine negative Einstellung. Ich habe in der letzten Zeit eine Menge Gemurre gehört. Ich weiß, dass einigen von Ihnen die Uniformen nicht gefallen, die ich entworfen habe. Oder das neue Logo. Das ist schon okay, wirklich. Meine Gefühle sind überhaupt nicht verletzt worden. Ich setze einfach mein glückliches Gesicht auf und alles ist wunderbar, erste Sahne. Wenn man mir ein mürrisches Gesicht zeigt, drehe ich es einfach um. Ihr herzlosen Bastarde. Ich hoffe, Ihr werdet alle in der Hölle braten." + IDS_INTEL_25862 "" + IDS_INTEL_25863 "" + IDS_INTEL_25864 "" + IDS_INTEL_25865 "" + IDS_INTEL_25866 "" + IDS_INTEL_25867 "" + IDS_INTEL_25868 "" + IDS_INTEL_25869 "" + IDS_INTEL_25870 "" + IDS_INTEL_25871 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25872 "" + IDS_INTEL_25873 "" + IDS_INTEL_25874 "" + IDS_INTEL_25875 "" + IDS_INTEL_25876 "" + IDS_INTEL_25877 "" + IDS_INTEL_25878 "" + IDS_INTEL_25879 "" + IDS_INTEL_25880 "" + IDS_INTEL_25881 "Testament@Testament\n\nIch, Frank J. Thompson, im Vollbesitz meiner geistigen Kräfte, vermache hiermit mein Auto und meine Comic-Heft-Sammlung meinem Neffen Chuck. Die 5.000 $ in bar unter meiner Matratze gehen an meine Mutter, um die Miete für das letzte Jahr zu begleichen. Entschuldige, Mama, dass du es erst jetzt bekommst. Meinem nichtsnutzigen Bruder Larry hinterlasse ich NICHTS! Wenn ich es mir überlege, Larry, dann hinterlasse ich dir diesen Ratschlag: Fang an zu leben, denn von dem, was von meinem Leben übrig ist, bekommst du nichts!" + IDS_INTEL_25882 "Liebesbrief@Fred,\n\nich habe dich immer geliebt.\n\nGordon" + IDS_INTEL_25883 "" + IDS_INTEL_25884 "" + IDS_INTEL_25885 "" + IDS_INTEL_25886 "" + IDS_INTEL_25887 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25888 "" + IDS_INTEL_25889 "" + IDS_INTEL_25890 "" + IDS_INTEL_25891 "" + IDS_INTEL_25892 "" + IDS_INTEL_25893 "" + IDS_INTEL_25894 "" + IDS_INTEL_25895 "" + IDS_INTEL_25896 "" + IDS_INTEL_25897 "" + IDS_INTEL_25898 "" + IDS_INTEL_25899 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25920 "" + IDS_INTEL_25921 "Brief: Onkel Winston@Lieber Eustace,\n\nich habe seit gestern Nachmittag vergeblich versucht, dich telefonisch zu erreichen, deshalb muss ich dir jetzt schreiben. Ich habe heute mit Onkel Winston gesprochen. Es geht ihm schon viel besser, nachdem er den Nierenstein losgeworden ist. Der Doktor sagt, er war so groß wie der Hope-Diamant. Ich bin sicher, dass er sich über einen Anruf von seinem Lieblingsneffen sehr freuen würde, aber ich nehme an, das ist wohl zu viel verlangt.\n\nDeine Mutter" + IDS_INTEL_25922 "Brief: Felicia Pullbutter@Lieber Eustace,\n\ngestern Abend habe ich Shirley Pullbutter im Club getroffen. Sie hatte ein paar SEHR interessante Neuigkeiten von Felicia. Es scheint ganz so, dass ihr Ehemann, dieser fürchterliche Rüpel aus Edinburgh, sich letzten Monat im Keller erhängt hat, was bedeutet, dass Felicia wieder solo ist! Ich weiß, dass du sie immer schon recht ansehnlich gefunden hast, aber du hast sie noch nicht gesehen, nachdem sie bei der Elektrolyse war und beim Kieferchirurgen. Ihre Koteletten sind jetzt kaum noch zu sehen und sie kann sogar ihren Mund fast richtig zumachen.\n\nDeine Mutter" + IDS_INTEL_25923 "Notiz: Menschen-Dresseur-Operation@GESAMTES PERSONAL\n\nDenken Sie an eine ausreichend bemessene Aufwärmzeit des Menschen-Dresseurs vor dem Einsatz, da der Inhalt sonst einen spontanen Rückfluss erleiden kann. Nach dem Vorfall in der letzten Woche hat es mehrere Tage gekostet, alles wieder sauber zu machen.\n\nDer Kundendienst ist bereits verständigt worden. Bitte nehmen Sie in der Zwischenzeit etwas Rücksicht." + IDS_INTEL_25924 "H.A.R.M.-Dokument: PR-Plan Seite 1@VERTRAULICH - Nur für den Direktor\n\nBetr.: Überarbeiteter PR-Plan: Druckmedien\n\nBeginnend mit Mai werden wir ganzseitige Anzeigen in Schurke & Welt und im Maximaler Miesling-Magazin schalten. Außerdem sind Interviews mit vorgehaltener Waffe für verschiedene europäische Zeitungen sowie eine Reihe von Todesdrohungen und Erpresserbriefe für die US-Presse geplant.\n\nUnsere PR-Pläne für Radio und Fernsehen werden mit separater Mail verschickt." + IDS_INTEL_25925 "H.A.R.M.-Memo: Hygiene@An: Rekrutierungs- und Personalbüro\nVon: Stellvertretender Commander Saperstein\n\nHandlanger Frankels Körpergeruch beginnt sich auf die Moral auszuwirken. In den letzten drei Tagen haben bereits zwei Männer um Versetzung gebeten." + IDS_INTEL_25926 "H.A.R.M.-Memo: Hygiene@An: Alle Mitarbeiter\nVon: Rekrutierungs- und Personalbüro\n\nAb nächsten Dienstag haben wir für alle Handlanger des geheimen Verstecks einen Pflichtwäscheservice arrangiert. Bringen Sie die Wäsche um 9 Uhr in Höhle D. Nichtbefolgung der Anordnung führt zu einer 50-prozentigen Gehaltskürzung für die nächste Woche. Bitte achten Sie auf das Wohlbefinden Ihrer Kollegen. Denken Sie auch daran, dass wir in einer schlecht belüfteten unterirdischen Umgebung arbeiten. Danke für Ihre Mitarbeit!" + IDS_INTEL_25927 "H.A.R.M.-Dokument: PR-Plan Seite 2@VERTRAULICH - Nur für den Direktor\n\nBetr.: Überarbeiteter PR-Plan: Radio\n\nUnsere Radio-Termine fallen etwas leichter aus als im letzten Jahr, aber wir haben ein paar spannende Auftritte geplant. Zuerst haben wir für Sie einen Gastauftritt bei der Mark-Mulroy-Radio-Talkshow arrangiert. Sie müssen eine Feuerwaffe mitbringen, damit Sie auch mal etwas sagen können, aber es wird eine gute Werbung sein. Außerdem haben wir gerade den K.H.R.M-Radiosender in Anaheim gekauft. Das neue Radioformat wird aus Surf-Musik mit unterschwelligen Botschaften bestehen." + IDS_INTEL_25928 "H.A.R.M.-Dokument: PR-Plan Seite 3@VERTRAULICH - Nur für den Direktor\n\nBetr.: Überarbeiteter PR-Plan: Fernsehen\n\nDas Fernsehen wird erneut die Basis für unsere PR sein. Wir haben allein für dieses Quartal fünf Sende-Unterbrechungen am Morgen, sieben zur Hauptfernsehzeit und zwei zur Nachtfilmzeit arrangiert, in denen Mitteilungen zum Weltuntergang gesendet werden sollen. Außerdem haben wir möglicherweise einen Auftritt für Sie in der Tonight-Show erschleichen können, inklusive voller fünf Minuten für Ihr Solo-Programm." + IDS_INTEL_25929 "Brief: Zurückgezogenheit@Lieber Eustace,\n\nbitte sag mir nicht, dass dies wieder eine Phase ist, in der du dich vollkommen zurückziehst. Ich ertrage es nicht, wenn du emotional unzugänglich bist. In solchen Zeiten denke ich immer, dass ich mir doch besser einen Schäferhund hätte anschaffen sollen, als einen Sohn zu gebären. Hunde sind dumm und stinken, aber sie bringen einem wenigstens etwas Wertschätzung entgegen.\n\nDeine Mutter\n\nP.S. Tante Phyllis lässt dich lieb grüßen." + IDS_INTEL_25930 "Invasionsplan, Teil I@Khios Invasionsplan\n\nWir haben unsere taktische Analyse der Situation in Khios beendet und Folgendes festgestellt:\n\nTeil I. Ankunft\nEs gibt nur eine Möglichkeit, vom Meer aus auf die Insel zu gelangen: Es geht durch eine Höhle, die von einem winzigen Strand an der westlichen Küste bis zu den darüber liegenden Klippen führt. Der Weg ist recht gefährlich, aber mit den Supersoldaten als Vorhut werden wir durch jede Verteidigung, die uns begegnet, einfach durchfegen. Das supergeheime U-Boot sollte genau neben dem Strand auftauchen können, um eine einfache Landung zu ermöglichen." + IDS_INTEL_25931 "Invasionsplan, Teil II@Khios Invasionsplan\n\nTeil II. Angriff\nIn der Vergangenheit konnten die Bewohner von Khios sich immer auf den überragenden taktischen Vorteil des fast unzugänglichen Terrains der Insel verlassen. Keine konventionelle Invasionsmacht hat es jemals auch nur annähernd geschafft, den langen und äußerst schwierigen Aufstieg vom Strand aus zu bewältigen. Um die Insel zu verteidigen, müssen die Verteidiger nur etwas kochendes Öl die Treppe hinuntergießen und schon ist der Angriff vorüber. Bei unseren Supersoldaten werden sich solche Taktiken allerdings als nutzlos erweisen und sie werden uns ermöglichen, jeden organisierten Widerstand schnell zu vernichten." + IDS_INTEL_25932 "Invasionsplan, Teil III@Khios Invasionsplan\n\nTeil III. Besetzung\nSobald die Insel gesichert worden ist, werden wir mit der Besetzungsoperation Nation-Emanzipation-Initiation beginnen. Phase Eins beginnt mit einer gründlichen Zählung der überlebenden Inselbewohner, gefolgt von Phase Zwei, in der wir sie alle für medizinische Experimente an eine pharmazeutische Firma verkaufen. In Phase Drei werden wir eine Erklärung an die internationale Presse geben, in der wir die Gründung der H.A.R.M.-Happy-Adventure-Vergnügungspark-Insel ankündigen." + IDS_INTEL_25933 "" + IDS_INTEL_25934 "" + IDS_INTEL_25935 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25936 "" + IDS_INTEL_25937 "" + IDS_INTEL_25938 "" + IDS_INTEL_25939 "" + IDS_INTEL_25940 "" + IDS_INTEL_25941 "H.A.R.M.-Memo: Attentäter@An: Dimitrij Volkov\nVon: Der Direktor\n\nTja, Ihre Pantomimen-Lösung war genau das Fiasko, das ich vorhergesagt habe. Nicht, dass Isako besser war. Ich beginne, an ihrem Wert für die Organisation zu zweifeln. Wir hätten den Australier nehmen sollen." + IDS_INTEL_25942 "H.A.R.M.-Memo: Überraschungsbesuch@An: Co-Commander Gudmundson\nVon: Carly Isadora Tehore, Veranstaltungs-Koordinatorin\n\nALARMSTUFE ROT\n\nIch habe gerade ein Telefongespräch mit der Mutter des Direktors beendet. Sie plant einen Überraschungsbesuch ab nächster Woche bis irgendwann im Oktober und will, dass ich das Gästehaus für sie vorbereite. Ich habe ihr angeboten, die Reise für sie zu buchen, aber sie sagte, dass sie dieses Mal nicht in Burma landen wollte. Was soll ich tun?" + IDS_INTEL_25943 "H.A.R.M.-Memo: Mutter des Direktors@An: Carly Isadora Tehore, Veranstaltungs-Koordinatorin\nVon: Co-Commandant Gudmundson\n\nKein Grund zur Panik. Für solche Notfälle haben wir Ausweichpläne. Laut meinen Aufzeichnungen konnten wir den letzten Besuch mit Ausrede 47 abwenden: Betriebsausflug nach East Detroit. Ich glaube, dieses Mal müssen wir auf Ausrede 66 zurückgreifen: Quarantäne wegen Ausbruchs von Scharlach." + IDS_INTEL_25944 "" + IDS_INTEL_25945 "" + IDS_INTEL_25946 "" + IDS_INTEL_25947 "" + IDS_INTEL_25948 "" + IDS_INTEL_25949 "" + IDS_INTEL_25950 "" + IDS_INTEL_25951 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25952 "" + IDS_INTEL_25953 "" + IDS_INTEL_25954 "" + IDS_INTEL_25955 "" + IDS_INTEL_25956 "" + IDS_INTEL_25957 "" + IDS_INTEL_25958 "" + IDS_INTEL_25959 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25980 "" + IDS_INTEL_25981 "" + IDS_INTEL_25982 "" + IDS_INTEL_25983 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25984 "" + IDS_INTEL_25985 "" + IDS_INTEL_25986 "" + IDS_INTEL_25987 "" + IDS_INTEL_25988 "" + IDS_INTEL_25989 "" + IDS_INTEL_25990 "Memo: Anti-Supersoldat-Serum@Liebe Cate,\n\nSie können diese Anti-Supersoldat-Serum-Kapseln mit Ihrem CT-180-Mehrzweck-Werfer benutzen. Das Serum ist leider nicht ausreichend konzentriert, um aktive Ziele zu zerstören, aber wenigstens können Sie Supersoldaten vorübergehend ausschalten, indem Sie ihnen gewissen Schaden zufügen. Schießen Sie mit dem Serum auf sie, während sie deaktiviert sind. Beeilen Sie sich, sonst erholen sie sich und Sie müssen sie erneut ausschalten!\n\nMit freundlichen Grüßen,\nDr. Schenker" + IDS_INTEL_25991 "" + IDS_INTEL_25992 "" + IDS_INTEL_25993 "" + IDS_INTEL_25994 "" + IDS_INTEL_25995 "" + IDS_INTEL_25996 "" + IDS_INTEL_25997 "" + IDS_INTEL_25998 "" + IDS_INTEL_25999 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26200 "" + IDS_INTEL_26201 "Brief: Wohnungsschlüssel@Teuerste Phoolwati,\n\nich bete zur gesegneten Kaamdhenu Vidya, der heiligen Kuh, dass wir uns wiedersehen. Die Schlüssel zum Apartment habe ich an der üblichen Stelle hinterlegt. Wie sehne ich mich danach, dich zu sehen!\n\nIn Liebe, Balaji\n" + IDS_INTEL_26202 "Brief: Blumen@Balaji, Liebster,\n\nwie sehr habe ich dich vermisst, mein Süßester! Treffen wir uns später in meinem Apartment? Ich werde Lamm Tika Masala mit Minz-Chutney machen.\n\nPhoolwati\n\nPS: Bitte pflücke keine Blumen unten aus meinem Blumenkasten. Ich weiß die Geste zu schätzen, aber meine schönen weißen Nelken werden nicht richtig blühen, wenn sie dauernd belästigt werden.\n" + IDS_INTEL_26203 "" + IDS_INTEL_26204 "" + IDS_INTEL_26205 "" + IDS_INTEL_26206 "" + IDS_INTEL_26207 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26208 "" + IDS_INTEL_26209 "" + IDS_INTEL_26210 "" + IDS_INTEL_26211 "" + IDS_INTEL_26212 "" + IDS_INTEL_26213 "" + IDS_INTEL_26214 "" + IDS_INTEL_26215 "" + IDS_INTEL_26216 "" + IDS_INTEL_26217 "" + IDS_INTEL_26218 "" + IDS_INTEL_26219 "" + IDS_INTEL_26220 "" + IDS_INTEL_26221 "" + IDS_INTEL_26222 "" + IDS_INTEL_26223 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26224 "" + IDS_INTEL_26225 "" + IDS_INTEL_26226 "" + IDS_INTEL_26227 "" + IDS_INTEL_26228 "" + IDS_INTEL_26229 "" + IDS_INTEL_26230 "" + IDS_INTEL_26231 "" + IDS_INTEL_26232 "" + IDS_INTEL_26233 "" + IDS_INTEL_26234 "" + IDS_INTEL_26235 "" + IDS_INTEL_26236 "" + IDS_INTEL_26237 "" + IDS_INTEL_26238 "" + IDS_INTEL_26239 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26240 "" + IDS_INTEL_26241 "H.A.R.M.-Memo: Gefangene@An: Dr. Kussmann\n\nDer Direktor möchte, dass alle Gefangenen in unsere Unterwasser-Anlage in der Ägäis verlegt werden. Weitere Informationen erhalten Sie von HR.\n" + IDS_INTEL_26242 "" + IDS_INTEL_26243 "" + IDS_INTEL_26244 "" + IDS_INTEL_26245 "" + IDS_INTEL_26246 "" + IDS_INTEL_26247 "" + IDS_INTEL_26248 "" + IDS_INTEL_26249 "" + IDS_INTEL_26250 "" + IDS_INTEL_26251 "" + IDS_INTEL_26252 "" + IDS_INTEL_26253 "" + IDS_INTEL_26254 "" + IDS_INTEL_26255 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26256 "" + IDS_INTEL_26257 "" + IDS_INTEL_26258 "" + IDS_INTEL_26259 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26359 "" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5520 + "Nach passenden Zielen suchen und 4 Sprengladungen anbringen. " + IDS_COOP_MISSION_OBJ_5521 + "Nach passenden Zielen suchen und 3 Sprengladungen anbringen. " + IDS_COOP_MISSION_OBJ_5522 + "Nach passenden Zielen suchen und 2 Sprengladungen anbringen. " + IDS_COOP_MISSION_OBJ_5523 + "Nach passenden Zielen suchen und 1 Sprengladung anbringen. " + IDS_COOP_MISSION_OBJ_5524 "Zwecks Abholung zur Abholstelle zurückkehren." + IDS_COOP_MISSION_OBJ_5525 + "Die Mimen haben 4 Geiseln genommen. Retten Sie sie." + IDS_COOP_MISSION_OBJ_5526 + "Die Pantomimen haben 3 Geiseln. Retten Sie sie." + IDS_COOP_MISSION_OBJ_5527 + "Die Pantomimen haben 2 Geiseln. Retten Sie sie." + IDS_COOP_MISSION_OBJ_5528 "Die Pantomimen haben 1 Geisel. Retten Sie sie." + IDS_COOP_MISSION_OBJ_5529 + "An der Abholstelle in der Halle einfinden, um nächste Mission entgegenzunehmen." + IDS_COOP_MISSION_OBJ_5530 + "Sammeln Sie 50 Rupien und geben Sie sie dem verrückten Harij, damit er Sie durch das Tor in die Innenstadt lässt." + IDS_COOP_MISSION_OBJ_5531 + "Zwecks Abholung zum UNITY-Hubschrauber zurückkehren." + IDS_COOP_MISSION_OBJ_5532 + "Cate hat nicht überlebt! Mission fehlgeschlagen!" + IDS_COOP_MISSION_OBJ_5533 "" + IDS_COOP_MISSION_OBJ_5534 "" + IDS_COOP_MISSION_OBJ_5535 "" +END + +STRINGTABLE +BEGIN + IDS_STRING5577 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3500 "" + IDS_SEARCH_ITEM_3501 "Du hast einen Bleistift gefunden." + IDS_SEARCH_ITEM_3502 "Du hast eine leere Mausefalle gefunden." + IDS_SEARCH_ITEM_3503 "Du hast Büroklammern gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3504 "Du hast ein schimmliges Schinkenbrot gefunden." + IDS_SEARCH_ITEM_3505 "Du hast eine Mausefalle mit einer toten Maus darin gefunden." + IDS_SEARCH_ITEM_3506 "Sie haben ein zerfleddertes Comic-Heft gefunden." + IDS_SEARCH_ITEM_3507 "Du hast weißes Papier gefunden." + IDS_SEARCH_ITEM_3508 "Du hast eine Schachtel Taschentücher gefunden." + IDS_SEARCH_ITEM_3509 "Du hast eine Flasche Haarwasser gefunden." + IDS_SEARCH_ITEM_3510 "Du hast Lippenstift gefunden." + IDS_SEARCH_ITEM_3511 "Du hast Strümpfe gefunden." + IDS_SEARCH_ITEM_3512 "Du hast ein Päckchen Kaugummi gefunden." + IDS_SEARCH_ITEM_3513 "Du hast einen Radierer gefunden." + IDS_SEARCH_ITEM_3514 "Du hast einen Bleistift mit abgebissenem Radierer gefunden." + IDS_SEARCH_ITEM_3515 "Du hast eine kleine Flasche Gin gefunden." + IDS_SEARCH_ITEM_3516 "Du hast einen defekten Hefter gefunden." + IDS_SEARCH_ITEM_3517 "Du hast einen Büroartikelkatalog gefunden." + IDS_SEARCH_ITEM_3518 "Du hast Notizbücher voll mit Kritzeleien gefunden." + IDS_SEARCH_ITEM_3519 "Sie haben einen trockenen, halb aufgegessenen Donut gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3520 "Du hast eine Plastikgabel gefunden." + IDS_SEARCH_ITEM_3521 "Du hast eine Schere für Linkshänder gefunden." + IDS_SEARCH_ITEM_3522 "Du hast eine Schachtel Reißzwecken gefunden." + IDS_SEARCH_ITEM_3523 "Du hast sechs schwarze Schreiber gefunden, alle ausgetrocknet." + IDS_SEARCH_ITEM_3524 "Du hast eine Flasche Aspirin gefunden." + IDS_SEARCH_ITEM_3525 "Sie haben einen Permanentmarker ohne Deckel gefunden." + IDS_SEARCH_ITEM_3526 "Sie haben einen unbenutzten Deo-Stick gefunden." + IDS_SEARCH_ITEM_3527 "Du hast eine Packung Pfefferminzpastillen gefunden." + IDS_SEARCH_ITEM_3528 "Du hast einen Gummistempel ohne Griff gefunden." + IDS_SEARCH_ITEM_3529 "Du hast ein Stück schimmligen Käse gefunden." + IDS_SEARCH_ITEM_3530 "Du hast ein zusammengeknülltes Papierflugzeug gefunden." + IDS_SEARCH_ITEM_3531 "Du hast eine Flasche Handcreme gefunden." + IDS_SEARCH_ITEM_3532 "Du hast eine schmutzige Zahnbürste gefunden." + IDS_SEARCH_ITEM_3533 "" + IDS_SEARCH_ITEM_3534 "" + IDS_SEARCH_ITEM_3535 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3536 "" + IDS_SEARCH_ITEM_3537 "" + IDS_SEARCH_ITEM_3538 "" + IDS_SEARCH_ITEM_3539 "" + IDS_SEARCH_ITEM_3540 "" + IDS_SEARCH_ITEM_3541 "" + IDS_SEARCH_ITEM_3542 "" + IDS_SEARCH_ITEM_3543 "" + IDS_SEARCH_ITEM_3544 "" + IDS_SEARCH_ITEM_3545 "" + IDS_SEARCH_ITEM_3546 "" + IDS_SEARCH_ITEM_3547 "" + IDS_SEARCH_ITEM_3548 "" + IDS_SEARCH_ITEM_3549 "" + IDS_SEARCH_ITEM_3550 "" + IDS_SEARCH_ITEM_3551 "Du hast eine US-Steuererklärung aus dem Jahr 1958 gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3552 "Du hast einen Stapel Liebesbriefe gefunden." + IDS_SEARCH_ITEM_3553 "Du hast ein Handbuch mit Verhaltensvorschriften gefunden." + IDS_SEARCH_ITEM_3554 "Sie haben eine 387 Seiten umfassende Scheidungsakte gefunden." + IDS_SEARCH_ITEM_3555 "Du hast einen Urlaubsantrag gefunden." + IDS_SEARCH_ITEM_3556 "Sie haben ein Testament gefunden." + IDS_SEARCH_ITEM_3557 "Du hast einen unvollendeten Roman gefunden." + IDS_SEARCH_ITEM_3558 "" + IDS_SEARCH_ITEM_3559 "" + IDS_SEARCH_ITEM_3560 "" + IDS_SEARCH_ITEM_3561 "" + IDS_SEARCH_ITEM_3562 "" + IDS_SEARCH_ITEM_3563 "" + IDS_SEARCH_ITEM_3564 "" + IDS_SEARCH_ITEM_3565 "" + IDS_SEARCH_ITEM_3566 "" + IDS_SEARCH_ITEM_3567 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3568 "" + IDS_SEARCH_ITEM_3569 "" + IDS_SEARCH_ITEM_3570 "" + IDS_SEARCH_ITEM_3571 "" + IDS_SEARCH_ITEM_3572 "" + IDS_SEARCH_ITEM_3573 "" + IDS_SEARCH_ITEM_3574 "" + IDS_SEARCH_ITEM_3575 "" + IDS_SEARCH_ITEM_3576 "Du hast ein handsigniertes Autogrammfoto der Erstaunlichen Olga gefunden." + IDS_SEARCH_ITEM_3577 "Du hast eine Eintrittskarte für die Erstaunliche Olga und ihre Fliegenden Flokatis gefunden." + IDS_SEARCH_ITEM_3578 "Du hast eine Ausgabe von " + IDS_SEARCH_ITEM_3579 "Du hast eine Einkaufsliste für Toilettenpapier, Seife und Karotten gefunden." + IDS_SEARCH_ITEM_3580 "Du hast eine Quittung für Armeerationen gefunden." + IDS_SEARCH_ITEM_3581 "Du hast den Roman " + IDS_SEARCH_ITEM_3582 "Du hast den Roman " + IDS_SEARCH_ITEM_3583 "Du hast das Gedicht " +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3584 "Du hast ein handsigniertes Autogrammfoto der Fliegenden Flokatis gefunden." + IDS_SEARCH_ITEM_3585 "" + IDS_SEARCH_ITEM_3586 "" + IDS_SEARCH_ITEM_3587 "" + IDS_SEARCH_ITEM_3588 "" + IDS_SEARCH_ITEM_3589 "" + IDS_SEARCH_ITEM_3590 "" + IDS_SEARCH_ITEM_3591 "" + IDS_SEARCH_ITEM_3592 "" + IDS_SEARCH_ITEM_3593 "" + IDS_SEARCH_ITEM_3594 "" + IDS_SEARCH_ITEM_3595 "" + IDS_SEARCH_ITEM_3596 "" + IDS_SEARCH_ITEM_3597 "" + IDS_SEARCH_ITEM_3598 "" + IDS_SEARCH_ITEM_3599 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3600 "" + IDS_SEARCH_ITEM_3601 "Du hast eine Flasche Wodka gefunden." + IDS_SEARCH_ITEM_3602 "Du hast ein Set Sammelkarten der sibirischen Hockeyliga gefunden." + IDS_SEARCH_ITEM_3603 "Du hast eine Dose Fleisch gefunden." + IDS_SEARCH_ITEM_3604 "Sie haben ein Magazin mit dem Titel " + IDS_SEARCH_ITEM_3605 "Du hast ein Tombolalos für einen Urlaub im malerischen Murmansk gefunden!" + IDS_SEARCH_ITEM_3606 "Du hast einen Gummistempel mit dem Wort ABGELEHNT gefunden." + IDS_SEARCH_ITEM_3607 "Du hast einen roten Fäustling gefunden." + IDS_SEARCH_ITEM_3608 "Du hast ein Päckchen jugoslawische Zigaretten gefunden." + IDS_SEARCH_ITEM_3609 "Du hast ein kaputtes Feuerzeug gefunden." + IDS_SEARCH_ITEM_3610 "Du hast einen toten Papageientaucher gefunden." + IDS_SEARCH_ITEM_3611 "Du hast ein zerfleddertes Exemplar von " + IDS_SEARCH_ITEM_3612 "Du hast einen Verhaltenskodex der Armee gefunden." + IDS_SEARCH_ITEM_3613 "Du hast ein signiertes Foto eines Traktors gefunden." + IDS_SEARCH_ITEM_3614 "Sie haben ein paar Fusseln gefunden." + IDS_SEARCH_ITEM_3615 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3616 "" + IDS_SEARCH_ITEM_3617 "" + IDS_SEARCH_ITEM_3618 "" + IDS_SEARCH_ITEM_3619 "" + IDS_SEARCH_ITEM_3620 "" + IDS_SEARCH_ITEM_3621 "" + IDS_SEARCH_ITEM_3622 "" + IDS_SEARCH_ITEM_3623 "" + IDS_SEARCH_ITEM_3624 "" + IDS_SEARCH_ITEM_3625 "" + IDS_SEARCH_ITEM_3626 "Du hast eine Packung Minzpastillen gefunden." + IDS_SEARCH_ITEM_3627 "Du hast einen durchgekauten Kaugummi gefunden." + IDS_SEARCH_ITEM_3628 "Du hast ein Fusselbällchen gefunden." + IDS_SEARCH_ITEM_3629 "Du hast ein Jo-Jo gefunden." + IDS_SEARCH_ITEM_3630 "Du hast eine abgerissene Kinokarte gefunden." + IDS_SEARCH_ITEM_3631 "Du hast einen verfaulten Apfel gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3632 "Du hast ein Taschenmesser gefunden." + IDS_SEARCH_ITEM_3633 "Du hast eine Einkaufsliste gefunden." + IDS_SEARCH_ITEM_3634 "Du hast einen Plastikkamm gefunden." + IDS_SEARCH_ITEM_3635 "Sie haben einen 'Schluss-mach-Brief' gefunden." + IDS_SEARCH_ITEM_3636 "Du hast ein benutztes Taschentuch gefunden." + IDS_SEARCH_ITEM_3637 "Sie haben ein zusammengeknülltes Stück Papier gefunden." + IDS_SEARCH_ITEM_3638 "Du hast ein Paar Würfel gefunden." + IDS_SEARCH_ITEM_3639 "Du hast ein Kartenspiel gefunden." + IDS_SEARCH_ITEM_3640 "Du hast mehrere schmutzige Vitamintabletten gefunden." + IDS_SEARCH_ITEM_3641 "Du hast ein halb gelutschtes Hustenbonbon (Kirschgeschmack) gefunden." + IDS_SEARCH_ITEM_3642 "Du hast ein Menthol-Hustenbonbon gefunden." + IDS_SEARCH_ITEM_3643 "Du hast ein Bündel Papiertaschentücher gefunden, die offensichtlich jemandem mit einer schlimmen Erkältung gehört haben." + IDS_SEARCH_ITEM_3644 "Du hast eine faustgroße Kugel Aluminiumfolie gefunden." + IDS_SEARCH_ITEM_3645 "Du hast das Bild eines hässlichen Babys gefunden." + IDS_SEARCH_ITEM_3646 "Du hast ein Bonbonpapier gefunden." + IDS_SEARCH_ITEM_3647 "Du hast eine Wimpernzange gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3648 "Du hast ein zerrissenes Gummiband gefunden." + IDS_SEARCH_ITEM_3649 "Sie haben einen Plastiksoldaten gefunden." + IDS_SEARCH_ITEM_3650 "Sie haben einen Zahn gefunden." + IDS_SEARCH_ITEM_3651 "Du hast ein paar abgeschnittene Zehennägel gefunden." + IDS_SEARCH_ITEM_3652 "Du hast ein paar Murmeln gefunden." + IDS_SEARCH_ITEM_3653 "Du hast benutzte Zahnseide gefunden." + IDS_SEARCH_ITEM_3654 "Du hast eine glückbringende Hasenpfote gefunden." + IDS_SEARCH_ITEM_3655 "Du hast einen abgerissenen Knopf gefunden." + IDS_SEARCH_ITEM_3656 "Sie haben ein paar Brotkrumen gefunden." + IDS_SEARCH_ITEM_3657 "" + IDS_SEARCH_ITEM_3658 "" + IDS_SEARCH_ITEM_3659 "" + IDS_SEARCH_ITEM_3660 "" + IDS_SEARCH_ITEM_3661 "Du hast einen rosa Fäustling gefunden." + IDS_SEARCH_ITEM_3662 "Du hast Lebertran-Lippenbalsam gefunden." + IDS_SEARCH_ITEM_3663 "Du hast eine Eintrittskarte für die Sonntagsmatinee der Erstaunlichen Olga und ihrer Fliegenden Flokatis gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3664 "Du hast ein Piroschki gefunden." + IDS_SEARCH_ITEM_3665 "" + IDS_SEARCH_ITEM_3666 "" + IDS_SEARCH_ITEM_3667 "" + IDS_SEARCH_ITEM_3668 "" + IDS_SEARCH_ITEM_3669 "" + IDS_SEARCH_ITEM_3670 "" + IDS_SEARCH_ITEM_3671 "" + IDS_SEARCH_ITEM_3672 "" + IDS_SEARCH_ITEM_3673 "" + IDS_SEARCH_ITEM_3674 "" + IDS_SEARCH_ITEM_3675 "" + IDS_SEARCH_ITEM_3676 "" + IDS_SEARCH_ITEM_3677 "" + IDS_SEARCH_ITEM_3678 "" + IDS_SEARCH_ITEM_3679 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3680 "" + IDS_SEARCH_ITEM_3681 "Du hast ein paar einzelne Go-Steine gefunden." + IDS_SEARCH_ITEM_3682 "Sie haben ein paar Lutscher mit Erdbeergeschmack gefunden. Lecker!" + IDS_SEARCH_ITEM_3683 "Du hast eine zerdrückte Kirschblüte gefunden." + IDS_SEARCH_ITEM_3684 "Du hast einen Lippenstift gefunden." + IDS_SEARCH_ITEM_3685 "Du hast eine Haarspange gefunden." + IDS_SEARCH_ITEM_3686 "Sie haben eine Tube Lipgloss gefunden." + IDS_SEARCH_ITEM_3687 "Du hast eine Eintrittskarte für den Film " + IDS_SEARCH_ITEM_3688 "Du hast einen Satz falscher Wimpern gefunden." + IDS_SEARCH_ITEM_3689 "Du hast eine Kreditkarte gefunden." + IDS_SEARCH_ITEM_3690 "Sie haben einen Flakon mit Tsubaki-Parfüm gefunden." + IDS_SEARCH_ITEM_3691 "Sie haben einen gesprungenen Spiegel gefunden." + IDS_SEARCH_ITEM_3692 "Du hast ein Holz-Amulett gegen das Böse gefunden." + IDS_SEARCH_ITEM_3693 "Du hast ein Spitzentaschentuch gefunden." + IDS_SEARCH_ITEM_3694 "Du hast ein goldenes Amulett für gute Gesundheit gefunden." + IDS_SEARCH_ITEM_3695 "Du hast ein silbernes Amulett für Glück in der Liebe gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3696 "Du hast ein etwas aufgeweichtes Bonbon mit Rote-Bohnen-Geschmack gefunden." + IDS_SEARCH_ITEM_3697 "Sie haben ein schimmliges, in einer Serviette eingewickeltes Stück Ebi Nigiri gefunden." + IDS_SEARCH_ITEM_3698 "Du hast eine leere Münzschatulle gefunden." + IDS_SEARCH_ITEM_3699 "" + IDS_SEARCH_ITEM_3700 "" + IDS_SEARCH_ITEM_3701 "Du hast eine Flasche von Meister Chis Super-Orange-Putzmittel gefunden." + IDS_SEARCH_ITEM_3702 "Du hast einen Kalligrafiefederhalter gefunden." + IDS_SEARCH_ITEM_3703 "Du hast ein kleines Nähzeug gefunden." + IDS_SEARCH_ITEM_3704 "Du hast einen halb gegessenen Laib Shoku Pan gefunden." + IDS_SEARCH_ITEM_3705 "Sie haben eine Wasabi-Wurzel gefunden." + IDS_SEARCH_ITEM_3706 "Du hast eine Flasche Sojasauce gefunden." + IDS_SEARCH_ITEM_3707 "" + IDS_SEARCH_ITEM_3708 "" + IDS_SEARCH_ITEM_3709 "" + IDS_SEARCH_ITEM_3710 "" + IDS_SEARCH_ITEM_3711 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3712 "" + IDS_SEARCH_ITEM_3713 "" + IDS_SEARCH_ITEM_3714 "" + IDS_SEARCH_ITEM_3715 "" + IDS_SEARCH_ITEM_3716 "" + IDS_SEARCH_ITEM_3717 "" + IDS_SEARCH_ITEM_3718 "" + IDS_SEARCH_ITEM_3719 "" + IDS_SEARCH_ITEM_3720 "" + IDS_SEARCH_ITEM_3721 "Du hast ein Taschentuch mit Monogramm gefunden." + IDS_SEARCH_ITEM_3722 "Du hast einen Beutel Kautabak gefunden." + IDS_SEARCH_ITEM_3723 "Du hast eine Kricket-Punktekarte gefunden." + IDS_SEARCH_ITEM_3724 "Du hast ein Foto von Shasti gefunden, der bengalischen Katzengöttin und Beschützerin der Kinder." + IDS_SEARCH_ITEM_3725 "Eine geschnitzte Figur von Lakshmi, der Göttin des Wohlstands und Reichtums." + IDS_SEARCH_ITEM_3726 "Du hast ein Bild von Durga gefunden, der Göttin des glücklichen Ehelebens." + IDS_SEARCH_ITEM_3727 "Ein Bild von Kartikeya, dem zweiten Sohn des Gottes Schiwa und Gott des Krieges und der Zerstörung." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3728 "Du hast ein Bild der Göttin Gauri gefunden, die einem jungen Mädchen garantiert einen anständigen Mann bringt." + IDS_SEARCH_ITEM_3729 "Ein Gebetsamulett für Angaraka, das den Träger vor Schulden und Hautkrankheiten schützt. " + IDS_SEARCH_ITEM_3730 "Du hast ein paar einzelne Kardamomkapseln gefunden." + IDS_SEARCH_ITEM_3731 "Eine Statue von Kaamdhenu, der heiligen Kuh, die Wünsche erfüllt." + IDS_SEARCH_ITEM_3732 "Ein kleines silbernes Amulett der vierhändigen Saraswati, die auf der Veena spielt." + IDS_SEARCH_ITEM_3733 "Du hast ein Batiktaschentuch gefunden." + IDS_SEARCH_ITEM_3734 "Du hast eine verfaulte Tamarinde gefunden." + IDS_SEARCH_ITEM_3735 "Du hast eine halb aufgegessene Koorka gefunden." + IDS_SEARCH_ITEM_3736 "" + IDS_SEARCH_ITEM_3737 "" + IDS_SEARCH_ITEM_3738 "" + IDS_SEARCH_ITEM_3739 "" + IDS_SEARCH_ITEM_3740 "" + IDS_SEARCH_ITEM_3741 "Sie haben ein Glas Nutella gefunden." + IDS_SEARCH_ITEM_3742 "Du hast ein Spiel Teen-Pathi-Karten gefunden." + IDS_SEARCH_ITEM_3743 "Du hast eine Flasche Kokosnussöl gefunden." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3744 "Du hast ein Glas Gesichtspuder gefunden." + IDS_SEARCH_ITEM_3745 "Du hast einen ausgestopften Lori gefunden." + IDS_SEARCH_ITEM_3746 "Du hast einen Topf Hennapulver und Mehendiöl gefunden." + IDS_SEARCH_ITEM_3747 "Du hast eine Schale verschimmeltes Lamm-Patialashahi gefunden." + IDS_SEARCH_ITEM_3748 "Sie haben eine Tüte Basmatireis voll mit Käfern gefunden." + IDS_SEARCH_ITEM_3749 "Du hast ein Buch mit dem Titel " + IDS_SEARCH_ITEM_3750 "Du hast zwei Gilli-Danda-Stäbchen gefunden." + IDS_SEARCH_ITEM_3751 "Du hast eine Flasche Amla-Haaröl gefunden." + IDS_SEARCH_ITEM_3752 "Du hast ein Glas Minzchutney gefunden." + IDS_SEARCH_ITEM_3753 "Du hast ein Glas Büffelmilchbutter gefunden." + IDS_SEARCH_ITEM_3754 "" + IDS_SEARCH_ITEM_3755 "" + IDS_SEARCH_ITEM_3756 "" + IDS_SEARCH_ITEM_3757 "" + IDS_SEARCH_ITEM_3758 "" + IDS_SEARCH_ITEM_3759 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3760 "" + IDS_SEARCH_ITEM_3761 "Du hast eine Rechnung für indischen Schwarztee gefunden." + IDS_SEARCH_ITEM_3762 "Eine Auswahl Gedichte aus Valmikis " + IDS_SEARCH_ITEM_3763 "Du hast ein Exemplar von " + IDS_SEARCH_ITEM_3764 "Hülle einer Schallplatte mit dem Titel " + IDS_SEARCH_ITEM_3765 "Du hast das Rezept für Ghost Ki Kashmiri Biryani gefunden." + IDS_SEARCH_ITEM_3766 "Du hast das Rezept für Schweinefleisch-Vindaloo gefunden." + IDS_SEARCH_ITEM_3767 "Du hast eine Rechnung für Putzarbeiten der Fensterreinigung Nanda Devi gefunden." + IDS_SEARCH_ITEM_3768 "Ein Gebet an Bhavani, die Schutzheilige von Frauen in den Wehen. " + IDS_SEARCH_ITEM_3769 "Ein Gebet an Banka-Mundi, Jagdgöttin der Khoud, das einem die Furcht vor den Tieren des Dschungels nehmen soll." + IDS_SEARCH_ITEM_3770 "Du hast ein Exemplar des Buches mit dem Titel " + IDS_SEARCH_ITEM_3771 "" + IDS_SEARCH_ITEM_3772 "" + IDS_SEARCH_ITEM_3773 "" + IDS_SEARCH_ITEM_3774 "" + IDS_SEARCH_ITEM_3775 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4768 "Ein ID-Anstecker von H.A.R.M., der Zutritt in gesicherte Bereiche ermöglicht." + IDS_KEY_DESC_4769 "Auf dem Etikett dieser Elektronenröhre steht: Ersatzteil für die Datenverarbeitungsanlage M-9." + IDS_KEY_DESC_4770 "Der Sicherheitscode für die Datenverarbeitungsanlage M-9." + IDS_KEY_DESC_4771 "Ein Überbrückungsgerät, um auf die Datenverarbeitungsanlage zuzugreifen." + IDS_KEY_DESC_4772 "Das Passwort, das man braucht, um die Datenverarbeitungsanlage M-9 zu starten." + IDS_KEY_DESC_4773 "Listet die Akten-Identifikationsnummer für Informationen zu Projekt Omega auf." + IDS_KEY_DESC_4774 "Rupien sind die Währungseinheit in Indien." + IDS_KEY_DESC_4775 "Das sind Zündschlüssel für ein Schneemobil." + IDS_KEY_DESC_4776 "Normaler Zucker eignet sich zum Süßen von Kaffee oder zum Sabotieren von Maschinen." + IDS_KEY_DESC_4777 "Normaler Zucker eignet sich zum Süßen von Kaffee oder zum Sabotieren von Maschinen." + IDS_KEY_DESC_4778 "Dr. Schenkers Brille ist absolut unverwechselbar. Die dicken Gläser sind völlig zerkratzt und scheinen seit Monaten nicht mehr gereinigt worden zu sein. Man kann sich kaum vorstellen, dass er noch durchsehen kann." + IDS_KEY_DESC_4779 "Der Zündschlüssel für ein Schneemobil." + IDS_KEY_DESC_4780 "Fünfzig Rupien. Sie könnten sie dem verrückten Harij geben, damit er die Stadttore öffnet." + IDS_KEY_DESC_4781 "Dieser Katalog ist wird benötigt, um Version 1.0 des Supercomputerservice-Benutzerhandbuchs von der Supercomputerservice-Abteilung zu erhalten." + IDS_KEY_DESC_4782 "Dieser Schlüssel wird für die Bedienung des Ladekrans im Unterwasserstützpunkt benötigt." + IDS_KEY_DESC_4783 "Diese Sicherheits-Chipkarte kann mit Kartenlesern benutzt werden, um Zutritt zu Sicherheitsbereichen zu erlangen." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3776 "" + IDS_SEARCH_ITEM_3777 "" + IDS_SEARCH_ITEM_3778 "" + IDS_SEARCH_ITEM_3779 "" + IDS_SEARCH_ITEM_3780 "" + IDS_SEARCH_ITEM_3781 "Du hast einen Ballon gefunden, aus dem die Luft raus ist." + IDS_SEARCH_ITEM_3782 "Du hast ein Glas dicker Schminke gefunden." + IDS_SEARCH_ITEM_3783 "Du hast eine zerbrochene Kazoo gefunden." + IDS_SEARCH_ITEM_3784 "Du hast einen weißen Handschuh gefunden." + IDS_SEARCH_ITEM_3785 "Du hast ein rot-lila-gelbes Taschentuch gefunden." + IDS_SEARCH_ITEM_3786 "Du hast die Strichzeichnung eines Elefanten gefunden." + IDS_SEARCH_ITEM_3787 "Du hast einen blauen Lidschattenstift gefunden." + IDS_SEARCH_ITEM_3788 "Du hast eine Tube rote Fettschminke gefunden." + IDS_SEARCH_ITEM_3789 "Du hast ein Wörterbuch " + IDS_SEARCH_ITEM_3790 "Du hast eine Petition gefunden, Pantomime als olympische Disziplin zuzulassen." + IDS_SEARCH_ITEM_3791 "Sie haben ein Handbuch mit dem Titel " +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3792 "Du hast eine rosa Nelke gefunden." + IDS_SEARCH_ITEM_3793 "Du hast eine Flasche Kochsherry gefunden." + IDS_SEARCH_ITEM_3794 "Du hast eine Tube weiße Fettfarbe gefunden." + IDS_SEARCH_ITEM_3795 "" + IDS_SEARCH_ITEM_3796 "" + IDS_SEARCH_ITEM_3797 "" + IDS_SEARCH_ITEM_3798 "" + IDS_SEARCH_ITEM_3799 "" + IDS_SEARCH_ITEM_3800 "" +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7500 "" + IDS_DECISIONS_7501 "Set power level to LOW" + IDS_DECISIONS_7502 "Set power level to MEDIUM" + IDS_DECISIONS_7503 "Set power level to HIGH" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7008 "You don't have the keys." + IDS_TRANSMISSIONS_7009 "The snowmobile is out of fuel." + IDS_TRANSMISSIONS_7010 "A vacuum tube is missing." + IDS_TRANSMISSIONS_7011 "You need a password to access this computer." + IDS_TRANSMISSIONS_7012 "Enter the index number." + IDS_TRANSMISSIONS_7013 "It won't work without batteries." + IDS_TRANSMISSIONS_7014 "It's too heavy for you to lift." + IDS_TRANSMISSIONS_7015 "Destroy all three designated targets with C4." + IDS_TRANSMISSIONS_7016 "Prevent the enemy team from destroying the designated targets." + IDS_TRANSMISSIONS_7017 "Your team has planted a bomb at target 1. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7018 "Your team has planted a bomb at target 2. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7019 "Your team has planted a bomb at target 3. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7020 "The enemy has planted a bomb at target 1. Defuse it before it detonates." + IDS_TRANSMISSIONS_7021 "The enemy has planted a bomb at target 2. Defuse it before it detonates." + IDS_TRANSMISSIONS_7022 "The enemy has planted a bomb at target 3. Defuse it before it detonates." + IDS_TRANSMISSIONS_7023 "The bomb at target 1 has been defused." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7024 "The bomb at target 2 has been defused." + IDS_TRANSMISSIONS_7025 "Spacesuit required." + IDS_TRANSMISSIONS_7026 "Replace O2 Tank." + IDS_TRANSMISSIONS_7027 "The bomb at target 3 has been defused." + IDS_TRANSMISSIONS_7028 "Target 1 destroyed." + IDS_TRANSMISSIONS_7029 "Target 2 destroyed." + IDS_TRANSMISSIONS_7030 "Target 3 destroyed." + IDS_TRANSMISSIONS_7031 "Time limit reached." + IDS_TRANSMISSIONS_7032 "All targets destroyed." +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7504 "Im Moment nichts, danke." + IDS_DECISIONS_7505 "Tonband 1 abspielen." + IDS_DECISIONS_7506 "Tonband 2 abspielen." + IDS_DECISIONS_7507 "Tonband 3 abspielen." + IDS_DECISIONS_7508 "Tonband 4 abspielen." + IDS_DECISIONS_7509 "Tonband 5 abspielen." + IDS_DECISIONS_7510 "Tonband 6 abspielen." + IDS_DECISIONS_7511 "Geben Sie die Aktenidentifikationsnummer für Projekt Omega ein." + IDS_DECISIONS_7512 "Geben Sie Zahlen in zufälliger Folge ein." +END + +STRINGTABLE +BEGIN + IDS_MISSION_12_NAME "KAPITEL 13. Schrecken in der Tiefe" + IDS_MISSION_13_NAME "KAPITEL 14. Endspiel" + IDS_MISSION_14_NAME "KAPITEL 15. Präventivschlag" + IDS_MISSION_09_NAME7 "" + IDS_MISSION_09_NAME8 "KAPITEL 1. Die Rettung" + IDS_MISSION_09_NAME9 "KAPITEL 2. Der Supercomputer" + IDS_MISSION_09_NAME10 "KAPITEL 3. Die Falle" + IDS_MISSION_09_NAME11 "KAPITEL 4. Aufräumen und Sichern" + IDS_MISSION_09_NAME12 "KAPITEL 5. Killer-Pantomimen" + IDS_MISSION_09_NAME13 "Demo." + IDS_MISSION_09_NAME14 "Demo." + IDS_MISSION_09_NAME15 "Demo." + IDS_MISSION_09_NAME16 "TEST TEST TEST TEST" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEMP_BRIEF5 "Kaum hat Cate einen verheerenden Angriff von mit Maschinengewehren bewaffneten Pantomimen auf das Hauptquartier von UNITY abgewehrt, da bricht sie auch schon auf, um Armstrong aus den Klauen von H.A.R.M. zu retten.\n\nLeider wurde die Pantomimen-Bedrohung aber wohl nicht völlig ausgeschaltet. Die Mordbuben haben einen neuen Angriff gestartet und sind anscheinend fest entschlossen, UNITY so viel Schaden wie möglich zuzufügen.\n\nDa Cate unterwegs ist, muss ein Eingreifteam diese Krise aus eigener Kraft bewältigen.\n" + IDS_MISSION_TEMP_BRIEF6 "Während einer gefährlichen Mission im Innersten der Sowjetunion erhält Cate den Auftrag, den Fernmelde-Relais-Turm eines abgelegenen sibirischen Außenpostens zu sabotieren. Ihr erstes Ziel besteht darin, den Sprengstoff zu beschaffen, den sie für die Mission benötigt. Danach muss sie nur noch die Sprengladung unten an dem Turm befestigen und das Gelände wieder verlassen, bevor Verstärkung eintrifft.\n\nTipps: Selbst wenn man Sie gesehen hat, bedeutet das nicht gleich, dass Sie kämpfen müssen. Oft können Sie Verfolgern ausweichen und sich vor ihnen verstecken, bis sie aufgeben. Sie sollten außerdem nicht vergessen, Aktenschränke, Schreibtisch-Schubladen und neutralisierte Gegner nach wertvollen Informationen oder nützlichen Gegenständen zu durchsuchen." + IDS_MISSION_TEMP_BRIEF7 "Demo-Missionsbesprechung UNITY" + IDS_MISSION_TEMP_BRIEF8 "Cate ist nach Akron, Ohio, gereist, um Hinweise zum Projekt Omega zu suchen, einem geheimnisumwitterten sowjetischen Plan, der droht, einen dritten Weltkrieg auszulösen.\n\nIhre Mission nimmt eine unerwartete Wendung, als sie auf einem Campingplatz von Ninja-Attentätern umringt wird und ein Wirbelsturm auf die Stadt zurast. Ihre einzige Möglichkeit zur Flucht ist, die Ninjas und ihre geheimnisvolle Anführerin Isako zu besiegen, bevor sie vom Wirbelsturm hinweg getragen wird oder sich die Radieschen von unten betrachtet." + IDS_MISSION_TEMP_BRIEF9 "Dieses Level demonstriert die neue Wasserdarstellung von LithTech Jupiter Systems und den Umgang mit Aufklebern." + IDS_MISSION_TEMP_BRIEF10 + "Dieses Level stellt einige der neuen Charaktere aus No One Lives Forever 2 vor." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME11 " " + IDS_MISSION_00_LEVEL_00_NAME12 " " + IDS_MISSION_00_LEVEL_00_NAME13 " " + IDS_MISSION_00_LEVEL_00_NAME14 " " + IDS_MISSION_00_LEVEL_00_NAME15 " " + IDS_MISSION_00_LEVEL_00_NAME16 " " + IDS_MISSION_00_LEVEL_00_NAME17 " " + IDS_MISSION_00_LEVEL_00_NAME18 " " + IDS_MISSION_00_LEVEL_00_NAME19 " " + IDS_MISSION_00_LEVEL_00_NAME20 " " + IDS_MISSION_00_LEVEL_00_NAME21 " " + IDS_MISSION_00_LEVEL_00_NAME22 " " + IDS_MISSION_00_LEVEL_00_NAME23 " " + IDS_MISSION_00_LEVEL_00_NAME24 " " + IDS_MISSION_00_LEVEL_00_NAME25 " " + IDS_MISSION_00_LEVEL_00_NAME26 " " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_31 "Lässt Gegner in hysterisches Gelächter ausbrechen und setzt sie so außer Gefecht, bis die Wirkung abklingt." + IDS_WEAPON_DESC_32 "Eine modifizierte Gordon-Maschinenpistole. Der Lauf wurde gegen einen integrierten Schalldämpfer ausgetauscht." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4528 "Dr. Schenkers Brille" + IDS_KEY_ITEM_4529 "Schlüssel für das Schneemobil" + IDS_KEY_ITEM_4530 "Fünfzig Rupien" + IDS_KEY_ITEM_4531 "Universal-Sicherheits-Chipkarte" + IDS_KEY_ITEM_4532 "Unterwasserstützpunkt-Sicherheits-Chipkarte" + IDS_KEY_ITEM_4533 "Ein Tonbandgerät" + IDS_KEY_ITEM_4534 "Der Schlüssel für den Kran" + IDS_KEY_ITEM_4535 "Supercomputerservice-Produktkatalog" + IDS_KEY_ITEM_4536 "Ein Schraubendreher" + IDS_KEY_ITEM_4537 "Ein Tonband mit einem roten Etikett" + IDS_KEY_ITEM_4538 "Ein Tonband mit einem blauen Etikett." + IDS_KEY_ITEM_4539 "Ein Tonband mit einem grünen Etikett." + IDS_KEY_ITEM_4540 "Ein Tonband mit einem gelben Etikett." + IDS_KEY_ITEM_4541 "Ein Tonband mit einem orangefarbenen Etikett." + IDS_KEY_ITEM_4542 "Ein Tonband mit einem lila Etikett." + IDS_KEY_ITEM_4543 "Die Kombination für den Tresor in Balajis Apartment" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME27 " " + IDS_MISSION_00_LEVEL_00_NAME28 " " + IDS_MISSION_00_LEVEL_00_NAME29 " " + IDS_MISSION_00_LEVEL_00_NAME30 " " + IDS_MISSION_00_LEVEL_00_NAME31 " " + IDS_MISSION_00_LEVEL_00_NAME32 " " + IDS_MISSION_00_LEVEL_00_NAME33 " " + IDS_MISSION_00_LEVEL_00_NAME34 " " + IDS_MISSION_00_LEVEL_00_NAME35 " " + IDS_MISSION_00_LEVEL_00_NAME36 " " + IDS_MISSION_00_LEVEL_00_NAME37 " " + IDS_MISSION_00_LEVEL_00_NAME38 " " + IDS_MISSION_00_LEVEL_00_NAME39 " " + IDS_MISSION_00_LEVEL_00_NAME40 " " + IDS_MISSION_00_LEVEL_00_NAME41 " " + IDS_MISSION_00_LEVEL_00_NAME42 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10016 " " + IDS_DIALOGUE_10017 " " + IDS_DIALOGUE_10018 " " + IDS_DIALOGUE_10019 " " +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4784 "Diese Sicherheits-Chipkarte kann mit Kartenlesern benutzt werden, um Zutritt zu Sicherheitsbereichen zu erlangen." + IDS_KEY_DESC_4785 "Dieses Tronbandgerät enthält die Stimmidentifikation eines Angestellten des H.A.R.M.-Unterwasserstützpunkts." + IDS_KEY_DESC_4786 "Ein Flachkopf-Schraubendreher. Nützlich, um etwas zu aufzubrechen." + IDS_KEY_DESC_4787 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4788 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4789 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4790 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4791 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4792 "Das Etikett auf diesem Tonband zeigt,\ndass es zu Tom Goodmans\nAudio-Tagebuch gehört." + IDS_KEY_DESC_4793 "Eine Tresorkombination: 38, 24, 36" + IDS_KEY_DESC_4794 "Diese Sicherheits-Chipkarte kann mit Kartenlesern benutzt werden, um Zutritt zu Sicherheitsbereichen zu erlangen." + IDS_KEY_DESC_4795 "Dieser Kaffee scheint nicht allzu frisch zu sein, aber er ist warm und stark." + IDS_KEY_DESC_4796 "Schlüssel zu Balaji Malpanis Zimmer im Hotel 'Zum Glücklichen Gast‘ und zu seinem privaten Tresor." + IDS_KEY_DESC_4797 "" + IDS_KEY_DESC_4798 "" + IDS_KEY_DESC_4799 "Codekarte für die Supercomputerservice-Abteilung." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE13 "Sie haben Armstrong getötet!" + IDS_MISSIONFAILURE14 "Sie haben zugelassen, dass Armstrong gestorben ist!" + IDS_MISSIONFAILURE15 "Sie haben Ihren Piloten getötet! Jetzt kommen Sie nicht mehr nach Hause!" + IDS_MISSIONFAILURE16 "Sie haben zugelassen, dass Ihr Pilot getötet wurde! " + IDS_MISSIONFAILURE17 "Armstrong ist umgekommen!" + IDS_MISSIONFAILURE18 "Sie haben sich zu lange auf der Toilette aufgehalten und jetzt ist Ihre Tarnung aufgeflogen. Sie wurden umgehend festgenommen und gefoltert, um Informationen von Ihnen zu erhalten. In weniger als einer Woche befinden sich die Vereinigten Staaten und die U.d.S.S.R. im Krieg und ein Großteil der Zivilisation wird atomisiert." + IDS_MISSIONFAILURE19 "Hatori-sans Herzschrittmacher hat versagt. Er ist tot." + IDS_MISSIONFAILURE20 "Sie haben Yamata-san eliminiert!" + IDS_MISSIONFAILURE21 "Sie haben zugelassen, dass Yamata-san eliminiert wurde!" + IDS_MISSIONFAILURE22 "Ihr Flugzeug wurde zerstört!" + IDS_MISSIONFAILURE23 "Ihre Deckung ist aufgeflogen!" + IDS_MISSIONFAILURE24 "Sie haben einen Polizeibeamten getötet!" + IDS_MISSIONFAILURE25 "Sie haben Kamal getötet!" + IDS_MISSIONFAILURE26 "Sie haben Dr. Schenker getötet!" + IDS_MISSIONFAILURE27 "Sie haben Mr. Barnes getötet!" + IDS_MISSIONFAILURE28 "Sie haben General Hawkins getötet!" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4544 "Sibirien-Karte" + IDS_KEY_ITEM_4545 "Eine Kanne Kaffee" + IDS_KEY_ITEM_4546 "Balaji Malpanis Schlüssel" + IDS_KEY_ITEM_4547 "" + IDS_KEY_ITEM_4548 "" + IDS_KEY_ITEM_4549 "Supercomputerservice-Karte" + IDS_KEY_ITEM_4550 "Launch key" + IDS_KEY_ITEM_4551 "Bucket Full" +END + +STRINGTABLE +BEGIN + IDS_CODEDTEXT_7700 "" + IDS_CODEDTEXT_7701 "Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer speziellen Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer rote Briefkasten sollte offen sein." + IDS_CODEDTEXT_7702 "Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer bestimmten Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer graue Briefkasten sollte geschlossen sein." + IDS_CODEDTEXT_7703 "Es stehen drei Briefkästen vor dem Süßwarenladen. Sie müssen sie in einer speziellen Reihenfolge anordnen, um mir ein Signal zu geben.\n\nDer blaue Briefkasten sollte offen sein." + IDS_CODEDTEXT_7704 "Wir treffen uns im Süßwarenladen an der Westseite des Viertels. Halten Sie nach dem Schild mit dem Kranich in der Nähe eines Automaten Ausschau." +END + +STRINGTABLE +BEGIN + IDS_TARGET_2900 "" + IDS_TARGET_2901 "Kombination eingeben" + IDS_TARGET_2902 "Löschen" + IDS_TARGET_2903 "Alarm auslösen" + IDS_TARGET_2904 "Glühbirne einsetzen" + IDS_TARGET_2905 "Glühbirne herausdrehen" + IDS_TARGET_2906 "Windharfen läuten" + IDS_TARGET_2907 "Einschalten" + IDS_TARGET_2908 "Ausschalten" + IDS_TARGET_2909 "Spülen" + IDS_TARGET_2910 "Daten beschaffen" + IDS_TARGET_2911 "Elektronenröhre ersetzen" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME59 " " + IDS_MISSION_00_LEVEL_00_NAME60 " " + IDS_MISSION_00_LEVEL_00_NAME61 " " + IDS_MISSION_00_LEVEL_00_NAME62 " " + IDS_MISSION_00_LEVEL_00_NAME63 " " +END + +STRINGTABLE +BEGIN + IDS_TARGET_2912 "Passwort eingeben" + IDS_TARGET_2913 "Zucker einstreuen" + IDS_TARGET_2914 "Kaffee eingießen" + IDS_TARGET_2915 "Plakat entfernen" + IDS_TARGET_2916 "Knopf drücken" + IDS_TARGET_2917 "Abspielen" + IDS_TARGET_2918 "Ausschalten" + IDS_TARGET_2919 "Reparieren" + IDS_TARGET_2920 "UNITY anfunken" + IDS_TARGET_2921 "Wasser wegschütten" + IDS_TARGET_2922 "Tor abschließen" + IDS_TARGET_2923 "Tor aufschließen" + IDS_TARGET_2924 "Interkom aktivieren" + IDS_TARGET_2925 "Kran aktivieren" + IDS_TARGET_2926 "An meinem Finger ziehen" + IDS_TARGET_2927 "Auf die Hupe drücken" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20138 " " + IDS_DIALOGUE_20140 " " + IDS_DIALOGUE_20141 " " + IDS_DIALOGUE_20142 " " + IDS_DIALOGUE_20143 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20147 " " + IDS_DIALOGUE_20148 " " + IDS_DIALOGUE_20149 " " + IDS_DIALOGUE_20150 " " + IDS_DIALOGUE_20154 " " + IDS_DIALOGUE_20155 " " + IDS_DIALOGUE_20156 " " + IDS_DIALOGUE_20157 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20180 " " + IDS_DIALOGUE_20182 " " + IDS_DIALOGUE_20183 " " + IDS_DIALOGUE_20184 " " + IDS_DIALOGUE_20185 " " + IDS_DIALOGUE_20186 " " + IDS_DIALOGUE_20187 " " + IDS_DIALOGUE_20190 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20603 " " + IDS_DIALOGUE_20605 " " + IDS_DIALOGUE_20606 " " + IDS_DIALOGUE_20607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20608 " " + IDS_DIALOGUE_20612 " " + IDS_DIALOGUE_20613 " " + IDS_DIALOGUE_20614 " " + IDS_DIALOGUE_20615 " " + IDS_DIALOGUE_20619 " " + IDS_DIALOGUE_20620 " " + IDS_DIALOGUE_20621 " " + IDS_DIALOGUE_20622 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20645 " " + IDS_DIALOGUE_20647 " " + IDS_DIALOGUE_20648 " " + IDS_DIALOGUE_20649 " " + IDS_DIALOGUE_20650 " " + IDS_DIALOGUE_20651 " " + IDS_DIALOGUE_20652 " " + IDS_DIALOGUE_20655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20930 " " + IDS_DIALOGUE_20931 " " + IDS_DIALOGUE_20932 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20956 " " + IDS_DIALOGUE_20957 " " + IDS_DIALOGUE_20959 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20961 " " + IDS_DIALOGUE_20962 " " + IDS_DIALOGUE_20963 " " + IDS_DIALOGUE_20964 " " + IDS_DIALOGUE_20965 " " + IDS_DIALOGUE_20966 " " + IDS_DIALOGUE_20967 " " + IDS_DIALOGUE_20968 " " + IDS_DIALOGUE_20969 " " + IDS_DIALOGUE_20970 " " + IDS_DIALOGUE_20971 " " + IDS_DIALOGUE_20972 " " + IDS_DIALOGUE_20973 " " + IDS_DIALOGUE_20974 " " + IDS_DIALOGUE_20975 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20976 " " + IDS_DIALOGUE_20977 " " + IDS_DIALOGUE_20978 " " + IDS_DIALOGUE_20979 " " + IDS_DIALOGUE_20980 " " + IDS_DIALOGUE_20981 " " + IDS_DIALOGUE_20982 " " + IDS_DIALOGUE_20983 " " + IDS_DIALOGUE_20984 " " + IDS_DIALOGUE_20985 " " + IDS_DIALOGUE_20986 " " + IDS_DIALOGUE_20987 " " + IDS_DIALOGUE_20988 " " + IDS_DIALOGUE_20989 " " + IDS_DIALOGUE_20990 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20992 " " + IDS_DIALOGUE_20993 " " + IDS_DIALOGUE_20994 " " + IDS_DIALOGUE_20995 " " + IDS_DIALOGUE_20996 " " + IDS_DIALOGUE_20997 " " + IDS_DIALOGUE_20998 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21162 " " + IDS_DIALOGUE_21163 " " + IDS_DIALOGUE_21164 " " + IDS_DIALOGUE_21165 " " + IDS_DIALOGUE_21166 " " + IDS_DIALOGUE_21167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21168 " " + IDS_DIALOGUE_21169 " " + IDS_DIALOGUE_21170 " " + IDS_DIALOGUE_21171 " " + IDS_DIALOGUE_21172 " " + IDS_DIALOGUE_21173 " " + IDS_DIALOGUE_21174 " " + IDS_DIALOGUE_21177 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21184 " " + IDS_DIALOGUE_21185 " " + IDS_DIALOGUE_21186 " " + IDS_DIALOGUE_21188 " " + IDS_DIALOGUE_21189 " " + IDS_DIALOGUE_21190 " " + IDS_DIALOGUE_21191 " " + IDS_DIALOGUE_21192 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32000 " " + IDS_DIALOGUE_32001 " " + IDS_DIALOGUE_32002 " " + IDS_DIALOGUE_32003 " " + IDS_DIALOGUE_32004 " " + IDS_DIALOGUE_32005 " " + IDS_DIALOGUE_32006 " " + IDS_DIALOGUE_32007 " " + IDS_DIALOGUE_32009 " " + IDS_DIALOGUE_32010 " " + IDS_DIALOGUE_32011 " " + IDS_DIALOGUE_32012 " " + IDS_DIALOGUE_32014 " " + IDS_DIALOGUE_32015 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32016 " " + IDS_DIALOGUE_32017 " " + IDS_DIALOGUE_32018 " " + IDS_DIALOGUE_32019 " " + IDS_DIALOGUE_32020 " " + IDS_DIALOGUE_32021 " " + IDS_DIALOGUE_32022 " " + IDS_DIALOGUE_32023 " " + IDS_DIALOGUE_32024 " " + IDS_DIALOGUE_32025 " " + IDS_DIALOGUE_32026 " " + IDS_DIALOGUE_32027 " " + IDS_DIALOGUE_32028 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32033 " " + IDS_DIALOGUE_32034 " " + IDS_DIALOGUE_32035 " " + IDS_DIALOGUE_32036 " " + IDS_DIALOGUE_32037 " " + IDS_DIALOGUE_32039 " " + IDS_DIALOGUE_32040 " " + IDS_DIALOGUE_32041 " " + IDS_DIALOGUE_32042 " " + IDS_DIALOGUE_32046 " " + IDS_DIALOGUE_32047 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32051 " " + IDS_DIALOGUE_32052 " " + IDS_DIALOGUE_32053 " " + IDS_DIALOGUE_32056 " " + IDS_DIALOGUE_32057 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32070 " " + IDS_DIALOGUE_32071 " " + IDS_DIALOGUE_32072 " " + IDS_DIALOGUE_32073 " " + IDS_DIALOGUE_32074 " " + IDS_DIALOGUE_32075 " " + IDS_DIALOGUE_32076 " " + IDS_DIALOGUE_32077 " " + IDS_DIALOGUE_32078 " " + IDS_DIALOGUE_32079 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32080 " " + IDS_DIALOGUE_32081 " " + IDS_DIALOGUE_32082 " " + IDS_DIALOGUE_32083 " " + IDS_DIALOGUE_32084 " " + IDS_DIALOGUE_32085 " " + IDS_DIALOGUE_32086 " " + IDS_DIALOGUE_32087 " " + IDS_DIALOGUE_32088 " " + IDS_DIALOGUE_32089 " " + IDS_DIALOGUE_32090 " " + IDS_DIALOGUE_32091 " " + IDS_DIALOGUE_32092 " " + IDS_DIALOGUE_32093 " " + IDS_DIALOGUE_32094 " " + IDS_DIALOGUE_32095 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32096 " " + IDS_DIALOGUE_32097 " " + IDS_DIALOGUE_32098 " " + IDS_DIALOGUE_32099 " " + IDS_DIALOGUE_32100 " " + IDS_DIALOGUE_32101 " " + IDS_DIALOGUE_32102 " " + IDS_DIALOGUE_32103 " " + IDS_DIALOGUE_32104 " " + IDS_DIALOGUE_32105 " " + IDS_DIALOGUE_32106 " " + IDS_DIALOGUE_32107 " " + IDS_DIALOGUE_32108 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32122 " " + IDS_DIALOGUE_32123 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32134 " " + IDS_DIALOGUE_32135 " " + IDS_DIALOGUE_32136 " " + IDS_DIALOGUE_32137 " " + IDS_DIALOGUE_32138 " " + IDS_DIALOGUE_32139 " " + IDS_DIALOGUE_32140 " " + IDS_DIALOGUE_32141 " " + IDS_DIALOGUE_32142 " " + IDS_DIALOGUE_32143 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32144 " " + IDS_DIALOGUE_32145 " " + IDS_DIALOGUE_32146 " " + IDS_DIALOGUE_32147 " " + IDS_DIALOGUE_32148 " " + IDS_DIALOGUE_32149 " " + IDS_DIALOGUE_32150 " " + IDS_DIALOGUE_32151 " " + IDS_DIALOGUE_32152 " " + IDS_DIALOGUE_32153 " " + IDS_DIALOGUE_32154 " " + IDS_DIALOGUE_32155 " " + IDS_DIALOGUE_32156 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32162 " " + IDS_DIALOGUE_32163 " " + IDS_DIALOGUE_32164 " " + IDS_DIALOGUE_32166 " " + IDS_DIALOGUE_32168 " " + IDS_DIALOGUE_32169 " " + IDS_DIALOGUE_32170 " " + IDS_DIALOGUE_32171 " " + IDS_DIALOGUE_32172 " " + IDS_DIALOGUE_32173 " " + IDS_DIALOGUE_32174 " " + IDS_DIALOGUE_32175 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32176 " " + IDS_DIALOGUE_32177 " " + IDS_DIALOGUE_32178 " " + IDS_DIALOGUE_32179 " " + IDS_DIALOGUE_32180 " " + IDS_DIALOGUE_32181 " " + IDS_DIALOGUE_32182 " " + IDS_DIALOGUE_32183 " " + IDS_DIALOGUE_32184 " " + IDS_DIALOGUE_32185 " " + IDS_DIALOGUE_32186 " " + IDS_DIALOGUE_32188 " " + IDS_DIALOGUE_32189 " " + IDS_DIALOGUE_32190 " " + IDS_DIALOGUE_32191 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32192 " " + IDS_DIALOGUE_32193 " " + IDS_DIALOGUE_32194 " " + IDS_DIALOGUE_32195 " " + IDS_DIALOGUE_32196 " " + IDS_DIALOGUE_32197 " " + IDS_DIALOGUE_32198 " " + IDS_DIALOGUE_32199 " " + IDS_DIALOGUE_32200 " " + IDS_DIALOGUE_32201 " " + IDS_DIALOGUE_32202 " " + IDS_DIALOGUE_32203 " " + IDS_DIALOGUE_32204 " " + IDS_DIALOGUE_32205 " " + IDS_DIALOGUE_32206 " " + IDS_DIALOGUE_32207 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32208 " " + IDS_DIALOGUE_32209 " " + IDS_DIALOGUE_32210 " " + IDS_DIALOGUE_32211 " " + IDS_DIALOGUE_32212 " " + IDS_DIALOGUE_32213 " " + IDS_DIALOGUE_32214 " " + IDS_DIALOGUE_32215 " " + IDS_DIALOGUE_32216 " " + IDS_DIALOGUE_32217 " " + IDS_DIALOGUE_32218 " " + IDS_DIALOGUE_32219 " " + IDS_DIALOGUE_32220 " " + IDS_DIALOGUE_32221 " " + IDS_DIALOGUE_32222 " " + IDS_DIALOGUE_32223 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32224 " " + IDS_DIALOGUE_32225 " " + IDS_DIALOGUE_32227 " " + IDS_DIALOGUE_32228 " " + IDS_DIALOGUE_32229 " " + IDS_DIALOGUE_32230 " " + IDS_DIALOGUE_32234 " " + IDS_DIALOGUE_32235 " " + IDS_DIALOGUE_32239 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32240 " " + IDS_DIALOGUE_32241 " " + IDS_DIALOGUE_32242 " " + IDS_DIALOGUE_32243 " " + IDS_DIALOGUE_32244 " " + IDS_DIALOGUE_32245 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32258 " " + IDS_DIALOGUE_32259 " " + IDS_DIALOGUE_32260 " " + IDS_DIALOGUE_32261 " " + IDS_DIALOGUE_32262 " " + IDS_DIALOGUE_32263 " " + IDS_DIALOGUE_32264 " " + IDS_DIALOGUE_32265 " " + IDS_DIALOGUE_32266 " " + IDS_DIALOGUE_32267 " " + IDS_DIALOGUE_32268 " " + IDS_DIALOGUE_32269 " " + IDS_DIALOGUE_32270 " " + IDS_DIALOGUE_32271 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32272 " " + IDS_DIALOGUE_32273 " " + IDS_DIALOGUE_32274 " " + IDS_DIALOGUE_32275 " " + IDS_DIALOGUE_32276 " " + IDS_DIALOGUE_32277 " " + IDS_DIALOGUE_32278 " " + IDS_DIALOGUE_32279 " " + IDS_DIALOGUE_32280 " " + IDS_DIALOGUE_32281 " " + IDS_DIALOGUE_32282 " " + IDS_DIALOGUE_32283 " " + IDS_DIALOGUE_32284 " " + IDS_DIALOGUE_32285 " " + IDS_DIALOGUE_32286 " " + IDS_DIALOGUE_32287 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32288 " " + IDS_DIALOGUE_32289 " " + IDS_DIALOGUE_32290 " " + IDS_DIALOGUE_32291 " " + IDS_DIALOGUE_32292 " " + IDS_DIALOGUE_32293 " " + IDS_DIALOGUE_32294 " " + IDS_DIALOGUE_32295 " " + IDS_DIALOGUE_32296 " " + IDS_DIALOGUE_32299 " " + IDS_DIALOGUE_32300 " " + IDS_DIALOGUE_32301 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32310 " " + IDS_DIALOGUE_32311 " " + IDS_DIALOGUE_32312 " " + IDS_DIALOGUE_32313 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32324 " " + IDS_DIALOGUE_32325 " " + IDS_DIALOGUE_32326 " " + IDS_DIALOGUE_32327 " " + IDS_DIALOGUE_32328 " " + IDS_DIALOGUE_32329 " " + IDS_DIALOGUE_32330 " " + IDS_DIALOGUE_32331 " " + IDS_DIALOGUE_32332 " " + IDS_DIALOGUE_32333 " " + IDS_DIALOGUE_32334 " " + IDS_DIALOGUE_32335 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32336 " " + IDS_DIALOGUE_32337 " " + IDS_DIALOGUE_32338 " " + IDS_DIALOGUE_32339 " " + IDS_DIALOGUE_32340 " " + IDS_DIALOGUE_32341 " " + IDS_DIALOGUE_32342 " " + IDS_DIALOGUE_32343 " " + IDS_DIALOGUE_32344 " " + IDS_DIALOGUE_32345 " " + IDS_DIALOGUE_32346 " " + IDS_DIALOGUE_32347 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32353 " " + IDS_DIALOGUE_32354 " " + IDS_DIALOGUE_32355 " " + IDS_DIALOGUE_32356 " " + IDS_DIALOGUE_32358 " " + IDS_DIALOGUE_32360 " " + IDS_DIALOGUE_32361 " " + IDS_DIALOGUE_32362 " " + IDS_DIALOGUE_32363 " " + IDS_DIALOGUE_32364 " " + IDS_DIALOGUE_32365 " " + IDS_DIALOGUE_32366 " " + IDS_DIALOGUE_32367 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32368 " " + IDS_DIALOGUE_32369 " " + IDS_DIALOGUE_32370 " " + IDS_DIALOGUE_32371 " " + IDS_DIALOGUE_32372 " " + IDS_DIALOGUE_32373 " " + IDS_DIALOGUE_32374 " " + IDS_DIALOGUE_32375 " " + IDS_DIALOGUE_32376 " " + IDS_DIALOGUE_32377 " " + IDS_DIALOGUE_32378 " " + IDS_DIALOGUE_32380 " " + IDS_DIALOGUE_32381 " " + IDS_DIALOGUE_32382 " " + IDS_DIALOGUE_32383 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32384 " " + IDS_DIALOGUE_32385 " " + IDS_DIALOGUE_32386 " " + IDS_DIALOGUE_32387 " " + IDS_DIALOGUE_32388 " " + IDS_DIALOGUE_32389 " " + IDS_DIALOGUE_32390 " " + IDS_DIALOGUE_32391 " " + IDS_DIALOGUE_32392 " " + IDS_DIALOGUE_32393 " " + IDS_DIALOGUE_32394 " " + IDS_DIALOGUE_32395 " " + IDS_DIALOGUE_32396 " " + IDS_DIALOGUE_32397 " " + IDS_DIALOGUE_32398 " " + IDS_DIALOGUE_32399 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32400 " " + IDS_DIALOGUE_32401 " " + IDS_DIALOGUE_32402 " " + IDS_DIALOGUE_32403 " " + IDS_DIALOGUE_32404 " " + IDS_DIALOGUE_32405 " " + IDS_DIALOGUE_32406 " " + IDS_DIALOGUE_32407 " " + IDS_DIALOGUE_32408 " " + IDS_DIALOGUE_32409 " " + IDS_DIALOGUE_32410 " " + IDS_DIALOGUE_32411 " " + IDS_DIALOGUE_32413 " " + IDS_DIALOGUE_32414 " " + IDS_DIALOGUE_32415 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32416 " " + IDS_DIALOGUE_32417 " " + IDS_DIALOGUE_32418 " " + IDS_DIALOGUE_32419 " " + IDS_DIALOGUE_32420 " " + IDS_DIALOGUE_32422 " " + IDS_DIALOGUE_32423 " " + IDS_DIALOGUE_32424 " " + IDS_DIALOGUE_32425 " " + IDS_DIALOGUE_32426 " " + IDS_DIALOGUE_32428 " " + IDS_DIALOGUE_32429 " " + IDS_DIALOGUE_32430 " " + IDS_DIALOGUE_32431 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32435 " " + IDS_DIALOGUE_32436 " " + IDS_DIALOGUE_32437 " " + IDS_DIALOGUE_32438 " " + IDS_DIALOGUE_32439 " " + IDS_DIALOGUE_32440 " " + IDS_DIALOGUE_32441 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32454 " " + IDS_DIALOGUE_32455 " " + IDS_DIALOGUE_32456 " " + IDS_DIALOGUE_32457 " " + IDS_DIALOGUE_32458 " " + IDS_DIALOGUE_32459 " " + IDS_DIALOGUE_32460 " " + IDS_DIALOGUE_32461 " " + IDS_DIALOGUE_32462 " " + IDS_DIALOGUE_32463 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32464 " " + IDS_DIALOGUE_32465 " " + IDS_DIALOGUE_32466 " " + IDS_DIALOGUE_32467 " " + IDS_DIALOGUE_32468 " " + IDS_DIALOGUE_32469 " " + IDS_DIALOGUE_32470 " " + IDS_DIALOGUE_32471 " " + IDS_DIALOGUE_32472 " " + IDS_DIALOGUE_32473 " " + IDS_DIALOGUE_32474 " " + IDS_DIALOGUE_32475 " " + IDS_DIALOGUE_32476 " " + IDS_DIALOGUE_32477 " " + IDS_DIALOGUE_32478 " " + IDS_DIALOGUE_32479 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32480 " " + IDS_DIALOGUE_32481 " " + IDS_DIALOGUE_32482 " " + IDS_DIALOGUE_32483 " " + IDS_DIALOGUE_32484 " " + IDS_DIALOGUE_32485 " " + IDS_DIALOGUE_32486 " " + IDS_DIALOGUE_32487 " " + IDS_DIALOGUE_32488 " " + IDS_DIALOGUE_32489 " " + IDS_DIALOGUE_32490 " " + IDS_DIALOGUE_32491 " " + IDS_DIALOGUE_32492 " " + IDS_DIALOGUE_32495 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32496 " " + IDS_DIALOGUE_32497 " " + IDS_DIALOGUE_32503 " " + IDS_DIALOGUE_32504 " " + IDS_DIALOGUE_32505 " " + IDS_DIALOGUE_32506 " " + IDS_DIALOGUE_32507 " " + IDS_DIALOGUE_32508 " " + IDS_DIALOGUE_32509 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32520 " " + IDS_DIALOGUE_32521 " " + IDS_DIALOGUE_32522 " " + IDS_DIALOGUE_32523 " " + IDS_DIALOGUE_32524 " " + IDS_DIALOGUE_32525 " " + IDS_DIALOGUE_32526 " " + IDS_DIALOGUE_32527 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32528 " " + IDS_DIALOGUE_32529 " " + IDS_DIALOGUE_32530 " " + IDS_DIALOGUE_32531 " " + IDS_DIALOGUE_32532 " " + IDS_DIALOGUE_32533 " " + IDS_DIALOGUE_32534 " " + IDS_DIALOGUE_32535 " " + IDS_DIALOGUE_32536 " " + IDS_DIALOGUE_32537 " " + IDS_DIALOGUE_32538 " " + IDS_DIALOGUE_32539 " " + IDS_DIALOGUE_32540 " " + IDS_DIALOGUE_32541 " " + IDS_DIALOGUE_32542 " " + IDS_DIALOGUE_32543 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32549 " " + IDS_DIALOGUE_32550 " " + IDS_DIALOGUE_32551 " " + IDS_DIALOGUE_32553 " " + IDS_DIALOGUE_32555 " " + IDS_DIALOGUE_32556 " " + IDS_DIALOGUE_32557 " " + IDS_DIALOGUE_32558 " " + IDS_DIALOGUE_32559 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32560 " " + IDS_DIALOGUE_32561 " " + IDS_DIALOGUE_32562 " " + IDS_DIALOGUE_32563 " " + IDS_DIALOGUE_32564 " " + IDS_DIALOGUE_32565 " " + IDS_DIALOGUE_32566 " " + IDS_DIALOGUE_32567 " " + IDS_DIALOGUE_32568 " " + IDS_DIALOGUE_32569 " " + IDS_DIALOGUE_32570 " " + IDS_DIALOGUE_32571 " " + IDS_DIALOGUE_32572 " " + IDS_DIALOGUE_32573 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32577 " " + IDS_DIALOGUE_32578 " " + IDS_DIALOGUE_32579 " " + IDS_DIALOGUE_32580 " " + IDS_DIALOGUE_32581 " " + IDS_DIALOGUE_32582 " " + IDS_DIALOGUE_32583 " " + IDS_DIALOGUE_32584 " " + IDS_DIALOGUE_32585 " " + IDS_DIALOGUE_32586 " " + IDS_DIALOGUE_32587 " " + IDS_DIALOGUE_32588 " " + IDS_DIALOGUE_32589 " " + IDS_DIALOGUE_32590 " " + IDS_DIALOGUE_32591 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32592 " " + IDS_DIALOGUE_32593 " " + IDS_DIALOGUE_32594 " " + IDS_DIALOGUE_32595 " " + IDS_DIALOGUE_32596 " " + IDS_DIALOGUE_32597 " " + IDS_DIALOGUE_32598 " " + IDS_DIALOGUE_32599 " " + IDS_DIALOGUE_32600 " " + IDS_DIALOGUE_32601 " " + IDS_DIALOGUE_32602 " " + IDS_DIALOGUE_32603 " " + IDS_DIALOGUE_32604 " " + IDS_DIALOGUE_32606 " " + IDS_DIALOGUE_32607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32608 " " + IDS_DIALOGUE_32609 " " + IDS_DIALOGUE_32610 " " + IDS_DIALOGUE_32611 " " + IDS_DIALOGUE_32612 " " + IDS_DIALOGUE_32613 " " + IDS_DIALOGUE_32615 " " + IDS_DIALOGUE_32616 " " + IDS_DIALOGUE_32617 " " + IDS_DIALOGUE_32618 " " + IDS_DIALOGUE_32619 " " + IDS_DIALOGUE_32623 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32624 " " + IDS_DIALOGUE_32628 " " + IDS_DIALOGUE_32629 " " + IDS_DIALOGUE_32630 " " + IDS_DIALOGUE_32631 " " + IDS_DIALOGUE_32632 " " + IDS_DIALOGUE_32633 " " + IDS_DIALOGUE_32634 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32647 " " + IDS_DIALOGUE_32648 " " + IDS_DIALOGUE_32649 " " + IDS_DIALOGUE_32650 " " + IDS_DIALOGUE_32651 " " + IDS_DIALOGUE_32652 " " + IDS_DIALOGUE_32653 " " + IDS_DIALOGUE_32654 " " + IDS_DIALOGUE_32655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32656 " " + IDS_DIALOGUE_32657 " " + IDS_DIALOGUE_32658 " " + IDS_DIALOGUE_32659 " " + IDS_DIALOGUE_32660 " " + IDS_DIALOGUE_32661 " " + IDS_DIALOGUE_32662 " " + IDS_DIALOGUE_32663 " " + IDS_DIALOGUE_32664 " " + IDS_DIALOGUE_32665 " " + IDS_DIALOGUE_32666 " " + IDS_DIALOGUE_32667 " " + IDS_DIALOGUE_32668 " " + IDS_DIALOGUE_32669 " " + IDS_DIALOGUE_32670 " " + IDS_DIALOGUE_32671 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32672 " " + IDS_DIALOGUE_32673 " " + IDS_DIALOGUE_32674 " " + IDS_DIALOGUE_32675 " " + IDS_DIALOGUE_32676 " " + IDS_DIALOGUE_32677 " " + IDS_DIALOGUE_32678 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32692 " " + IDS_DIALOGUE_32693 " " + IDS_DIALOGUE_32694 " " + IDS_DIALOGUE_32695 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32706 " " + IDS_DIALOGUE_32707 " " + IDS_DIALOGUE_32708 " " + IDS_DIALOGUE_32709 " " + IDS_DIALOGUE_32710 " " + IDS_DIALOGUE_32711 " " + IDS_DIALOGUE_32712 " " + IDS_DIALOGUE_32713 " " + IDS_DIALOGUE_32714 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32741 " " + IDS_DIALOGUE_32742 " " + IDS_DIALOGUE_32743 " " + IDS_DIALOGUE_32744 " " + IDS_DIALOGUE_32745 " " + IDS_DIALOGUE_32746 " " + IDS_DIALOGUE_32747 " " + IDS_DIALOGUE_32748 " " + IDS_DIALOGUE_32749 " " + IDS_DIALOGUE_32750 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32754 " " + IDS_DIALOGUE_32755 " " + IDS_DIALOGUE_32756 " " + IDS_DIALOGUE_32760 " " + IDS_DIALOGUE_32761 " " + IDS_DIALOGUE_32762 " " + IDS_DIALOGUE_32763 " " + IDS_DIALOGUE_32764 " " + IDS_DIALOGUE_32765 " " + IDS_DIALOGUE_32766 " " + IDS_DIALOGUE_32767 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32768 " " + IDS_DIALOGUE_32769 " " + IDS_DIALOGUE_32770 " " + IDS_DIALOGUE_32771 " " + IDS_DIALOGUE_32772 " " + IDS_DIALOGUE_32773 " " + IDS_DIALOGUE_32774 " " + IDS_DIALOGUE_32775 " " + IDS_DIALOGUE_32776 " " + IDS_DIALOGUE_32777 " " + IDS_DIALOGUE_32778 " " + IDS_DIALOGUE_32779 " " + IDS_DIALOGUE_32780 " " + IDS_DIALOGUE_32781 " " + IDS_DIALOGUE_32782 " " + IDS_DIALOGUE_32783 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32784 " " + IDS_DIALOGUE_32785 " " + IDS_DIALOGUE_32786 " " + IDS_DIALOGUE_32787 " " + IDS_DIALOGUE_32789 " " + IDS_DIALOGUE_32790 " " + IDS_DIALOGUE_32791 " " + IDS_DIALOGUE_32792 " " + IDS_DIALOGUE_32793 " " + IDS_DIALOGUE_32794 " " + IDS_DIALOGUE_32795 " " + IDS_DIALOGUE_32796 " " + IDS_DIALOGUE_32798 " " + IDS_DIALOGUE_32799 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32800 " " + IDS_DIALOGUE_32801 " " + IDS_DIALOGUE_32802 " " + IDS_DIALOGUE_32806 " " + IDS_DIALOGUE_32807 " " + IDS_DIALOGUE_32811 " " + IDS_DIALOGUE_32812 " " + IDS_DIALOGUE_32813 " " + IDS_DIALOGUE_32814 " " + IDS_DIALOGUE_32815 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32816 " " + IDS_DIALOGUE_32817 " " + IDS_DIALOGUE_32830 " " + IDS_DIALOGUE_32831 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32832 " " + IDS_DIALOGUE_32833 " " + IDS_DIALOGUE_32834 " " + IDS_DIALOGUE_32835 " " + IDS_DIALOGUE_32836 " " + IDS_DIALOGUE_32837 " " + IDS_DIALOGUE_32838 " " + IDS_DIALOGUE_32839 " " + IDS_DIALOGUE_32840 " " + IDS_DIALOGUE_32841 " " + IDS_DIALOGUE_32842 " " + IDS_DIALOGUE_32843 " " + IDS_DIALOGUE_32844 " " + IDS_DIALOGUE_32845 " " + IDS_DIALOGUE_32846 " " + IDS_DIALOGUE_32847 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32848 " " + IDS_DIALOGUE_32849 " " + IDS_DIALOGUE_32850 " " + IDS_DIALOGUE_32851 " " + IDS_DIALOGUE_32852 " " + IDS_DIALOGUE_32853 " " + IDS_DIALOGUE_32854 " " + IDS_DIALOGUE_32855 " " + IDS_DIALOGUE_32856 " " + IDS_DIALOGUE_32857 " " + IDS_DIALOGUE_32858 " " + IDS_DIALOGUE_32859 " " + IDS_DIALOGUE_32860 " " + IDS_DIALOGUE_32861 " " + IDS_DIALOGUE_32862 " " + IDS_DIALOGUE_32863 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32864 " " + IDS_DIALOGUE_32865 " " + IDS_DIALOGUE_32866 " " + IDS_DIALOGUE_32867 " " + IDS_DIALOGUE_32868 " " + IDS_DIALOGUE_32871 " " + IDS_DIALOGUE_32872 " " + IDS_DIALOGUE_32873 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32882 " " + IDS_DIALOGUE_32883 " " + IDS_DIALOGUE_32884 " " + IDS_DIALOGUE_32885 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32896 " " + IDS_DIALOGUE_32897 " " + IDS_DIALOGUE_32898 " " + IDS_DIALOGUE_32899 " " + IDS_DIALOGUE_32900 " " + IDS_DIALOGUE_32901 " " + IDS_DIALOGUE_32902 " " + IDS_DIALOGUE_32903 " " + IDS_DIALOGUE_32904 " " + IDS_DIALOGUE_32905 " " + IDS_DIALOGUE_32906 " " + IDS_DIALOGUE_32907 " " + IDS_DIALOGUE_32908 " " + IDS_DIALOGUE_32909 " " + IDS_DIALOGUE_32910 " " + IDS_DIALOGUE_32911 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32912 " " + IDS_DIALOGUE_32913 " " + IDS_DIALOGUE_32914 " " + IDS_DIALOGUE_32915 " " + IDS_DIALOGUE_32916 " " + IDS_DIALOGUE_32917 " " + IDS_DIALOGUE_32918 " " + IDS_DIALOGUE_32919 " " + IDS_DIALOGUE_32925 " " + IDS_DIALOGUE_32926 " " + IDS_DIALOGUE_32927 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32928 " " + IDS_DIALOGUE_32930 " " + IDS_DIALOGUE_32932 " " + IDS_DIALOGUE_32933 " " + IDS_DIALOGUE_32934 " " + IDS_DIALOGUE_32935 " " + IDS_DIALOGUE_32936 " " + IDS_DIALOGUE_32937 " " + IDS_DIALOGUE_32938 " " + IDS_DIALOGUE_32939 " " + IDS_DIALOGUE_32940 " " + IDS_DIALOGUE_32941 " " + IDS_DIALOGUE_32942 " " + IDS_DIALOGUE_32943 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32944 " " + IDS_DIALOGUE_32945 " " + IDS_DIALOGUE_32946 " " + IDS_DIALOGUE_32947 " " + IDS_DIALOGUE_32948 " " + IDS_DIALOGUE_32949 " " + IDS_DIALOGUE_32950 " " + IDS_DIALOGUE_32952 " " + IDS_DIALOGUE_32953 " " + IDS_DIALOGUE_32954 " " + IDS_DIALOGUE_32955 " " + IDS_DIALOGUE_32956 " " + IDS_DIALOGUE_32957 " " + IDS_DIALOGUE_32958 " " + IDS_DIALOGUE_32959 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32961 " " + IDS_DIALOGUE_32962 " " + IDS_DIALOGUE_32963 " " + IDS_DIALOGUE_32964 " " + IDS_DIALOGUE_32965 " " + IDS_DIALOGUE_32966 " " + IDS_DIALOGUE_32967 " " + IDS_DIALOGUE_32968 " " + IDS_DIALOGUE_32969 " " + IDS_DIALOGUE_32970 " " + IDS_DIALOGUE_32971 " " + IDS_DIALOGUE_32973 " " + IDS_DIALOGUE_32974 " " + IDS_DIALOGUE_32975 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32976 " " + IDS_DIALOGUE_32977 " " + IDS_DIALOGUE_32978 " " + IDS_DIALOGUE_32979 " " + IDS_DIALOGUE_32981 " " + IDS_DIALOGUE_32982 " " + IDS_DIALOGUE_32983 " " + IDS_DIALOGUE_32984 " " + IDS_DIALOGUE_32985 " " + IDS_DIALOGUE_32986 " " + IDS_DIALOGUE_32987 " " + IDS_DIALOGUE_32988 " " + IDS_DIALOGUE_32990 " " + IDS_DIALOGUE_32991 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32992 " " + IDS_DIALOGUE_32993 " " + IDS_DIALOGUE_32994 " " + IDS_DIALOGUE_32998 " " + IDS_DIALOGUE_32999 " " + IDS_DIALOGUE_33003 " " + IDS_DIALOGUE_33004 " " + IDS_DIALOGUE_33005 " " + IDS_DIALOGUE_33006 " " + IDS_DIALOGUE_33007 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33008 " " + IDS_DIALOGUE_33009 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33024 " " + IDS_DIALOGUE_33025 " " + IDS_DIALOGUE_33026 " " + IDS_DIALOGUE_33027 " " + IDS_DIALOGUE_33028 " " + IDS_DIALOGUE_33032 " " + IDS_DIALOGUE_33033 " " + IDS_DIALOGUE_33034 " " + IDS_DIALOGUE_33035 " " + IDS_DIALOGUE_33036 " " + IDS_DIALOGUE_33037 " " + IDS_DIALOGUE_33038 " " + IDS_DIALOGUE_33039 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33040 " " + IDS_DIALOGUE_33041 " " + IDS_DIALOGUE_33042 " " + IDS_DIALOGUE_33043 " " + IDS_DIALOGUE_33044 " " + IDS_DIALOGUE_33045 " " + IDS_DIALOGUE_33046 " " + IDS_DIALOGUE_33047 " " + IDS_DIALOGUE_33048 " " + IDS_DIALOGUE_33049 " " + IDS_DIALOGUE_33050 " " + IDS_DIALOGUE_33051 " " + IDS_DIALOGUE_33052 " " + IDS_DIALOGUE_33053 " " + IDS_DIALOGUE_33054 " " + IDS_DIALOGUE_33055 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33056 " " + IDS_DIALOGUE_33057 " " + IDS_DIALOGUE_33058 " " + IDS_DIALOGUE_33059 " " + IDS_DIALOGUE_33060 " " + IDS_DIALOGUE_33061 " " + IDS_DIALOGUE_33062 " " + IDS_DIALOGUE_33065 " " + IDS_DIALOGUE_33066 " " + IDS_DIALOGUE_33067 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33076 " " + IDS_DIALOGUE_33077 " " + IDS_DIALOGUE_33078 " " + IDS_DIALOGUE_33079 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33090 " " + IDS_DIALOGUE_33091 " " + IDS_DIALOGUE_33092 " " + IDS_DIALOGUE_33093 " " + IDS_DIALOGUE_33094 " " + IDS_DIALOGUE_33095 " " + IDS_DIALOGUE_33096 " " + IDS_DIALOGUE_33097 " " + IDS_DIALOGUE_33098 " " + IDS_DIALOGUE_33099 " " + IDS_DIALOGUE_33100 " " + IDS_DIALOGUE_33101 " " + IDS_DIALOGUE_33102 " " + IDS_DIALOGUE_33103 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33104 " " + IDS_DIALOGUE_33105 " " + IDS_DIALOGUE_33106 " " + IDS_DIALOGUE_33107 " " + IDS_DIALOGUE_33110 " " + IDS_DIALOGUE_33111 " " + IDS_DIALOGUE_33112 " " + IDS_DIALOGUE_33113 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33120 " " + IDS_DIALOGUE_33121 " " + IDS_DIALOGUE_33129 " " + IDS_DIALOGUE_33131 " " + IDS_DIALOGUE_33132 " " + IDS_DIALOGUE_33133 " " + IDS_DIALOGUE_33134 " " + IDS_DIALOGUE_33135 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33136 " " + IDS_DIALOGUE_33137 " " + IDS_DIALOGUE_33138 " " + IDS_DIALOGUE_33139 " " + IDS_DIALOGUE_33140 " " + IDS_DIALOGUE_33141 " " + IDS_DIALOGUE_33142 " " + IDS_DIALOGUE_33143 " " + IDS_DIALOGUE_33144 " " + IDS_DIALOGUE_33146 " " + IDS_DIALOGUE_33147 " " + IDS_DIALOGUE_33148 " " + IDS_DIALOGUE_33149 " " + IDS_DIALOGUE_33150 " " + IDS_DIALOGUE_33151 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33152 " " + IDS_DIALOGUE_33153 " " + IDS_DIALOGUE_33154 " " + IDS_DIALOGUE_33155 " " + IDS_DIALOGUE_33156 " " + IDS_DIALOGUE_33157 " " + IDS_DIALOGUE_33158 " " + IDS_DIALOGUE_33159 " " + IDS_DIALOGUE_33160 " " + IDS_DIALOGUE_33161 " " + IDS_DIALOGUE_33162 " " + IDS_DIALOGUE_33163 " " + IDS_DIALOGUE_33164 " " + IDS_DIALOGUE_33165 " " + IDS_DIALOGUE_33166 " " + IDS_DIALOGUE_33167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33168 " " + IDS_DIALOGUE_33169 " " + IDS_DIALOGUE_33170 " " + IDS_DIALOGUE_33171 " " + IDS_DIALOGUE_33172 " " + IDS_DIALOGUE_33173 " " + IDS_DIALOGUE_33175 " " + IDS_DIALOGUE_33176 " " + IDS_DIALOGUE_33177 " " + IDS_DIALOGUE_33178 " " + IDS_DIALOGUE_33179 " " + IDS_DIALOGUE_33180 " " + IDS_DIALOGUE_33181 " " + IDS_DIALOGUE_33182 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33184 " " + IDS_DIALOGUE_33185 " " + IDS_DIALOGUE_33186 " " + IDS_DIALOGUE_33187 " " + IDS_DIALOGUE_33188 " " + IDS_DIALOGUE_33190 " " + IDS_DIALOGUE_33191 " " + IDS_DIALOGUE_33192 " " + IDS_DIALOGUE_33193 " " + IDS_DIALOGUE_33197 " " + IDS_DIALOGUE_33198 " " + IDS_DIALOGUE_33199 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33200 " " + IDS_DIALOGUE_33201 " " + IDS_DIALOGUE_33202 " " + IDS_DIALOGUE_33203 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33216 " " + IDS_DIALOGUE_33217 " " + IDS_DIALOGUE_33218 " " + IDS_DIALOGUE_33219 " " + IDS_DIALOGUE_33220 " " + IDS_DIALOGUE_33221 " " + IDS_DIALOGUE_33222 " " + IDS_DIALOGUE_33223 " " + IDS_DIALOGUE_33224 " " + IDS_DIALOGUE_33225 " " + IDS_DIALOGUE_33226 " " + IDS_DIALOGUE_33227 " " + IDS_DIALOGUE_33228 " " + IDS_DIALOGUE_33229 " " + IDS_DIALOGUE_33230 " " + IDS_DIALOGUE_33231 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33232 " " + IDS_DIALOGUE_33233 " " + IDS_DIALOGUE_33234 " " + IDS_DIALOGUE_33235 " " + IDS_DIALOGUE_33236 " " + IDS_DIALOGUE_33237 " " + IDS_DIALOGUE_33238 " " + IDS_DIALOGUE_33239 " " + IDS_DIALOGUE_33240 " " + IDS_DIALOGUE_33241 " " + IDS_DIALOGUE_33242 " " + IDS_DIALOGUE_33243 " " + IDS_DIALOGUE_33244 " " + IDS_DIALOGUE_33245 " " + IDS_DIALOGUE_33246 " " + IDS_DIALOGUE_33247 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33248 " " + IDS_DIALOGUE_33249 " " + IDS_DIALOGUE_33250 " " + IDS_DIALOGUE_33251 " " + IDS_DIALOGUE_33252 " " + IDS_DIALOGUE_33253 " " + IDS_DIALOGUE_33254 " " + IDS_DIALOGUE_33257 " " + IDS_DIALOGUE_33258 " " + IDS_DIALOGUE_33259 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33265 " " + IDS_DIALOGUE_33266 " " + IDS_DIALOGUE_33267 " " + IDS_DIALOGUE_33268 " " + IDS_DIALOGUE_33269 " " + IDS_DIALOGUE_33270 " " + IDS_DIALOGUE_33271 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33282 " " + IDS_DIALOGUE_33283 " " + IDS_DIALOGUE_33284 " " + IDS_DIALOGUE_33285 " " + IDS_DIALOGUE_33286 " " + IDS_DIALOGUE_33287 " " + IDS_DIALOGUE_33288 " " + IDS_DIALOGUE_33289 " " + IDS_DIALOGUE_33290 " " + IDS_DIALOGUE_33291 " " + IDS_DIALOGUE_33292 " " + IDS_DIALOGUE_33293 " " + IDS_DIALOGUE_33294 " " + IDS_DIALOGUE_33295 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33296 " " + IDS_DIALOGUE_33297 " " + IDS_DIALOGUE_33298 " " + IDS_DIALOGUE_33299 " " + IDS_DIALOGUE_33300 " " + IDS_DIALOGUE_33301 " " + IDS_DIALOGUE_33302 " " + IDS_DIALOGUE_33303 " " + IDS_DIALOGUE_33304 " " + IDS_DIALOGUE_33305 " " + IDS_DIALOGUE_33311 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33312 " " + IDS_DIALOGUE_33313 " " + IDS_DIALOGUE_33314 " " + IDS_DIALOGUE_33316 " " + IDS_DIALOGUE_33318 " " + IDS_DIALOGUE_33319 " " + IDS_DIALOGUE_33320 " " + IDS_DIALOGUE_33321 " " + IDS_DIALOGUE_33322 " " + IDS_DIALOGUE_33323 " " + IDS_DIALOGUE_33324 " " + IDS_DIALOGUE_33325 " " + IDS_DIALOGUE_33326 " " + IDS_DIALOGUE_33327 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33328 " " + IDS_DIALOGUE_33329 " " + IDS_DIALOGUE_33330 " " + IDS_DIALOGUE_33331 " " + IDS_DIALOGUE_33332 " " + IDS_DIALOGUE_33333 " " + IDS_DIALOGUE_33334 " " + IDS_DIALOGUE_33335 " " + IDS_DIALOGUE_33336 " " + IDS_DIALOGUE_33338 " " + IDS_DIALOGUE_33339 " " + IDS_DIALOGUE_33340 " " + IDS_DIALOGUE_33341 " " + IDS_DIALOGUE_33342 " " + IDS_DIALOGUE_33343 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11728 " " + IDS_DIALOGUE_11729 " " + IDS_DIALOGUE_11730 " " + IDS_DIALOGUE_11731 " " + IDS_DIALOGUE_11732 " " + IDS_DIALOGUE_11733 " " + IDS_DIALOGUE_11734 " " + IDS_DIALOGUE_11735 " " + IDS_DIALOGUE_11736 " " + IDS_DIALOGUE_11737 " " + IDS_DIALOGUE_11738 " " + IDS_DIALOGUE_11739 " " + IDS_DIALOGUE_11740 " " + IDS_DIALOGUE_11741 " " + IDS_DIALOGUE_11742 " " + IDS_DIALOGUE_11743 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11744 " " + IDS_DIALOGUE_11745 " " + IDS_DIALOGUE_11746 " " + IDS_DIALOGUE_11747 " " + IDS_DIALOGUE_11748 " " + IDS_DIALOGUE_11749 " " + IDS_DIALOGUE_11750 " " + IDS_DIALOGUE_11751 " " + IDS_DIALOGUE_11752 " " + IDS_DIALOGUE_11753 " " + IDS_DIALOGUE_11754 " " + IDS_DIALOGUE_11755 " " + IDS_DIALOGUE_11756 " " + IDS_DIALOGUE_11757 " " + IDS_DIALOGUE_11758 " " + IDS_DIALOGUE_11759 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11760 " " + IDS_DIALOGUE_11761 " " + IDS_DIALOGUE_11762 " " + IDS_DIALOGUE_11763 " " + IDS_DIALOGUE_11764 " " + IDS_DIALOGUE_11765 " " + IDS_DIALOGUE_11766 " " + IDS_DIALOGUE_11767 " " + IDS_DIALOGUE_11768 " " + IDS_DIALOGUE_11769 " " + IDS_DIALOGUE_11770 " " + IDS_DIALOGUE_11771 " " + IDS_DIALOGUE_11772 " " + IDS_DIALOGUE_11773 " " + IDS_DIALOGUE_11774 " " + IDS_DIALOGUE_11775 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11776 " " + IDS_DIALOGUE_11777 " " + IDS_DIALOGUE_11778 " " + IDS_DIALOGUE_11779 " " + IDS_DIALOGUE_11780 " " + IDS_DIALOGUE_11781 " " + IDS_DIALOGUE_11782 " " + IDS_DIALOGUE_11783 " " + IDS_DIALOGUE_11784 " " + IDS_DIALOGUE_11785 " " + IDS_DIALOGUE_11786 " " + IDS_DIALOGUE_11787 " " + IDS_DIALOGUE_11788 " " + IDS_DIALOGUE_11789 " " + IDS_DIALOGUE_11790 " " + IDS_DIALOGUE_11791 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11792 " " + IDS_DIALOGUE_11793 " " + IDS_DIALOGUE_11794 " " + IDS_DIALOGUE_11795 " " + IDS_DIALOGUE_11796 " " + IDS_DIALOGUE_11797 " " + IDS_DIALOGUE_11798 " " + IDS_DIALOGUE_11799 " " + IDS_DIALOGUE_11800 " " + IDS_DIALOGUE_11801 " " + IDS_DIALOGUE_11802 " " + IDS_DIALOGUE_11803 " " + IDS_DIALOGUE_11804 " " + IDS_DIALOGUE_11805 " " + IDS_DIALOGUE_11806 " " + IDS_DIALOGUE_11807 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11808 " " + IDS_DIALOGUE_11809 " " + IDS_DIALOGUE_11810 " " + IDS_DIALOGUE_11811 " " + IDS_DIALOGUE_11812 " " + IDS_DIALOGUE_11813 " " + IDS_DIALOGUE_11814 " " + IDS_DIALOGUE_11815 " " + IDS_DIALOGUE_11816 " " + IDS_DIALOGUE_11817 " " + IDS_DIALOGUE_11818 " " + IDS_DIALOGUE_11819 " " + IDS_DIALOGUE_11820 " " + IDS_DIALOGUE_11821 " " + IDS_DIALOGUE_11822 " " + IDS_DIALOGUE_11823 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11824 " " + IDS_DIALOGUE_11825 " " + IDS_DIALOGUE_11826 " " + IDS_DIALOGUE_11827 " " + IDS_DIALOGUE_11828 " " + IDS_DIALOGUE_11829 " " + IDS_DIALOGUE_11830 " " + IDS_DIALOGUE_11831 " " + IDS_DIALOGUE_11832 " " + IDS_DIALOGUE_11833 " " + IDS_DIALOGUE_11834 " " + IDS_DIALOGUE_11835 " " + IDS_DIALOGUE_11836 " " + IDS_DIALOGUE_11837 " " + IDS_DIALOGUE_11838 " " + IDS_DIALOGUE_11839 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11841 " " + IDS_DIALOGUE_11842 " " + IDS_DIALOGUE_11843 " " + IDS_DIALOGUE_11844 " " + IDS_DIALOGUE_11845 " " + IDS_DIALOGUE_11846 " " + IDS_DIALOGUE_11847 " " + IDS_DIALOGUE_11848 " " + IDS_DIALOGUE_11849 " " + IDS_DIALOGUE_11850 " " + IDS_DIALOGUE_11851 " " + IDS_DIALOGUE_11852 " " + IDS_DIALOGUE_11853 " " + IDS_DIALOGUE_11854 " " + IDS_DIALOGUE_11855 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11856 " " + IDS_DIALOGUE_11857 " " + IDS_DIALOGUE_11858 " " + IDS_DIALOGUE_11859 " " + IDS_DIALOGUE_11860 " " + IDS_DIALOGUE_11861 " " + IDS_DIALOGUE_11862 " " + IDS_DIALOGUE_11863 " " + IDS_DIALOGUE_11864 " " + IDS_DIALOGUE_11865 " " + IDS_DIALOGUE_11866 " " + IDS_DIALOGUE_11867 " " + IDS_DIALOGUE_11868 " " + IDS_DIALOGUE_11869 " " + IDS_DIALOGUE_11870 " " + IDS_DIALOGUE_11871 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11872 " " + IDS_DIALOGUE_11873 " " + IDS_DIALOGUE_11874 " " + IDS_DIALOGUE_11875 " " + IDS_DIALOGUE_11876 " " + IDS_DIALOGUE_11877 " " + IDS_DIALOGUE_11878 " " + IDS_DIALOGUE_11879 " " + IDS_DIALOGUE_11880 " " + IDS_DIALOGUE_11881 " " + IDS_DIALOGUE_11882 " " + IDS_DIALOGUE_11883 " " + IDS_DIALOGUE_11884 " " + IDS_DIALOGUE_11885 " " + IDS_DIALOGUE_11886 " " + IDS_DIALOGUE_11887 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11888 " " + IDS_DIALOGUE_11889 " " + IDS_DIALOGUE_11890 " " + IDS_DIALOGUE_11891 " " + IDS_DIALOGUE_11892 " " + IDS_DIALOGUE_11893 " " + IDS_DIALOGUE_11894 " " + IDS_DIALOGUE_11895 " " + IDS_DIALOGUE_11896 " " + IDS_DIALOGUE_11897 " " + IDS_DIALOGUE_11898 " " + IDS_DIALOGUE_11899 " " + IDS_DIALOGUE_11900 " " + IDS_DIALOGUE_11901 " " + IDS_DIALOGUE_11902 " " + IDS_DIALOGUE_11903 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11904 " " + IDS_DIALOGUE_11905 " " + IDS_DIALOGUE_11906 " " + IDS_DIALOGUE_11907 " " + IDS_DIALOGUE_11908 " " + IDS_DIALOGUE_11909 " " + IDS_DIALOGUE_11910 " " + IDS_DIALOGUE_11911 " " + IDS_DIALOGUE_11912 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33344 " " + IDS_DIALOGUE_33345 " " + IDS_DIALOGUE_33346 " " + IDS_DIALOGUE_33347 " " + IDS_DIALOGUE_33348 " " + IDS_DIALOGUE_33349 " " + IDS_DIALOGUE_33350 " " + IDS_DIALOGUE_33351 " " + IDS_DIALOGUE_33352 " " + IDS_DIALOGUE_33353 " " + IDS_DIALOGUE_33354 " " + IDS_DIALOGUE_33355 " " + IDS_DIALOGUE_33356 " " + IDS_DIALOGUE_33357 " " + IDS_DIALOGUE_33358 " " + IDS_DIALOGUE_33359 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33361 " " + IDS_DIALOGUE_33362 " " + IDS_DIALOGUE_33363 " " + IDS_DIALOGUE_33364 " " + IDS_DIALOGUE_33373 " " + IDS_DIALOGUE_33374 " " + IDS_DIALOGUE_33375 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33376 " " + IDS_DIALOGUE_33377 " " + IDS_DIALOGUE_33378 " " + IDS_DIALOGUE_33379 " " + IDS_DIALOGUE_33380 " " + IDS_DIALOGUE_33381 " " + IDS_DIALOGUE_33382 " " + IDS_DIALOGUE_33383 " " + IDS_DIALOGUE_33384 " " + IDS_DIALOGUE_33385 " " + IDS_DIALOGUE_33386 " " + IDS_DIALOGUE_33387 " " + IDS_DIALOGUE_33388 " " + IDS_DIALOGUE_33389 " " + IDS_DIALOGUE_33390 " " + IDS_DIALOGUE_33391 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33392 " " + IDS_DIALOGUE_33393 " " + IDS_DIALOGUE_33394 " " + IDS_DIALOGUE_33395 " " + IDS_DIALOGUE_33396 " " + IDS_DIALOGUE_33397 " " + IDS_DIALOGUE_33398 " " + IDS_DIALOGUE_33399 " " + IDS_DIALOGUE_33400 " " + IDS_DIALOGUE_33401 " " + IDS_DIALOGUE_33402 " " + IDS_DIALOGUE_33403 " " + IDS_DIALOGUE_33404 " " + IDS_DIALOGUE_33405 " " + IDS_DIALOGUE_33406 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33417 " " + IDS_DIALOGUE_33418 " " + IDS_DIALOGUE_33419 " " + IDS_DIALOGUE_33420 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33426 " " + IDS_DIALOGUE_33427 " " + IDS_DIALOGUE_33428 " " + IDS_DIALOGUE_33430 " " + IDS_DIALOGUE_33432 " " + IDS_DIALOGUE_33433 " " + IDS_DIALOGUE_33434 " " + IDS_DIALOGUE_33435 " " + IDS_DIALOGUE_33436 " " + IDS_DIALOGUE_33437 " " + IDS_DIALOGUE_33438 " " + IDS_DIALOGUE_33439 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33441 " " + IDS_DIALOGUE_33442 " " + IDS_DIALOGUE_33443 " " + IDS_DIALOGUE_33444 " " + IDS_DIALOGUE_33445 " " + IDS_DIALOGUE_33449 " " + IDS_DIALOGUE_33450 " " + IDS_DIALOGUE_33451 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33456 " " + IDS_DIALOGUE_33457 " " + IDS_DIALOGUE_33458 " " + IDS_DIALOGUE_33459 " " + IDS_DIALOGUE_33460 " " + IDS_DIALOGUE_33461 " " + IDS_DIALOGUE_33462 " " + IDS_DIALOGUE_33463 " " + IDS_DIALOGUE_33464 " " + IDS_DIALOGUE_33465 " " + IDS_DIALOGUE_33466 " " + IDS_DIALOGUE_33467 " " + IDS_DIALOGUE_33468 " " + IDS_DIALOGUE_33469 " " + IDS_DIALOGUE_33470 " " + IDS_DIALOGUE_33471 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33472 " " + IDS_DIALOGUE_33473 " " + IDS_DIALOGUE_33474 " " + IDS_DIALOGUE_33475 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3100 "Tipp: Sie können die Leertaste verwenden, um Filmsequenzen zu überspringen. Es ist aber zu empfehlen, dass Sie sich jeden Film ansehen, wenn er das erste Mal gespielt wird. Beachten Sie bitte, dass Sie im " + IDS_HINT_3101 "Tipp: Wenn Sie nicht weiterwissen, schauen Sie den " + IDS_HINT_3102 "Tipp: Anstatt zu kämpfen, können Sie eigentlich immer weglaufen und sich verstecken. Gegner können Ihre Spur an Kreuzungen verlieren, wenn sie nicht gesehen haben, in welche Richtung Sie gegangen sind. Sie können auch entkommen, indem Sie ein Versteck finden." + IDS_HINT_3103 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3104 "Tipp: Sie sollten Ihre Fertigkeitenpunkte benutzen, um Ihre Fähigkeiten zu verbessern. Denken Sie daran, dass Sie zusätzliche Fertigkeitenpunkte erhalten können, wenn Sie optionale Aufgaben erfüllen oder Geheimdienstgegenstände und Agententraining-Handbücher finden." + IDS_HINT_3105 "Tipp: Wenn Sie das Spiel als zu schwer empfinden oder sich unterfordert fühlen, ändern Sie die Schwierigkeitsgrad-Einstellung im " + IDS_HINT_3106 "Tipp: Hin und wieder müssen Sie besondere Gegenstände auftreiben, um eine Aufgabe zu erfüllen. Im " + IDS_HINT_3107 " " + IDS_HINT_3108 "Tipp: Einige Waffen können verschiedene Arten von Munition aufnehmen. Verwenden Sie die Taste 'Munitionsart wechseln' (Standard-Tastenkürzel: F), um die verschiedenen Munitionsarten anzuzeigen, oder sehen Sie im " + IDS_HINT_3109 "Tipp: Im " + IDS_HINT_3110 "Tipp: Gegner werden aufmerksam, wenn sie bewusstlose oder tote Verbündete herumliegen sehen. Sie können Körper beiseite räumen, indem Sie die 'Körper bewegen'-Taste (Standard-Tastenkürzel: G) verwenden." + IDS_HINT_3111 "Tipp: Überwachungskameras lösen Alarm aus, wenn Sie oder ein Körper entdeckt werden. Wenn Sie auf eine Überwachungskamera schießen, wird ebenfalls Alarm ausgelöst, aber Sie können spezielle Munition zum Ausschalten von Kameras für Ihren CT-180-Mehrzweck-Werfer verwenden." + IDS_HINT_3112 "Tipp: Manchmal werden Sie in ein Gebiet zurückreisen müssen, das Sie bereits besucht haben, um eine Aufgabe abzuschließen. Finden Sie mit Hilfe Ihres Kompasses heraus, wo Sie als Nächstes hingehen müssen." + IDS_HINT_3113 "Tipp: Die Taste 'Vorige Waffe' (Standard-Tastenkürzel: X) ist eine bequeme Art, schnell zwischen leisen Waffen und Waffen, die über eine stärkere Feuerkraft verfügen, zu wechseln." + IDS_HINT_3114 "Tipp: Manchmal können Sie nützliche Informationen erhalten, wenn Sie Gegner belauschen. Nach einer Unterhaltung werden Gegner sich meist entfernen, um ihren Aufgaben nachzugehen, sodass es für Sie einfacher ist, weiterzumachen." + IDS_HINT_3115 "Tipp: Das Fadenkreuz liefert Ihnen nützliche Hinweise zur Waffengenauigkeit. Je verschwommener es wird, desto ungenauer sind Ihre Schüsse. Verbessern Sie Ihre Zielgenauigkeit, indem Sie still stehen. Wenn Sie schleichen, wird Ihre Zielgenauigkeit weniger beeinträchtigt, als wenn Sie rennen." + IDS_HINT_3116 "Tipp: Absichtliche Ablenkungen können sich als ausgezeichnete Möglichkeit erweisen, um ahnungslose Wachen von ihren Posten wegzulocken. Achten Sie auf Münzen oder andere interaktive Gegenstände." + IDS_HINT_3117 "Tipp: Eine Granate wird erst dann geworfen, wenn Sie die Feuertaste loslassen. Granaten explodieren drei Sekunden, nachdem Sie sie geworfen haben, es sei denn, sie treffen auf ein Ziel, dann zünden sie sofort." + IDS_HINT_3118 "Tipp: Ein Schneemobil gibt Ihnen mittleren Schutz gegen gegnerisches Feuer in einem Umkreis vor Ihnen. Es ist deshalb ratsam, direkt auf Ziele zuzufahren, anstatt sie zu umkreisen und dabei Ihren Rücken ungeschützt zu zeigen." + IDS_HINT_3119 "Tipp: Um einen Sprengkörper zu entschärfen, zielen Sie darauf und halten die Aktion-Taste gedrückt, bis die Fortschritt-Anzeige abgelaufen ist. Je geschickter Sie mit den Geräten umgehen, desto schneller können Sie die Sprengkörper neutralisieren." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE29 "Ihre Deckung ist aufgeflogen! Sie haben keine Möglichkeit mehr, in ihr Hauptquartier hineinzugelangen." + IDS_MISSIONFAILURE30 "Kamal wurde getötet!" + IDS_MISSIONFAILURE31 "Diese Art Verhalten ist unverzeihlich. Sie sind gefeuert!" + IDS_MISSIONFAILURE32 "Zornig darüber, von seiner so genannten " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_NOPICKUP_1 "Kann keine weiteren Schuriken aufnehmen!" + IDS_WEAPON_NOPICKUP_2 "Kann keine weiteren Granaten aufnehmen!" + IDS_WEAPON_NOPICKUP_3 "Kann keine weiteren ‚Wütenden Kätzchen‘ aufnehmen!" + IDS_WEAPON_NOPICKUP_4 "Kann keine weiteren Sprengkörper aufnehmen!" + IDS_WEAPON_NOPICKUP_5 "Kann keine weiteren Münzen aufnehmen!" + IDS_WEAPON_NOPICKUP_6 "Kann keine weiteren Bärenfallen aufnehmen!" + IDS_WEAPON_NOPICKUP_7 "Kann keine weiteren Bananen aufnehmen!" + IDS_WEAPON_NOPICKUP_8 "Kann keine weiteren Betäubungsgranaten aufnehmen!" + IDS_WEAPON_NOPICKUP_9 "Kann keine weiteren Schlafgasgranaten aufnehmen!" + IDS_WEAPON_NOPICKUP_10 "Kann keine weiteren Säuregasgranaten aufnehmen!" + IDS_WEAPON_NOPICKUP_11 "Kann keine weiteren Lachgasgranaten aufnehmen!" + IDS_WEAPON_NOPICKUP_12 "Kann keine weiteren Wanzen aufnehmen!" +END + +STRINGTABLE +BEGIN + IDS_HINT_3120 "Tipp: Wenn Sie eine neue Waffe oder ein Gerät aufnehmen, wird es automatisch angewählt. Sie können diese Funktion deaktivieren, indem Sie im " + IDS_HINT_3121 "Tipp: Wenn Sie mit einem Objekt interagieren können, erscheint direkt unterhalb des Mauszeigers ein Text, der beschreibt, was passieren wird, wenn Sie die Aktion-Taste drücken." + IDS_HINT_3122 "Tipp: Körperpanzerung schützt sehr effektiv vor Schaden. Ohne Panzerung richten Waffen größeren Schaden an. Wenn Sie keine Panzerung mehr haben, ist es ratsam, vorsichtiger zu spielen, bis Sie wieder welche finden." + IDS_HINT_3123 "Tipp: Wenn Sie gegen einen Haupt-Schurken kämpfen, erscheint am oberen Bildschirm eine Anzeige, die angibt, wie viel Schaden Sie ihm zufügen müssen, um ihn zu besiegen." + IDS_HINT_3124 "Tipp: Speichern Sie Ihre Spielfortschritte häufig ab! Benutzen Sie die Schnellspeichern-Taste (F6) oder die Option " + IDS_HINT_3125 "Tipp: Manchmal ist es ratsamer, wegzulaufen als zu kämpfen. Denken Sie an Ihre Aufgaben, wenn Sie sich großen Risiken gegenübersehen." + IDS_HINT_3126 "Tipp: Wenn Sie in die Enge getrieben wurden und sich nicht wehren können, verlassen Sie sich auf die treue Banane, um rauszurutschen." + IDS_HINT_3127 "Tipp: Mit den 'Lehnen'-Tasten (Standard-Tastenkürzel: Q und E) können Sie um Ecken sehen, ohne sich einer Gefahr auszusetzen. Aber irgendwann werden Sie von den Gegnern bemerkt, also machen Sie es kurz." + IDS_HINT_3128 "Tipp: Besorgte Bürger können um Hilfe rufen und so die Polizei herbeiholen. In der Nähe von Fußgängern sollten keine Waffen abgefeuert werden, da sie sonst in Panik geraten könnten." + IDS_HINT_3129 "Tipp: Erkunden Sie Ihre Umgebung sorgfältig, um Bonus-Missionsziele und nützliche Gegenstände oder Ausrüstung zu entdecken." + IDS_HINT_3130 "Tipp: Schleichen (Vorgabe: Umschalttaste links) garantiert, dass Gegner Ihre Schritte nicht hören. Sie können den Schleichen ein/aus-Schalter (Vorgabe: Feststelltaste) benutzen, wenn Sie lieber standardmäßig schleichen wollen." + IDS_HINT_3131 "Tipp: Wenn Sie einen Angreifer nicht entdecken können, suchen Sie auf Balkonen und Dächern nach Scharfschützen. Falls Sie eine Waffe mit Zielfernrohr besitzen, benutzen Sie den Zoom (Vorgabe: Y), um entfernte Gegner ins Visier zu nehmen." + IDS_HINT_3132 "Tipp: Achten Sie darauf, Verbündete vor feindlichem Feuer zu schützen. Ihre Mission schlägt fehl, wenn sie nicht überleben." + IDS_HINT_3133 "Tipp: Benutzen Sie das Tastaturkürzel zum Schnellladen (F9), um das zuletzt schnellgespeicherte Spiel wiederherzustellen, ohne ein Menü öffnen zu müssen." + IDS_HINT_3134 "Tipp: Mit der F8-Taste können Sie Screenshots aus dem Spiel anfertigen. Die Screenshots werden fortlaufend nummeriert und in dem Ordner gespeichert, den Sie für die Installation des Spiels vorgesehen haben." + IDS_HINT_3135 "Tipp: Vermeiden Sie gefährliche Substanzen wie heißen Dampf, Feuer oder Elektrizität, denn die fügen Ihnen Schaden zu." +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6016 "Irgendwo in der Ägäis" + IDS_MISSION_TEXT_6017 "Irgendwo im Marmarameer" +END + +STRINGTABLE +BEGIN + IDS_HINT_3136 "Tipp: Speichern Sie Ihre Spielfortschritte häufig ab! Benutzen Sie die Schnellspeichern-Taste (F6) oder die Option " + IDS_HINT_3137 "Tipp: Kopftreffer richten größeren Schaden an als Rumpf- oder Gliedertreffer. Sie werden außerdem einfacher mit Feinden fertig, wenn die nicht alarmiert sind." + IDS_HINT_3138 "Tipp: Der Mehrzweck-Werfer CT-180 kann mit unterschiedlichen Munitionstypen geladen werden, auch mit Kamerastörern, Betäubungspfeilen und Elektroschockern." + IDS_HINT_3139 "Tipp: Versuchen Sie, Gegner unbemerkt auszuschalten, damit andere Feinde nicht aufmerksam werden. Misstrauische oder besorgte Gegner schreien auf und verursachen eine Störung." + IDS_HINT_3140 "Tipp: Ist ein Abschnitt sicher, kann man Alarmschalter auslösen und weitere Feinde anlocken. Falls Sie wenig Gesundheit, Panzerung oder Munition haben, sollten Sie Fallen für diese Verstärkung aufstellen und sie dann ausplündern." + IDS_HINT_3141 "Tipp: Nachdem ein Abschnitt gesichert worden ist, kann man durch das Auslösen von Alarmschaltern weitere Feinde anlocken. Falls Sie über wenig Gesundheit, Panzerung oder Munition verfügen, sollten Sie vielleicht Fallen für diese Verstärkungseinheiten aufstellen und sie anschließend plündern" + IDS_HINT_3142 "Tipp: Schalten Sie ins Ausrüstung-Menü (Vorgabe: M), um sich eine Liste Ihrer Ausrüstungsgegenstände anzusehen. Sie können eine Waffe oder ein sonstiges Gerät anwählen, damit die dafür verfügbaren Munitionstypen angezeigt werden." + IDS_HINT_3143 "Tipp: Sobald Sie sich ins Wasser begeben, wird eine Sauerstoff-Anzeige eingeblendet. Wenn die Anzeige erschöpft ist, fangen Sie an zu ertrinken." + IDS_HINT_3144 "Tipp: Schalten Sie in den Geheimdienst-Bildschirm (Vorgabe: I), um sich Dokumente oder Fotos anzusehen, die Sie im Laufe einer Mission gesammelt haben. Wählen Sie einen Gegenstand an, um ihn sich näher anzusehen." + IDS_HINT_3145 "Tipp: Die Anzeige für Ihre Gesundheit, Panzerung und Munition kann auf dreierlei Art eingestellt werden. Mit der ?-Taste können Sie durch diese drei Optionen schalten." + IDS_HINT_3146 "Tipp: Mit der Umdrehen-Taste (Vorgabe: Rücktaste) können Sie auf der Stelle die Bewegungsrichtung ändern. " + IDS_HINT_3147 "Tipp: Die Leimbomben-Munition für den Mehrzweckwerfer hält Verfolger zurück, ohne sie zu verletzen. Schießen Sie einfach auf die Gegner oder den Boden vor ihren Füßen. Und schon kleben sie für einige Zeit am Boden fest." + IDS_HINT_3148 "Tipp: Sie können das Spiel mit der PAUSE-Taste (auf den meisten Tastaturen rechts oben) unterbrechen oder die Spiel-Menüs öffnen, indem Sie die ESC-Taste oder eines der Menü-Tastaturkürzel wie I für Geheimdienst oder P für Spieler drücken." + IDS_HINT_3149 "Tipp: Sie können rasch auf Ihre UNITY-Schlüsselanhänger-Lampe zugreifen, indem Sie das entsprechende Tastaturkürzel benutzen (Vorgabe: L)." + IDS_HINT_3150 "Tipp: Sobald Sie das Spiel abgeschlossen haben, wird im Einzelspielermenü eine Kapitelliste zugänglich. Die können Sie benutzen, um nach Lust und Laune bestimmte Kapitel noch einmal zu spielen." + IDS_HINT_3151 "Tipp: Zusätzlich zur ESC-Taste können Sie auch die rechte Maustaste verwenden, um Spielmenüs auszublenden." +END + +STRINGTABLE +BEGIN + IDS_HINT_3152 "Tipp: Links auf dem Bildschirm werden Symbole eingeblendet, wenn Sie von Substanzen wie Feuer, Schlafgas, Lähmgas oder Gift Schaden nehmen." +END + +STRINGTABLE +BEGIN + IDS_NAMES_3300 "" + IDS_NAMES_3301 "Bruno" + IDS_NAMES_3302 "Dr. Schenker" + IDS_NAMES_3303 "Mr. Jones" + IDS_NAMES_3304 "Armstrong" + IDS_NAMES_3305 "Yamata-san" + IDS_NAMES_3306 "Hawkins" + IDS_NAMES_3307 "Barnes" + IDS_NAMES_3308 "Kamal" + IDS_NAMES_3309 "Banerjee" + IDS_NAMES_3310 "Harij" + IDS_NAMES_3311 "Pilot" +END + +STRINGTABLE +BEGIN + IDS_NAMES_3312 "Santa" + IDS_NAMES_3313 "Polizei" + IDS_NAMES_3314 "Hatori-san" + IDS_NAMES_3315 "Malpani" + IDS_NAMES_3316 "Spencer" + IDS_NAMES_3317 "Cate" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7096 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33575 "Kann mich jemand wiederbeleben?" + IDS_DIALOGUE_33579 "Hier drüben!" + IDS_DIALOGUE_33582 "Geben Sie mir Deckung!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33584 "Keinen Mucks!" + IDS_DIALOGUE_33588 "Charge!" + IDS_DIALOGUE_33590 "Feuer einstellen!" + IDS_DIALOGUE_33593 "Stop it, jackass!" + IDS_DIALOGUE_33596 "Halt!" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2928 "untersuchen" + IDS_TARGET_2929 "Aktivieren" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2750 "Cate reist nach Japan, um ein angeblich dort stattfindendes Treffen internationaler Verbrecher zu untersuchen." + IDS_MISSION_DESC_2751 "Cate muss das Anwesen des Direktors infiltrieren und diesen fotografieren." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2752 "Cate begibt sich nach Sibirien, um Informationen über Projekt Omega sammeln. Ihre erste Aufgabe besteht darin, ihre Flucht vorzubereiten." + IDS_MISSION_DESC_2753 "Nach Einbruch der Nacht schleicht sich Cate in die Militärbasis, um das Hauptarchivgebäude ausfindig zu machen." + IDS_MISSION_DESC_2754 "Nach Beendigung der Mission muss Cate das Gelände lebend verlassen." + IDS_MISSION_DESC_2755 "Cate reist nach Akron/Ohio, um dort in Melvin Blitznys Haus nach Hinweisen zu suchen." + IDS_MISSION_DESC_2756 "Cate und Armstrong treffen in Indien ein, um das dortige Hauptquartier von H.A.R.M. zu infiltrieren." + IDS_MISSION_DESC_2757 "Nachdem Cate H.A.R.M.s Vertrauen gewonnen hat, muss sie in den Tresor der Organisation eindringen." + IDS_MISSION_DESC_2758 "Cate und Armstrong reisen in die Antarktis, um Informationen über Projekt Omega zu sammeln." + IDS_MISSION_DESC_2759 "Cate kehrt in der Hoffnung, einen Angriff von Supersoldaten abwenden zu können, nach Indien zurück." + IDS_MISSION_DESC_2760 "Cate macht im UNITY-Hauptquartier Zwischenstation, um mit Dr. Schenker über die Supersoldaten zu sprechen." + IDS_MISSION_DESC_2761 "Cate schleicht sich in den geheime Unterwasserstützpunkt von H.A.R.M. ein, um Armstrong zu retten." + IDS_MISSION_DESC_2762 "Cate und Armstrong suchen nach einem Weg aus dem Unterwasserstützpunkt, der langsam zusammenbricht." + IDS_MISSION_DESC_2763 "Nach der Gefangennahme durch H.A.R.M. muss Cate den gefürchteten Menschen-Dresseur überleben und sich einem alten Feind stellen." + IDS_MISSION_DESC_2764 "Cate muss die Invasion der Supersoldaten abwehren und die Flagge von Khios schützen." + IDS_MISSION_DESC_2765 "Eine UNITY-Eingreiftruppe muss zu Cates Rettung nach Japan eilen." + IDS_MISSION_DESC_2766 "Eine UNITY-Eingreiftruppe wird nach Sibirien entsandt, um einen sowjetischen Supercomputer zu zerstören." + IDS_MISSION_DESC_2767 "Eine UNITY-Eingreiftruppe wird nach Indien geschickt, um Informationen über Balaji Malpani zu sammeln." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2768 "Eine UNITY-Eingreiftruppe begibt sich in die Antarktis, um Armstrong aus den Klauen von H.A.R.M. zu retten." + IDS_MISSION_DESC_2769 "Eine UNITY-Eingreiftruppe muss einen tödlichen Pantomimen-Angriff abwehren." +END + + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4800 "A full bucket of water. " +END + +STRINGTABLE +BEGIN +IDS_MISSION_DD_01 "Antarctic Aggression (4-16)" +IDS_MISSION_DD_02 "Conflict in Calcutta (4-16)" +IDS_MISSION_DD_03 "Hydroelectric Hatred (4-16)" +IDS_MISSION_DD_04 "Judgement in Japan (4-16)" +IDS_MISSION_DD_05 "Winter War (4-16)" +IDS_MISSION_DD_06 "Oceanic Opposition (4-16)" +IDS_MISSION_DD_07 "Russian Rampage (4-16)" +IDS_MISSION_DD_08 "Siberian Strife (4-16)" +IDS_MISSION_DD_09 "Violence in the Villa (4-16)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DE_01 "Bollywood (4-8)" +IDS_MISSION_DE_02 "Chill Kill (8-16)" +IDS_MISSION_DE_03 "The Curse of Kali (4-8)" +IDS_MISSION_DE_04 "Mediterranean Mayhem (4-8)" +IDS_MISSION_DE_05 "Italian Invasion (4-8)" +IDS_MISSION_DE_06 "Dojo of Death (8-16)" +IDS_MISSION_DE_07 "Moonbase (8-16)" +IDS_MISSION_DE_08 "Abandoned Prison (8-16)" +IDS_MISSION_DE_09 "Rome in Ruins (4-8)" +IDS_MISSION_DE_10 "Trailer Park (2-4)" +IDS_MISSION_DE_11 "Unrest at UNITY (8-16)" +IDS_MISSION_DE_12 "Woodlands (4-8)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DM_01 "Khios (8-16)" +IDS_MISSION_DM_02 "Siberian Installation (8-16)" +IDS_MISSION_DM_03 "UNITY Headquarters (8-16)" +IDS_MISSION_DM_04 "Volkov's Lair (2-4)" +END + + + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "ResShared.rc" +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/ClientRes/Lang/DE/credits.txt b/Jack/ClientRes/Lang/DE/credits.txt new file mode 100644 index 00000000..a4cdea5a --- /dev/null +++ b/Jack/ClientRes/Lang/DE/credits.txt @@ -0,0 +1,332 @@ +Monolith Productions: +>BIG +>TIME:2.0 +>POS:UL +## +James Ackley, Sound-Design (Leitung) +Scott Albaugh, 2D/3D-Grafik/Animation (verantw. Leitung) +Curt Collins, 2D/3D-Grafik +Brian Davis, 2D/3D-Grafik +Michael Drummond, Level-Design +Kevin Francis, Programmierung (verantw. Leitung) +Terry Franguiadakis, Programmierung +Jim Geldmacher, Programmierung +Jon Gramlich, QS-Leitung +Nathan Grigg, Komposition +Chris Hewett, Entwicklung (Leitung) +J.J. Hoesing, Programmierung +>TIME:8.0 +>POS:UL +## +Rodney Houle, Level-Design +Craig Hubbard, Kreative Leitung/Spiel-Design (Leitung) +Steve Lee, 3D/2D-Grafik (Leitung) +David Longo, künstlerische Leitung/3D-Grafik (Leitung) +Dan Miller, Level-Design +John Mulkey, Level-Design (Leitung) +Jeff Orkin, Programmierung (verantw. Leitung) +John O'Rorke, Programmierung +Brian Pamintuan, Sound-Design +Russ Pecoraro, Programmierung +Brad Pendleton, Programmierung (Leitung) +Sasha Runnels, 3D/2D-Grafik (Leitung) +>TIME:8.0 +>POS:UL +## +Samantha Ryan, Produktion +Wes Sauslberry, künstlerische Leitung +Kevin Stephens, Programmierung (Leitung) +Akika Tanaka, 2D/3D-Grafik +Cassano Thruston, Sound-Design +Simon Wong, Motion-Capturing-Programmierung + +Zusätzliches Level-Design: +Nathan Cheever +Dan Thibadeau + +Charakter-Konzept-Grafik: +Eric Kohler +>TIME:8.0 +>POS:UL +## +Besonderer Dank geht an +folgende Mitarbeiter von Monolith: +Matt Allen +Andrea Barringer +Bryan Bouwman +Wayne Burns +Dan Fagan +Andy Grant +Jason Hall +Patti Kail +Gary Kussman +Kevin Lambert +>TIME:8.0 +>POS:UL +## +Rick Lambright +Brian Legge +Brian Long +Spencer Maiers +Kristin McLellan +Andrew Megowan +Ryan O'Rourke +Matt Scott +Mark Spadoni +Jim Totaro +Jim Wallingford +Sandra Watanabe +Kiyotaka Yaguchi +>TIME:8.0 +>POS:UL +## +Besonderer Dank geht an +folgende Mitarbeiter von Monolith: +Jonathan Branam +Bob Givnin +Brian Goble +Matt Grimshaw +Chris Hedberg +Jeff Hutt +David Koenig +Dan White +Paige Young +>TIME:8.0 +>POS:UL +## +Besonderer Dank geht an: +Steve Burke, NVIDIA +Justin Cooney, ATI +Todd Clauson, Intel +Keith Galocy, NVIDIA +Greg James, NVIDIA +Matt McClellan, Intel +Derek Reynolds, Intel +Randy 'ydnar' Reddig + +Metrolabs, Entwickler von +leckeren XTZ-Koffein- und +Kräuter-Energie-Getränken +>TIME:6.0 +>POS:UL +## +NOLF 2-Titelsong und -Musik: +Nathan Grigg + +Video-Musik: +Nathan Grigg +Guy Whitmore + +Musikeinspielung: +Andrea Wittgens: Gesang (NOLF 2-Titelsong) +Nathan Grigg: Gesang (NOLF 2-Titelsong, Indien, Island) +Jack Klitzman: Saxophon (NOLF 2-Titelsong, Indien) +Vincent Gates: Gitarre (NOLF 2-Titelsong) +Lori Goldston: Cello +(H.A.R.M.-Motiv – arrangiert von Guy Whitmore) +>TIME:7.0 +>POS:UL +## +Aufnahmetechnik: +Jay Kenney +Vincent Gates +Nathan Grigg + +Besonderer Dank geht an: +Rich Ragsdale +(für die Benutzung des NOLF-Titelsongs) +>TIME:5.0 +>POS:UL +## +Stimmen (Originalversion): +>TIME:2.0 +>BIG +>POS:UL +## +JEN TAYLOR: +Cate Archer +Isako +UNITY-Empfang +Ninjas +Passanten +>TIME:4.0 +>POS:UL +## +JOCK BLANEY: +Dimitrij Volkov +>TIME:2.0 +>POS:UL +## +KEN BOYNTON: +Santa +General Morgan Hawkins +Mischa der Pilot +Kamal +Anoop Banerjee +der verrückte Harij +Balaji Malpani +Sowjetpersonal +Indisches H.A.R.M.-Personal +H.A.R.M.-Personal +Darsteller +>TIME:5.0 +>POS:UL +## +DAVID SCULLY: +Isaac Barnes +>TIME:2.0 +>POS:UL +## +DEENA BURKE: +Mutter +Ninjas +>TIME:3.0 +>POS:UL +## +JOHN ARMSTRONG: +Der Direktor +Pierre +H.A.R.M.-Personal +Menschliche Kisten +Darsteller +>TIME:4.0 +>POS:UL +## +GARY SCHWARTZ: +Supersoldaten +Sowjetpersonal +Indisches H.A.R.M.-Personal +>TIME:3.0 +>POS:UL +## +JOHN PATRICK LOWRIE: +Bruno Lawrie +>TIME:2.0 +>POS:UL +## +TODD LICEA: +Personal der bösen Allianz +H.A.R.M.-Personal +>TIME:3.0 +>POS:UL +## +JEFF STEITZER: +Dr. Schenker +Super-Computer +Roboter +>TIME:3.0 +>POS:UL +## +ANDRE SOGLIUZZO: +Magnus Armstrong +>TIME:2.0 +>POS:UL +## +TERRENCE SLOGGINS: +als er selbst +>TIME:2.0 +>POS:UL +## +Motion-Capturing: +Jenna Hawkins +John Kaufmann +Lisa P. Leon-Guerrero +Justin Emeka +Kerry Wong +Hans Altwies +>TIME:6.0 +>POS:UL +## +Sierra Entertainment/Vivendi Universal Publishing: +>TIME:2.0 +>BIG +>POS:UL +## +Bill Dugan, Produktion (Leitung) +Bernadette Pryor, Produktion +Lee Rosini, Marketing (Leitung) +Mike Rodgers, Marken-Management +Rozita Tolouey, Marken-Management +Rich Robinson, VP f. Studios +Barbara Schwabe, VP f. Marketing +Mike Nicolino, Netzwerk-Entwicklung +Julie Pitt, Produktionsdienste-Management +Sarita Churchill, PR-Management +Gary Stevens, QS (Leitung) +Ken Eaton, QS (Überwachung) +>TIME:8.0 +>POS:UL +## +Tharlie Richardson, QS-Test (Leitung) +Sweeney Designs, Handbuch-Design +Guy Welch, Online-Marketing-Management +Mike Taskey, Online-Prophet +Randy Linch, Produkt-Zertifikation (verantw. Leitung) +Rod Shean, Produkt-Zertifikation (verantw. Leitung) +Chris Rooker, Produkt-Zertifikation (Leitung) +Cyra Talton, Produkt-Zertifikation (Leitung) +Brandon Valdez, Produkt-Zertifikation (Leitung) +Richard Benavides, Produkt-Zertifikation (Technik) +Ben Chan, Produkt-Zertifikation (Test) +Mary Barker, Handelsmarketing-Management +>TIME:8.0 +>POS:UL +## +Besonderer Dank geht an: +Erin Alvarez +Molly O'Brien +Pat Callahan +Julie Daino +Tracy Gibbs +Adam Lumsden +Peter Della Pena +Eric Roeder +Mike Ryder +James Shaw +>TIME:7.0 +>POS:UL +## +(c)2002 Monolith Productions Inc. Alle Rechte vorbehalten. +Cate Archer und A Spy in H.A.R.M's Way (AGENTIN IN GEHEIMER MISSION) +sind Marken von Marken von Monolith Productions, Inc. + +Copyright ©2002 Sierra Entertainment, Inc. +©1998-2002 Sierra Entertainment, Inc. +Sierra und das Sierra-Logo sind Marken von Sierra Entertainment. + +Fox Interactive, No One Lives Forever und die +entsprechenden Logos sind eingetragene Marken oder +Marken der Twentieth Century Fox Film Corporation. +©2002 Twentieth Century Fox Film Corporation. +>TIME:6.0 +## +Benutzt Bink Video Technology. Copyright +©1994-2002 RAD Game Tools, Inc. + +MPEG Layer-3 Audio-Kodierungstechnologie +in Lizenz durch Fraunhofer IIS und Thomson Multimedia. + +Dieses Produkt enthält das LithTech™ Jupiter- +System in Lizenz durch LithTech, Inc. +LithTech Jupiter System ©1997–2002 +LithTech Inc. Alle Rechte vorbehalten. +LithTech und das LithTech-Logo sind +Marken von LithTech, Inc. +>TIME:6.0 +## +NVIDIA, das NVIDIA-Logo, NVIDIA The Way It's +Meant to be Played-Logo und andere NVIDIA- +Zeichen sind Marken der NVIDIA Corporation +in den Vereinigten Staaten und anderen Ländern. + +Windows ist eine eingetragene Marke oder +Marke der Microsoft Corporation in den +Vereinigten Staaten und/oder anderen Ländern. + +Das Rating-Symbol ist eine Marke der +Interactive Digital Software Association. +>TIME:6.0 +## +>END + + diff --git a/Jack/ClientRes/Lang/DE/intro.txt b/Jack/ClientRes/Lang/DE/intro.txt new file mode 100644 index 00000000..15f411ad --- /dev/null +++ b/Jack/ClientRes/Lang/DE/intro.txt @@ -0,0 +1,104 @@ +Eine Fox-Interactive- und Sierra-Entertainment-Produktion + +Ein Spiel von Monolith Productions +>TIME:3.0 +>BIG +## +No One Lives Forever 2: +Agentin in geheimer Mission +powered by +LithTech Jupiter System +>TIME:2.0 +>BIG +## +Fox Interactive: +>BIG +>TIME:2.0 +>POS:UL +## +Chris Miller, Produktion +Aaron Blean, Co-Produktion + + +Qualitätssicherung bei Fox: +Igor Krinitskiy, Qualitätssicherung-Management (stellv. Leitung) +Francis Choi, Test (Leitung) +>TIME:7.0 +>POS:UL +## +Test: +Geoff Bent +Scott Carroll +Michael Graham +Jen Johnson +Cris Lee +Jonathan Masterson +Billy Pamier +Denise Pater +Luke Thai +Hal Zabie + +Lokalisierung-Management: +Kristian Davila +>TIME:8.0 +>POS:UL +## +Besonderer Dank geht an: +Eric Asevo +Steve Bersch +Pete Cesario +Lindsey Fischer +Ivo Gerscovich +Greg Goodrich +Tim Hall +Tim Harrison +Michael Heilemann +Becky Kneubuhl +Luke Letizia +Dan Mackechnie +Gabriel Mann +John Melchior +>TIME:8.0 +>POS:UL +## +Megan O'Brien +Paul Pawlicki +Michael Pole +Rich Ragsdale +Tim Ramage +Jamie Samson +Kirk Scott +Dave Shaw +David Stalker +Kristin Sutter (www.nolfgirl.com) +Tim Tran +Jack Van Leer +Ellen Williams +Chris Wilson +Asylum Studio (www.asylumstudio.com) +>TIME:8.0 +>POS:UL +## +Lisa Fredsti (Fox Library) +Brian Thomas (Fox Library) +Brian Harvey (NVIDIA) +Jessie Lawrence (Creative Labs) +Mike Drummelsmith (Matrox) +Marisa Porter, MCA +Van Riker, 1600 Records +John Dongelmans (Microsoft) +Tim Godwin, Line 6 +>TIME:7.0 +>POS:UL +## +Die Arbeit im NOLF-Team bleibt +eine großartige Erfahrung. +Vielen Dank für all die langen Abende, +die verlorenen Wochenenden und vor allem +für euren unglaublichen Einsatz für +die Qualität dieses Spiels. +Ihr seid klasse! – CM +>TIME:6.0 +>POS:UL +## +END diff --git a/Jack/ClientRes/Lang/EN/ClientRes.rc b/Jack/ClientRes/Lang/EN/ClientRes.rc new file mode 100644 index 00000000..5f3de4b1 --- /dev/null +++ b/Jack/ClientRes/Lang/EN/ClientRes.rc @@ -0,0 +1,7808 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\ClientRes.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "..\..\..\shared\resshared.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\ClientRes.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""..\\..\\..\\shared\\resshared.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""ResShared.rc""\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT +// + +CREDITS TEXT "credits.txt" +INTRO TEXT "intro.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR "..\\..\\arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_TITLE_GAME "SINGLE PLAYER" + IDS_TITLE_DIFFICULTY "DIFFICULTY" + IDS_TITLE_OPTIONS "OPTIONS" + IDS_TITLE_NEWGAME "NEW GAME" + IDS_TITLE_LOADGAME "LOAD GAME" + IDS_TITLE_SAVEGAME "SAVE GAME" + IDS_TITLE_CUSTOMLEVELS "CUSTOM LEVELS" + IDS_TITLE_DISPLAYOPTIONS "DISPLAY OPTIONS" + IDS_TITLE_TEXTURE "TEXTURE RESOLUTION" + IDS_TITLE_PERFORMANCE "PERFORMANCE" +END + +STRINGTABLE +BEGIN + IDS_TITLE_SOUND "SOUND" + IDS_TITLE_KEYBOARD "KEYBOARD" + IDS_TITLE_MOUSE "MOUSE" + IDS_TITLE_JOYSTICK "JOYSTICK" + IDS_TITLE_BRIEFING "MISSION" + IDS_NO_DM_MAPS "No maps available for this game mode." + IDS_TITLE_ENDMISSION "MISSION SUMMARY" + IDS_TITLE_PROFILE "PLAYER PROFILE" + IDS_TITLE_PLAYER "PLAYER" + IDS_TITLE_CROSSHAIR "CROSSHAIR" + IDS_TITLE_CONTROLS "CONTROLS" + IDS_TITLE_CONFIGURE "CONFIGURE CONTROLS" + IDS_TITLE_MULTI "MULTIPLAYER" + IDS_TITLE_HOST_OPTIONS "GAME OPTIONS" + IDS_M_STAT_SECRETS "You found %1!d! of %2!d! secrets." + IDS_TITLE_OBJECTIVES "MISSION OBJECTIVES" +END + +STRINGTABLE +BEGIN + IDS_TITLE_GAME_OPTIONS "GAME OPTIONS" + IDS_TITLE_INVENTORY "EQUIPMENT" + IDS_TITLE_ADVDISPLAY "ADVANCED DISPLAY OPTIONS" + IDS_TITLE_EFFECTS "SPECIAL EFFECTS" + IDS_TITLE_JOIN "JOIN GAME" + IDS_TITLE_HOST "HOST GAME" + IDS_TITLE_HOST_MISSIONS "MAP SELECTION" + IDS_TITLE_PLAYER_SETUP "PLAYER SETUP" + IDS_FOUND_SECRET "You found a secret." + IDS_CHAPTERS "Chapter list" + IDS_TITLE_INTEL "INTELLIGENCE" + IDS_TITLE_HOST_CAMPAIGN "MAP SELECTION" + IDS_TITLE_SYSTEM "SYSTEM" + IDS_TITLE_KEYS "INVENTORY" + IDS_HOST_NAME_TDM_DEFAULT "CJ Team Deathmatch" + IDS_TEAM_SAY "TEAM SAY:" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_DD_DEFAULT "CJ Doomsday" + IDS_HELP_MULTIPLAYER_LAN + "Start a LAN multiplayer game or set multiplayer options." + IDS_TITLE_TEAM "TEAM SETUP" + IDS_HELP_CHAPTERS "Replay a chapter." + IDS_HELP_TEAM_NAME "Set the name of the team." + IDS_HELP_CHAPTER_LIST "Replay the highlighted chapter." + IDS_HELP_FAILURE "Press F9 to QuickLoad.\nPress any other key to go to the Load Screen" + IDS_PRESS_ANY_KEY "Press any key to continue." + IDS_NORMAL "Normal" + IDS_PERFORMANCE_TEST "Test Settings" + IDS_CUSTOM "Custom" + IDS_ON "On" + IDS_OFF "Off" + IDS_YES "Yes" + IDS_NO "No" + IDS_NONE "None" +END + +STRINGTABLE +BEGIN + IDS_YES_VK_CODE "89" + IDS_NO_VK_CODE "78" + IDS_ALLOW_GORE "TRUE" + IDS_END_TIME "Time limit reached." + IDS_END_FRAG "Frag limit reached." + IDS_END_UNKNOWN "Level aborted." + IDS_USE_PASSWORD "Lock server" + IDS_HELP_PASSWORD "Requires players to enter a password when joining a session." + IDS_PASSWORD "Password" + IDS_HELP_ENTER_PASSWORD "Specifies the password that players must enter to join a session." + IDS_NOCUSTOMWORLDS "No custom worlds found" + IDS_DEMONOCUSTOMWORLDS "Custom worlds are not available in the demo" + IDS_DEMODISCONNECT "Disconnected from server. (note: demo games must be hosted by demo servers)" + IDS_WAITINGFOROTHERPLAYERS "Waiting for other players..." + IDS_NOJOYSTICKDETECTED "No joystick or gamepad detected. Please check your controller configuration and connection." +END + +STRINGTABLE +BEGIN + IDS_FEW "Few" + IDS_SOME "Some" + IDS_LOTS "Lots" + IDS_ALL "All" + IDS_CLOSE "Close" + IDS_SPACER " - " + IDS_BACK "Back" + IDS_CREATE "Create" + IDS_LOAD "Load" + IDS_DELETE "Delete" + IDS_OK "OK" + IDS_CANCEL "Cancel" + IDS_ENTER_NAME "Enter a name for this game:" + IDS_CONTINUE "Next" + IDS_EMPTY_SLOT "[Empty slot]" + IDS_WHEEL_UP "Wheel Up" +END + +STRINGTABLE +BEGIN + IDS_WHEEL_DOWN "Wheel Down" + IDS_TEAM_1_OPTIONS "Blue team options" + IDS_TEAM_2_OPTIONS "Red team options" + IDS_SINGLEPLAYER "Single player" + IDS_MULTIPLAYER "Multiplayer" + IDS_OPTIONS "Options" + IDS_CREDITS "Credits" + IDS_EXIT "Quit" + IDS_NEWGAME "New game" + IDS_LOADGAME "Load game" + IDS_SAVEGAME "Save game" + IDS_CUSTOM_LEVEL "Custom level" + IDS_DISPLAY "Display" + IDS_SOUND "Sound" + IDS_KEYBOARD "Keyboard" + IDS_MOUSE "Mouse" +END + +STRINGTABLE +BEGIN + IDS_DD_LGT_SCORE "Light piece score" + IDS_DD_LGT_SCORE_HELP "Points recevived for placing a light piece of the device." + IDS_DD_REMOVED_SCORE "Steal piece score" + IDS_DD_REMOVED_SCORE_HELP + "Points recevived for stealing a piece of the opponent's device." + IDS_HOST_REMOVE_WEAPON "< Remove restriction" + IDS_HELP_ADD_WEAPONS "Add items to the restricted list." + IDS_HELP_REM_WEAPONS "Remove items from the restricted list." + IDS_MISSING_WORLD "Unable to load world resources." + IDS_GAME_VERSION "v1.0" + IDS_HOST_NAME_DE_DEFAULT "CJ Demolition" + IDS_WEAPONSSTAY_HELP "Toggle whether or not weapons stay after picking them up." + IDS_HELP_FILTER_TYPE "Set filtering of servers based on game type." + IDS_UNKNOWN "Unknown" + IDS_CONTROL_MANUALAIM "Manual Aim" + IDS_SCANLANPORTS "LAN Network port:" +END + +STRINGTABLE +BEGIN + IDS_ABORT "Leave game" + IDS_DECODEMSG_CHARSET "AaBbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxYyZz" + IDS_SCMDPASSWORD "SCMD Password" + IDS_HELP_ALLOWSCMD "Allows login to SCMD Admin." + IDS_HOST_NAME_DM_DEFAULT "CJ Deathmatch" + IDS_TAGGEDMYSELF "You tagged yourself!" + IDS_HETAGGEDME "You were tagged by %1!s!" + IDS_ITAGGEDHIM "You tagged %1!s!" + IDS_HETAGGEDHIMSELF "%1!s! tagged himself!" + IDS_HETAGGEDHIM "%1!s! tagged %2!s!" + IDS_IWASTAGGED "You were tagged!" + IDS_HEWASTAGGED "%1!s! was tagged!" + IDS_KICKED "You have been kicked from the server." + IDS_SCORE_SCORE "Score:" + IDS_SCORE_PLAYERS "Players:" + IDS_SCORE_KILLS "Kills:" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK "Configure joystick/gamepad" + IDS_RESTOREDEFAULTS "Restore defaults" + IDS_CONFIGURE "Configure controls" + IDS_BRIEFING "Briefing:" + IDS_OBJECTIVES "Objectives:" + IDS_NORMALTURN "Normal turn speed" + IDS_FASTTURN "Fast turn speed" + IDS_LOOKUP "Up/down look speed" + IDS_START_MISSION "Start mission" + IDS_CH_ALPHA "Opacity" + IDS_CH_R "Red" + IDS_CH_G "Green" + IDS_CH_B "Blue" + IDS_CH_STYLE "Style" + IDS_CH_BASIC "Basic" + IDS_CH_CROSSBAR "Crossbar" +END + +STRINGTABLE +BEGIN + IDS_CH_DOTCROSS "Dot-cross" + IDS_CH_POST "Post" + IDS_CH_DOT "Dot" + IDS_CH_CORNER "Corner" + IDS_CH_DYNAMIC "Dynamic scaling" + IDS_CONTROLS_CROSSHAIR "Crosshair" + IDS_PROFILE "Profile" + IDS_HELP_PROFILE "Choose, create, or delete player profiles." + IDS_56K "56k" + IDS_CABLE "Cable" + IDS_TEAM_NAME "Team name" + IDS_DSL_HIGH "DSL (High)" + IDS_T1 "T1" + IDS_T3 "T3" + IDS_BANDWIDTH_CYCLE "Bandwidth" + IDS_HELP_BANDWIDTH_CYCLE "Cycle bandwidth setting" +END + +STRINGTABLE +BEGIN + IDS_HELP_BANDWIDTH_EDIT "Specify a custom bandwidth" + IDS_BANDWIDTH_EDIT "Bandwidth (custom)" + IDS_PROFILE_LIST "Profiles:" + IDS_RESUME "Resume game" + IDS_CONTINUE_GAME "Continue game" + IDS_TEAM_MODEL "Team model" + IDS_GAMMA "Gamma" + IDS_HEADBOB "Head bob" + IDS_WEAPONSWAY "Weapon sway" + IDS_HELP_HEADBOB "Sets the intensity of the simulated head movement while walking." + IDS_HELP_WEAPONSWAY "Sets the intensity of the simulated weapon movement while walking." + IDS_HELP_PICKUP_MSG_DUR "Sets the length of time that messages will remain on the screen." + IDS_PICKUP_MSG_DUR "Message duration" + IDS_IGNORE_TAUNTS "Ignore taunts" + IDS_HELP_IGNORE_TAUNTS "Toggle the use of audio taunts." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_TAUNTS "Audio taunts" + IDS_HELP_ALLOW_TAUNTS "Toggle the use of audio taunts." + IDS_RENAME "Rename" + IDS_VERSION_FILTER "Version:" + IDS_MAIN "Main menu" + IDS_HELP_GAMMA "Adjust the gamma level of the display." + IDS_HELP_SINGLEPLAYER "Start, load, or save a single player game." + IDS_HELP_MULTIPLAYER "Start an multiplayer game or set multiplayer options." + IDS_HELP_OPTIONS "Set display, sound, control, game, and performance options." + IDS_HELP_EXIT "Leave the game." + IDS_HELP_NEW "Start a new game." + IDS_HELP_LOAD "Load a saved game." + IDS_HELP_SAVE "Save the current game." + IDS_HELP_CUSTOM "Load a custom level." + IDS_HELP_PROFILE_CREATE "Create a new profile." + IDS_HELP_BACK "Return to the previous screen." +END + +STRINGTABLE +BEGIN + IDS_HELP_DIFFICULTY "Set the game difficulty." + IDS_HELP_DISPLAY "Set display options." + IDS_HELP_SOUND "Set audio options." + IDS_HELP_CONTROLS "Set controller configurations." + IDS_HELP_RENDERER "Choose renderer." + IDS_HELP_RESOLUTION "Set screen resolution and bit depth." + IDS_HELP_ANTIALIAS "Toggle full screen anti-aliasing." + IDS_HELP_DETAILLEVEL "Set preset texture detail settings." + IDS_HELP_ADVDISPLAY "Set display options that may affect performance." + IDS_HELP_LOOKSPRING "Automatically center view when you move." + IDS_HELP_RUNLOCK "Toggle run as the default movement." + IDS_HELP_CROSSHAIR "Toggle use of crosshair." + IDS_HELP_GORE "Toggle the use of blood effects." + IDS_HELP_SHADOWS "Set the level of detail for character shadows." + IDS_HELP_TEAM_MODEL "Set the model used for the team." + IDS_HOST_CAMPAIGN "Map Selection" +END + +STRINGTABLE +BEGIN + IDS_WON_VAL_FAIL "Error validating client" + IDS_WON_SERV_VAL "Server validation initialized" + IDS_DISCONNECTED_FROM_SERVER "Disconnected from server" + IDS_CANT_CONNECT_TO_SERVER "Can't connect to the server" + IDS_CONTROL_FORWARD "Forward" + IDS_CONTROL_BACKWARD "Backward" + IDS_CONTROL_TURNLEFT "Turn left" + IDS_CONTROL_TURNRIGHT "Turn right" + IDS_CONTROL_STRAFE "Sidestep" + IDS_CONTROL_STRAFELEFT "Step left" + IDS_CONTROL_STRAFERIGHT "Step right" + IDS_CONTROL_TURNAROUND "Turn around" + IDS_CONTROL_RUN "Sneak" + IDS_CONTROL_FIRE "Fire" + IDS_CONTROL_ACTIVATE "Action" + IDS_CONTROL_JUMP "Jump" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RELOAD "Reload" + IDS_CONTROL_DUCK "Crouch" + IDS_CONTROL_NEXTWEAPON "Next weapon" + IDS_CONTROL_PREVIOUSWEAPON "Previous weapon" + IDS_CONTROL_LOOKUP "Look up" + IDS_CONTROL_LOOKDOWN "Look down" + IDS_CONTROL_CENTERVIEW "Center view" + IDS_CONTROL_INVENTORY "Equipment" + IDS_CONTROL_MISSION "Mission status" + IDS_CONTROL_HOLSTERWEAPON "Holster weapon" + IDS_CONTROL_STATUS "Player status" + IDS_CONTROL_SAY "Talk" + IDS_CONTROL_ALT_FIRING "Alt-Fire" + IDS_CONTROL_NEXT_AMMO "Change ammo" + IDS_CONTROL_KEYS "Inventory" + IDS_CONTROL_INTEL "Intelligence" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RUNLOCKTOGGLE "Toggle Sneak" + IDS_CONTROL_WEAPON1 "Weapon 1" + IDS_CONTROL_WEAPON2 "Weapon 2" + IDS_CONTROL_WEAPON3 "Weapon 3" + IDS_CONTROL_WEAPON4 "Weapon 4" + IDS_CONTROL_WEAPON5 "Weapon 5" + IDS_CONTROL_WEAPON6 "Weapon 6" + IDS_CONTROL_WEAPON7 "Weapon 7" + IDS_CONTROL_WEAPON8 "Weapon 8" + IDS_CONTROL_WEAPON9 "Weapon 9" + IDS_CONTROL_WEAPON10 "Weapon 10" + IDS_CONTROL_ZOOM_IN "Zoom" + IDS_CONTROL_ZOOM_OUT "Zoom out" + IDS_CONTROL_UNASSIGNED "[unassigned]" + IDS_CONTROL_NEXTVISMODE "Sunglasses" + IDS_CONTROL_COMPASS "Compass" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_LEANLEFT "Lean left" + IDS_CONTROL_LEANRIGHT "Lean right" + IDS_CONTROL_CROUCHTOGGLE "Toggle Crouch" + IDS_CONTROL_MOVE_BODY "Lift/Drop Object" + IDS_CONTROL_FLASHLIGHT "Keychain Light" + IDS_CONTROL_RADIO "Radio" + IDS_CONTROL_LASTWEAPON "Last Weapon" +END + +STRINGTABLE +BEGIN + IDS_GAME_OPTIONS "Game" + IDS_HELP_GAME_OPTIONS "Set gameplay and content options." + IDS_DISPLAY_SUBTITLES "Subtitles" + IDS_TEAM_2 "Red team" + IDS_HELP_LOOP_MISSIONS "Restart first map after completing the last map." + IDS_CAMPAIGN_LIST "Map Lists:" + IDS_STAT_COMBAT ".combat" + IDS_STAT_DEFENSE ".defense" + IDS_STAT_ACCURACY ".accuracy" + IDS_HELP_CAMPAIGN_CREATE "Create a new map list." + IDS_HELP_CAMPAIGN_LOAD "Load the selected map list." + IDS_HELP_SUBTITLES "Toggle use of subtitles." + IDS_GAME_TYPE "Game type" + IDS_HELP_TEAM_1 "Set options for the Blue team" + IDS_HELP_TEAM_2 "Set options for the Red team" +END + +STRINGTABLE +BEGIN + IDS_DEDICATED "Dedicated server" + IDS_HELP_DEDICATED "Toggle whether to launch as a dedicated server or not." + IDS_GAME_LANGUAGE "English" + IDS_MENU_VKEY_YES "89" + IDS_MENU_VKEY_NO "78" + IDS_DEMOVERSION "TECHNOLOGY DEMO v1.0" + IDS_HELP_CAMPAIGN_DELETE "Delete the selected map list." + IDS_HELP_CAMPAIGN_RENAME "Rename the selected map list." + IDS_HELP_VERSION_FILTER "Toggle filtering of servers based on version number." + IDS_ALL_VERSIONS "All versions" + IDS_CURRENT_VERSION "Current version" + IDS_PERFORMANCE "Performance" + IDS_HELP_PERFORMANCE "Set options related to performance." + IDS_SFX "Special effects" + IDS_HELP_SFX "Set special effects options." + IDS_POLYGRIDBUMP "PolyGrid bump mapping" +END + +STRINGTABLE +BEGIN + IDS_HELP_POLYGRIDBUMP "Toggle use of bump mapping on polygrids." + IDS_POLYGRIDFRES "PolyGrid fresnel" + IDS_HELP_POLYGRIDFRES "Toggle use of fresnel on polygrids to make reflections more realistic." + IDS_TEXTURE_RES "Texture resolution" + IDS_HELP_TEXTURE_RES "Set the resolution of textures used in the game." + IDS_BUMPMAP "Environment bump mapping" + IDS_HELP_BUMPMAP "Toggle use of environmental bump mapping." + IDS_BILINEAR "Bilinear filtering" + IDS_HELP_BILINEAR "Toggle use of bilinear filtering on textures." + IDS_SHADOWS "Shadows" + IDS_SOUND_HIGH "High" + IDS_SOUND_LOW "Low" + IDS_QUICKLOAD "Quick load (F9)" + IDS_QUICKSAVE "Quick save (F6)" + IDS_LOADCURRENT "Level Start" + IDS_OBJECTIVES_OPTIONAL " (optional)" +END + +STRINGTABLE +BEGIN + IDS_NETERR_VERIFYCDKEYFAIL "CD-Key verification failed." + IDS_NETERR_INVALIDASSETS "Invalid game assets." + IDS_NETERR_BANNED "You have been banned from the server." + IDS_LOADCHECKPOINT "Checkpoint" + IDS_HELP_LOADCHECKPOINTSAVE "Load from the last checkpoint." + IDS_SAVINGCHECKPOINT "Saving checkpoint..." + IDS_NETWORK_DISTRIBUTIONID "881" +END + +STRINGTABLE +BEGIN + IDS_OBJECTIVES_CHANGED "Mission objectives updated" + IDS_X_OF_Y "%1!d! of %2!d!" + IDS_SERVER_LAN "Connection" + IDS_SERVER_LAN_ONLY "LAN Only" + IDS_USE_CROSSHAIR "Use crosshair" + IDS_SERVER_INTERNET "Internet" + IDS_HUD_LAYOUT0 "Health bar, Ammo text" + IDS_HUD_LAYOUT1 "Health text, Ammo text" + IDS_HUD_LAYOUT2 "Health bar, Ammo bar" + IDS_HUDLAYOUT "Heads-up display style" + IDS_HELP_HUDLAYOUT "Set the style of the interface display." + IDS_NO_INVENTORY "[No Inventory]" + IDS_VEHICLETURN "Vehicle turn speed" +END + +STRINGTABLE +BEGIN + IDS_HELP_VEHICLETURN "Set the turn speed for vehicles." + IDS_HELP_RETURN "Return to game." + IDS_TRILINEAR "Trilinear filtering" + IDS_HELP_TRILINEAR "Toggles the use of trilinear filtering." + IDS_ANISOTROPIC "Anisotropic filtering" + IDS_HELP_ANISOTROPIC "Toggle use of anisotropic filtering." + IDS_DETAILLEVEL "Overall" + IDS_TRACERS "Tracers" + IDS_HELP_TRACERS "Toggle tracers effects on weapons." + IDS_DISPLAY_CURRENTMODE "Display mode" + IDS_SERVER_NORESPONSE "Server not responding." + IDS_SERVER_DETAIL_VERSION + "Details are not available because the game server is a different version." + IDS_DISPLAY_CHANGE "Change mode" + IDS_DISPLAY_GORE "Blood" + IDS_ENV_DETAIL "Environmental" + IDS_HELP_ENV_DETAIL "Set the amount of detail used in the environment including snow and grass effects." +END + +STRINGTABLE +BEGIN + IDS_RESPAWN "Respawn" + IDS_SOUND_MUSICENABLED "Music" + IDS_SOUND_MUSICVOL "Music volume" + IDS_SOUND_FX "Sound effects" + IDS_SOUND_FXVOL "Sound effects volume" + IDS_SOUND_QUALITY "Sound effects quality" + IDS_SOUND_NONE "None" + IDS_SOUND_IMA "Direct music" + IDS_LOW "Low" + IDS_MEDIUM "Medium" + IDS_HIGH "High" + IDS_CUSTOMIZED "Customized" + IDS_MOUSE_MOUSELOOK "Always mouse look" + IDS_MOUSE_LOOKSPRING "Auto-center" + IDS_MOUSE_INVERTYAXIS "Invert y axis" + IDS_MOUSE_SENSITIVITY "Mouse sensitivity" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCHING "searching" + IDS_SPEECH_FXVOL "Speech volume" + IDS_HELP_SPEECHVOL "Set volume of speech." + IDS_TARGET_REVIVE "revive %1!s!" + IDS_CURRENT_CAMPAIGN "Current Map List: %1!s!" + IDS_M_STAT_UNDAMAGED "You avoided all injury." + IDS_M_STAT_TIMES_HIT "You were hit %1!d! times." + IDS_M_STAT_MARKSMANSHIP "Marksmanship: %1!d! Head shots." + IDS_M_STAT_ACCURACY "Accuracy: %1!d! Hits, %2!d! Shots (%3!d!%%)" + IDS_IWASKILLED "You were killed!" + IDS_ENTER_CAMPAIGN_NAME "Enter a name for this map list:" + IDS_HEWASKILLED "%1!s! was killed!" + IDS_HELP_ADD_WEAPON "Add selected item to the list of restricted items." + IDS_TARGET_HACKINGKEYPAD "decoding" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_TEAM_SAY "Team Say" + IDS_DOOMSDAY_CORE "Core" + IDS_DOOMSDAY_TRANSMITTER "Transmitter" + IDS_DOOMSDAY_BATTERIES "Batteries" + IDS_DOOMSDAY_PICKEDUP "%1!s! picked up the %2!s!" + IDS_DOOMSDAY_DROPPED "%1!s! dropped the %2!s!" + IDS_DOOMSDAY_PLACED "%1!s! placed the %2!s!" + IDS_DOOMSDAY_STOLE "%1!s! stole the %2!s!" + IDS_DOOMSDAY_DEVICE_COMPLETED "%1!s! completed the Dooms Day Device." + IDS_DOOMSDAY_RESPAWNED "The %1!s! has respawned." + IDS_HELP_SERVER_TYPE "Sort servers by game type. " + IDS_FILTER_MOD "Mod:" + IDS_HELP_FILTER_MOD "Toggle filtering of servers based on mod." + IDS_FILTER_ALLMODS "All Mods" +END + +STRINGTABLE +BEGIN + IDS_TARGET_WELDING "welding" + IDS_TARGET_DECODING "decoding" + IDS_TARGET_PICKING "picking lock" + IDS_TARGET_PHOTOGRAPHING "photographing" + IDS_TARGET_BOMBING "defusing bomb" + IDS_TARGET_INKING "revealing" + IDS_TARGET_BUGGING "planting bug" + IDS_COOP_STAT_ACCURACY "Accuracy" + IDS_COOP_STAT_KILLS "Kills" + IDS_COOP_STAT_DEATHS "Deaths" + IDS_STAT_MISSION "Mission:" + IDS_FILTER_ALLPING "All" + IDS_FILTER_LOWPING "< 100" + IDS_FILTER_MEDPING "< 300" + IDS_FILTER_HIGHPING "< 500" + IDS_HELP_FILTER_PING "Filters servers based on their ping." +END + +STRINGTABLE +BEGIN + IDS_MOUSE_INPUTRATE "Mouse smoothing" + IDS_MOUSE_LEFTBUTTON "Left mouse button" + IDS_MOUSE_MIDDLEBUTTON "Middle mouse button" + IDS_MOUSE_RIGHTBUTTON "Right mouse button" + IDS_JOYSTICK_USE "Use joystick/gamepad" + IDS_JOYSTICK_TURN "Turn left/right" + IDS_JOYSTICK_LOOK "Look up/down" + IDS_JOYSTICK_MOVE "Move ahead/back" + IDS_JOYSTICK_STRAFE "Strafe left/right" + IDS_JOYSTICK_BUTTONNUM "Joystick button %1!d!" + IDS_JOYSTICK_AXIS "Axis" + IDS_JOYSTICK_ACTION "Action" + IDS_HELP_SERVER_LAN "Toggle whether the server should be published to the internet." + IDS_POV_MOVE "Move" + IDS_JOYSTICK_INVERT "Look up/down (inverted)" + IDS_POV_LOOK "Look" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_AXISNONE "None" + IDS_HELP_AXIS "Set the action associated with this joystick/gamepad axis." + IDS_DISPLAY_BITDEPTH "Bit depth" + IDS_ANTIALIAS "Anti-aliasing" + IDS_ADVCONTROLS_RUNLOCK "Always run" + IDS_NEW_EASY "Easy" + IDS_NEW_MEDIUM "Normal" + IDS_NEW_HARD "Hard" + IDS_NEW_INSANE "Impossible" + IDS_ADVCONTROLS_CROSSHAIR "Crosshair" + IDS_DISPLAY_RENDERER "Renderer" + IDS_DISPLAY_RESOLUTION "Resolution" + IDS_TEAM1_NAME "Blue" + IDS_CONTROLS "Controls" + IDS_HELP_PROFILE_LOAD "Load the selected profile." + IDS_SERVER_NAME "Server name" +END + +STRINGTABLE +BEGIN + IDS_SERVER_PLAYERS "Players" + IDS_SERVER_PING "Ping" + IDS_SERVER_GAME "Game" + IDS_SERVER_MAP "Map:" + IDS_JOIN_PLAYER_NAME "Player name" + IDS_JOIN_PLAYER_SCORE "Score" + IDS_OPTION_NAME "Game option" + IDS_OPTION_VALUE "Value" + IDS_SERVER_REFRESH "Refresh servers" + IDS_SERVER_REPING "Re-Ping servers" + IDS_FILTER_ALLGAMES "All games" + IDS_FILTER_DM "Deathmatch only" + IDS_FILTER_COOP """H.A.R.M. vs. UNITY"" only" + IDS_FILTER_ALLPOP "Any number of players" + IDS_FILTER_NOTFULL "Not full" + IDS_FILTER_NOTEMPTY "Not empty" +END + +STRINGTABLE +BEGIN + IDS_FILTER_NOT_BOTH "Not empty and not full" + IDS_SERVER_LOCKED "Lock" + IDS_SERVER_VERSION "Version" + IDS_HELP_SERVER_VERSION "Sort servers by game version." + IDS_HOST_NAME "Session name" + IDS_HOST_OPTIONS "Host options" + IDS_HOST_MISSIONS "Maps" + IDS_HOST_LAUNCH "Launch" + IDS_SERVER_FILTERS "Filters" + IDS_POP_FILTER "Players:" + IDS_NIGHT_SCOPE "Magnifies view for precision shooting and provides light amplification for night operations." + IDS_SILENCER "Reduces firing noise." + IDS_TEAM2_NAME "Red" + IDS_FILTER_PING "Ping:" + IDS_SCOPE "Magnifies view for precision shooting." + IDS_CAMERA_SCOPE "Adjustable magnifaction lenses." +END + +STRINGTABLE +BEGIN + IDS_KILLEDMYSELF "You killed yourself!" + IDS_HEKILLEDME "You were killed by %1!s!" + IDS_IKILLEDHIM "You killed %1!s!" + IDS_HEKILLEDHIMSELF "%1!s! committed suicide!" + IDS_HEKILLEDHIM "%1!s! killed %2!s!" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_COOP_DEFAULT "CJ Cooperative" + IDS_PASSWORD_DEFAULT "password" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCH "search" + IDS_TARGET_MOVE "move body" + IDS_TARGET_DROP "drop" + IDS_TARGET_TALK "talk" + IDS_TARGET_USE "use" + IDS_TARGET_TAKE "pick up" + IDS_TITLE_HOST_WEAPONS "WEAPON RESTRICTIONS" + IDS_TARGET_HACKKEYPAD "decode" + IDS_TARGET_WELD "weld" + IDS_TARGET_DECODE "decode" + IDS_TARGET_PICK "pick lock" + IDS_TARGET_PHOTO "photograph" + IDS_TARGET_BOMB "plant C4" + IDS_TARGET_INK "reveal" + IDS_TARGET_BUG "plant bug" + IDS_TARGET_INNOCENT "friend" +END + +STRINGTABLE +BEGIN + IDS_CDKEY_ENTER "Enter CD Key" + IDS_CDKEY_INVALID "Invalid CD Key" + IDS_CDKEY "CD Key" + IDS_BANDWIDTH_INVALID "Invalid bandwidth. Please enter a value between %1!d! and %2!d!." + IDS_AMMO_NOPICKUP "Can't carry any more %1!s! ammo!" + IDS_DMODE_RENDERER "%1!s! - %2!s!" + IDS_DMODE_RESOLUTION "%1!d!x%2!d!x%3!d!" + IDS_TARGET_WAKEUP "wake up" + IDS_JOIN_GAME "Join game" + IDS_PLAYER_NAME "Player name" + IDS_DMODE_PLEASEWAIT1 "Please wait while the" + IDS_DMODE_PLEASEWAIT2 "list of renderers is built..." + IDS_HELP_PLAYER_MODEL "Set the character model displayed in Deathmatch games" + IDS_HELP_PLAYER_NAME "Set the player name." + IDS_SCORE_PING "Ping:" + IDS_HELP_SERVER_NAME "Sort servers by name." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_SCMD_COMMANDS "Allow SCMD" + IDS_TARGET_OPEN_2177 "open" + IDS_TARGET_CLOSE_2178 "close" + IDS_TARGET_TIPOVER_2179 "tip over" +END + +STRINGTABLE +BEGIN + IDS_HELP_SERVER_PLAYERS "Sort servers by number of players." + IDS_HELP_SERVER_PING "Sort servers by ping." + IDS_HELP_SORT_PLYR_NAME "Sort players by name." + IDS_HELP_SORT_PLYR_SCORE "Sort players by score." + IDS_HELP_SORT_PLYR_PING "Sort players by ping." + IDS_HELP_REFRESH "Refresh list of servers." + IDS_HELP_REPING "Ping all listed servers again." + IDS_HELP_GAME_FILTER "Filter games based on type." + IDS_HELP_POP_FILTER "Filter games based on number of players." + IDS_HELP_REM_ALL_WPNS "Remove all items from the restriction list." + IDS_MOD_NOPICKUP "You already have the %1!s!!" + IDS_GEAR_NOPICKUP "Can't use the %1!s!!" + IDS_HELP_REM_WEAPON "Remove the selected item from the restriction list." + IDS_CHANGING_AMMO "Changing to %1!s! ammo" + IDS_HELP_JOIN_GAME "Join the selected game." + IDS_HELP_SESSION_NAME "Set the name of the session to host." +END + +STRINGTABLE +BEGIN + IDS_TARGET_DEFUSE "defuse" + IDS_DISARMED "Disarmed!" + IDS_HELP_CDKEY "Enter a CD Key to unlock internet games." + IDS_MUSIC_QUALITY "Music quality" + IDS_HELP_MUSIC_QUALITY "Set quality of music. This will affect performance." + IDS_CONFIRM_MUSIC "Enabling the high quality music may decrease overall game performance. Do you wish to enable high quality music?" + IDS_CONFIRM_SOUND "High quality sounds use a large amount of memory and this may affect game performance. Do you wish to enable high quality sounds?" + IDS_PLAYER_MODEL "Deathmatch model" + IDS_HELP_PERFORMANCE_TEST + "Run a sample level to test performance options." + IDS_HOST_AVAIL_MISSIONS "Available missions" + IDS_TITLE_PERFORMANCE_TEST "Testing Performance Settings" + IDS_RES_DIFFERS "(Display resolution will be reset.)" + IDS_PRECACHE "Precache Assets" + IDS_LOAD_USERGAME "Saved games" + IDS_SHELLCASINGS "Shell casings" + IDS_DISCONNECT "Disconnect from Server" +END + +STRINGTABLE +BEGIN + IDS_HELP_SHELLCASINGS "Toggles the rendering of weapon shell casings." + IDS_SHUTDOWN "End game" + IDS_HELP_PRECACHE "Enabling precaching will make the game play more smoothly, but will increase load times and memory usage." + IDS_WPN_RESTRICT "Weapons restrictions" + IDS_PERFORMANCE_FPS_AVE "Ave Frame Rate: %1!d!" + IDS_PERFORMANCE_RESULTS "Test Complete" + IDS_OVERALL_PERFORM "Performance optimization" + IDS_HELP_OVERALL_PERFORM + "Select preset performance options for high, middle, and low-end systems." + IDS_PERFORM_HIGH "Low Detail" + IDS_PERFORM_MEDIUM "Medium Detail" + IDS_PERFORM_LOW "High Detail" + IDS_AUTOSWITCH_WEAPONS "Auto-switch weapons" + IDS_HELP_AUTOSWITCH_WEAPONS + "Toggle the automatic selection of the most recently picked up weapon." + IDS_STARTNEXTLEVEL "Starting next level..." + IDS_PERFORMANCE_FPS_MIN "Min Frame Rate: %1!d!" + IDS_PERFORMANCE_FPS_MAX "Max Frame Rate: %1!d!" +END + +STRINGTABLE +BEGIN + IDS_HELP_GAME_TYPE "Set the type of game to host." + IDS_HELP_HOST_OPTIONS "Set multiplayer gameplay options." + IDS_HELP_HOST_MISSIONS "Set the list of maps for this map list." + IDS_HELP_LAUNCH "Start the game." + IDS_HELP_AVAIL_MISSIONS "List of available missions." + IDS_HELP_POV "Set the action associated with this POV control." + IDS_HELP_SEL_MISSIONS "List of missions to be used for this session." + IDS_HELP_ADD_MISSION "Add the selected map to the list." + IDS_HELP_ADD_ALL "Add all available maps to the list." + IDS_HELP_REM_MISSION "Remove the selected map from the list." + IDS_HELP_REM_ALL "Remove all maps from the list." + IDS_VSYNC "V Sync" + IDS_HELP_VSYNC "Synchronize the screen flip to the device to prevent shearing." + IDS_LOW_VIOLENCE "Low Violence" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_UNBOUND "Your joystick or gamepad is not currently configured. Do you want to configure it now?" + IDS_FX_DETAIL "Effects" + IDS_HELP_FX_DETAIL "Control the amount of detail in effects such as explosions, debris and weapon impacts." + IDS_PERFORMANCE_FPS_BELOW_MIN "%1!d!%% below %2!d!% FPS" + IDS_PERFORMANCE_FPS_MINTOMAX "%1!d!%% between %2!d!% and %3!d!% FPS" + IDS_CONFIRM_RESTORE "Restoring the default settings will override all changes you have made to control configurations. Do want to continue?" + IDS_PERFORMANCE_FPS_ABOVE_MAX "%1!d!%% above %2!d!% FPS" + IDS_PERFORMANCE_TEST_ABORTED "Performance test aborted." + IDS_NEW_MOTD "The Message of the Day has been updated." + IDS_VALIDATION_FAILED "ERROR - Server version check failed." + IDS_HARDWARE_CURSOR "Hardware cursor" + IDS_HELP_HARDWARE_CURSOR "Toggle use of the hardware cursor." + IDS_CONFIRM_CURSOR "Enabling the hardware cursor provides smoother cursor movement, however some video cards do not support use of a hardware cursor. Do you wish to enable the hardware cursor?" + IDS_LAUNCH_UPDATE "Update to latest version" + IDS_HELP_LAUNCH_UPDATE "Shutdown the game and attempt to download the latest version of the game." + IDS_NEW_VERSION "An updated version of the game is available. Would you like to update now?" +END + +STRINGTABLE +BEGIN + IDS_INTERNET "Setting up Internet connection..." + IDS_NO_CDKEY "You must enter a valid CD Key to Join or Host games on the internet." + IDS_TARGET_HACKCARDREADER "decode / insert card" + IDS_LARGE "Large" + IDS_SMALL "Small" + IDS_JOIN_LAN "Join LAN game" + IDS_GUNPICKUP "%1!s!!" + IDS_OUTOFAMMO "%1!s! out of ammo" + IDS_GEARPICKUP "%1!s!" + IDS_AMMOPICKUP "%2!s! ( %1!d! )" + IDS_MODPICKUP "%1!s!" + IDS_INTELLIGENCE "Intelligence item!" + IDS_HELP_JOIN_LAN "Join a LAN multiplayer game." + IDS_SERVER_ADDRESS "Address" + IDS_NO_SERVERS "- no servers detected -" + IDS_LOOKING_FOR_SERVERS "Detecting servers..." +END + +STRINGTABLE +BEGIN + IDS_CONNECTING_TO_SERVER "Connecting to server" + IDS_UNKNOWN_PLAYER "a player" + IDS_HELP_EASY "Easy: you will take less damage when hit, and the AI will be far less accurate." + IDS_HELP_MEDIUM "Normal: you will take slightly more damage when hit, and the AI are more accurate." + IDS_HELP_HARD "Hard: the AI will have average accuracy, and you will take damage easily." + IDS_HELP_INSANE "Impossible: the AI will be very accurate, and you will take a lot more damage." + IDS_DIFF_REMINDER "The level of difficulty may be changed at any time during the mission on the GAME OPTIONS screen." + IDS_SERVERS_SHOWN "(servers %1!d!-%2!d!)" + IDS_HELP_WPN_RESTRICT "Restrict the use of certain weapons, ammo, and gear." + IDS_KEY_PICKUP "Found %1!s!!" + IDS_STATUS_STRING "Status: %1!s!!" + IDS_WAITING "Waiting" + IDS_QUERYING "Querying servers" + IDS_VALIDATING "Validating CD Key" + IDS_TARGET_HACKINGCARDREADER "decoding" + IDS_LOAD_TIPS "Load screen tips" +END + +STRINGTABLE +BEGIN + IDS_HELP_LOAD_TIPS "Toggle display of tips on the loading screen." + IDS_DSL_LOW "DSL (Low)" + IDS_CONTOUR "Vehicle Contouring" + IDS_HELP_CONTOUR "Snowmobile conforms to terrain. Turning off may ease steering." + IDS_PERFORMANCE_RECOMMEND_LOWER + "We recommend you lower your detail settings before playing the game." + IDS_PAUSED "Game paused" + IDS_UNUSED "Unused" + IDS_PERFORMANCE_RECOMMEND_HIGHER + "We recommend you raise your detail settings before playing the game." + IDS_PERFORMANCE_RECOMMEND_CURRENT + "The game should run acceptably with your current detail settings." + IDS_PRESSANYKEY "Press a key..." + IDS_EMPTY " [ empty ]" + IDS_PRESSKEYTOCONTINUE "Press Enter to continue." + IDS_SUREWANTQUIT "Are you sure you want to quit?" + IDS_SUREWANTABORT "Are you sure you want to abort the game in progress?" + IDS_BUMPER_LOADING "Loading..." +END + +STRINGTABLE +BEGIN + IDS_INTEL_ITEMS "Intelligence Items:" + IDS_UP "up" + IDS_DOWN "down" + IDS_DISCON_MISSINGFILE "Missing file %1!s!" + IDS_DISCON_CONNECTTERM "You disconnected from the server." + IDS_DISCON_SERVERBOOT "The server booted you." + IDS_DISCON_TIMEOUT "Connection to server timed out." + IDS_WEAPON "Weapon" + IDS_KEY "Key" + IDS_DEVICE_MOUSE "Mouse" + IDS_DEVICE_JOYSTICK "Joystick" + IDS_AUTOSWITCH_AMMO "Auto-switch ammo" + IDS_HELP_AUTOSWITCH_AMMO + "Toggle the automatic selection of the most recently picked up ammo." + IDS_PORT "Network port" + IDS_HELP_ENTER_PORT "Enter the network port to be used." + IDS_SERVER_PORT "Port" +END + +STRINGTABLE +BEGIN + IDS_NOQUICKSAVEGAME "No quick-save game exists." + IDS_LOADGAMEFAILED "Error loading game." + IDS_SAVEGAMEFAILED "Error saving game." + IDS_NOLOADLEVEL "Could not load level." + IDS_SOUNDNOTINITED "Could not initialize sound. Please make sure your sound card is configured correctly." + IDS_UNSPECIFIEDERROR "An unspecified error occurred." + IDS_NOREMAPKEY "That key cannot be remapped." + IDS_NOSOUNDCHANGE "Sound FX must be enabled to change this value." + IDS_NOMUSICCHANGE "Music must be enabled to change this value." + IDS_ENDCURRENTGAME "This will end your current game. Continue?" + IDS_REINITIALIZING_RENDERER "Reinitializing renderer" + IDS_INVALID3DSOUNDPROVIDER "Invalid 3D sound provider." + IDS_CONFIRMSAVE "Do you want to overwrite this saved game?" + IDS_GAMESAVED "Game saved." + IDS_REBINDING_TEXTURES "Rebinding textures." + IDS_REBINDING_LIGHTMAPS "Rebinding lightmaps." +END + +STRINGTABLE +BEGIN + IDS_SHUTDOWNSERVER "This will shutdown the server and disconnect all clients. Continue?" + IDS_NETERR_GENERIC "ERROR - Unable to set up the network game." + IDS_NETERR_SELECTSERVICE + "ERROR - Unable to use the selected network service." + IDS_NETERR_FILLSERVICE "ERROR - Unable to access the available network services." + IDS_NETERR_JOINSESSION "ERROR - Unable to join the selected game session." + IDS_NETERR_HOSTSESSION "ERROR - Unable to host the game session." + IDS_NETERR_INIT "ERROR - Unable to initialize the networking system." + IDS_NETERR_CANTBINDTOPORT "Unable to bind to the requested port." + IDS_NETERR_NOTSAMEGUID "ERROR - Unable to join because the game server is a different version or a different game." + IDS_PLAYER "Player" + IDS_SAY "SAY:" + IDS_NETERR_WRONGPASS "Incorrect password." + IDS_YOUWEREKILLED "You were killed!" + IDS_QUICKSAVING "Quick saving..." + IDS_SERVERFULL "Unable to join. The server is full." + IDS_SERVER_WRONGVERSION "Unable to join because the game server is a different version. Visit www.the-operative.com for the latest product update." +END + +STRINGTABLE +BEGIN + IDS_JOINEDGAME "%1!s! joined the game" + IDS_LEFTGAME "%1!s! left the game" + IDS_SAVINGGAME "Saving game..." + IDS_CANTQUICKSAVE "You cannot save now." + IDS_ACCESSGRANTED "Access granted" + IDS_ACCESSDENIED "Access denied" + IDS_LOCKED "Locked" + IDS_HELP_ENTER_SCMDPASSWORD + "Specifies the password to login as SCMD admin." + IDS_WON_MOTD_STATUS "Retrieving Message of the Day" + IDS_WON_MOTD_SUCCESS "Successfully retrieved Message of the Day" + IDS_WON_MOTD_FAIL "Error retrieving Message of the Day" + IDS_WON_VERSION_STATUS "Retrieving latest version information" + IDS_WON_VERSION_SUCCESS "Successfully retrieved latest version information" + IDS_WON_VERSION_FAIL "Error retrieving latest version information" + IDS_WON_CDKEY_STATUS "Verifying CD key" + IDS_WON_CDKEY_SUCCESS "Successfully verified CD key" +END + +STRINGTABLE +BEGIN + IDS_FIND_SERVERS "Refresh Server List" + IDS_HELP_FIND_SERVERS "Search for servers." + IDS_HELP_PROFILE_DELETE "Delete the selected profile." + IDS_HELP_PROFILE_RENAME "Rename the selected profile." + IDS_CONFIRM_DELETE "Are you sure you want to delete this file?" + IDS_CURRENT_PROFILE "Current Profile: %1!s!" + IDS_ENTER_PROFILE_NAME "Enter a name for this profile:" + IDS_CONFIRM_NEWPROFILE "This will end your current game. Are you sure you want to continue?" + IDS_PERFORMANCE_TEST_BRIEF + "A short in-game cinematic will now be loaded to gauge how well the game will run using the current Performance settings. When the cinematic is over, a performance setting recommendation will be displayed.\n\nYou can press the ESC key at any time during the cinematic to abort the performance settings test." + IDS_PARAMETERS "Parameters:" + IDS_SELECT_AMMO_TEXT "Select" + IDS_EXIT_WAITING "%1!d! players are waiting for you." + IDS_EXIT_WAITING_1 "1 player is waiting for you." + IDS_EXIT_WAITING_NAME "%1!s! is waiting for you." + IDS_EXIT_PLAYER_WAITING "You are waiting for %1!d! players." + IDS_EXIT_PLAYER_WAITING_1 "You are waiting for 1 player." +END + +STRINGTABLE +BEGIN + IDS_EXIT_PLAYER_WAITING_NAME "You are waiting for %1!s!." + IDS_NET_GAME_END "Level ending conditions" + IDS_NET_GAME_END_HELP "Sets the conditions that end the map." + IDS_CHOOSE_TEAM "Choose team" + IDS_FRAG_LIMIT_HELP "Sets the score needed to win the round." + IDS_HELP_CHOOSE_TEAM_1 "Choose the Blue Team" + IDS_TIME_LIMIT_HELP "Set the number of minutes the round will last." + IDS_MAX_PLAYERS "Max players" + IDS_MAX_PLAYERS_HELP "Set the maximum number of players allowed in the session." + IDS_ROUNDS_HELP "Set the number of rounds to play on a map before switching." + IDS_RUN_SPEED_HELP "Set the percentage of normal run speed used in the session." + IDS_HELP_CHOOSE_TEAM_2 "Choose the Red Team" + IDS_FRIENDLY_FIRE_HELP "Toggle whether or not teammates can damage each other." + IDS_AUTO_SELECT "Auto-Select" + IDS_HELP_HOST_PLAYERDIFF + "Set how much the game's difficulty is affected by additional players." +END + +STRINGTABLE +BEGIN + IDS_WON_CDKEY_FAIL "Error verifying CD key" + IDS_WON_PUB_STATUS "Publishing server" + IDS_WON_PUB_SUCCESS "Successfully published server" + IDS_WON_PUB_FAIL "Error publishing server" + IDS_WON_REM_STATUS "Removing server" + IDS_WON_REM_SUCCESS "Successfully removed server" + IDS_WON_REM_FAIL "Error removing server" + IDS_WON_LIST_STATUS "Retrieving server list" + IDS_WON_LIST_SUCCESS "Successfully retrieved server list" + IDS_WON_LIST_FAIL "Error retrieving server list" + IDS_WON_CLEAR_REQ_LIST "Clearing request list" + IDS_WON_PROCESS_REQ "Processing out of order request" + IDS_WON_PING_SUCCESS "Peer list pinged successfully" + IDS_WON_DETAIL_SUCCESS "Server details queried successfully" + IDS_WON_DETAIL_FAIL "Server is not responding" + IDS_WON_VAL_SUCCESS "Client successfully validated" +END + +STRINGTABLE +BEGIN + IDS_TEAM_1 "Blue team" + IDS_HELP_CAMPAIGN_NAME "Choose the map list to use for this session." + IDS_DETAILTEXTURES "Detail textures" + IDS_HELP_DETAILTEXTURES "Toggle the use of detail textures." + IDS_ENVIRONMENT_MAP "Environment map" + IDS_HELP_ENVIRONMENT_MAP "Toggle the use of environment maps." + IDS_DYNAMICLIGHTS "Dynamic lights" + IDS_HELP_DYNAMICLIGHTS "Toggles the use of dynamic lights." + IDS_TRIPLE_BUFF "Triple buffering" + IDS_HELP_TRIPLE_BUFF "Toggle the use of triple buffering." + IDS_HELP_SETCONTROL "Press Enter or click the left mouse button to set a control for this action." + IDS_HELP_CUSTOMCONTROLS "Assign keyboard, mouse, and game controller actions." + IDS_HELP_MOUSE "Set mouse configuration options." + IDS_HELP_JOYSTICK "Set joystick or gamepad configuration options." + IDS_HELP_ADVCONTROLS "Set advanced controls options." + IDS_HELP_RESTORE "Restore controls to default values." +END + +STRINGTABLE +BEGIN + IDS_HELP_SOUNDFX "Toggle playing of sound effects." + IDS_HELP_SOUNDVOL "Set volume of sound effects." + IDS_HELP_SOUNDQUAL "Set quality of sound effects. This may affect performance." + IDS_HELP_MUSIC "Toggle playing of music." + IDS_HELP_MUSICVOL "Set volume of music." + IDS_HELP_CUSTOMLEVEL "Load the highlighted custom level." + IDS_HELP_USEJOYSTICK "Toggle use of joystick or gamepad." + IDS_HELP_INVERTAXIS "Toggle inversion on this axis." + IDS_HELP_DEADZONE "Set the dead zone for this axis." + IDS_HELP_ANALOG "Toggle between analog and digital." + IDS_HELP_JOY_SENSE "Set the sensitivity of the joystick on this axis." + IDS_HELP_JOY_CENTER "Toggle use of center correction." + IDS_HELP_INVERTY "Toggle inversion of the mouse." + IDS_HELP_MOUSELOOK "Toggle use of mouse to look." + IDS_HELP_MOUSE_SENSE "Set sensitivity of the mouse." + IDS_HELP_MOUSE_INPUT "Set how much the mouse movement is smoothed." +END + +STRINGTABLE +BEGIN + IDS_HELP_MOUSE_BUTTON "Set the action assigned to this button." + IDS_HELP_NORMALTURN "Set the normal turning speed for keyboard controls." + IDS_HELP_FASTTURN "Set the fast turn speed for keyboard controls." + IDS_HELP_LOOKUP "Set the up/down look speed for keyboard controls." + IDS_HOST_CAMPAIGN_DEFAULT "Default Map List" + IDS_HELP_CROSSHAIRMENU "Set crosshair options." + IDS_HELP_LEFT "Display previous page." + IDS_HELP_RIGHT "Display next page." + IDS_HELP_QUICKSAVE "Save the current game in the quicksave slot." + IDS_HELP_SAVEGAME "Save the game into this slot." + IDS_HELP_QUICKLOAD "Load the game in the quicksave slot." + IDS_HELP_LOADGAME "Load the game saved in this slot." + IDS_HELP_RELOAD "Reload the level. The game is automatically saved after entering a level." + IDS_HELP_CAMPAIGN "Select map list." + IDS_HELP_RESUME "Return to game in progress." + IDS_HELP_CONTINUE_GAME "Continue most recently saved game." +END + +STRINGTABLE +BEGIN + IDS_HELP_JOIN "Join a multiplayer game." + IDS_HELP_HOST "Host a new multiplayer game." + IDS_HOST_ADD_MISSION "> Add" + IDS_HOST_REMOVE_MISSION "< Remove" + IDS_HOST_ADD_ALL "> Add All" + IDS_HOST_REMOVE_ALL "< Remove All" + IDS_NOLEVELS "Please select the levels to be played in this game." + IDS_HELP_OK "Accept these settings." + IDS_SCENENUMBER "Scene %1!d!" + IDS_LOOP_MISSIONS "Loop" + IDS_MOVE_CONTROLS "Movement" + IDS_INV_CONTROLS "Interaction" + IDS_VIEW_CONTROLS "View" + IDS_MISC_CONTROLS "Status" + IDS_HELP_KEYBOARD "Set keyboard configuration options." +END + +STRINGTABLE +BEGIN + IDS_HELP_CH_ALPHA "Opacity of the crosshair." + IDS_HELP_CH_R "Red component of the crosshair color." + IDS_HELP_CH_G "Green component of the crosshair color." + IDS_HELP_CH_B "Blue component of the crosshair color." + IDS_HELP_CH_STYLE "Set the style of crosshair to use." + IDS_HELP_CH_DYNAMIC "Toggle the dynamic scaling of the crosshair." + IDS_HELP_MAIN "Return to main menu." + IDS_HELP_NEXTMISSION "Begin next mission" + IDS_HELP_CONTINUE "Continue to next screen." + IDS_CAMPAIGN_EXISTS "A map list of that name already exists." + IDS_GUN_NOPICKUP "Can't carry any more ammo for the %1!s!!" + IDS_GUN_NOPICKUP_INF "Already have the %1!s!!" + IDS_PLAYER_SETUP "Player setup" + IDS_JOIN "Join" + IDS_HOST "Host" + IDS_HELP_PLAYER "Set up your player options." +END + +STRINGTABLE +BEGIN + IDS_WEAPONS_STAY "Weapons stay" + IDS_WEAPONS_STAY_HELP "Toggle whether weapons immediately respawn." + IDS_HELP_AUTO_SELECT "Let the server choose a team for you." + IDS_HELP_TEAM_SELECT "Join this team." + IDS_CANCELREVIVE "Cancel Revive" + IDS_FILTER_TYPE "Game type:" + IDS_HIT_LOCATION "Location based damage" + IDS_HIT_LOCATION_HELP "Modifies damage based on the body part hit." + IDS_SCORE_LIMIT "Winning score" + IDS_HELP_SCORE_LIMIT "Set the score required to end a map." + IDS_ALLOWED_WEAPONS "Allowed weapons" + IDS_DISABLED_WEAPONS "Restricted weapons" + IDS_END_SCORE "Winning score reached." + IDS_TEAM1_BOMB "The Blue team planted a bomb." + IDS_TEAM2_BOMB "The Red team planted a bomb." + IDS_HOST_ADD_WEAPON "> Add restriction" +END + +STRINGTABLE +BEGIN + IDS_APP_SHUTDOWN_1 "Error initializing the renderer. In order to play %1!s! you must have DirectX 8.1 installed." + IDS_PROFILE_ALREADY_EXISTS + "A profile already exists with this name. Please choose a different name." + IDS_CONFIRM_DELETE_PROFILE + "Are you sure that you want to delete this profile along with the settings and saved games associated with it?" + IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE + "A hardware TnL device was unable to be created. This could be due to either not having DirectX 8.1 installed or not having a hardware TnL capable video card. Both of these are required to play %1!s! and although you can continue to play the game by pressing OK, please note that it is not officially supported and may result in crashes, lockups, and poor performance." +END + +STRINGTABLE +BEGIN + IDS_FILTER_CURRENTMOD "Current Mod" + IDS_SERVER_WRONGMOD "Unable to join because the game server is running a different Mod than your current Mod." + IDS_HECHANGED "%1!s! changed teams to the %2!s!" + IDS_ICHANGED "You changed teams to the %1!s!" + IDS_IWILLCHANGE "You will change teams when you respawn." + IDS_FRAG_SCORE "Frag score" + IDS_FRAG_SCORE_HELP "Points received for kills." + IDS_TAG_SCORE "Tag score" + IDS_TAG_SCORE_HELP "Points received for non-lethal knockdowns." + IDS_REVIVE_SCORE "Revive score" + IDS_REVIVE_SCORE_HELP "Points recevived for reviving teammates." + IDS_DD_COMP_SCORE "Completion score" + IDS_DD_COMP_SCORE_HELP "Points recevived for completing the doomsday device." + IDS_DD_HVY_SCORE "Heavy piece score" + IDS_DD_HVY_SCORE_HELP "Points recevived for placing a heavy piece of the device." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_1 "Fists" + IDS_WEAPON_2 "McAllister .32 Automatic Handgun@.32 Handgun" + IDS_WEAPON_3 "Samson .50 Automatic Handgun@.50 Handgun" + IDS_WEAPON_4 "Bacalov Instigator Combat Shotgun@Combat Shotgun" + IDS_WEAPON_5 "Gordon 9mm Submachinegun@9mm SMG" + IDS_WEAPON_6 "Silenced Gordon 9mm Submachinegun@Silenced SMG" + IDS_WEAPON_7 "M1921-A1 Submachinegun@.45 SMG" + IDS_WEAPON_8 "AK-47 Assault Rifle@AK-47" + IDS_WEAPON_9 "CZ-14 Prototype Laser Rifle@Laser Rifle" + IDS_WEAPON_10 "Harij Special 200 Energy Cannon@Energy Cannon" + IDS_WEAPON_11 "RFA Series-4 Bolt-action Rifle@Sniper Rifle" + IDS_WEAPON_12 "Bacalov Corrector@Corrector" + IDS_WEAPON_13 "Vindicator Sportsman's Crossbow@Crossbow" + IDS_WEAPON_14 "Fragmentation Grenade@Frag" + IDS_WEAPON_15 "Incendiary Grenade@Incendiary" + IDS_WEAPON_16 "Flashbang Grenade@Flashbang" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_17 "C4 Demolition Charge@C4" + IDS_WEAPON_18 "[Holster]" + IDS_WEAPON_19 "Remove" + IDS_WEAPON_20 "Remove" + IDS_WEAPON_21 "Remove" + IDS_WEAPON_22 "Remove" + IDS_WEAPON_23 "Remove" + IDS_WEAPON_24 "Remove" + IDS_WEAPON_25 "Remove" + IDS_WEAPON_26 "Remove" + IDS_WEAPON_27 "Remove" + IDS_WEAPON_28 "Remove" + IDS_WEAPON_29 "Remove" + IDS_WEAPON_30 "Remove" + IDS_WEAPON_31 "Remove" + IDS_WEAPON_32 "Remove" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_1 "You can always use your fists if you run out of bullets." + IDS_WEAPON_DESC_2 "A .32 caliber handgun. Reliable and effective. Can be fitted with a silencer." + IDS_WEAPON_DESC_3 "Desert eagle" + IDS_WEAPON_DESC_4 "While not standard issue for spies, a combat shotgun can be useful in certain situations." + IDS_WEAPON_DESC_5 "A popular submachinegun due to its reliability and stylish design. While holding it by the side-mounted magazine is not recommended, most agents do." + IDS_WEAPON_DESC_6 "A modified Gordon submachinegun. The barrel has been swapped out for an integrated silencer." + IDS_WEAPON_DESC_7 "The enduring M1921-A1 submachinegun remains popular with certain criminal organizations who enjoy its gangster connotations." + IDS_WEAPON_DESC_8 "A rugged, reliable Eastern Bloc assault rifle that has become increasingly popular with criminals and terrorists." + IDS_WEAPON_DESC_9 "Laser rifle" + IDS_WEAPON_DESC_10 "Energy cannon" + IDS_WEAPON_DESC_11 "This high-power bolt action rifle makes an effective sniper's weapon. Features an integrated 4X scope and can be fitted with a silencer." + IDS_WEAPON_DESC_12 "Corrector" + IDS_WEAPON_DESC_13 "A sturdy sportsman's crossbow that handles regular bolts or high-powered explosive projectiles. A scope can be mounted to ensure accuracy at longer ranges." + IDS_WEAPON_DESC_14 "A thrown explosive device that can be lobbed over walls and around corners. Makes up in effectiveness what it lacks in subtlety." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_15 "Bursts in a fiery cloud. Very dangerous." + IDS_WEAPON_DESC_16 "This device will temporarily daze anyone caught in its explosion radius." + IDS_WEAPON_DESC_17 "An industrial strength explosive device ideally suited to sabotage." + IDS_WEAPON_DESC_18 "Remove" + IDS_WEAPON_DESC_19 "Remove" + IDS_WEAPON_DESC_20 "Remove" + IDS_WEAPON_DESC_21 "Remove" + IDS_WEAPON_DESC_22 "Remove" + IDS_WEAPON_DESC_23 "Remove" + IDS_WEAPON_DESC_24 "Remove" + IDS_WEAPON_DESC_25 "Remove" + IDS_WEAPON_DESC_26 "Remove" + IDS_WEAPON_DESC_27 "Remove" + IDS_WEAPON_DESC_28 "Remove" + IDS_WEAPON_DESC_29 "Remove" + IDS_WEAPON_DESC_30 "Remove" +END + +STRINGTABLE +BEGIN + IDS_AMMO_1 "Fist" + IDS_AMMO_2 ".32 FMJ@.32" + IDS_AMMO_3 ".32 Cyanide@.32" + IDS_AMMO_4 ".50 FMJ@.50" + IDS_AMMO_5 "12-Gauge Shot@12-ga" + IDS_AMMO_6 "12-Gauge Explosive@12-ga" + IDS_AMMO_7 "9mm FMJ@9mm" + IDS_AMMO_8 ".45 FMJ@.45" + IDS_AMMO_9 "7.62x39 FMJ@7.62" + IDS_AMMO_10 "7.62x39 Phosphorous@7.62x39" + IDS_AMMO_11 "Laser Cell@Cell" + IDS_AMMO_12 "Energy Cannon Charge@Charge" +END + +STRINGTABLE +BEGIN + IDS_AMMO_13 ".308 FMJ@.308" + IDS_AMMO_14 "Corrector HE@HE" + IDS_AMMO_15 "Bolt" + IDS_AMMO_16 "Explosive Bolt@Bolt" + IDS_AMMO_17 "Frag Grenade@Frag" + IDS_AMMO_18 "Incendiary Grenade@Incendiary" + IDS_AMMO_19 "Flashbang Grenade@Flashbang" + IDS_AMMO_20 "C4 Demolition Charge@C4" + IDS_AMMO_21 "Remove" + IDS_AMMO_22 "Remove" + IDS_AMMO_23 "Remove" + IDS_AMMO_24 "Remove" + IDS_AMMO_25 "Remove" + IDS_AMMO_26 "Remove" + IDS_AMMO_27 "Remove" + IDS_AMMO_28 "Remove" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_NAME "PROLOGUE. A Fine Mess" + IDS_MISSION_01_NAME "CHAPTER 1. The Proposition" + IDS_MISSION_02_NAME "CHAPTER 2. Trial by Gunfire" + IDS_MISSION_03_NAME "CHAPTER 3. Welcome to Czechoslovakia" + IDS_MISSION_04_NAME "CHAPTER 4. Danger! Danger!" + IDS_MISSION_05_NAME "CHAPTER 5. Lunar Psycho" + IDS_MISSION_06_NAME "CHAPTER 6. Collision Course" + IDS_MISSION_07_NAME "CHAPTER 7. Il Pazzo" + IDS_MISSION_08_NAME "EPILOGUE. Payment For Services Rendered" + IDS_MISSION_09_NAME "Empty" + IDS_MISSION_10_NAME "Empty" + IDS_MISSION_11_NAME "Empty" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DE_11 "Office Onslaught (8-16)" + IDS_MISSION_DE_12 "Woodlands (4-8)" + IDS_MISSION_DM_01 "Khios (8-16)" + IDS_MISSION_DM_02 "Siberian Installation (8-16)" + IDS_MISSION_DM_03 "UNITY Headquarters (8-16)" + IDS_MISSION_DM_04 "Volkov's Lair (2-4)" + IDS_MISSION_00_LEVEL_00_NAME " " + IDS_MISSION_00_LEVEL_00_NAME2 " " + IDS_MISSION_00_LEVEL_00_NAME3 " " + IDS_MISSION_00_LEVEL_00_NAME4 " " + IDS_MISSION_00_LEVEL_00_NAME5 " " + IDS_MISSION_00_LEVEL_00_NAME6 " " + IDS_MISSION_00_LEVEL_00_NAME7 " " + IDS_MISSION_00_LEVEL_00_NAME8 " " + IDS_MISSION_00_LEVEL_00_NAME9 " " + IDS_MISSION_00_LEVEL_00_NAME10 " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME43 " " + IDS_MISSION_00_LEVEL_00_NAME44 " " + IDS_MISSION_00_LEVEL_00_NAME45 " " + IDS_MISSION_00_LEVEL_00_NAME46 " " + IDS_MISSION_00_LEVEL_00_NAME47 " " + IDS_MISSION_00_LEVEL_00_NAME48 " " + IDS_MISSION_00_LEVEL_00_NAME49 " " + IDS_MISSION_00_LEVEL_00_NAME50 " " + IDS_MISSION_00_LEVEL_00_NAME51 " " + IDS_MISSION_00_LEVEL_00_NAME52 " " + IDS_MISSION_00_LEVEL_00_NAME53 " " + IDS_MISSION_00_LEVEL_00_NAME54 " " + IDS_MISSION_00_LEVEL_00_NAME55 " " + IDS_MISSION_00_LEVEL_00_NAME56 " " + IDS_MISSION_00_LEVEL_00_NAME57 " " + IDS_MISSION_00_LEVEL_00_NAME58 " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_BRIEF "You can tell yourself that doing bad things to bad people is some kind of double negative, that the sin cancels itself out, but that doesn't make the blood any easier to wash from your hands. Corpses are innocent. It's the will that compels them that bears the blame. I'd left enough corpses in my wake to know, and now I was in very real danger of joining them." + IDS_MISSION_01_BRIEF "The last thing I remembered was cheap whisky and cheaper perfume. I think she said her name was Candy. I wasn't really paying attention. I just didn't want to drink alone. That was my second mistake. The first was renting a flat upstairs from the Drunken Scotsman.\n\nIdling in a dull, throbbing semi-consciousness, I knew I was in for a rude awakening. But an apocalyptic hangover wouldn't be the worst of my problems." + IDS_MISSION_02_BRIEF "I took a ferry from Sicily to Malta. The coordinates in Volkov's note led me to crumbling Roman ruins outside of Kalkara. \n\nI wasn't sure what to expect, but I figured a job interview for the world's deadliest assassin wasn't likely to involve resumes and multiple choice questions. I knew I was to be put to the test. And I was prepared to cheat if necessary." + IDS_MISSION_03_BRIEF "The next day I was in Prague, gearing up for my assignment. Volkov wasn't particularly forthcoming with information, but the gist of it seemed to involve infiltrating a well guarded military installation somewhere in the north.\n\nIt would only be much later before it occurred to me that his definition of infiltration might be different from my own. I suppose he wanted me to sneak in. Clearly, he hadn't fully understood who he was hiring." +END + +STRINGTABLE +BEGIN + IDS_MISSION_04_BRIEF "The train pulled in twenty minutes later. I'd caused enough of a ruckus to throw the Czechs off my trail for a time, but I was fairly sure they were on to me by now. There was likely to be a welcoming committee lined up on the platform with rifles at the ready.\n\nThey were the least of my worries. According to Volkov, Danger Danger was about to make their move on the facility. I had to find out what they were after." + IDS_MISSION_05_BRIEF "I'd read about the H.A.R.M. space station disaster in the criminal trade rags, but it had all seemed so far fetched until now. But here I was rocketing through the ether on my way to the moon.\n\nVolkov described Dr. Harij as a visionary mad scientist whose nefarious contributions to H.A.R.M. had rapidly taken the organization from an ambitious startup to the world's most notorious criminal organization. My chief concern was that after a year stranded on the moon, he'd be more mad than scientist." + IDS_MISSION_06_BRIEF "My first thought was that death had been painless. The air had rushed out of the launch tube, threatening to suck me out into space as the moon base erupted behind me. And then nothing. \n\nNow I could feel myself rushing weightlessly through the void toward some great, encompassing light that shone through my eyelids and filled me with warmth and hope. But how had a sinner like me earned his passage into Heaven?" + IDS_MISSION_07_BRIEF "It took some experimentation to figure out the rocket's controls, but there's nothing like the fear of being incinerated by the sun to light a fire under your ass. I set a course for earth and sat beside a porthole, staring out at the lonely expanse of outer space and contemplating my place in the universe. \n\nOne thing was clear: Volkov wasn't paying me enough." + IDS_MISSION_08_BRIEF " " + IDS_MISSION_09_BRIEF " " + IDS_MISSION_10_BRIEF " " + IDS_MISSION_11_BRIEF " " + IDS_MISSION_12_BRIEF " " + IDS_MISSION_13_BRIEF " " + IDS_MISSION_14_BRIEF " " + IDS_MISSION_15_BRIEF " " + IDS_MISSION_TEMP_BRIEF " " + IDS_MISSION_TEMP_BRIEF2 " " + IDS_MISSION_TEMP_BRIEF3 " " + IDS_MISSION_TEMP_BRIEF4 " " +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_1 "Renders enemies temporarily unconscious." + IDS_AMMO_DESC_2 "Katana" + IDS_AMMO_DESC_3 "Tulwar" + IDS_AMMO_DESC_4 "Thrown projectile with razor sharp edges. Can also be used to cause distractions." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_5 "Fragmentation explosive detonates on a 3 second fuse." + IDS_AMMO_DESC_6 "Releases a cloud of stun gas that temporarily dazes targets." + IDS_AMMO_DESC_7 "Area effect that renders targets temporarily unconscious." + IDS_AMMO_DESC_8 "Produces a deadly cloud of corrosive gas." + IDS_AMMO_DESC_9 "Standard .32 caliber full metal jacket ammunition." + IDS_AMMO_DESC_10 ".32 caliber rounds with tiny poison capsules inserted at the tip of each cartridge. Effective against living targets." + IDS_AMMO_DESC_11 "Renders enemies temporarily unconscious." + IDS_AMMO_DESC_12 "Disables security cameras by displaying innocuous video loop." + IDS_AMMO_DESC_13 "Creates a puddle of powerful liquid adhesive. Will stop enemies in their tracks for short duration." + IDS_AMMO_DESC_14 "Emits a powerful electrical charge." + IDS_AMMO_DESC_15 "Anti-Super Soldier Serum produces a chemical reaction in super soldiers that effectively causes them to boil. Harmless against humans." + IDS_AMMO_DESC_16 "Produces a cloud of debilitating laughing gas." + IDS_AMMO_DESC_17 "12-gauge shot spreads from the gun barrel, creating a wide firing arc that is highly effective at close range." + IDS_AMMO_DESC_18 "Explosive pellets burst on impact, causing massive damage to targets." + IDS_AMMO_DESC_19 "Standard 9 millimeter full metal jacket ammunition." + IDS_AMMO_DESC_20 "Standard .45 caliber full metal jacket ammunition." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_21 "Standard 7.62x39 full metal jacket ammunition." + IDS_AMMO_DESC_22 "Phosphorous-coated 7.62x39 ammunition continues to burn on impact." + IDS_AMMO_DESC_23 "Standard .308 full metal jacket ammunition." + IDS_AMMO_DESC_24 "Standard crossbow ammunition. Can sometimes be recovered from soft targets." + IDS_AMMO_DESC_25 "Poison-coated crossbow ammunition. Can sometimes be recovered from soft targets." + IDS_AMMO_DESC_26 "Incendiary crossbow ammunition continues to burn on impact." + IDS_AMMO_DESC_27 "Explosive-tipped crossbow ammunition that detonates on impact." + IDS_AMMO_DESC_28 "Small self-propelled missile that explodes on impact." + IDS_AMMO_DESC_29 "Zoomable spy camera function." + IDS_AMMO_DESC_30 "Timed explosive device with an adjustable timer." + IDS_AMMO_DESC_31 "Standard electronic code analyzer and decipherer." + IDS_AMMO_DESC_32 "Portable arc welder." + IDS_AMMO_DESC_33 "Lockpick" + IDS_AMMO_DESC_34 "Eavesdropping bug." + IDS_AMMO_DESC_35 "Instantaneously atomizes bodies, removing them permanently." + IDS_AMMO_DESC_36 "Chemically neutralizes invisible ink, making it perceptible to the naked eye." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5000 "" + IDS_MISSION_OBJ_5001 " " + IDS_MISSION_OBJ_5002 " " + IDS_MISSION_OBJ_5003 " " + IDS_MISSION_OBJ_5004 " " + IDS_MISSION_OBJ_5005 " " + IDS_MISSION_OBJ_5006 " " + IDS_MISSION_OBJ_5007 " " +END + +STRINGTABLE +BEGIN + IDS_GEAR_NAME_4200 "Heavy Body Armor" + IDS_GEAR_NAME_4201 "Light Body Armor" + IDS_GEAR_NAME_4202 "First Aid Kit" + IDS_GEAR_NAME_4203 "Bandages" + IDS_GEAR_NAME_4204 "Armor Pad" + IDS_GEAR_NAME_4205 "Small Bandage" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6000 "Somewhere in outer space..." + IDS_MISSION_TEXT_6001 "One week earlier" + IDS_MISSION_TEXT_6002 "The next day\nMalta" + IDS_MISSION_TEXT_6003 "Military Supply Outpost\nCzechoslovakia" + IDS_MISSION_TEXT_6004 "20 minutes later" + IDS_MISSION_TEXT_6005 "Dr. Harij's Secret Moon Base" + IDS_MISSION_TEXT_6006 "Danger Danger Headquarters\nSouthern Italy" + IDS_MISSION_TEXT_6007 "H.A.R.M. Headquarters\nLocation Unknown" + IDS_MISSION_TEXT_6008 " " + IDS_MISSION_TEXT_6009 " " + IDS_MISSION_TEXT_6010 " " + IDS_MISSION_TEXT_6011 " " + IDS_MISSION_TEXT_6012 " " + IDS_MISSION_TEXT_6013 " " + IDS_MISSION_TEXT_6014 " " + IDS_MISSION_TEXT_6015 " " +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE "Unacceptable civilian casualties!" + IDS_MISSIONFAILURE2 "You killed a civilian!" + IDS_MISSIONFAILURE3 "You were apprehended!" + IDS_MISSIONFAILURE4 " " + IDS_MISSIONFAILURE5 " " + IDS_MISSIONFAILURE6 "You died!" + IDS_MISSIONFAILURE7 " " + IDS_MISSIONFAILURE8 " " + IDS_MISSIONFAILURE9 "You died!" + IDS_MISSIONFAILURE10 "You died!" + IDS_MISSIONFAILURE11 " " + IDS_MISSIONFAILURE12 " " +END + +STRINGTABLE +BEGIN + IDS_AMMO_29 "Camera" + IDS_AMMO_30 "Explosives" + IDS_AMMO_31 "Code Breaker" + IDS_AMMO_32 "Welder" + IDS_AMMO_33 "Lock Pick" + IDS_AMMO_34 "Bug" + IDS_AMMO_35 "Body Remover" + IDS_AMMO_36 "" + IDS_AMMO_37 "Coin" + IDS_AMMO_38 "Angry Kitty" + IDS_AMMO_39 "Bear Trap" + IDS_AMMO_40 "Banana" + IDS_AMMO_41 "Tracking Dart" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7000 "" + IDS_TRANSMISSIONS_7001 "The rocket cannot be fueled until it is in position." + IDS_TRANSMISSIONS_7002 "The rocket cannot be launched until it is in position." + IDS_TRANSMISSIONS_7003 "The rocket cannot be launched until it has fuel." + IDS_TRANSMISSIONS_7004 "The rocket cannot be launched without the launch key." + IDS_TRANSMISSIONS_7005 "The valve handle is missing. You can't get a good grip with your bare hands." + IDS_TRANSMISSIONS_7006 "The door knob is missing." + IDS_TRANSMISSIONS_7007 "The power is out." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_37 "Coin." + IDS_AMMO_DESC_38 "Angry Kitty." + IDS_AMMO_DESC_39 "Bear trap." + IDS_AMMO_DESC_40 "Banana" + IDS_AMMO_DESC_41 "Radio transmitter darts that mark an enemy's location on your radar." +END + +STRINGTABLE +BEGIN + IDS_TEXT_DIALOGUE_9000 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10000 "There you are, you slippery summanabitch! Get him, boys!" + IDS_DIALOGUE_10001 "Boss, he's gonna crash into the sun pretty soon. Why not just leave him to die?" + IDS_DIALOGUE_10002 "We ain't taking any more chances. This guy's harder to kill than a cacaroach. Now get out there!" + IDS_DIALOGUE_10003 "He vaporized Luigi! Somebody avenge Luigi!" + IDS_DIALOGUE_10004 "Giacomo, nnnnooooo!!!" + IDS_DIALOGUE_10005 "Summanabitch!!!" + IDS_DIALOGUE_10006 "Proximity alert." + IDS_DIALOGUE_10007 "Warning." + IDS_DIALOGUE_10008 "Present course heading intersects with Type G star. Estimated atmospheric temperature: 2 million degrees Fahrenheit. Probability of survival on impact with star: 0. Course correction advised." + IDS_DIALOGUE_10009 "Large mass detected." + IDS_DIALOGUE_10010 "Collision in..." + IDS_DIALOGUE_10011 "30 seconds." + IDS_DIALOGUE_10012 "20 seconds." + IDS_DIALOGUE_10013 "10 seconds." + IDS_DIALOGUE_10014 "5, 4, 3, 2, 1." + IDS_DIALOGUE_10015 "How did I get myself into this mess?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10016 "Wake him up." + IDS_DIALOGUE_10017 "Hey, asshole, wake up." + IDS_DIALOGUE_10018 "Not like that. What are you, his mother? Slap him or something." + IDS_DIALOGUE_10019 "Good morning, ass face." + IDS_DIALOGUE_10020 "Uh, actually, it's, uh, 7:00pm... so, uh, technically it ain't morning. Per se." + IDS_DIALOGUE_10021 "Shut your hole before I shovel dirt in it, Marvin. It's a figure of speech." + IDS_DIALOGUE_10022 "Sorry." + IDS_DIALOGUE_10023 "Now where was I? Oh yeah. Raining on your parade. My boss has a message for you." + IDS_DIALOGUE_10024 "Good evening. This is Louie Franco, your chief competitor. Sorry I can't be there in person, but my aunt just went into the hospital with a herniated disk. Poor old broad. Anyways, the reason my boys got you tied up in that chair is cause you been cutting into my business. I don't have to tell you how tough it is to make a living as a criminal these days, with the economy and all. There just ain't a lot of room for professional hitmen like ourselves. So you're retiring early. Boys, you know what to do. Make sure the son-of-a-bitch suffers." + IDS_DIALOGUE_10025 "Sorry, fella, nothing personal. Marvin, give me the chainsaw." + IDS_DIALOGUE_10026 "Uh, it's still in the trunk." + IDS_DIALOGUE_10027 "What the hell good are you?" + IDS_DIALOGUE_10028 "I'll go get it." + IDS_DIALOGUE_10029 "Damn right, you will. And bring that six pack. This could take a while." + IDS_DIALOGUE_10030 "Arghh!" + IDS_DIALOGUE_10031 "He's untied! Kill the bastard!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10032 "Open the door!" + IDS_DIALOGUE_10033 "I said open it!" + IDS_DIALOGUE_10034 "All right, you asked for it!" + IDS_DIALOGUE_10035 "After we kill this son-of-a-bitch, drinks are on me." + IDS_DIALOGUE_10036 "Drinks are on the house, pal. This is a pub." + IDS_DIALOGUE_10037 "Mr. Jack, this is Dmitrij Volkov. Perhaps you've heard of me. I'm Director of Executive Action for H.A.R.M. Of course, that's just a polite euphemism for being a cruel and sadistic professional assassin." + IDS_DIALOGUE_10038 "I would like to meet with you to discuss an employment opportunity. My contacts tell me you would be adequate for the job." + IDS_DIALOGUE_10039 "Look for the note on your windshield." + IDS_DIALOGUE_10040 "And, Mr. Jack, this isn't a request. I'll be seeing you soon. Whether you show up or not." + IDS_DIALOGUE_10041 "Hey, Joe!" + IDS_DIALOGUE_10042 "Yeah?" + IDS_DIALOGUE_10043 "Do you know what a spark plug looks like?" + IDS_DIALOGUE_10044 "No, why?" + IDS_DIALOGUE_10045 "We're trying to sabotage his car, but, uh, we don't know how?" + IDS_DIALOGUE_10046 "Idiot! Just drop a hand grenade in the engine." + IDS_DIALOGUE_10047 "Great idea! Uh, but we can't figure out how to open the hood!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10048 "Never mind, then. We'll just have to kill him instead!" + IDS_DIALOGUE_10049 "Vinny, look at this! I keyed his fender." + IDS_DIALOGUE_10050 "That ain't right, Sal. Sabotage is one thing. Vandalism... now that's just inexcusable." + IDS_DIALOGUE_10051 "Sorry." + IDS_DIALOGUE_10052 "Ah, you made it. I admire a punctual man, Mr. Jack. Let's hope your other... virtues measure up to your dependability." + IDS_DIALOGUE_10053 "(devious laughter)" + IDS_DIALOGUE_10054 "Release the lions!" + IDS_DIALOGUE_10055 "(roars like a lion)" + IDS_DIALOGUE_10056 "(hisses like a lion)" + IDS_DIALOGUE_10057 "Open the gate!" + IDS_DIALOGUE_10058 "Please, proceed." + IDS_DIALOGUE_10059 "(more devious laughter)" + IDS_DIALOGUE_10060 "On my signal, unleash hell!" + IDS_DIALOGUE_10061 "Commence!" + IDS_DIALOGUE_10062 "Strength and honor!" + IDS_DIALOGUE_10063 "The finish line is just ahead." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10064 "(devious laughter, yet again)" + IDS_DIALOGUE_10065 "Make him work for it!" + IDS_DIALOGUE_10066 "Stop coddling him. Fight, my fearsome gladiators!" + IDS_DIALOGUE_10067 "Well done! But we're not finished with you!" + IDS_DIALOGUE_10068 "Fight him, you worthless cowards!" + IDS_DIALOGUE_10069 "He's humiliating you! How can you call yourselves villains?!" + IDS_DIALOGUE_10070 "Bravo. You've passed the test. Now, then, I have a job for you." + IDS_DIALOGUE_10071 "We've intercepted encoded messages from an evil Italian organization known as Danger Danger. Historically, they've been a relatively insignificant presence in the international crime scene-strictly third rate-but they seem to be making a play for the big time." + IDS_DIALOGUE_10072 "We're not sure what they're doing in Czechoslovakia, but we know from the intercepts that it has something to do with H.A.R.M. I want answers. Quickly. You must track them down and interrogate one of their operatives. I'll be monitoring your progress via this two-way radio link." + IDS_DIALOGUE_10073 "The Czechs just received a prototype military snowmobile by train. Commandeer it." + IDS_DIALOGUE_10074 "Now then, head north along the road. Danger Danger has been spotted advancing toward a military facility near your position. Intercept them there." + IDS_DIALOGUE_10075 "Help me move these crates." + IDS_DIALOGUE_10076 "Ugh, more crates." + IDS_DIALOGUE_10077 "What were you expecting? Watermelons? Quit complaining." + IDS_DIALOGUE_10078 "Get this door open! Quickly!" + IDS_DIALOGUE_10079 "He's after the Mark 7!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10080 "Cut him off! Don't let him get away!" + IDS_DIALOGUE_10081 "Damn it! They've cut off the road! Head north to Outpost 3. If you can get aboard the train, it should take you to the secret facility." + IDS_DIALOGUE_10082 "Now get aboard the train." + IDS_DIALOGUE_10083 "With the snowmobile, you should be able to jump onto the train." + IDS_DIALOGUE_10084 "Watch your step. They may already know you're coming." + IDS_DIALOGUE_10085 "Search carefully! The intruder could be anywhere!" + IDS_DIALOGUE_10086 "Call for reinforcements!" + IDS_DIALOGUE_10087 "Buon giorno, friend. Who sent you, eh? I'm thinking it was that Russian bastard, no? Bad luck for you. You picked the wrong psycho to mess with." + IDS_DIALOGUE_10088 "They call me Il Pazzo. In English, that means I'm a crazy summanabitch! Don't you forget it!" + IDS_DIALOGUE_10089 "Kill him... and bring me his testicoli!" + IDS_DIALOGUE_10090 "I see you still have your manhood. Fondle it while you can!" + IDS_DIALOGUE_10091 "Where is that stronzo?!" + IDS_DIALOGUE_10092 "What's the situation?" + IDS_DIALOGUE_10093 "We're being attacked by a bunch of Italians." + IDS_DIALOGUE_10094 "Italians?" + IDS_DIALOGUE_10095 "Don't ask me." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10096 "What about the intruder that came in on the train?" + IDS_DIALOGUE_10097 "He's still at large." + IDS_DIALOGUE_10098 "Italians?" + IDS_DIALOGUE_10099 "That's what they told me." + IDS_DIALOGUE_10100 "Do we have a protocol for that?" + IDS_DIALOGUE_10101 "I don't think they're official representatives of the country or anything. We can probably just kill them." + IDS_DIALOGUE_10102 "Good. That simplifies things. Do we have any idea what they're doing here?" + IDS_DIALOGUE_10103 "So far mostly just shooting people and blowing things up." + IDS_DIALOGUE_10104 "I gathered that much. But do we know why?" + IDS_DIALOGUE_10105 "What do I know about Italians?" + IDS_DIALOGUE_10106 "Are you suggesting their motive is nationalistic?" + IDS_DIALOGUE_10107 "I don't know what their motive is. To be honest, I don't really care. The point is they're attacking us, so we need to defeat them. The rest is just politics." + IDS_DIALOGUE_10108 "Yes, idiot, but don't you think it would be easier to defeat them if you knew what their objective is?" + IDS_DIALOGUE_10109 "Sure, but as I've tried to explain, I'm not an expert on Italians, so how should I know what they're after?" + IDS_DIALOGUE_10110 "What about the other guy?" + IDS_DIALOGUE_10111 "They didn't specify his nationality. He may be Italian, but that hasn't been verified." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10112 "I meant, do we know what his objective is?" + IDS_DIALOGUE_10113 "How can we? We don't even know his nationality." + IDS_DIALOGUE_10114 "This conversation is starting to cause me physical pain." + IDS_DIALOGUE_10115 "Pity. I was hoping for a challenge." + IDS_DIALOGUE_10116 "Ta ta." + IDS_DIALOGUE_10117 "You gotta be kidding me." + IDS_DIALOGUE_10118 "So, a secret Czechoslovakian launch facility. Find out what Danger Danger wants in space. We must know!" + IDS_DIALOGUE_10119 "Get ready! He's penetrated the fifth gate!" + IDS_DIALOGUE_10120 "Who are you people? What are you doing here?" + IDS_DIALOGUE_10121 "I'll never talk." + IDS_DIALOGUE_10122 "Is that a fact?" + IDS_DIALOGUE_10123 "Well, it's more like a guiding principle. I might talk with the right amount of torture, but I'm hoping I'm man enough to take it." + IDS_DIALOGUE_10124 "Let's find out, shall we?" + IDS_DIALOGUE_10125 "Do your worst." + IDS_DIALOGUE_10126 "Who are you supposed to be?" + IDS_DIALOGUE_10127 "Torture me all you want. I'll tell you nothing!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10128 "Is that the best you can do?" + IDS_DIALOGUE_10129 "Is that supposed to hurt?" + IDS_DIALOGUE_10130 "Pathetic." + IDS_DIALOGUE_10131 "Mind if I take a nap? This is boring me." + IDS_DIALOGUE_10132 "Ha, you overloaded the system." + IDS_DIALOGUE_10133 "Short circuit." + IDS_DIALOGUE_10134 "You better reset the power if you want to keep torturing me." + IDS_DIALOGUE_10135 "(Shriek of agony.)" + IDS_DIALOGUE_10136 "Okay, I'll talk!" + IDS_DIALOGUE_10137 "You know that H.A.R.M. space station that got hit by meteors last year? Well, a piece of it crashed on the moon. The guy that designed it was inside. He built a moon base out of the wreckage and he's still living up there. We need a genius like him in our organization, so we're going to hijack a rocket and go rescue him." + IDS_DIALOGUE_10138 "Dr. Harij is alive? This is excellent news! We need a mad scientist of his caliber for our latest scheme-Project: Omega." + IDS_DIALOGUE_10139 "Get your ass to the moon and bring Dr. Harij back in one piece." + IDS_DIALOGUE_10140 "The summanabitchin door won't open!" + IDS_DIALOGUE_10141 "Stand back! We'll have to blast it!" + IDS_DIALOGUE_10142 "Hurry up with those charges!" + IDS_DIALOGUE_10143 "Stop interrupting me. This is exacting work. One wrong move and-" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10144 "Look for a rocket to hijack. You've got to get to Dr. Harij before the Italians." + IDS_DIALOGUE_10145 "Attention, all personnel. We are under attack by unknown assailants. Emergency! Emergency!" + IDS_DIALOGUE_10146 "Repeat, all pers-gaah!" + IDS_DIALOGUE_10147 "Attention, all personnel. This is one of the unknown assailants speaking. I'm taking over this radio for a while. Hope you don't mind." + IDS_DIALOGUE_10148 "So. How is everybody doing tonight, eh? I gotta say, you Czechoslovakians put up a hell of a good fight. I'm impressed. But we're still kicking your ass!" + IDS_DIALOGUE_10149 "Andate tutti a'fanculo!" + IDS_DIALOGUE_10150 "I never been to Czechoslovakia before. I hear it's nice in summer, but this winter crap is for the pigs. If I wanted snow, I would go to Siberia." + IDS_DIALOGUE_10151 "Furio! Enough already! Start the countdown before I slap you!" + IDS_DIALOGUE_10152 "Okay, I must take care of some business. We're stealing one of your stinking Czech rocket ships. How do you like that, eh?" + IDS_DIALOGUE_10153 "Testa di merda! What's wrong with you?! Nobody cares!" + IDS_DIALOGUE_10154 "Right, boss. Countdown to launch: T minus two minutes." + IDS_DIALOGUE_10155 "That's more like it! Lunar assault team Alpha, report to rocket bay 1. We're going to the moon, boys!" + IDS_DIALOGUE_10156 "Affanculo. Everybody gets to go to the moon except me." + IDS_DIALOGUE_10157 "You wanna go to the moon, Furio? How about I kick you in the ass so hard you fly up into outer space? You like that idea?" + IDS_DIALOGUE_10158 "No, but I don't see why I can't come with you." + IDS_DIALOGUE_10159 "I'll tell you why. Because you're an idiot. I only gave you this job because you're my nephew. If I didn't promise my poor, dead brother that I would take care of you... I would take CARE of you. With a bullet." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10160 "I'm sorry, boss. I didn't mean anything. Forgive me." + IDS_DIALOGUE_10161 "I only have one button. And you're pushing it." + IDS_DIALOGUE_10162 "Don't worry. I won't push it any more." + IDS_DIALOGUE_10163 "You better not. 'Cause I'm not even sure what the button does, but I think it could be bad for you." + IDS_DIALOGUE_10164 "Rocket will launch in T minus one minute." + IDS_DIALOGUE_10165 "Rocket will launch in T minus thirty seconds." + IDS_DIALOGUE_10166 "Launch in T minus 10 seconds. Nine. Eight. Seven. Six. Five. Four. Three. Two. One. Lift off!" + IDS_DIALOGUE_10167 "Incompetent fool! You're too late!" + IDS_DIALOGUE_10168 "Very exciting! We'll be launching another rocket in a few minutes, so stay tuned! I'm going for a cigarette and maybe a piss." + IDS_DIALOGUE_10169 "Fortunate news. Don't miss the next rocket." + IDS_DIALOGUE_10170 "We got a meddling summanabitch running around in here. Somebody kill him." + IDS_DIALOGUE_10171 "That stronzo is still alive. He's trying to steal the other rocket." + IDS_DIALOGUE_10172 "He's fueling the rocket!" + IDS_DIALOGUE_10173 "Mario, get the launch key so he can't take off!" + IDS_DIALOGUE_10174 "Run, Mario, run!" + IDS_DIALOGUE_10175 "Everybody, protect Mario! We need that launch key!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10176 "He's coming! The summanabitch is coming!" + IDS_DIALOGUE_10177 "Affanculo! I'm in big trouble!" + IDS_DIALOGUE_10178 "My uncle's gonna crack your peanuts, stronzo! He's gonna make earrings out of them and give them to his mama. How do you like that, eh?" + IDS_DIALOGUE_10179 "Then he's gonna kill me like a puppy." + IDS_DIALOGUE_10180 "Stay frosty. And alert. We can't afford to let one of those Italian bastards in here." + IDS_DIALOGUE_10181 "Any sign of them?" + IDS_DIALOGUE_10182 "Not yet. Maybe we scared them away." + IDS_DIALOGUE_10183 "I doubt it. They seem to want that rocket pretty bad." + IDS_DIALOGUE_10184 "I wonder what they're planning to do with it." + IDS_DIALOGUE_10185 "Probably go up in space." + IDS_DIALOGUE_10186 "Hm, you think so? I never would have thought of that one. Steal a rocket to go up in space. You know, it just might work." + IDS_DIALOGUE_10187 "I have good intuitions about these things." + IDS_DIALOGUE_10188 "We need a strategy." + IDS_DIALOGUE_10189 "I say we go in there and shoot everybody." + IDS_DIALOGUE_10190 "What if they shoot back?" + IDS_DIALOGUE_10191 "Then we duck." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10192 "That's a good plan, but I think it's better if we let them come to us." + IDS_DIALOGUE_10193 "What if they don't come? We need that rocket." + IDS_DIALOGUE_10194 "They'll come as soon as they get thirsty or gotta take a piss." + IDS_DIALOGUE_10195 "Good point. All right, we wait." + IDS_DIALOGUE_10196 "Unauthorized rocket just arrived in bay 4. Security teams, check it out. It's probably that meddling summanabitch Furio told us about. But it could be Martian invaders, so be careful." + IDS_DIALOGUE_10197 "He's coming! Weld the door! Hurry!" + IDS_DIALOGUE_10198 " " + IDS_DIALOGUE_10199 " " + IDS_DIALOGUE_10200 "Check, check. Is this thing on?" + IDS_DIALOGUE_10201 "Now listen to me. This moon base is private property. I don't remember inviting any of you people. Please leave." + IDS_DIALOGUE_10202 "I am trying to be patient, but this situation is completely intolerable." + IDS_DIALOGUE_10203 "It's times like this I wish I'd built an army of killer robots instead of adding the east wing. What was I thinking?" + IDS_DIALOGUE_10204 "Listen, you have no idea what I've been through. I built this place out of debris from the H.A.R.M. space station. It's crude, admittedly, but I take a certain degree of pride in what I've accomplished. The last thing I need is a pack of wild criminals shooting the place up. Do you hear me?" + IDS_DIALOGUE_10205 "I tell you, you are making me VERY angry. Don't make Dr. Harij angry!" + IDS_DIALOGUE_10206 "Wait a second. What am I thinking? You people came from earth! You have rockets! I can go home!!! Hee hee hee!!!" + IDS_DIALOGUE_10207 "I'm saved! Merciful fate! Oh, how I've longed for pancakes... And smoked Copperhead salmon with Moroccan capers. I want to sit in a hammock in the shade, sipping a mango lassi, reading pornographic magazines." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10208 "Ah, here you are. You must be my saviors. I'm already packed and ready to go." + IDS_DIALOGUE_10209 "Giacomo, get the doctor's suitcase. Marco, begin Operation Kill That Meddling Summanabitch That's Been Busting My Balls Since Czechoslovakia." + IDS_DIALOGUE_10210 "You hear that, stronzo? We got the doctor. And now we're gonna kill you like a puppy. Then I'm gonna chop off your marbles and shoot them out into space. Like tiny little asteroids." + IDS_DIALOGUE_10211 "Blow the tunnel!" + IDS_DIALOGUE_10212 "Hahahahaha!!! How do you like that?" + IDS_DIALOGUE_10213 "Die, bitch!" + IDS_DIALOGUE_10214 "I don't know how you survived that explosion, but you're out of luck." + IDS_DIALOGUE_10215 "Sorry we have to leave you to die. Not because I have any sympathy for you. It's only because I was looking forward to putting your coglioni on a nice meatball sandwich and feeding it to my pigs." + IDS_DIALOGUE_10216 "Let's go. We have evil things to do." + IDS_DIALOGUE_10217 "... I assume you can hear me... You'll need to hijack a rocket." + IDS_DIALOGUE_10218 "... you'll need to hijack a rocket unless you want to burn up in the atmosphere..." + IDS_DIALOGUE_10219 "... and get that scientist back... or else..." + IDS_DIALOGUE_10220 " " + IDS_DIALOGUE_10221 " " + IDS_DIALOGUE_10222 " " + IDS_DIALOGUE_10223 "I can't watch this crap any more. I want that bastard dead. Dead, you hear me? Now get out there and finish him!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10224 "Boss, where are you gonna be?" + IDS_DIALOGUE_10225 "Sitting on the toilet, so don't bother me unless it's an emergency." + IDS_DIALOGUE_10226 "He's not dead yet, is he?" + IDS_DIALOGUE_10227 "Almost." + IDS_DIALOGUE_10228 "Almost? You mean he's hurt really bad and about to die?" + IDS_DIALOGUE_10229 "Not exactly. More like I think we're getting ready to kill him." + IDS_DIALOGUE_10230 "So you weren't ready before? What were you going to do, make love to him?" + IDS_DIALOGUE_10231 "I don't make love to bastardi like him." + IDS_DIALOGUE_10232 "You have one more minute. Then I shoot you out the airlock and the rest of us go home." + IDS_DIALOGUE_10233 "What? Why me?" + IDS_DIALOGUE_10234 "Because I left you in charge. You should take your work more seriously." + IDS_DIALOGUE_10235 "Santa pace! The Martians are attacking!" + IDS_DIALOGUE_10236 "That's not a Martian! That's the summanabitch that's trying to steal the doctor! Kill him!" + IDS_DIALOGUE_10237 "Go back to Mars, you stinking bastard!" + IDS_DIALOGUE_10238 "What's going on around here? Do I have to kill everybody myself? Why do I pay you people?" + IDS_DIALOGUE_10239 "I told you a thousand times. I want him dead. I want his heart on a plate. I want his lungs in a salad. And I want his olives in a martini." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10240 "I thought I hired killers. I hired little girls. Your mothers should be ashamed." + IDS_DIALOGUE_10241 "We're taking the scenic route. Make sure he doesn't follow us." + IDS_DIALOGUE_10242 "You don't give up easily, DO you?!" + IDS_DIALOGUE_10243 "You think you can catch me? You couldn't catch syphilis." + IDS_DIALOGUE_10244 "I'm losing my patience! There's nothing more dangerous than an angry psycho killer like me!" + IDS_DIALOGUE_10245 "Ha, ha, ha! What a sucker! I have chickens that are smarter than you." + IDS_DIALOGUE_10246 "Maybe you should give up crime and become a medical test subject." + IDS_DIALOGUE_10247 "You want a piece of me? You think you're a tough guy? Show me what you can do, rompipalle!" + IDS_DIALOGUE_10248 "Faccia di culo!" + IDS_DIALOGUE_10249 "You're a dead man! This I promise. I don't know when and I don't know how and I don't even know where, but you're dead! Dead, you hear me? Morta!" + IDS_DIALOGUE_10250 "I'm impressed. You've done remarkably well." + IDS_DIALOGUE_10251 "I wish we could offer you more permanent employment, but we're in the middle of a hiring freeze." + IDS_DIALOGUE_10252 "I regret having to do this, but we can't be too careful these days." + IDS_DIALOGUE_10253 "Ow." + IDS_DIALOGUE_10254 "Sorry you had to witness that, Doctor." + IDS_DIALOGUE_10255 "No need to apologize. It's just business." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10256 "You have a remarkably evolved perspective." + IDS_DIALOGUE_10257 "It's amazing what being stuck on the moon for countless months does to a man's priorities." + IDS_DIALOGUE_10258 "Perhaps we should consider lunar isolation as part of our training program." + IDS_DIALOGUE_10259 "I'm not sure it would be cost effective. A preferable solution might be to submerge new employees in shark cages off the coast of Fiji for extended periods of time. You'd get much the same benefits for the victims, but the accommodations for their supervisors would be considerably more comfortable." + IDS_DIALOGUE_10260 "Ingenious!" + IDS_DIALOGUE_10261 "This is a new lair, isn't it?" + IDS_DIALOGUE_10262 "It just became operational this past spring." + IDS_DIALOGUE_10263 "I like the lava. Very atmospheric." + IDS_DIALOGUE_10264 "It's completely artificial." + IDS_DIALOGUE_10265 "You don't say!" + IDS_DIALOGUE_10266 "Come, let me give you a tour of the facilities. I think you'll love our new punitive apparatus. It's called the Interrogator." + IDS_DIALOGUE_10267 "Sounds intriguing. During my isolation, I actually sketched a couple of ideas of my own. My favorite is a cunning little contraption I have dubbed the Man-Handler." + IDS_DIALOGUE_10268 "I'd love to see the specs." + IDS_DIALOGUE_10269 "As soon as I transcribe my notes, I'll prepare a proposal." + IDS_DIALOGUE_10270 "I'll look forward to it with monstrous anticipation." + IDS_DIALOGUE_10271 "I wouldn't want to work for you sons-of-bitches anyway." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10272 "Whose skis are these?" + IDS_DIALOGUE_10273 "Mine, actually. I'm going on vacation in the Swiss Alps next week." + IDS_DIALOGUE_10274 "I've never been skiing." + IDS_DIALOGUE_10275 "You should try it sometime." + IDS_DIALOGUE_10276 "Isn't it dangerous?" + IDS_DIALOGUE_10277 "Not at all." + IDS_DIALOGUE_10278 "So this is that notorious hitman I keep hearing about. I'm not impressed." + IDS_DIALOGUE_10279 "What's all that shooting?" + IDS_DIALOGUE_10280 "That Jack guy must've got away." + IDS_DIALOGUE_10281 "How hard is it to chop up a guy with a chainsaw? Jeez!" + IDS_DIALOGUE_10282 "You guys head for the garage out back! Make sure he doesn't get to his car. The rest of you, come with me!" + IDS_DIALOGUE_10283 "He's in the yard!" + IDS_DIALOGUE_10284 "I better put out that fire." + IDS_DIALOGUE_10285 "Identify yourselves!" + IDS_DIALOGUE_10286 "It's the Italians!" + IDS_DIALOGUE_10287 "Get them, boys!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10288 " " + IDS_DIALOGUE_10289 "It's tricky, no? If it's in the yellow, it doesn't hurt at all. If it's in the red, it hurts like a bitch, but it shuts off too quick." + IDS_DIALOGUE_10290 "You are entering a secret Czechoslovakian launch facility--unless you are not authorized to be here, in which case this is nothing more than a toxic waste dump. Personnel involved in the secret Czechoslovakian space program should proceed to their pre-assigned work areas. All other personnel should leave the area before the toxic waste kills you." + IDS_DIALOGUE_10291 "Error. Rocket must be in launch position before it can be fueled." + IDS_DIALOGUE_10292 "Error. Rocket must be in launch position before takeoff sequence can be initiated." + IDS_DIALOGUE_10293 "Error. Rocket fuel level is insufficient for takeoff." + IDS_DIALOGUE_10294 "Error. Control panel locked. Launch key required." + IDS_DIALOGUE_10295 "I've done some preliminary calculations. Between my back pay and hazard bonuses, I'm going to be living large." + IDS_DIALOGUE_10296 "Sorry, Doctor, but you're working for us now. That Russian bastard can lick my gumdrops. You're not going back to H.A.R.M." + IDS_DIALOGUE_10297 "But my pension!" + IDS_DIALOGUE_10298 "To hell with your pension, you miserable old fart. Be glad I don't turn you into a eunuch and make you tap dance for your supper." + IDS_DIALOGUE_10299 "Fine, you've intimidated me. But this won't be good for my morale." + IDS_DIALOGUE_10300 "Quit pushing me, you... you bully." + IDS_DIALOGUE_10301 "Then stop grabbing pieces of furniture and clinging to them like a little girl." + IDS_DIALOGUE_10302 "Mr. Jack, if you rescue me, I will pay you handsomely as soon as I collect my back pay." + IDS_DIALOGUE_10303 "Great plan, except Mr. Jack is about to become one with the universe. Get ready to detonate the charges as soon as we're back aboard." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10304 "Time's up. Shoot him out the airlock." + IDS_DIALOGUE_10305 "No, boss, please!" + IDS_DIALOGUE_10306 "I'll tell your mama you're looking down on her from heaven." + IDS_DIALOGUE_10307 "Boss! Ahhhhhhh!!!" + IDS_DIALOGUE_10308 "That stronzo doesn't give up easily. H.A.R.M. must want you back pretty bad, eh?" + IDS_DIALOGUE_10309 "Who can blame them." + IDS_DIALOGUE_10310 "Mr. Jack, is that you? It is I, Dr. Harij!" + IDS_DIALOGUE_10311 "I'm in here!" + IDS_DIALOGUE_10312 "Please rescue me!" + IDS_DIALOGUE_10313 "(singsong) I'm waiting to be rescued." + IDS_DIALOGUE_10314 "This situation is getting dangerous!" + IDS_DIALOGUE_10315 "Do something about that madman so we can get out of here!" + IDS_DIALOGUE_10316 "Shoot at him!" + IDS_DIALOGUE_10317 "Can I have a little covering fire?" + IDS_DIALOGUE_10318 "Help! I'm pinned down!" + IDS_DIALOGUE_10319 "I'll pick the lock! Cover me!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10320 "Come on! Let's go!" + IDS_DIALOGUE_10321 "Hurry, Mr. Jack! We must leave!" + IDS_DIALOGUE_10322 "Destroy two out of three bomb targets." + IDS_DIALOGUE_10323 "Defend bomb targets from attackers." + IDS_DIALOGUE_10324 "Bomb planted at target 1." + IDS_DIALOGUE_10325 "Bomb planted at target 2." + IDS_DIALOGUE_10326 "Bomb planted at target 3." + IDS_DIALOGUE_10327 "Bomb defused at target 1." + IDS_DIALOGUE_10328 "Bomb defused at target 2." + IDS_DIALOGUE_10329 "Bomb defused at target 3." + IDS_DIALOGUE_10330 "Target 1 destroyed." + IDS_DIALOGUE_10331 "Target 2 destroyed." + IDS_DIALOGUE_10332 "Target 3 destroyed." + IDS_DIALOGUE_10333 "Red team wins." + IDS_DIALOGUE_10334 "Blue team wins." + IDS_DIALOGUE_10335 "Time limit reached." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10336 "Targets destroyed." + IDS_DIALOGUE_10337 "Follow me!" + IDS_DIALOGUE_10338 "Go for target 1!" + IDS_DIALOGUE_10339 "Go for target 2!" + IDS_DIALOGUE_10340 "Go for target 3!" + IDS_DIALOGUE_10341 "Cover me!" + IDS_DIALOGUE_10342 "Defend the target!" + IDS_DIALOGUE_10343 "Doomsday device completed!" + IDS_DIALOGUE_10344 "Core has been picked up." + IDS_DIALOGUE_10345 "Core has been dropped." + IDS_DIALOGUE_10346 "Core has been placed." + IDS_DIALOGUE_10347 "Core has been stolen." + IDS_DIALOGUE_10348 "Transmitter has been picked up." + IDS_DIALOGUE_10349 "Transmitter has been dropped." + IDS_DIALOGUE_10350 "Transmitter has been placed." + IDS_DIALOGUE_10351 "Transmitter has been stolen." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10352 "Batteries have been picked up." + IDS_DIALOGUE_10353 "Batteries have been dropped." + IDS_DIALOGUE_10354 "Batteries have been placed." + IDS_DIALOGUE_10355 "Batteries have been stolen." + IDS_DIALOGUE_10356 "Revive me!" + IDS_DIALOGUE_10357 "Incoming!" + IDS_DIALOGUE_10358 "Defend!" + IDS_DIALOGUE_10359 "Get the Core!" + IDS_DIALOGUE_10360 "Get the Transmitter!" + IDS_DIALOGUE_10361 "Get the Batteries!" + IDS_DIALOGUE_10362 " I've never been skiing." + IDS_DIALOGUE_10363 " Isn't it dangerous?" + IDS_DIALOGUE_10364 " Not at all." + IDS_DIALOGUE_10365 " " + IDS_DIALOGUE_10366 " " + IDS_DIALOGUE_10367 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10368 " " + IDS_DIALOGUE_10369 " " + IDS_DIALOGUE_10370 " " + IDS_DIALOGUE_10371 " " + IDS_DIALOGUE_10372 " " + IDS_DIALOGUE_10373 " " + IDS_DIALOGUE_10374 " " + IDS_DIALOGUE_10375 " " + IDS_DIALOGUE_10376 " " + IDS_DIALOGUE_10377 " " + IDS_DIALOGUE_10378 " " + IDS_DIALOGUE_10379 " " + IDS_DIALOGUE_10380 " " + IDS_DIALOGUE_10381 " " + IDS_DIALOGUE_10382 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10384 " " + IDS_DIALOGUE_10385 " " + IDS_DIALOGUE_10386 " " + IDS_DIALOGUE_10387 " " + IDS_DIALOGUE_10388 " " + IDS_DIALOGUE_10389 " " + IDS_DIALOGUE_10390 " " + IDS_DIALOGUE_10391 " " + IDS_DIALOGUE_10392 " " + IDS_DIALOGUE_10393 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10401 " " + IDS_DIALOGUE_10402 " " + IDS_DIALOGUE_10403 " " + IDS_DIALOGUE_10404 " " + IDS_DIALOGUE_10405 " " + IDS_DIALOGUE_10406 " " + IDS_DIALOGUE_10407 " " + IDS_DIALOGUE_10408 " " + IDS_DIALOGUE_10409 " " + IDS_DIALOGUE_10410 " " + IDS_DIALOGUE_10411 " " + IDS_DIALOGUE_10412 " " + IDS_DIALOGUE_10413 " " + IDS_DIALOGUE_10414 " " + IDS_DIALOGUE_10415 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10416 " " + IDS_DIALOGUE_10417 " " + IDS_DIALOGUE_10418 " " + IDS_DIALOGUE_10419 " " + IDS_DIALOGUE_10420 " " + IDS_DIALOGUE_10421 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10444 " " + IDS_DIALOGUE_10445 " " + IDS_DIALOGUE_10446 " " + IDS_DIALOGUE_10447 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10448 " " + IDS_DIALOGUE_10449 " " + IDS_DIALOGUE_10450 " " + IDS_DIALOGUE_10451 " " + IDS_DIALOGUE_10452 " " + IDS_DIALOGUE_10462 " " + IDS_DIALOGUE_10463 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10464 " " + IDS_DIALOGUE_10465 " " + IDS_DIALOGUE_10466 " " + IDS_DIALOGUE_10467 " " + IDS_DIALOGUE_10468 " " + IDS_DIALOGUE_10469 " " + IDS_DIALOGUE_10470 " " + IDS_DIALOGUE_10471 " " + IDS_DIALOGUE_10472 " " + IDS_DIALOGUE_10473 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10481 " " + IDS_DIALOGUE_10482 " " + IDS_DIALOGUE_10483 " " + IDS_DIALOGUE_10484 " " + IDS_DIALOGUE_10485 " " + IDS_DIALOGUE_10486 " " + IDS_DIALOGUE_10487 " " + IDS_DIALOGUE_10488 " " + IDS_DIALOGUE_10489 " " + IDS_DIALOGUE_10492 " " + IDS_DIALOGUE_10493 " " + IDS_DIALOGUE_10494 " " + IDS_DIALOGUE_10495 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10496 " " + IDS_DIALOGUE_10497 " " + IDS_DIALOGUE_10498 " " + IDS_DIALOGUE_10499 " " + IDS_DIALOGUE_10500 " " + IDS_DIALOGUE_10501 " " + IDS_DIALOGUE_10502 " " + IDS_DIALOGUE_10503 " " + IDS_DIALOGUE_10504 " " + IDS_DIALOGUE_10505 " " + IDS_DIALOGUE_10506 " " + IDS_DIALOGUE_10507 " " + IDS_DIALOGUE_10508 " " + IDS_DIALOGUE_10509 " " + IDS_DIALOGUE_10510 " " + IDS_DIALOGUE_10511 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10512 " " + IDS_DIALOGUE_10513 " " + IDS_DIALOGUE_10514 " " + IDS_DIALOGUE_10515 " " + IDS_DIALOGUE_10516 " " + IDS_DIALOGUE_10517 " " + IDS_DIALOGUE_10518 " " + IDS_DIALOGUE_10519 " " + IDS_DIALOGUE_10520 " " + IDS_DIALOGUE_10521 " " + IDS_DIALOGUE_10522 " " + IDS_DIALOGUE_10523 " " + IDS_DIALOGUE_10524 " " + IDS_DIALOGUE_10525 " " + IDS_DIALOGUE_10526 " " + IDS_DIALOGUE_10527 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10528 " " + IDS_DIALOGUE_10529 " " + IDS_DIALOGUE_10530 " " + IDS_DIALOGUE_10534 " " + IDS_DIALOGUE_10535 " " + IDS_DIALOGUE_10536 " " + IDS_DIALOGUE_10537 " " + IDS_DIALOGUE_10538 " " + IDS_DIALOGUE_10539 " " + IDS_DIALOGUE_10540 " " + IDS_DIALOGUE_10541 " " + IDS_DIALOGUE_10542 " " + IDS_DIALOGUE_10543 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10544 " " + IDS_DIALOGUE_10545 " " + IDS_DIALOGUE_10546 " " + IDS_DIALOGUE_10547 " " + IDS_DIALOGUE_10548 " " + IDS_DIALOGUE_10549 " " + IDS_DIALOGUE_10550 " " + IDS_DIALOGUE_10551 " " + IDS_DIALOGUE_10552 " " + IDS_DIALOGUE_10553 " " + IDS_DIALOGUE_10554 " " + IDS_DIALOGUE_10555 " " + IDS_DIALOGUE_10556 " " + IDS_DIALOGUE_10557 " " + IDS_DIALOGUE_10558 " " + IDS_DIALOGUE_10559 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10560 " " + IDS_DIALOGUE_10561 " " + IDS_DIALOGUE_10562 " " + IDS_DIALOGUE_10563 " " + IDS_DIALOGUE_10564 " " + IDS_DIALOGUE_10565 " " + IDS_DIALOGUE_10566 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10576 " " + IDS_DIALOGUE_10577 " " + IDS_DIALOGUE_10578 " " + IDS_DIALOGUE_10579 " " + IDS_DIALOGUE_10580 " " + IDS_DIALOGUE_10581 " " + IDS_DIALOGUE_10582 " " + IDS_DIALOGUE_10583 " " + IDS_DIALOGUE_10584 " " + IDS_DIALOGUE_10585 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10592 " " + IDS_DIALOGUE_10593 " " + IDS_DIALOGUE_10594 " " + IDS_DIALOGUE_10595 " " + IDS_DIALOGUE_10596 " " + IDS_DIALOGUE_10597 " " + IDS_DIALOGUE_10598 " " + IDS_DIALOGUE_10599 " " + IDS_DIALOGUE_10600 " " + IDS_DIALOGUE_10601 " " + IDS_DIALOGUE_10602 " " + IDS_DIALOGUE_10603 " " + IDS_DIALOGUE_10604 " " + IDS_DIALOGUE_10605 " " + IDS_DIALOGUE_10606 " " + IDS_DIALOGUE_10607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10608 " " + IDS_DIALOGUE_10609 " " + IDS_DIALOGUE_10610 " " + IDS_DIALOGUE_10611 " " + IDS_DIALOGUE_10621 " " + IDS_DIALOGUE_10622 " " + IDS_DIALOGUE_10623 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10624 " " + IDS_DIALOGUE_10625 " " + IDS_DIALOGUE_10626 " " + IDS_DIALOGUE_10627 " " + IDS_DIALOGUE_10628 " " + IDS_DIALOGUE_10629 " " + IDS_DIALOGUE_10630 " " + IDS_DIALOGUE_10631 " " + IDS_DIALOGUE_10632 " " + IDS_DIALOGUE_10633 " " + IDS_DIALOGUE_10634 " " + IDS_DIALOGUE_10635 " " + IDS_DIALOGUE_10636 " " + IDS_DIALOGUE_10637 " " + IDS_DIALOGUE_10638 " " + IDS_DIALOGUE_10639 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10640 " " + IDS_DIALOGUE_10641 " " + IDS_DIALOGUE_10642 " " + IDS_DIALOGUE_10644 " " + IDS_DIALOGUE_10645 " " + IDS_DIALOGUE_10646 " " + IDS_DIALOGUE_10647 " " + IDS_DIALOGUE_10648 " " + IDS_DIALOGUE_10649 " " + IDS_DIALOGUE_10650 " " + IDS_DIALOGUE_10651 " " + IDS_DIALOGUE_10652 " " + IDS_DIALOGUE_10653 "..." + IDS_DIALOGUE_10654 " " + IDS_DIALOGUE_10655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10656 " " + IDS_DIALOGUE_10657 " " + IDS_DIALOGUE_10658 " " + IDS_DIALOGUE_10659 " " + IDS_DIALOGUE_10660 " " + IDS_DIALOGUE_10661 " " + IDS_DIALOGUE_10662 " " + IDS_DIALOGUE_10663 " " + IDS_DIALOGUE_10664 " " + IDS_DIALOGUE_10665 " " + IDS_DIALOGUE_10666 " " + IDS_DIALOGUE_10667 " " + IDS_DIALOGUE_10668 " " + IDS_DIALOGUE_10669 " " + IDS_DIALOGUE_10670 " " + IDS_DIALOGUE_10671 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10672 " " + IDS_DIALOGUE_10673 " " + IDS_DIALOGUE_10674 " " + IDS_DIALOGUE_10675 " " + IDS_DIALOGUE_10676 " " + IDS_DIALOGUE_10677 " " + IDS_DIALOGUE_10678 " " + IDS_DIALOGUE_10679 " " + IDS_DIALOGUE_10680 " " + IDS_DIALOGUE_10681 " " + IDS_DIALOGUE_10682 " " + IDS_DIALOGUE_10683 " " + IDS_DIALOGUE_10684 " " + IDS_DIALOGUE_10685 " " + IDS_DIALOGUE_10686 " " + IDS_DIALOGUE_10687 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10688 " " + IDS_DIALOGUE_10689 " " + IDS_DIALOGUE_10690 " " + IDS_DIALOGUE_10691 " " + IDS_DIALOGUE_10692 " " + IDS_DIALOGUE_10693 " " + IDS_DIALOGUE_10694 " " + IDS_DIALOGUE_10695 " " + IDS_DIALOGUE_10696 " " + IDS_DIALOGUE_10697 " " + IDS_DIALOGUE_10698 " " + IDS_DIALOGUE_10699 " " + IDS_DIALOGUE_10700 " " + IDS_DIALOGUE_10701 " " + IDS_DIALOGUE_10702 " " + IDS_DIALOGUE_10703 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10704 " " + IDS_DIALOGUE_10705 " " + IDS_DIALOGUE_10706 " " + IDS_DIALOGUE_10707 " " + IDS_DIALOGUE_10708 " " + IDS_DIALOGUE_10709 " " + IDS_DIALOGUE_10710 " " + IDS_DIALOGUE_10711 " " + IDS_DIALOGUE_10712 " " + IDS_DIALOGUE_10713 " " + IDS_DIALOGUE_10714 " " + IDS_DIALOGUE_10715 " " + IDS_DIALOGUE_10716 " " + IDS_DIALOGUE_10717 " " + IDS_DIALOGUE_10718 " " + IDS_DIALOGUE_10719 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10720 " " + IDS_DIALOGUE_10721 " " + IDS_DIALOGUE_10724 " " + IDS_DIALOGUE_10725 " " + IDS_DIALOGUE_10726 " " + IDS_DIALOGUE_10727 " " + IDS_DIALOGUE_10728 " " + IDS_DIALOGUE_10729 " " + IDS_DIALOGUE_10730 " " + IDS_DIALOGUE_10731 " " + IDS_DIALOGUE_10732 " " + IDS_DIALOGUE_10733 " " + IDS_DIALOGUE_10734 " " + IDS_DIALOGUE_10735 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10736 " " + IDS_DIALOGUE_10737 " " + IDS_DIALOGUE_10738 " " + IDS_DIALOGUE_10739 " " + IDS_DIALOGUE_10740 " " + IDS_DIALOGUE_10741 " " + IDS_DIALOGUE_10742 " " + IDS_DIALOGUE_10743 " " + IDS_DIALOGUE_10744 " " + IDS_DIALOGUE_10745 " " + IDS_DIALOGUE_10748 " " + IDS_DIALOGUE_10749 " " + IDS_DIALOGUE_10750 " " + IDS_DIALOGUE_10751 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10752 " " + IDS_DIALOGUE_10753 " " + IDS_DIALOGUE_10754 " " + IDS_DIALOGUE_10755 " " + IDS_DIALOGUE_10756 " " + IDS_DIALOGUE_10757 " " + IDS_DIALOGUE_10758 " " + IDS_DIALOGUE_10759 " " + IDS_DIALOGUE_10760 " " + IDS_DIALOGUE_10761 " " + IDS_DIALOGUE_10762 " " + IDS_DIALOGUE_10763 " " + IDS_DIALOGUE_10764 " " + IDS_DIALOGUE_10765 " " + IDS_DIALOGUE_10766 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10770 " " + IDS_DIALOGUE_10771 " " + IDS_DIALOGUE_10773 " " + IDS_DIALOGUE_10774 " " + IDS_DIALOGUE_10775 " " + IDS_DIALOGUE_10776 " " + IDS_DIALOGUE_10777 " " + IDS_DIALOGUE_10779 " " + IDS_DIALOGUE_10780 " " + IDS_DIALOGUE_10781 " " + IDS_DIALOGUE_10782 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10784 " " + IDS_DIALOGUE_10785 " " + IDS_DIALOGUE_10786 " " + IDS_DIALOGUE_10787 " " + IDS_DIALOGUE_10788 " " + IDS_DIALOGUE_10789 " " + IDS_DIALOGUE_10792 " " + IDS_DIALOGUE_10793 " " + IDS_DIALOGUE_10795 " " + IDS_DIALOGUE_10796 " " + IDS_DIALOGUE_10797 " " + IDS_DIALOGUE_10798 " " + IDS_DIALOGUE_10799 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10800 " " + IDS_DIALOGUE_10801 " " + IDS_DIALOGUE_10802 " " + IDS_DIALOGUE_10803 " " + IDS_DIALOGUE_10804 " " + IDS_DIALOGUE_10805 " " + IDS_DIALOGUE_10806 " " + IDS_DIALOGUE_10807 " " + IDS_DIALOGUE_10808 " " + IDS_DIALOGUE_10809 " " + IDS_DIALOGUE_10810 " " + IDS_DIALOGUE_10811 " " + IDS_DIALOGUE_10812 " " + IDS_DIALOGUE_10815 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10816 " " + IDS_DIALOGUE_10817 " " + IDS_DIALOGUE_10818 " " + IDS_DIALOGUE_10819 " " + IDS_DIALOGUE_10820 " " + IDS_DIALOGUE_10821 " " + IDS_DIALOGUE_10822 " " + IDS_DIALOGUE_10823 " " + IDS_DIALOGUE_10824 " " + IDS_DIALOGUE_10825 " " + IDS_DIALOGUE_10826 " " + IDS_DIALOGUE_10827 " " + IDS_DIALOGUE_10828 " " + IDS_DIALOGUE_10829 " " + IDS_DIALOGUE_10830 " " + IDS_DIALOGUE_10831 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10832 " " + IDS_DIALOGUE_10833 " " + IDS_DIALOGUE_10834 " " + IDS_DIALOGUE_10835 " " + IDS_DIALOGUE_10836 " " + IDS_DIALOGUE_10837 " " + IDS_DIALOGUE_10838 " " + IDS_DIALOGUE_10839 " " + IDS_DIALOGUE_10840 " " + IDS_DIALOGUE_10841 " " + IDS_DIALOGUE_10842 " " + IDS_DIALOGUE_10844 " " + IDS_DIALOGUE_10845 " " + IDS_DIALOGUE_10846 " " + IDS_DIALOGUE_10847 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10848 " " + IDS_DIALOGUE_10849 " " + IDS_DIALOGUE_10850 " " + IDS_DIALOGUE_10851 " " + IDS_DIALOGUE_10852 " " + IDS_DIALOGUE_10853 " " + IDS_DIALOGUE_10854 " " + IDS_DIALOGUE_10855 " " + IDS_DIALOGUE_10858 " " + IDS_DIALOGUE_10859 " " + IDS_DIALOGUE_10860 " " + IDS_DIALOGUE_10861 " " + IDS_DIALOGUE_10862 " " + IDS_DIALOGUE_10863 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10864 " " + IDS_DIALOGUE_10865 " " + IDS_DIALOGUE_10866 " " + IDS_DIALOGUE_10867 " " + IDS_DIALOGUE_10868 " " + IDS_DIALOGUE_10869 " " + IDS_DIALOGUE_10870 " " + IDS_DIALOGUE_10871 " " + IDS_DIALOGUE_10872 " " + IDS_DIALOGUE_10873 " " + IDS_DIALOGUE_10874 " " + IDS_DIALOGUE_10875 " " + IDS_DIALOGUE_10876 " " + IDS_DIALOGUE_10877 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10889 " " + IDS_DIALOGUE_10890 " " + IDS_DIALOGUE_10891 " " + IDS_DIALOGUE_10892 " " + IDS_DIALOGUE_10893 " " + IDS_DIALOGUE_10894 " " + IDS_DIALOGUE_10895 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10896 " " + IDS_DIALOGUE_10897 " " + IDS_DIALOGUE_10899 "(" + IDS_DIALOGUE_10900 " " + IDS_DIALOGUE_10901 " " + IDS_DIALOGUE_10902 " " + IDS_DIALOGUE_10903 " " + IDS_DIALOGUE_10904 " " + IDS_DIALOGUE_10905 " " + IDS_DIALOGUE_10906 " " + IDS_DIALOGUE_10907 " " + IDS_DIALOGUE_10908 " " + IDS_DIALOGUE_10909 " " + IDS_DIALOGUE_10910 " " + IDS_DIALOGUE_10911 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10912 " " + IDS_DIALOGUE_10913 " " + IDS_DIALOGUE_10914 " " + IDS_DIALOGUE_10915 " " + IDS_DIALOGUE_10916 " " + IDS_DIALOGUE_10917 " " + IDS_DIALOGUE_10918 " " + IDS_DIALOGUE_10919 " " + IDS_DIALOGUE_10920 " " + IDS_DIALOGUE_10921 " " + IDS_DIALOGUE_10922 " " + IDS_DIALOGUE_10923 " " + IDS_DIALOGUE_10924 " " + IDS_DIALOGUE_10925 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11001 " " + IDS_DIALOGUE_11002 " " + IDS_DIALOGUE_11003 " " + IDS_DIALOGUE_11004 " " + IDS_DIALOGUE_11005 " " + IDS_DIALOGUE_11006 " " + IDS_DIALOGUE_11007 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11008 " " + IDS_DIALOGUE_11009 " " + IDS_DIALOGUE_11010 " " + IDS_DIALOGUE_11011 " " + IDS_DIALOGUE_11012 " " + IDS_DIALOGUE_11013 " " + IDS_DIALOGUE_11014 " " + IDS_DIALOGUE_11015 " " + IDS_DIALOGUE_11016 " " + IDS_DIALOGUE_11017 " " + IDS_DIALOGUE_11018 " " + IDS_DIALOGUE_11019 " " + IDS_DIALOGUE_11020 " " + IDS_DIALOGUE_11021 " " + IDS_DIALOGUE_11022 " " + IDS_DIALOGUE_11023 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11024 " " + IDS_DIALOGUE_11025 " " + IDS_DIALOGUE_11026 " " + IDS_DIALOGUE_11028 " " + IDS_DIALOGUE_11029 " " + IDS_DIALOGUE_11030 " " + IDS_DIALOGUE_11031 " " + IDS_DIALOGUE_11032 " " + IDS_DIALOGUE_11033 " " + IDS_DIALOGUE_11034 " " + IDS_DIALOGUE_11035 " " + IDS_DIALOGUE_11036 " " + IDS_DIALOGUE_11037 " " + IDS_DIALOGUE_11038 " " + IDS_DIALOGUE_11039 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11040 " " + IDS_DIALOGUE_11041 " " + IDS_DIALOGUE_11042 " " + IDS_DIALOGUE_11043 " " + IDS_DIALOGUE_11044 " " + IDS_DIALOGUE_11045 " " + IDS_DIALOGUE_11046 " " + IDS_DIALOGUE_11047 " " + IDS_DIALOGUE_11049 " " + IDS_DIALOGUE_11050 " " + IDS_DIALOGUE_11053 " " + IDS_DIALOGUE_11054 " " + IDS_DIALOGUE_11055 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11056 " " + IDS_DIALOGUE_11057 " " + IDS_DIALOGUE_11058 " " + IDS_DIALOGUE_11059 " " + IDS_DIALOGUE_11060 " " + IDS_DIALOGUE_11061 " " + IDS_DIALOGUE_11062 " " + IDS_DIALOGUE_11063 " " + IDS_DIALOGUE_11064 " " + IDS_DIALOGUE_11065 " " + IDS_DIALOGUE_11066 " " + IDS_DIALOGUE_11067 " " + IDS_DIALOGUE_11068 " " + IDS_DIALOGUE_11069 " " + IDS_DIALOGUE_11070 " " + IDS_DIALOGUE_11071 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11072 " " + IDS_DIALOGUE_11073 " " + IDS_DIALOGUE_11074 " " + IDS_DIALOGUE_11075 " " + IDS_DIALOGUE_11076 " " + IDS_DIALOGUE_11077 " " + IDS_DIALOGUE_11078 " " + IDS_DIALOGUE_11079 " " + IDS_DIALOGUE_11080 " " + IDS_DIALOGUE_11081 " " + IDS_DIALOGUE_11082 " " + IDS_DIALOGUE_11083 " " + IDS_DIALOGUE_11084 " " + IDS_DIALOGUE_11085 " " + IDS_DIALOGUE_11086 " " + IDS_DIALOGUE_11087 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11088 " " + IDS_DIALOGUE_11089 " " + IDS_DIALOGUE_11090 " " + IDS_DIALOGUE_11091 " " + IDS_DIALOGUE_11092 " " + IDS_DIALOGUE_11093 " " + IDS_DIALOGUE_11094 " " + IDS_DIALOGUE_11095 " " + IDS_DIALOGUE_11096 " " + IDS_DIALOGUE_11097 " " + IDS_DIALOGUE_11098 " " + IDS_DIALOGUE_11099 " " + IDS_DIALOGUE_11100 " " + IDS_DIALOGUE_11101 " " + IDS_DIALOGUE_11102 " " + IDS_DIALOGUE_11103 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11104 " " + IDS_DIALOGUE_11105 " " + IDS_DIALOGUE_11106 " " + IDS_DIALOGUE_11107 " " + IDS_DIALOGUE_11108 " " + IDS_DIALOGUE_11109 " " + IDS_DIALOGUE_11110 " " + IDS_DIALOGUE_11111 " " + IDS_DIALOGUE_11112 " " + IDS_DIALOGUE_11113 " " + IDS_DIALOGUE_11114 " " + IDS_DIALOGUE_11115 " " + IDS_DIALOGUE_11116 " " + IDS_DIALOGUE_11117 " " + IDS_DIALOGUE_11118 " " + IDS_DIALOGUE_11119 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11120 " " + IDS_DIALOGUE_11121 " " + IDS_DIALOGUE_11122 " " + IDS_DIALOGUE_11123 " " + IDS_DIALOGUE_11124 " " + IDS_DIALOGUE_11125 " " + IDS_DIALOGUE_11126 " " + IDS_DIALOGUE_11127 " " + IDS_DIALOGUE_11128 " " + IDS_DIALOGUE_11129 " " + IDS_DIALOGUE_11130 " " + IDS_DIALOGUE_11131 " " + IDS_DIALOGUE_11132 " " + IDS_DIALOGUE_11133 " " + IDS_DIALOGUE_11134 " " + IDS_DIALOGUE_11135 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11136 " " + IDS_DIALOGUE_11137 " " + IDS_DIALOGUE_11138 " " + IDS_DIALOGUE_11139 " " + IDS_DIALOGUE_11140 " " + IDS_DIALOGUE_11141 " " + IDS_DIALOGUE_11142 " " + IDS_DIALOGUE_11143 " " + IDS_DIALOGUE_11144 " " + IDS_DIALOGUE_11145 " " + IDS_DIALOGUE_11146 " " + IDS_DIALOGUE_11147 " " + IDS_DIALOGUE_11148 " " + IDS_DIALOGUE_11149 " " + IDS_DIALOGUE_11150 " " + IDS_DIALOGUE_11151 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11152 " " + IDS_DIALOGUE_11153 " " + IDS_DIALOGUE_11154 " " + IDS_DIALOGUE_11155 " " + IDS_DIALOGUE_11156 " " + IDS_DIALOGUE_11157 " " + IDS_DIALOGUE_11158 " " + IDS_DIALOGUE_11159 " " + IDS_DIALOGUE_11160 " " + IDS_DIALOGUE_11161 " " + IDS_DIALOGUE_11162 " " + IDS_DIALOGUE_11163 " " + IDS_DIALOGUE_11164 " " + IDS_DIALOGUE_11165 " " + IDS_DIALOGUE_11166 " " + IDS_DIALOGUE_11167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11168 " " + IDS_DIALOGUE_11169 " " + IDS_DIALOGUE_11170 " " + IDS_DIALOGUE_11171 " " + IDS_DIALOGUE_11172 " " + IDS_DIALOGUE_11173 " " + IDS_DIALOGUE_11174 " " + IDS_DIALOGUE_11175 " " + IDS_DIALOGUE_11176 " " + IDS_DIALOGUE_11177 " " + IDS_DIALOGUE_11178 " " + IDS_DIALOGUE_11179 " " + IDS_DIALOGUE_11180 " " + IDS_DIALOGUE_11181 " " + IDS_DIALOGUE_11182 " " + IDS_DIALOGUE_11183 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11184 " " + IDS_DIALOGUE_11185 " " + IDS_DIALOGUE_11186 " " + IDS_DIALOGUE_11187 " " + IDS_DIALOGUE_11188 " " + IDS_DIALOGUE_11189 " " + IDS_DIALOGUE_11190 " " + IDS_DIALOGUE_11191 " " + IDS_DIALOGUE_11192 " " + IDS_DIALOGUE_11193 " " + IDS_DIALOGUE_11194 " " + IDS_DIALOGUE_11195 " " + IDS_DIALOGUE_11196 " " + IDS_DIALOGUE_11197 " " + IDS_DIALOGUE_11198 " " + IDS_DIALOGUE_11199 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11200 " " + IDS_DIALOGUE_11201 " " + IDS_DIALOGUE_11202 " " + IDS_DIALOGUE_11203 " " + IDS_DIALOGUE_11204 " " + IDS_DIALOGUE_11205 " " + IDS_DIALOGUE_11206 " " + IDS_DIALOGUE_11207 " " + IDS_DIALOGUE_11208 " " + IDS_DIALOGUE_11209 " " + IDS_DIALOGUE_11210 " " + IDS_DIALOGUE_11211 " " + IDS_DIALOGUE_11212 " " + IDS_DIALOGUE_11213 " " + IDS_DIALOGUE_11214 " " + IDS_DIALOGUE_11215 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11216 " " + IDS_DIALOGUE_11217 " " + IDS_DIALOGUE_11218 " " + IDS_DIALOGUE_11219 " " + IDS_DIALOGUE_11220 " " + IDS_DIALOGUE_11221 " " + IDS_DIALOGUE_11222 " " + IDS_DIALOGUE_11223 " " + IDS_DIALOGUE_11224 " " + IDS_DIALOGUE_11225 " " + IDS_DIALOGUE_11226 " " + IDS_DIALOGUE_11227 " " + IDS_DIALOGUE_11228 " " + IDS_DIALOGUE_11229 " " + IDS_DIALOGUE_11230 " " + IDS_DIALOGUE_11231 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11232 " " + IDS_DIALOGUE_11233 " " + IDS_DIALOGUE_11234 " " + IDS_DIALOGUE_11235 " " + IDS_DIALOGUE_11236 " " + IDS_DIALOGUE_11237 " " + IDS_DIALOGUE_11238 " " + IDS_DIALOGUE_11239 " " + IDS_DIALOGUE_11240 " " + IDS_DIALOGUE_11241 " " + IDS_DIALOGUE_11242 " " + IDS_DIALOGUE_11243 " " + IDS_DIALOGUE_11244 " " + IDS_DIALOGUE_11245 " " + IDS_DIALOGUE_11246 " " + IDS_DIALOGUE_11247 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11248 " " + IDS_DIALOGUE_11249 " " + IDS_DIALOGUE_11250 " " + IDS_DIALOGUE_11251 " " + IDS_DIALOGUE_11252 " " + IDS_DIALOGUE_11253 " " + IDS_DIALOGUE_11254 " " + IDS_DIALOGUE_11255 " " + IDS_DIALOGUE_11256 " " + IDS_DIALOGUE_11257 " " + IDS_DIALOGUE_11258 " " + IDS_DIALOGUE_11259 " " + IDS_DIALOGUE_11260 " " + IDS_DIALOGUE_11261 " " + IDS_DIALOGUE_11262 " " + IDS_DIALOGUE_11263 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11264 " " + IDS_DIALOGUE_11265 " " + IDS_DIALOGUE_11266 " " + IDS_DIALOGUE_11267 " " + IDS_DIALOGUE_11268 " " + IDS_DIALOGUE_11269 " " + IDS_DIALOGUE_11270 " " + IDS_DIALOGUE_11271 " " + IDS_DIALOGUE_11272 " " + IDS_DIALOGUE_11273 " " + IDS_DIALOGUE_11274 " " + IDS_DIALOGUE_11275 " " + IDS_DIALOGUE_11276 " " + IDS_DIALOGUE_11277 " " + IDS_DIALOGUE_11278 " " + IDS_DIALOGUE_11279 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11280 " " + IDS_DIALOGUE_11281 " " + IDS_DIALOGUE_11282 " " + IDS_DIALOGUE_11283 " " + IDS_DIALOGUE_11284 " " + IDS_DIALOGUE_11285 " " + IDS_DIALOGUE_11286 " " + IDS_DIALOGUE_11287 " " + IDS_DIALOGUE_11288 " " + IDS_DIALOGUE_11289 " " + IDS_DIALOGUE_11290 " " + IDS_DIALOGUE_11291 " " + IDS_DIALOGUE_11292 " " + IDS_DIALOGUE_11293 " " + IDS_DIALOGUE_11294 " " + IDS_DIALOGUE_11295 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11296 " " + IDS_DIALOGUE_11297 " " + IDS_DIALOGUE_11298 " " + IDS_DIALOGUE_11299 " " + IDS_DIALOGUE_11300 " " + IDS_DIALOGUE_11301 " " + IDS_DIALOGUE_11302 " " + IDS_DIALOGUE_11303 " " + IDS_DIALOGUE_11304 " " + IDS_DIALOGUE_11305 " " + IDS_DIALOGUE_11306 " " + IDS_DIALOGUE_11307 " " + IDS_DIALOGUE_11308 " " + IDS_DIALOGUE_11309 " " + IDS_DIALOGUE_11310 " " + IDS_DIALOGUE_11311 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11312 " " + IDS_DIALOGUE_11313 " " + IDS_DIALOGUE_11314 " " + IDS_DIALOGUE_11315 " " + IDS_DIALOGUE_11316 " " + IDS_DIALOGUE_11319 " " + IDS_DIALOGUE_11320 " " + IDS_DIALOGUE_11321 " " + IDS_DIALOGUE_11322 " " + IDS_DIALOGUE_11323 " " + IDS_DIALOGUE_11324 " " + IDS_DIALOGUE_11325 " " + IDS_DIALOGUE_11326 " " + IDS_DIALOGUE_11327 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11328 " " + IDS_DIALOGUE_11329 " " + IDS_DIALOGUE_11330 " " + IDS_DIALOGUE_11331 " " + IDS_DIALOGUE_11332 " " + IDS_DIALOGUE_11333 " " + IDS_DIALOGUE_11334 " " + IDS_DIALOGUE_11335 " " + IDS_DIALOGUE_11336 " " + IDS_DIALOGUE_11337 " " + IDS_DIALOGUE_11338 " " + IDS_DIALOGUE_11339 " " + IDS_DIALOGUE_11340 " " + IDS_DIALOGUE_11341 " " + IDS_DIALOGUE_11342 " " + IDS_DIALOGUE_11343 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11344 " " + IDS_DIALOGUE_11345 " " + IDS_DIALOGUE_11346 " " + IDS_DIALOGUE_11347 " " + IDS_DIALOGUE_11348 " " + IDS_DIALOGUE_11349 " " + IDS_DIALOGUE_11350 " " + IDS_DIALOGUE_11351 " " + IDS_DIALOGUE_11352 " " + IDS_DIALOGUE_11353 " " + IDS_DIALOGUE_11354 " " + IDS_DIALOGUE_11355 " " + IDS_DIALOGUE_11356 " " + IDS_DIALOGUE_11357 " " + IDS_DIALOGUE_11358 " " + IDS_DIALOGUE_11359 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11360 " " + IDS_DIALOGUE_11361 " " + IDS_DIALOGUE_11362 " " + IDS_DIALOGUE_11363 " " + IDS_DIALOGUE_11364 " " + IDS_DIALOGUE_11365 " " + IDS_DIALOGUE_11366 " " + IDS_DIALOGUE_11367 " " + IDS_DIALOGUE_11368 " " + IDS_DIALOGUE_11369 " " + IDS_DIALOGUE_11370 " " + IDS_DIALOGUE_11371 " " + IDS_DIALOGUE_11372 " " + IDS_DIALOGUE_11373 " " + IDS_DIALOGUE_11374 " " + IDS_DIALOGUE_11375 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11376 " " + IDS_DIALOGUE_11377 " " + IDS_DIALOGUE_11378 " " + IDS_DIALOGUE_11379 " " + IDS_DIALOGUE_11380 " " + IDS_DIALOGUE_11381 " " + IDS_DIALOGUE_11382 " " + IDS_DIALOGUE_11383 " " + IDS_DIALOGUE_11384 " " + IDS_DIALOGUE_11385 " " + IDS_DIALOGUE_11387 " " + IDS_DIALOGUE_11388 " " + IDS_DIALOGUE_11389 " " + IDS_DIALOGUE_11390 " " + IDS_DIALOGUE_11391 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11392 " " + IDS_DIALOGUE_11393 " " + IDS_DIALOGUE_11394 " " + IDS_DIALOGUE_11395 " " + IDS_DIALOGUE_11396 " " + IDS_DIALOGUE_11397 " " + IDS_DIALOGUE_11398 " " + IDS_DIALOGUE_11399 " " + IDS_DIALOGUE_11400 " " + IDS_DIALOGUE_11401 " " + IDS_DIALOGUE_11402 " " + IDS_DIALOGUE_11403 " " + IDS_DIALOGUE_11404 " " + IDS_DIALOGUE_11405 " " + IDS_DIALOGUE_11406 " " + IDS_DIALOGUE_11407 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11408 " " + IDS_DIALOGUE_11409 " " + IDS_DIALOGUE_11410 " " + IDS_DIALOGUE_11411 " " + IDS_DIALOGUE_11412 " " + IDS_DIALOGUE_11413 " " + IDS_DIALOGUE_11414 " " + IDS_DIALOGUE_11415 " " + IDS_DIALOGUE_11416 " " + IDS_DIALOGUE_11417 " " + IDS_DIALOGUE_11418 " " + IDS_DIALOGUE_11419 " " + IDS_DIALOGUE_11420 " " + IDS_DIALOGUE_11421 " " + IDS_DIALOGUE_11422 " " + IDS_DIALOGUE_11423 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11424 " " + IDS_DIALOGUE_11425 " " + IDS_DIALOGUE_11426 " " + IDS_DIALOGUE_11427 " " + IDS_DIALOGUE_11428 " " + IDS_DIALOGUE_11429 " " + IDS_DIALOGUE_11430 " " + IDS_DIALOGUE_11431 " " + IDS_DIALOGUE_11432 " " + IDS_DIALOGUE_11433 " " + IDS_DIALOGUE_11434 " " + IDS_DIALOGUE_11435 " " + IDS_DIALOGUE_11436 " " + IDS_DIALOGUE_11437 " " + IDS_DIALOGUE_11438 " " + IDS_DIALOGUE_11439 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11440 " " + IDS_DIALOGUE_11441 " " + IDS_DIALOGUE_11442 " " + IDS_DIALOGUE_11443 " " + IDS_DIALOGUE_11444 " " + IDS_DIALOGUE_11445 " " + IDS_DIALOGUE_11446 " " + IDS_DIALOGUE_11447 " " + IDS_DIALOGUE_11448 " " + IDS_DIALOGUE_11449 " " + IDS_DIALOGUE_11450 " " + IDS_DIALOGUE_11451 " " + IDS_DIALOGUE_11452 " " + IDS_DIALOGUE_11453 " " + IDS_DIALOGUE_11454 " " + IDS_DIALOGUE_11455 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11456 " " + IDS_DIALOGUE_11457 " " + IDS_DIALOGUE_11458 " " + IDS_DIALOGUE_11459 " " + IDS_DIALOGUE_11460 " " + IDS_DIALOGUE_11461 " " + IDS_DIALOGUE_11462 " " + IDS_DIALOGUE_11463 " " + IDS_DIALOGUE_11464 " " + IDS_DIALOGUE_11465 " " + IDS_DIALOGUE_11466 " " + IDS_DIALOGUE_11467 " " + IDS_DIALOGUE_11468 " " + IDS_DIALOGUE_11469 " " + IDS_DIALOGUE_11470 " " + IDS_DIALOGUE_11471 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11472 " " + IDS_DIALOGUE_11473 " " + IDS_DIALOGUE_11474 " " + IDS_DIALOGUE_11475 " " + IDS_DIALOGUE_11476 " " + IDS_DIALOGUE_11477 " " + IDS_DIALOGUE_11478 " " + IDS_DIALOGUE_11479 " " + IDS_DIALOGUE_11480 " " + IDS_DIALOGUE_11481 " " + IDS_DIALOGUE_11482 " " + IDS_DIALOGUE_11483 " " + IDS_DIALOGUE_11484 " " + IDS_DIALOGUE_11485 " " + IDS_DIALOGUE_11486 " " + IDS_DIALOGUE_11487 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11488 " " + IDS_DIALOGUE_11489 " " + IDS_DIALOGUE_11490 " " + IDS_DIALOGUE_11491 " " + IDS_DIALOGUE_11492 " " + IDS_DIALOGUE_11493 " " + IDS_DIALOGUE_11494 " " + IDS_DIALOGUE_11495 " " + IDS_DIALOGUE_11496 " " + IDS_DIALOGUE_11497 " " + IDS_DIALOGUE_11498 " " + IDS_DIALOGUE_11499 " " + IDS_DIALOGUE_11500 " " + IDS_DIALOGUE_11501 " " + IDS_DIALOGUE_11502 " " + IDS_DIALOGUE_11503 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11504 " " + IDS_DIALOGUE_11505 " " + IDS_DIALOGUE_11506 " " + IDS_DIALOGUE_11507 " " + IDS_DIALOGUE_11508 " " + IDS_DIALOGUE_11509 " " + IDS_DIALOGUE_11510 " " + IDS_DIALOGUE_11511 " " + IDS_DIALOGUE_11512 " " + IDS_DIALOGUE_11513 " " + IDS_DIALOGUE_11514 " " + IDS_DIALOGUE_11515 " " + IDS_DIALOGUE_11516 " " + IDS_DIALOGUE_11517 " " + IDS_DIALOGUE_11518 " " + IDS_DIALOGUE_11519 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11520 " " + IDS_DIALOGUE_11521 " " + IDS_DIALOGUE_11522 " " + IDS_DIALOGUE_11523 " " + IDS_DIALOGUE_11524 " " + IDS_DIALOGUE_11525 " " + IDS_DIALOGUE_11526 " " + IDS_DIALOGUE_11527 " " + IDS_DIALOGUE_11528 " " + IDS_DIALOGUE_11529 " " + IDS_DIALOGUE_11530 " " + IDS_DIALOGUE_11531 " " + IDS_DIALOGUE_11532 " " + IDS_DIALOGUE_11533 " " + IDS_DIALOGUE_11534 " " + IDS_DIALOGUE_11535 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11536 " " + IDS_DIALOGUE_11537 " " + IDS_DIALOGUE_11538 " " + IDS_DIALOGUE_11539 " " + IDS_DIALOGUE_11540 " " + IDS_DIALOGUE_11541 " " + IDS_DIALOGUE_11542 " " + IDS_DIALOGUE_11543 " " + IDS_DIALOGUE_11544 " " + IDS_DIALOGUE_11545 " " + IDS_DIALOGUE_11546 " " + IDS_DIALOGUE_11547 " " + IDS_DIALOGUE_11548 " " + IDS_DIALOGUE_11549 " " + IDS_DIALOGUE_11550 " " + IDS_DIALOGUE_11551 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11552 " " + IDS_DIALOGUE_11553 " " + IDS_DIALOGUE_11554 " " + IDS_DIALOGUE_11555 " " + IDS_DIALOGUE_11556 " " + IDS_DIALOGUE_11557 " " + IDS_DIALOGUE_11558 " " + IDS_DIALOGUE_11559 " " + IDS_DIALOGUE_11560 " " + IDS_DIALOGUE_11561 " " + IDS_DIALOGUE_11562 " " + IDS_DIALOGUE_11563 " " + IDS_DIALOGUE_11564 " " + IDS_DIALOGUE_11565 " " + IDS_DIALOGUE_11566 " " + IDS_DIALOGUE_11567 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11568 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11600 " " + IDS_DIALOGUE_11601 " " + IDS_DIALOGUE_11602 " " + IDS_DIALOGUE_11603 " " + IDS_DIALOGUE_11604 " " + IDS_DIALOGUE_11605 " " + IDS_DIALOGUE_11606 " " + IDS_DIALOGUE_11607 " " + IDS_DIALOGUE_11608 " " + IDS_DIALOGUE_11609 " " + IDS_DIALOGUE_11610 " " + IDS_DIALOGUE_11611 " " + IDS_DIALOGUE_11612 " " + IDS_DIALOGUE_11613 " " + IDS_DIALOGUE_11614 " " + IDS_DIALOGUE_11615 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11616 " " + IDS_DIALOGUE_11617 " " + IDS_DIALOGUE_11618 " " + IDS_DIALOGUE_11619 " " + IDS_DIALOGUE_11620 " " + IDS_DIALOGUE_11621 " " + IDS_DIALOGUE_11622 " " + IDS_DIALOGUE_11623 " " + IDS_DIALOGUE_11624 " " + IDS_DIALOGUE_11625 " " + IDS_DIALOGUE_11626 " " + IDS_DIALOGUE_11627 " " + IDS_DIALOGUE_11628 " " + IDS_DIALOGUE_11629 " " + IDS_DIALOGUE_11630 " " + IDS_DIALOGUE_11631 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11632 " " + IDS_DIALOGUE_11633 " " + IDS_DIALOGUE_11634 " " + IDS_DIALOGUE_11635 " " + IDS_DIALOGUE_11636 " " + IDS_DIALOGUE_11637 " " + IDS_DIALOGUE_11638 " " + IDS_DIALOGUE_11639 " " + IDS_DIALOGUE_11640 " " + IDS_DIALOGUE_11641 " " + IDS_DIALOGUE_11642 " " + IDS_DIALOGUE_11643 " " + IDS_DIALOGUE_11644 " " + IDS_DIALOGUE_11645 " " + IDS_DIALOGUE_11646 " " + IDS_DIALOGUE_11647 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11648 " " + IDS_DIALOGUE_11649 " " + IDS_DIALOGUE_11650 " " + IDS_DIALOGUE_11651 " " + IDS_DIALOGUE_11652 " " + IDS_DIALOGUE_11653 " " + IDS_DIALOGUE_11654 " " + IDS_DIALOGUE_11655 " " + IDS_DIALOGUE_11656 " " + IDS_DIALOGUE_11657 " " + IDS_DIALOGUE_11658 " " + IDS_DIALOGUE_11659 " " + IDS_DIALOGUE_11660 " " + IDS_DIALOGUE_11661 " " + IDS_DIALOGUE_11662 " " + IDS_DIALOGUE_11663 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11664 " " + IDS_DIALOGUE_11665 " " + IDS_DIALOGUE_11666 " " + IDS_DIALOGUE_11667 " " + IDS_DIALOGUE_11668 " " + IDS_DIALOGUE_11669 " " + IDS_DIALOGUE_11670 " " + IDS_DIALOGUE_11671 " " + IDS_DIALOGUE_11672 " " + IDS_DIALOGUE_11673 " " + IDS_DIALOGUE_11674 " " + IDS_DIALOGUE_11675 " " + IDS_DIALOGUE_11676 " " + IDS_DIALOGUE_11677 " " + IDS_DIALOGUE_11678 " " + IDS_DIALOGUE_11679 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11680 " " + IDS_DIALOGUE_11681 " " + IDS_DIALOGUE_11682 " " + IDS_DIALOGUE_11683 " " + IDS_DIALOGUE_11684 " " + IDS_DIALOGUE_11685 " " + IDS_DIALOGUE_11686 " " + IDS_DIALOGUE_11687 " " + IDS_DIALOGUE_11688 " " + IDS_DIALOGUE_11689 " " + IDS_DIALOGUE_11690 " " + IDS_DIALOGUE_11691 " " + IDS_DIALOGUE_11692 " " + IDS_DIALOGUE_11693 " " + IDS_DIALOGUE_11694 " " + IDS_DIALOGUE_11695 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11696 " " + IDS_DIALOGUE_11697 " " + IDS_DIALOGUE_11698 " " + IDS_DIALOGUE_11699 " " + IDS_DIALOGUE_11700 " " + IDS_DIALOGUE_11701 " " + IDS_DIALOGUE_11702 " " + IDS_DIALOGUE_11703 " " + IDS_DIALOGUE_11704 " " + IDS_DIALOGUE_11705 " " + IDS_DIALOGUE_11706 " " + IDS_DIALOGUE_11707 " " + IDS_DIALOGUE_11708 " " + IDS_DIALOGUE_11709 " " + IDS_DIALOGUE_11710 " " + IDS_DIALOGUE_11711 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11712 " " + IDS_DIALOGUE_11713 " " + IDS_DIALOGUE_11714 " " + IDS_DIALOGUE_11715 " " + IDS_DIALOGUE_11716 " " + IDS_DIALOGUE_11717 " " + IDS_DIALOGUE_11718 " " + IDS_DIALOGUE_11719 " " + IDS_DIALOGUE_11720 " " + IDS_DIALOGUE_11721 " " + IDS_DIALOGUE_11722 " " + IDS_DIALOGUE_11723 " " + IDS_DIALOGUE_11724 " " + IDS_DIALOGUE_11725 " " + IDS_DIALOGUE_11726 " " + IDS_DIALOGUE_11727 " " +END + +STRINGTABLE +BEGIN + IDS_AISOUNDS_20000 "empty" + IDS_AISOUNDS_20001 "empty" + IDS_AISOUNDS_20002 "empty" + IDS_AISOUNDS_20003 "empty" +END + +STRINGTABLE +BEGIN + IDS_INTEL_TEXT_8000 "You found a letter containing classified information." + IDS_INTEL_TEXT_8001 "You found a roll of 35mm film." + IDS_INTEL_TEXT_8002 "You found an important blueprint." + IDS_INTEL_TEXT_8003 "You found a briefcase." + IDS_INTEL_TEXT_8004 "You found a dossier." + IDS_INTEL_TEXT_8005 "You found some loose files." + IDS_INTEL_TEXT_8006 "You found an envelope." + IDS_INTEL_TEXT_8007 "You found a reel-to-reel tape." + IDS_INTEL_TEXT_8008 "You photographed something important." + IDS_INTEL_TEXT_8009 "You photographed a ledger." + IDS_INTEL_TEXT_8010 "You photographed a ledger." + IDS_INTEL_TEXT_8011 "You found a note." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5008 "Deliver briefcase to Hatori-san." + IDS_MISSION_OBJ_5009 "Erase three dead drop chalk marks." + IDS_MISSION_OBJ_5010 "Try not to let enemies sound the alarm." + IDS_MISSION_OBJ_5011 "Recover six pages of UNITY field manual." + IDS_MISSION_OBJ_5012 "Photograph Hatori-san." + IDS_MISSION_OBJ_5013 "Recover all four pages of the UNITY field manual." + IDS_MISSION_OBJ_5014 "FAILED: Photograph the meeting." + IDS_MISSION_OBJ_5015 "Don't let any alarms be sounded in the yard around the main house." + IDS_MISSION_OBJ_5016 "Don't make any suspicious noise near the window!" + IDS_MISSION_OBJ_5017 "" + IDS_MISSION_OBJ_5018 "" + IDS_MISSION_OBJ_5019 "" + IDS_MISSION_OBJ_5020 "" + IDS_MISSION_OBJ_5021 "Radio UNITY mission control for instructions." + IDS_MISSION_OBJ_5022 "Locate and secure the hunting cabin as a base of operations." + IDS_MISSION_OBJ_5023 "Place three explosives on the underpinnings of the main bridge." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5024 "Locate the communications relay station." + IDS_MISSION_OBJ_5025 "Locate the power station." + IDS_MISSION_OBJ_5026 "Avoid the main bridge leading into the base." + IDS_MISSION_OBJ_5027 "Minimize Soviet casualties at all costs." + IDS_MISSION_OBJ_5028 "Sabotage the power station." + IDS_MISSION_OBJ_5029 "Plant explosive at the base of the radio tower. " + IDS_MISSION_OBJ_5030 "Plant explosives at power relay station." + IDS_MISSION_OBJ_5031 "Rescue your pilot from his Soviet captors, and escort him out of the facility." + IDS_MISSION_OBJ_5032 "Return to the hunting cabin and wait for dark." + IDS_MISSION_OBJ_5033 "Discover the nature of the conspiracy you've uncovered." + IDS_MISSION_OBJ_5034 "Try to prevent Soviet soldiers from summoning backup." + IDS_MISSION_OBJ_5035 "Locate the central archive." + IDS_MISSION_OBJ_5036 "Place explosive at the outer gate." + IDS_MISSION_OBJ_5037 "Place explosive at the fuel depot in the motor pool." + IDS_MISSION_OBJ_5038 "Place explosive on propane tank by mess hall." + IDS_MISSION_OBJ_5039 "Recover information on Project: Omega." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5040 "Get back to the plane." + IDS_MISSION_OBJ_5041 "Liquidate Nikolai Zhukov." + IDS_MISSION_OBJ_5042 "Return to the insertion point." + IDS_MISSION_OBJ_5043 "Recover both pages of Soviet Military Readiness Report." + IDS_MISSION_OBJ_5044 "Infiltrate the installation." + IDS_MISSION_OBJ_5045 "Collect all four expense reports." + IDS_MISSION_OBJ_5046 "Plant bugs on four phones in the main records building." + IDS_MISSION_OBJ_5047 "Photograph three targets. (TBD)" + IDS_MISSION_OBJ_5048 "Prevent H.A.R.M. from blowing up your plane." + IDS_MISSION_OBJ_5049 "Help your pilot sober up." + IDS_MISSION_OBJ_5050 "Recover the other page of the Soviet Military Readiness Report." + IDS_MISSION_OBJ_5051 "Recover top secret document from the safe in the old Records Building." + IDS_MISSION_OBJ_5052 "Recover supplies from the shed." + IDS_MISSION_OBJ_5053 "Infiltrate the Main Records Building." + IDS_MISSION_OBJ_5054 "Rescue your pilot from H.A.R.M." + IDS_MISSION_OBJ_5055 "Recover additional information on ANATOLI." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5056 "" + IDS_MISSION_OBJ_5057 "" + IDS_MISSION_OBJ_5058 "" + IDS_MISSION_OBJ_5059 "" + IDS_MISSION_OBJ_5060 "" + IDS_MISSION_OBJ_5061 "Find information on Project Omega." + IDS_MISSION_OBJ_5062 "Escape with the evidence." + IDS_MISSION_OBJ_5063 "Defeat Isako." + IDS_MISSION_OBJ_5064 "Fight off the ninja attackers." + IDS_MISSION_OBJ_5065 "Find all the voice recordings." + IDS_MISSION_OBJ_5066 "Find all the correspondence between Goodman and Mr. Smith." + IDS_MISSION_OBJ_5067 "" + IDS_MISSION_OBJ_5068 "" + IDS_MISSION_OBJ_5069 "" + IDS_MISSION_OBJ_5070 "" + IDS_MISSION_OBJ_5071 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5072 "" + IDS_MISSION_OBJ_5073 "" + IDS_MISSION_OBJ_5074 "" + IDS_MISSION_OBJ_5075 "" + IDS_MISSION_OBJ_5076 "" + IDS_MISSION_OBJ_5077 "" + IDS_MISSION_OBJ_5078 "" + IDS_MISSION_OBJ_5079 "" + IDS_MISSION_OBJ_5080 "" + IDS_MISSION_OBJ_5081 "Rendezvous with Kamal. Be careful not to injure innocents or police patrolling the area." + IDS_MISSION_OBJ_5082 "Gain entry to H.A.R.M. headquarters." + IDS_MISSION_OBJ_5083 "Bug the phone in Anoop Banerjee's office, then listen back to the conversation." + IDS_MISSION_OBJ_5084 "Locate the telephone junction box." + IDS_MISSION_OBJ_5085 "Return to the entry hall before your absence is noted." + IDS_MISSION_OBJ_5086 "Collect the Wanted posters before they are spotted by civilians." + IDS_MISSION_OBJ_5087 "Infiltrate Evil Alliance headquarters." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5088 "Recover the contents of the manager's safe." + IDS_MISSION_OBJ_5089 "Plant explosives at location #1." + IDS_MISSION_OBJ_5090 "Plant explosives at location #2." + IDS_MISSION_OBJ_5091 "Plant explosives at location #3." + IDS_MISSION_OBJ_5092 "Plant explosives in the secret Evil Alliance film vault." + IDS_MISSION_OBJ_5093 "Escape Evil Alliance headquarters." + IDS_MISSION_OBJ_5094 "Recover information on Project Omega from the main vault." + IDS_MISSION_OBJ_5095 "Rendezvous with Armstrong." + IDS_MISSION_OBJ_5096 "Follow Armstrong to safety." + IDS_MISSION_OBJ_5097 "Escape with Armstrong." + IDS_MISSION_OBJ_5098 "Protect Armstrong at all costs." + IDS_MISSION_OBJ_5099 "Apprehend the Mime King." + IDS_MISSION_OBJ_5100 "Photograph targets in H.A.R.M. HQ (TBD)." + IDS_MISSION_OBJ_5101 "Plant bug on three telephones in H.A.R.M. headquarters." + IDS_MISSION_OBJ_5102 "Photograph documents in wall safe." + IDS_MISSION_OBJ_5103 "Obtain the blackmail evidence on Kamal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5104 "Don't kill anyone or you'll fail your mission!" + IDS_MISSION_OBJ_5105 "Avoid being caught or you'll be escorted back to the lobby and have to try again!" + IDS_MISSION_OBJ_5106 "Talk to Armstrong." + IDS_MISSION_OBJ_5107 "Find Kamal." + IDS_MISSION_OBJ_5108 "Reach the lower level without killing anyone." + IDS_MISSION_OBJ_5109 "Retrieve supplies from the phone booth near the movie theatre." + IDS_MISSION_OBJ_5110 "Don't get caught now or you'll fail your mission!" + IDS_MISSION_OBJ_5111 "" + IDS_MISSION_OBJ_5112 "" + IDS_MISSION_OBJ_5113 "" + IDS_MISSION_OBJ_5114 "" + IDS_MISSION_OBJ_5115 "" + IDS_MISSION_OBJ_5116 "" + IDS_MISSION_OBJ_5117 "" + IDS_MISSION_OBJ_5118 "" + IDS_MISSION_OBJ_5119 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5120 "" + IDS_MISSION_OBJ_5121 "Recover information on Project Omega." + IDS_MISSION_OBJ_5122 "Escape alive." + IDS_MISSION_OBJ_5123 "Recover three pages of medical report." + IDS_MISSION_OBJ_5124 "Recover additional data on Lieutenant Anders." + IDS_MISSION_OBJ_5125 "" + IDS_MISSION_OBJ_5126 "" + IDS_MISSION_OBJ_5127 "" + IDS_MISSION_OBJ_5128 "" + IDS_MISSION_OBJ_5129 "" + IDS_MISSION_OBJ_5130 "" + IDS_MISSION_OBJ_5131 "Rescue civilians from super soldiers." + IDS_MISSION_OBJ_5132 "Protect Kamal." + IDS_MISSION_OBJ_5133 "Put out the fire for Crazy Harij or he'll be very angry!" + IDS_MISSION_OBJ_5134 "" + IDS_MISSION_OBJ_5135 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5136 "" + IDS_MISSION_OBJ_5137 "" + IDS_MISSION_OBJ_5138 "" + IDS_MISSION_OBJ_5139 "" + IDS_MISSION_OBJ_5140 "" + IDS_MISSION_OBJ_5141 "Find Dr. Schenker's eyeglasses." + IDS_MISSION_OBJ_5142 "Get rid of the intruders." + IDS_MISSION_OBJ_5143 "Find Dr. Schenker." + IDS_MISSION_OBJ_5144 "Protect UNITY personnel." + IDS_MISSION_OBJ_5145 "Find the four misplaced documents." + IDS_MISSION_OBJ_5146 "Disarm all explosives." + IDS_MISSION_OBJ_5147 "" + IDS_MISSION_OBJ_5148 "" + IDS_MISSION_OBJ_5149 "" + IDS_MISSION_OBJ_5150 "" + IDS_MISSION_OBJ_5151 "Find out where Armstrong is being held." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5152 "Rescue Armstrong. He's being held in the lower decks in a Super Soldier pod." + IDS_MISSION_OBJ_5153 "Find a way off the underwater base before it implodes." + IDS_MISSION_OBJ_5154 "Gain access to the Director's private deck." + IDS_MISSION_OBJ_5155 "Recover information on the H.A.R.M. super secret submarine." + IDS_MISSION_OBJ_5156 "Recover a copy of the H.A.R.M. employee handbook." + IDS_MISSION_OBJ_5157 "Defeat Pierre." + IDS_MISSION_OBJ_5158 "Obtain the Supercomputer User Manual v1.0 from the Supercomputer Services Department." + IDS_MISSION_OBJ_5159 "Locate Requisition Form 207-B." + IDS_MISSION_OBJ_5160 "Locate the Supercomputer User Manual Supplement v2.0." + IDS_MISSION_OBJ_5161 "Locate the bilge pump valve and open it." + IDS_MISSION_OBJ_5162 "Obtain a copy of H.A.R.M.'s new mission statement." + IDS_MISSION_OBJ_5163 "Locate the umbilicus that leads to the Command Deck." + IDS_MISSION_OBJ_5164 "" + IDS_MISSION_OBJ_5165 "" + IDS_MISSION_OBJ_5166 "" + IDS_MISSION_OBJ_5167 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5168 "" + IDS_MISSION_OBJ_5169 "" + IDS_MISSION_OBJ_5170 "" + IDS_MISSION_OBJ_5171 "Escape the needlessly elaborate death trap." + IDS_MISSION_OBJ_5172 "Defeat Volkov." + IDS_MISSION_OBJ_5173 "Escape the secret underground lair." + IDS_MISSION_OBJ_5174 "Defeat Isako." + IDS_MISSION_OBJ_5175 "Recover the new H.A.R.M. public relations plan." + IDS_MISSION_OBJ_5176 "Recover H.A.R.M.'s Khios Invasion Plan" + IDS_MISSION_OBJ_5177 "Destroy the generator." + IDS_MISSION_OBJ_5178 "Destroy the super computer mainframe." + IDS_MISSION_OBJ_5179 "" + IDS_MISSION_OBJ_5180 "" + IDS_MISSION_OBJ_5181 "Stop the super soldier invasion." + IDS_MISSION_OBJ_5182 "Defeat the super soldier lieutenant." + IDS_MISSION_OBJ_5183 "Rendezvous with Armstrong at the fort." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5184 "Sink the Super Secret Submarine." + IDS_MISSION_OBJ_5185 "" + IDS_MISSION_OBJ_5186 "Hijack a rocket back to Earth" + IDS_MISSION_OBJ_5187 "Get to your car and escape" + IDS_MISSION_OBJ_5188 "Read the note on your windshield" + IDS_MISSION_OBJ_5189 "Survive Volkov's test" + IDS_MISSION_OBJ_5190 "Commandeer the prototype snowmobile" + IDS_MISSION_OBJ_5191 "Head north to the secret facility" + IDS_MISSION_OBJ_5192 "Get aboard the train at Outpost 3" + IDS_MISSION_OBJ_5193 "Discover Danger Danger's intentions" + IDS_MISSION_OBJ_5194 "Secure transportation to the moon" + IDS_MISSION_OBJ_5195 "Recover the launch key" + IDS_MISSION_OBJ_5196 "Retrieve Dr. Harij" + IDS_MISSION_OBJ_5197 "Hijack a rocket back to Earth before you crash into the sun" + IDS_MISSION_OBJ_5198 "Destroy all four enemy cannons" + IDS_MISSION_OBJ_5199 "Destroy the three remaining enemy cannons" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5200 "Destroy the two remaining enemy cannons" + IDS_MISSION_OBJ_5201 "Destroy the remaining enemy cannon" + IDS_MISSION_OBJ_5202 "Defeat Il Pazzo" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4500 "" + IDS_KEY_ITEM_4501 "Screwdriver" + IDS_KEY_ITEM_4502 "Light bulb" + IDS_KEY_ITEM_4503 "Drained battery" + IDS_KEY_ITEM_4504 "Charged battery" + IDS_KEY_ITEM_4505 "Briefcase" + IDS_KEY_ITEM_4506 "Fuel can" + IDS_KEY_ITEM_4507 "Fuse" + IDS_KEY_ITEM_4508 "Key ring" + IDS_KEY_ITEM_4509 "Wire coil" + IDS_KEY_ITEM_4510 "Wrench" + IDS_KEY_ITEM_4511 "Door knob" +END + +STRINGTABLE +BEGIN + IDS_GEAR_DESC_1 "Nullifies poison damage caused by cyanide-tipped rounds and poisoned crossbow bolts." + IDS_GEAR_DESC_2 "Reduces burn damage caused by phosphorous rounds, scalding steam, and other heat sources." + IDS_GEAR_DESC_3 "Reduces concussion damage caused by explosions." + IDS_GEAR_DESC_4 "Reduces electrical damage." + IDS_GEAR_DESC_5 "Underwater air supply" + IDS_GEAR_DESC_6 "Reduces movement noise by half." + IDS_GEAR_DESC_7 "Prevents excessive blood loss caused by dum dum rounds." + IDS_GEAR_DESC_8 "Protects wearer from most types of damage." +END + +STRINGTABLE +BEGIN + IDS_MOD_1 "Silencer for McAllister .32 Automatic Handgun" + IDS_MOD_2 "Camera zoom" + IDS_MOD_3 "Silencer for RFA Series-4 Bolt-action Rifle" + IDS_MOD_4 "Silencer for Gordon 9mm SMG" + IDS_MOD_5 "Scope for AK-47 assault rifle" + IDS_MOD_6 "Scope for Utility Launcher" +END + +STRINGTABLE +BEGIN + IDS_MOD_7 "Scope for Vindicator Sportman's Crossbow" + IDS_MOD_8 "Scope for Bacalov Corrector" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25000 "" + IDS_INTEL_25001 "35.56 North by 14.32 East\n\n5:00pm\n\nBe there.\n\n Dmitrij Volkov\nDirector of Executive Action\nH.A.R.M." + IDS_INTEL_25002 "Public Notice: Village curfew@PUBLIC NOTICE:\n\nA mandatory curfew is in effect tonight from 6:00pm to 6:00am. Residents caught out of doors during these hours will be dealt with severely. \n\nHaruko Muroi\nAssistant Administrator\nKatakuri Ninja Clan" + IDS_INTEL_25003 "Ninja Clan Memo: Patrols@To all clan members:\n\nWe expect the spy to enter the village from the east, where most of the best tourist attractions are concentrated, but it's also possible she'll approach from the direction of the falls. Please report to your assigned posts promptly this evening. It is recommended you eat before your shift begins, as our food budget was used up by last month's attack on the Oshii clan headquarters.\n\nHaruko Muroi\nAssistant Administrator" + IDS_INTEL_25004 "UNITY Dossier: Ninjas@Cate,\n\nWhile information on the ninja clan in Inotakimura is somewhat scarce, we have been able to ascertain the following details:\n\n- Ninjas are trained to lunge great distances for powerful strikes against their enemies.\n\n- They can use smoke bombs to vanish, often reappearing close to their targets for surprise attacks.\n\nI hope this information proves helpful. Take care of yourself.\n\nBruno Lawrie\nSenior Field Operative\nUNITY Special Operations Division" + IDS_INTEL_25006 "UNITY Manual: Searching@SEARCHING\n\nEnemies often carry valuable items such as ammunition, armor, first aid, or important documents, so be sure to search them thoroughly by holding down the Action button until the progress bar disappears. You may want to move your victims into the shadows before searching them to avoid drawing unwanted attention.\n\nYou can also search filing cabinets and stacks of paper for hints and useful intelligence items. It is often by searching that you will find bonus objectives." + IDS_INTEL_25007 "UNITY Manual: Unconscious enemies@UNCONSCIOUS ENEMIES\n\nEnemies that are knocked unconscious, such as by a taser or sleeping gas, will eventually wake up. They may also be roused by their comrades.\n\nYou can disarm unconscious enemies by searching them, thereby eliminating them as a threat unless they obtain a replacement weapon." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25008 "UNITY Manual: Action button@ACTION BUTTON\n\nWhen you target an object or character you can interact with, text will appear at the center of the screen to indicate what will happen when you press the Action button (default: Right Mouse Button). If the text is grayed out, you cannot interact with the item until some condition is met. For example, you may have to unlock a door or acquire a necessary inventory item.\n\nThe Action button will reload your currently selected weapon (assuming it can be reloaded) if nothing is targeted." + IDS_INTEL_25009 "UNITY Manual: Hiding@HIDING\n\nWhenever you enter a potential hiding place, the Hiding Place icon will appear at the bottom of your screen. If you stand perfectly still, you will momentarily become hidden, at which point enemies won't see you until they're right upon you. You will stay hidden as long as you remain in the hiding place and don't move quickly or fire a weapon.\n\nIf you can't hide because an enemy knows where you are, the icon will be crossed out." + IDS_INTEL_25011 "UNITY Manual: Leaving an area 1@LEAVING AN AREA, PART 1\n\nWhen you see the Door icon, it means you are approaching the end of an area. Move forward to exit, but only if you're finished exploring." + IDS_INTEL_25012 "UNITY Memo: Presents@Agent Archer,\n\nWhenever possible, I will arrange to leave useful equipment or ammunition for you in the field. Keep an eye out for foiled-wrapped presents like this one.\n\nThe coins you'll find in this package are worth more than their face value suggests, as you can throw them to distract enemies. You can even lure enemies away from their posts by tossing a coin around a corner or into an alley.\n\nSanta" + IDS_INTEL_25014 "Reminder: Equipment screen@EQUIPMENT SCREEN\n\nWhenever you acquire new weapons, gadgets, or ammunition, remember that you can consult the Equipment screen (default hotkey: M) at any time for information on their features and uses. This screen also lets you select equipment and ammunition or gadget functions while the game is paused." + IDS_INTEL_25016 "Reminder: Neutralizing enemies@NEUTRALIZING ENEMIES\n\nYou can dispatch enemies stealthily by using quiet weapons like the taser, crossbow, or a silenced pistol. If enemies are alerted to your presence, they will cry out when injured, attracting attention." + IDS_INTEL_25017 "Reminder: Moving bodies@MOVING BODIES\n\nEnemies will become alarmed if they see a fallen comrade, but you can use the Move Body key (default: G)to pick up incapacitated adversaries and drop them somewhere out of the way. You won't be able to run or use a weapon when carrying a body, so time your movements carefully." + IDS_INTEL_25018 "Reminder: Disturbances@DISTURBANCES\n\nEnemies can hear just about any sound you can, so learn to move carefully. You can Sneak (default: Left Shift) to move silently. Also, certain materials (such as grass, carpet, or snow) will muffle your footfalls, while other materials (such as metal or ceramic tile) amplify sound. \n\nAlso, bumping into wind chimes or knocking over a bottle can cause a disturbance, so watch your step." + IDS_INTEL_25019 "Reminder: Leaning@LEANING\n\nLean around corners (default: Q and E) to see what lies ahead. Don't peek too long or enemies may come to investigate." + IDS_INTEL_25020 "" + IDS_INTEL_25021 "UNITY Manual: Compass@COMPASS\n\nIn addition to keeping you oriented within the environment, your compass can provide other useful information. The Objective icon will direct you to locations crucial to your mission. You may also occasionally see an X, which indicates waypoints or other important destinations." + IDS_INTEL_25022 "Ninja Clan Memo: Cate Archer@ATTENTION ALL CLAN MEMBERS\n\nBe on the lookout for UNITY agent Cate Archer. She is to be considered armed and extremely dangerous. Report any sightings to Takashi-san at once. \n\nHaruko Muroi\nAssistant Administrator" + IDS_INTEL_25023 "UNITY Manual: Difficulty@DIFFICULTY SETTINGS\n\nKeep in mind that you can adjust the difficulty of your mission at any time by bringing up the Options menu, selecting Game, and choosing the desired setting. Difficulty settings primarily affect how much damage enemies do to you, so if you find yourself becoming frustrated or not feeling challenged enough, try modifying the setting to suit your needs." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4750 "" + IDS_KEY_DESC_4751 "A rusty flat head screwdriver." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4752 "A 60 watt light bulb." + IDS_KEY_DESC_4753 "Drained high-power battery." + IDS_KEY_DESC_4754 "Fully charged high-power battery." + IDS_KEY_DESC_4755 "Oxygen tank used to operate airlocks." + IDS_KEY_DESC_4756 "You can use this fuel for the snowmobile." + IDS_KEY_DESC_4757 "This fuse appears to be in good condition." + IDS_KEY_DESC_4758 "An ordinary key ring with several different keys." + IDS_KEY_DESC_4759 "A coil of copper wire for electrical work." + IDS_KEY_DESC_4760 "A heavy duty wrench. It'll do the job when bare hands won't." + IDS_KEY_DESC_4761 "A loose door knob. It could come in handy for replacing missing or defective doorknobs." + IDS_KEY_DESC_4762 "The ringer of a wind chime." + IDS_KEY_DESC_4763 "An empty bucket. Looks like it could hold quite a bit of water." + IDS_KEY_DESC_4764 "The handle for a water faucet." + IDS_KEY_DESC_4765 "Super Computer User Manual v1.0. Lists input procedures for the Super Computer." + IDS_KEY_DESC_4766 "This Requisition Form 207-B has been filled out to request the Super Computer manual." + IDS_KEY_DESC_4767 "Supercomputer User Manual Supplement v2.0. Lists updated input procedure for Super Computer." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4512 "Oxygen Tank" + IDS_KEY_ITEM_4513 "Bucket" + IDS_KEY_ITEM_4514 "Faucet handle" + IDS_KEY_ITEM_4515 "Supercomputer User Manual v1.0" + IDS_KEY_ITEM_4516 "Requisition Form 207-B" + IDS_KEY_ITEM_4517 "User Manual Supplement v2.0" + IDS_KEY_ITEM_4518 "H.A.R.M. ID badge" + IDS_KEY_ITEM_4519 "Computer vacuum tube" + IDS_KEY_ITEM_4520 "Bag of sugar" + IDS_KEY_ITEM_4521 "Computer bypass Widget" + IDS_KEY_ITEM_4522 "M-9 Password: Piroshki" + IDS_KEY_ITEM_4523 "M-9 Tape 689: Project Omega" + IDS_KEY_ITEM_4524 "Rupees" + IDS_KEY_ITEM_4525 "Keys for snowmobile" + IDS_KEY_ITEM_4526 "M-9 DATA PROCESSING UNIT" + IDS_KEY_ITEM_4527 "M-9 Security Code" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5500 "" + IDS_COOP_MISSION_OBJ_5501 + "Locate Balaji Malpani then photograph him. His apartment would be a good place to start." + IDS_COOP_MISSION_OBJ_5502 + "Head to the extraction point at the cafe near Balaji's apartment." + IDS_COOP_MISSION_OBJ_5503 + "Meet up with your team at the UNITY cabin and radio headquarters to receive final instructions." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5504 + "Take down the computer by infiltrating the installation and planting 4 explosives. " + IDS_COOP_MISSION_OBJ_5505 + "Take down the computer by planting explosives. 3 targets are left." + IDS_COOP_MISSION_OBJ_5506 + "Take down the computer by planting explosives. 2 targets are left." + IDS_COOP_MISSION_OBJ_5507 + "Take down the computer by planting explosives. 1 target is left." + IDS_COOP_MISSION_OBJ_5508 + "Gather additional data on the Super Soldier project." + IDS_COOP_MISSION_OBJ_5509 + "Meet back at the UNITY cabin and radio headquarters for an extraction." + IDS_COOP_MISSION_OBJ_5510 + "Locate Cate. Her last reported location was near the waterfall outside the village." + IDS_COOP_MISSION_OBJ_5511 "Return to the extraction point with Cate." + IDS_COOP_MISSION_OBJ_5512 + "Find the generator and turn on the power to all the area's doors and gates." + IDS_COOP_MISSION_OBJ_5513 + "Gain entry to Balaji's apartment by finding a spare set of keys or perhaps a lockpick." + IDS_COOP_MISSION_OBJ_5514 + "Find a good vantage point from which to photograph Balaji at his mistress's apartment." + IDS_COOP_MISSION_OBJ_5515 "" + IDS_COOP_MISSION_OBJ_5516 "Locate and rescue Armstrong." + IDS_COOP_MISSION_OBJ_5517 + "Find information on where H.A.R.M. is taking Armstrong." + IDS_COOP_MISSION_OBJ_5518 + "Look for appropriate targets and plant 6 sets of explosives. " + IDS_COOP_MISSION_OBJ_5519 + "Look for appropriate targets and plant 5 sets of explosives. " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25024 " " + IDS_INTEL_25025 " " + IDS_INTEL_25026 " " + IDS_INTEL_25027 " " + IDS_INTEL_25028 " " + IDS_INTEL_25029 " " + IDS_INTEL_25030 " " + IDS_INTEL_25031 " " + IDS_INTEL_25032 " " + IDS_INTEL_25033 " " + IDS_INTEL_25034 " " + IDS_INTEL_25035 " " + IDS_INTEL_25036 " " + IDS_INTEL_25037 " " + IDS_INTEL_25038 " " + IDS_INTEL_25039 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25040 " " + IDS_INTEL_25041 " " + IDS_INTEL_25042 " " + IDS_INTEL_25043 " " + IDS_INTEL_25044 " " + IDS_INTEL_25045 " " + IDS_INTEL_25046 " " + IDS_INTEL_25047 " " + IDS_INTEL_25048 " " + IDS_INTEL_25049 " " + IDS_INTEL_25050 " " + IDS_INTEL_25051 " " + IDS_INTEL_25052 " " + IDS_INTEL_25054 " " + IDS_INTEL_25055 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25056 " " + IDS_INTEL_25057 " " + IDS_INTEL_25058 " " + IDS_INTEL_25059 " " + IDS_INTEL_25060 " " + IDS_INTEL_25061 " " + IDS_INTEL_25062 " " + IDS_INTEL_25063 " " + IDS_INTEL_25064 " " + IDS_INTEL_25065 " " + IDS_INTEL_25066 " " + IDS_INTEL_25067 " " + IDS_INTEL_25068 " " + IDS_INTEL_25069 " " + IDS_INTEL_25070 " " + IDS_INTEL_25071 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25072 " " + IDS_INTEL_25073 " " + IDS_INTEL_25074 " " + IDS_INTEL_25075 " " + IDS_INTEL_25076 " " + IDS_INTEL_25077 " " + IDS_INTEL_25078 " " + IDS_INTEL_25079 " " + IDS_INTEL_25080 " " + IDS_INTEL_25081 " " + IDS_INTEL_25082 " " + IDS_INTEL_25083 " " + IDS_INTEL_25084 " " + IDS_INTEL_25085 " " + IDS_INTEL_25086 " " + IDS_INTEL_25087 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25088 " " + IDS_INTEL_25089 " " + IDS_INTEL_25090 " " + IDS_INTEL_25091 " " + IDS_INTEL_25092 " " + IDS_INTEL_25093 " " + IDS_INTEL_25094 " " + IDS_INTEL_25095 " " + IDS_INTEL_25096 " " + IDS_INTEL_25097 " " + IDS_INTEL_25098 " " + IDS_INTEL_25099 " " + IDS_INTEL_25100 " " + IDS_INTEL_25101 " " + IDS_INTEL_25102 " " + IDS_INTEL_25103 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25104 " " + IDS_INTEL_25105 " " + IDS_INTEL_25106 " " + IDS_INTEL_25107 " " + IDS_INTEL_25108 " " + IDS_INTEL_25109 " " + IDS_INTEL_25110 " " + IDS_INTEL_25111 " " + IDS_INTEL_25112 " " + IDS_INTEL_25113 " " + IDS_INTEL_25114 " " + IDS_INTEL_25115 " " + IDS_INTEL_25116 " " + IDS_INTEL_25117 " " + IDS_INTEL_25118 " " + IDS_INTEL_25119 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25120 " " + IDS_INTEL_25121 " " + IDS_INTEL_25122 " " + IDS_INTEL_25123 " " + IDS_INTEL_25124 " " + IDS_INTEL_25125 " " + IDS_INTEL_25126 " " + IDS_INTEL_25127 " " + IDS_INTEL_25128 " " + IDS_INTEL_25129 " " + IDS_INTEL_25130 " " + IDS_INTEL_25131 " " + IDS_INTEL_25132 " " + IDS_INTEL_25133 " " + IDS_INTEL_25134 " " + IDS_INTEL_25135 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25136 " " + IDS_INTEL_25137 " " + IDS_INTEL_25138 " " + IDS_INTEL_25139 " " + IDS_INTEL_25140 " " + IDS_INTEL_25141 " " + IDS_INTEL_25142 " " + IDS_INTEL_25143 " " + IDS_INTEL_25144 " " + IDS_INTEL_25145 " " + IDS_INTEL_25146 " " + IDS_INTEL_25147 " " + IDS_INTEL_25148 " " + IDS_INTEL_25149 " " + IDS_INTEL_25150 " " + IDS_INTEL_25151 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25152 " " + IDS_INTEL_25153 " " + IDS_INTEL_25154 " " + IDS_INTEL_25155 " " + IDS_INTEL_25156 " " + IDS_INTEL_25157 " " + IDS_INTEL_25158 " " + IDS_INTEL_25159 " " + IDS_INTEL_25160 " " + IDS_INTEL_25161 " " + IDS_INTEL_25162 " " + IDS_INTEL_25163 " " + IDS_INTEL_25164 " " + IDS_INTEL_25165 " " + IDS_INTEL_25166 " " + IDS_INTEL_25167 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25168 " " + IDS_INTEL_25169 " " + IDS_INTEL_25170 " " + IDS_INTEL_25171 " " + IDS_INTEL_25172 " " + IDS_INTEL_25173 " " + IDS_INTEL_25174 " " + IDS_INTEL_25175 " " + IDS_INTEL_25176 " " + IDS_INTEL_25177 " " + IDS_INTEL_25178 " " + IDS_INTEL_25179 " " + IDS_INTEL_25180 " " + IDS_INTEL_25181 " " + IDS_INTEL_25182 " " + IDS_INTEL_25183 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25184 " " + IDS_INTEL_25185 " " + IDS_INTEL_25186 " " + IDS_INTEL_25187 " " + IDS_INTEL_25188 " " + IDS_INTEL_25189 " " + IDS_INTEL_25190 " " + IDS_INTEL_25191 " " + IDS_INTEL_25192 " " + IDS_INTEL_25193 " " + IDS_INTEL_25194 " " + IDS_INTEL_25195 " " + IDS_INTEL_25196 " " + IDS_INTEL_25197 " " + IDS_INTEL_25198 " " + IDS_INTEL_25199 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25200 " " + IDS_INTEL_25201 " " + IDS_INTEL_25202 " " + IDS_INTEL_25203 " " + IDS_INTEL_25204 " " + IDS_INTEL_25205 " " + IDS_INTEL_25206 " " + IDS_INTEL_25207 " " + IDS_INTEL_25208 " " + IDS_INTEL_25209 " " + IDS_INTEL_25210 " " + IDS_INTEL_25211 " " + IDS_INTEL_25212 " " + IDS_INTEL_25213 " " + IDS_INTEL_25214 " " + IDS_INTEL_25215 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25216 " " + IDS_INTEL_25217 " " + IDS_INTEL_25218 " " + IDS_INTEL_25219 " " + IDS_INTEL_25220 " " + IDS_INTEL_25221 " " + IDS_INTEL_25222 " " + IDS_INTEL_25223 " " + IDS_INTEL_25224 " " + IDS_INTEL_25225 " " + IDS_INTEL_25226 " " + IDS_INTEL_25227 " " + IDS_INTEL_25228 " " + IDS_INTEL_25229 " " + IDS_INTEL_25230 " " + IDS_INTEL_25231 " " +END + +STRINGTABLE +BEGIN + IDS_INTEL_25232 "UNUSED" + IDS_INTEL_25233 "UNUSED" + IDS_INTEL_25234 "UNUSED" + IDS_INTEL_25235 "UNUSED" + IDS_INTEL_25236 "UNUSED" + IDS_INTEL_25237 "UNUSED" + IDS_INTEL_25238 "UNUSED" + IDS_INTEL_25239 "UNUSED" + IDS_INTEL_25240 "" + IDS_INTEL_25241 "Soviet Communiqué: The Director@To: Commander Pim\nFrom: General Nikolai Zhukov\n\nPlease inform your illustrious Director that as a proud Communist, I am immune to his coercive Capitalistic sales tactics. Even a leader as visionary as I does not rush into schemes that could jeopardize global stability. I appreciate your willingness to send service representatives to hold seminars for my staff, but do not presume that I am so indebted as to sign a contract without fully evaluating the service I will be purchasing." + IDS_INTEL_25242 "Soviet paperwork: Repair restroom@REPAIR REQUEST FORM 19a\n\n1. Repair(s) Requested: Patch hole in women's restroom.\n2. Reason for Request: The glories of our fine Russian women have distracted hard working men from their duties.\n3. Approved by: Sergeant Egor." + IDS_INTEL_25243 "Soviet paperwork: Repair restroom denied@REJECTION FORM R-27\n\nThe request for Repair to women's bathroom in the new Records Facility is denied.\n\nSigned: General Nikolai Zhukov" + IDS_INTEL_25244 "Soviet Memo: U.S. Plans@To: General Zhukov\nFrom: Vladimir Kryuchkov\n\nI hope you are sitting down, comrade. Last night I got word from ANATOLI, our man in Palm Beach. He's the farm boy we sent from Kamchatka to infiltrate the highest levels of the Pentagon, which he has done very rapidly considering his poor grasp of the English language. As we feared, the Main Adversary has big plans for Khios. Please see the attached report." + IDS_INTEL_25245 "Soviet Report: Khios 1@U.S. PLANS FOR KHIOS\nPart I.\n\nAs we all know, the U.S. has been developing a project to covertly launch a nuclear first strike against the Soviet Union by attaching warheads to tiger sharks and sending them up the Dnieper River to Moscow from the Black Sea. They have even created special apparatus for the sharks that let them survive in fresh water. Now ANATOLI reports that this project has been put on hold to prepare for the American invasion of Khios." + IDS_INTEL_25246 "Soviet Report: Khios 2@U.S. PLANS FOR KHIOS\nPart II.\n\nThe goals of the Main Adversary are clear: conquer Khios militarily, perform highly immoral scientific experiments on the civilian populace, and replace the island's schools and hospitals with fast food restaurants and resort hotels, all in an effort to exploit the precious natural resources of Khios." + IDS_INTEL_25247 "Expense account: ANATOLI@EXPENSE ACCOUNT SUMMARY\nOperative Code Name: ANATOLI\nLocation: Palm Beach, Florida\nTotal expenses: $573,000 U.S.\n\nItemized list of purchase items:\n - Beach-side condominium (to establish agent legend)\n - Chevrolet Corvette Stingray (transportation)\n - 32' yacht (in case I might flee U.S.)\n - Living expenses (basic items like food, utilities, bar tabs, concert tickets, prostitutes, etc.)" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25248 "Soviet Memo: Project: Omega@To: Director of H.A.R.M.\nFrom: General Nikolai Zhukov\n\nRegarding this so-called Project: Omega of yours, we need to clarify a few matters before we submit a Letter of Intent. First, we are looking for a solution that not only makes it feasible for us to annex Khios, but also to defend it once we achieve our ultimate objective: to build the world's first five star Communist hotel and casino on the northern end of the island. Can Project: Omega meet this need?" + IDS_INTEL_25249 "BLUEPRINT: Records building 1st floor@" + IDS_INTEL_25250 "BLUEPRINT: Records building 2nd floor@" + IDS_INTEL_25251 "Note: Vending machine@Comrades, do not be fooled by this machine! While filing yesterday, I found evidence of an elaborate conspiracy to trick honest Soviet citizens out of their precious rubles. These vending machines don't actually contain any CCCP Soda. They're just hollow cases with a large tray for collecting coins and a small speaker that plays mechanical noises. Trust no one!\n\nMikhail" + IDS_INTEL_25252 "Report: Puffins@FRATERCULA CIRRHATA\n\nThe tufted puffin gets its name from the conspicuous pale yellow plume that sprouts from behind the bird's eyes. The eyes themselves are an extraordinary yellow color with a bright red ring around the outside. The puffin is a monogamous creature that mates for life. The couple takes turns caring for their one youngster in the rocky den while the other fishes for the whole family all day long." + IDS_INTEL_25253 "Report: Sea Eagle@HALIAECTUS SPELLAGICUS\n\nA Steller sea eagle almost never hunts for his food on his own. The day begins by spying on smaller birds of prey, such as ravens, and following them to a potential meal. From that point, the eagle then proceeds to steal the food. A heated battle can ensue as multiple eagles attempt to steal the same food, and often claws and beaks are used in the attacks." + IDS_INTEL_25254 "Report: Brown Bear@URSUS ARCTOS\n\nThe brown bear is vegetarian for most of the spring, but spends the summer and fall seasons gorging itself on river salmon to prepare itself for the long winter's nap. An adult bear can lose up to 350 pounds per winter, which it must gain back before the next cold season." + IDS_INTEL_25255 "Report: Fur Seal@CALLORHINUS URSINUS\n\nThe Northern fur seal is a fascinating sea mammal. Rookeries, or flocks, of males arrive first in May and June to establish their territories in areas such as the Pribilof Islands. The males are extremely territorial over their harems and will exert themselves in violent battles and loud echoing personalized calls to claim their property and prove their power." + IDS_INTEL_25256 "Soviet Memo: Kamchatka survey@To: General Zhukov's Office\nFrom: Corporal Pupkin\n\nMost revered leader, the people's glorious nature survey of the Kamchatka area is complete. We can now begin the removal of these animals to make way for ten glorious new factories planned for the region, each of which will be manufacturing factory equipment to allow us to build more factories! We expect a tremendous increase in productivity!" + IDS_INTEL_25257 "UNITY Memo: General Zhukov@Agent Archer,\n\nShould you run into a General Nikolai Zhukov, consider him a target of opportunity. Former NKVD. He was involved in the relocation of the Chechen people to Central Asia in '44. Linked to various crimes against humanity, including a particularly grisly mass murder. We want him liquidated.\n\nSanta" + IDS_INTEL_25258 "UNUSED" + IDS_INTEL_25259 "UNUSED" + IDS_INTEL_25260 "" + IDS_INTEL_25261 "Note: Spies reported@ATTENTION\n\nA female capitalist spy has been seen in the area. Those responsible for her capture will receive extra portions of cabbage soup. Those NOT responsible for her capture will be given latrine duty" + IDS_INTEL_25262 "UNUSED" + IDS_INTEL_25263 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25264 "UNUSED" + IDS_INTEL_25265 "UNUSED" + IDS_INTEL_25266 "UNUSED" + IDS_INTEL_25267 "UNUSED" + IDS_INTEL_25268 "UNUSED" + IDS_INTEL_25269 "UNUSED" + IDS_INTEL_25270 "UNUSED" + IDS_INTEL_25271 "UNUSED" + IDS_INTEL_25272 "UNUSED" + IDS_INTEL_25273 "UNUSED" + IDS_INTEL_25274 "UNUSED" + IDS_INTEL_25275 "UNUSED" + IDS_INTEL_25276 "UNUSED" + IDS_INTEL_25277 "UNUSED" + IDS_INTEL_25278 "UNUSED" + IDS_INTEL_25279 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25280 "" + IDS_INTEL_25281 "Soviet Memo: Recent explosions@To: Maintenance Division\nFrom: Sergeant Butsenko\n\nI have continually warned others of the hazards of storing fuel in open areas. The recent series of explosions has confirmed my views. I suggest a Fuel Committee be started to evaluate the problem and document the solution." + IDS_INTEL_25282 "UNUSED" + IDS_INTEL_25283 "UNUSED" + IDS_INTEL_25284 "UNUSED" + IDS_INTEL_25285 "UNUSED" + IDS_INTEL_25286 "UNUSED" + IDS_INTEL_25287 "UNUSED" + IDS_INTEL_25288 "UNUSED" + IDS_INTEL_25289 "UNUSED" + IDS_INTEL_25290 "UNUSED" + IDS_INTEL_25291 "UNUSED" + IDS_INTEL_25292 "UNUSED" + IDS_INTEL_25293 "UNUSED" + IDS_INTEL_25294 "UNUSED" + IDS_INTEL_25295 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25296 "UNUSED" + IDS_INTEL_25297 "UNUSED" + IDS_INTEL_25298 "UNUSED" + IDS_INTEL_25299 "UNUSED" + IDS_INTEL_25300 "" + IDS_INTEL_25301 "Note: Spies still at large@I am disheartened that no one has yet captured the capitalist spy for the glory of Mother Russia! If this spy is not apprehended by morning, responsible personnel will receive punitive executions.\n\nColonel Pupkin" + IDS_INTEL_25302 "UNUSED" + IDS_INTEL_25303 "UNUSED" + IDS_INTEL_25304 "UNUSED" + IDS_INTEL_25305 "UNUSED" + IDS_INTEL_25306 "UNUSED" + IDS_INTEL_25307 "UNUSED" + IDS_INTEL_25308 "UNUSED" + IDS_INTEL_25309 "UNUSED" + IDS_INTEL_25310 "UNUSED" + IDS_INTEL_25311 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25312 "UNUSED" + IDS_INTEL_25313 "UNUSED" + IDS_INTEL_25314 "UNUSED" + IDS_INTEL_25315 "UNUSED" + IDS_INTEL_25316 "UNUSED" + IDS_INTEL_25317 "UNUSED" + IDS_INTEL_25318 "UNUSED" + IDS_INTEL_25319 "UNUSED" + IDS_INTEL_25320 "" + IDS_INTEL_25321 "UNUSED" + IDS_INTEL_25322 "UNUSED" + IDS_INTEL_25323 "UNUSED" + IDS_INTEL_25324 "UNUSED" + IDS_INTEL_25325 "UNUSED" + IDS_INTEL_25326 "UNUSED" + IDS_INTEL_25327 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25328 "UNUSED" + IDS_INTEL_25329 "UNUSED" + IDS_INTEL_25330 "UNUSED" + IDS_INTEL_25331 "UNUSED" + IDS_INTEL_25332 "UNUSED" + IDS_INTEL_25333 "UNUSED" + IDS_INTEL_25334 "UNUSED" + IDS_INTEL_25335 "UNUSED" + IDS_INTEL_25336 "UNUSED" + IDS_INTEL_25337 "UNUSED" + IDS_INTEL_25338 "UNUSED" + IDS_INTEL_25339 "UNUSED" + IDS_INTEL_25340 "" + IDS_INTEL_25341 "Letter: Dear Mother@Dear Mother,\n\nHow are you? It has been long time, yes? How is Cincinnati? I am big time pilot now. Today I flew to Siberia on secret mission. Job is dangerous, but I get paid good money. You are getting checks, yes? It makes me happy.\n\nLove,\nMisha" + IDS_INTEL_25342 "UNUSED" + IDS_INTEL_25343 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25344 "UNUSED" + IDS_INTEL_25345 "UNUSED" + IDS_INTEL_25346 "UNUSED" + IDS_INTEL_25347 "UNUSED" + IDS_INTEL_25348 "UNUSED" + IDS_INTEL_25349 "UNUSED" + IDS_INTEL_25350 "UNUSED" + IDS_INTEL_25351 "UNUSED" + IDS_INTEL_25352 "UNUSED" + IDS_INTEL_25353 "UNUSED" + IDS_INTEL_25354 "UNUSED" + IDS_INTEL_25355 "UNUSED" + IDS_INTEL_25356 "UNUSED" + IDS_INTEL_25357 "UNUSED" + IDS_INTEL_25358 "UNUSED" + IDS_INTEL_25359 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25360 "" + IDS_INTEL_25361 "Letter: Blitzny training@February 28, 1967\n\nMr. Blitzny (or should I say Mr. Goodman),\n\nIt is imperative that your training be complete by early June. A sublime opportunity has presented itself in Amsterdam.\n\nRegards,\nMr. X" + IDS_INTEL_25362 "Carbon Copy: Trouble with chicks@Carbon Copy\n\nMarch 6, 1967\n\nMr. X,\n\nI am still having trouble scoring with chicks. It makes it very hard to feel like a real super spy when girls don't want to talk to me. In the movies, spies always get lots of women. This situation is affecting my morale. At this rate, I'm not sure I can be ready by June.\n\nUrgently,\nMelvin Blitzny\na.k.a. Tom Goodman" + IDS_INTEL_25363 "Letter: Delay unacceptable@March 19, 1967\n\nMr. Blitzny, \n\nDelays are unacceptable. You WILL be prepared to assume the identity of Tom Goodman on schedule. I need you on the UNITY payroll as soon as possible. I hope I have made myself perfectly clear.\n\nRegards,\nMr. Smith" + IDS_INTEL_25364 "Carbon Copy: Don't rush me!@Carbon Copy\n\nMarch 20, 1967\n\nMr. X (or should I say Smith),\n\nI'm tired of hearing about this deadline of yours. If there's one thing I learned from selling vacuum cleaners, it's that you can't rush art. I will be ready when I am ready and not a minute sooner. Stick that in your fancy pants.\n\nRegards,\nTom Goodman" + IDS_INTEL_25365 "Letter: Prissy sap@March 29, 1967\n\nListen to me, you prissy little sap, I've had about enough of your posturing. Perhaps you don't appreciate the gravity of the situation, so allow me to spell it out in terms your puerile intellect can grasp. You are being watched. Constantly. Should you deviate from the plan I have outlined for you, you will disappear without a trace. I will personally supervise your extermination to ensure that it is as excruciating and protracted as possible.\n\nSmith" + IDS_INTEL_25366 "Unsent Letter: Go to hell@Unsent Original\n\nMarch 29, 1967\n\nMr. Sissy,\n\nWhy don't you just go to hell, you dumb stupid idiot. I hate you! I hate you! I hate you!\n\nDie,\nGoodman" + IDS_INTEL_25367 "H.A.R.M. Memo@The following Top Secret material is intended for H.A.R.M. personnel only!\n\nTo: All H.A.R.M. Personnel\nFrom: Anoop Banerjee\nDate: September 2, 1967\nSubject: Project Omega\n\nStarting this November, H.A.R.M. will begin prototyping for a new secret weapon venture called Project: Omega. We're looking for an experienced, highly organized product manager to head up this effort. If you or anyone you know is interested in working with our top notch research and development team on this exciting project, please contact me by internal courier at the branch office in Calcutta." + IDS_INTEL_25368 "Invoice for vacuum cleaners@INVOICE 2306a\n\nTo: Mr. Melvin Blitzny\nFrom: Lucky Suck Vacuum Company, Walla Walla, Washington\n\nOrder for 260 Lucky Suck type B vacuum cleaners with detachable nozzle and swivel head." + IDS_INTEL_25369 "H.A.R.M. Communiqué: Magnus Armstrong@To: Melvin Blitzny/Tom Goodman\nFrom: Dmitrij Volkov\n\nYou will report to Oslo, Sweden, on April 4, 1967, for H.A.R.M. orientation and mental conditioning. One of my associates, Magnus Armstrong, will retrieve you from the airport. He is not difficult to recognize. His more distinctive characteristics include a thick red beard, a kilt (which he wears regardless of the weather), and the pervasive aroma of Scotch whiskey. You will do as he says.\n\nWelcome to H.A.R.M." + IDS_INTEL_25370 "" + IDS_INTEL_25371 "" + IDS_INTEL_25372 "" + IDS_INTEL_25373 "" + IDS_INTEL_25374 "" + IDS_INTEL_25375 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25376 "" + IDS_INTEL_25377 "" + IDS_INTEL_25378 "" + IDS_INTEL_25379 "" + IDS_INTEL_25380 "" + IDS_INTEL_25381 "Letter: Dear John letter@Dear Loni,\n\nI am leaving you and shacking up with your best friend, Jill. Sorry, honey, but you never gave me my due! As soon as we got hitched, you stopped wearin' makeup, gained 30 pounds, and you ain't done the dishes for over a week. Can you blame me for leaving?\n\nYour former husband, Kevin" + IDS_INTEL_25382 "Farley Fertility Letter@FARLEY FERTILITY\n\nTo: Mrs. Loni Hickey\n\nThe results of our tests indicate the child is not a biological match to Mr. Hickey. Thank you for choosing Farley Fertility to serve your needs. Good luck finding the father!" + IDS_INTEL_25383 "Letter: Steve or Dwayne@Betty,\n\nWhat am I to do! The baby ain't Kevin's. At least that narrows it down to either Steve or Dwayne. Do you think I should tell them?\n\nLoni" + IDS_INTEL_25384 "" + IDS_INTEL_25385 "" + IDS_INTEL_25386 "" + IDS_INTEL_25387 "" + IDS_INTEL_25388 "" + IDS_INTEL_25389 "" + IDS_INTEL_25390 "" + IDS_INTEL_25391 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25392 "" + IDS_INTEL_25393 "" + IDS_INTEL_25394 "" + IDS_INTEL_25395 "" + IDS_INTEL_25396 "" + IDS_INTEL_25397 "" + IDS_INTEL_25398 "" + IDS_INTEL_25399 "" + IDS_INTEL_25400 "" + IDS_INTEL_25401 "Mobile Home Ad@THE MOBILE HOME ADVANTAGE!\n\nTired of seeing the same scenery year after year? A mobile home could be the answer!" + IDS_INTEL_25402 "Letter: Loan denied@Dear Mr. Hickey,\n\nYour application for a Mobile Home Loan has been denied due to your recent bankruptcy.\n\nSigned: Mr. Dullwhittle\nFirst Bank of Stucky" + IDS_INTEL_25403 "" + IDS_INTEL_25404 "" + IDS_INTEL_25405 "" + IDS_INTEL_25406 "" + IDS_INTEL_25407 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25408 "" + IDS_INTEL_25409 "" + IDS_INTEL_25410 "" + IDS_INTEL_25411 "" + IDS_INTEL_25412 "" + IDS_INTEL_25413 "" + IDS_INTEL_25414 "" + IDS_INTEL_25415 "" + IDS_INTEL_25416 "" + IDS_INTEL_25417 "" + IDS_INTEL_25418 "" + IDS_INTEL_25419 "" + IDS_INTEL_25420 "" + IDS_INTEL_25421 "" + IDS_INTEL_25422 "" + IDS_INTEL_25423 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25424 "" + IDS_INTEL_25425 "" + IDS_INTEL_25426 "" + IDS_INTEL_25427 "" + IDS_INTEL_25428 "" + IDS_INTEL_25429 "" + IDS_INTEL_25430 "" + IDS_INTEL_25431 "" + IDS_INTEL_25432 "" + IDS_INTEL_25433 "" + IDS_INTEL_25434 "" + IDS_INTEL_25435 "" + IDS_INTEL_25436 "" + IDS_INTEL_25437 "" + IDS_INTEL_25438 "" + IDS_INTEL_25439 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25440 "" + IDS_INTEL_25441 "Photograph: Kamal Khubchandani@" + IDS_INTEL_25442 "Letter: Kamal blackmail@Dear Kamal,\n\nHow are you? I am fine. As you see from this fine picture, my friend, we know you have been passing secrets to UNITY. If you do not pay us 5,000 rupees by next Tuesday, we shall see if your boss, Anoop Banerjee, would be willing to buy them.\n\nEvil Alliance" + IDS_INTEL_25443 "H.A.R.M. Password@To: All H.A.R.M. Personnel\n\nToday's password is supposed to be Mulligatawny, but my instincts tell me the boss will probably change it to the customary ""Balaji Malpani better shape up or he's going to die a very slow, painful death.""\n\nBalaji Malpani" + IDS_INTEL_25444 "Letter: Finding the H.A.R.M. password@Agent Archer,\n\nTo gain entrance to H.A.R.M.'s India headquarters, you'll need to locate Balaji Malpani, Anoop Banerjee's right hand man. He is responsible for coming up with and distributing the daily passwords. Either eliminate him or use this recording device to eavesdrop when he calls Banerjee this afternoon.\n\nBalaji keeps a room in the Hotel Happy Guest. Plant the bug on the phone in his apartment, hide until the conversation ends, then activate the bug to play back the entire conversation.\n\nGood luck,\nKamal" + IDS_INTEL_25445 "Photograph: Balaji Malpani@ " + IDS_INTEL_25446 "Letter: Kamal blackmail@Agent Archer,\n\nA gang of Evil Alliance thugs has discovered I am passing secrets to UNITY. Until they are apprehended, I cannot afford to be seen. I've heard their hideout is located in this part of the city. See if you can put them out of commission and obtain the blackmail evidence.\n\nMay Lord Shiva protect you!\nKamal" + IDS_INTEL_25447 "MAP: Neighborhood@" + IDS_INTEL_25448 "Letter: Angaraka Gang@To: Evil Alliance Studio 4\nFrom: Kumar\n\nMy friends, the contract is almost signed! Soon we can say goodbye to Evil Alliance and get to work on our first project as the Angaraka Gang!\n\n(Not for distribution outside Studio 4!)" + IDS_INTEL_25449 "Letter: Angaraka Gang@To: Kumar\nFrom: Ganesh\n\nWhat? When did we get a new name? Angaraka Gang? Everyone will believe we suffer from dreadful skin disease! Who is responsible for this idiocy? No one will remember that Angaraka is also the charm to free the bearer from debts!\n\nLet us not be too clever for our own good, my friend!" + IDS_INTEL_25450 "UNUSED" + IDS_INTEL_25451 "" + IDS_INTEL_25452 "" + IDS_INTEL_25453 "" + IDS_INTEL_25454 "" + IDS_INTEL_25455 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25456 "" + IDS_INTEL_25457 "" + IDS_INTEL_25458 "" + IDS_INTEL_25459 "" + IDS_INTEL_25460 "" + IDS_INTEL_25461 "Note: Unlocked windows@ATTENTION ALL EMPLOYEES\n\nThe courtyard is off limits to unauthorized persons. If I discover these windows unlocked one more time, may Lord Vishnu protect the offender from my wrath!\n\nAnoop Banerjee\nChief Executive Officer" + IDS_INTEL_25462 "Note: Unpaid window bill@To: Erin Keyes, H.A.R.M. Comptroller\nFrom: Nanda Devi Window Washers\n\nMs. Keyes, our records show an outstanding balance of 47 rupees for services rendered. We have attempted to refer this matter to Mr. Banerjee at your Indian headquarters office, but he has been most uncooperative. Please remit the balance due within 30 days or we will fling monkey doo doo at the windows of your compound in retaliation." + IDS_INTEL_25463 "H.A.R.M. Memo: Window washing@To: Anoop Banerjee\nFrom: Erin Keyes, H.A.R.M. Comptroller\n\nMr. Banerjee, I have received a complaint from Nanda Devi Window Washers regarding non-payment of a window-washing bill. Please resolve this matter by the usual methods." + IDS_INTEL_25464 "H.A.R.M. Memo: Windows@To: Nanda Devi Window Washers\nFrom: Anoop Banerjee\n\nYou call these windows clean? I curse you, your mother, your sisters, and your dog. I'm sending over a representative to see that you get the payment you are due. Goodbye." + IDS_INTEL_25465 "Note: Account correction@To: Anoop Banerjee\nCc: Erin Keyes, H.A.R.M. Comptroller\nFrom: Nanda Devi Window Washers\n\nMr. Banerjee, we must apologize profusely! Actually, it seems that the outstanding balance we had reported was a clerical error on our part. How idiotic of us! We are truly sorry for the inconvenience! To redress this unfortunate misunderstanding, we are happy to offer our services for free from now on!" + IDS_INTEL_25466 "H.A.R.M. Surveillance: E.A.@SURVEILLANCE REPORT 9F\nAttention: Anoop Banerjee\n\nSir, I believe our friends may be making their move soon. I suggest we move the merchandise to the freezer in the basement. It's more secure than the one in the employee lounge.\n\nPrem" + IDS_INTEL_25467 "H.A.R.M. Surveillance: Raid@SURVEILLANCE REPORT 9H\nAttention: Anoop Banerjee\n\nSir, PacPac has discovered the location of Evil Alliance's India branch office! They are using that old movie theater down the street! I have scheduled a nighttime raid for next Tuesday at 9:30pm during their nightly movie screening. I couldn't get tickets for Samir and Ajay, but we can let them in the side door after the show starts.\n\nPrem" + IDS_INTEL_25468 "UNUSED" + IDS_INTEL_25469 "UNUSED" + IDS_INTEL_25470 "UNUSED" + IDS_INTEL_25471 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25472 "" + IDS_INTEL_25473 "" + IDS_INTEL_25474 "" + IDS_INTEL_25475 "" + IDS_INTEL_25476 "" + IDS_INTEL_25477 "" + IDS_INTEL_25478 "" + IDS_INTEL_25479 "" + IDS_INTEL_25480 "" + IDS_INTEL_25481 "Note from Kamal: Equipment@Agent Archer, \n\nEvil Alliance is headquartered in the old movie theater across the street. I suppose it suits their theatrical, overly dramatic modus operandi. I was able to obtain a diagram of the building that indicates points at which demolition charges would cause the greatest structural damage. You'll have to find explosives on site.\n\nKamal\n\nP.S. Santa sent this package for you." + IDS_INTEL_25482 "Letter: Elope now!@To Ms. Lala Faqueera,\n14 Pullagura Street\n\nLala,\n\nI have such worry! Your father will yet have his way and marry you off to another man. We must elope soon!\n\nWith love, \nPrem" + IDS_INTEL_25483 "Letter: Wild daughter@Dr. Nallapuneni,\n\nDoctor, I am very concerned about my daughter. My husband has tried to arrange a good match, but no one will have her! She is wild and belligerent. She will attract only the worst sort of man. What shall I do?\n\nSincerely,\nMrs. Faqueera" + IDS_INTEL_25484 "Letter: Guari charm@Mrs. Faqueera,\n\nI understand your concerns. You must purchase a Gauri charm and some pickled garlic and hide it under her bed to insure a good husband. It worked wonders for my own Phoolwati!\n\nDr. Nallapuneni" + IDS_INTEL_25485 "DIAGRAM: Movie theatre@" + IDS_INTEL_25486 "" + IDS_INTEL_25487 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25488 "" + IDS_INTEL_25489 "" + IDS_INTEL_25490 "" + IDS_INTEL_25491 "" + IDS_INTEL_25492 "" + IDS_INTEL_25493 "" + IDS_INTEL_25494 "" + IDS_INTEL_25495 "" + IDS_INTEL_25496 "" + IDS_INTEL_25497 "" + IDS_INTEL_25498 "" + IDS_INTEL_25499 "" + IDS_INTEL_25500 "" + IDS_INTEL_25501 "Safe combination@To: Security Assistant Sonal\nFrom: Associate Team Leader Madhu\n\nThe monthly reports MUST be filed by tomorrow morning. Also, make sure the box office receipts are totaled. You know how the boss feels about mathematics.\n\nP.S. Because I'm sure you have forgotten it, the combination to the safe to 6-23-6." + IDS_INTEL_25502 "E.A. Memo: Ambushing H.A.R.M.@Vijay,\n\nGood news! The time for revenge has come. The H.A.R.M. Activities Director just reserved 30 seats for Thursday night's show. We can ambush them as soon as the show begins! Please issue bullets to the men, but be careful not to exceed our weekly allotment!\n\nAssociate Team Leader Madhu" + IDS_INTEL_25503 "E.A. Memo: Explosives@To: Security Assistant Sonal\nFrom: Associate Team Leader Madhu\n\nThese explosives are for next Thursday's big operation, so make sure you lock them in the secret film vault where they'll be safe." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25504 "Note: Hazardous sand bags@Due to the unfortunate injuries of Junior Associates Ramesh and Samir, the main stage area is off limits until Maintenance can remove those hazardous hanging sand bags." + IDS_INTEL_25505 "E.A. Memo: Venkatashalapathi@To: Associate Team Leader Madhu\nFrom: Team Member Vijay\n\nSir, I respectfully submit we change the name of Operation Venkatachalapathi. People are confusing it with Operation Velatachalapathi. It is demoralizing to be confused with that disgraceful incident. We suggest a new name: Operation Shakti. It has a nice ring, yes?" + IDS_INTEL_25506 "E.A. Memo: Venkatashalapathi@To: Team Member Vijay\nFrom: Associate Team Leader Madhu\n\nVijay, I cannot believe you are bringing this up now. Marketing has already approved Operation Venkatachalapathi. Do you know what a hassle it is to pick a new name? I make no promises." + IDS_INTEL_25507 "E.A. Memo: How about Shakti@To: Marketing\nFrom: Associate Team Leader Madhu\n\nI formally request Operation Venkatachalapathi be renamed to Operation Shakti. You must admit Venkatachalapathi doesn't fit well on our new letterhead." + IDS_INTEL_25508 "E.A. Memo: Are you crazy?@To: Associate Team Leader Madhu\nFrom: Marketing\n\nMay Lord Ganesha's sacred axe remove your left pinky! Have you not heard of Shakti Cola? They would happily slap us with a trademark infringement. We have already exceeded our budget. Your request is Denied with a capital D." + IDS_INTEL_25509 "E.A. Memo: Marketing is worthless@To: Team Member Vijay\nFrom: Associate Team Leader Madhu\n\nAlas my friend, once again the marketing department has proven their worthlessness. We are stuck with Project Venkatachalapathi." + IDS_INTEL_25510 "Trademark Search: Venkatachalapathi@TRADEMARK SEARCH: Venkatachalapathi\n\nWe have found only two possible infringements for this name. One is a small papaya plantation. The other is a rodent removal service. We feel these are sufficiently distinct to cause no issues. Total amount due for search: 10,000 rupees." + IDS_INTEL_25511 "Cease and Desist: Venkatachalapathi@CEASE AND DESIST\n\nFrom: Venkatachalapathi Rodent Removal\nTo: Mr. Baba Madhu\n\nMr. Madhu, this letter serves as official notice of your trademark infringement. Please desist immediately or we will see you in court!" + IDS_INTEL_25512 "E.A. Memo: Trademark cleanup@To: Maintenance\nFrom: Associate Team Leader Madhu\n\nHave you seen the Cease and Desist letter? I assume Maintenance will take care of the matter in the usual fashion? On second thought, make it extra painful.\n\nSurely I must have done something quite evil in my former life to deserve such headaches!" + IDS_INTEL_25513 "UNUSED" + IDS_INTEL_25514 "" + IDS_INTEL_25515 "" + IDS_INTEL_25516 "" + IDS_INTEL_25517 "" + IDS_INTEL_25518 "" + IDS_INTEL_25519 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25520 "" + IDS_INTEL_25521 "Note: H.A.R.M. vault@Agent Archer,\n\nGetting into the vault won't be easy. First, you'll have to bypass the electronic gates and security cameras. You should also expect to find guards on duty in the lower area.\n\nUnfortunately, I haven't been beyond that point, so I'm not sure what you'll face, but I've heard Anoop talking about the light fixtures on the walls. I suppose they're useful in some way.\n\nGood luck,\nKamal" + IDS_INTEL_25522 "H.A.R.M. Memo: Vault security@To: Anoop Banerjee\nFrom: The Director\n\nI've just finished reviewing the results of the latest security inspection and was pleased to see such a dramatic improvement in your rating for this year. Of course, it couldn't really have got much worse, could it? Still, it's gratifying to note even a minor decline in your incompetence. Keep up the good work!" + IDS_INTEL_25523 "Letter: Thanks from UNITY@To: Kamal Khubchandani\nFrom: Bruno Lawrie, Temporary Director of UNITY\n\nI must thank you sincerely for your invaluable and selfless assistance in this matter. I'm not entirely sure what has motivated you to help us, but I assure you that UNITY will compensate you generously. Also, should you find yourself in need of employment as a consequence of your actions, I'm sure we can make arrangements." + IDS_INTEL_25524 "H.A.R.M. Memo: Chemical request@To: Dr. Kussman, Antarctica Base\nFrom: Anoop Banerjee, H.A.R.M. India Headquarters\nRe: Project Omega Materials\n\nThe supply of chemicals you requested has been shipped to McMurdo via the Falkland Islands. That stash of tea you wanted is in the red box. Enjoy, my friend!" + IDS_INTEL_25525 "Note: Bugs@Agent Archer,\n\nSanta is interested in additional intelligence on H.A.R.M.'s Indian operations. He has asked that you bug the phones of three key employees. These bugs will be recovered later by other agents, so you only need to plant them to achieve your objective. Good luck!\n\nKamal" + IDS_INTEL_25526 "Letter: Kamal's reply@Carbon copy\n\nTo: Bruno Lawrie\nFrom: Kamal Khubchandani\n\nThank you for your generous offer. My motive for assisting you is simple: I am fed up. I do not pretend that I am particularly righteous, but recently my daughter, Laxmi, was born. Seeing her for the first time, I was filled with such overpowering love and peace that I wept. It was very difficult to go back to work and pretend to enjoy the company of these cartoon criminals and their petty schemes. I am sick of villainy." + IDS_INTEL_25527 "Document: Project Omega@To: Anoop Banerjee\nFrom: Dr. Kussman\n\nWell, my good friend, Project: Omega is proceeding right on schedule. We've had a couple of minor setbacks, but nothing to worry about. The world will never forget 1966, the Year of Omega! We're going to permanently raise the bar in evil Doomsday schemes!\n\nSo when are you coming to visit me in Antarctica? I'm starved for intelligent conversation. We're about two hours due south of Russkaya by plane. There isn't much to do, but we have a ping pong table!\n" + IDS_INTEL_25528 "Receipt: Weasel substitutes@To: Anoop Banerjee\nFrom: Vicious, Mean, and Nasty Animal Importers\n\nWe regret that we have not been able to obtain any rabid ferocious weasels for your death trap. Our supplier assures us a shipment is en route from Canada. In the meantime, please accept these temporary substitutes. While not as deadly as rabid weasels, these creatures can be quite petulant." + IDS_INTEL_25529 "" + IDS_INTEL_25530 "" + IDS_INTEL_25531 "" + IDS_INTEL_25532 "" + IDS_INTEL_25533 "" + IDS_INTEL_25534 "" + IDS_INTEL_25535 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25536 "" + IDS_INTEL_25537 "" + IDS_INTEL_25538 "" + IDS_INTEL_25539 "" + IDS_INTEL_25540 "" + IDS_INTEL_25541 "Notice: Pantomime Festival@Sanjay Productions presents\n\nThe World Famous\nPIERRE, THE MIME KING\nand his Troupe de Pantomine\n\nOne night only! Tickets are limited." + IDS_INTEL_25542 "" + IDS_INTEL_25543 "" + IDS_INTEL_25544 "" + IDS_INTEL_25545 "" + IDS_INTEL_25546 "" + IDS_INTEL_25547 "" + IDS_INTEL_25548 "" + IDS_INTEL_25549 "" + IDS_INTEL_25550 "" + IDS_INTEL_25551 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25552 "" + IDS_INTEL_25553 "" + IDS_INTEL_25554 "" + IDS_INTEL_25555 "" + IDS_INTEL_25556 "" + IDS_INTEL_25557 "" + IDS_INTEL_25558 "" + IDS_INTEL_25559 "" + IDS_INTEL_25560 "" + IDS_INTEL_25561 "Note: Rope pulls@Sacre Bleu! My patience wears thin. For the thousandth time, Rope Pulls begin with the RIGHT hand. The next one of you who perpetrates such inexcusable incompetence in my presence shall have his left hand amputated as a permanent reminder of his stupidity.\n\nWe practice a sacred Art, mes amis. Honor it and you shall flourish in my grace.\n\nPierre" + IDS_INTEL_25562 "Letter: Failed mime@Dear Babette,\n\nMon Dieu! I can't seem to do anything right! Every day is another mistake, another failure. I cannot stand the self-loathing! I am an ugly blemish on the divine face of pantomime. I miss you terribly, my sweet.\n\nLove, \nJacques" + IDS_INTEL_25563 "Mime Manual@THE ART OF PANTOMIME\n\nTechnique is IMPRESSIVE. Artistry is INTERESTING. IMPRESSIVE alone does not stand the test of time. The next fellow comes along and is taller than you, quicker, wealthier. IMPRESSIVE is based on relatives: better or worse. INTERESTING stands alone. When something is INTERESTING, time stops! This is the key!" + IDS_INTEL_25564 "H.A.R.M. File: Archer profile@H.A.R.M. FILE 2317: Catherine Archer, Updated Profile\n\nArcher was born in 1942 to Lord William Archer and Catherine Anne MacDougal. Mother died from complications arising from childbirth. Lord Archer squandered his health and inheritance, taking his own life when Archer was 12. She spent time in an orphanage and a few foster homes before running away to London, where she became a notorious cat burglar known as The Fox. Recruited some years later by Bruno Lawrie to work for UNITY." + IDS_INTEL_25565 "Photograph: Magnus Armstrong@" + IDS_INTEL_25566 "H.A.R.M. File: Archer info@H.A.R.M. FILE 2345: Catherine Anne Archer (aka The Fox)\n\nHeight: 5 feet 8 inches\nEyes: Green\nHair: Brown\nNationality: Scottish\nLast Confirmed Contact: Siberia" + IDS_INTEL_25567 "H.A.R.M. File: Armstrong@H.A.R.M. FILE 1201: Magnus Armstrong\n\nHeight: 6 feet 3 inches\nEyes: Blue\nHair: Red\nNationality: Scottish\nLast Confirmed Contact: England" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25568 "Photograph: Cate Archer@" + IDS_INTEL_25569 "" + IDS_INTEL_25570 "" + IDS_INTEL_25571 "" + IDS_INTEL_25572 "" + IDS_INTEL_25573 "" + IDS_INTEL_25574 "" + IDS_INTEL_25575 "" + IDS_INTEL_25576 "" + IDS_INTEL_25577 "" + IDS_INTEL_25578 "" + IDS_INTEL_25579 "" + IDS_INTEL_25580 "" + IDS_INTEL_25581 "" + IDS_INTEL_25582 "" + IDS_INTEL_25583 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25584 "" + IDS_INTEL_25585 "" + IDS_INTEL_25586 "" + IDS_INTEL_25587 "" + IDS_INTEL_25588 "" + IDS_INTEL_25589 "" + IDS_INTEL_25590 "" + IDS_INTEL_25591 "" + IDS_INTEL_25592 "" + IDS_INTEL_25593 "" + IDS_INTEL_25594 "" + IDS_INTEL_25595 "" + IDS_INTEL_25596 "" + IDS_INTEL_25597 "" + IDS_INTEL_25598 "" + IDS_INTEL_25599 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25640 "" + IDS_INTEL_25641 "H.A.R.M. Memo: Sign-up@To: General Zhukov\nFrom: Dr. Kussman\nRe: Project Omega Monthly Update\n\nGeneral, we are ready to begin field testing next week, three weeks ahead of schedule. Have your comrades made a final decision regarding this once in a lifetime opportunity? Be advised there are other interested parties. Also, if you sign up within the next 48 hours, we'll throw in our extended 18 month warranty." + IDS_INTEL_25642 "Propaganda literature@PROJECT OMEGA AND YOU!\n\nIf you're like me, you've seen the Project: Omega status reports in the monthly newsletter and asked yourself, ""What is Project: Omega, anyway?"" Well, I can't tell you what it is (until you sign a non-disclosure agreement and submit to extensive psychological reprogramming), but I can tell you that Project: Omega is the key to H.A.R.M.'s future! And it needs your help! \n\nSign up today at your local Human Resources Bureau and help pave the way to a glorious tomorrow." + IDS_INTEL_25643 "H.A.R.M. File: Zhukov@H.A.R.M. FILE 6987: General Nikolai Zhukov\n\nReassigned to Siberia after a falling out with General Kopat in Petrograd. May have involved Zhukov's affair with Kopat's 18-year-old wife. Or 24-year-old daughter. Zhukov is the perfect target for Project: Omega, possessing the ideal combination of military rank and mental mediocrity to see the benefits of the project without taking into consideration its shortcomings." + IDS_INTEL_25644 "H.A.R.M. Memo: Broken doorknobs@To: Dr. Kussman\nFrom: Maintenance\n\nWe regret we are unable to replace your broken doorknob as we are busy moving the explosives out of the maintenance shed." + IDS_INTEL_25645 "Invoice for chemicals@ACME Chemical Company\n\nINVOICE #4023\n\nCustomer: Dr. Karl Kussman\nProducts: 400 liters of embalming fluid, 60 kilograms of sodium bicarbonate, 20 boxes of Red Hot Sugar Poppers." + IDS_INTEL_25646 "H.A.R.M. Memo: Schedule overruns@To: Dr. Kussman\nFrom: The Director\n\nI'm sure I don't need to point out that we are in peril of falling irremediably behind schedule, Doctor. Nor should I have to remind you that you personally signed off on this deadline. Interesting word, ""deadline"". Don't you think?\n\nI want results, Dr. Kussman, and I want them on schedule and on budget. If we miss our ship date, we'll be slipping into the holiday season. If that happens, I won't have to kill you. The Marketing department will do it for me." + IDS_INTEL_25647 "Photograph of Abigail Anders@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25648 "Journal: Hotchkins@Journal of Melbert Hotchkins. Day 189.\n\nIn the past week, subject #42 (Anders, Joseph, Lt.) has become increasingly hostile. We've increased his dosage, but I fear we may have to give up on him. There is one other option, but it will require us to transport him to the underwater facility in the Aegean for reconditioning." + IDS_INTEL_25649 "H.A.R.M. File: Lt. Anders@H.A.R.M. FILE 6714: Lt. Joseph Anders\n\nCollected from U.S. military base in Norway during Operation Press Gang. Has a wife, Marianne; a daughter, Abigail; and a terrier, Sparky. Distinguished military career with plenty of combat experience.\n\nNotes: In terms of his professional background, he's the ideal candidate, but I'm concerned about his strong family ties. Monitor carefully.\n\nDr. Kussman" + IDS_INTEL_25650 "H.A.R.M. Memo: Field Test@To: Dr. Kussman\nFrom: The Director\n\nThe India branch has failed us. It seems that our favorite meddlesome super spy, Cate Archer, got inside their vault. We must accelerate the schedule. It's time the Super Soldiers had a field test, don't you think? I want the entire division en route to India before UNITY arrives at your facility. We must verify that the Super Soldiers are as invulnerable to damage as you promise.\n\nAnd I don't want to hear any excuses about your so-called renegade lieutenant. If you can't control your own test subjects, I'll find a mad scientist who can." + IDS_INTEL_25651 "H.A.R.M. Memo: Explosives@To: Maintenance\nFrom: Dr. Kussman\n\nPlease arrange to have the demolition charges in Lab 2 moved to the maintenance shed at once. I shouldn't have to point out that it's a bad idea to store explosives in close proximity to where we're doing weapon tests. Perhaps you'd like to stow them under your cots instead?" + IDS_INTEL_25652 "Super Soldier Blueprint@" + IDS_INTEL_25653 "H.A.R.M. Memo: Supplies@To: Dr. Kussman\nFrom: Dmitrij Volkov, Director of Executive Action\n\nThank you for the lovely Get Well Soon card. It was very considerate in light of the fact that it was I who assassinated your uncle in Oslo all those years ago. I understand you and he were close.\n\nAs to the nature of my mishap, I was vacationing in Switzerland shortly after the demise of Baroness Dumas, our illustrious former Associate Director. While skiing in the Alps, I reached out to clout an unsuspecting child with my ski pole as I sped past and got tangled up with his sister. We plummeted off a hundred foot cliff into a small, pleasant café. Fortunately, she broke my fall." + IDS_INTEL_25654 "Status report: Subject #42@INTERNAL STATUS REPORT\n(Not for publication in monthly newsletter!)\n\nOverall, results are highly satisfactory. We're almost two full weeks ahead of schedule. That said, we've also experienced an unfortunate setback. Subject #42, one of our two Lieutenants, is still showing signs of autonomy. Episodes have been escalating in frequency and aggression. Recommend full reconditioning at earliest opportunity. Project: Omega can't afford any rogues!" + IDS_INTEL_25655 "" + IDS_INTEL_25656 "" + IDS_INTEL_25657 "" + IDS_INTEL_25658 "" + IDS_INTEL_25659 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25680 "" + IDS_INTEL_25681 "Note: Punishment@To: All Personnel\nFrom: Anoop Banerjee\n\nWell, my friends, it seems the Director is venting his wrath upon us rather than those wretched mimes. While I am personally willing to admit my culpability in being duped by the spy, it was the Frenchman's fault that she escaped. Therefore, I have chosen to resign from H.A.R.M. and start a private security company. Those of you interested in a new career direction are welcome to join this exciting venture." + IDS_INTEL_25682 "" + IDS_INTEL_25683 "" + IDS_INTEL_25684 "" + IDS_INTEL_25685 "" + IDS_INTEL_25686 "" + IDS_INTEL_25687 "" + IDS_INTEL_25688 "" + IDS_INTEL_25689 "" + IDS_INTEL_25690 "" + IDS_INTEL_25691 "" + IDS_INTEL_25692 "" + IDS_INTEL_25693 "" + IDS_INTEL_25694 "" + IDS_INTEL_25695 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25696 "" + IDS_INTEL_25697 "" + IDS_INTEL_25698 "" + IDS_INTEL_25699 "" + IDS_INTEL_25700 "" + IDS_INTEL_25701 "" + IDS_INTEL_25702 "" + IDS_INTEL_25703 "" + IDS_INTEL_25704 "" + IDS_INTEL_25705 "" + IDS_INTEL_25706 "" + IDS_INTEL_25707 "" + IDS_INTEL_25708 "" + IDS_INTEL_25709 "" + IDS_INTEL_25710 "" + IDS_INTEL_25711 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25712 "" + IDS_INTEL_25713 "" + IDS_INTEL_25714 "" + IDS_INTEL_25715 "" + IDS_INTEL_25716 "" + IDS_INTEL_25717 "" + IDS_INTEL_25718 "" + IDS_INTEL_25719 "" + IDS_INTEL_25720 "" + IDS_INTEL_25721 "UNITY Memo: Jones on leave@To: All Personnel\nFrom: Mr. Jones\n\nBear in mind that I will be on vacation for three weeks starting this coming Monday. Bruno Lawrie will be Temporary Director of UNITY in my absence. Please afford him every courtesy. See you soon!" + IDS_INTEL_25722 "Memo: Bruno's Plea@To: All Personnel\nFrom: Bruno Lawrie, Temporary Director\n\nI realize you all find it terribly humorous that I've been left in charge, but please, in the name of decency, resist the urge to address me as, ""Your majesty,"" or worse yet, ""Sire"". I beg of you." + IDS_INTEL_25723 "Letter: Gossip@Dear Emma,\n\nDarling! How are you? It's no fun here since you left. I hear they fired that charming Mr. Goodman you had such a crush on. Terrible shame. Phyllis is still stuck with Bob. You'd think she'd at least dress him better! Well, back to filing. Keep in touch!\n\nTiffany" + IDS_INTEL_25724 "Note: Dr. Schenker hiding@Cate,\n\nI am hiding.\n\nSincerely,\nDr. Schenker" + IDS_INTEL_25725 "Report: SITREP@SITUATION REPORT\nProject: Omega\nPrepared by Isaac Barnes\n\nUNITY agents have discovered the nature and objective of Project: Omega, which involves the invasion of Khios by means of virtually indestructible, chemically engineered Super Soldiers. Recovered documents indicate that the Soviets are planning some sort of Communist super casino, but we suspect their true aim is to exploit the island's precious natural resources. Clearly, this sort of forcible, military exploitation by the Soviets would interfere with the genial, manipulative exploitation planned by NATO. We must act quickly and decisively." + IDS_INTEL_25726 "Memo: Bruno's Plea@To: All Personnel\nFrom: Bruno Lawrie, Temporary Director\n\nPerhaps I wasn't explicit enough in my previous request. I would be eternally grateful if you could abstain from using any artificially inflated form of address, including:\n\n- My lord\n- Your honor\n- Your holiness\n- My supreme commander\n\nThank you." + IDS_INTEL_25727 "SCHEMATIC: Shark submarine@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25728 "UNUSED" + IDS_INTEL_25729 "UNUSED" + IDS_INTEL_25730 "UNUSED" + IDS_INTEL_25731 "UNUSED" + IDS_INTEL_25732 "UNUSED" + IDS_INTEL_25733 "UNUSED" + IDS_INTEL_25734 "UNUSED" + IDS_INTEL_25735 "UNUSED" + IDS_INTEL_25736 "UNUSED" + IDS_INTEL_25737 "UNUSED" + IDS_INTEL_25738 "UNUSED" + IDS_INTEL_25739 "UNUSED" + IDS_INTEL_25740 "" + IDS_INTEL_25741 "Duty roster@DUTY ROSTER CHANGES\n\nPlease note that Frank's team is moving to day shifts this week. I guess that's what happens when you whine like a sissy about not getting enough sleep! Sheesh." + IDS_INTEL_25742 "Manifest for new uniforms@Shipping Manifest\n\nFour dozen H.A.R.M. uniforms (black and red). \n\nPlease return the old uniforms to headquarters for recycling." + IDS_INTEL_25743 "Note: Secrecy@To: All Personnel\nFrom: Commander Pim\n\nAs you know, the Super Secret Submarines are the key to Project: Omega's success. We must therefore observe a code of strictest secrecy regarding their existence and capabilities. Do not discuss them even with your wives or girlfriends. Loose lips sink ships, as they say.\n\nRemember what H.A.R.M. stands for!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25744 "Mission statement #1@To: All personnel\nFrom: Megan O'Malledy, Morale Officer\n\nHi, everyone! As you know, we recently held a contest inviting all employees to submit ideas for the new H.A.R.M. Mission Statement. Thanks for all four of your entries! Unfortunately, there's only room for one Mission Statement on the H.A.R.M. emblem, so three of you are just plain out of luck. Here's the third place entry:\n\n""Our mission is to proactively develop globally applicable expertise in order to build a sustainable results-oriented evil enterprise.""" + IDS_INTEL_25745 "Letter: New uniforms@Hey Rodney,\n\nCan you believe they finally listened to us grunts and got some decent uniforms? I hope they retake the company picture. When I get back can you hook me up with Margaret? She's hot!\n\nYour pal, \nNathan" + IDS_INTEL_25746 "Letter: Clark's proposal@Dear Martha,\n\nI have lived in agony since that fateful day in Morocco. For months, I have mentally flagellated myself for my brash decision. Last month, I left my wife and defected from the Soviet Union to join an independent firm with better benefits and an excellent profit-sharing program. I miss you terribly and want us to be together again. Will you have me back?\n\nClark" + IDS_INTEL_25747 "Mission statement #2@To: All personnel\nFrom: Megan O'Malledy, Morale Officer\n\nHello, folks! Here's the second place entry in the Mission Statement contest:\n\n""Our aim is to enthusiastically explore new maintainable law-breaking paradigms in order to fully functionalize our evildoing opportunities and actualize our potential.""" + IDS_INTEL_25748 "Mission statement #3@To: All personnel\nFrom: Megan O'Malledy, Morale Officer\n\nHidy ho, fellow H.A.R.M. collaborators! I'm honored to present the new H.A.R.M. Mission Statement, submitted by Dmitrij Volkov, our illustrious Director of Executive Action:\n\n""Our mission is to cause HARM! Don't forget it or I'll strangle you with your own severed tongue.""\n\nVery... succinct!" + IDS_INTEL_25749 "Note: Letterhead@To: All Section Chiefs\nFrom: Admin\n\nThe new H.A.R.M. letterhead has arrived! Supply will be picking up the old letterhead later this week for recycling." + IDS_INTEL_25750 "H.A.R.M. Memo: Epsilon Cancellation@To: Professor Hibbard\nFrom: Commander Pim\n\nI understand you have filed a complaint with headquarters about the cancellation of Project: Epsilon. My dear Professor, you cannot possibly consider that mess salvageable. The last thing we need this close to Condition Omega is an overly ambitious, inadequately managed distraction like Epsilon draining our resources and undermining morale." + IDS_INTEL_25751 "UNUSED" + IDS_INTEL_25752 "Note: Robots on umbilicus@URGENT NOTICE!!!\n\nRobots are NOT to be deployed in the umbilicus under any circumstances. Their targeting systems aren't sophisticated enough to distinguish between enemy agents and large fish. I'm sure even the least imaginative of you can predict the consequences of robots shooting at passing sea creatures through the glass." + IDS_INTEL_25753 "UNUSED" + IDS_INTEL_25754 "UNUSED" + IDS_INTEL_25755 "UNUSED" + IDS_INTEL_25756 "UNUSED" + IDS_INTEL_25757 "UNUSED" + IDS_INTEL_25758 "UNUSED" + IDS_INTEL_25759 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25760 "" + IDS_INTEL_25761 "H.A.R.M. Memo: Subject #42@To: Dr. Hall\nFrom: Dr. Kussman\n\nConsidering the enormous expense of developing a Super Soldier, I think the only rational course of action is to attempt a full reconditioning of Subject #42. My research indicates that additional exposures to the solution would tend to have a cumulative effect, so it's quite possible we can still salvage Lt. Anders. It's certainly worth a try!" + IDS_INTEL_25762 "H.A.R.M. Memo: Pods@To: Doctor Hall\nFrom: Maintenance\n\nWe've installed the Test Subject Pods according to your specifications. We're going to be pretty busy this week because of the air conditioning meltdown, so be sure to let us know well in advance (meaning 24 hours, not 15 minutes) if you need alterations." + IDS_INTEL_25763 "H.A.R.M. Memo: Armstrong@To: All Personnel\nFrom: Commander Pim\n\nPlease be advised that the Test Subject Area is off limits to anyone except Groundwork: Omega team members until further notice. We are currently host to two extremely dangerous individuals, but Dr. Hall assures us that they will be as docile as kittens by the end of the week.\n\nRemember what H.A.R.M. stands for!" + IDS_INTEL_25764 "H.A.R.M. Memo: Inoperative Robot@To: Confucius Lee, Robotics Dept.\nFrom: Commander Pim\n\nMr. Lee, I came across an inoperative robot on the crew deck this morning. It seemed to have shorted itself out by jamming a fork into an electrical outlet. Is this behavior normal?" + IDS_INTEL_25765 "H.A.R.M. Memo: Robot Malfunction@To: Commander Pim\nFrom: Confucius Lee, Robotics Dept.\n\nCommander, as you recall, I was instructed to follow Security Chief Fenster's design specification explicitly, which I begrudgingly did. While Chief Fenster was very particular about making the robots invulnerable to small arms fire and even most explosive devices, he didn't think to insulate the circuitry. So they're highly susceptible to electricity. This isn't the first report of a robot suicide. Maybe it's because they weren't accepted for Project: Omega?" + IDS_INTEL_25766 "H.A.R.M. Memo: Services Dept.@To: All Team Leaders\nFrom: Commander Pim\nPriority: TOP SECRET\n\nThis communiqué is to advise you of a meeting this Thursday to discuss the rapidly escalating situation with the Super Computer Services Department. We either need to completely overhaul the new requisition system or hire sixteen new service representatives to handle the workload. Given our already astronomical administrative overhead, staffing up that dramatically isn't really an option." + IDS_INTEL_25767 "Super Computer Manual@Super Computer User Manual, Supplement 18-G" + IDS_INTEL_25768 "UNUSED" + IDS_INTEL_25769 "UNUSED" + IDS_INTEL_25770 "UNUSED" + IDS_INTEL_25771 "Note: Potty break@Taking a potty break. Back in 5 minutes.\n\nSpencer" + IDS_INTEL_25772 "Catalogue request form@REQUISITION FORM 207-B\n\nProduct: Super Computer Services Manual\nItem number: #349295-290948-2934/Z\nHow did you obtain this product number?\n (x) Super Computer Product Services Catalogue\n ( ) from a friend\n ( ) extortion\n ( ) made it up" + IDS_INTEL_25773 "Supercomputer User Manual@Supercomputer User Manual." + IDS_INTEL_25774 "Supercomputer Services Product Catalog@Supercomputer Services Product Catalog." + IDS_INTEL_25775 "H.A.R.M. Memo: Non-payment@To: General Zhukov\nFrom: Erin Keyes, H.A.R.M. Comptroller\n\nPlease be advised that in the event of non-payment of the outstanding balance on your Super Soldier Solution Platinum Plus Package, priced at $1 million U.S. (plus $612.47 for shipping and handling), H.A.R.M. will be authorized to incite Condition Omega at the expense of the Soviet Union, according to the terms of the LOI. If you have already deposited this amount in an offshore account, please disregard this notice.\n\n H.A.R.M. looks forward to future illegal transactions with you!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25776 "H.A.R.M. Memo: Armstrong's fate@To: Commander Pim\nFrom: The Office of the Director\n\nThe Director has decided on a most suitable punishment for Magnus Armstrong, whose moral ambivalence and nationalistic tendencies indirectly led to the dissolution of Project: Lambda and the destruction of the Dumas Alpine chateau. Because his loyalty has proven so inconstant, we shall reinforce it compulsorily... by turning him into a Super Soldier! Transfer him to the labs on sublevel 4 for immediate processing." + IDS_INTEL_25777 "H.A.R.M. Memo: Super Secret Submarine@To: Commander Pim\nFrom: Captain Clayton\n\nThe maiden voyage of the Super Secret Submarine was an unmitigated success (except for a few leaks in the engine room and the fact that we lost power for 15 minutes for no apparent reason). I'm also happy to report that the radar tests far exceeded expectations. We were able to sneak up behind a U.S. warship and weld profanities onto her hull, which should cause an uproar next time she's in dry-dock." + IDS_INTEL_25778 "UNUSED" + IDS_INTEL_25779 "UNUSED" + IDS_INTEL_25780 "" + IDS_INTEL_25781 "H.A.R.M. Memo: Private lounge@To: Commander Pim\nFrom: The Director\n\nCommander, my private lounge is strictly off limits, even to you. Before you stammer out a feeble denial, I had that empty champagne bottle checked for fingerprints. I'm sure you can guess whose they were. That lounge is my escape pod in the event of a base emergency, Commander. If I have to spend hours waiting to be rescued, I don't want to do so amidst someone else's detritus." + IDS_INTEL_25782 "Letter: Epsilon rumor@Wes,\n\nHave you heard the rumor about Epsilon? Better break out the resume! I heard M.A.L.A.D.Y. is hiring. Don't you know someone over there? I thought you could put in a good word for me.\n\nJames" + IDS_INTEL_25783 "Letter: Epsilon rumor untrue@James,\n\nDon't be so gullible! Project: Epsilon is going to be a great success! Professor Hibbard assures me the rumors are untrue, and I believe him!\n\nWes" + IDS_INTEL_25784 "UNUSED" + IDS_INTEL_25785 "UNUSED" + IDS_INTEL_25786 "Complaint form@H.A.R.M. EMPLOYEE COMPLAINT FORM\nReason for complaint: Employee bonding sessions.\nComments: Ever since this whole reorganization started, this outfit has been going downhill. First it was the uniforms. Then the logo. Then that whole trademark issue with Hair Alternative Replacement for Men or whatever it was called. Now we gotta get up at 6am for daily ""bonding"" sessions? Count me out!\nComplaint filed by: Ha ha, nice try!" + IDS_INTEL_25787 "Maintenance Checklist@MAINTENANCE CHECKLIST:\n\n (x) Leaky Pipe Fittings\n (x) Fire hazards\n (x) Sub-standard storage of chemicals\n (x) Slippery walkways" + IDS_INTEL_25788 "Photograph of Super Sub@" + IDS_INTEL_25789 "H.A.R.M. Memo: Epsilon terminations@To: All Personnel\nFrom: Commander Pim\n\nThe Project: Epsilon team has been terminated for gross incompetence. Note that you may see them floating outside portholes, so don't be alarmed.\n\nLet this be a reminder that we need to do a better job of screening applicants!\n\nRemember what H.A.R.M. stands for!" + IDS_INTEL_25790 "UNUSED" + IDS_INTEL_25791 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25792 "" + IDS_INTEL_25793 "" + IDS_INTEL_25794 "" + IDS_INTEL_25795 "" + IDS_INTEL_25796 "" + IDS_INTEL_25797 "" + IDS_INTEL_25798 "" + IDS_INTEL_25799 "" + IDS_INTEL_25800 "" + IDS_INTEL_25801 "H.A.R.M. Memo: Our American friend@To: Commander Pim\nFrom: The Director\n\nAccording to our zealous American friend, the U.S. is extremely eager to incite a nuclear war at the earliest possible juncture. Only a motive is lacking. He greeted our modest proposal with great delight. I think we've found the ideal ally." + IDS_INTEL_25802 "H.A.R.M. Memo: Robots@To: Confucius Lee\nFrom: Hugo Madmiller\n\nSir, I'm at the end of my rope. Every time somebody has a problem with one of these stupid robots, I get lectured. Today, I had to listen to Keith Stevens tell me about the robots he designed when he was working at Murderlicious. I tried telling him we didn't design the robots, but he just kept pushing me. I wanted to sock him right in the mouth." + IDS_INTEL_25803 "H.A.R.M. Memo: Robots@To: J.P. Fenster, Security Chief\nFrom: Confucius Lee, Robotics Dept.\n\nI've started forwarding complaints about the Super Robots to the Office of the Director, along with your original design specifications. I think you'll find that your pathetic conspiracy to indict me for the Robots' shortcomings doesn't hold up to scrutiny. Before you submit your next spec (assuming you live that long), maybe you should MEASURE THE BULKHEADS TO MAKE SURE THE ROBOTS CAN FIT THROUGH, IDIOT!!!" + IDS_INTEL_25804 "Letter: Rumor?@Bill,\n\nIs it true what happened in India? And now Epsilon? What this outfit needs is a union!\n\nRhett" + IDS_INTEL_25805 "UNUSED" + IDS_INTEL_25806 "Note: Robots and water@ATTENTION ALL PERSONNEL:\n\nThanks to Security Chief Fenster's shrewd design specifications, the Super Robots will malfunction at about 60 percent humidity. I probably don't have to point out, therefore, that direct contact with water is a VERY BAD IDEA. Keep Robots away from damp areas." + IDS_INTEL_25807 "Letter: Martha's answer@Clark,\n\nMother forwarded your letter to me. You must take me for a fool. Return to you? After the way you abandoned me in Morocco? I was devastated, Clark. I wandered in the desert for weeks, delirious with grief, until Berber nomads found me on the verge of starvation near Merzouga. Clark, I fell in love with the desert. The void left in my heart by your lies and deception has been filled by reverence for the great Sahara. It's more of a companion than you ever were.\n\nMartha" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25808 "H.A.R.M. Memo: CT-180@To: Commander Pim\nFrom: Crewman Miller\n\nI am unable to finish my analysis of the UNITY CT-180. I seem to have glued the ammo casing to my desk. Maintenance has been notified and I hope to be up and running again by tomorrow." + IDS_INTEL_25809 "H.A.R.M. Memo: Magnus Armstrong@To: Security\nFrom: Commander Pim\n\nThe Director will be arriving later today. He'll probably want to gloat over Armstrong, so make sure to have a security detail standing by. We don't want any unfortunate accidents." + IDS_INTEL_25810 "" + IDS_INTEL_25811 "" + IDS_INTEL_25812 "" + IDS_INTEL_25813 "" + IDS_INTEL_25814 "" + IDS_INTEL_25815 "" + IDS_INTEL_25816 "" + IDS_INTEL_25817 "" + IDS_INTEL_25818 "" + IDS_INTEL_25819 "" + IDS_INTEL_25820 "" + IDS_INTEL_25821 "" + IDS_INTEL_25822 "" + IDS_INTEL_25823 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25824 "" + IDS_INTEL_25825 "" + IDS_INTEL_25826 "" + IDS_INTEL_25827 "" + IDS_INTEL_25828 "" + IDS_INTEL_25829 "" + IDS_INTEL_25830 "" + IDS_INTEL_25831 "" + IDS_INTEL_25832 "" + IDS_INTEL_25833 "" + IDS_INTEL_25834 "" + IDS_INTEL_25835 "" + IDS_INTEL_25836 "" + IDS_INTEL_25837 "" + IDS_INTEL_25838 "" + IDS_INTEL_25839 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25840 "" + IDS_INTEL_25841 "" + IDS_INTEL_25842 "" + IDS_INTEL_25843 "" + IDS_INTEL_25844 "" + IDS_INTEL_25845 "" + IDS_INTEL_25846 "" + IDS_INTEL_25847 "" + IDS_INTEL_25848 "" + IDS_INTEL_25849 "" + IDS_INTEL_25850 "" + IDS_INTEL_25851 "" + IDS_INTEL_25852 "" + IDS_INTEL_25853 "" + IDS_INTEL_25854 "" + IDS_INTEL_25855 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25856 "" + IDS_INTEL_25857 "" + IDS_INTEL_25858 "" + IDS_INTEL_25859 "" + IDS_INTEL_25860 "" + IDS_INTEL_25861 "H.A.R.M. Memo: Positive thinking@To: All personnel\nFrom: Megan O'Malledy, Morale Officer\n\nI realize that we're in a mean, hurtful industry that prides itself on causing destruction and misery, but that's no excuse for negativity. I've been hearing a lot of grumbling lately. I know some of you didn't like the uniforms I designed. Or the new logo. That's fine, really. My feelings aren't hurt. I just put on my happy face and everything is A-OK. When people throw me a frown, I catch it and turn it upside down. You heartless bastards. I hope you all rot in hell." + IDS_INTEL_25862 "" + IDS_INTEL_25863 "" + IDS_INTEL_25864 "" + IDS_INTEL_25865 "" + IDS_INTEL_25866 "" + IDS_INTEL_25867 "" + IDS_INTEL_25868 "" + IDS_INTEL_25869 "" + IDS_INTEL_25870 "" + IDS_INTEL_25871 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25872 "" + IDS_INTEL_25873 "" + IDS_INTEL_25874 "" + IDS_INTEL_25875 "" + IDS_INTEL_25876 "" + IDS_INTEL_25877 "" + IDS_INTEL_25878 "" + IDS_INTEL_25879 "" + IDS_INTEL_25880 "" + IDS_INTEL_25881 "Last Will and Testament@Last Will and Testament\n\nI, Frank J. Thompson, being of sound mind and body, do hereby bequeath my car and my comic book collection to my nephew, Chuck. The $5,000 in cash under my mattress goes to Mom to cover my rent for last year. Sorry it's so late, Ma. To my useless brother Larry, I leave NOTHING! On second thought, Lar, I leave you this piece of advice: get yourself a life, 'cause you ain't getting what's left over from mine!" + IDS_INTEL_25882 "Love letter@Fred,\n\nI've always loved you.\n\nGordon" + IDS_INTEL_25883 "" + IDS_INTEL_25884 "" + IDS_INTEL_25885 "" + IDS_INTEL_25886 "" + IDS_INTEL_25887 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25888 "" + IDS_INTEL_25889 "" + IDS_INTEL_25890 "" + IDS_INTEL_25891 "" + IDS_INTEL_25892 "" + IDS_INTEL_25893 "" + IDS_INTEL_25894 "" + IDS_INTEL_25895 "" + IDS_INTEL_25896 "" + IDS_INTEL_25897 "" + IDS_INTEL_25898 "" + IDS_INTEL_25899 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25920 "" + IDS_INTEL_25921 "Letter: Uncle Winston@Dear Eustace,\n\nI haven't been able to reach you on the phone since yesterday afternoon, so I'm forced to write instead. I spoke with Uncle Winston today. He's feeling much better after passing the kidney stone. The doctor said it was as big as the Hope Diamond. I'm sure he'd appreciate a call from his favorite nephew, but I suppose that's too much to ask.\n\nYour Mother" + IDS_INTEL_25922 "Letter: Felicia Pullbutter@Dear Eustace,\n\nI ran into Shirley Pullbutter at the Club last night. She had some VERY intriguing news about Felicia. It seems her husband, that dreadful boor from Edinburgh, hung himself in the cellar last month, which means Felicia's single again! I know you've always found her rather homely, but you haven't seen her since the electrolysis and dental surgery. Her sideburns are much less prominent and she can even get her mouth most of the way closed.\n\nYour Mother" + IDS_INTEL_25923 "Note: Man-Handler operation@ALL PERSONNEL\n\nMake sure the Man-Handler has had ample time to warm up before operating or its contents may spontaneously reflux. Last week's incident took several days to clean up.\n\nA service technician has been called, but please show some consideration in the meantime." + IDS_INTEL_25924 "H.A.R.M. Document: PR plan page 1@CONFIDENTIAL - Director's Eyes Only\n\nRe: Revised PR Plan: Print\n\nStarting in May, we'll be running full page ads in Criminality Monthly and Maximum Villain Magazine. We've also got gun-point interviews scheduled for several European newspapers, as well as a batch of death threats and extortion letters for the U.S. press.\n\nWe'll be submitting our Radio and Television PR schedules separately." + IDS_INTEL_25925 "H.A.R.M. Memo: Hygiene@To: Human Resources\nFrom: Associate Commander Saperstein\n\nHenchman Frankel's body odor is beginning to affect morale. I've had two men inquiring about transfers in the past three days." + IDS_INTEL_25926 "H.A.R.M. Memo: Hygiene@To: All employees\nFrom: Human Resources\n\nStarting next Tuesday, we have arranged for mandatory laundry service for all secret lair henchman. Drop laundry in cavern D by 9am. Failure to comply will result in a 50 percent salary penalty for the week. Please consider your colleagues' comfort and welfare and remember that we work in a poorly ventilated subterranean environment. Thank you for your assistance." + IDS_INTEL_25927 "H.A.R.M. Document: PR plan page 2@CONFIDENTIAL - Director's Eyes Only\n\nRe: Revised PR Plan: Radio\n\nOur radio schedule is a little lighter than last year, but we've got a couple of exciting events planned. First is a guest appearance we've arranged for you on the Mark Mulroy talk radio show. You'll need to bring along a firearm to get a word in edgewise, but it should be good exposure. Also, we just acquired K.H.R.M. radio station in Anaheim. The new format will be surf music with subliminal messages." + IDS_INTEL_25928 "H.A.R.M. Document: PR plan page 3@CONFIDENTIAL - Director's Eyes Only\n\nRe: Revised PR Plan: Television\n\nTelevision once again forms the bedrock of our PR efforts. This coming quarter alone, we've lined up five morning, seven prime time, and two late night interruptions of broadcasting service to deliver Doomsday messages. We also think we might have finagled an appearance for you on The Tonight Show, including five full minutes for your stand-up routine." + IDS_INTEL_25929 "Letter: Reclusiveness@Dear Eustace,\n\nPlease don't tell me you're slipping into another one of your reclusive phases. I can't stand you when you're emotionally unavailable. It's times like these I think I'd have been better off getting myself a sheepdog than bearing a son. Dogs are stupid and unhygienic, but at least they show some appreciation.\n\nYour Mother\n\nP.S. Aunt Phyllis sends her love." + IDS_INTEL_25930 "Invasion plan, part I@Khios Invasion Plan\n\nWe have completed our tactical analysis of the Khios situation and have determined the following:\n\nPart I. Arrival\nThere is only one way onto the island by sea: Through a cave that climbs from a tiny beach on the western coast to the cliffs above. It's a treacherous route, but with the Super Soldiers advancing ahead of us, we will slice through any defenses we encounter. The Super Secret Submarine should be able to pull right up alongside the beach for easy disembarkation." + IDS_INTEL_25931 "Invasion plan, part II@Khios Invasion Plan\n\nPart II. Attack\nHistorically, the inhabitants of Khios have been able to rely on the overwhelming tactical advantage afforded by the island's unforgiving terrain. No conventional invasion force has ever come close to making the long, treacherous climb from the shore. All the defenders have to do is pour some boiling oil down the stairwell and the assault is over. Our Super Soldiers will render any such tactics useless and allow us to quickly crush any organized resistance." + IDS_INTEL_25932 "Invasion plan, part III@Khios Invasion Plan\n\nPart III. Occupation\nOnce the island has been secured, we will begin Operation Occupation Nation Emancipation Initiation. Phase One starts with a thorough inventory of the island's surviving residents, followed by Phase Two, in which we sell them all to a pharmaceutical company for medical experimentation. For Phase Three, we'll issue a statement to the international press announcing the establishment of the H.A.R.M. Happy Adventure Theme Park Island." + IDS_INTEL_25933 "" + IDS_INTEL_25934 "" + IDS_INTEL_25935 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25936 "" + IDS_INTEL_25937 "" + IDS_INTEL_25938 "" + IDS_INTEL_25939 "" + IDS_INTEL_25940 "" + IDS_INTEL_25941 "H.A.R.M. Memo: Assassins@To: Dmitrij Volkov\nFrom: The Director\n\nWell, your mime solution was every bit as much of a fiasco as I predicted. Not that Isako was any better. I'm starting to question her value to the organization. We should have brought in the Australian." + IDS_INTEL_25942 "H.A.R.M. Memo: Surprise visit@To: Associate Commander Gudmundson\nFrom: Carly Isadora Tehore, Activities Coordinator\n\nCODE RED ALERT\n\nI just got off the phone with the Director's mother. She's planning a surprise visit from next week until sometime in October and wants me to prepare the guest house for her. I offered to book her tickets for her, but she said she doesn't want to end up in Burma this time. What should I do?" + IDS_INTEL_25943 "H.A.R.M. Memo: Director's Mother@To: Carly Isadora Tehore, Activities Coordinator\nFrom: Associate Commander Gudmundson\n\nThere's no need for panic. We have contingency plans for emergencies such as this. According to my records, we averted the last visit with Excuse 47: Company Holiday in East Detroit. This time I think we're going to need to skip down to Excuse 66: Quarantine Due to Outbreak of Scarlet Fever." + IDS_INTEL_25944 "" + IDS_INTEL_25945 "" + IDS_INTEL_25946 "" + IDS_INTEL_25947 "" + IDS_INTEL_25948 "" + IDS_INTEL_25949 "" + IDS_INTEL_25950 "" + IDS_INTEL_25951 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25952 "" + IDS_INTEL_25953 "" + IDS_INTEL_25954 "" + IDS_INTEL_25955 "" + IDS_INTEL_25956 "" + IDS_INTEL_25957 "" + IDS_INTEL_25958 "" + IDS_INTEL_25959 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25980 "" + IDS_INTEL_25981 "" + IDS_INTEL_25982 "" + IDS_INTEL_25983 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25984 "" + IDS_INTEL_25985 "" + IDS_INTEL_25986 "" + IDS_INTEL_25987 "" + IDS_INTEL_25988 "" + IDS_INTEL_25989 "" + IDS_INTEL_25990 "Memo: Anti-Super Soldier Serum@Dear Cate,\n\nYou can equip these Anti-Super Soldier Serum capsules in your CT-180 Utility Launcher. Unfortunately, it isn't concentrated enough to destroy an active target, but you can knock Super Soldiers out temporarily by inflicting enough damage. Shoot them with the serum while they are powered down. Be quick or they'll recover and you'll have to knock them out again!\n\nSincerely,\nDr. Schenker" + IDS_INTEL_25991 "" + IDS_INTEL_25992 "" + IDS_INTEL_25993 "" + IDS_INTEL_25994 "" + IDS_INTEL_25995 "" + IDS_INTEL_25996 "" + IDS_INTEL_25997 "" + IDS_INTEL_25998 "" + IDS_INTEL_25999 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26200 "" + IDS_INTEL_26201 "Letter: Apartment keys@Dearest Phoolwati,\n\nI pray to blessed Kaamdhenu Vidya, the sacred cow, that you will meet me again. I left the keys to the apartment in the usual place. How I am longing to see you!\n\nLove, Balaji\n" + IDS_INTEL_26202 "Letter: Flowers@Balaji dear,\n\nHow I have missed you, my sweet! Will you meet me later at my apartment? I'm cooking lamb tika masala with mint chutney.\n\nPhoolwati\n\nP.S. Please don't pick flowers for me from my planter box downstairs. I appreciate the sentiment, but my lovely white carnations won't flourish if they're constantly molested.\n" + IDS_INTEL_26203 "" + IDS_INTEL_26204 "" + IDS_INTEL_26205 "" + IDS_INTEL_26206 "" + IDS_INTEL_26207 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26208 "" + IDS_INTEL_26209 "" + IDS_INTEL_26210 "" + IDS_INTEL_26211 "" + IDS_INTEL_26212 "" + IDS_INTEL_26213 "" + IDS_INTEL_26214 "" + IDS_INTEL_26215 "" + IDS_INTEL_26216 "" + IDS_INTEL_26217 "" + IDS_INTEL_26218 "" + IDS_INTEL_26219 "" + IDS_INTEL_26220 "" + IDS_INTEL_26221 "" + IDS_INTEL_26222 "" + IDS_INTEL_26223 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26224 "" + IDS_INTEL_26225 "" + IDS_INTEL_26226 "" + IDS_INTEL_26227 "" + IDS_INTEL_26228 "" + IDS_INTEL_26229 "" + IDS_INTEL_26230 "" + IDS_INTEL_26231 "" + IDS_INTEL_26232 "" + IDS_INTEL_26233 "" + IDS_INTEL_26234 "" + IDS_INTEL_26235 "" + IDS_INTEL_26236 "" + IDS_INTEL_26237 "" + IDS_INTEL_26238 "" + IDS_INTEL_26239 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26240 "" + IDS_INTEL_26241 "H.A.R.M. Memo: Prisoners@To: Dr. Kussman\n\nThe Director has asked that all prisoners be transferred to our underwater facility in the Aegean Sea. Please contact HR for specific details.\n" + IDS_INTEL_26242 "" + IDS_INTEL_26243 "" + IDS_INTEL_26244 "" + IDS_INTEL_26245 "" + IDS_INTEL_26246 "" + IDS_INTEL_26247 "" + IDS_INTEL_26248 "" + IDS_INTEL_26249 "" + IDS_INTEL_26250 "" + IDS_INTEL_26251 "" + IDS_INTEL_26252 "" + IDS_INTEL_26253 "" + IDS_INTEL_26254 "" + IDS_INTEL_26255 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26256 "" + IDS_INTEL_26257 "" + IDS_INTEL_26258 "" + IDS_INTEL_26259 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26359 "" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5520 + "Look for appropriate targets and plant 4 sets of explosives. " + IDS_COOP_MISSION_OBJ_5521 + "Look for appropriate targets and plant 3 sets of explosives. " + IDS_COOP_MISSION_OBJ_5522 + "Look for appropriate targets and plant 2 sets of explosives. " + IDS_COOP_MISSION_OBJ_5523 + "Look for appropriate targets and plant 1 explosive. " + IDS_COOP_MISSION_OBJ_5524 "Return to the extraction point for retrieval." + IDS_COOP_MISSION_OBJ_5525 "The mimes have taken 4 hostages. Save them." + IDS_COOP_MISSION_OBJ_5526 "The mimes have 3 hostages. Save them." + IDS_COOP_MISSION_OBJ_5527 "The mimes have 2 hostages. Save them." + IDS_COOP_MISSION_OBJ_5528 "The mimes have 1 hostage. Save him." + IDS_COOP_MISSION_OBJ_5529 + "Meet at the extraction point in the lobby to receive your next mission." + IDS_COOP_MISSION_OBJ_5530 + "Collect 50 rupees and pay Crazy Harij to let you through the gates into the inner part of the city." + IDS_COOP_MISSION_OBJ_5531 "Get to the UNITY helicopter for extraction." + IDS_COOP_MISSION_OBJ_5532 "Cate is dead! Mission Failed!" + IDS_COOP_MISSION_OBJ_5533 "" + IDS_COOP_MISSION_OBJ_5534 "" + IDS_COOP_MISSION_OBJ_5535 "" +END + +STRINGTABLE +BEGIN + IDS_STRING5577 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3500 "" + IDS_SEARCH_ITEM_3501 "You found a pencil." + IDS_SEARCH_ITEM_3502 "You found an empty mouse trap." + IDS_SEARCH_ITEM_3503 "You've found some paper clips." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3504 "You've found a moldy ham sandwich." + IDS_SEARCH_ITEM_3505 "You found a mouse trap with a dead mouse in it." + IDS_SEARCH_ITEM_3506 "You found a tattered comic book." + IDS_SEARCH_ITEM_3507 "You found a file of blank paper." + IDS_SEARCH_ITEM_3508 "You found a box of tissues." + IDS_SEARCH_ITEM_3509 "You found a bottle of hair tonic." + IDS_SEARCH_ITEM_3510 "You found some lipstick." + IDS_SEARCH_ITEM_3511 "You found some stockings." + IDS_SEARCH_ITEM_3512 "You found a pack of gum." + IDS_SEARCH_ITEM_3513 "You found an eraser." + IDS_SEARCH_ITEM_3514 "You found a pencil with the eraser chewed off." + IDS_SEARCH_ITEM_3515 "You found a small bottle of gin." + IDS_SEARCH_ITEM_3516 "You found a jammed stapler." + IDS_SEARCH_ITEM_3517 "You found an office supply catalog." + IDS_SEARCH_ITEM_3518 "You found notebooks filled with doodles." + IDS_SEARCH_ITEM_3519 "You found a stale, half-eaten doughnut." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3520 "You found a plastic fork." + IDS_SEARCH_ITEM_3521 "You found left-handed scissors." + IDS_SEARCH_ITEM_3522 "You found a box of thumb tacks." + IDS_SEARCH_ITEM_3523 "You found six black pens, all dry." + IDS_SEARCH_ITEM_3524 "You found a bottle of aspirin." + IDS_SEARCH_ITEM_3525 "You found a permanent marker with no cap." + IDS_SEARCH_ITEM_3526 "You found an unused stick of deodorant." + IDS_SEARCH_ITEM_3527 "You found a pack of spearmint breath mints." + IDS_SEARCH_ITEM_3528 "You found a rubber stamp with no handle." + IDS_SEARCH_ITEM_3529 "You found a wedge of moldy cheese." + IDS_SEARCH_ITEM_3530 "You found a crushed paper airplane." + IDS_SEARCH_ITEM_3531 "You found a bottle of hand cream." + IDS_SEARCH_ITEM_3532 "You found a dirty toothbrush." + IDS_SEARCH_ITEM_3533 "" + IDS_SEARCH_ITEM_3534 "" + IDS_SEARCH_ITEM_3535 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3536 "" + IDS_SEARCH_ITEM_3537 "" + IDS_SEARCH_ITEM_3538 "" + IDS_SEARCH_ITEM_3539 "" + IDS_SEARCH_ITEM_3540 "" + IDS_SEARCH_ITEM_3541 "" + IDS_SEARCH_ITEM_3542 "" + IDS_SEARCH_ITEM_3543 "" + IDS_SEARCH_ITEM_3544 "" + IDS_SEARCH_ITEM_3545 "" + IDS_SEARCH_ITEM_3546 "" + IDS_SEARCH_ITEM_3547 "" + IDS_SEARCH_ITEM_3548 "" + IDS_SEARCH_ITEM_3549 "" + IDS_SEARCH_ITEM_3550 "" + IDS_SEARCH_ITEM_3551 "You found a U.S. Tax Return dated 1958." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3552 "You found a stack of love letters." + IDS_SEARCH_ITEM_3553 "You found a Personal Conduct Manual." + IDS_SEARCH_ITEM_3554 "You found 387 page set of divorce papers." + IDS_SEARCH_ITEM_3555 "You found a vacation request form." + IDS_SEARCH_ITEM_3556 "You found someone's Last Will and Testament." + IDS_SEARCH_ITEM_3557 "You found an unfinished novel." + IDS_SEARCH_ITEM_3558 "" + IDS_SEARCH_ITEM_3559 "" + IDS_SEARCH_ITEM_3560 "" + IDS_SEARCH_ITEM_3561 "" + IDS_SEARCH_ITEM_3562 "" + IDS_SEARCH_ITEM_3563 "" + IDS_SEARCH_ITEM_3564 "" + IDS_SEARCH_ITEM_3565 "" + IDS_SEARCH_ITEM_3566 "" + IDS_SEARCH_ITEM_3567 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3568 "" + IDS_SEARCH_ITEM_3569 "" + IDS_SEARCH_ITEM_3570 "" + IDS_SEARCH_ITEM_3571 "" + IDS_SEARCH_ITEM_3572 "" + IDS_SEARCH_ITEM_3573 "" + IDS_SEARCH_ITEM_3574 "" + IDS_SEARCH_ITEM_3575 "" + IDS_SEARCH_ITEM_3576 "You found an autographed photograph of The Amazing Olga." + IDS_SEARCH_ITEM_3577 "You found a hand bill for The Amazing Olga and her Flying Felines." + IDS_SEARCH_ITEM_3578 "You found the novel Unkle Vanya by Anton Chekhov." + IDS_SEARCH_ITEM_3579 "You found a grocery list for toilet paper, soap, and carrots." + IDS_SEARCH_ITEM_3580 "You found a receipt for army rations." + IDS_SEARCH_ITEM_3581 "You found the novel That in Aleppo Once... by Vladimir Nabokov." + IDS_SEARCH_ITEM_3582 "You found the novel Taras Bulba by Nikolay Gogol." + IDS_SEARCH_ITEM_3583 "You found the poem, Venus and Madonna by Mihai Eminescu." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3584 "You found an autographed photograph of the Flying Felines." + IDS_SEARCH_ITEM_3585 "" + IDS_SEARCH_ITEM_3586 "" + IDS_SEARCH_ITEM_3587 "" + IDS_SEARCH_ITEM_3588 "" + IDS_SEARCH_ITEM_3589 "" + IDS_SEARCH_ITEM_3590 "" + IDS_SEARCH_ITEM_3591 "" + IDS_SEARCH_ITEM_3592 "" + IDS_SEARCH_ITEM_3593 "" + IDS_SEARCH_ITEM_3594 "" + IDS_SEARCH_ITEM_3595 "" + IDS_SEARCH_ITEM_3596 "" + IDS_SEARCH_ITEM_3597 "" + IDS_SEARCH_ITEM_3598 "" + IDS_SEARCH_ITEM_3599 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3600 "" + IDS_SEARCH_ITEM_3601 "You found a bottle of vodka." + IDS_SEARCH_ITEM_3602 "You found a set of Siberian Hockey League Trading Cards." + IDS_SEARCH_ITEM_3603 "You found a tin of meat." + IDS_SEARCH_ITEM_3604 "You found a magazine called Comrades Without Clothes." + IDS_SEARCH_ITEM_3605 "You found a raffle ticket for a vacation to beautiful downtown Murmansk!" + IDS_SEARCH_ITEM_3606 "You found a rubber stamp of the word DENIED." + IDS_SEARCH_ITEM_3607 "You found one red mitten." + IDS_SEARCH_ITEM_3608 "You found a pack of Yugoslavian cigarettes." + IDS_SEARCH_ITEM_3609 "You found a lighter that doesn't work." + IDS_SEARCH_ITEM_3610 "You found a dead puffin." + IDS_SEARCH_ITEM_3611 "You found a tattered copy of War and Peace." + IDS_SEARCH_ITEM_3612 "You found an army Rules of Conduct manual." + IDS_SEARCH_ITEM_3613 "You found an autographed photograph of a tractor." + IDS_SEARCH_ITEM_3614 "You found some lint." + IDS_SEARCH_ITEM_3615 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3616 "" + IDS_SEARCH_ITEM_3617 "" + IDS_SEARCH_ITEM_3618 "" + IDS_SEARCH_ITEM_3619 "" + IDS_SEARCH_ITEM_3620 "" + IDS_SEARCH_ITEM_3621 "" + IDS_SEARCH_ITEM_3622 "" + IDS_SEARCH_ITEM_3623 "" + IDS_SEARCH_ITEM_3624 "" + IDS_SEARCH_ITEM_3625 "" + IDS_SEARCH_ITEM_3626 "You found a pack of breath mints." + IDS_SEARCH_ITEM_3627 "You found a wad of chewed gum." + IDS_SEARCH_ITEM_3628 "You found a ball of lint." + IDS_SEARCH_ITEM_3629 "You found a yo-yo." + IDS_SEARCH_ITEM_3630 "You found a movie ticket stub." + IDS_SEARCH_ITEM_3631 "You found a rotten apple." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3632 "You found a pocket knife." + IDS_SEARCH_ITEM_3633 "You found a shopping list." + IDS_SEARCH_ITEM_3634 "You found a plastic comb." + IDS_SEARCH_ITEM_3635 "You found a Dear John letter." + IDS_SEARCH_ITEM_3636 "You found a used handkerchief." + IDS_SEARCH_ITEM_3637 "You found a crumpled piece of paper." + IDS_SEARCH_ITEM_3638 "You found a pair of dice." + IDS_SEARCH_ITEM_3639 "You found a deck of cards." + IDS_SEARCH_ITEM_3640 "You found several dirty vitamins." + IDS_SEARCH_ITEM_3641 "You found a half-chewed cough drop, cherry flavor." + IDS_SEARCH_ITEM_3642 "You found a menthol cough drop." + IDS_SEARCH_ITEM_3643 "You found a wad of facial tissue used by someone with a nasty cold." + IDS_SEARCH_ITEM_3644 "You found a fist sized ball of aluminum foil." + IDS_SEARCH_ITEM_3645 "You found a picture of someone's ugly baby." + IDS_SEARCH_ITEM_3646 "You found a candy wrapper." + IDS_SEARCH_ITEM_3647 "You found some eyelash curlers." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3648 "You found a broken rubber band." + IDS_SEARCH_ITEM_3649 "You found a plastic army soldier." + IDS_SEARCH_ITEM_3650 "You found a tooth." + IDS_SEARCH_ITEM_3651 "You found some toenail clippings." + IDS_SEARCH_ITEM_3652 "You found some marbles." + IDS_SEARCH_ITEM_3653 "You found some used dental floss." + IDS_SEARCH_ITEM_3654 "You found a lucky rabbit's foot." + IDS_SEARCH_ITEM_3655 "You found a loose button." + IDS_SEARCH_ITEM_3656 "You've found some bread crumbs." + IDS_SEARCH_ITEM_3657 "" + IDS_SEARCH_ITEM_3658 "" + IDS_SEARCH_ITEM_3659 "" + IDS_SEARCH_ITEM_3660 "" + IDS_SEARCH_ITEM_3661 "You found a pink mitten." + IDS_SEARCH_ITEM_3662 "You found some fish oil lip balm." + IDS_SEARCH_ITEM_3663 "You found a ticket to The Amazing Olga and her Flying Felines Sunday matinee performance." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3664 "You found a piroshki." + IDS_SEARCH_ITEM_3665 "" + IDS_SEARCH_ITEM_3666 "" + IDS_SEARCH_ITEM_3667 "" + IDS_SEARCH_ITEM_3668 "" + IDS_SEARCH_ITEM_3669 "" + IDS_SEARCH_ITEM_3670 "" + IDS_SEARCH_ITEM_3671 "" + IDS_SEARCH_ITEM_3672 "" + IDS_SEARCH_ITEM_3673 "" + IDS_SEARCH_ITEM_3674 "" + IDS_SEARCH_ITEM_3675 "" + IDS_SEARCH_ITEM_3676 "" + IDS_SEARCH_ITEM_3677 "" + IDS_SEARCH_ITEM_3678 "" + IDS_SEARCH_ITEM_3679 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3680 "" + IDS_SEARCH_ITEM_3681 "You've found some loose Go pieces." + IDS_SEARCH_ITEM_3682 "You found some strawberry flavored candy sticks. Yum!" + IDS_SEARCH_ITEM_3683 "You found a crushed cherry blossom." + IDS_SEARCH_ITEM_3684 "You've found some lipstick." + IDS_SEARCH_ITEM_3685 "You found a barrette." + IDS_SEARCH_ITEM_3686 "You found a tube of lip gloss." + IDS_SEARCH_ITEM_3687 "You found a ticket to the movie Kaiju Soshingeki." + IDS_SEARCH_ITEM_3688 "You found a set of false eyelashes." + IDS_SEARCH_ITEM_3689 "You found a credit card." + IDS_SEARCH_ITEM_3690 "You found a vial of tsubaki perfume." + IDS_SEARCH_ITEM_3691 "You found a cracked mirror." + IDS_SEARCH_ITEM_3692 "You found a wooden charm to ward against evil." + IDS_SEARCH_ITEM_3693 "You found a lace handkerchief." + IDS_SEARCH_ITEM_3694 "You found a gold charm to ensure good health." + IDS_SEARCH_ITEM_3695 "You found a silver charm to ensure luck in love." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3696 "You found a slightly melted red bean paste candy." + IDS_SEARCH_ITEM_3697 "You've found a moldy piece of ebi nigiri wrapped in a napkin." + IDS_SEARCH_ITEM_3698 "You found an empty coin case." + IDS_SEARCH_ITEM_3699 "" + IDS_SEARCH_ITEM_3700 "" + IDS_SEARCH_ITEM_3701 "You found a bottle of Master Chi's Super Orange Cleanser." + IDS_SEARCH_ITEM_3702 "You found a calligraphy pen." + IDS_SEARCH_ITEM_3703 "You found a small sewing kit." + IDS_SEARCH_ITEM_3704 "You've found a half eaten loaf of shoku pan." + IDS_SEARCH_ITEM_3705 "You found a wasabi root." + IDS_SEARCH_ITEM_3706 "You found a bottle of soy sauce." + IDS_SEARCH_ITEM_3707 "" + IDS_SEARCH_ITEM_3708 "" + IDS_SEARCH_ITEM_3709 "" + IDS_SEARCH_ITEM_3710 "" + IDS_SEARCH_ITEM_3711 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3712 "" + IDS_SEARCH_ITEM_3713 "" + IDS_SEARCH_ITEM_3714 "" + IDS_SEARCH_ITEM_3715 "" + IDS_SEARCH_ITEM_3716 "" + IDS_SEARCH_ITEM_3717 "" + IDS_SEARCH_ITEM_3718 "" + IDS_SEARCH_ITEM_3719 "" + IDS_SEARCH_ITEM_3720 "" + IDS_SEARCH_ITEM_3721 "You found a monogrammed handkerchief." + IDS_SEARCH_ITEM_3722 "You found a pouch of chewing tobacco." + IDS_SEARCH_ITEM_3723 "You found a cricket score card." + IDS_SEARCH_ITEM_3724 "You found a picture of Shasti, the Bengali feline goddess and protectress of children." + IDS_SEARCH_ITEM_3725 "A carved figure of Lakshmi, the goddess of prosperity and wealth." + IDS_SEARCH_ITEM_3726 "You found a picture of Durga, goddess of happy married life." + IDS_SEARCH_ITEM_3727 "A picture of Kartikeya, the second son of Lord Shiva, and god of war and destruction." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3728 "You found a picture of the goddess Gauri, guaranteed to bring a young girl a virtuous husband." + IDS_SEARCH_ITEM_3729 "A prayer charm for Angaraka to free the bearer from debts and illness afflicting the skin. " + IDS_SEARCH_ITEM_3730 "You found some loose cardamom pods." + IDS_SEARCH_ITEM_3731 "A statue of Kaamdhenu, the holy cow that grants wishes." + IDS_SEARCH_ITEM_3732 "A small charm of the four hand Saraswati in silver, playing the Veena." + IDS_SEARCH_ITEM_3733 "You found a batik handkerchief." + IDS_SEARCH_ITEM_3734 "You found a rotten tamarind." + IDS_SEARCH_ITEM_3735 "You found a half-eaten koorka." + IDS_SEARCH_ITEM_3736 "" + IDS_SEARCH_ITEM_3737 "" + IDS_SEARCH_ITEM_3738 "" + IDS_SEARCH_ITEM_3739 "" + IDS_SEARCH_ITEM_3740 "" + IDS_SEARCH_ITEM_3741 "You found a jar of Nutella." + IDS_SEARCH_ITEM_3742 "You found a deck of Teen Pathi cards." + IDS_SEARCH_ITEM_3743 "You found a bottle of coconut oil." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3744 "You found a jar of face powder." + IDS_SEARCH_ITEM_3745 "You found a stuffed loris." + IDS_SEARCH_ITEM_3746 "You found a pot of henna powder and mehendi oil." + IDS_SEARCH_ITEM_3747 "You found a moldy bowl of Mutton Patialashahi." + IDS_SEARCH_ITEM_3748 "You found a bag of basmati rice filled with weevils." + IDS_SEARCH_ITEM_3749 "You found a book entitled, Atithi Devo Bhava." + IDS_SEARCH_ITEM_3750 "You found a pair of Gilli Danda sticks." + IDS_SEARCH_ITEM_3751 "You found a bottle of amla hair oil." + IDS_SEARCH_ITEM_3752 "You've found a jar of mint chutney." + IDS_SEARCH_ITEM_3753 "You found a jar of ghee." + IDS_SEARCH_ITEM_3754 "" + IDS_SEARCH_ITEM_3755 "" + IDS_SEARCH_ITEM_3756 "" + IDS_SEARCH_ITEM_3757 "" + IDS_SEARCH_ITEM_3758 "" + IDS_SEARCH_ITEM_3759 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3760 "" + IDS_SEARCH_ITEM_3761 "You found an invoice for India Black Tea." + IDS_SEARCH_ITEM_3762 "A selection of verses from Valmiki's Ramayana." + IDS_SEARCH_ITEM_3763 "You've found a copy of Meghaduta, The Cloud Messenger, by Kalidasa." + IDS_SEARCH_ITEM_3764 "Slipcover for the record: Religious Music of India, by Alain Daniélou." + IDS_SEARCH_ITEM_3765 "You found the recipe for Ghost Ki Kashmiri Biryani." + IDS_SEARCH_ITEM_3766 "You found the recipe for Pork Vindaloo." + IDS_SEARCH_ITEM_3767 "You found an Invoice for Cleaning Services from the Nanda Devi Window Washers." + IDS_SEARCH_ITEM_3768 "A prayer to Bhavani, patroness of women in labor. " + IDS_SEARCH_ITEM_3769 "A prayer to Banka-Mundi, hunting Goddess of the Khoud, used to make one fearless against jungle beasts." + IDS_SEARCH_ITEM_3770 "You've found a copy of the book: Mehendi Tips and Tricks." + IDS_SEARCH_ITEM_3771 "" + IDS_SEARCH_ITEM_3772 "" + IDS_SEARCH_ITEM_3773 "" + IDS_SEARCH_ITEM_3774 "" + IDS_SEARCH_ITEM_3775 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4768 "A H.A.R.M. ID badge used to enter secure areas." + IDS_KEY_DESC_4769 "The label on this vacuum tube reads: Replacement part for M-9 Data Processing Unit." + IDS_KEY_DESC_4770 "The security code for the M-9 Data Processing Unit." + IDS_KEY_DESC_4771 "A bypass widget used to access Data Processing Unit." + IDS_KEY_DESC_4772 "The password needed to start the M-9 Data Processing Unit." + IDS_KEY_DESC_4773 "Lists the file ID for information pertaining to Project: Omega." + IDS_KEY_DESC_4774 "Rupees are a basic monetary unit in India." + IDS_KEY_DESC_4775 "These are ignition keys for a snowmobile." + IDS_KEY_DESC_4776 "Refined sugar can be used to sweeten coffee or to cause an engine to seize up." + IDS_KEY_DESC_4777 "Refined sugar can be used to sweeten coffee or to cause an engine to seize up." + IDS_KEY_DESC_4778 "Dr. Schenker's glasses are impossible to mistake. The thick lenses are scored with scratches and don't seem to have been cleaned for some months. It's difficult to imagine how he can see anything through them." + IDS_KEY_DESC_4779 "The ignition key for a snowmobile." + IDS_KEY_DESC_4780 "Fifty rupees. Perhaps you can give this to Crazy Harij to open the city gates." + IDS_KEY_DESC_4781 "This catalogue is required in order to obtain Version 1.0 of the Supercomputer Services User Manual from the Supercomputer Services Department" + IDS_KEY_DESC_4782 "This key is needed to operate the loading crane in the submarine bay." + IDS_KEY_DESC_4783 "This security card can be used on card key readers to gain entry to restricted areas." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3776 "" + IDS_SEARCH_ITEM_3777 "" + IDS_SEARCH_ITEM_3778 "" + IDS_SEARCH_ITEM_3779 "" + IDS_SEARCH_ITEM_3780 "" + IDS_SEARCH_ITEM_3781 "You've found a deflated balloon." + IDS_SEARCH_ITEM_3782 "You've found a jar of pancake make-up." + IDS_SEARCH_ITEM_3783 "You found a broken kazoo." + IDS_SEARCH_ITEM_3784 "You found a white glove." + IDS_SEARCH_ITEM_3785 "You found a red, purple and yellow handkerchief." + IDS_SEARCH_ITEM_3786 "You found a stick drawing of an elephant." + IDS_SEARCH_ITEM_3787 "You found a stick of blue eyeshadow." + IDS_SEARCH_ITEM_3788 "You found a tube of red greasepaint." + IDS_SEARCH_ITEM_3789 "You've found a Mime to English dictionary." + IDS_SEARCH_ITEM_3790 "You've found a petition to legitimize Pantomime as an Olympic sport." + IDS_SEARCH_ITEM_3791 "You found a handbook entitled: Miming Made Easy." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3792 "You found a pink carnation." + IDS_SEARCH_ITEM_3793 "You found a bottle of cooking sherry." + IDS_SEARCH_ITEM_3794 "You found a tube of white greasepaint." + IDS_SEARCH_ITEM_3795 "" + IDS_SEARCH_ITEM_3796 "" + IDS_SEARCH_ITEM_3797 "" + IDS_SEARCH_ITEM_3798 "" + IDS_SEARCH_ITEM_3799 "" + IDS_SEARCH_ITEM_3800 "" +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7500 "" + IDS_DECISIONS_7501 "Set power level to LOW" + IDS_DECISIONS_7502 "Set power level to MEDIUM" + IDS_DECISIONS_7503 "Set power level to HIGH" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7008 "You don't have the keys." + IDS_TRANSMISSIONS_7009 "The snowmobile is out of fuel." + IDS_TRANSMISSIONS_7010 "A vacuum tube is missing." + IDS_TRANSMISSIONS_7011 "You need a password to access this computer." + IDS_TRANSMISSIONS_7012 "Enter the index number." + IDS_TRANSMISSIONS_7013 "It won't work without batteries." + IDS_TRANSMISSIONS_7014 "It's too heavy for you to lift." + IDS_TRANSMISSIONS_7015 "Destroy two out of three designated targets with C4." + IDS_TRANSMISSIONS_7016 "Prevent the enemy team from destroying two of three designated targets." + IDS_TRANSMISSIONS_7017 "Your team has planted a bomb at target 1. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7018 "Your team has planted a bomb at target 2. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7019 "Your team has planted a bomb at target 3. Don't let the enemy defuse it." + IDS_TRANSMISSIONS_7020 "The enemy has planted a bomb at target 1. Defuse it before it detonates." + IDS_TRANSMISSIONS_7021 "The enemy has planted a bomb at target 2. Defuse it before it detonates." + IDS_TRANSMISSIONS_7022 "The enemy has planted a bomb at target 3. Defuse it before it detonates." + IDS_TRANSMISSIONS_7023 "The bomb at target 1 has been defused." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7024 "The bomb at target 2 has been defused." + IDS_TRANSMISSIONS_7025 "Spacesuit required." + IDS_TRANSMISSIONS_7026 "Replace O2 Tank." + IDS_TRANSMISSIONS_7027 "The bomb at target 3 has been defused." + IDS_TRANSMISSIONS_7028 "Target 1 destroyed." + IDS_TRANSMISSIONS_7029 "Target 2 destroyed." + IDS_TRANSMISSIONS_7030 "Target 3 destroyed." + IDS_TRANSMISSIONS_7031 "Time limit reached. Red team wins the round." + IDS_TRANSMISSIONS_7032 "Targets destroyed. Red team wins the round." + IDS_TRANSMISSIONS_7033 "Time limit reached. Blue team wins the round." + IDS_TRANSMISSIONS_7034 "Targets destroyed. Blue team wins the round." +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7504 "Set duration to RARE" + IDS_DECISIONS_7505 "Set duration to MEDIUM" + IDS_DECISIONS_7506 "Set duration to WELL DONE" + IDS_DECISIONS_7507 "Play Tape 3." + IDS_DECISIONS_7508 "Play Tape 4." + IDS_DECISIONS_7509 "Play Tape 5." + IDS_DECISIONS_7510 "Play Tape 6." + IDS_DECISIONS_7511 "Enter the File Identification Number for Project: Omega." + IDS_DECISIONS_7512 "Enter numbers randomly." +END + +STRINGTABLE +BEGIN + IDS_MISSION_12_NAME "CHAPTER 13. Expansion" + IDS_MISSION_13_NAME "CHAPTER 14. Expansion" + IDS_MISSION_14_NAME "CHAPTER 15. Expansion" + IDS_MISSION_09_NAME7 "" + IDS_MISSION_09_NAME8 "CHAPTER I. The Rescue" + IDS_MISSION_09_NAME9 "CHAPTER II. The Super Computer" + IDS_MISSION_09_NAME10 "CHAPTER III. Expansion" + IDS_MISSION_09_NAME11 "CHAPTER IV. Expansion" + IDS_MISSION_09_NAME12 "CHAPTER V. Expansion" + IDS_MISSION_09_NAME13 "Demo." + IDS_MISSION_09_NAME14 "Demo." + IDS_MISSION_09_NAME15 "Demo." + IDS_MISSION_09_NAME16 "TEST TEST TEST TEST" + IDS_MISSION_DD_01 "Antarctic Aggression (4-16)" + IDS_MISSION_DD_02 "Conflict in Calcutta (4-16)" + IDS_MISSION_DD_03 "Hydroelectric Hatred (4-16)" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEMP_BRIEF5 "Shortly after Cate fought off a devastating attack on UNITY headquarters by a pack of machinegun-toting mimes, she departs on a mission to rescue Armstrong from the clutches of H.A.R.M.\n\nUnfortunately, it seems the mime infestation wasn't completely addressed. The assassins have launched a new attack, apparently determined to inflict as much damage as possible on UNITY.\n\nWith Cate gone, it will be up to a lone intercept team to deal with the crisis.\n" + IDS_MISSION_TEMP_BRIEF6 "During a dangerous mission deep inside the Soviet Union, Cate receives orders to sabotage a communications relay tower at a remote Siberian outpost. Her first goal is to procure the explosives she'll need to carry out her mission. Then it's just a matter of setting the charge at the base of the tower and getting out of the area before reinforcements arrive.\n\nTips: Just because you're spotted doesn't mean you have to fight. You can often evade pursuers and hide from them until they give up. Also, be sure to search filing cabinets, desk drawers, and neutralized enemies for valuable information and useful items." + IDS_MISSION_TEMP_BRIEF7 "Demo Mission Briefing UNITY" + IDS_MISSION_TEMP_BRIEF8 "Cate has come to Akron, Ohio, in search of clues relating to Project: Omega, an enigmatic Soviet plot that threatens to bring about World War III.\n\nWhen her mission takes a sudden turn for the unexpected, she finds herself in a trailer park with ninja assassins all around and a tornado closing in. Her only hope of escape is to defeat the ninjas and their mysterious leader, Isako, before she ends up somewhere over the rainbow or six feet deep." + IDS_MISSION_TEMP_BRIEF9 "This level demonstrates the LithTech Jupiter System's new water support as well as the use of decals." + IDS_MISSION_TEMP_BRIEF10 + "This level showcases a few of the new characters from Contract J.A.C.K." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME11 " " + IDS_MISSION_00_LEVEL_00_NAME12 " " + IDS_MISSION_00_LEVEL_00_NAME13 " " + IDS_MISSION_00_LEVEL_00_NAME14 " " + IDS_MISSION_00_LEVEL_00_NAME15 " " + IDS_MISSION_00_LEVEL_00_NAME16 " " + IDS_MISSION_00_LEVEL_00_NAME17 " " + IDS_MISSION_00_LEVEL_00_NAME18 " " + IDS_MISSION_00_LEVEL_00_NAME19 " " + IDS_MISSION_00_LEVEL_00_NAME20 " " + IDS_MISSION_00_LEVEL_00_NAME21 " " + IDS_MISSION_00_LEVEL_00_NAME22 " " + IDS_MISSION_00_LEVEL_00_NAME23 " " + IDS_MISSION_00_LEVEL_00_NAME24 " " + IDS_MISSION_00_LEVEL_00_NAME25 " " + IDS_MISSION_00_LEVEL_00_NAME26 " " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_31 " " + IDS_WEAPON_DESC_32 " " +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4528 "Dr. Schenker's eyeglasses" + IDS_KEY_ITEM_4529 "Keys for the snowmobile" + IDS_KEY_ITEM_4530 "Fifty Rupees" + IDS_KEY_ITEM_4531 "All Access Security Card" + IDS_KEY_ITEM_4532 "Underwater Base security card" + IDS_KEY_ITEM_4533 "A tape recorder" + IDS_KEY_ITEM_4534 "The key for the crane" + IDS_KEY_ITEM_4535 "Supercomputer Services Product Catalog" + IDS_KEY_ITEM_4536 "A screwdriver" + IDS_KEY_ITEM_4537 "An audio tape with a red label" + IDS_KEY_ITEM_4538 "An audio tape with a blue label." + IDS_KEY_ITEM_4539 "An audio tape with a green label." + IDS_KEY_ITEM_4540 "An audio tape with a yellow label." + IDS_KEY_ITEM_4541 "An audio tape with an orange label." + IDS_KEY_ITEM_4542 "An audio tape with a purple label." + IDS_KEY_ITEM_4543 "The combination to the safe in Balaji's apartment" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME27 " " + IDS_MISSION_00_LEVEL_00_NAME28 " " + IDS_MISSION_00_LEVEL_00_NAME29 " " + IDS_MISSION_00_LEVEL_00_NAME30 " " + IDS_MISSION_00_LEVEL_00_NAME31 " " + IDS_MISSION_00_LEVEL_00_NAME32 " " + IDS_MISSION_00_LEVEL_00_NAME33 " " + IDS_MISSION_00_LEVEL_00_NAME34 " " + IDS_MISSION_00_LEVEL_00_NAME35 " " + IDS_MISSION_00_LEVEL_00_NAME36 " " + IDS_MISSION_00_LEVEL_00_NAME37 " " + IDS_MISSION_00_LEVEL_00_NAME38 " " + IDS_MISSION_00_LEVEL_00_NAME39 " " + IDS_MISSION_00_LEVEL_00_NAME40 " " + IDS_MISSION_00_LEVEL_00_NAME41 " " + IDS_MISSION_00_LEVEL_00_NAME42 " " +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4784 "This security card can be used on card key readers to gain entry to restricted areas." + IDS_KEY_DESC_4785 "This recorder contains the voice identification for a H.A.R.M. Underwater Base employee." + IDS_KEY_DESC_4786 "A flat head screwdriver. Might be useful for prying things open." + IDS_KEY_DESC_4787 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4788 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4789 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4790 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4791 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4792 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4793 "A safe combination: 38, 24, 36" + IDS_KEY_DESC_4794 "This security card can be used on card key readers to gain entry to restricted areas." + IDS_KEY_DESC_4795 "This coffee doesn't smell particularly fresh, but it's warm and strong." + IDS_KEY_DESC_4796 "Keys for Balaji Malpani's room at the Hotel Happy Guest as well as his private safe." + IDS_KEY_DESC_4797 "" + IDS_KEY_DESC_4798 "" + IDS_KEY_DESC_4799 "Card key for the Super Computer Services Department." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4800 "A full bucket of water." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE13 "You killed Armstrong!" + IDS_MISSIONFAILURE14 "You allowed Armstrong to die!" + IDS_MISSIONFAILURE15 "You killed your pilot! Now you can't go home!" + IDS_MISSIONFAILURE16 "You allowed your pilot to be killed! " + IDS_MISSIONFAILURE17 "Armstrong died!" + IDS_MISSIONFAILURE18 "You spent too long screwing around in the restroom and now you've blown your cover. You are quickly apprehended and tortured for information. In less than a week, the U.S. and U.S.S.R. are at war and most of civilization evaporates." + IDS_MISSIONFAILURE19 "Hatori-san's pacemaker failed. He's dead." + IDS_MISSIONFAILURE20 "You killed Yamata-san!" + IDS_MISSIONFAILURE21 "You allowed Yamata-san to be killed!" + IDS_MISSIONFAILURE22 "Your plane was destroyed!" + IDS_MISSIONFAILURE23 "You blew your cover!" + IDS_MISSIONFAILURE24 "You killed a police officer!" + IDS_MISSIONFAILURE25 "You killed Kamal!" + IDS_MISSIONFAILURE26 "You killed Dr. Schenker!" + IDS_MISSIONFAILURE27 "You killed Mr. Barnes!" + IDS_MISSIONFAILURE28 "You killed General Hawkins!" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4544 "Siberia card" + IDS_KEY_ITEM_4545 "A pot of coffee" + IDS_KEY_ITEM_4546 "Balaji Malpani's Keys" + IDS_KEY_ITEM_4547 "" + IDS_KEY_ITEM_4548 "" + IDS_KEY_ITEM_4549 "Super Computer Services card" + IDS_KEY_ITEM_4550 "Launch key" + IDS_KEY_ITEM_4551 "Full Bucket" +END + +STRINGTABLE +BEGIN + IDS_CODEDTEXT_7700 "" + IDS_CODEDTEXT_7701 "There are three mailboxes in front of the sweet shop. You must arrange them in a specific sequence to signal me.\n\nThe red mailbox should be open." + IDS_CODEDTEXT_7702 "There are three mailboxes in front of the sweet shop. You must arrange them in a specific sequence to signal me.\n\nThe gray mailbox should be closed." + IDS_CODEDTEXT_7703 "There are three mailboxes in front of the sweet shop. You must arrange them in a specific sequence to signal me.\n\nThe blue mailbox should be open." + IDS_CODEDTEXT_7704 "I'll meet you at the sweet shop on the west side of the neighborhood. Look for the sign with the crane near a vending machine." +END + +STRINGTABLE +BEGIN + IDS_TARGET_2900 "" + IDS_TARGET_2901 "enter combination" + IDS_TARGET_2902 "erase" + IDS_TARGET_2903 "sound alarm" + IDS_TARGET_2904 "screw bulb in" + IDS_TARGET_2905 "unscrew bulb" + IDS_TARGET_2906 "ring chimes" + IDS_TARGET_2907 "turn on" + IDS_TARGET_2908 "turn off" + IDS_TARGET_2909 "flush" + IDS_TARGET_2910 "retrieve data" + IDS_TARGET_2911 "replace vacuum tube" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME59 " " + IDS_MISSION_00_LEVEL_00_NAME60 " " + IDS_MISSION_00_LEVEL_00_NAME61 " " + IDS_MISSION_00_LEVEL_00_NAME62 " " + IDS_MISSION_00_LEVEL_00_NAME63 " " +END + +STRINGTABLE +BEGIN + IDS_TARGET_2912 "enter password" + IDS_TARGET_2913 "pour sugar" + IDS_TARGET_2914 "pour coffee" + IDS_TARGET_2915 "remove poster" + IDS_TARGET_2916 "press button" + IDS_TARGET_2917 "play" + IDS_TARGET_2918 "shut off" + IDS_TARGET_2919 "repair" + IDS_TARGET_2920 "radio UNITY" + IDS_TARGET_2921 "dump water" + IDS_TARGET_2922 "lock gate" + IDS_TARGET_2923 "unlock gate" + IDS_TARGET_2924 "activate intercom" + IDS_TARGET_2925 "activate crane" + IDS_TARGET_2926 "pull my finger" + IDS_TARGET_2927 "honk horn" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20138 " " + IDS_DIALOGUE_20140 " " + IDS_DIALOGUE_20141 " " + IDS_DIALOGUE_20142 " " + IDS_DIALOGUE_20143 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20147 " " + IDS_DIALOGUE_20148 " " + IDS_DIALOGUE_20149 " " + IDS_DIALOGUE_20150 " " + IDS_DIALOGUE_20154 " " + IDS_DIALOGUE_20155 " " + IDS_DIALOGUE_20156 " " + IDS_DIALOGUE_20157 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20180 " " + IDS_DIALOGUE_20182 " " + IDS_DIALOGUE_20183 " " + IDS_DIALOGUE_20184 " " + IDS_DIALOGUE_20185 " " + IDS_DIALOGUE_20186 " " + IDS_DIALOGUE_20187 " " + IDS_DIALOGUE_20190 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20603 " " + IDS_DIALOGUE_20605 " " + IDS_DIALOGUE_20606 " " + IDS_DIALOGUE_20607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20608 " " + IDS_DIALOGUE_20612 " " + IDS_DIALOGUE_20613 " " + IDS_DIALOGUE_20614 " " + IDS_DIALOGUE_20615 " " + IDS_DIALOGUE_20619 " " + IDS_DIALOGUE_20620 " " + IDS_DIALOGUE_20621 " " + IDS_DIALOGUE_20622 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20645 " " + IDS_DIALOGUE_20647 " " + IDS_DIALOGUE_20648 " " + IDS_DIALOGUE_20649 " " + IDS_DIALOGUE_20650 " " + IDS_DIALOGUE_20651 " " + IDS_DIALOGUE_20652 " " + IDS_DIALOGUE_20655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20930 " " + IDS_DIALOGUE_20931 " " + IDS_DIALOGUE_20932 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20956 " " + IDS_DIALOGUE_20957 " " + IDS_DIALOGUE_20959 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20961 " " + IDS_DIALOGUE_20962 " " + IDS_DIALOGUE_20963 " " + IDS_DIALOGUE_20964 " " + IDS_DIALOGUE_20965 " " + IDS_DIALOGUE_20966 " " + IDS_DIALOGUE_20967 " " + IDS_DIALOGUE_20968 " " + IDS_DIALOGUE_20969 " " + IDS_DIALOGUE_20970 " " + IDS_DIALOGUE_20971 " " + IDS_DIALOGUE_20972 " " + IDS_DIALOGUE_20973 " " + IDS_DIALOGUE_20974 " " + IDS_DIALOGUE_20975 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20976 " " + IDS_DIALOGUE_20977 " " + IDS_DIALOGUE_20978 " " + IDS_DIALOGUE_20979 " " + IDS_DIALOGUE_20980 " " + IDS_DIALOGUE_20981 " " + IDS_DIALOGUE_20982 " " + IDS_DIALOGUE_20983 " " + IDS_DIALOGUE_20984 " " + IDS_DIALOGUE_20985 " " + IDS_DIALOGUE_20986 " " + IDS_DIALOGUE_20987 " " + IDS_DIALOGUE_20988 " " + IDS_DIALOGUE_20989 " " + IDS_DIALOGUE_20990 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20992 " " + IDS_DIALOGUE_20993 " " + IDS_DIALOGUE_20994 " " + IDS_DIALOGUE_20995 " " + IDS_DIALOGUE_20996 " " + IDS_DIALOGUE_20997 " " + IDS_DIALOGUE_20998 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21162 " " + IDS_DIALOGUE_21163 " " + IDS_DIALOGUE_21164 " " + IDS_DIALOGUE_21165 " " + IDS_DIALOGUE_21166 " " + IDS_DIALOGUE_21167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21168 " " + IDS_DIALOGUE_21169 " " + IDS_DIALOGUE_21170 " " + IDS_DIALOGUE_21171 " " + IDS_DIALOGUE_21172 " " + IDS_DIALOGUE_21173 " " + IDS_DIALOGUE_21174 " " + IDS_DIALOGUE_21177 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21184 " " + IDS_DIALOGUE_21185 " " + IDS_DIALOGUE_21186 " " + IDS_DIALOGUE_21188 " " + IDS_DIALOGUE_21189 " " + IDS_DIALOGUE_21190 " " + IDS_DIALOGUE_21191 " " + IDS_DIALOGUE_21192 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32000 " " + IDS_DIALOGUE_32001 " " + IDS_DIALOGUE_32002 " " + IDS_DIALOGUE_32003 " " + IDS_DIALOGUE_32004 " " + IDS_DIALOGUE_32005 " " + IDS_DIALOGUE_32006 " " + IDS_DIALOGUE_32007 " " + IDS_DIALOGUE_32009 " " + IDS_DIALOGUE_32010 " " + IDS_DIALOGUE_32011 " " + IDS_DIALOGUE_32012 " " + IDS_DIALOGUE_32014 " " + IDS_DIALOGUE_32015 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32016 " " + IDS_DIALOGUE_32017 " " + IDS_DIALOGUE_32018 " " + IDS_DIALOGUE_32019 " " + IDS_DIALOGUE_32020 " " + IDS_DIALOGUE_32021 " " + IDS_DIALOGUE_32022 " " + IDS_DIALOGUE_32023 " " + IDS_DIALOGUE_32024 " " + IDS_DIALOGUE_32025 " " + IDS_DIALOGUE_32026 " " + IDS_DIALOGUE_32027 " " + IDS_DIALOGUE_32028 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32033 " " + IDS_DIALOGUE_32034 " " + IDS_DIALOGUE_32035 " " + IDS_DIALOGUE_32036 " " + IDS_DIALOGUE_32037 " " + IDS_DIALOGUE_32039 " " + IDS_DIALOGUE_32040 " " + IDS_DIALOGUE_32041 " " + IDS_DIALOGUE_32042 " " + IDS_DIALOGUE_32046 " " + IDS_DIALOGUE_32047 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32051 " " + IDS_DIALOGUE_32052 " " + IDS_DIALOGUE_32053 " " + IDS_DIALOGUE_32056 " " + IDS_DIALOGUE_32057 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32070 " " + IDS_DIALOGUE_32071 " " + IDS_DIALOGUE_32072 " " + IDS_DIALOGUE_32073 " " + IDS_DIALOGUE_32074 " " + IDS_DIALOGUE_32075 " " + IDS_DIALOGUE_32076 " " + IDS_DIALOGUE_32077 " " + IDS_DIALOGUE_32078 " " + IDS_DIALOGUE_32079 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32080 " " + IDS_DIALOGUE_32081 " " + IDS_DIALOGUE_32082 " " + IDS_DIALOGUE_32083 " " + IDS_DIALOGUE_32084 " " + IDS_DIALOGUE_32085 " " + IDS_DIALOGUE_32086 " " + IDS_DIALOGUE_32087 " " + IDS_DIALOGUE_32088 " " + IDS_DIALOGUE_32089 " " + IDS_DIALOGUE_32090 " " + IDS_DIALOGUE_32091 " " + IDS_DIALOGUE_32092 " " + IDS_DIALOGUE_32093 " " + IDS_DIALOGUE_32094 " " + IDS_DIALOGUE_32095 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32096 " " + IDS_DIALOGUE_32097 " " + IDS_DIALOGUE_32098 " " + IDS_DIALOGUE_32099 " " + IDS_DIALOGUE_32100 " " + IDS_DIALOGUE_32101 " " + IDS_DIALOGUE_32102 " " + IDS_DIALOGUE_32103 " " + IDS_DIALOGUE_32104 " " + IDS_DIALOGUE_32105 " " + IDS_DIALOGUE_32106 " " + IDS_DIALOGUE_32107 " " + IDS_DIALOGUE_32108 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32122 " " + IDS_DIALOGUE_32123 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32134 " " + IDS_DIALOGUE_32135 " " + IDS_DIALOGUE_32136 " " + IDS_DIALOGUE_32137 " " + IDS_DIALOGUE_32138 " " + IDS_DIALOGUE_32139 " " + IDS_DIALOGUE_32140 " " + IDS_DIALOGUE_32141 " " + IDS_DIALOGUE_32142 " " + IDS_DIALOGUE_32143 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32144 " " + IDS_DIALOGUE_32145 " " + IDS_DIALOGUE_32146 " " + IDS_DIALOGUE_32147 " " + IDS_DIALOGUE_32148 " " + IDS_DIALOGUE_32149 " " + IDS_DIALOGUE_32150 " " + IDS_DIALOGUE_32151 " " + IDS_DIALOGUE_32152 " " + IDS_DIALOGUE_32153 " " + IDS_DIALOGUE_32154 " " + IDS_DIALOGUE_32155 " " + IDS_DIALOGUE_32156 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32162 " " + IDS_DIALOGUE_32163 " " + IDS_DIALOGUE_32164 " " + IDS_DIALOGUE_32166 " " + IDS_DIALOGUE_32168 " " + IDS_DIALOGUE_32169 " " + IDS_DIALOGUE_32170 " " + IDS_DIALOGUE_32171 " " + IDS_DIALOGUE_32172 " " + IDS_DIALOGUE_32173 " " + IDS_DIALOGUE_32174 " " + IDS_DIALOGUE_32175 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32176 " " + IDS_DIALOGUE_32177 " " + IDS_DIALOGUE_32178 " " + IDS_DIALOGUE_32179 " " + IDS_DIALOGUE_32180 " " + IDS_DIALOGUE_32181 " " + IDS_DIALOGUE_32182 " " + IDS_DIALOGUE_32183 " " + IDS_DIALOGUE_32184 " " + IDS_DIALOGUE_32185 " " + IDS_DIALOGUE_32186 " " + IDS_DIALOGUE_32188 " " + IDS_DIALOGUE_32189 " " + IDS_DIALOGUE_32190 " " + IDS_DIALOGUE_32191 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32192 " " + IDS_DIALOGUE_32193 " " + IDS_DIALOGUE_32194 " " + IDS_DIALOGUE_32195 " " + IDS_DIALOGUE_32196 " " + IDS_DIALOGUE_32197 " " + IDS_DIALOGUE_32198 " " + IDS_DIALOGUE_32199 " " + IDS_DIALOGUE_32200 " " + IDS_DIALOGUE_32201 " " + IDS_DIALOGUE_32202 " " + IDS_DIALOGUE_32203 " " + IDS_DIALOGUE_32204 " " + IDS_DIALOGUE_32205 " " + IDS_DIALOGUE_32206 " " + IDS_DIALOGUE_32207 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32208 " " + IDS_DIALOGUE_32209 " " + IDS_DIALOGUE_32210 " " + IDS_DIALOGUE_32211 " " + IDS_DIALOGUE_32212 " " + IDS_DIALOGUE_32213 " " + IDS_DIALOGUE_32214 " " + IDS_DIALOGUE_32215 " " + IDS_DIALOGUE_32216 " " + IDS_DIALOGUE_32217 " " + IDS_DIALOGUE_32218 " " + IDS_DIALOGUE_32219 " " + IDS_DIALOGUE_32220 " " + IDS_DIALOGUE_32221 " " + IDS_DIALOGUE_32222 " " + IDS_DIALOGUE_32223 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32224 " " + IDS_DIALOGUE_32225 " " + IDS_DIALOGUE_32227 " " + IDS_DIALOGUE_32228 " " + IDS_DIALOGUE_32229 " " + IDS_DIALOGUE_32230 " " + IDS_DIALOGUE_32234 " " + IDS_DIALOGUE_32235 " " + IDS_DIALOGUE_32239 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32240 " " + IDS_DIALOGUE_32241 " " + IDS_DIALOGUE_32242 " " + IDS_DIALOGUE_32243 " " + IDS_DIALOGUE_32244 " " + IDS_DIALOGUE_32245 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32258 " " + IDS_DIALOGUE_32259 " " + IDS_DIALOGUE_32260 " " + IDS_DIALOGUE_32261 " " + IDS_DIALOGUE_32262 " " + IDS_DIALOGUE_32263 " " + IDS_DIALOGUE_32264 " " + IDS_DIALOGUE_32265 " " + IDS_DIALOGUE_32266 " " + IDS_DIALOGUE_32267 " " + IDS_DIALOGUE_32268 " " + IDS_DIALOGUE_32269 " " + IDS_DIALOGUE_32270 " " + IDS_DIALOGUE_32271 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32272 " " + IDS_DIALOGUE_32273 " " + IDS_DIALOGUE_32274 " " + IDS_DIALOGUE_32275 " " + IDS_DIALOGUE_32276 " " + IDS_DIALOGUE_32277 " " + IDS_DIALOGUE_32278 " " + IDS_DIALOGUE_32279 " " + IDS_DIALOGUE_32280 " " + IDS_DIALOGUE_32281 " " + IDS_DIALOGUE_32282 " " + IDS_DIALOGUE_32283 " " + IDS_DIALOGUE_32284 " " + IDS_DIALOGUE_32285 " " + IDS_DIALOGUE_32286 " " + IDS_DIALOGUE_32287 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32288 " " + IDS_DIALOGUE_32289 " " + IDS_DIALOGUE_32290 " " + IDS_DIALOGUE_32291 " " + IDS_DIALOGUE_32292 " " + IDS_DIALOGUE_32293 " " + IDS_DIALOGUE_32294 " " + IDS_DIALOGUE_32295 " " + IDS_DIALOGUE_32296 " " + IDS_DIALOGUE_32299 " " + IDS_DIALOGUE_32300 " " + IDS_DIALOGUE_32301 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32310 " " + IDS_DIALOGUE_32311 " " + IDS_DIALOGUE_32312 " " + IDS_DIALOGUE_32313 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32324 " " + IDS_DIALOGUE_32325 " " + IDS_DIALOGUE_32326 " " + IDS_DIALOGUE_32327 " " + IDS_DIALOGUE_32328 " " + IDS_DIALOGUE_32329 " " + IDS_DIALOGUE_32330 " " + IDS_DIALOGUE_32331 " " + IDS_DIALOGUE_32332 " " + IDS_DIALOGUE_32333 " " + IDS_DIALOGUE_32334 " " + IDS_DIALOGUE_32335 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32336 " " + IDS_DIALOGUE_32337 " " + IDS_DIALOGUE_32338 " " + IDS_DIALOGUE_32339 " " + IDS_DIALOGUE_32340 " " + IDS_DIALOGUE_32341 " " + IDS_DIALOGUE_32342 " " + IDS_DIALOGUE_32343 " " + IDS_DIALOGUE_32344 " " + IDS_DIALOGUE_32345 " " + IDS_DIALOGUE_32346 " " + IDS_DIALOGUE_32347 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32353 " " + IDS_DIALOGUE_32354 " " + IDS_DIALOGUE_32355 " " + IDS_DIALOGUE_32356 " " + IDS_DIALOGUE_32358 " " + IDS_DIALOGUE_32360 " " + IDS_DIALOGUE_32361 " " + IDS_DIALOGUE_32362 " " + IDS_DIALOGUE_32363 " " + IDS_DIALOGUE_32364 " " + IDS_DIALOGUE_32365 " " + IDS_DIALOGUE_32366 " " + IDS_DIALOGUE_32367 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32368 " " + IDS_DIALOGUE_32369 " " + IDS_DIALOGUE_32370 " " + IDS_DIALOGUE_32371 " " + IDS_DIALOGUE_32372 " " + IDS_DIALOGUE_32373 " " + IDS_DIALOGUE_32374 " " + IDS_DIALOGUE_32375 " " + IDS_DIALOGUE_32376 " " + IDS_DIALOGUE_32377 " " + IDS_DIALOGUE_32378 " " + IDS_DIALOGUE_32380 " " + IDS_DIALOGUE_32381 " " + IDS_DIALOGUE_32382 " " + IDS_DIALOGUE_32383 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32384 " " + IDS_DIALOGUE_32385 " " + IDS_DIALOGUE_32386 " " + IDS_DIALOGUE_32387 " " + IDS_DIALOGUE_32388 " " + IDS_DIALOGUE_32389 " " + IDS_DIALOGUE_32390 " " + IDS_DIALOGUE_32391 " " + IDS_DIALOGUE_32392 " " + IDS_DIALOGUE_32393 " " + IDS_DIALOGUE_32394 " " + IDS_DIALOGUE_32395 " " + IDS_DIALOGUE_32396 " " + IDS_DIALOGUE_32397 " " + IDS_DIALOGUE_32398 " " + IDS_DIALOGUE_32399 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32400 " " + IDS_DIALOGUE_32401 " " + IDS_DIALOGUE_32402 " " + IDS_DIALOGUE_32403 " " + IDS_DIALOGUE_32404 " " + IDS_DIALOGUE_32405 " " + IDS_DIALOGUE_32406 " " + IDS_DIALOGUE_32407 " " + IDS_DIALOGUE_32408 " " + IDS_DIALOGUE_32409 " " + IDS_DIALOGUE_32410 " " + IDS_DIALOGUE_32411 " " + IDS_DIALOGUE_32413 " " + IDS_DIALOGUE_32414 " " + IDS_DIALOGUE_32415 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32416 " " + IDS_DIALOGUE_32417 " " + IDS_DIALOGUE_32418 " " + IDS_DIALOGUE_32419 " " + IDS_DIALOGUE_32420 " " + IDS_DIALOGUE_32422 " " + IDS_DIALOGUE_32423 " " + IDS_DIALOGUE_32424 " " + IDS_DIALOGUE_32425 " " + IDS_DIALOGUE_32426 " " + IDS_DIALOGUE_32428 " " + IDS_DIALOGUE_32429 " " + IDS_DIALOGUE_32430 " " + IDS_DIALOGUE_32431 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32435 " " + IDS_DIALOGUE_32436 " " + IDS_DIALOGUE_32437 " " + IDS_DIALOGUE_32438 " " + IDS_DIALOGUE_32439 " " + IDS_DIALOGUE_32440 " " + IDS_DIALOGUE_32441 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32454 " " + IDS_DIALOGUE_32455 " " + IDS_DIALOGUE_32456 " " + IDS_DIALOGUE_32457 " " + IDS_DIALOGUE_32458 " " + IDS_DIALOGUE_32459 " " + IDS_DIALOGUE_32460 " " + IDS_DIALOGUE_32461 " " + IDS_DIALOGUE_32462 " " + IDS_DIALOGUE_32463 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32464 " " + IDS_DIALOGUE_32465 " " + IDS_DIALOGUE_32466 " " + IDS_DIALOGUE_32467 " " + IDS_DIALOGUE_32468 " " + IDS_DIALOGUE_32469 " " + IDS_DIALOGUE_32470 " " + IDS_DIALOGUE_32471 " " + IDS_DIALOGUE_32472 " " + IDS_DIALOGUE_32473 " " + IDS_DIALOGUE_32474 " " + IDS_DIALOGUE_32475 " " + IDS_DIALOGUE_32476 " " + IDS_DIALOGUE_32477 " " + IDS_DIALOGUE_32478 " " + IDS_DIALOGUE_32479 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32480 " " + IDS_DIALOGUE_32481 " " + IDS_DIALOGUE_32482 " " + IDS_DIALOGUE_32483 " " + IDS_DIALOGUE_32484 " " + IDS_DIALOGUE_32485 " " + IDS_DIALOGUE_32486 " " + IDS_DIALOGUE_32487 " " + IDS_DIALOGUE_32488 " " + IDS_DIALOGUE_32489 " " + IDS_DIALOGUE_32490 " " + IDS_DIALOGUE_32491 " " + IDS_DIALOGUE_32492 " " + IDS_DIALOGUE_32495 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32496 " " + IDS_DIALOGUE_32497 " " + IDS_DIALOGUE_32503 " " + IDS_DIALOGUE_32504 " " + IDS_DIALOGUE_32505 " " + IDS_DIALOGUE_32506 " " + IDS_DIALOGUE_32507 " " + IDS_DIALOGUE_32508 " " + IDS_DIALOGUE_32509 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32520 " " + IDS_DIALOGUE_32521 " " + IDS_DIALOGUE_32522 " " + IDS_DIALOGUE_32523 " " + IDS_DIALOGUE_32524 " " + IDS_DIALOGUE_32525 " " + IDS_DIALOGUE_32526 " " + IDS_DIALOGUE_32527 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32528 " " + IDS_DIALOGUE_32529 " " + IDS_DIALOGUE_32530 " " + IDS_DIALOGUE_32531 " " + IDS_DIALOGUE_32532 " " + IDS_DIALOGUE_32533 " " + IDS_DIALOGUE_32534 " " + IDS_DIALOGUE_32535 " " + IDS_DIALOGUE_32536 " " + IDS_DIALOGUE_32537 " " + IDS_DIALOGUE_32538 " " + IDS_DIALOGUE_32539 " " + IDS_DIALOGUE_32540 " " + IDS_DIALOGUE_32541 " " + IDS_DIALOGUE_32542 " " + IDS_DIALOGUE_32543 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32549 " " + IDS_DIALOGUE_32550 " " + IDS_DIALOGUE_32551 " " + IDS_DIALOGUE_32553 " " + IDS_DIALOGUE_32555 " " + IDS_DIALOGUE_32556 " " + IDS_DIALOGUE_32557 " " + IDS_DIALOGUE_32558 " " + IDS_DIALOGUE_32559 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32560 " " + IDS_DIALOGUE_32561 " " + IDS_DIALOGUE_32562 " " + IDS_DIALOGUE_32563 " " + IDS_DIALOGUE_32564 " " + IDS_DIALOGUE_32565 " " + IDS_DIALOGUE_32566 " " + IDS_DIALOGUE_32567 " " + IDS_DIALOGUE_32568 " " + IDS_DIALOGUE_32569 " " + IDS_DIALOGUE_32570 " " + IDS_DIALOGUE_32571 " " + IDS_DIALOGUE_32572 " " + IDS_DIALOGUE_32573 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32577 " " + IDS_DIALOGUE_32578 " " + IDS_DIALOGUE_32579 " " + IDS_DIALOGUE_32580 " " + IDS_DIALOGUE_32581 " " + IDS_DIALOGUE_32582 " " + IDS_DIALOGUE_32583 " " + IDS_DIALOGUE_32584 " " + IDS_DIALOGUE_32585 " " + IDS_DIALOGUE_32586 " " + IDS_DIALOGUE_32587 " " + IDS_DIALOGUE_32588 " " + IDS_DIALOGUE_32589 " " + IDS_DIALOGUE_32590 " " + IDS_DIALOGUE_32591 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32592 " " + IDS_DIALOGUE_32593 " " + IDS_DIALOGUE_32594 " " + IDS_DIALOGUE_32595 " " + IDS_DIALOGUE_32596 " " + IDS_DIALOGUE_32597 " " + IDS_DIALOGUE_32598 " " + IDS_DIALOGUE_32599 " " + IDS_DIALOGUE_32600 " " + IDS_DIALOGUE_32601 " " + IDS_DIALOGUE_32602 " " + IDS_DIALOGUE_32603 " " + IDS_DIALOGUE_32604 " " + IDS_DIALOGUE_32606 " " + IDS_DIALOGUE_32607 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32608 " " + IDS_DIALOGUE_32609 " " + IDS_DIALOGUE_32610 " " + IDS_DIALOGUE_32611 " " + IDS_DIALOGUE_32612 " " + IDS_DIALOGUE_32613 " " + IDS_DIALOGUE_32615 " " + IDS_DIALOGUE_32616 " " + IDS_DIALOGUE_32617 " " + IDS_DIALOGUE_32618 " " + IDS_DIALOGUE_32619 " " + IDS_DIALOGUE_32623 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32624 " " + IDS_DIALOGUE_32628 " " + IDS_DIALOGUE_32629 " " + IDS_DIALOGUE_32630 " " + IDS_DIALOGUE_32631 " " + IDS_DIALOGUE_32632 " " + IDS_DIALOGUE_32633 " " + IDS_DIALOGUE_32634 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32647 " " + IDS_DIALOGUE_32648 " " + IDS_DIALOGUE_32649 " " + IDS_DIALOGUE_32650 " " + IDS_DIALOGUE_32651 " " + IDS_DIALOGUE_32652 " " + IDS_DIALOGUE_32653 " " + IDS_DIALOGUE_32654 " " + IDS_DIALOGUE_32655 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32656 " " + IDS_DIALOGUE_32657 " " + IDS_DIALOGUE_32658 " " + IDS_DIALOGUE_32659 " " + IDS_DIALOGUE_32660 " " + IDS_DIALOGUE_32661 " " + IDS_DIALOGUE_32662 " " + IDS_DIALOGUE_32663 " " + IDS_DIALOGUE_32664 " " + IDS_DIALOGUE_32665 " " + IDS_DIALOGUE_32666 " " + IDS_DIALOGUE_32667 " " + IDS_DIALOGUE_32668 " " + IDS_DIALOGUE_32669 " " + IDS_DIALOGUE_32670 " " + IDS_DIALOGUE_32671 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32672 " " + IDS_DIALOGUE_32673 " " + IDS_DIALOGUE_32674 " " + IDS_DIALOGUE_32675 " " + IDS_DIALOGUE_32676 " " + IDS_DIALOGUE_32677 " " + IDS_DIALOGUE_32678 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32692 " " + IDS_DIALOGUE_32693 " " + IDS_DIALOGUE_32694 " " + IDS_DIALOGUE_32695 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32706 " " + IDS_DIALOGUE_32707 " " + IDS_DIALOGUE_32708 " " + IDS_DIALOGUE_32709 " " + IDS_DIALOGUE_32710 " " + IDS_DIALOGUE_32711 " " + IDS_DIALOGUE_32712 " " + IDS_DIALOGUE_32713 " " + IDS_DIALOGUE_32714 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32741 " " + IDS_DIALOGUE_32742 " " + IDS_DIALOGUE_32743 " " + IDS_DIALOGUE_32744 " " + IDS_DIALOGUE_32745 " " + IDS_DIALOGUE_32746 " " + IDS_DIALOGUE_32747 " " + IDS_DIALOGUE_32748 " " + IDS_DIALOGUE_32749 " " + IDS_DIALOGUE_32750 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32754 " " + IDS_DIALOGUE_32755 " " + IDS_DIALOGUE_32756 " " + IDS_DIALOGUE_32760 " " + IDS_DIALOGUE_32761 " " + IDS_DIALOGUE_32762 " " + IDS_DIALOGUE_32763 " " + IDS_DIALOGUE_32764 " " + IDS_DIALOGUE_32765 " " + IDS_DIALOGUE_32766 " " + IDS_DIALOGUE_32767 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32768 " " + IDS_DIALOGUE_32769 " " + IDS_DIALOGUE_32770 " " + IDS_DIALOGUE_32771 " " + IDS_DIALOGUE_32772 " " + IDS_DIALOGUE_32773 " " + IDS_DIALOGUE_32774 " " + IDS_DIALOGUE_32775 " " + IDS_DIALOGUE_32776 " " + IDS_DIALOGUE_32777 " " + IDS_DIALOGUE_32778 " " + IDS_DIALOGUE_32779 " " + IDS_DIALOGUE_32780 " " + IDS_DIALOGUE_32781 " " + IDS_DIALOGUE_32782 " " + IDS_DIALOGUE_32783 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32784 " " + IDS_DIALOGUE_32785 " " + IDS_DIALOGUE_32786 " " + IDS_DIALOGUE_32787 " " + IDS_DIALOGUE_32789 " " + IDS_DIALOGUE_32790 " " + IDS_DIALOGUE_32791 " " + IDS_DIALOGUE_32792 " " + IDS_DIALOGUE_32793 " " + IDS_DIALOGUE_32794 " " + IDS_DIALOGUE_32795 " " + IDS_DIALOGUE_32796 " " + IDS_DIALOGUE_32798 " " + IDS_DIALOGUE_32799 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32800 " " + IDS_DIALOGUE_32801 " " + IDS_DIALOGUE_32802 " " + IDS_DIALOGUE_32806 " " + IDS_DIALOGUE_32807 " " + IDS_DIALOGUE_32811 " " + IDS_DIALOGUE_32812 " " + IDS_DIALOGUE_32813 " " + IDS_DIALOGUE_32814 " " + IDS_DIALOGUE_32815 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32816 " " + IDS_DIALOGUE_32817 " " + IDS_DIALOGUE_32830 " " + IDS_DIALOGUE_32831 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32832 " " + IDS_DIALOGUE_32833 " " + IDS_DIALOGUE_32834 " " + IDS_DIALOGUE_32835 " " + IDS_DIALOGUE_32836 " " + IDS_DIALOGUE_32837 " " + IDS_DIALOGUE_32838 " " + IDS_DIALOGUE_32839 " " + IDS_DIALOGUE_32840 " " + IDS_DIALOGUE_32841 " " + IDS_DIALOGUE_32842 " " + IDS_DIALOGUE_32843 " " + IDS_DIALOGUE_32844 " " + IDS_DIALOGUE_32845 " " + IDS_DIALOGUE_32846 " " + IDS_DIALOGUE_32847 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32848 " " + IDS_DIALOGUE_32849 " " + IDS_DIALOGUE_32850 " " + IDS_DIALOGUE_32851 " " + IDS_DIALOGUE_32852 " " + IDS_DIALOGUE_32853 " " + IDS_DIALOGUE_32854 " " + IDS_DIALOGUE_32855 " " + IDS_DIALOGUE_32856 " " + IDS_DIALOGUE_32857 " " + IDS_DIALOGUE_32858 " " + IDS_DIALOGUE_32859 " " + IDS_DIALOGUE_32860 " " + IDS_DIALOGUE_32861 " " + IDS_DIALOGUE_32862 " " + IDS_DIALOGUE_32863 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32864 " " + IDS_DIALOGUE_32865 " " + IDS_DIALOGUE_32866 " " + IDS_DIALOGUE_32867 " " + IDS_DIALOGUE_32868 " " + IDS_DIALOGUE_32871 " " + IDS_DIALOGUE_32872 " " + IDS_DIALOGUE_32873 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32882 " " + IDS_DIALOGUE_32883 " " + IDS_DIALOGUE_32884 " " + IDS_DIALOGUE_32885 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32896 " " + IDS_DIALOGUE_32897 " " + IDS_DIALOGUE_32898 " " + IDS_DIALOGUE_32899 " " + IDS_DIALOGUE_32900 " " + IDS_DIALOGUE_32901 " " + IDS_DIALOGUE_32902 " " + IDS_DIALOGUE_32903 " " + IDS_DIALOGUE_32904 " " + IDS_DIALOGUE_32905 " " + IDS_DIALOGUE_32906 " " + IDS_DIALOGUE_32907 " " + IDS_DIALOGUE_32908 " " + IDS_DIALOGUE_32909 " " + IDS_DIALOGUE_32910 " " + IDS_DIALOGUE_32911 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32912 " " + IDS_DIALOGUE_32913 " " + IDS_DIALOGUE_32914 " " + IDS_DIALOGUE_32915 " " + IDS_DIALOGUE_32916 " " + IDS_DIALOGUE_32917 " " + IDS_DIALOGUE_32918 " " + IDS_DIALOGUE_32919 " " + IDS_DIALOGUE_32925 " " + IDS_DIALOGUE_32926 " " + IDS_DIALOGUE_32927 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32928 " " + IDS_DIALOGUE_32930 " " + IDS_DIALOGUE_32932 " " + IDS_DIALOGUE_32933 " " + IDS_DIALOGUE_32934 " " + IDS_DIALOGUE_32935 " " + IDS_DIALOGUE_32936 " " + IDS_DIALOGUE_32937 " " + IDS_DIALOGUE_32938 " " + IDS_DIALOGUE_32939 " " + IDS_DIALOGUE_32940 " " + IDS_DIALOGUE_32941 " " + IDS_DIALOGUE_32942 " " + IDS_DIALOGUE_32943 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32944 " " + IDS_DIALOGUE_32945 " " + IDS_DIALOGUE_32946 " " + IDS_DIALOGUE_32947 " " + IDS_DIALOGUE_32948 " " + IDS_DIALOGUE_32949 " " + IDS_DIALOGUE_32950 " " + IDS_DIALOGUE_32952 " " + IDS_DIALOGUE_32953 " " + IDS_DIALOGUE_32954 " " + IDS_DIALOGUE_32955 " " + IDS_DIALOGUE_32956 " " + IDS_DIALOGUE_32957 " " + IDS_DIALOGUE_32958 " " + IDS_DIALOGUE_32959 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32961 " " + IDS_DIALOGUE_32962 " " + IDS_DIALOGUE_32963 " " + IDS_DIALOGUE_32964 " " + IDS_DIALOGUE_32965 " " + IDS_DIALOGUE_32966 " " + IDS_DIALOGUE_32967 " " + IDS_DIALOGUE_32968 " " + IDS_DIALOGUE_32969 " " + IDS_DIALOGUE_32970 " " + IDS_DIALOGUE_32971 " " + IDS_DIALOGUE_32973 " " + IDS_DIALOGUE_32974 " " + IDS_DIALOGUE_32975 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32976 " " + IDS_DIALOGUE_32977 " " + IDS_DIALOGUE_32978 " " + IDS_DIALOGUE_32979 " " + IDS_DIALOGUE_32981 " " + IDS_DIALOGUE_32982 " " + IDS_DIALOGUE_32983 " " + IDS_DIALOGUE_32984 " " + IDS_DIALOGUE_32985 " " + IDS_DIALOGUE_32986 " " + IDS_DIALOGUE_32987 " " + IDS_DIALOGUE_32988 " " + IDS_DIALOGUE_32990 " " + IDS_DIALOGUE_32991 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32992 " " + IDS_DIALOGUE_32993 " " + IDS_DIALOGUE_32994 " " + IDS_DIALOGUE_32998 " " + IDS_DIALOGUE_32999 " " + IDS_DIALOGUE_33003 " " + IDS_DIALOGUE_33004 " " + IDS_DIALOGUE_33005 " " + IDS_DIALOGUE_33006 " " + IDS_DIALOGUE_33007 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33008 " " + IDS_DIALOGUE_33009 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33024 " " + IDS_DIALOGUE_33025 " " + IDS_DIALOGUE_33026 " " + IDS_DIALOGUE_33027 " " + IDS_DIALOGUE_33028 " " + IDS_DIALOGUE_33032 " " + IDS_DIALOGUE_33033 " " + IDS_DIALOGUE_33034 " " + IDS_DIALOGUE_33035 " " + IDS_DIALOGUE_33036 " " + IDS_DIALOGUE_33037 " " + IDS_DIALOGUE_33038 " " + IDS_DIALOGUE_33039 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33040 " " + IDS_DIALOGUE_33041 " " + IDS_DIALOGUE_33042 " " + IDS_DIALOGUE_33043 " " + IDS_DIALOGUE_33044 " " + IDS_DIALOGUE_33045 " " + IDS_DIALOGUE_33046 " " + IDS_DIALOGUE_33047 " " + IDS_DIALOGUE_33048 " " + IDS_DIALOGUE_33049 " " + IDS_DIALOGUE_33050 " " + IDS_DIALOGUE_33051 " " + IDS_DIALOGUE_33052 " " + IDS_DIALOGUE_33053 " " + IDS_DIALOGUE_33054 " " + IDS_DIALOGUE_33055 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33056 " " + IDS_DIALOGUE_33057 " " + IDS_DIALOGUE_33058 " " + IDS_DIALOGUE_33059 " " + IDS_DIALOGUE_33060 " " + IDS_DIALOGUE_33061 " " + IDS_DIALOGUE_33062 " " + IDS_DIALOGUE_33065 " " + IDS_DIALOGUE_33066 " " + IDS_DIALOGUE_33067 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33076 " " + IDS_DIALOGUE_33077 " " + IDS_DIALOGUE_33078 " " + IDS_DIALOGUE_33079 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33090 " " + IDS_DIALOGUE_33091 " " + IDS_DIALOGUE_33092 " " + IDS_DIALOGUE_33093 " " + IDS_DIALOGUE_33094 " " + IDS_DIALOGUE_33095 " " + IDS_DIALOGUE_33096 " " + IDS_DIALOGUE_33097 " " + IDS_DIALOGUE_33098 " " + IDS_DIALOGUE_33099 " " + IDS_DIALOGUE_33100 " " + IDS_DIALOGUE_33101 " " + IDS_DIALOGUE_33102 " " + IDS_DIALOGUE_33103 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33104 " " + IDS_DIALOGUE_33105 " " + IDS_DIALOGUE_33106 " " + IDS_DIALOGUE_33107 " " + IDS_DIALOGUE_33110 " " + IDS_DIALOGUE_33111 " " + IDS_DIALOGUE_33112 " " + IDS_DIALOGUE_33113 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33120 " " + IDS_DIALOGUE_33121 " " + IDS_DIALOGUE_33129 " " + IDS_DIALOGUE_33131 " " + IDS_DIALOGUE_33132 " " + IDS_DIALOGUE_33133 " " + IDS_DIALOGUE_33134 " " + IDS_DIALOGUE_33135 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33136 " " + IDS_DIALOGUE_33137 " " + IDS_DIALOGUE_33138 " " + IDS_DIALOGUE_33139 " " + IDS_DIALOGUE_33140 " " + IDS_DIALOGUE_33141 " " + IDS_DIALOGUE_33142 " " + IDS_DIALOGUE_33143 " " + IDS_DIALOGUE_33144 " " + IDS_DIALOGUE_33146 " " + IDS_DIALOGUE_33147 " " + IDS_DIALOGUE_33148 " " + IDS_DIALOGUE_33149 " " + IDS_DIALOGUE_33150 " " + IDS_DIALOGUE_33151 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33152 " " + IDS_DIALOGUE_33153 " " + IDS_DIALOGUE_33154 " " + IDS_DIALOGUE_33155 " " + IDS_DIALOGUE_33156 " " + IDS_DIALOGUE_33157 " " + IDS_DIALOGUE_33158 " " + IDS_DIALOGUE_33159 " " + IDS_DIALOGUE_33160 " " + IDS_DIALOGUE_33161 " " + IDS_DIALOGUE_33162 " " + IDS_DIALOGUE_33163 " " + IDS_DIALOGUE_33164 " " + IDS_DIALOGUE_33165 " " + IDS_DIALOGUE_33166 " " + IDS_DIALOGUE_33167 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33168 " " + IDS_DIALOGUE_33169 " " + IDS_DIALOGUE_33170 " " + IDS_DIALOGUE_33171 " " + IDS_DIALOGUE_33172 " " + IDS_DIALOGUE_33173 " " + IDS_DIALOGUE_33175 " " + IDS_DIALOGUE_33176 " " + IDS_DIALOGUE_33177 " " + IDS_DIALOGUE_33178 " " + IDS_DIALOGUE_33179 " " + IDS_DIALOGUE_33180 " " + IDS_DIALOGUE_33181 " " + IDS_DIALOGUE_33182 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33184 " " + IDS_DIALOGUE_33185 " " + IDS_DIALOGUE_33186 " " + IDS_DIALOGUE_33187 " " + IDS_DIALOGUE_33188 " " + IDS_DIALOGUE_33190 " " + IDS_DIALOGUE_33191 " " + IDS_DIALOGUE_33192 " " + IDS_DIALOGUE_33193 " " + IDS_DIALOGUE_33197 " " + IDS_DIALOGUE_33198 " " + IDS_DIALOGUE_33199 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33200 " " + IDS_DIALOGUE_33201 " " + IDS_DIALOGUE_33202 " " + IDS_DIALOGUE_33203 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33216 " " + IDS_DIALOGUE_33217 " " + IDS_DIALOGUE_33218 " " + IDS_DIALOGUE_33219 " " + IDS_DIALOGUE_33220 " " + IDS_DIALOGUE_33221 " " + IDS_DIALOGUE_33222 " " + IDS_DIALOGUE_33223 " " + IDS_DIALOGUE_33224 " " + IDS_DIALOGUE_33225 " " + IDS_DIALOGUE_33226 " " + IDS_DIALOGUE_33227 " " + IDS_DIALOGUE_33228 " " + IDS_DIALOGUE_33229 " " + IDS_DIALOGUE_33230 " " + IDS_DIALOGUE_33231 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33232 " " + IDS_DIALOGUE_33233 " " + IDS_DIALOGUE_33234 " " + IDS_DIALOGUE_33235 " " + IDS_DIALOGUE_33236 " " + IDS_DIALOGUE_33237 " " + IDS_DIALOGUE_33238 " " + IDS_DIALOGUE_33239 " " + IDS_DIALOGUE_33240 " " + IDS_DIALOGUE_33241 " " + IDS_DIALOGUE_33242 " " + IDS_DIALOGUE_33243 " " + IDS_DIALOGUE_33244 " " + IDS_DIALOGUE_33245 " " + IDS_DIALOGUE_33246 " " + IDS_DIALOGUE_33247 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33248 " " + IDS_DIALOGUE_33249 " " + IDS_DIALOGUE_33250 " " + IDS_DIALOGUE_33251 " " + IDS_DIALOGUE_33252 " " + IDS_DIALOGUE_33253 " " + IDS_DIALOGUE_33254 " " + IDS_DIALOGUE_33257 " " + IDS_DIALOGUE_33258 " " + IDS_DIALOGUE_33259 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33265 " " + IDS_DIALOGUE_33266 " " + IDS_DIALOGUE_33267 " " + IDS_DIALOGUE_33268 " " + IDS_DIALOGUE_33269 " " + IDS_DIALOGUE_33270 " " + IDS_DIALOGUE_33271 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33282 " " + IDS_DIALOGUE_33283 " " + IDS_DIALOGUE_33284 " " + IDS_DIALOGUE_33285 " " + IDS_DIALOGUE_33286 " " + IDS_DIALOGUE_33287 " " + IDS_DIALOGUE_33288 " " + IDS_DIALOGUE_33289 " " + IDS_DIALOGUE_33290 " " + IDS_DIALOGUE_33291 " " + IDS_DIALOGUE_33292 " " + IDS_DIALOGUE_33293 " " + IDS_DIALOGUE_33294 " " + IDS_DIALOGUE_33295 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33296 " " + IDS_DIALOGUE_33297 " " + IDS_DIALOGUE_33298 " " + IDS_DIALOGUE_33299 " " + IDS_DIALOGUE_33300 " " + IDS_DIALOGUE_33301 " " + IDS_DIALOGUE_33302 " " + IDS_DIALOGUE_33303 " " + IDS_DIALOGUE_33304 " " + IDS_DIALOGUE_33305 " " + IDS_DIALOGUE_33311 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33312 " " + IDS_DIALOGUE_33313 " " + IDS_DIALOGUE_33314 " " + IDS_DIALOGUE_33316 " " + IDS_DIALOGUE_33318 " " + IDS_DIALOGUE_33319 " " + IDS_DIALOGUE_33320 " " + IDS_DIALOGUE_33321 " " + IDS_DIALOGUE_33322 " " + IDS_DIALOGUE_33323 " " + IDS_DIALOGUE_33324 " " + IDS_DIALOGUE_33325 " " + IDS_DIALOGUE_33326 " " + IDS_DIALOGUE_33327 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33328 " " + IDS_DIALOGUE_33329 " " + IDS_DIALOGUE_33330 " " + IDS_DIALOGUE_33331 " " + IDS_DIALOGUE_33332 " " + IDS_DIALOGUE_33333 " " + IDS_DIALOGUE_33334 " " + IDS_DIALOGUE_33335 " " + IDS_DIALOGUE_33336 " " + IDS_DIALOGUE_33338 " " + IDS_DIALOGUE_33339 " " + IDS_DIALOGUE_33340 " " + IDS_DIALOGUE_33341 " " + IDS_DIALOGUE_33342 " " + IDS_DIALOGUE_33343 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11728 " " + IDS_DIALOGUE_11729 " " + IDS_DIALOGUE_11730 " " + IDS_DIALOGUE_11731 " " + IDS_DIALOGUE_11732 " " + IDS_DIALOGUE_11733 " " + IDS_DIALOGUE_11734 " " + IDS_DIALOGUE_11735 " " + IDS_DIALOGUE_11736 " " + IDS_DIALOGUE_11737 " " + IDS_DIALOGUE_11738 " " + IDS_DIALOGUE_11739 " " + IDS_DIALOGUE_11740 " " + IDS_DIALOGUE_11741 " " + IDS_DIALOGUE_11742 " " + IDS_DIALOGUE_11743 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11744 " " + IDS_DIALOGUE_11745 " " + IDS_DIALOGUE_11746 " " + IDS_DIALOGUE_11747 " " + IDS_DIALOGUE_11748 " " + IDS_DIALOGUE_11749 " " + IDS_DIALOGUE_11750 " " + IDS_DIALOGUE_11751 " " + IDS_DIALOGUE_11752 " " + IDS_DIALOGUE_11753 " " + IDS_DIALOGUE_11754 " " + IDS_DIALOGUE_11755 " " + IDS_DIALOGUE_11756 " " + IDS_DIALOGUE_11757 " " + IDS_DIALOGUE_11758 " " + IDS_DIALOGUE_11759 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11760 " " + IDS_DIALOGUE_11761 " " + IDS_DIALOGUE_11762 " " + IDS_DIALOGUE_11763 " " + IDS_DIALOGUE_11764 " " + IDS_DIALOGUE_11765 " " + IDS_DIALOGUE_11766 " " + IDS_DIALOGUE_11767 " " + IDS_DIALOGUE_11768 " " + IDS_DIALOGUE_11769 " " + IDS_DIALOGUE_11770 " " + IDS_DIALOGUE_11771 " " + IDS_DIALOGUE_11772 " " + IDS_DIALOGUE_11773 " " + IDS_DIALOGUE_11774 " " + IDS_DIALOGUE_11775 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11776 " " + IDS_DIALOGUE_11777 " " + IDS_DIALOGUE_11778 " " + IDS_DIALOGUE_11779 " " + IDS_DIALOGUE_11780 " " + IDS_DIALOGUE_11781 " " + IDS_DIALOGUE_11782 " " + IDS_DIALOGUE_11783 " " + IDS_DIALOGUE_11784 " " + IDS_DIALOGUE_11785 " " + IDS_DIALOGUE_11786 " " + IDS_DIALOGUE_11787 " " + IDS_DIALOGUE_11788 " " + IDS_DIALOGUE_11789 " " + IDS_DIALOGUE_11790 " " + IDS_DIALOGUE_11791 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11792 " " + IDS_DIALOGUE_11793 " " + IDS_DIALOGUE_11794 " " + IDS_DIALOGUE_11795 " " + IDS_DIALOGUE_11796 " " + IDS_DIALOGUE_11797 " " + IDS_DIALOGUE_11798 " " + IDS_DIALOGUE_11799 " " + IDS_DIALOGUE_11800 " " + IDS_DIALOGUE_11801 " " + IDS_DIALOGUE_11802 " " + IDS_DIALOGUE_11803 " " + IDS_DIALOGUE_11804 " " + IDS_DIALOGUE_11805 " " + IDS_DIALOGUE_11806 " " + IDS_DIALOGUE_11807 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11808 " " + IDS_DIALOGUE_11809 " " + IDS_DIALOGUE_11810 " " + IDS_DIALOGUE_11811 " " + IDS_DIALOGUE_11812 " " + IDS_DIALOGUE_11813 " " + IDS_DIALOGUE_11814 " " + IDS_DIALOGUE_11815 " " + IDS_DIALOGUE_11816 " " + IDS_DIALOGUE_11817 " " + IDS_DIALOGUE_11818 " " + IDS_DIALOGUE_11819 " " + IDS_DIALOGUE_11820 " " + IDS_DIALOGUE_11821 " " + IDS_DIALOGUE_11822 " " + IDS_DIALOGUE_11823 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11824 " " + IDS_DIALOGUE_11825 " " + IDS_DIALOGUE_11826 " " + IDS_DIALOGUE_11827 " " + IDS_DIALOGUE_11828 " " + IDS_DIALOGUE_11829 " " + IDS_DIALOGUE_11830 " " + IDS_DIALOGUE_11831 " " + IDS_DIALOGUE_11832 " " + IDS_DIALOGUE_11833 " " + IDS_DIALOGUE_11834 " " + IDS_DIALOGUE_11835 " " + IDS_DIALOGUE_11836 " " + IDS_DIALOGUE_11837 " " + IDS_DIALOGUE_11838 " " + IDS_DIALOGUE_11839 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11841 " " + IDS_DIALOGUE_11842 " " + IDS_DIALOGUE_11843 " " + IDS_DIALOGUE_11844 " " + IDS_DIALOGUE_11845 " " + IDS_DIALOGUE_11846 " " + IDS_DIALOGUE_11847 " " + IDS_DIALOGUE_11848 " " + IDS_DIALOGUE_11849 " " + IDS_DIALOGUE_11850 " " + IDS_DIALOGUE_11851 " " + IDS_DIALOGUE_11852 " " + IDS_DIALOGUE_11853 " " + IDS_DIALOGUE_11854 " " + IDS_DIALOGUE_11855 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11856 " " + IDS_DIALOGUE_11857 " " + IDS_DIALOGUE_11858 " " + IDS_DIALOGUE_11859 " " + IDS_DIALOGUE_11860 " " + IDS_DIALOGUE_11861 " " + IDS_DIALOGUE_11862 " " + IDS_DIALOGUE_11863 " " + IDS_DIALOGUE_11864 " " + IDS_DIALOGUE_11865 " " + IDS_DIALOGUE_11866 " " + IDS_DIALOGUE_11867 " " + IDS_DIALOGUE_11868 " " + IDS_DIALOGUE_11869 " " + IDS_DIALOGUE_11870 " " + IDS_DIALOGUE_11871 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11872 " " + IDS_DIALOGUE_11873 " " + IDS_DIALOGUE_11874 " " + IDS_DIALOGUE_11875 " " + IDS_DIALOGUE_11876 " " + IDS_DIALOGUE_11877 " " + IDS_DIALOGUE_11878 " " + IDS_DIALOGUE_11879 " " + IDS_DIALOGUE_11880 " " + IDS_DIALOGUE_11881 " " + IDS_DIALOGUE_11882 " " + IDS_DIALOGUE_11883 " " + IDS_DIALOGUE_11884 " " + IDS_DIALOGUE_11885 " " + IDS_DIALOGUE_11886 " " + IDS_DIALOGUE_11887 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11888 " " + IDS_DIALOGUE_11889 " " + IDS_DIALOGUE_11890 " " + IDS_DIALOGUE_11891 " " + IDS_DIALOGUE_11892 " " + IDS_DIALOGUE_11893 " " + IDS_DIALOGUE_11894 " " + IDS_DIALOGUE_11895 " " + IDS_DIALOGUE_11896 " " + IDS_DIALOGUE_11897 " " + IDS_DIALOGUE_11898 " " + IDS_DIALOGUE_11899 " " + IDS_DIALOGUE_11900 " " + IDS_DIALOGUE_11901 " " + IDS_DIALOGUE_11902 " " + IDS_DIALOGUE_11903 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11904 " " + IDS_DIALOGUE_11905 " " + IDS_DIALOGUE_11906 " " + IDS_DIALOGUE_11907 " " + IDS_DIALOGUE_11908 " " + IDS_DIALOGUE_11909 " " + IDS_DIALOGUE_11910 " " + IDS_DIALOGUE_11911 " " + IDS_DIALOGUE_11912 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33344 " " + IDS_DIALOGUE_33345 " " + IDS_DIALOGUE_33346 " " + IDS_DIALOGUE_33347 " " + IDS_DIALOGUE_33348 " " + IDS_DIALOGUE_33349 " " + IDS_DIALOGUE_33350 " " + IDS_DIALOGUE_33351 " " + IDS_DIALOGUE_33352 " " + IDS_DIALOGUE_33353 " " + IDS_DIALOGUE_33354 " " + IDS_DIALOGUE_33355 " " + IDS_DIALOGUE_33356 " " + IDS_DIALOGUE_33357 " " + IDS_DIALOGUE_33358 " " + IDS_DIALOGUE_33359 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33361 " " + IDS_DIALOGUE_33362 " " + IDS_DIALOGUE_33363 " " + IDS_DIALOGUE_33364 " " + IDS_DIALOGUE_33373 " " + IDS_DIALOGUE_33374 " " + IDS_DIALOGUE_33375 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33376 " " + IDS_DIALOGUE_33377 " " + IDS_DIALOGUE_33378 " " + IDS_DIALOGUE_33379 " " + IDS_DIALOGUE_33380 " " + IDS_DIALOGUE_33381 " " + IDS_DIALOGUE_33382 " " + IDS_DIALOGUE_33383 " " + IDS_DIALOGUE_33384 " " + IDS_DIALOGUE_33385 " " + IDS_DIALOGUE_33386 " " + IDS_DIALOGUE_33387 " " + IDS_DIALOGUE_33388 " " + IDS_DIALOGUE_33389 " " + IDS_DIALOGUE_33390 " " + IDS_DIALOGUE_33391 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33392 " " + IDS_DIALOGUE_33393 " " + IDS_DIALOGUE_33394 " " + IDS_DIALOGUE_33395 " " + IDS_DIALOGUE_33396 " " + IDS_DIALOGUE_33397 " " + IDS_DIALOGUE_33398 " " + IDS_DIALOGUE_33399 " " + IDS_DIALOGUE_33400 " " + IDS_DIALOGUE_33401 " " + IDS_DIALOGUE_33402 " " + IDS_DIALOGUE_33403 " " + IDS_DIALOGUE_33404 " " + IDS_DIALOGUE_33405 " " + IDS_DIALOGUE_33406 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33417 " " + IDS_DIALOGUE_33418 " " + IDS_DIALOGUE_33419 " " + IDS_DIALOGUE_33420 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33426 " " + IDS_DIALOGUE_33427 " " + IDS_DIALOGUE_33428 " " + IDS_DIALOGUE_33430 " " + IDS_DIALOGUE_33432 " " + IDS_DIALOGUE_33433 " " + IDS_DIALOGUE_33434 " " + IDS_DIALOGUE_33435 " " + IDS_DIALOGUE_33436 " " + IDS_DIALOGUE_33437 " " + IDS_DIALOGUE_33438 " " + IDS_DIALOGUE_33439 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33441 " " + IDS_DIALOGUE_33442 " " + IDS_DIALOGUE_33443 " " + IDS_DIALOGUE_33444 " " + IDS_DIALOGUE_33445 " " + IDS_DIALOGUE_33449 " " + IDS_DIALOGUE_33450 " " + IDS_DIALOGUE_33451 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33456 " " + IDS_DIALOGUE_33457 " " + IDS_DIALOGUE_33458 " " + IDS_DIALOGUE_33459 " " + IDS_DIALOGUE_33460 " " + IDS_DIALOGUE_33461 " " + IDS_DIALOGUE_33462 " " + IDS_DIALOGUE_33463 " " + IDS_DIALOGUE_33464 " " + IDS_DIALOGUE_33465 " " + IDS_DIALOGUE_33466 " " + IDS_DIALOGUE_33467 " " + IDS_DIALOGUE_33468 " " + IDS_DIALOGUE_33469 " " + IDS_DIALOGUE_33470 " " + IDS_DIALOGUE_33471 " " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33472 " " + IDS_DIALOGUE_33473 " " + IDS_DIALOGUE_33474 " " + IDS_DIALOGUE_33475 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3100 " " + IDS_HINT_3101 " " + IDS_HINT_3102 " " + IDS_HINT_3103 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3105 " " + IDS_HINT_3106 " " + IDS_HINT_3107 " " + IDS_HINT_3108 " " + IDS_HINT_3109 " " + IDS_HINT_3110 " " + IDS_HINT_3111 " " + IDS_HINT_3112 " " + IDS_HINT_3113 " " + IDS_HINT_3114 " " + IDS_HINT_3115 " " + IDS_HINT_3116 " " + IDS_HINT_3117 " " + IDS_HINT_3118 " " +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE29 " " + IDS_MISSIONFAILURE30 " " + IDS_MISSIONFAILURE31 " " + IDS_MISSIONFAILURE32 " " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_NOPICKUP_1 "Can't pick up any more Shuriken!" + IDS_WEAPON_NOPICKUP_2 "Can't pick up any more Grenades!" + IDS_WEAPON_NOPICKUP_3 "Can't pick up any more Angry Kitties!" + IDS_WEAPON_NOPICKUP_4 "Can't pick up any more Explosives!" + IDS_WEAPON_NOPICKUP_5 "Can't pick up any more Coins!" + IDS_WEAPON_NOPICKUP_6 "Can't pick up any more Bear Traps!" + IDS_WEAPON_NOPICKUP_7 "Can't pick up any more Bananas!" + IDS_WEAPON_NOPICKUP_8 "Can't pick up any more Stun Grenades!" + IDS_WEAPON_NOPICKUP_9 "Can't pick up any more Sleep Grenades!" + IDS_WEAPON_NOPICKUP_10 "Can't pick up any more Acid Gas Grenades!" + IDS_WEAPON_NOPICKUP_11 "Can't pick up any more Laughing Gas Grenades!" + IDS_WEAPON_NOPICKUP_12 "Can't pick up any more Bugs!" +END + +STRINGTABLE +BEGIN + IDS_HINT_3120 " " + IDS_HINT_3121 " " + IDS_HINT_3122 " " + IDS_HINT_3123 " " + IDS_HINT_3124 " " + IDS_HINT_3125 " " + IDS_HINT_3126 " " + IDS_HINT_3127 " " + IDS_HINT_3128 " " + IDS_HINT_3129 " " + IDS_HINT_3130 " " + IDS_HINT_3131 " " + IDS_HINT_3132 " " + IDS_HINT_3133 " " + IDS_HINT_3134 " " + IDS_HINT_3135 " " +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6016 " " + IDS_MISSION_TEXT_6017 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3136 " " + IDS_HINT_3137 " " + IDS_HINT_3138 " " + IDS_HINT_3139 " " + IDS_HINT_3140 " " + IDS_HINT_3141 " " + IDS_HINT_3142 " " + IDS_HINT_3143 " " + IDS_HINT_3144 " " + IDS_HINT_3145 " " + IDS_HINT_3146 " " + IDS_HINT_3147 " " + IDS_HINT_3148 " " + IDS_HINT_3149 " " + IDS_HINT_3150 " " + IDS_HINT_3151 " " +END + +STRINGTABLE +BEGIN + IDS_HINT_3152 " " +END + +STRINGTABLE +BEGIN + IDS_NAMES_3300 "" + IDS_NAMES_3301 "Bruno" + IDS_NAMES_3302 "Dr. Schenker" + IDS_NAMES_3303 "Mr. Jones" + IDS_NAMES_3304 "Armstrong" + IDS_NAMES_3305 "Yamata-san" + IDS_NAMES_3306 "Hawkins" + IDS_NAMES_3307 "Barnes" + IDS_NAMES_3308 "Kamal" + IDS_NAMES_3309 "Banerjee" + IDS_NAMES_3310 "Harij" + IDS_NAMES_3311 "Pilot" +END + +STRINGTABLE +BEGIN + IDS_NAMES_3312 "Santa" + IDS_NAMES_3313 "Police" + IDS_NAMES_3314 "Hatori-san" + IDS_NAMES_3315 "Malpani" + IDS_NAMES_3316 "Spencer" + IDS_NAMES_3317 "Cate" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7096 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33575 "Somebody revive me!" + IDS_DIALOGUE_33579 "Over here!" + IDS_DIALOGUE_33582 "Cover me!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33584 "Be stealthy!" + IDS_DIALOGUE_33588 "Charge!" + IDS_DIALOGUE_33590 "Check your fire!" + IDS_DIALOGUE_33593 "Stop it, jackass!" + IDS_DIALOGUE_33596 "Wait!" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2928 "examine" + IDS_TARGET_2929 "activate" + IDS_TARGET_2930 "begin interrogation" + IDS_TARGET_2931 "reset power" + IDS_TARGET_2932 "position rocket" + IDS_TARGET_2933 "fuel rocket" + IDS_TARGET_2934 "extend gantry" + IDS_TARGET_2935 "launch rocket" + IDS_TARGET_2936 "place launch key" + IDS_TARGET_2937 "activate mining laser" + IDS_TARGET_2938 "insert battery" + IDS_TARGET_2939 "charge battery" + IDS_TARGET_2940 "activate airlock" + IDS_TARGET_2941 "insert cannonball" + IDS_TARGET_2942 "shoot lock" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DD_04 "Judgement in Japan (4-16)" + IDS_MISSION_DD_05 "Winter War (4-16)" + IDS_MISSION_DD_06 "Oceanic Opposition (4-16)" + IDS_MISSION_DD_07 "Russian Rampage (4-16)" + IDS_MISSION_DD_08 "Siberian Strife (4-16)" + IDS_MISSION_DD_09 "Violence in the Villa (4-16)" + IDS_MISSION_DE_01 "Bollywood (4-8)" + IDS_MISSION_DE_02 "Chill Kill (8-16)" + IDS_MISSION_DE_03 "The Curse of Kali (4-8)" + IDS_MISSION_DE_04 "Mediterranean Mayhem (4-8)" + IDS_MISSION_DE_05 "Italian Invasion (4-8)" + IDS_MISSION_DE_06 "Dojo of Death (8-16)" + IDS_MISSION_DE_07 "Moonbase (8-16)" + IDS_MISSION_DE_08 "Abandoned Prison (8-16)" + IDS_MISSION_DE_09 "Rome in Ruins (4-8)" + IDS_MISSION_DE_10 "Trailer Park (2-4)" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "ResShared.rc" +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/ClientRes/Lang/EN/credits.txt b/Jack/ClientRes/Lang/EN/credits.txt new file mode 100644 index 00000000..63359021 --- /dev/null +++ b/Jack/ClientRes/Lang/EN/credits.txt @@ -0,0 +1,334 @@ +MONOLITH PRODUCTIONS: +>BIG +>TIME:2.0 +>POS:UL +## +The Contract J.A.C.K. Team: +(In Alphabetical Order) + +James Ackley, Lead Sound Designer +Scott Albaugh, Senior 2D/3D Artist/Animator +Matt Allen, Senior 2D/3D Artist +Ellen Beeman, Producer +Curt Collins, 2D/3D Artist +Kevin Deadrick, Level Designer +>TIME:3.0 +>POS:UL +## +Michael Drummond, Level Designer +Kevin Francis, Senior Engineer +Jim Geldmacher, Engineer +Jon Gramlich, Associate Producer/QA Lead +Chris Hewett, Director of Development +Rodney Houle, Level Designer +>TIME:3.0 +>POS:UL +## +Craig Hubbard, Creative Director/Lead Game Designer +Steve Lee, Senior 2D/3D Artist +David Longo, Art Director/Lead 3D Artist +Piotr Mintus, Engineer +John Mulkey, Lead Level Designer +Jeff Orkin, Senior Engineer +>TIME:3.0 +>POS:UL +## +John O'Rorke, Senior Engineer +Brian Pamintuan, Sound Designer +Russ Pecoraro, Engineer +Brad Pendleton, Lead Engineer +Dusty Peterson, 2D/3D Artist +Sasha Runnels, Senior 2D/3D Artist +>TIME:3.0 +>POS:UL +## +Wes Saulsberry, Art Lead +Kevin Stephens, Director of Engineering +Akika Tanaka, 2D/3D Artist +Cassano Thruston, Sound Designer +Simon Wong, Motion Capture Engineer + +Music composed and arranged by Nathan Grigg +>TIME:3.0 +>POS:UL +## +Special thanks to the +following Monolith personnel: + +Andrea Barringer +Dan Brady +Wayne Burns +Dan Fagan +Terry Franguiadakis +>TIME:3.0 +>POS:UL +## +Andy Grant +Jason Hall +J.J. Hoesing +Patti Kail +Eric Kohler +>TIME:2.0 +>POS:UL +## +Gary Kussman +Spencer Maiers +Dan Miller +Frank Rooke +Samantha Ryan +>TIME:2.0 +>POS:UL +## +Jonathan Stein +Jim Totaro +Jim Wallingford +Sandra Watanabe +Kiyotaka Yaguchi +>TIME:2.0 +>POS:UL +## +Special thanks to: + +Justin Cooney, ATI +Todd Clauson, Intel +Cindy Desmarais, Glitchpop +Keith Galocy, NVidia +Greg James, Nvidia +>TIME:3.0 +>POS:UL +## +Jamie Lopez, The Actor’s Group +Matt McClellan, Intel +Steve Mitchell, Steve Mitchell Studios +Derek Reynolds, Intel +Kevin Schumacher, Topo Swope Talent +Topo Swope, Topo Swope Talent +>TIME:3.0 +>POS:UL +## +Voice Cast: + +John Armstrong (Il Pazzo & Various Enemies) +Jock Blaney (Dmitrij Volkov) +Ken Boynton (Dr. Harij & Various Enemies) +Collin Byrne (Various Enemies) +David Gehrman (Various Enemies) +>TIME:3.0 +>POS:UL +## +Motion Capture Cast: + +Jenna Hawkins +John Kaufmann +Justin Emeka +>TIME:2.0 +>POS:UL +## +SIERRA ENTERTAINMENT/VIVENDI UNIVERSAL PUBLISHING +>TIME:2.0 +>BIG +>POS:UL +## +Executive Producer: +Rich Robinson + +Production Assistant: +Angela Mendez +>TIME:2.0 +>POS:UL +## +VP Development: +Kelly Zmak + +Production Operations Manager: +Julie Pitt +>TIME:2.0 +>POS:UL +## +Director, Marketing: +Lee Rossini + +Brand Manager: +Adam Fossa +>TIME:2.0 +>POS:UL +## +Marketing Associate: +Beth Freeman + +Account Supervisor: +Egil Gloersen +>TIME:2.0 +>POS:UL +## +Director, Public Relations: +Sarita Churchill + +VP QA: +Rod Shean +>TIME:2.0 +>POS:UL +## +QA Director: +Stuart Hay + +QA Brand Manager: +David Schapiro +>TIME:2.0 +>POS:UL +## +QA Project Leads: +William Guerrero, Joseph Peren + +QA Associate Lead: +Robert Bare + +QA Associate Lead: +Michael Kurilko +>TIME:3.0 +>POS:UL +## +QA Testers: + +Alex Hammond +Andrew Ebert +Armond James +Chris Miller +Daryl Vaughn +David Dionisio +Don Carroll +>TIME:3.0 +>POS:UL +## +Dorian White +Dylan Kozlowski +Jerry Hung +Jonathan Backer +Jonathan Bigalbal +Justin Walker +Kevin Jefferson +>TIME:3.0 +>POS:UL +## +Kevin Lo +Kit Chan +Mark Yao +Matthew Byward +Matthew Jensen +Michael Choung +Michael Jackson +>TIME:3.0 +>POS:UL +## +Minh Do +Phillip Semenik +Pierre Shorette +Raymond Hsiao +Robert Scott +Sergio Terrazas +>TIME:3.0 +>POS:UL +## +Configuration Testing: + +Randy Linch +Jaime Rios +Afolabi Akibola +Jason Perry +Andrew Ebert +Robert Gardner +Min Huang +Mark Jihanian +Jack Yao +>TIME:4.0 +>POS:UL +## +Compatibility Testing: + +Rey Castillo +Bob Eatmon +Peter Elmore +Don. Carroll +Jonathan Backer +Matthew Jensen +James Pasque +Raymond Hsiao +Veronica Valdez +>TIME:4.0 +>POS:UL +## +Lab Tech: + +Jon Walton +Stephen Yang +Richard Benavides +Jeffery Kuhn +>TIME:3.0 +>POS:UL +## +Special Thanks: + +Jim Wilson +Michael Pole +Peter Della Penna +Shari Lindholm +James Shaw +Tracy Gibbs +>TIME:4.0 +>POS:UL +## +(c) 2003 Monolith Productions, Inc. All rights +reserved. Contract J.A.C.K. and Cate Archer +are trademarks of Monolith Productions, Inc. + +Development by Monolith Productions, Inc. + +Sierra and the Sierra logo are registered +trademarks or trademarks of Sierra Entertainment, +Inc. in the U.S. and/or other countries. + +No One Lives Forever, Vivendi Universal Games +and the Vivendi Universal Games logo are +trademarks of Vivendi Universal Games, Inc. +>TIME:4.0 +## +This product contains Jupiter Technology +licensed from Touchdown Entertainment, Inc. +(c) 2003 Touchdown Entertainment, Inc. All rights +reserved. + +Uses Bink Video. Copyright (c)1997-2003 +by RAD Game Tools, Inc. + +MPEG Layer-3 audio coding technology licensed +from Fraunhofer IIS and Thomson multimedia. +>TIME:4.0 +## +NVIDIA, the NVIDIA Logo, NVIDIA The Way It's +Meant to be Played Logo and other NVIDIA +Marks are trademarks of NVIDIA Corporation +in the United States and other countries. + +Windows is a registered trademark or +trademark of Microsoft Corporation in the +United States and/or other countries. + +Pentium is a registered trademark of Intel +Corporation. + +The ratings icon is a trademark of the +Interactive Digital Software Association. + +Any other trademarks are the property of +their respective owners. + +Earth, Moon, and Sun source photos courtesy +of the National Aeronautics and Space +Administration (NASA). + +Thanks for playing Contract J.A.C.K.! +>TIME:4.0 +## +>END + + diff --git a/Jack/ClientRes/Lang/EN/intro.txt b/Jack/ClientRes/Lang/EN/intro.txt new file mode 100644 index 00000000..76b914e8 --- /dev/null +++ b/Jack/ClientRes/Lang/EN/intro.txt @@ -0,0 +1,104 @@ +A Fox Interactive and Sierra Entertainment Production + +A Monolith Productions Game +>TIME:3.0 +>BIG +## +No One Lives Forever 2: +A Spy in H.A.R.M.'s Way +is powered by the +LithTech Jupiter System +>TIME:2.0 +>BIG +## +Fox Interactive: +>BIG +>TIME:2.0 +>POS:UL +## +Chris Miller, Producer +Aaron Blean, Associate Producer + + +Fox Quality Assurance Department: +Igor Krinitskiy, Assistant Quality Assurance Manager +Francis Choi, Lead Tester +>TIME:7.0 +>POS:UL +## +Test Team: +Geoff Bent +Scott Carroll +Michael Graham +Jen Johnson +Cris Lee +Jonathan Masterson +Billy Pamier +Denise Pater +Luke Thai +Hal Zabie + +Localization Manager: +Kristian Davila +>TIME:8.0 +>POS:UL +## +Special Thanks: +Eric Asevo +Steve Bersch +Pete Cesario +Lindsey Fischer +Ivo Gerscovich +Greg Goodrich +Tim Hall +Tim Harrison +Michael Heilemann +Becky Kneubuhl +Luke Letizia +Dan Mackechnie +Gabriel Mann +John Melchior +>TIME:8.0 +>POS:UL +## +Megan O'Brien +Paul Pawlicki +Michael Pole +Rich Ragsdale +Tim Ramage +Jamie Samson +Kirk Scott +Dave Shaw +David Stalker +Kristin Sutter (www.nolfgirl.com) +Tim Tran +Jack Van Leer +Ellen Williams +Chris Wilson +Asylum Studio (www.asylumstudio.com) +>TIME:8.0 +>POS:UL +## +Lisa Fredsti (Fox Library) +Brian Thomas (Fox Library) +Brian Harvey (NVIDIA) +Jessie Lawrence (Creative Labs) +Mike Drummelsmith (Matrox) +Marisa Porter, MCA +Van Riker, 1600 Records +John Dongelmans (Microsoft) +Tim Godwin, Line 6 +>TIME:7.0 +>POS:UL +## +Working with the NOLF team continues +to be a great experience. +Thank you for all the late nights, +the lost weekends and most of all, +for your incredible commitment to +the quality of this game. +You're awesome! -CM +>TIME:6.0 +>POS:UL +## +END \ No newline at end of file diff --git a/Jack/ClientRes/Lang/ES/ClientRes.rc b/Jack/ClientRes/Lang/ES/ClientRes.rc new file mode 100644 index 00000000..0d275803 --- /dev/null +++ b/Jack/ClientRes/Lang/ES/ClientRes.rc @@ -0,0 +1,7715 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\ClientRes.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "..\..\..\shared\resshared.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\ClientRes.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""..\\..\\..\\shared\\resshared.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""ResShared.rc""\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT +// + +CREDITS TEXT "credits.txt" +INTRO TEXT "intro.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR "..\\..\\arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_TITLE_GAME "UN SOLO JUGADOR" + IDS_TITLE_DIFFICULTY "DIFICULTAD" + IDS_TITLE_OPTIONS "OPCIONES" + IDS_TITLE_NEWGAME "PARTIDA NUEVA" + IDS_TITLE_LOADGAME "CARGAR PARTIDA" + IDS_TITLE_SAVEGAME "GUARDAR PARTIDA" + IDS_TITLE_CUSTOMLEVELS "PERSONALIZAR NIVELES" + IDS_TITLE_DISPLAYOPTIONS "OPCIONES DE PANTALLA" + IDS_TITLE_TEXTURE "RESOLUCIÓN DE TEXTURA" + IDS_TITLE_PERFORMANCE "RENDIMIENTO" +END + +STRINGTABLE +BEGIN + IDS_TITLE_SOUND "SONIDO" + IDS_TITLE_KEYBOARD "TECLADO" + IDS_TITLE_MOUSE "RATÓN" + IDS_TITLE_JOYSTICK "JOYSTICK" + IDS_TITLE_BRIEFING "MISIÓN" + IDS_NO_DM_MAPS "No maps available for this game mode." + IDS_TITLE_ENDMISSION "RESUMEN DE LA MISIÓN" + IDS_TITLE_PROFILE "PERFIL DEL JUGADOR" + IDS_TITLE_PLAYER "JUGADOR" + IDS_TITLE_CROSSHAIR "PUNTO DE MIRA" + IDS_TITLE_CONTROLS "CONTROLES" + IDS_TITLE_CONFIGURE "CONFIGURAR CONTROLES" + IDS_TITLE_MULTI "MULTIJUGADOR" + IDS_TITLE_HOST_OPTIONS "OPCIONES DE LA PARTIDA" + IDS_TITLE_OBJECTIVES "OBJETIVOS DE LA MISIÓN" +END + +STRINGTABLE +BEGIN + IDS_TITLE_GAME_OPTIONS "OPCIONES DE LA PARTIDA" + IDS_TITLE_INVENTORY "EQUIPO" + IDS_TITLE_ADVDISPLAY "OPCIONES AVANZADAS DE PANTALLA" + IDS_TITLE_EFFECTS "EFECTOS ESPECIALES" + IDS_TITLE_JOIN "UNIRSE A LA PARTIDA" + IDS_TITLE_HOST "ALOJAR PARTIDA" + IDS_TITLE_HOST_MISSIONS "MISIONES" + IDS_TITLE_PLAYER_SETUP "CONFIGURACIÓN DEL JUGADOR" + IDS_TITLE_SUMMARY "JUGADOR" + IDS_CHAPTERS "Lista de capítulos" + IDS_TITLE_INTEL "INTELIGENCIA" + IDS_TITLE_HOST_CAMPAIGN "MAP SELECTION" + IDS_TITLE_SYSTEM "SISTEMA" + IDS_TITLE_KEYS "INVENTARIO" + IDS_HOST_NAME_TDM_DEFAULT "NOLF2 Team Deathmatch" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_DD_DEFAULT "NOLF2 Doomsday" + IDS_HELP_MULTIPLAYER_LAN + "Iniciar una partida multijugador en una LAN o establecer las opciones multijugador." + IDS_TITLE_TEAM "TEAM SETUP" + IDS_HELP_CHAPTERS "Volver a jugar un capítulo." + IDS_HELP_TEAM_NAME "Set the name of the team." + IDS_HELP_CHAPTER_LIST "Volver a jugar el capítulo resaltado." + IDS_HELP_FAILURE "Pulsa F9 para Carga rápida.\nPulsa cualquier otra tecla para ir a la Pantalla de carga." + IDS_PRESS_ANY_KEY "Pulsa cualquier tecla para continuar." + IDS_NORMAL "Normal" + IDS_PERFORMANCE_TEST "Prueba de configuración" + IDS_CUSTOM "Personalizar" + IDS_ON "Activado" + IDS_OFF "Desactivado" + IDS_YES "Sí" + IDS_NO "No " + IDS_NONE "Ninguno" +END + +STRINGTABLE +BEGIN + IDS_YES_VK_CODE "89" + IDS_NO_VK_CODE "78" + IDS_ALLOW_GORE "TRUE" + IDS_END_TIME "Se ha alcanzado el límite de tiempo." + IDS_END_FRAG "Se ha alcanzado el límite de muertes." + IDS_END_UNKNOWN "Nivel cancelado." + IDS_USE_PASSWORD "Proteger servidor" + IDS_HELP_PASSWORD "Requiere que los jugadores introduzcan una contraseña al unirse a una sesión." + IDS_PASSWORD "Contraseña" + IDS_HELP_ENTER_PASSWORD "Especifica la contraseña que los jugadores deben introducir para unirse a una sesión." + IDS_NOCUSTOMWORLDS "No se han encontrado mundos personalizados" + IDS_DEMONOCUSTOMWORLDS "Los mundos personalizados no están disponibles en la demo." + IDS_DEMODISCONNECT "Desconectado del servidor. (Nota: las partidas demo se deben alojar en servidores demo)" + IDS_DEMOINFO "información" + IDS_WAITINGFOROTHERPLAYERS "Esperando a otros jugadores..." + IDS_NOJOYSTICKDETECTED "No se ha detectado ningún joystick o mando. Comprueba la configuración y conexión del mando." +END + +STRINGTABLE +BEGIN + IDS_FEW "Pocos" + IDS_SOME "Algunos" + IDS_LOTS "Muchos" + IDS_ALL "Todo" + IDS_CLOSE "Cerrar" + IDS_SPACER " - " + IDS_BACK "Atrás" + IDS_CREATE "Crear" + IDS_LOAD "Cargar" + IDS_DELETE "Suprimir" + IDS_OK "Aceptar" + IDS_CANCEL "Cancelar" + IDS_ENTER_NAME "Introduce un nombre para esta partida:" + IDS_CONTINUE "Siguiente" + IDS_EMPTY_SLOT "[Ranura vacía]" + IDS_WHEEL_UP "Girar hacia arriba" +END + +STRINGTABLE +BEGIN + IDS_WHEEL_DOWN "Girar hacia abajo" + IDS_SINGLEPLAYER "Un solo jugador" + IDS_MULTIPLAYER "Multijugador (Internet)." + IDS_OPTIONS "Opciones" + IDS_CREDITS "Créditos" + IDS_EXIT "Salir" + IDS_NEWGAME "Partida nueva" + IDS_LOADGAME "Cargar partida" + IDS_SAVEGAME "Guardar partida" + IDS_CUSTOM_LEVEL "Personalizar nivel" + IDS_DISPLAY "Pantalla" + IDS_SOUND "Sonido" + IDS_KEYBOARD "Teclado" + IDS_MOUSE "Ratón" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_DD_LGT_SCORE "Light piece score" + IDS_DD_LGT_SCORE_HELP "Points recevived for placing a light piece of the device." + IDS_DD_REMOVED_SCORE "Steal piece score" + IDS_DD_REMOVED_SCORE_HELP + "Points recevived for stealing a piece of the opponent's device." + IDS_HOST_REMOVE_WEAPON "< Remove restriction" + IDS_HELP_ADD_WEAPONS "Add items to the restricted list." + IDS_HELP_REM_WEAPONS "Remove items from the restricted list." + IDS_MISSING_WORLD "Unable to load world resources." + IDS_GAME_VERSION "v1.0" + IDS_HOST_NAME_DE_DEFAULT "NOLF2 Demolition" + IDS_WEAPONSSTAY_HELP "Toggle whether or not weapons stay after picking them up." + IDS_HELP_FILTER_TYPE "Set filtering of servers based on game type." + IDS_UNKNOWN "Unknown" + IDS_CONTROL_MANUALAIM "Manual Aim" +END + +STRINGTABLE +BEGIN + IDS_ABORT "Salir de la partida" + IDS_DECODEMSG_CHARSET "AaBbCcDdFfGgHhJjKkLlMmNnÑnPpQqRrSsTtVvWwXxYyZz" + IDS_SCMDPASSWORD "Contraseña del SCMD" + IDS_HELP_ALLOWSCMD "Permite registro al adminstrador del SCMD." + IDS_HOST_NAME_DM_DEFAULT "Combate a muerte NOLF 2" + IDS_TAGGEDMYSELF "¡Te has matado a ti mismo!" + IDS_HETAGGEDME "¡Te ha matado %1!s!" + IDS_ITAGGEDHIM "¡Has matado a %1!s!" + IDS_HETAGGEDHIMSELF "¡%1!s! se ha matado a sí mismo!" + IDS_HETAGGEDHIM "¡%1!s! ha matado a %2!s!" + IDS_IWASTAGGED "¡Te han matado!" + IDS_HEWASTAGGED "¡%1!s! ha muerto!" + IDS_SCORE_SCORE "Puntuación:" + IDS_SCORE_PLAYERS "Jugadores:" + IDS_SCORE_KILLS "Muertos:" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK "Configurar joystick / mando" + IDS_RESTOREDEFAULTS "Restaurar la configuración predeterminada" + IDS_CONFIGURE "Configurar controles" + IDS_BRIEFING "Instrucciones:" + IDS_OBJECTIVES "Objetivos:" + IDS_NORMALTURN "Velocidad de giro normal" + IDS_FASTTURN "Velocidad de giro elevada" + IDS_LOOKUP "Velocidad para mirar arriba y abajo" + IDS_START_MISSION "Iniciar misión" + IDS_CH_ALPHA "Opacidad" + IDS_CH_R "Rojo" + IDS_CH_G "Verde" + IDS_CH_B "Azul" + IDS_CH_STYLE "Estilo" + IDS_CH_BASIC "Básico" + IDS_CH_CROSSBAR "Barra" +END + +STRINGTABLE +BEGIN + IDS_CH_DOTCROSS "Puntos cruzados" + IDS_CH_POST "Envío" + IDS_CH_DOT "Punto" + IDS_CH_CORNER "Esquina" + IDS_CH_DYNAMIC "Escala dinámica" + IDS_CONTROLS_CROSSHAIR "Punto de mira" + IDS_PROFILE "Perfil" + IDS_HELP_PROFILE "Elegir, crear o suprimir los perfiles de jugador." + IDS_56K "56k" + IDS_CABLE "Cable" + IDS_TEAM_NAME "Team name" + IDS_DSL_HIGH "ADSL (Alta)" + IDS_T1 "T1" + IDS_T3 "T3" + IDS_BANDWIDTH_CYCLE "Ancho de banda" + IDS_HELP_BANDWIDTH_CYCLE "Recorre la configuración de ancho de banda." +END + +STRINGTABLE +BEGIN + IDS_HELP_BANDWIDTH_EDIT "Especifica un ancho de banda personalizado." + IDS_BANDWIDTH_EDIT "Ancho de banda (personalizado)" + IDS_PROFILE_LIST "Perfiles:" + IDS_RESUME "Reanudar la partida" + IDS_CONTINUE_GAME "Continuar partida" + IDS_TEAM_MODEL "Team model" + IDS_GAMMA "Brillo" + IDS_HEADBOB "Oscilación de la cabeza" + IDS_WEAPONSWAY "Balanceo de arma" + IDS_HELP_HEADBOB "Define la intensidad del movimiento de cabeza simulado al caminar." + IDS_HELP_WEAPONSWAY "Define la intensidad del movimiento de arma simulado al caminar." + IDS_HELP_PICKUP_MSG_DUR "Define la cantidad de tiempo que los mensajes permanecen en la pantalla." + IDS_PICKUP_MSG_DUR "Duración de mensaje" + IDS_IGNORE_TAUNTS "No hacer caso de las provocaciones" + IDS_HELP_IGNORE_TAUNTS "Alterna el uso de provocaciones sonoras." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_TAUNTS "Provocaciones sonoras" + IDS_HELP_ALLOW_TAUNTS "Alterna el uso de provocaciones sonoras." + IDS_RENAME "Cambiar nombre" + IDS_VERSION_FILTER "Versión:" + IDS_MAIN "Menú principal" + IDS_HELP_GAMMA "Ajusta el nivel gamma de la pantalla." + IDS_HELP_SINGLEPLAYER "Iniciar, cargar o guardar partida de un solo jugador." + IDS_HELP_MULTIPLAYER "Iniciar una partida multijugador o definir opciones multijugador." + IDS_HELP_OPTIONS "Definir las opciones de pantalla, sonido, control, juego y rendimiento." + IDS_HELP_EXIT "Salir del juego." + IDS_HELP_NEW "Iniciar una partida nueva." + IDS_HELP_LOAD "Cargar una partida guardada." + IDS_HELP_SAVE "Guardar la partida actual." + IDS_HELP_CUSTOM "Cargar un nivel personalizado." + IDS_HELP_PROFILE_CREATE "Crear un perfil nuevo." + IDS_HELP_BACK "Volver a la pantalla anterior." +END + +STRINGTABLE +BEGIN + IDS_HELP_DIFFICULTY "Definir la dificultad del juego." + IDS_HELP_DISPLAY "Definir las opciones de pantalla." + IDS_HELP_SOUND "Definir opciones de audio." + IDS_HELP_CONTROLS "Definir configuraciones del controlador." + IDS_HELP_RENDERER "Elegir renderizador." + IDS_HELP_RESOLUTION "Definir la resolución de pantalla y profundidad de bit." + IDS_HELP_ANTIALIAS "Activar el suavizado de bordes de la pantalla completa." + IDS_HELP_DETAILLEVEL "Definir configuración predefinida de detalle de texturas." + IDS_HELP_ADVDISPLAY "Definir opciones de pantalla que pueden afectar al rendimiento." + IDS_HELP_LOOKSPRING "Centrar la vista automáticamente cuando te muevas" + IDS_HELP_RUNLOCK "Alterna correr como movimiento predeterminado." + IDS_HELP_CROSSHAIR "Alterna el uso del punto de mira." + IDS_HELP_GORE "Alterna el uso de efectos de sangre." + IDS_HELP_SHADOWS "Configura el nivel de detalle de las sombras de los personajes." + IDS_HELP_TEAM_MODEL "Set the model used for the team." + IDS_HOST_CAMPAIGN "Map Selection" +END + +STRINGTABLE +BEGIN + IDS_WON_VAL_FAIL "Error al validar el cliente" + IDS_WON_SERV_VAL "Validación de servidor iniciada" + IDS_DISCONNECTED_FROM_SERVER "Desconectado del servidor." + IDS_CANT_CONNECT_TO_SERVER "No se puede conectar con el servidor" + IDS_CONTROL_FORWARD "Hacia delante" + IDS_CONTROL_BACKWARD "Hacia atrás" + IDS_CONTROL_TURNLEFT "Girar a la izquierda" + IDS_CONTROL_TURNRIGHT "Girar a la derecha" + IDS_CONTROL_STRAFE "Paso lateral" + IDS_CONTROL_STRAFELEFT "Paso a la izquierda" + IDS_CONTROL_STRAFERIGHT "Paso a la derecha" + IDS_CONTROL_TURNAROUND "Dar vuelta" + IDS_CONTROL_RUN "Pasar sigilosamente" + IDS_CONTROL_FIRE "Disparar" + IDS_CONTROL_ACTIVATE "Acción" + IDS_CONTROL_JUMP "Saltar" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RELOAD "Recargar" + IDS_CONTROL_DUCK "Cuclillas" + IDS_CONTROL_NEXTWEAPON "Arma siguiente" + IDS_CONTROL_PREVIOUSWEAPON "Arma anterior" + IDS_CONTROL_LOOKUP "Mirar arriba" + IDS_CONTROL_LOOKDOWN "Mirar abajo" + IDS_CONTROL_CENTERVIEW "Centrar vista" + IDS_CONTROL_INVENTORY "Equipo" + IDS_CONTROL_MISSION "Estado de la misión" + IDS_CONTROL_HOLSTERWEAPON "Desenfundar arma" + IDS_CONTROL_STATUS "Estado del jugador" + IDS_CONTROL_SAY "Hablar" + IDS_CONTROL_ALT_FIRING "Fuego alternativo" + IDS_CONTROL_NEXT_AMMO "Cambiar munición" + IDS_CONTROL_KEYS "Inventario" + IDS_CONTROL_INTEL "Inteligencia" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RUNLOCKTOGGLE "Alternar Pasar sigilosamente" + IDS_CONTROL_WEAPON1 "Arma 1" + IDS_CONTROL_WEAPON2 "Arma 2" + IDS_CONTROL_WEAPON3 "Arma 3" + IDS_CONTROL_WEAPON4 "Arma 4" + IDS_CONTROL_WEAPON5 "Arma 5" + IDS_CONTROL_WEAPON6 "Arma 6" + IDS_CONTROL_WEAPON7 "Arma 7" + IDS_CONTROL_WEAPON8 "Arma 8" + IDS_CONTROL_WEAPON9 "Arma 9" + IDS_CONTROL_WEAPON10 "Arma 10" + IDS_CONTROL_ZOOM_IN "Zoom" + IDS_CONTROL_ZOOM_OUT "Alejar zoom" + IDS_CONTROL_UNASSIGNED "[sin asignar]" + IDS_CONTROL_NEXTVISMODE "Gafas de sol" + IDS_CONTROL_COMPASS "Brújula" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_LEANLEFT "Inclinarse a la izquierda" + IDS_CONTROL_LEANRIGHT "Inclinarse a la derecha" + IDS_CONTROL_CROUCHTOGGLE "Alternar cuclillas" + IDS_CONTROL_MOVE_BODY "Move body/piece" + IDS_CONTROL_FLASHLIGHT "Luz del llavero" + IDS_CONTROL_RADIO "Radio" + IDS_CONTROL_LASTWEAPON "Última arma" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_GAME_OPTIONS "Partida" + IDS_HELP_GAME_OPTIONS "Define opciones de juego y contenido." + IDS_DISPLAY_SUBTITLES "Subtítulos" + IDS_TEAM_2 "Red team" + IDS_HELP_LOOP_MISSIONS "Restart first map after completing the last map." + IDS_CAMPAIGN_LIST "Map Lists:" + IDS_STAT_COMBAT ".combate" + IDS_STAT_DEFENSE ".defensa" + IDS_STAT_ACCURACY ".precisión" + IDS_HELP_CAMPAIGN_CREATE "Create a new map list." + IDS_HELP_CAMPAIGN_LOAD "Load the selected map list." + IDS_HELP_SUBTITLES "Alterna el uso de subtítulos." + IDS_GAME_TYPE "Tipo de partida" + IDS_HELP_TEAM_1 "Set options for the Blue team" + IDS_HELP_TEAM_2 "Set options for the Red team" +END + +STRINGTABLE +BEGIN + IDS_DEDICATED "Servidor dedicado" + IDS_HELP_DEDICATED "Alternar entre iniciar como servidor dedicado o no." + IDS_GAME_LANGUAGE "Spanish" + IDS_MENU_VKEY_YES "89" + IDS_MENU_VKEY_NO "78" + IDS_DEMOVERSION "DEMOSTRACIÓN DE TECNOLOGÍA v1.0" + IDS_HELP_CAMPAIGN_DELETE "Delete the selected map list." + IDS_HELP_CAMPAIGN_RENAME "Rename the selected map list." + IDS_HELP_VERSION_FILTER "Alterna el filtro de servidores en función del número de versión." + IDS_ALL_VERSIONS "Todas las versiones" + IDS_CURRENT_VERSION "Versión actual" + IDS_PERFORMANCE "Rendimiento" + IDS_HELP_PERFORMANCE "Definir las opciones relacionadas con el rendimiento." + IDS_SFX "Efectos especiales:" + IDS_HELP_SFX "Define opciones de efectos especiales." + IDS_POLYGRIDBUMP "Mapear relieve cuadríc. polígonos" +END + +STRINGTABLE +BEGIN + IDS_HELP_POLYGRIDBUMP "Activa el uso del mapeado de relieve en las cuadrículas de los polígonos." + IDS_POLYGRIDFRES "Fresnel cuadrículas de polígonos" + IDS_HELP_POLYGRIDFRES "Activa el uso del fresnel en las cuadrículas de los polígonos para que los reflejos sean más realistas." + IDS_TEXTURE_RES "Resolución de textura" + IDS_HELP_TEXTURE_RES "Define la resolución de las texturas utilizadas en la partida." + IDS_BUMPMAP "Mapeado de relieve del entorno" + IDS_HELP_BUMPMAP "Activa el uso del mapeado de relieve del entorno." + IDS_BILINEAR "Filtrado bilineal" + IDS_HELP_BILINEAR "Activa el uso del filtrado bilineal en las texturas." + IDS_SHADOWS "Sombras" + IDS_SOUND_HIGH "Alta" + IDS_SOUND_LOW "Baja" + IDS_QUICKLOAD "Carga rápida (F9)" + IDS_QUICKSAVE "Guardado rápido (F6)" + IDS_LOADCURRENT "Guardado automático" + IDS_OBJECTIVES_OPTIONAL " (opcional)" +END + +STRINGTABLE +BEGIN + IDS_OBJECTIVES_CHANGED "Objetivos de misión actualizados" + IDS_X_OF_Y "%1!d! de %2!d!" + IDS_SERVER_LAN "Sólo LAN" + IDS_USE_CROSSHAIR "Utilizar punto de mira" + IDS_HUD_LAYOUT0 "Barra de salud, texto de munición" + IDS_HUD_LAYOUT1 "Texto de salud, texto de munición" + IDS_HUD_LAYOUT2 "Barra de salud, barra de munición" + IDS_HUDLAYOUT "Estilo del presentador frontal de datos" + IDS_HELP_HUDLAYOUT "Definir el estilo de la pantalla de interfaz." + IDS_NO_INVENTORY "[Sin inventario]" + IDS_VEHICLETURN "Velocidad de giro de vehículo" +END + +STRINGTABLE +BEGIN + IDS_HELP_VEHICLETURN "Definir velocidad de giro para los vehículos." + IDS_HELP_RETURN "Volver a la partida." + IDS_TRILINEAR "Filtrado trilineal" + IDS_HELP_TRILINEAR "Alterna el uso del filtrado trilineal." + IDS_ANISOTROPIC "Filtrado anisotrópico" + IDS_HELP_ANISOTROPIC "Alterna el uso del filtrado anisotrópico." + IDS_DETAILLEVEL "General" + IDS_TRACERS "Trazadoras" + IDS_HELP_TRACERS "Alterna los efectos de las trazadoras en las armas." + IDS_DISPLAY_CURRENTMODE "Modo de pantalla" + IDS_SERVER_NORESPONSE "El servidor no responde" + IDS_SERVER_DETAIL_VERSION + "Los detalles no están disponibles porque el servidor del juego es una versión distinta." + IDS_DISPLAY_CHANGE "Cambiar modo" + IDS_DISPLAY_GORE "Sangre" + IDS_ENV_DETAIL "Entorno" + IDS_HELP_ENV_DETAIL "Define el nivel de detalle utilizado en el entorno incluyendo la nieve y los efectos de la hierba." +END + +STRINGTABLE +BEGIN + IDS_RESPAWN "Regeneración" + IDS_SOUND_MUSICENABLED "Música" + IDS_SOUND_MUSICVOL "Volumen de música" + IDS_SOUND_FX "Efectos de sonido" + IDS_SOUND_FXVOL "Volumen de efectos de sonido" + IDS_SOUND_QUALITY "Calidad de efectos de sonido" + IDS_SOUND_NONE "Ninguno" + IDS_SOUND_IMA "Música directa" + IDS_LOW "Bajo" + IDS_MEDIUM "Medio" + IDS_HIGH "Alto" + IDS_CUSTOMIZED "Personalizado" + IDS_MOUSE_MOUSELOOK "Mirar siempre con el ratón" + IDS_MOUSE_LOOKSPRING "Centrado automático" + IDS_MOUSE_INVERTYAXIS "Invertir eje y" + IDS_MOUSE_SENSITIVITY "Sensibilidad del ratón" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCHING "buscando" + IDS_SPEECH_FXVOL "Volumen de diálogos" + IDS_HELP_SPEECHVOL "Definir volumen de diálogos." + IDS_TARGET_REVIVE "reanimar %1!s!" + IDS_CURRENT_CAMPAIGN "Current Map List: %1!s!" + IDS_M_STAT_UNDAMAGED "Has evitado todo el daño." + IDS_M_STAT_TIMES_HIT "Te han alcanzado %1!d! veces." + IDS_M_STAT_MARKSMANSHIP "Puntería: %1!d! disparos a la cabeza." + IDS_M_STAT_ACCURACY "Precisión: %1!d! impactos, %2!d! disparos (%3!d! %%)" + IDS_IWASKILLED "¡Te han matado!" + IDS_ENTER_CAMPAIGN_NAME "Enter a name for this map list:" + IDS_HEWASKILLED "Han matado a %1!s!." + IDS_HELP_ADD_WEAPON "Add selected item to the list of restricted items." + IDS_TARGET_HACKINGKEYPAD "decodificando" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_TEAM_SAY "Team Say" + IDS_DOOMSDAY_CORE "Core" + IDS_DOOMSDAY_TRANSMITTER "Transmitter" + IDS_DOOMSDAY_BATTERIES "Batteries" + IDS_DOOMSDAY_PICKEDUP "%1!s! picked up the %2!s!" + IDS_DOOMSDAY_DROPPED "%1!s! dropped the %2!s!" + IDS_DOOMSDAY_PLACED "%1!s! placed the %2!s!" + IDS_DOOMSDAY_STOLE "%1!s! stole the %2!s!" + IDS_DOOMSDAY_DEVICE_COMPLETED "%1!s! completed the Dooms Day Device." + IDS_DOOMSDAY_RESPAWNED "The %1!s! has respawned." + IDS_HELP_SERVER_TYPE "Sort servers by game type. " + IDS_FILTER_MOD "Mod:" + IDS_HELP_FILTER_MOD "Toggle filtering of servers based on mod." + IDS_FILTER_ALLMODS "All Mods" +END + +STRINGTABLE +BEGIN + IDS_TARGET_WELDING "soldando" + IDS_TARGET_DECODING "decodificando" + IDS_TARGET_PICKING "forzando" + IDS_TARGET_PHOTOGRAPHING "fotografiando" + IDS_TARGET_BOMBING "desactivando bomba" + IDS_TARGET_INKING "revelando" + IDS_TARGET_BUGGING "colocando micrófono oculto" + IDS_COOP_STAT_ACCURACY "Precisión" + IDS_COOP_STAT_KILLS "Bajas" + IDS_COOP_STAT_DEATHS "Muertes" + IDS_STAT_MISSION "Misión:" + IDS_FILTER_ALLPING "Todo" + IDS_FILTER_LOWPING "< 100" + IDS_FILTER_MEDPING "< 300" + IDS_FILTER_HIGHPING "< 500" + IDS_HELP_FILTER_PING "Servidores de los filtros basados en su ping." +END + +STRINGTABLE +BEGIN + IDS_MOUSE_INPUTRATE "Suavizado del ratón" + IDS_MOUSE_LEFTBUTTON "Botón izquierdo del ratón" + IDS_MOUSE_MIDDLEBUTTON "Botón central del ratón" + IDS_MOUSE_RIGHTBUTTON "Botón derecho del ratón" + IDS_JOYSTICK_USE "Utilizar joystick / mando" + IDS_JOYSTICK_TURN "Girar a la izquierda / derecha" + IDS_JOYSTICK_LOOK "Mirar arriba / abajo" + IDS_JOYSTICK_MOVE "Mover adelante / atrás" + IDS_JOYSTICK_STRAFE "Desplazar a la izquierda / derecha" + IDS_JOYSTICK_BUTTONNUM "Botón %1!d! del joystick" + IDS_JOYSTICK_AXIS "Eje" + IDS_JOYSTICK_ACTION "Acción" + IDS_HELP_SERVER_LAN "Activa la publicación del servidor en Internet." + IDS_POV_MOVE "Desplazarse" + IDS_JOYSTICK_INVERT "Mirar arriba / abajo (invertido)" + IDS_POV_LOOK "Puerta" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_AXISNONE "Ninguno" + IDS_HELP_AXIS "Establece la acción asociada con este eje del joystick o mando." + IDS_DISPLAY_BITDEPTH "Profundidad de bits" + IDS_ANTIALIAS "Suavizado de bordes" + IDS_ADVCONTROLS_RUNLOCK "Correr siempre" + IDS_NEW_EASY "Fácil" + IDS_NEW_MEDIUM "Normal" + IDS_NEW_HARD "Difícil" + IDS_NEW_INSANE "Súper Espía" + IDS_ADVCONTROLS_CROSSHAIR "Punto de mira" + IDS_DISPLAY_RENDERER "Renderizador" + IDS_DISPLAY_RESOLUTION "Resolución" + IDS_TEAM1_NAME "Blue" + IDS_CONTROLS "Controles" + IDS_HELP_PROFILE_LOAD "Cargar el perfil seleccionado." + IDS_SERVER_NAME "Nombre del servidor" +END + +STRINGTABLE +BEGIN + IDS_SERVER_PLAYERS "Jugad." + IDS_SERVER_PING "Ping" + IDS_SERVER_GAME "Partida" + IDS_SERVER_MAP "Mapa" + IDS_JOIN_PLAYER_NAME "Nombre del jugador" + IDS_JOIN_PLAYER_SCORE "Puntuación" + IDS_OPTION_NAME "Opción del juego" + IDS_OPTION_VALUE "Valor" + IDS_SERVER_REFRESH "Actualizar servidores" + IDS_SERVER_REPING "Responder de nuevo a los servidores." + IDS_FILTER_ALLGAMES "Todas las partidas" + IDS_FILTER_DM "Sólo combate a muerte" + IDS_FILTER_COOP "Sólo D.A.Ñ.O. contra UNITY" + IDS_FILTER_ALLPOP "Cualquier número de jugadores" + IDS_FILTER_NOTFULL "No lleno" + IDS_FILTER_NOTEMPTY "No vacío" +END + +STRINGTABLE +BEGIN + IDS_FILTER_NOT_BOTH "No vacío y no lleno" + IDS_SERVER_LOCKED "Bloq." + IDS_SERVER_VERSION "Version" + IDS_HELP_SERVER_VERSION "Sort servers by game version." + IDS_HOST_NAME "Nombre de sesión" + IDS_HOST_OPTIONS "Opciones de anfitrión" + IDS_HOST_MISSIONS "Misiones" + IDS_HOST_LAUNCH "Iniciar" + IDS_SERVER_FILTERS "Filtros " + IDS_POP_FILTER "Jugad.:" + IDS_NIGHT_SCOPE "Amplía la vista para disparar con precisión y aumenta la luz para las operaciones nocturnas." + IDS_SILENCER "Reduce el ruido de los disparos." + IDS_TEAM2_NAME "Red" + IDS_FILTER_PING "Ping:" + IDS_SCOPE "Aumenta la vista para disparar con precisión." + IDS_CAMERA_SCOPE "Lentes de aumento ajustables." +END + +STRINGTABLE +BEGIN + IDS_KILLEDMYSELF "¡Te has suicidado!" + IDS_HEKILLEDME "Te ha matado %1!s!" + IDS_IKILLEDHIM "Has matado a %1!s!." + IDS_HEKILLEDHIMSELF "%1!s! se ha suicidado." + IDS_HEKILLEDHIM "%1!s! ha matado a %2!s!" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_COOP_DEFAULT "Partida cooperativa NOLF 2" + IDS_PASSWORD_DEFAULT "contraseña" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCH "buscar" + IDS_TARGET_MOVE "mover cuerpo" + IDS_TARGET_DROP "dejar caer cuerpo" + IDS_TARGET_TALK "hablar" + IDS_TARGET_USE "utilizar" + IDS_TARGET_TAKE "recoger" + IDS_TITLE_HOST_WEAPONS "WEAPON RESTRICTIONS" + IDS_TARGET_HACKKEYPAD "decodificar" + IDS_TARGET_WELD "soldar" + IDS_TARGET_DECODE "decodificar" + IDS_TARGET_PICK "forzar" + IDS_TARGET_PHOTO "fotografiar" + IDS_TARGET_BOMB "colocar bomba" + IDS_TARGET_INK "revelar" + IDS_TARGET_BUG "colocar micrófono oculto" + IDS_TARGET_INNOCENT "amigo" +END + +STRINGTABLE +BEGIN + IDS_CDKEY_ENTER "Introduce la clave del CD-ROM" + IDS_CDKEY_INVALID "La clave del CD-ROM no es válida" + IDS_CDKEY "Clave del CD-ROM" + IDS_BANDWIDTH_INVALID "El valor no es válido. Introduce uno que esté entre %1!d! y %2!d!." + IDS_AMMO_NOPICKUP "¡No se puede llevar más munición %1!s!!" + IDS_DMODE_RENDERER "%1!s! - %2!s!" + IDS_DMODE_RESOLUTION "%1!d!x%2!d!x%3!d!" + IDS_TARGET_WAKEUP "despertar" + IDS_JOIN_GAME "Unirse a la partida" + IDS_PLAYER_NAME "Nombre del jugador" + IDS_DMODE_PLEASEWAIT1 "Espera mientras NOLF" + IDS_DMODE_PLEASEWAIT2 "genera una lista de renderizadores..." + IDS_HELP_PLAYER_MODEL "Define el modelo de personaje que se muestra." + IDS_HELP_PLAYER_NAME "Define el nombre del jugador." + IDS_SCORE_PING "Ping:" + IDS_HELP_SERVER_NAME "Ordenar servidores por nombre." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_SCMD_COMMANDS "Permitir SCMD" + IDS_TARGET_OPEN_2177 "abrir" + IDS_TARGET_CLOSE_2178 "cerrar" + IDS_TARGET_TIPOVER_2179 "volcar" +END + +STRINGTABLE +BEGIN + IDS_HELP_SERVER_PLAYERS "Ordenar servidores por número de jugadores." + IDS_HELP_SERVER_PING "Ordenar servidores por respuesta." + IDS_HELP_SORT_PLYR_NAME "Ordenar jugadores por nombre." + IDS_HELP_SORT_PLYR_SCORE "Ordenar jugadores por puntuación." + IDS_HELP_SORT_PLYR_PING "Ordenar jugadores por respuesta." + IDS_HELP_REFRESH "Actualizar la lista de servidores." + IDS_HELP_REPING "Responder a todos los servidores incluidos de nuevo." + IDS_HELP_GAME_FILTER "Filtra las partidas en función del tipo." + IDS_HELP_POP_FILTER "Filtrar las partidas en función del número de jugadores." + IDS_HELP_REM_ALL_WPNS "Remove all items from the restriction list." + IDS_MOD_NOPICKUP "Ya tienes los %1!s!!" + IDS_GEAR_NOPICKUP "¡No se puede usar %1!s!" + IDS_HELP_REM_WEAPON "Remove the selected item from the restriction list." + IDS_CHANGING_AMMO "Cambiando a munición %1!s! " + IDS_HELP_JOIN_GAME "Unirse a la partida seleccionada." + IDS_HELP_SESSION_NAME "Define el nombre de la sesión que se va a alojar." +END + +STRINGTABLE +BEGIN + IDS_TARGET_DEFUSE "desactivar" + IDS_DISARMED "¡Desarmado!" + IDS_HELP_CDKEY "Introduce una clave de CD-ROM para desbloquear los juegos de Internet." + IDS_MUSIC_QUALITY "Calidad de la música" + IDS_HELP_MUSIC_QUALITY "Establecer la calidad de la música. Afectará al rendimiento." + IDS_CONFIRM_MUSIC "Si activas la calidad alta de música, el rendimiento general del juego puede reducirse. ¿Quieres activar la calidad alta de música?" + IDS_CONFIRM_SOUND "El sonido de alta calidad utiliza gran cantidad de memoria y puede afectar al rendimiento del juego. ¿Quieres activar la calidad alta de sonido?" + IDS_PLAYER_MODEL "Modelo del jugador" + IDS_HELP_PERFORMANCE_TEST + "Ejecuta un nivel de muestra para probar las opciones de rendimiento." + IDS_HOST_AVAIL_MISSIONS "Misiones disponibles" + IDS_TITLE_PERFORMANCE_TEST "Probando la configuración de rendimiento" + IDS_RES_DIFFERS "(Se restablecerá la resolución de pantalla original.)" + IDS_PRECACHE "Recursos precaché" + IDS_LOAD_USERGAME "Partidas guardadas" + IDS_SHELLCASINGS "Casquillos de proyectiles" + IDS_DISCONNECT "Desconectar del servidor." +END + +STRINGTABLE +BEGIN + IDS_HELP_SHELLCASINGS "Alterna la renderización de las carcasas de proyectiles del arma." + IDS_SHUTDOWN "Finalizar partida" + IDS_HELP_PRECACHE "Si activas el preguardado el juego se ejecutará con más suavidad pero aumentará los tiempos de carga y el uso de la memoria." + IDS_WPN_RESTRICT "Weapons restrictions" + IDS_PERFORMANCE_FPS_AVE "Velocidad media de constitución de las imágenes: %1!d!" + IDS_PERFORMANCE_RESULTS "Prueba completada" + IDS_OVERALL_PERFORM "Optimización del rendimiento" + IDS_HELP_OVERALL_PERFORM + "Seleccionar las opciones de rendimiento predefinidas para equipos de gama superior, media e inferior." + IDS_PERFORM_HIGH "Detalle bajo" + IDS_PERFORM_MEDIUM "Detalle medio" + IDS_PERFORM_LOW "Detalle alto" + IDS_AUTOSWITCH_WEAPONS "Intercambio automático de armas" + IDS_HELP_AUTOSWITCH_WEAPONS + "Alterna la selección automática de la última arma recogida." + IDS_STARTNEXTLEVEL "Iniciando siguiente nivel..." + IDS_PERFORMANCE_FPS_MIN "Velocidad mínima de constitución de las imágenes: %1!d!" + IDS_PERFORMANCE_FPS_MAX "Velocidad máxima de constitución de las imágenes: %1!d!" +END + +STRINGTABLE +BEGIN + IDS_HELP_GAME_TYPE "Define el tipo de partida que se va a alojar." + IDS_HELP_HOST_OPTIONS "Define las opciones de las partidas multijugador." + IDS_HELP_HOST_MISSIONS "Set the list of maps for this map list." + IDS_HELP_LAUNCH "Inicia el juego." + IDS_HELP_AVAIL_MISSIONS "Lista de misiones disponibles." + IDS_HELP_POV "Establece la acción asociada con este control del VOJ." + IDS_HELP_SEL_MISSIONS "Lista de misiones que se van a utilizar para esta sesión." + IDS_HELP_ADD_MISSION "Add the selected map to the list." + IDS_HELP_ADD_ALL "Add all available maps to the list." + IDS_HELP_REM_MISSION "Remove the selected map from the list." + IDS_HELP_REM_ALL "Remove all maps from the list." + IDS_VSYNC "Sincronizar volumen" + IDS_HELP_VSYNC "Sincroniza el cambio de pantalla al dispositivo para prevenir cortes." + IDS_CURRENT "Actual" + IDS_UPGRADE "Mejorar" + IDS_LOW_VIOLENCE "Violencia baja" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_UNBOUND "El joystick o mando no está configurado. ¿Deseas configurarlo ahora?" + IDS_FX_DETAIL "Efectos" + IDS_HELP_FX_DETAIL "Controla el nivel de detalle en efectos como explosiones, restos e impactos de armas." + IDS_PERFORMANCE_FPS_BELOW_MIN "FPS de %1!d!%% por debajo de %2!d!% " + IDS_PERFORMANCE_FPS_MINTOMAX "FPS %1!d!%% entre %2!d!% y %3!d!% " + IDS_CONFIRM_RESTORE "La restauración de la configuración predeterminada anula todos los cambios realizados a la configuración de los controles. ¿Seguro que deseas continuar?" + IDS_PERFORMANCE_FPS_ABOVE_MAX "FPS de %1!d!%% por encima de %2!d!% " + IDS_PERFORMANCE_TEST_ABORTED + "Se ha interrumpido la prueba de rendimiento." + IDS_NEW_MOTD "Se ha actualizado el mensaje del día." + IDS_VALIDATION_FAILED "ERROR: error al comprobar de la versión del servidor." + IDS_HARDWARE_CURSOR "Cursor de hardware" + IDS_HELP_HARDWARE_CURSOR "Alterna el uso del cursor de hardware." + IDS_CONFIRM_CURSOR "La activación del cursor de hardware facilita el movimiento del cursor; no obstante, algunas tarjetas gráficas no admiten el uso de un cursor de hardware. ¿Deseas activar el cursor de hardware?" + IDS_LAUNCH_UPDATE "Actualizar a la versión más reciente" + IDS_HELP_LAUNCH_UPDATE "Cierra el juego e intenta descargar la última versión del juego. " + IDS_NEW_VERSION "Hay una versión actualizada del juego disponible." +END + +STRINGTABLE +BEGIN + IDS_INTERNET "Configurando la conexión a Internet..." + IDS_NO_CDKEY "Debes introducir una clave de CD-ROM válida para albergar partidas de Internet o unirte a ellas." + IDS_TARGET_HACKCARDREADER "descifrar / introducir tarjeta" + IDS_LARGE "Grande" + IDS_SMALL "Pequeño" + IDS_JOIN_LAN "Unirse a la partida LAN" + IDS_GUNPICKUP "¡%1!s!!" + IDS_OUTOFAMMO "%1!s! sin munición" + IDS_GEARPICKUP "%1!s!" + IDS_AMMOPICKUP "%2!s! ( %1!d! )" + IDS_MODPICKUP "%1!s!" + IDS_INTELLIGENCE "¡Elemento de inteligencia!" + IDS_HELP_JOIN_LAN "Unirse a una partida multijugador LAN." + IDS_SERVER_ADDRESS "Dirección" + IDS_NO_SERVERS "- no se ha detectado ningún servidor -" + IDS_LOOKING_FOR_SERVERS "Detectando servidores..." +END + +STRINGTABLE +BEGIN + IDS_CONNECTING_TO_SERVER "Conectando con el servidor" + IDS_UNKNOWN_PLAYER "un jugador" + IDS_HELP_EASY "Easy: you will take less damage when hit, and the AI will be far less accurate." + IDS_HELP_MEDIUM "Normal: recibirás algo más de daño en caso de ser alcanzado y la IA será más precisa." + IDS_HELP_HARD "Difícil: tendrás un nivel de precisión medio y recibirás daño fácilmente." + IDS_HELP_INSANE "Súper Espía: la IA será muy precisa y recibirás mucho más daño." + IDS_DIFF_REMINDER "El nivel de dificultad se puede cambiar en cualquier momento durante la misión en la pantalla OPCIONES DE LA PARTIDA." + IDS_SERVERS_SHOWN "(servidores %1!d!-%2!d!)" + IDS_HELP_WPN_RESTRICT "Restrict the use of certain weapons, ammo, and gear." + IDS_KEY_PICKUP "Found %1!s!!" + IDS_STATUS_STRING "Estado: %1!s!!" + IDS_WAITING "En espera" + IDS_QUERYING "Preguntando a los servidores" + IDS_VALIDATING "Validando la clave del CD-ROM" + IDS_TARGET_HACKINGCARDREADER "decodificando" + IDS_LOAD_TIPS "Cargar las sugerencias en pantalla" +END + +STRINGTABLE +BEGIN + IDS_HELP_LOAD_TIPS "Activar la presentación de sugerencias en la pantalla de carga." + IDS_DSL_LOW "ADSL (Baja)" + IDS_CONTOUR "Circuito de la moto de nieve" + IDS_HELP_CONTOUR "Las motos de nieve se ajustan al terreno. Si desactivas esta función puedes hacer que sea más fácil dirigirlas. " + IDS_PERFORMANCE_RECOMMEND_LOWER + "Te recomendamos que disminuyas la configuración de detalles antes de empezar a jugar. " + IDS_PAUSED "Partida en pausa" + IDS_UNUSED "No utilizado" + IDS_PERFORMANCE_RECOMMEND_HIGHER + "Te recomendamos que aumentes la configuración de detalles antes de empezar a jugar. " + IDS_PERFORMANCE_RECOMMEND_CURRENT + "El juego debería ejecutarse de manera aceptable con la configuración de detalles actual. " + IDS_PRESSANYKEY "Pulsa una tecla..." + IDS_EMPTY " [ vacío ]" + IDS_PRESSKEYTOCONTINUE "Pulsa Intro para continuar." + IDS_SUREWANTQUIT "¿Seguro que deseas salir?" + IDS_SUREWANTABORT "¿Seguro que deseas cancelar la partida en curso?" + IDS_BUMPER_LOADING "Cargando..." +END + +STRINGTABLE +BEGIN + IDS_INTEL_ITEMS "Elementos de inteligencia:" + IDS_UP "arriba" + IDS_DOWN "abajo" + IDS_DISCON_MISSINGFILE "Falta el archivo %1!s!" + IDS_DISCON_CONNECTTERM "Te has desconectado del servidor." + IDS_DISCON_SERVERBOOT "El servidor te ha iniciado." + IDS_DISCON_TIMEOUT "Se ha agotado el tiempo de espera de conexión." + IDS_WEAPON "Arma" + IDS_KEY "Tecla" + IDS_DEVICE_MOUSE "Ratón" + IDS_DEVICE_JOYSTICK "Joystick" + IDS_AUTOSWITCH_AMMO "Intercambio automático de munición" + IDS_HELP_AUTOSWITCH_AMMO + "Alterna la selección automática de la última munición recogida." + IDS_PORT "Puerto de red" + IDS_HELP_ENTER_PORT "Introduce el puerto de red que se va a utilizar." + IDS_SERVER_PORT "Puerto" +END + +STRINGTABLE +BEGIN + IDS_NOQUICKSAVEGAME "No existe ninguna partida de guardado rápido." + IDS_LOADGAMEFAILED "Error al cargar el juego." + IDS_SAVEGAMEFAILED "Error al guardar la partida." + IDS_NOLOADLEVEL "No se ha podido cargar el nivel." + IDS_SOUNDNOTINITED "No se puede iniciar el sonido. Asegúrate de que la tarjeta de sonido está configurada correctamente." + IDS_UNSPECIFIEDERROR "Se ha producido un error no especificado." + IDS_NOREMAPKEY "No se puede volver a asignar una función a la tecla." + IDS_NOSOUNDCHANGE "Es necesario activar los efectos de sonido para cambiar este valor." + IDS_NOMUSICCHANGE "Es necesario activar la música para cambiar este valor." + IDS_ENDCURRENTGAME "De este modo finaliza la partida actual. ¿Deseas continuar?" + IDS_REINITIALIZING_RENDERER "Reiniciando el renderizador." + IDS_INVALID3DSOUNDPROVIDER "Proveedor de sonido 3D no válido." + IDS_CONFIRMSAVE "¿Deseas sobrescribir esta partida guardada?" + IDS_GAMESAVED "Partida guardada." + IDS_REBINDING_TEXTURES "Reenlazando las texturas." + IDS_REBINDING_LIGHTMAPS "Reenlazando los mapas de luces." +END + +STRINGTABLE +BEGIN + IDS_SHUTDOWNSERVER "De este modo se apaga el servidor y se desconectan todos los clientes." + IDS_NETERR_GENERIC "ERROR: no se puede configurar la partida en red." + IDS_NETERR_SELECTSERVICE + "ERROR: no se puede utilizar el servicio de red seleccionado." + IDS_NETERR_FILLSERVICE "ERROR: no se puede acceder a los servicios de red disponibles." + IDS_NETERR_JOINSESSION "ERROR: no es posible unirse a la sesión de la partida seleccionada." + IDS_NETERR_HOSTSESSION "ERROR: no se puede alojar la sesión de la partida." + IDS_NETERR_INIT "ERROR: no se puede iniciar el sistema de red." + IDS_NETERR_CANTBINDTOPORT "No se puede enlazar al puerto solicitado." + IDS_NETERR_NOTSAMEGUID "ERROR: no es posible unirse porque hay un conflicto con la versión o el juego del servidor." + IDS_PLAYER "Jugador" + IDS_SAY "DECIR:" + IDS_NETERR_WRONGPASS "Contraseña incorrecta." + IDS_YOUWEREKILLED "¡Te han matado!" + IDS_QUICKSAVING "Guardando rápido..." + IDS_SERVERFULL "No es posible unirse. El servidor está lleno." + IDS_SERVER_WRONGVERSION "No es posible unirse porque hay un conflicto de versiones con el servidor. Visita www.the-operative.com para conseguir la última versión del producto." +END + +STRINGTABLE +BEGIN + IDS_JOINEDGAME "%1!s! se ha unido a la partida" + IDS_LEFTGAME "%1!s! ha abandonado la partida." + IDS_SAVINGGAME "Guardando partida..." + IDS_CANTQUICKSAVE "No puedes guardar ahora." + IDS_ACCESSGRANTED "Acceso concedido" + IDS_ACCESSDENIED "Acceso denegado" + IDS_LOCKED "Bloqueado" + IDS_HELP_ENTER_SCMDPASSWORD + "Especifica la contraseña para conectarse con administrador del SCMD." + IDS_WON_MOTD_STATUS "Obteniendo el mensaje del día" + IDS_WON_MOTD_SUCCESS "Mensaje del día obtenido correctamente" + IDS_WON_MOTD_FAIL "Error al obtener el mensaje del día" + IDS_WON_VERSION_STATUS "Obteniendo la información de la última versión" + IDS_WON_VERSION_SUCCESS "Información de la última versión obtenida correctamente" + IDS_WON_VERSION_FAIL "Error al obtener la información de la última versión" + IDS_WON_CDKEY_STATUS "Comprobando la contraseña del CD" + IDS_WON_CDKEY_SUCCESS "Contraseña del CD comprobada con correctamente" +END + +STRINGTABLE +BEGIN + IDS_FIND_SERVERS "Refresh Server List" + IDS_HELP_FIND_SERVERS "Buscar servidores." + IDS_HELP_PROFILE_DELETE "Suprimir el perfil seleccionado." + IDS_HELP_PROFILE_RENAME "Cambiar el nombre del perfil seleccionado." + IDS_CONFIRM_DELETE "¿Seguro que deseas eliminar este archivo?" + IDS_CURRENT_PROFILE "Perfil actual: %1!s!" + IDS_ENTER_PROFILE_NAME "Introduce un nombre para este perfil:" + IDS_CONFIRM_NEWPROFILE "Pondrás fin a la partida actual. ¿Seguro que deseas continuar?" + IDS_PERFORMANCE_TEST_BRIEF + "A continuación se cargará una pequeña cinemática del juego para indicar cómo se ejecutará el juego si se utilizan las configuraciones de rendimiento actuales. Cuando se haya acabado la cinemática, se mostrará una recomendación de configuración de rendimiento. \n\nPuedes pulsar la tecla ESC en cualquier momento durante la cinemática para detener la prueba de configuración de rendimiento. " + IDS_PARAMETERS "Parámetros:" + IDS_SELECT_AMMO_TEXT "Seleccionar" + IDS_EXIT_WAITING "%1!d! jugadores te están esperando." + IDS_EXIT_WAITING_1 "1 jugador te está esperando." + IDS_EXIT_WAITING_NAME "%1!s! te está esperando." + IDS_EXIT_PLAYER_WAITING "Estás esperando a %1!d! jugadores." + IDS_EXIT_PLAYER_WAITING_1 "Estás esperando a 1 jugador." +END + +STRINGTABLE +BEGIN + IDS_EXIT_PLAYER_WAITING_NAME "Estás esperando a %1!s!." + IDS_NET_GAME_END "Condiciones de fin de nivel" + IDS_NET_GAME_END_HELP "Define las condiciones que finalizan el mapa." + IDS_CHOOSE_TEAM "Choose team" + IDS_FRAG_LIMIT_HELP "Sets the score needed to win the round." + IDS_HELP_CHOOSE_TEAM_1 "Choose the Blue Team" + IDS_TIME_LIMIT_HELP "Set the number of minutes the round will last." + IDS_MAX_PLAYERS "Número máximo de jugadores" + IDS_MAX_PLAYERS_HELP "Define el número máximo de jugadores permitido en la sesión." + IDS_ROUNDS_HELP "Set the number of rounds to play on a map before switching." + IDS_RUN_SPEED_HELP "Define el porcentaje de velocidad de ejecución normal utilizado en la sesión." + IDS_HELP_CHOOSE_TEAM_2 "Choose the Red Team" + IDS_FRIENDLY_FIRE_HELP "Determina si los compañeros de equipo se pueden causar o no daño entre sí." + IDS_AUTO_SELECT "Auto-Select" + IDS_HELP_HOST_PLAYERDIFF + "Establece hasta dónde afectan los jugadores adicionales a la dificultad." +END + +STRINGTABLE +BEGIN + IDS_WON_CDKEY_FAIL "Error al comprobar la contraseña del CD" + IDS_WON_PUB_STATUS "Publicando el servidor" + IDS_WON_PUB_SUCCESS "Servidor publicado correctamente" + IDS_WON_PUB_FAIL "Error al publicar el servidor" + IDS_WON_REM_STATUS "Eliminando el servidor" + IDS_WON_REM_SUCCESS "Servidor eliminado correctamente" + IDS_WON_REM_FAIL "Error al elmininar el servidor" + IDS_WON_LIST_STATUS "Obteniendo lista de servidores" + IDS_WON_LIST_SUCCESS "Lista de servidores obtenida correctamente" + IDS_WON_LIST_FAIL "Error al obtener la lista de servidores" + IDS_WON_CLEAR_REQ_LIST "Borrando lista de peticiones" + IDS_WON_PROCESS_REQ "Procesando petición fuera de su orden" + IDS_WON_PING_SUCCESS "Pings de la lista de compañeros obtenida correctamente" + IDS_WON_DETAIL_SUCCESS "Detalles del servidor obtenidos correctamente" + IDS_WON_DETAIL_FAIL "El servirdor no responde" + IDS_WON_VAL_SUCCESS "Cliente validado correctamente" +END + +STRINGTABLE +BEGIN + IDS_TEAM_1 "Blue team" + IDS_HELP_CAMPAIGN_NAME "Choose the map list to use for this session." + IDS_DETAILTEXTURES "Texturas de detalle" + IDS_HELP_DETAILTEXTURES "Alterna el uso de texturas de detalle." + IDS_ENVIRONMENT_MAP "Mapa del entorno" + IDS_HELP_ENVIRONMENT_MAP "Alterna el uso de mapas de entorno." + IDS_DYNAMICLIGHTS "Luces dinámicas" + IDS_HELP_DYNAMICLIGHTS "Activa el uso de las luces dinámicas." + IDS_TRIPLE_BUFF "Triple búfer" + IDS_HELP_TRIPLE_BUFF "Alterna el uso de triple búfer." + IDS_HELP_SETCONTROL "Pulsa Intro o haz clic con el botón izquierdo del ratón para definir un control para esta acción." + IDS_HELP_CUSTOMCONTROLS "Asignar teclado, ratón y acciones del controlador del juego." + IDS_HELP_MOUSE "Definir opciones de configuración del ratón." + IDS_HELP_JOYSTICK "Definir opciones de configuración del joystick o mando." + IDS_HELP_ADVCONTROLS "Definir opciones de controles avanzadas." + IDS_HELP_RESTORE "Restaurar los controles a los valores predeterminados." +END + +STRINGTABLE +BEGIN + IDS_HELP_SOUNDFX "Alterna la reproducción de efectos de sonido." + IDS_HELP_SOUNDVOL "Definir volumen de efectos de sonido." + IDS_HELP_SOUNDQUAL "Definir la calidad de los efectos de sonido. Esto puede afectar al rendimiento." + IDS_HELP_MUSIC "Alternar la reproducción de música." + IDS_HELP_MUSICVOL "Definir el volumen de la música." + IDS_HELP_CUSTOMLEVEL "Cargar el nivel personalizado resaltado." + IDS_HELP_USEJOYSTICK "Alternar el uso del joystick o mando." + IDS_HELP_INVERTAXIS "Alterna la inversión en este eje." + IDS_HELP_DEADZONE "Definir el punto muerto para este eje." + IDS_HELP_ANALOG "Alternar entre los modos analógico y digital." + IDS_HELP_JOY_SENSE "Definir la sensibilidad del joystick en este eje." + IDS_HELP_JOY_CENTER "Alternar el uso de la corrección del centro." + IDS_HELP_INVERTY "Alterna la inversión del ratón." + IDS_HELP_MOUSELOOK "Alternar el uso del ratón para mirar." + IDS_HELP_MOUSE_SENSE "Define la sensibilidad del ratón." + IDS_HELP_MOUSE_INPUT "Define la medida en que se suaviza el movimiento del ratón." +END + +STRINGTABLE +BEGIN + IDS_HELP_MOUSE_BUTTON "Definir la acción asignada a este botón." + IDS_HELP_NORMALTURN "Definir la velocidad de giro normal para los controles del teclado." + IDS_HELP_FASTTURN "Define la velocidad de giro elevada para los controles del teclado." + IDS_HELP_LOOKUP "Definir velocidad para mirar arriba y abajo para los controles de teclado." + IDS_HOST_CAMPAIGN_DEFAULT "Default Map List" + IDS_HELP_CROSSHAIRMENU "Definir opciones del punto de mira." + IDS_HELP_LEFT "Muestra la página anterior." + IDS_HELP_RIGHT "Mostrar la página siguiente." + IDS_HELP_QUICKSAVE "Guardar la partida actual en la ranura de guardado rápido." + IDS_HELP_SAVEGAME "Guardar la partida en esta ranura." + IDS_HELP_QUICKLOAD "Cargar la partida en la ranura de guardado rápido." + IDS_HELP_LOADGAME "Cargar la partida guardada en esta ranura." + IDS_HELP_RELOAD "Cargar la partida guardada automáticamente. La partida se guarda automáticamente tras entrar en un nivel." + IDS_HELP_CAMPAIGN "Select map list." + IDS_HELP_RESUME "Volver a la partida en curso." + IDS_HELP_CONTINUE_GAME "Continuar con la última partida guardada." +END + +STRINGTABLE +BEGIN + IDS_HELP_JOIN "Unirse a una partida multijugador." + IDS_HELP_HOST "Aloja una partida multijugador nueva." + IDS_HOST_ADD_MISSION "> Añadir" + IDS_HOST_REMOVE_MISSION "< Eliminar" + IDS_HOST_ADD_ALL "> Añadir todo" + IDS_HOST_REMOVE_ALL "< Eliminar todo" + IDS_NOLEVELS "Selecciona los niveles en los que se va a jugar la partida." + IDS_HELP_OK "Aceptar esta configuración." + IDS_SCENENUMBER "Escena %1!d!" + IDS_LOOP_MISSIONS "Circular" + IDS_MOVE_CONTROLS "Movimiento" + IDS_INV_CONTROLS "Interacción" + IDS_VIEW_CONTROLS "Vista" + IDS_MISC_CONTROLS "Estado" + IDS_HELP_KEYBOARD "Definir opciones de configuración del teclado." +END + +STRINGTABLE +BEGIN + IDS_HELP_CH_ALPHA "Opacidad del punto de mira." + IDS_HELP_CH_R "Componente rojo del color del punto de mira." + IDS_HELP_CH_G "Componente verde del color del punto de mira." + IDS_HELP_CH_B "Componente azul del color del punto de mira." + IDS_HELP_CH_STYLE "Definir el estilo del punto de mira que se va a utilizar." + IDS_HELP_CH_DYNAMIC "Alterna la escala dinámica del punto de mira." + IDS_HELP_MAIN "Volver al menú principal." + IDS_HELP_NEXTMISSION "Comenzar la siguiente misión." + IDS_HELP_CONTINUE "Pasar a la siguiente pantalla." + IDS_CAMPAIGN_EXISTS "A map list of that name already exists." + IDS_GUN_NOPICKUP "No se puede llevar más munición para %1!s!!" + IDS_GUN_NOPICKUP_INF "Ya tienes %1!s!!" + IDS_PLAYER_SETUP "Configuración del jugador" + IDS_JOIN "Unirse." + IDS_HOST "Anfitrión" + IDS_HELP_PLAYER "Definir las opciones del jugador." +END + +STRINGTABLE +BEGIN + IDS_WEAPONS_STAY "Soporte de armas" + IDS_WEAPONS_STAY_HELP "Determina si las armas se reponen inmediatamente." + IDS_HELP_AUTO_SELECT "Let the server choose a team for you." + IDS_HELP_TEAM_SELECT "Join this team." + IDS_CANCELREVIVE "Cancel Revive" + IDS_SERVER_MOD "Mod" + IDS_HIT_LOCATION "Daño basado en la ubicación" + IDS_HIT_LOCATION_HELP "Modifica el daño en función de la parte del cuerpo alcanzada." + IDS_SCORE_LIMIT "Puntuación ganadora" + IDS_HELP_SCORE_LIMIT "Define la puntuación requerida para finalizar un mapa." + IDS_ALLOWED_WEAPONS "Allowed weapons" + IDS_DISABLED_WEAPONS "Restricted weapons" + IDS_END_SCORE "Se ha alcanzado la puntuación ganadora." + IDS_TEAM1_BOMB "The Blue team planted a bomb." + IDS_TEAM2_BOMB "The Red team planted a bomb." + IDS_HOST_ADD_WEAPON "> Add restriction" +END + +STRINGTABLE +BEGIN + IDS_APP_SHUTDOWN_1 "Error al iniciar el renderizador. Para jugar %1!s! debes tener instalado DirectX 8.1." + IDS_PROFILE_ALREADY_EXISTS + "Ya existe un perfil con este nombre. Elige un nombre diferente. " + IDS_CONFIRM_DELETE_PROFILE + "¿Seguro que quieres eliminar este perfil junto con la configuración y las partidas guardadas asociadas a él? " + IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE + "No se ha podido crear un dispositivo de hardware TnL. Puede ser porque no tienes instalado DirectX 8.1 o porque no tengas una tarjeta gráfica compatible con TnL de hardware. Ambos requisitos son necesarios para jugar a %1!s! y aunque puedes seguir jugando si haces clic en ACEPTAR, ten en cuenta que el servicio técnico no te dará ninguna solución y que puedes sufrir errores graves y bloqueos del ordenador, además de un juego con un rendimiento bajo." +END + +STRINGTABLE +BEGIN + IDS_FILTER_CURRENTMOD "Current Mod" + IDS_SERVER_WRONGMOD "Unable to join because the game server is running a different Mod than your current Mod." + IDS_HECHANGED "%1!s! changed teams to the %2!s!" + IDS_ICHANGED "You changed teams to the %1!s!" + IDS_IWILLCHANGE "You will change teams when you respawn." + IDS_FRAG_SCORE "Frag score" + IDS_FRAG_SCORE_HELP "Points received for kills." + IDS_TAG_SCORE "Tag score" + IDS_TAG_SCORE_HELP "Points received for non-lethal knockdowns." + IDS_REVIVE_SCORE "Revive score" + IDS_REVIVE_SCORE_HELP "Points recevived for reviving teammates." + IDS_DD_COMP_SCORE "Completion score" + IDS_DD_COMP_SCORE_HELP "Points recevived for completing the doomsday device." + IDS_DD_HVY_SCORE "Heavy piece score" + IDS_DD_HVY_SCORE_HELP "Points recevived for placing a heavy piece of the device." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_1 "Tubo de rimel con pistola aturdidora" + IDS_WEAPON_2 "Katana" + IDS_WEAPON_3 "Tulwar" + IDS_WEAPON_4 "Shuriken" + IDS_WEAPON_5 "Granada de mano" + IDS_WEAPON_6 "Dispositivo de proximidad minino enfadado@Minino enfadado" + IDS_WEAPON_7 "Pistola automática McAllister .32@Pistola del calibre .32" + IDS_WEAPON_8 "Lanzador funcional CT-180@Lanzador funcional" + IDS_WEAPON_9 "Escopeta de combate del instigador Bacalov@Escopeta de combate" + IDS_WEAPON_10 "Ametralladora Gordon de 9 mm@Ametralladora Gordon" + IDS_WEAPON_11 "M1921-A1 Ametralladora@Ametralladora M1921-A1" + IDS_WEAPON_12 "Rifle de asalto AK-47@AK-47" + IDS_WEAPON_13 "Rifle de resorte RFA Serie-4@Rifle de francotirador" + IDS_WEAPON_14 "Ballesta del cazador justiciero@Ballesta" + IDS_WEAPON_15 "Lanzador de micromisiles" + IDS_WEAPON_16 "Cámara espía en carmín@Cámara espía" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_17 "Explosivos" + IDS_WEAPON_18 "Decodificador compacto@Decodificador" + IDS_WEAPON_19 "Bote de laca con soldador@Soldador" + IDS_WEAPON_20 "Cortaúñas ganzúa@Ganzúa" + IDS_WEAPON_21 "Micrófono oculto@Micrófono" + IDS_WEAPON_22 "Perfume desintegrador de cuerpos@desintegrador de cuerpos" + IDS_WEAPON_23 "Moneda" + IDS_WEAPON_24 "Trampa para osos" + IDS_WEAPON_25 "Luz de llavero" + IDS_WEAPON_26 "Plátano" + IDS_WEAPON_27 "[Pistolera]" + IDS_WEAPON_28 "Granada de gas aturdidor" + IDS_WEAPON_29 "Granada de gas somnífero" + IDS_WEAPON_30 "Granada de gas ácido" + IDS_WEAPON_31 "Granada de gas hilarante" + IDS_WEAPON_32 "Gordon de 9mm con silenciador Subfusil@SMG con silenciador " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_1 "Oculto a modo de rímel, este sinuoso artilugio deja fuera de combate silenciosamente a los enemigos durante un breve espacio de tiempo." + IDS_WEAPON_DESC_2 "Una tradicional espada larga japonesa. Silenciosa y mortífera. Un golpe bien calculado puede interceptar proyectiles como los shuriken y balas de calibre inferior." + IDS_WEAPON_DESC_3 "Una espada india curva. Útil para despachar a los enemigos silenciosamente. Puede también interceptar balas de calibre inferior y algunos otros proyectiles." + IDS_WEAPON_DESC_4 "Las estrellas arrojadizas japonesas son armas propias de asesinos. Resultan muy eficaces contra los enemigos desprevenidos." + IDS_WEAPON_DESC_5 "Un dispositivo de lanzamiento de explosivos que se puede arrojar por encima de muros y en las esquinas. Resulta muy efectivo, pero no muy sutil." + IDS_WEAPON_DESC_6 "Un poderoso artefacto explosivo astutamente camuflado en forma de gato callejero. Cuando se activa el sensor de proximidad, persigue a sus víctimas y explota." + IDS_WEAPON_DESC_7 "Una pistola de calibre .32. Fiable y eficaz. Se le puede acoplar un silenciador." + IDS_WEAPON_DESC_8 "Esta herramienta multiuso ha sido diseñada para albergar una gran caja cilíndrica adaptable a varios dispositivos y municiones." + IDS_WEAPON_DESC_9 "Aunque no es un asunto típico de espías, una escopeta de combate puede resultar muy útil en determinadas situaciones. Es compatible con cartuchos y varios tipos de balas." + IDS_WEAPON_DESC_10 "Una ametralladora conocida por su fiabilidad y elegante diseño. No se recomienda cogerla por la recámara montada en el lateral, pero la mayoría de los agentes lo hacen." + IDS_WEAPON_DESC_11 "La resistente ametralladora M1921-A1 sigue siendo popular en determinadas organizaciones criminales a cuyos miembros les encanta por sus connotaciones del mundo de la mafia." + IDS_WEAPON_DESC_12 "El resistente y fiable rifle de asalto Eastern Bloc se ha hecho cada vez más popular entre los criminales y terroristas." + IDS_WEAPON_DESC_13 "Este rifle de resorte de alta potencia es un arma muy eficaz para los francotiradores. Incorpora una mira integrada 4X y se le puede acoplar un silenciador." + IDS_WEAPON_DESC_14 "Una sólida ballesta de cazador ideal para situaciones en que prima la sutileza frente a los disparos con armas de fuego. Se puede montar una mira para garantizar la precisión a larga distancia." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_15 "Este lanzador de micromisiles desplegable cabe en un bolso de mujer, algo que facilita el transporte a los agentes y dificulta a los enemigos su detección." + IDS_WEAPON_DESC_16 "Esta cámara espía retráctil en miniatura se oculta en una barra de carmín normal. La cámara tiene una profundidad de campo limitada, por lo que hay que acercar el zoom para hacer tomas nítidas." + IDS_WEAPON_DESC_17 "Un dispositivo explosivo industrial muy potente, ideal para el sabotaje." + IDS_WEAPON_DESC_18 "Esta polvera de señora oculta un sofisticado dispositivo de decodificación utilizado para leer texto cifrado y averiguar los códigos numéricos de los dispositivos de seguridad." + IDS_WEAPON_DESC_19 "Este soldador en miniatura utiliza laca del pelo como combustible, lo que facilita su camuflaje aunque no resulta muy eficaz como soldador habitual." + IDS_WEAPON_DESC_20 "Aunque parezca un vulgar cortaúñas es una sofisticada ganzúa." + IDS_WEAPON_DESC_21 "Si se acopla a un teléfono, este micrófono oculto recoge información sonora. A continuación debes activar el micrófono para escuchar ambos extremos de la conversación." + IDS_WEAPON_DESC_22 "Este frasco de perfume emana una solución que de manera rápida y conveniente se deshace de los cuerpos. Asegúrate de buscar objetos útiles antes de eliminar un objetivo." + IDS_WEAPON_DESC_23 "Tirando esta moneda, provocarás alboroto suficiente para que los guardias abandonen sus puestos." + IDS_WEAPON_DESC_24 "Puedes poner trampas para osos y atrapar así a los enemigos. Aunque debes tener cuidado de no pisarlas." + IDS_WEAPON_DESC_25 "El globo de este llavero es una pequeña bombilla que emite una débil luz." + IDS_WEAPON_DESC_26 "Hasta un simple plátano puede ser devastador en manos adecuadas. Déjalo donde alguien pueda pisarlo." + IDS_WEAPON_DESC_27 "Esconde el arma para no asustar a los civiles." + IDS_WEAPON_DESC_28 "Este dispositivo deja aturdido a cualquiera que se encuentre en su radio de explosión." + IDS_WEAPON_DESC_29 "Esta granada de bote explota en forma de una nube de gas somnífero que deja al enemigo inconsciente durante un breve espacio de tiempo." + IDS_WEAPON_DESC_30 "Desprende una nube de gas corrosivo que quema la piel y provoca problemas respiratorios. Es muy peligroso." +END + +STRINGTABLE +BEGIN + IDS_AMMO_1 "Taser" + IDS_AMMO_2 "Katana" + IDS_AMMO_3 "Tulwar" + IDS_AMMO_4 "Shuriken." + IDS_AMMO_5 "Granada" + IDS_AMMO_6 "Granada aturdidora" + IDS_AMMO_7 "Granada de gas somnífero" + IDS_AMMO_8 "Granada de gas ácido" + IDS_AMMO_9 ".32 FMJ" + IDS_AMMO_10 ".32 cianuro" + IDS_AMMO_11 "Tranquilizante" + IDS_AMMO_12 "Desactivador de cámaras" +END + +STRINGTABLE +BEGIN + IDS_AMMO_13 "Bomba de pegamento" + IDS_AMMO_14 "Carga eléctrica" + IDS_AMMO_15 "ASSS" + IDS_AMMO_16 "Granada de gas hilarante" + IDS_AMMO_17 "perdigón del calibre 12" + IDS_AMMO_18 "Explosivo del calibre 12" + IDS_AMMO_19 "fmj de 9 mm" + IDS_AMMO_20 ".45 fmj" + IDS_AMMO_21 "fmj de 7,62 x 39" + IDS_AMMO_22 "fósforo de 7,62 x 39" + IDS_AMMO_23 ".308 FMJ" + IDS_AMMO_24 "Flecha" + IDS_AMMO_25 "Flecha venenosa" + IDS_AMMO_26 "Flecha de fuego" + IDS_AMMO_27 "Flecha explosiva" + IDS_AMMO_28 "Micromisil" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_NAME "CAPÍTULO 1. ¡Cate Archer debe morir!" + IDS_MISSION_01_NAME "CAPÍTULO 2. Adiós, espía" + IDS_MISSION_02_NAME "CAPÍTULO 3. Proyecto: Omega" + IDS_MISSION_03_NAME "CAPÍTULO 4. A Spy in H.A.R.M.'s Way" + IDS_MISSION_04_NAME "CAPÍTULO 5. Vuelo nocturno" + IDS_MISSION_05_NAME "CAPÍTULO 6. Diario de un agente doble" + IDS_MISSION_06_NAME "CAPÍTULO 7. Traición" + IDS_MISSION_07_NAME "CAPÍTULO 8. El arte del asesinato" + IDS_MISSION_08_NAME "CAPÍTULO 9. Estación Maligna helada" + IDS_MISSION_09_NAME "CAPÍTULO 10. La Maldición de Kali" + IDS_MISSION_10_NAME "CAPÍTULO 11. Los Intrusos" + IDS_MISSION_11_NAME "CAPÍTULO 12. Submarino" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME "El Director" + IDS_MISSION_00_LEVEL_00_NAME2 "Digamos que es una corazonada" + IDS_MISSION_00_LEVEL_00_NAME3 "Tengo malas noticias." + IDS_MISSION_00_LEVEL_00_NAME4 "¡El espía está aquí!" + IDS_MISSION_00_LEVEL_00_NAME5 "Acorralado." + IDS_MISSION_00_LEVEL_00_NAME6 "La muerte de Cate Archer" + IDS_MISSION_00_LEVEL_00_NAME7 "El espectro de la guerra" + IDS_MISSION_00_LEVEL_00_NAME8 "Bienvenidos a Siberia" + IDS_MISSION_00_LEVEL_00_NAME9 "La central eléctrica." + IDS_MISSION_00_LEVEL_00_NAME10 "La torre de comunicaciones" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME43 "Cuartel general de UNITY" + IDS_MISSION_00_LEVEL_00_NAME44 "Plataforma del submarino." + IDS_MISSION_00_LEVEL_00_NAME45 "Cubierta de mando." + IDS_MISSION_00_LEVEL_00_NAME46 "Cubierta de la tripulación." + IDS_MISSION_00_LEVEL_00_NAME47 "Laboratorios." + IDS_MISSION_00_LEVEL_00_NAME48 "Armstrong en peligro." + IDS_MISSION_00_LEVEL_00_NAME49 "El Diablo y el profundo mar azul" + IDS_MISSION_00_LEVEL_00_NAME50 "Inundación prevista." + IDS_MISSION_00_LEVEL_00_NAME51 "Abran fuego." + IDS_MISSION_00_LEVEL_00_NAME52 "Es de suponer que ha fracasado." + IDS_MISSION_00_LEVEL_00_NAME53 "Controlado por el hombre." + IDS_MISSION_00_LEVEL_00_NAME54 "Dulce venganza." + IDS_MISSION_00_LEVEL_00_NAME55 "La deuda de Isako." + IDS_MISSION_00_LEVEL_00_NAME56 "El destino de Khios." + IDS_MISSION_00_LEVEL_00_NAME57 "Nivel de cooperación" + IDS_MISSION_00_LEVEL_00_NAME58 "Nivel de cooperación" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_BRIEF "UNITY ha enviado a Cate a Japón para investigar los rumores sobre una convención de organizaciones internacionales del crimen, que tendrá lugar en el bucólico pueblo de Inotakimura. Su objetivo es fotografiar a los participantes de la reunión sin levantar sospechas.\n\nSu primera tarea será localizar al agente Isamu Hatori, que proporcionará información vital para su misión. Está esperando en algún lugar del pueblo." + IDS_MISSION_01_BRIEF "Está previsto que la reunión se celebre en la propiedad de un enigmático personaje conocido tan sólo como el Director. Cate deberá infiltrarse en los terrenos de la propiedad, localizar la casa principal y buscar la ventana que le indicó Hatori-san en el mapa. Esta ventaja debería permitirle tomar las fotografías que necesita sin exponerse a un riesgo innecesario.\n\nUna vez que haya obtenido las fotos, debe volver al puente donde Yamata-san la estará esperando. Un equipo de interceptación de UNITY estará preparado para evacuarla hasta Tokio donde su misión habrá concluido." + IDS_MISSION_02_BRIEF "Las fotografías tomadas por el avión espía muestran una base abandonada con muy poco personal, pero el Sr. Barnes ha advertido que este abandono es probablemente una artimaña. Aunque los norteamericanos a menudo sobrestiman la capacidad militar de los soviéticos, UNITY no va a correr ningún riesgo.\n\nLa primera fase de la misión de Cate es facilitar su propia escapada. Un poco de sabotaje debería ayudar mucho a minimizar las probabilidades de refuerzos.\n\nSanta ha enrolado a un piloto que está familiarizado con la región para que lleve y recoja a Cate. Ella debe protegerle a toda costa." + IDS_MISSION_03_BRIEF "Después de analizar los datos de la inteligencia norteamericana, UNITY tiene el convencimiento de que el proyecto: Omega se está desarrollando en el edificio principal de archivos, en el área central del complejo. Habrá fuertes medidas de seguridad, de modo que Cate no tendrá fácil llegar al lugar de destino, entrar y recuperar los datos necesarios.\n\nPor suerte, la noche será su cómplice, lo cual debería suponer una pequeña ventaja." +END + +STRINGTABLE +BEGIN + IDS_MISSION_04_BRIEF "Ahora que Cate ha recuperado la información del proyecto: Omega, se enfrenta al reto, si cabe más difícil, de sacar ésta información de la Unión Soviética. El asunto se complica aún más, pues tanto los rusos como los soldados de D.A.Ñ.O. están buscándola.\n\nTendrá que cruzar los dedos y confiar en que los minuciosos preparativos den buenos resultados. La noche está a punto de iluminarse." + IDS_MISSION_05_BRIEF "Sin ninguna otra pista urgente que rastrear, Cate se dirige a Akron, Ohio, para buscar indicios en la antigua residencia del conocido Melvin Blitzny. Blitzny, un vendedor de aspiradores, fue preparado para asumir la identidad del agente de UNITY Tom Goodman como parte de la última trama infame de D.A.Ñ.O. Acabó sus días a manos de su propio mentor.\n\nCate debe dejar a un lado todos sus temores cuando entre en los dominios de este traidor para poder lograr su objetivo." + IDS_MISSION_06_BRIEF "Magnus Armstrong se ha puesto en contacto con su viejo amigo Kamal, un desilusionado agente de operaciones de D.A.Ñ.O. de la India que ha ofrecido su ayuda. Aunque Kamal no está familiarizado con el proyecto: Omega, está seguro de que se puede encontrar información relevante en la cámara central del cuartel general de la India.\n\nBruno ha concluido que una infiltración directa en el complejo sería demasiado arriesgada debido a la intensa seguridad que Cate tendría que sortear. Por lo tanto, Kamal ayudará al que es quizá su objetivo más extraño hasta el momento: conseguir un trabajo en D.A.Ñ.O. Una vez contratada, tendrá la autorización de seguridad necesaria para moverse por el complejo con libertad." + IDS_MISSION_07_BRIEF "Habiendo demostrado su valía ante D.A.Ñ.O., Cate ha logrado un puesto en la mismísima organización que ha jurado destruir. Una autorización superior de seguridad le ayudaría a acercarse al premio: la cámara principal. Allí espera encontrar la pieza perdida del rompecabezas.\n\nPor desgracia, la cámara está fuera del alcance de todos excepto los altos cargos de D.A.Ñ.O., así que el mayor reto sigue pendiente. Ojalá tuviese algo más de información sobre las contramedidas de seguridad a las que deberá enfrentarse." + IDS_MISSION_08_BRIEF "Las pistas han llevado a Cate y Armstrong hasta unas instalaciones secretas en la Antártida en las que D.A.Ñ.O. está llevando a cabo el proyecto: Omega. Cuando descubran su verdadera naturaleza, podrán trazar el plan para desbaratarlo.\n\nEso suponiendo que no se estrangulen antes el uno al otro." + IDS_MISSION_09_BRIEF "Gracias al éxito cosechado por Cate en la India, el Director ha ordenado la destrucción del cuartel general de D.A.Ñ.O. en este país como castigo. El ataque supondrá una prueba ideal para los Súper Soldados antes de enviarlos a Khios para su misión principal.\n\nAunque Cate ha recuperado información vital sobre el proyecto: Omega, ha decido marcharse directamente a la India con la esperanza de impedir la tragedia que probablemente se desate si comienza el ataque." + IDS_MISSION_10_BRIEF "Con las especificaciones técnicas obtenidas en las instalaciones de la Antártida, Cate confía en que al Doctor Schenker se le ocurra algo para combatir a los Súper Soldados.\n\nMientras tanto, la noticia de que Armstrong está vivo y en manos de D.A.Ñ.O. le ha hecho ver claramente cuál es el objetivo. Debe averiguar dónde está y trazar un plan para rescatarlo.\n" + IDS_MISSION_11_BRIEF "Cate ha entrado sigilosamente en la base submarina secreta de D.A.Ñ.O. con el fin de salvar a Magnus Armstrong de la muerte segura. Su primer cometido será localizarlo. La información sobre su paradero debería estar almacenada en el Súper Ordenador.\n\n\n\nUna vez que Armstrong haya sido liberado, deberán improvisar una vía de escape, ya que en el mini-submarino tiburón de Cate sólo cabe uno." + IDS_MISSION_12_BRIEF "Con la base submarina derrumbándose a su alrededor y un malvado Súper Soldado suelto, Cate y Armstrong deben trabajar juntos para escapar de esta tumba acuática.\n\nAunque encontraran un modo de salir de la base, deben enfrentarse al personal de D.A.Ñ.O., armado e igualmente desesperado por salvar la vida." + IDS_MISSION_13_BRIEF "Después de caer en manos de D.A.Ñ.O., Cate se ve atrapada sin necesidad en una trampa mortal. Necesitará de sus rápidos reflejos y una habilidad extraordinaria para salir ilesa.\n\nMientras, la situación se recrudece a cada momento en el mar de Marmara. Si quiere desbaratar las nefandas maquinaciones de D.A.Ñ.O., debe actuar con rapidez.\n" + IDS_MISSION_14_BRIEF "El mundo está al borde de la catástrofe nuclear, con los Estados Unidos y la Unión Soviética más cerca que nunca de la guerra, desde la crisis de los misiles cubanos. Una vez más, el destino de la humanidad depende de la soberanía de una minúscula isla. \n\nLos Súper Soldados de D.A.Ñ.O. se dirigen a Khios a bordo de un submarino de ataque indetectable, diseñado para librarse del inevitable bloqueo de la OTAN. Los norteamericanos no pueden enviar tropas para defender la isla sin que esto suponga una provocación para los soviéticos, y los soviéticos reivindican que no tienen poder para detener la invasión. Ambas partes sostienen un pulso mortal, pero es D.A.Ñ.O. la que tiene el dedo en el gatillo." + IDS_MISSION_15_BRIEF "Cate ha entrado sigilosamente en la base submarina secreta de D.A.Ñ.O. por razones que no queremos desvelar en esta demo para no estropear sorpresas en caso de que decidas jugar. Basta decir que tiene una misión que cumplir, y el fragmento que vas a ver ahora sólo es la introducción. " + IDS_MISSION_TEMP_BRIEF "La misión rutinaria ha fracasado estrepitosamente y ahora Cate Archer tiene serios problemas. Está a mitad de camino del lugar de encuentro y tiene a los ninjas rodeándola.\n\nEl equipo de interceptación de UNITY que iba a evacuarla a Tokio debe correr en su ayuda. El objetivo es sencillo: sacar a Cate de ahí viva.\n" + IDS_MISSION_TEMP_BRIEF2 "Cate ha logrado escapar de la alejada base militar soviética con información crucial sobre el proyecto: Omega. Ella ha obtenido estos datos de un Súper Ordenador suministrado y controlado al parecer por D.A.Ñ.O.\n\nSe ha enviado un equipo de interceptación de UNITY de refuerzo. El objetivo principal del equipo es dejar ese ordenador fuera de servicio de una vez.\n\nEl equipo llegará en paracaídas al recinto de la base y se reunirá en un refugio de caza próximo al complejo.\n" + IDS_MISSION_TEMP_BRIEF3 "Cate se dirige en estos momentos a Calcuta, donde intentará infiltrarse en el cuartel general de D.A.Ñ.O. para obtener más información sobre el proyecto: Omega.\n\nUn equipo de interceptación de UNITY se encuentra ya en el lugar para conseguir información y facilitar así su misión. Tendrán que encontrar y fotografiar a un conocido empleado de D.A.Ñ.O. bajo el nombre de Balaji Malpani.\n" + IDS_MISSION_TEMP_BRIEF4 "Cate ha comunicado por radio la alarmante noticia. Magnus Armstrong se encuentra atrapado en la Antártida con los refuerzos de D.A.Ñ.O. estrechando el cerco, con una especie de Súper Soldado indestructible por ahí suelto.\n\nSe va a enviar un equipo de interceptación de UNITY para rescatar a Armstrong y destruir el lugar para impedir que sigan trabajando en el proyecto: Omega.\n" +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_1 "Deja a los enemigos inconscientes temporalmente." + IDS_AMMO_DESC_2 "Katana" + IDS_AMMO_DESC_3 "Tulwar" + IDS_AMMO_DESC_4 "Proyectil lanzado con navaja de hoja afilada. También puede utilizarse para causar distracción." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_5 "Un explosivo de fragmentación que detona en 3 segundos." + IDS_AMMO_DESC_6 "Desprende una nube de gas aturdidor que confunde temporalmente al objetivo." + IDS_AMMO_DESC_7 "Efecto local que deja temporalmente inconsciente al objetivo." + IDS_AMMO_DESC_8 "Produce una nube mortal de gas corrosivo." + IDS_AMMO_DESC_9 "Munición estándar reforzada del calibre .32." + IDS_AMMO_DESC_10 "Balas del calibre .32 con diminutas cápsulas venenosas insertadas en la punta de cada cartucho. Efectivo contra objetivos vivos." + IDS_AMMO_DESC_11 "Deja a los enemigos inconscientes temporalmente." + IDS_AMMO_DESC_12 "Desactiva las cámaras de seguridad mostrando un bucle de un vídeo inofensivo." + IDS_AMMO_DESC_13 "Crea un charco de poderoso líquido adhesivo. Esto detendrá a los enemigos durante un corto período de tiempo." + IDS_AMMO_DESC_14 "Emite una poderosa descarga eléctrica." + IDS_AMMO_DESC_15 "El suero Anti-Súper Soldado produce una reacción química en los Súper Soldados que los consume eficazmente. Inofensivo contra humanos." + IDS_AMMO_DESC_16 "Produce una nube debilitadora de gas hilarante." + IDS_AMMO_DESC_17 "Balas para el cañón del arma del calibre 12, que se esparcen, creando un amplio campo de tiro que es muy eficaz en distancias cortas." + IDS_AMMO_DESC_18 "Perdigones que explotan al impactar, causando muchos destrozos en los objetivos." + IDS_AMMO_DESC_19 "Munición estándar de 9 mm reforzada." + IDS_AMMO_DESC_20 "Munición estándar del calibre .45 reforzada." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_21 "Munición estándar de 7,62 x 39 reforzada." + IDS_AMMO_DESC_22 "Las balas del calibre .308 recubiertas de fósforo siguen ardiendo tras el impacto." + IDS_AMMO_DESC_23 "Munición estándar del calibre .308 reforzada." + IDS_AMMO_DESC_24 "Munición de ballesta estándar. A veces se puede recuperar de objetivos blandos." + IDS_AMMO_DESC_25 "Munición de ballesta recubierta de veneno. A veces se puede recuperar de objetivos blandos." + IDS_AMMO_DESC_26 "Munición incendiaria para ballesta que continúa ardiendo tras el impacto" + IDS_AMMO_DESC_27 "Munición con filtro explosivo para ballesta que se detona al impactar." + IDS_AMMO_DESC_28 "Pequeño misil auto propulsado que explota al impactar." + IDS_AMMO_DESC_29 "Función de zoom de cámara espía." + IDS_AMMO_DESC_30 "Dispositivo explosivo con un temporizador ajustable." + IDS_AMMO_DESC_31 "Descifrador y analizador de código electrónico estándar." + IDS_AMMO_DESC_32 "Soldador eléctrico portátil." + IDS_AMMO_DESC_33 "Ganzúa" + IDS_AMMO_DESC_34 "Micrófono oculto." + IDS_AMMO_DESC_35 "Atomiza cuerpos instantáneamente, eliminándolos por completo." + IDS_AMMO_DESC_36 "Neutraliza químicamente la tinta invisible, haciéndola perceptible al ojo humano." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5000 "" + IDS_MISSION_OBJ_5001 "Encuentro con Hatori-san." + IDS_MISSION_OBJ_5002 "Descubrir la nueva ubicación de la reunión." + IDS_MISSION_OBJ_5003 "Volver para informar a Hatori-san." + IDS_MISSION_OBJ_5004 "Infiltrarse en la propiedad." + IDS_MISSION_OBJ_5005 "Fotografiar la reunión." + IDS_MISSION_OBJ_5006 "Devolver a Yamata-san al puente." + IDS_MISSION_OBJ_5007 "Recupera las otras tres páginas de esta carta." +END + +STRINGTABLE +BEGIN + IDS_GEAR_NAME_4200 "Armadura pesada" + IDS_GEAR_NAME_4201 "Armadura ligera" + IDS_GEAR_NAME_4202 "Kit de primeros auxilios" + IDS_GEAR_NAME_4203 "Vendas" + IDS_GEAR_NAME_4204 "Mando del blindaje" + IDS_GEAR_NAME_4205 "Small Bandage" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6000 "Guarida subterránea secreta de D.A.Ñ.O.\nUbicación DESCONOCIDA" + IDS_MISSION_TEXT_6001 "7:01 de la tarde\nInotakimura, Japón" + IDS_MISSION_TEXT_6002 "Cuartel general de UNITY\nUbicación CLASIFICADA" + IDS_MISSION_TEXT_6003 "04:17 de la tarde\nSiberia, U.R.S.S." + IDS_MISSION_TEXT_6004 "3:36 de la tarde\nAkron, Ohio" + IDS_MISSION_TEXT_6005 "1:25 de la tarde\nCalcuta, India" + IDS_MISSION_TEXT_6006 "11:30 de la mañana\nLa Antártida" + IDS_MISSION_TEXT_6007 "7:14 de la tarde\nCalcuta, India" + IDS_MISSION_TEXT_6008 "2:28 de la tarde\nCuartel general de UNITY" + IDS_MISSION_TEXT_6009 "Base secreta submarina de D.A.Ñ.O.\nMar Egeo" + IDS_MISSION_TEXT_6010 "Guarida subterránea secreta de D.A.Ñ.O." + IDS_MISSION_TEXT_6011 "4:31 de la tarde\nReino de Khios, Mar de Marmara" + IDS_MISSION_TEXT_6012 "Súper Submarino secreto de D.A.Ñ.O." + IDS_MISSION_TEXT_6013 "Flota de altos mandos de la OTAN" + IDS_MISSION_TEXT_6014 "9:42 de la tarde\nSiberia, U.R.S.S." + IDS_MISSION_TEXT_6015 "2:24 p.m.\nCuartel general de la India de D.A.Ñ.O." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE "¡Las bajas civiles son inadmisibles!" + IDS_MISSIONFAILURE2 "¡Has matado a un civil!" + IDS_MISSIONFAILURE3 "¡Te han capturado!" + IDS_MISSIONFAILURE4 "¡Has sido absorbido por el tornado!" + IDS_MISSIONFAILURE5 "¡Has cortado el circuito equivocado!" + IDS_MISSIONFAILURE6 "¡Has muerto!" + IDS_MISSIONFAILURE7 "¡El cuartel general de UNITY ha sido destruido!" + IDS_MISSIONFAILURE8 "¡Has matado al piloto!" + IDS_MISSIONFAILURE9 "¡Has muerto!" + IDS_MISSIONFAILURE10 "¡Has muerto!" + IDS_MISSIONFAILURE11 "¡Has matado a Hatori-san!" + IDS_MISSIONFAILURE12 "¡Has permitido que matasen a Hatori-san!" +END + +STRINGTABLE +BEGIN + IDS_AMMO_29 "Cámara" + IDS_AMMO_30 "Explosivos" + IDS_AMMO_31 "Decodificador" + IDS_AMMO_32 "Soldador" + IDS_AMMO_33 "Ganzúa" + IDS_AMMO_34 "Micrófono" + IDS_AMMO_35 "Desintegrador" + IDS_AMMO_36 "" + IDS_AMMO_37 "Moneda" + IDS_AMMO_38 "Gatito enfadado" + IDS_AMMO_39 "Trampa para osos" + IDS_AMMO_40 "Plátano" + IDS_AMMO_41 "Dardo de rastreo" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7000 "" + IDS_TRANSMISSIONS_7001 "Dirígete al pájaro mina mecánico para pedirle consejo." + IDS_TRANSMISSIONS_7002 "El fusible está roto. Debes sustituirlo." + IDS_TRANSMISSIONS_7003 "La puerta está cerrada con llave." + IDS_TRANSMISSIONS_7004 "Ha habido un cortocircuito. Lo puedes reparar si encuentras un poco de hilo de cobre." + IDS_TRANSMISSIONS_7005 "Falta la manivela de la válvula. Puedes intentar cogerla con las manos." + IDS_TRANSMISSIONS_7006 "Falta el pomo." + IDS_TRANSMISSIONS_7007 "Hay un corte en el suministro eléctrico." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_37 "Una moneda." + IDS_AMMO_DESC_38 "Minino enfadado." + IDS_AMMO_DESC_39 "Trampa para osos." + IDS_AMMO_DESC_40 "Plátano" + IDS_AMMO_DESC_41 "Dardos radio-transmisores que revelan la posición de un enemigo en tu radar." +END + +STRINGTABLE +BEGIN + IDS_TEXT_DIALOGUE_9000 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10001 "Eh, disculpe, señorita. El Director quiere entrevistarse con usted." + IDS_DIALOGUE_10002 "Bien, le diré que le atenderá enseguida." + IDS_DIALOGUE_10003 "Mamá, no me llames al trabajo. Tengo que supervisar una operación." + IDS_DIALOGUE_10004 "¿Y qué se supone que tengo que hacer? Nunca estás en casa. ¿Cómo pretendes que esté en contacto contigo, pichoncito?" + IDS_DIALOGUE_10005 "Mira, tengo que dejarte." + IDS_DIALOGUE_10006 "Pero si ni siquiera te he dicho para qué he llamado." + IDS_DIALOGUE_10007 "Bueno, tal vez la próxima vez vayas al grano en lugar de meterte conmigo un cuarto de hora." + IDS_DIALOGUE_10008 "No irás a colgarme, ¿me oyes?" + IDS_DIALOGUE_10009 "Necesito un trago." + IDS_DIALOGUE_10010 "¿Quería verme?" + IDS_DIALOGUE_10011 "El Sr. Volkov ha solicitado tus servicios. Cree que alguien puede colarse en nuestra pequeña fiesta de esta noche. Quiere que hagas que nuestro invitado se sienta como en casa. Para siempre." + IDS_DIALOGUE_10012 "Cuándo pagaré mi deuda, sensei." + IDS_DIALOGUE_10013 "Cuando yo te lo diga." + IDS_DIALOGUE_10014 "Te prometo que hablaremos de eso más adelante, pero antes... ¡Cate Archer debe morir!" + IDS_DIALOGUE_10015 "¿Oui?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10065 "Sensei, la espía ya está aquí." + IDS_DIALOGUE_10066 "Mátala." + IDS_DIALOGUE_10067 "Oh, oh." + IDS_DIALOGUE_10068 "Así que era una trampa." + IDS_DIALOGUE_10069 "Pero, ¿por qué?" + IDS_DIALOGUE_10070 "No seas ingenua. Tienes muchos enemigos." + IDS_DIALOGUE_10071 "¿Y cuál te envió a ti?" + IDS_DIALOGUE_10072 "¿Un admirador secreto? ¡Qué halagador!" + IDS_DIALOGUE_10073 "Estoy impresionada. No esperaba que llegaras tan lejos." + IDS_DIALOGUE_10074 "Lo siento." + IDS_DIALOGUE_10075 "¿Seguro que está muerta?" + IDS_DIALOGUE_10076 "Por supuesto que sí. Isako no comete errores, ¿verdad, Isako?" + IDS_DIALOGUE_10077 "Bien, es tranquilizador. Aunque estaría más tranquilo si me trajeses pruebas." + IDS_DIALOGUE_10078 "Bueno, Dmitrij. ¿Qué esperabas? ¿Su cabeza en una bandeja?" + IDS_DIALOGUE_10079 "Director, su... madre al teléfono." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10080 "No, maldita sea." + IDS_DIALOGUE_10081 "Sensei, dijo que discutiríamos mi futuro cuando la chica estuviera muerta." + IDS_DIALOGUE_10082 "¿Tu futuro? Tu futuro está con nosotros, querida." + IDS_DIALOGUE_10083 "Me puedes localizar en este número, viejo amigo, aunque te aconsejo que no lo uses." + IDS_DIALOGUE_10084 "Señor, reconsidérelo, por favor." + IDS_DIALOGUE_10085 "No he tenido unas vacaciones en condiciones en 15 años. No pienso renunciar a éstas." + IDS_DIALOGUE_10086 "Me refería a la idea de dejarme a mí al mando." + IDS_DIALOGUE_10087 "Ah, deja de lloriquear. ¿Es que hay alguien más?" + IDS_DIALOGUE_10088 "Bueno, me voy. Te veré dentro de unas semanas." + IDS_DIALOGUE_10089 "Sí, señor." + IDS_DIALOGUE_10090 "¿Director provisional Lawrie?" + IDS_DIALOGUE_10091 "Sí." + IDS_DIALOGUE_10092 "El Dr. Schenker quiere verle." + IDS_DIALOGUE_10093 "Excelente. Hágale pasar." + IDS_DIALOGUE_10094 "Doctor, ¿cómo está?" + IDS_DIALOGUE_10095 "Tiene mucha suerte de seguir viva. El equipo la encontró a tiempo. Ha estado preguntando por usted." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10096 "¡Bruno!" + IDS_DIALOGUE_10097 "Lo siento, no pude ir a Tokio. Los negocios en Praga se complicaron un poco. ¿Cómo demonios estás?" + IDS_DIALOGUE_10098 "Preparada para volver al trabajo." + IDS_DIALOGUE_10099 "No te precipites." + IDS_DIALOGUE_10100 "¿Precipitarme? Han pasado casi dos semanas." + IDS_DIALOGUE_10101 "Te recomiendo que no hagas ningún esfuerzo." + IDS_DIALOGUE_10102 "Haz caso al doctor, te necesito al cien por cien." + IDS_DIALOGUE_10103 "Déjame hacer algo útil. ¡Me estoy atrofiando!" + IDS_DIALOGUE_10104 "Director provisional Lawrie, haga el favor de acudir a la sala de estrategia inmediatamente." + IDS_DIALOGUE_10105 "¿" + IDS_DIALOGUE_10106 "No preguntes. Debo irme. Tu quédate aquí." + IDS_DIALOGUE_10107 "Caballeros, lamento haberles hecho esperar." + IDS_DIALOGUE_10108 "Normalmente, no le habríamos convocado con tanta prisa, pero la situación es urgente. Soy Isaac Barnes y él es el general Morgan Hawkins." + IDS_DIALOGUE_10109 "Bruno Lawrie. Director provisional de UNITY." + IDS_DIALOGUE_10110 "¿Haciendo de canguro, eh?" + IDS_DIALOGUE_10111 "Más o menos." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10112 "¡Estoy bien!" + IDS_DIALOGUE_10113 "¡Necesitas descansar!" + IDS_DIALOGUE_10114 "¡Creí haberte dicho que te quedaras!" + IDS_DIALOGUE_10115 "No estaba de acuerdo contigo." + IDS_DIALOGUE_10116 "Caballeros, ella es la agente Archer, una de nuestros mejores agentes secretos." + IDS_DIALOGUE_10117 "Apuesto a que sí." + IDS_DIALOGUE_10118 "¿Alguna vez se ha tragado un puro encendido?" + IDS_DIALOGUE_10119 "Gracias, Dr. Schenker." + IDS_DIALOGUE_10120 "Sr. Lawrie, Srta. Archer, permítanme que vaya directo al grano." + IDS_DIALOGUE_10121 "Por supuesto." + IDS_DIALOGUE_10122 "¿Les suena de algo la isla de Khios?" + IDS_DIALOGUE_10123 "Está situada en el mar de Marmara. Un lugar codiciado por todas las grandes potencias." + IDS_DIALOGUE_10124 "¿Sabe por qué?" + IDS_DIALOGUE_10125 "Algo relacionado con sus recursos naturales, ¿no?" + IDS_DIALOGUE_10126 "Por Dios." + IDS_DIALOGUE_10127 "Exactamente. Tenemos motivos para creer que los soviéticos planean invadir Khios en las próximas dos semanas." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10128 "En cuanto los rojos pongan un pie en esa isla, el Tío Sam tendrá un paquete sorpresa con forma de Polaris, preparado para que ser sellado y entregado... directamente en Moscú." + IDS_DIALOGUE_10129 "Como sugiere el general, las consecuencias de una invasión podrían ser catastróficas. Un conflicto nuclear a escala mundial es una posibilidad nada desdeñable." + IDS_DIALOGUE_10130 "Pero Khios es casi inexpugnable por medio de un asalto convencional. ¿Cómo planean invadirla?" + IDS_DIALOGUE_10131 "Esperamos que pueda descubrirlo. Lo único que sabemos es que está envuelto en el programa de un arma secreta conocido como proyecto: Omega." + IDS_DIALOGUE_10132 "Deberíamos obligarlos a comerse un sándwich de armas nucleares como en el 62." + IDS_DIALOGUE_10133 "¿Nos ayudarán?" + IDS_DIALOGUE_10134 "Por supuesto que lo haremos." + IDS_DIALOGUE_10135 "Según nuestros espías, los soviéticos coordinan este proyecto desde una base apartada en Siberia. Necesitamos saber a qué nos enfrentamos y creemos que la respuesta está dentro de esa instalación." + IDS_DIALOGUE_10136 "Oh, oh. Olvidé las llaves." + IDS_DIALOGUE_10137 "Quizás puedas abrir la puerta." + IDS_DIALOGUE_10138 "Date prisa antes de que nos congelemos." + IDS_DIALOGUE_10139 "El generador está atras." + IDS_DIALOGUE_10140 "Activa el generador, por favor." + IDS_DIALOGUE_10141 "Me quedaré aquí. Tú activa el generador." + IDS_DIALOGUE_10142 "¡Abrid!" + IDS_DIALOGUE_10143 "¡Abrid esta puerta!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10144 "¡Os lo advierto!" + IDS_DIALOGUE_10145 "¡He dicho que abráis!" + IDS_DIALOGUE_10146 "Chicos malos." + IDS_DIALOGUE_10147 "Si nos encuentran, tendremos problemas." + IDS_DIALOGUE_10148 "¡Acaba con ellos!" + IDS_DIALOGUE_10149 "Rápido, antes de que rompan la puerta." + IDS_DIALOGUE_10150 "Tu jefe te reclama por radio." + IDS_DIALOGUE_10151 "Foxhunt, le habla Foxhound. Hemos dejado algunos objetos para ti en el. cobertizo. La combinación de la cerradura es 36 - 7 - 42." + IDS_DIALOGUE_10152 "Cuídate." + IDS_DIALOGUE_10154 "La moto de nieve no tiene combustible. Busca una lata de gasolina." + IDS_DIALOGUE_10155 "O mejor, busca un camión." + IDS_DIALOGUE_10156 "No pierdas tiempo. Hace frío." + IDS_DIALOGUE_10158 "Cuidado en el puente. Hay muchos soldados. Busca un camino mejor." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10160 "Te esperare aqui. Buena suerte!" + IDS_DIALOGUE_10161 "¿D.A.Ñ.O.?" + IDS_DIALOGUE_10167 "Estoy listo para volver a casa." + IDS_DIALOGUE_10168 "Yo también. Odio este lugar." + IDS_DIALOGUE_10169 "Y pensaba que la comida de mi mujer estaba mala. Es un chef de lujo comparado con el encargado de la cocina de aquí." + IDS_DIALOGUE_10170 "Malas noticias, chicos. No nos vamos de momento." + IDS_DIALOGUE_10171 "Debería haber cogido la misión de El Cairo. Por lo menos hace calor." + IDS_DIALOGUE_10172 "¿No te has enterado? Alguien voló la sede de El Cairo." + IDS_DIALOGUE_10173 "¿Quién?" + IDS_DIALOGUE_10174 "Es difícil saberlo. Todo el mundo reclama la autoría. Probablemente lo han hecho los Demonios bien emplumados, pero podrían haber sido Ira mal administrada o Veneno lindo." + IDS_DIALOGUE_10175 "Supongo que después de todo tomé la decisión correcta. Por lo menos hay vodka." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10177 "El vodka me mantiene caliente." + IDS_DIALOGUE_10178 "Me conformo con café." + IDS_DIALOGUE_10179 "Yo tomaré café. Tú consigue el avión." + IDS_DIALOGUE_10180 "Adelante. Iré enseguida." + IDS_DIALOGUE_10181 "Buen café." + IDS_DIALOGUE_10182 "Lo siento." + IDS_DIALOGUE_10183 "Con ése van ya 14, Sr. Volkov. ¿Se encuentra mejor ahora?" + IDS_DIALOGUE_10184 "Un poco. Otro más." + IDS_DIALOGUE_10185 "¡Adentro, Laramie!" + IDS_DIALOGUE_10186 "¡Por favor no lo hagas! ¡Te lo suplico!" + IDS_DIALOGUE_10187 "Mételo en la máquina." + IDS_DIALOGUE_10188 "Aún estoy enfadado." + IDS_DIALOGUE_10189 "¡Adentro, Mackenzie!" + IDS_DIALOGUE_10190 "Mamá, ya hemos hablado de esto mil veces. NO voy a ir a casa en Navidad." + IDS_DIALOGUE_10191 "Quieres matarme como mataste a tu padre." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10192 "Mamá, papá murió de disentería en Kenia." + IDS_DIALOGUE_10193 "Murió porque se le rompió el corazón porque nunca llegaste a nada. Cuando pienso en los sacrificios que hicimos..." + IDS_DIALOGUE_10194 "Adiós, mamá." + IDS_DIALOGUE_10195 "¡No te atreverás a colgar...!" + IDS_DIALOGUE_10196 "¿Marvin? Sé buen chico y tráeme un traguito, ¿vale?" + IDS_DIALOGUE_10197 "El Sr. Volkov se sintió muy decepcionado al saber que Cate Archer aún está viva." + IDS_DIALOGUE_10198 "Pues que la mate él." + IDS_DIALOGUE_10199 "No seas impertinente." + IDS_DIALOGUE_10200 "Ella no es mi enemiga." + IDS_DIALOGUE_10201 "Es mi enemiga y tú eres mi criada. ¿O has olvidado quién te salvó la vida hace años?" + IDS_DIALOGUE_10202 "No me digas que le tienes miedo." + IDS_DIALOGUE_10203 "No temo a nadie." + IDS_DIALOGUE_10204 "Entonces, mátala. Y esta vez trae pruebas." + IDS_DIALOGUE_10205 "Su cabeza en una bandeja será suficiente." + IDS_DIALOGUE_10206 "Esperábamos obtener información más concluyente. ¿Qué sabe de la organización D.A.Ñ.O.?" + IDS_DIALOGUE_10207 "Ya hemos tratado con ellos antes. No eran muy competentes. Se rumorea que desde entonces han reestructurado la organización, pero nadie sabe de qué se trata exactamente." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10208 "Eso significa que no les pateasteis el culo lo suficientemente fuerte." + IDS_DIALOGUE_10209 "Por lo menos, sabemos que el proyecto: Omega es obra de D.A.Ñ.O., aunque no sepamos exactamente qué es." + IDS_DIALOGUE_10210 "La propuesta que encontramos estaba fechada en 1965." + IDS_DIALOGUE_10211 "¿Y?" + IDS_DIALOGUE_10212 "Eso significa que el proyecto estaba ya en marcha durante el incidente con D.A.Ñ.O el año pasado." + IDS_DIALOGUE_10213 "Ya hemos rastreado la instalación norteamericana en la que escondían al doctor Schenker. Los archivos que recuperamos no hacen mención del proyecto: Omega. Lamentablemente, la instalación alpina fue completamente destruida." + IDS_DIALOGUE_10214 "Hay otro sitio en el que podemos intentar buscar." + IDS_DIALOGUE_10215 "¿Dónde?" + IDS_DIALOGUE_10216 "En Akron, Ohio." + IDS_DIALOGUE_10217 "Hemos registrado la casa de Goodman." + IDS_DIALOGUE_10218 "Blitzny." + IDS_DIALOGUE_10219 "¿Perdón?" + IDS_DIALOGUE_10220 "Se llamaba Melvin Blitzny. Tom Goodman murió en Ámsterdam, ¿recuerdas?" + IDS_DIALOGUE_10221 "Como sea. Nuestros equipos han registrado el lugar a fondo." + IDS_DIALOGUE_10222 "Pero yo no lo he hecho." + IDS_DIALOGUE_10223 "Es una pérdida de tiempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10224 "Ya veremos." + IDS_DIALOGUE_10225 "Bueno, ten cuidado." + IDS_DIALOGUE_10228 "Te traeré un regalo." + IDS_DIALOGUE_10229 "No lo hagas, por favor." + IDS_DIALOGUE_10232 "¿Podemos posponer esto?" + IDS_DIALOGUE_10233 "Bien." + IDS_DIALOGUE_10234 "Eres muy decidida." + IDS_DIALOGUE_10235 "He hecho una promesa." + IDS_DIALOGUE_10236 "¡Adiós!" + IDS_DIALOGUE_10238 "Ah, bien, estás despierta." + IDS_DIALOGUE_10239 "Estoy un poco mareada." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10240 "Nada que no se arregle con una semana de descanso." + IDS_DIALOGUE_10245 "No tengo tiempo para eso. Tengo que encontrar a Armstrong." + IDS_DIALOGUE_10246 "¡Debo insistir!" + IDS_DIALOGUE_10247 "Vamos, niñitas. ¡Ni siquiera lo intentáis!" + IDS_DIALOGUE_10248 "Oh, hola, Cate." + IDS_DIALOGUE_10249 "Armstrong." + IDS_DIALOGUE_10250 "¿Cómo me has encontrado? Ah, claro, eres una espía." + IDS_DIALOGUE_10251 "¿Demasiado para tí?" + IDS_DIALOGUE_10252 "Bueno, son once contra uno. Discúlpame un momento." + IDS_DIALOGUE_10253 "¡Ése es el espíritu, muchachos!" + IDS_DIALOGUE_10254 "Son doce. No había visto al que hay en la esquina. Será un minuto." + IDS_DIALOGUE_10255 "Tómate tu tiempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10256 "Ahora estoy loco." + IDS_DIALOGUE_10257 "Bien, ¿qué puedo hacer por ti?" + IDS_DIALOGUE_10258 "Necesito tu ayuda." + IDS_DIALOGUE_10259 "No sé. Ya me he olvidado de las intrigas internacionales." + IDS_DIALOGUE_10261 "Me lo debes." + IDS_DIALOGUE_10262 "Ah, no empieces." + IDS_DIALOGUE_10263 "Todo lo que te pedimos es que ayudes a Cate a infiltrarse en la rama de India." + IDS_DIALOGUE_10264 "Para eso no me necesitáis." + IDS_DIALOGUE_10265 "Muchas cosas han cambiado desde que dejaste D.A.Ñ.O. La seguridad es mejor que nunca." + IDS_DIALOGUE_10266 "Bueno, supongo que puedo hacer unas cuantas llamadas, pero no esperes que me inmiscuya." + IDS_DIALOGUE_10267 "Kamal, soy Magnus. Voy a la India." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10298 "Tengo una cita con Monsieur Volkov." + IDS_DIALOGUE_10299 "¿Perdón?" + IDS_DIALOGUE_10300 "Dmitrij Volkov me mandó llamar." + IDS_DIALOGUE_10301 "Lo siento, ¿puede hablar más alto?" + IDS_DIALOGUE_10302 "Lléveme ante Volkov. Ahora." + IDS_DIALOGUE_10303 "Acompáñeme por favor." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10304 "¡Oh, lava fundida! Que bonito." + IDS_DIALOGUE_10305 "Espere aquí, por favor." + IDS_DIALOGUE_10306 "Señor, el asesino ha llegado." + IDS_DIALOGUE_10307 "Hágale pasar." + IDS_DIALOGUE_10308 "Quiero decirle, Monsieur, que es un honor para mí estar ante el legendario Dmitrij Volkov. Sin ninguna duda, usted es el Miguel Ángel del asesinato." + IDS_DIALOGUE_10309 "Es muy amable de su parte." + IDS_DIALOGUE_10312 "Monsieur Volkov, dígame quién le ha hecho esto y tendrá una terrible venganza." + IDS_DIALOGUE_10313 "Tuve un accidente esquiando." + IDS_DIALOGUE_10314 "Entiendo." + IDS_DIALOGUE_10315 "Bueno, se estará preguntando por qué he mandado llamar a uno de los asesinos a sueldo más peligrosos del mundo con tan poca antelación." + IDS_DIALOGUE_10316 "Porque quiere que mate a alguien" + IDS_DIALOGUE_10317 "No es a " + IDS_DIALOGUE_10318 "¿Cómo los convenzo para que me contraten?" + IDS_DIALOGUE_10319 "Demuestra lo que vales. Tal vez necesiten una sirvienta." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10320 "Nos están observando." + IDS_DIALOGUE_10321 "Está bien. Yo me quedaré aquí. Tú atrápalo y descubre qué quiere." + IDS_DIALOGUE_10322 "Será un placer." + IDS_DIALOGUE_10323 "Ten cuidado." + IDS_DIALOGUE_10324 "¿Quién eres?" + IDS_DIALOGUE_10325 "Kamal me envía para reunirme contigo." + IDS_DIALOGUE_10326 "¿Por qué no te has presentado?" + IDS_DIALOGUE_10327 "Pensaba que me seguían." + IDS_DIALOGUE_10328 "Kamal te espera en... Ahh..." + IDS_DIALOGUE_10329 "Te dije que lo atraparas, no que lo mataras." + IDS_DIALOGUE_10330 "Estaba a punto de decirme dónde tengo que reunirme con Kamal." + IDS_DIALOGUE_10331 "No hay problema. Kamal dijo que llevaría un clavel rosa para que lo reconocieras." + IDS_DIALOGUE_10332 "¿Yo?" + IDS_DIALOGUE_10333 "No puedo dejar que me vean." + IDS_DIALOGUE_10334 "¡Eh, vosotros!" + IDS_DIALOGUE_10335 "Me ocuparé de esto. Tú busca a Kamal." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10336 "¿Cómo te encontraré?" + IDS_DIALOGUE_10337 "Como si no desentonara..." + IDS_DIALOGUE_10340 "¡Dinos dónde está!" + IDS_DIALOGUE_10341 "¡No hablaré!" + IDS_DIALOGUE_10342 "¡¡¡Entonces... morirás!!!" + IDS_DIALOGUE_10343 "¡Cuidado!" + IDS_DIALOGUE_10344 "¡Ah, estás ahí! Empezaba a preocuparme." + IDS_DIALOGUE_10345 "Este mapa muestra la posición de la guarida de D.A.Ñ.O. He dejado un paquete para ti en una caja de periódicos cerca de aquí." + IDS_DIALOGUE_10346 "Oh, antes de que se me olvide, es probable que necesites algo de dinero para arreglártelas con el loco de Harij. Cincuenta rupias serán suficientes." + IDS_DIALOGUE_10347 "¿Quieres pasar? Cincuenta rupias." + IDS_DIALOGUE_10348 "Nadie pasa sin pagarle a Harij." + IDS_DIALOGUE_10349 "No enfades a Harij." + IDS_DIALOGUE_10350 "Te lo he dicho MUCHAS veces: cincuenta rupias si quieres atravesar esta puerta." + IDS_DIALOGUE_10351 "Puedes pasar." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10352 "Si te vuelvo a coger cobrando entrada, te arrestaré. Lo juro." + IDS_DIALOGUE_10353 "Es mi puerta." + IDS_DIALOGUE_10354 "¡No! ¡No! NO es tu puerta. ¡Te lo advierto!" + IDS_DIALOGUE_10355 "Ahora quítate de mi vista." + IDS_DIALOGUE_10356 "¿Hola?" + IDS_DIALOGUE_10357 "¿Hola?" + IDS_DIALOGUE_10358 "¿Con quién hablo?" + IDS_DIALOGUE_10359 "¿Con quién hablo YO?" + IDS_DIALOGUE_10360 "Soy yo, Balaji Malpani." + IDS_DIALOGUE_10361 "Balaji, idiota, soy yo, Anoop." + IDS_DIALOGUE_10362 "¡Oh, me preguntaba si serías tú, amigo mío! ¿Cómo estás?" + IDS_DIALOGUE_10363 "Bien, gracias. ¿Cuál es la contraseña de hoy? ¿Has pensado algo?" + IDS_DIALOGUE_10364 "¡Sí! ¡Y creo que te gustará muchísimo!" + IDS_DIALOGUE_10365 "Me tienes en ascuas." + IDS_DIALOGUE_10366 "Bien. La contraseña de hoy es... ¿Estás listo?" + IDS_DIALOGUE_10367 "¡Suéltalo ya, cerebro de mosquito!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10368 "Mulligatawny. ¿Qué te parece?" + IDS_DIALOGUE_10369 "Creo que debería hacer de ti comida para ratas feroces." + IDS_DIALOGUE_10370 "¿Contraseña?" + IDS_DIALOGUE_10371 "Fuera de aquí." + IDS_DIALOGUE_10372 "No sé de qué me habla." + IDS_DIALOGUE_10373 "El jefe de seguridad. ¿Dónde puedo encontrarle?" + IDS_DIALOGUE_10374 "No tenemos jefe de seguridad." + IDS_DIALOGUE_10375 "¿No es ésta la sede en India de D.A.Ñ.O.?" + IDS_DIALOGUE_10376 "¿Qué es D.A.Ñ.O.?" + IDS_DIALOGUE_10377 "Suponiendo que esto fuera D.A.Ñ.O. y que hubiera un jefe de seguridad llamado Anoop Banerjee, ¿dónde podría encontrarlo?" + IDS_DIALOGUE_10378 "Al otro lado del patio. Su oficina está en el segundo piso." + IDS_DIALOGUE_10379 "Gracias." + IDS_DIALOGUE_10380 "Un placer." + IDS_DIALOGUE_10381 "¡Un momento!" + IDS_DIALOGUE_10382 "No tiene autorización para abandonar este edificio. Le diré a Banerjee que quiere verle." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10384 "Es tu oportunidad, Cate. Entra en la oficina de Banerjee y pon un micro en su teléfono. ¡No dejes que te cojan!" + IDS_DIALOGUE_10385 "¡Estupendo! Ahora busca la caja de empalme. Según Inteligencia, está en algún lugar del primer piso." + IDS_DIALOGUE_10386 "¿Una emboscada?" + IDS_DIALOGUE_10387 "Fueron esos bastardos de la Alianza Maligna." + IDS_DIALOGUE_10388 "¿Hemos perdido el cargamento entero?" + IDS_DIALOGUE_10389 "Pacpac consiguió salvar dos cajas de refrescos, pero se quedaron con todo el helado y los caramelos." + IDS_DIALOGUE_10390 "¡Malditos sean! Esta vez han llegado demasiado lejos. Regresad a la base inmediatamente. Debemos prepararnos." + IDS_DIALOGUE_10391 "¿Prem? Trae a la chica a mi oficina. La veré ahora." + IDS_DIALOGUE_10392 "Sígame, por favor." + IDS_DIALOGUE_10393 "Por esta puerta, por favor." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10401 "El Sr. Banerjee está esperando." + IDS_DIALOGUE_10402 "El Sr. Banerjee es un hombre ocupado. No le haga perder el tiempo, por favor." + IDS_DIALOGUE_10403 "¿Adónde cree que va?" + IDS_DIALOGUE_10404 "Si no quiere hablar con el Sr. Banerjee, tendrá que irse." + IDS_DIALOGUE_10405 "Se lo advierto. Es su última oportunidad." + IDS_DIALOGUE_10406 "Muy bien. Es obvio que no quiere hablar con él. ¡Váyase o la echaré!" + IDS_DIALOGUE_10407 "¿Dónde está la jovencita?" + IDS_DIALOGUE_10408 "Creo que está en el servicio." + IDS_DIALOGUE_10409 "¿Discúlpeme, señorita? El jefe la atenderá ahora." + IDS_DIALOGUE_10410 "¿Hola?" + IDS_DIALOGUE_10411 "¿Está bien?" + IDS_DIALOGUE_10412 "Estoy comenzando a preocuparme por usted." + IDS_DIALOGUE_10413 "Por favor, salga o tendré que tirar la puerta." + IDS_DIALOGUE_10414 "¡Uno... dos... tres!" + IDS_DIALOGUE_10415 "¡Guardias! ¡No la dejen escapar!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10416 "Aunque yo trabajara para esa tal compañía D.A.Ñ.O., ¿cómo podría conseguir pruebas que avalasen su currículum?" + IDS_DIALOGUE_10417 "Me han dicho que la Alianza Maligna tiene una oficina en la zona." + IDS_DIALOGUE_10418 "No lo sabía, pero, continúe, por favor." + IDS_DIALOGUE_10419 "Bueno, ¿y si le traigo el contenido de su caja fuerte y echo por tierra su operación?" + IDS_DIALOGUE_10420 "Digamos que si yo fuera el responsable de contratar a personas para una organización como la que describe, quedaría muy impresionado por una actuación tan audaz." + IDS_DIALOGUE_10421 "Volveré." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10444 "¡Estás borracho!" + IDS_DIALOGUE_10445 "Me aburría." + IDS_DIALOGUE_10446 "Pues sí que eres una ayuda." + IDS_DIALOGUE_10447 "Eh, nena, no necesito un sermón, ya soy grandecito. Además, para ser sincero, no hay mucha diferencia cuando estoy borracho y cuando estoy sobrio." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10448 "Bueno, creo que tengo el trabajo." + IDS_DIALOGUE_10449 "Es un buen comienzo, pero no es suficiente. Por lo que me dijo Kamal, necesitarás una autorización de máxima seguridad si quieres llegar a la caja fuerte." + IDS_DIALOGUE_10450 "Supongo que tendré que conseguir que me asciendan." + IDS_DIALOGUE_10451 "¿Impresionado?" + IDS_DIALOGUE_10452 "Está contratada. Para empezar es un puesto de nivel, pero creo que encontrará el sueldo y los beneficios muy buenos. Bienvenida a D.A.Ñ.O." + IDS_DIALOGUE_10462 "Es Kali." + IDS_DIALOGUE_10463 "Me ha asustado. Intimida bastante, ¿verdad?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10464 "Kali es una paradoja. Protectora y destructora. Casi destruye el mundo cuando intentaba salvarlo." + IDS_DIALOGUE_10465 "Siempre pasa lo mismo. ¿Qué ocurrió?" + IDS_DIALOGUE_10466 "Había un general demoníaco llamado Raktabija. De cada gota de su sangre que tocara el suelo nacería un nuevo Raktabija; hasta que todo el campo de batalla se cubriera de ellos. Desesperados, los dioses llamaron a Parvati, consorte del dios Shiva. Con la forma de Kali, ella se metió en la batalla, desplegando su lengua para coger la sangre del demonio antes de que tocara el suelo y se crearan nuevos ejércitos. Pero ella se emborrachó con la sangre y su danza de la victoria amenazó con destruir el mundo hasta que el dios Shiva se lanzó bajo sus pies y ella al verlo se calmó." + IDS_DIALOGUE_10467 "Fascinante." + IDS_DIALOGUE_10468 "No muy distinta a mi esposa. Excepto que ella seguiría bailando." + IDS_DIALOGUE_10469 "Pobrecito." + IDS_DIALOGUE_10470 "Deberías lavarte las manos con agua caliente." + IDS_DIALOGUE_10471 "Te sugiero que te laves las manos con agua caliente." + IDS_DIALOGUE_10472 "Hay un cuarto de baño por esas puertas a la derecha." + IDS_DIALOGUE_10473 "Como he dicho, deberías lavarte las manos. Utiliza agua caliente." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10481 "¿Cate Archer?" + IDS_DIALOGUE_10482 "¡Eh, todos! ¡Es Cate Archer! ¡La súper espía británica!" + IDS_DIALOGUE_10483 "¿Me da su autógrafo?" + IDS_DIALOGUE_10484 "¡Sal a la calle! ¡Armstrong te está esperando!" + IDS_DIALOGUE_10485 "¡Vamos!" + IDS_DIALOGUE_10486 "¡Rápido!" + IDS_DIALOGUE_10487 "¡No tenemos mucho tiempo!" + IDS_DIALOGUE_10488 "¡Lo digo en serio!" + IDS_DIALOGUE_10489 "¿Por qué pones a prueba mi paciencia?" + IDS_DIALOGUE_10492 "¿Qué pasa?" + IDS_DIALOGUE_10493 "¡Estamos atrapados!" + IDS_DIALOGUE_10494 "¡Eh, tú, ayúdanos! ¿vale?" + IDS_DIALOGUE_10495 "Esperaba un rival mejor." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10496 "¿Qué estás farfullando?" + IDS_DIALOGUE_10497 "¿Así que ésta es la poderosa Cate Archer? No estoy impresionado." + IDS_DIALOGUE_10498 "Cuando salga de aquí, voy a machacar tu pálida cara con el muro más cercano. " + IDS_DIALOGUE_10499 "Hay un gran trecho hasta abajo, mon ami. La única forma de salir de esa jaula es filtrándose... como sopa de cebolla." + IDS_DIALOGUE_10500 "¿Oui? Bien, parece... ¿Fred Astaire? ¿Una bicicleta? ¿Un poni?" + IDS_DIALOGUE_10501 "¡Mon dieu! ¡Dímelo!" + IDS_DIALOGUE_10502 "¡Señor, venga rápido! ¡Tenemos un problema fuera!" + IDS_DIALOGUE_10503 "No quiero morir." + IDS_DIALOGUE_10504 "¿Qué estás haciendo?" + IDS_DIALOGUE_10505 "¡Buena chica!" + IDS_DIALOGUE_10506 "¡Ja!" + IDS_DIALOGUE_10507 "No sirve de nada. La puerta está cerrada desde el otro lado." + IDS_DIALOGUE_10508 "Atrás. Voy a echarla abajo." + IDS_DIALOGUE_10509 "No es exactamente lo que tenía en mente." + IDS_DIALOGUE_10510 "Vas a tener que abrir esta puerta, nena." + IDS_DIALOGUE_10511 "¡Sácame de aquí!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10512 "¡Abre la puerta!" + IDS_DIALOGUE_10513 "¡Ay!" + IDS_DIALOGUE_10514 "¡He dicho que abras!" + IDS_DIALOGUE_10515 "¡Cúbreme!" + IDS_DIALOGUE_10516 "¡He dicho que me cubras!" + IDS_DIALOGUE_10517 "¿Por qué me están disparando?" + IDS_DIALOGUE_10518 "Son míos. No puedes cogerlos." + IDS_DIALOGUE_10519 "¡La chica debe ser castigada!" + IDS_DIALOGUE_10520 "Me ocuparé personalmente." + IDS_DIALOGUE_10521 "¡Maldito seas!" + IDS_DIALOGUE_10522 "Ahora, si me disculpa." + IDS_DIALOGUE_10523 "Informaré de esto al Director." + IDS_DIALOGUE_10524 "Me chivaré al Director." + IDS_DIALOGUE_10525 "Asegúrate de que sale." + IDS_DIALOGUE_10526 "¡Ahora!" + IDS_DIALOGUE_10527 "No tan rápido, francesito." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10528 "¡Merde!" + IDS_DIALOGUE_10529 "¡Rápido! ¡Yo conduzco y tu disparas!" + IDS_DIALOGUE_10530 "La próxima vez no tendrás tanta suerte." + IDS_DIALOGUE_10534 "La tía Phyllis me ha dicho que aún no la has llamado. La mujer está en su lecho de muerte y tú no puedes molestarte en hacer una llamada." + IDS_DIALOGUE_10535 "Mamá, la tía Phyllis solía encerrarme en el sótano cuando me enviabas unos días con ella." + IDS_DIALOGUE_10536 "¡Si hubiera sabido que ibas a volverte tan ingrato, yo también te hubiese encerrado en el sótano! Lo juro, si tu padre..." + IDS_DIALOGUE_10537 "Adiós, mamá. Me ha encantado oír tu voz." + IDS_DIALOGUE_10539 "¿Están listos los preparativos?" + IDS_DIALOGUE_10540 "Sí, señor. La división está de camino a la zona de pruebas." + IDS_DIALOGUE_10541 "Bien, mataremos dos pájaros de un tiro. ¿Hay algo más?" + IDS_DIALOGUE_10542 "Tenemos una pequeña... complicación." + IDS_DIALOGUE_10543 "Nos queda poco tiempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10544 "Por fin, buenas noticias para variar. Toda esta mierda diplomática me da dolor de cabeza." + IDS_DIALOGUE_10545 "Nuestros agentes se acercan mientras estamos hablando." + IDS_DIALOGUE_10546 "Eso espero." + IDS_DIALOGUE_10547 "De verdad que me impresionaste allí." + IDS_DIALOGUE_10548 "Mira cómo lloras." + IDS_DIALOGUE_10549 "Lo único que tenías que hacer era atraparlo, pedazo de alcornoque." + IDS_DIALOGUE_10550 "Llorar, llorar, llorar." + IDS_DIALOGUE_10551 "Bueno, por lo menos conseguiste su abrigo. Tal vez se congele hasta morir." + IDS_DIALOGUE_10553 "Calla." + IDS_DIALOGUE_10554 "Oblígame." + IDS_DIALOGUE_10555 "Perdone. Agente Archer, el lugar debería estar más allá de ese arrecife. " + IDS_DIALOGUE_10556 "¿Qué es ese humo?" + IDS_DIALOGUE_10557 "Algo va mal." + IDS_DIALOGUE_10558 "No sabía que me acompañaba un genio." + IDS_DIALOGUE_10559 "Ya te pateé el culo y puedo volver a hacerlo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10560 "¿Cuándo te has vuelto tan bravucona?" + IDS_DIALOGUE_10561 "Espera aquí. Echaré un vistazo." + IDS_DIALOGUE_10562 "Espero que no te rompas una uña." + IDS_DIALOGUE_10563 "¿Quieres esperar en el avión?" + IDS_DIALOGUE_10564 "Toma, te daré impulso." + IDS_DIALOGUE_10565 "Esperaré aquí." + IDS_DIALOGUE_10566 "Tienes que detenerlo. Está fuera de control." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10576 "¿Quién... quién eres?" + IDS_DIALOGUE_10577 "¡Vamos a morir todos!" + IDS_DIALOGUE_10578 "¡Por aquí! ¡Rápido!" + IDS_DIALOGUE_10579 "Pobre Hotchkins. Intentó avisarlos." + IDS_DIALOGUE_10580 "Los otros sujetos estaban bien, pero ése... ése era diferente." + IDS_DIALOGUE_10581 "Fuerza de voluntad. Eso era. Deberíamos haber aumentado su tratamiento químico." + IDS_DIALOGUE_10582 "Pobre, pobre Hotchkins." + IDS_DIALOGUE_10583 "¿Qué pasa allí?" + IDS_DIALOGUE_10584 "¿Puedes pasar?" + IDS_DIALOGUE_10585 "Oh, ahí estás." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10592 "Lo que dices no tiene sentido." + IDS_DIALOGUE_10593 "¡D.A.Ñ.O. planea realizar una prueba de campo! ¡Van a utilizar Súper Soldados para destruir la sede en la India como castigo!" + IDS_DIALOGUE_10594 "¿Cuándo?" + IDS_DIALOGUE_10595 "Puede que ya hayan empezado. Voy hacia allí. Avisa a la policía y diles que no intenten luchar, que simplemente evacuen la zona." + IDS_DIALOGUE_10596 "¡Está bien! ¡Ten cuidado!" + IDS_DIALOGUE_10597 "¡No, por favor!" + IDS_DIALOGUE_10598 "¿Es usted Cate Archer?" + IDS_DIALOGUE_10599 "Sí, ¿cuál es la situación?" + IDS_DIALOGUE_10600 "Aún estamos evacuando la zona." + IDS_DIALOGUE_10601 "Si sus hombres pueden mantener ocupados a los soldados, veré cómo podemos sacar a esta gente de aquí." + IDS_DIALOGUE_10602 "¡Srta. Archer! ¡Por aquí!" + IDS_DIALOGUE_10603 "¡Kamal!" + IDS_DIALOGUE_10604 "¡Tengo información para ti!" + IDS_DIALOGUE_10605 "Srta. Archer, ¿se encuentra bien?" + IDS_DIALOGUE_10606 "Creo que sí. ¿Y usted? ¿Está bien?" + IDS_DIALOGUE_10607 "Creo que me he quedado sin trabajo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10608 "Srta. Archer, me alegra que haya vuelto. Tengo noticias sobre Magnus Armstrong." + IDS_DIALOGUE_10609 "¿Qué pasa? ¿Está bien?" + IDS_DIALOGUE_10610 "Es prisionero de D.A.Ñ.O." + IDS_DIALOGUE_10611 "No por mucho tiempo." + IDS_DIALOGUE_10621 "¿Ésta es la información sobre los Súper Soldados?" + IDS_DIALOGUE_10622 "Es todo lo que pude encontrar." + IDS_DIALOGUE_10623 "Vaya." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10624 "¿Las gafas? ¿Otra vez?" + IDS_DIALOGUE_10625 "Creo que me las he dejado en la cafetería." + IDS_DIALOGUE_10626 "Volveré enseguida." + IDS_DIALOGUE_10627 "Como puedes ves en este diagrama, lo tengo todo calculado. Dame 12 horas y te entregaré la madre Rusia." + IDS_DIALOGUE_10628 "No es un plan de ataque muy detallado." + IDS_DIALOGUE_10629 "Podemos arreglar los detalles más tarde. Lo primero es que el Presidente apruebe la idea." + IDS_DIALOGUE_10630 "Hazme saber qué dice." + IDS_DIALOGUE_10631 "Hola, agente Archer." + IDS_DIALOGUE_10632 "El general Hawkins acaba de explicar su plan para invadir Rusia." + IDS_DIALOGUE_10633 "Por supuesto, ha omitido la parte en la que se trata qué ocurre durante la invasión." + IDS_DIALOGUE_10634 "Es una pena que su inteligencia no iguale su fervor." + IDS_DIALOGUE_10635 "(suspiro)" + IDS_DIALOGUE_10636 "Yo no sé qué vais a hacer los británicos, pero los norteamericanos no vamos a esperar sentados a que caiga la bomba." + IDS_DIALOGUE_10637 "Describiría cómo funciona el plan, pero es bastante técnico. No entraría en tu cabecita." + IDS_DIALOGUE_10638 "Mejor te pones a intercambiar recetas y nos dejas pensar a nosotros." + IDS_DIALOGUE_10639 "Pensándolo bien, ¿por qué no salimos de este antro y discutimos el tema en privado? Ya sabes a qué me refiero..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10640 "¡Atención, a todo el personal! Se han visto intrusos cerca de la cafetería. ¡Se cree que están armados y que son extremadamente peligrosos!" + IDS_DIALOGUE_10641 "Me acaban de comunicar que parece que los intrusos son... mimos." + IDS_DIALOGUE_10642 "A todo el personal. Se anula el estado de alerta. La amenaza ha sido neutralizada. Gracias." + IDS_DIALOGUE_10644 "¡Ahí estás! Creía que te habían secuestrado." + IDS_DIALOGUE_10645 "Ah, las has encontrado." + IDS_DIALOGUE_10646 "Lamento haberte preocupado. Una persona pequeña y extraña entró en mi oficina y pensé que sería mejor salir corriendo." + IDS_DIALOGUE_10647 "Un plan digno de alabanza." + IDS_DIALOGUE_10648 "Vamos a echar un vistazo a estos expedientes, ¿vale?" + IDS_DIALOGUE_10649 "¿Tienes que moverte?" + IDS_DIALOGUE_10650 "Sí." + IDS_DIALOGUE_10651 "Creo que se me puede ocurrir algo útil. Por supuesto, tengo que analizar la información meticulosamente, así que puedes irte y hacer estallar algo mientras tanto." + IDS_DIALOGUE_10652 "Buena idea. Iré..." + IDS_DIALOGUE_10653 "...a rescatar a Armstrong." + IDS_DIALOGUE_10654 "Diviértete." + IDS_DIALOGUE_10655 "Uummm, Armstrong." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10656 "Whisky, rápido." + IDS_DIALOGUE_10657 "¿Problemas en la oficina?" + IDS_DIALOGUE_10658 "Un puñado de nenazas no están dispuestos a hacer lo que hay que hacer. Ah, no quieres escuchar mis problemas." + IDS_DIALOGUE_10659 "Al contrario. Me encantaría." + IDS_DIALOGUE_10660 "¿Qué se supone que tengo que hacer? La maldita cosa ha tenido un cortocircuito." + IDS_DIALOGUE_10661 "¿Tienes tu tarjeta de garantía?" + IDS_DIALOGUE_10662 "¿Qué crees que es ESTO, papel higiénico? Aunque podría serlo." + IDS_DIALOGUE_10663 "¿Has leído la parte en la que dice que el fabricante no es responsable en caso de negligencia o uso incorrecto por parte del comprador?" + IDS_DIALOGUE_10664 "¿Uso incorrecto? Seguía las malditas instrucciones." + IDS_DIALOGUE_10665 "En la tarjeta se indica claramente las condiciones bajo las que la garantía se anulará. Hay una lista completa de cosas que pueden causar fallos." + IDS_DIALOGUE_10666 "¡Me rindo! De todos modos, estos robots son inútiles." + IDS_DIALOGUE_10667 "¿Ves esto? Eso es lo que pienso de estos estúpidos robots." + IDS_DIALOGUE_10668 "¿Qué estás mirando?" + IDS_DIALOGUE_10669 "Error. No computa. Consulte el manual del usuario para utilizar el procedimiento de entrada correcto." + IDS_DIALOGUE_10670 "El manual del usuario se puede conseguir en el departamento de Servicios del Súper Ordenador en el pasillo 2. Para conseguir el manual del usuario, debe rellenar una solicitud con el número de objeto correcto. Este objeto numerado aparece en el catálogo de productos de servicios del Súper Ordenador." + IDS_DIALOGUE_10671 "Saludos. Para consultar el manual del usuario del Súper Ordenador, presente un formulario de solicitud 207-B. El número de objeto para el catálogo de productos de servicios del Súper Ordenador se puede encontrar en el catálogo de productos de servicios del Súper Ordenador." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10672 "No puedo ayudarte sin un formulario de solicitud." + IDS_DIALOGUE_10673 "Toma el catálogo de productos de servicios del Súper Ordenador." + IDS_DIALOGUE_10674 "Lo siento. El manual del usuario del Súper Ordenador se ha prestado." + IDS_DIALOGUE_10675 "Como eres tan guapa, voy a ayudarte. Chris Hibbard ha tenido el manual durante los últimos cuatro meses. Nunca devuelve las cosas cuando ha terminado con ellas, pero siempre se deja cosas encima de su mesa. Incluso he hecho una copia de su tarjeta de oficina. Puedes acogerla prestada, pero devuélvela cuando hayas terminado. No me gustaría tener que mandar a los de seguridad a por ti." + IDS_DIALOGUE_10676 "Gracias." + IDS_DIALOGUE_10677 "Error. No computa. El usuario intenta utilizar el procedimiento de entrada versión 1.0. La versión actual es la 2.0. Consulte el suplemento del manual del usuario para conseguir el procedimiento de entrada actualizado." + IDS_DIALOGUE_10678 "¡Se supone que las chicas no pueden entrar aquí!" + IDS_DIALOGUE_10679 "Ahí tienes." + IDS_DIALOGUE_10680 "¡Has hecho que me moje!" + IDS_DIALOGUE_10681 "Lo siento. Dame tu pase." + IDS_DIALOGUE_10682 "No estás autorizada a entrar en el departamento de servicios del Súper Ordenador." + IDS_DIALOGUE_10683 "Necesito el suplemento del manual de usuario del Súper Ordenador. Ni siquiera aparece en el catálogo. No tengo tiempo para todo este papeleo. Dame el pase o lo que sea." + IDS_DIALOGUE_10684 "Vale." + IDS_DIALOGUE_10685 "¡Vaya, vaya!" + IDS_DIALOGUE_10686 "Venga, no te hagas el sorprendido." + IDS_DIALOGUE_10687 "No puedo decir que esperara verte aquí." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10688 "¿Creías que iba a dejarte morir?" + IDS_DIALOGUE_10689 "¿Crees que puedes sacarme de este lío?" + IDS_DIALOGUE_10690 "Ni en broma, pero al menos puede ver cómo te mueres." + IDS_DIALOGUE_10691 "¡Rápido, nena!" + IDS_DIALOGUE_10692 "¡Oh, vaya!" + IDS_DIALOGUE_10693 "No te olvides de mí ahora." + IDS_DIALOGUE_10694 "Cate..." + IDS_DIALOGUE_10695 "Casi no me queda tiempo, pequeña." + IDS_DIALOGUE_10696 "Bueno, estaré..." + IDS_DIALOGUE_10697 "Oh, no, tú no." + IDS_DIALOGUE_10698 "Despídete de tu pequeña amiguita." + IDS_DIALOGUE_10699 "¡Maldito seas!" + IDS_DIALOGUE_10700 "Ésa es otra que te debo." + IDS_DIALOGUE_10701 "Oh, oh. ¡Salgamos de aquí!" + IDS_DIALOGUE_10702 "¡Abigail!" + IDS_DIALOGUE_10703 "No puedo... controlarme..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10704 "¡¡¡Aaarrrrrggggghhhh!!!" + IDS_DIALOGUE_10705 "Eso no tiene buena pinta." + IDS_DIALOGUE_10706 "Está bien. Uno de nosotros va a tener que encontrar las bombas de achique para vaciar el pasillo 4B." + IDS_DIALOGUE_10707 "Ve por ahí o espera allí." + IDS_DIALOGUE_10708 "Me voy, entonces." + IDS_DIALOGUE_10709 "Entonces esperaré aquí." + IDS_DIALOGUE_10710 "Te veré pronto." + IDS_DIALOGUE_10711 "Bien, estoy vaciando el pasillo. Agárrate fuerte." + IDS_DIALOGUE_10712 "¡Adelante! Es posible que necesite tu ayuda un momento. Busca un intercomunicador." + IDS_DIALOGUE_10713 "Cuando encuentres las bombas, vacía el pasillo 4B." + IDS_DIALOGUE_10714 "Bien, funciona. Busca una salida." + IDS_DIALOGUE_10715 "Cate, necesito tu ayuda. Una cámara de seguridad tiene un cortocircuito. Si me acerco demasiado, moriré. Busca la oficina de seguridad... ¿Qué demonios?" + IDS_DIALOGUE_10716 "Cate, ¿eres tú? ¿Dónde estás? Yo..." + IDS_DIALOGUE_10717 "¿Qué recomiendas, Peterson? ¿Qué nos tumbemos y esperemos la muerte?" + IDS_DIALOGUE_10718 "Hemos buscado por todas partes." + IDS_DIALOGUE_10719 "Bueno, sigue buscando. Debe haber una especie de mecanismo en alguna parte." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10720 "Sí, señor." + IDS_DIALOGUE_10721 "¡Oh, vaya!" + IDS_DIALOGUE_10724 "Intenta pasar desapercibido. Echaré un vistazo por ahí." + IDS_DIALOGUE_10725 "Me parece bien. Me he encontrado una botellita de coñac por el camino. Hace tiempo que quería llevarla a un examen de conducir." + IDS_DIALOGUE_10726 "Deja de quejarte. Podríamos haberte dejado morir." + IDS_DIALOGUE_10727 "Magnus, lanza la cápsula de escape." + IDS_DIALOGUE_10728 "Debe estar atascada." + IDS_DIALOGUE_10729 "¿Hay algo en esta estúpida base que funcione como se supone que tiene que funcionar?" + IDS_DIALOGUE_10730 "No." + IDS_DIALOGUE_10731 "Supongo que después de todo me quedo." + IDS_DIALOGUE_10732 "¿Qué? Estás loco. No he recorrido todo este camino para dejar que te ahogues." + IDS_DIALOGUE_10733 "¿Tienes una idea mejor? Soy el único suficientemente fuerte para hacer el trabajo." + IDS_DIALOGUE_10734 "No hay discusión." + IDS_DIALOGUE_10735 "Tiene que haber otra forma." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10736 "No, a menos que quieras que muramos todos." + IDS_DIALOGUE_10737 "Deséame suerte." + IDS_DIALOGUE_10738 "¡Ahí está!" + IDS_DIALOGUE_10739 "Puedes hacerlo, Magnus." + IDS_DIALOGUE_10740 "Debe suspender esta operación." + IDS_DIALOGUE_10741 "¿Suspenderla? Imposible." + IDS_DIALOGUE_10742 "Nunca se aprobó, sólo se debatió." + IDS_DIALOGUE_10743 "Bueno, supongo que me podría convencer... con 100 millones de libras esterlinas. " + IDS_DIALOGUE_10744 "Está loco." + IDS_DIALOGUE_10745 "¿Lo estoy? A menos que me equivoque, cuando mis Súper Soldados tomen Khios, podrá contemplar el espectro de la aniquilación." + IDS_DIALOGUE_10748 "¿Espera que me crea que sus Súper Soldados conseguirán lo que no ha conseguido ningún país? Khios es impenetrable. Incluso para usted." + IDS_DIALOGUE_10749 "Le enviaré una postal." + IDS_DIALOGUE_10750 "No me deja elección, así que me pondré en contacto con nuestro embajador en Washington." + IDS_DIALOGUE_10751 "No faltaría más. Veamos si le creen." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10752 "¿Sí?" + IDS_DIALOGUE_10753 "¿Dónde has estado? He estado intentado hablar contigo toda la mañana." + IDS_DIALOGUE_10754 "Hola, mamá. Adiós, mamá." + IDS_DIALOGUE_10755 "¡No te atreverás a colgar...!" + IDS_DIALOGUE_10756 "Acabo de hablar con Washington. Los soviéticos niegan cualquier implicación." + IDS_DIALOGUE_10757 "Pandilla de putas mentirosas." + IDS_DIALOGUE_10758 "Washington les ha advertido de que si ondea una bandera soviética en la isla se considerará un acto de guerra." + IDS_DIALOGUE_10759 "He completado mi análisis." + IDS_DIALOGUE_10760 "¿Y qué es eso?" + IDS_DIALOGUE_10761 "Suero anti-Súper Soldados." + IDS_DIALOGUE_10762 "Perfecto. ¿Qué hace?" + IDS_DIALOGUE_10763 "¿Quieres la respuesta técnica?" + IDS_DIALOGUE_10764 "Explícalo de forma que Barnes lo entienda." + IDS_DIALOGUE_10765 "Provoca una reacción química en los Súper Soldados que, básicamente, cuece sus tripas." + IDS_DIALOGUE_10766 "Bien, carajo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10770 "Es de suponer que ha fracasado." + IDS_DIALOGUE_10771 "Nos estamos quedando sin opciones." + IDS_DIALOGUE_10773 "¿Dónde hay que apuntarse para acudir a esta fiesta?" + IDS_DIALOGUE_10774 "Estarás solo. Si enviamos nuestras tropas a esa isla, los soviéticos se lanzarán contra nosotros. Hemos advertido a las autoridades locales que no intervengan, ya que sus armas serán inútiles." + IDS_DIALOGUE_10775 "Por lo menos podrían dar a los Súper Soldados otras alternativas a disparar." + IDS_DIALOGUE_10776 "Mira que no haber pensado en eso." + IDS_DIALOGUE_10777 "Tiene que usar la cabeza, señor." + IDS_DIALOGUE_10779 "Pensé meterte una bala en la cabeza mientras estabas inconsciente." + IDS_DIALOGUE_10780 "¿Por qué no lo hiciste?" + IDS_DIALOGUE_10781 "Demasiado fácil. Para ti. Después de todos el daño que nos has causado, no mereces morir mientras duermes." + IDS_DIALOGUE_10782 "Espero que tengas algo interesante en mente." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10784 "Debes estar bromeando." + IDS_DIALOGUE_10785 "Creí que eso podría atraer tu atención." + IDS_DIALOGUE_10786 "Has robado esa idea de los Señores del Caos." + IDS_DIALOGUE_10787 "Tonterías." + IDS_DIALOGUE_10788 "Asesinan así a la gente desde el 63." + IDS_DIALOGUE_10789 "Activa el mecanismo." + IDS_DIALOGUE_10792 "Hazlo tú mismo." + IDS_DIALOGUE_10793 "Activa el mecanismo." + IDS_DIALOGUE_10795 "¡Maldita sea!" + IDS_DIALOGUE_10796 "Pensé que podría encontrarme contigo." + IDS_DIALOGUE_10797 "Sabía que te encontraría." + IDS_DIALOGUE_10798 "¿Qué me dices si hacemos como que no nos hemos visto?" + IDS_DIALOGUE_10799 "No puedo hacerlo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10800 "Está bien." + IDS_DIALOGUE_10801 "Me equivoqué perdonándote la vida todos estos años." + IDS_DIALOGUE_10802 "Sólo has sido una decepción. Sayonara." + IDS_DIALOGUE_10803 "¡Maldita sea!" + IDS_DIALOGUE_10804 "¿Estás bien?" + IDS_DIALOGUE_10805 "No puedo decir mucho sobre tu gusto al elegir jefes." + IDS_DIALOGUE_10806 "Era... como un padre." + IDS_DIALOGUE_10807 "Estás mejor huérfana." + IDS_DIALOGUE_10808 "Estoy en deuda contigo." + IDS_DIALOGUE_10809 "¿Entonces podrías dejar de intentar matarme?" + IDS_DIALOGUE_10810 "¿Qué ocurre?" + IDS_DIALOGUE_10811 "No ocurre nada." + IDS_DIALOGUE_10812 "Bueno, llego tarde a una guerra. Sayonara." + IDS_DIALOGUE_10815 "Bien, Perkins, recógenos." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10816 "¡Sí, sí, señor!" + IDS_DIALOGUE_10817 "Todos, preparados para desplegar la fuerza de invasión." + IDS_DIALOGUE_10818 "Hemos detectado un submarino sin identificar cerca de la costa. Han sorteado el bloqueo." + IDS_DIALOGUE_10819 "Atención, todo el personal, estamos en DefCon 2. Repito, estamos en DefCon 2." + IDS_DIALOGUE_10820 "¿Crees que el presidente me dejaría pulsar el botón?" + IDS_DIALOGUE_10821 "Me sorprende que te deje utilizar un teléfono." + IDS_DIALOGUE_10822 "El presidente Johnson está a punto de dirigirse al pueblo norteamericano." + IDS_DIALOGUE_10823 "Ciudadanos norteamericanos, es mi doloroso deber informar del desarrollo de una crisis en una lejana tierra, de la que muchos de nosotros ni siquiera hemos oído hablar. Mientras continuamos intentando conseguir la paz para Vietnam y un acuerdo para la continua crisis de Oriente Medio, una nueva y peligrosa amenaza ha lanzado su sombra sobre la pequeña isla de Khios en el mar de Mármara, en la costa de Turquía. Durante décadas, hemos vivido con un miedo constante a una guerra contra la Unión Soviética. " + IDS_DIALOGUE_10824 "Dios nos salve a todos." + IDS_DIALOGUE_10825 "¡Alto!" + IDS_DIALOGUE_10826 "¡Sí, sí, señor!" + IDS_DIALOGUE_10827 "¡Perfecto! Que comience el despliegue." + IDS_DIALOGUE_10828 "¡Cate!" + IDS_DIALOGUE_10829 "¡Vaya, vaya!" + IDS_DIALOGUE_10830 "¿Qué?" + IDS_DIALOGUE_10831 "Maldita sea esa entrometida." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10832 "No creí que lo conseguirías." + IDS_DIALOGUE_10833 "Yo tampoco. ¿Dónde está la munición?" + IDS_DIALOGUE_10834 "De camino. Bruno dice que han terminado de montar las cápsulas. Nos las lanzarán en paracaídas en cualquier momento." + IDS_DIALOGUE_10835 "Bien. Tenemos que aguantar mientras el tónico para Súper Soldados del doctor Schenker hace lo que se supone que tiene que hacer." + IDS_DIALOGUE_10836 "Tengo una idea. Quédate aquí y asegúrate de que nadie se acerca a esa bandera." + IDS_DIALOGUE_10837 "Es demasiado tarde, Archer." + IDS_DIALOGUE_10838 "Oh, no." + IDS_DIALOGUE_10839 "Dios nos salve a todos." + IDS_DIALOGUE_10840 "¡Yijaa!" + IDS_DIALOGUE_10841 "Un pequeño paso en falso para un hombre, una gran calamidad para la humanidad. Y yo estaré tomando daiquiris en una playa del Pacífico sur hasta que todo salte por los aires. Es una pena que mamá no venga conmigo. " + IDS_DIALOGUE_10842 "Durante la crisis de los misiles cubanos en 1962, estuvimos tan cerca como ninguno de nosotros quiso estar jamás. Por lo tanto, con una profunda tristeza y una gran frustración, debo preparar al pueblo norteamericano para un igualmente peligroso enfrentamiento al otro lado del mundo, para la última y terrible confrontación. Norteamérica ha garantizado la independencia de Khios a cualquier precio. Ahora se nos pide cumplir esa promesa. No podemos echarnos atrás." + IDS_DIALOGUE_10844 "¡Au!." + IDS_DIALOGUE_10845 "¡Estamos ocupados!" + IDS_DIALOGUE_10846 "¡La bandera!" + IDS_DIALOGUE_10847 "Tenemos que detener ese misil." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10848 "Demasiado tarde, chicos. Está fuera de alcance. Maldita sea, me gustaría haber tenido palomitas para ver esto." + IDS_DIALOGUE_10849 "¿Qué intenta hacer esa chica?" + IDS_DIALOGUE_10850 "Los soviéticos han prometido responder contundentemente a menos que ese misil sea destruido." + IDS_DIALOGUE_10851 "Esto se pone cada vez mejor." + IDS_DIALOGUE_10852 "Oh, gracias a Dios." + IDS_DIALOGUE_10853 "¡Espera!" + IDS_DIALOGUE_10854 "¿Qué pasa?" + IDS_DIALOGUE_10855 "Vuelve..." + IDS_DIALOGUE_10858 "Bueno, es suficiente. Hace tiempo que me merezco una cañita o dos." + IDS_DIALOGUE_10859 "Ah, ahí estás. ¿Ha ocurrido algo interesante mientras estaba fuera?" + IDS_DIALOGUE_10860 "No especialmente." + IDS_DIALOGUE_10861 "Bueno, supongo que estás ávido de emociones." + IDS_DIALOGUE_10862 "No especialmente." + IDS_DIALOGUE_10863 "¿Va todo bien?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10864 "No especialmente." + IDS_DIALOGUE_10865 "Eres una vergüenza para la familia." + IDS_DIALOGUE_10866 "Sí, mamá." + IDS_DIALOGUE_10867 "Cuando tu primo Beauregard fue a la cárcel por pirómano, pensé que era lo peor del mundo. Beauregard es un santo comparado contigo." + IDS_DIALOGUE_10868 "Sí, mamá." + IDS_DIALOGUE_10869 "Espero que estés orgulloso." + IDS_DIALOGUE_10870 "Sí, mamá." + IDS_DIALOGUE_10871 "Y otra cosa..." + IDS_DIALOGUE_10872 "Abandono." + IDS_DIALOGUE_10873 "¿Qué quieres decir con que abandonas? No puedes abandonar." + IDS_DIALOGUE_10874 "Mírame." + IDS_DIALOGUE_10875 "¿Dmitrij?" + IDS_DIALOGUE_10876 "¡Dmitrij!" + IDS_DIALOGUE_10877 "¡El mundo volverá a tener noticias de D.A.Ñ.O.! Puedes estar con nosotros o contra nosotros." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10889 "El Dr. Schenker piensa que no debo dejarte ir." + IDS_DIALOGUE_10890 "¡Sígueme!" + IDS_DIALOGUE_10891 "¡Por allí!" + IDS_DIALOGUE_10892 "¿Y qué debo hacer? ¿Esperar en la cama la Tercera Guerra Mundial?" + IDS_DIALOGUE_10893 "¡Aquí!" + IDS_DIALOGUE_10894 "Hay pocas posibilidades." + IDS_DIALOGUE_10895 "¿Qué ha sido eso?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10896 "Olvídate de mí. Intentamos detener una guerra, ¿recuerdas?" + IDS_DIALOGUE_10897 "¡Marchaos! No sé cuánto tiempo podré resistir." + IDS_DIALOGUE_10900 "Detectamos un caza. El piloto emite el código Foxhunt." + IDS_DIALOGUE_10901 "Dalo por hecho." + IDS_DIALOGUE_10902 "Si no he vuelto en una hora, recoge y ponte en contacto con el cuartel general." + IDS_DIALOGUE_10903 "Será una corazonada. Hay algo en esta misión que no huele bien." + IDS_DIALOGUE_10904 "Deséame suerte." + IDS_DIALOGUE_10905 "Y tal vez tú necesitas que te pateen el culo." + IDS_DIALOGUE_10906 "Tenemos que sacarte de aquí." + IDS_DIALOGUE_10907 "Mejor que no lo sepas." + IDS_DIALOGUE_10908 "Deja que se acerquen. No nos iremos sin Armstrong." + IDS_DIALOGUE_10909 "¡Enviaremos ayuda!" + IDS_DIALOGUE_10910 "Magnus." + IDS_DIALOGUE_10911 "Y envía un equipo de interceptación a la instalación de la Antártida. Armstrong aún está allí." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10912 "¡Fantástico!" + IDS_DIALOGUE_10913 "Es una mujer insoportable." + IDS_DIALOGUE_10914 "Lamento no poder quedarme para ver los fuegos artificiales, pero debo irme ya. Adios." + IDS_DIALOGUE_10915 "¡¡¡Abigail!!!" + IDS_DIALOGUE_10916 "¡¡¡AAAAAAAGGGGGG!!! ¡¡¡ABIGAIL!!!" + IDS_DIALOGUE_10917 "¡No, por favor!" + IDS_DIALOGUE_10918 "Te esperaré aquí." + IDS_DIALOGUE_10919 "No es tu estilo ser cínica." + IDS_DIALOGUE_10920 "¡No, por favor!" + IDS_DIALOGUE_10921 "¡Mira!" + IDS_DIALOGUE_10922 "Debemos irnos. Los malos se acercan. Hay muchos helicópteros." + IDS_DIALOGUE_10923 "Debemos darnos prisa." + IDS_DIALOGUE_10924 "¡No, por favor!" + IDS_DIALOGUE_10925 "¡No, por favor!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11001 "Hatori-san te espera en algún lugar del pueblo." + IDS_DIALOGUE_11002 "Busca sus mensajes." + IDS_DIALOGUE_11003 "Encuentra a Hatori-san. Puede ayudarte con la misión." + IDS_DIALOGUE_11004 "¡Buena suerte!" + IDS_DIALOGUE_11005 "Psst." + IDS_DIALOGUE_11006 "¡Pío, pío!" + IDS_DIALOGUE_11007 "¡Por allí!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11008 "¡Soy yo, Santa!" + IDS_DIALOGUE_11009 "Saluda al Pájaro mina mecanizado Mark VII. Es la forma perfecta para comunicarme contigo en el campo." + IDS_DIALOGUE_11010 "Bueno, ¿puedo hacer algo por ti?" + IDS_DIALOGUE_11011 "Si no sabes qué hacer despues, consulta la pantalla Estado de la misión. " + IDS_DIALOGUE_11012 "A menos que un objetivo esté marcado como " + IDS_DIALOGUE_11013 "En determinadas misiones también puedes recibir parámetros, que son directrices u órdenes generales de conducta. Puedes violarlas bajo tu propia responsabilidad." + IDS_DIALOGUE_11014 "Eso es lo más básico." + IDS_DIALOGUE_11015 "¿Algo más?" + IDS_DIALOGUE_11016 "La pantalla Equipo te muestra una lista completa de las armas y artilugios que tienes. Escoge un objeto de esta lista para ver una descripción detallada y un resumen de los tipos de munición disponibles o de las funciones de los artilugios, que también se pueden seleccionar aquí." + IDS_DIALOGUE_11017 "Estupendo. Estaremos en contacto." + IDS_DIALOGUE_11018 "¡Cuidado!" + IDS_DIALOGUE_11019 "Puedes asomarte por las esquinas para ver qué pasa delante." + IDS_DIALOGUE_11020 "Si pasa mucho tiempo los enemigos notarán tu presencia, así que no mires demasiado rato." + IDS_DIALOGUE_11021 "Los enemigos pueden oír cualquier sonido que hagas, así que aprende a moverte en silencio." + IDS_DIALOGUE_11022 "Tus pisadas pueden delatarte, así que puedes Pasar sigilosamente para pisar suavemente." + IDS_DIALOGUE_11023 "Recuerda que algunos materiales, como las losas de cerámica, amplifican el sonido, mientras que en superficies como la hierba o la nieve las pisadas se oyen menos." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11024 "Procura no tirar botellas ni chocar con campanillas o provocarás un alboroto." + IDS_DIALOGUE_11025 "Intenta eliminar a los enemigos cuando estén desprevenidos. Si te ven, gritarán para atraer la atención." + IDS_DIALOGUE_11026 "Tampoco dejes cuerpos tirados por ahí. Quítalos del medio." + IDS_DIALOGUE_11027 "Cuando superes determinados obstáculos o cumplas objetivos concretos, recibirás recompensas de puntos de habilidad." + IDS_DIALOGUE_11028 "Abre la pantalla Jugador para gastar estos puntos para mejorar tus habilidades." + IDS_DIALOGUE_11029 "Tengo hambre." + IDS_DIALOGUE_11030 "Acabas de comer." + IDS_DIALOGUE_11031 "No lo puedo evitar. Cuando estoy en tensión tengo que comer." + IDS_DIALOGUE_11032 "¿Y por qué estás en tensión?" + IDS_DIALOGUE_11033 "Tengo un mal presentimiento sobre esta noche." + IDS_DIALOGUE_11034 "¿Te preocupa una simple espía?" + IDS_DIALOGUE_11035 "¿Qué? No, Kenji-san me pidió que me reuniera con él después. Creo que quiere romper." + IDS_DIALOGUE_11036 "Mi abuela dijo que deberías envenenar a tu hombre todas las mañanas antes de que se fuera y decirle que le darías el antídoto cuando regresara a casa." + IDS_DIALOGUE_11037 "¿Qué veneno tengo que utilizar?" + IDS_DIALOGUE_11038 "Seguro que mi abuela puede darte algo. Ella ya no lo necesita." + IDS_DIALOGUE_11039 "¿No le preocupa que tu abuelo se vaya?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11040 "No. Está paralizado. Tienes que tener cuidado con la dosis." + IDS_DIALOGUE_11041 "¿Quieres ir de compras a Nagoya este fin de semana?" + IDS_DIALOGUE_11042 "No puedo. Tengo un asesinato." + IDS_DIALOGUE_11043 "Que lo haga Haruko." + IDS_DIALOGUE_11044 "Aún está furiosa conmigo por lo de su gato." + IDS_DIALOGUE_11045 "¿Y Yuki?" + IDS_DIALOGUE_11046 "Le preguntaré." + IDS_DIALOGUE_11047 "Pues avísame." + IDS_DIALOGUE_11049 "¿Ves el icono Escondite situado en la esquina inferior de tu pantalla? Indica que has entrado en un escondite en potencia. Para esconderte de verdad, debes permanecer quieto hasta que el icono Escondite aparezca. Una vez escondido, los enemigos no podrán verte a menos que investiguen un alboroto o estén revisando la zona activamente." + IDS_DIALOGUE_11050 "Sólo estás escondido cuando estás quieto. Si te mueves, atacas o recargas un arma, dejarás de estar escondido." + IDS_DIALOGUE_11053 "¿Qué te pasa en el brazo?" + IDS_DIALOGUE_11054 "Tuve una pelea con mi madre." + IDS_DIALOGUE_11055 "El corte parece bastante malo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11056 "Me cogió por sorpresa. Es rápida para su edad." + IDS_DIALOGUE_11057 "Debía estar muy furiosa." + IDS_DIALOGUE_11058 "Piensa que no nos vestimos adecuadamente para ser ninjas. Yo le dije, " + IDS_DIALOGUE_11059 "Oh, oh." + IDS_DIALOGUE_11060 "Sí, se volvió loca. Atravesó volando la habitación y comenzó a golpearme. Al final pude rechazarla, pero me preocupada apuñalarla sin querer. Eso sí que la hubiera puesto furiosa." + IDS_DIALOGUE_11061 "Será mejor que compres bombones o algo parecido." + IDS_DIALOGUE_11062 "Buena idea." + IDS_DIALOGUE_11063 "¡Agente Archer, aquí!" + IDS_DIALOGUE_11064 "Tengo malas noticias. Han cambiado el lugar de la reunión. Tienes que descubrir dónde es." + IDS_DIALOGUE_11065 "Busca lugares en los que haya ninjas reunidos." + IDS_DIALOGUE_11066 "Quizás puedas escucharlos hablar del nuevo lugar de reunión." + IDS_DIALOGUE_11067 "Podrías buscar una nota, pero es arriesgado." + IDS_DIALOGUE_11068 "¡Ten cuidado!" + IDS_DIALOGUE_11069 "¿Por qué han cambiado la reunión a la casa principal?" + IDS_DIALOGUE_11070 "Isako dice que el Director la quiere hacer allí." + IDS_DIALOGUE_11071 "Probablemente está demasiado borracho para ir andando a la casa de invitados." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11072 "No, simplemente pediría su palanquín." + IDS_DIALOGUE_11073 "Odio trabajar para él." + IDS_DIALOGUE_11074 "Todos lo odiamos, pero Isako-san tiene con él una deuda de honor." + IDS_DIALOGUE_11075 "¡Buen trabajo! Señalaré el lugar de la reunión en este mapa." + IDS_DIALOGUE_11076 "¡Bien, sígueme!" + IDS_DIALOGUE_11077 "Las patrullas son más intensas en esta parte de la ciudad." + IDS_DIALOGUE_11078 "Es más seguro evitarlas." + IDS_DIALOGUE_11079 "Evita la puerta principal. Hay demasiados guardias." + IDS_DIALOGUE_11080 "Buena suerte." + IDS_DIALOGUE_11081 "¿Algún problema?" + IDS_DIALOGUE_11082 "Todo está tranquilo." + IDS_DIALOGUE_11083 "Bien." + IDS_DIALOGUE_11084 "La espía ha sido localizada." + IDS_DIALOGUE_11085 "Permanece alerta." + IDS_DIALOGUE_11086 "He notado que ha ganado mucho peso recientemente." + IDS_DIALOGUE_11087 "Lo único que hace es comer mochi y ver series de detectives." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11088 "Necesita un hombre del que ocuparse." + IDS_DIALOGUE_11089 "Nadie la quiere. Es demasiado tímida. Quizás si fuera más bonita... pero ni siquiera puede hablar con los hombres." + IDS_DIALOGUE_11090 "¿Y el hijo de Kenichi? Es un poco lento, pero no está mal." + IDS_DIALOGUE_11091 "No estaría de acuerdo, es demasiado quisquillosa." + IDS_DIALOGUE_11092 "¿Pero qué le pasa?" + IDS_DIALOGUE_11093 "¿Qué hora es?" + IDS_DIALOGUE_11094 "No lo sé. ¿Por qué?" + IDS_DIALOGUE_11095 "Se supone que tengo que relevar a Masayo-san a las 8 de la mañana. ¿No tienes reloj?" + IDS_DIALOGUE_11096 "No lo necesito. Los ninjas pueden saber la hora por el corte de un ojo de gato." + IDS_DIALOGUE_11097 "Eso sólo funciona durante el día. Además, ¿qué pasa si no tienes un gato a mano?" + IDS_DIALOGUE_11098 "Por eso siempre llevo a neko-manma." + IDS_DIALOGUE_11099 "¿Y no es más fácil llevar un reloj? No importa. Le preguntaré a otra persona." + IDS_DIALOGUE_11100 "Hace una noche estupenda. Es una pena que tengamos que trabajar." + IDS_DIALOGUE_11101 "Probablemente llueva este fin de semana." + IDS_DIALOGUE_11102 "¿Quieres té?" + IDS_DIALOGUE_11103 "Se supone que salgo de patrulla pronto y si tomo té, tendré que hacer pis quince minutos después." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11104 "¿Y?" + IDS_DIALOGUE_11105 "Tuve problemas la semana pasada. No merece la pena." + IDS_DIALOGUE_11106 "¡Encuéntrala!" + IDS_DIALOGUE_11107 "¡Rápido!" + IDS_DIALOGUE_11108 "¡No la dejes escapar!" + IDS_DIALOGUE_11109 "¡Busca por todos lados!" + IDS_DIALOGUE_11110 "¡Si escapa, tendremos problemas!" + IDS_DIALOGUE_11111 "Es posible que venga por aquí. ¡Asegúrate de que no se te escapa!" + IDS_DIALOGUE_11112 "¡Jai!" + IDS_DIALOGUE_11113 "Cate, he enviado un equipo de interceptación para ayudarte, pero puede que tarden algo en llegar al punto de encuentro. Vuelve al puente y procura que no te vean." + IDS_DIALOGUE_11114 "¿La han encontrado?" + IDS_DIALOGUE_11115 "Aún no. ¡Ten cuidado!" + IDS_DIALOGUE_11116 "¿Tienes un clip?" + IDS_DIALOGUE_11117 "Se han acabado." + IDS_DIALOGUE_11118 "¿Has solicitado más?" + IDS_DIALOGUE_11119 "Por supuesto que no." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11120 "¿Qué quieres decir? ¿Por qué no?" + IDS_DIALOGUE_11121 "¿Tienes idea de cuántos formularios hay que rellenar para solicitar material de oficina? Es peor que pedir suministros para los servicios. No necesitamos clips." + IDS_DIALOGUE_11122 "¿Y cuando te quedes sin grapas?" + IDS_DIALOGUE_11123 "Puedo vivir sin grapas." + IDS_DIALOGUE_11124 "Me das asco." + IDS_DIALOGUE_11125 "Hace más frío que ayer." + IDS_DIALOGUE_11126 "Piensa que si conquistamos Norteamérica, Florida formará parte de la Unión Soviética." + IDS_DIALOGUE_11127 "El año pasado me enviaron a Murmansk de vacaciones." + IDS_DIALOGUE_11128 "Por lo menos a mí me tocó Minsk." + IDS_DIALOGUE_11129 "Sueño con que me envíen a Minsk. No recuerdo qué es dormir sin chaqueta." + IDS_DIALOGUE_11130 "¿Enviaste ya el informe de seguridad?" + IDS_DIALOGUE_11131 "Ayer, ¿por qué?" + IDS_DIALOGUE_11132 "Olvidé rellenarlo." + IDS_DIALOGUE_11133 "¿Qué quieres decir? " + IDS_DIALOGUE_11134 "Que no lo rellené." + IDS_DIALOGUE_11135 "¿Entonces por qué me pediste que lo enviara?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11136 "No estoy seguro. Ni siquiera lo pensé." + IDS_DIALOGUE_11137 "Bueno, dudo que alguien se dé cuenta. De todas maneras, no leen esas cosas. Si se quejan, pues volvemos a enviarlo." + IDS_DIALOGUE_11138 "Me has malinterpretado, camarada. Mi argumento es que el Estado es el Pueblo. Si abusas del Pueblo, abusas del Estado." + IDS_DIALOGUE_11139 "Pero el Estado abusa del Pueblo todo el tiempo. ¿Cómo llamas eso, masoquismo?" + IDS_DIALOGUE_11140 "El Estado no ABUSA del Pueblo, lo ORIENTA." + IDS_DIALOGUE_11141 "Mi abuelo murió a manos de los checos. Lo metieron en un barril con ratas. El torturador de 18 años que tuvo la idea, quemó el barril y las ratas se abrieron paso a través del cuerpo de mi abuelo para escapar del calor. ¿A eso lo llamas orientación?" + IDS_DIALOGUE_11142 "Algunas veces, las medidas disciplinarias son necesarias para preservar la inviolabilidad del Estado. Si un tumor maligno te crece en la nariz, la amputas para proteger el resto de tu cuerpo." + IDS_DIALOGUE_11143 "Mi abuelo era campesino. Murió porque le preocupaba el colectivismo." + IDS_DIALOGUE_11144 "El Pueblo debe aprender a confiar en el Estado." + IDS_DIALOGUE_11145 "Creía que decías que el Pueblo ES el Estado." + IDS_DIALOGUE_11146 "Sí, lo que significa que debe aprender a confiar en sí mismo." + IDS_DIALOGUE_11147 "Mi abuelo CONFIABA en sí mismo. Por eso el Estado lo torturó y lo mató." + IDS_DIALOGUE_11148 "Veo que tu patriotismo es cuestionable, camarada. Quizás debas considerar hacer una visita al centro de modificación de actitud de Praga." + IDS_DIALOGUE_11149 "Ya están esos dos de nuevo." + IDS_DIALOGUE_11150 "Sergei nunca se rinde, ¿verdad?" + IDS_DIALOGUE_11151 "Es joven e idealista. Dale tiempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11152 "Kominsky al habla. Hemos encontrado a una persona sospechosa en la vieja dacha, junto al lago. Lo trasladamos para interrogarlo." + IDS_DIALOGUE_11153 "¿Qué hacías allí?" + IDS_DIALOGUE_11154 "De vacaciones." + IDS_DIALOGUE_11155 "Me debes tomar por tonto. Nadie vendría a este lugar de vacaciones." + IDS_DIALOGUE_11156 "He venido a cazar." + IDS_DIALOGUE_11157 "Admítelo, eres un espía." + IDS_DIALOGUE_11158 "¿Y por qué iba a venir aquí a espiar?" + IDS_DIALOGUE_11159 "Porque sabes que en esta base se lleva a cabo un proyecto de alto secreto." + IDS_DIALOGUE_11160 "¿De verdad?" + IDS_DIALOGUE_11161 "Igor." + IDS_DIALOGUE_11162 "¿Qué?" + IDS_DIALOGUE_11163 "Acabas de hablarle del proyecto." + IDS_DIALOGUE_11164 "¡Me ha engañado!" + IDS_DIALOGUE_11165 "¿Cómo te he engañado?" + IDS_DIALOGUE_11166 "Me has hecho hablar del proyecto: Omega." + IDS_DIALOGUE_11167 "¿Proyecto: Omega?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11168 "¡Igor, idiota!" + IDS_DIALOGUE_11169 "Maldita sea. El prisionero es demasiado astuto. Será mejor que lo torturemos." + IDS_DIALOGUE_11170 "Gracias por ayudarme." + IDS_DIALOGUE_11171 "Voy a probar su vodka antes de regresar." + IDS_DIALOGUE_11172 "Te veré más tarde." + IDS_DIALOGUE_11173 "¿No tienes trabajo?" + IDS_DIALOGUE_11174 "Completa la misión para que podamos salir de aquí." + IDS_DIALOGUE_11175 "Odio Siberia." + IDS_DIALOGUE_11176 "Se ha exiliado a gente a Siberia desde tiempos de Genghis Khan." + IDS_DIALOGUE_11177 "Los siberianos hacen una mantequilla muy buena, eso sí." + IDS_DIALOGUE_11178 "Además, el lago Baikal está muy bonito en verano." + IDS_DIALOGUE_11179 "¿Sabías que es la masa de agua dulce más grande del mundo?" + IDS_DIALOGUE_11180 "Eh, no es un mal lugar para vivir." + IDS_DIALOGUE_11181 "Tu piloto ha sido capturado." + IDS_DIALOGUE_11182 "Lo están interrogando en el edificio de suministros." + IDS_DIALOGUE_11183 "Será mejor que lo rescates si quieres volver a casa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11184 "¿Has tenido noticias de Tania?" + IDS_DIALOGUE_11185 "Me envió una carta la semana pasada. Está con su madre en Omsk." + IDS_DIALOGUE_11186 "¿Se ha decidido?" + IDS_DIALOGUE_11187 "Aún no." + IDS_DIALOGUE_11188 "¿Y por qué tarda tanto?" + IDS_DIALOGUE_11189 "No le gusto a sus amigos. Quieren que vuelva con su ex-novio." + IDS_DIALOGUE_11190 "Creía que le pegaba." + IDS_DIALOGUE_11191 "Y lo hacía. Pero es un dirigente político y yo soy un soldado de rango inferior de Siberia." + IDS_DIALOGUE_11192 "Mujeres." + IDS_DIALOGUE_11193 "He oído que antes estabas destinado en Moscú." + IDS_DIALOGUE_11194 "Da." + IDS_DIALOGUE_11195 "¿Y cómo has terminado en este lugar?" + IDS_DIALOGUE_11196 "Le pedí a mi oficial al mando unos calcetines nuevos porque se me congelaron los pies y me dijo, " + IDS_DIALOGUE_11197 "Yo acabé aquí por accidente. Iba en un tren a Petrogrado y me bajé en Minsk. Intenté explicar que no estaba destinado aquí, pero nadie me creyó." + IDS_DIALOGUE_11198 "¿Y no podían comprobarlo?" + IDS_DIALOGUE_11199 "Sólo porque tengan todos esos informes, no quiere decir que sepan qué dice en ellos. He descubierto que no me han dado por desaparecido en mi puesto de Petrogrado." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11200 "¿Dónde está Mikhail?" + IDS_DIALOGUE_11201 "Cumpliendo servicio en el edificio principal de registros." + IDS_DIALOGUE_11202 "¿Por qué? ¿Qué ha hecho?" + IDS_DIALOGUE_11203 "Zhukov lo pilló con una revista norteamericana." + IDS_DIALOGUE_11204 "¿Pornográfica?" + IDS_DIALOGUE_11205 "Peor. Inversiones." + IDS_DIALOGUE_11206 "Nunca habría pensado en Mikhail como un cerdo capitalista." + IDS_DIALOGUE_11207 "Dijo que lo estaba utilizando como papel higiénico, porque se había acabado hacía tres semanas y no quería manchar la literatura patriótica." + IDS_DIALOGUE_11208 "¿Y aún así Zhukov lo castigó?" + IDS_DIALOGUE_11209 "Si quieres que te diga la verdad, él quería la revista y no podía confiscarla si no castigaba a Mikhail." + IDS_DIALOGUE_11210 "Ahora que lo dices, Zhukov ESTÁ a punto de jubilarse." + IDS_DIALOGUE_11211 "¿Cómo quieres que estemos en forma comiendo estas gachas?" + IDS_DIALOGUE_11212 "Echo de menos el borscht." + IDS_DIALOGUE_11213 "Echo de menos el pirogi." + IDS_DIALOGUE_11214 "Echo de menos el pan." + IDS_DIALOGUE_11215 "Pero si TENEMOS pan." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11216 "Preferiría comer piedras. Puedes matar a un conejo con este pan." + IDS_DIALOGUE_11217 "En realidad, no es mala idea." + IDS_DIALOGUE_11218 "¿Estofado de conejo?" + IDS_DIALOGUE_11219 "Mañana patrullo el perímetro oeste. Yo cazo y tú cocinas." + IDS_DIALOGUE_11220 "Trato hecho." + IDS_DIALOGUE_11221 "¿Han descubierto ya qué le pasa a las transmisiones?" + IDS_DIALOGUE_11222 "No lo sé." + IDS_DIALOGUE_11223 "Bien, permanece alerta. Podría ser un sabotaje." + IDS_DIALOGUE_11224 "¿Has visto a Mikhail?" + IDS_DIALOGUE_11225 "Está en el vestíbulo rellenando documentos." + IDS_DIALOGUE_11226 "Ahora no está allí." + IDS_DIALOGUE_11227 "Quizás esté en el servicio." + IDS_DIALOGUE_11228 "Ya he mirado." + IDS_DIALOGUE_11229 "¿Fumando un cigarrillo?" + IDS_DIALOGUE_11230 "He buscado por todas partes. Se ha ido." + IDS_DIALOGUE_11231 "Puede haber vuelto al barracón." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11232 "¿En medio de un turno? Le quedan 11 horas de servicio." + IDS_DIALOGUE_11233 "¿Y cómo va a desaparecer así como así?" + IDS_DIALOGUE_11234 "Boris desapareció el mes pasado." + IDS_DIALOGUE_11235 "Boris se ausentó sin permiso. Debe haber..." + IDS_DIALOGUE_11236 "¿Sin coger su abrigo? ¿O su gorra?" + IDS_DIALOGUE_11237 "Ésta es la Unión de Repúblicas Socialistas Soviéticas. La gente no desaparece sin dejar rastro." + IDS_DIALOGUE_11238 "Díselo a Mikhail." + IDS_DIALOGUE_11239 "Eres nuevo aquí, ¿verdad?" + IDS_DIALOGUE_11240 "Me han trasladado de Novgorod para trabajar en el proyecto: Omega." + IDS_DIALOGUE_11241 "He oído hablar de él. Por cierto, ¿de qué se trata?" + IDS_DIALOGUE_11242 "No estoy seguro. Nadie dice nada sobre él. Llevo tres días intentando conseguir información." + IDS_DIALOGUE_11243 "¿Has comprobado el ordenador central M-9?" + IDS_DIALOGUE_11244 "Está fuera de servicio. Uno de los tubos de vacío reventó y nadie encuentra un repuesto." + IDS_DIALOGUE_11245 "El otro día vi uno en el sótano." + IDS_DIALOGUE_11246 "¿Dónde?" + IDS_DIALOGUE_11247 "No lo recuerdo exactamente. En un estante o en un armario." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11248 "¿Cuánto tiempo tendremos que soportarlos?" + IDS_DIALOGUE_11249 "Hasta que termine el proyecto." + IDS_DIALOGUE_11250 "¿Y cuánto falta?" + IDS_DIALOGUE_11251 "Nadie lo sabe. Ni siquiera creo que alguien sepa de qué se trata." + IDS_DIALOGUE_11252 "Espero que sea poco. Se me está agotando la paciencia." + IDS_DIALOGUE_11253 "Seguro que están aterrorizados." + IDS_DIALOGUE_11254 "Seguro." + IDS_DIALOGUE_11255 "Es posible que intente venir por aquí. ¡Permanece alerta!" + IDS_DIALOGUE_11256 "¿Cuál es la situación?" + IDS_DIALOGUE_11257 "Hay un espía suelto." + IDS_DIALOGUE_11258 "¿La CIA?" + IDS_DIALOGUE_11259 "Ni idea. Aquí nadie te da respuestas." + IDS_DIALOGUE_11260 "¡Bien! ¡Acércate!" + IDS_DIALOGUE_11261 "¡Dispara a matar!" + IDS_DIALOGUE_11262 "Hola... Hola, me llamo... Hola, me llamo Tom Goodman... Sí, soy Tom Goodman, espía maestro... Eh, cielo, ¿alguna vez lo has hecho con un espía? Mi nombre es Goodman. Me llaman Tom... Bien, hola, hola... ¡mierda!" + IDS_DIALOGUE_11263 "Éste es el audiodiario de Tom Goodman, volumen 1, 7 de agosto de 1965. Hoy me ha llegado por correo el equipo de entrenamiento del espía que envía el Sr. X. Éste incluye un manual de campo de UNITY, un dispositivo de control telefónico y esta grabadora. He decidido llevar un registro de mis experiencias para utilizarlo en mis memorias. Así que.... ¡Maldita sea!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11264 "Éste es el diario de Tom Goodman, volumen 2, 14 de agosto de 1965. La operación Imitación se ha adelantado. Sólo han pasado unas pocas semanas desde que me reuní con el Sr. X en ese antro del fuerte Lauderdale y ya soy Tom Goodman, un extraordinario agente secreto. Mañana, comienzo la segunda fase." + IDS_DIALOGUE_11265 "Éste es el diario de Tom Goodman, volumen 3, 27 de agosto de 1965. He instalado mi sede de espía secreto en el sótano. Lo llamo mi santuario interior. Es lo que me diferencia de los hombres normales. La entrada está muy bien escondida, así que los agentes enemigos no la encontrarán. Tendrán que torturarme si quieren entrar." + IDS_DIALOGUE_11266 "Éste es el diario de Tom Goodman, volumen 4, 17 de septiembre de 1965. Ha habido un desafortunado revés. Tengo el aspecto, tengo la manera de andar, tengo los movimientos, pero aún no consigo las chicas. El Sr. X no ha sido de ayuda. Empiezo a pensar que no me toma en serio. ¿Qué cree que soy, una marioneta? ¿Eh? ¿Es eso, Sr. X? ¿Cree que puede meterme la mano por el culo y hacerme bailar? Tom Goodman no baila para nadie." + IDS_DIALOGUE_11267 "Diario de Tom Goodman, volumen 5, 9 de diciembre de 1965. Por fin un gran avance. No era guapa y olía como un caballo, pero era suficiente mujer para mí. El último obstáculo que me quedaba para ser un Súper Espía ha sido superado. A partir de hoy, ya no soy virgen. ¡Yijaaaaaaaaaaaa!" + IDS_DIALOGUE_11268 "¡Encuéntrala! ¡Rápido!" + IDS_DIALOGUE_11269 "Espera aquí." + IDS_DIALOGUE_11270 "Shhh. ¡Escucha!" + IDS_DIALOGUE_11271 "Espera aquí. Volveré enseguida." + IDS_DIALOGUE_11272 "No puedes entrar." + IDS_DIALOGUE_11273 "Este lugar no es para ti." + IDS_DIALOGUE_11274 "Lo siento, pero esta zona está fuera de tus límites." + IDS_DIALOGUE_11275 "Sólo empleados." + IDS_DIALOGUE_11276 "Largo." + IDS_DIALOGUE_11277 "He dicho que largo." + IDS_DIALOGUE_11278 "Psst." + IDS_DIALOGUE_11279 "Cate." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11280 "Yuju." + IDS_DIALOGUE_11281 "Coge esos carteles de Se busca antes de que alguien nos reconozca." + IDS_DIALOGUE_11282 "Tengo noticias de Kamal. Quiere reunirse contigo lo antes posible." + IDS_DIALOGUE_11283 "Hay una cabina de teléfono fuera de servicio cerca del cine. Allí he dejado un paquete para ti. La combinación es 32-46-27. ¡Buena suerte!" + IDS_DIALOGUE_11284 "¿Has visto un sobre azul?" + IDS_DIALOGUE_11285 "No, ¿por qué?" + IDS_DIALOGUE_11286 "Por nada, pero si lo encuentras, dímelo." + IDS_DIALOGUE_11287 "¿Has visto un sobre azul por algún lado?" + IDS_DIALOGUE_11288 "¿Un sobre azul? ¿Qué hay en él?" + IDS_DIALOGUE_11289 "Ah, nada importante. Pero si lo encuentras, tráemelo enseguida." + IDS_DIALOGUE_11290 "¿Has visto algún sobre azul por ahí?" + IDS_DIALOGUE_11291 "¿El que te dio el jefe?" + IDS_DIALOGUE_11292 "¿Qué? Oh, sí, supongo que es ése." + IDS_DIALOGUE_11293 "No lo he visto. Debe ser muy importante, ¿verdad?" + IDS_DIALOGUE_11294 "Bueno, no mucho. Pero debo encontrarlo." + IDS_DIALOGUE_11295 "Busco un sobre azul. ¿Lo has visto?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11296 "No." + IDS_DIALOGUE_11297 "¿Estás seguro?" + IDS_DIALOGUE_11298 "Sí." + IDS_DIALOGUE_11299 "Dios Shiva, protégeme de mi propia estupidez." + IDS_DIALOGUE_11300 "¡¡¡Aaaaaaaarrrrrgggggghhhhh!!!" + IDS_DIALOGUE_11301 "¿Qué... soy?" + IDS_DIALOGUE_11302 "Ayúdame..." + IDS_DIALOGUE_11303 "¡¡¡Aaaahhhh!!!" + IDS_DIALOGUE_11304 "¿Quién eres?" + IDS_DIALOGUE_11305 "¿Quién me ha hecho esto?" + IDS_DIALOGUE_11306 "Abigail, ¿eres tú?" + IDS_DIALOGUE_11307 "¿Abigail?" + IDS_DIALOGUE_11308 "¡¡¡Abigail!!!" + IDS_DIALOGUE_11309 "¡¡¡Ayúdame!!!" + IDS_DIALOGUE_11310 "¡¡¡Mira qué han hecho!!!" + IDS_DIALOGUE_11311 "¿Abby?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11312 "¡¡¡Por favor!!!" + IDS_DIALOGUE_11313 "Deberían estar colocados en una mesa que se viese bien." + IDS_DIALOGUE_11314 "Lamento molestarte." + IDS_DIALOGUE_11315 "Seguro que puedo encontrar alguna forma para acabar con esos repugnantes Súper Soldados cuando lea estos documentos." + IDS_DIALOGUE_11316 "Eso espero." + IDS_DIALOGUE_11319 "Di lo que quieras, pero este lugar es más recomendable desde una perspectiva económica." + IDS_DIALOGUE_11320 "No eres objetivo. Cualquiera puede construir una base subacuática. Sólo una o dos organizaciones mundiales pueden permitirse una estación espacial." + IDS_DIALOGUE_11321 "Hay que pagar mucho para conseguir un poco de prestigio. Ese montón de trastos nos hizo cerrar. Quien lo voló nos hizo un favor." + IDS_DIALOGUE_11322 "Sí, vaya favor." + IDS_DIALOGUE_11323 "Lo digo en serio. El seguro pagó esta base, el Súper Submarino secreto y las nuevas oficinas en Lisboa, Yakarta y Orlando. Además, por primera vez, todos conseguimos bonificaciones." + IDS_DIALOGUE_11324 "Eso es estupendo, pero sigo diciendo que la estación espacial aumentó el valor. Es por la imagen. La gente quiere trabajar para organizaciones con éxito. Tener una estación espacial hace parecer que tienes éxito." + IDS_DIALOGUE_11325 "Hasta que te hace cerrar." + IDS_DIALOGUE_11326 "Me rindo. Vamos a dejarlo." + IDS_DIALOGUE_11327 "Es la quinta vez que tengo que cambiarme de oficina desde que empecé aquí." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11328 "La administración quiere mantener juntos a los equipos. Cuestión de eficacia." + IDS_DIALOGUE_11329 "No son ellos los que tienen que recoger todos sus trastos y trasladarlos cada tres meses." + IDS_DIALOGUE_11330 "Rellena un formulario de queja." + IDS_DIALOGUE_11331 "¿Y terminar como Pekoe? No, gracias. Aún puedes verlo caer por la ventanilla del nivel 2. ¿Y qué queda de él? Los pedazos que no se comieron los peces." + IDS_DIALOGUE_11332 "Bueno, ya está bien. Acabo de comer." + IDS_DIALOGUE_11333 "Eh, Barbagallo, ¿te gusta D.A.Ñ.O?" + IDS_DIALOGUE_11334 "Es un equipo con bastante clase comparado con algunos de los sitios en los que he trabajado." + IDS_DIALOGUE_11335 "Estabas en el CCI, ¿verdad?" + IDS_DIALOGUE_11336 "Sí y en Creación de farsas. Un puñado de matones de dudosa reputación. Está bien trabajar con profesionales." + IDS_DIALOGUE_11337 "Ya llevamos tiempo. En este negocio, te adaptas o mueres." + IDS_DIALOGUE_11338 "Te entiendo. La única queja que tengo es el saludo. Es bastante complicado. Siempre me preocupa que se me olvide una parte." + IDS_DIALOGUE_11339 "¿Alguien ha explicado el simbolismo?" + IDS_DIALOGUE_11340 "¿Qué simbolismo?" + IDS_DIALOGUE_11341 "Mira." + IDS_DIALOGUE_11342 "La primera parte del saludo es Corazón. Que significa deseo. La segunda parte es Mundo. Y la última parte es Coger o Tomar." + IDS_DIALOGUE_11343 "Bueno, diablos, así tiene más sentido. ¡Gracias!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11344 "De nada." + IDS_DIALOGUE_11345 "Eh, felicidades por el ascenso." + IDS_DIALOGUE_11346 "Sí, gracias." + IDS_DIALOGUE_11347 "¿Qué te pasa?" + IDS_DIALOGUE_11348 "No lo sé. Es demasiada responsabilidad." + IDS_DIALOGUE_11349 "Vamos. Lo harás bien." + IDS_DIALOGUE_11350 "Si tú lo dices." + IDS_DIALOGUE_11351 "¿Qué te preocupa? Te llevas bien con todo el mundo." + IDS_DIALOGUE_11352 "Lo sé." + IDS_DIALOGUE_11353 "¿Y cuál es el problema?" + IDS_DIALOGUE_11354 "¿Puedo ser completamente sincero?" + IDS_DIALOGUE_11355 "¡Por supuesto!" + IDS_DIALOGUE_11356 "Es mi risa. No creo que sea suficientemente malvada." + IDS_DIALOGUE_11357 "Vamos a escucharla." + IDS_DIALOGUE_11358 "¿Y bien?" + IDS_DIALOGUE_11359 "Se puede mejorar. Intenta que sea un poco más profunda." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11360 "(risa malvada poco entusiasta, un poco más profunda)" + IDS_DIALOGUE_11361 "Quizás necesites una motivación. Como un actor. Imagina que llega un espía bonachón y te dice que va a arrestarte. Y en lugar de una pistola, lleva un plátano." + IDS_DIALOGUE_11362 "Bien, lo intentaré." + IDS_DIALOGUE_11363 "¿Ves? Es perfecta." + IDS_DIALOGUE_11364 "¡Uf, gracias! Te debo una." + IDS_DIALOGUE_11365 "Eh, no me sorprendería cobrar. Ahora que eres el jefe y todo eso." + IDS_DIALOGUE_11366 "Rick dice que volviste a dormir en la sala ayer por la noche." + IDS_DIALOGUE_11367 "No pude abrir mi puerta. La culpa es de esos estúpidos cierres que se activan con la voz." + IDS_DIALOGUE_11368 "Sí, el sistema no puede reconocer las fluctuaciones de tono o ritmo, así que tienes que decir las cosas de la misma forma todas las veces." + IDS_DIALOGUE_11369 "¿Y cómo se supone que voy a hacer eso?" + IDS_DIALOGUE_11370 "Es fácil. Consigue una grabadora. Funciona a las mil maravillas." + IDS_DIALOGUE_11371 "Eso va contra las reglas." + IDS_DIALOGUE_11372 "Puede que sí, pero dormir en la sala va contra mis principios." + IDS_DIALOGUE_11373 "Estos uniformes parecen mejores que los antiguos, pero la tela es muy incómoda." + IDS_DIALOGUE_11374 "Sí, bueno, se gastaron la mayor parte del presupuesto la primera vez, así que no pudieron comprar la misma tela." + IDS_DIALOGUE_11375 "Espero que no me salga sarpullido." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11376 "¿Te has enterado de que prácticamente arrasamos en los Premios del Mal?" + IDS_DIALOGUE_11377 "Sí, pero no lo entiendo, el proyecto: Lambda fue un desastre." + IDS_DIALOGUE_11378 "Está claro, pero nombra una organización que llevara a cabo una misión con éxito el pasado año." + IDS_DIALOGUE_11379 "Tienes razón." + IDS_DIALOGUE_11380 "Hemos perdido frente a Alianza Maligna por el logotipo y el diseño y frente a Miseria, S.A. en las categorías de moda, pero tienes que admitir que con Lambda se mostró mucha ambición y salero." + IDS_DIALOGUE_11381 "Estoy impaciente por saber qué ocurre el año que viene. Creo que Omega va a llamar mucho la atención." + IDS_DIALOGUE_11382 "¡Tiene que haber otra forma de salir de aquí!" + IDS_DIALOGUE_11383 "Mi madre se va a quedar desconsolada. Mi hermano mayor estaba a bordo de la estación espacial cuando se desintegró." + IDS_DIALOGUE_11384 "Deja de hablar así. Vamos a salir de aquí. Sólo tenemos que utilizar la cabeza." + IDS_DIALOGUE_11385 "Necesito que desactives el sistema de seguridad." + IDS_DIALOGUE_11387 "¡Hay que apagar el fuego!" + IDS_DIALOGUE_11388 "¡Estamos en ello!" + IDS_DIALOGUE_11389 "¡Hay que trabajar más duro! Esas llamas consumen el oxígeno." + IDS_DIALOGUE_11390 "¿Dónde demonios está esa estúpida puerta secreta? ¿Eh?" + IDS_DIALOGUE_11391 "Contrólate." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11392 "¡Vamos a morir a menos que salgamos de esta trampa mortal y ¿tú me dices que me controle?" + IDS_DIALOGUE_11393 "El pánico no ayuda." + IDS_DIALOGUE_11394 "¡Vaya, qué perspicaz! ¡Qué el pánico no ayuda! Oh, entonces quizás debería parar. Pero estoy sufriendo un ataque de pánico, lo que significa que no tengo control sobre mí mismo, ¡pedazo de idiota!" + IDS_DIALOGUE_11395 "Sella la salida principal." + IDS_DIALOGUE_11396 "Está bien, desplegaos y buscad." + IDS_DIALOGUE_11397 "Richards, coge a Mulroy y ayúdale a proteger la central eléctrica. No podemos permitir que entre." + IDS_DIALOGUE_11398 "A todos los equipos de seguridad, informen enseguida." + IDS_DIALOGUE_11399 "Quiero que encuentren a la chica inmediatamente." + IDS_DIALOGUE_11400 "Srta. Archer, parece que la he subestimado. No volveré a cometer ese error." + IDS_DIALOGUE_11401 "¿Por qué no está bajo custodia todavía?" + IDS_DIALOGUE_11402 "Srta. Archer, soy yo, Dmtrij Volkov. Estoy deseando que llegue nuestro siguiente encuentro. Sospecho que será antes de lo que piensa." + IDS_DIALOGUE_11403 "Director, su madre espera en la línea 2." + IDS_DIALOGUE_11404 "Oh, maldita sea." + IDS_DIALOGUE_11405 "Atención, a todo el personal. Equipos de asalto del 1 al 4, acudan a la terminal B para equiparse para la misión." + IDS_DIALOGUE_11406 "Ahora estamos en estado Omega." + IDS_DIALOGUE_11407 "Bueno, a todo el mundo, estoy a punto de comenzar una guerra." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11408 "Por cada minuto que la Srta. Archer siga libre, descontaremos un día completo de sueldo. Puede que ESO os motive. " + IDS_DIALOGUE_11409 "Eh, Klaus, ¿cómo va todo?" + IDS_DIALOGUE_11410 "Bien, gracias, ¿y a ti?" + IDS_DIALOGUE_11411 "Ah, intentando cazar a esa espía. No quiero que me descuenten dinero de mi sueldo." + IDS_DIALOGUE_11412 "Debería ayudar, pero no me siento demasiado motivado en estos momentos." + IDS_DIALOGUE_11413 "¿De verdad? ¿Qué pasa?" + IDS_DIALOGUE_11414 "Las técnicas de motivación del Director no me estimulan demasiado. Hay algunas tendencias rebeldes en mi naturaleza que me hacen sentir resentimiento cuando me siento amenazado o degradado." + IDS_DIALOGUE_11415 "Te entiendo, pero a veces tienes que tragarte tu orgullo." + IDS_DIALOGUE_11416 "Es cierto, pero también creo que es importante luchar por tus principios. Si voy a cazar a la espía como se ordenó bajo amenazas de reducción de sueldo, envío el mensaje de que las prácticas de control punitivas son admisibles." + IDS_DIALOGUE_11417 "Siento decírtelo, colega, pero ésa es la manera en la que se dirigen todos estos equipos de maleantes. La mayoría de estos tipos no tiene experiencia en dirección, proceden de familias rotas, no fueron al colegio y no pueden admitir las críticas sin perder los estribos. Es una lata, pero va con el trabajo." + IDS_DIALOGUE_11418 "Sólo porque este comportamiento esté institucionalizado no significa que sea tolerable. Tienes que preguntarte a ti mismo cuál es tu objetivo y cuál es la mejor forma de cumplirlo. Si eres el jefe y quieres que tus empleados busquen a una espía renegada, puedes utilizar incentivos o castigos para motivarlos. Los estudios demuestran que el castigo es bastante menos eficaz." + IDS_DIALOGUE_11419 "Es interesante, pero por aquí, los castigos pueden ser permanentes." + IDS_DIALOGUE_11420 "Bueno, por supuesto que debes hacer uso de tu criterio. En esta situación, el riesgo es puramente económico, así que no me importa arriesgarme. Pero si fuera cuestión de vida o muerte, probablemente haría lo que me han dicho." + IDS_DIALOGUE_11421 "Por lo menos eres prudente." + IDS_DIALOGUE_11422 "Tienes que serlo." + IDS_DIALOGUE_11423 "Bien, colega, voy a buscarla. Cuídate." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11424 "¿Adónde crees que vas?" + IDS_DIALOGUE_11425 "Hay algunos negocios pendientes que tenemos que atender." + IDS_DIALOGUE_11426 "La última vez que nos encontramos fue debajo del hielo. Esta vez, es sobre un lago de lava artificial. ¡Qué adecuado!" + IDS_DIALOGUE_11427 "¡Cierra! ¡No la dejes escapar!" + IDS_DIALOGUE_11428 "¡Está bien, mantén los ojos abiertos!" + IDS_DIALOGUE_11429 "Abrios en abanico y avanzad a vuestras zonas objetivo." + IDS_DIALOGUE_11430 "Hay que mantener esta posición." + IDS_DIALOGUE_11431 "Se supone que debemos encontrarnos con el equipo 4." + IDS_DIALOGUE_11432 "Lo haremos, pero antes tenemos que asegurarnos de que el perímetro está protegido." + IDS_DIALOGUE_11433 "¡Oh, no!" + IDS_DIALOGUE_11434 "¿Qué?" + IDS_DIALOGUE_11435 "Me he dejado la fiambrera en el submarino." + IDS_DIALOGUE_11436 "¿No revisaste la lista de control de la misión?" + IDS_DIALOGUE_11437 "No tuve tiempo. Me tenían fregando baños. Demonios, casi olvido coger mi arma." + IDS_DIALOGUE_11438 "Bueno, es demasiado tarde para volver. Puedes quedarte la mitad de mi sándwich." + IDS_DIALOGUE_11439 "Tío, te debo una." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11440 "Tenemos un problema. Parece que la agente Archer ha caído en una trampa. Hay ninjas buscándola." + IDS_DIALOGUE_11441 "Se supone que debe encontrarse con el agente Yamata cerca de la cascada que hay en el extremo del pueblo. ¡Localízala y sácala de ahí!" + IDS_DIALOGUE_11442 "¡Espías! ¡Detenedlos!" + IDS_DIALOGUE_11443 "¿Dónde está la chica?" + IDS_DIALOGUE_11444 "¡Debe haberse escabullido!" + IDS_DIALOGUE_11445 "Buscad por todas partes. Puede estar escondida." + IDS_DIALOGUE_11446 "¿Has encontrado algo?" + IDS_DIALOGUE_11447 "Ni rastro de ella." + IDS_DIALOGUE_11448 "Sigue buscando." + IDS_DIALOGUE_11449 "¡Allí está! Espero que no sea demasiado tarde." + IDS_DIALOGUE_11450 "El coche está fuera de servicio. Vas a tener que traerla al piso franco y esperar ayuda." + IDS_DIALOGUE_11451 "¡Ahí están!" + IDS_DIALOGUE_11452 "¡No los dejéis escapar!" + IDS_DIALOGUE_11453 "¿Dónde está todo el mundo?" + IDS_DIALOGUE_11454 "Estos idiotas tenían órdenes de vigilar esta zona." + IDS_DIALOGUE_11455 "Deben haber ido a la cascada." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11456 "O quizás se han metido en líos. Mantén los ojos abiertos." + IDS_DIALOGUE_11457 "¿Qué pasa aquí? ¿Por qué no están en sus puestos?" + IDS_DIALOGUE_11458 "La espía ha escapado. La están persiguiendo." + IDS_DIALOGUE_11459 "Alguien tiene que vigilar la propiedad. ¿Y si es un truco? Quizás vuelva." + IDS_DIALOGUE_11460 "No lo creo." + IDS_DIALOGUE_11461 "Quédate aquí. Veré si encuentro a alguien. Si hay señal de problemas, activa la alarma." + IDS_DIALOGUE_11462 "¡Bien hecho! La ayuda está en camino." + IDS_DIALOGUE_11463 "El lanzamiento no fue tan bien como esperábamos. El punto de encuentro es una zona de caza solitaria cercana a la instalación. Utiliza la radio que hay allí para contactar con el control de la misión para obtener más instrucciones." + IDS_DIALOGUE_11464 "Foxhound al habla." + IDS_DIALOGUE_11465 "Ahora que la agente Archer ha conseguido la información que necesitábamos del ordenador principal de la cercana instalación soviética, queremos que termines la misión para siempre." + IDS_DIALOGUE_11466 "Los refuerzos ya se han reunido en el lugar, así que entrar no será fácil. Haz lo que sea necesario. Tenemos que destruir ese ordenador." + IDS_DIALOGUE_11467 "¿Dónde está Vlamidir?" + IDS_DIALOGUE_11468 "Lo enviaron al edificio de registro principal." + IDS_DIALOGUE_11469 "Pensaba que esa zona estaba fuera de los límites." + IDS_DIALOGUE_11470 "Y lo está. Le han asignado una misión para que ayude a calcular los daños." + IDS_DIALOGUE_11471 "Pobre idiota. Probablemente es lo último que veamos de él." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11472 "No necesitamos explosivos. Necesitamos personal. Tenemos que hacer un inventario de todos los archivos para ver qué falta. En este lugar hay archivos de la revolución." + IDS_DIALOGUE_11473 "Eso es lo que me gusta de la Unión Soviética. Pides contables y consigues nitroglicerina." + IDS_DIALOGUE_11474 "Entonces deberíamos pedir nitroglicerina." + IDS_DIALOGUE_11475 "Me temo que acaban de enviar más." + IDS_DIALOGUE_11476 "¿Y es seguro tener todo eso por ahí?" + IDS_DIALOGUE_11477 "Yo lo había puesto en el sótano. Allí debería estar seguro hasta que podamos conseguir embarcarlo a cualquier lugar." + IDS_DIALOGUE_11478 "Llevaría semanas conseguir que aprobaran el papeleo." + IDS_DIALOGUE_11479 "Entonces será mejor que empieces." + IDS_DIALOGUE_11480 "No estoy bromeando. Si te vuelvo a pillar fumando aquí, te arrastraré a la calle y te convertiré en madera para chimeneas." + IDS_DIALOGUE_11481 "Está bien. Ya lo pillo." + IDS_DIALOGUE_11482 "Los cigarrillos y los explosivos no se llevan bien." + IDS_DIALOGUE_11483 "Esto me pone nervioso. Quiero patrullar en el exterior." + IDS_DIALOGUE_11484 "Calla y haz lo que te han dicho." + IDS_DIALOGUE_11485 "¡Estos idiotas! ¿Qué han hecho?" + IDS_DIALOGUE_11486 "Asegura el perímetro. Podría haber un accidente, pero podría ser un sabotaje. ¡Nadie abandona esta base!" + IDS_DIALOGUE_11487 "¡Muy ingenioso! ¡Has actuado de manera sorprendente!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11488 "La agente Archer necesitará una contraseña para infiltrarse en la sede de D.A.Ñ.O." + IDS_DIALOGUE_11489 "Kamal, amigo de Magnus Armstrong, va a ayudarnos. En primer lugar, tendrás que encontrarlo. Debe haber dejado una nota para ti." + IDS_DIALOGUE_11490 "Nadie atraviesa esta puerta sin pagarme." + IDS_DIALOGUE_11491 "Un hombre llamado Balaji Malpani es responsable de presentar una nueva contraseña todos los días. Toma una foto de él." + IDS_DIALOGUE_11492 "Tiene un apartamento en el hotel Cliente Feliz. Búscale allí." + IDS_DIALOGUE_11493 "Balaji visita a su amante cada tarde. Intenta localizar su apartamento. Siempre tiene flores en la parte exterior." + IDS_DIALOGUE_11494 "Hay un balcón que cruza su habitación. Intenta tomar una foto de Balaji desde ahí." + IDS_DIALOGUE_11495 "No deberías haber venido. Eres un hombre casado." + IDS_DIALOGUE_11496 "Pero no puedo resistirme a tus encantos, mi melocotoncito. Estoy maldito por el amor prohibido. Late en mis entrañas." + IDS_DIALOGUE_11497 "Sí, lo he notado." + IDS_DIALOGUE_11498 "¿Qué tengo que hacer para convencerte de mi amor?" + IDS_DIALOGUE_11499 "No es a mí a quien tienes que convencer, sino a mi padre." + IDS_DIALOGUE_11500 "¿Tu padre? Está chapado a la antigua. No estará satisfecho hasta que me case contigo." + IDS_DIALOGUE_11501 "Si me quieres, ¿por qué no lo demuestras?" + IDS_DIALOGUE_11502 "Es complicado." + IDS_DIALOGUE_11503 "Me estás utilizando." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11504 "No digas eso. Suena... vulgar." + IDS_DIALOGUE_11505 "Vete." + IDS_DIALOGUE_11506 "Siempre estamos discutiendo. Abracémonos y borremos estos problemas triviales de nuestras cabezas." + IDS_DIALOGUE_11507 "Tu prioridad más importante es evacuar a Magnus Armstrong." + IDS_DIALOGUE_11508 "Además, busca cualquier información adicional del proyecto: Omega." + IDS_DIALOGUE_11509 "Cuando hayas terminado, coloca explosivos y arrasa el lugar." + IDS_DIALOGUE_11510 "Ten cuidado. Es posible que en estos momentos el lugar esté plagado de refuerzos de D.A.Ñ.O." + IDS_DIALOGUE_11511 "¿Qué le ha ocurrido al generador?" + IDS_DIALOGUE_11512 "No tiene combustible." + IDS_DIALOGUE_11513 "¡Pues pónselo!" + IDS_DIALOGUE_11514 "¿Con qué?" + IDS_DIALOGUE_11515 "Tiene que haber combustible por algún lado. Busca un bidón." + IDS_DIALOGUE_11516 "Tío, este lugar es un caos. Va a llevar semanas calcular los daños." + IDS_DIALOGUE_11517 "Espero que averigüen por qué ese Súper Soldado se volvió loco. No podemos permitirnos que esas cosas causen estragos cada semana." + IDS_DIALOGUE_11518 "Atención, a todo el personal, parece que aún persiste el problema con los mimos." + IDS_DIALOGUE_11519 "Equipos de interceptación, informen al Director temporal Lawrie en la cafetería." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11520 "Bien, lo conseguiste. La agente Archer está en una misión, así que vas a tener que reducirlos." + IDS_DIALOGUE_11521 "Los mimos han tomado la oficina de seguridad." + IDS_DIALOGUE_11522 "Han tomado rehenes y han puesto bombas por todo el edificio." + IDS_DIALOGUE_11523 "Líbrate de esos mimos." + IDS_DIALOGUE_11524 "¡Ayuda!" + IDS_DIALOGUE_11525 "¡Unos mimos me están molestando!" + IDS_DIALOGUE_11526 "¡Oh, gracias! ¡El dolor era insoportable!" + IDS_DIALOGUE_11527 "¡Alejaos de mí, mimos roñosos!" + IDS_DIALOGUE_11528 "¿No tenéis piedad?" + IDS_DIALOGUE_11529 "¡Te debo una!" + IDS_DIALOGUE_11530 "Lo que necesitáis, nenazas, es una buena patada en el culo." + IDS_DIALOGUE_11531 "No me pongáis vuestras manazas de mariquitas encima, pervertidos." + IDS_DIALOGUE_11532 "Una vez que nos hayamos encargado de los comunistas, iremos a Francia y cogeremos al resto de estos payasos. Le haremos un favor al mundo." + IDS_DIALOGUE_11533 "¿Otra vez tú? ¡Aléjate de ese micrófono, franchute! ¡Au!" + IDS_DIALOGUE_11534 "¡Oh, no! Una vez más, he cogido el micrófono." + IDS_DIALOGUE_11535 "Pronto esta desgraciada agencia quedará reducida a un gran cráter. Será estupendo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11536 "Estos agentes secretos no tienen nada que hacer con mis mortales mimos." + IDS_DIALOGUE_11537 "No apreciáis el sutil arte de la pantomima. Os compadezco." + IDS_DIALOGUE_11538 "¡Malditos seáis! ¡Maldigo a vuestras madres!" + IDS_DIALOGUE_11539 "Aún no habéis visto la última actuación de Pierre, ¡el Rey de los mimos!" + IDS_DIALOGUE_11540 "¡Están por todas partes! ¡Haz algo!" + IDS_DIALOGUE_11541 "¡Ayuda, me tienen como rehén!" + IDS_DIALOGUE_11542 "¡No más torturas, por favor!" + IDS_DIALOGUE_11543 "¡Oh, gracias! ¡No aguanto muy bien el arte de actuar!" + IDS_DIALOGUE_11544 "D.A.Ñ.O. y Alianza Maligna están a punto de llegar a un acuerdo de ayuda mutua. No podemos dejar que eso ocurra." + IDS_DIALOGUE_11545 "Afortunadamente, un agente de D.A.Ñ.O. arrepentido ha accedido a ayudarnos. Se llama Kamal. Localízalo y averigua qué ofrece." + IDS_DIALOGUE_11546 "Pero creía que íbamos a trabajar juntos." + IDS_DIALOGUE_11547 "Y así es, pero esta infracción no puede quedar impune. Este hombre, Kamal, ha ofendido nuestro honor. No puede seguir con vida." + IDS_DIALOGUE_11548 "No creo que a D.A.Ñ.O. le guste que lo matemos." + IDS_DIALOGUE_11549 "Por eso vamos a hacer que parezca un accidente." + IDS_DIALOGUE_11550 "Pero has enviado un escuadrón de asesinos para que lo hagan picadillo. No creo que se crean que fue un accidente." + IDS_DIALOGUE_11551 "Imbécil, les diremos que creímos que era otra persona. Además, no dejarán que un asesinato de nada se interponga en el tratado." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11552 "Gracias por salvarme la vida." + IDS_DIALOGUE_11553 "Tanto D.A.Ñ.O. como Alianza Maligna tienen sedes en esta zona. Busca información para averiguar cómo abrir una brecha entre ellas." + IDS_DIALOGUE_11554 "Alianza Maligna tiene su sede en un cine." + IDS_DIALOGUE_11555 "La sede de D.A.Ñ.O. está..." + IDS_DIALOGUE_11556 "No me gusta la idea de unir fuerzas con D.A.Ñ.O." + IDS_DIALOGUE_11557 "¿Por qué no?" + IDS_DIALOGUE_11558 "No confío en ellos. ¿Sabes qué significa su nombre?" + IDS_DIALOGUE_11559 "No." + IDS_DIALOGUE_11560 "Yo tampoco. Y eso no me hace sentir seguro." + IDS_DIALOGUE_11561 "Son estrictamente de tercer orden." + IDS_DIALOGUE_11562 "¿Y qué? Tienen su propio cine. Ponen películas todos los sábados por la noche." + IDS_DIALOGUE_11563 "En eso tienes razón, pero me preocupa nuestra reputación. El nombre de D.A.Ñ.O. infunde terror en los corazones de la gente. Nadie toma en serio a Alianza Maligna. Son un puñado de vagos quejicas que viven de la ayuda social." + IDS_DIALOGUE_11564 "No te preocupes. Todo el mundo supondrá que es una toma hostil." + IDS_DIALOGUE_11565 "No soy tan optimista como tú. Creo que mucha gente se preguntará si hemos perdido el valor. Si fue una toma hostil, ¿por qué íbamos a dejar que mantengan su identidad?" + IDS_DIALOGUE_11566 "Ummm, no lo había pensado." + IDS_DIALOGUE_11567 "Inteligencia indica que D.A.Ñ.O. ha enviado un escuadrón de asalto para arruinar las vacaciones del Sr. Jones. Tú tienes que evitar que eso ocurra." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11568 "Es muy importante que el Sr. Jones no sepa que estamos aquí o arruinaremos sus vacaciones." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11600 "¿Eres la nueva secretaria?" + IDS_DIALOGUE_11601 "No me vendría mal un masaje." + IDS_DIALOGUE_11602 "¿Sabes hacer café?" + IDS_DIALOGUE_11603 "No eres una secretaria demasiado buena." + IDS_DIALOGUE_11604 "Te digo que están planeando algo más gordo. Y la dirección no mueve ni un dedo para descubrirlo." + IDS_DIALOGUE_11605 "¿Y qué esperas?" + IDS_DIALOGUE_11606 "¡Espero que hagan algo!" + IDS_DIALOGUE_11607 "¿Como qué? ¿Asaltar su sede? ¿Has olvidado lo que ocurrió la última vez que lo intentamos? Aún recibimos trozos de Vijay por correo." + IDS_DIALOGUE_11608 "Es mejor que sentarse y no hacer nada." + IDS_DIALOGUE_11609 "Seguro que tienen un plan. Ya verás. Todo irá bien." + IDS_DIALOGUE_11610 "Si se supone que eso me va a hacer sentir mejor, no funciona." + IDS_DIALOGUE_11611 "Te digo que esa mujer me está volviendo loco." + IDS_DIALOGUE_11612 "Ya te advertí que no te casaras con ella." + IDS_DIALOGUE_11613 "No hablo de mi esposa, idiota. ¡Sino de su madre! Fue dulce y amable hasta la boda pero después, se convirtió en un demonio despiadado. Sólo sabe quejarse." + IDS_DIALOGUE_11614 "Quizás debas recordarle que está viviendo en TU casa." + IDS_DIALOGUE_11615 "¿Estás loco? Me mataría." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11616 "Creo que debes ser más autoritario." + IDS_DIALOGUE_11617 "No conoces a esa mujer. Es peligrosa." + IDS_DIALOGUE_11618 "Trabajas para una de las organizaciones terroristas más malvadas del planeta. Si alguien de tu casa es peligroso, amigo, creo que ése eres tú." + IDS_DIALOGUE_11619 "Bueno, si lo presentas así, la lógica está clara. ¿Cómo puedo agradecértelo?" + IDS_DIALOGUE_11620 "No hay de qué. No me gusta ver a un buen amigo castrado." + IDS_DIALOGUE_11621 "Hace un día estupendo." + IDS_DIALOGUE_11622 "Hola." + IDS_DIALOGUE_11623 "Buenos días." + IDS_DIALOGUE_11624 "Hola." + IDS_DIALOGUE_11625 "¿Crees que mi acento es ofensivo?" + IDS_DIALOGUE_11626 "¿Qué? ¿Por qué iba a creer eso?" + IDS_DIALOGUE_11627 "No es auténtico." + IDS_DIALOGUE_11628 "No comprendo." + IDS_DIALOGUE_11629 "Nací y me crié en los Estados Unidos." + IDS_DIALOGUE_11630 "¿Qué...? ¿Cómo...? ¿Pero...?" + IDS_DIALOGUE_11631 "Mis padres se fueron a Filadelfia en los años 30 y yo crecí allí. Fui a colegios norteamericanos, tuve amigos norteamericanos..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11632 "¿Y qué estás haciendo aquí?" + IDS_DIALOGUE_11633 "Siempre quise ver de dónde procedía mi familia. Así que solicité el traslado." + IDS_DIALOGUE_11634 "¿Por qué utilizas un acento falso?" + IDS_DIALOGUE_11635 "Para encajar. No sabía cómo reaccionaría la gente si descubría que era extranjero. Pero me preocupa estar pasándome." + IDS_DIALOGUE_11636 "Tengo que hacer una confesión. Soy de Detroit." + IDS_DIALOGUE_11637 "¡Estás de broma!" + IDS_DIALOGUE_11638 "No creo que seamos los únicos. Cuando Vijay se emborracha, podría jurar que habla con acento de Oklahoma. Y estoy segurísimo de que Deepak es británico." + IDS_DIALOGUE_11639 "Bueno, probablemente sea mejor que guardemos las apariencias." + IDS_DIALOGUE_11640 "Bien pensado, amigo." + IDS_DIALOGUE_11641 "Tengo otra falta." + IDS_DIALOGUE_11642 "No me lo digas, déjame adivinar. Cree que tu " + IDS_DIALOGUE_11643 "Oui, quiere un viento más fuerte." + IDS_DIALOGUE_11644 "Estudió con Deveraux." + IDS_DIALOGUE_11645 "Bueno, eso lo explica. Deveraux cree que el viento debe ser una tempestad. Mi profesor aprendió de Jarre. Jarre aboga por una brisa primaveral." + IDS_DIALOGUE_11646 "A mí me enseñaron que el viento debe ser enérgico, pero nunca descortés." + IDS_DIALOGUE_11647 "Cuando era joven, no era consciente de que hubiera tanta filosofía en la pantomima." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11648 "No veo por qué debería haberlo hecho." + IDS_DIALOGUE_11649 "¿Qué quieres decir? Es tu trabajo." + IDS_DIALOGUE_11650 "Yo no me alisté para fregar letrinas. Me alisté para llevar a cabo actos despreciables." + IDS_DIALOGUE_11651 "Enséñame dónde dice en tu contrato que sólo tienes que hacer las cosas divertidas." + IDS_DIALOGUE_11652 "Mira, soy un experto en lo que hago, que es causar sufrimiento y dolor. Me contrataron para hacer infeliz a la gente. Si quieres un limpiador de letrinas, contrata a un limpia." + IDS_DIALOGUE_11653 "Claro, si no te importa que te recorten el sueldo para cubrir sus salarios." + IDS_DIALOGUE_11654 "¿Por qué debería pagar yo?" + IDS_DIALOGUE_11655 "Porque tú eres el que no quiere arrimar el hombro. El resto de nosotros fregamos letrinas cuando nos toca. Si no quieres ayudar, puedes contratar a un limpia con tu sueldo." + IDS_DIALOGUE_11656 "¡Eso no es justo!" + IDS_DIALOGUE_11657 "¿Por qué no hablas de ello con el Sr. Volkov? Seguro que tiene algo que decir sobre el tema." + IDS_DIALOGUE_11658 "No voy a limpiar." + IDS_DIALOGUE_11659 "Haz lo que quieras. Recuerda que la gente que no limpia, es limpiado." + IDS_DIALOGUE_11660 "¿Es una amenaza?" + IDS_DIALOGUE_11661 "Es un hecho." + IDS_DIALOGUE_11662 "Últimamente he estado pensando, ¿recuerdas a Paulo?" + IDS_DIALOGUE_11663 "¿El que le dio una paliza a Johnny en España?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11664 "Sí, el mismo." + IDS_DIALOGUE_11665 "¿Cómo olvidarlo? Me acuerdo de la fiesta de Navidad del año pasado. Se pusieron en pie para aplaudirte después de que describieras qué le ibas a hacer a ese tipo. Fue la fantasía de venganza más desagradable y gráfica que he escuchado jamás. Pura poesía." + IDS_DIALOGUE_11666 "Bien, como he dicho, he estado pensando y he cambiado de opinión." + IDS_DIALOGUE_11667 "¿Quieres decir que has planeado algo peor?" + IDS_DIALOGUE_11668 "No, quiero decir que he cambiado de opinión." + IDS_DIALOGUE_11669 "¿No vas a matarlo?" + IDS_DIALOGUE_11670 "¿Por qué? No nos va a devolver a Johnny." + IDS_DIALOGUE_11671 "Sí, pero es cuestión de principios." + IDS_DIALOGUE_11672 "Eso es lo que solía decirme a mí mismo, pero todo es cuestión de negocios. Quería a Johnny como a un hermano, pero era una rata." + IDS_DIALOGUE_11673 "Es posible, pero era nuestro amigo." + IDS_DIALOGUE_11674 "¿Qué acabo de decir? Habría hecho cualquier cosa por ese gamberro." + IDS_DIALOGUE_11675 "A mí no me lo parece." + IDS_DIALOGUE_11676 "Mira, si mato a Paulo, ¿a quién estoy ayudando? A Johnny no. Está muerto. Lo estaré haciendo por mí." + IDS_DIALOGUE_11677 "Eso no es malo." + IDS_DIALOGUE_11678 "Sí, que lo es. Mira, sé que Paulo no tenía nada personal contra Johnny. Simplemente cumplía órdenes. ¿Cómo me voy a sentir mejor matando a un tipo que estaba haciendo su trabajo?" + IDS_DIALOGUE_11679 "Pues mata al tipo que lo contrató." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11680 "Pero Johnny se lo tenía merecido. Desearía que las cosas hubieran sido diferentes, pero no fue así. Si comienzo a matar gente, ¿qué conseguiré?" + IDS_DIALOGUE_11681 "¿Llevas sujetador? Empiezo a preocuparme por tu hombría. Es decir, si pierdes el gusto por la violencia, quizás deberías convertirte en bibliotecario o algo parecido..." + IDS_DIALOGUE_11682 "Vuelve a decir eso. Pero en mi cara. Atrévete." + IDS_DIALOGUE_11683 "Tranquilo. Es que me cuesta asimilar todo esto." + IDS_DIALOGUE_11684 "Es sencillo. Johnny murió porque era malo para los negocios. Si yo cojo y mato al tipo que lo mató, estoy convirtiendo una tragedia en una parodia." + IDS_DIALOGUE_11685 "¿De qué estás hablando? Te están pagando con la misma moneda." + IDS_DIALOGUE_11686 "¡No se lo merecía! Eso es lo que he intentado decir. Johnny consiguió que lo mataran por ser una rata. Si quieres culpar a alguien, cúlpale a él. Si un tipo se dispara a sí mismo en la cabeza, no castigas a la pistola." + IDS_DIALOGUE_11687 "Ummm, una idea interesante." + IDS_DIALOGUE_11688 "Es la diferencia entre la venganza y la justicia. Matando a Paulo puedo conseguir venganza, pero no estaré ayudando a la justicia. La justicia es principalmente lo que acabó con Johnny." + IDS_DIALOGUE_11689 "¿Te has enterado de que ese bastardo planeaba hacer una presentación sobre el proyecto: Lambda en la conferencia internacional del crimen de este año?" + IDS_DIALOGUE_11690 "Pero si él ni siquiera ha participado en el proyecto." + IDS_DIALOGUE_11691 "¡Ya! ¿Puedes creerlo?" + IDS_DIALOGUE_11692 "¿Y entonces hablaron con él para que no lo hiciera?" + IDS_DIALOGUE_11693 "No, simplemente lo tiraron a los tiburones." + IDS_DIALOGUE_11694 "Eso lo callará para siempre." + IDS_DIALOGUE_11695 "¿Por qué crees que hay tan pocas mujeres en el negocio del crimen?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11696 "Probablemente sea por falta de interés." + IDS_DIALOGUE_11697 "¿No crees que es por machismo?" + IDS_DIALOGUE_11698 "Seguro que hay algo de eso, pero no recibimos muchas solicitudes de mujeres." + IDS_DIALOGUE_11699 "Quizás es por la sociedad. Es posible que las chicas crezcan pensando que el crimen es para los hombres, así que no lo consideran una opción." + IDS_DIALOGUE_11700 "Le preguntaré a mi hermana qué piensa." + IDS_DIALOGUE_11701 "¿Qué le ocurrió al plan de la Torre Eiffel? ¿No iban a amarrarle cohetes para enviarla a la luna?" + IDS_DIALOGUE_11702 "Rebasaba el presupuesto. He oído que están trabajando en un plan para reemplazar todos los cuadros del Louvre por fotos de Elvis Presley." + IDS_DIALOGUE_11703 "¿Estás seguro? Se parece mucho al trabajo de Barcelona." + IDS_DIALOGUE_11704 "Lo llaman una secuela espiritual." + IDS_DIALOGUE_11705 "Es decepcionante. Esperaba algo más innovador." + IDS_DIALOGUE_11706 "Aún pueden innovar. Sólo porque sea una continuación no quiere decir que vaya a ser parecida. Piensa en ello como si fuera una variación sobre el mismo tema." + IDS_DIALOGUE_11707 "Ya veremos." + IDS_DIALOGUE_11708 "Esa oficial de moral es una gran responsabilidad." + IDS_DIALOGUE_11709 "Au, vamos, no es tan mala." + IDS_DIALOGUE_11710 "¿Cómo se supone que voy a sentirme intimidante con un uniforme rosa? ¿Y qué clase de organización maligna que se respete tiene un eslogan que diga " + IDS_DIALOGUE_11711 "A mí me gusta. Además, de todos modos fue rebatido." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11712 "No me refiero a eso. Nunca lo deberían haber propuesto, en primer lugar. ¿Dónde está la amenaza?" + IDS_DIALOGUE_11713 "Dale un respiro. Es la primera vez que trabaja en una organización criminal. Antes trabajaba en una empresa de cereales para desayuno." + IDS_DIALOGUE_11714 "¡Por Dios!" + IDS_DIALOGUE_11715 "¿En qué puedo ayudarte?" + IDS_DIALOGUE_11716 "Puedes calibrar tu precisión mediante tu punto de mira. Cuanto más borrosa se vuelva, menos precisos serán tus disparos. Los movimientos rápidos tenderán a afectar a tu puntería." + IDS_DIALOGUE_11717 "Has entrado en un escondite potencial. Si te mantienes totalmente quieto, te ocultarás, lo que supondrá que tus enemigos no podrán verte a menos que se acerquen mucho. Estarás oculto siempre que no hagas ruido. Eso significa que podrás pasar sigilosamente o agachado, pero ten cuidado para no hacer ruido. " + IDS_DIALOGUE_11718 "Tienes una ganzúa. Colócala en el pomo y úsala." + IDS_DIALOGUE_11719 "¡Déshazte de ellos, rápido!" + IDS_DIALOGUE_11720 "Deben haber visto el avión." + IDS_DIALOGUE_11721 "La radio está en la sala posterior." + IDS_DIALOGUE_11722 "Usa la radio para hablar con tu jefe." + IDS_DIALOGUE_11723 "Al norte hay un pequeño puesto de avanzada soviético. A lo mejor allí encuentras gasolina." + IDS_DIALOGUE_11724 "El cobertizo está fuera, en la parte de atrás." + IDS_DIALOGUE_11725 "Consigue provisiones en el cobertizo." + IDS_DIALOGUE_11726 "Este sendero lleva de vuelta al avión. En esa dirección no hay nada que valga la pena ver." + IDS_DIALOGUE_11727 "¡El puente está ahí delante! Cuando lo cruces, busca el sendero estrecho que está a la izquierda. Por él llegarás a los pilares del puente." +END + +STRINGTABLE +BEGIN + IDS_AISOUNDS_20000 "vacío" + IDS_AISOUNDS_20001 "vacío" + IDS_AISOUNDS_20002 "vacío" + IDS_AISOUNDS_20003 "vacío" +END + +STRINGTABLE +BEGIN + IDS_INTEL_TEXT_8000 "Has encontrado una carta con información clasificada." + IDS_INTEL_TEXT_8001 "Has encontrado un carrete de 35 mm." + IDS_INTEL_TEXT_8002 "Has encontrado un plano importante." + IDS_INTEL_TEXT_8003 "Has encontrado un maletín." + IDS_INTEL_TEXT_8004 "Has encontrado un expediente." + IDS_INTEL_TEXT_8005 "Has encontrado algunos expedientes perdidos." + IDS_INTEL_TEXT_8006 "Has encontrado un sobre." + IDS_INTEL_TEXT_8007 "Has encontrado una cinta de película." + IDS_INTEL_TEXT_8008 "Has fotografiado algo importante." + IDS_INTEL_TEXT_8009 "Has fotografiado un libro de contabilidad." + IDS_INTEL_TEXT_8010 "Has fotografiado un libro de contabilidad." + IDS_INTEL_TEXT_8011 "Has encontrado una nota." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5008 "Entregar el maletín a Hatori-san." + IDS_MISSION_OBJ_5009 "Borra tres marcas de tiza de cadáveres." + IDS_MISSION_OBJ_5010 "Procurar que los enemigos no hagan sonar la alarma." + IDS_MISSION_OBJ_5011 "Recuperar seis páginas del manual de campo de UNITY." + IDS_MISSION_OBJ_5012 "Fotografiar a Hatori-san." + IDS_MISSION_OBJ_5013 "Recupera las cuatro páginas del manual de campo de UNITY." + IDS_MISSION_OBJ_5014 "FALLIDO: fotografiar la reunión." + IDS_MISSION_OBJ_5015 "No dejes que suenen las alarmas del jardín cerca de la casa principal." + IDS_MISSION_OBJ_5016 "¡No hagas ningún ruido sospechoso cerca de la ventana!" + IDS_MISSION_OBJ_5017 "" + IDS_MISSION_OBJ_5018 "" + IDS_MISSION_OBJ_5019 "" + IDS_MISSION_OBJ_5020 "" + IDS_MISSION_OBJ_5021 "Control por radio de la misión de UNITY a la espera de instrucciones." + IDS_MISSION_OBJ_5022 "Localizar y asegurar el refugio de caza como base de operaciones." + IDS_MISSION_OBJ_5023 "Colocar tres explosivos en los apuntalamientos del puente principal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5024 "Localizar la estación de comunicaciones." + IDS_MISSION_OBJ_5025 "Localizar la central eléctrica." + IDS_MISSION_OBJ_5026 "Evitar el puente principal que lleva a la base." + IDS_MISSION_OBJ_5027 "Minimizar las bajas soviéticas a toda costa." + IDS_MISSION_OBJ_5028 "Sabotear la central eléctrica." + IDS_MISSION_OBJ_5029 "Colocar explosivos en la base de la torre de radio. " + IDS_MISSION_OBJ_5030 "Colocar explosivos en la estación de comunicaciones." + IDS_MISSION_OBJ_5031 "Rescata a tu piloto de sus captores soviéticos y escóltale hasta el exterior de las instalaciones." + IDS_MISSION_OBJ_5032 "Volver al refugio de caza y esperar a que se haga de noche." + IDS_MISSION_OBJ_5033 "Descubre la naturaleza de la conspiración que has descubierto." + IDS_MISSION_OBJ_5034 "Intentar impedir que los soldados soviéticos consigan refuerzos." + IDS_MISSION_OBJ_5035 "Localizar el archivo central." + IDS_MISSION_OBJ_5036 "Colocar explosivos en la entrada exterior." + IDS_MISSION_OBJ_5037 "Colocar explosivos en el depósito de combustible del parque de automóviles." + IDS_MISSION_OBJ_5038 "Colocar explosivos en el depósito de propano junto al comedor." + IDS_MISSION_OBJ_5039 "Obtener información sobre el proyecto Omega." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5040 "Vuelve al avión." + IDS_MISSION_OBJ_5041 "Liquidar a Nikolai Zhukov." + IDS_MISSION_OBJ_5042 "Volver al punto de inserción." + IDS_MISSION_OBJ_5043 "Obtener las dos páginas del informe sobre despliegue militar soviético." + IDS_MISSION_OBJ_5044 "Infiltrarse en las instalaciones." + IDS_MISSION_OBJ_5045 "Reunir los cuatro informes de gastos." + IDS_MISSION_OBJ_5046 "Colocar micrófonos ocultos en cuatro teléfonos del edificio de archivos principal." + IDS_MISSION_OBJ_5047 "Fotografiar tres objetivos. (TBD)" + IDS_MISSION_OBJ_5048 "Impedir que D.A.Ñ.O haga volar tu avión." + IDS_MISSION_OBJ_5049 "Ayudar al piloto a despejarse." + IDS_MISSION_OBJ_5050 "Informe de preparación." + IDS_MISSION_OBJ_5051 "Recuperar documentación secreta de la caja fuerte del viejo edificio de registros." + IDS_MISSION_OBJ_5052 "Recuperar los suministros de la nave." + IDS_MISSION_OBJ_5053 "Infíltrate en el edificio principal de archivos." + IDS_MISSION_OBJ_5054 "Rescata a tu piloto de D.A.Ñ.O." + IDS_MISSION_OBJ_5055 "Recuperar información adicional de ANATOLI." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5056 "" + IDS_MISSION_OBJ_5057 "" + IDS_MISSION_OBJ_5058 "" + IDS_MISSION_OBJ_5059 "" + IDS_MISSION_OBJ_5060 "" + IDS_MISSION_OBJ_5061 "Buscar información sobre el proyecto Omega." + IDS_MISSION_OBJ_5062 "Escapar con las pruebas." + IDS_MISSION_OBJ_5063 "Derrotar a Isako." + IDS_MISSION_OBJ_5064 "Lucha contra los asaltantes ninjas." + IDS_MISSION_OBJ_5065 "Buscar todas las grabaciones de voz." + IDS_MISSION_OBJ_5066 "Buscar toda la correspondencia entre Goodman y el Sr. Smith." + IDS_MISSION_OBJ_5067 "" + IDS_MISSION_OBJ_5068 "" + IDS_MISSION_OBJ_5069 "" + IDS_MISSION_OBJ_5070 "" + IDS_MISSION_OBJ_5071 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5072 "" + IDS_MISSION_OBJ_5073 "" + IDS_MISSION_OBJ_5074 "" + IDS_MISSION_OBJ_5075 "" + IDS_MISSION_OBJ_5076 "" + IDS_MISSION_OBJ_5077 "" + IDS_MISSION_OBJ_5078 "" + IDS_MISSION_OBJ_5079 "" + IDS_MISSION_OBJ_5080 "" + IDS_MISSION_OBJ_5081 "Encuentro con Kamal. Ten cuidado de no dañar a inocentes o a la policía que patrulla la zona." + IDS_MISSION_OBJ_5082 "Acceder al cuartel general de D.A.Ñ.O." + IDS_MISSION_OBJ_5083 "Colocar micrófono oculto en el teléfono de la oficina de Anoop Banerjee. Y después escuchar la conversación." + IDS_MISSION_OBJ_5084 "Localizar la centralita telefónica." + IDS_MISSION_OBJ_5085 "Volver a la entrada antes de que se note la ausencia." + IDS_MISSION_OBJ_5086 "Recoger los carteles de Se busca antes de que los civiles los vean." + IDS_MISSION_OBJ_5087 "Infiltrarse en el cuartel general de la Alianza Maligna." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5088 "Recuperar el contenido de la caja fuerte del Director." + IDS_MISSION_OBJ_5089 "Colocar explosivos en la ubicación número 1." + IDS_MISSION_OBJ_5090 "Colocar explosivos en la ubicación número 2." + IDS_MISSION_OBJ_5091 "Colocar explosivos en la ubicación número 3." + IDS_MISSION_OBJ_5092 "Coloca explosivos en la cámara cinematográfica secreta de la Alianza Maligna." + IDS_MISSION_OBJ_5093 "Escapar del cuartel general de la Alianza Maligna." + IDS_MISSION_OBJ_5094 "Obtener información sobre el proyecto Omega de la cámara principal." + IDS_MISSION_OBJ_5095 "Encuentro con Armstrong." + IDS_MISSION_OBJ_5096 "Seguir a Armstrong hasta un punto seguro." + IDS_MISSION_OBJ_5097 "Escapar con Armstrong." + IDS_MISSION_OBJ_5098 "Proteger a Armstrong a toda costa." + IDS_MISSION_OBJ_5099 "Apresar al rey mimo." + IDS_MISSION_OBJ_5100 "Fotografiar objetivos en el cuartel general de D.A.Ñ.O. (TBD)." + IDS_MISSION_OBJ_5101 "Colocar micrófonos ocultos en tres teléfonos del cuartel general de D.A.Ñ.O." + IDS_MISSION_OBJ_5102 "Fotografiar documentos de la caja fuerte." + IDS_MISSION_OBJ_5103 "Obtener pruebas del chantaje de Kamal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5104 "No mates a nadie o fallarás la misión." + IDS_MISSION_OBJ_5105 "Evitar que te atrapen y que te lleven de vuelta hasta el vestíbulo de nuevo." + IDS_MISSION_OBJ_5106 "Hablar con Armstrong." + IDS_MISSION_OBJ_5107 "Encontrar a Kamal." + IDS_MISSION_OBJ_5108 "Llega al nivel inferior sin matar a nadie." + IDS_MISSION_OBJ_5109 "Recupera suministros de la cabina de teléfono que está cerca del teatro." + IDS_MISSION_OBJ_5110 "¡No permitas que te capturen o no superarás la misión!" + IDS_MISSION_OBJ_5111 "" + IDS_MISSION_OBJ_5112 "" + IDS_MISSION_OBJ_5113 "" + IDS_MISSION_OBJ_5114 "" + IDS_MISSION_OBJ_5115 "" + IDS_MISSION_OBJ_5116 "" + IDS_MISSION_OBJ_5117 "" + IDS_MISSION_OBJ_5118 "" + IDS_MISSION_OBJ_5119 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5120 "" + IDS_MISSION_OBJ_5121 "Obtener información sobre el proyecto Omega." + IDS_MISSION_OBJ_5122 "Escapar con vida." + IDS_MISSION_OBJ_5123 "Conseguir tres páginas del informe médico." + IDS_MISSION_OBJ_5124 "Recuperar datos adicionales del Teniente Anders." + IDS_MISSION_OBJ_5125 "" + IDS_MISSION_OBJ_5126 "" + IDS_MISSION_OBJ_5127 "" + IDS_MISSION_OBJ_5128 "" + IDS_MISSION_OBJ_5129 "" + IDS_MISSION_OBJ_5130 "" + IDS_MISSION_OBJ_5131 "Rescatar a la población civil de los Súper Soldados." + IDS_MISSION_OBJ_5132 "Proteger a Kamal." + IDS_MISSION_OBJ_5133 "" + IDS_MISSION_OBJ_5134 "" + IDS_MISSION_OBJ_5135 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5136 "" + IDS_MISSION_OBJ_5137 "" + IDS_MISSION_OBJ_5138 "" + IDS_MISSION_OBJ_5139 "" + IDS_MISSION_OBJ_5140 "" + IDS_MISSION_OBJ_5141 "Buscar las gafas del Dr. Schenker." + IDS_MISSION_OBJ_5142 "Eliminar a los intrusos." + IDS_MISSION_OBJ_5143 "Buscar al Dr. Schenker." + IDS_MISSION_OBJ_5144 "Proteger al personal de UNITY." + IDS_MISSION_OBJ_5145 "Buscar los cuatro documentos perdidos." + IDS_MISSION_OBJ_5146 "Desactivar todos los explosivos." + IDS_MISSION_OBJ_5147 "" + IDS_MISSION_OBJ_5148 "" + IDS_MISSION_OBJ_5149 "" + IDS_MISSION_OBJ_5150 "" + IDS_MISSION_OBJ_5151 "Averiguar dónde tienen recluido a Armstrong." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5152 "Rescatar a Armstrong. Está prisionero en la cubierta inferior de un tanque de Súper Soldado." + IDS_MISSION_OBJ_5153 "Buscar una salida de la base submarina antes de que explote." + IDS_MISSION_OBJ_5154 "Acceder al área privada del Director." + IDS_MISSION_OBJ_5155 "Obtener información del Súper Submarino secreto de D.A.Ñ.O." + IDS_MISSION_OBJ_5156 "Obtener una copia del manual de los empleados de D.A.Ñ.O." + IDS_MISSION_OBJ_5157 "Derrota a Pierre" + IDS_MISSION_OBJ_5158 "Consigue el manual de usuario del Súper ordenador v1.0. del departamento de servicios de Súper ordenador." + IDS_MISSION_OBJ_5159 "Encuentra el formulario de solicitud 207-B." + IDS_MISSION_OBJ_5160 "Encuentra el suplemento del manual de usuario del súper ordenador v2.0." + IDS_MISSION_OBJ_5161 "Encuentra la válvula de la bomba de achique y ábrela." + IDS_MISSION_OBJ_5162 "Obtén una copia del resumen de nueva misión de D.A.Ñ.O." + IDS_MISSION_OBJ_5163 "Encuentra el conducto que lleva a la cubierta de mando." + IDS_MISSION_OBJ_5164 "" + IDS_MISSION_OBJ_5165 "" + IDS_MISSION_OBJ_5166 "" + IDS_MISSION_OBJ_5167 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5168 "" + IDS_MISSION_OBJ_5169 "" + IDS_MISSION_OBJ_5170 "" + IDS_MISSION_OBJ_5171 "Escapar de la trampa mortal innecesariamente complicada." + IDS_MISSION_OBJ_5172 "Derrotar a Volkov." + IDS_MISSION_OBJ_5173 "Escapar de la guarida subterránea secreta." + IDS_MISSION_OBJ_5174 "Derrotar a Isako." + IDS_MISSION_OBJ_5175 "Obtener el nuevo plan de relaciones públicas de D.A.Ñ.O." + IDS_MISSION_OBJ_5176 "Recuperar el plan de invasión de Khios de D.A.Ñ.O." + IDS_MISSION_OBJ_5177 "Destruir el generador" + IDS_MISSION_OBJ_5178 "Destruir la unidad central del Súper Ordenador." + IDS_MISSION_OBJ_5179 "" + IDS_MISSION_OBJ_5180 "" + IDS_MISSION_OBJ_5181 "Detener la invasión de los Súper Soldados." + IDS_MISSION_OBJ_5182 "Derrotar al teniente de los Súper Soldados." + IDS_MISSION_OBJ_5183 "Cita con Armstrong en el fuerte." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5184 "Hunde el súper submarino secreto." + IDS_MISSION_OBJ_5185 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4500 "" + IDS_KEY_ITEM_4501 "Destornillador" + IDS_KEY_ITEM_4502 "Bombilla" + IDS_KEY_ITEM_4503 "Pila descargada" + IDS_KEY_ITEM_4504 "Pila nueva" + IDS_KEY_ITEM_4505 "Maletín" + IDS_KEY_ITEM_4506 "Lata de combustible" + IDS_KEY_ITEM_4507 "Fusible" + IDS_KEY_ITEM_4508 "Llavero" + IDS_KEY_ITEM_4509 "Bobina de hilo" + IDS_KEY_ITEM_4510 "Llave inglesa" + IDS_KEY_ITEM_4511 "Pomo" +END + +STRINGTABLE +BEGIN + IDS_GEAR_DESC_1 "Anula el veneno provocado por balas de cianuro y flechas envenenadas." + IDS_GEAR_DESC_2 "Disminuye el daño de las quemaduras provocadas por balas de fósforo, vapor hirviendo y otras fuentes de calor." + IDS_GEAR_DESC_3 "Disminuye el daño de las contusiones provocadas por explosiones." + IDS_GEAR_DESC_4 "Disminuye el daño producido por electricidad." + IDS_GEAR_DESC_5 "Suministro de aire bajo el agua." + IDS_GEAR_DESC_6 "Reduce el ruido por movimiento a la mitad." + IDS_GEAR_DESC_7 "Evita la pérdida excesiva de sangre provocada por balas dum dum." + IDS_GEAR_DESC_8 "Protege de la mayoría de daños." +END + +STRINGTABLE +BEGIN + IDS_MOD_1 "Silenciador para pistola automática McAllister .32" + IDS_MOD_2 "Zoom de la cámara" + IDS_MOD_3 "Silenciador para rifle de resorte RFA Serie-4" + IDS_MOD_4 "Silenciador para SMG Gordon de 9 mm" + IDS_MOD_5 "Alcance del rifle de asalto AK-47" + IDS_MOD_6 "Alcance del lanzador funcional" +END + +STRINGTABLE +BEGIN + IDS_MOD_7 "Alcance de la ballesta del cazador justiciero" + IDS_MOD_8 "Alcance del corrector Bacalov" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25000 "" + IDS_INTEL_25001 "UNUSED" + IDS_INTEL_25002 "Aviso público: Toque de queda en el pueblo@AVISO PÚBLICO:\n\nDesde hoy, a partir de las 6 de la tarde hasta las 6 de la mañana se impondrá el toque de queda. Los residentes que sean sorprendidos en el exterior durante las horas del toque de queda serán duramente castigados.\n\nHaruko Muroi\nAdministrador ayudante del clan ninja Katakuri." + IDS_INTEL_25003 "Memorándum del clan ninja: Patrullas@A todos los miembros del clan:\n\nCreemos que la espía entrará en el pueblo por el este, donde están concentradas la mayoría de las atracciones turísticas, pero es también posible que aparezca por las cataratas. Por favor, informen puntualmente a los correos asignados esta tarde. Se recomienda comer antes de que comiencen sus turnos, puesto que nuestro presupuesto para comida se gastó en el ataque del mes pasado al cuartel general del clan Oshii.\n\nHaruko Muroi\nAyudante del administrador" + IDS_INTEL_25004 "Expediente de UNITY: Ninjas@Cate,\n\nA pesar de que la información sobre el clan ninja en Inotakimura es escasa, hemos conseguido averiguar los siguientes detalles:\n\n- Los ninjas son entrenados para atacar a larga distancia asestando poderosos golpes contra sus enemigos.\n\n- Pueden utilizar bombas de humo para desvanecerse, y aparecen al lado de sus objetivos para atacarlos por sorpresa.\n\nEspero que esta información le sirva de ayuda. Cuídese.\n\nBruno Lawrie\nAgente operativo senior\nUNITY División de operaciones especiales" + IDS_INTEL_25005 "Memorándum de UNITY: Objetivos adicionales@Agente Archer,\n\nEn ocasiones tendrás la oportunidad de aumentar tus puntos de habilidad realizando misiones adicionales. Abre bien los ojos y busca objetos de inteligencia como notas, maletines o cartas.\n\nAquí tienes un sencillo objetivo opcional para practicar: He repartido seis páginas del manual de campo de UNITY por todo el área. Encuéntralas antes de continuar.\n\nSanta,\nDirector de Artilugios\nDivisión de creación de juguetes de UNITY" + IDS_INTEL_25006 "Manual de UNITY: Búsqueda@BÚSQUEDA\n\nLos enemigos a menudo llevan objetos valiosos como munición, armadura, botiquines, o documentos importantes, por tanto asegúrate de registrarlos meticulosamente presionando el botón de Acción hasta que la barra de progreso desaparezca. Si quieres, puedes arrastrar a tus víctimas hacia las sombras antes de registrarlos para no llamar la atención.\n\nTambién puedes buscar en archivadores y en montones de papel para conseguir pistas y objetos útiles. Es normal que mientras buscas, logres objetivos adicionales." + IDS_INTEL_25007 "Manual de UNITY: Enemigos inconscientes@ENEMIGOS INCONSCIENTES\n\nLos enemigos que están inconscientes porque han sido atacados, por ejemplo, con un tazer o gas somnífero acaban por despertarse. También pueden ser reanimados por sus camaradas.\n\nPuedes desarmar a enemigos inconscientes al registrarles, eliminando así la amenaza a menos que obtengan un arma de repuesto." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25008 "Manual de UNITY: Botón de Acción@BOTÓN DE ACCIÓN\n\nCuando selecciones un objeto o personaje podrás interactuar con ellos, aparecerá un texto en el centro de la pantalla para indicarte lo que ocurrirá si pulsas el botón de Acción (tecla predeterminada: botón derecho del ratón). Si el texto aparece gris no podrás interactuar con el objeto a menos que cumplas algún requisito. Por ejemplo, quizás debas desbloquear una puerta o utilizar un objeto necesario del inventario.\n\nEl botón de Acción recargará el arma que lleves (siempre que se pueda recargar) si no estás apuntando a nada." + IDS_INTEL_25009 "Manual de UNITY: Ocultarse@OCULTARSE\n\nCuando entres en un lugar en el que te puedas esconder, aparecerá el icono Escondite en la parte inferior de tu pantalla. Si permaneces quieto, te ocultarás momentáneamente, hasta el punto de que los enemigos no te podrán ver, a menos que se dirijan directamente hacia tu posición. Podrás permanecer oculto mientras no te muevas del escondite ni te muevas bruscamente o dispares un arma.\n\nSi no puedes esconderte porque un enemigo te ha localizado y sabe donde estás el icono aparecerá tachado." + IDS_INTEL_25010 "Manual de UNITY: Artículos de inteligencia@ARTÍCULOS DE INTELIGENCIA\n\nAsegúrate de buscar en todos sitios documentos importantes. Es posible que algunos contengan información vital para la misión. Otros pueden darte puntos de habilidad.\n\nPuedes ver los documentos recogidos en cualquier momento accediendo a la pantalla Inteligencia (tecla de acceso rápida predeterminada: I)." + IDS_INTEL_25011 "Manual de UNITY: Cómo abandonar una zona 1@CÓMO ABANDONAR UNA ZONA, PARTE 1\n\nCuando veas el icono Puerta, significa que te aproximas al final de una zona. Muévete hacia delante para salir, pero sólo si has terminado de explorarla." + IDS_INTEL_25012 "Manual de UNITY: Regalos@Agente Archer,\n\nSiempre que sea posible, me encargaré de dejar equipamiento útil o munición en el campo. Estos suministros están envueltos con papel de aluminio, como éste.\n\nLas monedas que encontrarás en este paquete valen más de lo que parecen, pueden lanzarse para distraer al enemigo. Puedes alejar a tus enemigos de sus puestos si las lanzas desde una esquina o dentro de un callejón.\n\nSanta" + IDS_INTEL_25013 "Recordatorio: Estado de la Mision@PANTALLA DE MISIÓN\n\nConsulta la pantalla de Misión (tecla de acceso rápido predeterminada: Tab) para obtener información acerca de tu misión actual. Aquí encontrarás tus objetivos actuales, los cuales deberás ir completando por orden a medida que lleves a cabo tu misión. Los objetivos opcionales (tareas secundarias que puedes realizar para conseguir puntos de habilidad adicionales) también aparecen aquí, junto con los parámetros, que son pautas o normas de conducta. No ajustarse a estos parámetros puede causar la pérdida de puntos de habilidad o que la misión resulte fallida." + IDS_INTEL_25014 "Manual de UNITY: Pantalla de equipamiento@PANTALLA DE EQUIPAMIENTO\n\nRecuerda que puedes consultar la pantalla de Equipamiento siempre que adquieras nuevas armas, artilugios o munición (tecla de acceso rápido predeterminada: M) en cualquier momento para obtener información. Utilizando esta pantalla podrás seleccionar equipamiento y munición o funciones de los dispositivos mientras el juego está en pausa." + IDS_INTEL_25015 "Recordatorio: Puntos de habilidad@PUNTOS DE HABILIDAD\n\nSerás recompensado con puntos de habilidad por salvar ciertos obstáculos o realizar objetivos específicos. Accede a la pantalla Jugador (tecla de acceso rápido predeterminada: P) para usar estos puntos y mejorar tus habilidades. Piensa cuidadosamente cómo vas a invertir tus puntos." + IDS_INTEL_25016 "Recordatorio: Neutralizar enemigos@NEUTRALIZAR ENEMIGOS\n\nPuedes despachar a tus enemigos sigilosamente usando armas silenciosas como el tazer, la ballesta o la pistola con silenciador. Si los enemigos se percatan de tu presencia, gritarán mientras les atacas y llamarán la atención." + IDS_INTEL_25017 "Recordatorio: Mover cuerpos@MOVER CUERPOS\n\n Los enemigos darán la voz de alarma si ven a un camarada tirado, así que puedes utilizar mover cuerpos (tecla predeterminada: G) para cargar adversarios fuera de combate y dejarlos en algún lugar fuera del camino. No podrás correr o utilizar un arma mientras estés cargando con el cuerpo, así que calcula tus movimientos cuidadosamente." + IDS_INTEL_25018 "Recordatorio: Disturbios@DISTURBIOS\n\nLos enemigos pueden escuchar los mismos sonidos que tú, por tanto aprende a moverte cuidadosamente. Si pasas sigilosamente no harás ruido (tecla predeterminada : Mayúsculas izquierda). Además, ciertos materiales (como hierba, alfombras o nieve) pueden amortiguar tus pisadas mientras que otros (como metales o baldosas de cerámica) amplifican el sonido.\n\nTambién, si te chocas con una campanilla o golpeas una botella puede causar un disturbio, así que vigila tus pasos." + IDS_INTEL_25019 "Recordatorio: Inclinarse@INCLINARSE\n\nAsómate en las esquinas (teclas predeterminadas: Q y E) para ver lo que ocurre más adelante. No estés mucho tiempo o tus enemigos pueden acercarse a investigar." + IDS_INTEL_25020 "" + IDS_INTEL_25021 "Manual de la UNITY: Brújula@BRÚJULA\n\nAdemás de mantenerte orientado en tu entorno, tu brújula puede suministrarte información valiosa. El icono del objetivo te guiará hacia lugares fundamentales para realizar tu misión. También podrás ver ocasionalmente una X, que indicará los puntos de tu ruta y otros lugares importantes." + IDS_INTEL_25022 "Memorándum del clan ninja: Cate Archer@ATENCIÓN TODOS LOS MIEMBROS DEL CLAN\n\nTened cuidado con la agente de UNITY, Cate Archer. Está armada y es considerada como extremadamente peligrosa. Informad de cualquier novedad a Takashi-san en cuánto tengáis oportunidad.\n\nHaruko Muroi\nAyudante del administrador" + IDS_INTEL_25023 "Manual de UNITY: Dificultad@NIVELES DE DIFICULTAD\n\nTen en cuenta que puedes ajustar la dificultad de tu misión en cualquier momento, accediendo al menú Opciones, seleccionando Juego y eligiendo el nivel que quieras. Los niveles de dificultad afectan fundamentalmente a la cantidad de daño que te causarán los enemigos, por tanto si te desanimas o no te supone un importante desafío, inténtalo modificando el nivel de dificultad que estimes oportuno." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4750 "" + IDS_KEY_DESC_4751 "Un destornillador de cabeza plana oxidado." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4752 "Una bombilla de 60 vatios." + IDS_KEY_DESC_4753 "Una pila AA mugrienta. Parece que está descargada." + IDS_KEY_DESC_4754 "Una pila AA nueva resplandeciente." + IDS_KEY_DESC_4755 "Un maletín para dárselo a Hatori-san." + IDS_KEY_DESC_4756 "Puedes utilizar este combustible para la moto de nieve." + IDS_KEY_DESC_4757 "Este fusible parece estar en buen estado." + IDS_KEY_DESC_4758 "Un llavero corriente con varias llaves diferentes." + IDS_KEY_DESC_4759 "Una bobina de hilo de cobre para trabajos eléctricos." + IDS_KEY_DESC_4760 "Una llave inglesa para maquinaria pesada. Me servirá cuando las manos no sean suficiente." + IDS_KEY_DESC_4761 "Un pomo de puerta suelto. Me vendrá bien cuando tenga que reemplazar alguno que falte o esté estropeado." + IDS_KEY_DESC_4762 "El pulsador de un timbre." + IDS_KEY_DESC_4763 "Un cubo vacío. Parece albergar capacidad para bastante agua." + IDS_KEY_DESC_4764 "La llave de un grifo de agua." + IDS_KEY_DESC_4765 "Manual de instrucciones del ordenador v1.0. Contiene una lista de los procedimientos de entrada del Súper ordenador." + IDS_KEY_DESC_4766 "Este formulario de solicitud 207-B ha sido rellenado para conseguir el manual del Súper ordenador." + IDS_KEY_DESC_4767 "Suplemento del manual de instrucciones del ordenador 2.0. Contiene una lista de los procedimientos de entrada del Súper ordenador." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4512 "Pulsador de timbre" + IDS_KEY_ITEM_4513 "Cubo" + IDS_KEY_ITEM_4514 "Llave de grifo" + IDS_KEY_ITEM_4515 "Manual Súper Ordenador v1.0" + IDS_KEY_ITEM_4516 "Formulario de solicitud 207-B" + IDS_KEY_ITEM_4517 "Suplemento v2.0 Súper Ordenador" + IDS_KEY_ITEM_4518 "Identificación de D.A.Ñ.O." + IDS_KEY_ITEM_4519 "Tubo elevador de vacío del ordenador" + IDS_KEY_ITEM_4520 "Una bolsa de azúcar" + IDS_KEY_ITEM_4521 "Dispositivo de puenteo del ordenador" + IDS_KEY_ITEM_4522 "Contraseña de M-9: Piroshki" + IDS_KEY_ITEM_4523 "Cinta 689 de M-9: proyecto Omega" + IDS_KEY_ITEM_4524 "Rupias" + IDS_KEY_ITEM_4525 "Llaves de moto de nieve" + IDS_KEY_ITEM_4526 "UNIDAD DE PROCESAMIENTO DE DATOS M-9" + IDS_KEY_ITEM_4527 "Código de seguridad M-9." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5500 "" + IDS_COOP_MISSION_OBJ_5501 + "Localizar a Balaji Malpani y fotografiarle. Su apartamento debería ser un buen lugar para empezar." + IDS_COOP_MISSION_OBJ_5502 + "Dirígete al punto de encuentro en la cafetería cerca del apartamento de Balaji." + IDS_COOP_MISSION_OBJ_5503 + "Reúnete con tu equipo en la cabaña de UNITY y en el cuartel general de radio para recibir instrucciones finales." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5504 + "Hazte con el ordenador, infiltrándote en las instalaciones y colocando 4 explosivos." + IDS_COOP_MISSION_OBJ_5505 "objetivos restantes." + IDS_COOP_MISSION_OBJ_5506 "objetivos restantes." + IDS_COOP_MISSION_OBJ_5507 "objetivo restante." + IDS_COOP_MISSION_OBJ_5508 + "Reúne información adicional sobre el proyecto Súper Soldado." + IDS_COOP_MISSION_OBJ_5509 + "Vuelve a la cabaña de UNITY y en el cuartel general de la radio para la extracción." + IDS_COOP_MISSION_OBJ_5510 + "Localizar a Cate. Su última posición conocida es cerca de la cascada a las afueras del pueblo." + IDS_COOP_MISSION_OBJ_5511 "Vuelve al punto de encuentro con Cate." + IDS_COOP_MISSION_OBJ_5512 + "Encuentra el generador y restablece la electricidad de todas las puertas y entradas de la zona." + IDS_COOP_MISSION_OBJ_5513 + "Busca un juego de llaves adicional o quizás una ganzúa para entrar en el apartamento de Balaj." + IDS_COOP_MISSION_OBJ_5514 + "Busca una buena posición estratégica desde donde fotografiar a Balaji en el apartamento de su amante." + IDS_COOP_MISSION_OBJ_5515 "" + IDS_COOP_MISSION_OBJ_5516 "Localizar y rescatar a Armstrong." + IDS_COOP_MISSION_OBJ_5517 + "Encuentra información sobre a dónde lleva D.A.Ñ.O. a Armstrong." + IDS_COOP_MISSION_OBJ_5518 + "Busca un objetivo adecuado y coloca 6 explosivos." + IDS_COOP_MISSION_OBJ_5519 + "Busca un objetivo adecuado y coloca 5 explosivos." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25024 "Manual de UNITYl: Guardar@GUARDAR\n\nRecuerda ir guardando tus progresos a menudo, bien utilizando la opción Guardar en el menú Sistema o bien utilizando la tecla predeterminada de guardado rápido (F6). Ten en cuenta que tus progresos se irán guardando automáticamente cuando entres en una nueva zona, por tanto tienes la opción de reiniciar el nivel si lo consideras necesario." + IDS_INTEL_25025 "Manual de UNITY: Distracción@DISTRACCIÓN\n\nUna de las formas más eficaces para pasar desapercibido ante los agentes enemigos consiste en distraerlos. Por ejemplo, puedes lanzar una moneda a un pasillo oscuro para alejar a los guardias de sus puestos. Si el truco no llama su atención, el sonido característico de perder el cambio sobre el suelo seguro que surtirá efecto. Si no tienes una moneda, siempre puedes improvisar con tu ballesta. Procura no ser muy escandaloso o alarmarás a tus enemigos." + IDS_INTEL_25026 "Memo del clan ninja: Cambiar reunión@¡IMPORTANTE! ¡LEER ATENTAMENTE!\n\nPor petición del Director, se ha cambiado el lugar de encuentro de esta noche, será la casa principal. Asegúrense de consultar con el esquema de puestos de guardia antes de acudir a su trabajo para minimizar la confusión. Si van a estar patrullando una zona desconocida, asegúrense de localizar la ubicación de los aseos.\n\nHaruko Muroi\nAyudante del administrador" + IDS_INTEL_25027 "UNUSED" + IDS_INTEL_25028 "UNUSED" + IDS_INTEL_25029 "UNUSED" + IDS_INTEL_25030 "MAPA: Finca@" + IDS_INTEL_25031 "Nota de Hatori-san: Instrucciones@Agente Archer, le he dejado instrucciones sobre cómo y cuándo ponerse en contacto conmigo. Por razones de seguridad, he colocado cuatro notas codificadas en el vecindario, cada una con una parte del mensaje. De esta forma, si una de las notas es interceptada y descodificada, mi seguridad no se verá comprometida.\n\nTambién te he dejado un regalo junto a una máquina expendedora.\n\nIsamu Hatori" + IDS_INTEL_25032 "Nota de Hatori-san: Cita@Te veré en la tienda de caramelos de la parte oeste del vecindario. Busca la señal de grúa cerca de una máquina expendedora." + IDS_INTEL_25033 "Nota de Hatori-san: Buzón rojo@Hay tres buzones frente a la tienda de caramelos. Tienes que colocarlos correctamente para que me señalen.\n\nEl buzón rojo debe estar abierto." + IDS_INTEL_25034 "Nota de Hatori-san: Buzón gris@Hay tres buzones enfrente de la tienda de caramelos. Debes colocarlos de una forma específica para hacerme una señal.\n\nEl buzón gris debe estar cerrado." + IDS_INTEL_25035 "Nota de Hatori-san: Buzón azul@Hay tres buzones frente a la tienda de caramelos. Tienes que colocarlos correctamente para que me señalen.\n\nEl buzón azul debe estar abierto." + IDS_INTEL_25036 "Memorándum del clan ninja: Quejas@A todos los miembros del clan:\n\nHa llegado a mis oídos que algunos estáis insatisfechos con nuestro trabajo actual. Sé que no es muy agradable trabajar para el Director pero recordad que Isako-san tiene con él una deuda de honor. Dejad de lado vuestros prejuicios personales por el bien de nuestro clan.\n\nSi teneis problemas para vivir con vuestro resentimiento, Obaba estará disponible para aconsejaros en cuanto termine su último veneno.\n\nMikiko Shena\nAgente moral" + IDS_INTEL_25037 "Nota: Entrega del maletín@Agente Archer\n\nPor favor, entregue este maletín a Hatori-san lo antes posible. Contiene información sobre su nueva misión.\n\nSanta" + IDS_INTEL_25038 "UNUSED" + IDS_INTEL_25039 "Manual del espía@MANUAL DE ENTRENAMIENTO DE ESPÍAS" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25040 "" + IDS_INTEL_25041 "Carta de Isako: Página 1@Para: Hideko Sato\nDe: Isako, Jefe del clan ninja Katakuri\n\nAgradezco mucho tu interés, pero no puedo aceptar tu generosa oferta. Como sabes, tengo una deuda de honor con el director. Seguramente no podría echarme a un lado y permitir que le asesinen, incluso aunque su muerte me liberase. Traicionaría mi conciencia." + IDS_INTEL_25042 "Carta de Isako: Página 2@Quizás si comprendieras las circunstancias que rodean mi obligación, apreciarías mi razonamiento. Al poco tiempo del asesinato de mis padres, fui recogido por una anciana mientras vagabundeaba por las calles de Kyoto. Su delicada salud la impedía hacerse cargo de mí, pero ella convenció a su hija, entonces jefa del clan ninja Sakuragaoka para acogerme y entrenarme." + IDS_INTEL_25043 "Carta de Isako: Página 3@Cuando cumplí 14, fui enviado a mi primera misión: asesinar a un mercader glotón el cual había estado robando a chicas de sus familias para explotarlas como prostitutas en su sucio juego. Era una tarea simple, pero fui capturado antes de que pudiera matarlo, faltando a todos los hombres que habían pagado para que lo asesinara. Nos había engañado para poder jugármela y ganarse el favor de su señor." + IDS_INTEL_25044 "Carta de Isako: Página 4@Antes de que el comerciante pudiese matarme, su amigo europeo intervino, pidiendo que me salvase la vida para trabajar para él. El comerciante estaba de acuerdo, y el Director, que es quien era, pasó a ser mi nuevo señor. Así que, verás que por mucho que me pese, le debo la vida a este hombre y debo pagar su generosidad, aunque tuviese un fin egoísta. Pero te agradezco humildemente tu consideración.\n\nIsako" + IDS_INTEL_25045 "Manual de espía@MANUAL DE ENTRENAMIENTO DE ESPÍA" + IDS_INTEL_25046 "Nota de Hatori-san: Disculpas@Agente Archer,\n\nDebido a un aumento en la actividad ninja, ya no puedo quedarme en la zona. Vuelva al punte donde Yamata-san la espera.\n\nTEnga mucho cuidado. Nunca había visto al clan trabajar así. \n\nIsamu Hatori" + IDS_INTEL_25047 "Memorándum de UNITY: Hablar con la gente@Agente Archer\n\nHable siempre con gente identificada como amigos para ver si tienen información o consejos útiles. Quizás tengas que dirigirte a ellos varias veces hasta que tengan algo que decirte.\n\nSanta" + IDS_INTEL_25048 "Carta: El Director@Estimado Sr. Jones,\n\nHe reunido información sobre este misterioso caballero inglés. Según nuestros informadores locales, adquirió la finca Fujioka hace más de diez años. Se dice que su razón para venir a Japón es la distancia de Inglaterra, aunque parece que nadie sabe por qué eso es tan importante para él. Investigaré más a fondo. \n\nIsamu Hatori" + IDS_INTEL_25049 "Carta: Cumpleaños de Isako@Isako,\n\nMe doy cuenta de que no he sido el mejor mentor que podrías haber tenido y que me sirves más por el sentido de la obligación que tienes que por lealtad. No puedo decir que te eche la culpa. De la misma manera, espero que puedas entender la importancia que tienes para mí.\n\nEl honor y la competencia son escasos entre los arrogantes, seguidores de la ley hipócritas que he jurado aterrorizar. En nuestra industria, no hay nadie así.\n\nFeliz cumpleaños.\n\nThe Director" + IDS_INTEL_25050 "Nota: Isako y el Director@Honorable ayudante del administrador,\n\nAnoche estaba de guardia en la casa principal. Estaba patrullando el tejado cuando oí risas venir de una ventana abierta. El Director estaba en medio de la habitación explicando a sus invitados a cenar los juegos manipulativos que debe jugar para aplacar a su leal sirviente ninja. Dijo que como un perro, Isako agradece mucho las demostraciones de calor paternal ocasionales. ¡DEBE decírselo! Este hombre es intolerable.\n\nMasayo" + IDS_INTEL_25051 "Nota: Marcas de tiza@Agente Archer:\n\nHatori-san nos ha informado que ha visto a un ninja haciendo marcas con tiza frente a tres edificios de esta zona. Suponemos que estas marcas son señales para que sus agentes depositen información o artículos de valor. \n\nLocalice y borre esas marcas de forma que podamos redirigir la entrega a los sitios que nosotros elijamos.\n\nSanta" + IDS_INTEL_25052 "Nota: Paciencia@Masayo-san\n\nEntindo y comparto tu frustración pero debemos tener paciencia. El sentido del honor de Isako-san es muy profundo. Así que será imposible convencerla de que lo olvide. Sé de lo que hablo. Algún día él se destapará ante ella. Lo único que puedo hacer es asegurarme de que él tenga siempre suficiente sake a mano para que se le suelte la lengua.\n\nHaruko Muroi\nAyudante del administrador" + IDS_INTEL_25053 "Nota de Hatori-san: Cuidado@Agente Archer,\n\nCuando llegue a la zona del objetivo y tenga cuidado de no hacer demasiado ruido. Si causa mucho alboroto, perderá la oportunidad de fotografiar al Director. Sería una pena perder la oportunidad de obtener puntos de habilidad como recompensa por ser descuidada.\n\nIsamu Hatori" + IDS_INTEL_25054 "Memorándum de UNITY: Lanzador de utilidades@Agente Archer,\n\nEl lanzador de utilidades CT-180 es una de las herramientas más versátiles. Su munición predeterminada es un dispositivo de rastreo diminuto que marcará la posición del objetivo en su brújula. El dardo es tan ligero que los enemigos no notarán que les alcanza.\n\nSanta" + IDS_INTEL_25055 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25056 "UNUSED" + IDS_INTEL_25057 "UNUSED" + IDS_INTEL_25058 "UNUSED" + IDS_INTEL_25059 "UNUSED" + IDS_INTEL_25060 "" + IDS_INTEL_25061 "Memorándum del clan ninja: Alerta@Todos los miembros del clan deben mantenerse alerta. ¡La espía está suelta! Establezcan controles de carreteras por las entradas del este y del sur.\n\n¡No dejen que escape!\n\nHaruko Muroi\nAyudante del administrador" + IDS_INTEL_25062 "Memorándum del clan ninja: La espía@ATENCIÓN A TODOS LOS MIEMBROS DEL CLAN\n\nQuiero que la espía muera de forma honorable y rápida. El Director y sus esbirros sin alma no deben obtener ninguna satisfacción de su muerte.\n\nIsako" + IDS_INTEL_25063 "Nota: Emiko, llegas tarde@Emiko,\n\n¿Dónde estás? Ha sonado la alarma y todo el mundo tiene que presentarse en la finca. ¡Si recibes esta nota, apresúrate antes de que Isako-san advierta que no estás!\n\nYukiko" + IDS_INTEL_25064 "Manual del espía@MANUAL DE ENTRENAMIENTO DE ESPÍAS" + IDS_INTEL_25065 "Memorándum del clan ninja: Cate Archer@ATENCIÓN A TODOS LOS MIEMBROS DEL CLAN\n\nEl objeto de la operación de esta noche es Cate Archer, Súper Espía británica. No la infravaloren.\n\nOh, y asegúrense de que sufre.\n\nEl Director" + IDS_INTEL_25066 "UNUSED" + IDS_INTEL_25067 "UNUSED" + IDS_INTEL_25068 "UNUSED" + IDS_INTEL_25069 "" + IDS_INTEL_25070 "Memorándum del clan ninja: Lectura de poesía punitiva@ATENCIÓN A TODOS LOS MIEMBROS DEL CLAN\n\nEl Director ha indicado que si la espías escapa, todo el clan será sometido a recitar poesía punitiva de la colección de su madre, que incluye su épico, " + IDS_INTEL_25071 "Memorándum del clan ninja: Cancelación de la fiesta@ATENCIÓN A TODOS LOS MIEMBROS DEL CLAN\n\nDebido a la emergencia de esta noche, pospondremos la fiesta de cumpleaños de Mikiko-san a mañana por la noche.\n\nHaruko Muroi\nAyudante del administrador" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25072 "UNUSED" + IDS_INTEL_25073 "UNUSED" + IDS_INTEL_25074 "UNUSED" + IDS_INTEL_25075 "UNUSED" + IDS_INTEL_25076 "UNUSED" + IDS_INTEL_25077 "UNUSED" + IDS_INTEL_25078 "UNUSED" + IDS_INTEL_25079 "UNUSED" + IDS_INTEL_25080 "" + IDS_INTEL_25081 "Manual de UNITY: Abandonar la zona 2@CÓMO ABANDONAR UNA ZONA, PARTE 2\n\nAparecerá un icono de puerta con una flecha de doble sentido que indica que puedes volver a esta zona si te vas. A veces, puedes tener que volver para pasar obstáculos o cumplir algunos objetivos." + IDS_INTEL_25082 "MAPA: Terreno de la base@" + IDS_INTEL_25083 "Memorándum soviético: Ahogados@Para: Todo el personal\nDe: Recursos humanos\nLa productividad de nuestra gran instalación ha disminuido debido a que los camaradas Zymlyanoi y Alexey aparecieron ahogados la semana pasada. Se suspenden las patrullas en el lago helado hasta nueva orden.\n\nEstáis siendo observados." + IDS_INTEL_25084 "UNUSED" + IDS_INTEL_25085 "Memorándum de UNITY: Welder@Agente Archer,\n\nHe añadido algo nuevo a tu laca. Úsalo para abrir algunos candados y bisagras. Buena suerte.\nSanta" + IDS_INTEL_25086 "Burocracia soviética: Cigarrillos@Para: Todo el personal\n\nEl Anexo 90/C-4 de la guía de higiene personal y gimnasia (volumen 7, página 3,483) estipula una ración diaria de 18 cigarrillos por soldado. Superar esta cantidad se castigará con la pena de muerte, salvo que los cigarrillos hayan sido robados (en cuyo caso se castigará con tortura y posterior pena de muerte) o regalados por un camarada (se castigará con tortura pero no será ejecutado). Si no se alcanza la cuota de 18 cigarrillos será punible con la pena de muerte.\n\nEstáis siendo observados." + IDS_INTEL_25087 "Memorándum UNITY: Instrucciones de la misión@Agent Archer\n\nNuestro servicio de inteligencia indica que entrar en las instalaciones resulta mucho más sencillo que salir. Por lo tanto, tu primer objetivo será sabotear las comunicaciones enemigas y el suministro de energía.\n\nTambién, deberás colocar cargas en el puente cerca de tu actual posición para detonarlas cuando regreses. Al destruir el puente, evitarás cualquier riesgo de una posible persecución.\n\nHe marcado la posición de una cabaña de cazadores en la que te hemos dejado algunas provisiones, incluyendo un rifle de francotirador que debería serte muy útil.\n\nSanta." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25088 "Memorándum de UNITY: Lanzador de utilidades@Agente Archer,\n\nHe incluido un lanzador de utilidades CT-180 estandar con 10 dardos tranquilizantes reutilizables. Cada dardo deposita un potente sedante que dejará inconsciente al objetivo inmediatamente. Ten en cuenta que los enemigos inconscientes terminarán despertándose.\n\nPuedes utilizar la tecla de cambio de munición (tecla predeterminada: F) para desplazarte entre la munición tranquilizante y la de rastreo. Recuerda que también puedes ir a la pantalla Equipamiento para cambiar la munición mientras la partida está en pausa.\n\nSanta" + IDS_INTEL_25089 "UNUSED" + IDS_INTEL_25090 "UNUSED" + IDS_INTEL_25091 "UNUSED" + IDS_INTEL_25092 "UNUSED" + IDS_INTEL_25093 "UNUSED" + IDS_INTEL_25094 "UNUSED" + IDS_INTEL_25095 "UNUSED" + IDS_INTEL_25096 "UNUSED" + IDS_INTEL_25097 "UNUSED" + IDS_INTEL_25098 "UNUSED" + IDS_INTEL_25099 "UNUSED" + IDS_INTEL_25100 "" + IDS_INTEL_25101 "Memorándum de UNITY: Cabaña de cazadores@Agente Archer,\n\nPor favor encuentre los suministros que nuestros agentes han dejado.\n\nCuando hayas completado tus objetivos, vuelve aquí y comunícate con el cuartel general. Tendrás que esperar a que anochezca antes de entrar en el complejo militar.\n\nSanta" + IDS_INTEL_25102 "UNUSED" + IDS_INTEL_25103 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25104 "UNUSED" + IDS_INTEL_25105 "UNUSED" + IDS_INTEL_25106 "UNUSED" + IDS_INTEL_25107 "UNUSED" + IDS_INTEL_25108 "UNUSED" + IDS_INTEL_25109 "UNUSED" + IDS_INTEL_25110 "UNUSED" + IDS_INTEL_25111 "UNUSED" + IDS_INTEL_25112 "UNUSED" + IDS_INTEL_25113 "UNUSED" + IDS_INTEL_25114 "UNUSED" + IDS_INTEL_25115 "UNUSED" + IDS_INTEL_25116 "UNUSED" + IDS_INTEL_25117 "UNUSED" + IDS_INTEL_25118 "UNUSED" + IDS_INTEL_25119 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25120 "" + IDS_INTEL_25121 "Burocracia soviética: Consumo de café@Para: Todo el personal\n\nEl apéndice 90/C-4 del manual sobre higiene personal y gimnasia (volumen 12, página 4) especifica que cualquier soldado no puede consumir ni más ni menos de 9 tazas de café al día. Todo aquel que sea sorprendido diluyendo su café en agua o cualquier otro líquido recibirá un disparo de inmediato. El que sea sorprendido echando su café a las plantas, será ejecutado mediante inyección letal. Darle el café a un perro, será castigado cumpliendo obligaciones en el edificio de registros principal.\n\nEstáis siendo observados" + IDS_INTEL_25122 "Memorándum soviético: Solicitud de acceso M-9@Teniente Guniko,\n\nLe escribo para solicitar acceso a la zona de la unidad de procesamiento de datos M-9 en el edifico principal del registro. Me han vuelto a asignar al proyecto: Omega, pero no puedo hacer mi trabajo sin los permisos pertinentes. Ya he solicitado este permiso en varias ocasiones pero me lo han denegado porque no tengo acceso a la zona M-9. No sé qué hacer.\n\nRespetuosamente,\nCabo Butsenko" + IDS_INTEL_25123 "Memorándum soviético: Acceso a M-9 denegado@Cabo Butsenko,\n\nMe temo que no puedo aprobar su petición de acceso a la zona de la unidad de procesamiento de datos M-9. A pesar de que me doy cuenta de la dificultad de sus circumstancias, no tengo la autoridad para darle acceso de alta seguridad a nadie que no tenga ya acceso a la zona de la unidad de procesamiento de datos M-9. Una vez que haya obtenido la autorización necesaria, puedo proporcionarle la autorización necesaria. Espero que esta información sea clara.\n\nTeniente Guniko" + IDS_INTEL_25124 "UNUSED" + IDS_INTEL_25125 "UNUSED" + IDS_INTEL_25126 "UNUSED" + IDS_INTEL_25127 "Documento: Informe de preparación, parte I@Informe sobre la preparación del ejército soviético\n\nParte I. Información de fondo\n\nEste informe has sido preparado de acuerdo con los deseos del general Nikolai Zhukov, que es un general muy bueno y uno de mis héroes personales. ¿Sabían que el general Zhukov fue condecorado como veterano de la Gran Guerra Patriótica? ¡Es verdad! Además es un gran botánico con un interés especial en plantas cruciformes, que a mí también me gustan mucho. Especialente los cardos." + IDS_INTEL_25128 "UNUSED" + IDS_INTEL_25129 "UNUSED" + IDS_INTEL_25130 "Burocracia soviética: Solicitud de combustible@FORMULARIO DE SOLICITUD J-9:\n\n1. Artículo(s) solicitado(s): combustible para vehículos, 10 barriles. \n2. Razón de la solicitud: suministro incorrecto. \n3. Al hacer esta solicitud, ¿está insinuando que la Unión Soviética no satisface sus necesidades? ( ) Sí (X) No" + IDS_INTEL_25131 "UNUSED" + IDS_INTEL_25132 "UNUSED" + IDS_INTEL_25133 "UNUSED" + IDS_INTEL_25134 "UNUSED" + IDS_INTEL_25135 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25136 "UNUSED" + IDS_INTEL_25137 "UNUSED" + IDS_INTEL_25138 "UNUSED" + IDS_INTEL_25139 "UNUSED" + IDS_INTEL_25140 "" + IDS_INTEL_25141 "Informe soviético: BLINDSIDE@Para: General Zhukov\nDe: KLAUS\n\nBLINDSIDE está procediendo según lo acordado. Todas nuestras operaciones ilustradas contra el adversario principal, ninguno ha sido nunca tan cabezota y ambicioso, nunca había asegurado la victoria de la Unión Soviética y la humillación total de nuestros enemigos. Volveré a informar cuando me haya puesto en contacto con SR. BIG y hayamos diseñado nuestra propuesta. Estoy seguro de que será receptivo a nuestra generosa oferta." + IDS_INTEL_25142 "Informe soviético: BLINDSIDE ahogado@Para: General Zhukov\nDe: KLAUS\n\nBLINDSIDE está muerto en el agua. Sospecho de traición ya que he intentado contactar con el SR. BIG en varias ocasiones sin éxito. El principal adversario debe haberse enterado de nuestras intenciones de reclutar al presidente Johnson, lo cual explica por qué no puedo conseguir una entrevista con él. Estoy seguro de que una entrevista de sólo cinco minutos sería suficiente para que se uniese a nuestra causa, pero los norteamericanos son muy hábiles. No se fie de nadie." + IDS_INTEL_25143 "Manual de entrenamiento de espías@MANUAL DE ENTRENAMIENTO DE ESPÍAS" + IDS_INTEL_25144 "UNUSED" + IDS_INTEL_25145 "UNUSED" + IDS_INTEL_25146 "Documento: Informe de preparación, parte II@INforme sobre la preparación militar soviética\n\nParte II. Conclusiones\n\nTal y como ya se ha indicado, el general Zhukov es un individuo muy admirable cuyos numerosos logros proporcionan un excelente ejemplo a seguir por los soviéticos. Le gusta hacer esquí campo a traviesa, la música folk soviética y las tardes románticas a la orilla del lago Baikal junto a cualquiera de sus numerosas amantes, incluyendo su mujer, Nadia. En conclusión, creo que está claro que el ejército militar está bendecido con un líder cuya sabiduría proporciona toda la preparación que nos pueda hacer falta." + IDS_INTEL_25147 "Memorándum soviético: Sabotaje@INFORME DE ALTO SECRETO ANTI-SABOTAJE\n\nCamarada Karpov,\n\nTras inspeccionar la instalación, concluiría que la única amenaza seria de sabotaje a la que se enfrenta podría surgir de una carga de demolición que está situada dentro del panel de acceso que se encuentra entre los dos generadores principales. Obviamente, la probabilidad de que un decadente espía capitalista descubra y aproveche esta oportunidad es casi inexistente.\n\nNo hace casi falta que mencione que este informe debe mantenerse bajo llave.\n\nCabo Butsenko" + IDS_INTEL_25148 "UNUSED" + IDS_INTEL_25149 "UNUSED" + IDS_INTEL_25150 "UNUSED" + IDS_INTEL_25151 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25152 "UNUSED" + IDS_INTEL_25153 "UNUSED" + IDS_INTEL_25154 "UNUSED" + IDS_INTEL_25155 "UNUSED" + IDS_INTEL_25156 "UNUSED" + IDS_INTEL_25157 "UNUSED" + IDS_INTEL_25158 "UNUSED" + IDS_INTEL_25159 "UNUSED" + IDS_INTEL_25160 "" + IDS_INTEL_25161 "Burocracia soviética: Solicitud de acceso a M-9@SOLICITUD DE ACCESO A LA UNIDAD DE PROCESAMIENTO DE DATOS M-9\n\n1. Razón de la solicitud: informe de progresos del cuarto trimestre para el general Zhukov sobre el proyecto Omega\n2. Plazo de entrega ( ) tres meses, ( ) seis meses, ( ) el año que viene, (x) otro: máxima prioridad del general Zhukov\n3.Si ha señalado otra, debe proporcionar el nombre de tres familiares por si fuese denegada y se considerasen necesarias ejecuciones: Oleg Andropov, Sergei Osipov, Lena Osipov." + IDS_INTEL_25162 "Carta: Visita de Anya@Querido Sergei,\n\nGracias por tu tierna carta. Por supuesto que te perdono. Entiendo que estabas borracho. Además, las cicatrices casi no se notan.\n\n¡No puedo creer que me hayas conseguido tres pares de vaqueros! Te echo tanto de menos. ¡Necesito vernos ya! ¿Estás seguro de que son de mi talla? Oh, cómo necesito verte. ¡Estoy tan emocionada! ¡Cómo he soñado con los vaqueros!\n\nAnya" + IDS_INTEL_25163 "Carta: Confirmación de Anya@Querido Sergei,\n\n¿Cómo puedes siquiera pensar una cosa así, mi amor? Estoy emocionada por los vaqueros, por supuesto, pero es a TI a quien quiero ver. No soy el tipo de mujer que mantenga rencor contra un hombre solo porque le haya partido una botella de vodka en la cabeza sin razón alguna. Pienso que los días que pasé en el hospital fueron unas vacaciones necesarias. Y el médico dice que las secuelas no me durarán mucho. ¿No te emociona la idea de verme en vaqueros norteamericanos?\n\nAnya" + IDS_INTEL_25164 "Carta: Perdón de Anya@Sergei, mi amor,\n\nNo puedo esperar a verte. Es estupendo que hayas pensado en dejar la puerta de atrás abierta pero estoy preocupada por alambrada de seguridad electrificada del exterior. Recuerda lo que le ocurrió a la mujer de Yuri el verano pasado. Aunque el nuevo corte de pelo le va bien. Mi hermano me contó que podrías echar un poco de azúcar en el tanque de combustible del generador de la alambrada de seguridad ya que depende de un circuito diferente. Solía estar destinado ahí.\n\nAnya" + IDS_INTEL_25165 "MAPA: Complejo soviético@" + IDS_INTEL_25166 "Memorándum de UNITY: Sabotaje@Agente Archer,\n\nEl depósito de combustible que suministra la base está situado en el jardín de fuera cerca de tu posición actual. Su sabotaje tiene dos propósitos. El primero, crear una distracción bastante dramática para ayudar a tu salida de la base. Segundo, detendrá las operaciones de la base hasta su reparación, lo cual beneficiará nuestras futuras misiones encubiertas cerca. El temporizador de este explosivo está establecido para que explote durante tu huida.." + IDS_INTEL_25167 "Receta de sopa@Sopa rusa de repollo: medio kilo de solomillo asado, un repollo mediano rallado, una cebolla grande, dos cucharaditas de vinagre, un diente de ajo, dos cucharaditas de azúcar.\n\n En una olla grande, cubrir todos los ingredientes con agua fría. Dejar reposar durante 1 hora. Hervir durante 3 horas." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25168 "Nota: No más repollos@¡Se acabó la sopa de col! ¿Has pasado cerca de las letrinas? ¡Ten piedad de tus camaradas!" + IDS_INTEL_25169 "Burocracia soviética: Solicitud de repollos@FORMULARIO DE SOLICITUD R-4/2:\n\n1. Artículo(s) solicitado(s): \n (x) repollos, ( ) remolacha, ( ) patatas, ( ) rábanos\n2. Cantidad: 400 unidades\n3. Fecha de entrega preferente: (X) una semana, ( ) un mes, ( ) un año, ( ) no importa" + IDS_INTEL_25170 "UNUSED" + IDS_INTEL_25171 "UNUSED" + IDS_INTEL_25172 "UNUSED" + IDS_INTEL_25173 "UNUSED" + IDS_INTEL_25174 "UNUSED" + IDS_INTEL_25175 "UNUSED" + IDS_INTEL_25176 "UNUSED" + IDS_INTEL_25177 "UNUSED" + IDS_INTEL_25178 "UNUSED" + IDS_INTEL_25179 "UNUSED" + IDS_INTEL_25180 "" + IDS_INTEL_25181 "Nota: Paquete extraño@Teniente Pupkin,\n\nHe encontrado este extraño paquete mientras patrullaba cerca del muro sur. Su envoltorio brillante y atractivo parece obra de los capitalistas. Espero su sabio juicio para decidir qué hacer con él.\n\nSargento Kominski" + IDS_INTEL_25182 "Antes de que ni siquiera PIENSES en meter azúcar en este tanque de combustible para que tu bomboncito pueda pasar la alambrada sin electrocutarse, recuerda lo que le ocurrió a Sergei Putkin, cuya concienzuda amiga, Anya, me ofrecía la mañana siguiente una confesión bañada en lágrimas de cómo él había saboteado el generador para colarla dentro del complejo sigilosamente. Acuérdate de los gusanos que corren por los cobarde y poco patriotas huesos de ese hombre.\n\nTe están observando." + IDS_INTEL_25183 "Burocracia soviética: Formulario de pedido@FORMULARIO DE PEDIDO J-9\n\n1. Artículo(s) solicitado(s): papel higiénico, 1 rollo.\n2. Razón de la petición: suministro incorrecto.\n3. Punto de entrega preferido: \n ( ) Moscú, (X) Petrogrado,\n ( ) Bucarest, ( ) Miami Beach\n4. Fecha de entrega preferente: \n ( ) una semana, ( ) un mes, ( ) un año, \n ( ) me temo que responda lo que responda no afectará al momento de la entrega." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25184 "Burocracia soviética: Desestimación@FORMULARIO DE DESESTIMACIÓN R-27\n\nLa solicitud de papel higiénico mediante formulario de pedido J-9 ha sido rechazada. No se especificó la prioridad de la entrega." + IDS_INTEL_25185 "Burocracia soviética: Formulario@FORMULARIO DE NUEVA SOLICITUD J-9-17b APÉNDICE\n\n4. Según la página 137 de las instrucciones para cumplimentar el formulario de pedido J-9: " + IDS_INTEL_25186 "Burocracia soviética: Sanción por Embriaguez@FORMULARIO DE ACCIÓN DISCIPLINARIA B-21-K\n\n1. Causa de la sanción: embriaguez durante el servicio\n2. Número de personas a castigar: ( ) menos de 5, (x) de 5 a 10, ( ) más de 10\n3. Castigo solicitado: (x) Fusilamiento, ( ) Muerte por asfixia." + IDS_INTEL_25187 "Memorándum soviético: Apéndice G-9@Para: Recursos Humanos\nDe: Teniente Petrakow\n\nDe acuerdo con el apéndice G-9 revisado de las normas operacionales soviéticas, que ofrece dos nuevas alternativas punitivas voluntarias para la falta de cumplimiento de las obligaciones (concretamente, muerte ante el pelotón de fusilamiento o muerte por asfixia), prepárese para aumentar las peticiones de pelotones y asfixias." + IDS_INTEL_25188 "Manual de UNITY: Cámaras de seguridad@CÁMARAS DE SEGURIDAD\n\nSi una cámara de seguridad te localiza sonará una alarma, atraerá refuerzos para registrar la zona. La cámara tardará un momento en enfocarte e identificarte como una amenaza, así que aprende a agacharte para retirarte del alcance de la misma en cuanto oigas el sonido mecánico de la lente moviéndose. Puesto que las cámaras son controladas remotamente, destruirlas hará saltar la alarma pero puedes utilizar la munición especial desactivadora de cámaras con el lanzador de utilidades CT-180 para dejarlas inoperativas." + IDS_INTEL_25189 "Memorándum de UNITY: Desactivador de cámaras@Agente Archer,\n\nEspero que este paquete le llegue seguro. Lo he enviado por unos medios bastante poco convencionales. \n\nEn el mismo encontrará un lanzador de utilidades CT-180 con munición de desactivadores de cámaras. Estos dispositivos se pegan a la cámara, capturan las imágenes de su monitor y proyectan imágenes a la lente de la cámara. Cualquiera que esté controlando el sistema de seguridad creerá que está viendo secuencias reales.\n\nSanta" + IDS_INTEL_25190 "UNUSED" + IDS_INTEL_25191 "UNUSED" + IDS_INTEL_25192 "UNUSED" + IDS_INTEL_25193 "UNUSED" + IDS_INTEL_25194 "UNUSED" + IDS_INTEL_25195 "UNUSED" + IDS_INTEL_25196 "Nota: Prohibido fumar@NO ESTÁ PERMITIDO FUMAR EN ESTA ZONA.\n\nSe disparará al infractor." + IDS_INTEL_25197 "UNUSED" + IDS_INTEL_25198 "Receta de arenque en su piel@Receta de mamá calabaza de arenques en su piel:\n\nUn arenque, 3 patatas hervidas, 1 remolacha hervida, 6 cebollinos, 1 jarra de aceitunas negras en aceite, 2 huevos duros, en rodajas.\n\nCorta el arenque en trocitos de un centímetro y medio. Pela las patatas y la remolacha y córtalos en tacos de un centímetro. Corta los cebollinos en trozos de medio centímetro. Esparce el arenque en el fondo de una fuente, cúbrelo con los cebollinos, después las patatas y la remolacha. Cubrir con mahonesa y decorar con las aceitunas y las láminas de huevo. Servir frío." + IDS_INTEL_25199 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25200 "" + IDS_INTEL_25201 "Nota: Azúcar@ATENCIÓN\n\nHasta nueva orden, el azúcar estará guardada bajo llave para evitar que se repita el sabotaje del generador del sábado pasado. Para pedir azúcar, rellenen un formulario con su oficial al mando." + IDS_INTEL_25202 "Nota: Bonificación de sopa de repollo@ATENCIÓN A TODO EL PERSONAL: como recompensa por la caída de 2 puntos en la mortalidad accidental o semi-accidental en esta instalación, todos los soldados recibirán una ración de bonificación de sopa de repollo ¡cada noche de esta semana! ¡Sigan así y pronto tendrán toda la sopa de repollo que puedan comerse!\n\nGeneral Zhukov" + IDS_INTEL_25203 "UNUSED" + IDS_INTEL_25204 "UNUSED" + IDS_INTEL_25205 "UNUSED" + IDS_INTEL_25206 "UNUSED" + IDS_INTEL_25207 "UNUSED" + IDS_INTEL_25208 "UNUSED" + IDS_INTEL_25209 "UNUSED" + IDS_INTEL_25210 "UNUSED" + IDS_INTEL_25211 "Combinación de caja fuerte@Teniente Petrakov,\n\nHe sido enviado a Moscú para participar en un tribunal especial que juzga a ciudadanos poco patriotas de los puestos del gobierno. He dejado el documento de " + IDS_INTEL_25212 "Carta de Oleg@Mis compañeros conspiradores,\n\nLa hora de la revolución se acerca. He hecho los preparativos necesarios. En menos de una semana, los tres estaremos libres de cadenas de la tiranía y habremos dado un ejemplo a los rusos que ansían la liberación como nosotros.\n\nOleg Dorofeev" + IDS_INTEL_25213 "Carta de Sergei@Mis hermanos de conspiración,\n\nLa revolución realmente está casi encima. Casi puedo sentir el dulce viento de la libertad sobre mi piel. La espera es una prisión. Me siento encerrado, ansioso, atrapado por este miserable uniforme y por todo lo que representa.\n\nSergei Romanov" + IDS_INTEL_25214 "Carta de Yuri@Mis compañeros revolucionarios,\n\nAcabo de ver el parte meteorológico. Se acerca un frente frío desde el norte. A pesar de que como vosotros dos ansío la liberación, quizás podríamos postponer la revolución hasta que mejore el tiempo. Correr desnudos por complejo en medio de una tormenta suena más a locura que a insurrección.\n\nYuri Prokofiev" + IDS_INTEL_25215 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25216 "" + IDS_INTEL_25217 "" + IDS_INTEL_25218 "" + IDS_INTEL_25219 "" + IDS_INTEL_25220 "" + IDS_INTEL_25221 "Memorándum soviético: Proyecto Omega@Para: Teniente Pupkin\nDe: Oficina del general Zhukov's\n\nEl general solicita que realice un estudio de viabilidad del proyecto Omega en menos de 10 días. Por favor, consiga un formulario para acceder al M-9 en la oficina de formularios." + IDS_INTEL_25222 "Memorándum soviético: Proyecto Omega@Para: Teniente Petrakov\nDe: Coronel Pupkin\n\nEvo, ¿qué opinas de este proyecto Omega del general? Se me ha encomendado hacer un estudio de viabilidad del M-9 la semana que viene. Mi instinto me dice que no vale la pena. ¡Déjales que se acerquen al decadente occidente!" + IDS_INTEL_25223 "Burocracia soviética: Solicitud M-9@SOLICITUD DE ACCESO AL CENTRO DE PROCESAMIENTO DE DATOS M-9\n\n1. Razón de la solicitud: cese mensual de empleados\n2. Plazo de entrega: ( ) tres meses, ( ) seis meses, ( ) el año que viene, (x) otro: máxima prioridad del general Zhukov\n3. En caso de señalar otra, indique el nombre de tres familiares en previsión de que la solicitud sea denegada y se estime necesario realizar ejecuciones: Zenia Yakov, Eduard Stepanov, Igor Stepanov" + IDS_INTEL_25224 "Carta: Proyecto Ojos abiertos@Laboratorio Pupkov, Petropavlovsk-Kamchatsky\n\nProyecto Ojos abiertos -Resultados finales-: Las ventajas de los estimulantes son claras. El grupo A recibió 18 cigarrillos y 9 tazas de café diarias. El grupo B, no. Tras 15 años, se concluyó que el grupo A dormía un 15 por ciento menos. Aunque es cierto que la mortalidad del grupo A era un 87 por ciento superior, estas cifras nos parecen aceptables para aumentar la producción y reducir la pérdida de productividad a causa de la edad." + IDS_INTEL_25225 "Fotografía: Dmitrij Volkov@" + IDS_INTEL_25226 "UNUSED" + IDS_INTEL_25227 "UNUSED" + IDS_INTEL_25228 "UNUSED" + IDS_INTEL_25229 "Plano: Sótano del edificio de registro@" + IDS_INTEL_25230 "UNUSED" + IDS_INTEL_25231 "Fotografía: General Zhukov@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25232 "UNUSED" + IDS_INTEL_25233 "UNUSED" + IDS_INTEL_25234 "UNUSED" + IDS_INTEL_25235 "UNUSED" + IDS_INTEL_25236 "UNUSED" + IDS_INTEL_25237 "UNUSED" + IDS_INTEL_25238 "UNUSED" + IDS_INTEL_25239 "UNUSED" + IDS_INTEL_25240 "" + IDS_INTEL_25241 "Comunicado soviético: El Director@Para: Comandante Pim\nDe: General Nikolai Zhukov\n\nPor favor, informe a su ilustre Director de que como comunista orgulloso que soy, soy inmune a su capitalismo coercitivo. Incluso un líder tan visionario como yo no se involucra en asuntos que podrían poner en peligro la estabilidad global. Agradezco su voluntad de enviar representativos del servicio para ofrecer seminarios a mi personal, pero supongo que no estoy tan endeudado como para firmar un contrato sin evaluar completamente el servicio que estoy adquiriendo." + IDS_INTEL_25242 "Burocracia soviética: Reparación de aseos@FORMULARIO DE REPARACIÓN 19a\n\n1. Reparación solicitada: Tapar un agujero en el aseo femenino.\n2. Razón de la solicitud: Los encantos de nuestras mujeres rusas distraen a nuestros hombres de su tarea.\n3. Visto bueno: Sargento Egor." + IDS_INTEL_25243 "Burocracia soviética: Reparación de aseos denegada@FORMULARIO DE DESESTIMACIÓN R-27\n\n1. La solicitud para reparar el aseo femenino de las nuevas instalaciones del registro ha sido denegada.\n\nFirmado: General Nikolai Zhukov" + IDS_INTEL_25244 "Memorándum soviético: Planes de EE.UU.@Para: General Zhukov\nDe: Vladimir Kryuchkov\n\nEspero que esté sentado, camarada. Anoche me llegaron noticias de ANATOLI, nuestro hombre en Palm Beach. Es el chico de granja que enviamos desde Kamchatka para que se infiltrase en los altos niveles del Pentágono, lo cual ha hecho con bastante rapidez considerando su poco dominio del inglés. Tal y como nos temíamos, el adversario principal tiene grandes planes para Khios. Consulten el informe adjunto." + IDS_INTEL_25245 "Informe soviético: Khios 1@PLANES DE EE.UU. PARA KHIOS\nParte I.\n\nComo todos sabemos, EE.UU. ha estado desarrollando un proyecto para lanzar un primer ataque nuclear encubierto contra la Unión Soviética colocando cabezas nucleares a tiburones tigre y enviándolos hasta el río Dnieper de Moscow desde el Mar Negro. Han creado un aparato especial para los tiburones que les permite sobrevivir en el agua dulce. Esto bien, ANATOLI nos informa de que este proyecto está parado para preparar la invasión norteamericana de Khios." + IDS_INTEL_25246 "Informe soviético: Khios 2@PLANES DE EE.UU. PARA KHIOS\nParte II.\n\nLos objetivos del adversario principal están claros: conquistar Khios militarmente y realizar experimentos científicos altamente inmorales en la población civil, y reemplazar las escuelas de la isla con hospitales con restaurantes de comida rápida y complejos hoteleros en un esfuerzo por explotar los recursos naturales preciosos de Khios." + IDS_INTEL_25247 "Cuenta de gastos: ANATOLI@RESUMEN DE CUENTA DE GASTOS\nNombre en código del agente de operaciones: ANATOLI\nUbicación: Palm Beach, Florida\nGastos totales: 573.000 dólares norteamericanos\n\nLista desglosada de elementos adquiridos:\n -Apartamento junto a la playa (para crear la leyenda del agente)\n -Chevrolet Corvette Stingray (transporte)\n -Yate de 10 metros de eslora (por si tengo que escapar de los EE.UU.)\n -Gastos diarios (elementos básicos como la comida, servicios, cuentas de bares, entradas de conciertos, prostitutas, etc.)" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25248 "Memorándum soviético: proyecto: Omega@Para: Director de D.A.Ñ.O.\nDe: General Nikolai Zhukov\n\nCon respecto al proyecto ése que llaman Omega, necesitamos aclarar unos cuantos puntos antes de enviar la declaración de intenciones. Primero, estamos buscando una solución que no sólo sea haga posible nuestra anexión a Khios, sino también defenderla una vez que alcancemos nuestro objetivo máximo: construir el primer hotel de cinco estrellas comunista y un casino al norte de la isla. ¿El proyecto: Omega puede ayudarnos a conseguir este objetivo?" + IDS_INTEL_25249 "Plano: 1er piso del edificio de registro@" + IDS_INTEL_25250 "Plano: 2º piso del edificio de registro@" + IDS_INTEL_25251 "Nota: Máquina expendedora@Camaradas, no se dejen engañar por esta máquina. Mientras la llenaba ayer, encontré pruebas de una elaborada conspiración para engañar a los honestos ciudadanos soviéticos y quedarse con sus rublos. Estas máquinas expendedoras no contienen refrescos de la CCCP. Son máquinas vacías con grandes cajones para las monedas y un pequeño altavoz que hace ruidos mecánicos. ¡No se fíende nadie!\n\nMikhail" + IDS_INTEL_25252 "Informe: Frailecillo@FRATERCULA CIRRHATA.El frailecillo con penacho recibe su nombre de la prominente pluma de color amarillo pálido que surge detrás de los ojos del ave. Los ojos son de un extraordinario color amarillo con un anillo rojo brillante que los rodea. El frailecillo es una criatura monógama que se empareja para toda la vida. La pareja se turna en sus tareas: mientras uno cuida de su descendencia en la madriguera, el otro pesca durante todo el día para toda la familia." + IDS_INTEL_25253 "Informe: Águila marina@HALIAECTUS SPELLAGICUS. Un águila marina de Steller casi nunca caza sola. Comienza el día espiando a otras aves de presa de menor tamaño, como cuervos, a las que sigue hasta sus nidos. Desde aquí, el águila " + IDS_INTEL_25254 "Informe: Oso pardo@URSUS ARCTOS. El oso pardo es vegetariano durante la mayor parte de la primavera, pero pasa el verano y el otoño alimentándose de salmón y preparándose para su larga siesta invernal. Un oso adulto puede perder hasta 160 kilos durante el invierno que deberá recuperar antes de la siguiente estación fría." + IDS_INTEL_25255 "Informe: Focal@CALLORHINUS URSINUS\n\nLa foca del norte es un mamífero fascinante. Las manadas de machos son los primeros en llegar en Mayo o Junio para establecer sus territorios en áreas como las islas Pribilof. Los machos son extemadamente territorialistas acerca de sus harenes, y son capaces de violentas batallas y llamadas personalizadas para reclamar su propiedad y demostrar su poder. " + IDS_INTEL_25256 "Memorándum soviético: Encuesta en Kamchatka@Para: Oficina del general Zhukov\nDe: Cabo Pupkiin\nReverenciado líder: la gloriosa encuesta popular del área de Kamchatka ha sido completada. Podemos comenzar el traslado de estos animales iniciar el camino de la construcción de diez gloriosas nuevas fábricas planeadas para esta región, de las que cada una de ellas fabricará equipo de fábrica para que podamos construir más fábricas. ¡Esperamos un incremento enorme de la productividad!" + IDS_INTEL_25257 "Memorándum de UNITY: el General Zhukov@Agent Archer,\n\ndebería llevarte al General Nikolai Zhukov, considéralo como un objetivo de oportunidad. Es un antiguo NKVD. Estuvo involucrado en la ubicación del pueblo checheno en Asia central en el '44. Tiene relación con varios crímenes contra la humanidad, incluyendo una masacre especialmente espeluznante. Queremos liquidarlo.\n\nSanta" + IDS_INTEL_25258 "UNUSED" + IDS_INTEL_25259 "UNUSED" + IDS_INTEL_25260 "" + IDS_INTEL_25261 "Nota: Informe de espías@ATENCIÓN\n\nSe ha visto en la zona a un espía capitalista. La persona que lo capture recibirá una ración adicional de sopa de repollo. Los que NO participen en la captura tendrán que realizar tareas de limpieza de letrinas." + IDS_INTEL_25262 "UNUSED" + IDS_INTEL_25263 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25264 "UNUSED" + IDS_INTEL_25265 "UNUSED" + IDS_INTEL_25266 "UNUSED" + IDS_INTEL_25267 "UNUSED" + IDS_INTEL_25268 "UNUSED" + IDS_INTEL_25269 "UNUSED" + IDS_INTEL_25270 "UNUSED" + IDS_INTEL_25271 "UNUSED" + IDS_INTEL_25272 "UNUSED" + IDS_INTEL_25273 "UNUSED" + IDS_INTEL_25274 "UNUSED" + IDS_INTEL_25275 "UNUSED" + IDS_INTEL_25276 "UNUSED" + IDS_INTEL_25277 "UNUSED" + IDS_INTEL_25278 "UNUSED" + IDS_INTEL_25279 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25280 "" + IDS_INTEL_25281 "Memorándum soviético: Recientes explosiones@Para: División de mantenimiento\nDe: Sargento Butsenko\nHe advertido reiteradamente sobre los peligros de almacenar combustible en espacios abiertos. La reciente serie de explosiones confirma mis advertencias. Sugiero que se establezca un comité de combustible para tratar esta situación." + IDS_INTEL_25282 "UNUSED" + IDS_INTEL_25283 "UNUSED" + IDS_INTEL_25284 "UNUSED" + IDS_INTEL_25285 "UNUSED" + IDS_INTEL_25286 "UNUSED" + IDS_INTEL_25287 "UNUSED" + IDS_INTEL_25288 "UNUSED" + IDS_INTEL_25289 "UNUSED" + IDS_INTEL_25290 "UNUSED" + IDS_INTEL_25291 "UNUSED" + IDS_INTEL_25292 "UNUSED" + IDS_INTEL_25293 "UNUSED" + IDS_INTEL_25294 "UNUSED" + IDS_INTEL_25295 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25296 "UNUSED" + IDS_INTEL_25297 "UNUSED" + IDS_INTEL_25298 "UNUSED" + IDS_INTEL_25299 "UNUSED" + IDS_INTEL_25300 "" + IDS_INTEL_25301 "Nota: Espías aún sueltos@¡Estoy descorazonado porque todavía nadie haya capturado a la espía capitalista por la gloria de la Madre Rusia! Si no atrapan a esta espía antes de la mañana, el personal responsable recibirá ejecuciones punitivas.\n\nColonel Pupkin" + IDS_INTEL_25302 "UNUSED" + IDS_INTEL_25303 "UNUSED" + IDS_INTEL_25304 "UNUSED" + IDS_INTEL_25305 "UNUSED" + IDS_INTEL_25306 "UNUSED" + IDS_INTEL_25307 "UNUSED" + IDS_INTEL_25308 "UNUSED" + IDS_INTEL_25309 "UNUSED" + IDS_INTEL_25310 "UNUSED" + IDS_INTEL_25311 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25312 "UNUSED" + IDS_INTEL_25313 "UNUSED" + IDS_INTEL_25314 "UNUSED" + IDS_INTEL_25315 "UNUSED" + IDS_INTEL_25316 "UNUSED" + IDS_INTEL_25317 "UNUSED" + IDS_INTEL_25318 "UNUSED" + IDS_INTEL_25319 "UNUSED" + IDS_INTEL_25320 "" + IDS_INTEL_25321 "UNUSED" + IDS_INTEL_25322 "UNUSED" + IDS_INTEL_25323 "UNUSED" + IDS_INTEL_25324 "UNUSED" + IDS_INTEL_25325 "UNUSED" + IDS_INTEL_25326 "UNUSED" + IDS_INTEL_25327 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25328 "UNUSED" + IDS_INTEL_25329 "UNUSED" + IDS_INTEL_25330 "UNUSED" + IDS_INTEL_25331 "UNUSED" + IDS_INTEL_25332 "UNUSED" + IDS_INTEL_25333 "UNUSED" + IDS_INTEL_25334 "UNUSED" + IDS_INTEL_25335 "UNUSED" + IDS_INTEL_25336 "UNUSED" + IDS_INTEL_25337 "UNUSED" + IDS_INTEL_25338 "UNUSED" + IDS_INTEL_25339 "UNUSED" + IDS_INTEL_25340 "" + IDS_INTEL_25341 "Carta: Querida madre@Querida madre,\n\n¿Cómo estás? Ha pasado mucho tiempo, ¿verdad? ¿Qué tal Cincinnati? Ahora soy un importante piloto. Hoy he volado a Siberia en una misión secreta. El trabajo es peligroso pero me pagan bien. Te llegan los cheques, ¿verdad? Eso me hace feliz.\n\nTe quiere,\nMisha" + IDS_INTEL_25342 "UNUSED" + IDS_INTEL_25343 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25344 "UNUSED" + IDS_INTEL_25345 "UNUSED" + IDS_INTEL_25346 "UNUSED" + IDS_INTEL_25347 "UNUSED" + IDS_INTEL_25348 "UNUSED" + IDS_INTEL_25349 "UNUSED" + IDS_INTEL_25350 "UNUSED" + IDS_INTEL_25351 "UNUSED" + IDS_INTEL_25352 "UNUSED" + IDS_INTEL_25353 "UNUSED" + IDS_INTEL_25354 "UNUSED" + IDS_INTEL_25355 "UNUSED" + IDS_INTEL_25356 "UNUSED" + IDS_INTEL_25357 "UNUSED" + IDS_INTEL_25358 "UNUSED" + IDS_INTEL_25359 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25360 "" + IDS_INTEL_25361 "Carta: Entrenamiento de Blitzny@28 de febrero de 1967\n\nSr. Blitzny (o tal vez debería decir Sr. Goodman),\n\n Es imprescindible que su entrenamiento haya finalizado a comienzos de junio. Se ha presentado una oportunidad sublime en Amsterdam.\n\nSaludos,\nSr. X" + IDS_INTEL_25362 "Copia: Problemas con las chicas@Copia\n\n6 de marzo de 1967\n\nSr. X:\n\nSigo teniendo problemas con las chicas. Me resulta muy difícil sentirme como un Súper Espía cuando las chicas ni siquiera quieren hablar conmigo. En las películas, los espías siempre consiguen muchas mujeres. La situación está afectando mi moral. A este paso, no creo que pueda estar preparado en junio.\n\nUrgentemente,\nMelvin Blitzny\nalias Tom Goodman." + IDS_INTEL_25363 "Carta: Retraso inaceptable\0019 de marzo de 1967\n\nSr. Blitzny, \n\nLos retrasos son inaceptables. Usted ESTARÁ preparado para asumir la identidad de Tom Goodman según lo previsto. Necesito que entre en UNITY lo antes posible. Espero haberme expresado con claridad\n\nSaludos,\nSr. Smith" + IDS_INTEL_25364 "Copia: ¡No me presione!@Copia\n\n20 de marzo de 1967\n\nSr. X (o debería decir Smith),\n\nEstoy harto de oír hablar de sus plazos. Si hay algo que aprendí vendiendo aspiradores es que no se puede actuar bajo presión. Estaré preparado cuando lo esté, ni un minuto antes. Métaselo en su cabezota.\n\nSaludos,\nTom Goodman" + IDS_INTEL_25365 "Carta: Estúpido remilgado@29 de marzo de 1967\n\nEscúcheme, estúpido remilgado, Estoy hasta el gorro de su postura. Tal vez no aprecie la gravedad de la situación, así que permítame expresarlo en términos que su pueril intelecto pueda comprender. Le están observando. Constantemente. Si se aparta del plan trazado desaparecerá sin dejar rastro. Me encargaré personalmente de que su eliminación sea lo más dolorosa y prolongada posible.\n\nSmith" + IDS_INTEL_25366 "Carta sin enviar: Váyase al infierno@Original no enviado\n\n29 de marzo de 1967\n\nSr. Mariquita:\n\n¿Por qué no se va al infierno, estúpido idiota? ¡Le odio! ¡Le odio! ¡Le odio!\n\nMuérase,\nGoodman" + IDS_INTEL_25367 "Memorándum de D.A.Ñ.O.@El siguiente material es alto secreto y está destinado exclusivamente al personal de D.A.Ñ.O.\n\nPara: Todo el personal de D.A.Ñ.O.\\De: Anoop Banerjee\nFecha: 2 de septiembre de 1967\nAsunto: Proyecto Omega\nA partir de noviembre, D.A.Ñ.O. comenzará a preparar el prototipo de una nueva arma secreta con el nombre clave de: proyecto Omega. Buscamos un Director con experiencia y muy organizado para dirigir este proyecto. Si usted o alguien que conozca está interesado en trabajar con nuestro equipo de investigación y desarrollo, pónganse en contacto conmigo mediante correo interno en la oficina principal de Calcuta." + IDS_INTEL_25368 "Factura de aspiradores@FACTURA 2306a\n\nPara: Sr. Melvin Blitzny\nDe: Empresa de aspiradores Lucy Suck, Walla Walla, Washington\n\nPedido de 260 aspiradores Lucky Suck tipo B con boquilla desmontable y cabezal giratorio." + IDS_INTEL_25369 "Comunicado de D.A.Ñ.O.: Magnus Armstrong@Para: Melvin Blitzny/Tom Goodman\nDe: Dmitrij Volkov\n\nInformarán a Oslo, Suecia, el 4 de abril de 1967, para orientación y acondicionamiento mental de D.A.Ñ.O. Uno de mis socios, Magnus Armstrong, les recogerá en el aeropuerto. No es difícil de reconocer. Sus características más distintivas incluyen una barba pelirroja, una falda (que lleva puesta haga el tiempo que haga), y un penetrante aroma a whisky escocés. Hagan lo que les indique.\n\nBienvenidos a D.A.Ñ.O." + IDS_INTEL_25370 "" + IDS_INTEL_25371 "" + IDS_INTEL_25372 "" + IDS_INTEL_25373 "" + IDS_INTEL_25374 "" + IDS_INTEL_25375 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25376 "" + IDS_INTEL_25377 "" + IDS_INTEL_25378 "" + IDS_INTEL_25379 "" + IDS_INTEL_25380 "" + IDS_INTEL_25381 "Carta: Carta de despedida@Querida Loni,\n\nTe dejo por tu mejor amiga, Jill. ¡Nunca me diste lo que merecí! No te maquillabas, engordaste 15 kilos desde la boda y estabas más de una semana sin lavar los platos. ¿Me culparás por dejarte?\nTu ex-marido, Kevin" + IDS_INTEL_25382 "Carta de Farley Fertility@FARLEY FERTILITY\n\nPara: Sra. Loni Hickney\nLos resultados de nuestras pruebas indican que el niño no corresponde biológicamente al Sr. Hickey. Gracias por elegir Farley Fertility para satisfacer sus necesidades.¡Buena suerte para encontrar al padre! " + IDS_INTEL_25383 "Carta: Steve o Dwayne@Betty:\n\n¿Qué voy a hacer? El hijo no es de Kevin. Al menos, esto reduce las posibilidades a Steve o Dwayne. ¿Crees que debería decírselo?\n\nLoni" + IDS_INTEL_25384 "" + IDS_INTEL_25385 "" + IDS_INTEL_25386 "" + IDS_INTEL_25387 "" + IDS_INTEL_25388 "" + IDS_INTEL_25389 "" + IDS_INTEL_25390 "" + IDS_INTEL_25391 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25392 "" + IDS_INTEL_25393 "" + IDS_INTEL_25394 "" + IDS_INTEL_25395 "" + IDS_INTEL_25396 "" + IDS_INTEL_25397 "" + IDS_INTEL_25398 "" + IDS_INTEL_25399 "" + IDS_INTEL_25400 "" + IDS_INTEL_25401 "Anuncio de casa móvil@¡VENTAJAS DE UNA CASA MÓVIL!\n\n¿Cansado de ver lo mismo año tras año? ¡Una casa móvil puede ser la respuesta!" + IDS_INTEL_25402 "Carta: Préstamo denegado@Estimado Sr. Hickey,\n\nSu solicitud de un préstamo para adquirir una casa móvil ha sido desestimada debido a su reciente quiebra financiera.\n\nFirmado: Sr. Soso\nPrimer banco de Stucky" + IDS_INTEL_25403 "" + IDS_INTEL_25404 "" + IDS_INTEL_25405 "" + IDS_INTEL_25406 "" + IDS_INTEL_25407 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25408 "" + IDS_INTEL_25409 "" + IDS_INTEL_25410 "" + IDS_INTEL_25411 "" + IDS_INTEL_25412 "" + IDS_INTEL_25413 "" + IDS_INTEL_25414 "" + IDS_INTEL_25415 "" + IDS_INTEL_25416 "" + IDS_INTEL_25417 "" + IDS_INTEL_25418 "" + IDS_INTEL_25419 "" + IDS_INTEL_25420 "" + IDS_INTEL_25421 "" + IDS_INTEL_25422 "" + IDS_INTEL_25423 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25424 "" + IDS_INTEL_25425 "" + IDS_INTEL_25426 "" + IDS_INTEL_25427 "" + IDS_INTEL_25428 "" + IDS_INTEL_25429 "" + IDS_INTEL_25430 "" + IDS_INTEL_25431 "" + IDS_INTEL_25432 "" + IDS_INTEL_25433 "" + IDS_INTEL_25434 "" + IDS_INTEL_25435 "" + IDS_INTEL_25436 "" + IDS_INTEL_25437 "" + IDS_INTEL_25438 "" + IDS_INTEL_25439 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25440 "" + IDS_INTEL_25441 "Fotografía: Kamal Khubchandani@" + IDS_INTEL_25442 "Carta: Chantaje a Kamal@Estimado Kamal,\n\n¿Cómo estás? Yo estoy bien. Como puedes ver en esta estupenda fotografía, amigo mío, sabemos que has estado pasando información secreta a UNITY. Si no nos pagas 5.000 rupias antes del martes que viene, tendremos que hacerle una visita a tu jefe, Anoop Banerjee, que quizás esté interesado en comprarlas.\n\nAlianza Maligna" + IDS_INTEL_25443 "Contraseña de D.A.Ñ.O.@Para: Todo el personal de D.A.Ñ.O.\n\nLa contraseña de hoy es Mulligatawny, pero mi instinto me dice que el jefe seguramente la cambiará a la típica " + IDS_INTEL_25444 "Carta: Encontrar la contraseña de D.A.Ñ.O.@Agente Archer,\n\nPara poder acceder al cuartel general de D.A.Ñ.O. de la India tendrás que localizar a Balaji Malpani, la mano derecha de Anoop Banerjee. Él es el responsable de la obtención y distribución de las contraseñas diarias. Puedes eliminarlo o utilizar este dispositivo de grabación para escuchar la llamada que haga a Banerjee esta tarde.\n\nBalaji tiene una habitación en el hotel Cliente Feliz. Coloca el micrófono en el teléfono de su apartamento, escóndete hasta que acabe la conversación y después, activa el micro para escuchar la conversación completa.\n\nBuena suerte,\nKamal" + IDS_INTEL_25445 "Fotografía: Balaji Malpani@ " + IDS_INTEL_25446 "Carta: chantaje de Kamal@Agente Archer,\n\nUna banda de matones de Alianza Maligna ha descubierto que estoy pasando información secreta a UNITY. Hasta que sean detenidos no puedo dejar que se me vea. He oído que su escondite se encuentra en esta zona de la ciudad. A ver si los puedes sacar de circulación y recuperar las pruebas del chantaje.\n\n¡Que el Señor Shiva te proteja!\nKamal" + IDS_INTEL_25447 "MAPA: Vecindario@" + IDS_INTEL_25448 "Carta: Banda Angaraka@Para: Estudio 4 de Alianza Maligna\nDe: Kumar\n\nAmigos míos, el contrato está casi firmado. ¡Dentro de poco podremos despedirnos de Alianza Maligna y ponernos manos a la obra con nuestro primer proyecto, la banda Angaraka!\n\n(¡No debe distribuirse fuera del Estudio 4!)" + IDS_INTEL_25449 "Carta: Banda Angaraka@Para: Kumar\nDe: Ganesh,\n\n¿Qué? ¿Cuándo hemos cambiado de nombre? No puedo creerlo. ¿La banda Angaraka? Todo el mundo pensará que sufro una horrible enfermedad cutánea. ¿Quién es el responsable de esta idiotez? Nadie recordará que Angaraka es también un amuleto para liberar a la gente de sus deudas.\n\nEsperemos no ser demasiado inteligentes por nuestro bien, amigo mío." + IDS_INTEL_25450 "UNUSED" + IDS_INTEL_25451 "" + IDS_INTEL_25452 "" + IDS_INTEL_25453 "" + IDS_INTEL_25454 "" + IDS_INTEL_25455 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25456 "" + IDS_INTEL_25457 "" + IDS_INTEL_25458 "" + IDS_INTEL_25459 "" + IDS_INTEL_25460 "" + IDS_INTEL_25461 "Nota: Ventanas mal cerradas@ATENCIÓN A TODOS LOS EMPLEADOS\n\nLas personas sin autorización no podrán estar en el patio exterior. Si vuelvo a encontrar las ventanas mal cerradas, ¡que el Señor Vishnu proteja al responsable de mi ira!\n\nPresidente" + IDS_INTEL_25462 "Nota: Factura de la ventana impagada@Para: Erin Keyes, Control de gastos de D.A.Ñ.O.\nDe: Nanda Devi Limpiacristales\n\nSrta. Keyes, nuestros informes muestran un balance pendiente de 47 rupias por servicios prestados. Hemos intentado hablar de este tema con el Sr. Banerjee de su oficina de la central de la India, pero no coopera. Por favor, haga efectivo el balance pendiente dentro de 30 días o ensuciaremos sus cristales con caca de mono como venganza." + IDS_INTEL_25463 "Memorándum de D.A.Ñ.O.: Limpieza de ventanas@Para: Anoop Banerjee\nDe: Erin Keyes, Control de gastos de D.A.Ñ.O.\n\nSr. Banerjee, he recibido una queja de Limpiacristales Nanda Devi sobre nuestra factura de limpiacristales. Resuelva este asunto por las vías habituales." + IDS_INTEL_25464 "Memorándum de D.A.Ñ.O.: Ventanas@Para: Limpiacristales Nanda Devi\nDe: Sr. Banerjee\n\n¿A ustedes les parece que estas ventanas están limpias? Los maldigo a todos, a sus madres, a sus hermanas y a sus perros. Les envío a un representante para que se ocupe del pago pendiente. Adiós." + IDS_INTEL_25465 "Nota: Corrección en cuenta@Para: Anoop Banerjee\nCc: Erin Keyes, Control de cuentas de D.A.Ñ.O.\nDe: Limpiacristales Nanda Devi\n\nSr. Banerjee, ¡debemos pedirle disculpas efusivamente! De hecho, parece que el balance pendiente era un error de la oficina por nuestra parte. ¡Qué idiota por nuestra parte! ¡Realmente sentimos el inconveniente! Para compensar este desafortunado malentendido, ¡estaremos encantados trabajar sin coste alguna para ustedes de ahora en adelante!" + IDS_INTEL_25466 "Vigilancia D.A.Ñ.O.: A.M.@INFORME DE VIGILANCIA 9F\nAtención: Anoop Banerjee\n\nSeñor, creo que nuestros amigos van a moverse pronto. Sugiero que traslademos la mercancía del congelador. Estará más segura en una de las salas de empleados.\n\nPrem" + IDS_INTEL_25467 "Vigilancia D.A.Ñ.O.: Asalto@INFORME DE VIGILANCIA 9F\nAtención: Anoop Banerjee\n\nSeñor, PacPac ha descubierto la ubicación de la oficina de la rama india de Alianza Maligna. Están utilizando el viejo teatro al final de la calle. He organizado un asalto nocturno el martes a las 9.30 de la noche durante su película nocturna. No pude conseguir entradas para Samir y Ajay pero podemos hacerlos entrar por la puerta lateral en cuanto haya empezado.\n\nPrem" + IDS_INTEL_25468 "UNUSED" + IDS_INTEL_25469 "UNUSED" + IDS_INTEL_25470 "UNUSED" + IDS_INTEL_25471 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25472 "" + IDS_INTEL_25473 "" + IDS_INTEL_25474 "" + IDS_INTEL_25475 "" + IDS_INTEL_25476 "" + IDS_INTEL_25477 "" + IDS_INTEL_25478 "" + IDS_INTEL_25479 "" + IDS_INTEL_25480 "" + IDS_INTEL_25481 "Nota de Kamal: Equipamiento@Agente Archer, \n\nAlianza Maligana tiene su cuartel general en el viejo teatro al otro lado de la calle. Supongo que se ajusta a su teatralidad, un modus operandi demasiado dramático. He podido obtener un diagrama del edificio que indica los puntos en los que las cargas de demolición causarían más daño estructural. Tendrás que buscar explosivos en el lugar.\n\nKamal\n\nP.D.: Santa ha enviado este paquete para ti." + IDS_INTEL_25482 "Carta: ¡Fuga inmediata!@Para: Sra. Lala Faqueera,\nCalle Pullagura, 14\n\nLala,\n\n¡Estoy muy preocupado! Tu padre no quiere dar su brazo a torcer y pretende casarte con otro. ¡Tenemos que fugarnos pronto!\nCon todo mi amor, Pram" + IDS_INTEL_25483 "Carta: Hija salvaje@Dr Nallapuneni:\n\nDoctor, estoy preocupada por mi hija. Mi marido ha intentado conseguirle un buen marido, pero nadie la quiere. Es salvaje y peleona, y sólo atrae a hombres de la peor calaña. ¿Qué puedo hacer?\n\nSaludos,\nSra. Faqueera" + IDS_INTEL_25484 "Carta: Amuleto Guari@Sra. Faqueera:\n\nComprendo su preocupación. Debe conseguir un amuleto Guari, mezclar unos ajos con vinagre y ponerlo todo bajo su cama para que encuentre un buen marido. ¡Funcionó a las mil maravillas con mi Phoowati!\n\nDr. Nallapuneni" + IDS_INTEL_25485 "PLANO: Cine@" + IDS_INTEL_25486 "" + IDS_INTEL_25487 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25488 "" + IDS_INTEL_25489 "" + IDS_INTEL_25490 "" + IDS_INTEL_25491 "" + IDS_INTEL_25492 "" + IDS_INTEL_25493 "" + IDS_INTEL_25494 "" + IDS_INTEL_25495 "" + IDS_INTEL_25496 "" + IDS_INTEL_25497 "" + IDS_INTEL_25498 "" + IDS_INTEL_25499 "" + IDS_INTEL_25500 "" + IDS_INTEL_25501 "Combinación de caja fuerte@Para: Sonal, ayudante de seguridad\nDe: Jefe de equipo Madhu\n\nLos informes mensuales DEBEN estar completados mañana por la mañana. Asegúrese de que también están sacados los totales de los recibos de correos. Ya sabe cómo es el jefe con las matemáticas.\n\nP.D.: Estoy seguro de que se le ha olvidado, así que la combinación de la caja fuerte es 6-23-6." + IDS_INTEL_25502 "Memorándum A.M. : Ataque a D.A.Ñ.O.@Vijay,\n\n¡Buenas noticias! El momento de la venganza ha llegado. El director de actividades de D.A.Ñ.O. ha reservado 30 asientos para el pase del jueves por la noche. ¡Podremos atacarles en cuanto comience el espectáculo! Por favor, reparte balas entre los hombres pero ten cuidado para no exceder nuestra adjudicación semanal!\n\nJefe de equipo asociado, Madhu" + IDS_INTEL_25503 "Memorándum de A.M.: Explosivos@Para: Ayudante de seguridad Sonal\nDe: Jefe de Equipo asociado Madhu\n\nEstos explosivos son para la gran operación del próximo jueves, así que asegúrense de guardarlos en la cámara cinematográfica secreta donde estarán seguros." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25504 "Nota: Bolsas de arena peligrosas@Debido al desgraciado accidente de los asociados Ramesh y Samir, el personal no puede entrar en la zona principal hasta que el personal de mantenimiento descuelgue las peligrosas de bolsas de arena." + IDS_INTEL_25505 "Memorándum de la A.M.: Venkatashalapathi@Para: Líder del equipo asociado Madhu\nDe: Miembro del equipo Vijay\n\nSeñor, respetuosamente sugiero que se cambie el nombre del proyecto Venkatachalapathi. Todo el mundo lo confunde con el Proyecto Velatachalapathi. Es muy frustrante que se nos confunda con ese desgraciado proyecto. Sugerimos un nuevo nombre: Proyecto Shakti. Suena bien, ¿verdad?" + IDS_INTEL_25506 "Memorándum de la A.M.: Venkatashalapathi@Para: Miembro del equipo Vijay\nDe: Líder del equipo asociado Madhu\nVijay, no puedo creer que ahora saques ese tema. El departamento de marketing ya ha aprobado el proyecto Venkatachalapathi. ¿Sabes lo complicado que es escoger un nuevo nombre? No te prometo nada." + IDS_INTEL_25507 "Memorándum de la A.M.: ¿Qué tal Shakti?@Para: Departamento de marketing\nDe: Líder del equipo Madhu\n\nSolicito formalmente que el nombre del proyecto Venkatachalapathi sea cambiado por proyecto Shakti. Deben admitir que Venkatachalapathi no queda bien en nuestro nuevo membrete." + IDS_INTEL_25508 "Memorándum de la A.M.: ¿Estás loco?@Para: Líder de equipo Madhu\nDe:Departamento de marketing\n\n¡Que el hacha sagrada del Señor Ganesha te rebane el meñique de la mano izquierda! ¿No has oído hablar de Shakti Cola? Nos demandarían por infringir la marca comercial. Ya nos hemos pasado del presupuesto, por lo que su solicitud es desestimada con una D mayúscula." + IDS_INTEL_25509 "Memorándum de la A.M.: Marketing no vale@Para: Miembro del equipo Vijay\nDe: Líder del equipo Madhu\n\nAmigo mío, una vez más el departamento de marketing ha demostrado su inutilidad. Tenemos que aguantarnos con proyecto Venkatachalapathi." + IDS_INTEL_25510 "Búsqueda de marca comercial. Venkatachalapathi@BÚSQUEDA DE MARCA COMERCIAL: Venkatachalapathi\n\nSólo hemos encontrado dos posibles problemas con esta marca comercial. Uno es una pequeña plantación de papaya. El otro es un servicio de desratización. Creemos que ambos son lo suficientemente diferentes como para no causar problemas. Importe total de la búsqueda: 10.000 rupias." + IDS_INTEL_25511 "Aviso amistoso: Venkatachalapathi@AVISO AMISTOSO\n\nDe: Servicio de desratización Venkatachalapathi\nPara: Sr. Baba Madhu\n\nSr. Madhu, esta carta es un aviso oficial de infracción de marca comercial. Desistan inmediatamente o nos veremos en los tribunales." + IDS_INTEL_25512 "Memorándum de la A.M.: Limpieza marcas@Para: Mantenimiento\nDe: Líder del equipo Madhu\n\n¿Ha visto la carta de aviso amistoso? Me imagino que mantenimiento se hará cargo del problema como suele hacer. Mejor que sea extra doloroso.\n\n¡Debí hacer algo muy malo en mi vida anterior para merecer estos quebraderos de cabeza!" + IDS_INTEL_25513 "UNUSED" + IDS_INTEL_25514 "" + IDS_INTEL_25515 "" + IDS_INTEL_25516 "" + IDS_INTEL_25517 "" + IDS_INTEL_25518 "" + IDS_INTEL_25519 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25520 "" + IDS_INTEL_25521 "Nota: Cámara de D.A.Ñ.O.@Agente Archer,\n\nNo será fácil entrar en la cámara. Primero tendrás que hacer un cortocircuito en la entrada electrónica y las cámaras de seguridad. También encontrarás guardias en la zona inferior.\n\nPor desgracia, no he estado nunca más allá de ese punto, así que no estoy seguro de a qué te enfrentarás. Pero he oído que Anoop hablaba sobre luces instaladas en las paredes. Supongo que servirán para algo.\n\nBuena suerte,\nKamal" + IDS_INTEL_25522 "Memorándum de D.A.Ñ.O.: cámara de seguridad@Para: Anoop Banerjee\nDe: El Director\n\nAcabo de terminar de revisar los resultados de la última inspección de seguridad y estoy contento de ver una mejora tan dramática en la calificación de este año. Por supuesto, no podría haber ido a peor, ¿o sí? De todas formas, es gratificante no ver ni un pequeño descenso en su incompetencia. ¡Sigan con el buen trabajo!" + IDS_INTEL_25523 "Carta: Gracias de UNITY@Para: Kamal Khubchandani\nDe: Bruno Lawrie, Director temporal de UNITY\n\nDebo darle las gracias sinceramente por su ayuda desinteresada y de gran valor con este asunto. No estoy totalmente seguro de qué le ha motivado a ayudarnos pero le aseguro que UNITY le compensará su generosidad. Además, si alguna vez necesitase un empleo como consecuencia de sus actos, estoy seguro de que podríamos preparar algo." + IDS_INTEL_25524 "Memorándum D.A.Ñ.O.: Solicitud de productos@Para: Dr. Kussman, Base antártica\nDe: Sr. Banerjee, Base india\nRe: Materiales del proyecto Omega\n\nLa reserva de productos químicos que ha solicitado ha sido enviada a McMurdo a través de las Islas Malvinas. El té que quería está en la caja roja. ¡Disfrútelo, amigo!" + IDS_INTEL_25525 "Nota: Micrófonos@Agente Archer,\n\nSanta está interesado en inteligencia adicional para las operaciones de D.A.Ñ.O. en la India. Me ha pedido que pinches los teléfonos de tres empleados clave. Estos micrófonos serán retirados después por otros agentes así que sólo necesitas colocarlos en el objetivo. ¡Buena suerte!\n\nKamal" + IDS_INTEL_25526 "Carta: Respuesta de Kamal@Copia\n\nPara: Bruno Lawrie\nDe: Kamal Khubchandani\n\nGracias por tu generosa oferta. La razón por la que te asisto es muy simple: estoy harto. No pretendo ser especialmente honrado pero hace poco ha nacido mi hija, Laxmi. Al verla por primera vez, estaba tan lleno de amor y paz que lloré. Fue muy duro volver al trabajo y hacer como si disfrutase de la compañía de estos criminales de dibujos animados y sus esquemas criminales. Estoy harto de tanta maldad." + IDS_INTEL_25527 "Documento: Proyecto: Omega@Para: Anoop Banerjee\nDe: Dr. Kussman\n\nBueno, mi buen amigo, el proyecto: Omega se está desarrollando según lo previsto. Tuvimos un par de retrasos sin importancia pero nada preocupante. El mundo nunca olvidará 1966, ¡el año de Omega!\n\n¿Así que cuándo vendrás a visitarme a la Antártida? Me muero por una conversación inteligente. Nos encontramos a unas dos horas en avión al sur de Russkaya. No hay mucho que hacer, pero ¡tenemos una mesa de ping pong!\n" + IDS_INTEL_25528 "Recibo: Substitutos comadrejas@Para: Anoop Banerjee\nDe: Importadores de animales viciosos, malos y desagradables\n\nSentimos mucho no haber podido conseguir las comadrejas feroces y rabiosas para su trampa mortal. Nuestros proveedores nos aseguran que nos llegará el paquete a través de Canadá. Mientras tanto, acepte estos substitutos temporales. Aunque no son tan mortales, sí son bastante desagradables." + IDS_INTEL_25529 "" + IDS_INTEL_25530 "" + IDS_INTEL_25531 "" + IDS_INTEL_25532 "" + IDS_INTEL_25533 "" + IDS_INTEL_25534 "" + IDS_INTEL_25535 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25536 "" + IDS_INTEL_25537 "" + IDS_INTEL_25538 "" + IDS_INTEL_25539 "" + IDS_INTEL_25540 "" + IDS_INTEL_25541 "Aviso: Festival de mímica@Producciones Sanjay presenta\n\nCon fama mundial\nPIERRE, EL REY MIMO\ny su compañía de mimos\n\n¡Una sola noche! Entradas limitadas." + IDS_INTEL_25542 "" + IDS_INTEL_25543 "" + IDS_INTEL_25544 "" + IDS_INTEL_25545 "" + IDS_INTEL_25546 "" + IDS_INTEL_25547 "" + IDS_INTEL_25548 "" + IDS_INTEL_25549 "" + IDS_INTEL_25550 "" + IDS_INTEL_25551 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25552 "" + IDS_INTEL_25553 "" + IDS_INTEL_25554 "" + IDS_INTEL_25555 "" + IDS_INTEL_25556 "" + IDS_INTEL_25557 "" + IDS_INTEL_25558 "" + IDS_INTEL_25559 "" + IDS_INTEL_25560 "" + IDS_INTEL_25561 "Nota: Tirones de cuerda@¡Sacre Bleu! Se me está acabando la paciencia. Por enésima vez los tirones de cuerda comienzan con la mano DERECHA. El próximo que vuelva a demostrar su inexcusable incompetencia en mi presencia será privado de su mano izquierda para que no olvide nunca su estupidez.\n\nPracticamos un arte sagrado, mes amis. Hagan honor del mismo y florecerán en mi gracia.\n\nPierre" + IDS_INTEL_25562 "Carta: Mimo fallido@Querida Babette:\n\n¡Mon Dieu! ¡Parece que no hago nada bien! Cada día cometo un nuevo error, otro fallo. ¡No soporto la aversión hacia mí mismo. Soy un grano horrible en un rostro perfecto de mimo. Te echo mucho de menos, mi dulce amor.\n\nTe amo, Jacques." + IDS_INTEL_25563 "Manual de mimo@EL ARTE DE LA MÍMICA\n\nLa técnica es IMPRESIONANTE. La capacidad artística es INTERESANTE. La MÍMICA en sí no resiste el paso del tiempo. El siguiente que venga será más alto más rápido y más rico que tú. La MÍMICA se basa en conceptos relativos: mejor o peor. El INTERÉS se sujeta por sí mismo. Y cuando algo tiene verdadero interés, el tiempo se detiene. ¡Ésa es la clave!" + IDS_INTEL_25564 "Archivo D.A.Ñ.O.: perfil de Archer@ARCHIVO DE D.A.Ñ.O 2317: Catherine Archer, perfil actualizado\n\nArcher nació en 1942, hija de Lord William Archer y Catherine Anne MacDougal. Su madre murió debido a las complicaciones del parto. Lord Archer despilfarró su salud y su herencia, quitándose la vida cuando Archer tenía 12 años. Pasó un tiempo en un orfanato y en varios hogares de acogida antes de huir a Londres donde se convirtió en una reconocida ladrona de guante blanco conocida como el Zorro. Fue reclutada por Bruno Lawrie para trabajar para UNITY." + IDS_INTEL_25565 "Fotografía: Magnus Armstrong@" + IDS_INTEL_25566 "Expediente de D.A.Ñ.O.: Información de Archer@ARCHIVO DE D.A.Ñ.O. 2345: Catherine Anne Archer (alias Zorro)\n\nAltura: 1, 68 m\\Ojos: verdes\nCabello: castaño\nNacionalidad: escocesa\\Último contacto confirmado: Siberia." + IDS_INTEL_25567 "Expediente de D.A.Ñ.O.:Armstrong@ARCHIVO DE D.A.Ñ.O. 1201: Magnus Armstrong\n\nAltura: 1, 63 m\\Ojos: azules\nCabello: pelirrojo\nNacionalidad: escocesa\\Último contacto confirmado: Inglaterra." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25568 "Fotografía: Cate Archer@" + IDS_INTEL_25569 "" + IDS_INTEL_25570 "" + IDS_INTEL_25571 "" + IDS_INTEL_25572 "" + IDS_INTEL_25573 "" + IDS_INTEL_25574 "" + IDS_INTEL_25575 "" + IDS_INTEL_25576 "" + IDS_INTEL_25577 "" + IDS_INTEL_25578 "" + IDS_INTEL_25579 "" + IDS_INTEL_25580 "" + IDS_INTEL_25581 "" + IDS_INTEL_25582 "" + IDS_INTEL_25583 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25584 "" + IDS_INTEL_25585 "" + IDS_INTEL_25586 "" + IDS_INTEL_25587 "" + IDS_INTEL_25588 "" + IDS_INTEL_25589 "" + IDS_INTEL_25590 "" + IDS_INTEL_25591 "" + IDS_INTEL_25592 "" + IDS_INTEL_25593 "" + IDS_INTEL_25594 "" + IDS_INTEL_25595 "" + IDS_INTEL_25596 "" + IDS_INTEL_25597 "" + IDS_INTEL_25598 "" + IDS_INTEL_25599 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25640 "" + IDS_INTEL_25641 "Memorándum de D.A.Ñ.O.: Registro@Para: General Zhukov\nDe: Dr. Kussman\nRe: Actualización mensual del proyecto Omega\nGeneral, estamos preparados para comenzar sobre el terreno las pruebas de la próxima semana, con tres semanas de antelación. ¿Han tomado sus camaradas una decisión con respecto a esta oportunidad única? Le informo de que hay otras partes interesadas. Si se registran durante las próximas 48 horas, le incluiremos nuestra garantía ampliada de 18 meses." + IDS_INTEL_25642 "Material de propaganda@¡EL PROYECTO OMEGA Y TÚ!\n\nSi eres como yo, has visto los informes de estado de la publicación mensual y te has preguntado, " + IDS_INTEL_25643 "Expediente de D.A.Ñ.O.: Zhukov@ARCHIVO DE D.A.Ñ.O. 6987: General Nikolai Zhukov\n\nDestinado en la actualidad a Siberia tras una pelea con el general Anatop en Petrogrado. Sergei piensa que esto puede tener algo que ver con la esposa de 18 años de Kopat. O con su hija de 24. Zhukov es el objetivo perfecto del proyecto: Omega, con la combinación perfecta entre rango militar y mediocridad mental para observar los beneficios del proyecto sin preocuparse por las posibles pérdidas." + IDS_INTEL_25644 "Memorándum de D.A.Ñ.O.: Pomos rotos@Para: Dr. Kussman\nDe: Mantenimiento\n\nLamentamos no haber podido sustituir el pomo roto de su puerta ya que estamos trasladando los explosivos fuera de la nave de mantenimiento." + IDS_INTEL_25645 "Factura de productos químicos@Compañía de productos químicos ACME\n\nFACTURA NÚM.4023\n\nCliente: Dr. Karl Kussman\nProductos: 400 litros de líquido para embalsamar, 60 kilogramos de bicarbonato sódico, 20 cajas de palotes de fresa." + IDS_INTEL_25646 "Memorándum de D.A.Ñ.O.: Fuera de fecha@Para: Dr. Kussman\nDe: El Director\n\nEstoy seguro de que no hace falta que llame su atención sobre el peligro de atrasarnos sobre lo planeado sin remedio, Doctor. No creo que haga falta que le recuerde que firmó personalmente la fecha final. " + IDS_INTEL_25647 "Fotografía de Abigail Anders@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25648 "Diario: Hotchkin@Diario de Melbert Hotchkin. Día 189.\n\nEl sujeto núm. 42 (Anders, Joseph, Tte.) se ha ido recrudeciendo durante la semana pasada. Hemos aumentado su dosis pero me temo que quizás tenga que olvidarme de él. Existe otra opción pero necesitaríamos transportarle hasta la instalación submarina en el Egeo para devolverle su condición." + IDS_INTEL_25649 "Expediente de D.A.Ñ.O.: Tte. Anders@EXPEDIENTE D.A.Ñ.O 6714: Teniente Joseph Anders\n\nReclutado en la base militar de los EE.UU. de Noruega durante la operación Banda de prensa. Tiene mujer, Marianne; una hija, Abigail; y un terrier, Sparky. Carrera militar destacada con amplia experiencia militar. \n\nNotas: por su bagage profesional, es el candidato ideal pero estoy preocupado por sus fuertes vínculos familiares. Controlar con cuidado.\n\nDr. Kussman" + IDS_INTEL_25650 "Memorándum de D.A.Ñ.O.: Pruebas de campo@Para: Dr. Kussman\nDe: El Director\n\nLa rama de India nos ha fallado. Parece que nuestra Súper Espía favorita más entrometida, Cate Archer, ha conseguido entrar en su cámara. Debemos acelerar el plan. Es hora de que los Súper Soldados se enfrenten a una prueba de campo, ¿no cree? Quiero a toda la división de camino a la India antes de UNITY llegue a las instalaciones. Debemos verificar que los Súper soldados son tan invulnerables al daño como prometiste. Y no quiero oír ninguna excusa sobre su teniente conocido como el renegado. Si no puede controlar a sus propios sujetos, encontraré a algún científico loco que pueda." + IDS_INTEL_25651 "Memorándum de D.A.Ñ.O.: Explosivos@Para: Mantenimiento\nDe: Dr. Kussman\n\nDispongan el traslado de las cargas de demolición del laboratorio 2 a la nave de mantenimiento de una vez. No creo que haga falta decir que no es buena idea almacenar explosivos cerca de donde se realizan las pruebas de armas. ¿Quizás tengan que almacenarlos debajo de sus catres?" + IDS_INTEL_25652 "Proyecto Súper Soldado@" + IDS_INTEL_25653 "Memorándum de D.A.Ñ.O.: Suministros@Para: Dr. Kussman\nDe: Dmitrij Volkov, Director de acción ejecutiva\n\nGracias por su tarjeta deseándome pronta recuperación. Es muy considerado teniendo en cuenta que fui yo quien asesinó a su tío.\n\nCon relación a mi accidente, estaba de vacaciones en Suiza poco después del fallecimiento de la baronesa Dumas, nuestra antigua ilustrísima directora ejecutiva. Mientras esquiaba en los Alpes, conseguí azotar a un niño despistado con mi bastón al pasar pero me encontré más adelante con su hermana. Caímos en picado desde más de 3.000 metros sobre una agradable cafetería. Por suerte, caí encima de ella." + IDS_INTEL_25654 "Informe de estado: Sujeto núm. 42@INFORME DE ESTADO INTERNO\n(¡No para su publicación en la publicación mensual!)\n\nEn general, los resultados son altamente satisfactorios. Vamos casi dos semanas por delante del programa. Dicho esto, también hemos experimentado un desafortunado retroceso. El sujeto núm. 42, uno de los cuatro Tenientes todavía muestra síntomas de autonomía. Los episodios se han ido agudizando en frecuencia y agresión. Recomendamos una reacondicionación completa lo antes posible. El proyecto: Omega no puede permitirse ningún fallo." + IDS_INTEL_25655 "" + IDS_INTEL_25656 "" + IDS_INTEL_25657 "" + IDS_INTEL_25658 "" + IDS_INTEL_25659 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25680 "" + IDS_INTEL_25681 "Nota: Castigo@Para: Todo el personal\nDe: Anoop Banerjee\n\nBien, amigos míos, parece que el Director está descargando su cólera sobre nosotros en vez de esos desdichados mimos. Mientras que yo personalmente estoy dispuesto a admitir mi culpa en haber sido embaucado por la espía, fue culpa de los novatos que escapase. Por lo tanto, he decidido despedirme de D.A.Ñ.O. y montar una empresa de seguridad privada. Los que estén interesados en una nueva dirección profesional son bienvenidos a unirse a esta emocionante aventura." + IDS_INTEL_25682 "" + IDS_INTEL_25683 "" + IDS_INTEL_25684 "" + IDS_INTEL_25685 "" + IDS_INTEL_25686 "" + IDS_INTEL_25687 "" + IDS_INTEL_25688 "" + IDS_INTEL_25689 "" + IDS_INTEL_25690 "" + IDS_INTEL_25691 "" + IDS_INTEL_25692 "" + IDS_INTEL_25693 "" + IDS_INTEL_25694 "" + IDS_INTEL_25695 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25696 "" + IDS_INTEL_25697 "" + IDS_INTEL_25698 "" + IDS_INTEL_25699 "" + IDS_INTEL_25700 "" + IDS_INTEL_25701 "" + IDS_INTEL_25702 "" + IDS_INTEL_25703 "" + IDS_INTEL_25704 "" + IDS_INTEL_25705 "" + IDS_INTEL_25706 "" + IDS_INTEL_25707 "" + IDS_INTEL_25708 "" + IDS_INTEL_25709 "" + IDS_INTEL_25710 "" + IDS_INTEL_25711 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25712 "" + IDS_INTEL_25713 "" + IDS_INTEL_25714 "" + IDS_INTEL_25715 "" + IDS_INTEL_25716 "" + IDS_INTEL_25717 "" + IDS_INTEL_25718 "" + IDS_INTEL_25719 "" + IDS_INTEL_25720 "" + IDS_INTEL_25721 "Memorándum de UNITY: Jones de permiso@Para: Todo el personal\nDe: Sr. Jones\n\nEstaré tres semanas de vacaciones a partir del lunes que viene. Bruno Lawrie asumirá las funciones de dirección de UNITY durante mi ausencia. Por favor, trátenle como si se tratara de mí. ¡Nos vemos pronto!" + IDS_INTEL_25722 "Memorándum: Petición de Bruno@Para: Todo el personal\nDe: Bruno Lawrie, Director temporal\n\nEntiendo que todos ustedes encuentren realmente gracioso que me hayan dejado al cargo pero, por favor, en el nombre de la decencia, no se dirijan a mí como, " + IDS_INTEL_25723 "Carta: Chisme@Querida Emma,\n\n¡Hola, cariño! ¿Cómo estás? Desde que no estás aquí las cosas ya no son tan divertidas como antes. Dispararon al genial Sr. Goodman, aquél por el que estabas tan chiflada. Fue espantoso. Phyllis sigue saliendo con Bob. ¡Imagínate que hasta ha logrado que aprenda a vestirse! Bueno, hora de volver a los archivos. ¡Seguiremos en contacto!\n\nTiffany" + IDS_INTEL_25724 "Nota: Dr. Schenker escondido@Cate,\n\nEstoy escondido.\n\nAtentamente,\nDr. Schenker" + IDS_INTEL_25725 "Informe: SITREP@INFORME DE SITUACIÓN\nProyecto: Omega\nRealizado por Isaac Barnes\n\nAgentes de UNITY han descubierto la naturaleza y el objetivo del proyecto: Omega, que incluye la invasión de Khios con la ayuda de los prácticamente indestructibles, Súper Soldados creados por medios químicos. Documentación recuperada indica que los soviéticos están planeando algo sobre una especie de súper casino comunista, pero sospechamos que sus intenciones reales son explotar los recursos naturales de la isla. Claramente, esta forma de explotación militar por parte de los soviéticos, interferiría con la estupenda explotación planeada por la OTAN. Debemos actuar con rapidez y decisión." + IDS_INTEL_25726 "Memorándum: Petición de Bruno@Para: Todo el personal\nDe: Bruno Lawrie, Director temporal\n\nQuizás no fui suficientemente explícito en mi petición previa. Estaría eternamente agradecido si se abstuviesen de utilizar cualquier forma de dirigirse a mí exagerada como:\n\nMi señor,\nSu honorable,\nSu santidad,\no Mi comandante supremo.\n\nGracias." + IDS_INTEL_25727 "ESQUEMÁTICO: submarino tiburón@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25728 "UNUSED" + IDS_INTEL_25729 "UNUSED" + IDS_INTEL_25730 "UNUSED" + IDS_INTEL_25731 "UNUSED" + IDS_INTEL_25732 "UNUSED" + IDS_INTEL_25733 "UNUSED" + IDS_INTEL_25734 "UNUSED" + IDS_INTEL_25735 "UNUSED" + IDS_INTEL_25736 "UNUSED" + IDS_INTEL_25737 "UNUSED" + IDS_INTEL_25738 "UNUSED" + IDS_INTEL_25739 "UNUSED" + IDS_INTEL_25740 "" + IDS_INTEL_25741 "Lista de turnos@CAMBIOS EN LA LISTA DE TURNOS\n\nRecuerden que el equipo de Frank pasa al turno de día esta semana. Me imagino lo que ocurrirá cuando llores como una nena por no haber dormido bastante. Sheesh." + IDS_INTEL_25742 "Manifiesto por nuevos uniformes@Manifiesto de envío\n\nCuatro docenas de uniformes de D.A.Ñ.O. (negros y rojos). \n\n Por favor devuelvan los antiguos uniformes al cuartel general para reciclarlos." + IDS_INTEL_25743 "Nota: Secreto@Para: Todo el personal\nDe: Comandante Pim\n\nComo ya saben, el Submarino Súper Secreto es parte esencial del éxito del proyecto: Omega. Por lo tanto, debemos observar un código de estricto secreto sobre su existencia y su capacidad. No hablen del tema ni con sus mujeres ni novias. Por la boca muere el pez, o el submarino.\n\n¡No olviden qué significa D.A.Ñ.O.!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25744 "Declaración de misión núm. 1@Para: Todo el personal\nDe: Megan O'Malledy, Oficial de moral\n\n¡Hola a todos! Como ya sabéis, recientemente hemos celebrado un concurso para todos los empleados en el que podíais mandar ideas de declaraciones de misiones para D.A.Ñ.O. ¡Gracias a todos por vuestras cuatro aportaciones! Por desgracia, sólo hay sitio para una emblemática declaración de misión de D.A.Ñ.O., así que tres de vosotros no habéis tenido suerte. Ésta es la declaración en tercer lugar:\n\n" + IDS_INTEL_25745 "Carta: Nuevos uniformes@Hola, Rodney,\n\n¿Quieres creer que por fin han escuchado nuestras quejas y nos han conseguido unos uniformes decentes? Espero que repitan la foto de empresa. ¿Podrías ponerme en contacto con Margaret a mi regreso? ¡Está que muerde!\n\nTu amigo, Nathan" + IDS_INTEL_25746 "Carta: Proposición de Clark@Querida Martha,\n\nMe arrepiento de la dura decisión que tomé al dejarte en Marruecos. Durante meses me ha consumido mi absurda decisión. El mes pasado abandoné el ejército ruso y me he incorporado a una empresa independiente que me aportará más beneficios y un excelente reparto de dividendos. Te echo mucho de menos y me encantaría que volviésemos a estar juntos de nuevo. ¿Quieres volver conmigo?\n\nClark" + IDS_INTEL_25747 "Declaración de misión núm. 2@Para: Todo el personal\nDe: Megan O'Malledy, Oficial de moral\n\n¡Hola, amigos! Éste es el segundo lugar del concurso de declaraciones de misiones:\n\n" + IDS_INTEL_25748 "Declaración de misión núm. 3@Para: Todo el personal\nDe: Megan O'Malledy, Oficial de moral\n\n¡Hola a todos los colaboradores de D.A.Ñ.O.! Es un honor para mí presentar una nueva declaración de misión de D.A.Ñ.O., de Dmitrij Volkov, nuestro ilustre director de acción ejecutiva:\n\n" + IDS_INTEL_25749 "Nota: Membrete@Para: Todos los jefes de sección\nDe: Administración\n\n¡Ha llegado el nuevo membrete de D.A.Ñ.O.! Los de suministros recogerán el antiguo membrete esta semana para reciclarlo." + IDS_INTEL_25750 "Memorándum de D.A.Ñ.O.: Cancelar Epsilon@Para: Profesor Hibbard\nDe: Comandante Pim\n\nComprendo que se haya quejado al cuartel general por la cancelación del proyecto Epsilon. Estimado profesor, es posible que no pueda considerar este desastre como un éxito. Lo último que necesitamos tan cerca de la Condición Omega es una distracción demasiado ambiciosa, inadecuadamente gestionada como Epsilon eliminando nuestros recursos y hundiendo nuestra moral." + IDS_INTEL_25751 "UNUSED" + IDS_INTEL_25752 "Nota: Robots en el conducto@¡AVISO URGENTE!\n\nNO se pueden dejar robots en el conducto bajo ninguna circunstancia. Sus sistemas de objetivos no son suficientemente sofisticados como para distinguir entre agentes enemigos y un gran pez. Incluso el menos imaginativo de todos ustedes se dará cuenta de las consecuencias de un robot disparando contra las criaturas marinas que pasan cerca." + IDS_INTEL_25753 "UNUSED" + IDS_INTEL_25754 "UNUSED" + IDS_INTEL_25755 "UNUSED" + IDS_INTEL_25756 "UNUSED" + IDS_INTEL_25757 "UNUSED" + IDS_INTEL_25758 "UNUSED" + IDS_INTEL_25759 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25760 "" + IDS_INTEL_25761 "Memorándum de D.A.Ñ.O.: Sujeto núm. 42@Para: Dr. Hall\nDe: Dr. Kussman\n\nConsiderando el enorme gasto de desarrollo de un Súper Soldado, creo que la única solución posible es probar a recondicionar al sujeto núm. 42. por completo. Mi investigación indica que exposiciones adicionales a la solución tendrían un efecto acumulativo, así que es bastante probable que todavía podamos salvar al Teniente Anders. ¡Sin duda debemos intentarlo!" + IDS_INTEL_25762 "Memorándum de D.A.Ñ.O.: Tanques@Para: Doctor Hall\nDe:Mantenimiento\n\nHemos instalado los tanques de los sujetos en prueba siguiendo sus instrucciones. Vamos a estar muy ocupados esta semana debido a la fusión accidental del reactor del aire acondicionado, por tanto, háganos saber con antelación (24 horas, no 15 minutos) si necesita hacer cambios." + IDS_INTEL_25763 "Memorándum de D.A.Ñ.O.: Armstrong@Para: Todo el personal\nDe: Comandante Pim\n\nTenga en cuenta que la zona de sujetos en prueba está fuera de los límites autorizados para todos excepto para el personal de la instalación: los miembros del equipo Omega hasta nueva orden. Ahora mismo somos rehenes de dos sujetos altamente peligrosos, pero el Dr. Hall nos asegura que serán dóciles como gatitos al final de la semana.\n\n¡No olviden lo que significa D.A.Ñ.O.!" + IDS_INTEL_25764 "Memorándum de D.A.Ñ.O.: Robot inoperativo@Para: Confucius Lee, Dpto. robótica\nDe: Comandante Pim\n\nSr. Lee, me he encontrado un robot inoperativo en el puente de personal esta mañana. Parece haberse suicidado metiendo un tenedor dentro de un enchufe. ¿Este comportamiento es normal?" + IDS_INTEL_25765 "Memorándum de D.A.Ñ.O.: El robot no funciona@Para: Comandante Pim\nDe: Confucius Lee, Dpto. robótica\n\nComandante, como recordará, me indicaron que siguiese las instrucciones de diseño del jefe de seguridad, Fenster, lo cual hice muy a mi pesar. Mientras que el jefe Fenster estaba muy preocupado por hacer que los robots fuesen invulnerables a pequeñas armas de fuego y a la mayoría de los dispositivos explosivos, no pensó en aislar los circuitos. Por lo tanto, son muy susceptibles a la electricidad. Éste no es el primer informe de un suicidio de un robot. ¿Quizá sea porque no han sido aceptados para el proyecto: Omega?" + IDS_INTEL_25766 "Memorándum de D.A.Ñ.O.: Dpto. de servicios@Para: Todos los jefes de equipo\nDe: Comndante Pim\nPrioridad: ALTO SECRETO\n\nEste comunicado es para avisarle de una reunión este jueves en la que discutiremos la situación cada vez más intensa del Dpto. de servicios del Súper Ordenador. Necesitamos o bien revisar por completo el nuevo sistema de solicitudes o cotratar a dieciséis nuevos representantes de servicios para hacerse cargo del volumen de trabajo. Dado nuestros gastos administrativos astronómicos, contratar tanta gente no es una opción." + IDS_INTEL_25767 "Manual del Súper Ordenador@Manual de usuario del Súper Ordenador, Suplemento 18-G." + IDS_INTEL_25768 "UNUSED" + IDS_INTEL_25769 "UNUSED" + IDS_INTEL_25770 "UNUSED" + IDS_INTEL_25771 "Nota: Descanso para pipí@Estoy haciendo pipí. Vuelvo en 5 minutos.\n\nSpencer" + IDS_INTEL_25772 "Formulario de solicitud de catálogo@FORMULARIO DE SOLICITUD 207-B\n\nProducto: Manual de los servicios del Súper Orddnador\nNúmero de elemento: Núm.349295-290948-2934/Z\n¿Cómo has obtenido este número de producto?\n (x) Catálogo de servicios del Súper Ordenador\n ( ) de un amigo\n ( ) extorsión\n ( ) me lo he inventado." + IDS_INTEL_25773 "Manual de usuario del Súper Ordenador@Manual de usuario del Súper Ordenador." + IDS_INTEL_25774 "Catálogo de servicios del Súper Ordenador@Catálogo de servicios del Súper Ordenador." + IDS_INTEL_25775 "Memorándum de D.A.Ñ.O.: Falta de pago@Para: General Zhukov\nDe: Erin Keyes, Control de cuentas de D.A.Ñ.O.\n\nTenga en cuenta de que en caso de no pagar el balance pendiente de su paquete platinium plus de Súper Soldado, con el precio de 1 millón de dólares norteamericanos (más 612,47 dólares como gastos de envío), D.A.Ñ.O. estará autorizada a incitar la condición Omega a expensas de la Unión Soviética, según lo establecido en los términos de la LOI. Si ya ha depositado esta cantidad en una cuenta extranjera, haga caso omiso de este aviso.\n\n ¡D.A.Ñ.O. espera realizar futuras transacciones ilegales con usted!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25776 "Memorándum D.A.Ñ.O.: Destino de Armstrong @Para: Comandante Pim\nDe: La oficina del Director\n\nEl Director ha elegido un castigo más que acertado para Magnus Armstrong, cuya ambivalencia moral y tendencias nacionalistas son los responsables indirectos de la disolución del proyecto: Lambda y de la destrucción del castillo alpino de Dumas. Puesto que su lealtad ha probado ser tan poco constante, la reforzaremos obligatoriamente... ¡convirtiéndole en Súper Soldado! Llévenle a los laboratorios del subnivel 4 para comenzar el proceso de inmediato." + IDS_INTEL_25777 "Memorándum de D.A.Ñ.O.: Submarino@Para: Comandante Pim\nDe: Capitán Clayton\n\nEl primer viaje del Submarino Súper Secreto ha sido un éxito absoluto (excepto por unas goteras en la sala de máquinas y el hecho de que perdimos potencia durante 15 minutos sin razón aparente). También estoy contento de informarle que las pruebas de radar también han sobrepasado las expectativas. Pudimos colocarnos detrás de un barco de guerra norteamericano y soldar profanidades a su casco que causarán un alboroto la próxima vez que estén varados." + IDS_INTEL_25778 "UNUSED" + IDS_INTEL_25779 "UNUSED" + IDS_INTEL_25780 "" + IDS_INTEL_25781 "Memorándum de D.A.Ñ.O.: Salón privado@Para: Comandante Pim\nDe: El Director\n\nComandante, nadie tiene acceso a mi sala privada, ni siquiera usted. Antes de que niegue lo evidente, he buscado huellas dactilares en la botella de champagne vacía. Seguro que adivina de quién eran. Esa sala es mi rincón de escape en caso de emergencia en la base, Comandante. Si tengo que esperar horas a ser rescatado, no quiero tener que rodearme de la basura de nadie." + IDS_INTEL_25782 "Carta: Rumor sobre Epsilon@Wes,\n\n¿Has oído el rumor sobre Epsilon? ¡Será mejor empezar a mover el curriculum! He oído que en E.N.F.E.R.M.O. están contratando gente. ¿No conoces a nadie allí? He pensado que podrías dar referencias mías.\n\nJames" + IDS_INTEL_25783 "Carta: Rumor sobre Epsilon falso@James,\n\n¡No seas tan crédulo! ¡El proyecto: Epsilon va a ser un gran éxito! El profesor Hibbard nos asegura que los rumores son falsos y yo le creo.\n\nWes" + IDS_INTEL_25784 "UNUSED" + IDS_INTEL_25785 "UNUSED" + IDS_INTEL_25786 "Formulario de queja@FORMULARIO DE QUEJAS DE D.A.Ñ.O.\nMotivo de la queja: Sesiones de vinculación emocional de empleados.\nComentarios: Desde el momento en que nació esta organización, su aspecto ha ido de mal en peor. Primero los uniformes. Después el logotipo. Y después, todo el problema de la marca comercial Reemplazo opcional de cabello para los hombres o cómo quiera que se llame. ¿Y ahora tenemos que levantarnos a las 6 de la mañana para sesiones diarias de " + IDS_INTEL_25787 "Lista de verificación de mantenimiento@LISTA DE CONTROL DE MANTENIMIENTO:\n\n (x) Accesorios de baño con goteras\n (x) Peligro de incendio\n (x) Almacenaje de sustancias químicas por debajo del estándar\n (x) Pasillos resbaladizos." + IDS_INTEL_25788 "Fotografía del Súper Submarino@" + IDS_INTEL_25789 "Memorándum D.A.Ñ.O.: Exterminar Epsilon@Para: Todo el personal\nDe: Comandante Pim\n\nEl equipo del proyecto: Epsilon ha sido exterminado por su gran incompetencia. Quizá los vean flotando fuera de los ojos de buey, así que nadie se alarme.\n\nPermitamos que este suceso nos recuerde que debemos hacer mejor la selección de personal.\n\n¡No olviden lo que significa D.A.Ñ.O.!" + IDS_INTEL_25790 "UNUSED" + IDS_INTEL_25791 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25792 "" + IDS_INTEL_25793 "" + IDS_INTEL_25794 "" + IDS_INTEL_25795 "" + IDS_INTEL_25796 "" + IDS_INTEL_25797 "" + IDS_INTEL_25798 "" + IDS_INTEL_25799 "" + IDS_INTEL_25800 "" + IDS_INTEL_25801 "Memorándum de D.A.Ñ.O.: Amigo de EE.UU.@Para: Comandante Pim\nDe: El Director\n\nSegún nuestro entusiasta amigo norteameriano, los EE.UU. están intentando hacer saltar una guerra nuclear lo antes posible. Sólo les falta un motivo. Nos han felicitado por nuestra modesta propuesta. Creo que hemos encontrado el aliado perfecto." + IDS_INTEL_25802 "Memorándum de D.A.Ñ.O.: Robots@Para: Confucius Lee\nDe: Hugo Madmiller\n\nSeñor, estoy colgando de un hilo. Cada vez que alguien tiene un problema con uno de estos estúpidos robots, recibo una amonestación. Hoy he tenido que escuchar a Keith Stevens hablarme sobre los robots que él diseñó cuando trabajaba en Asesidelicioso. Intenté explicarle que nosotros no hemos diseñados los robots, pero no hace más que hostigarme. Quiero darle un puñetazo justo en la boca." + IDS_INTEL_25803 "Memorándum de D.A.Ñ.O.: Robots@Para: J.P. Fenster, Jefe de seguridad\nDe: Confucius Lee, Departamento de robótica\n\nHe comenzado a reenviar quejas sobre los Súper Robots a la oficina del Director, junto con su especificaciones de diseño. Creo que le parecerá que su patética conspiracion para echarme la culpa de los problemas de los robots no tiene sentido. Antes de mandar su próxima especificación (si vive como para hacerlo), quizás debería MEDIR LOS PARA ASEGURARSE DE QUE LAS MAMPARAS ROBOTS CABEN, ¡IDIOTA!" + IDS_INTEL_25804 "Carta: ¿Rumor ?@Bill\n\n¿Es verdad lo que ha sucedido en la India? ¿Y ahora Epsilon? ¡Lo que este equipo necesita es un sindicato!\n\nRhett" + IDS_INTEL_25805 "UNUSED" + IDS_INTEL_25806 "Nota: Robots y agua@ATENCIÓN A TODO EL PERSONAL:\n\nGracias a las hábiles especificaciones de diseño del jefe de seguridad Fenster, los Súper Robots se estropean con un 60 por ciento aproximado de humedad. Seguramente no hace falta que lo apunte pero el contacto directo con el agua es una MUY MALA IDEA. Mantengan los robots alejados de las zonas húmedas." + IDS_INTEL_25807 "Carta: Respueta de Martha@Clark\nMadre me mandó tu carta. Debes pensar que soy idiota. ¿Volver contigo después de dejarme en Marruecos? Estoy destrozada, Clark. Vagué por el desierto durante semanas, con delirios de venganza, hasta que los nómadas bereberes me encontraron a punto de morir de hambre cerca de Merzouga. Clark, me enamoré del desierto. El vacío dejado por tus mentiras y tu decepción en mi corazón se ha llenado con reverencia por el gran Sájara. Me hace más compañía de lo que tú nunca pudiste.\n\nMartha" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25808 "Memorándum de D.A.Ñ.O.: CT-180@Para: Comandante Pim\nDe: Tripulante Miller\nNo he podido terminar el análisis de la UNITY, CT-180. Parece que he pegado los casquillos de la munición al escritorio. Mantenimiento ha sido informado y mañana espero seguir trabajando." + IDS_INTEL_25809 "Memorándum de D.A.Ñ.O.: Magnus Armstrong@Para: Seguridad\nDe: Comandante Pim\n\nEl Director llegará en el transcurso del día. Seguramente querrá deleitarse con la vista de Armstrong, así que asegúrense de tener un destacamento de seguridad preparado. No queremos que ocurra algún desafortunado accidente." + IDS_INTEL_25810 "" + IDS_INTEL_25811 "" + IDS_INTEL_25812 "" + IDS_INTEL_25813 "" + IDS_INTEL_25814 "" + IDS_INTEL_25815 "" + IDS_INTEL_25816 "" + IDS_INTEL_25817 "" + IDS_INTEL_25818 "" + IDS_INTEL_25819 "" + IDS_INTEL_25820 "" + IDS_INTEL_25821 "" + IDS_INTEL_25822 "" + IDS_INTEL_25823 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25824 "" + IDS_INTEL_25825 "" + IDS_INTEL_25826 "" + IDS_INTEL_25827 "" + IDS_INTEL_25828 "" + IDS_INTEL_25829 "" + IDS_INTEL_25830 "" + IDS_INTEL_25831 "" + IDS_INTEL_25832 "" + IDS_INTEL_25833 "" + IDS_INTEL_25834 "" + IDS_INTEL_25835 "" + IDS_INTEL_25836 "" + IDS_INTEL_25837 "" + IDS_INTEL_25838 "" + IDS_INTEL_25839 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25840 "" + IDS_INTEL_25841 "" + IDS_INTEL_25842 "" + IDS_INTEL_25843 "" + IDS_INTEL_25844 "" + IDS_INTEL_25845 "" + IDS_INTEL_25846 "" + IDS_INTEL_25847 "" + IDS_INTEL_25848 "" + IDS_INTEL_25849 "" + IDS_INTEL_25850 "" + IDS_INTEL_25851 "" + IDS_INTEL_25852 "" + IDS_INTEL_25853 "" + IDS_INTEL_25854 "" + IDS_INTEL_25855 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25856 "" + IDS_INTEL_25857 "" + IDS_INTEL_25858 "" + IDS_INTEL_25859 "" + IDS_INTEL_25860 "" + IDS_INTEL_25861 "Memorándum de D.A.Ñ.O.: Pensamiento positivo@Para: Todo el personal\nDe: Megan O'Malledy, Oficial moral\n\nMe doy cuenta de que trabajamos en una industria cruel y dolorosa que se enorgullece de causar la destrucción y la miseria, pero eso no es excusa para ser negativo. Últimamente he oído muchas quejas. Sé que a algunos no os han gustado los uniformes que diseñé. O el nuevo logotipo. No importa, en serio. No me habéis hecho daño. Sólo tengo que sonreír y pensar que todo va estupendamente. Cuando la gente me lanza un reproche, lo atrapo y le doy la vuelta. Bastardos sin corazón. Espero que ardáis todos en el infierno." + IDS_INTEL_25862 "" + IDS_INTEL_25863 "" + IDS_INTEL_25864 "" + IDS_INTEL_25865 "" + IDS_INTEL_25866 "" + IDS_INTEL_25867 "" + IDS_INTEL_25868 "" + IDS_INTEL_25869 "" + IDS_INTEL_25870 "" + IDS_INTEL_25871 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25872 "" + IDS_INTEL_25873 "" + IDS_INTEL_25874 "" + IDS_INTEL_25875 "" + IDS_INTEL_25876 "" + IDS_INTEL_25877 "" + IDS_INTEL_25878 "" + IDS_INTEL_25879 "" + IDS_INTEL_25880 "" + IDS_INTEL_25881 "Última voluntad y testamento@Última voluntad y testamento\n\nYo, Frank J. Thompson, estando en pleno uso de mis facultades, dejo mi coche y mi colección de cómics a mi sobrino, Chuck. Los 5.000 dólares en efectivo debajo del colchón son para mamá para cubrir mi alquiler del último año. Siento que sea tan tarde, mamá. ¡A mi inútil hermano Larry, no le dejo NADA! Pensándolo bien, Lar, te dejo este consejo: consigue una vida... ¡porque no conseguirás nada de lo que queda de la mía!" + IDS_INTEL_25882 "Carta de amor@Fred,\nSiempre te he querido.\nGordon" + IDS_INTEL_25883 "" + IDS_INTEL_25884 "" + IDS_INTEL_25885 "" + IDS_INTEL_25886 "" + IDS_INTEL_25887 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25888 "" + IDS_INTEL_25889 "" + IDS_INTEL_25890 "" + IDS_INTEL_25891 "" + IDS_INTEL_25892 "" + IDS_INTEL_25893 "" + IDS_INTEL_25894 "" + IDS_INTEL_25895 "" + IDS_INTEL_25896 "" + IDS_INTEL_25897 "" + IDS_INTEL_25898 "" + IDS_INTEL_25899 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25920 "" + IDS_INTEL_25921 "Carta: Tío Winston@Querido Eustace,\n\nNo he podido ponerme en contacto contigo por teléfono en toda la tarde así que me veo obligado a escribirte. Hablé con el tío Winston hoy. Se siente mucho mejor tras haber expulsado la piedra del riñón. El doctor ha dicho que era tan grande como el diamante Esperanza. Estoy segura que apreciará mucho una llamada de su sobrino favorito pero supongo que es mucho pedir. \n\nTu madre" + IDS_INTEL_25922 "Carta: Felicia Pullbutter@Querido Eustace,\n\nMe encontré con Shirley Pullbutter en el club anoche. Tenía noticias MUY intrigantes sobre Felicia. Parece que su marido aquel grosero espantoso de Edinburgh, se suicidió colgándose en el sótano el mes pasado, lo cual quiere decir que Felicia ¡está soltera de nuevo! Sé que siempre te ha parecido un poco fea pero no la has visto después de la electrolisis y la cirugía dental. Sus quemaduras han casi desaparecido y ya no son tan prominentes así que casi puede cerrar la boca del todo.\n\nTu madre" + IDS_INTEL_25923 "Nota: Operación manipulador@TODO EL PERSONAL\n\nAsegúrense de que el manipulador ha tenido tiempo suficiente de calentar antes de operar o puede resultar en reflujo de su contenido. El incidente de la semana pasada tuvo que ser limpiado en varios días.\n\nUn servicio técnico ha sido llamado pero tengan un poco de consideración mientras llega." + IDS_INTEL_25924 "Documento de D.A.Ñ.O.: Plan de RR.PP. página 1@CONFIDENCIAL\nPara: El Director exclusivamente\n\nRe: Plan de RR.PP. revisado: Impresión\n\nA partir de mayo, publicaremos anuncios de páginas completas en las revistas Criminalidad y Villano Máximo. También tenemos programadas varias entrevistas a punta de pistola para varios periódicos europeos, además de un lote de amenazas de muerte y cartas de extorsión para la prensa norteamericana.\n\nPublicaremos nuestros programas de RR.PP. de radio y televisión por separado." + IDS_INTEL_25925 "Memorándum de D.A.Ñ.O.: Higiene@Para: Recursos Humanos\nDe: Comandante adjunto Saperstein\n\nEl olor corporal del esbirro Frankel empieza a afectar a nuestra moral. Dos hombres me han hecho preguntas sobre traslados en los últimos tres días." + IDS_INTEL_25926 "Memorándum de D.A.Ñ.O.: Higiene@Para: Todos los empleados\nDe: Recursos Humanos\n\nA partir del próximo martes, hemos establecido un servicio de lavandería obligatorio para todos los esbirros de la guarida secreta. Dejen la ropa sucia en la cueva D antes de las 9 de la mañana. Los empleados que no lo hagan recibirán una penalización de sueldo del 50 por ciento de la semana. Tengan en cuenta la comodidad y el bienestar de sus compañeros y recuerden que trabajamos en un ambiente subterráneo poco ventilado. Gracias por su colaboración." + IDS_INTEL_25927 "Documento D.A.Ñ.O.:Página 2 del plan de RR.PP.@CONFIDENCIAL: sólo para el Director\n\nRe: Plan de RR.PP. revisado: Radio\n\nNuestra agenda de radio es algo más relajada que el año pasado, pero tenemos un par de eventos organizados que serán muy emocionantes. Primero, una aparición como invitado en el programa de radio de Mark Mulroy. Tendrá que llevar consigo un arma de fuego para dejar su opinión clara pero creo que será buena publicidad. También hemos adquirido la K.H.R.M., emisora de radio de Anaheim. El nuevo formato será música surf con mensajes subliminales." + IDS_INTEL_25928 "Documento de D.A.Ñ.O.: Página 3 plan RR.PP. @CONFIDENCIAL: sólo para el Director\n\nRe: Plan de RR.PP. revisado: Televisión\n\nLa televisión es de nuevo los cimientos de nuestros esfuerzos de RR.PP. Sólo en el cuatrimestre que comienza, hemos establecido interrupciones para cinco programas de mañana, siete de hora punta y dos tarde por la noche, para poder emitir mensajes del día del Juicio Final. También estamos intentando conseguir que aparezca en la tertulia de la noche, incluyendo cinco minutos de su rutina diaria." + IDS_INTEL_25929 "Carta: Reclusión@Estimado Eustace,\n\nPor favor, no me digas que estás entrando en otra de tus fases de reclusión. No te soporto cuando no te encuentras disponible emocionalmente. Es en estos momentos cuando pienso que debería haber tenido un perro pastor en vez de un hijo. Los perros son estúpidos y poco higiénicos pero al menos muestran aprecio.\n\nTu madre,\n\nP.D.: La tía Phyllis te manda su amor." + IDS_INTEL_25930 "Plan de invasión, parte I@Plan de invasión de Khios\n\nHemos completado nuestro análisis táctico de la situación de Khios y hemos determinado lo siguiente:\n\nParte I. Llegada\nSólo hay una forma de llegar a la isla por mar: a través de una cueva que asciende desde una pequeña playa en la costa occidental hasta los acantilados. Es una ruta peligrosa pero con los Súper soldados abriéndonos paso, evitaremos cualquier resistencia en nuestro camino. El Submarino Súper Secreto debería poder dejarnos junto a la playa para el desembarco." + IDS_INTEL_25931 "Plan de invasión, parte II@Plan de invasión de Khios\n\nParte II. Ataque\nHistóricamente hablando, los habitantes de Khios han podido aprovechar siempre las ventajas tácticas que ofrece el terreno implacable de la isla. Ninguna fuerza de invasión convencional ha podido nunca completar la escalada imposible desde la costa. Todo lo que los defensores tienen que hacer es verter aceite hirviendo por el acantilado y se ha acabado el asalto. Nuestros Súper Soldados dejarán sin sentido esta táctica y así aplastaremos cualquier resistencia organizada un un segundo." + IDS_INTEL_25932 "Plan de invasión, parte III@Plan de invasión de Khios\n\nParte III.Ocupación\nUna vez asegurada la isla, comenzará la operación ocupación, la iniciación de la emancipación de la nación. La fase uno comienza a través de un inventario de los residentes vivos de la isla, seguida de la fase dos, enviarles a todos a una compañía farmacéutica para realizar experimentos médicos. Para la tercera fase, enviaremos una nota a la prensa internacional que anuncie el establecimiento del Parque temático Aventura Feliz de D.A.Ñ.O. en la isla." + IDS_INTEL_25933 "" + IDS_INTEL_25934 "" + IDS_INTEL_25935 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25936 "" + IDS_INTEL_25937 "" + IDS_INTEL_25938 "" + IDS_INTEL_25939 "" + IDS_INTEL_25940 "" + IDS_INTEL_25941 "Memorándum de D.A.Ñ.O.: Asesinatos@Para: Dmitrij Volkov\nDe: El Director\n\nBien, su solución de los mimos fue tan desastre como esperaba. No es que Isako haya tenido más éxito. Estoy empezando a cuestionar su valor para la organización. Deberíamos haber seleccionado al candidato de Australia." + IDS_INTEL_25942 "Memorándum de D.A.Ñ.O.: Visita sorpresa@Para: Comandante asociado Gudmundson\nDe: Carly Isadora Tehore, coordinador de actividades\n\nALERTA DE CÓDIGO ROJO\n\nAcabo de hablar por teléfono con la madre del Director. Está planeando una visita sorpresa la semana que viene hasta octubre y quiere que le prepare la casa de invitados para ella. Me he ofrecido a hacerle la reserva de los billetes pero ha dicho que no quiere volver a terminar en Burma. ¿Qué puedo hacer?" + IDS_INTEL_25943 "Memorándum de D.A.Ñ.O: La madre del Director@Para: Carly Isadora Tehore, coordinador de actividades\nDe: Comandante asociado Gudmundson\n\nQue no cunda el pánico. Tenemos planes de contingencia para emergencias como ésta. Según mis informes, la última visita fue evitada con la excusa 47: vacaciones de la empresa en Detroit del este. Esta vez creo que vamos a necesitar pasar a la excusa 66: Cuarentena debido a fiebre escarlata." + IDS_INTEL_25944 "" + IDS_INTEL_25945 "" + IDS_INTEL_25946 "" + IDS_INTEL_25947 "" + IDS_INTEL_25948 "" + IDS_INTEL_25949 "" + IDS_INTEL_25950 "" + IDS_INTEL_25951 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25952 "" + IDS_INTEL_25953 "" + IDS_INTEL_25954 "" + IDS_INTEL_25955 "" + IDS_INTEL_25956 "" + IDS_INTEL_25957 "" + IDS_INTEL_25958 "" + IDS_INTEL_25959 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25980 "" + IDS_INTEL_25981 "" + IDS_INTEL_25982 "" + IDS_INTEL_25983 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25984 "" + IDS_INTEL_25985 "" + IDS_INTEL_25986 "" + IDS_INTEL_25987 "" + IDS_INTEL_25988 "" + IDS_INTEL_25989 "" + IDS_INTEL_25990 "Memorándum: suero anti súper soldados@Querida Cate,\n\n Puedes incluir en tu equipo estas cápsulas de suero anti súper soldado con lanzador. Por desgracia, no está suficientemente concentrado para destruir un objetivo activo, pero puede dejar fuera de combate a soldados de manera temporal haciéndoles suficiente daño. Dispárales el suero cuando estén tocados. Sé rápida o se recuperarán y tendrás que derribarlos de nuevo.\n\nAtentamentey,\nDr. Schenker" + IDS_INTEL_25991 "" + IDS_INTEL_25992 "" + IDS_INTEL_25993 "" + IDS_INTEL_25994 "" + IDS_INTEL_25995 "" + IDS_INTEL_25996 "" + IDS_INTEL_25997 "" + IDS_INTEL_25998 "" + IDS_INTEL_25999 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26200 "" + IDS_INTEL_26201 "Carta: Llaves del apartamento@Querida Phoolwati,\n\nRezo a la divina kaamdhenu, la vaca sagrada, para que volvamos a encontrarnos. He dejado las llaves del apartamento en el sitio de siempre. Estoy deseando verte.\n\nTe quiere, Balaji\n" + IDS_INTEL_26202 "Carta: Traer flores@Balaji, mi amor,\n\n¡Cómo te he echado de menos! ¿Nos vemos más tarde en el apartamento? Cocinaré cordero tika masala con chutney a la menta.\n\nPhoolwati\n\nP.D.: Por favor, no me cojas flores de la maceta del piso de abajo. Aprecio el detalle pero los preciosos claveles blancos no florecerán si los molestas constantemente.\n" + IDS_INTEL_26203 "" + IDS_INTEL_26204 "" + IDS_INTEL_26205 "" + IDS_INTEL_26206 "" + IDS_INTEL_26207 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26208 "" + IDS_INTEL_26209 "" + IDS_INTEL_26210 "" + IDS_INTEL_26211 "" + IDS_INTEL_26212 "" + IDS_INTEL_26213 "" + IDS_INTEL_26214 "" + IDS_INTEL_26215 "" + IDS_INTEL_26216 "" + IDS_INTEL_26217 "" + IDS_INTEL_26218 "" + IDS_INTEL_26219 "" + IDS_INTEL_26220 "" + IDS_INTEL_26221 "" + IDS_INTEL_26222 "" + IDS_INTEL_26223 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26224 "" + IDS_INTEL_26225 "" + IDS_INTEL_26226 "" + IDS_INTEL_26227 "" + IDS_INTEL_26228 "" + IDS_INTEL_26229 "" + IDS_INTEL_26230 "" + IDS_INTEL_26231 "" + IDS_INTEL_26232 "" + IDS_INTEL_26233 "" + IDS_INTEL_26234 "" + IDS_INTEL_26235 "" + IDS_INTEL_26236 "" + IDS_INTEL_26237 "" + IDS_INTEL_26238 "" + IDS_INTEL_26239 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26240 "" + IDS_INTEL_26241 "Memorándum de D.A.Ñ.O.: Prisioneros@Para: Dr. Kussman\n\nThe El Director ha pedido que todos los prisioneros sean trasladados a nuestra instalación submarina en el mar Egeo. Pónganse en contacto con RR.HH. para obtener información detallada.\n" + IDS_INTEL_26242 "" + IDS_INTEL_26243 "" + IDS_INTEL_26244 "" + IDS_INTEL_26245 "" + IDS_INTEL_26246 "" + IDS_INTEL_26247 "" + IDS_INTEL_26248 "" + IDS_INTEL_26249 "" + IDS_INTEL_26250 "" + IDS_INTEL_26251 "" + IDS_INTEL_26252 "" + IDS_INTEL_26253 "" + IDS_INTEL_26254 "" + IDS_INTEL_26255 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26256 "" + IDS_INTEL_26257 "" + IDS_INTEL_26258 "" + IDS_INTEL_26259 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26359 "" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5520 + "Busca un objetivo adecuado y coloca 4 explosivos." + IDS_COOP_MISSION_OBJ_5521 + "Busca un objetivo adecuado y coloca 3 explosivos." + IDS_COOP_MISSION_OBJ_5522 + "Busca un objetivo adecuado y coloca 2 explosivos." + IDS_COOP_MISSION_OBJ_5523 + "Busca un objetivo adecuado y coloca 1 explosivo." + IDS_COOP_MISSION_OBJ_5524 + "Vuelve al punto de extracción para ser rescatado." + IDS_COOP_MISSION_OBJ_5525 "Los mimos han cogido a 4 rehenes. Sálvalos." + IDS_COOP_MISSION_OBJ_5526 "Los mimos han cogido a 3 rehenes. Sálvalos." + IDS_COOP_MISSION_OBJ_5527 "Los mimos han cogido a 2 rehenes. Sálvalos." + IDS_COOP_MISSION_OBJ_5528 "Los mimos han cogido a 1 rehén. Sálvalo." + IDS_COOP_MISSION_OBJ_5529 + "Vete al punto de extracción en el vestíbulo para recibir tu próxima misión." + IDS_COOP_MISSION_OBJ_5530 + "Consigue 50 rupias y paga a Crazy Harij para pasar por las puertas de entrada a la parte interna de la ciudad." + IDS_COOP_MISSION_OBJ_5531 + "Llega al helicóptero de UNITY para la extracción." + IDS_COOP_MISSION_OBJ_5532 "¡Cate ha muerto! ¡Misión fallida!" + IDS_COOP_MISSION_OBJ_5533 "" + IDS_COOP_MISSION_OBJ_5534 "" + IDS_COOP_MISSION_OBJ_5535 "" +END + +STRINGTABLE +BEGIN + IDS_STRING5577 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3500 "" + IDS_SEARCH_ITEM_3501 "Has encontrado un lápiz." + IDS_SEARCH_ITEM_3502 "Has encontrado una ratonera vacía." + IDS_SEARCH_ITEM_3503 "Has encontrado algunos clips." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3504 "Has encontrado un sándwich de jamón mohoso." + IDS_SEARCH_ITEM_3505 "Has encontrado una ratonera con un ratón muerto." + IDS_SEARCH_ITEM_3506 "Has encontrado un comic destrozado." + IDS_SEARCH_ITEM_3507 "Has encontrado un archivo de papeles en blanco." + IDS_SEARCH_ITEM_3508 "Has encontrado una caja de pañuelos de papel." + IDS_SEARCH_ITEM_3509 "Has encontrado una botella de tónico capilar." + IDS_SEARCH_ITEM_3510 "Has encontrado restos de barra de labios." + IDS_SEARCH_ITEM_3511 "Has encontrado algunas medias." + IDS_SEARCH_ITEM_3512 "Has encontrado un paquete de chicles." + IDS_SEARCH_ITEM_3513 "Has encontrado una goma de borrar." + IDS_SEARCH_ITEM_3514 "Has encontrado un lápiz con la goma de borrar mordida." + IDS_SEARCH_ITEM_3515 "Has encontrado una pequeña botella de ginebra." + IDS_SEARCH_ITEM_3516 "Has encontrado una grapadora atascada." + IDS_SEARCH_ITEM_3517 "Has encontrado un catálogo de material de oficina." + IDS_SEARCH_ITEM_3518 "Has encontrado cuadernos llenos de garabatos." + IDS_SEARCH_ITEM_3519 "Has encontrado un donut mordido y pasado." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3520 "Has encontrado un tenedor de plástico." + IDS_SEARCH_ITEM_3521 "Has encontrado unas tijeras para zurdos." + IDS_SEARCH_ITEM_3522 "Has encontrado una caja de chinchetas." + IDS_SEARCH_ITEM_3523 "Has encontrado seis bolígrafos negros, todos secos." + IDS_SEARCH_ITEM_3524 "Has encontrado un bote de aspirinas." + IDS_SEARCH_ITEM_3525 "Has encontrado un rotulador permanente sin tapa." + IDS_SEARCH_ITEM_3526 "¡Has encontrado un desodorante de barra sin usar!" + IDS_SEARCH_ITEM_3527 "Has encontrado un caja de pastillas de menta." + IDS_SEARCH_ITEM_3528 "Has encontrado un sello tampón sin mango." + IDS_SEARCH_ITEM_3529 "Has encontrado un trozo de queso mohoso." + IDS_SEARCH_ITEM_3530 "Has encontrado un avión de papel arrugado." + IDS_SEARCH_ITEM_3531 "Has encontrado un bote de crema de manos." + IDS_SEARCH_ITEM_3532 "Has encontrado un cepillo de dientes sucio." + IDS_SEARCH_ITEM_3533 "" + IDS_SEARCH_ITEM_3534 "" + IDS_SEARCH_ITEM_3535 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3536 "" + IDS_SEARCH_ITEM_3537 "" + IDS_SEARCH_ITEM_3538 "" + IDS_SEARCH_ITEM_3539 "" + IDS_SEARCH_ITEM_3540 "" + IDS_SEARCH_ITEM_3541 "" + IDS_SEARCH_ITEM_3542 "" + IDS_SEARCH_ITEM_3543 "" + IDS_SEARCH_ITEM_3544 "" + IDS_SEARCH_ITEM_3545 "" + IDS_SEARCH_ITEM_3546 "" + IDS_SEARCH_ITEM_3547 "" + IDS_SEARCH_ITEM_3548 "" + IDS_SEARCH_ITEM_3549 "" + IDS_SEARCH_ITEM_3550 "" + IDS_SEARCH_ITEM_3551 "Has encontrado una declaración de la renta de EE.UU. de 1958." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3552 "Has encontrado un montón de cartas de amor." + IDS_SEARCH_ITEM_3553 "Has encontrado un manual de conducta del personal." + IDS_SEARCH_ITEM_3554 "Has encontrado un informe de 387 páginas de papeles de divorcio." + IDS_SEARCH_ITEM_3555 "Has encontrado un formulario de solicitud de vacaciones." + IDS_SEARCH_ITEM_3556 "Has encontrado las últimas voluntades y testamento de alguien." + IDS_SEARCH_ITEM_3557 "Has encontrado una novela sin terminar." + IDS_SEARCH_ITEM_3558 "" + IDS_SEARCH_ITEM_3559 "" + IDS_SEARCH_ITEM_3560 "" + IDS_SEARCH_ITEM_3561 "" + IDS_SEARCH_ITEM_3562 "" + IDS_SEARCH_ITEM_3563 "" + IDS_SEARCH_ITEM_3564 "" + IDS_SEARCH_ITEM_3565 "" + IDS_SEARCH_ITEM_3566 "" + IDS_SEARCH_ITEM_3567 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3568 "" + IDS_SEARCH_ITEM_3569 "" + IDS_SEARCH_ITEM_3570 "" + IDS_SEARCH_ITEM_3571 "" + IDS_SEARCH_ITEM_3572 "" + IDS_SEARCH_ITEM_3573 "" + IDS_SEARCH_ITEM_3574 "" + IDS_SEARCH_ITEM_3575 "" + IDS_SEARCH_ITEM_3576 "Has encontrado una fotografía firmada de la Increíble Olga." + IDS_SEARCH_ITEM_3577 "Has encontrado un folleto de la Increíble Olga y sus Felinos voladores." + IDS_SEARCH_ITEM_3578 "Has encontrado la novela Tío Vanya de Anton Chejov." + IDS_SEARCH_ITEM_3579 "Has encontrado una lista de la compra de papel higiénico, jabón y zanahorias." + IDS_SEARCH_ITEM_3580 "Has encontrado un recibo de raciones del ejército." + IDS_SEARCH_ITEM_3581 "Has encontrado la novela Érase una vez en Aleppo... de Vladimir Nabokov." + IDS_SEARCH_ITEM_3582 "Has encontrado la novela Taras Bulba de Nikolay Gogol." + IDS_SEARCH_ITEM_3583 "Has encontrado el poema Venus y Madonna de Mihai Eminescu." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3584 "Has encontrado una fotografía firmada de los Felinos voladores." + IDS_SEARCH_ITEM_3585 "" + IDS_SEARCH_ITEM_3586 "" + IDS_SEARCH_ITEM_3587 "" + IDS_SEARCH_ITEM_3588 "" + IDS_SEARCH_ITEM_3589 "" + IDS_SEARCH_ITEM_3590 "" + IDS_SEARCH_ITEM_3591 "" + IDS_SEARCH_ITEM_3592 "" + IDS_SEARCH_ITEM_3593 "" + IDS_SEARCH_ITEM_3594 "" + IDS_SEARCH_ITEM_3595 "" + IDS_SEARCH_ITEM_3596 "" + IDS_SEARCH_ITEM_3597 "" + IDS_SEARCH_ITEM_3598 "" + IDS_SEARCH_ITEM_3599 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3600 "" + IDS_SEARCH_ITEM_3601 "Has encontrado una botella de vodka." + IDS_SEARCH_ITEM_3602 "Has encontrado una serie de cromos de la liga de hockey siberiana." + IDS_SEARCH_ITEM_3603 "Has encontrado una lata de carne." + IDS_SEARCH_ITEM_3604 "Has encontrado una revista llamada Camaradas sin ropa." + IDS_SEARCH_ITEM_3605 "¡Has encontrado un boleto de una rifa para unas vacaciones en la bonita ciudad de Murmansk!" + IDS_SEARCH_ITEM_3606 "Has encontrado un sello con la palabra DENEGADO." + IDS_SEARCH_ITEM_3607 "Has encontrado un mitón rojo." + IDS_SEARCH_ITEM_3608 "Has encontrado un paquete de cigarrillos yugoslavos." + IDS_SEARCH_ITEM_3609 "Has encontrado un encendedor que no funciona." + IDS_SEARCH_ITEM_3610 "Has encontrado un frailecillo muerto." + IDS_SEARCH_ITEM_3611 "Has encontrado una copia destrozada de Guerra y paz." + IDS_SEARCH_ITEM_3612 "Has encontrado un manual de reglas de conducta del ejército." + IDS_SEARCH_ITEM_3613 "Has encontrado una fotografía firmada de un tractor." + IDS_SEARCH_ITEM_3614 "Has encontrado un poco pelusa." + IDS_SEARCH_ITEM_3615 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3616 "" + IDS_SEARCH_ITEM_3617 "" + IDS_SEARCH_ITEM_3618 "" + IDS_SEARCH_ITEM_3619 "" + IDS_SEARCH_ITEM_3620 "" + IDS_SEARCH_ITEM_3621 "" + IDS_SEARCH_ITEM_3622 "" + IDS_SEARCH_ITEM_3623 "" + IDS_SEARCH_ITEM_3624 "" + IDS_SEARCH_ITEM_3625 "" + IDS_SEARCH_ITEM_3626 "Has encontrado una caja de pastillas de menta." + IDS_SEARCH_ITEM_3627 "Has encontrado un trozo de chicle mascado." + IDS_SEARCH_ITEM_3628 "Has encontrado una pelusa." + IDS_SEARCH_ITEM_3629 "Has encontrado un yoyó." + IDS_SEARCH_ITEM_3630 "Has encontrado una entrada para el cine." + IDS_SEARCH_ITEM_3631 "Has encontrado una manzana podrida." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3632 "Has encontrado una navaja." + IDS_SEARCH_ITEM_3633 "Has encontrado una lista de la compra." + IDS_SEARCH_ITEM_3634 "Has encontrado un peine de plástico." + IDS_SEARCH_ITEM_3635 "Has encontrado la carta querido John." + IDS_SEARCH_ITEM_3636 "Has encontrado un pañuelo usado." + IDS_SEARCH_ITEM_3637 "Has encontrado un papel arrugado." + IDS_SEARCH_ITEM_3638 "Has encontrado un par de dados." + IDS_SEARCH_ITEM_3639 "Has encontrado una baraja." + IDS_SEARCH_ITEM_3640 "Has encontrado varias vitaminas en malas condiciones." + IDS_SEARCH_ITEM_3641 "Has encontrado medio caramelo masticado para la tos con sabor a cereza." + IDS_SEARCH_ITEM_3642 "Has encontrado un caramelo mentolado para la tos." + IDS_SEARCH_ITEM_3643 "Has encontrado un trozo de pañuelo de papel utilizado por alguien con un buen resfriado." + IDS_SEARCH_ITEM_3644 "Has encontrado una bola de papel de aluminio del tamaño de un puño." + IDS_SEARCH_ITEM_3645 "Has encontrado una foto de un bebé feo." + IDS_SEARCH_ITEM_3646 "Has encontrado el papel de un caramelo." + IDS_SEARCH_ITEM_3647 "Has encontrado algunos rizadores de pestañas." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3648 "Has encontrado una goma rota." + IDS_SEARCH_ITEM_3649 "Has encontrado un soldado del ejército de plástico." + IDS_SEARCH_ITEM_3650 "Has encontrado un diente." + IDS_SEARCH_ITEM_3651 "Has encontrado algunas uñas de pies." + IDS_SEARCH_ITEM_3652 "Has encontrado algunas canicas." + IDS_SEARCH_ITEM_3653 "Has encontrado un poco de hilo dental usado." + IDS_SEARCH_ITEM_3654 "Has encontrado una pata de conejo de la suerte." + IDS_SEARCH_ITEM_3655 "Has encontrado un botón suelto." + IDS_SEARCH_ITEM_3656 "Has encontrado algunas migas de pan." + IDS_SEARCH_ITEM_3657 "" + IDS_SEARCH_ITEM_3658 "" + IDS_SEARCH_ITEM_3659 "" + IDS_SEARCH_ITEM_3660 "" + IDS_SEARCH_ITEM_3661 "Has encontrado un mitón rosa." + IDS_SEARCH_ITEM_3662 "Has encontrado restos de bálsamo de aceite de pescado para labios." + IDS_SEARCH_ITEM_3663 "Has encontrado una entrada para La Increíble Olga y sus Felinos voladores de la sesión matinal del domingo." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3664 "Has encontrado un pastel ruso." + IDS_SEARCH_ITEM_3665 "" + IDS_SEARCH_ITEM_3666 "" + IDS_SEARCH_ITEM_3667 "" + IDS_SEARCH_ITEM_3668 "" + IDS_SEARCH_ITEM_3669 "" + IDS_SEARCH_ITEM_3670 "" + IDS_SEARCH_ITEM_3671 "" + IDS_SEARCH_ITEM_3672 "" + IDS_SEARCH_ITEM_3673 "" + IDS_SEARCH_ITEM_3674 "" + IDS_SEARCH_ITEM_3675 "" + IDS_SEARCH_ITEM_3676 "" + IDS_SEARCH_ITEM_3677 "" + IDS_SEARCH_ITEM_3678 "" + IDS_SEARCH_ITEM_3679 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3680 "" + IDS_SEARCH_ITEM_3681 "Has encontrado algunas fichas de damas chinas sueltas." + IDS_SEARCH_ITEM_3682 "Has encontrado algunos palotes de fresa. ¡Qué ricos!" + IDS_SEARCH_ITEM_3683 "Has encontrado una flor de cerezo aplastada." + IDS_SEARCH_ITEM_3684 "Has encontrado restos de carmín." + IDS_SEARCH_ITEM_3685 "Has encontrado un broche." + IDS_SEARCH_ITEM_3686 "Has encontrado un tubo de brillo de labios." + IDS_SEARCH_ITEM_3687 "Has encontrado una entrada para la película Kaiju Soshingeki." + IDS_SEARCH_ITEM_3688 "Has encontrado un juego de pestañas postizas." + IDS_SEARCH_ITEM_3689 "Has encontrado una tarjeta de crédito." + IDS_SEARCH_ITEM_3690 "Has encontrado un frasco de perfume tsubaki." + IDS_SEARCH_ITEM_3691 "Has encontrado un espejo roto." + IDS_SEARCH_ITEM_3692 "Has encontrado un amuleto de madera para alejar el mal." + IDS_SEARCH_ITEM_3693 "Has encontrado un pañuelo de encaje." + IDS_SEARCH_ITEM_3694 "Has encontrado un amuleto de oro para conservar la salud." + IDS_SEARCH_ITEM_3695 "Has encontrado un amuleto de plata para tener suerte en el amor." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3696 "Has encontrado un caramelo masticable de judías pintas reblandecido." + IDS_SEARCH_ITEM_3697 "Has encontrado un trozo mohoso de ebi nigiri envuelto en un pañuelo." + IDS_SEARCH_ITEM_3698 "Has encontrado un monedero vacío." + IDS_SEARCH_ITEM_3699 "" + IDS_SEARCH_ITEM_3700 "" + IDS_SEARCH_ITEM_3701 "Has encontrado una botella del súper limpiador naranja del maestro Chi." + IDS_SEARCH_ITEM_3702 "Has encontrado un lápiz de caligrafía." + IDS_SEARCH_ITEM_3703 "Has encontrado un pequeño costurero." + IDS_SEARCH_ITEM_3704 "Has encontrado una rebanada de pan shoku a medio comer." + IDS_SEARCH_ITEM_3705 "Has encontrado una raíz de wasabi." + IDS_SEARCH_ITEM_3706 "Has encontrado una botella de salsa de soja." + IDS_SEARCH_ITEM_3707 "" + IDS_SEARCH_ITEM_3708 "" + IDS_SEARCH_ITEM_3709 "" + IDS_SEARCH_ITEM_3710 "" + IDS_SEARCH_ITEM_3711 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3712 "" + IDS_SEARCH_ITEM_3713 "" + IDS_SEARCH_ITEM_3714 "" + IDS_SEARCH_ITEM_3715 "" + IDS_SEARCH_ITEM_3716 "" + IDS_SEARCH_ITEM_3717 "" + IDS_SEARCH_ITEM_3718 "" + IDS_SEARCH_ITEM_3719 "" + IDS_SEARCH_ITEM_3720 "" + IDS_SEARCH_ITEM_3721 "Has encontrado un pañuelo con unas iniciales." + IDS_SEARCH_ITEM_3722 "Has encontrado una bolsa de tabaco para mascar." + IDS_SEARCH_ITEM_3723 "Has encontrado una nota con puntuaciones de críquet." + IDS_SEARCH_ITEM_3724 "Has encontrado una imagen de Shasti, la diosa felina bengalí protectora de los niños." + IDS_SEARCH_ITEM_3725 "Una figura tallada de Lakshmi, diosa de la prosperidad y la riqueza." + IDS_SEARCH_ITEM_3726 "Has encontrado una imagen de Durga, diosa de la felicidad en el matrimonio." + IDS_SEARCH_ITEM_3727 "Una imagen de Kartikeya, el segundo hijo de Shiva y, dios de la guerra y la destrucción." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3728 "Has encontrado una imagen de la diosa Gauri, encargada de dar una joven muchacha al marido virtuoso." + IDS_SEARCH_ITEM_3729 "Un amuleto de Angaraka para librar de las deudas y las enfermedades de la piel. " + IDS_SEARCH_ITEM_3730 "Has encontrado unas vainas sueltas de cardamomo." + IDS_SEARCH_ITEM_3731 "Una estatuilla de Kaamdhenu, la vaca sagrada que garantiza los deseos." + IDS_SEARCH_ITEM_3732 "Un pequeño amuleto de plata de Saraswati, la diosa con cuatro manos, tocando la veena." + IDS_SEARCH_ITEM_3733 "Has encontrado un pañuelo de batik." + IDS_SEARCH_ITEM_3734 "Has encontrado un tamarindo podrido." + IDS_SEARCH_ITEM_3735 "Has encontrado una koorka a medio comer." + IDS_SEARCH_ITEM_3736 "" + IDS_SEARCH_ITEM_3737 "" + IDS_SEARCH_ITEM_3738 "" + IDS_SEARCH_ITEM_3739 "" + IDS_SEARCH_ITEM_3740 "" + IDS_SEARCH_ITEM_3741 "Has encontrado un tarro de Nuttela." + IDS_SEARCH_ITEM_3742 "Has encontrado una baraja de Teen Pathi." + IDS_SEARCH_ITEM_3743 "Has encontrado un bote de aceite de coco." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3744 "Has encontrado un bote de polvos para la cara." + IDS_SEARCH_ITEM_3745 "Has encontrado un lorí relleno." + IDS_SEARCH_ITEM_3746 "Has encontrado un bote de henna y aceite de mehendi." + IDS_SEARCH_ITEM_3747 "Has encontrado un bol mohoso de Patialashahi de carne." + IDS_SEARCH_ITEM_3748 "Has encontrado una bolsa de arroz basmati lleno de gorgojos." + IDS_SEARCH_ITEM_3749 "Has encontrado un libro titulado Atithi Devo Bhava." + IDS_SEARCH_ITEM_3750 "Has encontrado un par de palitos Gilli Danda." + IDS_SEARCH_ITEM_3751 "Has encontrado un bote de aceite amla para el pelo." + IDS_SEARCH_ITEM_3752 "Has encontrado un bote de chutney a la menta." + IDS_SEARCH_ITEM_3753 "Has encontrado un bote de ghee." + IDS_SEARCH_ITEM_3754 "" + IDS_SEARCH_ITEM_3755 "" + IDS_SEARCH_ITEM_3756 "" + IDS_SEARCH_ITEM_3757 "" + IDS_SEARCH_ITEM_3758 "" + IDS_SEARCH_ITEM_3759 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3760 "" + IDS_SEARCH_ITEM_3761 "Has encontrado una factura de té negro de la India." + IDS_SEARCH_ITEM_3762 "Una selección de versos del ramayana de Valmiki." + IDS_SEARCH_ITEM_3763 "Has encontrado una copia de Meghaduta, el mensajero de las nubes, de Kalidasa." + IDS_SEARCH_ITEM_3764 "Funda de un disco: música religiosa de la India, de Alain Daniélou." + IDS_SEARCH_ITEM_3765 "Has encontrado la receta del ghost ki kashmiri biryani." + IDS_SEARCH_ITEM_3766 "Has encontrado la receta de cerdo vindaloo." + IDS_SEARCH_ITEM_3767 "Has encontrado una factura de los servicios de limpieza de cristales Nanda Devi." + IDS_SEARCH_ITEM_3768 "Una oración a Bhavani, patrona de las mujeres trabajadoras. " + IDS_SEARCH_ITEM_3769 "Una oración a Banka-Mundi, diosa cazadora de los Khoud, para no tener miedo de las fieras de la jungla." + IDS_SEARCH_ITEM_3770 "Has encontrado una copia del libro: consejos y trucos Mehendi." + IDS_SEARCH_ITEM_3771 "" + IDS_SEARCH_ITEM_3772 "" + IDS_SEARCH_ITEM_3773 "" + IDS_SEARCH_ITEM_3774 "" + IDS_SEARCH_ITEM_3775 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4768 "Una identificación de D.A.Ñ.O. para acceder a las zonas de seguridad." + IDS_KEY_DESC_4769 "La etiqueta de este tubo elevador de vacío dice: pieza de repuesto para la unidad de procesamiento de datos M-9." + IDS_KEY_DESC_4770 "El código de seguridad de la unidad de procesamiento de datos M-9." + IDS_KEY_DESC_4771 "Se ha utilizado un dispositivo de puenteo para acceder a la unidad de procesamiento de datos." + IDS_KEY_DESC_4772 "La contraseña necesaria para iniciar la unidad de procesamiento de datos M-9." + IDS_KEY_DESC_4773 "Es una lista de la identificación del archivo para encontrar información relacionada con el proyecto: Omega." + IDS_KEY_DESC_4774 "Las rupias son las unidades monetarias básicas de la India." + IDS_KEY_DESC_4775 "Éstas son las llaves de contacto de una moto de nieve." + IDS_KEY_DESC_4776 "El azúcar refinada puede usarse para endulzar el café o detener la maquinaria." + IDS_KEY_DESC_4777 "El azúcar refinada puede usarse para endulzar el café o detener la maquinaria." + IDS_KEY_DESC_4778 "Las gafas del Dr. Schenker son inconfundibles. Sus cristales gruesos están llenos de arañazos y parece que no los ha limpiado en meses. Resulta difícil imaginar cómo puede ver con ellas." + IDS_KEY_DESC_4779 "La llave de encendido para una moto de nieve." + IDS_KEY_DESC_4780 "Cincuenta rupias. Quizás podrías dárselas a Crazy Harij para que abra las puertas de la ciudad." + IDS_KEY_DESC_4781 "Se necesita el catálogo para conseguir la versión 1.0 del manual de instrucciones de servicios del Súper Ordenador del Departamento de servicios del Súper Ordenador ." + IDS_KEY_DESC_4782 "Se necesita esta llave para manejar la grúa de carga en la plataforma del submarino. " + IDS_KEY_DESC_4783 "Esta tarjeta de seguridad se puede usar en lectores de tarjetas para acceder a áreas restringidas. " +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3776 "" + IDS_SEARCH_ITEM_3777 "" + IDS_SEARCH_ITEM_3778 "" + IDS_SEARCH_ITEM_3779 "" + IDS_SEARCH_ITEM_3780 "" + IDS_SEARCH_ITEM_3781 "Has encontrado un globo desinflado." + IDS_SEARCH_ITEM_3782 "Has encontrado un bote de maquillaje para los carnavales." + IDS_SEARCH_ITEM_3783 "Has encontrado un kazoo roto." + IDS_SEARCH_ITEM_3784 "Has encontrado un guante blanco." + IDS_SEARCH_ITEM_3785 "Has encontrado un pañuelo rojo, amarillo y morado." + IDS_SEARCH_ITEM_3786 "Has encontrado una pegatina de un elefante." + IDS_SEARCH_ITEM_3787 "Has encontrado un aplicador de sombra de ojos azul." + IDS_SEARCH_ITEM_3788 "Has encontrado un tubo de maquillaje rojo para teatro." + IDS_SEARCH_ITEM_3789 "Has encontrado un diccionario de mimo a inglés." + IDS_SEARCH_ITEM_3790 "Has encontrado una petición para incluir la pantomima como deporte olímpico." + IDS_SEARCH_ITEM_3791 "Has encontrado un manual titulado: mímica de forma fácil." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3792 "Has encontrado un clavel rosa." + IDS_SEARCH_ITEM_3793 "Has encontrado una botella de vino de jerez para cocinar." + IDS_SEARCH_ITEM_3794 "Has encontrado un tubo de maquillaje blanco para teatro ." + IDS_SEARCH_ITEM_3795 "" + IDS_SEARCH_ITEM_3796 "" + IDS_SEARCH_ITEM_3797 "" + IDS_SEARCH_ITEM_3798 "" + IDS_SEARCH_ITEM_3799 "" + IDS_SEARCH_ITEM_3800 "" +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7500 "" + IDS_DECISIONS_7501 "Háblame de los objetivos." + IDS_DECISIONS_7502 "Háblame sobre mi equipo." + IDS_DECISIONS_7503 "Háblame sobre los puntos de habilidad." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7008 "No tienes las llaves." + IDS_TRANSMISSIONS_7009 "La moto de nieve no tiene combustible." + IDS_TRANSMISSIONS_7010 "Falta un tubo elevador de vacío." + IDS_TRANSMISSIONS_7011 "Necesitas una contraseña para acceder al ordenador." + IDS_TRANSMISSIONS_7012 "Introduce el índice." + IDS_TRANSMISSIONS_7013 "No funciona sin pilas." + IDS_TRANSMISSIONS_7014 "Es demasiado pesado para levantarlo." + IDS_TRANSMISSIONS_7015 "Me he encontrado 10 rupias." + IDS_TRANSMISSIONS_7016 "He encontrado 10 rupias. Sólo necesito 40 rupias más." + IDS_TRANSMISSIONS_7017 "He encontrado 10 rupias. Sólo necesito 30 rupias más." + IDS_TRANSMISSIONS_7018 "He encontrado 10 rupias. Sólo necesito 20 rupias más." + IDS_TRANSMISSIONS_7019 "He encontrado 10 rupias. Sólo necesito 10 rupias más." + IDS_TRANSMISSIONS_7020 "¡Eso hacen 50 rupias! Vayamos hacia la entrada." + IDS_TRANSMISSIONS_7021 "He encontrado una nota de Balaji a su amante. Tenemos que encontrar el juego de llaves que le dejó por aquí cerca. Rastrea la zona y encuéntralo." + IDS_TRANSMISSIONS_7022 "He encontrado una nota de la amante de Balaji para encontrarse con él en el apartamento. Busca un macetero fuera y encuentra un lugar al otro lado de la calle. Podemos fotografiarles a través de la ventana." + IDS_TRANSMISSIONS_7023 "He encontrado las llaves del apartamento de Balaji. Registremos el lugar en busca de pistas." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7024 "The bomb at target 2 has been defused." + IDS_TRANSMISSIONS_7025 "Spacesuit required." + IDS_TRANSMISSIONS_7026 "Replace O2 Tank." + IDS_TRANSMISSIONS_7027 "The bomb at target 3 has been defused." + IDS_TRANSMISSIONS_7028 "Target 1 destroyed." + IDS_TRANSMISSIONS_7029 "Target 2 destroyed." + IDS_TRANSMISSIONS_7030 "Target 3 destroyed." + IDS_TRANSMISSIONS_7031 "Time limit reached." + IDS_TRANSMISSIONS_7032 "All targets destroyed." +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7504 "Ahora mismo nada, gracias." + IDS_DECISIONS_7505 "Reproducir cinta 1." + IDS_DECISIONS_7506 "Reproducir cinta 2." + IDS_DECISIONS_7507 "Reproducir cinta 3." + IDS_DECISIONS_7508 "Reproducir cinta 4." + IDS_DECISIONS_7509 "Reproducir cinta 5." + IDS_DECISIONS_7510 "Reproducir cinta 6." + IDS_DECISIONS_7511 "Introduce el número de identificación de archivo del proyecto: Omega." + IDS_DECISIONS_7512 "Introduce los números al azar." +END + +STRINGTABLE +BEGIN + IDS_MISSION_12_NAME "CAPÍTULO 13. Terror en las Profundidades" + IDS_MISSION_13_NAME "CAPÍTULO 14. Final" + IDS_MISSION_14_NAME "CAPÍTULO 15. Ataque preventivo" + IDS_MISSION_09_NAME7 "" + IDS_MISSION_09_NAME8 "CAPÍTULO I. El Rescate" + IDS_MISSION_09_NAME9 "CAPÍTULO II. El Súper Ordenador" + IDS_MISSION_09_NAME10 "CAPÍTULO III. La Organización" + IDS_MISSION_09_NAME11 "CAPÍTULO IV. Rastrear y borrar" + IDS_MISSION_09_NAME12 "CAPÍTULO V. Mimo para matar" + IDS_MISSION_09_NAME13 "Demo." + IDS_MISSION_09_NAME14 "Demo." + IDS_MISSION_09_NAME15 "Demo." + IDS_MISSION_09_NAME16 "PRUEBA PRUEBA PRUEBA PRUEBA" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEMP_BRIEF5 "Poco después de repeler el demoledor ataque al cuartel general de UNITY por parte de una banda de mimos armados con ametralladoras, Cate parte para librar a Armstrong de las garras de D.A.Ñ.O.\n\nPor desgracia, parece que la rebelión de los mimos no ha sido sofocada por completo. Los asesinos han lanzado un nuevo ataque y tienen el firme propósito de ocasionar tantos destrozos como les sea posible en UNITY.\n\nComo Cate se ha marchado, el equipo de interceptación tendrá que hacer frente en solitario a la crisis.\n" + IDS_MISSION_TEMP_BRIEF6 "Durante una peligrosa misión en las profundidades de la Unión Soviética, Cate recibe órdenes de sabotear una torre de comunicaciones en el remoto puesto de avanzada de Siberia. Su primer objetivo es conseguir los explosivos con los que va a llevar a cabo la misión. Después sólo tendrá que colocar las cargas en la base de la torre y salir de la zona antes de que lleguen los refuerzos.\n\nTrucos: sólo porque te vean no tienes que luchar. A menudo podrás evitar a los perseguidores y esconderte hasta que abandonen tu búsqueda. Tampoco olvides registrar los armarios, cajones de mesas y a los enemigos neutralizados en busca de información objetos útiles." + IDS_MISSION_TEMP_BRIEF7 "Instrucciones de la misión demo en UNITY" + IDS_MISSION_TEMP_BRIEF8 "Cate ha venido a Akron, Ohio, en busca de pistas sobre el proyecto: Omega, un enigmático plan soviético que amenaza con iniciar la Tercera Guerra Mundial.\n\nCuando su misión toma un giro repentino e inesperado, se encuentra en un aparcamiento de trailers rodeada de ninjas asesinos y un tornado acercándose. Su única esperanza para escapar era ganar a los ninjas y su misterioso líder, Isako, antes de terminar en algún lugar del arco iris a metro y medio bajo tierra." + IDS_MISSION_TEMP_BRIEF9 "Este nivel demuestra la nueva estructura hidráulica de LithTech Jupiter System y el uso de calcomanías." + IDS_MISSION_TEMP_BRIEF10 + "Este nivel presenta algunos personajes nuevos de No One Lives Forever 2." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME11 " " + IDS_MISSION_00_LEVEL_00_NAME12 " " + IDS_MISSION_00_LEVEL_00_NAME13 " " + IDS_MISSION_00_LEVEL_00_NAME14 " " + IDS_MISSION_00_LEVEL_00_NAME15 " " + IDS_MISSION_00_LEVEL_00_NAME16 " " + IDS_MISSION_00_LEVEL_00_NAME17 " " + IDS_MISSION_00_LEVEL_00_NAME18 " " + IDS_MISSION_00_LEVEL_00_NAME19 " " + IDS_MISSION_00_LEVEL_00_NAME20 " " + IDS_MISSION_00_LEVEL_00_NAME21 " " + IDS_MISSION_00_LEVEL_00_NAME22 " " + IDS_MISSION_00_LEVEL_00_NAME23 " " + IDS_MISSION_00_LEVEL_00_NAME24 " " + IDS_MISSION_00_LEVEL_00_NAME25 " " + IDS_MISSION_00_LEVEL_00_NAME26 " " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_31 "A los enemigos les dan ataques de risa incontrolables, lo que los incapacita hasta que el efecto desaparece." + IDS_WEAPON_DESC_32 "Un subfusil Gordon modificado. El cañón se ha modificado para integrarle un silenciador." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4528 "Gafas del Dr. Schenker" + IDS_KEY_ITEM_4529 "Llaves de la moto de nieve" + IDS_KEY_ITEM_4530 "Cincuenta rupias" + IDS_KEY_ITEM_4531 "Una tarjeta de seguridad que proporciona acceso a todo" + IDS_KEY_ITEM_4532 "Tarjeta de seguridad base sub." + IDS_KEY_ITEM_4533 "Una grabadora " + IDS_KEY_ITEM_4534 "La llave de la grúa." + IDS_KEY_ITEM_4535 "Catálogo de productos de servicios del Súper Ordenador." + IDS_KEY_ITEM_4536 "Un destornillador" + IDS_KEY_ITEM_4537 "Una cinta de audio con una etiqueta roja." + IDS_KEY_ITEM_4538 "Una cinta de audio con una etiqueta azul." + IDS_KEY_ITEM_4539 "Una cinta de audio con una etiqueta verde." + IDS_KEY_ITEM_4540 "Una cinta de audio con una etiqueta amarilla." + IDS_KEY_ITEM_4541 "Una cinta de audio con una etiqueta naranja." + IDS_KEY_ITEM_4542 "Una cinta de audio con una etiqueta púrpura." + IDS_KEY_ITEM_4543 "La combinación de la caja fuerte del apartamento de Balaji." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME27 "Después de la tormenta." + IDS_MISSION_00_LEVEL_00_NAME28 "Un cuchillo en la espalda." + IDS_MISSION_00_LEVEL_00_NAME29 "La contraseña." + IDS_MISSION_00_LEVEL_00_NAME30 "Colocar un micrófono oculto." + IDS_MISSION_00_LEVEL_00_NAME31 "Se busca" + IDS_MISSION_00_LEVEL_00_NAME32 "Alianza Maligna." + IDS_MISSION_00_LEVEL_00_NAME33 "La cámara." + IDS_MISSION_00_LEVEL_00_NAME34 "Fuego cruzado." + IDS_MISSION_00_LEVEL_00_NAME35 "Muros invisibles." + IDS_MISSION_00_LEVEL_00_NAME36 "La huida." + IDS_MISSION_00_LEVEL_00_NAME37 "Personajes." + IDS_MISSION_00_LEVEL_00_NAME38 "La Antártida" + IDS_MISSION_00_LEVEL_00_NAME39 "Cambio de planes." + IDS_MISSION_00_LEVEL_00_NAME40 "Campo de pruebas." + IDS_MISSION_00_LEVEL_00_NAME41 "Kamal." + IDS_MISSION_00_LEVEL_00_NAME42 "Cuartel general de UNITY" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10016 "Bien, parece..." + IDS_DIALOGUE_10017 "Fred Astaire?" + IDS_DIALOGUE_10018 "¿Una bicicleta?" + IDS_DIALOGUE_10019 "¿Un poni?" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4784 "This security card can be used on card key readers to gain entry to restricted areas." + IDS_KEY_DESC_4785 "This recorder contains the voice identification for a H.A.R.M. Underwater Base employee." + IDS_KEY_DESC_4786 "A flat head screwdriver. Might be useful for prying things open." + IDS_KEY_DESC_4787 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4788 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4789 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4790 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4791 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4792 "The label on this audio tape identifies\nit as a volume in the audio journal of\nTom Goodman." + IDS_KEY_DESC_4793 "A safe combination: 38, 24, 36" + IDS_KEY_DESC_4794 "This security card can be used on card key readers to gain entry to restricted areas." + IDS_KEY_DESC_4795 "This coffee doesn't smell particularly fresh, but it's warm and strong." + IDS_KEY_DESC_4796 "Keys for Balaji Malpani's room at the Hotel Happy Guest as well as his private safe." + IDS_KEY_DESC_4797 "" + IDS_KEY_DESC_4798 "" + IDS_KEY_DESC_4799 "Card key for the Super Computer Services Department." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE13 "¡Has matado a Armstrong!" + IDS_MISSIONFAILURE14 "¡Has permitido que Armstrong muriese!" + IDS_MISSIONFAILURE15 "¡Has matado a tu piloto! ¡Ahora no podrás volver a casa!" + IDS_MISSIONFAILURE16 "¡Has permitido que matase a tu piloto!" + IDS_MISSIONFAILURE17 "¡Armstrong ha muerto!" + IDS_MISSIONFAILURE18 "Has perdido demasiado tiempo en los servicios y has echado a perder tu cobertura. Te capturan rápidamente y te torturan para obtener información. En menos de una semana, Estados Unidos y la URSS están en guerra y la mayor parte de la civilización de desintegra." + IDS_MISSIONFAILURE19 "El pacificador de Hatori-san ha fracasado. Ha muerto." + IDS_MISSIONFAILURE20 "¡Has matado a Yamata-san!" + IDS_MISSIONFAILURE21 "¡Has dejado que matasen a Yamata-san!" + IDS_MISSIONFAILURE22 "¡Tu avión ha sido destruido!" + IDS_MISSIONFAILURE23 "¡Te has descubierto!" + IDS_MISSIONFAILURE24 "¡Has matado a un agente de policía!" + IDS_MISSIONFAILURE25 "¡Has matado a Kamal!" + IDS_MISSIONFAILURE26 "¡Has matado al Dr. Schenker!" + IDS_MISSIONFAILURE27 "¡Has matado al Sr. Barnes!" + IDS_MISSIONFAILURE28 "¡Has matado al general Hawkins!" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4544 "Tarjeta de Siberia" + IDS_KEY_ITEM_4545 "Una cafetera" + IDS_KEY_ITEM_4546 "Laves de Balaji Malpani" + IDS_KEY_ITEM_4547 "" + IDS_KEY_ITEM_4548 "" + IDS_KEY_ITEM_4549 "Tarjeta mantenimiento ordenador" + IDS_KEY_ITEM_4550 "" + IDS_KEY_ITEM_4551 "Bucket Full" +END + +STRINGTABLE +BEGIN + IDS_CODEDTEXT_7700 "" + IDS_CODEDTEXT_7701 "Hay tres buzones frente a la tienda de dulces. Debes ordenarlos en una secuencia específica para señalármelo.\n\nEl buzón rojo debería estar abierto." + IDS_CODEDTEXT_7702 "Hay tres buzones enfrente de la tienda de caramelos. Debes colocarlos de una forma específica para hacerme una señal.\n\nEl buzón gris debe estar cerrado." + IDS_CODEDTEXT_7703 "Hay tres buzones frente a la tienda de dulces. Debes ordenarlos en una secuencia específica para señalármelo.\n\nEl buzón azul debería estar abierto." + IDS_CODEDTEXT_7704 "Nos encontraremos en la tienda de dulces de la parte oeste del barrio. Busca el signo de la grúa cerca de una máquina expendedora." +END + +STRINGTABLE +BEGIN + IDS_TARGET_2900 "" + IDS_TARGET_2901 "introducir la combinación" + IDS_TARGET_2902 "borrar" + IDS_TARGET_2903 "hacer sonar la alarma" + IDS_TARGET_2904 "enroscar la bombilla" + IDS_TARGET_2905 "desenroscar la bombilla" + IDS_TARGET_2906 "hacer sonar el timbre" + IDS_TARGET_2907 "encender" + IDS_TARGET_2908 "apagar" + IDS_TARGET_2909 "tirar de la cisterna" + IDS_TARGET_2910 "recuperar datos" + IDS_TARGET_2911 "reemplazar el tubo del aspirador" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME59 "Nivel de cooperación" + IDS_MISSION_00_LEVEL_00_NAME60 "Nivel de cooperación" + IDS_MISSION_00_LEVEL_00_NAME61 "Nivel de cooperación" + IDS_MISSION_00_LEVEL_00_NAME62 "Nivel de cooperación" + IDS_MISSION_00_LEVEL_00_NAME63 "Nivel de cooperación" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2912 "introducir la contraseña" + IDS_TARGET_2913 "verter azúcar" + IDS_TARGET_2914 "verter café" + IDS_TARGET_2915 "quitar el póster" + IDS_TARGET_2916 "pulsar el botón" + IDS_TARGET_2917 "reproducir" + IDS_TARGET_2918 "apagar" + IDS_TARGET_2919 "reparar" + IDS_TARGET_2920 "radio UNITY" + IDS_TARGET_2921 "verter agua" + IDS_TARGET_2922 "bloquear entrada" + IDS_TARGET_2923 "desbloquear entrada" + IDS_TARGET_2924 "activar intercom" + IDS_TARGET_2925 "activar la grúa" + IDS_TARGET_2926 "tira de mi dedo" + IDS_TARGET_2927 "moc, moc" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20138 "¡Oh!" + IDS_DIALOGUE_20140 "¡Estoy sangrando!" + IDS_DIALOGUE_20141 "¿Qué estás haciendo?" + IDS_DIALOGUE_20142 "¡No, por favor!" + IDS_DIALOGUE_20143 "¡Eres una persona espantosa!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20147 "¡Aquí, minino!" + IDS_DIALOGUE_20148 "¿Qué estás pensando?" + IDS_DIALOGUE_20149 "¡Guarda eso!" + IDS_DIALOGUE_20150 "¡Me estás poniendo nerviosa!" + IDS_DIALOGUE_20154 "¡Socorro, estoy pegada!" + IDS_DIALOGUE_20155 "¡De repente no me puedo mover!" + IDS_DIALOGUE_20156 "¡No!" + IDS_DIALOGUE_20157 "¡Oh, no!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20180 "¡Por favor!" + IDS_DIALOGUE_20182 "Umm." + IDS_DIALOGUE_20183 "No me encuentro nada bien." + IDS_DIALOGUE_20184 "¿Umm?" + IDS_DIALOGUE_20185 "¿Qué es esto?" + IDS_DIALOGUE_20186 "¡Es la chica del cartel!" + IDS_DIALOGUE_20187 "¡Policía!" + IDS_DIALOGUE_20190 "¡No veo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20603 "¡Oh!" + IDS_DIALOGUE_20605 "¡Estoy sangrando!" + IDS_DIALOGUE_20606 "¿Qué estás haciendo?" + IDS_DIALOGUE_20607 "¡No, por favor!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20608 "¡Eres una persona espantosa!" + IDS_DIALOGUE_20612 "¡Aquí, minino!" + IDS_DIALOGUE_20613 "¿Por qué intentas intimidarme?" + IDS_DIALOGUE_20614 "¡No hay necesidad!" + IDS_DIALOGUE_20615 "¡Me pones muy nervioso!" + IDS_DIALOGUE_20619 "¡Socorro, estoy atrapado!" + IDS_DIALOGUE_20620 "¡No puedo moverme!" + IDS_DIALOGUE_20621 "¡Oh, oh!" + IDS_DIALOGUE_20622 "¡Oh, no!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20645 "¡Por favor!" + IDS_DIALOGUE_20647 "Umm." + IDS_DIALOGUE_20648 "No me siento muy bien." + IDS_DIALOGUE_20649 "¿Umm?" + IDS_DIALOGUE_20650 "¿Qué es esto?" + IDS_DIALOGUE_20651 "¡Es la chica del cartel!" + IDS_DIALOGUE_20652 "¡Policía!" + IDS_DIALOGUE_20655 "¡No veo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20930 "¡No hay necesidad de eso!" + IDS_DIALOGUE_20931 "No me apuntes con eso, por favor." + IDS_DIALOGUE_20932 "¡No me hagas daño!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20956 "¡Ayúdame!" + IDS_DIALOGUE_20957 "¿Por qué yo?" + IDS_DIALOGUE_20959 "Umm." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20961 "Ummm." + IDS_DIALOGUE_20962 "¡Qué tenemos aquí!" + IDS_DIALOGUE_20963 "Interesante." + IDS_DIALOGUE_20964 "¡Dios mío!" + IDS_DIALOGUE_20965 "¿Estás bien?" + IDS_DIALOGUE_20966 "¡Por Dios!" + IDS_DIALOGUE_20967 "Hay motivos para la alarma." + IDS_DIALOGUE_20968 "Los sensores detectan problemas." + IDS_DIALOGUE_20969 "No hay motivos para angustiarse." + IDS_DIALOGUE_20970 "Fijando objetivo." + IDS_DIALOGUE_20971 "¡Atacar! ¡Atacar!" + IDS_DIALOGUE_20972 "Solicitando ayuda." + IDS_DIALOGUE_20973 "Persiguiendo objetivo." + IDS_DIALOGUE_20974 "Detectada forma de vida sospechosa." + IDS_DIALOGUE_20975 "¡Qué minino más mono!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20976 "¡Peligro!" + IDS_DIALOGUE_20977 "Posible sospechoso en los alrededores." + IDS_DIALOGUE_20978 "Detectado estímulo auditivo sospechoso." + IDS_DIALOGUE_20979 "¡Intruso detectado!" + IDS_DIALOGUE_20980 "Detectado estímulo visual sospechoso." + IDS_DIALOGUE_20981 "¡Error del sistema!" + IDS_DIALOGUE_20982 "Recibido daño menor." + IDS_DIALOGUE_20983 "Detectada sustancia adhesiva." + IDS_DIALOGUE_20984 "Detectado objeto peligroso." + IDS_DIALOGUE_20985 "Las matemáticas son divertidas." + IDS_DIALOGUE_20986 "Computando." + IDS_DIALOGUE_20987 "Todos los sistemas funcionando." + IDS_DIALOGUE_20988 "Análisis del sistema en progreso." + IDS_DIALOGUE_20989 "Escaneando." + IDS_DIALOGUE_20990 "Secuencia de patrulla activa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20992 "Resultados de la investigación: inconcluyentes." + IDS_DIALOGUE_20993 "Calculando posible ruta." + IDS_DIALOGUE_20994 "Calculando." + IDS_DIALOGUE_20995 "Detectada sustancia gaseosa." + IDS_DIALOGUE_20996 "Iniciando procedimiento de busca." + IDS_DIALOGUE_20997 "Resultados de la búsqueda: inconcluyentes." + IDS_DIALOGUE_20998 "¿Estás operativo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21162 "¡Minino malo!" + IDS_DIALOGUE_21163 "¡Minino, minino, minino!" + IDS_DIALOGUE_21164 "¡Arghhh!" + IDS_DIALOGUE_21165 "Sííííííí." + IDS_DIALOGUE_21166 "¡Graaaaarrrr!" + IDS_DIALOGUE_21167 "Rrrrrr." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21168 "MMmmmm." + IDS_DIALOGUE_21169 "Grrrr." + IDS_DIALOGUE_21170 "¿Ah?" + IDS_DIALOGUE_21171 "Rr." + IDS_DIALOGUE_21172 "¡¡¡AAAAHHHHRRRRGGGHHHH!!!" + IDS_DIALOGUE_21173 "¡¡¡MATAR!!!" + IDS_DIALOGUE_21174 "¡¡¡DESTRUIR!!!" + IDS_DIALOGUE_21177 "¿Rrr?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21184 "Rrrr." + IDS_DIALOGUE_21185 "Grrr." + IDS_DIALOGUE_21186 "Mmm." + IDS_DIALOGUE_21188 "¿Mmm?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32000 "¡No estarás tan contento cuando haga sonar la alarma!" + IDS_DIALOGUE_32001 "¡Hora de hacer sonar la alarma, creo!" + IDS_DIALOGUE_32002 "¡A por el espía!" + IDS_DIALOGUE_32003 "¡Ayúdame con el espía!" + IDS_DIALOGUE_32004 "¡Aquí hay alguien a quien no hemos invitado!" + IDS_DIALOGUE_32005 "¡Deja de hacer el vago y ayúdame a buscar!" + IDS_DIALOGUE_32006 "¿Has visto algo sospechoso?" + IDS_DIALOGUE_32007 "¡Cuidado con el peligro, amigo!" + IDS_DIALOGUE_32009 "¿Qué te ha pasado?" + IDS_DIALOGUE_32010 "¿Qué te ha ocurrido?" + IDS_DIALOGUE_32011 "¡Prepárate para morir!" + IDS_DIALOGUE_32012 "¡Ahora te tengo!" + IDS_DIALOGUE_32014 "¡Te arrepentirás de haber venido!" + IDS_DIALOGUE_32015 "¡Espero que te guste el dolor!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32016 "¡No me das miedo!" + IDS_DIALOGUE_32017 "¡Huelo tu miedo!" + IDS_DIALOGUE_32018 "¡No las tengo todas conmigo!" + IDS_DIALOGUE_32019 "¡Más me vale pedir ayuda!" + IDS_DIALOGUE_32020 "¡Me vendría bien un poco de ayuda!" + IDS_DIALOGUE_32021 "¡Socorro!" + IDS_DIALOGUE_32022 "¡Por aquí!" + IDS_DIALOGUE_32023 "¡Ven rápido!" + IDS_DIALOGUE_32024 "¡Ya no te creo!" + IDS_DIALOGUE_32025 "¡Oh... cállate!" + IDS_DIALOGUE_32026 "¿Hola?" + IDS_DIALOGUE_32027 "¿Dónde está la gente?" + IDS_DIALOGUE_32028 "¡Me estoy quemando vivo! ¡AAAAYYYY!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32033 "¡Te arrepentirás de jugar conmigo!" + IDS_DIALOGUE_32034 "¿Cómo te gustaría morir?" + IDS_DIALOGUE_32035 "¡Ya te tengo, maldito entrometido!" + IDS_DIALOGUE_32036 "¿Qué tal algo de dolor, amigo?" + IDS_DIALOGUE_32037 "¡Oh, esto es horrible!" + IDS_DIALOGUE_32039 "¡Oh, no!" + IDS_DIALOGUE_32040 "¡Ahora estoy en un lío!" + IDS_DIALOGUE_32041 "¡Cuidado!" + IDS_DIALOGUE_32042 "¡Oh, oh!" + IDS_DIALOGUE_32046 "¿A qué estoy pegado?" + IDS_DIALOGUE_32047 "¡Acabo de quedarme pegado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32051 "Me siento raro." + IDS_DIALOGUE_32052 "Tengo sueño." + IDS_DIALOGUE_32053 "¡UUOA!" + IDS_DIALOGUE_32056 "Me siento mareado." + IDS_DIALOGUE_32057 "¡Ay, mi cabeza!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32070 "¡Oh, qué ricura!" + IDS_DIALOGUE_32071 "¡Gatito, gatito, aquí!" + IDS_DIALOGUE_32072 "Adiós, amigo." + IDS_DIALOGUE_32073 "A mí no me echarán la culpa de esto." + IDS_DIALOGUE_32074 "Me desharé de esto." + IDS_DIALOGUE_32075 "¡No me hagas daño!" + IDS_DIALOGUE_32076 "¡Me estás poniendo nervioso!" + IDS_DIALOGUE_32077 "¡Estoy muy afligido!" + IDS_DIALOGUE_32078 "¡Estás en un buen lío!" + IDS_DIALOGUE_32079 "¡Prepárate para sufrir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32080 "¡Aquí vengo!" + IDS_DIALOGUE_32081 "¡Te has descubierto!" + IDS_DIALOGUE_32082 "¡Sé que estás ahí!" + IDS_DIALOGUE_32083 "¡Lo he oído!" + IDS_DIALOGUE_32084 "¿Quién está ahí?" + IDS_DIALOGUE_32085 "¿Quién está haciendo ruido?" + IDS_DIALOGUE_32086 "¡Ése es el sonido de los problemas!" + IDS_DIALOGUE_32087 "¿Hola?" + IDS_DIALOGUE_32088 "¿He oído algo?" + IDS_DIALOGUE_32089 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_32090 "He oído algo." + IDS_DIALOGUE_32091 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_32092 "¡Ya te veo!" + IDS_DIALOGUE_32093 "¡Ahora verás!" + IDS_DIALOGUE_32094 "¡Estás jugando con la persona equivocada!" + IDS_DIALOGUE_32095 "¡Ahora ya te tengo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32096 "¡Estoy deseando matarte!" + IDS_DIALOGUE_32097 "¡Esto es motivo de alarma!" + IDS_DIALOGUE_32098 "Me estoy preocupando." + IDS_DIALOGUE_32099 "¿Quién es el responsable de esto?" + IDS_DIALOGUE_32100 "¡Esto es muy sospechoso!" + IDS_DIALOGUE_32101 "Um." + IDS_DIALOGUE_32102 "¿Eh?" + IDS_DIALOGUE_32103 "¿Qué es esto?" + IDS_DIALOGUE_32104 "No recuerdo esto..." + IDS_DIALOGUE_32105 "¿Qué tenemos aquí?" + IDS_DIALOGUE_32106 "¿Hay alguien ahí?" + IDS_DIALOGUE_32107 "¿Quién está ahí?" + IDS_DIALOGUE_32108 "¿¿¿Hola???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32122 "¡Granada!" + IDS_DIALOGUE_32123 "¡Cuidado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32134 "Um, nada." + IDS_DIALOGUE_32135 "Me estoy imaginando cosas." + IDS_DIALOGUE_32136 "Probablemente sólo sea un mono." + IDS_DIALOGUE_32137 "¿Por qué camino has ido?" + IDS_DIALOGUE_32138 "¿Dónde estás?" + IDS_DIALOGUE_32139 "¡A mí no me la das!" + IDS_DIALOGUE_32140 "¡Te encontraré!" + IDS_DIALOGUE_32141 "¡No creas que puedes escapar tan fácilmente!" + IDS_DIALOGUE_32142 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_32143 "De repente esto se ha vuelto oscuro." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32144 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_32145 "¿Qué está pasando aquí?" + IDS_DIALOGUE_32146 "¡No creas que la oscuridad te va a ocultar!" + IDS_DIALOGUE_32147 "Encenderé las luces." + IDS_DIALOGUE_32148 "¿Dónde está mi arma?" + IDS_DIALOGUE_32149 "¿Por qué estoy desarmado?" + IDS_DIALOGUE_32150 "Me siento bastante vulnerable." + IDS_DIALOGUE_32151 "¡Oh, no!" + IDS_DIALOGUE_32152 "¿Por qué me está castigando el destino?" + IDS_DIALOGUE_32153 "¡Abajo!" + IDS_DIALOGUE_32154 "¡Cuidado!" + IDS_DIALOGUE_32155 "¡Fuera de mi camino!" + IDS_DIALOGUE_32156 "¡Estoy detrás de ti, idiota!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32162 "¿Por qué tengo que sufrir tanto?" + IDS_DIALOGUE_32163 "¡Eso ha dolido!" + IDS_DIALOGUE_32164 "¡Ten piedad!" + IDS_DIALOGUE_32166 "¡Por favor!" + IDS_DIALOGUE_32168 "¡Uuf!" + IDS_DIALOGUE_32169 "¡Unh!" + IDS_DIALOGUE_32170 "¡Aah!" + IDS_DIALOGUE_32171 "De mí no puedes esconderte, amigo." + IDS_DIALOGUE_32172 "¿Dónde estás?" + IDS_DIALOGUE_32173 "¡Sé que estás por aquí!" + IDS_DIALOGUE_32174 "¡Te encontraré! ¡Lo prometo!" + IDS_DIALOGUE_32175 "¡No tienes escapatoria!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32176 "Abandono." + IDS_DIALOGUE_32177 "Debe de haber escapado." + IDS_DIALOGUE_32178 "Parece que ahora no hay nadie." + IDS_DIALOGUE_32179 "¡Y no vuelvas!" + IDS_DIALOGUE_32180 "¿Por qué te escondes?" + IDS_DIALOGUE_32181 "¡Levántate!" + IDS_DIALOGUE_32182 "¿Qué pasa ahora?" + IDS_DIALOGUE_32183 "¡Éste no es lugar para dormir!" + IDS_DIALOGUE_32184 "¡Dividíos!" + IDS_DIALOGUE_32185 "¡Yo iré por este lado!" + IDS_DIALOGUE_32186 "¡Tú ve por ahí!" + IDS_DIALOGUE_32188 "¡Haré sonar la alarma!" + IDS_DIALOGUE_32189 "¡Socorro! ¡Seguridad!" + IDS_DIALOGUE_32190 "¡Tú! ¡Ven rápido!" + IDS_DIALOGUE_32191 "¡Ven conmigo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32192 "¡Por aquí, amigo!" + IDS_DIALOGUE_32193 "¡Aquí hay algo que no va bien!" + IDS_DIALOGUE_32194 "Mantén los ojos abiertos, amigo." + IDS_DIALOGUE_32195 "Cuidado por detrás." + IDS_DIALOGUE_32196 "¡Ya te tengo!" + IDS_DIALOGUE_32197 "¡No es momento de hacer el tonto! " + IDS_DIALOGUE_32198 "¿Pero quién la ha tomado contigo? " + IDS_DIALOGUE_32199 "¡¡¡YAAAA!!!" + IDS_DIALOGUE_32200 "¡Te arrepentirás!" + IDS_DIALOGUE_32201 "¡Te haré picadillo!" + IDS_DIALOGUE_32202 "¡Voy a aplastarte!" + IDS_DIALOGUE_32203 "¡Me has enfadado mucho!" + IDS_DIALOGUE_32204 "¡Prepárate para recibir tu merecido!" + IDS_DIALOGUE_32205 "¡Ahora vas a ver!" + IDS_DIALOGUE_32206 "¡Más me vale conseguir ayuda!" + IDS_DIALOGUE_32207 "¡Espera a que vengan mis amigos!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32208 "¡Necesito apoyo!" + IDS_DIALOGUE_32209 "¡Ayuda!" + IDS_DIALOGUE_32210 "¡Hay un espía!" + IDS_DIALOGUE_32211 "¡Por aquí! ¡Rápido!" + IDS_DIALOGUE_32212 "¡Estás demasiado nervioso!" + IDS_DIALOGUE_32213 "Otra vez no." + IDS_DIALOGUE_32214 "¡Socorro, socorro! ¡Que venga alguien!" + IDS_DIALOGUE_32215 "¿Dónde está la gente?" + IDS_DIALOGUE_32216 "¡¡¡Qué agonía tan horrible!!!" + IDS_DIALOGUE_32217 "¡¡¡YAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32218 "¡¡AAAAAAAAAAA!!" + IDS_DIALOGUE_32219 "¡¡¡GAAAAAAAAAAA!!!" + IDS_DIALOGUE_32220 "¡Lo estoy deseando!" + IDS_DIALOGUE_32221 "¡Ven a probar mi venganza!" + IDS_DIALOGUE_32222 "¡Tengo un castigo para ti!" + IDS_DIALOGUE_32223 "¡Ya te tengo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32224 "¿Qué tal algo de dolor, amigo?" + IDS_DIALOGUE_32225 "¡Esto no es nada cómodo!" + IDS_DIALOGUE_32227 "¡Me siento expuesto!" + IDS_DIALOGUE_32228 "¡Estoy metido en un lío!" + IDS_DIALOGUE_32229 "¡Es hora de probar una nueva estrategia!" + IDS_DIALOGUE_32230 "¡Oh, oh!" + IDS_DIALOGUE_32234 "¡Parece que he pisado algo!" + IDS_DIALOGUE_32235 "¡Que alguien me ayude!" + IDS_DIALOGUE_32239 "Una cabezadita." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32240 "De repente me siento muy cansado." + IDS_DIALOGUE_32241 "¡UUOA!" + IDS_DIALOGUE_32242 "¡YA!" + IDS_DIALOGUE_32243 "¡AH!" + IDS_DIALOGUE_32244 "Me siento mareado." + IDS_DIALOGUE_32245 "Eso no sienta muy bien..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32258 "¡Oh, qué ricura de gatito!" + IDS_DIALOGUE_32259 "¡Hola, gatito! ¿Quieres que sea tu dueño?" + IDS_DIALOGUE_32260 "No es culpa MÍA que fallecieses prematuramente." + IDS_DIALOGUE_32261 "A mí que no me culpen de tu incompetencia." + IDS_DIALOGUE_32262 "Lo que el jefe no sepa no le hará daño." + IDS_DIALOGUE_32263 "¡No me hagas daño!" + IDS_DIALOGUE_32264 "¡Me estás poniendo nervioso!" + IDS_DIALOGUE_32265 "¡Estoy muy afligido!" + IDS_DIALOGUE_32266 "¡Estás metido en un lío!" + IDS_DIALOGUE_32267 "¡Ahora me has enfadado mucho!" + IDS_DIALOGUE_32268 "¡Has cometido un gran error, amigo!" + IDS_DIALOGUE_32269 "¡Voy a por ti!" + IDS_DIALOGUE_32270 "¡Sé que estás ahí!" + IDS_DIALOGUE_32271 "¡Lo he oído!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32272 "¿Quién anda ahí?" + IDS_DIALOGUE_32273 "¿Quién está haciendo ese ruido?" + IDS_DIALOGUE_32274 "¡No creas que no te he oído!" + IDS_DIALOGUE_32275 "¿Hola?" + IDS_DIALOGUE_32276 "¿Um?" + IDS_DIALOGUE_32277 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_32278 "He oído algo." + IDS_DIALOGUE_32279 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_32280 "¡Ya te veo!" + IDS_DIALOGUE_32281 "¡Tú, el de ahí! ¡Alto!" + IDS_DIALOGUE_32282 "¡Te cogeré!" + IDS_DIALOGUE_32283 "¡Ya te tengo!" + IDS_DIALOGUE_32284 "¡Tú te lo has buscado!" + IDS_DIALOGUE_32285 "¡Esto es muy preocupante!" + IDS_DIALOGUE_32286 "¡Muy bien, ahora estoy enfadado!" + IDS_DIALOGUE_32287 "¡A mí no me engañas, sabes!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32288 "¡No me gusta lo que veo!" + IDS_DIALOGUE_32289 "Um." + IDS_DIALOGUE_32290 "¿Eh?" + IDS_DIALOGUE_32291 "¿Qué es esto?" + IDS_DIALOGUE_32292 "¿Qué está pasando aquí?" + IDS_DIALOGUE_32293 "¿Qué tenemos aquí?" + IDS_DIALOGUE_32294 "¿Hay alguien ahí?" + IDS_DIALOGUE_32295 "¿Quién está ahí?" + IDS_DIALOGUE_32296 "¿¿¿Hola???" + IDS_DIALOGUE_32299 "¡¡¡AHHHH!!!" + IDS_DIALOGUE_32300 "¡¡¡UUUOOOOAAAA!!!" + IDS_DIALOGUE_32301 "¡¡¡AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32310 "¡Granada!" + IDS_DIALOGUE_32311 "¡Cuidado!" + IDS_DIALOGUE_32312 "¡Oh, no!" + IDS_DIALOGUE_32313 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32324 "Bueno, estoy aliviado." + IDS_DIALOGUE_32325 "No debía de ser nada." + IDS_DIALOGUE_32326 "Um, aquí no hay nada." + IDS_DIALOGUE_32327 "¿Por dónde has ido?" + IDS_DIALOGUE_32328 "¿Dónde estás?" + IDS_DIALOGUE_32329 "¿A mí no me engañas?" + IDS_DIALOGUE_32330 "¡Te encontraré!" + IDS_DIALOGUE_32331 "¡No creas que puedes escapar tan fácilmente!" + IDS_DIALOGUE_32332 "¡No puedes ocultarte de mí!" + IDS_DIALOGUE_32333 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_32334 "De repente esto está oscuro." + IDS_DIALOGUE_32335 "¿Quién ha encendido las luces?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32336 "¿Qué está pasando?" + IDS_DIALOGUE_32337 "¡No creas que la oscuridad va a esconderte!" + IDS_DIALOGUE_32338 "¡Ya te tengo!" + IDS_DIALOGUE_32339 "¿Dónde está mi arma?" + IDS_DIALOGUE_32340 "¿Por qué estoy desarmado?" + IDS_DIALOGUE_32341 "Me siento bastante vulnerable." + IDS_DIALOGUE_32342 "¡Oh, no!" + IDS_DIALOGUE_32343 "¡Esto es horrible!" + IDS_DIALOGUE_32344 "¡Abajo!" + IDS_DIALOGUE_32345 "¡Cuidado!" + IDS_DIALOGUE_32346 "¡Fuera de mi camino!" + IDS_DIALOGUE_32347 "¡Estoy detrás de ti, idiota!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32353 "¡Me está saliendo sangre!" + IDS_DIALOGUE_32354 "¡Más facturas médicas!" + IDS_DIALOGUE_32355 "¡Odio este trabajo!" + IDS_DIALOGUE_32356 "¡Ten piedad!" + IDS_DIALOGUE_32358 "¡Por favor!" + IDS_DIALOGUE_32360 "¡Oof!" + IDS_DIALOGUE_32361 "¡Unh!" + IDS_DIALOGUE_32362 "¡Aah!" + IDS_DIALOGUE_32363 "¡Sé que estás por ahí metido!" + IDS_DIALOGUE_32364 "Te encontraré. ¡Lo prometo!" + IDS_DIALOGUE_32365 "¡No te queda mucho tiempo de vida!" + IDS_DIALOGUE_32366 "¡¿¡Dónde te escondes!?!" + IDS_DIALOGUE_32367 "¡No tienes escapatoria!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32368 "Abandono." + IDS_DIALOGUE_32369 "¡Qué persona tan escurridiza!" + IDS_DIALOGUE_32370 "¡Si te encuentro, estarás en un lío de los gordos!" + IDS_DIALOGUE_32371 "¡Tienes suerte de haber escapado!" + IDS_DIALOGUE_32372 "¿Ahora qué pasa?" + IDS_DIALOGUE_32373 "¡Levántate!" + IDS_DIALOGUE_32374 "¿Qué te ha pasado?" + IDS_DIALOGUE_32375 "¡No es momento de tumbarse!" + IDS_DIALOGUE_32376 "¡Dividíos!" + IDS_DIALOGUE_32377 "¡Yo iré por este lado!" + IDS_DIALOGUE_32378 "¡Tú ve por ése otro!" + IDS_DIALOGUE_32380 "¡Haced sonar la alarma!" + IDS_DIALOGUE_32381 "¡Ahora verás!" + IDS_DIALOGUE_32382 "¡Tú, el de ahí! ¡Por aquí!" + IDS_DIALOGUE_32383 "¡Ven conmigo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32384 "¡Rápido! ¡Tenemos un espía!" + IDS_DIALOGUE_32385 "¡Tenemos problemas!" + IDS_DIALOGUE_32386 "¡Sigue atento!" + IDS_DIALOGUE_32387 "¡Mantén los ojos abiertos!" + IDS_DIALOGUE_32388 "¡Ya te tengo!" + IDS_DIALOGUE_32389 "¿Qué ha ocurrido?" + IDS_DIALOGUE_32390 "Vaya, ¿estás bien?" + IDS_DIALOGUE_32391 "¡¡¡Ya te tengo!!!" + IDS_DIALOGUE_32392 "¡¡¡Ya te tengo!!!" + IDS_DIALOGUE_32393 "¿Te crees muy duro?" + IDS_DIALOGUE_32394 "¡Aquí viene papaíto!" + IDS_DIALOGUE_32395 "¡Eres comida para perros!" + IDS_DIALOGUE_32396 "¡¡¡Ven aquí a recibir tu merecido!!!" + IDS_DIALOGUE_32397 "¡No tienes ninguna posibilidad!" + IDS_DIALOGUE_32398 "¡Voy a disfrutar con esto!" + IDS_DIALOGUE_32399 "¡Arrodíllate y di tus últimas oraciones!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32400 "¡Es hora de morir!" + IDS_DIALOGUE_32401 "¿Y pretendes darme miedo?" + IDS_DIALOGUE_32402 "¡Más me vale conseguir ayuda!" + IDS_DIALOGUE_32403 "¡Muchachos! ¡Socorro!" + IDS_DIALOGUE_32404 "¡Necesito apoyo!" + IDS_DIALOGUE_32405 "¡Por aquí!" + IDS_DIALOGUE_32406 "¡Por allí!" + IDS_DIALOGUE_32407 "¡Eh, necesito ayuda!" + IDS_DIALOGUE_32408 "Ríndete ya." + IDS_DIALOGUE_32409 "No volveré a caer en eso." + IDS_DIALOGUE_32410 "¡Eh! ¿Muchachos?" + IDS_DIALOGUE_32411 "¿Dónde está esa ayuda?" + IDS_DIALOGUE_32413 "¡¡¡YAAAAAAAAAAA!!!" + IDS_DIALOGUE_32414 "¡¡AAAAAAAAAA!!" + IDS_DIALOGUE_32415 "¡¡¡GAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32416 "¡Aquí estoy!" + IDS_DIALOGUE_32417 "¡Ven aquí!" + IDS_DIALOGUE_32418 "¡Espera a que te ponga las manos encima!" + IDS_DIALOGUE_32419 "¡Come plomo!" + IDS_DIALOGUE_32420 "¡Voy a por ti!" + IDS_DIALOGUE_32422 "¡Uy!" + IDS_DIALOGUE_32423 "¡Dios santo!" + IDS_DIALOGUE_32424 "¡Oh, no!" + IDS_DIALOGUE_32425 "¡Cuidado!" + IDS_DIALOGUE_32426 "¡Oh, oh!" + IDS_DIALOGUE_32428 "¡Ah! ¡¡¡Mami!!!" + IDS_DIALOGUE_32429 "¡Que alguien me ayude a salir de esta cosa!" + IDS_DIALOGUE_32430 "¡Recórcholis, estoy pegado!" + IDS_DIALOGUE_32431 "¿Qué es esto?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32435 "Dang, estoy cansado." + IDS_DIALOGUE_32436 "Es la hora de la siesta." + IDS_DIALOGUE_32437 "¡UUOA!" + IDS_DIALOGUE_32438 "¡YA!" + IDS_DIALOGUE_32439 "¡AH!" + IDS_DIALOGUE_32440 "No me encuentro muy bien..." + IDS_DIALOGUE_32441 "Ay, mi cabeza..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32454 "Psst. ¡Gatito, gatito, aquí!" + IDS_DIALOGUE_32455 "¡Hola, gatito! ¡Ay, qué bonito eres!" + IDS_DIALOGUE_32456 "Lo siento, amigo." + IDS_DIALOGUE_32457 "¡A mí no me echarán la culpa de esto!" + IDS_DIALOGUE_32458 "Esto me viene que ni pintado." + IDS_DIALOGUE_32459 "¡No me hagas daño!" + IDS_DIALOGUE_32460 "¡Espera ahí, colega!" + IDS_DIALOGUE_32461 "¡Déjame en paz! ¡Estoy desarmado!" + IDS_DIALOGUE_32462 "¡Estás metido en un lío!" + IDS_DIALOGUE_32463 "¡Tú te lo has buscado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32464 "¡Carguen armas!" + IDS_DIALOGUE_32465 "¡Voy a por ti!" + IDS_DIALOGUE_32466 "¡Sé que estás ahí!" + IDS_DIALOGUE_32467 "¡Muy bien, lo he oído!" + IDS_DIALOGUE_32468 "¿Quién está ahí?" + IDS_DIALOGUE_32469 "¿Qué diablos ha sido eso?" + IDS_DIALOGUE_32470 "¿Quién está haciendo ese ruido?" + IDS_DIALOGUE_32471 "¿Hola?" + IDS_DIALOGUE_32472 "¿Eh?" + IDS_DIALOGUE_32473 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_32474 "He oído algo." + IDS_DIALOGUE_32475 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_32476 "¡Ya te veo!" + IDS_DIALOGUE_32477 "¡Eh, tú! ¡Alto!" + IDS_DIALOGUE_32478 "¡Te cogeré!" + IDS_DIALOGUE_32479 "¡Eh!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32480 "¡Tú te lo has buscado!" + IDS_DIALOGUE_32481 "Esto me huele muy mal." + IDS_DIALOGUE_32482 "¡Parece que tenemos un intruso!" + IDS_DIALOGUE_32483 "¡Esto no está bien!" + IDS_DIALOGUE_32484 "¡Oh, oh!" + IDS_DIALOGUE_32485 "Um." + IDS_DIALOGUE_32486 "¿Eh?" + IDS_DIALOGUE_32487 "¿Qué es esto?" + IDS_DIALOGUE_32488 "¿Qué está pasando aquí?" + IDS_DIALOGUE_32489 "¿Qué tenemos aquí?" + IDS_DIALOGUE_32490 "¿Hay alguien ahí?" + IDS_DIALOGUE_32491 "¿Quién está ahí?" + IDS_DIALOGUE_32492 "¿¿¿Hola???" + IDS_DIALOGUE_32495 "¡¡¡AHHHH!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32496 "¡¡¡UUUOOOOAAA!!!" + IDS_DIALOGUE_32497 "¡¡¡AAAIII!!!" + IDS_DIALOGUE_32503 "¿De quién son estas huellas?" + IDS_DIALOGUE_32504 "Oh. Parece que alguien quiere jugar a los espías." + IDS_DIALOGUE_32505 "¿Huellas, eh? A ver adónde llevan." + IDS_DIALOGUE_32506 "¡Ahhh! ¡Granada!" + IDS_DIALOGUE_32507 "¡Cuidado!" + IDS_DIALOGUE_32508 "¡Oh, no!" + IDS_DIALOGUE_32509 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32520 "Um, nada." + IDS_DIALOGUE_32521 "No se ve ni rastro." + IDS_DIALOGUE_32522 "Aquí no hay nada." + IDS_DIALOGUE_32523 "¿Por dónde lado has ido?" + IDS_DIALOGUE_32524 "¿Dónde estás?" + IDS_DIALOGUE_32525 "Vaya, hombre." + IDS_DIALOGUE_32526 "¡Te encontraré!" + IDS_DIALOGUE_32527 "¿Dónde has ido?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32528 "¿Y ahora qué" + IDS_DIALOGUE_32529 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_32530 "Eh, ¿qué pasa con las luces?" + IDS_DIALOGUE_32531 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_32532 "¿Pero qué pasa con las luces?" + IDS_DIALOGUE_32533 "No puedes esconderte de mí." + IDS_DIALOGUE_32534 "¡Ahora ya te tengo!" + IDS_DIALOGUE_32535 "¡Me han atracado!" + IDS_DIALOGUE_32536 "¿Quién me ha robado la pistola?" + IDS_DIALOGUE_32537 "¿Dónde está mi pistola?" + IDS_DIALOGUE_32538 "¡Oh, no!" + IDS_DIALOGUE_32539 "¡Esto es horrible!" + IDS_DIALOGUE_32540 "¡Abajo!" + IDS_DIALOGUE_32541 "¡Cuidado!" + IDS_DIALOGUE_32542 "¡Fuera de mi camino!" + IDS_DIALOGUE_32543 "¡Ten cuidado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32549 "¡Oh, no, estoy sangrando!" + IDS_DIALOGUE_32550 "¡Un médico!" + IDS_DIALOGUE_32551 "¡No, por favor!" + IDS_DIALOGUE_32553 "¡Por favor!" + IDS_DIALOGUE_32555 "¡Oof!" + IDS_DIALOGUE_32556 "¡Unh!" + IDS_DIALOGUE_32557 "¡Aah!" + IDS_DIALOGUE_32558 "¡Sé que estás por ahí metido!" + IDS_DIALOGUE_32559 "¡Entrégate!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32560 "¡No creas que puedes esconderte!" + IDS_DIALOGUE_32561 "¡Espera a que te coja!" + IDS_DIALOGUE_32562 "¿Dónde estás?" + IDS_DIALOGUE_32563 "Abandono." + IDS_DIALOGUE_32564 "¿Dónde diablos te has metido?" + IDS_DIALOGUE_32565 "¡Vaya! ¡Se ha ido!" + IDS_DIALOGUE_32566 "Oh, vaya. Debe de haberse rajado." + IDS_DIALOGUE_32567 "¿Qué pasa ahora?" + IDS_DIALOGUE_32568 "¡Eh! ¡Levántate!" + IDS_DIALOGUE_32569 "Eh, ¿estás bien?" + IDS_DIALOGUE_32570 "¿Estás bien?" + IDS_DIALOGUE_32571 "¡Dividíos!" + IDS_DIALOGUE_32572 "¡Yo iré por este lado!" + IDS_DIALOGUE_32573 "¡Tú ve por ahí!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32577 "¡He visto a un criminal!" + IDS_DIALOGUE_32578 "¡Ven conmigo!" + IDS_DIALOGUE_32579 "¡Tú, ayúdame!" + IDS_DIALOGUE_32580 "Creo que algo va mal por aquí." + IDS_DIALOGUE_32581 "¡Ten cuidado!" + IDS_DIALOGUE_32582 "¡Hay que arrestar a todo aquel que parezca sospechoso!" + IDS_DIALOGUE_32583 "¡No te muevas!" + IDS_DIALOGUE_32584 "¡Quédate ahí!" + IDS_DIALOGUE_32585 "¡Quédate donde pueda verte!" + IDS_DIALOGUE_32586 "¿Cómo te ha ocurrido esto?" + IDS_DIALOGUE_32587 "¿Qué te ha ocurrido?" + IDS_DIALOGUE_32588 "¡Es por tu propio bien!" + IDS_DIALOGUE_32589 "¡Vas a ir a la cárcel!" + IDS_DIALOGUE_32590 "¡Vas a probar un poco de justicia!" + IDS_DIALOGUE_32591 "¡Estás arrestado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32592 "¡Ya te tengo, criminal!" + IDS_DIALOGUE_32593 "¡Tienes un gran problema!" + IDS_DIALOGUE_32594 "¡Es el asesino!" + IDS_DIALOGUE_32595 "¡Más me vale conseguir ayuda!" + IDS_DIALOGUE_32596 "¡Por aquí! ¡Es el asesino!" + IDS_DIALOGUE_32597 "¡Ven rápido!" + IDS_DIALOGUE_32598 "¡Aquí, rápido!" + IDS_DIALOGUE_32599 "¡He encontrado al criminal!" + IDS_DIALOGUE_32600 "¡Por aquí!" + IDS_DIALOGUE_32601 "No te creo." + IDS_DIALOGUE_32602 "Has dicho eso demasiadas veces." + IDS_DIALOGUE_32603 "¡Eh! ¿Muchachos?" + IDS_DIALOGUE_32604 "¿Dónde está esa ayuda?" + IDS_DIALOGUE_32606 "¡¡¡YAAAAAAAAAAA!!!" + IDS_DIALOGUE_32607 "¡¡AAAAAAAAAA!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32608 "¡¡¡GAAAAAAAAA!!!" + IDS_DIALOGUE_32609 "¡No intentes escapar de mí!" + IDS_DIALOGUE_32610 "¡Estás arrestado!" + IDS_DIALOGUE_32611 "¡Vuelve aquí!" + IDS_DIALOGUE_32612 "¡Ya te tengo!" + IDS_DIALOGUE_32613 "¡No te resistas al arresto!" + IDS_DIALOGUE_32615 " ¡Uy!" + IDS_DIALOGUE_32616 " ¡Dios santo!" + IDS_DIALOGUE_32617 "¡Ahora estoy en un lío!" + IDS_DIALOGUE_32618 "¡Cuidado!" + IDS_DIALOGUE_32619 "¡Oh, oh!" + IDS_DIALOGUE_32623 "¿Por qué estoy atrapado aquí?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32624 "Parece que estoy en apuros." + IDS_DIALOGUE_32628 "Voy a descansar un rato." + IDS_DIALOGUE_32629 "Una siesta rápida no hace daño." + IDS_DIALOGUE_32630 "¡UUOA!" + IDS_DIALOGUE_32631 "¡YA!" + IDS_DIALOGUE_32632 "¡AH!" + IDS_DIALOGUE_32633 "Me siento mareado." + IDS_DIALOGUE_32634 "¡No veo nada!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32647 "¡Qué minino más mono!" + IDS_DIALOGUE_32648 "¡Sé que estás ahí!" + IDS_DIALOGUE_32649 "¡Ya te tengo!" + IDS_DIALOGUE_32650 "¡Estás en un lío!" + IDS_DIALOGUE_32651 "¡Voy a por ti!" + IDS_DIALOGUE_32652 "¡Sé que estás ahí!" + IDS_DIALOGUE_32653 "¡He oído eso!" + IDS_DIALOGUE_32654 "¿Quién anda ahí?" + IDS_DIALOGUE_32655 "¡Oh, oh!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32656 "¡No creas que no te he oído!" + IDS_DIALOGUE_32657 "¿Hola?" + IDS_DIALOGUE_32658 "¿Um?" + IDS_DIALOGUE_32659 "¿Qué he oído?" + IDS_DIALOGUE_32660 "He oído algo." + IDS_DIALOGUE_32661 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_32662 "¡Ya te veo!" + IDS_DIALOGUE_32663 "¡Tú, el de ahí! ¡Alto!" + IDS_DIALOGUE_32664 "¡Estás arrestado!" + IDS_DIALOGUE_32665 "¡Alto ahí!" + IDS_DIALOGUE_32666 "¡Tú te lo has buscado!" + IDS_DIALOGUE_32667 "¡Esto es muy preocupante!" + IDS_DIALOGUE_32668 "¡Muy bien, ahora estoy enfadado!" + IDS_DIALOGUE_32669 "¡A mí no me engañas, sabes!" + IDS_DIALOGUE_32670 "¡No me gusta lo que estoy viendo!" + IDS_DIALOGUE_32671 "Um." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32672 "¿Eh?" + IDS_DIALOGUE_32673 "¿Qué es esto?" + IDS_DIALOGUE_32674 "¿Qué está pasando aquí?" + IDS_DIALOGUE_32675 "¿Qué tenemos aquí?" + IDS_DIALOGUE_32676 "¿Hay alguien ahí?" + IDS_DIALOGUE_32677 "¿Quién anda ahí?" + IDS_DIALOGUE_32678 "¿¿¿Hola???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32692 "¡Granada!" + IDS_DIALOGUE_32693 "¡Corre!" + IDS_DIALOGUE_32694 "¡Por Dios!" + IDS_DIALOGUE_32695 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32706 "No hay nada ahí." + IDS_DIALOGUE_32707 "Es sólo mi imaginación." + IDS_DIALOGUE_32708 "Ummmm." + IDS_DIALOGUE_32709 "¿Por dónde has ido?" + IDS_DIALOGUE_32710 "¿Dónde estás?" + IDS_DIALOGUE_32711 "¡Te atraparé, criminal!" + IDS_DIALOGUE_32712 "¡Te encontraré!" + IDS_DIALOGUE_32713 "¿Dónde has ido?" + IDS_DIALOGUE_32714 "¡A mí no me engañarás!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32741 "¡Sé que estás por ahí metido!" + IDS_DIALOGUE_32742 "¡Entrégate!" + IDS_DIALOGUE_32743 "No puedes esconderte para siempre." + IDS_DIALOGUE_32744 "¡Sal con las manos en alto!" + IDS_DIALOGUE_32745 "¿Dónde estás?" + IDS_DIALOGUE_32746 "Abandono." + IDS_DIALOGUE_32747 "Ha escapado." + IDS_DIALOGUE_32748 "No hay señal del criminal por ningún lado." + IDS_DIALOGUE_32749 "¿Adónde has ido?" + IDS_DIALOGUE_32750 "¿Ahora qué pasa?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32754 "¡Dividíos!" + IDS_DIALOGUE_32755 "¡Yo iré por este lado!" + IDS_DIALOGUE_32756 "¡Tú ve por ése otro!" + IDS_DIALOGUE_32760 "¡Por aquí! ¡Rápido!" + IDS_DIALOGUE_32761 "¡Ven conmigo!" + IDS_DIALOGUE_32762 "¡Sígueme!" + IDS_DIALOGUE_32763 "¡Algo va mal!" + IDS_DIALOGUE_32764 "Presiento problemas." + IDS_DIALOGUE_32765 "Mantén los ojos abiertos." + IDS_DIALOGUE_32766 "¡Ya te tengo!" + IDS_DIALOGUE_32767 "¿Qué ha ocurrido?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32768 "¿Qué has hecho ahora?" + IDS_DIALOGUE_32769 "¡Oh, oh!" + IDS_DIALOGUE_32770 "¡JA, JA!" + IDS_DIALOGUE_32771 "¡Te voy a dar!" + IDS_DIALOGUE_32772 "¡No tienes nada que hacer!" + IDS_DIALOGUE_32773 "¡Veo que tienes miedo!" + IDS_DIALOGUE_32774 "¡No me das miedo!" + IDS_DIALOGUE_32775 "¡Es hora de morir, mon ami!" + IDS_DIALOGUE_32776 "¡En garde!" + IDS_DIALOGUE_32777 "¡Morirás como un cerdo insignificante!" + IDS_DIALOGUE_32778 "¡Por aquí! ¡Ven rápido!" + IDS_DIALOGUE_32779 "¡Ayuda! ¡Estoy atrapado!" + IDS_DIALOGUE_32780 "¡Por allí!" + IDS_DIALOGUE_32781 "¡Ayudadme!" + IDS_DIALOGUE_32782 "¡Ayuda! " + IDS_DIALOGUE_32783 "¡Por aquí!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32784 "Empiezo a cansarme de tus jueguecitos." + IDS_DIALOGUE_32785 "Tu pánico constante ya cansa." + IDS_DIALOGUE_32786 "¡Socorro! ¡Socorro! ¿Hay alguien ahí?" + IDS_DIALOGUE_32787 "¿Dónde está la gente?" + IDS_DIALOGUE_32789 "¡¡¡OH, JO, JO!!!" + IDS_DIALOGUE_32790 "¡JA, JA!" + IDS_DIALOGUE_32791 "Vive la France!!" + IDS_DIALOGUE_32792 "¡Ja!" + IDS_DIALOGUE_32793 "¡¡¡Oh, jo, JO!!!" + IDS_DIALOGUE_32794 "¡Ahora te tengo!" + IDS_DIALOGUE_32795 "¡Te cogeré!" + IDS_DIALOGUE_32796 "¡Es inútil, mon ami!" + IDS_DIALOGUE_32798 "¡Oh, oh!" + IDS_DIALOGUE_32799 "¡Merde!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32800 "¡Cúbrete!" + IDS_DIALOGUE_32801 "¡Esto se está volviendo peligroso!" + IDS_DIALOGUE_32802 "¡Mon dieu!" + IDS_DIALOGUE_32806 "¿Qué acabo de pisar?" + IDS_DIALOGUE_32807 "¡No puedo moverme!" + IDS_DIALOGUE_32811 "Tengo sueño." + IDS_DIALOGUE_32812 "Creo que voy a descansar los ojos." + IDS_DIALOGUE_32813 "¡UUOA!" + IDS_DIALOGUE_32814 "¡YA!" + IDS_DIALOGUE_32815 "¡Mon dieu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32816 "Me siento mareado." + IDS_DIALOGUE_32817 "¡Mis ojos! ¡No veo nada!" + IDS_DIALOGUE_32830 "Qué minino tan encantador." + IDS_DIALOGUE_32831 "¡Bonjour, gatito!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32832 "Bon voyage, mon ami." + IDS_DIALOGUE_32833 "Adieu." + IDS_DIALOGUE_32834 "Siempre te recordaré." + IDS_DIALOGUE_32835 "¡No me hagas daño!" + IDS_DIALOGUE_32836 "¡Perdóname, te lo suplico!" + IDS_DIALOGUE_32837 "¡No, por favor! ¡A partir de ahora seré bueno!" + IDS_DIALOGUE_32838 "¡Estás en un buen lío!" + IDS_DIALOGUE_32839 "¡Aquí estoy!" + IDS_DIALOGUE_32840 "¡Peligro!" + IDS_DIALOGUE_32841 "¡Alarma!" + IDS_DIALOGUE_32842 "¡Te mataré!" + IDS_DIALOGUE_32843 "¡He oído eso!" + IDS_DIALOGUE_32844 "¿Quién anda ahí?" + IDS_DIALOGUE_32845 "¡Te he oído, mon ami!" + IDS_DIALOGUE_32846 "¿Quién está haciendo ese ruido?" + IDS_DIALOGUE_32847 "¿Hola?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32848 "¿Quoi?" + IDS_DIALOGUE_32849 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_32850 "He oído algo." + IDS_DIALOGUE_32851 "¿Qué he oído?" + IDS_DIALOGUE_32852 "¡Ya te veo!" + IDS_DIALOGUE_32853 "¡Ahora te tengo!" + IDS_DIALOGUE_32854 "¡Voy a exterminarte!" + IDS_DIALOGUE_32855 "¡Prepárate para morir!" + IDS_DIALOGUE_32856 "¡En garde, mon ami!" + IDS_DIALOGUE_32857 "¡Esto es muy preocupante!" + IDS_DIALOGUE_32858 "¿Quién es el responsable de esto?" + IDS_DIALOGUE_32859 "¡Algo está yendo muy mal!" + IDS_DIALOGUE_32860 "¡Oh, oh!" + IDS_DIALOGUE_32861 "Um." + IDS_DIALOGUE_32862 "¿Quoi?" + IDS_DIALOGUE_32863 "¿Qué es esto?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32864 "¿Qué está pasando aquí?" + IDS_DIALOGUE_32865 "¿Qué tenemos aquí?" + IDS_DIALOGUE_32866 "¿Hay alguien ahí?" + IDS_DIALOGUE_32867 "¿Quién anda ahí?" + IDS_DIALOGUE_32868 "¿¿¿Hola???" + IDS_DIALOGUE_32871 "¡¡¡AHHHH!!!" + IDS_DIALOGUE_32872 "¡¡¡UUUOOOOAAA!!!" + IDS_DIALOGUE_32873 "¡¡¡AAAIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32882 "¡Granada!" + IDS_DIALOGUE_32883 "¡Cuidado!" + IDS_DIALOGUE_32884 "¡¡¡Noooo!!!" + IDS_DIALOGUE_32885 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32896 "Oh, bueno." + IDS_DIALOGUE_32897 "Eh, nada." + IDS_DIALOGUE_32898 "No se ve nada." + IDS_DIALOGUE_32899 "¿Por qué camino has ido?" + IDS_DIALOGUE_32900 "¿Dónde estás?" + IDS_DIALOGUE_32901 "¡No creas que puedes huir de mí!" + IDS_DIALOGUE_32902 "¡Te encontraré! ¡Lo juro!" + IDS_DIALOGUE_32903 "¿Y ahora qué" + IDS_DIALOGUE_32904 "¡A mí no me engañas! ¡Soy un mimo, sabes!" + IDS_DIALOGUE_32905 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_32906 "¿Me he quedado ciego?" + IDS_DIALOGUE_32907 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_32908 "¡La luz! ¡Hace daño!" + IDS_DIALOGUE_32909 "No puedes ocultarte de mí." + IDS_DIALOGUE_32910 "¡Ya te tengo!" + IDS_DIALOGUE_32911 "¡Me han robado mi arma!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32912 "¿Qué ha pasado con mi arma?" + IDS_DIALOGUE_32913 "¡Me han saqueado!" + IDS_DIALOGUE_32914 "¡Oh, no!" + IDS_DIALOGUE_32915 "¡Esto es horrible!" + IDS_DIALOGUE_32916 "¡Abajo!" + IDS_DIALOGUE_32917 "¡Cuidado!" + IDS_DIALOGUE_32918 "¡Fuera de mi camino!" + IDS_DIALOGUE_32919 "¡Muévete, idiota!" + IDS_DIALOGUE_32925 "¡Esto no me gusta!" + IDS_DIALOGUE_32926 "¡Me he hecho daño!" + IDS_DIALOGUE_32927 "¡El dolor es atroz!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32928 "¡Ten piedad!" + IDS_DIALOGUE_32930 "¡Por favor!" + IDS_DIALOGUE_32932 "¡Oof!" + IDS_DIALOGUE_32933 "¡Unh!" + IDS_DIALOGUE_32934 "¡Aah!" + IDS_DIALOGUE_32935 "¡Te encontraré!" + IDS_DIALOGUE_32936 "¡No podrás esconderte durante mucho tiempo!" + IDS_DIALOGUE_32937 "¡Sé que estás por aquí cerca!" + IDS_DIALOGUE_32938 "Puedo olerte, cobarde." + IDS_DIALOGUE_32939 "¿Hola? ¿Dónde estás?" + IDS_DIALOGUE_32940 "Abandono." + IDS_DIALOGUE_32941 "Se ha ido." + IDS_DIALOGUE_32942 "¿Adónde has ido?" + IDS_DIALOGUE_32943 "¡Qué escurridizo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32944 "¿Qué ocurre?" + IDS_DIALOGUE_32945 "¡Despierta, dormilón!" + IDS_DIALOGUE_32946 "¡Tú, levántate!" + IDS_DIALOGUE_32947 "¿A ti qué te pasa?" + IDS_DIALOGUE_32948 "¡Dividíos!" + IDS_DIALOGUE_32949 "¡Yo iré por este lado!" + IDS_DIALOGUE_32950 "¡Tú ve por ahí!" + IDS_DIALOGUE_32952 "¡Haced sonar la alarma!" + IDS_DIALOGUE_32953 "¡Estás metido en un lío!" + IDS_DIALOGUE_32954 "¡Rápido! ¡Por aquí!" + IDS_DIALOGUE_32955 "¡Ven conmigo!" + IDS_DIALOGUE_32956 "¡Ven rápido!" + IDS_DIALOGUE_32957 "¡Permanece alerta!" + IDS_DIALOGUE_32958 "¡Hay problemas!" + IDS_DIALOGUE_32959 "He visto algo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32961 "¡Qué te ha pasado!" + IDS_DIALOGUE_32962 "¿Estás herido?" + IDS_DIALOGUE_32963 "¡Iyaaaahhhh!" + IDS_DIALOGUE_32964 "¿Haaa!" + IDS_DIALOGUE_32965 "¡Yiaaahhhh!" + IDS_DIALOGUE_32966 "¡No tienes nada que hacer!" + IDS_DIALOGUE_32967 "¡Te destrozaré!" + IDS_DIALOGUE_32968 "¡Ya te tengo!" + IDS_DIALOGUE_32969 "¡No tienes escapatoria!" + IDS_DIALOGUE_32970 "¡Por aquí! ¡Rápido!" + IDS_DIALOGUE_32971 "¡Rápido! ¡Por aquí!" + IDS_DIALOGUE_32973 "¡Por aquí! " + IDS_DIALOGUE_32974 "¡Por allí!" + IDS_DIALOGUE_32975 "¡Rápido! " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32976 "¿Qué pasa ahora?" + IDS_DIALOGUE_32977 "No volveré a caer en eso." + IDS_DIALOGUE_32978 "¡Ayuda! ¿Dónde estás?" + IDS_DIALOGUE_32979 "¡Por aquí! ¿Dónde te habías metido?" + IDS_DIALOGUE_32981 "¡¡¡YAAAAAAAAAAA!!!" + IDS_DIALOGUE_32982 "¡¡AAAAAAAAAA!!" + IDS_DIALOGUE_32983 "¡¡¡GAAAAAAAAA!!!" + IDS_DIALOGUE_32984 "¡Ja!" + IDS_DIALOGUE_32985 "¡Vuelve aquí!" + IDS_DIALOGUE_32986 "¡Ya te tengo!" + IDS_DIALOGUE_32987 "¡Enfréntate a mí!" + IDS_DIALOGUE_32988 "¡Aquí vengo!" + IDS_DIALOGUE_32990 "¡Ah!" + IDS_DIALOGUE_32991 "¡Aiii!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32992 "¡Cúbrete!" + IDS_DIALOGUE_32993 "¡Cuidado!" + IDS_DIALOGUE_32994 "¡Oh, oh!" + IDS_DIALOGUE_32998 "¡Ayudadme!" + IDS_DIALOGUE_32999 "¡Estoy pegado!" + IDS_DIALOGUE_33003 "Tengo sueño." + IDS_DIALOGUE_33004 "Una cabezadita." + IDS_DIALOGUE_33005 "¡UUOA!" + IDS_DIALOGUE_33006 "¡YA!" + IDS_DIALOGUE_33007 "¡AH!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33008 "Me siento mareado." + IDS_DIALOGUE_33009 "¡No veo nada!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33024 "¡Oh, qué bonito!" + IDS_DIALOGUE_33025 "¡Un gatito lindo!" + IDS_DIALOGUE_33026 "¡Te vengaré!" + IDS_DIALOGUE_33027 "¡Ese espía pagará por esto!" + IDS_DIALOGUE_33028 "¡Lo siento!" + IDS_DIALOGUE_33032 "¡Estás en un buen lío!" + IDS_DIALOGUE_33033 "¡Has cometido un error!" + IDS_DIALOGUE_33034 "¡Ja! ¡Ya te tengo!" + IDS_DIALOGUE_33035 "¡Voy a por ti!" + IDS_DIALOGUE_33036 "¡Sé que estás ahí!" + IDS_DIALOGUE_33037 "¡Eres demasiado imprudente!" + IDS_DIALOGUE_33038 "¿Quién anda ahí?" + IDS_DIALOGUE_33039 "¡Lo he oído!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33040 "¿Quién está haciendo ese ruido?" + IDS_DIALOGUE_33041 "¿Hola?" + IDS_DIALOGUE_33042 "¿Hay alguien ahí?" + IDS_DIALOGUE_33043 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_33044 "He oído algo." + IDS_DIALOGUE_33045 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_33046 "¡Ya te veo!" + IDS_DIALOGUE_33047 "¡No te escaparás de mí!" + IDS_DIALOGUE_33048 "¡Ya!" + IDS_DIALOGUE_33049 "¡Ja!" + IDS_DIALOGUE_33050 "¡Ahí estás!" + IDS_DIALOGUE_33051 "¿Quién ha hecho esto?" + IDS_DIALOGUE_33052 "¡Oh, oh!" + IDS_DIALOGUE_33053 "¡¿Qué está pasando aquí?!" + IDS_DIALOGUE_33054 "¡Parece que tenemos problemas!" + IDS_DIALOGUE_33055 "Um." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33056 "¿Eh?" + IDS_DIALOGUE_33057 "¿Qué es esto?" + IDS_DIALOGUE_33058 "¿Qué está pasando aquí?" + IDS_DIALOGUE_33059 "Qué raro." + IDS_DIALOGUE_33060 "¿Hay alguien ahí?" + IDS_DIALOGUE_33061 "¿Quién anda ahí?" + IDS_DIALOGUE_33062 "¿¿¿Hola???" + IDS_DIALOGUE_33065 "¡¡¡AHHHH!!!" + IDS_DIALOGUE_33066 "¡¡¡UUUOOOOAAAAA!!!" + IDS_DIALOGUE_33067 "¡¡¡AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33076 "¡Granada!" + IDS_DIALOGUE_33077 "¡Cuidado!" + IDS_DIALOGUE_33078 "¡Cúbrete!" + IDS_DIALOGUE_33079 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33090 "Um." + IDS_DIALOGUE_33091 "Nada." + IDS_DIALOGUE_33092 "Mi imaginación." + IDS_DIALOGUE_33093 "¿Por dónde has ido?" + IDS_DIALOGUE_33094 "¿Dónde estás?" + IDS_DIALOGUE_33095 "¿Y ahora qué" + IDS_DIALOGUE_33096 "¡Te encontraré!" + IDS_DIALOGUE_33097 "¿Adónde has ido?" + IDS_DIALOGUE_33098 "No puedes ocultarte durante mucho tiempo." + IDS_DIALOGUE_33099 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_33100 "¿Qué le ha pasado a las luces?" + IDS_DIALOGUE_33101 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_33102 "¿Qué está pasando?" + IDS_DIALOGUE_33103 "No puedes esconderte de mí." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33104 "¡Ya te tengo!" + IDS_DIALOGUE_33105 "¡Me han desarmado!" + IDS_DIALOGUE_33106 "¿Dónde está mi katana?" + IDS_DIALOGUE_33107 "¡Alguien me ha robado las armas!" + IDS_DIALOGUE_33110 "¡Abajo!" + IDS_DIALOGUE_33111 "¡Cuidado!" + IDS_DIALOGUE_33112 "¡Fuera de mi camino!" + IDS_DIALOGUE_33113 "¡Muévete!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33120 "¡Eso ha dolido!" + IDS_DIALOGUE_33121 "¡Pagarás por eso!" + IDS_DIALOGUE_33129 "¡Sé que estás por aquí cerca!" + IDS_DIALOGUE_33131 "¿Dónde estás?" + IDS_DIALOGUE_33132 "Te encontraré." + IDS_DIALOGUE_33133 "No puedes esconderte." + IDS_DIALOGUE_33134 "Me rindo." + IDS_DIALOGUE_33135 "¿Adónde has ido?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33136 "¿Cómo has escapado?" + IDS_DIALOGUE_33137 "Has tenido suerte." + IDS_DIALOGUE_33138 "¿Qué pasa ahora?" + IDS_DIALOGUE_33139 "¡Levántate!" + IDS_DIALOGUE_33140 "¿Qué ha ocurrido?" + IDS_DIALOGUE_33141 "¿Estás bien?" + IDS_DIALOGUE_33142 "¡Dividíos!" + IDS_DIALOGUE_33143 "¡Yo iré por este lado!" + IDS_DIALOGUE_33144 "¡Tú ve por ése otro!" + IDS_DIALOGUE_33146 "¡Haced sonar la alarma!" + IDS_DIALOGUE_33147 "¡Es un espía!" + IDS_DIALOGUE_33148 "¡Tú, el de ahí! ¡Por aquí!" + IDS_DIALOGUE_33149 "¡Ven conmigo!" + IDS_DIALOGUE_33150 "¡Rápido! ¡Hay espías capitalistas por todas partes!" + IDS_DIALOGUE_33151 "Mantén los ojos abiertos." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33152 "Puede que tengamos un intruso." + IDS_DIALOGUE_33153 "Problemas, camarada." + IDS_DIALOGUE_33154 "¡No te muevas!" + IDS_DIALOGUE_33155 "¿Qué ha ocurrido?" + IDS_DIALOGUE_33156 "¿Estás herido?" + IDS_DIALOGUE_33157 "¡No tienes ninguna posibilidad!" + IDS_DIALOGUE_33158 "¡Perro capitalista!" + IDS_DIALOGUE_33159 "¡Te arrojaré a los lobos!" + IDS_DIALOGUE_33160 "¡Me divertiré matándote!" + IDS_DIALOGUE_33161 "¡Te espera una tumba sin inscripción!" + IDS_DIALOGUE_33162 "¡Vete despidiéndote!" + IDS_DIALOGUE_33163 "¡Muerte a los espías!" + IDS_DIALOGUE_33164 "¡Por aquí! ¡Ven rápido!" + IDS_DIALOGUE_33165 "¡Es un espía!" + IDS_DIALOGUE_33166 "¡Ayudadme, camaradas!" + IDS_DIALOGUE_33167 "¡Camaradas! ¡Por aquí!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33168 "¡Por allí!" + IDS_DIALOGUE_33169 "¡Hay un intruso!" + IDS_DIALOGUE_33170 "Deberías dejar el vodka, camarada. Te vuelve paranoico." + IDS_DIALOGUE_33171 "Claro. Como la última vez." + IDS_DIALOGUE_33172 "¡Aquí! ¿Dónde estás?" + IDS_DIALOGUE_33173 "¡Por aquí! ¿Hola?" + IDS_DIALOGUE_33175 "¡Alto!" + IDS_DIALOGUE_33176 "¡Eh, tú!" + IDS_DIALOGUE_33177 "¡Ya te tengo!" + IDS_DIALOGUE_33178 "¡Muere, cerdo decadente!" + IDS_DIALOGUE_33179 "¡No tienes escapatoria!" + IDS_DIALOGUE_33180 "¡Enfréntate a mí, cobarde!" + IDS_DIALOGUE_33181 "¡Ya te tengo!" + IDS_DIALOGUE_33182 "¡Aquí estoy!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33184 "¡Cuidado!" + IDS_DIALOGUE_33185 "¡Abajo!" + IDS_DIALOGUE_33186 "¡Problema gordo!" + IDS_DIALOGUE_33187 "¡Cuidado!" + IDS_DIALOGUE_33188 "¡Cúbrete!" + IDS_DIALOGUE_33190 "¡Oh, duele!" + IDS_DIALOGUE_33191 "¡Ayúdame a quitarme esto!" + IDS_DIALOGUE_33192 "¡Ayuda, estoy pegado!" + IDS_DIALOGUE_33193 "¡No puedo moverme!" + IDS_DIALOGUE_33197 "Debo descansar." + IDS_DIALOGUE_33198 "Tengo sueño." + IDS_DIALOGUE_33199 "¡UUOA!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33200 "¡YA!" + IDS_DIALOGUE_33201 "¡AH!" + IDS_DIALOGUE_33202 "Me siento mareado." + IDS_DIALOGUE_33203 "¡No veo nada!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33216 "¡Un gatito lindo!" + IDS_DIALOGUE_33217 "Hola, gatito. ¿Te has perdido?" + IDS_DIALOGUE_33218 "No pienso hacer el papeleo." + IDS_DIALOGUE_33219 "Lo siento, camarada, pero por aquí hay menos burocracia." + IDS_DIALOGUE_33220 "Fuiste un hombre valiente." + IDS_DIALOGUE_33221 "¡No dispares!" + IDS_DIALOGUE_33222 "¡Espera! ¡Estoy desarmado!" + IDS_DIALOGUE_33223 "¿Qué es lo que quieres?" + IDS_DIALOGUE_33224 "¡Estás en un lío!" + IDS_DIALOGUE_33225 "¡Me has puesto furioso!" + IDS_DIALOGUE_33226 "¡He oído un espía!" + IDS_DIALOGUE_33227 "¡Voy a por ti!" + IDS_DIALOGUE_33228 "¡Sé que estás ahí!" + IDS_DIALOGUE_33229 "¡Muy bien, lo he oído!" + IDS_DIALOGUE_33230 "¿Quién anda ahí?" + IDS_DIALOGUE_33231 "¿Qué ha sido eso?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33232 "¿Quién está haciendo ese ruido?" + IDS_DIALOGUE_33233 "¿Hola?" + IDS_DIALOGUE_33234 "¿Qué he oído?" + IDS_DIALOGUE_33235 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_33236 "He oído algo." + IDS_DIALOGUE_33237 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_33238 "¡Ya te veo!" + IDS_DIALOGUE_33239 "¡Eh, tú! ¡Alto!" + IDS_DIALOGUE_33240 "¡Intruso!" + IDS_DIALOGUE_33241 "¡Es un espía!" + IDS_DIALOGUE_33242 "¡Tú te lo has buscado!" + IDS_DIALOGUE_33243 "¡Algo va mal por aquí!" + IDS_DIALOGUE_33244 "¡Parece que tenemos un intruso!" + IDS_DIALOGUE_33245 "¡No me gusta la pinta que tiene esto!" + IDS_DIALOGUE_33246 "¡Oh, oh!" + IDS_DIALOGUE_33247 "Um." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33248 "¿Eh?" + IDS_DIALOGUE_33249 "¿Qué es esto?" + IDS_DIALOGUE_33250 "¿Cómo ha ocurrido esto?" + IDS_DIALOGUE_33251 "¿Qué tenemos aquí?" + IDS_DIALOGUE_33252 "¿Hay alguien ahí?" + IDS_DIALOGUE_33253 "¿Quién anda ahí?" + IDS_DIALOGUE_33254 "¿¿¿Hola???" + IDS_DIALOGUE_33257 "¡¡¡AHHHH!!!" + IDS_DIALOGUE_33258 "¡¡¡UUUOOOOAAA!!!" + IDS_DIALOGUE_33259 "¡¡¡AAAIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33265 "¿De quién son estas huellas?" + IDS_DIALOGUE_33266 "¿Um, huellas? ¿Adónde llevarán?" + IDS_DIALOGUE_33267 "¿Un espía por aquí? Será mejor que siga estas huellas." + IDS_DIALOGUE_33268 "¡Granada!" + IDS_DIALOGUE_33269 "¡Cuidado!" + IDS_DIALOGUE_33270 "¡Cúbrete!" + IDS_DIALOGUE_33271 "¡Abajo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33282 "Eh, nada." + IDS_DIALOGUE_33283 "Mi imaginación." + IDS_DIALOGUE_33284 "Nada." + IDS_DIALOGUE_33285 "¿Por dónde lado has ido?" + IDS_DIALOGUE_33286 "¿Dónde estás?" + IDS_DIALOGUE_33287 "¡Puedo oler tu decadencia!" + IDS_DIALOGUE_33288 "¡Te encontraré, espía miserable!" + IDS_DIALOGUE_33289 "¿Adónde has ido?" + IDS_DIALOGUE_33290 "A mí no se me escapa ningún espía." + IDS_DIALOGUE_33291 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_33292 "¿Por qué está oscuro?" + IDS_DIALOGUE_33293 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_33294 "¿Qué ocurre con las luces?" + IDS_DIALOGUE_33295 "No puedes ocultarte de mí." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33296 "¡Ya te tengo!" + IDS_DIALOGUE_33297 "¿Dónde está mi arma?" + IDS_DIALOGUE_33298 "¿Por qué estoy desarmado?" + IDS_DIALOGUE_33299 "¡Un avaricioso capitalista me ha robado el arma!" + IDS_DIALOGUE_33300 "¡Oh, no!" + IDS_DIALOGUE_33301 "¡Esto es horrible!" + IDS_DIALOGUE_33302 "¡Abajo!" + IDS_DIALOGUE_33303 "¡Cuidado!" + IDS_DIALOGUE_33304 "¡Fuera de mi camino!" + IDS_DIALOGUE_33305 "¡Muévete, idiota!" + IDS_DIALOGUE_33311 "¡Me han dado!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33312 "Oh, estoy herido." + IDS_DIALOGUE_33313 "¡Me las pagarás!" + IDS_DIALOGUE_33314 "¡Por favor, camarada!" + IDS_DIALOGUE_33316 "¡Por favor!" + IDS_DIALOGUE_33318 "¡Oof!" + IDS_DIALOGUE_33319 "¡Unh!" + IDS_DIALOGUE_33320 "¡Aah!" + IDS_DIALOGUE_33321 "¿Dónde estás?" + IDS_DIALOGUE_33322 "¡Entrégate!" + IDS_DIALOGUE_33323 "¡Muéstrate!" + IDS_DIALOGUE_33324 "¡Sal de inmediato!" + IDS_DIALOGUE_33325 "No me hagas ir a buscarte." + IDS_DIALOGUE_33326 "Abandono." + IDS_DIALOGUE_33327 "Um, ha escapado." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33328 "¡Nada!" + IDS_DIALOGUE_33329 "Capitalistas escurridizos." + IDS_DIALOGUE_33330 "¿Y ahora qué?" + IDS_DIALOGUE_33331 "¡Eh, tú! ¡Levántate!" + IDS_DIALOGUE_33332 "¿Qué ha ocurrido?" + IDS_DIALOGUE_33333 "¿Estás bien?" + IDS_DIALOGUE_33334 "¡Dividíos!" + IDS_DIALOGUE_33335 "¡Yo iré por este lado!" + IDS_DIALOGUE_33336 "¡Tú ve por ése otro!" + IDS_DIALOGUE_33338 "¡Haced sonar la alarma!" + IDS_DIALOGUE_33339 "¡Ahora verás!" + IDS_DIALOGUE_33340 "¡¡¡Ya te tengo!!!" + IDS_DIALOGUE_33341 "¡¡¡Ya te tengo!!!" + IDS_DIALOGUE_33342 "¿Te crees muy duro?" + IDS_DIALOGUE_33343 "¡Aquí viene papaíto!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11728 "Estoy ocupado." + IDS_DIALOGUE_11729 "Vuelve más tarde. Quizás tarde un rato." + IDS_DIALOGUE_11730 "¡Permíteme un poco de intimidad!" + IDS_DIALOGUE_11731 "Gracias por rescatarme. Volveré a la dacha. Si abres la puerta seguiré el camino." + IDS_DIALOGUE_11732 "Avísame cuando esté despejado." + IDS_DIALOGUE_11733 "¡Allá voy!" + IDS_DIALOGUE_11734 "Avísame cuando no haya peligro." + IDS_DIALOGUE_11735 "¡Voy!" + IDS_DIALOGUE_11736 "Dime cuándo." + IDS_DIALOGUE_11737 "¡Cúbreme!" + IDS_DIALOGUE_11738 "¡La puerta está cerrada! ¡Ábrela!" + IDS_DIALOGUE_11739 "¡No me dejes aquí! ¡Me torturarán!" + IDS_DIALOGUE_11740 "¡Gracias! Esperaré en la dacha." + IDS_DIALOGUE_11741 "Lo que está sobre ti, a la derecha, es el repetidor de comunicaciones. " + IDS_DIALOGUE_11742 "Consulta el mapa para que no perderte." + IDS_DIALOGUE_11743 "¡Requisa una moto de nieve y vuelve al avión! ¡Rápido!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11744 "¡Malas noticias! Los agentes de D.A.Ñ.O. llegaron antes que tú. ¡Van a volar el avión! Tu piloto está escondido, pero si lo encuentran estarás en un lío." + IDS_DIALOGUE_11745 "¡¡Han cortado la carretera principal!! ¡Tendrás que encontrar otro camino para salir de la zona!" + IDS_DIALOGUE_11746 "Sin duda la policía andará ahora detrás de ti ya que piensan que has matado al socio de Kamal. Procura alejarte de ellos." + IDS_DIALOGUE_11747 "Para usar tu micrófono oculto, fíjalo a un receptor de teléfono. Encuentra un lugar donde esconderte hasta que termine la conversación y luego, activa el micrófono para reproducir la grabación. " + IDS_DIALOGUE_11748 "Puedes entrar en los servicios, pero no se te permite traspasar las puertas de seguridad." + IDS_DIALOGUE_11749 "Como te he dicho, no puedes traspasar las puertas de seguridad." + IDS_DIALOGUE_11750 "¡Ya basta de merodear!" + IDS_DIALOGUE_11751 "¡Te he dicho que te quedases aquí!" + IDS_DIALOGUE_11752 "Tu comportamiento bullicioso está empezando a irritarme." + IDS_DIALOGUE_11753 "Si te ven, los guardias intentarán capturarte. ¡Que no te cojan o te acompañarán de vuelta al vestíbulo!" + IDS_DIALOGUE_11754 "Aquí está tu estúpido bolso. No puedo creer que me hayas hecho estar aquí con esa cosita de chica. Es indecoroso." + IDS_DIALOGUE_11755 "¡Mira lo que has hecho, idiota!" + IDS_DIALOGUE_11756 "¿Yo? ¡Es culpa TUYA!" + IDS_DIALOGUE_11757 "¡¿¡Culpa MÍA!?! ¡Ni siquiera mirabas adónde ibas!" + IDS_DIALOGUE_11758 "ESO es una exageración. Quizás miré a otro lado durante un segundo, ¡pero tú eres quien salió corriendo por la esquina como un poseso!" + IDS_DIALOGUE_11759 "Creí que había visto un mono." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11760 "¡Yo también! Por eso miré hacia atrás." + IDS_DIALOGUE_11761 "¡Muy apropiado! ¿Por qué iba a perseguirte a TI un mono?" + IDS_DIALOGUE_11762 "A veces huelen los plátanos. La semana pasada me atacó una banda de ellos. ¡Me robaron la mitad de mis existencias! " + IDS_DIALOGUE_11763 "También van siempre detrás de mis mangos." + IDS_DIALOGUE_11764 "Parece que tenemos un enemigo común, amigo." + IDS_DIALOGUE_11765 "No creerás que..." + IDS_DIALOGUE_11766 "¿Creer qué?" + IDS_DIALOGUE_11767 "¿No es demasiada coincidencia que dos vendedores de frutas vean monos exactamente en el mismo momento, exactamente en la misma esquina, y que los dos se asusten simultáneamente, dando como resultado un choque que estropee los dos carros?" + IDS_DIALOGUE_11768 "¿Quieres decir que ELLOS prepararon esto? ¡¡¡Menudos BRIBONES!!!" + IDS_DIALOGUE_11769 "No te confíes, amigo. ¡Pueden atacar en cualquier momento!" + IDS_DIALOGUE_11770 "¡¡¡Tienen pistolas!!!" + IDS_DIALOGUE_11771 "¡Cuidado con los francotiradores de los balcones!" + IDS_DIALOGUE_11772 "¡Aguanta!" + IDS_DIALOGUE_11773 "¡Oh, oh!" + IDS_DIALOGUE_11774 "¡Muy bien, nena, espera!" + IDS_DIALOGUE_11775 "¡Cuidado con esos mimos!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11776 "¡Está intentando bloquear la calle!" + IDS_DIALOGUE_11777 "¡Deprisa! ¡Está cerrando las puertas!" + IDS_DIALOGUE_11778 "¡Dispara a la cerradura de esa puerta!" + IDS_DIALOGUE_11779 "¡Deprisa, dispara a esa cerradura!" + IDS_DIALOGUE_11780 "Me siento un poco cansado..." + IDS_DIALOGUE_11781 "¡Lo estamos alcanzando!" + IDS_DIALOGUE_11782 "¡Arriba, en ese balcón!" + IDS_DIALOGUE_11783 "¡Agárrate! ¡Giro brusco justo delante!" + IDS_DIALOGUE_11784 "No esperes que esta vez te aguante el bolso." + IDS_DIALOGUE_11785 "¡Ayúdame! ¡La puerta está bloqueada! ¡No hay adónde escapar!" + IDS_DIALOGUE_11786 "¡Corre por tu vida! ¡Está justo detrás de mí!" + IDS_DIALOGUE_11787 "¡Trae más agua!" + IDS_DIALOGUE_11788 "¡Deprisa! ¡El helado se está derritiendo!" + IDS_DIALOGUE_11789 "¡No sirve de nada! ¡El fuego está fuera de control!" + IDS_DIALOGUE_11790 "¡¡¡Que alguien me ayude!!!" + IDS_DIALOGUE_11791 "¡Estoy en un buen lío!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11792 "¡Agente Archer! ¡Por aquí!" + IDS_DIALOGUE_11793 "¡Va a matarme!" + IDS_DIALOGUE_11794 "¿Has visto a Carter últimamente?" + IDS_DIALOGUE_11795 "¿No lo sabes? Lo cogieron intentando organizar una entrevista con La Fábrica de la Venganza. Tenía los planes del proyecto Epsilon en su carpeta. Así que lo convirtieron en una hombre cajón." + IDS_DIALOGUE_11796 "Vaya. Así aprenderá. Es el problema que tiene esa industria. Los criminales tienen demasiados derechos como para anteponer el EQUIPO." + IDS_DIALOGUE_11797 "Cornelius Fitchpins, alférez de tercera." + IDS_DIALOGUE_11798 "Vaya, Kitchener sí que va a por el ascenso. No deja de pedirme que le transfiera a la oficina del Director." + IDS_DIALOGUE_11799 "¿Y él que culpa tiene? Déjame decirte algo, compañero, la vida como hombre cajón no es encantadora que digamos." + IDS_DIALOGUE_11800 "Eh, no quería menospreciar. Sólo pienso que está enfocándolo del modo equivocado. Si haces un buen trabajo como mueble, podrías hacer carrera. Yo lo que haría sería aprender a manejarme para coger algún espía." + IDS_DIALOGUE_11801 "¿Te encuentras mejor hoy, Chuck?" + IDS_DIALOGUE_11802 "No, mi deformado amigo. Como con todo, el horror tiene su extremo. Y yo, soy justo eso." + IDS_DIALOGUE_11803 "Eh, eso es de La mente que no quería morir, ¿no? Me encanta esa película. Nunca creí que podría identificarme con el protagonista." + IDS_DIALOGUE_11804 "¡Espera, Mikey! Pensaré algo." + IDS_DIALOGUE_11805 "Vale." + IDS_DIALOGUE_11806 "¿Ha habido suerte?" + IDS_DIALOGUE_11807 "Casi" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11808 "¡Ay! ¡Para!" + IDS_DIALOGUE_11809 "¡Sal! ¡Me estás aplastando!" + IDS_DIALOGUE_11810 "Bienvenido el modelador humano, la última trampa mortal multiuso de D.A.Ñ.O. y dispositivo de tortura automática. Echemos un vistazo a lo que nos reserva la víctima de hoy, ¿vale?" + IDS_DIALOGUE_11811 "¡Cajón humano! Muy bien, amigos, la víctima está a punto de convertirse en un bloque de miseria humana. El castigo perfecto para todos esos chicos y chicas traviesos a los que hay que recordarles lo total y completamente insignificantes que son. ¡El procedimiento es incluso reversible en un 65 por ciento, lo que significa que puedes recompensar el buen comportamiento de tus cajones humanos convirtiéndolos en sombras pálidas y temblorosas de lo que fueron!" + IDS_DIALOGUE_11812 "¡Calentad el fuego y preparad las espátulas! ¡Vamos a hacer pasteles humanos!" + IDS_DIALOGUE_11813 "¿Qué tal un cuenco de estofado con trozos humanos al estilo de Manhattan?" + IDS_DIALOGUE_11814 "¡Madre mía! ¡Parece que la víctima de hoy tendrá el MÁXIMO CASTIGO! ¡Prepárense para el plato principal, damas y caballeros! ¡Tomaremos espaguetis con salsa humana!" + IDS_DIALOGUE_11815 "¡¡¡Primero, la víctima se enfrentará a la aplastante agonía de los poderosos CONCURSANTES!!! ¡¡¡Luego vienen las tremebundas HOJAS DE SIERRA!!!... ¡¡¡Seguidas de las infernales LLAMAS!!!... ¡¡¡Y por último terminaremos con la arremolinada agonía del LICUADOR HUMANO!!!" + IDS_DIALOGUE_11816 "Esta será la primera vez que se use el modelador humano al máximo de su potencia. Hoy se respira una gran expectación, damas y caballeros. ¡Vamos a MODELAR! " + IDS_DIALOGUE_11817 "Parece que tenemos dificultades técnicas." + IDS_DIALOGUE_11818 "Director, hay una llamada... Hay una llamada telefónica urgente. Para usted." + IDS_DIALOGUE_11819 "Ya veo." + IDS_DIALOGUE_11820 "Me da igual si es el sobrino del guionista. Más le vale ir al piso de la sala de montaje o tendrás noticias de mi agente. Sí, Bernard, ya me hago cargo, pero es horrible. ¿Has visto los periódicos? Sigue mirando a la cámara. Sólo accedí a hacer esta película porque tú me lo suplicaste. Tú me lo suplicaste, Bernard. Iba a participar en El golpe en Italia, pero lo dejé pasar. Por ti. Podría estar trabajando con Michael Caine y Noel Coward, pero estoy con el maldito Terence Sloggins, el maldito sobrino del maldito guionista. Adiós, Bernard. Voy a colgar." + IDS_DIALOGUE_11821 "¡No puedo respirar! ¡No puedo respirar! ¡¿¡Puede alguien moverme hasta una ventana!?!" + IDS_DIALOGUE_11822 "Calla, chaval. Algunos intentamos dormir." + IDS_DIALOGUE_11823 "¿Así que tú has desarrollado esta nueva lava artificial?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11824 "Claro. ¿Te gusta?" + IDS_DIALOGUE_11825 "Hombre, sí. Es bastante mejor que la mierda que teníamos antes." + IDS_DIALOGUE_11826 "Puedo manejar temperaturas de hasta 343 grados kelvin. La sustancia anterior se deformaba alrededor de los 313. Yo tomo baños con agua más caliente." + IDS_DIALOGUE_11827 "El único problema es que no tiene aspecto de lava." + IDS_DIALOGUE_11828 "Se ha hecho así por el diseño. Nuestros primeros prototipos eran muy realistas, pero los resultados del grupo central no eran los adecuados, así que lo mandamos al garete. Concentrémonos en hacer que tenga un aspecto atractivo." + IDS_DIALOGUE_11829 "¿Qué tenía de malo el material realista?" + IDS_DIALOGUE_11830 "La gente da la realidad por descontada, así que es difícil impresionarlos con tu variedad de jardín de magma líquido. ¿Por qué crees que tenemos nuestro cuartel general en cavernas subterráneas? Sería mucho más barato y más cómodo alquilar un edificio de oficinas, pero entonces te encuentras con clientes potenciales que no creen que seas lo suficientemente malvado para las operaciones delicadas de verdad." + IDS_DIALOGUE_11831 "Tiene lógica." + IDS_DIALOGUE_11832 "Echa un vistazo a la última edición de la revista Criminalidad. Analizan dos organizaciones malignas: Miseria, S.A. y El Grupo de los Injustos. Si miras sus CV..." + IDS_DIALOGUE_11833 "¿Qué es un CV?" + IDS_DIALOGUE_11834 "Curriculum vitae. Bueno, Miseria, S.A. es una empresa más sofisticada. Primero en injusticia es de tercera clase: secuestros, extorsiones... El negocio pequeño que puede montar un tipo con un garaje de dos plazas y desequilibrio mental. Pero tiene una reputación mucho mejor en la industria del crimen." + IDS_DIALOGUE_11835 "No me digas. Yo creía que estaban más o menos a la par con nosotros." + IDS_DIALOGUE_11836 "Tenemos más maldad en nuestro centro de atención social que ellos en toda su organización, pero contrataron a una firma de diseño de categoría para que les ayudasen con su guarida." + IDS_DIALOGUE_11837 "¿Es ése el sitio que parece una mazmorra de dragón medieval de ciencia ficción?" + IDS_DIALOGUE_11838 "Ése es. Apostaría a que está montada con cuerdas y chicles, pero seguro que impresiona a los medios de comunicación. " + IDS_DIALOGUE_11839 "¡Busca alijos de suero anti-Súper Soldado! ¡Necesitarás el suero para deshacerte de la fuerza invasora!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11841 "Bueno, entonces ¿qué ha pasado? Pensaba que tú ibas a guardar la bandera." + IDS_DIALOGUE_11842 "Ni empieces, nenaza." + IDS_DIALOGUE_11843 "He luchado yo sola contra una invasión de Súper Soldados y tú ni siquiera has podido con un pequeño llorón caprichoso con una pistola de tiro al blanco. " + IDS_DIALOGUE_11844 "¡Me cogió por sorpresa!" + IDS_DIALOGUE_11845 "Quizás lo habrías oído llegar si no tuvieses los oídos llenos de cera." + IDS_DIALOGUE_11846 "¡Ten algo de compasión! ¡Me dispararon! ¡Muchas veces!" + IDS_DIALOGUE_11847 "Oh, pobrecito." + IDS_DIALOGUE_11848 "No te rías de mí, mujer. ¡Me duele!" + IDS_DIALOGUE_11849 "¡No me digas! A mí me dieron con un rayo láser. ¿Cómo crees que SIENTA eso? Aunque después de que te atraviese una espada o te arrastre un tornado no es tan malo." + IDS_DIALOGUE_11850 "Tienes suerte de que me esté desangrando, si no te enseñaría algo de respeto..." + IDS_DIALOGUE_11851 "¿Desangrándote?" + IDS_DIALOGUE_11852 "Bueno, quizás exagere un poco." + IDS_DIALOGUE_11853 "Para variar. Jugamos cuando quieras." + IDS_DIALOGUE_11854 "Te diré cuál es la contraseña. Es " + IDS_DIALOGUE_11855 "¡Ve por esta puerta! ¡Da a la calle!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11856 "Éste es en mi tiempo de descanso. Vuelve más tarde." + IDS_DIALOGUE_11857 "¡El helicóptero está de camino! Tendrás que resistir hasta que llegue. ¡Creemos que los refuerzos enemigos se están acercando a tu posición, así que prepárate par la lucha!" + IDS_DIALOGUE_11858 "Es demasiado tarde para rescatar a Armstrong. ¡Averigua adónde lo llevan!" + IDS_DIALOGUE_11859 "¡Ahora te estamos lanzando explosivos desde el aire! Recupéralos y colócalos alrededor del recinto." + IDS_DIALOGUE_11860 "Equipos de interceptación, informen al director temporal Lawrie en el vestíbulo." + IDS_DIALOGUE_11861 "¡Rescata a los rehenes y deshazte de esos asquerosos mimos!" + IDS_DIALOGUE_11862 "¡Dios mío!" + IDS_DIALOGUE_11863 "Cate, ¿a dónde vas? ¡Tu piloto aún está prisionero!" + IDS_DIALOGUE_11864 "¿Un hombre con un clavel? No lo he visto." + IDS_DIALOGUE_11865 "Dicen que a esa víctima de asesinato le clavaron un cuchillo, le dispararon y le atropellaron con un elefante. ¡Qué horror!" + IDS_DIALOGUE_11866 "No, no he visto a nadie con un clavel." + IDS_DIALOGUE_11867 "¿Necesitas un guía? YO conozco esto." + IDS_DIALOGUE_11868 "¿Un clavel? Lo siento, ni idea." + IDS_DIALOGUE_11869 "Quizás pueda hacer un hueco en mi agenda y llevarte a cenar hoy." + IDS_DIALOGUE_11870 "Podrías preguntarle al vendedor de flores." + IDS_DIALOGUE_11871 "Sí, he visto a un hombre con un clavel. Estuvo aquí hace poco." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11872 "¡He oído que han matado a alguien aquí cerca!" + IDS_DIALOGUE_11873 "¿Que llevaba un clavel? No, lo siento." + IDS_DIALOGUE_11874 "¿Has oído lo del asesinato? ¡Cómo ha degenerado el barrio!" + IDS_DIALOGUE_11875 "¿Por qué no le preguntas al florista?" + IDS_DIALOGUE_11876 "¿Qué aspecto tenían?" + IDS_DIALOGUE_11877 "El hombre mediría metro ochenta, con una poblada barba pelirroja, y llevaba falda." + IDS_DIALOGUE_11878 "¿Una falda escocesa?" + IDS_DIALOGUE_11879 "No sé mucho de moda femenina. La chica tenía aspecto europeo, con pelo castaño, una camiseta naranja y pantalones a rayas. Era la que llevaba la pistola." + IDS_DIALOGUE_11880 "Pero a la víctima la acuchillaron." + IDS_DIALOGUE_11881 "¡Arrestadlos! Ya aclararemos después los detalles." + IDS_DIALOGUE_11882 "Sí, un hombre me compró un clavel rosa hace unos minutos. ¿Es amigo tuyo? Se dejó esto." + IDS_DIALOGUE_11883 "¡¿¡Quién se ha comido mi salsa de mango!?! ¡¡¡Mi madre me la hizo para MÍ!!!" + IDS_DIALOGUE_11884 "Hola, ¿qué tal?" + IDS_DIALOGUE_11885 "¿Dónde está esa estúpida? Debería haber llegado hace 20 minutos." + IDS_DIALOGUE_11886 "¡Han matado a un hombre detrás del hotel Cliente feliz! ¡Dicen que ha sido un grupo de bandidos!" + IDS_DIALOGUE_11887 "¡Qué calor hace hoy!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11888 "Me han dicho que una familia fue atacada por perros salvajes en el hotel Cliente feliz. ¡Qué tragedia!" + IDS_DIALOGUE_11889 "Ojalá esos gángsters hubiesen ido a otro cine. Éste tenía unos asientos muy cómodos." + IDS_DIALOGUE_11890 "Eh, tú. Vengo de parte de Kamal. Quiere verte." + IDS_DIALOGUE_11891 "Lamentablemente, he olvidado dónde lo he visto. Tendrás que encontrarlo tú." + IDS_DIALOGUE_11892 "Al igual que tú, soy una víctima de la injusticia. Unos policías malos me han apartado de mi preciosa puerta." + IDS_DIALOGUE_11893 "Me hago cargo de que debes encontrarme irresistible, pero estoy cansado de hablar contigo." + IDS_DIALOGUE_11894 "Vete." + IDS_DIALOGUE_11895 "¡La interpretación era malísima! ¿Y los efectos especiales? ¡La sangre parecía pintura roja!" + IDS_DIALOGUE_11896 "Era spray arterial. Es más brillante porque contiene más oxígeno. ¡¿¡Y cómo puedes criticar la interpretación, con las películas que te gustan a TI!?! Me rindo." + IDS_DIALOGUE_11897 "La parte que más me gusta es donde ella empieza a desnudarse y luego el camión atraviesa el muro. Me reí tanto que casi me sale el refresco por la nariz." + IDS_DIALOGUE_11898 "Me gusta la escena del bar, con el tipo con la cosa y el otro tipo con el parche en el ojo. Creí que me iban a llevar a Urgencias del ataque de risa. Qué gran película." + IDS_DIALOGUE_11899 "¡Apaga ese fuego!" + IDS_DIALOGUE_11900 "¡Eh, tú! ¡Te he dicho que apagases ese fuego!" + IDS_DIALOGUE_11901 "Estoy esperando a que me rescaten." + IDS_DIALOGUE_11902 "Ya va siendo hora." + IDS_DIALOGUE_11903 "Hola, agente Archer. ¿Qué tal está hoy?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11904 "¿Está... me está hablando... a mí de verdad? Vaya." + IDS_DIALOGUE_11905 "Hola, Cate. Mildred te da las gracias por las flores. Se encuentra mucho mejor." + IDS_DIALOGUE_11906 "¿Mulligatawny? No. Largo." + IDS_DIALOGUE_11907 "¡Por aquí! ¡Vamos!." + IDS_DIALOGUE_11908 "¡Sígueme!." + IDS_DIALOGUE_11909 "¡Aquí!." + IDS_DIALOGUE_11910 "¡Deprisa!." + IDS_DIALOGUE_11911 "¡Aquí dentro!." + IDS_DIALOGUE_11912 "¡¡¡Abigail!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33344 "¡Eres comida para perros!" + IDS_DIALOGUE_33345 "¡¡¡Ven aquí a recibir tu merecido!!!" + IDS_DIALOGUE_33346 "¡No tienes ninguna posibilidad!" + IDS_DIALOGUE_33347 "¡Voy a disfrutar con esto!" + IDS_DIALOGUE_33348 "¡Arrodíllate y di tus últimas oraciones!" + IDS_DIALOGUE_33349 "¡Es hora de morir!" + IDS_DIALOGUE_33350 "¿Y pretendes darme miedo?" + IDS_DIALOGUE_33351 "¡Muchachos! ¡Socorro!" + IDS_DIALOGUE_33352 "¡Necesito apoyo!" + IDS_DIALOGUE_33353 "¡Por aquí!" + IDS_DIALOGUE_33354 "¡Por allí!" + IDS_DIALOGUE_33355 "¡Eh, necesito ayuda!" + IDS_DIALOGUE_33356 "¡Eh! ¿Muchachos?" + IDS_DIALOGUE_33357 "¿Dónde está esa ayuda?" + IDS_DIALOGUE_33358 "¡¡¡YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_33359 "¡¡¡GAAAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33361 "Una siestecita." + IDS_DIALOGUE_33362 "De repente estoy muy cansado." + IDS_DIALOGUE_33363 "Me siento mareado." + IDS_DIALOGUE_33364 "No me siento muy bien..." + IDS_DIALOGUE_33373 "¡No me hagas daño!" + IDS_DIALOGUE_33374 "¡Me estás poniendo nervioso!" + IDS_DIALOGUE_33375 "¡Estoy muy afligido!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33376 "¡Ahora estás en un lío!" + IDS_DIALOGUE_33377 "¡Ya me has enfadado!" + IDS_DIALOGUE_33378 "¡Has cometido un grave error, amigo!" + IDS_DIALOGUE_33379 "¡Voy a por ti!" + IDS_DIALOGUE_33380 "¡Sé que estás ahí!" + IDS_DIALOGUE_33381 "¡He oído eso!" + IDS_DIALOGUE_33382 "¿Quién anda ahí?" + IDS_DIALOGUE_33383 "¿Quién esta haciendo ese ruido?" + IDS_DIALOGUE_33384 "¡No creas que no te he oído!" + IDS_DIALOGUE_33385 "¿Hola?" + IDS_DIALOGUE_33386 "¿Um?" + IDS_DIALOGUE_33387 "¿Qué ha sido ese ruido?" + IDS_DIALOGUE_33388 "He oído algo." + IDS_DIALOGUE_33389 "¿Qué ha sido ese sonido?" + IDS_DIALOGUE_33390 "¡Ya te veo!" + IDS_DIALOGUE_33391 "¡Eh, tú! ¡Alto!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33392 "¡Te cogeré!" + IDS_DIALOGUE_33393 "¡Ya te tengo!" + IDS_DIALOGUE_33394 "¡Tú te lo has buscado!" + IDS_DIALOGUE_33395 "¡Esto es muy preocupante!" + IDS_DIALOGUE_33396 "¡Muy bien, ya me he enfadado!" + IDS_DIALOGUE_33397 "¡A mí no me engañas, sabes!" + IDS_DIALOGUE_33398 "¡No me gusta lo que estoy viendo!" + IDS_DIALOGUE_33399 "Um." + IDS_DIALOGUE_33400 "¿Eh?" + IDS_DIALOGUE_33401 "¿Qué es esto?" + IDS_DIALOGUE_33402 "¿Qué está pasando aquí?" + IDS_DIALOGUE_33403 "¿Qué tenemos aquí?" + IDS_DIALOGUE_33404 "¿Hay alguien ahí?" + IDS_DIALOGUE_33405 "¿Quién anda ahí?" + IDS_DIALOGUE_33406 "¿¿¿Hola???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33417 "¿Quién ha apagado las luces?" + IDS_DIALOGUE_33418 "De repente esto se ha vuelto oscuro." + IDS_DIALOGUE_33419 "¿Quién ha encendido las luces?" + IDS_DIALOGUE_33420 "¿Qué está pasando?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33426 "¡Me está saliendo sangre!" + IDS_DIALOGUE_33427 "¡Más facturas médicas!" + IDS_DIALOGUE_33428 "¡Ten piedad!" + IDS_DIALOGUE_33430 "¡Por favor!" + IDS_DIALOGUE_33432 "¿Qué sucede?" + IDS_DIALOGUE_33433 "¡Levántate!" + IDS_DIALOGUE_33434 "¿Qué te ha ocurrido?" + IDS_DIALOGUE_33435 "¡No es momento de tumbarse!" + IDS_DIALOGUE_33436 "" + IDS_DIALOGUE_33437 "" + IDS_DIALOGUE_33438 "" + IDS_DIALOGUE_33439 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33441 "Toma esto" + IDS_DIALOGUE_33442 "¡Muere!" + IDS_DIALOGUE_33443 "¡Ahora ya te tengo!" + IDS_DIALOGUE_33444 "¡Puedes correr, pero no esconderte!" + IDS_DIALOGUE_33445 "¡Saluda a Bruno de mi parte." + IDS_DIALOGUE_33449 "¡Maldito seas!" + IDS_DIALOGUE_33450 "Ahora estoy loco!" + IDS_DIALOGUE_33451 "¡Me divertiré viendo cómo mueres." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33456 "¡Mujer malvada!" + IDS_DIALOGUE_33457 "¡Estoy tan irritado!" + IDS_DIALOGUE_33458 "¡Tienes suerte de que esté en esta silla!" + IDS_DIALOGUE_33459 "Voy a colgar tu cabeza en mi pared." + IDS_DIALOGUE_33460 "No le dispares al maldito pájaro" + IDS_DIALOGUE_33461 "Por favor no le dispares al pájaro." + IDS_DIALOGUE_33462 "¿Practicas de tiro con el pájaro? Muy, muy divertido." + IDS_DIALOGUE_33463 "Disparar al pájaro es una perdida de dinero. ¡Es un pájaro muy caro!" + IDS_DIALOGUE_33464 "El pájaro y yo estamos aqui para ayudarte. ¡No le dispares al pájaro!" + IDS_DIALOGUE_33465 "Ah, que bien que pudieras disparar al maldito pajaro." + IDS_DIALOGUE_33466 "Y, ¿Que se supone que has conseguido?" + IDS_DIALOGUE_33467 "Vaya." + IDS_DIALOGUE_33468 "Vaya, esto no esta bien." + IDS_DIALOGUE_33469 "" + IDS_DIALOGUE_33470 "" + IDS_DIALOGUE_33471 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33472 "" + IDS_DIALOGUE_33473 "" + IDS_DIALOGUE_33474 "" + IDS_DIALOGUE_33475 "" +END + +STRINGTABLE +BEGIN + IDS_HINT_3100 "Consejo: puedes utilizar la barra espaciadora para saltarte las secuencias de vídeo, aunque te recomendamos que las veas la primera vez. Ten en cuenta que puedes desactivar los consejos de la pantalla de carga en el menú opciones del juego." + IDS_HINT_3101 "Consejo: si no estás seguro de qué hacer después, comprueba la pantalla Misión (tecla de acceso rápido predeterminada: Tabulador) para ver los objetivos. La brújula que se encuentra en la esquina superior derecha de la pantalla también indica a veces destinos importantes." + IDS_HINT_3102 "Consejo: normalmente puedes correr y esconderte en vez de enfrentarte al enemigo directamente. Los enemigos pueden perderte la pista en las intersecciones si no ven hacia qué lado has ido. Generalmente también puedes encontrar si encuentras un escondite." + IDS_HINT_3103 "Consejo: registra los cuerpos siempre en busca de objetos de valor. Debes mantener pulsado el botón Acción hasta que la barra de progreso desaparezca para coger todo lo que llevase encima el enemigo." +END + +STRINGTABLE +BEGIN + IDS_HINT_3104 "Consejo: asegúrate de utilizar los puntos de habilidad para mejorar tus habilidades. Ten en cuenta que puedes ganar puntos de habilidad adicionales si completas objetivos adicionales o si encuentras manuales de entrenamiento de espías." + IDS_HINT_3105 "Consejo: si te parece que el juego es o muy difícil o muy fácil, ajusta el nivel de dificultad en el menú opciones. También puedes cambiar tu táctica si te estás enfrentando al enemigo de frente." + IDS_HINT_3106 "Consejo: a veces puedes conseguir objetos especiales para completar un objetivo. Consulta la pantalla Inventario (tecla predeterminada: N) para ver los objetos que tienes. También puedes examinarlos para ver cómo se utilizan." + IDS_HINT_3107 "Consejo: si disparas a un dispositivo de rastreo e un enemigo, se marcará su posición en el radar, lo que hará que sea más fácil controlar el tiempo de tus movimientos y eludir perseguidores." + IDS_HINT_3108 "Consejo: algunas armas pueden utilizar varios tipos de munición. Utiliza la tecla para cambiar la munición (tecla predeterminada: F) para desplazarte por los diferentes tipos de munición o consultar la pantalla Equipamiento." + IDS_HINT_3109 "Consejo: utiliza la pantalla Inteligencia (tecla predeterminada: I) para examinar los mapas que has conseguido. Estudia las señales del mapa con el compás y así podrás descubrir dónde estás y adónde tienes que ir." + IDS_HINT_3110 "Consejo: los enemigos se alarmarán si ven aliados inconscientes o muertos por ahí. Puedes mover los cuerpos a un lugar donde se vean menos con la tecla para mover cuerpos (tecla predeterminada: G)." + IDS_HINT_3111 "Consejo: las cámaras de seguridad harán saltar la alarma si te ven o ven un aliado inconsciente o muerto. Si disparas contra una cámara de seguridad también saltará la alarma pero puedes encontrar munición especial para desactivar las cámaras de seguridad." + IDS_HINT_3112 "Consejo: a veces tendrás que volver a una zona que ya has visitado para poder completar un objetivo. Utiliza el compás para ayudarte a establecer adónde dirigirte a continuación." + IDS_HINT_3113 "Consejo: La tecla Última arma (tecla predeterminada: X) es una forma fácil de cambiar rápidamente entre armas sigilosas y otras de mayor potencia de fuego." + IDS_HINT_3114 "Consejo: escuchar las conversaciones de los enemigos a veces te proporcionará información útil. Además, los enemigos muchas veces se dirigen a realizar otra tarea tras la conversación, lo que te facilita mucho el trabajo." + IDS_HINT_3115 "Consejo: el punto de mira proporciona una buena retroalimentación sobre la puntería de tu arma. Cuánto menos claro esté menos preciso será el tiro. Puedes estabilizar tu puntería quedándote totalmente quieto mientras disparas." + IDS_HINT_3116 "Consejo: Si creas un disturbio de manera intencionada, puede ser una buena manera de eliminar a los guardas de tu camino. Mantente atento a las monedas y otros objetos interactivos." + IDS_HINT_3117 "Consejo: en realidad no lanzarás una granada antes de que sueltes el botón de disparo. Las granadas explotan tres segundos después de que las lances a no ser que impacten en un objetivo, en cuyo caso, se detonan de inmediato." + IDS_HINT_3118 "Consejo: un vehículo para la nieve proporciona una protección moderada contra el fuego enemigo que venga de frente, así que te recomendamos que te enfrentes de frente a los objetivos en vez de rodearlos exponiendo la espalda." + IDS_HINT_3119 "Consejo: para desactivar un explosivo, no tienes más que seleccionarlo y mantener pulsado el botón Acción hasta que se complete la barra de progreso. Cuánta más habilidad tengas con los artilugios, más rápido podrás neutralizar el dispositivo." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE29 "¡Te has descubierto! Ya no puedes acceder al cuartel general!" + IDS_MISSIONFAILURE30 "¡Kamal ha sido asesinado!" + IDS_MISSIONFAILURE31 "Ese tipo de comportamiento es intolerable. ¡Estás despedido!" + IDS_MISSIONFAILURE32 "Muy enfadado por haber sido atacado por los que él creía sus aliados,\nArmstrong te golpea tan fuerte que te mata. " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_NOPICKUP_1 "¡No puedes recoger más shuriken!" + IDS_WEAPON_NOPICKUP_2 "¡No puedes recoger más granadas!" + IDS_WEAPON_NOPICKUP_3 "¡No puedes recoger más gatitos enfadados!" + IDS_WEAPON_NOPICKUP_4 "¡No puedes recoger más explosivos!" + IDS_WEAPON_NOPICKUP_5 "¡No puedes recoger más monedas!" + IDS_WEAPON_NOPICKUP_6 "¡No puedes recoger más trampas para osos!" + IDS_WEAPON_NOPICKUP_7 "¡No puedes recoger más plátanos!" + IDS_WEAPON_NOPICKUP_8 "¡No puedes recoger más granadas de aturdimiento!" + IDS_WEAPON_NOPICKUP_9 "¡No puedes recoger más granadas somníferas!" + IDS_WEAPON_NOPICKUP_10 "¡No puedes recoger más granadas de gas ácido!" + IDS_WEAPON_NOPICKUP_11 "¡No puedes recoger más granadas de gas hilarante!" + IDS_WEAPON_NOPICKUP_12 "¡No puedes recoger más micrófonos!" +END + +STRINGTABLE +BEGIN + IDS_HINT_3120 "Consejo: cuando recoges una nueva arma o dispositivo, lo seleccionarás automáticamente. Puedes desactivar esta función cambiando cambiar armas automáticamente a No en el menú opciones del juego. " + IDS_HINT_3121 "Consejo: cuando puedes interactuar con un objeto, aparecerá texto debajo del cursor describiendo qué ocurrirá cuando pulses el botón Acción." + IDS_HINT_3122 "Consejo: la armadura absorbe daños de manera muy efectiva. Sin ella, las armas infligen mucho más daño. Si se te acaba la armadura, es aconsejable jugar con cautela hasta que encuentres más." + IDS_HINT_3123 "Consejo: cuando te enfrentes a un gran villano, aparecerá un metro en la parte superior de la pantalla para indicarte cuanto daño debes hacerle hasta conseguir la victoria." + IDS_HINT_3124 "Consejo: ¡guarda el progreso con frecuencia! Puedes utilizar la tecla de guardado rápido (F6) la opción Guardar partida del menú del sistema. También ten en cuenta que el juego guarda automáticamente tu progreso al comienzo de cada escena." + IDS_HINT_3125 "Consejo: a veces es más conveniente huir que luchar. Considera tu objetivo cuando te encuentres en minoría." + IDS_HINT_3126 "Consejo: si te encuentras acorralado en una esquina sin posibilidad de defenderte, recurre al plátano para escabullirte." + IDS_HINT_3127 "Consejo: utiliza las teclas para inclinarse (teclas predeterminadas: Q y E) para mirar por las esquinas sin exponerte a ningún peligro. Los enemigos terminarán por verte así que no mires más de unos segundos." + IDS_HINT_3128 "Consejo: los civiles alarmados pueden gritar pidiendo ayuda y la policía acudirá a investigar. Asegúrate de no disparar armas cerca de peatones o harás que cunda el pánico." + IDS_HINT_3129 "Consejo: explora tus alrededores con cuidado para encontrar objetivos de bonificación, artículos útiles y equipo." + IDS_HINT_3130 "Sugerencia: Pasar sigilosamente (tecla predeterminada: Mayús izquierda) hará que los enemigos no oigan tus pisadas. También puedes usar la opción Alternar Pasar sigilosamente (tecla predeterminada: Bloq Mayús) si lo prefieres." + IDS_HINT_3131 "Sugerencia: Si no localizas a la persona que te ataca, mira a ver si hay francotiradores en los balcones o en los tejados. Si tienes un arma de largo alcance, usa el zoom (tecla predeterminada: Z) para apuntar a los enemigos que estén lejos." + IDS_HINT_3132 "Sugerencia: Asegúrate de proteger a los aliados del fuego enemigo. Si los matan, fracasarás en la misión." + IDS_HINT_3133 "Sugerencia: Usa la tecla de acceso rápido de carga rápida (F9) para restaurar una partida guardada rápidamente sin tener que acceder a los menús." + IDS_HINT_3134 "Sugerencia: Puedes usar la tecla F8 para realizar capturas de pantalla del juego. Las imágenes se numeran consecutivamente y se colocan en la carpeta que has seleccionado para la instalación del juego." + IDS_HINT_3135 "Sugerencia: Evita las sustancias peligrosas, como el vapor hirviendo, el fuego y la electricidad, o sufrirás daños." +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6016 "En algún lugar el mar Egeo." + IDS_MISSION_TEXT_6017 "En algún lugar del mar de Mármara." +END + +STRINGTABLE +BEGIN + IDS_HINT_3136 "Sugerencia: ¡Guarda con frecuencia el progreso! Usa la tecla de guardado rápido (F6) o la opción Guardar partida del menú del sistema. Ten en cuenta también que el juego guarda automáticamente tu progreso al principio de cada escena." + IDS_HINT_3137 "Sugerencia: Los disparos en la cabeza causan mayores daños que en el torso o en las extremidades. También es más fácil deshacerse de los enemigos cuando no están alerta." + IDS_HINT_3138 "Sugerencia: El lanzador funcional CT-180 puede ser equipado con múltiples tipos de munición, como desactivadores de cámara, dardos tranquilizantes y dispositivos eléctricos." + IDS_HINT_3139 "Sugerencia: Intenta deshacerte silenciosamente de los enemigos para evitar alertar a otros adversarios. Los enemigos que sospechen o estén alarmados gritarán, causando alboroto." + IDS_HINT_3140 "Sugerencia: Después de despejar una zona, es posible atraer a enemigos hasta tu posición activando botones de alarma. Si tienes poca salud, blindaje o munición, quizás quieras poner trampas para los refuerzos y saquearlos." + IDS_HINT_3141 "Sugerencia: Los enemigos se acercarán al Dispositivo de proximidad gatito enfadado pensando que es un lindo minino. Cuando un objetivo entre en su distancia de activación, el gatito enfadado saltará." + IDS_HINT_3142 "Sugerencia: Para ver una lista del equipo que llevas, consulta el menú Equipamiento (tecla predeterminada: M). Puedes seleccionar un arma o artilugio para ver los tipos de munición que hay disponibles para cada uno." + IDS_HINT_3143 "Sugerencia: Cuando te sumerjas en el agua aparecerá un contador de oxígeno. Cuando el contador se agote, empezarás a ahogarte." + IDS_HINT_3144 "Sugerencia: Para ver los documentos o fotografías que hayas recogido durante una misión, ve a la pantalla Inteligencia (tecla predeterminada: I). Selecciona un elemento para verlo." + IDS_HINT_3145 "Sugerencia: Tus indicadores de salud, blindaje y munición pueden configurarse de tres formas distintas. Usa la tecla ´ para desplazarte por estas opciones." + IDS_HINT_3146 "Sugerencia: Es posible invertir instantáneamente la dirección pulsando la tecla Darse la vuelta (tecla predeterminada: retroceso). " + IDS_HINT_3147 "Sugerencia: La munición de la bomba de pegamento para el lanzador funcional retrasará a los perseguidores sin herirlos. Dispara a los enemigos o al suelo delante de ellos y se quedarán pegados durante un tiempo." + IDS_HINT_3148 "Sugerencia: Para detener el juego, usa la tecla Pausa (situada en la parte superior derecha de la mayoría de los teclados) o muestra los menús del juego pulsando la tecla Esc o una de las teclas de acceso rápido del menú, como la I para Inteligencia o la J para Jugador." + IDS_HINT_3149 "Sugerencia: Puedes acceder a tu luz de llavero de UNITY usando la tecla de acceso rápido de la luz de llavero (tecla predeterminada: L)." + IDS_HINT_3150 "Sugerencia: Cuando hayas completado la partida, aparecerá una lista de capítulos en el menú Un solo jugador. Puedes usarla para volver a jugar capítulos específicos siempre que desees." + IDS_HINT_3151 "Sugerencia: Puedes usar el botón derecho del ratón o pulsar la tecla Esc para hacer desaparecer los menús del juego." +END + +STRINGTABLE +BEGIN + IDS_HINT_3152 "Sugerencia: Los iconos se muestran en la parte izquierda de la pantalla cuando te afectan sustancias dañinas como el fuego, gas somnífero o veneno." +END + +STRINGTABLE +BEGIN + IDS_NAMES_3300 "" + IDS_NAMES_3301 "Bruno" + IDS_NAMES_3302 "Dr. Schenker" + IDS_NAMES_3303 "Sr. Jones" + IDS_NAMES_3304 "Armstrong" + IDS_NAMES_3305 "Yamata-san" + IDS_NAMES_3306 "Hawkins" + IDS_NAMES_3307 "Barnes" + IDS_NAMES_3308 "Kamal" + IDS_NAMES_3309 "Banerjee" + IDS_NAMES_3310 "Harij" + IDS_NAMES_3311 "Piloto" +END + +STRINGTABLE +BEGIN + IDS_NAMES_3312 "Santa" + IDS_NAMES_3313 "Policía" + IDS_NAMES_3314 "Hatori-san" + IDS_NAMES_3315 "Malpani" + IDS_NAMES_3316 "Spencer" + IDS_NAMES_3317 "Cate" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7088 "¡Queda un Súper Soldado más!" + IDS_TRANSMISSIONS_7089 "¡Rescata a tu piloto e impide que D.A.Ñ.O. vuele tu avión!" + IDS_TRANSMISSIONS_7090 "Hunde el Submarino Súper Secreto y detén la invasión de Súper Soldados." + IDS_TRANSMISSIONS_7091 "Esta caja fuerte se abre con una llave especial. No puedes forzar la cerradura." + IDS_TRANSMISSIONS_7092 "Es una imagen de una grúa." + IDS_TRANSMISSIONS_7093 "Esta puerta se activa con la voz.\nEl sistema de seguridad no reconoce tu nombre." + IDS_TRANSMISSIONS_7094 "Está puerta está sellada con un cierre de emergencia.\nTendrás que cortar la energía del sistema del seguridad." + IDS_TRANSMISSIONS_7095 "¡Escóndete! Si te capturan ahora, fracasarás en tu misión. " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33575 "¡Que alguien me reanime!" + IDS_DIALOGUE_33579 "¡Por aquí!" + IDS_DIALOGUE_33582 "¡Cúbreme!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33584 "¡Sé sigiloso!" + IDS_DIALOGUE_33588 "Charge!" + IDS_DIALOGUE_33590 "¡Afina tu puntería!" + IDS_DIALOGUE_33593 "Stop it, jackass!" + IDS_DIALOGUE_33596 "¡Espera!" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2928 "examinar" + IDS_TARGET_2929 "activar" + IDS_TARGET_2930 "begin interrogation" + IDS_TARGET_2931 "reset power" + IDS_TARGET_2932 "position rocket" + IDS_TARGET_2933 "fuel rocket" + IDS_TARGET_2934 "extend gantry" + IDS_TARGET_2935 "launch rocket" + IDS_TARGET_2936 "place launch key" + IDS_TARGET_2937 "activate mining laser" + IDS_TARGET_2938 "insert battery" + IDS_TARGET_2939 "charge battery" + IDS_TARGET_2940 "activate airlock" + IDS_TARGET_2941 "insert cannonball" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2750 "Cate viaja a Japón para investigar un rumor que habla de una convención internacional del crimen. " + IDS_MISSION_DESC_2751 "Cate debe infiltrarse en la propiedad del Director y fotografiarle. " +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2752 "Cate se dirige a Siberia para investigar el proyecto: Omega. Su primera tarea es prepararse para la huida. " + IDS_MISSION_DESC_2753 "Cuando ya ha anochecido, Cate entra sigilosamente en la base militar para encontrar el edificio principal de registros. " + IDS_MISSION_DESC_2754 "Una vez que haya acabada la misión, Cate debe escapar del complejo con vida. " + IDS_MISSION_DESC_2755 "Cate va a Akron, Ohio, a buscar pistas en la casa Melvin Blitzny." + IDS_MISSION_DESC_2756 "Cate y Armstrong llegan a la India para infiltrarse en la oficina del cuartel general local de D.A.Ñ.O." + IDS_MISSION_DESC_2757 "Una vez que se haya ganado la confianza de D.A.Ñ.O., Cate debe introducirse en su cámara. " + IDS_MISSION_DESC_2758 "Cate y Armstrong viajan a la Antártida para aprender la naturaleza del proyecto: Omega." + IDS_MISSION_DESC_2759 "Cate vuelve a la India con la esperanza de frustrar un ataque de Súper soldados. " + IDS_MISSION_DESC_2760 "Cate se detiene en el cuartel general de UNITY para hablar con el Dr. Shenker acerca de los Súper soldados." + IDS_MISSION_DESC_2761 "Cate se introduce con sigilo a bordo de la base submarina secreta de D.A.Ñ.O. para rescatar a Armstrong." + IDS_MISSION_DESC_2762 "Cate y Armstrong buscan un modo de salir de la base submarina cuando ésta comienza a venirse abajo. " + IDS_MISSION_DESC_2763 "Después de ser capturado por D.A.Ñ.O., Cate debe sobrevivir al aterrador manipulador y enfrentarse al enemigo." + IDS_MISSION_DESC_2764 "Cate debe luchar contra la invasión de los Súper soldados y proteger la bandera de Khios. " + IDS_MISSION_DESC_2765 "Un equipo de intercepción de UNITY debe apresurarse para rescatar a Cate en Japón. " + IDS_MISSION_DESC_2766 "Un equipo de intercepción de UNITY es enviado a Siberia para destruir el Súper ordenador soviético. " + IDS_MISSION_DESC_2767 "Un equipo de intercepción de UNITY es enviado a la India para obtener información acerca de Balaji Malpani." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2768 "Un equipo de intercepción de UNITY se dirige a la Antártida para rescatar a Armstrong de D.A.Ñ.O." + IDS_MISSION_DESC_2769 "Un equipo de intercepción de UNITY debe luchar contra un ataque de los mortales mimos." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4800 "A full bucket of water. " +END + +STRINGTABLE +BEGIN +IDS_MISSION_DD_01 "Antarctic Aggression (4-16)" +IDS_MISSION_DD_02 "Conflict in Calcutta (4-16)" +IDS_MISSION_DD_03 "Hydroelectric Hatred (4-16)" +IDS_MISSION_DD_04 "Judgement in Japan (4-16)" +IDS_MISSION_DD_05 "Winter War (4-16)" +IDS_MISSION_DD_06 "Oceanic Opposition (4-16)" +IDS_MISSION_DD_07 "Russian Rampage (4-16)" +IDS_MISSION_DD_08 "Siberian Strife (4-16)" +IDS_MISSION_DD_09 "Violence in the Villa (4-16)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DE_01 "Bollywood (4-8)" +IDS_MISSION_DE_02 "Chill Kill (8-16)" +IDS_MISSION_DE_03 "The Curse of Kali (4-8)" +IDS_MISSION_DE_04 "Mediterranean Mayhem (4-8)" +IDS_MISSION_DE_05 "Italian Invasion (4-8)" +IDS_MISSION_DE_06 "Dojo of Death (8-16)" +IDS_MISSION_DE_07 "Moonbase (8-16)" +IDS_MISSION_DE_08 "Abandoned Prison (8-16)" +IDS_MISSION_DE_09 "Rome in Ruins (4-8)" +IDS_MISSION_DE_10 "Trailer Park (2-4)" +IDS_MISSION_DE_11 "Unrest at UNITY (8-16)" +IDS_MISSION_DE_12 "Woodlands (4-8)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DM_01 "Khios (8-16)" +IDS_MISSION_DM_02 "Siberian Installation (8-16)" +IDS_MISSION_DM_03 "UNITY Headquarters (8-16)" +IDS_MISSION_DM_04 "Volkov's Lair (2-4)" +END + + + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "ResShared.rc" +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/ClientRes/Lang/ES/credits.txt b/Jack/ClientRes/Lang/ES/credits.txt new file mode 100644 index 00000000..11390183 --- /dev/null +++ b/Jack/ClientRes/Lang/ES/credits.txt @@ -0,0 +1,333 @@ +Monolith Productions: +>BIG +>TIME:2.0 +>POS:UL +## +James Ackley, Jefe de diseño de sonido +Scott Albaugh, diseñador / animador 2D / 3D senior +Curt Collins, Diseño 2D/3D +Brian Davis, Diseño 2D/3D +Michael Drummond, Diseñador de los niveles +Kevin Francis, Ingeniero ejecutivo +Terry Franguiadakis, Ingeniero +Jim Geldmacher, Ingeniero +Jon Gramlich, Responsable de control de calidad +Nathan Grigg, Compositor +Chris Hewett, Director de desarrollo +J.J. Hoesing, Ingeniero +>TIME:8.0 +>POS:UL +## +Rodney Houle, Diseñador de los niveles +Craig Hubbard, director creativo / diseñador jefe del juego +Steve Lee, Diseñador ejecutivo 2D/3D +David Longo, director artístico / diseñador 3D jefe +Dan Miller, Diseñador de los niveles +John Mulkey, jefe de diseño de niveles +Jeff Orkin, ingeniero ejecutivo +John O'Rorke, Ingeniero +Brian Pamintuan, Diseño de sonido +Russ Pecoraro, Ingeniero +Brad Pendleton, Ingeniero jefe +Sasha Runnels, Diseñador ejecutivo 2D/3D +>TIME:8.0 +>POS:UL +## +Samantha Ryan, Productor +Wes Saulsberry, Jefe de diseño +Kevin Stephens, Ingeniero jefe +Akika Tanaka, Diseño 2D/3D +Cassano Thruston, Diseño de sonido +Simon Wong, Ingeniero jefe del sistema de captura de movimiento + +Diseño adicional de niveles: +Nathan Cheever +Dan Thibadeau + +Diseño de personajes: +Eric Kohler +>TIME:8.0 +>POS:UL +## +Nuestro agradecimiento a las +siguientes personas de Monolith: +Matt Allen +Andrea Barringer +Bryan Bouwman +Wayne Burns +Dan Fagan +Andy Grant +Jason Hall +Patti Kail +Gary Kussman +Kevin Lambert +>TIME:8.0 +>POS:UL +## +Rick Lambright +Brian Legge +Brian Long +Spencer Maiers +Kristin McLellan +Andrew Megowan +Ryan O'Rourke +Matt Scott +Mark Spadoni +Jim Totaro +Jim Wallingford +Sandra Watanabe +Kiyotaka Yaguchi +>TIME:8.0 +>POS:UL +## +Nuestro agradecimiento a las +siguientes personas de LithTech: +Jonathan Branam +Bob Givnin +Brian Goble +Matt Grimshaw +Chris Hedberg +Jeff Hutt +David Koenig +Dan White +Paige Young +>TIME:8.0 +>POS:UL +## +Agradecimientos especiales a: +Steve Burke, NVIDIA +Justin Cooney, ATI +Todd Clauson, Intel +Keith Galocy, NVIDIA +Greg James, NVIDIA +Matt McClellan, Intel +Derek Reynolds, Intel +Randy 'ydnar' Reddig + +Metrolabs, desarrolladores de +tasty XTZ Caffeine y +Bebidas energéticas +>TIME:6.0 +>POS:UL +## +Tema de NOLF 2 y música del juego: +Nathan Grigg + +Música de las secuencias cinematográficas: +Nathan Grigg +Guy Whitmore + +Música: +Andrea Wittgens: voces (Tema de NOLF 2) +Nathan Grigg: voces (Tema de NOLF 2, India, isla) +Jack Klitzman: saxofón (Tema de NOLF 2, India) +Vincent Gates: guitarra (Tema de D.A.Ñ.O.) +Lori Goldston: chelo +(Tema de D.A.Ñ.O., arreglos de Guy Whitmore) +>TIME:7.0 +>POS:UL +## +Técnicos de grabación: +Jay Kenney +Vincent Gates +Nathan Grigg + +Agradecimientos: +Rich Ragsdale +(para el uso del tema de NOLF 1) +>TIME:5.0 +>POS:UL +## +Reparto de voces: +>TIME:2.0 +>BIG +>POS:UL +## +JEN TAYLOR: +Cate Archer +Isako +Recepcionista de UNITY +Ninjas +Transeúnte +>TIME:4.0 +>POS:UL +## +JOCK BLANEY: +Dmitrij Volkov +>TIME:2.0 +>POS:UL +## +KEN BOYNTON: +Santa +General Morgan Hawkins +Mischa, el piloto +Kamal +Anoop Banerjee +Loco Harij +Balaji Malpani +Personal soviético +Personal de D.A.Ñ.O. de India +Personal de D.A.Ñ.O. +Mimos +>TIME:5.0 +>POS:UL +## +DAVID SCULLY: +Isaac Barnes +>TIME:2.0 +>POS:UL +## +DEENA BURKE: +Madre +Ninjas +>TIME:3.0 +>POS:UL +## +JOHN ARMSTRONG: +El Director +Pierre +Personal de D.A.Ñ.O. +Hombre-cajones +Mimos +>TIME:4.0 +>POS:UL +## +GARY SCHWARTZ: +Súper soldados +Personal soviético +Personal de D.A.Ñ.O. de India +>TIME:3.0 +>POS:UL +## +JOHN PATRICK LOWRIE: +Bruno Lawrie +>TIME:2.0 +>POS:UL +## +TODD LICEA: +Personal de Alianza Maligna +Personal de D.A.Ñ.O. +>TIME:3.0 +>POS:UL +## +JEFF STEITZER: +Dr. Schenker +Súper Ordenador +Robots +>TIME:3.0 +>POS:UL +## +ANDRE SOGLIUZZO: +Magnus Armstrong +>TIME:2.0 +>POS:UL +## +TERRENCE SLOGGINS: +como él mismo +>TIME:2.0 +>POS:UL +## +Reparto de la película: +Jenna Hawkins +John Kaufmann +Lisa P. Leon-Guerrero +Justin Emeka +Kerry Wong +Hans Altwies +>TIME:6.0 +>POS:UL +## +Sierra Entertainment / Vivendi Universal Publishing: +>TIME:2.0 +>BIG +>POS:UL +## +Bill Dugan, Productor ejecutivo +Bernadette Pryor, Productor +Lee Rosini, Director de marketing +Mike Rodgers, Jefe de producto +Rozita Tolouey, Jefe de producto +Rich Robinson, Vicepresidente de Studios +Barbara Schwabe, Vicepresidente de marketing +Mike Nicolino, Desarrollo de red +Julie Pitt, Director de servicios de producción +Sarita Churchill, Jefe de relaciones públicas +Gary Stevens, Director de control de calidad +Ken Eaton, Supervisor de control de calidad +>TIME:8.0 +>POS:UL +## +Tharlie Richardson, Jefe de testeo de control de calidad +Sweeney Designs, Diseño del manual +Guy Welch, Director de marketing en línea +Mike Taskey, Evangelista en línea +Randy Linch, Director de certificación de producto +Rod Shean, Director de certificación de producto +Chris Rooker, Responsable de certificación de producto +Cyra Talton, Responsable de certificación de producto +Brandon Valdez, Responsable de certificación de producto +Richard Benavides, Ingeniero de certificación de producto +Ben Chan, Testeador de certificación de producto +Mary Barker, Director de marketing comercial +>TIME:8.0 +>POS:UL +## +Agradecimientos: +Erin Alvarez +Molly O'Brien +Pat Callahan +Julie Daino +Tracy Gibbs +Adam Lumsden +Peter Della Pena +Eric Roeder +Mike Ryder +James Shaw +>TIME:7.0 +>POS:UL +## +(c)2002 Monolith Productions, Inc. Todos los derechos reservados. +Cate Archer y A Spy in H.A.R.M's Way +son marcas comerciales de Monolith Productions, Inc. + +Copyright (C)2002 Sierra Entertainment, Inc. +(C)1998-2002 Sierra Entertainment, Inc. +Sierra y el logotipo de Sierra son marcas comerciales de Sierra Entertainment. + +Fox Interactive, No One Lives Forever y sus +logotipos asociados son marcas registradas o +marcas comerciales de Twentieth Century Fox Film Corporation. +(c)2002 Twentieth Century Fox Film Corporation. +>TIME:6.0 +## +Utiliza tecnología Bink Video Copyright + +(c) 1994-2000 by RAD Game Tools, Inc. + +Tecnología de condificación triple MPEG Layer-3 +bajo licencia de Fraunhofer IIS y Thomson multimedia. + +Este producto contiene LithTech(tm) Jupiter +System bajo licencia de LithTech, Inc. +LithTech Jupiter System (c) 1997-2002 +LithTech, Inc. Todos los derechos reservados. +LithTech y el logotipo de LithTech logo son +marcas comerciales de LithTech, Inc. +>TIME:6.0 +## +NVIDIA, el logotipo NVIDIA, el logotipo NVIDIA The +Way It's Meant to be Played y otras marcas NVIDIA +Marcas y marcas comerciales de NVIDIA Corporation +Estados Unidos y/o otros países. + +Windows es una marca registrada o +marca comercial de Microsoft Corporation en +Estados Unidos y/o otros países. + +El icono de clasificación es una marca comercial de +Interactive Digital Software Association. +>TIME:6.0 +## +>END + + diff --git a/Jack/ClientRes/Lang/ES/intro.txt b/Jack/ClientRes/Lang/ES/intro.txt new file mode 100644 index 00000000..b93350a9 --- /dev/null +++ b/Jack/ClientRes/Lang/ES/intro.txt @@ -0,0 +1,104 @@ +Una producción de Fox Interactive y Sierra Entertainment + +Un juego de Monolith Productions +>TIME:3.0 +>BIG +## +No One Lives Forever 2: +A Spy in H.A.R.M.'s Way +funciona con +LithTech Jupiter System +>TIME:2.0 +>BIG +## +Fox Interactive: +>BIG +>TIME:2.0 +>POS:UL +## +Chris Miller, Productor +Aaron Blean, Productor asociado + + +Departamento de control de calidad de Fox: +Igor Krinitskiy, asistente del jefe de control de calidad +Francis Choi, jefe de testeo +>TIME:7.0 +>POS:UL +## +Equipo de testeo: +Geoff Bent +Scott Carroll +Michael Graham +Jen Johnson +Cris Lee +Jonathan Masterson +Billy Pamier +Denise Pater +Luke Thai +Hal Zabie + +Responsable de localización: +Kristian Davila +>TIME:8.0 +>POS:UL +## +Agradecimientos: +Eric Asevo +Steve Bersch +Pete Cesario +Lindsey Fischer +Ivo Gerscovich +Greg Goodrich +Tim Hall +Tim Harrison +Michael Heilemann +Becky Kneubuhl +Luke Letizia +Dan Mackechnie +Gabriel Mann +John Melchior +>TIME:8.0 +>POS:UL +## +Megan O'Brien +Paul Pawlicki +Michael Pole +Rich Ragsdale +Tim Ramage +Jamie Samson +Kirk Scott +Dave Shaw +David Stalker +Kristin Sutter (www.nolfgirl.com) +Tim Tran +Jack Van Leer +Ellen Williams +Chris Wilson +Asylum Studio (www.asylumstudio.com) +>TIME:8.0 +>POS:UL +## +Lisa Fredsti (Fox Library) +Brian Thomas (Fox Library) +Brian Harvey (NVIDIA) +Jessie Lawrence (Creative Labs) +Mike Drummelsmith (Matrox) +Marisa Porter, MCA +Van Riker, 1600 Records +John Dongelmans (Microsoft) +Tim Godwin, Line 6 +>TIME:7.0 +>POS:UL +## +Trabajar con el equipo de NOLF sigue +siendo una gran experiencia. +Gracias por todas las noches, +los fines de semana perdidos y sobre todo, +por vuestro increíble compromiso +con la calidad de este juego. +¡Sois estupendos!: CM +>TIME:6.0 +>POS:UL +## +FIN diff --git a/Jack/ClientRes/Lang/FR/ClientRes.rc b/Jack/ClientRes/Lang/FR/ClientRes.rc new file mode 100644 index 00000000..4231def2 --- /dev/null +++ b/Jack/ClientRes/Lang/FR/ClientRes.rc @@ -0,0 +1,7747 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\ClientRes.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "..\..\..\shared\resshared.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\ClientRes.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""..\\..\\..\\shared\\resshared.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""ResShared.rc""\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT +// + +CREDITS TEXT "credits.txt" +INTRO TEXT "intro.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR "..\\..\\arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_TITLE_GAME "UN JOUEUR" + IDS_TITLE_DIFFICULTY "DIFFICULTE" + IDS_TITLE_OPTIONS "OPTIONS" + IDS_TITLE_NEWGAME "NOUVELLE PARTIE" + IDS_TITLE_LOADGAME "CHARGER" + IDS_TITLE_SAVEGAME "ENREGISTRER" + IDS_TITLE_CUSTOMLEVELS "NIVEAUX PERSONNALISES" + IDS_TITLE_DISPLAYOPTIONS "OPTIONS D'AFFICHAGE" + IDS_TITLE_TEXTURE "RESOLUTION TEXTURES" + IDS_TITLE_PERFORMANCE "PERFORMANCES" +END + +STRINGTABLE +BEGIN + IDS_TITLE_SOUND "SON" + IDS_TITLE_KEYBOARD "CLAVIER" + IDS_TITLE_MOUSE "SOURIS" + IDS_TITLE_JOYSTICK "JOYSTICK" + IDS_TITLE_BRIEFING "MISSION" + IDS_NO_DM_MAPS "No maps available for this game mode." + IDS_TITLE_ENDMISSION "RESUME DE MISSION" + IDS_TITLE_PROFILE "PROFIL JOUEUR" + IDS_TITLE_PLAYER "JOUEUR" + IDS_TITLE_CROSSHAIR "VISEUR" + IDS_TITLE_CONTROLS "CONTROLES" + IDS_TITLE_CONFIGURE "CONFIGURER LES CONTROLES" + IDS_TITLE_MULTI "MULTIJOUEUR" + IDS_TITLE_HOST_OPTIONS "OPTIONS DE JEU" + IDS_TITLE_OBJECTIVES "OBJECTIFS DE MISSION" +END + +STRINGTABLE +BEGIN + IDS_TITLE_GAME_OPTIONS "OPTIONS DE JEU" + IDS_TITLE_INVENTORY "EQUIPEMENT" + IDS_TITLE_ADVDISPLAY "OPTIONS D'AFFICHAGE AVANCEES" + IDS_TITLE_EFFECTS "EFFETS SPECIAUX" + IDS_TITLE_JOIN "REJOINDRE" + IDS_TITLE_HOST "HEBERGER PARTIE" + IDS_TITLE_HOST_MISSIONS "MISSIONS" + IDS_TITLE_PLAYER_SETUP "CONFIGURATION JOUEUR" + IDS_CHAPTERS "Liste des chapitres" + IDS_TITLE_INTEL "RENSEIGNEMENTS" + IDS_TITLE_HOST_CAMPAIGN "MAP SELECTION" + IDS_TITLE_SYSTEM "SYSTEME" + IDS_TITLE_KEYS "INVENTAIRE" + IDS_HOST_NAME_TDM_DEFAULT "NOLF2 Team Deathmatch" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_DD_DEFAULT "NOLF2 Doomsday" + IDS_HELP_MULTIPLAYER_LAN + "Lancer une partie multijoueur en réseau local ou modifier les options multijoueur." + IDS_TITLE_TEAM "TEAM SETUP" + IDS_HELP_CHAPTERS "Rejouer un chapitre." + IDS_HELP_TEAM_NAME "Set the name of the team." + IDS_HELP_CHAPTER_LIST "Rejouer au chapitre sélectionné." + IDS_HELP_FAILURE "Appuyez sur F9 pour charger la partie en sauvegarde rapide.\nAppuyez sur une autre touche pour accéder à l'écran de chargement." + IDS_PRESS_ANY_KEY "Appuyez sur une touche pour continuer." + IDS_NORMAL "Normal" + IDS_PERFORMANCE_TEST "Test des réglages" + IDS_CUSTOM "Personnaliser" + IDS_ON "On" + IDS_OFF "Off" + IDS_YES "Oui" + IDS_NO "Non" + IDS_NONE "Aucun" +END + +STRINGTABLE +BEGIN + IDS_YES_VK_CODE "89" + IDS_NO_VK_CODE "78" + IDS_ALLOW_GORE "TRUE" + IDS_END_TIME "Limite de temps écoulée." + IDS_END_FRAG "Limite atteinte." + IDS_END_UNKNOWN "Niveau annulé." + IDS_USE_PASSWORD "Verrouiller serveur" + IDS_HELP_PASSWORD "Demander aux joueurs de taper un mot de passe pour rejoindre la session." + IDS_PASSWORD "Mot de passe" + IDS_HELP_ENTER_PASSWORD "Détermine un mot de passe que les joueurs doivent taper pour rejoindre la partie." + IDS_NOCUSTOMWORLDS "Aucun monde personnalisé trouvé" + IDS_DEMONOCUSTOMWORLDS "Les mondes personnalisés ne sont pas disponibles dans la démo." + IDS_DEMODISCONNECT "Déconnexion du serveur. (remarque: les parties démo doivent être hébergées par des serveurs démo)" + IDS_DEMOINFO "info" + IDS_WAITINGFOROTHERPLAYERS "En attente des autres joueurs…" + IDS_NOJOYSTICKDETECTED "Aucun joystick ou gamepad trouvé. Vérifiez la configuration du contrôleur et son branchement." +END + +STRINGTABLE +BEGIN + IDS_FEW "Peu" + IDS_SOME "Quelques" + IDS_LOTS "Beaucoup" + IDS_ALL "Tous" + IDS_CLOSE "Fermer" + IDS_SPACER " - " + IDS_BACK "Retour" + IDS_CREATE "Créer" + IDS_LOAD "Charger" + IDS_DELETE "Effacer" + IDS_OK "Ok" + IDS_CANCEL "Annuler" + IDS_ENTER_NAME "Tapez un nom pour la partie:" + IDS_CONTINUE "Suivant" + IDS_EMPTY_SLOT "[Emplacement libre]" + IDS_WHEEL_UP "Molette haut" +END + +STRINGTABLE +BEGIN + IDS_WHEEL_DOWN "Molette bas" + IDS_SINGLEPLAYER "Un joueur" + IDS_MULTIPLAYER "Multijoueur (Internet)" + IDS_OPTIONS "Options" + IDS_CREDITS "Crédits" + IDS_EXIT "Quitter" + IDS_NEWGAME "Nouvelle partie" + IDS_LOADGAME "Charger partie" + IDS_SAVEGAME "Enregistrer" + IDS_CUSTOM_LEVEL "Niveau personnalisé" + IDS_DISPLAY "Affichage" + IDS_SOUND "Son" + IDS_KEYBOARD "Clavier" + IDS_MOUSE "Souris" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_DD_LGT_SCORE "Light piece score" + IDS_DD_LGT_SCORE_HELP "Points recevived for placing a light piece of the device." + IDS_DD_REMOVED_SCORE "Steal piece score" + IDS_DD_REMOVED_SCORE_HELP + "Points recevived for stealing a piece of the opponent's device." + IDS_HOST_REMOVE_WEAPON "< Remove restriction" + IDS_HELP_ADD_WEAPONS "Add items to the restricted list." + IDS_HELP_REM_WEAPONS "Remove items from the restricted list." + IDS_MISSING_WORLD "Unable to load world resources." + IDS_GAME_VERSION "v1.0" + IDS_HOST_NAME_DE_DEFAULT "NOLF2 Demolition" + IDS_WEAPONSSTAY_HELP "Toggle whether or not weapons stay after picking them up." + IDS_HELP_FILTER_TYPE "Set filtering of servers based on game type." + IDS_UNKNOWN "Unknown" + IDS_CONTROL_MANUALAIM "Manual Aim" +END + +STRINGTABLE +BEGIN + IDS_ABORT "Quitter la partie" + IDS_DECODEMSG_CHARSET "AaBbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxYyZz" + IDS_SCMDPASSWORD "Mot de passe SCMD" + IDS_HELP_ALLOWSCMD "Autorise les connexions admin SCMD." + IDS_HOST_NAME_DM_DEFAULT "NOLF 2 deathmatch" + IDS_TAGGEDMYSELF "Vous vous êtes taggé !" + IDS_HETAGGEDME "Vous avez été taggé par %1!s!" + IDS_ITAGGEDHIM "Vous avez taggé %1!s!" + IDS_HETAGGEDHIMSELF "%1!s! s'est taggé !" + IDS_HETAGGEDHIM "%1!s! a taggé %2!s!" + IDS_IWASTAGGED "Vous avez été taggé !" + IDS_HEWASTAGGED "%1!s! a été taggé !" + IDS_SCORE_SCORE "Score :" + IDS_SCORE_PLAYERS "Joueurs :" + IDS_SCORE_KILLS "Tués :" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK "Configurer joystick/gamepad" + IDS_RESTOREDEFAULTS "Par défaut" + IDS_CONFIGURE "Configurer les contrôles" + IDS_BRIEFING "Briefing:" + IDS_OBJECTIVES "Objectifs:" + IDS_NORMALTURN "Vitesse de rotation normale" + IDS_FASTTURN "Rotation rapide" + IDS_LOOKUP "Vitesse vue haut/bas" + IDS_START_MISSION "Lancer la mission" + IDS_CH_ALPHA "Opacité" + IDS_CH_R "Rouge" + IDS_CH_G "Vert" + IDS_CH_B "Bleu" + IDS_CH_STYLE "Style" + IDS_CH_BASIC "Standard" + IDS_CH_CROSSBAR "Croix" +END + +STRINGTABLE +BEGIN + IDS_CH_DOTCROSS "Point-croix" + IDS_CH_POST "Barre" + IDS_CH_DOT "Point" + IDS_CH_CORNER "Coin" + IDS_CH_DYNAMIC "Mise à l'échelle dynamique" + IDS_CONTROLS_CROSSHAIR "Viseur" + IDS_PROFILE "Profil" + IDS_HELP_PROFILE "Choisir, créer et effacer des profils de joueur." + IDS_56K "56k" + IDS_CABLE "Câble" + IDS_TEAM_NAME "Team name" + IDS_DSL_HIGH "DSL (élevé)" + IDS_T1 "T1" + IDS_T3 "T3" + IDS_BANDWIDTH_CYCLE "Bande passante" + IDS_HELP_BANDWIDTH_CYCLE "Passe en revue les réglages de bande passante." +END + +STRINGTABLE +BEGIN + IDS_HELP_BANDWIDTH_EDIT "Choisir une bande passante personnalisée." + IDS_BANDWIDTH_EDIT "Bande passante (perso)" + IDS_PROFILE_LIST "Profils:" + IDS_RESUME "Reprendre la partie" + IDS_CONTINUE_GAME "Continuer la partie" + IDS_TEAM_MODEL "Team model" + IDS_GAMMA "Gamma" + IDS_HEADBOB "Mouvement de la tête" + IDS_WEAPONSWAY "Mouvement des armes" + IDS_HELP_HEADBOB "Définir l'intensité du mouvement de la tête lorsque vous marchez." + IDS_HELP_WEAPONSWAY "Définir l'intensité du mouvement simulé des armes quand vous marchez." + IDS_HELP_PICKUP_MSG_DUR "Définir le temps d'affichage des messages d'objets trouvés." + IDS_PICKUP_MSG_DUR "Durée des messages" + IDS_IGNORE_TAUNTS "Ignorer les sarcasmes" + IDS_HELP_IGNORE_TAUNTS "Activer/désactiver l'utilisation des sarcasmes audio." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_TAUNTS "Sarcasmes audio" + IDS_HELP_ALLOW_TAUNTS "Activer/désactiver les sarcasmes audio." + IDS_RENAME "Renommer" + IDS_VERSION_FILTER "Version:" + IDS_MAIN "Menu principal" + IDS_HELP_GAMMA "Régler le niveau gamma de l'affichage." + IDS_HELP_SINGLEPLAYER "Lancer, charger ou enregistrer une partie à un joueur." + IDS_HELP_MULTIPLAYER "Lancer une partie multijoueur sur Internet ou définir les options multijoueur." + IDS_HELP_OPTIONS "Définir les options d'affichage, de son, de jeu et de performances." + IDS_HELP_EXIT "Quitter le jeu." + IDS_HELP_NEW "Commencer une nouvelle partie." + IDS_HELP_LOAD "Charger une partie enregistrée." + IDS_HELP_SAVE "Enregistrer la partie." + IDS_HELP_CUSTOM "Charger un niveau personnalisé." + IDS_HELP_PROFILE_CREATE "Créer un nouveau profil." + IDS_HELP_BACK "Retour à l'écran précédent." +END + +STRINGTABLE +BEGIN + IDS_HELP_DIFFICULTY "Choisir le niveau de difficulté." + IDS_HELP_DISPLAY "Définir les options d'affichage." + IDS_HELP_SOUND "Définir les options audio." + IDS_HELP_CONTROLS "Définir la configuration du contrôleur." + IDS_HELP_RENDERER "Choisir le périphérique de rendu." + IDS_HELP_RESOLUTION "Définir la résolution et la profondeur des couleurs." + IDS_HELP_ANTIALIAS "Active/désactive l'anti-aliasing plein écran." + IDS_HELP_DETAILLEVEL "Définir le niveau des détails des textures." + IDS_HELP_ADVDISPLAY "Modifier les options d'affichage qui influent sur les performances." + IDS_HELP_LOOKSPRING "Recentre automatiquement la vue quand vous vous déplacez." + IDS_HELP_RUNLOCK "Activer/désactiver le mode course par défaut." + IDS_HELP_CROSSHAIR "Activer/désactiver l'utilisation du viseur." + IDS_HELP_GORE "Activer/désactiver les effets de sang." + IDS_HELP_SHADOWS "Détermine le niveau de détails des ombres des personnages." + IDS_HELP_TEAM_MODEL "Set the model used for the team." + IDS_HOST_CAMPAIGN "Map Selection" +END + +STRINGTABLE +BEGIN + IDS_WON_VAL_FAIL "Erreur de validation du client" + IDS_WON_SERV_VAL "Validation du serveur initialisée" + IDS_DISCONNECTED_FROM_SERVER "Déconnecté du serveur" + IDS_CANT_CONNECT_TO_SERVER "Connexion au serveur impossible" + IDS_CONTROL_FORWARD "Avancer" + IDS_CONTROL_BACKWARD "Reculer" + IDS_CONTROL_TURNLEFT "Tourner à gauche" + IDS_CONTROL_TURNRIGHT "Tourner à droite" + IDS_CONTROL_STRAFE "Esquive" + IDS_CONTROL_STRAFELEFT "Esquive à gauche" + IDS_CONTROL_STRAFERIGHT "Esquive à droite" + IDS_CONTROL_TURNAROUND "Demi-tour" + IDS_CONTROL_RUN "Furtif" + IDS_CONTROL_FIRE "Tir" + IDS_CONTROL_ACTIVATE "Action" + IDS_CONTROL_JUMP "Sauter" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RELOAD "Recharger" + IDS_CONTROL_DUCK "Accroupi" + IDS_CONTROL_NEXTWEAPON "Arme suivante" + IDS_CONTROL_PREVIOUSWEAPON "Arme précédente" + IDS_CONTROL_LOOKUP "Vue vers le haut" + IDS_CONTROL_LOOKDOWN "Vue vers le bas" + IDS_CONTROL_CENTERVIEW "Centrer Vue" + IDS_CONTROL_INVENTORY "Equipement" + IDS_CONTROL_MISSION "Etat de la mission" + IDS_CONTROL_HOLSTERWEAPON "Ranger arme" + IDS_CONTROL_STATUS "Etat du joueur" + IDS_CONTROL_SAY "Parler" + IDS_CONTROL_ALT_FIRING "Tir-alt" + IDS_CONTROL_NEXT_AMMO "Changer de munitions" + IDS_CONTROL_KEYS "Inventaire" + IDS_CONTROL_INTEL "Renseignements" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RUNLOCKTOGGLE "Bascule furtif" + IDS_CONTROL_WEAPON1 "Arme 1" + IDS_CONTROL_WEAPON2 "Arme 2" + IDS_CONTROL_WEAPON3 "Arme 3" + IDS_CONTROL_WEAPON4 "Arme 4" + IDS_CONTROL_WEAPON5 "Arme 5" + IDS_CONTROL_WEAPON6 "Arme 6" + IDS_CONTROL_WEAPON7 "Arme 7" + IDS_CONTROL_WEAPON8 "Arme 8" + IDS_CONTROL_WEAPON9 "Arme 9" + IDS_CONTROL_WEAPON10 "Arme 10" + IDS_CONTROL_ZOOM_IN "Zoomer" + IDS_CONTROL_ZOOM_OUT "Dézoomer" + IDS_CONTROL_UNASSIGNED "[inutilisé]" + IDS_CONTROL_NEXTVISMODE "Lunettes" + IDS_CONTROL_COMPASS "Boussole" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_LEANLEFT "Se pencher à gauche" + IDS_CONTROL_LEANRIGHT "Se pencher à droite" + IDS_CONTROL_CROUCHTOGGLE "Bascule Accroupi" + IDS_CONTROL_MOVE_BODY "Move body/piece" + IDS_CONTROL_FLASHLIGHT "Lampe" + IDS_CONTROL_RADIO "Radio" + IDS_CONTROL_LASTWEAPON "Dernière Arme" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_GAME_OPTIONS "Partie" + IDS_HELP_GAME_OPTIONS "Définir les options de jeu et de contenu." + IDS_DISPLAY_SUBTITLES "Sous-titres" + IDS_TEAM_2 "Red team" + IDS_HELP_LOOP_MISSIONS "Restart first map after completing the last map." + IDS_CAMPAIGN_LIST "Map Lists:" + IDS_STAT_COMBAT ".combat" + IDS_STAT_DEFENSE ".défense" + IDS_STAT_ACCURACY ".précision" + IDS_HELP_CAMPAIGN_CREATE "Create a new map list." + IDS_HELP_CAMPAIGN_LOAD "Load the selected map list." + IDS_HELP_SUBTITLES "Activer/désactiver l'affichage des sous-titres." + IDS_GAME_TYPE "Type de partie" + IDS_HELP_TEAM_1 "Set options for the Blue team" + IDS_HELP_TEAM_2 "Set options for the Red team" +END + +STRINGTABLE +BEGIN + IDS_DEDICATED "Serveur dédié" + IDS_HELP_DEDICATED "Lancer un serveur dédié ou non." + IDS_GAME_LANGUAGE "French" + IDS_MENU_VKEY_YES "89" + IDS_MENU_VKEY_NO "78" + IDS_DEMOVERSION "DEMO TECHNOLOGIQUE v1.0" + IDS_HELP_CAMPAIGN_DELETE "Delete the selected map list." + IDS_HELP_CAMPAIGN_RENAME "Rename the selected map list." + IDS_HELP_VERSION_FILTER "Activer/désactiver le filtrage des serveurs en fonction de la version." + IDS_ALL_VERSIONS "Toutes versions" + IDS_CURRENT_VERSION "Version actuelle" + IDS_PERFORMANCE "Performances" + IDS_HELP_PERFORMANCE "Définir les options liées aux performances." + IDS_SFX "Effets spéciaux" + IDS_HELP_SFX "Définir les options des effets spéciaux." + IDS_POLYGRIDBUMP "Bump mapping polygrille" +END + +STRINGTABLE +BEGIN + IDS_HELP_POLYGRIDBUMP "Activer/désactiver l'utilisation du bump mapping sur les polygrilles." + IDS_POLYGRIDFRES "Fresnel polygrille" + IDS_HELP_POLYGRIDFRES "Activer/désactiver l'utilisation du filtre de fresnel sur les polygrilles pour des effets de miroir plus réalistes." + IDS_TEXTURE_RES "Résolution des textures" + IDS_HELP_TEXTURE_RES "Définir la résolution des textures utilisées dans le jeu." + IDS_BUMPMAP "Bump mapping environnemental" + IDS_HELP_BUMPMAP "Activer/désactiver l'utilisation du bump mapping sur les effets d'environnement." + IDS_BILINEAR "Filtrage bilinéaire" + IDS_HELP_BILINEAR "Activer/désactiver l'utilisation du filtrage bilinéaire sur les textures." + IDS_SHADOWS "Ombres" + IDS_SOUND_HIGH "Elevé" + IDS_SOUND_LOW "Faible" + IDS_QUICKLOAD "Chargement rapide (F9)" + IDS_QUICKSAVE "Sauvegarde rapide (F6)" + IDS_LOADCURRENT "Sauvegarde auto" + IDS_OBJECTIVES_OPTIONAL " (optionnel)" +END + +STRINGTABLE +BEGIN + IDS_OBJECTIVES_CHANGED "Mise à jour des objectifs de mission" + IDS_X_OF_Y "%1!d! sur %2!d!" + IDS_SERVER_LAN "LAN uniquement" + IDS_USE_CROSSHAIR "Utiliser viseur" + IDS_HUD_LAYOUT0 "Barre de santé, texte munitions" + IDS_HUD_LAYOUT1 "Texte santé, texte munitions" + IDS_HUD_LAYOUT2 "Barre de santé, barre de munitions" + IDS_HUDLAYOUT "Type d'affichage tête haute" + IDS_HELP_HUDLAYOUT "Définir le style d'interface." + IDS_NO_INVENTORY "[Pas d'inventaire]" + IDS_VEHICLETURN "Vitesse de rotation véhicule" +END + +STRINGTABLE +BEGIN + IDS_HELP_VEHICLETURN "Définir la vitesse de rotation des véhicules." + IDS_HELP_RETURN "Retour à la partie." + IDS_TRILINEAR "Filtrage trilinéaire" + IDS_HELP_TRILINEAR "Activer/désactiver le filtrage trilinéaire." + IDS_ANISOTROPIC "Filtrage anisotropique" + IDS_HELP_ANISOTROPIC "Activer/désactiver l'utilisation du filtre anisotropique." + IDS_DETAILLEVEL "Général" + IDS_TRACERS "Traceuses" + IDS_HELP_TRACERS "Activer/désactiver les effets traceuses pour les armes." + IDS_DISPLAY_CURRENTMODE "Mode d'affichage" + IDS_SERVER_NORESPONSE "Serveur ne répond pas." + IDS_SERVER_DETAIL_VERSION + "Détails indisponibles car la version du serveur est différente" + IDS_DISPLAY_CHANGE "Changer de mode" + IDS_DISPLAY_GORE "Sang" + IDS_ENV_DETAIL "Environnement" + IDS_HELP_ENV_DETAIL "Détermine le niveau de détails dans l'environnement, notamment les effets de neige et d'herbe." +END + +STRINGTABLE +BEGIN + IDS_RESPAWN "Réapparition" + IDS_SOUND_MUSICENABLED "Musique" + IDS_SOUND_MUSICVOL "Volume musique" + IDS_SOUND_FX "Effets sonores" + IDS_SOUND_FXVOL "Volume sons" + IDS_SOUND_QUALITY "Qualité des sons" + IDS_SOUND_NONE "Aucun" + IDS_SOUND_IMA "Musique directe" + IDS_LOW "Faible" + IDS_MEDIUM "Moyen" + IDS_HIGH "Elevé" + IDS_CUSTOMIZED "Personnalisé" + IDS_MOUSE_MOUSELOOK "Toujours vue souris" + IDS_MOUSE_LOOKSPRING "Centrage auto." + IDS_MOUSE_INVERTYAXIS "Inversion axe Y" + IDS_MOUSE_SENSITIVITY "Sensibilité souris" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCHING "fouille" + IDS_SPEECH_FXVOL "Volume des voix" + IDS_HELP_SPEECHVOL "Régler le volume des voix." + IDS_TARGET_REVIVE "rendre vie à %1!s!" + IDS_CURRENT_CAMPAIGN "Current Map List: %1!s!" + IDS_M_STAT_UNDAMAGED "Vous n'avez pas été touché." + IDS_M_STAT_TIMES_HIT "Vous avez été touché %1!d! fois." + IDS_M_STAT_MARKSMANSHIP "Tireur d'élite: %1!d! tirs dans la tête." + IDS_M_STAT_ACCURACY "Précision : %1!d! touchés, %2!d! tirs (%3!d!%%)" + IDS_IWASKILLED "Vous avez été tué!" + IDS_ENTER_CAMPAIGN_NAME "Enter a name for this map list:" + IDS_HEWASKILLED "%1!s! a été tué!" + IDS_HELP_ADD_WEAPON "Add selected item to the list of restricted items." + IDS_TARGET_HACKINGKEYPAD "décodage" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_TEAM_SAY "Team Say" + IDS_DOOMSDAY_CORE "Core" + IDS_DOOMSDAY_TRANSMITTER "Transmitter" + IDS_DOOMSDAY_BATTERIES "Batteries" + IDS_DOOMSDAY_PICKEDUP "%1!s! picked up the %2!s!" + IDS_DOOMSDAY_DROPPED "%1!s! dropped the %2!s!" + IDS_DOOMSDAY_PLACED "%1!s! placed the %2!s!" + IDS_DOOMSDAY_STOLE "%1!s! stole the %2!s!" + IDS_DOOMSDAY_DEVICE_COMPLETED "%1!s! completed the Dooms Day Device." + IDS_DOOMSDAY_RESPAWNED "The %1!s! has respawned." + IDS_HELP_SERVER_TYPE "Sort servers by game type. " + IDS_FILTER_MOD "Mod:" + IDS_HELP_FILTER_MOD "Toggle filtering of servers based on mod." + IDS_FILTER_ALLMODS "All Mods" +END + +STRINGTABLE +BEGIN + IDS_TARGET_WELDING "utilise la torche" + IDS_TARGET_DECODING "décodage" + IDS_TARGET_PICKING "crochète" + IDS_TARGET_PHOTOGRAPHING "photographie" + IDS_TARGET_BOMBING "désamorce la bombe" + IDS_TARGET_INKING "dévoile" + IDS_TARGET_BUGGING "place le micro" + IDS_COOP_STAT_ACCURACY "Précision" + IDS_COOP_STAT_KILLS "Tués" + IDS_COOP_STAT_DEATHS "Morts" + IDS_STAT_MISSION "Mission:" + IDS_FILTER_ALLPING "Tous" + IDS_FILTER_LOWPING "< 100" + IDS_FILTER_MEDPING "< 300" + IDS_FILTER_HIGHPING "< 500" + IDS_HELP_FILTER_PING "Filtrer les serveurs d'après leur ping." +END + +STRINGTABLE +BEGIN + IDS_MOUSE_INPUTRATE "Lissage souris" + IDS_MOUSE_LEFTBUTTON "Bouton gauche de la souris" + IDS_MOUSE_MIDDLEBUTTON "Bouton central de la souris" + IDS_MOUSE_RIGHTBUTTON "Bouton droit de la souris" + IDS_JOYSTICK_USE "Utiliser joystick/gamepad" + IDS_JOYSTICK_TURN "Gauche/droite" + IDS_JOYSTICK_LOOK "Vue haut/bas" + IDS_JOYSTICK_MOVE "Avancer/reculer" + IDS_JOYSTICK_STRAFE "Esquive gauche/droite" + IDS_JOYSTICK_BUTTONNUM "Bouton %1!d!" + IDS_JOYSTICK_AXIS "Axe" + IDS_JOYSTICK_ACTION "Action" + IDS_HELP_SERVER_LAN "Toggle whether the server should be published to the internet." + IDS_POV_MOVE "Déplacement" + IDS_JOYSTICK_INVERT "Vue haut/bas (inversée)" + IDS_POV_LOOK "Vue" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_AXISNONE "Aucun" + IDS_HELP_AXIS "Définit l'action associée à cet axe de la manette." + IDS_DISPLAY_BITDEPTH "Profondeur des couleurs" + IDS_ANTIALIAS "Anti-aliasing" + IDS_ADVCONTROLS_RUNLOCK "Toujours courir" + IDS_NEW_EASY "Facile" + IDS_NEW_MEDIUM "Normal" + IDS_NEW_HARD "Difficile" + IDS_NEW_INSANE "Super-espion" + IDS_ADVCONTROLS_CROSSHAIR "Viseur" + IDS_DISPLAY_RENDERER "Périphérique de rendu" + IDS_DISPLAY_RESOLUTION "Résolution" + IDS_TEAM1_NAME "Blue" + IDS_CONTROLS "Contrôles" + IDS_HELP_PROFILE_LOAD "Charger le profil sélectionné." + IDS_SERVER_NAME "Nom du serveur" +END + +STRINGTABLE +BEGIN + IDS_SERVER_PLAYERS "Joueurs" + IDS_SERVER_PING "Ping" + IDS_SERVER_GAME "Partie" + IDS_SERVER_MAP "Carte" + IDS_JOIN_PLAYER_NAME "Nom du joueur" + IDS_JOIN_PLAYER_SCORE "Score" + IDS_OPTION_NAME "Options de jeu" + IDS_OPTION_VALUE "Valeur" + IDS_SERVER_REFRESH "Rafraîchir serveurs" + IDS_SERVER_REPING "Ping serveurs" + IDS_FILTER_ALLGAMES "Toutes les parties" + IDS_FILTER_DM "Deathmatch uniquement" + IDS_FILTER_ALLPOP "N'importe quel nombre de joueurs" + IDS_FILTER_NOTFULL "Pas complet" + IDS_FILTER_NOTEMPTY "Pas vide" +END + +STRINGTABLE +BEGIN + IDS_FILTER_NOT_BOTH "Ni vide ni complet" + IDS_SERVER_LOCKED "Verrouillé" + IDS_SERVER_VERSION "Version" + IDS_HELP_SERVER_VERSION "Sort servers by game version." + IDS_HOST_NAME "Nom de la session" + IDS_HOST_OPTIONS "Options de l'hôte" + IDS_HOST_MISSIONS "Missions" + IDS_HOST_LAUNCH "Lancer" + IDS_SERVER_FILTERS "Filtres" + IDS_POP_FILTER "Joueurs:" + IDS_NIGHT_SCOPE "Offre une meilleure vue pour plus de précision et un système d'amplification de la lumière pour les opérations de nuit." + IDS_SILENCER "Réduction du bruit des tirs." + IDS_TEAM2_NAME "Red" + IDS_FILTER_PING "Ping:" + IDS_SCOPE "Zoome pour plus de précision" + IDS_CAMERA_SCOPE "Loupe ajustable." +END + +STRINGTABLE +BEGIN + IDS_KILLEDMYSELF "Vous vous êtes tué!" + IDS_HEKILLEDME "Vous avez été tué par %1!s!" + IDS_IKILLEDHIM "Vous avez tué %1!s!" + IDS_HEKILLEDHIMSELF "%1!s! s'est suicidé!" + IDS_HEKILLEDHIM "%1!s! a tué %2!s!" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_COOP_DEFAULT "NOLF 2 coopératif" + IDS_PASSWORD_DEFAULT "Mot de passe" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCH "fouiller" + IDS_TARGET_MOVE "tirer corps" + IDS_TARGET_DROP "lâcher corps" + IDS_TARGET_TALK "parler" + IDS_TARGET_USE "utiliser" + IDS_TARGET_TAKE "prendre" + IDS_TITLE_HOST_WEAPONS "WEAPON RESTRICTIONS" + IDS_TARGET_HACKKEYPAD "décoder" + IDS_TARGET_WELD "torche" + IDS_TARGET_DECODE "décoder" + IDS_TARGET_PICK "crocheter" + IDS_TARGET_PHOTO "photographier" + IDS_TARGET_BOMB "poser la bombe" + IDS_TARGET_INK "dévoiler" + IDS_TARGET_BUG "placer le micro" + IDS_TARGET_INNOCENT "ami" +END + +STRINGTABLE +BEGIN + IDS_CDKEY_ENTER "Tapez la Clé-CD" + IDS_CDKEY_INVALID "Clé-CD incorrecte" + IDS_CDKEY "Clé-CD" + IDS_BANDWIDTH_INVALID "Bande passante incorrecte. Indiquez une valeur comprise entre %1!d! et %2!d!." + IDS_AMMO_NOPICKUP "Impossible de porter plus de munitions de %1!s!!" + IDS_DMODE_RENDERER "%1!s! - %2!s!" + IDS_DMODE_RESOLUTION "%1!d!x%2!d!x%3!d!" + IDS_TARGET_WAKEUP "réveil" + IDS_JOIN_GAME "Rejoindre partie" + IDS_PLAYER_NAME "Nom du joueur" + IDS_DMODE_PLEASEWAIT1 "Merci de patienter le temps que NOLF" + IDS_DMODE_PLEASEWAIT2 "détermine la liste des périphériques de rendu…" + IDS_HELP_PLAYER_MODEL "Choisir le modèle du personnage." + IDS_HELP_PLAYER_NAME "Choisir le nom du joueur." + IDS_SCORE_PING "Ping :" + IDS_HELP_SERVER_NAME "Trier les serveurs dans l'ordre alphabétique." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_SCMD_COMMANDS "Autoriser SCMD" + IDS_TARGET_OPEN_2177 "ouvrir" + IDS_TARGET_CLOSE_2178 "fermer" + IDS_TARGET_TIPOVER_2179 "bulle d'aide" +END + +STRINGTABLE +BEGIN + IDS_HELP_SERVER_PLAYERS "Trier les serveurs selon le nombre de joueurs." + IDS_HELP_SERVER_PING "Trier les serveurs selon leur temps de réponse." + IDS_HELP_SORT_PLYR_NAME "Trier les joueurs dans l'ordre alphabétique." + IDS_HELP_SORT_PLYR_SCORE "Trier les joueurs selon leur score." + IDS_HELP_SORT_PLYR_PING "Trier les joueurs selon leur temps de réponse." + IDS_HELP_REFRESH "Rafraîchir la liste des serveurs." + IDS_HELP_REPING "Ping de tous les serveurs." + IDS_HELP_GAME_FILTER "Filtrer les parties selon le type." + IDS_HELP_POP_FILTER "Filtrer les parties selon le nombre de joueurs." + IDS_HELP_REM_ALL_WPNS "Remove all items from the restriction list." + IDS_MOD_NOPICKUP "Vous avez déjà: %1!s!!" + IDS_GEAR_NOPICKUP "Impossible d'utiliser: %1!s!!" + IDS_HELP_REM_WEAPON "Remove the selected item from the restriction list." + IDS_CHANGING_AMMO "Change en munitions de %1!s!" + IDS_HELP_JOIN_GAME "Rejoindre la partie sélectionnée." + IDS_HELP_SESSION_NAME "Choisir le nom de la session à héberger." +END + +STRINGTABLE +BEGIN + IDS_TARGET_DEFUSE "désarmorcer" + IDS_DISARMED "Désamorcé!" + IDS_HELP_CDKEY "Entrez une clé CD pour accéder aux parties sur Internet" + IDS_MUSIC_QUALITY "Qualité de la musique" + IDS_HELP_MUSIC_QUALITY "Détermine la qualité de la musique. Cela influe sur les performances." + IDS_CONFIRM_MUSIC "Activer la musique haute qualité peut influer négativement sur les performances du jeu. Souhaitez-vous activer la musique haute qualité?" + IDS_CONFIRM_SOUND "Les sons haute qualité nécessitent beaucoup de mémoire et cela peut influer sur les performances du jeu. Voulez-vous activer les sons haute qualité?" + IDS_PLAYER_MODEL "Modèle du joueur" + IDS_HELP_PERFORMANCE_TEST + "Lance un niveau de test pour analyser les options de performances." + IDS_HOST_AVAIL_MISSIONS "Missions disponibles" + IDS_TITLE_PERFORMANCE_TEST "Test des réglages de performances" + IDS_RES_DIFFERS "(L'affichage sera réinitialisé.)" + IDS_PRECACHE "Configuration pré-cache" + IDS_LOAD_USERGAME "Parties enregistrées" + IDS_SHELLCASINGS "Douilles" + IDS_DISCONNECT "Déconnexion du serveur" +END + +STRINGTABLE +BEGIN + IDS_HELP_SHELLCASINGS "Activer/désactiver l'affichage des douilles." + IDS_SHUTDOWN "Fin de partie" + IDS_HELP_PRECACHE "Activer le pré-cache rend le jeu plus fluide, mais augmente les temps de chargement et réclame plus de mémoire." + IDS_WPN_RESTRICT "Weapons restrictions" + IDS_PERFORMANCE_FPS_AVE "Images/seconde Ave: %1!d!" + IDS_PERFORMANCE_RESULTS "Fin du test" + IDS_OVERALL_PERFORM "Optimisation des performances" + IDS_HELP_OVERALL_PERFORM + "Sélectionner des préréglages d'options pour les ordinateurs rapides, normaux et lents." + IDS_PERFORM_HIGH "Détails faibles" + IDS_PERFORM_MEDIUM "Détails intermédiaires" + IDS_PERFORM_LOW "Détails élevés" + IDS_AUTOSWITCH_WEAPONS "Chang. auto armes" + IDS_HELP_AUTOSWITCH_WEAPONS + "Activer/désactiver l'utilisation automatique de la dernière arme trouvée." + IDS_STARTNEXTLEVEL "Lancement du niveau suivant…" + IDS_PERFORMANCE_FPS_MIN "Images/seconde min.: %1!d!" + IDS_PERFORMANCE_FPS_MAX "Images/seconde max.: %1!d!" +END + +STRINGTABLE +BEGIN + IDS_HELP_GAME_TYPE "Choisir le type de partie à héberger." + IDS_HELP_HOST_OPTIONS "Définir les options de jeu multijoueur." + IDS_HELP_HOST_MISSIONS "Set the list of maps for this map list." + IDS_HELP_LAUNCH "Lancer la partie." + IDS_HELP_AVAIL_MISSIONS "Liste des missions disponibles." + IDS_HELP_POV "Définit l'action associée à ce contrôle de PdV." + IDS_HELP_SEL_MISSIONS "Liste des missions utilisées pour cette session." + IDS_HELP_ADD_MISSION "Add the selected map to the list." + IDS_HELP_ADD_ALL "Add all available maps to the list." + IDS_HELP_REM_MISSION "Remove the selected map from the list." + IDS_HELP_REM_ALL "Remove all maps from the list." + IDS_VSYNC "Sync V" + IDS_HELP_VSYNC "Synchronise le rafraîchissement de l'écran au périphérique pour éviter les problèmes de cisaillement." + IDS_CURRENT "Actuel" + IDS_UPGRADE "Améliorer" + IDS_LOW_VIOLENCE "Peu de violence" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_UNBOUND "Le joystick ou gamepad n'est pas configuré. Voulez-vous le configurer maintenant?" + IDS_FX_DETAIL "Effets" + IDS_HELP_FX_DETAIL "Détermine le niveau de détails dans les effets comme les explosions, les débris et les impacts de balle." + IDS_PERFORMANCE_FPS_BELOW_MIN "%1!d!%% sous %2!d!% IPS" + IDS_PERFORMANCE_FPS_MINTOMAX "%1!d!%% entre %2!d!% et %3!d!% IPS" + IDS_CONFIRM_RESTORE "Utiliser les paramètres par défaut va annuler toutes les modifications que vous avez apportées aux contrôles. Continuer?" + IDS_PERFORMANCE_FPS_ABOVE_MAX "%1!d!%% au-dessus de %2!d!% IPS" + IDS_PERFORMANCE_TEST_ABORTED "Test de performances annulé." + IDS_NEW_MOTD "Le message du jour a été mis à jour." + IDS_VALIDATION_FAILED "ERREUR - échec du test de version du serveur." + IDS_HARDWARE_CURSOR "Curseur matériel" + IDS_HELP_HARDWARE_CURSOR + "Activer/désactiver l'utilisation du curseur matériel." + IDS_CONFIRM_CURSOR "Activer le curseur matériel rend le déplacement du curseur plus fluide, mais certaines cartes graphiques ne gèrent pas correctement les curseurs en mode matériel. Souhaitez-vous activer le curseur matériel?" + IDS_LAUNCH_UPDATE "Mettre à jour dans la dernière version" + IDS_HELP_LAUNCH_UPDATE "Arrête le jeu et tente de télécharger la dernière version du jeu." + IDS_NEW_VERSION "Une version du jeu mise à jour est disponible." +END + +STRINGTABLE +BEGIN + IDS_INTERNET "Configuration de la connexion Internet…" + IDS_NO_CDKEY "Vous devez taper une Clé-CD correcte pour rejoindre ou héberger une partie sur Internet." + IDS_TARGET_HACKCARDREADER "décoder / insérer la carte" + IDS_LARGE "Grand" + IDS_SMALL "Petit" + IDS_JOIN_LAN "Rejoindre partie LAN" + IDS_GUNPICKUP "%1!s!!" + IDS_OUTOFAMMO "%1!s! n'a plus de munitions" + IDS_GEARPICKUP "%1!s!" + IDS_AMMOPICKUP "%2!s! ( %1!d! )" + IDS_MODPICKUP "%1!s!" + IDS_INTELLIGENCE "Objet de renseignement!" + IDS_HELP_JOIN_LAN "Rejoindre une partie multijoueur LAN." + IDS_SERVER_ADDRESS "Adresse" + IDS_NO_SERVERS "- aucun serveur trouvé -" + IDS_LOOKING_FOR_SERVERS "Recherche des serveurs…" +END + +STRINGTABLE +BEGIN + IDS_CONNECTING_TO_SERVER "Connexion au serveur" + IDS_UNKNOWN_PLAYER "un joueur" + IDS_HELP_EASY "Facile: vous subissez peu de dégâts quand vous êtes touché et l'IA est peu précise." + IDS_HELP_MEDIUM "Normal: vous subissez un peu plus de dégâts et l'IA est plus précise." + IDS_HELP_HARD "Difficile: l'IA vise correctement et vous subissez facilement des dégâts." + IDS_HELP_INSANE "Super-espion: l'IA est très précise et vous subissez beaucoup de dégâts." + IDS_DIFF_REMINDER "Le niveau de difficulté peut être modifié à tout moment de la mission via l'écran OPTIONS DE JEU." + IDS_SERVERS_SHOWN "(serveurs %1!d!-%2!d!)" + IDS_HELP_WPN_RESTRICT "Restrict the use of certain weapons, ammo, and gear." + IDS_KEY_PICKUP "Found %1!s!!" + IDS_STATUS_STRING "Etat: %1!s!!" + IDS_WAITING "En attente" + IDS_QUERYING "Requête envoyée aux serveurs" + IDS_VALIDATING "Validation de la Clé-CD" + IDS_TARGET_HACKINGCARDREADER "décodage" + IDS_LOAD_TIPS "Charger les conseils" +END + +STRINGTABLE +BEGIN + IDS_HELP_LOAD_TIPS "Active/désactive l'affichage de conseils sur l'écran de chargement." + IDS_DSL_LOW "DSL (faible)" + IDS_CONTOUR "Contour moto-neige" + IDS_HELP_CONTOUR "La moto-neige suit le relief. Désactiver pour faciliter le pilotage." + IDS_PERFORMANCE_RECOMMEND_LOWER + "Nous vous recommandons de réduire le niveau de détails avant de jouer." + IDS_PAUSED "Partie en pause" + IDS_UNUSED "Inutilisé" + IDS_PERFORMANCE_RECOMMEND_HIGHER + "Nous vous recommandons d'augmenter le niveau de détails avant de jouer." + IDS_PERFORMANCE_RECOMMEND_CURRENT + "Le jeu devrait fonctionner correctement avec le niveau de détails actuel." + IDS_PRESSANYKEY "Appuyez sur une touche…" + IDS_EMPTY " [ vide ]" + IDS_PRESSKEYTOCONTINUE "Appuyez sur Entrée pour continuer." + IDS_SUREWANTQUIT "Voulez-vous vraiment quitter?" + IDS_SUREWANTABORT "Voulez-vous vraiment annuler la partie en cours?" + IDS_BUMPER_LOADING "Chargement…" +END + +STRINGTABLE +BEGIN + IDS_INTEL_ITEMS "Objets de renseignement:" + IDS_UP "haut" + IDS_DOWN "fermé" + IDS_DISCON_MISSINGFILE "Fichier manquant %1!s!" + IDS_DISCON_CONNECTTERM "Vous vous êtes déconnecté du serveur." + IDS_DISCON_SERVERBOOT "Vous avez été banni du serveur." + IDS_DISCON_TIMEOUT "Délai d'attente de connexion dépassé." + IDS_WEAPON "Arme" + IDS_KEY "Touche" + IDS_DEVICE_MOUSE "Souris" + IDS_DEVICE_JOYSTICK "Joystick" + IDS_AUTOSWITCH_AMMO "Chang. auto munitions" + IDS_HELP_AUTOSWITCH_AMMO + "Activer/désactiver l'utilisation automatique du dernier type de munitions trouvé." + IDS_PORT "Port réseau" + IDS_HELP_ENTER_PORT "Indiquez le numéro du port réseau à utiliser." + IDS_SERVER_PORT "Port" +END + +STRINGTABLE +BEGIN + IDS_NOQUICKSAVEGAME "Aucune sauvegarde rapide trouvée." + IDS_LOADGAMEFAILED "Erreur de chargement de la partie." + IDS_SAVEGAMEFAILED "Erreur lors de l'enregistrement." + IDS_NOLOADLEVEL "Impossible de charger le niveau." + IDS_SOUNDNOTINITED "Impossible d'initialiser les sons. Vérifiez que la carte son est bien configurée." + IDS_UNSPECIFIEDERROR "Une erreur inconnue s'est produite." + IDS_NOREMAPKEY "Cette touche ne peut pas être changée." + IDS_NOSOUNDCHANGE "Les effets sonores doivent être activés pour modifier ce réglage." + IDS_NOMUSICCHANGE "La musique doit être activée pour modifier ce réglage." + IDS_ENDCURRENTGAME "Cela va mettre fin à la partie actuelle. Continuer?" + IDS_REINITIALIZING_RENDERER "Réinitialisation du périphérique de rendu" + IDS_INVALID3DSOUNDPROVIDER "Périphérique de son 3D incorrect." + IDS_CONFIRMSAVE "Voulez-vous écraser cette sauvegarde?" + IDS_GAMESAVED "Partie enregistrée." + IDS_REBINDING_TEXTURES "Réinitialisation des textures." + IDS_REBINDING_LIGHTMAPS "Réinitialisation des lightmaps." +END + +STRINGTABLE +BEGIN + IDS_SHUTDOWNSERVER "Vous allez arrêter le serveur et déconnecter tous les clients. Continuer?" + IDS_NETERR_GENERIC "ERREUR - impossible de lancer une partie en réseau." + IDS_NETERR_SELECTSERVICE + "ERREUR - impossible d'utiliser le protocole réseau choisi." + IDS_NETERR_FILLSERVICE "ERREUR - impossible d'accéder aux protocoles réseau disponibles." + IDS_NETERR_JOINSESSION "ERREUR - impossible de rejoindre la session choisie." + IDS_NETERR_HOSTSESSION "ERREUR - impossible d'héberger la session." + IDS_NETERR_INIT "ERREUR - impossible d'initialiser le système réseau." + IDS_NETERR_CANTBINDTOPORT "Impossible de se connecter au port demandé." + IDS_NETERR_NOTSAMEGUID "ERREUR - impossible de rejoindre car le serveur de jeu utilise une version différente du jeu ou un autre jeu." + IDS_PLAYER "Joueur" + IDS_SAY "DIT:" + IDS_NETERR_WRONGPASS "Mot de passe incorrect." + IDS_YOUWEREKILLED "Vous avez été tué!" + IDS_QUICKSAVING "Sauvegarde rapide..." + IDS_SERVERFULL "Impossible de rejoindre. Serveur complet." + IDS_SERVER_WRONGVERSION "Impossible de rejoindre car le serveur utilise une autre version du jeu. Allez sur www.the-operative.com pour télécharger la dernière mise à jour." +END + +STRINGTABLE +BEGIN + IDS_JOINEDGAME "%1!s! a rejoint la partie" + IDS_LEFTGAME "%1!s! a quitté la partie" + IDS_SAVINGGAME "Sauvegarde de la partie…" + IDS_CANTQUICKSAVE "Vous ne pas enregistrer maintenant." + IDS_ACCESSGRANTED "Accès autorisé" + IDS_ACCESSDENIED "Accès refusé" + IDS_LOCKED "Verrouillé" + IDS_HELP_ENTER_SCMDPASSWORD + "Indique le mot de passe de connexion admin SCMD." + IDS_WON_MOTD_STATUS "Chargement du Message du jour" + IDS_WON_MOTD_SUCCESS "Chargement du Message du jour terminé" + IDS_WON_MOTD_FAIL "Erreur du chargement du Message du jour" + IDS_WON_VERSION_STATUS "Chargement des informations de version la plus récente" + IDS_WON_VERSION_SUCCESS "Informations de version la plus récente chargées" + IDS_WON_VERSION_FAIL "Erreur de chargement des informations de version la plus récente" + IDS_WON_CDKEY_STATUS "Vérification de la clé CD" + IDS_WON_CDKEY_SUCCESS "Clé CD authentifiée" +END + +STRINGTABLE +BEGIN + IDS_FIND_SERVERS "Refresh Server List" + IDS_HELP_FIND_SERVERS "Chercher des serveurs." + IDS_HELP_PROFILE_DELETE "Effacer le profil sélectionné." + IDS_HELP_PROFILE_RENAME "Renommer le profil sélectionné." + IDS_CONFIRM_DELETE "Voulez-vous vraiment effacer ce fichier?" + IDS_CURRENT_PROFILE "Profil actuel: %1!s!" + IDS_ENTER_PROFILE_NAME "Tapez un nom pour le profil:" + IDS_CONFIRM_NEWPROFILE "Cela va mettre fin à la partie actuelle. Continuer?" + IDS_PERFORMANCE_TEST_BRIEF + "Une courte séquence cinématique du jeu va être chargée pour tester les performances du jeu avec votre niveau de réglage actuel. A la fin de la séquence, des recommandations seront affichées.\n\nVous pouvez appuyer sur la touche Echap à tout moment pour annuler le test des performances." + IDS_PARAMETERS "Paramètres:" + IDS_SELECT_AMMO_TEXT "Sélectionner" + IDS_EXIT_WAITING "%1!d! joueurs vous attendent." + IDS_EXIT_WAITING_1 "1 joueur vous attend." + IDS_EXIT_WAITING_NAME "%1!s! vous attend." + IDS_EXIT_PLAYER_WAITING "Vous attendez %1!d! joueurs." + IDS_EXIT_PLAYER_WAITING_1 "Vous attendez 1 joueur." +END + +STRINGTABLE +BEGIN + IDS_EXIT_PLAYER_WAITING_NAME "Vous attendez %1!s!." + IDS_NET_GAME_END "Condition de fin de niveau" + IDS_NET_GAME_END_HELP "Détermine les conditions dans lesquelles se termine la carte." + IDS_CHOOSE_TEAM "Choose team" + IDS_FRAG_LIMIT_HELP "Sets the score needed to win the round." + IDS_HELP_CHOOSE_TEAM_1 "Choose the Blue Team" + IDS_TIME_LIMIT_HELP "Set the number of minutes the round will last." + IDS_MAX_PLAYERS "Joueurs max." + IDS_MAX_PLAYERS_HELP "Définir le nombre maximum de joueurs autorisés dans la session." + IDS_ROUNDS_HELP "Set the number of rounds to play on a map before switching." + IDS_RUN_SPEED_HELP "Indiquez le pourcentage de la vitesse de course normale utilisée dans la session." + IDS_HELP_CHOOSE_TEAM_2 "Choose the Red Team" + IDS_FRIENDLY_FIRE_HELP "Détermine si les membres d'une même équipe peuvent se blesser." + IDS_AUTO_SELECT "Auto-Select" + IDS_HELP_HOST_PLAYERDIFF + "Détermine l’augmentation du niveau de difficulté lorsqu’un nouveau joueur rejoint la partie." +END + +STRINGTABLE +BEGIN + IDS_WON_CDKEY_FAIL "Erreur de vérification de clé CD" + IDS_WON_PUB_STATUS "Publication du serveur" + IDS_WON_PUB_SUCCESS "Serveur publié" + IDS_WON_PUB_FAIL "Erreur de publication du serveur" + IDS_WON_REM_STATUS "Suppression du serveur" + IDS_WON_REM_SUCCESS "Serveur supprimé" + IDS_WON_REM_FAIL "Erreur de suppression du serveur" + IDS_WON_LIST_STATUS "Chargement de la liste des serveurs" + IDS_WON_LIST_SUCCESS "Chargement de la liste des serveurs terminé" + IDS_WON_LIST_FAIL "Erreur de chargement de la liste des serveurs" + IDS_WON_CLEAR_REQ_LIST "Nettoyage de la liste de requêtes" + IDS_WON_PROCESS_REQ "Traitement requête hors d'usage" + IDS_WON_PING_SUCCESS "Ping liste pairs terminé" + IDS_WON_DETAIL_SUCCESS "Requête de détails serveur accomplie" + IDS_WON_DETAIL_FAIL "Le serveur ne répond pas" + IDS_WON_VAL_SUCCESS "Client autorisé" +END + +STRINGTABLE +BEGIN + IDS_TEAM_1 "Blue team" + IDS_HELP_CAMPAIGN_NAME "Choose the map list to use for this session." + IDS_DETAILTEXTURES "Textures des détails" + IDS_HELP_DETAILTEXTURES "Activer/désactiver l'utilisation des textures des détails." + IDS_ENVIRONMENT_MAP "Carte d'environnement" + IDS_HELP_ENVIRONMENT_MAP + "Activer/désactiver l'utilisation des cartes d'environnement." + IDS_DYNAMICLIGHTS "Lumières dynamiques" + IDS_HELP_DYNAMICLIGHTS "Active/désactive l'utilisation des lumières dynamiques." + IDS_TRIPLE_BUFF "Triple tampon" + IDS_HELP_TRIPLE_BUFF "Activer/désactiver le triple tampon." + IDS_HELP_SETCONTROL "Appuyez sur Entrée ou cliquez pour définir un contrôle pour cette action." + IDS_HELP_CUSTOMCONTROLS "Affecter les actions aux touches du clavier et aux boutons de la souris et de la manette." + IDS_HELP_MOUSE "Choisir les options de configuration de la souris." + IDS_HELP_JOYSTICK "Choisir les options de configuration du joystick ou du gamepad." + IDS_HELP_ADVCONTROLS "Définir les options de contrôles avancés." + IDS_HELP_RESTORE "Redéfinir les contrôles par défaut." +END + +STRINGTABLE +BEGIN + IDS_HELP_SOUNDFX "Activer/désactiver les effets sonores." + IDS_HELP_SOUNDVOL "Régler le volume des effets sonores." + IDS_HELP_SOUNDQUAL "Définir la qualité des effets sonores. Cela peut influer sur les performances." + IDS_HELP_MUSIC "Activer/désactiver la musique." + IDS_HELP_MUSICVOL "Régler le volume de la musique." + IDS_HELP_CUSTOMLEVEL "Charger le niveau personnalisé choisi." + IDS_HELP_USEJOYSTICK "Activer/désactiver l'utilisation d'un joystick ou d'un gamepad." + IDS_HELP_INVERTAXIS "Activer/désactiver l'inversion sur cet axe." + IDS_HELP_DEADZONE "Définir la zone neutre pour cet axe." + IDS_HELP_ANALOG "Passer du mode analogique au mode numérique." + IDS_HELP_JOY_SENSE "Définir la sensibilité du joystick sur cet axe." + IDS_HELP_JOY_CENTER "Activer/désactiver l'utilisation de la correction de centrage." + IDS_HELP_INVERTY "Activer/désactiver l'inversion de la souris." + IDS_HELP_MOUSELOOK "Activer/désactiver l'utilisation de la souris pour piloter la vue." + IDS_HELP_MOUSE_SENSE "Définir la sensibilité de la souris." + IDS_HELP_MOUSE_INPUT "Détermine la sensibilité et la fluidité de la souris." +END + +STRINGTABLE +BEGIN + IDS_HELP_MOUSE_BUTTON "Définir l'action associée à ce bouton." + IDS_HELP_NORMALTURN "Choisir la vitesse normale de rotation au clavier." + IDS_HELP_FASTTURN "Activer le mode de rotation rapide pour les contrôles clavier." + IDS_HELP_LOOKUP "Définir la vitesse de la vue au clavier." + IDS_HOST_CAMPAIGN_DEFAULT "Default Map List" + IDS_HELP_CROSSHAIRMENU "Définir les options du viseur." + IDS_HELP_LEFT "Afficher la page précédente." + IDS_HELP_RIGHT "Afficher la page suivante." + IDS_HELP_QUICKSAVE "Enregistrer la partie dans l'emplacement de sauvegarde rapide." + IDS_HELP_SAVEGAME "Enregistrer la partie dans cet emplacement." + IDS_HELP_QUICKLOAD "Charger la partie dans l'emplacement de sauvegarde rapide." + IDS_HELP_LOADGAME "Charger la partie enregistrée dans cet emplacement." + IDS_HELP_RELOAD "Charger la partie enregistrée automatiquement. La partie est enregistrée automatiquement au début du niveau." + IDS_HELP_CAMPAIGN "Select map list." + IDS_HELP_RESUME "Revenir à la partie en cours." + IDS_HELP_CONTINUE_GAME "Continuer la partie la plus récemment enregistrée." +END + +STRINGTABLE +BEGIN + IDS_HELP_JOIN "Rejoindre une partie multijoueur" + IDS_HELP_HOST "Héberger une nouvelle partie multijoueur." + IDS_HOST_ADD_MISSION "> Ajouter" + IDS_HOST_REMOVE_MISSION "< Retirer" + IDS_HOST_ADD_ALL "> Tout ajouter" + IDS_HOST_REMOVE_ALL "< Tout retirer" + IDS_NOLEVELS "Sélectionnez les niveaux auxquels jouer dans cette partie." + IDS_HELP_OK "Accepter ces réglages." + IDS_SCENENUMBER "Scène %1!d!" + IDS_LOOP_MISSIONS "Boucle" + IDS_MOVE_CONTROLS "Mouvement" + IDS_INV_CONTROLS "Interaction" + IDS_VIEW_CONTROLS "Vue" + IDS_MISC_CONTROLS "Etat" + IDS_HELP_KEYBOARD "Choisir les options de configuration du clavier." +END + +STRINGTABLE +BEGIN + IDS_HELP_CH_ALPHA "Opacité du viseur." + IDS_HELP_CH_R "Eléments du viseur couleur rouge." + IDS_HELP_CH_G "Eléments du viseur couleur verte." + IDS_HELP_CH_B "Eléments du viseur couleur bleue." + IDS_HELP_CH_STYLE "Choisir le type de viseur à utiliser." + IDS_HELP_CH_DYNAMIC "Activer/désactiver la mise à l'échelle dynamique du viseur." + IDS_HELP_MAIN "Retour au menu principal." + IDS_HELP_NEXTMISSION "Lancer la mission suivante." + IDS_HELP_CONTINUE "Aller à l'écran suivant." + IDS_CAMPAIGN_EXISTS "A map list of that name already exists." + IDS_GUN_NOPICKUP "Vous ne pouvez pas emporter plus de munitions pour l'arme %1!s!!" + IDS_GUN_NOPICKUP_INF "Vous avez déjà: %1!s!!" + IDS_PLAYER_SETUP "Configuration du joueur" + IDS_JOIN "Rejoindre" + IDS_HOST "Hôte" + IDS_HELP_PLAYER "Définir vos options de joueur." +END + +STRINGTABLE +BEGIN + IDS_WEAPONS_STAY "Armes permanentes" + IDS_WEAPONS_STAY_HELP "Activer/désactiver la réapparition immédiate des armes." + IDS_HELP_AUTO_SELECT "Let the server choose a team for you." + IDS_HELP_TEAM_SELECT "Join this team." + IDS_CANCELREVIVE "Cancel Revive" + IDS_SERVER_MOD "Mod" + IDS_HIT_LOCATION "Dégâts en fonction de la localisation" + IDS_HIT_LOCATION_HELP "Plus ou moins de dégâts selon la partie du corps touchée." + IDS_SCORE_LIMIT "Score de victoire" + IDS_HELP_SCORE_LIMIT "Définir le score nécessaire pour terminer la carte." + IDS_ALLOWED_WEAPONS "Allowed weapons" + IDS_DISABLED_WEAPONS "Restricted weapons" + IDS_END_SCORE "Score atteint." + IDS_TEAM1_BOMB "The Blue team planted a bomb." + IDS_TEAM2_BOMB "The Red team planted a bomb." + IDS_HOST_ADD_WEAPON "> Add restriction" +END + +STRINGTABLE +BEGIN + IDS_APP_SHUTDOWN_1 "Erreur d'initialisation du pilote de rendu. Pour jouer à %1!s! vous devez installer DirectX 8.1." + IDS_PROFILE_ALREADY_EXISTS + "Un profil portant ce nom existe déjà. Choisissez un autre nom." + IDS_CONFIRM_DELETE_PROFILE + "Voulez-vous vraiment effacer ce profil et tous les réglages et les fichiers associés ?" + IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE + "Impossible de créer un périphérique TnL matériel. Soit DirectX 8.1 n'est pas installé, soit vous n'avez pas une carte graphique compatible TnL matériel. Ces deux éléments sont nécessaires pour jouer à %1!s! et si vous pouvez continuer à jouer en cliquant sur Ok, remarquez que vous risquez de rencontrer des problèmes de différents types." +END + +STRINGTABLE +BEGIN + IDS_FILTER_CURRENTMOD "Current Mod" + IDS_SERVER_WRONGMOD "Unable to join because the game server is running a different Mod than your current Mod." + IDS_HECHANGED "%1!s! changed teams to the %2!s!" + IDS_ICHANGED "You changed teams to the %1!s!" + IDS_IWILLCHANGE "You will change teams when you respawn." + IDS_FRAG_SCORE "Frag score" + IDS_FRAG_SCORE_HELP "Points received for kills." + IDS_TAG_SCORE "Tag score" + IDS_TAG_SCORE_HELP "Points received for non-lethal knockdowns." + IDS_REVIVE_SCORE "Revive score" + IDS_REVIVE_SCORE_HELP "Points recevived for reviving teammates." + IDS_DD_COMP_SCORE "Completion score" + IDS_DD_COMP_SCORE_HELP "Points recevived for completing the doomsday device." + IDS_DD_HVY_SCORE "Heavy piece score" + IDS_DD_HVY_SCORE_HELP "Points recevived for placing a heavy piece of the device." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_1 "Mascara pistolet assommant" + IDS_WEAPON_2 "Katana" + IDS_WEAPON_3 "Tulwar" + IDS_WEAPON_4 "Shuriken" + IDS_WEAPON_5 "Grenade" + IDS_WEAPON_6 "Explosif chat en colère@Chat en colère" + IDS_WEAPON_7 "Pistolet automatique McAllister .32@Pistolet .32" + IDS_WEAPON_8 "Lanceur utilitaire CT-180@Lanceur utilitaire" + IDS_WEAPON_9 "Fusil à pompe Bacalov Instigator@Fusil à pompe" + IDS_WEAPON_10 "Pistolet-mitrailleur Gordon 9mm@PM Gordon" + IDS_WEAPON_11 "Pistolet-mitrailleur M1921-A1@PM M1921-A1" + IDS_WEAPON_12 "Fusil d'assaut AK-47@AK-47" + IDS_WEAPON_13 "Carabine RFA Series-4@Fusil de précision" + IDS_WEAPON_14 "Arbalète Vindicator Sportsman@Arbalète" + IDS_WEAPON_15 "Lanceur de micromissiles" + IDS_WEAPON_16 "Rouge à lèvre appareil-photo@Appareil-photo" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_17 "Explosifs" + IDS_WEAPON_18 "Poudrier pirateur@Pirateur" + IDS_WEAPON_19 "Laque torche@Torche" + IDS_WEAPON_20 "Coupe-ongles passe-partout@Passe-partout" + IDS_WEAPON_21 "Micro espion@Micro" + IDS_WEAPON_22 "Parfum effaceur@Effaceur de corps" + IDS_WEAPON_23 "Pièce" + IDS_WEAPON_24 "Piège à ours" + IDS_WEAPON_25 "Lampe de poche à chaîne" + IDS_WEAPON_26 "Banane" + IDS_WEAPON_27 "[Etui]" + IDS_WEAPON_28 "Grenade assommante" + IDS_WEAPON_29 "Grenade somnifère" + IDS_WEAPON_30 "Grenade corrosive" + IDS_WEAPON_31 "Grenade hilarante" + IDS_WEAPON_32 "Pistolet-mitrailleur Gordon 9mm à silencieux@PM à silencieux" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_1 "On pourrait croire une trousse de maquillage, mais ce gadget permet d'assommer discrètement les ennemis." + IDS_WEAPON_DESC_2 "Une épée traditionnelle japonaise. Mortelle et discrète. Maniée avec expertise, elle permet de bloquer certains projectiles, comme les Shurikens et les balles de petit calibre." + IDS_WEAPON_DESC_3 "Une épée courbe indienne. Pratique pour éliminer discrètement vos ennemis. Elle permet également de bloquer les balles de petit calibre et certains autres projectiles." + IDS_WEAPON_DESC_4 "Les étoiles de lancer japonaises sont des armes d'assassin. Elles sont surtout efficaces lorsque l'adversaire est pris par surprise." + IDS_WEAPON_DESC_5 "Cette grenade peut être lancée au-dessus des murs et derrière les coins de mur. Efficace, mais peu subtile." + IDS_WEAPON_DESC_6 "Un puissant explosif qui ressemble à un chat de gouttière. Lorsque le déclencheur de proximité s'active, il poursuit ses victimes avant d'exploser." + IDS_WEAPON_DESC_7 "Un pistolet de calibre .32. Fiable et efficace. Un silencieux peut être ajouté." + IDS_WEAPON_DESC_8 "Cet outil multifonctions a été conçu pour accepter des boîtes cylindriques modulaires, contenant différents outils ou munitions." + IDS_WEAPON_DESC_9 "Ce n'est pas l'arme standard des espions, mais le fusil à pompe est très efficace dans certaines situations. Accepte différentes balles et cartouches." + IDS_WEAPON_DESC_10 "Un pistolet-mitrailleur très réputé pour sa fiabilité et son look ravageur. Il est déconseillé de le tenir par le chargeur latéral, mais tout le monde le fait." + IDS_WEAPON_DESC_11 "Le célèbre pistolet-mitrailleur M1921-A1 reste très populaire auprès des organisations criminelles qui apprécient son look gangster." + IDS_WEAPON_DESC_12 "Simple mais fiable, le fusil d'assaut du Bloc de l'Est a bonne réputation auprès des criminels et des terroristes." + IDS_WEAPON_DESC_13 "Cette puissante carabine est une arme de tireur d'élite efficace. Elle dispose d'une lunette de visée 4X intégrée et il est possible d'adapter un silencieux." + IDS_WEAPON_DESC_14 "Une arbalète de sport résistante, très efficace lorsque la discrétion importe plus que la puissance de feu. Une lunette peut être ajoutée pour améliorer la précision à longue portée." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_15 "Ce lanceur de micromissiles repliable trouve facilement sa place dans un sac à main. Il peut ainsi être facilement transporté sans être remarqué." + IDS_WEAPON_DESC_16 "Cet appareil-photo espion est camouflé dans un bâton de rouge à lèvres. La profondeur de champ est très limitée, vous devrez donc zoomer pour réussir votre prise de vue." + IDS_WEAPON_DESC_17 "Un explosif puissant parfaitement adapté à des actions de sabotage." + IDS_WEAPON_DESC_18 "Ce poudrier de femme tout à fait classique intègre un outil de piratage sophistiqué qui permet de lire les données codées pour contourner certaines serrures numériques." + IDS_WEAPON_DESC_19 "Cette torche miniature fonctionne à la laque, elle est donc facile à dissimuler, encore que moins efficace qu'une véritable torche." + IDS_WEAPON_DESC_20 "Un coupe-ongles ordinaire? Non! Un passe-partout très sophistiqué!" + IDS_WEAPON_DESC_21 "Branché sur un téléphone, ce micro électronique enregistre les sons. Vous devez l'activer par la suite pour écouter la conversation complète." + IDS_WEAPON_DESC_22 "Ce flacon de parfum contient une solution permettant de disposer rapidement et efficacement des corps. Assurez-vous de les fouiller avant." + IDS_WEAPON_DESC_23 "En lançant cette pièce, vous pouvez distraire l'attention des gardes." + IDS_WEAPON_DESC_24 "Vous pouvez poser des pièges à ours pour ralentir l'ennemi. Mais évitez-les!" + IDS_WEAPON_DESC_25 "Le globe au bout de la chaîne est en fait une petite ampoule qui émet un léger halo lumineux." + IDS_WEAPON_DESC_26 "Même une simple banane peut être dangereuse entre des mains expertes. Laissez-la où quelqu'un peut marcher dessus pour voir." + IDS_WEAPON_DESC_27 "Rangez votre arme pour ne pas effrayer les civils." + IDS_WEAPON_DESC_28 "Cette arme assomme temporairement toute personne dans le rayon d'effet." + IDS_WEAPON_DESC_29 "Les gaz libérés par cette grenade sont assez puissants pour endormir vos ennemis un petit moment." + IDS_WEAPON_DESC_30 "Libère un gaz corrosif qui brûle la peau et empêche de respirer. Très dangereux." +END + +STRINGTABLE +BEGIN + IDS_AMMO_1 "Tazer" + IDS_AMMO_2 "Katana" + IDS_AMMO_3 "Tulwar" + IDS_AMMO_4 "Shuriken" + IDS_AMMO_5 "Grenade" + IDS_AMMO_6 "Grenade assommante" + IDS_AMMO_7 "Grenade somnifère" + IDS_AMMO_8 "Grenade corrosive" + IDS_AMMO_9 ".32 blindée" + IDS_AMMO_10 ".32 poison" + IDS_AMMO_11 "Tranquillisant" + IDS_AMMO_12 "Désactiveur de caméra" +END + +STRINGTABLE +BEGIN + IDS_AMMO_13 "Bombe à colle" + IDS_AMMO_14 "Charge électrique" + IDS_AMMO_15 "SASS" + IDS_AMMO_16 "Grenade hilarante" + IDS_AMMO_17 "Cal. 12 grenaille" + IDS_AMMO_18 "Cal. 12 explosif" + IDS_AMMO_19 "9mm blindée" + IDS_AMMO_20 ".45 blindée" + IDS_AMMO_21 "7.62x39 blindée" + IDS_AMMO_22 "7.62x39 phos" + IDS_AMMO_23 ".308 blindée" + IDS_AMMO_24 "Carreau" + IDS_AMMO_25 "Carreau empoisonné" + IDS_AMMO_26 "Carreau enflammé" + IDS_AMMO_27 "Carreau explosif" + IDS_AMMO_28 "Micromissile" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_NAME "CHAPITRE 1. Cate Archer doit mourir!" + IDS_MISSION_01_NAME "CHAPITRE 2. Adieu, espion" + IDS_MISSION_02_NAME "CHAPITRE 3. Projet: Omega" + IDS_MISSION_03_NAME "CHAPITRE 4. Un espion recherché par le C.R.I.M.E." + IDS_MISSION_04_NAME "CHAPITRE 5. Vol de nuit" + IDS_MISSION_05_NAME "CHAPITRE 6. Journal d'un agent double" + IDS_MISSION_06_NAME "CHAPITRE 7. Double jeu" + IDS_MISSION_07_NAME "CHAPITRE 8. L'art du meurtre" + IDS_MISSION_08_NAME "CHAPITRE 9. La station glaciale du mal" + IDS_MISSION_09_NAME "CHAPITRE 10. La malédiction de Kali" + IDS_MISSION_10_NAME "CHAPITRE 11. Les intrus" + IDS_MISSION_11_NAME "CHAPITRE 12. Sous l'eau" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME "Le Directeur." + IDS_MISSION_00_LEVEL_00_NAME2 "Intuition féminine." + IDS_MISSION_00_LEVEL_00_NAME3 "Mauvaises nouvelles." + IDS_MISSION_00_LEVEL_00_NAME4 "L'espion est ici!" + IDS_MISSION_00_LEVEL_00_NAME5 "Pourchassée." + IDS_MISSION_00_LEVEL_00_NAME6 "La mort de Cate Archer." + IDS_MISSION_00_LEVEL_00_NAME7 "Le spectre de la guerre." + IDS_MISSION_00_LEVEL_00_NAME8 "Bienvenue en Sibérie." + IDS_MISSION_00_LEVEL_00_NAME9 "La centrale." + IDS_MISSION_00_LEVEL_00_NAME10 "La tour des communications." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME43 "Quartier général de l'UNION." + IDS_MISSION_00_LEVEL_00_NAME44 "Dock du sous-marin." + IDS_MISSION_00_LEVEL_00_NAME45 "Pont de commandement." + IDS_MISSION_00_LEVEL_00_NAME46 "Pont de l'équipage." + IDS_MISSION_00_LEVEL_00_NAME47 "Laboratoires." + IDS_MISSION_00_LEVEL_00_NAME48 "Armstrong en danger." + IDS_MISSION_00_LEVEL_00_NAME49 "Le démon des profondeurs." + IDS_MISSION_00_LEVEL_00_NAME50 "Inondation à venir." + IDS_MISSION_00_LEVEL_00_NAME51 "Grenade!" + IDS_MISSION_00_LEVEL_00_NAME52 + "Je pense que nous devrions considérer qu'elle a échoué." + IDS_MISSION_00_LEVEL_00_NAME53 "Les hommes-caisses." + IDS_MISSION_00_LEVEL_00_NAME54 "Douce revanche." + IDS_MISSION_00_LEVEL_00_NAME55 "La dette d'Isako." + IDS_MISSION_00_LEVEL_00_NAME56 "Le destin de Khios." + IDS_MISSION_00_LEVEL_00_NAME57 "Niveau COOP" + IDS_MISSION_00_LEVEL_00_NAME58 "Niveau COOP" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_BRIEF "L'UNION a envoyé Cate au Japon pour enquêter sur une possible convention des organisations internationales du crime qui doit se dérouler dans le village éloigné de Inotakimura. Sa mission est de photographier les participants sans qu'ils s'en aperçoivent.\n\nSa première tâche consiste à localiser l'agent Isamu Hatori, qui lui donnera d'autres informations sur sa mission. Il attend quelque part dans le village." + IDS_MISSION_01_BRIEF "La rencontre doit avoir lieu dans la résidence d'un personnage énigmatique connu seulement sous le nom de Directeur. Cate doit s'infiltrer dans la résidence, localiser la maison principale et trouver la fenêtre indiquée par Hatori-san. De là, elle pourra prendre les photographies nécessaires sans s'exposer à des risques inutiles.\n\nLorsqu'elle aura les photos, elle doit retourner au pont où l'attend Yamata-san. Une équipe d'interception de l'UNION l'attendra pour l'évacuer sur Tokyo une fois la mission terminée." + IDS_MISSION_02_BRIEF "Des photographies d'un avion espion ont dévoilé une base militaire en piteux état et en sous-effectifs, mais M. Barnes pense que cet état de désolation n'est qu'une ruse. Les Américains surestiment souvent beaucoup la capacité militaire soviétique, mais l'UNION ne prendra aucun risque.\n\nLa première phase de la mission de Cate consiste à préparer sa fuite. Un peu de sabotage, et il y a peu de chances que des renforts importants puissent surgir.\n\nSanta a engagé un pilote familiarisé avec la région pour faire entrer et sortir Cate. Elle doit le protéger à tout prix." + IDS_MISSION_03_BRIEF "Après avoir analysé les données de renseignement américaines, l'UNION est convaincue que le projet Omega est dirigé depuis le bâtiment des archives au centre de la base. La sécurité sera renforcée, et Cate ne pourra pas l'atteindre facilement, sans parler d'y entrer et d'y trouver les données qu'elle recherche.\n\nHeureusement, elle pourra profiter de la couverture de la nuit, ce qui devrait lui conférer un léger avantage." +END + +STRINGTABLE +BEGIN + IDS_MISSION_04_BRIEF "Maintenant que Cate a trouvé des informations sur le Projet: Omega, elle fait face à un difficile défi: sortir de l'Union Soviétique. Pour compliquer les choses, les Russes et les hommes du C.R.I.M.E. sont à ses trousses.\n\nElle va devoir croiser les doigts et prier pour que ses minutieux préparatifs aient l'effet escompté. La nuit va être chaude." + IDS_MISSION_05_BRIEF "Sans autre piste intéressante à suivre, Cate se rend à Akron, dans l'Ohio, pour y chercher des indices qui la guideront jusqu'à l'ancienne résidence du terrible Melvin Blitzny. Blitzny, vendeur d'aspirateurs de son état, a été entraîné à prendre l'identité de l'agent de l'UNION Tom Goodman dans le cadre du dernier complot machiavélique du C.R.I.M.E., avant de mourir des mains mêmes de son mentor.\n\nQuelles que soient les craintes de Cate alors qu'elle entre dans la résidence de ce traître, elle doit rester concentrée pour parvenir à ses fins." + IDS_MISSION_06_BRIEF "Magnus Armstrong a contacté son vieil ami Kamal, un ancien agent du C.R.I.M.E. en Inde qui promet son assistance. Kamal ne connaît pas le projet Omega, mais il peut trouver des informations importantes dans le coffre principal du QG en Inde.\n\nBruno estime qu'une infiltration en bonne et due forme du complexe serait trop dangereuse, en raison des mesures de sécurité que Cate pourrait rencontrer. En conséquence, Kamal va l'aider à accomplir une de ses missions les plus étranges à ce jour: obtenir un travail au sein du C.R.I.M.E. Une fois engagée, elle aura la possibilité d'aller et venir librement dans le complexe. " + IDS_MISSION_07_BRIEF "Ayant prouvé sa valeur au C.R.I.M.E., Cate a obtenu un emploi dans l'organisation même qu'elle a juré de détruire. Avec un passe de sécurité plus élevé, elle pourrait approcher de ce qu'elle recherche: le coffre. Elle espère y trouver la pièce manquante du puzzle.\n\nMalheureusement, l'accès au coffre est restreint aux personnels les plus importants du C.R.I.M.E. et le plus dur est encore à venir. Si seulement elle pouvait trouver de meilleurs renseignements sur les contre-mesures de sécurité qu'elle va devoir affronter." + IDS_MISSION_08_BRIEF "Les différents indices trouvés ont mené Cate et Armstrong jusqu'à des installations secrètes en Antarctique où le C.R.I.M.E. progresse sur le Projet: Omega. Maintenant qu'ils ont découvert sa vraie nature, ils peuvent concevoir un plan pour y mettre un terme.\n\nDu moins s'ils ne s'étranglent pas l'un et l'autre avant." + IDS_MISSION_09_BRIEF "En raison de votre succès de Cate en Inde, le Directeur a ordonné la destruction du QG indien du C.R.I.M.E. en punition. Cette attaque permettra de tester les super soldats avant qu'ils soient envoyés à Khios pour leur véritable mission.\n\nBien que Cate ait découvert des informations vitales sur le Projet: Omega, elle a décidé de se rendre directement en Inde pour tenter d'éviter la tragédie qui va se dérouler lors de l'assaut." + IDS_MISSION_10_BRIEF "Avec les spécifications techniques qu'elle a découvertes dans les installations en Antarctique, Cate est certaine que le docteur Schenker peut trouver un moyen de combattre les super soldats.\n\nDans le même temps, elle a appris que Armstrong est vivant et prisonnier du C.R.I.M.E. Elle doit découvrir où il est détenu et trouver un plan pour le libérer.\n" + IDS_MISSION_11_BRIEF "Cate s'est faufilée dans la base sous-marine top secrète du C.R.I.M.E., afin de sauver Magnus Armstrong d'une mort certaine. Sa première tâche consiste à le retrouver. Des informations à ce sujet sont probablement stockées dans le super ordinateur.\n\nUne fois Armstrong libéré, ils devront improviser et s'échapper, car le sous-marin de poche de Cate ne peut accueillir qu'un passager." + IDS_MISSION_12_BRIEF "Alors que la base sous-marine s'effondre autour d'eux et qu'un super soldat a été libéré, Cate et Armstrong doivent travailler ensemble pour fuir.\n\nS'ils parviennent à sortir vivants de la base, ils devront affronter des personnels du C.R.I.M.E. bien équipés et déterminés à survivre également." + IDS_MISSION_13_BRIEF "Après être tombée dans les mains du C.R.I.M.E., Cate se retrouve prise dans un piège inutilement élaboré mais pas moins dangereux. Elle devra faire appel à ses réflexes et à son intelligence pour en sortir indemne.\n\nPendant ce temps, la situation dans la Mer de Marmara empire d'heure en heure. Si elle veut avoir une chance de déjouer les terribles machinations du C.R.I.M.E., elle doit faire vite.\n" + IDS_MISSION_14_BRIEF "Le monde est sur le point de basculer dans une catastrophe nucléaire. Les USA et l'Union Soviétique n'ont pas été aussi proches de se déclarer la guerre depuis l'affaire des missiles cubains. Une fois encore, l'avenir de l'humanité dépend d'un minuscule état insulaire.\n\nLes super soldats du C.R.I.M.E. sont en route pour Khios, à bord d'un sous-marin d'assaut indétectable conçu pour contourner le blocus de l'OTAN. Les Américains ne peuvent pas envoyer de troupes pour défendre l'île sans provoquer les Soviétiques et les Soviétiques clament qu'ils ne peuvent pas stopper l'invasion. Les deux camps sont bloqués dans une situation d'attente mortelle, mais c'est le C.R.I.M.E. qui a le doigt sur le bouton." + IDS_MISSION_15_BRIEF "Cate s'est infiltrée dans la base sous-marine top secrète du C.R.I.M.E., pour des raisons que nous ne souhaitons pas dévoiler dans cette démo, afin de ne pas gâcher l'effet de surprise si vous décidez de jouer à la version commerciale. Disons qu'elle a une mission à accomplir, et que la partie que vous allez découvrir n'en est que l'introduction." + IDS_MISSION_TEMP_BRIEF "Une mission de routine a mal tourné et Cate a de sérieux ennuis. Elle est probablement déjà à mi-chemin du point de rendez-vous et des ninjas sont partout aux alentours.\n\nL'équipe d'interception de l'UNION qui devait l'évacuer vers Tokyo se précipite à son aide. L'objectif est simple: sortir Cate de là en un seul morceau.\n" + IDS_MISSION_TEMP_BRIEF2 "Cate est parvenue à s'échapper de la base militaire soviétique avec des informations sur le Projet: Omega. Elle a obtenu ces informations sur un super ordinateur qui semble avoir été fourni par le C.R.I.M.E.\n\nUne équipe d'interception de l'UNION a été envoyée pour nettoyer le secteur. Le principal objectif de cette équipe consiste à détruire l'ordinateur.\n\nL'équipe a été déposée dans l'enceinte de la base et doit se regrouper dans une petite cabane de chasse à proximité du complexe lui-même.\n" + IDS_MISSION_TEMP_BRIEF3 "Cate est actuellement en route pour Calcutta, où elle va tenter de s'infiltrer dans le QG indien du C.R.I.M.E. pour en apprendre plus sur le Projet : Omega.\n\nUne équipe d'interception de l'UNION est déjà sur place et travaille à obtenir des renseignements pour faciliter sa mission. Ils doivent localiser et photographier un agent connu du C.R.I.M.E., Balaji Malpani.\n" + IDS_MISSION_TEMP_BRIEF4 "Cate a envoyé des nouvelles perturbantes. Magnus Armstrong est piégé en Antarctique et des renforts du C.R.I.M.E. approchent tandis que des super soldats indestructibles sont en liberté.\n\nUne unité d'interception de l'UNION est envoyée pour sauver Armstrong et détruire le site pour empêcher toute continuation du Projet: Omega.\n" +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_1 "Rend les ennemis temporairement inconscients." + IDS_AMMO_DESC_2 "Katana" + IDS_AMMO_DESC_3 "Tulwar" + IDS_AMMO_DESC_4 "Un projectile à lancer dont les bords sont très aiguisés. Peut également servir pour détourner l'attention." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_5 "Grenade à fragmentation qui explose 3 secondes après avoir été lancée." + IDS_AMMO_DESC_6 "Libère un nuage de gaz qui étourdit temporairement les cibles." + IDS_AMMO_DESC_7 "Effet de zone qui rend les cibles temporairement inconscientes." + IDS_AMMO_DESC_8 "Produit un nuage toxique de gaz corrosif." + IDS_AMMO_DESC_9 "Cartouche de .32 blindée standard." + IDS_AMMO_DESC_10 "Cartouches de calibre .32 dont la pointe contient une capsule de poison. Efficaces contre les cibles vivantes." + IDS_AMMO_DESC_11 "Rend les ennemis temporairement inconscients." + IDS_AMMO_DESC_12 "Rend inefficace les caméras de sécurité en passant une séquence en boucle." + IDS_AMMO_DESC_13 "Crée une flaque d'un puissant liquide adhésif. Immobilise les ennemis pendant quelques instants." + IDS_AMMO_DESC_14 "Emet une puissante charge électrique." + IDS_AMMO_DESC_15 "Le Sérum Anti-Super Soldat est un catalyseur chimique qui fait bouillir le sang des super-soldats. Inoffensif pour les êtres humains normaux." + IDS_AMMO_DESC_16 "Produit un nuage de gaz hilarant." + IDS_AMMO_DESC_17 "Une cartouche de calibre 12 remplie de grenaille, très efficace à courte portée." + IDS_AMMO_DESC_18 "Des billes qui explosent à l'impact, infligeant des dégâts importants à la cible." + IDS_AMMO_DESC_19 "Cartouche de 9mm blindée standard." + IDS_AMMO_DESC_20 "Cartouche de .45 blindée standard." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_21 "Cartouche de 7,62x39 blindée standard." + IDS_AMMO_DESC_22 "Cartouche de 7,62x39 au phosphore, qui continue de brûler à l'impact." + IDS_AMMO_DESC_23 "Cartouche de .308 blindée standard." + IDS_AMMO_DESC_24 "Munitions classiques de l'arbalète. Elles peuvent parfois être récupérées sur la cible." + IDS_AMMO_DESC_25 "Munitions empoisonnées de l'arbalète. Elles peuvent parfois être récupérées sur la cible." + IDS_AMMO_DESC_26 "Munitions incendiaires de l'arbalète. Elles continuent de brûler après l'impact." + IDS_AMMO_DESC_27 "Munitions explosives de l'arbalète. Explosent à l'impact." + IDS_AMMO_DESC_28 "Un petit missile auto-propulsé qui explose à l'impact." + IDS_AMMO_DESC_29 "Mini-appareil photo espion avec zoom." + IDS_AMMO_DESC_30 "Petit explosif avec système de retardement intégré." + IDS_AMMO_DESC_31 "Analyse et décode les clés électroniques." + IDS_AMMO_DESC_32 "Une torche portative." + IDS_AMMO_DESC_33 "Passe-partout" + IDS_AMMO_DESC_34 "Un micro espion." + IDS_AMMO_DESC_35 "Désintègre immédiatement les corps, ne laissant aucune trace." + IDS_AMMO_DESC_36 "Neutralise chimiquement l'encre invisible, la rendent lisible à l'œil nu." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5000 "" + IDS_MISSION_OBJ_5001 "Rendez-vous avec Hatori-san." + IDS_MISSION_OBJ_5002 "Découvrez le nouvel endroit de rendez-vous." + IDS_MISSION_OBJ_5003 "Faites votre rapport à Hatori-san." + IDS_MISSION_OBJ_5004 "Infiltrez-vous dans la propriété" + IDS_MISSION_OBJ_5005 "Photographiez la rencontre." + IDS_MISSION_OBJ_5006 "Retournez voir Yamata-san sur le pont." + IDS_MISSION_OBJ_5007 "Retrouvez les trois dernières pages de cette lettre." +END + +STRINGTABLE +BEGIN + IDS_GEAR_NAME_4200 "Gilet pare-balles lourd" + IDS_GEAR_NAME_4201 "Gilet pare-balles léger" + IDS_GEAR_NAME_4202 "Trousse de premiers soins" + IDS_GEAR_NAME_4203 "Bandages" + IDS_GEAR_NAME_4204 "Protection" + IDS_GEAR_NAME_4205 "Small Bandage" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6000 "Repaire souterrain secret du C.R.I.M.E.\nEmplacement INCONNU" + IDS_MISSION_TEXT_6001 "19:01\nInotakimura, Japon" + IDS_MISSION_TEXT_6002 "QG de l'UNION\nEmplacement SECRET" + IDS_MISSION_TEXT_6003 "16:17\nSibérie, U.R.S.S" + IDS_MISSION_TEXT_6004 "15:36\nAkron, Ohio" + IDS_MISSION_TEXT_6005 "13:25\nCalcutta, Inde" + IDS_MISSION_TEXT_6006 "11:30\nAntarctique" + IDS_MISSION_TEXT_6007 "19:14\nCalcutta, Inde" + IDS_MISSION_TEXT_6008 "14:28\nQG UNION" + IDS_MISSION_TEXT_6009 "Base sous-marine secrète du C.R.I.M.E.\nMer Egée" + IDS_MISSION_TEXT_6010 "Repaire souterrain secret du C.R.I.M.E." + IDS_MISSION_TEXT_6011 "16:31\nRoyaume de Khios, Mer de Marmara" + IDS_MISSION_TEXT_6012 "Sous-marin super secret du C.R.I.M.E." + IDS_MISSION_TEXT_6013 "Haut Commandement de la Flotte de l'OTAN" + IDS_MISSION_TEXT_6014 "21:42\nSibérie, U.R.S.S." + IDS_MISSION_TEXT_6015 "14:24\nQG indien du C.R.I.M.E." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE "Pertes civiles inacceptables!" + IDS_MISSIONFAILURE2 "Vous avez tué un civil!" + IDS_MISSIONFAILURE3 "Vous avez été arrêtée!" + IDS_MISSIONFAILURE4 "Vous avez été aspirée par la tornade!" + IDS_MISSIONFAILURE5 "Vous avez coupé le mauvais fil!" + IDS_MISSIONFAILURE6 "Vous êtes morte!" + IDS_MISSIONFAILURE7 "Le QG de l'UNION a été détruit!" + IDS_MISSIONFAILURE8 "Vous avez tué votre pilote!" + IDS_MISSIONFAILURE9 "Vous êtes morte!" + IDS_MISSIONFAILURE10 "Vous êtes morte!" + IDS_MISSIONFAILURE11 "Vous avez tué Hatori-san!" + IDS_MISSIONFAILURE12 "Vous avez laissé Hatori-san mourir!" +END + +STRINGTABLE +BEGIN + IDS_AMMO_29 "Caméra" + IDS_AMMO_30 "Explosifs" + IDS_AMMO_31 "Pirateur" + IDS_AMMO_32 "Torche" + IDS_AMMO_33 "Passe-partout" + IDS_AMMO_34 "Micro" + IDS_AMMO_35 "Efface-corps" + IDS_AMMO_36 "" + IDS_AMMO_37 "Pièce" + IDS_AMMO_38 "Chat en colère" + IDS_AMMO_39 "Piège à ours" + IDS_AMMO_40 "Banane" + IDS_AMMO_41 "Carreau pisteur" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7000 "" + IDS_TRANSMISSIONS_7001 "Parlez à l'oiseau mynah mécanique pour des conseils utiles." + IDS_TRANSMISSIONS_7002 "Le fusible est mort. Vous devez le remplacer." + IDS_TRANSMISSIONS_7003 "La porte est fermée." + IDS_TRANSMISSIONS_7004 "Les fils ont fondu. Ils peuvent être remplacés si vous trouvez un fil de cuivre." + IDS_TRANSMISSIONS_7005 "La poignée a disparu. Vous n’avez pas assez de prise à mains nues." + IDS_TRANSMISSIONS_7006 "Le bouton de porte a disparu." + IDS_TRANSMISSIONS_7007 "Il n'y a plus d'électricité." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_37 "Pièce." + IDS_AMMO_DESC_38 "Chaton en colère." + IDS_AMMO_DESC_39 "Piège à ours." + IDS_AMMO_DESC_40 "Banane" + IDS_AMMO_DESC_41 "Carreaux équipés d'un transmetteur radio qui marquent l'emplacement d'un ennemi sur le radar." +END + +STRINGTABLE +BEGIN + IDS_TEXT_DIALOGUE_9000 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10001 "Hum, excusez-moi Mademoiselle. Le Directeur a demandé à vous voir." + IDS_DIALOGUE_10002 "Bon, bien, je lui dirai simplement que vous n'allez pas tarder, alors" + IDS_DIALOGUE_10003 "Mère, vous ne pouvez pas m'appeler sans cesse au travail. J'ai une opération à mener." + IDS_DIALOGUE_10004 "Et je suis sensée faire quoi? Tu n'es jamais à la maison. Comment dois-je communiquer avec toi? Par pigeon voyageur?" + IDS_DIALOGUE_10005 "Ecoutez, il faut que je raccroche." + IDS_DIALOGUE_10006 "Je ne t'ai même pas dit pourquoi j'appelais." + IDS_DIALOGUE_10007 "Oui, et bien la prochaine fois, vous irez directement au but, au lieu de m'accabler de reproches pendant un quart d'heure." + IDS_DIALOGUE_10008 "Ne me raccroche pas au nez, tu m'entends?" + IDS_DIALOGUE_10009 "J'ai besoin d'un verre." + IDS_DIALOGUE_10010 "Vous vouliez me voir?" + IDS_DIALOGUE_10011 "M. Volkov a besoin de vos services. Il pense que quelqu'un va s'inviter à notre petite fête, ce soir. Il souhaite que, grâce à vous, notre convive inattendu se sente chez lui. Définitivement." + IDS_DIALOGUE_10012 "Quand ma dette sera-t-elle payée, sensei?" + IDS_DIALOGUE_10013 "Quand je vous le dirai." + IDS_DIALOGUE_10014 "Je vous promets que nous en reparlerons, mais d'abord... Cate Archer doit mourir!" + IDS_DIALOGUE_10015 "Oui?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10065 "Sensei. L'espionne est là." + IDS_DIALOGUE_10066 "Tuez-la." + IDS_DIALOGUE_10067 "Oh oh." + IDS_DIALOGUE_10068 "Alors, c'était un piège." + IDS_DIALOGUE_10069 "Mais pourquoi?" + IDS_DIALOGUE_10070 "Ne soyez pas naïve. Vous avez beaucoup d'ennemis." + IDS_DIALOGUE_10071 "Et lequel vous envoie?" + IDS_DIALOGUE_10072 "Un admirateur secret, alors? Comme c'est flatteur!" + IDS_DIALOGUE_10073 "Vous m'impressionnez. Je ne pensais pas que vous iriez si loin." + IDS_DIALOGUE_10074 "Désolée." + IDS_DIALOGUE_10075 "Vous êtes sûre qu'elle est morte?" + IDS_DIALOGUE_10076 "Bien sûr. Isako ne commet jamais d'erreurs. N'est-ce pas Isako?" + IDS_DIALOGUE_10077 "Et bien, c'est rassurant. Mais je serais rassuré davantage si vous m'aviez apporté une preuve." + IDS_DIALOGUE_10078 "Allons, Dmitrij. Vous vous attendiez à quoi? Sa tête sur un plateau?" + IDS_DIALOGUE_10079 "M. le Directeur... Votre... mère au téléphone" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10080 "Oh, zut." + IDS_DIALOGUE_10081 "Sensei. Vous m'avez dit que nous parlerions de mon avenir, une fois la fille morte." + IDS_DIALOGUE_10082 "Votre avenir? Votre avenir est avec nous, ma chère." + IDS_DIALOGUE_10083 "Vous pouvez me joindre à ce numéro, mon vieux, mais je ne vous encourage pas à le faire." + IDS_DIALOGUE_10084 "Monsieur, s'il vous plaît, réfléchissez." + IDS_DIALOGUE_10085 "Je n'ai pas eu de vacances correctes depuis 15 ans. Personne ne m'empêchera de partir cette fois." + IDS_DIALOGUE_10086 "Je parlais de l'idée de me confier vos responsabilités." + IDS_DIALOGUE_10087 "Oh, cessez de chouiner. Qui d'autre est disponible?" + IDS_DIALOGUE_10088 "Et bien, je suis parti. A dans quelques semaines." + IDS_DIALOGUE_10089 "Oui, Monsieur." + IDS_DIALOGUE_10090 "Directeur Temporaire Lawrie?" + IDS_DIALOGUE_10091 "Oui." + IDS_DIALOGUE_10092 "Le Dr Schenker veut vous voir." + IDS_DIALOGUE_10093 "Excellent. Faites-le entrer." + IDS_DIALOGUE_10094 "Docteur. Comment va-t-elle?" + IDS_DIALOGUE_10095 "Elle a beaucoup de chance d'être encore en vie. L'équipe l'a trouvée juste à temps Elle a vous a demandé." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10096 "Bruno!" + IDS_DIALOGUE_10097 "Désolé de n'avoir pas pu venir à Tokyo. L'affaire de Prague a tourné à la confusion. Bon sang, mais comment vas-tu? " + IDS_DIALOGUE_10098 "Prête à reprendre le travail." + IDS_DIALOGUE_10099 "Ne nous pressons pas." + IDS_DIALOGUE_10100 "Nous presser? Mais ça fait presque deux semaines." + IDS_DIALOGUE_10101 "Je ne recommanderais pas d'activité trop fatigante." + IDS_DIALOGUE_10102 "Ecoute le Docteur. J'ai besoin de toi en top forme." + IDS_DIALOGUE_10103 "Alors donne-moi quelque chose d'utile à faire. Je dépéris." + IDS_DIALOGUE_10104 "Directeur Temporaire Lawrie, veuillez vous rendre à la Salle de Guerre immédiatement." + IDS_DIALOGUE_10105 "Directeur Temporaire Lawrie?" + IDS_DIALOGUE_10106 "Ne m'en parle pas. Faut que j'y aille." + IDS_DIALOGUE_10107 "Messieurs, désolé de vous avoir fait attendre." + IDS_DIALOGUE_10108 "En temps normal, nous n'intervenons pas brutalement, comme ça, mais la situation est urgente. Je suis Isaac Barnes. Voici le Général Morgan Hawkins." + IDS_DIALOGUE_10109 "Bruno Lawrie. Directeur Temporaire de l'UNION." + IDS_DIALOGUE_10110 "C'est vous qui gardez le bébé, hein?" + IDS_DIALOGUE_10111 "Tout à fait." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10112 "Je vais bien!" + IDS_DIALOGUE_10113 "Il faut vous reposer." + IDS_DIALOGUE_10114 "Je croyais t'avoir dit de rester tranquille!" + IDS_DIALOGUE_10115 "Je n'ai pas dit oui." + IDS_DIALOGUE_10116 "Messieurs, voici l'Agent Archer, l'un de nos meilleurs agents secrets." + IDS_DIALOGUE_10117 "Ca, je parie que oui." + IDS_DIALOGUE_10118 "Vous avez déjà avalé un cigare allumé?" + IDS_DIALOGUE_10119 "Merci, Dr Schenker." + IDS_DIALOGUE_10120 "M. Lawrie, Melle Archer, laissez-moi aller droit au but." + IDS_DIALOGUE_10121 "Absolument." + IDS_DIALOGUE_10122 "L'Ile de Khios... Ca vous dit quelque chose?" + IDS_DIALOGUE_10123 "Dans la mer de Marmara. Tout a fait. Elle est très convoitée par toutes les grandes puissances." + IDS_DIALOGUE_10124 "Vous savez pourquoi?" + IDS_DIALOGUE_10125 "Quelque chose à voir avec ses ressources naturelles, non?" + IDS_DIALOGUE_10126 "Mon Dieu!" + IDS_DIALOGUE_10127 "Précisément. Nous avons des raisons de penser que les soviétiques s'apprêtent à envahir Khios dans les deux semaines qui viennent." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10128 "A la seconde où les rouges débarqueront sur cette île, Oncle Sam aura un petit cadeau surprise en forme de Polaris prêt à être empaqueté, timbré et envoyé... en plein sur Moscou." + IDS_DIALOGUE_10129 "Comme le suggère le Général, les conséquences d'une invasion pourraient être catastrophiques. Un conflit nucléaire à grande échelle est tout à fait possible." + IDS_DIALOGUE_10130 "Mais Khios est virtuellement imprenable par des forces conventionnelles. Comment comptent-il opérer?" + IDS_DIALOGUE_10131 "Nous espérons que vous nous le direz. Tout ce que nous savons, c'est qu'il y a mise en œuvre d'un programme d'armement secret connu sous le nom de Projet Omega." + IDS_DIALOGUE_10132 "On aurait dû leur caler l'estomac avec un bon sandwich nucléaire, en 62. Ces sales rouges." + IDS_DIALOGUE_10133 "Vous nous aiderez?" + IDS_DIALOGUE_10134 "Bien entendu." + IDS_DIALOGUE_10135 "Si l'on en croit nos agents, les soviétiques coordonnent ce projet depuis une base isolée de Sibérie. Il nous faut savoir à quoi nous avons à faire et nous pensons que la réponse se trouve quelque part là-bas, dans ces installations." + IDS_DIALOGUE_10136 "Oh, oh, j'ai oublié clefs." + IDS_DIALOGUE_10137 "Peut-être vous pouvoir ouvrir porte." + IDS_DIALOGUE_10138 "Vite, avant qu'on gèle." + IDS_DIALOGUE_10139 "Générateur est devant." + IDS_DIALOGUE_10140 "Actionner générateur, s'il vous plaît." + IDS_DIALOGUE_10141 "Je reste ici. Vous actionner générateur." + IDS_DIALOGUE_10142 "Ouvrez là-dedans." + IDS_DIALOGUE_10143 "Ouvrez cette porte!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10144 "Je vous préviens!" + IDS_DIALOGUE_10145 "J'ai dit: ouvrez!" + IDS_DIALOGUE_10146 "Eux mauvais." + IDS_DIALOGUE_10147 "Si eux nous trouvent, gros ennuis." + IDS_DIALOGUE_10148 "Assommez-les!" + IDS_DIALOGUE_10149 "Vite, avant qu'ils cassent porte." + IDS_DIALOGUE_10150 "Ton patron à la radio." + IDS_DIALOGUE_10151 "Foxhunt, ici Foxhunt. Nous avons laissé des équipements pour vous dans l'abri. La combinaison du verrou est 36 - 7 - 42." + IDS_DIALOGUE_10152 "Prenez soin de vous." + IDS_DIALOGUE_10154 "Motoneige est à sec. Chercher essence." + IDS_DIALOGUE_10155 "Peut-être chercher camion." + IDS_DIALOGUE_10156 "Pas perdre de temps. Faire froid." + IDS_DIALOGUE_10158 "Attention au pont. Beaucoup de soldats. Trouvez un meilleur chemin." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10160 "J'attends ici. Bonne chance!" + IDS_DIALOGUE_10161 "Le C.R.I.M.E.?" + IDS_DIALOGUE_10167 "Je suis prêt à rentrer." + IDS_DIALOGUE_10168 "Moi aussi, je déteste cet endroit." + IDS_DIALOGUE_10169 "Je pensais que la cuisine de ma femme était nulle. C'est un chef comparé à celui qui tient la cantine ici." + IDS_DIALOGUE_10170 "Dommage, les gars. On ne part pas d'ici un bout de temps." + IDS_DIALOGUE_10171 "J'aurais dû accepter ce poste au Caire. Au moins, j'aurais eu chaud." + IDS_DIALOGUE_10172 "T'es pas au courant? On a fait sauter le quartier général du Caire." + IDS_DIALOGUE_10173 "Qui?" + IDS_DIALOGUE_10174 "Difficile à dire. Tout le monde revendique l'attentat. Probablement les Fanas à Plumes, ou bien l'Antigouvernement de la Rage, ou Joli Poison." + IDS_DIALOGUE_10175 "Je suppose que j'ai bien choisi, après tout. Au moins, on ne manque pas de vodka." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10177 "La vodka me réchauffe." + IDS_DIALOGUE_10178 "Faites moi un café. Ca ira." + IDS_DIALOGUE_10179 "Je bois du café. Vous vous occupez de l'avion." + IDS_DIALOGUE_10180 "Allez devant. J'arrive." + IDS_DIALOGUE_10181 "Excellent café." + IDS_DIALOGUE_10182 "Désolé." + IDS_DIALOGUE_10183 "Ca fait 14, M. Volkov. Vous vous sentez mieux?" + IDS_DIALOGUE_10184 "Un peu. Encore un." + IDS_DIALOGUE_10185 "Amenez Laramie!" + IDS_DIALOGUE_10186 "Je vous en prie, pas ça! Je vous en supplie!" + IDS_DIALOGUE_10187 "Mettez-le dans la machine." + IDS_DIALOGUE_10188 "Je suis encore contrarié." + IDS_DIALOGUE_10189 "Amenez Mackenzie!" + IDS_DIALOGUE_10190 "Mère, nous en avons parlé des milliers de fois. Je ne rentre pas à la maison pour Noël." + IDS_DIALOGUE_10191 "Tu veux me tuer comme tu as tué ton père." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10192 "Maman, Papa est mort de la dysenterie au Kenya." + IDS_DIALOGUE_10193 "Il est mort, le cœur brisé parce que tu n'es jamais arrivé à rien. Quand je pense aux sacrifices que..." + IDS_DIALOGUE_10194 "Au revoir, Mère." + IDS_DIALOGUE_10195 "Ne me raccroche pas..." + IDS_DIALOGUE_10196 "Marvin? Soyez chic et allez me chercher un petit remontant, voulez-vous?" + IDS_DIALOGUE_10197 "M. Volkov a été très déçu d'apprendre que Cate Archer est toujours vivante." + IDS_DIALOGUE_10198 "Et bien qu'il la tue." + IDS_DIALOGUE_10199 "Ne soyez pas impertinente." + IDS_DIALOGUE_10200 "Elle n'est pas mon ennemie." + IDS_DIALOGUE_10201 "Elle est mon ennemie. Et vous êtes à mon service. Ou avez-vous oublié qui vous a sauvé la vie autrefois?" + IDS_DIALOGUE_10202 "Ne me dites pas qu'elle vous fait peur." + IDS_DIALOGUE_10203 "Je ne crains personne." + IDS_DIALOGUE_10204 "Alors tuez-la. Et ramenez une preuve, cette fois." + IDS_DIALOGUE_10205 "Sa tête sur un plateau suffirait." + IDS_DIALOGUE_10206 "Nous espérions quelque chose d'un peu plus concluant. Que savez vous de cette organisation: le C.R.I.M.E.?" + IDS_DIALOGUE_10207 "On a eu à faire à eux déjà. Ils étaient à peine compétents à l'époque. Il paraît qu'ils ont restructuré l'organisation depuis, mais personne ne sait à quoi s'en tenir exactement." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10208 "Ca veut dire que vous ne leur avez pas botté le train suffisamment fort." + IDS_DIALOGUE_10209 "Faute de mieux, nous avons établi que le Projet Omega était une trouvaille du C.R.I.M.E., même si on ignore encore exactement de quoi il s'agit." + IDS_DIALOGUE_10210 "Cette proposition que nous avons trouvé date de 1965." + IDS_DIALOGUE_10211 "Et?" + IDS_DIALOGUE_10212 "Ca signifie que tout était déjà engagé pendant l'incident avec le C.R.I.M.E. l'an dernier." + IDS_DIALOGUE_10213 "Nous avons déjà fouillé les installations d'Amérique du Nord où ils détenaient le Dr Schenker. Aucune mention du Projet Omega dans les dossiers que nous avons récupérés. Hélas, les installations des Alpes ont été entièrement démolies." + IDS_DIALOGUE_10214 "Il y a un autre endroit auquel je pense." + IDS_DIALOGUE_10215 "Où?" + IDS_DIALOGUE_10216 "Akron, Ohio." + IDS_DIALOGUE_10217 "On a fouillé la maison de Goodman." + IDS_DIALOGUE_10218 "Blitzny." + IDS_DIALOGUE_10219 "Pardon?" + IDS_DIALOGUE_10220 "Son nom était Melvin Blitzny. Tom Goodman est mort à Amsterdam, vous vous rappelez?" + IDS_DIALOGUE_10221 "Quoi qu'il en soit, nos équipes ont ratissé l'endroit complètement." + IDS_DIALOGUE_10222 "Pas moi." + IDS_DIALOGUE_10223 "C'est une perte de temps." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10224 "Nous verrons." + IDS_DIALOGUE_10225 "Bien, sois prudente." + IDS_DIALOGUE_10228 "Je te ramènerai un souvenir." + IDS_DIALOGUE_10229 "Non, merci." + IDS_DIALOGUE_10232 "On peut repousser ça?" + IDS_DIALOGUE_10233 "Bien." + IDS_DIALOGUE_10234 "Vous êtes très déterminée." + IDS_DIALOGUE_10235 "J'ai promis." + IDS_DIALOGUE_10236 "Adieu." + IDS_DIALOGUE_10238 "Ah, bien, vous êtes réveillée." + IDS_DIALOGUE_10239 "Je ne me sens pas bien." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10240 "Une semaine de repos et tout ira bien." + IDS_DIALOGUE_10245 "Je n'ai pas le temps. Il faut que je trouve Armstrong." + IDS_DIALOGUE_10246 "Je dois insister!" + IDS_DIALOGUE_10247 " On y va, bande de poules mouillées... Vous n'essayez même pas!" + IDS_DIALOGUE_10248 "Oh, salut, Cate." + IDS_DIALOGUE_10249 "Armstrong." + IDS_DIALOGUE_10250 "Comment vous m'avez trouvé? Oh, c'est vrai, vous êtes une espionne." + IDS_DIALOGUE_10251 "Vous vous en sortez, c'est dur!" + IDS_DIALOGUE_10252 "Ben ils sont onze contre moi. Scusez moi, juste un moment." + IDS_DIALOGUE_10253 "Ca commence à venir, les gars!" + IDS_DIALOGUE_10254 "Douze en fait, j'avais pas vu celui-là dans le coin J'en ai pour une minute." + IDS_DIALOGUE_10255 "Prenez votre temps." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10256 "Là, je suis furieux." + IDS_DIALOGUE_10257 "Bon. Qu'est-ce que je peux faire pour vous?" + IDS_DIALOGUE_10258 "J'ai besoin de votre aide." + IDS_DIALOGUE_10259 "Je sais pas. Je suis pas mal retiré des affaires internationales." + IDS_DIALOGUE_10261 "Vous m'êtes redevable." + IDS_DIALOGUE_10262 "Ah, commencez pas." + IDS_DIALOGUE_10263 "Tout ce que nous demandons, c'est que vous aidiez Cate à infiltrer la branche Indienne." + IDS_DIALOGUE_10264 "Vous n'avez pas besoin de moi pour ça." + IDS_DIALOGUE_10265 "Beaucoup de choses ont changé depuis votre départ. La sécurité du C.R.I.M.E. est plus serrée que jamais." + IDS_DIALOGUE_10266 "Bon, je pourrais passer quelques coups de fil, mais n'espérez pas que je me mêle de tout ça." + IDS_DIALOGUE_10267 "Kamal, Magnus Je viens en Inde." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10298 "J'ai un rendez-vous avec Monsieur Volkov." + IDS_DIALOGUE_10299 "Pardon?" + IDS_DIALOGUE_10300 "Dmitrij Volkov m'a fait demander." + IDS_DIALOGUE_10301 "Désolé, vous pouvez parler plus fort?" + IDS_DIALOGUE_10302 "Amenez-moi à Volkov. Immédiatement." + IDS_DIALOGUE_10303 "Suivez-moi, je vous prie." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10304 "Oh, de la lave en fusion! Magnifique." + IDS_DIALOGUE_10305 "Attendez ici, s'il vous plaît." + IDS_DIALOGUE_10306 "Monsieur, l'assassin est arrivé." + IDS_DIALOGUE_10307 "Faites-le entrer." + IDS_DIALOGUE_10308 "Laissez-moi vous dire, Monsieur, que c'est pour moi un honneur de rencontrer le légendaire Dmitrij Volkov. Vous êtes, sans aucun doute, le Michel-Ange du crime." + IDS_DIALOGUE_10309 "Mais... c'est très aimable à vous." + IDS_DIALOGUE_10312 "Monsieur Volkov, dites-moi qui vous a fait ça et je vous vengerai de terrible manière." + IDS_DIALOGUE_10313 "C'était un accident de ski." + IDS_DIALOGUE_10314 "Oh, je vois." + IDS_DIALOGUE_10315 "Bien. Alors... vous vous demandez sans doute pourquoi j'ai convoqué sans délais l'un des plus dangereux tueurs à gages du monde. " + IDS_DIALOGUE_10316 "Parce que vous voulez que je tue quelqu'un?" + IDS_DIALOGUE_10317 "Pas juste quelqu'un. Je veux que vous éliminiez... Cate Archer." + IDS_DIALOGUE_10318 "Comment les convaincre de m'engager?" + IDS_DIALOGUE_10319 "Montrez-leur vos capacités. Ils ont peut-être besoin d'une femme de ménage." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10320 "On nous observe." + IDS_DIALOGUE_10321 "Bien. Je reste ici. Vous l'attrapez et découvrez ce qu'il cherche." + IDS_DIALOGUE_10322 "Avec plaisir." + IDS_DIALOGUE_10323 "Prudence." + IDS_DIALOGUE_10324 "Qui êtes-vous?" + IDS_DIALOGUE_10325 "Kamal m'envoie à votre rencontre." + IDS_DIALOGUE_10326 "Pourquoi ne vous êtes-vous pas présenté?" + IDS_DIALOGUE_10327 "Je croyais être suivi." + IDS_DIALOGUE_10328 "Kamal vous attend à... euh." + IDS_DIALOGUE_10329 "J'ai dit de l'attraper, pas de le poignarder." + IDS_DIALOGUE_10330 "Il était sur le point de me dire où rencontrer Kamal." + IDS_DIALOGUE_10331 "Pas de problème. Kamal a dit qu'il porterait un œillet rose pour que vous le reconnaissiez." + IDS_DIALOGUE_10332 "Moi?" + IDS_DIALOGUE_10333 "Je ne peux pas me permettre d'être vu." + IDS_DIALOGUE_10334 "Vous là-bas!" + IDS_DIALOGUE_10335 "Je m'en occupe. Cherchez Kamal." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10336 "Comment vous trouverai-je?" + IDS_DIALOGUE_10337 "Je ne passe pas inaperçu." + IDS_DIALOGUE_10340 "Dis-nous où il est!" + IDS_DIALOGUE_10341 "Je ne parlerai pas!" + IDS_DIALOGUE_10342 "Alors... tu vas... mourir!!!" + IDS_DIALOGUE_10343 "Attention!" + IDS_DIALOGUE_10344 "Ah, vous voilà! Je commençais à m'inquiéter." + IDS_DIALOGUE_10345 "Cette carte indique l'emplacement secret du C.R.I.M.E.. Je vous ai laissé un paquet dans une boîte aux lettres près d'ici." + IDS_DIALOGUE_10346 "Oh, avant d'oublier, il vous faudra un peu d'argent pour Harij le Fou. Cinq roupies devraient suffire." + IDS_DIALOGUE_10347 "Vous voulez passer? Cinq roupies." + IDS_DIALOGUE_10348 "Personne ne passe sans payer Harij." + IDS_DIALOGUE_10349 "Ne mettez pas Harij en colère." + IDS_DIALOGUE_10350 "Je vous l'ai dit de NOMBREUSES fois: cinq roupies si vous voulez passer cette porte." + IDS_DIALOGUE_10351 "Vous pouvez passer." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10352 "Si je te prends encore à faire payer le passage, je t'arrête. Je te le jure." + IDS_DIALOGUE_10353 "C'est ma porte." + IDS_DIALOGUE_10354 "Non! Non! Ce n'est PAS ta porte. Je te préviens!" + IDS_DIALOGUE_10355 "Maintenant, disparais!" + IDS_DIALOGUE_10356 "Bonjour?" + IDS_DIALOGUE_10357 "Bonjour?" + IDS_DIALOGUE_10358 "A qui ai-je l'honneur de parler?" + IDS_DIALOGUE_10359 "A qui ai-je l'honneur de parler?" + IDS_DIALOGUE_10360 "C'est moi, Balaji Malpani." + IDS_DIALOGUE_10361 "Balaji, espèce d'idiot, c'est moi, Anoop." + IDS_DIALOGUE_10362 "Oh, je me demandais si c'était toi, mon ami. Comment vas-tu?" + IDS_DIALOGUE_10363 "Bien, merci. Alors, c'est quoi le mot de passe d'aujourd'hui? Tu as pensé à quelque chose?" + IDS_DIALOGUE_10364 "Mais oui! Et je pense qu'il va beaucoup te plaire." + IDS_DIALOGUE_10365 "Fais pas durer le suspens..." + IDS_DIALOGUE_10366 "OK. Le mot de passe du jour est... Tu es prêt?" + IDS_DIALOGUE_10367 "Accouche, crâne de babouin!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10368 "Potage au curry. Qu'est-ce que tu en penses?" + IDS_DIALOGUE_10369 "Je pense que je devrais te donner à dévorer à des belettes enragées." + IDS_DIALOGUE_10370 "Mot de passe?" + IDS_DIALOGUE_10371 "Sortez d'ici." + IDS_DIALOGUE_10372 "Je ne vois pas de quoi vous parlez." + IDS_DIALOGUE_10373 "Le chef de la sécurité, où puis-je le trouver?" + IDS_DIALOGUE_10374 "Nous n'avons pas de chef de la sécurité." + IDS_DIALOGUE_10375 "Nous ne sommes pas au quartier général du C.R.I.M.E. pour l'Inde?" + IDS_DIALOGUE_10376 "C'est quoi, C.R.I.M.E.?" + IDS_DIALOGUE_10377 "Supposons que le C.R.I.M.E. existe et que vous ayez un chef de la sécurité du nom d'Anoop Banerjee. Où pourrais-je le trouver?" + IDS_DIALOGUE_10378 "De l'autre côté de la cour, son bureau est au deuxième étage." + IDS_DIALOGUE_10379 "Merci." + IDS_DIALOGUE_10380 "Pas de problème." + IDS_DIALOGUE_10381 "Attendez une seconde!" + IDS_DIALOGUE_10382 "Vous n'avez pas la permission de quitter ce bâtiment. Je vais dire à Banerjee que vous voulez le voir." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10384 "C'est maintenant ou jamais, Cate. Pénétrez dans le bureau de Banerjee et placez une écoute sur son téléphone. Ne vous faites pas prendre!" + IDS_DIALOGUE_10385 "Très bien! Maintenant, trouvez la boîte de jonction. D'après nos agents, elle est quelque part au premier étage." + IDS_DIALOGUE_10386 "Une embuscade?" + IDS_DIALOGUE_10387 "C'était l'un de ces bâtards de l'Alliance Maléfique." + IDS_DIALOGUE_10388 "On a perdu tout le chargement?" + IDS_DIALOGUE_10389 "Pacpac a réussi à sauver deux caisses de soda, mais ils ont pris toutes les crèmes glacées et tous les bonbons." + IDS_DIALOGUE_10390 "Qu'ils soient maudits! Cette fois, ils sont allés trop loin. Retournez à la base immédiatement. Il nous faut nous préparer." + IDS_DIALOGUE_10391 "Prem? Amenez la fille dans mon bureau. Je vais la voir maintenant." + IDS_DIALOGUE_10392 "Suivez-moi s'il vous plaît." + IDS_DIALOGUE_10393 "Par ici, je vous prie." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10401 "M. Banerjee attend." + IDS_DIALOGUE_10402 "M. Banerjee est un homme occupé. Ne lui faites pas perdre de temps, s'il vous plaît." + IDS_DIALOGUE_10403 "Où pensez-vous aller?" + IDS_DIALOGUE_10404 "Si vous ne voulez pas parler à M. Banerjee, vous devez partir." + IDS_DIALOGUE_10405 "Je vous préviens. C'est votre dernière chance." + IDS_DIALOGUE_10406 "Très bien. A l'évidence, vous ne voulez pas lui parler. Sortez ou je vous jette dehors." + IDS_DIALOGUE_10407 "Où est la jeune femme?" + IDS_DIALOGUE_10408 "Je crois qu'elle est aux toilettes." + IDS_DIALOGUE_10409 "Excusez-moi, Mademoiselle? Le patron va vous recevoir maintenant." + IDS_DIALOGUE_10410 "Ohé?" + IDS_DIALOGUE_10411 "Ca va là-dedans?" + IDS_DIALOGUE_10412 "Je commence à m'inquiéter pour vous." + IDS_DIALOGUE_10413 "Sortez s'il vous plaît, ou je vais casser la porte." + IDS_DIALOGUE_10414 "Un... deux... trois!" + IDS_DIALOGUE_10415 "Gardes! Ne la laissez pas s'échapper!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10416 "Même si je travaillais pour cette firme, le C.R.I.M.E., comment pourrais-je m'assurer de vos qualifications?" + IDS_DIALOGUE_10417 "On m'a dit que l'Alliance Maléfique avait un bureau dans la région." + IDS_DIALOGUE_10418 "Pas à ma connaissance. Mais, je vous en prie, poursuivez." + IDS_DIALOGUE_10419 "Bon, admettons que je vous apporte le contenu de leur coffre et que je réduise leur activité à néant?" + IDS_DIALOGUE_10420 "Disons que si j'étais responsable du recrutement pour une organisation telle que celle que vous décrivez, je serais très impressionné par cette démonstration." + IDS_DIALOGUE_10421 "Je reviens." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10444 "Vous êtes ivre!" + IDS_DIALOGUE_10445 "Je m'ennuyais." + IDS_DIALOGUE_10446 "Vous ne m'aidez pas beaucoup." + IDS_DIALOGUE_10447 "Ma fille, j'ai pas besoin de sermon. Je suis un grand garçon. Et puis, pour être parfaitement honnête, y'a pas grande différence quand je suis sobre et quand j'ai bu." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10448 "Bien, je pense que vous avez fait du bon travail." + IDS_DIALOGUE_10449 "C'est un bon début, mais pas assez bon. D'après ce que me dit Kamal, il vous faudra un niveau d'autorisation plus élevé pour approcher ce coffre." + IDS_DIALOGUE_10450 "Je suppose que je devrai m'octroyer une promotion." + IDS_DIALOGUE_10451 "Impressionné?" + IDS_DIALOGUE_10452 "Vous êtes engagée. C'est un poste modeste, mais je pense que vous trouverez le salaire et les bénéfices très attractifs. Bienvenue au C.R.I.M.E.." + IDS_DIALOGUE_10462 "C'est Kali." + IDS_DIALOGUE_10463 "Vous m'avez surprise. Elle est très intimidante, non?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10464 "Kali est un paradoxe. Protectrice et destructrice. Elle a failli détruire le monde en tentant de le sauver." + IDS_DIALOGUE_10465 "N'est-ce pas toujours comme ça? Que s'est-il passé?" + IDS_DIALOGUE_10466 "Il y avait autrefois un démon appelé Raktabija. Chaque goutte de son sang, versé sur le sol, pouvait donner naissance à un nouveau Raktabija - jusqu'à ce que le champ de bataille en soit couvert. Au désespoir, les dieux firent appel à Parvati, l'épouse du seigneur Shiva. Prenant la forme de Kali, elle s'engagea dans la bataille, déployant sa langue pour recueillir le sang du démon avant qu'il ne touche le sol et n'engendre de nouvelles armées. Mais elle s'enivra du sang de Raktabija, et sa danse de victoire menaçait de mettre le monde en pièces, quand le Seigneur Shiva se jeta à ses pieds. Sa simple vue suffit à la calmer." + IDS_DIALOGUE_10467 "Fascinant." + IDS_DIALOGUE_10468 "C'est un peu comme ma femme. Mais elle, elle continuerait à danser." + IDS_DIALOGUE_10469 "Mon pauvre ami." + IDS_DIALOGUE_10470 "Vous devriez vous laver les mains à l'eau chaude." + IDS_DIALOGUE_10471 "Je vous suggère de vous laver les mains à l'eau chaude." + IDS_DIALOGUE_10472 "Il y a des toilettes après ces portes, sur la droite." + IDS_DIALOGUE_10473 "Comme je vous le disais, vous devriez vous laver les mains. Utilisez de l'eau chaude." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10481 "Cate Archer?" + IDS_DIALOGUE_10482 "Hé, les gars! C'est Cate Archer! Le super agent secret britannique!" + IDS_DIALOGUE_10483 "Je peux avoir votre autographe?" + IDS_DIALOGUE_10484 "Allez dans la rue! Armstrong vous attend!" + IDS_DIALOGUE_10485 "Allez!" + IDS_DIALOGUE_10486 "Vite!" + IDS_DIALOGUE_10487 "Il n'y a plus beaucoup de temps!" + IDS_DIALOGUE_10488 "Je suis sérieux!" + IDS_DIALOGUE_10489 "Pourquoi éprouvez-vous ma patience?" + IDS_DIALOGUE_10492 "Bon sang!" + IDS_DIALOGUE_10493 "On est coincés!" + IDS_DIALOGUE_10494 "Hé, vous, donnez nous un coup de main, OK?" + IDS_DIALOGUE_10495 "Je m'attendais à plus difficile." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10496 "Qu'est-ce que vous baragouinez?" + IDS_DIALOGUE_10497 "Ainsi, voilà la puissante Cate Archer? Je ne suis pas impressionné." + IDS_DIALOGUE_10498 "Dès que je sors d'ici, je vous aplatis la figure contre le mur à coups de poings." + IDS_DIALOGUE_10499 "Faudra attendre longtemps, mon ami. La seule façon dont vous pourrez sortir de cette cage, c'est en vous écoulant entre les barreaux, comme de la soupe à l'oignon." + IDS_DIALOGUE_10500 "Oui? OK, on dirait... Fred Astaire? Une bicyclette? Un poney?" + IDS_DIALOGUE_10501 "Mon Dieu! Dites-le-moi, c'est tout!" + IDS_DIALOGUE_10502 "Monsieur, venez vite! On a un problème dehors!" + IDS_DIALOGUE_10503 "Je ne veux pas mourir." + IDS_DIALOGUE_10504 "Qu'est-ce que vous faites?" + IDS_DIALOGUE_10505 "Ca c'est une bonne fille!" + IDS_DIALOGUE_10506 "Ha!" + IDS_DIALOGUE_10507 "Ca marche pas. La porte est barrée de l'autre côté." + IDS_DIALOGUE_10508 "Restez en arrière. Je vais défoncer ça." + IDS_DIALOGUE_10509 "Pas exactement ce que je pensais." + IDS_DIALOGUE_10510 "Il va vous falloir ouvrir cette porte, ma fille." + IDS_DIALOGUE_10511 "Faites-moi sortir d'ici!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10512 "Ouvrez cette porte!" + IDS_DIALOGUE_10513 "Oy!" + IDS_DIALOGUE_10514 "Ouvrez, j'ai dit!" + IDS_DIALOGUE_10515 "Couvrez-moi!" + IDS_DIALOGUE_10516 "J'ai dit, couvrez-moi!" + IDS_DIALOGUE_10517 "Pourquoi on me tire dessus?" + IDS_DIALOGUE_10518 "Ils sont à moi. Vous ne les aurez pas." + IDS_DIALOGUE_10519 "La fille doit être punie." + IDS_DIALOGUE_10520 "Je m'en occupe personnellement." + IDS_DIALOGUE_10521 "Soyez maudite !" + IDS_DIALOGUE_10522 "Maintenant, si vous voulez bien m'excuser." + IDS_DIALOGUE_10523 "Je ferai mon rapport au Directeur." + IDS_DIALOGUE_10524 "Je ferai mon rapport au Directeur." + IDS_DIALOGUE_10525 "Assurez vous qu'il parte." + IDS_DIALOGUE_10526 "Maintenant!" + IDS_DIALOGUE_10527 "Pas si vite, le Français." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10528 "Merde!" + IDS_DIALOGUE_10529 "Vite! Je conduis, vous tirez!" + IDS_DIALOGUE_10530 "Vous n'aurez pas autant de chance la prochaine fois." + IDS_DIALOGUE_10534 "Tante Phyllis me dit que tu ne l'as pas encore appelée. La pauvre femme agonise sur son lit de mort et tu ne prends même pas la peine de décrocher ton téléphone." + IDS_DIALOGUE_10535 "Mère, Tante Phyllis me séquestrait à la cave chaque fois que tu m'envoyais en séjour chez elle." + IDS_DIALOGUE_10536 "Si j'avais su quel ingrat tu deviendrais, je t'aurais moi aussi enfermé à la cave! Je te jure, si ton père..." + IDS_DIALOGUE_10537 "Au revoir Maman, c'est toujours un plaisir d'entendre ta voix." + IDS_DIALOGUE_10538 "Ne me raccroche pas..." + IDS_DIALOGUE_10539 "La préparation est terminée?" + IDS_DIALOGUE_10540 "Oui Monsieur. La division est en route pour la zone de test." + IDS_DIALOGUE_10541 "Bien. On fera d'une pierre deux coups. Quelque chose d'autre?" + IDS_DIALOGUE_10542 "Il y a eu une petite... complication." + IDS_DIALOGUE_10543 "On n'a plus beaucoup de temps." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10544 "Enfin des bonnes nouvelles. Tous ces micmacs diplomatiques m'ont filé mal au crâne." + IDS_DIALOGUE_10545 "Nos agents s'approchent à cet instant même." + IDS_DIALOGUE_10546 "J'espère bien." + IDS_DIALOGUE_10547 "Vous m'avez vraiment impressionnée, là-bas." + IDS_DIALOGUE_10548 "Ecoutez-moi ces pleurnicheries." + IDS_DIALOGUE_10549 "Tout ce que vous aviez à faire, c'était de l'empoigner, crétin." + IDS_DIALOGUE_10550 "Gna, gna, gna." + IDS_DIALOGUE_10551 "Enfin, au moins, vous avez eu son manteau. Avec un peu de chance, il mourra de froid." + IDS_DIALOGUE_10552 "(fait des bruits de sanglots pour se moquer)" + IDS_DIALOGUE_10553 "Un jour je vais vous faire un sort." + IDS_DIALOGUE_10554 "Pas cap." + IDS_DIALOGUE_10555 "Excusez-moi. Agent Archer, le site est juste là, devant." + IDS_DIALOGUE_10556 "Qu'est-ce que c'est que cette fumée?" + IDS_DIALOGUE_10557 "Il y a quelque chose qui cloche." + IDS_DIALOGUE_10558 "Je n'avais pas réalisé que j'étais accompagné d'un génie." + IDS_DIALOGUE_10559 "Je vous ai déjà botté le cul, je peux recommencer." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10560 "Depuis quand êtes-vous devenue un tel tyran?" + IDS_DIALOGUE_10561 "Attendez là. Je vais jeter un œil." + IDS_DIALOGUE_10562 "Attention de ne pas vous casser un ongle." + IDS_DIALOGUE_10563 "Vous voulez attendre dans l'avion?" + IDS_DIALOGUE_10564 "Là, je vais vous aider." + IDS_DIALOGUE_10565 "J'attends ici, alors." + IDS_DIALOGUE_10566 "Il faut l'arrêter. Il est incontrôlable." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10576 "Qui... qui êtes-vous?" + IDS_DIALOGUE_10577 "On va tous mourir!" + IDS_DIALOGUE_10578 "Par là! Vite!" + IDS_DIALOGUE_10579 "Pauvre Hotchkins. Il a essayé de les prévenir." + IDS_DIALOGUE_10580 "Les autres sujets allaient bien, mais celui-ci... celui-ci était différent." + IDS_DIALOGUE_10581 "La volonté. C'était ça. On aurait dû augmenter les traitements chimiques." + IDS_DIALOGUE_10582 "Pauvre, pauvre Hotchkins." + IDS_DIALOGUE_10583 "Qu'est-ce qui se passe, par ici?" + IDS_DIALOGUE_10584 "On peut entrer?" + IDS_DIALOGUE_10585 "Oh, vous voilà." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10592 "Ca n'a aucun sens." + IDS_DIALOGUE_10593 "Le C.R.I.M.E. planifie un test sur le terrain. Ils vont utiliser les super-soldats pour détruire leur quartier général indien! Une punition!" + IDS_DIALOGUE_10594 "Quand?" + IDS_DIALOGUE_10595 "Il se peut que se soit déjà commencé. Je suis en train de m'y rendre. Alertez la police et dites leur de ne pas riposter. Juste d'évacuer la zone." + IDS_DIALOGUE_10596 "Bien. Mais soyez prudente." + IDS_DIALOGUE_10597 "Non, je vous en prie!" + IDS_DIALOGUE_10598 "Vous êtes Cate Archer?" + IDS_DIALOGUE_10599 "Oui, où en est-on?" + IDS_DIALOGUE_10600 "On est encore en train d'évacuer la zone." + IDS_DIALOGUE_10601 "Si vos hommes peuvent occuper les soldats, je me charge de faire sortir ces gens d'ici." + IDS_DIALOGUE_10602 "Mademoiselle Archer! Par ici!" + IDS_DIALOGUE_10603 "Kamal!" + IDS_DIALOGUE_10604 "J'ai des informations pour vous!" + IDS_DIALOGUE_10605 "Melle Archer. Ca va?" + IDS_DIALOGUE_10606 "Je suppose. Et vous? Ca va?" + IDS_DIALOGUE_10607 "J'ai bien peur d'être au chômage." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10608 "Melle Archer, je suis heureux que vous soyez revenue. J'ai des nouvelles de Magnus Armstrong." + IDS_DIALOGUE_10609 "Alors? Il va bien?" + IDS_DIALOGUE_10610 "Il est prisonnier du C.R.I.M.E.." + IDS_DIALOGUE_10611 "Pas pour longtemps." + IDS_DIALOGUE_10621 "Ce sont les informations sur les super soldats?" + IDS_DIALOGUE_10622 "Tout ce que j'ai pu trouver." + IDS_DIALOGUE_10623 "Oh, mon dieu." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10624 "Vos lunettes? Encore?" + IDS_DIALOGUE_10625 "Je pense que j'ai dû les laisser à la cafétéria." + IDS_DIALOGUE_10626 "Je reviens tout de suite." + IDS_DIALOGUE_10627 "Comme vous pouvez le voir sur ce schéma, j'ai tout prévu. Donnez moi douze heures, et je vous donne Maman Russie." + IDS_DIALOGUE_10628 "Ce n'est pas un plan d'attaque très précis." + IDS_DIALOGUE_10629 "On travaillera sur les détails plus tard. La première chose à faire, c'est d'obtenir la signature d'El presidente sur l'idée." + IDS_DIALOGUE_10630 "Tenez moi au courant de ce qu'il a dit." + IDS_DIALOGUE_10631 "Bonjour, agent Archer." + IDS_DIALOGUE_10632 "Le Général Hawkins expliquait son plan d'invasion de la Russie." + IDS_DIALOGUE_10633 "Bien sûr, il a omis la partie où il décrit dans les faits ce qui se passe pendant l'invasion." + IDS_DIALOGUE_10634 "Dommage que son intelligence ne soit pas à la hauteur de son zèle." + IDS_DIALOGUE_10635 "(soupirs)" + IDS_DIALOGUE_10636 "Je ne sais pas ce que les Anglais comptent faire, mais nous, Américains, on ne va pas rester plantés là en attendant que la bombe nous tombe dessus." + IDS_DIALOGUE_10637 "Je vous donnerais bien les détails du plan, mais c'est un peu technique. Ca vous passerait au dessus de la tête." + IDS_DIALOGUE_10638 "Contentez-vous d'échanger des recettes de cuisine et laissez-nous les vrais sujets de réflexion." + IDS_DIALOGUE_10639 "Et puis, après tout, on devrait se barrer d'ici, vous et moi, et discuter de tout ça en privé. Vous voyez ce que je veux dire..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10640 "Attention, à tout le personnel! Des intrus ont été repérés dans la zone de la cafétéria. Ils sont armés et extrêmement dangereux!" + IDS_DIALOGUE_10641 "On vient de me dire que les intrus seraient des... mimes." + IDS_DIALOGUE_10642 "A tout le personnel, alerte terminée. La menace a été neutralisée. Merci." + IDS_DIALOGUE_10644 "Vous voilà! J'avais peur que vous n'ayez été kidnappé." + IDS_DIALOGUE_10645 "Ah, vous les avez trouvées." + IDS_DIALOGUE_10646 "Désolé de vous avoir inquiétée. Une petite personne bizarre a fait irruption dans mon bureau, et j'ai préféré prendre la fuite." + IDS_DIALOGUE_10647 "Un plan digne d'éloges." + IDS_DIALOGUE_10648 "Jetons un œil sur ces dossiers, voulez-vous." + IDS_DIALOGUE_10649 "Vous êtes nerveuse?" + IDS_DIALOGUE_10650 "Oui." + IDS_DIALOGUE_10651 "Je pense pouvoir en sortir quelque chose d'utile. Bien sûr, il faudra que j'analyse les données plus en profondeur. Alors pourquoi n'allez-vous pas vous amuser à faire sauter un truc quelconque en attendant?" + IDS_DIALOGUE_10652 "Bonne idée. Je vais juste..." + IDS_DIALOGUE_10653 "... sortir pour sauver Armstrong." + IDS_DIALOGUE_10654 "Amusez-vous bien." + IDS_DIALOGUE_10655 "Hmmm, Armstrong." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10656 "Whisky, sec." + IDS_DIALOGUE_10657 "Des soucis au bureau?" + IDS_DIALOGUE_10658 "Cette bande de chochottes ne veut pas faire ce qu'il faut faire. Ah, je vais pas vous embêter avec mes histoires." + IDS_DIALOGUE_10659 "Mais au contraire. C'est passionnant." + IDS_DIALOGUE_10660 "Qu'est-ce que je suis supposé faire? Ce maudit truc viens de me sauter au nez." + IDS_DIALOGUE_10661 "Tu as une carte de garantie?" + IDS_DIALOGUE_10662 "Tu penses que c'est quoi? Du papier toilette? Quoi que ça pourrait très bien en être." + IDS_DIALOGUE_10663 "Tu as lu le paragraphe qui dit que le fabricant n'est pas responsable en cas de négligence ou de mauvaise utilisation?" + IDS_DIALOGUE_10664 "Mauvaise utilisation? J'ai juste suivi le fichu mode d'emploi." + IDS_DIALOGUE_10665 "La carte donne clairement les conditions dans lesquelles la garantie saute. Il y a toute une liste de choses qui peuvent provoquer un dysfonctionnement." + IDS_DIALOGUE_10666 "J'abandonne. Ces robots sont nuls, de toute façon." + IDS_DIALOGUE_10667 "Tu vois ça? C'est ce que je pense de ces crétins de robots." + IDS_DIALOGUE_10668 "Qu'est-ce que tu regardes?" + IDS_DIALOGUE_10669 "Erreur. Pas de logique. Veuillez consulter le Manuel Utilisateur pour procédure correcte d'entrée." + IDS_DIALOGUE_10670 "Le Manuel Utilisateur peut être obtenu au département des Services Super Ordinateur, couloir 2. Pour obtenir le Manuel Utilisateur, vous devez remplir une demande avec le numéro d'article correct. Le numéro d'article est listé dans le catalogue produit des services du super ordinateur." + IDS_DIALOGUE_10671 "Salutations. Pour emprunter le Manuel Utilisateur du Super Ordinateur, veuillez soumettre un formulaire de réquisition complété n° 207-B. Le formulaire doit indiquer le numéro d'article correct, que vous trouverez dans le catalogue produit des services du super ordinateur. Pour réquisitionner un catalogue produit des services du super ordinateur, veuillez soumettre un formulaire de réquisition 207-B. Le numéro d'article pour le catalogue produit des services du super ordinateur peut être trouvé dans le catalogue produit des services du super ordinateur." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10672 "Je ne peux vous aider sans formulaire de réquisition." + IDS_DIALOGUE_10673 "Voici votre Catalogue Produit des Services du Super Ordinateur." + IDS_DIALOGUE_10674 "Désolé. Le Manuel Utilisateur du Super Ordinateur n'est pas disponible pour l'instant." + IDS_DIALOGUE_10675 "Comme vous êtes mignonne, je vais vous aider. C'est Chris Hibbard qui a le manuel depuis quatre mois. Il a le plus grand mal à rendre les choses quand il en a terminé avec, mais il laisse toujours tout traîner sur son bureau. J'ai même fait une copie du passe pour entrer dans son bureau. Vous pouvez l'emprunter, mais rendez-le-moi quand vous aurez fini. Je détesterais avoir à lancer la sécurité à vos trousses." + IDS_DIALOGUE_10676 "Merci." + IDS_DIALOGUE_10677 "Erreur. Pas de logique. Utilisateur tente d'employer la version d'entrée 1.0. La version en œuvre est la 2.0. Veuillez consulter le supplément du Manuel Utilisateur du Super Ordinateur pour trouver la procédure mise à jour." + IDS_DIALOGUE_10678 "Les filles ne sont pas admises ici!" + IDS_DIALOGUE_10679 "Et bien voilà." + IDS_DIALOGUE_10680 "J'en ai mouillé ma culotte!" + IDS_DIALOGUE_10681 "Désolée, donnez-moi votre laissez-passer." + IDS_DIALOGUE_10682 "Vous n'êtes pas autorisée à entrer dans le Service des Super-ordinateurs." + IDS_DIALOGUE_10683 "J'ai besoin du supplément du manuel d'utilisateur du super ordinateur. Il n'est même pas sur le catalogue. Je n'ai pas de temps à perdre avec toute cette bureaucratie. Donnez moi le laissez-passer, ou bien." + IDS_DIALOGUE_10684 "Bien." + IDS_DIALOGUE_10685 "Bon sang!" + IDS_DIALOGUE_10686 "Ah, ne jouez pas les surpris." + IDS_DIALOGUE_10687 "Je ne peux pas dire que je m'attendais à vous voir ici." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10688 "Vous pensiez que je vous laisserais mourir?" + IDS_DIALOGUE_10689 "Vous pensez pouvoir me tirer de ce guêpier?" + IDS_DIALOGUE_10690 "Ca m'étonnerait. Mais au moins, elle pourra vous voir mourir." + IDS_DIALOGUE_10691 "On se dépêche, ma poule." + IDS_DIALOGUE_10692 "Oh, bon sang." + IDS_DIALOGUE_10693 "Ne m'oubliez pas, hein." + IDS_DIALOGUE_10694 "Cate..." + IDS_DIALOGUE_10695 "Je souhaite pas m'éterniser ici, poupée." + IDS_DIALOGUE_10696 "Bon sang, que..." + IDS_DIALOGUE_10697 "Oh, que non." + IDS_DIALOGUE_10698 "Dites au revoir à votre petite amie." + IDS_DIALOGUE_10699 "Soyez maudit!" + IDS_DIALOGUE_10700 "Encore une dette envers vous!" + IDS_DIALOGUE_10701 "Oh oh, sortons d'ici!" + IDS_DIALOGUE_10702 "Abigail!" + IDS_DIALOGUE_10703 "Je ne peux pas... me... contrôler..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10704 "Aaarrrrrggggghhhhh!!!" + IDS_DIALOGUE_10705 "Ca ne sent pas bon." + IDS_DIALOGUE_10706 "Bien. L'un de nous va devoir trouver les pompes de cale et assécher le couloir 4B." + IDS_DIALOGUE_10707 "Soit vous allez par ici, soit vous allez attendre là." + IDS_DIALOGUE_10708 "Bon, j'y vais." + IDS_DIALOGUE_10709 "Bon, j'attends là." + IDS_DIALOGUE_10710 "A bientôt." + IDS_DIALOGUE_10711 "OK, j'assèche le couloir. Accrochez-vous." + IDS_DIALOGUE_10712 "Partez! J'aurai peut-être besoin de votre aide tout à l'heure. Trouvez une console d'intercom." + IDS_DIALOGUE_10713 "Quand vous aurez atteint les pompes, asséchez le couloir 4B." + IDS_DIALOGUE_10714 "OK, ça marche. Cherchez une sortie." + IDS_DIALOGUE_10715 "Cate, j'ai besoin de votre aide. Il y a une caméra de sécurité. Elle va me repérer si je m'approche trop. Trouvez le bureau de la sécurité... Qu'est-ce qu...?" + IDS_DIALOGUE_10716 "Cate, c'est vous? Où êtes-vous maintenant? Je suis..." + IDS_DIALOGUE_10717 "Vous suggérez quoi, Peterson? Qu'on s'allonge et qu'on meurt?" + IDS_DIALOGUE_10718 "On a cherché partout." + IDS_DIALOGUE_10719 "Et bien continuez à chercher. Il doit y avoir un mécanisme quelconque quelque part." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10720 "Oui, Monsieur." + IDS_DIALOGUE_10721 "Oh, bon sang." + IDS_DIALOGUE_10724 "Faites-vous discret. Je vais repérer les lieux." + IDS_DIALOGUE_10725 "Pas de problème. Je suis tombé sur une petite bouteille de cognac sur la route, je vais lui faire un brin de conduite." + IDS_DIALOGUE_10726 "Arrêter de ronchonner. On aurait pu vous laisser pour mort." + IDS_DIALOGUE_10727 "Magnus, lancez la nacelle de secours." + IDS_DIALOGUE_10728 "Elle doit être coincée." + IDS_DIALOGUE_10729 "Il n'y a rien qui fonctionne correctement sur cette base à la noix?" + IDS_DIALOGUE_10730 "Non." + IDS_DIALOGUE_10731 "Bon, je reste, alors, finalement." + IDS_DIALOGUE_10732 "Quoi? C'est insensé. Je ne suis pas venue jusqu'ici pour vous laisser vous noyer." + IDS_DIALOGUE_10733 "Vous avez une meilleure idée? Je suis le seul assez fort pour ce boulot." + IDS_DIALOGUE_10734 "Pas de discussion." + IDS_DIALOGUE_10735 "Il doit y avoir un autre moyen." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10736 "Non, à moins que vous ne vouliez qu'on y reste tous." + IDS_DIALOGUE_10737 "Souhaitez-moi bonne chance." + IDS_DIALOGUE_10738 "Le voilà !" + IDS_DIALOGUE_10739 "Vous pouvez le faire, Magnus." + IDS_DIALOGUE_10740 "Il faut annuler cette opération." + IDS_DIALOGUE_10741 "L'annuler? Impossible." + IDS_DIALOGUE_10742 "Elle n'a jamais été approuvée, juste discutée." + IDS_DIALOGUE_10743 "Bien, je suppose que je pourrais me laisser convaincre... pour 100 millions de livres sterling." + IDS_DIALOGUE_10744 "Vous êtes fou." + IDS_DIALOGUE_10745 "Vraiment? Si je ne me trompe, une fois que mes super soldats se seront emparés de Khios, c'est vous qui devrez faire face au spectre de l'anéantissement." + IDS_DIALOGUE_10748 "Vous voulez me faire croire que vos super soldats réussiront ce qu'aucune nation au monde n'est parvenue à réaliser? Khios est impénétrable. Même pour vous." + IDS_DIALOGUE_10749 "Je vous enverrai une carte postale." + IDS_DIALOGUE_10750 "Vous ne me laissez pas d'autre choix que de contacter notre ambassadeur à Washington." + IDS_DIALOGUE_10751 "Faites donc. Nous verrons s'il vous croit." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10752 "Oui?" + IDS_DIALOGUE_10753 "Où étais-tu? J'ai essayé de te joindre toute la matinée." + IDS_DIALOGUE_10754 "Bonjour, Mère. Au revoir, Mère." + IDS_DIALOGUE_10755 "Ne me raccroche pas..." + IDS_DIALOGUE_10756 "Je viens d'avoir Washington au téléphone. Les soviétiques nient toute implication." + IDS_DIALOGUE_10757 "Ils mentent, cette bande de putes!" + IDS_DIALOGUE_10758 "Washington les a avertis qu'un drapeau soviétique flottant sur l'île de Khios serait considéré comme un acte de guerre." + IDS_DIALOGUE_10759 "J'ai terminé mon analyse." + IDS_DIALOGUE_10760 "Alors, c'est quoi?" + IDS_DIALOGUE_10761 "Du sérum anti super soldat." + IDS_DIALOGUE_10762 "Parfait. Quel est son effet?" + IDS_DIALOGUE_10763 "Vous voulez la réponse technique?" + IDS_DIALOGUE_10764 "Expliquez en sorte que Barnes puisse comprendre." + IDS_DIALOGUE_10765 "Cela produit une réaction chimique qui, en gros, fait bouillir les entrailles des super soldats." + IDS_DIALOGUE_10766 "Bon sang!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10770 "Je pense que nous devrions considérer qu'elle a échoué." + IDS_DIALOGUE_10771 "Nous sommes à court d'options." + IDS_DIALOGUE_10773 "Où je signe, pour cette petite sauterie?" + IDS_DIALOGUE_10774 "Vous serez seul. Si nous postons des troupes sur cette île, les soviétiques débarquerons contre nous. Nous avons prévenu les autorités locales de ne pas intervenir, leurs armes seraient sans effet." + IDS_DIALOGUE_10775 "Ils pourraient au moins servir de cible différente aux super soldats." + IDS_DIALOGUE_10776 "Pourquoi n'y avais-je pas pensé..." + IDS_DIALOGUE_10777 "Faut utiliser votre tête, Monsieur." + IDS_DIALOGUE_10779 "J'ai pensé un instant vous mettre une balle dans la tête pendant que vous étiez inconsciente." + IDS_DIALOGUE_10780 "Pourquoi ne pas l'avoir fait?" + IDS_DIALOGUE_10781 "Trop facile. Pour vous. Après tout le tort que vous nous avez causé, vous laisser mourir simplement dans votre sommeil ne suffit pas." + IDS_DIALOGUE_10782 "J'espère que vous avez en tête quelque chose d'intéressant." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10784 "Vous plaisantez." + IDS_DIALOGUE_10785 "J'ai pensé que ça attirerait votre attention." + IDS_DIALOGUE_10786 "Vous avez volé cette idée chez Les Maîtres du Chaos" + IDS_DIALOGUE_10787 "Ridicule." + IDS_DIALOGUE_10788 "Ils trucident les gens de cette façon depuis 63." + IDS_DIALOGUE_10789 "Vous essayez juste de me vexer, Enclenchez le mécanisme." + IDS_DIALOGUE_10792 "Faites-le vous-même." + IDS_DIALOGUE_10793 "Enclenchez le mécanisme." + IDS_DIALOGUE_10795 "Bon sang!" + IDS_DIALOGUE_10796 "Je pensais vous croiser." + IDS_DIALOGUE_10797 "Je savais que j'allais vous croiser." + IDS_DIALOGUE_10798 "Et si on prétendait ne pas s'être vues." + IDS_DIALOGUE_10799 "Je ne peux pas." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10800 "Bon." + IDS_DIALOGUE_10801 "J'ai eu tort d'épargner votre vie autrefois." + IDS_DIALOGUE_10802 "Une déception permanente, c'est ce que vous avez été. Sayonara." + IDS_DIALOGUE_10803 "Bon sang!" + IDS_DIALOGUE_10804 "Ca va?" + IDS_DIALOGUE_10805 "On peut pas dire que vous ayez bon goût sur le choix de vos employeurs." + IDS_DIALOGUE_10806 "Il était... comme un père." + IDS_DIALOGUE_10807 "Mieux vaut pour vous être orpheline." + IDS_DIALOGUE_10808 "Je vous dois la vie." + IDS_DIALOGUE_10809 "Alors voudriez-vous cesser de tenter de me tuer?" + IDS_DIALOGUE_10810 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_10811 "Rien du tout." + IDS_DIALOGUE_10812 "Bon, je vais être en retard à la guerre Sayonara." + IDS_DIALOGUE_10815 "OK, Perkins, on remonte." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10816 "Bien, Monsieur." + IDS_DIALOGUE_10817 "A tout l'équipage, préparez vous à déployer la force d'invasion." + IDS_DIALOGUE_10818 "On a détecté un sous-marin non identifié près de la côte. Il est passé au travers du blocus." + IDS_DIALOGUE_10819 "Attention, à tout l'équipage, nous sommes en Alerte Orange, je répète, nous passons en Alerte Orange." + IDS_DIALOGUE_10820 "Vous pensez que le Président me laissera appuyer sur le bouton?" + IDS_DIALOGUE_10821 "Je suis déjà surpris qu'il vous laisse utiliser un téléphone." + IDS_DIALOGUE_10822 "Le Président Johnson va s'adresser au peuple Américain." + IDS_DIALOGUE_10823 "Mes chers compatriotes, il est de mon devoir de vous dévoiler un état de crise qui s'est développé dans un pays lointain, dont beaucoup d'entre nous ignoraient jusqu'à l'existence. Alors que nous poursuivons nos efforts de pacification au Vietnam et dans la crise endémique du Moyen-Orient, une nouvelle menace, dangereuse, se profile sur la petite île de Khios. Il s'agit d'une modeste nation située au large de la Turquie, dans la mer de Marmara. Depuis des décennies, nous vivons dans la peur constante et tenace d'une guerre contre l'Union Soviétique." + IDS_DIALOGUE_10824 "Que Dieu nous garde." + IDS_DIALOGUE_10825 "Stoppez tout!" + IDS_DIALOGUE_10826 "Bien Monsieur!" + IDS_DIALOGUE_10827 "Parfait! Commencez le déploiement." + IDS_DIALOGUE_10828 "Cate!" + IDS_DIALOGUE_10829 "Bon sang, c'est pas vrai!" + IDS_DIALOGUE_10830 "Quoi?!" + IDS_DIALOGUE_10831 "Satanée bonne femme qui se mêle de tout." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10832 "Je ne pensais pas que vous y arriveriez." + IDS_DIALOGUE_10833 "Moi non plus. Où sont les munitions?" + IDS_DIALOGUE_10834 "En route. Bruno a dit qu'ils avaient fini d'assembler les capsules. Il vont nous les larguer par avion d'un moment à l'autre." + IDS_DIALOGUE_10835 "Bon. On devrait pouvoir tenir si le tonique pour super soldat du Dr schenker a bien l'effet escompté." + IDS_DIALOGUE_10836 "J'ai une idée. Restez ici et assurez-vous que personne n'approche de ce drapeau." + IDS_DIALOGUE_10837 "Trop tard, Archer." + IDS_DIALOGUE_10838 "Oh non." + IDS_DIALOGUE_10839 "Que Dieu nous garde." + IDS_DIALOGUE_10840 "Yeee Haw!" + IDS_DIALOGUE_10841 "Un petit faux pas pour l'homme, une calamité géante pour l'humanité. Et en attendant que tout saute, je me prélasserai sur une plage du sud Pacifique, en sirotant des daïquiris. Dommage que maman ne puisse pas m'accompagner." + IDS_DIALOGUE_10842 "Pendant l'affaire des missiles à Cuba, en 1962, nous avons frôlé la catastrophe de trop près à notre goût à tous. Ainsi, c'est avec une profonde tristesse et une intense déception que je dois préparer le peuple américain à une nouvelle et dangereuse épreuve, de l'autre côté de la terre, loin du site de cette précédente confrontation. L'Amérique s'est porté garante de l'indépendance de Khios, quel qu'en soit le prix. Nous ne pouvons pas faire marche arrière." + IDS_DIALOGUE_10844 "Ow!" + IDS_DIALOGUE_10845 "C'est parti!" + IDS_DIALOGUE_10846 "Le drapeau!" + IDS_DIALOGUE_10847 "Il faut arrêter ce missile." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10848 "Trop tard, les gars. Elle est hors de portée. Quel pied! Je me taperai bien du pop-corn." + IDS_DIALOGUE_10849 "Qu'est-ce qu'elle fabrique, cette fille?" + IDS_DIALOGUE_10850 "Les soviétiques promettent de lancer une frappe de représailles si le missile n'est pas détruit." + IDS_DIALOGUE_10851 "Ca devient de mieux en mieux au fil des minutes." + IDS_DIALOGUE_10852 "Oh, Dieu merci." + IDS_DIALOGUE_10853 "Attendez!" + IDS_DIALOGUE_10854 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_10855 "Restez.... En arrière..." + IDS_DIALOGUE_10858 "Bon, ça suffit pour moi. Ca fait trop longtemps que j'ai envie de descendre une pinte ou deux." + IDS_DIALOGUE_10859 "Ah, vous voilà. Rien de spécial pendant mon absence?" + IDS_DIALOGUE_10860 "Rien de particulier." + IDS_DIALOGUE_10861 "Bon, je suppose que vous avez hâte d'être confronté à quelque chose de plus excitant." + IDS_DIALOGUE_10862 "Pas particulièrement." + IDS_DIALOGUE_10863 "Tout va bien?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10864 "Pas particulièrement." + IDS_DIALOGUE_10865 "Tu es la honte de cette famille." + IDS_DIALOGUE_10866 "Oui, Mère." + IDS_DIALOGUE_10867 "Quand ton cousin Beauregard a fait de la prison pour incendie criminel, j'ai pensé qu'on touchait le fond. Beauregard est un saint, comparé à toi." + IDS_DIALOGUE_10868 "Oui, Mère." + IDS_DIALOGUE_10869 "J'espère que tu es fier." + IDS_DIALOGUE_10870 "Oui, Mère." + IDS_DIALOGUE_10871 "Et autre chose..." + IDS_DIALOGUE_10872 "J'abandonne." + IDS_DIALOGUE_10873 "Comment, vous abandonnez? Vous ne pouvez pas abandonner." + IDS_DIALOGUE_10874 "Vous allez voir ça." + IDS_DIALOGUE_10875 "Dmitrij?" + IDS_DIALOGUE_10876 "Dmitrij!" + IDS_DIALOGUE_10877 "Le monde n'a pas encore fini d'entendre parler du C.R.I.M.E.! Vous êtes avec nous, ou contre nous." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10889 "Le Dr Schenker pense que je ne devrais pas te laisser partir." + IDS_DIALOGUE_10890 "Il se fait trop de soucis. Et toi aussi." + IDS_DIALOGUE_10891 "Morte, tu n'es utile à personne." + IDS_DIALOGUE_10892 "Et qu'est-ce que je dois faire? Rester au lit en attendant la troisième guerre Mondiale?" + IDS_DIALOGUE_10893 "Là dedans!" + IDS_DIALOGUE_10894 "C'est mal barré." + IDS_DIALOGUE_10895 "Qu'est-ce que c'était?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10896 "Oubliez-moi. On essaie d'éviter une guerre, vous vous rappelez." + IDS_DIALOGUE_10897 "Sortez de là! Je ne sais pas combien de temps je pourrai tenir." + IDS_DIALOGUE_10899 "(prends des inspirations profondes, profondes, profondes - de 6 secondes environ)" + IDS_DIALOGUE_10900 "On a détecté un avion de chasse. Le pilote donne le code Foxhunt." + IDS_DIALOGUE_10901 "C'est comme si c'était fait." + IDS_DIALOGUE_10902 "Si je ne suis pas de retour dans une heure, filez et contactez le commandement." + IDS_DIALOGUE_10903 "Un pressentiment... Il y a quelque chose dans cette mission qui cloche." + IDS_DIALOGUE_10904 "Souhaitez-moi bonne chance." + IDS_DIALOGUE_10905 "Vous avez peut-être besoin d'un coup de pied au cul." + IDS_DIALOGUE_10906 "Il faut qu'on vous sorte de là." + IDS_DIALOGUE_10907 "Mieux vaut ne pas le savoir." + IDS_DIALOGUE_10908 "Qu'ils viennent. On ne part pas sans Armstrong." + IDS_DIALOGUE_10909 "On enverra des secours." + IDS_DIALOGUE_10910 "Magnus." + IDS_DIALOGUE_10911 "Et envoyez une équipe d'interception aux installations antarctiques. Armstrong est toujours là-bas." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10912 "C'est formidable." + IDS_DIALOGUE_10913 "Quelle femme insupportable." + IDS_DIALOGUE_10914 "Désolé de ne pas rester pour le feu d'artifice. Faut vraiment que j'y aille. Bye-bye." + IDS_DIALOGUE_10915 "Abigail!!!" + IDS_DIALOGUE_10916 "AAARRRRRGGGGHHHH!!! ABIGAIL!!!" + IDS_DIALOGUE_10917 "Non, je vous en prie!" + IDS_DIALOGUE_10918 "Je vous attendrai ici." + IDS_DIALOGUE_10919 "Ca ne vous ressemble pas d'être cynique." + IDS_DIALOGUE_10920 "Non, je vous en prie!" + IDS_DIALOGUE_10921 "Regardez !" + IDS_DIALOGUE_10922 "Il faut partir. Les ennemis arrivent. Un tas d'hélicoptères." + IDS_DIALOGUE_10923 "Il faut se dépêcher." + IDS_DIALOGUE_10924 "Non, je vous en prie!" + IDS_DIALOGUE_10925 "Non, je vous en prie!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11001 "Hatori-san vous attend quelque part dans le village." + IDS_DIALOGUE_11002 "Cherchez ses messages." + IDS_DIALOGUE_11003 "Trouvez Hatori-san. Il peut vous aider dans votre mission." + IDS_DIALOGUE_11004 "Bonne chance!" + IDS_DIALOGUE_11005 "Psst." + IDS_DIALOGUE_11006 "Croa, croa!" + IDS_DIALOGUE_11007 "Par ici!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11008 "C'est moi, Santa!" + IDS_DIALOGUE_11009 "Dites bonjour à l'oiseau mécanique Minah Mark VII. Un moyen idéal pour communiquer avec vous sur le terrain." + IDS_DIALOGUE_11010 "Bon, alors, qu'est-ce que je peux faire pour vous?" + IDS_DIALOGUE_11011 "Si vous hésitez sur la conduite à suivre, consultez l'écran d'Etat de la Mission." + IDS_DIALOGUE_11012 "A moins qu'un objectif ne soit marqué optionnel, il vous faut l'accomplir pour mener votre mission à bien." + IDS_DIALOGUE_11013 "Sur certaines missions, vous pourrez aussi bénéficier de paramètres qui sont autant de guides ou de règles de conduite. C'est à vos risques et périls que vous violeriez ces règles." + IDS_DIALOGUE_11014 "Voilà pour les bases." + IDS_DIALOGUE_11015 "Autre chose?" + IDS_DIALOGUE_11016 "L'écran d'Equipement vous fournit la liste complète des armes et gadgets que vous transportez. Choisissez en un sur cette liste, vous obtiendrez une description détaillée et un résumé des types de munitions et des gadgets disponibles ici." + IDS_DIALOGUE_11017 "Parfait! On se revoit bientôt." + IDS_DIALOGUE_11018 "Attention!" + IDS_DIALOGUE_11019 "Vous pouvez vous placer dans les coins pour voir ce qui se passe plus avant. " + IDS_DIALOGUE_11020 "Toutefois, les ennemis sont susceptibles de vous repérer, alors ne traînez pas trop longtemps." + IDS_DIALOGUE_11021 "Les ennemis entendent tous les bruits que vous faites, apprenez donc à vous déplacer discrètement." + IDS_DIALOGUE_11022 "Vos empreintes peuvent vous trahir, mais vous pouvez utiliser le mode Furtif pour vous déplacer sans bruit." + IDS_DIALOGUE_11023 "Gardez à l'esprit que certains matériaux, le carrelage par exemple, amplifie les sons, alors que d'autres surfaces, comme l'herbe ou la neige, amortiront vos pas." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11024 "De même, faites attention à ne pas renverser de bouteilles ou de buter contre des carillons qui attireraient l'attention." + IDS_DIALOGUE_11025 "Essayez d'expédier vos ennemis quand ils sont sans méfiance. S'ils vous voient, ils crieront et attireront l'attention." + IDS_DIALOGUE_11026 "De plus, ne laissez pas les corps à découvert. Transportez-les quelque part, hors de vue." + IDS_DIALOGUE_11027 "Quand vous venez à bout de certains obstacles ou que vous accomplissez certains objectifs spécifiques, vous recevez des points de compétence." + IDS_DIALOGUE_11028 "Utilisez l'écran Joueur pour dépenser ces points et augmenter vos capacités." + IDS_DIALOGUE_11029 "J'ai faim." + IDS_DIALOGUE_11030 "Tu viens de manger." + IDS_DIALOGUE_11031 "J'y peux rien. Je mange quand je suis nerveuse." + IDS_DIALOGUE_11032 "Pourquoi es-tu nerveuse?" + IDS_DIALOGUE_11033 "J'ai un mauvais pressentiment pour ce soir." + IDS_DIALOGUE_11034 "Tu t'en fais pour un seul petit espion?" + IDS_DIALOGUE_11035 "Quoi? Non, Kenji-san veut me voir. Je pense qu'il veut rompre." + IDS_DIALOGUE_11036 "Ma grand-mère disait qu'on devrait empoisonner son homme tous les matins avant qu'il ne quitte la maison. Et lui dire qu'on lui donnera l'antidote à son retour." + IDS_DIALOGUE_11037 "Quel poison je devrais utiliser?" + IDS_DIALOGUE_11038 "Je suis sûre que ma grand-mère te trouvera quelque chose. Elle n'en a plus besoin." + IDS_DIALOGUE_11039 "Elle n'a pas peur que ton grand-père se sauve?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11040 "Il ne peut pas. Il est paralysé. Il faut faire attention avec les dosages." + IDS_DIALOGUE_11041 "Tu veux venir faire des courses à Nagoya, ce week-end?" + IDS_DIALOGUE_11042 "Je ne peux pas, j'ai un assassinat." + IDS_DIALOGUE_11043 "Demande à Haruko de le faire." + IDS_DIALOGUE_11044 "Elle m'en veut toujours à propos de son chat." + IDS_DIALOGUE_11045 "Et Yuki?" + IDS_DIALOGUE_11046 "Je lui demanderai." + IDS_DIALOGUE_11047 "Tiens-moi au courant." + IDS_DIALOGUE_11049 "Vous avez vu l'icône Lieu où se cacher en bas au coin de l'écran? Elle signale que vous êtes entrée dans une cachette potentielle. Pour vous dissimuler efficacement, restez immobile jusqu'à l'apparition de l'icône Caché. Une fois cachée, l'ennemi ne vous repérera pas, à moins qu'il n'enquête sur des troubles ou qu'il ne fouille la zone." + IDS_DIALOGUE_11050 "Vous êtes cachée uniquement lorsque vous restez immobile. Si vous bougez, attaquez ou rechargez une arme, vous êtes de nouveau visible." + IDS_DIALOGUE_11053 "Qu'est-il arrivé à ton bras?" + IDS_DIALOGUE_11054 "Je me suis battu avec ma mère." + IDS_DIALOGUE_11055 "On dirait qu'elle t'a entaillé profondément." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11056 "Elle m'a eu par surprise. Elle est rapide pour son âge." + IDS_DIALOGUE_11057 "Elle devait être vraiment furieuse." + IDS_DIALOGUE_11058 "Elle pense que je m'habille mal pour un ninja. Je lui dis M'man, on est dans les années 60, faut t'y faire, et elle me répond comme ça C'est un manque de respect. Alors je réplique Les vieux disent toujours ça." + IDS_DIALOGUE_11059 "Oh oh." + IDS_DIALOGUE_11060 "Ouais, ça l'a rendue hystérique. Elle a traversé la pièce comme une furie et s'est mise à me taillader. Finalement, j'ai réussi à la maîtriser, mais j'avais peur de la poignarder sans faire exprès. Ca l'aurait rendue dingue." + IDS_DIALOGUE_11061 "Tu devrais lui acheter des chocolats, ou quelque chose." + IDS_DIALOGUE_11062 "Bonne idée." + IDS_DIALOGUE_11063 "Agent Archer, par ici!" + IDS_DIALOGUE_11064 "J'ai de mauvaises nouvelles. Ils ont déplacé la réunion. Il faut que je découvre où." + IDS_DIALOGUE_11065 "Cherchez des endroits où les ninjas se rassemblent." + IDS_DIALOGUE_11066 "Peut-être les entendrez-vous parler du nouvel endroit." + IDS_DIALOGUE_11067 "Vous pourriez trouver une note, mais c'est risqué." + IDS_DIALOGUE_11068 "Faites attention!" + IDS_DIALOGUE_11069 "Pourquoi déplacent-ils la réunion dans le bâtiment principal?" + IDS_DIALOGUE_11070 "Isako-san dit que le Directeur veut qu'elle se déroule là-bas." + IDS_DIALOGUE_11071 "Il est probablement trop ivre pour marcher jusqu'à l'hôtel." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11072 "Non, il prendrait simplement un palanquin." + IDS_DIALOGUE_11073 "Je déteste travailler pour lui." + IDS_DIALOGUE_11074 "Tout le monde... Mais Isako-san a une dette d'honneur envers lui." + IDS_DIALOGUE_11075 "Beau travail! Je vais noter l'endroit de la réunion sur cette carte." + IDS_DIALOGUE_11076 "Bien suivez-moi!" + IDS_DIALOGUE_11077 "Les patrouilles sont plus fournies dans cette partie de la ville." + IDS_DIALOGUE_11078 "Il est plus prudent de les éviter." + IDS_DIALOGUE_11079 "Evitez la porte principale. Trop de gardes." + IDS_DIALOGUE_11080 "Bonne chance." + IDS_DIALOGUE_11081 "Des ennuis?" + IDS_DIALOGUE_11082 "Calme plat." + IDS_DIALOGUE_11083 "Bon." + IDS_DIALOGUE_11084 "L'espion a été repéré." + IDS_DIALOGUE_11085 "Restez vigilant." + IDS_DIALOGUE_11086 "J'ai remarqué qu'elle avait pris pas mal de poids ces temps-ci." + IDS_DIALOGUE_11087 "Tout ce qu'elle fait, c'est de manger du mochi en regardant des polars." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11088 "Elle a besoin d'un homme pour s'occuper d'elle." + IDS_DIALOGUE_11089 "Personne n'en veut. Elle est trop timide. Peut-être que si elle était plus jolie, mais elle n'est même pas capable de parler aux hommes." + IDS_DIALOGUE_11090 "Et le fils de Kenichi? Il est un peu simplet, mais il n'est pas vilain à regarder." + IDS_DIALOGUE_11091 "Elle ne serait jamais d'accord. Elle est trop difficile." + IDS_DIALOGUE_11092 "Qu'est-ce qui cloche chez elle?" + IDS_DIALOGUE_11093 "Quelle heure est-il?" + IDS_DIALOGUE_11094 "Je ne sais pas, pourquoi?" + IDS_DIALOGUE_11095 "Je suis sensée relever Masayo-san à 8 heures. Tu n'as pas de montre?" + IDS_DIALOGUE_11096 "Pas besoin. Les ninjas peuvent lire l'heure dans les yeux des chats." + IDS_DIALOGUE_11097 "Ca marche seulement pendant la journée. Et puis, si tu n'as pas de chat sous la main?" + IDS_DIALOGUE_11098 "Je regarde l'ombre d'un bâton par rapport au soleil." + IDS_DIALOGUE_11099 "Et c'est plus facile que de porter une montre? Pas grave. Je demanderai à quelqu'un d'autre." + IDS_DIALOGUE_11100 "Quelle belle soirée. Dommage qu'il faille travailler." + IDS_DIALOGUE_11101 "Il va sûrement pleuvoir ce week-end." + IDS_DIALOGUE_11102 "Tu veux du thé?" + IDS_DIALOGUE_11103 "Je suis sensé commencer ma patrouille bientôt. Si je bois du thé, il faudra que je pisse dans un quart d'heure." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11104 "Et alors?" + IDS_DIALOGUE_11105 "J'ai eu des ennuis la semaine dernière. Ca vaut pas le coup." + IDS_DIALOGUE_11106 "Trouvez-la." + IDS_DIALOGUE_11107 "Vite!" + IDS_DIALOGUE_11108 "Ne la laissez pas s'échapper!" + IDS_DIALOGUE_11109 "Fouillez partout!" + IDS_DIALOGUE_11110 "Si elle s'enfuit, on aura de gros ennuis!" + IDS_DIALOGUE_11111 "Elle pourrait passer par là. Faites attention qu'elle ne vous feinte pas." + IDS_DIALOGUE_11112 "Hai!" + IDS_DIALOGUE_11113 "Cate, j'ai dépêché une équipe d'interception pour vous seconder, mais cela pourrait prendre du temps avant qu'elle n'atteigne le point de rendez-vous. Retournez au pont et tâchez d'éviter d'être vue." + IDS_DIALOGUE_11114 "Vous l'avez trouvée?" + IDS_DIALOGUE_11115 "Pas encore. Soyez prudents!" + IDS_DIALOGUE_11116 "Vous avez un trombone?" + IDS_DIALOGUE_11117 "On n'en a plus." + IDS_DIALOGUE_11118 "Vous en avez demandé?" + IDS_DIALOGUE_11119 "Bien sur que non." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11120 "Qu'est-ce que ça veut dire? Pourquoi?" + IDS_DIALOGUE_11121 "Vous savez le nombre d'imprimés qu'il faut remplir pour des fournitures de bureau? Encore pire que pour le papier toilette. On n'a pas besoin de trombones." + IDS_DIALOGUE_11122 "Et quand il n'y a plus d'agrafes?" + IDS_DIALOGUE_11123 "On peut vivre sans agrafes." + IDS_DIALOGUE_11124 "Vous me dégoûtez." + IDS_DIALOGUE_11125 "Fait plus froid qu'hier." + IDS_DIALOGUE_11126 "Réfléchis, si on conquiert l'Amérique, la Floride fera partie de l'Union Soviétique." + IDS_DIALOGUE_11127 "L'an dernier, pour les vacances, ils m'ont envoyé à Mourmansk." + IDS_DIALOGUE_11128 "Au moins, j'ai eu Minsk." + IDS_DIALOGUE_11129 "Je rêve d'être envoyé à Minsk. Je ne me souviens plus comment c'est de se coucher sans sa veste." + IDS_DIALOGUE_11130 "Vous avez déjà envoyé le rapport de sécurité?" + IDS_DIALOGUE_11131 "Hier, pourquoi?" + IDS_DIALOGUE_11132 "J'ai oublié de le remplir." + IDS_DIALOGUE_11133 "Qu'est-ce que ça veut dire?" + IDS_DIALOGUE_11134 "Je ne l'ai pas rempli." + IDS_DIALOGUE_11135 "Alors pourquoi vous me demandez si je l'ai envoyé?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11136 "J'en suis pas sûr. J'y pensais même pas." + IDS_DIALOGUE_11137 "Bof, je doute que quelqu'un s'en aperçoive. Ils ne les lisent jamais, de toute façon. S'ils se plaignent, je le referai." + IDS_DIALOGUE_11138 "Tu me comprends mal, Camarade. Ce que je veux dire, c'est que l'état EST le peuple. Quand tu trompes le peuple, tu trompes l'état." + IDS_DIALOGUE_11139 "Mais l'état trompe le peuple tout le temps. T'appelles ça comment? Du masochisme?" + IDS_DIALOGUE_11140 "L'état ne TROMPE pas le peuple, il le GUIDE." + IDS_DIALOGUE_11141 "La Tcheka a assassiné mon grand-père. Ils l'ont mis dans un tonneau avec des rats. Le tortionnaire de 18 ans qui a eu cette idée a chauffé le tonneau jusqu'à ce que les rats rongent le corps de mon grand-père pour échapper à la chaleur. Tu appelles ça guider?" + IDS_DIALOGUE_11142 "Les sanctions disciplinaires sont parfois nécessaires pour préserver le caractère sacré de l'état. Si une tumeur hideuse te pousse sur le nez, tu la coupes pour protéger ton corps." + IDS_DIALOGUE_11143 "Mon grand-père était un paysan. Il est mort parce qu'il avait peur de la collectivisation." + IDS_DIALOGUE_11144 "Le Peuple doit apprendre à avoir confiance en l'Etat." + IDS_DIALOGUE_11145 "Je croyais que tu disais que le Peuple ETAIT l'Etat." + IDS_DIALOGUE_11146 "Oui, ça signifie qu'il doit apprendre à se faire confiance." + IDS_DIALOGUE_11147 "Mon grand-père avait confiance en lui. C'est pourquoi l'Etat l'a torturé et tué." + IDS_DIALOGUE_11148 "Je vois que ton patriotisme vacille, Camarade. Peut-être devrais-tu faire un tour au Centre d'ajustement de Prague." + IDS_DIALOGUE_11149 "Ces deux-là remettent ça." + IDS_DIALOGUE_11150 "Sergei ne lâche jamais le morceau, hein?" + IDS_DIALOGUE_11151 "Il est jeune et idéaliste. Laisse-lui du temps." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11152 "Ici Kominski. Nous avons trouvé une personne suspecte dans la vieille datcha près du lac. On l'emmène pour interrogatoire." + IDS_DIALOGUE_11153 "Qu'est-ce que vous faisiez là?" + IDS_DIALOGUE_11154 "Vacances." + IDS_DIALOGUE_11155 "Vous me prenez pour un imbécile. Personne ne viendrait ici pour des vacances." + IDS_DIALOGUE_11156 "Je suis venu pour chasser." + IDS_DIALOGUE_11157 "Avouez, vous êtes un espion." + IDS_DIALOGUE_11158 "Pourquoi viendrai-je ici pour espionner?" + IDS_DIALOGUE_11159 "Parce que vous savez qu'un projet top secret est à l'étude dans cette base." + IDS_DIALOGUE_11160 "Vraiment?" + IDS_DIALOGUE_11161 "Igor." + IDS_DIALOGUE_11162 "Quoi?" + IDS_DIALOGUE_11163 "Tu viens de lui dire, pour le projet." + IDS_DIALOGUE_11164 "Il m'a piégé." + IDS_DIALOGUE_11165 "Comment, je vous ai piégé?" + IDS_DIALOGUE_11166 "Vous m'avez fait parler du Projet Omega." + IDS_DIALOGUE_11167 "Projet Omega?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11168 "Igor, crétin!" + IDS_DIALOGUE_11169 "Bon sang, le prisonnier est trop malin. On ferait mieux de le torturer." + IDS_DIALOGUE_11170 "Merci pour votre aide." + IDS_DIALOGUE_11171 "Je vais goûter leur vodka avant de partir." + IDS_DIALOGUE_11172 "A bientôt" + IDS_DIALOGUE_11173 "Vous avez du travail?" + IDS_DIALOGUE_11174 "Terminez la mission, que nous puissions partir d'ici." + IDS_DIALOGUE_11175 "Je déteste la Sibérie." + IDS_DIALOGUE_11176 "On a déporté des gens en Sibérie depuis l'époque de Gengis Khan." + IDS_DIALOGUE_11177 "Les Sibériens font du bon beurre, pourtant." + IDS_DIALOGUE_11178 "Et puis, le lac Baïkal est magnifique en été." + IDS_DIALOGUE_11179 "Vous saviez que c'était la plus grande réserve d'eau fraîche au monde?" + IDS_DIALOGUE_11180 "Eh, ce n'est pas un endroit si moche pour y vivre." + IDS_DIALOGUE_11181 "Votre pilote a été capturé." + IDS_DIALOGUE_11182 "Ils l'interrogent dans le hangar à provisions." + IDS_DIALOGUE_11183 "Vous feriez mieux de le libérer si vous voulez rentrer à la maison." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11184 "Tu as eu des nouvelles de Tania?" + IDS_DIALOGUE_11185 "J'ai reçu une lettre d'elle la semaine dernière. Elle est chez sa mère à Omsk." + IDS_DIALOGUE_11186 "Elle s'est décidée?" + IDS_DIALOGUE_11187 "Pas encore." + IDS_DIALOGUE_11188 "Pourquoi tant d'hésitations?" + IDS_DIALOGUE_11189 "Ses amis ne m'aiment pas. Ils voudraient qu'elle renoue avec son ancien petit ami." + IDS_DIALOGUE_11190 "Je croyais qu'il la battait." + IDS_DIALOGUE_11191 "C'est vrai. Mais c'est un officier politique. Je ne suis qu'un soldat de deuxième classe en Sibérie." + IDS_DIALOGUE_11192 "Les femmes!" + IDS_DIALOGUE_11193 "Il paraît que tu as été basé à Moscou?" + IDS_DIALOGUE_11194 "Da." + IDS_DIALOGUE_11195 "Comment as-tu fini ici?" + IDS_DIALOGUE_11196 "J'ai demandé à mon commandant des nouvelles chaussettes, j'avais eu le pied gelé. Il a dit Tu crois avoir froid ici? Attends d'aller en Sibérie." + IDS_DIALOGUE_11197 "J'ai fini ici par hasard. J'ai pris un train pour Petrograd et il m'a laissé à Minsk. J'ai essayé d'expliquer que je n'étais pas basé ici, mais personne ne m'a cru." + IDS_DIALOGUE_11198 "Ils ne pouvaient pas vérifier?" + IDS_DIALOGUE_11199 "Ce n'est pas parce qu'ils gardent tous ces dossiers qu'ils sont capables de s'en servir. J'ai découvert que je n'avais jamais été porté manquant à mon poste de Petrograd." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11200 "Où est Mikhail?" + IDS_DIALOGUE_11201 "De corvée dans le bâtiment administratif principal." + IDS_DIALOGUE_11202 "Pourquoi, qu'est-ce qu'il a fait?" + IDS_DIALOGUE_11203 "Zhukov l'a surpris avec un magazine américain." + IDS_DIALOGUE_11204 "Pornographique?" + IDS_DIALOGUE_11205 "Pire. Plans d'investissement." + IDS_DIALOGUE_11206 "Je n'aurais jamais suspecté Mikhail d'être un cochon de capitaliste." + IDS_DIALOGUE_11207 "Il a dit qu'il s'en servait comme papier toilette parce qu'ils n'en n'ont plus depuis 3 semaines et qu'il ne voulait pas souiller de littérature patriotique." + IDS_DIALOGUE_11208 "Et Zhukov l'a quand même puni?" + IDS_DIALOGUE_11209 "Il ne pouvait pas le confisquer s'il ne punissait pas Mikhail." + IDS_DIALOGUE_11210 "Maintenant tu m'en parles, Zhukov APPROCHE l'âge de la retraite." + IDS_DIALOGUE_11211 "Comment peut-on rester en forme en mangeant ce gruau." + IDS_DIALOGUE_11212 "Le borscht me manque." + IDS_DIALOGUE_11213 "Les pirogi me manquent." + IDS_DIALOGUE_11214 "Le pain me manque." + IDS_DIALOGUE_11215 "Mais on A du pain." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11216 "J'aimerais mieux manger des cailloux. On pourrait tuer un lapin avec ce pain." + IDS_DIALOGUE_11217 "En fait, ce n'est pas une mauvaise idée." + IDS_DIALOGUE_11218 "Ragoût de lapin?" + IDS_DIALOGUE_11219 "Je suis en patrouille dans le périmètre ouest demain. Je chasse, tu cuisines." + IDS_DIALOGUE_11220 "D'accord." + IDS_DIALOGUE_11221 "Ils ont trouvé ce qui n'allait pas dans le relais de communications?" + IDS_DIALOGUE_11222 "Rien entendu là-dessus." + IDS_DIALOGUE_11223 "Bien, sois vigilant. Ca pourrait être du sabotage." + IDS_DIALOGUE_11224 "Tu as vu Mikhail?" + IDS_DIALOGUE_11225 "Il remplissait des dossiers au fond du hall." + IDS_DIALOGUE_11226 "Il n'y est plus, maintenant." + IDS_DIALOGUE_11227 "Peut-être dans la salle de repos." + IDS_DIALOGUE_11228 "J'ai déjà vérifié." + IDS_DIALOGUE_11229 "Il fume une cigarette?" + IDS_DIALOGUE_11230 "J'ai cherché partout. Il a disparu." + IDS_DIALOGUE_11231 "Il aurait pu rentrer aux baraquements." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11232 "En plein milieu d'une brigade? Il est de service encore 11 heures." + IDS_DIALOGUE_11233 "Il n'a pas pu s'évaporer?" + IDS_DIALOGUE_11234 "Boris s'est évaporé le mois dernier." + IDS_DIALOGUE_11235 "Boris est parti sans permission. Ca doit être ça." + IDS_DIALOGUE_11236 "Sans son manteau? Ou son chapeau?" + IDS_DIALOGUE_11237 "On est en URSS. Les gens ne disparaissent pas sans laisser de trace." + IDS_DIALOGUE_11238 "Dis ça à Mikhail." + IDS_DIALOGUE_11239 "Tu es nouveau ici, hein." + IDS_DIALOGUE_11240 "J'ai été transféré de Novgorod pour travailler sur le projet Omega." + IDS_DIALOGUE_11241 "J'en ai entendu parler. C'est quoi, au fait?" + IDS_DIALOGUE_11242 "J'en suis pas sûr. Personne ne m'a rien dit là-dessus. J'ai passé 3 jours à chercher des renseignements." + IDS_DIALOGUE_11243 "Tu as vérifié le M9 central?" + IDS_DIALOGUE_11244 "Il est hors service. L'un des tubes à vide a explosé et pas moyen d'en trouver un autre." + IDS_DIALOGUE_11245 "J'en ai vu un dans la cave, l'autre jour." + IDS_DIALOGUE_11246 "Où?" + IDS_DIALOGUE_11247 "Je ne me rappelle pas exactement. Soit sur une étagère, soit dans un placard." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11248 "Combien de temps encore il faudra les supporter?" + IDS_DIALOGUE_11249 "Jusqu'à la fin du projet." + IDS_DIALOGUE_11250 "Et ça prendra combien de temps?" + IDS_DIALOGUE_11251 "Personne n'en est sûr. Je pense que personne ne sait exactement de quoi il s'agit." + IDS_DIALOGUE_11252 "Le plus tôt sera le mieux. Ma patience est à bout." + IDS_DIALOGUE_11253 "Je suis sûr qu'ils sont morts de peur." + IDS_DIALOGUE_11254 "Ils ont raison de l'être." + IDS_DIALOGUE_11255 "Elle pourrait venir par ici. Faites attention." + IDS_DIALOGUE_11256 "Où en est-on?" + IDS_DIALOGUE_11257 "On a une espionne en vadrouille." + IDS_DIALOGUE_11258 "CIA?" + IDS_DIALOGUE_11259 "J'en sais rien. Pas moyen d'obtenir des réponses de personne, ici." + IDS_DIALOGUE_11260 "Bien! Encerclez!" + IDS_DIALOGUE_11261 "Feu à volonté!" + IDS_DIALOGUE_11262 "Bonjour... bonjour... mon nom est.... Bonjour, je m'appelle Tom Goodman... Oui, je suis Tom Goodman, maître espion... Eh, bébé, t'as déjà fait ça avec un espion ? Mon nom est Tom Goodman... On m'appelle Tom... Bon, coucou, là...." + IDS_DIALOGUE_11263 "Ceci est le journal audio de Tom Goodman, volume 1, 7 août 1965. Mon kit d'entraînement d'agent secret est arrivé aujourd'hui par la poste, envoyé par M. X. Ca comprend un manuel pratique UNION, un appareil pour écoutes téléphoniques et ce magnétophone. J'ai décidé d'enregistrer mes expériences pour mes mémoires - Flûte!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11264 "Ceci est le journal de Tom Goodman, volume 2, 14 août 1965. L'opération Imitation avance plus vite que prévue. Cela ne fait que quelques semaines que j'ai rencontré Monsieur X dans ce rade de Fort Lauderdale, et me voici déjà devenu Tom Goodman, agent secret extraordinaire. Demain, j'entame la phase 2." + IDS_DIALOGUE_11265 "Ceci est le journal de Tom Goodman, volume 3, 27 août 1965. J'ai installé mon quartier général top secret dans la cave. Je l'appelle mon sanctuaire interne. Il est ce qui me sépare du commun des mortels. L'entrée est soigneusement dissimulée pour les agents ennemis ne la trouve pas. Il faudra qu'ils me torturent s'ils veulent y entrer." + IDS_DIALOGUE_11266 "Ceci est le journal de Tom Goodman, volume 4, 17 septembre 1965. J'ai eu quelques déboires. J'ai le look, la démarche, les mouvements, mais toujours pas les nanas. Aucune aide de Monsieur X. Je commence à me demander s'il me prend au sérieux. Il me prend pour quoi, une marionnette? Hein? C'est ça, Monsieur X? Vous croyez que vous pouvez m'enfiler comme un gant et me faire danser? Tom Goodman ne danse pour personne." + IDS_DIALOGUE_11267 "Journal de Tom Goodman, volume 5, 9 décembre 1965. Une ouverture enfin. Elle n'était pas belle et elle sentait l'écurie, mais c'était tout de même une femme. Le dernier obstacle au succès de ma carrière de super agent secret a été franchi. Je ne suis plus vierge. Yeeeeeehaaaawwww!" + IDS_DIALOGUE_11268 "Trouvez-la, vite" + IDS_DIALOGUE_11269 "Attendez ici." + IDS_DIALOGUE_11270 "Chhhh. Ecoutez!" + IDS_DIALOGUE_11271 "Attendez ici. Je reviens vite." + IDS_DIALOGUE_11272 "Vous ne pouvez pas entrer." + IDS_DIALOGUE_11273 "Cet endroit n'est pas pour vous." + IDS_DIALOGUE_11274 "Désolé, mais cette zone est hors limites pour vous." + IDS_DIALOGUE_11275 "Les employés seulement." + IDS_DIALOGUE_11276 "Partez." + IDS_DIALOGUE_11277 "J'ai dit, partez." + IDS_DIALOGUE_11278 "Psst." + IDS_DIALOGUE_11279 "Cate." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11280 "You hou." + IDS_DIALOGUE_11281 "Attrapez ces affiches avant que quelqu'un ne vous reconnaisse." + IDS_DIALOGUE_11282 "J'apporte un message de Kamal. Il veut vous voir dès que possible." + IDS_DIALOGUE_11283 "Il y a une cabine téléphonique désaffectée près du cinéma. J'y ai laissé un paquet pour vous. La combinaison est 32-46-27. Bonne chance." + IDS_DIALOGUE_11284 "Vous avez vu une enveloppe bleue?" + IDS_DIALOGUE_11285 "Non, pourquoi?" + IDS_DIALOGUE_11286 "Pour rien. Mais si vous la trouvez, dites-le-moi." + IDS_DIALOGUE_11287 "Vous avez vu une enveloppe bleue quelque part?" + IDS_DIALOGUE_11288 "Une enveloppe bleue? Il y a quoi dedans?" + IDS_DIALOGUE_11289 "Euh, rien d'important. Mais si vous la trouvez, apportez-la-moi tout de suite." + IDS_DIALOGUE_11290 "Vous avez vu des enveloppes bleues traîner dans le coin?" + IDS_DIALOGUE_11291 "Celle que le patron vous a donnée." + IDS_DIALOGUE_11292 "Quoi? Euh, oui, on peut dire ça." + IDS_DIALOGUE_11293 "Je ne l'ai pas vue. Ca doit être important, hein?" + IDS_DIALOGUE_11294 "Ma foi, pas vraiment. Mais faudrait tout de même que je la trouve." + IDS_DIALOGUE_11295 "Je cherche une enveloppe bleue. Quelqu'un l'a vue?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11296 "Non." + IDS_DIALOGUE_11297 "Vous êtes absolument certain?" + IDS_DIALOGUE_11298 "Oui." + IDS_DIALOGUE_11299 "Que le seigneur Shiva me protège de ma propre stupidité." + IDS_DIALOGUE_11300 "Aaaaaaaarrrrrrgggghhhhhhh!!!" + IDS_DIALOGUE_11301 "Qu'est-ce que... je?" + IDS_DIALOGUE_11302 "Aidez... moi..." + IDS_DIALOGUE_11303 "Gyaaahhhhhh!!!" + IDS_DIALOGUE_11304 "Qui êtes-vous?!?" + IDS_DIALOGUE_11305 "Qui m'a fait ça!?!" + IDS_DIALOGUE_11306 "Abigail, c'est toi!?!" + IDS_DIALOGUE_11307 "Abigail?!?" + IDS_DIALOGUE_11308 "Abigail!!!" + IDS_DIALOGUE_11309 "A l'aide!!!" + IDS_DIALOGUE_11310 "Regarde ce qu'ils ont fait!!!" + IDS_DIALOGUE_11311 "Abby!?!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11312 "S'il te plaît!!!" + IDS_DIALOGUE_11313 "Ils devraient être sur une table, à la vue de tous." + IDS_DIALOGUE_11314 "Je suis désolé d'abuser de votre temps." + IDS_DIALOGUE_11315 "Je suis certain de trouver un moyen de m'occuper de ces affreux super soldats dès que j'aurai pu lire ces documents." + IDS_DIALOGUE_11316 "J'aimerai bien." + IDS_DIALOGUE_11319 "Tu diras ce que tu voudras, mais cet endroit a du sens du point de vue business." + IDS_DIALOGUE_11320 "Tu es à côté de la plaque. N'importe qui peut construire une base sous-marine. Seules deux ou trois organismes au monde peuvent se payer une station spatiale." + IDS_DIALOGUE_11321 "Ca fait cher pour un peu de prestige. Ce tas de ferraille nous a presque mis KO. Celui qui l'a fait sauter nous a rendu service." + IDS_DIALOGUE_11322 "Ouais, tu parles d'un service." + IDS_DIALOGUE_11323 "Je suis sérieux. Le règlement de l'assurance versé pour cette base, sous-marin super secret, et les nouveaux bureaux de Lisbonne, Djakarta et Orlando. Et puis on a tous eu des primes pour la première fois." + IDS_DIALOGUE_11324 "Tout ça c'est très bien, mais je soutiens qu'une station spatiale ajoutait vraiment de la valeur. C'est une question d'image. Les gens veulent travailler pour des organismes prospères. Une station spatiale, ça fait prospère." + IDS_DIALOGUE_11325 "Jusqu'à ce que ça te ruine." + IDS_DIALOGUE_11326 "J'abandonne. On laisse tomber." + IDS_DIALOGUE_11327 "C'est la cinquième fois que je change de bureau depuis que je suis ici." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11328 "La direction veut garder les équipes soudées. Pour plus d'efficacité." + IDS_DIALOGUE_11329 "C'est pas eux qui doivent emballer toutes leurs cochonneries et les traîner dans les couloirs tous les trois mois." + IDS_DIALOGUE_11330 "Dépose une plainte." + IDS_DIALOGUE_11331 "Pour finir comme Pekoe? Non merci. On peut encore le voir par le hublot du niveau 2. Ce qu'il en reste, plutôt. Ce que les poissons n'ont pas mangé." + IDS_DIALOGUE_11332 "Bon, t'es gentil. Je viens de manger." + IDS_DIALOGUE_11333 "Hé, Barbagallo, ça te plaît, le C.R.I.M.E., jusqu'ici?" + IDS_DIALOGUE_11334 "C'est assez classe par rapport à des endroits où j'ai travaillé avant." + IDS_DIALOGUE_11335 "Tu étais au CCI, c'est ça?" + IDS_DIALOGUE_11336 "Ouais, et chez les Créateurs de Simulacres. Une bande de brutes épaisses. C'est agréable de travailler avec des professionnels." + IDS_DIALOGUE_11337 "Je commence à avoir pas mal d'expérience. Dans ce boulot, tu t'adaptes ou tu crèves." + IDS_DIALOGUE_11338 "T'as raison. Le seul truc qui m'embête, c'est le salut. Il est vachement compliqué. J'ai toujours peur d'en oublier un bout." + IDS_DIALOGUE_11339 "On t'as expliqué la symbolique?" + IDS_DIALOGUE_11340 "Quel symbolique?" + IDS_DIALOGUE_11341 "Regarde." + IDS_DIALOGUE_11342 "La première partie du salut, c'est le cœur. Ca veut dire le désir. La seconde partie c'est le monde. Et la dernière, c'est attraper ou prendre." + IDS_DIALOGUE_11343 "Hé, ouais, tout s'éclaire. Merci!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11344 "Je t'en prie." + IDS_DIALOGUE_11345 "Hé, bravo pour la promotion." + IDS_DIALOGUE_11346 "Ouais, merci." + IDS_DIALOGUE_11347 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_11348 "Je ne sais pas. C'est une lourde responsabilité." + IDS_DIALOGUE_11349 "Allez. Tu t'en tireras bien." + IDS_DIALOGUE_11350 "Si tu le dis." + IDS_DIALOGUE_11351 "Qu'est-ce qui t'inquiètes? Tu t'entends bien avec tout le monde." + IDS_DIALOGUE_11352 "Je sais." + IDS_DIALOGUE_11353 "Alors, où est le problème?" + IDS_DIALOGUE_11354 "Je peux être franc?" + IDS_DIALOGUE_11355 "Bien sûr!" + IDS_DIALOGUE_11356 "C'est mon rire. Pas assez diabolique, je pense." + IDS_DIALOGUE_11357 "Vas-y pour voir." + IDS_DIALOGUE_11358 "Alors?" + IDS_DIALOGUE_11359 "Faut travailler un peu ça. Essaie un peu plus dans les graves." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11360 "(rire diabolique un peu plus grave, mais le cœur n'y est toujours pas)" + IDS_DIALOGUE_11361 "C'est peut-être juste une question de motivation. Comme un comédien. Imagine qu'un espion à la manque se pointe et dit qu'il va t'arrêter. Sauf qu'à la place d'un flingue, il a une banane." + IDS_DIALOGUE_11362 "OK. Je vais essayer." + IDS_DIALOGUE_11363 "Tu vois! C'est parfait!" + IDS_DIALOGUE_11364 "Ouah, merci! Je te revaudrai ça." + IDS_DIALOGUE_11365 "Hé, t'étonnes pas si je te prends au mot. Maintenant que tu es chef et tout ça." + IDS_DIALOGUE_11366 "Rick a dit que tu avais encore dormi dans le canapé, la nuit dernière." + IDS_DIALOGUE_11367 "Pas moyen d'ouvrir ma porte. Avec ces fichues fermetures à reconnaissance vocale." + IDS_DIALOGUE_11368 "Ouais, le système a du mal à suivre les fluctuations de ton ou de rythme, il faut dire exactement les choses de la même façon à chaque fois." + IDS_DIALOGUE_11369 "Et comment je suis supposé faire ça?" + IDS_DIALOGUE_11370 "Facile. Prend un magnétophone. Ca marche impeccable." + IDS_DIALOGUE_11371 "C'est contraire au règlement." + IDS_DIALOGUE_11372 "Peut-être, mais dormir sur le canapé, c'est contraire à mon règlement." + IDS_DIALOGUE_11373 "Ces uniformes ont plus de classe que les anciens, mais le tissu est vraiment inconfortable." + IDS_DIALOGUE_11374 "Ouais, sûr, ils ont explosé leur budget la première fois, du coup ils n'ont pas pu se payer le même tissu." + IDS_DIALOGUE_11375 "J'espère que je ne vais pas attraper des boutons." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11376 "Tu sais qu'on a pratiquement tout raflé aux Oscars du Mal?" + IDS_DIALOGUE_11377 "Ouais, mais je ne comprends pas. Le Projet Lambda a viré au désastre." + IDS_DIALOGUE_11378 "C'est sûr, mais tu connais une organisation qui a réussi quelque chose de brillant l'an dernier?" + IDS_DIALOGUE_11379 "Un point pour toi." + IDS_DIALOGUE_11380 "On a perdu face à l'Alliance Maléfique pour le design du logo et face à Misère et Cie dans la catégorie costumes, mais tu admettras que Lambda était un projet ambitieux et que ça avait du panache." + IDS_DIALOGUE_11381 "J'ai hâte de voir ce qui va se passer l'an prochain. Je pense qu'Omega va faire du bruit." + IDS_DIALOGUE_11382 "Il doit y avoir une autre sortie!" + IDS_DIALOGUE_11383 "Ma mère va être désespérée. Mon grand frère était à bord de la station spatiale quand elle a explosé." + IDS_DIALOGUE_11384 "Arrête de parler comme ça. On va s'en sortir. Faut juste réfléchir." + IDS_DIALOGUE_11385 "Il faut que vous neutralisiez le système de sécurité." + IDS_DIALOGUE_11387 "Maîtrisez ce feu!" + IDS_DIALOGUE_11388 "On y travaille!" + IDS_DIALOGUE_11389 "Plus d'efforts! Ces flammes bouffent notre oxygène." + IDS_DIALOGUE_11390 "Où cette fichue porte secrète? Hein?" + IDS_DIALOGUE_11391 "Maîtrise-toi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11392 "On va mourir si on ne s'échappe pas de ce piège. Et tu me dis de me maîtriser?" + IDS_DIALOGUE_11393 "La panique ne résout rien." + IDS_DIALOGUE_11394 "Waouh! Ca c'est profond! La panique ne résout rien? Oh, alors je devrais arrêter. Seulement je panique, ce qui veut dire que je ne me contrôle pas, espèce de gros naze." + IDS_DIALOGUE_11395 "Scellez la sortie principale." + IDS_DIALOGUE_11396 "Bien, dispersez vous et cherchez." + IDS_DIALOGUE_11397 "Richards, prenez Mulroy et allez renforcer la sécurité de la centrale électrique. On ne peut pas se permettre de la laisser entrer là-bas." + IDS_DIALOGUE_11398 "Toutes les équipes de sécurité, au rapport, immédiatement." + IDS_DIALOGUE_11399 "Je veux qu'on trouve cette fille, tout de suite." + IDS_DIALOGUE_11400 "Mademoiselle Archer, il semble que je vous aie sous-estimée. Je ne ferai pas cette erreur deux fois." + IDS_DIALOGUE_11401 "Pourquoi n'est-elle pas encore sous les verrous?" + IDS_DIALOGUE_11402 "Mademoiselle Archer, c'est moi Dmitrij Volkov. J'attend impatiemment notre prochaine rencontre. Il se pourrait qu'elle ait lieu plus rapidement que vous ne le pensez." + IDS_DIALOGUE_11403 "Monsieur le Directeur, votre mère sur la ligne 2." + IDS_DIALOGUE_11404 "Oh, non." + IDS_DIALOGUE_11405 "Attention, à tout le personnel. Les troupes d'assaut 1 à 4 au rapport terminal B pour équipement." + IDS_DIALOGUE_11406 "Nous sommes maintenant en condition Omega." + IDS_DIALOGUE_11407 "Et bien, vous tous, je m'apprête à déclencher une guerre." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11408 "Pour chaque minute de liberté supplémentaire de Mademoiselle Archer, un jour de salaire sera déduit de vos fiches de paie. Peut-être que CA va vous motiver." + IDS_DIALOGUE_11409 "Hé, salut, Klaus, ça va?" + IDS_DIALOGUE_11410 "Bien, merci. Et toi?" + IDS_DIALOGUE_11411 "Ah, toujours après cette espionne. J'ai pas envie qu'on diminue ma paie." + IDS_DIALOGUE_11412 "Je devrais probablement aider, mais je ne me sens pas très motivé, là." + IDS_DIALOGUE_11413 "Ah bon, qu'est-ce qui se passe?" + IDS_DIALOGUE_11414 "Les méthodes de motivation du Directeur ne m'inspirent vraiment pas. J'ai des tendances rebelles par nature et j'aime pas qu'on me menace ou qu'on me rabaisse." + IDS_DIALOGUE_11415 "J'comprends bien, mais des fois, faut ravaler sa fierté." + IDS_DIALOGUE_11416 "C'est vrai, mais je trouve qu'il est important de défendre ses principes. Si je poursuis l'espionne comme il l'ordonne, sous la menace de réductions de salaire, ça veut dire que je trouve ces pratiques punitives acceptables." + IDS_DIALOGUE_11417 "Désolé de te l'apprendre, mon pote, mais c'est comme ça que fonctionnent les organisations criminelles. La plupart de ces types n'ont aucune expérience de management, ils viennent de familles paumées, ils n'ont pas fait d'études, et on ne peut pas les critiquer sans qu'ils pètent les plombs. C'est dur, mais c'est comme ça." + IDS_DIALOGUE_11418 "Ce n'est pas parce que cette attitude est entrée dans les mœurs qu'elle est tolérable. Il faut se demander, quel est mon but et comment y arriver le mieux possible. Si tu es un dirigeant et que tu veux que tes employés cherchent un espion ennemi, tu peux utiliser l'encouragement ou la punition pour les motiver. Les études prouvent que la punition est beaucoup moins efficace." + IDS_DIALOGUE_11419 "Tu as raison. Mais dans le contexte, les punitions peuvent être permanentes." + IDS_DIALOGUE_11420 "Oui, il faut peser le pour et le contre, bien sûr. Dans cette situation, le risque est seulement financier, alors je suis prêt à subir les conséquences. Si c'était une question de vie ou de mort, j'obéirais probablement." + IDS_DIALOGUE_11421 "Au moins tu es prudent." + IDS_DIALOGUE_11422 "Faut bien." + IDS_DIALOGUE_11423 "Bon, mon vieux, je vais chercher. Attention à toi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11424 "Où pensez vous aller?" + IDS_DIALOGUE_11425 "On a une affaire à régler." + IDS_DIALOGUE_11426 "La dernière fois que nous nous sommes vus, c'était sous la glace. Cette fois, c'est sur un lac de lave artificielle bouillante. Comme c'est approprié." + IDS_DIALOGUE_11427 "Encerclez-la, ne la laissez pas s'échapper!" + IDS_DIALOGUE_11428 "Bon, ouvrez l'œil!" + IDS_DIALOGUE_11429 "Dispersez vous et continuez vers les zones cibles." + IDS_DIALOGUE_11430 "Gardons cette position." + IDS_DIALOGUE_11431 "On est censé rencontrer l'équipe 4." + IDS_DIALOGUE_11432 "Oui, mais d'abord, assurons-nous que le périmètre est sécurisé." + IDS_DIALOGUE_11433 "Oh non!" + IDS_DIALOGUE_11434 "Quoi?" + IDS_DIALOGUE_11435 "J'ai laissé mon panier repas dans le sous-marin." + IDS_DIALOGUE_11436 "Tu n'as pas vérifié ta check liste pour la mission?" + IDS_DIALOGUE_11437 "Pas eu le temps. J'étais de corvée de toilettes. Bon sang, j'ai presque oublié de prendre mon revolver." + IDS_DIALOGUE_11438 "Ben, c'est trop tard pour y retourner, maintenant. Je partagerai mon sandwich avec toi." + IDS_DIALOGUE_11439 "Mec, à charge de revanche." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11440 "Nous avons un problème. L'agent Archer semble être tombé dans un piège infâme. Elle est poursuivie par des ninjas." + IDS_DIALOGUE_11441 "Elle doit rencontrer l'agent Yamata près de la chute d'eau, de l'autre côté du village. Localisez-la et sortez-la de ce guêpier." + IDS_DIALOGUE_11442 "Des espions! Arrêtez-les!" + IDS_DIALOGUE_11443 "Où est la fille?" + IDS_DIALOGUE_11444 "Elle a dû s'échapper." + IDS_DIALOGUE_11445 "Cherchez partout. Elle doit se cacher." + IDS_DIALOGUE_11446 "Quelque chose?" + IDS_DIALOGUE_11447 "Pas signe d'elle." + IDS_DIALOGUE_11448 "Continuez à chercher." + IDS_DIALOGUE_11449 "La voilà! J'espère qu'il n'est pas trop tard." + IDS_DIALOGUE_11450 "La voiture est hors d'usage. Il va falloir que vous la transportiez à l'abri et que vous attendiez de l'aide." + IDS_DIALOGUE_11451 "Les voilà!" + IDS_DIALOGUE_11452 "Ne les laissez pas s'échapper!" + IDS_DIALOGUE_11453 "Où sont-ils tous?" + IDS_DIALOGUE_11454 "Ces imbéciles avaient pour ordre de garder cette zone." + IDS_DIALOGUE_11455 "Ils ont dû aller à la chute d'eau." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11456 "Ou peut-être ont-ils eu des ennuis. Ouvrez l'œil." + IDS_DIALOGUE_11457 "Qu'est-ce qui se passe ici? Pourquoi personne n'est-il à son poste?" + IDS_DIALOGUE_11458 "L'espionne s'est échappée. Ils la poursuivent." + IDS_DIALOGUE_11459 "Quelqu'un doit garder la place. Et si c'était un piège? Peut-être va-t-elle revenir." + IDS_DIALOGUE_11460 "Je n'avais pas pensé à ça." + IDS_DIALOGUE_11461 "Restez ici. Je vais voir qui d'autre je peux trouver. S'il y a un quelconque problème, sonnez l'alarme." + IDS_DIALOGUE_11462 "Parfait! Les secours sont en route." + IDS_DIALOGUE_11463 "Le lâchage ne s'est pas déroulé aussi bien que prévu. Le point de ralliement est une datcha de chasse isolée près de l'installation. Utilisez la radio là-bas pour contacter le contrôle de la mission et obtenir des instructions." + IDS_DIALOGUE_11464 "Ici Foxhound." + IDS_DIALOGUE_11465 "Maintenant que l'agent Archer a obtenu les informations voulues avec l'ordinateur principal dans la base soviétique, nous voulons que vous acheviez cette mission pour de bon." + IDS_DIALOGUE_11466 "Des renforts ont déjà convergé vers le site, il sera donc ardu d'y pénétrer. Faites le nécessaire. Il faut détruire cet ordinateur." + IDS_DIALOGUE_11467 "Où est Vladimir?" + IDS_DIALOGUE_11468 "Ils l'ont envoyé aux archives principales." + IDS_DIALOGUE_11469 "Je croyais que cette zone était hors limites." + IDS_DIALOGUE_11470 "En effet. Il a été affecté là pour aider à estimer les dommages." + IDS_DIALOGUE_11471 "Pauvre idiot. On ne le verra sûrement jamais plus." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11472 "On n'a pas besoin d'explosifs. On a besoin de main-d'œuvre. Il faut inventorier tous les dossiers pour voir ce qu'il manque. Il y a des documents qui datent de la révolution stockés ici." + IDS_DIALOGUE_11473 "C'est ça que j'aime, en Union Soviétique. Tu demandes des comptables, on te donne de la nitroglycérine." + IDS_DIALOGUE_11474 "Alors, on devrait peut-être demander de la nitroglycérine." + IDS_DIALOGUE_11475 "C'est ce qu'ils enverraient aussi, j'en ai bien peur." + IDS_DIALOGUE_11476 "C'est sûr, tous ces trucs entreposés dans le coin?" + IDS_DIALOGUE_11477 "Je les ai fait mettre dans la cave. Ca devrait être aller jusqu'à ce qu'on s'arrange pour les envoyer ailleurs." + IDS_DIALOGUE_11478 "Ca pourrait prendre des semaines pour faire signer la paperasse." + IDS_DIALOGUE_11479 "Alors autant s'y mettre maintenant." + IDS_DIALOGUE_11480 "Je ne plaisante pas. Si je te reprends en train de fumer en bas, je te traîne dehors et je te découpe comme du petit bois. " + IDS_DIALOGUE_11481 "Bon, d'accord. J'ai compris." + IDS_DIALOGUE_11482 "Les cigarettes et les explosifs, ça ne se mélange pas." + IDS_DIALOGUE_11483 "Ce truc me rend nerveux. Je veux patrouiller dehors." + IDS_DIALOGUE_11484 "La ferme et fais ce qu'on te dit." + IDS_DIALOGUE_11485 "Ces idiots! Qu'est-ce qu'ils ont fait?" + IDS_DIALOGUE_11486 "Sécurisez le périmètre. Ca peut être un accident, mais aussi du sabotage. Personne ne quitte la base!" + IDS_DIALOGUE_11487 "Très habile! Vous avez réussi de façon remarquable." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11488 "L'agent Archer aura besoin d'un mot de passe pour infiltrer le quartier général du C.R.I.M.E." + IDS_DIALOGUE_11489 "L'ami de Magnus Armstrong, Kamal, va nous aider. Il vous faut d'abord le trouver. Il a dû laisser une note pour vous." + IDS_DIALOGUE_11490 "Personne ne peut franchir cette porte sans me payer." + IDS_DIALOGUE_11491 "Un homme du nom de Balaji Malpani a la responsabilité de trouver chaque jour un nouveau mot de passe. Obtenez sa photo." + IDS_DIALOGUE_11492 "Il a un appartement à l'hôtel Happy Guest. Cherchez-le là-bas." + IDS_DIALOGUE_11493 "Balaji rend visite à sa maîtresse chaque après-midi. Essayez de localiser son appartement. Il y a toujours des fleurs dehors." + IDS_DIALOGUE_11494 "Il y a un balcon qui fait face à sa chambre. Vous devriez pouvoir photographier Balaji de ce balcon." + IDS_DIALOGUE_11495 "Tu ne devrais pas venir ici. Tu es un homme marié." + IDS_DIALOGUE_11496 "Mais je ne peux pas résister à tes charmes, ma petite pêche délicate. Je suis maudit par l'amour interdit. Il palpite dans mes reins." + IDS_DIALOGUE_11497 "Oui, j'ai remarqué." + IDS_DIALOGUE_11498 "Que dois-je faire pour te persuader de mon amour?" + IDS_DIALOGUE_11499 "Ce n'est pas moi que tu dois convaincre, c'est mon père." + IDS_DIALOGUE_11500 "Ton père? Il est tellement vieux jeu. Il ne sera pas satisfait tant que je ne t'épouserai pas." + IDS_DIALOGUE_11501 "Si tu m'aimes, pourquoi ne le prouves-tu pas?" + IDS_DIALOGUE_11502 "C'est compliqué." + IDS_DIALOGUE_11503 "Tu te sers de moi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11504 "Ne dis pas ça comme ça. Ca semble si... vulgaire." + IDS_DIALOGUE_11505 "Dehors." + IDS_DIALOGUE_11506 "Pourquoi toujours se quereller. Embrassons-nous et oublions ces affaires triviales." + IDS_DIALOGUE_11507 "Votre première priorité est l'évacuation de Magnus Armstrong." + IDS_DIALOGUE_11508 "Cherchez également toute information complémentaire sur le Projet Oméga." + IDS_DIALOGUE_11509 "Quand vous aurez terminé, placez des explosifs et faites sauter le site." + IDS_DIALOGUE_11510 "Soyez prudent. L'endroit grouille probablement de troupes du C.R.I.M.E., à l'heure qu'il est." + IDS_DIALOGUE_11511 "Qu'est-il arrivé au générateur?" + IDS_DIALOGUE_11512 "Plus d'essence." + IDS_DIALOGUE_11513 "Remettez-en!" + IDS_DIALOGUE_11514 "Avec quoi?" + IDS_DIALOGUE_11515 "Il doit y avoir de l'essence quelque part par là. Cherchez un jerrycan." + IDS_DIALOGUE_11516 "Bon sang, cet endroit est une catastrophe. Ca va prendre des semaines pour estimer les dégâts." + IDS_DIALOGUE_11517 "J'espère vraiment qu'ils vont trouver pourquoi ce super soldat a mal tourné. On ne peut pas se permettre de voir ces machins tout saccager toutes les semaines." + IDS_DIALOGUE_11518 "Attention. A tout le personnel. Apparemment, nous avons toujours un problème de mime." + IDS_DIALOGUE_11519 "Equipes d'interception, au rapport chez le Directeur Temporaire Lawrie, à la cafétéria." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11520 "Bien, vous avez réussi. L'agent Archer vient de partir en mission, il va vous falloir liquider." + IDS_DIALOGUE_11521 "Les mimes se sont emparés du bureau de la sécurité." + IDS_DIALOGUE_11522 "Ils prennent des otages et placent des explosifs dans le bâtiment." + IDS_DIALOGUE_11523 "Débarrassez-vous de ces mimes." + IDS_DIALOGUE_11524 "A l'aide!" + IDS_DIALOGUE_11525 "Je suis attaqué par des mimes!" + IDS_DIALOGUE_11526 "Oh merci, la douleur était insoutenable!" + IDS_DIALOGUE_11527 "Lâchez-moi, bande de sales mimes!" + IDS_DIALOGUE_11528 "Vous n'avez aucune pitié!?" + IDS_DIALOGUE_11529 "Je vous suis reconnaissant!" + IDS_DIALOGUE_11530 "Vous les chochottes, vous avez besoin d'un bon coup de pied dans les frères Karamazoff." + IDS_DIALOGUE_11531 "Bas les pattes, bande de pervers." + IDS_DIALOGUE_11532 "Moi je dis: une fois qu'on aura pris soin des rouges, on envahit la France et on s'occupe du reste de ces clowns. Le monde nous en sera reconnaissant." + IDS_DIALOGUE_11533 "Encore vous? Eloignez-vous de ce micro, le Français! Ouste!" + IDS_DIALOGUE_11534 "Oh oh! Une fois encore, je me suis emparé du micro." + IDS_DIALOGUE_11535 "Bientôt cette agence immonde ne sera plus qu'un énorme cratère. Ca ne sera pas bien?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11536 "Vous autres agents secrets n'avez aucune chance contre mes mimes mortels." + IDS_DIALOGUE_11537 "Vous n'avez aucun goût pour l'art subtil de la pantomime. Je vous plains." + IDS_DIALOGUE_11538 "Soyez maudits! Vous et vos mères!" + IDS_DIALOGUE_11539 "Vous n'avez pas fini d'entendre parler de Pierre, le roi des Mimes!" + IDS_DIALOGUE_11540 "Ils sont partout! Faites quelque chose!" + IDS_DIALOGUE_11541 "Au secours, ils m'ont pris en otage!" + IDS_DIALOGUE_11542 "Je vous en prie, plus de torture!" + IDS_DIALOGUE_11543 "On, merci! Je suis assez mauvais comédien!" + IDS_DIALOGUE_11544 "Le C.R.I.M.E. et l'Alliance Maléfique sont prêts à signer un pacte d'assistance mutuelle. On ne peut se permettre de laisser faire." + IDS_DIALOGUE_11545 "Heureusement, un agent déçu du C.R.I.M.E. a accepté de nous aider. Son nom est Kamal. Localisez-le et voyez ce qu'il a à offrir." + IDS_DIALOGUE_11546 "Mais je pensais que nous allions travailler ensemble." + IDS_DIALOGUE_11547 "En effet, mais cette transgression ne saurait rester impunie. Cet homme, Kamal, a insulté notre honneur. Il ne doit pas vivre." + IDS_DIALOGUE_11548 "Je ne pense pas que le C.R.I.M.E. sera heureux de nous voir le tuer." + IDS_DIALOGUE_11549 "C'est pourquoi il va falloir faire passer ça pour un accident." + IDS_DIALOGUE_11550 "Mais vous avez envoyé une escouade d'assassins pour le tailler en pièces. Je ne pense pas qu'ils croiront à un accident." + IDS_DIALOGUE_11551 "Imbécile, on leur dira qu'on l'avait pris pour quelqu'un d'autre. De plus, ils ne laisseront pas un petit meurtre barrer la route à ce traité." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11552 "Merci de m'avoir sauvé la vie." + IDS_DIALOGUE_11553 "Le C.R.I.M.E. et l'Alliance Maléfique ont tous deux leurs quartiers généraux dans cette zone. Cherchez des informations qui vous permettent de les dresser l'un contre l'autre." + IDS_DIALOGUE_11554 "L'Alliance Maléfique est basée dans un cinéma." + IDS_DIALOGUE_11555 "Le quartier général du C.R.I.M.E. est" + IDS_DIALOGUE_11556 "Je n'aime pas l'idée de m'allier avec ces gars du C.R.I.M.E.." + IDS_DIALOGUE_11557 "Pourquoi pas?" + IDS_DIALOGUE_11558 "Je ne leur fais pas confiance. Tu sais ce que veux dire leur nom?" + IDS_DIALOGUE_11559 "Non." + IDS_DIALOGUE_11560 "Moi non plus. Ca m'inquiète." + IDS_DIALOGUE_11561 "Il sont vraiment de troisième zone." + IDS_DIALOGUE_11562 "Et alors? Ils ont leur propre cinéma. Il projettent des films tous les samedis soirs." + IDS_DIALOGUE_11563 "C'est vrai, mais leur réputation m'inquiète. Le nom de C.R.I.M.E. glace les gens de peur. Personne ne prend l'Alliance Maléfique au sérieux. C'est une bande de geignards en manque de reconnaissance." + IDS_DIALOGUE_11564 "Pas de souci. Tout le monde pensera que c'est une OPA hostile." + IDS_DIALOGUE_11565 "Je ne partage pas ton optimisme. Je pense que les gens vont se demander si on n'a pas perdu courage. Si c'était une OPA hostile, pourquoi leur aurait-on permis de garder leur nom?" + IDS_DIALOGUE_11566 "Hmmm, j'avais pas pensé à ça." + IDS_DIALOGUE_11567 "L'agence pense que le C.R.I.M.E. a envoyé un escadron pour gâcher les vacances de Monsieur Jones. C'est à vous d'empêcher que cela n'arrive." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11568 "Il est primordial que Monsieur Jones ignore que nous sommes là, ou ses vacances seront gâchées." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11600 "Vous êtes la nouvelle secrétaire?" + IDS_DIALOGUE_11601 "J'aurais bien besoin d'un massage." + IDS_DIALOGUE_11602 "Vous savez faire le café?" + IDS_DIALOGUE_11603 "Vous n'êtes pas une très bonne secrétaire." + IDS_DIALOGUE_11604 "Je te dis qu'ils préparent quelque chose d'important. Et la direction ne lève pas le petit doigt pour trouver ce que c'est." + IDS_DIALOGUE_11605 "Tu t'attends à quoi?" + IDS_DIALOGUE_11606 "J'attends qu'ils fassent quelque chose!" + IDS_DIALOGUE_11607 "Dans quel genre? Lancer un raid sur leur quartier général? Tu te rappelles ce qui s'est passé la dernière fois qu'on a tenté ça? On reçoit encore des morceaux de Vijay par courrier." + IDS_DIALOGUE_11608 "C'est mieux que d'attendre et de ne rien faire." + IDS_DIALOGUE_11609 "Je suis sûr qu'ils ont un plan. Tu verras. Tout ira bien." + IDS_DIALOGUE_11610 "Si c'est supposé me remonter le moral, ça marche pas." + IDS_DIALOGUE_11611 "Je te dis que cette femme me rend dingue." + IDS_DIALOGUE_11612 "Je t'avais prévenu, fallait pas l'épouser." + IDS_DIALOGUE_11613 "Pas ma femme, idiot. Sa mère! Elle était tellement douce et amicale jusqu'au mariage, et elle s'est changé en démon vicieux. Elle se plaint tout le temps." + IDS_DIALOGUE_11614 "Tu devrais peut-être lui rappeler qu'elle habite chez TOI." + IDS_DIALOGUE_11615 "Tu es fou? Elle me tuerait." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11616 "Je pense que tu devrais montrer plus d'autorité." + IDS_DIALOGUE_11617 "Tu ne la connais pas. Elle est dangereuse." + IDS_DIALOGUE_11618 "Tu travailles pour l'organisation terroriste la plus sauvage de la planète. Si quelqu'un est dangereux chez toi, mon ami, je pense que ce devrait être toi." + IDS_DIALOGUE_11619 "Tu sais, quand tu dis les choses comme ça, tout devient soudain logique et clair. Comment te remercier?" + IDS_DIALOGUE_11620 "Laisse tomber. Je déteste voir un bon pote dévirilisé." + IDS_DIALOGUE_11621 "Quelle belle journée." + IDS_DIALOGUE_11622 "Bonjour." + IDS_DIALOGUE_11623 "Bonjour à vous." + IDS_DIALOGUE_11624 "Salut." + IDS_DIALOGUE_11625 "Vous trouvez mon accent insultant?" + IDS_DIALOGUE_11626 "Quoi? Pourquoi?" + IDS_DIALOGUE_11627 "Il est faux." + IDS_DIALOGUE_11628 "Je ne comprends pas." + IDS_DIALOGUE_11629 "Je suis né et j'ai été élevé aux Etats Unis." + IDS_DIALOGUE_11630 "Quoi-? Comment-? Mais -?" + IDS_DIALOGUE_11631 "Mes parents ont émigrés à Philadelphie dans les années 30. J'ai grandi là-bas. Je suis allé dans des écoles américaines, j'avais des amis américains..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11632 "Alors qu'est-ce que vous faites là?" + IDS_DIALOGUE_11633 "J'ai toujours voulu savoir d'où ma famille venait. Alors, j'ai demandé un transfert." + IDS_DIALOGUE_11634 "Pourquoi cet accent bidon?" + IDS_DIALOGUE_11635 "Pour m'intégrer. Je ne sais pas comment les gens auraient réagi s'ils s'étaient rendus compte que j'étais un étranger. Mais j'ai peur d'en faire trop." + IDS_DIALOGUE_11636 "J'ai une confession à faire. Je viens de Détroit." + IDS_DIALOGUE_11637 "Vous plaisantez!" + IDS_DIALOGUE_11638 "Je ne pense pas que nous soyons les seuls. Quand Vijay est ivre, je pourrais jurer qu'il a un accent de l'Oklahoma. Et je suis presque sûr que Deepak est anglais." + IDS_DIALOGUE_11639 "Bon, c'est sûrement préférable de préserver les apparences." + IDS_DIALOGUE_11640 "Bonne idée, mon ami." + IDS_DIALOGUE_11641 "J'ai eu un autre blâme." + IDS_DIALOGUE_11642 "Me dis rien, laisse moi deviner. Il pense que ta marche contre le vent n'est pas assez affirmée." + IDS_DIALOGUE_11643 "Oui, il veut un vent plus fort." + IDS_DIALOGUE_11644 "C'est un élève de Deveraux." + IDS_DIALOGUE_11645 "Alors, ça explique tout. Deveraux pense que le vent doit être une tempête. Mon maître a étudié chez Jarre. Jarre est pour une brise joyeuse de printemps." + IDS_DIALOGUE_11646 "On m'a appris que le vent doit être vif, mais jamais discourtois." + IDS_DIALOGUE_11647 "Quand j'étais jeune, je ne réalisais pas la richesse philosophique de la pantomime." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11648 "Je ne vois pas pourquoi je devrais le faire." + IDS_DIALOGUE_11649 "De quoi tu parles? C'est ton boulot." + IDS_DIALOGUE_11650 "Je n'ai pas signé pour nettoyer des latrines. J'ai signé pour commettre des actes immondes." + IDS_DIALOGUE_11651 "Montre moi où, dans ton contrat, il est stipulé que tu ne feras que les choses marrantes." + IDS_DIALOGUE_11652 "Ecoute, je suis un expert dans ma partie, semer le malheur et la souffrance. On m'a engagé pour que je ruine la vie des gens. Tu veux nettoyer des latrines? Engage un concierge." + IDS_DIALOGUE_11653 "Bien sûr, tant que tu es prêt à voir ta paie diminuer pour lui payer un salaire." + IDS_DIALOGUE_11654 "Pourquoi je devrais payer pour ça?" + IDS_DIALOGUE_11655 "Parce que tu es celui qui refuse de s'y mettre. Nous autres, on nettoie les latrines quand c'est notre tour. Si tu ne veux pas nous aider, tu engages un concierge sur ta propre solde." + IDS_DIALOGUE_11656 "C'est pas juste!" + IDS_DIALOGUE_11657 "Tu devrais en parler à Monsieur Volkov. Je suis sûr qu'il aura une opinion sur le sujet." + IDS_DIALOGUE_11658 "Je ne nettoie pas." + IDS_DIALOGUE_11659 "Comme tu veux. Rappelle toi quand même que ceux qui ne nettoient pas, sont nettoyés." + IDS_DIALOGUE_11660 "C'est une menace?" + IDS_DIALOGUE_11661 "C'est un fait." + IDS_DIALOGUE_11662 "J'y pensais dernièrement. Tu te souviens de ce gars, Paulo?" + IDS_DIALOGUE_11663 "Tu veux dire celui qui a buté Johnny en Espagne?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11664 "Ouais, lui." + IDS_DIALOGUE_11665 "Qui pourrait l'oublier? Je me rappelle l'an dernier, à la fête de Noël. Tu as eu droit à une ovation debout quand tu as décrit ce que tu allais faire à ce type. C'était la vengeance la plus vicieuse, la plus imagée que j'ai jamais entendue. De la pure poésie." + IDS_DIALOGUE_11666 "Bon, comme j'ai dit, j'ai réfléchi. J'ai changé d'avis." + IDS_DIALOGUE_11667 "Tu veux dire que tu prévois quelque chose de pire?" + IDS_DIALOGUE_11668 "Non, je veux dire que j'ai changé d'avis." + IDS_DIALOGUE_11669 "Tu ne vas pas le tuer?" + IDS_DIALOGUE_11670 "Pourquoi faire? Ca fera pas revenir Johnny." + IDS_DIALOGUE_11671 "Ouais, mais pour le principe." + IDS_DIALOGUE_11672 "C'est ce que je me disais, mais tout ça c'était pour le business. J'aimais Johnny comme un frère, mais c'était un rat." + IDS_DIALOGUE_11673 "Peut-être, mais c'était ton ami." + IDS_DIALOGUE_11674 "Qu'est-ce que tu dis là? J'aurais fait n'importe quoi pour ce nullard." + IDS_DIALOGUE_11675 "Ben finalement, on dirait pas." + IDS_DIALOGUE_11676 "Ecoute, si je tue Paulo, j'aide qui? Pas Johnny, il est mort. Je le ferais pour moi." + IDS_DIALOGUE_11677 "Y'a rien de mal à ça." + IDS_DIALOGUE_11678 "Mais si. Regarde, je sais que Paulo n'avait rien de personnel contre Johnny. Il suivait juste les ordres. Je ne vais pas me sentir mieux en refroidissant un type qui ne faisait que son boulot." + IDS_DIALOGUE_11679 "Alors refroidit celui qui l'a engagé pour le faire." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11680 "Mais Johnny, ça lui pendait au nez. J'aurais aimé que ça tourne autrement, mais bon. Si je commence à sortir l'artillerie, ça me mènera à quoi?" + IDS_DIALOGUE_11681 "T'as un soutien-gorge, là-dessous? Je commence à douter de ta virilité. Je veux dire, si tu as perdu ton goût pour la violence, tu devrais peut-être devenir bibliothécaire, ou un truc comme ça..." + IDS_DIALOGUE_11682 "Redis-moi ça. En face. Si tu l'oses." + IDS_DIALOGUE_11683 "Du calme. J'ai juste un peu de mal à digérer tout ça." + IDS_DIALOGUE_11684 "C'est simple. Johnny s'est fait descendre parce qu'il était mauvais en affaires. Si je me retourne sur le mec qui l'a buté, pour le buter, je fais d'une tragédie une parodie." + IDS_DIALOGUE_11685 "De quoi tu parles? Tu te venges et c'est bien mérité." + IDS_DIALOGUE_11686 "C'est pas bien mérité! C'est ça que j'essaie de dire. Johnny s'est fait descendre parce qu'il était un rat. Si c'est la faute de quelqu'un, c'est de la sienne. Si un type se tire une balle dans la tête, c'est pas de la faute du revolver." + IDS_DIALOGUE_11687 "Hmmm, c'est intéressant." + IDS_DIALOGUE_11688 "C'est la différence entre vengeance et justice. Je pourrais me venger en tuant Paulo, mais ça ne servirait pas la justice. La justice, c'est ça qui a tué Johnny au départ." + IDS_DIALOGUE_11689 "T'as entendu que ce bâtard prévoyait de faire une intervention sur le projet Lambda à la conférence internationale du meurtre, cette année?" + IDS_DIALOGUE_11690 "Il n'était même pas sur le projet." + IDS_DIALOGUE_11691 "Je sais! Non mais, t'y crois!" + IDS_DIALOGUE_11692 "Ils l'ont convaincu de ne pas le faire?" + IDS_DIALOGUE_11693 "Nan, ils l'ont juste balancé aux requins." + IDS_DIALOGUE_11694 "Ca va lui fermer le clapet." + IDS_DIALOGUE_11695 "Pourquoi penses-tu qu'il y ai si peu de femmes dans l'industrie du crime?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11696 "Manque d'intérêt, probablement." + IDS_DIALOGUE_11697 "Tu trouves pas que c'est du sexisme?" + IDS_DIALOGUE_11698 "Je suis sûr qu'il y a de ça, mais on peut pas dire qu'on reçoive beaucoup de CV de femmes." + IDS_DIALOGUE_11699 "Peut-être que ça tient à la société. Peut-être que les filles sont élevées dans l'idée que le crime, c'est pour les hommes. Alors elles n'envisagent pas ça comme une option de carrière." + IDS_DIALOGUE_11700 "Je demanderai à ma sœur ce qu'elle en pense." + IDS_DIALOGUE_11701 "Qu'est-ce qui s'est passé avec leur projet pour la Tour Eiffel? Ils ne voulaient pas attacher des fusées dessus et l'envoyer sur la lune?" + IDS_DIALOGUE_11702 "Restrictions de budget. J'ai entendu dire qu'ils travaillaient sur un projet au Louvre pour remplacer toutes les peintures par des photos d'Elvis Presley." + IDS_DIALOGUE_11703 "T'es sûr? Ca ressemble beaucoup au boulot de Barcelone." + IDS_DIALOGUE_11704 "Ils appellent ça une suite spirituelle." + IDS_DIALOGUE_11705 "C'est décevant. J'espérais quelque chose d'un peu plus innovant." + IDS_DIALOGUE_11706 "Il peuvent encore innover. C'est pas parce que c'est une suite que ça va être la même chose. Vois ça comme une variation sur un thème." + IDS_DIALOGUE_11707 "On verra." + IDS_DIALOGUE_11708 "Cette femme officier chargée du moral des troupes est franchement pesante." + IDS_DIALOGUE_11709 "Oh, allons, elle n'est pas si mal." + IDS_DIALOGUE_11710 "Comment je peux intimider les gens avec un uniforme rose? Et quelle organisation criminelle qui se respecte a un slogan dans le genre: Bon pour être mauvais. Mauvais pour être bon." + IDS_DIALOGUE_11711 "J'aime assez. De toutes façons ça a été rejeté." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11712 "La question n'est pas là. Le simple fait de le proposer c'est une honte. Où est le danger?" + IDS_DIALOGUE_11713 "Laisse-la tranquille. C'est la première fois qu'elle intègre une organisation criminelle. Elle travaillait dans une compagnie de céréales pour petit- déjeuner, avant." + IDS_DIALOGUE_11714 "Doux Seigneur!" + IDS_DIALOGUE_11715 "Que puis-je faire pour vous?" + IDS_DIALOGUE_11716 "Vous pouvez estimer votre précision en regardant le viseur. Plus il est brouillé, moins les tirs sont précis. En vous déplaçant rapidement, vous noterez que vos tirs sont moins précis." + IDS_DIALOGUE_11717 "Vous venez d'entrer dans un lieu où vous pouvez vous cacher. Si vous restez parfaitement immobile, vous serez rapidement cachée, et vos ennemis ne vous verrons plus à moins d'être vraiment très près de vous. Vous resterez cachée tant que vous ne ferez pas de bruit. Vous pouvez donc avancer furtivement ou accroupie sans vous faire repérer, mais prenez garde à ne pas attirer l'attention." + IDS_DIALOGUE_11718 "Vous avez de quoi crocheter la porte. Utilisez-le sur le bouton de la porte." + IDS_DIALOGUE_11719 "Débarrassez-vous d'eux! Vite!" + IDS_DIALOGUE_11720 "Ils doivent avoir vu l'avion." + IDS_DIALOGUE_11721 "La radio est dans la salle du fond." + IDS_DIALOGUE_11722 "Utilisez la radio pour contacter votre chef." + IDS_DIALOGUE_11723 "Il y a un petit avant-poste soviétique au nord. Vous y trouverez peut-être de l'essence." + IDS_DIALOGUE_11724 "L'abri est derrière." + IDS_DIALOGUE_11725 "Prenez le ravitaillement dans l'abri." + IDS_DIALOGUE_11726 "Ce chemin mène à l'avion. Il n'y a rien de particulier à voir par là." + IDS_DIALOGUE_11727 "Le pont est juste devant! Lorsque vous l'aurez traversé, cherchez le chemin sur votre gauche. Il devrait vous permettre d'arriver aux piliers de soutien." +END + +STRINGTABLE +BEGIN + IDS_AISOUNDS_20000 "empty" + IDS_AISOUNDS_20001 "empty" + IDS_AISOUNDS_20002 "empty" + IDS_AISOUNDS_20003 "empty" +END + +STRINGTABLE +BEGIN + IDS_INTEL_TEXT_8000 "Vous avez trouvé une lettre contenant des informations secrètes." + IDS_INTEL_TEXT_8001 "Vous avez trouvé un rouleau de pellicule 35mm." + IDS_INTEL_TEXT_8002 "Vous avez trouvé un plan important." + IDS_INTEL_TEXT_8003 "Vous avez trouvé une mallette." + IDS_INTEL_TEXT_8004 "Vous avez trouvé un dossier." + IDS_INTEL_TEXT_8005 "Vous avez trouvé des fichiers épars." + IDS_INTEL_TEXT_8006 "Vous avez trouvé une enveloppe." + IDS_INTEL_TEXT_8007 "Vous avez trouvé une bobine de bande." + IDS_INTEL_TEXT_8008 "Vous avez photographié quelque chose d'important." + IDS_INTEL_TEXT_8009 "Vous avez photographié un livre." + IDS_INTEL_TEXT_8010 "Vous avez photographié un livre." + IDS_INTEL_TEXT_8011 "Vous avez trouvé une note." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5008 "Livrez la mallette à Hatori-san." + IDS_MISSION_OBJ_5009 "Effacez trois marques faites à la craie." + IDS_MISSION_OBJ_5010 "Empêchez les ennemis de déclencher l'alarme." + IDS_MISSION_OBJ_5011 "Retrouvez les six pages du manuel de l'UNION." + IDS_MISSION_OBJ_5012 "Photographiez Hatori-san." + IDS_MISSION_OBJ_5013 "Retrouvez les quatre pages du manuel de l'UNION." + IDS_MISSION_OBJ_5014 "RATE: photographier la réunion." + IDS_MISSION_OBJ_5015 "Ne laissez aucune alarme se déclencher dans la cour autour de la maison principale." + IDS_MISSION_OBJ_5016 "Ne faites pas de bruits suspects près de la fenêtre!" + IDS_MISSION_OBJ_5017 "" + IDS_MISSION_OBJ_5018 "" + IDS_MISSION_OBJ_5019 "" + IDS_MISSION_OBJ_5020 "" + IDS_MISSION_OBJ_5021 "Demandez par radio vos instructions à l'UNION." + IDS_MISSION_OBJ_5022 "Trouvez et sécurisez la cabane de chasse pour qu'elle devienne votre base d'opérations." + IDS_MISSION_OBJ_5023 "Placez trois explosifs sur les étais du pont principal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5024 "Trouvez le relais de communications." + IDS_MISSION_OBJ_5025 "Trouvez la centrale." + IDS_MISSION_OBJ_5026 "Evitez le pont principal menant dans la base." + IDS_MISSION_OBJ_5027 "Minimisez les pertes soviétiques autant que possible." + IDS_MISSION_OBJ_5028 "Sabotez la centrale." + IDS_MISSION_OBJ_5029 "Placez des explosifs à la base de la tour radio." + IDS_MISSION_OBJ_5030 "Placez des explosifs dans la centrale relais." + IDS_MISSION_OBJ_5031 "Sauvez votre pilote et escortez-le hors du camp." + IDS_MISSION_OBJ_5032 "Retournez à la cabane de chasse et attendez la nuit." + IDS_MISSION_OBJ_5033 "Découvrez la nature de la conspiration dont vous avez appris l'existence." + IDS_MISSION_OBJ_5034 "Empêchez les soldats russes de demander de l'aide." + IDS_MISSION_OBJ_5035 "Trouvez les archives centrales." + IDS_MISSION_OBJ_5036 "Placez des explosifs sur la porte extérieure." + IDS_MISSION_OBJ_5037 "Placez des explosifs sur les bidons d'essence dans le garage." + IDS_MISSION_OBJ_5038 "Placez des explosifs sur le réservoir de propane près de la cantine." + IDS_MISSION_OBJ_5039 "Trouvez des informations sur le projet Omega." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5040 "Retournez à l'avion." + IDS_MISSION_OBJ_5041 "Liquidez Nikolai Zhukov." + IDS_MISSION_OBJ_5042 "Retournez au point d'insertion." + IDS_MISSION_OBJ_5043 "Retrouvez les deux pages du rapport de préparation militaire soviétique." + IDS_MISSION_OBJ_5044 "Infiltrez-vous dans les installations." + IDS_MISSION_OBJ_5045 "Trouvez les quatre rapports de dépenses." + IDS_MISSION_OBJ_5046 "Placez des micros dans les quatre téléphones du bâtiment des archives." + IDS_MISSION_OBJ_5047 "Photographiez trois cibles. (TBD)" + IDS_MISSION_OBJ_5048 "Empêchez le C.R.I.M.E. de faire sauter votre avion." + IDS_MISSION_OBJ_5049 "Aidez votre pilote à se dégriser." + IDS_MISSION_OBJ_5050 "Trouvez l'autre page du rapport de situation militaire soviétique." + IDS_MISSION_OBJ_5051 "Retrouvez des documents top secrets dans le coffre du vieux bâtiment des archives." + IDS_MISSION_OBJ_5052 "Prenez du ravitaillement dans l'abri." + IDS_MISSION_OBJ_5053 "Infiltrez le bâtiment principal des archives." + IDS_MISSION_OBJ_5054 "Sauvez votre pilote du C.R.I.M.E." + IDS_MISSION_OBJ_5055 "Trouvez d'autres informations sur ANATOLI." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5056 "" + IDS_MISSION_OBJ_5057 "" + IDS_MISSION_OBJ_5058 "" + IDS_MISSION_OBJ_5059 "" + IDS_MISSION_OBJ_5060 "" + IDS_MISSION_OBJ_5061 "Trouvez des informations sur le projet Omega." + IDS_MISSION_OBJ_5062 "Echappez-vous avec des preuves." + IDS_MISSION_OBJ_5063 "Battez Isako." + IDS_MISSION_OBJ_5064 "Repoussez les attaques des ninjas." + IDS_MISSION_OBJ_5065 "Trouvez tous les enregistrements de voix." + IDS_MISSION_OBJ_5066 "Trouvez toutes les correspondances entre Goodman et M. Smith." + IDS_MISSION_OBJ_5067 "" + IDS_MISSION_OBJ_5068 "" + IDS_MISSION_OBJ_5069 "" + IDS_MISSION_OBJ_5070 "" + IDS_MISSION_OBJ_5071 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5072 "" + IDS_MISSION_OBJ_5073 "" + IDS_MISSION_OBJ_5074 "" + IDS_MISSION_OBJ_5075 "" + IDS_MISSION_OBJ_5076 "" + IDS_MISSION_OBJ_5077 "" + IDS_MISSION_OBJ_5078 "" + IDS_MISSION_OBJ_5079 "" + IDS_MISSION_OBJ_5080 "" + IDS_MISSION_OBJ_5081 "Retrouvez Kamal. Attention à ne pas blesser des innocents ou les policiers dans la zone." + IDS_MISSION_OBJ_5082 "Trouvez un moyen d'entrer dans le QG du C.R.I.M.E.." + IDS_MISSION_OBJ_5083 "Placez un micro dans le téléphone du bureau de Anoop Banerjee, puis écoutez la conversation." + IDS_MISSION_OBJ_5084 "Trouvez la boîte de jonction téléphonique." + IDS_MISSION_OBJ_5085 "Retournez dans le hall d'entrée avant que votre absence soit remarquée." + IDS_MISSION_OBJ_5086 "Trouvez les affiches de recherche avant qu'elles soient vues par des civils." + IDS_MISSION_OBJ_5087 "Infiltrez-vous dans le QG de l'Alliance Maléfique." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5088 "Récupérez le contenu du coffre du responsable." + IDS_MISSION_OBJ_5089 "Placez des explosifs à l'endroit #1." + IDS_MISSION_OBJ_5090 "Placez des explosifs à l'endroit #2." + IDS_MISSION_OBJ_5091 "Placez des explosifs à l'endroit #3." + IDS_MISSION_OBJ_5092 "Placez des explosifs dans le coffre de film de l'Alliance Maléfique." + IDS_MISSION_OBJ_5093 "Echappez-vous du QG de l'Alliance Maléfique." + IDS_MISSION_OBJ_5094 "Trouvez des informations sur le projet Omega dans le coffre principal." + IDS_MISSION_OBJ_5095 "Rendez-vous avec Armstrong." + IDS_MISSION_OBJ_5096 "Suivez Armstrong en lieu sûr." + IDS_MISSION_OBJ_5097 "Fuyez avec Armstrong." + IDS_MISSION_OBJ_5098 "Protégez Armstrong à tout prix." + IDS_MISSION_OBJ_5099 "Appréhendez le roi Mime." + IDS_MISSION_OBJ_5100 "Photographiez les cibles dans le QG du C.R.I.M.E." + IDS_MISSION_OBJ_5101 "Placez des micros dans les trois téléphones du QG du C.R.I.M.E." + IDS_MISSION_OBJ_5102 "Photographiez des documents dans le coffre du mur." + IDS_MISSION_OBJ_5103 "Retrouvez les preuves utilisées pour faire chanter Kamal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5104 "Ne tuez personne ou vous ratez la mission!" + IDS_MISSION_OBJ_5105 "Ne vous faites pas prendre ou vous serez escortée jusqu'à l'entrée et devrez recommencer." + IDS_MISSION_OBJ_5106 "Parlez à Armstrong." + IDS_MISSION_OBJ_5107 "Trouvez Kamal." + IDS_MISSION_OBJ_5108 "Atteignez le niveau inférieur sans tuer personne." + IDS_MISSION_OBJ_5109 "Trouvez le ravitaillement dans la cabine téléphonique à côté du cinéma." + IDS_MISSION_OBJ_5110 "Ne vous faites pas prendre ou la mission sera un échec !" + IDS_MISSION_OBJ_5111 "" + IDS_MISSION_OBJ_5112 "" + IDS_MISSION_OBJ_5113 "" + IDS_MISSION_OBJ_5114 "" + IDS_MISSION_OBJ_5115 "" + IDS_MISSION_OBJ_5116 "" + IDS_MISSION_OBJ_5117 "" + IDS_MISSION_OBJ_5118 "" + IDS_MISSION_OBJ_5119 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5120 "" + IDS_MISSION_OBJ_5121 "Trouvez des informations sur le projet Omega." + IDS_MISSION_OBJ_5122 "Echappez-vous et restez en vie." + IDS_MISSION_OBJ_5123 "Retrouvez les trois pages du rapport médical." + IDS_MISSION_OBJ_5124 "Trouvez d'autres informations sur le Lieutenant Anders." + IDS_MISSION_OBJ_5125 "" + IDS_MISSION_OBJ_5126 "" + IDS_MISSION_OBJ_5127 "" + IDS_MISSION_OBJ_5128 "" + IDS_MISSION_OBJ_5129 "" + IDS_MISSION_OBJ_5130 "" + IDS_MISSION_OBJ_5131 "Sauvez les civils des super soldats." + IDS_MISSION_OBJ_5132 "Protégez Kamal." + IDS_MISSION_OBJ_5133 "" + IDS_MISSION_OBJ_5134 "" + IDS_MISSION_OBJ_5135 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5136 "" + IDS_MISSION_OBJ_5137 "" + IDS_MISSION_OBJ_5138 "" + IDS_MISSION_OBJ_5139 "" + IDS_MISSION_OBJ_5140 "" + IDS_MISSION_OBJ_5141 "Trouvez les lunettes du Dr Schenker." + IDS_MISSION_OBJ_5142 "Débarrassez-vous des intrus." + IDS_MISSION_OBJ_5143 "Trouvez le Dr Schenker." + IDS_MISSION_OBJ_5144 "Protégez les personnels de l'UNION." + IDS_MISSION_OBJ_5145 "Retrouvez les quatre documents égarés." + IDS_MISSION_OBJ_5146 "Désamorcez tous les explosifs." + IDS_MISSION_OBJ_5147 "" + IDS_MISSION_OBJ_5148 "" + IDS_MISSION_OBJ_5149 "" + IDS_MISSION_OBJ_5150 "" + IDS_MISSION_OBJ_5151 "Découvrez où Armstrong est détenu." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5152 "Sauvez Armstrong. Il est gardé prisonnier dans les ponts inférieurs d'une nacelle super soldat." + IDS_MISSION_OBJ_5153 "Trouvez un moyen de quitter la base sous-marine avant qu'elle explose." + IDS_MISSION_OBJ_5154 "Accédez au pont privé du Directeur." + IDS_MISSION_OBJ_5155 "Trouvez des informations sur le sous-marin super secret du C.R.I.M.E." + IDS_MISSION_OBJ_5156 "Trouvez une copie du manuel des employés du C.R.I.M.E." + IDS_MISSION_OBJ_5157 "Triomphez de Pierre." + IDS_MISSION_OBJ_5158 "Obtenez du département super ordinateur le manuel V1.0 du super ordinateur." + IDS_MISSION_OBJ_5159 "Trouvez un formulaire de réquisition 207-B." + IDS_MISSION_OBJ_5160 "Trouvez le manuel d'utilisateur du super-ordinateur v2.0." + IDS_MISSION_OBJ_5161 "Trouvez la valve de la pompe et ouvrez-la." + IDS_MISSION_OBJ_5162 "Trouvez un exemplaire du nouveau slogan du C.R.I.M.E." + IDS_MISSION_OBJ_5163 "Trouvez le sas qui mène au pont de commandement." + IDS_MISSION_OBJ_5164 "" + IDS_MISSION_OBJ_5165 "" + IDS_MISSION_OBJ_5166 "" + IDS_MISSION_OBJ_5167 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5168 "" + IDS_MISSION_OBJ_5169 "" + IDS_MISSION_OBJ_5170 "" + IDS_MISSION_OBJ_5171 "Echappez au piège inutilement élaboré." + IDS_MISSION_OBJ_5172 "Battez Volkov." + IDS_MISSION_OBJ_5173 "Echappez-vous du repère souterrain secret." + IDS_MISSION_OBJ_5174 "Battez Isako." + IDS_MISSION_OBJ_5175 "Trouvez le nouveau plan de relations publiques du C.R.I.M.E." + IDS_MISSION_OBJ_5176 "Trouvez les plans d'invasion de Khios du C.R.I.M.E." + IDS_MISSION_OBJ_5177 "Détruisez le générateur." + IDS_MISSION_OBJ_5178 "Détruisez le super ordinateur." + IDS_MISSION_OBJ_5179 "" + IDS_MISSION_OBJ_5180 "" + IDS_MISSION_OBJ_5181 "Arrêtez l'invasion des super soldats." + IDS_MISSION_OBJ_5182 "Battez le lieutenant des super soldats." + IDS_MISSION_OBJ_5183 "Retrouvez Armstrong au fort." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5184 "Coulez le sous-marin super secret." + IDS_MISSION_OBJ_5185 "" + IDS_MISSION_OBJ_5186 "Hijack a rocket back to Earth" + IDS_MISSION_OBJ_5187 "Get to your car and escape" + IDS_MISSION_OBJ_5188 "Read the note on your windshield" + IDS_MISSION_OBJ_5189 "Survive Volkov's test" + IDS_MISSION_OBJ_5190 "Commandeer the prototype snowmobile" + IDS_MISSION_OBJ_5191 "Head north to the secret facility" + IDS_MISSION_OBJ_5192 "Get aboard the train at Outpost 3" + IDS_MISSION_OBJ_5193 "Discover Danger Danger's intentions" + IDS_MISSION_OBJ_5194 "Secure transportation to the moon" + IDS_MISSION_OBJ_5195 "Recover the launch key" + IDS_MISSION_OBJ_5196 "Retrieve Dr. Mabius" + IDS_MISSION_OBJ_5197 "Hijack a rocket back to Earth before you crash into the sun" + IDS_MISSION_OBJ_5198 "Destroy all four enemy cannons" + IDS_MISSION_OBJ_5199 "Destroy the three remaining enemy cannons" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5200 "Destroy the two remaining enemy cannons" + IDS_MISSION_OBJ_5201 "Destroy the remaining enemy cannon" + IDS_MISSION_OBJ_5202 "Defeat Il Pazzo" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4500 "" + IDS_KEY_ITEM_4501 "Tournevis" + IDS_KEY_ITEM_4502 "Ampoule" + IDS_KEY_ITEM_4503 "Piles mortes" + IDS_KEY_ITEM_4504 "Piles neuves" + IDS_KEY_ITEM_4505 "mallette" + IDS_KEY_ITEM_4506 "Jerrican d'essence" + IDS_KEY_ITEM_4507 "Fusible" + IDS_KEY_ITEM_4508 "Trousseau de clés" + IDS_KEY_ITEM_4509 "Fil" + IDS_KEY_ITEM_4510 "Clé" + IDS_KEY_ITEM_4511 "Bouton de porte" +END + +STRINGTABLE +BEGIN + IDS_GEAR_DESC_1 "Annule les effets du cyanure utilisé dans les cartouches et les carreaux au cyanure." + IDS_GEAR_DESC_2 "Réduit les dégâts des brûlures infligées par les balles au phosphore, la vapeur et les autres sources de chaleur." + IDS_GEAR_DESC_3 "Réduit les dégâts liés au souffle des explosions." + IDS_GEAR_DESC_4 "Réduit les dégâts électriques." + IDS_GEAR_DESC_5 "Réserve d'air pour nager sous l'eau." + IDS_GEAR_DESC_6 "Diminue de moitié le bruit des pas." + IDS_GEAR_DESC_7 "Evite les hémorragies importantes liées aux balles dum dum." + IDS_GEAR_DESC_8 "Protège contre la plupart des dégâts." +END + +STRINGTABLE +BEGIN + IDS_MOD_1 "Silencieux de pistolet automatique McAllister .32" + IDS_MOD_2 "Zoom caméra" + IDS_MOD_3 "Silencieux de carabine RFA Series-4" + IDS_MOD_4 "Silencieux de PM Gordon 9mm" + IDS_MOD_5 "Lunette pour fusil d'assaut AK-47" + IDS_MOD_6 "Lunette pour lanceur Utility" +END + +STRINGTABLE +BEGIN + IDS_MOD_7 "Lunette pour arbalète Vindicator Sportman" + IDS_MOD_8 "Lunette pour Correcteur Bacalov" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25000 "" + IDS_INTEL_25001 "UNUSED" + IDS_INTEL_25002 "Avertissement: couvre-feu du village@AVERTISSEMENT:\n\nUn couvre-feu obligatoire sera effectif ce soir de 18:00 à 6:00. Les résidents qui seront surpris hors de chez eux durant ce couvre-feu seront réprimandés.\n\nHaruko Muroi\nAdministrateur adjoint\nClan ninja Katakuri" + IDS_INTEL_25003 "Mémo du clan ninja: patrouilles@A tous les membres du clan:\n\nNous pensons que l'espion va entrer par l'est dans le village, car c'est là que sont concentrées la plupart des meilleures attractions touristiques. Mais il est également possible que l'espion arrive par les chutes d'eau. Présentez-vous à vos postes promptement ce soir. Il est recommandé de manger avant de prendre votre tour de garde, car notre budget nourriture a été dépensé lors de l'attaque du QG du clan Oshii le mois dernier.\n\nHaruko Muroi\nAdministrateur adjoint" + IDS_INTEL_25004 "Dossier UNION: ninjas@Cate,\n\nBien que nous n'avons que peu d'informations concernant le clan ninja de Inotakimura, nous avons quelques détails à vous communiquer: \n\n- les ninjas sont entraînés pour couvrir de longues distances et frapper leurs ennemis.\n\n- Ils utilisent des bombes de fumigènes pour disparaître, avant de souvent réapparaître à côté de leurs ennemis pour les attaquer par surprise.\n\nJ'espère que ces informations vous seront utiles. Prenez soin de vous.\n\nBruno Lawrie\nAgent senior\nDivision des opérations spéciales de l'UNION" + IDS_INTEL_25005 "Mémo UNION: objectifs bonus@Agent Archer,\n\nParfois, vous aurez l'occasion de remplir des missions secondaires pour gagner des points de compétence supplémentaires. Cherchez des objets de renseignements comme des notes, des mallettes ou des lettres.\n\nVoici un type d'objectif secondaire simple: j'ai éparpillé six pages du manuel de l'UNION dans la zone. Retrouvez-les avant de continuer.\n\nSanta,\nDirecteur des gadgets\nDivision création de jouets de l'UNION" + IDS_INTEL_25006 "Manuel de l'UNION: fouiller@FOUILLER\n\nLes ennemis transportent souvent des objets de valeur, comme des munitions, des morceaux d'armure, des trousses de soins ou des documents importants. Pensez donc bien à les fouiller en utilisant la commande Action jusqu'à ce que la jauge de progression disparaisse. Il est conseillé de tirer vos victimes dans la pénombre ou un endroit tranquille avant de les fouiller, pour ne pas attirer l'attention.\n\nVous pouvez également fouiller les tiroirs ou les piles de documents pour trouver des objets de renseignement. C'est souvent à l'issue des fouilles que vous aurez des objectifs complémentaires à atteindre." + IDS_INTEL_25007 "Manuel de l'UNION: ennemis inconscients@ENNEMIS INCONSCIENTS\n\nVos ennemis qui sont inconscients, par exemple à la suite de l'utilisation du tazer, finiront par se relever. Ils peuvent également être réveillés par leurs camarades.\n\nVous pouvez désarmer les ennemis inconscients en les fouillant. Ils ne seront alors plus une menace à moins qu'ils ne trouvent une arme de remplacement." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25008 "Manuel de l'UNION: commande Action@COMMANDE ACTION\n\nQuand vous visez un objet ou un personnage avec qui vous pouvez agir, un texte s'affiche au centre de l'écran pour vous dire ce qui va se produire si vous utilisez la commande Action (par défaut: bouton droit de la souris). Si le texte est grisé, cela signifie que certaines conditions nécessaires pour interagir ne sont pas encore remplies. Par exemple, vous devrez crocheter une porte verrouillée ou trouver quelque chose avant de l'ouvrir.\n\nLa commande Action vous permet également de recharger votre arme (si c'est possible) lorsque vous ne visez rien en particulier." + IDS_INTEL_25009 "Manuel de l'UNION: se cacher@SE CACHER\n\nLorsque vous arrivez à un endroit où il est possible de se cacher, vous verrez une icône le signalant. Si vous vous tenez parfaitement immobile, vous vous y cacherez. Les ennemis ne vous verront alors qu'à bout portant. Vous restez caché tant que vous restez dans la cachette ou que vous ne vous déplacez pas rapidement ni n'utilisez une arme.\n\nSi vous ne pouvez pas vous cacher parce qu'un ennemi sait que vous êtes là, l'icône sera barrée." + IDS_INTEL_25010 "Manuel de l'UNION: objets de renseignement@OBJETS DE RENSEIGNEMENT\n\nPensez toujours à chercher les documents importants. Certains peuvent contenir des informations essentielles à la réussite de votre mission.\n\nVous pouvez lire les documents que vous trouvez à tout moment en accédant à l'écran de renseignement. (par défaut: I)." + IDS_INTEL_25011 "Manuel de l'UNION: quitter une zone 1@QUITTER UNE ZONE, CHAP. 1\n\nLorsque vous voyez une icône de porte, cela signifie que vous approchez de la fin de la zone. Avancez vers la sortie, mais seulement si vous avez terminé votre exploration." + IDS_INTEL_25012 "Mémo UNION: cadeaux@Agent Archer,\n\nAutant que cela est possible, je vous laisserai du matériel et des munitions sur les sites de mission. Il est devenu traditionnel que les cadeaux de Santa soient enveloppés comme des cadeaux de noël.\n\nJe vous assure que l'idée ne vient pas de moi!\n\nSanta" + IDS_INTEL_25013 "Rappel: état de mission@ECRAN DE MISSION\n\nConsultez l'écran de mission (par défaut: Tab) pour en savoir plus sur votre objectif actuel. Vous y verrez vos objectifs actuels, que vous devez accomplir pour terminer la mission. Les objectifs secondaires (des missions qui ne sont pas obligatoires mais que vous pouvez accomplir pour avoir des points de compétence supplémentaires) sont également présentés, ainsi que les Paramètres, à savoir les règles à suivre. Si vous ne respectez pas les paramètres de la mission, vous n'aurez pas autant de points de compétence et vous risquez même de faire rater la mission." + IDS_INTEL_25014 "Rappel: écran d'équipement@ECRAN D'EQUIPEMENT\n\nLorsque vous trouvez de nouvelles armes, gadgets ou munitions, pensez à consulter l'écran d'équipement (par défaut: ,), pour plus de renseignements à leur sujet. Cet écran vous permet également de sélectionner des équipements, des munitions ou des fonctions de gadget et le jeu est en pause quand vous le consultez." + IDS_INTEL_25015 "Rappel: points de compétence@POINTS DE COMPETENCE\n\nVous serez récompensé de points de compétence pour avoir surmonté certains obstacles ou avoir accompli certains objectifs. Dans l'écran de joueur (par défaut: P), vous pouvez dépenser ces points pour améliorer vos compétences. Réfléchissez à comment vous voulez jouer avant d'investir vos points." + IDS_INTEL_25016 "Rappel: neutraliser vos ennemis@NEUTRALISER LES ENNEMIS\n\nVous pouvez éliminer les ennemis discrètement avec des armes silencieuses, comme le Tazer, l'arbalète ou un pistolet avec silencieux. Si vos ennemis sont alertés de votre présence, ou s'ils hurlent parce qu'ils sont blessés, ils vont attirer l'attention." + IDS_INTEL_25017 "Rappel: déplacer les corps@DEPLACER LES CORPS\n\nVos ennemis seront alarmés s'ils découvrent un camarade au sol. Mais vous pouvez déplacer les corps des ennemis inconscients ou morts pour les déposer à un endroit où personne ne les trouvera en utilisant la commande associée (par défaut: G). Vous ne pouvez pas courir ou utiliser une arme lorsque vous portez un corps, faites attention." + IDS_INTEL_25018 "Rappel: Distractions@DISTRACTIONS\n\nVos ennemis ne sont pas sourds, et vous devez donc apprendre à progresser sans bruit. En vous déplaçant furtivement (par défaut: Maj gauche), ils ne vous entendront pas venir. De plus, certains matériaux (comme l'herbe, la moquette ou la neige) atténuent le bruit de vos pas, tandis que d'autres (métal ou carrelage par exemple), les amplifient.\n\nEvitez également de faire sonner des cloches ou de renverser une bouteille, car cela attirera sans doute l'attention." + IDS_INTEL_25019 "Rappel: se pencher@SE PENCHER\n\nEn vous penchant au coin des murs, vous pouvez voir ce qui vous attend de l'autre côté (par défaut: A et E). Ne regardez pas trop longtemps, ou vous risquez d'attirer l'attention." + IDS_INTEL_25020 "" + IDS_INTEL_25021 "Manuel de l'UNION: boussole@BOUSSOLE\n\nEn plus de vous permettre de vous orienter dans votre environnement, la boussole vous fournit d'autres informations utiles. L'icône d'objectif vous indique les endroits essentiels à votre mission. Vous pourrez également parfois voir un X, qui indique un point de navigation ou une destination importante." + IDS_INTEL_25022 "Mémo clan ninja: Cate Archer@ATTENTION A TOUS LES MEMBRES DU CLAN\n\nSurveillez tous agissements de l'agent de l'UNION Cate Archer. Signalez immédiatement sa présence à Takashi-san. \n\nHaruko Muroi\nAdministrateur adjoint" + IDS_INTEL_25023 "Manuel de l'UNION: Difficulté@DIFFICULTE\n\nSouvenez-vous que vous pouvez régler la difficulté de votre mission à tout moment depuis le menu des Options, dans Jeu et en modifiant le réglage de difficulté. La difficulté influe principalement sur les dégâts que vous infligent vos ennemis. Si vous en avez assez de ne pas avancer ou que le jeu vous semble trop facile, essayez de modifier la difficulté." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4750 "" + IDS_KEY_DESC_4751 "Un tournevis à tête plate rouillé." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4752 "Une ampoule de 60 Watts." + IDS_KEY_DESC_4753 "De vieilles piles AA. Elles ont l'air à plat." + IDS_KEY_DESC_4754 "Des piles AA neuves." + IDS_KEY_DESC_4755 "Une malette à livrer à Hatori-san." + IDS_KEY_DESC_4756 "Ce carburant peut servir pour la moto-neige." + IDS_KEY_DESC_4757 "Ce fusible semble en bon état." + IDS_KEY_DESC_4758 "Un trousseau de clés standard avec plusieurs clés." + IDS_KEY_DESC_4759 "Un fil de cuivre pour les travaux électriques." + IDS_KEY_DESC_4760 "Une solide clé. Elle est utile quand vous ne pouvez pas faire le travail à mains nues." + IDS_KEY_DESC_4761 "Un bouton de porte. Ca peut servir pour remplacer un bouton de porte manquant ou cassé." + IDS_KEY_DESC_4762 "Le marteau d'un carillon de vent." + IDS_KEY_DESC_4763 "Un seau vide. Il pourrait contenir de l'eau." + IDS_KEY_DESC_4764 "La poignée d'un robinet." + IDS_KEY_DESC_4765 "Version 1.0 du manuel d'utilisation du super-ordinateur. Liste les procédures d'utilisation du super-ordinateur." + IDS_KEY_DESC_4766 "Ce formulaire de réquisition 207-B a été rempli pour faire une demande de manuel de super-ordinateur." + IDS_KEY_DESC_4767 "Version 2.0 du manuel d'utilisation du super-ordinateur. Liste les procédures d'utilisation mises à jour du super-ordinateur." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4512 "Marteau de carillon" + IDS_KEY_ITEM_4513 "Seau" + IDS_KEY_ITEM_4514 "Poignée de robinet" + IDS_KEY_ITEM_4515 "Manuel super ordinateur v1.0" + IDS_KEY_ITEM_4516 "Formulaire de réquisition 207-B" + IDS_KEY_ITEM_4517 "Manuel d'utilisation, version v2.0" + IDS_KEY_ITEM_4518 "Badge du C.R.I.M.E." + IDS_KEY_ITEM_4519 "Tube d'ordinateur" + IDS_KEY_ITEM_4520 "Sac de sucre" + IDS_KEY_ITEM_4521 "Gadget pirateur" + IDS_KEY_ITEM_4522 "Mot de passe M-9: Piroshki" + IDS_KEY_ITEM_4523 "Bande 689 M-9: projet Omega" + IDS_KEY_ITEM_4524 "Des roupies" + IDS_KEY_ITEM_4525 "Clés de motoneige" + IDS_KEY_ITEM_4526 "UNITE DE TRAITEMENT DES DONNEES M-9" + IDS_KEY_ITEM_4527 "Code de sécurité M-9" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5500 "" + IDS_COOP_MISSION_OBJ_5501 + "Localisez Balaji Malpani et photographiez-le. Son appartement est un bon endroit pour commencer." + IDS_COOP_MISSION_OBJ_5502 + "Rendez-vous au point d'extraction au café à côté de l'appartement de Balaji." + IDS_COOP_MISSION_OBJ_5503 + "Retrouvez votre équipe à la cabane de l'UNION et contactez le QG par radio pour connaître vos instructions." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5504 + "Détruisez l'ordinateur en vous infiltrant dans l'installation et en plaçant 4 charges d'explosifs." + IDS_COOP_MISSION_OBJ_5505 + "Détruisez l'ordinateur en plaçant des charges d'explosifs. 3 cibles restantes." + IDS_COOP_MISSION_OBJ_5506 + "Détruisez l'ordinateur en plaçant des charges d'explosifs. 2 cibles restantes." + IDS_COOP_MISSION_OBJ_5507 + "Détruisez l'ordinateur en plaçant des charges d'explosifs. 1 cible restante." + IDS_COOP_MISSION_OBJ_5508 + "Trouvez des données complémentaires sur le projet Super Soldat." + IDS_COOP_MISSION_OBJ_5509 + "Retournez à la cabane de l'UNION et contactez le QG à la radio pour l'extraction." + IDS_COOP_MISSION_OBJ_5510 + "Trouvez Cate. Son dernier rapport de situation la plaçait à côté d'une chute d'eau à l'extérieur du village." + IDS_COOP_MISSION_OBJ_5511 "Retournez au point d'extraction avec Cate." + IDS_COOP_MISSION_OBJ_5512 + "Trouvez le générateur et réactivez l'électricité pour toutes les portes de la zone." + IDS_COOP_MISSION_OBJ_5513 + "Trouvez un moyen d'entrer dans l'appartement de Balaji. Cherchez un trousseau de clés de rechange ou un outil de crochetage." + IDS_COOP_MISSION_OBJ_5514 + "Trouvez un point de vue depuis lequel photographier Balaji dans l'appartement de sa maîtresse." + IDS_COOP_MISSION_OBJ_5515 "" + IDS_COOP_MISSION_OBJ_5516 "Localisez et sauvez Armstrong." + IDS_COOP_MISSION_OBJ_5517 + "Trouvez des informations pour savoir où le C.R.I.M.E. a emmené Armstrong." + IDS_COOP_MISSION_OBJ_5518 + "Trouvez des cibles appropriées et placez 6 charges." + IDS_COOP_MISSION_OBJ_5519 + "Trouvez des cibles appropriées et placez 5 charges." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25024 "Manuel de l'UNION: Enregistrer@ENREGISTRER\n\nSouvenez-vous d'enregistrer vos progrès de temps en temps, soit via l'option Enregistrer dans le menu Système, soit en utilisant la sauvegarde rapide (F6). De plus, souvenez-vous que vos progrès sont automatiquement enregistrés lorsque vous entrez dans une nouvelle zone, ce qui vous permet de recommencer au début de la mission si nécessaire." + IDS_INTEL_25025 "Manuel des espions: Distractions@DISTRACTIONS\n\nUn des moyens les plus efficace de passer sans se faire remarquer consiste à attirer l'attention de l'ennemi ailleurs, par exemple en utilisant une pièce de monnaie dans une allée sombre pour les attirer loin de leurs postes. Si la présence d'un potentiel intrus peut ne pas suffire à les attirer, le bruit distinctif d'une pièce qui tombe au sol le fera sans aucun doute. Si vous n'avez pas de pièce, vous pouvez improviser en utilisant votre arbalète. Ne faites pas trop de raffut ou vous risquez d'alarmer vos ennemis." + IDS_INTEL_25026 "Mémo clan ninja: RDV déplacé@IMPORTANT! A LIRE!\n\nA la demande du Directeur, le rendez-vous de ce soir a été déplacé pour se tenir à nouveau à la résidence principale. Assurez-vous de lire le nouveau plan de patrouilles pour éviter les confusions. Si vous patrouillez dans une zone que vous ne connaissez pas, prenez note de l'emplacement des toilettes appropriées dans votre secteur.\n\nHaruko Muroi\nAdministrateur adjoint" + IDS_INTEL_25027 "UNUSED" + IDS_INTEL_25028 "UNUSED" + IDS_INTEL_25029 "UNUSED" + IDS_INTEL_25030 "Carte: Maison@" + IDS_INTEL_25031 "Note de Hatori-san: Instructions@Agent Archer\n\nJ'ai laissé des instructions vous expliquant où et comment me contacter. Pour des raisons de sécurité, j'ai caché quatre notes codées dans le voisinage. Chacune contient une partie du message. Ainsi, si l'une des notes est découverte et décodée, ma sécurité ne sera pas compromise.\n\nJ'ai également camouflé un Pirateur à côté d'un distributeur.\n\nIsamu Hatori" + IDS_INTEL_25032 "Note de Hatori-san: Rendez-vous@Je vous retrouverai au magasin de friandises à l'ouest du quartier. Cherchez l'enseigne avec une grue." + IDS_INTEL_25033 "Note de Hatori-san: Boîte aux lettres rouge@Il y a trois boîtes aux lettres devant le magasin. Vous devez les organiser dans le bon ordre pour me prévenir.\n\nLa boîte aux lettres rouge doit être ouverte." + IDS_INTEL_25034 "Note de Hatori-san: Boîte aux lettres grise@Il y a trois boîtes aux lettres devant le magasin. Vous devez les organiser dans le bon ordre pour me prévenir.\n\nLa boîte aux lettres grise doit être fermée." + IDS_INTEL_25035 "Note de Hatori-san: Boîte aux lettres bleue@Il y a trois boîtes aux lettres devant le magasin. Vous devez les organiser dans le bon ordre pour me prévenir.\n\nLa boîte aux lettres bleue doit être ouverte." + IDS_INTEL_25036 "Mémo du clan ninja: Plaintes@A tous les membres du clan:\n\nNous avons été prévenus que certains d'entre vous ne sont pas satisfaits de leur affectation actuelle. Je sais que le Directeur n'est pas une personne des plus faciles. Mais souvenez-vous qu'Isako-san a une dette d'honneur envers lui. Acceptez ces désagréments pour l'honneur de notre clan.\n\nSi cela vous pose un problème, contactez Obaba qui finalise actuellement sa production de poison.\n\nYamata Shena\nResponsable psychologique" + IDS_INTEL_25037 "Note: Livraison d'une valise@Agent Archer\n\nVeuillez livrer cette valise à Hatori-san aussi rapidement que possible. Elle contient des informations pertinentes au sujet de votre prochaine mission.\n\nSanta" + IDS_INTEL_25038 "UNUSED" + IDS_INTEL_25039 "Manuel des espions@MANUEL D'ENTRAINEMENT DES ESPIONS" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25040 "" + IDS_INTEL_25041 "Lettre d'Isako: page 1@A: Hideko Sato\nDe: Isako, chef du clan ninja Katakuri\n\nJe vous remercie de votre inquiétude, mais je ne peux pas accepter votre offre généreuse. Comme vous le savez, j'ai une dette d'honneur envers le Directeur. Je ne peux pas rester sans rien faire et le laisser tuer, même si sa mort me libérait. Ma conscience ne pourrait supporter une telle trahison." + IDS_INTEL_25042 "Lettre d'Isako: page 2@Peut-être que les circonstances de mon obligation vous permettront de mieux comprendre mon raisonnement. Lorsque mes parents ont été assassinés, une vieille femme m'a trouvé dans les rues de Kyoto. Sa mauvaise santé ne lui permettait pas de s'occuper de moi, mais elle parvint à convaincre sa fille, qui dirigeait à l'époque le clan ninja Sakuragaoka, de me prendre en charge et de me former." + IDS_INTEL_25043 "Lettre d'Isako: page 3@Quand j'ai eu 14 ans, on m'a confié ma première mission: assassiner un marchand avide qui volait des jeunes filles à leurs familles pour les prostituer dans des repaires de malfrats. C'était une tâche simple, mais j'ai été capturée avant de pouvoir le tuer, ayant été trahie par l'homme qui avait commandé l'assassinat lui-même. Il nous avait piégé afin de pouvoir me prendre et ainsi gagner l'estime de son maître." + IDS_INTEL_25044 "Lettre d'Isako: page 4@Avant que le marchand n'ait pu me mettre à mort, son ami européen est intervenu, demandant que je sois épargnée et que je travaille pour lui. Le marchand accepta et le Directeur, puisque c'est de lui qu'il s'agit, devint mon nouveau maître. Ainsi, comprenez-vous, cela me désole, mais je lui dois ma vie et je dois lui rembourser sa générosité, bien qu'il ait agit par intérêt personnel. Mais je vous remercie très humblement pour votre inquiétude.\n\nIsako" + IDS_INTEL_25045 "Manuel des espions@MANUEL D'ENTRAINEMENT DES ESPIONS" + IDS_INTEL_25046 "Note de Hatori-san: excuses@Agent Archer,\n\nJe ne peux pas rester dans le secteur, il y a trop d'activité ninja. Retournez au pont, où Yamata-san vous attend.\n\nSoyez très prudente. Je n'ai jamais vu le clan si déterminé.\n\nIsamu Hatori" + IDS_INTEL_25047 "Mémo UNION: parler avec des gens@Agent Archer\n\nParlez toujours aux personnes identifiées comme des amis, pour voir s'ils ont des informations utiles à vous communiquer. Vous devrez peut-être leur parler plusieurs fois pour savoir tout ce qu'ils ont à vous dire.\n\nSanta" + IDS_INTEL_25048 "Lettre: le Directeur@Cher M. Jones,\n\nJ'ai trouvé des informations sur ce mystérieux anglais. D'après nos sources, il a acheté la maison Fujioka il y a plus de dix ans. Il aurait dit qu'il venait au Japon car c'est très éloigné de l'Angleterre, mais personne ne sait en quoi cela est important pour lui. Je vais continuer mes recherches.\n\nIsamu Hatori" + IDS_INTEL_25049 "Lettre: anniversaire d'Isako@Ma chère Isako,\n\nJe sais que je n'ai pas été le parrain idéal et que vous me servez plus par sens du devoir que par fidélité. Je ne peux pas vous en blâmer. Toutefois, j'espère que vous comprenez à quel point vous êtes importante pour moi.\n\nL'honneur et la compétence sont des vertues déjà rares parmi ces hypocrites arrogants que nous terrorisons. Dans notre métier, elles sont encore plus rares.\n\nBon anniversaire.\n\nLe Directeur" + IDS_INTEL_25050 "Note: Isako et le Directeur@Honorable administrateur adjoint,\n\nLa nuit dernière, j'étais de garde dans le bâtiment principal. Alors que je patrouillais sur le toit, j'ai entendu rire à travers une fenêtre ouverte. Le Directeur était en train d'expliquer à ses invités les manipulations auxquelles il devait se livrer pour se concilier ses loyaux serviteurs ninjas. Il disait que comme un chien, Isako est facile à rendre docile. Il suffit de lui faire montre d'un peu de considération paternelle. Vous devez lui DIRE! Cet homme est insupportable.\n\nMasayo" + IDS_INTEL_25051 "Note: Marques de craie@Agent Archer,\n\nHatori-san nous a informés qu'il a observé un ninja dessiner des marques à la craie devant trois bâtiments du secteur. Nous pensons que ces marques sont destinées aux agents qui lâchent des informations ou des objets de renseignement utiles.\n\nEssayez de localiser et d'effacer ces marques, pour que nous puissions choisir d'autres sites de livraison.\n\nSanta" + IDS_INTEL_25052 "Note: Patience@Masayo-san\n\nJe comprends et je partage votre frustration, mais la patience est une vertue. Le sens de l'honneur est très important pour Isako-san. Des rumeurs ne suffiront pas à la convaincre d'en faire abstraction. Je le sais par expérience. Un jour, il va se trahir. Tout ce que je peux faire, c'est m'assurer qu'il a toujours assez de saké sous la main pour que sa langue reste déliée.\n\nHaruko Muroi\nAdministrateur adjoint" + IDS_INTEL_25053 "Note de Hatori-san: attention@Agent Archer,\n\nLorsque vous arriverez sur zone, attention à ne pas faire trop de bruit! Si vous êtes repérée, vous n'aurez pas la possibilité de photographier le Directeur. Ce serait dommage de rater quelques points de compétence en voulant aller trop vite.\n\nIsamu Hatori" + IDS_INTEL_25054 "Mémo UNION: lanceur utilitaire@Agent Archer,\n\nLe lanceur utilitaire CT-180 est l'un de nos outils les plus polyvalents. Sa munition standard est un outil de pistage qui indique la position de votre cible sur la boussole. La fléchette est suffisamment légère pour que vos ennemis ne remarquent pas qu'ils ont été touchés. \n\nSanta" + IDS_INTEL_25055 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25056 "UNUSED" + IDS_INTEL_25057 "UNUSED" + IDS_INTEL_25058 "UNUSED" + IDS_INTEL_25059 "UNUSED" + IDS_INTEL_25060 "" + IDS_INTEL_25061 "Mémo clan ninja: alerte@Tous les membres du clan doivent être en état d'alerte maximal! L'espion n'a toujours pas été pris! Placez des barrages routiers aux approches sud et est!\n\nNe la laissez pas s'échapper!\n\nHaruko Muroi\nAdministrateur adjoint" + IDS_INTEL_25062 "Mémo clan ninja: l'espion@ATTENTION A TOUS LES MEMBRES DU CLAN\n\nJe veux que l'espion meurt honorablement et rapidement. Le Directeur et ses hommes ne doivent tirer aucune satisfaction de sa mort.\n\nIsako" + IDS_INTEL_25063 "Note: Emiko en retard@Emiko,\n\nOù es-tu? L'alarme a sonné et tout le monde doit se rendre à la Maison. Si tu as cette note, dépêche-toi avant qu'Isako-san remarque que tu n'es pas là!\n\nYukiko" + IDS_INTEL_25064 "Manuel des espions@MANUEL D'ENTRAINEMENT DES ESPIONS" + IDS_INTEL_25065 "Mémo clan ninja: Cate Archer@ATTENTION A TOUS LES MEMBRES DU CLAN\n\nLa cible de l'opération de ce soir est Cate Archer, l'espion britannique. Ne la sous-estimez pas.\n\nOh, et faites-la souffrir.\n\nLe Directeur" + IDS_INTEL_25066 "UNUSED" + IDS_INTEL_25067 "UNUSED" + IDS_INTEL_25068 "UNUSED" + IDS_INTEL_25069 "" + IDS_INTEL_25070 "Mémo clan ninja: lecture de poésie en punition@ATTENTION A TOUS LES MEMBRES DU CLAN\n\nLe Directeur a indiqué que si l'espion venait à s'échapper, le clan entier serait sujet à une récitation de poésie en punition, tirée des oeuvres de sa mère, notamment " + IDS_INTEL_25071 "Mémo clan ninja: annulation de la soirée@ATTENTION A TOUS LES MEMBRES DU CLAN\n\nEn raison de la situation d'urgence, nous devons remettre la soirée d'anniversaire de Mikiko-san à demain soir.\n\nHaruko Muroi\nAdministrateur adjoint" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25072 "UNUSED" + IDS_INTEL_25073 "UNUSED" + IDS_INTEL_25074 "UNUSED" + IDS_INTEL_25075 "UNUSED" + IDS_INTEL_25076 "UNUSED" + IDS_INTEL_25077 "UNUSED" + IDS_INTEL_25078 "UNUSED" + IDS_INTEL_25079 "UNUSED" + IDS_INTEL_25080 "" + IDS_INTEL_25081 "Manuel de l'UNION: quitter une zone 2@QUITTER UNE ZONE, CHAPITRE 2\n\nUne icône de porte avec une flèche dans les deux sens indique que vous pouvez revenir dans une zone après l'avoir quittée. Parfois, vous devrez sortir et revenir dans des zones pour surmonter certains obstacles ou accomplir certains objectifs." + IDS_INTEL_25082 "CARTE: terrain de la base@" + IDS_INTEL_25083 "Mémo soviétique: noyade@A: Tous les personnels\n\nDe: Ressources humaines\nLa productivité de notre grande installation chute en raison de la noyade inévitable de nos camarades Zymlyanoi et Alexey. Les patrouilles n'ont plus le droit d'emprunter des raccourcis en passant sur le lac gelé jusqu'à nouvel ordre.\n\nVous êtes surveillés." + IDS_INTEL_25084 "UNUSED" + IDS_INTEL_25085 "Mémo UNION: torche@Agent Archer,\n\nJ'ai ajouté un petit quelque chose à votre laque. Utilisez la bombe de laque pour découper certains types de verrous et de charnières en métal. Bonne chance!\n\nSanta" + IDS_INTEL_25086 "Paperasse soviétique: Cigarettes@A TOUS LES PERSONNELS\n\nAnnexe 90/C4 du Manuel personnel d'hygiène et de santé (volume 7, page 3483). La ration quotidienne en cigarettes est de 18 par homme. Dépasser cette limite est passible de la peine de mort, à moins que les cigarettes soient volées (passible de torture et de peine de mort) ou offerte par un camarade (passible de torture mais pas de mort). Les personnels qui dépassent cette limite seront exécutés.\n\nVous êtes surveillés." + IDS_INTEL_25087 "Mémo UNION: briefing de mission@Agent Archer\n\nD'après nos renseignements, il sera plus facile d'entrer que de sortir. Votre premier objectif consiste donc à saboter les communications et les centrales ennemies.\n\nVous devrez également placer des charges sur un pont proche de votre position, pour les faire exploser à votre retour. Détruire le pont devrait permettre d'empêcher toute poursuite.\n\nJ'ai indiqué la position d'une cabane de chasse où nous avons déposé du ravitaillement pour vous, notamment un fusil de précision qui peut être utile.\n\nSanta." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25088 "Mémo UNION: lanceur utilitaire@Agent Archer,\n\nVous trouverez ci-joint un lanceur utilitaire avec 10 fléchettes tranquillisantes réutilisables. Chaque fléchette contient un puissant sédatif qui endort immédiatement la cible. Remarquez qu'un ennemi endormi finira par se réveiller.\n\nVous pouvez Changer de munitions (par défaut: F) pour utiliser un outil de pistage à la place. Souvenez-vous que vous pouvez également changer de munitions dans l'écran d'équipement quand le jeu est en pause.\n\nSanta" + IDS_INTEL_25089 "UNUSED" + IDS_INTEL_25090 "UNUSED" + IDS_INTEL_25091 "UNUSED" + IDS_INTEL_25092 "UNUSED" + IDS_INTEL_25093 "UNUSED" + IDS_INTEL_25094 "UNUSED" + IDS_INTEL_25095 "UNUSED" + IDS_INTEL_25096 "UNUSED" + IDS_INTEL_25097 "UNUSED" + IDS_INTEL_25098 "UNUSED" + IDS_INTEL_25099 "UNUSED" + IDS_INTEL_25100 "" + IDS_INTEL_25101 "Mémo UNION: cabane de chasse@Agent Archer,\n\nTrouvez le ravitaillement que nous avons laissé pour vous.\n\nLorsque vous aurez accompli vos objectifs, revenez-y et envoyez un message radio au QG. Vous avez intérêt à attendre le soir pour entrer dans le complexe militaire.\n\nSanta" + IDS_INTEL_25102 "UNUSED" + IDS_INTEL_25103 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25104 "UNUSED" + IDS_INTEL_25105 "UNUSED" + IDS_INTEL_25106 "UNUSED" + IDS_INTEL_25107 "UNUSED" + IDS_INTEL_25108 "UNUSED" + IDS_INTEL_25109 "UNUSED" + IDS_INTEL_25110 "UNUSED" + IDS_INTEL_25111 "UNUSED" + IDS_INTEL_25112 "UNUSED" + IDS_INTEL_25113 "UNUSED" + IDS_INTEL_25114 "UNUSED" + IDS_INTEL_25115 "UNUSED" + IDS_INTEL_25116 "UNUSED" + IDS_INTEL_25117 "UNUSED" + IDS_INTEL_25118 "UNUSED" + IDS_INTEL_25119 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25120 "" + IDS_INTEL_25121 "Paperasse soviétique: consommation de café@A: tous les personnels\n\nAnnexe 90/C-4 du manuel d'hygiène et de santé (volume 12, page 4). Il est indiqué que chaque soldat doit consommer précisément 9 tasses de café par jour. Les personnels qui rallongent leur café avec de l'eau ou d'autres substances seront abattus à vue. Quiconque sera pris en train de jeter son café dans des plantes ou dans les toilettes sera exécuté par injection. Donner votre café à un chien est passible d'une punition d'archivage au bâtiment principal des archives.\n\nVous êtes surveillés." + IDS_INTEL_25122 "Mémo soviétique: demande d'accès M-9@Lieutenant Guniko,\n\nJe vous écris pour demander l'accès à une unité de traitement des données M-9 dans le bâtiment principal des archives. J'ai été affecté au projet Omega, mais je ne peux pas me présenter sans le niveau d'accréditation suffisant. J'ai déjà soumis plusieurs demandes d'accréditation, mais elles ont été refusées car je n'ai pas accès à une unité de traitement des données M-9. Je ne sais pas quelle procédure suivre.\n\nMes respects,\nCaporal Butsenko" + IDS_INTEL_25123 "Mémo soviétique: refus d'accès M-9@Caporal Butsenko,\n\nj'ai peur de devoir refuser de vous donner accès à l'unité de traitement des données M-9. Je comprends les difficultés que vous rencontrez, mais je n'ai pas l'autorité suffisante pour accorder l'accès à ceux qui n'ont pas déjà accès à l'unité de traitement des données M-9. Lorsque vous aurez obtenu l'autorisation requise, je vous donnerai l'autorisation requise. J'espère que ces informations ont clarifié les choses.\n\nLieutenant Guniko" + IDS_INTEL_25124 "UNUSED" + IDS_INTEL_25125 "UNUSED" + IDS_INTEL_25126 "UNUSED" + IDS_INTEL_25127 "Document: partie du rapport de situation militaire\n\nChapitre I. Informations de contexte\n\nCe rapport a été préparé à la demande du général Nikolai Zhukov, qui est un excellent général et un de mes héros préférés. Saviez-vous que le général Zhukov est un vétéran décoré de la grande guerre patriotique? C'est vrai! C'est également un grand botaniste qui s'intéresse tout particulièrement aux plantes crucifères, que j'aime beaucoup. Notamment les blettes." + IDS_INTEL_25128 "UNUSED" + IDS_INTEL_25129 "UNUSED" + IDS_INTEL_25130 "Paperasse soviétique: demande de carburant@FORMULAIRE DE REQUISITION J-9:\n\n1. Objet(s) demandé(s): carburant pour véhicules, 10 barils.\n2. Raison de la demande: ravitaillement inadéquat.\n3. En faisant cette demande, suggérez-vous que l'Union Soviétique ne répond pas à vos besoins.? \n\n( )Oui (x)Non" + IDS_INTEL_25131 "UNUSED" + IDS_INTEL_25132 "UNUSED" + IDS_INTEL_25133 "UNUSED" + IDS_INTEL_25134 "UNUSED" + IDS_INTEL_25135 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25136 "UNUSED" + IDS_INTEL_25137 "UNUSED" + IDS_INTEL_25138 "UNUSED" + IDS_INTEL_25139 "UNUSED" + IDS_INTEL_25140 "" + IDS_INTEL_25141 "Rapport soviétique: BLINDSIDE@A: Général Zhukov\nDe: KLAUS\n\nBLINDSIDE progresse selon les plans. De toutes nos illustres opérations contre le Grand Adversaire, aucune n'a été aussi audacieuse ou ambitieuse. Nous avons la garantie d'obtenir la victoire absolue de l'Union Soviétique et l'humiliation totale de nos ennemis. Je vous recontacterai lorsque j'aurai pris contact avec Monsieur BIG et lui aurait fait part de notre proposition. Je suis certain qu'il sera très réceptif à notre offre généreuse." + IDS_INTEL_25142 "Rapport soviétique: BLINDSIDE à l'arrêt@A: Général Zhukov\nDe: KLAUS\n\nBLINDSIDE est à l'eau. Je soupçonne une trahison, car mes tentatives de prendre contact avec monsieur BIG se sont toutes soldées par un échec. Le Grand Adversaire doit avoir eu vent de nos intentions de recruter le président Johnson, ce qui explique pourquoi je ne parviens pas à avoir de rendez-vous avec lui. Je suis certain qu'une entrevue de cinq minutes aurait suffit à le gagner à notre cause, mais les Américains sont très retors. N'ayez confiance en personne." + IDS_INTEL_25143 "Manuel d'entraînement des espions@MANUEL D'ENTRAINEMENT DES ESPIONS" + IDS_INTEL_25144 "UNUSED" + IDS_INTEL_25145 "UNUSED" + IDS_INTEL_25146 "Document: rapport de situation militaire, chapitre II@Rapport de situation militaire soviétique\n\nChapitre II. Conclusions\n\nComme nous l'avons déjà indiqué, le général Zhukov est un individu admirable dont les nombreux exploits doivent servir d'exemple à tous les bons Soviétiques. Il aime le ski de fond, la musique populaire sibérienne et les soirées romantiques le long du lac Baikal avec ses nombreuses maîtresses, notamment mon épouse, Nadia. En conclusion, je pense que l'armée soviétique a la chance d'avoir un chef militaire dont la sagesse suffit à elle seule à la rendre militairement préparée." + IDS_INTEL_25147 "Mémo soviétique: sabotage@RAPPORT TOP SECRET ANTI-SABOTAGE\n\nCamarade Karpov,\n\nAprès avoir inspecté vos installations, ma conclusion est que la seule menace de sabotage sérieuse serait de placer une charge de démolition dans le panneau d'accès entre les deux générateurs principaux. A l'évidence, il n'y a que peu de chances qu'un espion capitaliste décadent s'en aperçoive.\n\nJe n'ai pas besoin de préciser que ce rapport doit être gardé sous clé.\n\nCaporal Butsenko" + IDS_INTEL_25148 "UNUSED" + IDS_INTEL_25149 "UNUSED" + IDS_INTEL_25150 "UNUSED" + IDS_INTEL_25151 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25152 "UNUSED" + IDS_INTEL_25153 "UNUSED" + IDS_INTEL_25154 "UNUSED" + IDS_INTEL_25155 "UNUSED" + IDS_INTEL_25156 "UNUSED" + IDS_INTEL_25157 "UNUSED" + IDS_INTEL_25158 "UNUSED" + IDS_INTEL_25159 "UNUSED" + IDS_INTEL_25160 "" + IDS_INTEL_25161 "Paperasse soviétique: demande de M-9@DEMANDE D'ACCES A UNITE DE TRAITEMENT DES DONNEES M-9\n\n1.Raison de la demande: rapport des progrès du 4ème trimestre du général Zhukov sur le projet Omega\n2. Date demandée:\n ( ) 3 mois,\n ( ) 6 mois,\n ( ) l'an prochain,\n (x) autre: ordre prioritaire du général Zhukov\n3. Si Autre, veuillez indiquer les noms de trois parents si la demande est refusée et que des exécutions punitives sont nécessaires: Oleg Andropov, Sergei Osipov, Lena Osipov" + IDS_INTEL_25162 "Lettre: visite d'Anya@Très cher Sergei,\n\nMerci pour ta gentille lettre. Bien entendu, je te pardonne. Je sais que tu avais trop bu. De plus, la cicatrice est à peine visible.\n\nJe n'arrive pas à croire que tu as réussi à me trouver trois paires de jeans américains! Tu me manques tellement. Je dois venir te voir immédiatement! Tu es sûr que c'est la bonne taille? Oh, mais comme j'ai envie de te voir! Je suis tellement excitée! Ca fait si longtemps que j'en rêve!\n\nAnya" + IDS_INTEL_25163 "Lettre: assurance d'Anya@Cher Sergei,\n\nComment peux-tu penser une chose pareille, mon amour? Je suis très excitée à l'idée des jeans, bien sûr, mais c'est TOI que je veux voir. Je ne suis pas le genre de femme à en vouloir à un homme parce qu'il m'a brisé une bouteille de vodka sur la tête sans raison! Les jours passés à l'hôpital, c'était un peu comme des vacances bien méritées. Et le docteur m'a dit que les crises devraient bientôt s'estomper! Tu n'as pas envie de me voir dans des jeans américains?\n\nAnya" + IDS_INTEL_25164 "Lettre: pardon d'Anya@Sergei, mon amour,\n\nJe n'en peux plus d'attendre de te voir! Comme c'est une bonne idée de me laisser la porte de derrière ouverte, mais je m'inquiète de la barrière électrifiée. Tu te souviens de ce qui est arrivé à la pauvre femme de Yuri l'été dernier? J'aime bien sa nouvelle coupe de cheveux remarque. Mon frère m'a dit que tu pourrais verser du sucre dans le réservoir d'essence du générateur qui alimente la barrière, comme elle est sur un circuit séparé. Il a été en poste là-bas.\n\nAnya" + IDS_INTEL_25165 "CARTE: complexe soviétique@" + IDS_INTEL_25166 "Mémo UNION: sabotage de dépôt de carburant@Agent Archer,\n\nLe dépôt de carburant qui ravitaille la base est situé non loin de votre position actuelle. Le saboter servira deux objectifs. Tout d'abord, cela engendrera une diversion fantastique qui facilitera votre sortie de la base. En deuxième lieu, cela handicapera sérieusement les opérations de la base jusqu'à ce que les dégâts soient réparés et nos opérations clandestines dans le secteur en seront facilitées. Les charges exploseront durant votre fuite." + IDS_INTEL_25167 "Recette de soupe@Soupe aux choux: \n\n1 livre de rôti, 1 chou moyen en morceaux, 1 gros oignon, 2 cuillers à café de vinaigre, 1 gousse d'ail, 2 cuillers à café de sucre.\n\nDans une casserolle, couvrir les ingrédients dans de l'eau froide. Laisser mijoter 1 heure et faire bouillir 3 heures." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25168 "Remarque: plus de choux!@Plus de soupe aux choux! Vous êtes passé récemment près des latrines? Ayez pitié de vos camarades!" + IDS_INTEL_25169 "Paperasse soviétique: demande de choux@FORMULAIRE DE REQUISITION DE PRODUITS FRAIS R-4/2:\n\n1. Produits frais demandés: \n (x) Choux, ( ) Betteraves, ( ) Patates, ( ) Radis\n2. Quantité: 400\n3. Priorité de livraison: \n (x) une semaine, ( ) un mois, ( ) un an, ( ) oubliez ça" + IDS_INTEL_25170 "UNUSED" + IDS_INTEL_25171 "UNUSED" + IDS_INTEL_25172 "UNUSED" + IDS_INTEL_25173 "UNUSED" + IDS_INTEL_25174 "UNUSED" + IDS_INTEL_25175 "UNUSED" + IDS_INTEL_25176 "UNUSED" + IDS_INTEL_25177 "UNUSED" + IDS_INTEL_25178 "UNUSED" + IDS_INTEL_25179 "UNUSED" + IDS_INTEL_25180 "" + IDS_INTEL_25181 "Note: étrange paquet@Lieutenant Pupkin,\n\nJ'ai trouvé cet étrange paquet lors d'une patrouille le long du mur sud. Son emballage élaboré me permet de suspecter un complot capitaliste. Je me repose sur la sagesse de votre jugement pour savoir ce que je dois en faire.\n\nSergent Kominski" + IDS_INTEL_25182 "Avant de PENSER à verser du sucre dans ce réservoir, pour que votre petite amie puisse passer la barrière électrifiée, rappelez-vous ce qui est advenu de Sergei Putkin, dont la charmante amie, Anya, a fait une confession complète le lendemain du sabotage qui a permis de la faire entrer dans le complexe. Rappelez-vous des vers qui grignotent consciencieusement la peau qui reste sur les os de ce couard.\n\nVous êtes surveillé." + IDS_INTEL_25183 "Paperasse soviétique: papier toilette@FORMULAIRE DE REQUISITION J-9:\n\n1. Objet(s) demandé(s): papier toilette, 1 rouleau.\n2. Raison de la demande: ravitaillement inadéquat.\n3. Lieu de livraison souhaité: \n ( ) Moscou, (X) Petrograd, ( ) Bucarest, ( ) Miami Beach\n4. Priorité de livraison: \n ( ) une semaine, ( ) un mois, ( ) un an, \n ( ) je doute que ma réponse influe sur le délai de livraison" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25184 "Paperasse soviétique: papier toilette@FORMULAIRE DE REFUS R-27\n\nLa demande de réquisition de papier toilette via formulaire de réquisition J-9 a été rejetée. Motif: aucune priorité de livraison indiquée." + IDS_INTEL_25185 "Paperasse soviétique: papier toilette@FORMULAIRE DE REDEMANDE DE REQUISITION J-9-17b ANNEXE\n\n4. Comme indiqué en page 137 des instructions de rédaction du formulaire de réquisition J-9: " + IDS_INTEL_25186 "Paperasse soviétique: mesure disciplinaire@FORMULAIRE DE PUNITION B-21-K\n\n\n1. Motif de la punition: ébriété\n2. Nombre de personnels à punir: \n ( ) moins de 5, \n (x) 5 - 10, \n ( ) plus de 10\n3. Punition demandée: \n (x) peloton d'exécution, \n ( ) mort par asphyxie, \n ( ) archivage" + IDS_INTEL_25187 "Mémo soviétique: annexe G-9@A: ressources humaines\nDe: Lieutenant Petrakov\n\nEn raison de l'annexe G-9 du formulaire d'action disciplinaire qui propose deux punitions alternatives à l'archivage (Exécution ou mort par asphyxie), préparez-vous à une augmentation de la demande d'exécution par asphixie ou par peloton d'exécution." + IDS_INTEL_25188 "Manuel de l'UNION: caméras de sécurité@CAMERAS DE SECURITE\n\nSi vous êtes repéré par une caméra de sécurité, vous entendrez une alarme et des renforts arriveront pour fouiller le secteur. La caméra doit faire le point sur vous et vous identifier comme une menace, alors apprenez à vous mettre hors du champ de la caméra dès que vous entendez le moteur de mise au point. Comme les caméras sont contrôlées à distance, les détruire ne fera que déclencher une alarme, sauf si vous utilisez les munitions spéciales du lanceur utilitaire CT-180." + IDS_INTEL_25189 "Mémo UNION: brouilleur de caméra@Agent Archer,\n\nJ'espère que ce paquet vous parviendra bien. J'ai dû l'envoyer par des moyens peu orthodoxes.\n\nVous y trouverez un lanceur utilitaire CT-180 avec des munitions servant à brouiller les caméras de surveillance, en capturant des images de la caméra et en les diffusant en boucle. Quiconque surveille le système pensera voir les transmissions de la caméra.\n\nSanta" + IDS_INTEL_25190 "UNUSED" + IDS_INTEL_25191 "UNUSED" + IDS_INTEL_25192 "UNUSED" + IDS_INTEL_25193 "UNUSED" + IDS_INTEL_25194 "UNUSED" + IDS_INTEL_25195 "UNUSED" + IDS_INTEL_25196 "Note: Interdiction de fumer!@INTERDICTION DE FUMER DANS CETTE ZONE. \n\nLes contrevenants seront abattus." + IDS_INTEL_25197 "UNUSED" + IDS_INTEL_25198 "Recette: hareng en robe de chambre@Recette de mama Pupkin du hareng en robe de chambre:\n\nUn hareng, 3 patates bouillies, 1 betterave bouillie, 6 oignons, 1 boîte d'olives noires, 2 oeufs durs coupés en tranches.\n\nDécoupez le hareng nettoyé en petits morceaux. Retirez la peau des patates et de la betterave et découpez-les en petits morceaux. Découpez les oignons en petits morceaux. Placez les morceaux de hareng au fond du saladier, couvrez avec les oignons, puis les patates et enfin la betterave. Ajoutez de la mayonnaise et décorez avec les olives et les tranches d'oeuf. Servir frais." + IDS_INTEL_25199 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25200 "" + IDS_INTEL_25201 "Remarque: sucre@ATTENTION\n\nJusqu'à nouvel ordre, le sucre sera conservé sous clé pour éviter toute tentative de sabotage sur le générateur. Pour demander du sucre, remplissez un formulaire de réquisition pour votre officier supérieur." + IDS_INTEL_25202 "Remarque: soupe aux choux@ATTENTION A TOUS LES PERSONNELS: pour vous récompenser de la baisse de 2 pourcent des accidents mortels et assimilés, tous les soldats auront droit à de la soupe aux choux supplémentaire tous les soirs de la semaine! Continuez comme ça et vous aurez bientôt autant de soupe aux choux que vous pouvez en avaler!\n\nGénéral Zhukov" + IDS_INTEL_25203 "UNUSED" + IDS_INTEL_25204 "UNUSED" + IDS_INTEL_25205 "UNUSED" + IDS_INTEL_25206 "UNUSED" + IDS_INTEL_25207 "UNUSED" + IDS_INTEL_25208 "UNUSED" + IDS_INTEL_25209 "UNUSED" + IDS_INTEL_25210 "UNUSED" + IDS_INTEL_25211 "Combinaison du coffre@Lieutenant Petrakov,\n\nJ'ai été demandé à Moscou pour participer à un tribunal visant à juger les citoyens insuffisamment patriotiques ayant des postes au sein du gouvernement. J'ai laissé le document " + IDS_INTEL_25212 "Lettre de Oleg@Mes camarades conspirateurs,\n\nL'heure de la révolution approche. J'ai fait les préparatifs nécessaires. Dans moins d'une semaine, nous serons débarrassés des chaînes de la tyrannie et nous serons un exemple pour tous les Russes qui ont soif de liberté.\n\nOleg Dorofeev" + IDS_INTEL_25213 "Lettre de Sergei@Mes frères conspirateurs,\n\nLa révolution est proche. Je peux presque sentir le vent de la liberté. L'attente est une prison. Je me sens prisonnier, angoissé, piégé dans ce misérable uniforme et tout ce qu'il représente.\n\nSergei Romanov" + IDS_INTEL_25214 "Lettre de Yuri@Mes compatriotes révolutionnaires,\n\nJe viens de voir le rapport météo. Un front froid arrive du nord. Comme vous deux, j'ai soif de liberté, mais peut-être pouvons-nous repousser la révolution jusqu'à ce que le temps s'améliore. Courir nu dans le complexe au beau milieu du blizzard me semble plus proche de la folie que de la liberté.\n\nYuri Prokofiev" + IDS_INTEL_25215 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25216 "" + IDS_INTEL_25217 "" + IDS_INTEL_25218 "" + IDS_INTEL_25219 "" + IDS_INTEL_25220 "" + IDS_INTEL_25221 "Mémo soviétique: projet Omega@A: Lieutenant Pupkin\nDe: bureau du général Zhukov\n\nLe général vous demande de lui fournir une matrice de réalisation sur le projet Omega d'ici 10 jours. Procurez-vous un formulaire d'accès au M-9 au bureau des formulaires." + IDS_INTEL_25222 "Mémo soviétique: projet Omega@A: Lieutenant Petrakov\nDe: Colonel Pupkin\n\nAlors Evo, que pensez-vous de ce projet Omega du général? Je prévois de lancer la matrice de réalisation la semaine prochaine sur le M-9, à condition que j'obtienne l'autorisation d'utiliser la machine. Mon instinct me dit que ça ne vaut pas le coût. Qu'ils approchent l'Ouest décadent, c'est mon opinion." + IDS_INTEL_25223 "Paperasse soviétique: demande de M-9@DEMANDE D'ACCES A L'UNITE DE TRAITEMENT DES DONNEES M-9\n\n1.Raison de la demande: mise à jour mensuelle des mises à pied\n2. Date demandée \n ( ) 3 mois, \n ( ) 6 mois, \n ( ) l'an prochain, \n (x) autre: ordre prioritaire du général Zhukov\n3. Si autre, vous devez indiquer les noms de trois parents si la demande est refusée et que des exécutions punitives sont nécessaires: Zenia Yakov, Eduard Stepanov, Igor Stepanov" + IDS_INTEL_25224 "Lettre: projet yeux ouverts@Pupkov Laboratory, Petropavlovsk-Kamchatsky\n\nRésultats du projet yeux ouverts: les bénéfices tirés de l'utilisation des stimulants sont évidents. Le Groupe A (basé en Sibérie) s'est vu alloué 18 cigarettes et 9 tasses de café par jour. Le Groupe de référence B (basé en Finlande) n'a ni fumé ni bu de café. Sur une période de 26 mois, le Groupe A a dormi en moyenne 42 pourcent moins longtemps. Si le taux de mortalité dans le groupe A est 87 pourcent supérieur, nous pouvons troutefois en conclure que l'apport de nouvelle main d'oeuvre comblera les pertes de productivité engendrées par les décès ou l'âge." + IDS_INTEL_25225 "Photographie: Dmitrij Volkov@" + IDS_INTEL_25226 "UNUSED" + IDS_INTEL_25227 "UNUSED" + IDS_INTEL_25228 "UNUSED" + IDS_INTEL_25229 "Plans: bâtiment des archives@" + IDS_INTEL_25230 "UNUSED" + IDS_INTEL_25231 "Photographie: Général Zhukov@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25232 "UNUSED" + IDS_INTEL_25233 "UNUSED" + IDS_INTEL_25234 "UNUSED" + IDS_INTEL_25235 "UNUSED" + IDS_INTEL_25236 "UNUSED" + IDS_INTEL_25237 "UNUSED" + IDS_INTEL_25238 "UNUSED" + IDS_INTEL_25239 "UNUSED" + IDS_INTEL_25240 "" + IDS_INTEL_25241 "Communiqué soviétique: le Directeur@A: Commandant Pim\nDe: Général Nikolai Zhukov\n\nVeuillez informer votre illustre Directeur qu'étant un fier communiste, je ne saurai être sujet à ses viles tactiques commerciales occidentales. Même un leader visionnaire tel que moi ne se lancerait pas dans des projets qui pourraient mettre en danger la stabilité globale. J'apprécie vos efforts consistant à envoyer des représentants de vos services pour tenir des séminaires destinés à mes hommes, mais n'allez pas penser que je sois tellement endetté que je sois prêt à signer un contrat sans évaluer pleinement le service que j'achète." + IDS_INTEL_25242 "Paperasse soviétique: réparation des toilettes@FORMULAIRE DE REPARATION 19a\n\n1. Réparation(s) demandée(s): couvrir le trou dans les toilettes des dames.\n2. Raison de la demande: les atouts des belles femmes russes distraient nos zélés travailleurs.\n3. Approbation: Sergent Egor." + IDS_INTEL_25243 "Paperasse soviétique: refus de la demande de réparation@FORMULAIRE DE REFUS R-27\n\nLa demande de réparation des toilettes des dames dans le nouveau bâtiment des archives a été refusée.\n\nSigné: Général Nikolai Zhukov" + IDS_INTEL_25244 "Mémo soviétique: plans US@A: Général Zhukov\nDe: Vladimir Kryuchkov\n\nJ'espère que vous êtes assis, camarade. La nuit dernière, j'ai reçu des nouvelles de ANATOLI, notre homme à Palm Beach. C'est le garçon de ferme que nous avons envoyé du Kamchatka pour infiltrer le Pentagone, ce qu'il est parvenu à faire très rapidement considérant sa faible maîtrise de l'anglais. Comme nous le craignions, le Grand Adversaire a des projets pour Khios. Voir le rapport joint." + IDS_INTEL_25245 "Rapport: Khios 1@PLANS US POUR KHIOS\nChapitre I.\n\nComme nous le savons tous, les USA développent un projet de première frappe nucléaire contre l'Union Soviétique en attachant des têtes nucléaires sur des requins tigres et de les faire rejoindre Moscou via la Dniepre depuis la Mer Noire. Ils ont même créé un appareil spécial qui permet aux requins de survivre dans l'eau douce. D'après ANATOLI, ce projet a été placé en attente afin de préparer l'invasion américaine de Khios." + IDS_INTEL_25246 "Rapport: Khios 2@PLANS US POUR KHIOS\nChapitre II.\n\nLes objectifs du Grand Adversaire sont évidents: conquérir Khios militairement, faire des expériences scientifiques amorales sur la population locale et remplacer les écoles et les hôpitaux de l'île par des fast-foods et des hôtels pour touristes, afin d'exploiter impérialistement les précieuses ressources naturelles de Khios." + IDS_INTEL_25247 "Compte de dépenses: ANATOLI@RESUME DES DEPENSES\nNom de code de l'agent: ANATOLI\nEmplacement: Palm Beach, Floride\nDépenses totales: $573 000 U.S.\n\nListe des objets achetés:\n - villa sur la plage (pour établir l'alibi de l'agent)\n - Chevrolet Corvette Stingray (transport)\n - Yacht de 11 mètres (si je dois fuir les USA)\n - Dépenses courantes (nourritures, meubles, bar, concert, prostituées, etc.)" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25248 "Mémo soviétique: projet Omega@A: Directeur du C.R.I.M.E.\nDe: Général Nikolai Zhukov\n\nA propos de ce soit-disant projet Omega, nous devons clarifier quelques points avant de vous soumettre une lettre d'intention. Tout d'abord, nous cherchons une solution qui non seulement nous permettent d'annexer Khios, mais également de défendre l'île une fois notre principal objectif atteint: construire le premier hôtel communiste 5 étoiles du monde et un casino au nord de l'île. Le projet Omega nous permettra-t-il d'atteindre cet objectif?" + IDS_INTEL_25249 "PLANS: bâtiment des archives, 1er étage@" + IDS_INTEL_25250 "PLANS: bâtiment des archives, 2ème étage@" + IDS_INTEL_25251 "Note: distributeurs@Camarades, ne vous laissez pas piéger par cette machine! En travaillant hier, j'ai découvert un complot élaboré visant à dérober les précieux roubles des bons citoyens soviétiques. Ces machines ne contiennent pas de soda URSS. Ce sont des grosses boîtes vides avec une caisse pour récolter les pièces et un petit haut-parleur qui fait des bruits mécanique. Ne faites confiance à personne!\n\nMikhail" + IDS_INTEL_25252 "Rapport : macareux@FRATERCULA CIRRHATA\n\nLe macareux à aigrette tire son nom de l'étrange plume jaune pâle qui orne l'arrière de ses yeux. Les yeux eux-mêmes sont d'un jaune remarquable et cerclés d'une bordure rouge vif. Le macareux est une créature monogame fidèle jusqu'à la mort. Le mâle et la femelle s'occupent tour à tour des enfants dans le nid installé dans des rochers, tandis que le partenaire part à la pêche afin de nourrir le reste de la famille." + IDS_INTEL_25253 "Rapport : aigle de mer@HALIAECTUS SPELLAGICUS\n\nL'aigle de mer ne chasse pratiquement jamais sa propre nourriture. Il commence sa journée par espionner d'autres oiseaux de proie, comme de corbeaux, puis les suit jusqu'à ce qu'un repas potentiel se présente. L'aigle cherche alors à dérober la nourriture. Un féroce bataille peut alors suivre, si plusieurs aigles tentent de s'emparer du même morceau de viande. Il n'est pas rare que les aigles utilisent alors becs et serres durant le combat." + IDS_INTEL_25254 "Rapport : ours brun@URSUS ARCTOS\n\nL'ours brun est végétarien pendant la majeure partie du printemps, mais passe l'été et l'automne à se gaver de saumon pour préparer sa longue sieste hivernale. Un ours adulte peut perdre jusqu'à 175 kilogrammes en hiver, qu'il doit regagner avant la saison froide suivante." + IDS_INTEL_25255 "Rapport : otarie à fourrure@CALLORHINUS URSINUS\n\nL'otarie à fourrure est un mammifère marin fascinant. Des troupeaux de mâles arrivent les premiers en mai et en juin, pour établir leur territoire dans des zones comme les îles Pribilof. Les mâles sont très jaloux de leurs harems et se lancent régulièrement dans de violents combats ou des joutes vocales pour indiquer leur territoire et prouver leur puissance." + IDS_INTEL_25256 "Mémo soviétique : étude du Kamchatka@A : bureau du général Zhukov\nDe : caporal Pupkin\n\nChef vénéré, l'étude complète du Kamchatka est terminée. Nous pouvons désormais entamer l'élimination des animaux pour installer les dix glorieuses usines prévues dans cette région, chacune d'entre elle devant fabriquer des équipements permettant de construire d'autres usines ! Nous espérons une augmentation marquante de la productivité !" + IDS_INTEL_25257 "Mémo UNION : Général Zhukov@Agent Archer,\n\nSi vous rencontrez le Général Nikolai Zhukov, considérez-le comme une cible d'opportunité. C'est un ancien du NKVD. Il a été impliqué dans le déplacement de la population Tchétchène en Asie centrale en 1944. On lui attribue plusieurs crimes contre l'humanité, notamment un génocide particulièrement cruel. Nous voulons qu'il soit liquidé.\n\nSanta" + IDS_INTEL_25258 "UNUSED" + IDS_INTEL_25259 "UNUSED" + IDS_INTEL_25260 "" + IDS_INTEL_25261 "Note: espions signalés@Un espion capitaliste a été vu dans le secteur. Quiconque fournira des informations susceptibles de mener à son arrestation se verra attribuer une portion complémentaire de soupe aux choux. Ceux qui n'auront PAS donné d'informations utiles seront de corvée de chiottes." + IDS_INTEL_25262 "UNUSED" + IDS_INTEL_25263 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25264 "UNUSED" + IDS_INTEL_25265 "UNUSED" + IDS_INTEL_25266 "UNUSED" + IDS_INTEL_25267 "UNUSED" + IDS_INTEL_25268 "UNUSED" + IDS_INTEL_25269 "UNUSED" + IDS_INTEL_25270 "UNUSED" + IDS_INTEL_25271 "UNUSED" + IDS_INTEL_25272 "UNUSED" + IDS_INTEL_25273 "UNUSED" + IDS_INTEL_25274 "UNUSED" + IDS_INTEL_25275 "UNUSED" + IDS_INTEL_25276 "UNUSED" + IDS_INTEL_25277 "UNUSED" + IDS_INTEL_25278 "UNUSED" + IDS_INTEL_25279 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25280 "" + IDS_INTEL_25281 "Mémo soviétique: récentes explosions@A: service de la maintenance\nDe: Sergent Butsenko\n\nJ'ai à plusieurs reprises averti contre les dangers du stockage de carburant dans des zones ouvertes. Les récentes explosions en série confirment ces craintes. Je suggère à la commission du carburant de commencer à débattre de la situation." + IDS_INTEL_25282 "UNUSED" + IDS_INTEL_25283 "UNUSED" + IDS_INTEL_25284 "UNUSED" + IDS_INTEL_25285 "UNUSED" + IDS_INTEL_25286 "UNUSED" + IDS_INTEL_25287 "UNUSED" + IDS_INTEL_25288 "UNUSED" + IDS_INTEL_25289 "UNUSED" + IDS_INTEL_25290 "UNUSED" + IDS_INTEL_25291 "UNUSED" + IDS_INTEL_25292 "UNUSED" + IDS_INTEL_25293 "UNUSED" + IDS_INTEL_25294 "UNUSED" + IDS_INTEL_25295 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25296 "UNUSED" + IDS_INTEL_25297 "UNUSED" + IDS_INTEL_25298 "UNUSED" + IDS_INTEL_25299 "UNUSED" + IDS_INTEL_25300 "" + IDS_INTEL_25301 "Note : espions toujours libres@Je suis découragé d'apprendre que personne n'a encore appréhendé l'espion capitaliste pour le bien et la gloire de notre mère Russie ! Si cet espion n'est pas capturé d'ici au matin, les personnels responsables seront punis.\n\nColonel Pupkin" + IDS_INTEL_25302 "UNUSED" + IDS_INTEL_25303 "UNUSED" + IDS_INTEL_25304 "UNUSED" + IDS_INTEL_25305 "UNUSED" + IDS_INTEL_25306 "UNUSED" + IDS_INTEL_25307 "UNUSED" + IDS_INTEL_25308 "UNUSED" + IDS_INTEL_25309 "UNUSED" + IDS_INTEL_25310 "UNUSED" + IDS_INTEL_25311 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25312 "UNUSED" + IDS_INTEL_25313 "UNUSED" + IDS_INTEL_25314 "UNUSED" + IDS_INTEL_25315 "UNUSED" + IDS_INTEL_25316 "UNUSED" + IDS_INTEL_25317 "UNUSED" + IDS_INTEL_25318 "UNUSED" + IDS_INTEL_25319 "UNUSED" + IDS_INTEL_25320 "" + IDS_INTEL_25321 "UNUSED" + IDS_INTEL_25322 "UNUSED" + IDS_INTEL_25323 "UNUSED" + IDS_INTEL_25324 "UNUSED" + IDS_INTEL_25325 "UNUSED" + IDS_INTEL_25326 "UNUSED" + IDS_INTEL_25327 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25328 "UNUSED" + IDS_INTEL_25329 "UNUSED" + IDS_INTEL_25330 "UNUSED" + IDS_INTEL_25331 "UNUSED" + IDS_INTEL_25332 "UNUSED" + IDS_INTEL_25333 "UNUSED" + IDS_INTEL_25334 "UNUSED" + IDS_INTEL_25335 "UNUSED" + IDS_INTEL_25336 "UNUSED" + IDS_INTEL_25337 "UNUSED" + IDS_INTEL_25338 "UNUSED" + IDS_INTEL_25339 "UNUSED" + IDS_INTEL_25340 "" + IDS_INTEL_25341 "Lettre: chère mère@Chère mère,\n\nComment vas-tu? Cela fait longtemps... Comment est Cincinnati? Je suis un grand pilote, maintenant. Aujourd'hui, je pars en Sibérie pour une mission secrète. C'est un travail dangereux, mais ça paye bien. Tu reçois mes chèques? Je suis heureux de le savoir.\n\nJe t'aime,\nMisha" + IDS_INTEL_25342 "UNUSED" + IDS_INTEL_25343 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25344 "UNUSED" + IDS_INTEL_25345 "UNUSED" + IDS_INTEL_25346 "UNUSED" + IDS_INTEL_25347 "UNUSED" + IDS_INTEL_25348 "UNUSED" + IDS_INTEL_25349 "UNUSED" + IDS_INTEL_25350 "UNUSED" + IDS_INTEL_25351 "UNUSED" + IDS_INTEL_25352 "UNUSED" + IDS_INTEL_25353 "UNUSED" + IDS_INTEL_25354 "UNUSED" + IDS_INTEL_25355 "UNUSED" + IDS_INTEL_25356 "UNUSED" + IDS_INTEL_25357 "UNUSED" + IDS_INTEL_25358 "UNUSED" + IDS_INTEL_25359 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25360 "" + IDS_INTEL_25361 "Lettre: formation de Blitzny@28 février 1967\n\nM. Blitzny (ou devrais-je dire M. Goodman),\n\nIl est impératif que votre formation soit terminée début juin. Une opportunité exceptionnelle s'est présentée à Amsterdam.\n\nAmitiés,\nM. X" + IDS_INTEL_25362 "Copie conforme: problème avec les filles@Copie conforme\n\n6 mars 1967\n\nM. X,\nJe n'arrive toujours pas à conclure avec les filles. J'ai du mal à me prendre pour un super espion alors que les filles refusent de me parler. Dans les films, les espions attirent toujours les filles. Cette situation est mauvaise pour mon moral. Si ça continue, j'ai peur de ne pas être prêt en juin.\n\nUrgent,\nMelvin Blitzny\nalias Tom Goodman" + IDS_INTEL_25363 "Lettre: retard inacceptable@19 mars 1967\n\nM. Blitzny, \n\nil est impossible de retarder. Vous DEVEZ être prêt à assumer l'identité de Tom Goodman à l'heure prévue. J'ai besoin que vous rejoigniez l'UNION aussi rapidement que possible. J'espère m'être bien fait comprendre.\n\nSalutations,\nM. Smith" + IDS_INTEL_25364 "Copie conforme: ne me poussez pas!@Copie conforme\n\n20 mars 1967\n\nM. X (ou dois-je dire M. Smith),\n\nJ'en ai assez d'entendre parler de vos dates limites. S'il y a une chose que j'ai appris en vendant des aspirateurs, c'est qu'on ne peut pas brusquer les choses. Je serai prêt quand je le serai, et pas une minute plus tôt. Collez-vous ça où je pense.\n\nSalutations,\nTom Goodman" + IDS_INTEL_25365 "Lettre: tantouze@29 mars 1967\n\nEcoutez-moi bien espèce de tantouze, j'en ai par-dessus la tête. Peut-être n'appréciez-vous pas la gravité de la situation à sa juste mesure, alors laissez-moi vous l'expliquer dans des termes que votre intellect puéril peut comprendre. Vous êtes surveillé. Constamment. Si vous déviez du plan que j'ai tracé, vous disparaissez sans laisser une trace. Je m'occuperai moi-même de votre extermination pour qu'elle soit longue et douloureuse.\n\nSmith" + IDS_INTEL_25366 "Lettre non-envoyée: faites-vous cuire un oeuf@Original jamais envoyé\n\n29 mars 1967\n\nM. Moudubulbe,\n\nAllez vous faire cuire un œuf, affreux et stupide idiot. Je vous déteste, je vous déteste, je vous déteste!\n\nVous pouvez crever,\nGoodman" + IDS_INTEL_25367 "Mémo C.R.I.M.E.@Ce document top secret est réservé aux personnels autorisés!\n\nA: tous les membres du C.R.I.M.E\nDe: Anoop Banerjee\nDate: 2 sept. 1967\nSujet: projet Omega\n\nDès novembre, le C.R.I.M.E. va lancer un nouveau projet d'arme secrète: Omega. Nous cherchons un chef de projet expérimenté et très organisé pour coordonner cet effort. Si vous ou quelqu'un que vous connaissez est intéressé, contactez-moi par courrier interne au bureau de Calcutta." + IDS_INTEL_25368 "Facture pour des aspirateurs@FACTURE 2306a\n\nA: M. Melvin Blitzny\nDe: Lucky Suck Vacuum Company, Walla Walla, Washington\n\nCommande de 260 aspirateurs Lucky Suck type B à tuyau détachable et tête pivotante." + IDS_INTEL_25369 "Communiqué C.R.I.M.E.: Magnus Armstrong@A: Melvin Blitzny/Tom Goodman\nDe: Dmitrij Volkov\n\nVous devez vous présenter à Oslo en Suède, le 4 avril 1967, pour votre orientation et votre préparation mentale C.R.I.M.E. Un de mes associés, Magnus Armstrong, vous accueillera à l'aéroport. Vous n'aurez pas de mal à le reconnaître. Ses caractéristiques les plus significatives sont qu'il a une épaisse barbe rousse, un kilt (qu'il porte quel que soit le temps) et qu'il pue le whisky écossais. Vous ferez ce qu'il vous dit.\n\nBienvenue dans le C.R.I.M.E." + IDS_INTEL_25370 "" + IDS_INTEL_25371 "" + IDS_INTEL_25372 "" + IDS_INTEL_25373 "" + IDS_INTEL_25374 "" + IDS_INTEL_25375 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25376 "" + IDS_INTEL_25377 "" + IDS_INTEL_25378 "" + IDS_INTEL_25379 "" + IDS_INTEL_25380 "" + IDS_INTEL_25381 "Lettre: Chère Loni@Chère Loni,\n\nJe te quitte pour ta meilleure amie, Jill. Désolé, chérie, mais tu ne m'as jamais satisfait! Tu ne t'es jamais maquillée et tu as pris 15 kilos depuis notre mariage et tu n'as pas fait la vaisselle depuis plus d'une semaine. Oseras-tu me blâmer?\n\nTon ancien mari, Kevin" + IDS_INTEL_25382 "Lettre Farley Fertilité@FARLEY FERTILITE\n\nA: Mme Loni Hickey\n\nLes résultats de nos tests indiquent que le père biologique de l'enfant n'est pas M. Hickey. Merci d'avoir choisi Farley Fertilité. Bonne chance pour trouver le père!" + IDS_INTEL_25383 "Lettre: Steve ou Dwayne@Betty,\n\nQue dois-je faire! L'enfant n'est pas de Kevin. Cela réduit au moins les possibilités à Steve ou à Dwayne. Est-ce que je dois lui dire?\n\nLoni" + IDS_INTEL_25384 "" + IDS_INTEL_25385 "" + IDS_INTEL_25386 "" + IDS_INTEL_25387 "" + IDS_INTEL_25388 "" + IDS_INTEL_25389 "" + IDS_INTEL_25390 "" + IDS_INTEL_25391 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25392 "" + IDS_INTEL_25393 "" + IDS_INTEL_25394 "" + IDS_INTEL_25395 "" + IDS_INTEL_25396 "" + IDS_INTEL_25397 "" + IDS_INTEL_25398 "" + IDS_INTEL_25399 "" + IDS_INTEL_25400 "" + IDS_INTEL_25401 "Publicité mobile home Ad@L'AVANTAGE MOBILE HOME !\n\nFatigué de toujours voir le même paysage, année après année ? Un mobile home pourrait être la solution." + IDS_INTEL_25402 "Lettre: prêt refusé@Cher M. Hickey,\n\nVotre demande de prêt pour un Mobile Home a été refusée en raison de vos récents découverts.\n\nSigné: M. Dull\nBanque Agricole de Stucky" + IDS_INTEL_25403 "" + IDS_INTEL_25404 "" + IDS_INTEL_25405 "" + IDS_INTEL_25406 "" + IDS_INTEL_25407 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25408 "" + IDS_INTEL_25409 "" + IDS_INTEL_25410 "" + IDS_INTEL_25411 "" + IDS_INTEL_25412 "" + IDS_INTEL_25413 "" + IDS_INTEL_25414 "" + IDS_INTEL_25415 "" + IDS_INTEL_25416 "" + IDS_INTEL_25417 "" + IDS_INTEL_25418 "" + IDS_INTEL_25419 "" + IDS_INTEL_25420 "" + IDS_INTEL_25421 "" + IDS_INTEL_25422 "" + IDS_INTEL_25423 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25424 "" + IDS_INTEL_25425 "" + IDS_INTEL_25426 "" + IDS_INTEL_25427 "" + IDS_INTEL_25428 "" + IDS_INTEL_25429 "" + IDS_INTEL_25430 "" + IDS_INTEL_25431 "" + IDS_INTEL_25432 "" + IDS_INTEL_25433 "" + IDS_INTEL_25434 "" + IDS_INTEL_25435 "" + IDS_INTEL_25436 "" + IDS_INTEL_25437 "" + IDS_INTEL_25438 "" + IDS_INTEL_25439 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25440 "" + IDS_INTEL_25441 "Photographie: Kamal Khubchandani@" + IDS_INTEL_25442 "Lettre: chantage de Kamal@Cher Kamal,\n\nComment allez-vous? Moi, très bien. Comme vous pouvez le voir sur cette belle photo, nous savons que vous livrez des secrets à l'UNION. Si vous ne payez pas 5000 roupies d'ici mardi, nous verrons si votre patron, Anoop Banerjee, ne serait pas moins avare.\n\nAlliance Maléfique" + IDS_INTEL_25443 "Mot de passe du C.R.I.M.E.@A: tous les personnels du C.R.I.M.E.\n\nLe mot de passe du jour est: Mulligatawny. Mais à mon avis le patron va probablement le changer pour un classique " + IDS_INTEL_25444 "Lettre: trouver le mot de passe du C.R.I.M.E.@Cate\n\nPour parvenir à entrer dans le QG indien du C.R.I.M.E., il faut localiser Balaji Malpani. C'est le lieutenant d'Anoop Banerjee qui a pour tâche d'imaginer et de donner les mots de passe du jour.Pour obtenir le mot de passe de la journée, vous devez soit le maîtriser, soit écouter sa conversation avec Banerjee dans l'après-midi.\n\nBalaji a une chambre à l'hôtel Happy Guest. Placez le micro dans le téléphone de son appartement. Cachez-vous jusqu'à la fin de la conversation, puis activez le micro pour écouter ce qui s'est dit.\n\nBonne chance,\nKamal" + IDS_INTEL_25445 "Photographie: Balaji Malpani@ " + IDS_INTEL_25446 "Lettre: chantage de Kamal@Agent Archer,\n\nUn gang de voyous a découvert que je faisais passer des secrets à l'UNION. Jusqu'à ce qu'ils soient arrêtés, je ne peux pas risquer d'être vu! J'ai entendu dire que leur repaire est localisé dans cette partie de la ville. Voyez si vous pouvez vous occuper d'eux et retrouver les preuves qu'ils utilisent pour me faire chanter.\n\nQue Shiva vous bénisse!\nKamal" + IDS_INTEL_25447 "CARTE: quartier@" + IDS_INTEL_25448 "Lettre: gang Angaraka@A: Alliance Maléfique, Studio 4\nDe: Kumar\n\nMes amis, le contrat est pratiquement signé! Bientôt nous pourrons dire adieu à l'Alliance Maléfique et travailler sur notre premier projet pour le gang Angaraka!\n\n(Ne pas diffuser ailleurs qu'au Studio 4!)" + IDS_INTEL_25449 "Lettre: gang Angaraka@A: Kumar\nDe: Ganesh\n\nQuoi? Quand est-ce que nous avons eu un nouveau nom? Qui se souviendra que Angaraka est aussi le charme qui libère le porteur de ses dettes!\n\nN'essayons pas de nous croire plus intelligents que nous sommes, mon ami!" + IDS_INTEL_25450 "UNUSED" + IDS_INTEL_25451 "" + IDS_INTEL_25452 "" + IDS_INTEL_25453 "" + IDS_INTEL_25454 "" + IDS_INTEL_25455 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25456 "" + IDS_INTEL_25457 "" + IDS_INTEL_25458 "" + IDS_INTEL_25459 "" + IDS_INTEL_25460 "" + IDS_INTEL_25461 "Note: fenêtres ouvertes@ATTENTION A TOUS LES EMPLOYES\n\nLa cour est interdite aux personnels non autorisées. Si je retrouve ces fenêtres ouvertes encore une fois, puisse Vishnu protéger le fautif de mon courroux!\n\nAnoop Banerjee\nPrésident directeur général" + IDS_INTEL_25462 "Note: facture pour nettoyage impayée@A: Erin Keyes, comptable du C.R.I.M.E.\nDe: laveurs de vitres Nanda Devi\n\nMle. Keyes, nos livres indiquent un débit en notre faveur de 47 roupies pour services rendus. Nous avons tenté de régler ce problème directement avec monsieur Banerjee de votre QG en Inde, mais il s'est montré très peu coopératif. Veuillez régler cette dette dans les 30 jours, ou nous jetterons des déjections de singe sur vos fenêtres en représailles." + IDS_INTEL_25463 "Mémo C.R.I.M.E.: lavage de vitres@A: Anoop Banerjee\nDe: Erin Keyes, comptable du C.R.I.M.E.\n\nM. Banerjee, j'ai reçu une plainte des laveurs de vitres Nanda Devi concernant une facture impayée. Veuillez régler cette affaire selon les méthodes habituelles." + IDS_INTEL_25464 "Mémo C.R.I.M.E.: fenêtres@A: Laveurs de vitres Nanda Devi\nDe: Anoop Banerjee\n\nVous appelez ça propre? Je vous maudis, ainsi que vos mères, vos sœurs et vos chiens. Je vous envoie quelqu'un vous payer ce que vous méritez. Adieu." + IDS_INTEL_25465 "Note: compte à jour@A: Anoop Banerjee\nCc: Erin Keyes, comptable du C.R.I.M.E.\nDe: laveurs de vitres Nanda Devi\n\nM. Banerjee, nous devons nous excuser grandement! Il semble que nous ayons signalé une erreur comptable de notre part. Comme nous sommes idiots! Nous sommes terriblement désolés pour ce problème! Pour nous faire pardonner, nous sommes heureux de vous offrir nos services gratuitement à compter d'aujourd'hui!" + IDS_INTEL_25466 "Surveillance C.R.I.M.E.: A.M.@RAPPORT DE SURVEILLANCE 9F\nAttention: Anoop Banerjee\n\nMonsieur, je pense que nos amis vont bientôt agir. Je suggère que nous déplacions la marchandise dans le congélateur de la cave. Elle sera plus en sécurité que dans la salle des employés.\n\nPrem " + IDS_INTEL_25467 "Surveillance C.R.I.M.E.: A.M.@RAPPORT DE SURVEILLANCE 9H\nAttention: Anoop Banerjee\n\nMonsieur, Pacpac a découvert l'emplacement du bureau indien de l'Alliance Maléfique! Ils sont dans le vieux cinéma au bout de la rue! J'ai organisé un raid de nuit pour mardi prochain, à 21:30, pendant la projection du film du soir. Je n'ai pas réussi à avoir de billets pour Samir et Ajay, mais nous pourrons les faire entrer par la porte de sortie lorsque le film aura commencé.\n\nPrem" + IDS_INTEL_25468 "UNUSED" + IDS_INTEL_25469 "UNUSED" + IDS_INTEL_25470 "UNUSED" + IDS_INTEL_25471 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25472 "" + IDS_INTEL_25473 "" + IDS_INTEL_25474 "" + IDS_INTEL_25475 "" + IDS_INTEL_25476 "" + IDS_INTEL_25477 "" + IDS_INTEL_25478 "" + IDS_INTEL_25479 "" + IDS_INTEL_25480 "" + IDS_INTEL_25481 "Note de Kamal: équipment@Agent Archer, \n\nL'Alliance Maléfique a établi son quartier général dans le vieux cinéma de l'autre côté de la rue. J'imagine que cela correspond bien à leur modus operandi théâtral. J'ai obtenu un plan du bâtiment et j'ai indiqué les points où placer des charges pour un effet destructeur maximal. Vous devrez trouver les explosifs sur place.\n\nKamal\n\nP.S. Santa a envoyé ceci pour vous." + IDS_INTEL_25482 "Lettre: fuyons maintenant!@A: Mlle Lala Faqueera,\n14, rue Pullagura\n\nLala,\n\nJe suis tellement inquiet! Votre père a pris sa décision et veut vous marier à un autre homme. Nous devons fuir maintenant!\n\nAvec amour, Pram" + IDS_INTEL_25483 "Lettre: fille sauvage@Dr Nallapuneni,\n\nDocteur, je suis inquiète à propos de ma fille. Mon mari a essayé d'organiser un bon mariage, mais personne ne veut d'elle! Elle est sauvage et dure! Elle n'attirera que les pires des hommes. Que dois-je faire?\n\nSincèrement,\nMme Faqueera" + IDS_INTEL_25484 "Lettre: charme Gauri@Mme Faqueera,\n\nJe comprends vos inquiétudes. Vous devez acheter un charme Gauri et de l'ail, puis les cacher sous son lit pour qu'elle ait un bon mari. Cela a parfaitement fonctionné avec ma propre Phoolwati!\n\nDr Nallapuneni" + IDS_INTEL_25485 "DIAGRAMME: cinéma@" + IDS_INTEL_25486 "" + IDS_INTEL_25487 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25488 "" + IDS_INTEL_25489 "" + IDS_INTEL_25490 "" + IDS_INTEL_25491 "" + IDS_INTEL_25492 "" + IDS_INTEL_25493 "" + IDS_INTEL_25494 "" + IDS_INTEL_25495 "" + IDS_INTEL_25496 "" + IDS_INTEL_25497 "" + IDS_INTEL_25498 "" + IDS_INTEL_25499 "" + IDS_INTEL_25500 "" + IDS_INTEL_25501 "Combinaison du coffre@A: assistant sécurité Sonal\nDe: chef d'équipe Madhu\n\nLes rapports mensuels DOIVENT être remplis d'ici demain matin. Vérifiez bien que les recettes du cinéma sont prises en considération. Vous savez à quel point le patron n'aime pas les maths.\n\nP.S. Comme je sais que vous l'avez oubliée, la combinaison est 6 - 23 - 6." + IDS_INTEL_25502 "Mémo AM: attaque contre le C.R.I.M.E.@Vijay,\n\nBonnes nouvelles! L'heure de la vengeance a sonné! Le directeur des opérations du C.R.I.M.E. a réservé 30 places pour la projection de jeudi prochain. Donnez des munitions à vos hommes, mais ne dépassez pas notre dotation hebdomadaire!\n\nChef d'équipe Madhu" + IDS_INTEL_25503 "Mémo A.M.: explosifs@A: Assistant sécurité Sonal\nDe: chef d'équipe associé Madhu\n\nCes explosifs seront utilisés lors de la grande opération de jeudi. Placez-les dans le coffre secret où ils seront en sécurité." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25504 "Note: sacs de sable dangereux@En raison des blessures fortuites des associés juniors Ramesh et Samir, les personnels ne doivent plus se rendre sur la scène principale tant que la maintenance n'aura pas retiré les sacs de sable dangereux." + IDS_INTEL_25505 "Mémo A.M.: Venkatashalapathi@A: Responsable d'équipe associé Madhu\nDe: Équipier Vijay\nMonsieur, je propose respectueusement que le nom du projet Venkatachalapathi soit changé. Plusieurs personnes le confondent avec le projet Velatachalapathi. Il est démotivant que ce projet puisse être confondu avec cet incident malheureux. Nous suggérons un nouveau nom: projet Shakti. Ca sonne bien, non?" + IDS_INTEL_25506 "Mémo A.M.: Venkatashalapathi@A: Équipier Vijay\nDe: Chef d'équipe associé Madhu\n\nVijay, je n'arrive pas à croire que vous en parliez maintenant. Le marketing a approuvé le nom du projet Venkatachalapathi. Vous savez à quel point il est difficile de choisir un nouveau nom? Je ne peux rien promettre." + IDS_INTEL_25507 "Mémo A.M.: et pourquoi pas Shakti@A: Marketing\nDe: Chef d'équipe associé Madhu\n\nJe demande officiellement que le projet Venkatachalapathi soit renommé projet Shakti. Vous devez admettre que Venkatachalapathi ne passe pas bien avec notre nouveau papier à lettre." + IDS_INTEL_25508 "Mémo A.M.: êtes-vous devenu fou?@A: chef d'équipe associé Madhu\nDe: Marketing\nPuisse la hache sacrée de Ganesha vous ramener à la raison! N'avez-vous jamais entendu parler du Shakti Cola? Ils seraient trop heureux de nous coller un procès pour vol de marque. Nous avons déjà dépassé notre budget, votre requête est donc refusée avec un grand R." + IDS_INTEL_25509 "Mémo A.M.: le marketing est nul@A: Équipier Vijay\nDe: Chef d'équipe associé Madhu\n\nHélas, mon ami, une fois encore le département du marketing a prouvé ses limites. Nous sommes contraint de continuer avec le projet Venkatachalapathi." + IDS_INTEL_25510 "Recherche de nom de marque: Venkatachalapathi@RESULTAT DE RECHERCHE: Venkatachalapathi\n\nNous n'avons trouvé que deux noms de marque proches. Le premier est une plantation de papayes. Le second est un service d'extermination des nuisibles. Nous pensons que leurs activités sont suffisamment distinctes pour que cela ne pose pas de problème. Coût de la recherche: 10 000 roupies." + IDS_INTEL_25511 "Vol de marque: Venkatachalapathi@VOL DE MARQUE\n\nDe: Venkatachalapathi, extermination des nuisibles\nA: M. Baba Madhu\n\nM. Madhu, cette lettre vous informe officiellement que vous utilisez un nom de marque déposée. Cessez immédiatement ou nous vous traînons devant les tribunaux!" + IDS_INTEL_25512 "Mémo A.M.: Vol de marque@A: Maintenance\nDe: chef d'équipe associé Madhu\n\nAvez-vous vu la lettre concernant le vol de marque? Je pense que la Maintenance peut gérer ce problème comme à l'habitude?\n\nJe dois certainement avoir été particulièrement maléfique dans ma vie antérieure pour mériter autant de soucis!" + IDS_INTEL_25513 "UNUSED" + IDS_INTEL_25514 "" + IDS_INTEL_25515 "" + IDS_INTEL_25516 "" + IDS_INTEL_25517 "" + IDS_INTEL_25518 "" + IDS_INTEL_25519 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25520 "" + IDS_INTEL_25521 "Note: coffre du C.R.I.M.E.@Agent Archer,\n\nEntrer dans le coffre ne sera pas facile. Tout d'abord, vous devez déjouer les portes électroniques et les caméras de surveillance. Vous risquez sans doute également de tomber sur des gardes en faction au niveau inférieur.\n\nMalheureusement, je n'ai jamais été plus loin et je ne peux donc pas vous dire avec certitude ce que vous allez affronter. Mais j'en entendu Anoop parler des appliques murales. J'imagine qu'elles servent à quelque chose.\n\nBonne chance,\nKamal" + IDS_INTEL_25522 "Mémo C.R.I.M.E.: sécurité du coffre@A: Anoop Banerjee\nDe: le Directeur\n\nJe viens de terminer la lecture du dernier rapport d'inspection sur la sécurité, et j'ai été très heureux de noter une nette amélioration de votre classement cette année. Bien entendu, cela n'aurait pas pu être pire. Toutefois, il est satisfaisant de noter ne serait-ce qu'un petit déclin de votre incompétence. Continuez comme ça!" + IDS_INTEL_25523 "Lettre: remerciements de l'UNION@A: Kamal Khubchandani\nDe: Bruno Lawrie, Directeur temporaire de l'UNION\n\nJe tenais à vous remercier pour votre aide désintéressée et incalculable. Je ne sais pas vraiment quelles raisons vous ont poussé à nous aider, mais je peux vous assurer que l'UNION vous récompensera généreusement. Par ailleurs, si vous deviez vous retrouver sans emploi à la suite de vos actes, je suis certain que nous pourrons trouver un arrangement." + IDS_INTEL_25524 "Mémo C.R.I.M.E.: demande de produits chimiques@A: Dr Kussman, Base de l'Antarctique\nDe: Anoop Banerjee, QG indien du C.R.I.M.E.\nRe: matériels du projet Omega\nLe chargement de produits chimiques que vous avez demandé a été expédié à McMurdo via les Malouines. Le thé que vous m'avez demandé est dans la caisse rouge. Savourez-le pour moi!" + IDS_INTEL_25525 "Note: micros@Agent Archer,\n\nSanta aimerait plus de renseignements sur le opérations menées par le C.R.I.M.E. en Inde. Il demande que vous placiez des micros dans les téléphones de trois responsables. Ces micros seront récupérés ultérieurement par d'autres agents, il vous suffit donc de les placer. Bonne chance!\n\nKamal" + IDS_INTEL_25526 "Lettre: réponse de Kamal@Copie conforme\n\nA: Bruno Lawrie\nDe: Kamal Khubchandani\n\nGrand merci pour votre offre généreuse. Les raisons qui m'ont poussées à vous aider sont simples: j'en ai assez. Je ne prétends pas être fondamentalement honnête, mais je suis depuis peu père d'une petite fille, Laxmi. Après l'avoir vue pour la première fois, j'ai été submergé par tant d'amour et de paix que j'en ai pleuré. Il m'a été très difficile de retourner travailler et de faire semblant d'apprécier la compagnie de ces criminels de dessin animé et leurs pitoyables manigances. J'en ai assez d'être méchant." + IDS_INTEL_25527 "Document: projet Omega@A: Anoop Banerjee\nDe: D. Kussman\n\nTrès bien, mon ami, le projet Omega est exactement dans les temps. Nous avons rencontré quelques problèmes mineurs, mais rien de grave. Le monde n'oubliera pas 1966, l'année d'Omega! Nous allons placer très haut la barre des complots maléfiques!\n\nAlors, quand viendrez-vous me voir en Antarctique? J'aimerai avoir des conversations intelligentes parfois. Nous sommes à environ 2 heures au sud de Russkaya en avion. Nous n'avons pas beaucoup de distractions, mais tout de même une table de ping pong!\n" + IDS_INTEL_25528 "Reçu : remplacement des fouines@A : Anoop Banerjee\nDe : Animaux vicieux et méchants\n\nNous regrettons de vous informer que nous n'avons pas réussi à trouver de fouines enragées pour votre complot. Notre fournisseur nous assure qu'un chargement est en route depuis le Canada. En attendant, veuillez accepter ces remplacements temporaires. Ils ne sont pas aussi mortels que des fouines enragées, mais ces créatures sont assez amusantes." + IDS_INTEL_25529 "" + IDS_INTEL_25530 "" + IDS_INTEL_25531 "" + IDS_INTEL_25532 "" + IDS_INTEL_25533 "" + IDS_INTEL_25534 "" + IDS_INTEL_25535 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25536 "" + IDS_INTEL_25537 "" + IDS_INTEL_25538 "" + IDS_INTEL_25539 "" + IDS_INTEL_25540 "" + IDS_INTEL_25541 "Informations: festival de mimes@Sanjay Productions présente\n\nLe célèbre\nPIERRE, LE ROI DU MIME\net sa troupe de mimes\n\nSoirée unique! Places limitées." + IDS_INTEL_25542 "" + IDS_INTEL_25543 "" + IDS_INTEL_25544 "" + IDS_INTEL_25545 "" + IDS_INTEL_25546 "" + IDS_INTEL_25547 "" + IDS_INTEL_25548 "" + IDS_INTEL_25549 "" + IDS_INTEL_25550 "" + IDS_INTEL_25551 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25552 "" + IDS_INTEL_25553 "" + IDS_INTEL_25554 "" + IDS_INTEL_25555 "" + IDS_INTEL_25556 "" + IDS_INTEL_25557 "" + IDS_INTEL_25558 "" + IDS_INTEL_25559 "" + IDS_INTEL_25560 "" + IDS_INTEL_25561 "Note: corde@Sacrebleu! Ma patience est épuisée! Pour la millième fois, on commence à tirer la corde de la main DROITE. Le prochain de vous qui fait preuve d'une telle incompétence devant moi aura la main gauche coupée pour lui rappeler à jamais sa stupidité.\n\nNotre Art est sacré, mes amis. Honorez-le et vous vous épanouirez dans ma grâce.\n\nPierre" + IDS_INTEL_25562 "Lettre: mime raté@Chère Babette,\n\nMon Dieu! J'ai l'impression de ne rien faire comme il faut! Chaque jour une nouvelle erreur, un nouvel échec. Je ne suis qu'une souillure devant la grâce divine du mime. Tu me manques terriblement.\n\nJe t'aime,\nJacques" + IDS_INTEL_25563 "Manuel du Mime@L'ART DU MIME\n\nLa technique est IMPRESSIONNANTE. L'art est INTERESSANT. Etre IMPRESSIONNANT ne suffit pas à durer. Un autre viendra qui sera plus grand, plus rapide et plus riche. IMPRESSIONNER n'est que relatif: meilleur ou moins bon. INTERESSER suffit en soi. Quand quelque chose est INTERESSANT, le temps s'arrête! C'est la clé du succès!" + IDS_INTEL_25564 "Fichier du C.R.I.M.E.: profil de Archer@FICHIER C.R.I.M.E. 2317: Catherine Archer, profil mis à jour\n\nArcher est née en 1942, c'est la fille de Lord William Archer et de Catherine Anne MacDougal. Sa mère est morte de complications liées à la naissance de Archer. Lord Archer a dilapidé sa fortune et son héritage, avant de se suicider quand Archer avait 12 ans. Elle passa alors sa jeunesse à l'orphelinat et dans quelques maisons d'accueil avant de fuir à Londres. Elle devint la célèbre cambrioleuse connue sous le nom de Renard. Elle a été recrutée quelques années plus tard par Bruno Lawrie dans l'UNION." + IDS_INTEL_25565 "Photographie: Magnus Armstrong@" + IDS_INTEL_25566 "Fichier C.R.I.M.E.: Archer@FICHIER 2345: Catherine Archer (alias: le Renard)\n\nTaille: 1m75\nYeux: verts\nCheveux: chatains\nNationalité: écossaise\nDernier contact confirmé: Sibérie" + IDS_INTEL_25567 "Fichier C.R.I.M.E.: Armstrong@FICHIER 1201: Magnus Armstrong\n\nTaille: 1m90\nYeux: bleus\nCheveux: roux\nNationalité: écossaise\nDernier contact confirmé: Angleterre" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25568 "Photographie: Cate Archer@" + IDS_INTEL_25569 "" + IDS_INTEL_25570 "" + IDS_INTEL_25571 "" + IDS_INTEL_25572 "" + IDS_INTEL_25573 "" + IDS_INTEL_25574 "" + IDS_INTEL_25575 "" + IDS_INTEL_25576 "" + IDS_INTEL_25577 "" + IDS_INTEL_25578 "" + IDS_INTEL_25579 "" + IDS_INTEL_25580 "" + IDS_INTEL_25581 "" + IDS_INTEL_25582 "" + IDS_INTEL_25583 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25584 "" + IDS_INTEL_25585 "" + IDS_INTEL_25586 "" + IDS_INTEL_25587 "" + IDS_INTEL_25588 "" + IDS_INTEL_25589 "" + IDS_INTEL_25590 "" + IDS_INTEL_25591 "" + IDS_INTEL_25592 "" + IDS_INTEL_25593 "" + IDS_INTEL_25594 "" + IDS_INTEL_25595 "" + IDS_INTEL_25596 "" + IDS_INTEL_25597 "" + IDS_INTEL_25598 "" + IDS_INTEL_25599 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25640 "" + IDS_INTEL_25641 "Mémo C.R.I.M.E.: signature@A: Général Zhukov\nDe: D. Kussman\nRe: mise à jour mensuelle du projet Omega\n\nGénéral, nous serons prêts à commencer les tests grandeur nature la semaine prochaine, avec trois semaines d'avance sur le planning. Vos camarades ont-ils pris une décision concernant cette opportunité unique? Sachez que nous avons d'autres contacts intéressés. De plus, si vous signez dans les 48 heures, nous vous offrons une garantie de 18 mois." + IDS_INTEL_25642 "Propagande@LE PROJET OMEGA ET VOUS!\n\nSi vous êtes comme moi, vous avez vu les rapports concernant le Projet Omega dans la lettre d'informations mensuelle et vous vous êtes demandé, " + IDS_INTEL_25643 "Fichier C.R.I.M.E.: Zhukov@Fichier 6987: Général Zhukov, armée russe\n\nActuellement en poste en Sibérie après sa disgrâce auprès du général Kopat à Petrograd. Une affaire qu'aurait eu Zhukov avec la femme, âgée de 18 ans, de Kopat pourrait en être la cause. C'est la cible parfaite pour le projet Omega, car il est suffisamment haut placé dans l'armée soviétique pour être influent, tout en étant assez faible pour être facilement piloté par nos agents." + IDS_INTEL_25644 "Mémo C.R.I.M.E.: poignées de porte cassées@A: Dr Kussman\nDe: Maintenance\n\nNous regrettons de vous informer que nous ne pourrons pas rapidement remplacer la poignée de porte cassée car nous déplaçons actuellement des explosifs hors de l'abri de maintenance." + IDS_INTEL_25645 "Facture de produits chimiques@ACME DIVISION CHIMIE\n\nFACTURE 4023\n\nClient: D. Kussman\nCommande: 400 litres de liquide d'inhumation, 60 kilogrammes de bicarbonate de sodium, 20 boîtes de Red Hot Sugar Poppers." + IDS_INTEL_25646 "Mémo C.R.I.M.E.: dépassements@A: D. Kussman\nDe: le Directeur\n\nJe pense ne pas avoir besoin de vous rappeler que nous sommes sur le point de ne pas respecter nos délais, docteur. Je n'ai certainement pas non plus besoin de vous rappeler que vous avez accepté personnellement ces délais. Vous savez ce qui risque de vous arriver?\n\nJe veux des résultats, D. Kussman, et je les veux dans les délais et dans les coûts. Si nous ne tenons pas notre date de livraison, nous allons entrer dans la saison de Noël. Si cela arrive, je n'aurai pas à vous tuer. Le département marketing s'en chargera pour moi." + IDS_INTEL_25647 "Photographie de Abigail Anders@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25648 "Journal: Hotchkins@Journal de Melbert Hotchkins. Jour 189.\n\nAu cours des dernières semaines, le sujet #42 (Anders, Joseph, Lt.) est devenu de plus en plus hostile. Nous avons augmenter son dosage, mais je crains que nous ne devions abandonner dans son cas. Il n'y a qu'une seule autre option, mais il faudrait le transporter dans le centre sous-marin de la mer Egée pour reconditionnement." + IDS_INTEL_25649 "Fichier C.R.I.M.E.: Lt. Anders@Fichier C.R.I.M.E. 6714: Lt. Joseph Anders\n\nEngagé sur une base militaire américaine en Norvège durant l'opération Gang de presse. Il a une femme, Marianne; une fille, Abigail; et un terrier, Sparky. Carrière militaire honorable, beaucoup d'expérience du combat.\n\nRemarques: en regard de son parcours professionnel, c'est un candidat parfait, mais je suis inquiet de ses relations fortes. A surveiller avec attention.\n\nD. Kussman" + IDS_INTEL_25650 "Mémo C.R.I.M.E. : test@A : D. Kussman\nDe : le Directeur\n\nNotre branche en Inde nous a trahis. Il semble que notre super espion préférée, Cate Archer, soit parvenue à entrer dans leur coffre. Nous devons accélérer les choses. Il est temps de tester les Super Soldats sur le terrain, non ? Je veux que toute la division parte en Inde avant que l'UNION trouve vos installations. Nous devons vérifier que les Super Soldats sont aussi invulnérables que vous me l'avez promis.\n\nEt je ne veux pas entendre d'excuses à propos de votre soit-disant lieutenant renégat. Si vous ne pouvez pas contrôler vos sujets de test, je trouverai un autre savant fou pour le faire." + IDS_INTEL_25651 "Mémo C.R.I.M.E.: explosifs@A: maintenance\nDe: D. Kussman\n\nFaites en sorte que les charges de démolition du laboratoire 2 soient déménagées dans l'abri de maintenance au plus vite. Je n'ai pas besoin de signaler qu'il est stupide de stocker des explosifs là où nous allons faire des tests d'armements. Peut-être devrions-nous les mettre sous vos vestes." + IDS_INTEL_25652 "Plan des Super Soldats@" + IDS_INTEL_25653 "Mémo C.R.I.M.E.: ravitaillement@A: D. Kussman\nDe: Dmitrij Volkov, Directeur des opérations\n\nMerci pour cette charmante carte de voeux. C'est d'autant plus appréciable que c'est moi qui ait assassiné votre oncle à Oslo il y a quelques années. Je sais que vous étiez très proches.\n\nQuant à l'origine de ma mésaventure, elle m'est arrivée en Suisse, à la suite du décès de la Baronne Dumas, notre ancienne directrice adjointe. Je skiais dans les Alpes et j'allais planter mon bâton de ski dans un enfant quand je suis rentré dans sa soeur. Nous sommes tombés d'une falaise d'une trentaine de mètres pour atterrir dans un charmant café. Par chance, elle a amorti ma chute." + IDS_INTEL_25654 "Rapport d'état: sujet #42@RAPPORT DE SITUATION INTERNE\n(A ne pas publier dans la lettre d'informations mensuelle!)\n\nDans l'ensemble, les résultats sont très satisfaisants. Nous avons presque deux semaines d'avance. Cela étant dit, nous avons également rencontré un problème inattendu. Le sujet #42, un de nos deux lieutenants, montre toujours des signes d'autonomie. Les crises sont plus fréquentes et plus violentes. Recommandons un reconditionnement complet à la première occasion." + IDS_INTEL_25655 "" + IDS_INTEL_25656 "" + IDS_INTEL_25657 "" + IDS_INTEL_25658 "" + IDS_INTEL_25659 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25680 "" + IDS_INTEL_25681 "Note: punition@A: tous les personnels\nDe: Anoop Banerjee\n\nMes amis, il semble que le Directeur a choisi de passer son courroux sur nous plutôt que sur les mimes. Si je suis prêt à admettre m'être fait duper par l'espion, c'est la faute du Français si elle s'est échappée. En conséquence, j'ai décidé de quitter le C.R.I.M.E. et de lancer une société de sécurité privée. Ceux d'entre vous qui sont interessés par une nouvelle carrière sont les bienvenus." + IDS_INTEL_25682 "" + IDS_INTEL_25683 "" + IDS_INTEL_25684 "" + IDS_INTEL_25685 "" + IDS_INTEL_25686 "" + IDS_INTEL_25687 "" + IDS_INTEL_25688 "" + IDS_INTEL_25689 "" + IDS_INTEL_25690 "" + IDS_INTEL_25691 "" + IDS_INTEL_25692 "" + IDS_INTEL_25693 "" + IDS_INTEL_25694 "" + IDS_INTEL_25695 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25696 "" + IDS_INTEL_25697 "" + IDS_INTEL_25698 "" + IDS_INTEL_25699 "" + IDS_INTEL_25700 "" + IDS_INTEL_25701 "" + IDS_INTEL_25702 "" + IDS_INTEL_25703 "" + IDS_INTEL_25704 "" + IDS_INTEL_25705 "" + IDS_INTEL_25706 "" + IDS_INTEL_25707 "" + IDS_INTEL_25708 "" + IDS_INTEL_25709 "" + IDS_INTEL_25710 "" + IDS_INTEL_25711 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25712 "" + IDS_INTEL_25713 "" + IDS_INTEL_25714 "" + IDS_INTEL_25715 "" + IDS_INTEL_25716 "" + IDS_INTEL_25717 "" + IDS_INTEL_25718 "" + IDS_INTEL_25719 "" + IDS_INTEL_25720 "" + IDS_INTEL_25721 "Mémo UNION: Jones en permission@A: tous les personnels\nDe: M. Jones\n\nSouvenez-vous que je serai en vacances pendant 3 semaines à compter de lundi. Bruno Lawrie va temporairement assurer les fonctions de directeur de l'UNION. Montrez-lui le respect et la courtoisie que vous m'avez témoigné. A dans quelques semaines!" + IDS_INTEL_25722 "Mémo: demande de Bruno@A: tous les personnels\nDe: Bruno Lawrie, directeur temporaire\n\nJe sais que vous trouvez tous très amusant que l'on me laisse cette charge difficile, mais par pitié, arrêtez de vous adressez à moi en m'appelant, " + IDS_INTEL_25723 "Lettre: commérages@Chère Emma,\n\nMa chérie! Comment vas-tu? Les choses ne sont plus très amusantes depuis ton départ. Ils ont viré ce gentil M. Goodman dont tu étais amoureuse. Terrible, non? Phylis voit toujours Bob. Elle pourrait lui apprendre à s'habiller correctement! Bon, je retourne à mon classement! Donne-moi des nouvelles!\n\nTiffany" + IDS_INTEL_25724 "Note: Dr Schenker se cache@Cate,\n\nJe me cache.\n\nSincèrement,\nDr Schenker" + IDS_INTEL_25725 "Rapport: RAPPORT DE SITUATION@RAPPORT DE SITUATION\nProjet Omega\nPréparé par Isaac Barnes\n\nLes agents de l'UNION ont découvert la nature et les objectifs du projet Omega, notamment l'invasion de Khios à l'aide de Super Soldats modifiés chimiquement et pratiquement invincibles. Les documents que nous avons trouvés indiquent que les Soviétiques envisagent de construire une sorte de casino communiste, mais nous soupçonnons qu'ils cherchent en fait à exploiter les précieuses ressources naturelles de l'île. A l'évidence, ce type d'exploitation militaire par les Soviétiques viendrait contrecarrer les plans d'exploitation par la manipulation mis en place par l'OTAN. Nous devons agir vite et bien." + IDS_INTEL_25726 "Mémo: demande de Bruno@A: tous les personnels\nDe: Bruno Lawrie, directeur temporaire\n\nJe n'ai sans doute pas été assez clair dans mon précédent message. Je vous serai reconnaissant de vous abstenir d'utiliser à mon égard toute forme de marque de respect exagéré, y compris:\n\n Mon seigneur,\nVotre honneur,\nVotre sainteté,\nMon commandant suprême\n\nMerci." + IDS_INTEL_25727 "SCHEMAT: sous-marin de poche Requin@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25728 "UNUSED" + IDS_INTEL_25729 "UNUSED" + IDS_INTEL_25730 "UNUSED" + IDS_INTEL_25731 "UNUSED" + IDS_INTEL_25732 "UNUSED" + IDS_INTEL_25733 "UNUSED" + IDS_INTEL_25734 "UNUSED" + IDS_INTEL_25735 "UNUSED" + IDS_INTEL_25736 "UNUSED" + IDS_INTEL_25737 "UNUSED" + IDS_INTEL_25738 "UNUSED" + IDS_INTEL_25739 "UNUSED" + IDS_INTEL_25740 "" + IDS_INTEL_25741 "Feuille de service@CHANGEMENTS FEUILLE DE SERVICE\n\nNotez que l'équipe de Frank passe en service de jour cette semaine. J'imagine que c'est ce à quoi on a droit quand on se plaint tout le temps de ne pas pouvoir dormir assez! Pffff." + IDS_INTEL_25742 "Nouveaux uniformes@Livraison\n\nQuatre douzaines d'uniformes du C.R.I.M.E. (rouge et noir). \n\nVeuillez rendre vos anciens uniformes au quartier général pour recyclage." + IDS_INTEL_25743 "Note: discrétion@A: tous les personnels\nDe: Commandant Pim\n\nComme vous le savez, les sous-marins super secrets sont essentiels à la réussite du projet Omega. Nous devons en conséquence observer la plus grande discrétion à leur sujet. N'en parlez pas à vos amies ou à vos femmes.\n\nRappelez-vous ce que signifie C.R.I.M.E.!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25744 "Slogan #1@A: tous les personnels\nDe: Megan O'Malledy, responsable moral\n\nBonjour à tous! Comme vous le savez, nous avons récemment organisé un concours pour tous les employés visant à choisir le nouveau slogan du C.R.I.M.E. Merci pour vos quatre propositions! Malheureusement, il n'y a de place que pour un slogan sur notre emblème. Trois d'entre vous n'ont vraiment pas de chance. Voici le slogan qui arrive en troisième place:\n\n" + IDS_INTEL_25745 "Lettre: nouveaux uniformes@Hé Rodney,\n\nTu arrives à y croire? Ils nous ont finalement écouté et nous filent des uniformes décents! J'espère qu'ils vont refaire la photo de tout le monde. Quand je reviens, tu peux me brancher avec Margaret? Elle est vraiment top!\n\nTon ami, Nathan" + IDS_INTEL_25746 "Lettre: demande en mariage de Clark@Chère Martha,\n\nJe vie une agonie depuis ce jour fatidique au Maroc. Pendant des mois, je me suis mentalement flagellé pour cette brusque décision. Le mois dernier, j'ai quitté ma femme et j'ai déserté l'Union Soviétique pour rejoindre une société indépendante bien plus intéressante à tous les points de vue. Tu me manques terriblement et je veux que nous recommencions à zéro. Veux-tu bien me reprendre?\n\nClark" + IDS_INTEL_25747 "Slogan #2@A: tous les personnels\nDe: Megan O'Malledy, responsable moral\n\nBonjour à tous! Voici le slogan qui arrive en deuxième place:\n\n" + IDS_INTEL_25748 "Slogan #2@A: tous les personnels\nDe: Megan O'Malledy, responsable moral\n\nBonjour à tous, collaborateurs du C.R.I.M.E.! J'ai l'honneur de vous présenter le slogan qui nous a été soumis par Dmitrij Volkov, notre illustre Directeur des opérations:\n\n" + IDS_INTEL_25749 "Note: papier à lettre@A: tous les chefs de section\nDe: Administrateur\n\nLe nouveau papier à lettre du C.R.I.M.E. est arrivé! Le service des fournitures reprendra l'ancien papier pour recyclage cette semaine." + IDS_INTEL_25750 "Mémo C.R.I.M.E.: annulation d'Epsilon@A: Professor Hibbard\nDe: Commandant Pim\n\nIl semble que vous vous soyez plaint au quartier général de l'annulation du projet Epsilon Mon cher professeur, vous ne pouvez tout de même pas estimer que c'était un succès. La dernière chose dont nous avons besoin alors que nous terminons Omega, c'est qu'un projet aussi inadapté qu'Epsilon draine nos ressources et réduise notre moral." + IDS_INTEL_25751 "UNUSED" + IDS_INTEL_25752 "Note: robots dans le sas@NOTICE URGENTE!!!\n\nAucun robot n'est autorisé dans le sas. Leurs systèmes de visée ne sont pas assez sophistiqués pour discerner les agents ennemis et les gros poissons. Je suis certain que même les moins imaginatifs d'entre vous peuvent se rendre compte de ce qui se passerait si les robots tiraient sur les créatures marines de passage à travers la glace." + IDS_INTEL_25753 "UNUSED" + IDS_INTEL_25754 "UNUSED" + IDS_INTEL_25755 "UNUSED" + IDS_INTEL_25756 "UNUSED" + IDS_INTEL_25757 "UNUSED" + IDS_INTEL_25758 "UNUSED" + IDS_INTEL_25759 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25760 "" + IDS_INTEL_25761 "Mémo C.R.I.M.E.: sujet #42@A: D. Hall\nDe: D. Kussman\n\nConsiderant les depenses liees au developpement d'un Super Soldat, je pense que la seule solution envisageable consiste à reconditionner complètement le sujet #42. Mes recherches indiquent qu'une exposition prolongée à la solution a tendance à produire des effets cumulatifs. Il est donc possible que nous puissions récupérer le Lt. Anders. Ca vaut certainement la peine d'essayer!" + IDS_INTEL_25762 "Mémo C.R.I.M.E.: capsules des sujets@A: Docteur Hall\nDe: Maintenance\nNous avons installé les capsules des sujets selon vos directives. Nous serons très occupés cette semaine en raison de la panne du système d'air conditionné. Prévenez-nous donc à l'avance (24 heures et pas 15 minutes) si vous avez des modifications à apporter." + IDS_INTEL_25763 "Mémo C.R.I.M.E.: Armstrong@A: tous les personnels\nDe: Commandant Pim\n\nNotez que la zone de test des sujets est interdite à tous les personnels à l'exception des membres de l'équipe Omega. Nous accueillons actuellement deux individus très dangereux, mais le D. Hall nous assure qu'ils seront aussi dociles que des chatons d'ici la fin de la semaine.\n\nRappelez-vous ce que signifie C.R.I.M.E.!" + IDS_INTEL_25764 "Mémo C.R.I.M.E.: robot hors-service@A: Confucius Lee, Département robotique\nDe: Commandant Pim\n\nM. Lee, je suis tombé sur un robot hors-service sur le pont de l'équipage ce matin. Il semble s'être court-circuité en insérant une fourchette dans une prise électrique. Ce comportement est-il normal?" + IDS_INTEL_25765 "Mémo C.R.I.M.E.: robot hors-service@A: Commandant Pim\nDe: Confucius Lee, Département robotique\n\nCommandant, comme vous le savez, on m'a donné l'ordre de suivre à la lettre les instructions données par le responsable de la sécurité Fenster, auxquelles je me suis conformées. Si le chef de la sécurité Fenster était préoccupé par la protection des robots contre les tirs et les explosions, il n'a pas demandé à isoler les circuits électriques. Les robots sont terriblement sensibles à l'électricité. Ce n'est pas le premier rapport que je reçois concernant le suicide d'un robot. Peut-être parce qu'ils ont été refusés pour le projet: Omega?" + IDS_INTEL_25766 "Mémo C.R.I.M.E.: services@A: tous les chefs d'équipe\nDe: Commandant Pim\nPriorité: TOP SECRET\n\nUne réunion est prévue jeudi pour discuter de la situation du service du Super Ordinateur. Nous devons réviser complètement le nouveau système de réquisition ou engager seize nouveaux techniciens pour gérer la charge de travail. Considérant le retard astronomique accumulé par les services administratif, engager autant de personnel n'est pas une solution envisageable." + IDS_INTEL_25767 "Manuel du super ordinateur@Manuel d'utilisation du super ordinateur, annexe 18-G" + IDS_INTEL_25768 "UNUSED" + IDS_INTEL_25769 "UNUSED" + IDS_INTEL_25770 "UNUSED" + IDS_INTEL_25771 "Note : pause toilettes@Je fais une pause toilettes. De retour dans 5 minutes.\n\nSpencer" + IDS_INTEL_25772 "Formulaire de demande de catalogue@FORMULAIRE DE REQUISITION 207-B\n\nProduit: manuel du Super ordinateur\nNuméro du produit: #349295-290948-2934/Z\nComment avez-vous obtenu ce numéro de produit?\n (x) Catalogue de produits Super ordinateur\n ( ) par un ami\n ( ) par extorsion\n ( ) je l'ai inventé" + IDS_INTEL_25773 "Manuel du super ordinateur@Manuel d'utilisation du super ordinateur." + IDS_INTEL_25774 "Catalogue des services super ordinateur@Catalogue des services super ordinateur." + IDS_INTEL_25775 "Mémo C.R.I.M.E.: paiement non effectué@A: Général Zhukov\nDe: Erin Keyes, comptable du C.R.I.M.E.\n\nSachez qu'en cas de non règlement de votre facture concernant le package Super Soldat, d'un montant de $1 million U.S. (plus $612,47 de frais de livraison), le C.R.I.M.E. pourra déclencher le projet Omega à la charge de l'Union Soviétique, comme il est indiqué dans les termes de la licence. Si vous avez déjà déposé cet argent sur un compte offshore, ne tenez pas compte de cette relance.\n\nLe C.R.I.M.E. vous remercie de vos transactions illégales!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25776 "Mémo C.R.I.M.E.: destin de Armstrong@A: Commandant Pim\nDe: bureau du Directeur\n\nLe Directeur a décidé d'une punition exceptionnelle pour Magnus Armstrong, dont le double-jeu et les tendances chauvinistes ont mené à la dissolution du projet Lambda et à la destruction du château Dumas. Sa loyauté restant ambivalente, elle sera forcée... En le transformant en Super soldat! Transférez-le immédiatement au laboratoire du sous-niveau 4 pour traitement." + IDS_INTEL_25777 "Mémo C.R.I.M.E.: sous-marin super secret@A: Commandant Pim\nDe: capitaine Clayton\n\nLe voyage inaugural du sous-marin super secret est un succès total (mis à part les quelques fuites dans la salle des machines et le fait que nous n'avons plus eu d'énergie pendant 15 minutes sans raison apparente). J'ai également le plaisir de signaler que les tests radar sont bien supérieurs à nos attentes. Nous avons pu nous approcher discrètement d'un navire de guerre américain et peindre des insanités sur sa coque, ce qui devrait engendrer un sacré tumulte la prochaine fois qu'il ira en cale sèche." + IDS_INTEL_25778 "UNUSED" + IDS_INTEL_25779 "UNUSED" + IDS_INTEL_25780 "" + IDS_INTEL_25781 "Mémo C.R.I.M.E.: salon privé@A: Commandant Pim\nDe: le Directeur\n\nCommandant, mon salon privé est interdit à toute personne, même à vous. Avant que vous tentiez une faible dénégation, sachez que j'ai découvert une bouteille de champagne vide, et je vous laisse deviner à qui appartiennent les empreintes. Ce salon est ma nacelle de sauvetage personnelle, en cas d'urgence. Si je dois passer quelques heures à attendre d'être secouru, je refuse que ce soit au milieu de détritus laissés par d'autres." + IDS_INTEL_25782 "Lettre: rumeur Epsilon@Wes,\n\nTu as entendu cette rumeur? J’ai intérêt à pondre un CV. J'ai entendu dire que M.A.L.A.D.I.E. recrutait. Tu ne connais personne là-bas? Je me disais que tu pourrais glisser un mot pour moi.\n\nJames" + IDS_INTEL_25783 "Lettre: fausse rumeur Epsilon@James,\n\nJe n'arrive pas à imaginer que tu crois a tout ce qu'on te dit. Le projet Epsilon est un succès! Le professeur Hibbard m'assure que les rumeurs sont fausses et je le crois!\n\nWes" + IDS_INTEL_25784 "UNUSED" + IDS_INTEL_25785 "UNUSED" + IDS_INTEL_25786 "Formulaire de plainte@FORMULAIRE DE PLAINTE DES EMPLOYES DU C.R.I.M.E.\nRaison de la plainte: réunions d'entreprise.\nCommentaires: depuis que cette organisation existe, tout va de pire en pire. D'abord, il y a eu les uniformes. Ensuite le logo. Et puis cette opération Remplacement de cheveux pour les hommes, ou je ne sais plus quoi, en bref, porter des perruques. Et maintenant il faut se lever à 6 heures du matin pour des " + IDS_INTEL_25787 "Checklist de maintenance@CHECKLIST DE MAINTENANCE:\n\n(x) Joints à changer\n(x) Dangers d'incendie\n(x) Stockage inadapté de produits chimiques\n(x) Sol glissant" + IDS_INTEL_25788 "Photographie du super sous-marin@" + IDS_INTEL_25789 "Mémo C.R.I.M.E.: fin de projet Epsilon@A: tous les personnels\nDe: Commandant Pim\n\nIl est mis un terme au projet Epsilon pour incompétence. Remarquez que vous verrez sans doute les corps des personnels impliqués flotter à tribord.\n\nQue cela serve de rappel, nous devons recruter avec plus d'attention la prochaine fois!\n\nRappelez-vous ce que signifie C.R.I.M.E.!" + IDS_INTEL_25790 "UNUSED" + IDS_INTEL_25791 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25792 "" + IDS_INTEL_25793 "" + IDS_INTEL_25794 "" + IDS_INTEL_25795 "" + IDS_INTEL_25796 "" + IDS_INTEL_25797 "" + IDS_INTEL_25798 "" + IDS_INTEL_25799 "" + IDS_INTEL_25800 "" + IDS_INTEL_25801 "Mémo C.R.I.M.E.: notre ami américain@A: Commandant Pim\nDe: le Directeur\n\nD'après notre zélé ami américain, les USA n'attendent qu'une occasion de déclencher une guerre nucléaire. Il ne leur manque qu'un motif pour le faire. Il a accueilli notre modeste proposition avec la plus grande joie. Je crois que nous avons trouvé l'allié idéal." + IDS_INTEL_25802 "Mémo C.R.I.M.E: Robots@A: Confucius Lee\nDe: Hugo Madmiller\n\nMonsieur, je suis au bout du roulot. A chaque fois que quelqu'un a un problème avec ces satanés robots, c'est de ma faute! Aujourd'hui, j'ai dû écouter Keith Stevens me parler des robots qu'il concevait quand il travaillait à Meutrelicieux. J'ai essayé de lui dire que ce n'était pas moi qui les concevait, mais il a continué. J'avais envie de lui retourner un direct en pleine poire." + IDS_INTEL_25803 "Mémo C.R.I.M.E.: Robots@A: J.P. Fenster, chef de la sécurité\nDe: Confucius Lee, robotique\n\nJ'ai commencé à transférer des plaintes concernant les super robots au bureau du Directeur, ainsi que nos spécifications originales. Je pense que votre pathétique conspiration pour me faire passer comme le responsable des défaillances des robots ne tient pas la route une seconde. Avant que vous n'envoyez vos prochaines spécifications (si vous vivez assez longtemps), vous devriez vous VERIFIER QUE VOUS FAITES DES PORTES DANS LESQUELLES LES ROBOTS PEUVENT PASSER, IDIOT!" + IDS_INTEL_25804 "Lettre: rumeur?@Bill\n\nC'est vrai ce qu'on dit qu'il s'est passé en Inde? Et pour Epsilon? Ce qu'il nous faut, c'est un syndicat!\n\nRhett" + IDS_INTEL_25805 "UNUSED" + IDS_INTEL_25806 "Note: les robots et l'eau@ATTENTION A TOUS LES PERSONNELS:\n\nEn raison des spécifications stupides du chef de la sécurité Fenster, les Super robots ne fonctionnent plus dès que le taux d'humidité dépasse 60 pourcent. Il est sans doute inutile que je précise qu'en conséquence, il est déconseillé d'exposer les robots à l'humidité. Gardez les robots loin des zones humides." + IDS_INTEL_25807 "Lettre: réponse de Martha@Clark,\n\nMaman m'a transféré ta lettre. Tu me prends pour une idiote? Revenir avec toi? Apres que tu m'aies abandonnée au Maroc ? J'étais au plus mal, Clark. Je suis restée des semaines dans le désert, torturée par le chagrin, jusqu'à ce que des nomades berbères me recueillent près de Merzouga. Clark, je suis tombée amoureuse du désert. Le vide laissé dans mon coeur par tes mensonges et ta trahison a été rempli par le grand Sahara. Il me soutient plus que tu l'as jamais fait.\n\nMartha" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25808 "Mémo C.R.I.M.E.: CT-180@A: Commandant Pim\nDe: équipier Miller\n\nJe ne parviens pas à terminer mon analyse de l'UNION CT-180. J'ai l'impression que j'ai collé le chargeur sur mon bureau. La maintenance a été prévenue et j'espère pouvoir continuer de travailler demain." + IDS_INTEL_25809 "Mémo C.R.I.M.E.: Magnus Armstrong@A: sécurité\nDe: Commandant Pim\n\nLe Directeur doit arriver plus tard dans la journée. Il voudra certainement voir Armstrong, alors préparez la sécurité. Nous ne voulons pas qu'il arrive un regrettable incident." + IDS_INTEL_25810 "" + IDS_INTEL_25811 "" + IDS_INTEL_25812 "" + IDS_INTEL_25813 "" + IDS_INTEL_25814 "" + IDS_INTEL_25815 "" + IDS_INTEL_25816 "" + IDS_INTEL_25817 "" + IDS_INTEL_25818 "" + IDS_INTEL_25819 "" + IDS_INTEL_25820 "" + IDS_INTEL_25821 "" + IDS_INTEL_25822 "" + IDS_INTEL_25823 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25824 "" + IDS_INTEL_25825 "" + IDS_INTEL_25826 "" + IDS_INTEL_25827 "" + IDS_INTEL_25828 "" + IDS_INTEL_25829 "" + IDS_INTEL_25830 "" + IDS_INTEL_25831 "" + IDS_INTEL_25832 "" + IDS_INTEL_25833 "" + IDS_INTEL_25834 "" + IDS_INTEL_25835 "" + IDS_INTEL_25836 "" + IDS_INTEL_25837 "" + IDS_INTEL_25838 "" + IDS_INTEL_25839 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25840 "" + IDS_INTEL_25841 "" + IDS_INTEL_25842 "" + IDS_INTEL_25843 "" + IDS_INTEL_25844 "" + IDS_INTEL_25845 "" + IDS_INTEL_25846 "" + IDS_INTEL_25847 "" + IDS_INTEL_25848 "" + IDS_INTEL_25849 "" + IDS_INTEL_25850 "" + IDS_INTEL_25851 "" + IDS_INTEL_25852 "" + IDS_INTEL_25853 "" + IDS_INTEL_25854 "" + IDS_INTEL_25855 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25856 "" + IDS_INTEL_25857 "" + IDS_INTEL_25858 "" + IDS_INTEL_25859 "" + IDS_INTEL_25860 "" + IDS_INTEL_25861 "Mémo C.R.I.M.E.: pensée positive@A: tous les personnels\nDe: Megan O'Malledy, responsable moral\n\nJe sais que nous travaillons dans un milieu brutal et violent qui se plaît à détruire et causer la misère, mais cela ne doit pas vous servir d'excuse pour être négatifs. J'ai entendu beaucoup de monde râler dernièrement. Je sais que certains n'aiment pas les nouveaux uniformes que j'ai dessinés. Ou le nouveau logo. Ce n'est pas grave, vraiment. Je continue de garder le sourire et tout va bien. Quand les gens me jettent un regard de biais, je leur retourne. Sales bâtards sans coeur! J'espère que vous pourrirez tous en enfer!" + IDS_INTEL_25862 "" + IDS_INTEL_25863 "" + IDS_INTEL_25864 "" + IDS_INTEL_25865 "" + IDS_INTEL_25866 "" + IDS_INTEL_25867 "" + IDS_INTEL_25868 "" + IDS_INTEL_25869 "" + IDS_INTEL_25870 "" + IDS_INTEL_25871 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25872 "" + IDS_INTEL_25873 "" + IDS_INTEL_25874 "" + IDS_INTEL_25875 "" + IDS_INTEL_25876 "" + IDS_INTEL_25877 "" + IDS_INTEL_25878 "" + IDS_INTEL_25879 "" + IDS_INTEL_25880 "" + IDS_INTEL_25881 "Dernières volontés et testament@Dernières volontés et testament\n\nMoi, Frank J. Thompson, sain de corps et d'esprit, je laisse par la présente ma voiture et ma collection de bandes dessinées à mon neveu, Chuck. Les 5000 dollars en liquide sous mon matelas, je les donne à ma mère, pour couvrir ma pension de l'an dernier. Désolé que ce soit si tard, maman. A mon frère, Larry, je ne laisse RIEN! En fait, non. Larry, je te donne un conseil: fais ta vie, parce que t'auras rien de la mienne!" + IDS_INTEL_25882 "Lettre d'amour@Fred,\n\nJe t'ai toujours aimé.\n\nGordon" + IDS_INTEL_25883 "" + IDS_INTEL_25884 "" + IDS_INTEL_25885 "" + IDS_INTEL_25886 "" + IDS_INTEL_25887 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25888 "" + IDS_INTEL_25889 "" + IDS_INTEL_25890 "" + IDS_INTEL_25891 "" + IDS_INTEL_25892 "" + IDS_INTEL_25893 "" + IDS_INTEL_25894 "" + IDS_INTEL_25895 "" + IDS_INTEL_25896 "" + IDS_INTEL_25897 "" + IDS_INTEL_25898 "" + IDS_INTEL_25899 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25920 "" + IDS_INTEL_25921 "Lettre: oncle Winston@Cher Eustace,\n\nJe n'ai pas pu te joindre au téléphone depuis hier après-midi, je dois donc t'écrire. J'ai parlé à l'oncle Winston aujourd'hui. Il se sent beaucoup mieux depuis qu'il n'a plus son calcul rhénal. Le docteur a dit qu'il était aussi gros que le plus gros diamant du monde. Je suis sûre qu'il apprécierait un coup de fil de son neveu préféré, mais c'est peut-être trop demander.\n\nTa mère" + IDS_INTEL_25922 "Lettre: Felicia Pullbutter@Cher Eustace,\n\nJe suis tombée sur Shirley Pullbutter au club hier soir. Elle avait des nouvelles TRES étranges à propos de Felicia. Il semble que son mari, cet idiot d'Edinbourg, se soit pendu dans sa cave le mois dernier. Ce qui veut dire que Felicia est de nouveau célibataire! Je sais que tu l'as toujours trouvée étrange, mais tu ne l'as pas vu depuis son électrolyse et qu'elle a fait refaire ses dents. Ses hanches sont beaucoup moins marquées et elle peut presque fermer la bouche maintenant.\n\nTa mère" + IDS_INTEL_25923 "Note: utiliser le C.C.H.@A TOUS LES PERSONNELS\n\nVérifiez que vous faites chauffer le C.C.H. avant de l'utiliser ou son contenu risque d'être rejeté. Les incidents des dernières semaines nous ont fait perdre plusieurs jours.\n\nUn technicien a été appelé, mais faites attention en attendant." + IDS_INTEL_25924 "Document C.R.I.M.E.: plan RP page 1@CONFIDENTIEL - Uniquement pour le Directeur\n\nRe: plan RP modifié: presse papier\n\nA compter de mai, nous aurons des publicités pleine page dans Criminalité Magazine et Maximum Vilain. Nous avons également organisé plusieurs entretiens, sous la menace, avec des journaux européens, et nous avons également fait parvenir plusieurs menaces de mort et lettres d'extorsion à la presse américaine.\n\nNous vous soumettrons séparément les plans média radio et télévision." + IDS_INTEL_25925 "Mémo C.RI.M.E.: Hygiène@A: Ressources humaines\nDe: Commandant adjoint Saperstein\n\nL'odeur corporelle de l'homme de main Frankel commence à influer sur le moral des troupes. J'ai déjà eu deux demandes de transfert dans les trois derniers jours." + IDS_INTEL_25926 "Mémo C.R.I.M.E.: Hygiène@A: tous les employés\nDe: ressources humaines\n\nA compter de mardi prochain, les uniformes devront être lavés une fois par semaine au moins. Déposez le linge dans la grotte D avant 09h00. Les employés qui ne se soumettront pas à ce règlement ne toucheront que la moitié de leur salaire hebdomadaire. Pensez au confort et à la santé de vos collègues, et souvenez-vous que nous travaillons dans un espace souterrain confiné et mal aéré. Merci." + IDS_INTEL_25927 "Document C.R.I.M.E.: plan RP page 2@CONFIDENTIEL - réservé au Directeur\n\nRe: plan RP révisé: Radio\n\nNotre plan radio est un peu plus léger que l'an dernier, mais nous avons organisé deux événements importants. Nous avons tout d'abord organisé votre participation à l'émission de Mark Mulroy. Vous devrez emmener une arme à feu pour être sûr de pouvoir parler, mais la couverture est excellente. Nous avons également acheté la station radio K.H.R.M. à Anaheim. Ce nouveau média nous permettra de faire passer des messages subliminaux dans les morceaux." + IDS_INTEL_25928 "Document C.R.I.M.E.: plan RP page 3@CONFIDENTIEL - réservé au Directeur\n\nRe: plan RP révisé: Télévision\n\nC'est encore la télévision qui a toutes nos faveurs. Pour le trimestre à venir, nous avons organisé plusieurs interruptions des programmes pour annoncer le jugement final: cinq le matin, sept en prime time et deux tard le soir. Nous pensons également pouvoir arranger votre participation à l'émission Au spectacle ce soir, y compris cinq minutes pour faire votre numéro." + IDS_INTEL_25929 "Lettre: exclusion@Cher Eustace,\n\nPar pitié ne me dis pas que tu es encore dans une phase d'exclusion. Je ne supporte pas quand tu n'es pas disponible émotionnellement. C'est à de tels moments que je me dis qu'il aurait mieux valu que j'achète un chien plutôt que de faire un fils. Les chiens sont stupides et sales, mais au moins ils ne sont pas ingrats.\n\nTa mère\n\nP.S. Tante Phyllis t'embrasse." + IDS_INTEL_25930 "Plan d'invasion, chapitre I@Plan d'invasion de Khios\n\nNous avons terminé notre analyse tactique de la situation de Khios et proposons la solution suivante:\n\nChapitre I. Arrivée\nIl n'y a qu'un seul accès à l'île par la mer: via une grotte qui longe une petite plage sur la côte ouest, avec les falaises. La route est traître, mais avec des Super soldats devant nous, nous devrions écraser toutes les défenses rencontrées. Le sous-marin super secret doit pouvoir émerger juste à côté de la plage pour un débarquement plus facile." + IDS_INTEL_25931 "Plan d'invasion, chapitre II@Plan d'invasion de Khios\n\nChapitre II. Attaque\nHistoriquement, les habitants de l'île se sont toujours reposés sur l'avantage tactique conféré par le terrain. Aucune force d'invasion conventionnelle n'a jamais réussi à escalader la falaise depuis la côte. Les défenseurs n'ont qu'à lâcher un peu d'huile bouillante dans les escaliers pour mettre fin à l'assaut. Nos Super soldats rendront ces tactiques inutiles contre nous et nous pourrons écraser facilement toute résistance." + IDS_INTEL_25932 "Plan d'invasion, chapitre III@Plan d'invasion de Khios\n\nChapitre III. Occupation\nUne fois l'île sécurisée, nous pourrons commencer la phase d'Initiation d'Emancipation de la Nation. Lors de la phase 1, nous devrons faire un recensement complet des survivants. Dans la phase 2, nous les vendrons à une société pharmaceutique pour ses expériences médicales. Lors de la phase 3, nous annoncerons par communiqué de presse international l'ouverture du parc à thème Aventure heureuse du C.R.I.M.E." + IDS_INTEL_25933 "" + IDS_INTEL_25934 "" + IDS_INTEL_25935 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25936 "" + IDS_INTEL_25937 "" + IDS_INTEL_25938 "" + IDS_INTEL_25939 "" + IDS_INTEL_25940 "" + IDS_INTEL_25941 "Mémo C.R.I.M.E.: Assassins@A: Dmitrij Volkov\nDe: le Directeur\n\nVos mimes n'ont pas eu plus de succès que je m'y attendais. Non pas qu'Isako se soit montrée supérieure. Je commence à m'interroger sur sa valeur pour l'organisation. Nous aurions dû faire appel à l'Australien." + IDS_INTEL_25942 "Mémo C.R.I.M.E.: visite surprise@A: Commandant associé Gudmundson\nDe: Carly Isadora Tehore, coordinatrice des activités\n\nALERTE CODE ROUGE\n\nJe viens d'avoir la mère du Directeur au téléphone. Elle envisage de lui faire une visite surprise de la semaine prochaine jusqu'au mois d'octobre, et elle veut que je lui prépare une résidence. J'ai proposé de m'occuper de ses billets d'avion, mais elle m'a dit qu'elle ne voulait pas se retrouver en Birmanie cette fois. Que dois-je faire?" + IDS_INTEL_25943 "Mémo C.R.I.M.E.: mère du Directeur@A: Carly Isadora Tehore, coordinatrice des activités\nDe: Commandant associé Gudmundson\n\nInutile de paniquer. Nous avons des plans de secours pour de telles situations d'urgence. D'après mes registres, nous avons évité sa dernière visite en utilisant l'excuse 47: vacances d'entreprise à Detroit. Cette fois, je pense que nous allons descendre directement à l'excuse 66: quarantaine en raison d'une épidémie de scarlatine." + IDS_INTEL_25944 "" + IDS_INTEL_25945 "" + IDS_INTEL_25946 "" + IDS_INTEL_25947 "" + IDS_INTEL_25948 "" + IDS_INTEL_25949 "" + IDS_INTEL_25950 "" + IDS_INTEL_25951 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25952 "" + IDS_INTEL_25953 "" + IDS_INTEL_25954 "" + IDS_INTEL_25955 "" + IDS_INTEL_25956 "" + IDS_INTEL_25957 "" + IDS_INTEL_25958 "" + IDS_INTEL_25959 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25980 "" + IDS_INTEL_25981 "" + IDS_INTEL_25982 "" + IDS_INTEL_25983 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25984 "" + IDS_INTEL_25985 "" + IDS_INTEL_25986 "" + IDS_INTEL_25987 "" + IDS_INTEL_25988 "" + IDS_INTEL_25989 "" + IDS_INTEL_25990 "Mémo : sérum anti-super soldat@Chère Cate,\n\nVous pouvez utiliser ces capsules de sérum anti-super soldat avec votre lanceur utilitaire CT-180. Elles ne sont malheureusement pas assez concentrées pour détruire une cible active, mais vous pouvez étourdir temporairement les super soldats en leur infligeant suffisamment de dégâts. Utilisez alors le sérum pour les détruire. Mais faites vite, s'ils récupèrent, vous devrez les assommer de nouveau !\n\nSincèrement,\nD. Schenker" + IDS_INTEL_25991 "" + IDS_INTEL_25992 "" + IDS_INTEL_25993 "" + IDS_INTEL_25994 "" + IDS_INTEL_25995 "" + IDS_INTEL_25996 "" + IDS_INTEL_25997 "" + IDS_INTEL_25998 "" + IDS_INTEL_25999 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26200 "" + IDS_INTEL_26201 "Lettre: clés@Très chère Phoolwati,\n\nJe prie humblement Kaamdhenu, la vache sacrée, que tu acceptes de me revoir. J'ai laissé les clés de l'appartement à l'endroit habituel. Comme je suis impatient de te voir!\n\nAvec amour, Balaji\n" + IDS_INTEL_26202 "Lettre: fleurs@Cher Balaji,\n\nTu m'as manqué! Viendras-tu me voir à mon appartement? Je préparerai du tika masala à la menthe.\n\nPhoolwati\n\nPS: peux-tu ne pas prendre de fleurs dans mon bac? J'apprécie le geste, mais mes jolies fleurs blanches ne s'épanouiront pas ainsi molestées.\n" + IDS_INTEL_26203 "" + IDS_INTEL_26204 "" + IDS_INTEL_26205 "" + IDS_INTEL_26206 "" + IDS_INTEL_26207 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26208 "" + IDS_INTEL_26209 "" + IDS_INTEL_26210 "" + IDS_INTEL_26211 "" + IDS_INTEL_26212 "" + IDS_INTEL_26213 "" + IDS_INTEL_26214 "" + IDS_INTEL_26215 "" + IDS_INTEL_26216 "" + IDS_INTEL_26217 "" + IDS_INTEL_26218 "" + IDS_INTEL_26219 "" + IDS_INTEL_26220 "" + IDS_INTEL_26221 "" + IDS_INTEL_26222 "" + IDS_INTEL_26223 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26224 "" + IDS_INTEL_26225 "" + IDS_INTEL_26226 "" + IDS_INTEL_26227 "" + IDS_INTEL_26228 "" + IDS_INTEL_26229 "" + IDS_INTEL_26230 "" + IDS_INTEL_26231 "" + IDS_INTEL_26232 "" + IDS_INTEL_26233 "" + IDS_INTEL_26234 "" + IDS_INTEL_26235 "" + IDS_INTEL_26236 "" + IDS_INTEL_26237 "" + IDS_INTEL_26238 "" + IDS_INTEL_26239 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26240 "" + IDS_INTEL_26241 "Mémo C.R.I.M.E.: prisonniers@A: D. Kussman\n\nLe Directeur a demandé que tous les prisonniers soient transférés dans notre base sous-marine dans la Mer Egée. Contactez les RH pour plus de détails.\n" + IDS_INTEL_26242 "" + IDS_INTEL_26243 "" + IDS_INTEL_26244 "" + IDS_INTEL_26245 "" + IDS_INTEL_26246 "" + IDS_INTEL_26247 "" + IDS_INTEL_26248 "" + IDS_INTEL_26249 "" + IDS_INTEL_26250 "" + IDS_INTEL_26251 "" + IDS_INTEL_26252 "" + IDS_INTEL_26253 "" + IDS_INTEL_26254 "" + IDS_INTEL_26255 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26256 "" + IDS_INTEL_26257 "" + IDS_INTEL_26258 "" + IDS_INTEL_26259 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26359 "" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5520 + "Trouvez des cibles appropriées et placez 4 charges." + IDS_COOP_MISSION_OBJ_5521 + "Trouvez des cibles appropriées et placez 3 charges." + IDS_COOP_MISSION_OBJ_5522 + "Trouvez des cibles appropriées et placez 2 charges." + IDS_COOP_MISSION_OBJ_5523 + "Trouvez des cibles appropriées et placez 1 charge." + IDS_COOP_MISSION_OBJ_5524 + "Retournez au point d'extraction pour être récupéré." + IDS_COOP_MISSION_OBJ_5525 "Les mimes ont 4 otages. Sauvez-les." + IDS_COOP_MISSION_OBJ_5526 "Les mimes ont 3 otages. Sauvez-les." + IDS_COOP_MISSION_OBJ_5527 "Les mimes ont 2 otages. Sauvez-les." + IDS_COOP_MISSION_OBJ_5528 "Les mimes ont 1 otage. Sauvez-le." + IDS_COOP_MISSION_OBJ_5529 + "Retournez au point d'extraction à l'entrée pour connaître votre prochaine mission." + IDS_COOP_MISSION_OBJ_5530 + "Trouvez 50 roupies et payez Crazy Harij pour qu'il vous laisse passer les portes menant au centre de la ville." + IDS_COOP_MISSION_OBJ_5531 + "Rejoignez l'hélicoptère de l'UNION pour votre extraction." + IDS_COOP_MISSION_OBJ_5532 "Cate est morte ! La mission a échoué !" + IDS_COOP_MISSION_OBJ_5533 "" + IDS_COOP_MISSION_OBJ_5534 "" + IDS_COOP_MISSION_OBJ_5535 "" +END + +STRINGTABLE +BEGIN + IDS_STRING5577 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3500 "" + IDS_SEARCH_ITEM_3501 "Vous avez trouvé un stylo." + IDS_SEARCH_ITEM_3502 "Vous avez trouvé un piège à souris vide." + IDS_SEARCH_ITEM_3503 "Vous avez trouvé du papier." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3504 "Vous avez trouvé un sandwich au jambon." + IDS_SEARCH_ITEM_3505 "Vous avez trouvé un piège à souris avec une souris morte." + IDS_SEARCH_ITEM_3506 "Vous avez trouvé un magazine de bande dessinée usagé." + IDS_SEARCH_ITEM_3507 "Vous avez trouvé du papier vierge." + IDS_SEARCH_ITEM_3508 "Vous avez trouvé une boîte de mouchoirs." + IDS_SEARCH_ITEM_3509 "Vous avez trouvé un flacon de fortifiant pour cheveux." + IDS_SEARCH_ITEM_3510 "Vous avez trouvé du rouge à lèvres." + IDS_SEARCH_ITEM_3511 "Vous avez trouvé des bas." + IDS_SEARCH_ITEM_3512 "Vous avez trouvé un paquet de chewing-gum." + IDS_SEARCH_ITEM_3513 "Vous avez trouvé une gomme." + IDS_SEARCH_ITEM_3514 "Vous avez trouvé un crayon dont la gomme a été arrachée." + IDS_SEARCH_ITEM_3515 "Vous avez trouvé une petite bouteille de gin." + IDS_SEARCH_ITEM_3516 "Vous avez trouvé une agrafeuse en panne." + IDS_SEARCH_ITEM_3517 "Vous avez trouvé un catalogue de fournitures de bureau." + IDS_SEARCH_ITEM_3518 "Vous avez trouvé un carnet rempli de griffonnages." + IDS_SEARCH_ITEM_3519 "Vous avez trouvé un beignet à moitié mangé." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3520 "Vous avez trouvé une fourchette en plastique." + IDS_SEARCH_ITEM_3521 "Vous avez trouvé des ciseaux pour gaucher." + IDS_SEARCH_ITEM_3522 "Vous avez trouvé une boîte de punaises." + IDS_SEARCH_ITEM_3523 "Vous avez trouvé six stylos noirs, tous secs." + IDS_SEARCH_ITEM_3524 "Vous avez trouvé un flacon d'aspirine." + IDS_SEARCH_ITEM_3525 "Vous avez trouvé un marqueur permanent sans bouchon." + IDS_SEARCH_ITEM_3526 "Vous avez trouvé un stick de déodorant neuf." + IDS_SEARCH_ITEM_3527 "Vous avez trouvé un paquet de bonbons à la menthe." + IDS_SEARCH_ITEM_3528 "Vous avez trouvé un tampon en caoutchouc sans manche." + IDS_SEARCH_ITEM_3529 "Vous avez trouvé un morceau de fromage." + IDS_SEARCH_ITEM_3530 "Vous avez trouvé un avion en papier roulé en boule." + IDS_SEARCH_ITEM_3531 "Vous avez trouvé un flacon de crème pour les mains." + IDS_SEARCH_ITEM_3532 "Vous avez trouvé une brosse à dents sale." + IDS_SEARCH_ITEM_3533 "" + IDS_SEARCH_ITEM_3534 "" + IDS_SEARCH_ITEM_3535 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3536 "" + IDS_SEARCH_ITEM_3537 "" + IDS_SEARCH_ITEM_3538 "" + IDS_SEARCH_ITEM_3539 "" + IDS_SEARCH_ITEM_3540 "" + IDS_SEARCH_ITEM_3541 "" + IDS_SEARCH_ITEM_3542 "" + IDS_SEARCH_ITEM_3543 "" + IDS_SEARCH_ITEM_3544 "" + IDS_SEARCH_ITEM_3545 "" + IDS_SEARCH_ITEM_3546 "" + IDS_SEARCH_ITEM_3547 "" + IDS_SEARCH_ITEM_3548 "" + IDS_SEARCH_ITEM_3549 "" + IDS_SEARCH_ITEM_3550 "" + IDS_SEARCH_ITEM_3551 "Vous avez trouvé une feuille d'imposition US de 1958." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3552 "Vous avez trouvé un paquet de lettres d'amour." + IDS_SEARCH_ITEM_3553 "Vous avez trouvé un manuel de bonne conduite." + IDS_SEARCH_ITEM_3554 "Vous avez trouvé la page 387 d'un dossier de divorce." + IDS_SEARCH_ITEM_3555 "Vous avez trouvé un formulaire de demande de congés." + IDS_SEARCH_ITEM_3556 "Vous avez trouvé le Dernier testament de quelqu'un." + IDS_SEARCH_ITEM_3557 "Vous avez trouvé un roman inachevé." + IDS_SEARCH_ITEM_3558 "" + IDS_SEARCH_ITEM_3559 "" + IDS_SEARCH_ITEM_3560 "" + IDS_SEARCH_ITEM_3561 "" + IDS_SEARCH_ITEM_3562 "" + IDS_SEARCH_ITEM_3563 "" + IDS_SEARCH_ITEM_3564 "" + IDS_SEARCH_ITEM_3565 "" + IDS_SEARCH_ITEM_3566 "" + IDS_SEARCH_ITEM_3567 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3568 "" + IDS_SEARCH_ITEM_3569 "" + IDS_SEARCH_ITEM_3570 "" + IDS_SEARCH_ITEM_3571 "" + IDS_SEARCH_ITEM_3572 "" + IDS_SEARCH_ITEM_3573 "" + IDS_SEARCH_ITEM_3574 "" + IDS_SEARCH_ITEM_3575 "" + IDS_SEARCH_ITEM_3576 "Vous avez trouvé une photo dédicacée de l'Etonnante Olga." + IDS_SEARCH_ITEM_3577 "Vous avez trouvé un billet pour le spectacle de l'Etonnante Olga et ses Félins volants." + IDS_SEARCH_ITEM_3578 "Vous avez trouvé le roman Mon oncle Vanya de Anton Tchekhov." + IDS_SEARCH_ITEM_3579 "Vous avez trouvé une liste de courses: papier toilette, savon et carottes." + IDS_SEARCH_ITEM_3580 "Vous avez trouvé un reçu pour des rations militaires." + IDS_SEARCH_ITEM_3581 "Vous avez trouvé le roman Ceux d'Alep... de Vladimir Nabokov." + IDS_SEARCH_ITEM_3582 "Vous avez trouvé le roman Tarass Bulba de Nikolaï Gogol." + IDS_SEARCH_ITEM_3583 "Vous avez trouvé le poème, Vénus et Madonne de Mihai Eminescu." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3584 "Vous avez trouvé une photo dédicacée des Félins volants." + IDS_SEARCH_ITEM_3585 "" + IDS_SEARCH_ITEM_3586 "" + IDS_SEARCH_ITEM_3587 "" + IDS_SEARCH_ITEM_3588 "" + IDS_SEARCH_ITEM_3589 "" + IDS_SEARCH_ITEM_3590 "" + IDS_SEARCH_ITEM_3591 "" + IDS_SEARCH_ITEM_3592 "" + IDS_SEARCH_ITEM_3593 "" + IDS_SEARCH_ITEM_3594 "" + IDS_SEARCH_ITEM_3595 "" + IDS_SEARCH_ITEM_3596 "" + IDS_SEARCH_ITEM_3597 "" + IDS_SEARCH_ITEM_3598 "" + IDS_SEARCH_ITEM_3599 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3600 "" + IDS_SEARCH_ITEM_3601 "Vous avez trouvé une bouteille de vodka." + IDS_SEARCH_ITEM_3602 "Vous avez trouvé des cartes à collectionner de la ligue de hockey sibérienne." + IDS_SEARCH_ITEM_3603 "Vous avez trouvé une boîte de conserve de viande." + IDS_SEARCH_ITEM_3604 "Vous avez trouvé un magazine, Camarades dénudées." + IDS_SEARCH_ITEM_3605 "Vous avez trouvé un billet de tombola pour gagner un voyage dans la belle ville de Mourmansk!" + IDS_SEARCH_ITEM_3606 "Vous avez trouvé un tampon avec le mot REFUSE." + IDS_SEARCH_ITEM_3607 "Vous avez trouvé une mitaine rouge." + IDS_SEARCH_ITEM_3608 "Vous avez trouvé un paquet de cigarettes yougoslaves." + IDS_SEARCH_ITEM_3609 "Vous avez trouvé un briquet qui ne marche pas." + IDS_SEARCH_ITEM_3610 "Vous avez trouvé un puffin mort." + IDS_SEARCH_ITEM_3611 "Vous avez trouvé une copie usée de Guerre et Paix." + IDS_SEARCH_ITEM_3612 "Vous avez trouvé un règlement de bonne conduite militaire." + IDS_SEARCH_ITEM_3613 "Vous avez trouvé une photo de tracteur." + IDS_SEARCH_ITEM_3614 "Vous avez trouvé un peu de coton." + IDS_SEARCH_ITEM_3615 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3616 "" + IDS_SEARCH_ITEM_3617 "" + IDS_SEARCH_ITEM_3618 "" + IDS_SEARCH_ITEM_3619 "" + IDS_SEARCH_ITEM_3620 "" + IDS_SEARCH_ITEM_3621 "" + IDS_SEARCH_ITEM_3622 "" + IDS_SEARCH_ITEM_3623 "" + IDS_SEARCH_ITEM_3624 "" + IDS_SEARCH_ITEM_3625 "" + IDS_SEARCH_ITEM_3626 "Vous avez trouvé un paquet de bonbons à la menthe." + IDS_SEARCH_ITEM_3627 "Vous avez trouvé un chewing-gum mâché." + IDS_SEARCH_ITEM_3628 "Vous avez trouvé une boule de peluche." + IDS_SEARCH_ITEM_3629 "Vous avez trouvé un yo-yo." + IDS_SEARCH_ITEM_3630 "Vous avez trouvé un talon de ticket de cinéma." + IDS_SEARCH_ITEM_3631 "Vous avez trouvé une pomme pourrie" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3632 "Vous avez trouvé un couteau de poche." + IDS_SEARCH_ITEM_3633 "Vous avez trouvé une liste de course." + IDS_SEARCH_ITEM_3634 "Vous avez trouvé un peigne en plastique." + IDS_SEARCH_ITEM_3635 "Vous avez trouvé une lettre Cher John." + IDS_SEARCH_ITEM_3636 "Vous avez trouvé un mouchoir usagé." + IDS_SEARCH_ITEM_3637 "Vous avez trouvé un morceau de papier roulé en boule." + IDS_SEARCH_ITEM_3638 "Vous avez trouvé une paire de dés." + IDS_SEARCH_ITEM_3639 "Vous avez trouvé un paquet de cartes." + IDS_SEARCH_ITEM_3640 "Vous avez trouvé des vitamines sales." + IDS_SEARCH_ITEM_3641 "Vous avez trouvé du sirop pour la toux, goût cerise." + IDS_SEARCH_ITEM_3642 "Vous avez trouvé du sirop pour la toux à la menthe." + IDS_SEARCH_ITEM_3643 "Vous avez trouvé un vieux mouchoir utilisé par quelqu'un qui avait un mauvais rhume." + IDS_SEARCH_ITEM_3644 "Vous avez trouvé une grosse boule d'aluminium." + IDS_SEARCH_ITEM_3645 "Vous avez trouvé la photo d'un affreux bébé." + IDS_SEARCH_ITEM_3646 "Vous avez trouvé un emballage de bonbon." + IDS_SEARCH_ITEM_3647 "Vous avez trouvé des courbeurs de cils." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3648 "Vous avez trouvé un élastique cassé." + IDS_SEARCH_ITEM_3649 "Vous avez trouvé un petit soldat en plastique." + IDS_SEARCH_ITEM_3650 "Vous avez trouvé une dent." + IDS_SEARCH_ITEM_3651 "Vous avez trouvé des morceaux d'ongle." + IDS_SEARCH_ITEM_3652 "Vous avez trouvé des billes." + IDS_SEARCH_ITEM_3653 "Vous avez trouvé du fil dentaire usagé." + IDS_SEARCH_ITEM_3654 "Vous avez trouvé une patte de lapin." + IDS_SEARCH_ITEM_3655 "Vous avez trouvé un bouton perdu." + IDS_SEARCH_ITEM_3656 "Vous avez trouvé des miettes de pain." + IDS_SEARCH_ITEM_3657 "" + IDS_SEARCH_ITEM_3658 "" + IDS_SEARCH_ITEM_3659 "" + IDS_SEARCH_ITEM_3660 "" + IDS_SEARCH_ITEM_3661 "Vous avez trouvé une mitaine rose." + IDS_SEARCH_ITEM_3662 "Vous avez trouvé du baume pour les lèvres à l'huile de poisson." + IDS_SEARCH_ITEM_3663 "Vous avez trouvé un billet pour le spectacle matinal de l'Etonnante Olga et ses Félins volants." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3664 "Vous avez trouvé un piroshki." + IDS_SEARCH_ITEM_3665 "" + IDS_SEARCH_ITEM_3666 "" + IDS_SEARCH_ITEM_3667 "" + IDS_SEARCH_ITEM_3668 "" + IDS_SEARCH_ITEM_3669 "" + IDS_SEARCH_ITEM_3670 "" + IDS_SEARCH_ITEM_3671 "" + IDS_SEARCH_ITEM_3672 "" + IDS_SEARCH_ITEM_3673 "" + IDS_SEARCH_ITEM_3674 "" + IDS_SEARCH_ITEM_3675 "" + IDS_SEARCH_ITEM_3676 "" + IDS_SEARCH_ITEM_3677 "" + IDS_SEARCH_ITEM_3678 "" + IDS_SEARCH_ITEM_3679 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3680 "" + IDS_SEARCH_ITEM_3681 "Vous avez trouvé des pièces de Go." + IDS_SEARCH_ITEM_3682 "Vous avez trouvé des bonbons Pocky à la fraise. Miam !" + IDS_SEARCH_ITEM_3683 "Vous avez trouvé un bourgeon de cerisier écrasé." + IDS_SEARCH_ITEM_3684 "Vous avez trouvé du rouge à lèvres." + IDS_SEARCH_ITEM_3685 "Vous avez trouvé une barrette." + IDS_SEARCH_ITEM_3686 "Vous avez trouvé un tube de rouge à lèvres brillant." + IDS_SEARCH_ITEM_3687 "Vous avez trouvé un billet pour le film Kaiju Soshingeki." + IDS_SEARCH_ITEM_3688 "Vous avez trouvé des faux cils." + IDS_SEARCH_ITEM_3689 "Vous avez trouvé une carte de crédit." + IDS_SEARCH_ITEM_3690 "Vous avez trouvé un flacon de parfum tsubaki." + IDS_SEARCH_ITEM_3691 "Vous avez trouvé un miroir cassé." + IDS_SEARCH_ITEM_3692 "Vous avez trouvé un charme en bois pour contrer le mal." + IDS_SEARCH_ITEM_3693 "Vous avez trouvé un mouchoir en dentelle." + IDS_SEARCH_ITEM_3694 "Vous avez trouvé un charme en or pour la bonne santé." + IDS_SEARCH_ITEM_3695 "Vous avez trouvé un charme en argent pour l'amour." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3696 "Vous avez trouvé un bonbon en pâte rouge à moitié fondu." + IDS_SEARCH_ITEM_3697 "Vous avez trouvé un morceau de ebi nigiri dans un mouchoir." + IDS_SEARCH_ITEM_3698 "Vous avez trouvé une tirelire vide." + IDS_SEARCH_ITEM_3699 "" + IDS_SEARCH_ITEM_3700 "" + IDS_SEARCH_ITEM_3701 "Vous avez trouvé une bouteille de nettoyant à l'orange Master Chi." + IDS_SEARCH_ITEM_3702 "Vous avez trouvé un stylo de calligraphie." + IDS_SEARCH_ITEM_3703 "Vous avez trouvé un petit assortiment de couture." + IDS_SEARCH_ITEM_3704 "Vous avez trouvé un morceau de shoku pan entamé." + IDS_SEARCH_ITEM_3705 "Vous avez trouvé une racine de wasabi." + IDS_SEARCH_ITEM_3706 "Vous avez trouvé une bouteille de sauce de soja." + IDS_SEARCH_ITEM_3707 "" + IDS_SEARCH_ITEM_3708 "" + IDS_SEARCH_ITEM_3709 "" + IDS_SEARCH_ITEM_3710 "" + IDS_SEARCH_ITEM_3711 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3712 "" + IDS_SEARCH_ITEM_3713 "" + IDS_SEARCH_ITEM_3714 "" + IDS_SEARCH_ITEM_3715 "" + IDS_SEARCH_ITEM_3716 "" + IDS_SEARCH_ITEM_3717 "" + IDS_SEARCH_ITEM_3718 "" + IDS_SEARCH_ITEM_3719 "" + IDS_SEARCH_ITEM_3720 "" + IDS_SEARCH_ITEM_3721 "Vous avez trouvé un mouchoir avec un monogramme." + IDS_SEARCH_ITEM_3722 "Vous avez trouvé un sachet de tabac à mâcher." + IDS_SEARCH_ITEM_3723 "Vous avez trouvé une feuille de score de cricket." + IDS_SEARCH_ITEM_3724 "Vous avez trouvé une image de Shasti, la déesse féline du Bengale et protectrice des enfants." + IDS_SEARCH_ITEM_3725 "Une gravure de Lakshmi, la déesse de la prospérité et de la santé." + IDS_SEARCH_ITEM_3726 "Vous avez trouvé une image de Durga, déesse de la vie maritale." + IDS_SEARCH_ITEM_3727 "Une image de Kartikeya, le deuxième fils de Shiva, et dieu de la guerre et de la destruction." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3728 "Vous avez trouvé une image de la déesse Gauri, qui garantit à la jeune fille un mari vertueux." + IDS_SEARCH_ITEM_3729 "Un charme de prière de Angaraka qui doit libérer le porteur de ses dettes et des maladies de peau." + IDS_SEARCH_ITEM_3730 "Vous avez trouvé des modules de cardamome." + IDS_SEARCH_ITEM_3731 "Une statue en bronze de Kaamdhenu, la vache sacrée qui exauce tous les souhaits." + IDS_SEARCH_ITEM_3732 "Un petit charme de Saraswati en argent, jouant de la vina." + IDS_SEARCH_ITEM_3733 "Vous avez trouvé un mouchoir en batik." + IDS_SEARCH_ITEM_3734 "Vous avez trouvé du tamarin pourri." + IDS_SEARCH_ITEM_3735 "Vous avez trouvé du koorka entamé." + IDS_SEARCH_ITEM_3736 "" + IDS_SEARCH_ITEM_3737 "" + IDS_SEARCH_ITEM_3738 "" + IDS_SEARCH_ITEM_3739 "" + IDS_SEARCH_ITEM_3740 "" + IDS_SEARCH_ITEM_3741 "Vous avez trouvé un pot de Nutella." + IDS_SEARCH_ITEM_3742 "Vous avez trouvé un paquet de cartes Teen Pathi." + IDS_SEARCH_ITEM_3743 "Vous avez trouvé un flacon d'huile de noix de coco." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3744 "Vous avez trouvé un pot de poudre pour le visage." + IDS_SEARCH_ITEM_3745 "Vous avez trouvé un loris empaillé." + IDS_SEARCH_ITEM_3746 "Vous avez trouvé un pot de poudre de henné et d'huile de mehendi." + IDS_SEARCH_ITEM_3747 "Vous avez trouvé un bol de Mouton Patialashahi." + IDS_SEARCH_ITEM_3748 "Vous avez trouvé un sac de riz basmati plein de charançons." + IDS_SEARCH_ITEM_3749 "Vous avez trouvé un livre, Atithi Devo Bhava." + IDS_SEARCH_ITEM_3750 "Vous avez trouvé une paire de bâtons Gilli Danda." + IDS_SEARCH_ITEM_3751 "Vous avez trouvé une bouteille d'huile capillaire." + IDS_SEARCH_ITEM_3752 "Vous avez trouvé un pot de condiments à la menthe." + IDS_SEARCH_ITEM_3753 "Vous avez trouvé un pot de ghee." + IDS_SEARCH_ITEM_3754 "" + IDS_SEARCH_ITEM_3755 "" + IDS_SEARCH_ITEM_3756 "" + IDS_SEARCH_ITEM_3757 "" + IDS_SEARCH_ITEM_3758 "" + IDS_SEARCH_ITEM_3759 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3760 "" + IDS_SEARCH_ITEM_3761 "Vous avez trouvé une facture pour du thé noir indien." + IDS_SEARCH_ITEM_3762 "Une sélection de vers du Ramayana de Valmiki." + IDS_SEARCH_ITEM_3763 "Vous avez trouvé un exemplaire de Meghaduta, Le Messager Céleste, de Kalidasa." + IDS_SEARCH_ITEM_3764 "La pochette d'un disque: musique religieuse d'Inde, par Alain Daniélou." + IDS_SEARCH_ITEM_3765 "Vous avez trouvé la recette du Ghost Ki Kashmiri Biryani." + IDS_SEARCH_ITEM_3766 "Vous avez trouvé la recette du Porc Vindaloo." + IDS_SEARCH_ITEM_3767 "Vous avez trouvé une facture pour services de nettoyage des Laveurs de vitres Nanda Devi." + IDS_SEARCH_ITEM_3768 "Une prière à Bhavani, patronne des femmes enceintes. " + IDS_SEARCH_ITEM_3769 "Une prière à Banka-Mundi, déesse chasseresse de Khoud, pour protéger contre les bêtes de la jungle." + IDS_SEARCH_ITEM_3770 "Vous avez trouvé un exemplaire du livre: Mehendi, trucs et astuces." + IDS_SEARCH_ITEM_3771 "" + IDS_SEARCH_ITEM_3772 "" + IDS_SEARCH_ITEM_3773 "" + IDS_SEARCH_ITEM_3774 "" + IDS_SEARCH_ITEM_3775 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4768 "Un badge du C.R.I.M.E. pour entrer dans les zones protégées." + IDS_KEY_DESC_4769 "L'étiquette sur le tube indique : pièce de remplacement pour l'unité de traitement des données M-9." + IDS_KEY_DESC_4770 "Le code de sécurité de l'unité de traitement des données M-9." + IDS_KEY_DESC_4771 "Un gadget utilisé pour accéder à l'unité de traitement des données." + IDS_KEY_DESC_4772 "Le mot de passe nécessaire pour démarrer l'unité de traitement des données M-9." + IDS_KEY_DESC_4773 "Liste le numéro du fichier contenant des informations sur le projet Omega." + IDS_KEY_DESC_4774 "Les roupies sont la monnaie de l'Inde." + IDS_KEY_DESC_4775 "Ce sont les clés pour démarrer la motoneige." + IDS_KEY_DESC_4776 "Le sucre peut être utilisé dans le café, mais aussi mélangé à de l'essence pour arrêter un moteur." + IDS_KEY_DESC_4777 "Le sucre peut être utilisé dans le café, mais aussi mélangé à de l'essence pour arrêter un moteur." + IDS_KEY_DESC_4778 "Les lunettes du Dr Schenker sont faciles à reconnaître. Les épais verres sont complètement rayés et n'ont pas été nettoyés depuis des mois. Difficile de croire qu'on peut voir quoi que ce soit avec elles." + IDS_KEY_DESC_4779 "La clé de contact d'une moto-neige." + IDS_KEY_DESC_4780 "Cinquante roupies. Vous devriez les donner à Crazy Harij pour qu'il ouvre les portes de la ville." + IDS_KEY_DESC_4781 "Ce catalogue est nécessaire pour obtenir du département super-ordinateur la version 1.0 du manuel de l'utilisateur du super-ordinateur" + IDS_KEY_DESC_4782 "Cette clé est nécessaire pour utiliser la grue dans la base sous-marine." + IDS_KEY_DESC_4783 "Cette carte de sécurité peut être utilisée sur les lecteurs de carte des portes donnant accès aux zones interdites." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3776 "" + IDS_SEARCH_ITEM_3777 "" + IDS_SEARCH_ITEM_3778 "" + IDS_SEARCH_ITEM_3779 "" + IDS_SEARCH_ITEM_3780 "" + IDS_SEARCH_ITEM_3781 "Vous avez trouvé un ballon dégonflé." + IDS_SEARCH_ITEM_3782 "Vous avez trouvé un pot de préparation pour crêpes." + IDS_SEARCH_ITEM_3783 "Vous avez trouvé un kazoo cassé." + IDS_SEARCH_ITEM_3784 "Vous avez trouvé un gant blanc." + IDS_SEARCH_ITEM_3785 "Vous avez trouvé un mouchoir rouge, violet et jaune." + IDS_SEARCH_ITEM_3786 "Vous avez trouvé le dessin d'un éléphant." + IDS_SEARCH_ITEM_3787 "Vous avez trouvé un bâton de maquillage bleu." + IDS_SEARCH_ITEM_3788 "Vous avez trouvé un tube de peinture rouge." + IDS_SEARCH_ITEM_3789 "Vous avez trouvé un dictionnaire Mime-Anglais." + IDS_SEARCH_ITEM_3790 "Vous avez trouvé une pétition pour faire du Pantomime un sport olympique." + IDS_SEARCH_ITEM_3791 "Vous avez trouvé un livret nommé: le Mime pour les mauvais." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3792 "Vous avez trouvé un œillet rose." + IDS_SEARCH_ITEM_3793 "Vous avez trouvé une bouteille de kirsch." + IDS_SEARCH_ITEM_3794 "Vous avez trouvé un tube de peinture blanche." + IDS_SEARCH_ITEM_3795 "" + IDS_SEARCH_ITEM_3796 "" + IDS_SEARCH_ITEM_3797 "" + IDS_SEARCH_ITEM_3798 "" + IDS_SEARCH_ITEM_3799 "" + IDS_SEARCH_ITEM_3800 "" +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7500 "" + IDS_DECISIONS_7501 "Parlez-moi de mes Objectifs." + IDS_DECISIONS_7502 "Parlez-moi de mon Equipement." + IDS_DECISIONS_7503 "Parlez-moi des points de compétence." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7008 "Vous n'avez pas les clés." + IDS_TRANSMISSIONS_7009 "Le scooter des neiges n'a plus de carburant." + IDS_TRANSMISSIONS_7010 "Il manque un tube informatique." + IDS_TRANSMISSIONS_7011 "Il vous faut un mot de passe pour accéder à cet ordinateur." + IDS_TRANSMISSIONS_7012 "Tapez le numéro d'index." + IDS_TRANSMISSIONS_7013 "Ca ne marche pas sans piles." + IDS_TRANSMISSIONS_7014 "C'est trop lourd pour le soulever." + IDS_TRANSMISSIONS_7015 "J'ai trouvé 10 roupies." + IDS_TRANSMISSIONS_7016 "J'ai trouvé 10 roupies, plus que 40 à trouver." + IDS_TRANSMISSIONS_7017 "J'ai trouvé 10 roupies, plus que 30 à trouver." + IDS_TRANSMISSIONS_7018 "J'ai trouvé 10 roupies, plus que 20 à trouver." + IDS_TRANSMISSIONS_7019 "J'ai trouvé 10 roupies, plus que 10 à trouver." + IDS_TRANSMISSIONS_7020 "Et voilà 50 roupies! Direction la porte." + IDS_TRANSMISSIONS_7021 "J'ai trouvé une note de Balaji pour sa maîtresse. Nous devons trouver le trousseau de clés qu'elle a laissé pour lui. Cherchez dans le secteur." + IDS_TRANSMISSIONS_7022 "J'ai trouvé une note de la maîtresse de Balaji qui lui demande de la retrouver à son appartement. Cherchez un bac de fleurs à l'extérieur et trouvez une cachette de l'autre côté de la rue." + IDS_TRANSMISSIONS_7023 "J'ai trouvé la clé de l'appartement de Balaji. Fouillons-le à la recherche d'indices." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7024 "The bomb at target 2 has been defused." + IDS_TRANSMISSIONS_7025 "Spacesuit required." + IDS_TRANSMISSIONS_7026 "Replace O2 Tank." + IDS_TRANSMISSIONS_7027 "The bomb at target 3 has been defused." + IDS_TRANSMISSIONS_7028 "Target 1 destroyed." + IDS_TRANSMISSIONS_7029 "Target 2 destroyed." + IDS_TRANSMISSIONS_7030 "Target 3 destroyed." + IDS_TRANSMISSIONS_7031 "Time limit reached." + IDS_TRANSMISSIONS_7032 "All targets destroyed." +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7504 "Rien pour l'instant, merci." + IDS_DECISIONS_7505 "Ecouter la cassette 1." + IDS_DECISIONS_7506 "Ecouter la cassette 2." + IDS_DECISIONS_7507 "Ecouter la cassette 3." + IDS_DECISIONS_7508 "Ecouter la cassette 4." + IDS_DECISIONS_7509 "Ecouter la cassette 5." + IDS_DECISIONS_7510 "Ecouter la cassette 6." + IDS_DECISIONS_7511 "Tapez le numéro d'identification du fichier pour le projet Omega." + IDS_DECISIONS_7512 "Taper des chiffres au hasard." +END + +STRINGTABLE +BEGIN + IDS_MISSION_12_NAME "CHAPITRE 13. Terreur dans les profondeurs" + IDS_MISSION_13_NAME "CHAPITRE 14. Fin de partie" + IDS_MISSION_14_NAME "CHAPITRE 15. Raid préventif" + IDS_MISSION_09_NAME7 "" + IDS_MISSION_09_NAME8 "CHAPITRE I. Le sauvetage" + IDS_MISSION_09_NAME9 "CHAPITRE II. Le super ordinateur" + IDS_MISSION_09_NAME10 "CHAPITRE III. Le piège" + IDS_MISSION_09_NAME11 "CHAPITRE IV. Nettoyage en profondeur" + IDS_MISSION_09_NAME12 "CHAPITRE V. Mimes tueurs" + IDS_MISSION_09_NAME13 "Démo." + IDS_MISSION_09_NAME14 "Démo." + IDS_MISSION_09_NAME15 "Démo." + IDS_MISSION_09_NAME16 "TEST TEST TEST TEST" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEMP_BRIEF5 "Juste après que Cate ait repoussé une terrible attaque contre le QG de l'UNION par des mimes armés de mitrailleuses, elle part en mission pour libérer Armstrong des griffes du C.R.I.M.E.\n\nMalheureusement, il semble que les mimes n'ont pas tous été éliminés. Les assassins ont lancé une nouvelle attaque, apparemment déterminés à infliger un maximum de dégâts à l'UNION.\n\nCate partie, une seule équipe d'interception va devoir faire face à cette menace.\n" + IDS_MISSION_TEMP_BRIEF6 "Lors d'une dangereuse mission au coeur de l'Union Soviétique, Cate reçoit l'ordre de saboter un tour relais de communications dans un poste avancé en Sibérie. Son premier objectif consiste à trouver les explosifs dont elle a besoin pour sa mission. Il ne lui reste alors plus qu'à placer la charge au pied de la tour et de sortir de la zone avant l'arrivée de renforts.\n\nAstuces: ce n'est pas parce que vous avez été repérée que vous devez vous battre. Vous pouvez souvent échapper à vos poursuivants et vous cacher jusqu'à ce qu'ils abandonnent. Pensez également à fouiller les tiroirs, les placards et les ennemis neutralisés à la recherche d'informations et d'objets utiles." + IDS_MISSION_TEMP_BRIEF7 "Briefing de mission démo UNION" + IDS_MISSION_TEMP_BRIEF8 "Cate est venue à Akron, dans l'Ohio, pour trouver des indices concernant le projet: Omega, un énigmatique complot soviétique qui menace de déclencher la 3ème guerre mondiale.\n\nSa mission prend soudain une tournure inattendue, lorsqu'elle se retrouve dans un parc de camions cernée par des ninja et qu'une tornade approche. Sa seule chance de s'échapper consiste à vaincre les ninjas et leur mystérieux leader, Isako, avant de se retrouver six pieds sous terre." + IDS_MISSION_TEMP_BRIEF9 "Ce niveau présente le nouveau Système Jupiter LithTech de gestion de l'eau et l'utilisation des décals." + IDS_MISSION_TEMP_BRIEF10 + "Ce niveau présente certains des nouveaux personnages de No One Lives Forever 2." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME11 "Créer des ennuis." + IDS_MISSION_00_LEVEL_00_NAME12 "Cour extérieure." + IDS_MISSION_00_LEVEL_00_NAME13 "L'ancien bâtiment des archives." + IDS_MISSION_00_LEVEL_00_NAME14 "Cour intérieure." + IDS_MISSION_00_LEVEL_00_NAME15 "Sous-sol." + IDS_MISSION_00_LEVEL_00_NAME16 "Bâtiment des archives." + IDS_MISSION_00_LEVEL_00_NAME17 "Sous-sol." + IDS_MISSION_00_LEVEL_00_NAME18 "Cour intérieure." + IDS_MISSION_00_LEVEL_00_NAME19 "Cour extérieure." + IDS_MISSION_00_LEVEL_00_NAME20 "Exfiltration." + IDS_MISSION_00_LEVEL_00_NAME21 "Surprise, surprise." + IDS_MISSION_00_LEVEL_00_NAME22 "Prêt à tout." + IDS_MISSION_00_LEVEL_00_NAME23 "La maison où Melvin habitait." + IDS_MISSION_00_LEVEL_00_NAME24 "L'orage arrive." + IDS_MISSION_00_LEVEL_00_NAME25 "Au cœur de la tornade." + IDS_MISSION_00_LEVEL_00_NAME26 "Autant en emportent les vents." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_31 "Pris de fous rires, vos ennemis seront efficacement neutralisés." + IDS_WEAPON_DESC_32 "Un pistolet-mitrailleur Gordon modifié. Le canon a été remplacé par un silencieux intégré." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4528 "Lunettes du Dr Schenker" + IDS_KEY_ITEM_4529 "Clés pour la motoneige" + IDS_KEY_ITEM_4530 "Cinquante roupies" + IDS_KEY_ITEM_4531 "Carte d'accès de sécurité" + IDS_KEY_ITEM_4532 "Carte de sécurité de la base" + IDS_KEY_ITEM_4533 "Un magnétophe." + IDS_KEY_ITEM_4534 "La clé de la grue." + IDS_KEY_ITEM_4535 "Catalogues de produits et services super-ordinateur" + IDS_KEY_ITEM_4536 "Un tournevis" + IDS_KEY_ITEM_4537 "Une cassette audio à étiquette rouge." + IDS_KEY_ITEM_4538 "Une cassette audio à étiquette bleue." + IDS_KEY_ITEM_4539 "Une cassette audio à étiquette verte." + IDS_KEY_ITEM_4540 "Une cassette audio à étiquette jaune." + IDS_KEY_ITEM_4541 "Une cassette audio à étiquette orange." + IDS_KEY_ITEM_4542 "Une cassette audio avec une étiquette violette." + IDS_KEY_ITEM_4543 "La combinaison du coffre dans l'appartement de Balaji" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME27 "Le calme après la tempête." + IDS_MISSION_00_LEVEL_00_NAME28 "Poignard dans le dos." + IDS_MISSION_00_LEVEL_00_NAME29 "Le mot de passe." + IDS_MISSION_00_LEVEL_00_NAME30 "Le micro espion." + IDS_MISSION_00_LEVEL_00_NAME31 "Recherchée." + IDS_MISSION_00_LEVEL_00_NAME32 "Alliance Maléfique." + IDS_MISSION_00_LEVEL_00_NAME33 "Le coffre." + IDS_MISSION_00_LEVEL_00_NAME34 "Feux croisés." + IDS_MISSION_00_LEVEL_00_NAME35 "Murs invisibles." + IDS_MISSION_00_LEVEL_00_NAME36 "La fuite." + IDS_MISSION_00_LEVEL_00_NAME37 "Personnages." + IDS_MISSION_00_LEVEL_00_NAME38 "Antarctique." + IDS_MISSION_00_LEVEL_00_NAME39 "Changement de plans." + IDS_MISSION_00_LEVEL_00_NAME40 "Terrain d'essai." + IDS_MISSION_00_LEVEL_00_NAME41 "Kamal." + IDS_MISSION_00_LEVEL_00_NAME42 "Quartier général de l'UNION." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10016 "Ah, ok… On dirait…" + IDS_DIALOGUE_10017 "Fred Astaire?" + IDS_DIALOGUE_10018 "Une bicyclette?" + IDS_DIALOGUE_10019 "Un poney!" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4784 "Cette carte de sécurité peut être utilisée sur les lecteurs de carte des portes donnant accès aux zones interdites." + IDS_KEY_DESC_4785 "Un magnétophe sur lequel est enregistrée la voix d'identification d'un employé de la base sous-marine du C.R.I.M.E." + IDS_KEY_DESC_4786 "Un tournevis à tête plate. Peut servir à ouvrir des choses." + IDS_KEY_DESC_4787 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4788 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4789 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4790 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4791 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4792 "Une cassette audio dont l'étiquette\nindique qu'il s'agit du journal audio de\nTom Goodman." + IDS_KEY_DESC_4793 "Une combinaison de coffre: 38, 24, 36" + IDS_KEY_DESC_4794 "Cette carte de sécurité peut être utilisée sur les lecteurs de carte des portes donnant accès aux zones interdites." + IDS_KEY_DESC_4795 "Ce café n'a pas l'air très frais, mais il est fort et chaud." + IDS_KEY_DESC_4796 "Les clés de la chambre d'hôtel de Balaji Malpani au Happy Guest et de son coffre privé." + IDS_KEY_DESC_4797 "" + IDS_KEY_DESC_4798 "" + IDS_KEY_DESC_4799 "Une carte d'accès au département des services du super-ordinateur." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE13 "Vous avez tué Armstrong!" + IDS_MISSIONFAILURE14 "Vous avez laissé Armstrong mourir!" + IDS_MISSIONFAILURE15 "Vous avez tué votre pilote! Vous ne pouvez plus rentrer chez vous!" + IDS_MISSIONFAILURE16 "Vous avez laissé votre pilote se faire tuer!" + IDS_MISSIONFAILURE17 "Armstrong est mort!" + IDS_MISSIONFAILURE18 "Vous avez passé trop de temps aux toilettes et vous avez été démasquée. Vous êtes rapidement arrêtée et torturée. Moins d'une semaine plus tard, les USA et l'URSS sont en guerre et le monde est en ruines." + IDS_MISSIONFAILURE19 "Le pacemaker de Hatori-san est tombé en panne. Il est mort." + IDS_MISSIONFAILURE20 "Vous avez tué Yamata-san!" + IDS_MISSIONFAILURE21 "Vous avez laissé Yamata-san se faire tuer!" + IDS_MISSIONFAILURE22 "Votre avion a été détruit" + IDS_MISSIONFAILURE23 "Vous êtes démasquée!" + IDS_MISSIONFAILURE24 "Vous avez tué un policier!" + IDS_MISSIONFAILURE25 "Vous avez tué Kamal!" + IDS_MISSIONFAILURE26 "Vous avez tué le D. Schenker!" + IDS_MISSIONFAILURE27 "Vous avez tué M. Barnes!" + IDS_MISSIONFAILURE28 "Vous avez tué le général Hawkins!" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4544 "Carte de Sibérie" + IDS_KEY_ITEM_4545 "Un pot de café" + IDS_KEY_ITEM_4546 "Clés de Balaji Malpani" + IDS_KEY_ITEM_4547 "" + IDS_KEY_ITEM_4548 "" + IDS_KEY_ITEM_4549 "Carte des services super-ordinateur" + IDS_KEY_ITEM_4550 "" + IDS_KEY_ITEM_4551 "Bucket Full" +END + +STRINGTABLE +BEGIN + IDS_CODEDTEXT_7700 "" + IDS_CODEDTEXT_7701 "Il y a trois boîtes aux lettres devant le magasin de sucreries. Vous devez les configurer d'une façon précise pour m'avertir.\n\nLa boîte aux lettres rouge doit être ouverte." + IDS_CODEDTEXT_7702 "Il y a trois boîtes aux lettres devant le magasin de sucreries. Vous devez les configurer d'une façon précise pour m'avertir.\n\nLa boîte aux lettres grise doit être fermée." + IDS_CODEDTEXT_7703 "Il y a trois boîtes aux lettres devant le magasin de sucreries. Vous devez les configurer d'une façon précise pour m'avertir.\n\nLa boîte aux lettres bleue doit être ouverte." + IDS_CODEDTEXT_7704 "Je vous retrouverai à la boutique de sucreries à l'ouest du quartier. Cherchez le signe avec une grue à côté d'un distributeur." +END + +STRINGTABLE +BEGIN + IDS_TARGET_2900 "" + IDS_TARGET_2901 "taper la combinaison" + IDS_TARGET_2902 "effacer" + IDS_TARGET_2903 "alarme sonore" + IDS_TARGET_2904 "mettre une ampoule" + IDS_TARGET_2905 "dévisser l'ampoule" + IDS_TARGET_2906 "faire sonner les cloches" + IDS_TARGET_2907 "allumer" + IDS_TARGET_2908 "éteindre" + IDS_TARGET_2909 "tirer la chasse" + IDS_TARGET_2910 "récupérer les données" + IDS_TARGET_2911 "remplacer le tube" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME59 "Niveau COOP" + IDS_MISSION_00_LEVEL_00_NAME60 "Niveau COOP" + IDS_MISSION_00_LEVEL_00_NAME61 "Niveau COOP" + IDS_MISSION_00_LEVEL_00_NAME62 "Niveau COOP" + IDS_MISSION_00_LEVEL_00_NAME63 "Niveau COOP" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2912 "taper le mot de passe" + IDS_TARGET_2913 "verser du sucre" + IDS_TARGET_2914 "verser du café" + IDS_TARGET_2915 "retirer l'affiche" + IDS_TARGET_2916 "appuyer sur le bouton" + IDS_TARGET_2917 "jouer" + IDS_TARGET_2918 "éteindre" + IDS_TARGET_2919 "réparer" + IDS_TARGET_2920 "appeler UNION" + IDS_TARGET_2921 "larguer l'eau" + IDS_TARGET_2922 "fermer porte" + IDS_TARGET_2923 "ouvrir porte" + IDS_TARGET_2924 "activer intercom" + IDS_TARGET_2925 "activer la grue" + IDS_TARGET_2926 "Tirer sur mon doit" + IDS_TARGET_2927 "klaxonner" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20138 "Oh!" + IDS_DIALOGUE_20140 "Je saigne!" + IDS_DIALOGUE_20141 "Qu'est-ce que vous faites?" + IDS_DIALOGUE_20142 "Non, je vous en prie!" + IDS_DIALOGUE_20143 "Vous êtes horrible!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20147 "Ici, minou!" + IDS_DIALOGUE_20148 "Vous pensez à quoi?" + IDS_DIALOGUE_20149 "Rangez ça!" + IDS_DIALOGUE_20150 "Vous me rendez nerveux!" + IDS_DIALOGUE_20154 "Au secours, je suis coincé!" + IDS_DIALOGUE_20155 "Je suis complètement immobilisé!" + IDS_DIALOGUE_20156 "Non!" + IDS_DIALOGUE_20157 "Oh non!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20180 "Pitié!" + IDS_DIALOGUE_20182 "Hmm." + IDS_DIALOGUE_20183 "Je ne me sens pas bien du tout." + IDS_DIALOGUE_20184 "Hm?" + IDS_DIALOGUE_20185 "Qu'est-ce que c'est?" + IDS_DIALOGUE_20186 "C'est la fille de l'affiche!" + IDS_DIALOGUE_20187 "Police!" + IDS_DIALOGUE_20190 "Je ne vois rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20603 "Oh!" + IDS_DIALOGUE_20605 "Je saigne!" + IDS_DIALOGUE_20606 "Qu'est-ce que vous faites?" + IDS_DIALOGUE_20607 "Non, je vous en prie!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20608 "Vous êtes horrible!" + IDS_DIALOGUE_20612 "Ici, minou!" + IDS_DIALOGUE_20613 "Pourquoi essayez-vous de m'intimider?" + IDS_DIALOGUE_20614 "Pas besoin de ça!" + IDS_DIALOGUE_20615 "Vous me rendez très nerveuse!" + IDS_DIALOGUE_20619 "A l'aide, je suis bloqué!" + IDS_DIALOGUE_20620 "Je ne peux pas bouger!" + IDS_DIALOGUE_20621 "Oh oh!" + IDS_DIALOGUE_20622 "Oh non!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20645 "Pitié!" + IDS_DIALOGUE_20647 "Hmm." + IDS_DIALOGUE_20648 "Je ne me sens pas très bien." + IDS_DIALOGUE_20649 "Hm?" + IDS_DIALOGUE_20650 "Qu'est-ce que c'est?" + IDS_DIALOGUE_20651 "C'est la fille de l'affiche!" + IDS_DIALOGUE_20652 "Police!" + IDS_DIALOGUE_20655 "Je ne vois rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20930 "Pas la peine de faire ça!" + IDS_DIALOGUE_20931 "S'il vous plaît, ne pointez pas ça sur moi." + IDS_DIALOGUE_20932 "Ne me faites pas de mal!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20956 "A l'aide!" + IDS_DIALOGUE_20957 "Pourquoi moi?" + IDS_DIALOGUE_20959 "Hum." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20961 "Hmmm." + IDS_DIALOGUE_20962 "Qu'est-ce qu'on a ici." + IDS_DIALOGUE_20963 "Intéressant." + IDS_DIALOGUE_20964 "Mon Dieu!" + IDS_DIALOGUE_20965 "Ca va?" + IDS_DIALOGUE_20966 "Bon sang!" + IDS_DIALOGUE_20967 "Il y a du danger." + IDS_DIALOGUE_20968 "Les détecteurs s'affolent." + IDS_DIALOGUE_20969 "Pas de quoi s'alarmer." + IDS_DIALOGUE_20970 "Attaque de l'objectif." + IDS_DIALOGUE_20971 "A l'attaque! A l'attaque!" + IDS_DIALOGUE_20972 "Demande de renforts." + IDS_DIALOGUE_20973 "Poursuite de l'objectif." + IDS_DIALOGUE_20974 "Forme de vie suspecte détectée." + IDS_DIALOGUE_20975 "Quel joli petit minou." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20976 "Danger!" + IDS_DIALOGUE_20977 "Intrusion suspectée dans les environs." + IDS_DIALOGUE_20978 "Stimulus auditif suspect détecté." + IDS_DIALOGUE_20979 "Intrus détecté!" + IDS_DIALOGUE_20980 "Stimulus visuel suspect détecté." + IDS_DIALOGUE_20981 "Erreur système." + IDS_DIALOGUE_20982 "Dommage mineur subi." + IDS_DIALOGUE_20983 "Substance adhésive détectée." + IDS_DIALOGUE_20984 "Objet dangereux détecté." + IDS_DIALOGUE_20985 "Les maths, c'est fun." + IDS_DIALOGUE_20986 "Calculs en cours." + IDS_DIALOGUE_20987 "Tous les systèmes en fonction." + IDS_DIALOGUE_20988 "Analyse du système en cours." + IDS_DIALOGUE_20989 "Scanner." + IDS_DIALOGUE_20990 "Séquence patrouille active." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20992 "Résultats de l'enquête: peu concluant." + IDS_DIALOGUE_20993 "Calcul du trajet probable." + IDS_DIALOGUE_20994 "Calcul en cours." + IDS_DIALOGUE_20995 "Substance gazeuse détectée." + IDS_DIALOGUE_20996 "Début de la procédure de recherche." + IDS_DIALOGUE_20997 "Résultats de la recherche: peu concluant." + IDS_DIALOGUE_20998 "Etes-vous opérationnel?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21162 "Vilain minou!" + IDS_DIALOGUE_21163 "Minou, minou, minou!" + IDS_DIALOGUE_21164 "Argghh!" + IDS_DIALOGUE_21165 "Yeahhhh." + IDS_DIALOGUE_21166 "Roooaarrr!" + IDS_DIALOGUE_21167 "Rrrrr." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21168 "Mmmmmm." + IDS_DIALOGUE_21169 "Grrrr." + IDS_DIALOGUE_21170 "Eurr?" + IDS_DIALOGUE_21171 "Rr." + IDS_DIALOGUE_21172 "AAAAHHHHRRRRGGGHHHH!!!" + IDS_DIALOGUE_21173 "Tuer!" + IDS_DIALOGUE_21174 "Détruire!" + IDS_DIALOGUE_21177 "Rr?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21184 "Rrrr." + IDS_DIALOGUE_21185 "Grrr." + IDS_DIALOGUE_21186 "Mmm." + IDS_DIALOGUE_21188 "Hum?" + IDS_DIALOGUE_21189 "(ricanement sardonique )" + IDS_DIALOGUE_21190 "(ricanement sardonique )" + IDS_DIALOGUE_21191 "(ricanement sardonique )" + IDS_DIALOGUE_21192 "(ricanement sardonique )" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32000 "Vous serez moins fière quand j'aurai sonné l'alarme!" + IDS_DIALOGUE_32001 "Il est temps de sonner l'alarme, je pense!" + IDS_DIALOGUE_32002 "Attrapez l'espion!" + IDS_DIALOGUE_32003 "Aidez-moi à tuer l'espion!" + IDS_DIALOGUE_32004 "Il y a quelqu'un ici qui n'a pas été invité!" + IDS_DIALOGUE_32005 "Arrêtez de flâner et aidez-moi à chercher!" + IDS_DIALOGUE_32006 "Vous avez vu quelque chose de suspect?" + IDS_DIALOGUE_32007 "Attention, mon ami." + IDS_DIALOGUE_32009 "Dans quoi tu as marché?" + IDS_DIALOGUE_32010 "Qu'est-ce qui t'est arrivé?" + IDS_DIALOGUE_32011 "Prépare-toi à mourir!" + IDS_DIALOGUE_32012 "Maintenant je te tiens!" + IDS_DIALOGUE_32014 "Tu vas le regretter!" + IDS_DIALOGUE_32015 "Tu vas souffrir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32016 "Tu ne me fais pas peur!" + IDS_DIALOGUE_32017 "Je sens ta peur!" + IDS_DIALOGUE_32018 "Les chances ne sont pas en ma faveur!" + IDS_DIALOGUE_32019 "Je ferai mieux d'aller chercher de l'aide!" + IDS_DIALOGUE_32020 "J'aimerai mieux avoir des renforts!" + IDS_DIALOGUE_32021 "A l'aide!" + IDS_DIALOGUE_32022 "Par ici!" + IDS_DIALOGUE_32023 "Venez vite!" + IDS_DIALOGUE_32024 "Je ne te crois plus!" + IDS_DIALOGUE_32025 "Ca suffit!" + IDS_DIALOGUE_32026 "Bonjour?" + IDS_DIALOGUE_32027 "Où ils sont tous?" + IDS_DIALOGUE_32028 "Je brûle! AHHH!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32033 "Vous allez regretter ça!" + IDS_DIALOGUE_32034 "Alors, prête à mourir?" + IDS_DIALOGUE_32035 "Je te tiens, sale peste!" + IDS_DIALOGUE_32036 "Il est temps de souffrir!" + IDS_DIALOGUE_32037 "Oh, c'est horrible! " + IDS_DIALOGUE_32039 "Oh mon dieu!" + IDS_DIALOGUE_32040 "Là, je suis mal." + IDS_DIALOGUE_32041 "Attention!" + IDS_DIALOGUE_32042 "Oh oh!" + IDS_DIALOGUE_32046 "Mais dans quoi est-ce que je suis?" + IDS_DIALOGUE_32047 "Je suis bloqué!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32051 "Je me sens bizarre." + IDS_DIALOGUE_32052 "J'ai envie de dormir." + IDS_DIALOGUE_32053 "WHOA!" + IDS_DIALOGUE_32056 "Je me sens bizarre." + IDS_DIALOGUE_32057 "Ma pauvre tête!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32070 "Oh, comme il est mignon!" + IDS_DIALOGUE_32071 "Ici, petit, petit!" + IDS_DIALOGUE_32072 "Adieu, mon ami." + IDS_DIALOGUE_32073 "Je refuse d'être blâmé pour ça." + IDS_DIALOGUE_32074 "Je vais juste m'en débarrasser." + IDS_DIALOGUE_32075 "Ne me faites pas de mal!" + IDS_DIALOGUE_32076 "Ca me rend nerveux!" + IDS_DIALOGUE_32077 "Je suis affligé!" + IDS_DIALOGUE_32078 "Maintenant, tu vas souffrir!" + IDS_DIALOGUE_32079 "Prépare-toi à souffrir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32080 "J'arrive!" + IDS_DIALOGUE_32081 "Tu es fichu!" + IDS_DIALOGUE_32082 "Je sais que vous êtes là!" + IDS_DIALOGUE_32083 "J'ai entendu quelque chose!" + IDS_DIALOGUE_32084 "Qui est là?" + IDS_DIALOGUE_32085 "Qui a fait ce bruit?" + IDS_DIALOGUE_32086 "Les ennuis arrivent!" + IDS_DIALOGUE_32087 "Bonjour?" + IDS_DIALOGUE_32088 "J'ai entendu quelque chose?" + IDS_DIALOGUE_32089 "Quel était ce bruit?" + IDS_DIALOGUE_32090 "J'ai entendu quelque chose..." + IDS_DIALOGUE_32091 "D'où ça vient?" + IDS_DIALOGUE_32092 "Je t'ai vu!" + IDS_DIALOGUE_32093 "T'es fichue!" + IDS_DIALOGUE_32094 "T'as pas choisi la bonne personne à énerver!" + IDS_DIALOGUE_32095 "Tu es faite!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32096 "Je vais te tuer!" + IDS_DIALOGUE_32097 "Voilà pourquoi l'alarme!" + IDS_DIALOGUE_32098 "Je commence à m'inquiéter." + IDS_DIALOGUE_32099 "Qui est responsable de ça?" + IDS_DIALOGUE_32100 "Voilà qui est étrange!" + IDS_DIALOGUE_32101 "Hum." + IDS_DIALOGUE_32102 "Hein?" + IDS_DIALOGUE_32103 "Qu'est-ce que c'est?" + IDS_DIALOGUE_32104 "Je ne me souviens pas de ça..." + IDS_DIALOGUE_32105 "Qu'avons-nous là?" + IDS_DIALOGUE_32106 "Il y a quelqu'un?" + IDS_DIALOGUE_32107 "Qui est là?" + IDS_DIALOGUE_32108 "Allo???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32122 "Grenade!" + IDS_DIALOGUE_32123 "Attention!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32134 "Hm, rien." + IDS_DIALOGUE_32135 "J'ai des hallucinations." + IDS_DIALOGUE_32136 "Sans doute juste un singe." + IDS_DIALOGUE_32137 "Par où es-tu parti?" + IDS_DIALOGUE_32138 "Où es-tu?" + IDS_DIALOGUE_32139 "Tu ne m'auras pas!" + IDS_DIALOGUE_32140 "Je te trouverai!" + IDS_DIALOGUE_32141 "Ne crois pas que tu pourras t'échapper si facilement!" + IDS_DIALOGUE_32142 "Qui a éteint la lumière?" + IDS_DIALOGUE_32143 "Il fait sombre ici d'un coup." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32144 "Qui a allumé la lumière?" + IDS_DIALOGUE_32145 "Qu'est-ce qui se passe ici!?" + IDS_DIALOGUE_32146 "Ne crois pas que la pénombre va te cacher!" + IDS_DIALOGUE_32147 "Je vais juste allumer la lumière." + IDS_DIALOGUE_32148 "Où est mon arme?" + IDS_DIALOGUE_32149 "Pourquoi je n'ai plus d'arme?" + IDS_DIALOGUE_32150 "Je me sens un peu trop vulnérable." + IDS_DIALOGUE_32151 "Oh non!" + IDS_DIALOGUE_32152 "Pourquoi le destin s'acharne-t-il sur moi?" + IDS_DIALOGUE_32153 "A couvert!" + IDS_DIALOGUE_32154 "Attention!" + IDS_DIALOGUE_32155 "Hors de mon chemin!" + IDS_DIALOGUE_32156 "Je suis derrière toi, idiot!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32162 "Pourquoi dois-je toujours souffrir?" + IDS_DIALOGUE_32163 "Ca fait mal!" + IDS_DIALOGUE_32164 "Pitié!" + IDS_DIALOGUE_32166 "Pitié!" + IDS_DIALOGUE_32168 "Oof!" + IDS_DIALOGUE_32169 "Unh!" + IDS_DIALOGUE_32170 "Huh!" + IDS_DIALOGUE_32171 "Tu ne peux pas m'échapper, mon ami." + IDS_DIALOGUE_32172 "Où es-tu?" + IDS_DIALOGUE_32173 "Je sais que tu es par-là!" + IDS_DIALOGUE_32174 "Je te trouverai! Je te le promets!" + IDS_DIALOGUE_32175 "Impossible de fuir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32176 "J'abandonne." + IDS_DIALOGUE_32177 "Il a dû filer." + IDS_DIALOGUE_32178 "Il n'y a plus personne, je pense." + IDS_DIALOGUE_32179 "Et ne reviens pas!" + IDS_DIALOGUE_32180 "Pourquoi es-tu allongé?" + IDS_DIALOGUE_32181 "Debout!" + IDS_DIALOGUE_32182 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_32183 "Ce n'est pas un endroit pour dormir." + IDS_DIALOGUE_32184 "Séparez-vous!" + IDS_DIALOGUE_32185 "Je vais par ici!" + IDS_DIALOGUE_32186 "Tu vas par-là!" + IDS_DIALOGUE_32188 "Il faut que je sonne l'alarme!" + IDS_DIALOGUE_32189 "A l'aide! Sécurité!" + IDS_DIALOGUE_32190 "Et toi! Viens vite!" + IDS_DIALOGUE_32191 "Viens avec moi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32192 "Par ici, mon ami!" + IDS_DIALOGUE_32193 "Ca ne va pas par-là!" + IDS_DIALOGUE_32194 "Garde les yeux ouverts, mon ami." + IDS_DIALOGUE_32195 "Surveille tes arrières." + IDS_DIALOGUE_32196 "Je te tiens!" + IDS_DIALOGUE_32197 "C'est pas le moment de faire n'importe quoi!" + IDS_DIALOGUE_32198 "Quelle calamité est encore arrivée?" + IDS_DIALOGUE_32199 "YAAAA!!!" + IDS_DIALOGUE_32200 "Tu vas le regretter!" + IDS_DIALOGUE_32201 "Je vais te mettre en pièces!" + IDS_DIALOGUE_32202 "Je vais t'écrabouiller!" + IDS_DIALOGUE_32203 "Tu m'as mis très en colère!" + IDS_DIALOGUE_32204 "Tu vas recevoir une correction!" + IDS_DIALOGUE_32205 "Je vais t'apprendre une chose ou deux!" + IDS_DIALOGUE_32206 "Je devrais demander de l'aide!" + IDS_DIALOGUE_32207 "Attends que mes amis arrivent!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32208 "J'ai besoin d'aide!" + IDS_DIALOGUE_32209 "A l'aide!" + IDS_DIALOGUE_32210 "Il y a un espion!" + IDS_DIALOGUE_32211 "Par ici! Vite!" + IDS_DIALOGUE_32212 "Tu es trop nerveux!" + IDS_DIALOGUE_32213 "Pas encore..." + IDS_DIALOGUE_32214 "A l'aide! A l'aide! Quelqu'un!" + IDS_DIALOGUE_32215 "Il y a quelqu'un?" + IDS_DIALOGUE_32216 "C'est horrible!!!" + IDS_DIALOGUE_32217 "YAAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32218 "AAAAAAAAAA!!" + IDS_DIALOGUE_32219 "GAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32220 "Tu vas souffrir!" + IDS_DIALOGUE_32221 "Tu vas goûter à ma vengeance!" + IDS_DIALOGUE_32222 "Je vais te montrer!" + IDS_DIALOGUE_32223 "Je te tiens!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32224 "Il est temps de payer!" + IDS_DIALOGUE_32225 "Ce n'est pas du tout agréable! " + IDS_DIALOGUE_32227 "Je dois me mettre à couvert!" + IDS_DIALOGUE_32228 "Je suis très mal là!" + IDS_DIALOGUE_32229 "Il est temps de changer de stratégie!" + IDS_DIALOGUE_32230 "Oh oh!" + IDS_DIALOGUE_32234 "Je crois que j'ai marché sur quelque chose!" + IDS_DIALOGUE_32235 "Quelqu'un! A l'aide!" + IDS_DIALOGUE_32239 "Juste une petite sieste." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32240 "Je suis fatigué d'un coup..." + IDS_DIALOGUE_32241 "WHOA!" + IDS_DIALOGUE_32242 "YA!" + IDS_DIALOGUE_32243 "AH!" + IDS_DIALOGUE_32244 "Je me sens bizarre." + IDS_DIALOGUE_32245 "Je ne vais pas bien..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32258 "Oh, un adorable chaton!" + IDS_DIALOGUE_32259 "Hé, petit! Tu veux que je te caresse?" + IDS_DIALOGUE_32260 "Je ne suis pas responsable de ta mort." + IDS_DIALOGUE_32261 "Je ne veux pas être blâmé pour ton incompétence." + IDS_DIALOGUE_32262 "Ce que le chef ne sait pas ne peut pas lui faire de mal." + IDS_DIALOGUE_32263 "Ne me faites pas de mal!" + IDS_DIALOGUE_32264 "Vous me rendez nerveux!" + IDS_DIALOGUE_32265 "Je suis terriblement angoissé!" + IDS_DIALOGUE_32266 "Maintenant tu vas souffrir!" + IDS_DIALOGUE_32267 "Maintenant je suis en colère!" + IDS_DIALOGUE_32268 "Tu as fait une grave erreur, mon ami!" + IDS_DIALOGUE_32269 "Je viens te chercher!" + IDS_DIALOGUE_32270 "Je sais que tu es là!" + IDS_DIALOGUE_32271 "Je t'ai entendu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32272 "Qui est là?" + IDS_DIALOGUE_32273 "Qui a fait ce bruit?" + IDS_DIALOGUE_32274 "Ne crois pas qu'on ne t'entend pas!" + IDS_DIALOGUE_32275 "Bonjour?" + IDS_DIALOGUE_32276 "Hum?" + IDS_DIALOGUE_32277 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_32278 "J'ai entendu quelque chose." + IDS_DIALOGUE_32279 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_32280 "Je t'ai vu!" + IDS_DIALOGUE_32281 "Vous, là! Stop!" + IDS_DIALOGUE_32282 "Je t'aurai!" + IDS_DIALOGUE_32283 "Je te tiens !" + IDS_DIALOGUE_32284 "Tu l'auras cherché!" + IDS_DIALOGUE_32285 "C'est très inquiétant!" + IDS_DIALOGUE_32286 "Ok, maintenant je suis en colère!" + IDS_DIALOGUE_32287 "Tu ne peux pas m'échapper, tu sais!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32288 "Je n'aime pas ça!" + IDS_DIALOGUE_32289 "Hum." + IDS_DIALOGUE_32290 "Hein?" + IDS_DIALOGUE_32291 "Qu'est-ce que c'est?" + IDS_DIALOGUE_32292 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32293 "Qu'est-ce que c'est que ça?" + IDS_DIALOGUE_32294 "Il y a quelqu'un?" + IDS_DIALOGUE_32295 "Qui est là?" + IDS_DIALOGUE_32296 "Allo?" + IDS_DIALOGUE_32299 "AHHHH!!!" + IDS_DIALOGUE_32300 "WWWOOOOAAAA!!!" + IDS_DIALOGUE_32301 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32310 "Grenade!" + IDS_DIALOGUE_32311 "Attention!" + IDS_DIALOGUE_32312 "Oh nom d'un chien!" + IDS_DIALOGUE_32313 "A terre!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32324 "J'ai eu peur." + IDS_DIALOGUE_32325 "C'était rien, j'imagine." + IDS_DIALOGUE_32326 "Hum, rien ici." + IDS_DIALOGUE_32327 "Par où es-tu parti?" + IDS_DIALOGUE_32328 "Où es-tu?" + IDS_DIALOGUE_32329 "Tu ne peux pas me tromper!" + IDS_DIALOGUE_32330 "Je te trouverai!" + IDS_DIALOGUE_32331 "Ne crois pas pouvoir filer si facilement!" + IDS_DIALOGUE_32332 "Tu ne peux pas m'échapper!" + IDS_DIALOGUE_32333 "Qui a éteint la lumière?" + IDS_DIALOGUE_32334 "Il fait sombre ici d'un coup." + IDS_DIALOGUE_32335 "Qui a allumé la lumière?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32336 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32337 "Ne crois pas que tu peux te cacher dans le noir!" + IDS_DIALOGUE_32338 "Maintenant je vous tiens !" + IDS_DIALOGUE_32339 "Où est mon arme?" + IDS_DIALOGUE_32340 "Pourquoi je n'ai plus d'arme?" + IDS_DIALOGUE_32341 "Je me sens plutôt vulnérable." + IDS_DIALOGUE_32342 "Oh non!" + IDS_DIALOGUE_32343 "C'est terrible!" + IDS_DIALOGUE_32344 "A terre!" + IDS_DIALOGUE_32345 "Attention!" + IDS_DIALOGUE_32346 "Hors de mon chemin!" + IDS_DIALOGUE_32347 "Je suis derrière toi, idiot!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32353 "Je perds mon sang!" + IDS_DIALOGUE_32354 "Ca va encore creuser le trou de la sécu!" + IDS_DIALOGUE_32355 "Je déteste ce boulot!" + IDS_DIALOGUE_32356 "Ayez pitié!" + IDS_DIALOGUE_32358 "Pitié!" + IDS_DIALOGUE_32360 "Oof!" + IDS_DIALOGUE_32361 "Unh!" + IDS_DIALOGUE_32362 "Huh!" + IDS_DIALOGUE_32363 "Je sais que tu es par ici!" + IDS_DIALOGUE_32364 "Je te trouverai, c'est une promesse!" + IDS_DIALOGUE_32365 "Fais tes prières!" + IDS_DIALOGUE_32366 "Où es-tu caché!?!" + IDS_DIALOGUE_32367 "Tu ne peux pas fuir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32368 "J'abandonne." + IDS_DIALOGUE_32369 "Tu es vraiment dur à trouver!" + IDS_DIALOGUE_32370 "Si je te trouve, tu vas avoir de gros ennuis!" + IDS_DIALOGUE_32371 "Tu as de la chance de t'être sauvé!" + IDS_DIALOGUE_32372 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_32373 "Debout!" + IDS_DIALOGUE_32374 "Qu'est-ce qui t'est arrivé?" + IDS_DIALOGUE_32375 "C'est pas le moment de dormir!" + IDS_DIALOGUE_32376 "On se sépare!" + IDS_DIALOGUE_32377 "Je vais par ici!" + IDS_DIALOGUE_32378 "Tu vas par-là!" + IDS_DIALOGUE_32380 "Sonnez l'alarme!" + IDS_DIALOGUE_32381 "Tu es faite!" + IDS_DIALOGUE_32382 "Vous là! Par ici!" + IDS_DIALOGUE_32383 "Venez avec moi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32384 "Vite! Il y a un espion!" + IDS_DIALOGUE_32385 "Nous avons des problèmes!" + IDS_DIALOGUE_32386 "Restez sur vos gardes!" + IDS_DIALOGUE_32387 "Gardez l'œil ouvert!" + IDS_DIALOGUE_32388 "Je te tiens!" + IDS_DIALOGUE_32389 "Que s'est-il passé?" + IDS_DIALOGUE_32390 "Wow, ça va?" + IDS_DIALOGUE_32391 "Je te tiens!!!" + IDS_DIALOGUE_32392 "Vengeance!" + IDS_DIALOGUE_32393 "Tu te crois solide?" + IDS_DIALOGUE_32394 "Viens voir papa!" + IDS_DIALOGUE_32395 "T'es fichues !" + IDS_DIALOGUE_32396 "Viens et accepte ton destin!!!" + IDS_DIALOGUE_32397 "Tu n'as aucune chance!" + IDS_DIALOGUE_32398 "Je vais aimer ça!" + IDS_DIALOGUE_32399 "Abandonne et prépare toi à mourir!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32400 "Tu vas mourir!" + IDS_DIALOGUE_32401 "Parce que je dois avoir peur de vous?" + IDS_DIALOGUE_32402 "Il me faut de l'aide!" + IDS_DIALOGUE_32403 "Les gars! A l'aide!" + IDS_DIALOGUE_32404 "J'ai besoin d'aide!" + IDS_DIALOGUE_32405 "Par ici!" + IDS_DIALOGUE_32406 "Par ici!" + IDS_DIALOGUE_32407 "Hé! J'ai besoin de renfort!!!" + IDS_DIALOGUE_32408 "Abandonnez, ça sert à rien." + IDS_DIALOGUE_32409 "Je ne me ferai pas avoir une deuxième fois." + IDS_DIALOGUE_32410 "Hé! Les gars?" + IDS_DIALOGUE_32411 "Où sont les renforts?" + IDS_DIALOGUE_32413 "YAAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32414 "AAAAAAAAAA!!" + IDS_DIALOGUE_32415 "GAAAAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32416 "J'arrive!" + IDS_DIALOGUE_32417 "Par ici!" + IDS_DIALOGUE_32418 "Attends que je mette les mains sur toi!" + IDS_DIALOGUE_32419 "Prends ça!" + IDS_DIALOGUE_32420 "Je viens pour toi." + IDS_DIALOGUE_32422 "Nom d'un chien!" + IDS_DIALOGUE_32423 "Sainte mère!" + IDS_DIALOGUE_32424 "Oh mon dieu!" + IDS_DIALOGUE_32425 "Attention!" + IDS_DIALOGUE_32426 "Oh oh!" + IDS_DIALOGUE_32428 "Maman!!!" + IDS_DIALOGUE_32429 "Que quelqu'un me sorte de là!" + IDS_DIALOGUE_32430 "Merde, je suis bloqué!" + IDS_DIALOGUE_32431 "C'est quoi ce truc?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32435 "Nom d'un chien, je suis crevé." + IDS_DIALOGUE_32436 "C'est l'heure de la sieste." + IDS_DIALOGUE_32437 "WHOA!" + IDS_DIALOGUE_32438 "YA!" + IDS_DIALOGUE_32439 "AH!" + IDS_DIALOGUE_32440 "Je me sens pas bien…" + IDS_DIALOGUE_32441 "Oh, ma tête…" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32454 "Ici, petit, petit!" + IDS_DIALOGUE_32455 "Hé, un chaton! Oh, comme il est mignon!" + IDS_DIALOGUE_32456 "Désolé, vieux." + IDS_DIALOGUE_32457 "Je ne prendrai pas la faute sur moi!" + IDS_DIALOGUE_32458 "Ce truc est vraiment pratique." + IDS_DIALOGUE_32459 "Ne me faites pas de mal!" + IDS_DIALOGUE_32460 "Ne tire pas, ma belle !" + IDS_DIALOGUE_32461 "Laissez-moi tranquille! Je n'ai pas d'armes!" + IDS_DIALOGUE_32462 "Ca va chauffer pour ton matricule!" + IDS_DIALOGUE_32463 "Tu l'auras cherché!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32464 "Paré et armé!" + IDS_DIALOGUE_32465 "Je viens te chercher!" + IDS_DIALOGUE_32466 "Je sais que tu es là!" + IDS_DIALOGUE_32467 "Ok, je vous ai entendu!" + IDS_DIALOGUE_32468 "Qui est là?" + IDS_DIALOGUE_32469 "C'était quoi ça?" + IDS_DIALOGUE_32470 "Quel était ce bruit?" + IDS_DIALOGUE_32471 "Bonjour?" + IDS_DIALOGUE_32472 "Hein?" + IDS_DIALOGUE_32473 "C'est quoi ce bruit?" + IDS_DIALOGUE_32474 "J'ai entendu quelque chose." + IDS_DIALOGUE_32475 "D'où vient ce bruit?" + IDS_DIALOGUE_32476 "Je t'ai vu!" + IDS_DIALOGUE_32477 "Vous! Là! Stop!" + IDS_DIALOGUE_32478 "Je t'aurai!" + IDS_DIALOGUE_32479 "Hé!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32480 "Tu l'auras cherché!" + IDS_DIALOGUE_32481 "Je n'aime pas ça." + IDS_DIALOGUE_32482 "On dirait que nous avons un intrus!" + IDS_DIALOGUE_32483 "C'est pas normal!" + IDS_DIALOGUE_32484 "Oh oh!" + IDS_DIALOGUE_32485 "Hum." + IDS_DIALOGUE_32486 "Hein?" + IDS_DIALOGUE_32487 "Qu'est-ce que c'est?" + IDS_DIALOGUE_32488 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32489 "Qu'avons-nous là?" + IDS_DIALOGUE_32490 "Il y a quelqu'un?" + IDS_DIALOGUE_32491 "Qui est là?" + IDS_DIALOGUE_32492 "Allo?" + IDS_DIALOGUE_32495 "AHHHH!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32496 "WWWOOOOAAAA!!!" + IDS_DIALOGUE_32497 "AAAIIII!!!" + IDS_DIALOGUE_32503 "Qui a fait ces traces?" + IDS_DIALOGUE_32504 "Huh. On dirait qu'il y a un espion par-là." + IDS_DIALOGUE_32505 "Des traces. Voyons où elles mènent." + IDS_DIALOGUE_32506 "Ahhh! Grenade!" + IDS_DIALOGUE_32507 "Attention!" + IDS_DIALOGUE_32508 "Oh mon dieu!" + IDS_DIALOGUE_32509 "A couvert!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32520 "Hm, rien." + IDS_DIALOGUE_32521 "Absolument rien." + IDS_DIALOGUE_32522 "Rien ici." + IDS_DIALOGUE_32523 "Où es-tu parti?" + IDS_DIALOGUE_32524 "Où es-tu?" + IDS_DIALOGUE_32525 "Oh, mec." + IDS_DIALOGUE_32526 "Je te trouverai!" + IDS_DIALOGUE_32527 "Où es-tu allé?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32528 "Et maintenant?" + IDS_DIALOGUE_32529 "Qui a éteint?" + IDS_DIALOGUE_32530 "Hé, qu'est-ce qui se passe avec la lumière?" + IDS_DIALOGUE_32531 "Qui a allumé la lumière?" + IDS_DIALOGUE_32532 "Qu'est-ce qu'elles ont les lumières?" + IDS_DIALOGUE_32533 "Tu ne peux pas m'échapper." + IDS_DIALOGUE_32534 "Je te tiens!" + IDS_DIALOGUE_32535 "On m'a volé!" + IDS_DIALOGUE_32536 "On m'a piqué mon arme!" + IDS_DIALOGUE_32537 "Qui a pris mon arme?" + IDS_DIALOGUE_32538 "Oh non!" + IDS_DIALOGUE_32539 "C'est terrible!" + IDS_DIALOGUE_32540 "A couvert!" + IDS_DIALOGUE_32541 "Attention!" + IDS_DIALOGUE_32542 "Hors de ma route!" + IDS_DIALOGUE_32543 "Attention!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32549 "Oh, mince, je saigne!" + IDS_DIALOGUE_32550 "Infirmier!" + IDS_DIALOGUE_32551 "Non, Pitié!" + IDS_DIALOGUE_32553 "Par, pitié!" + IDS_DIALOGUE_32555 "Oof!" + IDS_DIALOGUE_32556 "Unh!" + IDS_DIALOGUE_32557 "Huh!" + IDS_DIALOGUE_32558 "Je sais que tu es par ici!" + IDS_DIALOGUE_32559 "Rends-toi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32560 "Ne crois pas que tu pourras m'échapper!" + IDS_DIALOGUE_32561 "Attends que je te retrouve!" + IDS_DIALOGUE_32562 "Où es-tu?" + IDS_DIALOGUE_32563 "J'abandonne." + IDS_DIALOGUE_32564 "Où diable as-tu filé?" + IDS_DIALOGUE_32565 "Zut! Plus personne!" + IDS_DIALOGUE_32566 "Ouais, on a dû lui faire peur." + IDS_DIALOGUE_32567 "Qu'est-ce qui va pas?" + IDS_DIALOGUE_32568 "Hé! Debout!" + IDS_DIALOGUE_32569 "Hé, ça va?" + IDS_DIALOGUE_32570 "Ca va?" + IDS_DIALOGUE_32571 "On se sépare!" + IDS_DIALOGUE_32572 "Je vais par ici!" + IDS_DIALOGUE_32573 "Tu vas par-là!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32577 "J'ai vu un criminel!" + IDS_DIALOGUE_32578 "Venez avec moi!" + IDS_DIALOGUE_32579 "Vous là, aidez-moi!" + IDS_DIALOGUE_32580 "Ca ne va pas par là!" + IDS_DIALOGUE_32581 "Soyez prudent!" + IDS_DIALOGUE_32582 "Arrêtez quiconque vous paraît suspect!" + IDS_DIALOGUE_32583 "Ne bougez pas!" + IDS_DIALOGUE_32584 "Restez où vous êtes!" + IDS_DIALOGUE_32585 "Restez là où je peux vous voir!" + IDS_DIALOGUE_32586 "Comment vous avez fait ça?" + IDS_DIALOGUE_32587 "Qu'est-ce qui vous arrive?" + IDS_DIALOGUE_32588 "C'est pour votre bien!" + IDS_DIALOGUE_32589 "Vous allez en prison!" + IDS_DIALOGUE_32590 "La justice vous attend." + IDS_DIALOGUE_32591 "Je vous arrête." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32592 "Je te tiens, gangster!" + IDS_DIALOGUE_32593 "Tu as de gros ennuis!" + IDS_DIALOGUE_32594 "C'est l'assassin!" + IDS_DIALOGUE_32595 "Je devrais demander de l'aide!" + IDS_DIALOGUE_32596 "Par ici! C'est le meurtrier!" + IDS_DIALOGUE_32597 "Venez vite!" + IDS_DIALOGUE_32598 "Par ici! Vite!" + IDS_DIALOGUE_32599 "J'ai trouvé le criminel!" + IDS_DIALOGUE_32600 "Par ici!" + IDS_DIALOGUE_32601 "Je ne vous crois pas." + IDS_DIALOGUE_32602 "C'est un mensonge de trop." + IDS_DIALOGUE_32603 "Hé! Les gars?" + IDS_DIALOGUE_32604 "Où sont mes renforts?" + IDS_DIALOGUE_32606 "YAAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32607 "AAAAAAAAAA!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32608 "GAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32609 "N'essayez pas de vous échapper!" + IDS_DIALOGUE_32610 "Je vous dis que vous êtes en état d'arrestation!" + IDS_DIALOGUE_32611 "Reviens là!" + IDS_DIALOGUE_32612 "Je te tiens!" + IDS_DIALOGUE_32613 "Ne résistez pas à l'arrestation!" + IDS_DIALOGUE_32615 "Nom d'un chien!" + IDS_DIALOGUE_32616 "Sainte Mère!" + IDS_DIALOGUE_32617 "Je suis très mal là!" + IDS_DIALOGUE_32618 "Attention!" + IDS_DIALOGUE_32619 "Oh oh!" + IDS_DIALOGUE_32623 "Pourquoi je suis coincé ici?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32624 "On dirait que j'ai un problème." + IDS_DIALOGUE_32628 "Je vais juste me reposer un moment." + IDS_DIALOGUE_32629 "Une petite sieste rapide." + IDS_DIALOGUE_32630 "WHOA!" + IDS_DIALOGUE_32631 "YA!" + IDS_DIALOGUE_32632 "AH!" + IDS_DIALOGUE_32633 "Je me sens bizarre." + IDS_DIALOGUE_32634 "Je ne vois plus rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32647 "Quel joli petit minou." + IDS_DIALOGUE_32648 "Je sais que tu es là!" + IDS_DIALOGUE_32649 "Je te tiens!" + IDS_DIALOGUE_32650 "Maintenant tu es dans le pétrin!" + IDS_DIALOGUE_32651 "Je viens pour toi!" + IDS_DIALOGUE_32652 "Je sais que tu es là!" + IDS_DIALOGUE_32653 "Je t'ai entendu!" + IDS_DIALOGUE_32654 "Qui est là?" + IDS_DIALOGUE_32655 "Oh ho!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32656 "Ne crois pas qu'on ne t'entend pas!" + IDS_DIALOGUE_32657 "Bonjour?" + IDS_DIALOGUE_32658 "Hm?" + IDS_DIALOGUE_32659 "Qu'est-ce que j'ai entendu?" + IDS_DIALOGUE_32660 "J'ai entendu quelque chose." + IDS_DIALOGUE_32661 "D'où vient ce bruit?" + IDS_DIALOGUE_32662 "Je t'ai vu!" + IDS_DIALOGUE_32663 "Toi! Là! Stop!" + IDS_DIALOGUE_32664 "Tu es en état d'arrestation!" + IDS_DIALOGUE_32665 "Arrête tout de suite!" + IDS_DIALOGUE_32666 "Tu l'as cherché!" + IDS_DIALOGUE_32667 "C'est très inquiétant!" + IDS_DIALOGUE_32668 "Ok, maintenant je suis en colère!" + IDS_DIALOGUE_32669 "Tu ne peux pas m'échapper, tu sais!" + IDS_DIALOGUE_32670 "Je n'aime pas ça!" + IDS_DIALOGUE_32671 "Hum." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32672 "Hein?" + IDS_DIALOGUE_32673 "Qu'est-ce que c'est?" + IDS_DIALOGUE_32674 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32675 "Qu'avons-nous là?" + IDS_DIALOGUE_32676 "Il y a quelqu'un?" + IDS_DIALOGUE_32677 "Qui est là?" + IDS_DIALOGUE_32678 "Allo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32692 "Grenade!" + IDS_DIALOGUE_32693 "Courez!" + IDS_DIALOGUE_32694 "Bon sang!" + IDS_DIALOGUE_32695 "A couvert!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32706 "Rien ici." + IDS_DIALOGUE_32707 "J'ai dû rêver." + IDS_DIALOGUE_32708 "Hmmmm." + IDS_DIALOGUE_32709 "Où es-tu passé?" + IDS_DIALOGUE_32710 "Où es-tu?" + IDS_DIALOGUE_32711 "Je vais t'avoir, sale truand." + IDS_DIALOGUE_32712 "Je te trouverai!" + IDS_DIALOGUE_32713 "Où es-tu passé?" + IDS_DIALOGUE_32714 "Tu ne peux pas me tromper." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32741 "Je sais que tu es par là!" + IDS_DIALOGUE_32742 "Rends-toi!" + IDS_DIALOGUE_32743 "Tu ne peux pas te cacher éternellement." + IDS_DIALOGUE_32744 "Arrive les mains en l'air?" + IDS_DIALOGUE_32745 "Où es-tu?" + IDS_DIALOGUE_32746 "J'abandonne." + IDS_DIALOGUE_32747 "Parti." + IDS_DIALOGUE_32748 "Aucun signe de criminel nulle part." + IDS_DIALOGUE_32749 "Où es-tu allé?" + IDS_DIALOGUE_32750 "Qu'est-ce qui ne va pas?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32754 "Séparez-vous!" + IDS_DIALOGUE_32755 "Je vais par ici!" + IDS_DIALOGUE_32756 "Tu vas par-là!" + IDS_DIALOGUE_32760 "Vite! Par ici!" + IDS_DIALOGUE_32761 "Viens avec moi!" + IDS_DIALOGUE_32762 "Suis-moi !" + IDS_DIALOGUE_32763 "Quelque chose ne va pas!" + IDS_DIALOGUE_32764 "Ca sent mauvais." + IDS_DIALOGUE_32765 "Gardez l'oeil ouvert!" + IDS_DIALOGUE_32766 "Je te tiens!" + IDS_DIALOGUE_32767 "Que s'est-il passé?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32768 "Qu'est-ce que tu as fait?" + IDS_DIALOGUE_32769 "Oh oh!" + IDS_DIALOGUE_32770 "Ha HA!" + IDS_DIALOGUE_32771 "Je vais te mettre en pièces!" + IDS_DIALOGUE_32772 "Tu n'as aucune chance!" + IDS_DIALOGUE_32773 "Je peux sentir ta peur!" + IDS_DIALOGUE_32774 "Tu ne me fais pas peur!" + IDS_DIALOGUE_32775 "Il est temps de mourir, mon ami!" + IDS_DIALOGUE_32776 "En garde!" + IDS_DIALOGUE_32777 "Tu vas mourir en couinant!" + IDS_DIALOGUE_32778 "Par ici! Venez vite!" + IDS_DIALOGUE_32779 "A l'aide! Je suis fait!" + IDS_DIALOGUE_32780 "Par là!" + IDS_DIALOGUE_32781 "Oh secours!" + IDS_DIALOGUE_32782 "A l'aide!" + IDS_DIALOGUE_32783 "Par ici!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32784 "Tes petits jeux me fatiguent." + IDS_DIALOGUE_32785 "Ta panique constante me fatigue." + IDS_DIALOGUE_32786 "A l'aide! Au secours! Quelqu'un!" + IDS_DIALOGUE_32787 "Où sont-ils tous passés?" + IDS_DIALOGUE_32789 "OH OH OH!!!" + IDS_DIALOGUE_32790 "Ha HA!" + IDS_DIALOGUE_32791 "Vive la France!!" + IDS_DIALOGUE_32792 "Ha!" + IDS_DIALOGUE_32793 "Oh oh OH!" + IDS_DIALOGUE_32794 "Je te tiens!" + IDS_DIALOGUE_32795 "Je t'aurai!" + IDS_DIALOGUE_32796 "Tu n'as pas la moindre chance, mon ami!" + IDS_DIALOGUE_32798 "Oh oh!" + IDS_DIALOGUE_32799 "Merde!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32800 "A couvert!" + IDS_DIALOGUE_32801 "Ca devient dangereux!" + IDS_DIALOGUE_32802 "Mon Dieu!" + IDS_DIALOGUE_32806 "Dans quoi j'ai marché?" + IDS_DIALOGUE_32807 "Je ne peux pas bouger!" + IDS_DIALOGUE_32811 "J'ai sommeil!" + IDS_DIALOGUE_32812 "Je vais juste fermer les yeux." + IDS_DIALOGUE_32813 "WHOA!" + IDS_DIALOGUE_32814 "YA!" + IDS_DIALOGUE_32815 "Mon Dieu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32816 "J'ai comme la migraine." + IDS_DIALOGUE_32817 "Mes yeux! Je ne vois plus!" + IDS_DIALOGUE_32830 "Comme il est mignon." + IDS_DIALOGUE_32831 "Bonjour, mon petit chat." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32832 "Bon voyage, mon ami." + IDS_DIALOGUE_32833 "Adieu." + IDS_DIALOGUE_32834 "Je me souviendrais toujours de toi." + IDS_DIALOGUE_32835 "Ne me faites pas mal!" + IDS_DIALOGUE_32836 "Epargnez-moi, je vous en prie!" + IDS_DIALOGUE_32837 "Non pitié! Je serai gentil à l'avenir!" + IDS_DIALOGUE_32838 "Tu vas comprendre ta douleur!" + IDS_DIALOGUE_32839 "J'arrive!" + IDS_DIALOGUE_32840 "Danger!" + IDS_DIALOGUE_32841 "Alarme!" + IDS_DIALOGUE_32842 "Je vais t'abattre!" + IDS_DIALOGUE_32843 "Je t'ai entendu!" + IDS_DIALOGUE_32844 "Qui est là?" + IDS_DIALOGUE_32845 "Je vous ai entendu, mon ami!" + IDS_DIALOGUE_32846 "Qui a fait ce bruit?" + IDS_DIALOGUE_32847 "Bonjour?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32848 "Quoi?" + IDS_DIALOGUE_32849 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_32850 "J'ai entendu quelque chose." + IDS_DIALOGUE_32851 "Qu'est-ce que c'est?" + IDS_DIALOGUE_32852 "Je vous ai vu!" + IDS_DIALOGUE_32853 "Je te tiens!" + IDS_DIALOGUE_32854 "Je vais t'exterminer!" + IDS_DIALOGUE_32855 "Prépare-toi à mourir!" + IDS_DIALOGUE_32856 "En garde, mon ami!" + IDS_DIALOGUE_32857 "C'est très inquiétant!" + IDS_DIALOGUE_32858 "Qui est responsable de ça?" + IDS_DIALOGUE_32859 "Quelque chose ne va pas." + IDS_DIALOGUE_32860 "Oh oh!" + IDS_DIALOGUE_32861 "Hum." + IDS_DIALOGUE_32862 "Quoi?" + IDS_DIALOGUE_32863 "Qu'est-ce que c'est?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32864 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32865 "Qu'avons-nous là?" + IDS_DIALOGUE_32866 "Il y a quelqu'un?" + IDS_DIALOGUE_32867 "Qui est là?" + IDS_DIALOGUE_32868 "Allo?" + IDS_DIALOGUE_32871 "AHHHH!!!" + IDS_DIALOGUE_32872 "WWWOOOOAAAA!!!" + IDS_DIALOGUE_32873 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32882 "Grenade!" + IDS_DIALOGUE_32883 "Attention!" + IDS_DIALOGUE_32884 "Noooon!!!" + IDS_DIALOGUE_32885 "A couvert!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32896 "Rien…" + IDS_DIALOGUE_32897 "Rien." + IDS_DIALOGUE_32898 "Rien du tout." + IDS_DIALOGUE_32899 "Par où es-tu parti?" + IDS_DIALOGUE_32900 "Où es-tu?" + IDS_DIALOGUE_32901 "N'espère même pas pouvoir m'échapper." + IDS_DIALOGUE_32902 "Je te trouverai! Je le jure!" + IDS_DIALOGUE_32903 "Et maintenant?" + IDS_DIALOGUE_32904 "Tu ne peux pas m'échapper ! Je suis un mime, tu sais !" + IDS_DIALOGUE_32905 "Qui a éteint?" + IDS_DIALOGUE_32906 "Je suis devenu aveugle?" + IDS_DIALOGUE_32907 "Qui a allumé?" + IDS_DIALOGUE_32908 "La lumière! Ca pique les yeux!" + IDS_DIALOGUE_32909 "Tu ne peux pas te cacher." + IDS_DIALOGUE_32910 "Je te tiens!" + IDS_DIALOGUE_32911 "On m'a dérobé mon arme." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32912 "Où est passée mon arme?" + IDS_DIALOGUE_32913 "On m'a volé!" + IDS_DIALOGUE_32914 "Oh non!" + IDS_DIALOGUE_32915 "C'est terrible!" + IDS_DIALOGUE_32916 "A terre!" + IDS_DIALOGUE_32917 "Attention!" + IDS_DIALOGUE_32918 "Dégagez!" + IDS_DIALOGUE_32919 "Bouge! Idiot!" + IDS_DIALOGUE_32925 "Je n'aime pas ça!" + IDS_DIALOGUE_32926 "Je suis blessé!" + IDS_DIALOGUE_32927 "La douleur est horrible!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32928 "Ayez pitié!" + IDS_DIALOGUE_32930 "Pitié!" + IDS_DIALOGUE_32932 "Oof!" + IDS_DIALOGUE_32933 "Unh!" + IDS_DIALOGUE_32934 "Huh!" + IDS_DIALOGUE_32935 "Je vais te trouver!" + IDS_DIALOGUE_32936 "Tu ne pourras pas te cacher longtemps!" + IDS_DIALOGUE_32937 "Je sais que tu es là!" + IDS_DIALOGUE_32938 "Je peux te sentir, lâche!" + IDS_DIALOGUE_32939 "Allô?? Où es-tu???" + IDS_DIALOGUE_32940 "Je laisse tomber." + IDS_DIALOGUE_32941 "Parti." + IDS_DIALOGUE_32942 "Où es-tu, hein?" + IDS_DIALOGUE_32943 "Plus rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32944 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_32945 "Debout la belle au bois dormant!" + IDS_DIALOGUE_32946 "Hé toi! Debout!" + IDS_DIALOGUE_32947 "Qu'est-ce que tu as?" + IDS_DIALOGUE_32948 "Séparez-vous!" + IDS_DIALOGUE_32949 "Je vais par ici!" + IDS_DIALOGUE_32950 "Tu vas par-là!" + IDS_DIALOGUE_32952 "Sonnez l'alarme!" + IDS_DIALOGUE_32953 "Tu es dans le pétrin maintenant!" + IDS_DIALOGUE_32954 "Vite! Par ici!" + IDS_DIALOGUE_32955 "Viens avec moi!" + IDS_DIALOGUE_32956 "Viens vite!" + IDS_DIALOGUE_32957 "Reste sur tes gardes!" + IDS_DIALOGUE_32958 "Il se passe quelque chose!" + IDS_DIALOGUE_32959 "J'ai vu quelque chose." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32961 "Qu'est-ce qui t'est arrivé?!" + IDS_DIALOGUE_32962 "Tu es blessé?" + IDS_DIALOGUE_32963 "Hyaahhh!" + IDS_DIALOGUE_32964 "Haaa!" + IDS_DIALOGUE_32965 "Yiaaahhh!" + IDS_DIALOGUE_32966 "Tu n'as pas une chance!" + IDS_DIALOGUE_32967 "Je vais te couper en morceaux!" + IDS_DIALOGUE_32968 "Je te tiens!" + IDS_DIALOGUE_32969 "Tu ne peux pas t'échapper!" + IDS_DIALOGUE_32970 "Par ici! Vite!" + IDS_DIALOGUE_32971 "Vite, par ici!" + IDS_DIALOGUE_32973 "Par ici!" + IDS_DIALOGUE_32974 "Par ici!" + IDS_DIALOGUE_32975 "Vite!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32976 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_32977 "Je ne vais pas me faire avoir une deuxième fois." + IDS_DIALOGUE_32978 "A l'aide! Où es-tu?" + IDS_DIALOGUE_32979 "Par ici! Par où es-tu parti?" + IDS_DIALOGUE_32981 "YAAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32982 "AAAAAAAAAA!!" + IDS_DIALOGUE_32983 "GAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32984 "Ha!" + IDS_DIALOGUE_32985 "Reviens là!" + IDS_DIALOGUE_32986 "Je te tiens!" + IDS_DIALOGUE_32987 "Affronte-moi!" + IDS_DIALOGUE_32988 "J'arrive!" + IDS_DIALOGUE_32990 "Ah!" + IDS_DIALOGUE_32991 "Aiii!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32992 "A couvert!" + IDS_DIALOGUE_32993 "Attention!" + IDS_DIALOGUE_32994 "Oh oh!" + IDS_DIALOGUE_32998 "A l'aide!" + IDS_DIALOGUE_32999 "Je suis bloqué!" + IDS_DIALOGUE_33003 "Tellement sommeil..." + IDS_DIALOGUE_33004 "Un petit somme..." + IDS_DIALOGUE_33005 "WHOA!" + IDS_DIALOGUE_33006 "YA!" + IDS_DIALOGUE_33007 "AH!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33008 "Je me sens étrange." + IDS_DIALOGUE_33009 "Je ne vois plus rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33024 "Oh, comme il est mignon!" + IDS_DIALOGUE_33025 "Un adorable petit chaton!" + IDS_DIALOGUE_33026 "Je te vengerai!" + IDS_DIALOGUE_33027 "Cet espion va payer pour ça!" + IDS_DIALOGUE_33028 "Je suis desolée!" + IDS_DIALOGUE_33032 "Tu es dans le pétrin!" + IDS_DIALOGUE_33033 "Tu es perdu!" + IDS_DIALOGUE_33034 "Ha! Je te tiens!" + IDS_DIALOGUE_33035 "Je viens pour toi!" + IDS_DIALOGUE_33036 "Je sais que tu es là!" + IDS_DIALOGUE_33037 "Tu n'as pas été assez discret!" + IDS_DIALOGUE_33038 "Qui est là?" + IDS_DIALOGUE_33039 "Je t'ai entendu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33040 "Qui a fait ce bruit?" + IDS_DIALOGUE_33041 "Bonjour?" + IDS_DIALOGUE_33042 "Il y a quelqu'un?" + IDS_DIALOGUE_33043 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_33044 "J'ai entendu quelque chose." + IDS_DIALOGUE_33045 "D'où vient ce bruit?" + IDS_DIALOGUE_33046 "Je t'ai vu!" + IDS_DIALOGUE_33047 "Tu ne m'échapperas pas!" + IDS_DIALOGUE_33048 "Ya!" + IDS_DIALOGUE_33049 "Ha!" + IDS_DIALOGUE_33050 "Je t'ai trouvé!" + IDS_DIALOGUE_33051 "Qui a fait ça?" + IDS_DIALOGUE_33052 "Oh oh!" + IDS_DIALOGUE_33053 "Qu'est-ce qui se passe ici?" + IDS_DIALOGUE_33054 "Je crois qu'on a des ennuis!" + IDS_DIALOGUE_33055 "Hum." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33056 "Hein?" + IDS_DIALOGUE_33057 "Qu'est-ce que c'est?" + IDS_DIALOGUE_33058 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_33059 "C'est étrange." + IDS_DIALOGUE_33060 "Il y a quelqu'un?" + IDS_DIALOGUE_33061 "Qui est là?" + IDS_DIALOGUE_33062 "Allo?" + IDS_DIALOGUE_33065 "AHHHH!!!" + IDS_DIALOGUE_33066 "WWWOOOOAAAA!!!" + IDS_DIALOGUE_33067 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33076 "Grenade!" + IDS_DIALOGUE_33077 "Attention!" + IDS_DIALOGUE_33078 "A couvert!" + IDS_DIALOGUE_33079 "A terre!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33090 "Hum." + IDS_DIALOGUE_33091 "Rien." + IDS_DIALOGUE_33092 "Mon imagination me joue des tours." + IDS_DIALOGUE_33093 "Où es-tu parti?" + IDS_DIALOGUE_33094 "Où es-tu?" + IDS_DIALOGUE_33095 "Et maintenant?" + IDS_DIALOGUE_33096 "Je te trouverai!" + IDS_DIALOGUE_33097 "Par où es-tu parti?!?" + IDS_DIALOGUE_33098 "Tu ne pourras pas te cacher longtemps." + IDS_DIALOGUE_33099 "Qui a éteint la lumière?" + IDS_DIALOGUE_33100 "Qu'est-ce qui est arrivé à la lumière?" + IDS_DIALOGUE_33101 "Qui a allumé la lumière?" + IDS_DIALOGUE_33102 "Que se passe-t-il?" + IDS_DIALOGUE_33103 "Tu ne peux pas m'échapper." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33104 "Je te tiens!" + IDS_DIALOGUE_33105 "Je n'ai plus d'arme!" + IDS_DIALOGUE_33106 "Où est mon katana?" + IDS_DIALOGUE_33107 "Quelqu'un m'a volé mes armes!" + IDS_DIALOGUE_33110 "A terre!" + IDS_DIALOGUE_33111 "Attention!" + IDS_DIALOGUE_33112 "Hors de mon chemin!" + IDS_DIALOGUE_33113 "Bougez!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33120 "Ca fait mal!" + IDS_DIALOGUE_33121 "Tu vas payer pour ça!" + IDS_DIALOGUE_33129 "Je sais que tu es là!" + IDS_DIALOGUE_33131 "Où es-tu?" + IDS_DIALOGUE_33132 "Je te trouverai." + IDS_DIALOGUE_33133 "Tu ne peux pas te cacher." + IDS_DIALOGUE_33134 "J'abandonne." + IDS_DIALOGUE_33135 "Par où es-tu parti?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33136 "Comment as-tu réussi à filer?" + IDS_DIALOGUE_33137 "Tu as eu de la chance." + IDS_DIALOGUE_33138 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_33139 "Debout!" + IDS_DIALOGUE_33140 "Qu'est-ce qui s'est passé?" + IDS_DIALOGUE_33141 "Ca va?" + IDS_DIALOGUE_33142 "On se sépare!" + IDS_DIALOGUE_33143 "Je vais par ici!" + IDS_DIALOGUE_33144 "Tu vas par-là!" + IDS_DIALOGUE_33146 "Sonnez l'alarme!" + IDS_DIALOGUE_33147 "Un espion!" + IDS_DIALOGUE_33148 "Toi là! Par ici!" + IDS_DIALOGUE_33149 "Viens avec moi!" + IDS_DIALOGUE_33150 "Vite! Il y a des espions capitalistes partout!" + IDS_DIALOGUE_33151 "Gardez les yeux ouverts!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33152 "Nous avons peut-être un intrus." + IDS_DIALOGUE_33153 "Il y a des ennuis, camarade." + IDS_DIALOGUE_33154 "Ne bougez pas!" + IDS_DIALOGUE_33155 "Que s'est-il passé?" + IDS_DIALOGUE_33156 "Tu es blessé?" + IDS_DIALOGUE_33157 "Tu n'as pas une chance!" + IDS_DIALOGUE_33158 "Chien capitaliste!" + IDS_DIALOGUE_33159 "Je vais te donner à manger aux loups!" + IDS_DIALOGUE_33160 "Je prendrai plaisir à te tuer!" + IDS_DIALOGUE_33161 "Tu finiras dans une tombe sans nom!" + IDS_DIALOGUE_33162 "Fais tes prières!" + IDS_DIALOGUE_33163 "Mort aux espions!" + IDS_DIALOGUE_33164 "Par ici! Viens vite!" + IDS_DIALOGUE_33165 "C'est un espion!" + IDS_DIALOGUE_33166 "Aidez-moi, camarades!" + IDS_DIALOGUE_33167 "Camarades! Par ici!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33168 "Par ici!" + IDS_DIALOGUE_33169 "Il y a un intrus!" + IDS_DIALOGUE_33170 "Il faut arrêter la vodka, Camarade. Ca te rend paranoïaque." + IDS_DIALOGUE_33171 "Bien sûr. Comme la dernière fois." + IDS_DIALOGUE_33172 "Par-là! Où es-tu?" + IDS_DIALOGUE_33173 "Par ici! Allo?" + IDS_DIALOGUE_33175 "Stop!" + IDS_DIALOGUE_33176 "Vous là-bas!" + IDS_DIALOGUE_33177 "Je te tiens!" + IDS_DIALOGUE_33178 "Meurs, chien décadent!" + IDS_DIALOGUE_33179 "Tu ne peux pas t'échapper!" + IDS_DIALOGUE_33180 "Affronte-moi, lâche!" + IDS_DIALOGUE_33181 "Je te tiens!" + IDS_DIALOGUE_33182 "J'arrive!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33184 "Attention!" + IDS_DIALOGUE_33185 "A terre!" + IDS_DIALOGUE_33186 "Gros ennuis!" + IDS_DIALOGUE_33187 "Attention!" + IDS_DIALOGUE_33188 "A couvert!" + IDS_DIALOGUE_33190 "Oh, ça fait mal!" + IDS_DIALOGUE_33191 "A l'aide! Sortez-moi de là!" + IDS_DIALOGUE_33192 "A l'aide, je suis bloqué!" + IDS_DIALOGUE_33193 "Je ne peux pas bouger!" + IDS_DIALOGUE_33197 "Dois me reposer." + IDS_DIALOGUE_33198 "J'ai sommeil." + IDS_DIALOGUE_33199 "WHOA!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33200 "YA!" + IDS_DIALOGUE_33201 "AH!" + IDS_DIALOGUE_33202 "Je me sens étrange." + IDS_DIALOGUE_33203 "Je ne vois plus rien!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33216 "Un adorable petit chaton!" + IDS_DIALOGUE_33217 "Salut, mon mignon. Tu es perdu?" + IDS_DIALOGUE_33218 "Je ne vais pas remplir les papiers pour toi." + IDS_DIALOGUE_33219 "Désolé, camarade, mais ça fera moins de paperasse." + IDS_DIALOGUE_33220 "Tu étais un homme courageux." + IDS_DIALOGUE_33221 "Ne tirez pas!" + IDS_DIALOGUE_33222 "Attendez! Je suis désarmé!" + IDS_DIALOGUE_33223 "Que voulez-vous?" + IDS_DIALOGUE_33224 "Maintenant, vous avez des ennuis!" + IDS_DIALOGUE_33225 "Vous m'avez mis très en colère!" + IDS_DIALOGUE_33226 "J'entends un espion!" + IDS_DIALOGUE_33227 "Je t'aurai!" + IDS_DIALOGUE_33228 "Je sais que tu es là!" + IDS_DIALOGUE_33229 "Ok, j'ai entendu ça!" + IDS_DIALOGUE_33230 "Qui est là?" + IDS_DIALOGUE_33231 "Qu'est-ce que c'était?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33232 "Qui a fait ce bruit?" + IDS_DIALOGUE_33233 "Bonjour?" + IDS_DIALOGUE_33234 "Qu'est-ce que j'ai entendu?" + IDS_DIALOGUE_33235 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_33236 "J'ai entendu quelque chose." + IDS_DIALOGUE_33237 "D'où vient ce bruit?" + IDS_DIALOGUE_33238 "Je t'ai vu!" + IDS_DIALOGUE_33239 "Vous! Là! Stop!" + IDS_DIALOGUE_33240 "Un intrus!" + IDS_DIALOGUE_33241 "C'est un espion!" + IDS_DIALOGUE_33242 "Tu l'auras cherché!" + IDS_DIALOGUE_33243 "Quelque chose ne va pas!" + IDS_DIALOGUE_33244 "On dirait que nous avons un intrus!" + IDS_DIALOGUE_33245 "Je n'aime pas ça du tout!" + IDS_DIALOGUE_33246 "Oh oh!" + IDS_DIALOGUE_33247 "Hum." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33248 "Hein?" + IDS_DIALOGUE_33249 "Qu'est-ce que c'est?" + IDS_DIALOGUE_33250 "Qu'est-ce qui s'est passé?" + IDS_DIALOGUE_33251 "Qu'avons-nous là?" + IDS_DIALOGUE_33252 "Il y a quelqu'un?" + IDS_DIALOGUE_33253 "Qui est là?" + IDS_DIALOGUE_33254 "Allo?" + IDS_DIALOGUE_33257 "AHHHH!!!" + IDS_DIALOGUE_33258 "WWWOOOOAAAA!!!" + IDS_DIALOGUE_33259 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33265 "A qui sont ces empreintes?" + IDS_DIALOGUE_33266 "Hum, des traces? Où mènent-elles?" + IDS_DIALOGUE_33267 "Un espion est passé par-là? Je ferai mieux de suivre ces traces." + IDS_DIALOGUE_33268 "Grenade!" + IDS_DIALOGUE_33269 "Attention!" + IDS_DIALOGUE_33270 "A couvert!" + IDS_DIALOGUE_33271 "A terre!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33282 "Rien." + IDS_DIALOGUE_33283 "Mon imagination me joue des tours." + IDS_DIALOGUE_33284 "Rien du tout." + IDS_DIALOGUE_33285 "Où es-tu parti?" + IDS_DIALOGUE_33286 "Où es-tu?" + IDS_DIALOGUE_33287 "Je peux sentir ta décadence!" + IDS_DIALOGUE_33288 "Je te trouverai, misérable espion!" + IDS_DIALOGUE_33289 "Par où es-tu parti?!?" + IDS_DIALOGUE_33290 "Aucun espion ne peut m'échapper." + IDS_DIALOGUE_33291 "Qui a éteint la lumière?" + IDS_DIALOGUE_33292 "Pourquoi est-ce qu'il fait noir?" + IDS_DIALOGUE_33293 "Qui a allumé la lumière?" + IDS_DIALOGUE_33294 "Qu'est qui est arrivé à la lumière?" + IDS_DIALOGUE_33295 "Tu ne peux pas m'échapper." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33296 "Maintenant je vous tiens !" + IDS_DIALOGUE_33297 "Où est mon arme?" + IDS_DIALOGUE_33298 "Pourquoi je n'ai plus d'arme?" + IDS_DIALOGUE_33299 "Un sale capitaliste m'a volé mon arme!" + IDS_DIALOGUE_33300 "Oh non!" + IDS_DIALOGUE_33301 "C'est terrible!" + IDS_DIALOGUE_33302 "A terre!" + IDS_DIALOGUE_33303 "Attention!" + IDS_DIALOGUE_33304 "Hors de mon chemin!" + IDS_DIALOGUE_33305 "Bouge, idiot!" + IDS_DIALOGUE_33311 "Je suis touché!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33312 "Oh, ça fait mal!" + IDS_DIALOGUE_33313 "Tu paieras pour ça!" + IDS_DIALOGUE_33314 "Pitié, camarade!" + IDS_DIALOGUE_33316 "Pitié!" + IDS_DIALOGUE_33318 "Oof!" + IDS_DIALOGUE_33319 "Unh!" + IDS_DIALOGUE_33320 "Huh!" + IDS_DIALOGUE_33321 "Où es-tu?" + IDS_DIALOGUE_33322 "Rends-toi!" + IDS_DIALOGUE_33323 "Montre-toi!" + IDS_DIALOGUE_33324 "Sors immédiatement!" + IDS_DIALOGUE_33325 "Ne m'oblige pas à te pourchasser." + IDS_DIALOGUE_33326 "J'abandonne." + IDS_DIALOGUE_33327 "Hum, il a disparu." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33328 "Rien!" + IDS_DIALOGUE_33329 "Sales capitalistes insaisissables." + IDS_DIALOGUE_33330 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_33331 "Hé, toi! Debout!" + IDS_DIALOGUE_33332 "Que s'est-il passé?" + IDS_DIALOGUE_33333 "Ca va?" + IDS_DIALOGUE_33334 "On se sépare!" + IDS_DIALOGUE_33335 "Je vais par ici!" + IDS_DIALOGUE_33336 "Tu vas par-là!" + IDS_DIALOGUE_33338 "Sonnez l'alarme!" + IDS_DIALOGUE_33339 "Tu es fait!" + IDS_DIALOGUE_33340 "Je te tiens!!!" + IDS_DIALOGUE_33341 "Tu vas payer!" + IDS_DIALOGUE_33342 "Tu te prends pour un dur?" + IDS_DIALOGUE_33343 "Viens voir papa!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11728 "Je suis occupé." + IDS_DIALOGUE_11729 "Revenez plus tard. Ca peut prendre un moment." + IDS_DIALOGUE_11730 "S'il vous plaît, laissez-moi seul!" + IDS_DIALOGUE_11731 "Merci de m'avoir sauvé. Je rentre à la dacha. Je peux suivre la route si vous ouvrez la porte." + IDS_DIALOGUE_11732 "Dites-moi quand la côte est dégagée." + IDS_DIALOGUE_11733 "Et voilà!" + IDS_DIALOGUE_11734 "Dites-moi quand je peux y aller." + IDS_DIALOGUE_11735 "J'y vais." + IDS_DIALOGUE_11736 "Dites-moi quand!" + IDS_DIALOGUE_11737 "Couvrez-moi!" + IDS_DIALOGUE_11738 "La porte est fermée ! Poussez le levier pour l'ouvrir !" + IDS_DIALOGUE_11739 "Ne me laissez pas ici! Ils vont me torturer!" + IDS_DIALOGUE_11740 "Merci! Je vous attendrai à la dacha." + IDS_DIALOGUE_11741 "Il y a une tour de relais sur votre droite." + IDS_DIALOGUE_11742 "Référez-vous à votre carte pour ne pas vous perdre." + IDS_DIALOGUE_11743 "Emparez-vous d'une moto-neige et retournez à l'avion! Vite!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11744 "Mauvaises nouvelles! Les agents du C.R.I.M.E. sont arrivés avant vous. Ils vont faire sauter l'avion! Le pilote est caché, mais vous aurez des ennuis s'ils le trouvent." + IDS_DIALOGUE_11745 "La route principale a été coupée! Vous devez trouver un autre moyen de quitter la zone!" + IDS_DIALOGUE_11746 "Il est pratiquement certain que la police vous recherche, puisqu'ils pensent que vous avez tué l'associé de Kamal. Evitez les policiers." + IDS_DIALOGUE_11747 "Pour utiliser le micro espion, placez-le simplement sur le récepteur d'un téléphone. Allez vous cacher jusqu'à la fin de la communication et activez le micro pour écouter ce qui a été dit." + IDS_DIALOGUE_11748 "Vous pouvez aller aux toilettes, mais vous n'avez pas le droit de passer derrière les portes de sécurité." + IDS_DIALOGUE_11749 "Comme je le disais, vous n'avez pas le droit de passer derrière les portes de sécurité." + IDS_DIALOGUE_11750 "Arrêtez de fouiner!" + IDS_DIALOGUE_11751 "Je vous ai dit de rester ici!" + IDS_DIALOGUE_11752 "Votre attitude tapageuse commence à m'irriter." + IDS_DIALOGUE_11753 "Si vous êtes vue, les gardes vont essayer de vous arrêter. Evitez-les ou ils vous ramèneront à l'entrée!" + IDS_DIALOGUE_11754 "Voilà votre stupide sac. Je n'arrive pas à croire que vous m'avez fait attendre ici avec ce truc de fille. C'est très... inconvenant." + IDS_DIALOGUE_11755 "Regarde ce que tu as fait! Idiot!" + IDS_DIALOGUE_11756 "Moi ? Mais c'est TA faute !" + IDS_DIALOGUE_11757 "MA faute! Tu ne regardais même pas ce que tu faisais!" + IDS_DIALOGUE_11758 "C'EST très exagéré. Peut-être que j'ai regardé ailleurs pendant une seconde, mais c'est toi qui est arrivé en courant sans regarder devant toi!" + IDS_DIALOGUE_11759 "J'ai cru voir un singe." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11760 "Moi aussi! C'est pour ça que je regardais derrière." + IDS_DIALOGUE_11761 "Bien sûr! Et pourquoi un singe TE pourchasserait?" + IDS_DIALOGUE_11762 "Parfois, ils sentent mes bananes. La semaine dernière, un groupe m'a attaqué et ils m'ont volé la moitié de celles que j'avais!" + IDS_DIALOGUE_11763 "Ils en veulent aussi à mes mangues." + IDS_DIALOGUE_11764 "J'ai l'impression que nous avons un ennemi commun, mon ami." + IDS_DIALOGUE_11765 "Tu ne crois pas que..." + IDS_DIALOGUE_11766 "Croire quoi?" + IDS_DIALOGUE_11767 "Est-ce une coïncidence que deux vendeurs de fruit regardent en même temps des singes, au même coin de rue, et qu'ils paniquent simultanément, ce qui cause une collision qui accidente les deux chariots?" + IDS_DIALOGUE_11768 "Tu crois qu'ILS avaient prévu ça? Les SALETES!" + IDS_DIALOGUE_11769 "Prends garde, mon ami. Ils peuvent attaquer à tout instant!" + IDS_DIALOGUE_11770 "Ils ont des armes!" + IDS_DIALOGUE_11771 "Attention aux tireurs sur les balcons!" + IDS_DIALOGUE_11772 "Tenez bon!" + IDS_DIALOGUE_11773 "Oh oh!" + IDS_DIALOGUE_11774 "Ok, fillette, tenez bon!" + IDS_DIALOGUE_11775 "Attention à ces mimes!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11776 "Il essaie de bloquer la rue!" + IDS_DIALOGUE_11777 "Vite! Il ferme les portes!" + IDS_DIALOGUE_11778 "Tirez sur le verrou de cette porte!" + IDS_DIALOGUE_11779 "Vite! Tirez sur le verrou!" + IDS_DIALOGUE_11780 "Je suis un peu fatigué..." + IDS_DIALOGUE_11781 "On le rattrape!" + IDS_DIALOGUE_11782 "En haut sur ce balcon!" + IDS_DIALOGUE_11783 "Tenez bon! Virage serré cul-de-sac droit devant!" + IDS_DIALOGUE_11784 "Et n'espérez pas que je garde votre sac cette fois." + IDS_DIALOGUE_11785 "A l'aide! La porte est fermée! Impossible de sortir!" + IDS_DIALOGUE_11786 "Fuyez! Il est juste derrière moi!" + IDS_DIALOGUE_11787 "Amenez plus d'eau!" + IDS_DIALOGUE_11788 "Vite! La glace commence à fondre!" + IDS_DIALOGUE_11789 "Ca ne sert à rien! L'incendie est incontrôlable!" + IDS_DIALOGUE_11790 "A l'aide! Quelqu'un!" + IDS_DIALOGUE_11791 "J'ai de graves ennuis!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11792 "Agent Archer! Par ici!" + IDS_DIALOGUE_11793 "Il va me tuer!" + IDS_DIALOGUE_11794 "Tu as vu Carter récemment?" + IDS_DIALOGUE_11795 "Tu n'es pas au courant? Ils l'ont pris alors qu'il se préparait à voir Vengeance Factory. Il avait les plans du projet Epsilon avec lui. Alors ils en ont fait un homme-caisse." + IDS_DIALOGUE_11796 "Nom d'un chien. Bien fait pour lui. C'est le problème dans ce milieu. Les criminels ont trop de problèmes de droits pour faire passer l'EQUIPE en premier." + IDS_DIALOGUE_11797 "Cornelius Fitchpins, Enseigne de troisième classe." + IDS_DIALOGUE_11798 "Hé bien, Kitchener veut vraiment une promotion. Il me supplie de le transférer au bureau du Directeur pour servir de table." + IDS_DIALOGUE_11799 "Rien d'étonnant? Laisse-moi te dire une chose, mon gars, la vie d'un homme-caisse n'a rien de terrible." + IDS_DIALOGUE_11800 "Hé, ne le prends pas mal. Je pense juste qu'il s'y prend mal. Tu fais un bon boulot en tant que pièce de mobilier et ça peut devenir une carrière. Qu'est-ce que tu peux espérer, aller dans une plus jolie pièce? Moi, j'apprendrai à rouler, comme ça je pourrai attraper des espions." + IDS_DIALOGUE_11801 "Ca va mieux aujourd'hui, Chuck?" + IDS_DIALOGUE_11802 "Non, mon ami déformé. Comme toute chose, l'horreur a une limite. Et je l'ai atteinte." + IDS_DIALOGUE_11803 "Hé, mais ça vient du film Le cerveau qui ne voulait pas mourir, non? J'adore ce film." + IDS_DIALOGUE_11804 "Attends, Mikey! Je vais trouver quelque chose." + IDS_DIALOGUE_11805 "Ok." + IDS_DIALOGUE_11806 "Alors?" + IDS_DIALOGUE_11807 "Presque." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11808 "Aïe! Arrête!" + IDS_DIALOGUE_11809 "Arrête! Tu m'écrases!" + IDS_DIALOGUE_11810 "Bienvenue à Ressources-Humaines, l'outil de torture automatique et polyvalent du C.R.I.M.E. Voyons ce qui attend notre victime d'aujourd'hui." + IDS_DIALOGUE_11811 "Homme-caisse ! Hé, oui, mes amis, la victime va devenir un misérable bloc de misère humaine. La punition parfaite pour tous les méchants et les méchantes qui ont besoin qu'on leur rappelle à quel point ils sont insignifiants. La procédure est réversible à 65%, il est donc possible de récompenser les hommes-caisses qui se sont bien comportés en les retransformant en une pâle imitation de leur ancien aspect !" + IDS_DIALOGUE_11812 "Faites chauffer la plaque et préparez votre spatule ! Nous allons faire des crêpes humaines !" + IDS_DIALOGUE_11813 "A moins que vous ne préfériez un bon bol de soupe à l'homme ?" + IDS_DIALOGUE_11814 "Mama mia! Mais notre victime d'aujourd'hui a droit à la PUNITION MAXIMALE! Attention, mesdames et messieurs, le plat du jour va sortir! Des tagliatelles à la humanata!" + IDS_DIALOGUE_11815 "Tout d'abord, notre victime va connaître une écrasante agonie en passant dans l'ATTENDRISSEUR! Ensuite, la DECOUPE HURLANTE! Suivie de la CUISSON ENFLAMMEE! Et enfin, la terrifiante agonie du MIXEUR!" + IDS_DIALOGUE_11816 "C'est la première fois que Ressources-Humaines va être utilisé au réglage maximal. On peut sentir l'impatience, mesdames et messieurs. Place aux Ressouces-Humaines!" + IDS_DIALOGUE_11817 "Il semble que nous rencontrions quelques difficultés techniques." + IDS_DIALOGUE_11818 "Directeur, nous avons un appel... C'est un appel urgent. Pour vous." + IDS_DIALOGUE_11819 "Je vois." + IDS_DIALOGUE_11820 "Je me fiche de savoir si c'est le neveu du scénariste. Il a intérêt à finir en rondelles ou vous allez entendre parler de mon agent. Oui, Bernard, je comprends parfaitement, mais il est infernal. Vous avez vu les bandes? Il passe son temps à regarder la caméra. Je n'ai accepté de faire ce film que parce que vous m'avez supplié. Vous m'avez supplié, Bernard. Je devais jouer dans Le boulot italien, mais j'ai refusé. Pour vous. Je pourrai travailler avec Michael Caine et Noel Coward. Et je suis là avec Terence Sloggins l'idiot, l'idiot neveu du stupide scénariste. Au revoir, Bernard. Je raccroche." + IDS_DIALOGUE_11821 "Je ne peux pas respirer! Je ne peux pas respirer! Quelqu'un peut me pousser contre une fenêtre?" + IDS_DIALOGUE_11822 "La ferme, la caisse, on essaie de dormir nous." + IDS_DIALOGUE_11823 "Alors tu as développé cette nouvelle lave artificielle?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11824 "Absolument. Elle te plaît?" + IDS_DIALOGUE_11825 "Ouais, c'est super, c'est vraiment génial comparé à ce qu'on avait avant." + IDS_DIALOGUE_11826 "Elle peut tenir à des températures allant jusqu'à 343 degrés kelvins. La précédente se décomposait à 313 degrés kelvin. Je prends des bains plus chaud que ça." + IDS_DIALOGUE_11827 "Le seul problème, c'est que ça ne ressemble pas vraiment à de la lave." + IDS_DIALOGUE_11828 "C'est volontaire en fait. Nos premiers prototypes avaient l'air très vrais, mais les résultats du focus group n'étaient pas ceux qu'on attendait. Alors on s'est dit pourquoi se prendre la tête, faisons-le juste vraiment cool." + IDS_DIALOGUE_11829 "Qu'est-ce qui n'allait pas avec le prototype réaliste?" + IDS_DIALOGUE_11830 "Les gens s'arrêtent aux apparences. C'est dur de les impressionner avec un magma liquide de jardin. Pourquoi penses-tu que nos QG sont souterrains? Ca serait moins cher et plus pratique de louer des bureaux dans un immeuble. Mais alors nos clients potentiels penseraient qu'on est pas assez méchant pour faire leurs opérations." + IDS_DIALOGUE_11831 "C'est logique." + IDS_DIALOGUE_11832 "Regarde le dernier Criminalité magazine. Ils présentent deux organisations maléfiques: Misery, inc. et Poing d'injustice. Si tu regardes leurs CVs..." + IDS_DIALOGUE_11833 "C'est quoi un CV?" + IDS_DIALOGUE_11834 "Un curriculum vitae... Enfin, bref, Misery, inc. est beaucoup plus sophistiqué. Poing d'injustice, c'est du bas niveau: kidnapping, extorsion... Les petits trucs qu'un type avec un garage et un esprit un peu dérangé peut faire seul. Mais ils ont pourtant bien meilleure réputation dans le milieu du crime." + IDS_DIALOGUE_11835 "Tu plaisantes. Je pensais qu'ils étaient à peu près comme nous." + IDS_DIALOGUE_11836 "On a plus de méchants dans notre garderie qu'ils en ont dans toute leur organisation. Mais ils ont engagé un consultant en design pour les aider à faire leur QG. " + IDS_DIALOGUE_11837 "C'est pas cet endroit qui est genre donjon médiéval de science-fiction?" + IDS_DIALOGUE_11838 "Si, c'est celui-la. Je parie que ça tient avec des punaises et du chewing-gum, mais ça a vraiment impressionné les médias." + IDS_DIALOGUE_11839 "Cherchez des caches de sérum anti-super soldat! Il vous faut le sérum pour arrêter la force d'invasion." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11841 "Alors que c'est-il passé? Je croyais que vous deviez garder le drapeau." + IDS_DIALOGUE_11842 "Ne commencez pas, fillette." + IDS_DIALOGUE_11843 "J'ai repoussé seule une invasion de super soldats et vous n'avez même pas réussi à tenir en respect une tarlouze arrogante avec un pistolet de rien du tout." + IDS_DIALOGUE_11844 "Il m'a pris par surprise!" + IDS_DIALOGUE_11845 "Peut-être que vous l'auriez entendu venir si vous n'aviez pas eu la tête dans le pâté." + IDS_DIALOGUE_11846 "Mais enfin! On m'a tiré dessus! Plusieurs fois!" + IDS_DIALOGUE_11847 "Oh, mon pauvre bébé." + IDS_DIALOGUE_11848 "Ne vous moquez pas de moi, femme. Ca fait mal !" + IDS_DIALOGUE_11849 "Vraiment? Moi, je me suis faite zapper par un rayon laser. A votre avis, c'est agréable? Bien sûr, après avoir été transpercée par une épée et emportée par une tornade, ce n'est pas si méchant." + IDS_DIALOGUE_11850 "Vous avez de la chance que je perde tout mon sang, sinon je vous apprendrai une ou deux choses à propos du respect..." + IDS_DIALOGUE_11851 "Tout votre sang?" + IDS_DIALOGUE_11852 "D'accord, j'exagère peut-être un peu." + IDS_DIALOGUE_11853 "Pas que ça fasse vraiment la différence. Je vous attends n'importe quand, n'importe où." + IDS_DIALOGUE_11854 "Je vais vous dire le mot de passe. C'est Balaji Malpani a intérêt à se reprendre ou il va connaître une mort très lente et très douloureuse. Vous avez compris? Adieu!" + IDS_DIALOGUE_11855 "Passez cette porte! Elle mène dans la rue!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11856 "Je fais ma pause café. Revenez plus tard." + IDS_DIALOGUE_11857 "L'hélicoptère arrive! Vous devez tenir jusqu'à ce qu'il soit là. Nous pensons que des renforts ennemis approchent de votre position, alors préparez-vous à combattre!" + IDS_DIALOGUE_11858 "C'est trop tard pour sauver Armstrong. Trouvez où ils l'emmènent!" + IDS_DIALOGUE_11859 "Nous allons larguer des explosifs pour vous! Trouvez-les et placez-les dans le complexe." + IDS_DIALOGUE_11860 "Equipes d'interception, le Directeur temporaire Lawrie veut vous voir, à l'entrée." + IDS_DIALOGUE_11861 "Sauvez les otages et éliminez les mimes!" + IDS_DIALOGUE_11862 "Sacrebleu!" + IDS_DIALOGUE_11863 "Cate, où allez-vous? Votre pilote est encore prisonnier!" + IDS_DIALOGUE_11864 "Un homme avec un œillet? Je ne l'ai pas vu." + IDS_DIALOGUE_11865 "Ils disent que la victime a été poignardée, qu'on lui a tiré dessus et écrasée par éléphant. C'est horrible!" + IDS_DIALOGUE_11866 "Non, je n'ai vu personne avec un œillet." + IDS_DIALOGUE_11867 "Vous avez besoin que quelqu'un vous fasse visiter? J'AIME faire visiter." + IDS_DIALOGUE_11868 "Un œillet? Non, désolé." + IDS_DIALOGUE_11869 "Peut-être que je peux libérer mon agenda ce soir et vous inviter à dîner." + IDS_DIALOGUE_11870 "Vous pourriez demander au vendeur de fleurs." + IDS_DIALOGUE_11871 "Oui, j'ai vu un homme avec un œillet. Il était ici il n'y a pas longtemps." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11872 "J'ai entendu dire que quelqu'un a été assassiné près d'ici!" + IDS_DIALOGUE_11873 "Avec un œillet? Non, désolée." + IDS_DIALOGUE_11874 "Vous avez entendu pour le meurtre? Ce quartier devient malsain!" + IDS_DIALOGUE_11875 "Pourquoi ne demandez-vous pas au fleuriste?" + IDS_DIALOGUE_11876 "A quoi ressemblaient-ils?" + IDS_DIALOGUE_11877 "L'homme faisait environ 1 mètre 80 avec une barbe rousse en bataille et il portait une jupe." + IDS_DIALOGUE_11878 "Tu veux dire un kilt?" + IDS_DIALOGUE_11879 "Je ne m'y connais pas en mode féminine. En tout cas, la fille était Européenne, avec des cheveux châtains, une chemise orange et un pantalon à rayures. C'est elle qui avait une arme." + IDS_DIALOGUE_11880 "Mais la victime a été poignardée." + IDS_DIALOGUE_11881 "Arrêtez-les, c'est tout. On verra pour les détails par la suite." + IDS_DIALOGUE_11882 "Oui, un homme m'a acheté un œillet rose il y a quelques minutes. Vous êtes son amie? Il a laissé ça." + IDS_DIALOGUE_11883 "Qui a mangé mon plat à la mangue? Ma mère l'avait fait pour MOI!" + IDS_DIALOGUE_11884 "Bonjour." + IDS_DIALOGUE_11885 "Où est cette idiote? Elle devait être là il y a 20 minutes." + IDS_DIALOGUE_11886 "Un homme a été tué derrière l'hôtel Happy Guest! Ils disent que c'est un gang!" + IDS_DIALOGUE_11887 "Il fait si chaud aujourd'hui!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11888 "On m'a dit qu'une famille a été tuée par des chiens sauvages à l'hôtel Happy Guest. Comme c'est terrible!" + IDS_DIALOGUE_11889 "Si seulement ces voyous avaient attaqué un autre cinéma. Celui-la avait des fauteuils tellement confortables." + IDS_DIALOGUE_11890 "Vous, là. J'ai un message de Kamal. Il veut vous voir." + IDS_DIALOGUE_11891 "Malheureusement, j'ai oublié où je l'avais vu. Vous devrez le trouver seule." + IDS_DIALOGUE_11892 "Comme vous, je suis victime de l'injustice. Les méchants policiers m'ont interdit de rester sous mon porche." + IDS_DIALOGUE_11893 "Je comprends que vous me trouviez irrésistible, mais j'en ai assez de vous parler." + IDS_DIALOGUE_11894 "Partez." + IDS_DIALOGUE_11895 "Les acteurs jouaient mal! Et les effets spéciaux! Le sang, on aurait dit de la peinture rouge!" + IDS_DIALOGUE_11896 "C'était du faux sang. Il est plus vif parce qu'il contient plus d'oxygène. Comment peux-tu critiquer les acteurs, avec les films que TOI tu aimes? J'abandonne." + IDS_DIALOGUE_11897 "Ma partie préférée, c'est quand elle commence à se déshabiller et que le camion traverse le mur. Ca m'a tellement fait rire que j'ai recraché mon soda par le nez." + IDS_DIALOGUE_11898 "J'ai bien aimé la scène au bar, le gars avec ce truc et l'autre avec le couvre-œil... J'ai cru qu'on allait m'envoyer à l'hôpital tellement je rigolais. Quel film génial." + IDS_DIALOGUE_11899 "Eteignez ce feu!" + IDS_DIALOGUE_11900 "Vous, là! J'ai dit d'éteindre ce feu!" + IDS_DIALOGUE_11901 "J'attends qu'on me sauve." + IDS_DIALOGUE_11902 "Il était temps." + IDS_DIALOGUE_11903 "Bonjour, agent Archer. Comment allez-vous aujourd'hui?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11904 "Vous... vous me parlez... à moi? Wow." + IDS_DIALOGUE_11905 "Bonjour, Cate. Mildred vous remercie pour les fleurs. Elle se sent beaucoup mieux." + IDS_DIALOGUE_11906 "Mulligatawny? Perdu. Fichez le camp." + IDS_DIALOGUE_11907 "Par ici! Allez!" + IDS_DIALOGUE_11908 "Suivez-moi!" + IDS_DIALOGUE_11909 "Par ici!" + IDS_DIALOGUE_11910 "Vite!" + IDS_DIALOGUE_11911 "Ici!" + IDS_DIALOGUE_11912 "Abigail..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33344 "T'es fichues !" + IDS_DIALOGUE_33345 "Viens ici et accepte ton destin!!!" + IDS_DIALOGUE_33346 "Tu n'as pas la moindre chance!" + IDS_DIALOGUE_33347 "Je vais prendre plaisir à te tuer!" + IDS_DIALOGUE_33348 "Tu peux faire tes prières!" + IDS_DIALOGUE_33349 "Tu vas mourir!" + IDS_DIALOGUE_33350 "Et je dois avoir peur de toi?" + IDS_DIALOGUE_33351 "Les gars! A l'aide!" + IDS_DIALOGUE_33352 "J'ai besoin d'aide!" + IDS_DIALOGUE_33353 "Par ici!" + IDS_DIALOGUE_33354 "Par ici!" + IDS_DIALOGUE_33355 "Hé! J'ai besoin d'aide!!!" + IDS_DIALOGUE_33356 "Hé! Les gars?" + IDS_DIALOGUE_33357 "Où sont mes renforts?" + IDS_DIALOGUE_33358 "YAAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_33359 "GAAAAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33361 "Juste un petit somme." + IDS_DIALOGUE_33362 "Je suis très fatigué d'un coup." + IDS_DIALOGUE_33363 "Je me sens étrange." + IDS_DIALOGUE_33364 "Je ne me sens pas bien..." + IDS_DIALOGUE_33373 "Ne me faites pas mal!" + IDS_DIALOGUE_33374 "Vous me rendez nerveux!" + IDS_DIALOGUE_33375 "Je suis très angoissé!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33376 "Maintenant tu es dans le pétrin!" + IDS_DIALOGUE_33377 "Je suis très en colère!" + IDS_DIALOGUE_33378 "Tu as fait une grave erreur, mon ami!" + IDS_DIALOGUE_33379 "Je viens pour toi!" + IDS_DIALOGUE_33380 "Je sais que tu es là!" + IDS_DIALOGUE_33381 "Je t'ai entendu!" + IDS_DIALOGUE_33382 "Qui est là?" + IDS_DIALOGUE_33383 "Qui fait ce bruit?" + IDS_DIALOGUE_33384 "Ne crois pas que je ne t'entends pas!" + IDS_DIALOGUE_33385 "Bonjour?" + IDS_DIALOGUE_33386 "Hum?" + IDS_DIALOGUE_33387 "Qu'est-ce que c'était que ce bruit?" + IDS_DIALOGUE_33388 "J'ai entendu quelque chose." + IDS_DIALOGUE_33389 "D'où vient ce bruit?" + IDS_DIALOGUE_33390 "Je t'ai vu!" + IDS_DIALOGUE_33391 "Toi! Là! Stop!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33392 "Je t'aurai!" + IDS_DIALOGUE_33393 "Maintenant je vous tiens !" + IDS_DIALOGUE_33394 "Tu l'as cherché!" + IDS_DIALOGUE_33395 "C'est très inquiétant!" + IDS_DIALOGUE_33396 "Ok, maintenant je suis en colère!" + IDS_DIALOGUE_33397 "Tu ne peux pas me tromper, tu sais!" + IDS_DIALOGUE_33398 "Je n'aime pas ça!" + IDS_DIALOGUE_33399 "Hum." + IDS_DIALOGUE_33400 "Hein?" + IDS_DIALOGUE_33401 "Qu'est-ce que c'est?" + IDS_DIALOGUE_33402 "Qu'est-ce qui se passe?" + IDS_DIALOGUE_33403 "Qu'avons-nous là?" + IDS_DIALOGUE_33404 "Il y a quelqu'un?" + IDS_DIALOGUE_33405 "Qui est là?" + IDS_DIALOGUE_33406 "Allo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33417 "Qui a éteint la lumière?" + IDS_DIALOGUE_33418 "Il fait sombre ici d'un coup." + IDS_DIALOGUE_33419 "Qui a allumé la lumière?" + IDS_DIALOGUE_33420 "Qu'est-ce qui se passe?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33426 "Je perds mon sang!" + IDS_DIALOGUE_33427 "C'est la sécu qui va être contente!" + IDS_DIALOGUE_33428 "Ayez pitié!" + IDS_DIALOGUE_33430 "Pitié!" + IDS_DIALOGUE_33432 "Qu'est-ce qui ne va pas?" + IDS_DIALOGUE_33433 "Debout!" + IDS_DIALOGUE_33434 "Qu'est-ce qui t'est arrivé?" + IDS_DIALOGUE_33435 "C'est pas le moment de dormir!" + IDS_DIALOGUE_33436 "" + IDS_DIALOGUE_33437 "" + IDS_DIALOGUE_33438 "" + IDS_DIALOGUE_33439 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33441 "Prenez ça !" + IDS_DIALOGUE_33442 "Meurs !" + IDS_DIALOGUE_33443 "Maintenant je vous tiens !" + IDS_DIALOGUE_33444 "Vous pouvez courir, mais pas vous cacher !" + IDS_DIALOGUE_33445 "Dites bonjour à Bruno pour moi." + IDS_DIALOGUE_33449 "Soyez maudite !" + IDS_DIALOGUE_33450 "Maintenant je suis en colère !" + IDS_DIALOGUE_33451 "Je vais prendre du plaisir à vous voir mourir." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33456 "Femme maléfique !" + IDS_DIALOGUE_33457 "J'ai la main qui me démange !" + IDS_DIALOGUE_33458 "Vous avez de la chance que je sois dans cette chaise." + IDS_DIALOGUE_33459 "Votre tête va bientôt orner mon mur." + IDS_DIALOGUE_33460 "Ne tirez pas sur ce fichu oiseau." + IDS_DIALOGUE_33461 "S'il vous plaît, ne tirez pas sur l'oiseau." + IDS_DIALOGUE_33462 "Oh vous entraînez au tir sur l'oiseau. C'est très drôle." + IDS_DIALOGUE_33463 "Tirer sur l'oiseau c'est jeter l'argent par les fenêtres! C'est un oiseau très cher." + IDS_DIALOGUE_33464 "L'oiseau et moi sommes là pour vous aider. Ne nous tirez pas dessus!" + IDS_DIALOGUE_33465 "Oh, cela m'emplit de joie que vous ayez décidé d'abattre ce fichu oiseau." + IDS_DIALOGUE_33466 "Et à quoi est-ce supposé servir?" + IDS_DIALOGUE_33467 "Oh, mon dieu." + IDS_DIALOGUE_33468 "Oh, ça ne peut pas être une bonne chose." + IDS_DIALOGUE_33469 "" + IDS_DIALOGUE_33470 "" + IDS_DIALOGUE_33471 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33472 "" + IDS_DIALOGUE_33473 "" + IDS_DIALOGUE_33474 "" + IDS_DIALOGUE_33475 "" +END + +STRINGTABLE +BEGIN + IDS_HINT_3100 "Conseil : utilisez la barre d'espace pour sauter les séquences cinématiques. Il est recommandé de regarder chaque séquence au moins une fois. Remarquez que vous pouvez désactiver les bulles d'aide dans le menu des options de jeu." + IDS_HINT_3101 "Conseil : si vous ne savez pas trop ce que vous devez faire, allez dans l'écran de Mission (par défaut : Tab) pour revoir vos objectifs. De plus, la boussole dans l'angle supérieur droit de l'écran vous indique souvent les destinations importantes." + IDS_HINT_3102 "Conseil : vous pouvez souvent fuir et vous cacher plutôt que combattre. Les ennemis perdent votre trace s'ils n'ont pas vu par où vous êtes partie ou si vous vous cachez." + IDS_HINT_3103 "Conseil : fouillez toujours les corps à la recherche d'objets utiles. Vous devez maintenir la commande Action enfoncée jusqu'à ce que la barre de progression disparaisse si vous voulez trouver tout ce que votre ennemi portait." +END + +STRINGTABLE +BEGIN + IDS_HINT_3104 "Conseil : pensez à dépenser vos points de compétence pour vous améliorer. Souvenez-vous que vous pouvez marquer des points de compétence supplémentaires en accomplissant des objectifs secondaires ou en trouvant des objets de renseignement ou des manuels d'entraînement des espions." + IDS_HINT_3105 "Conseil : si vous trouvez le jeu trop difficile ou bien trop facile, changez le niveau de difficulté. Vous pouvez également essayer de choisir une autre tactique que de foncer tête baissée sur vos ennemis." + IDS_HINT_3106 "Conseil : vous aurez parfois à trouver des objets spéciaux pour atteindre un objectif. Consultez l'écran d'inventaire (par défaut : N) pour voir les objets que vous portez. Vous pouvez les examiner pour apprendre à les utiliser." + IDS_HINT_3107 "Conseil : tirer une munition de pistage sur un ennemi permet d'indiquer sa position sur le radar et donc vous facilite les choses quand vous voulez l'éviter." + IDS_HINT_3108 "Conseil : certaines armes permettent d'utiliser différentes munitions. Utilisez la touche Changer de munitions (par défaut : F) pour passer en revue les différents types de munitions disponibles, ou consultez l'écran d'équipement." + IDS_HINT_3109 "Conseil : utilisez l'écran de renseignement (par défaut : I) pour examiner les cartes que vous avez trouvées. En étudiant la topographie des lieux et en utilisant votre boussole, vous devriez pouvoir déterminer où vous êtes et où vous devez aller." + IDS_HINT_3110 "Conseil : les ennemis seront alarmés s'ils découvrent des alliés inconscients ou morts. Vous pouvez déplacer les corps en utilisant la commande associée (par défaut : G)." + IDS_HINT_3111 "Conseil : les caméras de sécurité vont déclencher une alarme si elles vous repèrent ou voit un corps. Tirer sur une caméra de surveillance déclenche également une alarme, mais vous pouvez trouver des munitions spéciales pour les désactiver avec votre lanceur utilitaire CT-180." + IDS_HINT_3112 "Conseil : parfois, vous devrez revenir dans une zone que vous avez déjà visitée pour accomplir un de vos objectifs. Regardez votre boussole pour savoir où aller." + IDS_HINT_3113 "Conseil : la commande Dernière arme (par défaut : X) est un bon moyen de passer rapidement d'une arme discrète à une arme plus puissante." + IDS_HINT_3114 "Conseil : écouter les discussions de vos ennemis peut parfois vous fournir des informations utiles. De plus, les ennemis vaquent souvent à d'autres tâches lorsqu'ils ont terminé leur conversation, ce qui facilite votre progression." + IDS_HINT_3115 "Conseil : le viseur vous donne une bonne indication de votre précision. Plus il est flou, moins vos tirs seront précis. Vous pouvez améliorer votre visée en vous tenant parfaitement immobile. Avancer discrètement a moins d'impact sur votre précision que courir." + IDS_HINT_3116 "Conseil : créer une diversion volontairement peut être un excellent moyen d'attirer les gardes hors de votre route. Cherchez des pièces ou d'autres objets utilisables." + IDS_HINT_3117 "Conseil : Vous ne lancez la grenade que lorsque vous relâchez la commande de tir. Les grenades explosent trois secondes après que vous les avez lancées, sauf si elles touchent leur cible, auquel cas elles explosent immédiatement." + IDS_HINT_3118 "Conseil : la moto-neige vous offre un peu de protection contre les tirs venant en face de vous. Vous avez donc intérêt à charger sur vos cibles plutôt qu'à en faire le tour, ce qui expose votre dos." + IDS_HINT_3119 "Conseil : pour désamorcer une charge, sélectionnez-la et maintenez la commande Action enfoncée jusqu'à ce que la barre de progression disparaisse. Plus vous avez de compétence avec les gadgets, plus vite vous neutralisez la charge." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE29 "Vous avez été démasquée! Vous ne pouvez plus accéder au QG ennemi." + IDS_MISSIONFAILURE30 "Kamal a été tué!" + IDS_MISSIONFAILURE31 "Ce genre de comportement est inacceptable. Vous êtes renvoyée!" + IDS_MISSIONFAILURE32 "N'ayant pas apprécié d'être attaqué par celle qu'il croyait son alliée,\nArmstrong vous bat à mort." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_NOPICKUP_1 "Impossible de prendre plus de Shurikens!" + IDS_WEAPON_NOPICKUP_2 "Impossible de prendre plus de grenades!" + IDS_WEAPON_NOPICKUP_3 "Impossible de prendre plus de chatons en colère!" + IDS_WEAPON_NOPICKUP_4 "Impossible de prendre plus d'explosifs!" + IDS_WEAPON_NOPICKUP_5 "Impossible de prendre plus de pièces!" + IDS_WEAPON_NOPICKUP_6 "Impossible de prendre plus de pièges à ours!" + IDS_WEAPON_NOPICKUP_7 "Impossible de prendre plus de bananes!" + IDS_WEAPON_NOPICKUP_8 "Impossible de prendre plus de grenades assommantes!" + IDS_WEAPON_NOPICKUP_9 "Impossible de prendre plus de grenades somnifères!" + IDS_WEAPON_NOPICKUP_10 "Impossible de prendre plus de grenades corrosives!" + IDS_WEAPON_NOPICKUP_11 "Impossible de prendre plus de grenades hilarantes!" + IDS_WEAPON_NOPICKUP_12 "Impossible de prendre plus de micros!" +END + +STRINGTABLE +BEGIN + IDS_HINT_3120 "Conseil : lorsque vous ramassez un gadget ou une nouvelle arme, vous le prenez en main automatiquement. Vous pouvez désactiver cette fonction en désactivant Arme auto. dans le menu des options de jeu." + IDS_HINT_3121 "Conseil : lorsque vous pouvez interagir avec un objet, un texte s'affiche juste sous le curseur pour indiquer ce qui se passera si vous utilisez la commande Action." + IDS_HINT_3122 "Conseil : les gilets pare-balles absorbent très efficacement les dégâts. Sans protection, les armes vous infligent beaucoup de dégâts. Si vous n'avez plus de protection, vous avez intérêt à faire très attention jusqu'à en retrouver." + IDS_HINT_3123 "Conseil : lorsque vous combattez un méchant important, une jauge s'affiche en haut de l'écran pour signaler combien de dégâts vous devez infliger pour le vaincre." + IDS_HINT_3124 "Astuce: enregistrez souvent votre partie! Utilisez la touche Sauvegarde rapide (F6) ou passez par le menu de sauvegarde dans le menu principal. Le jeu effectue également des sauvegardes automatiques au début de chaque scène." + IDS_HINT_3125 "Conseil : parfois, il est préférable de fuir que de combattre. Réfléchissez d'abord à comment atteindre vos objectifs quand vous faites face à une forte adversité." + IDS_HINT_3126 "Conseil : si vous vous retrouvez acculée et que vous ne pouvez pas riposter, utilisez une banane pour passer." + IDS_HINT_3127 "Conseil : penchez-vous (par défaut : A et E) pour voir ce qui vous attend derrière le couloir sans vous exposer au danger. Vos ennemis finiront par vous remarquer, ne jetez donc que des coups d'oeil rapides." + IDS_HINT_3128 "Conseil : les civils paniqués appellent à l'aide, ce qui a pour effet de faire intervenir les policiers. N'utilisez pas d'arme à feu lorsque des civils sont proches, pour ne pas déclencher une panique." + IDS_HINT_3129 "Conseil : explorez votre environnement attentivement pour trouver des objectifs secondaires ou des objets et équipements utiles." + IDS_HINT_3130 "Astuce: avancez discrètement (par défaut: Maj gauche) pour que l'ennemi ne vous entende pas arriver. Vous pouvez utiliser le mode furtif (par défaut: Verrou maj.) pour avancer discrètement par défaut." + IDS_HINT_3131 "Astuce: si vous ne parvenez pas à localiser un attaquant, cherchez un tireur embusqué sur les balcons ou les toits. Si votre arme est équipée d'une lunette de visée, la commande Zoom (par défaut: W) permet de viser l'ennemi à distance." + IDS_HINT_3132 "Astuce: pensez à protéger vos alliés des tirs ennemis. La mission sera un échec s'ils sont tués." + IDS_HINT_3133 "Astuce: utilisez la commande de Chargement rapide (F9) pour charger la dernière sauvegarde rapide sans passer par les menus." + IDS_HINT_3134 "Astuce: la touche F8 permet de faire des captures d'écran dans le jeu. Les images sont placées et numérotées automatiquement dans le répertoire d'installation du jeu." + IDS_HINT_3135 "Astuce: évitez les substances dangereuses (feu, vapeur, câble électrique) pour ne pas être blessée." +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6016 "Quelque part dans la Mer Egée" + IDS_MISSION_TEXT_6017 "Quelque part dans la Mer de Marmara" +END + +STRINGTABLE +BEGIN + IDS_HINT_3136 "Astuce: enregistrez souvent votre partie! Utilisez la touche Sauvegarde rapide (F6) ou passez par le menu de sauvegarde dans le menu principal. Le jeu effectue également des sauvegardes automatiques au début de chaque scène." + IDS_HINT_3137 "Astuce: un coup à la tête inflige beaucoup plus de dégâts qu'un coup au torse ou aux membres. Les ennemis peuvent également être éliminés plus facilement lorsqu'ils sont pris par surprise." + IDS_HINT_3138 "Astuce: le lanceur utilitaire CT-180 peut être utilisé avec différentes munitions, notamment des brouilleurs de caméra, des fléchettes tranquillisantes et des munitions électriques." + IDS_HINT_3139 "Astuce: essayez d'éliminer les ennemis discrètement pour ne pas alerter d'autres adversaires. Les ennemis qui sont sur leurs gardes ou alarmés hurleront pour demander de l'aide." + IDS_HINT_3140 "Astuce: lorsque vous avez nettoyé une zone, il est possible d'attirer de nouveaux ennemis vers votre position en activant des alarmes. Si vous n'avez plus beaucoup de points de vie, d'armure ou de munitions, vous pouvez préparer des embuscades pour piéger les renforts et les fouiller par la suite." + IDS_HINT_3141 "Astuce: les ennemis s'approcheront du Chaton en colère en pensant que c'est un adorable petit chat. Lorsqu'une cible arrive à portée d'activation, le Chaton bondit sur sa proie." + IDS_HINT_3142 "Astuce: pour voir une liste de l'équipement que vous emportez, accédez au menu d'équipement (par défaut: ,). Vous pouvez également sélectionner une arme ou un gadget pour voir les munitions disponibles." + IDS_HINT_3143 "Astuce: une jauge d'oxygène s'affiche lorsque vous êtes sous l'eau. Quand la jauge est vide, vous commencez à vous noyer." + IDS_HINT_3144 "Astuce: pour voir les documents et les photographies que vous avez trouvés dans une mission, accédez à l'écran de Renseignements (par défaut: I). Sélectionnez un objet pour le voir en gros plan." + IDS_HINT_3145 "Astuce: vos points de vie et d'armure et les munitions dont vous disposez peuvent être présentées de trois façons différentes. Utilisez la touche = pour passer ces options en revue." + IDS_HINT_3146 "Astuce: il est possible de faire demi-tour instantanément en appuyant sur la commande Demi-tour (par défaut: Effacer). " + IDS_HINT_3147 "Astuce: la munition Bombe de colle du Lanceur utilitaire ralentit les ennemis sans les blesser. Tirez sur vos ennemis ou devant eux pour les piéger temporairement." + IDS_HINT_3148 "Astuce: pour mettre le jeu en pause, utilisez la touche Pause (en haut à droite de la plupart des claviers) ou afficher un menu en appuyant sur la touche Echap ou l'une des touches de raccourcis des menus, par exemple I pour les objets de renseignement ou P pour l'écran du joueur." + IDS_HINT_3149 "Astuce: vous pouvez prendre rapidement la lampe UNION en utilisant le raccourci correspondant (par défaut: L)." + IDS_HINT_3150 "Astuce: lorsque vous avez terminé le jeu, vous verrez l'option Liste des chapitres dans le menu de jeu en solitaire. Cette option permet de rejouer à n'importe quel chapitre quand vous le voulez." + IDS_HINT_3151 "Astuce: vous pouvez utiliser le bouton droit de la souris pour fermer les menus affichés pendant le jeu, comme quand vous appuyez sur la touche Echap." +END + +STRINGTABLE +BEGIN + IDS_HINT_3152 "Astuce: des icônes sont affichées sur la gauche de l'écran quand vous êtes soumise à des effets comme le feu, des somnifères, un produit étourdissant ou du poison." +END + +STRINGTABLE +BEGIN + IDS_NAMES_3300 "" + IDS_NAMES_3301 "Bruno" + IDS_NAMES_3302 "D. Schenker" + IDS_NAMES_3303 "M. Jones" + IDS_NAMES_3304 "Armstrong" + IDS_NAMES_3305 "Yamata-san" + IDS_NAMES_3306 "Hawkins" + IDS_NAMES_3307 "Barnes" + IDS_NAMES_3308 "Kamal" + IDS_NAMES_3309 "Banerjee" + IDS_NAMES_3310 "Harij" + IDS_NAMES_3311 "Pilote" +END + +STRINGTABLE +BEGIN + IDS_NAMES_3312 "Santa" + IDS_NAMES_3313 "Policier" + IDS_NAMES_3314 "Hatori-san" + IDS_NAMES_3315 "Malpani" + IDS_NAMES_3316 "Spencer" + IDS_NAMES_3317 "Cate" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7088 "Encore un super soldat!" + IDS_TRANSMISSIONS_7089 "Sauvez le pilote et empêchez le C.R.I.M.E. de faire sauter votre avion!" + IDS_TRANSMISSIONS_7090 "Coulez le sous-marin super secret et arrêtez l'invasion des super soldats!" + IDS_TRANSMISSIONS_7091 "Ce coffre ne peut être ouvert qu'avec une clé spéciale. Il ne peut pas être crocheté." + IDS_TRANSMISSIONS_7092 "C'est une image de grue." + IDS_TRANSMISSIONS_7093 "Un système de reconnaissance vocale protège cette porte.\nVotre nom n'est pas reconnu par le système de sécurité." + IDS_TRANSMISSIONS_7094 "Cette porte a été verrouillée par un système d'urgence.\nVous devez couper l'alimentation du système de sécurité." + IDS_TRANSMISSIONS_7095 "Cachez-vous ! Si vous êtes capturée, la mission sera un échec." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33575 "Faites-moi revivre, quelqu'un !" + IDS_DIALOGUE_33579 "Par ici!" + IDS_DIALOGUE_33582 "Couvrez-moi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33584 "Il faut être discret!" + IDS_DIALOGUE_33588 "Charge!" + IDS_DIALOGUE_33590 "Attention où vous tirez!" + IDS_DIALOGUE_33593 "Stop it, jackass!" + IDS_DIALOGUE_33596 "Attendez!" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2928 "examiner" + IDS_TARGET_2929 "activer" + IDS_TARGET_2930 "begin interrogation" + IDS_TARGET_2931 "reset power" + IDS_TARGET_2932 "position rocket" + IDS_TARGET_2933 "fuel rocket" + IDS_TARGET_2934 "extend gantry" + IDS_TARGET_2935 "launch rocket" + IDS_TARGET_2936 "place launch key" + IDS_TARGET_2937 "activate mining laser" + IDS_TARGET_2938 "insert battery" + IDS_TARGET_2939 "charge battery" + IDS_TARGET_2940 "activate airlock" + IDS_TARGET_2941 "insert cannonball" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2750 "Cate se rend au Japon pour enquêter sur un possible congrès international du crime." + IDS_MISSION_DESC_2751 "Cate doit s'infiltrer dans la propriété du Directeur et le photographier." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2752 "Cate se rend en Sibérie pour enquêter sur le projet Oméga. Sa première tâche consiste à préparer sa fuite." + IDS_MISSION_DESC_2753 "A la nuit tombée, Cate s'infiltre dans la base militaire pour y trouver le bâtiment des archives." + IDS_MISSION_DESC_2754 "Sa mission terminée, Cate doit s'échapper en vie de la base." + IDS_MISSION_DESC_2755 "Cate se rend à Akron, dans l'Ohio, pour trouver des indices dans la maison de Melvin Blitzny." + IDS_MISSION_DESC_2756 "Cate et Armstrong arrivent en Inde pour s'infiltrer dans le quartier général local du C.R.I.M.E." + IDS_MISSION_DESC_2757 "Après avoir gagné la confiance du C.R.I.M.E., Cate doit trouver un moyen d'accéder au coffre." + IDS_MISSION_DESC_2758 "Cate et Armstrong se rendent en Antarctique pour en apprendre plus sur le projet Oméga." + IDS_MISSION_DESC_2759 "Cate retourne en Inde afin d'enrayer une attaque de super soldats." + IDS_MISSION_DESC_2760 "Cate s'arrête au quartier général de l'UNION pour parler avec le D. Shenker des super soldats." + IDS_MISSION_DESC_2761 "Cate s'infiltre dans la base sous-marine secrète du C.R.I.M.E. pour sauver Armstrong." + IDS_MISSION_DESC_2762 "Cate et Armstrong cherchent un moyen de fuir la base sous-marine avant qu'elle ne soit complètement détruite." + IDS_MISSION_DESC_2763 "Après avoir été capturée par le C.R.I.M.E., Cate doit survivre au terrifiant Homme-Caisse et affronter un vieil ennemi." + IDS_MISSION_DESC_2764 "Cate doit repousser l'invasion des super soldats et protéger le drapeau de Khios." + IDS_MISSION_DESC_2765 "Une équipe d'interception de l'UNION vient secourir Cate au Japon." + IDS_MISSION_DESC_2766 "Une équipe d'interception de l'UNION est envoyée en Sibérie pour détruire une super ordinateur soviétique." + IDS_MISSION_DESC_2767 "Une équipe d'interception de l'UNION est envoyée en Inde pour trouver des informations sur Balaji Malpani." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2768 "Une équipe d'interception de l'UNION arrive en Antarctique pour libérer Armstrong." + IDS_MISSION_DESC_2769 "Une équipe d'interception de l'UNION doit repousser une attaque de mimes." +END + + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4800 "A full bucket of water." +END + +STRINGTABLE +BEGIN +IDS_MISSION_DD_01 "Antarctic Aggression (4-16)" +IDS_MISSION_DD_02 "Conflict in Calcutta (4-16)" +IDS_MISSION_DD_03 "Hydroelectric Hatred (4-16)" +IDS_MISSION_DD_04 "Judgement in Japan (4-16)" +IDS_MISSION_DD_05 "Winter War (4-16)" +IDS_MISSION_DD_06 "Oceanic Opposition (4-16)" +IDS_MISSION_DD_07 "Russian Rampage (4-16)" +IDS_MISSION_DD_08 "Siberian Strife (4-16)" +IDS_MISSION_DD_09 "Violence in the Villa (4-16)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DE_01 "Bollywood (4-8)" +IDS_MISSION_DE_02 "Chill Kill (8-16)" +IDS_MISSION_DE_03 "The Curse of Kali (4-8)" +IDS_MISSION_DE_04 "Mediterranean Mayhem (4-8)" +IDS_MISSION_DE_05 "Italian Invasion (4-8)" +IDS_MISSION_DE_06 "Dojo of Death (8-16)" +IDS_MISSION_DE_07 "Moonbase (8-16)" +IDS_MISSION_DE_08 "Abandoned Prison (8-16)" +IDS_MISSION_DE_09 "Rome in Ruins (4-8)" +IDS_MISSION_DE_10 "Trailer Park (2-4)" +IDS_MISSION_DE_11 "Unrest at UNITY (8-16)" +IDS_MISSION_DE_12 "Woodlands (4-8)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DM_01 "Khios (8-16)" +IDS_MISSION_DM_02 "Siberian Installation (8-16)" +IDS_MISSION_DM_03 "UNITY Headquarters (8-16)" +IDS_MISSION_DM_04 "Volkov's Lair (2-4)" +END + + + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "ResShared.rc" +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/ClientRes/Lang/FR/credits.txt b/Jack/ClientRes/Lang/FR/credits.txt new file mode 100644 index 00000000..b4cead1e --- /dev/null +++ b/Jack/ClientRes/Lang/FR/credits.txt @@ -0,0 +1,332 @@ +Monolith Productions: +>BIG +>TIME:2.0 +>POS:UL +## +James Ackley, Responsable conception sonore +Scott Albaugh, Infographiste/animateur 2D/3D senior +Curt Collins, Infographiste 2D/3D +Brian Davis, Infographiste 2D/3D +Michael Drummond, Conception des niveaux +Kevin Francis, Ingénieur +Terry Franguiadakis, Ingénieur +Jim Geldmacher, Ingénieur +Jon Gramlich, Responsable AQ +Nathan Grigg, Compositeur +Chris Hewett, Directeur du développement +J.J. Hoesing, Ingénieur +>TIME:8.0 +>POS:UL +## +Rodney Houle, Conception des niveaux +Craig Hubbard, Directeur créatif/Concepteur principal +Steve Lee, Infographiste senior 2D/3D +David Longo, Directeur artistique/Responsable infographie 3D +Dan Miller, Conception des niveaux +John Mulkey, Responsable conception des niveaux +Jeff Orkin, Programmeur senior +John O'Rorke, Ingénieur +Brian Pamintuan, Conception sonore +Russ Pecoraro, Ingénieur +Brad Pendleton, Ingénieur principal +Sasha Runnels, Infographiste senior 2D/3D +>TIME:8.0 +>POS:UL +## +Samantha Ryan, Producteur +Wes Saulsberry, Directeur artistique +Kevin Stephens, Directeur technique +Akika Tanaka, Infographiste 2D/3D +Cassano Thruston, Conception sonore +Simon Wong, Ingénieur Motion Capture + +Conception complémentaire : +Nathan Cheever +Dan Thibadeau + +Conception des personnages : +Eric Kohler +>TIME:8.0 +>POS:UL +## +Merci aux membres +suivants de Monolith: +Matt Allen +Andrea Barringer +Bryan Bouwman +Wayne Burns +Dan Fagan +Andy Grant +Jason Hall +Patti Kail +Gary Kussman +Kevin Lambert +>TIME:8.0 +>POS:UL +## +Rick Lambright +Brian Legge +Brian Long +Spencer Maiers +Kristin McLellan +Andrew Megowan +Ryan O'Rourke +Matt Scott +Mark Spadoni +Jim Totaro +Jim Wallingford +Sandra Watanabe +Kiyotaka Yaguchi +>TIME:8.0 +>POS:UL +## +Merci aux membres +aux membres suivants de LithTech: +Jonathan Branam +Bob Givnin +Brian Goble +Matt Grimshaw +Chris Hedberg +Jeff Hutt +David Koenig +Dan White +Paige Young +>TIME:8.0 +>POS:UL +## +Remerciements à: +Steve Burke, NVIDIA +Justin Cooney, ATI +Todd Clauson, Intel +Keith Galocy, NVIDIA +Greg James, NVIDIA +Matt McClellan, Intel +Derek Reynolds, Intel +Randy 'ydnar' Reddig + +Metrolabs, créateurs de +XTZ Caffeine et de boissons +énergisantes à base de plantes +>TIME:6.0 +>POS:UL +## +Musique et thème de NOLF 2 : +Nathan Grigg + +Musique des séquences: +Nathan Grigg +Guy Whitmore + +Musiciens : +Andrea Wittgens : paroles (Thème NOLF 2) +Nathan Grigg : paroles (Thème NOLF 2, Inde, Ile) +Jack Klitzman : saxophone (Thème NOLF 2, Inde) +Vincent Gates : guitare (Thème NOLF 2) +Lori Goldston: violoncelle +(Motif C.R.I.M.E., par Guy Whitmore) +>TIME:7.0 +>POS:UL +## +Ingénieurs son: +Jay Kenney +Vincent Gates +Nathan Grigg + +Remerciements: +Rich Ragsdale +(pour l'utilisation du thème NOLF) +>TIME:5.0 +>POS:UL +## +Acteurs ayant prêté leur voix: +>TIME:2.0 +>BIG +>POS:UL +## +JEN TAYLOR: +Cate Archer +Isako +Réceptionniste de l'UNION +Ninjas +Passants +>TIME:4.0 +>POS:UL +## +JOCK BLANEY: +Dmitrij Volkov +>TIME:2.0 +>POS:UL +## +KEN BOYNTON: +Santa +Général Morgan Hawkins +Mischa le pilote +Kamal +Anoop Banerjee +Crazy Harij +Balaji Malpani +Personnels soviétiques +Personnels du C.R.I.M.E. en Inde +Personnels du C.R.I.M.E. +Mimes +>TIME:5.0 +>POS:UL +## +DAVID SCULLY: +Isaac Barnes +>TIME:2.0 +>POS:UL +## +DEENA BURKE: +Maman +Ninjas +>TIME:3.0 +>POS:UL +## +JOHN ARMSTRONG: +Le Directeur +Pierre +Personnels du C.R.I.M.E. +Hommes-caisses +Mimes +>TIME:4.0 +>POS:UL +## +GARY SCHWARTZ: +Super soldats +Personnels soviétiques +Personnels du C.R.I.M.E. en Inde +>TIME:3.0 +>POS:UL +## +JOHN PATRICK LOWRIE: +Bruno Lawrie +>TIME:2.0 +>POS:UL +## +TODD LICEA: +Personnels de l'Alliance Maléfique +Personnels du C.R.I.M.E. +>TIME:3.0 +>POS:UL +## +JEFF STEITZER: +Dr. Schenker +Super ordinateur +Robots +>TIME:3.0 +>POS:UL +## +ANDRE SOGLIUZZO: +Magnus Armstrong +>TIME:2.0 +>POS:UL +## +TERRENCE SLOGGINS: +dans son propre rôle +>TIME:2.0 +>POS:UL +## +Acteurs Motion Capture: +Jenna Hawkins +John Kaufmann +Lisa P. Leon-Guerrero +Justin Emeka +Kerry Wong +Hans Altwies +>TIME:6.0 +>POS:UL +## +Sierra Entertainment/Vivendi Universal Publishing : +>TIME:2.0 +>BIG +>POS:UL +## +Bill Dugan, Producteur exécutif +Bernadette Pryor, Producteur +Lee Rosini, Directeur du Marketing +Mike Rodgers, Chef de marque +Rozita Tolouey, Chef de marque +Rich Robinson, Vice-président Studios +Barbara Schwabe, VP du Marketing +Mike Nicolino, Développement réseau +Julie Pitt, Responsable des services de production +Sarita Churchill, Responsable RP +Gary Stevens, Directeur AQ +Ken Eaton, Superviseur AQ +>TIME:8.0 +>POS:UL +## +Tharlie Richardson, Responsable des tests AQ +Sweeney Designs, Conception du manuel +Guy Welch, Responsable marketing online +Mike Taskey, Evangélisateur online +Randy Linch, Directeur certification produit +Rod Shean, Directeur certification produit +Chris Rooker, Test certification produit +Cyra Talton, Test certification produit +Brandon Valdez, Test certification produit +Richard Benavides, Ingénieur certification produit +Ben Chan, Testeur certification produit +Mary Barker, Responsable trade marketing +>TIME:8.0 +>POS:UL +## +Remerciements : +Erin Alvarez +Molly O'Brien +Pat Callahan +Julie Daino +Tracy Gibbs +Adam Lumsden +Peter Della Pena +Eric Roeder +Mike Ryder +James Shaw +>TIME:7.0 +>POS:UL +## +(c)2002 Monolith Productions, Inc. Tous droits réservés. +Cate Archer et A Spy in H.A.R.M's Way +sont des marques déposées de Monolith Productions, Inc. + +Copyright (C)2002 Sierra Entertainment, Inc. +(C)1998-2002 Sierra Entertainment, Inc. +Sierra et le logo Sierra sont des marques déposées de Sierra Entertainment. + +Fox Interactive, No One Lives Forever et les logos associés +sont des marques déposées de +Twentieth Century Fox Film Corporation. +(c)2002 Twentieth Century Fox Film Corporation. +>TIME:6.0 +## +Utilise Bink Video Technology Copyright +(c) 1994-2002 RAD Game Tools, Inc. + +Technologie de compression audio MPEG Layer-3 +sous licence de Fraunhofer IIS et Thomson multimedia. + +Ce produit utilise le LithTech(tm) Jupiter +System sous licence de LithTech, Inc. +LithTech Jupiter System (c) 1997-2002 +LithTech, Inc. Tous droits réservés. +LithTech et le logo LithTech sont +marques déposées de LithTech, Inc. +>TIME:6.0 +## +NVIDIA, le logo NVIDIA, le logo NVIDIA The Way It's +Meant to be Played et les autres marques de NVIDIA +sont des marques déposées de NVIDIA Corporation +aux USA et dans d'autres pays. + +Windows est une marque déposée de +Microsoft Corporation aux +USA et/ou dans d'autres pays. + +L'icône de classement est une marque déposée de la +Interactive Digital Software Association. +>TIME:6.0 +## +>END + + diff --git a/Jack/ClientRes/Lang/FR/intro.txt b/Jack/ClientRes/Lang/FR/intro.txt new file mode 100644 index 00000000..c0801098 --- /dev/null +++ b/Jack/ClientRes/Lang/FR/intro.txt @@ -0,0 +1,104 @@ +Une production Fox Interactive et Sierra Entertainment + +Un jeu Monolith Productions +>TIME:3.0 +>BIG +## +No One Lives Forever 2: +Le C.R.I.M.E. est éternel +utilise +LithTech Jupiter System +>TIME:2.0 +>BIG +## +Fox Interactive : +>BIG +>TIME:2.0 +>POS:UL +## +Chris Miller, Producteur +Aaron Blean, Producteur associé + + +Fox service Assurance Qualité : +Igor Krinitskiy, Responsable Assurance Qualité +Francis Choi, Responsable des tests +>TIME:7.0 +>POS:UL +## +Testeurs : +Geoff Bent +Scott Carroll +Michael Graham +Jen Johnson +Cris Lee +Jonathan Masterson +Billy Pamier +Denise Pater +Luke Thai +Hal Zabie + +Responsable localisation : +Kristian Davila +>TIME:8.0 +>POS:UL +## +Remerciements : +Eric Asevo +Steve Bersch +Pete Cesario +Lindsey Fischer +Ivo Gerscovich +Greg Goodrich +Tim Hall +Tim Harrison +Michael Heilemann +Becky Kneubuhl +Luke Letizia +Dan Mackechnie +Gabriel Mann +John Melchior +>TIME:8.0 +>POS:UL +## +Megan O'Brien +Paul Pawlicki +Michael Pole +Rich Ragsdale +Tim Ramage +Jamie Samson +Kirk Scott +Dave Shaw +David Stalker +Kristin Sutter (www.nolfgirl.com) +Tim Tran +Jack Van Leer +Ellen Williams +Chris Wilson +Asylum Studio (www.asylumstudio.com) +>TIME:8.0 +>POS:UL +## +Lisa Fredsti (Fox Library) +Brian Thomas (Fox Library) +Brian Harvey (NVIDIA) +Jessie Lawrence (Creative Labs) +Mike Drummelsmith (Matrox) +Marisa Porter, MCA +Van Riker, 1600 Records +John Dongelmans (Microsoft) +Tim Godwin, Line 6 +>TIME:7.0 +>POS:UL +## +Travailler avec l'équipe NOLF +est toujours une expérience fantastique. +Merci pour toutes ces longues soirées, +ces week-ends perdus et plus encore, +merci pour tous les efforts faits +pour améliorer la qualité du jeu. +Vous êtes géniaux ! -CM +>TIME:6.0 +>POS:UL +## +END diff --git a/Jack/ClientRes/Lang/IT/ClientRes.rc b/Jack/ClientRes/Lang/IT/ClientRes.rc new file mode 100644 index 00000000..6c74b5ff --- /dev/null +++ b/Jack/ClientRes/Lang/IT/ClientRes.rc @@ -0,0 +1,7734 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\ClientRes.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "..\..\..\shared\resshared.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\ClientRes.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""..\\..\\..\\shared\\resshared.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""ResShared.rc""\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// TEXT +// + +CREDITS TEXT "credits.txt" +INTRO TEXT "intro.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_POINTER CURSOR "..\\..\\arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_TITLE_GAME "GIOCATORE SINGOLO" + IDS_TITLE_DIFFICULTY "DIFFICOLTÀ" + IDS_TITLE_OPTIONS "OPZIONI" + IDS_TITLE_NEWGAME "NUOVA PARTITA" + IDS_TITLE_LOADGAME "CARICA PARTITA" + IDS_TITLE_SAVEGAME "SALVA PARTITA" + IDS_TITLE_CUSTOMLEVELS "LIVELLI PERSONALIZZATI" + IDS_TITLE_DISPLAYOPTIONS "OPZIONI VIDEO" + IDS_TITLE_TEXTURE "RISOLUZIONE TEXTURE" + IDS_TITLE_PERFORMANCE "PRESTAZIONI" +END + +STRINGTABLE +BEGIN + IDS_TITLE_SOUND "AUDIO" + IDS_TITLE_KEYBOARD "TASTIERA" + IDS_TITLE_MOUSE "MOUSE" + IDS_TITLE_JOYSTICK "JOYSTICK" + IDS_TITLE_BRIEFING "MISSIONE" + IDS_NO_DM_MAPS "No maps available for this game mode." + IDS_TITLE_ENDMISSION "RIEPILOGO MISSIONE" + IDS_TITLE_PROFILE "PROFILO GIOCATORE" + IDS_TITLE_PLAYER "GIOCATORE" + IDS_TITLE_CROSSHAIR "MIRINO" + IDS_TITLE_CONTROLS "COMANDI" + IDS_TITLE_CONFIGURE "CONFIGURAZIONE COMANDI" + IDS_TITLE_MULTI "MULTIGIOCATORE" + IDS_TITLE_HOST_OPTIONS "OPZIONI DI GIOCO" + IDS_TITLE_OBJECTIVES "OBIETTIVI DELLA MISSIONE" +END + +STRINGTABLE +BEGIN + IDS_TITLE_GAME_OPTIONS "OPZIONI DI GIOCO" + IDS_TITLE_INVENTORY "EQUIPAGGIAMENTO" + IDS_TITLE_ADVDISPLAY "OPZIONI VIDEO AVANZATE" + IDS_TITLE_EFFECTS "EFFETTI SPECIALI" + IDS_TITLE_JOIN "UNISCITI ALLA PARTITA" + IDS_TITLE_HOST "OSPITA PARTITA" + IDS_TITLE_HOST_MISSIONS "MISSIONI" + IDS_TITLE_PLAYER_SETUP "IMPOSTAZIONE GIOCATORE" + IDS_CHAPTERS "Elenco capitoli" + IDS_TITLE_INTEL "INFORMAZIONI" + IDS_TITLE_HOST_CAMPAIGN "MAP SELECTION" + IDS_TITLE_SYSTEM "SISTEMA" + IDS_TITLE_KEYS "INVENTARIO" + IDS_HOST_NAME_TDM_DEFAULT "NOLF2 Team Deathmatch" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_DD_DEFAULT "NOLF2 Doomsday" + IDS_HELP_MULTIPLAYER_LAN + "Inizia una partita multigiocatore via LAN o imposta le opzioni multigiocatore." + IDS_TITLE_TEAM "TEAM SETUP" + IDS_HELP_CHAPTERS "Ripeti un capitolo." + IDS_HELP_TEAM_NAME "Set the name of the team." + IDS_HELP_CHAPTER_LIST "Ripeti il capitolo evidenziato." + IDS_HELP_FAILURE "Premi F9 per il caricamento veloce.\nPremi qualsiasi altro tasto per la schermata di caricamento" + IDS_PRESS_ANY_KEY "Premi qualsiasi tasto per continuare." + IDS_NORMAL "Normale" + IDS_PERFORMANCE_TEST "Impostazioni test" + IDS_CUSTOM "Personalizzazione" + IDS_ON "Sì" + IDS_OFF "No" + IDS_YES "Sì" + IDS_NO "No" + IDS_NONE "Nessuno" +END + +STRINGTABLE +BEGIN + IDS_YES_VK_CODE "89" + IDS_NO_VK_CODE "78" + IDS_ALLOW_GORE "TRUE" + IDS_END_TIME "Raggiunto il limite di tempo." + IDS_END_FRAG "Raggiunto il limite di frag." + IDS_END_UNKNOWN "Livello abbandonato." + IDS_USE_PASSWORD "Chiudi il server" + IDS_HELP_PASSWORD "Richiede una parola d'ordine ai giocatori per partecipare a una sessione." + IDS_PASSWORD "Password" + IDS_HELP_ENTER_PASSWORD "Specifica la parola d'ordine che i giocatori dovranno inserire per unirsi al gioco." + IDS_NOCUSTOMWORLDS "Non è stato trovato alcun mondo personalizzato" + IDS_DEMONOCUSTOMWORLDS "I mondi personalizzati non sono disponibili in questa demo" + IDS_DEMODISCONNECT "Disconnesso dal server (NB: le partite demo devono essere ospitate da server demo)." + IDS_WAITINGFOROTHERPLAYERS "In attesa di altri giocatori..." + IDS_NOJOYSTICKDETECTED "Non è stato rilevato alcun joystick/joypad. Verifica la configurazione del tuo controller e riprova." +END + +STRINGTABLE +BEGIN + IDS_FEW "Pochi" + IDS_SOME "Un po'" + IDS_LOTS "Molti" + IDS_ALL "Tutti" + IDS_CLOSE "Chiudi" + IDS_SPACER " - " + IDS_BACK "Indietro" + IDS_CREATE "Crea" + IDS_LOAD "Carica" + IDS_DELETE "Cancella" + IDS_OK "OK" + IDS_CANCEL "Annulla" + IDS_ENTER_NAME "Inserisci un nome per questa partita:" + IDS_CONTINUE "Avanti" + IDS_EMPTY_SLOT "[Locazione vuota]" + IDS_WHEEL_UP "Rotella verso l'alto" +END + +STRINGTABLE +BEGIN + IDS_WHEEL_DOWN "Rotella verso il basso" + IDS_SINGLEPLAYER "Giocatore singolo" + IDS_MULTIPLAYER "Multigiocatore (Internet)" + IDS_OPTIONS "Opzioni" + IDS_CREDITS "Riconoscimenti" + IDS_EXIT "Esci" + IDS_NEWGAME "Nuova partita" + IDS_LOADGAME "Carica partita" + IDS_SAVEGAME "Salva partita" + IDS_CUSTOM_LEVEL "Livello di personalizzazione" + IDS_DISPLAY "Video" + IDS_SOUND "Audio" + IDS_KEYBOARD "Tastiera" + IDS_MOUSE "Mouse" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_DD_LGT_SCORE "Light piece score" + IDS_DD_LGT_SCORE_HELP "Points recevived for placing a light piece of the device." + IDS_DD_REMOVED_SCORE "Steal piece score" + IDS_DD_REMOVED_SCORE_HELP + "Points recevived for stealing a piece of the opponent's device." + IDS_HOST_REMOVE_WEAPON "< Remove restriction" + IDS_HELP_ADD_WEAPONS "Add items to the restricted list." + IDS_HELP_REM_WEAPONS "Remove items from the restricted list." + IDS_MISSING_WORLD "Unable to load world resources." + IDS_GAME_VERSION "v1.0" + IDS_HOST_NAME_DE_DEFAULT "NOLF2 Demolition" + IDS_WEAPONSSTAY_HELP "Toggle whether or not weapons stay after picking them up." + IDS_HELP_FILTER_TYPE "Set filtering of servers based on game type." + IDS_UNKNOWN "Unknown" + IDS_CONTROL_MANUALAIM "Manual Aim" +END + +STRINGTABLE +BEGIN + IDS_ABORT "Abbandona la partita" + IDS_DECODEMSG_CHARSET "AaBbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvWwXxYyZz" + IDS_SCMDPASSWORD "Password SCMD" + IDS_HELP_ALLOWSCMD "Consente la connessione all'Amministratore SCMD." + IDS_HOST_NAME_DM_DEFAULT "NOLF 2 Deathmatch" + IDS_TAGGEDMYSELF "Ti sei autoetichettato!" + IDS_HETAGGEDME "Sei stato etichettato da %1!s!" + IDS_ITAGGEDHIM "Hai etichettato %1!s!" + IDS_HETAGGEDHIMSELF "%1!s! si è autoetichettato!" + IDS_HETAGGEDHIM "%1!s! ha etichettato %2!s!" + IDS_IWASTAGGED "Sei stato etichettato!" + IDS_HEWASTAGGED "%1!s! è stato etichettato!" + IDS_SCORE_SCORE "Punteggio:" + IDS_SCORE_PLAYERS "Giocatori:" + IDS_SCORE_KILLS "Uccisioni:" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK "Configurazione joystick/joypad" + IDS_RESTOREDEFAULTS "Ripristina predefiniti" + IDS_CONFIGURE "Configurazione comandi" + IDS_BRIEFING "Istruzioni:" + IDS_OBJECTIVES "Obiettivi:" + IDS_NORMALTURN "Velocità normale" + IDS_FASTTURN "Rotazione veloce" + IDS_LOOKUP "Velocità per guardare su/giù" + IDS_START_MISSION "Inizia missione" + IDS_CH_ALPHA "Opacità" + IDS_CH_R "Rosso" + IDS_CH_G "Verde" + IDS_CH_B "Blu" + IDS_CH_STYLE "Stile" + IDS_CH_BASIC "Base" + IDS_CH_CROSSBAR "Barra" +END + +STRINGTABLE +BEGIN + IDS_CH_DOTCROSS "Punto-croce" + IDS_CH_POST "Post" + IDS_CH_DOT "Punto" + IDS_CH_CORNER "Angolo" + IDS_CH_DYNAMIC "Dimensionamento dinamico" + IDS_CONTROLS_CROSSHAIR "Mirino" + IDS_PROFILE "Profilo" + IDS_HELP_PROFILE "Scegli, crea o cancella i profili dei giocatori." + IDS_56K "56k" + IDS_CABLE "Cavo" + IDS_TEAM_NAME "Team name" + IDS_DSL_HIGH "DSL (Alto)" + IDS_T1 "T1" + IDS_T3 "T3" + IDS_BANDWIDTH_CYCLE "Banda" + IDS_HELP_BANDWIDTH_CYCLE "Passa in rassegna la larghezza della banda" +END + +STRINGTABLE +BEGIN + IDS_HELP_BANDWIDTH_EDIT "Specifica una banda personalizzata." + IDS_BANDWIDTH_EDIT "Banda (personalizzata)" + IDS_PROFILE_LIST "Profili:" + IDS_RESUME "Riprendi partita" + IDS_CONTINUE_GAME "Continua partita" + IDS_TEAM_MODEL "Team model" + IDS_GAMMA "Gamma" + IDS_HEADBOB "Movimento testa" + IDS_WEAPONSWAY "Movimento armi" + IDS_HELP_HEADBOB "Imposta l'intensità del movimento simulato della testa mentre cammini." + IDS_HELP_WEAPONSWAY "Imposta l'intensità del movimento simulato dell'arma mentre cammini." + IDS_HELP_PICKUP_MSG_DUR "Imposta la durata su schermo dei messaggi." + IDS_PICKUP_MSG_DUR "Durata messaggio" + IDS_IGNORE_TAUNTS "Ignora prese in giro" + IDS_HELP_IGNORE_TAUNTS "Attiva/disattiva l'uso delle prese in giro." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_TAUNTS "Prese in giro" + IDS_HELP_ALLOW_TAUNTS "Attiva/disattiva l'uso delle prese in giro." + IDS_RENAME "Rinomina" + IDS_VERSION_FILTER "Versione:" + IDS_MAIN "Menu principale" + IDS_HELP_GAMMA "Regola il livello di gamma del video." + IDS_HELP_SINGLEPLAYER "Inizia, carica o salva una partita a giocatore singolo." + IDS_HELP_MULTIPLAYER "Inizia una partita multigiocatore su Internet o imposta le opzioni multigiocatore." + IDS_HELP_OPTIONS "Imposta le opzioni video, audio, di comando, di gioco e di prestazioni." + IDS_HELP_EXIT "Abbandona il gioco." + IDS_HELP_NEW "Inizia una nuova partita." + IDS_HELP_LOAD "Carica una partita salvata." + IDS_HELP_SAVE "Salva la partita in corso." + IDS_HELP_CUSTOM "Carica un livello personalizzato." + IDS_HELP_PROFILE_CREATE "Crea un nuovo profilo." + IDS_HELP_BACK "Torna alla schermata precedente." +END + +STRINGTABLE +BEGIN + IDS_HELP_DIFFICULTY "Imposta la difficoltà di gioco." + IDS_HELP_DISPLAY "Imposta le opzioni video." + IDS_HELP_SOUND "Imposta le opzioni audio." + IDS_HELP_CONTROLS "Imposta la configurazione del controller." + IDS_HELP_RENDERER "Scegli il renderizzatore." + IDS_HELP_RESOLUTION "Imposta la risoluzione dello schermo e i bit di profondità." + IDS_HELP_ANTIALIAS "Attiva/Disattiva l'anti-aliasing a schermo intero." + IDS_HELP_DETAILLEVEL "Determina le impostazioni predefinite per i dettagli delle texture." + IDS_HELP_ADVDISPLAY "Opzioni video che possono influire sulle prestazioni." + IDS_HELP_LOOKSPRING "Ri-centra automaticamente la visuale quando ti muovi." + IDS_HELP_RUNLOCK "Attiva/disattiva la corsa come modalità di movimento predefinita." + IDS_HELP_CROSSHAIR "Attiva/disattiva l'uso del mirino." + IDS_HELP_GORE "Attiva/disattiva il sangue." + IDS_HELP_SHADOWS "Imposta il livello di dettaglio per le ombre dei personaggi." + IDS_HELP_TEAM_MODEL "Set the model used for the team." + IDS_HOST_CAMPAIGN "Map Selection" +END + +STRINGTABLE +BEGIN + IDS_WON_VAL_FAIL "Errore durante la convalida del client" + IDS_WON_SERV_VAL "Inizializzazione convalida del server" + IDS_DISCONNECTED_FROM_SERVER "Disconnesso dal server" + IDS_CANT_CONNECT_TO_SERVER "Impossibile collegarsi al server" + IDS_CONTROL_FORWARD "Avanti" + IDS_CONTROL_BACKWARD "Indietro" + IDS_CONTROL_TURNLEFT "Girati verso sinistra" + IDS_CONTROL_TURNRIGHT "Girati verso destra" + IDS_CONTROL_STRAFE "Spostamento laterale" + IDS_CONTROL_STRAFELEFT "Spostamento laterale a sinistra" + IDS_CONTROL_STRAFERIGHT "Spostamento laterale a destra" + IDS_CONTROL_TURNAROUND "Girati" + IDS_CONTROL_RUN "Muoviti silenziosamente" + IDS_CONTROL_FIRE "Fuoco" + IDS_CONTROL_ACTIVATE "Aziona" + IDS_CONTROL_JUMP "Salta" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RELOAD "Ricarica" + IDS_CONTROL_DUCK "Abbassati" + IDS_CONTROL_NEXTWEAPON "Arma successiva" + IDS_CONTROL_PREVIOUSWEAPON "Arma precedente" + IDS_CONTROL_LOOKUP "Guarda in alto" + IDS_CONTROL_LOOKDOWN "Guarda in basso" + IDS_CONTROL_CENTERVIEW "Centra la visuale" + IDS_CONTROL_INVENTORY "Equipaggiamento" + IDS_CONTROL_MISSION "Stato della missione" + IDS_CONTROL_HOLSTERWEAPON "Rinfodera l'arma" + IDS_CONTROL_STATUS "Stato del giocatore" + IDS_CONTROL_SAY "Parla" + IDS_CONTROL_ALT_FIRING "Fuoco alternativo" + IDS_CONTROL_NEXT_AMMO "Cambia munizioni" + IDS_CONTROL_KEYS "Inventario" + IDS_CONTROL_INTEL "Informazioni" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_RUNLOCKTOGGLE "Blocca/sblocca movimento silenzioso" + IDS_CONTROL_WEAPON1 "Arma 1" + IDS_CONTROL_WEAPON2 "Arma 2" + IDS_CONTROL_WEAPON3 "Arma 3" + IDS_CONTROL_WEAPON4 "Arma 4" + IDS_CONTROL_WEAPON5 "Arma 5" + IDS_CONTROL_WEAPON6 "Arma 6" + IDS_CONTROL_WEAPON7 "Arma 7" + IDS_CONTROL_WEAPON8 "Arma 8" + IDS_CONTROL_WEAPON9 "Arma 9" + IDS_CONTROL_WEAPON10 "Arma 10" + IDS_CONTROL_ZOOM_IN "Zoom" + IDS_CONTROL_ZOOM_OUT "Riduci zoom" + IDS_CONTROL_UNASSIGNED "[non assegnata]" + IDS_CONTROL_NEXTVISMODE "Occhiali da sole" + IDS_CONTROL_COMPASS "Bussola" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_LEANLEFT "Sbircia a sinistra" + IDS_CONTROL_LEANRIGHT "Sbircia a destra" + IDS_CONTROL_CROUCHTOGGLE "Blocca/sblocca abbassato" + IDS_CONTROL_MOVE_BODY "Move body/piece" + IDS_CONTROL_FLASHLIGHT "Portachiavi luminoso" + IDS_CONTROL_RADIO "Radio" + IDS_CONTROL_LASTWEAPON "Ultima arma" +END + +STRINGTABLE +BEGIN +END + +STRINGTABLE +BEGIN + IDS_GAME_OPTIONS "Partita" + IDS_HELP_GAME_OPTIONS "Imposta le opzioni della giocabilità e dei contenuti." + IDS_DISPLAY_SUBTITLES "Sottotitoli" + IDS_TEAM_2 "Red team" + IDS_HELP_LOOP_MISSIONS "Restart first map after completing the last map." + IDS_CAMPAIGN_LIST "Map Lists:" + IDS_STAT_COMBAT ".combattimento" + IDS_STAT_DEFENSE ".difesa" + IDS_STAT_ACCURACY ".precisione" + IDS_HELP_CAMPAIGN_CREATE "Create a new map list." + IDS_HELP_CAMPAIGN_LOAD "Load the selected map list." + IDS_HELP_SUBTITLES "Attiva/disattiva l'uso dei sottotitoli." + IDS_GAME_TYPE "Modalità" + IDS_HELP_TEAM_1 "Set options for the Blue team" + IDS_HELP_TEAM_2 "Set options for the Red team" +END + +STRINGTABLE +BEGIN + IDS_DEDICATED "Server dedicato" + IDS_HELP_DEDICATED "Alterna l'attivazione del server tra dedicato e non dedicato." + IDS_GAME_LANGUAGE "Italian" + IDS_MENU_VKEY_YES "89" + IDS_MENU_VKEY_NO "78" + IDS_DEMOVERSION "TECHNOLOGY DEMO v1.0" + IDS_HELP_CAMPAIGN_DELETE "Delete the selected map list." + IDS_HELP_CAMPAIGN_RENAME "Rename the selected map list." + IDS_HELP_VERSION_FILTER "Attiva/disattiva i filtri dei server secondo la versione." + IDS_ALL_VERSIONS "Tutte le versioni" + IDS_CURRENT_VERSION "Versione attuale" + IDS_PERFORMANCE "Prestazioni" + IDS_HELP_PERFORMANCE "Imposta le opzioni relative alle prestazioni." + IDS_SFX "Effetti speciali" + IDS_HELP_SFX "Imposta le opzioni degli effetti speciali." + IDS_POLYGRIDBUMP "Bump Mapping multigriglia" +END + +STRINGTABLE +BEGIN + IDS_HELP_POLYGRIDBUMP "Attiva/disattiva l'utilizzo del bump mapping sulle multigriglie." + IDS_POLYGRIDFRES "Effetti Fresnel multigriglia" + IDS_HELP_POLYGRIDFRES "Attiva/disattiva l'utilizzo degli effetti fresnel sulle multigriglie per rendere i riflessi più realistici." + IDS_TEXTURE_RES "Risoluzione delle texture" + IDS_HELP_TEXTURE_RES "Imposta la risoluzione delle texture usate nel gioco." + IDS_BUMPMAP "Bump mapping ambientale" + IDS_HELP_BUMPMAP "Attiva/disattiva l'utilizzo del bump mapping ambientale." + IDS_BILINEAR "Filtro bilineare" + IDS_HELP_BILINEAR "Attiva /disattiva l’utilizzo dei filtri bilineari sulle texture." + IDS_SHADOWS "Ombre" + IDS_SOUND_HIGH "Alto" + IDS_SOUND_LOW "Basso" + IDS_QUICKLOAD "Caricamento rapido (F9)" + IDS_QUICKSAVE "Salvataggio rapido (F6)" + IDS_LOADCURRENT "Salvataggio automatico" + IDS_OBJECTIVES_OPTIONAL " (opzionale)" +END + +STRINGTABLE +BEGIN + IDS_OBJECTIVES_CHANGED "Obiettivi della missione aggiornati" + IDS_X_OF_Y "%1!d! of %2!d!" + IDS_SERVER_LAN "Solo rete LAN" + IDS_USE_CROSSHAIR "Usa mirino" + IDS_HUD_LAYOUT0 "Barra energia, testo munizioni" + IDS_HUD_LAYOUT1 "Testo energia, testo munizioni" + IDS_HUD_LAYOUT2 "Barra energia, barra munizioni" + IDS_HUDLAYOUT "Stile visualizzazione HUD" + IDS_HELP_HUDLAYOUT "Imposta lo stile dell'interfaccia." + IDS_NO_INVENTORY "[Nessun inventario]" + IDS_VEHICLETURN "Velocità di curva del veicolo" +END + +STRINGTABLE +BEGIN + IDS_HELP_VEHICLETURN "Imposta la velocità di curva dei veicoli." + IDS_HELP_RETURN "Ritorna alla partita." + IDS_TRILINEAR "Trilinear filtering" + IDS_HELP_TRILINEAR "Attiva/disattiva l'uso del trilinear filtering." + IDS_ANISOTROPIC "Filtri anisotropici" + IDS_HELP_ANISOTROPIC "Attiva/disattiva l'uso del filtro anisotropico." + IDS_DETAILLEVEL "Generale" + IDS_TRACERS "Traccianti" + IDS_HELP_TRACERS "Attiva/disattiva gli effetti dei traccianti delle armi." + IDS_DISPLAY_CURRENTMODE "Modalità video" + IDS_SERVER_NORESPONSE "Il server non risponde." + IDS_SERVER_DETAIL_VERSION + "Dettagli non disponibili: il server di gioco è di una versione differente." + IDS_DISPLAY_CHANGE "Cambia modalità" + IDS_DISPLAY_GORE "Sangue" + IDS_ENV_DETAIL "Ambientale" + IDS_HELP_ENV_DETAIL "Imposta la precisione dei dettagli usati nell'ambiente di gioco, inclusi gli effetti di neve e prato." +END + +STRINGTABLE +BEGIN + IDS_RESPAWN "Rigenerazione" + IDS_SOUND_MUSICENABLED "Musica" + IDS_SOUND_MUSICVOL "Volume della musica" + IDS_SOUND_FX "Effetti sonori" + IDS_SOUND_FXVOL "Volume degli effetti sonori" + IDS_SOUND_QUALITY "Qualità degli effetti sonori" + IDS_SOUND_NONE "Muto" + IDS_SOUND_IMA "Musica diretta" + IDS_LOW "Bassa" + IDS_MEDIUM "Media" + IDS_HIGH "Alta" + IDS_CUSTOMIZED "Personalizzato" + IDS_MOUSE_MOUSELOOK "Guarda sempre col mouse" + IDS_MOUSE_LOOKSPRING "Centratura automatica" + IDS_MOUSE_INVERTYAXIS "Inversione dell'asse Y" + IDS_MOUSE_SENSITIVITY "Sensibilità del mouse" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCHING "ricerca in corso" + IDS_SPEECH_FXVOL "Volume dialoghi" + IDS_HELP_SPEECHVOL "Imposta il volume del parlato." + IDS_TARGET_REVIVE "rianima %1!s!" + IDS_CURRENT_CAMPAIGN "Current Map List: %1!s!" + IDS_M_STAT_UNDAMAGED "Non sei mai stato ferito." + IDS_M_STAT_TIMES_HIT "Sei stato colpito %1!d! volte." + IDS_M_STAT_MARKSMANSHIP "Mira di precisione: %1!d! colpi alla testa." + IDS_M_STAT_ACCURACY "Precisione: %1!d! centri, %2!d! colpi (%3!d! %%)" + IDS_IWASKILLED "Sei stato ucciso!" + IDS_ENTER_CAMPAIGN_NAME "Enter a name for this map list:" + IDS_HEWASKILLED "%1!s! è stato ucciso!" + IDS_HELP_ADD_WEAPON "Add selected item to the list of restricted items." + IDS_TARGET_HACKINGKEYPAD "decodifica in corso" +END + +STRINGTABLE +BEGIN + IDS_CONTROL_TEAM_SAY "Team Say" + IDS_DOOMSDAY_CORE "Core" + IDS_DOOMSDAY_TRANSMITTER "Transmitter" + IDS_DOOMSDAY_BATTERIES "Batteries" + IDS_DOOMSDAY_PICKEDUP "%1!s! picked up the %2!s!" + IDS_DOOMSDAY_DROPPED "%1!s! dropped the %2!s!" + IDS_DOOMSDAY_PLACED "%1!s! placed the %2!s!" + IDS_DOOMSDAY_STOLE "%1!s! stole the %2!s!" + IDS_DOOMSDAY_DEVICE_COMPLETED "%1!s! completed the Dooms Day Device." + IDS_DOOMSDAY_RESPAWNED "The %1!s! has respawned." + IDS_HELP_SERVER_MOD "Sort servers by Mod " + IDS_FILTER_MOD "Mod:" + IDS_HELP_FILTER_MOD "Toggle filtering of servers based on mod." + IDS_FILTER_ALLMODS "All Mods" +END + +STRINGTABLE +BEGIN + IDS_TARGET_WELDING "saldatura in corso" + IDS_TARGET_DECODING "decodifica in corso" + IDS_TARGET_PICKING "scassinamento in corso" + IDS_TARGET_PHOTOGRAPHING "foto in corso" + IDS_TARGET_BOMBING "disinnescamento bomba" + IDS_TARGET_INKING "rivelazione in corso" + IDS_TARGET_BUGGING "posizionamento cimice" + IDS_COOP_STAT_ACCURACY "Precisione" + IDS_COOP_STAT_KILLS "Uccisioni" + IDS_COOP_STAT_DEATHS "Morti" + IDS_STAT_MISSION "Missione:" + IDS_FILTER_ALLPING "Tutti" + IDS_FILTER_LOWPING "< 100" + IDS_FILTER_MEDPING "< 300" + IDS_FILTER_HIGHPING "< 500" + IDS_HELP_FILTER_PING "Server dei filtri basati sui loro ping." +END + +STRINGTABLE +BEGIN + IDS_MOUSE_INPUTRATE "Fluidità del mouse" + IDS_MOUSE_LEFTBUTTON "Pulsante sinistro del mouse" + IDS_MOUSE_MIDDLEBUTTON "Pulsante centrale del mouse" + IDS_MOUSE_RIGHTBUTTON "Pulsante destro del mouse" + IDS_JOYSTICK_USE "Usa joystick/joypad" + IDS_JOYSTICK_TURN "Gira a sx/dx" + IDS_JOYSTICK_LOOK "Guarda su/giù" + IDS_JOYSTICK_MOVE "Muovi avanti/indietro" + IDS_JOYSTICK_STRAFE "Spostamento laterale sx/dx" + IDS_JOYSTICK_BUTTONNUM "Pulsante del joystick %1!d!" + IDS_JOYSTICK_AXIS "Asse" + IDS_JOYSTICK_ACTION "Aziona" + IDS_HELP_SERVER_LAN "Attiva/disattiva la pubblicazione del server su Internet." + IDS_POV_MOVE "Sposta" + IDS_JOYSTICK_INVERT "Guarda su/giù (invertito)" + IDS_POV_LOOK "Guarda" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_AXISNONE "Nessuno" + IDS_HELP_AXIS "Imposta l'azione associata con quest'asse del joystick/gamepad." + IDS_DISPLAY_BITDEPTH "Profondità in bit" + IDS_ANTIALIAS "Anti-aliasing" + IDS_ADVCONTROLS_RUNLOCK "Corri sempre" + IDS_NEW_EASY "Facile" + IDS_NEW_MEDIUM "Normale" + IDS_NEW_HARD "Difficile" + IDS_NEW_INSANE "Superspia" + IDS_ADVCONTROLS_CROSSHAIR "Mirino" + IDS_DISPLAY_RENDERER "Renderizzazione" + IDS_DISPLAY_RESOLUTION "Risoluzione" + IDS_TEAM1_NAME "Blue" + IDS_CONTROLS "Comandi" + IDS_HELP_PROFILE_LOAD "Carica il profilo selezionato." + IDS_SERVER_NAME "Nome del server" +END + +STRINGTABLE +BEGIN + IDS_SERVER_PLAYERS "Giocatori" + IDS_SERVER_PING "Ping" + IDS_SERVER_GAME "Partita" + IDS_SERVER_MAP "Mappa" + IDS_JOIN_PLAYER_NAME "Nome del giocatore" + IDS_JOIN_PLAYER_SCORE "Punteggio" + IDS_OPTION_NAME "Opzioni di gioco" + IDS_OPTION_VALUE "Valore" + IDS_SERVER_REFRESH "Aggiorna i server" + IDS_SERVER_REPING "Invia un nuovo ping ai server" + IDS_FILTER_ALLGAMES "Tutte le partite" + IDS_FILTER_DM "Solo deathmatch" + IDS_FILTER_COOP "Solo " + IDS_FILTER_ALLPOP "Qualsiasi numero di giocatori" + IDS_FILTER_NOTFULL "Non piene" + IDS_FILTER_NOTEMPTY "Non vuote" +END + +STRINGTABLE +BEGIN + IDS_FILTER_NOT_BOTH "Né vuote né piene" + IDS_SERVER_LOCKED "Blocca" + IDS_SERVER_MISSION "Missione" + IDS_HELP_SERVER_MISSION "Ordina i server secondo il nome della missione." + IDS_HOST_NAME "Nome della sessione" + IDS_HOST_OPTIONS "Opzioni host" + IDS_HOST_MISSIONS "Missioni" + IDS_HOST_LAUNCH "Lancia" + IDS_SERVER_FILTERS "Filtri" + IDS_POP_FILTER "Giocatori:" + IDS_NIGHT_SCOPE "Ingrandisce la visuale per favorire la mira e fornisce amplificazione di luce per le operazioni notturne." + IDS_SILENCER "Riduce il rumore degli spari." + IDS_TEAM2_NAME "Red" + IDS_FILTER_PING "Ping:" + IDS_SCOPE "Ingrandisce la visuale per mirare." + IDS_CAMERA_SCOPE "Lenti d'ingrandimento regolabili." +END + +STRINGTABLE +BEGIN + IDS_KILLEDMYSELF "Ti sei ucciso!" + IDS_HEKILLEDME "Sei stato ucciso da %1!s!" + IDS_IKILLEDHIM "Hai ucciso %1!s!" + IDS_HEKILLEDHIMSELF "%1!s! si è suicidato!" + IDS_HEKILLEDHIM "%1!s! ha ucciso %2!s!" +END + +STRINGTABLE +BEGIN + IDS_HOST_NAME_COOP_DEFAULT "NOLF 2 Cooperative" + IDS_PASSWORD_DEFAULT "password" +END + +STRINGTABLE +BEGIN + IDS_TARGET_SEARCH "cerca" + IDS_TARGET_MOVE "sposta il corpo" + IDS_TARGET_DROP "lascia il corpo" + IDS_TARGET_TALK "parla" + IDS_TARGET_USE "usa" + IDS_TARGET_TAKE "raccogli" + IDS_TITLE_HOST_WEAPONS "WEAPON RESTRICTIONS" + IDS_TARGET_HACKKEYPAD "decodifica" + IDS_TARGET_WELD "salda" + IDS_TARGET_DECODE "decodifica" + IDS_TARGET_PICK "scassinare la serratura" + IDS_TARGET_PHOTO "fotografa" + IDS_TARGET_BOMB "piazza la bomba" + IDS_TARGET_INK "rivela" + IDS_TARGET_BUG "piazza la cimice" + IDS_TARGET_INNOCENT "amico" +END + +STRINGTABLE +BEGIN + IDS_CDKEY_ENTER "Inserisci il CD Key" + IDS_CDKEY_INVALID "CD Key non valido" + IDS_CDKEY "CD Key" + IDS_BANDWIDTH_INVALID "Larghezza di banda non valida. Inserire un valore compreso tra %1!d! e %2!d!." + IDS_AMMO_NOPICKUP "Non puoi portare altre munizioni %1!s!" + IDS_DMODE_RENDERER "%1!s! - %2!s!" + IDS_DMODE_RESOLUTION "%1!d!x%2!d!x%3!d!" + IDS_TARGET_WAKEUP "sveglia" + IDS_JOIN_GAME "Partecipa alla partita" + IDS_PLAYER_NAME "Nome del giocatore" + IDS_DMODE_PLEASEWAIT1 "NOLF sta" + IDS_DMODE_PLEASEWAIT2 "generando una lista di renderizzatori… Attendi." + IDS_HELP_PLAYER_MODEL "Imposta il modello del personaggio." + IDS_HELP_PLAYER_NAME "Imposta il nome del giocatore." + IDS_SCORE_PING "Ping:" + IDS_HELP_SERVER_NAME "Ordina i server per nome." +END + +STRINGTABLE +BEGIN + IDS_ALLOW_SCMD_COMMANDS "Consenti SCMD" + IDS_TARGET_OPEN_2177 "apri" + IDS_TARGET_CLOSE_2178 "chiudi" + IDS_TARGET_TIPOVER_2179 "ribalta" +END + +STRINGTABLE +BEGIN + IDS_HELP_SERVER_PLAYERS "Ordina i server per numero di giocatori." + IDS_HELP_SERVER_PING "Ordina i server per ping." + IDS_HELP_SORT_PLYR_NAME "Ordina i giocatori per nome." + IDS_HELP_SORT_PLYR_SCORE "Ordina i giocatori per punteggio." + IDS_HELP_SORT_PLYR_PING "Ordina i giocatori per ping." + IDS_HELP_REFRESH "Aggiorna la lista dei server." + IDS_HELP_REPING "Invia un nuovo ping a tutti i server nella lista." + IDS_HELP_GAME_FILTER "Filtra le partite secondo il tipo." + IDS_HELP_POP_FILTER "Filtra le partite secondo il numero di giocatori." + IDS_HELP_REM_ALL_WPNS "Remove all items from the restriction list." + IDS_MOD_NOPICKUP "Possiedi già %1!s!!" + IDS_GEAR_NOPICKUP "Non puoi usare %1!s!!" + IDS_HELP_REM_WEAPON "Remove the selected item from the restriction list." + IDS_CHANGING_AMMO "Cambio del tipo di munizioni a %1!s!" + IDS_HELP_JOIN_GAME "Partecipa alla partita selezionata." + IDS_HELP_SESSION_NAME "Imposta il nome della sessione da ospitare." +END + +STRINGTABLE +BEGIN + IDS_TARGET_DEFUSE "disinnesca" + IDS_DISARMED "Disarmato!" + IDS_HELP_CDKEY "Inserisci una chiave CD per sbloccare le partite su Internet." + IDS_MUSIC_QUALITY "Qualità della musica" + IDS_HELP_MUSIC_QUALITY "Imposta la qualità della musica. Questo parametro incide sulle prestazioni." + IDS_CONFIRM_MUSIC "Abilitando la musica di alta qualità le prestazioni generali del gioco diminuiranno. Vuoi abilitare la musica di alta qualità?" + IDS_CONFIRM_SOUND "I suoni di alta qualità usano una quantità di memoria molto elevata, a scapito delle prestazioni. Vuoi abilitare i suoni di alta qualità?" + IDS_PLAYER_MODEL "Modello del personaggio" + IDS_HELP_PERFORMANCE_TEST + "Avvia un livello campione per provare le opzioni di esecuzione." + IDS_HOST_AVAIL_MISSIONS "Missioni disponibili" + IDS_TITLE_PERFORMANCE_TEST "Impostazioni test di esecuzione" + IDS_RES_DIFFERS "(La risoluzione del video verrà reimpostata.)" + IDS_PRECACHE "Impostazioni precache" + IDS_LOAD_USERGAME "Partite salvate" + IDS_SHELLCASINGS "Bossoli" + IDS_DISCONNECT "Disconnetti dal server" +END + +STRINGTABLE +BEGIN + IDS_HELP_SHELLCASINGS "Attiva/disattiva la renderizzazione dei bossoli." + IDS_SHUTDOWN "Fine partita" + IDS_HELP_PRECACHE "L'abilitazione della funzione di precache migliorerà il flusso di gioco, ma aumenterà i tempi di caricamento e la quantità di memoria utilizzata." + IDS_WPN_RESTRICT "Weapons restrictions" + IDS_PERFORMANCE_FPS_AVE "Frequenza fotogrammi media: %1!d!" + IDS_PERFORMANCE_RESULTS "Test completato" + IDS_OVERALL_PERFORM "Ottimizzazione delle prestazioni" + IDS_HELP_OVERALL_PERFORM + "Seleziona le opzioni di prestazione predefinite per sistemi di fascia alta, media e bassa." + IDS_PERFORM_HIGH "Risoluzione bassa" + IDS_PERFORM_MEDIUM "Risoluzione media" + IDS_PERFORM_LOW "Risoluzione alta" + IDS_AUTOSWITCH_WEAPONS "Cambio arma automatico" + IDS_HELP_AUTOSWITCH_WEAPONS + "Attiva/disattiva la selezione automatica delle armi appena raccolte." + IDS_STARTNEXTLEVEL "Avvio del livello successivo…" + IDS_PERFORMANCE_FPS_MIN "Frequenza fotogrammi min.: %1!d!" + IDS_PERFORMANCE_FPS_MAX "Frequenza fotogrammi max.: %1!d!" +END + +STRINGTABLE +BEGIN + IDS_HELP_GAME_TYPE "Imposta il tipo di gioco per cui fare da host." + IDS_HELP_HOST_OPTIONS "Imposta le opzioni di gioco multigiocatore." + IDS_HELP_HOST_MISSIONS "Set the list of maps for this map list." + IDS_HELP_LAUNCH "Inizia una partita." + IDS_HELP_AVAIL_MISSIONS "Lista delle missioni disponibili." + IDS_HELP_POV "Imposta l'azione associata con questo comando POV." + IDS_HELP_SEL_MISSIONS "Lista delle missioni da utilizzare in questa sessione." + IDS_HELP_ADD_MISSION "Add the selected map to the list." + IDS_HELP_ADD_ALL "Add all available maps to the list." + IDS_HELP_REM_MISSION "Remove the selected map from the list." + IDS_HELP_REM_ALL "Remove all maps from the list." + IDS_VSYNC "V Sync" + IDS_HELP_VSYNC "Adatta la rotazione dello schermo a seconda dell'apparecchio usato, per evitare troncature dell'immagine." + IDS_LOW_VIOLENCE "Violenza bassa" +END + +STRINGTABLE +BEGIN + IDS_JOYSTICK_UNBOUND "Il tuo joystick/joypad non è configurato. Vuoi configurarlo ora?" + IDS_FX_DETAIL "Effetti" + IDS_HELP_FX_DETAIL "Imposta la precisione dei dettagli negli effetti speciali, come l'impatto delle esplosioni, dei detriti e delle armi." + IDS_PERFORMANCE_FPS_BELOW_MIN "%1!d!%% meno di %2!d!% FPS" + IDS_PERFORMANCE_FPS_MINTOMAX "%1!d!%% tra %2!d!% e %3!d!% FPS" + IDS_CONFIRM_RESTORE "Ripristinare i valori iniziali annullerà tutte le modifiche precedentemente fatte alla configurazione. Vuoi continuare?" + IDS_PERFORMANCE_FPS_ABOVE_MAX "%1!d!%% più di %2!d!% FPS" + IDS_PERFORMANCE_TEST_ABORTED "Test prestazioni interrotto." + IDS_NEW_MOTD "Il messaggio del giorno è stato aggiornato." + IDS_VALIDATION_FAILED "ERRORE: controllo versione server fallito." + IDS_HARDWARE_CURSOR "Cursore hardware" + IDS_HELP_HARDWARE_CURSOR + "Attiva/disattiva l'utilizzo di un cursore hardware." + IDS_CONFIRM_CURSOR "L'attivazione del cursore hardware offre un movimento più fluido del cursore, ma alcune schede video non lo supportano. Vuoi attivare il cursore hardware?" + IDS_LAUNCH_UPDATE "Aggiorna all'ultima versione" + IDS_HELP_LAUNCH_UPDATE "Arresta il gioco e scarica l'ultima versione." + IDS_NEW_VERSION "È disponibile una versione aggiornata del gioco." +END + +STRINGTABLE +BEGIN + IDS_INTERNET "Impostazione della connessione Internet in corso..." + IDS_NO_CDKEY "Devi inserire una chiave CD valida per unirti od ospitare una partita su Internet." + IDS_TARGET_HACKCARDREADER "decodifica/inserisci scheda" + IDS_LARGE "Grande" + IDS_SMALL "Piccolo" + IDS_JOIN_LAN "Partecipa a una partita in LAN" + IDS_GUNPICKUP "%1!s!!" + IDS_OUTOFAMMO "%1!s! è senza munizioni" + IDS_GEARPICKUP "%1!s!" + IDS_AMMOPICKUP "%2!s! ( %1!d! )" + IDS_MODPICKUP "%1!s!" + IDS_INTELLIGENCE "Informazione!" + IDS_HELP_JOIN_LAN "Partecipa a una partita multigiocatore su LAN." + IDS_SERVER_ADDRESS "Indirizzo" + IDS_NO_SERVERS "nessun server rilevato" + IDS_LOOKING_FOR_SERVERS "Rilevazione server in corso…" +END + +STRINGTABLE +BEGIN + IDS_CONNECTING_TO_SERVER "Connessione al server" + IDS_UNKNOWN_PLAYER "un giocatore" + IDS_HELP_EASY "Easy: you will take less damage when hit, and the AI will be far less accurate." + IDS_HELP_MEDIUM "Normale: subirai un po' più di danni quando sarai colpito, e l'IA sarà leggermente più accurata." + IDS_HELP_HARD "Difficile: l'IA sarà discretamente precisa e subirai danni più facilmente." + IDS_HELP_INSANE "Superspia: l'IA sarà molto precisa e tu subirai molti più danni." + IDS_DIFF_REMINDER "Il livello di difficoltà può essere cambiato in ogni momento durante la missione, nella schermata delle OPZIONI." + IDS_SERVERS_SHOWN "(server %1!d!-%2!d!)" + IDS_HELP_WPN_RESTRICT "Restrict the use of certain weapons, ammo, and gear." + IDS_KEY_PICKUP "Found %1!s!!" + IDS_STATUS_STRING "Stato: %1!s!!" + IDS_WAITING "In attesa" + IDS_QUERYING "Interrogazione server" + IDS_VALIDATING "Convalida del CD Key" + IDS_TARGET_HACKINGCARDREADER "decodifica in corso" + IDS_LOAD_TIPS "Carica la schermata dei suggerimenti" +END + +STRINGTABLE +BEGIN + IDS_HELP_LOAD_TIPS "Attiva/disattiva la visualizzazione dei suggerimenti sulla schermata di caricamento." + IDS_DSL_LOW "DSL (Basso)" + IDS_CONTOUR "Contornatura del gatto delle nevi" + IDS_HELP_CONTOUR "Il gatto delle nevi si adegua alle caratteristiche del terreno. Spegnerlo dovrebbe facilitarne le manovre." + IDS_PERFORMANCE_RECOMMEND_LOWER + "Prima di iniziare la partita, è preferibile abbassare le impostazioni della risoluzione." + IDS_PAUSED "Gioco in pausa" + IDS_UNUSED "Non usato" + IDS_PERFORMANCE_RECOMMEND_HIGHER + "Prima di iniziare la partita, è preferibile alzare le impostazioni della risoluzione." + IDS_PERFORMANCE_RECOMMEND_CURRENT + "Il gioco dovrebbe funzionare correttamente con le impostazioni della risoluzione corrente." + IDS_PRESSANYKEY "Premi un tasto…" + IDS_EMPTY " [ vuoto ]" + IDS_PRESSKEYTOCONTINUE "Premi Invio per continuare." + IDS_SUREWANTQUIT "Sei sicuro di voler uscire?" + IDS_SUREWANTABORT "Sei sicuro di voler abbandonare la partita in corso?" + IDS_BUMPER_LOADING "Caricamento…" +END + +STRINGTABLE +BEGIN + IDS_INTEL_ITEMS "Informazioni: " + IDS_UP "su" + IDS_DOWN "giù" + IDS_DISCON_MISSINGFILE "File %1!s! mancante" + IDS_DISCON_CONNECTTERM "Ti sei disconnesso dal server." + IDS_DISCON_SERVERBOOT "Il server ti ha disconnesso." + IDS_DISCON_TIMEOUT "Tempi d'attesa troppo lunghi, disconnessione dal server." + IDS_WEAPON "Armi" + IDS_KEY "Tasto" + IDS_DEVICE_MOUSE "Mouse" + IDS_DEVICE_JOYSTICK "Joystick" + IDS_AUTOSWITCH_AMMO "Cambio munizioni automatico" + IDS_HELP_AUTOSWITCH_AMMO + "Attiva/disattiva la selezione automatica delle munizioni appena raccolte." + IDS_PORT "Porta di rete" + IDS_HELP_ENTER_PORT "Inserisci la porta di rete da usare." + IDS_SERVER_PORT "Porta di rete" +END + +STRINGTABLE +BEGIN + IDS_NOQUICKSAVEGAME "Non esiste alcun salvataggio rapido." + IDS_LOADGAMEFAILED "Errore durante il caricamento del gioco." + IDS_SAVEGAMEFAILED "Errore durante il salvataggio della partita." + IDS_NOLOADLEVEL "Impossibile caricare il livello." + IDS_SOUNDNOTINITED "Impossibile inizializzare l'audio. Assicurati che la tua scheda audio sia configurata correttamente." + IDS_UNSPECIFIEDERROR "Si è verificato un errore non specificato." + IDS_NOREMAPKEY "Quel tasto non può essere riassegnato." + IDS_NOSOUNDCHANGE "Per cambiare questo valore, gli effetti sonori devono essere attivati." + IDS_NOMUSICCHANGE "Per cambiare questo valore, le musiche devono essere attivate." + IDS_ENDCURRENTGAME "Questo terminerà la partita in corso. Vuoi continuare?" + IDS_REINITIALIZING_RENDERER "Reinizializzazione del renderizzatore" + IDS_INVALID3DSOUNDPROVIDER "Provider audio 3D non valido." + IDS_CONFIRMSAVE "Vuoi sovrascrivere questa partita salvata?" + IDS_GAMESAVED "Partita salvata." + IDS_REBINDING_TEXTURES "Rebinding delle texture." + IDS_REBINDING_LIGHTMAPS "Rebinding delle lightmap." +END + +STRINGTABLE +BEGIN + IDS_SHUTDOWNSERVER "In questo modo spegnerai il server e disconnetterai tutti i client. Vuoi continuare?" + IDS_NETERR_GENERIC "ERRORE: impossibile impostare una partita in rete." + IDS_NETERR_SELECTSERVICE + "ERRORE: impossibile usare il servizio di rete selezionato." + IDS_NETERR_FILLSERVICE "ERRORE: impossibile accedere alle risorse di sistema disponibili." + IDS_NETERR_JOINSESSION "ERRORE: impossibile partecipare alla sessione di gioco selezionata." + IDS_NETERR_HOSTSESSION "ERRORE: impossibile ospitare la sessione di gioco." + IDS_NETERR_INIT "ERRORE: impossibile inizializzare il sistema di rete." + IDS_NETERR_CANTBINDTOPORT + "Impossibile fare il bind della porta richiesta." + IDS_NETERR_NOTSAMEGUID "ERRORE: impossibile partecipare perché il server è di una versione o di un gioco diverso." + IDS_PLAYER "Giocatore" + IDS_SAY "DI':" + IDS_NETERR_WRONGPASS "Parola d'ordine errata." + IDS_YOUWEREKILLED "Sei stato ucciso!" + IDS_QUICKSAVING "Salvataggio rapido in corso…" + IDS_SERVERFULL "Impossibile partecipare. Il server è pieno." + IDS_SERVER_WRONGVERSION "Impossibile partecipare perché la versione del server è diversa. Vai all'indirizzo www-the-operative.com per avere gli aggiornamenti più recenti." +END + +STRINGTABLE +BEGIN + IDS_JOINEDGAME "%1!s! è entrato nella partita" + IDS_LEFTGAME "%1!s! ha abbandonato la partita" + IDS_SAVINGGAME "Salvataggio del gioco in corso..." + IDS_CANTQUICKSAVE "Impossibile salvare adesso." + IDS_ACCESSGRANTED "Accesso consentito" + IDS_ACCESSDENIED "Accesso negato" + IDS_LOCKED "Chiuso" + IDS_HELP_ENTER_SCMDPASSWORD + "Specifica la password per la connessione come Amministratore SCMD." + IDS_WON_MOTD_STATUS "Recupero del Messaggio del giorno in corso..." + IDS_WON_MOTD_SUCCESS "Messaggio del giorno recuperato" + IDS_WON_MOTD_FAIL "Errore durante il recupero del Messaggio del giorno" + IDS_WON_VERSION_STATUS "Recupero informazioni sull'ultima versione in corso..." + IDS_WON_VERSION_SUCCESS "Informazioni sull'ultima versione recuperata" + IDS_WON_VERSION_FAIL "Errore durante il recupero informazioni sull'ultima versione" + IDS_WON_CDKEY_STATUS "Verifica della chiave CD in corso..." + IDS_WON_CDKEY_SUCCESS "Verifica della chiave CD eseguita" +END + +STRINGTABLE +BEGIN + IDS_FIND_SERVERS "Refresh Server List" + IDS_HELP_FIND_SERVERS "Cerca i server." + IDS_HELP_PROFILE_DELETE "Cancella il profilo selezionato." + IDS_HELP_PROFILE_RENAME "Rinomina il profilo selezionato." + IDS_CONFIRM_DELETE "Sei sicuro di voler cancellare questo file?" + IDS_CURRENT_PROFILE "Profilo attuale: %1!s!" + IDS_ENTER_PROFILE_NAME "Inserisci un nome per questo profilo:" + IDS_CONFIRM_NEWPROFILE "Questo farà terminare la partita in corso. Vuoi continuare?" + IDS_PERFORMANCE_TEST_BRIEF + "Dovrebbe partire adesso un breve filmato che mostra la qualità di esecuzione del gioco con le impostazioni correnti. Al termine del filmato, verrà visualizzata l'impostazione delle prestazioni raccomandata.\n\nPremendo il tasto ESC in qualunque momento durante la proiezione del filmato, annullerai il test di esecuzione del filmato." + IDS_PARAMETERS "Parametri:" + IDS_SELECT_AMMO_TEXT "Seleziona" + IDS_EXIT_WAITING "%1!d! giocatori ti stanno aspettando." + IDS_EXIT_WAITING_1 "1 giocatore ti sta aspettando." + IDS_EXIT_WAITING_NAME "%1!s! ti sta aspettando." + IDS_EXIT_PLAYER_WAITING "In attesa di %1!d! giocatori." + IDS_EXIT_PLAYER_WAITING_1 "In attesa di 1 giocatore." +END + +STRINGTABLE +BEGIN + IDS_EXIT_PLAYER_WAITING_NAME "In attesa di %1!s!." + IDS_NET_GAME_END "Condizioni per finire il livello" + IDS_NET_GAME_END_HELP "Imposta le condizioni per finire la mappa." + IDS_CHOOSE_TEAM "Choose team" + IDS_FRAG_LIMIT_HELP "Sets the score needed to win the round." + IDS_HELP_CHOOSE_TEAM_1 "Choose the Blue Team" + IDS_TIME_LIMIT_HELP "Set the number of minutes the round will last." + IDS_MAX_PLAYERS "Numero massimo di giocatori" + IDS_MAX_PLAYERS_HELP "Imposta il numero massimo di giocatori che possono partecipare alla sessione." + IDS_ROUNDS_HELP "Set the number of rounds to play on a map before switching." + IDS_RUN_SPEED_HELP "Imposta la percentuale della normale velocità di corsa da usare nella sessione." + IDS_HELP_CHOOSE_TEAM_2 "Choose the Red Team" + IDS_FRIENDLY_FIRE_HELP "Attiva/disattiva i danni causati dal fuoco amico." + IDS_AUTO_SELECT "Auto-Select" + IDS_HELP_HOST_PLAYERDIFF + "Imposta in che misura la difficoltà del gioco risente di giocatori aggiuntivi." +END + +STRINGTABLE +BEGIN + IDS_WON_CDKEY_FAIL "Errore durante la verifica della chiave CD" + IDS_WON_PUB_STATUS "Pubblicazione del server in corso..." + IDS_WON_PUB_SUCCESS "Server pubblicato" + IDS_WON_PUB_FAIL "Errore durante la pubblicazione del server" + IDS_WON_REM_STATUS "Rimozione del server in corso..." + IDS_WON_REM_SUCCESS "Server rimosso" + IDS_WON_REM_FAIL "Errore durante la rimozione del server" + IDS_WON_LIST_STATUS "Recupero dell'elenco server in corso..." + IDS_WON_LIST_SUCCESS "Elenco server recuperato" + IDS_WON_LIST_FAIL "Errore durante il recupero dell'elenco server" + IDS_WON_CLEAR_REQ_LIST "Azzeramento dell'elenco di richiesta" + IDS_WON_PROCESS_REQ "Esecuzione della richiesta di fuori servizio in corso..." + IDS_WON_PING_SUCCESS "Elenco peer rilevato" + IDS_WON_DETAIL_SUCCESS "Dettagli del server rilevati" + IDS_WON_DETAIL_FAIL "Il server non risponde" + IDS_WON_VAL_SUCCESS "Client convalidato" +END + +STRINGTABLE +BEGIN + IDS_TEAM_1 "Blue team" + IDS_HELP_CAMPAIGN_NAME "Choose the map list to use for this session." + IDS_DETAILTEXTURES "Dettagli delle texture" + IDS_HELP_DETAILTEXTURES "Attiva/disattiva l'uso di texture dettagliate." + IDS_ENVIRONMENT_MAP "Mappa dell'ambiente" + IDS_HELP_ENVIRONMENT_MAP "Attiva/disattiva l'uso delle mappe ambientali." + IDS_DYNAMICLIGHTS "Luci dinamiche" + IDS_HELP_DYNAMICLIGHTS "Attiva/Disattiva l'utilizzo delle luci dinamiche." + IDS_TRIPLE_BUFF "Triplo buffering" + IDS_HELP_TRIPLE_BUFF "Attiva/disattiva l'uso del triplo buffering." + IDS_HELP_SETCONTROL "Premi Invio o clicca col pulsante sinistro del mouse per impostare un comando per questa azione." + IDS_HELP_CUSTOMCONTROLS "Assegna funzioni a tastiera, mouse e controller." + IDS_HELP_MOUSE "Imposta le opzioni di configurazione del mouse." + IDS_HELP_JOYSTICK "Imposta le opzioni di configurazione del joystick o joypad." + IDS_HELP_ADVCONTROLS "Opzioni avanzate dei comandi." + IDS_HELP_RESTORE "Ripristina le impostazioni iniziali dei comandi." +END + +STRINGTABLE +BEGIN + IDS_HELP_SOUNDFX "Attiva/disattiva gli effetti sonori." + IDS_HELP_SOUNDVOL "Imposta il volume degli effetti sonori." + IDS_HELP_SOUNDQUAL "Imposta la qualità degli effetti sonori. Potrebbe influenzare le prestazioni del sistema." + IDS_HELP_MUSIC "Attiva/disattiva la musica." + IDS_HELP_MUSICVOL "Imposta il volume della musica." + IDS_HELP_CUSTOMLEVEL "Carica il livello personalizzato evidenziato." + IDS_HELP_USEJOYSTICK "Attiva/disattiva l'uso di un joystick o joypad." + IDS_HELP_INVERTAXIS "Attiva/disattiva l'inversione di questo asse." + IDS_HELP_DEADZONE "Imposta la zona morta per questo asse." + IDS_HELP_ANALOG "Cambia tra digitale e analogico." + IDS_HELP_JOY_SENSE "Imposta la sensibilità del joystick su quest'asse." + IDS_HELP_JOY_CENTER "Attiva/disattiva l'uso della correzione di centratura del controller." + IDS_HELP_INVERTY "Attiva/disattiva l'inversione del mouse." + IDS_HELP_MOUSELOOK "Attiva/disattiva l'utilizzo del mouse per guardare." + IDS_HELP_MOUSE_SENSE "Imposta la sensibilità del mouse." + IDS_HELP_MOUSE_INPUT "Imposta la fluidità del movimento del mouse." +END + +STRINGTABLE +BEGIN + IDS_HELP_MOUSE_BUTTON "Imposta l'azione assegnata a questo tasto." + IDS_HELP_NORMALTURN "Imposta la velocità normale per girarsi dei comandi da tastiera." + IDS_HELP_FASTTURN "Imposta la rotazione veloce come comando da tastiera." + IDS_HELP_LOOKUP "Imposta la velocità a cui guardare in alto o in basso, coi comandi da tastiera." + IDS_HOST_CAMPAIGN_DEFAULT "Default Map List" + IDS_HELP_CROSSHAIRMENU "Seleziona le opzioni del mirino." + IDS_HELP_LEFT "Mostra la pagina precedente." + IDS_HELP_RIGHT "Visualizza la pagina successiva." + IDS_HELP_QUICKSAVE "Salva la partita attuale nella posizione di salvataggio rapido." + IDS_HELP_SAVEGAME "Salva la partita in questa posizione." + IDS_HELP_QUICKLOAD "Carica la partita salvata nella posizione di salvataggio rapido." + IDS_HELP_LOADGAME "Carica la partita salvata in questa posizione." + IDS_HELP_RELOAD "Carica la partita salvata automaticamente. La partita viene automaticamente salvata all'entrata di un livello." + IDS_HELP_CAMPAIGN "Select map list." + IDS_HELP_RESUME "Ritorna alla partita in corso." + IDS_HELP_CONTINUE_GAME "Continua l'ultima partita salvata." +END + +STRINGTABLE +BEGIN + IDS_HELP_JOIN "Partecipa a una partita multigiocatore" + IDS_HELP_HOST "Ospita una nuova partita multiplayer." + IDS_HOST_ADD_MISSION "> Aggiungi" + IDS_HOST_REMOVE_MISSION "< Rimuovi" + IDS_HOST_ADD_ALL "> Aggiungi tutti" + IDS_HOST_REMOVE_ALL "< Rimuovi tutti" + IDS_NOLEVELS "Seleziona i livelli in cui giocare in questa partita." + IDS_HELP_OK "Accetta queste impostazioni." + IDS_SCENENUMBER "Scena %1!d!" + IDS_LOOP_MISSIONS "Ripeti dall'inizio" + IDS_MOVE_CONTROLS "Movimento" + IDS_INV_CONTROLS "Interazione" + IDS_VIEW_CONTROLS "Mostra" + IDS_MISC_CONTROLS "Stato" + IDS_HELP_KEYBOARD "Imposta le opzioni di configurazione della tastiera." +END + +STRINGTABLE +BEGIN + IDS_HELP_CH_ALPHA "Opacità del mirino." + IDS_HELP_CH_R "Percentuale di rosso nel colore del mirino." + IDS_HELP_CH_G "Percentuale di verde nel colore del mirino." + IDS_HELP_CH_B "Percentuale di blu nel colore del mirino." + IDS_HELP_CH_STYLE "Imposta lo stile del mirino da utilizzare." + IDS_HELP_CH_DYNAMIC "Attiva/disattiva il ridimensionamento dinamico del mirino." + IDS_HELP_MAIN "Ritorna al menu principale." + IDS_HELP_NEXTMISSION "Comincia la missione successiva." + IDS_HELP_CONTINUE "Prosegui alla schermata successiva." + IDS_CAMPAIGN_EXISTS "A map list of that name already exists." + IDS_GUN_NOPICKUP "Non puoi portare altre munizioni per il %1!s!!" + IDS_GUN_NOPICKUP_INF "%1!s! già in tuo possesso!" + IDS_PLAYER_SETUP "Impostazioni del giocatore" + IDS_JOIN "Partecipa" + IDS_HOST "Host" + IDS_HELP_PLAYER "Imposta le opzioni del giocatore." +END + +STRINGTABLE +BEGIN + IDS_WEAPONS_STAY "Blocco armi" + IDS_WEAPONS_STAY_HELP "Attiva/disattiva la creazione immediata delle armi." + IDS_HELP_AUTO_SELECT "Let the server choose a team for you." + IDS_HELP_TEAM_SELECT "Join this team." + IDS_CANCELREVIVE "Cancel Revive" + IDS_FILTER_TYPE "Game type:" + IDS_HIT_LOCATION "Danni basati sulla locazione colpita." + IDS_HIT_LOCATION_HELP "Modifica i danni in base alla parte del corpo colpita." + IDS_SCORE_LIMIT "Punteggio vincente" + IDS_HELP_SCORE_LIMIT "Imposta il punteggio necessario per vincere." + IDS_ALLOWED_WEAPONS "Allowed weapons" + IDS_DISABLED_WEAPONS "Restricted weapons" + IDS_END_SCORE "Raggiunto il punteggio vincente." + IDS_TEAM1_BOMB "The Blue team planted a bomb." + IDS_TEAM2_BOMB "The Red team planted a bomb." + IDS_HOST_ADD_WEAPON "> Add restriction" +END + +STRINGTABLE +BEGIN + IDS_APP_SHUTDOWN_1 "Errore durante l'inizializzazione del programma di rendering. Per poter giocare a %1!s! è necessario installare DirectX 8.1." + IDS_PROFILE_ALREADY_EXISTS + "Un profilo con questo nome è già esistente. Scegli un nome differente." + IDS_CONFIRM_DELETE_PROFILE + "Sei sicuro di voler cancellare questo profilo insieme alla configurazione e alle partite salvate a esso associate?" + IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE + "Impossibile creare un dispositivo hardware TnL. Ciò potrebbe essere causato dall'assenza di DirectX 8.1 o di una scheda video hardware TnL adatta. Entrambi i requisiti sono necessari per poter giocare a %1!s! e, nonostante sia possibile continuare cliccando su OK, tale procedura non è ufficialmente supportata e potrebbe provocare il malfunzionamento o l'arresto del gioco e una prestazione mediocre." +END + +STRINGTABLE +BEGIN + IDS_FILTER_CURRENTMOD "Current Mod" + IDS_SERVER_WRONGMOD "Unable to join because the game server is running a different Mod than your current Mod." + IDS_HECHANGED "%1!s! changed teams to the %2!s!" + IDS_ICHANGED "You changed teams to the %1!s!" + IDS_IWILLCHANGE "You will change teams when you respawn." + IDS_FRAG_SCORE "Frag score" + IDS_FRAG_SCORE_HELP "Points received for kills." + IDS_TAG_SCORE "Tag score" + IDS_TAG_SCORE_HELP "Points received for non-lethal knockdowns." + IDS_REVIVE_SCORE "Revive score" + IDS_REVIVE_SCORE_HELP "Points recevived for reviving teammates." + IDS_DD_COMP_SCORE "Completion score" + IDS_DD_COMP_SCORE_HELP "Points recevived for completing the doomsday device." + IDS_DD_HVY_SCORE "Heavy piece score" + IDS_DD_HVY_SCORE_HELP "Points recevived for placing a heavy piece of the device." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_1 "Pistola stordente Mascara" + IDS_WEAPON_2 "Katana" + IDS_WEAPON_3 "Tulwar" + IDS_WEAPON_4 "Shuriken" + IDS_WEAPON_5 "Granata" + IDS_WEAPON_6 "Dispositivo di prossimità micino arrabbiato@micino arrabbiato" + IDS_WEAPON_7 "Pistola automatica McAllister calibro .32@Pistola calibro .32" + IDS_WEAPON_8 "CT-180 Lancia strumenti@Lancia strumenti" + IDS_WEAPON_9 "Fucile a canne mozze Bacalov Instigator@Fucile a canne mozze " + IDS_WEAPON_10 "Mitragliatore Gordon 9 mm@Gordon SMG" + IDS_WEAPON_11 "Fucile mitragliatore M1921-A1@M1921-A1 SMG" + IDS_WEAPON_12 "Fucile d'assalto AK-47 @AK-47" + IDS_WEAPON_13 "Fucile d'assalto RFA Serie-4@Fucile di precisione" + IDS_WEAPON_14 "Balestra difensiva@Balestra" + IDS_WEAPON_15 "Lanciatore di micromissili" + IDS_WEAPON_16 "Telecamera rossetto@Telecamera spia" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_17 "Cariche esplosive" + IDS_WEAPON_18 "Decodificatore compatto@Decodificatore" + IDS_WEAPON_19 "Saldatrice nella lacca per capelli@Saldatrice" + IDS_WEAPON_20 "Grimaldello tagliaunghie@ Grimaldello" + IDS_WEAPON_21 "Cimice@Cimice" + IDS_WEAPON_22 "Profumo per la rimozione dei corpi@Rimotore corpi" + IDS_WEAPON_23 "Moneta" + IDS_WEAPON_24 "Trappola per orsi" + IDS_WEAPON_25 "Portachiavi luminoso" + IDS_WEAPON_26 "Banana" + IDS_WEAPON_27 "[Fondina]" + IDS_WEAPON_28 "Granata a gas stordente" + IDS_WEAPON_29 "Granata a gas soporifero" + IDS_WEAPON_30 "Granata a gas acido" + IDS_WEAPON_31 "Granata a gas esilarante" + IDS_WEAPON_32 "Mitragliatore Gordon 9mm con silenziatore@Silenziatore SMG" +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_1 "Camuffato come un normale mascara, questo subdolo dispositivo mette rapidamente i nemici fuori combattimento per un breve periodo. " + IDS_WEAPON_DESC_2 "Una tradizionale spada lunga giapponese. Silenziosa e mortale. Un colpo ben assestato può bloccare armi da lancio come gli shuriken o proiettili di piccolo calibro. " + IDS_WEAPON_DESC_3 "Una spada indiana curva. Utilissima per disfarsi rapidamente dei nemici. È anche in grado di bloccare proiettili di piccolo calibro e altre armi da lancio." + IDS_WEAPON_DESC_4 "Le stelle da lancio giapponesi sono l'arma degli assassini. Sono più efficaci contro nemici non insospettiti." + IDS_WEAPON_DESC_5 "Un oggetto esplosivo che può essere lanciato al di là delle mura o dietro agli angoli. È efficace quanto poco discreto. " + IDS_WEAPON_DESC_6 "Un potente esplosivo astutamente camuffato da gatto randagio. Una volta che la sua spoletta di prossimità è innescata, insegue la vittima ed esplode. " + IDS_WEAPON_DESC_7 "Una pistola calibro 32. Affidabile ed efficace. Può essere dotata di silenziatore. " + IDS_WEAPON_DESC_8 "Questo strumento multiuso è stato progettato per ospitare un grande contenitore cilindrico di metallo che può essere riempito con vari tipi di munizioni." + IDS_WEAPON_DESC_9 "Sebbene non venga tipicamente usato dalle spie, il fucile a canne mozze può rivelarsi utile in certe situazioni. Può utilizzare diversi tipi di proiettili. " + IDS_WEAPON_DESC_10 "Una mitraglietta assai diffusa grazie alla sua affidabilità e al suo disegno elegante. Sebbene non sia raccomandato afferrarla per il caricatore laterale, molti agenti lo fanno." + IDS_WEAPON_DESC_11 "La durevole mitraglietta M1921-A1 è molto diffusa in quelle organizzazioni criminali che adorano il suo look da gangster." + IDS_WEAPON_DESC_12 "Un fucile da assalto robusto e affidabile proveniente dall'Europa dell'est, che si è diffuso molto tra criminali terroristi." + IDS_WEAPON_DESC_13 "Questo potente e preciso fucile è l'ideale arma da cecchino. Dispone di un mirino 4X e può essere dotato di silenziatore." + IDS_WEAPON_DESC_14 "Una robusta balestra sportiva ideale per quelle situazioni in cui è necessaria attenzione e precisione più che potenza di fuoco. È possibile dotarla di mirino per colpire a lunga distanza. " +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_15 "Questo mini lanciamissili pieghevole può essere comodamente tenuto nella borsetta, rendendolo facile da trasportare e difficile da scoprire. " + IDS_WEAPON_DESC_16 "Questa macchina fotografica in miniatura è nascosta in un rossetto perfettamente funzionante. La macchina ha una limitata profondità di campo, per cui è necessario zoomare per prendere una buona foto. " + IDS_WEAPON_DESC_17 "Un potente esplosivo industriale, ideale per atti di sabotaggio." + IDS_WEAPON_DESC_18 "Questo oggetto femminile dall'aspetto normalissimo nasconde un sofisticato marchingegno di decodifica utilizzato per decifrare testo e codici numerici di dispositivi di sicurezza. " + IDS_WEAPON_DESC_19 "Questo mini saldatore utilizza come combustibile lo spray per capelli, il che lo rende facilmente camuffabile; tuttavia non è efficace come un saldatore tradizionale. " + IDS_WEAPON_DESC_20 "All'apparenza un normale tagliaunghie, è in realtà un utile strumento per manomettere lucchetti e serrature." + IDS_WEAPON_DESC_21 "Se agganciata a un telefono, questa cimice elettronica registra i dati. Per riascoltare la conversazione in un secondo momento, la devi attivare." + IDS_WEAPON_DESC_22 "Questa bottiglia di profumo spruzza una soluzione che sistema velocemente e senza fatica i corpi. Assicurati di cercare oggetti utili prima di rimuovere un bersaglio colpito." + IDS_WEAPON_DESC_23 "Questa monetina può essere utile per distrarre o attirare le guardie dalla loro postazione." + IDS_WEAPON_DESC_24 "Puoi piazzare le trappole per orsi in modo da imprigionare i tuoi nemici. Occhio a non finirci tu!" + IDS_WEAPON_DESC_25 "La sfera di questo portachiavi è in realtà un bulbo in grado di emettere una debole luce. " + IDS_WEAPON_DESC_26 "Anche una comunissima banana può essere devastante nelle mani giuste. Basta lasciarla dove qualcuno sta per mettere un piede…" + IDS_WEAPON_DESC_27 "Metti via la tua arma per non spaventare i civili." + IDS_WEAPON_DESC_28 "Questo dispositivo provocherà lo stordimento di chiunque sia nei paraggi dell'esplosione. " + IDS_WEAPON_DESC_29 "La granata di metallo esploderà in una nuvola di gas soporifero che renderà i nemici innocui per un breve periodo." + IDS_WEAPON_DESC_30 "Rilascia una nuvola di gas corrosivo che brucia la pelle e interferisce con la respirazione. Molto pericoloso." +END + +STRINGTABLE +BEGIN + IDS_AMMO_1 "Taser" + IDS_AMMO_2 "Katana" + IDS_AMMO_3 "Tulwar" + IDS_AMMO_4 "Shuriken" + IDS_AMMO_5 "Granata" + IDS_AMMO_6 "Granata stordente" + IDS_AMMO_7 "Granata a gas soporifero" + IDS_AMMO_8 "Granata a gas acido" + IDS_AMMO_9 ".32 FMJ" + IDS_AMMO_10 ".32 Cyanide" + IDS_AMMO_11 "Tranquillante" + IDS_AMMO_12 "Inibitore telecamere" +END + +STRINGTABLE +BEGIN + IDS_AMMO_13 "Bomba di colla" + IDS_AMMO_14 "Scarica elettrica" + IDS_AMMO_15 "ASSS" + IDS_AMMO_16 "Granata a gas esilarante" + IDS_AMMO_17 "Pallettone calibro 12" + IDS_AMMO_18 "Esplosivo calibro 12" + IDS_AMMO_19 "9mm FMJ" + IDS_AMMO_20 ".45 FMJ" + IDS_AMMO_21 "7.62x39 FMJ" + IDS_AMMO_22 "7.62x39 Phos" + IDS_AMMO_23 ".308 FMJ" + IDS_AMMO_24 "Dardo" + IDS_AMMO_25 "Dardo avvelenato" + IDS_AMMO_26 "Dardo infuocato" + IDS_AMMO_27 "Dardo esplosivo" + IDS_AMMO_28 "Micromissile" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_NAME "CAPITOLO 1. Cate Archer deve morire!" + IDS_MISSION_01_NAME "CAPITOLO 2. Arrivederci, spia" + IDS_MISSION_02_NAME "CAPITOLO 3. Progetto Omega" + IDS_MISSION_03_NAME "CAPITOLO 4. Una spia sulla strada della H.A.R.M." + IDS_MISSION_04_NAME "CAPITOLO 5. Volo notturno" + IDS_MISSION_05_NAME "CAPITOLO 6. Diario di un " + IDS_MISSION_06_NAME "CAPITOLO 7. Doppio gioco" + IDS_MISSION_07_NAME "CAPITOLO 8. L'arte di uccidere" + IDS_MISSION_08_NAME "CAPITOLO 9. Stazione del male" + IDS_MISSION_09_NAME "CAPITOLO 10. La maledizione di Kali" + IDS_MISSION_10_NAME "CAPITOLO 11. Gli intrusi" + IDS_MISSION_11_NAME "CAPITOLO 12. Sott'acqua" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME "Il Direttore." + IDS_MISSION_00_LEVEL_00_NAME2 "Chiamalo un presentimento." + IDS_MISSION_00_LEVEL_00_NAME3 "Ho cattive notizie." + IDS_MISSION_00_LEVEL_00_NAME4 "La spia è qui!" + IDS_MISSION_00_LEVEL_00_NAME5 "Braccato." + IDS_MISSION_00_LEVEL_00_NAME6 "La morte di Cate Archer." + IDS_MISSION_00_LEVEL_00_NAME7 "Lo spettro della guerra." + IDS_MISSION_00_LEVEL_00_NAME8 "Benvenuti in Siberia." + IDS_MISSION_00_LEVEL_00_NAME9 "La centrale elettrica." + IDS_MISSION_00_LEVEL_00_NAME10 "La torretta delle comunicazioni." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME43 "Quartier generale UNITY" + IDS_MISSION_00_LEVEL_00_NAME44 "Baia del sottomarino." + IDS_MISSION_00_LEVEL_00_NAME45 "Ponte di comando." + IDS_MISSION_00_LEVEL_00_NAME46 "Coperta." + IDS_MISSION_00_LEVEL_00_NAME47 "Laboratori." + IDS_MISSION_00_LEVEL_00_NAME48 "Armstrong in pericolo." + IDS_MISSION_00_LEVEL_00_NAME49 "Il diavolo e il profondo mare blu." + IDS_MISSION_00_LEVEL_00_NAME50 "Inondazione prevista." + IDS_MISSION_00_LEVEL_00_NAME51 "Esplosione!" + IDS_MISSION_00_LEVEL_00_NAME52 + "Credo che dovremmo dedurre che ha fallito." + IDS_MISSION_00_LEVEL_00_NAME53 "Manipolato." + IDS_MISSION_00_LEVEL_00_NAME54 "Dolce vendetta." + IDS_MISSION_00_LEVEL_00_NAME55 "Debito di Isako." + IDS_MISSION_00_LEVEL_00_NAME56 "Il destino di Khios." + IDS_MISSION_00_LEVEL_00_NAME57 "Livello CO-OP" + IDS_MISSION_00_LEVEL_00_NAME58 "Livello CO-OP" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_BRIEF "La UNITY ha inviato Cate in Giappone per investigare su un presunto convegno di organizzazioni criminali internazionali che dovrebbe tenersi presso il villaggio di pastori di Inotakimura. Il suo obiettivo è quello di fotografare segretamente i partecipanti all'incontro.\n\nIl suo primo compito sarà quello di localizzare l'agente Isamu Hatori, che le fornirà ulteriori informazioni relative al suo incarico. L'agente è in attesa da qualche parte nel villaggio." + IDS_MISSION_01_BRIEF "L'incontro si terrà nella residenza di un enigmatico personaggio conosciuto solamente come il Direttore. Cate dovrà infiltrarsi nella residenza, localizzare l'edificio principale e trovare la finestra indicata da Hatori-san sulla mappa. Questo vantaggio dovrebbe consentirle di scattare le fotografie di cui ha bisogno senza esporsi a rischi non necessari.\n\nUna volta ottenute le fotografie, Cate dovrà uscire e fare ritorno al ponte dove la attende Yamata-san. Una squadra di intercettazione della UNITY sarà in attesa di farla evacuare a Tokyo, una volta portata a termine la missione." + IDS_MISSION_02_BRIEF "Le fotografie scattate da un aereo spia mostrano una base militare con scarsa attività e poco personale, ma il signor Barnes avverte che un simile stato di abbandono potrebbe essere un tranello. Sebbene gli americani siano spesso caduti nell'errore di sovrastimare la capacità militare sovietica, la UNITY non intende correre rischi.\n\nLa prima fase della missione di Cate è facilitare la sua stessa fuga. Una piccola azione di sabotaggio dovrebbe evitare che vengano chiamati i rinforzi.\n\nBabbo Natale ha arruolato un pilota esperto della zona, in grado di far entrare e uscire Cate con facilità. A lei spetta il compito di proteggerlo a ogni costo." + IDS_MISSION_03_BRIEF "Dopo aver analizzato le informazioni sugli americani, la UNITY è convinta che la sede dove stanno sviluppando il Progetto Omega si trovi nell'edificio degli archivi principali al centro del campo. Il servizio di sicurezza sarà molto stretto e per Cate, lasciata sola ad affrontare il compito di introdursi e di recuperare i dati necessari, non sarà facile raggiungere l'obiettivo.\n\nPer fortuna, agirà durante la notte e questo dovrebbe darle un po' di vantaggio." +END + +STRINGTABLE +BEGIN + IDS_MISSION_04_BRIEF "Ora che Cate ha recuperato le informazioni sul progetto Omega, si trova davanti una sfida ancora più impegnativa: uscire dall'Unione Sovietica. A complicare ulteriormente le cose, sulle sue tracce si trovano sia i soldati russi che quelli della H.A.R.M.\n\nCate dovrà incrociare le dita e sperare che il suo meticoloso addestramento le sia di aiuto. La notte sta per accendersi." + IDS_MISSION_05_BRIEF "Senza ulteriori indicazioni obbligate da seguire, Cate si reca ad Akron, in Ohio, alla ricerca di indizi nella precedente residenza del noto Melvin Blitzny. Blitzny, un ex venditore di aspirapolveri, è stato istruito e addestrato fino ad assumere l'identità dell'agente operativo della UNITY Tom Goodman, nell'ambito dell'ultimo spregevole piano della H.A.R.M. La sua morte è arrivata per mano del suo mentore. \n\nQualsiasi tipo di timore che Cate proverà entrando nel regno di questo spregevole individuo deve essere lasciato da parte per raggiungere l'obiettivo. " + IDS_MISSION_06_BRIEF "Magnus Armstrong ha contattato il suo vecchio amico Kamal, un disilluso agente operativo della H.A.R.M. in India, che ha promesso il suo aiuto. Nonostante Kamal non conosca bene i dettagli del progetto Omega, è sicuro che qualsiasi informazione utile possa essere trovata nella camera blindata centrale nel quartier generale indiano. Bruno è sicuro che l'infiltrazione diretta nel campo è troppo rischiosa, considerato il massiccio numero di uomini della sicurezza che Cate si troverebbe a dover affrontare. Per questo, Kamal l'aiuterà a portare a termine l'obiettivo forse più strano mai perseguito finora: ottenere un posto di lavoro alla H.A.R.M. Una volta assunta, avrà la possibilità di muoversi liberamente senza intralci da parte della sicurezza." + IDS_MISSION_07_BRIEF "Avendo provato il proprio valore alla H.A.R.M., Cate si è assicurata un posto di lavoro nell'organizzazione che aveva giurato di distruggere. Un più alto controllo di sicurezza dovrebbe aiutarla ad avvicinarsi al suo obiettivo: la camera blindata. Lì, spera di trovare il pezzo mancante dell'enigma.\n\nSfortunatamente l'accesso alla camera blindata è consentito solo alle più alte cariche della H.A.R.M. Se solo avesse potuto recuperare maggiori informazioni sulle contromisure di sicurezza che avrebbe dovuto fronteggiare... " + IDS_MISSION_08_BRIEF "La scia di indizi ha condotto Cate e Armstrong ad una struttura segreta in Antartide, luogo in cui la H.A.R.M. sta conducendo il Progetto Omega. " + IDS_MISSION_09_BRIEF "A causa del successo della missione di Cate in India, il Direttore ha ordinato la distruzione del quartier generale indiano della H.A.R.M. come punizione. L'azione funzionerà da prova sul campo per i Super Soldati, prima che siano inviati a Khios per la loro missione.\n\nNonostante Cate abbia recuperato informazioni vitali sul Progetto Omega, ha deciso di procedere direttamente verso l'India nella speranza di evitare la tragedia che si sta per compiere." + IDS_MISSION_10_BRIEF "Con le specifiche tecniche recuperate dalla struttura in Antartide, Cate è sicura che il dottor Schenker può scovare un sistema per combattere i Super Soldati.\n\nNel frattempo, la notizia che Armstrong è vivo nelle mani della H.A.R.M. le ha dato una chiara certezza: trovare dove è custodito ed escogitare un piano per salvarlo.\n" + IDS_MISSION_11_BRIEF "Cate è silenziosamente penetrata all'interno della base sottomarina di massima segretezza della H.A.R.M. nel tentativo di liberare Magnus Armstrong da morte certa. Il suo primo compito sarà di localizzarlo. Le informazioni sulla sua posizione dovrebbero essere custodite nel supercomputer.\n\nQuando Armstrong sarà libero, dovranno entrambi scovare una via di fuga, dato che il mini sub squalo di Cate ha un solo posto." + IDS_MISSION_12_BRIEF "Con la base in stato di collasso e un terribile Super Soldato alle costole, Cate e Armstrong devono collaborare per fuggire da quella bara d'acqua.\n\nAmmesso che riescano a uscire dalla base, se la dovranno vedere con il personale della H.A.R.M. armato e disperato per la propria salvezza. " + IDS_MISSION_13_BRIEF "Dopo essere caduta nelle mani della H.A.R.M., Cate si ritrova in una pericolosa e inutilmente elaborata trappola di morte. Ha bisogno di rapidi riflessi e di straordinaria freddezza per uscirne viva.\n\nNel frattempo, la situazione nel mar di Marmara si fa di ora in ora più oscura. Se Cate riuscirà a far deragliare le infami macchinazioni della H.A.R.M., dovrà farlo in fretta.\n" + IDS_MISSION_14_BRIEF "Il mondo barcolla sull'orlo di una catastrofe nucleare, con gli Stati Uniti e l'Unione Sovietica più vicini alla guerra che mai dall'epoca della crisi per il missile cubano. Inoltre, il destino dell'umanità dipende dal controllo di una minuscola isola.\n\nI Super Soldati della H.A.R.M. sono in marcia verso Khios imbarcati su un sottomarino invisibile ai sistemi di sicurezza NATO. Gli americani non possono inviare le truppe in difesa dell'isola senza provocare i sovietici e persino i russi si dichiarano incapaci di fermare l'invasione. Entrambi gli schieramenti sembrano bloccati in un mortale stallo, ma è la H.A.R.M. ad avere il dito sul grilletto. " + IDS_MISSION_15_BRIEF "Cate si è introdotta furtivamente nella base sottomarina super segreta della H.A.R.M. per ragioni che non sveliamo in questa demo per non rovinare le sorprese che ti aspettano in caso decidessi di giocare. È sufficiente dire che la nostra eroina ha una missione da compiere e che la parte che ti verrà mostrata come esempio non è che l'inizio." + IDS_MISSION_TEMP_BRIEF "Una missione di routine è andata disastrosamente male e adesso Cate Archer è seriamente nei guai. È probabilmente a metà della strada per il punto di incontro, con un nugolo di ninja alle calcagna.\n\nLa squadra di intercettazione della UNITY che aveva il compito di farla evacuare a Tokyo deve precipitarsi subito in suo soccorso. L'obiettivo è semplice: portare via Cate sana e salva.\n" + IDS_MISSION_TEMP_BRIEF2 "Cate è riuscita a scappare da una sperduta base militare sovietica con informazioni cruciali sul Progetto Omega. Ha ottenuto questi dati da un super computer, apparentemente fornito e controllato dalla H.A.R.M.\n\nLa squadra di intercettazione della UNITY è stata inviata per fare piazza pulita. L'obiettivo principale della squadra è mettere quel computer fuori uso una volta per tutte.\n\nLa squadra è stata paracadutata dentro il perimetro della base e si radunerà nei pressi di un piccolo capanno vicino al recinto.\n" + IDS_MISSION_TEMP_BRIEF3 "Attualmente Cate è sulla strada per Calcutta, luogo in cui cercherà di infiltrarsi nel quartier generale indiano della H.A.R.M. per recuperare informazioni ulteriori sul Progetto Omega.\n\nUna squadra di intercettazione della UNITY è già sul posto per recuperare informazioni segrete per facilitarle la missione. La squadra deve localizzare e fotografare un impiegato della H.A.R.M. conosciuto con il nome di Balaji Malpani.\n" + IDS_MISSION_TEMP_BRIEF4 "Cate ci ha chiamati per radio con notizie preoccupanti. Magnus Armstrong è intrappolato in Antartide, bloccato dai rinforzi della H.A.R.M. e da una sorta di invincibili Super Soldati.\n\nUna squadra di intercettazione della UNITY è stata inviata per il recupero di Armstrong e per distruggere il sito per prevenire ulteriori sviluppi del Progetto Omega.\n" +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_1 "Rende i nemici in stato di temporanea incoscienza." + IDS_AMMO_DESC_2 "Katana" + IDS_AMMO_DESC_3 "Tulwar" + IDS_AMMO_DESC_4 "Proiettili con bordi affilati. Possono essere usati anche per distrarre l'avversario." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_5 "Esplosivo a frammentazione che esplode dopo 3 secondi dall'attivazione." + IDS_AMMO_DESC_6 "Rilascia una nuvola di gas stordente che intontisce temporaneamente i nemici. " + IDS_AMMO_DESC_7 "Effetto area che rende i nemici in stato di temporanea incoscienza." + IDS_AMMO_DESC_8 "Produce una nuvola letale di gas corrosivo." + IDS_AMMO_DESC_9 "Munizioni corazzate standard calibro .32." + IDS_AMMO_DESC_10 "Proiettili calibro .308 con minuscole capsule di veleno. Efficaci contro bersagli vivi." + IDS_AMMO_DESC_11 "Rende i nemici in stato di temporanea incoscienza." + IDS_AMMO_DESC_12 "Disabilita le telecamere di sicurezza visualizzando una sequenza video innocua." + IDS_AMMO_DESC_13 "Crea una pozzanghera di un potente liquido adesivo. Arresta l'avanzata dei nemici per un breve periodo." + IDS_AMMO_DESC_14 "Emette una potente scarica elettrica." + IDS_AMMO_DESC_15 "Il siero anti super soldato produce una reazione chimica nei super soldati che che li porta a un'effettiva ebollizione. Innocua contro gli umani." + IDS_AMMO_DESC_16 "Produce una nuvola di gas esilarante." + IDS_AMMO_DESC_17 "La canna di questo cannone lancia un pallettone calibro 12 che crea un ampio arco infuocato molto efficace a breve distanza." + IDS_AMMO_DESC_18 "Pallottole esplosive a scoppio o a impatto, altamente dannose per i bersagli colpiti." + IDS_AMMO_DESC_19 "Munizioni corazzate standard da 9 millimetri." + IDS_AMMO_DESC_20 "Munizioni corazzate standard calibro .45." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_21 "Munizioni corazzate standard calibro 7.62X39." + IDS_AMMO_DESC_22 "Munizioni ricoperte di fosforo calibro 7.62x39; continuano a bruciare dopo l'impatto." + IDS_AMMO_DESC_23 "Munizioni corazzate standard calibro .308." + IDS_AMMO_DESC_24 "Munizioni standard per balestra. Possono essere talvolta recuperate dagli obiettivi colpiti." + IDS_AMMO_DESC_25 "Munizioni per balestra avvelenate. Possono essere talvolta recuperate dagli obiettivi colpiti." + IDS_AMMO_DESC_26 "Munizioni incendiarie per balestra; continuano a bruciare anche dopo l'impatto." + IDS_AMMO_DESC_27 "Munizioni per balestra con punta esplosiva che si attiva al momento dell'impatto." + IDS_AMMO_DESC_28 "Piccolo missile a propulsione autonoma che esplode al momento dell'impatto." + IDS_AMMO_DESC_29 "Telecamera spia con zoom." + IDS_AMMO_DESC_30 "Dispositivo esplosivo a orologeria con tempo regolabile." + IDS_AMMO_DESC_31 "Decifratore e analizzatore di codici elettronici standard." + IDS_AMMO_DESC_32 "Saldatore ad arco portatile." + IDS_AMMO_DESC_33 "Grimaldello" + IDS_AMMO_DESC_34 "Cimice." + IDS_AMMO_DESC_35 "Polverizza istantaneamente e definitivamente i corpi." + IDS_AMMO_DESC_36 "Neutralizza chimicamente l'effetto dell'inchiostro invisibile, rendendo il soggetto visibile a occhio nudo." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5000 "" + IDS_MISSION_OBJ_5001 "Rendezvous con Hatori-san." + IDS_MISSION_OBJ_5002 "Scopri il nuovo luogo dell'incontro." + IDS_MISSION_OBJ_5003 "Riferisci a Hatori-san." + IDS_MISSION_OBJ_5004 "Penetra alla base dell'edificio." + IDS_MISSION_OBJ_5005 "Fotografa l'incontro." + IDS_MISSION_OBJ_5006 "Ritorna al ponte da Yamata-san." + IDS_MISSION_OBJ_5007 "Recupera le rimanenti tre pagine di questa lettera." +END + +STRINGTABLE +BEGIN + IDS_GEAR_NAME_4200 "Armatura pesante" + IDS_GEAR_NAME_4201 "Armatura leggera" + IDS_GEAR_NAME_4202 "Kit di pronto soccorso" + IDS_GEAR_NAME_4203 "Bende" + IDS_GEAR_NAME_4204 "Imbottitura dell'armatura." + IDS_GEAR_NAME_4205 "Small Bandage" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6000 "Sotterraneo segreto della H.A.R.M.\nUbicazione SCONOSCIUTA." + IDS_MISSION_TEXT_6001 "7:01 p.m.\nInotakimura, Giappone" + IDS_MISSION_TEXT_6002 "Quartier generale\nUbicazione CLASSIFICATA" + IDS_MISSION_TEXT_6003 "16:17\nSiberia, URSS" + IDS_MISSION_TEXT_6004 "15:36\nAkron, Ohio" + IDS_MISSION_TEXT_6005 "13:25\nCalcutta, India" + IDS_MISSION_TEXT_6006 "11:30 a.m.\nAntartide" + IDS_MISSION_TEXT_6007 "19:14\nCalcutta, India" + IDS_MISSION_TEXT_6008 "2:28 p.m.\nQuartier generale UNITY" + IDS_MISSION_TEXT_6009 "Base sottomarina segreta H.A.R.M.\nMare Egeo" + IDS_MISSION_TEXT_6010 "Sotterraneo segreto H.A.R.M." + IDS_MISSION_TEXT_6011 "4:31 p.m.\nRegno di Khios, Mare di Marmara" + IDS_MISSION_TEXT_6012 "Sottomarino super segreto H.A.R.M." + IDS_MISSION_TEXT_6013 "Alto comando di flotta NATO " + IDS_MISSION_TEXT_6014 "21:42\nSiberia, URSS" + IDS_MISSION_TEXT_6015 "14:24\nQuartier generale indiano della H.A.R.M." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE "Inaccettabili perdite civili!" + IDS_MISSIONFAILURE2 "Hai ucciso un civile!" + IDS_MISSIONFAILURE3 "Sei stato arrestato!" + IDS_MISSIONFAILURE4 "Sei stato risucchiato nel tornado!" + IDS_MISSIONFAILURE5 "Hai reciso il circuito sbagliato!" + IDS_MISSIONFAILURE6 "Sei morto!" + IDS_MISSIONFAILURE7 "Il quartier generale della UNITY è stato distrutto!" + IDS_MISSIONFAILURE8 "Hai ucciso il tuo pilota!" + IDS_MISSIONFAILURE9 "Sei morto!" + IDS_MISSIONFAILURE10 "Sei morto!" + IDS_MISSIONFAILURE11 "Hai ucciso Hatori-san!" + IDS_MISSIONFAILURE12 "Hai permesso che Hatori-san fosse ucciso!" +END + +STRINGTABLE +BEGIN + IDS_AMMO_29 "Telecamera" + IDS_AMMO_30 "Cariche esplosive" + IDS_AMMO_31 "Decodificatore" + IDS_AMMO_32 "Saldatore" + IDS_AMMO_33 "Grimaldello" + IDS_AMMO_34 "Cimice" + IDS_AMMO_35 "Rimotore corpi" + IDS_AMMO_36 "" + IDS_AMMO_37 "Moneta" + IDS_AMMO_38 "Micino arrabbiato" + IDS_AMMO_39 "Trappola per orsi" + IDS_AMMO_40 "Banana" + IDS_AMMO_41 "Dardo di puntamento" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7000 "" + IDS_TRANSMISSIONS_7001 "Rivolgiti all'uccello meccanico per avere utili consigli. " + IDS_TRANSMISSIONS_7002 "La miccia è finita. Sostituiscila. " + IDS_TRANSMISSIONS_7003 "La porta è chiusa a chiave." + IDS_TRANSMISSIONS_7004 "I cavi sono in corto circuito. Puoi ripararli se trovi del filo di rame. " + IDS_TRANSMISSIONS_7005 "Manca il rubinetto della valvola. Non riesco a fare presa con le mani. " + IDS_TRANSMISSIONS_7006 "Manca la maniglia della porta." + IDS_TRANSMISSIONS_7007 "Manca l'energia elettrica." +END + +STRINGTABLE +BEGIN + IDS_AMMO_DESC_37 "Moneta." + IDS_AMMO_DESC_38 "Micino arrabbiato." + IDS_AMMO_DESC_39 "Trappola per orsi." + IDS_AMMO_DESC_40 "Banana" + IDS_AMMO_DESC_41 "Dardi radiotrasmettenti che individuano sul radar la posizione dei nemici." +END + +STRINGTABLE +BEGIN + IDS_TEXT_DIALOGUE_9000 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10001 "Ehm, mi scusi, signorina. Il direttore vuole vederla." + IDS_DIALOGUE_10002 "Ah, bene, allora gli dirò che sarà da lui fra poco." + IDS_DIALOGUE_10003 "Mamma, non puoi continuare a chiamarmi al lavoro. Sono nel mezzo di un affare." + IDS_DIALOGUE_10004 "E cosa dovrei fare? Non sei mai a casa. Come ti aspetti che mi metta in contatto con te, via piccione viaggiatore?" + IDS_DIALOGUE_10005 "Senti, devo scappare." + IDS_DIALOGUE_10006 "Non ti ho ancora detto perché ho chiamato" + IDS_DIALOGUE_10007 "Già, beh, allora forse la prossima volta arriverai subito al punto, invece di assillarmi per un quarto d'ora." + IDS_DIALOGUE_10008 "Non osare sbattere il telefono in faccia a tua madre, sai?" + IDS_DIALOGUE_10009 "Ho bisogno di bere qualcosa." + IDS_DIALOGUE_10010 "Voleva vedermi?" + IDS_DIALOGUE_10011 "Il signor Volkov ha richiesto i tuoi servigi. Si aspetta che qualcuno cerchi di interrompere la nostra festicciola, stanotte. Vuole che tu faccia sentire l'intruso come a casa propria. Per sempre." + IDS_DIALOGUE_10012 "Quando sarà saldato il mio debito, sensei?" + IDS_DIALOGUE_10013 "Quando lo dirò io." + IDS_DIALOGUE_10014 "Ti prometto che ne parleremo più a fondo, ma prima... Cate Archer deve morire!" + IDS_DIALOGUE_10015 "Oui?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10065 "Sensei. La spia è qui." + IDS_DIALOGUE_10066 "Uccidila." + IDS_DIALOGUE_10067 "Uh oh." + IDS_DIALOGUE_10068 "Quindi era una trappola." + IDS_DIALOGUE_10069 "Ma perché?" + IDS_DIALOGUE_10070 "Non essere ingenua. Hai molti nemici." + IDS_DIALOGUE_10071 "E quale di loro ti ha mandata?" + IDS_DIALOGUE_10072 "Un ammiratore segreto, quindi. Sono lusingata." + IDS_DIALOGUE_10073 "Mi stupisci. Non credevo che arrivassi fino a qui." + IDS_DIALOGUE_10074 "Mi dispiace." + IDS_DIALOGUE_10075 "Sei sicuro che sia morta?" + IDS_DIALOGUE_10076 "Certo che lo è. Isako non fa errori. Vero, Isako?" + IDS_DIALOGUE_10077 "Beh, adesso sono più tranquillo. Anche se mi sentirei più tranquillo se mi aveste dato qualche prova." + IDS_DIALOGUE_10078 "Via, Dmitrji. Cosa ti aspettavi? La sua testa su un vassoio?" + IDS_DIALOGUE_10079 "Direttore, sua... madre al telefono." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10080 "Oh, maledizione." + IDS_DIALOGUE_10081 "Sensei. Hai detto che avremmo parlato del mio futuro dopo la morte della ragazza." + IDS_DIALOGUE_10082 "Il tuo futuro? Ma è con noi, mia cara." + IDS_DIALOGUE_10083 "Mi puoi trovare a questo numero, vecchio mio, anche se preferirei che non lo facessi." + IDS_DIALOGUE_10084 "Signore, la prego di ripensarci." + IDS_DIALOGUE_10085 "Non vado in vacanza da 15 anni. Nessuno riuscirà a convincermi a rinunciare." + IDS_DIALOGUE_10086 "Mi riferivo al fatto di lasciare me a capo di tutto." + IDS_DIALOGUE_10087 "Oh, smetti di frignare. Non c'è nessun altro." + IDS_DIALOGUE_10088 "Bene, me ne vado. Ci vediamo fra qualche settimana." + IDS_DIALOGUE_10089 "Sì, signore." + IDS_DIALOGUE_10090 "Direttore provvisorio Lawrie?" + IDS_DIALOGUE_10091 "Sì." + IDS_DIALOGUE_10092 "C'è il dottor Schenker per lei." + IDS_DIALOGUE_10093 "Eccellente, lo faccia entrare." + IDS_DIALOGUE_10094 "Dottore. Come sta?" + IDS_DIALOGUE_10095 "È fortunata a essere viva. La squadra l'ha trovata giusto in tempo. Ha chiesto di lei." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10096 "Bruno!" + IDS_DIALOGUE_10097 "Mi dispiace di non essere potuto venire a Tokyo. L'affare a Praga si è trasformato in un casino. Come diavolo stai, piuttosto?" + IDS_DIALOGUE_10098 "Pronta a tornare al lavoro." + IDS_DIALOGUE_10099 "Non così in fretta." + IDS_DIALOGUE_10100 "Fretta? Sono passate quasi due settimane." + IDS_DIALOGUE_10101 "Sconsiglio qualsiasi tipo di attività faticosa." + IDS_DIALOGUE_10102 "Ascolta il dottore. Ho bisogno di te al massimo della forma." + IDS_DIALOGUE_10103 "Allora fammi fare qualcosa di utile. Sto buttando via il tempo!" + IDS_DIALOGUE_10104 "Direttore provvisorio Lawrie, per favore vada immediatamente nella sala operativa." + IDS_DIALOGUE_10105 "Direttore provvisorio Lawrie?" + IDS_DIALOGUE_10106 "Non dire niente. Devo andare. Fai la brava." + IDS_DIALOGUE_10107 "Signori, mi scuso per avervi fatto aspettare." + IDS_DIALOGUE_10108 "Normalmente non l'assaliremmo così, ma la situazione è molto seria. Sono Isaac Barnes. Questo è il generale Morgan Hawkins." + IDS_DIALOGUE_10109 "Bruno Lawrie. Direttore provvisorio di UNITY." + IDS_DIALOGUE_10110 "Le tocca fare da baby sitter, eh?" + IDS_DIALOGUE_10111 "Più o meno. " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10112 "Sto bene!" + IDS_DIALOGUE_10113 "Hai bisogno di riposare!" + IDS_DIALOGUE_10114 "Mi pareva di averti detto di stare buona!" + IDS_DIALOGUE_10115 "Non ho detto che l'avrei fatto." + IDS_DIALOGUE_10116 "Signori, questa è Cate Archer, uno dei nostri migliori agenti segreti." + IDS_DIALOGUE_10117 "Ci credo." + IDS_DIALOGUE_10118 "Ha mai ingoiato un sigaro acceso?" + IDS_DIALOGUE_10119 "Grazie, dottor Schenker." + IDS_DIALOGUE_10120 "Signor Lawrie, signorina Archer, lasciate che vada dritto al punto." + IDS_DIALOGUE_10121 "Assolutamente." + IDS_DIALOGUE_10122 "Conoscete l'isola di Khios?" + IDS_DIALOGUE_10123 "Si trova nel mare di Marmara. Ed è guardata con estremo interesse da molte superpotenze." + IDS_DIALOGUE_10124 "Sapete perché?" + IDS_DIALOGUE_10125 "Ha qualcosa a che fare con le sue risorse naturali, no?" + IDS_DIALOGUE_10126 "Buon Dio." + IDS_DIALOGUE_10127 "Esattamente. Abbiamo ragione di credere che i sovietici stiano pianificando di invadere Khios entro le prossime due settimane." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10128 "Nel momento in cui i rossi metteranno un piede sull'isola, lo zio Sam provvederà a firmare, impacchettare e consegnare a Mosca un bel pacco sorpresa a forma di Polaris." + IDS_DIALOGUE_10129 "Come suggerisce il generale, le conseguenze di un'invasione sarebbero catastrofiche. Potrebbe anche scatenarsi un conflitto nucleare globale." + IDS_DIALOGUE_10130 "Ma Khios è praticamente invulnerabile a un assalto convenzionale. Qual è il loro piano?" + IDS_DIALOGUE_10131 "Speriamo che possiate scoprirlo voi. Tutto quello che sappiamo è che c'entra il progetto di un'arma segreta, conosciuto come progetto Omega." + IDS_DIALOGUE_10132 "Avremmo dovuto fare ingoiare a quei comunisti un bel sandwich nucleare già nel '62." + IDS_DIALOGUE_10133 "Ci aiuterete?" + IDS_DIALOGUE_10134 "Chiaro che lo faremo." + IDS_DIALOGUE_10135 "Secondo le nostre spie, i sovietici coordinano il progetto da una base isolata in Siberia. Abbiamo bisogno di sapere con cosa abbiamo a che fare e credo che la risposta si trovi da qualche parte in quella base." + IDS_DIALOGUE_10136 "Uh oh. Dimenticate chiavi." + IDS_DIALOGUE_10137 "Forse tu puoi aprire porta." + IDS_DIALOGUE_10138 "Veloce prima che congeliamo." + IDS_DIALOGUE_10139 "Generatore fuori." + IDS_DIALOGUE_10140 "Avvia generatore per favore." + IDS_DIALOGUE_10141 "Io sto qui. Tu avvia generatore." + IDS_DIALOGUE_10142 "Aprite, là dentro!" + IDS_DIALOGUE_10143 "Aprite questa porta!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10144 "Vi avverto!" + IDS_DIALOGUE_10145 "Ho detto di aprire!" + IDS_DIALOGUE_10146 "Cattivi." + IDS_DIALOGUE_10147 "Se ci trovano, grossi problemi." + IDS_DIALOGUE_10148 "Tirali giù!" + IDS_DIALOGUE_10149 "Presto, prima che abbattano porta." + IDS_DIALOGUE_10150 "Tuo boss ti vuole via radio." + IDS_DIALOGUE_10151 "Foxhunt, qui Foxhound. Abbiamo preparato alcune cose per te, nella baracca. La combinazione della serratura è 36 - 7 - 42." + IDS_DIALOGUE_10152 "Stai attenta." + IDS_DIALOGUE_10154 "Gatto delle nevi senza benzina. Trova tanica benzina." + IDS_DIALOGUE_10155 "Cerca camion, forse." + IDS_DIALOGUE_10156 "Non perdere tempo. È freddo." + IDS_DIALOGUE_10158 "Attento al ponte. Ci sono troppi nemici. Cerca una strada alternativa. " +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10160 "Io aspetto qui. Buona fortuna!" + IDS_DIALOGUE_10161 "H.A.R.M.?" + IDS_DIALOGUE_10167 "Sono pronto ad andarmene." + IDS_DIALOGUE_10168 "Anche io. Odio 'sto posto." + IDS_DIALOGUE_10169 "Credevo che mia moglie cucinasse male. È uno chef al confronto di chiunque cucini da queste parti." + IDS_DIALOGUE_10170 "Peccato, ragazzi. Non ce ne andremo tanto presto." + IDS_DIALOGUE_10171 "Avrei dovuto accettare l'incarico al Cairo. Almeno sarei stato al caldo." + IDS_DIALOGUE_10172 "Non ne sai nulla? Qualcuno ha fatto saltare il quartier generale, al Cairo." + IDS_DIALOGUE_10173 "Chi?" + IDS_DIALOGUE_10174 "Difficile dirlo. Lo stanno rivendicando tutti. Probabilmente i Demoni Belle Piume, ma potrebbero essere stati quelli di Rabbia Incontenibile o di Bel Veleno." + IDS_DIALOGUE_10175 "Ho fatto la scelta giusta, dopotutto. Almeno c'è un sacco di vodka, qui." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10177 "La vodka mi tiene caldo." + IDS_DIALOGUE_10178 "Fammi un caffè, starò bene." + IDS_DIALOGUE_10179 "Io bevo il caffè. Tu proteggi l'aereo." + IDS_DIALOGUE_10180 "Vai avanti. Io ti raggiungerò presto." + IDS_DIALOGUE_10181 "Buon caffè." + IDS_DIALOGUE_10182 "Mi dispiace." + IDS_DIALOGUE_10183 "Siamo a 14, signor Volkov. Si sente un po' meglio?" + IDS_DIALOGUE_10184 "Un po'. Ancora uno." + IDS_DIALOGUE_10185 "Portate dentro Laramie!" + IDS_DIALOGUE_10186 "Per favore, non lo faccia! La prego!" + IDS_DIALOGUE_10187 "Infilatelo nella macchina." + IDS_DIALOGUE_10188 "Sono ancora inverso." + IDS_DIALOGUE_10189 "Portate dentro Mackenzie!" + IDS_DIALOGUE_10190 "Mamma, ne abbiamo parlato mille volte. NON torno a casa per Natale." + IDS_DIALOGUE_10191 "Vuoi uccidermi come hai ucciso tuo padre." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10192 "Mamma, papà è morto di dissenteria in Kenya." + IDS_DIALOGUE_10193 "È morto di crepacuore, perché non hai mai avuto successo. Se penso ai sacrifici che abbiamo fatto-" + IDS_DIALOGUE_10194 "Ciao, mamma." + IDS_DIALOGUE_10195 "Non osare sb-" + IDS_DIALOGUE_10196 "Marvin? Sii gentile e portami qualcosa da bere, per favore." + IDS_DIALOGUE_10197 "Il signor Volkov è molto deluso del fatto che Cate Archer sia ancora viva." + IDS_DIALOGUE_10198 "Che la uccida lui, allora." + IDS_DIALOGUE_10199 "Non essere impertinente." + IDS_DIALOGUE_10200 "Non è mia nemica." + IDS_DIALOGUE_10201 "È nemica mia. E tu sei al mio servizio. O hai dimenticato chi ti ha salvato la vita, tanti anni fa?" + IDS_DIALOGUE_10202 "Non dirmi che hai paura di lei." + IDS_DIALOGUE_10203 "Non temo nessuno." + IDS_DIALOGUE_10204 "Allora uccidila. E questa volta portami una prova." + IDS_DIALOGUE_10205 "La sua testa su un vassoio dovrebbe bastare." + IDS_DIALOGUE_10206 "Speravamo in qualcosa di più definitivo. Cosa sapete di quest'organizzazione, H.A.R.M.?" + IDS_DIALOGUE_10207 "Abbiamo già avuto a che fare con loro, in passato. A quel tempo erano a mala pena competenti. Si dice però che abbiano ristrutturato l'organizzazione da allora, anche se nessuno sa cosa significhi ciò." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10208 "Significa che non li avete presi a calci abbastanza forte." + IDS_DIALOGUE_10209 "Se non altro almeno abbiamo capito che il progetto Omega è una creazione di H.A.R.M., anche se ancora non sappiamo esattamente di cosa si tratti." + IDS_DIALOGUE_10210 "La proposta che abbiamo trovato era datata 1965." + IDS_DIALOGUE_10211 "E?" + IDS_DIALOGUE_10212 "Significa che era in corso, durante l'episodio con H.A.R.M. l'anno scorso." + IDS_DIALOGUE_10213 "Abbiamo passato al setaccio la base in nord America, quella dove tenevano il dottor Schenker, e nei documenti che abbiamo recuperato non c'è alcun riferimento al progetto Omega. Sfortunatamente la base nelle Alpi è stata completamente distrutta." + IDS_DIALOGUE_10214 "C'è un altro posto dove guardare." + IDS_DIALOGUE_10215 "Dove?" + IDS_DIALOGUE_10216 "Akron, Ohio." + IDS_DIALOGUE_10217 "Abbiamo perquisito la casa di Goodman." + IDS_DIALOGUE_10218 "Blitzny." + IDS_DIALOGUE_10219 "Come?" + IDS_DIALOGUE_10220 "Il suo nome era Melvin Blitzny. Tom Goodman è morto ad Amsterdam, ricordi?" + IDS_DIALOGUE_10221 "A prescindere, le nostre squadre hanno rivoltato il posto come un calzino." + IDS_DIALOGUE_10222 "Io no." + IDS_DIALOGUE_10223 "È una perdita di tempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10224 "Vedremo." + IDS_DIALOGUE_10225 "Beh, sii prudente." + IDS_DIALOGUE_10228 "Ti porterò un souvenir." + IDS_DIALOGUE_10229 "Non farlo." + IDS_DIALOGUE_10232 "Possiamo rimandare?" + IDS_DIALOGUE_10233 "Va bene." + IDS_DIALOGUE_10234 "Sei molto determinata." + IDS_DIALOGUE_10235 "Ho fatto una promessa." + IDS_DIALOGUE_10236 "Addio!" + IDS_DIALOGUE_10238 "Ah, bene, sei sveglia." + IDS_DIALOGUE_10239 "Mi gira la testa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10240 "Niente che non passi in una settimana di riposo." + IDS_DIALOGUE_10245 "Non ho tempo per riposare. Devo trovare Armstrong." + IDS_DIALOGUE_10246 "Devo insistere!" + IDS_DIALOGUE_10247 "Avanti, ragazzine. Non ci mettete impegno!" + IDS_DIALOGUE_10248 "Oh, ciao Cate." + IDS_DIALOGUE_10249 "Armstrong." + IDS_DIALOGUE_10250 "Come hai fatto a trovarmi? Oh, già, sei una spia." + IDS_DIALOGUE_10251 "Hai dei problemi?" + IDS_DIALOGUE_10252 "Beh, sono undici contro uno. Scusami un secondo." + IDS_DIALOGUE_10253 "Così si fa, ragazzi!" + IDS_DIALOGUE_10254 "Fai dodici. Non avevo visto quello nell'angolo. Non ci metterò molto." + IDS_DIALOGUE_10255 "Fai pure con calma." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10256 "Ora mi hanno fatto arrabbiare." + IDS_DIALOGUE_10257 "Bene. Allora, cosa posso fare per te?" + IDS_DIALOGUE_10258 "Ho bisogno di aiuto." + IDS_DIALOGUE_10259 "Non lo so. Bene o male mi sono tirato fuori dagli intrighi internazionali." + IDS_DIALOGUE_10261 "Mi sei debitore." + IDS_DIALOGUE_10262 "Ah, non iniziare." + IDS_DIALOGUE_10263 "Tutto quello che ti chiediamo è di aiutare Cate a infiltrarsi nella sezione indiana." + IDS_DIALOGUE_10264 "Non avete bisogno del mio aiuto, per quello." + IDS_DIALOGUE_10265 "Tante cose sono cambiate da quando hai lasciato H.A.R.M. La sicurezza funziona meglio di quanto abbia mai fatto." + IDS_DIALOGUE_10266 "Beh, potrei fare un paio di telefonate, ma non sperate di coinvolgermi." + IDS_DIALOGUE_10267 "Kamal, Magnus. Vengo in India." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10298 "Ho un appuntamento con Monsieur Volkov." + IDS_DIALOGUE_10299 "Come ha detto?" + IDS_DIALOGUE_10300 "Sono stato fatto convocare da Dmitrji Volkov." + IDS_DIALOGUE_10301 "Mi scusi, può parlare più forte?" + IDS_DIALOGUE_10302 "Portami da Volkov. Adesso." + IDS_DIALOGUE_10303 "Mi segua, per favore." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10304 "Oh, un fiume di lava! Molto carino." + IDS_DIALOGUE_10305 "Aspetti qui." + IDS_DIALOGUE_10306 "Signore, è arrivato l'assassino." + IDS_DIALOGUE_10307 "Fallo entrare." + IDS_DIALOGUE_10308 "Innanzitutto voglio dire, monsieur, che è un onore essere al cospetto del leggendario Dmitrji Volkov. Lei è senza dubbio il Michelangelo dell'assassinio." + IDS_DIALOGUE_10309 "Beh, lei è molto gentile." + IDS_DIALOGUE_10312 "Monsieur Volkov, mi dica chi è stato a farle questo e io sarò il suo angelo vendicatore." + IDS_DIALOGUE_10313 "Sono caduto sciando." + IDS_DIALOGUE_10314 "Capisco." + IDS_DIALOGUE_10315 "A noi, ora. Lei si starà chiedendo perché ho convocato uno dei più pericolosi assassini del mondo con così poco preavviso." + IDS_DIALOGUE_10316 "Perché vuole che uccida qualcuno?" + IDS_DIALOGUE_10317 "Non solo qualcuno. Voglio che uccida... Cate Archer." + IDS_DIALOGUE_10318 "Come li convinco ad assumermi?" + IDS_DIALOGUE_10319 "Dimostra loro il tuo valore. Forse hanno bisogno di una cameriera." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10320 "Ci stanno osservando." + IDS_DIALOGUE_10321 "Già. Io sto qui, mentre tu lo pigli e scopri cosa vuole." + IDS_DIALOGUE_10322 "Ottimo." + IDS_DIALOGUE_10323 "Lentamente." + IDS_DIALOGUE_10324 "Chi sei?" + IDS_DIALOGUE_10325 "Kamal mi ha mandato a incontrarti." + IDS_DIALOGUE_10326 "Perché non ti sei presentato?" + IDS_DIALOGUE_10327 "Credevo di essere seguito." + IDS_DIALOGUE_10328 "Kamal ti aspetta al - uh." + IDS_DIALOGUE_10329 "Ti avevo detto di prenderlo, non di farlo fuori." + IDS_DIALOGUE_10330 "Stava per dirmi dove incontrare Kamal." + IDS_DIALOGUE_10331 "Non è un problema. Kamal ha detto che avrebbe avuto indosso un garofano rosa, così l'avresti potuto riconoscere." + IDS_DIALOGUE_10332 "Io?" + IDS_DIALOGUE_10333 "Non posso farmi vedere." + IDS_DIALOGUE_10334 "Ehi, voi!" + IDS_DIALOGUE_10335 "Me ne occupo io. Trova Kamal." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10336 "Come ti troverò?" + IDS_DIALOGUE_10337 "Non è facile confondermi." + IDS_DIALOGUE_10340 "Dicci dov'è!" + IDS_DIALOGUE_10341 "Non parlerò mai!" + IDS_DIALOGUE_10342 "Allora... tu... morirai!!!" + IDS_DIALOGUE_10343 "Attento!" + IDS_DIALOGUE_10344 "Ah, sei qui! Stavo iniziando a preoccuparmi." + IDS_DIALOGUE_10345 "Questa mappa mostra la posizione del nascondiglio H.A.R.M. Ho lasciato un pacco per te in un box dei giornali lì vicino." + IDS_DIALOGUE_10346 "Ah, prima che mi dimentichi: probabilmente avrai bisogno di un po' di soldi per oltrepassare Matto Harij. Cinquanta rupie dovrebbero bastare." + IDS_DIALOGUE_10347 "Vuoi passare? Cinquanta rupie." + IDS_DIALOGUE_10348 "Nessuno passa senza pagare Harij." + IDS_DIALOGUE_10349 "Non fare arrabbiare Harij." + IDS_DIALOGUE_10350 "Ti ho detto MOLTE volte: cinquanta rupie per passare da questo cancello." + IDS_DIALOGUE_10351 "Puoi passare." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10352 "Se ti sorprendo ancora a far pagare il pedaggio, ti arresto. Lo giuro." + IDS_DIALOGUE_10353 "È il mio cancello." + IDS_DIALOGUE_10354 "No! No! NON È il tuo cancello. Ti avverto." + IDS_DIALOGUE_10355 "Ora sparisci." + IDS_DIALOGUE_10356 "Pronto?" + IDS_DIALOGUE_10357 "Pronto?" + IDS_DIALOGUE_10358 "Con chi parlo?" + IDS_DIALOGUE_10359 "Con chi parlo IO?" + IDS_DIALOGUE_10360 "Sono io, Balaji Malpani." + IDS_DIALOGUE_10361 "Balaji, idiota, sono io, Anoop." + IDS_DIALOGUE_10362 "Oh! Mi chiedevo se fossi tu, mio buon amico. Come stai?" + IDS_DIALOGUE_10363 "Bene, grazie. Allora, qual è la parola d'ordine per oggi? Hai pensato a qualcosa?" + IDS_DIALOGUE_10364 "Certo! E penso che ti piacerà molto!" + IDS_DIALOGUE_10365 "Non tenermi in sospeso." + IDS_DIALOGUE_10366 "Okay. La parola d'ordine di oggi è... Sei pronto?" + IDS_DIALOGUE_10367 "Sputala, cervello di scimmia!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10368 "Mulligatawny. Che ne pensi?" + IDS_DIALOGUE_10369 "Che dovrebbero darti in pasto a un branco di donnole feroci." + IDS_DIALOGUE_10370 "Parola d'ordine?" + IDS_DIALOGUE_10371 "Vada via." + IDS_DIALOGUE_10372 "Non so di cosa stia parlando." + IDS_DIALOGUE_10373 "Il capo della sicurezza. Dove posso trovarlo?" + IDS_DIALOGUE_10374 "Non abbiamo un capo della sicurezza." + IDS_DIALOGUE_10375 "Questo non è il quartier generale indiano di H.A.R.M.?" + IDS_DIALOGUE_10376 "Cos'è H.A.R.M.?" + IDS_DIALOGUE_10377 "Ammesso e non concesso che sia H.A.R.M. e che abbiate un capo della sicurezza di nome Anoop Banerjee, dove potrei trovarlo?" + IDS_DIALOGUE_10378 "Oltre il cortile. Il suo ufficio è al secondo piano." + IDS_DIALOGUE_10379 "Grazie." + IDS_DIALOGUE_10380 "Non c'è problema." + IDS_DIALOGUE_10381 "Aspetti un secondo!" + IDS_DIALOGUE_10382 "Lei non ha l'autorizzazione per entrare in quell'edificio. Dirò a Banerjee che lo vuole vedere." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10384 "Ora, Cate. Penetra nell'ufficio di Banerjee e metti una cimice nel suo telefono. Non farti beccare!" + IDS_DIALOGUE_10385 "Molto bene! Ora trova la scatola di collegamento. Secondo le nostre informazioni è da qualche parte al primo piano." + IDS_DIALOGUE_10386 "Un'imboscata?" + IDS_DIALOGUE_10387 "Erano quei bastardi dell'Alleanza Malvagia." + IDS_DIALOGUE_10388 "Abbiamo perso l'intera spedizione?" + IDS_DIALOGUE_10389 "Pacpac è riuscito a salvare due casse di Soda ma hanno preso tutto il gelato e le caramelle." + IDS_DIALOGUE_10390 "Siano maledetti! Ma questa volta hanno esagerato. Ritorna immediatamente alla base. Dobbiamo prepararci." + IDS_DIALOGUE_10391 "Prem? Porta la ragazza nel mio ufficio. La riceverò adesso." + IDS_DIALOGUE_10392 "Mi segua, per favore." + IDS_DIALOGUE_10393 "Dietro questa porta, prego." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10401 "Il signor Banerjee la sta aspettando." + IDS_DIALOGUE_10402 "Il signor Banerjee è un uomo molto occupato. Per favore non gli faccia perdere tempo." + IDS_DIALOGUE_10403 "Dove pensa di andare?" + IDS_DIALOGUE_10404 "Se non vuole parlare con il signor Banerjee deve andarsene." + IDS_DIALOGUE_10405 "La avverto. Questa è la sua ultima possibilità." + IDS_DIALOGUE_10406 "Molto bene. È chiaro che lei non vuole parlargli. Se ne vada o la butterò fuori!" + IDS_DIALOGUE_10407 "Dov'è la signorina?" + IDS_DIALOGUE_10408 "Credo che sia in bagno." + IDS_DIALOGUE_10409 "Mi scusi, signorina? Il capo la riceverà adesso." + IDS_DIALOGUE_10410 "Signorina?" + IDS_DIALOGUE_10411 "Tutto bene là dentro?" + IDS_DIALOGUE_10412 "Sto iniziando a preoccuparmi per lei." + IDS_DIALOGUE_10413 "La prego di uscire o dovrò sfondare la porta." + IDS_DIALOGUE_10414 "Uno... due... tre!" + IDS_DIALOGUE_10415 "Guardie! Non lasciatela scappare!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10416 "Anche se lavorassi per questa ditta, H.A.R.M., come potrei essere sicuro dei suoi requisiti?" + IDS_DIALOGUE_10417 "Mi hanno detto che l'Alleanza Malvagia ha un ufficio in questa zona." + IDS_DIALOGUE_10418 "Non saprei. Ma prego, continui." + IDS_DIALOGUE_10419 "Beh, cosa ne direbbe se le portassi il contenuto della loro cassaforte e mandassi a rotoli la loro operazione?" + IDS_DIALOGUE_10420 "Diciamo che, se io fossi il responsabile del personale per un'organizzazione come quella che ha descritto, sarei estremamente impressionato da una simile dimostrazione." + IDS_DIALOGUE_10421 "Torno subito." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10444 "Sei ubriaco!" + IDS_DIALOGUE_10445 "Mi stavo annoiando." + IDS_DIALOGUE_10446 "Bell'aiuto che sei." + IDS_DIALOGUE_10447 "Ragazza, non ho bisogno di una predica. Sono un ometto, ormai. Inoltre, a essere sincero, non c'è molta differenza tra quando sono ubriaco e quando sono sobrio." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10448 "Beh, credo di aver avuto il lavoro." + IDS_DIALOGUE_10449 "È un buon inizio, ma non lo è abbastanza. Da quello che mi dice Kamal, avrai bisogno di un'autorizzazione di sicurezza piuttosto elevata, per avvicinarti a quella cassaforte." + IDS_DIALOGUE_10450 "Mi toccherà farmi promuovere." + IDS_DIALOGUE_10451 "Impressionato?" + IDS_DIALOGUE_10452 "Lei è assunta. In una posizione introduttiva, però credo che troverà il salario e i benefici piuttosto competitivi. Benvenuta in H.A.R.M." + IDS_DIALOGUE_10462 "Quella è Kali." + IDS_DIALOGUE_10463 "Mi ha spaventata. È abbastanza intimidatoria, non è vero?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10464 "Kali è un paradosso. Protettrice e distruttrice. Ha quasi distrutto il mondo, nel tentativo di salvarlo." + IDS_DIALOGUE_10465 "Non è forse sempre così? Cos'è successo?" + IDS_DIALOGUE_10466 "C'era un generale demone, di nome Raktabija, e ogni goccia del suo sangue a contatto con il suolo si trasformava in un altro Raktabija, fino a riempire l'intero campo di battaglia. Gli dei disperati invocarono Parvati, la consorte di Shiva, che assunse la forma di Kali. Sul campo di battaglia usò la propria lingua per raccogliere le gocce di sangue del demone prima che toccassero il suolo, in modo da impedire che si generassero nuove armate. Ma si ubriacò col sangue del demone e la sua danza per la vittoria minacciò di distruggere il mondo, fino a quando lo stesso Shiva non si gettò sotto i suoi piedi, calmandola con la sua vista." + IDS_DIALOGUE_10467 "Affascinante." + IDS_DIALOGUE_10468 "E non molto diversa da mia moglie. Con l'eccezione che lei continuerebbe a danzare." + IDS_DIALOGUE_10469 "Povero caro." + IDS_DIALOGUE_10470 "Dovrebbe lavarsi le mani con l'acqua calda." + IDS_DIALOGUE_10471 "Le suggerisco di lavarsi le mani con l'acqua calda." + IDS_DIALOGUE_10472 "C'è un lavandino oltre quelle porte, sulla destra." + IDS_DIALOGUE_10473 "Come ho detto, dovrebbe lavarsi le mani. Usi l'acqua calda." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10481 "Cate Archer?" + IDS_DIALOGUE_10482 "Ehi, ragazzi! È Cate Archer, la superspia britannica!" + IDS_DIALOGUE_10483 "Posso avere il suo autografo?" + IDS_DIALOGUE_10484 "Scenda in strada! Armstrong la sta aspettando!" + IDS_DIALOGUE_10485 "Vada!" + IDS_DIALOGUE_10486 "Si muova!" + IDS_DIALOGUE_10487 "Non c'è molto tempo!" + IDS_DIALOGUE_10488 "Sto parlando sul serio!" + IDS_DIALOGUE_10489 "Perché mette alla prova la mia pazienza?" + IDS_DIALOGUE_10492 "Cosa diavolo?" + IDS_DIALOGUE_10493 "Siamo in trappola!" + IDS_DIALOGUE_10494 "Ehi, dacci una mano, eh?" + IDS_DIALOGUE_10495 "Mi aspettavo una sfida più difficile." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10496 "Di cosa diavolo stai parlando?" + IDS_DIALOGUE_10497 "Così questa è la famosa Cate Archer? Non sono impressionato." + IDS_DIALOGUE_10498 "Quando esco di qui ti pianto la faccia nel muro più vicino." + IDS_DIALOGUE_10499 "Sei molto in alto, mon ami. E l'unico modo per te di uscire da quella gabbia e di gocciolarne fuori... come zuppa di cipolle." + IDS_DIALOGUE_10500 "Oui? Okay, suona come... Fred Astaire? Bicicletta? Pony?" + IDS_DIALOGUE_10501 "Mon dieu! Parla e basta!" + IDS_DIALOGUE_10502 "Signore, venga qui subito! C'è un problema di fuori!" + IDS_DIALOGUE_10503 "Non voglio morire." + IDS_DIALOGUE_10504 "Cosa stai facendo?" + IDS_DIALOGUE_10505 "Brava ragazza!" + IDS_DIALOGUE_10506 "Ha!" + IDS_DIALOGUE_10507 "Non va bene. La porta è sbarrata dall'altro lato." + IDS_DIALOGUE_10508 "Stai indietro. Provo a sfondarla." + IDS_DIALOGUE_10509 "Non esattamente quello che pensavo." + IDS_DIALOGUE_10510 "Dovrai aprirla tu, questa porta, carina." + IDS_DIALOGUE_10511 "Fatemi uscire!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10512 "Aprite questa porta!" + IDS_DIALOGUE_10513 "Ehi!" + IDS_DIALOGUE_10514 "Aprite, ho detto!" + IDS_DIALOGUE_10515 "Coprimi!" + IDS_DIALOGUE_10516 "Ho detto coprimi!" + IDS_DIALOGUE_10517 "Perché mi stanno sparando?" + IDS_DIALOGUE_10518 "Sono miei. Non puoi averli." + IDS_DIALOGUE_10519 "La ragazza dev'essere punita!" + IDS_DIALOGUE_10520 "Me ne occuperò personalmente." + IDS_DIALOGUE_10521 "Maledetto!" + IDS_DIALOGUE_10522 "Ora, se mi può scusare, devo tornare prima di perdermi il grande finale." + IDS_DIALOGUE_10523 "Farò rapporto al direttore." + IDS_DIALOGUE_10524 "Farò rapporto al direttore." + IDS_DIALOGUE_10525 "Assicuratevi che se ne vada." + IDS_DIALOGUE_10526 "Ora!" + IDS_DIALOGUE_10527 "Non così in fretta, francesino." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10528 "Merde!" + IDS_DIALOGUE_10529 "Presto! Io guido, tu spari!" + IDS_DIALOGUE_10530 "Non sarai così fortunato, la prossima volta." + IDS_DIALOGUE_10534 "La zia Phyllis mi dice che ancora non l'hai chiamata. Quella povera donna è in punto di morte e tu non trovi il tempo per farle una telefonata." + IDS_DIALOGUE_10535 "Mamma, zia Phyllis mi teneva chiuso a chiave in cantina ogni volta che mi mandavi a stare da lei." + IDS_DIALOGUE_10536 "Se avessi saputo che saresti diventato un tale ingrato, ti avrei chiuso anche io a chiave in cantina! Giuro, se tuo padre-" + IDS_DIALOGUE_10537 "Ciao, mammina. È stato bello sentire la tua voce." + IDS_DIALOGUE_10538 "Non osare sb-" + IDS_DIALOGUE_10539 "Sono finiti i preparativi?" + IDS_DIALOGUE_10540 "Sì, signore. La divisione è in movimento verso la zona test." + IDS_DIALOGUE_10541 "Bene. Prenderemo due piccioni con una fava. C'è altro?" + IDS_DIALOGUE_10542 "C'è stato un piccolo... contrattempo." + IDS_DIALOGUE_10543 "Il tempo che abbiamo è quasi finito." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10544 "Finalmente una buona notizia. Tutta questa diplomazia mi ha fatto venire il mal di testa." + IDS_DIALOGUE_10545 "I nostri agenti si stanno avvicinando mentre parliamo." + IDS_DIALOGUE_10546 "Lo spero." + IDS_DIALOGUE_10547 "Mi hai veramente impressionato, prima." + IDS_DIALOGUE_10548 "Senti come piange." + IDS_DIALOGUE_10549 "Tutto quello che dovevi fare era afferrarlo, stupido bestione." + IDS_DIALOGUE_10550 "Piangi, piangi, piangi." + IDS_DIALOGUE_10551 "Beh, almeno gli hai preso il cappotto. Forse morirà di freddo." + IDS_DIALOGUE_10552 "(fa il verso del pianto)" + IDS_DIALOGUE_10553 "Smettila." + IDS_DIALOGUE_10554 "Costringimi." + IDS_DIALOGUE_10555 "Mi scusi. Agente Archer, il luogo dovrebbe trovarsi proprio oltre quel ponte lì davanti." + IDS_DIALOGUE_10556 "Cos'è questo fumo?" + IDS_DIALOGUE_10557 "C'è qualcosa che non va." + IDS_DIALOGUE_10558 "Non mi ero reso conto di essere assieme ad un genio." + IDS_DIALOGUE_10559 "Ti ho pestato in passato; posso farlo ancora." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10560 "Da quando sei diventata un bulletto?" + IDS_DIALOGUE_10561 "Aspetta qui. Do un'occhiata in giro." + IDS_DIALOGUE_10562 "Spero che tu non ti spezzi un'unghia." + IDS_DIALOGUE_10563 "Vuoi aspettare nell'aereo, invece?" + IDS_DIALOGUE_10564 "Ecco, ti do un incentivo." + IDS_DIALOGUE_10565 "Ti aspetto qui, allora." + IDS_DIALOGUE_10566 "Devi fermarlo, è fuori controllo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10576 "Chi... chi sei?" + IDS_DIALOGUE_10577 "Moriremo tutti!" + IDS_DIALOGUE_10578 "Da questa parte! Presto!" + IDS_DIALOGUE_10579 "Povero Hotchkins. Ha provato ad avvertirli." + IDS_DIALOGUE_10580 "Gli altri soggetti erano a posto ma quello... quello era diverso." + IDS_DIALOGUE_10581 "Forza di volontà. Ecco cos'era. Avremmo dovuto aumentare i trattamenti chimici nel suo caso." + IDS_DIALOGUE_10582 "Povero, povero Hotchkins." + IDS_DIALOGUE_10583 "Cosa sta succedendo lì?" + IDS_DIALOGUE_10584 "Riesci a passare?" + IDS_DIALOGUE_10585 "Oh, eccoti." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10592 "Non ha molto senso." + IDS_DIALOGUE_10593 "Alla H.A.R.M. hanno intenzione di fare un test sul campo! Useranno i super soldati per distruggere il proprio quartier generale indiano! Come punizione!" + IDS_DIALOGUE_10594 "Quando?" + IDS_DIALOGUE_10595 "Potrebbe già essere iniziato. Vado lì. Avverti la polizia e di' loro di non provare a combattere. Basta che facciano evacuare la zona." + IDS_DIALOGUE_10596 "Va bene! Ma fai attenzione!" + IDS_DIALOGUE_10597 "No, per favore!" + IDS_DIALOGUE_10598 "Lei è Cate Archer?" + IDS_DIALOGUE_10599 "Sì. Qual è la situazione?" + IDS_DIALOGUE_10600 "Stiamo ancora evacuando la zona." + IDS_DIALOGUE_10601 "Se i suoi uomini mantengono occupati i soldati io mi occuperò di far uscire quella gente da lì." + IDS_DIALOGUE_10602 "Signorina Archer! Da questa parte!" + IDS_DIALOGUE_10603 "Kamal!" + IDS_DIALOGUE_10604 "Ho delle informazioni per lei!" + IDS_DIALOGUE_10605 "Signorina Archer. Sta bene?" + IDS_DIALOGUE_10606 "Credo di sì. E lei? Sta bene?" + IDS_DIALOGUE_10607 "Credo di essere rimasto senza lavoro." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10608 "Signorina Archer, sono contento che sia tornata. Ho notizie di Magnus Armstrong." + IDS_DIALOGUE_10609 "Che notizie? Come sta?" + IDS_DIALOGUE_10610 "È prigioniero di H.A.R.M." + IDS_DIALOGUE_10611 "Non a lungo." + IDS_DIALOGUE_10621 "Queste sono le informazioni sui super soldati?" + IDS_DIALOGUE_10622 "E' tutto quello che ho trovato." + IDS_DIALOGUE_10623 "Oh, cavoli." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10624 "I suoi occhiali? Ancora?" + IDS_DIALOGUE_10625 "Credo di averli lasciati nel bar." + IDS_DIALOGUE_10626 "Torno subito." + IDS_DIALOGUE_10627 "Come può vedere da questo diagramma, ho organizzato tutto. Lei mi dia dodici ore, io le darò madre Russia." + IDS_DIALOGUE_10628 "Non è un piano molto dettagliato." + IDS_DIALOGUE_10629 "Possiamo sistemare i dettagli più tardi. La prima cosa da fare è far firmare quest'idea al presidente." + IDS_DIALOGUE_10630 "Fatemi sapere cosa dice." + IDS_DIALOGUE_10631 "Salve, agente Archer." + IDS_DIALOGUE_10632 "Il generale Hawkins ci stava giusto spiegando il suo piano per invadere la Russia." + IDS_DIALOGUE_10633 "Chiaramente ha omesso la parte in cui descrive cosa succede esattamente durante l'invasione." + IDS_DIALOGUE_10634 "È un peccato che la sua intelligenza non sia al livello del suo zelo." + IDS_DIALOGUE_10635 "(sospira)" + IDS_DIALOGUE_10636 "Non so voi inglesi, ma noi americani non resteremo seduti sui nostri fondoschiena ad aspettare che arrivi la bomba." + IDS_DIALOGUE_10637 "Vi descriverei il funzionamento del piano, ma è una cosa piuttosto tecnica. Sarebbe troppo per le vostre testoline." + IDS_DIALOGUE_10638 "Perché non continuate a scambiarvi le ricette e lasciate fare a noi i pensatori?" + IDS_DIALOGUE_10639 "Ripensandoci, perché io e lei non lasciamo perdere questo mortorio e andiamo a discutere la cosa in privato, se capisce cosa intendo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10640 "Attenzione, a tutto il personale! Sono stati avvistati degli intrusi nell'area adiacente al ristorante. Pensiamo che siano armati ed estremamente pericolosi!" + IDS_DIALOGUE_10641 "Mi è appena stato detto che gli intrusi sembrano... mimi." + IDS_DIALOGUE_10642 "A tutto il personale, allarme cessato. La minaccia è stata neutralizzata. Grazie." + IDS_DIALOGUE_10644 "Eccola qui! Credevo l'avessero rapita." + IDS_DIALOGUE_10645 "Ah, li hai trovati." + IDS_DIALOGUE_10646 "Mi dispiace di averti fatto preoccupare. Uno strano piccolo personaggio si è infilato nel mio ufficio e sono scappato." + IDS_DIALOGUE_10647 "Lodevole piano." + IDS_DIALOGUE_10648 "Diamo un'occhiata a quei file, che ne dici?" + IDS_DIALOGUE_10649 "Devi per forza agitarti?" + IDS_DIALOGUE_10650 "Sì." + IDS_DIALOGUE_10651 "Credo di poter escogitare qualcosa di utile. Chiaramente avrò bisogno di esaminare i dati più a fondo, quindi perché non vai a fare saltare qualcosa per aria, nel frattempo?" + IDS_DIALOGUE_10652 "Buona idea. Allora vado-" + IDS_DIALOGUE_10653 "...a salvare Armstrong." + IDS_DIALOGUE_10654 "Divertiti." + IDS_DIALOGUE_10655 "Hmm, Armstrong." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10656 "Whiskey, veloce." + IDS_DIALOGUE_10657 "Problemi al lavoro?" + IDS_DIALOGUE_10658 "Quella massa di effemminati non vuole fare ciò che è necessario. Ah, ma lei non vuole ascoltare i miei problemi." + IDS_DIALOGUE_10659 "Al contrario, mi farebbe piacere." + IDS_DIALOGUE_10660 "Cosa dovrei fare? Il dannato aggeggio è andato in corto circuito!" + IDS_DIALOGUE_10661 "Hai la garanzia?" + IDS_DIALOGUE_10662 "E cosa pensi che sia QUESTA, carta igienica? Anche se è praticamente la stessa cosa." + IDS_DIALOGUE_10663 "Hai letto la parte che dice che il costruttore non è responsabile in caso di negligenza o cattivo utilizzo da parte dell'utente?" + IDS_DIALOGUE_10664 "Cattivo utilizzo? Stavo solo seguendo le dannate istruzioni." + IDS_DIALOGUE_10665 "La garanzia indica chiaramente le condizioni in cui risulta nulla. Ci sono un sacco di cose che possono causare dei malfunzionamenti." + IDS_DIALOGUE_10666 "Mi arrendo! Questi robot sono inutili comunque." + IDS_DIALOGUE_10667 "Vedi? Questo è ciò che penso di questi stupidi robot." + IDS_DIALOGUE_10668 "Cosa stai guardando?" + IDS_DIALOGUE_10669 "Errore. Impossibile effettuare il calcolo. Consultare il manuale utente per avere la corretta procedura di inserimento dati." + IDS_DIALOGUE_10670 "Il manuale utente può essere trovato al dipartimento servizi supercomputer nel corridoio 2. Per ottenere il manuale bisogna compilare un modulo inserendo il corretto codice della richiesta. Il numero di codice del manuale può essere trovato nel catalogo prodotti dei servizi supercomputer." + IDS_DIALOGUE_10671 "Salve. Per avere il manuale utente per favore presentare un modulo di richiesta 207-B compilato. Il modulo deve includere anche il corretto numero di codice, che si può trovare nel catalogo prodotti servizi supercomputer. Per avere il catalogo prodotti servizi supercomputer, presentare un modulo di richiesta 207-B compilato. Il numero di codice del catalogo prodotti servizi supercomputer può essere trovato nel catalogo prodotti servizi supercomputer." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10672 "Non posso aiutarla senza un modulo di richiesta." + IDS_DIALOGUE_10673 "Ecco il suo catalogo prodotti servizi supercomputer." + IDS_DIALOGUE_10674 "Mi dispiace. Il manuale utente supercomputer al momento non è disponibile." + IDS_DIALOGUE_10675 "Siccome lei è carina, l'aiuterò. Chris Hibbard ha avuto il manuale per gli ultimi quattro mesi. Si dimentica sempre di riportare la roba, quando ha finito di usarla, e solitamente la lascia sulla propria scrivania. Ho perfino fatto una copia della sua tessera di accesso all'ufficio. Può prenderla in prestito, ma per favore me la riporti quando ha finito. Mi dispiacerebbe mandarle dietro la sicurezza." + IDS_DIALOGUE_10676 "Grazie." + IDS_DIALOGUE_10677 "Errore. Impossibile effettuare il calcolo. L'utente sta cercando di utilizzare la versione 1.0 della procedura inserimento dati. La versione corrente è la 2.0. Consultare il supplemento al manuale utente supercomputer per avere la procedura aggiornata." + IDS_DIALOGUE_10678 "Le ragazze non possono entrare qui!" + IDS_DIALOGUE_10679 "Ecco." + IDS_DIALOGUE_10680 "Mi hai fatto bagnare!" + IDS_DIALOGUE_10681 "Mi dispiace. Dammi il tuo tesserino." + IDS_DIALOGUE_10682 "Non sei autorizzata a entrare nel dipartimento servizi supercomputer." + IDS_DIALOGUE_10683 "Ho bisogno del supplemento al manuale utente del supercomputer. Non c'è nemmeno nel catalogo. Non ho tempo per tutta questa burocrazia. Dammi il tesserino." + IDS_DIALOGUE_10684 "Bene." + IDS_DIALOGUE_10685 "Che io sia dannato." + IDS_DIALOGUE_10686 "Ah, non fare finta di essere sorpreso." + IDS_DIALOGUE_10687 "Non posso dire di essermi aspettato una tua visita." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10688 "Pensavi che ti avrei lasciato a morire?" + IDS_DIALOGUE_10689 "Pensi di riuscire a tirarmi fuori da questo casino?" + IDS_DIALOGUE_10690 "Nemmeno per sogno. Ma almeno può guardarti morire." + IDS_DIALOGUE_10691 "Muoviti, ragazza!" + IDS_DIALOGUE_10692 "Oh, cavoli." + IDS_DIALOGUE_10693 "Non dimenticarti di me, ora." + IDS_DIALOGUE_10694 "Cate..." + IDS_DIALOGUE_10695 "Ho quasi finito il tempo qui, piccola." + IDS_DIALOGUE_10696 "Beh, che io sia..." + IDS_DIALOGUE_10697 "Oh, no che non lo fai." + IDS_DIALOGUE_10698 "Di' addio al tuo amichetto." + IDS_DIALOGUE_10699 "Che tu sia maledetta!" + IDS_DIALOGUE_10700 "Ecco un altro favore che ti devo." + IDS_DIALOGUE_10701 "Uh oh. Andiamocene da qui!" + IDS_DIALOGUE_10702 "Abigail!" + IDS_DIALOGUE_10703 "Non... riesco a... controllarmi..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10704 "Aaarrrrrggggghhhhh!!!" + IDS_DIALOGUE_10705 "Non suona molto bene." + IDS_DIALOGUE_10706 "Giusto. Uno di noi deve trovare le pompe di sentina e prosciugare il corridoio 4B." + IDS_DIALOGUE_10707 "O vai da quella parte oppure vai laggiù e aspetti." + IDS_DIALOGUE_10708 "Vado, allora." + IDS_DIALOGUE_10709 "Aspetto qui, allora." + IDS_DIALOGUE_10710 "Ci vediamo presto." + IDS_DIALOGUE_10711 "Okay, sto prosciugando il corridoio. Tieni duro." + IDS_DIALOGUE_10712 "Vai! Potrei avere bisogno di te fra poco. Trova un interfono." + IDS_DIALOGUE_10713 "Quando raggiungi le pompe, prosciuga il corridoio 4B." + IDS_DIALOGUE_10714 "Okay, sta funzionando. Trova un modo per uscire di lì." + IDS_DIALOGUE_10715 "Cate, ho bisogno del tuo aiuto. Una telecamera di sicurezza sta andando in corto circuito e se mi avvicino troppo, mi friggerà. Trova l'ufficio della sicurezza che diavolo?" + IDS_DIALOGUE_10716 "Cate, sei tu? Dove sei ora? Io sono-" + IDS_DIALOGUE_10717 "Che cosa suggerisci, Peterson? Di sdraiarci e morire?" + IDS_DIALOGUE_10718 "Abbiamo cercato ovunque." + IDS_DIALOGUE_10719 "Beh, continua a cercare. Ci dev'essere un meccanismo, da qualche parte." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10720 "Sì, signore." + IDS_DIALOGUE_10721 "Oh, cavoli." + IDS_DIALOGUE_10724 "Non farti scoprire. Io do un'occhiata in giro." + IDS_DIALOGUE_10725 "Ottimo. Sono inciampato su una bottiglia di brandy, mentre venivamo qui, e avevo proprio intenzione di farle fare un giro di prova." + IDS_DIALOGUE_10726 "Smettila di brontolare. Avremmo potuto lasciarti morire." + IDS_DIALOGUE_10727 "Magnus, lancia la capsula di salvataggio." + IDS_DIALOGUE_10728 "Dev'essere bloccata." + IDS_DIALOGUE_10729 "Ma in questa base non funziona nulla come dovrebbe?" + IDS_DIALOGUE_10730 "No." + IDS_DIALOGUE_10731 "Credo che rimarrò, dopotutto." + IDS_DIALOGUE_10732 "Cosa? Sei pazzo. Non sono venuta fino qui solo per farti annegare." + IDS_DIALOGUE_10733 "Hai un'idea migliore? Sono l'unico forte abbastanza per farcela." + IDS_DIALOGUE_10734 "Non ci sarà nessuna discussione." + IDS_DIALOGUE_10735 "Ci dev'essere un altro modo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10736 "No, a meno che tu non ci voglia tutti morti." + IDS_DIALOGUE_10737 "Augurami buona fortuna." + IDS_DIALOGUE_10738 "Eccolo!" + IDS_DIALOGUE_10739 "Ce la puoi fare, Magnus." + IDS_DIALOGUE_10740 "Deve annullare questa operazione." + IDS_DIALOGUE_10741 "Fermarla? Impossibile." + IDS_DIALOGUE_10742 "Non è mai stata approvata, ne abbiamo solo parlato." + IDS_DIALOGUE_10743 "Beh, suppongo che potreste convincermi... per 100 milioni di sterline." + IDS_DIALOGUE_10744 "Lei è pazzo." + IDS_DIALOGUE_10745 "Pazzo? A meno che non mi sbagli, quando i miei super soldati avranno conquistato Khios sarete voi a dover affrontare la minaccia dell'annientamento." + IDS_DIALOGUE_10748 "Si aspetta che io creda che i suoi soldati riusciranno a fare ciò che nessuna nazione sulla Terra ha mai fatto? Khios è invulnerabile. Anche per lei." + IDS_DIALOGUE_10749 "Le manderò una cartolina." + IDS_DIALOGUE_10750 "Lei non mi lascia alcuna scelta: dovrò contattare il nostro ambasciatore a Washington." + IDS_DIALOGUE_10751 "Si accomodi. Vediamo se le crederanno." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10752 "Sì?" + IDS_DIALOGUE_10753 "Dove sei stato? Ho provato a contattarti tutta questa mattina." + IDS_DIALOGUE_10754 "Ciao, mamma. Addio, mamma." + IDS_DIALOGUE_10755 "Non osare sb-" + IDS_DIALOGUE_10756 "Ho appena smesso di parlare con Washington. I sovietici negano ogni coinvolgimento." + IDS_DIALOGUE_10757 "Manica di contapalle." + IDS_DIALOGUE_10758 "Washington li ha avvertiti che una bandiera sovietica sul suolo di Khios sarà considerato un atto di guerra." + IDS_DIALOGUE_10759 "Ho completato le mie analisi." + IDS_DIALOGUE_10760 "Quindi questo cos'è?" + IDS_DIALOGUE_10761 "Siero anti super soldato." + IDS_DIALOGUE_10762 "Perfetto. E cosa fa?" + IDS_DIALOGUE_10763 "Vuole una risposta tecnica?" + IDS_DIALOGUE_10764 "Lo spieghi in modo che Barnes possa capire." + IDS_DIALOGUE_10765 "Causa una reazione chimica nei super soldati che, fondamentalmente, fa ribollire le loro viscere." + IDS_DIALOGUE_10766 "Beh, che io sia dannato." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10770 "Credo che dovremmo dedurre che ha fallito." + IDS_DIALOGUE_10771 "Non ci rimangono molte alternative." + IDS_DIALOGUE_10773 "Dove mi posso prenotare per la festa?" + IDS_DIALOGUE_10774 "Sarai da solo. Se mandiamo le nostre truppe sull'isola i sovietici lanceranno le loro bombe su di noi. Abbiamo avvertito le autorità locali di non interferire, visto che le loro armi sarebbero inutili." + IDS_DIALOGUE_10775 "Potrebbero fare da bersagli alternativi per i super soldati." + IDS_DIALOGUE_10776 "Chissà come mai non ci ho pensato io." + IDS_DIALOGUE_10777 "Deve usare il cervello, signore." + IDS_DIALOGUE_10779 "Avevo pensato di piantarti un proiettile in testa mentre eri svenuta." + IDS_DIALOGUE_10780 "E come mai non l'ha fatto?" + IDS_DIALOGUE_10781 "Troppo facile. Per te. Dopo tutti i guai che ci hai causato, farti morire nel sonno non è abbastanza." + IDS_DIALOGUE_10782 "Spero che tu abbia in mente qualcosa di interessante." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10784 "Stai scherzando." + IDS_DIALOGUE_10785 "Pensavo che potesse attirare la tua attenzione." + IDS_DIALOGUE_10786 "Hai rubato quest'idea ai Maestri del Mayhem." + IDS_DIALOGUE_10787 "Idiozie." + IDS_DIALOGUE_10788 "Uccidono la gente in questo modo dal '63." + IDS_DIALOGUE_10789 "Mi stai facendo irritare. Fai partire il meccanismo" + IDS_DIALOGUE_10792 "Fallo da solo." + IDS_DIALOGUE_10793 "Fai partire il meccanismo." + IDS_DIALOGUE_10795 "Aggeggio maledetto!" + IDS_DIALOGUE_10796 "Pensavo che ci saremmo incontrate." + IDS_DIALOGUE_10797 "Sapevo che ci saremmo incontrate." + IDS_DIALOGUE_10798 "Che ne dici se facciamo finta di non esserci viste?" + IDS_DIALOGUE_10799 "Non posso." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10800 "Va bene." + IDS_DIALOGUE_10801 "Ho fatto male a risparmiarti la vita, tanti anni fa." + IDS_DIALOGUE_10802 "Non sei stata altro che una delusione. Sayonara." + IDS_DIALOGUE_10803 "Maledizione!" + IDS_DIALOGUE_10804 "Stai bene?" + IDS_DIALOGUE_10805 "Non hai certo gusto nello scegliere i datori di lavoro." + IDS_DIALOGUE_10806 "Lui era... come un padre." + IDS_DIALOGUE_10807 "Starai meglio come orfana." + IDS_DIALOGUE_10808 "Sono in debito con te." + IDS_DIALOGUE_10809 "Allora, per favore, smetterai di cercare di uccidermi?" + IDS_DIALOGUE_10810 "Cosa c'è che non va?" + IDS_DIALOGUE_10811 "Non c'è niente che non va." + IDS_DIALOGUE_10812 "Beh, sono in ritardo per la guerra. Sayonara." + IDS_DIALOGUE_10815 "Okay Perkins, ci faccia risalire." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10816 "Sì, signore." + IDS_DIALOGUE_10817 "Equipaggio, prepararsi a schierare le truppe d'invasione." + IDS_DIALOGUE_10818 "Abbiamo localizzato un sottomarino non identificato vicino alla costa. È riuscito a forzare il blocco." + IDS_DIALOGUE_10819 "Attenzione, a tutto il personale, siamo a DefCon 2. Ripeto, siamo a DefCon 2." + IDS_DIALOGUE_10820 "Pensate che il presidente mi lascerà premere il bottone?" + IDS_DIALOGUE_10821 "Sono sorpreso che le lasci usare un telefono." + IDS_DIALOGUE_10822 "Il presidente Johnson sta per parlare al popolo americano." + IDS_DIALOGUE_10823 "Cari concittadini americani, è mio penoso dovere informarvi di una crisi che si sta sviluppando in un paese lontano, di cui molti di noi non hanno mai sentito parlare. Anche mentre continuiamo i nostri sforzi verso la pace in Vietnam e una pacificazione in Medio Oriente, una nuova e pericolosa minaccia getta la propria ombra sulla piccola nazione dell'isola di Khios nel Mar di Marinara, davanti alla costa turca. Per decenni abbiamo vissuto con la paura di una guerra contro l'Unione Sovietica. " + IDS_DIALOGUE_10824 "Dio ci salvi." + IDS_DIALOGUE_10825 "Fermare le macchine!" + IDS_DIALOGUE_10826 "Sì signore!" + IDS_DIALOGUE_10827 "Perfetto! Iniziare lo schieramento." + IDS_DIALOGUE_10828 "Cate!" + IDS_DIALOGUE_10829 "Che io sia dannato." + IDS_DIALOGUE_10830 "Cosa?!" + IDS_DIALOGUE_10831 "Maledetta impicciona." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10832 "Non pensavo che te la saresti cavata." + IDS_DIALOGUE_10833 "Nemmeno io. Dove sono le munizioni?" + IDS_DIALOGUE_10834 "Stanno arrivando. Bruno dice che stanno assemblando le capsule. Ce le paracaduteranno a momenti." + IDS_DIALOGUE_10835 "Bene. Dovremo riuscire a resistere fino a quando il tonico per i super soldati del dottor Schenker farà effetto." + IDS_DIALOGUE_10836 "Ho un'idea. Stai qui e assicurati che nessuno si avvicini a quella bandiera." + IDS_DIALOGUE_10837 "È troppo tardi, Archer." + IDS_DIALOGUE_10838 "Oh, no." + IDS_DIALOGUE_10839 "Dio ci salvi." + IDS_DIALOGUE_10840 "Yee haaa!" + IDS_DIALOGUE_10841 "Un piccolo errore per un uomo, un disastro enorme per l'umanità. E io me ne starò a sorseggiare daiquiri su una spiaggia del Sud Pacifico fino a quando non sarà tutto finito. Che peccato che mamma non riesca a raggiungermi. " + IDS_DIALOGUE_10842 "Durante la crisi dei missili del 1962 ci siamo arrivati più vicini di quanto ci aspettassimo. È quindi con profonda tristezza e frustrazione che devo preparare il popolo americano a un confronto ugualmente pericoloso, a mezzo mondo di distanza dal luogo dell'ultima sfida. L'America si è fatta garante della continua indipendenza di Khios a ogni costo. Ora ci vediamo costretti a onorare quell'impegno. Non possiamo tirarci indietro." + IDS_DIALOGUE_10844 "Ahia." + IDS_DIALOGUE_10845 "Siamo in ballo!" + IDS_DIALOGUE_10846 "La bandiera!" + IDS_DIALOGUE_10847 "Dobbiamo fermare quel missile." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10848 "Troppo tardi, ragazzi. È fuori portata. Maledizione, mi piacerebbe avere del popcorn." + IDS_DIALOGUE_10849 "Dov'è finita quella ragazza?" + IDS_DIALOGUE_10850 "I Sovietici promettono di lanciare un contrattacco completo, a meno che il missile non venga distrutto." + IDS_DIALOGUE_10851 "Migliora ogni minuto che passa." + IDS_DIALOGUE_10852 "Oh, grazie a Dio." + IDS_DIALOGUE_10853 "Aspetta!" + IDS_DIALOGUE_10854 "Cosa c'è che non va?" + IDS_DIALOGUE_10855 "Stai... indietro..." + IDS_DIALOGUE_10858 "Beh, adesso ne ho abbastanza. È da un bel po' che voglio farmi una o due pinte." + IDS_DIALOGUE_10859 "Ah, eccoti qui. È successo qualcosa di interessante, mentre ero via?" + IDS_DIALOGUE_10860 "Non particolarmente." + IDS_DIALOGUE_10861 "Beh, presumo che avrai voglia di un po' d'azione." + IDS_DIALOGUE_10862 "Non particolarmente." + IDS_DIALOGUE_10863 "Va tutto bene?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10864 "Non particolarmente." + IDS_DIALOGUE_10865 "Sei una disgrazia, per questa famiglia." + IDS_DIALOGUE_10866 "Sì, mamma." + IDS_DIALOGUE_10867 "Quanto tuo cugino Beauregard è finito in prigione per incendio doloso, credevo che avessimo toccato il fondo. Beauregard è un santo al tuo confronto." + IDS_DIALOGUE_10868 "Sì, mamma." + IDS_DIALOGUE_10869 "Spero che tu sia fiero." + IDS_DIALOGUE_10870 "Sì, mamma." + IDS_DIALOGUE_10871 "E un'altra cosa-" + IDS_DIALOGUE_10872 "Me ne vado." + IDS_DIALOGUE_10873 "Cosa vuol dire, te ne vai? Non puoi andartene." + IDS_DIALOGUE_10874 "Guarda." + IDS_DIALOGUE_10875 "Dmitrji?" + IDS_DIALOGUE_10876 "Dmitrji!" + IDS_DIALOGUE_10877 "Il mondo non ha ancora finito, di sentire parlare di H.A.R.M.! Puoi stare con noi o contro di noi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10889 "Il dottor Schenker non crede che dovrei lasciarti andare." + IDS_DIALOGUE_10890 "Seguimi!" + IDS_DIALOGUE_10891 "Da questa parte!" + IDS_DIALOGUE_10892 "E cosa dovrei fare? Starmene a letto ad aspettare la terza Guerra Mondiale?" + IDS_DIALOGUE_10893 "Qui dentro!" + IDS_DIALOGUE_10894 "Non credo sia fattibile." + IDS_DIALOGUE_10895 "Cos'era?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10896 "Lasciami perdere. Stiamo cercando di fermare una guerra, ricordi?" + IDS_DIALOGUE_10897 "Fuori di qui! Non so quanto potrò resistere." + IDS_DIALOGUE_10899 "(Prende fiato, un respiro profondo di circa sei secondi)" + IDS_DIALOGUE_10900 "Abbiamo rilevato un caccia in arrivo. Il pilota trasmette il codice Foxhunt." + IDS_DIALOGUE_10901 "Consideralo fatto." + IDS_DIALOGUE_10902 "Se non sono di ritorno entro un'ora, squagliatela e avverti il quartier generale." + IDS_DIALOGUE_10903 "Ho una sensazione strana. Questo incarico ha qualcosa che non va." + IDS_DIALOGUE_10904 "Dimmi buona fortuna." + IDS_DIALOGUE_10905 "Forse hai bisogno di una lezione." + IDS_DIALOGUE_10906 "Ti dobbiamo tirare fuori di qui." + IDS_DIALOGUE_10907 "Non vuoi saperlo." + IDS_DIALOGUE_10908 "Lasciamoli arrivare. Non ce ne andiamo senza Armstrong." + IDS_DIALOGUE_10909 "Ti manderemo un aiuto!" + IDS_DIALOGUE_10910 "Magnus." + IDS_DIALOGUE_10911 "E manda una squadra d'intercettazione alla base antartica. Armstrong è ancora lì." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10912 "Grandioso." + IDS_DIALOGUE_10913 "Donna insopportabile." + IDS_DIALOGUE_10914 "Come mi dispiace, non poter rimanere a godermi i fuochi d'artificio. Devo proprio andare. Grazie, grazie." + IDS_DIALOGUE_10915 "Abigail!!!" + IDS_DIALOGUE_10916 "AAARRRRRGGGHHH!!! ABIGAIL!!!" + IDS_DIALOGUE_10917 "No, per favore!" + IDS_DIALOGUE_10918 "Ti aspetterò qui." + IDS_DIALOGUE_10919 "Non è da te essere cinica." + IDS_DIALOGUE_10920 "No, per favore!" + IDS_DIALOGUE_10921 "Guarda!" + IDS_DIALOGUE_10922 "Dobbiamo andarcene. Stanno arrivando i cattivi. Molti elicotteri." + IDS_DIALOGUE_10923 "Dovremmo sbrigarci." + IDS_DIALOGUE_10924 "No, per favore!" + IDS_DIALOGUE_10925 "No, per favore!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11001 "Hatori-san ti aspetta da qualche parte nel villaggio." + IDS_DIALOGUE_11002 "Cerca messaggi da parte sua." + IDS_DIALOGUE_11003 "Trova Hatori-san. Lui ti può aiutare con la tua missione." + IDS_DIALOGUE_11004 "Buona fortuna!" + IDS_DIALOGUE_11005 "Psst." + IDS_DIALOGUE_11006 "Craaa, craaa!" + IDS_DIALOGUE_11007 "Da questa parte!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11008 "Sono io, Babbo Natale!" + IDS_DIALOGUE_11009 "Di' ciao al merlo indiano meccanico modello VII. Perfetto per comunicare con te sul campo." + IDS_DIALOGUE_11010 "Ah, eccoci. Cosa posso fare per te?" + IDS_DIALOGUE_11011 "Se non sai come proseguire, consulta la schermata Stato della missione." + IDS_DIALOGUE_11012 "A meno che un obiettivo non sia segnalato come opzionale, devi raggiungerlo per completare la missione." + IDS_DIALOGUE_11013 "Durante certe missioni potrai anche ricevere dei parametri, che si riferiscono alle linee di condotta generali da seguire. Violale a tuo rischio e pericolo." + IDS_DIALOGUE_11014 "E con questo abbiamo visto le basi." + IDS_DIALOGUE_11015 "C'è altro?" + IDS_DIALOGUE_11016 "La schermata equipaggiamento ti mostra una lista completa delle armi e dei gadget che hai. Scegliendo un oggetto farai comparire una dettagliata descrizione dello stesso e una lista delle munizioni o delle funzioni disponibili, quindi selezionabili." + IDS_DIALOGUE_11017 "Ottimo. Ci sentiamo presto." + IDS_DIALOGUE_11018 "Attenzione!" + IDS_DIALOGUE_11019 "Puoi sbirciare oltre gli angoli per vedere cosa ti aspetta oltre." + IDS_DIALOGUE_11020 "A un certo punto, i nemici ti vedranno, quindi non sporgerti troppo a lungo." + IDS_DIALOGUE_11021 "I nemici possono sentire i suoni che fai, quindi impara a muoverti silenziosamente." + IDS_DIALOGUE_11022 "Il rumore dei tuoi passi ti può tradire, ma puoi muoverti silenziosamente." + IDS_DIALOGUE_11023 "Tieni a mente che certi materiali, come le piastrelle di ceramica, amplificano il suono, mentre superfici come l'erba o la neve attenueranno il rumore dei tuoi passi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11024 "Inoltre, fai attenzione a non far cadere bottiglie o a urtare le campanelle di vento, altrimenti ti farai sentire." + IDS_DIALOGUE_11025 "Cerca di eliminare i nemici quando meno se lo aspettano. Quando ti vedono, urlano per attirare l'attenzione." + IDS_DIALOGUE_11026 "Cerca anche di non lasciare dei corpi in giro. Nascondili da qualche parte." + IDS_DIALOGUE_11027 "Superando determinati ostacoli o raggiungendo obiettivi specifici otterrai ricompense in punti abilità." + IDS_DIALOGUE_11028 "Richiama la schermata giocatore per usare questi punti, migliorando le tue capacità." + IDS_DIALOGUE_11029 "Ho fame." + IDS_DIALOGUE_11030 "Hai appena mangiato." + IDS_DIALOGUE_11031 "Non posso farci niente. Mangio quando sono stressata." + IDS_DIALOGUE_11032 "Perché sei stressata?" + IDS_DIALOGUE_11033 "Ho un brutto presentimento per stasera." + IDS_DIALOGUE_11034 "Sei preoccupata per un'unica piccola spia?" + IDS_DIALOGUE_11035 "Cosa? No, Kenji-san mi ha chiesto di vederlo più tardi. Credo che mi voglia lasciare." + IDS_DIALOGUE_11036 "Mia nonna diceva che dovresti avvelenare il tuo uomo ogni mattina, prima che esca. E di dirgli che può avere l'antidoto quando torna a casa." + IDS_DIALOGUE_11037 "Che veleno dovrei usare?" + IDS_DIALOGUE_11038 "Sono sicura che mia nonna può darti qualcosa. Non ne ha più bisogno." + IDS_DIALOGUE_11039 "Non è preoccupata che tuo nonno scappi di casa?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11040 "Non può. È paralizzato. Bisogna stare attenti al dosaggio." + IDS_DIALOGUE_11041 "Vuoi andare a fare acquisti a Nagoya, questo fine settimana?" + IDS_DIALOGUE_11042 "Non posso. Devo assassinare qualcuno." + IDS_DIALOGUE_11043 "Fallo fare a Haruko." + IDS_DIALOGUE_11044 "Ce l'ha ancora con me per via del suo gatto." + IDS_DIALOGUE_11045 "E Yuki?" + IDS_DIALOGUE_11046 "Glielo chiederò." + IDS_DIALOGUE_11047 "Fammi sapere." + IDS_DIALOGUE_11049 "Vedi l'icona nascondiglio nell'angolo in basso dello schermo? Segnala che sei entrata in un potenziale nascondiglio. Per nasconderti definitivamente, devi rimanere immobile fino alla comparsa dell'icona nascosta. Una volta nascosta, i nemici non potranno vederti a meno che non stiano indagando su un problema o stiano perquisendo attivamente l'area." + IDS_DIALOGUE_11050 "Sei nascosta solamente quando sei immobile. Se ti muovi, attacchi o ricarichi un'arma diventi visibile." + IDS_DIALOGUE_11053 "Cos'è successo al tuo braccio?" + IDS_DIALOGUE_11054 "Ho fatto a botte con mia madre." + IDS_DIALOGUE_11055 "Pare che ti abbia tagliuzzato per benino." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11056 "Mi ha preso alla sprovvista. È veloce, per la sua età." + IDS_DIALOGUE_11057 "Doveva essere veramente arrabbiata." + IDS_DIALOGUE_11058 "Pensa che non ci vestiamo in maniera appropriata per dei ninja. Io le dico: Mamma, sono gli anni '60 ormai. È meglio che ti ci abitui. E lei: È offensivo. E io le rispondo I vecchi dicono sempre così." + IDS_DIALOGUE_11059 "Uh oh." + IDS_DIALOGUE_11060 "Già, è andata fuori di testa. È arrivata volando dall'altra parte della stanza e ha iniziato a menare fendenti. Alla fine lo ricacciata indietro, ma avevo paura di infilzarla per sbaglio. Quello l'avrebbe fatta arrabbiare sul serio." + IDS_DIALOGUE_11061 "Ti conviene comperarle dei cioccolatini o altro." + IDS_DIALOGUE_11062 "Buona idea." + IDS_DIALOGUE_11063 "Agente Archer, da questa parte!" + IDS_DIALOGUE_11064 "Cattive notizie. Hanno spostato la riunione. Dovrà scoprire da sola, dove." + IDS_DIALOGUE_11065 "Cerchi dei gruppi di ninja." + IDS_DIALOGUE_11066 "Forse può riuscire a sentirli parlare della nuova sede." + IDS_DIALOGUE_11067 "Potrebbe riuscire a trovare un promemoria, ma è piuttosto rischioso." + IDS_DIALOGUE_11068 "Faccia attenzione!" + IDS_DIALOGUE_11069 "Perché hanno spostato la riunione nell'edificio principale?" + IDS_DIALOGUE_11070 "Isako-san dice che il direttore la vuole tenere lì." + IDS_DIALOGUE_11071 "Sarà troppo ubriaco per arrivare fino alla casa degli ospiti." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11072 "No, ci sarebbe andato con la portantina." + IDS_DIALOGUE_11073 "Odio lavorare per lui." + IDS_DIALOGUE_11074 "Tutti lo odiano, ma Isako-san gli è debitrice." + IDS_DIALOGUE_11075 "Ottimo lavoro! Segnerò il luogo della riunione su questa mappa." + IDS_DIALOGUE_11076 "Okay, mi segua!" + IDS_DIALOGUE_11077 "Le pattuglie sono più numerose in questa zona della città." + IDS_DIALOGUE_11078 "È più sicuro evitarle." + IDS_DIALOGUE_11079 "Eviti il cancello principale. Troppe Guardie." + IDS_DIALOGUE_11080 "Buona fortuna." + IDS_DIALOGUE_11081 "Problemi?" + IDS_DIALOGUE_11082 "È tutto molto tranquillo." + IDS_DIALOGUE_11083 "Bene." + IDS_DIALOGUE_11084 "La spia è stata avvistata." + IDS_DIALOGUE_11085 "Stai in guardia." + IDS_DIALOGUE_11086 "Ho notato che è ingrassata molto, di recente." + IDS_DIALOGUE_11087 "Tutto quello che fa è stare seduta a mangiare biscotti e a guardare telefilm polizieschi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11088 "Deve trovare un uomo che si occupi di lei." + IDS_DIALOGUE_11089 "Nessuno la vuole. È troppo timida. Se fosse più carina, magari, ma non riesce nemmeno a parlare con gli uomini." + IDS_DIALOGUE_11090 "Che ne dici del figlio di Kenichi? È un po' scemo, ma è comunque carino." + IDS_DIALOGUE_11091 "Non lo vorrebbe, è troppo pignola." + IDS_DIALOGUE_11092 "Chissà cos'ha che non va." + IDS_DIALOGUE_11093 "Che ore sono?" + IDS_DIALOGUE_11094 "Non lo so. Perché?" + IDS_DIALOGUE_11095 "Devo dare il cambio a Masayo-san alle 8. Non hai un orologio?" + IDS_DIALOGUE_11096 "Non ne ho bisogno. I ninja possono capire l'ora dalla pupilla di un gatto." + IDS_DIALOGUE_11097 "Funziona solo di giorno. Inoltre che succede se non hai sottomano un gatto?" + IDS_DIALOGUE_11098 "Ecco perché ho sempre con me pesce essiccato." + IDS_DIALOGUE_11099 "Non è più semplice portare un orologio? Non fa nulla. Chiederò a qualcun altro." + IDS_DIALOGUE_11100 "È una così bella serata. Peccato dover lavorare." + IDS_DIALOGUE_11101 "Probabilmente pioverà questo fine settimana." + IDS_DIALOGUE_11102 "Vuoi un po' di tè?" + IDS_DIALOGUE_11103 "Sono di pattuglia, fra poco. Se bevo del tè dovrò andare in bagno dopo un quarto d'ora." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11104 "Quindi?" + IDS_DIALOGUE_11105 "La settimana scorsa sono finita nei guai. Non ne vale la pena." + IDS_DIALOGUE_11106 "Trovatela!" + IDS_DIALOGUE_11107 "Veloci!" + IDS_DIALOGUE_11108 "Non lasciatela fuggire!" + IDS_DIALOGUE_11109 "Cercate ovunque!" + IDS_DIALOGUE_11110 "Se riesce a scappare siamo nei guai!" + IDS_DIALOGUE_11111 "Potrebbe venire da questa parte. Assicuratevi che non vi oltrepassi!" + IDS_DIALOGUE_11112 "Hai!" + IDS_DIALOGUE_11113 "Cate, ho mandato una squadra ad assisterti, ma potrebbero metterci un po' di tempo a raggiungere il punto d'incontro. Torna al ponte e cerca di non farti vedere." + IDS_DIALOGUE_11114 "L'hanno trovata?" + IDS_DIALOGUE_11115 "Non ancora. Fai attenzione!" + IDS_DIALOGUE_11116 "Hai una graffetta?" + IDS_DIALOGUE_11117 "Le abbiamo finite." + IDS_DIALOGUE_11118 "Ne hai richieste altre?" + IDS_DIALOGUE_11119 "Certo che no." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11120 "Cosa vuoi dire? Perché no?" + IDS_DIALOGUE_11121 "Hai idea di quanti moduli si debbano compilare per avere della cancelleria? Peggio dei rifornimenti per il bagno. Non abbiamo bisogno di graffette." + IDS_DIALOGUE_11122 "E quando finisci i punti metallici?" + IDS_DIALOGUE_11123 "Posso vivere senza." + IDS_DIALOGUE_11124 "Mi fai schifo." + IDS_DIALOGUE_11125 "Fa più freddo di ieri." + IDS_DIALOGUE_11126 "Pensa, se conquistassimo l'America, la Florida sarebbe parte dell'Unione Sovietica." + IDS_DIALOGUE_11127 "L'anno scorso in vacanza mi hanno mandato a Murmansk." + IDS_DIALOGUE_11128 "Io almeno mi sono beccato Minsk." + IDS_DIALOGUE_11129 "Io sogno di essere mandato a Minsk. Non mi ricordo nemmeno più com'è andare a letto senza giacca." + IDS_DIALOGUE_11130 "Hai mandato quel rapporto sulla sicurezza?" + IDS_DIALOGUE_11131 "Ieri, perché?" + IDS_DIALOGUE_11132 "Mi sono dimenticato di compilarlo." + IDS_DIALOGUE_11133 "Cosa intendi dire?" + IDS_DIALOGUE_11134 "Non l'ho compilato." + IDS_DIALOGUE_11135 "Allora perché mi hai chiesto di spedirlo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11136 "Non lo so. Non ci ho nemmeno pensato." + IDS_DIALOGUE_11137 "Beh, dubito che lo noterà qualcuno. Non le leggono comunque, le scartoffie. Se si lamentano, ne invieremo un altro." + IDS_DIALOGUE_11138 "Mi fraintendi, compagno. Quello che voglio dire è che lo Stato È il popolo. Quando abusi del popolo abusi dello Stato." + IDS_DIALOGUE_11139 "Ma lo Stato abusa sempre del popolo. Cosa lo chiami, masochismo?" + IDS_DIALOGUE_11140 "Lo Stato non ABUSA del popolo, lo GUIDA." + IDS_DIALOGUE_11141 "Mio nonno è morto per mano della Cheka. L'hanno infilato in un barile pieno di ratti. Il torturatore diciottenne a cui era venuta l'idea ha scaldato il barile fino a quando i ratti non si sono scavati un varco all'interno del corpo di mio nonno, per sfuggire al calore. La chiami guida, quella?" + IDS_DIALOGUE_11142 "A volte sono necessarie delle misure disciplinari per proteggere l'inviolabilità dello Stato. Se ti crescesse un orribile tumore sul naso, lo taglieresti via per proteggere il tuo corpo." + IDS_DIALOGUE_11143 "Mio nonno era un contadino. È morto perché temeva la collettivizzazione." + IDS_DIALOGUE_11144 "Il popolo deve imparare a fidarsi dello Stato." + IDS_DIALOGUE_11145 "Mi pareva che avessi detto che il popolo È lo Stato." + IDS_DIALOGUE_11146 "Già, il che significa che la gente deve aver fiducia in se stessa." + IDS_DIALOGUE_11147 "Mio nonno AVEVA fiducia in se stesso. Per questo lo Stato l'ha torturato e ucciso." + IDS_DIALOGUE_11148 "Vedo che il tuo patriottismo è in discussione, compagno. Forse dovresti valutare di fare una visita al Centro aggiustamento atteggiamenti in Praga." + IDS_DIALOGUE_11149 "Ecco, quei due hanno ricominciato." + IDS_DIALOGUE_11150 "Sergei non si arrende mai, vero?" + IDS_DIALOGUE_11151 "È un giovane idealista. Dagli tempo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11152 "Qui Kominsky. Abbiamo trovato una persona sospetta alla vecchia dacia sul lago. Lo stiamo portando dentro per interrogarlo." + IDS_DIALOGUE_11153 "Cosa facevi lì?" + IDS_DIALOGUE_11154 "Vacanze." + IDS_DIALOGUE_11155 "Devi pensare che io sia scemo. Nessuno verrebbe qui in vacanza." + IDS_DIALOGUE_11156 "Vengo per cacciare." + IDS_DIALOGUE_11157 "Ammettilo, sei una spia." + IDS_DIALOGUE_11158 "E perché verrei qui a spiare?" + IDS_DIALOGUE_11159 "Perché sai che in questa base si lavora a un progetto segreto." + IDS_DIALOGUE_11160 "Davvero?" + IDS_DIALOGUE_11161 "Igor." + IDS_DIALOGUE_11162 "Cosa?" + IDS_DIALOGUE_11163 "Gli hai appena detto del progetto." + IDS_DIALOGUE_11164 "Mi ha ingannato!" + IDS_DIALOGUE_11165 "E come, sentiamo!" + IDS_DIALOGUE_11166 "Hai fatto in modo che ti dicessi del progetto Omega." + IDS_DIALOGUE_11167 "Progetto Omega?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11168 "Igor, stupido!" + IDS_DIALOGUE_11169 "Maledizione. Questo prigioniero è troppo furbo. Meglio torturarlo." + IDS_DIALOGUE_11170 "Grazie per avermi aiutato." + IDS_DIALOGUE_11171 "Assaggerò la loro vodka prima di tornare indietro." + IDS_DIALOGUE_11172 "Ci vediamo più tardi." + IDS_DIALOGUE_11173 "Non hai del lavoro da fare?" + IDS_DIALOGUE_11174 "Completa missione così ce ne possiamo andare." + IDS_DIALOGUE_11175 "Odio la Siberia." + IDS_DIALOGUE_11176 "La gente viene esiliata in Siberia dai tempi di Genghis Khan." + IDS_DIALOGUE_11177 "Però in Siberia fanno dell'ottimo burro." + IDS_DIALOGUE_11178 "Inoltre in estate, il lago Baikal è bellissimo." + IDS_DIALOGUE_11179 "Sapevi che è il più grande specchio d'acqua dolce al mondo?" + IDS_DIALOGUE_11180 "Eh, non è un brutto posto dove vivere." + IDS_DIALOGUE_11181 "Il tuo pilota è stato catturato." + IDS_DIALOGUE_11182 "Lo stanno interrogando nel magazzino." + IDS_DIALOGUE_11183 "Farai meglio a liberarlo, se vuoi tornare a casa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11184 "Hai notizie di Tania?" + IDS_DIALOGUE_11185 "Mi ha mandato una lettera la settimana scorsa. Sta con sua madre a Omsk." + IDS_DIALOGUE_11186 "Ha deciso?" + IDS_DIALOGUE_11187 "Non ancora." + IDS_DIALOGUE_11188 "Come mai ci mette tanto?" + IDS_DIALOGUE_11189 "Non piaccio ai suoi amici. Vogliono che torni con il suo ex." + IDS_DIALOGUE_11190 "Credevo che la picchiasse." + IDS_DIALOGUE_11191 "Lo faceva. Ma è un ufficiale politico. Io invece sono un soldato semplice in Siberia." + IDS_DIALOGUE_11192 "Le donne!" + IDS_DIALOGUE_11193 "Ho sentito che eri di stanza a Mosca." + IDS_DIALOGUE_11194 "Da." + IDS_DIALOGUE_11195 "E come hai fatto a finire qui?" + IDS_DIALOGUE_11196 "Ho chiesto al mio ufficiale comandante di farmi avere nuovi calzini, dopo che mi ero congelato un piede. Mi ha detto Pensi di avere freddo adesso? Vedrai quando sarai in Siberia." + IDS_DIALOGUE_11197 "Io sono finito qui per sbaglio. Ero su un treno per Petrograd e mi ha lasciato a Minsk. Ho cercato di spiegare che non ero di stanza qui, ma nessuno mi ha creduto." + IDS_DIALOGUE_11198 "Non potevano controllare?" + IDS_DIALOGUE_11199 "Solo perché tengono tutti quegli archivi non significa che ci capiscano qualcosa. Ho scoperto che nessuno ha mai denunciato la mia assenza a Petrograd." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11200 "Dov'è Mikhail?" + IDS_DIALOGUE_11201 "Servizio archiviazione nell'edificio archivi generali." + IDS_DIALOGUE_11202 "Perché? Cos'ha fatto?" + IDS_DIALOGUE_11203 "Zhukov l'ha beccato con una rivista americana." + IDS_DIALOGUE_11204 "Pornografia?" + IDS_DIALOGUE_11205 "Peggio. Pianificazione finanziaria." + IDS_DIALOGUE_11206 "Non avrei mai pensato a Mikhail come a un maiale capitalista." + IDS_DIALOGUE_11207 "Ha detto che lo usava come carta igienica perché l'avevano finita da ormai tre settimane e non voleva sporcare la patria letteratura." + IDS_DIALOGUE_11208 "E Zhukov l'ha punito comunque?" + IDS_DIALOGUE_11209 "Secondo me voleva la rivista. Non poteva confiscarla senza punire Mikhail." + IDS_DIALOGUE_11210 "Ora che mi ci fai pensare, Zhukov è vicino alla pensione." + IDS_DIALOGUE_11211 "Come si aspettano che rimaniamo in forma mangiando questa roba?" + IDS_DIALOGUE_11212 "Mi manca il borscht." + IDS_DIALOGUE_11213 "Mi manca il pirogi." + IDS_DIALOGUE_11214 "Mi manca il pane." + IDS_DIALOGUE_11215 "Ma ABBIAMO pane." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11216 "Piuttosto mangerei sassi. Puoi uccidere un coniglio, con quei panini." + IDS_DIALOGUE_11217 "Effettivamente non è una cattiva idea." + IDS_DIALOGUE_11218 "Stufato di coniglio?" + IDS_DIALOGUE_11219 "Domani sono di pattuglia al perimetro ovest. Io caccio, tu cucini." + IDS_DIALOGUE_11220 "Affare fatto." + IDS_DIALOGUE_11221 "Hanno scoperto cos'è che non va con il collegamento radio?" + IDS_DIALOGUE_11222 "Non ho sentito." + IDS_DIALOGUE_11223 "Beh, stai allerta. Potrebbe essere stato un sabotaggio." + IDS_DIALOGUE_11224 "Hai visto Mikhail?" + IDS_DIALOGUE_11225 "Stava archiviando documenti, giù in sala." + IDS_DIALOGUE_11226 "Non è qui adesso." + IDS_DIALOGUE_11227 "Forse è in bagno." + IDS_DIALOGUE_11228 "Ho già controllato." + IDS_DIALOGUE_11229 "Sta fumando una sigaretta?" + IDS_DIALOGUE_11230 "Ho cercato ovunque. È semplicemente sparito." + IDS_DIALOGUE_11231 "Potrebbe essere tornato in caserma." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11232 "Nel bel mezzo di un turno? È di servizio per altre 11 ore." + IDS_DIALOGUE_11233 "Ma come può essere svanito?" + IDS_DIALOGUE_11234 "Boris è sparito il mese scorso." + IDS_DIALOGUE_11235 "Boris è assente senza permesso. Dev'essere scappato." + IDS_DIALOGUE_11236 "Senza cappotto? O cappello?" + IDS_DIALOGUE_11237 "Questa è l'Unione delle Repubbliche Socialiste Sovietiche. La gente non svanisce senza lasciare traccia." + IDS_DIALOGUE_11238 "Dillo a Mikhail." + IDS_DIALOGUE_11239 "Sei nuovo di qui, vero?" + IDS_DIALOGUE_11240 "Mi hanno trasferito da Novgorod per lavorare al progetto Omega." + IDS_DIALOGUE_11241 "Ne ho sentito parlare. Di cosa si tratta?" + IDS_DIALOGUE_11242 "Non ne sono sicuro. Nessuno mi ha detto niente. Ho passato tre giorni a cercare di scoprire qualcosa." + IDS_DIALOGUE_11243 "Hai provato col computer M-9?" + IDS_DIALOGUE_11244 "È fuori servizio. È saltato uno dei tubi catodici e nessuno riesce a trovare un ricambio." + IDS_DIALOGUE_11245 "Ne ho visto uno in cantina, l'altro giorno." + IDS_DIALOGUE_11246 "Dove?" + IDS_DIALOGUE_11247 "Non mi ricordo esattamente. O su uno scaffale o in un armadietto." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11248 "Per quanto tempo ancora dovremo sopportarli?" + IDS_DIALOGUE_11249 "Fino alla fine del progetto." + IDS_DIALOGUE_11250 "E quanto manca?" + IDS_DIALOGUE_11251 "Non si sa. Credo che nessuno conosca nemmeno di cosa si tratti." + IDS_DIALOGUE_11252 "È meglio che arrivi presto. La mia pazienza ha un limite." + IDS_DIALOGUE_11253 "Sono sicuro che sono terrorizzati." + IDS_DIALOGUE_11254 "Dovrebbero esserlo." + IDS_DIALOGUE_11255 "Potrebbe provare a venire da questa parte. State attenti!" + IDS_DIALOGUE_11256 "Qual è la situazione?" + IDS_DIALOGUE_11257 "C'è una spia in giro." + IDS_DIALOGUE_11258 "CIA?" + IDS_DIALOGUE_11259 "Non si sa. Qui non si riescono a ottenere risposte chiare da nessuno." + IDS_DIALOGUE_11260 "Va bene! Avviciniamoci!" + IDS_DIALOGUE_11261 "Sparate per uccidere!" + IDS_DIALOGUE_11262 "Ciao... Ciao, mi chiamo... Ciao, mi chiamo Tom Goodman... Sì, sono Tom Goodman, la grande spia... Ehi, tesoro, l'hai mai fatto con una spia? Il nome è Tom Goodman... Mi chiamano Tom... Bene, ecco-merda!" + IDS_DIALOGUE_11263 "Questo è il diario audio di Tom Goodman, volume 1, 7 agosto 1965. Il mio equipaggiamento da spia è arrivato oggi per posta dal signor X. Include un manuale UNITY, un congegno per ascoltare le telefonate e questo registratore. Ho deciso di tenere un diario delle mie esperienze per quando scriverò le mie memorie. In questo modo- Maledizione!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11264 "Questo è il diario di Tom Goodman, volume 2, 14 agosto 1965. L'operazione imitazione sta procedendo meglio del previsto. Sono passate solo alcune settimane dal mio incontro con il signor X a Fort Lauderdale e sono già diventato Tom Goodman, agente segreto straordinario. Domani comincia la fase due." + IDS_DIALOGUE_11265 "Questo è il diario di Tom Goodman, volume 3, 27 agosto 1965. Ho insediato il mio quartier generale segreto in cantina. È il mio rifugio. È quello che mi rende diverso dagli uomini comuni. L'entrata è nascosta con cura, in modo che gli agenti nemici non la possano trovare. Dovranno torturarmi, se vogliono entrare." + IDS_DIALOGUE_11266 "Questo è il diario di Tom Goodman, volume 4, 17 settembre 1965. C'è un problema. Ho l'aspetto, la camminata, il modo di fare di un agente segreto, ma ancora non ho le ragazze. Il signor X non mi è stato d'aiuto. Mi chiedo se mi prenda seriamente. Pensa che io sia un pupazzo? È così, eh signor X? Pensa di potermi infilare una mano dietro e di farmi ballare? Tom Goodman non balla per nessuno." + IDS_DIALOGUE_11267 "Diario di Tom Goodman, volume 5, 9 dicembre 1965. Finalmente uno spiraglio. Non era bella e puzzava come un cavallo, ma era abbastanza donna per me. L'ultimo ostacolo tra me è il successo come super spia è stato superato. Da oggi non sono più vergine. Yiiiiihaaaaaaaaa!" + IDS_DIALOGUE_11268 "Trovatela! Presto!" + IDS_DIALOGUE_11269 "Aspetta qui." + IDS_DIALOGUE_11270 "Shh. Ascolta." + IDS_DIALOGUE_11271 "Aspetta qui. Torno fra poco." + IDS_DIALOGUE_11272 "Non può entrare." + IDS_DIALOGUE_11273 "Questo posto non fa per lei." + IDS_DIALOGUE_11274 "Mi dispiace, ma quest'area è interdetta." + IDS_DIALOGUE_11275 "Solo per impiegati." + IDS_DIALOGUE_11276 "Vada via." + IDS_DIALOGUE_11277 "Ho detto di andare via." + IDS_DIALOGUE_11278 "Psst." + IDS_DIALOGUE_11279 "Cate." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11280 "Yu hu." + IDS_DIALOGUE_11281 "Prendi quei poster con la scritta Ricercati, prima che qualcuno ci riconosca." + IDS_DIALOGUE_11282 "Ho un messaggio di Kamal: vuole incontrarti il prima possibile." + IDS_DIALOGUE_11283 "C'è una cabina del telefono fuori servizio, vicino al cinema. Ci ho lasciato un pacco per te. La combinazione è 32-46-27. Buona fortuna!" + IDS_DIALOGUE_11284 "Hai visto una busta blu?" + IDS_DIALOGUE_11285 "No, perché?" + IDS_DIALOGUE_11286 "Niente. Ma se la trovi fammelo sapere!" + IDS_DIALOGUE_11287 "Hai visto una busta blu da qualche parte?" + IDS_DIALOGUE_11288 "Una busta blu? E cosa c'è dentro?" + IDS_DIALOGUE_11289 "Uh, niente di importante. Ma portamela subito se la trovi." + IDS_DIALOGUE_11290 "Buste blu in giro, per caso?" + IDS_DIALOGUE_11291 "Quella che ti ha dato il capo?" + IDS_DIALOGUE_11292 "Come? Oh, credo di sì." + IDS_DIALOGUE_11293 "Non l'ho vista. Dev'essere molto importante, eh?" + IDS_DIALOGUE_11294 "Beh, no, veramente no. Ma credo che dovrei trovarla." + IDS_DIALOGUE_11295 "Sto cercando una busta blu. L'hai vista?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11296 "No." + IDS_DIALOGUE_11297 "Sei assolutamente sicuro?" + IDS_DIALOGUE_11298 "Sì." + IDS_DIALOGUE_11299 "Shiva mi protegga dalla mia stupidità." + IDS_DIALOGUE_11300 "Aaaaaaarrrrrggghhhhhhh!!!" + IDS_DIALOGUE_11301 "Cosa... sono... io?" + IDS_DIALOGUE_11302 "Aiuta... mi..." + IDS_DIALOGUE_11303 "Gyaaahhhhh!!!" + IDS_DIALOGUE_11304 "Chi sei?" + IDS_DIALOGUE_11305 "Chi mi ha fatto questo?" + IDS_DIALOGUE_11306 "Abigail, sei tu?" + IDS_DIALOGUE_11307 "Abigail?!?" + IDS_DIALOGUE_11308 "Abigail!!!" + IDS_DIALOGUE_11309 "Aiutami!!!" + IDS_DIALOGUE_11310 "Guarda cos'hanno fatto!!!" + IDS_DIALOGUE_11311 "Abby!?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11312 "Per favore!!!" + IDS_DIALOGUE_11313 "Dovrebbero essere seduti a un tavolo bene in vista." + IDS_DIALOGUE_11314 "Mi dispiace impormi così." + IDS_DIALOGUE_11315 "Sono sicuro di riuscire a trovare un modo per sistemare quei terribili super soldati, una volta che avrò letto questi documenti." + IDS_DIALOGUE_11316 "Lo spero proprio." + IDS_DIALOGUE_11319 "Dì pure quello che vuoi, ma questo posto ha molto più senso dal punto di vista degli affari." + IDS_DIALOGUE_11320 "Hai perso di vista il punto. Chiunque può costruire una base subacquea. Solo una o due organizzazioni al mondo possono permettersi una base spaziale." + IDS_DIALOGUE_11321 "È un privilegio che si paga caro. Quell'ammasso di ferraglia ci ha quasi fatto fallire. Chiunque l'abbia fatto saltare ci ha fatto un favore." + IDS_DIALOGUE_11322 "Già, un grande favore." + IDS_DIALOGUE_11323 "Sono serio. Il rimborso dell'assicurazione è bastato per pagare questa base, il sottomarino super segreto e i nuovi uffici a Lisbona, Giacarta e Orlando. Inoltre ci hanno pagato tutti i bonus, per la prima volta." + IDS_DIALOGUE_11324 "Tutto molto bello, siamo d'accordo, ma continuo a dire che la stazione spaziale ci dava qualcosa in più. È una questione di immagine. La gente vuole lavorare per delle organizzazioni di successo. Una stazione spaziale è un segno di successo." + IDS_DIALOGUE_11325 "Fino a quando non ti fa fallire." + IDS_DIALOGUE_11326 "Mi arrendo. Lasciamo perdere." + IDS_DIALOGUE_11327 "Questa è la quinta volta che ho dovuto cambiare ufficio da quando ho iniziato a lavorare qui." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11328 "La direzione vuole mantenere unite le squadre. Per l'efficienza." + IDS_DIALOGUE_11329 "Non sono loro a dover impacchettare tutta la loro roba e a trasportarla per i corridoi ogni tre mesi." + IDS_DIALOGUE_11330 "Compila un modulo di reclamo." + IDS_DIALOGUE_11331 "E finire come Pekoe? No, grazie. Puoi ancora vederlo, fuori dall'oblò al secondo livello. O almeno quello che rimane di lui, quello che non hanno mangiato i pesci." + IDS_DIALOGUE_11332 "Va bene, va bene. Ho appena mangiato." + IDS_DIALOGUE_11333 "Ehi, Barbagallo, finora ti piace H.A.R.M.?" + IDS_DIALOGUE_11334 "È un'organizzazione di classe, rispetto ad alcuni posti dove ho lavorato." + IDS_DIALOGUE_11335 "Sei stato in CCI, no?" + IDS_DIALOGUE_11336 "Già, e alla Fabbrica d'Inganni. Manica di perdenti. È bello lavorare con dei professionisti." + IDS_DIALOGUE_11337 "Siamo in giro da un po', ormai. In questo giro o ti adatti o muori." + IDS_DIALOGUE_11338 "Hai ragione. L'unica lamentela che ho riguarda il saluto. È un po' complicato e ho sempre paura di dimenticarmene un pezzo." + IDS_DIALOGUE_11339 "Qualcuno te ne ha spiegato il significato?" + IDS_DIALOGUE_11340 "Che significato?" + IDS_DIALOGUE_11341 "Guarda." + IDS_DIALOGUE_11342 "La prima parte del saluto è il cuore. Indica il desiderio. La seconda è il mondo. L'ultima parte significa afferra, o prendi." + IDS_DIALOGUE_11343 "Beh, adesso ha molto più senso. Grazie!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11344 "Quando vuoi." + IDS_DIALOGUE_11345 "Ehi, congratulazioni per la promozione." + IDS_DIALOGUE_11346 "Già, grazie." + IDS_DIALOGUE_11347 "Cosa c'è che non va?" + IDS_DIALOGUE_11348 "Non so. È un incarico di grande responsabilità." + IDS_DIALOGUE_11349 "Ma dai, te la caverai." + IDS_DIALOGUE_11350 "Se lo dici tu." + IDS_DIALOGUE_11351 "Di cosa ti preoccupi? Vai d'accordo con tutti." + IDS_DIALOGUE_11352 "Lo so." + IDS_DIALOGUE_11353 "E allora, qual è il problema?" + IDS_DIALOGUE_11354 "Possono essere totalmente onesto?" + IDS_DIALOGUE_11355 "Ma certo!" + IDS_DIALOGUE_11356 "È la mia risata. Non credo che sia abbastanza malvagia." + IDS_DIALOGUE_11357 "Sentiamola." + IDS_DIALOGUE_11358 "Allora?" + IDS_DIALOGUE_11359 "Beh, dovresti lavorarci un po'. Prova con un tono più profondo." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11360 "(risata malvagia scoraggiata, un po' più profonda)" + IDS_DIALOGUE_11361 "Forse hai solo bisogno di motivarti. Come un attore. Supponi che una mezza calzetta di spia si presenti e dica di volerti arrestare. Solo che, invece di una pistola, ha in mano una banana." + IDS_DIALOGUE_11362 "Okay. Ci provo." + IDS_DIALOGUE_11363 "Vedi? Era perfetta." + IDS_DIALOGUE_11364 "Grazie mille! Ti devo un favore." + IDS_DIALOGUE_11365 "Non stupirti se vengo a riscuotere, adesso che sei un manager." + IDS_DIALOGUE_11366 "Rick dice che hai dormito ancora nell'ingresso, stanotte." + IDS_DIALOGUE_11367 "Non sono riuscito ad aprire la porta. Sono quelle stupide serrature ad attivazione vocale." + IDS_DIALOGUE_11368 "Già, il sistema non riesce a gestire le fluttuazioni dell'intonazione o della velocità, quindi devi dire le cose esattamente nello stesso modo ogni volta." + IDS_DIALOGUE_11369 "E come dovrei riuscirci?" + IDS_DIALOGUE_11370 "Facile. Procurati un registratore. Funziona che è una meraviglia." + IDS_DIALOGUE_11371 "È contro il regolamento." + IDS_DIALOGUE_11372 "Forse, ma dormire nell'ingresso è contro i miei principi." + IDS_DIALOGUE_11373 "Queste uniformi hanno un aspetto sicuramente migliore di quelle vecchie, ma il tessuto è veramente fastidioso." + IDS_DIALOGUE_11374 "Sì, hanno usato quasi tutto il budget la prima volta, quindi non potevano permettersi lo stesso materiale." + IDS_DIALOGUE_11375 "Spero che non mi venga l'orticaria." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11376 "Hai sentito che abbiamo fatto man bassa di oscar malvagi?" + IDS_DIALOGUE_11377 "Sì, ma non mi quadra. Il progetto Lambda è stato un disastro." + IDS_DIALOGUE_11378 "Vero, ma nessun'altra organizzazione è riuscita a fare un colpo decente, l'anno scorso." + IDS_DIALOGUE_11379 "Effettivamente..." + IDS_DIALOGUE_11380 "Abbiamo perso contro l'Alleanza Malvagia per il design del logo e contro la Miseria SpA per l'abbigliamento, ma devi ammettere che Lambda mostrava un sacco di ambizione ed eleganza." + IDS_DIALOGUE_11381 "Ora aspettiamo di vedere cosa succederà il prossimo anno. Credo che Omega attirerà un sacco d'attenzione." + IDS_DIALOGUE_11382 "Ci dev'essere un altro modo per uscire di qui!" + IDS_DIALOGUE_11383 "A mia madre verrà un colpo. Il mio fratello maggiore era sulla stazione spaziale, quando si è disintegrata." + IDS_DIALOGUE_11384 "Smettila di parlare in quel modo. Ce la faremo a uscire. Dobbiamo solo usare la testa." + IDS_DIALOGUE_11385 "Ho bisogno che disattivi il sistema di sicurezza." + IDS_DIALOGUE_11387 "Circoscrivete quel fuoco!" + IDS_DIALOGUE_11388 "Ci stiamo provando!" + IDS_DIALOGUE_11389 "Provate di più! Quelle fiamme stanno consumando il nostro ossigeno." + IDS_DIALOGUE_11390 "Dove diavolo è quella stupida porta segreta, eh?" + IDS_DIALOGUE_11391 "Cerca di calmarti." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11392 "Moriremo a meno che non riusciamo a uscire da questa trappola e mi dici di calmarmi?" + IDS_DIALOGUE_11393 "Farti prendere dal panico non ti aiuterà." + IDS_DIALOGUE_11394 "Wow, che intuizione accecante! Il panico non aiuta? Oh, allora forse smetto. Peccato che sia nel panico e che quindi non abbia il controllo, stupido idiota!" + IDS_DIALOGUE_11395 "Sigillate l'uscita principale." + IDS_DIALOGUE_11396 "Bene, sparpagliatevi e cercate." + IDS_DIALOGUE_11397 "Richards, prendi Mulroy e andate a dare una mano a difendere la centrale elettrica. Non possiamo permetterci di farla entrare là dentro." + IDS_DIALOGUE_11398 "Tutte le squadre di sicurezza a rapporto immediatamente." + IDS_DIALOGUE_11399 "Voglio che la ragazza venga trovata immediatamente." + IDS_DIALOGUE_11400 "Signorina Archer, pare che io l'abbia sottovalutata. Non rifarò lo stesso errore." + IDS_DIALOGUE_11401 "Perché non è ancora stata imprigionata?" + IDS_DIALOGUE_11402 "Signorina Archer, sono Dmitrji Volkov. Attendo con impazienza il nostro prossimo incontro. Presumo che avverà prima di quanto si aspetti." + IDS_DIALOGUE_11403 "Direttore, sua madre in attesa sulla linea 2." + IDS_DIALOGUE_11404 "Oh, maledizione." + IDS_DIALOGUE_11405 "Attenzione, a tutto il personale. Le squadre d'assalto da 1 a 4 si presentino al terminale B per ricevere l'equipaggiamento per la missione." + IDS_DIALOGUE_11406 "Siamo a condizione Omega." + IDS_DIALOGUE_11407 "Beh, saluto tutti, devo andare a far iniziare una guerra." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11408 "Detrarremo dai vostri salari un giorno di paga per ogni minuto di ritardo nella cattura della signorina Archer. Forse QUESTO vi motiverà." + IDS_DIALOGUE_11409 "Ehilà Klaus, come va?" + IDS_DIALOGUE_11410 "Bene, grazie. E a te?" + IDS_DIALOGUE_11411 "Ah, sto cacciando quella spia. Non voglio perdere tutti i miei soldi." + IDS_DIALOGUE_11412 "Forse dovrei aiutare, ma sono un po' demotivato in questo momento." + IDS_DIALOGUE_11413 "Davvero? Qual è il problema?" + IDS_DIALOGUE_11414 "Le tecniche di motivazione del direttore non mi ispirano particolarmente. Ho delle tendenze ribelli che mi fanno risentire quando vengo minacciato o mi sento avvilito." + IDS_DIALOGUE_11415 "Ti capisco, ma a volte è necessario ingoiare l'orgoglio." + IDS_DIALOGUE_11416 "Vero, ma credo anche che sia importante sostenere i propri principi. Se dò la caccia a una spia come mi è stato ordinato, sotto la minaccia di una deduzione dal salario, invio un messaggio di accettazione delle pratiche punitive." + IDS_DIALOGUE_11417 "Mi dispiace dirtelo così, amico, ma questo è il modo in cui tutte queste organizzazioni criminali vengono gestite. La maggior parte di questi tizi non ha precedenti esperienza gestionali, arrivano da famiglie devastate, non sono andati all'università e non riescono ad accettare le critiche senza dar fuori di matto. È una noia, ma fa parte di questo mondo." + IDS_DIALOGUE_11418 "Solo perché il comportamento è istituzionalizzato non significa che sia tollerabile. Devi chiedere a te stesso quale sia il tuo scopo e come raggiungerlo al meglio. Se sei un manager e vuoi che i tuoi impiegati cerchino la spia, devi usare un incentivo o una punizione, come motivazione. E gli studi mostrano come una punizione sia molto meno efficace." + IDS_DIALOGUE_11419 "Hai ragione. Ma da queste parti la punizione può essere permanente." + IDS_DIALOGUE_11420 "Beh, devi esercitare la facoltà di giudizio, chiaramente. In questa situazione il rischio è puramente finanziario, così ho deciso di rischiare le conseguenze. Se fosse una questione di vita o di morte probabilmente farei quello che mi è stato detto." + IDS_DIALOGUE_11421 "Almeno sei prudente." + IDS_DIALOGUE_11422 "Devi esserlo." + IDS_DIALOGUE_11423 "Va bene, amico, io vado in cerca. Tu stai attento." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11424 "Dove crede di andare?" + IDS_DIALOGUE_11425 "Abbiamo dei conti in sospeso." + IDS_DIALOGUE_11426 "L'ultima volta che ci siamo incontrati eravamo sotto il ghiaccio. Questa volta, sopra un lago di lava artificiale. Com'è strana la vita." + IDS_DIALOGUE_11427 "Inseguitela! Non lasciatela scappare!" + IDS_DIALOGUE_11428 "Va bene, tenete gli occhi aperti!" + IDS_DIALOGUE_11429 "Sparpagliatevi e muovetevi verso le zone assegnate." + IDS_DIALOGUE_11430 "Manteniamo questa posizione." + IDS_DIALOGUE_11431 "Dobbiamo incontrarci con la squadra 4." + IDS_DIALOGUE_11432 "Lo faremo, ma prima dobbiamo assicurarci che il perimetro sia sicuro." + IDS_DIALOGUE_11433 "Oh no!" + IDS_DIALOGUE_11434 "Cosa!" + IDS_DIALOGUE_11435 "Ho lasciato il mio cestino del pranzo nel sottomarino!" + IDS_DIALOGUE_11436 "Non hai eseguito i controlli della lista pre-missione?" + IDS_DIALOGUE_11437 "Non ne ho avuto il tempo. Mi hanno fatto pulire i bagni. Cavoli, ho quasi dimenticato di prendere la pistola." + IDS_DIALOGUE_11438 "Beh, ora è troppo tardi per tornare indietro. Ti darò metà del mio panino." + IDS_DIALOGUE_11439 "Amico, ti devo un favore." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11440 "Abbiamo un problema. Pare che l'agente Archer sia caduta in trappola. Era ricercata da delle ninja." + IDS_DIALOGUE_11441 "Dovrebbe incontrarsi con l'agente Yamata vicino alla cascata dall'altra parte del villaggio. Trovatela e portatela fuori di lì!" + IDS_DIALOGUE_11442 "Spie! Fermatele!" + IDS_DIALOGUE_11443 "Dov'è la ragazza?" + IDS_DIALOGUE_11444 "Dev'essere riuscita a passare!" + IDS_DIALOGUE_11445 "Cercate ovunque. Forse si sta nascondendo." + IDS_DIALOGUE_11446 "Allora?" + IDS_DIALOGUE_11447 "Nessun segno di lei." + IDS_DIALOGUE_11448 "Continuate a cercare." + IDS_DIALOGUE_11449 "Eccola lì! Spero che siate ancora in tempo." + IDS_DIALOGUE_11450 "L'auto è fuori uso. Dovrete riportarla al nascondiglio e aspettare aiuto." + IDS_DIALOGUE_11451 "Eccoli là!" + IDS_DIALOGUE_11452 "Non lasciateli scappare!" + IDS_DIALOGUE_11453 "Dove sono tutti?" + IDS_DIALOGUE_11454 "Quelle stupide avevano l'ordine di pattugliare questa zona." + IDS_DIALOGUE_11455 "Devono essere andate alla cascata." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11456 "O forse hanno avuto dei problemi. Tenete gli occhi aperti." + IDS_DIALOGUE_11457 "Cosa succede qui? Perché la gente non è al proprio posto?" + IDS_DIALOGUE_11458 "La spia è fuggita. La stanno inseguendo." + IDS_DIALOGUE_11459 "Qualcuno deve pur fare la guardia alla proprietà. E se è un trucco? Forse sta tornando." + IDS_DIALOGUE_11460 "Non ci avevo pensato." + IDS_DIALOGUE_11461 "Rimani qui. Vedo se riesco a trovare qualcun altro. Se ci sono problemi, suona l'allarme." + IDS_DIALOGUE_11462 "Ben fatto! Gli aiuti stanno arrivando." + IDS_DIALOGUE_11463 "Il lancio non è andato bene come speravano. Il punto di incontro è una dacia isolata vicino alla base. Usa la radio che troverai per contattare il controllo missione e avere ulteriori istruzioni." + IDS_DIALOGUE_11464 "Qui Foxhound." + IDS_DIALOGUE_11465 "Ora che l'agente Archer ha recuperato dal computer della base sovietica le istruzioni di cui avevamo bisogno, vogliamo che fermiate quest'operazione una volta per tutte." + IDS_DIALOGUE_11466 "Sono già arrivati dei rinforzi alla base, quindi entrare non sarà una passeggiata. Fate quello che serve. Dovete distruggere quel computer." + IDS_DIALOGUE_11467 "Dov'è Vladimir?" + IDS_DIALOGUE_11468 "L'hanno mandato all'edificio archivi principale." + IDS_DIALOGUE_11469 "Pensavo che quella zona fosse interdetta." + IDS_DIALOGUE_11470 "Lo è. È lì per aiutare a valutare il danno." + IDS_DIALOGUE_11471 "Povero idiota. Probabilmente non lo vedremo più." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11472 "Non abbiamo bisogno di esplosivi. Abbiamo bisogno di persone. Dobbiamo fare un inventario dei documenti per vedere cosa manca. In questo posto ci sono registrazioni che risalgono alla rivoluzione." + IDS_DIALOGUE_11473 "Ecco cosa amo dell'Unione Sovietica. Chiedi contabili, ti mandano nitroglicerina." + IDS_DIALOGUE_11474 "Allora forse dovremmo chiedere nitroglicerina." + IDS_DIALOGUE_11475 "Ho paura che ne manderebbero altra." + IDS_DIALOGUE_11476 "Siamo al sicuro con quella roba in giro?" + IDS_DIALOGUE_11477 "L'ho fatta mettere in cantina. Dovremmo essere al sicuro fino a quando non riusciremo a spedirla da qualche altra parte." + IDS_DIALOGUE_11478 "Potrebbero volerci delle settimane per fare approvare le scartoffie." + IDS_DIALOGUE_11479 "Allora è meglio cominciare." + IDS_DIALOGUE_11480 "Non sto scherzando. Se ti trovo ancora qui a fumare ti porto fuori e ti faccio diventare legna da ardere." + IDS_DIALOGUE_11481 "Va bene, va bene, ho capito." + IDS_DIALOGUE_11482 "Sigarette ed esplosivi non vanno d'accordo." + IDS_DIALOGUE_11483 "Questa roba mi rende nervoso. Voglio pattugliare di fuori." + IDS_DIALOGUE_11484 "Stai zitto e fai quello che ti viene ordinato." + IDS_DIALOGUE_11485 "Quegli idioti! Cos'hanno fatto?" + IDS_DIALOGUE_11486 "Fortificate il perimetro. Potrebbe essere stato un incidente, ma anche sabotaggio. Nessuno lascia la base!" + IDS_DIALOGUE_11487 "Molto ingegnoso! Performance notevole." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11488 "L'agente Archer avrà bisogno di una parola d'ordine per infiltrarsi nel quartier generale H.A.R.M." + IDS_DIALOGUE_11489 "L'amico di Magnus Armstrong, Kamal, ci aiuterà. Per prima cosa dovrai trovarlo. Dovrebbe aver lasciato un promemoria per te." + IDS_DIALOGUE_11490 "Nessuno passa da questo cancello senza pagarmi." + IDS_DIALOGUE_11491 "Un uomo di nome Balaji Malpani è il responsabile della parola d'ordine e ne deve inventare una nuova ogni giorno. Ottieni una sua foto." + IDS_DIALOGUE_11492 "Ha un appartamento nell'hotel Ospite Felice. Cercalo lì." + IDS_DIALOGUE_11493 "Balaji visita la sua amante ogni pomeriggio. Cerca di localizzare il suo appartamento. All'esterno tiene sempre dei fiori." + IDS_DIALOGUE_11494 "C'è un balcone di fronte alla sua stanza. Dovresti poter fotografare Balaji da lì." + IDS_DIALOGUE_11495 "Non saresti dovuto venire. Sei un uomo sposato." + IDS_DIALOGUE_11496 "Ma non riesco a resistere alle tue grazie, mia delicata pesca. Sono maledetto da un amore proibito. Pulsa nei miei lombi." + IDS_DIALOGUE_11497 "Già, me ne sono accorta." + IDS_DIALOGUE_11498 "Cosa devo fare per convincerti del mio amore?" + IDS_DIALOGUE_11499 "Non devi convincere me, ma mio padre." + IDS_DIALOGUE_11500 "Tuo padre? È così all'antica. Non sarà soddisfatto se non dal matrimonio." + IDS_DIALOGUE_11501 "Se mi ami perché non lo provi?" + IDS_DIALOGUE_11502 "È complicato." + IDS_DIALOGUE_11503 "Mi stai usando." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11504 "Non dirlo in questo modo. Suona così... volgare." + IDS_DIALOGUE_11505 "Esci." + IDS_DIALOGUE_11506 "Perché dobbiamo sempre litigare? Abbracciamoci e facciamo uscire dalle nostre menti questi triviali problemi." + IDS_DIALOGUE_11507 "Il tuo scopo principale è di evacuare Magnus Armstrong." + IDS_DIALOGUE_11508 "Inoltre, cerca ulteriori informazioni sul progetto Omega." + IDS_DIALOGUE_11509 "Quando hai finito, piazza gli esplosivi e radi al suolo la base." + IDS_DIALOGUE_11510 "Fai attenzione. A quest'ora il posto brulicherà di rinforzi H.A.R.M." + IDS_DIALOGUE_11511 "Cos'è successo al generatore?" + IDS_DIALOGUE_11512 "Ha finito il carburante." + IDS_DIALOGUE_11513 "Rifategli il pieno!" + IDS_DIALOGUE_11514 "Con cosa!" + IDS_DIALOGUE_11515 "Ci dev'essere del carburante in giro, da qualche parte. Cercate una tanica." + IDS_DIALOGUE_11516 "Amico, questo posto è un macello. Ci vorranno settimane per valutare i danni." + IDS_DIALOGUE_11517 "Di sicuro mi auguro che scoprano perché il super soldato è diventato incontrollabile. Non possiamo permetterci che quelle cose impazziscano una settimana sì e una no." + IDS_DIALOGUE_11518 "Attenzione, a tutto il personale, a quanto pare abbiamo ancora un problema coi mimi." + IDS_DIALOGUE_11519 "Squadre d'intercettazione, fate rapporto al direttore provvisorio Lawrie nel ristorante." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11520 "Bene, ce l'hai fatta. L'agente Archer è appena partita per una missione, quindi dovrai pensare tu al rastrellamento." + IDS_DIALOGUE_11521 "I mimi si sono impadroniti dell'ufficio della sicurezza." + IDS_DIALOGUE_11522 "Stanno prendendo degli ostaggi e piazzando bombe in tutto l'edificio." + IDS_DIALOGUE_11523 "Liberati di quei mimi." + IDS_DIALOGUE_11524 "Aiuto!" + IDS_DIALOGUE_11525 "I mimi mi stanno importunando!" + IDS_DIALOGUE_11526 "Oh grazie! Il dolore era insopportabile!" + IDS_DIALOGUE_11527 "Allontanatevi, sporchi mimi!" + IDS_DIALOGUE_11528 "Non avete alcuna pietà?" + IDS_DIALOGUE_11529 "Le devo un favore!" + IDS_DIALOGUE_11530 "Ciò di cui voi signorine avete bisogno è un bel calcione." + IDS_DIALOGUE_11531 "Toglimi le zampette effemminate di dosso, pervertito." + IDS_DIALOGUE_11532 "Io dico: dopo aver sistemato i comunisti, marciamo sulla Francia e riuniamo il resto di questi pagliacci. Faremmo un favore al mondo intero." + IDS_DIALOGUE_11533 "Ancora tu? Allontanati dal microfono, francesino! Ahia!" + IDS_DIALOGUE_11534 "Oh ho! Ancora una volta, mi sono impadronito del microfono." + IDS_DIALOGUE_11535 "Presto quest'agenzia sarà un grosso cratere. Non è un'idea carina?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11536 "Voi agenti segreti non potete competere con i miei letali mimi." + IDS_DIALOGUE_11537 "Non potete capire la sottile arte della pantomima. Mi fate pena." + IDS_DIALOGUE_11538 "Maledetti! Maledico le vostre madri!" + IDS_DIALOGUE_11539 "Non è finita qui, sentirete ancora parlare di Pierre, il Re dei mimi!" + IDS_DIALOGUE_11540 "Sono dappertutto! Fa' qualcosa!" + IDS_DIALOGUE_11541 "Aiuto, mi stanno tenendo in ostaggio!" + IDS_DIALOGUE_11542 "Per favore, non torturatemi più!" + IDS_DIALOGUE_11543 "Oh, grazie! Ho una bassissima soglia di sopportazione per l'arte!" + IDS_DIALOGUE_11544 "H.A.R.M. e l'Alleanza Malvagia stanno per raggiungere un accordo di reciproca assistenza. Non possiamo lasciare che succeda." + IDS_DIALOGUE_11545 "Fortunatamente, un agente H.A.R.M. deluso ha acconsentito di aiutarci. Il suo nome è Kamal. Trovalo e vedi cosa ti offre." + IDS_DIALOGUE_11546 "Pensavo che avremmo lavorato insieme." + IDS_DIALOGUE_11547 "Lo facciamo, ma questa trasgressione non può restare impunita. Quest'uomo, Kamal, ha insultato il nostro onore. Non gli deve essere permesso di vivere." + IDS_DIALOGUE_11548 "Non credo che quelli di H.A.R.M. saranno contenti se lo uccidiamo." + IDS_DIALOGUE_11549 "Ecco perché lo faremo sembrare un incidente." + IDS_DIALOGUE_11550 "Ma hai mandato una squadra di assassini a farlo a pezzi. Non penso che crederanno a un incidente." + IDS_DIALOGUE_11551 "Stupido, diremo loro che pensavamo fosse qualcun altro. Inoltre non lasceranno che un piccolo omicidio influenzi questo trattato." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11552 "Grazie per avermi salvato la vita." + IDS_DIALOGUE_11553 "Sia H.A.R.M. che l'Alleanza Malvagia hanno un quartier generale in questa zona. Cerca lì le informazioni per causare la rottura fra di loro." + IDS_DIALOGUE_11554 "L'Alleanza Malvagia ha la base in un cinema." + IDS_DIALOGUE_11555 "Il quartier generale H.A.R.M. è" + IDS_DIALOGUE_11556 "Non mi piace l'idea di unire le nostre forze coi tipi di H.A.R.M." + IDS_DIALOGUE_11557 "Perché no?" + IDS_DIALOGUE_11558 "Non mi fido di loro. Sai cosa significa il loro nome?" + IDS_DIALOGUE_11559 "No." + IDS_DIALOGUE_11560 "Nemmeno io. E la cosa non mi piace." + IDS_DIALOGUE_11561 "Sono di terza categoria." + IDS_DIALOGUE_11562 "E allora? Hanno il proprio cinema. C'è uno spettacolo ogni sabato sera." + IDS_DIALOGUE_11563 "Anche questo è vero, però sono preoccupato per la nostra reputazione. Il nome H.A.R.M. incute paura nel cuore della gente. Nessuno prende invece sul serio l'Alleanza Malvagia. Sono un gruppo di piagnoni oziosi con un sacco di problemi di diritto." + IDS_DIALOGUE_11564 "Non preoccuparti. Tutti daranno per scontato che li abbiamo inglobati in maniera ostile." + IDS_DIALOGUE_11565 "Non condivido il tuo ottimismo. Credo che un sacco di persone si chiederà se abbiamo perso il coraggio. Se fosse un'acquisizione ostile perché li lasceremmo mantenere la propria identità?" + IDS_DIALOGUE_11566 "Mmm, non ci avevo pensato." + IDS_DIALOGUE_11567 "I dati indicano che H.A.R.M. ha inviato una squadra di assassini a rovinare le vacanze del signor Jones. Sta a te impedire che questo accada." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11568 "È molto importante che il signor Jones non sappia che siamo qui, o la sua vacanza sarà rovinata." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11600 "Sei la nuova segretaria?" + IDS_DIALOGUE_11601 "Mi servirebbe un massaggio." + IDS_DIALOGUE_11602 "Sei capace di farmi un caffè?" + IDS_DIALOGUE_11603 "Non sei una segretaria molto brava." + IDS_DIALOGUE_11604 "Ti dico che stanno pianificando qualcosa di grosso. E la direzione non muove un dito per scoprire di cosa si tratti." + IDS_DIALOGUE_11605 "Cosa ti aspetti?" + IDS_DIALOGUE_11606 "Che facciano qualcosa!" + IDS_DIALOGUE_11607 "Tipo? Assaltare il loro quartier generale? Ricordi cos'è successo l'ultima volta che ci abbiamo provato? Ci arrivano ancora pezzi di Vijay via posta." + IDS_DIALOGUE_11608 "Meglio che starsene qui senza fare niente." + IDS_DIALOGUE_11609 "Sono sicuro che hanno un piano. Vedrai. Andrà tutto bene." + IDS_DIALOGUE_11610 "Se pensi che mi faccia stare meglio, non funziona." + IDS_DIALOGUE_11611 "Ti dico che questa donna mi sta facendo impazzire." + IDS_DIALOGUE_11612 "Ti avevo detto di non sposarla." + IDS_DIALOGUE_11613 "Non mia moglie, idiota. Sua madre! Era dolce e amichevole fino al matrimonio e dopo si è trasformata in un demone. Non fa altro che lamentarsi." + IDS_DIALOGUE_11614 "Forse dovresti ricordarle che vive a casa TUA." + IDS_DIALOGUE_11615 "Sei matto? Mi ucciderebbe." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11616 "Credo che tu abbia bisogno di essere più aggressivo." + IDS_DIALOGUE_11617 "Non conosci questa donna. È pericolosa." + IDS_DIALOGUE_11618 "Lavori per una delle organizzazioni più malvagie del pianeta. Se qualcuno a casa tua è pericoloso, amico mio, allora quello sei tu." + IDS_DIALOGUE_11619 "Sai, se la metti su questo piano, di colpo sembra tutto più logico. Come posso ripagarti?" + IDS_DIALOGUE_11620 "Non preoccuparti. Odio vedere un amico castrato." + IDS_DIALOGUE_11621 "Che bella giornata." + IDS_DIALOGUE_11622 "Salve." + IDS_DIALOGUE_11623 "Buongiorno." + IDS_DIALOGUE_11624 "Ciao." + IDS_DIALOGUE_11625 "Trovi il mio accento offensivo?" + IDS_DIALOGUE_11626 "Cosa? Perché dovrei?" + IDS_DIALOGUE_11627 "Non è reale." + IDS_DIALOGUE_11628 "Non capisco." + IDS_DIALOGUE_11629 "Sono nato e cresciuto negli U.S.A." + IDS_DIALOGUE_11630 "Cos-? Com-? Ma-?" + IDS_DIALOGUE_11631 "I miei genitori si sono trasferiti a Filadelfia negli anni 30. Sono cresciuto lì. Scuole americane, amici americani..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11632 "E allora cosa ci fai qui?" + IDS_DIALOGUE_11633 "Ho sempre voluto vedere da dove venisse la mia famiglia. Così mi sono fatto trasferire." + IDS_DIALOGUE_11634 "E perché cambi l'accento?" + IDS_DIALOGUE_11635 "Per inserirmi. Non sono sicuro di come reagirebbe la gente se scoprisse che sono uno straniero. Ma forse esagero." + IDS_DIALOGUE_11636 "Devo farti una confessione. Sono di Detroit." + IDS_DIALOGUE_11637 "Ma stai scherzando!" + IDS_DIALOGUE_11638 "Non penso nemmeno che siamo gli unici. Quando Vijay si ubriaca suona come uno dell'Oklahoma. E sono quasi sicuro che Deepak sia inglese." + IDS_DIALOGUE_11639 "Beh, forse è meglio mantenere le apparenze." + IDS_DIALOGUE_11640 "Bella pensata, amico mio." + IDS_DIALOGUE_11641 "Ho avuto un altro demerito." + IDS_DIALOGUE_11642 "Non dirmelo, fammi indovinare. Pensa che il tuo camminare controvento non sia abbastanza realistico." + IDS_DIALOGUE_11643 "Oui. Vuole un vento più forte." + IDS_DIALOGUE_11644 "Ha studiato con Deveraux." + IDS_DIALOGUE_11645 "Beh, questo spiega tutto. Deveraux crede che il vento sia una tempesta. Il mio istruttore ha studiato con Jarre. Jarre preferisce una giocosa brezza primaverile." + IDS_DIALOGUE_11646 "Mi è stato insegnato che il vento dev'essere vivace ma mai scortese." + IDS_DIALOGUE_11647 "Quand'ero giovane non mi rendevo conto che ci fosse tanta filosofia nella pantomima." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11648 "Non vedo perché dovrei farlo." + IDS_DIALOGUE_11649 "Cosa vuoi dire? È il tuo lavoro." + IDS_DIALOGUE_11650 "Non mi sono arruolato per pulire le latrine. L'ho fatto per perpetrare atti malvagi." + IDS_DIALOGUE_11651 "Mostrami dove il tuo contratto dice che puoi fare solo le cose divertenti." + IDS_DIALOGUE_11652 "Senti, sono un esperto in quello che faccio, e cioè nel causare miseria e sofferenza. Sono stato assunto per rendere infelice la gente. Vuoi che pulisca la latrina? Assumi un custode." + IDS_DIALOGUE_11653 "Sicuro, se non ti dispiace la diminuzione di stipendio per coprire il suo costo." + IDS_DIALOGUE_11654 "Perché dovrei pagarlo io?" + IDS_DIALOGUE_11655 "Perché sei quello che non vuole aiutare. Noialtri puliamo le latrine quand'è il nostro turno. Se non vuoi farlo, assumi un custode con il tuo salario." + IDS_DIALOGUE_11656 "Non è giusto!" + IDS_DIALOGUE_11657 "Perché non vai a dirlo al signor Volkov? Sono sicuro che avrà una propria opinione in merito." + IDS_DIALOGUE_11658 "Non pulisco." + IDS_DIALOGUE_11659 "Accomodati. Solo ricorda che la gente che non pulisce viene ripulita." + IDS_DIALOGUE_11660 "È una minaccia?" + IDS_DIALOGUE_11661 "È un fatto." + IDS_DIALOGUE_11662 "Ultimamente stavo pensando... ti ricordi quel tizio, Paulo?" + IDS_DIALOGUE_11663 "Dici quello che ha seccato Johnny in Spagna?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11664 "Sì, lui." + IDS_DIALOGUE_11665 "E chi se lo dimentica? Ricordo l'anno scorso alla festa di Natale. Hai avuto un'ovazione quando hai descritto cosa gli avresti fatto. La fantasia vendicativa più cattiva e pittorica che abbia mai sentito. Pura poesia." + IDS_DIALOGUE_11666 "Beh, come dicevo, stavo pensando e... ho cambiato idea." + IDS_DIALOGUE_11667 "Vuoi dire che hai escogitato qualcosa di peggio?" + IDS_DIALOGUE_11668 "No, voglio dire che ho cambiato idea." + IDS_DIALOGUE_11669 "Non lo uccidi più?" + IDS_DIALOGUE_11670 "Che senso ha? Non riporterà di certo indietro Johnny." + IDS_DIALOGUE_11671 "Sì, ma è il principio che conta." + IDS_DIALOGUE_11672 "È quello che mi dicevo, ma in fondo è stata una faccenda d'affari. Amavo Johnny come un fratello ma era una canaglia." + IDS_DIALOGUE_11673 "Forse, però era nostro amico." + IDS_DIALOGUE_11674 "Cos'ho appena detto? Avrei fatto qualsiasi cosa per quel teppista." + IDS_DIALOGUE_11675 "A me non sembra." + IDS_DIALOGUE_11676 "Senti, se uccido Paulo chi aiuto? Non Johnny. È morto. Lo farei per me." + IDS_DIALOGUE_11677 "Non c'è niente che non vada, in questo." + IDS_DIALOGUE_11678 "Invece c'è. Vedi, io so che Paulo non aveva nulla di personale contro Johnny. Stava solo eseguendo gli ordini. E io dovrei sentirmi meglio facendo fuori un tizio che stava solo facendo il suo lavoro?" + IDS_DIALOGUE_11679 "Allora fai fuori quello che l'ha assunto." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11680 "Ma Johnny se l'è tirata addosso. Mi sarebbe piaciuto se le cose fossero andate diversamente, ma non l'hanno fatto. Se inizio a freddare persone che cosa otterrò?" + IDS_DIALOGUE_11681 "Hai un reggiseno, addosso? Sto iniziando a preoccuparmi per la tua virilità. Voglio dire, se hai perso il gusto della violenza magari dovresti diventare un bibliotecario, o roba del genere." + IDS_DIALOGUE_11682 "Dillo ancora. Dimmelo in faccia, se hai il coraggio." + IDS_DIALOGUE_11683 "Rilassati, ho solo dei problemi a digerire questa storia." + IDS_DIALOGUE_11684 "È semplice. Johnny è stato eliminato perché era deleterio per gli affari. Se io faccio fuori il tizio che l'ha freddato, trasformo una tragedia in una parodia." + IDS_DIALOGUE_11685 "Che cosa stai dicendo? Ti stai prendendo una meritata rivincita." + IDS_DIALOGUE_11686 "Non è meritata! È quello che sto cercando di dire. Johnny si è fatto uccidere perché era una canaglia. Se vuoi dare la colpa a qualcuno, dalla a lui. Se uno si spara in testa non punisci la pistola." + IDS_DIALOGUE_11687 "Mmm, argomento interessante." + IDS_DIALOGUE_11688 "Questa è la differenza tra vendetta e giustizia. Avrei la mia vendetta uccidendo Paulo, ma non farei giustizia. La giustizia è quella che ha fatto sì che Johnny venisse seccato." + IDS_DIALOGUE_11689 "Hai sentito che quel bastardo stava pianificando una presentazione del progetto Lambda alla conferenza internazionale del crimine di quest'anno?" + IDS_DIALOGUE_11690 "Non faceva nemmeno parte del progetto." + IDS_DIALOGUE_11691 "Lo so! Riesci a crederci?" + IDS_DIALOGUE_11692 "Quindi gli hanno parlato e l'hanno fatto desistere?" + IDS_DIALOGUE_11693 "Naa, l'hanno gettato in pasto agli squali." + IDS_DIALOGUE_11694 "Quello lo zittirà di sicuro." + IDS_DIALOGUE_11695 "Perché pensi che ci siano così poche donne nell'industria del crimine?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11696 "Mancanza di interesse, presumo." + IDS_DIALOGUE_11697 "Non credi che sia discriminazione sessuale?" + IDS_DIALOGUE_11698 "Sono sicuro che c'entri un po' ma non è che poi riceviamo così tanti CV di donne." + IDS_DIALOGUE_11699 "Forse è un problema sociale. Forse le ragazze crescono credendo che il crimine sia roba da uomini e così non la considerano come carriera." + IDS_DIALOGUE_11700 "Chiederò a mia sorella cosa ne pensa." + IDS_DIALOGUE_11701 "Cos'è successo al piano sulla torre Eiffel? Non dovevano fissarla a dei razzi e portarla sulla Luna?" + IDS_DIALOGUE_11702 "Problemi di budget. Pare che stiano lavorando su un piano per sostituire tutti i quadri del Louvre con foto di Elvis Presley." + IDS_DIALOGUE_11703 "Sei sicuro? Suona molto come quel lavoro fatto a Barcellona." + IDS_DIALOGUE_11704 "È stato definito un seguito spirituale." + IDS_DIALOGUE_11705 "Che delusione. Speravo in qualcosa di più innovativo." + IDS_DIALOGUE_11706 "Possono ancora inventarsi qualcosa. Solo perché è un seguito non significa che debba essere identico. Pensaci come a una variazione sul tema." + IDS_DIALOGUE_11707 "Vedremo." + IDS_DIALOGUE_11708 "Quell'ufficiale per il morale è un problema serio." + IDS_DIALOGUE_11709 "Ma dai, non è così male." + IDS_DIALOGUE_11710 "Come faccio a sentirmi intimidatoria in un'uniforme rosa? E dimmi quale rispettabile organizzazione malvagia ha uno slogan del tipo: Bravi a essere cattivi. Cattivi a essere bravi?" + IDS_DIALOGUE_11711 "A me non dispiace. Inoltre è stato bocciato comunque." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11712 "Non è quello che volevo dire. Non avrebbe nemmeno dovuto proporlo. Dov'è la minaccia?" + IDS_DIALOGUE_11713 "Dalle un po' di respiro. È la prima volta che lavora per un'organizzazione criminale. Prima era impiegata in una compagnia produttrice di cereali per la colazione." + IDS_DIALOGUE_11714 "Oh mio Dio!" + IDS_DIALOGUE_11715 "Cosa posso fare per te?" + IDS_DIALOGUE_11716 "Puoi misurare la precisione tramite il mirino. Più diventa offuscato, meno preciso sarà il tuo colpo. I movimenti rapidi confonderanno il tuo obiettivo. " + IDS_DIALOGUE_11717 "Sei entrata in un potenziale nascondiglio. Se rimani perfettamente immobile, diventerai invisibile e i tuoi nemici non saranno in grado di vederti, a meno che non si avvicinino troppo. Finché rimani tranquilla nessuno ti scoprirà e potrai comunque camminare silenziosamente o accovacciata; l'importante è che non tu non faccia rumore. " + IDS_DIALOGUE_11718 "Hai un tagliaunghie. Buono per forzare serratura." + IDS_DIALOGUE_11719 "Tu sbarazzare di loro! In fretta!" + IDS_DIALOGUE_11720 "Devono avere visto aereo." + IDS_DIALOGUE_11721 "Radio è nella stanza sul retro." + IDS_DIALOGUE_11722 "Usa radio per contattare tuo capo." + IDS_DIALOGUE_11723 "C'è piccolo avamposto a nord. Lì forse possibile trovare benzina." + IDS_DIALOGUE_11724 "Baracca è sul retro." + IDS_DIALOGUE_11725 "Prendi rifornimenti da baracca." + IDS_DIALOGUE_11726 "Non c'è niente che valga la pena di essere visto in quella direzione." + IDS_DIALOGUE_11727 "Il ponte è appena avanti! Una volta che lo hai attraversato, cerca il percorso stretto sulla tua sinistra. Dovrebbe condurti alla sottofondazione." +END + +STRINGTABLE +BEGIN + IDS_AISOUNDS_20000 "empty" + IDS_AISOUNDS_20001 "empty" + IDS_AISOUNDS_20002 "empty" + IDS_AISOUNDS_20003 "empty" +END + +STRINGTABLE +BEGIN + IDS_INTEL_TEXT_8000 "Hai trovato una lettera contenente informazioni segrete." + IDS_INTEL_TEXT_8001 "Hai trovato una pellicola da 35mm." + IDS_INTEL_TEXT_8002 "Hai trovato un progetto importante." + IDS_INTEL_TEXT_8003 "Hai trovato una cartella." + IDS_INTEL_TEXT_8004 "Hai trovato un dossier." + IDS_INTEL_TEXT_8005 "Hai trovato alcuni file perduti." + IDS_INTEL_TEXT_8006 "Hai trovato una busta." + IDS_INTEL_TEXT_8007 "Hai trovato un registratore a nastro." + IDS_INTEL_TEXT_8008 "Hai fotografato qualcosa di importante." + IDS_INTEL_TEXT_8009 "Hai fotografato un libro mastro." + IDS_INTEL_TEXT_8010 "Hai fotografato un libro mastro." + IDS_INTEL_TEXT_8011 "Hai trovato una nota." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5008 "Consegna la valigetta a Hatori-san." + IDS_MISSION_OBJ_5009 "Cancella i tre segni fatti con il gesso." + IDS_MISSION_OBJ_5010 "Impedisci al nemico di suonare l'allarme." + IDS_MISSION_OBJ_5011 "Recupera sei pagine del manuale di campo della UNITY. " + IDS_MISSION_OBJ_5012 "Fotografa Hatori-san." + IDS_MISSION_OBJ_5013 "Recupera tutte e quattro le pagine del Manuale da campo della UNITY." + IDS_MISSION_OBJ_5014 "FALLITO: fotografa l'incontro." + IDS_MISSION_OBJ_5015 "Non lasciare che l’allarme venga suonato nel giardino intorno alla casa principale." + IDS_MISSION_OBJ_5016 "Non fare nessun rumore sospetto vicino alle finestre!" + IDS_MISSION_OBJ_5017 "" + IDS_MISSION_OBJ_5018 "" + IDS_MISSION_OBJ_5019 "" + IDS_MISSION_OBJ_5020 "" + IDS_MISSION_OBJ_5021 "Radio UNITY controllo missione - istruzioni" + IDS_MISSION_OBJ_5022 "Localizza e utilizza il capanno da caccia come base per le operazioni." + IDS_MISSION_OBJ_5023 "Piazza tre cariche esplosive sui pilastri del ponte principale." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5024 "Localizza la stazione di comunicazione." + IDS_MISSION_OBJ_5025 "Localizza la centrale elettrica." + IDS_MISSION_OBJ_5026 "Evita il ponte principale che conduce nella base." + IDS_MISSION_OBJ_5027 "Riduci al minimo le perdite sovietiche. " + IDS_MISSION_OBJ_5028 "Sabota la centrale elettrica." + IDS_MISSION_OBJ_5029 "Piazza l'esplosivo alla base della torretta radio. " + IDS_MISSION_OBJ_5030 "Piazza l'esplosivo sul ripetitore elettrico." + IDS_MISSION_OBJ_5031 "Recupera il tuo pilota dai suoi carcerieri sovietici e fallo uscire dalla struttura." + IDS_MISSION_OBJ_5032 "Ritorna al capanno da caccia e aspetta che cali la notte." + IDS_MISSION_OBJ_5033 "Scopri la natura della cospirazione che hai scoperto." + IDS_MISSION_OBJ_5034 "Cerca di impedire che i soldati sovietici chiamino i rinforzi." + IDS_MISSION_OBJ_5035 "Localizza l'archivio centrale." + IDS_MISSION_OBJ_5036 "Piazza l'esplosivo sul cancello esterno." + IDS_MISSION_OBJ_5037 "Piazza l'esplosivo nel deposito di carburante." + IDS_MISSION_OBJ_5038 "Piazza l'esplosivo sul serbatoio di propano nel refettorio. " + IDS_MISSION_OBJ_5039 "Recupera informazioni sul progetto Omega." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5040 "Ritorna al tuo aereo." + IDS_MISSION_OBJ_5041 "Elimina Nikolai Zhukov." + IDS_MISSION_OBJ_5042 "Torna al punto di innesto." + IDS_MISSION_OBJ_5043 "Recupera entrambe le pagine del Rapporto sulla Preparazione Militare Sovietica. " + IDS_MISSION_OBJ_5044 "Penetra nell'installazione." + IDS_MISSION_OBJ_5045 "Raccogli tutti e quattro i resoconti di spesa." + IDS_MISSION_OBJ_5046 "Piazza le cimici in quattro telefoni dell'archivio principale. " + IDS_MISSION_OBJ_5047 "Fotografa tre bersagli. (Da Def)" + IDS_MISSION_OBJ_5048 "Impedisci alla H.A.R.M. di far saltare in aria il tuo aereo." + IDS_MISSION_OBJ_5049 "Aiuta il tuo pilota a rimanere sobrio." + IDS_MISSION_OBJ_5050 "Recupera le altre pagine del Rapporto sulla Preparazione Militare Sovietica. " + IDS_MISSION_OBJ_5051 "Recupera i documenti segreti dalla cassetta di sicurezza nel vecchio edificio degli archivi." + IDS_MISSION_OBJ_5052 "Recupera i rifornimenti dal capannone." + IDS_MISSION_OBJ_5053 "Infiltrati nell'edificio degli archivi principale." + IDS_MISSION_OBJ_5054 "Salva il tuo pilota dalla H.A.R.M." + IDS_MISSION_OBJ_5055 "Recupera ulteriori informazioni su ANATOLI." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5056 "" + IDS_MISSION_OBJ_5057 "" + IDS_MISSION_OBJ_5058 "" + IDS_MISSION_OBJ_5059 "" + IDS_MISSION_OBJ_5060 "" + IDS_MISSION_OBJ_5061 "Recupera informazioni sul Progetto Omega." + IDS_MISSION_OBJ_5062 "Fuggi con la prova." + IDS_MISSION_OBJ_5063 "Sconfiggi Isako." + IDS_MISSION_OBJ_5064 "Sconfiggi i nemici ninja." + IDS_MISSION_OBJ_5065 "Scova tutte le registrazioni." + IDS_MISSION_OBJ_5066 "Trova la corrispondenza tra Goodman e il Sig. Smith." + IDS_MISSION_OBJ_5067 "" + IDS_MISSION_OBJ_5068 "" + IDS_MISSION_OBJ_5069 "" + IDS_MISSION_OBJ_5070 "" + IDS_MISSION_OBJ_5071 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5072 "" + IDS_MISSION_OBJ_5073 "" + IDS_MISSION_OBJ_5074 "" + IDS_MISSION_OBJ_5075 "" + IDS_MISSION_OBJ_5076 "" + IDS_MISSION_OBJ_5077 "" + IDS_MISSION_OBJ_5078 "" + IDS_MISSION_OBJ_5079 "" + IDS_MISSION_OBJ_5080 "" + IDS_MISSION_OBJ_5081 "Rendez-vous con Kamal. Fai attenzione a non ferire degli innocenti o la polizia di pattugliamento della zona." + IDS_MISSION_OBJ_5082 "Guadagna l'ingresso al quartier generale della H.A.R.M." + IDS_MISSION_OBJ_5083 "Piazza le cimici nel telefono dell’ufficio di Annop Banerjee, quindi riascolta la conversazione registrata." + IDS_MISSION_OBJ_5084 "Localizza la scatola di collegamento del telefono." + IDS_MISSION_OBJ_5085 "Ritorna nella sala d'ingresso prima che la tua assenza venga notata." + IDS_MISSION_OBJ_5086 "Raccogli i manifesti dei ricercati prima che siano individuati dai civili." + IDS_MISSION_OBJ_5087 "Penetra nel quartier generale dell'Alleanza Malvagia." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5088 "Recupera il contenuto della cassaforte del direttore." + IDS_MISSION_OBJ_5089 "Piazza l'esplosivo nella locazione #1." + IDS_MISSION_OBJ_5090 "Piazza l'esplosivo nella locazione #2." + IDS_MISSION_OBJ_5091 "Piazza l'esplosivo nella locazione #3." + IDS_MISSION_OBJ_5092 "Piazza l'esplosivo nella camera blindata dei filmati dell'Alleanza Malvagia." + IDS_MISSION_OBJ_5093 "Fuggi dal quartier generale dell'Alleanza Malvagia." + IDS_MISSION_OBJ_5094 "Recupera informazioni sul Progetto Omega dalla camera sotterranea principale." + IDS_MISSION_OBJ_5095 "Rendezvous con Armstrong." + IDS_MISSION_OBJ_5096 "Salvati seguendo Armstrong." + IDS_MISSION_OBJ_5097 "Fuggi con Armstrong." + IDS_MISSION_OBJ_5098 "Proteggi Armstrong a qualsiasi costo." + IDS_MISSION_OBJ_5099 "Comprendi il Re Mimo." + IDS_MISSION_OBJ_5100 "Fotografa i bersagli nel QG H.A.R.M. HQ (Da Def)." + IDS_MISSION_OBJ_5101 "Piazza le cimici in tre telefoni del quartier generale della H.A.R.M." + IDS_MISSION_OBJ_5102 "Fotografa i documenti nella cassaforte a muro." + IDS_MISSION_OBJ_5103 "Procurati le prove del ricatto a Kamal." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5104 "Non uccidere nessuno o fallirai la tua missione!" + IDS_MISSION_OBJ_5105 "Evita di venir catturato o sarai rispedito all’ingresso e dovrai tentare nuovamente!" + IDS_MISSION_OBJ_5106 "Parla con Armstrong." + IDS_MISSION_OBJ_5107 "Trova Kamal." + IDS_MISSION_OBJ_5108 "Raggiungi il livello più basso senza uccidere nessuno." + IDS_MISSION_OBJ_5109 "Recupera rifornimenti dalla cabina telefonica vicino al cinema." + IDS_MISSION_OBJ_5110 "Non farti prendere adesso o fallirai la missione!" + IDS_MISSION_OBJ_5111 "" + IDS_MISSION_OBJ_5112 "" + IDS_MISSION_OBJ_5113 "" + IDS_MISSION_OBJ_5114 "" + IDS_MISSION_OBJ_5115 "" + IDS_MISSION_OBJ_5116 "" + IDS_MISSION_OBJ_5117 "" + IDS_MISSION_OBJ_5118 "" + IDS_MISSION_OBJ_5119 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5120 "" + IDS_MISSION_OBJ_5121 "Recupera informazioni sul Progetto Omega." + IDS_MISSION_OBJ_5122 "Fuggi." + IDS_MISSION_OBJ_5123 "Recupera tre pagine del rapporto medico." + IDS_MISSION_OBJ_5124 "Recupera ulteriori informazioni sul tenente Andres." + IDS_MISSION_OBJ_5125 "" + IDS_MISSION_OBJ_5126 "" + IDS_MISSION_OBJ_5127 "" + IDS_MISSION_OBJ_5128 "" + IDS_MISSION_OBJ_5129 "" + IDS_MISSION_OBJ_5130 "" + IDS_MISSION_OBJ_5131 "Salva i civili dai Super Soldati." + IDS_MISSION_OBJ_5132 "Proteggi Kamal." + IDS_MISSION_OBJ_5133 "" + IDS_MISSION_OBJ_5134 "" + IDS_MISSION_OBJ_5135 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5136 "" + IDS_MISSION_OBJ_5137 "" + IDS_MISSION_OBJ_5138 "" + IDS_MISSION_OBJ_5139 "" + IDS_MISSION_OBJ_5140 "" + IDS_MISSION_OBJ_5141 "Trova gli occhiali del Dr. Schenker." + IDS_MISSION_OBJ_5142 "Sbarazzati degli intrusi." + IDS_MISSION_OBJ_5143 "Trova il Dr. Schenker." + IDS_MISSION_OBJ_5144 "Proteggi il personale della UNITY." + IDS_MISSION_OBJ_5145 "Trova i quattro documenti smarriti." + IDS_MISSION_OBJ_5146 "Disinnesca tutti gli esplosivi." + IDS_MISSION_OBJ_5147 "" + IDS_MISSION_OBJ_5148 "" + IDS_MISSION_OBJ_5149 "" + IDS_MISSION_OBJ_5150 "" + IDS_MISSION_OBJ_5151 "Scopri dove è tenuto Armstrong." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5152 "Metti in salvo Armstrong. È tenuto nel ponte inferiore in una cella di un Super Soldato." + IDS_MISSION_OBJ_5153 "Trova una via d'uscita dalla base sottomarina prima che imploda." + IDS_MISSION_OBJ_5154 "Trova l'accesso alla scrivania personale del direttore." + IDS_MISSION_OBJ_5155 "Recupera informazioni sul super sottomarino segreto della H.A.R.M." + IDS_MISSION_OBJ_5156 "Recupera una copia del libro paga della H.A.R.M." + IDS_MISSION_OBJ_5157 "Sconfiggi Pierre." + IDS_MISSION_OBJ_5158 "Ottieni il Manuale d'uso del super computer v1.0 dal Dipartimento servizi super computer" + IDS_MISSION_OBJ_5159 "Individua il modulo di richiesta 207-B." + IDS_MISSION_OBJ_5160 "Trova il supplemento del Manuale d'uso del super computer v2.0" + IDS_MISSION_OBJ_5161 "Individua la valvola della pompa di sentina e aprila." + IDS_MISSION_OBJ_5162 "Ottieni una copia della nuova missione della H.A.R.M." + IDS_MISSION_OBJ_5163 "Localizza l'ombelico che porta al ponte di comando." + IDS_MISSION_OBJ_5164 "" + IDS_MISSION_OBJ_5165 "" + IDS_MISSION_OBJ_5166 "" + IDS_MISSION_OBJ_5167 "" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5168 "" + IDS_MISSION_OBJ_5169 "" + IDS_MISSION_OBJ_5170 "" + IDS_MISSION_OBJ_5171 "Fuggi dalla inutilmente elaborata trappola mortale." + IDS_MISSION_OBJ_5172 "Sconfiggi Volkov." + IDS_MISSION_OBJ_5173 "Fuggi dal sotterraneo segreto." + IDS_MISSION_OBJ_5174 "Sconfiggi Isako." + IDS_MISSION_OBJ_5175 "Recupera il nuovo piano di pubbliche relazioni della H.A.R.M." + IDS_MISSION_OBJ_5176 "Recupera il piano di invasione di Khios della H.A.R.M." + IDS_MISSION_OBJ_5177 "Distruggi il generatore." + IDS_MISSION_OBJ_5178 "Distruggi il computer centrale del supercomputer." + IDS_MISSION_OBJ_5179 "" + IDS_MISSION_OBJ_5180 "" + IDS_MISSION_OBJ_5181 "Ferma l'invasione del Super Soldato." + IDS_MISSION_OBJ_5182 "Sconfiggi il Super Soldato tenente." + IDS_MISSION_OBJ_5183 "Fissa un incontro con Armstrong alla fortezza." +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5184 "Affonda il sottomarino super segreto." + IDS_MISSION_OBJ_5185 "" + IDS_MISSION_OBJ_5186 "Hijack a rocket back to Earth" + IDS_MISSION_OBJ_5187 "Get to your car and escape" + IDS_MISSION_OBJ_5188 "Read the note on your windshield" + IDS_MISSION_OBJ_5189 "Survive Volkov's test" + IDS_MISSION_OBJ_5190 "Commandeer the prototype snowmobile" + IDS_MISSION_OBJ_5191 "Head north to the secret facility" + IDS_MISSION_OBJ_5192 "Get aboard the train at Outpost 3" + IDS_MISSION_OBJ_5193 "Discover Danger Danger's intentions" + IDS_MISSION_OBJ_5194 "Secure transportation to the moon" + IDS_MISSION_OBJ_5195 "Recover the launch key" + IDS_MISSION_OBJ_5196 "Retrieve Dr. Mabius" + IDS_MISSION_OBJ_5197 "Hijack a rocket back to Earth before you crash into the sun" + IDS_MISSION_OBJ_5198 "Destroy all four enemy cannons" + IDS_MISSION_OBJ_5199 "Destroy the three remaining enemy cannons" +END + +STRINGTABLE +BEGIN + IDS_MISSION_OBJ_5200 "Destroy the two remaining enemy cannons" + IDS_MISSION_OBJ_5201 "Destroy the remaining enemy cannon" + IDS_MISSION_OBJ_5202 "Defeat Il Pazzo" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4500 "" + IDS_KEY_ITEM_4501 "Cacciavite" + IDS_KEY_ITEM_4502 "Lampadina" + IDS_KEY_ITEM_4503 "Batterie esaurite" + IDS_KEY_ITEM_4504 "Batterie nuove" + IDS_KEY_ITEM_4505 "Cartella" + IDS_KEY_ITEM_4506 "Tanica di carburante" + IDS_KEY_ITEM_4507 "Fusibile" + IDS_KEY_ITEM_4508 "Portachiavi" + IDS_KEY_ITEM_4509 "Filo di ferro" + IDS_KEY_ITEM_4510 "Chiave inglese" + IDS_KEY_ITEM_4511 "Maniglia da porta" +END + +STRINGTABLE +BEGIN + IDS_GEAR_DESC_1 "Annulla i danni da veleno causati da proiettili al cianuro e da dardi di balestra avvelenati." + IDS_GEAR_DESC_2 "Riduce i danni da ustione causati da proiettili al fosforo, vapore bollente e altre fonti di calore." + IDS_GEAR_DESC_3 "Riduce i danni da trauma causati dalle esplosioni." + IDS_GEAR_DESC_4 "Riduce i danni da scosse elettriche." + IDS_GEAR_DESC_5 "Scorta d'aria subacquea." + IDS_GEAR_DESC_6 "Dimezza il rumore causato muovendosi." + IDS_GEAR_DESC_7 "Previene l'eccessiva perdita di sangue causata dai proiettili dum dum." + IDS_GEAR_DESC_8 "Protegge chi la indossa dalla maggior parte dei danni." +END + +STRINGTABLE +BEGIN + IDS_MOD_1 "Silenziatore per la pistola automatica McAllister .32" + IDS_MOD_2 "Zoom della macchina fotografica." + IDS_MOD_3 "Silenziatore per il fucile da assalto RFA Serie-4 Bolt" + IDS_MOD_4 "Silenziatore per l'SMG Gordon 9mm " + IDS_MOD_5 "Portata del fucile d'assalto AK-47" + IDS_MOD_6 "Mirino per il lancia strumenti" +END + +STRINGTABLE +BEGIN + IDS_MOD_7 "Portata della balestra sportiva Vindicator" + IDS_MOD_8 "Portata del correttore Bacalov" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25000 "" + IDS_INTEL_25001 "UNUSED" + IDS_INTEL_25002 "Avviso pubblico: coprifuoco nel villaggio@AVVISO PUBBLICO:\n\nA partire da stanotte, sarà reso effettivo e obbligatorio un coprifuoco dalle ore 18:00 alle ore 6:00. I residenti che verranno sorpresi fuori casa durante questo orario saranno adeguatamente puniti.\n\nHaruko Muroi\nAssistente amministrativo\nClan Katakuri Ninja" + IDS_INTEL_25003 "Promemoria clan ninja: pattuglie@A tutti i membri del clan:\n\nPrevediamo che la spia entri nel villaggio da est, dove sono concentrate le maggiori attrazioni turistiche; ma è altresì possibile che si avvicinerà dalle cascate. Mettere immediatamente al corrente le pattuglie in servizio questa notte. Si raccomanda di consumare la cena prima di iniziare il turno, dato che il budget destinato alle provviste alimentari è stato usato per l'attacco al quartier generale del clan Oshii.\n\nHaruko Muroi\nAssistente amministrativo" + IDS_INTEL_25004 "Dossier UNITY: Ninja@Cate,\n\nnonostante le informazioni in nostro possesso sul clan ninja a Inotakimura siano piuttosto scarse, siamo riusciti ad accertarci dei seguenti dettagli:\n\n- I ninja sono esperti nei salti a lunga distanza, di cui si servono negli attacchi contro i nemici.\n\n- Possono usare bombe fumogene per scomparire e poi riapparire vicino ai loro bersagli così da coglierli impreparati.\n\nMi auguro che queste informazioni si rivelino utili. Abbi cura di te.\n\nBruno Lawrie\nCapo operazioni sul campo\nDivisioni operazioni speciali UNITY" + IDS_INTEL_25005 "Promemoria UNITY: obiettivi aggiuntivi@Agente Archer,\n\na volte potrebbe presentarsi l'opportunità per lei di portare a termine missioni aggiuntive, in modo da farle guadagnare altri punti abilità. Tenga gli occhi aperti e recuperi note, valigette o lettere.\n\nEccole un semplice obiettivo, per fare pratica: ho sparso sei pagine del manuale operativo della UNITY nell'area generale. Le recuperi tutte prima di continuare.\n\nBabbo Natale,\nDirettore reparto dispositivi\nDivisione produzione giocattoli della UNITY." + IDS_INTEL_25006 "Manuale UNITY: perquisizione@PERQUISIZIONE\n\nI nemici hanno spesso con sé oggetti molto utili, come munizioni, armature, kit di pronto soccorso o documentazioni importanti; per questo, assicurati di perquisirli minuziosamente, tenendo premuto il pulsante Azione finché la barra progressiva non scompare. Ti conviene spostare i nemici in punti appartati prima di effettuare la perquisizione, onde evitare di attirare l'attenzione.\n\nPuoi anche perquisire mobiletti di archivi e pile di carta per cercare tracce e oggetti utili. Solitamente, è proprio durante le perquisizioni che puoi trovare obiettivi aggiuntivi." + IDS_INTEL_25007 "Manuale UNITY: nemici svenuti@NEMICI SVENUTI\n\nI nemici che hanno perso i sensi, per esempio sotto l'effetto di una scossa di taser o di un gas soporifero, prima o poi si sveglieranno. Possono anche essere rianimati dai loro compagni.\n\nPuoi perquisire i nemici svenuti per disarmarli e renderli così innocui, a meno che non riescano a procurarsi un'arma sostitutiva." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25008 "Manuale UNITY: tasto Azione@TASTO AZIONE\n\nQuando miri ad un oggetto o ad un personaggio con cui puoi interagire, apparirà un testo sullo schermo che ti indicherà cosa accadrà premendo il pulsante Azione (predefinito: pulsante destro del mouse). Se il testo è oscurato, non puoi interagire con loro se prima non hai soddisfatto determinate condizioni. Ad esempio: potresti aver bisogno di sbloccare una porta o di acquisire un oggetto dell'inventario necessario.\n\nSe non hai mirato a nessun obiettivo, il pulsante Azione caricherà l'arma attualmente selezionata (nel caso possa essere ricaricata)." + IDS_INTEL_25009 "Manuale UNITY: nascondersi@NASCONDERSI\n\nOgni volta che entri in un potenziale nascondiglio, apparirà l'icona Nascondiglio in fondo allo schermo. Se rimarrai perfettamente fermo, diventerai momentaneamente invisibile ai nemici, a meno che non siano proprio sopra di te. Rimarrai nascosto finché resterai nel nascondiglio e non ti muoverai di scatto o userai le tue armi.\n\nSe non puoi nasconderti perché un nemico ti ha individuato, l'icona sarà sbarrata." + IDS_INTEL_25010 "Manuale UNITY: informazioni@INFORMAZIONI\n\nAssicurati di cercare documenti importanti. Alcuni potrebbero contenere informazioni vitali per la missione in corso, altri potrebbero regalarti dei punti abilità.\n\nPuoi visualizzare i documenti raccolti in qualsiasi momento durante la missione attraverso la schermata informazioni (tasto rapido predefinito: I)." + IDS_INTEL_25011 "Manuale UNITY: abbandonare un'area 1@ABBANDONARE UN'AREA, PRIMA PARTE\n\nQuando vedi l'icona Porta, significa che puoi abbandonare l'area. Dirigiti verso l'uscita, ma solo dopo aver terminato l'esplorazione." + IDS_INTEL_25012 "Promemoria UNITY: regali@Agente Archer,\n\nquando possibile, cercherò di lasciarle nel campo equipaggiamento e munizioni utili. Faccia attenzione ai pacchi rivestiti con carta da regalo come questo.\n\nLe monete che vi troverà valgono più di quanto non sembri all’apparenza. Infatti potrà usarle per distrarre i nemici. Lanciandole da dietro gli angoli o in un vialetto, riuscirà anche a farli allontanare dalla loro postazione.\n\nBabbo Natale" + IDS_INTEL_25013 "Promemoria: stato della missione@SCHERMATA MISSIONE\n\nConsulta la schermata Missione (tasto rapido predefinito: Tab) per tutte le informazioni relative alla tua attuale missione. Qui troverai gli obiettivi che devi completare per poter portare a termine la missione. Inoltre, potrai consultare l'elenco degli obiettivi aggiuntivi (compiti secondari che puoi completare per guadagnare punti abilità addizionali), insieme ai Parametri, ossia alle regole e alle linee di condotta generali. Violando i parametri, rischierai di perdere i punti Abilità guadagnati o addirittura di fallire la missione." + IDS_INTEL_25014 "Promemoria: schermata Equipaggiamento@SCHERMO EQUIPAGGIAMENTO\n\nOgni volta che acquisisci armi, bombe o munizioni nuove, ricordati che puoi consultare la schermata Equipaggiamento (tasto rapido predefinito: M) in qualunque momento per avere informazioni sulla funzione e l'utilizzo di ognuna. Inoltre, questa schermata ti permette di selezionare le funzioni di equipaggiamento e munizioni, o dei dispositivi mentre il gioco è in pausa." + IDS_INTEL_25015 "Promemoria: punti abilità@PUNTI ABILITÀ\n\nOtterrai dei punti abilità come premio se riuscirai a superare determinati ostacoli o a portare a termine obiettivi specifici. Puoi accedere alla schermata Giocatore (tasto rapido predefinito: P) per utilizzare questi punti allo scopo di migliorare le tue abilità. Considera attentamente il tuo stile di gioco, prima di investire i tuoi punti." + IDS_INTEL_25016 "Promemoria: neutralizzare i nemici@NEUTRALIZZARE I NEMICI\n\nPuoi uccidere i nemici di nascosto usando armi silenziose, quali il teser, la balestra o una pistola con silenziatore. Se i nemici avvertono la tua presenza, urleranno non appena colpiti, attirando l'attenzione." + IDS_INTEL_25017 "Promemoria: rimozione dei corpi@RIMOZIONE DEI CORPI\n\nI nemici si allarmeranno quando vedranno un loro compagno cadere, ma hai la possibilità di usare il tasto Rimuovi corpo (predefinito: G) per prelevare gli avversari sconfitti e lasciarli in punti distanti. Non potrai correre o usare le tue armi mentre stai trasportando un corpo, quindi fai attenzione alla tempistica nei tuoi movimenti." + IDS_INTEL_25018 "Promemoria: rumori@RUMORI\n\nI tuoi nemici possono sentire tutti i rumori che produci, quindi impara a muoverti con cautela. Ad esempio, puoi strisciare (predefinito: tasto MAIUSC sinistro) )per spostarti silenziosamente. Inoltre, alcuni materiali (come prato, moquette o neve) attenuano il rumore dei tuoi passi, mentre altri (metallo o piastrelle) li amplificano. \n\\Infine, urtare le campane o rovesciare una bottiglia provocherà molto rumore, quindi attento a come ti muovi." + IDS_INTEL_25019 "Promemoria: piegarsi@PIEGARSI\n\nSbircia dagli angoli (tasti predefiniti Q ed E) per valutare la situazione che hai di fronte. Non impiegare troppo tempo, altrimenti i nemici potrebbero avvicinarsi per ispezionare la zona." + IDS_INTEL_25020 "" + IDS_INTEL_25021 "Manuale UNITY: bussola@BUSSOLA\n\nOltre a farti orientare, la bussola può fornirti altre informazioni utili. L'icona Obiettivo ti dirigerà nei luoghi cruciali per lo svolgimento della tua missione. Potrebbe capitarti di vedere una X, che indica i punti di arrivo o altre destinazioni importanti." + IDS_INTEL_25022 "Promemoria clan ninja: Cate Archer@ATTENZIONE A TUTTI I MEMBRI\n\nState in guardia per l'agente della Unity Cate Archer. È da considerarsi armata e molto pericolosa. Avvertite immediatamente Takashi-san in caso di avvistamento.\n\nHaruko Muroi\nAssistente amministrativo" + IDS_INTEL_25023 "Manuale UNITY: difficoltà@IMPOSTAZIONI DIFFICOLTÀ\n\nRicordati che puoi impostare la difficoltà della tua missione in qualunque momento, richiamando il menu Opzioni, selezionando Gioco e scegliendo le impostazioni desiderate. Le impostazioni della difficoltà influiscono prima di tutto sulla portata del danno inflitto dai nemici, quindi se inizi a sentirti insoddisfatto e poco stimolato dal gioco, prova a cambiare le impostazioni secondo le tue esigenze." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4750 "" + IDS_KEY_DESC_4751 "Un cacciavite a testa piatta arrugginito." +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4752 "Una lampadina da 60 watt." + IDS_KEY_DESC_4753 "Batterie sporche AA. Sembra che siano a corto di energia." + IDS_KEY_DESC_4754 "Batterie nuove e splendenti AA." + IDS_KEY_DESC_4755 "Una valigetta da consegnare a Hatori-san." + IDS_KEY_DESC_4756 "Puoi utilizzare questo carburante per il gatto delle nevi." + IDS_KEY_DESC_4757 "Questo fusibile sembra in buone condizioni." + IDS_KEY_DESC_4758 "Un normale portachiavi con diverse chiavi." + IDS_KEY_DESC_4759 "Un rocchetto di filo di rame per i lavori agli impianti elettrici." + IDS_KEY_DESC_4760 "Una chiave inglese consumata. Utile per i lavori impossibili da eseguire a mani nude." + IDS_KEY_DESC_4761 "Una maniglia di porta. Potrebbe servire per sostituire eventuali maniglie mancanti o difettose." + IDS_KEY_DESC_4762 "Una suoneria di campane." + IDS_KEY_DESC_4763 "Un secchio vuoto. Sembra che possa contenere abbastanza acqua. " + IDS_KEY_DESC_4764 "La manopola di un rubinetto." + IDS_KEY_DESC_4765 "Manuale d'uso del super computer v1.0. Elenca le procedure di input del super computer." + IDS_KEY_DESC_4766 "Questo modulo di richiesta 207-B è stato compilato per richiedere il Manuale del super computer." + IDS_KEY_DESC_4767 "Supplemento al Manuale d'uso del super computer v1.0. Elenca le procedure di input del super computer." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4512 "Suoneria con campane" + IDS_KEY_ITEM_4513 "Secchio" + IDS_KEY_ITEM_4514 "Rubinetto" + IDS_KEY_ITEM_4515 "Manuale d'uso Supercomputer v1.0" + IDS_KEY_ITEM_4516 "Modulo di richiesta 207-B" + IDS_KEY_ITEM_4517 "Supplemento del Manuale d'uso v2.0" + IDS_KEY_ITEM_4518 "Identificativo H.A.R.M." + IDS_KEY_ITEM_4519 "Tubo a vuoto del computer" + IDS_KEY_ITEM_4520 "Sacco di zucchero" + IDS_KEY_ITEM_4521 "Dispositivo " + IDS_KEY_ITEM_4522 "Parola d'ordine M-9: Piroshki" + IDS_KEY_ITEM_4523 "Nastro M-9 689: Progetto Omega" + IDS_KEY_ITEM_4524 "Rupie" + IDS_KEY_ITEM_4525 "Chiavi per il gatto delle nevi" + IDS_KEY_ITEM_4526 "UNITÀ DI ELABORAZIONE DATI M-9" + IDS_KEY_ITEM_4527 "Codice di sicurezza M-9" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5500 "" + IDS_COOP_MISSION_OBJ_5501 + "Trova Balaji Malpani e fotografalo. Il suo appartamento è un buon punto di partenza." + IDS_COOP_MISSION_OBJ_5502 + "Dirigiti al punto di estrazione, presso il bar vicino all'appartamento di Balaji." + IDS_COOP_MISSION_OBJ_5503 + "Ritrovati con il tuo gruppo alla cabina UNITY e contatta via radio il quartier generale per ricevere le istruzioni finali." +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5504 + "Metti fuori uso i computer infiltrandoti nell'installazione e piazzando 4 cariche esplosive." + IDS_COOP_MISSION_OBJ_5505 + "Metti fuori uso i computer piazzando le cariche esplosive. Mancano tre bersagli." + IDS_COOP_MISSION_OBJ_5506 + "Metti fuori uso i computer piazzando le cariche esplosive. Mancano due bersagli." + IDS_COOP_MISSION_OBJ_5507 + "Metti fuori uso i computer piazzando le cariche esplosive. Manca un bersaglio." + IDS_COOP_MISSION_OBJ_5508 + "Raccogli ulteriori dati sul progetto del Super Soldato." + IDS_COOP_MISSION_OBJ_5509 + "Ritrovati alla cabina UNITY è mettiti in contatto radio con il quartier generale per un'estrazione." + IDS_COOP_MISSION_OBJ_5510 + "Trova Cate. La sua ultima posizione nota era vicino alle cascate, fuori dal villaggio." + IDS_COOP_MISSION_OBJ_5511 "Ritorna con Cate al punto di estrazione." + IDS_COOP_MISSION_OBJ_5512 + "Trova il generatore è attiva la corrente a tutte le porte e ai cancelli della zona." + IDS_COOP_MISSION_OBJ_5513 + "Entra nell'appartamento di Balaji e trova un mazzo di chiavi di riserva oppure un grimaldello." + IDS_COOP_MISSION_OBJ_5514 + "Trova una posizione vantaggiosa da cui fotografare Balaji nell'appartamento della sua amante." + IDS_COOP_MISSION_OBJ_5515 "" + IDS_COOP_MISSION_OBJ_5516 "Trova Armstrong e mettilo in salvo." + IDS_COOP_MISSION_OBJ_5517 + "Cerca di scoprire dove la H.A.R.M. sta portando Armstrong." + IDS_COOP_MISSION_OBJ_5518 + "Cerca bersagli adatti e piazza sei serie di cariche esplosive." + IDS_COOP_MISSION_OBJ_5519 + "Cerca bersagli adatti e piazza cinque serie di cariche esplosive." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25024 "Manuale UNITY: salvare@SALVARE\n\nRicordati di salvare i tuoi progressi di volta in volta, utilizzando l'opzione Salva Gioco o il tasto di salvataggio veloce (F6). Inoltre, ricorda che i tuoi progressi vengono salvati automaticamente ogni volta che accedi a una nuova area, quindi hai la facoltà di ricominciare il livello, se necessario." + IDS_INTEL_25025 "Manuale UNITY: distrazioni@Distrazioni\n\nUno dei mezzi più efficaci per non farsi scorgere dai nemici è distrarli. Ad esempio, puoi tirare una moneta in un vialetto buio per far allontanare le guardie dalla loro postazione. Se la minaccia di un intruso non attira la loro attenzione, il tipico suono delle monete che cadono sul pavimento otterrà l'effetto desiderato. Se non hai una moneta, puoi usare la tua balestra. Comunque, non fare troppo rumore, altrimenti allarmerai i nemici." + IDS_INTEL_25026 "Promemoria clan ninja: riunione spostata@IMPORTANTE! PRENDERE VISIONE!\n\nDietro insistenza del Direttore, la riunione di questa sera è stata spostata nell'edificio principale. Assicuratevi di aver consultato il programma rivisto delle postazioni di guardia, per evitare confusione. Se dovete pattugliare un'area sconosciuta, assicuratevi di localizzare i bagni.\n\nHaruko Muroi\nAssistente amministrativo" + IDS_INTEL_25027 "UNUSED" + IDS_INTEL_25028 "UNUSED" + IDS_INTEL_25029 "UNUSED" + IDS_INTEL_25030 "MAPPA: Tenuta@" + IDS_INTEL_25031 "Nota da Hatori-san: istruzioni@Agente Archer,\n\nle ho lasciato delle istruzioni su come e dove contattarmi. Per ragioni di sicurezza, ho lasciato quattro messaggi codificati nel vicinato, ognuno dei quali contiene una parte del messaggio per lei. In questo modo, nel caso in cui una delle note venisse intercettata e tradotta, la mia sicurezza non verrà compromessa.\n\nLe ho anche lasciato un regalo vicino a un rivenditore automatico.\n\nIsamu Hatori" + IDS_INTEL_25032 "Nota da Hatori-san: incontro@Ci vediamo al negozio di dolci sul lato ovest del quartiere. Cerchi l'insegna con la gru." + IDS_INTEL_25033 "Nota da Hatori-san: cassetta postale rossa@Ci sono tre cassette postali davanti al negozio di dolci. Deve sistemarle secondo un ordine specifico, per mandarmi un segnale.\n\nLa cassetta postale rossa dev'essere aperta." + IDS_INTEL_25034 "Nota da Hatori-san: cassetta postale grigia@Ci sono tre cassette postali davanti al negozio di dolci. Deve sistemarle secondo un ordine specifico per mandarmi un segnale.\n\nLa cassetta postale grigia dev'essere chiusa." + IDS_INTEL_25035 "Nota da Hatori-san: cassetta postale blu@Ci sono tre cassette postali davanti al negozio di dolci. Deve sistemarle secondo un ordine specifico, per mandarmi un messaggio.\n\nLa cassetta postale blu dev'essere aperta." + IDS_INTEL_25036 "Promemoria clan Ninja: lamentele@A tutti i membri del clan:\n\nmi è giunta voce che alcuni di voi non sono contenti della nostra attuale missione. Mi rendo conto di come non sia particolarmente piacevole lavorare per una persona come il Direttore, ma non dimenticate che Isako-san ha con lui un debito d'onore. Per favore mettete da parte i risentimenti personali a favore del nostro clan.\n\nChiunque avesse problemi a gestire il proprio risentimento, potrà parlarne direttamente con Obaba, non appena questi avrà terminato l'ultima serie di veleni.\n\nMikiko Shena\nUfficiale stati d'animo" + IDS_INTEL_25037 "Nota: consegna valigetta@Agent Archer\n\nPer favore consegni la valigetta a Hatori-san alla prima occasione. Contiene informazioni riguardanti il suo prossimo incarico.\n\nBabbo Natale" + IDS_INTEL_25038 "UNUSED" + IDS_INTEL_25039 "Manuale della spia@MANUALE DI ESERCITAZIONE DELLA SPIA" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25040 "" + IDS_INTEL_25041 "Lettera da Isako: pagina 1@A: Hideko Sato\nDa: Isako, capo del clan Katakuri Ninja\n\nLa ringrazio del suo interessamento, ma non posso accettare la sua generosa offerta. Come saprà, ho verso il Direttore un debito d'onore. Non posso farmi da parte e lasciare che venga ucciso, anche se la sua morte significherebbe la mia libertà. La mia coscienza non potrebbe sopportare un simile tradimento." + IDS_INTEL_25042 "Lettera da Isako: pagina 2@Forse, se riuscisse a capire le circostanze del mio debito, apprezzerebbe anche le mie ragioni. Dopo l'omicidio dei miei genitori, fui trovata da un'anziana signora mentre vagavo per le strade di Tokyo. La sua salute precaria le impedì di prendersi cura di me, ma incaricò la figlia, il capo del clan Sakuragaoka ninja, di prendermi con sé e di addestrarmi." + IDS_INTEL_25043 "Lettera da Isako: pagina 3@All'età di 14 anni, ricevetti il mio primo incarico: uccidere un avido mercante che rapiva le ragazze per farle prostituire nelle sue bische clandestine. Si trattava di un compito facile, ma fui catturata prima di portarlo a termine, poiché fui tradita proprio da colui che aveva commissionato l'assassinio di quell'uomo. Aveva architettato tutto in modo da potermi catturare e guadagnarsi i favori del suo capo." + IDS_INTEL_25044 "Lettera da Isako: pagina 4@Prima che il mercante mi condannasse a morte, il suo amico europeo lo convinse a risparmiarmi la vita e a farmi lavorare per lui. Così, il Direttore, che poi era la stessa persona, diventò il mio nuovo capo. Come vedi, devo la mia vita a quest'uomo e devo ripagarlo della sua generosità, nonostante fosse motivata da fini egoistici. La ringrazio comunque, molto umilmente, per la sua considerazione.\n\nIsako" + IDS_INTEL_25045 "Manuale della spia@MANUALE DI ADDESTRAMENTO DELLA SPIA" + IDS_INTEL_25046 "Nota da Hatori-san: scuse@Agente Archer,\n\na causa dell'aumento delle attività ninja, non posso più rimanere in quest'area. Per favore, ritorni al villaggio, dove Yamata-san la sta aspettando.\n\nFaccia molta attenzione. Non ho mai visto il clan così determinato.\n\nIsamu Hatori" + IDS_INTEL_25047 "Promemoria UNITY: parlare con la gente@Agente Archer,\n\ncerchi sempre di parlare con le persone che si identificano come amici per capire se hanno informazioni o consigli utili. Potrebbe aver bisogno di rivolgersi a loro diverse volte, prima di fargli dire tutto ciò che sanno.\n\nBabbo Natale" + IDS_INTEL_25048 "Lettera: il Direttore@Caro sig. Jones,\n\nho raccolto alcune informazioni su questo misterioso uomo inglese. Secondo le fonti locali, ha comprato la proprietà Fujioka più di dieci anni fa. Gli hanno sentito dire che è venuto in Giappone perché è molto distante dall'Inghilterra, anche se nessuno sa come mai questo fattore sia così importante per lui. Procederò con le investigazioni.\n\nIsamu Hatori" + IDS_INTEL_25049 "Lettera: compleanno di Isako@Mia cara Isako,\n\nmi rendo conto di non essere sempre stato il mentore ideale e che devo i tuoi servigi più a un senso del dovere che a una reale devozione. Non posso dire di biasimarti per questo. Nello stesso tempo, spero ti renda conto di quanto tu sia diventata importate per me.\n\nL'onore e la competenza sono rari tra gli arroganti, la legge protegge gli ipocriti che ho giurato a me stesso di terrorizzare.\n\nBuon compleanno.\n\nIl Direttore" + IDS_INTEL_25050 "Nota: Isako e il Direttore@Onorabile assistente amministrativo,\n\nieri sera ero di guardia all'edificio principale. Mentre stavo perlustrando il tetto, ho sentito delle risate provenienti da una finestra aperta. Il direttore stava spiegando ai sui commensali i giochi manipolativi che deve mettere in atto per placare la sua fedele serva ninja. Ha detto che Isako è particolarmente sensibile al calore paterno, come un cane. DEVE dirglielo! Quell'uomo ha un comportamento intollerabile.\n\nMasayo" + IDS_INTEL_25051 "Nota: segni col gesso@Agente Archer,\n\nHatori-san ci ha informato di aver visto un ninja mentre faceva dei segni con un gesso davanti a tre edifici in questa zona. Presumiamo che siano segnali per degli agenti che devono effettuare scambi o consegne di oggetti o informazioni.\n\nProvi a trovare e a cancellare questi segni, in modo che possiamo dirottare le consegne verso siti di nostra scelta.\n\nBabbo Natale" + IDS_INTEL_25052 "Nota: pazienza@Masayo-sa,n\n\ncomprendo e condivido la sua frustrazione, ma dobbiamo essere pazienti. Il senso di onore che anima Isako-san è molto profondo. Niente la convincerà a metterlo da parte. Lo so per esperienza. Qualche giorno sarà lui a tradirsi per lei. Tutto ciò che posso fare è assicurarmi che abbia sempre il suo personale tornaconto a tenere la lingua sciolta.\nAssistente amministrativo" + IDS_INTEL_25053 "Nota da Hatori-san: attenzione@Agente Archer,\n\nquando si avvicina alla zona del bersaglio, stia attenta a non fare molto rumore, altrimenti non riuscirà a fotografare il Direttore. Sarebbe un peccato perdere i punti abilità che ne deriverebbero, se fosse catturata.\n\nIsamu Hatori" + IDS_INTEL_25054 "Promemoria UNITY: lancia strumenti@Agente Archer,\n\nil lancia strumenti CT-180 costituisce uno dei nostri strumenti più versatili. Le sue munizioni standard sono dei piccoli dispositivi di puntamento che segnalano sulla tua bussola la posizione di un bersaglio. Il dardo è così leggero che i nemici non si accorgeranno nemmeno di essere stati colpiti.\n\nBabbo Natale" + IDS_INTEL_25055 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25056 "UNUSED" + IDS_INTEL_25057 "UNUSED" + IDS_INTEL_25058 "UNUSED" + IDS_INTEL_25059 "UNUSED" + IDS_INTEL_25060 "" + IDS_INTEL_25061 "Promemoria clan ninja: allerta@Tutti i membri del clan devono tenersi in massima allerta! La spia è ancora in libertà! Piazzate dei blocchi stradali lungo le strade provenienti da sud e da est!\n\nNon lasciatela scappare\n\nHaruko Muroi\nAssistente amministrativo" + IDS_INTEL_25062 "Promemoria clan ninja: la spia@ATTENZIONE A TUTTI I MEMBRI\n\nVoglio che la spia muoia rapidamente e con onore. Il Direttore e il suo spietato servo non devono trarre soddisfazione dalla sua morte.\n\nIsako" + IDS_INTEL_25063 "Nota: ritardo di Emiko@Emiko,\n\ndove sei? L'allarme è suonato e tutti devono dirigersi verso le loro postazioni. Se vedi questa nota, sbrigati, prima che Isako-san si accorga della tua assenza!\n\nYukiko" + IDS_INTEL_25064 "Manuale della spia@MANUALE DI ADDESTRAMENTO DELLA SPIA" + IDS_INTEL_25065 "Promemoria clan ninja: Cate Archer@ATTENZIONE A TUTTI I MEMBRI\n\nL'obiettivo di questa sera è Cate Archer, super spia inglese. Non la sottovalutate.\n\nOh... e assicuratevi che soffra.\n\nIl Direttore" + IDS_INTEL_25066 "UNUSED" + IDS_INTEL_25067 "UNUSED" + IDS_INTEL_25068 "UNUSED" + IDS_INTEL_25069 "" + IDS_INTEL_25070 "Promemoria clan ninja: lettura punitiva di poesie@ATTENZIONE A TUTTI I MEMBRI\n\nIl Direttore ha stabilito che, se la spia riuscirà a scappare, l'intero clan sarà soggetto alla recita punitiva di poesie composte da sua madre, incluso il poema epico " + IDS_INTEL_25071 "Promemoria clan ninja: cancellazione della festa@ATTENZIONE A TUTTI I MEMBRI DEL CLAN\n\nA causa dell'emergenza prevista per questa sera, la festa di compleanno di Mikiko-san verrà rimandata a domani sera.\n\nHaruko Muroi\nAssistente amministrativo" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25072 "UNUSED" + IDS_INTEL_25073 "UNUSED" + IDS_INTEL_25074 "UNUSED" + IDS_INTEL_25075 "UNUSED" + IDS_INTEL_25076 "UNUSED" + IDS_INTEL_25077 "UNUSED" + IDS_INTEL_25078 "UNUSED" + IDS_INTEL_25079 "UNUSED" + IDS_INTEL_25080 "" + IDS_INTEL_25081 "Manuale UNITY: abbandonare un'area 2@ABBANDONARE UN'AREA, SECONDA PARTE\n\nL'icona Porta con una freccia a doppio senso indica che puoi ritornare in un'area dopo averla abbandonata. Occasionalmente, dovrai andare avanti e indietro tra le aree per superare ostacoli e portare a termine determinati obiettivi." + IDS_INTEL_25082 "MAPPA: territorio della base@" + IDS_INTEL_25083 "Promemoria sovietico: annegamento@A tutto il personale\nDa: Ufficio Risorse Umane\n\nLa produzione della nostra grande installazione è diminuita a causa della sfortunata e probabilmente accidentale morte per annegamento dei compagni Nikolai e Alexey. È vietato alle pattuglie prendere scorciatoie vicino al lago ghiacciato fino a nuovo ordine.\n\nSiete sotto osservazione." + IDS_INTEL_25084 "UNUSED" + IDS_INTEL_25085 "Promemoria UNITY: saldatore@Agente Archer,\n\nho aggiunto una piccola sorpresa nella sua lacca per capelli. Lo usi per tagliare certi tipi di serrature e cardini metallici. Buona fortuna!\nBabbo Natale" + IDS_INTEL_25086 "Scartoffie sovietiche: razioni di sigarette@A tutto il personale\n\nL'appendice 90/C-4 del Manuale di igiene personale e della forma fisica (volume 7, pagina 3.483) stabilisce una razione giornaliera di 18 sigarette per soldato. Qualsiasi eccedenza è punibile con la morte, a meno che le sigarette non vengano rubate (atto punibile con torture e morte) o cedute volontariamente ad altri compagni (atto punibile con torture ma non con la morte).\n\nSiete sotto osservazione." + IDS_INTEL_25087 "Promemoria UNITY: riunione sulla missione@Agente Archer,\n\nle nostre forze di intelligence suggeriscono che entrare nell'edificio è molto più semplice che uscirne. Per questo, il suo primo obiettivo sarà quello di sabotare i sistemi di comunicazione e di alimentazione della corrente.\n\nInoltre, dovrà piazzare delle cariche esplosive sul ponte vicino alla sua posizione attuale che esploderanno quando lo avrà oltrepassato sulla via del ritorno. Mettere fuori uso il ponte dovrebbe impedire qualsiasi inseguimento.\n\nHo segnato la posizione della cabina di caccia dove abbiamo lasciato per lei dei rifornimenti aggiuntivi, incluso un fucile di precisione che le dovrebbe tornare molto utile.\n\nBabbo natale" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25088 "Promemoria UNITY: lancia strumenti@Agente Archer,\n\nho incluso un lancia strumenti CT-180 standard con 10 dardi tranquillanti riutilizzabili. Ogni dardo sprigiona un potente sedativo che farà cadere il bersaglio in un sonno profondo e istantaneo. Attenzione che i nemici svenuti prima o poi si risvegliano.\n\nPuò usare il tasto Cambia munizioni (predefinito: F) per alternare l'uso delle munizioni tranquillanti o di puntamento. Si ricordi che può anche visualizzare la schermata Equipaggiamento per cambiare le munizioni mentre il gioco è in pausa.\n\nBabbo Natale" + IDS_INTEL_25089 "UNUSED" + IDS_INTEL_25090 "UNUSED" + IDS_INTEL_25091 "UNUSED" + IDS_INTEL_25092 "UNUSED" + IDS_INTEL_25093 "UNUSED" + IDS_INTEL_25094 "UNUSED" + IDS_INTEL_25095 "UNUSED" + IDS_INTEL_25096 "UNUSED" + IDS_INTEL_25097 "UNUSED" + IDS_INTEL_25098 "UNUSED" + IDS_INTEL_25099 "UNUSED" + IDS_INTEL_25100 "" + IDS_INTEL_25101 "Promemoria UNITY: cabina di caccia@Agente Archer,\n\nqui troverà i rifornimenti lasciati dal nostro agente.\n\nQuando avrà portato a termine i suoi obiettivi, torni qui e si metta in contatto radio con il quartier generale. Le conviene aspettare che faccia buio prima di procedere verso l'accampamento militare.\n\nBabbo Natale" + IDS_INTEL_25102 "UNUSED" + IDS_INTEL_25103 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25104 "UNUSED" + IDS_INTEL_25105 "UNUSED" + IDS_INTEL_25106 "UNUSED" + IDS_INTEL_25107 "UNUSED" + IDS_INTEL_25108 "UNUSED" + IDS_INTEL_25109 "UNUSED" + IDS_INTEL_25110 "UNUSED" + IDS_INTEL_25111 "UNUSED" + IDS_INTEL_25112 "UNUSED" + IDS_INTEL_25113 "UNUSED" + IDS_INTEL_25114 "UNUSED" + IDS_INTEL_25115 "UNUSED" + IDS_INTEL_25116 "UNUSED" + IDS_INTEL_25117 "UNUSED" + IDS_INTEL_25118 "UNUSED" + IDS_INTEL_25119 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25120 "" + IDS_INTEL_25121 "Scartoffie sovietiche: consumo di caffè@A tutto il personale\n\nL'appendice 90/C-4 del Manuale di igiene personale e della forma fisica (volume 12, pagina 4) specifica che ogni soldato ha diritto a consumare nè più nè meno di 9 tazze di caffè al giorno. Il personale sorpreso a diluire il proprio caffè con acqua o con altra sostanza liquida, verrà abbattuto a vista. Chiunque venga sorpreso a versare la bevanda nei vasi di piante o negli scarichi, verrà giustiziato con un'iniezione letale. Dare il proprio caffè a un cane è punibile con l'invio a svolgere mansioni di archiviazione nell'edifico principale degli archivi.\n\nSiete sotto osservazione." + IDS_INTEL_25122 "Promemoria sovietico: richiesta accesso M-9@Tenente Guniko,\n\nle scrivo per richiedere l'accesso all'area dell'Unità di elaborazione dati M-9, nel nuovo edificio degli archivi. Sono stato riassegnato al progetto Omega, ma non posso presentarmi sul posto di lavoro senza l'adeguato controllo di sicurezza. Ho già fatto numerose richieste in questo senso, ma mi sono sempre stare rifiutate in quanto non ho accesso all'area Unità di elaborazione dati M-9. Non sono sicuro su come procedere.\n\nRispettosamente,\nCaporale Butsenko" + IDS_INTEL_25123 "Promemoria sovietico: accesso M-9 negato@Caporale Butsenko,\n\nmi dispiace doverla informare che non posso approvare la sua richiesta di accesso all'area Unità di elaborazione dati M-9. Nonostante capisca la difficoltà della situazione in cui si trova, non ho l'autorità di garantire i controlli di sicurezza a chiunque non abbia già l'accesso all'area in questione. Una volta che avrà ottenuto l'autorizzazione necessaria, io potrò garantirle quella di mia competenza. Spero che le informazioni che le ho dato le siano chiare.\n\nTenente Guniko" + IDS_INTEL_25124 "UNUSED" + IDS_INTEL_25125 "UNUSED" + IDS_INTEL_25126 "UNUSED" + IDS_INTEL_25127 "Documento: rapporto sulla preparazione, 1@Rapporto sulla preparazione militare sovietica\n\nPrima parte. Informazioni precedenti\n\nQuesto rapporto è stato stilato seguendo le richieste del Generale Nikolai Zhukov, una persona davvero squisita e una figura per me emblematica. Sapete che il Generale Zhukov è stato decorato veterano della Grande Guerra Patriottica? È la verità! Inoltre, è un appassionato di botanica, con un interesse particolare verso le piante della famiglia delle crocifere, che sono anche le mie preferite. Specialmente le bietole." + IDS_INTEL_25128 "UNUSED" + IDS_INTEL_25129 "UNUSED" + IDS_INTEL_25130 "Scartoffie sovietiche: richiesta di carburante@MODULO RICHIESTA J-9:\n\n1. Bene richiesto: carburante per veicoli, 10 barili.\n2. Ragione della richiesta: rifornimento inadeguato.\n3. Facendo questa richiesta, vorresti forse dire che l'Unione Sovietica non soddisfa i tuoi bisogni? ( )Sì (X)No" + IDS_INTEL_25131 "UNUSED" + IDS_INTEL_25132 "UNUSED" + IDS_INTEL_25133 "UNUSED" + IDS_INTEL_25134 "UNUSED" + IDS_INTEL_25135 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25136 "UNUSED" + IDS_INTEL_25137 "UNUSED" + IDS_INTEL_25138 "UNUSED" + IDS_INTEL_25139 "UNUSED" + IDS_INTEL_25140 "" + IDS_INTEL_25141 "Rapporto sovietico: BLINDSIDE@A: Generale Zhukov\nDa: KLAUS\n\nBLINDSIDE sta procedendo secondo i piani. Di tutte le nostre illustri operazioni contro il Grande Avversario, nessuna è mai stata audace e ambiziosa quanto questa e nemmeno tanto sicura nella sua riuscita di sconfiggere e umiliare il nemico, portando al vero trionfo dell'Unione Sovietica. Farò un nuovo rapporto dopo che avrò preso contatto con MR. BIG e avrò stilato una proposta. Sono sicuro che sarà molto ben disposto dopo aver valutato la nostra generosa offerta." + IDS_INTEL_25142 "Rapporto sovietico: BLINDSIDE in stallo@A: Generale Zhukov\nDa: KLAUS\n\nBLINDSIDE è andato in fumo. Sospetto un tradimento, dato che il mio tentativo di incontrare MR. BIG è stato ripetutamente ostacolato. Il Grande Avversario deve essere venuto a conoscenza delIa nostra intenzione di reclutare il presidente Johnson, il che spiegherebbe perché non riesco a fissare un appuntamento con lui. Sono sicuro che basterebbe un colloquio di cinque minuti con lui, per fargli abbracciare la nostra causa, ma gli americani sono estremamente furbi. Non si fidano di nessuno." + IDS_INTEL_25143 "Manuale della spia@MANUALE DI ADDESTRAMENTO DELLA SPIA" + IDS_INTEL_25144 "UNUSED" + IDS_INTEL_25145 "UNUSED" + IDS_INTEL_25146 "Documento: preparazione, seconda parte@Rapporto sulla preparazione militare sovietica\n\nSeconda parte. Conclusioni\n\nCome è già stato affermato, il Generale Zhukov è l'individuo più ammirevole che esista, i cui numerosi e straordinari risultati forniscono un eccellente esempio da seguire per un buon sovietico. Adora lo sci di fondo, la musica folcloristica siberiana e le romantiche serate sulla riva del lago Baikal in compagnia delle sue svariate amanti, inclusa mia moglie Nadia. Per concludere, credo sia chiaro che la milizia sovietica debba considerarsi benedetta per la presenza di un capo la cui saggezza costituisce tutta la preparazione di cui abbiamo bisogno." + IDS_INTEL_25147 "Promemoria sovietico: sabotaggio@RAPPORTO TOP-SECRET ANTI SABOTAGGIO\n\nCompagno Karpov,\n\ndopo aver ispezionato la sua struttura, concludo dicendo che l'unica seria minaccia di sabotaggio che rischia deriva da una carica demolitrice piazzata all'interno del pannello di accesso tra i due generatori principali. Ovviamente, le possibilità che una scadente spia capitalista riconosca e sfrutti questa opportunità sono praticamente nulle.\n\nÈ superfluo specificare che questo rapporto deve rimanere segreto e ben custodito.\n\nCaporale Butsenko" + IDS_INTEL_25148 "UNUSED" + IDS_INTEL_25149 "UNUSED" + IDS_INTEL_25150 "UNUSED" + IDS_INTEL_25151 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25152 "UNUSED" + IDS_INTEL_25153 "UNUSED" + IDS_INTEL_25154 "UNUSED" + IDS_INTEL_25155 "UNUSED" + IDS_INTEL_25156 "UNUSED" + IDS_INTEL_25157 "UNUSED" + IDS_INTEL_25158 "UNUSED" + IDS_INTEL_25159 "UNUSED" + IDS_INTEL_25160 "" + IDS_INTEL_25161 "Scartoffie sovietiche: richiesta di accesso M-9@RICHIESTA DI ACCESSO ALL'AREA DI ELABORAZIONE DATI M-9\n\n1.Motivo della richiesta: rapporto progressivo ultimo trimestre per il Generale Zhukov sul Progetto Omega\n2. Data richiesta:\n ( ) 3 mesi\n ( ) 6 mesi\n ( ) Anno prossimo\n (x) Altro: ordine con priorità uno dal Generale Zhukov\n3. Se avete scelto Altro, è obbligatorio fornire i nomi di tre parenti in caso la richiesta venisse negata e si reputasse necessaria un'esecuzione punitiva: Oleg Andropov, Sergei Osipov, Lena Osipov" + IDS_INTEL_25162 "Lettera: visita di Anya@Carissimo Sergei,\n\ngrazie per la tua lettera. Certo che ti perdono. Oltretutto, capisco che tu fossi ubriaco e inoltre, il segno della cicatrice si nota appena.\n\nNon riesco ancora a credere che mi tu mi abbia portato tre paia di blue jeans! Mi manchi così tanto. Devo venirti a trovare uno di questi giorni. Sei sicuro che siano della misura giusta? Oh, mi sembra passata un'eternità dall'ultima volta che ti ho visto! Sono così eccitata! Ho sempre sognato di avere dei blue jeans!\n\nAnya" + IDS_INTEL_25163 "Lettera: riassicurazione di Anya@Caro Sergei,\n\ncome puoi solo pensare una cosa del genere, mio dolce tesoro?! Sono eccitata per i jeans, naturalmente, ma è TE che voglio vedere. Non sono il tipo di donna che porta rancore verso un uomo solo perché lui le ha rotto una bottiglia di vodka in testa senza nessun motivo! Considero quei pochi giorni che ho trascorso in ospedale come una vacanza che avevo bisogno di prendere da tempo. E il dottore dice che i dolori dovrebbero passare presto! Non sei eccitato all'idea di vedermi in jeans?\n\nAnya" + IDS_INTEL_25164 "Lettera: perdono di Anya@Sergei, amore mio,\n\nnon vedo l'ora di vederti! È davvero premuroso da parte tua lasciare la porta sul retro aperta, ma mi preoccupa il recinto di sicurezza ad alta tensione. Ti sei dimenticato cosa è successo alla povera moglie di Yuri, l'estate scorsa? Benché il nuovo look dei capelli le doni davvero molto. Mio fratello ha detto che potresti versare un po' di zucchero nel serbatoio del generatore che alimenta il recinto di sicurezza, dato che è su un circuito separato. Era solito fare la guardia lì.\n\nAnya" + IDS_INTEL_25165 "MAPPA: campo sovietico@" + IDS_INTEL_25166 "UNITY Memo: sabotaggio deposito carburante@Agente Archer,\n\nil deposito di carburante che rifornisce la base è situato nel campo esterno, vicino alla posizione in cui si trova adesso. Se riuscirà a sabotarlo, prenderà due piccioni con una fava; innanzitutto, creerà un diversivo abbastanza eclatante che le faciliterà l'uscita dalla base, in secondo luogo, renderà inefficiente la base finché non viene riparato, circostanza che ci sarà di aiuto per le nostre prossime missioni segrete nelle vicinanze. Il cronometro della carica esplosiva è impostato per saltare in aria durante la sua fuga." + IDS_INTEL_25167 "Ricetta per la zuppa@Zuppa di cavolo alla russa: 1/2 kg di arrosto di culaccio, 1 cavolo medio a tocchettini, 1 grossa cipolla, 2 cucchiai di aceto, 1 spicchio d'aglio, 2 cucchiai di zucchero. Mettere gli ingredienti in una pentola larga e coprirli con acqua fredda. Lasciare riposare per 1 ora. Bollire per 3 ore." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25168 "Nota: basta cavoli!@Basta con la zuppa di cavoli! Hai passato un po' di tempo vicino alle latrine? Abbi pietà dei tuoi compagni!" + IDS_INTEL_25169 "Scartoffie sovietiche: richiesta cavoli@MODULO RICHIESTA PRODOTTI FRESCHI R-4/2:\n\n1. Prodotti freschi richiesti:\n (x) Cavolo, ( ) Barbabietole, ( ) Patate, ( ) Ravanelli\n2. Quantità: 400 teste\n3. Priorità di consegna:\n (x) una settimana, ( ) un mese, ( ) un anno, ( ) indifferente" + IDS_INTEL_25170 "UNUSED" + IDS_INTEL_25171 "UNUSED" + IDS_INTEL_25172 "UNUSED" + IDS_INTEL_25173 "UNUSED" + IDS_INTEL_25174 "UNUSED" + IDS_INTEL_25175 "UNUSED" + IDS_INTEL_25176 "UNUSED" + IDS_INTEL_25177 "UNUSED" + IDS_INTEL_25178 "UNUSED" + IDS_INTEL_25179 "UNUSED" + IDS_INTEL_25180 "" + IDS_INTEL_25181 "Nota: uno strano pacco@Tenente Pupkin,\n\n ho trovato questo pacco mentre stavo perlustrando il lato sud. Il suo involucro luccicante ed elegante mi porta a credere che si tratti di un piano elaborato dai capitalisti. Il suo saggio consiglio mi sarà molto prezioso per decidere il da farsi.\n\nSergente Kominski" + IDS_INTEL_25182 "Prima che ti sfiori solo l'idea di versare dello zucchero in questo serbatoio cosicché la tua amichetta possa oltrepassare il recinto ad alta tensione, ricordati cosa è capitato a Sergei Putkin, la cui coscienziosa amichetta, Anya, mi aveva confessato in lacrime che lui aveva sabotato il generatore per farla entrare di nascosto nel campo. Ripensa ai vermi che stanno rosicchiando le sue codarde e antipatriottiche ossa.\n\nSei sotto osservazione." + IDS_INTEL_25183 "Scartoffie sovietiche: modulo di richiesta@MODULO RICHIESTA J-9:\n\n1. Oggetti richiesti: carta igienica, 1 rotolo.\n2. Motivo della richiesta: scorte insufficienti.\n3. Luogo di consegna prescelto:\n ( ) Mosca, (x) Pietrogrado,\n ( ) Bucarest, ( ) Miami Beach\n4. Priorità di consegna:\n ( ) una settimana, ( ) un mese, ( ) un anno,\n ( ) Credo che la mia risposta non influisca sui tempi effettivi di consegna." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25184 "Scartoffie sovietiche: modulo rifiuto@MODULO RIFIUTO R-27\n\nLa richiesta di carta igienica avanzata nell'apposito modulo J-9 è stata rifiutata. Non è stata specificata la priorità di consegna." + IDS_INTEL_25185 "Scartoffie sovietiche: modulo 2a richiesta@APPENDICE MODULO SECONDA RICHIESTA J-9-17b\n\nSecondo quanto specificato a pagina 137 delle Istruzione sulla compilazione del modulo di richiesta J-9: " + IDS_INTEL_25186 "Scartoffie sovietiche: disciplina intossicazione@MODULO AZIONE DISCIPLINARE B-21-K\n\n\n1. Motivo punizione: intossicazione in servizio\n2. Membri del personale da punire: ( ) meno di 5, (x) 5 - 10, ( ) più di 10\n3. Punizione richiesta:\n (x) morte per fucilazione, ( ) morte per asfissia, ( ) ufficio archiviazione." + IDS_INTEL_25187 "Promemoria sovietico: appendice @ all’attenzione di: Ufficio Risorse Umane\nDa: Tenente Petrakov\n\n Causa emissione dell’Appendice G-9 del modulo di Azione Disciplinare, che offre due nuove alternative punitive volontarie al servizio archiviazione (nello specifico, Morte per fucilazione e Morte per asfissia), prevedete un aumento per le richieste di fucilazione e asfissia." + IDS_INTEL_25188 "Manuale UNITY: telecamere di sicurezza @ TELECAMERE DI SICUREZZA\n\nSe una telecamera di sicurezza vi scopre, un allarme suonerà, richiamando rinforzi a setacciare l’area in questione. La telecamera impiegherà qualche attimo per riuscire mettervi a fuoco e a identificarvi come una minaccia, quindi imparate a uscire dal loro raggio visivo nel momento in cui sentite il sibilo distintivo e meccanico delle lenti che girano. Siccome le telecamere sono monitorate da posizione remota, distruggerle farebbe scattare un allarme, ma voi potete usare munizioni speciali per il vostro CT-180 lancia strumenti, che le disabiliteranno e le renderanno inoperative." + IDS_INTEL_25189 "Promemoria UNITY: inibitore telecamera@Agente Archer,\n\nspero che questo pacco le arrivi integro. Gliel'ho dovuto inviare per vie traverse.\n\nAl suo interno troverà un lancia strumenti CT-180 con munizioni per inibire le telecamere. Questi subdoli dispositivi attaccati a una telecamera di sicurezza catturano le immagini secondo il loro punti di vista e le proiettano nelle lenti delle telecamere. Chiunque stia controllando i sistemi di sicurezza crederà che si tratti di riprese dal vivo.\n\nBabbo Natale" + IDS_INTEL_25190 "UNUSED" + IDS_INTEL_25191 "UNUSED" + IDS_INTEL_25192 "UNUSED" + IDS_INTEL_25193 "UNUSED" + IDS_INTEL_25194 "UNUSED" + IDS_INTEL_25195 "UNUSED" + IDS_INTEL_25196 "Nota: vietato fumare!@ IN QUEST'AREA È VIETATO FUMARE..\n\nI trasgressori verranno fucilati." + IDS_INTEL_25197 "UNUSED" + IDS_INTEL_25198 "Ricetta: aringhe ricoperte@Ricetta di mamma Pupkin per le aringhe ricoperte:\n\nUn’aringa, 3 patate bollite, 1 barbabietola bollita, 6 anelli di cipolle, 1 barattolo di olive nere sott’olio, 2 uova sode tagliate a fette.\n\nTagliare l’aringa a dadini di circa 2,5 cm. Pelare le patate e la barbabietola e tagliare il tutto a dadini di un centimetro. Tagliare gli anelli di cipolle in pezzetti di circa un centimetro. Spargere il fondo dell’insalatiera con pezzi di aringa, coprire con anelli di cipolle, patate e aggiungere infine i dadini di barbabietola. Spalmare della maionese sopra i dadini di barbabietola e decorare con olive e spicchi di uova. Servire freddo." + IDS_INTEL_25199 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25200 "" + IDS_INTEL_25201 "Nota: zucchero@ATTENZIONE\n\nFino a nuovo avviso, lo zucchero sarà tenuto sotto chiave per evitare il ripetersi del sabotaggio al generatore avvenuto sabato scorso. Per richiedere dello zucchero, compilare e consegnare al vostro ufficiale di comando un modulo di richiesta." + IDS_INTEL_25202 "Nota: zuppa di cavoli aggiuntiva@ATTENZIONE A TUTTO IL PERSONALE: come ricompensa per la diminuzione del 2% del tasso di mortalità accidentale e semi-accidentale in questo impianto rilevato lo scorso mese, tutti i soldati riceveranno un supplemento di zuppa di cavoli tutte le sere per l’intera settimana! Continuate a lavorare con questa dedizione e presto avrete tutta la zuppa di cavoli che vorrete!\n\nGenerale Zhukov" + IDS_INTEL_25203 "UNUSED" + IDS_INTEL_25204 "UNUSED" + IDS_INTEL_25205 "UNUSED" + IDS_INTEL_25206 "UNUSED" + IDS_INTEL_25207 "UNUSED" + IDS_INTEL_25208 "UNUSED" + IDS_INTEL_25209 "UNUSED" + IDS_INTEL_25210 "UNUSED" + IDS_INTEL_25211 "Combinazione della cassaforte@Tenente Petrakov,\n\nsono stato convocato a Mosca per partecipare a un tribunale speciale per estirpare cittadini poco patriottici che ricoprono posizioni governative. Ho lasciato il documento top secret di cui abbiamo discusso nella cassaforte a muro del mio ufficio, che si trova al terzo piano del vecchio palazzo degli archivi. La combinazione è 12-38-53. Rimetta a posto il documento quando ha terminato. Non vorrei finisse in mani sbagliate!\n\nTenente Pupkin" + IDS_INTEL_25212 "Lettera da Oleg@Miei cari cospiratori, \n\nl’ora della rivoluzione si avvicina. Ho provveduto ali necessari preparativi. In meno di una settimana, noi tre potremo essere liberati dalle catene della tirannia e costituiremo un esempio per tutti i russi, bramosi di libertà quanto noi.\n\nOleg Dorofeev" + IDS_INTEL_25213 "Lettera da Sergei@Miei cari fratelli di cospirazione,\n\nl’esito della rivoluzione è tutto nelle nostre mani. Posso praticamente sentire il dolce vento della libertà sulla mia pelle. L’attesa è una prigione. Mi sento ingabbiato, ansioso, intrappolato in questa miserabile uniforme e tutto quello che rappresenta.\n\nSergei Romanov" + IDS_INTEL_25214 "Lettera da Yuri@Miei cari compagni rivoluzionari,\n\nho appena visto le previsioni del tempo. Un fronte freddo sta arrivando da nord. Sebbene come voi brami per la liberazione, forse è il caso di rimandare la rivoluzione fino a che il tempo non migliori. Correre nudi attraverso il campo, nel mezzo di una bufera di neve, somiglia molto più a un gesto di follia che a un’insurrezione.\n\nYuri Prokofiev" + IDS_INTEL_25215 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25216 "" + IDS_INTEL_25217 "" + IDS_INTEL_25218 "" + IDS_INTEL_25219 "" + IDS_INTEL_25220 "" + IDS_INTEL_25221 "Promemoria sovietico: progetto Omega@A: Tenente Pupkin\nDa: ufficio del Generale Zhukov\nIl Generale le richiede di fornirgli una matrice di possibilità di realizzazione del progetto Omega entro 10 giorni. Si procuri un modulo richiesta accesso M-9 dall'ufficio moduli." + IDS_INTEL_25222 "Promemoria sovietico: progetto Omega@A: Tenente Petrakov\nDa: Colonnello Pupkin\nAllora Evo, che ne dici di quest'affare Omega del Generale? Devo far girare una matrice di realizzabilità sull'M-9 per la prossima settimana, ammesso di poter avere l'autorizzazione a usare la macchina. Qualcosa mi dice che non ne valga la pena. Lasciamo che si avvicinino al decadente ovest." + IDS_INTEL_25223 "Scartoffie sovietiche: richiesta M-9@RICHIESTA ACCESSO CENTRO ELABORAZIONE DATI M-9\n\n1.Motivo della richiesta: esecuzioni mensili degli impiegati\n2. Data richiesta:\n ( ) 3 mesi, ( ) 6 mesi, ( ) Anno prossimo, (x) Altro: ordine priorità uno del Generale Zhukov\n3. Se avete scelto Altro, è necessario fornire i nomi di tre parenti in caso di rifiuto della richiesta e di necessità di esecuzioni punitive: Zenia Yakov, Eduard Stepanov, Igor Stepanov" + IDS_INTEL_25224 "Lettera: progetto Occhi ben aperti@Laboratorio Pupkov, Petropavlovsk-Kamchatsky\n\nRisultati del progetto Occhi ben aperti: i benefici degli stimolanti sono chiari. Al gruppo A sono state assegnate 18 sigarette e 9 tazze di caffè al giorno. Controllo Gruppo B (con base in Finlandia) non effettuato. In un arco di 26 mesi, il gruppo A risulta dormire in media il 42% in meno. Mentre il tasso di mortalità dovuto agli incidenti sul lavoro è aumentato dell’87 per cento: concludiamo che una maggiore rotazione dei lavoratori mitigherà la diminuzione di produttività dovuta all’invecchiamento." + IDS_INTEL_25225 "Fotografia: Dimitri Volkov@" + IDS_INTEL_25226 "UNUSED" + IDS_INTEL_25227 "UNUSED" + IDS_INTEL_25228 "UNUSED" + IDS_INTEL_25229 "CIANOGRAFIA: seminterrato palazzo archivi@" + IDS_INTEL_25230 "UNUSED" + IDS_INTEL_25231 "Fotografia: Generale Zhukov@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25232 "UNUSED" + IDS_INTEL_25233 "UNUSED" + IDS_INTEL_25234 "UNUSED" + IDS_INTEL_25235 "UNUSED" + IDS_INTEL_25236 "UNUSED" + IDS_INTEL_25237 "UNUSED" + IDS_INTEL_25238 "UNUSED" + IDS_INTEL_25239 "UNUSED" + IDS_INTEL_25240 "" + IDS_INTEL_25241 "Comunicato sovietico: Il Direttore@All’attenzione di: Comandante Pim\nDa: Generale Nikolai Zhukov\n\nInformi il suo illustre Direttore che, da prode comunista, sono immune alle sue coercitive tattiche capitalistiche di vendita. Perfino un comandante visionario come me non si affretta in schemi che potrebbero mettere a rischio la stabilità globale. Apprezzo la sua volontà di mandarmi rappresentanti di servizio a tenere seminari per la mia squadra, ma non creda che io sia così indebitato da firmare un contratto senza aver pienamente valutato il servizio che sto acquistando." + IDS_INTEL_25242 "Scartoffie sovietiche: riparazione bagno@MODULO RICHIESTA RIPARAZIONE 19a\n\n1. Riparazione richiesta: chiusura buco nel bagno delle donne.\n2. Motivo richiesta: le glorie delle nostre belle donne russe distolgono i lavoratori dal loro dovere.\n3. Approvato da: sergente Igor." + IDS_INTEL_25243 "Scartoffie sovietiche: rifiuto riparazione bagno@MODULO RIFIUTO R-27\n\nLa richiesta di riparazione del bagno delle donne nel nuovo edificio degli archivi è stata respinta." + IDS_INTEL_25244 "Promemoria sovietico: piani americani@All’attenzione di: Generale Zhukov\nDa: Vladimir Kryuchkov\n\nCompagno, spero tu sia seduto. La notte scorsa ho ricevuto notizie da Anatoli, il nostro uomo a Palm Beach. Lui è il ragazzo di campagna mandato a Kamchatka per infiltrarsi ai più alti livelli del Pentagono, obiettivo raggiunto molto velocemente considerando la sua scarsa conoscenza della lingua inglese. Come temevamo, il Grande Avversario ha grandi piani per Khios. Vedi il rapporto allegato." + IDS_INTEL_25245 "Rapporto sovietico: Khios 1@PIANI AMERICANI PER KHIOS\nParte I.\n\nCome tutti sappiamo, gli Stati Uniti stanno sviluppando un progetto per lanciare di nascosto un primo colpo nucleare contro l’Unione Sovietica: legano testate nucleari a squali tigre e li mandano su per il fiume Dniper fino a Mosca dal Mar Nero. Hanno perfino creato apparati speciali per gli squali che gli consentono di sopravvivere nell’acqua dolce. Ora ANATOLI riporta che questo progetto è stato messo in attesa per la preparazione dell’invasione americana di Khios." + IDS_INTEL_25246 "Rapporto sovietico: Khios 2@PIANI AMERICANI PER KHIOS\nParte II.\n\nGli obiettivi del Grande Avversario principale sono chiari: conquistare Khios militarmente, eseguire esperimenti scientifici altamente immorali sulla popolazione civile e rimpiazzare le scuole e gli ospedali dell’isola con ristoranti fast food e alberghi per il soggiorno, tutto per cercare di sfruttare appieno le preziose risorse naturali di Khios." + IDS_INTEL_25247 "Conto spese: ANATOLI@ RIASSUNTO CONTO SPESE \nNome in codice operativo: ANATOLI\nLocalità: Palm Beach, Florida\nTotale spese: 573.000 USD.\n\nLista dettagliata degli oggetti acquistati:\n – Appartamento sul lungomare (per istituire il mito dell’agente)\n - Chevrolet Corvette Stingray (mezzo di trasporto)\n - Yacht di 1 metro (in caso debba lasciare gli Stati Uniti via mare)\n – Spese di sopravvivenza (cibo, servizi, scontrini del bar, biglietti per concerti, prostitute, ecc.)" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25248 "Promemoria sovietico: progetto Omega@All’attenzione di: Direttore della H.A.R.M.\nDa: Generale Nikolai Zhukov\n\nIn relazione a questo vostro cosiddetto progetto Omega, è necessario chiarire alcune questioni prima di inoltrare una Lettera di Intenti. Innanzitutto, stiamo cercando una soluzione che, non solo ci renda possibile annettere Khios, ma anche difenderla una volta ottenuto il nostro obiettivo finale: costruire il primo albergo comunista a cinque stelle e il casinò sulla parte nord dell’isola. Sarà in grado il progetto Omega di venire incontro a questa esigenza?" + IDS_INTEL_25249 "CIANOGRAFIA: seminterrato palazzo archivi 1ºp@" + IDS_INTEL_25250 "CIANOGRAFIA: seminterrato palazzo archivi 2ºp@" + IDS_INTEL_25251 "Nota: distributore automatico@Compagni, non fatevi ingannare da questo distributore! Ieri, mentre stavo archiviando, ho trovato prove evidenti di una pericolosa cospirazione per derubare gli onesti cittadini sovietici. Questi distributori automatici non contengono bevande CCCP, ma sono solo dei contenitori vuoti con un largo scompartimento per raccogliere le monete e un piccolo altoparlante che emette i suoni meccanicamente.Non fidatevi!\n\nMikhail" + IDS_INTEL_25252 "Rapporto: fraticella@FRATERCULA CIRRHATA\n\nLa fraticella prende il nome dal piumaggio giallo chiaro che spunta dietro agli occhi dell'uccello, anch'essi straordinariamente gialli e circondati da un anello rosso. La fraticella è un animale monogamo che si accoppia per la vita. Mentre uno dei genitori provvede ai bisogni dell'unico piccolo, all'interno del rifugio roccioso, l'altro pesca per la famiglia tutto il giorno." + IDS_INTEL_25253 "Rapporto: aquila di mare@HALIAECTUS SPELLAGICUS\n\nL'aquila di mare non caccia quasi mai per procurarsi direttamente il cibo. inizia la giornata spiando altri uccelli da preda, più piccoli, e seguendoli verso il potenziale pasto. A quel punto l'aquila si appresta a rubare il cibo. Siccome più aquile provano a rubare lo stesso cibo, possono scatenarsi scontri feroci, in cui vengono usati artigli e becchi per attaccare." + IDS_INTEL_25254 "Rapporto: orso bruno@URSUS ARCTOS\n\nL'orso bruno è vegetariano per la maggior parte della primavera, ma passa l'estate e l'autunno ingozzandosi di salmone e preparandosi per il letargo invernale. Un orso adulto può perdere fino a 160 kg durante l'inverno, peso che deve riprendere prima della successiva stagione fredda." + IDS_INTEL_25255 "Rapporto: foca da pelliccia@CALLORHINUS URSINUS\n\nLa foca è un affascinante mammifero marino. Interi branchi di maschi arrivano in maggio e giugno per stabilire i loro territori, in zone come le isole Pribilof. I maschi sono estremamente territoriali per quanto riguarda i loro harem e si affrontano in scontri violenti e chiassosi, emettendo richiami personali per rivendicare la loro proprietà e provare il loro potere." + IDS_INTEL_25256 "Promemoria sovietico: ricerca Kamchatka@A: ufficio del generale Zhukov\nDa: caporale Pupkin\nRiverito signore, la gloriosa ricerca popolare sulla natura della Kamchatka è stata completata. Ora possiamo cominciare a rimuovere gli animali per fare posto a dieci nuove e magnifiche fabbriche progettate per quella zona, ognuna delle quali si occuperà della produzione di attrezzature per fabbriche che ci serviranno a costruire altre fabbriche. Prevediamo uno straordinario incremento della produttività!" + IDS_INTEL_25257 "Promemoria UNITY: generale Zhukov@Agente Archer,\n\nse dovesse incontrare il generale Nikolai Zhukov, lo consideri un possibile bersaglio. In passato un NKVD, ha partecipato alla rilocazione dei ceceni in Asia Centrale del 1944. Coinvolto in diversi crimini contro l'umanità, incluso un omicidio di massa particolarmente truce. Lo vogliamo morto.\n\nBabbo Natale" + IDS_INTEL_25258 "UNUSED" + IDS_INTEL_25259 "UNUSED" + IDS_INTEL_25260 "" + IDS_INTEL_25261 "Nota: rilevata spia@ATTENZIONE\n\nUna spia capitalista donna è stata identificata nelle vicinanze. I responsabili della sua cattura riceveranno una supplementare porzione di zuppa di cavoli. Chiunque NON dovesse contribuire alla sua cattura, verrà messo a pulire i bagni" + IDS_INTEL_25262 "UNUSED" + IDS_INTEL_25263 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25264 "UNUSED" + IDS_INTEL_25265 "UNUSED" + IDS_INTEL_25266 "UNUSED" + IDS_INTEL_25267 "UNUSED" + IDS_INTEL_25268 "UNUSED" + IDS_INTEL_25269 "UNUSED" + IDS_INTEL_25270 "UNUSED" + IDS_INTEL_25271 "UNUSED" + IDS_INTEL_25272 "UNUSED" + IDS_INTEL_25273 "UNUSED" + IDS_INTEL_25274 "UNUSED" + IDS_INTEL_25275 "UNUSED" + IDS_INTEL_25276 "UNUSED" + IDS_INTEL_25277 "UNUSED" + IDS_INTEL_25278 "UNUSED" + IDS_INTEL_25279 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25280 "" + IDS_INTEL_25281 "Promemoria sovietico: recenti esplosioni@A: divisione manutenzione\nDa: Sergente Butsenko\nHo allertato per molto tempo gli altri riguardo ai pericoli di immagazzinare il carburante in aree aperte. La recente serie di esplosioni ha confermato la mia tesi. Suggerisco che una Commissione Carburante cominci a valutare il problema e produca un documento per la sua soluzione." + IDS_INTEL_25282 "UNUSED" + IDS_INTEL_25283 "UNUSED" + IDS_INTEL_25284 "UNUSED" + IDS_INTEL_25285 "UNUSED" + IDS_INTEL_25286 "UNUSED" + IDS_INTEL_25287 "UNUSED" + IDS_INTEL_25288 "UNUSED" + IDS_INTEL_25289 "UNUSED" + IDS_INTEL_25290 "UNUSED" + IDS_INTEL_25291 "UNUSED" + IDS_INTEL_25292 "UNUSED" + IDS_INTEL_25293 "UNUSED" + IDS_INTEL_25294 "UNUSED" + IDS_INTEL_25295 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25296 "UNUSED" + IDS_INTEL_25297 "UNUSED" + IDS_INTEL_25298 "UNUSED" + IDS_INTEL_25299 "UNUSED" + IDS_INTEL_25300 "" + IDS_INTEL_25301 "Nota: rilevate spie ancora in libertà@Sono scoraggiato poiché nessuno ha ancora catturato la spia capitalista per il bene della madre Russia! Se non verrà arrestata prima dell'alba, i responsabili saranno severamente puniti.\n\nColonnello Pupkin" + IDS_INTEL_25302 "UNUSED" + IDS_INTEL_25303 "UNUSED" + IDS_INTEL_25304 "UNUSED" + IDS_INTEL_25305 "UNUSED" + IDS_INTEL_25306 "UNUSED" + IDS_INTEL_25307 "UNUSED" + IDS_INTEL_25308 "UNUSED" + IDS_INTEL_25309 "UNUSED" + IDS_INTEL_25310 "UNUSED" + IDS_INTEL_25311 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25312 "UNUSED" + IDS_INTEL_25313 "UNUSED" + IDS_INTEL_25314 "UNUSED" + IDS_INTEL_25315 "UNUSED" + IDS_INTEL_25316 "UNUSED" + IDS_INTEL_25317 "UNUSED" + IDS_INTEL_25318 "UNUSED" + IDS_INTEL_25319 "UNUSED" + IDS_INTEL_25320 "" + IDS_INTEL_25321 "UNUSED" + IDS_INTEL_25322 "UNUSED" + IDS_INTEL_25323 "UNUSED" + IDS_INTEL_25324 "UNUSED" + IDS_INTEL_25325 "UNUSED" + IDS_INTEL_25326 "UNUSED" + IDS_INTEL_25327 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25328 "UNUSED" + IDS_INTEL_25329 "UNUSED" + IDS_INTEL_25330 "UNUSED" + IDS_INTEL_25331 "UNUSED" + IDS_INTEL_25332 "UNUSED" + IDS_INTEL_25333 "UNUSED" + IDS_INTEL_25334 "UNUSED" + IDS_INTEL_25335 "UNUSED" + IDS_INTEL_25336 "UNUSED" + IDS_INTEL_25337 "UNUSED" + IDS_INTEL_25338 "UNUSED" + IDS_INTEL_25339 "UNUSED" + IDS_INTEL_25340 "" + IDS_INTEL_25341 "Lettera: cara madre@Cara madre,\n\ncome stai? E’ passato molto tempo, vero? Com’è Cincinnati? Ora, sono un grande pilota. Oggi ho volato verso la Siberia in missione segreta. Il lavoro è pericoloso ma sono ben pagato. Ti arrivano gli assegni, non è vero? Ciò mi rende felice.\n\nCon amore,\nMisha" + IDS_INTEL_25342 "UNUSED" + IDS_INTEL_25343 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25344 "UNUSED" + IDS_INTEL_25345 "UNUSED" + IDS_INTEL_25346 "UNUSED" + IDS_INTEL_25347 "UNUSED" + IDS_INTEL_25348 "UNUSED" + IDS_INTEL_25349 "UNUSED" + IDS_INTEL_25350 "UNUSED" + IDS_INTEL_25351 "UNUSED" + IDS_INTEL_25352 "UNUSED" + IDS_INTEL_25353 "UNUSED" + IDS_INTEL_25354 "UNUSED" + IDS_INTEL_25355 "UNUSED" + IDS_INTEL_25356 "UNUSED" + IDS_INTEL_25357 "UNUSED" + IDS_INTEL_25358 "UNUSED" + IDS_INTEL_25359 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25360 "" + IDS_INTEL_25361 "Lettera: addestramento di Blitzny@28 febbraio 1967\n\nSig. Blitzny (o dovrei chiamarla sig. Goodman),\n\nè imperativo che completi il suo addestramento entro l'inizio di giugno. Una ghiotta opportunità si è presentata ad Amsterdam.\n\nDistinti saluti,\nSig. X" + IDS_INTEL_25362 "Copia carbone: problemi con le donne@Copia carbone\n\n6 marzo 1967\n\nSig. Smith,\nho ancora problemi di insuccessi con le ragazze. È dura sentirsi un agente segreto e non riuscire a conquistare una donna. Nei film, le spie fanno stragi di cuori femminili. Questa situazione si sta riflettendo sul mio morale e non credo che sarò pronto per giugno.\n\nCon ansia,\nMelvin Blitzny\nanche conosciuto come Tom Goodman" + IDS_INTEL_25363 "Lettera: ritardo inaccettabile@19 marzo, 1967\n\nSig. Blitzny,\n\nqualsiasi ritardo non può essere accettato. DOVRÀ essere pronto ad assumere l'identità di Tom Goodman secondo i piani. La voglio sul libro paga della UNITY il più presto possibile. Mi auguro di essere stato chiaro.\n\nSaluti,\nSig. Smith" + IDS_INTEL_25364 "Copia carbone: niente fretta!@Copia carbone\n\n20 marzo, 1967\n\nSig. X (o dovrei chiamarla Sig. Smith),\nsono stanco di sentire continuamente parlare della sue scadenze. Se c'è una cosa che ho imparato vendendo aspirapolveri è che non si può mettere fretta all'arte. Al momento giusto mi farò trovare pronto e non un minuto prima. Se lo metta bene in testa.\n\nSaluti,\nTom Goodman" + IDS_INTEL_25365 "Lettera: femminuccia @29 marzo 1967\n\nAscoltami piccola femminuccia, ne ho abbastanza dei tuoi pavoneggiamenti. Forse non ti rendi conto della gravità della situazione e pertanto te la spiegherò in modo che anche il tuo intelletto limitato riesca ad arrivarci. Sei sotto osservazione. Continuamente. Se non rispetti alla lettera il piano che ti è stato indicato, ti farò sparire dalla circolazione senza lasciare tracce. Seguirò personalmente la tua eliminazione per assicurarmi che sia straziante e molto, molto lenta.\n\nSmith" + IDS_INTEL_25366 "Lettera non inviata: all'inferno@Originale non inviato\n\n29 marzo 1967\n\nSig. Sissy,\n\nperché non se ne va al diavolo, stupido idiota. Ti odio! Ti odio!\n\nCrepa,\nGoodman" + IDS_INTEL_25367 "Promemoria H.A.R.M.@Questo materiale top secret è riservato al personale H.A.R.M.!\n\nA tutto il personale H.A.R.M. \nDa: Anoop Banerjee\nData: 2 settembre 1967\nSoggetto: progetto Omega\n\nA partire da novembre, la H.A.R.M. avvierà lo studio di una nuova arma segreta, il cui nome in codice è progetto Omega. Cerchiamo un responsabile con esperienza e capacità organizzativa. Chiunque fosse interessato a lavorare con il nostro Dipartimento di Ricerca e Sviluppo, è pregato di contattarmi presso l'ufficio di Calcutta." + IDS_INTEL_25368 "Fattura per aspirapolveri@FATTURA 2306a\n\nAlll'attenzione di: Sig. Melvin Blitzny\nDa: Lucky Suck Vacuum Company, Walla Walla, Washington\n\nOrdine per 260 aspirapolveri Lucky Suck tipo B con becco mobile e testina rotante." + IDS_INTEL_25369 "Comunicato ufficiale H.A.R.M.: Magnus Armstrong@A: Melvin Blitzny/Tom Goodman\nDa: Dimitri Volkov\n\nFarai rapporto a Oslo, Svezia, il 4 Aprile 1967, riguardo l’orientamento H.A.R.M. e il condizionamento mentale. Uno dei miei associati, Magnus Armstrong, ti preleverà all’aeroporto. Non è difficile da riconoscere. Le sue caratteristiche più distintive sono una spessa barba rossa, un kilt (che indossa a prescindere dalle condizioni meteorologiche) e il penetrante profumo di whiskey. Fai tutto ciò che ti dirà.\n\nBenvenuto a H.A.R.M." + IDS_INTEL_25370 "" + IDS_INTEL_25371 "" + IDS_INTEL_25372 "" + IDS_INTEL_25373 "" + IDS_INTEL_25374 "" + IDS_INTEL_25375 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25376 "" + IDS_INTEL_25377 "" + IDS_INTEL_25378 "" + IDS_INTEL_25379 "" + IDS_INTEL_25380 "" + IDS_INTEL_25381 "Lettera: lettera del caro John @Cara Loni,\n\nti lascio, andrò a convivere con la tua migliore amica, Jill. Mi spiace, tesoro, ma non mi hai mai dato ciò che mi aspettavo! Non appena ci siamo messi insieme, hai smesso di truccarti, sei ingrassata di 15 Kg, e non hai lavato i piatti per oltre una settimana. Mi puoi biasimare se ti lascio?\n\nIl tuo ex marito, Kevin" + IDS_INTEL_25382 "Lettera del laboratorio di fertilità Farley @FARLEY FERTILITY\n\nAll'attenzione di: sig.ra Loni Hickey\n\nIl risultato delle analisi indica che il bambino non è biologicamente compatibile con il sig. Hickey. Grazie per aver scelto il laboratorio di fertilità Farley. Buona fortuna nella ricerca del padre!" + IDS_INTEL_25383 "Lettera: Steve o Dwayne@Betty,\n\nnon so davvero cosa fare! Il bambino non è di Kevin. Almeno così le possibilità si stringono a Steve o Dwayne. Credi che dovrei dirglielo?\n\nLoni" + IDS_INTEL_25384 "" + IDS_INTEL_25385 "" + IDS_INTEL_25386 "" + IDS_INTEL_25387 "" + IDS_INTEL_25388 "" + IDS_INTEL_25389 "" + IDS_INTEL_25390 "" + IDS_INTEL_25391 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25392 "" + IDS_INTEL_25393 "" + IDS_INTEL_25394 "" + IDS_INTEL_25395 "" + IDS_INTEL_25396 "" + IDS_INTEL_25397 "" + IDS_INTEL_25398 "" + IDS_INTEL_25399 "" + IDS_INTEL_25400 "" + IDS_INTEL_25401 "Annuncio casa mobile@IL VANTAGGIO DI UNA CASA MOBILE!\n\nStanco di vedere lo stesso panorama ogni giorno? La soluzione è una casa mobile! " + IDS_INTEL_25402 "Lettera: prestito negato@Egr. sig. Hickey,\n\nla sua richiesta di prestito per una casa mobile non è stata accettata a causa della sua recente bancarotta.\n\nFirmato: sig. Dullwhittle\nFirst Bank di Stucky" + IDS_INTEL_25403 "" + IDS_INTEL_25404 "" + IDS_INTEL_25405 "" + IDS_INTEL_25406 "" + IDS_INTEL_25407 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25408 "" + IDS_INTEL_25409 "" + IDS_INTEL_25410 "" + IDS_INTEL_25411 "" + IDS_INTEL_25412 "" + IDS_INTEL_25413 "" + IDS_INTEL_25414 "" + IDS_INTEL_25415 "" + IDS_INTEL_25416 "" + IDS_INTEL_25417 "" + IDS_INTEL_25418 "" + IDS_INTEL_25419 "" + IDS_INTEL_25420 "" + IDS_INTEL_25421 "" + IDS_INTEL_25422 "" + IDS_INTEL_25423 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25424 "" + IDS_INTEL_25425 "" + IDS_INTEL_25426 "" + IDS_INTEL_25427 "" + IDS_INTEL_25428 "" + IDS_INTEL_25429 "" + IDS_INTEL_25430 "" + IDS_INTEL_25431 "" + IDS_INTEL_25432 "" + IDS_INTEL_25433 "" + IDS_INTEL_25434 "" + IDS_INTEL_25435 "" + IDS_INTEL_25436 "" + IDS_INTEL_25437 "" + IDS_INTEL_25438 "" + IDS_INTEL_25439 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25440 "" + IDS_INTEL_25441 "Fotografia: Kamal Khubchandani@" + IDS_INTEL_25442 "Lettera: ricatto per Kamal@Caro Kamal,\n\ncome stai? Io sto bene. Come puoi notare da questa foto, sappiamo che stai passando informazioni segrete alla UNITY. Se non ci pagherai 5.000 rupie entro martedì prossimo, chiederemo al tuo capo, Anoop Banerjee, se per caso è interessato a comprare questo interessante materiale\n\nAlleanza Malvagia." + IDS_INTEL_25443 "Parola d’ordine H.A.R.M.@A tutto il personale H.A.R.M.\n\nLa parola d’ordine di oggi dovrebbe essere Mulligatawny, ma il mio istinto mi dice che il capo probabilmente la cambierà nella solita " + IDS_INTEL_25444 "Lettera: ricerca parola d'ordine H.A.R.M.@Agente Archer,\n\nper ottenere l'accesso al quartiere generale indiano della H.A.R.M, dovrà localizzare Balaji Malpani, braccio destro di Anoop Banerjee, nonché ideatore e distributore delle parole d'ordine giornaliere. Può decidere di eliminarlo o di usare questo registratore per spiare la sua conversazione telefonica con Banerjee di questo pomeriggio.\n\nBalaji alloggia in una stanza dell'hotel Ospite Felice. Piazzi la cimice nel telefono del suo appartamento, si nasconda finché la conversazione non sarà terminata, dopodiché attivi la cimice per riascoltare l'intera telefonata.\n\nBuona fortuna,\nKamal" + IDS_INTEL_25445 "Fotografia: Balaji Malpani@ " + IDS_INTEL_25446 "Lettera: ricatto per Kamal@Agente Archer,\n\nuna banda dell'Alleanza Malvagia ha scoperto che sto passando informazioni segrete alla UNITY. Finché sono in carcere, non posso permettermi di essere visto! Ho sentito che il loro nascondiglio è situato in questa parte della città. Trovi il modo di neutralizzarli e di recuperare la prova del ricatto.\n\nChe il dio Sheva la protegga!\nKamal" + IDS_INTEL_25447 "Mappa: circondario@" + IDS_INTEL_25448 "Lettera: banda Angaraka @A: Studio 4 Alleanza Malvagia\nDa: Kumar\n\nAmici, il contratto è quasi firmato! Presto potremo dire addio all’Alleanza Malvagia e cominciare a lavorare sul nostro primo progetto con il nome di banda Angaraka!\n\n(Da non distribuire fuori dallo Studio 4!)" + IDS_INTEL_25449 "Lettera: banda Angaraka@A: Kumar\nDa: Ganesh\n\nCosa? Quando abbiamo assunto un nuovo nome? Banda Angaraka? Tutti penseranno che soffriamo di una terribile malattia della pelle! Chi è il responsabile di questa idiozia? Nessuno collegherà l’Angaraka all’amuleto che libera il sostenitore dai debiti!\n\nMeglio non essere troppo ingegnosi per il nostro bene, amico mio!" + IDS_INTEL_25450 "UNUSED" + IDS_INTEL_25451 "" + IDS_INTEL_25452 "" + IDS_INTEL_25453 "" + IDS_INTEL_25454 "" + IDS_INTEL_25455 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25456 "" + IDS_INTEL_25457 "" + IDS_INTEL_25458 "" + IDS_INTEL_25459 "" + IDS_INTEL_25460 "" + IDS_INTEL_25461 "Nota: finestre aperte@ATTENZIONE A TUTTI GLI IMPIEGATI\n\n L'accesso al cortile è vietato a tutte le persone non autorizzate. Se scopro che queste finestre sono state aperte un'altra volta, possa il Dio Vishnu proteggere il colpevole dalla mia ira!\n\nAnnop Banerjee\nUfficiale Capo Esecutivo" + IDS_INTEL_25462 "Nota: conto della finestra non pagato@A: Erin Keyes, H.A.R.M. Controller\nDa: lavatori di finestre Nanda Devi\n\nSig.na Keyes, i nostri registri mostrano un credito di 47 rupie per i servizi prestati. Abbiamo cercato di riportare questo problema al sig. Banerjee presso l’ufficio del vostro quartier generale indiano, ma egli è stato molto poco collaborativo. Siete pregati di pagare il debito entro 30 giorni o lanceremo pietre contro le finestre del vostro campo come azione di ritorsione." + IDS_INTEL_25463 "H.A.R.M. Promemoria: lavaggio finestre@A: Anoop Banerjee\nDa: Erin Keyes, ispettore della H.A.R.M.\n\nSig. Banerjee, ho ricevuto una lamentela dai lavatori di finestre Nanda Devi, riguardo il mancato pagamento di un conto per il lavaggio delle finestre. Risolvete il problema nel solito modo." + IDS_INTEL_25464 "Promemoria H.A.R.M.: finestre@A: lavatori di finestre Nanda Devi\nDa: Anoop. Banerjee\n\nE voi le chiamate finestre pulite? Io maledico voi, vostra madre, le vostre sorelle e il vostro cane. Manderò un delegato per accertarmi che vi sia pagato ciò che meritate. Addio." + IDS_INTEL_25465 "Nota: correzioni del conto@A: Anoop Banerjee \nCc: Erin Keyes, ispettore della H.A.R.M.\nDa: lavatori di finestre Nanda Devi \n\nSig. Banerjee, dobbiamo ampiamente scusarci! Effettivamente, sembra che la registrazione di un conto non pagato sia dovuto a un errore di un nostro impiegato. Quanto siamo stati idioti! Siamo veramente spiacenti per questo disturbo! Per riparare a questa sfortunata incomprensione, saremo felici d’ora in avanti di offrirvi i nostri servizi gratuitamente!" + IDS_INTEL_25466 "Sorveglianza H.A.R.M.: A.M.@RESOCONTO DI SORVEGLIANZA 9F\n\nAttenzione: Anoop Banerjee\n\nSignore, credo che i nostri amici si muoveranno molto presto. Suggerisco di spostare la merce nel congelatore nel seminterrato. E’ più sicuro di quello situato nell’atrio degli impiegati.\n\nPrem" + IDS_INTEL_25467 "Sorveglianza H.A.R.M.: incursione@RAPPORTO DI SORVEGLIANZA 9H\nAttenzione: Anoop Banerjee\n\nSignore, PacPac ha scoperto la locazione dell’ufficio indiano dell’Alleanza Malvagia! Usano quel vecchio cinema lungo la strada! Ho pianificato un’incursione notturna per giovedì alle 21:30 durante la proiezione del loro spettacolo notturno. Non ho potuto avere i biglietti per Samir e Ajay, ma possiamo farli entrare dalla porta laterale dopo che lo spettacolo sarà iniziato.\n\nPrem" + IDS_INTEL_25468 "UNUSED" + IDS_INTEL_25469 "UNUSED" + IDS_INTEL_25470 "UNUSED" + IDS_INTEL_25471 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25472 "" + IDS_INTEL_25473 "" + IDS_INTEL_25474 "" + IDS_INTEL_25475 "" + IDS_INTEL_25476 "" + IDS_INTEL_25477 "" + IDS_INTEL_25478 "" + IDS_INTEL_25479 "" + IDS_INTEL_25480 "" + IDS_INTEL_25481 "Nota da Kamal: equipaggiamento@Agente Archer,\n\nl’Alleanza Malvagia ha la sede del quartier generale nel vecchio cinema dall’altra parte della strada: un luogo che si adatta perfettamente al loro teatrale e oltremodo drammatico modus operandi. Ho ottenuto una piantina della costruzione, sulla quale sono indicati i punti dove le cariche di demolizione causerebbero i maggiori danni strutturali. Dovrà trovare l’esplosivo in loco.\n\nKamal\n\nP.S. Babbo Natale ha spedito questo pacco per lei." + IDS_INTEL_25482 "Lettera: fuga immediata!@A: sig.na Lala Faqueera,\nVia Pullagura 14\n\nLala,\n\nsono così preoccupato! Tuo padre l'avrà ancora vinta e ti darà in sposa a un altro uomo. Dobbiamo fuggire subito!\n\nCon amore, Prem" + IDS_INTEL_25483 "Lettera: figlia ribelle@Dott. Nallapuneni,\n\nsono preoccupata per mia figlia. Mio marito ha fatto di tutto per trovarle un buon marito, ma nessuno vuole sposarla! È ribelle e aggressiva e attira solo gli uomini peggiori. Cosa posso fare?\n\nSinceramente,\nSig.ra Faqueera" + IDS_INTEL_25484 "Lettera: provi l'amuleto Guari@Sig.ra Faqueera,\n\ncapisco il suo dispiacere. Per assicurarle un buon marito deve trovare un amuleto Gauri e dell'aglio, e metterlo sotto il suo letto. Ha funzionato a meraviglia con la mia Phoolwati!\n\nDr. Nallapuneni" + IDS_INTEL_25485 "PIANTINA: cinema@" + IDS_INTEL_25486 "" + IDS_INTEL_25487 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25488 "" + IDS_INTEL_25489 "" + IDS_INTEL_25490 "" + IDS_INTEL_25491 "" + IDS_INTEL_25492 "" + IDS_INTEL_25493 "" + IDS_INTEL_25494 "" + IDS_INTEL_25495 "" + IDS_INTEL_25496 "" + IDS_INTEL_25497 "" + IDS_INTEL_25498 "" + IDS_INTEL_25499 "" + IDS_INTEL_25500 "" + IDS_INTEL_25501 "Combinazione della cassaforte@A: assistente alla sicurezza Sonal\nDa: Caposquadra Madhu\n\nIl rapporto mensile DEVE essere presentato entro domani mattina. Inoltre, si assicuri che gli scontrini del botteghino siano stati sommati. Sa bene quanto il capo ci tenga alla matematica.\n\nP.S. Siccome sono sicuro che l'ha già dimenticata, la combinazione della cassaforte è 6-23-6." + IDS_INTEL_25502 "Promemoria A.M.: agguato H.A.R.M.@Vijay,\n\nBuone nuove! Il momento della rivincita è giunto. Il Direttore delle attività della H.A.R.M. ha appena prenotato 30 posti per lo spettacolo di giovedì notte. Possiamo tendergli un agguato non appena inizierà lo spettacolo! Rifornite gli uomini di munizioni, ma state attenti a non superare il nostro rifornimento settimanale!\n\nCaposquadra Madhu" + IDS_INTEL_25503 "Promemoria A.M.: Cariche esplosive@A: assistente alla sicurezza Sonal\nDa: Caposquadra Madhu\n\nQueste cariche esplosive serviranno per la grande operazione di giovedì prossimo; assicurati di chiuderle in una camera blindata segreta dove saranno al sicuro." +END + +STRINGTABLE +BEGIN + IDS_INTEL_25504 "Nota: pericolosi sacchi di sabbia@A causa dello sfortunato incidente ai complici Ramesh e Samir, il personale è bandito dall'area principale finché il servizio di manutenzione non avrà sgomberato i pericolosi sacchi di sabbia sospesi." + IDS_INTEL_25505 "Promemoria A.M.: Venkatashalapathi@All'attenzione di: Caposquadra Madhu\n\nDa: Vijay\nSignore, le chiedo umilmente di modificare il nome dell’Operazione Venkatachalapathi. Gli uomini lo confondono con l’Operazione Velatachalapathi. Essere confusi con quello sfortunato incidente è demoralizzante. Noi suggeriamo un nuovo nome: Operazione Shakti. Ha un bel suono, no?" + IDS_INTEL_25506 "Promemoria A.M.: Venkatashalapathi@All'attenzione di: Vijay\nDa: Caposquadra Madhu\n\nVijay, non riesco a credere che tu stia sollevando questo problema adesso. Il marketing ha già approvato il nome Operazione Venkatachalapathi. Hai idea di che difficoltà porti il cambio del nome? Non posso fare promesse." + IDS_INTEL_25507 "Promemoria A.M.: progetto Shakti@All'attenzione di: Ufficio Marketing\nDa: Caposquadra Madhu\n\nChiedo formalmente di modificare il nome dell’Operazione Venkatachalapathi in Operazione Shakti. Dovete ammettere che Venkatachalapathi non si adatta bene alla nuova carta intestata." + IDS_INTEL_25508 "Promemoria A.M.: è pazzo?@All'attenzione di: Caposquadra Madhu\n\nDa: Ufficio Marketing\nChe la sacra ascia di Ganesha le possa staccare il mignolo sinistro! Non conosce la Shakti Cola? Ci distruggerebbero per aver violato i diritti sul marchio. Abbiamo già superato il budget disponibile. La sua richiesta è respinta con la R maiuscola." + IDS_INTEL_25509 "Promemoria A.M.: Ufficio Marketing senza valore@All'attenzione di: membro della squadra Vijay\n\nDa: Caposquadra Madhu\nPeccato amico mio, ancora una volta il Dipartimento Marketing ha dimostrato la sua incapacità. Ci dobbiamo tenere il progetto Venkatachalapathi." + IDS_INTEL_25510 "Ricerca del marchio: Venkatachalapathi@RICERCA DEL MARCHIO: Venkatachalapathi\n\n Abbiamo trovato solo due possibili violazioni per questo nome. La prima è una piccola piantagione di papaia, la seconda è un servizio di disinfestazione da roditori. Le riteniamo due realtà sufficientemente distinte per non creare confusione. Spesa totale per la ricerca: 10.000 rupie." + IDS_INTEL_25511 "Intimazione a desistere: Venkatachalapathi@INTIMAZIONE A DESISTERE\n\nDa: Rimozione Roditori Venkatachalapathi\nAll'attenzione di: sig. Baba Madhu\n\nSig. Madhu, questa lettera serve a notificarle un'infrazione su un marchio registrato. Le intimiamo di desistere o sarà chiamato in tribunale!" + IDS_INTEL_25512 "Promemoria A.M.: cambio marchio@All'attenzione di: servizio manutenzione\nDa: Caposquadra Madhu\n\nHa visto la lettera di intimazione a desistere? Devo dare per scontato che il servizio manutenzione si occuperà della faccenda nel solito modo? Ripensandoci, rendetelo estremamente doloroso.\n\n Devo aver fatto qualcosa di sbagliato nella mia vita precedente per meritarmi questi problemi!" + IDS_INTEL_25513 "UNUSED" + IDS_INTEL_25514 "" + IDS_INTEL_25515 "" + IDS_INTEL_25516 "" + IDS_INTEL_25517 "" + IDS_INTEL_25518 "" + IDS_INTEL_25519 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25520 "" + IDS_INTEL_25521 "Nota: camera blindata della H.A.R.M.@Agente Archer,\n\nnon sarà facile inoltrarsi nella camera blindata. Prima di tutto, dovrà oltrepassare i cancelli ad alta tensione ed eludere le telecamere di sicurezza. Si aspetti di trovare delle guardie in servizio nella zona più bassa.\n\nSfortunatamente, non mi sono spinto oltre quel punto, quindi non sono sicuro di cosa dovrà affrontare, ma ho sentito che Anoop faceva riferimento agli impianti di illuminazione sui muri. Penso che in qualche modo possano esserle utili.\n\nBuona fortuna,\nKamal" + IDS_INTEL_25522 "Promemoria H.A.R.M: camera blindata@A: Anoop Banerjee\nDa: il Direttore\n\nHo appena finito di rivedere i risultati dell’ultima ispezione sulla sicurezza e sono piacevolmente sorpreso di vedere un tale miglioramento nella vostra valutazione per quest’anno. Naturalmente, non avrebbe potuto peggiorare, vero? E ancora, è gratificante notare perfino un lieve miglioramento nelle vostre capacità. Continuate con l'ottimo lavoro!" + IDS_INTEL_25523 "Lettera: ringraziamenti da UNITY@A: Kamal Khubchandani\nDa: Bruno Lawrie, Direttore provvisorio della UNITY\n\nDevo sinceramente ringraziarla per la sua inestimabile e personale assistenza nella risoluzione di questo problema. Non sono pienamente convinto di cosa l’abbia motivato nell’aiutarci, ma posso assicurarle che UNITY la ricompenserà adeguatamente. Inoltre, come conseguenza delle sue azioni, se dovesse trovarsi nella necessità di un impiego, le assicuro che potremo aiutarla." + IDS_INTEL_25524 "Promemoria H.A.R.M.: richiesta chimica@All'attenzione di: dott. Kussman, Base Antartide\nDa: Anoop Banerjee, quartier generale indiano della H.A.R.M.\nOggetto: materiale progetto Omega\n\nIl rifornimento di materiali chimici richiesto è stato consegnato a McMurdo attraverso le isole Falkland. La riserva di tè che desideravi è nella scatola rossa. Goditelo amico mio!" + IDS_INTEL_25525 "Nota: cimici@Agente Archer,\n\nBabbo Natale è interessato in un lavoro di intelligence supplementare sulle operazioni indiane della H.A.R.M. Vuole che lei metta delle cimici nei telefoni dei tre impiegati chiave. Tali cimici verranno recuperate successivamente da altri agenti, quindi deve solo piazzarle per portare a termine il suo obiettivo. Buona fortuna!\n\nKamal" + IDS_INTEL_25526 "Lettera: risposta di Kamal @Copia carbone\n\nA: Bruno Lawrie\nDa: Kamal Khubchandani\n\nGrazie della sua generosa offerta. Il motivo della mia assistenza è semplice: sono stufo. Non pretendo di essere particolarmente virtuoso, ma recentemente è nata mia figlia, Laxmi. Vederla per la prima volta mi ha riempito di amore e pace tali da farmi piangere. E’ stato molto difficile tornare al lavoro e fingere di godere della compagnia di questi criminali da fumetti e dei loro insignificanti schemi. Sono stanco di tutta questa infamia." + IDS_INTEL_25527 "Documento: progetto Omega@A: Anoop Banerjee\nDa: dott. Kussman\n\nBene, amico mio, il Progetto Omega sta procedendo secondo i piani. Abbiamo avuto solo un paio di imprevisti, ma niente di preoccupante. Il mondo non dimenticherà mai il 1966, l'anno di Omega! Cambieremo definitivamente i piani diabolici del Giorno del Giudizio!\n\nQuando verrai a farmi visita in Antartide? Sento il bisogno di immergermi in conversazioni intellettuali. Siamo solo a due ore di distanza da Russkaya, in aereo. Qui non c'è molto da fare, ma almeno abbiamo un tavolo da ping pong!\n" + IDS_INTEL_25528 "Ricetta: alternative alla donnola@A: Anoop Banerjee\nDa: importatori di animali feroci, cattivi e selvaggi\n\nSiamo spiacenti per non essere riusciti a procurarci nessuna donnola feroce per la vostra trappola mortale. Il nostro fornitore ci ha assicurato una spedizione in arrivo dal Canada. Nel frattempo, la preghiamo di accettare questi sostituti. Anche se non sono mortali e spietate come le donnole, queste creature possono essere abbastanza irritabili." + IDS_INTEL_25529 "" + IDS_INTEL_25530 "" + IDS_INTEL_25531 "" + IDS_INTEL_25532 "" + IDS_INTEL_25533 "" + IDS_INTEL_25534 "" + IDS_INTEL_25535 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25536 "" + IDS_INTEL_25537 "" + IDS_INTEL_25538 "" + IDS_INTEL_25539 "" + IDS_INTEL_25540 "" + IDS_INTEL_25541 "Avviso: festival della pantomima@Sanjay Productions presenta\n\nil famosissimo \nPIERRE, IL RE DELLA PARODIA\ne la sua compagnia di pantomimi\n\nSolo per una sera! I biglietti sono limitati." + IDS_INTEL_25542 "" + IDS_INTEL_25543 "" + IDS_INTEL_25544 "" + IDS_INTEL_25545 "" + IDS_INTEL_25546 "" + IDS_INTEL_25547 "" + IDS_INTEL_25548 "" + IDS_INTEL_25549 "" + IDS_INTEL_25550 "" + IDS_INTEL_25551 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25552 "" + IDS_INTEL_25553 "" + IDS_INTEL_25554 "" + IDS_INTEL_25555 "" + IDS_INTEL_25556 "" + IDS_INTEL_25557 "" + IDS_INTEL_25558 "" + IDS_INTEL_25559 "" + IDS_INTEL_25560 "" + IDS_INTEL_25561 "Nota: tiro della fune@La mia pazienza si sta esaurendo. Per la millesima volta, il tiro della fune comincia con la mano DESTRA. Il prossimo che commette tale inscusabile incompetenza in mia presenza, avrà la mano sinistra amputata come permanente ricordo della sua stupidità.\n\nAmici miei, noi pratichiamo un’arte sacra. Onoratela e prospererete nella mia grazia.\n\nPierre" + IDS_INTEL_25562 "Lettera: parodia fallita@Cara Babette,\n\nSembra che non ne faccia una giusta! Ogni giorno un nuovo errore, un nuovo fallimento. Non sopporto la mia stessa ripugnanza! Sono una brutta imperfezione nella divina faccia della pantomima. Mi manchi infinitamente, dolcezza\n\nCon amore\nJacques" + IDS_INTEL_25563 "Manuale della parodia@L’ARTE DELLA PANTOMIMA\n\nLa tecnica è impressionante. La qualità artistica è interessante. Il semplice impressionare non regge il confronto con il tempo. Un altro ragazzo si avvicina ed è più alto, più svelto e più forte di te. L'impressione è basata sulle relazioni: migliore o peggiore. L’interesse rimane solo. Quando qualcosa è interessante il tempo si ferma! Questa è la chiave!" + IDS_INTEL_25564 "Archivio H.A.R.M.: profilo Archer@H.A.R.M. FILE 2317: Catherine Archer, profilo aggiornato\n\nArcher, nata nel 1942 da Lord William Archer e Catherine Anne MacDougal. La madre è morta di complicazioni durante il parto. Il sig. Archer ha sperperato la sua ricchezza ed eredità e si è ucciso quando Archer aveva 12 anni. Da allora, ha vissuto in un orfanotrofio e in diverse case di tutela prima di scappare a Londra dove è divenuta una nota svaligiatrice conosciuta con il nome di “La Volpe”. Arruolata alcuni anni più tardi da Bruno Lawrie per lavorare per la UNITY." + IDS_INTEL_25565 "Fotografia: Magnus Armstrong@" + IDS_INTEL_25566 "Archivio H.A.R.M.: informazioni Archer@PRATICA H.A.R.M. 2345: Catherine Anne Archer (nota come “La Volpe”)\n\nAltezza: 1,72 m\nOcchi: verdi\nCapelli: castani\nNazionalità: scozzese\nUltimo contatto certo: Siberia" + IDS_INTEL_25567 "Archivio Armstrong@PRATICA H.A.R.M. 1201: Magnus Armstrong\n\nAltezza: 1,90 m\nOcchi: blu \nCapelli: rossi\nNazionalità: scozzese\nUltimo contatto certo: Inghilterra" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25568 "Fotografia: Cate Archer@" + IDS_INTEL_25569 "" + IDS_INTEL_25570 "" + IDS_INTEL_25571 "" + IDS_INTEL_25572 "" + IDS_INTEL_25573 "" + IDS_INTEL_25574 "" + IDS_INTEL_25575 "" + IDS_INTEL_25576 "" + IDS_INTEL_25577 "" + IDS_INTEL_25578 "" + IDS_INTEL_25579 "" + IDS_INTEL_25580 "" + IDS_INTEL_25581 "" + IDS_INTEL_25582 "" + IDS_INTEL_25583 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25584 "" + IDS_INTEL_25585 "" + IDS_INTEL_25586 "" + IDS_INTEL_25587 "" + IDS_INTEL_25588 "" + IDS_INTEL_25589 "" + IDS_INTEL_25590 "" + IDS_INTEL_25591 "" + IDS_INTEL_25592 "" + IDS_INTEL_25593 "" + IDS_INTEL_25594 "" + IDS_INTEL_25595 "" + IDS_INTEL_25596 "" + IDS_INTEL_25597 "" + IDS_INTEL_25598 "" + IDS_INTEL_25599 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25640 "" + IDS_INTEL_25641 "Promemoria H.A.R.M.: firmato@A: Generale Zhukov\nDa: dott. Kussman\nOggetto: aggiornamento mensile del progetto Omega\n\nGenerale, siamo pronti ad iniziare i test di campo per la prossima settimana, tre settimane in anticipo rispetto alle previsioni. Avete preso una decisione riguardo all’opportunità che capita una sola volta nella vita? Le comunico che ci sono altri compratori molto interessati. Inoltre, se firmate entro le prossime 48 ore, vi includeremo la nostra garanzia di 18 mesi." + IDS_INTEL_25642 "Opuscoli di propaganda@TU E IL PROGETTO OMEGA!\n\nSe sei come me, hai visto il rapporto di stato del progetto Omega nella newsletter mensile e ti sei chiesto " + IDS_INTEL_25643 "Archivio H.A.R.M.: Zhukov@PRATICA H.A.R.M. 6987: Generale Nikolai Zhukov\n\nRiassegnato in Siberia dopo la caduta con il Generale Kopat a Pietrogrado. Può essere coinvolto nella relazione con la diciottenne moglie di Kopat. Oppure con la ventiquattrenne figlia maggiore. Zhukov è l’obiettivo ideale per il progetto Omega, poiché possiede la combinazione ideale tra rango militare e mediocrità mentale che gli fanno vedere i benefici del progetto senza prendere in considerazione i suoi difetti." + IDS_INTEL_25644 "Promemoria H.A.R.M.: maniglie rotte@All'attenzione di: dott. Kussman\nDa: servizio manutenzione\n\nCi scusiamo per non essere stati in grado di sostituire la maniglia rotta della sua porta, poiché impegnati nello spostamento dei materiali esplosivi fuori dal capannone di manutenzione." + IDS_INTEL_25645 "Fattura per prodotti chimici @Azienda Chimica ACME\n\nFATTURA Nº 4023\n\nCliente: dott. Karl Kussman\nProdotti: 400 litri di fluido per la conservazione, 60 chilogrammi di bicarbonato di sodio, 20 scatole di zollette di zucchero rosso speziato." + IDS_INTEL_25646 "Promemoria H.A.R.M.: pianificazione eccedenze@A: dott. Kussman\nDa: il Direttore\n\nSono sicuro che non sia necessario sottolineare che siamo in pericolo di superare irrimediabilmente la pianificazione, dottore. Le dovrei ricordare che lei ha personalmente firmato per quest'ultimo termine di consegna. Parola interessante, " + IDS_INTEL_25647 "Fotografia di Abigail Anders@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25648 "Diario: Hotchkins@Diario di Melbert Hotchkins. Giorno 189.\n\nNella scorsa settimana il soggetto Nº 42 (Ten. Anders, Joseph) è divenuto sempre più ostile. Abbiamo aumentato il suo dosaggio, ma temo che dovremo rinunciare a lui. C’è un’altra opzione, ma necessiterà il suo trasporto nella struttura sottomarina di Aegean per il ricondizionamento." + IDS_INTEL_25649 "Archivio H.A.R.M.: Ten. Anders@Pratica H.A.R.M. 6714: Ten. Joseph Anders\n\nRaccolto dalla base militare americana in Norvegia durante l’Operazione Press Gang. Ha una moglie, Marianne, una figlia, Abigail e un terrier, Sparky. Carriera militare illustre, con notevole esperienza in combattimento.\n\nNote: in termini di formazione professionale, è il candidato ideale, ma mi preoccupano i suoi forti legami familiari. Da seguire attentamente.\n\nDott. Kussman" + IDS_INTEL_25650 "Promemoria H.A.R.M.: prova sul campo@A: dott. Kussman\nDa: il Direttore\n\nIl quartier generale in India ci ha traditi. Sembra che quella super spia ficcanaso, Cate Archer, sia entrata nella loro camera blindata. Dobbiamo accelerare il programma. È ora che i super soldati si cimentino nelle prove sul campo, non crede? Voglio che l'intera divisione si prepari a partire per l'India prima che la UNITY raggiunga la sua base. Dobbiamo accertarci che i super soldati siano davvero immuni ai danni come ci ha garantito.\n\nNon voglio sentire scuse circa il suo tenente rinnegato. Se non è in grado di gestire i soggetti dei suoi test, troverò un altro scienziato pazzo che ci riesca." + IDS_INTEL_25651 "Promemoria H.A.R.M.: esplosivi@A: Ufficio Manutenzione\nDa: dott. Kussman\n\nOrganizzatevi in modo che le cariche di demolizione nel laboratorio 2 vengano spostate nel magazzino della manutenzione in una volta sola. Non dovrei sottolineare che è una cattiva idea tenere gli esplosivi in prossimità di zone dove si stanno effettuando test sulle armi. Forse preferireste collocarle sotto le vostre divise?" + IDS_INTEL_25652 "Progetto Super Soldato@" + IDS_INTEL_25653 "Promemoria H.A.R.M.: scorte@A: dott. Kussman\nDa: Dimitri Volkov, Direttore azioni esecutive\n\nGrazie per il suo biglietto di auguri di pronta guarigione. È stato un gesto molto premuroso da parte sua, considerato che fui io ad assassinare suo zio a Oslo, tanti anni fa.\n\nCirca le cause del mio infortunio, mi trovavo in Svizzera, poco dopo il decesso della baronessa Dumas, il nostro precedente, illustre Direttore. Durante una discesa sulle piste delle Alpi, ho colpito un ragazzino con la mia racchetta e mi sono scontrato con sua sorella. Siamo caduti da un precipizio alto una decina di metri e siamo finiti in un Café. Per fortuna, quella giovane donna ha smorzato la mia caduta." + IDS_INTEL_25654 "Rapporto dello stato: soggetto Nº 42@ RAPPORTO INTERNO DELLO STATO\n(Da non pubblicare nella newsletter mensile!)\n\nSoprattutto, i risultati sono altamente soddisfacenti. Siamo quasi due settimane in anticipo rispetto alla data programmata. Detto questo, abbiamo avuto anche qualche imprevisto. Il soggetto Nº 42, uno dei nostri due tenenti, mostra ancora segni di autonomia. Gli episodi stanno aumentando come frequenza e aggressività. Si raccomanda un totale ricondizionamento alla prima opportunità. Il progetto Omega non può permettersi la presenza di furfanti!" + IDS_INTEL_25655 "" + IDS_INTEL_25656 "" + IDS_INTEL_25657 "" + IDS_INTEL_25658 "" + IDS_INTEL_25659 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25680 "" + IDS_INTEL_25681 "Nota: punizione@A tutto il personale\nDa: Anoop Banerjee\n\nBene, amici miei, sembra che il Direttore sfoghi la sua collera su di noi piuttosto che su quei miserabili mimi. Nonostante ammetta la mia colpevolezza per essermi fatto ingannare dalla spia, è stato un errore di Frenchman se è scappata. Perciò, ho deciso di dimettermi dalla H.A.R.M. e di iniziare una società privata di sicurezza. Coloro i quali fossero interessati a unirsi in questa nuova avventura, saranno i benvenuti." + IDS_INTEL_25682 "" + IDS_INTEL_25683 "" + IDS_INTEL_25684 "" + IDS_INTEL_25685 "" + IDS_INTEL_25686 "" + IDS_INTEL_25687 "" + IDS_INTEL_25688 "" + IDS_INTEL_25689 "" + IDS_INTEL_25690 "" + IDS_INTEL_25691 "" + IDS_INTEL_25692 "" + IDS_INTEL_25693 "" + IDS_INTEL_25694 "" + IDS_INTEL_25695 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25696 "" + IDS_INTEL_25697 "" + IDS_INTEL_25698 "" + IDS_INTEL_25699 "" + IDS_INTEL_25700 "" + IDS_INTEL_25701 "" + IDS_INTEL_25702 "" + IDS_INTEL_25703 "" + IDS_INTEL_25704 "" + IDS_INTEL_25705 "" + IDS_INTEL_25706 "" + IDS_INTEL_25707 "" + IDS_INTEL_25708 "" + IDS_INTEL_25709 "" + IDS_INTEL_25710 "" + IDS_INTEL_25711 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25712 "" + IDS_INTEL_25713 "" + IDS_INTEL_25714 "" + IDS_INTEL_25715 "" + IDS_INTEL_25716 "" + IDS_INTEL_25717 "" + IDS_INTEL_25718 "" + IDS_INTEL_25719 "" + IDS_INTEL_25720 "" + IDS_INTEL_25721 "Promemoria UNITY: Jones se ne va@A tutto il personale\nDa: sig. Jones\n\nRicordatevi che sarò in ferie per tre settimane a partire da lunedì prossimo. Bruno Lawrie sarà il Direttore provvisorio della UNITY durante tutta la mia assenza. Riservategli un trattamento adeguato. A presto!" + IDS_INTEL_25722 "Promemoria: appello di Bruno @A tutto il personale\nDa: Bruno Lawrie, Direttore provvisorio\n\nComprendo che voi troviate estremamente umoristico il fatto che io sia stato incaricato, ma per favore, in nome della decenza, resistete all’impulso di chiamarmi, " + IDS_INTEL_25723 "Lettera: pettegolezzo@Cara Emma,\n\nmia adorata! Come stai? Le cose non vanno bene da quando sei partita. Ho sentito che hanno licenziato il sig. Goodman, quello per il quale prendesti una gran cotta. Un vero peccato. Phyllis sta ancora con Bob. Almeno lo fa vestire in modo più decente! Bene, torno al lavoro. Restiamo in contatto!\n\nTiffany" + IDS_INTEL_25724 "Nota: Il Dr. Schenker si nasconde@Cate,\n\nmi sto nascondendo.\n\nSinceramente,\nDr. Schenker" + IDS_INTEL_25725 "Rapporto: SITREP @ RAPPORTO SULLA SITUAZIONE\nProgetto Omega\nPreparato da Isaac Barnes\n\nAgenti della UNITY hanno scoperto la natura e l’obiettivo del progetto Omega, che riguarda l’invasione di Khios per mezzo di super soldati chimicamente alterati e virtualmente indistruttibili. I documenti recuperati indicano che i Sovietici stanno progettando una specie di casinò comunista, ma sospettiamo che il loro vero obiettivo sia quello di sfruttare le preziose risorse naturali dell'isola. Chiaramente, questo sfruttamento militare da parte dei Sovietici interferirebbe con quello geniale e manipolativo progettato dalla NATO. Dobbiamo agire subito e con decisione." + IDS_INTEL_25726 "Promemoria: appello di Bruno @A tutto il personale\nDa: Bruno Lawrie, Direttore provvisorio\n\nForse non sono stato sufficientemente chiaro nella mia precedente richiesta. Vi sarei eternamente grato se poteste evitare qualsiasi formalismo nel rivolgervi a me, inclusi:\n\n- Mio signore\n- Vostro onore\n- Vostra santità\n- Mio supremo comandante\n\nGrazie." + IDS_INTEL_25727 "PIANTINA: sottomarino squalo@" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25728 "UNUSED" + IDS_INTEL_25729 "UNUSED" + IDS_INTEL_25730 "UNUSED" + IDS_INTEL_25731 "UNUSED" + IDS_INTEL_25732 "UNUSED" + IDS_INTEL_25733 "UNUSED" + IDS_INTEL_25734 "UNUSED" + IDS_INTEL_25735 "UNUSED" + IDS_INTEL_25736 "UNUSED" + IDS_INTEL_25737 "UNUSED" + IDS_INTEL_25738 "UNUSED" + IDS_INTEL_25739 "UNUSED" + IDS_INTEL_25740 "" + IDS_INTEL_25741 "Turni di servizio@MODIFICHE TURNI DI SERVIZIO\n\nSiete pregati di prendere nota che la squadra di Frank è passata al turno di giorno per questa settimana. Immagino che questo sia ciò che accade quando ci si lamenta come una femminuccia riguardo al fatto di non aver dormito abbastanza!" + IDS_INTEL_25742 "Bolla per le nuove uniformi@Bolla di consegna\n\nQuattro dozzine di uniformi H.A.R.M. (nere e rosse). \n\nRestituire le vecchie uniformi al quartier generale per il riciclo." + IDS_INTEL_25743 "Nota: segretezza@A tutto il personale\nDa: Comandante Pim\n\nCome sapete, i sottomarini super segreti sono la chiave del successo del progetto Omega. Dobbiamo perciò mantenere un codice di massima segretezza riguardo alla loro esistenza e alle loro capacità. Non parlatene nemmeno con le vostre mogli o fidanzate. Come si suol dire, bocche larghe affondano navi.\n\nRicordate cosa significa H.A.R.M.!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25744 "Dichiarazione della missione n. 1@A tutto il personale\nDa: Megan O'Malledy, Ufficiale stati d'animo\n\nSalve a tutti! Come ben saprete, recentemente abbiamo organizzato un concorso chiedendo a tutti gli impiegati di proporre qualche idea per la nuova dichiarazione della missione H.A.R.M. Grazie per le vostre quattro dichiarazioni. Sfortunatamente, però, l'emblema della H.A.R.M. può ospitarne solo una. Questa è la dichiarazione che si è aggiudicata il terzo posto:\n\n" + IDS_INTEL_25745 "Lettera: Nuove uniformi@Ehi Rodney,\n\nlo sai che alla fine ci hanno ascoltato e ci hanno dato delle uniformi decenti? Mi auguro che ci rifacciano la foto della compagnia. Quando torno, potresti rimettermi in contatto con Margaret? È una bomba!\n\nIl tuo amico,\nNathan" + IDS_INTEL_25746 "Lettera: proposta di Clark @Cara Martha,\n\nvivo in agonia dal fatale giorno in Marocco. Per mesi mi sono flagellato per la mia sfacciata decisione. Il mese scorso ho lasciato mia moglie e me ne sono andato anche dall’esercito sovietico per unirmi a un’azienda privata con maggiori benefici ed un eccellente programma di condivisione utili. Mi manchi infinitamente e vorrei che tornassimo insieme. Mi vuoi ancora?\n\nClark" + IDS_INTEL_25747 "Dichiarazione della missione n. 2@A tutto il peronale\nDa: Megan O'Malledy, Ufficiale stati d'animo\n\nSalve gente! Questa è la dichiarazione che si è aggiudicata il secondo posto al concorso:\n\n" + IDS_INTEL_25748 "Dichiarazione della missione n. 3@A tutto il peronale\nDa: Megan O'Malledy, Ufficiale stati d'animo\n\nEhilà, miei cari collaboratori della H.A.R.M.! È con grande onore che vi annuncio la nuova dichiarazione della missione H.A.R.M., ideata da Dimitri Volkov, il nostro illustre Direttore delle azioni esecutive:\n\n" + IDS_INTEL_25749 "Nota: carta intestata@A tutti i capi di sezione\nDa: amministratore\n\nLa nuova carta intestata della H.A.R.M. è arrivata! Gli addetti ritireranno quella vecchia verso la fine della settimana." + IDS_INTEL_25750 "Promemoria H.A.R.M.: annullare Epsilon@All'attenzione di: professore Hubbard\nDa: Comandante Pim\n\nHo saputo che si è lamentato con il quartier generale per l'annullamento del progetto Epsilon. Mio caro professore, non può considerare recuperabile questo caos. L’ultima cosa di cui abbiamo bisogno, ora che siamo così vicini alla condizione Omega, è un progetto ambizioso e mal gestito come quello Epsilon, che ci farebbe perdere delle risorse e indebolirebbe il morale della truppa." + IDS_INTEL_25751 "UNUSED" + IDS_INTEL_25752 "Nota: robot sull'ombelico@AVVISO URGENTE!!!\n\nI robot non devono essere schierati negli ombelichi per nessuna ragione. I loro sistemi di puntamento non sono sufficientemente sofisticati per distinguere tra agenti nemici e grossi pesci. Sono sicuro che anche la persona dotata di meno immaginazione fra voi possa rendersi conto delle conseguenze derivanti da robot che sparano attraverso i vetri contro le creature marine di passaggio." + IDS_INTEL_25753 "UNUSED" + IDS_INTEL_25754 "UNUSED" + IDS_INTEL_25755 "UNUSED" + IDS_INTEL_25756 "UNUSED" + IDS_INTEL_25757 "UNUSED" + IDS_INTEL_25758 "UNUSED" + IDS_INTEL_25759 "UNUSED" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25760 "" + IDS_INTEL_25761 "Promemoria H.A.R.M.: soggetto Nº 42@A: dott. Hall\nDa: dott.Kussman\n\nConsiderando l’enorme spesa per generare un super soldato, penso che l’azione più razionale sia quella di tentare un totale ricondizionamento del soggetto Nº 42. Le mie ricerche indicano che un’addizionale esposizione al composto tenderebbe ad avere effetti cumulativi, quindi è ancora possibile salvare il Ten. Anders. Sicuramente vale la pena tentare!" + IDS_INTEL_25762 "Promemoria H.A.R.M.: capsule dei soggetti@A: dott. Hall\nDa: Ufficio Manutenzione\n\nAbbiamo installato le capsule dei soggetti per il test secondo le sue istruzioni. Saremo abbastanza occupati questa settimana a causa dei problemi con l’aria condizionata, quindi si assicuri di avvertirci in tempo (intendo 24 ore prima e non 15 minuti) per eventuali cambiamenti." + IDS_INTEL_25763 "Promemoria H.A.R.M.: Armstrong@A tutto il personale\nDa: Comandante Pim\n\nVi informo che è vietato l’accesso all’area di test, escluso per i membri di preparazione del progetto Omega, fino a nuovo ordine. Stiamo attualmente ospitando due individui estremamente pericolosi, ma il dott. Hall ci assicura che per la fine della settimana saranno docili come agnellini.\n\nRicordate cosa vuol dire H.A.R.M.!" + IDS_INTEL_25764 "Promemoria H.A.R.M.: robot inoperativo@A: Confucius Lee, Dipartimento di Robotica\nDa: Comandante Pim\n\nSig. Lee, questa mattina mi sono imbattuto in un robot inoperativo mentre ero in coperta. Sembra che sia andato in corto circuito dopo aver inserito una forchetta in una presa di corrente. Crede che sia un comportamento normale?" + IDS_INTEL_25765 "Promemoria H.A.R.M.: malfunzionamento robot@A: Comandante Pim\nDa: Confucius Lee, Dipartimento di Robotica\n\nComandante, come sicuramente ricorderà, mi hanno ordinato di seguire le specifiche del progetto messo a punto dal capo della sicurezza Fenster; ed è ciò che ho fatto. Se da un lato Fenster è stato molto attento a creare robot che fossero invulnerabili alle più piccole armi da fuoco e persino ai dispositivi esplosivi, dall'altro non ha pensato di isolare i circuiti elettrici. Ciò rende questi robot particolarmente sensibili alle scosse elettriche. Non è la prima volta che ricevo un rapporto circa il suicidio di un robot. Sarà forse perché non sono stati ritenuti idonei per il progetto Omega?" + IDS_INTEL_25766 "Promemoria H.A.R.M.: Dipartimento supercomputer@All'attenzione di tutti i tenenti\nDa: Comandante Pim\nPriorità: SEGRETA\nQuesto comunicato serve ad avvisarvi che questo giovedì ci sarà una riunione per discutere della situazione sempre più grave nel Dipartimento dei servizi supercomputer. Dobbiamo rivedere completamente i nuovi requisiti di sistema, oppure assumere sedici nuove risorse per la gestione del carico di lavoro. Date le già astronomiche spese amministrative generali, aumentare il personale non è un’opzione realmente attuabile." + IDS_INTEL_25767 "Manuale Super Computer@Manuale d'uso del Super Computer, Supplemento 18-G" + IDS_INTEL_25768 "UNUSED" + IDS_INTEL_25769 "UNUSED" + IDS_INTEL_25770 "UNUSED" + IDS_INTEL_25771 "Nota: pausa caffè@mi prendo una pausa. Torno tra 5 minuti.\n\nSpencer" + IDS_INTEL_25772 "Modulo di richiesta catalogo@MODULO RICHIESTA 207-B\n\nProdotto: manuali servizi supercomputer\nNumero prodotto: 349295-290948-2934/Z\nCome hai ottenuto questo numero prodotto?\n (x) Catalogo prodotti servizi supercomputer\n ( ) da un amico\n ( ) estorsione\n ( ) l’ho fatto da solo" + IDS_INTEL_25773 "Manuale d'uso del Supercomputer@Manuale d'uso del Supercomputer." + IDS_INTEL_25774 "Catalogo prodotti di servizio Supercomputer@Catalogo prodotti di servizio Supercomputer." + IDS_INTEL_25775 "Promemoria H.A.R.M.: mancato pagamento@A: Generale Zhukov\nDa: Erin Keyes, ispettore H.A.R.M.\n\nVi informo che in caso di mancato pagamento del conto arretrato riguardante il pacchetto Super Soldato Soltion Platinum Plus del costo di 1 milione di dollari americani (più $612,47 per le spese di spedizione), la H.A.R.M. sarà autorizzata a esortare la condizione Omega a spese dell’Unione Sovietica, secondo i termini del LOI. Se avete già depositato la somma in un conto estero, non considerate questo avviso.\n\n La H.A.R.M. non vede l’ora di effettuare future e illegali transazioni con voi!" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25776 "Promemoria H.A.R.M.: destino di Armstrong @A: Comandante Pim\nDa: Ufficio del Direttore\n\nIl Direttore ha deciso per la punizione più adatta da applicare nei confronti di Magnus Armstrong, il quale, moralmente ambivalente e dalle tendenze nazionaliste, indirettamente condusse alla dissoluzione del Progetto Lambda e alla distruzione del castello alpino di Dumas. A causa della sua provata incostante fedeltà, possiamo rinforzarlo obbligatoriamente... facendolo diventare un Super Soldato! Trasferitelo nei laboratori del sottolivello 4 e date inizio al processo immediatamente." + IDS_INTEL_25777 "Promemoria H.A.R.M.: sottomarino super segreto@A: Comandante Pim\nDa: Capitano Clayton\n\nIl viaggio intrapreso dal sottomarino super segreto è stato un assoluto successo (eccezion fatta per alcune infiltrazioni nella stanza motori e per il fatto che abbiamo perso energia per 15 minuti per nessuna ragione apparente). Inoltre, sono contento di riportare che i test radar hanno ecceduto di molto le aspettative. Siamo stati in grado di sgattaiolare dietro una nave da guerra americana e saldare del materiale sul loro scafo, il che dovrebbe causare un forte rumore la prossima volta che sarà portata nel bacino di carenaggio." + IDS_INTEL_25778 "UNUSED" + IDS_INTEL_25779 "UNUSED" + IDS_INTEL_25780 "" + IDS_INTEL_25781 "Promemoria H.A.R.M.: salotto privato@A: Comandante Pim\nDa: il Direttore\n\nComandante, è severamente vietato l’accesso al mio salotto privato, perfino a voi. Prima che balbettiate qualche flebile negazione, sappiate che ho fatto rilevare le impronte digitali sulla bottiglia vuota di champagne. Sono sicuro che potete immaginare di chi fossero tali impronte. Questo salotto è la mia via di fuga in caso di un’emergenza alla base, Comandante. Se devo passare delle ore aspettando di essere salvato, non voglio farlo in mezzo a detriti altrui." + IDS_INTEL_25782 "Lettera: indiscrezioni su Epsilon@Wes,\n\nhai sentito le voci in giro? Meglio preparare un curriculum! Ho sentito che la M.A.L.A.D.Y. sta assumendo personale. Non conosci nessuno lì? Ho pensato che avresti potuto spendere una buona parola per me.\n\nJames" + IDS_INTEL_25783 "Lettera: false indiscrezioni su Epsilon@James,\n\nnon essere così ingenuo! Il progetto Epsilon sarà un grande successo! Il professor Hibbard mi assicura che le indiscrezioni sono false e io gli credo!\n\nWes" + IDS_INTEL_25784 "UNUSED" + IDS_INTEL_25785 "UNUSED" + IDS_INTEL_25786 "Modulo di reclamo @MODULO RECLAMO dei dipendenti della H.A.R.M.\nMotivi del reclamo: unione degli impiegati.\nCommenti: da quando è iniziata l’intera riorganizzazione, questo equipaggiamento ha continuato a peggiorare. Prima erano le uniformi. Poi il logo. Poi l’intera faccenda del marchio di fabbrica della H.A.R.M. o come diavolo si chiami. Ora dobbiamo alzarci alle 6 di mattina per la sessione giornaliera di unione di gruppo? Considerateci fuori!\n Reclamo compilato da: Ha,ha bel tentativo!" + IDS_INTEL_25787 "Lista di controllo della manutenzione @Lista di controllo della manutenzione:\n\n (x) tubature gocciolanti\n(x) rischio di incendio\n (x) scarse misure di sicurezza nel magazzino dei materiali chimici\n(x) passaggi pedonali scivolosi" + IDS_INTEL_25788 "Fotografia del super sottomarino@" + IDS_INTEL_25789 "Promemoria H.A.R.M.: termine di Epsilon @ A tutto il personale\nDa: Comandante Pim\n\nLa squadra del progetto Epsilon è stata eliminata per totale incompetenza. Sappiate che potreste veder galleggiare i loro resti fuori dagli oblò, quindi non vi allarmate.\n\nConsideratelo un promemoria affinché miglioriamo la nostra cura nella scelta dei candidati!\n\nRicordate cosa significa H.A.R.M.!" + IDS_INTEL_25790 "UNUSED" + IDS_INTEL_25791 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25792 "" + IDS_INTEL_25793 "" + IDS_INTEL_25794 "" + IDS_INTEL_25795 "" + IDS_INTEL_25796 "" + IDS_INTEL_25797 "" + IDS_INTEL_25798 "" + IDS_INTEL_25799 "" + IDS_INTEL_25800 "" + IDS_INTEL_25801 "Promemoria H.A.R.M.: il nostro amico americano@A: Comandante Pim\nDa: il Direttore \n\nSecondo il nostro zelante amico americano, gli Stati Uniti sono estremamente desiderosi di spingere verso una guerra nucleare alla prima occasione utile. Manca solo il motivo. Ha accolto la nostra modesta proposta con grande piacere. Penso che abbiamo trovato il nostro alleato ideale." + IDS_INTEL_25802 "Promemoria H.A.R.M.: robot@A: Confucius Lee\nDa: Hugo Madmiller\n\nSignore, sono al limite. Ogni volta che qualcuno ha un problema con uno di questi stupidi robot, ricevo una sgridata. Oggi ho dovuto ascoltare Keith Stevens che mi parlava dei robot che lui ha progettato quando lavorava a Murderlicious. Ho provato a dirgli che non abbiamo progettato noi i robot, ma lui ha continuato a provocarmi. Volevo tirargli un pugno ben assestato su quella boccaccia." + IDS_INTEL_25803 "Promemoria H.A.R.M.: robot@A: J.P. Fenster, capo della sicurezza\nDa: Confucius Lee, Dipartimento di Robotica.\n\nHo cominciato a inoltrare i reclami riguardanti i super robot all’Ufficio del Direttore, insieme alle originali specifiche di progettazione. Vedrai che la tua patetica cospirazione per accusare me dei difetti dei robot non reggerà all’indagine minuziosa. Prima che tu inoltri le prossime specifiche (assumendo che tu possa vivere tanto a lungo), forse sarebbe meglio che misurassi la paratia in modo di assicurarti che i robot possano entrarci, IDIOTA!!!" + IDS_INTEL_25804 "Lettera: indiscrezioni?@ Bill,\n\nè vero ciò che è accaduto in India? E ora Epsilon? Un sindacato è ciò che serve a questo equipaggio!\n\nRhett" + IDS_INTEL_25805 "UNUSED" + IDS_INTEL_25806 "Avviso: robot e acqua@Attenzione a tutto il personale:\n\nGrazie alle acute specifiche del capo della sicurezza Fenster, i super robot saranno soggetti a malfunzionamento qualora si manifestino condizioni di umidità pari a circa il 60%. Quindi, è superfluo sottolineare che il contatto diretto con l’acqua è veramente una cattiva idea. Tenere i robot lontano da aree umide." + IDS_INTEL_25807 "Lettera: risposta di Martha @Clark,\n\nmamma mi ha inoltrato la tua lettera. Devi avermi preso per una sciocca. Ritornare con te? Dopo il modo in cui mi hai abbandonato in Marocco? Ero distrutta, Clark. Ho vagato nel deserto per settimane, delirante e dolorante, fino a che dei nomadi berberi non mi hanno trovato in fin di vita vicino a Merzouga. Clark, mi sono innamorata del deserto. Il vuoto lasciato nel mio cuore dalle tue menzogne e dal tuo inganno è stato colmato dalla riverenza per il grande Sahara. È molto più di compagnia di quanto tu non lo sia mai stato.\n\nMartha" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25808 "Promemoria H.A.R.M.: CT-180@A: Comandante Pim\nDa: uomo dell’equipaggio Miller\n\nNon sono in grado di ultimare la mia analisi sul CT-180 della UNITY. Sembra che il contenitore delle munizioni si sia incollato alla mia scrivania. Il servizio di manutenzione è stato informato e credo di poter tornare all'opera domani mattina." + IDS_INTEL_25809 "Promemoria H.A.R.M.: Magnus Armstrong@A: sicurezza\nDa: Comandante Pim\n\nIl Direttore arriverà nel tardo pomeriggio. Probabilmente non perderà di vista Armstrong nemmeno per un minuto, quindi assicuratevi che una squadra della sicurezza sia sempre in allerta. Non vorremmo che capitasse qualche spiacevole incidente." + IDS_INTEL_25810 "" + IDS_INTEL_25811 "" + IDS_INTEL_25812 "" + IDS_INTEL_25813 "" + IDS_INTEL_25814 "" + IDS_INTEL_25815 "" + IDS_INTEL_25816 "" + IDS_INTEL_25817 "" + IDS_INTEL_25818 "" + IDS_INTEL_25819 "" + IDS_INTEL_25820 "" + IDS_INTEL_25821 "" + IDS_INTEL_25822 "" + IDS_INTEL_25823 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25824 "" + IDS_INTEL_25825 "" + IDS_INTEL_25826 "" + IDS_INTEL_25827 "" + IDS_INTEL_25828 "" + IDS_INTEL_25829 "" + IDS_INTEL_25830 "" + IDS_INTEL_25831 "" + IDS_INTEL_25832 "" + IDS_INTEL_25833 "" + IDS_INTEL_25834 "" + IDS_INTEL_25835 "" + IDS_INTEL_25836 "" + IDS_INTEL_25837 "" + IDS_INTEL_25838 "" + IDS_INTEL_25839 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25840 "" + IDS_INTEL_25841 "" + IDS_INTEL_25842 "" + IDS_INTEL_25843 "" + IDS_INTEL_25844 "" + IDS_INTEL_25845 "" + IDS_INTEL_25846 "" + IDS_INTEL_25847 "" + IDS_INTEL_25848 "" + IDS_INTEL_25849 "" + IDS_INTEL_25850 "" + IDS_INTEL_25851 "" + IDS_INTEL_25852 "" + IDS_INTEL_25853 "" + IDS_INTEL_25854 "" + IDS_INTEL_25855 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25856 "" + IDS_INTEL_25857 "" + IDS_INTEL_25858 "" + IDS_INTEL_25859 "" + IDS_INTEL_25860 "" + IDS_INTEL_25861 "Promemoria H.A.R.M.: pensiero positivo@A tutto il personale\nDa: Megan O'Malledy, Ufficiale stati d'animo\n\nMi rendo conto che operiamo in un settore industriale meschino e dannoso, che trae piacere e orgoglio dalla distruzione e dalla miseria, ma questo non è un motivo per lasciarsi andare agli stati d'animo negativi. Ho sentito molte lamentele, ultimamente. So che ad alcuni di voi non piacciono le uniformi che ho creato, ad altri il nuovo logo. Non ho nessun risentimento verso di voi, davvero, va tutto bene. Quando ricevo commenti di disapprovazione, li accetto costruttivamente. Bastardi senza cuore. Spero che marcirete tutti all'inferno." + IDS_INTEL_25862 "" + IDS_INTEL_25863 "" + IDS_INTEL_25864 "" + IDS_INTEL_25865 "" + IDS_INTEL_25866 "" + IDS_INTEL_25867 "" + IDS_INTEL_25868 "" + IDS_INTEL_25869 "" + IDS_INTEL_25870 "" + IDS_INTEL_25871 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25872 "" + IDS_INTEL_25873 "" + IDS_INTEL_25874 "" + IDS_INTEL_25875 "" + IDS_INTEL_25876 "" + IDS_INTEL_25877 "" + IDS_INTEL_25878 "" + IDS_INTEL_25879 "" + IDS_INTEL_25880 "" + IDS_INTEL_25881 "Testamento e ultime volontà@Testamento e ultime volontà\n\nIo, Frank J. Thompson, nel pieno delle mie facoltà fisiche e mentali, lascio in eredità la mia macchina e la mia collezione di fumetti a mio nipote, Chuck. I 5.000 dollari in contanti che stanno sotto il materasso vanno a mia madre per pagare l’affitto dello scorso anno. Mi spiace, è troppo tardi mamma. Al mio inutile fratello non lascio NIENTE! Ripensandoci, Lar, ti lascio un consiglio: vai a farti una vita perché non otterrai nulla di quello che rimane della mia!" + IDS_INTEL_25882 "Lettera d'amore@Fred,\nti ho sempre amato.\nGordon" + IDS_INTEL_25883 "" + IDS_INTEL_25884 "" + IDS_INTEL_25885 "" + IDS_INTEL_25886 "" + IDS_INTEL_25887 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25888 "" + IDS_INTEL_25889 "" + IDS_INTEL_25890 "" + IDS_INTEL_25891 "" + IDS_INTEL_25892 "" + IDS_INTEL_25893 "" + IDS_INTEL_25894 "" + IDS_INTEL_25895 "" + IDS_INTEL_25896 "" + IDS_INTEL_25897 "" + IDS_INTEL_25898 "" + IDS_INTEL_25899 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25920 "" + IDS_INTEL_25921 "Lettera: zio Winston@Caro Eustace,\n\nnon sono riuscito a contattarti telefonicamente fino a ieri pomeriggio, per questo sono costretto a scriverti. Ho parlato con zio Winston, oggi. Sta molto meglio dopo aver espulso i calcoli. Il dottore ha detto che erano grandi come il Diamante della Speranza. Sono sicuro che apprezzerebbe una telefonata dal suo nipote preferito, ma suppongo sia troppo chiederti di chiamarlo.\n\nTua madre" + IDS_INTEL_25922 "Lettera: Felicia Pullbutter@Eustace,\n\nmi sono imbattuta in Shirley Pullbutter al circolo, ieri sera. Aveva delle novità riguardanti Felicia molto intriganti. Sembra che il marito, quell’orrendo zoticone di Edimburgo, si sia impiccato nella cella lo scorso mese, il che significa che Felicia è nuovamente libera! So che l’hai sempre trovata piuttosto casaslinga, ma non l’hai ancora vista dopo l’elettrolisi e l’intervento chirurgico ai denti. Le sue mascelle sono molto meno prominenti e può perfino chiudere la bocca quasi completamente.\n\nTua madre" + IDS_INTEL_25923 "Nota: Operazione manipolazione di uomini @Tutto il personale\n\nAssicurarsi che il manipolatore di uomini sia stato ben riscaldato prima di essere usato, oppure il suo contenuto rischi adi essere spontaneamente rigettato. Ci sono voluti diversi giorni per ripulire l’incidente della settimana scorsa.\n\nUn tecnico di servizio è stato chiamato, ma nel frattempo, mostrate un po’ di considerazione." + IDS_INTEL_25924 "Documentazione H.A.R.M.: Progetto PR, pagina 1@CONFIDENZIALE\nAll'attenzione esclusiva del Direttore\n\nOggetto: cambiamenti al Progetto PR: stampa\n\nA partire da maggio, inseriremo dei messaggi pubblicitari a pagina intera sulle riviste Criminalità Mensile e Il Farabutto Perfetto. Inoltre abbiamo programmato una serie di interviste a tappeto con diversi quotidiani europei e abbiamo pronte delle lettere minatorie e di estorsione da inviare alla stampa americana.\n\nProcederemo con i programmi radio e video separatamente." + IDS_INTEL_25925 "Promemoria H.A.R.M.: igiene@A: Ufficio Risorse Umane\nDa: Comandante associato Saperstein\n\nL'odore prodotto dal corpo di Henchman Frankel sta iniziando a influire negativamente sul morale generale. Negli ultimi tre giorni, ho già ricevuto due richieste di trasferimento." + IDS_INTEL_25926 "Promemoria H.A.R.M.: igiene@A: tutti i dipendenti\nDa: Ufficio Risorse Umane\n\nA partire da martedì prossimo, è stato stabilito che il servizio di lavanderia sarà obbligatorio per tutti gli scagnozzi del covo segreto. Lasciate il bucato nella caverna D entro le ore 9:00. Chiunque non si atterrà a questo orario, riceverà un decurtamento dello stipendio settimanale del 50%. Siete tutti pregati di tenere in considerazione le esigenze e la salute dei vostri colleghi e ricordatevi che il nostro lavoro si svolge in un ambiente sotterraneo scarsamente ventilato. Grazie per la vostra collaborazione." + IDS_INTEL_25927 "Documento H.A.R.M.: Piano PR, pagina 2@confidenziale – Solo per il Direttore \n\nOggetto: revisione Piano PR: radio\n\nLa programmazione della nostra radio è un po’ più leggera dello scorso anno, ma abbiamo pianificato un paio di eccitanti eventi. Primo, abbiamo fissato la tua apparizione come ospite al Mark Mulroy talk radio show. Dovrai portarti un’arma da fuoco per riuscire a pronunciare un discorso che abbia senso, ma dovrebbe comunque essere una buona pubblicità. Inoltre, abbiamo appena acquisito la stazione radio K.H.R.M. ad Anaheim. Il nuovo formato prevederà musica da sballo con messaggi subliminali." + IDS_INTEL_25928 "Documento H.A.R.M.: Piano PR, pagina 3@CONFIDENZIALE – Solo per il Direttore\n\nOggetto: Piano PR revisionato: televisione\n\nLa televisione ancora una volta forma il fondamento degli sforzi dell’ufficio pubbliche relazioni. Solo questo quadrimestre, abbiamo schierato cinque mattine, sette prime serate e due interruzioni delle trasmissioni a notte inoltrata per mandare in onda messaggi sul Giorno del Giudizio. Pensiamo anche di aver ottenuto una tua apparizione al Tonight Show, inclusi cinque minuti pieni di intrattenimento di routine." + IDS_INTEL_25929 "Lettera: solitudine@Caro Eustace,\n\nnon dirmi che stai attraversando un'altra delle tue fasi di solitudine. Non riesco a sopportare di vederti così poco reattivo. In questi momenti penso che avrei fatto meglio a prendermi un cane piuttosto che mettere al mondo un figlio. I cani saranno anche stupidi e poco igienici, ma almeno mostrano un po' di affetto e riconoscenza.\n\nTua madre\n\nP.S. saluti da zia Phyllis" + IDS_INTEL_25930 "Piano di invasione, parte prima@Piano di invasione di Khios\n\nAbbiamo completato la nostra analisi tattica riguardo alla situazione di Khios e siamo giunti a queste conclusioni:\n\nPrima parte. Arrivo\nC'è un solo modo per raggiungere l'isola via mare: attraverso una caverna che si arrampica da una minuscola spiaggia sulla costa occidentale fino alle rocce sovrastanti. È un percorso pericoloso, ma con i super soldati a precederci, abbatteremo qualsiasi ostacolo. Il sottomarino super segreto dovrebbe essere in grado di avvicinarsi fino alla spiaggia e facilitare lo sbarco." + IDS_INTEL_25931 "Piano di invasione, parte seconda@Piano di invasione di Khios\n\nParte seconda. Attacco\nNel corso della storia, gli abitanti di Khios hanno tratto beneficio dall'asperità territoriale dell'isola. Nessuna forza armata si è mai avvicinata a tal punto da cimentarsi nella lunga e pericolosa scalata dalla costa. Tutto ciò che devono fare gli abitanti è gettare dell'olio bollente giù per le scale e l'assalto è terminato. I nostri super soldati faranno in modo di rendere tutte queste tattiche inutili, permettendoci di annientare velocemente qualsiasi opposizione." + IDS_INTEL_25932 "Piano di invasione, parte terza@Piano di invasione di Khios\n\nParte terza. Occupazione\nDopo aver fatto tutti prigionieri, daremo il via alle operazioni di occupazione dell'isola. Nella prima fase stileremo una lista dettagliata dei residenti superstiti e nella seconda faremo in modo di venderli tutti a una società farmaceutica come cavie da esperimento. Infine, nella terza fase, emaneremo un comunicato alla stampa internazionale in cui annunceremo l'apertura dell'avventuroso parco dei divertimenti della H.A.R.M." + IDS_INTEL_25933 "" + IDS_INTEL_25934 "" + IDS_INTEL_25935 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25936 "" + IDS_INTEL_25937 "" + IDS_INTEL_25938 "" + IDS_INTEL_25939 "" + IDS_INTEL_25940 "" + IDS_INTEL_25941 "Promemoria H.A.R.M.: assassini@A: Dimitri Volkov\nDa: il Direttore\n\nBene, la vostra soluzione dei mimi è stata un fiasco, come avevo previsto. Non che Isako fosse meglio. Comincio ad avere dubbi sul suo valore all'interno dell’organizzazione. Avremmo dovuto portare l’australiano." + IDS_INTEL_25942 "Promemoria H.A.R.M.: visita a sorpresa @A: Comandante membro Gudmundson\nDa: Carly Isadora Tehore, coordinatrice delle attività\n\nALLERTA CODICE ROSSO\n\nHo appena finito di parlare al telefono con la madre del Direttore. Sta pianificando una visita a sorpresa a partire dalla prossima settimana fino a Ottobre e vuole che le prepari la casa per gli ospiti. Le ho offerto di prenotarle i biglietti ma ha risposto che questa volta non vuole finire a Burma. Cosa dovrei fare?" + IDS_INTEL_25943 "Promemoria H.A.R.M.: madre del Direttore @A: Carly Isadora Tehore, coordinatrice delle attività\nDa: Comandante Gudmundson\n\nNon c’è bisogno di andare nel panico. Abbiamo piani contingenti per emergenze come queste. Secondo le mie registrazioni, abbiamo evitato la sua ultima visita usando la scusa 47: festività aziendale nell’est di Detroit. Questa volta dovremo usare la scusa 66: quarantena dovuta a un’esplosione di scarlattina. " + IDS_INTEL_25944 "" + IDS_INTEL_25945 "" + IDS_INTEL_25946 "" + IDS_INTEL_25947 "" + IDS_INTEL_25948 "" + IDS_INTEL_25949 "" + IDS_INTEL_25950 "" + IDS_INTEL_25951 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25952 "" + IDS_INTEL_25953 "" + IDS_INTEL_25954 "" + IDS_INTEL_25955 "" + IDS_INTEL_25956 "" + IDS_INTEL_25957 "" + IDS_INTEL_25958 "" + IDS_INTEL_25959 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25980 "" + IDS_INTEL_25981 "" + IDS_INTEL_25982 "" + IDS_INTEL_25983 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_25984 "" + IDS_INTEL_25985 "" + IDS_INTEL_25986 "" + IDS_INTEL_25987 "" + IDS_INTEL_25988 "" + IDS_INTEL_25989 "" + IDS_INTEL_25990 "Promemoria: siero anti super soldato@Cara Cate,\n\npuoi caricare il tuo lancia strumenti CT-180 con queste capsule di siero anti super soldato. Purtroppo, però, il siero non è abbastanza concentrato da distruggere un bersaglio attivo, quindi dovrai prima mettere fuori combattimento i super soldati infliggendogli sufficiente danno. Iniettagli il siero quando sono senza energia. Agisci con rapidità, altrimenti si riprenderanno e dovrai metterli nuovamente fuori combattimento!\n\nSinceramente,\ndott. Schenker" + IDS_INTEL_25991 "" + IDS_INTEL_25992 "" + IDS_INTEL_25993 "" + IDS_INTEL_25994 "" + IDS_INTEL_25995 "" + IDS_INTEL_25996 "" + IDS_INTEL_25997 "" + IDS_INTEL_25998 "" + IDS_INTEL_25999 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26200 "" + IDS_INTEL_26201 "Lettera: chiavi dell’appartamento@Carissma Phoolwati,\n\nprego la benedetta Kaamdhenu Vidya, la vacca sacra, di poterti incontrare ancora. Ho lasciato le chiavi dell'appartamento nel solito posto. Quanto desidero vederti!\n\nCon amore, Balaji\n" + IDS_INTEL_26202 "Lettera: fiori@Balaji caro,\n\nquanto mi sei mancato, dolcezza!Vieni a trovarmi nel mio appartamento, più tardi? Sto cucinando un “agnello tika masala” con salsa indiana alla menta.\n\nPhoolwati\n\nP.S. Per favore non raccogliere fiori per me dal mio vaso al pianterreno. Apprezzo il gesto, ma, mio caro, i garofani non crescono se vengono continuamente molestati.\n" + IDS_INTEL_26203 "" + IDS_INTEL_26204 "" + IDS_INTEL_26205 "" + IDS_INTEL_26206 "" + IDS_INTEL_26207 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26208 "" + IDS_INTEL_26209 "" + IDS_INTEL_26210 "" + IDS_INTEL_26211 "" + IDS_INTEL_26212 "" + IDS_INTEL_26213 "" + IDS_INTEL_26214 "" + IDS_INTEL_26215 "" + IDS_INTEL_26216 "" + IDS_INTEL_26217 "" + IDS_INTEL_26218 "" + IDS_INTEL_26219 "" + IDS_INTEL_26220 "" + IDS_INTEL_26221 "" + IDS_INTEL_26222 "" + IDS_INTEL_26223 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26224 "" + IDS_INTEL_26225 "" + IDS_INTEL_26226 "" + IDS_INTEL_26227 "" + IDS_INTEL_26228 "" + IDS_INTEL_26229 "" + IDS_INTEL_26230 "" + IDS_INTEL_26231 "" + IDS_INTEL_26232 "" + IDS_INTEL_26233 "" + IDS_INTEL_26234 "" + IDS_INTEL_26235 "" + IDS_INTEL_26236 "" + IDS_INTEL_26237 "" + IDS_INTEL_26238 "" + IDS_INTEL_26239 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26240 "" + IDS_INTEL_26241 "Promemoria H.A.R.M.: prigionieri@A: dott. Kussman\n\nIl Direttore richiede che tutti i prigionieri siano trasferiti nella nostra struttura sottomarina nel Mar Egeo. Per ulteriori dettagli, contattare l'Ufficio Risorse Umane.\n" + IDS_INTEL_26242 "" + IDS_INTEL_26243 "" + IDS_INTEL_26244 "" + IDS_INTEL_26245 "" + IDS_INTEL_26246 "" + IDS_INTEL_26247 "" + IDS_INTEL_26248 "" + IDS_INTEL_26249 "" + IDS_INTEL_26250 "" + IDS_INTEL_26251 "" + IDS_INTEL_26252 "" + IDS_INTEL_26253 "" + IDS_INTEL_26254 "" + IDS_INTEL_26255 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26256 "" + IDS_INTEL_26257 "" + IDS_INTEL_26258 "" + IDS_INTEL_26259 "" +END + +STRINGTABLE +BEGIN + IDS_INTEL_26359 "" +END + +STRINGTABLE +BEGIN + IDS_COOP_MISSION_OBJ_5520 + "Cerca bersagli adatti e piazza quattro serie di cariche esplosive." + IDS_COOP_MISSION_OBJ_5521 + "Cerca bersagli adatti e piazza tre serie di cariche esplosive." + IDS_COOP_MISSION_OBJ_5522 + "Cerca bersagli adatti e piazza due serie di cariche esplosive." + IDS_COOP_MISSION_OBJ_5523 + "Cerca bersagli adatti e piazza una carica esplosiva." + IDS_COOP_MISSION_OBJ_5524 + "Ritorna al punto di estrazione per il recupero." + IDS_COOP_MISSION_OBJ_5525 "I mimi hanno 4 ostaggi. Salvali." + IDS_COOP_MISSION_OBJ_5526 "I mimi hanno 3 ostaggi. Salvali." + IDS_COOP_MISSION_OBJ_5527 "I mimi hanno 2 ostaggi. Salvali." + IDS_COOP_MISSION_OBJ_5528 "I mimi hanno 1 ostaggio. Salvalo." + IDS_COOP_MISSION_OBJ_5529 + "Fatti trovare nell'ingresso del punto di estrazione per ricevere la tua prossima missione." + IDS_COOP_MISSION_OBJ_5530 + "Raccogli 50 rupie e paga Crazy Harij per poter oltrepassare i cancelli ed entrare nella parte più interna della città." + IDS_COOP_MISSION_OBJ_5531 + "Raggiungi l'elicottero della UNITY per l'estrazione." + IDS_COOP_MISSION_OBJ_5532 "Cate è morta! Missione fallita!" + IDS_COOP_MISSION_OBJ_5533 "" + IDS_COOP_MISSION_OBJ_5534 "" + IDS_COOP_MISSION_OBJ_5535 "" +END + +STRINGTABLE +BEGIN + IDS_STRING5577 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3500 "" + IDS_SEARCH_ITEM_3501 "Hai trovato una matita." + IDS_SEARCH_ITEM_3502 "Hai trovato una trappola per topi vuota." + IDS_SEARCH_ITEM_3503 "Hai trovato alcuni serracarte." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3504 "Hai trovato un panino al prosciutto ammuffito." + IDS_SEARCH_ITEM_3505 "Hai trovato una trappola per topi con dentro una vittima." + IDS_SEARCH_ITEM_3506 "Hai trovato un giornale a fumetti stracciato." + IDS_SEARCH_ITEM_3507 "Hai trovato una risma di carta liscia." + IDS_SEARCH_ITEM_3508 "Hai trovato un pacchetto di fazzoletti di carta." + IDS_SEARCH_ITEM_3509 "Hai trovato una bottiglietta di balsamo per capelli." + IDS_SEARCH_ITEM_3510 "Hai trovato un rossetto." + IDS_SEARCH_ITEM_3511 "Hai trovato delle calze." + IDS_SEARCH_ITEM_3512 "Hai trovato un pacchetto di gomme da masticare." + IDS_SEARCH_ITEM_3513 "Hai trovato una gomma per cancellare." + IDS_SEARCH_ITEM_3514 "Hai trovato una matita con una gomma per cancellare." + IDS_SEARCH_ITEM_3515 "Hai trovato una piccola bottiglia di gin." + IDS_SEARCH_ITEM_3516 "Hai trovato una spillatrice inceppata." + IDS_SEARCH_ITEM_3517 "Hai trovato un catalogo di forniture per ufficio." + IDS_SEARCH_ITEM_3518 "Hai trovato un blocchetto pieno di scarabocchi." + IDS_SEARCH_ITEM_3519 "Hai trovato una ciambella vecchia, mezza mangiata." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3520 "Hai trovato una forchetta di plastica." + IDS_SEARCH_ITEM_3521 "Hai trovato delle forbici da mancino." + IDS_SEARCH_ITEM_3522 "Hai trovato una scatola di puntine." + IDS_SEARCH_ITEM_3523 "Hai trovato sei penne nere, tutte secche." + IDS_SEARCH_ITEM_3524 "Hai trovato un barattolo di aspirina." + IDS_SEARCH_ITEM_3525 "Hai trovato un pennarello indelebile senza tappo." + IDS_SEARCH_ITEM_3526 "Hai trovato un deodorante stick non usato." + IDS_SEARCH_ITEM_3527 "Hai trovato un pacchetto di mentine per l'alito." + IDS_SEARCH_ITEM_3528 "Hai trovato un timbro senza manico." + IDS_SEARCH_ITEM_3529 "Hai trovato una fetta di formaggio ammuffito." + IDS_SEARCH_ITEM_3530 "Hai trovato un aeroplano di carta incidentato." + IDS_SEARCH_ITEM_3531 "Hai trovato un barattolo di crema per mani." + IDS_SEARCH_ITEM_3532 "Hai trovato uno spazzolino da denti sporco." + IDS_SEARCH_ITEM_3533 "" + IDS_SEARCH_ITEM_3534 "" + IDS_SEARCH_ITEM_3535 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3536 "" + IDS_SEARCH_ITEM_3537 "" + IDS_SEARCH_ITEM_3538 "" + IDS_SEARCH_ITEM_3539 "" + IDS_SEARCH_ITEM_3540 "" + IDS_SEARCH_ITEM_3541 "" + IDS_SEARCH_ITEM_3542 "" + IDS_SEARCH_ITEM_3543 "" + IDS_SEARCH_ITEM_3544 "" + IDS_SEARCH_ITEM_3545 "" + IDS_SEARCH_ITEM_3546 "" + IDS_SEARCH_ITEM_3547 "" + IDS_SEARCH_ITEM_3548 "" + IDS_SEARCH_ITEM_3549 "" + IDS_SEARCH_ITEM_3550 "" + IDS_SEARCH_ITEM_3551 "Hai trovato una dichiarazione dei redditi U.S.A. datata 1958." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3552 "Hai trovato una pila di lettere d'amore." + IDS_SEARCH_ITEM_3553 "Hai trovato un manuale di condotta personale." + IDS_SEARCH_ITEM_3554 "Hai trovato una pila di 387 fogli di documenti di divorzio." + IDS_SEARCH_ITEM_3555 "Hai trovato una richiesta di dimissioni in bianco." + IDS_SEARCH_ITEM_3556 "Hai trovato le Ultime volontà è il Testamento di qualcuno." + IDS_SEARCH_ITEM_3557 "Hai trovato un racconto incompleto." + IDS_SEARCH_ITEM_3558 "" + IDS_SEARCH_ITEM_3559 "" + IDS_SEARCH_ITEM_3560 "" + IDS_SEARCH_ITEM_3561 "" + IDS_SEARCH_ITEM_3562 "" + IDS_SEARCH_ITEM_3563 "" + IDS_SEARCH_ITEM_3564 "" + IDS_SEARCH_ITEM_3565 "" + IDS_SEARCH_ITEM_3566 "" + IDS_SEARCH_ITEM_3567 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3568 "" + IDS_SEARCH_ITEM_3569 "" + IDS_SEARCH_ITEM_3570 "" + IDS_SEARCH_ITEM_3571 "" + IDS_SEARCH_ITEM_3572 "" + IDS_SEARCH_ITEM_3573 "" + IDS_SEARCH_ITEM_3574 "" + IDS_SEARCH_ITEM_3575 "" + IDS_SEARCH_ITEM_3576 "Hai trovato una foto autografata della Meravigliosa Olga." + IDS_SEARCH_ITEM_3577 "Hai trovato un biglietto per La Meravigliosa Olga e i suoi Felini Volanti." + IDS_SEARCH_ITEM_3578 "Hai trovato il racconto Zia Vanja di Anton Cechov." + IDS_SEARCH_ITEM_3579 "Hai trovato una lista della spesa con carta igienica, sapone e carote." + IDS_SEARCH_ITEM_3580 "Hai trovato una ricetta per le razioni militari." + IDS_SEARCH_ITEM_3581 "Hai trovato il racconto " + IDS_SEARCH_ITEM_3582 "Hai trovato il racconto Taras Bulbadiy Nikolay Gogol." + IDS_SEARCH_ITEM_3583 "Hai trovato il poema, Venus e Madonna di Mihai Eminescu." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3584 "Hai trovato una fotografia autografata dei Felini Volanti." + IDS_SEARCH_ITEM_3585 "" + IDS_SEARCH_ITEM_3586 "" + IDS_SEARCH_ITEM_3587 "" + IDS_SEARCH_ITEM_3588 "" + IDS_SEARCH_ITEM_3589 "" + IDS_SEARCH_ITEM_3590 "" + IDS_SEARCH_ITEM_3591 "" + IDS_SEARCH_ITEM_3592 "" + IDS_SEARCH_ITEM_3593 "" + IDS_SEARCH_ITEM_3594 "" + IDS_SEARCH_ITEM_3595 "" + IDS_SEARCH_ITEM_3596 "" + IDS_SEARCH_ITEM_3597 "" + IDS_SEARCH_ITEM_3598 "" + IDS_SEARCH_ITEM_3599 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3600 "" + IDS_SEARCH_ITEM_3601 "Hai trovato una bottiglia di vodka." + IDS_SEARCH_ITEM_3602 "Hai trovato un mazzo di carte collezionabili della Lega Siberiana di Hockey." + IDS_SEARCH_ITEM_3603 "Hai trovato una lattina di carne in scatola." + IDS_SEARCH_ITEM_3604 "Hai trovato un giornale russo intitolato Camerati senza abiti." + IDS_SEARCH_ITEM_3605 "Hai trovato un biglietto premio per una vacanza nella bellissima città di Murmansk!" + IDS_SEARCH_ITEM_3606 "Hai trovato un timbro della parola NEGATO." + IDS_SEARCH_ITEM_3607 "Hai trovato un guanto rosso." + IDS_SEARCH_ITEM_3608 "Hai trovato un pacchetto di sigarette jugoslave." + IDS_SEARCH_ITEM_3609 "Hai trovato un accendino non funzionante." + IDS_SEARCH_ITEM_3610 "Hai trovato un Pulcinella di Mare morto." + IDS_SEARCH_ITEM_3611 "Hai trovato una copia logorata di Guerra e Pace. " + IDS_SEARCH_ITEM_3612 "Hai trovato un manuale sulle Regole di Condotta Militari." + IDS_SEARCH_ITEM_3613 "Hai trovato una foto autografata di un trattore. " + IDS_SEARCH_ITEM_3614 "Hai trovato un pezzo di garza." + IDS_SEARCH_ITEM_3615 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3616 "" + IDS_SEARCH_ITEM_3617 "" + IDS_SEARCH_ITEM_3618 "" + IDS_SEARCH_ITEM_3619 "" + IDS_SEARCH_ITEM_3620 "" + IDS_SEARCH_ITEM_3621 "" + IDS_SEARCH_ITEM_3622 "" + IDS_SEARCH_ITEM_3623 "" + IDS_SEARCH_ITEM_3624 "" + IDS_SEARCH_ITEM_3625 "" + IDS_SEARCH_ITEM_3626 "Hai trovato un pacchetto di caramelle alla menta." + IDS_SEARCH_ITEM_3627 "Hai trovato una gomma masticata." + IDS_SEARCH_ITEM_3628 "Hai trovato una garza." + IDS_SEARCH_ITEM_3629 "Hai trovato uno yo-yo." + IDS_SEARCH_ITEM_3630 "Hai trovato una matrice del biglietto per il film." + IDS_SEARCH_ITEM_3631 "Hai trovato una mela marcia." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3632 "Hai trovato un temperino." + IDS_SEARCH_ITEM_3633 "Hai trovato una lista della spesa." + IDS_SEARCH_ITEM_3634 "Hai trovato un pettine di plastica." + IDS_SEARCH_ITEM_3635 "Hai trovato una lettera indirizzata a John." + IDS_SEARCH_ITEM_3636 "Hai trovato un fazzoletto usato." + IDS_SEARCH_ITEM_3637 "Hai trovato un pezzo di carta stropicciato." + IDS_SEARCH_ITEM_3638 "Hai trovato un paio di dadi." + IDS_SEARCH_ITEM_3639 "Hai trovato un mazzo di carte." + IDS_SEARCH_ITEM_3640 "Hai trovato alcune vitamine alterate " + IDS_SEARCH_ITEM_3641 "Hai trovato una pastiglia per la tosse al gusto di ciliegia, mezza masticata." + IDS_SEARCH_ITEM_3642 "Hai trovato una pastiglia per la tosse al mentolo." + IDS_SEARCH_ITEM_3643 "Hai trovato un mucchio di fazzolettini usati da qualcuno con un terribile raffreddore." + IDS_SEARCH_ITEM_3644 "Hai trovato una palla di fogli di alluminio grande come un pugno." + IDS_SEARCH_ITEM_3645 "Hai trovato un disegno di un bambino cattivo." + IDS_SEARCH_ITEM_3646 "Hai trovato una carta di caramelle." + IDS_SEARCH_ITEM_3647 "Hai trovato alcuni piegaciglia." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3648 "Hai trovato un elastico rotto." + IDS_SEARCH_ITEM_3649 "Hai trovato un soldatino di plastica." + IDS_SEARCH_ITEM_3650 "Hai trovato un dente." + IDS_SEARCH_ITEM_3651 "Hai trovato qualche unghia del piede tagliata." + IDS_SEARCH_ITEM_3652 "Hai trovato qualche biglia." + IDS_SEARCH_ITEM_3653 "Hai trovato del filo dentale usato." + IDS_SEARCH_ITEM_3654 "Hai trovato una zampa di coniglio portafortuna." + IDS_SEARCH_ITEM_3655 "Hai trovato un bottone smarrito." + IDS_SEARCH_ITEM_3656 "Hai trovato delle briciole." + IDS_SEARCH_ITEM_3657 "" + IDS_SEARCH_ITEM_3658 "" + IDS_SEARCH_ITEM_3659 "" + IDS_SEARCH_ITEM_3660 "" + IDS_SEARCH_ITEM_3661 "Hai trovato una manopola rosa." + IDS_SEARCH_ITEM_3662 "Hai trovato un balsamo per le labbra all'olio di pesce." + IDS_SEARCH_ITEM_3663 "Hai trovato un biglietto per lo spettacolo di domenica mattina La Meravilgiosa Olga e i suoi Felini Volanti." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3664 "Hai trovato un piroshki. " + IDS_SEARCH_ITEM_3665 "" + IDS_SEARCH_ITEM_3666 "" + IDS_SEARCH_ITEM_3667 "" + IDS_SEARCH_ITEM_3668 "" + IDS_SEARCH_ITEM_3669 "" + IDS_SEARCH_ITEM_3670 "" + IDS_SEARCH_ITEM_3671 "" + IDS_SEARCH_ITEM_3672 "" + IDS_SEARCH_ITEM_3673 "" + IDS_SEARCH_ITEM_3674 "" + IDS_SEARCH_ITEM_3675 "" + IDS_SEARCH_ITEM_3676 "" + IDS_SEARCH_ITEM_3677 "" + IDS_SEARCH_ITEM_3678 "" + IDS_SEARCH_ITEM_3679 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3680 "" + IDS_SEARCH_ITEM_3681 "Hai trovato alcuni pezzi di Go. " + IDS_SEARCH_ITEM_3682 "Hai trovato dei bastoncini di caramella al gusto di fragola. Yum!" + IDS_SEARCH_ITEM_3683 "Hai trovato un fiore di ciliegia schiacciato." + IDS_SEARCH_ITEM_3684 "Hai trovato dei rossetti." + IDS_SEARCH_ITEM_3685 "Hai trovato una molletta per i capelli." + IDS_SEARCH_ITEM_3686 "Hai trovato l'astuccio di un rossetto." + IDS_SEARCH_ITEM_3687 "Hai trovato un biglietto per il film Kaiju Soshingeki." + IDS_SEARCH_ITEM_3688 "Hai trovato un set di ciglia finte." + IDS_SEARCH_ITEM_3689 "Hai trovato una carta di credito." + IDS_SEARCH_ITEM_3690 "Hai trovato una boccetta di profumo di tsubaki." + IDS_SEARCH_ITEM_3691 "Hai trovato uno specchio rotto." + IDS_SEARCH_ITEM_3692 "Hai trovato un amuleto di legno contro le maledizioni." + IDS_SEARCH_ITEM_3693 "Hai trovato un fazzoletto da collo in pizzo." + IDS_SEARCH_ITEM_3694 "Hai trovato un amuleto d'oro per la buona salute." + IDS_SEARCH_ITEM_3695 "Hai trovato un amuleto d'argento per la fortuna in amore." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3696 "Hai trovato una caramella ai fagioli rossi leggermente sciolta. " + IDS_SEARCH_ITEM_3697 "Hai trovato un pezzo ammuffito di ebi nigiri avvolto in un tovagliolo. " + IDS_SEARCH_ITEM_3698 "Hai trovato un salvadanaio vuoto." + IDS_SEARCH_ITEM_3699 "" + IDS_SEARCH_ITEM_3700 "" + IDS_SEARCH_ITEM_3701 "Hai trovato una bottiglia di detersivo Master Chi's Super Orange. " + IDS_SEARCH_ITEM_3702 "Hai trovato una penna per scrivere." + IDS_SEARCH_ITEM_3703 "Hai trovato un piccolo set per il cucito." + IDS_SEARCH_ITEM_3704 "Hai trovato una pagnotta mezza mangiata di shoku pan. " + IDS_SEARCH_ITEM_3705 "Hai trovato una radice di wasabi." + IDS_SEARCH_ITEM_3706 "Hai trovato una bottiglia di salsa di soia." + IDS_SEARCH_ITEM_3707 "" + IDS_SEARCH_ITEM_3708 "" + IDS_SEARCH_ITEM_3709 "" + IDS_SEARCH_ITEM_3710 "" + IDS_SEARCH_ITEM_3711 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3712 "" + IDS_SEARCH_ITEM_3713 "" + IDS_SEARCH_ITEM_3714 "" + IDS_SEARCH_ITEM_3715 "" + IDS_SEARCH_ITEM_3716 "" + IDS_SEARCH_ITEM_3717 "" + IDS_SEARCH_ITEM_3718 "" + IDS_SEARCH_ITEM_3719 "" + IDS_SEARCH_ITEM_3720 "" + IDS_SEARCH_ITEM_3721 "Hai trovato un fazzoletto per il collo con un monogramma." + IDS_SEARCH_ITEM_3722 "Hai trovato un sacchetto di tabacco da masticare." + IDS_SEARCH_ITEM_3723 "Hai trovato un cartoncino segnapunti da cricket." + IDS_SEARCH_ITEM_3724 "Hai trovato un disegno di Shasti, la dea felina del Bengala, protettrice dei bambini." + IDS_SEARCH_ITEM_3725 "Una figura scolpita di Lakshmi, la dea della prosperità e della salute." + IDS_SEARCH_ITEM_3726 "Hai trovato un'immagine di Durga, dea della felice vita matrimoniale." + IDS_SEARCH_ITEM_3727 "Un'immagine di Kartikeya, il secondo figlio di Lord Shiva e dio della guerra e della distruzione." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3728 "Hai trovato un'immagine della dea Gauri, che garantisce a una giovane donna di trovare un marito virtuoso." + IDS_SEARCH_ITEM_3729 "Un amuleto di Angaraka per liberare il possessore dai debiti e dalle malattie della pelle. " + IDS_SEARCH_ITEM_3730 "Hai trovato alcuni baccelli di cardamomo. " + IDS_SEARCH_ITEM_3731 "Una statua di ottone di Kaamdhenu, la vacca sacra che realizza tutti i desideri." + IDS_SEARCH_ITEM_3732 "Un piccolo amuleto d'argento raffigurante Saraswati dalle quattro mani, mentre suona la veena. " + IDS_SEARCH_ITEM_3733 "Hai trovato un fazzoletto per il collo in batik." + IDS_SEARCH_ITEM_3734 "Hai trovato un tamarindo marcio." + IDS_SEARCH_ITEM_3735 "Hai trovato una koorka mezza mangiata." + IDS_SEARCH_ITEM_3736 "" + IDS_SEARCH_ITEM_3737 "" + IDS_SEARCH_ITEM_3738 "" + IDS_SEARCH_ITEM_3739 "" + IDS_SEARCH_ITEM_3740 "" + IDS_SEARCH_ITEM_3741 "Hai trovato un vasetto di nutella." + IDS_SEARCH_ITEM_3742 "Hai trovato un mazzo di carte di Teen Pathi." + IDS_SEARCH_ITEM_3743 "Hai trovato una bottiglia di olio di cocco." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3744 "Hai trovato un vasetto di cipria." + IDS_SEARCH_ITEM_3745 "Hai trovato un loris farcito. " + IDS_SEARCH_ITEM_3746 "Hai trovato un vasetto di polvere di henné e olio mehendi. " + IDS_SEARCH_ITEM_3747 "Hai trovato una scodella di montone patialashahi ammuffito." + IDS_SEARCH_ITEM_3748 "Hai trovato una borsa di riso basmati riempito con weavils. " + IDS_SEARCH_ITEM_3749 "Hai trovato un libro intitolato Atithi Devo Bhava." + IDS_SEARCH_ITEM_3750 "Hai trovato un paio di bastoncini di Gilli Danda." + IDS_SEARCH_ITEM_3751 "Hai trovato una bottiglia di olio per capelli amla ." + IDS_SEARCH_ITEM_3752 "Hai trovato un vasetto di menta piperita." + IDS_SEARCH_ITEM_3753 "Hai trovato un vasetto di ghee. " + IDS_SEARCH_ITEM_3754 "" + IDS_SEARCH_ITEM_3755 "" + IDS_SEARCH_ITEM_3756 "" + IDS_SEARCH_ITEM_3757 "" + IDS_SEARCH_ITEM_3758 "" + IDS_SEARCH_ITEM_3759 "" +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3760 "" + IDS_SEARCH_ITEM_3761 "Hai trovato una fattura per la società India Black Tea. " + IDS_SEARCH_ITEM_3762 "Una selezione di versi da Valmiki's Ramayana. " + IDS_SEARCH_ITEM_3763 "Hai trovato una copia di Meghaduta, Il Messaggero delle Nuvole, di Kalidasa." + IDS_SEARCH_ITEM_3764 "Copertina del disco intitolato Musica religiosa d'India." + IDS_SEARCH_ITEM_3765 "Hai trovato la ricetta il Fantasma Ki Kashmiri Biryani." + IDS_SEARCH_ITEM_3766 "Hai trovato la ricetta per il maiale Vindaloo." + IDS_SEARCH_ITEM_3767 "Hai trovato una fattura per Nanda Devi Window Washers. " + IDS_SEARCH_ITEM_3768 "Una preghiera per Bhavani, protettrice delle donne lavoratrici. " + IDS_SEARCH_ITEM_3769 "Una preghiera per Banka-Mundi, dea cacciatrice del Khoud, utilizzata per incutere a qualcuno timore delle bestie della giungla. " + IDS_SEARCH_ITEM_3770 "Hai trovato una copia del libro: Mehendi - consigli e stratagemmi." + IDS_SEARCH_ITEM_3771 "" + IDS_SEARCH_ITEM_3772 "" + IDS_SEARCH_ITEM_3773 "" + IDS_SEARCH_ITEM_3774 "" + IDS_SEARCH_ITEM_3775 "" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4768 "Un cartellino di identificazione della H.A.R.M. utilizzato per entrare nelle aree protette." + IDS_KEY_DESC_4769 "La targhetta del tubo dell’aspirapolvere riporta: pezzo di ricambio per l'unità di elaborazione dati M-9." + IDS_KEY_DESC_4770 "Il codice segreto per l'unità di elaborazione dati." + IDS_KEY_DESC_4771 "Un dispositivo di disturbo per accedere all'unità di elaborazione dati." + IDS_KEY_DESC_4772 "La parola d'ordine necessaria per avviare l'unità di processazione dei dati M-9." + IDS_KEY_DESC_4773 "Elenca l'ID del file per informazioni sul Progetto Omega." + IDS_KEY_DESC_4774 "La rupia è l'unità di moneta in India." + IDS_KEY_DESC_4775 "Queste sono chiavi di accensione per un gatto delle nevi." + IDS_KEY_DESC_4776 "Lo zucchero raffinato può essere usato per addolcire il caffè o per ingrippare un motore." + IDS_KEY_DESC_4777 "Lo zucchero raffinato può essere usato per addolcire il caffè o per ingrippare un motore." + IDS_KEY_DESC_4778 "Gli occhiali del Dr. Schenker sono inconfondibili. Le spesse lenti sono segnate da graffi e non sembrano essere state pulite per dei mesi. È difficile immaginare come possa vederci attraverso. " + IDS_KEY_DESC_4779 "La chiave di accensione di un gatto delle nevi." + IDS_KEY_DESC_4780 "Cinquanta rupie. Potresti offrirle a Crazy Harij per farti aprire i cancelli della città." + IDS_KEY_DESC_4781 "Questo catalogo è richiesto per ottenere la versione 1.0 del Manuale d'uso servizi super computer dal Dipartimento servizi super computer." + IDS_KEY_DESC_4782 "Questa chiave serve per far funzionare la gru di caricamento nella baia del sottomarino." + IDS_KEY_DESC_4783 "Questa scheda di sicurezza può essere inserita nei lettori di schede per ottenere l'accesso alle aree protette." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3776 "" + IDS_SEARCH_ITEM_3777 "" + IDS_SEARCH_ITEM_3778 "" + IDS_SEARCH_ITEM_3779 "" + IDS_SEARCH_ITEM_3780 "" + IDS_SEARCH_ITEM_3781 "Hai trovato un pallone sgonfio." + IDS_SEARCH_ITEM_3782 "Hai trovato un vasetto di pasta per fare le frittelle." + IDS_SEARCH_ITEM_3783 "Hai trovato un kazoo rotto." + IDS_SEARCH_ITEM_3784 "Hai trovato un guanto bianco." + IDS_SEARCH_ITEM_3785 "Hai trovato un fazzoletto per il collo di colore rosso, porpora e giallo" + IDS_SEARCH_ITEM_3786 "Hai trovato un disegno di un elefante fatto con un bastoncino." + IDS_SEARCH_ITEM_3787 "Hai trovato dell'ombretto blu." + IDS_SEARCH_ITEM_3788 "Hai trovato un tubetto di cerone rosso." + IDS_SEARCH_ITEM_3789 "Hai trovato un Mimo per il dizionario di inglese. " + IDS_SEARCH_ITEM_3790 "Hai trovato una petizione per legittimare la pantomima come sport olimpionico." + IDS_SEARCH_ITEM_3791 "Hai trovato un manuale intitolato Lezioni di mimo facilitate." +END + +STRINGTABLE +BEGIN + IDS_SEARCH_ITEM_3792 "Hai trovato un garofano rosa." + IDS_SEARCH_ITEM_3793 "Hai trovato una bottiglia di sherry per cucinare." + IDS_SEARCH_ITEM_3794 "Hai trovato un tubetto di cerone bianco." + IDS_SEARCH_ITEM_3795 "" + IDS_SEARCH_ITEM_3796 "" + IDS_SEARCH_ITEM_3797 "" + IDS_SEARCH_ITEM_3798 "" + IDS_SEARCH_ITEM_3799 "" + IDS_SEARCH_ITEM_3800 "" +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7500 "" + IDS_DECISIONS_7501 "Parlami degli obiettivi." + IDS_DECISIONS_7502 "Parlami dell'equipaggiamento." + IDS_DECISIONS_7503 "Parlami dei punti abilità." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7008 "Non hai le chiavi." + IDS_TRANSMISSIONS_7009 "Lo spazzaneve è senza carburante." + IDS_TRANSMISSIONS_7010 "Manca un tubo dell'aspiratore." + IDS_TRANSMISSIONS_7011 "Ti serve una parola d'ordine per accedere a questo computer." + IDS_TRANSMISSIONS_7012 "Inserisci il codice numerico." + IDS_TRANSMISSIONS_7013 "Non funzionerà senza le batterie." + IDS_TRANSMISSIONS_7014 "È troppo pesante per te." + IDS_TRANSMISSIONS_7015 "Ho trovato 10 rupie." + IDS_TRANSMISSIONS_7016 "Ho trovato 10 rupie. Ne mancano solo 40." + IDS_TRANSMISSIONS_7017 "Ho trovato 10 rupie. Ne mancano solo 30." + IDS_TRANSMISSIONS_7018 "Ho trovato 10 rupie. Ne mancano solo 20." + IDS_TRANSMISSIONS_7019 "Ho trovato 10 rupie. Ne mancano solo 10." + IDS_TRANSMISSIONS_7020 "E con questa fanno 50 rupie! Dirigiamoci verso il cancello." + IDS_TRANSMISSIONS_7021 "Ho trovato un appunto di Balaji indirizzato alla sua amante. Dobbiamo trovare il mazzo di chiavi che le ha lasciato nei dintorni. Sparpagliatevi e setacciate la zona." + IDS_TRANSMISSIONS_7022 "Ho trovato un messaggio dell'amante di Balaji che dice di incontrarla nel suo appartamento. Cercate un vaso per fiori all'esterno e posizionatevi dall'altro lato della strada. Li fotograferemo dalle finestre." + IDS_TRANSMISSIONS_7023 "Ho trovato le chiavi dell'appartamento di Balaji. Perquisiamo il posto in cerca di indizi." +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7024 "The bomb at target 2 has been defused." + IDS_TRANSMISSIONS_7025 "Spacesuit required." + IDS_TRANSMISSIONS_7026 "Replace O2 Tank." + IDS_TRANSMISSIONS_7027 "The bomb at target 3 has been defused." + IDS_TRANSMISSIONS_7028 "Target 1 destroyed." + IDS_TRANSMISSIONS_7029 "Target 2 destroyed." + IDS_TRANSMISSIONS_7030 "Target 3 destroyed." + IDS_TRANSMISSIONS_7031 "Time limit reached." + IDS_TRANSMISSIONS_7032 "All targets destroyed." +END + +STRINGTABLE +BEGIN + IDS_DECISIONS_7504 "Niente ora, grazie." + IDS_DECISIONS_7505 "Riproduci il nastro 1." + IDS_DECISIONS_7506 "Riproduci il nastro 2." + IDS_DECISIONS_7507 "Riproduci il nastro 3." + IDS_DECISIONS_7508 "Riproduci il nastro 4." + IDS_DECISIONS_7509 "Riproduci il nastro 5." + IDS_DECISIONS_7510 "Riproduci il nastro 6." + IDS_DECISIONS_7511 "Immetti il numero di identificazione del file per il progetto Omega." + IDS_DECISIONS_7512 "Immetti i numeri a caso." +END + +STRINGTABLE +BEGIN + IDS_MISSION_12_NAME "CAPITOLO 13. Terrore negli abissi" + IDS_MISSION_13_NAME "CAPITOLO 14. Fine del gioco" + IDS_MISSION_14_NAME "CAPITOLO 15. Attacco preventivo" + IDS_MISSION_09_NAME7 "" + IDS_MISSION_09_NAME8 "CAPITOLO I. Il salvataggio" + IDS_MISSION_09_NAME9 "CAPITOLO II. Il Super Computer" + IDS_MISSION_09_NAME10 "CAPITOLO III. L'allestimento" + IDS_MISSION_09_NAME11 "CAPITOLO IV. Togliere di mezzo" + IDS_MISSION_09_NAME12 "CAPITOLO V. Un mimo da uccidere" + IDS_MISSION_09_NAME13 "Demo." + IDS_MISSION_09_NAME14 "Demo." + IDS_MISSION_09_NAME15 "Demo." + IDS_MISSION_09_NAME16 "TEST TEST TEST TEST" +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEMP_BRIEF5 "Poco dopo aver respinto un devastante attacco al quartier generale della UNITY a opera di un gruppo di mimi con mitragliatrici, Cate parte per la missione di salvataggio di Armstrong dalle grinfie della H.A.R.M.\n\nSfortunatamente sembra che l'infestazione dei mimi non sia completamente rimossa. Gli assassini hanno sferrato un nuovo attacco, apparentemente determinati a infliggere il maggior danno possibile alla UNITY.\n\nCon Cate lontana, la risoluzione della crisi sarà nelle sole mani di una squadra di intercettazione. \n" + IDS_MISSION_TEMP_BRIEF6 "Durante una pericolosa missione nel cuore dell'Unione Sovietica, Cate riceve l'ordine di sabotare una torretta delle comunicazioni radio in una sperduta base siberiana. Il suo primo obiettivo è quello di procurarsi delle cariche esplosive per questo nuovo incarico, per poi piazzarle alla base della torretta e allontanarsi dalla zona prima dell'arrivo dei rinforzi.\n\nSuggerimenti: non sei costretto a combattere solo perché vieni scoperto. Spesso puoi sfuggire ai nemici e nasconderti finché non decidono di andarsene. Inoltre, assicurati di perquisire i mobiletti degli archivi e i cassetti delle scrivanie e di neutralizzare i nemici per ottenere preziose informazioni e oggetti utili." + IDS_MISSION_TEMP_BRIEF7 "Briefing della missione demo UNITY" + IDS_MISSION_TEMP_BRIEF8 "Cate è arrivata a Akron, nell'Ohio, alla ricerca di indizi relativi al progetto Omega, un misterioso complotto sovietico che minaccia di far scoppiare la Terza Guerra Mondiale.\n\nImprovvisamente, la sua missione prende una direzione inaspettata e si trova coinvolta in inseguimenti con pericolosi ninja assassini e con la minaccia di un tornado in avvicinamento. La sua unica speranza di salvezza è di sconfiggere i ninja e il loro misterioso capo, Isako, prima che faccia una brutta fine." + IDS_MISSION_TEMP_BRIEF9 "Questo livello mostra il nuovo supporto per le superfici acquatiche del motore LithTech Jupiter e l'uso delle texture. " + IDS_MISSION_TEMP_BRIEF10 + "Questo livello mostra alcuni dei nuovi personaggi di No One Lives Forever 2." +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME11 "Causando problemi." + IDS_MISSION_00_LEVEL_00_NAME12 "Cortile esterno." + IDS_MISSION_00_LEVEL_00_NAME13 "L'edificio degli archivi vecchi." + IDS_MISSION_00_LEVEL_00_NAME14 "Cortile interno." + IDS_MISSION_00_LEVEL_00_NAME15 "Scantinato." + IDS_MISSION_00_LEVEL_00_NAME16 "Archivio principale." + IDS_MISSION_00_LEVEL_00_NAME17 "Scantinato." + IDS_MISSION_00_LEVEL_00_NAME18 "Cortile interno." + IDS_MISSION_00_LEVEL_00_NAME19 "Cortile esterno." + IDS_MISSION_00_LEVEL_00_NAME20 "Fuga." + IDS_MISSION_00_LEVEL_00_NAME21 "Sorpresa, sorpresa." + IDS_MISSION_00_LEVEL_00_NAME22 "Compiendo sforzi inutili." + IDS_MISSION_00_LEVEL_00_NAME23 "La casa in cui viveva Melvin." + IDS_MISSION_00_LEVEL_00_NAME24 "Tempesta in avvicinamento." + IDS_MISSION_00_LEVEL_00_NAME25 "Pericolo tornado." + IDS_MISSION_00_LEVEL_00_NAME26 "Portato via." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_DESC_31 "Provoca ai nemici incontrollabili attacchi di riso, rendendoli incapaci di qualsiasi azione finché l'effetto non svanisce." + IDS_WEAPON_DESC_32 "Un fucile mitragliatore Gordon modificato. La canna è stata sostituita con un silenziatore integrato." +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4528 "Occhiali da vista del Dr. Schenker" + IDS_KEY_ITEM_4529 "Chiavi per il gatto delle nevi" + IDS_KEY_ITEM_4530 "Cinquanta rupie" + IDS_KEY_ITEM_4531 "Scheda di sicurezza universale" + IDS_KEY_ITEM_4532 "Scheda base sottomarina" + IDS_KEY_ITEM_4533 "Un registratore." + IDS_KEY_ITEM_4534 "La chiave per la gru" + IDS_KEY_ITEM_4535 "Catalogo prodotti servizi supercomputer" + IDS_KEY_ITEM_4536 "Un cacciavite" + IDS_KEY_ITEM_4537 "Audiocassetta rossa" + IDS_KEY_ITEM_4538 "Audiocassetta blu" + IDS_KEY_ITEM_4539 "Audiocassetta verde" + IDS_KEY_ITEM_4540 "Audiocasetta gialla" + IDS_KEY_ITEM_4541 "Audiocassetta arancione" + IDS_KEY_ITEM_4542 "Un'audiocassetta senza etichetta." + IDS_KEY_ITEM_4543 "La combinazione della cassaforte nell'appartamento di Balaji" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME27 "Dopo la tempesta." + IDS_MISSION_00_LEVEL_00_NAME28 "Coltello nella schiena." + IDS_MISSION_00_LEVEL_00_NAME29 "La parola d'ordine." + IDS_MISSION_00_LEVEL_00_NAME30 "Installando una cimice." + IDS_MISSION_00_LEVEL_00_NAME31 "Ricercato." + IDS_MISSION_00_LEVEL_00_NAME32 "Alleanza Malvagia." + IDS_MISSION_00_LEVEL_00_NAME33 "La camera blindata." + IDS_MISSION_00_LEVEL_00_NAME34 "Fuoco incrociato." + IDS_MISSION_00_LEVEL_00_NAME35 "Mura invisibili." + IDS_MISSION_00_LEVEL_00_NAME36 "La fuga." + IDS_MISSION_00_LEVEL_00_NAME37 "Personaggi." + IDS_MISSION_00_LEVEL_00_NAME38 "Antartide." + IDS_MISSION_00_LEVEL_00_NAME39 "Cambio dei piani." + IDS_MISSION_00_LEVEL_00_NAME40 "Percorso di prova." + IDS_MISSION_00_LEVEL_00_NAME41 "Kamal." + IDS_MISSION_00_LEVEL_00_NAME42 "Quartier generale UNITY" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_10016 "Ah, ok... assomiglia a..." + IDS_DIALOGUE_10017 "Fred Astaire?" + IDS_DIALOGUE_10018 "Una bicicletta?" + IDS_DIALOGUE_10019 "Un pony!" +END + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4784 "Questa scheda di sicurezza può essere inserita nei lettori di schede per ottenere l'accesso alle aree protette." + IDS_KEY_DESC_4785 "Questo registratore contiene l'identificazione vocale di un impiegato della base sottomarina della H.A.R.M." + IDS_KEY_DESC_4786 "Un cacciavite a testa piatta. Potrebbe essere utile per forzare le aperture." + IDS_KEY_DESC_4787 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4788 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4789 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4790 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4791 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4792 "La targhetta su questa cassetta audio\nla identifica come un volume del giornale radio di\nTom Goodman." + IDS_KEY_DESC_4793 "La combinazione di una cassaforte: 38, 24, 36" + IDS_KEY_DESC_4794 "Questa scheda di sicurezza può essere inserita nei lettori di schede per ottenere l'accesso alle aree protette." + IDS_KEY_DESC_4795 "Questo caffè non sembra fresco, ma è caldo e forte." + IDS_KEY_DESC_4796 "Chiavi della camera di Balaji Malpani all'hotel Ospite Felice e la sua cassetta di sicurezza personale." + IDS_KEY_DESC_4797 "" + IDS_KEY_DESC_4798 "" + IDS_KEY_DESC_4799 "Scheda di accesso al Dipartimento servizi super computer." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE13 "Hai ucciso Armstrong." + IDS_MISSIONFAILURE14 "Hai permesso che Armstrong morisse!" + IDS_MISSIONFAILURE15 "Hai ucciso il tuo pilota! Adesso non potrai tornare a casa!" + IDS_MISSIONFAILURE16 "Hai permesso che il tuo pilota fosse ucciso!" + IDS_MISSIONFAILURE17 "Armstrong è morto!" + IDS_MISSIONFAILURE18 "Hai perso troppo tempo nella stanza da bagno e hai mandato all'aria la tua copertura. Molto presto ti arresteranno e ti tortureranno per estorcerti le informazioni. In meno di una settimana, gli U.S.A. e gli URSS saranno in guerra, causando l'estinzione della maggior parte della civiltà." + IDS_MISSIONFAILURE19 "Il pace-maker di Hatori-san si è inceppato. È morto." + IDS_MISSIONFAILURE20 "Hai ucciso Yamata-san!" + IDS_MISSIONFAILURE21 "Hai permesso che Yamata-san venisse ucciso!" + IDS_MISSIONFAILURE22 "Il tuo aeroplano è stato distrutto!" + IDS_MISSIONFAILURE23 "Ti hanno scoperto!" + IDS_MISSIONFAILURE24 "Hai ucciso un agente di polizia!" + IDS_MISSIONFAILURE25 "Hai ucciso Kamal!" + IDS_MISSIONFAILURE26 "Hai ucciso il dott. Schenker!" + IDS_MISSIONFAILURE27 "Hai ucciso il sig. Barnes!" + IDS_MISSIONFAILURE28 "Hai ucciso il Generale Hawkins!" +END + +STRINGTABLE +BEGIN + IDS_KEY_ITEM_4544 "Carta della Siberia" + IDS_KEY_ITEM_4545 "Una caffettiera" + IDS_KEY_ITEM_4546 "Chiavi di Balaji Malpani" + IDS_KEY_ITEM_4547 "" + IDS_KEY_ITEM_4548 "" + IDS_KEY_ITEM_4549 "Scheda servizi super computer" + IDS_KEY_ITEM_4550 "Launch key" + IDS_KEY_ITEM_4551 "Bucket Full" +END + +STRINGTABLE +BEGIN + IDS_CODEDTEXT_7700 "" + IDS_CODEDTEXT_7701 "Ci sono tre cassette postali davanti al negozio di dolci. Devi sistemarle secondo un ordine specifico per inviarmi un segnale.\n\nLa cassetta postale rossa deve essere aperta." + IDS_CODEDTEXT_7702 "Ci sono tre cassette postali davanti al negozio di dolci. Devi sistemarle secondo un ordine specifico per inviarmi un segnale.\n\nLa cassetta postale grigia deve essere chiusa." + IDS_CODEDTEXT_7703 "Ci sono tre cassette postali davanti al negozio di dolci. Devi sistemarle secondo un ordine specifico per inviarmi un segnale.\n\nLa cassetta postale blu deve essere aperta." + IDS_CODEDTEXT_7704 "Ci vediamo al negozio di dolci sul lato ovest della strada. Cerca l'insegna con la gru, vicino al distributore automatico." +END + +STRINGTABLE +BEGIN + IDS_TARGET_2900 "" + IDS_TARGET_2901 "inserisci la combinazione" + IDS_TARGET_2902 "elimina" + IDS_TARGET_2903 "suona l'allarme" + IDS_TARGET_2904 "metti la lampadina" + IDS_TARGET_2905 "togli la lampadina" + IDS_TARGET_2906 "suona le campane" + IDS_TARGET_2907 "accendi" + IDS_TARGET_2908 "spegni" + IDS_TARGET_2909 "sciacqua" + IDS_TARGET_2910 "recupera i dati" + IDS_TARGET_2911 "sostituisci il tubo dell'aspirapolvere" +END + +STRINGTABLE +BEGIN + IDS_MISSION_00_LEVEL_00_NAME59 "Livello CO-OP" + IDS_MISSION_00_LEVEL_00_NAME60 "Livello CO-OP" + IDS_MISSION_00_LEVEL_00_NAME61 "Livello CO-OP" + IDS_MISSION_00_LEVEL_00_NAME62 "Livello CO-OP" + IDS_MISSION_00_LEVEL_00_NAME63 "Livello CO-OP" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2912 "inserisci la parola d'ordine" + IDS_TARGET_2913 "versa lo zucchero" + IDS_TARGET_2914 "versa il caffè" + IDS_TARGET_2915 "rimuovi il manifesto" + IDS_TARGET_2916 "premi il pulsante" + IDS_TARGET_2917 "riproduci" + IDS_TARGET_2918 "disconnetti" + IDS_TARGET_2919 "ripara" + IDS_TARGET_2920 "comunica via radio con la UNITY" + IDS_TARGET_2921 "rovescia l'acqua" + IDS_TARGET_2922 "blocca il cancello" + IDS_TARGET_2923 "sblocca il cancello" + IDS_TARGET_2924 "attiva l'interfono" + IDS_TARGET_2925 "attiva la gru" + IDS_TARGET_2926 "tira il mio dito" + IDS_TARGET_2927 "suona il clacson" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20138 "Oh!" + IDS_DIALOGUE_20140 "Sto sanguinando!" + IDS_DIALOGUE_20141 "Cosa fai!" + IDS_DIALOGUE_20142 "No, per favore!" + IDS_DIALOGUE_20143 "Sei una persona orribile!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20147 "Qui, micino!" + IDS_DIALOGUE_20148 "Cosa stai pensando?" + IDS_DIALOGUE_20149 "Metti via quell'affare!" + IDS_DIALOGUE_20150 "Mi stai facendo innervosire!" + IDS_DIALOGUE_20154 "Aiuto, sono bloccata!" + IDS_DIALOGUE_20155 "Di colpo non riesco più a muovermi!" + IDS_DIALOGUE_20156 "No!" + IDS_DIALOGUE_20157 "Oh, no!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20180 "Per favore!" + IDS_DIALOGUE_20182 "Hmm." + IDS_DIALOGUE_20183 "Non mi sento per niente bene." + IDS_DIALOGUE_20184 "Hm?" + IDS_DIALOGUE_20185 "Cos'è questo?" + IDS_DIALOGUE_20186 "È la ragazza del poster!" + IDS_DIALOGUE_20187 "polizia!" + IDS_DIALOGUE_20190 "Non ci vedo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20603 "Oh!" + IDS_DIALOGUE_20605 "Sto sanguinando!" + IDS_DIALOGUE_20606 "Cosa stai facendo!" + IDS_DIALOGUE_20607 "No, per favore!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20608 "Sei una persona orribile!" + IDS_DIALOGUE_20612 "Qui, micino!" + IDS_DIALOGUE_20613 "Perché stai cercando di intimidirmi?" + IDS_DIALOGUE_20614 "Non è necessario!" + IDS_DIALOGUE_20615 "Mi stai innervosendo!" + IDS_DIALOGUE_20619 "Aiuto, sono bloccato!" + IDS_DIALOGUE_20620 "Non riesco a muovermi!" + IDS_DIALOGUE_20621 "Uh oh!" + IDS_DIALOGUE_20622 "Oh, no!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20645 "Per favore!" + IDS_DIALOGUE_20647 "Hmm." + IDS_DIALOGUE_20648 "Non mi sento molto bene." + IDS_DIALOGUE_20649 "Hm?" + IDS_DIALOGUE_20650 "Cos'è?" + IDS_DIALOGUE_20651 "È la ragazza del poster!" + IDS_DIALOGUE_20652 "Polizia!" + IDS_DIALOGUE_20655 "Non ci vedo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20930 "Non c'è bisogno di fare così!" + IDS_DIALOGUE_20931 "Per favore non puntarmi addosso quella cosa." + IDS_DIALOGUE_20932 "Non farmi male!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20956 "Aiutatemi!" + IDS_DIALOGUE_20957 "Perché io?" + IDS_DIALOGUE_20959 "Hm." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20961 "Hmmm." + IDS_DIALOGUE_20962 "Cos'abbiamo qui?" + IDS_DIALOGUE_20963 "Interessante." + IDS_DIALOGUE_20964 "Buon Dio!" + IDS_DIALOGUE_20965 "Stai bene?" + IDS_DIALOGUE_20966 "Oddio!" + IDS_DIALOGUE_20967 "Motivo di allarme." + IDS_DIALOGUE_20968 "I sensori rilevano problemi." + IDS_DIALOGUE_20969 "Nessun motivo di allarme." + IDS_DIALOGUE_20970 "Attaccare bersaglio." + IDS_DIALOGUE_20971 "Attacco! Attacco!" + IDS_DIALOGUE_20972 "Richiesta di supporto." + IDS_DIALOGUE_20973 "Inseguire bersaglio." + IDS_DIALOGUE_20974 "Rilevata forma di vita sospetta." + IDS_DIALOGUE_20975 "Che bel gattino." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20976 "Pericolo!" + IDS_DIALOGUE_20977 "Sospetta vicinanza di intrusi." + IDS_DIALOGUE_20978 "Rilevato stimolo auditivo sospetto." + IDS_DIALOGUE_20979 "Rilevato intruso!" + IDS_DIALOGUE_20980 "Rilevato stimolo visivo sospetto." + IDS_DIALOGUE_20981 "Errore di sistema!" + IDS_DIALOGUE_20982 "Riportati danni minori." + IDS_DIALOGUE_20983 "Rilevata sostanza adesiva." + IDS_DIALOGUE_20984 "Rilevato oggetto pericoloso." + IDS_DIALOGUE_20985 "La matematica è divertente." + IDS_DIALOGUE_20986 "Elaborazione in corso." + IDS_DIALOGUE_20987 "Tutti i sistemi operativi." + IDS_DIALOGUE_20988 "Analisi di sistema in corso." + IDS_DIALOGUE_20989 "Scansione in corso." + IDS_DIALOGUE_20990 "Sequenza di pattugliamento attiva." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_20992 "Risultato indagine: negativo." + IDS_DIALOGUE_20993 "Calcolo probabile percorso." + IDS_DIALOGUE_20994 "Calcolo in corso." + IDS_DIALOGUE_20995 "Rilevata sostanza gassosa." + IDS_DIALOGUE_20996 "Inizio procedura di ricerca." + IDS_DIALOGUE_20997 "Risultato ricerca: negativo." + IDS_DIALOGUE_20998 "Sei operativo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21162 "Cattivo micino!" + IDS_DIALOGUE_21163 "Micio, micio, micio!" + IDS_DIALOGUE_21164 "Argghh!" + IDS_DIALOGUE_21165 "Sììììììììì." + IDS_DIALOGUE_21166 "Roooooaaaaarrr!" + IDS_DIALOGUE_21167 "Rrrrrr." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21168 "Mmmm." + IDS_DIALOGUE_21169 "Grrr." + IDS_DIALOGUE_21170 "Uh?" + IDS_DIALOGUE_21171 "Rr." + IDS_DIALOGUE_21172 "AAAHHHRRRGGGHHH!!!" + IDS_DIALOGUE_21173 "UCCIDI!!!" + IDS_DIALOGUE_21174 "DISTRUGGI!!!" + IDS_DIALOGUE_21177 "Rr?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_21184 "Rrrr." + IDS_DIALOGUE_21185 "Grrr." + IDS_DIALOGUE_21186 "Mmm." + IDS_DIALOGUE_21188 "Mm?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32000 "Non sarai così felice quando suonerò l'allarme!" + IDS_DIALOGUE_32001 "Penso sia ora di suonare l'allarme!" + IDS_DIALOGUE_32002 "Catturiamo quella spia!" + IDS_DIALOGUE_32003 "Aiutatami a uccidere la spia!" + IDS_DIALOGUE_32004 "C'è qualcuno qui che non è stato invitato!" + IDS_DIALOGUE_32005 "Smettila di perdere tempo e aiutami a cercare!" + IDS_DIALOGUE_32006 "Hai visto qualcosa di sospetto?" + IDS_DIALOGUE_32007 "Attenzione ai pericoli!" + IDS_DIALOGUE_32009 "Cos'hai calpestato?" + IDS_DIALOGUE_32010 "Cosa ti è successo?" + IDS_DIALOGUE_32011 "Preparati a morire!" + IDS_DIALOGUE_32012 "Ti ho preso!" + IDS_DIALOGUE_32014 "Ti pentirai di essere venuta qui!" + IDS_DIALOGUE_32015 "Spero ti piaccia il dolore!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32016 "Non mi fai paura!" + IDS_DIALOGUE_32017 "Sento l'odore della tua paura!" + IDS_DIALOGUE_32018 "Non credo di godere del favore dei pronostici!" + IDS_DIALOGUE_32019 "Farei meglio a chiedere aiuto!" + IDS_DIALOGUE_32020 "Sarei più tranquillo se avessi dei rinforzi!" + IDS_DIALOGUE_32021 "Aiuto!" + IDS_DIALOGUE_32022 "Da questa parte!" + IDS_DIALOGUE_32023 "In fretta!" + IDS_DIALOGUE_32024 "Non ti credo più!" + IDS_DIALOGUE_32025 "Stai zitto!" + IDS_DIALOGUE_32026 "C'è nessuno?" + IDS_DIALOGUE_32027 "Dove sono finiti tutti?" + IDS_DIALOGUE_32028 "Sto bruciando vivo! AAAH!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32033 "Ti pentirai di esserti messa contro di me." + IDS_DIALOGUE_32034 "Come preferisci morire?" + IDS_DIALOGUE_32035 "Ti ho preso, ficcanaso!" + IDS_DIALOGUE_32036 "Che ne dici di soffrire un po'?" + IDS_DIALOGUE_32037 "Oh, è orribile!" + IDS_DIALOGUE_32039 "Oddio!" + IDS_DIALOGUE_32040 "Ora sono nei guai!" + IDS_DIALOGUE_32041 "Attenzione!" + IDS_DIALOGUE_32042 "Uh oh!" + IDS_DIALOGUE_32046 "Qualcosa mi sta bloccando! Ma cosa?" + IDS_DIALOGUE_32047 "Sono improvvisamente bloccato!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32051 "Mi sento strano." + IDS_DIALOGUE_32052 "Così assonnato." + IDS_DIALOGUE_32053 "WHOA!" + IDS_DIALOGUE_32056 "Mi sento strano." + IDS_DIALOGUE_32057 "La mia povera testa!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32070 "Oh, ma che carino!" + IDS_DIALOGUE_32071 "Qui, vieni micino!" + IDS_DIALOGUE_32072 "Addio, amico mio." + IDS_DIALOGUE_32073 "Non mi prenderò la colpa per questo." + IDS_DIALOGUE_32074 "Mi occuperò solo di questo." + IDS_DIALOGUE_32075 "Non farmi male!" + IDS_DIALOGUE_32076 "Mi stai facendo innervosire!" + IDS_DIALOGUE_32077 "Mi sento in pericolo!" + IDS_DIALOGUE_32078 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_32079 "Preparati a soffrire!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32080 "Eccomi!" + IDS_DIALOGUE_32081 "Ti sei sacrificata!" + IDS_DIALOGUE_32082 "So che sei lì!" + IDS_DIALOGUE_32083 "Ho sentito!" + IDS_DIALOGUE_32084 "Chi è la!" + IDS_DIALOGUE_32085 "Chi ha fatto rumore?" + IDS_DIALOGUE_32086 "Prevedo guai!" + IDS_DIALOGUE_32087 "Ehi?" + IDS_DIALOGUE_32088 "Mi è sembrato di sentire qualcosa!" + IDS_DIALOGUE_32089 "Cos'è stato quel rumore?" + IDS_DIALOGUE_32090 "Ho sentito qualcosa." + IDS_DIALOGUE_32091 "Cos'è stato quel suono?" + IDS_DIALOGUE_32092 "Ti vedo!" + IDS_DIALOGUE_32093 "Adesso sei nei guai!" + IDS_DIALOGUE_32094 "Hai sbagliato persona!" + IDS_DIALOGUE_32095 "Ora sei mia!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32096 "Non vedo l'ora di ucciderti!" + IDS_DIALOGUE_32097 "Questo è un motivo di allarme." + IDS_DIALOGUE_32098 "La situazione si fa preoccupante." + IDS_DIALOGUE_32099 "Chi è responsabile di tutto ciò?!" + IDS_DIALOGUE_32100 "È molto sospetto!" + IDS_DIALOGUE_32101 "Hm." + IDS_DIALOGUE_32102 "Huh?" + IDS_DIALOGUE_32103 "Che cos'è?" + IDS_DIALOGUE_32104 "Non mi ricordo di questo..." + IDS_DIALOGUE_32105 "Cosa abbiamo qui?" + IDS_DIALOGUE_32106 "C'è qualcuno lì?" + IDS_DIALOGUE_32107 "Chi è là?" + IDS_DIALOGUE_32108 "Ehi???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32122 "Granata!" + IDS_DIALOGUE_32123 "Attenzione!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32134 "Hm, niente." + IDS_DIALOGUE_32135 "Mi sto immaginando le cose." + IDS_DIALOGUE_32136 "Probabilmente era solo una scimmia." + IDS_DIALOGUE_32137 "Da che parte sei andata?" + IDS_DIALOGUE_32138 "Dove sei?" + IDS_DIALOGUE_32139 "Non riuscirai a fregarmi!" + IDS_DIALOGUE_32140 "Ti troverò!" + IDS_DIALOGUE_32141 "Non credere di poter scappare così facilmente!" + IDS_DIALOGUE_32142 "Chi ha spento le luci?!" + IDS_DIALOGUE_32143 "Improvvisamente qui dentro è tutto buio." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32144 "Chi ha spento le luci?!" + IDS_DIALOGUE_32145 "Cosa sta succedendo qui?" + IDS_DIALOGUE_32146 "Non pensare di poterti nascondere nel buio!" + IDS_DIALOGUE_32147 "Adesso accenderò le luci." + IDS_DIALOGUE_32148 "Dov'è la mia arma?" + IDS_DIALOGUE_32149 "Perché sono disarmato?" + IDS_DIALOGUE_32150 "Mi sento vulnerabile." + IDS_DIALOGUE_32151 "Oh, no!" + IDS_DIALOGUE_32152 "Perché il destino si accanisce contro di me?" + IDS_DIALOGUE_32153 "Giù!" + IDS_DIALOGUE_32154 "Attenzione!" + IDS_DIALOGUE_32155 "Via dalla mia strada!" + IDS_DIALOGUE_32156 "Sono dietro di te, idiota!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32162 "Perché devo soffrire?" + IDS_DIALOGUE_32163 "Che dolore!" + IDS_DIALOGUE_32164 "Pietà!" + IDS_DIALOGUE_32166 "(acuto latrato di dolore)" + IDS_DIALOGUE_32168 "Oof!" + IDS_DIALOGUE_32169 "Unh!" + IDS_DIALOGUE_32170 "Huh!" + IDS_DIALOGUE_32171 "Non ti puoi nascondere!" + IDS_DIALOGUE_32172 "Dove sei?" + IDS_DIALOGUE_32173 "So che sei qui, da qualche" + IDS_DIALOGUE_32174 "Ti troverò, è una promessa!" + IDS_DIALOGUE_32175 "Non hai via di scampo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32176 "Mi arrendo." + IDS_DIALOGUE_32177 "Deve essere riuscita a fuggita." + IDS_DIALOGUE_32178 "Credo che ormai qui non ci sia più nessuno." + IDS_DIALOGUE_32179 "E non tornare!" + IDS_DIALOGUE_32180 "Perché sei sdraiato per terra?" + IDS_DIALOGUE_32181 "Alzati!" + IDS_DIALOGUE_32182 "Cosa c'è che non va?" + IDS_DIALOGUE_32183 "Non è il posto per schiacciare un pisolino!" + IDS_DIALOGUE_32184 "Dividiamoci!" + IDS_DIALOGUE_32185 "Io andrò da questa parte!" + IDS_DIALOGUE_32186 "Tu vai di là!" + IDS_DIALOGUE_32188 "Meglio suonare l'allarme" + IDS_DIALOGUE_32189 "Aiuto! Sicurezza!" + IDS_DIALOGUE_32190 "Ehi, tu. Vieni subito qui!" + IDS_DIALOGUE_32191 "Vieni con me!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32192 "Da questa parte, amico!" + IDS_DIALOGUE_32193 "Qui c'è qualcosa che non va!" + IDS_DIALOGUE_32194 "Occhi aperti, amico!" + IDS_DIALOGUE_32195 "Attento alle spalle." + IDS_DIALOGUE_32196 "Ti ho preso." + IDS_DIALOGUE_32197 "Non è il momento di fare errori!" + IDS_DIALOGUE_32198 "Quale calamità ti è capitata?" + IDS_DIALOGUE_32199 "YAAA!!!" + IDS_DIALOGUE_32200 "Te ne pentirai!" + IDS_DIALOGUE_32201 "Ti trasformerò in gelatina! " + IDS_DIALOGUE_32202 "Ti ridurrò in poltiglia!" + IDS_DIALOGUE_32203 "Mi hai fatto davvero arrabbiare!" + IDS_DIALOGUE_32204 "Preparati alla punizione!" + IDS_DIALOGUE_32205 "Ti insegnerò le buone maniere!" + IDS_DIALOGUE_32206 "Farò meglio a chiamare aiuto." + IDS_DIALOGUE_32207 "Aspetta solo che i miei compagni mi raggiungano!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32208 "Mi servono rinforzi!" + IDS_DIALOGUE_32209 "Aiutatemi!" + IDS_DIALOGUE_32210 "C'è una spia!" + IDS_DIALOGUE_32211 "Da questa parte, presto! " + IDS_DIALOGUE_32212 "Sei troppo teso!" + IDS_DIALOGUE_32213 "Non di nuovo." + IDS_DIALOGUE_32214 "Aiuto! Qualcuno mi aiuti!" + IDS_DIALOGUE_32215 "Dove sono tutti?" + IDS_DIALOGUE_32216 "Che terribile agonia!!!" + IDS_DIALOGUE_32217 "YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32218 "AAAAAAAAA!!" + IDS_DIALOGUE_32219 "GAAAAAAAAAAA!!!" + IDS_DIALOGUE_32220 "Aspettavo questo momento!" + IDS_DIALOGUE_32221 "Vieni ad assaggiare la mia vendetta!" + IDS_DIALOGUE_32222 "Ho in serbo una punizione per te!" + IDS_DIALOGUE_32223 "Ti ho preso!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32224 "Che ne dici di soffrire un po'?" + IDS_DIALOGUE_32225 "Non mi sento affatto a mio agio" + IDS_DIALOGUE_32227 "Mi sento esposto!" + IDS_DIALOGUE_32228 "Adesso sono nei guai!" + IDS_DIALOGUE_32229 "È ora di escogitare una nuova strategia!" + IDS_DIALOGUE_32230 "Uh oh!" + IDS_DIALOGUE_32234 "Mi sembra di aver pestato qualcosa!" + IDS_DIALOGUE_32235 "Qualcuno mi aiuti!" + IDS_DIALOGUE_32239 "Solo un pisolino." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32240 "Mi sento improvvisamente stanco." + IDS_DIALOGUE_32241 "WHOA!" + IDS_DIALOGUE_32242 "YA!" + IDS_DIALOGUE_32243 "AH!" + IDS_DIALOGUE_32244 "Mi sento strano." + IDS_DIALOGUE_32245 "Non mi sento bene..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32258 "Oh, che micino carino!" + IDS_DIALOGUE_32259 "Ciao, micino! Ti piacerebbe se mi prendessi cura di te?" + IDS_DIALOGUE_32260 "La tua prematura dipartita non è una MIA colpa." + IDS_DIALOGUE_32261 "Mi rifiuto di addossarmi le colpe per la tua incompetenza." + IDS_DIALOGUE_32262 "Quello che il capo non sa non" + IDS_DIALOGUE_32263 "Non farmi male!" + IDS_DIALOGUE_32264 "Mi stai facendo innervosire!" + IDS_DIALOGUE_32265 "Mi sento in pericolo!" + IDS_DIALOGUE_32266 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_32267 "Ora mi hai fatto davvero arrabbiare!" + IDS_DIALOGUE_32268 "Hai commesso un grave errore!" + IDS_DIALOGUE_32269 "Sto venendo a penderti!" + IDS_DIALOGUE_32270 "So che sei lì!" + IDS_DIALOGUE_32271 "Ho sentito!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32272 "Chi è là?" + IDS_DIALOGUE_32273 "Chi ha fatto rumore?" + IDS_DIALOGUE_32274 "Non pensare che non ti abbia visto!" + IDS_DIALOGUE_32275 "Ehi?" + IDS_DIALOGUE_32276 "Hm?" + IDS_DIALOGUE_32277 "Cos'è stato quel rumore?" + IDS_DIALOGUE_32278 "Ho sentito qualcosa." + IDS_DIALOGUE_32279 "Cos'è stato quel suono?" + IDS_DIALOGUE_32280 "Ti vedo!" + IDS_DIALOGUE_32281 "Ehi, tu! Ferma!" + IDS_DIALOGUE_32282 "Ti prenderò!" + IDS_DIALOGUE_32283 "Ti ho preso!" + IDS_DIALOGUE_32284 "Te la sei cercata!" + IDS_DIALOGUE_32285 "La situazione è davvero allarmante!" + IDS_DIALOGUE_32286 "Ok, adesso sono proprio arrabbiato!" + IDS_DIALOGUE_32287 "Non puoi fregarmi!, sai?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32288 "Quello che vedo non mi piace per niente." + IDS_DIALOGUE_32289 "Hm." + IDS_DIALOGUE_32290 "Huh?" + IDS_DIALOGUE_32291 "Che cos'è?" + IDS_DIALOGUE_32292 "Cosa succede qui?" + IDS_DIALOGUE_32293 "Qui cosa abbiamo?" + IDS_DIALOGUE_32294 "C'è qualcuno?" + IDS_DIALOGUE_32295 "Chi è là?" + IDS_DIALOGUE_32296 "Ehi???" + IDS_DIALOGUE_32299 "AAAH!!!" + IDS_DIALOGUE_32300 "WWWOOOAAA!!!" + IDS_DIALOGUE_32301 "AAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32310 "Granata!" + IDS_DIALOGUE_32311 "Attenzione!" + IDS_DIALOGUE_32312 "Oddio!" + IDS_DIALOGUE_32313 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32324 "Beh, mi sento meglio." + IDS_DIALOGUE_32325 "Mi sarò sbagliato." + IDS_DIALOGUE_32326 "Qui niente." + IDS_DIALOGUE_32327 "Da che parte sei andata?" + IDS_DIALOGUE_32328 "Dove sei?" + IDS_DIALOGUE_32329 "Non puoi fregarmi!" + IDS_DIALOGUE_32330 "Ti troverò!" + IDS_DIALOGUE_32331 "Non credere di poter scappare così facilmente!" + IDS_DIALOGUE_32332 "Non puoi nasconderti da me!" + IDS_DIALOGUE_32333 "Chi ha spento le luci?" + IDS_DIALOGUE_32334 "Improvvisamente è tutto buio!" + IDS_DIALOGUE_32335 "Chi ha acceso le luci?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32336 "Cosa sta succedendo?!" + IDS_DIALOGUE_32337 "Non pensare di poterti nascondere nel buio!" + IDS_DIALOGUE_32338 "Ti ho preso!" + IDS_DIALOGUE_32339 "Dov'è la mia arma?" + IDS_DIALOGUE_32340 "Perché sono disarmato?" + IDS_DIALOGUE_32341 "Mi sento vulnerabile." + IDS_DIALOGUE_32342 "Oh, no!" + IDS_DIALOGUE_32343 "È orribile!" + IDS_DIALOGUE_32344 "Giù!" + IDS_DIALOGUE_32345 "Attenzione!" + IDS_DIALOGUE_32346 "Via dalla mia strada!" + IDS_DIALOGUE_32347 "Sono dietro di te, idiota!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32353 "Sto perdendo sangue!" + IDS_DIALOGUE_32354 "Altre spese mediche!" + IDS_DIALOGUE_32355 "Odio questo lavoro!" + IDS_DIALOGUE_32356 "Pietà!" + IDS_DIALOGUE_32358 "Per favore!" + IDS_DIALOGUE_32360 "Oof!" + IDS_DIALOGUE_32361 "Unh!" + IDS_DIALOGUE_32362 "Huh!" + IDS_DIALOGUE_32363 "So che sei qui, da qualche" + IDS_DIALOGUE_32364 "Ti troverò, è una promessa!" + IDS_DIALOGUE_32365 "Non ti rimane molto da vivere!" + IDS_DIALOGUE_32366 "Dove ti nascondi!?" + IDS_DIALOGUE_32367 "Non hai via di scampo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32368 "Mi arrendo." + IDS_DIALOGUE_32369 "Come siamo sfuggevoli, piccolo esserino insignificante!" + IDS_DIALOGUE_32370 "Se ti trovo sei in grossi guai!" + IDS_DIALOGUE_32371 "Sei fortunata a essermi sfuggita!" + IDS_DIALOGUE_32372 "Cosa c'è che non va?" + IDS_DIALOGUE_32373 "In piedi!" + IDS_DIALOGUE_32374 "Cosa ti è successo?" + IDS_DIALOGUE_32375 "Non è il momento di riposare!" + IDS_DIALOGUE_32376 "Dividiamoci!" + IDS_DIALOGUE_32377 "Io andrò da questa parte!" + IDS_DIALOGUE_32378 "Tu andrai di là!" + IDS_DIALOGUE_32380 "Suonate l'allarme!" + IDS_DIALOGUE_32381 "Adesso sei nei guai!" + IDS_DIALOGUE_32382 "Ehi, tu! Da questa parte!" + IDS_DIALOGUE_32383 "Vieni con me!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32384 "Presto! Abbiamo preso una spia!" + IDS_DIALOGUE_32385 "Abbiamo un problema!" + IDS_DIALOGUE_32386 "Restiamo allerta!" + IDS_DIALOGUE_32387 "Occhi aperti!" + IDS_DIALOGUE_32388 "Ti ho preso!" + IDS_DIALOGUE_32389 "Cos'è successo?" + IDS_DIALOGUE_32390 "Wow, stai bene?" + IDS_DIALOGUE_32391 "Presa!" + IDS_DIALOGUE_32392 "È ora della resa dei conti!" + IDS_DIALOGUE_32393 "Pensi di essere una dura?" + IDS_DIALOGUE_32394 "Ecco che arriva paparino!" + IDS_DIALOGUE_32395 "Sei carne da macello!" + IDS_DIALOGUE_32396 "Fatti sotto, vieni a prenderti ciò che ti spetta!!!" + IDS_DIALOGUE_32397 "Non hai scampo!" + IDS_DIALOGUE_32398 "Mi divertirò un mondo!" + IDS_DIALOGUE_32399 "Piegati e di' pure addio alle tue patate dolci!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32400 "È ora di morire!" + IDS_DIALOGUE_32401 "Dovrei essere spaventato da te?" + IDS_DIALOGUE_32402 "Farò meglio a chiamare aiuto." + IDS_DIALOGUE_32403 "Ragazzi! Aiuto!" + IDS_DIALOGUE_32404 "Mi servono rinforzi!" + IDS_DIALOGUE_32405 "Da questa parte!" + IDS_DIALOGUE_32406 "Da questa parte!" + IDS_DIALOGUE_32407 "Ehi, mi servono rinforzi!!!" + IDS_DIALOGUE_32408 "Ormai puoi solo arrenderti." + IDS_DIALOGUE_32409 "Non ci casco un'altra volta." + IDS_DIALOGUE_32410 "Ehi, ragazzi?" + IDS_DIALOGUE_32411 "Dove sono i rinforzi?" + IDS_DIALOGUE_32413 "YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32414 "AAAAAAAAA!!" + IDS_DIALOGUE_32415 "GAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32416 "Eccomi!" + IDS_DIALOGUE_32417 "Vai laggiù!" + IDS_DIALOGUE_32418 "Aspetta di finire sotto le mie grinfie!" + IDS_DIALOGUE_32419 "Farai indigestione di piombo!" + IDS_DIALOGUE_32420 "Sto venendo a prenderti!" + IDS_DIALOGUE_32422 "Yikes!" + IDS_DIALOGUE_32423 "Porca miseria!" + IDS_DIALOGUE_32424 "Oddio!" + IDS_DIALOGUE_32425 "Attento!" + IDS_DIALOGUE_32426 "Uh oh!" + IDS_DIALOGUE_32428 "Ow! Mamma!" + IDS_DIALOGUE_32429 "Qualcuno mi aiuti a uscire di qui!" + IDS_DIALOGUE_32430 "Accidenti, sono bloccato!" + IDS_DIALOGUE_32431 "Cos'è questa porcheria?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32435 "Dannazione, sono stanco." + IDS_DIALOGUE_32436 "È l'ora della siesta." + IDS_DIALOGUE_32437 "WHOA!" + IDS_DIALOGUE_32438 "YA!" + IDS_DIALOGUE_32439 "AH!" + IDS_DIALOGUE_32440 "Non mi sento molto bene..." + IDS_DIALOGUE_32441 "Oh, la mia testa..." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32454 "Psst. Qui, vieni micino!" + IDS_DIALOGUE_32455 "Ciao, micino! Quanto sei carino!" + IDS_DIALOGUE_32456 "Mi dispiace, amico." + IDS_DIALOGUE_32457 "Non mi prenderò la colpa per questo!" + IDS_DIALOGUE_32458 "Questa roba è veramente utile." + IDS_DIALOGUE_32459 "Non farmi male!" + IDS_DIALOGUE_32460 "Resisti, amico!" + IDS_DIALOGUE_32461 "Lasciami in pace! Non sono armato!" + IDS_DIALOGUE_32462 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_32463 "L'hai voluto tu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32464 "Ma vieni!" + IDS_DIALOGUE_32465 "Sto venendo a prenderti!" + IDS_DIALOGUE_32466 "So che sei lì!" + IDS_DIALOGUE_32467 "Ok, ho sentito!" + IDS_DIALOGUE_32468 "Chi è la!" + IDS_DIALOGUE_32469 "Cosa diavolo è stato?" + IDS_DIALOGUE_32470 "Chi ha fatto quel rumore?" + IDS_DIALOGUE_32471 "Ehi?" + IDS_DIALOGUE_32472 "Huh?" + IDS_DIALOGUE_32473 "Cos'è stato quel rumore?" + IDS_DIALOGUE_32474 "Ho sentito qualcosa." + IDS_DIALOGUE_32475 "Cos'è stato quel suono?" + IDS_DIALOGUE_32476 "Ti vedo!" + IDS_DIALOGUE_32477 "Ehi, tu! Ferma!" + IDS_DIALOGUE_32478 "Ti prenderò!" + IDS_DIALOGUE_32479 "Ehi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32480 "Te la sei cercata!" + IDS_DIALOGUE_32481 "Non mi piace ciò che vedo." + IDS_DIALOGUE_32482 "Sembra che abbiamo un intruso!" + IDS_DIALOGUE_32483 "C'è qualcosa di sbagliato!" + IDS_DIALOGUE_32484 "Uh oh!" + IDS_DIALOGUE_32485 "Hm." + IDS_DIALOGUE_32486 "Huh?" + IDS_DIALOGUE_32487 "Che cos'è questo?" + IDS_DIALOGUE_32488 "Che succede, qui?" + IDS_DIALOGUE_32489 "Cosa abbiamo qui?" + IDS_DIALOGUE_32490 "C'è qualcuno lì?" + IDS_DIALOGUE_32491 "Chi è la!" + IDS_DIALOGUE_32492 "Ehi???" + IDS_DIALOGUE_32495 "AHHH!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32496 "WWWOOOAAA!!!" + IDS_DIALOGUE_32497 "AAAIIII!!!" + IDS_DIALOGUE_32503 "Di chi sono queste orme?" + IDS_DIALOGUE_32504 "Huh. Sembra che ci siano tracce di una spia." + IDS_DIALOGUE_32505 "Orme, eh? Vediamo dove conducono." + IDS_DIALOGUE_32506 "Aaah! Granata!" + IDS_DIALOGUE_32507 "Attento!" + IDS_DIALOGUE_32508 "Oddio!" + IDS_DIALOGUE_32509 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32520 "Hm, niente." + IDS_DIALOGUE_32521 "Niente di niente." + IDS_DIALOGUE_32522 "Qui niente." + IDS_DIALOGUE_32523 "Da che parte sei andata?" + IDS_DIALOGUE_32524 "Dove sei?" + IDS_DIALOGUE_32525 "Oh no!" + IDS_DIALOGUE_32526 "Ti troverò!" + IDS_DIALOGUE_32527 "Dove ti sei cacciata?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32528 "E adesso cosa faccio?!?" + IDS_DIALOGUE_32529 "Chi ha spento le luci?" + IDS_DIALOGUE_32530 "Ehi, che succede alle luci?" + IDS_DIALOGUE_32531 "Chi ha acceso le luci?" + IDS_DIALOGUE_32532 "Che succede alle luci?" + IDS_DIALOGUE_32533 "Non ti puoi nascondere da me." + IDS_DIALOGUE_32534 "Ora sei mia!" + IDS_DIALOGUE_32535 "Mi hanno derubato!" + IDS_DIALOGUE_32536 "Chi ha rubato la mia pistola?" + IDS_DIALOGUE_32537 "Dov'è la mia pistola?" + IDS_DIALOGUE_32538 "Oh no!" + IDS_DIALOGUE_32539 "È orribile!" + IDS_DIALOGUE_32540 "Giù!" + IDS_DIALOGUE_32541 "Attento!" + IDS_DIALOGUE_32542 "Via dalla mia strada!" + IDS_DIALOGUE_32543 "Attenzione!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32549 "Oddio, sto sanguinando!" + IDS_DIALOGUE_32550 "Medico!" + IDS_DIALOGUE_32551 "No, per favore!" + IDS_DIALOGUE_32553 "Per favore!" + IDS_DIALOGUE_32555 "Oof!" + IDS_DIALOGUE_32556 "Unh!" + IDS_DIALOGUE_32557 "Huh!" + IDS_DIALOGUE_32558 "So che sei qui, da qualche" + IDS_DIALOGUE_32559 "Arrenditi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32560 "Non pensare di poterti nascondere." + IDS_DIALOGUE_32561 "Aspetta che ti abbia trovato!" + IDS_DIALOGUE_32562 "Dove sei?" + IDS_DIALOGUE_32563 "Mi arrendo." + IDS_DIALOGUE_32564 "Dove diavolo sei andata?" + IDS_DIALOGUE_32565 "Dannazione! È fuggita!" + IDS_DIALOGUE_32566 "Oh, beh. Se la sarà fatta sotto." + IDS_DIALOGUE_32567 "Cosa c'è che non va?" + IDS_DIALOGUE_32568 "Ehi! In piedi!" + IDS_DIALOGUE_32569 "Ehi, tutto bene?" + IDS_DIALOGUE_32570 "Ti senti bene?" + IDS_DIALOGUE_32571 "Dividiamoci!" + IDS_DIALOGUE_32572 "Io andrò da questa parte!" + IDS_DIALOGUE_32573 "Tu andrai di là!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32577 "Ho visto un criminale!" + IDS_DIALOGUE_32578 "Vieni con me!" + IDS_DIALOGUE_32579 "Tu lì! Aiutami!" + IDS_DIALOGUE_32580 "C’è qualcosa di strano qui." + IDS_DIALOGUE_32581 "Faccia attenzione!" + IDS_DIALOGUE_32582 "Arrestate chiunque appaia sospetto!" + IDS_DIALOGUE_32583 "Non muoverti!" + IDS_DIALOGUE_32584 "Rimani dove sei!" + IDS_DIALOGUE_32585 "Stai dove ti posso vedere!" + IDS_DIALOGUE_32586 "Com'è successo?" + IDS_DIALOGUE_32587 "Cosa ti è accaduto?" + IDS_DIALOGUE_32588 "È per il tuo bene!" + IDS_DIALOGUE_32589 "Andrai in prigione!" + IDS_DIALOGUE_32590 "Preparati alla giustizia!" + IDS_DIALOGUE_32591 "Sei in arresto!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32592 "Sei mio, criminale!" + IDS_DIALOGUE_32593 "Sei nei guai!" + IDS_DIALOGUE_32594 "È un assassino!" + IDS_DIALOGUE_32595 "Farò meglio a chiamare aiuto." + IDS_DIALOGUE_32596 "Da questa parte! È un assassino!" + IDS_DIALOGUE_32597 "In fretta!" + IDS_DIALOGUE_32598 "Di là, presto!" + IDS_DIALOGUE_32599 "Ho trovato il criminale!" + IDS_DIALOGUE_32600 "Da questa parte!" + IDS_DIALOGUE_32601 "Non ti credo." + IDS_DIALOGUE_32602 "L'hai detto troppe volte." + IDS_DIALOGUE_32603 "Ehi, ragazzi?" + IDS_DIALOGUE_32604 "Dove sono i rinforzi?" + IDS_DIALOGUE_32606 "YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32607 "AAAAAAAAA!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32608 "GAAAAAAAAA!!!" + IDS_DIALOGUE_32609 "Non cercare di scapparmi!" + IDS_DIALOGUE_32610 "Ti dichiaro in arresto!" + IDS_DIALOGUE_32611 "Torna qui!" + IDS_DIALOGUE_32612 "Ti ho preso!" + IDS_DIALOGUE_32613 "Non opporre resistenza!" + IDS_DIALOGUE_32615 "Yikes!" + IDS_DIALOGUE_32616 "Santo cielo!" + IDS_DIALOGUE_32617 "Adesso sono nei guai!" + IDS_DIALOGUE_32618 "Attento!" + IDS_DIALOGUE_32619 "Uh oh!" + IDS_DIALOGUE_32623 "Perché non riesco a muovermi?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32624 "Ho qualche problema." + IDS_DIALOGUE_32628 "Penso che riposerò per un po’." + IDS_DIALOGUE_32629 "Magari un sonnellino veloce." + IDS_DIALOGUE_32630 "WHOA!" + IDS_DIALOGUE_32631 "YA!" + IDS_DIALOGUE_32632 "AH!" + IDS_DIALOGUE_32633 "Mi sento strano." + IDS_DIALOGUE_32634 "Non vedo niente!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32647 "Che bel gattino." + IDS_DIALOGUE_32648 "So che sei lì!" + IDS_DIALOGUE_32649 "Ti ho preso!" + IDS_DIALOGUE_32650 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_32651 "Sto venendo a penderti!" + IDS_DIALOGUE_32652 "So che sei lì!" + IDS_DIALOGUE_32653 "Ho sentito!" + IDS_DIALOGUE_32654 "Chi è la!" + IDS_DIALOGUE_32655 "Oh, no!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32656 "Non pensare che non ti abbia visto!" + IDS_DIALOGUE_32657 "Ehi?" + IDS_DIALOGUE_32658 "Hm?" + IDS_DIALOGUE_32659 "Cos'ho sentito?" + IDS_DIALOGUE_32660 "Ho sentito qualcosa." + IDS_DIALOGUE_32661 "Cos'è stato quel suono?" + IDS_DIALOGUE_32662 "Ti vedo!" + IDS_DIALOGUE_32663 "Ehi, tu! Ferma!" + IDS_DIALOGUE_32664 "Sei in arresto!" + IDS_DIALOGUE_32665 "Fermati lì!" + IDS_DIALOGUE_32666 "Te la sei cercata!" + IDS_DIALOGUE_32667 "La situazione è davvero allarmante!" + IDS_DIALOGUE_32668 "Ok, adesso sono proprio arrabbiato!" + IDS_DIALOGUE_32669 "Non puoi fregarmi!, sai?" + IDS_DIALOGUE_32670 "Quello che vedo non mi piace per niente." + IDS_DIALOGUE_32671 "Hm." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32672 "Huh?" + IDS_DIALOGUE_32673 "Che cos'è questo?" + IDS_DIALOGUE_32674 "Che succede, qui?" + IDS_DIALOGUE_32675 "Cosa abbiamo qui?" + IDS_DIALOGUE_32676 "C'è qualcuno lì?" + IDS_DIALOGUE_32677 "Chi è la!" + IDS_DIALOGUE_32678 "Ehi???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32692 "Granata!" + IDS_DIALOGUE_32693 "Correte!" + IDS_DIALOGUE_32694 "Oddio!" + IDS_DIALOGUE_32695 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32706 "Non c'è nulla, lì…" + IDS_DIALOGUE_32707 "È solo la mia immaginazione." + IDS_DIALOGUE_32708 "Hmmm." + IDS_DIALOGUE_32709 "Da che parte sei andata?" + IDS_DIALOGUE_32710 "Dove sei?" + IDS_DIALOGUE_32711 "Ti prenderò, criminale!" + IDS_DIALOGUE_32712 "Ti troverò!" + IDS_DIALOGUE_32713 "Dove sei andata?" + IDS_DIALOGUE_32714 "Non puoi fregarmi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32741 "So che sei qui, da qualche" + IDS_DIALOGUE_32742 "Arrenditi!" + IDS_DIALOGUE_32743 "Non puoi nasconderti per sempre." + IDS_DIALOGUE_32744 "Esci con le mani in alto!" + IDS_DIALOGUE_32745 "Dove sei?" + IDS_DIALOGUE_32746 "Mi arrendo." + IDS_DIALOGUE_32747 "Scappato." + IDS_DIALOGUE_32748 "Nessun segno di quel criminale." + IDS_DIALOGUE_32749 "Dove sei andata?" + IDS_DIALOGUE_32750 "Cosa c'è che non va?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32754 "Dividiamoci!" + IDS_DIALOGUE_32755 "Io andrò da questa parte!" + IDS_DIALOGUE_32756 "Tu andrai di là!" + IDS_DIALOGUE_32760 "Da questa parte! Presto!" + IDS_DIALOGUE_32761 "Vieni con me!" + IDS_DIALOGUE_32762 "Seguimi!" + IDS_DIALOGUE_32763 "C'è qualcosa che non va!" + IDS_DIALOGUE_32764 "Sento odore di guai." + IDS_DIALOGUE_32765 "Occhi aperti!" + IDS_DIALOGUE_32766 "Ti ho preso!" + IDS_DIALOGUE_32767 "Cos'è successo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32768 "Cos'hai combinato, adesso?" + IDS_DIALOGUE_32769 "Oh ho!" + IDS_DIALOGUE_32770 "Ha HA!" + IDS_DIALOGUE_32771 "Ti sconfiggerò!" + IDS_DIALOGUE_32772 "Non hai scampo!" + IDS_DIALOGUE_32773 "Vedo che hai paura!" + IDS_DIALOGUE_32774 "Tu non mi fai paura!" + IDS_DIALOGUE_32775 "È ora di morire, mon ami!" + IDS_DIALOGUE_32776 "In guardia!" + IDS_DIALOGUE_32777 "Morirai come un insignificante maialino!" + IDS_DIALOGUE_32778 "Da questa parte! In fretta!" + IDS_DIALOGUE_32779 "Aiuto! Sono circondato!" + IDS_DIALOGUE_32780 "Da questa parte!" + IDS_DIALOGUE_32781 "Aiutatemi!" + IDS_DIALOGUE_32782 "Assistenza!" + IDS_DIALOGUE_32783 "Da questa parte!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32784 "Mi sto stancando dei tuoi giochetti." + IDS_DIALOGUE_32785 "Il tuo panico incontrollabile è davvero seccante." + IDS_DIALOGUE_32786 "Aiuto! Che qualcuno mi aiuti!" + IDS_DIALOGUE_32787 "Dove sono finiti tutti?" + IDS_DIALOGUE_32789 "OH HO HO!!!" + IDS_DIALOGUE_32790 "Ha HA!" + IDS_DIALOGUE_32791 "Vive la France!!" + IDS_DIALOGUE_32792 "Ha!" + IDS_DIALOGUE_32793 "Oh ho HO!" + IDS_DIALOGUE_32794 "Ti ho preso!" + IDS_DIALOGUE_32795 "Ti prenderò!" + IDS_DIALOGUE_32796 "Non hai speranza, mon ami!" + IDS_DIALOGUE_32798 "Uh oh!" + IDS_DIALOGUE_32799 "Merde!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32800 "Al riparo!" + IDS_DIALOGUE_32801 "La situazione sta diventando pericolosa!" + IDS_DIALOGUE_32802 "Mon dieu!" + IDS_DIALOGUE_32806 "Che cosa ho calpestato?" + IDS_DIALOGUE_32807 "Non riesco a muovermi!" + IDS_DIALOGUE_32811 "Così assonnato." + IDS_DIALOGUE_32812 "Chiuderò gli occhi solo per un attimo." + IDS_DIALOGUE_32813 "WHOA!" + IDS_DIALOGUE_32814 "YA!" + IDS_DIALOGUE_32815 "Mon dieu!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32816 "Mi sento strano." + IDS_DIALOGUE_32817 "I miei occhi! Non ci vedo!" + IDS_DIALOGUE_32830 "Che gattino adorabile." + IDS_DIALOGUE_32831 "Bonjour, gattino!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32832 "Buon viaggio, mon ami!" + IDS_DIALOGUE_32833 "Adieu." + IDS_DIALOGUE_32834 "Non ti dimenticherò mai." + IDS_DIALOGUE_32835 "Non farmi male!" + IDS_DIALOGUE_32836 "Risparmiami, ti supplico!" + IDS_DIALOGUE_32837 "No, per favore! D'ora in poi starò buono." + IDS_DIALOGUE_32838 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_32839 "Eccomi!" + IDS_DIALOGUE_32840 "Pericolo!" + IDS_DIALOGUE_32841 "Allarme!" + IDS_DIALOGUE_32842 "Ti tirerò giù, vedrai!" + IDS_DIALOGUE_32843 "Ho sentito!" + IDS_DIALOGUE_32844 "Chi è la!" + IDS_DIALOGUE_32845 "Ti ho sentito, mon ami!" + IDS_DIALOGUE_32846 "Chi ha fatto quel rumore?" + IDS_DIALOGUE_32847 "Ehi?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32848 "Quoi?" + IDS_DIALOGUE_32849 "Cos'è stato quel rumore?" + IDS_DIALOGUE_32850 "Ho sentito qualcosa." + IDS_DIALOGUE_32851 "Cos'ho sentito?" + IDS_DIALOGUE_32852 "Ti vedo!" + IDS_DIALOGUE_32853 "Ti ho preso!" + IDS_DIALOGUE_32854 "Ti farò a pezzi!" + IDS_DIALOGUE_32855 "Preparati a morire!" + IDS_DIALOGUE_32856 "In guardia, mon ami!" + IDS_DIALOGUE_32857 "La situazione è davvero allarmante!" + IDS_DIALOGUE_32858 "Chi è responsabile di questo?!" + IDS_DIALOGUE_32859 "Qualcosa proprio non va!" + IDS_DIALOGUE_32860 "Uh oh!" + IDS_DIALOGUE_32861 "Hm." + IDS_DIALOGUE_32862 "Quoi?" + IDS_DIALOGUE_32863 "Che cos'è questo?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32864 "Che succede, qui?" + IDS_DIALOGUE_32865 "Cosa abbiamo qui?" + IDS_DIALOGUE_32866 "C'è qualcuno lì?" + IDS_DIALOGUE_32867 "Chi è la!" + IDS_DIALOGUE_32868 "Ehi???" + IDS_DIALOGUE_32871 "AHHH!!!" + IDS_DIALOGUE_32872 "WWWOOOAAA!!!" + IDS_DIALOGUE_32873 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32882 "Granata!" + IDS_DIALOGUE_32883 "Attento!" + IDS_DIALOGUE_32884 "(breve mugolio 2)" + IDS_DIALOGUE_32885 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32896 "Vabbeh." + IDS_DIALOGUE_32897 "Eh, niente." + IDS_DIALOGUE_32898 "Niente di niente." + IDS_DIALOGUE_32899 "Da che parte sei andata?" + IDS_DIALOGUE_32900 "Dove sei?" + IDS_DIALOGUE_32901 "Non credere di riuscire a sfuggirmi!" + IDS_DIALOGUE_32902 "Ti troverò! È una promessa!" + IDS_DIALOGUE_32903 "E adesso cosa faccio?!?" + IDS_DIALOGUE_32904 "Non puoi fregarmi! Sono un mimo!" + IDS_DIALOGUE_32905 "Chi ha spento le luci?" + IDS_DIALOGUE_32906 "Sono diventato cieco?" + IDS_DIALOGUE_32907 "Chi ha acceso le luci?" + IDS_DIALOGUE_32908 "La luce! Brucia!" + IDS_DIALOGUE_32909 "Non ti puoi nascondere da me." + IDS_DIALOGUE_32910 "Ora sei mia!" + IDS_DIALOGUE_32911 "Mi è stata sottratta l'arma!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32912 "Cosa ne è stato della mia arma?" + IDS_DIALOGUE_32913 "Sono stato saccheggiato!" + IDS_DIALOGUE_32914 "Oh no!" + IDS_DIALOGUE_32915 "È orribile!" + IDS_DIALOGUE_32916 "Giù!" + IDS_DIALOGUE_32917 "Attento!" + IDS_DIALOGUE_32918 "Via dalla mia strada!" + IDS_DIALOGUE_32919 "Muoviti, idiota!" + IDS_DIALOGUE_32925 "Odio soffrire!" + IDS_DIALOGUE_32926 "Sono ferito!" + IDS_DIALOGUE_32927 "Il dolore è insopportabile!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32928 "Pietà!" + IDS_DIALOGUE_32930 "Per favore!" + IDS_DIALOGUE_32932 "Oof!" + IDS_DIALOGUE_32933 "Unf!" + IDS_DIALOGUE_32934 "Huh!" + IDS_DIALOGUE_32935 "Ti troverò!" + IDS_DIALOGUE_32936 "Non puoi nasconderti per sempre!" + IDS_DIALOGUE_32937 "So che sei qui da qualche parte!" + IDS_DIALOGUE_32938 "Posso sentire il tuo odore, vigliacca." + IDS_DIALOGUE_32939 "Ehi??? Dove sei???" + IDS_DIALOGUE_32940 "Mi arrendo." + IDS_DIALOGUE_32941 "Andata." + IDS_DIALOGUE_32942 "Dove sei andata?" + IDS_DIALOGUE_32943 "Davvero furba." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32944 "Cosa c'è che non va?" + IDS_DIALOGUE_32945 "Svegliati, dormiglione!" + IDS_DIALOGUE_32946 "Ehi, tu! Alzati!" + IDS_DIALOGUE_32947 "Cosa ti è successo?" + IDS_DIALOGUE_32948 "Dividiamoci!" + IDS_DIALOGUE_32949 "Io andrò da questa parte!" + IDS_DIALOGUE_32950 "Tu andrai di là!" + IDS_DIALOGUE_32952 "Suonate l'allarme!" + IDS_DIALOGUE_32953 "Adesso sei nei guai!" + IDS_DIALOGUE_32954 "Presto, da questa parte!" + IDS_DIALOGUE_32955 "Seguimi!" + IDS_DIALOGUE_32956 "In fretta!" + IDS_DIALOGUE_32957 "Stai all'erta!" + IDS_DIALOGUE_32958 "Ci sono dei problemi." + IDS_DIALOGUE_32959 "Ho visto qualcosa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32961 "Cosa ti è successo!" + IDS_DIALOGUE_32962 "Sei ferito?" + IDS_DIALOGUE_32963 "Hyaaahhh!" + IDS_DIALOGUE_32964 "Haaa!" + IDS_DIALOGUE_32965 "Yiaaahhh!" + IDS_DIALOGUE_32966 "Non hai scampo!" + IDS_DIALOGUE_32967 "Ti faccio fuori!" + IDS_DIALOGUE_32968 "Ti ho preso!" + IDS_DIALOGUE_32969 "Non puoi sfuggirmi!" + IDS_DIALOGUE_32970 "Da questa parte, presto!" + IDS_DIALOGUE_32971 "Presto, quaggiù!" + IDS_DIALOGUE_32973 "Da questa parte!" + IDS_DIALOGUE_32974 "Da questa parte!" + IDS_DIALOGUE_32975 "Presto" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32976 "E adesso cosa c'è?" + IDS_DIALOGUE_32977 "Non ci casco un'altra volta." + IDS_DIALOGUE_32978 "Aiuto! Dove siete?" + IDS_DIALOGUE_32979 "Da questa parte! Dove siete andati?" + IDS_DIALOGUE_32981 "YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_32982 "AAAAAAAAA!!" + IDS_DIALOGUE_32983 "GAAAAAAAAAAA!!!" + IDS_DIALOGUE_32984 "Ha!" + IDS_DIALOGUE_32985 "Torna qui!" + IDS_DIALOGUE_32986 "Ti ho preso!" + IDS_DIALOGUE_32987 "Affrontami!" + IDS_DIALOGUE_32988 "Eccomi!" + IDS_DIALOGUE_32990 "Ah!" + IDS_DIALOGUE_32991 "Aiii!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_32992 "Al riparo!" + IDS_DIALOGUE_32993 "Attenzione!" + IDS_DIALOGUE_32994 "Uh oh!" + IDS_DIALOGUE_32998 "Aiutatemi!" + IDS_DIALOGUE_32999 "Sono bloccato!" + IDS_DIALOGUE_33003 "Tanto sonno." + IDS_DIALOGUE_33004 "Solo un sonnellino veloce." + IDS_DIALOGUE_33005 "WHOA!" + IDS_DIALOGUE_33006 "YA!" + IDS_DIALOGUE_33007 "AH!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33008 "Mi sento strano." + IDS_DIALOGUE_33009 "Non vedo niente!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33024 "Oh, ma che carino!" + IDS_DIALOGUE_33025 "Che bel gattino!" + IDS_DIALOGUE_33026 "Ti vendicherò!" + IDS_DIALOGUE_33027 "Quella spia pagherà per questo!" + IDS_DIALOGUE_33028 "Mi dispiace!" + IDS_DIALOGUE_33032 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_33033 "Ti sei sacrificata!" + IDS_DIALOGUE_33034 "Ah! Ti ho preso!" + IDS_DIALOGUE_33035 "Sto venendo a prenderti!" + IDS_DIALOGUE_33036 "So che sei lì!" + IDS_DIALOGUE_33037 "Sei troppo imprudente!" + IDS_DIALOGUE_33038 "Chi è là?" + IDS_DIALOGUE_33039 "Ho sentito!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33040 "Chi ha fatto quel rumore?" + IDS_DIALOGUE_33041 "Ehi?" + IDS_DIALOGUE_33042 "C'è qualcuno lì?" + IDS_DIALOGUE_33043 "Cos'è stato quel rumore?" + IDS_DIALOGUE_33044 "Ho sentito qualcosa." + IDS_DIALOGUE_33045 "Cos'è stato quel suono?" + IDS_DIALOGUE_33046 "Ti vedo!" + IDS_DIALOGUE_33047 "Non mi sfuggirai!" + IDS_DIALOGUE_33048 "Ya!" + IDS_DIALOGUE_33049 "Ha!" + IDS_DIALOGUE_33050 "Eccoti qui!" + IDS_DIALOGUE_33051 "Chi è stato a fare questo?" + IDS_DIALOGUE_33052 "Uh oh!" + IDS_DIALOGUE_33053 "Che sta succedendo qui?!" + IDS_DIALOGUE_33054 "Non promette nulla di buono!" + IDS_DIALOGUE_33055 "Hm." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33056 "Huh." + IDS_DIALOGUE_33057 "Che cos'è questo?" + IDS_DIALOGUE_33058 "Cosa sta succedendo qui?" + IDS_DIALOGUE_33059 "Che strano." + IDS_DIALOGUE_33060 "C'è qualcuno lì?" + IDS_DIALOGUE_33061 "Chi è là?" + IDS_DIALOGUE_33062 "Ehi???" + IDS_DIALOGUE_33065 "AHHH!!!" + IDS_DIALOGUE_33066 "WWWOOOAAA!!!" + IDS_DIALOGUE_33067 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33076 "Granata!" + IDS_DIALOGUE_33077 "Attenzione!" + IDS_DIALOGUE_33078 "Al riparo!" + IDS_DIALOGUE_33079 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33090 "Hmm." + IDS_DIALOGUE_33091 "Niente." + IDS_DIALOGUE_33092 "Sarà stata la mia immaginazione." + IDS_DIALOGUE_33093 "Da che parte sei andata?" + IDS_DIALOGUE_33094 "Dove sei?" + IDS_DIALOGUE_33095 "E adesso cosa faccio?!?" + IDS_DIALOGUE_33096 "Ti troverò!" + IDS_DIALOGUE_33097 "Dove sei andata?!?" + IDS_DIALOGUE_33098 "Non potrai nasconderti per sempre." + IDS_DIALOGUE_33099 "Chi ha spento le luci?" + IDS_DIALOGUE_33100 "Cos'è successo alle luci?" + IDS_DIALOGUE_33101 "Chi ha acceso le luci?" + IDS_DIALOGUE_33102 "Cos'è successo?" + IDS_DIALOGUE_33103 "Non ti puoi nascondere da me." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33104 "Ti ho preso!" + IDS_DIALOGUE_33105 "Sono stata disarmata!" + IDS_DIALOGUE_33106 "Dov'è la mia katana?" + IDS_DIALOGUE_33107 "Qualcuno ha rubato le mie armi!" + IDS_DIALOGUE_33110 "Giù!" + IDS_DIALOGUE_33111 "Attenzione!" + IDS_DIALOGUE_33112 "Via dalla mia strada!" + IDS_DIALOGUE_33113 "Spostati!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33120 "Fa male!" + IDS_DIALOGUE_33121 "La pagherai per questo!" + IDS_DIALOGUE_33129 "So che sei qui da qualche parte!" + IDS_DIALOGUE_33131 "Dove sei?" + IDS_DIALOGUE_33132 "Ti troverò?" + IDS_DIALOGUE_33133 "Non ti puoi nascondere." + IDS_DIALOGUE_33134 "Mi arrendo." + IDS_DIALOGUE_33135 "Dove sei andata?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33136 "Come hai fatto a fuggire?" + IDS_DIALOGUE_33137 "Sei stata fortunata." + IDS_DIALOGUE_33138 "Cosa c'è che non va?" + IDS_DIALOGUE_33139 "In piedi!" + IDS_DIALOGUE_33140 "Cos'è successo?" + IDS_DIALOGUE_33141 "Va tutto bene?" + IDS_DIALOGUE_33142 "Dividiamoci!" + IDS_DIALOGUE_33143 "Io andrò da questa parte!" + IDS_DIALOGUE_33144 "Tu andrai di là!" + IDS_DIALOGUE_33146 "Suonate l'allarme!" + IDS_DIALOGUE_33147 "È una spia." + IDS_DIALOGUE_33148 "Ehi, tu! Da questa parte!" + IDS_DIALOGUE_33149 "Vieni con me!" + IDS_DIALOGUE_33150 "Presto! Le spie dei capitalisti sono ovunque!" + IDS_DIALOGUE_33151 "Occhi aperti!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33152 "Potrebbe esserci un intruso." + IDS_DIALOGUE_33153 "Ci sono dei problemi, compagno." + IDS_DIALOGUE_33154 "Non muoverti!" + IDS_DIALOGUE_33155 "Cos'è successo?" + IDS_DIALOGUE_33156 "Sei ferito?" + IDS_DIALOGUE_33157 "Non hai scampo!" + IDS_DIALOGUE_33158 "Cane capitalista!" + IDS_DIALOGUE_33159 "Ti darò in pasto ai lupi!" + IDS_DIALOGUE_33160 "Mi divertirò a ucciderti!" + IDS_DIALOGUE_33161 "Una tomba vuota ti sta aspettando!" + IDS_DIALOGUE_33162 "Di' le tue ultime preghiere!" + IDS_DIALOGUE_33163 "Morte alle spie!" + IDS_DIALOGUE_33164 "Da questa parte! In fretta!" + IDS_DIALOGUE_33165 "È una spia." + IDS_DIALOGUE_33166 "Assistetemi, compagni!" + IDS_DIALOGUE_33167 "Compagni! Da questa parte!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33168 "Da questa parte!" + IDS_DIALOGUE_33169 "C'è un intruso!" + IDS_DIALOGUE_33170 "Dovresti smettere di bere vodka, amico. Ti rende paranoico." + IDS_DIALOGUE_33171 "Certo. Proprio come l'ultima volta." + IDS_DIALOGUE_33172 "Quaggiù! Dove sei?" + IDS_DIALOGUE_33173 "Da questa parte! Ehi?" + IDS_DIALOGUE_33175 "Ferma!" + IDS_DIALOGUE_33176 "Ehi, tu!" + IDS_DIALOGUE_33177 "Ti ho preso!" + IDS_DIALOGUE_33178 "Muori, maiale decadente!" + IDS_DIALOGUE_33179 "Non hai via di scampo!" + IDS_DIALOGUE_33180 "Affrontami, vigliacca!" + IDS_DIALOGUE_33181 "Ti ho preso!" + IDS_DIALOGUE_33182 "Eccomi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33184 "Attenzione!" + IDS_DIALOGUE_33185 "Giù!" + IDS_DIALOGUE_33186 "Grossi guai!" + IDS_DIALOGUE_33187 "Attenzione!" + IDS_DIALOGUE_33188 "Al riparo!" + IDS_DIALOGUE_33190 "Oh, che male!" + IDS_DIALOGUE_33191 "Aiutatemi a togliermi questa cosa!" + IDS_DIALOGUE_33192 "Aiuto! Sono bloccato!" + IDS_DIALOGUE_33193 "Non posso muovermi!" + IDS_DIALOGUE_33197 "Devo... riposare..." + IDS_DIALOGUE_33198 "Ho sonno." + IDS_DIALOGUE_33199 "WHOA!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33200 "YA!" + IDS_DIALOGUE_33201 "AH!" + IDS_DIALOGUE_33202 "Mi sento strano." + IDS_DIALOGUE_33203 "Non vedo niente!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33216 "Che bel gattino!" + IDS_DIALOGUE_33217 "Ciao, micino. Ti sei perso?" + IDS_DIALOGUE_33218 "Non voglio compilare le scartoffie." + IDS_DIALOGUE_33219 "Mi dispiace, compagno, ma c'è meno burocrazia in questo modo." + IDS_DIALOGUE_33220 "Eri un uomo coraggioso." + IDS_DIALOGUE_33221 "Non sparare!" + IDS_DIALOGUE_33222 "Aspetta! Non sono armato!" + IDS_DIALOGUE_33223 "Cosa vuoi?" + IDS_DIALOGUE_33224 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_33225 "Mi hai fatto davvero arrabbiare!" + IDS_DIALOGUE_33226 "Sento una spia!" + IDS_DIALOGUE_33227 "Sto venendo a prenderti!" + IDS_DIALOGUE_33228 "So che sei lì!" + IDS_DIALOGUE_33229 "Ok, ho sentito!" + IDS_DIALOGUE_33230 "Chi è là?" + IDS_DIALOGUE_33231 "Cos'è stato?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33232 "Chi ha fatto quel rumore?" + IDS_DIALOGUE_33233 "Ehi?" + IDS_DIALOGUE_33234 "Cos'ho sentito?" + IDS_DIALOGUE_33235 "Cos'è stato quel rumore?" + IDS_DIALOGUE_33236 "Ho sentito qualcosa." + IDS_DIALOGUE_33237 "Cos'è stato quel suono?" + IDS_DIALOGUE_33238 "Ti vedo!" + IDS_DIALOGUE_33239 "Ehi, tu! Ferma!" + IDS_DIALOGUE_33240 "Intruso!" + IDS_DIALOGUE_33241 "È una spia!" + IDS_DIALOGUE_33242 "Te la sei cercata!" + IDS_DIALOGUE_33243 "Qui qualcosa non va!" + IDS_DIALOGUE_33244 "Sembra che abbiamo un intruso!" + IDS_DIALOGUE_33245 "Non mi piace ciò che vedo!" + IDS_DIALOGUE_33246 "Uh oh!" + IDS_DIALOGUE_33247 "Hm." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33248 "Huh?" + IDS_DIALOGUE_33249 "Che cos'è?" + IDS_DIALOGUE_33250 "Com'è successo?" + IDS_DIALOGUE_33251 "Cosa abbiamo qui?" + IDS_DIALOGUE_33252 "C'è qualcuno lì?" + IDS_DIALOGUE_33253 "Chi è là?" + IDS_DIALOGUE_33254 "Ehi???" + IDS_DIALOGUE_33257 "AHHH!!!" + IDS_DIALOGUE_33258 "WWWOOOAAA!!!" + IDS_DIALOGUE_33259 "AAAIIII!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33265 "Di chi sono queste orme?" + IDS_DIALOGUE_33266 "Hmm, orme? Dove conducono?" + IDS_DIALOGUE_33267 "Può darsi che una spia sia passata da queste parti! Meglio seguire queste orme." + IDS_DIALOGUE_33268 "Granata!" + IDS_DIALOGUE_33269 "Attenzione!" + IDS_DIALOGUE_33270 "Al riparo!" + IDS_DIALOGUE_33271 "Giù!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33282 "Eh, niente." + IDS_DIALOGUE_33283 "Sarà stata la mia immaginazione." + IDS_DIALOGUE_33284 "Niente." + IDS_DIALOGUE_33285 "Da che parte sei andata?" + IDS_DIALOGUE_33286 "Dove sei?" + IDS_DIALOGUE_33287 "Sento l'odore della tua disfatta!" + IDS_DIALOGUE_33288 "Ti troverò, miserabile spia!" + IDS_DIALOGUE_33289 "Dove sei andata?!" + IDS_DIALOGUE_33290 "Nessuna spia può sfuggirmi." + IDS_DIALOGUE_33291 "Chi ha spento le luci?" + IDS_DIALOGUE_33292 "Perché è buio?" + IDS_DIALOGUE_33293 "Chi ha acceso le luci?" + IDS_DIALOGUE_33294 "Cosa sta succedendo con le luci?" + IDS_DIALOGUE_33295 "Non ti puoi nascondere da me." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33296 "Ti ho preso!" + IDS_DIALOGUE_33297 "Dov'è la mia arma?" + IDS_DIALOGUE_33298 "Perché sono disarmato?" + IDS_DIALOGUE_33299 "Un'avida spia capitalista mi ha rubato l'arma!" + IDS_DIALOGUE_33300 "Oh, no!" + IDS_DIALOGUE_33301 "È orribile!" + IDS_DIALOGUE_33302 "Giù!" + IDS_DIALOGUE_33303 "Attenzione!" + IDS_DIALOGUE_33304 "Via dalla mia strada!" + IDS_DIALOGUE_33305 "Spostati, idiota!" + IDS_DIALOGUE_33311 "Sono stato colpito!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33312 "Oh, che male!" + IDS_DIALOGUE_33313 "Te la farò pagare per questo!" + IDS_DIALOGUE_33314 "Per favore, compagno!" + IDS_DIALOGUE_33316 "Per favore!" + IDS_DIALOGUE_33318 "Oof!" + IDS_DIALOGUE_33319 "Unf!" + IDS_DIALOGUE_33320 "Huf!" + IDS_DIALOGUE_33321 "Dove sei?" + IDS_DIALOGUE_33322 "Arrenditi!" + IDS_DIALOGUE_33323 "Fatti vedere!" + IDS_DIALOGUE_33324 "Vieni subito fuori!" + IDS_DIALOGUE_33325 "Non costringermi a inseguirti." + IDS_DIALOGUE_33326 "Mi arrendo." + IDS_DIALOGUE_33327 "Hm, fuggita." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33328 "Niente!" + IDS_DIALOGUE_33329 "Viscidi capitalisti." + IDS_DIALOGUE_33330 "Cosa c'è che non va?" + IDS_DIALOGUE_33331 "Ehi, tu! In piedi!" + IDS_DIALOGUE_33332 "Cos'è successo?" + IDS_DIALOGUE_33333 "Va tutto bene?" + IDS_DIALOGUE_33334 "Dividiamoci!" + IDS_DIALOGUE_33335 "Io andrò da questa parte!" + IDS_DIALOGUE_33336 "Tu andrai di là!" + IDS_DIALOGUE_33338 "Suonate l'allarme!" + IDS_DIALOGUE_33339 "Adesso sei nei guai!" + IDS_DIALOGUE_33340 "Presa!" + IDS_DIALOGUE_33341 "È ora della resa dei conti!" + IDS_DIALOGUE_33342 "Pensi di essere una dura?" + IDS_DIALOGUE_33343 "Ecco che arriva paparino!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11728 "Sono occupato." + IDS_DIALOGUE_11729 "Torna dopo. Potrei averne per un po'." + IDS_DIALOGUE_11730 "Lasciami solo!" + IDS_DIALOGUE_11731 "Grazie per avermi salvato. Tornerò a dacia. Posso seguire strada se tu apri il cancello. " + IDS_DIALOGUE_11732 "Fammi sapere quando via è libera." + IDS_DIALOGUE_11733 "Ecco, ci sono!" + IDS_DIALOGUE_11734 "Dimmi quando è sicuro!" + IDS_DIALOGUE_11735 "Sto andando!" + IDS_DIALOGUE_11736 "Dimmi quando." + IDS_DIALOGUE_11737 "Coprimi!" + IDS_DIALOGUE_11738 "Il cancello è chiuso! Aprilo!" + IDS_DIALOGUE_11739 "Non lasciare me qui! Mi tortureranno!" + IDS_DIALOGUE_11740 "Grazie! Aspetterò a dacia." + IDS_DIALOGUE_11741 "Quella lassù sulla tua destra è la torretta del collegamento radio." + IDS_DIALOGUE_11742 "Fai riferimento alla tua mappa per evitare di perderti." + IDS_DIALOGUE_11743 "Requisisci un gatto delle nevi e torna indietro verso l'aeroplano! Presto!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11744 "Brutte notizie! Gli agenti H.A.R.M. sono arrivati prima di te. Faranno saltare in aria il velivolo! Il tuo pilota si è nascosto e, se lo troveranno sarai, in grossi guai." + IDS_DIALOGUE_11745 "La strada principale è stata sbarrata! Dovrai trovare un'altra via per allontanarti dalla zona!" + IDS_DIALOGUE_11746 "Non c'è da stupirsi che la polizia ti stia cercando, ora che sei sospettata per l'assassinio del socio di Kamal. Stalle lontana!" + IDS_DIALOGUE_11747 "Per usare la tua cimice, basta fissarla a un ricevitore telefonico. Assicurati di trovare un posto dove naconderti finché la conversazione non è terminata, quindi attiva la cimice per riascoltare la registrazione. " + IDS_DIALOGUE_11748 "Puoi andare in bagno, ma non sei autorizzata a superare i cancelli di sicurezza." + IDS_DIALOGUE_11749 "Come ti ho già detto, non ti è permesso superare i cancelli di sicurezza." + IDS_DIALOGUE_11750 "Basta curiosare in giro!" + IDS_DIALOGUE_11751 "Ti ho detto di stare qui!" + IDS_DIALOGUE_11752 "Il tuo comportamento turbolento sta iniziando a irritarmi." + IDS_DIALOGUE_11753 "Se si accorgono di te, le guardie cercheranno di arrestarti. Tieniti lontana dalle loro grinfie o ti scorteranno fino all'uscita!" + IDS_DIALOGUE_11754 "Ecco la tua stupida borsettina. Non posso credere che mi hai fatto rimanere qui in piedi con questo inutile oggetto da donnicciola. È davvero indecoroso." + IDS_DIALOGUE_11755 "Guarda cosa hai fatto, idiota!" + IDS_DIALOGUE_11756 "Io? È tutta colpa TUA!" + IDS_DIALOGUE_11757 "Colpa mia? Non stavi nemmeno guardando dove mettevi i piedi!" + IDS_DIALOGUE_11758 "ESAGERATO! Forse, mi sono distratto per un secondo, ma sei tu quello che è sbucato di corsa dall'angolo come un maniaco!" + IDS_DIALOGUE_11759 "Pensavo di avere visto una scimmia!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11760 "Anch'io, per questo stavo guardando indietro." + IDS_DIALOGUE_11761 "Una storia davvero credibile! E perché una scimmia dovrebbe rincorrere proprio TE?" + IDS_DIALOGUE_11762 "A volte sentono l'odore delle mie banane. La settimana scorsa mi hanno assalito in gruppo e mi hanno rubato metà della mia scorta!" + IDS_DIALOGUE_11763 "Sono sempre a caccia anche dei miei manghi." + IDS_DIALOGUE_11764 "Sembra che abbiamo un nemico in comune!" + IDS_DIALOGUE_11765 "Non penserai che..." + IDS_DIALOGUE_11766 "Pensare cosa?" + IDS_DIALOGUE_11767 "Credi che sia veramente una coincidenza che delle scimmie si facciano vedere da due venditori di frutta nello stesso preciso momento e nello stesso angolo, provocando in entrambi uno stato di agitazione tale da farli scontrare l'uno con l'altro, mettendo così fuori uso i rispettivi carretti?" + IDS_DIALOGUE_11768 "Vuoi dire che sono stati LORO ad architettare tutto? Quei BASTARDI!!!" + IDS_DIALOGUE_11769 "Stai in guardia, amico. Potrebbero attaccare in qualunque momento!" + IDS_DIALOGUE_11770 "Sono armati!!!" + IDS_DIALOGUE_11771 "Fai attenzione ai cecchini appostati sulle balconate!" + IDS_DIALOGUE_11772 "Aggrappati forte!" + IDS_DIALOGUE_11773 "Uh, oh!" + IDS_DIALOGUE_11774 "Forza ragazzina, resisti!" + IDS_DIALOGUE_11775 "Attenta a quei mimi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11776 "Sta cercando di bloccare la strada!" + IDS_DIALOGUE_11777 "Presto! Sta chiudendo i cancelli!" + IDS_DIALOGUE_11778 "Spara alla serratura del cancello!" + IDS_DIALOGUE_11779 "Fai in fretta e spara alla serratura!" + IDS_DIALOGUE_11780 "Sono senza fiato..." + IDS_DIALOGUE_11781 "lo stiamo raggiungendo!" + IDS_DIALOGUE_11782 "Sul balcone!" + IDS_DIALOGUE_11783 "Tieniti forte! C'è una curva stretta senza uscita più avanti." + IDS_DIALOGUE_11784 "Non aspettarti che ti tenga la borsa questa volta." + IDS_DIALOGUE_11785 "Aiutami! Il cancello è chiuso a chiave! Non c'è via di fuga!" + IDS_DIALOGUE_11786 "Scappa se vuoi salvarti. È proprio dietro di me!" + IDS_DIALOGUE_11787 "Portami più acqua!" + IDS_DIALOGUE_11788 "Presto! Il gelato si sta sciogliendo!" + IDS_DIALOGUE_11789 "Non serve a niente! Il fuoco è indomabile." + IDS_DIALOGUE_11790 "Qualcuno mi aiuti!!!" + IDS_DIALOGUE_11791 "Sono davvero in un bel guaio!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11792 "Agente Archer! Da questa parte!" + IDS_DIALOGUE_11793 "Mi ucciderà!" + IDS_DIALOGUE_11794 "Ti incontrerai con Carter, più tardi?" + IDS_DIALOGUE_11795 "Non hai sentito? Lo hanno preso mentre cercava di organizzare un'intervista con la Fabbrica della vendetta. Aveva i disegni per il progetto Epsilon nel suo portfolio. Così lo hanno trasformato in un uomo-cassa." + IDS_DIALOGUE_11796 "Per la miseria! Se l'è cercata. Ecco qual è il problema in questo settore. I criminali hanno troppi interessi legati ai diritti acquisiti per dare priorità alla SQUADRA." + IDS_DIALOGUE_11797 "Cornelius Fitchpins, sottotenente Terza Classe." + IDS_DIALOGUE_11798 "Ragazzi, Kitchener sta davvero puntando a una promozione. Mi ha pregato di trasferirlo nell'ufficio del Direttore in qualità di tavolo da appoggio." + IDS_DIALOGUE_11799 "Puoi biasimarlo? Lascia che ti dica una cosa, amico, la vita nei panni di uomo-cassa non è per niente affascinante. " + IDS_DIALOGUE_11800 "Ehi, senza offesa per nessuno. Penso solo che non la stia prendendo per il verso giusto. Se svolgi bene la tua funzione come pezzo di arredamento, potresti fare carriera. Il massimo a cui puoi puntare è di essere spostato in una stanza migliore. Io? Imparerò a rotolare, così potrò catturare le spie." + IDS_DIALOGUE_11801 "Ti senti un po' meglio oggi?" + IDS_DIALOGUE_11802 "No, mio caro amico deformato. Come tutto ciò che abbonda, l'orrore è arrivato al culmine. Io sono a quel punto." + IDS_DIALOGUE_11803 "Ehi, questa è una citazione de Il cervello che non voleva morire, vero? Adoro quel film. Non avrei mai pensato di potermi immedesimare in un simile ruolo." + IDS_DIALOGUE_11804 "Resisti, Mikey! Troverò una soluzione." + IDS_DIALOGUE_11805 "Va bene." + IDS_DIALOGUE_11806 "Qualche idea?" + IDS_DIALOGUE_11807 "Quasi." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11808 "Smettila!" + IDS_DIALOGUE_11809 "Togliti! Mi stai schiacciando!" + IDS_DIALOGUE_11810 "Benvenuti nel Manipolatore di uomini, l'ultima trappola mortale multiuso e strumento di tortura automatico di H.A.R.M. Ma vediamo subito cosa ha in serbo per noi la vittima di oggi. " + IDS_DIALOGUE_11811 "Un uomo-cassa! Avete capito bene, gente, la vittima di oggi sta per diventare un blocco vivente di miseria umana. La punizione perfetta per tutti i bambini cattivi e le bambine disubbidienti a cui va ricordato quanto siano completamente e assolutamente insignificanti. Il processo è persino reversibile al 65%, il che vuol dire che si può premiare per buona condotta gli uomini-cassa, trasformandoli in pallide e tremolanti ombre della loro precedente forma e sostanza!" + IDS_DIALOGUE_11812 "Scaldate le piastre e tenete pronte le spatole! Stiamo per cucinare ottime frittelle di uomo!" + IDS_DIALOGUE_11813 "Che ne dite di una succulenta zuppa di pesce-uomo, cucinata alla provenzale?" + IDS_DIALOGUE_11814 "Mamma mia! Sembra che la vittima di oggi sia destinata alla PUNIZIONE MASSIMA! Preparatevi al piatto forte, signore e signori! Oggi si mangiano spaghetti con sugo di pomodoro umano!" + IDS_DIALOGUE_11815 "Prima di tutto, la vittima subirà l'agonia maciullante dei potenti TENERIZZATORI!!! Quindi toccherà alle ENORMI LAME ROTANTI!!!... Seguite dagli infernali ZAMPILLI DI FUOCO!!!... per concludere quindi con la vorticosa agonia dell'UOMO-FRULLATORE!!!" + IDS_DIALOGUE_11816 "Questa è la prima volta in cui il Manipolatore di uomini viene usato alle sue massime prestazioni. Vi ho già dato troppe anticipazioni, signore e signori, è ora di MANIPOLARE CARNE UMANA!" + IDS_DIALOGUE_11817 "Sembra che stiamo avendo delle difficoltà tecniche." + IDS_DIALOGUE_11818 "Direttore, c'è una chiamata... una telefonata urgente per lei." + IDS_DIALOGUE_11819 "Capisco." + IDS_DIALOGUE_11820 "Non me frega niente se È il nipote dello sceneggiatore. Sarà meglio che si sposti nella stanza dei tagli o avrà notizie dal mio agente. Sì, Bernard, me ne rendo conto, ma è negato. Hai letto i quotidiani? Continua a rivolgersi alle telecamere. Io ho accettato di fare questo film solo perché tu mi hai implorato. Tu mi hai pregato, Bernard. Mi ero impegnato per una parte nel film Un colpo all'italiana, ma ho mandato tutto a monte. Per te. Avrei potuto lavorare con Michael Caine e Noel Coward, invece sono bloccato qui con Terencey dannato Sloggins, il dannato nipote del dannato sceneggiatore. Addio, Bernard. Ti sto sbattendo la cornetta in faccia." + IDS_DIALOGUE_11821 "Non riesco a respirare! Non respiro! Qualcuno può spostarmi vicino a una finestra?" + IDS_DIALOGUE_11822 "Silenzio, scatoletta. Qui c'è gente che sta cercando di dormire." + IDS_DIALOGUE_11823 "Così hai sviluppato questa nuova lava artificiale?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11824 "Esattamente. Ti piace?" + IDS_DIALOGUE_11825 "Diamine se mi piace! È dannatamente più elegante di quella schifezza che avevamo prima." + IDS_DIALOGUE_11826 "Può sopportare temperature fino a 343 gradi Kelvin. La sostanza precedente si decostituiva alla soglia dei 313 gradi. Io stesso faccio il bagno a temperature più alte di quella." + IDS_DIALOGUE_11827 "L'unico problema è che non ha propriamente l'aspetto di lava." + IDS_DIALOGUE_11828 "Beh, fa parte del progetto. I nostri primi prototipi erano molto naturalistici, ma i risultati del gruppo di controllo non erano a un livello accettabile. Così abbiamo deviato i nostri sforzi e ci siamo concentrati sul suo aspetto!" + IDS_DIALOGUE_11829 "Che problemi c'erano con i prototipi naturalistici?" + IDS_DIALOGUE_11830 "La gente dà per scontato tutto ciò che è naturale, quindi è difficile impressionarla con la tua varietà di magma liquido da giardino. Perché credi che abbiamo la nostra sede principale nelle caverne sotterranee? Sarebbe molto più economico e conveniente affittare un palazzo di uffici, ma a quel punto avremmo clienti che non ci considererebbero abbastanza malvagi per le operazioni ad altissimo profilo." + IDS_DIALOGUE_11831 "Non fa una piega." + IDS_DIALOGUE_11832 "Dai un'occhiata all'ultimo numero di Criminalità Mensile. Hanno pubblicato il profilo di due organizzazioni malvagie: Miseria Spa e Pugno di Ingiustizia. Se leggi i loro CV..." + IDS_DIALOGUE_11833 "Cos'è un CV?" + IDS_DIALOGUE_11834 "Sta per Curriculum Vitae. Comunque, la Miseria Spa è un'azienda molto più sofisticata. Pugno di Ingiustizia è un'associazione di terz'ordine: rapimenti, estorsioni... crimini di scarso valore che chiunque possegga un garage insonorizzato e una mente malata può mettere a segno. Ma hanno una reputazione nettamente migliore nell'industria criminale. " + IDS_DIALOGUE_11835 "Sul serio?!? Pensavo che fossero più o meno al nostro livello. " + IDS_DIALOGUE_11836 "C'è più concentrazione di malvagità nel nostro centro sociale che nella loro intera organizzazione. Tuttavia, hanno assunto una società di progettazione molto qualificata affinché li aiutasse nella realizzazione del loro rifugio." + IDS_DIALOGUE_11837 "Stai parlando di quella sottospecie di sotterraneo medievale da videogioco, o sbaglio?" + IDS_DIALOGUE_11838 "Proprio quello. Scommetto che è tenuto insieme da lacci e gomma da masticare, ma ha sicuramente impressionato i mass media." + IDS_DIALOGUE_11839 "Cerca i nascondigli del Siero anti super soldato! Ti servirà per sbarazzarti delle truppe d'invasione!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11841 "Allora, cos'è successo? Pensavo che avresti difeso la tua bandiera." + IDS_DIALOGUE_11842 "Non cominciare, ragazzina." + IDS_DIALOGUE_11843 "Ho combattuto da sola contro l'invasione dei super soldati e tu non sei nemmeno stato capace di occuparti di una piccola e vanitosa mezza calzetta con una pistola con mirino." + IDS_DIALOGUE_11844 "Mi ha colto di sorpresa!" + IDS_DIALOGUE_11845 "Forse avresti potuto sentirlo arrivare se la tua testa non fosse stata da un'altra parte." + IDS_DIALOGUE_11846 "Abbi un po' di comprensione! Mi hanno sparato! Diverse volte!" + IDS_DIALOGUE_11847 "Oh, povero piccolo!" + IDS_DIALOGUE_11848 "Non beffarti di me, donna. Brucia ancora!" + IDS_DIALOGUE_11849 "Ma davvero? Beh, io sono stata colpita da un raggio laser. Quanto credi che si senta, QUELLO? Ovviamente, dopo essere stata trafitta da una spada e travolta da un tornado, non è poi così tremendo." + IDS_DIALOGUE_11850 "Sei fortunata che sto sanguinando a morte, altrimenti ti avrei insegnato un paio di cosuccie sul rispetto." + IDS_DIALOGUE_11851 "Sanguinando a morte?" + IDS_DIALOGUE_11852 "Ok, forse ho un po' esagerato." + IDS_DIALOGUE_11853 "Non che faccia granché differenza. Sono pronta a sfidarti in qualunque momento, ovunque." + IDS_DIALOGUE_11854 "Ti rivelerò la password: è Balaji Malpani farebbe meglio a tenersi in forma se non vuole andare incontro a una morte lenta e dolorosa. " + IDS_DIALOGUE_11855 "Vai avanti attraverso questo cancello! Ti porterà fuori sulla strada!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11856 "Sono in pausa caffè. Ritorni più tardi." + IDS_DIALOGUE_11857 "L'elicottero si sta dirigendo qui! Devi cercare di resistere finché non arrivano. Crediamo che i rinforzi dei nemici si stiano avvicinando alla tua posizione, quindi preparati per una battaglia." + IDS_DIALOGUE_11858 "È troppo tardi per salvare Armstrong. Scopri dove lo stanno portando!" + IDS_DIALOGUE_11859 "Ti stiamo lanciando degli esplosivi! Recuperali e piazzali intorno al recinto." + IDS_DIALOGUE_11860 "Squadre d'intercettazione, fate rapporto al direttore provvisorio Lawrie nell'ingresso." + IDS_DIALOGUE_11861 "Metti in salvo gli ostaggi e sbarazzati di quei sudici mimi." + IDS_DIALOGUE_11862 "Sacre bleu!" + IDS_DIALOGUE_11863 "Cate, dove stai andando? Il tuo pilota è ancora prigioniero!" + IDS_DIALOGUE_11864 "Un uomo con un garofano? Non l'ho visto." + IDS_DIALOGUE_11865 "Pare che la vittima sia stata pugnalata, freddata da una pallottola e infine calpestata da un elefante. Che fine orribile!" + IDS_DIALOGUE_11866 "No, non ho visto nessuno che portava un garofano." + IDS_DIALOGUE_11867 "Stai cercando qualcuno che ti mostri i dintorni? IO conosco i dintorni." + IDS_DIALOGUE_11868 "Un garofano? Spiacente, non ne ho idea." + IDS_DIALOGUE_11869 "Forse posso liberarmi per stasera e portarti fuori a cena." + IDS_DIALOGUE_11870 "Forse dovresti chiedere al fiorista." + IDS_DIALOGUE_11871 "Sì, ho visto un uomo con un garofano. Era qui poco tempo fa." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11872 "Ho sentito che qualcuno è stato ucciso poco distante da qui!" + IDS_DIALOGUE_11873 "Che portava un garofano? No, spiacente!" + IDS_DIALOGUE_11874 "Hai sentito dell'omicidio? Dove andremo a finire in questo quartiere?" + IDS_DIALOGUE_11875 "Perché non chiedi al fioraio?" + IDS_DIALOGUE_11876 "Che aspetto avevano?" + IDS_DIALOGUE_11877 "L'uomo era alto circa 1 metro e 80 con una folta e fulva barba. Indossava una gonna." + IDS_DIALOGUE_11878 "Intendi dire un kilt?" + IDS_DIALOGUE_11879 "Non ne capisco molto di moda femminile. Comunque, la ragazza sembrava europea, capelli castani, camicia arancione e pantaloni rigati. Era quella con la pistola." + IDS_DIALOGUE_11880 "Ma la vittima è stata accoltellata." + IDS_DIALOGUE_11881 "Comincia ad arrestarli, i dettagli li vedremo più tardi." + IDS_DIALOGUE_11882 "Sì, un uomo ha comprato qui un garofano rosa appena pochi minuti fa. Sei una sua amica? Ha perso qualcosa..." + IDS_DIALOGUE_11883 "Chi ha mangiato la mia salsa di mango!?! Mia madre l'ha preparata apposta per ME!!!" + IDS_DIALOGUE_11884 "Salve." + IDS_DIALOGUE_11885 "Dov'è quella stupida donna? Avrebbe dovuto essere qui già da 20 minuti." + IDS_DIALOGUE_11886 "Un uomo è stato ucciso dietro l'hotel Ospite Felice! Pare sia stato opera di una banda di fuorilegge!" + IDS_DIALOGUE_11887 "Oggi fa un caldo infernale!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11888 "Mi hanno riferito che un'intera famiglia è stata attaccata da un branco di cani selvaggi. Un fatto tragico!" + IDS_DIALOGUE_11889 "Spero che quei banditi si siano diretti verso un'altra sala cinematografica. Questa ha delle poltrone così comode." + IDS_DIALOGUE_11890 "Ehi, tu. Ho un messaggio da Kamal. Ti vuole incontrare." + IDS_DIALOGUE_11891 "Sfortunatamente, mi sono dimenticato dove l'ho visto. Dovrai trovarlo da sola." + IDS_DIALOGUE_11892 "Come te, sono una vittima dell'ingiustizia. Sono stato portato via dal mio prezioso cancello da quei cattivi poliziotti. " + IDS_DIALOGUE_11893 "Capisco che tu possa trovarmi irresistibile, ma mi sto stancando a parlare con te." + IDS_DIALOGUE_11894 "Lasciami in pace!" + IDS_DIALOGUE_11895 "La recitazione era pessima! Gli effetti speciali poi... il sangue assomigliava al passato di pomodoro." + IDS_DIALOGUE_11896 "Era vero spray arterioso. È più chiaro perché contiene più ossigeno. E con che coraggio critichi gli attori considerando il tipo di film che TI piacciono? Ci rinuncio." + IDS_DIALOGUE_11897 "Mi è piaciuta la scena in cui lei inizia a spogliarsi e l'autista del camion va diritto contro un muro. Ridevo così forte che mi è persino uscita la birra dal naso." + IDS_DIALOGUE_11898 "Invece a me è piaciuta la scena nel bar con il ragazzo con l'arnese e l'altro con la benda all'occhio. Pensavo che mi avrebbero dovuto ricoverare tanto stavo ridendo. Che magnifico film." + IDS_DIALOGUE_11899 "Smetti di sparare!" + IDS_DIALOGUE_11900 "Ehi, tu! Ho detto basta sparare!" + IDS_DIALOGUE_11901 "Sto aspettando che vengano a salvarmi." + IDS_DIALOGUE_11902 "Era ora." + IDS_DIALOGUE_11903 "Salve, Agente Archer. Come va oggi?" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_11904 "Stai... stai davvero... parlando con me? Wow." + IDS_DIALOGUE_11905 "Ciao, Cate. Mildred mi ha detto di ringraziarti per i fiori. Sta molto meglio." + IDS_DIALOGUE_11906 "Mulligatawny? Sbagliato. Sparisci." + IDS_DIALOGUE_11907 "Da questa parte! Forza!" + IDS_DIALOGUE_11908 "Seguimi!" + IDS_DIALOGUE_11909 "Di qua!" + IDS_DIALOGUE_11910 "Presto!" + IDS_DIALOGUE_11911 "Qui dentro!" + IDS_DIALOGUE_11912 "Abigail!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33344 "Sei carne da macello!" + IDS_DIALOGUE_33345 "Fatti sotto, vieni a prenderti ciò che ti spetta!!!" + IDS_DIALOGUE_33346 "Non hai scampo!" + IDS_DIALOGUE_33347 "Mi divertirò un mondo!" + IDS_DIALOGUE_33348 "Piegati e di' pure addio alle tue patate dolci!" + IDS_DIALOGUE_33349 "È ora di morire!" + IDS_DIALOGUE_33350 "Dovrei essere spaventato da te?" + IDS_DIALOGUE_33351 "Ragazzi! Aiuto!" + IDS_DIALOGUE_33352 "Mi servono rinforzi!" + IDS_DIALOGUE_33353 "Da questa parte!" + IDS_DIALOGUE_33354 "Da questa parte!" + IDS_DIALOGUE_33355 "Ehi, mi servono rinforzi!!!" + IDS_DIALOGUE_33356 "Ehi, ragazzi?" + IDS_DIALOGUE_33357 "Dove sono i rinforzi?" + IDS_DIALOGUE_33358 "YAAAAAAAAAAAAA!!!" + IDS_DIALOGUE_33359 "GAAAAAAAAA!!!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33361 "Solo un pisolino." + IDS_DIALOGUE_33362 "Mi sento improvvisamente molto stanco." + IDS_DIALOGUE_33363 "Mi sento strano." + IDS_DIALOGUE_33364 "Non mi sento bene..." + IDS_DIALOGUE_33373 "Non farmi male!" + IDS_DIALOGUE_33374 "Mi stai rendendo nervoso!" + IDS_DIALOGUE_33375 "Mi sento in pericolo!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33376 "Adesso sei davvero nei guai!" + IDS_DIALOGUE_33377 "Ora mi hai fatto davvero arrabbiare!" + IDS_DIALOGUE_33378 "Hai commesso un grave errore!" + IDS_DIALOGUE_33379 "Sto venendo a penderti!" + IDS_DIALOGUE_33380 "So che sei lì!" + IDS_DIALOGUE_33381 "Ho sentito!" + IDS_DIALOGUE_33382 "Chi è là?" + IDS_DIALOGUE_33383 "Chi ha fatto rumore?" + IDS_DIALOGUE_33384 "Non pensare che non ti abbia visto!" + IDS_DIALOGUE_33385 "Ehi?" + IDS_DIALOGUE_33386 "Hm?" + IDS_DIALOGUE_33387 "Cos'è stato quel rumore?" + IDS_DIALOGUE_33388 "Ho sentito qualcosa." + IDS_DIALOGUE_33389 "Cos'è stato quel suono?" + IDS_DIALOGUE_33390 "Ti vedo!" + IDS_DIALOGUE_33391 "Ehi, tu! Ferma!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33392 "Ti prenderò!" + IDS_DIALOGUE_33393 "Ti ho in pugno!" + IDS_DIALOGUE_33394 "Te la sei cercata!" + IDS_DIALOGUE_33395 "La situazione è davvero allarmante." + IDS_DIALOGUE_33396 "Ok, adesso sono proprio arrabbiato!" + IDS_DIALOGUE_33397 "Non puoi fregarmi!, sai?" + IDS_DIALOGUE_33398 "Quello che vedo non mi piace per niente." + IDS_DIALOGUE_33399 "Hm." + IDS_DIALOGUE_33400 "Huh?" + IDS_DIALOGUE_33401 "Che cos'è?" + IDS_DIALOGUE_33402 "Che succede, qui?" + IDS_DIALOGUE_33403 "Cosa abbiamo qui?" + IDS_DIALOGUE_33404 "C'è qualcuno lì?" + IDS_DIALOGUE_33405 "Chi è là?" + IDS_DIALOGUE_33406 "Ehi???" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33417 "Chi ha spento le luci?" + IDS_DIALOGUE_33418 "Improvvisamente è tutto buio!" + IDS_DIALOGUE_33419 "Chi ha acceso le luci?" + IDS_DIALOGUE_33420 "Cosa sta succedendo?!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33426 "Sto perdendo sangue!" + IDS_DIALOGUE_33427 "Altre spese mediche!" + IDS_DIALOGUE_33428 "Pietà!" + IDS_DIALOGUE_33430 "Per favore!" + IDS_DIALOGUE_33432 "Cosa c'è che non va?" + IDS_DIALOGUE_33433 "In piedi!" + IDS_DIALOGUE_33434 "Cosa ti è successo?" + IDS_DIALOGUE_33435 "Non è il momento di riposare!" + IDS_DIALOGUE_33436 "" + IDS_DIALOGUE_33437 "" + IDS_DIALOGUE_33438 "" + IDS_DIALOGUE_33439 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33441 "Prendi questo!" + IDS_DIALOGUE_33442 "Muori!" + IDS_DIALOGUE_33443 "Ora sei mia!" + IDS_DIALOGUE_33444 "Puoi scappare, ma non nasconderti!" + IDS_DIALOGUE_33445 "Saluta Bruno da parte mia." + IDS_DIALOGUE_33449 "Maledetto!" + IDS_DIALOGUE_33450 "Adesso mi arrabbio!" + IDS_DIALOGUE_33451 "Sarà un piacere vederti morire." +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33456 "Sei un demonio!" + IDS_DIALOGUE_33457 "Mi prudono le mani!" + IDS_DIALOGUE_33458 "Sei fortunata che sono seduto qui." + IDS_DIALOGUE_33459 "Esporrò la tua testa come un trofeo." + IDS_DIALOGUE_33460 "Non sparare al dannato piccione." + IDS_DIALOGUE_33461 "Non sparare al piccione." + IDS_DIALOGUE_33462 "Un po' di pratica com il piccione, molto divertente." + IDS_DIALOGUE_33463 "Sparare al piccione è una perdita di soldi. È un oggetto molto prezioso!" + IDS_DIALOGUE_33464 "Il piccione ed io siamo qui per aiutari. Cerca di non sparargli contro!" + IDS_DIALOGUE_33465 "Oh, sono lieto che tu abbia avuto la bontà di sparare al dannato piccione." + IDS_DIALOGUE_33466 "E con ciò cosa pensi di ottenere?" + IDS_DIALOGUE_33467 "Oh, cavoli." + IDS_DIALOGUE_33468 "Oh, questo non va bene." + IDS_DIALOGUE_33469 "" + IDS_DIALOGUE_33470 "" + IDS_DIALOGUE_33471 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33472 "" + IDS_DIALOGUE_33473 "" + IDS_DIALOGUE_33474 "" + IDS_DIALOGUE_33475 "" +END + +STRINGTABLE +BEGIN + IDS_HINT_3100 "Suggerimento: puoi usare la barra spaziatrice per evitare le sequenze dei filmati, anche se è consigliabile guardare ogni filmato la prima volta che viene proiettato. Puoi disattivare la funzione Carica la schermata dei suggerimenti nel menu Opzioni" + IDS_HINT_3101 "Suggerimento: se non sei sicuro su come proseguire, controlla i tuoi obiettivi nella schermata Missione (tasto rapido predefinito: Tab). Inoltre, la bussola nell'angolo superiore destro dello schermo indica spesso destinazioni importanti." + IDS_HINT_3102 "Suggerimento. spesso puoi scappare e nasconderti, invece di combattere. I tuoi nemici ti perdono di vista in corrispondenza degli incroci, se non fanno in tempo a vedere da che parte sei andato. Puoi anche sfruttare i nascondigli che trovi lungo il tuo percorso." + IDS_HINT_3103 "Suggerimento: perquisisci sempre i corpi alla ricerca di oggetti preziosi. Per raccogliere tutti i beni trovati sul nemico, devi tenere premuto il pulsante Azione finché la barra progressiva non è scomparsa." +END + +STRINGTABLE +BEGIN + IDS_HINT_3104 "Suggerimento: assicurati di usare i tuoi punti abilità per migliorare le tue capacità. Ricordati che potrai guadagnare punti abilità supplementari se riuscirai a portare a termine obiettivi facoltativi o a trovare informazioni e i manuali di addestramento della spia." + IDS_HINT_3105 "Suggerimento: se la partita è troppo difficile o non abbastanza stimolante, puoi regolare il livello di difficoltà nelle Opzioni. Potresti voler anche rivalutare le tue tattiche di combattimento, se stai affrontando le battaglie troppo avventatamente." + IDS_HINT_3106 "Suggerimento: può capitare che ti servano degli oggetti speciali per portare a termine un determinato obiettivo. Consulta la schermata Inventario (tasto predefinito: N) per controllare gli oggetti in tuo possesso e per leggere le informazioni circa il loro utilizzo." + IDS_HINT_3107 "Suggerimento: colpendo il dispositivo di rilevamento piazzato su un nemico, potrai individuare la sua posizione sul tuo radar e ti sarà più facile sincronizzare i tempi dei tuoi spostamenti e sfuggire agli inseguitori." + IDS_HINT_3108 "Suggerimento: alcune armi funzionano con diversi tipi di munizioni. Usa il tasto Cambia munizioni (predefinito: F) per sostituire le munizioni nell'arma con gli altri tipi disponibili, oppure consulta la schermata Equipaggiamento." + IDS_HINT_3109 "Suggerimento: usa la schermata Informazioni per esaminare tutte le mappe che hai raccolto. Valutando i punti di riferimento e con l'aiuto della bussola, dovresti essere in grado di capire in quale direzione andare." + IDS_HINT_3110 "Suggerimento: i nemici si allerteranno se scorgeranno compagni privi di sensi o distesi per terra. Rimuovi i corpi abbattuti con il tasto Sposta il corpo (predefinito: G)." + IDS_HINT_3111 "Suggerimento: le telecamere di sicurezza fanno scattare l'allarme se individuano te o un corpo inerte steso per terra. Anche sparare a una telecamera attiva l'allarme, ma le puoi rendere inoperative con le munizioni speciali per il CT-180 lancia strumenti." + IDS_HINT_3112 "Suggerimento: a volte, potresti aver bisogno di tornare in un'area già esplorata per completare un obiettivo. Fai affidamento sulla tua bussola per orientarti sulle direzioni da seguire." + IDS_HINT_3113 "Suggerimento: il tasto Ultima arma (predefinito: X) è una funzione molto comoda per passare velocemente da un arma silenziosa a una con più potenza di fuoco." + IDS_HINT_3114 "Suggerimento: spiare i nemici può risultare un'utile fonte di informazioni. Inoltre, dopo una conversazione, spesso questi si allontanano o si dedicano ad altro, dandoti la possibilità di agire con più libertà e con più calma." + IDS_HINT_3115 "Suggerimento: il mirino è uno strumento per ottimizzare la precisione delle tue armi. Più è sfuocato, più il tiro ha buone probabilità di mancare l'obiettivo. Per stabilizzare la mira, cerca di restare fermo il più possibile. Muoverti con cautela è meglio che correre." + IDS_HINT_3116 "Suggerimento: creare intenzionalmente una distrazione può risultare un modo molto efficace per far allontanare le guardie dalla tua strada. Fai Cerca di trovare monete o altri oggetti interattivi." + IDS_HINT_3117 "Suggerimento: di fatto, lancerai una granata solo quando rilascerai il pulsante Fuoco. Le granate esplodono tre secondi dopo averle lanciate, a meno che non colpiscano un bersaglio, nel qual caso hanno un effetto immediato." + IDS_HINT_3118 "Suggerimento: il gatto delle nevi è uno strumento moderatamente protettivo contro il fuoco con traiettoria ad arco dei nemici che ti sono di fronte. Per questo, è meglio attaccarli direttamente, piuttosto che girargli intorno, poiché eviti di esporti a un attacco di spalle." + IDS_HINT_3119 "Suggerimento: per disinnescare una carica esplosiva, puntala e tieni premuto il pulsante Azione finché la barra progressiva non si è esaurita. Più dimestichezza avrai con i dispositivi e più velocemente neutralizzerai un ordigno." +END + +STRINGTABLE +BEGIN + IDS_MISSIONFAILURE29 "Ti sei fatto scoprire! Non potrai accedere al loro quartier generale in nessun altro modo." + IDS_MISSIONFAILURE30 "Kamal è stato ucciso!" + IDS_MISSIONFAILURE31 "Un comportamento del genere è intollerabile. Sei licenziato!" + IDS_MISSIONFAILURE32 "Arrabbiato per essere stato attaccato dal suo presunto alleato,\nArmstrong ti colpisce con tale violenza da farti morire." +END + +STRINGTABLE +BEGIN + IDS_WEAPON_NOPICKUP_1 "Non puoi prendere altri Shuriken!" + IDS_WEAPON_NOPICKUP_2 "Non puoi prendere altre granate!" + IDS_WEAPON_NOPICKUP_3 "Non puoi prendere altri gattini arrabbiati!" + IDS_WEAPON_NOPICKUP_4 "Non puoi prendere altre cariche esplosive!" + IDS_WEAPON_NOPICKUP_5 "Non puoi prendere altre monete!" + IDS_WEAPON_NOPICKUP_6 "Non puoi prendere altre trappole per orsi!" + IDS_WEAPON_NOPICKUP_7 "Non puoi prendere altre banane!" + IDS_WEAPON_NOPICKUP_8 "Non puoi prendere altre granate stordenti!" + IDS_WEAPON_NOPICKUP_9 "Non puoi prendere altre granate soporifere!" + IDS_WEAPON_NOPICKUP_10 "Non puoi prendere altre granate corrosive!" + IDS_WEAPON_NOPICKUP_11 "Non puoi prendere altre granate esilaranti!" + IDS_WEAPON_NOPICKUP_12 "Non puoi prendere altre cimici!" +END + +STRINGTABLE +BEGIN + IDS_HINT_3120 "Suggerimento: quando raccogli un'arma o un dispositivo nuovi, automaticamente li selezionerai per l'uso. Puoi disabilitare questa funzione, impostando l'opzione Cambio automatico armi su No, nel menu Opzioni." + IDS_HINT_3121 "Suggerimento: quando potrai interagire con un oggetto, visualizzerai un testo appena sotto il cursore che ti spiegherà cosa accade premendo il pulsante Azione." + IDS_HINT_3122 "Suggerimento: le armature assorbono i danni molto efficacemente. Senza di esse, le armi possono infliggere danni notevolmente più severi. Se finisci le armature, cerca di proseguire il gioco il modo più cauto, finché non ne trovi un'altra. " + IDS_HINT_3123 "Suggerimento: durante i combattimenti contro un nemico potente, visualizzerai in cima allo schermo un misuratore che indicherà quanto danno devi infliggergli per poter vincere." + IDS_HINT_3124 "Suggerimento: salva spesso i tuoi progressi! Puoi usare il tasto di salvataggio rapido (F6) o selezionare l'opzione Salva gioco nel menu Sistema. Inoltre, il gioco salva automaticamente la partita all'inizio di ogni quadro." + IDS_HINT_3125 "Suggerimento: a volte è più saggio scappare che combattere! Tieni presente i tuoi obiettivi quando ti trovi in circostanze scoraggianti." + IDS_HINT_3126 "Suggerimento: se ti trovi bloccato in un angolo e non riesci a difenderti, usa le fidate banane per aiutarti nella fuga." + IDS_HINT_3127 "Suggerimento: usa i tasti Sbircia (predefiniti: Q ed E) per guardare da dietro gli angoli senza esporti troppo. Anche così i nemici potrebbero vederti, quindi sbircia per pochi secondi alla volta." + IDS_HINT_3128 "Suggerimento: i civili in preda al panico possono invocare aiuto, causando l'arrivo della polizia. Assicurati di non usare le armi in prossimità dei pedoni, o li metterei in stato di agitazione." + IDS_HINT_3129 "Suggerimento: esplora i dintorni con attenzione per trovare obiettivi aggiuntivi e oggetti ed equipaggiamento utili." + IDS_HINT_3130 "Suggerimento: se ti muovi furtivamente (predefinito: MAIUSC di sinistra) i nemici non riusciranno a sentire i tuoi passi. Puoi usare la funzione Blocca/sblocca movimento furtivo (predefinito: BLOC MAIUSC) per impostare questo movimento come predefinito." + IDS_HINT_3131 "Suggerimento: se non riesci a individuare un aggressore, controlla che non ci siano cecchini appostati sui balconi o sui tetti. Se disponi di un'arma con il mirino, usa lo zoom (predefinito: Z) per puntare i nemici lontani." + IDS_HINT_3132 "Suggerimento: assicurati di proteggere i tuoi alleati contro il fuoco nemico. Se venissero uccisi, falliresti la tua missione." + IDS_HINT_3133 "Suggerimento: usa il tasto di Caricamento rapido (F9) per ripristinare immediatamente la tua ultima partita salvata senza dover accedere ai menu." + IDS_HINT_3134 "Suggerimento: usa il tasto F8 per catturare delle schermate di gioco. Queste vengono numerate consecutivamente e posizionate all'interno della cartella di installazione del gioco." + IDS_HINT_3135 "Suggerimento: se non vuoi subire danni, evita di venire a contatto con sostanze pericolose, quali il vapore bollente, il fuoco o l'elettricità." +END + +STRINGTABLE +BEGIN + IDS_MISSION_TEXT_6016 "Da qualche parte nel Mar Egeo" + IDS_MISSION_TEXT_6017 "Da qualche parte nel Mar di Marmara" +END + +STRINGTABLE +BEGIN + IDS_HINT_3136 "Suggerimento: salva spesso i tuoi progressi, usando il tasto di salvataggio veloce (F6) o l'opzione Salva gioco. Inoltre, ricorda che i tuoi progressi vengono salvati automaticamente ogni volta che accedi a una nuova area." + IDS_HINT_3137 "Suggerimento: i colpi alla testa infliggono un danno maggiore rispetto a quelli sferrati sul torso o sugli arti. Inoltre, è più facile uccidere i nemici quando non sono in stato di allerta." + IDS_HINT_3138 "Suggerimento: il lancia strumenti CT-180 può essere usato con diversi tipi di munizioni, inclusi gli inibitori per telecamere, i dardi tranquillanti e i dispositivi elettrici." + IDS_HINT_3139 "Suggerimento: cerca di uccidere i nemici senza fare rumore, per non allertare i loro compagni. Se i nemici si insospettiscono o ti scorgono, inizieranno a urlare, attirando l'attenzione." + IDS_HINT_3140 "Suggerimento: dopo aver ripulito un'area, è possibile richiamare altri nemici attivando gli interruttori di allarme. Se sei a corto di energia, armature o munizioni, ti conviene sistemare delle trappole per metterli fuori combattimento." + IDS_HINT_3141 "Suggerimento: i nemici si avvicineranno al dispositivo di prossimità Gattino arrabbiato pensando che si tratti di un innocuo micino. Appena l'obiettivo entrerà nel raggio di attivazione, il dispositivo si innescherà." + IDS_HINT_3142 "Suggerimento: per visualizzare l'elenco dell'equipaggiamento che stai trasportando, accedi al menu Equipaggiamento (predefinito: M); qui puoi selezionare un'arma o un dispositivo e visionare i tipi di munizioni disponibili per ognuno di essi." + IDS_HINT_3143 "Suggerimento: dopo esserti immerso sott'acqua, ti apparirà sullo schermo un misuratore di ossigeno: quando avrai esaurito l'ossigeno, inizierai ad annegare." + IDS_HINT_3144 "Suggerimento: per esaminare i documenti o le fotografie che hai raccolto durante una missione, accedi al menu Informazioni (predefinito: I) e seleziona l'oggetto che desideri visionare." + IDS_HINT_3145 "Suggerimento: puoi configurare la visualizzazione del tuo livello di salute, dell'armatura e delle munizioni in tre modi differenti. Usa il tasto è per scorrere le opzioni disponibili." + IDS_HINT_3146 "Suggerimento: premendo il tasto Girati (predefinito: Backspace), puoi invertire immediatamente la tua direzione di marcia." + IDS_HINT_3147 "Suggerimento: usando la Bomba di colla come munizione per il tuo lancia strumenti, riuscirai a fermare i tuoi inseguitori senza ferirli. Basta sparare una bomba contro i nemici o sul terreno di fronte a loro, per bloccarli temporaneamente." + IDS_HINT_3148 "Suggerimento: per interrompere il gioco, puoi usare il tasto Pausa (situato in alto a destra sulla maggior parte delle tastiere) o richiamare i menu di gioco con il tasto ESC o con uno dei tasti rapidi dei menu (I per il menu Informazioni o P per il menu Giocatore)." + IDS_HINT_3149 "Suggerimento: per recuperare velocemente il tuo portachiavi luminoso della UNITY, usa il tasto rapido Portachiavi luminoso (predefinito: L)." + IDS_HINT_3150 "Suggerimento: dopo aver completato il gioco, diverrà disponibile l'elenco dei capitoli dal menu Giocatore singolo. Da questo elenco puoi scegliere di ripetere un capitolo specifico ogni volta che vorrai." + IDS_HINT_3151 "Suggerimento: per uscire dai menu di gioco, oltre a premere il tasto ESC, puoi usare il pulsante destro del mouse." +END + +STRINGTABLE +BEGIN + IDS_HINT_3152 "Suggerimento: ogni volta che subisci un danno causato da sostanze nocive, quali fuoco, gas soporifero, gas stordente o veleno, vengono visualizzate le icone sulla parte sinistra dello schermo." +END + +STRINGTABLE +BEGIN + IDS_NAMES_3300 "" + IDS_NAMES_3301 "Bruno" + IDS_NAMES_3302 "Dott. Schenker" + IDS_NAMES_3303 "Sig. Jones" + IDS_NAMES_3304 "Armstrong" + IDS_NAMES_3305 "Yamata-san" + IDS_NAMES_3306 "Hawkins" + IDS_NAMES_3307 "Barnes" + IDS_NAMES_3308 "Kamal" + IDS_NAMES_3309 "Banerjee" + IDS_NAMES_3310 "Harij" + IDS_NAMES_3311 "Pilota" +END + +STRINGTABLE +BEGIN + IDS_NAMES_3312 "Babbo Natale" + IDS_NAMES_3313 "Polizia" + IDS_NAMES_3314 "Hatori-san" + IDS_NAMES_3315 "Malpani" + IDS_NAMES_3316 "Spencer" + IDS_NAMES_3317 "Cate" +END + +STRINGTABLE +BEGIN + IDS_TRANSMISSIONS_7096 "" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33575 "Qualcuno mi aiuti!" + IDS_DIALOGUE_33579 "Da questa parte!" + IDS_DIALOGUE_33582 "Coprimi!" +END + +STRINGTABLE +BEGIN + IDS_DIALOGUE_33584 "Silenzio!" + IDS_DIALOGUE_33588 "Charge!" + IDS_DIALOGUE_33590 "Occhio al fuoco!" + IDS_DIALOGUE_33593 "Stop it, jackass!" + IDS_DIALOGUE_33596 "Aspetta!" +END + +STRINGTABLE +BEGIN + IDS_TARGET_2928 "esamina" + IDS_TARGET_2929 "Aziona" + IDS_TARGET_2930 "begin interrogation" + IDS_TARGET_2931 "reset power" + IDS_TARGET_2932 "position rocket" + IDS_TARGET_2933 "fuel rocket" + IDS_TARGET_2934 "extend gantry" + IDS_TARGET_2935 "launch rocket" + IDS_TARGET_2936 "place launch key" + IDS_TARGET_2937 "activate mining laser" + IDS_TARGET_2938 "insert battery" + IDS_TARGET_2939 "charge battery" + IDS_TARGET_2940 "activate airlock" + IDS_TARGET_2941 "insert cannonball" +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2750 "Cate parte per il Giappone per indagare su un probabile convegno internazionale del crimine." + IDS_MISSION_DESC_2751 "Cate deve infiltrarsi nella residenza del Direttore e fotografarlo." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2752 "Cate si dirige in Siberia per indagare sul Progetto Armstrong. Il suo primo compito è quello di preparare la sua fuga." + IDS_MISSION_DESC_2753 "All'imbrunire, Cate si intrufola nella base militare per trovare l'edificio principale degli archivi." + IDS_MISSION_DESC_2754 "Cate ha portato a termine la sua missione; ora deve uscire dal campo viva." + IDS_MISSION_DESC_2755 "Cate va ad Akron, Ohio, per cercare delle prove nella casa di Melvin Blitzny." + IDS_MISSION_DESC_2756 "Cate e Armstrong arrivano in India per tentare di infiltrarsi nell'ufficio locale del quartier generale della H.A.R.M." + IDS_MISSION_DESC_2757 "Dopo aver guadagnato la fiducia della H.A.R.M., Cate deve introdursi nella loro camera blindata." + IDS_MISSION_DESC_2758 "Cate e Armstrong partono alla volta dell'Antartide per scoprire la natura del Progetto Omega." + IDS_MISSION_DESC_2759 "Cate torna in India sperando di contrastare un attacco di super soldati." + IDS_MISSION_DESC_2760 "Cate si ferma al quartier generale della UNITY per parlare al dott. Shenker sui suoi soldati." + IDS_MISSION_DESC_2761 "Cate si intrufola nella base sottomarina segreta della H.A.R.M. per liberare Armstrong." + IDS_MISSION_DESC_2762 "Cate e Armstrong cercano una via di fuga dalla base sottomarina che sta iniziando a cadere in pezzi." + IDS_MISSION_DESC_2763 "Dopo essere stata catturata dalla H.A.R.M., Cate deve sopravvivere al terribile manipolatore di uomini e affrontare un vecchio nemico." + IDS_MISSION_DESC_2764 "Cate deve contrastare l'invasione dei super soldati e proteggere la bandiera di Khios." + IDS_MISSION_DESC_2765 "Una squadra d'intercettazione UNITY deve andare immediatamente in Giappone a portare in salvo Cate." + IDS_MISSION_DESC_2766 "Una squadra d'intercettazione della UNITY viene inviata in Siberia per distruggere un super computer sovietico." + IDS_MISSION_DESC_2767 "Una squadra d'intercettazione della UNITY viene inviata in India per raccogliere informazioni su Balaji Malpani." +END + +STRINGTABLE +BEGIN + IDS_MISSION_DESC_2768 "Una squadra d'intercettazione della UNITY si dirige in Antartide per portare in salvo Armstrong dalla base della H.A.R.M." + IDS_MISSION_DESC_2769 "Una squadra d'intercettazione della UNITY deve contrastare l'attacco mortale di un mimo." +END + + +STRINGTABLE +BEGIN + IDS_KEY_DESC_4800 "A full bucket of water. " +END + +STRINGTABLE +BEGIN +IDS_MISSION_DD_01 "Antarctic Aggression (4-16)" +IDS_MISSION_DD_02 "Conflict in Calcutta (4-16)" +IDS_MISSION_DD_03 "Hydroelectric Hatred (4-16)" +IDS_MISSION_DD_04 "Judgement in Japan (4-16)" +IDS_MISSION_DD_05 "Winter War (4-16)" +IDS_MISSION_DD_06 "Oceanic Opposition (4-16)" +IDS_MISSION_DD_07 "Russian Rampage (4-16)" +IDS_MISSION_DD_08 "Siberian Strife (4-16)" +IDS_MISSION_DD_09 "Violence in the Villa (4-16)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DE_01 "Bollywood (4-8)" +IDS_MISSION_DE_02 "Chill Kill (8-16)" +IDS_MISSION_DE_03 "The Curse of Kali (4-8)" +IDS_MISSION_DE_04 "Mediterranean Mayhem (4-8)" +IDS_MISSION_DE_05 "Italian Invasion (4-8)" +IDS_MISSION_DE_06 "Dojo of Death (8-16)" +IDS_MISSION_DE_07 "Moonbase (8-16)" +IDS_MISSION_DE_08 "Abandoned Prison (8-16)" +IDS_MISSION_DE_09 "Rome in Ruins (4-8)" +IDS_MISSION_DE_10 "Trailer Park (2-4)" +IDS_MISSION_DE_11 "Unrest at UNITY (8-16)" +IDS_MISSION_DE_12 "Woodlands (4-8)" +END + +STRINGTABLE +BEGIN +IDS_MISSION_DM_01 "Khios (8-16)" +IDS_MISSION_DM_02 "Siberian Installation (8-16)" +IDS_MISSION_DM_03 "UNITY Headquarters (8-16)" +IDS_MISSION_DM_04 "Volkov's Lair (2-4)" +END + + + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "ResShared.rc" +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/ClientRes/Lang/IT/credits.txt b/Jack/ClientRes/Lang/IT/credits.txt new file mode 100644 index 00000000..bd145c32 --- /dev/null +++ b/Jack/ClientRes/Lang/IT/credits.txt @@ -0,0 +1,332 @@ +Monolith Productions: +>BIG +>TIME:2.0 +>POS:UL +## +James Ackley, capo designer audio +Scott Albaugh, Grafico/Animatore senior +Curt Collins, grafico 2D/3D +Brian Davis, grafico 2D/3D +Michael Drummond, designer dei livelli +Kevin Francis, programmatore senior +Terry Franguiadakis, programmatore +Jim Geldmacher, programmatore +Jon Gramlich, capo CQ +Nathan Grigg, compositore +Chris Hewett, direttore dello sviluppo +J.J. Hoesing, programmatore +>TIME:8.0 +>POS:UL +## +Rodney Houle, designer dei livelli +Craig Hubbard, Direttore creativo/Capo progettista +Steve Lee, grafico senior 2D/3D +David Longo, Direttore artistico/Capo grafico 3D +Dan Miller, designer dei livelli +John Mulkey, Capo progettista livelli +Jeff Orkin, Ingegnere senior +John O'Rorke, programmatore +Brian Pamintuan, desiger audio +Russ Pecoraro, programmatore +Brad Pendleton, programmatore capo +Sasha Runnels, grafico senior 2D/3D +>TIME:8.0 +>POS:UL +## +Samantha Ryan, produttore +Wes Saulsberry, capo artisti +Kevin Stephens, direttore della programmazione +Akika Tanaka, grafica 2D/3D +Cassano Thruston, designer audio +Simong Wong, ingegnere per il motion capture + +Progettazione livelli addizionali: +Nathan Cheever +Dan Thibadeau + +Concept dei personaggi: +Eric Kohler +>TIME:8.0 +>POS:UL +## +Ringraziamenti particolari a +il seguente personale Monolith: +Matt Allen +Andrea Barringer +Bryan Bouwman +Wayne Burns +Dan Fagan +Andy Grant +Jason Hall +Patti Kail +Gary Kussman +Kevin Lambert +>TIME:8.0 +>POS:UL +## +Rick Lambright +Brian Legge +Brian Long +Spencer Maiers +Kristin McLellan +Andrew Megowan +Ryan O'Rourke +Matt Scott +Mark Spadoni +Jim Totaro +Jim Wallingford +Sandra Watanabe +Kiyotaka Yaguchi +>TIME:8.0 +>POS:UL +## +Ringraziamenti particolari a +il seguente personale LithTech: +Jonathan Branam +Bob Givnin +Brian Goble +Matt Grimshaw +Chris Hedberg +Jeff Hutt +David Koenig +Dan White +Paige Young +>TIME:8.0 +>POS:UL +## +Ringraziamenti speciali a: +Steve Burke, NVIDIA +Justin Cooney, ATI +Todd Clauson, Intel +Keith Galocy, NVIDIA +Greg James, NVIDIA +Matt McClellan, Intel +Derek Reynolds, Intel +Randy 'ydnar' Reddig + +Metrolabs, produttori del +gustoso XTZ Caffeine e +dei drink energetici alle erbe +>TIME:6.0 +>POS:UL +## +Tema di NOLF 2 e colonna sonora: +Nathan Grigg + +Musica sequenze di intermezzo: +Nathan Grigg +Guy Whitmore + +Musicisti: +Andrea Wittgens: voce (Tema di NOLF2) +Nathan Grigg: voce (Tema di NOLF2, India, Islanda) +Jack Klitzman: sassofono (tema di NOLF2, India) +Vincent Gates: chitarra (tema di NOLF2) +Lori Goldston: violoncello +(Motivo H.A.R.M. arrangiato da Guy Whitmore) +>TIME:7.0 +>POS:UL +## +Ingegneri audio: +Jay Kenney +Vincent Gates +Nathan Grigg + +Ringraziamenti particolari: +Rich Ragsdale +(per l'uso del tema di NOLF 1) +>TIME:5.0 +>POS:UL +## +Voci: +>TIME:2.0 +>BIG +>POS:UL +## +JEN TAYLOR: +Cate Archer +Isako +Segretaria UNITY +Ninja +Passanti +>TIME:4.0 +>POS:UL +## +JOCK BLANEY: +Dmitrij Volkov +>TIME:2.0 +>POS:UL +## +KEN BOYNTON: +Santa +Generale Morgan Hawkins +Mischa il pilota +Kamal +Anoop Banerjee +Crazy Harij +Balaji Malpani +Personale sovietico +Personale H.A.R.M. India +Personale H.A.R.M. +Mimi +>TIME:5.0 +>POS:UL +## +DAVID SCULLY: +Isaac Barnes +>TIME:2.0 +>POS:UL +## +DEENA BURKE: +Madre +Ninja +>TIME:3.0 +>POS:UL +## +JOHN ARMSTRONG: +Il Direttore +Pierre +Personale H.A.R.M. +Uomini-cassa +Mimi +>TIME:4.0 +>POS:UL +## +GARY SCHWARTZ: +Super soldati +Personale sovietico +Personale H.A.R.M. India +>TIME:3.0 +>POS:UL +## +JOHN PATRICK LOWRIE: +Bruno Lawrie +>TIME:2.0 +>POS:UL +## +TODD LICEA: +Personale Allenza Malvagia +Personale H.A.R.M. +>TIME:3.0 +>POS:UL +## +JEFF STEITZER: +Dr. Schenker +Super Computer +Robot +>TIME:3.0 +>POS:UL +## +ANDRE SOGLIUZZO: +Magnus Armstrong +>TIME:2.0 +>POS:UL +## +TERRENCE SLOGGINS: +Nel ruolo di se stesso +>TIME:2.0 +>POS:UL +## +Motion capture: +Jenna Hawkins +John Kaufmann +Lisa P. Leon-Guerrero +Justin Emeka +Kerry Wong +Hans Altwies +>TIME:6.0 +>POS:UL +## +Sierra Entertainment/Vivendi Universal Publishing: +>TIME:2.0 +>BIG +>POS:UL +## +Bill Dugan, produttore esecutivo +Bernadette Pryor, produttore +Lee Rosini, direttore marketing +Mike Rodgers, brand manager +Rozita Tolouey, brand manager +Rich Robinson, vice presidente studios +Barbara Schwabe, VP marketing +Mike Nicolino, sviluppo di rete +Julie Pitt, responsabile servizi di produzione +Sarita Churchill, responsabile PR +Gary Stevens, Direttore CQ +Ken Eaton, supervisore CQ +>TIME:8.0 +>POS:UL +## +Tharlie Richardson, capo test CQ +Sweeney Designs, impaginazione manuale +Guy Welch, responsabile marketing online +Mike Taskey, responsabile online +Randy Linch, direttore certificazione prodotto +Rod Shean, direttore certificazione prodotto +Chris Rooker, capo certificazione prodotto +Cyra Talton, capo certificazione prodotto +Brandon Valdez, capo certificazione prodotto +Richard Benavides, ingegnere certificazione prodotto +Ben Chan, tester certificazione prodotto +Mary Barker, responsabile marketing specializzato +>TIME:8.0 +>POS:UL +## +Ringraziamenti particolari: +Erin Alvarez +Molly O'Brien +Pat Callahan +Julie Daino +Tracy Gibbs +Adam Lumsden +Peter Della Pena +Eric Roeder +Mike Ryder +James Shaw +>TIME:7.0 +>POS:UL +## +(c)2002 Monolith Productions, Inc. Tutti i diritti riservati. +Cate Archer e A Spy in H.A.R.M's Way +sono marchi di Monolith Productions, Inc. + +Copyright (C)2002 Sierra Entertainment, Inc. +(C)1998-2002 Sierra Entertainment, Inc. +Sierra e il logo Sierra sono marchi di Sierra Entertainment. + +Fox Interactive, No One Lives Forever e i relativi logo +sono marchi o marchi registrati di +Twentieth Century Fox Film Corporation. +(c)2002 Twentieth Century Fox Film Corporation. +>TIME:6.0 +## +Utilizza Bink Video Technology, copyright +(c) 1994-2000 by RAD Game Tools, Inc. + +Tecnologia di comperssione audio MPEG Layer-3 +su licenza Fraunhofer IIS e Thomson Multimedia. + +Questo prodotto contiene il LithTech(tm) Jupiter +System su licenza LithTech, Inc. +LithTech Jupiter System (c) 1997-2002 +LithTech, Inc. Tutti i diritti riservati. +LithTech e il logo LithTech sono +marchi di LithTech, Inc. +>TIME:6.0 +## +NVIDIA, il logo NVIDIA Logo, il logo The Way It's +Meant to be Played Logo e ogni riferimento NVIDIA +Marchi e marchi registrati di NVIDIA Corporation +negli Stati Uniti e negli altri paesi. + +Windows è un marchio o un marchio +registrato di Microsoft Corporation negli +Stati Uniti e/o negli altri paesi. + +L'icona di raccomandazione è un marchio di +Interactive Digital Software Association. +>TIME:6.0 +## +>END + + diff --git a/Jack/ClientRes/Lang/IT/intro.txt b/Jack/ClientRes/Lang/IT/intro.txt new file mode 100644 index 00000000..c353603b --- /dev/null +++ b/Jack/ClientRes/Lang/IT/intro.txt @@ -0,0 +1,104 @@ +Una produzione Fox Interactive e Sierra Entertainment + +Un gioco Monolith Productions +>TIME:3.0 +>BIG +## +No One Lives Forever 2 +A Spy in H.A.R.M.'s Way +utilizza il motore +LithTech Jupiter System +>TIME:2.0 +>BIG +## +Fox Interactive +>BIG +>TIME:2.0 +>POS:UL +## +Chris Miller, produttore +Aaron Blean, produttore associato + + +Dipartimento controllo qualità Fox: +Igor Krinitskiy, Assistente responsabile controllo qualità +Francis Choi, Capo tester +>TIME:7.0 +>POS:UL +## +Squadra di test: +Geoff Bent +Scott Carroll +Michael Graham +Jen Johnson +Cris Lee +Jonathan Masterson +Billy Pamier +Denise Pater +Luke Thai +Hal Zabie + +Responsabile localizzazione: +Kristian Davila +>TIME:8.0 +>POS:UL +## +Ringraziamenti particolari: +Eric Asevo +Steve Bersch +Pete Cesario +Lindsey Fischer +Ivo Gerscovich +Greg Goodrich +Tim Hall +Tim Harrison +Michael Heilemann +Becky Kneubuhl +Luke Letizia +Dan Mackechnie +Gabriel Mann +John Melchior +>TIME:8.0 +>POS:UL +## +Megan O'Brien +Paul Pawlicki +Michael Pole +Rich Ragsdale +Tim Ramage +Jamie Samson +Kirk Scott +Dave Shaw +David Stalker +Kristin Sutter (www.nolfgirl.com) +Tim Tran +Jack Van Leer +Ellen Williams +Chris Wilson +Asylum Studio (www.asylumstudio.com) +>TIME:8.0 +>POS:UL +## +Lisa Fredsti (Fox Library) +Brian Thomas (Fox Library) +Brian Harvey (NVIDIA) +Jessie Lawrence (Creative Labs) +Mike Drummelsmith (Matrox) +Marisa Porter, MCA +Van Riker, 1600 Records +John Dongelmans (Microsoft) +Tim Godwin, Line 6 +>TIME:7.0 +>POS:UL +## +Lavorare nella squadra di NOLF continua a +essere una grande esperienza. +Grazie per tutte le nottate in bianco, +i fine settimana di lavoro e, soprattutto, il supporto +che ha consentito di realizzare un gioco +di simile valore. +Siete fantastici! -CM +>TIME:6.0 +>POS:UL +## +FINE diff --git a/Jack/ClientRes/arrow.cur b/Jack/ClientRes/arrow.cur new file mode 100644 index 0000000000000000000000000000000000000000..e93405530c959f40a9e10e0ebe2e9c1727bc10c7 GIT binary patch literal 2558 zcmeH}v1=Sh6o-Eo3oOFvs$?uDf@o z2G`4Z>AsZb40_Oz{zm&DY1kvIAp}}6mxn1`!6I@|R0BP?8Vm*+ycuZt*KeAeo74RK zyqe9X+U>ShR#vpSx~jFcHLb6&Yinyuo12^JcDvfx*iiAr^!TyqxsGJ-qy9Mhprd#1 z^z7AZ5;@Fc0gKhtp*b{%=8|TWi%0k99^IpR^t3IY2lT)spa*mYMf8Xs(IY}cH|ECN zV$SU79r+!B9Gjd>IX#_&!NK5Qa4=*f7#s`^1_y(KA!EYeU~n)v7#s{49R>%3gTcYz zU~q;8hl9f<4zpYV6vlJ~EMn;Ckzw&9_ayQJ^|0hJu;{t*uy|NW(+csM*99*$fp zI6Mp<1`k6jorlB2;9-d5GWuLX@>Cb|T;5b2sK_1g%B3cEfGLnPkRZSm$Q@V=1PSC0 zDZ`BetHx}`gDxcAd)Y_7U78G%SW3ys6m7y zCJr7fA2*vKED@FnL?mJU2*48A7;%aS5f=V1;&3JrmYC|1S<-hLsCnqO5Jw4Ug*_qDI&ovs2H2lZ(%ZnF$j|-}s zz5{6>UY@16X=?iRYa3VKyQQU>wP+n2%yL*NJDph$%?|CL_o)=iY)=l0pKxdm^Lpo? zHPxYAZBG%VI@}s>$Dv%PM`-5B;$(Yrs7L7LNxMou?#o*j5qc?KtG+!&xOmJSKugP) zws$(ia#G12#0yupBTX`}e!Z2qD{L^Pte3so16*AnmW%BR`fK~kh2{F{mG!cD`|@gi zeOPuUPj%r{%io%^T<4#9a<%?iwI z-(!pRL^tiBZrB|)s#nYSO(Qh1E`0Ng=LXwujxF6cFy26yf2Z){g;wPLdY7_)R=b1O zL+nSapR6F&0DDW?AvRLaKI&(lUl1@5h=YhXSXk0um1oC C)uV*~ literal 0 HcmV?d00001 diff --git a/Jack/ClientRes/main.cpp b/Jack/ClientRes/main.cpp new file mode 100644 index 00000000..98bb36be --- /dev/null +++ b/Jack/ClientRes/main.cpp @@ -0,0 +1,7 @@ +#include + +extern "C" +BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID ) +{ + return 1; +} \ No newline at end of file diff --git a/Jack/ClientRes/samplecredits.txt b/Jack/ClientRes/samplecredits.txt new file mode 100644 index 00000000..76e1034f --- /dev/null +++ b/Jack/ClientRes/samplecredits.txt @@ -0,0 +1,23 @@ +No One Lives Forever +Developed by +Monolith Productions Inc. +>TIME:5.0 +>BIG +## +No One Lives Forever +is powered by LithTech +>BIG +## +Text in the upper-left corner +>POS:UL +## +Text in the upper-right corner +>POS:UR +## +Text in the lower-right corner +>POS:LR +## +Text in the lower-left corner +>POS:LL +## +>END diff --git a/Jack/ClientShellDLL/ActivateObjectFX.cpp b/Jack/ClientShellDLL/ActivateObjectFX.cpp new file mode 100644 index 00000000..9af9e914 --- /dev/null +++ b/Jack/ClientShellDLL/ActivateObjectFX.cpp @@ -0,0 +1,175 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ActivateObjectFX.h +// +// PURPOSE : ActivateObject special fx class - Definition +// +// CREATED : 7/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "ActivateObjectFX.h" + + +CActivateObjectHandler::ActivateObjList CActivateObjectHandler::m_lstActivateObjs; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectHandler::CActivateObjectHandler +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CActivateObjectHandler::CActivateObjectHandler() +: m_hObject ( LTNULL ), + m_nId ( ATMGR_INVALID_ID ), + m_bDisabled ( false ), + m_eState ( ACTIVATETYPE::eOn ) +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectHandler::~CActivateObjectHandler +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CActivateObjectHandler::~CActivateObjectHandler() +{ + // Remove this handler from the global list... + + ActivateObjList::iterator iter = m_lstActivateObjs.begin(); + while( iter != m_lstActivateObjs.end() ) + { + if( *iter == this ) + { + m_lstActivateObjs.erase( iter ); + break; + } + + ++iter; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectHandler::Init +// +// PURPOSE: Set up the handler for the activate object... +// +// ----------------------------------------------------------------------- // + +bool CActivateObjectHandler::Init( HOBJECT hObject ) +{ + if( !hObject || m_hObject ) + return false; + + m_hObject = hObject; + + // Add this handler to the global list... + + m_lstActivateObjs.push_back( this ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectFX::CActivateObjectFX +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CActivateObjectFX::CActivateObjectFX() +: CSpecialFX () +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectFX::~CActivateObjectFX +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CActivateObjectFX::~CActivateObjectFX() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectFX::Init +// +// PURPOSE: Init the ActivateObject fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CActivateObjectFX::Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ) +{ + if( !hServObj ) return LTFALSE; + if( !CSpecialFX::Init( hServObj, pMsg )) return LTFALSE; + + // Init our handler... + + if( !m_ActivateObjectHandler.Init( hServObj )) + return LTFALSE; + + // Read the data into our handler... + + m_ActivateObjectHandler.m_nId = pMsg->Readuint8(); + m_ActivateObjectHandler.m_bDisabled = pMsg->Readbool(); + m_ActivateObjectHandler.m_eState = (ACTIVATETYPE::State)pMsg->Readuint8(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CActivateObjectFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CActivateObjectFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch( nMsgId ) + { + case ACTIVATEFX_DISABLED : + { + m_ActivateObjectHandler.m_bDisabled = pMsg->Readbool(); + } + break; + + case ACTIVATEFX_STATE : + { + m_ActivateObjectHandler.m_eState = (ACTIVATETYPE::State)pMsg->Readuint8(); + } + break; + + default: + return LTFALSE; + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ActivateObjectFX.h b/Jack/ClientShellDLL/ActivateObjectFX.h new file mode 100644 index 00000000..a12106c8 --- /dev/null +++ b/Jack/ClientShellDLL/ActivateObjectFX.h @@ -0,0 +1,73 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ActivateObjectFX.h +// +// PURPOSE : ActivateObject special fx class - Definition +// +// CREATED : 7/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __ACTIVATE_OBJECT_FX_H__ +#define __ACTIVATE_OBJECT_FX_H__ + +// +// Includes... +// + + #include "SpecialFX.h" + #include "ActivateTypeMgr.h" + + +class CActivateObjectHandler +{ + public: // Methods... + + CActivateObjectHandler(); + ~CActivateObjectHandler(); + + typedef std::vector ActivateObjList; + static ActivateObjList const& GetActivateObjectList() { return m_lstActivateObjs; } + + bool Init( HOBJECT hObject ); + + HOBJECT GetHOBJECT() const { return m_hObject; } + + + public: // Members... + + uint8 m_nId; // Id of the ActivateType + bool m_bDisabled; // Is the object disabled + ACTIVATETYPE::State m_eState; // Which state are we in + + + protected: // Members... + + HOBJECT m_hObject; // Object we are handling + + static ActivateObjList m_lstActivateObjs; +}; + + +class CActivateObjectFX : public CSpecialFX +{ + public: // Methods... + + CActivateObjectFX(); + ~CActivateObjectFX(); + + virtual LTBOOL Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ); + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_ACTIVATEOBJECT_ID; } + virtual LTBOOL Update() { return !m_bWantRemove; } + + + private: // Members... + + CActivateObjectHandler m_ActivateObjectHandler; +}; + +#endif // __ACTIVATE_OBJECT_FX_H__ diff --git a/Jack/ClientShellDLL/AimMagnetFX.cpp b/Jack/ClientShellDLL/AimMagnetFX.cpp new file mode 100644 index 00000000..79021780 --- /dev/null +++ b/Jack/ClientShellDLL/AimMagnetFX.cpp @@ -0,0 +1,112 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : AimMagnetFX.cpp +// +// PURPOSE : AimMagnet - Implementation +// +// CREATED : 3/11/03 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "AimMagnetFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "SFXMsgIds.h" + +extern CGameClientShell* g_pGameClientShell; + + +CAimMagnetFX::~CAimMagnetFX() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAimMagnetFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CAimMagnetFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + AIMMAGNETCREATESTRUCT* pAMCS = (AIMMAGNETCREATESTRUCT*)psfxCreateStruct; + + m_nTeamId = pAMCS->m_nTeamId; + m_hTarget = pAMCS->m_hTarget; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAimMagnetFX::CreateObject +// +// PURPOSE: Create object associated the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CAimMagnetFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAimMagnetFX::Update +// +// PURPOSE: Update the AimMagnet +// +// ----------------------------------------------------------------------- // + +LTBOOL CAimMagnetFX::Update() +{ + if (!m_pClientDE || m_bWantRemove || !m_hServerObject) return LTFALSE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAimMagnetFX::OnServerMessage +// +// PURPOSE: Handle recieving a message from the server... +// +// ----------------------------------------------------------------------- // + +LTBOOL CAimMagnetFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) + return LTFALSE; + + m_nTeamId = pMsg->Readuint8( ); + m_hTarget = pMsg->ReadObject(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAimMagnetFX::GetTarget +// +// PURPOSE: Get the handle of the target +// +// ----------------------------------------------------------------------- // + +HOBJECT CAimMagnetFX::GetTarget() const +{ + if (m_hTarget) + return m_hTarget; + + return GetServerObj(); +} + diff --git a/Jack/ClientShellDLL/AimMagnetFX.h b/Jack/ClientShellDLL/AimMagnetFX.h new file mode 100644 index 00000000..c259f7f0 --- /dev/null +++ b/Jack/ClientShellDLL/AimMagnetFX.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : AimMagnet.h +// +// PURPOSE : AimMagnet - Definition +// +// CREATED : 3/12/03 +// +// ----------------------------------------------------------------------- // + +#ifndef __AIMMAGNET_FX_H__ +#define __AIMMAGNET_FX_H__ + +#include "SpecialFX.h" + +struct AIMMAGNETCREATESTRUCT : public SFXCREATESTRUCT +{ + AIMMAGNETCREATESTRUCT(); + + uint8 m_nTeamId; + HOBJECT m_hTarget; +}; + +inline AIMMAGNETCREATESTRUCT::AIMMAGNETCREATESTRUCT() +{ + m_nTeamId = INVALID_TEAM; + m_hTarget = NULL; +} + +class CAimMagnetFX : public CSpecialFX +{ + public : + + ~CAimMagnetFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_AIMMAGNET_ID; } + + uint8 GetTeamId( ) const { return m_nTeamId; } + + //get the target object if there is one, otherwise get the server obj + HOBJECT GetTarget() const; + + private : + + uint8 m_nTeamId; + HOBJECT m_hTarget; +}; + +#endif // __AIMMAGNET_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/AutoTargetMgr.cpp b/Jack/ClientShellDLL/AutoTargetMgr.cpp new file mode 100644 index 00000000..e62d55cf --- /dev/null +++ b/Jack/ClientShellDLL/AutoTargetMgr.cpp @@ -0,0 +1,646 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : AutoTargetMgr.cpp +// +// PURPOSE : AutoTargetMgr - handle auto targeting for vehicles and easy play +// +// CREATED : 2/28/03 +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "AutoTargetMgr.h" +#include "CharacterFX.h" +#include "AimMagnetFX.h" +#include "SurfaceFunctions.h" +#include "CMoveMgr.h" +#include "VehicleMgr.h" +#include "PlayerMgr.h" +#include "ClientWeaponMgr.h" +#include "ClientButeMgr.h" +#include + +//these members are static so they can be referenced by the static sort function +LTVector CAutoTargetMgr::m_vFirePos; +LTVector CAutoTargetMgr::m_vForward; + +static float kfMinRangeSqr = (40.0f * 40.0f); +extern VarTrack g_vtFOVYNormal; + +static bool DoVectorPolyFilterFn(HPOLY hPoly, void *pUserData) +{ + // Make sure we hit a surface type we care about... + + SurfaceType eSurfType = GetSurfaceType(hPoly); + + if (eSurfType == ST_INVISIBLE) + { + return false; + } + + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(eSurfType); + if (pSurf && pSurf->bCanShootThrough && pSurf->bCanSeeThrough) + return false; + + + return true; +} + +static bool AutoTargetFilterFn(HOBJECT hTest, void *pUserData) +{ + // Ignore objects that are invisible + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_VISIBLE)) + { + return false; + } + + if(!(dwFlags & FLAG_RAYHIT)) + { + return false; + } + + HOBJECT hClientHitBox = LTNULL; + CCharacterFX* pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(g_pLTClient->GetClientObject()); + if (pCharacter) + { + hClientHitBox = pCharacter->GetHitBox(); + } + + + // Okay, do normal tests... + HOBJECT hFilterList[] = + { + g_pLTClient->GetClientObject(), + g_pPlayerMgr->GetMoveMgr()->GetObject(), + hClientHitBox, + LTNULL + }; + + if (!ObjListFilterFn(hTest, (void*) hFilterList)) + { + return false; + } + + + // If it's a body, ignore it + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(hTest); + if (pBody) + { + return false; + } + pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox(hTest); + if (pBody) + { + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// CAutoTargetMgr - class to handle auto targeting for vehicles and easy play +// +// ----------------------------------------------------------------------- // + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::Instance() +// +// PURPOSE: Instatiator of singleton +// +// This function is the only way to instatiate this object. It +// ensures that there is only one object, the singleton. +// +// ----------------------------------------------------------------------- // + +CAutoTargetMgr& CAutoTargetMgr::Instance() +{ + static CAutoTargetMgr sAutoTargetMgr; + return sAutoTargetMgr; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::CAutoTargetMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CAutoTargetMgr::CAutoTargetMgr() +{ + m_Targets.reserve(MAX_AUTOTARGET_CHARACTERS); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::CAutoTargetMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CAutoTargetMgr::~CAutoTargetMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::Update +// +// PURPOSE: Update auto-target +// +// ----------------------------------------------------------------------- // + +void CAutoTargetMgr::Update() +{ + //remember whether we were locked on last frame + bool bWasLocked = m_bLockOn; + m_bLockOn = false; + + //no auto-aim while zoomed in + if (g_pPlayerMgr->IsZoomed()) + return; + + // Get our weapon. + CClientWeaponMgr *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase* pClientWeapon = pClientWeaponMgr->GetCurrentClientWeapon(); + if( !pClientWeapon ) + return; + + const WEAPON* pWeapon = pClientWeapon->GetWeapon(); + + if( g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() && g_pMoveMgr->GetVehicleMgr()->HasVehicleWeapon()) + { + pWeapon = g_pMoveMgr->GetVehicleMgr()->GetVehicleWeapon()->GetWeapon(); + } + + if (pWeapon->eUseAutoTarget == AT_NEVER || (pWeapon->eUseAutoTarget == AT_EASY && g_pGameClientShell->GetDifficulty() != GD_EASY) ) + return; + + // Check if they want to manually aim. + if( g_pPlayerMgr->IsManualAim( )) + return; + + m_fAngle = pWeapon->fAutoTargetAngle; + m_fRangeSqr = pWeapon->fAutoTargetRange*pWeapon->fAutoTargetRange; + + LTRotation rRot; + + // Get the camera position and set up the vectors + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (hCamera) + { + g_pLTClient->GetObjectPos(hCamera, &m_vFirePos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + m_vForward = rRot.Forward(); + + // if we weren't locked last frame, reset our current aim + if (!bWasLocked) + m_vCurTarget = m_vForward; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if(psfxMgr) + { + + //Generate array of chars sorted by distance + GenerateCharArray(); + + //using this list of chars, generate an array of node positions + GenerateNodeArray(); + + //add any aim magnets to the array + AddMagnets(); + + // sort array proximity to the center of the screen + qsort(m_NodeArray, m_nNodeCount, sizeof(AutoTargetNode), CompareTargetNodes); + + //find the visible node closest to the center + m_vTarget = m_vForward; + m_bLockOn = FindNode(); + + if (m_bLockOn) + InterpolateAim(); + + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::GenerateCharArray() +// +// PURPOSE: Fill array with list of chars sorted by distance +// +// ----------------------------------------------------------------------- // +void CAutoTargetMgr::GenerateCharArray() +{ + //clear our target array + m_Targets.clear(); + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + + //step through the chars + CSpecialFXList* const pCharList = psfxMgr->GetFXList(SFX_CHARACTER_ID); + int nNumSFX = pCharList->GetSize(); + + for (int nChar=0; nChar < nNumSFX; nChar++) + { + CCharacterFX* pChar = (CCharacterFX*)(*pCharList)[nChar]; + if (pChar) + { + if (pChar->m_cs.bIsPlayer) + { + //filter out local player + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (hPlayerObj == pChar->GetServerObj()) + continue; + if(pChar->IsPlayerDead()) + continue; + + //if this is a team game filter out our teammates + if (IsTeamGameType() ) + { + // Get the client information of the body and us. + uint32 nId = pChar->m_cs.nClientID; + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + + // Only allow us to auto-target people on the other team. + if( pCI && pLocalCI ) + { + if (pCI->nTeamID == pLocalCI->nTeamID) + continue; + } + + } + } + else + { + // Check alignment of non-players + if(pChar->m_cs.eCrosshairCharacterClass != BAD) + continue; + } + + //filter out anyone outside the cone + LTVector vTargetPos; + g_pLTClient->GetObjectPos(pChar->GetServerObj(), &vTargetPos); + LTVector vOffset(0.0f,32.0f,0.0f); + + // we check both upper and lower parts of the body and if either is in the cone, we're good + if (IsPointInCone( vTargetPos - vOffset) || IsPointInCone( vTargetPos + vOffset) ) + { + // we only care about the n closest characters, so... + // if the new one farther away than the n-th one, drop it, + // otherwise drop the n-th one and insert the new one + + //step through the chars we already know about... + CharFXArray::iterator iter = m_Targets.begin(); + bool bInserted = false; + while (iter != m_Targets.end() && !bInserted) + { + //figure out how far away this one is + CCharacterFX* pTestChar = (CCharacterFX*)(*iter); + LTVector vTestPos; + g_pLTClient->GetObjectPos(pTestChar->GetServerObj(), &vTestPos); + float fTestDistSqr = m_vFirePos.DistSqr(vTestPos); + + //if this char is farther away than the one we're inserting + if (fTestDistSqr > m_fRangeSqr) + { + //if our list is full, pop off the last one... + if (m_Targets.size() >= MAX_AUTOTARGET_CHARACTERS) + m_Targets.pop_back(); + + m_Targets.insert(iter,pChar); + bInserted = true; + } + + iter++; + } + + //if we haven't inseted it yet, and we have room, add it to the back + if (!bInserted && m_Targets.size() < MAX_AUTOTARGET_CHARACTERS) + m_Targets.push_back(pChar); + } + } + + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::GenerateNodeArray() +// +// PURPOSE: Find the nodes closest to the center of view +// +// ----------------------------------------------------------------------- // +void CAutoTargetMgr::GenerateNodeArray() +{ + ModelSkeleton eModelSkeleton = eModelSkeletonInvalid; + ModelNode eCurrentNode; + const char* szNodeName = LTNULL; + int cNodes; + + ILTModel *pModelLT = g_pLTClient->GetModelLT(); + + //clear our node array + m_nNodeCount = 0; + + + //step through the chars we know about + CharFXArray::iterator iter = m_Targets.begin(); + while (iter != m_Targets.end()) + { + CCharacterFX* pChar = (CCharacterFX*)(*iter); + eModelSkeleton = pChar->GetModelSkeleton(); + cNodes = g_pModelButeMgr->GetSkeletonNumNodes(eModelSkeleton); + + // Enumerate through the nodez + for(int iNode = 0; iNode < cNodes && m_nNodeCount < MAX_AUTOTARGET_NODES; iNode++) + { + eCurrentNode = (ModelNode)iNode; + if (g_pModelButeMgr->GetSkeletonNodeAutoTarget(eModelSkeleton, eCurrentNode)) + { + // get the nodes position + LTransform lTrans; + HMODELNODE hNode; + + szNodeName = g_pModelButeMgr->GetSkeletonNodeName(eModelSkeleton, eCurrentNode); + + if( LT_OK == pModelLT->GetNode( pChar->GetServerObj(), szNodeName, hNode ) ) + { + if( LT_OK == pModelLT->GetNodeTransform( pChar->GetServerObj(), hNode, lTrans, LTTRUE ) ) + { + m_NodeArray[m_nNodeCount].vPos = lTrans.m_Pos; + m_NodeArray[m_nNodeCount].hChar = pChar->GetServerObj(); + m_nNodeCount++; + } + } + } + } + iter++; + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::CompareTargetNodes() +// +// PURPOSE: Compare two nodes to find which is closest to the center of view +// +// ----------------------------------------------------------------------- // + +int CAutoTargetMgr::CompareTargetNodes(const void* lhs, const void* rhs) +{ + AutoTargetNode* pL = (AutoTargetNode*)lhs; + AutoTargetNode* pR = (AutoTargetNode*)rhs; + // See how close each is to our line of fire + LTVector vecDiff1 = pL->vPos - m_vFirePos; + vecDiff1.Normalize( ); + + LTVector vecDiff2 = pR->vPos - m_vFirePos; + vecDiff2.Normalize( ); + + + float fDiff = (m_vForward.Dot(vecDiff2) - m_vForward.Dot(vecDiff1)); + + if (fDiff < 0.0f) + return -1; + if (fDiff > 0.0f) + return 1; + + return 0; + + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::FindNode() +// +// PURPOSE: Find the node closest to the center of view +// +// ----------------------------------------------------------------------- // + +bool CAutoTargetMgr::FindNode() +{ + + IntersectQuery IQuery; + IntersectInfo IInfo; + IQuery.m_From = m_vFirePos; + IQuery.m_Flags = INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID; + IQuery.m_FilterActualIntersectFn = AutoTargetFilterFn; + IQuery.m_pActualIntersectUserData = (void*)&IQuery; + IQuery.m_PolyFilterFn = DoVectorPolyFilterFn; + + + uint8 nNode = 0; + while (nNode < m_nNodeCount) + { + IQuery.m_To = m_NodeArray[nNode].vPos; + + if(g_pLTClient->IntersectSegment(&IQuery, &IInfo)) + { + if(IInfo.m_hObject == m_NodeArray[nNode].hChar) + { + m_vTarget = m_NodeArray[nNode].vPos - m_vFirePos; + m_vTarget.Normalize(); + return true; + } + else + { +// g_pLTClient->CPrint("no target visible"); + + } + } + else + { + //we didn't hit anything so our view of the target point is unobstructed + m_vTarget = m_NodeArray[nNode].vPos - m_vFirePos; + m_vTarget.Normalize(); + return true; + } + nNode++; + + } + return false; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::IsPointInCone() +// +// PURPOSE: Test a point to see if he is within the target cone +// +// ----------------------------------------------------------------------- // + +bool CAutoTargetMgr::IsPointInCone(const LTVector &vTargetPos) +{ + // convert angle to radians + float radAngle = (float)(m_fAngle * MATH_PI / 180); //angle; + + // divide by 2 because we're taking the half angle left or right of the forward vector + float cosOfAngle = (float)cos(radAngle/2); //angle / 2.0f; + + float fOffset = GetConsoleFloat("AutoTargetOffset",300.0f); + + //check range + float fDist = m_vFirePos.DistSqr(vTargetPos); + if (fDist > m_fRangeSqr || fDist < kfMinRangeSqr) + return false; + + + //make sure it's on screen too + LTVector vecD = vTargetPos - m_vFirePos; + vecD.Normalize(); + static float MaxScreenAngle = (float)cos( DEG2RAD(g_vtFOVYNormal.GetFloat()) / 2.0); + if (m_vForward.Dot(vecD) < MaxScreenAngle) + { + return false; + } + + + + LTVector vNewOrigin = m_vFirePos + (m_vForward * -fOffset); + + LTVector vecDiff = vTargetPos - vNewOrigin; + vecDiff.Normalize(); + + //check the angle + if (m_vForward.Dot(vecDiff) >= cosOfAngle) + { + return true; + } + + return false; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::AddMagnets() +// +// PURPOSE: Add any aim magnets in our cone to the array +// +// ----------------------------------------------------------------------- // +void CAutoTargetMgr::AddMagnets() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + + //step through the chars + CSpecialFXList* const pMagnetList = psfxMgr->GetFXList(SFX_AIMMAGNET_ID); + int nNumSFX = pMagnetList->GetSize(); + + for (int nMag=0; nMag < nNumSFX; nMag++) + { + CAimMagnetFX* pMag = (CAimMagnetFX*)(*pMagnetList)[nMag]; + if (pMag) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(pMag->GetServerObj(), OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_VISIBLE)) + continue; + + //filter out anyone outside the cone + LTVector vTargetPos; + g_pLTClient->GetObjectPos(pMag->GetTarget(), &vTargetPos); + + if (IsPointInCone( vTargetPos ) && m_nNodeCount < MAX_AUTOTARGET_NODES) + { + m_NodeArray[m_nNodeCount].vPos = vTargetPos; + m_NodeArray[m_nNodeCount].hChar = pMag->GetTarget(); + m_nNodeCount++; + } + } + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::GetCrosshairPos() +// +// PURPOSE: Generate a point in screen space corresponding the the target pos +// +// ----------------------------------------------------------------------- // +LTVector CAutoTargetMgr::GetCrosshairPos() const +{ + LTVector vTemp; + if (IsLockedOn()) + vTemp = m_vFirePos + (m_vCurTarget * 100.0f); + else + vTemp = m_vFirePos + (m_vForward * 100.0f); + + LTVector pos = g_pInterfaceMgr->GetScreenFromWorldPos(vTemp, g_pPlayerMgr->GetCamera()); + return pos; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAutoTargetMgr::InterpolateAim() +// +// PURPOSE: Rotate our current aim vector to match our target vector +// +// ----------------------------------------------------------------------- // +void CAutoTargetMgr::InterpolateAim() +{ + //we are currently aimed at m_vCurTarget + //we want to aim at m_vTarget + float fActualToTargetAng = m_vTarget.Dot(m_vCurTarget); + static float fMPAutoTargetSpeed = g_pClientButeMgr->GetInterfaceAttributeFloat("MPAutoTargetSpeed", 0.5f); + static float fAutoTargetSpeed = g_pClientButeMgr->GetInterfaceAttributeFloat("AutoTargetSpeed", 1.0f); + + //get the maximum angle we can move + float fMaxAngVel = g_pLTClient->GetFrameTime(); + if (IsMultiplayerGame()) + { + fMaxAngVel *= fMPAutoTargetSpeed; + } + else + { + fMaxAngVel *= fAutoTargetSpeed; + } + float fCosMaxAngVel = (float)cos(fMaxAngVel); + + //if we are at 180 degrees difference, much can go wrong, so ensure that we aren't, + //but if we are, we just want to keep looking in the direction that we currently + //are + if(fActualToTargetAng >= fCosMaxAngVel) + { + //the look target is within our reach, so just go there + m_vCurTarget = m_vTarget; + } + else + { + //form a right vector that passes through the arc that we are interpolating + //upon + LTVector vRight = m_vCurTarget - (m_vTarget - m_vCurTarget) / (fActualToTargetAng - 1.0f); + vRight.Normalize(); + + //now we can get our values based upon that space + m_vCurTarget = fCosMaxAngVel * m_vCurTarget + (float)sin(fMaxAngVel) * vRight; + m_vCurTarget.Normalize(); + + } + +} diff --git a/Jack/ClientShellDLL/AutoTargetMgr.h b/Jack/ClientShellDLL/AutoTargetMgr.h new file mode 100644 index 00000000..6074ce79 --- /dev/null +++ b/Jack/ClientShellDLL/AutoTargetMgr.h @@ -0,0 +1,93 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : AutoTargetMgr.cpp +// +// PURPOSE : AutoTargetMgr - handle auto targeting for vehicles and easy play +// +// CREATED : 2/28/03 +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __AUTO_TARGET_MGR_H__ +#define __AUTO_TARGET_MGR_H__ + +#include "ltbasetypes.h" +#include "ClientServerShared.h" + +// number of character nodes to check for autotargeting +#define MAX_AUTOTARGET_CHARACTERS (6) +// max number of potential nodes to check while autotargeting (6 nodes per character * 6 characters) + aim magnets +#define MAX_AUTOTARGET_NODES ((MAX_MODELBMGR_AUTOTARGET_NODES * MAX_AUTOTARGET_CHARACTERS) + MAX_AIM_MAGNETS) + +struct AutoTargetNode +{ + LTVector vPos; + HOBJECT hChar; +}; + +class CAutoTargetMgr +{ +protected: + + // Not allowed to create directly. Use Instance(). + CAutoTargetMgr(); + + // Copy ctor and assignment operator not implemented and should never be used. + CAutoTargetMgr( CAutoTargetMgr const &other ); + CAutoTargetMgr& operator=( CAutoTargetMgr const &other ); + +public: + + // Call this to get the singleton instance of the auto-target mgr. + static CAutoTargetMgr& Instance(); + + void Update(); + + bool IsLockedOn() const {return m_bLockOn;} + + //returns a normalized vector representing our current aim + LTVector GetTargetVector() const {return m_vCurTarget;} + + //returns a point in screen space where the crosshair should be drawn + LTVector GetCrosshairPos() const; + + + ~CAutoTargetMgr(); + + + +private: + bool IsPointInCone(const LTVector &vTargetPos); + void GenerateCharArray(); + void GenerateNodeArray(); + void AddMagnets(); + bool FindNode(); + void InterpolateAim(); + + //these members are static so they can be referenced by the static sort function + static LTVector m_vFirePos; + static LTVector m_vForward; + + static int CompareTargetNodes(const void* lhs, const void* rhs); + + bool m_bLockOn; + + LTVector m_vTarget; //a normalized vector to our selected target + LTVector m_vCurTarget; //a normalized vector to where we're currently aiming + //this will interpolate towards our target + + float m_fAngle; + float m_fRangeSqr; + + typedef std::vector CharFXArray; + CharFXArray m_Targets; + + AutoTargetNode m_NodeArray[MAX_AUTOTARGET_NODES]; + uint8 m_nNodeCount; + + +}; + +#endif // __AUTO_TARGET_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseLineSystemFX.cpp b/Jack/ClientShellDLL/BaseLineSystemFX.cpp new file mode 100644 index 00000000..0b6d2d8c --- /dev/null +++ b/Jack/ClientShellDLL/BaseLineSystemFX.cpp @@ -0,0 +1,95 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseLineSystemFX.cpp +// +// PURPOSE : BaseLineSystem special FX - Implementation +// +// CREATED : 1/17/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BaseLineSystemFX.h" +#include "iltclient.h" + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseLineSystemFX::Init +// +// PURPOSE: Init the base line system +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseLineSystemFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseLineSystemFX::CreateObject +// +// PURPOSE: Create object associated the line system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseLineSystemFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + LTVector vPos = m_vPos; + + if (m_vPos.x == 0.0f && m_vPos.y == 0.0f && m_vPos.z == 0.0f) + { + if (m_hServerObject) + { + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + } + } + + LTRotation rRot = m_rRot; + + if (m_rRot.m_Quat[3] == 0.0f) + { + if (m_hServerObject) + { + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + } + } + + // Setup the LineSystem... + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LINESYSTEM; + createStruct.m_Flags = FLAG_VISIBLE; + VEC_COPY(createStruct.m_Pos, vPos); + createStruct.m_Rotation = rRot; + + m_hObject = m_pClientDE->CreateObject(&createStruct); + + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseLineSystemFX::Update +// +// PURPOSE: Update the line system +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseLineSystemFX::Update() +{ + if(!m_hObject || !m_pClientDE) return LTFALSE; + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseLineSystemFX.h b/Jack/ClientShellDLL/BaseLineSystemFX.h new file mode 100644 index 00000000..ea242920 --- /dev/null +++ b/Jack/ClientShellDLL/BaseLineSystemFX.h @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseLineSystemFX.h +// +// PURPOSE : BaseLineSystem special fx class - Definition +// +// CREATED : 1/17/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __BASE_LINE_SYSTEM_FX_H__ +#define __BASE_LINE_SYSTEM_FX_H__ + +#include "SpecialFX.h" + +class CBaseLineSystemFX : public CSpecialFX +{ + public : + + CBaseLineSystemFX() : CSpecialFX(), + m_vPos(0.0f, 0.0f, 0.0f), + m_rRot(LTQuaternionf(0.0f, 0.0f, 0.0f, 0.0f)) // Note : The extra 0 means that it needs initialization + { + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + protected : + + LTVector m_vPos; + LTRotation m_rRot; +}; + +#endif // __BASE_LINE_SYSTEM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseMenu.cpp b/Jack/ClientShellDLL/BaseMenu.cpp new file mode 100644 index 00000000..507e8d2f --- /dev/null +++ b/Jack/ClientShellDLL/BaseMenu.cpp @@ -0,0 +1,390 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseMenu.cpp +// +// PURPOSE : Base class for in-game menus +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "BaseMenu.h" +#include "InterfaceMgr.h" + +///////////////////////////////////////////////////////////////////////////// +// SubMenu members +///////////////////////////////////////////////////////////////////////////// + +CSubMenu::CSubMenu() +{ + m_hFrame = NULL; + m_hFrameTip = NULL; +} + +LTBOOL CSubMenu::Init(HTEXTURE hFrame,HTEXTURE hFrameTip, LTIntPt size) +{ + m_hFrame = hFrame; + m_hFrameTip = hFrameTip; + + if (!Create(NULL,size.x,size.y)) + return LTFALSE; + + SetupQuadUVs(m_Poly[0], hFrame, 0.0f, 0.0f, 1.0f, 1.0f); + SetupQuadUVs(m_Poly[1], hFrameTip, 0.0f, 0.0f, 1.0f, 1.0f); + RotateQuadUVs(m_Poly[1], 1); + + g_pDrawPrim->SetRGBA(&m_Poly[0],argbWhite); + g_pDrawPrim->SetRGBA(&m_Poly[1],argbWhite); + + return LTTRUE; + +} + + +LTBOOL CSubMenu::HandleKeyUp (int vkey ) +{ + if (vkey == VK_ESCAPE) + { + g_pInterfaceMgr->GetMenuMgr()->HideSubMenu(true); + return LTTRUE; + } + return LTFALSE; +} + +// Render the control +void CSubMenu::Render ( ) +{ + if (!IsVisible()) return; + + + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + + g_pDrawPrim->SetTexture(m_hFrame); + g_pDrawPrim->DrawPrim(&m_Poly[0]); + + g_pDrawPrim->SetTexture(m_hFrameTip); + g_pDrawPrim->DrawPrim(&m_Poly[1]); + + CLTGUIWindow::Render(); + +} + +void CSubMenu::SetBasePos ( LTIntPt pos ) +{ + CLTGUIWindow::SetBasePos(pos); + UpdateFrame(); +} + + +void CSubMenu::SetScale(float fScale) +{ + CLTGUIWindow::SetScale(fScale); + UpdateFrame(); +} + +void CSubMenu::UpdateFrame() +{ + float fx = (float)m_pos.x; + float fy = (float)m_pos.y; + + float fw = (float)m_nWidth * m_fScale * 0.75f; + float fh = (float)m_nHeight * m_fScale; + + g_pDrawPrim->SetXYWH(&m_Poly[0],fx,fy,fw,fh); + g_pDrawPrim->SetXYWH(&m_Poly[1],fx+fw,fy,(fh/2.0f),fh); + + +} + + +///////////////////////////////////////////////////////////////////////////// +// BaseMenu members +///////////////////////////////////////////////////////////////////////////// + +//static members +LTIntPt CBaseMenu::s_Size; +uint16 CBaseMenu::s_Pos; + +HTEXTURE CBaseMenu::s_Frame = LTNULL; +HTEXTURE CBaseMenu::s_FrameTip = LTNULL; +HTEXTURE CBaseMenu::s_Up = LTNULL; +HTEXTURE CBaseMenu::s_UpH = LTNULL; +HTEXTURE CBaseMenu::s_Down = LTNULL; +HTEXTURE CBaseMenu::s_DownH = LTNULL; + +CBaseMenu::CBaseMenu() +{ + m_MenuID = MENU_ID_NONE; + + m_SelectedColor = argbWhite; + m_NonSelectedColor = argbBlack; + m_DisabledColor = argbGray; + + m_FontSize = 12; + m_FontFace = 0; + m_TitleFontSize = 0; + m_TitleFontFace = 16; +} + +CBaseMenu::~CBaseMenu() +{ + Term(); +} + +LTBOOL CBaseMenu::Init() +{ + if (!s_Frame) + { + + char szTmp[128] = ""; + g_pLayoutMgr->GetMenuFrame(szTmp,sizeof(szTmp)); + s_Frame = g_pInterfaceResMgr->GetTexture(szTmp); + + g_pLayoutMgr->GetMenuFrameTip(szTmp,sizeof(szTmp)); + s_FrameTip = g_pInterfaceResMgr->GetTexture(szTmp); + + s_Size = g_pLayoutMgr->GetMenuSize(); + s_Pos = g_pLayoutMgr->GetMenuPosition(); + + g_pLayoutMgr->GetMenuUpArrow(szTmp,sizeof(szTmp)); + s_Up = g_pInterfaceResMgr->GetTexture(szTmp); + g_pLayoutMgr->GetMenuUpArrowHighlight(szTmp,sizeof(szTmp)); + s_UpH = g_pInterfaceResMgr->GetTexture(szTmp); + + g_pLayoutMgr->GetMenuDownArrow(szTmp,sizeof(szTmp)); + s_Down = g_pInterfaceResMgr->GetTexture(szTmp); + g_pLayoutMgr->GetMenuDownArrowHighlight(szTmp,sizeof(szTmp)); + s_DownH = g_pInterfaceResMgr->GetTexture(szTmp); + } + + m_FontFace = g_pLayoutMgr->GetMenuFontFace(m_MenuID); + m_FontSize = g_pLayoutMgr->GetMenuFontSize(m_MenuID); + m_TitleFontFace = g_pLayoutMgr->GetMenuTitleFontFace(m_MenuID); + m_TitleFontSize = g_pLayoutMgr->GetMenuTitleFontSize(m_MenuID); + + m_Indent = g_pLayoutMgr->GetMenuIndent(m_MenuID); + + + m_SelectedColor = g_pLayoutMgr->GetMenuSelectedColor(m_MenuID); + m_NonSelectedColor = g_pLayoutMgr->GetMenuNonSelectedColor(m_MenuID); + m_DisabledColor = g_pLayoutMgr->GetMenuDisabledColor(m_MenuID); + + if (!Create(NULL,s_Size.x,s_Size.y)) return LTFALSE; + + SetupQuadUVs(m_Poly[0], s_Frame, 0.0f,0.0f,1.0f,1.0f); + SetupQuadUVs(m_Poly[1], s_FrameTip, 0.0f,0.0f,1.0f,1.0f); + g_pDrawPrim->SetRGBA(&m_Poly[0],argbWhite); + g_pDrawPrim->SetRGBA(&m_Poly[1],argbWhite); + + + LTIntPt pos = m_Indent; + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFontFace); + if (!pFont) return LTFALSE; + + if (!m_Title.Create("X", LTNULL, LTNULL, pFont, m_TitleFontSize, this)) + { + return LTFALSE; + } + + m_Title.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_Title.Enable(LTFALSE); + + pos.x = m_Indent.x + 24; + CLTGUIWindow::AddControl(&m_Title,pos); + + m_Title.SetScale(1.0f); + pos.x = m_Indent.x; + pos.y += (m_Title.GetHeight() + 4); + m_Title.SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_List.Create(s_Size.y - pos.y); + uint16 nOffset = (s_Size.x-m_Indent.x*2)-16; + m_List.UseArrows(nOffset ,1.0f,s_Up,s_UpH,s_Down,s_DownH); + CLTGUIWindow::AddControl(&m_List,pos); + + m_Resume.Create(LoadTempString(IDS_RESUME),MC_CLOSE,NULL,pFont,m_TitleFontSize,this); + + pos.x = s_Size.x - m_Indent.x - m_Resume.GetWidth(); + pos.y = 12; + CLTGUIWindow::AddControl(&m_Resume,pos); + + pos.x = s_Pos; + pos.y = 0; + SetBasePos(pos); + + + return LTTRUE; +} + +void CBaseMenu::Term() +{ + + CLTGUIWindow::RemoveControl(&m_Title,LTFALSE); + m_Title.Destroy(); + + CLTGUIWindow::RemoveControl(&m_List,LTFALSE); + m_List.Destroy(); + + CLTGUIWindow::RemoveControl(&m_Resume,LTFALSE); + m_Resume.Destroy(); + + Destroy(); +} + +// This is called when the screen gets or loses focus +void CBaseMenu::OnFocus(LTBOOL bFocus) +{ + ClearSelection(); + m_List.ClearSelection(); + if (bFocus) + { + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + SetSize(s_Size.x,s_Size.y); + + SetSelection(GetIndex(&m_List)); + } +} + +LTBOOL CBaseMenu::OnUp() +{ + return CLTGUIWindow::OnUp(); + +} + +LTBOOL CBaseMenu::OnDown() +{ + return CLTGUIWindow::OnDown(); +} + +LTBOOL CBaseMenu::OnMouseMove(int x, int y) +{ + uint16 listSelect = m_List.GetSelectedIndex( ); + LTBOOL bHandled = CLTGUIWindow::OnMouseMove(x,y); + + if (bHandled || listSelect != m_List.GetSelectedIndex( )) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + return LTTRUE; + } + return LTFALSE; +} + +void CBaseMenu::SetTitle (int stringID) +{ + m_Title.SetString(LoadTempString(stringID)); +} + +uint16 CBaseMenu::AddControl (int stringID, uint32 commandID, LTBOOL bStatic) +{ + return AddControl(LoadTempString(stringID),commandID,bStatic); +} + +uint16 CBaseMenu::AddControl (char *pString, uint32 commandID, LTBOOL bStatic) +{ + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_FontFace); + if (!pFont) return -1; + + CLTGUITextCtrl* pCtrl=debug_new(CLTGUITextCtrl); + if (!pCtrl->Create(pString, commandID, LTNULL, pFont, m_FontSize, this)) + { + debug_delete(pCtrl); + return -1; + } + + pCtrl->SetBasePos(m_nextPos); + if (bStatic) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + return m_List.AddControl(pCtrl); + +} + +uint32 CBaseMenu::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + switch (nCommand) + { + case MC_CLOSE: + g_pInterfaceMgr->GetMenuMgr()->SlideOut(); + break; + case MC_LEFT: + g_pInterfaceMgr->GetMenuMgr()->PreviousMenu(); + break; + case MC_RIGHT: + g_pInterfaceMgr->GetMenuMgr()->NextMenu(); + break; + default: + return 0; + } + return 1; +} + + +// Render the control +void CBaseMenu::Render ( ) +{ + if (!IsVisible()) return; + + + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + + g_pDrawPrim->SetTexture(s_Frame); + g_pDrawPrim->DrawPrim(&m_Poly[0]); + + g_pDrawPrim->SetTexture(s_FrameTip); + g_pDrawPrim->DrawPrim(&m_Poly[1]); + + CLTGUIWindow::Render(); + +} + + +void CBaseMenu::SetBasePos ( LTIntPt pos ) +{ + CLTGUIWindow::SetBasePos(pos); + UpdateFrame(); +} + + +void CBaseMenu::SetScale(float fScale) +{ + CLTGUIWindow::SetScale(fScale); + UpdateFrame(); +} + +void CBaseMenu::UpdateFrame() +{ + float fx = (float)m_pos.x; + float fy = (float)m_pos.y; + + float fw = (float)m_nWidth * m_fScale; + float fh = (float)m_nHeight * m_fScale * 0.75f; + g_pDrawPrim->SetXYWH(&m_Poly[0],fx,fy,fw,fh); + g_pDrawPrim->SetXYWH(&m_Poly[1],fx,fy+fh,fw,(fw/2.0f)); + + +} diff --git a/Jack/ClientShellDLL/BaseMenu.h b/Jack/ClientShellDLL/BaseMenu.h new file mode 100644 index 00000000..d3bf7595 --- /dev/null +++ b/Jack/ClientShellDLL/BaseMenu.h @@ -0,0 +1,132 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseMenu.h +// +// PURPOSE : Base class for in-game menus +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_BASE_MENU_H_) +#define _BASE_MENU_H_ + +#include "LTGUIMgr.h" +#include "LTPoly.h" + + +enum eMenuID +{ +#define INCLUDE_AS_ENUM +#include "MenuEnum.h" +#undef INCLUDE_AS_ENUM +}; + +class CSubMenu : public CLTGUIWindow +{ +public: + CSubMenu(); + virtual LTBOOL Init(HTEXTURE hFrame,HTEXTURE hFrameTip, LTIntPt size); + + virtual LTBOOL HandleKeyUp(int key); + // Render the control + virtual void Render (); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + +protected: + + virtual void UpdateFrame(); + + HTEXTURE m_hFrame; + HTEXTURE m_hFrameTip; + LTPoly_GT4 m_Poly[2]; + +}; + +enum eMenuCmds +{ + MC_NONE = 0, + MC_LEFT, + MC_RIGHT, + MC_CLOSE, + MC_UPDATE, + MC_CUSTOM +}; + +class CBaseMenu : public CLTGUIWindow +{ +public: + CBaseMenu(); + virtual ~CBaseMenu(); + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void OnFocus(LTBOOL bFocus); + + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + virtual LTBOOL OnMouseMove(int x, int y); + virtual LTBOOL OnEscape () { return LTFALSE; } + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); + + + eMenuID GetMenuID() {return m_MenuID;} + + // Render the control + virtual void Render (); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + virtual const char *GetTitle() {return m_Title.GetString()->GetText();} + +protected: + + void SetTitle(int stringID); + + uint16 AddControl (int stringID, uint32 commandID, LTBOOL bStatic = LTFALSE); + uint16 AddControl (char *pString, uint32 commandID, LTBOOL bStatic = LTFALSE); + + void UpdateFrame(); + +protected: + + static LTIntPt s_Size; + static uint16 s_Pos; + + static HTEXTURE s_Frame; + static HTEXTURE s_FrameTip; + static HTEXTURE s_Up; + static HTEXTURE s_UpH; + static HTEXTURE s_Down; + static HTEXTURE s_DownH; + + LTPoly_GT4 m_Poly[2]; + + uint8 m_FontSize; + uint8 m_FontFace; + uint8 m_TitleFontSize; + uint8 m_TitleFontFace; + + LTIntPt m_Indent; + uint32 m_SelectedColor; + uint32 m_NonSelectedColor; + uint32 m_DisabledColor; + + + eMenuID m_MenuID; + LTIntPt m_nextPos; + CLTGUITextCtrl m_Title; + CLTGUITextCtrl m_Resume; + CLTGUIListCtrl m_List; + + + +}; + +#endif //!defined(_BASE_MENU_H_) diff --git a/Jack/ClientShellDLL/BaseParticleSystemFX.cpp b/Jack/ClientShellDLL/BaseParticleSystemFX.cpp new file mode 100644 index 00000000..0d7dbe2a --- /dev/null +++ b/Jack/ClientShellDLL/BaseParticleSystemFX.cpp @@ -0,0 +1,342 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseParticleSystemFX.cpp +// +// PURPOSE : BaseParticleSystem special FX - Implementation +// +// CREATED : 10/21/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BaseParticleSystemFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::Init +// +// PURPOSE: Init the base particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseParticleSystemFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_basecs = *((BPSCREATESTRUCT*)psfxCreateStruct); + + m_fGravity = PSFX_DEFAULT_GRAVITY; + m_fRadius = PSFX_DEFAULT_RADIUS; + m_dwFlags = 0; + m_pTextureName = "SFX\\Particle\\particle.dtx"; + + m_vPos.Init(); + m_vPosOffset.Init(); + m_vVel.Init(); + m_rRot.Init(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseParticleSystemFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + LTVector vPos = m_vPos; + LTRotation rRot; + + // Use server object position if a position wasn't specified... + + if (m_hServerObject) + { + LTVector vZero(0, 0, 0), vServObjPos; + if( vPos.NearlyEquals(vZero, 0.0f)) + { + g_pLTClient->GetObjectPos(m_hServerObject, &vServObjPos); + vPos = vServObjPos; + } + else + { + m_basecs.bClientControlsPos = LTTRUE; + } + + // Calculate our offset from the server object... + + m_vPosOffset = vPos - vServObjPos; + } + + // Use the specified rotation if applicable + + if (m_rRot != LTRotation(0.0f, 0.0f, 0.0f, 1.0f)) + { + rRot = m_rRot; + } + + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_PARTICLESYSTEM; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_UPDATEUNSEEN | FLAG_FOGDISABLE; + createStruct.m_Pos = vPos; + createStruct.m_Rotation = rRot; + + m_hObject = m_pClientDE->CreateObject(&createStruct); + + // Setup the ParticleSystem... + + return SetupSystem(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::SetupSystem +// +// PURPOSE: Setup the particle system... +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseParticleSystemFX::SetupSystem() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + uint32 dwWidth, dwHeight; + HSURFACE hScreen = m_pClientDE->GetScreenSurface(); + m_pClientDE->GetSurfaceDims (hScreen, &dwWidth, &dwHeight); + if (dwWidth < 1) return LTFALSE; + + m_fRadius /= ((LTFLOAT)dwWidth); + + m_pClientDE->SetupParticleSystem(m_hObject, m_pTextureName, + m_fGravity, m_dwFlags, m_fRadius); + + // Set blend modes if applicable... + + uint32 dwFlags2 = 0; + + if (m_basecs.bAdditive) + { + dwFlags2 |= FLAG2_ADDITIVE; + } + else if (m_basecs.bMultiply) + { + dwFlags2 |= FLAG2_MULTIPLY; + } + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags2, dwFlags2, dwFlags2); + + + VEC_SET(m_vColorRange, m_vColor2.x - m_vColor1.x, + m_vColor2.y - m_vColor1.y, + m_vColor2.z - m_vColor1.z); + + if (m_vColorRange.x < 0.0f) m_vColorRange.x = 0.0f; + if (m_vColorRange.y < 0.0f) m_vColorRange.y = 0.0f; + if (m_vColorRange.z < 0.0f) m_vColorRange.z = 0.0f; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::Update +// +// PURPOSE: Update the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseParticleSystemFX::Update() +{ + if (!CSpecialFX::Update() || !m_hObject || !m_pClientDE) return LTFALSE; + + if( g_pGameClientShell->IsServerPaused() ) + return LTTRUE; + + // See if we should rotate this bad-boy... + + if (m_vRotVel.x != 0.0f || m_vRotVel.y != 0.0f || m_vRotVel.z != 0.0f) + { + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hObject, &rRot); + + m_vRotAmount += m_vRotVel * fDelta; + + if (m_vRotVel.x != 0.0f) rRot.Rotate(rRot.Right(), m_vRotAmount.x); + if (m_vRotVel.y != 0.0f) rRot.Rotate(rRot.Up(), m_vRotAmount.y); + if (m_vRotVel.z != 0.0f) rRot.Rotate(rRot.Forward(), m_vRotAmount.z); + + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + } + + + // Update each particles scale / alpha if necessary... + + LTParticle *pCur, *pTail; + + if (m_basecs.bAdjustParticleScale || m_basecs.bAdjustParticleAlpha) + { + if (m_pClientDE->GetParticles(m_hObject, &pCur, &pTail)) + { + LTFLOAT fLifetime = 0.0f, fTotalLifetime = 0.0f; + LTFLOAT fAlphaRange = m_basecs.fEndParticleAlpha - m_basecs.fStartParticleAlpha; + LTFLOAT fScaleRange = m_basecs.fEndParticleScale - m_basecs.fStartParticleScale; + LTVector vColorRange = m_vColor2 - m_vColor1; + + while (pCur && pCur != pTail) + { + fLifetime = pCur->m_Lifetime; + fTotalLifetime = pCur->m_TotalLifetime; + + if (fLifetime > 0.0f && fTotalLifetime > 0.0f) + { + LTFLOAT fLifePercent = 1.0f - (fLifetime / fTotalLifetime); + + // Adjust scale... + + if (m_basecs.bAdjustParticleScale) + { + pCur->m_Size = m_fRadius * (m_basecs.fStartParticleScale + (fScaleRange * fLifePercent)); + } + + // Adjust alpha... + + if (m_basecs.bAdjustParticleAlpha) + { + pCur->m_Alpha = m_basecs.fStartParticleAlpha + (fAlphaRange * fLifePercent); + } + } + + pCur = pCur->m_pNext; + } + } + } + + + // Make sure we update our position relative to the server object + // (if the server object is valid and the client isn't controling + // the particle system pos)... + + if (m_hServerObject && !m_basecs.bClientControlsPos) + { + LTVector vNewPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vNewPos); + vNewPos += m_vPosOffset; + g_pLTClient->SetObjectPos(m_hObject, &vNewPos); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::GetRandomColorInRange +// +// PURPOSE: Get a random color in our color range +// +// ----------------------------------------------------------------------- // + +void CBaseParticleSystemFX::GetRandomColorInRange(LTVector & vColor) +{ + LTFLOAT fColorR = GetRandom(m_vColor1.x, m_vColor2.x); + + if (m_vColorRange.x <= 0.0f) + { + VEC_COPY(vColor, m_vColor1); + } + else + { + vColor.x = fColorR; + vColor.y = (m_vColorRange.y * fColorR) / m_vColorRange.x; + vColor.z = (m_vColorRange.z * fColorR) / m_vColorRange.x; + } + + return; +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::GetNumParticles +// +// PURPOSE: Get num particles to add based on the camera pos +// +// ----------------------------------------------------------------------- // + +int CBaseParticleSystemFX::GetNumParticles(int nDefaultNum) +{ + LTFLOAT fNum = (LTFLOAT) nDefaultNum; + + if (m_basecs.bRelToCameraPos) + { + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if (hCamera) + { + LTVector vCamPos, vDist, vPos; + g_pLTClient->GetObjectPos(m_hObject, &vPos); + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + vDist = vCamPos - vPos; + + LTFLOAT fInnerSqr = m_basecs.fInnerCamRadius*m_basecs.fInnerCamRadius; + LTFLOAT fOuterSqr = m_basecs.fOuterCamRadius*m_basecs.fOuterCamRadius; + LTFLOAT fDistSqr = vDist.MagSqr(); + + if (fDistSqr > fInnerSqr) + { + LTFLOAT fDistFromInnerSqr = fDistSqr - fInnerSqr; + LTFLOAT fRangeSqr = fOuterSqr - fInnerSqr; + fNum *= (1.0f - (fDistFromInnerSqr / fRangeSqr)); + fNum = fNum < 1.0f ? 1.0f : fNum; + } + } + } + + return (int)fNum; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseParticleSystemFX::RemoveAllParticles +// +// PURPOSE: Remove all the particles in system +// +// ----------------------------------------------------------------------- // + +void CBaseParticleSystemFX::RemoveAllParticles() +{ + if (!m_hObject || !m_pClientDE) return; + + LTParticle *pCur, *pTail, *pNext; + + if (m_pClientDE->GetParticles(m_hObject, &pCur, &pTail)) + { + while (pCur && pCur != pTail) + { + pNext = pCur->m_pNext; + m_pClientDE->RemoveParticle(m_hObject, pCur); + pCur = pNext; + } + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseParticleSystemFX.h b/Jack/ClientShellDLL/BaseParticleSystemFX.h new file mode 100644 index 00000000..cf309ee7 --- /dev/null +++ b/Jack/ClientShellDLL/BaseParticleSystemFX.h @@ -0,0 +1,112 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseParticleSystemFX.h +// +// PURPOSE : BaseParticleSystem special fx class - Definition +// +// CREATED : 10/21/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __BASE_PARTICLE_SYSTEM_FX_H__ +#define __BASE_PARTICLE_SYSTEM_FX_H__ + +#include "SpecialFX.h" + +#define PSFX_DEFAULT_GRAVITY -500 +#define PSFX_DEFAULT_RADIUS 500 + +struct BPSCREATESTRUCT : public SFXCREATESTRUCT +{ + BPSCREATESTRUCT(); + + LTBOOL bRelToCameraPos; + LTFLOAT fInnerCamRadius; + LTFLOAT fOuterCamRadius; + LTBOOL bAdditive; + LTBOOL bMultiply; + LTBOOL bClientControlsPos; + LTBOOL bAdjustParticleAlpha; + LTBOOL bAdjustParticleScale; + LTFLOAT fStartParticleScale; + LTFLOAT fEndParticleScale; + LTFLOAT fStartParticleAlpha; + LTFLOAT fEndParticleAlpha; +}; + +inline BPSCREATESTRUCT::BPSCREATESTRUCT() +{ + bRelToCameraPos = LTFALSE; + fInnerCamRadius = 0.0f; + fOuterCamRadius = 0.0f; + bAdditive = LTFALSE; + bMultiply = LTFALSE; + bClientControlsPos = LTFALSE; + bAdjustParticleAlpha = LTFALSE; + bAdjustParticleScale = LTFALSE; + fStartParticleScale = 0.0f; + fEndParticleScale = 0.0f; + fStartParticleAlpha = 0.0f; + fEndParticleAlpha = 0.0f; +} + + +class CBaseParticleSystemFX : public CSpecialFX +{ + public : + + CBaseParticleSystemFX() : CSpecialFX() + { + m_pTextureName = LTNULL; + m_fGravity = PSFX_DEFAULT_GRAVITY; + m_fRadius = PSFX_DEFAULT_RADIUS; + m_dwFlags = 0; + m_fColorScale = 1.0f; + + m_vRotAmount.Init(); + m_vRotVel.Init(); + m_vPos.Init(); + m_vPosOffset.Init(); + m_vColorRange.Init(); + m_vColor1.Init(255.0f, 255.0f, 255.0f); + m_vColor2.Init( 255.0f, 255.0f, 255.0f); + m_rRot.Init(); + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) + { + return CSpecialFX::Init(hServObj, pMsg); + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + protected : + + const char* m_pTextureName; // Name of the particle texture + LTFLOAT m_fGravity; // Gravity of particle system + LTFLOAT m_fRadius; // Radius of particle system + uint32 m_dwFlags; // Particle system setup flags + LTFLOAT m_fColorScale; // System starting color scale + LTVector m_vPos; // Particle system initial pos + LTRotation m_rRot; // Particle system ininial rotation + LTVector m_vRotAmount; // Amount to rotate + LTVector m_vRotVel; // Rotation velocity + LTVector m_vPosOffset; // Our position offset from server object + + LTVector m_vColor1; // Low color value + LTVector m_vColor2; // Low high color value + LTVector m_vColorRange; // Range of particle colors + + BPSCREATESTRUCT m_basecs; // Create struct + + virtual LTBOOL SetupSystem(); + virtual void GetRandomColorInRange(LTVector & vColor); + virtual int GetNumParticles(int nNumParticles); + virtual void RemoveAllParticles(); +}; + +#endif // __BASE_PARTICLE_SYSTEM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BasePolyDrawFX.cpp b/Jack/ClientShellDLL/BasePolyDrawFX.cpp new file mode 100644 index 00000000..5113c510 --- /dev/null +++ b/Jack/ClientShellDLL/BasePolyDrawFX.cpp @@ -0,0 +1,102 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BasePolyDrawFX.cpp +// +// PURPOSE : BasePolyDraw (Canvas) special FX - Implementation +// +// CREATED : 4/15/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BasePolyDrawFX.h" + +void BasePolyDrawFn(HLOCALOBJ hObj, void *pUser) +{ + if (!hObj) return; + + CBasePolyDrawFX* pFX = (CBasePolyDrawFX*)pUser; + if (pFX ) + { + pFX->DrawAll(g_pLTClient->GetDrawPrim()); + } +} + +HOBJECT CBasePolyDrawFX::s_hCanvasObj = LTNULL; +PolyDrawFXList* CBasePolyDrawFX::s_pPolyDrawFXList = NULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBasePolyDrawFX::CreateObject +// +// PURPOSE: Create object associated the object +// +// ----------------------------------------------------------------------- // + +LTBOOL CBasePolyDrawFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + LTVector vPos = m_vPos; + + if (vPos.x == 0.0f && vPos.y == 0.0f && vPos.z == 0.0f) + { + if (m_hServerObject) + { + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + } + } + + + // Setup the global canvas object... + + if (!s_hCanvasObj) + { + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_CANVAS; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_FOGDISABLE; + createStruct.m_Pos = vPos; + + s_hCanvasObj = m_pClientDE->CreateObject(&createStruct); + if (!s_hCanvasObj) return LTFALSE; + + m_pClientDE->SetCanvasFn(s_hCanvasObj, BasePolyDrawFn, this); + m_pClientDE->SetCanvasRadius(s_hCanvasObj, 10000.0f); + } + + m_Flags = FLAG_VISIBLE; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBasePolyDrawFX::DrawAll +// +// PURPOSE: Draw all the BasePolyDrawFX objects... +// +// ----------------------------------------------------------------------- // + +void CBasePolyDrawFX::DrawAll(ILTDrawPrim *pDraw) +{ + // Draw all the fx on the static list... + + CBasePolyDrawFX** pFX = s_pPolyDrawFXList->GetItem(TLIT_FIRST); + + while (pFX && *pFX) + { + // Only draw fx if visible... + + if ((*pFX)->m_Flags & FLAG_VISIBLE) + { + (*pFX)->Draw(pDraw); + } + + pFX = s_pPolyDrawFXList->GetItem(TLIT_NEXT); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BasePolyDrawFX.h b/Jack/ClientShellDLL/BasePolyDrawFX.h new file mode 100644 index 00000000..67b96260 --- /dev/null +++ b/Jack/ClientShellDLL/BasePolyDrawFX.h @@ -0,0 +1,102 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BasePolyDrawFX.h +// +// PURPOSE : BasePolyDraw special fx class - Definition +// +// CREATED : 4/15/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __BASE_POLY_DRAW_FX_H__ +#define __BASE_POLY_DRAW_FX_H__ + +#include "SpecialFX.h" +#include "ltbasedefs.h" +#include "TemplateList.h" + +class CBasePolyDrawFX; + +typedef CTList PolyDrawFXList; + +class CBasePolyDrawFX : public CSpecialFX +{ + public : + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + void DrawAll(ILTDrawPrim *pDraw); + + ~CBasePolyDrawFX() + { + // Check if we have a static list, we have to, since it + // gets created in our constructor. + if( s_pPolyDrawFXList ) + { + s_pPolyDrawFXList->Remove(this); + + if (!s_pPolyDrawFXList->GetLength()) + { + if (s_hCanvasObj) + { + g_pLTClient->RemoveObject(s_hCanvasObj); + s_hCanvasObj = LTNULL; + } + + // Remove the static polydrawfx if we don't have any + // more entries. + delete s_pPolyDrawFXList; + s_pPolyDrawFXList = NULL; + } + } + } + + void SetPos(const LTVector &vPos) { m_vPos = vPos; } + const LTVector &GetPos() const { return m_vPos; } + + void SetRot(const LTRotation &rRot) { m_rRot = rRot; } + const LTRotation &GetRot() const { return m_rRot; } + + void SetFlags(uint32 dwFlags) { m_Flags = dwFlags; } + uint32 GetFlags() const { return m_Flags; } + + void SetFlags2(uint32 dwFlags) { m_Flags2 = dwFlags; } + uint32 GetFlags2() const { return m_Flags2; } + + static HOBJECT GetGlobalCanvaseObj() { return s_hCanvasObj; } + + protected : + + CBasePolyDrawFX() + { + m_vPos.Init(); + m_rRot.Init(); + m_Flags = 0; + m_Flags2 = 0; + + // Create a static list of polydrawfx. + if( !s_pPolyDrawFXList ) + { + s_pPolyDrawFXList = new PolyDrawFXList; + s_pPolyDrawFXList->Init(LTFALSE); + } + + s_pPolyDrawFXList->Add(this); + } + + virtual LTBOOL Draw(ILTDrawPrim *pDraw)=0; + + // We don't want to have the overhead of an engine object, so we'll just + // keep our own copies of HOBJECT data we want to use... + + LTVector m_vPos; + LTRotation m_rRot; + uint32 m_Flags; + uint32 m_Flags2; + + static PolyDrawFXList* s_pPolyDrawFXList; + static HOBJECT s_hCanvasObj; +}; + +#endif // __BASE_POLY_DRAW_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseScaleFX.cpp b/Jack/ClientShellDLL/BaseScaleFX.cpp new file mode 100644 index 00000000..e17eae34 --- /dev/null +++ b/Jack/ClientShellDLL/BaseScaleFX.cpp @@ -0,0 +1,417 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseScaleFX.cpp +// +// PURPOSE : BaseScale special FX - Implementation +// +// CREATED : 5/27/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BaseScaleFX.h" +#include "iltclient.h" +#include "GameClientShell.h" +#include "VarTrack.h" +#ifndef __PSX2 +#include "winutil.h" +#endif + +extern CGameClientShell* g_pGameClientShell; + +static VarTrack g_vtRotate; +static VarTrack g_vtRotateVel; +static VarTrack g_vtRotateLeft; +static VarTrack g_vtFaceCamera; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScaleFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!psfxCreateStruct) return LTFALSE; + + CSpecialFX::Init(psfxCreateStruct); + + BSCREATESTRUCT* pBaseScale = (BSCREATESTRUCT*)psfxCreateStruct; + + m_rRot = pBaseScale->rRot; + m_vPos = pBaseScale->vPos; + m_vVel = pBaseScale->vVel; + m_vInitialScale = pBaseScale->vInitialScale; + m_vFinalScale = pBaseScale->vFinalScale; + m_vInitialColor = pBaseScale->vInitialColor; + m_vFinalColor = pBaseScale->vFinalColor; + m_bUseUserColors = pBaseScale->bUseUserColors; + m_dwFlags = pBaseScale->dwFlags; + m_fLifeTime = pBaseScale->fLifeTime; + m_fDelayTime = pBaseScale->fDelayTime; + m_fInitialAlpha = pBaseScale->fInitialAlpha; + m_fFinalAlpha = pBaseScale->fFinalAlpha; + m_pFilename = pBaseScale->pFilename; + m_pSkinReader = pBaseScale->pSkinReader; + m_pRenderStyleReader = pBaseScale->pRenderStyleReader; + m_bLoop = pBaseScale->bLoop; + m_bAdditive = pBaseScale->bAdditive; + m_bMultiply = pBaseScale->bMultiply; + m_nType = pBaseScale->nType; + m_bRotate = pBaseScale->bRotate; + m_bFaceCamera = pBaseScale->bFaceCamera; + m_bPausable = pBaseScale->bPausable; + m_fRotateVel = GetRandom(pBaseScale->fMinRotateVel, pBaseScale->fMaxRotateVel); + m_nRotationAxis = pBaseScale->nRotationAxis; + m_nMenuLayer = pBaseScale->nMenuLayer; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::CreateObject +// +// PURPOSE: Create object associated with the BaseScale +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScaleFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_pFilename) return LTFALSE; + + // Setup the BaseScale... + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + SAFE_STRCPY(createStruct.m_Filename, m_pFilename); + + if(m_pSkinReader) + { + m_pSkinReader->CopyList(0, createStruct.m_SkinNames[0], MAX_CS_FILENAME_LEN+1); + } + + if(m_pRenderStyleReader) + { + m_pRenderStyleReader->CopyList(0, createStruct.m_RenderStyleNames[0], MAX_CS_FILENAME_LEN+1); + } + + // Allow create object to be called to re-init object... + + if (m_hObject) + { + // See if we are changing object types... + + if (GetObjectType(m_hObject) != m_nType) + { + // Shit, need to re-create object... + + pClientDE->RemoveObject(m_hObject); + m_hObject = LTNULL; + } + else // Cool, can re-use object... + { + g_pCommonLT->SetObjectFilenames(m_hObject, &createStruct); + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, m_dwFlags, FLAGMASK_ALL); + g_pLTClient->SetObjectPosAndRotation(m_hObject, &m_vPos, &m_rRot); + } + } + + + // See if we need to create the object... + + if (!m_hObject) + { + createStruct.m_ObjectType = m_nType; + createStruct.m_Flags = m_dwFlags; + createStruct.m_Pos = m_vPos; + createStruct.m_Rotation = m_rRot; + + m_hObject = pClientDE->CreateObject(&createStruct); + if (!m_hObject) return LTFALSE; + } + + + // Set blend modes if applicable... + + uint32 dwFlags = 0; + + // Set up the flags + LTBOOL bFog = LTTRUE; + if (m_bAdditive) + { + dwFlags |= FLAG2_ADDITIVE; + bFog = LTFALSE; + } + else if (m_bMultiply) + { + dwFlags |= FLAG2_MULTIPLY; + bFog = LTFALSE; + } + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags2, dwFlags, FLAG2_ADDITIVE | FLAG2_MULTIPLY); + + + // Enable/Disable fog as appropriate... + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, (bFog) ? 0 : FLAG_FOGDISABLE, FLAG_FOGDISABLE); + + return Reset(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::Reset +// +// PURPOSE: Reset the object +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScaleFX::Reset() +{ + if (!m_hObject) return LTFALSE; + + LTFLOAT r, g, b, a; + if (m_bUseUserColors) + { + r = m_vInitialColor.x; + g = m_vInitialColor.y; + b = m_vInitialColor.z; + } + else + { + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + } + + m_pClientDE->SetObjectScale(m_hObject, &m_vInitialScale); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, m_fInitialAlpha); + + m_fStartTime = m_fDelayTime; + m_fEndTime = m_fStartTime + m_fLifeTime; + m_fElapsedTime = 0.0f; + + if (m_vVel.x != 0.0f || m_vVel.y != 0.0 || m_vVel.z != 0.0) + { + InitMovingObject(&m_movingObj, m_vPos, m_vVel); + m_movingObj.m_dwPhysicsFlags |= MO_NOGRAVITY; + } + + if (m_nType == OT_MODEL) + { + m_pClientDE->SetModelLooping(m_hObject, m_bLoop != LTFALSE); + } + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::Update +// +// PURPOSE: Update the BaseScale +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScaleFX::Update() +{ + if(!m_hObject || !m_pClientDE) + return LTFALSE; + + //handle updating the elapsed time + float fFrameTime = m_pClientDE->GetFrameTime(); + + //see if we are paused though + if(m_bPausable && g_pGameClientShell->IsServerPaused()) + fFrameTime = 0.0f; + + m_fElapsedTime += fFrameTime; + + if (m_fElapsedTime > m_fEndTime && m_fLifeTime < 10000.0f) + { + return LTFALSE; + } + else if (m_fElapsedTime < m_fStartTime) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + return LTTRUE; // not yet... + } + else + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + float fElapsedFromStart = m_fElapsedTime - m_fStartTime; + + if (m_fFinalAlpha != m_fInitialAlpha || m_vInitialColor.x != m_vFinalColor.x || + m_vInitialColor.y != m_vFinalColor.y || m_vInitialColor.z != m_vFinalColor.z) + { + UpdateAlpha(fElapsedFromStart); + } + + if (m_vInitialScale.x != m_vFinalScale.x || + m_vInitialScale.y != m_vFinalScale.y || + m_vInitialScale.z != m_vFinalScale.z) + { + UpdateScale(fElapsedFromStart); + } + + if (m_vVel.x != 0.0f || m_vVel.y != 0.0 || m_vVel.z != 0.0) + { + UpdatePos(fElapsedFromStart); + } + + UpdateRot(fElapsedFromStart); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::UpdateAlpha +// +// PURPOSE: Update the BaseScale alpha +// +// ----------------------------------------------------------------------- // + +void CBaseScaleFX::UpdateAlpha(LTFLOAT fTimeDelta) +{ + if(!m_hObject || !m_pClientDE) return; + + LTFLOAT fAlpha = m_fInitialAlpha + (fTimeDelta * (m_fFinalAlpha - m_fInitialAlpha) / m_fLifeTime); + + LTVector vColor; + if (m_bUseUserColors) + { + vColor.x = m_vInitialColor.x + (fTimeDelta * (m_vFinalColor.x - m_vInitialColor.x) / m_fLifeTime); + vColor.y = m_vInitialColor.y + (fTimeDelta * (m_vFinalColor.y - m_vInitialColor.y) / m_fLifeTime); + vColor.z = m_vInitialColor.z + (fTimeDelta * (m_vFinalColor.z - m_vInitialColor.z) / m_fLifeTime); + + //m_pClientDE->CPrint("Color = (%.2f, %.2f, %.2f), Alpha = %.2f", vColor.x, vColor.y, vColor.z, fAlpha); + } + else + { + LTFLOAT a; + m_pClientDE->GetObjectColor(m_hObject, &(vColor.x), &(vColor.y), &(vColor.z), &a); + } + + m_pClientDE->SetObjectColor(m_hObject, vColor.x, vColor.y, vColor.z, fAlpha); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::UpdateScale +// +// PURPOSE: Update the BaseScale alpha +// +// ----------------------------------------------------------------------- // + +void CBaseScaleFX::UpdateScale(LTFLOAT fTimeDelta) +{ + if(!m_hObject || !m_pClientDE) return; + + LTVector vScale; + vScale.Init(); + + vScale.x = m_vInitialScale.x + (fTimeDelta * (m_vFinalScale.x - m_vInitialScale.x) / m_fLifeTime); + vScale.y = m_vInitialScale.y + (fTimeDelta * (m_vFinalScale.y - m_vInitialScale.y) / m_fLifeTime); + vScale.z = m_vInitialScale.z + (fTimeDelta * (m_vFinalScale.z - m_vInitialScale.z) / m_fLifeTime); + + m_pClientDE->SetObjectScale(m_hObject, &vScale); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::UpdatePos +// +// PURPOSE: Update the BaseScale's pos +// +// ----------------------------------------------------------------------- // + +void CBaseScaleFX::UpdatePos(LTFLOAT fTimeDelta) +{ + if(!m_hObject || !m_pClientDE) return; + + if (m_movingObj.m_dwPhysicsFlags & MO_RESTING) return; + + LTVector vNewPos; + if (UpdateMovingObject(LTNULL, &m_movingObj, vNewPos)) + { + m_movingObj.m_vLastPos = m_movingObj.m_vPos; + m_movingObj.m_vPos = vNewPos; + + g_pLTClient->SetObjectPos(m_hObject, &vNewPos); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScaleFX::UpdateRot +// +// PURPOSE: Update the BaseScale's rotation +// +// ----------------------------------------------------------------------- // + +void CBaseScaleFX::UpdateRot(LTFLOAT fTimeDelta) +{ + if (!m_bRotate || !m_hObject) return; + + LTVector vU, vR, vF, vAxis; + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hObject, &rRot); + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + // See if this is a rotatable sprite and we want it to face the + // camera... + if (m_bFaceCamera) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); + if (dwFlags & FLAG_ROTATEABLESPRITE) + { + // Okay, make sure we're facing the camera... + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (hCamera) + { + LTVector vCamPos, vPos; + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + g_pLTClient->GetObjectPos(m_hObject, &vPos); + + vF = vCamPos - vPos; + rRot = LTRotation(vF, vU); + } + } + } + + if (m_nType == OT_MODEL && m_nRotationAxis == 1) + { + vAxis = vU; + } + else if (m_nType == OT_MODEL && m_nRotationAxis == 2) + { + vAxis = vR; + } + else + vAxis = vF; + + rRot.Rotate(vAxis, m_fRotateVel * (fTimeDelta - (m_fElapsedTime - m_fStartTime))); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); +} + +void CBaseScaleFX::AdjustScale(LTFLOAT fScaleMultiplier) +{ + VEC_MULSCALAR(m_vInitialScale, m_vInitialScale, fScaleMultiplier); + VEC_MULSCALAR(m_vFinalScale, m_vFinalScale, fScaleMultiplier); + + m_pClientDE->SetObjectScale(m_hObject, &m_vInitialScale); + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseScaleFX.h b/Jack/ClientShellDLL/BaseScaleFX.h new file mode 100644 index 00000000..234092f2 --- /dev/null +++ b/Jack/ClientShellDLL/BaseScaleFX.h @@ -0,0 +1,191 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : BaseScaleFX.h +// +// PURPOSE : BaseScale special fx class - Definition +// +// CREATED : 5/27/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __BASE_SCALE_FX_H__ +#define __BASE_SCALE_FX_H__ + +#include "SpecialFX.h" +#include "client_physics.h" +#include "ButeListReader.h" + +struct BSCREATESTRUCT : public SFXCREATESTRUCT +{ + BSCREATESTRUCT(); + + LTRotation rRot; + LTVector vPos; + LTVector vVel; + LTVector vInitialScale; + LTVector vFinalScale; + LTVector vInitialColor; + LTVector vFinalColor; + LTFLOAT fLifeTime; + LTFLOAT fDelayTime; + LTFLOAT fInitialAlpha; + LTFLOAT fFinalAlpha; + LTFLOAT fMinRotateVel; + LTFLOAT fMaxRotateVel; + const char* pFilename; + uint32 dwFlags; + LTBOOL bUseUserColors; + LTBOOL bLoop; + LTBOOL bAdditive; + LTBOOL bMultiply; + LTBOOL bRotate; + LTBOOL bRotateLeft; + LTBOOL bFaceCamera; + LTBOOL bPausable; + uint8 nRotationAxis; + uint8 nType; + uint8 nMenuLayer; + + CButeListReader* pRenderStyleReader; + CButeListReader* pSkinReader; +}; + +inline BSCREATESTRUCT::BSCREATESTRUCT() +{ + fLifeTime = 0.0f; + fDelayTime = 0.0f; + fInitialAlpha = 0.0f; + fFinalAlpha = 0.0f; + fMinRotateVel = 1.0f; + fMaxRotateVel = 1.0f; + pFilename = LTNULL; + dwFlags = 0; + bUseUserColors = LTFALSE; + bLoop = LTFALSE; + bAdditive = LTFALSE; + bMultiply = LTFALSE; + bRotate = LTFALSE; + bFaceCamera = LTFALSE; + bPausable = LTFALSE; + nRotationAxis = 0; + nType = OT_SPRITE; + nMenuLayer = 0; + + rRot.Init(); + vPos.Init(); + vVel.Init(); + vInitialScale.Init(); + vFinalScale.Init(); + vInitialColor.Init(-1.0f, -1.0f, -1.0f); + vFinalColor.Init(-1.0f, -1.0f, -1.0f); + + pRenderStyleReader = LTNULL; + pSkinReader = LTNULL; + + +} + + +class CBaseScaleFX : public CSpecialFX +{ + public : + + CBaseScaleFX() + { + m_rRot.Init(); + m_vPos.Init(); + m_vVel.Init(); + m_vInitialScale.Init(1.0f, 1.0f, 1.0f); + m_vFinalScale.Init(1.0f, 1.0f, 1.0f); + m_vInitialColor.Init(1.0f, 1.0f, 1.0f); + m_vFinalColor.Init(1.0f, 1.0f, 1.0f); + + m_fLifeTime = 1.0f; + m_fInitialAlpha = 1.0f; + m_fFinalAlpha = 1.0f; + m_fRotateVel = 1.0f; + + m_pFilename = LTNULL; + + m_pSkinReader = LTNULL; + m_pRenderStyleReader = LTNULL; + + m_fStartTime = 0.0f; + m_fDelayTime = 0.0f; + m_fEndTime = 0.0f; + m_fElapsedTime = 0.0f; + + m_dwFlags = 0; + m_nType = 0; + m_nRotDir = 1; + m_bLoop = LTFALSE; + m_bAdditive = LTFALSE; + m_bMultiply = LTFALSE; + m_bRotate = LTFALSE; + m_bFaceCamera = LTFALSE; + m_bPausable = LTFALSE; + m_nRotationAxis = 0; + + m_bUseUserColors = LTFALSE; + + m_nMenuLayer = 0; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual LTBOOL Reset(); + + void AdjustScale(LTFLOAT fScaleMultiplier); + + virtual uint32 GetSFXID() { return SFX_SCALE_ID; } + + protected : + + LTRotation m_rRot; + + LTVector m_vPos; + LTVector m_vVel; + LTVector m_vInitialScale; + LTVector m_vFinalScale; + LTVector m_vInitialColor; + LTVector m_vFinalColor; + + LTFLOAT m_fLifeTime; + LTFLOAT m_fDelayTime; + LTFLOAT m_fElapsedTime; + LTFLOAT m_fInitialAlpha; + LTFLOAT m_fFinalAlpha; + LTFLOAT m_fRotateVel; + + const char* m_pFilename; + + CButeListReader* m_pRenderStyleReader; + CButeListReader* m_pSkinReader; + + uint32 m_dwFlags; + LTBOOL m_bUseUserColors; + LTBOOL m_bLoop; + LTBOOL m_bAdditive; + LTBOOL m_bMultiply; + LTBOOL m_bRotate; + LTBOOL m_bFaceCamera; + LTBOOL m_bPausable; + uint8 m_nRotationAxis; + + int m_nRotDir; + unsigned short m_nType; + LTFLOAT m_fStartTime; + LTFLOAT m_fEndTime; + MovingObject m_movingObj; + + virtual void UpdateAlpha(LTFLOAT fTimeDelta); + virtual void UpdateScale(LTFLOAT fTimeDelta); + virtual void UpdatePos(LTFLOAT fTimeDelta); + virtual void UpdateRot(LTFLOAT fTimeDelta); +}; + +#endif // __BASE_SCALE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BaseScreen.cpp b/Jack/ClientShellDLL/BaseScreen.cpp new file mode 100644 index 00000000..4d3a58f2 --- /dev/null +++ b/Jack/ClientShellDLL/BaseScreen.cpp @@ -0,0 +1,2214 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BaseScreen.cpp +// +// PURPOSE : Base class for interface screens +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BaseScreen.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "SoundMgr.h" +#include "VKDefs.h" +#include "GameClientShell.h" +#include "TransitionFXMgr.h" +#include "FXButeMgr.h" + +LTBOOL CBaseScreen::s_bReadLayout = LTFALSE; +LTRect CBaseScreen::s_HelpRect; +uint8 CBaseScreen::s_HelpSize; +uint16 CBaseScreen::s_HelpWidth; +LTIntPt CBaseScreen::s_BackPos; +LTIntPt CBaseScreen::s_NextPos; +LTVector CBaseScreen::s_vPos; +LTVector CBaseScreen::s_vU; +LTVector CBaseScreen::s_vR; +LTVector CBaseScreen::s_vF; +LTRotation CBaseScreen::s_rRot; + + +CLTGUIButton CBaseScreen::s_BackArrow; + +CUIFormattedPolyString* CBaseScreen::s_pHelpStr = LTNULL; + +namespace +{ + LTIntPt offscreen(-64,-64); + + typedef std::map ScaleFXMap; + ScaleFXMap g_ScaleFXMap; + bool bEditSFXMode = false; + CBaseScaleFX* pEditSFX = NULL; + + LTVector vSFXPos; + LTVector vSFXScale; + float fEditDelta = 1.0f; +} + +void EditFXFn(int argc, char **argv) +{ + if(argc != 1) + { + g_pLTClient->CPrint("EditFX "); + return; +} + + char szName[128]; + SAFE_STRCPY(szName,argv[0]); + _strupr(szName); + ScaleFXMap::iterator iter = g_ScaleFXMap.find(szName); + if (iter == g_ScaleFXMap.end()) + { + g_pLTClient->CPrint("Could not find ScaleFX %s",argv[0]); + return; + } + + g_pLTClient->CPrint("Entering SFX edit mode for %s",argv[0]); + pEditSFX = (*iter).second; + + HOBJECT hObj = pEditSFX->GetObject(); + + g_pLTClient->GetObjectPos(hObj,&vSFXPos); + g_pLTClient->GetObjectScale(hObj,&vSFXScale); + bEditSFXMode = true; + fEditDelta = 1.0f; +} + +void HandleEditKey(int key); + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CBaseScreen::CBaseScreen() +{ + m_bInit = LTFALSE; + m_bBuilt = LTFALSE; + m_bBack = LTFALSE; + m_bHaveFocus = LTFALSE; + m_bHaveLights = LTFALSE; + + m_pScreenMgr = LTNULL; + + m_pTitleString = LTNULL; + m_TitlePos.x = 0; + m_TitlePos.y = 0; + m_TitleFont = 0; + m_TitleSize = 32; + m_TitleColor = argbBlack; + + m_nScreenID = SCREEN_ID_NONE; + m_nContinueID = SCREEN_ID_NONE; + + m_dwCurrHelpID = 0; + + // Array of controls that this screen owns + m_controlArray.reserve(5); + + m_nSelection = kNoSelection; + m_nOldSelection = kNoSelection; + m_pCaptureCtrl = LTNULL; + m_nRMouseDownItemSel = kNoSelection; + m_nRMouseDownItemSel = kNoSelection; + + m_nItemSpacing = 0; + + m_SelectedColor = argbWhite; + m_NonSelectedColor = argbBlack; + m_DisabledColor = argbGray; + + m_pNext = LTNULL; + + m_nNumAttachments = 0; + + m_fLastScale = 1.0f; + m_bSelectFXCenter = LTTRUE; + + m_bVisited = LTFALSE; + +} + +CBaseScreen::~CBaseScreen() +{ + if ( m_bInit ) + { + Term(); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::Init +// +// PURPOSE: initialize the screen +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScreen::Init(int nScreenID) +{ + if (!s_bReadLayout) + { + s_bReadLayout = LTTRUE; + s_HelpRect = g_pLayoutMgr->GetHelpRect(); + s_HelpSize = g_pLayoutMgr->GetHelpSize(); + s_HelpWidth = (uint16)(s_HelpRect.right - s_HelpRect.left); + s_BackPos = g_pLayoutMgr->GetBackPos(); + s_NextPos = g_pLayoutMgr->GetNextPos(); + + LTIntPt arrowBackPos = g_pLayoutMgr->GetArrowBackPos(); + + char szTex[128]; + g_pLayoutMgr->GetArrowBackTex(szTex,128); + HTEXTURE hBack = g_pInterfaceResMgr->GetTexture(szTex); + + g_pLayoutMgr->GetArrowBackTexH(szTex,128); + HTEXTURE hBackH = g_pInterfaceResMgr->GetTexture(szTex); + + s_BackArrow.Create(CMD_BACK,LTNULL,hBack,hBackH); + s_BackArrow.SetBasePos(arrowBackPos); + s_BackArrow.SetScale(g_pInterfaceResMgr->GetXRatio()); + + g_pLTClient->RegisterConsoleProgram("EditFX", EditFXFn); + + } + + m_nScreenID=nScreenID; + m_pScreenMgr = g_pInterfaceMgr->GetScreenMgr(); + + SetTitleColor(argbWhite); + + //set up layout variables + SetTitlePos(g_pLayoutMgr->GetScreenTitlePos((eScreenID)nScreenID)); + SetTitleFont(g_pLayoutMgr->GetScreenTitleFont((eScreenID)nScreenID)); + SetTitleSize(g_pLayoutMgr->GetScreenTitleSize((eScreenID)nScreenID)); + + m_PageRect = g_pLayoutMgr->GetScreenPageRect((eScreenID)nScreenID); + + SetItemSpacing(g_pLayoutMgr->GetScreenItemSpacing((eScreenID)nScreenID)); + + m_nAlignment = g_pLayoutMgr->GetScreenItemAlign((eScreenID)nScreenID); + + + m_SelectedColor = g_pLayoutMgr->GetScreenSelectedColor((eScreenID)nScreenID); + m_NonSelectedColor = g_pLayoutMgr->GetScreenNonSelectedColor((eScreenID)nScreenID); + m_DisabledColor = g_pLayoutMgr->GetScreenDisabledColor((eScreenID)nScreenID); + + if (!s_pHelpStr) + { + + uint16 nWidth = (uint16)( (LTFLOAT)s_HelpWidth * g_pInterfaceResMgr->GetXRatio()); + float helpX = (float)s_HelpRect.left * g_pInterfaceResMgr->GetXRatio(); + float helpY = (float)s_HelpRect.top * g_pInterfaceResMgr->GetYRatio(); + uint8 nFont = g_pLayoutMgr->GetHelpFont(); + uint8 nSize = (uint8)((LTFLOAT)s_HelpSize * g_pInterfaceResMgr->GetXRatio()); + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + s_pHelpStr = g_pFontManager->CreateFormattedPolyString(pFont,"",helpX,helpY); + s_pHelpStr->SetCharScreenHeight(nSize); + s_pHelpStr->SetColor(argbWhite); + s_pHelpStr->SetWrapWidth(nWidth); + + } + + m_nextPos.x = GetPageLeft(); + m_nextPos.y = GetPageTop(); + + + char szAttName[30]; + char szIntroFXName[128] = ""; + char szShortFXName[128] = ""; + char szLoopFXName[128] = ""; + int nFXNum = 0; + bool bFound = false; + do + { + szIntroFXName[0] = 0; + szShortFXName[0] = 0; + szLoopFXName[0] = 0; + bFound = false; + + sprintf(szAttName,"IntroFX%d",nFXNum); + if (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szIntroFXName,128); + } + sprintf(szAttName,"ShortIntroFX%d",nFXNum); + if (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szShortFXName,128); + } + sprintf(szAttName,"LoopFX%d",nFXNum); + if (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szLoopFXName,128); + } + if (strlen(szIntroFXName) || strlen(szShortFXName) || strlen(szLoopFXName)) + { + nFXNum++; + bFound = true; + + CChainedFX *pChain = debug_new(CChainedFX); + pChain->Init(szIntroFXName,szShortFXName,szLoopFXName); + m_Chains.push_back(pChain); + } + + } while (bFound); + + + m_bInit=TRUE; + return LTTRUE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::Term +// +// PURPOSE: Terminate the screen +// +// ----------------------------------------------------------------------- // + +void CBaseScreen::Term() +{ + RemoveAll(); + + // Free the title string + if (m_pTitleString) + { + g_pFontManager->DestroyPolyString(m_pTitleString); + m_pTitleString=LTNULL; + } + + if (s_pHelpStr) + { + g_pFontManager->DestroyPolyString(s_pHelpStr); + s_pHelpStr=LTNULL; + } + + ChainFXList::iterator iter = m_Chains.begin(); + while (iter != m_Chains.end()) + { + debug_delete(*iter); + iter++; + } + m_Chains.clear(); + + + m_bInit=FALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::Escape +// +// PURPOSE: back out of the screen +// +// ----------------------------------------------------------------------- // + +void CBaseScreen::Escape() +{ + if (!m_pScreenMgr->PreviousScreen()) + { + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (g_pPlayerMgr->IsPlayerInWorld() && + (!g_pPlayerMgr->IsPlayerDead() || IsMultiplayerGame( )) ) + { + g_pInterfaceMgr->ChangeState(GS_PLAYING); + } + } + else + { + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::Render +// +// PURPOSE: Renders the screen to a surface +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScreen::Render(HSURFACE hDestSurf) +{ + if (!hDestSurf) + { + return LTFALSE; + } + + LTIntPt tmpPos; + + // Render the title + if (m_pTitleString) + { + float px,py; + m_pTitleString->GetPosition(&px,&py); + px += 2.0f; + py += 2.0f; + m_pTitleString->SetColor(0xBF000000); + m_pTitleString->SetPosition(px,py); + m_pTitleString->Render(); + + px -= 2.0f; + py -= 2.0f; + m_pTitleString->SetColor(m_TitleColor); + m_pTitleString->SetPosition(px,py); + m_pTitleString->Render(); + } + + + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->Render (); + } + + if (s_pHelpStr) + { + float x; + float y; + s_pHelpStr->GetPosition(&x,&y); + + //drop shadow + s_pHelpStr->SetPosition(x+2.0f,y+2.0f); + s_pHelpStr->SetColor(argbBlack); + s_pHelpStr->Render(); + + s_pHelpStr->SetPosition(x,y); + s_pHelpStr->SetColor(argbWhite); + s_pHelpStr->Render(); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::CreateTitle +// +// PURPOSE: Creates the string to display as the screens title +// +// ----------------------------------------------------------------------- // + + +LTBOOL CBaseScreen::CreateTitle(char *lpszTitle) +{ + if (m_pTitleString) + { + m_pTitleString->SetText(lpszTitle); + } + else + { + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFont); + LTIntPt pos = m_TitlePos; + g_pInterfaceResMgr->ConvertScreenPos(pos); + m_pTitleString = g_pFontManager->CreatePolyString(pFont,lpszTitle,(float)pos.x,(float)pos.y); + + if (!m_pTitleString) + return LTFALSE; + + uint8 nFontSize = (uint8)((LTFLOAT)m_TitleSize * g_pInterfaceResMgr->GetXRatio()); + m_pTitleString->SetCharScreenHeight(nFontSize); + m_pTitleString->SetColor(m_TitleColor); + + + } + + return LTTRUE; + +} + +LTBOOL CBaseScreen::CreateTitle(int nStringID) +{ + + LTBOOL created = CreateTitle(LoadTempString(nStringID)); + + return created; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::Build +// +// PURPOSE: Construct the basic screen elements +// +// ----------------------------------------------------------------------- // + +LTBOOL CBaseScreen::Build() +{ + m_bBuilt=LTTRUE; + + UseBack(LTTRUE); + + return TRUE; +} + +// Handles a user entered character +LTBOOL CBaseScreen::HandleChar(unsigned char c) +{ + LTBOOL handled = LTFALSE; + + if (m_pCaptureCtrl) + { + if (m_pCaptureCtrl->HandleChar(c)) + handled = LTTRUE; + } + return handled; +} + + +// Handles a key press. Returns FALSE if the key was not processed through this method. +// Left, Up, Down, Right, and Enter are automatically passed through OnUp(), OnDown(), etc. +LTBOOL CBaseScreen::HandleKeyDown(int key, int rep) +{ + LTBOOL handled = LTFALSE; + + if (bEditSFXMode) + { + HandleEditKey(key); + return LTTRUE; + } + + + switch (key) + { + case VK_LEFT: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->OnLeft(); + else + handled = OnLeft(); + break; + } + case VK_RIGHT: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->OnRight(); + else + handled = OnRight(); + break; + } + case VK_UP: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->OnUp(); + else + handled = OnUp(); + break; + } + case VK_DOWN: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->OnDown(); + else + handled = OnDown(); + break; + } + case VK_RETURN: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->OnEnter(); + else + handled = OnEnter(); + break; + } + default: + { + if (m_pCaptureCtrl) + handled = m_pCaptureCtrl->HandleKeyDown(key,rep); + else + { + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + { + handled = pCtrl->HandleKeyDown(key,rep); + if (handled && (key == VK_NEXT || key == VK_PRIOR)) + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + } + else + handled = LTFALSE; + } + break; + } + } + + // Handled the key + return handled; +} + + +/******************************************************************/ + + +/******************************************************************/ + +LTBOOL CBaseScreen::OnUp() +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnUp()) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + UpdateHelpText(); + return LTTRUE; + } + + uint16 sel = m_nSelection; + return (sel != PreviousSelection()); +} + +/******************************************************************/ + +LTBOOL CBaseScreen::OnDown() +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnDown()) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + UpdateHelpText(); + return LTTRUE; + } + + uint16 sel = m_nSelection; + return (sel != NextSelection()); +} + +/******************************************************************/ + +LTBOOL CBaseScreen::OnLeft() +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnLeft(); + if (handled) + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return handled; +} + + +/******************************************************************/ + +LTBOOL CBaseScreen::OnRight() +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnRight(); + if (handled) + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return handled; +} + + +/******************************************************************/ + +LTBOOL CBaseScreen::OnEnter() +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + { + handled = pCtrl->OnEnter(); + if (handled) + { + if (pCtrl == &s_BackArrow || pCtrl == m_pNext) + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + else + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + } + return handled; +} + + +uint16 CBaseScreen::NextSelection() +{ + uint16 select = m_nSelection; + if (select == kNoSelection) + select = m_controlArray.size()-1; + uint16 oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + select++; + if (select >= m_controlArray.size()) + { + select = 0; + } + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nSelection; + + return SetSelection(select); + +} + +uint16 CBaseScreen::PreviousSelection() +{ + uint16 select = m_nSelection; + if (select == kNoSelection) + select = 0; + uint16 oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + if (select == 0) + { + select = m_controlArray.size()-1; + } + else + select--; + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nSelection; + + return SetSelection(select); + +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnLButtonDown(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + + // Select the control + SetSelection(nControlIndex); + + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + m_nLMouseDownItemSel=nControlIndex; + return pCtrl->OnLButtonDown(x,y); + + } + else + m_nLMouseDownItemSel=kNoSelection; + + return LTFALSE; +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnLButtonUp(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + // If the mouse is over the same control now as it was when the down message was called + // then send the "enter" message to the control. + if (nControlIndex == m_nLMouseDownItemSel) + { + if (pCtrl->IsEnabled() ) + { + SetSelection(nControlIndex); + LTBOOL bHandled = pCtrl->OnLButtonUp(x,y); + if (bHandled) + { + if (pCtrl == &s_BackArrow || pCtrl == m_pNext) + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + else + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + return bHandled; + + } + } + } + else + { + m_nLMouseDownItemSel= kNoSelection; + } + return LTFALSE; +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnRButtonDown(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + + // Select the control + SetSelection(nControlIndex); + + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + m_nRMouseDownItemSel=nControlIndex; + + return pCtrl->OnRButtonDown(x,y); + } + else + m_nRMouseDownItemSel=kNoSelection; + + return LTFALSE; +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnRButtonUp(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + + // If the mouse is over the same control now as it was when the down message was called + // then send the "left" message to the control. + if (nControlIndex == m_nRMouseDownItemSel) + { + if (pCtrl->IsEnabled()) + { + SetSelection(nControlIndex); + LTBOOL bHandled = pCtrl->OnRButtonUp(x,y); + if (pCtrl == &s_BackArrow || pCtrl == m_pNext) + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + else + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return bHandled; + } + } + } + else + { + m_nRMouseDownItemSel= kNoSelection; + } + return LTFALSE; +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnLButtonDblClick(int x, int y) +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + + if (pCtrl) + return pCtrl->OnLButtonDblClick(x, y); + else + return LTFALSE; +} + +/******************************************************************/ +LTBOOL CBaseScreen::OnRButtonDblClick(int x, int y) +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (m_pCaptureCtrl && pCtrl != m_pCaptureCtrl) + return LTFALSE; + + if (pCtrl) + return pCtrl->OnRButtonDblClick(x, y); + else + return LTFALSE; +} + + +void CBaseScreen::GetHelpString(uint32 dwHelpId, uint16 nControlIndex, char *buffer, int bufLen) +{ + LoadString(dwHelpId,buffer,bufLen); +} + + +/******************************************************************/ +LTBOOL CBaseScreen::OnMouseMove(int x, int y) +{ + uint16 nControlUnderPoint=kNoSelection; + LTBOOL onCtrl = GetControlUnderPoint(x,y,&nControlUnderPoint); + if (onCtrl) + { + CLTGUICtrl* pCtrl = GetControl(nControlUnderPoint); + if (m_pCaptureCtrl && m_pCaptureCtrl != pCtrl) + return LTFALSE; + + if (pCtrl->OnMouseMove(x,y)) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + UpdateHelpText(); + } + } + else if (m_pCaptureCtrl) + return LTFALSE; + + if (onCtrl) + { + if (GetSelection() != nControlUnderPoint) + { + + if (GetControl(nControlUnderPoint)->IsEnabled()) + { + SetSelection(nControlUnderPoint); + } + } + return LTTRUE; + } + return LTFALSE; +} + +uint16 CBaseScreen::SetSelection(uint16 select, LTBOOL bFindSelectable) +{ + if (select == m_nSelection) return select; + + int nOldSelect=m_nSelection; + + if (select == kNoSelection) + { + if (nOldSelect != kNoSelection) + { + GetControl(nOldSelect)->Select(LTFALSE); + OnSelectionChange(); + } + m_nOldSelection = m_nSelection; + m_nSelection = kNoSelection; + UpdateHelpText(); + return kNoSelection; + } + + + CLTGUICtrl *pSelCtrl; + + + if (select >= 0) + { + if (select >= m_controlArray.size()) + select = m_controlArray.size()-1; + } + + + pSelCtrl = GetControl(select); + if (!pSelCtrl) + { + UpdateHelpText(); + return nOldSelect; + } + //check to see if we can select this item + if (!pSelCtrl->IsEnabled()) + { + //if we don't need to find a selectable item return + if (!bFindSelectable) + { + UpdateHelpText(); + return nOldSelect; + } + + //keep looking until we run out of on screen items or find a selectable one + while (pSelCtrl && !pSelCtrl->IsEnabled()) + { + select++; + pSelCtrl = GetControl(select); + } + if (!pSelCtrl || !pSelCtrl->IsEnabled()) + { + UpdateHelpText(); + return nOldSelect; + } + } + + + if (nOldSelect != kNoSelection) + { + GetControl(nOldSelect)->Select(LTFALSE); + } + + m_nOldSelection = m_nSelection; + m_nSelection = select; + + if (m_nSelection == kNoSelection) + { + UpdateHelpText(); + return nOldSelect; + } + + LTIntPt pos = pSelCtrl->GetPos(); + if (m_bSelectFXCenter) + pos.x += (pSelCtrl->GetWidth() / 2); + pos.y += (pSelCtrl->GetHeight() / 2); + g_pInterfaceMgr->ShowSelectFX(pos); + pSelCtrl->Select(LTTRUE); + + if (m_nSelection != nOldSelect) + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + + + + UpdateHelpText(); + OnSelectionChange(); + return m_nSelection; +} + + +// Gets the index of the control that is under the specific screen point. +// Returns FALSE if there isn't one under the specified point. +LTBOOL CBaseScreen::GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex) +{ + _ASSERT(pnIndex); + + if (m_pCaptureCtrl && m_pCaptureCtrl->IsOnMe(xPos,yPos)) + { + *pnIndex = GetIndex(m_pCaptureCtrl); + return LTTRUE; + } + + + // See if the user clicked on any of the controls. + for (uint16 i=0; i < m_controlArray.size() ; i++) + { + //start with last control + int ndx = (m_controlArray.size()-1) - i; + + // Check to see if the click is in the bounding box for the control + if (m_controlArray[i]->IsOnMe(xPos,yPos) && m_controlArray[i]->IsEnabled()) + { + *pnIndex=i; + + return LTTRUE; + } + } + + return LTFALSE; +} + +// Return a control at a specific index +CLTGUICtrl *CBaseScreen::GetControl ( uint16 nIndex ) +{ + if (nIndex < m_controlArray.size() ) + return m_controlArray[nIndex]; + return LTNULL; +} + + + + + +void CBaseScreen::RemoveAll(LTBOOL bDelete) +{ + RemoveControl(&s_BackArrow,LTFALSE); + // Terminate the ctrls + if (bDelete) + { + for (uint16 i=0; i < m_controlArray.size(); i++) + { + m_controlArray[i]->Destroy(); + debug_delete(m_controlArray[i]); + } + } + m_controlArray.clear(); + if (m_nSelection >= 0) + m_nSelection = kNoSelection; + + m_nextPos.x = GetPageLeft(); + m_nextPos.y = GetPageTop(); + +} + +uint16 CBaseScreen::AddControl(CLTGUICtrl* pCtrl) +{ + m_controlArray.push_back(pCtrl); + uint16 num = m_controlArray.size(); + if (num == m_nSelection+1) + pCtrl->Select(LTTRUE); + if (num > 0) + return num-1; + else + return kNoSelection; + +} + + +// Calls UpdateData on each control in the menu +void CBaseScreen::UpdateData(LTBOOL bSaveAndValidate) +{ + for (uint16 i=0; i < m_controlArray.size(); i++) + { + m_controlArray[i]->UpdateData(bSaveAndValidate); + } +} + + + +CLTGUITextCtrl* CBaseScreen::CreateTextItem(int stringID, uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUITextCtrl* pCtrl=CreateTextItem(LoadTempString(stringID), commandID, helpID, pos, bFixed, nFont); + return pCtrl; + +} + +CLTGUITextCtrl* CBaseScreen::CreateTextItem(char *pString, uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUITextCtrl* pCtrl=debug_new(CLTGUITextCtrl); + + if (nFont < 0) + { + nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + } + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + + if (!pCtrl->Create(pString, commandID, helpID, pFont, nFontSize, this)) + { + debug_delete(pCtrl); + return LTNULL; + } + + if (pos.x < 0 && pos.y < 0) + { + pos = m_nextPos; + } + else + { + m_nextPos = pos; + } + pCtrl->SetBasePos(pos); + + m_nextPos.y += (pCtrl->GetBaseHeight() + m_nItemSpacing); + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + + if (bFixed) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pCtrl; + +} + + +CLTGUIListCtrl* CBaseScreen::CreateList(LTIntPt pos, uint16 nHeight, LTBOOL bUseArrows, uint16 nArrowOffset) +{ + + CLTGUIListCtrl* pList=debug_new(CLTGUIListCtrl); + if (pList->Create(nHeight)) + { + pList->SetBasePos(pos); + pList->SetScale(g_pInterfaceResMgr->GetXRatio()); + if (bUseArrows) + { + HTEXTURE hUp = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup.dtx"); + HTEXTURE hUpH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup_h.dtx"); + HTEXTURE hDown = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn.dtx"); + HTEXTURE hDownH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn_h.dtx"); + pList->UseArrows(nArrowOffset,1.0f,hUp,hUpH,hDown,hDownH); + } + pList->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pList; +} + + + +CLTGUICycleCtrl* CBaseScreen::CreateCycle(int stringID, int helpID, int nHeaderWidth, uint8 *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUICycleCtrl* pCtrl=CreateCycle(LoadTempString(stringID), helpID, nHeaderWidth, pnValue, pos, bFixed, nFont); + + return pCtrl; + +} + +CLTGUICycleCtrl* CBaseScreen::CreateCycle(char *pString, int helpID, int nHeaderWidth, uint8 *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUICycleCtrl* pCtrl=debug_new(CLTGUICycleCtrl); + + if (nFont < 0) + { + nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + } + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + + if (!pCtrl->Create(pString, helpID, pFont, nFontSize, nHeaderWidth, pnValue)) + { + debug_delete(pCtrl); + return LTNULL; + } + + if (pos.x < 0 && pos.y < 0) + { + pos = m_nextPos; + } + else + { + m_nextPos = pos; + } + pCtrl->SetBasePos(pos); + + m_nextPos.y += (pCtrl->GetBaseHeight() + m_nItemSpacing); + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + + if (bFixed) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pCtrl; + +} + + + + + +CLTGUIToggle* CBaseScreen::CreateToggle(int stringID, int helpID, int nHeaderWidth, LTBOOL *pbValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + + CLTGUIToggle* pCtrl=CreateToggle(LoadTempString(stringID), helpID, nHeaderWidth, pbValue, pos, bFixed, nFont); + + return pCtrl; + +} + +CLTGUIToggle* CBaseScreen::CreateToggle(char *pString, int helpID, int nHeaderWidth, LTBOOL *pbValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUIToggle* pCtrl=debug_new(CLTGUIToggle); + + if (nFont < 0) + { + nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + } + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + + if (!pCtrl->Create(pString, helpID, pFont, nFontSize, nHeaderWidth, pbValue)) + { + debug_delete(pCtrl); + return LTNULL; + } + + if (pos.x < 0 && pos.y < 0) + { + pos = m_nextPos; + } + else + { + m_nextPos = pos; + } + pCtrl->SetBasePos(pos); + + m_nextPos.y += (pCtrl->GetBaseHeight() + m_nItemSpacing); + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + pCtrl->SetOnString(LoadTempString(IDS_ON)); + pCtrl->SetOffString(LoadTempString(IDS_OFF)); + + if (bFixed) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pCtrl; + +} + + +CLTGUISlider* CBaseScreen::CreateSlider(int stringID, int helpID, int nHeaderWidth, int nBarWidth, + int nBarHeight, int *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUISlider* pCtrl=CreateSlider(LoadTempString(stringID), helpID, nHeaderWidth, nBarWidth, nBarHeight, pnValue, pos, bFixed, nFont); + + return pCtrl; + +} + +CLTGUISlider* CBaseScreen::CreateSlider(char *pString, int helpID, int nHeaderWidth, int nBarWidth, + int nBarHeight, int *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUISlider* pCtrl=debug_new(CLTGUISlider); + + if (nFont < 0) + { + nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + } + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + char szTex[128]; + g_pLayoutMgr->GetSliderTex(szTex,128); + HTEXTURE hBar = g_pInterfaceResMgr->GetTexture(szTex); + + if (nBarHeight < 0) + { + uint32 w,h; + g_pTexInterface->GetTextureDims(hBar,w,h); + nBarHeight = h / 3; + + } + + + if (!pCtrl->Create(pString, helpID, pFont, nFontSize, hBar, nHeaderWidth, nBarWidth, nBarHeight, pnValue)) + { + debug_delete(pCtrl); + return LTNULL; + } + + if (pos.x < 0 && pos.y < 0) + { + pos = m_nextPos; + } + else + { + m_nextPos = pos; + } + pCtrl->SetBasePos(pos); + + m_nextPos.y += (pCtrl->GetBaseHeight() + m_nItemSpacing); + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + + if (bFixed) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pCtrl; + +} + + +CLTGUIColumnCtrl* CBaseScreen::CreateColumnCtrl(uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUIColumnCtrl* pCtrl=debug_new(CLTGUIColumnCtrl); + + if (nFont < 0) + { + nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + } + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + + if (!pCtrl->Create(commandID, helpID, pFont, nFontSize, this)) + { + debug_delete(pCtrl); + return LTNULL; + } + + if (pos.x < 0 && pos.y < 0) + { + pos = m_nextPos; + } + else + { + m_nextPos = pos; + } + pCtrl->SetBasePos(pos); + + m_nextPos.y += (nFontSize + m_nItemSpacing); + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + + if (bFixed) + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->Enable(LTFALSE); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + + return pCtrl; + +} + + + +void CBaseScreen::UseBack(LTBOOL bBack,LTBOOL bOK,LTBOOL bReturn) +{ + if (bBack) + { + CreateBack(bOK,bReturn); + + if (GetIndex(&s_BackArrow) >= m_controlArray.size()) + AddControl(&s_BackArrow); + } + else + { + RemoveControl(&s_BackArrow,LTFALSE); + } + + m_bBack = bBack; +} + + +void CBaseScreen::CreateBack(LTBOOL bOK, LTBOOL bReturn) +{ + + int nStr = 0; + int nHelp = 0; + if (bOK) + { + nStr = IDS_OK; + nHelp = IDS_HELP_OK; + } + else + { + nStr = IDS_BACK; + nHelp = IDS_HELP_BACK; + } + uint8 nFont = g_pLayoutMgr->GetBackFont(); + uint8 nFontSize = g_pLayoutMgr->GetBackSize(); + + s_BackArrow.SetFont(g_pInterfaceResMgr->GetFont(nFont),nFontSize); + s_BackArrow.SetHelpID(nHelp); + s_BackArrow.SetText(LoadTempString(nStr),LTTRUE); + s_BackArrow.SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + + if (bReturn) + s_BackArrow.SetHelpID(IDS_HELP_RETURN); + else if (bOK) + s_BackArrow.SetHelpID(IDS_HELP_OK); + else + s_BackArrow.SetHelpID(IDS_HELP_BACK); + + s_BackArrow.SetCommandHandler(this); + +} + + +void CBaseScreen::RemoveControl(CLTGUICtrl* pControl,LTBOOL bDelete) +{ + if (!pControl) return; + + ControlArray::iterator iter = m_controlArray.begin(); + + while (iter != m_controlArray.end() && (*iter) != pControl) + iter++; + + if (iter != m_controlArray.end()) + { + m_controlArray.erase(iter); + } + + if (bDelete && pControl != &s_BackArrow) + { + debug_delete(pControl); + } + + +} + +uint32 CBaseScreen::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_BACK: + { + m_pScreenMgr->EscapeCurrentScreen(); + break; + } + case CMD_MAIN: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_MAIN); + break; + } + case CMD_CONTINUE: + { + if (m_nContinueID != SCREEN_ID_NONE) + { + m_pScreenMgr->SetCurrentScreen((eScreenID)m_nContinueID); + return 1; + } + else + return 0; + } break; + + default: + return 0; + } + + return 1; +} + + +void CBaseScreen::ForceMouseUpdate() +{ +// SetSelection(kNoSelection); + m_dwCurrHelpID = 0; + LTIntPt cPos = g_pInterfaceMgr->GetCursorPos(); + OnMouseMove(cPos.x,cPos.y); +} + + +// This is called when the screen gets or loses focus +void CBaseScreen::OnFocus(LTBOOL bFocus) +{ + m_pCaptureCtrl = LTNULL; + + bEditSFXMode = false; + + if (bFocus) + { + if (m_fLastScale != g_pInterfaceResMgr->GetXRatio()) + { + ScreenDimsChanged(); + } + m_nOldSelection = kNoSelection; + if (m_nSelection == kNoSelection) + { + if (m_pNext) + SetSelection(GetIndex(m_pNext)); + else + { + SetSelection(0,LTTRUE); + if (m_nSelection == kNoSelection && m_bBack) + { + SetSelection(GetIndex(&s_BackArrow)); + } + + } + } + + + ForceMouseUpdate(); + UpdateHelpText(); + m_pScreenMgr->GetTransitionFXMgr()->EnterScreen(m_nScreenID); + CreateInterfaceSFX(); + m_bHaveFocus = LTTRUE; + m_bVisited = LTTRUE; //set this last + } + else + { + SetSelection(kNoSelection); + m_pScreenMgr->GetTransitionFXMgr()->ExitScreen(m_nScreenID); + RemoveInterfaceSFX(); + m_bHaveFocus = LTFALSE; + + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseScreen::CreateInterfaceSFX +// +// PURPOSE: Create the SFX to render on this screen +// +// ----------------------------------------------------------------------- // + +void CBaseScreen::CreateInterfaceSFX() +{ + + int n = 0; + char szAttName[30]; + char szFXName[128]; + + m_bHaveLights = LTFALSE; + + + HOBJECT hCamera = g_pInterfaceMgr->GetInterfaceCamera(); + if (!hCamera) return; + + + g_pLTClient->GetObjectPos(hCamera, &s_vPos); + g_pLTClient->GetObjectRotation(hCamera, &s_rRot); + s_vU = s_rRot.Up(); + s_vR = s_rRot.Right(); + s_vF = s_rRot.Forward(); + + + + sprintf(szAttName,"Light%d",n); + while (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CreateLightFX(szFXName); + } + + n++; + sprintf(szAttName,"Light%d",n); + + } + + + n = 0; + g_ScaleFXMap.clear(); + sprintf(szAttName,"ScaleName%d",n); + while (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CBaseScaleFX *pSFX = CreateScaleFX(szFXName); + } + + n++; + sprintf(szAttName,"ScaleName%d",n); + + } + + + INT_CHAR *pChar = g_pLayoutMgr->GetScreenCharacter((eScreenID)m_nScreenID); + if (pChar) + { + CreateCharFX(pChar); + if (m_CharSFX.GetObject()) + { + int reqID[MAX_INT_ATTACHMENTS]; + int numReq = g_pAttachButeMgr->GetRequirementIDs(pChar->szModel,reqID,MAX_INT_ATTACHMENTS); + int i; + for (i = 0; i < numReq; i++) + { + INT_ATTACH acs; + acs.fScale = pChar->fScale; + acs.nAttachmentID = g_pAttachButeMgr->GetRequirementAttachment(reqID[i]); + g_pAttachButeMgr->GetRequirementSocket(reqID[i],acs.szSocket,sizeof(acs.szSocket)); + + CreateAttachFX(&acs); + } + + int numAtt = g_pLayoutMgr->GetScreenNumAttachments((eScreenID)m_nScreenID); + for (i = 0; i < numAtt; i++) + { + char szTemp[128]; + char *pName = LTNULL; + char *pSocket = LTNULL; + g_pLayoutMgr->GetScreenAttachment( (eScreenID)m_nScreenID, i, szTemp, 128); + + pName = strtok(szTemp,";"); + pSocket = strtok(NULL,";"); + + INT_ATTACH acs; + + acs.fScale = pChar->fScale; + acs.nAttachmentID = g_pAttachButeMgr->GetAttachmentIDByName(pName); + SAFE_STRCPY(acs.szSocket,pSocket); + + CreateAttachFX(&acs); + } + + } + } + + szFXName[0] = 0; + g_pLayoutMgr->GetScreenMouseFX((eScreenID)m_nScreenID,szFXName,sizeof(szFXName)); + g_pInterfaceMgr->SetMouseFX(szFXName); + + szFXName[0] = 0; + g_pLayoutMgr->GetScreenSelectFX((eScreenID)m_nScreenID,szFXName,sizeof(szFXName)); + m_bSelectFXCenter = g_pLayoutMgr->GetScreenSelectFXCenter((eScreenID)m_nScreenID); + g_pInterfaceMgr->SetSelectFX(szFXName); + + n = 0; + sprintf(szAttName,"FX%d",n); + while (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,szAttName)) + { + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,szAttName,szFXName,128); + if (strlen(szFXName)) + { + INT_FX* pFX = g_pLayoutMgr->GetFX(szFXName); + if (pFX) + { + g_pInterfaceMgr->AddInterfaceFX(LTNULL, pFX->szFXName,pFX->vPos,pFX->bLoop); + } + } + + + n++; + sprintf(szAttName,"FX%d",n); + + } + + if (m_pScreenMgr->GetTransitionFXMgr()->HasTransitionFX()) + { + m_pScreenMgr->GetTransitionFXMgr()->StartTransitionFX(!!m_bVisited); + } + else + { + // ABM 2/7/02 TODO rip these lines out in favor of letting the TransitionFXMgr handle + // all the FX. So take these effects and move their creation into TransitionFXMgr. + // As a first step, take the Start and Update out, and let BaseScreen still create + // them but then pass them to the TransitionFXMgr. As a second step, move their creation + // into TransitionFXMgr as well. + + ChainFXList::iterator iter = m_Chains.begin(); + + while (iter != m_Chains.end()) + { + (*iter)->Start(!!m_bVisited); + iter++; + } + } +} + +void CBaseScreen::RemoveInterfaceSFX() +{ + g_ScaleFXMap.clear(); + for (uint16 i=0; i < m_SFXArray.size(); i++) + { + CSpecialFX *pSFX = m_SFXArray[i]; + g_pInterfaceMgr->RemoveInterfaceSFX(pSFX); + debug_delete(pSFX); + } + m_SFXArray.clear(); + + g_pInterfaceMgr->RemoveInterfaceSFX(&m_CharSFX); + + g_pInterfaceMgr->RemoveInterfaceLights(); + m_bHaveLights = LTFALSE; + + m_CharSFX.Reset(); + m_CharSFX.Term(); + + ClearAttachFX(); + + ChainFXList::iterator iter = m_Chains.begin(); + while (iter != m_Chains.end()) + { + (*iter)->End(); + iter++; + } + + + g_pInterfaceMgr->RemoveInterfaceFX(); + + +} + +void CBaseScreen::ClearAttachFX() +{ + for (int i = 0; i < MAX_INT_ATTACHMENTS; i++) + { + g_pInterfaceMgr->RemoveInterfaceSFX(&m_aAttachment[i].sfx); + m_aAttachment[i].sfx.Reset(); + m_aAttachment[i].sfx.Term(); + m_aAttachment[i].socket = INVALID_MODEL_SOCKET; + } + m_nNumAttachments = 0; + +} + +bool CBaseScreen::UpdateInterfaceSFX() +{ + + for (int i = 0; i < m_nNumAttachments; i++) + { + CBaseScaleFX *pSFX = &m_aAttachment[i].sfx; + + HMODELSOCKET hSocket = m_aAttachment[i].socket; + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_CharSFX.GetObject(), hSocket, transform, LTTRUE) == LT_OK) + { + g_pLTClient->SetObjectPosAndRotation(pSFX->GetObject(), &transform.m_Pos, &transform.m_Rot); + + } + } + + if (m_pScreenMgr->GetTransitionFXMgr()->HasTransitionFX()) + { + m_pScreenMgr->GetTransitionFXMgr()->UpdateTransitionFX(); + } + else + { + // ABM TODO 2/7/02 remove this in favor of letting the TransitionFXMgr handle all details. + ChainFXList::iterator iter = m_Chains.begin(); + while (iter != m_Chains.end()) + { + (*iter)->Update(); + iter++; + } + } + + return true; +} + + +uint16 CBaseScreen::GetIndex(CLTGUICtrl* pCtrl) +{ + ControlArray::iterator iter = m_controlArray.begin(); + + uint16 dwIndex = 0; + while (iter != m_controlArray.end() && (*iter) != pCtrl) + { + ++dwIndex; + iter++; + } + if (dwIndex < m_controlArray.size()) + return dwIndex; + return kNoSelection; +} + + +CBaseScaleFX* CBaseScreen::CreateScaleFX(char *szFXName) +{ + CScaleFX* pScaleFX = g_pFXButeMgr->GetScaleFX(szFXName); + if (pScaleFX) + { + pScaleFX->bUseLight = m_bHaveLights; + CBaseScaleFX *pSFX = debug_new(CBaseScaleFX); + g_pFXButeMgr->CreateScaleFX(pScaleFX,s_vPos, s_vF, LTNULL, &s_rRot, pSFX); + m_SFXArray.push_back(pSFX); + g_pInterfaceMgr->AddInterfaceSFX(pSFX, IFX_NORMAL); + + char szTmp[64]; + SAFE_STRCPY(szTmp,szFXName); + _strupr(szTmp); + g_ScaleFXMap[szTmp] = pSFX; + + return pSFX; + } + return NULL; +} +void CBaseScreen::CreateLightFX(char *szFXName) +{ + INT_LIGHT* pLight = g_pLayoutMgr->GetLight(szFXName); + if (pLight) + { +// pScaleFX->bUseLight = LTTRUE; +// CBaseScaleFX *pSFX = debug_new(CBaseScaleFX); +// g_pFXButeMgr->CreateScaleFX(pScaleFX,s_vPos, s_vF, LTNULL, &s_rRot, pSFX); +// m_SFXArray.push_back(pSFX); +// g_pInterfaceMgr->AddInterfaceSFX(pSFX, IFX_NORMAL); + + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_ONLYLIGHTOBJECTS; + + createStruct.m_Pos = s_vPos; + + createStruct.m_Pos += pLight->vPos;; + + HOBJECT hLight = g_pLTClient->CreateObject(&createStruct); + + if (hLight) + { + g_pLTClient->SetLightColor(hLight, pLight->vColor.x, pLight->vColor.y, pLight->vColor.z); + g_pLTClient->SetLightRadius(hLight, pLight->fRadius); + + g_pInterfaceMgr->AddInterfaceLight(hLight); + m_bHaveLights = LTTRUE; + } + + } +} + +void CBaseScreen::CreateCharFX(INT_CHAR *pChar) +{ + if (pChar) + { + + BSCREATESTRUCT bcs; + LTVector vPos, vTemp, vScale(1.0f,1.0f,1.0f); + LTRotation rRot = s_rRot; + + char modName[128]; + + SAFE_STRCPY(modName, pChar->szModel); + + VEC_COPY(vPos,s_vPos); + VEC_SET(vScale,1.0f,1.0f,1.0f); + VEC_MULSCALAR(vScale, vScale, pChar->fScale); + + LTVector vModPos = pChar->vPos; + LTFLOAT fRot = pChar->fRot; + fRot = MATH_PI + DEG2RAD(fRot); + rRot.Rotate(s_vU, fRot); + + VEC_MULSCALAR(vTemp, s_vF, vModPos.z); +// VEC_MULSCALAR(vTemp, vTemp, g_pInterfaceResMgr->GetXRatio()); + VEC_ADD(vPos, vPos, vTemp); + + VEC_MULSCALAR(vTemp, s_vR, vModPos.x); + VEC_ADD(vPos, vPos, vTemp); + + VEC_MULSCALAR(vTemp, s_vU, vModPos.y); + VEC_ADD(vPos, vPos, vTemp); + + VEC_COPY(bcs.vPos, vPos); + bcs.rRot = rRot; + VEC_COPY(bcs.vInitialScale, vScale); + VEC_COPY(bcs.vFinalScale, vScale); + VEC_SET(bcs.vInitialColor, 1.0f, 1.0f, 1.0f); + VEC_SET(bcs.vFinalColor, 1.0f, 1.0f, 1.0f); + bcs.bUseUserColors = LTTRUE; + + bcs.pFilename = modName; + bcs.pSkinReader = &(pChar->blrSkins); + bcs.pRenderStyleReader = &(pChar->blrRenderStyles); + bcs.dwFlags = FLAG_VISIBLE | FLAG_FOGDISABLE;// | FLAG_NOLIGHT; + + bcs.nType = OT_MODEL; + bcs.fInitialAlpha = 0.99f; + bcs.fFinalAlpha = 0.99f; + bcs.fLifeTime = 1000000.0f; + bcs.bLoop = LTTRUE; + + bcs.fMinRotateVel = 1.0f; + bcs.fMaxRotateVel = 1.0f; + + bcs.nMenuLayer = pChar->nMenuLayer; + + + if (m_CharSFX.Init(&bcs)) + { + m_CharSFX.CreateObject(g_pLTClient); + if (m_CharSFX.GetObject()) + { +// g_pLTClient->SetModelAnimation(m_CharSFX.GetObject(), 1); + g_pInterfaceMgr->AddInterfaceSFX(&m_CharSFX, IFX_NORMAL); + } + } + + } +} + +void CBaseScreen::CreateAttachFX(INT_ATTACH *pAttach) +{ + if (m_nNumAttachments < MAX_INT_ATTACHMENTS) + { + + BSCREATESTRUCT bcs; + LTVector vPos, vTemp, vScale(1.0f,1.0f,1.0f); + LTRotation rRot = s_rRot; + + char szModel[128]; +// char szSkin[128]; + + g_pAttachButeMgr->GetAttachmentModel(pAttach->nAttachmentID,szModel,sizeof(szModel)); + +// str = g_pAttachButeMgr->GetAttachmentSkin(pAttach->nAttachmentID); +// strncpy(szSkin, (char*)(LPCSTR)str, 128); + + VEC_SET(vScale,1.0f,1.0f,1.0f); + VEC_MULSCALAR(vScale, vScale, pAttach->fScale); + + VEC_COPY(bcs.vInitialScale, vScale); + VEC_COPY(bcs.vFinalScale, vScale); + VEC_SET(bcs.vInitialColor, 1.0f, 1.0f, 1.0f); + VEC_SET(bcs.vFinalColor, 1.0f, 1.0f, 1.0f); + bcs.bUseUserColors = LTTRUE; + + bcs.pFilename = szModel; +// bcs.pSkin[0] = szSkin; + bcs.dwFlags = FLAG_VISIBLE | FLAG_FOGDISABLE;// | FLAG_NOLIGHT; + +// g_pAttachButeMgr->GetAttachmentProperties(pAttach->nAttachmentID); + + CButeListReader blrSkinReader; + g_pAttachButeMgr->GetAttachmentSkins(pAttach->nAttachmentID, &blrSkinReader); + bcs.pSkinReader = &blrSkinReader; + + CButeListReader blrRenderStyleReader; + g_pAttachButeMgr->GetAttachmentRenderStyles(pAttach->nAttachmentID, &blrRenderStyleReader); + bcs.pRenderStyleReader = &blrRenderStyleReader; + + bcs.fInitialAlpha = 1.0f; + bcs.fFinalAlpha = 1.0f; + bcs.nType = OT_MODEL; + bcs.fLifeTime = 1000000.0f; + bcs.bLoop = LTTRUE; + bcs.nMenuLayer = m_CharSFX.GetMenuLayer(); + + CBaseScaleFX *pSFX = &m_aAttachment[m_nNumAttachments].sfx; + + if (!pSFX->Init(&bcs)) return; + + pSFX->CreateObject(g_pLTClient); + if (!pSFX->GetObject()) return; + + HOBJECT hChar = m_CharSFX.GetObject(); + if (!hChar) return; + if (g_pModelLT->GetSocket(hChar, pAttach->szSocket, m_aAttachment[m_nNumAttachments].socket) != LT_OK) + return; + + g_pInterfaceMgr->AddInterfaceSFX(pSFX, IFX_ATTACH); + m_nNumAttachments++; + } +} + +void CBaseScreen::UpdateHelpText() +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + uint32 dwID = 0; + if (pCtrl) + dwID = pCtrl->GetHelpID(); + + if (!dwID) + { + s_pHelpStr->SetText(""); + m_dwCurrHelpID = 0; + return; + } + + if (dwID != m_dwCurrHelpID) + { + m_dwCurrHelpID = dwID; + + int nWidth = s_HelpRect.right - s_HelpRect.left; + int nHeight = s_HelpRect.bottom - s_HelpRect.top; + + if (m_dwCurrHelpID) + { + char szHelpText[256] = ""; + GetHelpString(m_dwCurrHelpID,m_nSelection,szHelpText,sizeof(szHelpText)); + + if (s_pHelpStr && strlen(szHelpText)) + { + s_pHelpStr->SetText(szHelpText); + uint16 nWidth = (uint16)( (LTFLOAT)s_HelpWidth * g_pInterfaceResMgr->GetXRatio()); + float helpX = (float)s_HelpRect.left * g_pInterfaceResMgr->GetXRatio(); + float helpY = (float)s_HelpRect.top * g_pInterfaceResMgr->GetYRatio(); + uint8 nSize = (uint8)((LTFLOAT)s_HelpSize * g_pInterfaceResMgr->GetXRatio()); + + s_pHelpStr->SetPosition(helpX,helpY); + s_pHelpStr->SetCharScreenHeight(nSize); + s_pHelpStr->SetWrapWidth(nWidth); + } + + } + } +} + + +void CBaseScreen::ScreenDimsChanged() +{ + m_fLastScale = g_pInterfaceResMgr->GetXRatio(); + unsigned int i; + for ( i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + if (m_pTitleString) + { + LTIntPt pos = m_TitlePos; + g_pInterfaceResMgr->ConvertScreenPos(pos); + m_pTitleString->SetPosition((float)pos.x,(float)pos.y); + uint8 nFontSize = (uint8)((LTFLOAT)m_TitleSize * g_pInterfaceResMgr->GetXRatio()); + m_pTitleString->SetCharScreenHeight(nFontSize); + } + + if (s_pHelpStr) + { + uint16 nWidth = (uint16)( (LTFLOAT)s_HelpWidth * g_pInterfaceResMgr->GetXRatio()); + float helpX = (float)s_HelpRect.left * g_pInterfaceResMgr->GetXRatio(); + float helpY = (float)s_HelpRect.top * g_pInterfaceResMgr->GetYRatio(); + uint8 nSize = (uint8)((LTFLOAT)s_HelpSize * g_pInterfaceResMgr->GetXRatio()); + + s_pHelpStr->SetPosition(helpX,helpY); + s_pHelpStr->SetCharScreenHeight(nSize); + s_pHelpStr->SetWrapWidth(nWidth); + } + +} + + +// Creates the title for the screen +void CBaseScreen::SetTitlePos(LTIntPt pt) +{ + m_TitlePos = pt; + if (m_pTitleString) + { + LTIntPt pos = m_TitlePos; + g_pInterfaceResMgr->ConvertScreenPos(pos); + m_pTitleString->SetPosition((float)pos.x,(float)pos.y); + } +} + +void CBaseScreen::SetTitleFont(uint8 nFont) +{ + m_TitleFont = nFont; + if (m_pTitleString) + { + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFont); + m_pTitleString->ApplyFont(pFont); + } +} + + +void CBaseScreen::SetTitleSize(uint8 nFontSize) +{ + m_TitleSize = nFontSize; + if (m_pTitleString) + { + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFont); + uint8 nFontSize = (uint8)((LTFLOAT)m_TitleSize * g_pInterfaceResMgr->GetXRatio()); + m_pTitleString->SetCharScreenHeight(nFontSize); + } +} + +void CBaseScreen::SetTitleColor(uint32 titleColor) +{ + m_TitleColor = titleColor; + if (m_pTitleString) + { + m_pTitleString->SetColor(titleColor); + } +} + + +void CBaseScreen::SetPolyRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + +} + +void CBaseScreen::InitPoly(LTPoly_GT4* pPoly, LTIntPt pos, HTEXTURE hTex) +{ + _ASSERT(pPoly && hTex); + if (!pPoly || !hTex) + return; + ScalePoly(pPoly,pos,hTex); + SetupQuadUVs(*pPoly, hTex, 0.0f,0.0f,1.0f,1.0f); + g_pDrawPrim->SetRGBA(pPoly,argbWhite); + +} + +void CBaseScreen::ScalePoly(LTPoly_GT4* pPoly, LTIntPt pos, HTEXTURE hTex) +{ + _ASSERT(pPoly && hTex); + if (!pPoly || !hTex) + return; + uint32 w,h; + g_pTexInterface->GetTextureDims(hTex,w,h); + float x = (float)pos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)pos.y * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)w * g_pInterfaceResMgr->GetXRatio(); + float fh = (float)h * g_pInterfaceResMgr->GetXRatio(); + + g_pDrawPrim->SetXYWH(pPoly,x,y,fw,fh); + +} + + + +void HandleEditKey(int key) +{ + switch (key) + { + case VK_LEFT: + { + vSFXPos.x -= fEditDelta; + } break; + case VK_RIGHT: + { + vSFXPos.x += fEditDelta; + } break; + case VK_UP: + { + vSFXPos.y += fEditDelta; + } break; + case VK_DOWN: + { + vSFXPos.y -= fEditDelta; + } break; + case VK_A: + { + vSFXScale.x -= fEditDelta / 10.0f; + } break; + case VK_D: + { + vSFXScale.x += fEditDelta / 10.0f; + } break; + case VK_W: + { + vSFXScale.y -= fEditDelta / 10.0f; + } break; + case VK_S: + { + vSFXScale.y += fEditDelta / 10.0f; + } break; + case VK_PRIOR: + { + fEditDelta *= 10.0f; + g_pLTClient->CPrint("Edit scale = %0.3f",fEditDelta); + }break; + case VK_NEXT: + { + fEditDelta /= 10.0f; + g_pLTClient->CPrint("Edit scale = %0.3f",fEditDelta); + }break; + case VK_RETURN: + { + bEditSFXMode = false; + g_pLTClient->CPrint("Exiting SFX edit mode."); + g_pLTClient->CPrint(" SFX Pos = <%0.3f, %0.3f, %0.3f>", vSFXPos.x,vSFXPos.y,vSFXPos.z); + g_pLTClient->CPrint(" SFX Scale = <%0.3f, %0.3f, %0.3f>", vSFXScale.x,vSFXScale.y,vSFXScale.z); + } break; + } + + HOBJECT hObj = pEditSFX->GetObject(); + g_pLTClient->SetObjectPos(hObj,&vSFXPos); + g_pLTClient->SetObjectScale(hObj,&vSFXScale); + +} + diff --git a/Jack/ClientShellDLL/BaseScreen.h b/Jack/ClientShellDLL/BaseScreen.h new file mode 100644 index 00000000..cb4348ae --- /dev/null +++ b/Jack/ClientShellDLL/BaseScreen.h @@ -0,0 +1,378 @@ +// BaseScreen.h: interface for the CBaseScreen class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(_BASE_SCREEN_H_) +#define _BASE_SCREEN_H_ + + +#include "LTGUIMgr.h" +#include "BaseScaleFX.h" +#include "ChainedFX.h" +#include "LTPoly.h" + +struct INT_CHAR; + +#define MAX_INT_ATTACHMENTS 5 +struct INT_ATTACH +{ + INT_ATTACH() { fScale = 1.0f;nAttachmentID = -1;szSocket[0]=LTNULL;} + + LTFLOAT fScale; + int nAttachmentID; + char szSocket[64]; +}; +struct AttachmentData +{ + AttachmentData() { socket = INVALID_MODEL_SOCKET; } + + CBaseScaleFX sfx; + HMODELSOCKET socket; +}; + +class CScreenMgr; + + + +const uint16 kNoSelection = 0xFFFF; +const LTIntPt kDefaultPos(-1,-1); + +class CBaseScreen : public CLTGUICommandHandler +{ +public: + CBaseScreen(); + virtual ~CBaseScreen(); + + // Initialization/Termination + virtual LTBOOL Init(int nScreenID); + virtual void Term(); + + // Builds the screen + virtual LTBOOL Build(); + inline LTBOOL IsBuilt() const { return m_bBuilt; } + + + virtual void Escape(); + + virtual uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + // Get the screen ID + inline int GetScreenID() const { return m_nScreenID; } + + + // Renders the screen to a surface + virtual LTBOOL Render(HSURFACE hDestSurf); + // Returns false if the screen should exit as a result of this update + virtual bool UpdateInterfaceSFX(); + + // Creates the title for the screen + void SetTitlePos(LTIntPt pt); + void SetTitleFont(uint8 nFont); + void SetTitleSize(uint8 nFontSize); + void SetTitleColor(uint32 titleColor); + + LTBOOL CreateTitle(int nStringID); + LTBOOL CreateTitle(char *lpszTitle); + + //set the background for the screen + void UseBack(LTBOOL bBack=LTTRUE,LTBOOL bOK=LTFALSE, LTBOOL bReturn = LTFALSE ); + + // This is called when the screen gets or loses focus + virtual void OnFocus(LTBOOL bFocus); + + // This is called when the selected item changes + virtual void OnSelectionChange() {}; + + // Handles a key press. Returns FALSE if the key was not processed through this method. + // Left, Up, Down, Right, and Enter are automatically passed through OnUp(), OnDown(), etc. + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL HandleKeyUp(int key) { return LTFALSE; } + virtual LTBOOL HandleChar(unsigned char c); + virtual LTBOOL HandleForceUpdate() { return LTFALSE; } + + //reset selection and help display + virtual void ForceMouseUpdate(); + virtual void UpdateHelpText(); + + // Mouse messages + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnLButtonDblClick(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + virtual LTBOOL OnRButtonUp(int x, int y); + virtual LTBOOL OnRButtonDblClick(int x, int y); + virtual LTBOOL OnMouseMove(int x, int y); + + inline int GetPageLeft() const {return m_PageRect.left;} + inline int GetPageRight() const {return m_PageRect.right;} + inline int GetPageTop() const {return m_PageRect.top;} + inline int GetPageBottom() const {return m_PageRect.bottom;} + + uint16 AddControl(CLTGUICtrl* pCtrl); + void RemoveControl(CLTGUICtrl* pControl,LTBOOL bDelete = LTTRUE); + + uint16 SetSelection(uint16 select, LTBOOL bFindSelectable = LTFALSE); + uint16 NextSelection(); + uint16 PreviousSelection(); + inline uint16 GetSelection() const {return m_nSelection;} + inline uint16 GetOldSelection() const {return m_nOldSelection;} + + void SetCapture(CLTGUICtrl *pCtrl) {m_pCaptureCtrl = pCtrl;} + CLTGUICtrl* GetCapture() {return m_pCaptureCtrl;} + + inline CLTGUICtrl* GetSelectedControl() {return GetControl(m_nSelection);} + CLTGUICtrl* GetControl(uint16 nIndex); + uint16 GetIndex(CLTGUICtrl* pCtrl); + + inline void SetItemSpacing(int space) {m_nItemSpacing = space;} + inline int GetItemSpacing() const { return m_nItemSpacing; } + virtual void ScreenDimsChanged(); + + + //this function creates a string, the caller must free it + virtual void GetHelpString(uint32 dwHelpId, uint16 nControlIndex, char *buffer, int bufLen); + + //default font for items is the large font + // These AddXXX() functions call CreateXXX() and then add the control to the control list + CLTGUITextCtrl* AddTextItem(int stringID, uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUITextCtrl* AddTextItem(char *pString, uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIListCtrl* AddList(LTIntPt pos, uint16 nHeight, LTBOOL bUseArrows = LTFALSE, uint16 nArrowOffset = 0); + + CLTGUICycleCtrl* AddCycle(int stringID, int helpID, int nHeaderWidth, uint8 *pnValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUICycleCtrl* AddCycle(char *pString, int helpID, int nHeaderWidth, uint8 *pnValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIToggle* AddToggle(int stringID, int helpID, int nHeaderWidth, LTBOOL *pbValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUIToggle* AddToggle(char *pString, int helpID, int nHeaderWidth, LTBOOL *pbValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUISlider* AddSlider(int stringID, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight = -1, + int *pnValue = LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUISlider* AddSlider(char *pString, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight = -1, + int *pnValue = LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIColumnCtrl* AddColumnCtrl(uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + + // These CreateXXX() create controls but do not add them to the control list + CLTGUITextCtrl* CreateTextItem(int stringID, uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUITextCtrl* CreateTextItem(char *pString, uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIListCtrl* CreateList(LTIntPt pos, uint16 nHeight, LTBOOL bUseArrows = LTFALSE, uint16 nArrowOffset = 0); + + CLTGUICycleCtrl* CreateCycle(int stringID, int helpID, int nHeaderWidth, uint8 *pnValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUICycleCtrl* CreateCycle(char *pString, int helpID, int nHeaderWidth, uint8 *pnValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIToggle* CreateToggle(int stringID, int helpID, int nHeaderWidth, LTBOOL *pbValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUIToggle* CreateToggle(char *pString, int helpID, int nHeaderWidth, LTBOOL *pbValue=LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUISlider* CreateSlider(int stringID, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight = -1, + int *pnValue = LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + CLTGUISlider* CreateSlider(char *pString, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight = -1, + int *pnValue = LTNULL, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + CLTGUIColumnCtrl* CreateColumnCtrl(uint32 commandID, int helpID, LTIntPt pos = kDefaultPos, LTBOOL bFixed = LTFALSE, int nFont = -1); + + // Calls UpdateData on each control in the screen + virtual void UpdateData(LTBOOL bSaveAndValidate=LTTRUE); + +protected: + + // Handle input + virtual LTBOOL OnUp(); + virtual LTBOOL OnDown(); + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnEnter(); + + // Gets the index of the control that is under the specific screen point. + // Returns FALSE if there isn't one under the specified point. + LTBOOL GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex); + +protected: + + void RemoveAll(LTBOOL bDelete = LTTRUE); + + void CreateBack(LTBOOL bOK = LTFALSE, LTBOOL bReturn = LTFALSE); + + virtual void CreateInterfaceSFX(); + virtual void RemoveInterfaceSFX(); + + CBaseScaleFX* CreateScaleFX(char *szFXName); + + void CreateLightFX(char *szFXName); + void CreateCharFX(INT_CHAR *pChar); + void CreateAttachFX(INT_ATTACH *pAttach); + virtual void ClearAttachFX(); + + void SetPolyRenderState(); + void InitPoly(LTPoly_GT4* pPoly, LTIntPt pos, HTEXTURE hTex); + void ScalePoly(LTPoly_GT4* pPoly, LTIntPt pos, HTEXTURE hTex); + +protected: + + LTBOOL m_bInit; + LTBOOL m_bBuilt; + LTBOOL m_bVisited; + + + CScreenMgr* m_pScreenMgr; + + int m_nScreenID; // The ID of this screen + int m_nContinueID; // The ID of the screen to show when continue is clicked + + //title stuff + CUIPolyString* m_pTitleString; // The title string + LTIntPt m_TitlePos; + uint8 m_TitleFont; + uint8 m_TitleSize; + uint32 m_TitleColor; + + LTBOOL m_bHaveFocus; + + LTBOOL m_bHaveLights; + + // Array of SFX owned by this screen + SFXArray m_SFXArray; + + // Array of free controls that this screen owns + ControlArray m_controlArray; + + int m_nItemSpacing; + + CLTGUICtrl* m_pCaptureCtrl; + + LTRect m_PageRect; + int m_nAlignment; + uint32 m_SelectedColor; + uint32 m_NonSelectedColor; + uint32 m_DisabledColor; + + + uint32 m_dwCurrHelpID; + + static CUIFormattedPolyString* s_pHelpStr; + + CLTGUITextCtrl *m_pNext; + + LTBOOL m_bBack; + + static CLTGUIButton s_BackArrow; + + static LTBOOL s_bReadLayout; + static LTRect s_HelpRect; + static uint8 s_HelpSize; + static uint16 s_HelpWidth; + static LTIntPt s_BackPos; + static LTIntPt s_NextPos; + + + CBaseScaleFX m_CharSFX; + int m_nNumAttachments; + AttachmentData m_aAttachment[MAX_INT_ATTACHMENTS]; + + LTIntPt m_nextPos; + + LTFLOAT m_fLastScale; + LTBOOL m_bSelectFXCenter; + + uint16 m_nSelection; + uint16 m_nOldSelection; + uint16 m_nLMouseDownItemSel; + uint16 m_nRMouseDownItemSel; + + ChainFXList m_Chains; + + static LTVector s_vPos; + static LTVector s_vU; + static LTVector s_vR; + static LTVector s_vF; + static LTRotation s_rRot; + + +}; + +inline CLTGUITextCtrl* CBaseScreen::AddTextItem(int stringID, uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUITextCtrl* pCtrl = CreateTextItem(stringID, commandID, helpID, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} +inline CLTGUITextCtrl* CBaseScreen::AddTextItem(char *pString, uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUITextCtrl* pCtrl = CreateTextItem(pString, commandID, helpID, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} + +inline CLTGUIListCtrl* CBaseScreen::AddList(LTIntPt pos, uint16 nHeight, LTBOOL bUseArrows, uint16 nArrowOffset) +{ + + CLTGUIListCtrl* pList = CreateList(pos,nHeight,bUseArrows,nArrowOffset); + if (pList) + AddControl(pList); + return pList; +} + + +inline CLTGUICycleCtrl* CBaseScreen::AddCycle(int stringID, int helpID, int nHeaderWidth, uint8 *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUICycleCtrl* pCtrl = CreateCycle(stringID, helpID, nHeaderWidth, pnValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} +inline CLTGUICycleCtrl* CBaseScreen::AddCycle(char *pString, int helpID, int nHeaderWidth, uint8 *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUICycleCtrl* pCtrl = CreateCycle(pString, helpID, nHeaderWidth, pnValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} + + +inline CLTGUIToggle* CBaseScreen::AddToggle(int stringID, int helpID, int nHeaderWidth, LTBOOL *pbValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUIToggle* pCtrl = CreateToggle(stringID, helpID, nHeaderWidth, pbValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} +inline CLTGUIToggle* CBaseScreen::AddToggle(char *pString, int helpID, int nHeaderWidth, LTBOOL *pbValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUIToggle* pCtrl = CreateToggle(pString, helpID, nHeaderWidth, pbValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} + + +inline CLTGUISlider* CBaseScreen::AddSlider(int stringID, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight, + int *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUISlider* pCtrl = CreateSlider(stringID, helpID, nHeaderWidth, nBarWidth, nBarHeight, pnValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} +inline CLTGUISlider* CBaseScreen::AddSlider(char *pString, int helpID, int nHeaderWidth, int nBarWidth, int nBarHeight, + int *pnValue, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + CLTGUISlider* pCtrl = CreateSlider(pString, helpID, nHeaderWidth, nBarWidth, nBarHeight, pnValue, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} + +inline CLTGUIColumnCtrl* CBaseScreen::AddColumnCtrl(uint32 commandID, int helpID, LTIntPt pos, LTBOOL bFixed, int nFont) +{ + + CLTGUIColumnCtrl* pCtrl = CreateColumnCtrl(commandID, helpID, pos, bFixed, nFont); + if (pCtrl) + AddControl(pCtrl); + return pCtrl; +} + + +#endif // _BASE_SCREEN_H_ diff --git a/Jack/ClientShellDLL/BeamFX.cpp b/Jack/ClientShellDLL/BeamFX.cpp new file mode 100644 index 00000000..5abc29d1 --- /dev/null +++ b/Jack/ClientShellDLL/BeamFX.cpp @@ -0,0 +1,131 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BeamFX.cpp +// +// PURPOSE : Beam special FX - Implementation +// +// CREATED : 5/15/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BeamFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "SFXMsgIds.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBeamFX::Init +// +// PURPOSE: Init the beam fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBeamFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Don't support server-side versions of this fx... + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBeamFX::Init +// +// PURPOSE: Init the beam fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBeamFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + BEAMCREATESTRUCT* pBeam = (BEAMCREATESTRUCT*)psfxCreateStruct; + m_cs = *pBeam; + + if (!m_cs.pBeamFX) return LTFALSE; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBeamFX::Update +// +// PURPOSE: Update the tracer +// +// ----------------------------------------------------------------------- // + +LTBOOL CBeamFX::Update() +{ + if (!m_cs.pBeamFX) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + + PLFXCREATESTRUCT pls; + + pls.pTexture = m_cs.pBeamFX->szTexture[0] ? m_cs.pBeamFX->szTexture : LTNULL; + pls.vStartPos = m_cs.vStartPos; + pls.vEndPos = m_cs.vEndPos; + pls.vInnerColorStart = m_cs.pBeamFX->vColor; + pls.vInnerColorEnd = m_cs.pBeamFX->vColor; + pls.vOuterColorStart = m_cs.pBeamFX->vColor; + pls.vOuterColorEnd = m_cs.pBeamFX->vColor; + //pls.vOuterColorStart = LTVector(0, 0, 0); + //pls.vOuterColorEnd = LTVector(0, 0, 0); + pls.fAlphaStart = m_cs.pBeamFX->fInitialAlpha; + pls.fAlphaEnd = m_cs.pBeamFX->fFinalAlpha; + pls.fMinWidth = 0; + pls.fMaxWidth = m_cs.pBeamFX->fWidth; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fLifeTime = m_cs.pBeamFX->fDuration; + pls.fAlphaLifeTime = m_cs.pBeamFX->fDuration; + pls.fPerturb = 0.0f; + pls.bAdditive = LTTRUE; + pls.bNoZ = LTTRUE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.nNumSegments = 3; + pls.bAlignUp = m_cs.pBeamFX->bAlignUp; + pls.bAlignFlat = m_cs.pBeamFX->bAlignFlat; + + if (!m_Beam.Init(&pls) || !m_Beam.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + } + else if (fTime > m_fStartTime + m_cs.pBeamFX->fDuration) + { + return LTFALSE; + } + + + // Draw the beam... + + m_Beam.Update(); + + + // Update the beam... + + if (m_Beam.HasBeenDrawn()) + { + + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BeamFX.h b/Jack/ClientShellDLL/BeamFX.h new file mode 100644 index 00000000..c05f8264 --- /dev/null +++ b/Jack/ClientShellDLL/BeamFX.h @@ -0,0 +1,63 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BeamFX.h +// +// PURPOSE : Tracer special fx class - Definition +// +// CREATED : 5/15/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __BEAM_FX_H__ +#define __BEAM_FX_H__ + +#include "SpecialFX.h" +#include "PolyLineFX.h" +#include "FXButeMgr.h" + +struct BEAMCREATESTRUCT : public SFXCREATESTRUCT +{ + BEAMCREATESTRUCT(); + + LTVector vStartPos; + LTVector vEndPos; + BEAMFX* pBeamFX; +}; + +inline BEAMCREATESTRUCT::BEAMCREATESTRUCT() +{ + vStartPos.Init(); + vEndPos.Init(); + pBeamFX = LTNULL; +} + + +class CBeamFX : public CSpecialFX +{ + public : + + CBeamFX() : CSpecialFX() + { + m_bFirstUpdate = LTTRUE; + m_fStartTime = 0.0f; + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_BEAM_ID; } + + protected : + + BEAMCREATESTRUCT m_cs; + + LTBOOL m_bFirstUpdate; + LTFLOAT m_fStartTime; + + CPolyLineFX m_Beam; +}; + +#endif // __BEAM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/BodyFX.cpp b/Jack/ClientShellDLL/BodyFX.cpp new file mode 100644 index 00000000..8dc3198e --- /dev/null +++ b/Jack/ClientShellDLL/BodyFX.cpp @@ -0,0 +1,1013 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BodyFX.cpp +// +// PURPOSE : Body special FX - Implementation +// +// CREATED : 8/24/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BodyFX.h" +#include "GameClientShell.h" +#include "SFXMsgIds.h" +#include "ClientUtilities.h" +#include "SoundMgr.h" +#include "BaseScaleFX.h" +#include "SurfaceFunctions.h" +#include "RagDoll.h" +#include "RagDollConstraint.h" + +extern CGameClientShell* g_pGameClientShell; + +#define BODY_KEY_BUTE_SOUND "BUTE_SOUND_KEY" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::CBodyFX() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CBodyFX::CBodyFX() +{ + m_pRagDoll = NULL; + m_fFaderTime = 3.0f; + m_fFaderTimer = 3.0f; + m_fBackpackFaderTime = 3.0f; + m_fBackpackFaderTimer = 3.0f; + m_bHidden = false; + m_hBackpack = NULL; + m_bFadeToBackpack = false; + m_fCreateTime = 0.0f; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::~CBodyFX() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CBodyFX::~CBodyFX() +{ + if(g_pClientFXMgr) + { + if (m_fxDeath.IsValid()) + { + g_pClientFXMgr->ShutdownClientFX(&m_fxDeath); + } + if (m_fx.IsValid()) + { + g_pClientFXMgr->ShutdownClientFX(&m_fx); + } + } + + debug_delete(m_pRagDoll); + + if (m_hBackpack) + { + RemoveBackpack(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::Init +// +// PURPOSE: Init the Body fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBodyFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + BODYCREATESTRUCT bcs; + + bcs.hServerObj = hServObj; + bcs.Read(pMsg); + + return Init(&bcs); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::Init +// +// PURPOSE: Init the Body fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBodyFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_bs = *((BODYCREATESTRUCT*)psfxCreateStruct); + + // Set up the animator + m_Animator.Init( m_bs.hServerObj ); + + // Play a deathfx on the body based on the damage type that killed the character... + + DamageFlags nDeathDamageFlag = DamageFlags((DamageFlags)1 << (DamageFlags)m_bs.eDeathDamageType); + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstDamageFX(); + + while( pDamageFX ) + { + if( pDamageFX->m_nDamageFlag & nDeathDamageFlag ) + { + if( pDamageFX->m_sz3rdPersonDeathFXName[0] ) + { + CLIENTFX_CREATESTRUCT fxInit( pDamageFX->m_sz3rdPersonDeathFXName, 0, m_hServerObject ); + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } + } + + pDamageFX = g_pDamageFXMgr->GetNextDamageFX(); + } + + // Create the hitbox object + + m_HitBox.Init( m_hServerObject, m_bs.vHitBoxDims, m_bs.vHitBoxOffset ); + + // Fade to backpacks in low violence games and only for players in non-singlepleyer game types... + +// Localizers decided to keep bodies. +// m_bFadeToBackpack = g_pVersionMgr->IsLowViolence(); // || ((GetGameType() != eGameTypeSingle) && (m_bs.nClientId != (uint8)-1)); + + //if we are in a low-violence game, hide the body and create a backpack, + // and we've already completed our death animation (i.e. the server has updated our hitbox once + if (m_bFadeToBackpack && !m_bs.bPermanentBody && m_bs.bHitBoxUpdated) + { + CreateBackpack(); + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + } + + // Set the creation time... + + m_fCreateTime = g_pLTClient->GetTime(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::CreateObject +// +// PURPOSE: Sets up and activates the ragdoll associated with this body +// +// ----------------------------------------------------------------------- // +bool CBodyFX::SetupRagDoll() +{ + m_pRagDoll = new CRagDoll(m_hServerObject, 100, 150, 100); + + static const float kSphereSize = 8.0f; + + static const float kfBodyWeight = 10.0f; + static const float kfLimbWeight = 1.0f; + + //setup each individual node + HRAGDOLLNODE hNeck = m_pRagDoll->CreateNode("Neck", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hLeftArmU = m_pRagDoll->CreateNode("Left_armu", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hRightArmU = m_pRagDoll->CreateNode("Right_armu", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hLeftLegU = m_pRagDoll->CreateNode("Left_legu", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hRightLegU = m_pRagDoll->CreateNode("Right_legu", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hUpperTorso = m_pRagDoll->CreateNode("Upper_torso", kSphereSize, kfBodyWeight); + HRAGDOLLNODE hTranslation = m_pRagDoll->CreateNode("Translation", kSphereSize, kfBodyWeight); + + HRAGDOLLNODE hHead = m_pRagDoll->CreateNode("Head", kSphereSize, kfLimbWeight); + + HRAGDOLLNODE hLeftArmL = m_pRagDoll->CreateNode("Left_arml", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hRightArmL = m_pRagDoll->CreateNode("Right_arml", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hLeftLegL = m_pRagDoll->CreateNode("Left_legl", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hRightLegL = m_pRagDoll->CreateNode("Right_legl", kSphereSize, kfLimbWeight); + + //extremities should come last + HRAGDOLLNODE hLeftHand = m_pRagDoll->CreateNode("Left_hand", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hRightHand = m_pRagDoll->CreateNode("Right_hand", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hLeftFoot = m_pRagDoll->CreateNode("Left_foot", kSphereSize, kfLimbWeight); + HRAGDOLLNODE hRightFoot = m_pRagDoll->CreateNode("Right_foot", kSphereSize, kfLimbWeight); + + m_pRagDoll->CreateModelNode("Left_armu", hLeftArmU, hLeftArmL, hLeftLegU); + m_pRagDoll->CreateModelNode("Right_armu", hRightArmU, hRightArmL, hRightLegU); + m_pRagDoll->CreateModelNode("Left_arml", hLeftArmL, hLeftHand, hLeftArmU); + m_pRagDoll->CreateModelNode("Right_arml", hRightArmL, hRightHand, hRightArmU); + + m_pRagDoll->CreateModelNode("Left_legu", hLeftLegU, hLeftLegL, hTranslation); + m_pRagDoll->CreateModelNode("Right_legu", hRightLegU, hRightLegL, hTranslation); + m_pRagDoll->CreateModelNode("Left_legl", hLeftLegL, hLeftFoot, hLeftLegU); + m_pRagDoll->CreateModelNode("Right_legl", hRightLegL, hRightFoot, hRightLegU); + + m_pRagDoll->CreateModelNode("Neck", hNeck, hHead, hLeftArmU); + m_pRagDoll->CreateModelNode("Left_shoulder", hNeck, hLeftArmU, hUpperTorso); + m_pRagDoll->CreateModelNode("Right_shoulder", hNeck, hRightArmU, hUpperTorso); + + m_pRagDoll->CreateModelNode("Upper_torso", hUpperTorso, hNeck, hLeftArmU); + + m_pRagDoll->CreateModelNode("Torso", hTranslation, hUpperTorso, hLeftLegU); + m_pRagDoll->CreateModelNode("Left_pelvis", hTranslation, hLeftLegU, hUpperTorso); + m_pRagDoll->CreateModelNode("Right_pelvis", hTranslation, hRightLegU, hUpperTorso); + + //now setup the constraints + + //torso + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightArmU, hLeftArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightLegU, hLeftLegU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hNeck, hTranslation)); + + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftArmU, hNeck)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightArmU, hNeck)); + + //lower torso + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hTranslation, hLeftLegU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hTranslation, hRightLegU)); + + //avoiding twisting of the lower torso + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftLegU, hLeftArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftLegU, hRightArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightLegU, hRightArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightLegU, hLeftArmU)); + + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hUpperTorso, hNeck)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hUpperTorso, hTranslation)); + + //----------------------------------------- + //LEFT ARM + + //keep the hand away from the shoulder + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hLeftArmU, hLeftHand, 0.6f * m_pRagDoll->GetDistance(hLeftArmU, hLeftArmL))); + + //keep the elbow out to the side of the body + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hRightLegU, hLeftArmU, hNeck, hLeftArmL, -1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hLeftArmU, hNeck, hLeftArmL, -1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hLeftArmU, hNeck, hLeftHand, -1.0f)); + + //keep it in front + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hLeftArmU, hNeck, hUpperTorso, hLeftArmL, 1.0f, 6.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hLeftArmU, hLeftArmL, hLeftLegU, hLeftHand, -1.0f, 6.0f)); + + //distance constraints + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftArmL, hLeftArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftArmL, hLeftHand)); + + //make sure that it can't be collinear (prevent instabilities) + float fLeftArmDist = 0.9f * (m_pRagDoll->GetDistance(hLeftArmU, hLeftArmL) + m_pRagDoll->GetDistance(hLeftArmL, hLeftHand)); + m_pRagDoll->AddConstraint(CRagDollMaxDistanceConstraint(m_pRagDoll, hLeftArmU, hLeftHand, fLeftArmDist)); + + //----------------------------------------- + //RIGHT ARM + + //keep the hand away from the shoulder + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hRightArmU, hRightHand, 0.6f * m_pRagDoll->GetDistance(hRightArmU, hRightArmL))); + + //keep the elbow out to the side of the body + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hLeftLegU, hRightArmU, hNeck, hRightArmL, -1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hRightArmU, hNeck, hRightArmL, -1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hRightArmU, hNeck, hRightHand, -1.0f)); + + //keep it in front + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hRightArmU, hNeck, hUpperTorso, hRightArmL, -1.0f, 6.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hRightArmU, hRightArmL, hRightLegU, hRightHand, 1.0f, 6.0f)); + + //distance constraints + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightArmL, hRightArmU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightArmL, hRightHand)); + + //make sure that it can't be collinear (prevent instabilities) + float fRightArmDist = 0.9f * (m_pRagDoll->GetDistance(hRightArmU, hRightArmL) + m_pRagDoll->GetDistance(hRightArmL, hRightHand)); + m_pRagDoll->AddConstraint(CRagDollMaxDistanceConstraint(m_pRagDoll, hRightArmU, hRightHand, fRightArmDist)); + + //----------------------------------------- + //LEFT LEG + + //make sure it can't bend too far + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hLeftLegU, hLeftFoot, 0.9f * m_pRagDoll->GetDistance(hLeftLegU, hLeftLegL))); + + //keep the legs apart + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hTranslation, hUpperTorso, hRightLegU, hRightLegL, 1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hTranslation, hUpperTorso, hRightLegU, hRightFoot, 1.0f)); + //m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hRightLegU, hLeftLegL, m_pRagDoll->GetDistance(hRightLegU, hLeftLegL))); + + //keep it in a plane + //m_pRagDoll->AddConstraint(CRagDollInPlaneConstraint(m_pRagDoll, hLeftLegL, hLeftLegU, hTranslation, hLeftFoot, -1.0f, m_pRagDoll->GetDistance(hTranslation, hLeftLegU))); + m_pRagDoll->AddConstraint(CRagDollMaxDistanceConstraint(m_pRagDoll, hLeftLegU, hLeftFoot, 0.9f * (m_pRagDoll->GetDistance(hLeftLegU, hLeftLegL) + m_pRagDoll->GetDistance(hLeftLegL, hLeftFoot)))); + + //keep it in the appropriate leg space + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hTranslation, hUpperTorso, hLeftLegL, -1.0f, 0.7f * m_pRagDoll->GetDistance(hLeftLegU, hLeftLegL))); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hTranslation, hLeftLegU, hUpperTorso, hLeftLegL, 1.0f, 6.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hTranslation, hLeftLegU, hLeftLegL, hLeftFoot, 1.0f, -6.0f)); + + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hRightArmU, hLeftLegU, hNeck, hLeftFoot, -1.0f)); + + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftLegL, hLeftLegU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hLeftLegL, hLeftFoot)); + + //----------------------------------------- + //RIGHT LEG + + //make sure it can't bend too far + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hRightLegU, hRightFoot, 0.9f * m_pRagDoll->GetDistance(hRightLegU, hRightLegL))); + + //keep the legs apart + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hTranslation, hUpperTorso, hLeftLegU, hLeftLegL, 1.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hTranslation, hUpperTorso, hLeftLegU, hLeftFoot, 1.0f)); + //m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hLeftLegU, hRightLegL, m_pRagDoll->GetDistance(hLeftLegU, hRightLegL))); + + //keep it in a plane + //m_pRagDoll->AddConstraint(CRagDollInPlaneConstraint(m_pRagDoll, hRightLegL, hRightLegU, hTranslation, hRightFoot, 1.0f, m_pRagDoll->GetDistance(hTranslation, hRightLegU))); + m_pRagDoll->AddConstraint(CRagDollMaxDistanceConstraint(m_pRagDoll, hRightLegU, hRightFoot, 0.9f * (m_pRagDoll->GetDistance(hRightLegU, hRightLegL) + m_pRagDoll->GetDistance(hRightLegL, hRightFoot)))); + + //keep it in the appropriate leg space + m_pRagDoll->AddConstraint(CRagDollAbovePlaneConstraint(m_pRagDoll, hTranslation, hUpperTorso, hRightLegL, -1.0f, 0.7f * m_pRagDoll->GetDistance(hRightLegU, hRightLegL))); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hTranslation, hRightLegU, hUpperTorso, hRightLegL, -1.0f, 6.0f)); + m_pRagDoll->AddConstraint(CRagDollAbovePlane3Constraint(m_pRagDoll, hTranslation, hRightLegU, hRightLegL, hRightFoot, -1.0f, -6.0f)); + + m_pRagDoll->AddConstraint(CRagDollAbovePlaneOnEdgeConstraint(m_pRagDoll, hLeftArmU, hRightLegU, hNeck, hRightFoot, -1.0f)); + + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightLegL, hRightLegU)); + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hRightLegL, hRightFoot)); + + //----------------------------------------- + //DISTANCE CONSTRAINTS + + //head + m_pRagDoll->AddConstraint(CRagDollDistanceConstraint(m_pRagDoll, hHead, hNeck)); + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hHead, hLeftArmU, 0.75f * m_pRagDoll->GetDistance(hLeftArmU, hHead))); + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hHead, hRightArmU)); + m_pRagDoll->AddConstraint(CRagDollMinDistanceConstraint(m_pRagDoll, hHead, hUpperTorso, 0.25f * m_pRagDoll->GetDistance(hNeck, hUpperTorso) + 0.75f * m_pRagDoll->GetDistance(hHead, hUpperTorso))); + + + //all done, activate the ragdoll + m_pRagDoll->SetMovementNode(hTranslation); + m_pRagDoll->SetAccel(LTVector(0, -400.0f, 0)); + m_pRagDoll->SetDragAmount(0.3f); + m_pRagDoll->SetNumIterations(5); + m_pRagDoll->SetFrictionConstant(1.0f); + if(!m_pRagDoll->ActivateRagDoll()) + { + assert(!"Ragdoll activation failed"); + return false; + } + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::CreateObject +// +// PURPOSE: Create the various fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBodyFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Client, CF_NOTIFYMODELKEYS, CF_NOTIFYMODELKEYS); + + //setup the ragdoll + //SetupRagDoll(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::Update +// +// PURPOSE: Update the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CBodyFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; + + // Don't let us get stomped by the server's flags + if(m_bHidden) + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + + // Update the animator + m_Animator.Update(); + + // Update our hitbox... + + m_HitBox.Update(); + + switch ( m_bs.eBodyState ) + { + case eBodyStateFade: + if (m_hBackpack) + { + FadeBackpack(); + } + else + { + UpdateFade(); + } + break; + } + + if (m_hBackpack) + { + UpdateBackpack(); + } + + + if (g_pVersionMgr->IsLowViolence()) + { + UpdateAttachments(); + } + + + if(m_pRagDoll) + m_pRagDoll->Update(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::UpdateFade +// +// PURPOSE: Update the fx +// +// ----------------------------------------------------------------------- // + +void CBodyFX::UpdateFade() +{ + HLOCALOBJ attachList[20]; + uint32 dwListSize = 0; + uint32 dwNumAttach = 0; + + g_pCommonLT->GetAttachments(m_hServerObject, attachList, 20, dwListSize, dwNumAttach); + int nNum = dwNumAttach <= dwListSize ? dwNumAttach : dwListSize; + + m_fFaderTime = Max(0.0f, m_fFaderTime - g_pGameClientShell->GetFrameTime()); + + float fAlpha = m_fFaderTime/m_fFaderTimer; + + g_pLTClient->SetObjectColor(m_hServerObject, 1, 1, 1, fAlpha); + + for (int i=0; i < nNum; i++) + { + g_pLTClient->SetObjectColor(attachList[i], 1, 1, 1, fAlpha); + + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(attachList[i], OFT_User, dwUsrFlags); + + if (g_pVersionMgr->IsLowViolence() && dwUsrFlags & USRFLG_ATTACH_HIDEGORE) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + } + + if (fAlpha < 0.01f) + { + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + + for (int i=0; i < nNum; i++) + { + g_pLTClient->Common()->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + + } + } +} + +void CBodyFX::FadeBackpack() +{ + m_fBackpackFaderTime = Max(0.0f, m_fBackpackFaderTime - g_pGameClientShell->GetFrameTime()); + + float fAlpha = m_fBackpackFaderTime/m_fBackpackFaderTimer; + g_pLTClient->SetObjectColor(m_hServerObject, 1, 1, 1, fAlpha); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBodyFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CBodyFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch(nMsgId) + { + case BFX_FADE_MSG: + { + m_bs.eBodyState = eBodyStateFade; + } + break; + + case BFX_HITBOX_MSG: + { + LTVector vDims, vOffset; + bool bCanBeSearched; + + vDims = pMsg->ReadCompLTVector(); + vOffset = pMsg->ReadCompLTVector(); + bCanBeSearched = pMsg->Readbool(); + + // Set the dims and offset on the hitbox + + m_HitBox.SetDims( vDims ); + m_HitBox.SetOffset( vOffset ); + m_HitBox.SetCanBeSearched( bCanBeSearched ); + + //if we are in a low-violence game, hide the body and create a backpack + if (m_bFadeToBackpack && !m_bs.bPermanentBody) + { + CreateBackpack(); + } + + } + break; + + case BFX_DAMAGEFX_MSG: + { + CreateDamageFX((DamageType)pMsg->Readuint8()); + bool bTwitch = pMsg->Readbool( ); + if( bTwitch && !g_pVersionMgr->IsLowViolence()) + { + m_Animator.Twitch( ); + } + } + break; + + case BFX_CAN_CARRY: + { + m_bs.bCanBeCarried = pMsg->Readbool(); + } + break; + + case BFX_CARRIED: + { + bool bCarried = pMsg->Readbool(); + HOBJECT hCarrier = pMsg->ReadObject(); + HOBJECT hPlayerObj = g_pLTClient->GetClientObject(); + + //hide/show, and animate local backpack object if there is one + if (m_hBackpack) + { + if (bCarried) + { + HMODELANIM nAni = g_pLTClient->GetAnimIndex( m_hBackpack, "CarryBody" ); + g_pLTClient->SetModelLooping( m_hBackpack, LTFALSE ); + g_pLTClient->SetModelAnimation( m_hBackpack, nAni ); + + if (hCarrier == hPlayerObj) + g_pLTClient->Common()->SetObjectFlags(m_hBackpack, OFT_Flags, 0, FLAG_VISIBLE); + } + else + { + HMODELANIM nAni = g_pLTClient->GetAnimIndex( m_hBackpack, "DropBody" ); + g_pLTClient->SetModelLooping( m_hBackpack, LTFALSE ); + g_pLTClient->SetModelAnimation( m_hBackpack, nAni ); + g_pLTClient->Common()->SetObjectFlags(m_hBackpack, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + + } + } + } + break; + + case BFX_PERMANENT: + { + m_bs.bPermanentBody = pMsg->Readbool( ); + + //if we are in a low-violence game, hide the body and create a backpack + if (m_bFadeToBackpack && !m_bs.bPermanentBody) + { + CreateBackpack(); + } + } + break; + + case BFX_CANREVIVE: + { + m_bs.bCanBeRevived = pMsg->Readbool( ); + } + break; + } + + return LTTRUE; +} + +bool GroundFilterFn(HOBJECT hObj, void *pUserData) +{ + return ( IsMainWorld(hObj) || (OT_WORLDMODEL == GetObjectType(hObj)) ); +} + +void CBodyFX::OnModelKey(HLOCALOBJ hObj, ArgList *pArgs) +{ + if (!m_hServerObject || !hObj || !pArgs || !pArgs->argv || pArgs->argc == 0) return; + + for(int i=0;iargc;i++) + { + char* pKey = pArgs->argv[i]; + if (!pKey) return; + + LTBOOL bSlump = !_stricmp(pKey, "NOISE"); + LTBOOL bLand = !_stricmp(pKey, "LAND"); + + if ( bSlump || bLand ) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + IntersectQuery IQuery; + IntersectInfo IInfo; + + IQuery.m_From = vPos; + IQuery.m_To = vPos - LTVector(0,96,0); + IQuery.m_Flags = INTERSECT_OBJECTS | INTERSECT_HPOLY | IGNORE_NONSOLID; + IQuery.m_FilterFn = GroundFilterFn; + + SurfaceType eSurface; + + if (g_pLTClient->IntersectSegment(&IQuery, &IInfo)) + { + if (IInfo.m_hPoly != INVALID_HPOLY) + { + eSurface = (SurfaceType)GetSurfaceType(IInfo.m_hPoly); + } + else if (IInfo.m_hObject) // Get the texture flags from the object... + { + eSurface = (SurfaceType)GetSurfaceType(IInfo.m_hObject); + } + else + { + return; + } + } + else + { + return; + } + + // Play the noise + + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(eSurface); + _ASSERT(pSurf); + if (!pSurf) return; + + if (bSlump && pSurf->szBodyFallSnd[0]) + { + g_pClientSoundMgr->PlaySoundFromPos(vPos, pSurf->szBodyFallSnd, pSurf->fBodyFallSndRadius, SOUNDPRIORITY_MISC_LOW); + } + else if (bLand && pSurf->szBodyLedgeFallSnd[0]) + { + g_pClientSoundMgr->PlaySoundFromPos(vPos, pSurf->szBodyLedgeFallSnd, pSurf->fBodyLedgeFallSndRadius, SOUNDPRIORITY_MISC_LOW); + } + } + else if(!_stricmp(pKey,BODY_KEY_BUTE_SOUND)) + { + if( (pArgs->argc > (i+1)) && pArgs->argv[i] ) + { + g_pClientSoundMgr->PlaySoundFromObject( m_hServerObject, pArgs->argv[i+1] ); + } + } + else if ( !_stricmp( pKey, "DEATHFX" )) + { + // + // Special FX key + // + HandleDeathFXKey( hObj, pArgs ); + } + else if ( !_stricmp( pKey, "FX" )) + { + // + // Special FX key + // + HandleFXKey( hObj, pArgs ); + } + else if(!_stricmp(pKey,"HIDE")) + { + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + m_bHidden = true; + } + else if(!_stricmp(pKey,"UNHIDE")) + { + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + m_bHidden = false; + } + } +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CBodyFX::HandleDeathFXKey() +// +// PURPOSE: Handle a Death FX key +// +// ----------------------------------------------------------------------- // +bool CBodyFX::HandleDeathFXKey( HLOCALOBJ hObj, ArgList* pArgList ) +{ + // Sanity check + if(pArgList->argc < 2) + return false; + + // Get the object's filenames + char szFullModelPath[512]; + char szModelName[512]; + g_pLTClient->GetModelLT()->GetModelDBFilename(m_hServerObject,szFullModelPath,512); + + // Remove the .ltb from the model + int nIndex = strlen(szFullModelPath)-4; + szFullModelPath[nIndex] = '\0'; // 4 characters from end + + // Strip off the directory information + int nStart = 0; + while((nStart == 0) && (nIndex != 0)) + { + // Search backwards until we find a directory separator + if((szFullModelPath[nIndex] == '\\') || (szFullModelPath[nIndex] == '/')) + { + nStart = nIndex+1; + } + else + { + nIndex--; + } + } + // Now we've got the start and end of just the model filename + strcpy(szModelName,&szFullModelPath[nStart]); + + // Get the FX name + char szFX[512]; + sprintf(szFX,"DEATHFX_%s_%s",szModelName,pArgList->argv[1]); + + // create the effect + bool bResult; + CLIENTFX_CREATESTRUCT fxCS( szFX, + 0, + m_hServerObject ); + + // Set the parent info & starting pos + g_pLTClient->GetObjectPos(m_hServerObject,&fxCS.m_vPos); + + bResult = g_pClientFXMgr->CreateClientFX( &m_fxDeath, + fxCS, + LTTRUE ); + + // [kml] We set this because they set it in ClientFXMgr::OnSpecialEffectNotify + // Seems superfluous + if(!m_fxDeath.IsValid()) + { + // Death FX couldn't start + ASSERT(FALSE); + } + + return bResult; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CBodyFX::HandleFXKey() +// +// PURPOSE: Handle an FX key +// +// ----------------------------------------------------------------------- // +bool CBodyFX::HandleFXKey( HLOCALOBJ hObj, ArgList* pArgList ) +{ + // Sanity check + if(!pArgList || pArgList->argc < 2 || !pArgList->argv[1]) + return false; + + return CreateFX(pArgList->argv[1]); +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CBodyFX::HandleFXKey() +// +// PURPOSE: Handle an FX key +// +// ----------------------------------------------------------------------- // +bool CBodyFX::CreateFX( char* pFXName ) +{ + if (!pFXName || !pFXName[0]) + return false; + + // Only play one FX at a time... + + if( m_fx.IsValid() && !m_fx.GetInstance()->IsFinished() ) + return false; + + CLIENTFX_CREATESTRUCT fxCS( pFXName, 0, m_hServerObject ); + return g_pClientFXMgr->CreateClientFX( &m_fx, fxCS, LTTRUE ); +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CBodyFX::CreateDamageFX() +// +// PURPOSE: Create a damage fx on the body +// +// ----------------------------------------------------------------------- // +void CBodyFX::CreateDamageFX( DamageType eDamageType ) +{ + uint32 dwFlags; + g_pCommonLT->GetObjectFlags( m_hServerObject, OFT_Flags, dwFlags ); + + // Don't play the damageFX on an invisible body... + + if( !(dwFlags & FLAG_VISIBLE) ) + return; + + // Play a deathfx on the body based on the damage type that killed the character... + + DamageFlags nDamageFlag = DamageFlags((DamageFlags)1 << (DamageFlags)eDamageType); + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstDamageFX(); + while( pDamageFX ) + { + if( pDamageFX->m_nDamageFlag & nDamageFlag ) + { + if( pDamageFX->m_szBodyFXName[0] ) + { + // Just call CreateFX so it saves the link and checks to see if one is already playing... + + CreateFX( pDamageFX->m_szBodyFXName ); + } + } + + pDamageFX = g_pDamageFXMgr->GetNextDamageFX(); + } +} + +//create backpack to replace body for low-violence games +void CBodyFX::CreateBackpack() +{ + if (m_hBackpack || !m_hServerObject) return; + + HLOCALOBJ attachList[20]; + uint32 dwListSize = 0; + uint32 dwNumAttach = 0; + + g_pCommonLT->GetAttachments(m_hServerObject, attachList, 20, dwListSize, dwNumAttach); + int nNum = dwNumAttach <= dwListSize ? dwNumAttach : dwListSize; + + + g_pLTClient->Common()->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + + for (int i=0; i < nNum; i++) + { + g_pLTClient->Common()->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + + } + + LTVector vPos; + LTRotation rRot; + + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + SAFE_STRCPY(createStruct.m_Filename, "props\\models\\PuBackpack.ltb"); + SAFE_STRCPY(createStruct.m_SkinNames[0], "props\\skins\\PuBackpack.dtx"); + SAFE_STRCPY(createStruct.m_RenderStyleNames[0], "rs\\glass.ltb"); + + createStruct.m_ObjectType = OT_MODEL; + createStruct.m_Flags = FLAG_VISIBLE; + createStruct.m_Flags2 = FLAG2_FORCETRANSLUCENT; + createStruct.m_Pos = vPos; + createStruct.m_Rotation = rRot; + + m_hBackpack = g_pLTClient->CreateObject(&createStruct); + if (!m_hBackpack) return; + + HMODELANIM nAni = g_pLTClient->GetAnimIndex( m_hBackpack, "Idle1" ); + g_pLTClient->SetModelLooping( m_hBackpack, LTFALSE ); + g_pLTClient->SetModelAnimation( m_hBackpack, nAni ); + + // Re-Init the hit box so it is now associated with the BackPack model... + + m_HitBox.Init( m_hBackpack, m_HitBox.GetDims(), m_HitBox.GetOffset() ); + +} +void CBodyFX::UpdateBackpack() +{ + if (!m_hBackpack || !m_hServerObject) return; + + uint32 dwFlags = 0; + g_pLTClient->Common()->GetObjectFlags(m_hServerObject,OFT_Flags, dwFlags); + if (dwFlags & FLAG_VISIBLE) + { + UpdateFade(); + } + + + + LTVector vPos; + LTRotation rRot; + + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + g_pLTClient->SetObjectPosAndRotation(m_hBackpack, &vPos, &rRot); + +} +void CBodyFX::RemoveBackpack() +{ + if (m_hBackpack) + g_pLTClient->RemoveObject(m_hBackpack); + m_hBackpack = LTNULL; +} + + +void CBodyFX::UpdateAttachments() +{ + HLOCALOBJ attachList[20]; + uint32 dwListSize = 0; + uint32 dwNumAttach = 0; + + g_pCommonLT->GetAttachments(m_hServerObject, attachList, 20, dwListSize, dwNumAttach); + int nNum = dwNumAttach <= dwListSize ? dwNumAttach : dwListSize; + for (int i=0; i < nNum; i++) + { + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(attachList[i], OFT_User, dwUsrFlags); + + if (g_pVersionMgr->IsLowViolence() && dwUsrFlags & USRFLG_ATTACH_HIDEGORE) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + + } +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CBodyFX::RemoveClientAssociation() +// +// PURPOSE: Cleat out any data that relates to a specific client... +// +// ----------------------------------------------------------------------- // + +void CBodyFX::RemoveClientAssociation( ) +{ + m_bs.nClientId = (uint8)-1; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAnimatorBody::Init +// +// PURPOSE: Initialize the animator +// +// ----------------------------------------------------------------------- // + +void CAnimatorBody::Init(HOBJECT hObject) +{ + CAnimator::Init(hObject); + + // Set up our twitch ani + + m_eAniTrackerTwitch = AddAniTracker("Twitch"); + m_eAniTwitch = AddAni("Twitch"); + + EnableAniTracker(m_eAniTrackerTwitch); + LoopAniTracker(m_eAniTrackerTwitch, LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAnimatorBody::Update +// +// PURPOSE: Update the animator +// +// ----------------------------------------------------------------------- // + +void CAnimatorBody::Update() +{ + CAnimator::Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAnimatorBody::Twitch +// +// PURPOSE: Blend in a twitch animation (if we're not currently doing so) +// +// ----------------------------------------------------------------------- // + +void CAnimatorBody::Twitch() +{ + LoopAniTracker(m_eAniTrackerTwitch, LTFALSE); + SetAni(m_eAniTwitch, m_eAniTrackerTwitch); +} + diff --git a/Jack/ClientShellDLL/BodyFX.h b/Jack/ClientShellDLL/BodyFX.h new file mode 100644 index 00000000..71898c04 --- /dev/null +++ b/Jack/ClientShellDLL/BodyFX.h @@ -0,0 +1,136 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BodyFX.h +// +// PURPOSE : Body special fx class - Definition +// +// CREATED : 02.01.2000 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __BODY_FX_H__ +#define __BODY_FX_H__ + +#include "SpecialFX.h" +#include "ModelButeMgr.h" +#include "SharedFXStructs.h" +#include "Animator.h" +#include "ClientFXMgr.h" +#include "HitBox.h" + +class CRagDoll; + +class CAnimatorBody : public CAnimator +{ + public : + + // Ctors/Dtors/etc + + void Init(HOBJECT hObject); + + // Updates + + void Update(); + + // Methods + + void Twitch(); + + AniTracker GetTwitchTracker( ) const { return m_eAniTrackerTwitch; } + + protected : + + AniTracker m_eAniTrackerTwitch; // Our twitch ani tracker + Ani m_eAniTwitch; // Our twitch ani +}; + + +class CBodyFX : public CSpecialFX +{ + public : + + // Ctors/Dtors/etc + + CBodyFX(); + ~CBodyFX(); + + LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + + LTBOOL CreateObject(ILTClient* pClientDE); + + // Updates + + LTBOOL Update(); + void UpdateAttachments(); + + // Handlers + + LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + void OnModelKey(HLOCALOBJ hObj, ArgList *pArgs); + + uint8 GetClientId() const { return m_bs.nClientId; } + + virtual uint32 GetSFXID() { return SFX_BODY_ID; } + + HOBJECT GetHitBox() const { return m_HitBox.GetObject(); } + + bool CanBeCarried() const { return m_bs.bCanBeCarried; } + bool CanBeRevived() const { return m_bs.bCanBeRevived; } + + ModelSkeleton GetModelSkeleton() const { return g_pModelButeMgr->GetModelSkeleton(m_bs.eModelId); } + + float GetTimeCreated() const { return m_fCreateTime; } + + void RemoveClientAssociation( ); + + protected : + + // Updates + + void UpdateFade(); + void FadeBackpack(); + + bool HandleDeathFXKey( HLOCALOBJ hObj, ArgList* pArgList ); + bool HandleFXKey( HLOCALOBJ hObj, ArgList* pArgList ); + + bool SetupRagDoll(); + + bool CreateFX(char* pFXName); + + void CreateDamageFX(DamageType eType); + + void CreateBackpack(); + void UpdateBackpack(); + void RemoveBackpack(); + + protected : + + CRagDoll* m_pRagDoll; + + BODYCREATESTRUCT m_bs; // Our createstruct + HOBJECT m_hBackpack; + bool m_bFadeToBackpack; + + + LTFLOAT m_fFaderTime; + LTFLOAT m_fFaderTimer; + LTFLOAT m_fBackpackFaderTime; + LTFLOAT m_fBackpackFaderTimer; + + bool m_bHidden; + + // keyframed ClientFX + CLIENTFX_LINK m_fxDeath; + CLIENTFX_LINK m_fx; + + CHitBox m_HitBox; + + float m_fCreateTime; // Time stamp of when this body was created. + + CAnimatorBody m_Animator; +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/BulletTrailFX.cpp b/Jack/ClientShellDLL/BulletTrailFX.cpp new file mode 100644 index 00000000..91870a62 --- /dev/null +++ b/Jack/ClientShellDLL/BulletTrailFX.cpp @@ -0,0 +1,225 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BulletTrailFX.cpp +// +// PURPOSE : SmokeTrail segment special FX - Implementation +// +// CREATED : 3/6/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "BulletTrailFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ContainerCodes.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" + +#define MAX_TRAIL_LENGTH 3000.0f + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBulletTrailFX::Init +// +// PURPOSE: Init the bullet trail +// +// ----------------------------------------------------------------------- // + +LTBOOL CBulletTrailFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + BTCREATESTRUCT* pBT = (BTCREATESTRUCT*)psfxCreateStruct; + + VEC_COPY(m_vStartPos, pBT->vStartPos); + VEC_COPY(m_vDir, pBT->vDir); + VEC_COPY(m_vColor1, pBT->vColor1); + VEC_COPY(m_vColor2, pBT->vColor2); + m_fLifeTime = pBT->fLifeTime; + m_fFadeTime = pBT->fFadeTime; + m_fRadius = pBT->fRadius; + m_fGravity = pBT->fGravity; + m_fNumParticles = pBT->fNumParticles; + + m_pTextureName = DEFAULT_BUBBLE_TEXTURE; + + m_fDistance = MAX_TRAIL_LENGTH; + m_fDistTraveled = 0.0f; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBulletTrailFX::Update +// +// PURPOSE: Update the bullet trail (add bubbles) +// +// ----------------------------------------------------------------------- // + +LTBOOL CBulletTrailFX::Update() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + // See if we can figure out what color bubbles to make, based on the + // container we start in... + + HLOCALOBJ objList[1]; + uint32 dwNum = ::GetPointContainers(m_vStartPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (m_pClientDE->GetContainerCode(objList[0], &dwCode)) + { + GetLiquidColorRange((ContainerCode)dwCode, &m_vColor1, &m_vColor2); + } + } + + + // Move the particle system to the correct position... + + g_pLTClient->SetObjectPos(m_hObject, &m_vStartPos); + + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + m_fLastTime = fTime; + + m_vLastPos.Init(); + + // Find the end position... + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + LTVector vTemp, vEndPoint; + + VEC_MULSCALAR(vTemp, m_vDir, MAX_TRAIL_LENGTH); + VEC_ADD(vEndPoint, m_vStartPos, vTemp); + + VEC_COPY(iQuery.m_From, m_vStartPos); + VEC_COPY(iQuery.m_To, vEndPoint); + + if (m_pClientDE->IntersectSegment(&iQuery, &iInfo)) + { + VEC_SUB(vEndPoint, iInfo.m_Point, m_vStartPos); + m_fDistance = VEC_MAG(vEndPoint); + } + + if (m_fDistance <= 0.0f || m_fFadeTime <= 0.0f) return LTFALSE; + + // Calculate the trail velocity... + + m_fTrailVel = m_fDistance / m_fFadeTime; + + VEC_MULSCALAR(m_vDir, m_vDir, m_fTrailVel); + } + + + + // Check to see if we should just wait for last bubble to go away... + + if (fTime > m_fStartTime + m_fFadeTime) + { + if (fTime > m_fLastTime + m_fLifeTime) + { + return LTFALSE; + } + + LTFLOAT fScale = (m_fLifeTime - (fTime - m_fLastTime)) / m_fLifeTime; + + // m_pClientDE->SetParticleSystemColorScale(m_hObject, fScale); + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, fScale); + + return LTTRUE; + } + + + // Create the necessary particles... + + + LTFLOAT fTimeOffset = g_pGameClientShell->GetFrameTime(); + + + + // Calculate distance traveled this frame... + + LTFLOAT fDist = m_fTrailVel * fTimeOffset; + if (fDist > m_fDistance) fDist = m_fDistance; + + m_fDistTraveled += fDist; + if (m_fDistTraveled > m_fDistance) + { + fDist = m_fDistance - (m_fDistTraveled - fDist); + if (fDist <= 0.0f) return LTTRUE; + } + + + // Calculate number of particles to create... + + LTFLOAT fNumParticles = fDist * m_fNumParticles / m_fDistance; + + + // Calculate starting bubble position... + + LTVector vCurPos, vPos, vDelta, vTemp, vDriftVel, vColor; + + VEC_MULSCALAR(vTemp, m_vDir, fTimeOffset); + VEC_ADD(vCurPos, m_vLastPos, vTemp); + + + // What is the range of colors? + + LTFLOAT fRange = m_vColor2.x - m_vColor1.x; + + + // Fill the distance between the last projectile position, and it's + // current position with bubbles... + + VEC_SUB(vTemp, vCurPos, m_vLastPos); + VEC_MULSCALAR(vDelta, vTemp, 1.0f/fNumParticles); + + VEC_COPY(vPos, m_vLastPos); + + LTFLOAT fLifeTime = 100.0f; + + LTFLOAT fOffset = 0.0f; + LTVector vDriftOffset; + VEC_SET(vDriftOffset, 0.0f, 0.0f, 0.0f); + + int nNumParticles = GetNumParticles((int)fNumParticles); + + for (int i=0; i < nNumParticles; i++) + { + // Build the individual bubbless... + + for (int j=0; j < 1; j++) + { + VEC_COPY(vTemp, vPos); + + VEC_SET(vDriftVel, 0.0f, GetRandom(5.0f, 6.0f), 0.0f); + + vTemp.x += GetRandom(-fOffset, fOffset); + vTemp.y += GetRandom(-fOffset, fOffset); + vTemp.z += GetRandom(-fOffset, fOffset); + + GetRandomColorInRange(vColor); + + m_pClientDE->AddParticle(m_hObject, &vTemp, &vDriftVel, &vColor, fLifeTime); + } + + VEC_ADD(vPos, vPos, vDelta); + } + + VEC_COPY(m_vLastPos, vCurPos); + m_fLastTime = fTime; + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/BulletTrailFX.h b/Jack/ClientShellDLL/BulletTrailFX.h new file mode 100644 index 00000000..91ef2d65 --- /dev/null +++ b/Jack/ClientShellDLL/BulletTrailFX.h @@ -0,0 +1,89 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : BulletTrailFX.h +// +// PURPOSE : SmokeTrail segment special fx class - Definition +// +// CREATED : 3/1/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __BULLET_TRAIL_FX_H__ +#define __BULLET_TRAIL_FX_H__ + +#include "BaseParticleSystemFX.h" + + +struct BTCREATESTRUCT : public BPSCREATESTRUCT +{ + BTCREATESTRUCT(); + + LTVector vStartPos; + LTVector vDir; + LTVector vColor1; + LTVector vColor2; + LTFLOAT fLifeTime; + LTFLOAT fFadeTime; + LTFLOAT fRadius; + LTFLOAT fGravity; + LTFLOAT fNumParticles; +}; + +inline BTCREATESTRUCT::BTCREATESTRUCT() +{ + vStartPos.Init(); + vDir.Init(); + vColor1.Init(); + vColor2.Init(); + fLifeTime = 0.0f; + fFadeTime = 0.0f; + fRadius = 0.0f; + fGravity = 0.0f; + fNumParticles = 0.0f; +} + +class CBulletTrailFX : public CBaseParticleSystemFX +{ + public : + + CBulletTrailFX() : CBaseParticleSystemFX() + { + VEC_INIT(m_vStartPos); + VEC_INIT(m_vLastPos); + VEC_INIT(m_vDir); + + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + m_fNumParticles = 100.0f; + + m_bFirstUpdate = LTTRUE; + m_fDistance = 0.0f; + m_fDistTraveled = 0.0f; + m_fTrailVel = 0.0f; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_BULLETTRAIL_ID; } + + private : + + LTVector m_vLastPos; // Last bubble particle position + LTVector m_vStartPos; // Starting position of trail + LTVector m_vDir; // Direction of trail + + LTFLOAT m_fFadeTime; // When system should start to fade + LTFLOAT m_fLifeTime; // How long system stays around + LTFLOAT m_fNumParticles;// Total number of particles in system + + LTBOOL m_bFirstUpdate; // First update + LTFLOAT m_fDistance; // Length of trail + LTFLOAT m_fDistTraveled;// How far have we gone? + LTFLOAT m_fTrailVel; // Speed of trail + + LTFLOAT m_fStartTime; // When did we start + LTFLOAT m_fLastTime; // When was the last update +}; + +#endif // __BULLET_TRAIL_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/CMoveMgr.cpp b/Jack/ClientShellDLL/CMoveMgr.cpp new file mode 100644 index 00000000..33094fa5 --- /dev/null +++ b/Jack/ClientShellDLL/CMoveMgr.cpp @@ -0,0 +1,3036 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CMoveMgr.cpp +// +// PURPOSE : Client side player movement mgr - Implementation +// +// CREATED : 10/2/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "iltclient.h" +#include "iltphysics.h" +#include "CMoveMgr.h" +#include "GameClientShell.h" +#include "SharedMovement.h" +#include "CommandIDs.h" +#include "ClientServerShared.h" +#include "ClientWeaponUtils.h" +#include "MsgIDs.h" +#include "SurfaceFunctions.h" +#include "SFXMgr.h" +#include "CharacterFX.h" +#include "VarTrack.h" +#include "VehicleMgr.h" +#include "BankedList.h" +#include "PlayerStats.h" +#include "LeanMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ProfileMgr.h" +#include "TargetMgr.h" +#include "GadgetDisabler.h" +#include "VolumeBrushFX.h" +#include "VehicleButeMgr.h" + +#define SPECTATOR_ACCELERATION 100000.0f +#define MIN_ONGROUND_Y -10000000.0f + +// Note : Duplicated from PlayerObj.cpp on the server +#define DEFAULT_FRICTION 5.0f + +// Animation information for forceduck +#define PLAYERANIM_STAND "LSt" +#define PLAYERANIM_CROUCH "LC" + +class Pusher +{ +public: + Pusher() + { + m_Link.m_pData = this; + } + + // Banked list for keeping track of the Pusher objects statically + static CBankedList *GetBank() { + static CBankedList theBank; + return &theBank; + } + + LTVector m_Pos; + float m_Radius; + float m_Delay; // How long before it starts actually pushing. + float m_TimeLeft; // Time left for this sphere. + float m_Strength; + LTLink m_Link; +}; + +VarTrack g_vtPlayerGravity; +VarTrack g_vtInAirAccelMultiplier; + +VarTrack g_vtPlayerViewModel; +VarTrack g_vtPlayerViewOffsetX; +VarTrack g_vtPlayerViewOffsetY; +VarTrack g_vtPlayerViewOffsetZ; +VarTrack g_vtPlayerViewScale; + +VarTrack g_vtCamLandMinHeight; +VarTrack g_vtFallDamageMinHeight; +VarTrack g_vtFallDamageMaxHeight; +VarTrack g_vtFallDamageMin; +VarTrack g_vtFallDamageMax; + +VarTrack g_vtCamLandMoveDist; +VarTrack g_vtCamLandDownTime; +VarTrack g_vtCamLandUpTime; + +VarTrack g_vtCamLandRollVal; +VarTrack g_vtCamLandRollTime1; +VarTrack g_vtCamLandRollTime2; + +VarTrack g_vtCamLandPitchVal; +VarTrack g_vtCamLandPitchTime1; +VarTrack g_vtCamLandPitchTime2; + +VarTrack g_vtSlideToStopTime; + +VarTrack g_vtMaxPushYVelocity; + + +LTBOOL g_bJumpRequested = LTFALSE; + +extern VarTrack g_vtVehicleFallDamageMinHeight; +extern VarTrack g_vtVehicleFallDamageMaxHeight; + +CMoveMgr* g_pMoveMgr = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::CMoveMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CMoveMgr::CMoveMgr() +{ + g_pMoveMgr = this; + + m_vWantedDims.Init(1, 1, 1); + + m_hObject = LTNULL; + + m_bLoading = LTFALSE; + m_vSavedVel.Init(); + + m_vTotalCurrent.Init(); + m_fTotalViscosity = 0.0f; + + m_vGroundNormal.Init(); + + // Always have this... + m_pVehicleMgr = debug_new(CVehicleMgr); + + InitWorldData(); + + m_DamageTimer.Stop(); + + m_bJumped = LTFALSE; + m_bRunLock = LTFALSE; + + m_bGravityOverride = false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::~CMoveMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CMoveMgr::~CMoveMgr() +{ + g_pMoveMgr = LTNULL; + + TermLevel(); + + if (m_pVehicleMgr) + { + debug_delete(m_pVehicleMgr); + m_pVehicleMgr = LTNULL; + } + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::Init +// +// PURPOSE: Initialize mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CMoveMgr::Init() +{ + m_CV_SpectatorSpeedMul.Init(g_pLTClient, "SpectatorSpeedMul", NULL, 1.0f); + + g_vtFallDamageMinHeight.Init(g_pLTClient, "FallDamageMinHeight", LTNULL, 300.0f); + g_vtFallDamageMaxHeight.Init(g_pLTClient, "FallDamageMaxHeight", LTNULL, 500.0f); + g_vtFallDamageMin.Init(g_pLTClient, "FallDamageMin", LTNULL, 5.0f); + g_vtFallDamageMax.Init(g_pLTClient, "FallDamageMax", LTNULL, 500.0f); + + g_vtCamLandMinHeight.Init(g_pLTClient, "CamLandMinHeight", LTNULL, 50.0f); + g_vtCamLandMoveDist.Init(g_pLTClient, "CamLandMoveDist", LTNULL, -15.0f); + g_vtCamLandDownTime.Init(g_pLTClient, "CamLandDownTime", LTNULL, 0.15f); + g_vtCamLandUpTime.Init(g_pLTClient, "CamLandUpTime", LTNULL, 0.4f); + + g_vtCamLandRollVal.Init(g_pLTClient, "CamLandRollVal", LTNULL, 5.0f); + g_vtCamLandRollTime1.Init(g_pLTClient, "CamLandRollTime1", LTNULL, 0.05f); + g_vtCamLandRollTime2.Init(g_pLTClient, "CamLandRollTime2", LTNULL, 0.15f); + + g_vtCamLandPitchVal.Init(g_pLTClient, "CamLandPitchVal", LTNULL, 5.0f); + g_vtCamLandPitchTime1.Init(g_pLTClient, "CamLandPitchTime1", LTNULL, 0.05f); + g_vtCamLandPitchTime2.Init(g_pLTClient, "CamLandPitchTime2", LTNULL, 0.15f); + + g_vtPlayerGravity.Init(g_pLTClient, "PlayerGravity", LTNULL, DEFAULT_WORLD_GRAVITY); + g_vtInAirAccelMultiplier.Init(g_pLTClient, "InAirAccelMultiplier", LTNULL, 0.1f); + + g_vtSlideToStopTime.Init(g_pLTClient, "SlideToStopTime", LTNULL, 0.1f); + + g_vtMaxPushYVelocity.Init(g_pLTClient, "PusherMaxYVelocity", LTNULL, 100.0f); + + + // Init some defaults. These should NEVER get used because we don't + // have our object until the server sends the physics update. + + m_fSwimVel = 0.0f; + m_fWalkVel = 0.0f; + m_fRunVel = 400.0f; + m_fJumpVel = 550.0f; + m_fSuperJumpVel = 550.0f; + m_fMoveMultiplier = 1.0f; + + m_pVehicleMgr->Init(); + + // Init world specific data members... + + InitWorldData(); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (pProfile) + { + SetRunLock(pProfile->m_bAlwaysRun); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::InitWorldData +// +// PURPOSE: Initialize our data members that are specific to the +// current world. +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::InitWorldData() +{ + m_pVehicleMgr->InitWorldData(); + + m_dwControlFlags = 0; + m_dwLastControlFlags = 0; + + m_fGravity = DEFAULT_WORLD_GRAVITY; + + dl_TieOff(&m_Pushers); + + m_eBodyContainerCode = CC_NO_CONTAINER; + m_bBodyInLiquid = LTFALSE; + m_bBodyOnLadder = LTFALSE; + m_bOnGround = LTTRUE; + m_bOnLift = LTFALSE; + m_bFalling = LTFALSE; + m_bAllowMovement = LTTRUE; + m_eStandingOnSurface = ST_UNKNOWN; + m_bSwimmingOnSurface = LTFALSE; + m_bSwimmingJump = LTFALSE; + m_bCanSwimJump = LTFALSE; + m_hStandingOnPoly = INVALID_HPOLY; + m_bUsingPlayerModel = LTFALSE; + + m_bDuckLock = LTFALSE; + + + m_fBaseMoveAccel = 0.0f; + m_fMoveAccelMultiplier = 1.0f; + m_fJumpMultiplier = 1.0f; + + m_eCurContainerCode = CC_NO_CONTAINER; + m_eLastContainerCode = CC_NO_CONTAINER; + m_nContainers = 0; + + m_bFirstAniUpdate = LTTRUE; + + m_pCharFX = LTNULL; + + m_bForceToServerPos = LTTRUE; + + // Don't overwrite our last ground pos if loading a game... + + if( !m_bLoading ) + { + m_fLastOnGroundY = MIN_ONGROUND_Y; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnEnterWorld +// +// PURPOSE: Handle entering the world +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::OnEnterWorld() +{ + InitWorldData(); + + m_pVehicleMgr->OnEnterWorld(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnExitWorld +// +// PURPOSE: Handle exiting the world +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::OnExitWorld() +{ + m_pVehicleMgr->OnExitWorld(); + + // Clean up any level specific shiznit... + + TermLevel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::TermLevel +// +// PURPOSE: Terminate any level specific stuff +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::TermLevel() +{ + LTLink *pCur, *pNext; + for (pCur=m_Pushers.m_pNext; pCur != &m_Pushers; pCur=pNext) + { + pNext = pCur->m_pNext; + Pusher::GetBank()->Delete((Pusher*)pCur->m_pData); + } + dl_TieOff(&m_Pushers); + + m_pVehicleMgr->TermLevel(); + + m_DamageTimer.Stop(); + + if(m_hObject) + { + g_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateMouseStrafeFlags +// +// PURPOSE: Update the mouse strafe flags +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateMouseStrafeFlags(float *pAxisOffsets) +{ + if (pAxisOffsets[0] < 0.0f) + { + m_dwControlFlags |= BC_CFLG_STRAFE_LEFT; + } + else if (pAxisOffsets[0] > 0.0f) + { + m_dwControlFlags |= BC_CFLG_STRAFE_RIGHT; + } + + if (pAxisOffsets[1] < 0.0f) + { + m_dwControlFlags |= BC_CFLG_FORWARD; + } + else if (pAxisOffsets[1] > 0.0f) + { + m_dwControlFlags |= BC_CFLG_REVERSE; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateControlFlags +// +// PURPOSE: Update the control flags +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateControlFlags() +{ + // Clear control flags... + + m_dwLastControlFlags = m_dwControlFlags; + m_dwControlFlags = 0; + + if( !m_hObject ) + return; + + if (m_pVehicleMgr->IsVehiclePhysics()) + { + m_pVehicleMgr->UpdateControlFlags(); + m_dwControlFlags = m_pVehicleMgr->GetControlFlags(); + } + else + { + UpdateNormalControlFlags(); + } + + // Set the lean flags... + + m_dwControlFlags |= g_pPlayerMgr->GetLeanMgr()->GetControlFlags(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateNormalControlFlags +// +// PURPOSE: Update the normal physics model control flags +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateNormalControlFlags() +{ + if( !g_pInterfaceMgr->AllowCameraMovement() ) + { + // Don't clear the duck flag... + m_dwControlFlags |= (m_dwLastControlFlags & BC_CFLG_DUCK); + return; + } + + // If we're doing mouse strafing, hook us up... + + if (g_pPlayerMgr->IsMouseStrafing()) + { + float offsets[3]; + g_pLTClient->GetAxisOffsets(offsets); + + UpdateMouseStrafeFlags(offsets); + } + + + // Determine what commands are currently on... + + if (g_pLTClient->IsCommandOn(COMMAND_ID_LEFT)) + { + m_dwControlFlags |= BC_CFLG_LEFT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_RIGHT)) + { + m_dwControlFlags |= BC_CFLG_RIGHT; + } + + //if you are a ghost, you can look around, but that's it + if (g_pPlayerMgr->GetPlayerState() == PS_GHOST) return; + + + // Use the player's user flags instead of checking this flag directly + // (this insures that the camera will be moved accurately...) + + if (g_pLTClient->IsCommandOn(COMMAND_ID_DUCK) || m_bDuckLock) + { + m_dwControlFlags |= BC_CFLG_DUCK; + } + + if (g_pPlayerMgr->IsCarryingHeavyObject()) + { + m_dwControlFlags &= ~BC_CFLG_DUCK; + } + + // Force the duck flag back on if we can't stand up in our current position + if (((m_dwControlFlags & BC_CFLG_DUCK) == 0) && ((m_dwLastControlFlags & BC_CFLG_DUCK) != 0)) + { + if (!CanStandUp()) + m_dwControlFlags |= BC_CFLG_DUCK; + } + + // Only process jump and run if we aren't ducking and aren't leaning... + + if (!(m_dwControlFlags & BC_CFLG_DUCK) && !g_pPlayerMgr->GetLeanMgr()->IsLeaning()) + { + if (g_pLTClient->IsCommandOn(COMMAND_ID_RUN) ^ (m_bRunLock != LTFALSE)) + { + m_dwControlFlags |= BC_CFLG_RUN; + } + + //also can't jump while carrying a body + if (g_pLTClient->IsCommandOn(COMMAND_ID_JUMP) && !g_pPlayerMgr->IsCarryingHeavyObject()) + { + m_dwControlFlags |= BC_CFLG_JUMP; + } + } + + // If we're not finished moving up after ducking, we can't jump... + if (!g_pPlayerMgr->IsFinishedDucking()) + { + m_dwControlFlags &= ~BC_CFLG_JUMP; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_FORWARD)) + { + m_dwControlFlags |= BC_CFLG_FORWARD; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_REVERSE)) + { + m_dwControlFlags |= BC_CFLG_REVERSE; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE_RIGHT)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_RIGHT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE_LEFT)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_LEFT; + } + + + if (!g_pPlayerMgr->IsCarryingHeavyObject()) + { + if (g_pLTClient->IsCommandOn(COMMAND_ID_FIRING)) + { + m_dwControlFlags |= BC_CFLG_FIRING; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_ALT_FIRING)) + { + m_dwControlFlags |= BC_CFLG_ALT_FIRING; + } + + + //special case for activating a gadget target + if (g_pLTClient->IsCommandOn(COMMAND_ID_ACTIVATE) && g_pPlayerMgr->FireOnActivate()) + { + m_dwControlFlags |= BC_CFLG_FIRING; + } + + } + + + // Check for strafe left and strafe right. + if ((m_dwControlFlags & BC_CFLG_RIGHT) && (m_dwControlFlags & BC_CFLG_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_RIGHT; + } + + if ((m_dwControlFlags & BC_CFLG_LEFT) && (m_dwControlFlags & BC_CFLG_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_LEFT; + } + + if ( (m_dwControlFlags & BC_CFLG_FORWARD) || + (m_dwControlFlags & BC_CFLG_REVERSE) || + (m_dwControlFlags & BC_CFLG_ROLL_LEFT) || + (m_dwControlFlags & BC_CFLG_ROLL_RIGHT) || + (m_dwControlFlags & BC_CFLG_STRAFE_LEFT) || + (m_dwControlFlags & BC_CFLG_STRAFE_RIGHT) || + (m_dwControlFlags & BC_CFLG_JUMP)) + { + m_dwControlFlags |= BC_CFLG_MOVING; + } + + if ((m_dwControlFlags & BC_CFLG_JUMP) && + !(m_dwLastControlFlags & BC_CFLG_JUMP)) + { + g_bJumpRequested = LTTRUE; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateContainerViscosity +// +// PURPOSE: Update our friction based on the containers we're in +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateContainerViscosity(CContainerInfo *pInfo) +{ + if (!pInfo || pInfo->m_bHidden) return; + + // Only allow the container to affect players in the correct physics model.... + + if( pInfo->m_ePPhysicsModel != m_pVehicleMgr->GetPhysicsModel() ) + return; + + // Don't do viscosity dampening, if we're jumping out of water... + + if (!m_bBodyOnLadder && m_bJumped && !IsHeadInLiquid()) return; + + + // Update the total viscosity for the frame... + + m_fTotalViscosity += pInfo->m_fViscosity; + + + // Do REAL viscosity dampening (i.e., actually change our velocity)... + + LTVector vVel = GetVelocity(); + LTVector vCurVel = vVel; + + if (pInfo->m_fViscosity > 0.0f && VEC_MAG(vCurVel) > 1.0f) + { + LTVector vDir = vCurVel; + vDir.Normalize(); + + LTFLOAT fAdjust = MAX_CONTAINER_VISCOSITY * pInfo->m_fViscosity; + fAdjust *= g_pGameClientShell->GetFrameTime(); + + vVel = (vDir * fAdjust); + + if (vVel.MagSqr() < vCurVel.MagSqr()) + { + vVel = vCurVel - vVel; + } + else + { + vVel.Init(); + } + + g_pPhysicsLT->SetVelocity(m_hObject, &vVel); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateContainerGravity +// +// PURPOSE: Update our gravity based on the containers we're in +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateContainerGravity( CContainerInfo *pInfo ) +{ + // Only do this for Gavity volumes for now.... + + if( !pInfo || pInfo->m_bHidden || pInfo->m_ContainerCode != CC_GRAVITY ) return; + + // Only allow the container to affect players in the correct physics model.... + + if( pInfo->m_ePPhysicsModel != m_pVehicleMgr->GetPhysicsModel() ) + return; + + m_bGravityOverride = true; + m_fTotalContainerGravity += pInfo->m_fGravity; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::CanSave +// +// PURPOSE: Determines whether or not it's safe to save this object +// +// ----------------------------------------------------------------------- // + +bool CMoveMgr::CanSave() const +{ + return m_pVehicleMgr->CanSave(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateInLiquid +// +// PURPOSE: Update being in liquid +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateInLiquid(CContainerInfo *pInfo) +{ + m_bBodyInLiquid = LTTRUE; + + // Ladder physics takes priority over liquid... + + if (m_bBodyOnLadder) return; + + LTBOOL bHeadInLiquid = IsHeadInLiquid(); + + LTVector vVel = GetVelocity(); + + LTVector curAccel; + g_pPhysicsLT->GetAcceleration(m_hObject, &curAccel); + + // Handle floating around on the surface... + + if (m_bSwimmingOnSurface) + { + LTBOOL bMoving = ((curAccel.Length() > 0.01f) || (vVel.Length() > 0.01f)); + + // Disable gravity. + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_GRAVITY); + + if (bMoving) // Turn off y acceleration and velocity + { + if (vVel.y > 0.0f || curAccel.y > 0.0f) + { + vVel.y = 0.0f; + curAccel.y = 0.0f; + } + } + else // Pull us down if we're not moving (fast enough) + { + curAccel.y += pInfo->m_fGravity; + } + + } + else if (bHeadInLiquid) + { + // Disable gravity. + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_GRAVITY); + + curAccel.y += pInfo->m_fGravity; + } + + g_pPhysicsLT->SetVelocity(m_hObject, &vVel); + g_pPhysicsLT->SetAcceleration(m_hObject, &curAccel); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBaseCharacter::UpdateOnLadder +// +// PURPOSE: Update movement when on a ladder +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateOnLadder(CContainerInfo *pInfo) +{ + m_bBodyOnLadder = LTTRUE; + m_hLadderObject = pInfo->m_hObject; + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_GRAVITY); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateOnGround +// +// PURPOSE: Update our "on ground" status +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateOnGround() +{ + // Lets see if we are in the ground or in the air. + + CollisionInfo Info; + g_pPhysicsLT->GetStandingOn(m_hObject, &Info); + + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hObject, &vPos); + + // Clear surface we're standing on... + + m_bOnLift = LTFALSE; + m_hStandingOnPoly = INVALID_HPOLY; + m_bOnGround = LTFALSE; + + if (Info.m_hObject) + { + m_bOnGround = LTTRUE; + + // If we didn't jump, tell the server we landed (if we jumped, then + // this will be sent in UpdateStartMotion()... + + if (!m_bJumped && m_bFalling) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_MOTION_STATUS); + cMsg.Writeuint8(MS_LANDED); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + m_bFalling = LTFALSE; + + m_eStandingOnSurface = ST_UNKNOWN; + if (Info.m_hPoly != INVALID_HPOLY) + { + m_hStandingOnPoly = Info.m_hPoly; + m_eStandingOnSurface = GetSurfaceType(Info.m_hPoly); + } + else // Get the texture flags from the object... + { + m_eStandingOnSurface = GetSurfaceType(Info.m_hObject); + } + + + // See if we are standing on a lift (i.e., on an object that + // may move)... + + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(Info.m_hObject, OFT_User, dwUserFlags); + + if (dwUserFlags & USRFLG_MOVEABLE) + { + m_bOnLift = LTTRUE; + } + + + // See if we fell... + + LTFLOAT fDistFell = m_fLastOnGroundY - vPos.y; + m_fLastOnGroundY = vPos.y; + + if (fDistFell > 1.0f && !m_bBodyOnLadder) + { + HandleFallLand(fDistFell); + } + + // Handle landing after jumping... + + if (m_bJumped) + { + m_bJumped = LTFALSE; + UpdateStartMotion(LTTRUE); + } + + // Save the normal of the surface we are standing on... + + m_vGroundNormal = Info.m_Plane.m_Normal; + + // Make sure we fall down step slopes... + + if (m_vGroundNormal.y < 0.707) + { + m_bOnGround = LTFALSE; + } + + // Don't allow standing on characters + if (dwUserFlags & USRFLG_CHARACTER) + { + m_bOnGround = LTFALSE; + } + } + + + // Cases when we can't be on the ground... + + if (m_bJumped || IsHeadInLiquid()) + { + m_bOnGround = LTFALSE; + } + + if (!m_bOnGround) + { + if (g_pPlayerMgr->IsSpectatorMode()) + { + m_fLastOnGroundY = MIN_ONGROUND_Y; + } + else + { + // If we're moving up (i.e., jumping, on a lift, etc.), update + // our last on ground y pos... + + if (vPos.y > m_fLastOnGroundY) + { + m_fLastOnGroundY = vPos.y; + } + } + + // See if we're done jumping... + + if (m_bJumped) + { + if (IsHeadInLiquid()) + { + m_bJumped = LTFALSE; + UpdateStartMotion(LTTRUE); + } + } + } + + + // Update our standing on surface... + + if (m_bBodyOnLadder) + { + m_eStandingOnSurface = ST_LADDER; + } + else if (m_bBodyInLiquid) + { + m_eStandingOnSurface = ST_LIQUID; + } + + + // See if we just started falling (i.e., we're not in liquid, we didn't + // jump, and there is a bit of distance between us and the ground)... + + LTBOOL bFreeMovement = (IsFreeMovement() || m_bBodyOnLadder || g_pPlayerMgr->IsSpectatorMode()); + + if (!bFreeMovement && !m_bJumped && !CanDoFootstep() && !m_bFalling) + { + m_bFalling = LTTRUE; + + // Tell the server we're falling... + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_MOTION_STATUS); + cMsg.Writeuint8(MS_FALLING); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::CanDoFootstep +// +// PURPOSE: Can we make a footstep sound or footprint? +// +// ----------------------------------------------------------------------- // + +LTBOOL CMoveMgr::CanDoFootstep() +{ + // This is basically just the same as m_bOnGround, however, when going + // up/down stairs often m_bOnGround is false...So... + + // No footsteps if standing on sky/invisible texture (this should + // only happen in really special case levels)... + + if (m_eStandingOnSurface == ST_INVISIBLE || m_eStandingOnSurface == ST_SKY) + { + return LTFALSE; + } + + // NOTE the order of these trivial case returns is important... + + if (IsBodyOnLadder()) return LTTRUE; // Even if underwater + if (IsHeadInLiquid()) return LTFALSE; // Even if on the ground + if (m_bOnGround) return LTTRUE; // Even if we just jumped + if (m_bJumped) return LTFALSE; + + + // This is sort of lame...but can't think of a better approach. Cast + // a ray down and see if we hit something... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hObject, &vPos); + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = IGNORE_NONSOLID | INTERSECT_OBJECTS | INTERSECT_HPOLY; + iQuery.m_From = vPos; + iQuery.m_To = iQuery.m_From; + iQuery.m_To.y -= 150.0f; + + // Don't hit ourself... + + HOBJECT hFilterList[] = {g_pLTClient->GetClientObject(), m_hObject, LTNULL}; + + iQuery.m_FilterFn = ObjListFilterFn; + iQuery.m_pUserData = hFilterList; + + if (!g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + m_eStandingOnSurface = ST_UNKNOWN; + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::HandleFallLand +// +// PURPOSE: Handle landing +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::HandleFallLand(LTFLOAT fDistFell) +{ + if (IsHeadInLiquid()) return; + + float fMinLandHeight = g_vtCamLandMinHeight.GetFloat(); + float fDamageMinHeight = m_pVehicleMgr->IsVehiclePhysics() ? g_vtVehicleFallDamageMinHeight.GetFloat() : g_vtFallDamageMinHeight.GetFloat(); + float fDamageMaxHeight = m_pVehicleMgr->IsVehiclePhysics() ? g_vtVehicleFallDamageMaxHeight.GetFloat() : g_vtFallDamageMaxHeight.GetFloat(); + float fFallDamageMin = g_vtFallDamageMin.GetFloat(); + float fFallDamageMax = g_vtFallDamageMax.GetFloat(); + + if (fDistFell > fMinLandHeight) + { + // Adjust camera... + + CameraDelta delta; + + delta.PosY.fVar = g_vtCamLandMoveDist.GetFloat(); + delta.PosY.fTime1 = g_vtCamLandDownTime.GetFloat(); + delta.PosY.fTime2 = g_vtCamLandUpTime.GetFloat(); + delta.PosY.eWave1 = Wave_SlowOff; + delta.PosY.eWave2 = Wave_SlowOff; + + if (fDistFell >= fDamageMinHeight) + { + float fHeightRange = fDamageMaxHeight - fDamageMinHeight; + float fDamageRange = fFallDamageMax - fFallDamageMin; + float fDamage = fFallDamageMin + fDamageRange * (fDistFell - fDamageMinHeight) / fHeightRange; + + // Send damage message to server... + + // See if we're in a SafteyNet, if so, no damage... + + if (!g_pPlayerMgr->InSafetyNet()) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_DAMAGE); + cMsg.Writeuint8(DT_CRUSH); + cMsg.Writefloat(fDamage); + // Ground caused damage... + cMsg.WriteLTVector(LTVector(0.0f, 1.0f, 0.0f)); + cMsg.Writeuint8(0); + cMsg.WriteObject(g_pLTClient->GetClientObject()); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + // Tweak camera... + + delta.Roll.fVar = DEG2RAD(g_vtCamLandRollVal.GetFloat()); + delta.Roll.fVar = GetRandom(0, 1) == 1 ? -delta.Roll.fVar : delta.Roll.fVar; + delta.Roll.fTime1 = g_vtCamLandRollTime1.GetFloat(); + delta.Roll.fTime2 = g_vtCamLandRollTime2.GetFloat(); + delta.Roll.eWave1 = Wave_SlowOff; + delta.Roll.eWave2 = Wave_SlowOff; + + delta.Pitch.fVar = DEG2RAD(g_vtCamLandPitchVal.GetFloat()); + delta.Pitch.fTime1 = g_vtCamLandPitchTime1.GetFloat(); + delta.Pitch.fTime2 = g_vtCamLandPitchTime2.GetFloat(); + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + + // Play land sound... + + LTBOOL bPlaySound = LTFALSE; + if (!IsHeadInLiquid()) + { + bPlaySound = (m_bBodyInLiquid ? m_bOnGround : (m_eStandingOnSurface != ST_INVISIBLE)); + } + + if (bPlaySound) + { + char* pNormalSounds[] = { "Chars\\Snd\\player\\landing1.wav", "Chars\\Snd\\player\\landing2.wav" }; + char* pVehicleSounds[] = { "Snd\\vehicle\\snowmobile\\landing1.wav", "Snd\\vehicle\\snowmobile\\landing2.wav" }; + char** pSounds = (m_pVehicleMgr->IsVehiclePhysics() ? pVehicleSounds : pNormalSounds); + + g_pClientSoundMgr->PlaySoundLocal(pSounds[GetRandom(0,1)], SOUNDPRIORITY_PLAYER_HIGH); + } + } + + g_pPlayerMgr->GetCameraOffsetMgr()->AddDelta(delta); + + // If we're on a vehicle, adjust the vehicle model... + + if (m_pVehicleMgr->IsVehiclePhysics()) + { + CameraDelta delta; + + delta.PosY.fVar = 0.1f; + delta.PosY.fTime1 = 0.2f; + delta.PosY.fTime2 = 0.5f; + delta.PosY.eWave1 = Wave_SlowOff; + delta.PosY.eWave2 = Wave_SlowOff; + + m_pVehicleMgr->GetModelOffsetMgr()->AddDelta(delta); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateMotion +// +// PURPOSE: Update our motion +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateMotion() +{ + // Reset to the server position if we didn't know where to go at creation time + if (m_bForceToServerPos) + { + HOBJECT hClientObj = g_pLTClient->GetClientObject(); + if (hClientObj) + { + LTVector vServerPos; + g_pLTClient->GetObjectPos(hClientObj, &vServerPos); + g_pLTClient->SetObjectPos(m_hObject, &vServerPos); + m_bForceToServerPos = LTFALSE; + } + } + + if (!m_bAllowMovement || !g_pDamageFXMgr->AllowMovement() ) + { + // Clear accel/velocity... + LTVector vVec; + g_pPhysicsLT->GetAcceleration(m_hObject, &vVec); + + vVec.x = vVec.z = 0.0f; + if (vVec.y > 0.0f) vVec.y = 0.0f; + + g_pPhysicsLT->SetAcceleration(m_hObject, &vVec); + + // Dampen velocity... + g_pPhysicsLT->GetVelocity(m_hObject, &vVec); + vVec.x *= 0.5f; + vVec.z *= 0.5f; + if (vVec.y > 0.0f) vVec.y = 0.0f; + + g_pPhysicsLT->SetVelocity(m_hObject, &vVec); + return; + } + + // Make sure this gets reset... + m_fTotalContainerGravity = 0.0f; + m_bGravityOverride = false; + + if (m_pVehicleMgr->IsVehiclePhysics()) + { + m_pVehicleMgr->UpdateMotion(); + } + else + { + UpdateNormalMotion(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateSound +// +// PURPOSE: Update our sounds +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateSound() +{ + if( m_pVehicleMgr->IsVehiclePhysics( )) + m_pVehicleMgr->UpdateSound(); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateNormalMotion +// +// PURPOSE: Update our normal motion +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateNormalMotion() +{ + LTFLOAT fTime = g_pLTClient->GetTime(); + + // Zero out the acceleration to start with. + + LTVector vAccel(0, 0, 0); + g_pPhysicsLT->SetAcceleration(m_hObject, &vAccel); + + + // Update motion due to any containers + + UpdateContainerMotion(); + + + // Update m_bOnGround data member... + + UpdateOnGround(); + + + // Set our current rotation. + + LTRotation rRot; + g_pPlayerMgr->GetPlayerRotation(rRot); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + + + LTVector myVel = GetVelocity(); + + LTVector moveVel = myVel; + moveVel.y = 0; + + float fMaxVel; + LTBOOL bHeadInLiquid = IsHeadInLiquid(); + LTBOOL bInLiquid = (bHeadInLiquid || m_bBodyInLiquid); + LTBOOL bFreeMovement = (IsFreeMovement() || m_bBodyOnLadder || g_pPlayerMgr->IsSpectatorMode()); + + fMaxVel = GetMaxVelMag(); + + // Determine if we are currently trying to jump... + + LTBOOL bJumping = LTFALSE; + if (bFreeMovement) + { + if (m_dwControlFlags & BC_CFLG_JUMP) + { + bJumping = LTTRUE; + } + + g_bJumpRequested = LTFALSE; + } + else // normal case + { + bJumping = g_bJumpRequested && !m_bJumped; + } + + + + // Limit velocity... + + if (m_bBodyInLiquid || m_bBodyOnLadder) + { + LTBOOL bCapY = LTTRUE; + + // Cap the velocity in all directions, unless we're falling into, + // or jumping out of, liquid... + + if (m_bBodyInLiquid && !m_bBodyOnLadder) + { + if (!bHeadInLiquid && !m_bSwimmingOnSurface) + { + // Don't cap velocity in the y direction... + + bCapY = LTFALSE; + } + } + + if (bCapY) + { + moveVel = myVel; + } + + if (moveVel.Length() > fMaxVel) + { + moveVel.Normalize(); + moveVel *= fMaxVel; + + myVel.x = moveVel.x; + myVel.z = moveVel.z; + if (bCapY) + { + myVel.y = moveVel.y; + } + + g_pPhysicsLT->SetVelocity(m_hObject, &myVel); + } + } + else if (m_bOnGround && !g_pPlayerMgr->IsSpectatorMode() && !bJumping) + { + float fCurLen = (float)sqrt(myVel.x*myVel.x + myVel.z*myVel.z); + if (fCurLen > fMaxVel) + { + myVel *= (fMaxVel/fCurLen); + + g_pPhysicsLT->SetVelocity(m_hObject, &myVel); + } + } + else if (moveVel.Length() > fMaxVel) + { + // Don't cap velocity in the y direction... + + moveVel.Normalize(); + moveVel *= fMaxVel; + + myVel.x = moveVel.x; + myVel.z = moveVel.z; + + g_pPhysicsLT->SetVelocity(m_hObject, &myVel); + } + + + + // See if we just broke the surface of water... + + if ((IsLiquid(m_eLastContainerCode) && !bHeadInLiquid) && !m_bOnGround && !m_bBodyOnLadder ) + { + m_bSwimmingOnSurface = LTTRUE; + } + else if (bHeadInLiquid) // See if we went back under... + { + m_bSwimmingOnSurface = LTFALSE; + m_bCanSwimJump = LTTRUE; + } + else if( !m_bBodyInLiquid ) + { + m_bSwimmingOnSurface = LTFALSE; + m_bCanSwimJump = LTFALSE; + } + + + // If we're doing a swimming jump, keep jumping while we're not out of + // the water (and we're still trying to get out)... + + if (m_bSwimmingJump) + { + m_bSwimmingJump = (m_bBodyInLiquid && bJumping); + } + + + if (g_pPlayerMgr->IsSpectatorMode() || m_bSwimmingOnSurface || + m_bBodyOnLadder || IsFreeMovement()) + { + g_pPlayerMgr->GetCameraRotation(rRot); + } + else + { + g_pLTClient->GetObjectRotation(m_hObject, &rRot); + } + + LTVector vRight, vForward; + vRight = rRot.Right(); + vForward = rRot.Forward(); + vRight.y = 0.0f; + + + LTFLOAT fMoveAccelMulti = m_fMoveAccelMultiplier; + if (m_bBodyInLiquid || m_bBodyOnLadder) + { + fMoveAccelMulti = fMoveAccelMulti < 1.0f ? 1.0f : fMoveAccelMulti; + } + + LTFLOAT fMoveAccel = (m_fBaseMoveAccel * fMoveAccelMulti); + + if (g_pPlayerMgr->IsSpectatorMode()) + { + LTVector vZero(0, 0, 0); + g_pPhysicsLT->SetVelocity(m_hObject, &vZero); + + fMoveAccel = (m_dwControlFlags & BC_CFLG_RUN) ? 2.0f * SPECTATOR_ACCELERATION : SPECTATOR_ACCELERATION; + fMoveAccel *= m_fMoveAccelMultiplier; + fMoveAccel *= m_CV_SpectatorSpeedMul.GetFloat(); + } + else if (!bInLiquid && !bFreeMovement) + { + // Can only move forward in x and z directions... + + vForward.y = 0.0; + vForward.Normalize(); + } + else if (m_bBodyInLiquid && !bHeadInLiquid && !m_bBodyOnLadder) + { + // No up acceleration... + + vForward.y = vForward.y > 0.0 ? 0.0f : vForward.y; + vForward.Normalize(); + } + + LTFLOAT fJumpVel = g_pPlayerMgr->GetJumpVelocity(m_fJumpVel,m_fSuperJumpVel) * m_fJumpMultiplier; + + // If we're ducking make us move slower.... + + if (((m_dwControlFlags & BC_CFLG_DUCK) && !m_bBodyInLiquid && !m_bBodyOnLadder) || g_pPlayerMgr->GetLeanMgr()->IsLeaning() ) + { + fMoveAccel /= 2.0f; + } + + // If we're in the air during a normal jump, adjust how much we can move... + + if (m_bJumped && !bFreeMovement) + { + fMoveAccel *= g_vtInAirAccelMultiplier.GetFloat(); + } + + + // If we aren't dead we can walk around + + if (!g_pPlayerMgr->IsPlayerDead()) + { + if (m_dwControlFlags & BC_CFLG_FORWARD) + { + vAccel += (vForward * fMoveAccel); + } + + if (m_dwControlFlags & BC_CFLG_REVERSE) + { + vAccel -= (vForward * fMoveAccel); + } + + + // If we are in a container that supports free movement, see if we are + // moving up or down... + + if (bInLiquid || bFreeMovement) + { + if (bJumping) + { + if (bInLiquid && !m_bBodyOnLadder) + { + if (bHeadInLiquid || m_bSwimmingOnSurface) + { + vAccel.y = fMoveAccel; + } + } + else + { + vAccel.y += fMoveAccel; + } + } + if (m_dwControlFlags & BC_CFLG_DUCK) + { + vAccel.y = -fMoveAccel; + } + } + + + if (m_dwControlFlags & BC_CFLG_STRAFE_LEFT) + { + vAccel -= (vRight * fMoveAccel); + } + + if (m_dwControlFlags & BC_CFLG_STRAFE_RIGHT) + { + vAccel += (vRight * fMoveAccel); + } + } + + g_pPhysicsLT->SetAcceleration(m_hObject, &vAccel); + + LTVector vel = GetVelocity();; + + // We can jump if we are not dead... + + LTBOOL bOkayToJump = LTFALSE; + if (bJumping && !g_pPlayerMgr->IsPlayerDead()) + { + if (!bHeadInLiquid && m_bBodyInLiquid) + { + if (m_bCanSwimJump) + { + m_bSwimmingJump = LTTRUE; + m_bCanSwimJump = LTFALSE; + } + // If our head is out of the liquid and we're standing on the + // ground, let us jump out of the water... + else if (m_bOnGround) + { + m_bSwimmingJump = LTTRUE; + } + } + + bOkayToJump = (m_bSwimmingJump || (m_bOnGround && !m_bBodyInLiquid && !m_bBodyOnLadder)); + + if (bOkayToJump) + { + vel.y = fJumpVel; + + m_bJumped = LTTRUE; + m_bSwimmingOnSurface = LTFALSE; + g_bJumpRequested = LTFALSE; + } + } + + + // If in spectator mode, dampen velocity... + + if (g_pPlayerMgr->IsSpectatorMode()) + { + vel *= 0.9f; + if (vel.Length() < 0.1f) + { + vel.Init(); + } + } + + + // Add any container currents to my velocity.. + + vel += m_vTotalCurrent; + g_pPhysicsLT->SetVelocity(m_hObject, &vel); + + // If we're dead, we can't move.... + + if (g_pPlayerMgr->IsPlayerDead() || + !g_pPlayerMgr->IsPlayerMovementAllowed()) + { + LTVector vZero(0, 0, 0); + g_pPhysicsLT->SetVelocity(m_hObject, &vZero); + g_pPhysicsLT->SetAcceleration(m_hObject, &vZero); + } + + // Handle case when we just start moving... + + UpdateStartMotion(bOkayToJump); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateContainerMotion +// +// PURPOSE: Update motion while in a container +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateContainerMotion() +{ + // Initialize containter totals... + + m_vTotalCurrent.Init(); + m_fTotalViscosity = 0.0f; + + // Normally we have gravity on, but the containers might turn it off. + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, g_pPlayerMgr->IsSpectatorMode() ? 0 : FLAG_GRAVITY, FLAG_GRAVITY); + + + m_eBodyContainerCode = CC_NO_CONTAINER; + m_bBodyInLiquid = m_bBodyOnLadder = LTFALSE; + m_hLadderObject = LTNULL; + + UpdateContainerList(); + + // Do ladder containers first... + + uint32 i; + + LTBOOL bDidLadder = LTFALSE; + for (i=0; i < m_nContainers; i++) + { + // Adjust the player's velocity based on the friction of the container... + + if (!m_Containers[i].m_bHidden && m_Containers[i].m_ContainerCode == CC_LADDER) + { + m_eBodyContainerCode = m_Containers[i].m_ContainerCode; + + if (m_Containers[i].m_ContainerCode == CC_LADDER && !bDidLadder) + { + UpdateOnLadder(&m_Containers[i]); + + // Only do ladder viscosity once...Make sure we update if + // we're on a ladder first... + + if (!bDidLadder) + { + UpdateContainerViscosity(&m_Containers[i]); + } + + bDidLadder = LTTRUE; + } + + m_vTotalCurrent += m_Containers[i].m_Current * g_pGameClientShell->GetFrameTime(); + } + } + + + // Do Non-ladder containers... + + LTBOOL bDidLiquid = LTFALSE; + for (i=0; i < m_nContainers; i++) + { + // Adjust the player's velocity based on the friction of the container... + + if (!m_Containers[i].m_bHidden && m_Containers[i].m_ContainerCode != CC_LADDER) + { + m_eBodyContainerCode = m_Containers[i].m_ContainerCode; + + // Only do water viscosity once... + + LTBOOL bUpdateViscosity = LTTRUE; + if (IsLiquid(m_Containers[i].m_ContainerCode) && bDidLiquid) + { + bUpdateViscosity = LTFALSE; + } + + if (bUpdateViscosity) + { + UpdateContainerViscosity(&m_Containers[i]); + UpdateContainerGravity( &m_Containers[i] ); + } + + if (IsLiquid(m_Containers[i].m_ContainerCode) && !bDidLiquid) + { + UpdateInLiquid(&m_Containers[i]); + bDidLiquid = LTTRUE; + } + + m_vTotalCurrent += m_Containers[i].m_Current * g_pGameClientShell->GetFrameTime(); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateContainerList +// +// PURPOSE: Update the client-side container list +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateContainerList() +{ + // If we're a non-local client, refill the container array + bool bClientOnServer = false; + g_pLTClient->IsLocalToServer(&bClientOnServer); + if (bClientOnServer) + return; + + HOBJECT aContainers[MAX_TRACKED_CONTAINERS]; + m_nContainers = 0; + uint32 nContainers = g_pLTClient->GetObjectContainers(m_hObject, aContainers, MAX_TRACKED_CONTAINERS); + + nContainers = LTMIN(nContainers, MAX_TRACKED_CONTAINERS); + LTFLOAT fCoeff = 1.0f; + for (uint32 i=0; i < nContainers; i++) + { + CVolumeBrushFX *pVBFX = (CVolumeBrushFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_VOLUMEBRUSH_ID, aContainers[i]); + // Check if this isn't a volumebrush container, which means it won't + // affect our movement. + if (!pVBFX) + { + continue; + } + uint32 nServerObjFlags; + g_pCommonLT->GetObjectFlags(pVBFX->GetServerObj(), OFT_User, nServerObjFlags); + m_Containers[m_nContainers].m_bHidden = (nServerObjFlags & USRFLG_VISIBLE) == 0; + m_Containers[m_nContainers].m_ContainerCode = pVBFX->GetCode(); + m_Containers[m_nContainers].m_Current = pVBFX->GetCurrent(); + m_Containers[m_nContainers].m_ePPhysicsModel = pVBFX->GetPhysicsModel(); + m_Containers[m_nContainers].m_fGravity = pVBFX->GetGravity(); + m_Containers[m_nContainers].m_fViscosity = pVBFX->GetViscosity(); + m_Containers[m_nContainers].m_hObject = aContainers[i]; + fCoeff = LTMIN(fCoeff, pVBFX->GetFriction()); + m_nContainers++; + } + + fCoeff *= DEFAULT_FRICTION; + g_pPhysicsLT->SetFrictionCoefficient(m_hObject, fCoeff); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateStartMotion +// +// PURPOSE: Update starting to move +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateStartMotion(LTBOOL bForce) +{ + // Play a footstep sound to indicate we are moving... + + if (!bForce) + { + // If we're not moving, check to see if we're ducking... + + uint32 dwTestFlags = (BC_CFLG_MOVING | BC_CFLG_DUCK); + if (( (m_dwLastControlFlags & dwTestFlags) || + !(m_dwControlFlags & dwTestFlags))) + { + return; + } + } + + + // Tell server if the player just started to jump or just landed... + + if (bForce) + { + uint8 nStatus = m_bJumped ? MS_JUMPED : MS_LANDED; + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_MOTION_STATUS); + cMsg.Writeuint8(nStatus); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + // Play the jump sound for this client so the sound isnt't lagged in multiplayer... + + if (m_bJumped) + { + LTBOOL bPlaySound = LTFALSE; + if (!IsHeadInLiquid()) + { + bPlaySound = (m_bBodyInLiquid ? m_bOnGround : (m_eStandingOnSurface != ST_INVISIBLE)); + } + + if (bPlaySound) + { + char* pSounds[] = { "Chars\\Snd\\jump1.wav", "Chars\\Snd\\jump2.wav" }; + g_pClientSoundMgr->PlaySoundLocal(pSounds[GetRandom(0,1)], SOUNDPRIORITY_PLAYER_HIGH); + } + } + } + + + if (m_pCharFX) + { + m_pCharFX->DoFootStep(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdatePushers +// +// PURPOSE: Update anything that might push us +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdatePushers() +{ + LTLink *pCur, *pNext; + Pusher *pPusher; + LTVector myPos, pushVec, vel; + float dist, velocity; + CollisionInfo info; + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + if (!m_hObject || !g_pLTClient || !g_pPhysicsLT) return; + + g_pLTClient->GetObjectPos(m_hObject, &myPos); + for(pCur=m_Pushers.m_pNext; pCur != &m_Pushers; pCur=pNext) + { + pNext = pCur->m_pNext; + + pPusher = (Pusher*)pCur->m_pData; + + pPusher->m_Delay -= g_pGameClientShell->GetFrameTime(); + if(pPusher->m_Delay <= 0.0f) + { + pPusher->m_TimeLeft -= g_pGameClientShell->GetFrameTime(); + if(pPusher->m_TimeLeft <= 0.0f) + { + // Expired.. + dl_Remove(&pPusher->m_Link); + Pusher::GetBank()->Delete(pPusher); + } + else + { + // Are we within range? + dist = VEC_DIST(pPusher->m_Pos, myPos); + if(dist < pPusher->m_Radius) + { + memset(&iQuery, 0, sizeof(iQuery)); + iQuery.m_From = pPusher->m_Pos; + iQuery.m_To = myPos; + if(!g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + velocity = 1.0f - (dist / pPusher->m_Radius); + velocity *= pPusher->m_Strength; + + // If we're in the air, apply less (since there's no friction). + g_pPhysicsLT->GetStandingOn(m_hObject, &info); + if(!info.m_hObject) + { + velocity /= 10.0f; + } + + pushVec = myPos - pPusher->m_Pos; + pushVec *= velocity / pushVec.Length(); + + vel = GetVelocity(); + vel += pushVec; + + // [KLS 5/20/02] Cap Y velocity. Don't allow us to + // fly too high... + if (vel.y > g_vtMaxPushYVelocity.GetFloat()) + { + DebugCPrint(1,"Old Pusher Y Vel = %.2f", vel.y); + vel.y = g_vtMaxPushYVelocity.GetFloat(); + } + + g_pPhysicsLT->SetVelocity(m_hObject, &vel); + } + } + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdatePlayerAnimation +// +// PURPOSE: Update our animation +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdatePlayerAnimation() +{ + HOBJECT hClientObj; + uint32 modelAnim(0), curModelAnim(0), curFlags(0); + HRESULT result(LT_OK); + + if (!(hClientObj = g_pLTClient->GetClientObject())) return; + + // Make sure our solid object is on the same animation. + + curModelAnim = g_pLTClient->GetModelAnimation(m_hObject); + + // Make sure we are playing the animation corresponding to the dims... + if (m_pCharFX) + { + HRESULT result = g_pModelLT->GetCurAnim(m_pCharFX->GetServerObj(), m_pCharFX->m_cs.nDimsTracker, modelAnim); + //ASSERT(result == LT_OK); + } + + // See if we should use the main anim... + if (modelAnim == 0) + { + modelAnim = g_pLTClient->GetModelAnimation(hClientObj); + } + + if (modelAnim != curModelAnim || m_bFirstAniUpdate) + { + // Force this once to make sure our dims get set correctly... + + m_bFirstAniUpdate = LTFALSE; + + // Kind of wierd what we do here.. the engine sets the dims automatically when + // we change animations but it doesn't do collision detection (and we don't want + // it to) so we may end up clipping into the world so we set it to a small cube + // and resize the dims with collision detection. + g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, curFlags); + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_GOTHRUWORLD, FLAG_GOTHRUWORLD | FLAG_SOLID); + + g_pLTClient->SetModelAnimation(m_hObject, modelAnim); + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, curFlags, FLAGMASK_ALL); + + // This makes you small before setting the dims so you don't clip thru stuff. + + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::AreDimsCorrect +// +// PURPOSE: Validate our dims +// +// ----------------------------------------------------------------------- // + +LTBOOL CMoveMgr::AreDimsCorrect() +{ + if(!m_hObject || !g_pPhysicsLT) + return LTTRUE; + + LTVector curDims; + + g_pPhysicsLT->GetObjectDims(m_hObject, &curDims); + return curDims.NearlyEquals(m_vWantedDims, 0.1f); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::ResetDims +// +// PURPOSE: Reset our dims +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::ResetDims(LTVector *pOffset) +{ + // Remember our old position and size, just in case + LTVector vOldDims; + g_pPhysicsLT->GetObjectDims(m_hObject, &vOldDims); + LTVector vOldPos; + g_pLTClient->GetObjectPos(m_hObject, &vOldPos); + + // Save off our wanted dims they dont change; + LTVector vNewDims = m_vWantedDims; + + // Try to set our wanted dims... + if (g_pPhysicsLT->SetObjectDims(m_hObject, &vNewDims, SETDIMS_PUSHOBJECTS) != LT_OK) + { + // Go back to where we were.. + g_pPhysicsLT->SetObjectDims(m_hObject, &vOldDims, 0); + g_pLTClient->SetObjectPos(m_hObject, &vOldPos); + } + // Move them if they want + else if (pOffset && (*pOffset != LTVector(0.0f, 0.0f, 0.0f))) + { + LTVector vNewPos = vOldPos + *pOffset; + g_pPhysicsLT->MoveObject(m_hObject, &vNewPos, 0); + LTVector vResultPos; + g_pLTClient->GetObjectPos( m_hObject, &vResultPos ); + // Update the "last on ground" position so we don't think we're falling based on the position change + CollisionInfo Info; + g_pPhysicsLT->GetStandingOn(m_hObject, &Info); + if (Info.m_hObject) + m_fLastOnGroundY = vResultPos.y; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::CanStandUp +// +// PURPOSE: Determine whether or not we can stand up in our current position (and state) +// +// ----------------------------------------------------------------------- // + +bool CMoveMgr::CanStandUp() +{ + // Are you currently crouching + LTVector vCurDims; + g_pPhysicsLT->GetObjectDims(m_hObject, &vCurDims); + if (vCurDims.y > m_vCrouchDims.y) + { + // You're already standing.. What are you asking me for? + return true; + } + + LTVector vOldPos; + g_pLTClient->GetObjectPos(m_hObject, &vOldPos); + + // Can we stand? + LTVector vWantedDims = m_vStandDims; + bool bResult = (g_pPhysicsLT->SetObjectDims(m_hObject, &vWantedDims, SETDIMS_PUSHOBJECTS) == LT_OK); + + // Reset our dims to what they were before. + g_pPhysicsLT->SetObjectDims(m_hObject, &vCurDims, 0); + g_pLTClient->SetObjectPos(m_hObject, &vOldPos); + + return bResult; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::MoveLocalSolidObject +// +// PURPOSE: Move our object +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::MoveLocalSolidObject() +{ + MoveInfo info; + LTVector newPos, curPos; + + // Check if we're using a vehicle physics model. + if( m_pVehicleMgr->IsVehiclePhysics( )) + { + // See if the vehiclemgr handled our move. + if( m_pVehicleMgr->MoveLocalSolidObject( )) + return; + } + + ILTClientPhysics* pPhysics = (ILTClientPhysics*)g_pPhysicsLT; + + // We may want gravity to be different for us... + + if (g_vtPlayerGravity.GetFloat() != DEFAULT_WORLD_GRAVITY) + { + m_fGravity = g_vtPlayerGravity.GetFloat(); + } + + // Set the stair step height from the server... + + float fStairHeight = DEFAULT_STAIRSTEP_HEIGHT; + g_pLTClient->GetSConValueFloat( STAIR_STEP_HEIGHT_CVAR, fStairHeight ); + if( fStairHeight != DEFAULT_STAIRSTEP_HEIGHT ) + { + g_pPhysicsLT->SetStairHeight( fStairHeight ); + } + + + LTVector vOldGlobalForce(0, 0, 0); + LTVector vNewGlobalForce(0, m_bGravityOverride ? m_fTotalContainerGravity : m_fGravity, 0); + + pPhysics->GetGlobalForce(vOldGlobalForce); + pPhysics->SetGlobalForce(vNewGlobalForce); + + info.m_hObject = m_hObject; + info.m_dt = g_pGameClientShell->GetFrameTime(); + pPhysics->UpdateMovement(&info); + + if (info.m_Offset.MagSqr() > 0.01f) + { + g_pLTClient->GetObjectPos(m_hObject, &curPos); + newPos = curPos + info.m_Offset; + + if( m_pVehicleMgr->IsVehiclePhysics( ) ) + { + m_pVehicleMgr->MoveVehicleObject( newPos ); + } + else + { + pPhysics->MoveObject(m_hObject, &newPos, 0); + } + + LTVector targetPos = newPos; + + g_pLTClient->GetObjectPos(m_hObject, &newPos); + + // Deal with the issue that comes up when you're standing on something + // you should be sliding on, but you're blocked, so gravity keeps + // getting applied to the velocity. Only do this if the UpdateMovement + // affected our y direction. + LTVector vCurDims; + g_pPhysicsLT->GetObjectDims(m_hObject, &vCurDims); + const float k_fMaxBlockedYDelta = vCurDims.y; + if ( fabsf( info.m_Offset.y ) > 0.01f && fabsf(targetPos.y - newPos.y) > k_fMaxBlockedYDelta) + { + LTVector vObjVel; + pPhysics->GetVelocity(m_hObject, &vObjVel); + vObjVel.y = 0.0f; + pPhysics->SetVelocity(m_hObject, &vObjVel); + } + + // Prevent us from sliding along while mid-air + if (m_bJumped && !m_bOnGround && !newPos.NearlyEquals(targetPos, 0.01f)) + { + LTVector vObjVel; + pPhysics->GetVelocity(m_hObject, &vObjVel); + LTVector vNewVel = (targetPos - curPos) / info.m_dt; + vNewVel.y = vObjVel.y; + if (vNewVel.MagSqr() < vObjVel.MagSqr()) + pPhysics->SetVelocity(m_hObject, &vNewVel); + } + } + + pPhysics->SetGlobalForce(vOldGlobalForce); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetVelMagnitude +// +// PURPOSE: Get our velocity's magnitude +// +// ----------------------------------------------------------------------- // + +LTFLOAT CMoveMgr::GetVelMagnitude() +{ + if (!g_pPhysicsLT || !g_pGameClientShell || !m_hObject) return 0.0f; + + return GetVelocity().Length(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::SetClientObjNonsolid +// +// PURPOSE: Set the client object to non-solid +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::SetClientObjNonsolid() +{ + HOBJECT hObj; + + if(hObj = g_pLTClient->GetClientObject()) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_CLIENTNONSOLID, FLAG_CLIENTNONSOLID); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateFriction +// +// PURPOSE: Update fricton +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateFriction() +{ + if (m_pVehicleMgr->IsVehiclePhysics()) + { + m_pVehicleMgr->UpdateFriction(); + } + else + { + UpdateNormalFriction(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateNormalFriction +// +// PURPOSE: Update normal fricton +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateNormalFriction() +{ + // Dampen our velocity so we don't slide around too much... + + uint32 dwTestFlags = BC_CFLG_MOVING; + + LTVector vZero(0, 0, 0); + + if ( !(m_dwControlFlags & dwTestFlags) && !m_bJumped && m_bOnGround && + m_vTotalCurrent == vZero && m_fTotalViscosity == 0.0f) + { + LTVector vCurVel = GetVelocity(); + + LTFLOAT fYVal = vCurVel.y; + vCurVel.y = 0.0f; + + LTVector vVel(0, 0, 0); + + if (vCurVel.Length() > 5.0f) + { + LTVector vDir = vCurVel; + vDir.Normalize(); + + LTFLOAT fSlideToStopTime = g_vtSlideToStopTime.GetFloat(); + fSlideToStopTime = fSlideToStopTime <= 0.0f ? 0.1f : fSlideToStopTime; + + LTFLOAT fAdjust = g_pGameClientShell->GetFrameTime() * (m_fRunVel/fSlideToStopTime); + + vVel = (vDir * fAdjust); + + if (vVel.MagSqr() < vCurVel.MagSqr()) + { + vVel = vCurVel - vVel; + } + else + { + vVel.Init(); + } + + vVel.y = fYVal; + } + else + { + vVel.Init(); + } + + g_pPhysicsLT->SetVelocity(m_hObject, &vVel); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::ShowPos +// +// PURPOSE: Show our object's position +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::ShowPos(char *pBlah) +{ + LTVector pos; + g_pLTClient->GetObjectPos(m_hObject, &pos); + g_pLTClient->CPrint("%s: %.1f %.1f %.1f", pBlah, VEC_EXPAND(pos)); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::Update +// +// PURPOSE: Update the move mgr +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::Update() +{ + if (g_pGameClientShell->IsServerPaused()) return; + + HOBJECT hObj = g_pLTClient->GetClientObject(); + if (!m_hObject || !hObj) return; + + m_eLastContainerCode = m_eCurContainerCode; + m_eCurContainerCode = g_pPlayerMgr->GetCurContainerCode(); + + // If were're underwater (or on a ladder), we reset our fall damage data... + + if (IsHeadInLiquid() || m_bBodyOnLadder) + { + m_fLastOnGroundY = MIN_ONGROUND_Y; + } + + // We don't want to hit the real client object.... + + SetClientObjNonsolid(); + + UpdatePlayerAnimation(); + + UpdateControlFlags(); + + UpdateMotion(); + + UpdateFriction(); + + UpdatePushers(); + + UpdateSound(); + + // Make sure we have desired dims.... + + // Make sure our dims are correct. + // Get our wanted dims. + LTVector oldDims = m_vWantedDims; + if(m_dwControlFlags & BC_CFLG_DUCK) + { + m_vWantedDims = m_vCrouchDims; + } + else + { + m_vWantedDims = m_vStandDims; + } + + if (!AreDimsCorrect()) + { + // Figure out a position offset. + LTVector offset; + offset.Init(); + if (m_vWantedDims.y < oldDims.y) + { + offset.y = -(oldDims.y - m_vWantedDims.y); + } + + ResetDims(&offset); + } + + MoveLocalSolidObject(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnPhysicsUpdate +// +// PURPOSE: Handle a physics update +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::OnPhysicsUpdate(uint16 changeFlags, ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + + // See if our container state changed... + + if (changeFlags & PSTATE_POSITION) + { + OnServerForcePos( pMsg ); + } + + // Note : This has to remain in order to avoid double-querying the containers, since it's + // done automatically on the server-local clients. + if (changeFlags & PSTATE_CONTAINERTYPE) + { + m_nContainers = pMsg->Readuint8(); + + for (DWORD i=0; i < m_nContainers && i < MAX_TRACKED_CONTAINERS; i++) + { + m_Containers[i].m_ContainerCode = (ContainerCode)pMsg->Readuint8(); + m_Containers[i].m_Current = pMsg->ReadLTVector(); + m_Containers[i].m_fGravity = pMsg->Readfloat(); + m_Containers[i].m_fViscosity = pMsg->Readfloat(); + m_Containers[i].m_bHidden = pMsg->Readuint8(); + m_Containers[i].m_hObject = pMsg->ReadObject(); + m_Containers[i].m_ePPhysicsModel = (PlayerPhysicsModel)pMsg->Readuint8(); + } + + LTFLOAT fCoeff = pMsg->Readfloat(); + g_pPhysicsLT->SetFrictionCoefficient(m_hObject, fCoeff); + } + + // Change our model file? + + if (changeFlags & PSTATE_MODELFILENAMES) + { + if (m_hObject) + { + g_pLTClient->RemoveObject(m_hObject); + m_hObject = LTNULL; + } + + ObjectCreateStruct theStruct; + INIT_OBJECTCREATESTRUCT(theStruct); + + pMsg->ReadString(theStruct.m_Filename, sizeof(theStruct.m_Filename)); + uint8 cSkins = pMsg->Readuint8(); + for(uint8 iSkin=0; iSkin < cSkins; ++iSkin) + { + pMsg->ReadString(theStruct.m_SkinNames[iSkin], sizeof(theStruct.m_SkinNames[iSkin])); + } + + // Save off if we are using one of the Cate models or not... + + m_bUsingPlayerModel = LTFALSE; + if (theStruct.m_Filename[0]) + { + char buffer[128]; + SAFE_STRCPY(buffer, theStruct.m_Filename); + strupr(buffer); + if (strstr(buffer, "PLAYER") || strstr(buffer, "HERO")) + { + m_bUsingPlayerModel = LTTRUE; + } + } + + theStruct.m_ObjectType = OT_MODEL; + theStruct.m_Flags = FLAG_SOLID | FLAG_GRAVITY | FLAG_STAIRSTEP; + theStruct.m_Flags2 = FLAG2_PLAYERCOLLIDE | FLAG2_SPECIALNONSOLID; + + HOBJECT hClientObj = g_pLTClient->GetClientObject(); + if( hClientObj ) + { + g_pLTClient->GetObjectPos(hClientObj, &theStruct.m_Pos); + g_pCommonLT->SetObjectFilenames(hClientObj, &theStruct); + + // Since the object was created in the correct position we don't need to force it later... + + m_bForceToServerPos = LTFALSE; + } + else + m_bForceToServerPos = LTTRUE; + + m_hObject = g_pLTClient->CreateObject(&theStruct); + + if (m_hObject) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Client, CF_DONTSETDIMS, CF_DONTSETDIMS); + + // Note : This queries the anim for the dims of the player. That information is all available + // on the server, but it's not on the client. This is a lot easier than trying to transmit + // that information or something. + HMODELANIM hAnim = g_pLTClient->GetAnimIndex(m_hObject, PLAYERANIM_CROUCH); + if (hAnim == INVALID_MODEL_ANIM) + { + ASSERT(!"Unable to find player crouch animation"); + m_vCrouchDims.Init(24.0f, 31.5f, 24.0f); + } + else + { + g_pCommonLT->GetModelAnimUserDims(m_hObject, &m_vCrouchDims, hAnim); + } + + hAnim = g_pLTClient->GetAnimIndex(m_hObject, PLAYERANIM_STAND); + if (hAnim == INVALID_MODEL_ANIM) + { + ASSERT(!"Unable to find player stand animation"); + m_vStandDims.Init(24.0f, 53.0f, 24.0f); + } + else + { + g_pCommonLT->GetModelAnimUserDims(m_hObject, &m_vStandDims, hAnim); + } + + } + } + + // Gravity change... + + if (changeFlags & PSTATE_GRAVITY) + { + LTVector vGravity; + vGravity = pMsg->ReadLTVector(); + g_pPhysicsLT->SetGlobalForce(vGravity); + + m_fGravity = vGravity.y; + g_vtPlayerGravity.SetFloat(m_fGravity); + } + + // Speed change... + + if (changeFlags & PSTATE_SPEEDS) + { + m_fWalkVel = pMsg->Readfloat(); + m_fRunVel = pMsg->Readfloat(); + m_fSwimVel = pMsg->Readfloat(); + m_fJumpVel = pMsg->Readfloat(); + m_fSuperJumpVel = pMsg->Readfloat(); + + m_fMoveAccelMultiplier = m_fMoveMultiplier = pMsg->Readfloat(); + + m_fBaseMoveAccel = pMsg->Readfloat(); + m_fJumpMultiplier = pMsg->Readfloat(); + m_fLadderVel = pMsg->Readfloat(); + + LTFLOAT fCoeff = pMsg->Readfloat(); + g_pPhysicsLT->SetFrictionCoefficient(m_hObject, fCoeff); + } + + // Vehicle status change... + + if (changeFlags & PSTATE_PHYSICS_MODEL) + { + PlayerPhysicsModel eModel = (PlayerPhysicsModel) pMsg->Readuint8(); + + // If it's a lure physics model, then read the lure object in. + if( eModel == PPM_LURE ) + { + // Get the player lure id. + DWORD nPlayerLureId = pMsg->Readuint32( ); + + // SetPhysicsModel doesn't allow changing the model to the same model. Trick + // it by changing it here. + if( m_pVehicleMgr->GetPhysicsModel( ) == PPM_LURE ) + { + m_pVehicleMgr->SetPhysicsModel( PPM_NORMAL ); + } + + // Tell the vehiclemgr about the lure object. + m_pVehicleMgr->SetPlayerLureId( nPlayerLureId ); + } + else + { + // Make sure the lure is cleared. + m_pVehicleMgr->SetPlayerLureId( 0 ); + } + + uint8 nModelId = VBMGR_INVALID_ID; + + if( eModel == PPM_VEHICLE ) + { + nModelId = pMsg->Readuint8(); + } + + // Turn off duck lock... + if (eModel != PPM_NORMAL) + SetDuckLock(LTFALSE); + + m_pVehicleMgr->SetPhysicsModel( eModel, nModelId ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnObjectMove +// +// PURPOSE: Handle the object moving +// +// ----------------------------------------------------------------------- // + +LTRESULT CMoveMgr::OnObjectMove(HOBJECT hObj, bool bTeleport, LTVector *pPos) +{ + if (!m_hObject) return LT_OK; + + HOBJECT hClientObj = g_pLTClient->GetClientObject(); + + // If it's a solid world model moving, do a regular MoveObject on it so it + // can carry/push the player object around. + + if (!bTeleport && hObj != hClientObj && hObj != m_hObject) + { + uint32 type = GetObjectType(hObj); + if (type == OT_WORLDMODEL) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_Flags, dwFlags); + if( dwFlags & FLAG_SOLID ) + { + ((ILTClientPhysics*)g_pPhysicsLT)->MovePushObjects(hObj, *pPos, &m_hObject, 1); + } + } + } + + return LT_OK; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnObjectRotate +// +// PURPOSE: Handle the object rotating +// +// ----------------------------------------------------------------------- // + +LTRESULT CMoveMgr::OnObjectRotate(HOBJECT hObj, bool bTeleport, LTRotation *pNewRot) +{ + if (!m_hObject) return LT_OK; + + HOBJECT hClientObj = g_pLTClient->GetClientObject(); + + // If it's a solid world model moving, do a regular MoveObject on it so it + // can carry/push the player object around. + + if (!bTeleport && hObj != hClientObj && hObj != m_hObject) + { + uint32 type = GetObjectType(hObj); + if (type == OT_WORLDMODEL) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_Flags, dwFlags); + if( dwFlags & FLAG_SOLID ) + { + ((ILTClientPhysics*)g_pPhysicsLT)->RotatePushObjects(hObj, *pNewRot, &m_hObject, 1); + } + } + } + + return LT_OK; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::AddPusher +// +// PURPOSE: Add a pusher object +// +// ----------------------------------------------------------------------- // + +LTRESULT CMoveMgr::AddPusher(const LTVector &pos, float radius, float startDelay, float duration, float strength) +{ + // Don't push a dead player... + + if( g_pPlayerMgr->IsPlayerDead() ) + return LT_ERROR; + + Pusher *pPusher = Pusher::GetBank()->New(); + + if(!pPusher) + return LT_ERROR; + + pPusher->m_Pos = pos; + pPusher->m_Radius = radius; + pPusher->m_Delay = startDelay; + pPusher->m_TimeLeft = duration; + pPusher->m_Strength = strength; + dl_Insert(&m_Pushers, &pPusher->m_Link); + + return LT_OK; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::SetSpectatorMode +// +// PURPOSE: Set spectator mode +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::SetSpectatorMode(LTBOOL bSet) +{ + if(!m_hObject) + return; + + if (bSet) // Spectator mode... + { + // Move up a little bit. + LTVector vPos; + g_pLTClient->GetObjectPos(m_hObject, &vPos); + vPos.y += 50; + + g_pPhysicsLT->MoveObject(m_hObject, &vPos, MOVEOBJECT_TELEPORT); + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_GOTHRUWORLD, FLAG_GOTHRUWORLD | FLAG_SOLID); + + LTVector vZero(0, 0, 0); + g_pPhysicsLT->SetVelocity(m_hObject, &vZero); + g_pPhysicsLT->SetAcceleration(m_hObject, &vZero); + } + else // No longer in spectator mode... + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_SOLID, FLAG_SOLID | FLAG_GOTHRUWORLD); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnServerForcePos +// +// PURPOSE: Handle forcing our position +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::OnServerForcePos(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + m_ClientMoveCode = pMsg->Readuint8(); + LTVector vPos = pMsg->ReadLTVector( ); + LTVector vCurDims = pMsg->ReadLTVector(); + + if( !m_hObject ) + return; + + SetClientObjNonsolid(); + + // Move there. We make our object a point first and then resize the dims so + // we don't teleport clipping into the world. + + + LTVector vTempDims(0.5f, 0.5f, 0.5f); + + g_pPhysicsLT->SetObjectDims(m_hObject, &vTempDims, 0); + g_pPhysicsLT->MoveObject(m_hObject, &vPos, MOVEOBJECT_TELEPORT); + + //if the target dims don't fit, force the largest dims that do fit, the dims will be corrected + // auto-magically on a later update. + if (LT_OK != g_pPhysicsLT->SetObjectDims(m_hObject, &vCurDims, SETDIMS_PUSHOBJECTS)) + g_pPhysicsLT->SetObjectDims(m_hObject, &vCurDims, 0); + + // Clear our velocity and acceleration. + + LTVector vVel(0, 0, 0); + g_pPhysicsLT->SetAcceleration(m_hObject, &vVel); + + if (m_bLoading) + { + vVel = m_vSavedVel; + m_bLoading = LTFALSE; + } + else + { + m_fLastOnGroundY = MIN_ONGROUND_Y; + } + + g_pPhysicsLT->SetVelocity(m_hObject, &vVel); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::WritePositionInfo +// +// PURPOSE: Write our position info +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::WritePositionInfo(ILTMessage_Write *pMsg) +{ + LTVector myPos, myVel; + + if (m_hObject) + { + g_pLTClient->GetObjectPos(m_hObject, &myPos); + // If we're paused on our end, tell the server we're not going to move + if (g_pGameClientShell->IsServerPaused()) + myVel = LTVector(0.0f, 0.0f, 0.0f); + else + myVel = GetVelocity(); + } + else + { + myPos.Init(); + myVel.Init(); + } + + pMsg->Writeuint8(m_ClientMoveCode); + pMsg->WriteLTVector(myPos); + pMsg->WriteLTVector(myVel); + pMsg->Writeuint8((uint8)m_bOnGround); + pMsg->Writeuint8((uint8)m_eStandingOnSurface); + pMsg->WriteType(m_hStandingOnPoly); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::UpdateModels +// +// PURPOSE: Update the player-view models +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::UpdateModels() +{ + if( m_pVehicleMgr->IsVehiclePhysics()) + m_pVehicleMgr->UpdateModels(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetMaxVelMag +// +// PURPOSE: Get the max velocity for our current mode +// +// ----------------------------------------------------------------------- // + +LTFLOAT CMoveMgr::GetMaxVelMag() const +{ + LTFLOAT fMaxVel = 0.0f; + + LTFLOAT fMoveMultiplier = m_fMoveMultiplier; + + if (m_pVehicleMgr->IsVehiclePhysics()) + { + fMaxVel = m_pVehicleMgr->GetMaxVelMag(); + } + else + { + LTBOOL bRunning = (m_dwControlFlags & BC_CFLG_RUN); + + if (m_bBodyInLiquid) + { + fMaxVel = bRunning ? m_fSwimVel : m_fSwimVel/2.0f; + fMoveMultiplier = fMoveMultiplier < 1.0f ? 1.0f : fMoveMultiplier; + } + else if (m_bBodyOnLadder) + { + fMaxVel = bRunning ? m_fLadderVel : m_fLadderVel/2.0f; + fMoveMultiplier = fMoveMultiplier < 1.0f ? 1.0f : fMoveMultiplier; + } + else + { + if (bRunning && !(m_dwControlFlags & BC_CFLG_DUCK) && + !g_pPlayerMgr->IsZoomed() && !g_pPlayerMgr->GetLeanMgr()->IsLeaning()) + { + fMaxVel = m_fRunVel; + } + else + { + fMaxVel = m_fWalkVel; + } + } + + if( g_pPlayerMgr->IsCarryingHeavyObject() && fMaxVel > m_fWalkVel) + { + + float fDiff = (fMaxVel - m_fWalkVel); + + fDiff *= g_pPlayerStats->GetSkillModifier(SKL_CARRY,CarryModifiers::eCarryBodyMovement); + + fMaxVel -= fDiff; + + } + + + + //Calculate any movement penalties + LTFLOAT fPenalty = CalculateMovementPenalty(); + + fMaxVel *= ((1.0f - fPenalty) * fMoveMultiplier); + + } + + return fMaxVel; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetVelocity +// +// PURPOSE: Get our current velocity +// +// ----------------------------------------------------------------------- // + +LTVector CMoveMgr::GetVelocity() const +{ + LTVector vVel(0, 0, 0); + + if (g_pPhysicsLT && m_hObject) + { + g_pPhysicsLT->GetVelocity(m_hObject, &vVel); + } + + return vVel; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::SetVelocity +// +// PURPOSE: Set our current velocity +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::SetVelocity(const LTVector &vVel) +{ + if (g_pPhysicsLT && m_hObject) + { + g_pPhysicsLT->SetVelocity(m_hObject, const_cast(&vVel)); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetMovementPercent +// +// PURPOSE: Get current percentage of maximum velocity player is moving +// +// ----------------------------------------------------------------------- // + +LTFLOAT CMoveMgr::GetMovementPercent() const +{ + LTFLOAT fPerturb = 0.0f; + LTVector vVel = GetVelocity(); + LTFLOAT fMaxVel = GetMaxVelMag(); + + if (fMaxVel > 0.0f) + { + fPerturb = vVel.Mag() / fMaxVel; + } + + return fPerturb; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::OnTouchNotify +// +// PURPOSE: Handle our object touching something... +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::OnTouchNotify(CollisionInfo *pInfo, float forceMag) +{ + if (!pInfo->m_hObject) return; + + if (m_pVehicleMgr->IsVehiclePhysics()) + { + m_pVehicleMgr->OnTouchNotify(pInfo, forceMag); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::Load +// +// PURPOSE: Handle loading move mgr data +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState) +{ + if (!pMsg) return; + + m_vSavedVel = pMsg->ReadLTVector(); + m_fLastOnGroundY = pMsg->Readfloat(); + + // If we are going to a different level we should ignore our last height... + + if( (eLoadDataState == eSaveDataStateTransitionLevels) || + (eLoadDataState == eSaveDataStateSwitchLevels) ) + { + m_fLastOnGroundY = MIN_ONGROUND_Y; + } + + m_DamageTimer.Start(pMsg->Readfloat()); + m_vWantedDims = pMsg->ReadLTVector(); + + m_bLoading = LTTRUE; + + m_pVehicleMgr->Load(pMsg, eLoadDataState); + + m_bJumped = (pMsg->Readbool() ? LTTRUE : LTFALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::Save +// +// PURPOSE: Handle saving move mgr data +// +// ----------------------------------------------------------------------- // + +void CMoveMgr::Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState) +{ + if (!pMsg) return; + + // Save velocity... + + LTVector myVel(0, 0, 0); + + if (m_hObject) + { + g_pPhysicsLT->GetVelocity(m_hObject, &myVel); + } + + pMsg->WriteLTVector(myVel); + pMsg->Writefloat(m_fLastOnGroundY); + + pMsg->Writefloat(m_DamageTimer.GetCountdownTime()); + pMsg->WriteLTVector( m_vWantedDims ); + + m_pVehicleMgr->Save(pMsg, eSaveDataState); + + pMsg->Writebool(m_bJumped ? true : false); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::IsPlayerModel +// +// PURPOSE: Are we using one of the player (cate) models... +// +// ----------------------------------------------------------------------- // + +LTBOOL CMoveMgr::IsPlayerModel() +{ + return m_bUsingPlayerModel; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::AddDamagePenalty +// +// PURPOSE: Add a movement penalty +// +// ----------------------------------------------------------------------- // +void CMoveMgr::AddDamagePenalty(LTFLOAT fDuration) +{ + fDuration *= g_pPlayerStats->GetSkillModifier(SKL_STAMINA,StaminaModifiers::eMoveDamage); + if (fDuration > m_DamageTimer.GetCountdownTime()) + m_DamageTimer.Start(fDuration); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::CalculateMovementPenalty +// +// PURPOSE: How much is the player's movement being penalized +// +// ----------------------------------------------------------------------- // + +LTFLOAT CMoveMgr::CalculateMovementPenalty() const +{ + LTFLOAT fPenalty = 0.0f; + + // [KLS 8/22/02] Removed heavy weapon stuff from weapon mgr... +/* + WEAPON const *pWeaponData = g_pWeaponMgr->GetWeapon(g_pPlayerStats->GetCurrentWeapon()); + if( pWeaponData && pWeaponData->bHeavyWeapon) + { + LTFLOAT fHeavyWeaponMovePenalty = GetConsoleFloat("HeavyWeaponMovePenalty",0.333f); + + fHeavyWeaponMovePenalty *= g_pPlayerStats->GetSkillModifier(SKL_CARRY,CarryModifiers::eHeavyWeaponMovement); + + if (fHeavyWeaponMovePenalty > fPenalty) + fPenalty = fHeavyWeaponMovePenalty; + } +*/ + + if (m_DamageTimer.GetCountdownTime() ) + { + LTFLOAT fDamageMovePenalty = GetConsoleFloat("DamageMovePenalty",0.5f); + + fDamageMovePenalty *= g_pPlayerStats->GetSkillModifier(SKL_STAMINA,StaminaModifiers::eMoveDamage); + + if (fDamageMovePenalty > fPenalty) + fPenalty = fDamageMovePenalty; + + } + return fPenalty; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetServerObject +// +// PURPOSE: Get the server object associated with the player +// +// ----------------------------------------------------------------------- // + +HOBJECT CMoveMgr::GetServerObject() +{ + if (!GetCharacterFX()) + return LTNULL; + return GetCharacterFX()->GetServerObj(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::IsMovingQuietly +// +// PURPOSE: Are we being very quiet? +// +// ----------------------------------------------------------------------- // + +LTBOOL CMoveMgr::IsMovingQuietly() const +{ + LTBOOL bRet = LTFALSE; + + if ((m_dwControlFlags & BC_CFLG_DUCK) || !(m_dwControlFlags & BC_CFLG_RUN) || + g_pPlayerMgr->GetLeanMgr()->IsLeaning()) + { + if (!IsFreeMovement() && !IsBodyOnLadder() && IsOnGround()) + { + bRet = LTTRUE; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetContainerInfo +// +// PURPOSE: Get the info for a specific container we are tracking +// +// ----------------------------------------------------------------------- // + +CContainerInfo* CMoveMgr::GetContainerInfo( uint32 nContainer ) +{ + if( m_nContainers == 0 || m_nContainers > MAX_TRACKED_CONTAINERS || nContainer > (MAX_TRACKED_CONTAINERS - 1) ) + return LTNULL; + + return &m_Containers[nContainer]; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetCrouchHeightDifference +// +// PURPOSE: Get the difference in height from the stand position to the crouch position... +// +// ----------------------------------------------------------------------- // + +float CMoveMgr::GetCrouchHeightDifference( ) const +{ + if( !m_hObject ) + return 0.0f; + + return (m_vStandDims.y - m_vCrouchDims.y); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveMgr::GetStandHeightDifference +// +// PURPOSE: Get the difference in height from the stand position to the current position... +// +// ----------------------------------------------------------------------- // + +float CMoveMgr::GetCurrentHeightDifference( ) const +{ + if( !m_hObject ) + return 0.0f; + + LTVector vDims; + g_pPhysicsLT->GetObjectDims( m_hObject, &vDims ); + + return (m_vStandDims.y - vDims.y); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/CMoveMgr.h b/Jack/ClientShellDLL/CMoveMgr.h new file mode 100644 index 00000000..3f2e1f45 --- /dev/null +++ b/Jack/ClientShellDLL/CMoveMgr.h @@ -0,0 +1,280 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CMoveMgr.cpp +// +// PURPOSE : Client side player movement mgr - Definition +// +// CREATED : 10/2/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CMOVEMGR_H__ +#define __CMOVEMGR_H__ + + +#include "iltclient.h" +#include "ContainerCodes.h" +#include "SharedMovement.h" +#include "SurfaceMgr.h" +#include "VarTrack.h" +#include "CameraOffsetMgr.h" +#include "timer.h" + +class CGameClientShell; +class CCharacterFX; +class CVehicleMgr; + +class CContainerInfo +{ + public: + float m_fGravity; + float m_fViscosity; + LTVector m_Current; + ContainerCode m_ContainerCode; + LTBOOL m_bHidden; + HOBJECT m_hObject; + PlayerPhysicsModel m_ePPhysicsModel; +}; + +class CMoveMgr +{ + public: + + CMoveMgr(); + ~CMoveMgr(); + + LTBOOL Init(); + + void Update(); + void UpdateModels(); + + LTVector GetVelocity() const; + void SetVelocity(const LTVector &vVel); + LTFLOAT GetMaxVelMag() const; + + void SetGravity(LTFLOAT fGravity) { m_fGravity = fGravity; } + + LTFLOAT GetMovementPercent() const; + LTFLOAT GetVelMagnitude(); + + LTBOOL IsPlayerModel(); + + CCharacterFX* GetCharacterFX() const { return m_pCharFX; } + void SetCharacterFX(CCharacterFX* pFX) { m_pCharFX = pFX; } + + void OnPhysicsUpdate(uint16 changeFlags, ILTMessage_Read *pMsg); + void UpdateMouseStrafeFlags(float *pAxisOffsets); + + void OnEnterWorld(); + void OnExitWorld(); + + void Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState); + void Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState); + + LTRESULT OnObjectMove(HOBJECT hObj, bool bTeleport, LTVector *pPos); + LTRESULT OnObjectRotate(HOBJECT hObj, bool bTeleport, LTRotation *pNewRot); + + void OnTouchNotify(CollisionInfo *pInfo, float forceMag); + + uint32 GetControlFlags() const { return m_dwControlFlags; } + + LTBOOL Jumped() const { return m_bJumped; } + + // CMoveMgr keeps a list of spheres that repel the player object. + // These are created from explosions. + LTRESULT AddPusher(const LTVector &pos, float radius, + float startDelay, float duration, float strength); + + HOBJECT GetObject() {return m_hObject;} + HOBJECT GetServerObject(); + + void SetSpectatorMode(LTBOOL bSet); + void OnServerForcePos(ILTMessage_Read *pMsg); + + void WritePositionInfo(ILTMessage_Write *pMsg); + + SurfaceType GetStandingOnSurface() const { return m_eStandingOnSurface; } + + LTBOOL CanDoFootstep(); + LTBOOL IsHeadInLiquid() const { return IsLiquid(m_eCurContainerCode); } + LTBOOL IsFreeMovement() const { return ::IsFreeMovement(m_eCurContainerCode); } + LTBOOL IsBodyInLiquid() const { return m_bBodyInLiquid; } + LTBOOL IsOnGround() const { return m_bOnGround; } + LTBOOL IsBodyOnLadder() const { return m_bBodyOnLadder; } + LTBOOL IsOnLift() const { return m_bOnLift; } + LTBOOL IsFalling() const { return m_bFalling; } + LTBOOL IsMovingQuietly() const; + LTBOOL IsDucking() const { return (m_dwControlFlags & BC_CFLG_DUCK); } + void SetDucking(bool bDuck) { if (bDuck) m_dwControlFlags |= BC_CFLG_DUCK; else m_dwControlFlags &= ~BC_CFLG_DUCK; } + + LTBOOL RunLock() const { return m_bRunLock; } + LTBOOL DuckLock() const { return m_bDuckLock; } + void SetRunLock(LTBOOL bRunLock) { m_bRunLock = bRunLock; } + void SetDuckLock(LTBOOL bDuckLock) { m_bDuckLock = bDuckLock; } + + LTVector GetGroundNormal() const { return m_vGroundNormal; } + + void UpdateOnGround(); + + LTFLOAT GetMoveMultiplier() const { return m_fMoveMultiplier; } + LTFLOAT GetMoveAccelMultiplier() const { return m_fMoveAccelMultiplier; } + LTVector GetTotalCurrent() const { return m_vTotalCurrent; } + LTFLOAT GetTotalViscosity() const { return m_fTotalViscosity; } + + void AllowMovement(LTBOOL b=LTTRUE) { m_bAllowMovement = b; } + LTBOOL GetAllowMovement( ) { return m_bAllowMovement; } + + void UpdateStartMotion(LTBOOL bForce=LTFALSE); + + CVehicleMgr* GetVehicleMgr() const { return m_pVehicleMgr; } + + void AddDamagePenalty(LTFLOAT fDuration); + + HOBJECT GetLadderObject() const { return m_hLadderObject; } + + uint32 GetNumContainers() const { return m_nContainers; } + CContainerInfo* GetContainerInfo( uint32 nContainer ); + void UpdateContainerList(); + + void UpdateContainerViscosity(CContainerInfo *pInfo); + void UpdateContainerGravity(CContainerInfo *pInfo); + + // Is it safe to save right now? + bool CanSave() const; + + bool IsInWorld() const { return m_hObject != LTNULL; } + + float GetCrouchHeightDifference() const; + float GetCurrentHeightDifference() const; + + protected: + void InitWorldData(); + + void ShowPos(char *pBlah); + void UpdatePushers(); + void UpdatePlayerAnimation(); + + LTBOOL AreDimsCorrect(); + void ResetDims(LTVector *pOffset=NULL); + + bool CanStandUp(); + + void UpdateControlFlags(); + void UpdateMotion(); + void UpdateFriction(); + void UpdateSound(); + + void UpdateNormalControlFlags(); + void UpdateNormalMotion(); + void UpdateNormalFriction(); + + void UpdateContainerMotion(); + void UpdateOnLadder(CContainerInfo *pInfo); + void UpdateInLiquid(CContainerInfo *pInfo); + void HandleFallLand(LTFLOAT fDistFell); + + void MoveLocalSolidObject(); + void UpdateVelMagnitude(); + void SetClientObjNonsolid(); + + void TermLevel(); + + LTFLOAT CalculateMovementPenalty() const; + + + protected : + + uint8 m_ClientMoveCode; + + // The object representing our movement. + HOBJECT m_hObject; + + LTLink m_Pushers; + + + LTVector m_vWantedDims; + + // Movement state. + uint32 m_dwControlFlags; + uint32 m_dwLastControlFlags; + + LTBOOL m_bBodyInLiquid; + LTBOOL m_bSwimmingOnSurface; + LTBOOL m_bCanSwimJump; + + ContainerCode m_eBodyContainerCode; // Body container code + + LTBOOL m_bBodyOnLadder; + HOBJECT m_hLadderObject; + + LTBOOL m_bLoading; + LTVector m_vSavedVel; + + HPOLY m_hStandingOnPoly; + SurfaceType m_eStandingOnSurface; + LTVector m_vGroundNormal; + LTBOOL m_bOnGround; + LTBOOL m_bOnLift; + LTBOOL m_bFalling; + LTBOOL m_bRunLock; + LTBOOL m_bDuckLock; + + LTBOOL m_bUsingPlayerModel; + + LTBOOL m_bForceToServerPos; + + float m_fBaseMoveAccel; + float m_fMoveAccelMultiplier; + float m_fLastOnGroundY; + LTBOOL m_bJumped; + + LTVector m_vTotalCurrent; + float m_fTotalViscosity; + + bool m_bGravityOverride; + float m_fTotalContainerGravity; + + // Movement speeds. + float m_fJumpVel; + float m_fSuperJumpVel; + float m_fJumpMultiplier; + + float m_fSwimVel; + float m_fWalkVel; + float m_fRunVel; + float m_fLadderVel; + float m_fMoveMultiplier; + + float m_fGravity; + + LTBOOL m_bSwimmingJump; + LTBOOL m_bFirstAniUpdate; + LTBOOL m_bAllowMovement; + + ContainerCode m_eLastContainerCode; + ContainerCode m_eCurContainerCode; + CContainerInfo m_Containers[MAX_TRACKED_CONTAINERS]; + uint32 m_nContainers; + + // Spectator speed multiplier. + VarTrack m_CV_SpectatorSpeedMul; + + CCharacterFX* m_pCharFX; + + CVehicleMgr* m_pVehicleMgr; + + CTimer m_DamageTimer; + + // Player dims semi-constants + + LTVector m_vCrouchDims; + LTVector m_vStandDims; +}; + + + +extern CMoveMgr* g_pMoveMgr; + +#endif // __CMOVEMGR_H__ diff --git a/Jack/ClientShellDLL/CameraFX.h b/Jack/ClientShellDLL/CameraFX.h new file mode 100644 index 00000000..bf037d5e --- /dev/null +++ b/Jack/ClientShellDLL/CameraFX.h @@ -0,0 +1,144 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CameraFX.h +// +// PURPOSE : Camera special fx class - Definition +// +// CREATED : 5/20/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __CAMERA_FX_H__ +#define __CAMERA_FX_H__ + +#include "SpecialFX.h" + +struct CAMCREATESTRUCT : public SFXCREATESTRUCT +{ + CAMCREATESTRUCT(); + + LTBOOL bAllowPlayerMovement; + uint8 nCameraType; + LTBOOL bIsListener; + LTFLOAT fFovX; + LTFLOAT fFovY; +}; + +inline CAMCREATESTRUCT::CAMCREATESTRUCT() +{ + bAllowPlayerMovement = LTFALSE; + nCameraType = 0; + bIsListener = LTFALSE; + fFovX = 0.0f; + fFovY = 0.0f; +} + +class CCameraFX : public CSpecialFX +{ + public : + + CCameraFX() : CSpecialFX() + { + m_bAllowPlayerMovement = LTFALSE; + m_nCameraType = 0; + m_bIsListener = LTFALSE; + m_fFovX = 0.0f; + m_fFovY = 0.0f; + m_fPrevFovX = 0.0f; + m_fPrevFovY = 0.0f; + m_fFovTime = 0.0f; + m_fFovCurrTime = 0.0f; + } + + virtual LTBOOL Update() { return !m_bWantRemove; } + + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg) + { + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch(nMsgId) + { + case CAMFX_FOV: + { + m_fPrevFovX = m_fFovX; + m_fPrevFovY = m_fFovY; + + m_fFovX = pMsg->Readfloat(); + m_fFovY = pMsg->Readfloat(); + m_fFovTime = pMsg->Readfloat(); + + m_fFovCurrTime = 0.0f; + } + } + + return LTTRUE; + } + + LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct) + { + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + CAMCREATESTRUCT* pCAM = (CAMCREATESTRUCT*)psfxCreateStruct; + + m_bAllowPlayerMovement = pCAM->bAllowPlayerMovement; + m_nCameraType = pCAM->nCameraType; + m_bIsListener = pCAM->bIsListener; + m_fFovX = pCAM->fFovX; + m_fFovY = pCAM->fFovY; + m_fPrevFovX = m_fFovX; + m_fPrevFovY = m_fFovY; + m_fFovTime = 0.0f; + m_fFovCurrTime = 0.0f; + + return LTTRUE; + } + + LTBOOL AllowPlayerMovement() const { return m_bAllowPlayerMovement; } + uint8 GetType() const { return m_nCameraType; } + LTBOOL IsListener() const { return m_bIsListener; } + + void UpdateFOV() + { + m_fFovCurrTime += g_pGameClientShell->GetFrameTime(); + } + + LTFLOAT GetFovX() const + { + if( m_fFovCurrTime < m_fFovTime) + { + float t = m_fFovCurrTime / m_fFovTime; + return LTLERP( m_fPrevFovX, m_fFovX, t); + } + + return m_fFovX; + } + + LTFLOAT GetFovY() const + { + if( m_fFovCurrTime < m_fFovTime) + { + float t = m_fFovCurrTime / m_fFovTime; + return LTLERP( m_fPrevFovY, m_fFovY, t); + } + + return m_fFovY; + } + + virtual uint32 GetSFXID() { return SFX_CAMERA_ID; } + + protected : + + LTBOOL m_bAllowPlayerMovement; + uint8 m_nCameraType; + LTBOOL m_bIsListener; + LTFLOAT m_fFovX; + LTFLOAT m_fFovY; + LTFLOAT m_fPrevFovX; + LTFLOAT m_fPrevFovY; + LTFLOAT m_fFovTime; + LTFLOAT m_fFovCurrTime; +}; + +#endif // __CAMERA_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/CameraOffsetMgr.cpp b/Jack/ClientShellDLL/CameraOffsetMgr.cpp new file mode 100644 index 00000000..e0e498e3 --- /dev/null +++ b/Jack/ClientShellDLL/CameraOffsetMgr.cpp @@ -0,0 +1,457 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CameraOffsetMgr.cpp +// +// PURPOSE : Camera offset mgr - Implementation +// +// CREATED : 8/23/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "CameraOffsetMgr.h" +#include "VarTrack.h" +#include "GameClientShell.h" + +VarTrack g_vtCamMaxPitchOffset; +VarTrack g_vtCamMaxYawOffset; +VarTrack g_vtCamMaxRollOffset; +VarTrack g_vtCamMaxPosXOffset; +VarTrack g_vtCamMaxPosYOffset; +VarTrack g_vtCamMaxPosZOffset; +VarTrack g_vtCamInfo; + +// Testing var trackers... + +VarTrack g_vtCamWeaponImpact; + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::CCameraOffsetMgr +// +// PURPOSE: Constructor +// +// --------------------------------------------------------------------------- // + +CCameraOffsetMgr::CCameraOffsetMgr() +{ + m_vPitchYawRollDelta.Init(); + m_vPosDelta.Init(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::Init +// +// PURPOSE: Init +// +// --------------------------------------------------------------------------- // + +LTBOOL CCameraOffsetMgr::Init() +{ + m_vPitchYawRollDelta.Init(); + m_vPosDelta.Init(); + + g_vtCamMaxPitchOffset.Init(g_pLTClient, "CamMaxPitchOffset", NULL, 15.0); + g_vtCamMaxYawOffset.Init(g_pLTClient, "CamMaxYawOffset", NULL, 15.0); + g_vtCamMaxRollOffset.Init(g_pLTClient, "CamMaxRollOffset", NULL, 15.0); + g_vtCamMaxPosXOffset.Init(g_pLTClient, "CamMaxPosXOffset", NULL, 200.0); + g_vtCamMaxPosYOffset.Init(g_pLTClient, "CamMaxPosYOffset", NULL, 200.0); + g_vtCamMaxPosZOffset.Init(g_pLTClient, "CamMaxPosZOffset", NULL, 200.0); + g_vtCamInfo.Init(g_pLTClient, "CamInfo", NULL, 0.0f); + + g_vtCamWeaponImpact.Init(g_pLTClient, "CamWeaponImpact", NULL, 0.0); + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::Update +// +// PURPOSE: Update all our deltas +// +// --------------------------------------------------------------------------- // + +void CCameraOffsetMgr::Update() +{ + // Testing only... + ProcessTestingVars(); + // End Testing only... + + + // Reset offsets... + + m_vPitchYawRollDelta.Init(); + m_vPosDelta.Init(); + + float fTimeDelta = g_pGameClientShell->GetFrameTime(); + + int i; + for (i=0; i < MAX_CAMERA_DELTAS; i++) + { + if (m_CameraDeltas[i].GetTotalDelta() > 0.0f) + { + m_CameraDeltas[i].Pitch.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.x += m_CameraDeltas[i].Pitch.GetValue(); + + m_CameraDeltas[i].Yaw.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.y += m_CameraDeltas[i].Yaw.GetValue(); + + m_CameraDeltas[i].Roll.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.z += m_CameraDeltas[i].Roll.GetValue(); + + m_CameraDeltas[i].PosX.UpdateVar(fTimeDelta); + m_vPosDelta.x += m_CameraDeltas[i].PosX.GetValue(); + + m_CameraDeltas[i].PosY.UpdateVar(fTimeDelta); + m_vPosDelta.y += m_CameraDeltas[i].PosY.GetValue(); + + m_CameraDeltas[i].PosZ.UpdateVar(fTimeDelta); + m_vPosDelta.z += m_CameraDeltas[i].PosZ.GetValue(); + } + } + + for (i=0; i < MAX_STATIC_CAMERA_DELTAS; i++) + { + if (m_StaticCameraDeltas[i].GetTotalDelta() > 0.0f) + { + m_StaticCameraDeltas[i].Pitch.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.x += m_StaticCameraDeltas[i].Pitch.GetValue(); + + m_StaticCameraDeltas[i].Yaw.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.y += m_StaticCameraDeltas[i].Yaw.GetValue(); + + m_StaticCameraDeltas[i].Roll.UpdateVar(fTimeDelta); + m_vPitchYawRollDelta.z += m_StaticCameraDeltas[i].Roll.GetValue(); + + m_StaticCameraDeltas[i].PosX.UpdateVar(fTimeDelta); + m_vPosDelta.x += m_StaticCameraDeltas[i].PosX.GetValue(); + + m_StaticCameraDeltas[i].PosY.UpdateVar(fTimeDelta); + m_vPosDelta.y += m_StaticCameraDeltas[i].PosY.GetValue(); + + m_StaticCameraDeltas[i].PosZ.UpdateVar(fTimeDelta); + m_vPosDelta.z += m_StaticCameraDeltas[i].PosZ.GetValue(); + } + } + + ValidateDeltas(); + + + // Print out our current values... + + if (g_vtCamInfo.GetFloat()) + { + if (m_vPitchYawRollDelta.x != 0.0f) + g_pLTClient->CPrint("COM Pitch = %.4f (in Deg = %.2f)", m_vPitchYawRollDelta.x, RAD2DEG(m_vPitchYawRollDelta.x)); + if (m_vPitchYawRollDelta.y != 0.0f) + g_pLTClient->CPrint("COM Yaw = %.4f (in Deg = %.2f)", m_vPitchYawRollDelta.y, RAD2DEG(m_vPitchYawRollDelta.y)); + if (m_vPitchYawRollDelta.z != 0.0f) + g_pLTClient->CPrint("COM Roll = %.4f (in Deg = %.2f)", m_vPitchYawRollDelta.z, RAD2DEG(m_vPitchYawRollDelta.z)); + + if (m_vPosDelta.x != 0.0f) + g_pLTClient->CPrint("COM Offset X = %.2f", m_vPosDelta.x); + if (m_vPosDelta.y != 0.0f) + g_pLTClient->CPrint("COM Offset Y = %.2f", m_vPosDelta.y); + if (m_vPosDelta.z != 0.0f) + g_pLTClient->CPrint("COM Offset Z = %.2f", m_vPosDelta.z); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::ValidateDeltas +// +// PURPOSE: Make sure all the deltas are valid +// +// --------------------------------------------------------------------------- // + +void CCameraOffsetMgr::ValidateDeltas() +{ + float fMaxVal = g_vtCamMaxPitchOffset.GetFloat(); + if (m_vPitchYawRollDelta.x > fMaxVal) + { + m_vPitchYawRollDelta.x = fMaxVal; + } + else if (m_vPitchYawRollDelta.x < -fMaxVal) + { + m_vPitchYawRollDelta.x = -fMaxVal; + } + + fMaxVal = g_vtCamMaxYawOffset.GetFloat(); + if (m_vPitchYawRollDelta.y > fMaxVal) + { + m_vPitchYawRollDelta.y = fMaxVal; + } + else if (m_vPitchYawRollDelta.y < -fMaxVal) + { + m_vPitchYawRollDelta.y = -fMaxVal; + } + + fMaxVal = g_vtCamMaxRollOffset.GetFloat(); + if (m_vPitchYawRollDelta.z > fMaxVal) + { + m_vPitchYawRollDelta.z = fMaxVal; + } + else if (m_vPitchYawRollDelta.z < -fMaxVal) + { + m_vPitchYawRollDelta.z = -fMaxVal; + } + + fMaxVal = g_vtCamMaxPosXOffset.GetFloat(); + if (m_vPosDelta.x > fMaxVal) + { + m_vPosDelta.x = fMaxVal; + } + else if (m_vPosDelta.x < -fMaxVal) + { + m_vPosDelta.x = -fMaxVal; + } + + fMaxVal = g_vtCamMaxPosYOffset.GetFloat(); + if (m_vPosDelta.y > fMaxVal) + { + m_vPosDelta.y = fMaxVal; + } + else if (m_vPosDelta.y < -fMaxVal) + { + m_vPosDelta.y = -fMaxVal; + } + + fMaxVal = g_vtCamMaxPosZOffset.GetFloat(); + if (m_vPosDelta.z > fMaxVal) + { + m_vPosDelta.z = fMaxVal; + } + else if (m_vPosDelta.z < -fMaxVal) + { + m_vPosDelta.z = -fMaxVal; + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::AddDelta +// +// PURPOSE: Add a new delta +// +// --------------------------------------------------------------------------- // + +void CCameraOffsetMgr::AddDelta(CameraDelta & delta) +{ + // Find an open slot for the new delta... + + float fMinTotalDelta = 100000.0f; + int nSlot = 0; + for (int i=0; i < MAX_CAMERA_DELTAS; i++) + { + float fTotalDelta = m_CameraDeltas[i].GetTotalDelta(); + + if (fTotalDelta == 0.0f) + { + m_CameraDeltas[i] = delta; + return; + } + else + { + if (fTotalDelta < fMinTotalDelta) + { + fMinTotalDelta = fTotalDelta; + nSlot = i; + } + } + } + + // Override the slot with the least amount of change... + + if (delta.GetTotalDelta() > fMinTotalDelta) + { + m_CameraDeltas[nSlot] = delta; + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::SetStaticDelta +// +// PURPOSE: Set a static delta +// +// --------------------------------------------------------------------------- // + +void CCameraOffsetMgr::SetStaticDelta(CameraDelta & delta, int nIndex) +{ + if (nIndex < 0 || nIndex >= MAX_STATIC_CAMERA_DELTAS) return; + + m_StaticCameraDeltas[nIndex] = delta; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::SetStaticDelta +// +// PURPOSE: Set a static delta +// +// --------------------------------------------------------------------------- // + +CameraDelta* CCameraOffsetMgr::GetStaticDelta(int nIndex) +{ + if (nIndex < 0 || nIndex >= MAX_STATIC_CAMERA_DELTAS) return LTNULL; + + return &(m_StaticCameraDeltas[nIndex]); +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CameraAdjustVar::UpdateVar +// +// PURPOSE: Update the variable value +// +// --------------------------------------------------------------------------- // + +void CameraAdjustVar::UpdateVar(float fTimeDelta) +{ + if (fVar == 0.0f) return; + + // Figure out the direction we are going... + + if (m_fCurTime <= 0.0f) + { + if (fTime1 > 0.0f) + { + m_nDir = 1; + m_fLastRealValue = 0.0f; + } + else if (fTime2 > 0.0f) + { + m_nDir = -1; + m_fLastRealValue = fVar; + } + else + { + return; + } + } + + + // Determine percent of time gone by... + + float fPercent = 0.0f; + WaveType eType = eWave1; + + if (m_nDir == 1) + { + eType = eWave1; + fPercent = m_fCurTime / fTime1; + m_fRealValue = fVar * GetWaveFn(eType)(fPercent); + } + else + { + eType = eWave2; + fPercent = m_fCurTime / fTime2; + m_fRealValue = fVar - (fVar * GetWaveFn(eType)(fPercent)); + } + + + // Set our variable value as an increment from the last value... + + if (bIncrement) + { + m_fValue = m_fRealValue - m_fLastRealValue; + m_fLastRealValue = m_fRealValue; + } + else // Normal calculation... + { + m_fValue = m_fRealValue; + } + + // g_pLTClient->CPrint("m_fValue = %.2f (in Deg = %.2f)", m_fValue, RAD2DEG(m_fValue)); + + // Calculate new value... + + m_fCurTime += fTimeDelta; + + if (m_nDir == 1 && m_fCurTime > fTime1) + { + m_fCurTime = 0.0f; + fTime1 = 0.0f; + } + else if (m_nDir == -1 && m_fCurTime > fTime2) + { + // We're done, so clear everything... + + Init(); + } +} + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CCameraOffsetMgr::ProcessTestingVars +// +// PURPOSE: Process testing console vars... +// +// --------------------------------------------------------------------------- // + +void CCameraOffsetMgr::ProcessTestingVars() +{ + CameraDelta delta; + + // See if any testing vars were set... + + if (g_vtCamWeaponImpact.GetFloat() > 0.0f) + { + g_vtCamWeaponImpact.SetFloat(0.0f); + + switch(GetRandom(1, 3)) + { + case 1: + { + delta.Pitch.fVar = GetRandom(1, 2) == 1 ? -DEG2RAD(5.0f) : DEG2RAD(5.0f); + delta.Pitch.fTime1 = 0.1f; + delta.Pitch.fTime2 = 0.25f; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + + g_pLTClient->CPrint("Test Impact Pitch = %.4f (in Deg = %.2f)", delta.Pitch.fVar, RAD2DEG(delta.Pitch.fVar)); + } + break; + + case 2 : + { + delta.Yaw.fVar = GetRandom(1, 2) == 1 ? -DEG2RAD(5.0f) : DEG2RAD(5.0f); + delta.Yaw.fTime1 = 0.1f; + delta.Yaw.fTime2 = 0.25f; + delta.Yaw.eWave1 = Wave_SlowOff; + delta.Yaw.eWave2 = Wave_SlowOff; + + g_pLTClient->CPrint("Test Impact Yaw = %.4f (in Deg = %.2f)", delta.Yaw.fVar, RAD2DEG(delta.Yaw.fVar)); + } + break; + + default : + case 3 : + { + delta.Roll.fVar = GetRandom(1, 2) == 1 ? -DEG2RAD(5.0f) : DEG2RAD(5.0f); + delta.Roll.fTime1 = 0.1f; + delta.Roll.fTime2 = 0.25f; + delta.Roll.eWave1 = Wave_SlowOff; + delta.Roll.eWave2 = Wave_SlowOff; + + g_pLTClient->CPrint("Test Impact Roll = %.4f (in Deg = %.2f)", delta.Roll.fVar, RAD2DEG(delta.Roll.fVar)); + } + break; + } + + AddDelta(delta); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/CameraOffsetMgr.h b/Jack/ClientShellDLL/CameraOffsetMgr.h new file mode 100644 index 00000000..2fbdd2d3 --- /dev/null +++ b/Jack/ClientShellDLL/CameraOffsetMgr.h @@ -0,0 +1,135 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CameraOffsetMgr.h +// +// PURPOSE : Camera offset mgr - Definition +// +// CREATED : 8/23/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CAMERA_OFFSET_MGR__ +#define __CAMERA_OFFSET_MGR__ + +#include "WaveFn.h" + +#define MAX_CAMERA_DELTAS 20 +#define MAX_STATIC_CAMERA_DELTAS 10 + +// The CameraAdjustVar struct is used to maintain a single camera orientation +// variable (i.e., pitch, yaw, roll, pos.x, pos.y, or pos.z)... + +struct CameraAdjustVar +{ + CameraAdjustVar() + { + Init(); + } + + void UpdateVar(float fTimeDelta); + float GetValue() const { return m_fValue; } + + float fVar; // Total value change + float fTime1; // Time to apply change + float fTime2; // Time to reverse change + WaveType eWave1; // How var changes + WaveType eWave2; // How reverse var changes + + LTBOOL bIncrement; // Return value as an increment + + private : + + int m_nDir; // Forward (1) or reverse (-1) + float m_fValue; // Current variable value + float m_fCurTime; // Current time delta + float m_fRealValue; // Real calculated value + float m_fLastRealValue; // Last real calculated value + + inline void Init() + { + m_nDir = 1; + m_fValue = 0.0f; + m_fCurTime = 0.0f; + + m_fRealValue = 0.0f; + m_fLastRealValue = 0.0f; + + bIncrement = LTFALSE; + + fVar = 0.0f; + fTime1 = 0.0f; + fTime2 = 0.0f; + eWave1 = Wave_Linear; + eWave2 = Wave_Linear; + } +}; + + +// CameraDelta holds all of the possible camera offset variables... + +struct CameraDelta +{ + CameraDelta() + { + Pitch.bIncrement = LTFALSE; + Roll.bIncrement = LTFALSE; + Yaw.bIncrement = LTFALSE; + } + + inline float GetTotalDelta() const + { + double fTotal = 0.0f; + + fTotal += fabs(Pitch.fVar); + fTotal += fabs(Yaw.fVar); + fTotal += fabs(Roll.fVar); + fTotal += fabs(PosX.fVar); + fTotal += fabs(PosY.fVar); + fTotal += fabs(PosZ.fVar); + + return (float)fTotal; + } + + CameraAdjustVar Pitch; + CameraAdjustVar Yaw; + CameraAdjustVar Roll; + CameraAdjustVar PosX; + CameraAdjustVar PosY; + CameraAdjustVar PosZ; +}; + + +class CCameraOffsetMgr +{ + public: + + CCameraOffsetMgr(); + + LTBOOL Init(); + void Update(); + + void AddDelta(CameraDelta & delta); + + CameraDelta* GetStaticDelta(int nIndex); + void SetStaticDelta(CameraDelta & delta, int nIndex); + + inline LTVector GetPosDelta() const { return m_vPosDelta; } + inline LTVector GetPitchYawRollDelta() const { return m_vPitchYawRollDelta; } + + private : + + void ValidateDeltas(); + + CameraDelta m_CameraDeltas[MAX_CAMERA_DELTAS]; + CameraDelta m_StaticCameraDeltas[MAX_STATIC_CAMERA_DELTAS]; + LTVector m_vPitchYawRollDelta; + LTVector m_vPosDelta; + + void ProcessTestingVars(); +}; + + +#endif // __CAMERA_OFFSET_MGR__ + diff --git a/Jack/ClientShellDLL/ChainedFX.cpp b/Jack/ClientShellDLL/ChainedFX.cpp new file mode 100644 index 00000000..cf9df30a --- /dev/null +++ b/Jack/ClientShellDLL/ChainedFX.cpp @@ -0,0 +1,94 @@ +// +// MODULE : ChainedFX.cpp +// +// PURPOSE : Base class for chaining ClientFX +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ChainedFX.h" +#include "GameClientShell.h" + + +void CChainedFX::Init(char* szIntroName, char* szShortIntroName, char* szLoopName) +{ + + SAFE_STRCPY(m_szIntroName,szIntroName); + SAFE_STRCPY(m_szShortIntroName,szShortIntroName); + SAFE_STRCPY(m_szLoopName,szLoopName); + + m_iFromScreen = m_iToScreen = -1; + m_bAllowLooping = true; +} + +void CChainedFX::Start(bool bUseShortIntro) +{ + INT_FX* pFX = LTNULL; + m_bIntroDone = false; + + if (bUseShortIntro) + { + if (strlen(m_szShortIntroName)) + pFX = g_pLayoutMgr->GetFX(m_szShortIntroName); + } + else if (strlen(m_szIntroName)) + pFX = g_pLayoutMgr->GetFX(m_szIntroName); + + if (pFX) + { + g_pInterfaceMgr->AddInterfaceFX(&m_IntroFX, pFX->szFXName,pFX->vPos,false); + } + else + { + m_IntroFX.ClearLink(); + m_bIntroDone = true; + } + + m_pLoopFXStruct = g_pLayoutMgr->GetFX(m_szLoopName); +// if (m_pLoopFXStruct && !m_IntroFX.m_pInstance) +// g_pInterfaceMgr->AddInterfaceFX(NULL, m_pLoopFXStruct->szFXName,m_pLoopFXStruct->vPos,true); +} + + +void CChainedFX::Update() +{ + if (m_IntroFX.IsValid() && m_IntroFX.GetInstance()->IsDone()) + { +// g_pLTClient->CPrint("intro fx done"); + g_pInterfaceMgr->RemoveInterfaceFX(&m_IntroFX); + m_IntroFX.ClearLink(); + m_bIntroDone = true; + } + + if (m_pLoopFXStruct && (!m_IntroFX.IsValid() || m_IntroFX.GetInstance()->IsFinished())) + { + if (m_bAllowLooping) + { + g_pInterfaceMgr->RemoveInterfaceFX(&m_IntroFX); + m_IntroFX.ClearLink(); +// g_pLTClient->CPrint("intro fx finished, starting loop"); + g_pInterfaceMgr->AddInterfaceFX(&m_LoopFX, m_pLoopFXStruct->szFXName,m_pLoopFXStruct->vPos,true); + m_pLoopFXStruct = NULL; + } + m_bIntroDone = true; + } +} + +void CChainedFX::End() +{ + if (m_IntroFX.IsValid()) + { + g_pInterfaceMgr->RemoveInterfaceFX(&m_IntroFX); + m_IntroFX.ClearLink(); + } + + if (m_LoopFX.IsValid()) + { + g_pInterfaceMgr->RemoveInterfaceFX(&m_LoopFX); + m_LoopFX.ClearLink(); + } + m_bIntroDone = true; +} diff --git a/Jack/ClientShellDLL/ChainedFX.h b/Jack/ClientShellDLL/ChainedFX.h new file mode 100644 index 00000000..6ab23c15 --- /dev/null +++ b/Jack/ClientShellDLL/ChainedFX.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ChainedFX.h +// +// PURPOSE : Base class for chaining ClientFX +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_CHAINED_FX_H_) +#define _CHAINED_FX_H_ + +#include "ClientFXMgr.h" + +struct INT_FX; + +class CChainedFX +{ +public: + CChainedFX() : m_pLoopFXStruct(LTNULL) {} + + void Init(char* szIntroName, char* szShortIntroName, char* szLoopName); + + void Start(bool bUseShortIntro = false); + void End(); // Optional method for preemptively killing a ChainFX + + void Update(); + + bool IsIntroDone() {return m_bIntroDone;} + + void SetLooping(bool bLooping) {m_bAllowLooping = bLooping;} + // ABM new fields added to make chainfx more generic + int m_iFromScreen; + int m_iToScreen; + +private: + char m_szIntroName[128]; + char m_szShortIntroName[128]; + char m_szLoopName[128]; + + bool m_bIntroDone; // flag for when this chainfx is past any intro stage, possibly looping + bool m_bAllowLooping; + + CLIENTFX_LINK m_IntroFX; + CLIENTFX_LINK m_LoopFX; + + INT_FX* m_pLoopFXStruct; +}; + +typedef std::vector ChainFXList; + +// ABM 2/5/02 Array of ChainFXlist. Typedef used by the TransitionFXMgr for +// managing all of these little arrays +typedef std::vector TransitionFXList; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/CharacterFX.cpp b/Jack/ClientShellDLL/CharacterFX.cpp new file mode 100644 index 00000000..3a253b44 --- /dev/null +++ b/Jack/ClientShellDLL/CharacterFX.cpp @@ -0,0 +1,3362 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CharacterFX.cpp +// +// PURPOSE : Character special FX - Implementation +// +// CREATED : 8/24/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "CharacterFX.h" +#include "GameClientShell.h" +#include "ParticleTrailFX.h" +#include "SmokeFX.h" +#include "SFXMsgIds.h" +#include "ClientUtilities.h" +#include "SoundMgr.h" +#include "iltphysics.h" +#include "SurfaceFunctions.h" +#include "BaseScaleFX.h" +#include "VarTrack.h" +#include "ClientButeMgr.h" +#include "MsgIDs.h" +#include "PlayerShared.h" +#include "VolumeBrushFX.h" +#include "CMoveMgr.h" +#include "VehicleMgr.h" +#include "PlayerCamera.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "VehicleButeMgr.h" +#include "ChassisButeMgr.h" + +extern CGameClientShell* g_pGameClientShell; +extern CClientButeMgr* g_pClientButeMgr; + +extern LTVector g_vPlayerCameraOffset; + +#define INTERSECT_Y_OFFSET 50.0f +#define FOOTSTEP_SOUND_RADIUS 1000.0f +#define KEY_FOOTSTEP_SOUND "FOOTSTEP_KEY" +#define KEY_BUTE_SOUND "BUTE_SOUND_KEY" +#define KEY_MOVEMENT_LOUD "MOVE_LOUD_KEY" +#define KEY_MOVEMENT_QUIET "MOVE_QUIET_KEY" +#define KEY_SHOW_ATTACHFX "SHOW_ATTACHFX" // SHOW_ATTACHFX n +#define KEY_HIDE_ATTACHFX "HIDE_ATTACHFX" // HIDE_ATTACHFX n +#define KEY_FX "FX" // HIDE_ATTACHFX n + + +#define SUBTITLE_STRINGID_OFFSET 0 +#define DEFAULT_TAUNT_RADIUS 1500.0f +#define DEFAULT_VEHICLE_RADIUS 2500.0f + +#define DEFAULT_CIGARETTE_TEXTURE "SFX\\Impact\\Spr\\Smoke.spr" +#define DEFAULT_ZZZ_TEXTURE "Interface\\hud\\icon_sleep.dtx" +#define DEFAULT_HEART_TEXTURE "SFX\\Particle\\Heart.dtx" +#define DEFAULT_SMOKEPUFF_TEXTURE "" + +#define RADAR_AI_TRACKING "AITracking" +#define RADAR_PLAYER_TRACKING "PlayerTracking" + +SurfaceType g_eClientLastSurfaceType = ST_UNKNOWN; + + +VarTrack g_vtBreathTime; +VarTrack g_vtModelKey; +VarTrack g_vtFootPrintBlend; +VarTrack g_vtMinTrailSegment; +VarTrack g_vtTrailSegmentLifetime; +VarTrack g_vtDialogueCinematicSoundRadius; +VarTrack g_vtVehicleTrials; +VarTrack g_vtDingDelay; + +VarTrack g_vtOrientOnAnim; +VarTrack g_vtPlayerPitchTracking; +VarTrack g_vtUpperTorsoPitchMax; +VarTrack g_vtLowerTorsoPitchMax; +VarTrack g_vtPitchScale; +VarTrack g_vtPitchBias; + +VarTrack g_vtQuietMovementVolumeFactor; + +extern VarTrack g_vtVehicleContourExtraDimsZ; +extern VarTrack g_vtVehicleContourExtraDimsX; +extern VarTrack g_vtVehicleContourMaxRotation; + +/////////////// + +const LTVector g_kvPlayerScubaCamOffset(0.0, 41.0, 0.0); + +CCharacterFX::CharFXList CCharacterFX::m_lstPlayersInGame; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::Init +// +// PURPOSE: Init the character fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CCharacterFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + CHARCREATESTRUCT ch; + + ch.hServerObj = hServObj; + ch.Read(pMsg); + + return Init(&ch); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::Init +// +// PURPOSE: Init the character fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CCharacterFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((CHARCREATESTRUCT*)psfxCreateStruct); + + // Init the node controller + + if ( !m_NodeController.Init(this) ) + { + return LTFALSE; + } + + // Init our 3rd person flashlight fx (i.e., what other players see)... + + m_3rdPersonFlashlight.Init(m_hServerObject); + + HOBJECT hLocalObj = g_pLTClient->GetClientObject(); + + // Only do pitch node tracking if it's a non-local player in a multiplayer game... + + if( m_cs.bIsPlayer && IsMultiplayerGame() ) + { + if (m_hServerObject != hLocalObj) + { + + // create the chat icon + static char szChatFX[128] = ""; + if (!szChatFX[0]) + g_pClientButeMgr->GetSpecialFXAttributeString("ChatFX",szChatFX,sizeof(szChatFX)); + + CLIENTFX_CREATESTRUCT fxInit( szChatFX, FXFLAG_LOOP, m_hServerObject ); + + g_pClientFXMgr->CreateClientFX( &m_linkChatFX, fxInit, true ); + if ( m_linkChatFX.IsValid() ) + { + // start out hidden + m_linkChatFX.GetInstance()->Hide(); + } + } + } + + ResetPitchTracking(); + + // Size the damageFX vector to the number of damagefx we have... + + //make sure that we don't have any old arrays lying around + debug_deletea(m_p3rdPersonDamageFX); + m_p3rdPersonDamageFX = NULL; + m_nNum3rdPersonDamageFX = 0; + + if( g_pDamageFXMgr ) + { + m_p3rdPersonDamageFX = debug_newa(CLIENTFX_LINK, g_pDamageFXMgr->GetNumDamageFX() ); + if(m_p3rdPersonDamageFX) + m_nNum3rdPersonDamageFX = g_pDamageFXMgr->GetNumDamageFX(); + } + + // Create the hitbox object + + m_HitBox.Init( m_hServerObject, m_cs.vHitBoxDims, m_cs.vHitBoxOffset ); + + // Add to radar if tracking... + if( m_cs.bRadarVisible ) + { + if( m_cs.bIsPlayer ) + { + if( IsMultiplayerGame( )) + { + g_pRadar->AddPlayer( m_hServerObject, m_cs.nClientID ); + } + } + else + { + g_pRadar->AddObject( m_hServerObject, RADAR_AI_TRACKING, INVALID_TEAM ); + } + } + + if( m_cs.bTracking ) + { + if( m_cs.bIsPlayer ) + { + g_pRadar->AddObject( m_hServerObject, RADAR_PLAYER_TRACKING, INVALID_TEAM ); + } + else + { + g_pRadar->AddObject( m_hServerObject, RADAR_AI_TRACKING, INVALID_TEAM ); + } + } + + UpdateAttachments(); + + m_nUniqueDialogueId = 0; + m_bSubtitlePriority = false; + + if( m_cs.bIsPlayer ) + { + // Add this player to the list of players in game... + m_lstPlayersInGame.push_back( this ); + } + + UpdateCarrying(); + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::~CCharacterFX() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CCharacterFX::~CCharacterFX() +{ + RemoveUnderwaterFX(); + RemoveCigaretteFX(); + RemoveZzzFX(); + RemoveFlashLightFX(); + RemoveAttachClientFX(); + + if (m_hDialogueSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hDialogueSnd); + } + + if (m_hVehicleSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleSound); + } + + if( m_hUpperTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->DestroyTrackingNode( m_hUpperTorsoNode ); + m_hUpperTorsoNode = INVALID_TRACKEDNODE; + } + + if( m_hLowerTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->DestroyTrackingNode( m_hLowerTorsoNode ); + m_hLowerTorsoNode = INVALID_TRACKEDNODE; + } + + if( m_hHeadNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->DestroyTrackingNode( m_hHeadNode ); + m_hHeadNode = INVALID_TRACKEDNODE; + } + + KillWeaponLoopSound(); + + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + + // Shutdown any damageFX... + + ShutdownDamageFX(); + + //free all the 3rd person damage effects + debug_deletea(m_p3rdPersonDamageFX); + m_p3rdPersonDamageFX = NULL; + + if( m_linkChatFX.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_linkChatFX ); + } + + CharFXList::iterator iter = m_lstPlayersInGame.begin(); + while( iter != m_lstPlayersInGame.end() ) + { + if( *iter == this ) + { + m_lstPlayersInGame.erase( iter ); + break; + } + + ++iter; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateObject +// +// PURPOSE: Create the various fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CCharacterFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + if (!g_vtBreathTime.IsInitted()) + { + g_vtBreathTime.Init(pClientDE, "BreathTime", LTNULL, 5.0f); + } + + if (!g_vtModelKey.IsInitted()) + { + g_vtModelKey.Init(pClientDE, "ModelKey", LTNULL, 0.0f); + } + + if (!g_vtFootPrintBlend.IsInitted()) + { + g_vtFootPrintBlend.Init(pClientDE, "FootPrintBlendMode", LTNULL, 2.0f); + } + + if (!g_vtMinTrailSegment.IsInitted()) + { + g_vtMinTrailSegment.Init(pClientDE, "MinTrailSegment", LTNULL, 25.0f); + } + + if (!g_vtTrailSegmentLifetime.IsInitted()) + { + g_vtTrailSegmentLifetime.Init(pClientDE, "TrailSegmentLifetime", LTNULL, 15.0f); + } + + if (!g_vtDialogueCinematicSoundRadius.IsInitted()) + { + g_vtDialogueCinematicSoundRadius.Init(pClientDE, "DialogueCinematicSndRadius", LTNULL, 10000.0f); + } + + if (!g_vtVehicleTrials.IsInitted()) + { + g_vtVehicleTrials.Init(pClientDE, "VehicleTrails", LTNULL, 0.0f); + } + + if (!g_vtDingDelay.IsInitted()) + { + g_vtDingDelay.Init(pClientDE, "DingDelay", LTNULL, 1.0f); + } + + if( !g_vtOrientOnAnim.IsInitted() ) + { + g_vtOrientOnAnim.Init( g_pLTClient, "OrientOnAnim", LTNULL, 1.0f ); + } + + if( !g_vtPlayerPitchTracking.IsInitted() ) + { + g_vtPlayerPitchTracking.Init(g_pLTClient, "PlayerPitchTracking", LTNULL, 1.0f); + } + + if( !g_vtUpperTorsoPitchMax.IsInitted() ) + { + g_vtUpperTorsoPitchMax.Init( g_pLTClient, "UpperTorsoPitchMax", LTNULL, 25.0f ); + } + + if( !g_vtLowerTorsoPitchMax.IsInitted() ) + { + g_vtLowerTorsoPitchMax.Init( g_pLTClient, "LowerTorsoPitchMax", LTNULL, 45.0f ); + } + + if( !g_vtPitchScale.IsInitted() ) + { + g_vtPitchScale.Init( g_pLTClient, "PitchScale", LTNULL, 0.5f ); + } + + if( !g_vtPitchBias.IsInitted() ) + { + g_vtPitchBias.Init( g_pLTClient, "PitchBias", LTNULL, -3.0f ); + } + + if( !g_vtQuietMovementVolumeFactor.IsInitted() ) + { + g_vtQuietMovementVolumeFactor.Init( g_pLTClient, "QuietMovementVolumeFactor", LTNULL, 0.65f ); + } + + //initialize our breath information + m_fBreathElapsedTime = 0.0f; + m_fBreathEndTime = g_vtBreathTime.GetFloat(); + + // NOTE: Since we only use node control for the mouth now, we can safely use CF_INSIDERADIUS + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Client, CF_NOTIFYMODELKEYS, CF_NOTIFYMODELKEYS); + + // Set up MoveMgr's point to us, if applicable... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + + if( hPlayerObj == m_hServerObject) + { + InitLocalPlayer(); + } + else // AI + { + uint32 dwFlags = FLAG_SOLID | ((IsMultiplayerGame()) ? (FLAG_STAIRSTEP | FLAG_GRAVITY) : 0); + + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Flags, dwFlags, dwFlags); + } + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f, 0.0f); + m_pStr->SetColor(argbWhite); + m_pStr->SetAlignmentH(CUI_HALIGN_CENTER); + + // create and show all client effects associated with this model + CreateAttachClientFX(); + //ShowAttachClientFX(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::Update +// +// PURPOSE: Update the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CCharacterFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; + + // Update our hitbox... + // We need to do this here incase of the early out when the server object is inactive. + // The hitbox should always be in the correct position. + + m_HitBox.Update(); + + + // See if our server side object is active + + uint32 dwUserFlags(0); + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if ( !(dwUserFlags & USRFLG_GAMEBASE_ACTIVE) ) + { + return LTTRUE; + } + + // Make us solid if our ai usrflg solid is set + + uint32 dwFlags(0); + + if ( dwUserFlags & USRFLG_AI_CLIENT_SOLID ) + { + dwFlags |= FLAG_SOLID; + } + else if ( m_cs.bIsPlayer ) + { + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_Flags, dwFlags); + } + + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Flags, dwFlags, FLAG_SOLID); + + + // Update + + g_pLTClient->ProcessAttachments(m_hServerObject); + + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUsrFlags); + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + m_vStrPos = vPos; + m_vStrPos.y += 64.0f; + + + if (dwUsrFlags & USRFLG_PLAYER_UNDERWATER) + { + UpdateUnderwaterFX(vPos); + } + else + { + RemoveUnderwaterFX(); + } + + // Update the alpha cycling. + if( dwUsrFlags & USRFLG_PLAYER_ALPHACYCLE ) + { + UpdatePlayerAlphaCycle( ); + } + else if( m_PlayerAlphaCycleTimer.On( )) + { + RemovePlayerAlphaCycle( ); + } + + // Update the character damage FX. 1st and 3rd person. + + UpdateDamageFX(); + + // Update the pitch of this character + UpdatePitch(); + + // Update various FX + + if ( m_cs.byFXFlags & CHARCREATESTRUCT::eZzz ) + { + UpdateZzzFX(); + } + else + { + RemoveZzzFX(); + } + + if ( m_cs.byFXFlags & CHARCREATESTRUCT::eCigarette ) + { + UpdateCigaretteFX(); + } + else + { + RemoveCigaretteFX(); + } + + if ( m_cs.byFXFlags & CHARCREATESTRUCT::eFlashLight ) + { + UpdateFlashLightFX(); + } + else + { + RemoveFlashLightFX(); + } + + // Update node controller... + + m_NodeController.Update(); + + + // Update being on vehicle if necessary... + + UpdateOnVehicle(); + + + // Update breath fx... + + UpdateBreathFX(); + + + // Update our sounds... + + UpdateSounds(); + + + + if (m_pStr && m_pStr->GetLength()) + { + LTVector pos = g_pInterfaceMgr->GetScreenFromWorldPos(m_vStrPos, g_pPlayerMgr->GetCamera()); + + if (pos.z > 0.0f && pos.z < 900.0f && pos.x > 0 && pos.y > 0) + { + + uint8 h = (uint8)(g_pInterfaceResMgr->GetXRatio() * 5000.0f / (100.0f + pos.z)); + + if (h != m_pStr->GetCharScreenHeight()) + { + m_pStr->SetCharScreenHeight(h); + } + + m_pStr->SetPosition( pos.x, pos.y); + } + else + { + m_pStr->SetPosition( 2000.0f, -1000.0f); + } + } + + + if (m_bUpdateAttachments) + UpdateAttachments(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateDamageFX +// +// PURPOSE: Update our damage fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateDamageFX() +{ + if( !m_hServerObject ) + return; + + //hack to make instant choke damage act like progressive damage + static DamageFlags chokeFlag = DamageTypeToFlag(DT_CHOKE); + if (m_nInstantDamageFlags & chokeFlag) + { + m_cs.nDamageFlags |= chokeFlag; + } + else + { + m_cs.nDamageFlags &= ~chokeFlag; + } + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + bool bLocal = (hPlayerObj == m_hServerObject); + bool bPlayingAni = false; + + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + // Check our main tracker to see we if we are done playing any special damage anis... + + if (m_cs.bIsPlayer) + { + HMODELANIM hBaseAnim, hCurAnim; + g_pModelLT->GetAnimIndex( m_hServerObject, "base", hBaseAnim ); + g_pModelLT->GetCurAnim( m_hServerObject, MAIN_TRACKER, hCurAnim ); + + if( hBaseAnim != INVALID_MODEL_ANIM && hCurAnim != INVALID_MODEL_ANIM ) + { + if ( hCurAnim == hBaseAnim ) + { + bPlayingAni = false; + } + else if ( bLocal && (pMoveMgr->IsBodyOnLadder() || m_bOnVehicle || m_bPlayerDead) ) + { + // If we're on a ladder, vehicle, or dead we're not playing the damage ani... + bPlayingAni = false; + } + else if ( !bLocal && (m_bOnVehicle || m_bPlayerDead) ) + { + // Note: currently no way to determine if we're on a ladder or not... + bPlayingAni = false; + } + else + { + bPlayingAni = true; + } + + m_bDamageFxTrackingOverride = bPlayingAni; + } + } + + // No need to go further if our damageflags haven't changed... + + if( (m_nLastDamageFlags == m_cs.nDamageFlags) && (m_nInstantDamageFlags == 0) && !m_bWasPlayingSpecialDamageAni ) + { + return; + } + + m_nLastDamageFlags = m_cs.nDamageFlags; + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstDamageFX(); + while( pDamageFX ) + { + // Test the damage flags against the DamageFX... + + if( m_nLastDamageFlags & pDamageFX->m_nDamageFlag || pDamageFX->m_vtTestFX.GetFloat() > 0.0f ) + { + // Start this DamageFX if necessary + + if( bLocal ) + { + // First person DamageFX for the local object... + + pDamageFX->Start(); + } + else + { + // Play the 3rd person FX if this is not the local clients characterfx... + + if( pDamageFX->m_sz3rdPersonFXName[0] && + (pDamageFX->m_nID < m_nNum3rdPersonDamageFX) && + !m_p3rdPersonDamageFX[pDamageFX->m_nID].IsValid() ) + { + CLIENTFX_CREATESTRUCT fxInit( pDamageFX->m_sz3rdPersonFXName, FXFLAG_LOOP, m_hServerObject ); + g_pClientFXMgr->CreateClientFX(&m_p3rdPersonDamageFX[pDamageFX->m_nID], fxInit, LTTRUE ); + } + } + } + else + { + // Stop any current DamageFX + + if( !bPlayingAni ) + { + if( bLocal ) + { + pDamageFX->Stop(); + } + else + { + if( (pDamageFX->m_nID < m_nNum3rdPersonDamageFX) && m_p3rdPersonDamageFX[pDamageFX->m_nID].IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_p3rdPersonDamageFX[pDamageFX->m_nID] ); + } + } + } + } + + // Check if we are taking any instant damage... + + if( m_nInstantDamageFlags & pDamageFX->m_nDamageFlag ) + { + if( pDamageFX->m_sz3rdPersonInstFXName[0] && !m_link3rdPersonInstFX.IsValid() ) + { + CLIENTFX_CREATESTRUCT fxInit( pDamageFX->m_sz3rdPersonInstFXName, 0, m_hServerObject ); + g_pClientFXMgr->CreateClientFX( &m_link3rdPersonInstFX, fxInit, LTTRUE ); + } + } + + pDamageFX = g_pDamageFXMgr->GetNextDamageFX(); + } + + // Clear the instant damage... + + m_nInstantDamageFlags = 0; + m_bWasPlayingSpecialDamageAni = bPlayingAni; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::HandleDialogueMsg +// +// PURPOSE: Start/Stop a dialogue sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::HandleDialogueMsg(ILTMessage_Read *pMsg) +{ + HSTRING hSound = pMsg->ReadHString(); + LTFLOAT fRadius = pMsg->Readfloat(); + m_nUniqueDialogueId = pMsg->Readuint8( ); + CharacterSoundType cst = (CharacterSoundType)pMsg->Readuint8( ); + m_bSubtitlePriority = (cst == CST_DIALOG); + bool bCensor = (cst == CST_DEATH) || (cst == CST_DAMAGE); + + if (bCensor && g_pVersionMgr->IsLowViolence()) + { + //don't play the sound, but if it is a pain sound, do notify the server that we're done with it + // if it's a death sound, don't bother because it's not waiting for notification + if (cst == CST_DAMAGE) + KillLipSyncSound( true ); + return; + } + + char szSound[128]; + *szSound = 0; + + if (hSound) + { + strcpy(szSound, g_pLTClient->GetStringData(hSound)); + g_pLTClient->FreeString(hSound); + } + + if (m_hDialogueSnd) + { + KillLipSyncSound( false ); + } + + if (*szSound && fRadius > 0.0f) + { + m_bSubtitle = LTFALSE; + + //don't bother getting the handle if it's a death sound, because we don't track them + bool bGetHandle = (cst != CST_DEATH); + m_hDialogueSnd = PlayLipSyncSound(szSound, fRadius, m_bSubtitle, m_bSubtitlePriority, bGetHandle); + + //if we didn't get a handle (and we did ask for one) then tell the server we're done with the sound + if( !m_hDialogueSnd && bGetHandle) + { + KillLipSyncSound( true ); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::HandleTauntMsg +// +// PURPOSE: Start a taunt sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::HandleTauntMsg(ILTMessage_Read *pMsg) +{ + uint32 nTauntID = pMsg->Readuint32(); + uint32 nTeam = pMsg->Readuint8(); + + if (IsTeamGameType() && nTeam != INVALID_TEAM) + { + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return; + + if( pLocalCI->nTeamID != nTeam ) + return; + } + PlayTaunt(nTauntID, LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateSounds +// +// PURPOSE: Update our sounds +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateSounds() +{ + if (m_hDialogueSnd) + { + if (g_pLTClient->IsDone(m_hDialogueSnd)) + { + KillLipSyncSound( true ); + } + } + + // See if we should play a ding sound... + + if (IsMultiplayerGame()) + { + LTFLOAT fTime = g_pLTClient->GetTime(); + for (int i=0; i < MAX_DINGS; i++) + { + if (m_fNextDingTime[i] >= fTime) + { +// g_pLTClient->CPrint("Playing Ding Sound at Time %.2f", m_fNextDingTime[i]); + m_fNextDingTime[i] = -1.0f; + char* pSound = "Guns\\snd\\Impacts\\MultiDing.wav"; + g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateUnderwaterFX +// +// PURPOSE: Update the underwater fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateUnderwaterFX(LTVector & vPos) +{ + if (!m_pClientDE || !m_hServerObject) return; + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + LTRotation rRot; + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + LTBOOL bIsLocalClient = (m_cs.bIsPlayer && hPlayerObj == m_hServerObject); + + if ( !bIsLocalClient || !(g_pPlayerMgr->IsFirstPerson() && hCamera) ) + { + LTVector vDims; + + g_pPhysicsLT->GetObjectDims(m_hServerObject, &vDims); + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + vPos += rRot.Forward() * 20.0f; + vPos.y += vDims.y * 0.4f; + } + else + { + g_pLTClient->GetObjectPos(hCamera, &vPos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + vPos += rRot.Forward() * 20.0f; + vPos.y -= 20.0f; + + vPos += rRot.Up() * -20.0f; + } + + if (!m_pBubbles) + { + CreateUnderwaterFX(vPos); + } + + if (m_pBubbles) + { + g_pLTClient->SetObjectPos(m_pBubbles->GetObject(), &vPos); + + m_pBubbles->Update(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateUnderwaterFX +// +// PURPOSE: Create underwater special fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateUnderwaterFX(const LTVector & vPos) +{ + if (!m_pClientDE || !g_pGameClientShell || !m_hServerObject) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_fNextBubbleTime > 0.0f && fTime < m_fNextBubbleTime) + { + return; + } + + m_fNextBubbleTime = fTime + GetRandom(2.0f, 5.0f); + + SMCREATESTRUCT sm; + + sm.vPos = vPos; + sm.vPos.y += 25.0f; + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-7.5f, 20.0f, -7.5f); + sm.vMaxDriftVel.Init(7.5f, 40.0f, 7.5f); + + GetLiquidColorRange(CC_WATER, &sm.vColor1, &sm.vColor2); + + sm.fVolumeRadius = 10.0f; + sm.fLifeTime = 0.2f; + sm.fRadius = 1000; + sm.fParticleCreateDelta = 0.1f; + sm.fMinParticleLife = 1.0f; + sm.fMaxParticleLife = 3.0f; + sm.nNumParticles = GetRandom(2, 5); + sm.bIgnoreWind = LTTRUE; + sm.hstrTexture = m_pClientDE->CreateString(DEFAULT_BUBBLE_TEXTURE); + + //m_pBubbles = + psfxMgr->CreateSFX(SFX_SMOKE_ID, &sm); + + m_pClientDE->FreeString(sm.hstrTexture); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemoveUnderwaterFX +// +// PURPOSE: Remove the underwater fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::RemoveUnderwaterFX() +{ + m_fNextBubbleTime = -1.0f; + + if (m_pBubbles) + { + debug_delete(m_pBubbles); + m_pBubbles = LTNULL; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateZzzFX +// +// PURPOSE: Update the Zzz fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateZzzFX() +{ + if (!m_pClientDE || !m_hServerObject) return; + + LTVector vPos(0,0,0); + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(m_hServerObject, "head", hSocket) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform(m_hServerObject, hSocket, transform, LTTRUE) ) + { + vPos = transform.m_Pos; + } + } + + if (!m_pZzz) + { + CreateZzzFX(); + } + + if (m_pZzz) + { + g_pLTClient->SetObjectPos(m_pZzz->GetObject(), &vPos); + + m_pZzz->Update(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateZzzFX +// +// PURPOSE: Create Zzz special fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateZzzFX() +{ + if (!m_pClientDE || !g_pGameClientShell || !m_hServerObject) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_fNextZzzTime > 0.0f && fTime < m_fNextZzzTime) + { + return; + } + + m_fNextZzzTime = fTime + GetRandom(0.75f, 1.0f); + + SMCREATESTRUCT sm; + + LTVector vPos(0,0,0); + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(m_hServerObject, "head", hSocket) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform(m_hServerObject, hSocket, transform, LTTRUE) ) + { + vPos = transform.m_Pos; + } + } + + sm.vPos = vPos; + sm.vPos.y += 15.0f; + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-1, 5, -1); + sm.vMaxDriftVel.Init(1, 10, 1); + + GetLiquidColorRange(CC_WATER, &sm.vColor1, &sm.vColor2); + + sm.fVolumeRadius = 10.0f; + sm.fLifeTime = 0.2f; + sm.fRadius = 1000; + sm.fParticleCreateDelta = 0.1f; + sm.fMinParticleLife = 1.0f; + sm.fMaxParticleLife = 3.0f; + sm.nNumParticles = GetRandom(1, 1); + sm.bIgnoreWind = LTFALSE; + sm.hstrTexture = m_pClientDE->CreateString(DEFAULT_ZZZ_TEXTURE); + + psfxMgr->CreateSFX(SFX_SMOKE_ID, &sm); + + m_pClientDE->FreeString(sm.hstrTexture); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemoveZzzFX +// +// PURPOSE: Remove the Zzz fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::RemoveZzzFX() +{ + m_fNextZzzTime = -1.0f; + + if (m_pZzz) + { + debug_delete(m_pZzz); + m_pZzz = LTNULL; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateCigaretteFX +// +// PURPOSE: Update the Cigarette fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateCigaretteFX() +{ + if (!m_pClientDE || !m_hServerObject) return; + + LTVector vPos(0,0,0); + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(m_hServerObject, "LeftHand", hSocket) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform(m_hServerObject, hSocket, transform, LTTRUE) ) + { + vPos = transform.m_Pos; + } + } + + if (!m_pCigarette) + { + CreateCigaretteFX(); + } + + if (m_pCigarette) + { + g_pLTClient->SetObjectPos(m_pCigarette->GetObject(), &vPos); + m_pCigarette->Update(); + } + + HOBJECT hObj = m_CigaretteModel.GetObject(); + if (!hObj) + { + // Create fx... + + m_scalecs.dwFlags = FLAG_VISIBLE | FLAG_NOLIGHT; + + // Set up fx flags... + + m_scalecs.pFilename = "Props\\Models\\CigButt_01.ltb"; + + CButeListReader blrSkinReader; + blrSkinReader.SetItem(0, "Props\\Skins\\CigButt.dtx", MAX_CS_FILENAME_LEN+1); + m_scalecs.pSkinReader = &blrSkinReader; + + m_scalecs.vPos = vPos; + m_scalecs.vVel.Init(); + m_scalecs.vInitialScale.Init(1, 1, 1); + m_scalecs.vFinalScale.Init(1, 1, 1); + m_scalecs.vInitialColor.Init(1, 1, 1); + m_scalecs.vFinalColor.Init(1, 1, 1); + m_scalecs.bUseUserColors = LTFALSE; + m_scalecs.fLifeTime = 1.0f; + m_scalecs.fInitialAlpha = 1.0f; + m_scalecs.fFinalAlpha = 1.0f; + m_scalecs.bLoop = LTFALSE; + m_scalecs.fDelayTime = 0.0f; + m_scalecs.bAdditive = LTFALSE; + m_scalecs.nType = OT_MODEL; + + m_CigaretteModel.Init(&m_scalecs); + m_CigaretteModel.CreateObject(g_pLTClient); + } + else + { + // Update fx... + + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + g_pLTClient->SetObjectPos(hObj, &vPos); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateCigaretteFX +// +// PURPOSE: Create Cigarette special fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateCigaretteFX() +{ + if ( !(m_cs.byFXFlags & CHARCREATESTRUCT::eCigaretteSmoke) ) return; + if (!m_pClientDE || !g_pGameClientShell || !m_hServerObject) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_fNextCigaretteTime > 0.0f && fTime < m_fNextCigaretteTime) + { + return; + } + + m_fNextCigaretteTime = fTime + GetRandom(0.1f, 1.0f); + + SMCREATESTRUCT sm; + + LTVector vPos(0,0,0); + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(m_hServerObject, "LeftHand", hSocket) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform(m_hServerObject, hSocket, transform, LTTRUE) ) + { + g_pTransLT->GetPos(transform, vPos); + } + } + + sm.vPos = vPos; + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-1, 5, -1); + sm.vMaxDriftVel.Init(1, 10, 1); + + GetLiquidColorRange(CC_WATER, &sm.vColor1, &sm.vColor2); + + sm.fVolumeRadius = 0.0f; + sm.fLifeTime = 0.2f; + sm.fRadius = 200; + sm.fParticleCreateDelta = 0.1f; + sm.fMinParticleLife = 1.0f; + sm.fMaxParticleLife = 3.0f; + sm.nNumParticles = GetRandom(1, 2); + sm.bIgnoreWind = LTFALSE; + sm.hstrTexture = m_pClientDE->CreateString(DEFAULT_CIGARETTE_TEXTURE); + + psfxMgr->CreateSFX(SFX_SMOKE_ID, &sm); + + m_pClientDE->FreeString(sm.hstrTexture); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemoveCigaretteFX +// +// PURPOSE: Remove the Cigarette fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::RemoveCigaretteFX() +{ + m_fNextCigaretteTime = -1.0f; + + if (m_pCigarette) + { + debug_delete(m_pCigarette); + m_pCigarette = LTNULL; + } + + HOBJECT hObj = m_CigaretteModel.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateFlashLightFX +// +// PURPOSE: Update the flash light fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateFlashLightFX() +{ + // See if this is the local player... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (m_cs.bIsPlayer && hPlayerObj == m_hServerObject) + { + // If we're the local player don't show the 3rd person fx + + m_3rdPersonFlashlight.TurnOff(); + return; + } + + m_3rdPersonFlashlight.TurnOn(); + m_3rdPersonFlashlight.Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemoveFlashLightFX +// +// PURPOSE: Remove the flash light fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::RemoveFlashLightFX() +{ + m_3rdPersonFlashlight.TurnOff(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::OnModelKey +// +// PURPOSE: Handle model key +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::OnModelKey(HLOCALOBJ hObj, ArgList *pArgs) +{ + if (!hObj || !pArgs || !pArgs->argv || pArgs->argc == 0) return; + + char* pKey = pArgs->argv[0]; + if (!pKey) return; + + if (g_vtModelKey.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("%s ModelKey: '%s'", (m_cs.bIsPlayer ? "Player" : "AI"), pKey); + } + + // See if the damagefx take care of it... + + if( g_pDamageFXMgr->OnModelKey( hObj, pArgs ) ) + return; + + if (stricmp(pKey, KEY_FOOTSTEP_SOUND) == 0) + { + + ModelId eModelId = GetModelId(); + + if (pArgs->argc > 1) + { + // See if this is the left (2) or right (1) foot... + + if (stricmp(pArgs->argv[1], "1") == 0) + { + m_bLeftFoot = LTFALSE; + } + else + { + m_bLeftFoot = LTTRUE; + } + } + else + { + // Alternate feet... + m_bLeftFoot = !m_bLeftFoot; + } + + DoFootStepKey(hObj); + } + else if( stricmp( pKey, RENDERSTYLE_MODEL_KEY ) == 0 ) + { + // start the index at the first argument + int i = 0; + int nRS; + + // while there are arguments + while((i < pArgs->argc) && + ('\0' != pArgs->argv[i][0])) + { + // Check for renderstyle model key + if(stricmp(pArgs->argv[i],RENDERSTYLE_MODEL_KEY) == 0) + { + // Check params + if(pArgs->argc >= i+3) + { + nRS = (atoi)(pArgs->argv[i+1]); + SetObjectRenderStyle(m_hServerObject,nRS,pArgs->argv[i+2]); + } + else + { + // Not enough params + DebugCPrint(1,"CCharacterFX::OnModelKey - ERROR - Not enough RS arguments! Syntax: RS \n"); + } + + // Move past all arguments of this key + i += 3; + } + else + { + // Go to the next string + i++; + } + } + } + else if( stricmp( pKey, KEY_MOVEMENT_LOUD ) == 0 ) + { + const char* pSnd = g_pModelButeMgr->GetModelLoudMovementSnd( m_cs.eModelId ); + if( pSnd ) + { + g_pClientSoundMgr->PlaySoundFromObject( m_hServerObject, pSnd ); + } + } + else if( stricmp( pKey, KEY_MOVEMENT_QUIET ) == 0 ) + { + const char* pSnd = g_pModelButeMgr->GetModelQuietMovementSnd( m_cs.eModelId ); + if( pSnd ) + { + g_pClientSoundMgr->PlaySoundFromObject( m_hServerObject, pSnd ); + } + } + else if( stricmp( pKey, KEY_SHOW_ATTACHFX ) == 0 ) + { + if( pArgs->argc > 1 ) + { + uint32 i = atoi( pArgs->argv[1] ); + + //note that the +1 is to compensate for our dummy head + CLIENTFX_LINK* pLink = m_AttachClientFX.GetElement(i + 1); + + if (pLink && pLink->IsValid()) + { + pLink->GetInstance()->Show(); + } + } + else + { + ShowAttachClientFX(); + } + } + else if( stricmp( pKey, KEY_HIDE_ATTACHFX ) == 0) + { + if( pArgs->argc > 1 ) + { + uint32 i = atoi( pArgs->argv[1] ); + + //note that the +1 is to compensate for our dummy head + CLIENTFX_LINK* pLink = m_AttachClientFX.GetElement(i + 1); + + if (pLink && pLink->IsValid()) + { + pLink->GetInstance()->Hide(); + } + } + else + { + HideAttachClientFX(); + } + } + else if( stricmp( pKey, KEY_FX ) == 0) + { + if( pArgs->argc > 1 && pArgs->argv[1] ) + { + CLIENTFX_CREATESTRUCT fxInit( pArgs->argv[1], 0, m_hServerObject ); + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::DoFootStepKey +// +// PURPOSE: Handle model foot step key +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::DoFootStepKey(HLOCALOBJ hObj, LTBOOL bForceSound) +{ + if (!hObj) return; + + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + LTBOOL bIsLocalClient = (m_cs.bIsPlayer && hPlayerObj == hObj); + + m_eLastSurface = ST_UNKNOWN; + + if (bIsLocalClient) + { + if (g_pPlayerMgr->IsSpectatorMode() || !pMoveMgr->CanDoFootstep()) + { + return; + } + + // Use our current standing on surface if we still don't know what + // we're standing on... + + m_eLastSurface = pMoveMgr->GetStandingOnSurface(); + } + + + LTVector vPos; + g_pLTClient->GetObjectPos(hObj, &vPos); + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + + // Do an intersect segment to determine where to put the footprint + // sprites... + + iQuery.m_Flags = IGNORE_NONSOLID | INTERSECT_OBJECTS | INTERSECT_HPOLY; + iQuery.m_From = vPos; + + // If the object has Left/RightFoot sockets, use them to determine + // the location for the InteresectSegment... + + ILTModel* pModelLT = g_pLTClient->GetModelLT(); + + char* pSocketName = (char *)(m_bLeftFoot ? "LeftFoot" : "RightFoot"); + HMODELSOCKET hSocket; + + if (pModelLT->GetSocket(hObj, pSocketName, hSocket) == LT_OK) + { + LTransform transform; + if (pModelLT->GetSocketTransform(hObj, hSocket, transform, LTTRUE) == LT_OK) + { + ILTTransform* pTransLT = g_pLTClient->GetTransformLT(); + pTransLT->GetPos(transform, iQuery.m_From); + + // Testing... + iQuery.m_From.y += INTERSECT_Y_OFFSET; + } + } + + iQuery.m_To = iQuery.m_From; + iQuery.m_To.y -= (INTERSECT_Y_OFFSET * 2.0f); + + // Don't hit ourself... + + HOBJECT hFilterList[] = {g_pLTClient->GetClientObject(), g_pPlayerMgr->GetMoveMgr()->GetObject(), LTNULL}; + + if (bIsLocalClient) + { + iQuery.m_FilterFn = WorldOnlyFilterFn; + iQuery.m_pUserData = hFilterList; + } + + if (m_pClientDE->IntersectSegment(&iQuery, &iInfo)) + { + if (IsMainWorld(iInfo.m_hObject) || + GetObjectType(iInfo.m_hObject) == OT_WORLDMODEL) + { + if (m_eLastSurface == ST_UNKNOWN) + { + m_eLastSurface = GetSurfaceType(iInfo); + } + } + } + + + // Play a footstep sound if this isn't the local client (or we're in + // 3rd person). The local client's footsteps are tied to the head bob + // in 1st person... + + LTBOOL bPlaySound = LTTRUE; + + if (!bForceSound && bIsLocalClient) + { + bPlaySound = (!g_pPlayerMgr->IsFirstPerson() || m_bOnVehicle); + } + + if (bPlaySound) + { + PlayMovementSound( vPos, m_eLastSurface, m_bLeftFoot, m_cs.ePlayerPhysicsModel, m_cs.nVehicleId ); + } + + + // Leave footprints on the appropriate surfaces... + + if (ShowsTracks(m_eLastSurface)) + { + // Use intersect position for footprint sprite... + + CreateFootprint(m_eLastSurface, iInfo); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::PlayMovementSound +// +// PURPOSE: Play movement sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::PlayMovementSound(LTVector vPos, SurfaceType eSurface, LTBOOL bLeftFoot, + PlayerPhysicsModel ePPModel /*= PPM_NORMAL*/, uint8 nModelId /*= (uint8)-1*/ ) +{ + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + // Don't do movement sounds if in the menu... + + if ( !g_pInterfaceMgr->IsInGame( )) return; + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + LTBOOL bIsLocalClient = (m_cs.bIsPlayer && hPlayerObj == m_hServerObject); + + // Dead men don't make movement sounds... + + if (bIsLocalClient && g_pPlayerMgr->IsPlayerDead()) return; + + // Dead men don't make movement sounds in multiplayer either... + + if (m_cs.bIsPlayer && IsMultiplayerGame() && m_bPlayerDead) return; + + + // If we're on a ladder, make sure it plays sounds and see if there is a surface override... + + if (eSurface == ST_LADDER) + { + // Find the ladder we're in... + + CVolumeBrushFX *pVolumeFX = LTNULL; + + // Use the Ladder container from the server if we are the local client... + + if( bIsLocalClient ) + { + if( pMoveMgr->IsBodyOnLadder() && pMoveMgr->GetLadderObject() ) + { + pVolumeFX = (CVolumeBrushFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_VOLUMEBRUSH_ID, pMoveMgr->GetLadderObject() ); + } + } + + // If we aren't the local client or failed to get the ladder object use the server objects position... + + if( !pVolumeFX ) + { + LTVector vMyPos; + + LTVector vDims; + g_pPhysicsLT->GetObjectDims( m_hServerObject, &vDims ); + + HLOCALOBJ objList[16]; + uint32 nFound; + uint32 dwNum; + + g_pLTClient->FindObjectsInBox( &vPos, vDims.Mag(), objList, ARRAY_LEN( objList ), &dwNum, &nFound ); + + for (uint32 i=0; i < dwNum; i++) + { + uint16 code; + if (g_pLTClient->GetContainerCode(objList[i], &code)) + { + if (CC_LADDER == (ContainerCode)code) + { + pVolumeFX = (CVolumeBrushFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_VOLUMEBRUSH_ID, objList[i]); + + break; + } + } + } + } + + if( pVolumeFX ) + { + if( !pVolumeFX->CanPlayMovementSounds() ) return; + + // If there is a valid override surface use it for the footstep sounds... + + if( pVolumeFX->GetSurfaceOverride() != ST_UNKNOWN ) + { + eSurface = pVolumeFX->GetSurfaceOverride(); + } + } + + } + + + + const char *pSound = GetMovementSound( eSurface, bLeftFoot, ePPModel, nModelId ); + + if (pSound && *pSound) + { + uint32 dwFlags = bIsLocalClient ? PLAYSOUND_CLIENTLOCAL : 0; + SoundPriority ePriority = m_cs.bIsPlayer ? SOUNDPRIORITY_PLAYER_HIGH : SOUNDPRIORITY_AI_HIGH; + + LTFLOAT fStealth = (ePPModel == PPM_NORMAL ? m_cs.fStealthPercent : 1.0f); + int nVolume = (int) (100.0f * fStealth); + + // Adjust the volume if we are walking or ducking... + + if (bIsLocalClient && pMoveMgr->IsMovingQuietly()) + { + nVolume = ( int )((( float )nVolume * g_vtQuietMovementVolumeFactor.GetFloat( )) + 0.5f ); + } + + g_pClientSoundMgr->PlaySoundFromPos(vPos, pSound, FOOTSTEP_SOUND_RADIUS, ePriority, dwFlags, nVolume); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateFootprint +// +// PURPOSE: Create a footprint sprite at the specified location +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateFootprint(SurfaceType eType, IntersectInfo & iInfo) +{ + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(eType); + if (!pSurf || !pSurf->szLtFootPrintSpr[0] || !pSurf->szRtFootPrintSpr[0]) return; + + // Don't do footprints if we are on a vehicle... + + if (m_cs.bIsPlayer && m_bOnVehicle) + { + return; + } + + + // Dead men don't make footprints... + + if (m_cs.bIsPlayer && IsMultiplayerGame() && m_bPlayerDead) return; + + + LTVector vDir = iInfo.m_Plane.m_Normal; + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + // Create a sprite... + + BSCREATESTRUCT scale; + scale.dwFlags = FLAG_VISIBLE | FLAG_ROTATEABLESPRITE | FLAG_NOLIGHT; + scale.rRot = LTRotation(vDir, rRot.Forward()); + + // Nope, this isn't a typo, artists just have a problem telling + // left from right... + scale.pFilename = m_bLeftFoot ? pSurf->szRtFootPrintSpr : pSurf->szLtFootPrintSpr; + + scale.vPos = iInfo.m_Point + vDir; + scale.vInitialScale = pSurf->vFootPrintScale; + scale.vFinalScale = pSurf->vFootPrintScale; + scale.fLifeTime = pSurf->fFootPrintLifetime; + scale.fInitialAlpha = 1.0f; + scale.fFinalAlpha = 0.0f; + scale.vInitialColor.Init(0.5f, 0.5f, 0.5f); + scale.vFinalColor.Init(0.5f, 0.5f, 0.5f); + scale.bUseUserColors = LTFALSE; + scale.nType = OT_SPRITE; + scale.bPausable = LTTRUE; + + // Special hack so we get cute little bunny footprints... + const char* pModelName = g_pModelButeMgr->GetModelName( GetModelId() ); + if (pModelName && pModelName[0] && stricmp(pModelName, "Rabbit") == 0) + { + scale.pFilename = m_bLeftFoot ? "FX\\Test\\Snow\\Spr\\SnowRabbitFS_L.spr" : "FX\\Test\\Snow\\Spr\\SnowRabbitFS_R.spr"; + } + + if (g_vtFootPrintBlend.GetFloat() == 1.0f) + { + scale.bAdditive = LTTRUE; + scale.vInitialColor.Init(0.5f, 0.5f, 0.5f); + scale.vFinalColor.Init(0.0f, 0.0f, 0.0f); + } + else if (g_vtFootPrintBlend.GetFloat() == 2.0f) + { + scale.bMultiply = LTTRUE; + scale.vInitialColor.Init(0.5f, 0.5f, 0.5f); + scale.vFinalColor.Init(0.0f, 0.0f, 0.0f); + } + + CSpecialFX* pFX = LTNULL; + pFX = g_pGameClientShell->GetSFXMgr()->CreateSFX(SFX_SCALE_ID, &scale); + + if (pFX) + { + pFX->Update(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateVehicleTrail +// +// PURPOSE: Create a vehicle trail segment at the specified location +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateVehicleTrail(CPolyLineFX* pTrail, LTVector vDir, + LTVector vStartPoint, LTVector vEndPoint, LTBOOL bNewTrail) +{ + if (!pTrail) return; + + if (!pTrail->HasBeenDrawn()) + { + PLFXCREATESTRUCT pls; + pls.pTexture = "sfx\\test\\fxtest44.dtx"; + pls.vStartPos = vStartPoint + (vDir * 2.0f); + pls.vEndPos = vEndPoint + (vDir * 2.0f); + pls.vInnerColorStart = LTVector(255, 255, 255); + pls.vInnerColorEnd = LTVector(255, 255, 255); + pls.vOuterColorStart = LTVector(255, 255, 255); + pls.vOuterColorEnd = LTVector(255, 255, 255); + pls.fAlphaStart = 0.9f; + pls.fAlphaEnd = 0.0f; + pls.fMinWidth = 0.0f; + pls.fMaxWidth = 128.0f; + pls.fLifeTime = g_vtTrailSegmentLifetime.GetFloat(); + pls.fAlphaLifeTime = g_vtTrailSegmentLifetime.GetFloat(); + pls.bAdditive = LTFALSE; + pls.bMultiply = LTTRUE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.bUseObjectRotation = LTFALSE; + pls.nNumSegments = 1; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fPerturb = 0.0f; + pls.bAlignFlat = LTTRUE; + pls.bAlignUsingRot = LTTRUE; + pls.bNoZ = LTTRUE; + + pTrail->Init(&pls); + pTrail->CreateObject(m_pClientDE); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + LTRotation rTrailRot; + rTrailRot = LTRotation(rRot.Forward(), vDir); + pTrail->SetRot(rTrailRot); + } + else + { + PLFXLINESTRUCT ls; + ls.vStartPos = vStartPoint + (vDir * 2.0f); + + if (!bNewTrail) + { + // Get the last vert position... + + PolyLineList* pLines = pTrail->GetLines(); + if (pLines->GetLength() > 0) + { + PolyLine** pLine = pLines->GetItem(TLIT_LAST); + if (pLine && *pLine) + { + PolyVertStruct** pVert = (*pLine)->list.GetItem(TLIT_LAST); + if (pVert && *pVert) + { + ls.vStartPos = pTrail->GetVertPos((*pVert)); + } + } + } + } + + ls.vEndPos = vEndPoint + (vDir * 2.0f); + + LTVector vDist = ls.vStartPos - ls.vEndPos; + + // Only create a segment if we've moved far enough... + if (vDist.Mag() >= g_vtMinTrailSegment.GetFloat()) + { + ls.vInnerColorStart = LTVector(255, 255, 255); + ls.vInnerColorEnd = LTVector(255, 255, 255); + ls.vOuterColorStart = LTVector(255, 255, 255); + ls.vOuterColorEnd = LTVector(255, 255, 255); + ls.fAlphaStart = 0.9f; + ls.fAlphaEnd = 0.0f; + ls.fLifeTime = g_vtTrailSegmentLifetime.GetFloat(); + ls.fAlphaLifeTime = g_vtTrailSegmentLifetime.GetFloat(); + + pTrail->AddLine(ls); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateOnVehicle +// +// PURPOSE: Update being on a vehicle if appropriate +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateOnVehicle() +{ + // Only players can be on vehicles... + + if (!m_cs.bIsPlayer) return; + + // Play multiplayer sounds if appropriate... + + if (IsMultiplayerGame()) + { + // Don't play sounds for local client...they get their own + + if (g_pLTClient->GetClientObject() != m_hServerObject) + { + UpdateMultiVehicleSounds(); + } + } + else if (m_hVehicleSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleSound); + m_hVehicleSound = LTNULL; + } + + // See if we should continue the trail... + + if (m_bOnVehicle && g_vtVehicleTrials.GetFloat()) + { + // Cast a ray down to see if we are on a surface that leaves + // a trail... + + LTVector vPos, vDims; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pPhysicsLT->GetObjectDims(m_hServerObject, &vDims); + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = IGNORE_NONSOLID | INTERSECT_OBJECTS | INTERSECT_HPOLY; + iQuery.m_From = vPos; + + iQuery.m_To = iQuery.m_From; + iQuery.m_To.y -= (vDims.y + 50.0f); + + // Don't hit ourself... + + HOBJECT hFilterList[] = {g_pLTClient->GetClientObject(), g_pPlayerMgr->GetMoveMgr()->GetObject(), LTNULL}; + + LTBOOL bIsLocalClient = (m_cs.bIsPlayer && g_pLTClient->GetClientObject() == m_hServerObject); + + if (bIsLocalClient) + { + iQuery.m_FilterFn = ObjListFilterFn; + iQuery.m_pUserData = hFilterList; + } + + // We're starting a new trail if the last surface didn't show + // footprints (and this one does)... + + LTBOOL bNewTrail = !ShowsTracks(m_eLastSurface); + + m_eLastSurface = ST_UNKNOWN; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + m_eLastSurface = GetSurfaceType(iInfo); + } + + // Only create trails on surfaces that show footprints... + + if (ShowsTracks(m_eLastSurface)) + { + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + LTVector vF = rRot.Forward(); + + LTVector vStartPoint = iInfo.m_Point; + LTVector vEndPoint = iInfo.m_Point + (vF * 25.0f); + + // Create trail for the front tire... + + //CreateVehicleTrail(&m_VehicleTrail1, iInfo.m_Plane.m_Normal, + // vStartPoint, vEndPoint, bNewTrail); + + // Create the trail for the back tire... + + vStartPoint = iInfo.m_Point - (vF * 50.0f); + vEndPoint = iInfo.m_Point - (vF * 25.0f); + + CreateVehicleTrail(&m_VehicleTrail2, iInfo.m_Plane.m_Normal, + vStartPoint, vEndPoint, bNewTrail); + } + } + + // Always update the trail, so it can fade away.... + + if (m_VehicleTrail1.HasBeenDrawn()) + { + m_VehicleTrail1.Update(); + } + + if (m_VehicleTrail2.HasBeenDrawn()) + { + m_VehicleTrail2.Update(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateMultiVehicleSounds +// +// PURPOSE: Update multiplayer vehicle sounds +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateMultiVehicleSounds() +{ + if (m_bOnVehicle) + { + // See if we just got on the vehicle... + + if (!m_hVehicleSound) + { + // Play startup sound... + + VEHICLE *pVehicle = g_pVehicleButeMgr->GetVehicle( m_cs.nVehicleId ); + if( pVehicle ) + { + g_pClientSoundMgr->PlaySoundFromObject(m_hServerObject, pVehicle->sStartUpSnd.c_str(), + DEFAULT_VEHICLE_RADIUS, SOUNDPRIORITY_PLAYER_HIGH); + + + // Play running sound... + + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP; + + m_hVehicleSound = g_pClientSoundMgr->PlaySoundFromObject(m_hServerObject, + pVehicle->sMPLoop.c_str(), DEFAULT_VEHICLE_RADIUS, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + else + { + // Make sure the sound is playing from the correct position + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetSoundPosition(m_hVehicleSound, &vPos); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateVehicleContour +// +// PURPOSE: Update the contouring to terain on the vehicle... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateVehicleContour( LTRotation &rCharacterRot ) +{ + if( !m_bOnVehicle || !m_cs.bIsPlayer ) + return; + + // Get the normals under the 4 corners of the vehicle and average them toghether + // to get the normal we should use. This helps smooth out the transition between + // two or more planes. + + LTVector vNormal, vModelPYR; + LTVector vDims, vPos; + + LTRotation rRot = rCharacterRot; + + LTVector vPlayerF = rRot.Forward(); + LTVector vPlayerR = rRot.Right(); + + // Keep the yaw from the original rotation... + + float fYaw = (float)atan2( vPlayerF.x, vPlayerF.z ); + + HOBJECT hFilter[] = { m_hServerObject, LTNULL }; + + g_pLTClient->GetObjectPos( m_hServerObject, &vPos ); + g_pPhysicsLT->GetObjectDims( m_hServerObject, &vDims ); + + LTVector vForward = vPlayerF * (vDims.z + g_vtVehicleContourExtraDimsZ.GetFloat()); + LTVector vRight = vPlayerR * (vDims.x + g_vtVehicleContourExtraDimsX.GetFloat()); + vNormal = GetContouringNormal( vPos, vDims, vForward, vRight, hFilter ); + + // Calculate how much pitch and roll we should apply... + + float fPitchPercent, fRollPercent, fAmount; + GetContouringInfo( vPlayerF, vNormal, fAmount, fPitchPercent, fRollPercent ); + + float fClamp = g_vtVehicleContourMaxRotation.GetFloat(); + + vModelPYR.x = fAmount * fPitchPercent; + vModelPYR.z = fAmount * fRollPercent; + + vModelPYR.x = Clamp( vModelPYR.x, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + vModelPYR.y = fYaw; + vModelPYR.z = Clamp( vModelPYR.z, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + + LTRotation rModelRot( vModelPYR.x, vModelPYR.y, vModelPYR.z ); + + // Set the new modified contour rotation... + + rCharacterRot = rModelRot; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CCharacterFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch(nMsgId) + { + case CFX_CROSSHAIR_MSG: + { + m_cs.eCrosshairCharacterClass = (CharacterClass)pMsg->Readuint8(); + } + break; + + case CFX_CARRY: + { + m_cs.nCarrying = pMsg->Readuint8(); + uint8 nChassisPieceIndex = pMsg->Readuint8( ); + if( nChassisPieceIndex != CHASSISPIECEBUTE_INVALID ) + m_cs.pChassisPieceBute = ChassisButeMgr::Instance( ).GetChassisPieceButeList( )[nChassisPieceIndex]; + else + m_cs.pChassisPieceBute = NULL; + + UpdateCarrying(); + } + break; + + //sent down when a new spear is attached so we can hide them as necessary + case CFX_UPDATE_ATTACHMENTS: + { + m_bUpdateAttachments = true; + } + break; + + + case CFX_NODECONTROL_LIP_SYNC: + case CFX_NODECONTROL_HEAD_FOLLOW_OBJ: + case CFX_NODECONTROL_SCRIPT: + { + m_NodeController.HandleNodeControlMessage(nMsgId, pMsg); + } + break; + + case CFX_DIALOGUE_MSG: + { + HandleDialogueMsg(pMsg); + } + break; + + case CFX_TAUNT_MSG: + { + HandleTauntMsg(pMsg); + } + break; + + case CFX_RESET_TRACKER: + { + uint8 iTracker = pMsg->Readuint8(); + if ( iTracker == 0 ) + { + g_pLTClient->ResetModelAnimation(m_hServerObject); + } + else + { + g_pModelLT->ResetAnim(m_hServerObject, iTracker); + } + } + break; + + case CFX_DMGFLAGS_MSG: + { + m_cs.nDamageFlags = pMsg->Readuint64(); + } + break; + + case CFX_INSTANTDMGFLAGS_MSG: + { + m_nInstantDamageFlags = pMsg->Readuint64(); + } + break; + + case CFX_STEALTH_MSG: + { + m_cs.fStealthPercent = pMsg->Readfloat(); + } + break; + + case CFX_CLIENTID_MSG: + { + m_cs.nClientID = pMsg->Readuint8(); + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->UpdatePlayerID( m_hServerObject, m_cs.nClientID ); + } + + + } + break; + + case CFX_CHAT_MSG: + { + m_cs.SetChatting((LTBOOL)pMsg->Readuint8()); + if ( m_linkChatFX.IsValid() ) + { + if (m_cs.IsChatting()) + m_linkChatFX.GetInstance()->Show(); + else + m_linkChatFX.GetInstance()->Hide(); + } + + } + break; + + case CFX_ZZZ_CREATE_MSG: + { + _ASSERT(!(m_cs.byFXFlags & CHARCREATESTRUCT::eZzz)); + m_cs.byFXFlags |= CHARCREATESTRUCT::eZzz; + } + break; + + case CFX_ZZZ_DESTROY_MSG: + { + _ASSERT(m_cs.byFXFlags & CHARCREATESTRUCT::eZzz); + m_cs.byFXFlags &= ~CHARCREATESTRUCT::eZzz; + } + break; + + case CFX_CIGARETTESMOKE_CREATE_MSG: + { + _ASSERT(!(m_cs.byFXFlags & CHARCREATESTRUCT::eCigaretteSmoke)); + m_cs.byFXFlags |= CHARCREATESTRUCT::eCigaretteSmoke; + } + break; + + case CFX_CIGARETTESMOKE_DESTROY_MSG: + { + _ASSERT(m_cs.byFXFlags & CHARCREATESTRUCT::eCigaretteSmoke); + m_cs.byFXFlags &= ~CHARCREATESTRUCT::eCigaretteSmoke; + } + break; + + case CFX_CIGARETTE_CREATE_MSG: + { + _ASSERT(!(m_cs.byFXFlags & CHARCREATESTRUCT::eCigarette)); + m_cs.byFXFlags |= CHARCREATESTRUCT::eCigarette; + } + break; + + case CFX_CIGARETTE_DESTROY_MSG: + { + _ASSERT(m_cs.byFXFlags & CHARCREATESTRUCT::eCigarette); + m_cs.byFXFlags &= ~CHARCREATESTRUCT::eCigarette; + m_cs.byFXFlags &= ~CHARCREATESTRUCT::eCigaretteSmoke; + } + break; + + case CFX_FLASHLIGHT_CREATE_MSG: + { + _ASSERT(!(m_cs.byFXFlags & CHARCREATESTRUCT::eFlashLight)); + m_cs.byFXFlags |= CHARCREATESTRUCT::eFlashLight; + } + break; + + case CFX_FLASHLIGHT_DESTROY_MSG: + { + _ASSERT(m_cs.byFXFlags & CHARCREATESTRUCT::eFlashLight); + m_cs.byFXFlags &= ~CHARCREATESTRUCT::eFlashLight; + } + break; + + case CFX_ALLFX_MSG: + { + // Re-init our data... + + m_cs.Read(pMsg); + + InitLocalPlayer(); + } + break; + + case CFX_INFO_STRING: + { + pMsg->ReadString(m_szInfoString,kMaxInfoStringLength); + char szTmp[kMaxInfoStringLength]; + SAFE_STRCPY(szTmp,m_szInfoString); + char *pTok = strtok(szTmp,"\n"); + if (pTok) + m_pStr->SetText(pTok); + else + m_pStr->SetText(""); + + } + break; + + case CFX_WEAPON_SOUND_LOOP_MSG : + { + // Only play sounds that did not originate from us... + + if( g_pLTClient->GetClientObject() != m_hServerObject ) + { + HandleWeaponSoundLoopMsg( pMsg ); + } + } + break; + + case CFX_TRACK_TARGET_MSG: + { + m_TrackedNodeContext.HandleServerMessage( pMsg ); + } + break; + + case CFX_HITBOX_MSG: + { + LTVector vDims, vOffset; + bool bCanBeSearched; + + vDims = pMsg->ReadCompLTVector(); + vOffset = pMsg->ReadCompLTVector(); + bCanBeSearched = pMsg->Readbool(); + + // Set the dims and offset on the hitbox + + m_HitBox.SetDims( vDims ); + m_HitBox.SetOffset( vOffset ); + m_HitBox.SetCanBeSearched( bCanBeSearched ); + + } + break; + + case CFX_CAN_CARRY: + { + m_cs.bCanCarry = !!(pMsg->Readuint8()); + } + break; + + case CFX_CAN_WAKE: + { + m_cs.bCanWake = !!(pMsg->Readuint8()); + } + break; + + case CFX_PLAYER_DEAD: + { + if( m_cs.bIsPlayer && IsMultiplayerGame() && g_pGameClientShell->ShouldUseRadar() ) + { + m_bPlayerDead = true; + if (m_cs.bRadarVisible) + { + g_pRadar->SetPlayerDead(m_hServerObject,true); + } + else if (m_cs.bTracking) + { + g_pRadar->RemoveObject(m_hServerObject); + } + } + + ShutdownDamageFX(); + } + break; + + case CFX_PLAYER_REVIVED: + { + if( m_cs.bIsPlayer && IsMultiplayerGame() && g_pGameClientShell->ShouldUseRadar() ) + { + m_bPlayerDead = false; + if (m_cs.bRadarVisible) + { + g_pRadar->SetPlayerDead(m_hServerObject,false); + } + } + } + break; + + case CFX_PLAYER_RESPAWN: + { + if( m_cs.bIsPlayer && IsMultiplayerGame() && g_pGameClientShell->ShouldUseRadar()) + { + m_bPlayerDead = false; + if (m_cs.bRadarVisible) + { + g_pRadar->SetPlayerDead(m_hServerObject,false); + } + } + } + break; + + case CFX_CHARACTER_RADAR: + { + m_cs.bRadarVisible = pMsg->Readbool(); + + if( m_cs.bRadarVisible ) + { + if( m_cs.bIsPlayer ) + g_pRadar->AddPlayer( m_hServerObject, m_cs.nClientID ); + else + g_pRadar->AddObject( m_hServerObject, RADAR_AI_TRACKING, INVALID_TEAM ); + } + else + { + g_pRadar->RemoveObject( m_hServerObject ); + } + } + break; + + case CFX_CHARACTER_TRACKING: + { + m_cs.bTracking = pMsg->Readbool(); + + if( m_cs.bTracking ) + { + if( m_cs.bIsPlayer ) + { + g_pRadar->AddObject( m_hServerObject, RADAR_PLAYER_TRACKING, INVALID_TEAM ); + } + else + { + g_pRadar->AddObject( m_hServerObject, RADAR_AI_TRACKING, INVALID_TEAM ); + } + } + else + { + // If we're not intended to be visible, then remove us. + if( !m_cs.bRadarVisible) + { + g_pRadar->RemoveObject( m_hServerObject ); + } + // We need to re-add ourselves to get our tracking/team color right. + else + { + g_pRadar->RemoveObject( GetServerObj( )); + g_pRadar->AddPlayer( GetServerObj(), m_cs.nClientID ); + } + } + } + break; + + case CFX_CINEMATICAI_MSG: + { + m_cs.bIsCinematicAI = pMsg->Readbool(); + } + break; + + case CFX_PLAYER_PHYSICS_MODEL: + { + PlayerPhysicsModel ppm = (PlayerPhysicsModel)pMsg->Readuint8(); + m_cs.nVehicleId = pMsg->Readuint8(); + + // If getting off of a vehicle handle some cleanup and shutdown... + + if( (m_cs.ePlayerPhysicsModel == PPM_VEHICLE) && (ppm != PPM_VEHICLE) ) + { + if( m_hVehicleSound ) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleSound); + m_hVehicleSound = LTNULL; + } + + // Play turn-off sound + + VEHICLE *pVehicle = g_pVehicleButeMgr->GetVehicle( m_cs.nVehicleId ); + if( pVehicle ) + { + g_pClientSoundMgr->PlaySoundFromObject(m_hServerObject, pVehicle->sTurnOffSnd.c_str(), + DEFAULT_VEHICLE_RADIUS, SOUNDPRIORITY_PLAYER_HIGH); + } + } + + m_cs.ePlayerPhysicsModel = ppm; + + m_bOnVehicle = (m_cs.ePlayerPhysicsModel == PPM_VEHICLE); + } + break; + + default : break; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::PlayLipSyncSound +// +// PURPOSE: Play a lip synced sound. +// +// ----------------------------------------------------------------------- // + +HLTSOUND CCharacterFX::PlayLipSyncSound(char* szSound, LTFLOAT fRadius, LTBOOL & bSubtitle, bool bSubtitlePriority, bool bGetHandle /*= true */) +{ + + bSubtitle = LTFALSE; + + if (!szSound || !szSound[0] || fRadius <= 0.0f) return LTNULL; + + uint32 dwFlags = 0; + if (bGetHandle) + { + dwFlags = PLAYSOUND_GETHANDLE; + } + + LTBOOL bIsLocalClient = LTFALSE; + SoundPriority ePriority = SOUNDPRIORITY_AI_HIGH; + if (m_cs.bIsPlayer) + { + ePriority = SOUNDPRIORITY_PLAYER_HIGH; + + bIsLocalClient = (g_pLTClient->GetClientObject() == m_hServerObject); + dwFlags |= bIsLocalClient ? PLAYSOUND_CLIENTLOCAL : 0; + } + + + // Show subtitles? (Dialogue sounds only)... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + uint32 nStringId = g_pClientSoundMgr->GetSoundIdFromFilename(szSound); + + if (nStringId) + { + char szStr[128] = ""; + g_pClientSoundMgr->GetSoundFilenameFromId("Dialogue", nStringId, szStr, sizeof(szStr)); + + // Okay, make sure that id we got really is a dialogue sound... + + if (strlen(szStr) && (stricmp(szSound, szStr) == 0)) + { + // If we're in a cinematic use the cinematic radius, else + // use the conversation radius... + + if (g_pPlayerMgr->IsUsingExternalCamera()) + { + // Okay this dialogue is being played during a cinematic so make sure + // we are either the player or a cinematic ai. If not, don't play the + // sound. + + if (bIsLocalClient || m_cs.bIsCinematicAI) + { + fRadius = g_vtDialogueCinematicSoundRadius.GetFloat(); + + // Since we're in a cinematic, force the dialogue to played + // in the player's head (so it feels like a movie) + dwFlags |= PLAYSOUND_CLIENTLOCAL; + + // Unload cinematic dialogue sounds after they are played... + // NOTE: This will only unload dialogue sounds in cinematics, + // to unload the conversation dialogue sounds we need to come + // up with another approach... + dwFlags |= PLAYSOUND_ONCE; + } + else + { + return LTNULL; // Don't play this sound + } + } + + if (dwFlags & PLAYSOUND_CLIENTLOCAL) + { + // Force subtitle to be shown... + vPos.Init(); + } + + nStringId += SUBTITLE_STRINGID_OFFSET; + bSubtitle = LTTRUE; + } + } + + HLTSOUND hSound = LTNULL; + + if (bGetHandle) + { + hSound = g_pClientSoundMgr->PlaySoundFromObject(m_hServerObject, + szSound, fRadius, ePriority, dwFlags, SMGR_DEFAULT_VOLUME, 1.0f, -1.0f, SPEECH_SOUND_CLASS ); + } + else + { + + g_pClientSoundMgr->PlaySoundFromPos(vPos, szSound, fRadius, ePriority); + } + + if (bSubtitle && hSound) + { + LTFLOAT fDuration = -1.0f; + g_pLTClient->SoundMgr()->GetSoundDuration(hSound, fDuration); + bSubtitle = g_pSubtitles->Show(nStringId, vPos, fRadius, fDuration, bSubtitlePriority); + } + + return hSound; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::PlayTaunt +// +// PURPOSE: Play taunt sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::PlayTaunt(uint32 nTauntId, LTBOOL bForce) +{ + if (!m_cs.bIsPlayer) return; + if (GetConsoleInt("IgnoreTaunts", 0)) return; + + LTBOOL bIsLocalClient = (g_pLTClient->GetClientObject() == m_hServerObject); + if (bIsLocalClient && !bForce) return; + + char szStr[128] = ""; + g_pClientSoundMgr->GetSoundFilenameFromId("Dialogue", nTauntId, szStr, sizeof(szStr)); + if (!szStr[0]) return; + + m_NodeController.HandleNodeControlLipSync(szStr, DEFAULT_TAUNT_RADIUS); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateBreathFX +// +// PURPOSE: Update breath fx if appropriate +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateBreathFX() +{ + //don't bother if we are paused + if(g_pGameClientShell->IsServerPaused()) + return; + + if (m_eLastSurface == ST_UNKNOWN) + return; + + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(m_eLastSurface); + + if (!pSurf || !pSurf->bShowBreath) + return; + + //update our breath timer + m_fBreathElapsedTime += g_pLTClient->GetFrameTime(); + + // If it is time to do a breath, do it... + + if (m_fBreathElapsedTime > m_fBreathEndTime) + { + HMODELSOCKET hSocket; + if (g_pModelLT->GetSocket(m_hServerObject, "Chin", hSocket) == LT_OK) + { + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_hServerObject, hSocket, transform, LTTRUE) == LT_OK) + { + LTVector vPos; + LTRotation rRot; + vPos = transform.m_Pos; + + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + LTVector vF = rRot.Forward(); + + SMCREATESTRUCT sm; + + sm.vPos = vPos; + sm.bAdjustParticleScale = LTTRUE; + sm.fStartParticleScale = GetRandom(g_pClientButeMgr->GetBreathFXAttributeFloat("MinPStartScale"), + g_pClientButeMgr->GetBreathFXAttributeFloat("MaxPStartScale")); + sm.fEndParticleScale = GetRandom(g_pClientButeMgr->GetBreathFXAttributeFloat("MinPEndScale"), + g_pClientButeMgr->GetBreathFXAttributeFloat("MaxPEndScale")); + + sm.bAdjustParticleAlpha = LTTRUE; + sm.fStartParticleAlpha = g_pClientButeMgr->GetBreathFXAttributeFloat("PStartAlpha"); + sm.fEndParticleAlpha = g_pClientButeMgr->GetBreathFXAttributeFloat("PEndAlpha"); + + char szSpr[128] = ""; + g_pClientButeMgr->GetBreathFXAttributeString("Sprite",szSpr,sizeof(szSpr)); + sm.hstrTexture = g_pLTClient->CreateString(szSpr); + + sm.vColor1.Init(255.0, 255.0, 255.0); + sm.vColor2.Init(255.0, 255.0, 255.0); + + sm.vMinDriftVel = g_pClientButeMgr->GetBreathFXAttributeVector("MinVel"); + sm.vMaxDriftVel = g_pClientButeMgr->GetBreathFXAttributeVector("MaxVel"); + + LTFLOAT fVel = g_pClientButeMgr->GetBreathFXAttributeFloat("ForwardVel"); + sm.vMinDriftVel += (vF * fVel); + sm.vMaxDriftVel += (vF * fVel * 1.25); + sm.fVolumeRadius = g_pClientButeMgr->GetBreathFXAttributeFloat("Volume"); + sm.fRadius = g_pClientButeMgr->GetBreathFXAttributeFloat("Radius"); + sm.fMinParticleLife = g_pClientButeMgr->GetBreathFXAttributeFloat("MinPLife"); + sm.fMaxParticleLife = g_pClientButeMgr->GetBreathFXAttributeFloat("MaxPLife"); + sm.nNumParticles = g_pClientButeMgr->GetBreathFXAttributeInt("NumParticles"); + + sm.bIgnoreWind = LTFALSE; + sm.fLifeTime = sm.fMaxParticleLife; + sm.fParticleCreateDelta = (sm.fLifeTime * 4.0f); // Only create once + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (psfxMgr) + { + psfxMgr->CreateSFX(SFX_SMOKE_ID, &sm); + } + + g_pLTClient->FreeString(sm.hstrTexture); + } + } + + m_fBreathElapsedTime = 0.0f; + m_fBreathEndTime = g_vtBreathTime.GetFloat() * GetRandom(0.75f, 1.25f); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::ShowAttachClientFX +// +// PURPOSE: Show all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::ShowAttachClientFX() +{ + for ( CLIENTFX_LINK_NODE* pCurr = m_AttachClientFX.m_pNext; pCurr; pCurr = pCurr->m_pNext ) + { + if ( pCurr->m_Link.IsValid() ) + { + pCurr->m_Link.GetInstance()->Show(); + } + else + { + // when we hit 0, there are no more + return; + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::HideAttachClientFX +// +// PURPOSE: Hide all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::HideAttachClientFX() +{ + for ( CLIENTFX_LINK_NODE* pCurr = m_AttachClientFX.m_pNext; pCurr; pCurr = pCurr->m_pNext ) + { + if ( pCurr->m_Link.IsValid() ) + { + pCurr->m_Link.GetInstance()->Hide(); + } + else + { + // when we hit 0, there are no more + return; + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::CreateAttachClientFX +// +// PURPOSE: Create all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::CreateAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != g_pModelButeMgr ); + + RemoveAttachClientFX(); + + ModelId mModelId = GetModelId(); + + // Don't do attachments if the modelid is bad. The Speaker object + // can have an invalid modelid. + if( mModelId == eModelIdInvalid ) + return; + + int nNumClientFX = g_pModelButeMgr->GetNumClientFX( mModelId ); + for ( int i = 0; i < nNumClientFX ; ++i ) + { + char const *pClientFXName = g_pModelButeMgr->GetClientFX( mModelId, i ); + if ( pClientFXName && ( '\0' != pClientFXName[ 0 ] ) ) + { + CLIENTFX_CREATESTRUCT fxInit( pClientFXName, FXFLAG_LOOP, m_hServerObject ); + + CLIENTFX_LINK_NODE* pNewNode = debug_new(CLIENTFX_LINK_NODE); + + if(pNewNode) + { + g_pClientFXMgr->CreateClientFX( &pNewNode->m_Link, fxInit, true ); + if ( pNewNode->m_Link.IsValid() ) + { + // start out hidden + pNewNode->m_Link.GetInstance()->Hide(); + + // add the link to the list + m_AttachClientFX.AddToEnd(pNewNode); + } + } + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemoveAttachClientFX +// +// PURPOSE: Destroys all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::RemoveAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + + for ( CLIENTFX_LINK_NODE* pCurr = m_AttachClientFX.m_pNext; pCurr; pCurr = pCurr->m_pNext ) + { + if ( pCurr->m_Link.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &pCurr->m_Link ); + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::PlayDingSound +// +// PURPOSE: Play an impact ding sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::PlayDingSound() +{ + if (IsMultiplayerGame()) + { + for (int i=0; i < MAX_DINGS; i++) + { + if (m_fNextDingTime[i] == -1.0f) + { + m_fNextDingTime[i] = g_pLTClient->GetTime(); +// g_pLTClient->CPrint("Adding Ding Sound at Time %.2f", m_fNextDingTime[i]); + m_fNextDingTime[i] += g_vtDingDelay.GetFloat(); + break; + } + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::InitLocalPlayer +// +// PURPOSE: Initialize the local player +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::InitLocalPlayer() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (m_cs.bIsPlayer && hPlayerObj == m_hServerObject) + { + // Set up our move mgr... + + g_pPlayerMgr->GetMoveMgr()->SetCharacterFX(this); + + // Set the first-person camera offset... + + g_pPlayerMgr->GetPlayerCamera()->SetFirstPersonOffset(GetPlayerHeadOffset( )); + + // Update the player-view weapon model so that it uses the correct + // textures based on the model style... + + // this is called to update the skins on the playerview + // model (to reflect the costume of the character), + // figure out how to do this differently + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + pClientWeapon->ResetWeaponFilenames(); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::HandleWeaponSoundLoopMsg +// +// PURPOSE: Play or stop a looping weapon sound... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::HandleWeaponSoundLoopMsg( ILTMessage_Read *pMsg ) +{ + uint8 nType = pMsg->Readuint8(); + uint8 nWeaponID = pMsg->Readuint8(); + + const WEAPON *pWeapon = g_pWeaponMgr->GetWeapon( nWeaponID ); + if( !pWeapon ) return; + + char* pBuf = LTNULL; + + switch( nType ) + { + case PSI_RELOAD: // 1 + case PSI_RELOAD2: // 2 + case PSI_RELOAD3: // 3 + { + pBuf = pWeapon->szReloadSounds[ ( nType - PSI_RELOAD ) ]; + } + break; + + case PSI_SELECT: pBuf = pWeapon->szSelectSound; break; // 4 + case PSI_DESELECT: pBuf = pWeapon->szDeselectSound; break; // 5 + case PSI_FIRE: pBuf = pWeapon->szFireSound; break; // 6 + case PSI_DRY_FIRE: pBuf = pWeapon->szDryFireSound; break; // 7 + case PSI_ALT_FIRE: pBuf = pWeapon->szAltFireSound; break; // 8 + case PSI_SILENCED_FIRE: pBuf = pWeapon->szSilencedFireSound; break; // 9 + + case PSI_WEAPON_MISC1: // 10 + case PSI_WEAPON_MISC2: // 11 + case PSI_WEAPON_MISC3: // 12 + case PSI_WEAPON_MISC4: // 13 + case PSI_WEAPON_MISC5: // 14 + { + pBuf = pWeapon->szMiscSounds[nType - PSI_WEAPON_MISC1]; + } + break; + + case PSI_INVALID: + default: + { + KillWeaponLoopSound(); + } + break; + } + + if( pBuf && pBuf[0] ) + { + // Stop any previous looping sound... + + KillWeaponLoopSound(); + + LTVector vPos; + g_pLTClient->GetObjectPos( m_hServerObject, &vPos ); + + // Play the sound from the character + + m_hWeaponLoopSound = g_pClientSoundMgr->PlaySoundFromObject( m_hServerObject, pBuf, (float)pWeapon->nFireSoundRadius, + SOUNDPRIORITY_PLAYER_MEDIUM, PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE, + SMGR_DEFAULT_VOLUME, 1.0f, -1.0f, WEAPONS_SOUND_CLASS ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::KillWeaponLoopSound +// +// PURPOSE: Kill any looping sound +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::KillWeaponLoopSound() +{ + if( m_hWeaponLoopSound ) + { + g_pLTClient->SoundMgr()->KillSound( m_hWeaponLoopSound ); + m_hWeaponLoopSound = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::HandlePitchData +// +// PURPOSE: Update the tracking nodes for pitching +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::HandlePitchData( uint32 nPitch ) +{ + // Only players can pitch... + if( !m_cs.bIsPlayer ) + return; + + // remap it to a float + UncompressAngleFromByte( (uint8)nPitch, &m_cs.fPitch ); + + float fPitch = m_cs.fPitch; + + + LTRotation rUpperTorsoRot = LTRotation(LTVector(1.0f, 0.0f, 0.0f), fPitch * g_vtPitchScale.GetFloat() + DEG2RAD(g_vtPitchBias.GetFloat())); + + //we first take our player point and extend it along our forward a few thousand units + LTVector vLookAt = rUpperTorsoRot.Forward() * 1000.0f; + + //we now need to add the pitch onto this.... + + + bool bOrient = false; + if( g_vtOrientOnAnim.GetFloat() > 0.0f ) + { + bOrient = true; + } + + g_pClientTrackedNodeMgr->SetOrientOnAnim( m_hUpperTorsoNode, bOrient ); + g_pClientTrackedNodeMgr->SetOrientOnAnim( m_hLowerTorsoNode, bOrient ); + + g_pClientTrackedNodeMgr->SetTargetObject( m_hUpperTorsoNode, vLookAt ); + g_pClientTrackedNodeMgr->SetTargetObject( m_hLowerTorsoNode, vLookAt ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdatePitch +// +// PURPOSE: Handles updating the pitch for this character +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdatePitch( ) +{ + // Only players can pitch... + if( !m_cs.bIsPlayer ) + return; + + uint32 nPitch; + if( g_pLTBase->GetObjectUnguaranteedData( m_hServerObject, &nPitch) == LT_OK ) + { + HandlePitchData( nPitch ); + } + + // Don't allow tracking when playing special damage fx anim or riding vehicle. + bool bEnable = !m_bDamageFxTrackingOverride && !m_bOnVehicle && g_vtPlayerPitchTracking.GetFloat( ); + if( bEnable ) + { + // Don't allow tracking when leaning. + uint32 nFlags = 0; + g_pCommonLT->GetObjectFlags( m_hServerObject, OFT_User, nFlags ); + bEnable = !( nFlags & USRFLG_PLAYER_LEANING ); + } + + EnablePitch( bEnable ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::ResetPitchTracking +// +// PURPOSE: Reset the pitch tracking stuff. (For resetting the model and things of that ilk.) +// +// ----------------------------------------------------------------------- // +void CCharacterFX::ResetPitchTracking() +{ + // Re-initialize the node tracking + HOBJECT hLocalObj = g_pLTClient->GetClientObject(); + if( m_cs.bIsPlayer && IsMultiplayerGame() && (m_hServerObject != hLocalObj)) + { + if( m_hUpperTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->DestroyTrackingNode( m_hUpperTorsoNode ); + m_hUpperTorsoNode = INVALID_TRACKEDNODE; + } + + if( m_hLowerTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->DestroyTrackingNode( m_hLowerTorsoNode ); + m_hLowerTorsoNode = INVALID_TRACKEDNODE; + } + + m_hUpperTorsoNode = g_pClientTrackedNodeMgr->CreateTrackingNode( m_hServerObject, "Upper_torso" ); + if( m_hUpperTorsoNode != INVALID_TRACKEDNODE ) + { + float fMax = g_vtUpperTorsoPitchMax.GetFloat(); + + g_pClientTrackedNodeMgr->SetNodeConstraints( m_hUpperTorsoNode, 0.0f, 0.0f, DEG2RAD(fMax), DEG2RAD(fMax), DEG2RAD(180.0f) ); + g_pClientTrackedNodeMgr->EnableTracking( m_hUpperTorsoNode, true ); + g_pClientTrackedNodeMgr->SetOrientOnAnim( m_hUpperTorsoNode, true ); + } + + m_hLowerTorsoNode = g_pClientTrackedNodeMgr->CreateTrackingNode( m_hServerObject, "Torso" ); + if( m_hLowerTorsoNode != INVALID_TRACKEDNODE ) + { + float fMax = g_vtLowerTorsoPitchMax.GetFloat(); + + g_pClientTrackedNodeMgr->SetNodeConstraints( m_hLowerTorsoNode, 0.0f, 0.0f, DEG2RAD(fMax), DEG2RAD(fMax), DEG2RAD(180.0f) ); + g_pClientTrackedNodeMgr->EnableTracking( m_hLowerTorsoNode, true ); + g_pClientTrackedNodeMgr->SetOrientOnAnim( m_hLowerTorsoNode, true ); + } + + EnablePitch( true ); + } + + // Don't do tracking if the skeleton is bad. The Speaker object + // can have an invalid skeleton. + if( m_cs.eModelSkeleton != eModelSkeletonInvalid ) + { + m_TrackedNodeContext.Init( m_hServerObject, m_cs.eModelSkeleton, g_pClientTrackedNodeMgr ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::EnablePitch +// +// PURPOSE: Enable\Disable the Pitch tracking... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::EnablePitch( bool bEnable ) +{ + if( m_bPitchEnabled == bEnable ) + return; + + m_bPitchEnabled = bEnable; + + if( m_hUpperTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->EnableTracking( m_hUpperTorsoNode, bEnable ); + } + + if( m_hLowerTorsoNode != INVALID_TRACKEDNODE ) + { + g_pClientTrackedNodeMgr->EnableTracking( m_hLowerTorsoNode, bEnable ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::Render +// +// PURPOSE: Render the Character debug info. +// +// ----------------------------------------------------------------------- // +void CCharacterFX::Render(HOBJECT hCamera) +{ + + // Draw the name. + if (m_pStr && m_pStr->GetLength()) + { + m_pStr->Render(); + } +} + + +void CCharacterFX::ChangeModel(ModelId eModelId) +{ + m_cs.eModelId = eModelId; + m_cs.eModelSkeleton = g_pModelButeMgr->GetModelSkeleton(eModelId); + + ObjectCreateStruct theStruct; + INIT_OBJECTCREATESTRUCT(theStruct); + + const char* pFilename = g_pModelButeMgr->GetModelFilename(eModelId); + SAFE_STRCPY(theStruct.m_Filename, pFilename); + + g_pModelButeMgr->CopySkinFilenames(eModelId, 0, theStruct.m_SkinNames[0], MAX_CS_FILENAME_LEN+1); + g_pModelButeMgr->CopyRenderStyleFilenames(eModelId, &theStruct); + + g_pCommonLT->SetObjectFilenames(m_hServerObject, &theStruct); + + + CreateAttachClientFX(); + + ResetPitchTracking(); +} + +//step through the things attached to us and see if we should hide any of them +void CCharacterFX::UpdateAttachments() +{ + HLOCALOBJ attachList[20]; + uint32 dwListSize = 0; + uint32 dwNumAttach = 0; + + g_pCommonLT->GetAttachments(m_hServerObject, attachList, 20, dwListSize, dwNumAttach); + int nNum = dwNumAttach <= dwListSize ? dwNumAttach : dwListSize; + + for (int i=0; i < nNum; i++) + { + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(attachList[i], OFT_User, dwUsrFlags); + + if (g_pVersionMgr->IsLowViolence() && dwUsrFlags & USRFLG_ATTACH_HIDEGORE) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + + } + + m_bUpdateAttachments = false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdatePlayerAlphaCycle +// +// PURPOSE: Cycles the alpha on the player. +// +// ----------------------------------------------------------------------- // +void CCharacterFX::UpdatePlayerAlphaCycle( ) +{ + // Check if this just turned on. + if( !m_PlayerAlphaCycleTimer.On( )) + { + m_PlayerAlphaCycleTimer.Start( ); + } + + // Get the period of the cycle. + float fPlayerAlphaPeriod = GetConsoleFloat( "PlayerAlphaPeriod", 1.0f ); + fPlayerAlphaPeriod = Max( fPlayerAlphaPeriod, 0.1f ); + + // Multiply the period by 2 since abs( cos ) will give us 2 cycles per normal period. + fPlayerAlphaPeriod *= 2.0f; + + float fAlphaParameterized = 0; + + LTVector vColor; + g_pLTClient->GetObjectColor( m_hServerObject, &(vColor.x), &(vColor.y), &(vColor.z), &fAlphaParameterized ); + + // Get the parameterized value of the alpha. + fAlphaParameterized = ( float )fabs( cos( m_PlayerAlphaCycleTimer.GetElapseTime( ) * MATH_CIRCLE / fPlayerAlphaPeriod )); + + g_pLTClient->SetObjectColor( m_hServerObject, (vColor.x), (vColor.y), (vColor.z), fAlphaParameterized ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::RemovePlayerAlphaCycle +// +// PURPOSE: Removos the alpha cycle on the player. +// +// ----------------------------------------------------------------------- // +void CCharacterFX::RemovePlayerAlphaCycle( ) +{ + LTVector vColor; + float fAlpha; + g_pLTClient->GetObjectColor( m_hServerObject, &(vColor.x), &(vColor.y), &(vColor.z), &fAlpha ); + g_pLTClient->SetObjectColor( m_hServerObject, (vColor.x), (vColor.y), (vColor.z), 1.0f ); + + m_PlayerAlphaCycleTimer.Stop( ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::KillLipSyncSound +// +// PURPOSE: Kill the lipsync sound. +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::KillLipSyncSound( bool bSendNotification ) +{ + if( m_hDialogueSnd ) + { + g_pLTClient->SoundMgr()->KillSound(m_hDialogueSnd); + m_hDialogueSnd = LTNULL; + } + + if (m_bSubtitle) + { + g_pSubtitles->Clear(); + } + + if( bSendNotification ) + { + // Tell the server that the sound finished. + CAutoMessage cMsg; + cMsg.Writeuint8( MID_OBJECT_MESSAGE ); + cMsg.WriteObject( m_hServerObject ); + cMsg.Writeuint32( MID_SFX_MESSAGE ); + cMsg.Writeuint8( SFX_CHARACTER_ID ); + cMsg.Writeuint8( CFX_DIALOGUE_MSG ); + cMsg.Writeuint8( m_nUniqueDialogueId ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::ShutdownDamageFX +// +// PURPOSE: Shutdown any damageFX on this character... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::ShutdownDamageFX() +{ + // Shutdown any damageFX... + + if( m_link3rdPersonInstFX.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_link3rdPersonInstFX ); + } + + if( !m_p3rdPersonDamageFX ) + return; + + for( uint32 nCurrDamage = 0; nCurrDamage < m_nNum3rdPersonDamageFX; ++nCurrDamage ) + { + if( m_p3rdPersonDamageFX[nCurrDamage].IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_p3rdPersonDamageFX[nCurrDamage] ); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::OnObjectRotate +// +// PURPOSE: Gaive the characterFX a chance to modify the rotation... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::OnObjectRotate( LTRotation *pRot ) +{ + if( !pRot ) + return; + + bool bLocalClient = (m_hServerObject == g_pLTClient->GetClientObject()); + + // Update the contour rotation of the vehicle... + // Not the local client though since we never see his vehicle. + + if( !bLocalClient ) + UpdateVehicleContour( *pRot ); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::UpdateCarrying +// +// PURPOSE: Update the player's carrying state... +// +// ----------------------------------------------------------------------- // + +void CCharacterFX::UpdateCarrying() +{ + // we only care about the local player, so bail for anything else... + if( !m_cs.bIsPlayer) return; + if (m_hServerObject != g_pLTClient->GetClientObject()) return; + + g_pPlayerMgr->SetCarryingObject(m_cs.nCarrying, m_cs.pChassisPieceBute, true); +} diff --git a/Jack/ClientShellDLL/CharacterFX.h b/Jack/ClientShellDLL/CharacterFX.h new file mode 100644 index 00000000..1259a7bb --- /dev/null +++ b/Jack/ClientShellDLL/CharacterFX.h @@ -0,0 +1,286 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CharacterFX.h +// +// PURPOSE : Character special fx class - Definition +// +// CREATED : 8/24/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CHARACTER_FX_H__ +#define __CHARACTER_FX_H__ + +#include "SpecialFX.h" +#include "SurfaceMgr.h" +#include "NodeController.h" +#include "ModelButeMgr.h" +#include "iltmodel.h" +#include "SharedFXStructs.h" +#include "PolyLineFX.h" +#include "Timer.h" +#include "FlashLight.h" +#include "ClientTrackedNodeMgr.h" +#include "ClientTrackedNodeContext.h" +#include "ClientFXMgr.h" +#include "iltfontmanager.h" +#include "FXButeMgr.h" +#include "HitBox.h" + +#define MAX_DINGS 5 + +class CCharacterFX : public CSpecialFX +{ + public : + + CCharacterFX() : CSpecialFX() + { + m_pBubbles = LTNULL; + m_pCigarette = LTNULL; + m_pZzz = LTNULL; + m_fNextBubbleTime = -1.0f; + m_fNextCigaretteTime = -1.0f; + m_fNextSmokepuffTime = -1.0f; + m_fNextZzzTime = -1.0f; + m_fNextHeartTime = -1.0f; + m_bLeftFoot = LTTRUE; + m_eLastSurface = ST_UNKNOWN; + m_hDialogueSnd = LTNULL; + m_hVehicleSound = LTNULL; + m_bSubtitle = LTFALSE; + m_bOnVehicle = LTFALSE; + m_hWeaponLoopSound = LTNULL; + + for (int i=0; i < MAX_DINGS; i++) + { + m_fNextDingTime[i] = -1.0f; + } + + m_szInfoString[0] = 0; + m_szInfoString[kMaxInfoStringLength] = 0; + + m_hUpperTorsoNode = INVALID_TRACKEDNODE; + m_hLowerTorsoNode = INVALID_TRACKEDNODE; + m_hHeadNode = INVALID_TRACKEDNODE; + + m_pStr = NULL; + m_nLastDamageFlags = 0; + m_nInstantDamageFlags = 0; + + m_bWasPlayingSpecialDamageAni = false; + + m_bDamageFxTrackingOverride = false; + + m_bPlayerDead = false; + + m_p3rdPersonDamageFX = NULL; + m_nNum3rdPersonDamageFX = 0; + + m_bPitchEnabled = false; + } + + ~CCharacterFX(); + + void DoFootStep() + { + // Alternate feet... + m_bLeftFoot = !m_bLeftFoot; + DoFootStepKey(m_hServerObject, LTTRUE); + } + + void PlayDingSound(); + + void PlayMovementSound(LTVector vPos, SurfaceType eSurface, + LTBOOL bLeftFoot, PlayerPhysicsModel ePPModel=PPM_NORMAL, uint8 nModelId = (uint8)-1 ); + + void ResetSoundBufferData() { m_NodeController.ResetSoundBufferData(); } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + virtual void OnModelKey(HLOCALOBJ hObj, ArgList *pArgs); + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + virtual void OnObjectRotate( LTRotation *pNewRot ); + + virtual void ChangeModel(ModelId eModelId); + + ModelId GetModelId() const { return m_cs.eModelId; } + ModelSkeleton GetModelSkeleton() const { return m_cs.eModelSkeleton; } + ModelType GetModelType() const { return m_cs.eModelType; } + + HLTSOUND PlayLipSyncSound(char* szSound, LTFLOAT fRadius, LTBOOL & bSubtitle, bool bSubtitlePriority, bool bGetHandle = true); + void PlayTaunt(uint32 nTauntId, LTBOOL bForce=LTTRUE); + LTBOOL IsPlayingTaunt() { return m_NodeController.IsLipSynching(); } + + SurfaceType GetLastSurface() const { return m_eLastSurface; } + + virtual uint32 GetSFXID() { return SFX_CHARACTER_ID; } + + HOBJECT GetHitBox() const { return m_HitBox.GetObject(); } + + bool CanBeCarried() { return m_cs.bCanCarry; } + bool CanWake() { return m_cs.bCanWake; } + + const char * GetInfoString() const { return m_szInfoString; } + + // show or hide all client effects attached to this character model + void ShowAttachClientFX(); + void HideAttachClientFX(); + + virtual void Render(HOBJECT hCamera); + + bool IsPlayerDead() { return m_cs.bIsPlayer && m_bPlayerDead; } + bool IsUnconscious() { return !!(m_cs.nDamageFlags & DamageTypeToFlag( DT_SLEEPING )); } + bool Slipped() { return !!(m_cs.nDamageFlags & DamageTypeToFlag( DT_SLIPPERY )); } + + static uint32 GetNumPlayersInGame() { return m_lstPlayersInGame.size(); } + + uint8 GetCarrying() { return m_cs.nCarrying; } + + virtual void EnablePitch( bool bEnable ); + + enum Constants + { + kMaxInfoStringLength = 1023 + }; + + CHARCREATESTRUCT m_cs; + + protected : + // create or destroy all client effects attached to this character model + void CreateAttachClientFX(); + void RemoveAttachClientFX(); + + void CreateUnderwaterFX(const LTVector & vPos); + void UpdateUnderwaterFX(LTVector & vPos); + void RemoveUnderwaterFX(); + + void CreateCigaretteFX(); + void UpdateCigaretteFX(); + void RemoveCigaretteFX(); + + void CreateZzzFX(); + void UpdateZzzFX(); + void RemoveZzzFX(); + + void UpdateFlashLightFX(); + void RemoveFlashLightFX(); + + void UpdateBreathFX(); + + void UpdateDamageFX(); + void ShutdownDamageFX(); + + void UpdatePlayerAlphaCycle( ); + void RemovePlayerAlphaCycle( ); + + void UpdateSounds(); + void HandleDialogueMsg(ILTMessage_Read *pMsg); + void HandleTauntMsg(ILTMessage_Read *pMsg); + void HandleWeaponSoundLoopMsg(ILTMessage_Read *pMsg); + void HandlePitchData( uint32 nPitch ); + void UpdatePitch( ); + void KillWeaponLoopSound(); + + void ResetPitchTracking(); + + void DoFootStepKey(HLOCALOBJ hObj, LTBOOL bForceSound=LTFALSE); + void CreateTrail(SurfaceType eType, IntersectInfo & iInfo); + void CreateFootprint(SurfaceType eType, IntersectInfo & iInfo); + void UpdateOnVehicle(); + void UpdateMultiVehicleSounds(); + void UpdateVehicleContour( LTRotation &rCharacterRot ); + + void CreateVehicleTrail(CPolyLineFX* pTrail, LTVector vDir, + LTVector vStartPoint, LTVector vEndPoint, LTBOOL bNewTrail); + + void InitLocalPlayer(); + + void UpdateAttachments(); + + void KillLipSyncSound( bool bSendNotification ); + + void UpdateCarrying(); + + + CFlashLight3rdPerson m_3rdPersonFlashlight; // Only used if fx is seen from 3rd person + + CSpecialFX* m_pBubbles; // Bubbles fx + CSpecialFX* m_pCigarette; // Cigarette for poodle + CSpecialFX* m_pZzz; // Zzz for sleeping dudes + + CBaseScaleFX m_CigaretteModel; + BSCREATESTRUCT m_scalecs; + + LTFLOAT m_fNextBubbleTime; + LTFLOAT m_fNextHeartTime; + LTFLOAT m_fNextCigaretteTime; + LTFLOAT m_fNextSmokepuffTime; + LTFLOAT m_fNextZzzTime; + LTBOOL m_bLeftFoot; + SurfaceType m_eLastSurface; + + CPolyLineFX m_VehicleTrail1; + CPolyLineFX m_VehicleTrail2; + CNodeController m_NodeController; // Our node controller + + //the amount of time that has currently elapsed for this breath interval + float m_fBreathElapsedTime; + //the amount of time that needs to elapse for another breath to be emitted + float m_fBreathEndTime; + + HLTSOUND m_hDialogueSnd; + uint8 m_nUniqueDialogueId; + bool m_bSubtitlePriority; + + HLTSOUND m_hVehicleSound; + LTBOOL m_bSubtitle; + LTBOOL m_bOnVehicle; + + LTFLOAT m_fNextDingTime[MAX_DINGS]; + + char m_szInfoString[kMaxInfoStringLength + 1]; + + HLTSOUND m_hWeaponLoopSound; + + HTRACKEDNODE m_hUpperTorsoNode; + HTRACKEDNODE m_hLowerTorsoNode; + HTRACKEDNODE m_hHeadNode; + + CClientTrackedNodeContext m_TrackedNodeContext; + + CLIENTFX_LINK_NODE m_AttachClientFX; + + CLIENTFX_LINK *m_p3rdPersonDamageFX; + uint32 m_nNum3rdPersonDamageFX; + + CLIENTFX_LINK m_link3rdPersonInstFX; + CLIENTFX_LINK m_linkChatFX; + + CUIFormattedPolyString *m_pStr; + LTVector m_vStrPos; + + DamageFlags m_nLastDamageFlags; + DamageFlags m_nInstantDamageFlags; + + bool m_bWasPlayingSpecialDamageAni; + bool m_bDamageFxTrackingOverride; + + bool m_bPlayerDead; + + bool m_bUpdateAttachments; + + CTimer m_PlayerAlphaCycleTimer; + + CHitBox m_HitBox; + + bool m_bPitchEnabled; + + typedef std::vector CharFXList; + static CharFXList m_lstPlayersInGame; +}; + +#endif diff --git a/Jack/ClientShellDLL/ChassisFX.cpp b/Jack/ClientShellDLL/ChassisFX.cpp new file mode 100644 index 00000000..caf4029c --- /dev/null +++ b/Jack/ClientShellDLL/ChassisFX.cpp @@ -0,0 +1,88 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ChassisFX.cpp +// +// PURPOSE : ChassisFX - Implementation +// +// CREATED : 6/30/03 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ChassisFX.h" +#include "iltclient.h" +#include "SFXMsgIds.h" + +ChassisFX::~ChassisFX() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + CHASSISCREATESTRUCT* pCS = (CHASSISCREATESTRUCT*)psfxCreateStruct; + + m_nTeam = pCS->nTeam; + m_fDropZoneRadius = pCS->fDropZoneRadius; + m_nActivateId = pCS->nActivateId; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisFX::CreateObject +// +// PURPOSE: Create object associated the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisFX::Update +// +// PURPOSE: Update the DoomsdayPiece +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisFX::Update() +{ + if (!m_pClientDE || m_bWantRemove || !m_hServerObject) return LTFALSE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisFX::OnServerMessage() +// +// PURPOSE: We got a message! +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + m_nTeam = pMsg->Readuint8(); + m_fDropZoneRadius = pMsg->Readfloat( ); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ChassisFX.h b/Jack/ClientShellDLL/ChassisFX.h new file mode 100644 index 00000000..1340f584 --- /dev/null +++ b/Jack/ClientShellDLL/ChassisFX.h @@ -0,0 +1,58 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ChassisFX.h +// +// PURPOSE : ChassisFX - Definition +// +// CREATED : 6/30/03 +// +// ----------------------------------------------------------------------- // + +#ifndef __CHASSISFX_H__ +#define __CHASSISFX_H__ + +#include "SpecialFX.h" +#include "ActivateTypeMgr.h" + +struct CHASSISCREATESTRUCT : public SFXCREATESTRUCT +{ + CHASSISCREATESTRUCT(); + + uint8 nTeam; + float fDropZoneRadius; + uint8 nActivateId; +}; + +inline CHASSISCREATESTRUCT::CHASSISCREATESTRUCT() +{ + nTeam = INVALID_TEAM; + fDropZoneRadius = 64.0f; + nActivateId = ATMGR_INVALID_ID; +} + +class ChassisFX : public CSpecialFX +{ + public : + + ~ChassisFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_CHASSIS_ID; } + + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + + uint8 GetTeam() const { return m_nTeam; } + float GetDropZoneRadius( ) const { return m_fDropZoneRadius; } + uint8 GetActivateId( ) const { return m_nActivateId; } + + private : + + uint8 m_nTeam; + float m_fDropZoneRadius; + uint8 m_nActivateId; +}; + +#endif // __CHASSISFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ChassisPieceFX.cpp b/Jack/ClientShellDLL/ChassisPieceFX.cpp new file mode 100644 index 00000000..b57df5c0 --- /dev/null +++ b/Jack/ClientShellDLL/ChassisPieceFX.cpp @@ -0,0 +1,242 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ChassisPiece.cpp +// +// PURPOSE : ChassisPiece - Implementation +// +// CREATED : 5/12/03 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ChassisPieceFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "SFXMsgIds.h" +#include "HUDMgr.h" +#include "ChassisButeMgr.h" + +extern CGameClientShell* g_pGameClientShell; + + +ChassisPieceFX::~ChassisPieceFX() +{ + ClearBlink(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisPieceFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisPieceFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + CHASSISPIECECREATESTRUCT* pCS = (CHASSISPIECECREATESTRUCT*)psfxCreateStruct; + + m_pChassisPieceBute = pCS->pChassisPieceBute; + m_bCarried = pCS->bCarried; + m_nTeam = pCS->nTeam; + m_bPlanted = pCS->bPlanted; + m_nActivateId = pCS->nActivateId; + m_bBlinking = pCS->bBlinking; + m_fAlpha = 1.0f; + m_fFadeSpeed = -1.0f; + + std::string radarType = m_pChassisPieceBute->m_sRadarType; + + switch (m_nTeam) + { + case 0: + radarType += "_B"; + break; + case 1: + radarType += "_R"; + break; + default: + radarType += "_N"; + break; + } + + g_pRadar->AddObject(m_hServerObject,radarType.c_str(), INVALID_TEAM); + g_pLTClient->SetObjectColor(m_hServerObject,1.0f,1.0f,1.0f,m_fAlpha); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisPieceFX::CreateObject +// +// PURPOSE: Create object associated the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisPieceFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisPieceFX::Update +// +// PURPOSE: Update the DoomsdayPiece +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisPieceFX::Update() +{ + if (!m_pClientDE || m_bWantRemove || !m_hServerObject) return LTFALSE; + + if (m_bBlinking) + { + UpdateBlink(); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ChassisPieceFX::OnServerMessage() +// +// PURPOSE: We got a message! +// +// ----------------------------------------------------------------------- // + +LTBOOL ChassisPieceFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + bool bRespawn = pMsg->Readbool(); + if (bRespawn) + { + LTVector vOldPos = pMsg->ReadLTVector(); + LTVector vNewPos = pMsg->ReadLTVector(); + m_bCarried = false; + m_nTeam = INVALID_TEAM; + m_bPlanted = false; + Respawn(vOldPos,vNewPos); + } + else + { + uint8 nIndex = pMsg->Readuint8(); + m_pChassisPieceBute = ChassisButeMgr::Instance( ).GetChassisPieceButeList( )[nIndex]; + m_bCarried = pMsg->Readbool(); + m_nTeam = pMsg->Readuint8(); + m_bPlanted = pMsg->Readbool(); + uint8 nActivate = pMsg->Readuint8(); + bool bBlinking = pMsg->Readbool(); + + if (m_bBlinking != bBlinking) + { + if (bBlinking) + StartBlink(); + else + ClearBlink(); + } + } + + std::string radarType = m_pChassisPieceBute->m_sRadarType; + + switch (m_nTeam) + { + case 0: + radarType += "_B"; + break; + case 1: + radarType += "_R"; + break; + default: + radarType += "_N"; + break; + + } + g_pRadar->ChangeRadarType(m_hServerObject,radarType.c_str()); + + g_pHUDMgr->QueueUpdate(kHUDDoomsday); + + return LTTRUE; +}; + + +void ChassisPieceFX::UpdateBlink() +{ + m_fAlpha += m_fFadeSpeed * g_pLTClient->GetFrameTime(); + if (m_fAlpha > 1.0f) + { + m_fAlpha = 1.0f; + m_fFadeSpeed = -1.0f; + } + else if (m_fAlpha < 0.1f) + { + m_fAlpha = 0.1f; + m_fFadeSpeed = 1.0f; + } + + g_pLTClient->SetObjectColor(m_hServerObject,1.0f,1.0f,m_fAlpha,m_fAlpha); +} + +void ChassisPieceFX::StartBlink() +{ + m_fAlpha = 1.0f; + m_bBlinking = true; + m_fFadeSpeed = -1.0f; + g_pLTClient->SetObjectColor(m_hServerObject,1.0f,1.0f,1.0f,m_fAlpha); + + // get the flags for this ClientFX + uint32 dwFlags = FXFLAG_LOOP | FXFLAG_NOSMOOTHSHUTDOWN; + + + + LTVector vPos; + // get in initial position for the effect + g_pLTClient->GetObjectPos( m_hServerObject, &vPos ); + + // prepare the create struct + CLIENTFX_CREATESTRUCT fxInit(m_pChassisPieceBute->m_sFadeFX.c_str(),dwFlags,vPos); + + // create the client fx + g_pClientFXMgr->CreateClientFX(&m_ClientFXLink,fxInit,true); + + + g_pLTClient->SetObjectColor(m_hServerObject, 1.0f, 1.0f, 1.0f, 1.0f); +} + +void ChassisPieceFX::ClearBlink() +{ + m_fAlpha = 1.0f; + m_bBlinking = false; + m_fFadeSpeed = -1.0f; + g_pLTClient->SetObjectColor(m_hServerObject,1.0f,1.0f,1.0f,m_fAlpha); + + g_pClientFXMgr->ShutdownClientFX(&m_ClientFXLink); + g_pLTClient->SetObjectColor(m_hServerObject, 1.0f, 1.0f, 1.0f, 1.0f); +} + + +void ChassisPieceFX::Respawn(LTVector& vOldPos, LTVector& vNewPos ) +{ + ClearBlink(); + + // create the unspawn fx + CLIENTFX_CREATESTRUCT unspawnFxInit(m_pChassisPieceBute->m_sUnspawnFX.c_str(),0,vOldPos); + CLIENTFX_LINK unspawnFXLink; + g_pClientFXMgr->CreateClientFX(&unspawnFXLink,unspawnFxInit,true); + + // create the respawn fx + CLIENTFX_CREATESTRUCT respawnFxInit(m_pChassisPieceBute->m_sSpawnFX.c_str(),0,vNewPos); + CLIENTFX_LINK respawnFXLink; + g_pClientFXMgr->CreateClientFX(&respawnFXLink,respawnFxInit,true); + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ChassisPieceFX.h b/Jack/ClientShellDLL/ChassisPieceFX.h new file mode 100644 index 00000000..de233202 --- /dev/null +++ b/Jack/ClientShellDLL/ChassisPieceFX.h @@ -0,0 +1,77 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ChassisPiece.h +// +// PURPOSE : ChassisPiece - Definition +// +// CREATED : 5/12/03 +// +// ----------------------------------------------------------------------- // + +#ifndef __CHASSISPIECE_H__ +#define __CHASSISPIECE_H__ + +#include "SpecialFX.h" +#include "ActivateTypeMgr.h" + +struct CHASSISPIECECREATESTRUCT : public SFXCREATESTRUCT +{ + CHASSISPIECECREATESTRUCT(); + + ChassisPieceBute* pChassisPieceBute; + bool bCarried; + uint8 nTeam; + bool bPlanted; + uint8 nActivateId; + bool bBlinking; +}; + +inline CHASSISPIECECREATESTRUCT::CHASSISPIECECREATESTRUCT() +{ + pChassisPieceBute = NULL; + bCarried = false; + nTeam = INVALID_TEAM; + bPlanted = false; + nActivateId = ATMGR_INVALID_ID; + bBlinking = false; +} + +class ChassisPieceFX : public CSpecialFX +{ + public : + + ~ChassisPieceFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_CHASSISPIECE_ID; } + + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + + ChassisPieceBute const* GetChassisPieceBute( ) const { return m_pChassisPieceBute; } + bool IsCarried() const { return m_bCarried; } + uint8 GetTeam() const { return m_nTeam; } + bool IsPlanted() const { return m_bPlanted; } + uint8 GetActivateId( ) const { return m_nActivateId; } + + private : + void StartBlink(); + void UpdateBlink(); + void ClearBlink(); + void Respawn(LTVector& vOldPos, LTVector& vNewPos ); + CLIENTFX_LINK m_ClientFXLink; + + + ChassisPieceBute* m_pChassisPieceBute; + bool m_bCarried; + uint8 m_nTeam; + bool m_bPlanted; + uint8 m_nActivateId; + bool m_bBlinking; + float m_fAlpha; + float m_fFadeSpeed; +}; + +#endif // __CHASSISPIECE_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/CheatMgr.cpp b/Jack/ClientShellDLL/CheatMgr.cpp new file mode 100644 index 00000000..86d84a30 --- /dev/null +++ b/Jack/ClientShellDLL/CheatMgr.cpp @@ -0,0 +1,1407 @@ +//------------------------------------------------------------------------- +// +// MODULE : CheatMgr.cpp +// +// PURPOSE : Cheat system +// +// CREATED : 10/22/97 - as part of Blood2 messaging system +// +// REVISED : 10/16/01 - ripped out of MessageMgr +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +//------------------------------------------------------------------------- + +#include "stdafx.h" +#include "GameClientShell.h" +#include "CheatMgr.h" +#include "HUDMgr.h" +#include "MsgIDs.h" +#include "SoundTypes.h" +#include "clientres.h" +#include "CMoveMgr.h" +#include "VehicleMgr.h" + + +CCheatMgr* g_pCheatMgr = LTNULL; +bool g_bInfiniteAmmo = false; + +void CheatFn(int argc, char **argv) +{ + if (argc < 1 || !g_pCheatMgr) return; + + CParsedMsg cMsg( argc, argv ); + + if (g_pCheatMgr->Check( cMsg )) + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Menu\\Snd\\Cheat.wav"); + } +} + + +CCheatMgr::CheatInfo CCheatMgr::s_CheatInfo[] = { + +#ifdef _FINAL // Retail cheat names (what the world sees) + + { "FMC", LTFALSE }, // god - can't die + { "@KJK", LTFALSE }, // ammo - full ammo + { "@RJK_", LTFALSE }, // armor - full armor + { "ICNJQT", LTFALSE }, // health - full health + { "QMKR@^@MPY[", LTFALSE }, // poltergeist - AI won't see you (can still hear you) + { "QMP", LTFALSE }, // pos - give world position + { "JFN", LTFALSE }, // kfa - god, all weapons + { "FSM_", LTFALSE }, // guns - all weapons + { "UCNP^", LTFALSE }, // tears - All weapons, infinite ammo + { "SMPAO_O", LTFALSE }, // rosebud - Spawn in a snowmobile + { "LMC_", LTFALSE }, // mods - get all of the mods for currently held weapons + { "FCNP", LTFALSE }, // gear - All gear + { "LO_VJHN", LTFALSE }, // maphole - exit the current level + { "OCgRHS\\[PUU", LTFALSE }, // nextmission - exit the current mission + { "CMLR", LTFALSE }, // boot - boot a player + { "CSVJA", LTFALSE }, // build - build info + { "FWJI@A^H", LTFALSE }, // gimmegun - give specific weapon + { "DUHWNUVL", LTFALSE }, // gimmemod - give specific mod + { "FWJI@WHN", LTFALSE }, // gimmegear - give specific gear + { "FWJI@KVUV", LTFALSE }, // gimmeammo - give specific ammo + { "NBSQ^O", LTFALSE }, // obtuse - enables the console in release builds (not supported currently) + { "RIVJIf", LTFALSE }, // skillz - give skill points + { "DNCCLWN", LTFALSE }, // endgame - unlock the chapter list as if you had completed the game + { "COCBLNHWT", LTFALSE }, // baddaboom - bodies fly far with explosion damage + +#else // Development cheat names (what we're used to)... + + { "LPDKA", LTFALSE }, // mpgod + { "LPNIHI", LTFALSE }, // mpammo + { "LPNPHI]", LTFALSE }, // mparmor + { "LPWALH_R", LTFALSE }, // mphealth + { "LP_KIPN\\NK^gY", LTFALSE }, // mppoltergeist + { "LP_K^", LTFALSE }, // mppos + { "LPHDL", LTFALSE }, // mpkfa + { "LPDQK]", LTFALSE }, // mpguns - all weapons + { "LPSAL^\\", LTFALSE }, // mptears - All weapons, infinite ammo + { "LPQK^OM]M", LTFALSE }, // mprosebud - Spawn in a snowmobile + { "LPJKA]", LTFALSE }, // mpmods - get all of the mods for currently held weapons + { "LPDAL^", LTFALSE }, // mpgear - All gear + { "LPJM]THVL", LTFALSE }, // mpmaphole - exit the current level + { "LPMAePVQZY^SS", LTFALSE }, // mpnextmission - exit the current mission + { "LPAKJP", LTFALSE }, // mpboot - boot a player + { "LPAQTHO", LTFALSE }, // mpbuild - build info + { "LPDUHWNO\\V", LTFALSE }, // mpgimmegun - give specific weapon + { "LPDUHWNUVL", LTFALSE }, // mpgimmemod - give specific mod + { "LPDUHWNOLWY", LTFALSE }, // mpgimmegear - give specific gear + { "LPDUHWNITST", LTFALSE }, // mpgimmeammo - give specific ammo + { "LPL@Q_\\M", LTFALSE }, // mpobtuse - enables the console in release builds + { "LPPWTHWd", LTFALSE }, // mpskillz - give skill points + { "LPBLAAJUL", LTFALSE }, // mpendgame - unlock the chapter list as if you had completed the game + { "LPAMA@JLVUR", LTFALSE }, // mpbaddaboom - bodies fly far with explosion damage + { "LPN_^MJU", LTFALSE }, // mpasscam - toggle chase view + +#endif // _FINAL + +// Development only cheats... + { "LP@JT\\", LTFALSE }, // mpclip - spectator mode + { "LPSAIO[W[\\", LTFALSE }, // mpteleport - teleport to level start + { "LPT^J]", LTFALSE }, // mpwpos - toggle position weapon adjustment + { "LPTI]I\\", LTFALSE }, // mpwmpos - toggle position weapon muzzle adjustment + { "LPAP@KLRVNMgHX", LTFALSE }, // mpbreachoffset - adjust player-view breach offset + { "LPKUBT_[JWSI", LTFALSE }, // mplightscale - toggle light scale adjustment + { "LPKUBT_IML", LTFALSE }, // mplightadd - toggle light add adjustment + { "LPEKS", LTFALSE }, // mpfov - toggle fov adjustment + { "LPAKdS\\]JQ", LTFALSE }, // mpboyisuck - Remove all AI in the level + { "LPSPTA@M[Y", LTFALSE }, // mptriggers - Toggle trigger boxes on/off + { "LP@MHO]I", LTFALSE }, // mpcamera - Toggle 1st person camera adjust on/off + { "LP@MH\\H[", LTFALSE }, // mpcampos - toggle camera pos/rot + { "LPPMSOQMQ_HRH", LTFALSE }, // mpsavevehicle - save the vehicle tweaks to the bute file +}; + + +LTBOOL CCheatMgr::m_bPlayerCheated = LTFALSE; + + + +/******************************************************************************* + + CCheatMgr + +*******************************************************************************/ + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Init() +// +// PURPOSE: Initializes the cheat manager +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Init() +{ + g_pCheatMgr = this; + g_pLTClient->RegisterConsoleProgram("Cheat", CheatFn); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Check() +// +// PURPOSE: See if a string is a cheat code +// +// ----------------------------------------------------------------------- // + +LTBOOL CCheatMgr::Check( CParsedMsg &cMsg ) +{ + char buf[100]; + + // copy their text + strncpy(buf, cMsg.GetArg(0).c_str(), sizeof(buf)-1); + + // convert it to cheat compatible text + unsigned int i; + for ( i = 0; i < strlen(cMsg.GetArg(0).c_str()); i++ ) + buf[i] = ((buf[i] ^ 38) + i) ^ 7; + + // then compare the converted text + for ( i = 0; i < CHEAT_MAX; i++ ) + { + if ( strcmp( buf, s_CheatInfo[i].pzText ) == 0) + { + return Process( (CheatCode)i, cMsg ); + } + } + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Process() +// +// PURPOSE: Calls the appropriate cheat function +// +// ----------------------------------------------------------------------- // + +bool CCheatMgr::Process( CheatCode nCheatCode, CParsedMsg &cMsg ) +{ + if ( nCheatCode <= CHEAT_NONE || nCheatCode >= CHEAT_MAX ) return false; + +#ifdef _FINAL + // Don't do cheats in multiplayer... + if (IsMultiplayerGame()) + { + // Well, okay, let them toggle between 1st and 3rd person ;) + // and, well, blood is pretty cool... + switch ( nCheatCode ) + { + case CHEAT_CHASETOGGLE: + ChaseToggle(); + break; + + case CHEAT_EXITLEVEL: // exit the current level + SetExitLevel(); + break; + + case CHEAT_NEXTMISSION: // exit the current mission + NextMission(); + break; + + case CHEAT_BOOT: // boot players + BootPlayer(cMsg); + break; + + default : + return false; + break; + } + + m_bPlayerCheated = LTTRUE; + return true; + } +#endif // _FINAL + + // process cheat codes + switch ( nCheatCode ) + { + case CHEAT_GOD: // god mode toggle + SetGodMode(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_SKILLZ: // give em skill points + GetSkills(); + break; + + case CHEAT_ARMOR: // full armor + SetArmor(); + break; + + case CHEAT_HEALTH: // full health + SetHealth(); + break; + + case CHEAT_EXITLEVEL: // exit the current level + SetExitLevel(); + break; + + case CHEAT_VERSION: // display version info + Version(); + break; + + case CHEAT_INVISIBLE: // time to mess with the AI + SetInvisible(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_BODYGOLFING: // bodies fly far + BodyGolfing(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_POS: // show/hide player position + SetPos(!s_CheatInfo[nCheatCode].bActive); + break; + +#ifndef _DEMO + + case CHEAT_KFA: // give em everything + SetKFA(); + break; + + case CHEAT_AMMO: // full ammo + SetAmmo(); + break; + + case CHEAT_MODSQUAD: // give all mods for current weapons + ModSquad(); + break; + + case CHEAT_CONSOLE: + SetConsole(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_NEXTMISSION: // exit the current mission + NextMission(); + break; + + case CHEAT_BOOT: // exit the current mission + BootPlayer(cMsg); + break; + + case CHEAT_FULL_WEAPONS: // give all weapons + SetFullWeapons(); + break; + + case CHEAT_SNOWMOBILE: // spawn in snowmobile + Snowmobile(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_FULL_GEAR: // give all gear + FullGear(); + break; + + case CHEAT_TEARS: // toggle tears cheat + Tears(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_GIMMEGUN: + GimmeGun( cMsg ); + break; + + case CHEAT_GIMMEMOD: + GimmeMod( cMsg ); + break; + + case CHEAT_GIMMEGEAR: + GimmeGear( cMsg ); + break; + + case CHEAT_GIMMEAMMO: + GimmeAmmo( cMsg ); + break; + + case CHEAT_ENDGAME: + ToggleEndgameFlag(); + break; + +#ifndef _FINAL + + case CHEAT_CHASETOGGLE: // toggle 3rd person view + ChaseToggle(); + break; + + case CHEAT_CLIP: // toggle clipping mode + SetClipMode(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_TELEPORT: // teleport to beginning + Teleport(); + break; + + case CHEAT_CAM_POSROT: // show/hide camera position/rotation + SetCamPosRot(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_POSWEAPON: // toggle adjust of weapon pos + PosWeapon(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_POSWEAPON_MUZZLE: // toggle adjust of weapon muzzle pos + PosWeaponMuzzle(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_WEAPON_BREACHOFFSET: // toggle adjust of weapon breach offset pos + WeaponBreachOffset(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_LIGHTSCALE: // toggle client light scale offset + LightScale(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_LIGHTADD: // toggle client light add offset + LightAdd(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_FOV: // toggle fov cheat + FOV(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_REMOVEAI: // remove all ai + RemoveAI(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_TRIGGERBOX: // toggle trigger boxes on/off + TriggerBox(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_POS1STCAM: // toggle 1st person camera adjust on/off + Pos1stCam(!s_CheatInfo[nCheatCode].bActive); + break; + + case CHEAT_SAVEVEHICLE: // save the vehicle tweaks to the bute file + SaveVehicle( ); + break; + +#endif // _FINAL +#endif // _DEMO + + default: + return false; // skip setting global cheat indicator for unhandled cheats + } + + m_bPlayerCheated = LTTRUE; + + return true; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SendCheatMessage() +// +// PURPOSE: sends a cheat to the server +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SendCheatMessage( CheatCode nCheatCode, uint32 nData ) +{ + // Send the Message to the server + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CHEAT); + cMsg.Writeuint8((uint8)nCheatCode); + cMsg.Writeuint32(nData); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetGodMode() +// +// PURPOSE: Sets/resets God mode +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetGodMode(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_GOD].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_GOD, (uint32)bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("God Mode: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("God Mode: OFF",kMsgCheatConfirm); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetAmmo() +// +// PURPOSE: Gives full ammo +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetAmmo() +{ + s_CheatInfo[CHEAT_AMMO].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_AMMO, LTTRUE); + + g_pChatMsgs->AddMessage("You can never have too many bullets...",kMsgCheatConfirm); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetArmor() +// +// PURPOSE: Gives full armor +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetArmor() +{ + s_CheatInfo[CHEAT_ARMOR].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_ARMOR, LTTRUE); + + g_pChatMsgs->AddMessage("We got def star, we got def star!",kMsgCheatConfirm); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetHealth() +// +// PURPOSE: Gives full health +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetHealth(LTBOOL bPlaySound) +{ + s_CheatInfo[CHEAT_HEALTH].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_HEALTH, LTTRUE); + + g_pChatMsgs->AddMessage("Doctor Dentz!",kMsgCheatConfirm); + + if (bPlaySound) + { + g_pClientSoundMgr->PlayInterfaceSound("voice\\1025.wav"); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetClipMode() +// +// PURPOSE: Sets/resets Clip mode +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetClipMode(LTBOOL bMode) +{ +#ifdef _FINAL + // Can't do this in multiplayer. + if(IsMultiplayerGame()) + return; +#endif // _FINAL + + if (!g_pPlayerMgr) return; + + s_CheatInfo[CHEAT_CLIP].bActive = bMode; + + g_pPlayerMgr->SetSpectatorMode(bMode); + + // Tell the server + SendCheatMessage(CHEAT_CLIP, bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("Spectator mode enabled",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Spectator mode disabled",kMsgCheatConfirm); + } + + // If we were in invisible mode before changing to spectator mode + // change us back... + + if (!g_pPlayerMgr->IsSpectatorMode() && g_pPlayerMgr->IsInvisibleMode()) + { + SetInvisible(LTTRUE); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetInvisible() +// +// PURPOSE: Sets/resets invisibility +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetInvisible(LTBOOL bMode) +{ +#ifdef _FINAL + // Can't do this in multiplayer. + if(IsMultiplayerGame()) + return; +#endif // _FINAL + + // Don't ghost when in spectator mode... + + if (!g_pPlayerMgr || g_pPlayerMgr->IsSpectatorMode()) return; + + s_CheatInfo[CHEAT_INVISIBLE].bActive = bMode; + + g_pPlayerMgr->SetInvisibleMode(bMode); + + // Tell the server + SendCheatMessage(CHEAT_INVISIBLE, bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("I see dead people...", kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("I live...again.", kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Teleport() +// +// PURPOSE: Teleports to beginning of level +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Teleport() +{ + SendCheatMessage(CHEAT_TELEPORT, LTTRUE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetFullWeapons() +// +// PURPOSE: Give us all the weapons +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetFullWeapons() +{ + s_CheatInfo[CHEAT_FULL_WEAPONS].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_FULL_WEAPONS, LTTRUE); + + g_pChatMsgs->AddMessage("Lots of guns...",kMsgCheatConfirm); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetKFA() +// +// PURPOSE: Give us all weapons, ammo, armor, and health... +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetKFA() +{ + s_CheatInfo[CHEAT_KFA].bActive = LTTRUE; + + // Give us all weapons, ammo, armor, and health... + SetFullWeapons(); // Gives us all ammo too + SetHealth(LTFALSE); + SetArmor(); + + g_pChatMsgs->AddMessage("Knock em out the box Luke...",kMsgCheatConfirm); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::GetSkills() +// +// PURPOSE: Give us skill points +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::GetSkills() +{ + s_CheatInfo[CHEAT_SKILLZ].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_SKILLZ, 0); + + + g_pChatMsgs->AddMessage("You got mad skillz, d00d...",kMsgCheatConfirm); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetExitLevel() +// +// PURPOSE: Exit the current level +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetExitLevel() +{ + s_CheatInfo[CHEAT_EXITLEVEL].bActive = LTTRUE; + + // Tell the server + SendCheatMessage( CHEAT_EXITLEVEL, 0 ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::NextMission() +// +// PURPOSE: Exit the current mission +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::NextMission() +{ + s_CheatInfo[CHEAT_NEXTMISSION].bActive = LTTRUE; + + // Tell the server + SendCheatMessage( CHEAT_NEXTMISSION, 0 ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::BootPlayer() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::BootPlayer(CParsedMsg &cMsg) +{ + if (!IsMultiplayerGame()) return; + + CClientInfoMgr *pCIMgr = g_pGameClientShell->GetInterfaceMgr( )->GetClientInfoMgr(); + if (!pCIMgr) return; + + if( cMsg.GetArgCount() < 2 ) + return; + + // The full name of the player might be split between several + // arguments of the message so build the name from all arguments + // except the name of the actual cheat (Arg 1). + + char szPlayerName[MAX_PLAYER_NAME] = {0}; + cMsg.ReCreateMsg( szPlayerName, sizeof( szPlayerName ), 1 ); + + CLIENT_INFO* pInfo = pCIMgr->GetFirstClient(); + while (pInfo && stricmp(pInfo->sName.c_str(),szPlayerName) != 0) + pInfo = pInfo->pNext; + + if (pInfo) + { + + // Tell the server + SendCheatMessage( CHEAT_BOOT, pInfo->nID ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::ModSquad() +// +// PURPOSE: Give us all the mods +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::ModSquad() +{ + s_CheatInfo[CHEAT_MODSQUAD].bActive = LTTRUE; + + g_pChatMsgs->AddMessage("Groovy",kMsgCheatConfirm); + + // Tell the server + SendCheatMessage(CHEAT_MODSQUAD, LTTRUE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::FullGear() +// +// PURPOSE: Give us all gear +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::FullGear() +{ + s_CheatInfo[CHEAT_FULL_GEAR].bActive = LTTRUE; + + // Tell the server + SendCheatMessage(CHEAT_FULL_GEAR, LTTRUE); + + g_pChatMsgs->AddMessage("Gear! (as in 'Boy the Beatles sure are Gear!')",kMsgCheatConfirm); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetPos() +// +// PURPOSE: Toggle displaying of position on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetPos(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_POS].bActive = bMode; + + if (g_pGameClientShell) + { + g_pGameClientShell->ShowPlayerPos((bMode==LTTRUE)); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Show position enabled.",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Show position disabled.",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetCamPosRot() +// +// PURPOSE: Toggle displaying of camera pos/rot on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetCamPosRot(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_CAM_POSROT].bActive = bMode; + + if (g_pGameClientShell) + { + g_pGameClientShell->ShowCamPosRot((bMode==LTTRUE)); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Show Camera Pos/Rot enabled.",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Show Camera Pos/Rot disabled.",kMsgCheatConfirm); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::PosWeapon() +// +// PURPOSE: Toggle positioning of player view weapon on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::PosWeapon(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_POSWEAPON].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_POSWEAPON, bMode); + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_POSWEAPON); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust player-view weapon position: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust player-view weapon position: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::PosWeaponMuzzle() +// +// PURPOSE: Toggle positioning of player view weapon muzzle on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::PosWeaponMuzzle(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_POSWEAPON_MUZZLE].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_POSWEAPON_MUZZLE, bMode); + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_POSWEAPON_MUZZLE); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust player-view weapon muzzle position: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust player-view weapon muzzle position: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::WeaponBreachOffset() +// +// PURPOSE: Toggle positioning of player view breach offset on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::WeaponBreachOffset(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_WEAPON_BREACHOFFSET].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_WEAPON_BREACHOFFSET, bMode); + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_WEAPON_BREACHOFFSET); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust player-view weapon breach offset: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust player-view weapon breach offset: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::LightScale() +// +// PURPOSE: Toggle adjustment of light scale offset on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::LightScale(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_LIGHTSCALE].bActive = bMode; + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_LIGHTSCALE); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust Light Scale: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust Light Scale: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::LightAdd() +// +// PURPOSE: Toggle adjustment of light add offset on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::LightAdd(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_LIGHTADD].bActive = bMode; + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_LIGHTADD); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust Light Add: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust Light Add: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::FOV() +// +// PURPOSE: Toggle adjustment of FOV on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::FOV(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_FOV].bActive = bMode; + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_FOV); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust FOV: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust FOV: OFF",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Tears() +// +// PURPOSE: Toggle tears cheat on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Tears(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_TEARS].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_TEARS, bMode); + + if (bMode) + { + g_bInfiniteAmmo = true; + g_pChatMsgs->AddMessage("RAWWR!!!",kMsgCheatConfirm); + } + else + { + g_bInfiniteAmmo = false; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::RemoveAI() +// +// PURPOSE: Remove all AI in the level +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::RemoveAI(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_REMOVEAI].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_REMOVEAI, bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("Cheaters never prosper...",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Sheeze, you really ARE pathetic...",kMsgCheatConfirm); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::TriggerBox() +// +// PURPOSE: Toggle trigger boxes on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::TriggerBox(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_TRIGGERBOX].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_TRIGGERBOX, bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("Ah shucks, that takes all the fun out of it...",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("That's better sport!",kMsgCheatConfirm); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Pos1stCam() +// +// PURPOSE: Toggle adjusting 1st person camera on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Pos1stCam(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_POS1STCAM].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_POS1STCAM, bMode); + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_POS1STCAM); + } + + if (bMode) + { + g_pChatMsgs->AddMessage("Adjust 1st person camera offset: ON",kMsgCheatConfirm); + } + else + { + g_pChatMsgs->AddMessage("Adjust 1st person camera offset: OFF",kMsgCheatConfirm); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Snowmobile() +// +// PURPOSE: Spawn in a snowmobile +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Snowmobile(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_SNOWMOBILE].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_SNOWMOBILE, bMode); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::ChaseToggle() +// +// PURPOSE: Toggle 3rd person camera on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::ChaseToggle() +{ + // Tell the server + + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_CHASETOGGLE); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Version() +// +// PURPOSE: Display version info +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::Version() +{ + // Display the version info... + + g_pChatMsgs->AddMessage((char*)g_pVersionMgr->GetBuild(),kMsgCheatConfirm); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SetConsole +// +// PURPOSE: Enables the console. +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SetConsole( LTBOOL bMode ) +{ + s_CheatInfo[CHEAT_CONSOLE].bActive = bMode; + + WriteConsoleInt( "ConsoleEnable", bMode ? 1 : 0 ); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::GimmeGun() +// +// PURPOSE: Give the specific gun to the player +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::GimmeGun( CParsedMsg &cMsg ) +{ + if( !g_pWeaponMgr || cMsg.GetArgCount() < 2 ) + return; + + // The full name of the weapon might be split between several + // arguments of the message so build the name from all arguments + // except the name of the actual cheat (Arg 1). + + char szWeaponName[WMGR_MAX_NAME_LENGTH] = {0}; + cMsg.ReCreateMsg( szWeaponName, sizeof( szWeaponName ), 1 ); + + const WEAPON *pWeapon = LTNULL; + + if( (szWeaponName[0] >= '0' && szWeaponName[0] <= '9') && strlen(szWeaponName) < 4 ) + { + pWeapon = g_pWeaponMgr->GetWeapon( atoi( szWeaponName )); + } + else + { + pWeapon = g_pWeaponMgr->GetWeapon( szWeaponName ); + } + + char szMessage[256] = {0}; + + if( pWeapon ) + { + SendCheatMessage( CHEAT_GIMMEGUN, pWeapon->nId ); + + sprintf( szMessage, "Giving weapon '%s' ID: %i", pWeapon->szName, pWeapon->nId ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } + else + { + sprintf( szMessage, "Weapon '%s' does not exist!", szWeaponName ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::Gimmemod() +// +// PURPOSE: Give the specific mod to the player +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::GimmeMod( CParsedMsg &cMsg ) +{ + if( !g_pWeaponMgr || cMsg.GetArgCount() < 2 ) + return; + + // The full name of the mod might be split between several + // arguments of the message so build the name from all arguments + // except the name of the actual cheat (Arg 1). + + char szModName[WMGR_MAX_NAME_LENGTH] = {0}; + cMsg.ReCreateMsg( szModName, sizeof( szModName ), 1 ); + + const MOD *pMod = LTNULL; + + if( (szModName[0] >= '0' && szModName[0] <= '9') && strlen(szModName) < 4 ) + { + pMod = g_pWeaponMgr->GetMod( atoi( szModName )); + } + else + { + pMod = g_pWeaponMgr->GetMod( szModName ); + } + + char szMessage[256] = {0}; + + if( pMod ) + { + SendCheatMessage( CHEAT_GIMMEMOD, pMod->nId ); + + sprintf( szMessage, "Giving mod '%s' ID: %i", pMod->szName, pMod->nId ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } + else + { + sprintf( szMessage, "Mod '%s' does not exist!", szModName ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::GimmeGear() +// +// PURPOSE: Give the specific gear to the player +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::GimmeGear( CParsedMsg &cMsg ) +{ + if( !g_pWeaponMgr || cMsg.GetArgCount() < 2 ) + return; + + // The full name of the gear might be split between several + // arguments of the message so build the name from all arguments + // except the name of the actual cheat (Arg 1). + + char szGearName[WMGR_MAX_NAME_LENGTH] = {0}; + cMsg.ReCreateMsg( szGearName, sizeof( szGearName ), 1 ); + + const GEAR *pGear = LTNULL; + + if( (szGearName[0] >= '0' && szGearName[0] <= '9') && strlen(szGearName) < 4 ) + { + pGear = g_pWeaponMgr->GetGear( atoi( szGearName )); + } + else + { + pGear = g_pWeaponMgr->GetGear( szGearName ); + } + + char szMessage[256] = {0}; + + if( pGear ) + { + SendCheatMessage( CHEAT_GIMMEGEAR, pGear->nId ); + + sprintf( szMessage, "Giving gear '%s' ID: %i", pGear->szName, pGear->nId ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } + else + { + sprintf( szMessage, "Gear '%s' does not exist!", szGearName ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::GimmeAmmo() +// +// PURPOSE: Give the specific ammo to the player +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::GimmeAmmo( CParsedMsg &cMsg ) +{ + if( !g_pWeaponMgr || cMsg.GetArgCount() < 2 ) + return; + + // The full name of the ammo might be split between several + // arguments of the message so build the name from all arguments + // except the name of the actual cheat (Arg 1). + + char szAmmoName[WMGR_MAX_NAME_LENGTH] = {0}; + cMsg.ReCreateMsg( szAmmoName, sizeof( szAmmoName ), 1 ); + + const AMMO *pAmmo = LTNULL; + + if( (szAmmoName[0] >= '0' && szAmmoName[0] <= '9') && strlen(szAmmoName) < 4 ) + { + pAmmo = g_pWeaponMgr->GetAmmo( atoi( szAmmoName )); + } + else + { + pAmmo = g_pWeaponMgr->GetAmmo( szAmmoName ); + } + + char szMessage[256] = {0}; + + if( pAmmo ) + { + SendCheatMessage( CHEAT_GIMMEAMMO, pAmmo->nId ); + + sprintf( szMessage, "Giving ammo '%s' ID: %i", pAmmo->szName, pAmmo->nId ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } + else + { + sprintf( szMessage, "Ammo '%s' does not exist!", szAmmoName ); + g_pChatMsgs->AddMessage( szMessage, kMsgCheatConfirm ); + } +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::ToggleEndgameFlag() +// +// PURPOSE: Toggle the registry entry indicating the player has completed the game... +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::ToggleEndgameFlag() +{ + + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + uint32 nDone = pRegMgr->Get("EndGame",0); + pRegMgr->Set("EndGame",!nDone); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::BodyGolfing() +// +// PURPOSE: Toggle bodygolfing cheat on/off +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::BodyGolfing(LTBOOL bMode) +{ + s_CheatInfo[CHEAT_BODYGOLFING].bActive = bMode; + + // Tell the server + SendCheatMessage(CHEAT_BODYGOLFING, bMode); + + if (bMode) + { + g_pChatMsgs->AddMessage("FORE!",kMsgCheatConfirm); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCheatMgr::SaveVehicle() +// +// PURPOSE: Save the info for the current vehicle being ridden... +// +// ----------------------------------------------------------------------- // + +void CCheatMgr::SaveVehicle( ) +{ + if( !g_pMoveMgr || !g_pMoveMgr->GetVehicleMgr() ) + return; + + g_pMoveMgr->GetVehicleMgr()->SaveVehicleInfo(); +} diff --git a/Jack/ClientShellDLL/CheatMgr.h b/Jack/ClientShellDLL/CheatMgr.h new file mode 100644 index 00000000..29088f45 --- /dev/null +++ b/Jack/ClientShellDLL/CheatMgr.h @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------- +// +// MODULE : CheatMgr.h +// +// PURPOSE : Cheat system +// +// CREATED : 10/22/97 - as part of Blood2 messaging system +// +// REVISED : 10/16/01 - ripped out of MessageMgr +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +//------------------------------------------------------------------------- + +#ifndef __CHEAT_MGR_H__ +#define __CHEAT_MGR_H__ + +#include "iclientshell.h" +#include "iltclient.h" +#include "CheatDefs.h" +#include "ParsedMsg.h" + +// Cheat Manager class +class CCheatMgr +{ + public: + CCheatMgr() {} + + void Init(); + + LTBOOL Check( CParsedMsg &cMsg ); + LTBOOL Check( const char* pMsg ) { return (pMsg && pMsg[0] ? Check(CParsedMsg(1, (const char * const *)&pMsg)) : LTFALSE); } + void ClearCheater() { m_bPlayerCheated = LTFALSE; } + LTBOOL IsCheater() { return m_bPlayerCheated; } + + bool Process( CheatCode nCheatCode, CParsedMsg &cMsg ); + + private: + + void SendCheatMessage( CheatCode nCheatCode, uint32 nData ); + + + struct CheatInfo + { + char *pzText; + LTBOOL bActive; + }; + + static CheatInfo s_CheatInfo[]; + + static LTBOOL m_bPlayerCheated; + + // Retail Cheats + void SetGodMode(LTBOOL bMode); + void SetAmmo(); + void SetArmor(); + void SetHealth(LTBOOL bPlaySound=LTTRUE); + void SetInvisible(LTBOOL bMode); + void SetPos(LTBOOL bMode); + void SetKFA(); + void SetFullWeapons(); + void Tears(LTBOOL bMode); + void Snowmobile(LTBOOL bMode); + void ModSquad(); + void FullGear(); + void SetExitLevel(); + void NextMission(); + void BootPlayer( CParsedMsg &cMsg ); + void Version(); + void GimmeGun( CParsedMsg &cMsg ); + void GimmeMod( CParsedMsg &cMsg ); + void GimmeGear( CParsedMsg &cMsg ); + void GimmeAmmo( CParsedMsg &cMsg ); + void SetConsole( LTBOOL bMode ); + void GetSkills(); + void ToggleEndgameFlag(); + void BodyGolfing(LTBOOL bMode); + + // Development only cheats... + void SetClipMode(LTBOOL bMode); + void Teleport(); + void PosWeapon(LTBOOL bMode); + void PosWeaponMuzzle(LTBOOL bMode); + void WeaponBreachOffset(LTBOOL bMode); + void LightScale(LTBOOL bMode); + void LightAdd(LTBOOL bMode); + void FOV(LTBOOL bMode); + void RemoveAI(LTBOOL bMode); + void TriggerBox(LTBOOL bMode); + void Pos1stCam(LTBOOL bMode); + void SetCamPosRot(LTBOOL bMode); + void ChaseToggle(); + void SaveVehicle(); +}; + +extern CCheatMgr* g_pCheatMgr; + +#endif // __CHEAT_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientButeMgr.cpp b/Jack/ClientShellDLL/ClientButeMgr.cpp new file mode 100644 index 00000000..b64b68fa --- /dev/null +++ b/Jack/ClientShellDLL/ClientButeMgr.cpp @@ -0,0 +1,714 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientButeMgr.cpp +// +// PURPOSE : ClientButeMgr implementation - Client-side attributes +// +// CREATED : 2/02/99 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientButeMgr.h" + +#define CBMGR_CHEATS_TAG "Cheats" +#define CBMGR_CHEATS_ATTRIBUTE_NAME "Cheat" + +#define CBMGR_GAME_TAG "Game" +#define CBMGR_CAMERA_TAG "Camera" +#define CBMGR_REVERB_TAG "Reverb" +#define CBMGR_WEATHER_TAG "Weather" +#define CBMGR_SPECIALFX_TAG "SpecialFX" +#define CBMGR_BREATHFX_TAG "BreathFX" +#define CBMGR_INTERFACE_TAG "Interface" + +#define CBMGR_WORLD_TAG "World" +#define CBMGR_WORLD_SINGLE_PATH "SinglePath" +#define CBMGR_WORLD_MULTI_PATH "MultiPath" + +#define CBMGR_DEBUGKEYS_TAG "DebugKey" +#define CBMGR_DEBUGKEYS_ATTRIBUTE_NAME "Name" +#define CBMGR_DEBUGKEYS_ATTRIBUTE_KEY "Key" +#define CBMGR_DEBUGKEYS_ATTRIBUTE_MODIFIER "Modifier" +#define CBMGR_DEBUGKEYS_ATTRIBUTE_STRING "String" +#define CBMGR_DEBUGKEYS_ATTRIBUTE_TITLE "Title" + +#define CBMGR_GLOW_RENDERSTYLE_MAP "GlowRSMap" +#define CBMGR_GLOW_DEFAULT_RENDERSTYLE "GlowDefaultRS" +#define CBMGR_NO_GLOW_RENDERSTYLE "GlowNoGlowRS" +#define CBMGR_GLOW_MAP_RENDERSTYLE "GlowMapRS" +#define CBMGR_GLOW_MAP_RENDERSTYLETO "GlowMapRSTo" + + +static char s_aTagName[30]; +static char s_aAttName[100]; + +CClientButeMgr* g_pClientButeMgr = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::CClientButeMgr() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CClientButeMgr::CClientButeMgr() +{ + m_nNumCheatAttributes = 0; + m_nNumSingleWorldPaths = 0; + m_nNumMultiWorldPaths = 0; + + m_nNumDebugKeys = 0; + m_aNumDebugLevels = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::~CClientButeMgr() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CClientButeMgr::~CClientButeMgr() +{ + Term(); + + delete[] m_aNumDebugLevels; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CClientButeMgr::Init(const char* szAttributeFile) +{ + if (g_pClientButeMgr || !szAttributeFile) return LTFALSE; + if (!Parse(szAttributeFile)) return LTFALSE; + + + // Set up global pointer... + + g_pClientButeMgr = this; + + + // Determine how many cheat attributes there are... + + m_nNumCheatAttributes = 0; + sprintf(s_aAttName, "%s%d", CBMGR_CHEATS_ATTRIBUTE_NAME, m_nNumCheatAttributes); + + while (m_buteMgr.Exist(CBMGR_CHEATS_TAG, s_aAttName)) + { + m_nNumCheatAttributes++; + sprintf(s_aAttName, "%s%d", CBMGR_CHEATS_ATTRIBUTE_NAME, m_nNumCheatAttributes); + } + + m_nNumSingleWorldPaths = 0; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_SINGLE_PATH, m_nNumSingleWorldPaths); + while (m_buteMgr.Exist(CBMGR_WORLD_TAG, s_aAttName)) + { + m_nNumSingleWorldPaths++; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_SINGLE_PATH, m_nNumSingleWorldPaths); + } + + m_nNumMultiWorldPaths = 0; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_MULTI_PATH, m_nNumMultiWorldPaths); + while (m_buteMgr.Exist(CBMGR_WORLD_TAG, s_aAttName)) + { + m_nNumMultiWorldPaths++; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_MULTI_PATH, m_nNumMultiWorldPaths); + } + + + // Determine how many debug key attributes there are... + + m_nNumDebugKeys = 0; + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, m_nNumDebugKeys); + + while (m_buteMgr.Exist(s_aTagName)) + { + m_nNumDebugKeys++; + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, m_nNumDebugKeys); + } + + m_aNumDebugLevels = new int[m_nNumDebugKeys]; + memset(m_aNumDebugLevels, 0, sizeof(int)*m_nNumDebugKeys); + for( int i = 0; i < m_nNumDebugKeys; ++i ) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, i ); + sprintf(s_aAttName, "%s%d", CBMGR_DEBUGKEYS_ATTRIBUTE_STRING, m_aNumDebugLevels[i] ); + + while (m_buteMgr.Exist(s_aTagName, s_aAttName)) + { + ++m_aNumDebugLevels[i]; + sprintf(s_aAttName, "%s%d", CBMGR_DEBUGKEYS_ATTRIBUTE_STRING, m_aNumDebugLevels[i] ); + } + } + + //we need to setup the glow mapping table here + m_nNumGlowMappings = 0; + while(1) + { + sprintf(s_aAttName, "%s%d", CBMGR_GLOW_MAP_RENDERSTYLE, m_nNumGlowMappings); + if( m_buteMgr.Exist(CBMGR_GLOW_RENDERSTYLE_MAP, s_aAttName)) + { + sprintf(s_aAttName, "%s%d", CBMGR_GLOW_MAP_RENDERSTYLETO, m_nNumGlowMappings); + if(m_buteMgr.Exist(CBMGR_GLOW_RENDERSTYLE_MAP, s_aAttName)) + { + m_nNumGlowMappings++; + } + else + break; + } + else + break; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::Term() +// +// PURPOSE: Clean up. +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::Term() +{ + g_pClientButeMgr = LTNULL; +} + + +///////////////////////////////////////////////////////////////////////////// +// +// C H E A T Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetCheat() +// +// PURPOSE: Get the cheat specified by the number +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetCheat(uint8 nCheatNum, char *pBuf, uint16 nBufLen) +{ + pBuf[0] = LTNULL; + if (nCheatNum < m_nNumCheatAttributes) + { + sprintf(s_aAttName, "%s%d", CBMGR_CHEATS_ATTRIBUTE_NAME, nCheatNum); + m_buteMgr.GetString(CBMGR_CHEATS_TAG, s_aAttName, "", pBuf, nBufLen); + } + +} + + +///////////////////////////////////////////////////////////////////////////// +// +// G A M E Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetGameAttributeInt() +// +// PURPOSE: Get a game attribute as an int +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetGameAttributeInt(char* pAttribute) +{ + if (!pAttribute) return 0; + + return m_buteMgr.GetInt(CBMGR_GAME_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetGameAttributeFloat() +// +// PURPOSE: Get a game attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetGameAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_GAME_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetGameAttributeString() +// +// PURPOSE: Get a game attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetGameAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + if (!pAttribute) + { + pBuf[0] = LTNULL; + return; + } + + m_buteMgr.GetString(CBMGR_GAME_TAG, pAttribute, "", pBuf, nBufLen); +} + + +///////////////////////////////////////////////////////////////////////////// +// +// C A M E R A Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetCameraAttributeInt() +// +// PURPOSE: Get a camera attribute as an int +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetCameraAttributeInt(char* pAttribute) +{ + if (!pAttribute) return 0; + + return m_buteMgr.GetInt(CBMGR_CAMERA_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetCameraAttributeFloat() +// +// PURPOSE: Get a camera attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetCameraAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_CAMERA_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetCameraAttributeString() +// +// PURPOSE: Get a camera attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetCameraAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + if (!pAttribute) + { + pBuf[0] = LTNULL; + return; + } + + m_buteMgr.GetString(CBMGR_CAMERA_TAG, pAttribute, "", pBuf, nBufLen); +} + + + + +///////////////////////////////////////////////////////////////////////////// +// +// R E V E R B Related functions... +// +///////////////////////////////////////////////////////////////////////////// + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetReverbAttributeFloat() +// +// PURPOSE: Get a reverb attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetReverbAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_REVERB_TAG, pAttribute); +} + + + + +///////////////////////////////////////////////////////////////////////////// +// +// W E A T H E R Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetWeatherAttributeFloat() +// +// PURPOSE: Get a weather attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetWeatherAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_WEATHER_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetWeatherAttributeString() +// +// PURPOSE: Get a weather attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetWeatherAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + pBuf[0] = LTNULL; + if (!pAttribute) return; + + m_buteMgr.GetString(CBMGR_WEATHER_TAG, pAttribute, "", pBuf, nBufLen); +} + + +///////////////////////////////////////////////////////////////////////////// +// +// S P E C I A L F X Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetSpecialFXAttributeFloat() +// +// PURPOSE: Get a special fx attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetSpecialFXAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_SPECIALFX_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetSpecialFXAttributeString() +// +// PURPOSE: Get a special fx attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetSpecialFXAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + pBuf[0] = LTNULL; + if (!pAttribute) return; + + m_buteMgr.GetString(CBMGR_SPECIALFX_TAG, pAttribute, "", pBuf, nBufLen); +} + + + +///////////////////////////////////////////////////////////////////////////// +// +// B R E A T H F X Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetBreathFXAttributeFloat() +// +// PURPOSE: Get a breath fx attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetBreathFXAttributeFloat(char* pAttribute) +{ + if (!pAttribute) return 0.0f; + + return (float) m_buteMgr.GetDouble(CBMGR_BREATHFX_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetBreathFXAttributeInt() +// +// PURPOSE: Get a breath fx attribute as a integer +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetBreathFXAttributeInt(char* pAttribute) +{ + if (!pAttribute) return 0; + + return m_buteMgr.GetInt(CBMGR_BREATHFX_TAG, pAttribute); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetBreathFXAttributeString() +// +// PURPOSE: Get a breath fx attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetBreathFXAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + pBuf[0] = LTNULL; + if (!pAttribute) return; + + m_buteMgr.GetString(CBMGR_BREATHFX_TAG, pAttribute, "", pBuf, nBufLen); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetBreathFXAttributeVector() +// +// PURPOSE: Get a breath fx attribute as a vector +// +// ----------------------------------------------------------------------- // + +LTVector CClientButeMgr::GetBreathFXAttributeVector(char* pAttribute) +{ + return m_buteMgr.GetVector(CBMGR_BREATHFX_TAG, pAttribute); +} + + + +///////////////////////////////////////////////////////////////////////////// +// +// I N T E R F A C E Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetInterfaceAttributeString() +// +// PURPOSE: Get a interface attribute as a string +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetInterfaceAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen) +{ + if (!pAttribute) return; + + m_buteMgr.GetString(CBMGR_INTERFACE_TAG, pAttribute, pBuf, nBufLen); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetInterfaceAttributeFloat() +// +// PURPOSE: Get a interface attribute as a float +// +// ----------------------------------------------------------------------- // + +float CClientButeMgr::GetInterfaceAttributeFloat(char* pAttribute, float fDef) +{ + if (!pAttribute) return fDef; + + return (float)m_buteMgr.GetDouble(CBMGR_INTERFACE_TAG, pAttribute, fDef); +} + + +///////////////////////////////////////////////////////////////////////////// +// +// W O R L D Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +void CClientButeMgr::GetWorldPath(uint8 nPath, char* pBuf, int nBufLen, LTBOOL bSingle) +{ + if (nPath < 0) return; + + if (bSingle) + { + if (nPath > m_nNumSingleWorldPaths) return; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_SINGLE_PATH, nPath); + } + else + { + if (nPath > m_nNumMultiWorldPaths) return; + sprintf(s_aAttName,"%s%d",CBMGR_WORLD_MULTI_PATH, nPath); + } + + + m_buteMgr.GetString(CBMGR_WORLD_TAG, s_aAttName, "", pBuf, nBufLen); + +} + + +///////////////////////////////////////////////////////////////////////////// +// +// D E B U G Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetNumDebugLevels() +// +// PURPOSE: Get the number of debug levels for this key. +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetNumDebugLevels(uint8 nDebugKey) const +{ + if( nDebugKey < m_nNumDebugKeys ) + { + return m_aNumDebugLevels[nDebugKey]; + } + + return -1; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetDebugName() +// +// PURPOSE: Get the key associated with this debug level +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetDebugName(uint8 nDebugKey, char * pBuf, uint16 nBufLen) +{ + if (nDebugKey < m_nNumDebugKeys) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, nDebugKey); + m_buteMgr.GetString(s_aTagName, CBMGR_DEBUGKEYS_ATTRIBUTE_NAME, "", pBuf, nBufLen); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetDebugKeyId() +// +// PURPOSE: Get the key id +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetDebugKeyId(uint8 nDebugKey) +{ + int nResult = -1; + + if (nDebugKey < m_nNumDebugKeys) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, nDebugKey); + nResult = m_buteMgr.GetInt(s_aTagName, CBMGR_DEBUGKEYS_ATTRIBUTE_KEY, -1 ); + } + + return nResult; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetDebugModifierId() +// +// PURPOSE: Get the modifier id +// +// ----------------------------------------------------------------------- // + +int CClientButeMgr::GetDebugModifierId(uint8 nDebugKey) +{ + int nResult = -1; + + if (nDebugKey < m_nNumDebugKeys) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, nDebugKey); + nResult = m_buteMgr.GetInt(s_aTagName, CBMGR_DEBUGKEYS_ATTRIBUTE_MODIFIER, -1 ); + } + + return nResult; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetDebugString() +// +// PURPOSE: Get the console string associated with this debug level +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetDebugString(uint8 nDebugKey, uint8 nDebugLevel, char * pBuf, uint16 nBufLen) +{ + if (nDebugKey < m_nNumDebugKeys) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, nDebugKey); + + if( nDebugLevel < GetNumDebugLevels(nDebugKey) ) + { + sprintf(s_aAttName, "%s%d", CBMGR_DEBUGKEYS_ATTRIBUTE_STRING, nDebugLevel); + m_buteMgr.GetString(s_aTagName, s_aAttName, "", pBuf, nBufLen); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientButeMgr::GetDebugTitle() +// +// PURPOSE: Get the message string associated with this debug level +// +// ----------------------------------------------------------------------- // + +void CClientButeMgr::GetDebugTitle(uint8 nDebugKey, uint8 nDebugLevel, char * pBuf, uint16 nBufLen) +{ + if (nDebugKey < m_nNumDebugKeys) + { + sprintf(s_aTagName, "%s%d", CBMGR_DEBUGKEYS_TAG, nDebugKey); + + if( nDebugLevel < GetNumDebugLevels(nDebugKey) ) + { + sprintf(s_aAttName, "%s%d", CBMGR_DEBUGKEYS_ATTRIBUTE_TITLE, nDebugLevel); + m_buteMgr.GetString(s_aTagName, s_aAttName, "", pBuf, nBufLen); + } + } +} + +///////////////////////////////////////////////////////////////////////////// +// +// Screen Glow Related functions... +// +///////////////////////////////////////////////////////////////////////////// + +void CClientButeMgr::GetDefaultGlowRS(char* pBuf, uint16 nBufLen) +{ + m_buteMgr.GetString(CBMGR_GLOW_RENDERSTYLE_MAP, CBMGR_GLOW_DEFAULT_RENDERSTYLE, "", pBuf, nBufLen); +} + +void CClientButeMgr::GetNoGlowRS(char* pBuf, uint16 nBufLen) +{ + m_buteMgr.GetString(CBMGR_GLOW_RENDERSTYLE_MAP, CBMGR_NO_GLOW_RENDERSTYLE, "", pBuf, nBufLen); +} + +void CClientButeMgr::GetGlowMappingRS(uint32 nMapping, char* pMapBuf, uint16 nMapLen, char* pMapToBuf, uint16 nMapToLen) +{ + sprintf(s_aAttName, "%s%d", CBMGR_GLOW_MAP_RENDERSTYLE, nMapping); + m_buteMgr.GetString(CBMGR_GLOW_RENDERSTYLE_MAP, s_aAttName, "", pMapBuf, nMapLen); + + sprintf(s_aAttName, "%s%d", CBMGR_GLOW_MAP_RENDERSTYLETO, nMapping); + m_buteMgr.GetString(CBMGR_GLOW_RENDERSTYLE_MAP, s_aAttName, "", pMapToBuf, nMapToLen); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientButeMgr.h b/Jack/ClientShellDLL/ClientButeMgr.h new file mode 100644 index 00000000..8dc6a107 --- /dev/null +++ b/Jack/ClientShellDLL/ClientButeMgr.h @@ -0,0 +1,97 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientButeMgr.h +// +// PURPOSE : ClientButeMgr definition - Client-side attributes +// +// CREATED : 2/02/99 +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENT_BUTE_MGR_H__ +#define __CLIENT_BUTE_MGR_H__ + +#include "GameButeMgr.h" +#include "ltbasetypes.h" + + +#define CBMGR_DEFAULT_FILE "Attributes\\ClientButes.txt" + +class CClientButeMgr; +extern CClientButeMgr* g_pClientButeMgr; + +class CClientButeMgr : public CGameButeMgr +{ + public : + + CClientButeMgr(); + ~CClientButeMgr(); + + LTBOOL Init(const char* szAttributeFile=CBMGR_DEFAULT_FILE); + void Term(); + + LTBOOL WriteFile() { return m_buteMgr.Save(); } + void Reload() { m_buteMgr.Parse(m_strAttributeFile); } + + int GetNumCheatAttributes() const { return m_nNumCheatAttributes; } + void GetCheat(uint8 nCheatNum, char *pBuf, uint16 nBufLen); + + float GetReverbAttributeFloat(char* pAttribute); + + int GetCameraAttributeInt(char* pAttribute); + float GetCameraAttributeFloat(char* pAttribute); + void GetCameraAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + + int GetGameAttributeInt(char* pAttribute); + float GetGameAttributeFloat(char* pAttribute); + void GetGameAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + + float GetWeatherAttributeFloat(char* pAttribute); + void GetWeatherAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + + float GetSpecialFXAttributeFloat(char* pAttribute); + void GetSpecialFXAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + + float GetBreathFXAttributeFloat(char* pAttribute); + int GetBreathFXAttributeInt(char* pAttribute); + void GetBreathFXAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + LTVector GetBreathFXAttributeVector(char* pAttribute); + + void GetInterfaceAttributeString(char* pAttribute, char *pBuf, uint16 nBufLen); + float GetInterfaceAttributeFloat(char* pAttribute, float fDef); + + int GetNumSingleWorldPaths() const { return m_nNumSingleWorldPaths; } + int GetNumMultiWorldPaths() const { return m_nNumMultiWorldPaths; } + void GetWorldPath(uint8 nPath, char* pBuf, int nBufLen, LTBOOL bSingle = LTTRUE); + + int GetNumDebugKeys() const { return m_nNumDebugKeys; } + int GetNumDebugLevels(uint8 nDebugKey) const; + int GetDebugKeyId(uint8 nDebugKey); + int GetDebugModifierId(uint8 nDebugKey); + void GetDebugName(uint8 nDebugKey, char * pBuf, uint16 nBufLen); + void GetDebugString(uint8 nDebugKey, uint8 nLevel, char * pBuf, uint16 nBufLen); + void GetDebugTitle(uint8 nDebugKey, uint8 nLevel, char * pBuf, uint16 nBufLen); + + uint32 GetNumGlowMappings() const { return m_nNumGlowMappings; } + void GetDefaultGlowRS(char* pBuf, uint16 nBufLen); + void GetNoGlowRS(char* pBuf, uint16 nBufLen); + void GetGlowMappingRS(uint32 nMapping, char* pMapBuf, uint16 nMapLen, char* pMapToBuf, uint16 nMapToLen); + + protected : + + private : + + uint32 m_nNumGlowMappings; + + uint8 m_nNumCheatAttributes; + int m_nNumSingleWorldPaths; + int m_nNumMultiWorldPaths; + + int m_nNumDebugKeys; + int* m_aNumDebugLevels; + +}; + + + +#endif // __CLIENT_BUTE_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientFXDB.cpp b/Jack/ClientShellDLL/ClientFXDB.cpp new file mode 100644 index 00000000..aee4f836 --- /dev/null +++ b/Jack/ClientShellDLL/ClientFXDB.cpp @@ -0,0 +1,929 @@ +#include "stdafx.h" +#include "FxFlags.h" +#include "FxDefs.h" +#include "iltmessage.h" +#include "iltdrawprim.h" +#include "ClientFXDB.h" +#include "CMoveMgr.h" +#include "WinUtil.h" + +#define MAX_TAG_SIZE (64) +#define MAX_LINE_SIZE (2048) + +typedef int (*FX_GETNUM)(); +typedef FX_REF (*FX_GETREF)(int); + +//----------------------------------------------------------------- +// DLL loading data +//----------------------------------------------------------------- +#ifdef _WIN32 + #include "windows.h" + +namespace +{ + char sDLLTmpFile[MAX_PATH + 1] = ""; +} + +#endif + +//----------------------------------------------------------------- +// Link status... +//----------------------------------------------------------------- +struct LINK_STATUS +{ + bool m_bLinked; + uint32 m_dwLinkedID; + char m_sLinkedNodeName[32]; +}; + +//----------------------------------------------------------------- +// Helpers to read from a text .fxf file... +//----------------------------------------------------------------- + +template< typename T> +inline void ReadTextFile( ILTStream *pStream, const char *szFormat, T *t1, T *t2 = LTNULL, T *t3 = LTNULL, T *t4 = LTNULL, T *t5 = LTNULL ) +{ + char szTag[MAX_TAG_SIZE] = {0}; + char szLine[MAX_LINE_SIZE] = {0}; + + // Save the current pos before it moves when we read + + uint32 dwPos = pStream->GetPos(); + uint32 dwLen = pStream->GetLen(); + + if( LT_OK != pStream->Read( szLine, ((ARRAY_LEN( szLine ) + dwPos) > dwLen ? dwLen - dwPos : ARRAY_LEN( szLine ) ))) + { + g_pLTClient->CPrint( "A line in the *.fxf file is too long!!" ); + } + + // Only get the info we want, one line at a time... + + strtok( szLine, "\n" ); + sscanf( szLine, szFormat, szTag, t1, t2, t3, t4, t5 ); + + if( LT_OK != pStream->SeekTo( dwPos + strlen( szLine ) )) + { + g_pLTClient->CPrint( "Couldn't set the file ptr position for *.fxf file" ); + } +} + + +//----------------------------------------------------------------- +// Helper function to setup keys +// +// Given a key data structure as well as a list of +// properties, it will pull all of the data for the +// key out of the property list and setup the key +// with it. +// +//------------------------------------------------------------------ +static void SetupKey(FX_KEY* pKey, FX_PROP* pPropList, uint32 nNumProps) +{ + //go through the property list and parse in all the known variables and + //count up how many of each key type we have + for(uint32 nCurrProp = 0; nCurrProp < nNumProps; nCurrProp++) + { + FX_PROP& fxProp = pPropList[nCurrProp]; + + if( !_stricmp( fxProp.m_sName, FXPROP_DISABLEATDIST )) + { + pKey->m_bDisableAtDistance = fxProp.GetComboVal() ? true : false; + } + else if( !_stricmp( fxProp.m_sName, FXPROP_MAXSTARTOFFSET )) + { + pKey->m_fMaxStartOffset = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_RANDOMSTARTOFFSET )) + { + pKey->m_bRandomStartOffset = fxProp.GetComboVal() ? true : false; + } + else if( !_stricmp( fxProp.m_sName, FXPROP_STARTOFFSETINTERVAL )) + { + pKey->m_fStartOffsetInterval = fxProp.GetFloatVal(); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_SMOOTHSHUTDOWN )) + { + pKey->m_bSmoothShutdown = fxProp.GetComboVal() ? true : false; + } + else if( !_stricmp( fxProp.m_sName, FXPROP_DETAILLEVEL )) + { + pKey->m_nDetailLevel = fxProp.GetComboVal(); + assert((pKey->m_nDetailLevel < FX_NUM_DETAIL_SETTINGS) && "Found an invalid detail setting"); + } + else if( !_stricmp( fxProp.m_sName, FXPROP_ISGORE )) + { + switch( fxProp.GetComboVal( )) + { + default: + case 0: + pKey->m_eGoreSetting = FX_KEY::eGoreSetting_No; + break; + case 1: + pKey->m_eGoreSetting = FX_KEY::eGoreSetting_Yes; + break; + case 2: + pKey->m_eGoreSetting = FX_KEY::eGoreSetting_LowViolenceOnly; + break; + } + } + } +} + +//----------------------------------------------------------------- +// CClientFXDB construction +//----------------------------------------------------------------- +CClientFXDB::CClientFXDB() +{ + m_nNumEffectTypes = 0; + m_pEffectTypes = NULL; + m_hDLLInst = NULL; + + m_pfnSetPlayer = NULL; + m_pfnSetAppFocus = NULL; + m_pfnDeleteFX = NULL; + m_pfnSetCreateFunction = NULL; + +} + +CClientFXDB::~CClientFXDB() +{ + Term(); +} + +bool CClientFXDB::Init(ILTClient* pLTClient) +{ + // Try and load our ClientFX dll (.fxd) + if( !LoadFxDll() ) + return false; + + // Search for and load ALL valid GroupFX (.fxf) + // + + // Obtain a snapshot of our ClientFX directory + FileEntry *pFiles = pLTClient->GetFileList("ClientFX"); + if( !pFiles ) + return false; + + FileEntry *pEntry = pFiles; + while( pEntry ) + { + // Ignore directorys... only look at files + if( pEntry->m_Type == TYPE_FILE ) + { + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + char fname[_MAX_FNAME]; + char ext[_MAX_EXT]; + + _splitpath( pEntry->m_pFullFilename, drive, dir, fname, ext ); + + // Is this a ClientFx file? + if( !stricmp( ".fxf", ext ) ) + { + // Try and load it + if( !LoadFxGroups( pLTClient, pEntry->m_pFullFilename ) ) + { + return false; + } + } + } + + pEntry = pEntry->m_pNext; + } + + // Free the List we obtained + g_pLTClient->FreeFileList( pFiles ); + + //success + return true; +} + +void CClientFXDB::Term() +{ + //empty out our types + debug_deletea(m_pEffectTypes); + m_pEffectTypes = NULL; + m_nNumEffectTypes = 0; + + // Delete all the FX groups + CLinkListNode *pGroupNode = m_collGroupFX.GetHead(); + + while (pGroupNode) + { + //delete all the key property lists + for(uint32 nCurrKey = 0; nCurrKey < pGroupNode->m_Data->m_nNumKeys; nCurrKey++) + { + if(m_pfnFreePropList) + { + m_pfnFreePropList(pGroupNode->m_Data->m_pKeys[nCurrKey].m_pProps); + pGroupNode->m_Data->m_pKeys[nCurrKey].m_pProps = NULL; + } + } + + debug_delete( pGroupNode->m_Data ); + pGroupNode = pGroupNode->m_pNext; + } + m_collGroupFX.RemoveAll(); + + UnloadFxDll(); +} + +//----------------------------------------------------------------- +// CClientFXDB DLL management +//----------------------------------------------------------------- + +//loads the effect DLL +bool CClientFXDB::LoadFxDll() +{ + +#ifdef WIN32 + + //make sure that we don't have any other dll's already bound + UnloadFxDll(); + + // Load the library + const char *sName = "ClientFX.fxd"; + char sTmp[MAX_PATH + 1]; + LTSNPrintF(sTmp, sizeof(sTmp), "Game\\%s", sName); + + //if we have a local copy use it + if( CWinUtil::FileExist( sTmp )) + { + + m_hDLLInst = ::LoadLibrary(sTmp); + if (!m_hDLLInst) + return false; + } + else + { + //otherwise copy it out of the rez file + if (!strlen(sDLLTmpFile)) + { + DWORD sz = ::GetTempPath(sizeof(sTmp),sTmp); + if (sz > sizeof(sTmp)) + return false; + + ::GetTempFileName(sTmp,"cfx",0, sDLLTmpFile); + + if (LT_OK != g_pLTClient->CopyFile(sName,sDLLTmpFile)) + return false; + } + + + + m_hDLLInst = ::LoadLibrary(sDLLTmpFile); + if (!m_hDLLInst) + return false; + } + + //merge our interface database with the database in the DLL we just loaded. + TSetMasterFn pSetMasterFn = (TSetMasterFn)GetProcAddress(m_hDLLInst, "SetMasterDatabase"); + //check if the function existed. + if (pSetMasterFn != NULL) + { + //merge our database with theirs + pSetMasterFn(GetMasterDatabase()); + } + + // Attempt to retrieve the FX reference structure function + + FX_GETNUM pfnNum = (FX_GETNUM)::GetProcAddress(m_hDLLInst, "fxGetNum"); + if (!pfnNum) + return false; + + FX_GETREF pfnRef = (FX_GETREF)::GetProcAddress(m_hDLLInst, "fxGetRef"); + if (!pfnRef) + return false; + + FX_SETPLAYERFUNC pfnSetPlayer = (FX_SETPLAYERFUNC)::GetProcAddress(m_hDLLInst, "fxSetPlayer"); + if (!pfnSetPlayer) + return false; + + FX_SETAPPFOCUS pfnSetAppFocus = (FX_SETAPPFOCUS)::GetProcAddress(m_hDLLInst, "fxSetAppFocus"); + if (!pfnSetAppFocus) + return false; + + FX_DELETEFUNC pfnDelete = (FX_DELETEFUNC)::GetProcAddress(m_hDLLInst, "fxDelete"); + if( !pfnDelete) + return false; + + FX_SETCREATEFUNCTION pfnSetCreateFunction = (FX_SETCREATEFUNCTION)::GetProcAddress(m_hDLLInst, "fxSetCreateFunction"); + if( !pfnSetCreateFunction) + return false; + + FX_CREATEPROPLIST pfnCreatePropList = (FX_CREATEPROPLIST)::GetProcAddress(m_hDLLInst, "fxCreatePropList"); + if( !pfnCreatePropList) + return false; + + FX_FREEPROPLIST pfnFreePropList = (FX_FREEPROPLIST)::GetProcAddress(m_hDLLInst, "fxFreePropList"); + if( !pfnFreePropList) + return false; + + m_pfnSetPlayer = pfnSetPlayer; + m_pfnSetAppFocus = pfnSetAppFocus; + m_pfnDeleteFX = pfnDelete; + m_pfnSetCreateFunction = pfnSetCreateFunction; + m_pfnCreatePropList = pfnCreatePropList; + m_pfnFreePropList = pfnFreePropList; + + // Okay, if we got here then this is a valid dll with some special + // fx in it.... + + m_nNumEffectTypes = pfnNum(); + + //allocate our list of effect types + m_pEffectTypes = debug_newa(FX_REF, m_nNumEffectTypes); + + if(!m_pEffectTypes) + { + m_nNumEffectTypes = 0; + } + else + { + for (uint32 nCurrEffect = 0; nCurrEffect < m_nNumEffectTypes; nCurrEffect ++) + { + // Retrieve the FX reference structure + m_pEffectTypes[nCurrEffect] = pfnRef(nCurrEffect); + } + } + +#endif + + // Success !! + + return true; +} + +//unloads the effect DLL +void CClientFXDB::UnloadFxDll() +{ + +#ifdef WIN32 + + if (!m_hDLLInst) + return; + + // Free the library + ::FreeLibrary(m_hDLLInst); + + if (strlen(sDLLTmpFile)) + { + HMODULE hMod = ::GetModuleHandle(sDLLTmpFile); + + // if it is not still being used, delete the temp file + if (!hMod) + { + ::DeleteFile(sDLLTmpFile); + sDLLTmpFile[0] = 0; + } + } + + //make sure to invalidate our hooks into the DLL + m_hDLLInst = NULL; + m_pfnSetPlayer = NULL; + m_pfnSetAppFocus = NULL; + m_pfnDeleteFX = NULL; + m_pfnSetCreateFunction = NULL; + +#endif + +} + +//----------------------------------------------------------------- +// CClientFXDB file loading code +//----------------------------------------------------------------- + +bool CClientFXDB::ReadFXProp( bool bText, ILTStream* pFxFile, FX_PROP& fxProp ) +{ + if( bText ) + { + // Read in the name + ReadTextFile( pFxFile, "%s %s", fxProp.m_sName ); + + // Read the type + ReadTextFile( pFxFile, "%s %i", &fxProp.m_nType ); + + // Read the data + switch (fxProp.m_nType) + { + case FX_PROP::STRING : ReadTextFile( pFxFile, "%s %s", fxProp.m_data.m_sVal ); break; + case FX_PROP::INTEGER : ReadTextFile( pFxFile, "%s %i", &fxProp.m_data.m_nVal ); break; + case FX_PROP::FLOAT : ReadTextFile( pFxFile, "%s %f", &fxProp.m_data.m_fVal ); break; + case FX_PROP::COMBO : ReadTextFile( pFxFile, "%s %s", fxProp.m_data.m_sVal ); break; + case FX_PROP::VECTOR : ReadTextFile( pFxFile, "%s %f %f %f", &fxProp.m_data.m_fVec[0], &fxProp.m_data.m_fVec[1], &fxProp.m_data.m_fVec[2] ); break; + case FX_PROP::VECTOR4 : ReadTextFile( pFxFile, "%s %f %f %f %f", &fxProp.m_data.m_fVec4[0], &fxProp.m_data.m_fVec4[1], &fxProp.m_data.m_fVec4[2], &fxProp.m_data.m_fVec4[3] ); break; + case FX_PROP::CLRKEY : + { + LTFLOAT r, g, b, a; + ReadTextFile( pFxFile, "%s %f %f %f %f %f", &fxProp.m_data.m_clrKey.m_tmKey, &r, &g, &b, &a ); + + DWORD dwRed = (int)(r * 255.0f); + DWORD dwGreen = (int)(g * 255.0f); + DWORD dwBlue = (int)(b * 255.0f); + DWORD dwAlpha = (int)(a * 255.0f); + + fxProp.m_data.m_clrKey.m_dwCol = dwRed | (dwGreen << 8) | (dwBlue << 16) | (dwAlpha << 24); + } + break; + + case FX_PROP::PATH : ReadTextFile( pFxFile, "%s %s", fxProp.m_data.m_sVal ); break; + } + } + else + { + BYTE nameLen; + pFxFile->Read(&nameLen, 1); + + // Read in the name + + pFxFile->Read(&fxProp.m_sName, nameLen); + + // Read the type + + pFxFile->Read(&fxProp.m_nType, sizeof(FX_PROP::eDataType)); + + // Read the data + + switch (fxProp.m_nType) + { + case FX_PROP::STRING : pFxFile->Read(&fxProp.m_data.m_sVal, 128); break; + case FX_PROP::INTEGER : pFxFile->Read(&fxProp.m_data.m_nVal, sizeof(int)); break; + case FX_PROP::FLOAT : pFxFile->Read(&fxProp.m_data.m_fVal, sizeof(float)); break; + case FX_PROP::COMBO : pFxFile->Read(&fxProp.m_data.m_sVal, 128); break; + case FX_PROP::VECTOR : pFxFile->Read(&fxProp.m_data.m_fVec, sizeof(float) * 3); break; + case FX_PROP::VECTOR4 : pFxFile->Read(&fxProp.m_data.m_fVec4, sizeof(float) * 4); break; + case FX_PROP::CLRKEY : pFxFile->Read(&fxProp.m_data.m_clrKey, sizeof(FX_PROP::FX_CLRKEY) ); break; + case FX_PROP::PATH : pFxFile->Read(&fxProp.m_data.m_sVal, 128); break; + } + } + + return true; +} + +bool CClientFXDB::ReadFXKey( bool bText, ILTStream* pFxFile, float fTotalTime, FX_KEY* pKey, FX_PROP* pPropBuffer, uint32 nBuffLen ) +{ + // Read in the reference name + char sTmp[128]; + if( bText ) + { + ReadTextFile( pFxFile, "%s %s", sTmp ); + } + else + { + pFxFile->Read(sTmp, 128); + } + + pKey->m_pFxRef = FindFX( strtok(sTmp, ";" )); + + // Read in the key ID + if( bText ) + { + ReadTextFile( pFxFile, "%s %lu", &pKey->m_dwID ); + } + else + { + pFxFile->Read(&pKey->m_dwID, sizeof(uint32)); + } + + // Read in the link status + LINK_STATUS ls; + if( bText ) + { + ReadTextFile( pFxFile, "%s %i", &ls.m_bLinked ); + ReadTextFile( pFxFile, "%s %lu", &ls.m_dwLinkedID ); + + //read in the linked node name but make sure that it is cleared out first + ls.m_sLinkedNodeName[0] = '\0'; + ReadTextFile( pFxFile, "%s %s", ls.m_sLinkedNodeName ); + } + else + { + pFxFile->Read(&ls, sizeof(LINK_STATUS)); + } + + pKey->m_bLinked = ls.m_bLinked; + pKey->m_dwLinkedID = ls.m_dwLinkedID; + strcpy(pKey->m_sLinkedNodeName, ls.m_sLinkedNodeName); + + //check to make sure that the key is not motion linked to itself though + if(pKey->m_bLinked && (pKey->m_dwLinkedID == pKey->m_dwID)) + { + pKey->m_bLinked = false; + } + + // Read in the start time + if( bText ) + { + ReadTextFile( pFxFile, "%s %f", &pKey->m_tmStart ); + } + else + { + pFxFile->Read(&pKey->m_tmStart, sizeof(float)); + } + + // Read in the end time + if( bText ) + { + ReadTextFile( pFxFile, "%s %f", &pKey->m_tmEnd ); + } + else + { + pFxFile->Read(&pKey->m_tmEnd, sizeof(float)); + } + + // Read in the key repeat + uint32 nKeyRepeats = 0; + if( bText ) + { + ReadTextFile( pFxFile, "%s %lu", &nKeyRepeats ); + } + else + { + pFxFile->Read(&nKeyRepeats, sizeof(uint32)); + } + + + // Read in dummy values + uint32 dwDummy; + LTFLOAT fDummy; + if( bText ) + { + ReadTextFile( pFxFile, "%s %lu", &dwDummy ); + ReadTextFile( pFxFile, "%s %f", &fDummy ); + ReadTextFile( pFxFile, "%s %f", &fDummy ); + } + else + { + pFxFile->Read(&dwDummy, sizeof(uint32)); + pFxFile->Read(&dwDummy, sizeof(uint32)); + pFxFile->Read(&dwDummy, sizeof(uint32)); + } + + // Read in the number of properties + uint32 dwNumProps; + if( bText ) + { + ReadTextFile( pFxFile, "%s %lu", &dwNumProps ); + } + else + { + pFxFile->Read(&dwNumProps, sizeof(uint32)); + } + + for (uint32 k = 0; k < dwNumProps; k ++) + { + if(k >= nBuffLen) + { + assert(!"Error: Found a key with too many properties, truncating additional properties"); + break; + } + else + { + ReadFXProp( bText, pFxFile, pPropBuffer[k] ); + } + } + + //ok, we can now convert our properties over to the appropriate form + int32 nFXID = FindFXID(pKey->m_pFxRef->m_sName); + + if(nFXID < 0) + return false; + + //alright, get our property object + pKey->m_pProps = m_pfnCreatePropList(nFXID); + + if(!pKey->m_pProps) + return false; + + //make sure to clamp the times to always be between 0 and the length of the group, + //otherwise numerical accuracy problems will arise + pKey->m_tmStart = LTCLAMP(pKey->m_tmStart, 0.0f, fTotalTime); + pKey->m_tmEnd = LTCLAMP(pKey->m_tmEnd, 0.0f, fTotalTime); + + //now setup the lifespan of the key + pKey->m_pProps->SetLifetime(pKey->m_tmEnd - pKey->m_tmStart, nKeyRepeats); + + + //and let it convert its properties + if(!pKey->m_pProps->ParseProperties(pPropBuffer, k)) + { + m_pfnFreePropList(pKey->m_pProps); + pKey->m_pProps = NULL; + return false; + } + + //setup this key (read out our keys and base properties) + SetupKey(pKey, pPropBuffer, k); + + return true; +} + +bool CClientFXDB::ReadFXGroup( bool bText, ILTStream* pFxFile, FX_GROUP* pFxGroup, FX_PROP* pPropBuffer, uint32 nBuffLen ) +{ + assert(pFxGroup); + + //make sure to clear out any data already in the effect group + pFxGroup->Term(); + + // Read in the number of FX in this group + uint32 dwNumFx = 0; + uint32 dwPhaseLen = 0; + + if( bText ) + { + // Read in the name of this FX group + ReadTextFile( pFxFile, "%s %s", pFxGroup->m_sName ); + + ReadTextFile( pFxFile, "%s %lu", &dwNumFx ); + + // Read in the phase length + ReadTextFile( pFxFile, "%s %lu", &dwPhaseLen ); + } + else + { + pFxFile->Read(&dwNumFx, sizeof(uint32)); + + // Read in the name of this FX group + pFxFile->Read(pFxGroup->m_sName, 128); + + // Read in the phase length + pFxFile->Read(&dwPhaseLen, sizeof(dwPhaseLen)); + } + + // Initialize total time to zero, then find the total time + // as we read in the keys. + pFxGroup->m_tmTotalTime = dwPhaseLen / 1000.0f; + + //allocate room for the FX + pFxGroup->m_pKeys = debug_newa(FX_KEY, dwNumFx); + + if(!pFxGroup->m_pKeys) + return false; + + //save the number of keys + pFxGroup->m_nNumKeys = dwNumFx; + + // Read in the FXKey + for( uint32 nCurrEffect = 0; nCurrEffect < dwNumFx; nCurrEffect ++ ) + { + ReadFXKey( bText, pFxFile, pFxGroup->m_tmTotalTime, &pFxGroup->m_pKeys[nCurrEffect], pPropBuffer, nBuffLen ); + } + + //we need to sort the effects based upon the order that they need to be created in. The creation + //order needs to have any effects that are motion linked come last so that they can have the + //effects that they are linked to created before them + + //This sort is a sort of bubble sort where it will go through and if it finds any effects + //that violate this property, it will correct them. It needs to take care to properly handle + //cyclic graphs though, which are invalid + for(uint32 nCurrPass = 0; nCurrPass < dwNumFx; nCurrPass++) + { + bool bDoneSorting = true; + + //take a pass through to sort... + for(uint32 nCurrKey = 0; nCurrKey < dwNumFx; nCurrKey++) + { + //see if this effect is motion linked, if not we don't need to worry + if(!pFxGroup->m_pKeys[nCurrKey].m_bLinked) + continue; + + //get the ID of the node we are linked to + uint32 nLinkID = pFxGroup->m_pKeys[nCurrKey].m_dwLinkedID; + + //it is linked, we need to see if the effect that it is linked to comes after + for(uint32 nCurrLink = nCurrKey + 1; nCurrLink < dwNumFx; nCurrLink++) + { + if(pFxGroup->m_pKeys[nCurrLink].m_dwID == nLinkID) + { + //this is the effect and it does come after, so we need to swap it + FX_KEY TempKey = pFxGroup->m_pKeys[nCurrKey]; + pFxGroup->m_pKeys[nCurrKey] = pFxGroup->m_pKeys[nCurrLink]; + pFxGroup->m_pKeys[nCurrLink] = TempKey; + + //we have to take another pass again just to make sure + bDoneSorting = false; + + break; + } + } + } + + //see if we are done sorting + if(bDoneSorting) + break; + } + + //alright, by this time either we are in order, or there is a cyclic dependency + + + + return true; +} + + +bool CClientFXDB::ReadFXGroups( bool bText, ILTStream* pFxFile, CLinkList &collGroupFx ) +{ + // Read in the number of FX groups in this file + uint32 dwNumGroups; + + if( bText ) + { + ReadTextFile( pFxFile, "%s %lu", &dwNumGroups ); + } + else + { + pFxFile->Read(&dwNumGroups, sizeof(uint32)); + } + + //allocate a working buffer that keys can read properties into + static const uint32 knMaxKeyProps = 512; + FX_PROP* pPropBuffer = debug_newa(FX_PROP, knMaxKeyProps); + + if(!pPropBuffer) + return false; + + for( uint32 i = 0; i < dwNumGroups; i ++ ) + { + // Create a new group. + FX_GROUP *pFxGroup = debug_new( FX_GROUP ); + + if( !ReadFXGroup( bText, pFxFile, pFxGroup, pPropBuffer, knMaxKeyProps )) + { + debug_deletea(pPropBuffer); + return false; + } + + collGroupFx.AddTail(pFxGroup); + } + + //free our working buffer + debug_deletea(pPropBuffer); + + return true; +} + +bool CClientFXDB::LoadFxGroups(ILTClient* pClient, const char *sFileName ) +{ + ILTStream *pFxFile; + + // Attempt to open the client fx file + pClient->OpenFile(sFileName, &pFxFile); + + if(!pFxFile) + return false; + + char szTag[MAX_TAG_SIZE] = {0}; + + //remember where we are in our list of effects, so that we don't reinitalize keys that are already + //in the list + CLinkListNode *pTailNode = m_collGroupFX.GetTail(); + + // Figure out if we are reading a binary file or text... + pFxFile->Read( szTag, 7 ); + pFxFile->SeekTo( 0 ); + + // This is a text file if we can read an asci "Groups:". + bool bText = !_stricmp( szTag, "Groups:" ); + ReadFXGroups( bText, pFxFile, m_collGroupFX ); + + //clean up the file + pFxFile->Release(); + pFxFile = NULL; + + + // Run through the FX groups we added to the end of the list and setup any non-instance specific + // information + CLinkListNode *pFxGroupNode = (pTailNode) ? pTailNode : m_collGroupFX.GetHead(); + + while (pFxGroupNode) + { + uint32 nNumKeys = pFxGroupNode->m_Data->m_nNumKeys; + + for(uint32 nCurrKey = 0; nCurrKey < nNumKeys; nCurrKey++) + { + FX_KEY *pKey = &pFxGroupNode->m_Data->m_pKeys[nCurrKey]; + + float tmLength = pKey->m_tmEnd - pKey->m_tmStart; + + if (tmLength >= pFxGroupNode->m_Data->m_tmTotalTime - 0.01f) + { + pKey->m_bContinualLoop = true; + } + else + { + pKey->m_bContinualLoop = false; + } + } + + pFxGroupNode = pFxGroupNode->m_pNext; + } + + // Success !! + return true; +} + + +//------------------------------------------------------------------ +// CClientFXDB Group finding utilities +//------------------------------------------------------------------ + +FX_GROUP* CClientFXDB::FindGroupFX(const char *sName) +{ + if( !sName[0] ) return LTNULL; + + // Locate the group + + CLinkListNode *pGroupNode = m_collGroupFX.GetHead(); + + while (pGroupNode) + { + if (!stricmp(pGroupNode->m_Data->m_sName, sName)) + { + // This is the one we want + + return pGroupNode->m_Data; + } + + pGroupNode = pGroupNode->m_pNext; + } + + // Failure.... + + return LTNULL; +} + +//Finds an effect of the appropraite type +FX_REF* CClientFXDB::FindFX(const char *sName) +{ + for(uint32 nCurrEffect = 0; nCurrEffect < m_nNumEffectTypes; nCurrEffect++) + { + if (!stricmp(sName, m_pEffectTypes[nCurrEffect].m_sName)) + return &m_pEffectTypes[nCurrEffect]; + } + + // Failure !! + return NULL; +} + +int32 CClientFXDB::FindFXID(const char *sName) +{ + for(uint32 nCurrEffect = 0; nCurrEffect < m_nNumEffectTypes; nCurrEffect++) + { + if (!stricmp(sName, m_pEffectTypes[nCurrEffect].m_sName)) + return nCurrEffect; + } + + // Failure !! + return -1; +} + + +//------------------------------------------------------------------ +// CClientFXDB External interface for DLL hooks +//------------------------------------------------------------------ + +//called to delete an effect +void CClientFXDB::DeleteEffect(CBaseFX* pFx) +{ + if(m_pfnDeleteFX) + { + m_pfnDeleteFX(pFx); + } +} + +//sets up the parameters for the effect +void CClientFXDB::SetAppFocus(bool bAppFocus) +{ + if(m_pfnSetAppFocus) + { + m_pfnSetAppFocus(bAppFocus); + } +} + +//sets the player object +void CClientFXDB::SetPlayer(HOBJECT hObj) +{ + if(m_pfnSetPlayer) + { + m_pfnSetPlayer(hObj); + } +} + +//sets a callback function and user data for +void CClientFXDB::SetCreateCallback(TCreateClientFXFn pFn, void* pUserData) +{ + if(m_pfnSetCreateFunction) + { + m_pfnSetCreateFunction(pFn, pUserData); + } +} + +//------------------------------------------------------------------ +// CClientFXDB Singleton support +//------------------------------------------------------------------ +CClientFXDB& CClientFXDB::GetSingleton() +{ + static CClientFXDB s_ClientFXDB; + return s_ClientFXDB; +} + diff --git a/Jack/ClientShellDLL/ClientFXDB.h b/Jack/ClientShellDLL/ClientFXDB.h new file mode 100644 index 00000000..6456343a --- /dev/null +++ b/Jack/ClientShellDLL/ClientFXDB.h @@ -0,0 +1,202 @@ +//------------------------------------------------------------------ +// +// ClientFXDB.h +// +// This class is responsible for binding any client effects DLL's, +// loading effects from files, and keeping a global list of all +// effects that the game can use. All ClientFXMgrs tap into this +// database to access the non-instanced effect data +// +// Created: 8/10/02 +// +//------------------------------------------------------------------ + +#ifndef __CLIENTFXDB_H__ +#define __CLIENTFXDB_H__ + +//------------------------------------------------------------------- +// FX_KEY +// +// Defines data for a single effect key item, which is a single type +// like a particle system or sprite and is the atomic element of effects +//------------------------------------------------------------------- +struct FX_KEY +{ + FX_KEY() : + m_bDisableAtDistance( false ), + m_fMaxStartOffset(0.0f), + m_bRandomStartOffset(false), + m_fStartOffsetInterval(0.0f), + m_bSmoothShutdown(true), + m_nDetailLevel(0), + m_eGoreSetting(eGoreSetting_No) + { + } + + ~FX_KEY() + { + } + + + FX_REF *m_pFxRef; + CBaseFXProps *m_pProps; + uint32 m_dwID; + float m_tmStart; + float m_tmEnd; + + bool m_bLinked; + uint32 m_dwLinkedID; + char m_sLinkedNodeName[32]; + bool m_bContinualLoop; + + //information about us needing to run several simulation updates before fully begin + //running it + + //the maximum time that the starting time can be offset by + float m_fMaxStartOffset; + + //whether or not we should use the max start offset or pick a val in [0...start] + bool m_bRandomStartOffset; + + //whether or not this effect is going to shut down smooth + bool m_bSmoothShutdown; + + //the detail level of this effect + uint32 m_nDetailLevel; + + //the time slices we should use between 0 and start to simulate + float m_fStartOffsetInterval; + + //determines whether or not this effect is related to gore so that it can be disabled + //on low violence settings + enum EGoreSetting + { + // Should not be considered gore. + eGoreSetting_No, + // Should be considered gore. + eGoreSetting_Yes, + // Should only be used in low violence + eGoreSetting_LowViolenceOnly, + }; + EGoreSetting m_eGoreSetting; + + //boolean indicating whether or not this effect should be frozen when + //it falls outside of some predetermined radius (used to optimize + //away updating effects too far away) + bool m_bDisableAtDistance; +}; + +//------------------------------------------------------------------- +// FX_GROUP +// +// This is a composite of one or more FX_KEYs and controls a full +// effect. +//------------------------------------------------------------------- +struct FX_GROUP +{ + FX_GROUP() : + m_pKeys(NULL), + m_nNumKeys(0), + m_tmTotalTime(0.0f) + { + m_sName[0] = '\0'; + } + + ~FX_GROUP() + { + Term(); + } + + void Term() + { + debug_deletea(m_pKeys); + m_pKeys = NULL; + m_nNumKeys = 0; + m_tmTotalTime = 0.0f; + m_sName[0] = '\0'; + } + + char m_sName[128]; + float m_tmTotalTime; + FX_KEY* m_pKeys; + uint32 m_nNumKeys; +}; + + +//------------------------------------------------------------------- +// CClientFXDB +// +// A collection of FX_GROUPs that compose all possible effects that +// the game can play +//------------------------------------------------------------------- + +class CClientFXDB +{ +public: + + //accesses the one database object + static CClientFXDB& GetSingleton(); + + //not intended for use as a base class + ~CClientFXDB(); + + //handle initialization/freeing of resources + bool Init(ILTClient* pLTClient); + void Term(); + + //used for finding specific effects for creation + FX_GROUP* FindGroupFX(const char *sName); + + //called to delete an effect + void DeleteEffect(CBaseFX* pFx); + + //sets up the parameters for the effect + void SetAppFocus(bool bAppFocus); + + //sets the player object + void SetPlayer(HOBJECT hObj); + + //sets a callback function and user data for + void SetCreateCallback(TCreateClientFXFn pFn, void* pUserData); + + //finds the data for creating a specific effect key + FX_REF* FindFX(const char *sName); + +private: + + int32 FindFXID(const char *sName); + + //for managing the DLL + bool LoadFxDll(); + void UnloadFxDll(); + + //for loading in the FX files + bool LoadFxGroups(ILTClient* pClient, const char *sName); + bool ReadFXProp( bool bText, ILTStream* pFxFile, FX_PROP& fxProp ); + bool ReadFXKey( bool bText, ILTStream* pFxFile, float fTotalTime, FX_KEY* pKey, FX_PROP* pPropBuffer, uint32 nBuffLen ); + bool ReadFXGroup( bool bText, ILTStream* pFxFile, FX_GROUP* pFxGroup, FX_PROP* pPropBuffer, uint32 nBuffLen ); + bool ReadFXGroups( bool bText, ILTStream* pFxFile, CLinkList &collGroupFx ); + + //the actual DLL handle + HINSTANCE m_hDLLInst; + + //DLL entry points + FX_CREATEPROPLIST m_pfnCreatePropList; + FX_FREEPROPLIST m_pfnFreePropList; + FX_SETPLAYERFUNC m_pfnSetPlayer; + FX_SETAPPFOCUS m_pfnSetAppFocus; + FX_DELETEFUNC m_pfnDeleteFX; + FX_SETCREATEFUNCTION m_pfnSetCreateFunction; + + //this is only intended for use as a singleton so prevent instantiation + CClientFXDB(); + + //The list of the different effect classes that we can instantiate + FX_REF* m_pEffectTypes; + uint32 m_nNumEffectTypes; + + //The list of various effects that can be created + CLinkList m_collGroupFX; +}; + +#endif diff --git a/Jack/ClientShellDLL/ClientFXMgr.cpp b/Jack/ClientShellDLL/ClientFXMgr.cpp new file mode 100644 index 00000000..a5212b7b --- /dev/null +++ b/Jack/ClientShellDLL/ClientFXMgr.cpp @@ -0,0 +1,1744 @@ +//------------------------------------------------------------------ +// +// MODULE : FXMGR.CPP +// +// PURPOSE : Implements class CClientFXMgr +// +// CREATED : On 10/2/98 At 5:33:14 PM +// +//------------------------------------------------------------------ + +// +// Includes... +// + +#include "stdafx.h" +#include "FxFlags.h" +#include "FxDefs.h" +#include "iltmessage.h" +#include "iltdrawprim.h" +#include "ClientFXMgr.h" +#include "PlayerMgr.h" +#include "CMoveMgr.h" +#include "WinUtil.h" +#include "ClientFXDB.h" + +// Defines.... + +#define FXLOD_DIST_LOW 1500.0f +#define FXLOD_DIST_MED 3000.0f +#define FXLOD_DIST_HIGH 6000.0f + +// Globals.... + +uint32 g_dwID = 0; +ILTClient *CClientFXMgr::s_pClientDE = LTNULL; +CClientFXMgr *g_pClientFXMgr = LTNULL; + +typedef CBankedList ClientFXBank; +ClientFXBank* g_pCLIENTFX_INSTANCE_Bank = NULL; + + +float GetSystemFrameTime(uint32 nTimeBase, uint32& nPrevTime) +{ + uint32 nCurrTime = GetTickCount() - nTimeBase; + float fElapsed = (nCurrTime - nPrevTime) / 1000.0f; + nPrevTime = nCurrTime; + + return fElapsed; +} + +void CLIENTFX_LINK::ClearLink() +{ + //the instance should always point to us if it points to anything + if(m_pInstance) + { + if(m_pInstance->m_pLink == this) + m_pInstance->m_pLink = LTNULL; + else + assert(!"Corrupted ClientFXLink found"); + } + + m_pInstance = LTNULL; +}; + +//------------------------------------------------------------------------------------------- +// CLIENTFX_INSTANCE +//------------------------------------------------------------------------------------------- + +CLIENTFX_INSTANCE::CLIENTFX_INSTANCE() +: + m_tmElapsed( 0.0f ), + m_tmSuspended( 0.0f ), + m_fDuration( 0.0f ), + m_vPos( 0.0f, 0.0f, 0.0f ), + m_rRot( 0.0f, 0.0f, 0.0f, 1.0f ), + m_dwID( -1 ), + m_hParent( LTNULL ), + m_dwObjectFlags( 0 ), + m_dwObjectFlags2( 0 ), + m_hTarget( LTNULL ), + m_bLoop( LTFALSE ), + m_bSmoothShutdown( true ), + m_bShutdown( false ), + m_bUseTargetData( LTFALSE ), + m_vTargetPos( 0.0f, 0.0f, 0.0f ), + m_vTargetNorm( 0.0f, 0.0f, 0.0f ), + m_hAlternateParent( NULL ), + m_bSuspended( false ), + m_bShow( LTFALSE ), + m_bPlayerView( LTFALSE ), + m_pLink( LTNULL) +{ +} + +CLIENTFX_INSTANCE::~CLIENTFX_INSTANCE() +{ + ClearLink(); + + //make sure to free all of our effects + RemoveAllEffects(); + + if (m_hAlternateParent) + { + CClientFXMgr::GetClientDE()->RemoveObject(m_hAlternateParent); + } + +} + +bool CLIENTFX_INSTANCE::ExistFX(CBaseFX *pFX) +{ + CLinkListNode *pNode = m_collActiveFX.GetHead(); + + while (pNode) + { + if (pNode->m_Data.m_pFX == pFX) + return true; + + pNode = pNode->m_pNext; + } + + return false; +} + +//are all FX inactive? +bool CLIENTFX_INSTANCE::IsDone() +{ + return(!m_collActiveFX.GetHead()); +} + +//is this suspended +bool CLIENTFX_INSTANCE::IsSuspended() const +{ + return m_bSuspended; +} + +void CLIENTFX_INSTANCE::Hide() +{ + // Force us to be hidden + m_bShow = LTFALSE; +} + +void CLIENTFX_INSTANCE::Show() +{ + // Force us to be shown + m_bShow = LTTRUE; +} + +void CLIENTFX_INSTANCE::SetPos( const LTVector &vWorldPos, const LTVector &vCamRelPos ) +{ + // Loop through all of the Muzzle flash's active FX and set the positions... + + if( m_collActiveFX.GetSize() ) + { + uint32 dwFlags; + CBaseFX *pFX; + LTVector vPos; + CLinkListNode *pActiveFX = m_collActiveFX.GetHead(); + + while( pActiveFX ) + { + pFX = pActiveFX->m_Data.m_pFX; + if( m_bPlayerView ) + { + g_pCommonLT->GetObjectFlags( pFX->GetFXObject(), OFT_Flags, dwFlags ); + dwFlags & FLAG_REALLYCLOSE ? vPos = vCamRelPos : vPos = vWorldPos; + } + else + { + vPos = vWorldPos; + } + + pFX->SetPos( vPos ); + + pActiveFX = pActiveFX->m_pNext; + } + } +} + +void CLIENTFX_INSTANCE::ClearLink() +{ + //delegate this out to our link if we have one and tell it to break the connection + if (m_pLink) + { + //if we have a link, the link had better point to us, otherwise something + //has gotten horribly out of sync + assert((m_pLink->GetInstance() == this) && "Corrupted ClientFXLink found"); + + //clear the connection. This will clear out our side as well + m_pLink->ClearLink(); + + //this disconnection should clear out our link + assert((m_pLink == NULL) && "Corrupted ClientFXLink found"); + } +} + +bool CLIENTFX_INSTANCE::IsFinished() +{ + if (IsDone()) + return true; + + CLinkListNode *pActiveNode = m_collActiveFX.GetHead(); + CBaseFX *pFX = LTNULL; + while (pActiveNode) + { + pFX = pActiveNode->m_Data.m_pFX; + + // Check for expiration + if( pFX ) + { + //determine if this effect has expired + bool bExpired = ((pFX->GetElapsed() >= pFX->GetEndTime()) || pFX->IsShuttingDown()) && + (pFX->IsFinishedShuttingDown() || !pActiveNode->m_Data.m_pRef->m_bSmoothShutdown); + + if (!bExpired) + return false; + } + + pActiveNode = pActiveNode->m_pNext; + } + + return true; +} + +void CLIENTFX_INSTANCE::DeleteFX(CLinkListNode *pDelNode) +{ + if( !pDelNode ) + return; + + CBaseFX* pDelFX = pDelNode->m_Data.m_pFX; + + if(pDelFX) + { + // Make sure no other active FX in this instance have this pDelFX has their parent... + CLinkListNode *pActiveNode = m_collActiveFX.GetHead(); + while( pActiveNode ) + { + CBaseFX *pPossibleChildFX = pActiveNode->m_Data.m_pFX; + + if( pPossibleChildFX && (pPossibleChildFX->GetParent() == pDelFX->GetFXObject())) + { + // NULL out the parent otherwise it will reference an object that is no longer there + pPossibleChildFX->SetParent( LTNULL ); + } + + pActiveNode = pActiveNode->m_pNext; + } + + // Give the FX a chance to clean itself up + pDelFX->Term(); + CClientFXDB::GetSingleton().DeleteEffect(pDelFX); + } + + //now remove this node from our list + m_collActiveFX.Remove(pDelNode); +} + + + +void CLIENTFX_INSTANCE::RemoveAllEffects() +{ + //we need to run through all effects and delete them + CLinkListNode *pActiveFxNode = m_collActiveFX.GetHead(); + CLinkListNode *pNextActiveFxNode = NULL; + + while( pActiveFxNode ) + { + //cache the next in case this node is deleted + pNextActiveFxNode = pActiveFxNode->m_pNext; + DeleteFX(pActiveFxNode); + pActiveFxNode = pNextActiveFxNode; + } +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CClientFXMgr() +// +// PURPOSE : Standard constuctor +// +//------------------------------------------------------------------ + +CClientFXMgr::CClientFXMgr() +{ + m_eDetailLevel = FXLOD_HIGH; + m_dDetailDistSqr = FXLOD_DIST_HIGH * FXLOD_DIST_HIGH; + m_nPrevSystemTime = 0; + m_nSystemTimeBase = GetTickCount(); + m_bPaused = false; + m_bGoreEnabled = true; + m_hCamera = NULL; + + if( !g_pCLIENTFX_INSTANCE_Bank ) + { + g_pCLIENTFX_INSTANCE_Bank = debug_new( ClientFXBank ); + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : ~CClientFXMgr +// +// PURPOSE : Standard destructor +// +//------------------------------------------------------------------ + +CClientFXMgr::~CClientFXMgr() +{ + // Call Term() + + Term(); + + // Check if we have the bank initialized, which it must be + // since it was created in the constructor. + if( g_pCLIENTFX_INSTANCE_Bank ) + { + // Check if it's now empty, which means we can delete it. + if( !g_pCLIENTFX_INSTANCE_Bank->GetSize( )) + { + debug_delete( g_pCLIENTFX_INSTANCE_Bank ); + g_pCLIENTFX_INSTANCE_Bank = NULL; + } + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : Init() +// +// PURPOSE : Initialises class CClientFXMgr and Load all .fxd's +// +//------------------------------------------------------------------ + +bool CClientFXMgr::Init(ILTClient *pClientDE, LTBOOL bGlobal) +{ + m_pClientDE = pClientDE; + CClientFXMgr::s_pClientDE = pClientDE; + if (bGlobal) + { + ASSERT(!g_pClientFXMgr); + g_pClientFXMgr = this; + } + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : Term() +// +// PURPOSE : Terminates class CClientFXMgr +// +//------------------------------------------------------------------ + +void CClientFXMgr::Term() +{ + // Delete all the FX group instances + + CLinkListNode *pInstNode = m_collActiveGroupFX.GetHead(); + + while (pInstNode) + { + pInstNode->m_Data->RemoveAllEffects(); + + g_pCLIENTFX_INSTANCE_Bank->Delete( pInstNode->m_Data ); + + pInstNode = pInstNode->m_pNext; + } + + m_collActiveGroupFX.RemoveAll(); + +} + +//------------------------------------------------------------------ +// +// FUNCTION : GetClientDE() +// +// PURPOSE : sets the camera that will be used for this effect manager +// +//------------------------------------------------------------------ +void CClientFXMgr::SetCamera(HOBJECT hCamera) +{ + m_hCamera = hCamera; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : GetClientDE() +// +// PURPOSE : Returns static pointer to ILTClient interface +// +//------------------------------------------------------------------ + +ILTClient* CClientFXMgr::GetClientDE() +{ + return CClientFXMgr::s_pClientDE; +} + +//------------------------------------------------------------------ +// +// FUNCTION : CreateClientFXCallback +// +// PURPOSE : callback for ClientFX to call to make new effects +// +//------------------------------------------------------------------ +static bool CreateClientFXCallback(const CLIENTFX_CREATESTRUCT& CreateInfo, bool bStartInst, void* pUser) +{ + //make sure we have the client effect manager + if(!pUser) + return false; + + //convert types + CClientFXMgr* pMgr = (CClientFXMgr*)pUser; + + CLIENTFX_CREATESTRUCT Test = CreateInfo; + + //now create that effect + return pMgr->CreateClientFX(NULL, Test, bStartInst, true); +} + +//------------------------------------------------------------------ +// +// FUNCTION : CreateFX() +// +// PURPOSE : Creates a named FX +// +//------------------------------------------------------------------ + +CBaseFX* CClientFXMgr::CreateFX(const char *sName, FX_BASEDATA *pBaseData, CBaseFXProps* pProps, HOBJECT hInstParent) +{ + CBaseFX *pNewFX = NULL; + + // Locate the named FX + + FX_REF *pFxRef = CClientFXDB::GetSingleton().FindFX(sName); + + if( pFxRef ) + { + pNewFX = pFxRef->m_pfnCreate(); + } + + // If we have a new fx, go ahead and add it onto the active list + + if( pNewFX ) + { + // Assign a unique ID for this FX + + pBaseData->m_dwID = GetUniqueID(); + + if( !pNewFX->Init(m_pClientDE, pBaseData, pProps) ) + { + // See if the FX->Init() filled out data to create a new instance... + if( pBaseData->m_sNode[0] ) + { + CLIENTFX_CREATESTRUCT fxCS( pBaseData->m_sNode, pBaseData->m_dwFlags, pBaseData->m_vPos, pBaseData->m_rRot ); + fxCS.m_vTargetNorm = pBaseData->m_vTargetNorm; + fxCS.m_hParent = hInstParent; + + CreateClientFX( fxCS, LTTRUE ); + } + + pNewFX->Term(); + CClientFXDB::GetSingleton().DeleteEffect(pNewFX); + + pNewFX = NULL; + } + } + + // All done.... + + return pNewFX; +} + +//specifies whether or not gore is enabled +void CClientFXMgr::SetGoreEnabled(bool bEnabled) +{ + m_bGoreEnabled = bEnabled; +} + + +//------------------------------------------------------------------ +// +// FUNCTION : UpdateInstanceSuspended() +// +// PURPOSE : Updates the suspended status of the instance and returns the status +// +//------------------------------------------------------------------ + +bool CClientFXMgr::UpdateInstanceSuspended(const LTVector& vCameraPos, CLIENTFX_INSTANCE* pInst) +{ + bool bSuspendInstance = false; + + // Check our parent to see if we are turned off or on + bool bIsParentOn = false; + if(pInst->m_hParent) + { + uint32 dwUsrFlags = 0; + g_pCommonLT->GetObjectFlags( pInst->m_hParent, OFT_User, dwUsrFlags ); + bIsParentOn = (dwUsrFlags & USRFLG_SFX_ON) != 0; + } + + //first off see if we should be suspended based upon our flags and our parents flags + if( !bIsParentOn && !pInst->m_bShow ) + { + //neither us or our parent is turned on, so suspend us + bSuspendInstance = true; + } + else + { + //either us or our parent is on, so assume we are unsuspended. + bSuspendInstance = false; + + //but we need to run through and make sure that none of our effects want to disable at + //a distance + if( pInst->m_collActiveFX.GetSize() && !pInst->m_bPlayerView ) + { + float fDistToEffectSqr = pInst->m_vPos.DistSqr( vCameraPos ); + + //see if they are outside or inside the range. + // Really close FX should always be in range... + if( fDistToEffectSqr > m_dDetailDistSqr ) + { + bSuspendInstance = true; + + //we need to run through all of our active effects and determine if they can be + //suspended at a distance (thus saving performance) + CLinkListNode *pActiveNode = pInst->m_collActiveFX.GetHead(); + + while( pActiveNode ) + { + if(!pActiveNode->m_Data.m_pRef->m_bDisableAtDistance) + { + //can't freeze based upon distance + bSuspendInstance = false; + break; + } + + pActiveNode = pActiveNode->m_pNext; + } + } + } + } + + //now set the appropriate suspension on the effect + if(bSuspendInstance) + SuspendInstance(pInst); + else + UnsuspendInstance(pInst); + + //return our result + return pInst->IsSuspended(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : ApplyEffectStartingOffset() +// +// PURPOSE : given an effect, it will look at the properties for the random offset, and apply +// a series of fake updates in order to simulate offsetting the effect. This is good +// for effects that need to start in the middle somewhere or be randomized to prevent +// all effects looking the same +// +//------------------------------------------------------------------ +void CClientFXMgr::ApplyEffectStartingOffset(CBaseFX* pFX, const FX_KEY* pKey) +{ + assert(pFX); + + //figure out the amoun of time to offset + float fOffsetAmount = (pKey->m_bRandomStartOffset) ? GetRandom(0.0f, pKey->m_fMaxStartOffset) : pKey->m_fMaxStartOffset; + + //determine if this effect needs a random offset + if(fOffsetAmount < 0.01f) + return; + + //alright, we now need to fake several updates + float fTimeInc = pKey->m_fStartOffsetInterval; + + //if they specify something small, just use a single update + if(fTimeInc < 0.001f) + fTimeInc = fOffsetAmount; + + //now actually update + + for(float fCurrTime = 0.0f; fCurrTime + fTimeInc <= fOffsetAmount; fCurrTime += fTimeInc) + { + pFX->Update(fTimeInc); + + //make sure the initial frame is cleared so effects receive only one initial frame + pFX->ClearState(FS_INITIALFRAME); + } + + //and of course update with the remainder of the time + if(fOffsetAmount - fCurrTime > 0.01f) + { + pFX->Update(fOffsetAmount - fCurrTime); + pFX->ClearState(FS_INITIALFRAME); + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : HandleShutdownEffect() +// +// PURPOSE : Given an instance and an effect that has just finished shutting down, +// it will take the appropriate course of action. Note that this will +// invalidate the node that is passed into it +// +//------------------------------------------------------------------ +void CClientFXMgr::HandleShutdownEffect(CLIENTFX_INSTANCE* pInst, CLinkListNode* pKeyNode) +{ + //sanity check + assert(pInst && pKeyNode); + + CBaseFX *pFX = pKeyNode->m_Data.m_pFX; + + //we are finished shutting down, if we aren't looping, we need to destroy + //the effect, otherwise just disable it + if(pInst->m_bLoop && !pInst->m_bShutdown) + { + pFX->SetVisible(false); + pFX->ClearState(FS_ACTIVE | FS_SHUTTINGDOWN | FS_INITIALFRAME); + } + else + { + pInst->DeleteFX(pKeyNode); + } +} + + +//------------------------------------------------------------------ +// +// FUNCTION : UpdateInstanceInterval() +// +// PURPOSE : Given an instance and a time interval, this will appropriately update +// all effects contained within that interval +// +//------------------------------------------------------------------ +void CClientFXMgr::UpdateInstanceInterval(CLIENTFX_INSTANCE* pInst, float fStartInterval, float fEndInterval) +{ + //here are the possible scenarios: + // Inactive + // Inactive -> Active -> Shutting down + // Inactive -> Active -> Shutting down -> Inactive + // Inactive -> Active + // Shutting Down + // Shutting Down -> Inactive + // Shutting Down -> Active -> Shutting Down + // Shutting Down -> Active -> Shutting Down -> Inactive + // Shutting Down -> Active + // Active + + //A note about intervals: The interval used is inclusive of both start and ends. This does + //mean that a boundary such as a key beginning or end can be hit twice, but because of the + //way the state flow works, this will not cause any issues, since when it is inactive + //it will look for active and vice a versa. Therefore since the beginning and end cannot + //lie on the same position this should not introduce any issues, but ensures that the + //full track length is handled when updating + + //alright, run through all active effects and determine what to do + CLinkListNode *pActiveNode; + CLinkListNode *pNextActiveNode; + + //determine if this is a looping instance + bool bLoopInstance = pInst->m_bLoop; + + pActiveNode = pInst->m_collActiveFX.GetHead(); + while( pActiveNode ) + { + //cache the next node in case we delete this key + pNextActiveNode = pActiveNode->m_pNext; + + //alright, first off look at the state of the key and see what to do + CBaseFX *pFX = pActiveNode->m_Data.m_pFX; + const FX_KEY* pKey = pActiveNode->m_Data.m_pRef; + + //this is our time slice beginning + float fCurrStart = fStartInterval; + + //skip dead space on inactive effects + if(!pFX->IsActive()) + { + //sanity check, the shutting down flag should never be set without active + assert(!pFX->IsShuttingDown()); + + //This check is to verify that we aren't shutting down the instance and have inactive effects. + //If we are shutting down, inactive effects are immediately pruned, and then active effects + //should be removed as they are completed + assert(!pInst->m_bShutdown); + + //figure out the start time of this effect + float fKeyStart = pKey->m_tmStart; + + //this effect is not active. See if it should be (loop keys always should be) + if(pKey->m_bContinualLoop || ((fKeyStart >= fCurrStart) && (fKeyStart <= fEndInterval))) + { + //our effect has just become active, we need to reset its elapsed time to 0, + //and switch it over to an initial frame + pFX->SetElapsed(0.0f); + pFX->SetState(FS_ACTIVE | FS_INITIALFRAME); + pFX->ClearState(FS_SHUTTINGDOWN); + pFX->SetVisible(true); + + //handle applying a fake effect offset + ApplyEffectStartingOffset(pFX, pKey); + + //move our timeslice forward to the beginning of the key + fCurrStart = fKeyStart; + } + } + + if(pFX->IsActive()) + { + //we are an active effect, which means we are either in the time block or are + //shutting down. + + //see if we are currently shutting down, and if we are going to transition into + //becoming active + if(pFX->IsShuttingDown()) + { + float fKeyStart = pKey->m_tmStart; + + //however, we can only bring it into the active state from here if the instance + //will allow us + bool bCanActivate = pInst->m_bLoop && !pInst->m_bShutdown; + + //this effect is not active. See if it should be + if(bCanActivate && (fKeyStart >= fCurrStart) && (fKeyStart <= fEndInterval)) + { + //it will become active in this range, so move up to there and change state + pFX->Update(fKeyStart - fCurrStart); + + pFX->SetElapsed(0.0f); + pFX->SetState(FS_INITIALFRAME | FS_ACTIVE); + pFX->ClearState(FS_SHUTTINGDOWN); + + //handle applying a fake effect offset + ApplyEffectStartingOffset(pFX, pKey); + + //move our time position up to the key start + fCurrStart = fKeyStart; + } + } + + //alright, we are now in a chunk of time where either the block is active + //or shutting down. If it is active, we need to update until the end of the slice + //or the end of the effect + if(!pFX->IsShuttingDown()) + { + //we aren't shutting down, so we can update like normal + float fTimeBlockEnd = fEndInterval; + bool bCompleteKey = ((pKey->m_tmEnd <= fTimeBlockEnd) && (pKey->m_tmEnd >= fCurrStart)); + + //see if we hit the end of the key + if(bCompleteKey) + { + fTimeBlockEnd = pKey->m_tmEnd; + } + + //update based upon the interval length + pFX->Update(fTimeBlockEnd - fCurrStart); + + //the initial update state should be cleared now + pFX->ClearState(FS_INITIALFRAME); + + //see if we completed the key + if(bCompleteKey) + { + //we did, so now switch to a shutting down state if it isn't continually looping, + //otherwise we need to reset the elapsed time to 0 + if(pKey->m_bContinualLoop && bLoopInstance) + { + //we have looped our key, so reset the elapsed amount. However, if we are a + //continually looping effect that started with an offset, we don't want + //to lose that offset and should threfore just wrap based upon the lifespan + if(pKey->m_fMaxStartOffset >= 0.001f) + { + pFX->SetElapsed((float)fmod(pFX->GetElapsed(), pFX->GetLifespan())); + } + else + { + //no starting offset, so just to make sure that everything syncs + //up correctly and no error gets introduced, reset it to 0 + pFX->SetElapsed(0.0f); + } + } + else + { + //we're past our key, so start shutting down + pFX->SetState(FS_SHUTTINGDOWN); + } + } + + //update our time start + fCurrStart = fTimeBlockEnd; + } + + //alright, now handle shutting down, in which case we just want to update however + //much time we have left in this interval, and see if the effect is completed + if(pFX->IsShuttingDown()) + { + //allow it to update + pFX->Update(fEndInterval - fCurrStart); + + //can this effect do a smooth shutdown? + bool bSmoothShutdown = pKey->m_bSmoothShutdown && pInst->m_bSmoothShutdown; + + //see if this effect is done shutting down + if(pFX->IsFinishedShuttingDown() || !bSmoothShutdown) + { + //notify of an effect that has finished shutting down + HandleShutdownEffect(pInst, pActiveNode); + + //move onto the next node and keep processing + pActiveNode = pNextActiveNode; + continue; + } + } + } + + //and onto the next node + pActiveNode = pNextActiveNode; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : UpdateAllActiveFX() +// +// PURPOSE : Updates all the active FX in the world +// +//------------------------------------------------------------------ + +bool CClientFXMgr::UpdateAllActiveFX(LTBOOL bAppHasFocus) +{ + if(!m_hCamera) + { + assert(!"No camera specified for this effect manager"); + return false; + } + + //Update our frame time, before any early outs so there aren't giant pops when the early + //out fails + float fFrameTime = GetFrameTime(); + + //add in all the effects from our next update list and clear that out + m_collActiveGroupFX.AppendList(m_collNextUpdateGroupFX); + + HCONSOLEVAR hVar = m_pClientDE->GetConsoleVar("UpdateClientFX"); + if (hVar) + { + float fVal = m_pClientDE->GetVarValueFloat(hVar); + + if (!fVal) + return true; + } + + //see if we should even update + if(IsPaused()) + { + //no time has elapsed, don't bother updating + return true; + } + + //setup the callback + SetupCreateEffectCallback(); + + //get the position of the camera + LTVector vCameraPos; + g_pLTClient->GetObjectPos(m_hCamera, &vCameraPos); + + // Set params.... + CClientFXDB::GetSingleton().SetAppFocus( bAppHasFocus ? true : false ); + CClientFXDB::GetSingleton().SetPlayer( g_pPlayerMgr->GetMoveMgr()->GetObject() ); + + // + // Update the group Instances + // + + CLinkListNode *pInstNode = m_collActiveGroupFX.GetHead(); + CLinkListNode *pNextNode; + + while( pInstNode ) + { + CLIENTFX_INSTANCE *pInst = pInstNode->m_Data; + + //cache the next pointer in case the instance gets removed + pNextNode = pInstNode->m_pNext; + + if( pInst->m_hParent ) + { + g_pLTClient->GetObjectPos( pInst->m_hParent, &pInst->m_vPos ); + g_pLTClient->GetObjectRotation( pInst->m_hParent, &pInst->m_rRot ); + } + + //see if this instance is suspended, if so, just call the suspended update + if(UpdateInstanceSuspended(vCameraPos, pInst)) + { + //just run through all effects and give them a suspended updata + CLinkListNode *pActiveNode = pInst->m_collActiveFX.GetHead(); + while( pActiveNode ) + { + pActiveNode->m_Data.m_pFX->SuspendedUpdate(fFrameTime); + pActiveNode = pActiveNode->m_pNext; + } + + //don't bother with any interval updating + pInstNode = pNextNode; + continue; + } + + + //determine the start and end of our update interval, relative to the instance + //time frame + float fStartInterval = pInst->m_tmElapsed; + float fEndInterval = fStartInterval + fFrameTime; + + //we now need to iteratively break this interval down into a series of intervals that + //do not extend past the end of the effect + bool bLastSegment = false; + while(!bLastSegment) + { + //pick whichever is closest, the end of the interval, or the duration of the + //effect + float fEndSegment = pInst->m_fDuration; + + if(fEndInterval < pInst->m_fDuration) + { + bLastSegment = true; + fEndSegment = fEndInterval; + } + + //alright, we now have an interval, update all the effects that lie within it + UpdateInstanceInterval(pInst, fStartInterval, fEndSegment); + + //now move on to the next interval if necessary + if(!bLastSegment) + { + fStartInterval = 0.0f; + fEndInterval -= pInst->m_fDuration; + } + } + + //all done, save our time + pInst->m_tmElapsed = fEndInterval; + + //see if we are done with this effect + if( pInst->m_collActiveFX.GetSize() == 0 ) + { + // Destroy the instance + g_pCLIENTFX_INSTANCE_Bank->Delete( pInst ); + m_collActiveGroupFX.Remove(pInstNode); + } + + //and move onto the next node + pInstNode = pNextNode; + } + + // Success !! + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : RenderAllActiveFX() +// +// PURPOSE : Goes through the list of active effects and gives them a chance to render +// +//------------------------------------------------------------------ + +bool CClientFXMgr::RenderAllActiveFX(LTBOOL bAppHasFocus) +{ + if(!m_hCamera) + { + assert(!"No camera specified for this effect manager"); + return false; + } + + //setup the callback + SetupCreateEffectCallback(); + + // Set params.... + CClientFXDB::GetSingleton().SetAppFocus( bAppHasFocus ? true : false ); + CClientFXDB::GetSingleton().SetPlayer( g_pPlayerMgr->GetMoveMgr()->GetObject() ); + + CLIENTFX_INSTANCE *pInst; + CLinkListNode *pActiveNode; + CLinkListNode *pNextActiveNode; + + // + // Update the group Instances + // + + CLinkListNode *pInstNode = m_collActiveGroupFX.GetHead(); + CLinkListNode *pNextNode; + + while( pInstNode ) + { + pInst = pInstNode->m_Data; + + //cache the next pointer in case the instance gets removed + pNextNode = pInstNode->m_pNext; + + pActiveNode = pInst->m_collActiveFX.GetHead(); + + while( pActiveNode ) + { + pNextActiveNode = pActiveNode->m_pNext; + + //don't worry about suspended effects + if(pInst->IsSuspended()) + { + pActiveNode = pNextActiveNode; + continue; + } + + pActiveNode->m_Data.m_pFX->SetCamera(m_hCamera); + pActiveNode->m_Data.m_pFX->Render(); + + pActiveNode = pNextActiveNode; + } + + pInstNode = pNextNode; + } + + // Success !! + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : ShutdownAllFX() +// +// PURPOSE : Shuts down all active FX +// +//------------------------------------------------------------------ + +void CClientFXMgr::ShutdownAllFX() +{ + // Delete all the FX group instances + + CLinkListNode *pInstNode = m_collActiveGroupFX.GetHead(); + + while (pInstNode) + { + pInstNode->m_Data->RemoveAllEffects(); + g_pCLIENTFX_INSTANCE_Bank->Delete( pInstNode->m_Data ); + + pInstNode = pInstNode->m_pNext; + } + + m_collActiveGroupFX.RemoveAll(); +} + +//------------------------------------------------------------------ +// +// FUNCTION : ShutdownGroupByRef() +// +// PURPOSE : Shuts down a group FX given a reference +// +//------------------------------------------------------------------ +void CClientFXMgr::ShutdownClientFX(CLIENTFX_LINK *pLink) +{ + if (pLink && pLink->m_pInstance) + { + ShutdownClientFX(pLink->m_pInstance); + pLink->ClearLink(); + } +} + +void CClientFXMgr::ShutdownClientFX(CLIENTFX_INSTANCE *pFxGroup) +{ + CLinkListNode *pActiveNode = m_collActiveGroupFX.GetHead(); + + //setup the callback in case any create effects as they are destroyed + SetupCreateEffectCallback(); + + while (pActiveNode) + { + CLIENTFX_INSTANCE* pInst = pActiveNode->m_Data; + + if (pInst == pFxGroup) + { + // Shut it down !! + pInst->m_bShutdown = true; + + HOBJECT hReplaceParent = NULL; + + //see if this effect performs a smooth shutdown, if so, we need to create a dummy + //object to place everything under a dummy object + if (pInst->m_bSmoothShutdown) + { + LTVector vPos; + LTRotation rRot; + + if (pFxGroup->m_hParent) + { + m_pClientDE->GetObjectPos(pFxGroup->m_hParent, &vPos); + m_pClientDE->GetObjectRotation(pFxGroup->m_hParent, &rRot); + } + else + { + vPos = pFxGroup->m_vPos; + rRot = pFxGroup->m_rRot; + } + + // Create a temporary parent object.... + + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT(ocs); + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Pos = vPos; + ocs.m_Rotation = rRot; + ocs.m_Flags = 0; + + hReplaceParent = m_pClientDE->CreateObject(&ocs); + pFxGroup->m_hAlternateParent = hReplaceParent; + pFxGroup->m_hParent = hReplaceParent; + } + + + if (!hReplaceParent) + { + //we couldn't create or didn't need a replacement object, so just remove all fx + pInst->m_hAlternateParent = NULL; + pInst->m_hParent = NULL; + + pInst->RemoveAllEffects(); + } + else + { + // We have a parent to set, but in addition we need to notify all effects that + //we are shutting down, and remove any effects that don't need a smooth shutdown (this + //way it can be polled instantly after to determine if it is done) + + CLinkListNode *pActiveFxNode = pInst->m_collActiveFX.GetHead(); + CLinkListNode *pNextActiveFxNode = NULL; + + while( pActiveFxNode ) + { + //cache the next in case this node is deleted + pNextActiveFxNode = pActiveFxNode->m_pNext; + + CBaseFX *pFX = pActiveFxNode->m_Data.m_pFX; + + //we want to remove any inactive nodes + if(!pFX->IsActive()) + { + pInst->DeleteFX(pActiveFxNode); + } + else + { + const FX_KEY* pKey = pActiveFxNode->m_Data.m_pRef; + + //reassign the parent of this object + pFX->SetParent(hReplaceParent); + + //we have an active effect, set it to shutting down + pFX->SetState(FS_SHUTTINGDOWN); + + //now that it is shutting down, see if it is complete + if(pFX->IsFinishedShuttingDown() || !pInst->m_bSmoothShutdown || !pKey->m_bSmoothShutdown) + { + //we can just remove the effect + pInst->DeleteFX(pActiveFxNode); + } + } + + pActiveFxNode = pNextActiveFxNode; + } + } + + break; + } + + pActiveNode = pActiveNode->m_pNext; + } +} + + +//Called to setup the create effect callback so that any effects created during the updating of an +//object will be associated with this client effect manager +void CClientFXMgr::SetupCreateEffectCallback() +{ + CClientFXDB::GetSingleton().SetCreateCallback(CreateClientFXCallback, this); +} + + +//------------------------------------------------------------------ +// +// FUNCTION : CreateClientFX() +// +// PURPOSE : Creates a group FX at a given position +// +//------------------------------------------------------------------ +bool CClientFXMgr::CreateClientFX(CLIENTFX_LINK *pLink, const CLIENTFX_CREATESTRUCT &fxInit, LTBOOL bStartInst, bool bAddNextUpdate) +{ + //make sure to remove any old link + if(pLink) + { + pLink->ClearLink(); + } + + //try and actually create the effect + CLIENTFX_INSTANCE* pNewInst = CreateClientFX(fxInit,bStartInst, bAddNextUpdate); + if (!pNewInst) + return false; + + //setup a new link if necessary + if (pLink) + { + //if this is not null, we will be breaking a connection and invalidating the referencing + //system + assert(pNewInst->m_pLink == NULL); + + pLink->m_pInstance = pNewInst; + pNewInst->m_pLink = pLink; + } + + return true; +} + +CLIENTFX_INSTANCE* CClientFXMgr::CreateClientFX(const CLIENTFX_CREATESTRUCT &fxInit, LTBOOL bStartInst, bool bAddNextUpdate) +{ + //setup the callback in case it creates any effects when it is created + SetupCreateEffectCallback(); + + + FX_GROUP *pRef = CClientFXDB::GetSingleton().FindGroupFX(fxInit.m_sName); + if (!pRef) + return NULL; + + CLIENTFX_INSTANCE *pNewInst = g_pCLIENTFX_INSTANCE_Bank->New(); //debug_new( CLIENTFX_INSTANCE ); + if( !pNewInst ) + return NULL; + + pNewInst->m_pData = pRef; + pNewInst->m_dwID = GetUniqueID(); + + pNewInst->m_hParent = fxInit.m_hParent; + pNewInst->m_bLoop = (fxInit.m_dwFlags & FXFLAG_LOOP) ? true : false; + pNewInst->m_bSmoothShutdown = (fxInit.m_dwFlags & FXFLAG_NOSMOOTHSHUTDOWN) ? false : true; + pNewInst->m_dwObjectFlags |= (fxInit.m_dwFlags & FXFLAG_REALLYCLOSE) ? FLAG_REALLYCLOSE : 0; + pNewInst->m_bPlayerView = !!(fxInit.m_dwFlags & FXFLAG_REALLYCLOSE); + pNewInst->m_bShutdown = false; + pNewInst->m_hTarget = fxInit.m_hTarget; + + pNewInst->m_bUseTargetData = fxInit.m_bUseTargetData; + pNewInst->m_vTargetPos = fxInit.m_vTargetPos; + pNewInst->m_vTargetNorm = fxInit.m_vTargetNorm; + + pNewInst->m_pLink = LTNULL; + + // Load the instance with all the inactive FX + pNewInst->m_fDuration = pRef->m_tmTotalTime; + + // Add it to the appropriate list + if(bAddNextUpdate) + { + m_collNextUpdateGroupFX.AddTail(pNewInst); + } + else + { + m_collActiveGroupFX.AddTail(pNewInst); + } + + // Set the position + if( pNewInst->m_bPlayerView ) + { + pNewInst->m_vPos.Init(); + pNewInst->m_rRot.Init(); + } + else if (fxInit.m_hParent) + { + g_pLTClient->GetObjectPos(fxInit.m_hParent,&pNewInst->m_vPos); + g_pLTClient->GetObjectRotation( fxInit.m_hParent, &pNewInst->m_rRot ); + } + else + { + pNewInst->m_vPos = fxInit.m_vPos; + pNewInst->m_rRot = fxInit.m_rRot; + } + pNewInst->m_tmElapsed = 0.0f; + + //now go through and actually create all of our keys + for(uint32 nCurrKey = 0; nCurrKey < pRef->m_nNumKeys; nCurrKey++) + { + //make sure that the detail level is enabled + if(!IsDetailLevelEnabled(pRef->m_pKeys[nCurrKey].m_nDetailLevel)) + { + continue; + } + + //make sure that if it is gore, we can show gore + if(!m_bGoreEnabled && ( pRef->m_pKeys[nCurrKey].m_eGoreSetting == FX_KEY::eGoreSetting_Yes )) + { + continue; + } + // If gore is enabled, then make sure the effect isn't fore lowviolence only. + else if(m_bGoreEnabled && ( pRef->m_pKeys[nCurrKey].m_eGoreSetting == FX_KEY::eGoreSetting_LowViolenceOnly )) + { + continue; + } + + CreateFXKey(pNewInst, &pRef->m_pKeys[nCurrKey]); + } + + // Immediatly start the instance if told to. + if( bStartInst ) + { + //make sure it is visible + pNewInst->Show(); + + //and create any effects that start out instantly + UpdateInstanceInterval(pNewInst, 0.0f, 0.0f); + } + + // Success !! + return pNewInst; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientFXMgr::StartInstance +// +// PURPOSE: Actually create all the FX in the Instance +// +// ----------------------------------------------------------------------- // + +bool CClientFXMgr::CreateFXKey( CLIENTFX_INSTANCE* pInst, FX_KEY* pKey ) +{ + if( !pInst || !pKey ) + return false; + // + // We need to go ahead and create this effect + // + + assert(m_hCamera); + + FX_BASEDATA fxData; + fxData.m_vPos = pInst->m_vPos; + fxData.m_rRot = pInst->m_rRot; + fxData.m_dwID = pInst->m_dwID; + fxData.m_hTarget = pInst->m_hTarget; + fxData.m_dwObjectFlags = pInst->m_dwObjectFlags; + fxData.m_dwObjectFlags2 = pInst->m_dwObjectFlags2; + fxData.m_bUseTargetData = pInst->m_bUseTargetData; + fxData.m_vTargetPos = pInst->m_vTargetPos; + fxData.m_vTargetNorm = pInst->m_vTargetNorm; + fxData.m_hCamera = m_hCamera; + + // Save the parent + fxData.m_hParent = pInst->m_hParent; + + // Is this FX supposed to be motion linked to another FX? + if (pKey->m_bLinked) + { + CLinkListNode *pNode = pInst->m_collActiveFX.GetHead(); + + while (pNode) + { + if (pNode->m_Data.m_dwID == pKey->m_dwLinkedID) + { + // This is the one !!! + if (pInst->ExistFX(pNode->m_Data.m_pFX)) + { + CBaseFX *pMotionLinkFX = pNode->m_Data.m_pFX; + fxData.m_hParent = pMotionLinkFX->GetFXObject(); + } + + // done + break; + } + + pNode = pNode->m_pNext; + } + } + + // Create the FX + CBaseFX *pNewFX = CreateFX(pKey->m_pFxRef->m_sName, &fxData, pKey->m_pProps, pInst->m_hParent); + + if( pNewFX ) + { + pNewFX->SetVisible(false); + pNewFX->ClearState(FS_INITIALFRAME | FS_ACTIVE | FS_SHUTTINGDOWN | FS_SUSPENDED); + + // Add it onto the list for link referencing + + FX_LINK fxLink; + fxLink.m_dwID = pKey->m_dwID; + fxLink.m_pFX = pNewFX; + fxLink.m_pRef = pKey; + + pInst->m_collActiveFX.AddHead(fxLink); + } + else + { + return false; + } + + return true; +} + +//------------------------------------------------------------------ +// +// FUNCTION : GetUniqueID() +// +// PURPOSE : Returns a unique ID +// +//------------------------------------------------------------------ + +uint32 CClientFXMgr::GetUniqueID() +{ + return g_dwID ++; +} + +//------------------------------------------------------------------ +// +// FUNCTION : OnSpecialEffectNotify() +// +// PURPOSE : OnSpecialEffectNotify +// +//------------------------------------------------------------------ + +void CClientFXMgr::OnSpecialEffectNotify(HOBJECT hObject, ILTMessage_Read *pMsg) +{ + uint32 dwServerID = 0; + char sName[256]; + uint32 dwFxFlags; + LTVector vPos; + LTRotation rRot; + uint8 nId; + bool bUseTargetData; + HOBJECT hTargetObj = LTNULL; + LTVector vTargetPos(0.0f, 0.0f, 0.0f); + bool bStartInst = true; + + // Read in the type of client fx + nId = pMsg->Readuint8(); + + switch( nId ) + { + case SFX_CLIENTFXGROUP : + { + if( !hObject ) + return; + + // Retrieve the ID of the object + + pMsg->ReadString(sName, sizeof(sName)); + dwFxFlags = pMsg->Readuint32(); + + bUseTargetData = !!(pMsg->Readuint8()); + if( bUseTargetData ) + { + hTargetObj = pMsg->ReadObject(); + vTargetPos = pMsg->ReadCompPos(); + } + + m_pClientDE->GetObjectPos(hObject, &vPos); + m_pClientDE->GetObjectRotation(hObject, &rRot); + + uint32 nUserFlags; + m_pClientDE->Common()->GetObjectFlags(hObject, OFT_User, nUserFlags); + if(hObject && !(nUserFlags & USRFLG_SFX_ON)) + { + bStartInst = false; + } + + } + break; + + case SFX_CLIENTFXGROUPINSTANT : + { + // Retrieve the ID of the object + + pMsg->ReadString(sName, sizeof(sName)); + dwFxFlags = pMsg->Readuint32(); + vPos = pMsg->ReadCompPos(); + rRot = pMsg->ReadCompLTRotation(); + hObject = pMsg->ReadObject(); + + bUseTargetData = !!(pMsg->Readuint8()); + if( bUseTargetData ) + { + hTargetObj = pMsg->ReadObject(); + vTargetPos = pMsg->ReadCompPos(); + } + } + break; + + default: + return; + } + + // If we got here we don't yet have this special FX so we have to start it running + + CLIENTFX_CREATESTRUCT fxcs(sName, dwFxFlags, vPos, rRot); + fxcs.m_hParent = hObject; + fxcs.m_bUseTargetData = bUseTargetData; + fxcs.m_hTarget = hTargetObj; + fxcs.m_vTargetPos = vTargetPos; + + CLIENTFX_INSTANCE *pNewInst = CreateClientFX(fxcs, bStartInst); + if (!pNewInst) + return; +} + +//------------------------------------------------------------------ +// +// FUNCTION : OnObjectRemove() +// +// PURPOSE : Removes an object +// +//------------------------------------------------------------------ + +bool CClientFXMgr::OnObjectRemove(HOBJECT hObject) +{ + CLinkListNode *pNode = m_collActiveGroupFX.GetHead(); + + while (pNode) + { + CLIENTFX_INSTANCE *pInst = pNode->m_Data; + + if (pInst->m_hParent == hObject) + { + ShutdownClientFX(pInst); + } + + pNode = pNode->m_pNext; + } + + return false; +} + +//------------------------------------------------------------------ +// +// FUNCTION : SuspendInstance() +// +// PURPOSE : Freezes all the FX associated with this instance +// +//------------------------------------------------------------------ + +void CClientFXMgr::SuspendInstance(CLIENTFX_INSTANCE *pInst) +{ + assert( pInst ); + + //see if we are already suspended + if( pInst->IsSuspended() ) + return; + + //freeze our instance + pInst->m_bSuspended = true; + + // supsend all the FX in this instance + CLinkListNode *pNode = pInst->m_collActiveFX.GetHead(); + + while (pNode) + { + pNode->m_Data.m_pFX->SetState(FS_SUSPENDED); + + //handle the visible flag + if(!pNode->m_Data.m_pFX->IsVisibleWhileSuspended()) + pNode->m_Data.m_pFX->SetVisible(false); + + pNode = pNode->m_pNext; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : UnfreezeInstance() +// +// PURPOSE : Unfreezes all the FX associated with this instance +// +//------------------------------------------------------------------ + +void CClientFXMgr::UnsuspendInstance(CLIENTFX_INSTANCE *pInst) +{ + assert( pInst ); + + //only bother if we were actually suspended + if(!pInst->IsSuspended()) + return; + + //clear out the flag + pInst->m_bSuspended = false; + + //now unsuspend each of our effects, and let them compensate for lost time + CLinkListNode *pNode = pInst->m_collActiveFX.GetHead(); + + while (pNode) + { + pNode->m_Data.m_pFX->ClearState(FS_SUSPENDED); + + if(pNode->m_Data.m_pFX->IsActive()) + pNode->m_Data.m_pFX->SetVisible(true); + + pNode = pNode->m_pNext; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : SetGroupParent() +// +// PURPOSE : Sets a parent for all FX in a group +// +//------------------------------------------------------------------ + +void CClientFXMgr::SetGroupParent(CLIENTFX_INSTANCE *pInstance, HOBJECT hParent) +{ + CLinkListNode *pLinkNode = pInstance->m_collActiveFX.GetHead(); + + while (pLinkNode) + { + pLinkNode->m_Data.m_pFX->SetParent(hParent); + + pLinkNode = pLinkNode->m_pNext; + } +} + +//------------------------------------------------------------------ +// +// FUNCTION : OnRendererShutdown() +// +// PURPOSE : Informs each FX that the renderer just shut down +// +//------------------------------------------------------------------ + +void CClientFXMgr::OnRendererShutdown() +{ + CLinkListNode *pNode = m_collActiveGroupFX.GetHead(); + + while (pNode) + { + CLinkListNode *pLinkNode = pNode->m_Data->m_collActiveFX.GetHead(); + + while (pLinkNode) + { + pLinkNode->m_Data.m_pFX->OnRendererShutdown(); + + pLinkNode = pLinkNode->m_pNext; + } + + pNode = pNode->m_pNext; + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientFXMgr::SetDetailLevel +// +// PURPOSE: Sets the level of detail for all ClientFX +// +// ----------------------------------------------------------------------- // + +void CClientFXMgr::SetDetailLevel( int nLOD ) +{ + nLOD = LTCLAMP(nLOD, FXLOD_LOW, FXLOD_HIGH); + + // Set our detail vars + switch( nLOD ) + { + case 0 : + { + m_eDetailLevel = FXLOD_LOW; + } + break; + + case 1 : + { + m_eDetailLevel = FXLOD_MED; + } + break; + + default : + { + m_eDetailLevel = FXLOD_HIGH; + } + break; + } +} + +float CClientFXMgr::GetFrameTime() +{ + if (m_bUseSystemTime) + return GetSystemFrameTime(m_nSystemTimeBase, m_nPrevSystemTime); + else + return g_pLTClient->GetFrameTime(); +} + +void CClientFXMgr::Pause(bool bPause) +{ + if(bPause == IsPaused()) + return; + + //we need to run through all active instances and let all of their effects pause + CLinkListNode *pNode = m_collActiveGroupFX.GetHead(); + while( pNode ) + { + CLinkListNode *pLinkNode = pNode->m_Data->m_collActiveFX.GetHead(); + while( pLinkNode ) + { + pLinkNode->m_Data.m_pFX->Pause(bPause); + + pLinkNode = pLinkNode->m_pNext; + } + + pNode = pNode->m_pNext; + } + + m_bPaused = bPause; +} + + +//given a detail level of an effect, this will determine if the effect key should +//be played based upon the current LOD settings on the object +bool CClientFXMgr::IsDetailLevelEnabled(uint32 nDetailLevel) +{ + //helper table for the different detail settings on an effect. Each has 3 bools, one for + //if it is enabled in low detail level, medium, and high. Note that this table must match + //the prop settings as listed in clientfx.cpp + static bool bDetailTable[FX_NUM_DETAIL_SETTINGS][3] = + { + { true, true, true }, //All + { false, false, true }, //High + { false, true, false }, //Medium + { true, false, false }, //Low + { false, true, true }, //Medium+High + { true, true, false }, //Low+Medium + { true, false, true } //Low+High + }; + + //check for out of bounds detail levels + if(nDetailLevel >= FX_NUM_DETAIL_SETTINGS) + return true; + + //use the table as a guide + return bDetailTable[nDetailLevel][m_eDetailLevel]; +} diff --git a/Jack/ClientShellDLL/ClientFXMgr.h b/Jack/ClientShellDLL/ClientFXMgr.h new file mode 100644 index 00000000..3f62a805 --- /dev/null +++ b/Jack/ClientShellDLL/ClientFXMgr.h @@ -0,0 +1,293 @@ +//------------------------------------------------------------------ +// +// MODULE : FXMGR.H +// +// PURPOSE : Defines class CClientFXMgr +// +// CREATED : On 10/5/98 At 6:58:51 PM +// +//------------------------------------------------------------------ + +#ifndef __CLIENTFXMGR__H_ + #define __CLIENTFXMGR__H_ + + // Includes.... + + #include "iltclient.h" + #include "basefx.h" + #include "FxFlags.h" + #include "FxDefs.h" + + // Forwards.... + struct CLIENTFX_INSTANCE; + struct CLIENTFX_LINK; + struct FX_KEY; + struct FX_GROUP; + + struct FX_LINK + { + uint32 m_dwID; + CBaseFX *m_pFX; + const FX_KEY *m_pRef; + }; + + // Classes.... + class CClientFXMgr + { + public : + + // Constuctor + + CClientFXMgr(); + + // Destructor + + ~CClientFXMgr(); + + // Member Functions + + bool Init(ILTClient *pLTClient, LTBOOL bGlobal = LTTRUE); + void Term(); + + bool UpdateAllActiveFX(LTBOOL bAppHasFocus); + bool RenderAllActiveFX(LTBOOL bAppHasFocus); + + void OnSpecialEffectNotify(HOBJECT hObject, ILTMessage_Read *pMsg); + bool OnObjectRemove(HOBJECT hObject); + void OnRendererShutdown(); + + bool CreateClientFX(CLIENTFX_LINK *pLink, const CLIENTFX_CREATESTRUCT &fxInit, LTBOOL bStartInst = LTFALSE, bool bAddNextUpdate = false); + + void ShutdownAllFX(); + void ShutdownClientFX(CLIENTFX_LINK* pLink); + + static uint32 GetUniqueID(); + + //specifies whether or not gore is enabled + void SetGoreEnabled(bool bEnabled); + + // Accessors + + CLinkList* GetActiveFXList() { return &m_collActiveGroupFX; } + + void SetDetailLevel( int nLOD ); + + static ILTClient* GetClientDE(); + + void UseSystemTime(bool bUseSystemTime) {m_bUseSystemTime = bUseSystemTime;} + + void Pause(bool bPause); + bool IsPaused() const { return m_bPaused; } + + //sets the camera that will be used for this effect manager + void SetCamera(HOBJECT hCamera); + + private : + + //used to determine the amount of time that has elapsed for this frame + float GetFrameTime(); + + //given an effect, it will look at the properties for the random offset, and apply + //a series of fake updates in order to simulate offsetting the effect. This is good + //for effects that need to start in the middle somewhere or be randomized to prevent + //all effects looking the same + void ApplyEffectStartingOffset(CBaseFX* pFX, const FX_KEY* pKey); + + //Given an instance and an effect that has just finished shutting down, it will take + //the appropriate course of action. Note that this will invalidate the node that is passed into it + void HandleShutdownEffect(CLIENTFX_INSTANCE* pInst, CLinkListNode* pKeyNode); + + //Given an instance and a time interval, this will appropriately update + //all effects contained within that interval + void UpdateInstanceInterval(CLIENTFX_INSTANCE* pInst, float fStartInterval, float fEndInterval); + + + //creates an effect key and adds it to the specified instances list of active effects + bool CreateFXKey(CLIENTFX_INSTANCE* pInstance, FX_KEY* pKey); + + //Updates the suspended status of the instance and returns that status + bool UpdateInstanceSuspended(const LTVector& vCameraPos, CLIENTFX_INSTANCE* pInst); + + //given a detail level of an effect, this will determine if the effect key should + //be played based upon the current LOD settings on the object + bool IsDetailLevelEnabled(uint32 nDetailLevel); + + // Member Functions + CLIENTFX_INSTANCE* CreateClientFX(const CLIENTFX_CREATESTRUCT &fxInit, LTBOOL bStartInst = LTFALSE, bool bAddNextUpdate = false); + void ShutdownClientFX(CLIENTFX_INSTANCE* pFxGroup); + void SetGroupParent(CLIENTFX_INSTANCE *pInstance, HOBJECT hParent); + + CBaseFX* CreateFX(const char *sName, FX_BASEDATA *pBaseData, CBaseFXProps* pProps, HOBJECT hInstParent); + + void SuspendInstance(CLIENTFX_INSTANCE *pInst); + void UnsuspendInstance(CLIENTFX_INSTANCE *pInst); + + //Called to setup the create effect callback so that any effects created during the updating of an + //object will be associated with this client effect manager + void SetupCreateEffectCallback(); + + + // Member Variables + + EFXLOD m_eDetailLevel; + LTFLOAT m_dDetailDistSqr; + + ILTClient *m_pClientDE; + static ILTClient *s_pClientDE; + + + CLinkList m_collActiveGroupFX; + + //effects that need to be added to the active effects list at the next update + //(this is for effects that are created in mid-update) + CLinkList m_collNextUpdateGroupFX; + + //used for keeping track of the system based time, for when game time cannot be used + bool m_bUseSystemTime; + uint32 m_nPrevSystemTime; + uint32 m_nSystemTimeBase; + + //the paused status + bool m_bPaused; + + //is gore enabled? + bool m_bGoreEnabled; + + //the camera that effects can use + HOBJECT m_hCamera; + }; + + struct CLIENTFX_LINK + { + public: + + CLIENTFX_LINK() : m_pInstance(NULL) {} + ~CLIENTFX_LINK() { ClearLink(); } + + //determines if this link is connected to an object + bool IsValid() const { return m_pInstance != NULL; } + + //gets the object the link is connected to + CLIENTFX_INSTANCE* GetInstance() { return m_pInstance; } + + //clears the connenction and breaks the link + void ClearLink(); + + private: + //only clientfxmgr should handle setting up the links, and then we can break + //the link from our end with clearlink + friend class CClientFXMgr; + + CLIENTFX_INSTANCE* m_pInstance; + + //we cannot allow copying since that will lead to the possibility that items + //are deleted twice + CLIENTFX_LINK(const CLIENTFX_LINK&) {} + CLIENTFX_LINK& operator=(const CLIENTFX_LINK&) {} + }; + + //a node for a linked list of CLIENTFX_LINKs + struct CLIENTFX_LINK_NODE + { + CLIENTFX_LINK_NODE() : m_pNext(NULL) {} + ~CLIENTFX_LINK_NODE() { DeleteList(); } + + void AddToEnd(CLIENTFX_LINK_NODE* pNode) + { + if(m_pNext) + m_pNext->AddToEnd(pNode); + else + m_pNext = pNode; + } + + CLIENTFX_LINK* GetElement(uint32 nElement) + { + if(nElement == 0) + return &m_Link; + if(m_pNext == NULL) + return NULL; + return m_pNext->GetElement(nElement - 1); + } + + void DeleteList() + { + //just to avoid any possibility of cyclic deleting + CLIENTFX_LINK_NODE* pToDel = m_pNext; + m_pNext = NULL; + + debug_delete(pToDel); + } + + CLIENTFX_LINK m_Link; + CLIENTFX_LINK_NODE *m_pNext; + }; + + struct CLIENTFX_INSTANCE + { + // Member Functions + + CLIENTFX_INSTANCE(); + ~CLIENTFX_INSTANCE(); + + bool ExistFX(CBaseFX *pFX); + + //are all FX inactive? + bool IsDone(); + + //is this suspended + bool IsSuspended() const; + + + //have all FX finished playing? (some might still be "active") + bool IsFinished(); + + void Hide(); + + void Show(); + + void SetPos( const LTVector &vWorldPos, const LTVector &vCamRelPos ); + + void ClearLink(); + + //this will delete a single effect from its list of effects. Note that this will invalidate + //the node, so the next pointer should have been cached previously if iterating + void DeleteFX(CLinkListNode *pDelNode); + + void RemoveAllEffects(); + + + + // Member Variables + + const FX_GROUP *m_pData; + CLinkList m_collActiveFX; + float m_tmElapsed; + float m_fDuration; + float m_tmSuspended; //time that this object was frozen (used when unfreezing to find the delta) + LTVector m_vPos; + LTRotation m_rRot; + uint32 m_dwID; + HOBJECT m_hParent; + uint32 m_dwObjectFlags; + uint32 m_dwObjectFlags2; + HOBJECT m_hTarget; + bool m_bLoop; + bool m_bSmoothShutdown; + bool m_bShutdown; + + bool m_bUseTargetData; + LTVector m_vTargetPos; + LTVector m_vTargetNorm; + + HOBJECT m_hAlternateParent; + bool m_bSuspended; + + LTBOOL m_bShow; + LTBOOL m_bPlayerView; + + CLIENTFX_LINK* m_pLink; + }; + + extern CClientFXMgr *g_pClientFXMgr; + +#endif // __CLIENTFXMGR__H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientInfoMgr.cpp b/Jack/ClientShellDLL/ClientInfoMgr.cpp new file mode 100644 index 00000000..eb721062 --- /dev/null +++ b/Jack/ClientShellDLL/ClientInfoMgr.cpp @@ -0,0 +1,371 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientInfoMgr.cpp +// +// PURPOSE : Manages and displays player info for multiplayer games +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientInfoMgr.h" +#include "iltclient.h" +#include "GameClientShell.h" +#include + +#define VERT_SPACING 3 + +extern CGameClientShell* g_pGameClientShell; + +namespace +{ + char szUnknownPlayer[32] = ""; + const int kNumTeams = 2; +} + + +CClientInfoMgr::CClientInfoMgr() +{ + m_pClients = LTNULL; +} + +CClientInfoMgr::~CClientInfoMgr() +{ + CLIENT_INFO* ptr = LTNULL; + while (m_pClients) + { + ptr = m_pClients->pNext; + debug_delete(m_pClients); + m_pClients = ptr; + } + +} + +void CClientInfoMgr::Init() +{ + + LoadString(IDS_UNKNOWN_PLAYER,szUnknownPlayer,sizeof(szUnknownPlayer) ); + + m_nLocalID = 0; +} + +void CClientInfoMgr::UpdateClient ( char const* pszName, bool bIsAdmin, uint32 nID, uint8 nTeamID ) +{ + // if we have this client in the list, update their info + CLIENT_INFO* pClient = GetClientByID(nID, false); + if (pClient) + { + pClient->sName = pszName; + pClient->bIsAdmin = bIsAdmin; + pClient->nTeamID = nTeamID; + + UpdateClientSort(pClient); + + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->UpdatePlayerName(nID, pszName, nTeamID ); + } + } + else + { + //hmmm... we should have found them... + DebugCPrint(1,"CClientInfoMgr::UpdateClient () : Unknown Client %d (%s)", nID, pszName); + } + + +} + +void CClientInfoMgr::PlayerConnected( char const* pszName, uint32 nID ) +{ + m_nLocalID = 0; + g_pLTClient->GetLocalClientID (&m_nLocalID); + + // if we already have this client in the list, just return + + CLIENT_INFO* pDup = GetClientByID(nID, false); + if (pDup) + { + pDup->sName = pszName; + } + else + { + // create the new object + + CLIENT_INFO* pNew = debug_new(CLIENT_INFO); + if (!pNew) return; + + pNew->nID = nID; + pNew->sName = pszName; + pNew->bIsAdmin = false; + pNew->nTeamID = INVALID_TEAM; + pNew->sScore.Init(nID); + + // if we don't have a list yet, set the list pointer to the new object + if (!m_pClients) + { + m_pClients = pNew; + return; + } + + // we do have a list - insert the object + CLIENT_INFO* ptr = m_pClients; + + //insert at head? + if (ptr->sScore.GetScore() < pNew->sScore.GetScore()) + { + pNew->pNext = m_pClients; + m_pClients = pNew; + return; + } + + CLIENT_INFO* pNext = ptr->pNext; + while (pNext && pNext->sScore.GetScore() >= pNew->sScore.GetScore()) + { + ptr = pNext; + pNext = ptr->pNext; + } + if (pNext) + { + pNext->pPrev = pNew; + } + ptr->pNext = pNew; + pNew->pNext = pNext; + pNew->pPrev = ptr; + } +} + +void CClientInfoMgr::AddClient ( char const* pszName, bool bIsAdmin, uint32 nID, uint8 nTeamID) +{ + m_nLocalID = 0; + g_pLTClient->GetLocalClientID (&m_nLocalID); + + // if we already have this client in the list, then it's an update, not an add. + CLIENT_INFO* pDup = GetClientByID(nID, false); + if (pDup) + { + UpdateClient( pszName, bIsAdmin, nID, nTeamID ); + return; + } + + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->UpdatePlayerName(nID, pszName, nTeamID ); + } + + + // create the new object + + CLIENT_INFO* pNew = debug_new(CLIENT_INFO); + if (!pNew) return; + + pNew->nID = nID; + pNew->sName = pszName; + pNew->bIsAdmin = bIsAdmin; + pNew->nTeamID = nTeamID; + + pNew->sScore.Init(nID); + + // if we don't have a list yet, set the list pointer to the new object + if (!m_pClients) + { + m_pClients = pNew; + return; + } + + // we do have a list - insert the object + CLIENT_INFO* ptr = m_pClients; + + //insert at head? + if (ptr->sScore.GetScore() < pNew->sScore.GetScore()) + { + pNew->pNext = m_pClients; + m_pClients = pNew; + return; + } + + CLIENT_INFO* pNext = ptr->pNext; + while (pNext && pNext->sScore.GetScore() >= pNew->sScore.GetScore()) + { + ptr = pNext; + pNext = ptr->pNext; + } + if (pNext) + { + pNext->pPrev = pNew; + } + ptr->pNext = pNew; + pNew->pNext = pNext; + pNew->pPrev = ptr; + +} + +void CClientInfoMgr::RemoveClient (uint32 nID) +{ + if (!m_pClients) return; + + m_nLocalID = 0; + g_pLTClient->GetLocalClientID (&m_nLocalID); + + // find the client + + CLIENT_INFO* ptr = GetClientByID(nID, false); + if (!ptr) return; + + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->UpdatePlayerName( nID, "", 0); + } + // remove the client from the list + + if (ptr->pNext) + ptr->pNext->pPrev = ptr->pPrev; + if (ptr->pPrev) + ptr->pPrev->pNext = ptr->pNext; + if (m_pClients == ptr) + m_pClients = ptr->pNext; + + debug_delete(ptr); + +} + +void CClientInfoMgr::RemoveAllClients() +{ + + CLIENT_INFO* ptr = LTNULL; + while (m_pClients) + { + ptr = m_pClients->pNext; + debug_delete(m_pClients); + m_pClients = ptr; + } + + g_pHUDMgr->QueueUpdate(kHUDScores); +} + +void CClientInfoMgr::UpdateClientSort(CLIENT_INFO* pCur) +{ + if (!pCur) return; + + g_pHUDMgr->QueueUpdate(kHUDScores); + + // put this client in the correct position in the list (most frags to least frags) + CLIENT_INFO* pTmp = pCur; + + LTBOOL bBack = LTFALSE; + //try going forward + while (pTmp->pPrev && pCur->sScore.GetScore() > pTmp->pPrev->sScore.GetScore()) + pTmp = pTmp->pPrev; + if (pTmp == pCur) + { + //try going backward + while (pTmp->pNext && pCur->sScore.GetScore() < pTmp->pNext->sScore.GetScore()) + pTmp = pTmp->pNext; + if (pTmp == pCur) return; + bBack = LTTRUE; + + } + + // we found a new position - remove current from the list + if (pCur->pPrev) + pCur->pPrev->pNext = pCur->pNext; + else + m_pClients = pCur->pNext; + if (pCur->pNext) + pCur->pNext->pPrev = pCur->pPrev; + + // put us back in in the correct position + if (bBack) + { + pCur->pPrev = pTmp; + pCur->pNext = pTmp->pNext; + pTmp->pNext = pCur; + if (pCur->pNext) + pCur->pNext->pPrev = pCur; + } + else + { + pCur->pPrev = pTmp->pPrev; + pCur->pNext = pTmp; + if (pTmp->pPrev) + pTmp->pPrev->pNext = pCur; + else + m_pClients = pCur; + pTmp->pPrev = pCur; + } + + +} + + +uint32 CClientInfoMgr::GetNumClients() +{ + if (!m_pClients) return 0; + + CLIENT_INFO* ptr = m_pClients; + + uint32 nCount = 0; + while (ptr) + { + nCount++; + ptr = ptr->pNext; + } + + return nCount; +} + +char const* CClientInfoMgr::GetPlayerName (uint32 nID) +{ + if (!m_pClients) return LTNULL; + + CLIENT_INFO* ptr = GetClientByID(nID); + if (ptr) + return ptr->sName.c_str( ); + + return szUnknownPlayer; +} + + +CLIENT_INFO* CClientInfoMgr::GetLocalClient() +{ + return GetClientByID(m_nLocalID); +} + +CLIENT_INFO* CClientInfoMgr::GetClientByID(uint32 nID, bool bUpdateOnFailure) +{ + CLIENT_INFO* ptr = m_pClients; + while (ptr) + { + if (ptr->nID == nID) + return ptr; + + ptr = ptr->pNext; + } + if (bUpdateOnFailure) + g_pInterfaceMgr->UpdateClientList(); + return LTNULL; +} + +uint8 CClientInfoMgr::GetNumPlayersOnTeam(uint8 nTeam) +{ + if (nTeam > kNumTeams) + { + CLIENT_INFO* pLocal = GetLocalClient(); + if (pLocal) + nTeam = pLocal->nTeamID; + } + + uint8 nCount = 0; + + CLIENT_INFO* ptr = m_pClients; + while (ptr) + { + if (ptr->nTeamID == nTeam) + nCount++; + + ptr = ptr->pNext; + } + + return nCount; + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientInfoMgr.h b/Jack/ClientShellDLL/ClientInfoMgr.h new file mode 100644 index 00000000..28d726bc --- /dev/null +++ b/Jack/ClientShellDLL/ClientInfoMgr.h @@ -0,0 +1,63 @@ +#ifndef __CLIENTINFOMGR_H +#define __CLIENTINFOMGR_H + +#include "ltbasedefs.h" +#include "ClientUtilities.h" +#include "SharedMission.h" +#include "SharedScoring.h" + +class ILTClient; + + +struct CLIENT_INFO +{ + CLIENT_INFO() { nPing = 0; nID = 0; pPrev = LTNULL; pNext = LTNULL; bIsAdmin = false; nTeamID = 0;} + + uint16 nPing; + uint32 nID; + std::string sName; + MissionStats sStats; + CPlayerScore sScore; + bool bIsAdmin; + uint8 nTeamID; + + CLIENT_INFO* pPrev; + CLIENT_INFO* pNext; +}; + +class CClientInfoMgr +{ +public: + + CClientInfoMgr(); + ~CClientInfoMgr(); + + void Init (); + + void AddClient ( char const* pszName, bool bIsAdmin, uint32 nID, uint8 nTeamID); + void PlayerConnected( char const* pszName, uint32 nID ); + void UpdateClient ( char const* pszName, bool bIsAdmin, uint32 nID, uint8 nTeamID); + void RemoveClient (uint32 nID); + void RemoveAllClients(); + + CLIENT_INFO* GetLocalClient(); + CLIENT_INFO* GetFirstClient() {return m_pClients;} + CLIENT_INFO* GetClientByID(uint32 nID, bool bUpdateOnFailure = true); + + uint32 GetNumClients(); + char const* GetPlayerName (uint32 nID); + + void UpdateClientSort(CLIENT_INFO* pCur); + + uint8 GetNumPlayersOnTeam(uint8 nTeam = -1); + +protected: + + + CLIENT_INFO* m_pClients; + + uint32 m_nLocalID; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientMultiplayerMgr.cpp b/Jack/ClientShellDLL/ClientMultiplayerMgr.cpp new file mode 100644 index 00000000..a41d392f --- /dev/null +++ b/Jack/ClientShellDLL/ClientMultiplayerMgr.cpp @@ -0,0 +1,1474 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientMultiplayerMgr.cpp +// +// PURPOSE : Clientside multiplayer mgr - Definition +// +// CREATED : 02/05/02 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientMultiplayerMgr.h" +#include "GameClientShell.h" +#include "MsgIds.h" +#include "CharacterFx.h" +#include "CMoveMgr.h" +#include "MissionMgr.h" +#include "MissionButeMgr.h" +#include "InterfaceMgr.h" +#include "ProfileMgr.h" +#include "WeaponMgr.h" +#include "CRC32.h" +#include "IGameSpy.h" + + +#pragma MESSAGE( "FIXFIX: Should really be called ClientConnectionMgr." ) + + +ClientMultiplayerMgr* g_pClientMultiplayerMgr = NULL; + +inline unsigned char INADDR_B1(const sockaddr_in& addr) +{ return addr.sin_addr.S_un.S_un_b.s_b1; } +inline unsigned char INADDR_B2(const sockaddr_in& addr) +{ return addr.sin_addr.S_un.S_un_b.s_b2; } +inline unsigned char INADDR_B3(const sockaddr_in& addr) +{ return addr.sin_addr.S_un.S_un_b.s_b3; } +inline unsigned char INADDR_B4(const sockaddr_in& addr) +{ return addr.sin_addr.S_un.S_un_b.s_b4; } +#define EXPAND_BASEADDR(addr)\ + INADDR_B1(addr), INADDR_B2(addr), INADDR_B3(addr), INADDR_B4(addr) + +#define EXPAND_ADDR(addr) \ + EXPAND_BASEADDR(addr),\ + ntohs((addr).sin_port) + +static const char* ADDR_PRINTF = "%d.%d.%d.%d:%d"; + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::ClientMultiplayerMgr +// +// PURPOSE: Constructor +// +// --------------------------------------------------------------------------- // + +ClientMultiplayerMgr::ClientMultiplayerMgr( ) +{ + m_nServerPort = -1; + m_nServerKey = 0; + m_nDisconnectCode = 0; + m_bForceDisconnect = false; +// m_pServerDir = 0; + m_aCurMessageSourceAddr[0] = 0; + m_aCurMessageSourceAddr[1] = 0; + m_aCurMessageSourceAddr[2] = 0; + m_aCurMessageSourceAddr[3] = 0; + m_nCurMessageSourcePort = 0; + + m_StartGameRequest.m_Type = GAMEMODE_NONE; + memset( &m_NetClientData, 0, sizeof( m_NetClientData )); + + m_nLastConnectionResult = LT_OK; + + g_pClientMultiplayerMgr = this; + + m_nTeam = INVALID_TEAM; + m_bHasSelectedTeam = false; + + m_pRetailGameSpyBrowser = NULL; + m_pDemoGameSpyBrowser = NULL; + m_bDoNatNegotiations = false; + m_bConnectViaPublic = true; + + m_eConnectionState = eConnectionState_Disconnected; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::~ClientMultiplayerMgr +// +// PURPOSE: Destructor +// +// --------------------------------------------------------------------------- // + +ClientMultiplayerMgr::~ClientMultiplayerMgr( ) +{ + TermBrowsers( ); + + g_pClientMultiplayerMgr = NULL; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::InitSinglePlayer +// +// PURPOSE: Send the server the initial single player info +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::InitSinglePlayer() +{ + + g_pWeaponMgr->LoadOverrideButes( WEAPON_DEFAULT_FILE ); + + //force server to update difficulty + GameDifficulty eDiff = g_pGameClientShell->GetDifficulty(); + g_pGameClientShell->SetDifficulty(eDiff); + + //force server to update performance settings + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->SendPerformanceMsg(); + + + return true; +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::InitMultiPlayer +// +// PURPOSE: Send the server the initial multiplayer info +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::InitMultiPlayer() +{ + if (!IsMultiplayerGame()) + return false; + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + ModelId modelId = eModelIdInvalid; + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + if (pProfile->m_nCPPlayerModel >= g_pModelButeMgr->GetNumCPModels()) + pProfile->m_nCPPlayerModel = 0; + + modelId = g_pModelButeMgr->GetCPModel(pProfile->m_nCPPlayerModel); + break; + case eGameTypeDeathmatch: + if (pProfile->m_nDMPlayerModel >= g_pModelButeMgr->GetNumDMModels()) + pProfile->m_nDMPlayerModel = 0; + + modelId = g_pModelButeMgr->GetDMModel(pProfile->m_nDMPlayerModel); + break; +// if (pProfile->m_nDMPlayerModel >= g_pModelButeMgr->GetNumDMModels()) +// pProfile->m_nDMPlayerModel = 0; +// +// modelId = g_pModelButeMgr->GetDMModel(pProfile->m_nDMPlayerModel); + break; + }; + + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_PLAYER_MULTIPLAYER_INIT ); + + ASSERT(( uint8 )modelId == modelId ); + cMsg.Writeuint8(( uint8 )modelId ); + cMsg.Writeuint8( m_nTeam ); + + for (uint8 i = 0; i < kNumSkills; i++) + { + cMsg.Writeuint8(pProfile->m_nPlayerSkills[i]); + } + + + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + //force server to update difficulty + + GameDifficulty eDiff = GD_NORMAL; + if (g_pGameClientShell->GetGameType() == eGameTypeCooperative) + { + eDiff = (GameDifficulty)pProfile->m_ServerGameOptions.GetCoop().m_nDifficulty; + } + g_pGameClientShell->SetDifficulty(eDiff); + + //force server to update performance settings + pProfile->SendPerformanceMsg(); + + + + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::UpdateMultiPlayer +// +// PURPOSE: Send the server the updated multiplayer info +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::UpdateMultiPlayer() +{ + if (!IsMultiplayerGame()) + return false; + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + ModelId modelId = eModelIdInvalid; + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + if (pProfile->m_nCPPlayerModel >= g_pModelButeMgr->GetNumCPModels()) + pProfile->m_nCPPlayerModel = 0; + + modelId = g_pModelButeMgr->GetCPModel(pProfile->m_nCPPlayerModel); + break; + case eGameTypeDeathmatch: + if (pProfile->m_nDMPlayerModel >= g_pModelButeMgr->GetNumDMModels()) + pProfile->m_nDMPlayerModel = 0; + + modelId = g_pModelButeMgr->GetDMModel(pProfile->m_nDMPlayerModel); + break; + }; + + if( !UpdateNetClientData( )) + return false; + + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_PLAYER_INFOCHANGE ); + + cMsg.WriteString(pProfile->m_sPlayerName.c_str()); + + ASSERT(( uint8 )modelId == modelId ); + cMsg.Writeuint8(( uint8 )modelId ); + cMsg.Writeuint8( m_nTeam ); + + + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + return true; +} + +// returns true if the passed in address matches the current server address +bool ClientMultiplayerMgr::CheckServerAddress(char const*pszTestAddress, int nPort) +{ + if (!pszTestAddress) return false; + if (nPort != m_nServerPort) return false; + return (stricmp(pszTestAddress,m_sServerAddress) == 0); +} + + +void ClientMultiplayerMgr::DoTaunt(uint32 nClientID, uint32 nTauntID) +{ + //if you're not listening to taunts, you're not allowed to send them + if (GetConsoleInt("IgnoreTaunts",0) > 0) return; + + CClientInfoMgr *pCIMgr = g_pGameClientShell->GetInterfaceMgr( )->GetClientInfoMgr(); + if (!pCIMgr) return; + +// char szVar[16] = ""; +// sprintf(szVar,"TauntDM%d",nTaunt); + +// uint32 nTauntID = (uint32)GetConsoleInt(szVar,0); + + if (!nTauntID) return; + + // Don't allow the client to flood the server with taunts... + + CCharacterFX *pFX = g_pGameClientShell->GetPlayerMgr( )->GetMoveMgr()->GetCharacterFX(); + if (pFX && !pFX->IsPlayingTaunt()) + { + pFX->PlayTaunt(nTauntID); + + // create the message + char strMessage[256]; + SAFE_STRCPY(strMessage, LoadTempString(nTauntID)); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_TAUNT); + cMsg.Writeuint32(nTauntID); + cMsg.WriteString(strMessage); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } +} + + + +bool ClientMultiplayerMgr::SetupClient(char const* pszHostName, char const* pszPassword, + bool bDoNatNegotiations, bool bConnectViaPublic, + char const* pszPublicAddress, char const* pszPrivateAddress ) +{ + // Check inputs. + if( !pszPublicAddress || !pszPublicAddress[0] || !pszPrivateAddress || !pszPrivateAddress[0] ) + { + ASSERT( !"ClientMultiplayerMgr::SetupClient: Invalid inputs." ); + return false; + } + + m_sConnectPublicAddress = pszPublicAddress; + m_sConnectPrivateAddress = pszPrivateAddress; + m_bConnectViaPublic = bConnectViaPublic; + + // Setup the startgame info. + StartGameRequest startGameRequest; + m_StartGameRequest = startGameRequest; + m_ServerGameOptions.Clear( ); + memset( &m_NetClientData, 0, sizeof( m_NetClientData )); + + if( !UpdateNetClientData( )) + return false; + + // Record the default address to try. + strncpy( m_StartGameRequest.m_TCPAddress, ( m_bConnectViaPublic ? m_sConnectPublicAddress.c_str( ) : + m_sConnectPrivateAddress.c_str( )), MAX_SGR_STRINGLEN); + + m_StartGameRequest.m_Type = STARTGAME_CLIENTTCP; + if( pszHostName && pszHostName[0] ) + { + SAFE_STRCPY(m_StartGameRequest.m_HostInfo.m_sName ,pszHostName); + } + + if (pszPassword) + { + m_nClientPass = str_Hash(pszPassword); + } + else + { + m_nClientPass = 0; + } + + // Check if they want us to do natnegotiations. + m_bDoNatNegotiations = bDoNatNegotiations; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SetupServerSinglePlayer +// +// PURPOSE: Setup server for singleplayer game. +// +// ----------------------------------------------------------------------- // +bool ClientMultiplayerMgr::SetupServerSinglePlayer( ) +{ + StartGameRequest startGameRequest; + m_StartGameRequest = startGameRequest; + m_ServerGameOptions.Clear( ); + memset( &m_NetClientData, 0, sizeof( m_NetClientData )); + + // Set the game type to normal (single player). + m_StartGameRequest.m_Type = STARTGAME_NORMAL; + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + m_ServerGameOptions = pProfile->m_ServerGameOptions; + m_ServerGameOptions.m_bPreCacheAssets = (pProfile->m_sPerformance.nSettings[kPerform_PreCacheAssets] > 0); + m_ServerGameOptions.m_bPerformanceTest = g_pGameClientShell->IsRunningPerformanceTest(); + + return true; +} +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SetupServerHost() +// +// PURPOSE: Host a game. +// +// PARAMETERS: int nPort - Port to use, 0 to use default +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::SetupServerHost( int nPort, bool bLANOnly ) +{ + StartGameRequest startGameRequest; + m_StartGameRequest = startGameRequest; + m_ServerGameOptions.Clear( ); + memset( &m_NetClientData, 0, sizeof( m_NetClientData )); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + m_ServerGameOptions = pProfile->m_ServerGameOptions; + m_ServerGameOptions.m_bLANOnly = pProfile->m_ServerGameOptions.m_bLANOnly = bLANOnly; + m_ServerGameOptions.m_bPreCacheAssets = (pProfile->m_sPerformance.nSettings[kPerform_PreCacheAssets] > 0); + + if( !UpdateNetClientData( )) + return false; + + m_StartGameRequest.m_Type = STARTGAME_HOST; + m_StartGameRequest.m_HostInfo.m_Port = nPort; + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + m_StartGameRequest.m_HostInfo.m_dwMaxConnections = pProfile->m_ServerGameOptions.GetCoop().m_nMaxPlayers-1; + LTStrCpy( m_StartGameRequest.m_HostInfo.m_sName, pProfile->m_ServerGameOptions.GetCoop().m_sSessionName.c_str( ), + sizeof(m_StartGameRequest.m_HostInfo.m_sName)); + break; + case eGameTypeDeathmatch: + m_StartGameRequest.m_HostInfo.m_dwMaxConnections = pProfile->m_ServerGameOptions.GetDeathmatch().m_nMaxPlayers-1; + LTStrCpy( m_StartGameRequest.m_HostInfo.m_sName, pProfile->m_ServerGameOptions.GetDeathmatch().m_sSessionName.c_str( ), + sizeof(m_StartGameRequest.m_HostInfo.m_sName)); + break; + case eGameTypeTeamDeathmatch: + m_StartGameRequest.m_HostInfo.m_dwMaxConnections = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nMaxPlayers-1; + LTStrCpy( m_StartGameRequest.m_HostInfo.m_sName, pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sSessionName.c_str( ), + sizeof(m_StartGameRequest.m_HostInfo.m_sName)); + break; + case eGameTypeDemolition: + m_StartGameRequest.m_HostInfo.m_dwMaxConnections = pProfile->m_ServerGameOptions.GetDemolition().m_nMaxPlayers-1; + LTStrCpy( m_StartGameRequest.m_HostInfo.m_sName, pProfile->m_ServerGameOptions.GetDemolition().m_sSessionName.c_str( ), + sizeof(m_StartGameRequest.m_HostInfo.m_sName)); + break; + case eGameTypeDoomsDay: + m_StartGameRequest.m_HostInfo.m_dwMaxConnections = pProfile->m_ServerGameOptions.GetDoomsday().m_nMaxPlayers-1; + LTStrCpy( m_StartGameRequest.m_HostInfo.m_sName, pProfile->m_ServerGameOptions.GetDoomsday().m_sSessionName.c_str( ), + sizeof(m_StartGameRequest.m_HostInfo.m_sName)); + break; + }; + + + m_StartGameRequest.m_HostInfo.m_bHasPassword = pProfile->m_ServerGameOptions.m_bUsePassword; + m_StartGameRequest.m_HostInfo.m_nGameType = (uint8)pProfile->m_ServerGameOptions.m_eGameType; + + // Set the name of the mod we are using... + + m_ServerGameOptions.m_sModName = GetModName(); + +/* + // Make sure that the multiplayer mgr doesn't have a server directory in use + // This must be done because there can only be one IServerDirectory object + // created at a time for proper shutdown. (Internal Titan implementation BS...) + // NYI - Note : This shouldn't be necessary, and if it is, it will cause problems + // elsewhere. (Host/Join sequence = 2 objects) Figure out a way to get around this + // restriction. + DeleteServerDir( ); +*/ + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SetDisconnectCode +// +// PURPOSE: Sets the disconnection code and message +// +// --------------------------------------------------------------------------- // + +void ClientMultiplayerMgr::SetDisconnectCode(uint32 nCode, const char *pMsg) +{ + // Don't override what someone already told us + if (m_nDisconnectCode) + return; + + m_nDisconnectCode = nCode; + + if( pMsg ) + m_sDisconnectMsg = pMsg; + else + m_sDisconnectMsg.Empty( ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::ClearDisconnectCode +// +// PURPOSE: Clears the disconnection code and message +// +// --------------------------------------------------------------------------- // + +void ClientMultiplayerMgr::ClearDisconnectCode() +{ + m_nDisconnectCode = 0; + m_sDisconnectMsg.Empty( ); + m_StartGameRequest.m_Type = GAMEMODE_NONE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::CreateServerDir +// +// PURPOSE: Creates the client's serverdir for joining a remote game. +// +// --------------------------------------------------------------------------- // + +/* +IServerDirectory* ClientMultiplayerMgr::CreateServerDir( ) +{ + // Make sure we don't already have one. + DeleteServerDir( ); + + // Get the resource module so we can give it to the serverdir for + // error messages. + void* pModule = NULL; + g_pLTClient->GetEngineHook("cres_hinstance",&pModule); + HMODULE hModule = (HINSTANCE)pModule; + + m_pServerDir = Factory_Create_IServerDirectory_Titan( true, *g_pLTClient, hModule ); + if( !m_pServerDir ) + return NULL; + + // Set the game's name + m_pServerDir->SetGameName(g_pVersionMgr->GetNetGameName()); + // Set the version + m_pServerDir->SetVersion(g_pVersionMgr->GetNetVersion()); + m_pServerDir->SetRegion(g_pVersionMgr->GetNetRegion()); + // Set up the packet header + CAutoMessage cMsg; + cMsg.Writeuint8(11); // CMSG_MESSAGE + cMsg.Writeuint8(MID_MULTIPLAYER_SERVERDIR); + m_pServerDir->SetNetHeader(*cMsg.Read()); + + return m_pServerDir; + return NULL; +} +*/ + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::DeleteServerDir +// +// PURPOSE: Remove the server dir. +// +// --------------------------------------------------------------------------- // + +/* +void ClientMultiplayerMgr::DeleteServerDir( ) +{ + if( m_pServerDir ) + { + // No leaking, please... + delete m_pServerDir; + m_pServerDir = NULL; + } +} +*/ + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SetCurMessageSource +// +// PURPOSE: Set the source address of the message which is currently being processed +// +// --------------------------------------------------------------------------- // + +void ClientMultiplayerMgr::SetCurMessageSource(const uint8 aAddr[4], uint16 nPort) +{ + m_aCurMessageSourceAddr[0] = aAddr[0]; + m_aCurMessageSourceAddr[1] = aAddr[1]; + m_aCurMessageSourceAddr[2] = aAddr[2]; + m_aCurMessageSourceAddr[3] = aAddr[3]; + m_nCurMessageSourcePort = nPort; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::GetCurMessageSource +// +// PURPOSE: Get the source address of the message which is currently being processed +// +// --------------------------------------------------------------------------- // + +void ClientMultiplayerMgr::GetCurMessageSource(uint8 aAddr[4], uint16 *pPort) +{ + aAddr[0] = m_aCurMessageSourceAddr[0]; + aAddr[1] = m_aCurMessageSourceAddr[1]; + aAddr[2] = m_aCurMessageSourceAddr[2]; + aAddr[3] = m_aCurMessageSourceAddr[3]; + *pPort = m_nCurMessageSourcePort; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::OnMessage() +// +// PURPOSE: Handle client messages +// +// ----------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::OnMessage(uint8 messageID, ILTMessage_Read *pMsg) +{ + // Check inputs. + if( !pMsg ) + { + ASSERT( !"ClientMultiplayerMgr::OnMessage: Invalid msg." ); + return false; + } + + switch(messageID) + { + case MID_HANDSHAKE: + return HandleMsgHandshake( *pMsg ); + break; + case MID_PLAYER_SINGLEPLAYER_INIT: + return HandleMsgPlayerSingleplayerInit ( *pMsg); + break; + case MID_PLAYER_MULTIPLAYER_INIT: + return HandleMsgPlayerMultiplayerInit( *pMsg ); + break; + case MID_MULTIPLAYER_DATA: + return HandleMsgMultiplayerData( *pMsg ); + break; +/* case MID_MULTIPLAYER_SERVERDIR: + if (GetServerDir()) + { + char aAddrBuffer[16]; + sprintf(aAddrBuffer, "%d.%d.%d.%d", + (uint32)m_aCurMessageSourceAddr[0], + (uint32)m_aCurMessageSourceAddr[1], + (uint32)m_aCurMessageSourceAddr[2], + (uint32)m_aCurMessageSourceAddr[3]); + return GetServerDir()->HandleNetMessage(*CLTMsgRef_Read(pMsg->SubMsg(pMsg->Tell())), aAddrBuffer, m_nCurMessageSourcePort); + } + else + return false; +*/ + break; + default: + break; + + } + + return false; +} + + +bool ClientMultiplayerMgr::HandleMsgHandshake( ILTMessage_Read & msg ) +{ + int nHandshakeSub = (int)msg.Readuint8(); + switch (nHandshakeSub) + { + case MID_HANDSHAKE_HELLO : + { + int nHandshakeVer = (int)msg.Readuint16(); + if (nHandshakeVer != GAME_HANDSHAKE_VER) + { + // Disconnect + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_NotSameGUID,NULL); + + return true; + } + + // Send back a hello response + CAutoMessage cResponse; + cResponse.Writeuint8(MID_HANDSHAKE); + cResponse.Writeuint8(MID_HANDSHAKE_HELLO); + cResponse.Writeuint16(GAME_HANDSHAKE_VER); + // Send them our secret key + cResponse.Writeuint32( GAME_HANDSHAKE_PASSWORD ); + g_pLTClient->SendToServer(cResponse.Read(), MESSAGE_GUARANTEED); + } + break; + case MID_HANDSHAKE_PASSWORD: + { + // Read in their key + m_nServerKey = msg.Readuint32(); + bool bNeedPassword = msg.Readbool(); + + uint32 nPassword = GAME_HANDSHAKE_PASSWORD; + uint32 nXORMask = GAME_HANDSHAKE_MASK; + + nPassword ^= nXORMask; + + // Game password. + uint32 nHashedPassword = 0; + if (bNeedPassword) + { + nHashedPassword = m_nClientPass; + } + + // Get the weapons file CRC + uint32 nWeaponCRC = g_pWeaponMgr->GetFileCRC(); + // Mask that up too + nWeaponCRC ^= nXORMask; + + // CRC the modelbutes.txt + uint32 nModelButesCRC = g_pModelButeMgr->GetFileCRC( ); + uint32 nModelButesMaskedCRC = nModelButesCRC ^ nXORMask; + + // CRC the surface.txt + static uint32 nSurfaceCRC = CRC32::CalcRezFileCRC( g_pSurfaceMgr->GetAttributeFile( )); + uint32 nSurfaceMaskedCRC = nSurfaceCRC ^ nXORMask; + + // CRC the damagefx.txt + static uint32 nDamageFxCRC = CRC32::CalcRezFileCRC( "attributes\\damagefx.txt" ); + uint32 nDamageFxMaskedCRC = nDamageFxCRC ^ nXORMask; + + // CRC the autoexec.cfg + static uint32 nAutoexecCRC = CRC32::CalcFileCRC( "autoexec.cfg" ); + uint32 nAutoexecMaskedCRC = nAutoexecCRC ^ nXORMask; + + // Get the client shell file CRC + char aClientShellName[MAX_PATH + 1]; + // Just in case getting the file name fails + aClientShellName[0] = 0; + // Get the client shell handle from the engine + HMODULE hClientShell; + g_pLTClient->GetEngineHook("cshell_hinstance", (void**)&hClientShell); + DWORD nResult = GetModuleFileName(hClientShell, aClientShellName, sizeof(aClientShellName)); + // Pass the real name of the file, since we'll be working with a possible temporary named + // cshell.dll. + uint32 nClientCRC = CRC32::CalcFileCRC(aClientShellName, "cshell.dll" ); + + // Mask that up too + nClientCRC ^= nXORMask; + + // Check if we need to send the cdkey. + bool bNeedsCDKey = msg.Readbool( ); + char szChallenge[256] = ""; + char szChallengeResponse[256] = ""; + if( bNeedsCDKey ) + { + msg.ReadString( szChallenge, ARRAY_LEN( szChallenge )); + char szCDKey[256]; + g_pVersionMgr->GetCDKey( szCDKey, ARRAY_LEN( szCDKey )); + uint32 nChallengeResponseLen = ARRAY_LEN( szChallengeResponse ); + + // Make sure we have a serverbrowser object. + if( !m_pRetailGameSpyBrowser ) + { + CreateServerBrowsers( ); + } + + m_pRetailGameSpyBrowser->CDKeyComputeChallengeResponse( szCDKey, szChallenge, szChallengeResponse, nChallengeResponseLen ); + } + + // Send it back their direction + CAutoMessage cResponse; + cResponse.Writeuint8(MID_HANDSHAKE); + cResponse.Writeuint8(MID_HANDSHAKE_LETMEIN); + cResponse.Writeuint32(nPassword); + cResponse.Writeuint32(nWeaponCRC); + cResponse.Writeuint32(nClientCRC); + cResponse.Writeuint32(nModelButesMaskedCRC); + cResponse.Writeuint32(nSurfaceMaskedCRC); + cResponse.Writeuint32(nDamageFxMaskedCRC); + cResponse.Writeuint32(nAutoexecMaskedCRC); + cResponse.Writeuint32(nHashedPassword); + if( bNeedsCDKey ) + { + cResponse.WriteString( szChallenge ); + cResponse.WriteString( szChallengeResponse ); + } + g_pLTClient->SendToServer(cResponse.Read(), MESSAGE_GUARANTEED); + } + break; + case MID_HANDSHAKE_DONE: + { + // This just means the server validated us... + } + break; + case MID_HANDSHAKE_INVALIDASSETS: + { + // Oops... wrong password, disconnect + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_InvalidAssets, NULL); + } + break; + case MID_HANDSHAKE_WRONGPASS: + { + // Oops... wrong password, disconnect + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_WrongPassword, NULL); + } + break; + case MID_HANDSHAKE_BADCDKEY: + { + // Bad cdkey. + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_BadCdKey, NULL); + } + break; + case MID_HANDSHAKE_BANNED: + { + // I'm a baaaaaad boy.... + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_Banned, NULL); + } + break; + default : + { + // Disconnect + m_bForceDisconnect = true; + SetDisconnectCode(eDisconnect_NotSameGUID, NULL); + } + break; + } + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::HandleMsgPlayerSingleplayerInit() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::HandleMsgPlayerSingleplayerInit (ILTMessage_Read& msg) +{ + return InitSinglePlayer(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::HandleMsgPlayerMultiplayerInit() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::HandleMsgPlayerMultiplayerInit(ILTMessage_Read& msg) +{ + return InitMultiPlayer(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::HandleMsgMultiplayerData() +// +// PURPOSE: Read multiplayer data sent from server. +// +// ----------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::HandleMsgMultiplayerData( ILTMessage_Read& msg ) +{ + GameType eGameType = ( GameType )msg.Readuint8(); + g_pGameClientShell->SetGameType( eGameType ); + + // Check if some joker set us to single player. + if( eGameType == eGameTypeSingle ) + { + ASSERT( !"ClientMultiplayerMgr::HandleMsgMultiplayerData: Invalid game type." ); + return false; + } + + msg.ReadString( m_sServerAddress.GetBuffer( 256 ), 256 ); + m_sServerAddress.ReleaseBuffer( ); + uint32 tmp = msg.Readuint32(); + m_nServerPort = (int)tmp; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::OnEvent() +// +// PURPOSE: Called for asynchronous errors that cause the server +// to shut down +// +// ----------------------------------------------------------------------- // + +void ClientMultiplayerMgr::OnEvent(uint32 dwEventID, uint32 dwParam) +{ + if( !IsMultiplayerGame( )) + return; + + switch(dwEventID) + { + // Client disconnected from server. dwParam will + // be a error flag found in de_codes.h. + case LTEVENT_DISCONNECT : + { + m_sServerAddress.Empty( ); + m_nServerPort = -1; + m_sServerName.Empty( ); + m_nServerKey = 0; + } + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::Update() +// +// PURPOSE: Frame update. +// +// ----------------------------------------------------------------------- // + +void ClientMultiplayerMgr::Update( ) +{ + // This will happen when something wanted to disconnect, but wasn't + // in a valid location to do so. (e.g. when processing packets..) + if (m_bForceDisconnect) + { + g_pLTClient->Disconnect(); + m_bForceDisconnect = false; + return; + } + + UpdateConnectionState( ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SetService +// +// PURPOSE: Selects the connection service for hosting/joining internet games. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::SetService( ) +{ + NetService *pCur, *pListHead; + HNETSERVICE hNetService; + + pCur = NULL; + pListHead = NULL; + hNetService = NULL; + + if( g_pLTClient->GetServiceList( pListHead ) != LT_OK || !pListHead ) + return false; + + // Find the service specified. + pCur = pListHead; + while( pCur ) + { + if( pCur->m_dwFlags & NETSERVICE_TCPIP ) + { + hNetService = pCur->m_handle; + break; + } + + pCur = pCur->m_pNext; + } + + // Free the service list. + g_pLTClient->FreeServiceList( pListHead ); + + // Check if tcp not found. + if( !hNetService ) + return false; + + // Select it. + if( g_pLTClient->SelectService( hNetService ) != LT_OK ) + return false; + + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::StartClient +// +// PURPOSE: Start a client of a remote server. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::StartClient( ) +{ + // Start off disconnected. + m_eConnectionState = eConnectionState_Disconnected; + + // Initialize the networking. + m_nLastConnectionResult = g_pLTClient->InitNetworking(NULL, 0); + if (m_nLastConnectionResult != LT_OK) + { + return false; + } + + // Initialize our protocol. + if (!SetService()) + return false; + + // Hook up the netgame and clientinfo. + m_StartGameRequest.m_pClientData = &m_NetClientData; + m_StartGameRequest.m_ClientDataLen = sizeof( m_NetClientData ); + + // If we don't need natneg, then go right to connecting. + if( !m_bDoNatNegotiations ) + { + m_eConnectionState = eConnectionState_Connecting; + return true; + } + + // Convert the address string into ip and port. + char szIP[256]; + uint16 nPort; + char* pszPortDelim = strchr( m_StartGameRequest.m_TCPAddress, ':' ); + if( !pszPortDelim || !pszPortDelim[1] ) + return false; + uint32 nIPLen = pszPortDelim - m_StartGameRequest.m_TCPAddress; + strncpy( szIP, m_StartGameRequest.m_TCPAddress, nIPLen ); + szIP[nIPLen] = 0; + nPort = atoi( pszPortDelim + 1 ); + + // Start a ping request. This just gets the networking rolling. + SOCKET hSocket; + if( LT_OK != g_pLTClient->OpenSocket( &hSocket )) + return false; + + // Make sure we have a serverbrowser object. + if( !m_pRetailGameSpyBrowser ) + { + CreateServerBrowsers( ); + } + + if( m_pRetailGameSpyBrowser && hSocket ) + { + // Start natneg process. + if( m_pRetailGameSpyBrowser->RequestNatNegotiation( hSocket, szIP, nPort )) + { + m_StartGameRequest.m_nSocket = hSocket; + m_eConnectionState = eConnectionState_NatNeg; + return true; + } + } + + // Couldn't get natneg going, just do regular connecting. + m_eConnectionState = eConnectionState_Connecting; + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::StartServerHost +// +// PURPOSE: Start a hosted game. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::StartServerAsHost( ) +{ + // If they want a dedicated server, then launch the serverapp. + if( m_ServerGameOptions.m_bDedicated ) + { + if( !g_pGameClientShell->LauncherServerApp( m_ServerGameOptions.m_sProfileName.c_str( ))) + return false; + + return true; + } + + // Check if we're already connected to a server. + if( g_pLTClient->IsConnected( )) + { + // Check if we are already hosting mp. + if( IsMultiplayerGame( ) && m_StartGameRequest.m_Type == STARTGAME_HOST ) + { + // Don't need to restart a server. + return true; + } + } + + // Initialize the networking. Always start a new server with hosted games. + m_nLastConnectionResult = g_pLTClient->InitNetworking(NULL, 0); + if (m_nLastConnectionResult != LT_OK) + { + return false; + } + + // Initialize our protocol. + if (!SetService()) + return false; + + // Make sure we throw away the serverbrowser objects. + TermBrowsers( ); + + // Hook up the netgame and clientinfo. + ServerGameOptions* pServerGameOptions = &m_ServerGameOptions; + m_StartGameRequest.m_pGameInfo = &pServerGameOptions; + m_StartGameRequest.m_GameInfoLen = sizeof( pServerGameOptions ); + m_StartGameRequest.m_pClientData = &m_NetClientData; + m_StartGameRequest.m_ClientDataLen = sizeof( m_NetClientData ); + + // Go right to being connected. + m_eConnectionState = eConnectionState_Connected; + + // Start the server. + m_nLastConnectionResult = g_pLTClient->StartGame( const_cast< StartGameRequest * >( &m_StartGameRequest )); + + return ( m_nLastConnectionResult == LT_OK ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::StartServerSinglePlayer +// +// PURPOSE: Starts the single player server. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::StartServerAsSinglePlayer( ) +{ + // Check if we're already connected to a server. + if( g_pLTClient->IsConnected( )) + { + // Check if we are already running sp server. + if( !IsMultiplayerGame( ) && m_StartGameRequest.m_Type == STARTGAME_NORMAL ) + { + // Don't need to restart a server. + return true; + } + } + + // Make sure the profile is set. + m_ServerGameOptions.m_eGameType = g_pGameClientShell->GetGameType( ); + ServerGameOptions* pServerGameOptions = &m_ServerGameOptions; + m_StartGameRequest.m_pGameInfo = &pServerGameOptions; + m_StartGameRequest.m_GameInfoLen = sizeof( pServerGameOptions ); + + + // Make sure we throw away the serverbrowser objects. + TermBrowsers( ); + + // Start with clean slate + m_StartGameRequest.m_Type = STARTGAME_NORMAL; + + // Go right to being connected. + m_eConnectionState = eConnectionState_Connected; + + m_nLastConnectionResult = g_pLTClient->StartGame(&m_StartGameRequest); + + return ( m_nLastConnectionResult == LT_OK ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::StartClientServer +// +// PURPOSE: Starts a client/server based on previously set startgamerequest. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::StartClientServer( ) +{ + //clear out old session specific data before starting new session + m_nTeam = INVALID_TEAM; + m_bHasSelectedTeam = false; + m_ServerGameOptions.m_eServerStartResult = eServerStartResult_None; + + switch( m_StartGameRequest.m_Type ) + { + case STARTGAME_NORMAL: + return StartServerAsSinglePlayer( ); + break; + case STARTGAME_HOST: + return StartServerAsHost( ); + break; + case STARTGAME_CLIENTTCP: + return StartClient( ); + break; + default: + ASSERT( !"ClientMultiplayerMgr::StartClientServer: Invalid gamerequest type." ); + return false; + break; + } +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::SelectTeam() +// +// PURPOSE: choose a team. +// +// ----------------------------------------------------------------------- // + +void ClientMultiplayerMgr::SelectTeam(uint8 nTeam, bool bPlayerSelected ) +{ + if (bPlayerSelected) + m_bHasSelectedTeam = true; + m_nTeam = nTeam; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: ClientMultiplayerMgr::UpdateNetClientData +// +// PURPOSE: Updates the NetClientData to reflect current settings. +// +// --------------------------------------------------------------------------- // + +bool ClientMultiplayerMgr::UpdateNetClientData( ) +{ + // Setup our client... + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if( !pProfile ) + { + ASSERT( !"ClientMultiplayerMgr::UpdateNetClientData: Invalid profile." ); + return false; + } + + // Check if the user overrode the player name on the command line. + char szPlayerNameOverride[MAX_PLAYER_NAME] = ""; + LTStrCpy( szPlayerNameOverride, FixPlayerName(GetConsoleTempString( "playername", "" )), ARRAY_LEN( szPlayerNameOverride )); + + if( szPlayerNameOverride[0] ) + { + pProfile->m_sPlayerName = szPlayerNameOverride; + } + + LTStrCpy(m_NetClientData.m_szName,pProfile->m_sPlayerName.c_str(), ARRAY_LEN( m_NetClientData.m_szName )); + + // Setup the name guid. + SAFE_STRCPY(m_NetClientData.m_szPlayerGuid,pProfile->m_sPlayerGuid.c_str( )); + + // Setup the model. + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + m_NetClientData.m_ePlayerModelId = g_pModelButeMgr->GetCPModel( pProfile->m_nCPPlayerModel ); + break; + case eGameTypeDeathmatch: + m_NetClientData.m_ePlayerModelId = g_pModelButeMgr->GetDMModel( pProfile->m_nDMPlayerModel ); + break; + }; + + return true; +} + +// ----------------------------------------------------------------------- // +// Function name : SetupGameSpyBrowser +// Description : Sets the gamespybrowser object up with property keys. +// Return type : static bool - true on success. +// Argument : IGameSpyBrowser& gameSpyBrowser - browser to setup. +// ----------------------------------------------------------------------- // +static bool SetupGameSpyBrowser( IGameSpyBrowser& gameSpyBrowser ) +{ + // Register the keys used. + gameSpyBrowser.RegisterKey( "hostname" ); + gameSpyBrowser.RegisterKey( "mapname" ); + gameSpyBrowser.RegisterKey( "numplayers" ); + gameSpyBrowser.RegisterKey( "maxplayers" ); + gameSpyBrowser.RegisterKey( "gametype" ); + gameSpyBrowser.RegisterKey( "gamemode" ); + gameSpyBrowser.RegisterKey( "password" ); + gameSpyBrowser.RegisterKey( "gamever" ); + gameSpyBrowser.RegisterKey( "fraglimit" ); + gameSpyBrowser.RegisterKey( "timelimit" ); + gameSpyBrowser.RegisterKey( "player_" ); + gameSpyBrowser.RegisterKey( "frags_" ); + gameSpyBrowser.RegisterKey( "ping_" ); + gameSpyBrowser.RegisterKey( "modname" ); + gameSpyBrowser.RegisterKey( "options" ); + + // Use these keys for the summary. + gameSpyBrowser.AddSummaryKey( "hostname" ); + gameSpyBrowser.AddSummaryKey( "numplayers" ); + gameSpyBrowser.AddSummaryKey( "maxplayers" ); + gameSpyBrowser.AddSummaryKey( "gametype" ); + gameSpyBrowser.AddSummaryKey( "gamever" ); + gameSpyBrowser.AddSummaryKey( "modname" ); + gameSpyBrowser.AddSummaryKey( "password" ); + + return true; +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::CreateServerBrowsers +// Description : Creates the serverbrowser objects needed for joining +// public/lan retail/demo servers. +// Return type : static bool - true on success. +// ----------------------------------------------------------------------- // +bool ClientMultiplayerMgr::CreateServerBrowsers( ) +{ + if( !m_pRetailGameSpyBrowser ) + { + // Create the retail browser. + IGameSpyBrowser::StartupInfo startupInfo; + startupInfo.m_eGameSKU = eGameSKU_ContractJack_Retail; + m_pRetailGameSpyBrowser = IGameSpyBrowser::Create( startupInfo ); + SetupGameSpyBrowser( *m_pRetailGameSpyBrowser ); + } + + if( !m_pDemoGameSpyBrowser ) + { + // Create the mpdemo browser. + IGameSpyBrowser::StartupInfo startupInfo; +#if defined( _PRDEMO ) + startupInfo.m_eGameSKU = eGameSKU_ContractJack_PRDemo; +#else // defined( _PRDEMO ) + startupInfo.m_eGameSKU = eGameSKU_ContractJack_MPDemo; +#endif // defined( _PRDEMO ) + m_pDemoGameSpyBrowser = IGameSpyBrowser::Create( startupInfo ); + SetupGameSpyBrowser( *m_pDemoGameSpyBrowser ); + } + + return true; +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::TermBrowsers +// Description : Deletes the server browser objects. Good idea +// to delete them when you are done with them, +// since they can store lots of data in the server lists. +// ----------------------------------------------------------------------- // +void ClientMultiplayerMgr::TermBrowsers( ) +{ + // Delete the browsers now that we're joining. + if( m_pRetailGameSpyBrowser ) + { + IGameSpyBrowser::Delete( m_pRetailGameSpyBrowser ); + m_pRetailGameSpyBrowser = NULL; + } + if( m_pDemoGameSpyBrowser ) + { + IGameSpyBrowser::Delete( m_pDemoGameSpyBrowser ); + m_pDemoGameSpyBrowser = NULL; + } +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::UpdateConnectionState +// Description : Updates the statemachine. +// ----------------------------------------------------------------------- // +void ClientMultiplayerMgr::UpdateConnectionState( ) +{ + switch( m_eConnectionState ) + { + case eConnectionState_Disconnected: + break; + case eConnectionState_NatNeg: + { + UpdateState_NatNeg( ); + } + break; + case eConnectionState_SettleComm: + { + UpdateState_SettleComm( ); + } + break; + case eConnectionState_Connecting: + { + UpdateState_Connecting( ); + } + break; + case eConnectionState_Connected: + break; + case eConnectionState_Failure: + { + g_pInterfaceMgr->LoadFailed( ); + m_eConnectionState = eConnectionState_Disconnected; + } + break; + } +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::UpdateState_NatNeg +// Description : Updates the natneg state. +// ----------------------------------------------------------------------- // +void ClientMultiplayerMgr::UpdateState_NatNeg( ) +{ + switch( m_pRetailGameSpyBrowser->GetBrowserStatus( )) + { + case IGameSpyBrowser::eBrowserStatus_Processing: + break; + case IGameSpyBrowser::eBrowserStatus_Error: + case IGameSpyBrowser::eBrowserStatus_Idle: + // Drop the socket, we don't need it any more. + m_StartGameRequest.m_nSocket = StartGameRequest::kInvalidSocket; + m_eConnectionState = eConnectionState_Connecting; + break; + case IGameSpyBrowser::eBrowserStatus_Complete: + sockaddr_in sockAddr; + m_pRetailGameSpyBrowser->GetNatNegotiationResult( ( sockaddr* )( &sockAddr )); + + // Change our address to the one found. + sprintf( m_StartGameRequest.m_TCPAddress, ADDR_PRINTF, EXPAND_ADDR( sockAddr )); + + m_SettleCommTimer.Start( 2.0f ); + m_eConnectionState = eConnectionState_SettleComm; + break; + } +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::UpdateState_SettleComm +// Description : Lets comm settle for a few seconds. +// ----------------------------------------------------------------------- // +void ClientMultiplayerMgr::UpdateState_SettleComm( ) +{ + if( m_SettleCommTimer.Stopped( )) + { + m_eConnectionState = eConnectionState_Connecting; + } +} + +// ----------------------------------------------------------------------- // +// Function name : ClientMultiplayerMgr::UpdateState_Connecting +// Description : Updates the connecting state. +// ----------------------------------------------------------------------- // +void ClientMultiplayerMgr::UpdateState_Connecting( ) +{ + // We will try to connect to the server using several methods. First, we'll use + // the default address that we have determined through gamespy. This may or may + // not have been setup through natneg. Then we'll try to connect to the private address. + // If that doesn't work, we'll try the public address. If none of those work, we'll + // give up. + enum EConnectAddress + { + eConnectAddress_Default, + eConnectAddress_Private, + eConnectAddress_Public, + eConnectAddress_Failed, + }; + EConnectAddress eConnectAddress = eConnectAddress_Default; + while( eConnectAddress != eConnectAddress_Failed ) + { + bool bConnected = false; + int nRetries = 0; + while (nRetries >= 0) + { + // If successful, then we're done. + m_nLastConnectionResult = g_pLTClient->StartGame( const_cast< StartGameRequest * >( &m_StartGameRequest )); + if( m_nLastConnectionResult == LT_OK ) + { + bConnected = true; + break; + } + + // If we didn't timeout, then there's no reason to try again. + if( m_nLastConnectionResult != LT_TIMEOUT ) + { + break; + } + + // Wait a little and try again. + Sleep(250); + nRetries--; + } + + // Check if we connected. + if( bConnected ) + { + m_eConnectionState = eConnectionState_Connected; + break; + } + + // Go to the next address to try. + if( eConnectAddress == eConnectAddress_Default ) + { + strncpy( m_StartGameRequest.m_TCPAddress, m_sConnectPrivateAddress.c_str( ), MAX_SGR_STRINGLEN); + eConnectAddress = eConnectAddress_Private; + } + else if( eConnectAddress == eConnectAddress_Private ) + { + strncpy( m_StartGameRequest.m_TCPAddress, m_sConnectPublicAddress.c_str( ), MAX_SGR_STRINGLEN); + eConnectAddress = eConnectAddress_Public; + } + else + { + eConnectAddress = eConnectAddress_Failed; + } + } + + if( eConnectAddress == eConnectAddress_Failed ) + { + m_eConnectionState = eConnectionState_Failure; + } + + // Make sure we throw away the serverbrowser objects. Throw away + // after startgame call just in case more comm was required. + TermBrowsers( ); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientMultiplayerMgr.h b/Jack/ClientShellDLL/ClientMultiplayerMgr.h new file mode 100644 index 00000000..76e6ca0a --- /dev/null +++ b/Jack/ClientShellDLL/ClientMultiplayerMgr.h @@ -0,0 +1,220 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientMultiplayerMgr.h +// +// PURPOSE : Clientside multiplayer mgr - Declaration +// +// CREATED : 02/05/02 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENTMULTIPLAYERMGR_H_ +#define __CLIENTMULTIPLAYERMGR_H_ + +#include "VarTrack.h" +#include "NetDefs.h" +#include "ProfileUtils.h" + +class IGameSpyBrowser; + + +enum eDisconnectCodes +{ + eDisconnect_None = 0, + eDisconnect_NotSameGUID, + eDisconnect_WrongPassword, + eDisconnect_InvalidAssets, + eDisconnect_BadCdKey, + eDisconnect_Banned, +}; + + +// Controls state machine of connecting with a server +enum EConnectionState +{ + eConnectionState_Disconnected, + eConnectionState_NatNeg, + eConnectionState_SettleComm, + eConnectionState_Connecting, + eConnectionState_Connected, + eConnectionState_Failure, +}; + +class ClientMultiplayerMgr +{ +public: + + ClientMultiplayerMgr( ); + ~ClientMultiplayerMgr( ); + + // Update called once per frame. + void Update( ); + + bool InitMultiPlayer(); + bool UpdateMultiPlayer(); + bool UpdateNetClientData( ); + bool InitSinglePlayer(); + + // Disconnect on the next update + void ForceDisconnect() { m_bForceDisconnect = true;} + + // Pass the pNatNegBrowser if server requires NAT Negotiations. + bool SetupClient(char const* pszHostName, char const* pszPassword, + bool bDoNatNegotiations, bool bConnectViaPublic, + char const* pszPublicAddress, char const* pszPrivateAddress ); + + // Setup the server for singleplayer. + bool SetupServerSinglePlayer( ); + + // Setup the server to host a multiplayer game. + bool SetupServerHost( int nPort, bool bLanOnly ); + + // Handles engine event. + void OnEvent(uint32 dwEventID, uint32 dwParam); + + // Handles message from engine. + bool OnMessage(uint8 messageID, ILTMessage_Read *pMsg); + + + void DoTaunt(uint32 nClientID,uint32 nTaunt); + + + // Sets the networking service. + bool SetService( ); + + // Accessors to setup server information. + StartGameRequest& GetStartGameRequest( ) { return m_StartGameRequest; } + ServerGameOptions& GetServerGameOptions( ) { return m_ServerGameOptions; } + NetClientData& GetNetClientData( ) { return m_NetClientData; } + + // Start a client of a server based on previously set startgamerequest. + bool StartClientServer( ); + + + // This client is connected to remote server. + bool IsConnectedToRemoteServer( ) { return ( m_StartGameRequest.m_Type == STARTGAME_CLIENTTCP ); } + + //returns true if the passed in address matches the current server address + bool CheckServerAddress(char const*pszTestAddress, int nPort); + // Called when the engine wants to tell the game a disconnection code (a.k.a. hack) + virtual void SetDisconnectCode(uint32 nCode, const char *pMsg); + // Internal game-side support for the disconnection code + void ClearDisconnectCode(); + uint32 GetDisconnectCode() { return m_nDisconnectCode; } + const char *GetDisconnectMsg() { return m_sDisconnectMsg; } + + const char *GetServerAddress() const {return m_sServerAddress;} + const char *GetServerName() const {return m_sServerName;} + + // Get/Set the source address of the message which is currently being processed + void SetCurMessageSource(const uint8 aAddr[4], uint16 nPort); + void GetCurMessageSource(uint8 aAddr[4], uint16 *pPort); + + LTRESULT GetLastConnectionResult() {return m_nLastConnectionResult;} + + void SelectTeam(uint8 nTeam, bool bPlayerSelected); + bool HasSelectedTeam() { return m_bHasSelectedTeam; } + + void SetModName( const char *pszModName ) { m_sModName = pszModName; } + const char* GetModName( ) const { return m_sModName.c_str(); } + + // Get retail server browser. + IGameSpyBrowser* GetRetailServerBrowser( ) { return m_pRetailGameSpyBrowser; } + // Get demo server browser. + IGameSpyBrowser* GetDemoServerBrowser( ) { return m_pDemoGameSpyBrowser; } + // Creates the server browsers. + bool CreateServerBrowsers( ); + // Deletes the browsers. + void TermBrowsers( ); + + // Update the state machine. + void UpdateConnectionState( ); + EConnectionState GetConnectionState( ) const { return m_eConnectionState; } + +protected : + + bool HandleMsgHandshake( ILTMessage_Read& msg ); + bool HandleMsgMultiplayerData( ILTMessage_Read& pMsg ); + bool HandleMsgPlayerMultiplayerInit( ILTMessage_Read& msg ); + bool HandleMsgPlayerSingleplayerInit (ILTMessage_Read& msg); + + bool StartServerAsSinglePlayer( ); + bool StartServerAsHost( ); + bool StartClient( ); + + void UpdateState_NatNeg( ); + void UpdateState_SettleComm( ); + void UpdateState_Connecting( ); + +private: + + // Must be filled out before StartLocalGame, StartNetworkGameAsXXX calls. + StartGameRequest m_StartGameRequest; + ServerGameOptions m_ServerGameOptions; + NetClientData m_NetClientData; + + // The serverbrowser object containing information on the server we + // are going to connect to. + bool m_bDoNatNegotiation; + + //these refer to the server we are currently connected to + CString m_sServerAddress; + int m_nServerPort; + CString m_sServerName; + + //used for handshaking with server + uint32 m_nServerKey; + uint32 m_nClientPass; + + // Disconnection code/msg storage + uint32 m_nDisconnectCode; + CString m_sDisconnectMsg; + + LTRESULT m_nLastConnectionResult; + + // Connection handling + bool m_bForceDisconnect; // Set this flag to disconnect on the next update + + // Server directory interface +// IServerDirectory* m_pServerDir; + + // Current message source + uint8 m_aCurMessageSourceAddr[4]; + uint16 m_nCurMessageSourcePort; + + + uint8 m_nTeam; + bool m_bHasSelectedTeam; + + // The name of our selected mod... + std::string m_sModName; + + // Gamespy browser for retail games. + IGameSpyBrowser* m_pRetailGameSpyBrowser; + + // Gamespy browser for demo games. + IGameSpyBrowser* m_pDemoGameSpyBrowser; + + // Should do natnegotions on next client connect. + bool m_bDoNatNegotiations; + + EConnectionState m_eConnectionState; + + // Used to let comm settle after natneg. + CTimer m_SettleCommTimer; + + // Try initial connect through public address. + bool m_bConnectViaPublic; + + // public address to try to connect to. + std::string m_sConnectPublicAddress; + // private address to try to connect to. + std::string m_sConnectPrivateAddress; +}; + +extern ClientMultiplayerMgr* g_pClientMultiplayerMgr; + +#endif // __CLIENTMULTIPLAYERMGR_H_ + diff --git a/Jack/ClientShellDLL/ClientSaveLoadMgr.cpp b/Jack/ClientShellDLL/ClientSaveLoadMgr.cpp new file mode 100644 index 00000000..de447979 --- /dev/null +++ b/Jack/ClientShellDLL/ClientSaveLoadMgr.cpp @@ -0,0 +1,491 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SaveLoadMgr.cpp +// +// PURPOSE : Manages the Saving and Loading of games.. +// +// CREATED : 12/06/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + +#include "stdafx.h" +#include "ClientSaveLoadMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" +#include "MsgIds.h" +#include "ClientMultiplayerMgr.h" +#include "CMoveMgr.h" +#include "clientres.h" + +// +// Globals... +// + +CClientSaveLoadMgr *g_pClientSaveLoadMgr = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::CClientSaveLoadMgr +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CClientSaveLoadMgr::CClientSaveLoadMgr( ) +{ + ASSERT( g_pClientSaveLoadMgr == LTNULL ); + + g_pClientSaveLoadMgr = this; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::~CClientSaveLoadMgr +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CClientSaveLoadMgr::~CClientSaveLoadMgr( ) +{ + Term( ); + + ASSERT( g_pClientSaveLoadMgr != LTNULL ); + + g_pClientSaveLoadMgr = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::Init +// +// PURPOSE: Initializes the object. +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::Init( char const* pszProfileName, bool bUseMultiplayerFolders ) +{ + if( !CSaveLoadMgr::Init( pszProfileName, bUseMultiplayerFolders )) + return false; + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::Term +// +// PURPOSE: Terminates the object. +// +// ----------------------------------------------------------------------- // + +void CClientSaveLoadMgr::Term( ) +{ + CSaveLoadMgr::Term( ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::OnCommandOn +// +// PURPOSE: Handle a save/load command +// +// ----------------------------------------------------------------------- // + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::QuickSave +// +// PURPOSE: Handle quick saving of the game... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::QuickSave( ) +{ + // Make sure it's valid to save. + if( !CanSaveGame()) + return false; + + g_pGameClientShell->CSPrint( LoadTempString( IDS_QUICKSAVING )); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_SAVE_GAME ); + cMsg.Writeuint8( 0 ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::QuickLoad +// +// PURPOSE: Handle the loading of the quick save file... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::QuickLoad( ) +{ + if( !CanLoadGame( ) || !QuickSaveExists( )) + return false; + + g_pPlayerMgr->TurnOffAlternativeCamera(CT_FULLSCREEN); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_LOAD_GAME ); + cMsg.Writeuint8( kLoadGameTypeQuick ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::SaveGameSlot +// +// PURPOSE: Save a named game to a specific slot... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::SaveGameSlot( uint32 nSlot, char const* pszSaveName ) +{ + // Are we trying to save to the Quick save slot? + + if( nSlot == 0 ) + return QuickSave(); + + if( !pszSaveName ) + return false; + + // Make sure it's valid to save. + if( !CanSaveGame( )) + return false; + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_SAVE_GAME ); + cMsg.Writeuint8( nSlot ); + cMsg.WriteString( pszSaveName ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::LoadGameSlot +// +// PURPOSE: Load a game from a specific slot... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::LoadGameSlot( uint32 nSlot ) +{ + if( !CanLoadGame( ) || !SlotSaveExists( nSlot )) + return false; + + g_pPlayerMgr->TurnOffAlternativeCamera(CT_FULLSCREEN); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_LOAD_GAME ); + cMsg.Writeuint8( kLoadGameTypeSlot ); + cMsg.Writeuint8( nSlot ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::ReloadLevel +// +// PURPOSE: Reload the current level... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::ReloadLevel( ) +{ + if( !CanLoadGame( ) || !ReloadSaveExists() ) + return false; + + g_pPlayerMgr->TurnOffAlternativeCamera(CT_FULLSCREEN); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_LOAD_GAME ); + cMsg.Writeuint8( kLoadGameTypeReload ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::LoadCheckpointSave +// +// PURPOSE: Load the checkpointsave. +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::LoadCheckpointSave( ) +{ + if( !CanLoadGame( ) || !CheckpointSaveExists() ) + return false; + + g_pPlayerMgr->TurnOffAlternativeCamera(CT_FULLSCREEN); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_LOAD_GAME ); + cMsg.Writeuint8( kLoadGameTypeCheckpointSave ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::ContinueGame +// +// PURPOSE: Load the last saved game... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::ContinueGame() +{ + // Are we allowed to continue? + if( !CanLoadGame( ) || !CanContinueGame() ) + return false; + + g_pPlayerMgr->TurnOffAlternativeCamera(CT_FULLSCREEN); + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_LOAD_GAME ); + cMsg.Writeuint8( kLoadGameTypeContinue ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::CanSaveGame +// +// PURPOSE: Test if we are allowed to save... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::CanSaveGame() const +{ + //can't save while on the mission summary screen, because we're between worlds + if (g_pMissionMgr->IsExitingLevel() || g_pMissionMgr->IsGameOver()) + return false; + + //don't save if we're already trying to switch worlds + if (g_pGameClientShell->GetSwitchingWorldsState() != eSwitchingWorldsStateFinished && + g_pGameClientShell->GetSwitchingWorldsState() != eSwitchingWorldsStateNone) + { + return false; + } + + if (!g_pMoveMgr->CanSave()) + return false; + + // Handle single player. + if( !IsMultiplayerGame( )) + { + return (g_pPlayerMgr->IsPlayerInWorld() && + !g_pPlayerMgr->IsPlayerDead() && + !g_pPlayerMgr->IsUsingExternalCamera()); + } + // Handle multiplayer. + else + { + // Remote clients can't do saves. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + return false; + + bool bCanSave = false; + + switch( g_pGameClientShell->GetGameType( )) + { + case eGameTypeCooperative: + bCanSave = true; + break; + default: + bCanSave = false; + break; + } + + return bCanSave; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::CanLoadGame +// +// PURPOSE: Test if we are allowed to Load... +// +// ----------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::CanLoadGame( ) const +{ + //can't load while on the mission summary screen + if (g_pMissionMgr->IsExitingLevel() || g_pMissionMgr->IsGameOver()) + return false; + + //don't load if we're already trying to switch worlds + if (g_pGameClientShell->GetSwitchingWorldsState() != eSwitchingWorldsStateFinished && + g_pGameClientShell->GetSwitchingWorldsState() != eSwitchingWorldsStateNone) + { + return false; + } + + + // Handle single player. + if( !IsMultiplayerGame( )) + { + return true; + } + // Handle multiplayer. + else + { + // Remote clients can do saves. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + return false; + + bool bCanSave = false; + + switch( g_pGameClientShell->GetGameType( )) + { + case eGameTypeCooperative: + bCanSave = true; + break; + default: + bCanSave = false; + break; + } + + return bCanSave; + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::OnMessage +// +// PURPOSE: Handle messages. +// +// --------------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::OnMessage( uint8 messageID, ILTMessage_Read& msg ) +{ + switch (messageID) + { + case MID_SAVE_DATA: HandleSaveData ( msg ); return true; break; + case MID_SAVE_GAME: HandleSaveGameMsg ( msg ); return true; break; + default: + break; + } + + return false; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::HandleSaveData +// +// PURPOSE: Handle savedata message from server. +// +// --------------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::HandleSaveData( ILTMessage_Read& msg ) +{ + SaveDataState eSaveDataState = static_cast(msg.Readuint8()); + + // If we're not the host, then let the user know a save is happening. + // Don't show reloadsave's. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) && eSaveDataState != eSaveDataReloadSave ) + { + g_pGameClientShell->CSPrint( LoadTempString( IDS_SAVINGGAME )); + } + else if( eSaveDataState == eSaveDataCheckpointSave ) + { + g_pGameClientShell->CSPrint( LoadTempString( IDS_SAVINGCHECKPOINT )); + } + + // Give the server our save data. + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_SAVE_DATA) ; + + // If we're just doing a keepalive save, then we don't have any failure conditions. + bool bCanSave = false; + if( eSaveDataState == eSaveDataStateSwitchLevels ) + { + bCanSave = true; + } + // need to check if we're jumping, if we are, refuse to save + else + { + bCanSave = g_pMoveMgr->CanSave(); + } + + if( bCanSave ) + { + cMsg.Writebool(true); + g_pGameClientShell->BuildClientSaveMsg( cMsg, eSaveDataState ); + } + else + { + cMsg.Writebool(false); + } + + + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CClientSaveLoadMgr::HandleSaveGameMsg +// +// PURPOSE: Handle savedata message from server. +// +// --------------------------------------------------------------------------- // + +bool CClientSaveLoadMgr::HandleSaveGameMsg( ILTMessage_Read& msg ) +{ + bool bSucceed = msg.Readbool(); + bool bAbort = msg.Readbool( ); + + if (!bSucceed) + { + if( bAbort ) + { + g_pInterfaceMgr->LoadFailed( ); + return true; + } + + // Can't quicksave now... + g_pGameClientShell->CSPrint(LoadTempString(IDS_CANTQUICKSAVE)); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\Nosave.wav"); + } + + return true; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientSaveLoadMgr.h b/Jack/ClientShellDLL/ClientSaveLoadMgr.h new file mode 100644 index 00000000..271c2c05 --- /dev/null +++ b/Jack/ClientShellDLL/ClientSaveLoadMgr.h @@ -0,0 +1,62 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientSaveLoadMgr.h +// +// PURPOSE : Manages the Saving and Loading of games for client. +// +// CREATED : 02/07/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENTSAVELOADMGR_H__ +#define __CLIENTSAVELOADMGR_H__ + +#include "SaveLoadMgr.h" + +// +// Globals... +// + +class CClientSaveLoadMgr; +extern CClientSaveLoadMgr *g_pClientSaveLoadMgr; + + +class CClientSaveLoadMgr : public CSaveLoadMgr +{ + public : // Methods... + + CClientSaveLoadMgr( ); + virtual ~CClientSaveLoadMgr( ); + + virtual bool Init( char const* pszProfileName, bool bUseMultiplayerFolders ); + virtual void Term( ); + + bool OnCommandOn( int nCommand ); + bool CanSaveGame() const; + bool CanLoadGame() const; + + bool QuickSave(); + bool QuickLoad(); + + bool ReloadLevel(); + bool ContinueGame(); + + bool LoadCheckpointSave( ); + + bool SaveGameSlot( uint32 nSlot, char const* pszSaveName ); + bool LoadGameSlot( uint32 nSlot ); + + bool OnMessage( uint8 messageID, ILTMessage_Read& msg ); + + private : // Methods... + + bool HandleSaveData( ILTMessage_Read& msg ); + bool HandleSaveGameMsg( ILTMessage_Read& msg ); + + + private : // Members... +}; + +#endif // __CLIENTSAVELOADMGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientShellDLL.vcproj b/Jack/ClientShellDLL/ClientShellDLL.vcproj new file mode 100644 index 00000000..976e0a98 --- /dev/null +++ b/Jack/ClientShellDLL/ClientShellDLL.vcproj @@ -0,0 +1,2121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jack/ClientShellDLL/ClientShellDLL.vcproj.vspscc b/Jack/ClientShellDLL/ClientShellDLL.vcproj.vspscc new file mode 100644 index 00000000..837212cd --- /dev/null +++ b/Jack/ClientShellDLL/ClientShellDLL.vcproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "file:C:\\proj\\to2\\source\\Game\\ClientShellDLL\\ClientShellDLL.vcproj" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Jack/ClientShellDLL/ClientSoundMgr.cpp b/Jack/ClientShellDLL/ClientSoundMgr.cpp new file mode 100644 index 00000000..3ff66b6b --- /dev/null +++ b/Jack/ClientShellDLL/ClientSoundMgr.cpp @@ -0,0 +1,239 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientSoundMgr.cpp +// +// PURPOSE : ClientSoundMgr implementation - Controls sound on the client +// +// CREATED : 7/10/00 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientSoundMgr.h" +#include "CommonUtilities.h" +#include "VarTrack.h" +#include "SoundFilterMgr.h" +#include "SoundButeMgr.h" +#include "ClientUtilities.h" + +// Global pointer to client sound mgr... + +CClientSoundMgr* g_pClientSoundMgr = LTNULL; + +SOUNDFILTER* g_pUnfilteredFilter = LTNULL; + +VarTrack g_vtSoundPlayOnlyIfHeard; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CServerSoundMgr::CServerSoundMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CClientSoundMgr::CClientSoundMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CServerSoundMgr::~CServerSoundMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CClientSoundMgr::~CClientSoundMgr() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSoundMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CClientSoundMgr::Init(const char* szAttributeFile) +{ + g_pClientSoundMgr = this; + + g_vtSoundPlayOnlyIfHeard.Init(g_pLTClient, "SoundPlayOnlyIfHeard", NULL, 0.0f); + + return CGameSoundMgr::Init(szAttributeFile); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSoundMgr::Term() +// +// PURPOSE: Clean up. +// +// ----------------------------------------------------------------------- // + +void CClientSoundMgr::Term() +{ + g_pClientSoundMgr = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSoundMgr::PlaySoundLocal +// +// PURPOSE: Plays an unfiltered interface sound. +// +// ----------------------------------------------------------------------- // + +HLTSOUND CClientSoundMgr::PlayInterfaceSound(const char *pName, uint32 dwFlags) +{ + if (!pName) return LTNULL; + if (!GetConsoleInt("SoundEnable",1)) return LTNULL; + + PlaySoundInfo psi; + PLAYSOUNDINFO_INIT(psi); + + psi.m_dwFlags = PLAYSOUND_LOCAL; + psi.m_dwFlags |= dwFlags; + + strncpy(psi.m_szSoundName, pName, _MAX_PATH); + psi.m_nPriority = SOUNDPRIORITY_MISC_MEDIUM; + + // Play interface sounds unfiltered... + + if (!g_pUnfilteredFilter) + { + g_pUnfilteredFilter = g_pSoundFilterMgr->GetFilter("UnFiltered"); + } + + psi.m_UserData = g_pUnfilteredFilter->nId; + + return PlaySound(psi); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSoundMgr::PlaySoundLocal +// +// PURPOSE: Plays sound inside the player's head +// +// ----------------------------------------------------------------------- // + +HLTSOUND CClientSoundMgr::PlaySoundLocal(const char *pName, SoundPriority ePriority, + uint32 dwFlags, uint8 nVolume, float fPitchShift, uint8 nSoundClass ) +{ + if (!pName) return LTNULL; + if (!GetConsoleInt("SoundEnable",1)) return LTNULL; + + PlaySoundInfo psi; + PLAYSOUNDINFO_INIT(psi); + + // See if the passed in name is really a sound bute... + + int nSoundBute = g_pSoundButeMgr->GetSoundSetFromName( pName ); + if( nSoundBute != INVALID_SOUND_BUTE ) + { + // Ok, it's a soundBute, Get it... + + SoundBute sb = g_pSoundButeMgr->GetSoundBute( nSoundBute ); + + // Check for the play chance + + if( sb.m_fPlayChance < 1.0f ) + { + if( GetRandom(0.0f,1.0f) > sb.m_fPlayChance ) + return LTNULL; + } + + // Get a random sound file from the SoundButes' play list... + + strncpy( psi.m_szSoundName, g_pSoundButeMgr->GetRandomSoundFileWeighted( nSoundBute ), _MAX_PATH ); + + // Should we use passed in values or SoundBute values... + + psi.m_nPriority = (ePriority == SOUNDPRIORITY_MISC_LOW ? SOUNDPRIORITY_MISC_LOW : sb.m_ePriority); + psi.m_nVolume = (nVolume == SMGR_DEFAULT_VOLUME ? SMGR_DEFAULT_VOLUME : sb.m_nVolume); + psi.m_fPitchShift = (fPitchShift >= 1.0f ? 1.0f : sb.m_fPitch); + dwFlags = sb.m_nFlags; + } + else + { + // Just a normal sound file, play it with the passed in values... + + strncpy(psi.m_szSoundName, pName, _MAX_PATH); + psi.m_nPriority = ePriority; + psi.m_nVolume = nVolume; + psi.m_fPitchShift = fPitchShift; + psi.m_nSoundVolumeClass = nSoundClass; + } + + psi.m_dwFlags = PLAYSOUND_LOCAL; + psi.m_dwFlags |= dwFlags; + + // Make sure local sounds aren't 3d... + psi.m_dwFlags &= ~PLAYSOUND_3D; + + if (nVolume < 100) + { + psi.m_dwFlags |= PLAYSOUND_CTRL_VOL; + } + + return PlaySound(psi); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientSoundMgr::PlaySound() +// +// PURPOSE: Play the sound associated with the sound info +// +// ----------------------------------------------------------------------- // + +HLTSOUND CClientSoundMgr::PlaySound(PlaySoundInfo & psi) +{ + HLTSOUND hSnd = LTNULL; + if (!GetConsoleInt("SoundEnable",1)) return LTNULL; + + // Play the sound... + + // Optimization, if we can't hear the sound and it isn't looping + // don't play it! + + if ((psi.m_dwFlags & PLAYSOUND_3D) && + !(psi.m_dwFlags & PLAYSOUND_LOOP) && + g_vtSoundPlayOnlyIfHeard.GetFloat()) + { + LTVector vListenerPos; + bool bListenerInClient; + LTRotation rRot; + g_pLTClient->GetListener(&bListenerInClient, &vListenerPos, &rRot); + + LTVector vPos = psi.m_vPosition - vListenerPos; + if (vPos.Mag() > psi.m_fOuterRadius) + { + return LTNULL; + } + } + + + LTRESULT hResult = g_pLTClient->SoundMgr()->PlaySound(&psi, hSnd); + + if (hResult != LT_OK) + { + DebugCPrint(1,"ERROR in CClientSoundMgr::PlaySound() - Couldn't play sound '%s'", psi.m_szSoundName); + + return LTNULL; + } + + // [RP] The sound handle that gets passed into PlaySound(), hSnd, will *always* get set. Since the + // SoundTracks get recycled if we return hSnd we may be setting a handle to a SoundTrack that will + // get removed by the engine and put back on the free list. Any future calls to KillSound() using that + // handle will be killing the wrong sound or *worse*, a sound that doesn't exist. Returning the handle + // of the PlaySoundInfo struct will ensure we only return a valid handle if explicitly told to (ie. PLAYSOUND_GETHANDLE); + + return psi.m_hSound; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientSoundMgr.h b/Jack/ClientShellDLL/ClientSoundMgr.h new file mode 100644 index 00000000..8e197c23 --- /dev/null +++ b/Jack/ClientShellDLL/ClientSoundMgr.h @@ -0,0 +1,54 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientSoundMgr.h +// +// PURPOSE : ClientSoundMgr definition - Controls sound on the client +// +// CREATED : 7/10/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENT_SOUND_MGR_H__ +#define __CLIENT_SOUND_MGR_H__ + +#include "SoundMgr.h" + +class CClientSoundMgr; +extern CClientSoundMgr* g_pClientSoundMgr; + +#define CSNDMGR_DEFAULT_FILE "Attributes\\ClientSnd.txt" + +class CClientSoundMgr : public CGameSoundMgr +{ + public : + + CClientSoundMgr(); + ~CClientSoundMgr(); + + virtual LTBOOL Init(const char* szAttributeFile=CSNDMGR_DEFAULT_FILE); + virtual void Term(); + + HLTSOUND PlaySoundLocal(const char *pName, SoundPriority ePriority=SOUNDPRIORITY_MISC_LOW, + uint32 dwFlags=0, uint8 nVolume=SMGR_DEFAULT_VOLUME, float fPitchShift=1.0f, + uint8 nSoundClass = 0 ); + + HLTSOUND PlayInterfaceSound(const char *pName, uint32 dwFlags=0); + + virtual LTVector GetObjectPos(HOBJECT hObj) + { + LTVector vPos(0, 0, 0); + if (hObj) + { + g_pLTClient->GetObjectPos(hObj, &vPos); + } + + return vPos; + } + + virtual HLTSOUND PlaySound(PlaySoundInfo & playSoundInfo); + +}; + +#endif // __CLIENT_SOUND_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientTrackedNodeContext.cpp b/Jack/ClientShellDLL/ClientTrackedNodeContext.cpp new file mode 100644 index 00000000..2c2276c4 --- /dev/null +++ b/Jack/ClientShellDLL/ClientTrackedNodeContext.cpp @@ -0,0 +1,108 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientTrackedNodeContext.cpp +// +// PURPOSE : ClientTrackedNodeContext implementation +// Manages the current node tracking settings per model instance +// on the client. +// +// CREATED : 3/27/02 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientTrackedNodeContext.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeContext::CClientTrackedNodeContext +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CClientTrackedNodeContext::CClientTrackedNodeContext() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeContext::~CClientTrackedNodeContext +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CClientTrackedNodeContext::~CClientTrackedNodeContext() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeContext::HandleServerMessage +// +// PURPOSE: Handle server message, changing context settings. +// +// ----------------------------------------------------------------------- // + +void CClientTrackedNodeContext::HandleServerMessage(ILTMessage_Read *pMsg) +{ + EnumTrackMsg eTrackMsg = (EnumTrackMsg)pMsg->Readuint32(); + + switch( eTrackMsg ) + { + case kTrackMsg_ActivateGroup: + HandleActivateGroup( pMsg ); + break; + + case kTrackMsg_SetTarget: + HandleSetTarget( pMsg ); + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeContext:: Message handlers +// +// PURPOSE: Handle server messages, changing context settings. +// +// ----------------------------------------------------------------------- // + +void CClientTrackedNodeContext::HandleActivateGroup(ILTMessage_Read *pMsg) +{ + EnumTrackedNodeGroup eGroup = (EnumTrackedNodeGroup)pMsg->Readuint32(); + SetActiveTrackingGroup( eGroup ); +} + +// ----------------------------------------------------------------------- // + +void CClientTrackedNodeContext::HandleSetTarget(ILTMessage_Read *pMsg) +{ + EnumTrackedNodeGroup eGroup = (EnumTrackedNodeGroup)pMsg->Readuint32(); + EnumTrackTarget eTrackingTarget = (EnumTrackTarget)pMsg->Readuint32(); + HOBJECT hTarget = pMsg->ReadObject(); + HMODELNODE hNode = pMsg->Readuint32(); + LTVector vTarget = pMsg->ReadLTVector(); + + // Set targeting. + + switch( eTrackingTarget ) + { + case kTrackTarget_Model: + SetTrackedTarget( eGroup, hTarget, hNode, vTarget ); + break; + + case kTrackTarget_Object: + SetTrackedTarget( eGroup, hTarget, vTarget ); + break; + + case kTrackTarget_Position: + SetTrackedTarget( eGroup, vTarget ); + break; + } +} + diff --git a/Jack/ClientShellDLL/ClientTrackedNodeContext.h b/Jack/ClientShellDLL/ClientTrackedNodeContext.h new file mode 100644 index 00000000..90945507 --- /dev/null +++ b/Jack/ClientShellDLL/ClientTrackedNodeContext.h @@ -0,0 +1,35 @@ +#ifndef __CLIENT_TRACKEDNODECONTEXT_H__ +#define __CLIENT_TRACKEDNODECONTEXT_H__ + +#include "TrackedNodeContext.h" + + +// +// CClientTrackedNodeContext: +// Manages the current node tracking settings per model instance +// on the client. +// + +class CClientTrackedNodeContext : public CTrackedNodeContext +{ + typedef CTrackedNodeContext super; + +public: + // Creation/destruction. + + CClientTrackedNodeContext(); + virtual ~CClientTrackedNodeContext(); + + // Message handling. + + void HandleServerMessage(ILTMessage_Read *pMsg); + +protected: + + void HandleActivateGroup(ILTMessage_Read *pMsg); + void HandleSetTarget(ILTMessage_Read *pMsg); +}; + + +#endif + diff --git a/Jack/ClientShellDLL/ClientTrackedNodeMgr.cpp b/Jack/ClientShellDLL/ClientTrackedNodeMgr.cpp new file mode 100644 index 00000000..5877a2ec --- /dev/null +++ b/Jack/ClientShellDLL/ClientTrackedNodeMgr.cpp @@ -0,0 +1,46 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientTrackedNodeMgr.cpp +// +// PURPOSE : ClientTrackedNodeMgr implementation +// +// CREATED : 3/6/02 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientTrackedNodeMgr.h" + +// Global pointer to client tracked node mgr... + +CClientTrackedNodeMgr* g_pClientTrackedNodeMgr = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeMgr::CClientTrackedNodeMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CClientTrackedNodeMgr::CClientTrackedNodeMgr() : CTrackedNodeMgr( g_pLTClient ) +{ + ASSERT( !g_pClientTrackedNodeMgr && "CClientTrackedNodeMgr: Singleton already exists." ); + g_pClientTrackedNodeMgr = this; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientTrackedNodeMgr::~CClientTrackedNodeMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CClientTrackedNodeMgr::~CClientTrackedNodeMgr() +{ + g_pClientTrackedNodeMgr = LTNULL; +} + diff --git a/Jack/ClientShellDLL/ClientTrackedNodeMgr.h b/Jack/ClientShellDLL/ClientTrackedNodeMgr.h new file mode 100644 index 00000000..aca6df0c --- /dev/null +++ b/Jack/ClientShellDLL/ClientTrackedNodeMgr.h @@ -0,0 +1,18 @@ +#ifndef __CLIENT_TRACKEDNODEMGR_H__ +#define __CLIENT_TRACKEDNODEMGR_H__ + +#include "TrackedNodeMgr.h" + +class CClientTrackedNodeMgr; +extern CClientTrackedNodeMgr* g_pClientTrackedNodeMgr; + +class CClientTrackedNodeMgr : public CTrackedNodeMgr +{ +public: + CClientTrackedNodeMgr(); + ~CClientTrackedNodeMgr(); +}; + + +#endif + diff --git a/Jack/ClientShellDLL/ClientUtilities.cpp b/Jack/ClientShellDLL/ClientUtilities.cpp new file mode 100644 index 00000000..fdc1faf7 --- /dev/null +++ b/Jack/ClientShellDLL/ClientUtilities.cpp @@ -0,0 +1,636 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientUtilities.cpp +// +// PURPOSE : Utility functions +// +// CREATED : 9/25/97 +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include +#include "ClientUtilities.h" +#include "GameClientShell.h" +#include "VarTrack.h" +#include "VKdefs.h" +#include "WeaponMgr.h" +#include "ClientServerShared.h" +#include "ClientMultiplayerMgr.h" + +//------------------------------------------------------------------------------------------- +// CropSurface +// +// Crops the given surface to smallest possible area +// Arguments: +// hSurf - surface to be cropped +// hBorderColor - color of area to be cropped +// Return: +// cropped surface if successful, original surface otherwise +//------------------------------------------------------------------------------------------- +HSURFACE CropSurface ( HSURFACE hSurf, HLTCOLOR hBorderColor ) +{ + if (!g_pGameClientShell) return hSurf; + + if (!hSurf) return LTNULL; + + uint32 nWidth, nHeight; + g_pLTClient->GetSurfaceDims (hSurf, &nWidth, &nHeight); + + LTRect rcBorders; + memset (&rcBorders, 0, sizeof (LTRect)); + g_pLTClient->GetBorderSize (hSurf, hBorderColor, &rcBorders); + + if (rcBorders.left == 0 && rcBorders.top == 0 && rcBorders.right == 0 && rcBorders.bottom == 0) return hSurf; + + HSURFACE hCropped = g_pLTClient->CreateSurface (nWidth - rcBorders.left - rcBorders.right, nHeight - rcBorders.top - rcBorders.bottom); + if (!hCropped) return hSurf; + + LTRect rcSrc; + rcSrc.left = rcBorders.left; + rcSrc.top = rcBorders.top; + rcSrc.right = nWidth - rcBorders.right; + rcSrc.bottom = nHeight - rcBorders.bottom; + + g_pLTClient->DrawSurfaceToSurface (hCropped, hSurf, &rcSrc, 0, 0); + + g_pLTClient->DeleteSurface (hSurf); + + return hCropped; +} + + +// The following two functions should be used to determine how long a block +// of code takes to execute. For example: +// +// StartTimingCounter(); +// float p1 = 30.0f, p2 = 50.0f; +// Function(p1, p2); +// EndTimingCounter("Function(%.2f, %.2f)", p1, p2); +// +// If "Function" took 1000 ticks to execute, the above code would print in +// the console: +// Function(30.00, 50.00) : 1000 ticks +// +// NOTE: The timing information is only printed to the console if the server +// console variable "ShowTiming" is set to 1. (i.e., showtiming 1) + +#ifndef __PSX2 // Defiend in serverutils.cpp +extern VarTrack g_vtShowTimingTrack; +static LTCounter s_counter; + +void StartTimingCounter() +{ + if (!g_pLTClient || g_vtShowTimingTrack.GetFloat() < 1.0f) return; + + g_pLTClient->StartCounter(&s_counter); +} + +void EndTimingCounter(char *msg, ...) +{ + if (!g_pLTClient || g_vtShowTimingTrack.GetFloat() < 1.0f) return; + + uint32 dwTicks = g_pLTClient->EndCounter(&s_counter); + + // parse the message + + char pMsg[256]; + va_list marker; + va_start(marker, msg); + int nSuccess = vsprintf(pMsg, msg, marker); + va_end(marker); + + if (nSuccess < 0) return; + + g_pLTClient->CPrint("%s : %d ticks", pMsg, dwTicks); +} +#endif + + +void GetConsoleString(char const* sKey, char* sDest, char const* sDefault) +{ + if (g_pLTClient) + { + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(( char* )sKey); + if (hVar) + { + const char* sValue = g_pLTClient->GetVarValueString(hVar); + if (sValue) + { + strcpy(sDest, sValue); + return; + } + } + } + + strcpy(sDest, sDefault); +} + +char* GetConsoleTempString(char const* sKey, char const* sDefault) +{ + static char szTmp[256]; + szTmp[0] = NULL; + if (g_pLTClient) + { + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(( char* )sKey); + if (hVar) + { + const char* sValue = g_pLTClient->GetVarValueString(hVar); + if (sValue) + { + SAFE_STRCPY(szTmp, sValue); + return szTmp; + } + } + } + + SAFE_STRCPY(szTmp, sDefault); + return szTmp; +} + +int GetConsoleInt(char const* sKey, int nDefault) +{ + if (g_pLTClient) + { + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(( char* )sKey); + if (hVar) + { + float fValue = g_pLTClient->GetVarValueFloat(hVar); + return((int)fValue); + } + } + + return(nDefault); +} +bool GetConsoleBool( char const* sKey, bool bDefault) +{ + if (g_pLTClient) + { + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(( char* )sKey); + if (hVar) + { + float fValue = g_pLTClient->GetVarValueFloat(hVar); + return(fValue != 0.0f); + } + } + + return(bDefault); +} + +LTFLOAT GetConsoleFloat(char const* sKey, LTFLOAT fDefault) +{ + if (g_pLTClient) + { + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(( char* )sKey); + if (hVar) + { + float fValue = g_pLTClient->GetVarValueFloat(hVar); + return(fValue); + } + } + + return(fDefault); +} + +void WriteConsoleString(char const* sKey, char const* sValue) +{ + if (g_pLTClient) + { + char sTemp[256]; +#ifdef __PSX2 + sprintf(sTemp, "+%s \"%s\"", sKey, sValue); +#else + wsprintf(sTemp, "+%s \"%s\"", sKey, sValue); +#endif + g_pLTClient->RunConsoleString(sTemp); + } +} + +void WriteConsoleInt(char const* sKey, int nValue) +{ + if (g_pLTClient) + { + char sTemp[256]; +#ifdef __PSX2 + sprintf(sTemp, "+%s %i", sKey, nValue); +#else + wsprintf(sTemp, "+%s %i", sKey, nValue); +#endif + g_pLTClient->RunConsoleString(sTemp); + } +} + +void WriteConsoleBool(char const* sKey, bool bValue) +{ + if (g_pLTClient) + { + char sTemp[256]; + sprintf(sTemp, "+%s %i", sKey, (bValue ? 1 : 0)); + g_pLTClient->RunConsoleString(sTemp); + } +} + +void WriteConsoleFloat(char const* sKey, LTFLOAT fValue) +{ + if (g_pLTClient) + { + char sTemp[256]; + sprintf(sTemp, "+%s %f", sKey, fValue); + g_pLTClient->RunConsoleString(sTemp); + } +} + + +static VarTrack s_cvarFirePitchShift; +void PlayWeaponSound(WEAPON const *pWeapon, const LTVector &vPos, PlayerSoundId eSoundId, + LTBOOL bLocal) +{ + if (!pWeapon) return; + + if (!s_cvarFirePitchShift.IsInitted()) + { + s_cvarFirePitchShift.Init(g_pLTClient, "PitchShiftFire", NULL, -1.0f); + } + + char* pSnd = LTNULL; + + LTFLOAT fRadius = WEAPON_SOUND_RADIUS; + + switch (eSoundId) + { + case PSI_FIRE: + { + pSnd = pWeapon->szFireSound; + fRadius = (LTFLOAT) pWeapon->nFireSoundRadius; + } + break; + + case PSI_ALT_FIRE: + { + pSnd = pWeapon->szAltFireSound; + fRadius = (LTFLOAT) pWeapon->nFireSoundRadius; + } + break; + + case PSI_SILENCED_FIRE: + { + pSnd = pWeapon->szSilencedFireSound; + fRadius = (LTFLOAT) pWeapon->nFireSoundRadius; + } + break; + + case PSI_DRY_FIRE: + { + pSnd = pWeapon->szDryFireSound; + fRadius = (LTFLOAT) pWeapon->nFireSoundRadius; + } + break; + + case PSI_RELOAD: + case PSI_RELOAD2: + case PSI_RELOAD3: + { + pSnd = pWeapon->szReloadSounds[eSoundId - PSI_RELOAD]; + fRadius = (LTFLOAT)pWeapon->nWeaponSoundRadius; + } + break; + + case PSI_SELECT: + { + pSnd = pWeapon->szSelectSound; + fRadius = (LTFLOAT)pWeapon->nWeaponSoundRadius; + } + break; + + case PSI_DESELECT: + { + pSnd = pWeapon->szDeselectSound; + fRadius = (LTFLOAT)pWeapon->nWeaponSoundRadius; + } + break; + + case PSI_WEAPON_MISC1: + case PSI_WEAPON_MISC2: + case PSI_WEAPON_MISC3: + case PSI_WEAPON_MISC4: + case PSI_WEAPON_MISC5: + { + pSnd = pWeapon->szMiscSounds[eSoundId - PSI_WEAPON_MISC1]; + fRadius = (LTFLOAT)pWeapon->nWeaponSoundRadius; + } + break; + + case PSI_INVALID: + default : break; + } + + if (pSnd && pSnd[0]) + { + uint32 dwFlags = PLAYSOUND_REVERB; + float fPitchShift = 1.0f; + if (s_cvarFirePitchShift.GetFloat() > 0.0f) + { + dwFlags |= PLAYSOUND_CTRL_PITCH; + fPitchShift = s_cvarFirePitchShift.GetFloat(); + } + + if (bLocal) + { + g_pClientSoundMgr->PlaySoundLocal(pSnd, SOUNDPRIORITY_PLAYER_HIGH, + dwFlags, SMGR_DEFAULT_VOLUME, fPitchShift, WEAPONS_SOUND_CLASS ); + } + else + { + g_pClientSoundMgr->PlaySoundFromPos(const_cast(vPos), pSnd, + fRadius, SOUNDPRIORITY_PLAYER_HIGH, dwFlags, + SMGR_DEFAULT_VOLUME, fPitchShift, -1.0f, WEAPONS_SOUND_CLASS ); + } + } +} + + +LTRESULT SendEmptyServerMsg(uint32 nMsgID, uint32 nFlags) +{ + LTRESULT nResult; + + CAutoMessage cMsg; + + cMsg.Writeuint8(nMsgID); + + nResult = g_pLTClient->SendToServer(cMsg.Read(), nFlags); + + return nResult; +} + + + + +void FormatString(int messageCode, char *outBuf, int outBufLen, ...) +{ + va_list marker; + + void* pModule; + g_pLTClient->GetEngineHook("cres_hinstance",&pModule); + HMODULE hModule = (HINSTANCE)pModule; + + *outBuf = '\0'; + + if (hModule) + { + va_start(marker, outBufLen); + + char tmpBuffer[kMaxStringBuffer]; + uint32 nBytes = LoadString(hModule, messageCode, (char*)tmpBuffer, sizeof(tmpBuffer)); + if (nBytes) + { + FormatMessage(FORMAT_MESSAGE_FROM_STRING,tmpBuffer,0,0,outBuf,outBufLen,&marker); + } + + va_end(marker); + + } + + +} + +void LoadString(int messageCode, char *outBuf, int outBufLen) +{ + void* pModule; + g_pLTClient->GetEngineHook("cres_hinstance",&pModule); + HMODULE hModule = (HINSTANCE)pModule; + + *outBuf = '\0'; + + if (hModule) + { + uint32 nBytes = LoadString(hModule, messageCode, (char*)outBuf, outBufLen); + } +} + +static char s_szStringBuffer[kMaxStringBuffer]; +char* FormatTempString(int messageCode, ...) +{ + va_list marker; + + void* pModule; + g_pLTClient->GetEngineHook("cres_hinstance",&pModule); + HMODULE hModule = (HINSTANCE)pModule; + + s_szStringBuffer[0] = '\0'; + + if (hModule) + { + va_start(marker, messageCode); + + char tmpBuffer[kMaxStringBuffer]; + uint32 nBytes = LoadString(hModule, messageCode, tmpBuffer, sizeof(tmpBuffer)); + if (nBytes) + { + FormatMessage(FORMAT_MESSAGE_FROM_STRING,tmpBuffer,0,0,s_szStringBuffer,sizeof(s_szStringBuffer),&marker); + } + + va_end(marker); + + } + + return s_szStringBuffer; + +} + +char* LoadTempString(int messageCode) +{ + void* pModule; + g_pLTClient->GetEngineHook("cres_hinstance",&pModule); + HMODULE hModule = (HINSTANCE)pModule; + + s_szStringBuffer[0] = '\0'; + + if (hModule) + { + uint32 nBytes = LoadString(hModule, messageCode, s_szStringBuffer, sizeof(s_szStringBuffer)); + } + + return s_szStringBuffer; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::IsMultiplayerGame() +// +// PURPOSE: See if we are playing a multiplayer game +// +// --------------------------------------------------------------------------- // + +bool IsMultiplayerGame() +{ + if( !g_pClientMultiplayerMgr ) + return false; + + int nGameMode = g_pClientMultiplayerMgr->GetStartGameRequest( ).m_Type; + if (nGameMode == STARTGAME_NORMAL || nGameMode == GAMEMODE_NONE) + return false; + + return true; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: bool GetIntersectionUnderPoint +// +// PURPOSE: Helper for finding the normal and point of intersection beneath a given point +// +// ----------------------------------------------------------------------- // + +bool GetIntersectionUnderPoint( LTVector &vInPt, HOBJECT *pFilterList, LTVector &vOutNormal, LTVector &vOutPt ) +{ + ClientIntersectQuery iq; + ClientIntersectInfo ii; + + vOutNormal.Init(0, 1, 0); + + iq.m_Flags = IGNORE_NONSOLID | INTERSECT_OBJECTS | INTERSECT_HPOLY; + iq.m_From = vInPt; + iq.m_To = iq.m_From + LTVector( 0, -1, 0) * 256.0f; + + iq.m_FilterFn = ObjListFilterFn; + iq.m_pUserData = pFilterList; + + if( g_pLTClient->IntersectSegment( &iq, &ii ) ) + { + if( ii.m_hObject ) + { + vOutNormal = ii.m_Plane.m_Normal; + vOutPt = ii.m_Point; + + return true; + } + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: GetContouringNormal +// +// PURPOSE: Find the normal of the plane we would like to contour to +// given a position and dims of an object... +// +// ----------------------------------------------------------------------- // + +LTVector GetContouringNormal( LTVector &vPos, LTVector &vDims, LTVector &vForward, LTVector &vRight, HOBJECT *pFilterList ) +{ + LTVector avPt[4]; // points we are casting the rays from + LTVector avInterPt[4]; // points of intersection + LTVector avNormal[4]; // normals constructed from the points of intersection + LTVector avEdge[4]; + + // Develop the points we wish to cast rays from... + // We keep the height from the object incase the vehicle has clipped into the world. + + avPt[0] = vPos + ( vForward ) - ( vRight ); // 0----1 + avPt[1] = vPos + ( vForward ) + ( vRight ); // | | + avPt[2] = vPos - ( vForward ) + ( vRight ); // | | + avPt[3] = vPos - ( vForward ) - ( vRight ); // 3----2 + + // Find the point of intersection that is under the vehicle... + // If none was found just use the point with the height factored in. + + if( !GetIntersectionUnderPoint( avPt[0], pFilterList, avNormal[0], avInterPt[0] ) ) + { + avInterPt[0] = avPt[0]; + avInterPt[0].y -= vDims.y; + } + + if( !GetIntersectionUnderPoint( avPt[1], pFilterList, avNormal[1], avInterPt[1] ) ) + { + avInterPt[1] = avPt[1]; + avInterPt[1].y -= vDims.y; + } + + if( !GetIntersectionUnderPoint( avPt[2], pFilterList, avNormal[2], avInterPt[2] ) ) + { + avInterPt[2] = avPt[2]; + avInterPt[2].y -= vDims.y; + } + + if( !GetIntersectionUnderPoint( avPt[3], pFilterList, avNormal[3], avInterPt[3] ) ) + { + avInterPt[3] = avPt[3]; + avInterPt[3].y -= vDims.y; + } + + // Move the points to the origin... + + avInterPt[0] -= vPos; + avInterPt[1] -= vPos; + avInterPt[2] -= vPos; + avInterPt[3] -= vPos; + + // Develop the vectors that will construct the 4 planes... + + avEdge[0] = (avInterPt[1] - avInterPt[0]).Unit(); + avEdge[1] = (avInterPt[2] - avInterPt[1]).Unit(); + avEdge[2] = (avInterPt[3] - avInterPt[2]).Unit(); + avEdge[3] = (avInterPt[0] - avInterPt[3]).Unit(); + + // Find the normals of the planes... + + avNormal[0] = -avEdge[3].Cross( avEdge[0] ); + avNormal[1] = -avEdge[0].Cross( avEdge[1] ); + avNormal[2] = -avEdge[1].Cross( avEdge[2] ); + avNormal[3] = -avEdge[2].Cross( avEdge[3] ); + + avNormal[0].Normalize(); + avNormal[1].Normalize(); + avNormal[2].Normalize(); + avNormal[3].Normalize(); + + // Average the normals... + + LTVector vNormal = avNormal[0] + avNormal[1] + avNormal[2] + avNormal[3]; + vNormal.Normalize(); + + return vNormal; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: GetContouringInfo +// +// PURPOSE: Get the pitch amount and percents to apply for pitch and roll +// based on the forward direction and plane normal... +// +// ----------------------------------------------------------------------- // + +void GetContouringInfo( LTVector &vForward, LTVector &vNormal, + float &fOutAmount, float &fOutPitchPercent, float &fOutRollPercent ) +{ + LTVector vPlaneF = (vNormal.y >= 1.0f) ? vForward : vNormal; + + vPlaneF.y = 0.0f; + vPlaneF.Normalize(); + + LTRotation rPlaneRot( vPlaneF, LTVector(0, 1, 0)); + LTVector vPlaneR = rPlaneRot.Right(); + + // Calculate how much pitch and roll we should apply... + + fOutPitchPercent = vForward.Dot( vPlaneF ); + fOutRollPercent = vForward.Dot( vPlaneR ); + + // Figure out the length of the foward vector projected on the xz plane. This + // is needed because Euler angles are calculated cummulatively, not just based + // on the global coordinate axis. + + float fXZLen = (float)sqrt( 1.0f - vNormal.y * vNormal.y ); + + // Subtract the pitch from 90 degrees cause we want to be parallel to the plane + + fOutAmount = MATH_HALFPI - (float)atan2( vNormal.y, fXZLen ); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientUtilities.h b/Jack/ClientShellDLL/ClientUtilities.h new file mode 100644 index 00000000..88e71e33 --- /dev/null +++ b/Jack/ClientShellDLL/ClientUtilities.h @@ -0,0 +1,128 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientUtilities.h +// +// PURPOSE : Utility functions +// +// CREATED : 9/25/97 +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENT_UTILITIES_H__ +#define __CLIENT_UTILITIES_H__ + +#include "SoundTypes.h" +#include "iltclient.h" +#include "CommonUtilities.h" +#include "SoundMgr.h" + +#define DEG2RAD(x) (((x)*MATH_PI)/180.0f) +#define RAD2DEG(x) (((x)*180.0f)/MATH_PI) + +struct DSize +{ + DSize() { cx = 0; cy = 0; } + + unsigned long cx; + unsigned long cy; +}; + +HSURFACE CropSurface(HSURFACE hSurf, HLTCOLOR hBorderColor); + +bool GetConsoleBool(char const* sKey, bool bDefault); +int GetConsoleInt(char const* sKey, int nDefault); +void GetConsoleString(char const* sKey, char* sDest, char const* sDefault); +char* GetConsoleTempString(char const* sKey, char const* sDefault); +LTFLOAT GetConsoleFloat(char const* sKey, LTFLOAT fDefault); +void WriteConsoleBool(char const* sKey, bool bValue); +void WriteConsoleInt(char const* sKey, int nValue); +void WriteConsoleString(char const* sKey, char const* sValue); +void WriteConsoleFloat(char const* sKey, LTFLOAT fValue); + + +// The following two functions should be used to determine how long a block +// of code takes to execute. For example: +// +// StartTimingCounter(); +// float p1 = 30.0f, p2 = 50.0f; +// Function(p1, p2); +// EndTimingCounter("Function(%.2f, %.2f)", p1, p2); +// +// If "Function" took 1000 ticks to execute, the above code would print in +// the console: +// Function(30.00, 50.00) : 1000 ticks +// +// NOTE: The timing information is only printed to the console if the server +// console variable "ShowTiming" is set to 1. (i.e., showtiming 1) +void StartTimingCounter(); +void EndTimingCounter(char *msg, ...); + +inline LTBOOL GetAttachmentSocketTransform(HOBJECT hObj, char* pSocketName, + LTVector & vPos, LTRotation & rRot) +{ + if (!hObj || !pSocketName) return LTFALSE; + + HOBJECT hAttachList[30]; + uint32 dwListSize, dwNumAttachments; + + if (g_pCommonLT->GetAttachments(hObj, hAttachList, + ARRAY_LEN(hAttachList), dwListSize, dwNumAttachments) == LT_OK) + { + for (uint32 i=0; i < dwListSize; i++) + { + if (hAttachList[i]) + { + HMODELSOCKET hSocket; + + if (g_pModelLT->GetSocket(hAttachList[i], pSocketName, hSocket) == LT_OK) + { + LTransform transform; + if (g_pModelLT->GetSocketTransform(hAttachList[i], hSocket, transform, LTTRUE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + return LTTRUE; + } + } + } + } + } + + return LTFALSE; +} + +struct WEAPON; +enum PlayerSoundId; + +void PlayWeaponSound(WEAPON const *pWeapon, const LTVector &vPos, PlayerSoundId eSoundId, + LTBOOL bLocal=LTFALSE); + +#define IsKeyDown(key) (GetAsyncKeyState(key) & 0x80000000) + +// Send an empty message to the server +LTRESULT SendEmptyServerMsg(uint32 nMsgID, uint32 nFlags = MESSAGE_GUARANTEED); + +//load and/or format a string from CRes +const int kMaxStringBuffer = 2048; +void FormatString(int messageCode, char *outBuf, int outBufLen, ...); +void LoadString(int messageCode, char *outBuf, int outBufLen); + +//load and format a string from CRes and return a pointer to a static buffer containing that string +char* FormatTempString(int messageCode, ...); +char* LoadTempString(int messageCode); + + +bool IsMultiplayerGame(); + +// Helper for finding the normal and point of intersection beneath a given point +bool GetIntersectionUnderPoint( LTVector &vInPt, HOBJECT *pFilterList, LTVector &vOutNormal, LTVector &vOutPt ); + +// Find the normal of the plane we would like to contour to given a position and dims of an object. +LTVector GetContouringNormal( LTVector &vPos, LTVector &vDims, LTVector &vForward, LTVector &vRight, HOBJECT *pFilterList ); + +// Get the pitch amount and percents to apply for pitch and roll based on the forward direction and plane normal. +void GetContouringInfo( LTVector &vForward, LTVector &vNormal, float &fOutAmount, float &fOutPitchPercent, float &fOutRollPercent ); + +#endif // __CLIENT_UTILITIES_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeapon.cpp b/Jack/ClientShellDLL/ClientWeapon.cpp new file mode 100644 index 00000000..86d0c69a --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeapon.cpp @@ -0,0 +1,5992 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeapon.cpp +// +// PURPOSE : Generic client-side weapon +// +// CREATED : 9/27/97 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientWeapon.h" +#include "VarTrack.h" +#include "LayoutMgr.h" +#include "PlayerStats.h" +#include "GameClientShell.h" +#include "ModelButeMgr.h" +#include "PlayerMgr.h" +#include "TargetMgr.h" +#include "CharacterFX.h" +#include "BodyFX.h" +#include "MsgIDs.h" +#include "WeaponFXTypes.h" +#include "SurfaceFunctions.h" +#include "ClientWeaponUtils.h" +#include "CMoveMgr.h" +#include "ClientFXMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ShellCasingFX.h" +#include "FXButeMgr.h" +#include "clientres.h" +#include "PlayerViewAttachmentMgr.h" +#include "GadgetTargetFX.h" +#include "AutoTargetMgr.h" + +// +// Externs +// +extern bool g_bInfiniteAmmo; + + +namespace +{ + HMODELANIM const INVALID_ANI = ( static_cast< HMODELANIM >( -1 ) ); + HMODELANIM const DEFAULT_ANI = ( static_cast< HMODELANIM >( 0 ) ); + int const INFINITE_AMMO_AMOUNT = 1000; + + // model animation names + // I wish they could be const, but the engine's interface isn't + char *ns_szSelectAnimationName = "Select"; + char *ns_szDeselectAnimationName = "Deselect"; + char *ns_szReloadAnimationName = "Reload"; + + char *ns_szAltSelectAnimationName = "AltSelect"; + char *ns_szAltDeselectAnimationName = "AltDeselect"; + char *ns_szAltDeselect2AnimationName = "AltDeselect2"; + char *ns_szAltReloadAnimationName = "AltReload"; + + char *ns_szPreFireAnimationName = "PreFire"; + char *ns_szPostFireAnimationName = "PostFire"; + + char *ns_szIdleAnimationBasename = "Idle_"; + + char *ns_szFireAnimationName = "Fire"; + char *ns_szFireAnimationBasename = "Fire"; + + char *ns_szAltIdleAnimationBasename = "AltIdle_"; + + char *ns_szAltFireAnimationName = "AltFire"; + char *ns_szAltFireAnimationBasename = "AltFire"; + + // If -1.0f, the anmiation rates will be unchanged, + // else they will run at the specified speed. + static float nsfOverrideRate = -1.0f; + + bool ns_bInited = false; + VarTrack ns_vtFastTurnRate; + VarTrack ns_vtPerturbRotationEffect; + VarTrack ns_vtPerturbIncreaseSpeed; + VarTrack ns_vtPerturbDecreaseSpeed; + VarTrack ns_vtPerturbWalkPercent; + VarTrack ns_vtCameraShutterSpeed; + VarTrack ns_vtFiringPerturbIncreaseSpeed; + VarTrack ns_vtFiringPerturbDecreaseSpeed; + + bool InitNamespaceVars( void ) + { + if ( ns_bInited ) + { + // bail if we've already inited + return true; + } + + ASSERT( 0 != g_pLayoutMgr ); + + LTBOOL bResult; + LTFLOAT fTemp; + + ns_bInited = true; + + ns_vtFastTurnRate.Init( g_pLTClient, "FastTurnRate", 0, 2.3f ); + + fTemp = g_pLayoutMgr->GetPerturbRotationEffect(); + bResult = ns_vtPerturbRotationEffect.Init( g_pLTClient, "PerturbRotationEffect", 0, fTemp ); + ASSERT( LTTRUE == bResult ); + + fTemp = g_pLayoutMgr->GetPerturbIncreaseSpeed(); + bResult = ns_vtPerturbIncreaseSpeed.Init( g_pLTClient, "PerturbIncreaseSpeed", 0, fTemp ); + ASSERT( LTTRUE == bResult ); + + fTemp = g_pLayoutMgr->GetPerturbDecreaseSpeed(); + bResult = ns_vtPerturbDecreaseSpeed.Init( g_pLTClient, "PerturbDecreaseSpeed", 0, fTemp ); + ASSERT( LTTRUE == bResult ); + + fTemp = g_pLayoutMgr->GetPerturbWalkPercent(); + bResult = ns_vtPerturbWalkPercent.Init( g_pLTClient, "PerturbWalkPercent", 0, fTemp ); + ASSERT( LTTRUE == bResult ); + + bResult = ns_vtCameraShutterSpeed.Init( g_pLTClient, "CameraShutterSpeed", 0, 0.3f ); + ASSERT( LTTRUE == bResult ); + + bResult = ns_vtFiringPerturbIncreaseSpeed.Init( g_pLTClient, "PerturbFiringIncreaseSpeed", 0, 4.0 ); + ASSERT( LTTRUE == bResult ); + + bResult = ns_vtFiringPerturbDecreaseSpeed.Init( g_pLTClient, "PerturbFiringDecreaseSpeed", 0, 1.0 ); + ASSERT( LTTRUE == bResult ); + + return true; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CClientWeapon() +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +CClientWeapon::CClientWeapon() : + m_hObject( 0 ) + , m_hBreachSocket( INVALID_MODEL_SOCKET ) + , m_hSilencerModel( 0 ) + , m_hScopeModel( 0 ) + , m_hSilencerSocket( INVALID_MODEL_SOCKET ) + , m_hScopeSocket( INVALID_MODEL_SOCKET ) + , m_bHaveSilencer( false ) + , m_bHaveScope( false ) + , m_nWeaponId( WMGR_INVALID_ID ) + , m_pWeapon( 0 ) + , m_nAmmoId( WMGR_INVALID_ID ) + , m_pAmmo( 0 ) + , m_vFlashPos( 0.0f, 0.0f, 0.0f ) + , m_vFlashOffset( 0.0f, 0.0f, 0.0f ) + , m_fFireTime( 0.0f) + , m_fBobHeight( 0.0f ) + , m_fBobWidth( 0.0f ) + , m_fMovementPerturb( 0.0f ) + , m_fFiringPerturb( 0.0f ) + , m_eLastFireType( FT_NORMAL_FIRE ) + , m_bCanSetLastFire( false ) + , m_fNextIdleTime( 0.0f ) + , m_bFire( false ) + , m_nAmmoInClip( 0 ) + , m_nNewAmmoInClip( 0 ) + , m_eState( W_INACTIVE ) + , m_nSelectAni( INVALID_ANI ) + , m_nDeselectAni( INVALID_ANI ) + , m_nReloadAni( INVALID_ANI ) + , m_nAltSelectAni( INVALID_ANI ) + , m_nAltDeselectAni( INVALID_ANI ) + , m_nAltDeselect2Ani( INVALID_ANI ) + , m_nAltReloadAni( INVALID_ANI ) + , m_nPreFireAni( INVALID_ANI ) + , m_nPostFireAni( INVALID_ANI ) + , m_bUsingAltFireAnis( false ) + , m_bFireKeyDownLastUpdate( false ) + , m_bWeaponDeselected( false ) + , m_wIgnoreFX( 0 ) + , m_bDisabled( true ) + , m_bVisible( false ) + , m_rCamRot( 0.0f, 0.0f, 0.0f ) + , m_vCamPos( 0.0f, 0.0f, 0.0f ) + , m_hLoopSound( LTNULL ) + , m_nLoopSoundId( PSI_INVALID ) + , m_bFirstSelection( true ) + , m_nTracerNumber( 0 ) + , m_bAutoSwitchEnabled( true ) + , m_bAutoSwitch( false ) + , m_fLastPitch( 0.0f ) + , m_fLastYaw( 0.0f ) + , m_KeyframedClientFX() + , m_bControllingFlashLight( false ) + , m_bPaused( false ) + , m_fHeatAmount( 0.0f ) +{ + int i; + + // clear idle anims + for ( i = 0; i < WM_MAX_IDLE_ANIS; ++i ) + { + m_nIdleAnis[i] = INVALID_ANI; + } + + // clear fire anims + for ( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + m_nFireAnis[i] = INVALID_ANI; + } + + // clear alt-idle anims + for ( i = 0; i < WM_MAX_ALTIDLE_ANIS; ++i ) + { + m_nAltIdleAnis[i] = INVALID_ANI; + } + + // clear alt-fire anims + for ( i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + m_nAltFireAnis[i] = INVALID_ANI; + } + + for( i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + m_bPVAttachClientFXHidden[i] = true; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::~CClientWeapon() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CClientWeapon::~CClientWeapon() +{ + Term(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::OnModelKey() +// +// PURPOSE: Handle animation commands +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::OnModelKey( HLOCALOBJ hObj, ArgList* pArgList ) +{ + static CParsedMsg::CToken s_cTok_WeaponKeySound(WEAPON_KEY_SOUND); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_FIRE( WEAPON_KEY_FIRE ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_SOUND( WEAPON_KEY_SOUND ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_BUTE_SOUND( WEAPON_KEY_BUTE_SOUND ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_LOOPSOUND( WEAPON_KEY_LOOPSOUND ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_FX( WEAPON_KEY_FX ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_FIREFX( WEAPON_KEY_FIREFX ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_HIDE_MODEL_PIECE( WEAPON_KEY_HIDE_MODEL_PIECE ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_SHOW_MODEL_PIECE( WEAPON_KEY_SHOW_MODEL_PIECE ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_FLASHLIGHT( WEAPON_KEY_FLASHLIGHT ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_DEFLECT( WEAPON_KEY_DEFLECT ); + static CParsedMsg::CToken s_cTok_RENDERSTYLE_MODEL_KEY( RENDERSTYLE_MODEL_KEY ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_SHELLCASING( WEAPON_KEY_SHELLCASING ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_HIDE_PVATTACHFX( WEAPON_KEY_HIDE_PVATTACHFX ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_SHOW_PVATTACHFX( WEAPON_KEY_SHOW_PVATTACHFX ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_HIDE_PVATTACHMENT( WEAPON_KEY_HIDE_PVATTACHMENT ); + static CParsedMsg::CToken s_cTok_WEAPON_KEY_SHOW_PVATTACHMENT( WEAPON_KEY_SHOW_PVATTACHMENT ); + + if ( !hObj || + !m_pWeapon || + ( hObj != m_hObject ) || + !pArgList || + !pArgList->argv || + ( pArgList->argc == 0 ) || + m_bDisabled ) + { + return false; + } + + // make sure there is an argument + char* pKey = pArgList->argv[0]; + if ( !pKey ) + { + return false; + } + + // Make a token to compare against. + CParsedMsg::CToken tok( pKey ); + + if( tok == s_cTok_WEAPON_KEY_FIRE ) + { + // + // Fire weapon + // + return HandleFireKey( hObj, pArgList ); + } + else if( tok == s_cTok_WEAPON_KEY_SOUND ) + { + // + // Play a sound globally (everybody should hear it) + // + + if ( ( pArgList->argc > 1 ) && pArgList->argv[ 1 ] ) + { + char* pBuf = 0; + + PlayerSoundId nId = static_cast< PlayerSoundId >( atoi( pArgList->argv[ 1 ] ) ); + switch ( nId ) + { + case PSI_RELOAD: + case PSI_RELOAD2: + case PSI_RELOAD3: + { + pBuf = m_pWeapon->szReloadSounds[ ( nId - PSI_RELOAD ) ]; + } + break; + + case PSI_SELECT: + { + pBuf = m_pWeapon->szSelectSound; + } + break; + + case PSI_DESELECT: + { + pBuf = m_pWeapon->szDeselectSound; + } + break; + + case PSI_WEAPON_MISC1: + case PSI_WEAPON_MISC2: + case PSI_WEAPON_MISC3: + case PSI_WEAPON_MISC4: + case PSI_WEAPON_MISC5: + { + pBuf = m_pWeapon->szMiscSounds[nId - PSI_WEAPON_MISC1]; + } + break; + + case PSI_INVALID: + default: + { + } + break; + } + + if ( pBuf && pBuf[ 0 ] ) + { + g_pClientSoundMgr->PlaySoundLocal( pBuf, SOUNDPRIORITY_PLAYER_HIGH, + PLAYSOUND_REVERB, SMGR_DEFAULT_VOLUME, 1.0f, WEAPONS_SOUND_CLASS ); + + // Send message to Server so that other clients can hear this sound... + uint32 dwId; + LTRESULT ltResult; + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_WEAPON_SOUND ); + + // get this client's ID + ltResult = g_pLTClient->GetLocalClientID( &dwId ); + ASSERT( LT_OK == ltResult ); + + // write the sound to play + cMsg.Writeuint8( nId ); + + // write the weapon's id + cMsg.Writeuint8( m_nWeaponId ); + + // write the client's id + cMsg.Writeuint8( static_cast< uint8 >( dwId ) ); + + // write the flash position (presumably this is where the sound comes from) + cMsg.WriteLTVector( m_vFlashPos ); + + // send the message + ltResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == ltResult ); + } + } + } + else if( tok == s_cTok_WEAPON_KEY_BUTE_SOUND ) + { + // + // Play a sound locally + // + + // Play a sound bute... + if( ( pArgList->argc > 1 ) && pArgList->argv[ 1 ] ) + { + g_pClientSoundMgr->PlaySoundLocal( pArgList->argv[1], SOUNDPRIORITY_PLAYER_HIGH, + PLAYSOUND_REVERB, SMGR_DEFAULT_VOLUME, 1.0f, WEAPONS_SOUND_CLASS ); + } + } + else if( tok == s_cTok_WEAPON_KEY_LOOPSOUND ) + { + // Handle a looping sound key + + if( ( pArgList->argc > 1 ) && pArgList->argv[ 1 ] ) + { + if( 0 == stricmp( pArgList->argv[1], "STOP" )) + { + // Stop the looping sound from playing... + + KillLoopSound(); + + // Send message to server so all clients can stop the sound... + // An id of invalid means stop + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_SOUND_LOOP ); + cMsg.Writeuint8( PSI_INVALID ); + cMsg.Writeuint8( m_nWeaponId ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; + } + + char* pBuf = 0; + + PlayerSoundId nId = static_cast< PlayerSoundId >( atoi( pArgList->argv[ 1 ] ) ); + switch( nId ) + { + case PSI_RELOAD: // 1 + case PSI_RELOAD2: // 2 + case PSI_RELOAD3: // 3 + { + pBuf = m_pWeapon->szReloadSounds[ ( nId - PSI_RELOAD ) ]; + } + break; + + case PSI_SELECT: pBuf = m_pWeapon->szSelectSound; break; // 4 + case PSI_DESELECT: pBuf = m_pWeapon->szDeselectSound; break; // 5 + case PSI_FIRE: pBuf = m_pWeapon->szFireSound; break; // 6 + case PSI_DRY_FIRE: pBuf = m_pWeapon->szDryFireSound; break; // 7 + case PSI_ALT_FIRE: pBuf = m_pWeapon->szAltFireSound; break; // 8 + case PSI_SILENCED_FIRE: pBuf = m_pWeapon->szSilencedFireSound; break; // 9 + + case PSI_WEAPON_MISC1: // 10 + case PSI_WEAPON_MISC2: // 11 + case PSI_WEAPON_MISC3: // 12 + case PSI_WEAPON_MISC4: // 13 + case PSI_WEAPON_MISC5: // 14 + { + pBuf = m_pWeapon->szMiscSounds[nId - PSI_WEAPON_MISC1]; + } + break; + + case PSI_INVALID: + default: + { + } + break; + } + + if( pBuf && pBuf[0] ) + { + if( !m_hLoopSound || (nId != m_nLoopSoundId) ) + { + // Stop any previous looping sound... + + KillLoopSound(); + + // Play the sound immediately localy + + m_hLoopSound = g_pClientSoundMgr->PlaySoundLocal( pBuf, SOUNDPRIORITY_PLAYER_HIGH, + PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE | PLAYSOUND_REVERB, + SMGR_DEFAULT_VOLUME, 1.0f, WEAPONS_SOUND_CLASS ); + + m_nLoopSoundId = nId; + + // Send message to server so all clients can start loop sound... + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_SOUND_LOOP ); + cMsg.Writeuint8( nId ); + cMsg.Writeuint8( m_nWeaponId ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + + } + + } + + } + else if( tok == s_cTok_WEAPON_KEY_FX ) + { + // + // Special FX key + // + return HandleFXKey( hObj, pArgList ); + } + else if( tok == s_cTok_WEAPON_KEY_FIREFX ) + { + // + // Fire weapon & spawn special effects + // + + ASSERT( 0 != m_hObject ); + + // Only allow fire keys if it is a fire animation... + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + if ( IsFireAni( dwAni ) && GetState() == W_FIRING ) + { + m_bFire = true; + } + + // handle the fx key + return HandleFXKey( hObj, pArgList ); + } + else if( tok == s_cTok_WEAPON_KEY_HIDE_MODEL_PIECE ) + { + // + // Hide some model pieces + // + + // + // loop through the rest of the arguments and spawn each FX + // + + // start the index at the first argument + int i = 1; + + // get the model interface + ILTModel *pModelLT = g_pLTClient->GetModelLT(); + ASSERT( 0 != pModelLT ); + + // prepare the piece + HMODELPIECE hPiece = 0; + + // while there are arguments + while ( ( i < pArgList->argc ) && ( '\0' != pArgList->argv[ i ][ 0 ] ) ) + { + // reset the piece + hPiece = 0; + + // if we find the model's piece... + if( LT_OK == pModelLT->GetPiece( m_hObject, pArgList->argv[ i ], hPiece ) ) + { + // hide it + LTRESULT ltResult; + ltResult = pModelLT->SetPieceHideStatus( m_hObject, hPiece, LTTRUE ); + ASSERT( ( LT_OK == ltResult) || ( LT_NOCHANGE == ltResult ) ); + } + + // increment the index + ++i; + } + } + else if( tok == s_cTok_WEAPON_KEY_SHOW_MODEL_PIECE ) + { + // + // Show one of the model pieces + // + + // + // loop through the rest of the arguments and spawn each FX + // + + // start the index at the first argument + int i = 1; + + // get the model interface + ILTModel *pModelLT = g_pLTClient->GetModelLT(); + ASSERT( 0 != pModelLT ); + + // prepare the piece + HMODELPIECE hPiece = 0; + + // while there are arguments + while ( ( i < pArgList->argc ) && ( '\0' != pArgList->argv[ i ][ 0 ] ) ) + { + // reset the piece + hPiece = 0; + + // if we find the model's piece... + if( LT_OK == pModelLT->GetPiece( m_hObject, pArgList->argv[ i ], hPiece ) ) + { + // hide it + LTRESULT ltResult; + ltResult = pModelLT->SetPieceHideStatus( m_hObject, hPiece, LTFALSE ); + ASSERT( ( LT_OK == ltResult) || ( LT_NOCHANGE == ltResult ) ); + } + + // increment the index + ++i; + } + } + else if( tok == s_cTok_WEAPON_KEY_FLASHLIGHT ) + { + if (!m_bVisible) return false; + + if( ( pArgList->argc > 1 ) && pArgList->argv[ 1 ] ) + { + if( 0 == stricmp( pArgList->argv[1], "ON" )) + { + m_bControllingFlashLight = true; + g_pPlayerMgr->GetFlashLight()->TurnOn(); + } + else if( 0 == stricmp( pArgList->argv[1], "OFF" )) + { + m_bControllingFlashLight = false; + g_pPlayerMgr->GetFlashLight()->TurnOff(); + } + } + } + else if( tok == s_cTok_WEAPON_KEY_DEFLECT ) + { + if( ( pArgList->argc > 1 ) && pArgList->argv[ 1 ] ) + { + // Tell the server we're deflecting. + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + cMsg.Writeuint8( CP_DEFLECT ); + cMsg.Writefloat(( float )atof( pArgList->argv[1] )); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + } + else if( tok == s_cTok_RENDERSTYLE_MODEL_KEY ) + { + // start the index at the first argument + int i = 0; + int nRS; + + // while there are arguments + while((i < pArgList->argc) && ('\0' != pArgList->argv[i][0])) + { + // Check for renderstyle model key + if(stricmp(pArgList->argv[i],RENDERSTYLE_MODEL_KEY) == 0) + { + // Check params + if(pArgList->argc >= i+3) + { + nRS = (atoi)(pArgList->argv[i+1]); + SetObjectRenderStyle(m_hObject,nRS,pArgList->argv[i+2]); + } + else + { + // Not enough params + DebugCPrint(1,"CClientWeapon::OnModelKey - ERROR - Not enough RS arguments! Syntax: RS \n"); + } + + // Move past all arguments of this key + i += 3; + } + else + { + // Go to the next string + i++; + } + } + } + else if( tok == s_cTok_WEAPON_KEY_SHELLCASING ) + { + if (!m_bVisible) return false; + + // Create a shell casing based on the model key... + + if (g_pPlayerMgr->IsFirstPerson()) + { + SHELLCREATESTRUCT sc; + sc.nWeaponId = m_nWeaponId; + sc.nAmmoId = m_nAmmoId; + sc.b3rdPerson = LTFALSE; + + GetModelRot(&sc.rRot); + GetShellEjectPos(&sc.vStartPos); + + // Add on the player's velocity... + + HOBJECT hObj = g_pPlayerMgr->GetMoveMgr()->GetObject(); + if (hObj) + { + g_pPhysicsLT->GetVelocity(hObj, &sc.vStartVel); + } + + g_pGameClientShell->GetSFXMgr()->CreateSFX(SFX_SHELLCASING_ID, &sc); + } + } + else if( tok == s_cTok_WEAPON_KEY_HIDE_PVATTACHFX ) + { + if (!m_bVisible) return false; + + // start the index at the first argument + int i = 1; + int nPVFX = 0; + + // while there are arguments + while((i < pArgList->argc) && ('\0' != pArgList->argv[i][0])) + { + nPVFX = atoi( pArgList->argv[ i ] ); + if( nPVFX >= 0 && nPVFX < WM_MAX_PV_ATTACH_CLIENTFX ) + { + if( m_PVAttachClientFX[ nPVFX ].IsValid() ) + { + m_bPVAttachClientFXHidden[ nPVFX ] = true; + m_PVAttachClientFX[ nPVFX ].GetInstance()->Hide(); + } + } + + ++i; + } + } + else if( tok == s_cTok_WEAPON_KEY_SHOW_PVATTACHFX ) + { + if (!m_bVisible) return false; + + // start the index at the first argument + int i = 1; + int nPVFX = 0; + + // while there are arguments + while((i < pArgList->argc) && ('\0' != pArgList->argv[i][0])) + { + nPVFX = atoi( pArgList->argv[ i ] ); + if( nPVFX >= 0 && nPVFX < WM_MAX_PV_ATTACH_CLIENTFX ) + { + if( m_PVAttachClientFX[ nPVFX ].IsValid() ) + { + m_bPVAttachClientFXHidden[ nPVFX ] = false; + m_PVAttachClientFX[ nPVFX ].GetInstance()->Show(); + } + } + + ++i; + } + } + else if( tok == s_cTok_WEAPON_KEY_HIDE_PVATTACHMENT ) + { + if( !m_bVisible ) return false; + + // start the index at the first argument + int i = 1; + uint32 nPVAttachment = 0; + + // while there are arguments + while((i < pArgList->argc) && ('\0' != pArgList->argv[i][0])) + { + nPVAttachment = atoi( pArgList->argv[ i ] ); + + g_pPVAttachmentMgr->ShowPVAttachment( nPVAttachment, false ); + + ++i; + } + } + else if( tok == s_cTok_WEAPON_KEY_SHOW_PVATTACHMENT ) + { + if( !m_bVisible ) return false; + + // start the index at the first argument + int i = 1; + uint32 nPVAttachment = 0; + + // while there are arguments + while((i < pArgList->argc) && ('\0' != pArgList->argv[i][0])) + { + nPVAttachment = atoi( pArgList->argv[ i ] ); + + g_pPVAttachmentMgr->ShowPVAttachment( nPVAttachment, true ); + + ++i; + } + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::HandleFireKey() +// +// PURPOSE: Handle a fire key +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::GetShellEjectPos( LTVector *vOriginalPos ) +{ + LTVector vBreachOffset = GetBreachOffset(); + + // Adjust the breach offset relative to the orientation of the weapon + // model... + + LTVector vU = (vBreachOffset.y * m_rCamRot.Up()); + LTVector vR = (vBreachOffset.x * m_rCamRot.Right()); + LTVector vF = (vBreachOffset.z * m_rCamRot.Forward()); + + *vOriginalPos = m_vFlashPos + vU + vR + vF; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::HandleFireKey() +// +// PURPOSE: Handle a fire key +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::HandleFireKey( HLOCALOBJ hObj, ArgList* pArgList ) +{ + ASSERT( 0 != m_hObject ); + + // Only allow fire keys if it is a fire animation... + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + if ( IsFireAni( dwAni ) && GetState() == W_FIRING ) + { + m_bFire = true; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::HandleFXKey() +// +// PURPOSE: Handle a fire key +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::HandleFXKey( HLOCALOBJ hObj, ArgList* pArgList ) +{ + // assume success + bool bOverallResult = true; + + // + // loop through the rest of the arguments and spawn each FX + // + + // start the index at the first argument + int i = 1; + + // while there are arguments + while ( ( i < pArgList->argc ) && + ( '\0' != pArgList->argv[ i ][ 0 ] ) ) + { + // create the effect + bool bResult; + CLIENTFX_LINK_NODE *pNewNode = debug_new(CLIENTFX_LINK_NODE); + + if(pNewNode) + { + CLIENTFX_CREATESTRUCT fxCS( pArgList->argv[ i ], + FXFLAG_REALLYCLOSE, + m_hObject ); + + bResult = g_pClientFXMgr->CreateClientFX( &pNewNode->m_Link, + fxCS, + LTTRUE ); + + if ( pNewNode->m_Link.IsValid() ) + { + // effect spawned successfully, keep track of it + m_KeyframedClientFX.AddToEnd(pNewNode); + } + else + { + debug_delete(pNewNode); + + // at least 1 FX failed to spawn + bOverallResult = false; + } + } + else + { + bOverallResult = false; + } + + // increment the index + ++i; + } + + return bOverallResult; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::OnEnterWorld() +// +// PURPOSE: Do the weapon setup when a level starts +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::OnEnterWorld() +{ +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::OnExitWorld() +// +// PURPOSE: Do what's necessary upon exit of the world +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::OnExitWorld() +{ + // turn this weapon "off" + Deactivate(); + + // set some of the variables to 0 + m_fNextIdleTime = 0; + m_bFire = false; + m_nAmmoInClip = 0; + m_nNewAmmoInClip = 0; + m_bWeaponDeselected = false; + m_nTracerNumber = 0; + m_fLastPitch = 0.0f; + m_fLastYaw = 0.0f; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Init() +// +// PURPOSE: Initialize perturb variables +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::Init( WEAPON const &rWeapon ) +{ + // set up all the namespace variables + InitNamespaceVars(); + + // set the data + m_pWeapon = &rWeapon; + m_nWeaponId = m_pWeapon->nId; + + // ammo stays inited + //DANO: temp use the default ammo + m_pAmmo = g_pWeaponMgr->GetAmmo( m_pWeapon->nDefaultAmmoId ); + ASSERT( 0 != m_pAmmo ); + m_nAmmoId = m_pAmmo->nId; + + + // successful + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::Term() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Term() +{ + // remove the mods + RemoveMods(); + + // remove player-view attachments + g_pPVAttachmentMgr->RemovePVAttachments(); + + // stop any looping sound + KillLoopSound(); + + // remove all client fx + RemoveMuzzleFlash(); + RemoveOverheatFx( ); + RemovePVAttachClientFX(); + + // clear weapon info + m_nWeaponId = WMGR_INVALID_ID; + m_pWeapon = 0; + + // clear ammo info + m_nAmmoId = WMGR_INVALID_ID; + m_pAmmo = 0; + + // remove the weapon model... + RemoveWeaponModel(); + +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::RemoveWeaponModel() +// +// PURPOSE: Destroy the weapon model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemoveWeaponModel() +{ + if (m_hObject) + { + // get rid of the object + LTRESULT ltResult = g_pLTClient->RemoveObject(m_hObject); + ASSERT( LT_OK == ltResult ); + + // clear the object pointer + m_hObject = 0; + } + + m_hBreachSocket = INVALID_MODEL_SOCKET; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Update() +// +// PURPOSE: Update the WeaponModel state +// NOTE: the return value is a WeaponState but is not necessarily +// this weapon's current state. +// +// ----------------------------------------------------------------------- // + +WeaponState CClientWeapon::Update( bool bFire, FireType eFireType /*=FT_NORMAL_FIRE*/) +{ + ASSERT( 0 != m_hObject ); + + // remove all keyframed FXEd effects that have expired + RemoveFinishedKeyframedFX(); + + //see if we are paused, if so we need to pause the animation + bool bPaused = g_pGameClientShell->IsServerPaused() || m_bPaused; + g_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, bPaused ? FLAG_PAUSED : 0, FLAG_PAUSED); + + // See if we are disabled...If so don't allow any weapon stuff... + if ( m_bDisabled || bPaused) + { + return W_IDLE; + } + + // If the player is trying to fire and + // we are allowed to set the last fire + // type ("normal" vs "alt"), do so + if ( bFire && m_bCanSetLastFire ) + { + m_eLastFireType = eFireType; + } + + // See if we just started/stopped firing... + if ( !m_bFireKeyDownLastUpdate && bFire ) + { + // + // fire key transition: off->on + // + + // Currently, this just handles alt-firing, which is broken + HandleFireKeyDownTransition(); + + // check specaial cases that may prevent us from firing + bFire = SpecialOverrideFire(); + } + else if ( m_bFireKeyDownLastUpdate && !bFire ) + { + // + // fire key transition: on->off + // + + HandleFireKeyUpTransition(); + } + + // Selecting Alt-fire does not fire the weapon if we are using + // alt fire animations... + if ( m_bUsingAltFireAnis && ( FT_ALT_FIRE == m_eLastFireType ) ) + { + bFire = false; + } + + if ( bFire ) + { + HandleFireKeyDown(); + } + else + { + HandleFireKeyUp(); + } + + // remember the state and fire key for future updates + m_bFireKeyDownLastUpdate = bFire; + + // Update the state of the model... + WeaponState eState = UpdateModelState( bFire ); + + LTVector vFireOffset( 0.0f, 0.0f, 0.0f ); + LTVector vFlashOffset( 0.0f, 0.0f, 0.0f ); + + // NOTE: this is NOT the weapon state...this is the value + // returned by the UpdateModelState function. + LTBOOL bFiredWeapon = FiredWeapon(eState); + + if ( bFiredWeapon ) + { + // + // The weapon should now fire/activate. + // + + // Get a random offset based on the recoil. + LTVector vRecoil = m_pWeapon->vRecoil; + vFireOffset.Init( GetRandom( -vRecoil.x, vRecoil.x ), + GetRandom( -vRecoil.y, vRecoil.y ), + GetRandom( -vRecoil.z, vRecoil.z ) ); + + vFlashOffset = vFireOffset; + + // Send message to server telling player to fire... + Fire( bFire ); + } + + // Update the weapon's position + UpdateWeaponPosition( vFireOffset ); + + // Updates the weapon heat state. Call before muzzle effects so that it has the + // right information. + UpdateWeaponHeat( ); + + // Update the muzzle flash... + UpdateMuzzleEffects( eState, vFlashOffset ); + + // Update the mods... + UpdateMods(); + + // Update the player-view attachments + g_pPVAttachmentMgr->UpdatePVAttachments(); + + // Update the weapon's perturb value based on the player's movement. + UpdateMovementPerturb(); + + // Update the weapon's perturb value based on current weapon firing. + UpdateFiringPerturb(bFiredWeapon); + + // Handle Auto Ammo/Weapon switching... + if ( m_bAutoSwitchEnabled && m_bAutoSwitch ) + { + // We only auto-switch if we are out of ammo... + if (g_pPlayerStats->GetAmmoCount(m_nAmmoId) <= 0) + { + // Tell the client weapon mgr to switch to a different weapon... + eState = W_AUTO_SWITCH; + } + + // clear the autoswitch flag + m_bAutoSwitch = false; + } + + return eState; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ChangeAmmoWithReload() +// +// PURPOSE: Change to the specified ammo type +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ChangeAmmoWithReload( uint8 nNewAmmoId, bool bForce /*=false*/ ) +{ + // Update the player's stats... + if ( W_RELOADING == GetState() ) + { + if( !bForce ) + return; + + // Restart the animation in idle. + PlayIdleAnimation( ); + } + + if ( CanChangeToAmmo( nNewAmmoId ) && ( nNewAmmoId != m_nAmmoId ) ) + { + ASSERT( 0 != g_pWeaponMgr ); + m_nAmmoId = nNewAmmoId; + m_pAmmo = g_pWeaponMgr->GetAmmo( m_nAmmoId ); + + // Make sure we reset the anis (the ammo may override the + // weapon animations)... + InitAnimations( true ); + + if ( m_pAmmo->pAniOverrides ) + { + // If we're not using the defaults play the new select ani... + Select(); + } + else + { + // Do normal reload... + ReloadClip( true, -1, true, true ); + + // Add a message so the user knows he switched ammo (sometimes it + // isn't that obvious)... + + if (strlen(m_pAmmo->szShortName)) + { + char szMsg[128]; + FormatString(IDS_CHANGING_AMMO, szMsg, sizeof(szMsg), m_pAmmo->szShortName); + std::string icon = m_pAmmo->GetNormalIcon(); + g_pPickupMsgs->AddMessage(szMsg, icon.c_str()); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ChangeAmmoImmediate() +// +// PURPOSE: Change to the specified ammo type +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ChangeAmmoImmediate( uint8 nNewAmmoId, int nAmmoAmount /*=-1*/, bool bForce /*=false*/ ) +{ + // Update the player's stats... + if ( ( W_RELOADING == GetState() ) && !bForce ) + { + return; + } + + if ( CanChangeToAmmo( nNewAmmoId ) && ( nNewAmmoId != m_nAmmoId ) ) + { + ASSERT( 0 != g_pWeaponMgr ); + m_nAmmoId = nNewAmmoId; + m_pAmmo = g_pWeaponMgr->GetAmmo( m_nAmmoId ); + + // Make sure we reset the anis (the ammo may override the + // weapon animations)... + InitAnimations( true ); + + if ( m_pAmmo->pAniOverrides ) + { + // If we're not using the defaults play the new select ani... + Select(); + } + else + { + // Do normal reload... + ReloadClip( false, nAmmoAmount /*-1*/, true, true ); + } + } + else + { + // Update the hud to reflect the new ammo amount... + g_pPlayerStats->UpdateAmmo( m_nWeaponId, m_nAmmoId, nAmmoAmount ); + g_pPlayerStats->UpdatePlayerWeapon( m_nWeaponId, m_nAmmoId ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeapon::ReloadClip +// +// PURPOSE: Fill the clip +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ReloadClip( bool bPlayReload /*=true*/, + int nNewAmmo /*=-1*/, + bool bForce /*=false*/, + bool bNotifyServer /*=false*/) +{ + // Can't reload clip while deselecting the weapon... + + if ( W_DESELECT == GetState() ) return; + + // get all the ammo the player possesses + int nAmmoCount = g_pPlayerStats->GetAmmoCount( m_nAmmoId ); + + // Get an intermediate amount of ammo. If the nNewAmmo has + // been specified, use that value. Otherwise use the total + // amount of ammo on the player. + int nAmmo = nNewAmmo >= 0 ? nNewAmmo : nAmmoCount; + + // Get how many shots are in a clip. + int nShotsPerClip = m_pWeapon->nShotsPerClip; + + // Update the player's stats... + // note: the ammo amount we pass may be too much but + // these functions figure out what the max really is, + // and then we do the same thing later + + // UpdateAmmo does a lot of stuff, one of those is passing in + // how much ammo you have. If you specify an amount that is + // more or less, it will consider this the new amount of + // ammo that you have on you and adjust things accordingly. + g_pPlayerStats->UpdateAmmo( m_nWeaponId, m_nAmmoId, nAmmo ); + + + // This will set the player stats to the specified weapon and + // ammo id. In this case, use the current ones. + g_pPlayerStats->UpdatePlayerWeapon( m_nWeaponId, m_nAmmoId ); + + // Make sure we can reload the clip... + if ( !bForce ) + { + // Already reloading... + if ( m_hObject && ( W_RELOADING == GetState() ) ) + { + return; + } + + // Clip is full... + if ( ( m_nAmmoInClip == nShotsPerClip ) || ( m_nAmmoInClip == nAmmoCount ) ) + { + return; + } + } + + if ( ( nAmmo > 0 ) && ( nShotsPerClip > 0 ) ) + { + // The amount of ammo we give the player due + // of the reload is tracked with m_nNewAmmoInClip. + // Set the new ammo to the lesser vaule of + // either the max clip size of the amount of ammo + // on the player. + if ( nAmmo < nShotsPerClip ) + { + m_nNewAmmoInClip = nAmmo; + } + else + { + m_nNewAmmoInClip = nShotsPerClip; + } + + if( bNotifyServer ) + { + // Let the server know we are reloading the clip... + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_RELOAD ); + cMsg.Writeuint8( m_nAmmoId ); // We maybe switching ammo + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + + + // check for a valid reload animation + if ( bPlayReload && ( INVALID_ANI != GetReloadAni() ) ) + { + // setting the state will "queue" the animation to + // start playing on the next update + SetState( W_RELOADING ); + return; + } + else + { + // there is no reload animation, so just put + // the right amount in the clip directly + m_nAmmoInClip = m_nNewAmmoInClip; + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DecrementAmmo +// +// PURPOSE: Decrement the weapon's ammo count +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DecrementAmmo() +{ + // Hide the necessary pieces... + SpecialShowPieces(false); + + int nAmmo; + bool bInfiniteAmmo = ( g_bInfiniteAmmo || ( !!( m_pWeapon->bInfiniteAmmo ) ) ); + if ( bInfiniteAmmo ) + { + nAmmo = INFINITE_AMMO_AMOUNT; + } + else + { + nAmmo = g_pPlayerStats->GetAmmoCount( m_nAmmoId ); + } + + int nShotsPerClip = m_pWeapon->nShotsPerClip; + + if ( 0 < m_nAmmoInClip ) + { + if ( 0 < nShotsPerClip ) + { + // decrease the ammo in the clip only if the clip + // is non-zero + --m_nAmmoInClip; + } + + if ( !bInfiniteAmmo ) + { + // we are not using infinite ammo, update the current amount + --nAmmo; + + // Update our stats. This will ensure that our stats are always + // accurate (even in multiplayer)... + g_pPlayerStats->UpdateAmmo( m_nWeaponId, m_nAmmoId, nAmmo, LTFALSE, LTFALSE ); + } + } + + // Check to see if we need to reload... + if ( 0 < nShotsPerClip ) + { + if ( 0 >= m_nAmmoInClip ) + { + ReloadClip( true, nAmmo ); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::SetCameraInfo() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetCameraInfo( LTRotation const &rCamRot, LTVector const &vCamPos ) +{ + // Store current camera pos/rot... + m_rCamRot = rCamRot; + m_vCamPos = vCamPos; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ResetWeaponFilenames() +// +// PURPOSE: Update weapon's skins. This is done to reflect changes in +// the base player model. If the base player model changes +// then the skins will probably have to change. For instance, +// the sleeve color of the PV weapon may change when the base +// player model changes from a catsuit to a disco suit. +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ResetWeaponFilenames() +{ + ASSERT( 0 != g_pCommonLT ); + ASSERT( 0 != g_pLTClient ); + + ASSERT( 0 != m_hObject ); + if( !m_hObject ) + return; + + // get the create struct + ObjectCreateStruct createStruct; + + // put this weapon's model information in the create struct + PopulateCreateStruct( &createStruct ); + + // Set the filenames... + g_pCommonLT->SetObjectFilenames( m_hObject, &createStruct ); + + // Always put the weapon in the correct position after we reset the model... + + UpdateWeaponPosition( LTVector() ); + + // Create Player-View attachments.. + // We do this here since the attachments rely on the model that the character is using + // and when the weapon activates as the game loads we don't yet know the model. + + g_pPVAttachmentMgr->CreatePVAttachments( m_hObject ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateBob() +// +// PURPOSE: Update WeaponModel bob +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateBob(LTFLOAT fWidth, LTFLOAT fHeight) +{ + m_fBobWidth = fWidth; + m_fBobHeight = fHeight; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateMovementPerturb() +// +// PURPOSE: Update our weapon's movement perturb value +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateMovementPerturb() +{ + ASSERT( 0 != m_pWeapon ); + + // Make sure the weapon has perturb... + if ( m_pWeapon->nMaxPerturb == 0 ) + { + m_fMovementPerturb = 0.0f; + return; + } + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + LTFLOAT fMovePerturb = g_pPlayerMgr->GetMoveMgr()->GetMovementPercent(); + + if ( fMovePerturb > 1.0f ) + { + fMovePerturb = 1.0f; + } + + // If walking or zoomed + if ( ( ! ( g_pPlayerMgr->GetMoveMgr()->GetControlFlags() & BC_CFLG_RUN ) ) || + ( g_pPlayerMgr->IsZoomed() ) ) + { + fMovePerturb *= ns_vtPerturbWalkPercent.GetFloat(); + } + + // Force greater perturb when damaged certain ways + if( g_pDamageFXMgr->IsDamageActive( DamageTypeToFlag(DT_POISON) | DamageTypeToFlag(DT_STUN) ) ) + { + fMovePerturb = 1.0f; + } + + // [KLS 3/20/02] - Somehow the original working NOLF rotation perturb code was removed. + // Added it back in so rotation perturb will work correctly... + + LTVector vPlayerRot; + g_pPlayerMgr->GetPlayerPitchYawRoll( vPlayerRot ); + + LTFLOAT fPitchDiff = (LTFLOAT)fabs(vPlayerRot.x - m_fLastPitch); + LTFLOAT fYawDiff = (LTFLOAT)fabs(vPlayerRot.y - m_fLastYaw); + + m_fLastPitch = vPlayerRot.x; + m_fLastYaw = vPlayerRot.y; + + LTFLOAT fRotPerturb = ns_vtPerturbRotationEffect.GetFloat() * (fPitchDiff + fYawDiff) / (2.0f + ns_vtFastTurnRate.GetFloat() * fDelta); + if (fRotPerturb > 1.0f) + { + fRotPerturb = 1.0f; + } + + // Determine the maximum amount of perturb that was caused... + LTFLOAT fAdjust = Max(fRotPerturb, fMovePerturb); + LTFLOAT fDiff = (LTFLOAT)fabs(fAdjust - m_fMovementPerturb); + + if (fAdjust > m_fMovementPerturb) + { + fDelta *= ns_vtPerturbIncreaseSpeed.GetFloat(); + m_fMovementPerturb += Min( fDelta, fDiff ); + } + else if (fAdjust < m_fMovementPerturb) + { + fDelta *= (ns_vtPerturbDecreaseSpeed.GetFloat() * g_pPlayerStats->GetSkillModifier(SKL_AIM,AimModifiers::eCorrection)); + m_fMovementPerturb -= Min( fDelta, fDiff ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateFiringPerturb() +// +// PURPOSE: Update our weapon's firing perturb value +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateFiringPerturb(LTBOOL bFiredWeapon) +{ + ASSERT(m_pWeapon); + + // Make sure the weapon has perturb... + if (m_pWeapon->nMaxPerturb == 0) + { + m_fFiringPerturb = 0.0f; + return; + } + +/* + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + LTFLOAT fFirePerturb = bFiredWeapon ? 1.0f : 0.0f; + LTFLOAT fDiff = (LTFLOAT)fabs(fFirePerturb - m_fFiringPerturb); + + + + if (fFirePerturb > m_fFiringPerturb) + { + fDelta *= ns_vtFiringPerturbIncreaseSpeed.GetFloat(); + m_fFiringPerturb += Min(fDelta, fDiff); + } + else if (fFirePerturb < m_fFiringPerturb) + { + fDelta *= (ns_vtFiringPerturbDecreaseSpeed.GetFloat() * g_pPlayerStats->GetSkillModifier(SKL_AIM,AimModifiers::eCorrection)); + m_fFiringPerturb -= Min(fDelta, fDiff); + } +*/ + m_fFiringPerturb = g_pPlayerMgr->GetRecoilValue(); + + + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SetVisible() +// +// PURPOSE: Hide/Show the weapon model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetVisible( bool bVis /*=true*/ ) +{ + if ( !m_hObject ) return; + + // Set the visible/invisible data member even if we are disabled. + // The Disabled() function will make sure the weapon is visible/invisible + // if SetVisible() was called while the weapon was disabled... + m_bVisible = bVis; + + if ( m_bDisabled ) + { + return; + } + + // setup the visiblity flag we'll use in our engine calls + uint32 dwVisibleFlag; + if ( bVis ) + { + dwVisibleFlag = FLAG_VISIBLE; + } + else + { + dwVisibleFlag = 0; + } + + // Hide/Show weapon model... + LTRESULT ltResult = g_pCommonLT->SetObjectFlags( m_hObject, OFT_Flags, dwVisibleFlag, FLAG_VISIBLE ); + + // Always hide the flash (it will be shown when needed)... + if( m_MuzzleFlashFX.IsValid() ) + { + m_MuzzleFlashFX.GetInstance()->Hide(); + } + + // Always hide the flash (it will be shown when needed)... + if( m_OverheatFx.IsValid() ) + { + m_OverheatFx.GetInstance()->Hide(); + } + + // hide/show the pv FX + if ( bVis ) + { + ShowPVAttachClientFX(); + } + else + { + HidePVAttachClientFX(); + } + + // Make sure flashlight is on/off as appropriate if we're hiding/showing + // the weapon... + if (m_bControllingFlashLight) + { + if (bVis) + { + g_pPlayerMgr->GetFlashLight()->TurnOn(); + } + else + { + g_pPlayerMgr->GetFlashLight()->TurnOff(); + } + } + + // set the visibility of the mods + SetVisibleMods( bVis ); + + // Set the visibility of the player-view attachments... + + g_pPVAttachmentMgr->ShowPVAttachments( bVis ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreateSilencer +// +// PURPOSE: Create the silencer mod +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreateSilencer() +{ + m_hSilencerSocket = INVALID_MODEL_SOCKET; + + // Make sure we have the silencer... + MOD const *pMod = g_pWeaponMgr->GetMod( + static_cast< ModType >( g_pPlayerStats->GetSilencer(m_pWeapon) ) ); + if ( !pMod || + !pMod->szSocket[ 0 ] || + !g_pPlayerStats->HaveMod( pMod->nId ) ) + { + if ( m_hSilencerModel ) + { + ASSERT( 0 != g_pCommonLT ); + g_pCommonLT->SetObjectFlags( m_hSilencerModel, OFT_Flags, 0, FLAG_VISIBLE ); + } + + return; + } + + // Make sure we have a socket for the silencer... + if ( m_hObject ) + { + if ( LT_OK != g_pModelLT->GetSocket( m_hObject, pMod->szSocket, m_hSilencerSocket ) ) + { + if ( m_hSilencerModel ) + { + ASSERT( 0 != g_pCommonLT ); + g_pCommonLT->SetObjectFlags( m_hSilencerModel, OFT_Flags, 0, FLAG_VISIBLE ); + } + + return; + } + } + + // Don't try to create the model if none was specified... + if( pMod->szAttachModel && pMod->szAttachModel[0] ) + { + // Okay create/setup the model... + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT( createStruct ); + + // copy the model filename + SAFE_STRCPY( createStruct.m_Filename, pMod->szAttachModel ); + + // add the skin names + pMod->blrAttachSkins.CopyList( 0, + createStruct.m_SkinNames[ 0 ], + ( MAX_CS_FILENAME_LEN + 1 ) ); + + // add the render styles + pMod->blrAttachRenderStyles.CopyList( 0, + createStruct.m_RenderStyleNames[ 0 ], + ( MAX_CS_FILENAME_LEN + 1 ) ); + + // create the model + m_hSilencerModel = CreateModelObject( m_hSilencerModel, &createStruct ); + + if ( m_hSilencerModel ) + { + // make it visible + g_pCommonLT->SetObjectFlags( m_hSilencerModel, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + + // The vector should be OK, do a const cast to match + // the attach scale with the non-const engine. + g_pLTClient->SetObjectScale( m_hSilencerModel, const_cast( &(pMod->vAttachScale) ) ); + } + } + + // if we've reached this point, we have the mod + m_bHaveSilencer = true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateSilencer +// +// PURPOSE: Update the silencer mod +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateSilencer() +{ + // Update the silencer... + if ( m_hSilencerModel ) + { + LTVector vPos; + GetModelPos( &vPos ); + + LTRotation rRot; + + if ( m_bHaveSilencer && ( INVALID_MODEL_SOCKET != m_hSilencerSocket ) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform( m_hObject, + m_hSilencerSocket, + transform, + LTTRUE ) ) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + g_pLTClient->SetObjectPos( m_hSilencerModel, &vPos ); + g_pLTClient->SetObjectRotation( m_hSilencerModel, &rRot ); + if (transform.m_Scale.x != 1.0f || transform.m_Scale.y != 1.0f || transform.m_Scale.z != 1.0f) + g_pLTClient->SetObjectScale(m_hSilencerModel, &transform.m_Scale); + } + } + else + { + // Keep the model close to us... + g_pLTClient->SetObjectPos( m_hSilencerModel, &vPos ); + + // Hide model... + g_pCommonLT->SetObjectFlags( m_hSilencerModel, + OFT_Flags, + 0, + FLAG_VISIBLE); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemoveSilencer +// +// PURPOSE: Remove the silencer mod +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemoveSilencer() +{ + if ( m_hSilencerModel ) + { + g_pLTClient->RemoveObject( m_hSilencerModel ); + m_hSilencerModel = 0; + m_hSilencerSocket = INVALID_MODEL_SOCKET; + m_bHaveSilencer = false; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreateScope +// +// PURPOSE: Create the scope model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreateScope() +{ + m_hScopeSocket = INVALID_MODEL_SOCKET; + + // Make sure we have the scope... + MOD const *pMod = g_pWeaponMgr->GetMod( + static_cast< ModType >( g_pPlayerStats->GetScope(m_pWeapon) ) ); + if ( !pMod || + !pMod->szSocket[ 0 ] || + !g_pPlayerStats->HaveMod( pMod->nId ) ) + { + if ( m_hScopeModel ) + { + ASSERT( 0 != g_pCommonLT ); + g_pCommonLT->SetObjectFlags( m_hScopeModel, OFT_Flags, 0, FLAG_VISIBLE ); + } + + return; + } + + // Make sure we have a socket for the scope... + if ( m_hObject ) + { + if ( LT_OK != g_pModelLT->GetSocket( m_hObject, pMod->szSocket, m_hScopeSocket ) ) + { + if ( m_hScopeModel ) + { + ASSERT( 0 != g_pCommonLT ); + g_pCommonLT->SetObjectFlags( m_hScopeModel, OFT_Flags, 0, FLAG_VISIBLE ); + } + + return; + } + } + + // Don't try to create the model if none was specified... + if( pMod->szAttachModel && pMod->szAttachModel[0] ) + { + // Okay create/setup the model... + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT( createStruct ); + + // copy the model filename + SAFE_STRCPY( createStruct.m_Filename, pMod->szAttachModel ); + + // add the skin names + pMod->blrAttachSkins.CopyList( 0, + createStruct.m_SkinNames[ 0 ], + ( MAX_CS_FILENAME_LEN + 1 ) ); + + // add the render styles + pMod->blrAttachRenderStyles.CopyList( 0, + createStruct.m_RenderStyleNames[ 0 ], + ( MAX_CS_FILENAME_LEN + 1 ) ); + + // create the model + m_hScopeModel = CreateModelObject( m_hScopeModel, &createStruct ); + + if ( m_hScopeModel ) + { + // make it visible + g_pCommonLT->SetObjectFlags( m_hScopeModel, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + + // The vector should be OK, do a const cast to match + // the attach scale with the non-const engine. + g_pLTClient->SetObjectScale(m_hScopeModel, const_cast( &(pMod->vAttachScale) ) ); + } + } + + // if we've reached this point, we have the mod + m_bHaveScope = true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateScope +// +// PURPOSE: Update the scope model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateScope() +{ + // Update the scope... + if ( m_hScopeModel ) + { + LTVector vPos; + GetModelPos( &vPos ); + + LTRotation rRot; + + if ( m_bHaveScope && ( m_hScopeSocket != INVALID_MODEL_SOCKET ) ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform( m_hObject, + m_hScopeSocket, + transform, + LTTRUE ) ) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + g_pLTClient->SetObjectPos( m_hScopeModel, &vPos ); + g_pLTClient->SetObjectRotation( m_hScopeModel, &rRot ); + if (transform.m_Scale.x != 1.0f || transform.m_Scale.y != 1.0f || transform.m_Scale.z != 1.0f) + g_pLTClient->SetObjectScale(m_hScopeModel, &transform.m_Scale); + } + } + else + { + // Keep the model close to us... + g_pLTClient->SetObjectPos( m_hScopeModel, &vPos ); + + // Hide model... + g_pCommonLT->SetObjectFlags( m_hScopeModel, + OFT_Flags, + 0, + FLAG_VISIBLE ); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemoveScope +// +// PURPOSE: Remove the scope model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemoveScope() +{ + if ( m_hScopeModel ) + { + g_pLTClient->RemoveObject( m_hScopeModel ); + m_hScopeModel = 0; + m_hScopeSocket = INVALID_MODEL_SOCKET; + m_bHaveScope = false; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SetDisable() +// +// PURPOSE: Disable/Enable the weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetDisable( bool bDisable /*=true*/) +{ + bool bOldVisibility = m_bVisible; + + // Let the client shell handle the weapon being disabled... + + g_pPlayerMgr->HandleWeaponDisable( ( true == bDisable ) ); + + if ( bDisable ) + { + // Force weapon invisible... + SetVisible( false ); + + // Reset our data member for when the weapon is re-enabled... + m_bVisible = bOldVisibility; + + // Must set this AFTER call to SetVisible() + m_bDisabled = true; + + SetPaused( true ); + } + else + { + // Must set this BEFORE the call to SetVisible() + m_bDisabled = false; + + // Set the visibility back to whatever it was... + SetVisible( m_bVisible ); + + if (HasAmmo()) + { + if (m_nAmmoInClip == 0) + { + ReloadClip(false); + } + + // Unhide any hidden pieces... + SpecialShowPieces(true,true); + + } + + SetPaused( false ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Select() +// +// PURPOSE: Select the weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Select() +{ + if ( W_INACTIVE == GetState() ) + { + // if its inactive, make it active and visible + SetDisable( false ); + + // [KLS 3/22/02] Only show the weapon in first-person + SetVisible( ((g_pPlayerMgr->IsFirstPerson() || g_pPlayerMgr->IsGoingFirstPerson()) ? true : false) ); + } + + SetState( W_SELECT ); + + + uint32 dwSelectAni = GetSelectAni(); + + if ( m_hObject && ( INVALID_ANI != dwSelectAni ) ) + { + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + + // the "default" animation is the select animation, + // so this fails when we try to select it, + // going to have to try to find a workaround + if (!IsSelectAni( dwAni ) ) + { + LTFLOAT fRate = 1.0f; + if ( GADGET == m_pAmmo->eType ) + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eSelect); + } + else + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_WEAPON,WeaponModifiers::eReload); + } + + // play select animation + PlayAnimation( dwSelectAni, true, fRate ); + + // [RP] 11/11/02 - Since we may need the camera position and/or the flash position + // after the selection ani starts but before the next update of this weapon, update + // the positions here. They will get reset during the update to their accurate position. + + HOBJECT hCam = g_pPlayerMgr->GetCamera(); + if( hCam ) + { + g_pLTClient->GetObjectPos( hCam, &m_vCamPos ); + UpdateMuzzleEffects( W_SELECT, LTVector(0,0,0) ); + } + } + + // Tell the server we're playing the select animation... + LTRESULT ltResult; + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + + // say "status change" + cMsg.Writeuint8( CP_WEAPON_STATUS ); + + // tell the server we're selecting a weapon + cMsg.Writeuint8( WS_SELECT ); + + // send the message + ltResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == ltResult ); + } + + // Make sure there is ammo in the clip for the first selection... + if( m_bFirstSelection ) + { + m_bFirstSelection = false; + ReloadClip( false ); + } + else if ( 0 == m_nAmmoInClip ) + { + // If there is no ammo in our clip, reload it... + ReloadClip( false, -1, true, true ); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Deselect() +// +// PURPOSE: Deselect the weapon (with callback +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::Deselect( ClientWeaponCallBackFn cbFn, void *pData ) +{ + ASSERT( 0 != cbFn ); + + RemoveOverheatFx( ); + + // setup the callback + m_cbDeselect = cbFn; + m_pcbData = pData; + + // check the gadget special case + bool bPlayDeselectAni = true; + if ( ( GADGET == m_pAmmo->eType ) && !HasAmmo() ) + { + bPlayDeselectAni = false; + } + + if ( bPlayDeselectAni ) + { + SetState( W_DESELECT ); + if ( PlayDeselectAnimation() ) + { + // Tell the server we're playing the deselect animation... + LTRESULT ltResult; + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + + // say "status change" + cMsg.Writeuint8( CP_WEAPON_STATUS ); + + // tell we are deselecting the weapon + cMsg.Writeuint8( WS_DESELECT ); + + // send the message + ltResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == ltResult ); + } + } + else + { + m_bWeaponDeselected = true; + } + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ResetData +// +// PURPOSE: Reset weapon specific data +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ResetData() +{ + m_hBreachSocket = INVALID_MODEL_SOCKET; + m_hSilencerSocket = INVALID_MODEL_SOCKET; + m_hScopeSocket = INVALID_MODEL_SOCKET; + + m_bHaveSilencer = false; + m_bHaveScope = false; + + m_fBobHeight = 0.0f; + m_fBobWidth = 0.0f; + m_fFireTime = 0.0f; + + m_vFlashPos.Init(); + m_vFlashOffset.Init(); + + m_bFire = false; + m_eLastFireType = FT_NORMAL_FIRE; + m_bCanSetLastFire = false; + m_nTracerNumber = 0; + m_fLastPitch = 0.0f; + m_fLastYaw = 0.0f; + + m_nSelectAni = INVALID_ANI; + m_nDeselectAni = INVALID_ANI; + m_nReloadAni = INVALID_ANI; + + m_nAltSelectAni = INVALID_ANI; + m_nAltDeselectAni = INVALID_ANI; + m_nAltDeselect2Ani = INVALID_ANI; + m_nAltReloadAni = INVALID_ANI; + + m_wIgnoreFX = 0; + m_bWeaponDeselected = false; + + m_nNewAmmoInClip = 0; + + m_bFireKeyDownLastUpdate = false; + m_bAutoSwitch = false; + + m_bControllingFlashLight = false; + + int i; + for (i=0; i < WM_MAX_FIRE_ANIS; i++) + { + m_nFireAnis[i] = INVALID_ANI; + } + + for (i=0; i < WM_MAX_IDLE_ANIS; i++) + { + m_nIdleAnis[i] = INVALID_ANI; + } + + for (i=0; i < WM_MAX_ALTFIRE_ANIS; i++) + { + m_nAltFireAnis[i] = INVALID_ANI; + } + + for (i=0; i < WM_MAX_ALTIDLE_ANIS; i++) + { + m_nAltIdleAnis[i] = INVALID_ANI; + } + + for( i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + m_bPVAttachClientFXHidden[i] = true; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Activate() +// +// PURPOSE: Activate the weapon creating any necessary resources. +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::Activate() +{ + if (!m_pWeapon || !m_pAmmo) return false; + if( m_hObject ) return true; + + // reset any necessary data + ResetData(); + + // create the model + bool result = CreateWeaponModel(); + if ( !result ) + { + Term(); + return false; + } + + // do one update of the weapon model position to put + // it in the right place + UpdateWeaponPosition( LTVector() ); + + // initialize the animations for this model + InitAnimations(); + + // [RP 8/27/02] First play the select animation and THEN create the attachments + // such as the ClientFX and any mods like the silencer THEN set the animation to + // an Idle animation. We need to do this bit of wackiness to make sure the attachments + // are created in the correct selected position and will render off screen when the + // weapon becomes visible. + + uint32 dwSelectAni = GetSelectAni(); + + PlayAnimation( dwSelectAni ); + + // create all client fx + CreatePVAttachClientFX(); + CreateMuzzleFlash(); + CreateOverheatFx( ); + + // create any mods + CreateMods(); + + // Create Player-View attachments.. + + g_pPVAttachmentMgr->CreatePVAttachments( m_hObject ); + + + // Make sure the model doesn't start out on the select animation (if it does + // it won't play the select animation when it is selected)... + + if ( INVALID_ANI != dwSelectAni ) + { + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + + if ( IsSelectAni( dwAni ) ) + { + PlayAnimation(GetSubtleIdleAni()); + } + } + + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::Deactivate() +// +// PURPOSE: Put the weapon into an inactive state +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Deactivate() +{ + // set the state to inactave + SetState( W_INACTIVE ); + + // disable the weapon + SetDisable( true ); + + // turn off all keyframed ClientFX + for ( CLIENTFX_LINK_NODE* pNode = m_KeyframedClientFX.m_pNext; pNode != NULL; pNode = pNode->m_pNext ) + { + // turn off the effect + g_pClientFXMgr->ShutdownClientFX( &pNode->m_Link ); + } + + // destroy the list of keyframed ClientFX + m_KeyframedClientFX.DeleteList(); + + // remove the mods + RemoveMods(); + + // remove player-view attachments + g_pPVAttachmentMgr->RemovePVAttachments(); + + // remove all client fx + RemoveMuzzleFlash(); + RemoveOverheatFx(); + RemovePVAttachClientFX(); + + // remove the weapon model + RemoveWeaponModel(); + + KillLoopSound(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HasAmmo() +// +// PURPOSE: Do we have any ammo for this weapon +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::HasAmmo() const +{ + ASSERT( 0 != m_pWeapon ); + + if ( m_pWeapon->bInfiniteAmmo ) + { + // infinite ammo, we have ammo + return true; + } + else + { + for ( int i = 0; i < m_pWeapon->nNumAmmoIds; ++i ) + { + ASSERT( 0 != g_pPlayerStats ); + if ( 0 < g_pPlayerStats->GetAmmoCount( m_pWeapon->aAmmoIds[ i ] ) ) + { + // we have ammo + return true; + } + } + } + + // couldn't find any ammo, we're empty + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CanUseAmmo() +// +// PURPOSE: Determine if the current weapon can use the specified ammo type +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::CanUseAmmo( uint8 nAmmoId ) const +{ + if ( !m_pWeapon || + !g_pWeaponMgr || + !g_pWeaponMgr->IsValidAmmoId( nAmmoId ) ) + { + return false; + } + + for ( int i = 0; i < m_pWeapon->nNumAmmoIds; ++i) + { + if ( m_pWeapon->aAmmoIds[ i ] == nAmmoId ) + { + return true; + } + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeapon::CanChangeToAmmo() +// +// PURPOSE: See if we can change to the specified ammo +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::CanChangeToAmmo( uint8 nAmmoId ) const +{ + int i; + + // Is the ID valid? + ASSERT( 0 != g_pWeaponMgr ); + if ( !g_pWeaponMgr->IsValidAmmoId( nAmmoId ) ) + { + return false; + } + + // Is the ID valid for this weapon? Do we have ammo? + bool bFoundAndHasAmmo = false; + for ( i = 0; ( !bFoundAndHasAmmo ) && ( i < m_pWeapon->nNumAmmoIds ); ++i ) + { + if ( nAmmoId == m_pWeapon->aAmmoIds[ i ] ) + { + if ( 0 < g_pPlayerStats->GetAmmoCount( nAmmoId ) ) + { + bFoundAndHasAmmo = true; + } + } + } + + if ( !bFoundAndHasAmmo ) + { + return false; + } + + // if me made it this far, this ammo is useable + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetNextAvailableAmmo() +// +// PURPOSE: Determine the next available ammo type +// +// ----------------------------------------------------------------------- // + +uint8 CClientWeapon::GetNextAvailableAmmo( uint8 nGivenAmmoId ) +{ + ASSERT( 0 != g_pWeaponMgr ); + + uint8 nCurrAmmoId; + + // If the given type is invalid, use the current ammo ID + if ( !g_pWeaponMgr->IsValidAmmoId( nGivenAmmoId ) ) + { + nCurrAmmoId = m_nAmmoId; + } + else + { + nCurrAmmoId = nGivenAmmoId; + } + + int nNewAmmoId = nCurrAmmoId; + int nOriginalAmmoIndex = 0; + int nCurAmmoIndex = 0; + int nAmmoCount = 0; + + // Find the current ammo in the list of ammo + // supported by the current weapon + ASSERT( 0 != m_pWeapon ); + for ( int i = 0; i < m_pWeapon->nNumAmmoIds; ++i ) + { + if ( nCurrAmmoId == m_pWeapon->aAmmoIds[ i ] ) + { + nOriginalAmmoIndex = i; + nCurAmmoIndex = i; + break; + } + } + + while ( 1 ) + { + nCurAmmoIndex++; + + // check for wrap + if ( nCurAmmoIndex >= m_pWeapon->nNumAmmoIds ) + { + nCurAmmoIndex = 0; + } + + // have we checked all the ammo? + if ( nCurAmmoIndex == nOriginalAmmoIndex ) + { + break; + } + + // get the ammo count + ASSERT( 0 != g_pPlayerStats ); + nAmmoCount = g_pPlayerStats->GetAmmoCount( m_pWeapon->aAmmoIds[ nCurAmmoIndex ] ); + if (0 < nAmmoCount ) + { + nNewAmmoId = m_pWeapon->aAmmoIds[ nCurAmmoIndex ]; + break; + } + } + + return nNewAmmoId; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetBestAvailableAmmoId() +// +// PURPOSE: Get the best available ammo id for this weapon. +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::GetBestAvailableAmmoId( int *nAmmoId ) const +{ + // start off assuming there is no ammo + *nAmmoId = WMGR_INVALID_ID; + + if ( !g_pPlayerStats ) + { + return LTFALSE; + } + + // intermediate variables to keep track of the best ammo id found + int nAmmoBest = WMGR_INVALID_ID; + LTFLOAT fMaxPriority = -1.0f; + + // go through all the ammo ids + for ( int i = 0; i < m_pWeapon->nNumAmmoIds; ++i ) + { + if ( 0 < g_pPlayerStats->GetAmmoCount( m_pWeapon->aAmmoIds[ i ] ) ) + { + // we do have this ammo + + // remember the ammo id + int nAmmo = m_pWeapon->aAmmoIds[ i ]; + + // get the ammo data + ASSERT( 0 != g_pWeaponMgr ); + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo( nAmmo ); + ASSERT( 0 != pAmmo ); + + // compare it to the previous priorities + if ( pAmmo->fPriority > fMaxPriority ) + { + // this is the best we've found so far, keep track of it + nAmmoBest = nAmmo; + fMaxPriority = pAmmo->fPriority; + } + } + } + + if ( WMGR_INVALID_ID != nAmmoBest ) + { + // we found the best ammo id + *nAmmoId = nAmmoBest; + return true; + } + + // If we get to here (which we shouldn't), just use the default ammo + // i if this weapon uses infinite ammo... + if ( m_pWeapon->bInfiniteAmmo ) + { + *nAmmoId = m_pWeapon->nDefaultAmmoId; + return true; + } + + // nothing found, admit failure + *nAmmoId = WMGR_INVALID_ID; + return false; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::CreateMods() +// +// PURPOSE: Create the mods for this weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreateMods() +{ + // Create the available mods... + CreateSilencer(); + CreateScope(); + + // Put the mods in their starting pos/rot... + UpdateMods(); + + // set the starting of the mods + bool bHideMods = (m_bDisabled || !m_bVisible); + SetVisibleMods( !bHideMods ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Load +// +// PURPOSE: Load data for this weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Load( ILTMessage_Read *pMsg ) +{ + if( !pMsg ) return; + + m_bFirstSelection = pMsg->Readbool(); + m_nAmmoId = pMsg->Readuint8(); + m_nAmmoInClip = pMsg->Readint32(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Save +// +// PURPOSE: Save data for this weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Save( ILTMessage_Write *pMsg ) +{ + if( !pMsg ) return; + + pMsg->Writebool( m_bFirstSelection ); + pMsg->Writeuint8( m_nAmmoId ); + pMsg->Writeint32( m_nAmmoInClip ); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::CreateWeaponModel() +// +// PURPOSE: Create the weapon model itself. +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::CreateWeaponModel() +{ + ASSERT( 0 != g_pLTClient ); + ASSERT( 0 != m_pWeapon ); + ASSERT( 0 == m_hObject ); + + ObjectCreateStruct createStruct; + + // put this weapon's model information in the create struct + PopulateCreateStruct( &createStruct ); + + m_hObject = CreateModelObject( m_hObject, &createStruct ); + if ( !m_hObject ) + { + return false; + } + + // needed for gadget + DoSpecialCreateModel(); + + // Setup Breach socket (if it exists)... + m_hBreachSocket = INVALID_MODEL_SOCKET; + if ( m_hObject ) + { + if ( LT_OK != g_pModelLT->GetSocket(m_hObject, "Breach", m_hBreachSocket) ) + { + m_hBreachSocket = INVALID_MODEL_SOCKET; + } + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreateModelObject +// +// PURPOSE: Create a weaponmodel model object +// +// ----------------------------------------------------------------------- // + +HOBJECT CClientWeapon::CreateModelObject( HOBJECT hOldObj, ObjectCreateStruct *createStruct ) +{ + ASSERT( 0 != m_pWeapon ); + if ( !m_pWeapon ) + { + return static_cast< HOBJECT >( 0 ); + } + + HOBJECT hObj = hOldObj; + + if ( !hObj ) + { + createStruct->m_ObjectType = OT_MODEL; + createStruct->m_Flags |= /*FLAG_VISIBLE |*/ FLAG_REALLYCLOSE; + createStruct->m_Flags2 |= FLAG2_DYNAMICDIRLIGHT; + + hObj = g_pLTClient->CreateObject( createStruct ); + if ( !hObj ) return static_cast< HOBJECT >( 0 ); + } + else + { + if ( LT_OK != g_pCommonLT->SetObjectFilenames( hObj, createStruct ) ) + { + return static_cast< HOBJECT >( 0 ); + } + } + + // we want to be notified for model keys + LTRESULT ltResult = g_pCommonLT->SetObjectFlags(hObj, OFT_Client, CF_NOTIFYMODELKEYS, CF_NOTIFYMODELKEYS); + ASSERT( LT_OK == ltResult ); + + // Reset the model animation... + + g_pModelLT->SetLooping( hObj, MAIN_TRACKER, false ); + g_pModelLT->SetPlaying( hObj, MAIN_TRACKER, false ); + + return hObj; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateAmmoFromFire +// +// PURPOSE: Decrement the ammo, clear the fire boolean +// +// ----------------------------------------------------------------------- // + +WeaponState CClientWeapon::UpdateAmmoFromFire( bool bDecrementAmmo /*= true*/) +{ + ASSERT( 0 != g_pClientSoundMgr ); + ASSERT( 0 != g_pLTClient ); + ASSERT( 0 != g_pPlayerStats ); + + WeaponState eRet = W_IDLE; + + // determine if we have infinite ammo, if if not, how much ammo we actually have + int nAmmo; + bool bInfiniteAmmo = ( g_bInfiniteAmmo || m_pWeapon->bInfiniteAmmo ); + if ( bInfiniteAmmo ) + { + // dummy value for infinite ammo + nAmmo = INFINITE_AMMO_AMOUNT; + } + else + { + // current amount of ammo + nAmmo = g_pPlayerStats->GetAmmoCount( m_nAmmoId ); + } + + // If this weapon uses ammo, make sure we have ammo... + if ( nAmmo > 0 ) + { + // by changing the state to "fired", the update function + // will see this and fire the weapon + eRet = W_FIRED; + + if ( bDecrementAmmo ) + { + DecrementAmmo(); + } + } + else // NO AMMO + { +/* [KLS 5/8/02] Removed support for dry-fire.... + + // Play dry-fire sound... + if ( m_pWeapon->szDryFireSound[ 0 ] ) + { + g_pClientSoundMgr->PlaySoundLocal( m_pWeapon->szDryFireSound, SOUNDPRIORITY_PLAYER_HIGH, + 0, SMGR_DEFAULT_VOLUME, 1.0f, WEAPONS_SOUND_CLASS ); + } + + // Send message to Server so that other clients can hear this sound... + uint32 dwId; + LTRESULT ltResult; + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_WEAPON_SOUND ); + + // get the local client id + ltResult = g_pLTClient->GetLocalClientID( &dwId ); + ASSERT( LT_OK == ltResult ); + + // the dry fire sound + cMsg.Writeuint8( PSI_DRY_FIRE ); + + // the weapon id + cMsg.Writeuint8( m_nWeaponId ); + + // client id + cMsg.Writeuint8( static_cast< uint8 >( dwId ) ); + + // flash position (presumably where the sound comes from) + cMsg.WriteLTVector( m_vFlashPos ); + + // send the message + ltResult = g_pLTClient->SendToServer( cMsg.Read(), 0 ); + ASSERT( LT_OK == ltResult ); +*/ + } + + return eRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateModelState +// +// PURPOSE: Update the model's state (fire if bFire == true) +// NOTE: the return value is a WeaponState but is not necessarily +// this weapon's current state. +// +// ----------------------------------------------------------------------- // + +WeaponState CClientWeapon::UpdateModelState( bool bFire ) +{ + WeaponState eRet = W_IDLE; + + // Check if we can't fire because the weapon is overheated. + if( m_fHeatAmount >= 1.0f ) + { + bFire = false; + } + + // Determine what we should be doing... + // (mostly updates animations, also + // updates a couple supporting variables) + if (bFire) + { + UpdateFiring(); + } + else + { + UpdateNonFiring(); + } + + if ( m_bFire ) + { + // gadgets...always the special case :-( + bool bGadgetSpecialCase = m_pAmmo->eType != GADGET; + + // doesn't actually fire, just updates the ammo + eRet = UpdateAmmoFromFire( bGadgetSpecialCase ); + + // clear the fire flag + m_bFire = false; + } + + // See if we just finished deselecting the weapon... + if ( m_bWeaponDeselected ) + { + m_bWeaponDeselected = false; + + if ( m_cbDeselect ) + { + // call the deselect callback + m_cbDeselect( m_nWeaponId, m_pcbData ); + + // clear out the callback data + m_cbDeselect = 0; + m_pcbData = 0; + } + + // deactivate the current weapon, its not used anymore + Deactivate(); + } + + return eRet; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::UpdateWeaponPosition() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateWeaponPosition( LTVector const &vOffset ) +{ + LTVector vNewPos; + LTVector vWeaponOffset = GetWeaponOffset(); + + vNewPos.x = vWeaponOffset.x + m_fBobWidth; + vNewPos.y = vWeaponOffset.y + m_fBobHeight; + vNewPos.z = vWeaponOffset.z; + + // use the extra offset for the weapon placement + vNewPos += vOffset.x; + vNewPos += vOffset.y; + vNewPos += vOffset.z; + + // set the weapon model position + g_pLTClient->SetObjectPos( m_hObject, &vNewPos ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateFiring +// +// PURPOSE: Update the animation state of the model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateFiring() +{ + m_bCanSetLastFire = true; + + switch( GetState()) + { + case W_RELOADING: + { + if ( !PlayReloadAnimation() ) + { + SetState( W_FIRING ); + } + } + break; + + case W_IDLE: + { + SetState( W_FIRING ); + } + break; + + case W_SELECT: + { + if ( !PlaySelectAnimation() ) + { + SetState( W_FIRING ); + } + } + break; + + case W_DESELECT: + { + if ( !PlayDeselectAnimation() ) + { + SetState( W_FIRING ); + } + } + break; + + case W_FIRING: + case W_FIRING_NOAMMO: + { + if ( PlayFireAnimation( true ) ) + { + m_bCanSetLastFire = false; + } + } + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateNonFiring +// +// PURPOSE: Update the non-firing animation state of the model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateNonFiring() +{ + m_bCanSetLastFire = true; + + switch( GetState()) + { + case W_FIRING: + { + if ( !PlayFireAnimation( false ) ) + { + SetState( W_IDLE ); + } + else + { + m_bCanSetLastFire = false; + } + } + break; + + case W_FIRING_NOAMMO: + { + SetState( W_IDLE ); + } + break; + + case W_RELOADING: + { + if ( !PlayReloadAnimation() ) + { + SetState( W_IDLE ); + } + } + break; + + case W_SELECT: + { + if ( !PlaySelectAnimation() ) + { + SetState( W_IDLE ); + } + } + break; + + case W_DESELECT: + { + if ( !PlayDeselectAnimation() ) + { + m_bWeaponDeselected = true; + SetState( W_IDLE ); + } + } + break; + + case W_IDLE: + { + PlayIdleAnimation(); + } + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::InitAnimations +// +// PURPOSE: Set the animations +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::InitAnimations( bool bAllowSelectOverride ) +{ + ASSERT( 0 != m_hObject ); + + m_nSelectAni = g_pLTClient->GetAnimIndex( m_hObject, ns_szSelectAnimationName ); + m_nDeselectAni = g_pLTClient->GetAnimIndex( m_hObject, ns_szDeselectAnimationName ); + m_nReloadAni = g_pLTClient->GetAnimIndex( m_hObject, ns_szReloadAnimationName ); + + m_nAltSelectAni = g_pLTClient->GetAnimIndex(m_hObject, ns_szAltSelectAnimationName ); + m_nAltDeselectAni = g_pLTClient->GetAnimIndex(m_hObject, ns_szAltDeselectAnimationName ); + m_nAltDeselect2Ani = g_pLTClient->GetAnimIndex(m_hObject, ns_szAltDeselect2AnimationName ); + m_nAltReloadAni = g_pLTClient->GetAnimIndex(m_hObject, ns_szAltReloadAnimationName ); + + m_nPreFireAni = g_pLTClient->GetAnimIndex(m_hObject, ns_szPreFireAnimationName ); + m_nPostFireAni = g_pLTClient->GetAnimIndex(m_hObject, ns_szPostFireAnimationName ); + + char buf[30]; + int i; + + for ( i = 0; i < WM_MAX_IDLE_ANIS; ++i ) + { + sprintf( buf, "%s%d", ns_szIdleAnimationBasename, i ); + m_nIdleAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for ( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if ( i > 0 ) + { + sprintf( buf, "Fire%d", i ); + } + else + { + sprintf( buf, "Fire" ); + } + + m_nFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for ( i = 0; i < WM_MAX_ALTIDLE_ANIS; ++i ) + { + sprintf( buf, "%s%d", ns_szAltIdleAnimationBasename, i ); + m_nAltIdleAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for ( i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + if ( i > 0 ) + { + sprintf( buf, "%s%d", ns_szAltFireAnimationBasename, i ); + } + else + { + sprintf( buf, ns_szAltFireAnimationName ); + } + + m_nAltFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + // See if there are Ammo-override animations... + if ( m_pAmmo->pAniOverrides ) + { + // Set new animations... + SetAmmoOverrideAnis( bAllowSelectOverride ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SetAmmoOverrideAnis +// +// PURPOSE: Set the ammo specific override animations... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetAmmoOverrideAnis( bool bAllowSelectOverride ) +{ + if ( !m_hObject || !m_pAmmo || !m_pAmmo->pAniOverrides ) return; + + if ( bAllowSelectOverride && m_pAmmo->pAniOverrides->szSelectAni[ 0 ] ) + { + m_nSelectAni = g_pLTClient->GetAnimIndex( m_hObject, m_pAmmo->pAniOverrides->szSelectAni ); + } + + if ( m_pAmmo->pAniOverrides->szDeselectAni[ 0 ] ) + { + m_nDeselectAni = g_pLTClient->GetAnimIndex( m_hObject, m_pAmmo->pAniOverrides->szDeselectAni ); + } + + if ( m_pAmmo->pAniOverrides->szReloadAni[ 0 ] ) + { + m_nReloadAni = g_pLTClient->GetAnimIndex( m_hObject, m_pAmmo->pAniOverrides->szReloadAni ); + } + + int i; + for ( i = 0; i < WM_MAX_IDLE_ANIS; ++i ) + { + if ( i < m_pAmmo->pAniOverrides->nNumIdleAnis ) + { + if ( m_pAmmo->pAniOverrides->szIdleAnis[ i ][ 0 ] ) + { + m_nIdleAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, m_pAmmo->pAniOverrides->szIdleAnis[i] ); + } + } + else + { + m_nIdleAnis[ i ] = INVALID_ANI; + } + } + + for ( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if ( i < m_pAmmo->pAniOverrides->nNumFireAnis ) + { + if ( m_pAmmo->pAniOverrides->szFireAnis[ i ][ 0 ] ) + { + m_nFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, m_pAmmo->pAniOverrides->szFireAnis[ i ] ); + } + } + else + { + m_nFireAnis[ i ] = INVALID_ANI; + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlayAnimation +// +// PURPOSE: Play an animation +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::PlayAnimation( uint32 dwAni, bool bReset /*= true*/, + float fRate /*=1.0f*/, bool bLooping /*=false*/ ) +{ + if( !m_hObject ) + return; + + LTRESULT ltResult; + + if ( 0 < nsfOverrideRate ) + { + fRate = nsfOverrideRate; + } + + g_pModelLT->SetPlaying( m_hObject, MAIN_TRACKER, true ); + g_pModelLT->SetLooping( m_hObject, MAIN_TRACKER, bLooping ); + g_pModelLT->SetCurAnim( m_hObject, MAIN_TRACKER, dwAni ); + + ltResult = g_pModelLT->SetAnimRate( m_hObject, MAIN_TRACKER, fRate ); + ASSERT( LT_OK == ltResult ); + + if ( bReset ) + { + // Start from beginning + ltResult = g_pLTClient->ResetModelAnimation( m_hObject ); + ASSERT( LT_OK == ltResult ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlaySelectAnimation() +// +// PURPOSE: Set model to select animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::PlaySelectAnimation() +{ + ASSERT( 0 != g_pLTClient ); + ASSERT( 0 != g_pPlayerStats ); + + uint32 dwSelectAni = GetSelectAni(); + + if ( !m_hObject || ( dwSelectAni == INVALID_ANI ) ) + { + // object or animation not valid + return false; + } + + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + uint32 dwState = g_pLTClient->GetModelPlaybackState( m_hObject ); + + bool bIsSelectAni = IsSelectAni( dwAni ); + if ( bIsSelectAni && ( dwState & MS_PLAYDONE ) ) + { + // animation done + return false; + } + + if ( !bIsSelectAni ) + { + // change to a select animation + + LTFLOAT fRate = 1.0f; + if ( m_pAmmo->eType == GADGET ) + { + // gadgets...always the special case + fRate *= g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eSelect); + } + else + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_WEAPON,WeaponModifiers::eReload); + } + + PlayAnimation( dwSelectAni, false, fRate ); + } + + return true; // Animation playing +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlayDeselectAnimation() +// +// PURPOSE: Set model to deselect animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::PlayDeselectAnimation() +{ + uint32 dwDeselectAni = GetDeselectAni(); + + if ( !m_hObject || ( dwDeselectAni == INVALID_ANI ) ) + { + // model or animation invalid + + // mark "deselected" and handle details during next update + m_bWeaponDeselected = true; + return false; + } + + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + uint32 dwState = g_pLTClient->GetModelPlaybackState( m_hObject ); + + bool bIsDeselectAni = IsDeselectAni( dwAni ); + + if ( bIsDeselectAni && ( dwState & MS_PLAYDONE ) ) + { + // animation is done + + // mark "deselected" and handle details during next update + m_bWeaponDeselected = true; + return false; + } + + if ( !bIsDeselectAni ) + { + // change to a deselect animation + + LTFLOAT fRate = 1.0f; + if ( m_pAmmo->eType == GADGET ) + { + // gadgets...always the special case + fRate *= g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eSelect); + } + else + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_WEAPON,WeaponModifiers::eReload); + } + + PlayAnimation( dwDeselectAni, false, fRate ); + } + + return true; // Animation playing +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlayReloadAnimation() +// +// PURPOSE: Set model to reloading animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::PlayReloadAnimation() +{ + uint32 dwReloadAni = GetReloadAni(); + + if ( !m_hObject || ( INVALID_ANI == dwReloadAni ) ) + { + return false; + } + + ASSERT( 0 != g_pLTClient ); + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + uint32 dwState = g_pLTClient->GetModelPlaybackState( m_hObject ); + + bool bCurAniDone = !!( dwState & MS_PLAYDONE ); + bool bIsFireAni = IsFireAni(dwAni); + + bool bCanPlay = ( !bIsFireAni || bCurAniDone || + g_pLTClient->GetModelLooping( m_hObject ) ); + + // Make sure the *entire* fire animation sequence has finished playing... + + if( bIsFireAni && (GetPostFireAni() != INVALID_ANI) ) + { + bCanPlay = false; + + if( IsPostFireAni( dwAni ) && bCurAniDone ) + { + bCanPlay = true; + } + else if( bCurAniDone ) + { + PlayFireAnimation( false ); + } + } + + bool bIsReloadAni = IsReloadAni( dwAni ); + + if ( bIsReloadAni && bCurAniDone ) + { + // Set ammo in clip amount... + m_nAmmoInClip = m_nNewAmmoInClip; + + // Update the player's stats... + int nAmmo = g_pPlayerStats->GetAmmoCount( m_nAmmoId ); + + g_pPlayerStats->UpdateAmmo( m_nWeaponId, m_nAmmoId, nAmmo ); + g_pPlayerStats->UpdatePlayerWeapon( m_nWeaponId, m_nAmmoId ); + + return false; + } + else if ( !bIsReloadAni && bCanPlay ) + { + // Make sure we do special end fire before changing animations... + if ( bIsFireAni && bCurAniDone ) + { + DoSpecialEndFire(); + } + + ASSERT( 0 != g_pPlayerStats ); + LTFLOAT fRate = 1.0f; + + // Scale the animation rate... + + if( m_pWeapon ) + { + fRate *= m_pWeapon->fReloadAnimRateScale; + } + + // Scale the animation rate based on skill modifiers... + + if ( m_pAmmo->eType == GADGET ) + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eSelect); + } + else + { + fRate *= g_pPlayerStats->GetSkillModifier(SKL_WEAPON,WeaponModifiers::eReload); + } + + PlayAnimation( dwReloadAni, false, fRate ); + + // Tell the server we're playing the reload ani... + CAutoMessage cMsg; + LTRESULT ltResult; + + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + + cMsg.Writeuint8( CP_WEAPON_STATUS ); + + cMsg.Writeuint8( WS_RELOADING ); + + ltResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == ltResult ); + } + + // Animation playing + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlayIdleAnimation() +// +// PURPOSE: Set model to Idle animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::PlayIdleAnimation() +{ + ASSERT( 0 != g_pGameClientShell ); + ASSERT( 0 != g_pLTClient ); + + if ( !m_hObject || g_pPlayerMgr->IsZoomed() ) + { + // would be better to move the second check somewhere else + return false; + } + + // determine of the current animation is done + bool bCurAniDone = !!( g_pLTClient->GetModelPlaybackState( m_hObject ) & MS_PLAYDONE ); + + // Make sure idle animation is done if one is currently playing... + uint32 dwAni = g_pLTClient->GetModelAnimation( m_hObject ); + if ( IsIdleAni( dwAni ) ) + { + if ( !bCurAniDone ) + { + return true; + } + } + + // See if the player is moving...Don't do normal idles when player is + // moving... + bool bMoving = false; + if ( 0.1f < g_pPlayerMgr->GetMoveMgr()->GetVelocity().Mag() ) + { + bMoving = !!( g_pPlayerMgr->GetPlayerFlags() & BC_CFLG_MOVING ); + } + + // Play idle if it is time...(and not moving)... + LTFLOAT fTime = g_pLTClient->GetTime(); + bool bPlayIdle = false; + if ( ( fTime > m_fNextIdleTime ) && bCurAniDone ) + { + bPlayIdle = !bMoving; + m_fNextIdleTime = GetNextIdleTime(); + } + + // get a subtle animation in case we will be playing it + uint32 nSubtleIdleAni = GetSubtleIdleAni(); + + // determine which kind of idle to play (if any) + if ( bPlayIdle ) + { + // + // play normal idle animation + // + + // the the animation + uint32 nAni = GetIdleAni(); + + // make sure if its valid + if ( nAni == INVALID_ANI ) + { + nAni = DEFAULT_ANI; + } + + // play it + PlayAnimation( nAni, false ); + + // return true because vaild idle playing + return true; + } + else if ( nSubtleIdleAni != INVALID_ANI ) + { + // Play subtle idle... + if ( ( dwAni != nSubtleIdleAni ) || bCurAniDone ) + { + PlayAnimation( nSubtleIdleAni ); + } + + // return true because vaild idle playing + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::PlayFireAnimation() +// +// PURPOSE: Set model to firing animation. If the model has a PreFire animation +// we will play that first and then play the Fire animation. If the model +// has a PostFire animation we will play that as soon as the Fire ani is done. +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::PlayFireAnimation( bool bResetAni ) +{ + // Can only set the last fire type if a fire animation isn't playing + // (i.e., we'll assume this function will return false)... + + uint32 dwAni = g_pLTClient->GetModelAnimation(m_hObject); + uint32 dwState = g_pLTClient->GetModelPlaybackState(m_hObject); + + uint32 dwPreFireAni = GetPreFireAni(); + uint32 dwFireAni = GetFireAni( m_eLastFireType ); + uint32 dwPostFireAni = GetPostFireAni(); + + bool bHasPreFireAni = !!(INVALID_ANI != dwPreFireAni); + bool bHasFireAni = !!(INVALID_ANI != dwFireAni); + bool bHasPostFireAni = !!(INVALID_ANI != dwPostFireAni); + + bool bIsFireAni = IsFireAni( dwAni ); + + bool bIsMainFireAni = IsFireAni( dwAni, true ); + bool bIsPreFireAni = IsPreFireAni( dwAni ); + bool bIsPostFireAni = IsPostFireAni( dwAni ); + + bool bIsCurAniDone = !!(dwState & MS_PLAYDONE); + + + // Scale the animation rate... + + float fRate = 1.0f; + if( m_pWeapon ) + { + fRate *= m_pWeapon->fFireAnimRateScale; + } + + // KLS 4/26/02 - Re-wrote this logic to fix some bugs and to make things + // a bit clearer. + + // First handle case of not currently playing any type of fire animation + // but wanting to fire the weapon... + + if ( !bIsFireAni && bResetAni ) + { + // If we have a pre-fire animation, play it... + if ( bHasPreFireAni ) + { + PlayAnimation( dwPreFireAni, true, fRate ); + return true; + } + + // No pre-fire, so play the fire animation... + if ( bHasFireAni ) + { + PlayAnimation( dwFireAni, true, fRate ); + return true; + } + + // Shouldn't really happen, but maybe we only have a post-fire ani... + if ( bHasPostFireAni ) + { + PlayAnimation( dwPostFireAni, true, fRate ); + return true; + } + + // If we got here, it means we don't have any fire anis... + return false; + } + + + // Now handle the case where we are already playing a fire animation... + + if ( bIsFireAni ) + { + // Determine what animation to play if we're done firing... + + if ( !bIsCurAniDone ) + { + return true; + } + + + // The current animation is done, so figure out what to do now... + + if ( bIsPreFireAni ) + { + // We just finished playing the pre-fire ani, so try and play the main + // fire ani, or the post-fire ani if we don't have main fire ani... + + if ( bHasFireAni ) + { + PlayAnimation( dwFireAni, true, fRate ); + return true; + } + else if ( bHasPostFireAni ) + { + PlayAnimation( dwPostFireAni, true, fRate ); + return true; + } + } + else if ( bIsMainFireAni ) + { + // We just finished playing the main fire ani, play it again if bResetAni + // is true and we have ammo (i.e., they are holding down the fire key). + // Else, if we have a post-fire ani, play it... + + if ( bResetAni && g_pPlayerStats->GetAmmoCount(m_nAmmoId) > 0 ) + { + PlayAnimation( dwFireAni, true, fRate ); + return true; + } + else if ( bHasPostFireAni ) + { + PlayAnimation( dwPostFireAni, true, fRate ); + return true; + } + } + else if( bIsPostFireAni ) + { + // We just finished playing the post-fire ani, start the cycle again if bResetAni + // is true and we have ammo (i.e., they are holding down the fire key). + + if( bResetAni && g_pPlayerStats->GetAmmoCount(m_nAmmoId) > 0 ) + { + if( bHasPreFireAni ) + { + PlayAnimation( dwPreFireAni, true, fRate ); + return true; + } + else if( bHasFireAni ) + { + PlayAnimation( dwFireAni, true, fRate ); + return true; + } + } + + } + } + + // If we got here, it means we're done firing... + + DoSpecialEndFire(); + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsSelectAni() +// +// PURPOSE: Is this a valid Select ani +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsSelectAni( uint32 dwAni ) const +{ + if ( INVALID_ANI == dwAni ) + { + return false; + } + + if ( ( dwAni == m_nSelectAni ) || ( dwAni == m_nAltSelectAni ) ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetSelectAni() +// +// PURPOSE: Get a select animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetSelectAni() const +{ + if ( m_bUsingAltFireAnis ) + { + return m_nAltSelectAni; + } + else + { + return m_nSelectAni; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsDeselectAni() +// +// PURPOSE: Is this a valid deselect ani +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsDeselectAni( uint32 dwAni ) const +{ + if ( INVALID_ANI == dwAni ) + { + return false; + } + + if ( dwAni == m_nDeselectAni || + dwAni == m_nAltDeselectAni || + dwAni == m_nAltDeselect2Ani ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetDeselectAni() +// +// PURPOSE: Get a deselect animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetDeselectAni() const +{ + uint32 dwAni = INVALID_ANI; + + if ( m_bUsingAltFireAnis ) + { + // This is code from the WeaponModel which + // did its own weapon switching. Since alt-fire + // is broken, its here for reference if anyone + // wants to resurrect it. + /* + // If we're actually changing weapons make sure we use the + // currect AltDeselect animation... + if ( m_nRequestedWeaponId != WMGR_INVALID_ID && + m_nRequestedWeaponId != m_nWeaponId ) + { + dwAni = m_nAltDeselect2Ani; + } + else + { + dwAni = m_nAltDeselectAni; + } + */ + } + else + { + dwAni = m_nDeselectAni; + } + + return dwAni; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsReloadAni() +// +// PURPOSE: Is this a valid Reload ani +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsReloadAni( uint32 dwAni ) const +{ + if ( INVALID_ANI == dwAni ) + { + return false; + } + + if ( ( dwAni == m_nReloadAni ) || ( dwAni == m_nAltReloadAni ) ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetReloadAni() +// +// PURPOSE: Get a reload animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetReloadAni() const +{ + if ( m_bUsingAltFireAnis ) + { + return m_nAltReloadAni; + } + else + { + return m_nReloadAni; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsIdleAni() +// +// PURPOSE: Is the passed in animation an idle animation (NOTE this +// will return false if the passed in animation is a subtle +// idle animation). +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsIdleAni( uint32 dwAni ) const +{ + if ( INVALID_ANI == dwAni ) + { + return false; + } + + int i; + + // start at 1 because 0 is reserved for the subtle idle + for ( i = 1; i < WM_MAX_IDLE_ANIS; ++i ) + { + if ( m_nIdleAnis[ i ] == dwAni ) + { + return true; + } + } + + // start at 1 because 0 is reserved for the subtle idle + for ( i = 1; i < WM_MAX_ALTIDLE_ANIS; ++i ) + { + if ( m_nAltIdleAnis[i] == dwAni ) + { + return true; + } + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetIdleAni() +// +// PURPOSE: Get an idle animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetIdleAni() const +{ + int nNumValid = 0; + + if ( m_bUsingAltFireAnis ) + { + uint32 dwValidAltIdleAnis[ WM_MAX_ALTIDLE_ANIS ]; + + // Note that we skip the first ani, this is reserved for + // the subtle idle ani... + for ( int i = 1; i < WM_MAX_ALTIDLE_ANIS; ++i ) + { + if ( m_nAltIdleAnis[ i ] != INVALID_ANI ) + { + dwValidAltIdleAnis[ nNumValid ] = m_nAltIdleAnis[ i ]; + ++nNumValid; + } + } + + if ( 0 < nNumValid ) + { + return dwValidAltIdleAnis[ GetRandom( 0, ( nNumValid - 1 ) ) ]; + } + } + else // Normal idle anis + { + uint32 dwValidIdleAnis[ WM_MAX_IDLE_ANIS ]; + + // Note that we skip the first ani, this is reserved for + // the subtle idle ani... + for ( int i = 1; i < WM_MAX_IDLE_ANIS; ++i ) + { + if ( m_nIdleAnis[ i ] != INVALID_ANI ) + { + dwValidIdleAnis[ nNumValid ] = m_nIdleAnis[ i ]; + ++nNumValid; + } + } + + if ( 0 < nNumValid ) + { + return dwValidIdleAnis[ GetRandom( 0, ( nNumValid - 1 ) ) ]; + } + } + + return INVALID_ANI; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetSubtleIdleAni() +// +// PURPOSE: Get a sutble idle animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetSubtleIdleAni() const +{ + if ( m_bUsingAltFireAnis ) + { + return m_nAltIdleAnis[ 0 ]; + } + else + { + return m_nIdleAnis[ 0 ]; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetNextIdleTime() +// +// PURPOSE: Determine the next time we should play an idle animation +// +// ----------------------------------------------------------------------- // + +LTFLOAT CClientWeapon::GetNextIdleTime() const +{ + return g_pLTClient->GetTime() + GetRandom( WEAPON_MIN_IDLE_TIME, WEAPON_MAX_IDLE_TIME ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsPreFireAni +// +// PURPOSE: Is the passed in animation a pre-fire animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsPreFireAni( uint32 dwAni ) const +{ + if( INVALID_ANI == dwAni ) + { + return false; + } + + if( dwAni == m_nPreFireAni ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetPreFireAni +// +// PURPOSE: Get the pre-fire animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetPreFireAni( ) const +{ + return m_nPreFireAni; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsFireAni() +// +// PURPOSE: Is the passed in animation any one of the fire animations +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsFireAni( uint32 dwAni, bool bCheckNormalOnly /*= false*/) const +{ + if ( INVALID_ANI == dwAni ) + { + return false; + } + + int i; + for ( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if ( m_nFireAnis[ i ] == dwAni ) + { + return true; + } + } + + for ( i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + if ( m_nAltFireAnis[ i ] == dwAni ) + { + return true; + } + } + + // We want to see if the animation is a PreFire ani or PostFire ani because + // they can be thought of as part of the entire Fire animation sequence. + if ( !bCheckNormalOnly && (IsPreFireAni( dwAni ) || IsPostFireAni( dwAni )) ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetFireAni() +// +// PURPOSE: Get the fire animation based on the fire type +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetFireAni( FireType eFireType ) const +{ + int nNumValid = 0; + + if ( ( ( eFireType == FT_ALT_FIRE ) && CanUseAltFireAnis() ) || + ( m_bUsingAltFireAnis && ( eFireType == FT_NORMAL_FIRE ) ) ) + { + uint32 dwValidAltFireAnis[ WM_MAX_ALTFIRE_ANIS ]; + + for ( int i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + if ( INVALID_ANI != m_nAltFireAnis[ i ] ) + { + dwValidAltFireAnis[ nNumValid ] = m_nAltFireAnis[ i ]; + ++nNumValid; + } + } + + if ( nNumValid > 0 ) + { + return dwValidAltFireAnis[ GetRandom( 0, ( nNumValid - 1 ) ) ]; + } + } + else if ( eFireType == FT_NORMAL_FIRE ) + { + uint32 dwValidFireAnis[ WM_MAX_FIRE_ANIS ]; + + for ( int i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if ( INVALID_ANI != m_nFireAnis[ i ] ) + { + dwValidFireAnis[ nNumValid ] = m_nFireAnis[ i ]; + ++nNumValid; + } + } + + if ( nNumValid > 0 ) + { + return dwValidFireAnis[ GetRandom( 0, ( nNumValid - 1 ) ) ]; + } + } + + return INVALID_ANI; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::IsPostFireAni +// +// PURPOSE: Is the passed in animation a post-fire animation +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::IsPostFireAni( uint32 dwAni ) const +{ + if( INVALID_ANI == dwAni ) + { + return false; + } + + if( dwAni == m_nPostFireAni ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetPostFireAni +// +// PURPOSE: get the post-fire animation +// +// ----------------------------------------------------------------------- // + +uint32 CClientWeapon::GetPostFireAni() const +{ + return m_nPostFireAni; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CanUseAltFireAnis() +// +// PURPOSE: Can we use alt-fire anis? +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::CanUseAltFireAnis() const +{ + return ( INVALID_ANI != m_nAltSelectAni ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetModelPos() +// +// PURPOSE: Get the position of the weapon model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::GetModelPos( LTVector *vPos ) const +{ + ASSERT( 0 != m_hObject ); + ASSERT( 0 != vPos ); + + g_pLTClient->GetObjectPos( m_hObject, vPos ); + *vPos += m_vCamPos; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::UpdateMods() +// +// PURPOSE: Update the mods for this weapon +// +// ----------------------------------------------------------------------- // +void CClientWeapon::UpdateMods() +{ + // Update the silencer... + UpdateSilencer(); + + // Update the scope... + UpdateScope(); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::RemoveMods() +// +// PURPOSE: Remove the mods for this weapon +// +// ----------------------------------------------------------------------- // +void CClientWeapon::RemoveMods() +{ + // Remove the silencer model... + RemoveSilencer(); + + // Remove the scope model... + RemoveScope(); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::SetVisibleMods() +// +// PURPOSE: Show/hide the mods +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetVisibleMods( bool bVis /*=true*/ ) +{ + // setup the visiblity flag we'll use in our engine calls + uint32 dwVisibleFlag; + if ( bVis ) + { + dwVisibleFlag = FLAG_VISIBLE; + } + else + { + dwVisibleFlag = 0; + } + + // Hide/Show silencer... + if ( m_hSilencerModel ) + { + g_pCommonLT->SetObjectFlags( m_hSilencerModel, OFT_Flags, dwVisibleFlag, FLAG_VISIBLE ); + } + + // Hide/Show scope... + if ( m_hScopeModel ) + { + g_pCommonLT->SetObjectFlags( m_hScopeModel, OFT_Flags, dwVisibleFlag, FLAG_VISIBLE ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetModelRot() +// +// PURPOSE: Get the rotation of the weapon model +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::GetModelRot( LTRotation *rRot ) const +{ + ASSERT( 0 != rRot ); + + // weapon rotation always matches the camera + *rRot = m_rCamRot; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreateMuzzleFlash +// +// PURPOSE: Create the muzzle flash +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreateMuzzleFlash() +{ + ASSERT( 0 != g_pModelLT ); + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != m_pWeapon ); + + // Remove the old FX Instance + RemoveMuzzleFlash(); + + // If our FX Instance is not created do so now... + if( !m_MuzzleFlashFX.IsValid() ) + { + if ( '\0' != m_pWeapon->szPVMuzzleFxName[ 0 ] ) + { + // This is always the player view FX + CLIENTFX_CREATESTRUCT fxInit( m_pWeapon->szPVMuzzleFxName, FXFLAG_LOOP | FXFLAG_REALLYCLOSE, m_hObject ); + g_pClientFXMgr->CreateClientFX( &m_MuzzleFlashFX, fxInit, false ); + if( m_MuzzleFlashFX.IsValid() ) + { + m_MuzzleFlashFX.GetInstance()->Hide(); + m_MuzzleFlashFX.GetInstance()->SetPos( LTVector(0.0f,0.0f,0.0f), LTVector(0.0f,0.0f,0.0f) ); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemoveMuzzleFlash +// +// PURPOSE: Destroys the muzzle flash +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemoveMuzzleFlash() +{ + if ( m_MuzzleFlashFX.IsValid() ) + { + // The FX will run itself out and get deleted in the mgr but we should still null our ptr + ASSERT( 0 != g_pClientFXMgr ); + g_pClientFXMgr->ShutdownClientFX( &m_MuzzleFlashFX ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateMuzzleEffects() +// +// PURPOSE: Update muzzle flash and overheat fx. +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::UpdateMuzzleEffects( WeaponState eState, LTVector const &vOffset ) +{ + // [RP] Always update the flash position, otherwise weapons without + // muzzleflashes or weapons with silencers will not fire correctly. + + // get weapon and muzzle offsets + LTVector vWeaponOffset = GetWeaponOffset(); + LTVector vMuzzleOffset = GetMuzzleOffset(); + + // camera axes + LTVector vCamU, vCamR, vCamF; + vCamU = m_rCamRot.Up(); + vCamR = m_rCamRot.Right(); + vCamF = m_rCamRot.Forward(); + + // set the flash offset to be a combination of + // the weapon, muzzle, and bobbing + // NOTE: in camera space + m_vFlashOffset = vWeaponOffset + vMuzzleOffset; + m_vFlashOffset.x += m_fBobWidth; + m_vFlashOffset.y += m_fBobHeight; + + // add extra offset + m_vFlashOffset += vOffset; + + // deterime the world space position of the flash, + // offset using the camera's local axis + LTVector vFlashCameraRelativeOffestInWorldSpace( 0.0f, 0.0f, 0.0f ); + vFlashCameraRelativeOffestInWorldSpace = vCamR * m_vFlashOffset.x; + vFlashCameraRelativeOffestInWorldSpace += vCamU * m_vFlashOffset.y; + vFlashCameraRelativeOffestInWorldSpace += vCamF * m_vFlashOffset.z; + + m_vFlashPos = m_vCamPos + vFlashCameraRelativeOffestInWorldSpace; + + + // get the object flags + uint32 dwFlags; + g_pCommonLT->GetObjectFlags( m_hObject, OFT_Flags, dwFlags ); + + // if the object is not visible hide it + if ( ! ( dwFlags & FLAG_VISIBLE ) ) + { + if( m_MuzzleFlashFX.IsValid( )) + m_MuzzleFlashFX.GetInstance()->Hide(); + if( m_OverheatFx.IsValid()) + m_OverheatFx.GetInstance()->Hide(); + return; + } + + if( m_MuzzleFlashFX.IsValid() && !m_bHaveSilencer ) + { + LTFLOAT fCurTime = g_pLTClient->GetTime(); + LTFLOAT fFlashDuration = m_MuzzleFlashFX.GetInstance()->m_fDuration; + + + if ( ( fCurTime >= ( m_fFireTime + fFlashDuration ) ) || + ( g_pPlayerMgr->GetPlayerState() != PS_ALIVE ) || + ( IsLiquid( g_pPlayerMgr->GetCurContainerCode()) && !m_pWeapon->bUseUWMuzzleFX ) ) + { + m_MuzzleFlashFX.GetInstance()->Hide(); + } + else + { + // Align the flash object to the direction the model is facing... + m_MuzzleFlashFX.GetInstance()->Show(); + m_MuzzleFlashFX.GetInstance()->SetPos( m_vFlashPos, m_vFlashOffset ); + } + } + + if( m_OverheatFx.IsValid()) + { + if( m_fHeatAmount < 1.0f || + ( g_pPlayerMgr->GetPlayerState() != PS_ALIVE ) || + ( IsLiquid( g_pPlayerMgr->GetCurContainerCode())) ) + { + m_OverheatFx.GetInstance()->Hide(); + } + else + { + // Align the flash object to the direction the model is facing... + m_OverheatFx.GetInstance()->Show(); + m_OverheatFx.GetInstance()->SetPos( m_vFlashPos, m_vFlashOffset ); + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreateOverheatFx +// +// PURPOSE: Create the overheat effect +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreateOverheatFx() +{ + ASSERT( 0 != g_pModelLT ); + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != m_pWeapon ); + + // Remove the old FX Instance + RemoveOverheatFx(); + + // If our FX Instance is not created do so now... + if( !m_OverheatFx.IsValid() ) + { + if ( '\0' != m_pWeapon->szHeatPVOverheatFxName[ 0 ] ) + { + // This is always the player view FX + CLIENTFX_CREATESTRUCT fxInit( m_pWeapon->szHeatPVOverheatFxName, FXFLAG_LOOP | FXFLAG_REALLYCLOSE, m_hObject ); + g_pClientFXMgr->CreateClientFX( &m_OverheatFx, fxInit, false ); + if( m_OverheatFx.IsValid() ) + { + m_OverheatFx.GetInstance()->Hide(); + m_OverheatFx.GetInstance()->SetPos( LTVector(0.0f,0.0f,0.0f), LTVector(0.0f,0.0f,0.0f) ); + } + } + } + + // Make sure our weapon heat information is up to date. + UpdateWeaponHeat( ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemoveOverheatFx +// +// PURPOSE: Destroys the overheat fx. +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemoveOverheatFx() +{ + if ( m_OverheatFx.IsValid() ) + { + // The FX will run itself out and get deleted in the mgr but we should still null our ptr + ASSERT( 0 != g_pClientFXMgr ); + g_pClientFXMgr->ShutdownClientFX( &m_OverheatFx ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::CreatePVAttachClientFX +// +// PURPOSE: Create all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::CreatePVAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != m_pWeapon ); + + RemovePVAttachClientFX(); + + for ( int i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + if ( '\0' != m_pWeapon->szPVAttachClientFX[ i ][ 0 ] ) + { + CLIENTFX_CREATESTRUCT fxInit( m_pWeapon->szPVAttachClientFX[ i ], FXFLAG_LOOP | FXFLAG_REALLYCLOSE, m_hObject ); + g_pClientFXMgr->CreateClientFX( &m_PVAttachClientFX[ i ], fxInit, false ); + if ( m_PVAttachClientFX[ i ].IsValid() ) + { + // start out hidden + m_PVAttachClientFX[ i ].GetInstance()->Hide(); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ShowPVAttachClientFX +// +// PURPOSE: Show all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ShowPVAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != m_pWeapon ); + + for ( int i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + // Only show those FX that were visible before we hid them... + + if ( m_PVAttachClientFX[ i ].IsValid() && !m_bPVAttachClientFXHidden[i] ) + { + m_PVAttachClientFX[ i ].GetInstance()->Show(); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HidePVAttachClientFX +// +// PURPOSE: Hide all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::HidePVAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + ASSERT( 0 != m_pWeapon ); + + for ( int i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + if ( m_PVAttachClientFX[ i ].IsValid() ) + { + m_bPVAttachClientFXHidden[i] = !(m_PVAttachClientFX[i].GetInstance()->m_bShow); + m_PVAttachClientFX[ i ].GetInstance()->Hide(); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemovePVAttachClientFX +// +// PURPOSE: Destroys all the player view attach client fx +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::RemovePVAttachClientFX() +{ + ASSERT( 0 != g_pClientFXMgr ); + + int i; + + for ( i = 0; i < WM_MAX_PV_ATTACH_CLIENTFX; ++i ) + { + if ( m_PVAttachClientFX[ i ].IsValid() ) + { + // The FX will run itself out and get deleted in the mgr but we should still null our ptr + + g_pClientFXMgr->ShutdownClientFX( &m_PVAttachClientFX[ i ] ); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HandleFireKeyDown() +// +// PURPOSE: Handle fire key down. +// NOTE: Currently the primary use of this function is to +// support ALT-FIRE animations. Unfortunately with the +// client weapon reshuffling, they are broken. +// Use at your own risk. +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::HandleFireKeyDownTransition() +{ + // Only handle alt-fire case on weapons that have special + // Alt-fire animations... + if (m_eLastFireType != FT_ALT_FIRE || !CanUseAltFireAnis()) return; + + // If we aren't playing the select, deselect, or fire ani, it is + // okay to toggle using Alt-Fire Anis on/off... + uint32 dwAni = g_pLTClient->GetModelAnimation(m_hObject); + + if (IsSelectAni(dwAni) || IsDeselectAni(dwAni) || IsFireAni(dwAni)) + { + return; + } + + + // Toggle use of Alt-Fire Anis on/off... + + // Alright we need to either select or deselect the alt-fire + // aspect of the weapon. This is a bit tricky since the + // select/deselect code depends on the current value of + // m_bUsingAltFireAnis, and we want to change that value here. + // + // So, for the select case (i.e., m_bUsingAltFireAni == TRUE AFTER + // it is toggled), we'll go ahead and toggle it first...). + // + // However, for the deselect case (i.e., m_bUsingAltFireAni + // == TRUE BEFORE it is toggled), we'll toggle it after we + // call Deslect... + + + // See if we need to call Select... + if (!m_bUsingAltFireAnis) + { + // Toggle so Select knows the right ani to play... +// m_bUsingAltFireAnis = !m_bUsingAltFireAnis; +// Select(); + } + else + { + // Call deselect, then toggle... +// Deselect(); +// m_bUsingAltFireAnis = !m_bUsingAltFireAnis; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HandleFireKeyUp() +// +// PURPOSE: Handle fire key up +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::HandleFireKeyUpTransition() +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::Fire +// +// PURPOSE: Fire the weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::Fire( bool bFire ) +{ + ASSERT( 0 != m_hObject ); + ASSERT( 0 != m_pAmmo ); + + m_fFireTime = g_pLTClient->GetTime(); + + + // Special case, check for gadget modes that don't actually support firing... + if ( DT_GADGET_INFRA_RED == m_pAmmo->eInstDamageType ) + { + return; + } + + // perturb based on player's movement/firing state + LTFLOAT fPerturb = GetDynamicPerturb(); + + // get the player's aim modifier + LTFLOAT fPerturbX = g_pPlayerStats->GetSkillModifier(SKL_AIM,AimModifiers::eAccuracy); + + // factor the modifier into the perturb + fPerturb *= fPerturbX; + + // fire position/direction information + LTVector vU, vR, vF, vFirePos; + + // Get the fire pos/rot + if ( !GetFireVectors( &vU, &vR, &vF, &vFirePos ) ) + { + return; + } + + // Make sure we always ignore the fire sounds... + m_wIgnoreFX = WFX_FIRESOUND | WFX_ALTFIRESND; + + if ( !m_bHaveSilencer ) + { + m_wIgnoreFX |= WFX_SILENCED; + } + + // Create a client-side projectile for every vector... + WeaponPath wp; + wp.nWeaponId = m_nWeaponId; + wp.vU = vU; + wp.vR = vR; + wp.fPerturbR = fPerturb; + wp.fPerturbU = wp.fPerturbR; + + LTVector vObjectImpactPos; + HOBJECT hObjectImpact = INVALID_HOBJECT; + + for (int i=0; i < m_pWeapon->nVectorsPerRound; i++) + { + wp.vPath = vF; + + g_pWeaponMgr->CalculateWeaponPath( wp ); + + // Do client-side firing... + ClientFire( wp.vPath, vFirePos, &vObjectImpactPos, &hObjectImpact ); + } + + // Play Fire sound... + uint8 nFireType = GetLastSndFireType(); + + PlayerSoundId eSoundId = PSI_FIRE; + if ( nFireType == PSI_SILENCED_FIRE ) + { + eSoundId = PSI_SILENCED_FIRE; + } + else if ( nFireType == PSI_ALT_FIRE ) + { + eSoundId = PSI_ALT_FIRE; + } + + LTVector vPos( 0, 0, 0 ); + ::PlayWeaponSound( m_pWeapon, vPos, eSoundId, LTTRUE ); + + // send a fire message to the server + SendFireMessage( bFire, fPerturb, vFirePos, vF, vObjectImpactPos, hObjectImpact ); + + // Update our weapon heat. + AddWeaponHeat( ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SendFireMessage() +// +// PURPOSE: Send fire message to server +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SendFireMessage( bool bFire, + LTFLOAT fPerturb, + LTVector const &vFirePos, + LTVector const &vDir, + LTVector const &vImpactPos, + HOBJECT hObject ) +{ + // sanity check + ASSERT( 0 != g_pLTClient ); + ASSERT( 0 != m_hObject ); + ASSERT( 0 != m_pAmmo ); + + // Send Fire message to server... + + // Calculate a random seed...(srand uses this value so it can't be 1, since + // that has a special meaning for srand) + uint8 nRandomSeed = GetRandom( 2, 255 ); + + CAutoMessage cMsg; + LTRESULT msgResult; + + cMsg.Writeuint8( MID_WEAPON_FIRE ); + + // write the projectile type + // NOTE: currently the server considers VECTOR and PROJECTILE the same + cMsg.Writeuint8( GetFireMessageType() ); + + // ID of the weapon that is firing + cMsg.Writeuint8( m_nWeaponId ); + + // ID of the ammo that is firing + cMsg.Writeuint8( m_nAmmoId ); + + // muzzle flash position + cMsg.WriteLTVector( m_vFlashPos ); + + // weapon fire position (point where the bullets come from) + cMsg.WriteLTVector( vFirePos ); + + // vector pointing in the direction of travel + cMsg.WriteLTVector( vDir ); + + // random seed + cMsg.Writeuint8( nRandomSeed ); + + /* + // NOTE: alt-fire is broken, don't send this + // determine if we are using the alt fire animation (TRUE == we ARE using the alt fire) + msgResult = cMsg.WriteByte( static_cast< bool >( FT_ALT_FIRE == m_eLastFireType ) ); + ASSERT( LT_OK == msgResult ); + */ + + // perturb (random range from true center that bullet can travel) + cMsg.Writeuint8( static_cast< uint8 >( fPerturb * 255.0f ) ); + + // time the weapon fired, in microseconds + cMsg.Writeint32( static_cast< int >( g_pLTClient->GetTime() * 1000.0f ) ); + + // add any extra info needed for the fire message + // (this function primarily for derived classes) + AddExtraFireMessageInfo( bFire, cMsg ); + + // Object that was hit (optional) + bool bWriteObject = ( hObject != INVALID_HOBJECT ); + cMsg.Writebool( bWriteObject ); + if ( bWriteObject ) + { + float fTimeOfImpact = vDir.Dot(vImpactPos - vFirePos); + cMsg.Writefloat( fTimeOfImpact ); + cMsg.WriteObject( hObject ); + } + + // send the message + msgResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == msgResult ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::AddExtraFireMessageInfo() +// +// PURPOSE: For the derived weapons, add any additional info needed +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::AddExtraFireMessageInfo( bool bFire, ILTMessage_Write *pMessage ) +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetLastSndFireType +// +// PURPOSE: Get the last fire snd type +// +// ----------------------------------------------------------------------- // + +uint8 CClientWeapon::GetLastSndFireType() const +{ + // Determine the fire snd type... + uint8 nFireType = PSI_FIRE; + + if ( m_bHaveSilencer ) + { + nFireType = PSI_SILENCED_FIRE; + } + else if ( m_eLastFireType == FT_ALT_FIRE ) + { + nFireType = PSI_ALT_FIRE; + } + + return nFireType; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::GetFireVectors +// +// PURPOSE: Get the fire pos/rot +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::GetFireVectors( LTVector *vU, LTVector *vR, LTVector *vF, + LTVector *vFirePos ) const +{ + // Get the fire position / direction from the camera (so it lines + // up correctly with the crosshairs)... + LTRotation rRot; + if ( g_pPlayerMgr->IsFirstPerson() && + ( !g_pPlayerMgr->IsUsingExternalCamera() ) ) + { + // we're in 1st person and not using an external camera, + // the shot is coming from the middle of the camera + + // get the camera + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if ( !hCamera ) + { + return false; + } + + // get the camera's position, its the fire position + g_pLTClient->GetObjectPos( hCamera, vFirePos ); + + + g_pLTClient->GetObjectRotation( hCamera, &rRot ); + + if (CAutoTargetMgr::Instance().IsLockedOn()) + { + // Fire at the closest node + *vF = CAutoTargetMgr::Instance().GetTargetVector(); + + *vR = vF->Cross(rRot.Up()); + *vU = vR->Cross(*vF); + vU->Normalize(); + + + } + else + { + // get the axis orientation of the camera + *vU = rRot.Up(); + *vR = rRot.Right(); + *vF = rRot.Forward(); + } + + } + else + { + // external camera, the shot is coming from the model + GetModelPos( vFirePos ); + GetModelRot( &rRot ); + *vU = rRot.Up(); + *vR = rRot.Right(); + *vF = rRot.Forward(); + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SetState() +// +// PURPOSE: Set our m_eState data member, and do any special tasks +// related to entering a state. +// +// ----------------------------------------------------------------------- // + +WeaponState CClientWeapon::SetState( WeaponState eNewState ) +{ + WeaponState eOldState = m_eState; + + m_eState = eNewState; + + if ( GetState() == W_IDLE ) + { + // Earliest we can play a non-subtle idle ani... + + m_fNextIdleTime = GetNextIdleTime(); + } + + return eOldState; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ClientFire +// +// PURPOSE: Do client-side weapon firing +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ClientFire( LTVector const &vPath, LTVector const &vFirePos, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ) +{ + // Always process gadget firing... + if ( m_pAmmo->eType == GADGET ) + { + DoGadget( vPath, vFirePos ); + return; + } + + // Only process the rest of these if we're connected to a remote server. We + // need to do this to hide lag. + if ( !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + return; + } + + switch ( m_pAmmo->eType ) + { + case PROJECTILE: + { + DoProjectile( vPath, vFirePos ); + } + break; + + case VECTOR: + { + DoVector( vPath, vFirePos, pObjectImpactPos, pObjectImpact ); + } + break; + + default: + { + DebugCPrint(1,"ERROR in CClientWeapon::ClientFire(). Invalid Ammo Type!" ); + } + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoProjectile +// +// PURPOSE: Do client-side projectile +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoProjectile( LTVector const &vPath, LTVector const &vFirePos ) +{ + // projectiles are serverside +} + +static bool ClientWeapon_PolyFilterFn(HPOLY hPoly, void *pUserData) +{ + // Make sure we hit a surface type we care about... + + SurfaceType eSurfType = GetSurfaceType(hPoly); + + if (eSurfType == ST_INVISIBLE) + { + return false; + } + + return true; +} + +// Function for determining if an intersection test intersected a character +// Most of this code was swiped from CCharacterHitBox::FindHitNode +bool CheckVectorNodeIntersect(ModelSkeleton eModelSkeleton, HOBJECT hObject, const LTVector &vStartPos, const LTVector &vEndPos) +{ + // If they don't have a valid skeleton, consider it a hit + if (eModelSkeleton == eModelSkeletonInvalid) + return true; + + // Pre-calculate... + LTVector vDir = (vEndPos - vStartPos); + float fSegLength = vDir.Mag(); + if (fSegLength == 0.0f) + return false; + vDir /= fSegLength; + + // Run through the nodes looking for an intersection + int cNodes = g_pModelButeMgr->GetSkeletonNumNodes(eModelSkeleton); + for (int iNode = 0; iNode < cNodes; iNode++) + { + ModelNode eCurrentNode = (ModelNode)iNode; + + // Get the node radius + LTFLOAT fNodeRadius = g_pModelButeMgr->GetSkeletonNodeHitRadius(eModelSkeleton, eCurrentNode); + + // Don't do transforms if we don't need to + if (fNodeRadius <= 0.0f) + { + continue; + } + + // Which node are you again? + const char* szNodeName = g_pModelButeMgr->GetSkeletonNodeName(eModelSkeleton, eCurrentNode); + if( !szNodeName ) + { + continue; + } + + LTRESULT ltResult; + HMODELNODE hNode; + ltResult = g_pModelLT->GetNode(hObject, const_cast(szNodeName), hNode); + if ( ltResult != LT_OK ) + { + continue; + } + + // Where are you? + LTransform transform; + ltResult = g_pModelLT->GetNodeTransform(hObject, hNode, transform, LTTRUE); + if ( ltResult != LT_OK ) + { + continue; + } + + // Distance along ray to point of closest approach to node point + + const LTVector vRelativeNodePos = transform.m_Pos - vStartPos; + const float fRayDist = vDir.Dot(vRelativeNodePos); + + // Make sure the projection onto the ray is within range + if ((fRayDist < -fNodeRadius) || (fRayDist > (fNodeRadius + fSegLength))) + continue; + + // Ignore the node if it wasn't within the radius of the hit spot. + const LTFLOAT fDistSqr = (vDir*fRayDist - vRelativeNodePos).MagSqr(); + if( fDistSqr > fNodeRadius*fNodeRadius ) + { + continue; + } + + // We have a winner! + return true; + } + + // We didn't hit any nodes.. :( + return false; +} + +// ClientWeapon_VectorObjFilterFn parameter structure +struct CW_VOFF_Params +{ + CW_VOFF_Params(CClientWeapon *pWeapon, const LTVector &vFirePos, const LTVector &vEndPos) : + m_pWeapon(pWeapon), + m_vFirePos(vFirePos), + m_vEndPos(vEndPos) + { + } + + CClientWeapon *m_pWeapon; + LTVector m_vFirePos, m_vEndPos; +}; + +bool ClientWeapon_VectorObjFilterFn(HOBJECT hTest, void *pUserData) +{ + // Don't hit the local player. + HOBJECT hLocalPlayer = g_pPlayerMgr->GetMoveMgr()->GetObject( ); + if ( hTest == hLocalPlayer ) + return false; + + // Don't hit the server player. + HOBJECT hServerPlayer = g_pLTClient->GetClientObject(); + if ( hTest == hServerPlayer ) + return false; + + // Check for a hit-box + uint32 nObjUserFlags; + g_pCommonLT->GetObjectFlags( hTest, OFT_User, nObjUserFlags ); + if ( (nObjUserFlags & USRFLG_HITBOX) != 0) + { + CW_VOFF_Params *pParams = reinterpret_cast(pUserData); + + // Is it attached to a character? + CCharacterFX *pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFromHitBox( hTest ); + if ( pCharacter ) + { + HOBJECT hCharacterObj = pCharacter->GetServerObj( ); + if ( hCharacterObj == hServerPlayer ) // Don't hit self + { + return false; + } + + return CheckVectorNodeIntersect(pCharacter->GetModelSkeleton(), pCharacter->GetServerObj(), pParams->m_vFirePos, pParams->m_vEndPos); + } + + // Is it attached to a body? + CBodyFX *pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox( hTest ); + if ( pBody ) + { + //[jrg - 9/26/03] special case to handle planting bombs in contract jack... + // we don't want bodies to block bomb planting + if (DT_GADGET_TIME_BOMB == pParams->m_pWeapon->GetAmmo()->eInstDamageType) + { + return false; + } + else + return CheckVectorNodeIntersect(pBody->GetModelSkeleton(), pBody->GetServerObj(), pParams->m_vFirePos, pParams->m_vEndPos); + } + + // It's not a player.. Go ahead and hit it. + return true; + } + + // Don't hit the characters, they've got hit-boxes.. + CCharacterFX *pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(hTest); + if ( pCharacter ) + return false; + + // And the same with the bodies... + CBodyFX *pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX( hTest ); + if ( pBody ) + return false; + + // Ok we should be able to hit this... + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoVector +// +// PURPOSE: Do client-side vector +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoVector( LTVector const &vPath, LTVector const &vFirePos, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ) +{ + ASSERT( 0 != m_hObject ); + ASSERT( 0 != m_pWeapon ); + + LTVector vEndPos; + + IntersectInfo iInfo; + IntersectQuery qInfo; + qInfo.m_Flags = INTERSECT_OBJECTS | INTERSECT_HPOLY | IGNORE_NONSOLID; + + // compute the vector end points + LTVector vTemp; + VEC_MULSCALAR( vTemp, vPath, m_pWeapon->nRange ); + VEC_ADD( vEndPos, vFirePos, vTemp ); + + // filter information + CW_VOFF_Params cParams(this, vFirePos, vEndPos); + qInfo.m_FilterFn = ClientWeapon_VectorObjFilterFn; + qInfo.m_pUserData = &cParams; + qInfo.m_PolyFilterFn = ClientWeapon_PolyFilterFn; + + // vector end points + qInfo.m_From = vFirePos; + qInfo.m_To = vEndPos; + + // try to hit something + if ( g_pLTClient->IntersectSegment( &qInfo, &iInfo ) ) + { + // hit something, handle the impact + HandleVectorImpact( vPath, &qInfo, &iInfo, pObjectImpactPos, pObjectImpact ); + } + else + { + // hit nothing, pretend we hit the sky + LTVector vUp; + vUp.Init( 0.0f, 1.0f, 0.0f ); + AddImpact( LTNULL, vEndPos, vUp, vPath, ST_SKY ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HandleVectorImpact +// +// PURPOSE: Handle a vector hitting something +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::HandleVectorImpact( LTVector const &vPath, IntersectQuery *qInfo, IntersectInfo *iInfo, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ) +{ + HOBJECT hImpactObj = iInfo->m_hObject; + + // Fill in the object impact information if we hit an object + if ( pObjectImpact && pObjectImpactPos && ( iInfo->m_hPoly == INVALID_HPOLY ) && ( hImpactObj != INVALID_HOBJECT ) ) + { + bool bUseNewImpact = true; + + // Don't use the new impact if the object's not a hitbox + uint32 nObjUserFlags; + g_pCommonLT->GetObjectFlags( iInfo->m_hObject, OFT_User, nObjUserFlags ); + bUseNewImpact &= ((nObjUserFlags & USRFLG_HITBOX) != 0); + + CCharacterFX *pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFromHitBox( hImpactObj ); + if ( pCharacter ) + { + hImpactObj = pCharacter->GetServerObj(); + } + else + { + CBodyFX *pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox( hImpactObj ); + if ( pBody ) + { + hImpactObj = pBody->GetServerObj(); + } + } + + // Only use the new object if it's closer than the original + if ( bUseNewImpact && ( *pObjectImpact != INVALID_HOBJECT ) ) + { + LTVector vObjectPos; + g_pLTBase->GetObjectPos( hImpactObj, &vObjectPos ); + float fOldDistSqr; + if ( *pObjectImpact != hImpactObj ) + { + LTVector vOldObjectPos; + g_pLTBase->GetObjectPos( *pObjectImpact, &vOldObjectPos ); + fOldDistSqr = pObjectImpactPos->DistSqr( vOldObjectPos ); + } + else + fOldDistSqr = pObjectImpactPos->DistSqr( vObjectPos ); + float fNewDistSqr = iInfo->m_Point.DistSqr( vObjectPos ); + bUseNewImpact = ( fOldDistSqr < fNewDistSqr ); + } + + if ( bUseNewImpact ) + { + *pObjectImpact = hImpactObj; + *pObjectImpactPos = iInfo->m_Point; + } + } + + // Get the surface type (check the poly first)... + SurfaceType eType = GetSurfaceType( iInfo->m_hPoly ); + if ( eType == ST_UNKNOWN ) + { + eType = GetSurfaceType( hImpactObj ); + } + + AddImpact( hImpactObj, iInfo->m_Point, + iInfo->m_Plane.m_Normal, vPath, + eType ); + + // If we hit liquid, cast another ray that will go through the water... + if ( ST_LIQUID == eType ) + { + qInfo->m_FilterFn = AttackerLiquidFilterFn; + + if ( g_pLTClient->IntersectSegment( qInfo, iInfo ) ) + { + // Get the surface type (check the poly first)... + SurfaceType eType = GetSurfaceType( iInfo->m_hPoly ); + if ( ST_UNKNOWN == eType ) + { + eType = GetSurfaceType( iInfo->m_hObject ); + } + + AddImpact( iInfo->m_hObject, iInfo->m_Point, + iInfo->m_Plane.m_Normal, vPath, + eType ); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoGadget +// +// PURPOSE: Do client-side gadget +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoGadget( LTVector const &vPath, LTVector const &vFirePos ) +{ + // Do Camera shutter fx... + if ( DT_GADGET_CAMERA == m_pAmmo->eInstDamageType ) + { + if (!g_pInterfaceMgr->FadingScreen()) + { + g_pInterfaceMgr->StartScreenFadeIn( ns_vtCameraShutterSpeed.GetFloat() ); + } + } + + DoVector( vPath, vFirePos, LTNULL, LTNULL ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::HandleGadgetImpact +// +// PURPOSE: Handle a gadget vector hitting an object +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::HandleGadgetImpact( HOBJECT hObj, LTVector vImpactPoint ) +{ + // If the gadget can activate this type of object, Tell the server + // that the gadget was activated on this object... + LTVector vU, vR, vF, vFirePos; + if ( !GetFireVectors( &vU, &vR, &vF, &vFirePos ) ) + { + return; + } + + uint32 dwUserFlags = 0; + if ( hObj ) + { + g_pCommonLT->GetObjectFlags(hObj, OFT_User, dwUserFlags); + } + + DamageType eType = m_pAmmo->eInstDamageType; + + bool bTestDamageType = true; + + // Make sure the object isn't a character object (gadget and character + // user flags overlap) unless this is a character specific gadget... + if ( dwUserFlags & USRFLG_CHARACTER ) + { + //no currently supported "character specific gadgets" + return; + } + + // Check the team identifier on the gadget to see if it matches our team... + + CGadgetTargetFX *pGadget = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_GADGETTARGET_ID, hObj )); + if( !pGadget ) + return; + + if( IsTeamGameType() && pGadget->GetTeamID() != INVALID_TEAM ) + { + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return; + + if( pLocalCI->nTeamID != pGadget->GetTeamID() ) + return; + } + + // Test the damage type if necessary... + if ( bTestDamageType ) + { + if ( DT_GADGET_CODE_DECIPHERER == eType ) + { + // Make sure the object can be deciphered... + if ( !( dwUserFlags & USRFLG_GADGET_CODE_DECIPHERER ) ) + { + return; + } + } + else if ( DT_GADGET_LOCK_PICK == eType ) + { + // Make sure the object is "pickable"... + if ( !(dwUserFlags & USRFLG_GADGET_LOCK_PICK ) ) + { + return; + } + } + else if ( DT_GADGET_WELDER == eType ) + { + // Make sure the object is "weldable"... + if ( !( dwUserFlags & USRFLG_GADGET_WELDER ) ) + { + return; + } + } + else if ( DT_GADGET_CAMERA == eType ) + { + // Make sure the object is something we can photograph... + if ( dwUserFlags & USRFLG_GADGET_CAMERA /*|USRFLG_GADGET_INTELLIGENCE*/ ) + { + // Make sure we're in camera range... + if ( !g_pPlayerMgr->InCameraGadgetRange( hObj ) ) + { + return; + } + } + else + { + return; + } + } + else if( DT_GADGET_TIME_BOMB == eType ) + { + // Make sure a bomb can be placed on the object... + if( !(dwUserFlags & USRFLG_GADGET_BOMBABLE ) ) + { + return; + } + } + else if( DT_GADGET_INK_REAGENT == eType ) + { + // Make sure the object is invisible ink... + if( !( dwUserFlags & USRFLG_GADGET_INVISIBLE_INK ) ) + { + return; + } + } + else if( DT_GADGET_EAVESDROPBUG == eType ) + { + // Make sure the object is able to recieve a bug... + if( !( dwUserFlags & USRFLG_GADGET_EAVESDROPBUG ) ) + { + return; + } + } + else + { + return; + } + } + + // send the fire message to the server + SendFireMessage( false, GetDynamicPerturb(), vFirePos, vF, vImpactPoint, hObj ); + + // Do any special processing... + DoSpecialFire(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoSpecialFire() +// +// PURPOSE: Do special case fire processing +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoSpecialFire() +{ + // Currently we need to check for gadget special cases... + if ( GADGET == m_pAmmo->eType ) + { + // Decrement ammo count here... + DecrementAmmo(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoSpecialEndFire() +// +// PURPOSE: Do special case end of fire animation processing +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoSpecialEndFire() +{ + // Unhide any hidden pieces... + SpecialShowPieces(true); + + if ( m_bAutoSwitchEnabled) + { + // Set the m_bAutoSwitch flag which will handle the ammo/weapon auto-switching... + // NOTE, we may or may not auto-switch at this time. + // See the bottom of CClientWeapon::Update(). + + m_bAutoSwitch = true; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::DoSpecialCreateModel() +// +// PURPOSE: Do special case create model processing... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::DoSpecialCreateModel() +{ + // If we're out of ammo, hide the necessary pieces... + if ( !HasAmmo() ) + { + // Hide the necessary pieces... + SpecialShowPieces( false ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SpecialShowPieces() +// +// PURPOSE: Do special case create model processing... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SpecialShowPieces( bool bShow /*= true*/, bool bForce /*= false*/ ) +{ + ASSERT( 0 != m_pAmmo ); + + // If we're out of ammo, keep hidden... + if ( bShow && !bForce ) + { + if ( g_pPlayerStats && ( g_pPlayerStats->GetAmmoCount(m_nAmmoId) < 1 ) ) + { + bShow = false; // Hide the necessary pieces... + } + } + + ASSERT( 0 != g_pLTClient ); + ILTModel *pModelLT = g_pLTClient->GetModelLT(); + HMODELPIECE hPiece = 0; + + ASSERT( 0 != m_pWeapon ); + for( int i = 0; i < m_pWeapon->blrHiddenPieceNames.GetNumItems(); ++i ) + { + // Do a const cast the ButeListReader's return value to work with the non-const engine. + if( LT_OK == pModelLT->GetPiece( m_hObject, const_cast< char * >( m_pWeapon->blrHiddenPieceNames.GetItem(i) ), hPiece ) ) + { + pModelLT->SetPieceHideStatus( m_hObject, hPiece, !bShow ); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SpecialCaseOverrideFire +// +// PURPOSE: Special cases weapons or gadgets that can only fire at certain objects +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::SpecialOverrideFire() +{ + if( !m_hObject ) + { + return false; + } + + // Currently only the TimeBomb has specifc area it can be placed... + if( DT_GADGET_TIME_BOMB == m_pAmmo->eInstDamageType ) + { + HOBJECT hTarget = g_pPlayerMgr->GetTargetMgr()->GetTargetObject(); + if( hTarget ) + { + uint32 dwUsrFlgs; + g_pCommonLT->GetObjectFlags( hTarget, OFT_User, dwUsrFlgs ); + + // Check to see if the object we hit can have a bomb placed on it... + if( dwUsrFlgs & USRFLG_GADGET_BOMBABLE ) + { + // We can only place the bomb here if it belongs to our team... + + if( IsTeamGameType() ) + { + // Check the team identifier on the gadget to see if it matches our team... + + CGadgetTargetFX *pGadget = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_GADGETTARGET_ID, hTarget )); + if( !pGadget ) + return false; + + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return false; + + if( pGadget->GetTeamID() != INVALID_TEAM ) + { + if( pLocalCI->nTeamID == pGadget->GetTeamID() ) + return true; + } + } + else + { + return true; + } + } + } + + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::AddImpact +// +// PURPOSE: Add the weapon impact +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::AddImpact( HLOCALOBJ hObj, LTVector const &vImpactPoint, + LTVector const &vNormal, LTVector const &vPath, + SurfaceType eType ) +{ + // Handle gadget special case... + if ( GADGET == m_pAmmo->eType ) + { + // No impact fx for gadgets... + HandleGadgetImpact( hObj, vImpactPoint ); + return; + } + + // See if we should do tracers or not... + if ( m_pAmmo->pTracerFX ) + { + // only 1 tracer for every few shots + m_nTracerNumber = m_nTracerNumber + 1; + m_nTracerNumber %= m_pAmmo->pTracerFX->nFrequency; + if ( 0 != m_nTracerNumber ) + { + m_wIgnoreFX |= WFX_TRACER; + } + } + else + { + m_wIgnoreFX |= WFX_TRACER; + } + + ::AddLocalImpactFX( hObj, m_vFlashPos, vImpactPoint, vNormal, eType, + vPath, m_nWeaponId, m_nAmmoId, m_wIgnoreFX ); + + // If we do multiple calls to AddLocalImpact, make sure we only do some + // effects once :) + m_wIgnoreFX |= WFX_SILENCED | WFX_SHELL | WFX_LIGHT | WFX_MUZZLE | WFX_TRACER; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeapon::PopulateCreateStruct() +// +// PURPOSE: Add all the basic information to the object create structure +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::PopulateCreateStruct( ObjectCreateStruct *pOCS ) const +{ + // sanity check parameters + ASSERT( 0 != pOCS ); + + // sanity check globals + ASSERT( 0 != g_pModelButeMgr ); + ASSERT( 0 != g_pCommonLT ); + ASSERT( 0 != g_pLTClient ); + ASSERT( 0 != g_pPlayerMgr ); + + // sanity check this object + ASSERT( 0 != m_pWeapon ); + + // get the model filename + SAFE_STRCPY( pOCS->m_Filename, m_pWeapon->szPVModel ); + + // add the skins + m_pWeapon->blrPVSkins.CopyList( 0, pOCS->m_SkinNames[0], ( MAX_CS_FILENAME_LEN + 1 ) ); + + // add the render styles + m_pWeapon->blrPVRenderStyles.CopyList( 0, pOCS->m_RenderStyleNames[ 0 ], ( MAX_CS_FILENAME_LEN + 1 ) ); + + // Figure out what hand skin to use... + ASSERT( g_pPlayerMgr->GetMoveMgr() ); + CCharacterFX* pCharFX = g_pPlayerMgr->GetMoveMgr()->GetCharacterFX(); + + if ( ( m_pWeapon->blrPVSkins.GetNumItems() ) && + ( 0 == strcmp( m_pWeapon->blrPVSkins.GetItem( 0 ), "Hands" ) ) ) + { + // This looks for the special case where "Hands" is specified as the first + // player view skin. If it is, then we take the skin from the model bute + // instead of the weapon bute. + ModelId nModelID = ( pCharFX ) ? pCharFX->GetModelId() : static_cast< ModelId >( 0 ); + SAFE_STRCPY( pOCS->m_SkinNames[ 0 ], g_pModelButeMgr->GetHandsSkinFilename( nModelID ) ); + } + + // Create the weapon at it's actual position... + + LTVector vWeaponOffset = GetWeaponOffset(); + + pOCS->m_Pos.x = vWeaponOffset.x + m_fBobWidth; + pOCS->m_Pos.y = vWeaponOffset.y + m_fBobHeight; + pOCS->m_Pos.z = vWeaponOffset.z; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::KillLoopSound +// +// PURPOSE: Stop the looping sound from playing... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::KillLoopSound( ) +{ + m_nLoopSoundId = PSI_INVALID; + if( m_hLoopSound ) + { + g_pLTClient->SoundMgr()->KillSound( m_hLoopSound ); + m_hLoopSound = LTNULL; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::RemoveFinishedKeyframedFX() +// +// PURPOSE: Remove all keyframed FXEd effects that have finished playing +// +// ----------------------------------------------------------------------- // + +bool CClientWeapon::RemoveFinishedKeyframedFX() +{ + bool bAtLeastOneFXRemoved = false; + + CLIENTFX_LINK_NODE* pPrev = &m_KeyframedClientFX; + + for(CLIENTFX_LINK_NODE* pNode = m_KeyframedClientFX.m_pNext; pNode != NULL; ) + { + CLIENTFX_LINK_NODE* pNext = pNode->m_pNext; + + if ( !pNode->m_Link.IsValid() || pNode->m_Link.GetInstance()->IsDone() ) + { + //remove this node + pPrev->m_pNext = pNode->m_pNext; + pNode->m_pNext = NULL; + debug_delete(pNode); + + bAtLeastOneFXRemoved = true; + } + else + { + //update our previous pointer + pPrev = pNode; + } + + pNode = pNext; + } + + return bAtLeastOneFXRemoved; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ResetWeapon() +// +// PURPOSE: Reset the weapon data and empty the clip... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ResetWeapon() +{ + if( !m_pWeapon ) + return; + + // Remove all mods and attachments and get rid of the weapon model... + + Deactivate(); + + ResetData(); + m_nAmmoInClip = 0; + m_bFirstSelection = true; + m_nAmmoId = WMGR_INVALID_ID; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::SetPaused() +// +// PURPOSE: Pause/UnPause the weapon and do any cleanup associated with pausing/unpausing... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::SetPaused( bool bPaused ) +{ + if( m_bPaused == bPaused ) + return; + + m_bPaused = bPaused; + + if( m_bPaused ) + { + // Stop the looping sound from playing... + + KillLoopSound(); + + // Send message to server so all clients can stop the sound... + // An id of invalid means stop + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_SOUND_LOOP ); + cMsg.Writeuint8( PSI_INVALID ); + cMsg.Writeuint8( m_nWeaponId ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::ClearFiring() +// +// PURPOSE: Stop the weapon from firing and force it into an idle animation... +// +// ----------------------------------------------------------------------- // + +void CClientWeapon::ClearFiring() +{ + // Clear any current fire flag we previously set... + + m_bFire = false; + + uint32 nAni = GetIdleAni(); + + // Make sure it's a valid ani + + if( nAni == INVALID_ANI ) + { + nAni = DEFAULT_ANI; + } + + // Play it and reset the model animation... + + PlayAnimation( nAni, true ); + SetState( W_IDLE ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::AddWeaponHeat +// +// PURPOSE: Adds to the weapon overheat. +// +// ----------------------------------------------------------------------- // +void CClientWeapon::AddWeaponHeat() +{ + WEAPON const *pWeaponData = GetWeapon(); + if( !pWeaponData ) + return; + + // Check if this weapon doesn't have any heat per shot. + if( pWeaponData->fHeatFactor <= 0.0f ) + return; + + // Add in the heat factor. + m_fHeatAmount += pWeaponData->fHeatFactor; + if( m_fHeatAmount > 1.0f ) + m_fHeatAmount = 1.0f; + + m_fHeatTime = g_pLTClient->GetTime( ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapon::UpdateWeaponHeat +// +// PURPOSE: Adds to the weapon overheat. +// +// ----------------------------------------------------------------------- // +void CClientWeapon::UpdateWeaponHeat( ) +{ + // Check if our weapon isn't heating up. + if( m_fHeatAmount <= 0.0f ) + return; + + WEAPON const *pWeaponData = GetWeapon(); + if( !pWeaponData ) + return; + + float fCurTime = g_pLTClient->GetTime( ); + float fElapsedTime = fCurTime - m_fHeatTime; + + // Check if the weapon overheated and is still waiting to come back. + if( m_fHeatAmount >= 1.0f ) + { + // Check if we haven't waited long enough for the + // overheat to cool off. + if( fElapsedTime < pWeaponData->fHeatOverheatTime ) + return; + + // Overheat is done, remove it from time calc. + fElapsedTime -= pWeaponData->fHeatOverheatTime; + m_fHeatTime += pWeaponData->fHeatOverheatTime; + } + + // Dissipate some heat. + m_fHeatAmount -= fElapsedTime * pWeaponData->fHeatDissipationRate; + m_fHeatAmount = Clamp( m_fHeatAmount, 0.0f, 1.0f ); + m_fHeatTime = fCurTime; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeapon.h b/Jack/ClientShellDLL/ClientWeapon.h new file mode 100644 index 00000000..619d65a2 --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeapon.h @@ -0,0 +1,495 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeapon.h +// +// PURPOSE : Generic client-side weapon +// +// CREATED : 9/27/97 (was WeaponModel.h) +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _ClientWeapon_h_INCLUDED_ +#define _ClientWeapon_h_INCLUDED_ + +// stl vector +#include + +#include "PVFXMgr.h" +#include "ClientFXMgr.h" +#include "MsgIDs.h" +#include "ClientWeaponBase.h" + +// forward definitions to reduce header dependancies +struct CLIENTFX_LINK; +enum SurfaceType; + +// +// Defines +// +#define WM_MAX_FIRE_ANIS WMGR_MAX_WEAPONANI_FIRE +#define WM_MAX_ALTFIRE_ANIS WM_MAX_FIRE_ANIS +#define WM_MAX_IDLE_ANIS WMGR_MAX_WEAPONANI_IDLE +#define WM_MAX_ALTIDLE_ANIS WM_MAX_IDLE_ANIS +#define WM_MAX_PV_ATTACH_CLIENTFX WMGR_MAX_PVCLIENTFX_ATTACHMENTS + + +/// +// class CClientWeapon +// +class CClientWeapon : public IClientWeaponBase +{ +public: + + CClientWeapon(); + virtual ~CClientWeapon(); + + // handle messages + virtual bool OnMessage( uint8 messageID, ILTMessage_Read *pMsg ) { return true; } + + // callbacks from the animation system + virtual bool OnModelKey( HLOCALOBJ hObj, ArgList* pArgs ); + + // enter/exit world functionality + virtual void OnEnterWorld(); + virtual void OnExitWorld(); + + // standard init/term functions + virtual bool Init( WEAPON const &pWeapon ); + virtual void Term(); + + // main update function + virtual WeaponState Update( bool bFire, FireType eFireType = FT_NORMAL_FIRE ); + + // external interfaces to change the ammo + virtual void ChangeAmmoWithReload( uint8 nNewAmmoId, bool bForce= false ); + virtual void ChangeAmmoImmediate( uint8 nNewAmmoId, int nAmmoAmount = -1, bool bForce= false ); + virtual void ReloadClip( bool bPlayReload = true, int nNewAmmo=-1, bool bForce = false, bool bNotifyServer = false ); + virtual void DecrementAmmo(); + + // set the information about the camera that the weapon needs to know + virtual void SetCameraInfo( LTRotation const &rCamRot, LTVector const &vCamPos ); + + // Update the weapon model filenames, particularly the skins. + // This is for cases where the base player model changes and + // the playerview model needs to change too (i.e. sleeves + // look different on new player model). + virtual void ResetWeaponFilenames(); + + // to update the weapon bob + virtual void UpdateBob( LTFLOAT fWidth, LTFLOAT fHeight ); + + // dynanic perturb + virtual LTFLOAT GetDynamicPerturb() const { return (m_fFiringPerturb > m_fMovementPerturb ? m_fFiringPerturb : m_fMovementPerturb); } + + // Do NOT call these functions directly. If you want to + // enable/disable or show/hide the weapons, call the functions + // in CClientWeaponMgr. + virtual void SetVisible( bool bVis = true ); + virtual void SetDisable( bool bDisable = true ); + + // Do NOT call these directly. They are used CClientWeaponMgr. + virtual void Select(); + virtual bool Deselect( ClientWeaponCallBackFn cbFn, void *pData ); + virtual bool Activate(); // Create the weapon's resources + virtual void Deactivate(); // Shut down the weapon (destroy resources) + + // weapon info + virtual WEAPON const *GetWeapon() const { return m_pWeapon; } + virtual int GetWeaponId() const { return m_nWeaponId; } + + // ammo info + virtual AMMO const *GetAmmo() const { return m_pAmmo; } + virtual int GetAmmoId() const { return m_nAmmoId; } + virtual int GetAmmoInClip() const { return m_nAmmoInClip; } + virtual bool HasAmmo() const; + virtual bool CanUseAmmo( uint8 nAmmoId ) const; + virtual bool CanChangeToAmmo( uint8 nAmmoId ) const; + virtual uint8 GetNextAvailableAmmo( uint8 nGivenAmmoId = WMGR_INVALID_ID ); + virtual bool GetBestAvailableAmmoId( int *nAmmoId ) const; + + // state info + virtual WeaponState GetState() const { return m_eState; } + + // misc functions + virtual bool IsMeleeWeapon() const { return ( m_pAmmo && ( DT_MELEE == m_pAmmo->eInstDamageType ) ); } + virtual bool IsGadget() const { return ( m_pAmmo && IsGadgetType(m_pAmmo->eInstDamageType) ); } + virtual bool IsFireButtonDown() const { return m_bFireKeyDownLastUpdate; } + + virtual void GetShellEjectPos( LTVector *vOriginalPos ); + + // used with the cheat codes to adjust the proper position of the weapon + virtual LTVector GetMuzzleOffset() const + { + if (!m_pWeapon) return LTVector(); + return m_pWeapon->vMuzzlePos; + } + + virtual void SetMuzzleOffset( LTVector const &v ) + { + if (!m_pWeapon) return; + const_cast(m_pWeapon)->vMuzzlePos = v; + } + + virtual LTVector GetBreachOffset() const + { + if (!m_pWeapon) return LTVector(); + return m_pWeapon->vBreachOffset; + } + + virtual void SetBreachOffset( LTVector const &v ) + { + if (!m_pWeapon) return; + const_cast(m_pWeapon)->vBreachOffset = v; + } + + virtual LTVector GetWeaponOffset() const + { + if (!m_pWeapon) return LTVector(); + return m_pWeapon->vPos; + } + + virtual void SetWeaponOffset( LTVector const &v ) + { + if (!m_pWeapon) return; + const_cast(m_pWeapon)->vPos = v; + } + + // This interface is only used for the camera shake. This + // is privledged information, and the code to shake the + // camera should eventually be moved to this class. Please + // don't make use of this function, and if you do comment its + // use here. + virtual HLOCALOBJ GetHandle() const { return m_hObject; } + + // This needs to be exposed for the PlayerStats. Eventually + // this should be moved so creation/deletion of the mods + // are transparent to the outside system (not all games + // need mods). + virtual void CreateMods(); + + // load/save functionality + virtual void Load( ILTMessage_Read *pMsg ); + virtual void Save( ILTMessage_Write *pMsg ); + + virtual void ResetWeapon(); + + virtual void SetPaused( bool bPaused ); + + virtual void ClearFiring(); + + virtual float GetWeaponHeat( ) const { return m_fHeatAmount; } + +protected: + + // + // + // Protected interfaces + // + // + + // Create the weapon model and + virtual bool CreateWeaponModel(); + virtual void RemoveWeaponModel(); + + // general model create (used for weapon, mods, etc) + HOBJECT CreateModelObject( HOBJECT hOldObj, ObjectCreateStruct *createStruct ); + + WeaponState UpdateAmmoFromFire( bool bDecrementAmmo = true ); + virtual WeaponState UpdateModelState( bool bFire ); + void UpdateWeaponPosition( LTVector const &vOffset ); // offset is the additional offset + + // Dynamic perturb updating + void UpdateMovementPerturb(); + void UpdateFiringPerturb(LTBOOL bFiredWeapon); + + // Update the weapon based on current state and + // animation and determines what animation to play next. + virtual void UpdateFiring(); + + // [KLS 5/8/02] - changed the name of this function from UpdateIdle *back* to + // UpdateNonFiring which is more accurate since the weapon may be reloading, + // selecting, deselecting, or idle...but definitiely not firing ;) + virtual void UpdateNonFiring(); + + // initialize all the animations for this model + virtual void InitAnimations( bool bAllowSelectOverride = false ); + void SetAmmoOverrideAnis( bool bAllowSelectOverride ); + + // play model animations + void PlayAnimation( uint32 dwAni, bool bReset = true, + float fRate = 1.0f, bool bLooping = false); + virtual bool PlaySelectAnimation(); + virtual bool PlayDeselectAnimation(); + virtual bool PlayReloadAnimation(); + virtual bool PlayIdleAnimation(); + virtual bool PlayFireAnimation( bool bResetAni ); + + // selet animation + bool IsSelectAni( uint32 dwAni ) const; + uint32 GetSelectAni() const; + + // deselect animation + bool IsDeselectAni( uint32 dwAni ) const; + uint32 GetDeselectAni() const; + + // reload animation + bool IsReloadAni( uint32 dwAni ) const; + uint32 GetReloadAni() const; + + // idle animation + bool IsIdleAni( uint32 dwAni ) const; + uint32 GetIdleAni() const; + uint32 GetSubtleIdleAni() const; + LTFLOAT GetNextIdleTime() const; + + // pre fire animation + virtual bool IsPreFireAni( uint32 dwAni ) const; + virtual uint32 GetPreFireAni() const; + + // fire animation + virtual bool IsFireAni( uint32 dwAni , bool bCheckNormalOnly = false) const; + virtual uint32 GetFireAni( FireType eFireType=FT_NORMAL_FIRE ) const; + + // post fire + virtual bool IsPostFireAni( uint32 dwAni ) const; + virtual uint32 GetPostFireAni() const; + + // are we using alt fire animations + bool CanUseAltFireAnis() const; + + // get the model position/rotation info + void GetModelPos( LTVector *vPos ) const; + void GetModelRot( LTRotation *rRot ) const; + + // mod helpers + void UpdateMods(); + void RemoveMods(); + void SetVisibleMods( bool bVis = true ); + + //TODO: pull these out of the base code + // silencer mod + void CreateSilencer(); + void UpdateSilencer(); + void RemoveSilencer(); + + //TODO: pull these out of the base code + // scope mod + void CreateScope(); + void UpdateScope(); + void RemoveScope(); + + // muzzle flash helper routines + void CreateMuzzleFlash(); + void RemoveMuzzleFlash(); + + // overheat flash helper routines + void CreateOverheatFx(); + void RemoveOverheatFx(); + + // Updates all muzzle effects. + void UpdateMuzzleEffects( WeaponState eState, LTVector const &vOffset ); + + // player-view fx helpers + void CreatePVAttachClientFX(); + void ShowPVAttachClientFX(); + void HidePVAttachClientFX(); + void RemovePVAttachClientFX(); + + // weapon fire helpers + virtual void Fire( bool bFire ); + virtual void HandleFireKeyDownTransition(); // up to down transition + virtual void HandleFireKeyUpTransition(); // down to up transition + virtual void HandleFireKeyDown() {} // fire held continuously down + virtual void HandleFireKeyUp() {} // fire key not pressed + + // send all relevant fire information to the server + virtual void SendFireMessage( bool bFire, + LTFLOAT fPerturb, + LTVector const &vFirePos, + LTVector const &vDir, + LTVector const &vImpactPos, + HOBJECT hObject ); + + // add any extra firing information (primarily for derived classes) + virtual void AddExtraFireMessageInfo( bool bFire, ILTMessage_Write *pMsg ); + + // return the "type" identifier (1st part of a fire message) + // NOTE: currently the server handles VECTOR and PROJECTILE the same + virtual uint8 GetFireMessageType() const { return MWEAPFIRE_VECTOR; } + + // get the last type of fire sound played + uint8 GetLastSndFireType() const; + + // Get information to use to fire the weapon, such + // as weapon position and the forward vector. + bool GetFireVectors( LTVector *vU, LTVector *vR, LTVector *vF, + LTVector *vFirePos ) const; + + // set the model's state, do any special setup necessary + // to enter particular states + WeaponState SetState( WeaponState eNewState ); + + // clientside firing considerations + void ClientFire( LTVector const &vPath, LTVector const &vFirePos, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ); + void DoProjectile( LTVector const &vPath, LTVector const &vFirePos ); + void DoVector( LTVector const &vPath, LTVector const &vFirePos, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ); + void HandleVectorImpact( LTVector const &vPath, IntersectQuery *qInfo, IntersectInfo *iInfo, LTVector *pObjectImpactPos, HOBJECT *pObjectImpact ); + void DoGadget( LTVector const &vPath, LTVector const &vFirePos ); + void HandleGadgetImpact( HOBJECT hObj, LTVector vImpactPoint ); + + // special cases + void DoSpecialFire(); + virtual void DoSpecialEndFire(); + void DoSpecialCreateModel(); + void SpecialShowPieces( bool bShow = true, bool bForce = false ); + bool SpecialOverrideFire(); + + // handle client side impact effects + void AddImpact( HLOCALOBJ hObj, LTVector const &vImpactPoint, + LTVector const &vNormal, LTVector const &vPath, + SurfaceType eType ); + + // generic routine for placing this weapon's + // information in the create struct + void PopulateCreateStruct( ObjectCreateStruct *pOCS ) const; + + void KillLoopSound(); + + // reset data before creating the weapon's resources + void ResetData(); + + // keyframe handlers + virtual bool HandleFireKey( HLOCALOBJ hObj, ArgList* pArgs ); + virtual bool HandleFXKey( HLOCALOBJ hObj, ArgList* pArgs ); + + // remove all keyframed FXEd effects that have expired + bool RemoveFinishedKeyframedFX(); + + // Weapon overheat functions. + void AddWeaponHeat( ); + void UpdateWeaponHeat( ); + + // + // + // Protected Data + // + // + + ClientWeaponCallBackFn m_cbDeselect; + void *m_pcbData; + + HOBJECT m_hObject; // Handle of WeaponModel model + + HMODELSOCKET m_hBreachSocket; // Handle of breach socket + + // mod models + HOBJECT m_hSilencerModel; // Handle of silencer mod model + HOBJECT m_hScopeModel; // Handle of scope mod model + + // mod sockets + HMODELSOCKET m_hSilencerSocket; // Handle of silencer mod socket + HMODELSOCKET m_hScopeSocket; // Handle of scope mod socket + + // mod posessions + bool m_bHaveSilencer; // Do we have a silencer mod + bool m_bHaveScope; // Do we have a scope mod + + int m_nWeaponId; + int m_nAmmoId; + + WEAPON const *m_pWeapon; + AMMO const *m_pAmmo; + + LTFLOAT m_fFireTime; // Time of last fire. + + LTVector m_vFlashPos; + LTVector m_vFlashOffset; + + LTFLOAT m_fBobHeight; + LTFLOAT m_fBobWidth; + + LTFLOAT m_fMovementPerturb; + LTFLOAT m_fFiringPerturb; + + FireType m_eLastFireType; // How did we last fire + bool m_bCanSetLastFire; // Can we set m_eLastFireType + + LTFLOAT m_fNextIdleTime; + bool m_bFire; + + // local copy of ammo + int m_nAmmoInClip; + int m_nNewAmmoInClip; + + // What are we currently doing + WeaponState m_eState; + + HMODELANIM m_nSelectAni; // Select weapon + HMODELANIM m_nDeselectAni; // Deselect weapon + HMODELANIM m_nReloadAni; // Reload weapon + + HMODELANIM m_nIdleAnis[WM_MAX_IDLE_ANIS]; // Idle animations + HMODELANIM m_nFireAnis[WM_MAX_FIRE_ANIS]; // Fire animations + + HMODELANIM m_nAltSelectAni; // Alt-Fire Select weapon + HMODELANIM m_nAltDeselectAni; // Alt-Fire Deselect weapon (back to normal weapon) + HMODELANIM m_nAltDeselect2Ani; // Alt-Fire Deselect weapon (to new weapon) + HMODELANIM m_nAltReloadAni; // Alt-Fire Reload weapon + + HMODELANIM m_nAltIdleAnis[ WM_MAX_ALTIDLE_ANIS ]; // Alt-Fire Idle animations + HMODELANIM m_nAltFireAnis[ WM_MAX_ALTFIRE_ANIS ]; // Alt-Fire animations + + HMODELANIM m_nPreFireAni; // Optional animation to play before the actual fire ani + HMODELANIM m_nPostFireAni; // Optional animation to play after the actual fire ani + + bool m_bUsingAltFireAnis; // Use the m_nAltXXX anis? + bool m_bFireKeyDownLastUpdate; // Was the fire key down last update? + + LTFLOAT m_fLastPitch; // Holds last player pitch value + LTFLOAT m_fLastYaw; // Holds last player yaw value + + uint16 m_wIgnoreFX; // FX to ignore for current vector/projectile + + bool m_bWeaponDeselected; // Did we just deselect the weapon + + bool m_bDisabled; // Is the weapon disabled + bool m_bVisible; // Is the weapon visible (should it be) + + bool m_bControllingFlashLight; // Does this weapon control the pv flash light? + + LTRotation m_rCamRot; + LTVector m_vCamPos; + + HLTSOUND m_hLoopSound; + uint8 m_nLoopSoundId; + + bool m_bFirstSelection; // Is this the first time we are selecting this weapon? + + // used to determine if we should make a tracer + int m_nTracerNumber; + + CLIENTFX_LINK m_PVAttachClientFX[ WM_MAX_PV_ATTACH_CLIENTFX ]; // FXEd attachments + bool m_bPVAttachClientFXHidden[ WM_MAX_PV_ATTACH_CLIENTFX ]; // Was the FX visible when we tried to hide it? + + CLIENTFX_LINK m_MuzzleFlashFX; // An instance of a FxED created FX + + // auto switch weapons + bool m_bAutoSwitchEnabled; + bool m_bAutoSwitch; + + // keyframed ClientFX + CLIENTFX_LINK_NODE m_KeyframedClientFX; + + // Is the weapon supposed to be paused... + bool m_bPaused; + + // Used to track overheating weapons. + float m_fHeatAmount; + float m_fHeatTime; + CLIENTFX_LINK m_OverheatFx; // An instance of a FxED created FX +}; + + +#endif //_ClientWeapon_h_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeaponAllocator.h b/Jack/ClientShellDLL/ClientWeaponAllocator.h new file mode 100644 index 00000000..54e68017 --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponAllocator.h @@ -0,0 +1,27 @@ + +#ifndef _ClientWeaponAllocator_h_INCLUDED_ +#define _ClientWeaponAllocator_h_INCLUDED_ + +// +// This is an abstract class whose sole purpose is +// to create each instance of the ClientWeapon. It will +// take a type and match it to a class. +// +// See the ClientWeapon stuff for an example of its +// implementation. Specifically, CCreator, +// CStandardCreator, the derived classes of ClientWeaponAllocator +// (CTRONClientWeaponAllocator and CTO2ClientWeaponAllocator), +// and CPlayerMgr (as well as derived classes +// CTRONPlayerMgr or CTO2PlayerMgr). +// + +// forward declaration to reduce header dependancies +class IClientWeaponBase; + +class CClientWeaponAllocator +{ +public: + virtual IClientWeaponBase *New( int nClientWeaponType ) const = 0; +}; + +#endif //_ClientWeaponAllocator_h_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeaponBase.h b/Jack/ClientShellDLL/ClientWeaponBase.h new file mode 100644 index 00000000..bb3fa6ec --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponBase.h @@ -0,0 +1,176 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeaponBase.h +// +// PURPOSE : Generic interface for the client-side weapon +// +// CREATED : 4/09/02 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _ClientWeaponBase_h_INCLUDED_ +#define _ClientWeaponBase_h_INCLUDED_ + + +// +// Includes +// + +#include "WeaponMgr.h" + + +// +// Typedefs +// + +// Perhaps this should be in the CClientWeaponMgr.h file, but +// to avoid creating header files that depend on each other +// (and in all actuality this class should have no clue what +// a CClientWeaponMgr actually is) I'm sticking it here and +// placing a commented out version in the other header file. +typedef void (*ClientWeaponCallBackFn)( int nWeaponId, void *pData ); + + +// +// Enumerations +// +enum FireType +{ + FT_NORMAL_FIRE=0, + + // this appears to have been broken for quite some time... + FT_ALT_FIRE, +}; + + +/// +// class IClientWeaponBase +// +class IClientWeaponBase +{ +public: + + // This pure virtual destructor maintains this class + // as an abstract class. It should not be instantiated, + // but all public functions can have default behaviours. + virtual ~IClientWeaponBase() = 0 {} + IClientWeaponBase() {} + + // handle messages + virtual bool OnMessage( uint8 messageID, ILTMessage_Read *pMsg ) { return true; } + + // callbacks from the animation system + virtual bool OnModelKey( HLOCALOBJ hObj, ArgList* pArgs ) { return true; } + + // enter/exit world functionality + virtual void OnEnterWorld() {} + virtual void OnExitWorld() {} + + // standard init/term functions + virtual bool Init( WEAPON const &pWeapon ) { return true; } + virtual void Term() {} + + // main update function + virtual WeaponState Update( bool bFire, FireType eFireType = FT_NORMAL_FIRE ) { return W_IDLE; } + + // external interfaces to change the ammo + virtual void ChangeAmmoWithReload( uint8 nNewAmmoId, bool bForce= false ) {} + virtual void ChangeAmmoImmediate( uint8 nNewAmmoId, int nAmmoAmount = -1, bool bForce= false ) {} + virtual void ReloadClip( bool bPlayReload = true, int nNewAmmo=-1, bool bForce = false, bool bNotifyServer = false ) {} + virtual void DecrementAmmo() {} + + // set the information about the camera that the weapon needs to know + virtual void SetCameraInfo( LTRotation const &rCamRot, LTVector const &vCamPos ) {} + + // Update the weapon model filenames, particularly the skins. + // This is for cases where the base player model changes and + // the playerview model needs to change too (i.e. sleeves + // look different on new player model). + virtual void ResetWeaponFilenames() {} + + // to update the weapon bob + virtual void UpdateBob( LTFLOAT fWidth, LTFLOAT fHeight ) {} + + // dynanic perturb + virtual LTFLOAT GetDynamicPerturb() const { return 0.0f; } + + // Do NOT call these functions directly. If you want to + // enable/disable or show/hide the weapons, call the functions + // in CClientWeaponMgr. + virtual void SetVisible( bool bVis = true ) {} + virtual void SetDisable( bool bDisable = true ) {} + + // Do NOT call these directly. They are used CClientWeaponMgr. + virtual void Select() {} + virtual bool Deselect( ClientWeaponCallBackFn cbFn, void *pData ) { return false; } + virtual bool Activate() { return false; } // Create the weapon's resources + virtual void Deactivate() {} // Shut down the weapon (destroy resources) + + // weapon info + virtual WEAPON const *GetWeapon() const { return 0; } + virtual int GetWeaponId() const { return 0; } + + // ammo info + virtual AMMO const *GetAmmo() const { return 0; } + virtual int GetAmmoId() const { return WMGR_INVALID_ID; } + virtual int GetAmmoInClip() const { return WMGR_INVALID_ID; } + virtual bool HasAmmo() const { return true; } + virtual bool CanUseAmmo( uint8 nAmmoId ) const { return false; } + virtual bool CanChangeToAmmo( uint8 nAmmoId ) const { return false; }; + virtual uint8 GetNextAvailableAmmo( uint8 nGivenAmmoId = WMGR_INVALID_ID ) { return WMGR_INVALID_ID; }; + virtual bool GetBestAvailableAmmoId( int *nAmmoId ) const { *nAmmoId = WMGR_INVALID_ID; return false; }; + + // state info + virtual WeaponState GetState() const { return W_IDLE; } + + // misc functions + virtual bool IsMeleeWeapon() const { return false; } + virtual bool IsGadget() const { return false; } + virtual bool IsFireButtonDown() const { return false; } + virtual void GetShellEjectPos( LTVector *vOriginalPos ) { vOriginalPos->Init( 0.0f, 0.0f, 0.0f ); } + + // used with the cheat codes to adjust the proper position of the weapon + virtual LTVector GetMuzzleOffset() const { return LTVector( 0.0f, 0.0f, 0.0f ); } + + virtual void SetMuzzleOffset( LTVector const &v ) {} + + virtual LTVector GetBreachOffset() const { return LTVector( 0.0f, 0.0f, 0.0f ); } + + virtual void SetBreachOffset( LTVector const &v ) {} + + virtual LTVector GetWeaponOffset() const { return LTVector( 0.0f, 0.0f, 0.0f ); } + + virtual void SetWeaponOffset( LTVector const &v ) {} + + // This interface is only used for the camera shake. This + // is privledged information, and the code to shake the + // player view weapon should eventually be moved to this class. + // Please don't make use of this function, and if you do + // comment its use here. + virtual HLOCALOBJ GetHandle() const { return LTNULL; } + + // This needs to be exposed for the PlayerStats. Eventually + // this should be moved so creation/deletion of the mods + // are transparent to the outside system (not all games + // need mods). + virtual void CreateMods() {} + + // load/save functionality + virtual void Load( ILTMessage_Read *pMsg ) {} + virtual void Save( ILTMessage_Write *pMsg ) {} + + virtual void ResetWeapon() {} + + virtual void SetPaused( bool bPaused ) {} + + virtual void ClearFiring() {} + + virtual float GetWeaponHeat( ) const { return 0.0f; } +}; + + + +#endif //_ClientWeaponBase_h_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeaponMgr.cpp b/Jack/ClientShellDLL/ClientWeaponMgr.cpp new file mode 100644 index 00000000..6dedf250 --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponMgr.cpp @@ -0,0 +1,1338 @@ + +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeaponMgr.cpp +// +// PURPOSE : Manager of client-side weapons +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" + +#include "GameClientShell.h" +#include "InterfaceMgr.h" +#include "PlayerMgr.h" +#include "PlayerStats.h" +#include "MsgIDs.h" +#include "ClientWeaponMgr.h" +#include "ClientWeaponAllocator.h" + +// +// Defines +// + +#define CWM_NO_WEAPON -1 + +// checks if weapon is in range, the pointer array exists +// and the pointer is valid +#define CWM_WEAPON_INDEX_IS_VALID( _wep ) \ + ( ( ( 0 <= ( _wep ) ) && ( ( _wep ) < m_nMaxWeapons ) ) && \ + ( ( 0 != m_apClientWeapon ) && ( 0 != m_apClientWeapon[ ( _wep ) ] ) ) ) + + +// +// Static functions +// +void CClientWeaponMgr::CallbackHook( int nWeaponId, void *pData ) +{ + ASSERT( 0 != pData ); + CClientWeaponMgr *pClientWeaponMgr = static_cast< CClientWeaponMgr* >( pData ); + pClientWeaponMgr->DeselectCallback( nWeaponId ); +} + +// +// Globals... +// + +VarTrack g_vtKeepCurrentAmmo; + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::CClientWeaponMgr() +// +// PURPOSE: Constructor for client weapon manager class +// +// ----------------------------------------------------------------------- // + +CClientWeaponMgr::CClientWeaponMgr(): + m_apClientWeapon( 0 ) + , m_nMaxWeapons( 0 ) + , m_iCurrentWeapon( CWM_NO_WEAPON ) + , m_pCurrentWeapon( 0 ) + , m_bWeaponsEnabled( true ) + , m_bWeaponsVisible( true ) + , m_nDefaultWeaponId( 0 ) // default to the first weapon + , m_nHolsterWeaponId( WMGR_INVALID_ID ) + , m_nRequestedWeaponId( WMGR_INVALID_ID ) + , m_nRequestedAmmoId( WMGR_INVALID_ID ) + , m_bWeaponsPaused( false ) +{ +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::~CClientWeaponMgr() +// +// PURPOSE: Desructor for the client weapon mgr class +// +// ----------------------------------------------------------------------- // + +CClientWeaponMgr::~CClientWeaponMgr() +{ + // Destruct + Term(); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::Init() +// +// PURPOSE: Initialize the client weapon mgr system and create the weapons +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::Init() +{ + // loop vars + int i; + int nCommandId; + + // get first and last weapon indices + int nFirstWeaponCommandId =g_pWeaponMgr->GetFirstWeaponCommandId(); + int nLastWeaponCommandId = g_pWeaponMgr->GetLastWeaponCommandId(); + + // determine m_nMaxWeapons + // note: add 1 because the first and last are inclusive + m_nMaxWeapons = nLastWeaponCommandId - nFirstWeaponCommandId + 1; + + // allocate space for our array + m_apClientWeapon = debug_newa( IClientWeaponBase*, m_nMaxWeapons ); + if( !m_apClientWeapon ) + { + ASSERT( !"CClientWeaponMgr::Init. Could not allocate clientweapon array." ); + return false; + } + + for ( i = 0, nCommandId = nFirstWeaponCommandId; + i < m_nMaxWeapons; + ++i, ++nCommandId ) + { + // get the weapon data struct + uint8 nWeaponId = g_pWeaponMgr->GetWeaponId(nCommandId); + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( nWeaponId ); + if( !pWeapon ) + { + ASSERT( !"CClientWeaponMgr::Init. Could not get WEAPON data." ); + return false; + } + + // allocate the appropiate type of client weapon + CClientWeaponAllocator const *pClientWeaponAllocator = + g_pGameClientShell->GetClientWeaponAllocator(); + m_apClientWeapon[ i ] = pClientWeaponAllocator->New( pWeapon->nClientWeaponType ); + if( !m_apClientWeapon[ i ] ) + { + ASSERT( !"CClientWeaponMgr::Init. Could not create clientweapon." ); + return false; + } + + // init the weapon + if( !m_apClientWeapon[ i ]->Init( *pWeapon )) + { + ASSERT( !"CClientWeaponMgr::Init. Could not init clientweapon." ); + return false; + } + } + + // set the current weapon to t + m_pCurrentWeapon = 0; + m_iCurrentWeapon = CWM_NO_WEAPON; + m_nLastWeaponId = WMGR_INVALID_ID; + + g_vtKeepCurrentAmmo.Init( g_pLTClient, "KeepCurrentAmmo", LTNULL, 1.0f ); + + // for now, always succeed + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::Term() +// +// PURPOSE: Initialize the client weapon mgr system and create the weapons +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::Term() +{ + if ( 0 != m_apClientWeapon ) + { + // destroy all the array entries + for ( int i = 0; i < m_nMaxWeapons; ++i ) + { + if ( 0 != m_apClientWeapon[ i ] ) + { + m_apClientWeapon[ i ]->Term(); + debug_delete( m_apClientWeapon[ i ] ); + m_apClientWeapon[ i ] = 0; + } + } + + // destroy the array + debug_deletea( m_apClientWeapon ); + m_apClientWeapon = 0; + } + + m_pCurrentWeapon = LTNULL; + m_iCurrentWeapon = CWM_NO_WEAPON; + m_nLastWeaponId = WMGR_INVALID_ID; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::OnEnterWorld() +// +// PURPOSE: What to do when the world is entered +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::OnEnterWorld() +{ + // this system is not designed to work without weapons + ASSERT( 0 != m_apClientWeapon ); + + // destroy all the array entries + for ( int i = 0; i < m_nMaxWeapons; ++i ) + { + if ( 0 != m_apClientWeapon[ i ] ) + { + m_apClientWeapon[ i ]->OnEnterWorld(); + } + } + + // We should not have a current weapon at this point... + + m_pCurrentWeapon = LTNULL; + m_iCurrentWeapon = CWM_NO_WEAPON; + m_nLastWeaponId = WMGR_INVALID_ID; + +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::OnExitWorld() +// +// PURPOSE: What to do when the world is exited +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::OnExitWorld() +{ + // [kml] 1/30/02 + // We need to return here because the engine can + // call GameClientShell::OnEngineTerm before GameClientShell::OnExitWorld. + // Since OnEngineTerm() terminates this class, the array might have already + // been cleared here. + if(!m_apClientWeapon) + { + return; + } + + // destroy all the array entries + for ( int i = 0; i < m_nMaxWeapons; ++i ) + { + if ( 0 != m_apClientWeapon[ i ] ) + { + m_apClientWeapon[ i ]->OnExitWorld(); + } + } + + // When leaving a world there is no need to keep track of the current weapon... + + m_pCurrentWeapon = LTNULL; + m_iCurrentWeapon = CWM_NO_WEAPON; + m_nLastWeaponId = WMGR_INVALID_ID; + +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::OnMessage() +// +// PURPOSE: Handle messages +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::OnMessage( uint8 messageId, ILTMessage_Read *pMsg ) +{ + // first see if the message is for us +/* + switch ( messageId ) + { + // currently we don't have any messages for the ClientWeaponMgr + default: + { + } + break; + }; +*/ + + // otherwise pass the message to the active weapon + if ( m_pCurrentWeapon ) + { + return m_pCurrentWeapon->OnMessage( messageId, pMsg ); + } + else + { + return false; + } +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::OnModelKey() +// +// PURPOSE: Pass model key messages to the current weapon, returns true +// if the message was handled +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ) +{ + // pass the model key to the current weapon + if ( m_pCurrentWeapon ) + { + ASSERT( CWM_WEAPON_INDEX_IS_VALID( m_iCurrentWeapon ) ); + ASSERT( m_pCurrentWeapon == m_apClientWeapon[ m_iCurrentWeapon ] ); + + return m_pCurrentWeapon->OnModelKey( hObj, pArgs ); + } + else + { + return false; + } +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::Load() +// +// PURPOSE: Load the pertanant information from the message +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::Load( ILTMessage_Read *pMsg ) +{ + ASSERT( 0 != pMsg ); + + // load the holster information + m_nHolsterWeaponId = pMsg->Readuint8(); + + // load the request info + m_nRequestedWeaponId = pMsg->Readuint8(); + m_nRequestedAmmoId = pMsg->Readuint8(); + + int nWeapons = (int)pMsg->Readint32(); + + for( int i = 0; i < nWeapons; ++i ) + { + if( LTNULL != m_apClientWeapon[i] ) + { + m_apClientWeapon[i]->Load( pMsg ); + } + } + + m_nDefaultWeaponId = pMsg->Readuint8( ); + m_bWeaponsVisible = pMsg->Readbool( ); + m_bWeaponsEnabled = pMsg->Readbool( ); + m_bWeaponsPaused = pMsg->Readbool( ); + m_iCurrentWeapon = pMsg->Readuint8( ); + + m_pCurrentWeapon = NULL; + + // Change to a requested weapon/ammo if available, otherwise just go back to what we had. + int nChangeToWeaponId = ( m_nRequestedWeaponId != WMGR_INVALID_ID ) ? m_nRequestedWeaponId : + IndexToWeaponId( m_iCurrentWeapon ); + + // Just pass the requested ammo since it will be valid or WMGR_INVALID_ID. + ChangeWeapon( nChangeToWeaponId, m_nRequestedAmmoId, -1, false ); + + //set this after changing weapons + m_nLastWeaponId = pMsg->Readuint8( ); + + if (m_bWeaponsEnabled) + EnableWeapons(); + else + DisableWeapons(); + + if (m_bWeaponsVisible) + ShowWeapons(); + else + HideWeapons(); + + + PauseWeapons( m_bWeaponsPaused ); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::Save(ILTMessage_Write *pMsg) +// +// PURPOSE: Save the pertanant information to the message +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::Save( ILTMessage_Write *pMsg ) +{ + ASSERT( 0 != pMsg ); + + // holster information + pMsg->Writeuint8( m_nHolsterWeaponId ); + + // requst info + pMsg->Writeuint8( m_nRequestedWeaponId ); + pMsg->Writeuint8( m_nRequestedAmmoId ); + + pMsg->Writeint32( m_nMaxWeapons ); + + for( int i = 0; i < m_nMaxWeapons; ++i ) + { + if( LTNULL != m_apClientWeapon[i] ) + { + m_apClientWeapon[i]->Save( pMsg ); + } + } + + pMsg->Writeuint8( m_nDefaultWeaponId ); + pMsg->Writebool( m_bWeaponsVisible ); + pMsg->Writebool( m_bWeaponsEnabled ); + pMsg->Writebool( m_bWeaponsPaused ); + pMsg->Writeuint8( m_iCurrentWeapon ); + pMsg->Writeuint8( m_nLastWeaponId ); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::UpdateWeaponModel() +// +// PURPOSE: Update the current weapon +// +// ----------------------------------------------------------------------- // + +WeaponState CClientWeaponMgr::Update( LTRotation const &rRot, LTVector const &vPos, + bool bFire, FireType eFireType /* = FT_NORMAL_FIRE */ ) +{ + + if ( ( CWM_NO_WEAPON == m_iCurrentWeapon ) && ( m_pCurrentWeapon ) ) + { + // the weapon is out of sync with itself, check calling order + ASSERT( 0 ); + } + + // update the current weapon + WeaponState eWeaponState = W_IDLE; + if ( m_pCurrentWeapon ) + { + m_pCurrentWeapon->SetCameraInfo( rRot, vPos ); + eWeaponState = m_pCurrentWeapon->Update( bFire, eFireType ); + } + + // Check to see if we should auto-switch to a new weapon... + + if ( W_AUTO_SWITCH == eWeaponState ) + { + AutoSelectWeapon(); + } + + // if we received a request to change the weapon during + // the update, do it now + if ( CWM_NO_WEAPON == m_iCurrentWeapon ) + { + // no current weapon, see if we are trying to change + // to another weapon + if ( WMGR_INVALID_ID != m_nRequestedWeaponId ) + { + // select the requested weapon + ChangeWeapon( m_nRequestedWeaponId, m_nRequestedAmmoId, -1, false ); + + m_nRequestedWeaponId = WMGR_INVALID_ID; + m_nRequestedAmmoId = WMGR_INVALID_ID; + } + } + + return eWeaponState; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::GetCurrentWeapon() +// +// PURPOSE: Return a pointer to the current weapon +// +// ----------------------------------------------------------------------- // + +IClientWeaponBase *CClientWeaponMgr::GetCurrentClientWeapon() const +{ + if ( CWM_NO_WEAPON == m_iCurrentWeapon ) + { + return 0; + } + + // we should always have a current weapon + ASSERT( CWM_WEAPON_INDEX_IS_VALID( m_iCurrentWeapon ) ); + ASSERT( m_pCurrentWeapon == m_apClientWeapon[ m_iCurrentWeapon ] ); + + return m_pCurrentWeapon; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CClientWeaponMgr::GetCurrentWeaponId() +// +// PURPOSE: Return the index of the current weapon +// +// ----------------------------------------------------------------------- // + +uint8 CClientWeaponMgr::GetCurrentWeaponId() const +{ + if ( CWM_NO_WEAPON == m_iCurrentWeapon ) + { + // case where we are changing weapons... + return WMGR_INVALID_ID; + } + + // we should always have a current weapon + ASSERT( CWM_WEAPON_INDEX_IS_VALID( m_iCurrentWeapon ) ); + + return m_pCurrentWeapon->GetWeaponId(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::GetSequentialWeaponId() +// +// PURPOSE: Find the next/prev available weapon within the same class +// This function will get either the next or the previous +// available weapon based on the 'next' flag passed in. +// +// ----------------------------------------------------------------------- // + +uint8 CClientWeaponMgr::GetSequentialWeaponId( uint8 nWeapon, uint8 nClass, bool bNext ) const +{ + ASSERT( 0 != g_pPlayerStats ); + ASSERT( 0 != g_pWeaponMgr ); + + // check that there are other weapons to try + if ( 1 >= m_nMaxWeapons ) + { + return WMGR_INVALID_ID; + } + + + // make sure a valid weapon was specified + if ( !g_pWeaponMgr->IsValidWeaponId( nWeapon ) ) + { + if ( CWM_NO_WEAPON == m_iCurrentWeapon ) + { + // no current weapon, get the first weapon id + nWeapon = g_pWeaponMgr->GetWeaponId( g_pWeaponMgr->GetFirstWeaponCommandId() ); + } + else + { + // if an invalid weapon is specified, use the current + nWeapon = IndexToWeaponId( m_iCurrentWeapon ); + } + } + + + // init all the loop indices + int iMin = 0; + int iStart = WeaponIdToIndex( nWeapon ); + int iCur = iStart + ( bNext ? 1 : -1 ); + int iMax = m_nMaxWeapons; + int iFound = CWM_NO_WEAPON; + + + // wrap the index if necessary + if ( bNext ) + { + if ( iCur >= iMax ) iCur = iMin; + } + else // prev + { + if ( 0 > iCur ) iCur = iMax - 1; + } + + // check every weapon until we wrap around to where we started + while ( iCur != iStart && ( CWM_NO_WEAPON == iFound )) + { + uint8 nWeaponId = m_apClientWeapon[ iCur ]->GetWeaponId(); + uint8 nWeaponClass = g_pWeaponMgr->GetWeaponClass(nWeaponId); + + if ( ( g_pPlayerStats->HaveWeapon( nWeaponId ) ) && // have the weapon + ( m_apClientWeapon[ iCur ]->HasAmmo() ) ) // weapon has ammo + { + // potential match + + // if a class was specified, make sure it matches the weapon class + if ( 0 < nClass ) + { + if ( nClass == nWeaponClass ) + { + // class specified and it matches weapon class, its OK + iFound = iCur; + } + } + else + { + // no class specified, its OK + iFound = iCur; + } + } + + // Increment/decrement the weapon counter and check for array bounds... + if ( bNext ) + { + ++iCur; + + // wrap the index if necessary + if ( iCur >= iMax ) iCur = iMin; + } + else // Prev + { + --iCur; + + // wrap the index if necessary + if ( 0 > iCur ) iCur = iMax - 1; + } + } + + if ( CWM_NO_WEAPON != iFound ) + { + return m_apClientWeapon[ iFound ]->GetWeaponId(); + } + else + { + return WMGR_INVALID_ID; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::ChangeWeapon() +// +// PURPOSE: Change to a different weapon +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::ChangeWeapon( uint8 nWeaponId, + uint8 nAmmoId /*=WMGR_INVALID_ID*/, + int nAmmoAmount /*=-1*/, + bool bPlayDeselect /*=true*/ ) +{ + // check to see if weapon is a valid weapon to switch to + if( !CanChangeToWeapon( nWeaponId ) ) + { + return false; + } + + // assume we'll be changing weapon and ammo + bool bChangeWeapon = true; + bool bChangeAmmo = true; + + if ( m_pCurrentWeapon ) + { + // If there is a current weapon, determine if we + // have to switch the weapon, the ammo, or both. + uint8 nCurrentWeaponId = m_pCurrentWeapon->GetWeaponId(); + + // Do we need to change the weapon? + if ( nWeaponId == nCurrentWeaponId ) + { + bChangeWeapon = false; + + // Make sure a weapon change in progress is aborted... + if (WMGR_INVALID_ID != m_nRequestedWeaponId) + { + m_nRequestedWeaponId = nCurrentWeaponId; + } + } + } + + // if the specified nAmmoId is INVALID, we'll try to find + // the best ammo to switch to + int nNewAmmoId = WMGR_INVALID_ID; + int nNewAmmoAmount = -1; + + // get the best new ammo type + int iNewWeapon; + iNewWeapon = WeaponIdToIndex( nWeaponId ); + if ( ( WMGR_INVALID_ID == nAmmoId ) && ( CWM_NO_WEAPON != iNewWeapon ) ) + { + // If we don't want to keep the current ammo get the highest priority ammo... + + if( g_vtKeepCurrentAmmo.GetFloat() < 1.0f ) + { + m_apClientWeapon[ iNewWeapon ]->GetBestAvailableAmmoId( &nNewAmmoId ); + } + else + { + nNewAmmoId = m_apClientWeapon[iNewWeapon]->GetAmmoId(); + + // [KLS 5/9/02] Since we're using the ammo id stored in the weapon, make sure + // that the weapon actually has ammo associated with this id...If not, + // change to the best available ammo id... + + if( g_pPlayerStats->GetAmmoCount( nNewAmmoId ) <= 0 ) + { + m_apClientWeapon[ iNewWeapon ]->GetBestAvailableAmmoId( &nNewAmmoId ); + } + } + } + else + { + nNewAmmoId = nAmmoId; + } + + // get the amount of ammo + if ( -1 == nAmmoAmount ) + { + nNewAmmoAmount = g_pPlayerStats->GetAmmoCount( nNewAmmoId ); + } + else + { + nNewAmmoAmount = nAmmoAmount; + } + + // Do we need to change the ammo? + if ( m_pCurrentWeapon ) + { + // If there is a current weapon, determine if we + // have to switch the weapon, the ammo, or both. + uint8 nCurrentAmmoId = m_pCurrentWeapon->GetAmmoId(); + if ( nNewAmmoId == nCurrentAmmoId ) + { + bChangeAmmo = false; + + // Make sure a ammo change in progress is aborted... + if (WMGR_INVALID_ID != m_nRequestedAmmoId) + { + m_nRequestedAmmoId = nCurrentAmmoId; + } + } + } + + bool bSwitchInstantly = bChangeWeapon; + if ( bChangeWeapon ) + { + + // Handle deselection of current weapon... + if ( bPlayDeselect ) + { + if ( CWM_NO_WEAPON != m_iCurrentWeapon ) + { + // change weapons + + // save the new weapon id. + m_nRequestedWeaponId = nWeaponId; + m_nRequestedAmmoId = nNewAmmoId; + if (m_pCurrentWeapon) + { + m_nLastWeaponId = m_pCurrentWeapon->GetWeaponId(); + } + + // deselect the weapon + bool bResult = m_apClientWeapon[ m_iCurrentWeapon ]->Deselect( CallbackHook, this ); + if ( bResult ) + { + bSwitchInstantly = false; + } + } + } + + if ( bSwitchInstantly ) + { + if ( m_pCurrentWeapon ) + { + // deactivate the old weapon, if any + m_pCurrentWeapon->Deactivate(); + } + + // no current weapon, no need to deselect + ASSERT( 0 != m_apClientWeapon ); + if (m_pCurrentWeapon) + { + m_nLastWeaponId = m_pCurrentWeapon->GetWeaponId(); + } + + m_iCurrentWeapon = WeaponIdToIndex( nWeaponId ); + if( m_iCurrentWeapon != CWM_NO_WEAPON ) + { + m_pCurrentWeapon = m_apClientWeapon[ m_iCurrentWeapon ]; + m_pCurrentWeapon->Activate(); + m_pCurrentWeapon->Select(); + + // instantly switch to the new ammo + m_pCurrentWeapon->ChangeAmmoImmediate( nNewAmmoId , nNewAmmoAmount ); + } + else + { + m_pCurrentWeapon = NULL; + } + } + } + else if ( bChangeAmmo ) + { + // don't need to change the weapon, but we do + // need to change the ammo + m_pCurrentWeapon->ChangeAmmoWithReload( nNewAmmoId ); + } + + + // We succesfully started the weapon change process, so let the player mgr handle + // it... + + //jrg- 9/2/02 - this is getting called both when we start switching and when we finish switching + // PlayerMgr is using this to track if we're in mid switch + g_pPlayerMgr->HandleWeaponChanged(nWeaponId, nNewAmmoId, (!bChangeWeapon || bSwitchInstantly)); + + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDerWeaponModel::CanChangeToWeapon() +// +// PURPOSE: See if we can change to this weapon +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::CanChangeToWeapon( uint8 nWeaponId ) +{ + ASSERT( 0 != g_pPlayerMgr ); + ASSERT( 0 != g_pPlayerStats ); + + // make sure the weapon is valid + if ( WMGR_INVALID_ID == nWeaponId ) + { + return false; + } + + // no changing if the player is dead or in spectator mode + if ( g_pPlayerMgr->IsPlayerDead() || g_pPlayerMgr->IsSpectatorMode() ) + { + return false; + } + + // make sure we have data for this weapon + int iWeapon = WeaponIdToIndex( nWeaponId ); + if ( CWM_NO_WEAPON == iWeapon ) + { + return false; + } + + // Make sure this is a valid weapon for us to switch to... + if ( !g_pPlayerStats->HaveWeapon( nWeaponId ) ) + { + return false; + } + + // If this weapon has no ammo, let user know... + if ( !m_apClientWeapon[ iWeapon ]->HasAmmo() ) + { + // this should be handled elsewhere already + //g_pInterfaceMgr->UpdatePlayerStats( IC_OUTOFAMMO_ID, nWeaponId, 0, 0.0f ); +// ASSERT( 0 ); + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::SetDefaultWepon() +// +// PURPOSE: Set the default weapon +// +// ----------------------------------------------------------------------- // + +bool CClientWeaponMgr::SetDefaultWeapon( uint8 nWeaponId ) +{ + if( !g_pWeaponMgr->IsPlayerWeapon( nWeaponId )) + return false; + + m_nDefaultWeaponId = nWeaponId; + + if (NULL == GetCurrentClientWeapon()) + ChangeWeapon(m_nDefaultWeaponId); + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::ToggleHolster() +// +// PURPOSE: Holster or unholster our weapon +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::ToggleHolster( bool bPlayDeselect ) +{ + bPlayDeselect = bPlayDeselect && WeaponsEnabled(); + + // [kml] 3/26/02 Sanity check because we entered a world + // without a current weapon + if( m_pCurrentWeapon ) + { + // when bPlayDeselect == FALSE, ToggleHolster will force + // the weapon to change without the deselect animation + if ( g_pWeaponMgr->GetHolsterWeapon( ) == m_pCurrentWeapon->GetWeapon( )) + { + // the current weapon is the default, get out the holstered weapon + ChangeWeapon( m_nHolsterWeaponId, WMGR_INVALID_ID, -1, bPlayDeselect ); + m_nHolsterWeaponId = WMGR_INVALID_ID; + } + else + { + // put the current weapon away and switch to the default + m_nHolsterWeaponId = m_pCurrentWeapon->GetWeaponId(); + // Can only do this if a holster weapon was specified in weapons.txt. + if( g_pWeaponMgr->GetHolsterWeapon( )) + { + ChangeWeapon( g_pWeaponMgr->GetHolsterWeapon( )->nId , WMGR_INVALID_ID, -1, bPlayDeselect ); + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::LastWeapon() +// +// PURPOSE: Swap to our previously used weapon. +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::LastWeapon() +{ + if (!WeaponsEnabled()) return; + + ChangeWeapon( m_nLastWeaponId, WMGR_INVALID_ID, -1, true ); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::EnableWeapons() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::EnableWeapons() +{ + // Don't allow the enabling of weapons while dead or carrying a body... + + if( g_pPlayerMgr->IsCarryingHeavyObject() || g_pPlayerMgr->IsPlayerDead() || + !g_pDamageFXMgr->AllowWeapons( )) + return; + + // I'd rather not have to check the consistancy of these two variables, + // (the only time they are inconsistant is when we are changing weapons) + // but because of some circular depentancies in the the old weapon code, + // the playermgr and a few other files, its too involved to fix right now. + + if ( ( CWM_NO_WEAPON != m_iCurrentWeapon ) && ( m_pCurrentWeapon ) ) + { + ASSERT( CWM_WEAPON_INDEX_IS_VALID( m_iCurrentWeapon ) ); + ASSERT( m_pCurrentWeapon == m_apClientWeapon[ m_iCurrentWeapon ] ); + + // enable the current weapon + // the rest will be enabled/disabled as necessary + m_pCurrentWeapon->SetDisable( false ); + } + + m_bWeaponsEnabled = true; + + if (m_pCurrentWeapon && !m_pCurrentWeapon->HasAmmo()) + { + AutoSelectWeapon(); + } + +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::DisableWeapons() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::DisableWeapons() +{ + ASSERT( 0 != m_apClientWeapon ); + + // disable each weapon + for ( int i = 0; i < m_nMaxWeapons; ++i ) + { + if ( m_apClientWeapon[ i ] ) + { + m_apClientWeapon[ i ]->SetDisable( true ); + } + } + + m_bWeaponsEnabled = false; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::ShowWeapons() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::ShowWeapons() +{ + // I'd rather not have to check the consistancy of these two variables, + // (the only time they are inconsistant is when we are changing weapons) + // but because of some circular depentancies in the the old weapon code, + // the playermgr and a few other files its too involved to fix right now. + + if ( ( CWM_NO_WEAPON != m_iCurrentWeapon ) && ( m_pCurrentWeapon ) ) + { + ASSERT( CWM_WEAPON_INDEX_IS_VALID( m_iCurrentWeapon ) ); + ASSERT( m_pCurrentWeapon == m_apClientWeapon[ m_iCurrentWeapon ] ); + + m_pCurrentWeapon->SetVisible( true ); + } + + // show the current weapon + // the rest will be shown/hidden as necessary + + m_bWeaponsVisible = true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::HideWeapons() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::HideWeapons() +{ + ASSERT( 0 != m_apClientWeapon ); + + // disable each weapon + for ( int i = 0; i < m_nMaxWeapons; ++i ) + { + if ( m_apClientWeapon[ i ] ) + { + m_apClientWeapon[ i ]->SetVisible( false ); + } + } + + m_bWeaponsVisible = false; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::PauseWeapons() +// +// PURPOSE: Pause/UnPause all the weapons. When in a cinematic we don't +// want any selected weapons to be updated. +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::PauseWeapons( bool bPause ) +{ + ASSERT( 0 != m_apClientWeapon ); + + for( int i = 0; i < m_nMaxWeapons; ++i ) + { + if( m_apClientWeapon[i] ) + { + m_apClientWeapon[i]->SetPaused( bPause ); + } + } + + m_bWeaponsPaused = bPause; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: void CClientWeaponMgr::DeselectCallback() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::DeselectCallback( int nWeaponId ) +{ + ASSERT( CWM_WEAPON_INDEX_IS_VALID( WeaponIdToIndex( nWeaponId ) ) ); + ASSERT( m_pCurrentWeapon && (m_pCurrentWeapon->GetWeaponId() == nWeaponId) ); + + // set the current weapon index to NO_WEAPON and + // we'll start the switch to the next weapon (if any) + // during the next update + m_iCurrentWeapon = CWM_NO_WEAPON; + m_pCurrentWeapon = NULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeapomMgr::AutoSelectWeapon() +// +// PURPOSE: Determine what weapon to switch to, and switch +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::AutoSelectWeapon() +{ + // [KLS 4/25/02] First see if we can just change ammo types... + + if (m_pCurrentWeapon) + { + // Get the best new ammo type + int nNewAmmoId = WMGR_INVALID_ID; + m_pCurrentWeapon->GetBestAvailableAmmoId( &nNewAmmoId ); + + if (WMGR_INVALID_ID != nNewAmmoId) + { + m_pCurrentWeapon->ChangeAmmoWithReload( nNewAmmoId ); + return; + } + + // Okay, need to change, find the next weapon + ChangeToNextRealWeapon(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CClientWeaponMgr::ChangeToNextRealWeapon() +// +// PURPOSE: Change to the next weapon/gadget that does damage. +// (used by the auto weapon switching) +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::ChangeToNextRealWeapon() +{ + // If we're supposed to hide the weapon when it is empty + // (i.e., it doesn't make sense to see it) then we don't + // want to play the deselect animation... + + if (!m_pCurrentWeapon) return; + + const WEAPON* pCurWeapon = m_pCurrentWeapon->GetWeapon(); + if (!pCurWeapon) return; + + bool bCanDeselect = !pCurWeapon->bHideWhenEmpty; + + // Find the next available weapon on the weapon selection list... + + uint8 nWeaponPriorities[254]; + int nNumPriorities = g_pWeaponMgr->GetWeaponPriorities(nWeaponPriorities, ARRAY_LEN(nWeaponPriorities)); + + for (uint8 i = 0; i < nNumPriorities; i++) + { + uint8 nWeaponId = nWeaponPriorities[i]; + if (WMGR_INVALID_ID != nWeaponId) + { + uint8 iCur = WeaponIdToIndex(nWeaponId); + + if (CWM_NO_WEAPON != iCur) + { + if ( ( g_pPlayerStats->HaveWeapon( nWeaponId ) ) && // have the weapon + ( m_apClientWeapon[ iCur ]->HasAmmo() ) ) // weapon has ammo + { + ChangeWeapon(nWeaponId, WMGR_INVALID_ID, -1, bCanDeselect); + return; + } + } + } + } + +/* [KLS 8/26/02] Old class-based system...Just use the hardcoded list now... + + // First try to switch to the next available weapon in the current class... + + int nCurClass = g_pWeaponMgr->GetWeaponClass(pCurWeapon->nId); + + uint8 nMatch = GetNextWeaponId(pCurWeapon->nId, nCurClass); + if (WMGR_INVALID_ID != nMatch) + { + ChangeWeapon(nMatch, WMGR_INVALID_ID, -1, bCanDeselect); + return; + } + + + // Okay, no available weapons in the current class...switch based on + // our class priority list... + + uint8 nClassPriorities[10]; + int nNumPriorities = g_pWeaponMgr->GetWeaponClassPriorities(nClassPriorities, ARRAY_LEN(nClassPriorities)); + + for (int i=0; i < nNumPriorities; i++) + { + // Don't bother trying our current class, we already tried that... + + if (nClassPriorities[i] != nCurClass) + { + nMatch = GetNextWeaponId(pCurWeapon->nId, nClassPriorities[i]); + + if (WMGR_INVALID_ID != nMatch) + { + // Switch to this weapon... + ChangeWeapon(nMatch, WMGR_INVALID_ID, -1, bCanDeselect); + return; + } + } + } +*/ + +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: ClientWeaponMgr::IndexToWeaponId() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +uint8 CClientWeaponMgr::IndexToWeaponId( int iIndex ) const +{ + if ( CWM_NO_WEAPON == m_iCurrentWeapon ) + { + return WMGR_INVALID_ID; + } + + ASSERT( CWM_WEAPON_INDEX_IS_VALID( iIndex ) ); + + return m_apClientWeapon[ iIndex ]->GetWeaponId(); +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: ClientWeaponMgr::WeaponIdToIndex() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +int CClientWeaponMgr::WeaponIdToIndex( uint8 nWeaponId ) const +{ + int iWeapon; + for ( iWeapon = 0; iWeapon < m_nMaxWeapons; ++iWeapon ) + { + // find the specified weapon + if ( nWeaponId == m_apClientWeapon[ iWeapon ]->GetWeaponId() ) + { + break; + } + } + + if ( iWeapon >= m_nMaxWeapons ) + { + // couldn't find the weapon to change to + return CWM_NO_WEAPON; + } + else + { + return iWeapon; + } +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: ClientWeaponMgr::ResetWeapons() +// +// PURPOSE: Reset all the weapons +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::ResetWeapons() +{ + ASSERT( 0 != m_apClientWeapon ); + + m_nRequestedWeaponId = WMGR_INVALID_ID; + m_nRequestedAmmoId = WMGR_INVALID_ID; + + // Reset each weapon + + for( int i = 0; i < m_nMaxWeapons; ++i ) + { + if( m_apClientWeapon[i] ) + { + m_apClientWeapon[i]->ResetWeapon(); + } + } + + // Don't have a current weapon any longer. + m_pCurrentWeapon = 0; + m_iCurrentWeapon = CWM_NO_WEAPON; + m_nLastWeaponId = WMGR_INVALID_ID; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: ClientWeaponMgr::OnPlayerDead() +// +// PURPOSE: Handle when the player goes to a dead state... +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::OnPlayerDead() +{ + // Since the player is dead they should no longer fire... + + if( m_pCurrentWeapon ) + m_pCurrentWeapon->ClearFiring(); + + DisableWeapons(); +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: ClientWeaponMgr::OnPlayerAlive() +// +// PURPOSE: Handle when the player comes alive... +// +// ----------------------------------------------------------------------- // + +void CClientWeaponMgr::OnPlayerAlive() +{ + EnableWeapons(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeaponMgr.h b/Jack/ClientShellDLL/ClientWeaponMgr.h new file mode 100644 index 00000000..6056d079 --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponMgr.h @@ -0,0 +1,159 @@ + +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeaponMgr.h +// +// PURPOSE : Manager of client-side weapons +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _ClientWeaponMgr_h_INCLUDED_ +#define _ClientWeaponMgr_h_INCLUDED_ + + +#include "ClientWeaponBase.h" + + +// +// Typedefs +// + +// Perhaps this should be declared in the this file, but +// to avoid creating header files that depend on each other +// (the IClientWeaponBase class should have no clue what a +// CClientWeaponMgr actually is) I'm sticking it here and +// placing a commented out version in the other header file. +// +// typedef void (*ClientWeaponCallBackFn)( int nWeaponId, void *pData ); + + +class CClientWeaponMgr +{ +public: + // constructor/destructor + CClientWeaponMgr(); + ~CClientWeaponMgr(); + + // standard init/term functions + bool Init(); + void Term(); + + // on enter/exit world functionality + void OnEnterWorld(); + void OnExitWorld(); + + // handle messages for the mgr and pass messages to the weapons + bool OnMessage( uint8 messageId, ILTMessage_Read *pMsg ); + bool OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ); + + // load/save functionality + void Load( ILTMessage_Read *pMsg ); + void Save( ILTMessage_Write *pMsg ); + + // main update function + WeaponState Update( LTRotation const &rRot, LTVector const &vPos, + bool bFire, FireType eFireType = FT_NORMAL_FIRE ); + + // accessor functions + IClientWeaponBase *GetCurrentClientWeapon() const; + uint8 GetCurrentWeaponId() const; + uint8 GetNextWeaponId( uint8 nWeapon, uint8 nClass ) const { return GetSequentialWeaponId(nWeapon, nClass, true); } + uint8 GetPrevWeaponId( uint8 nWeapon, uint8 nClass ) const { return GetSequentialWeaponId(nWeapon, nClass, false); } + uint8 GetSequentialWeaponId( uint8 nWeapon, uint8 nClass, bool bNext ) const; + + bool CanChangeToWeapon( uint8 nWeaponId ); + + // Do NOT call ChangeWeapon, LastWeapon or ToggleHolster directly. Call + // PlayerMgr's corresponding functions (conviently named the same) + // because it will also handle things outside the scope of the client + // weapon system, like zoom changes and screen overlays. + void ToggleHolster( bool bPlayDeselet = true ); + bool ChangeWeapon( uint8 nWeaponId, + uint8 nAmmoId = WMGR_INVALID_ID, + int nAmmoAmount = -1, + bool bPlayDeselect = true ); + void LastWeapon(); + + // When the weapon is holstered, draw this weapon as the default. + bool SetDefaultWeapon( uint8 nWeaponId = 0 ); + uint8 GetDefaultWeaponId() { return m_nDefaultWeaponId;} + + + // Enable/Disable all the weapons + void EnableWeapons(); + void DisableWeapons(); + bool WeaponsEnabled() const { return m_bWeaponsEnabled; } + + // Hide/Show all the weapons + void ShowWeapons(); + void HideWeapons(); + bool WeaponsVisible() const { return m_bWeaponsVisible; } + + // Pause/UnPause all weapons + void PauseWeapons( bool bPause ); + + // Do NOT call these directly, they are for the ClientWeapon to + // callback when its done with a deselect (so we know when to change + // weapons). + static void CallbackHook( int nWeaponId, void *pData ); + void DeselectCallback( int nWeaponId ); + + void ResetWeapons(); + + // Change to the next logical ammo type / weapon (called by ClientWeapon) + void AutoSelectWeapon(); + + // Functionality for when the player changes state to dead/dying or alive + void OnPlayerDead(); + void OnPlayerAlive(); + +private: + // + // Private routines + // + void ChangeToNextRealWeapon(); + + // class utilities + uint8 IndexToWeaponId( int iIndex ) const; + int WeaponIdToIndex( uint8 nWeaponId ) const; + + // array of pointers to the client weapons + IClientWeaponBase **m_apClientWeapon; + + // maximum number of weapons + int m_nMaxWeapons; + + // this is an index into m_apClientWeapon, NOT a weapon id! + int m_iCurrentWeapon; + + // easier to write, should ALWAYS match the m_nCurrentWeapon index + IClientWeaponBase *m_pCurrentWeapon; + + // true if all weapons are enabled + bool m_bWeaponsEnabled; + + // true if all weapons are visible + bool m_bWeaponsVisible; + + // default weapon to switch to when holstering weapons + // or there is nothing else to switch to + int m_nDefaultWeaponId; + + // weapon id that is currently holstered + int m_nHolsterWeaponId; + + // weapon id that we will switch to + int m_nRequestedWeaponId; + int m_nRequestedAmmoId; + + // id of last weapon that we were using + int m_nLastWeaponId; + + bool m_bWeaponsPaused; + +}; + + +#endif //_ClientWeaponMgr_h_INCLUDED_ diff --git a/Jack/ClientShellDLL/ClientWeaponNone.h b/Jack/ClientShellDLL/ClientWeaponNone.h new file mode 100644 index 00000000..32c343ab --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponNone.h @@ -0,0 +1,27 @@ + +#ifndef _ClientWeaponNone_h_INCLUDED_ +#define _ClientWeaponNone_h_INCLUDED_ + +#include "ClientWeaponNone.h" + +// +// This class is a class that represents having +// NO weapon, and nothing visibile to the viewer. +// It may seem odd to derive a class that has +// LESS functionality than the base class, but +// the CCLientWeapon didn't have the opportunity +// to be reduced enough to make it a generic +// base class. TODO: make ClientWeapon more +// a generic base class and move things out into +// their own derived classes (gadgets, for +// example, would _love_ to be moved into their +// own class). + + +class CClientWeaponNone : public IClientWeaponBase +{ +public: + virtual ~CClientWeaponNone() {} +}; + +#endif //_ClientWeaponNone_h_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ClientWeaponUtils.cpp b/Jack/ClientShellDLL/ClientWeaponUtils.cpp new file mode 100644 index 00000000..07025667 --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponUtils.cpp @@ -0,0 +1,106 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeaponUtils.cpp +// +// PURPOSE : Client-side firing helper functions +// +// CREATED : 11/2/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ClientWeaponUtils.h" +#include "ClientUtilities.h" +#include "GameClientShell.h" +#include "ClientServerShared.h" +#include "WeaponFX.h" +#include "WeaponFXTypes.h" +#include "SurfaceFunctions.h" + +extern CGameClientShell* g_pGameClientShell; +extern ILTClient* g_pLTClient; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: AttackerLiquidFilterFn() +// +// PURPOSE: Filter the attacker out of CastRay and/or +// IntersectSegment calls (so you don't shot yourself). +// However, we want to ignore liquid as well... +// +// ----------------------------------------------------------------------- // + +bool AttackerLiquidFilterFn(HLOCALOBJ hObj, void *pUserData) +{ + // We're not attacking our self... + + if (SpecificObjectFilterFn(hObj, pUserData)) + { + // Return LTTRUE to keep this object (not liquid), or LTFALSE to ignore + // this object (is liquid)... + + uint16 code; + if (g_pLTClient && g_pLTClient->GetContainerCode(hObj, &code)) + { + ContainerCode eCode = (ContainerCode)code; + + if (IsLiquid(eCode)) + { + return false; + } + } + + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: AddLocalImpactFX +// +// PURPOSE: Add a weapon impact special fx +// +// ----------------------------------------------------------------------- // + +void AddLocalImpactFX(HLOCALOBJ hObj, const LTVector & vFirePos, const LTVector & vImpactPoint, + const LTVector & vNormal, SurfaceType eType, const LTVector & vPath, + uint8 nWeaponId, uint8 nAmmoId, uint16 wIgnoreFX) +{ + if (!g_pLTClient || !g_pGameClientShell) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + LTVector vPos; + vPos = vImpactPoint - vPath; + + uint32 dwId; + g_pLTClient->GetLocalClientID(&dwId); + + uint16 wIgnFX = wIgnoreFX; + + if (!CanMarkObject(hObj)) + { + wIgnFX |= WFX_MARK; + } + + WCREATESTRUCT w; + + w.hObjectHit = hObj; + w.nWeaponId = nWeaponId; + w.nAmmoId = nAmmoId; + w.nSurfaceType = eType; + w.wIgnoreFX = wIgnFX; + w.nShooterId = (uint8)dwId; + w.bLocal = LTTRUE; + + w.vFirePos = vFirePos; + w.vPos = vPos; + w.vSurfaceNormal = vNormal; + w.eImpactType = IMPACT_TYPE_IMPACT; + + psfxMgr->CreateSFX(SFX_WEAPON_ID, &w); +} diff --git a/Jack/ClientShellDLL/ClientWeaponUtils.h b/Jack/ClientShellDLL/ClientWeaponUtils.h new file mode 100644 index 00000000..a180ab5d --- /dev/null +++ b/Jack/ClientShellDLL/ClientWeaponUtils.h @@ -0,0 +1,43 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ClientWeaponUtils.h +// +// PURPOSE : Client-side firing helper functions +// +// CREATED : 11/2/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENT_WEAPON_UTILS_H__ +#define __CLIENT_WEAPON_UTILS_H__ + +#include "ltbasedefs.h" +#include "SurfaceMgr.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: AttackerLiquidFilterFn() +// +// PURPOSE: Filter the attacker out of CastRay and/or +// IntersectSegment calls (so you don't shot yourself). +// However, we want to ignore liquid as well... +// +// ----------------------------------------------------------------------- // + +bool AttackerLiquidFilterFn(HLOCALOBJ hObj, void *pUserData); + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: AddLocalImpactFX +// +// PURPOSE: Add a weapon impact special fx +// +// ----------------------------------------------------------------------- // + +void AddLocalImpactFX(HLOCALOBJ hObj, const LTVector & vFirePos, const LTVector & vImpactPoint, + const LTVector & vNormal, SurfaceType eType, const LTVector & vPath, + uint8 nWeaponId, uint8 nAmmoId, uint16 wIgnoreFX); + + +#endif // __CLIENT_WEAPON_UTILS_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/Credits.cpp b/Jack/ClientShellDLL/Credits.cpp new file mode 100644 index 00000000..b3273534 --- /dev/null +++ b/Jack/ClientShellDLL/Credits.cpp @@ -0,0 +1,976 @@ +/**************************************************************************** +; +; MODULE: Credits (.CPP) +; +; PURPOSE: Credits class +; +; HISTORY: 07/24/98 [blg] This file was created +; 07/26/00 [jrg] modified for NOLF +; +; Copyright (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +; +****************************************************************************/ + + +// Includes... + +#include "stdafx.h" +#include "GameClientShell.h" +#include "Credits.h" +#include +#include + +// Macros... + + + +LTFLOAT CCredits::s_fSpeed = DEF_CREDITS_SPEED; + + +namespace +{ + LTBOOL s_bPause = LTFALSE; + LTFLOAT s_fFadeInTime = -1.0f; + LTFLOAT s_fHoldTime = -1.0f; + LTFLOAT s_fFadeOutTime = -1.0f; + LTFLOAT s_fDelayTime = -1.0f; + LTIntPt s_PositionUL; + LTIntPt s_PositionUR; + LTIntPt s_PositionLL; + LTIntPt s_PositionLR; + HMODULE s_hModule = NULL; + HRSRC s_hRes = NULL; + HGLOBAL s_hGlobal = NULL; + char* s_sBuf = LTNULL; +} + +static char* GetTextBuffer(char* sName); + + +// Functions... + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::Init(char* sBuf) +{ + // Sanity checks... + + if (!sBuf) return(LTFALSE); + + // Set simple members... + + m_nState = CS_START; + + s_bPause = LTFALSE; + + m_Pos.x = 320; + m_Pos.y = 240; + m_ePosition = CP_CENTER; + m_bBig = LTFALSE; + m_hAlign = CUI_HALIGN_CENTER; + + // Parse the text buffer and add each line as a separate string... + + char sString[256]; + int i = 0; + + while (*sBuf) + { + if ((*sBuf == '\n') || (*sBuf == '\r') || (*sBuf == '\0')) + { + sString[i] = '\0'; + AddString(sString); + i = 0; + + while (((*sBuf == '\n') || (*sBuf == '\r'))) + { + sBuf = (char*)_mbsinc((const unsigned char*)sBuf); + }; + } + else + { + int nCount = _mbsnbcnt((const unsigned char*)sBuf,1); + memcpy(&sString[i], sBuf, nCount); + i += nCount; + sBuf = (char*)_mbsinc((const unsigned char*)sBuf); + } + } + sString[i] = '\0'; + if (strlen(sString) > 0) AddString(sString); + + m_Color = argbWhite; + m_DSColor = argbBlack; + + // All done... + FormatStrings(); + + return(LTTRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CCredit::Term() +{ + for (uint16 i = 0; i < m_Strings.size(); i++) + { + g_pFontManager->DestroyPolyString(m_Strings[i]); + } + m_Strings.clear(); + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::AddString +// +// PURPOSE: Adds a new string +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::AddString(char* sString) +{ + // Sanity checks... + + if (!g_pLTClient) return(LTFALSE); + if (!sString) return(LTFALSE); + + // Check if this is a special command string... + + if (strncmp(sString, ">TIME:", 6) == 0) + { + if (_mbstrlen(sString) > 6) + { + m_fHoldTime = (float)atof(&sString[6]); + return(LTTRUE); + } + } + if (strncmp(sString, ">POS:UL", 7) == 0) + { + m_hAlign = CUI_HALIGN_LEFT; + m_Pos = s_PositionUL; + m_ePosition = CP_UL; + return(LTTRUE); + } + if (strncmp(sString, ">POS:UR", 7) == 0) + { + m_hAlign = CUI_HALIGN_RIGHT; + m_Pos = s_PositionUR; + m_ePosition = CP_UR; + return(LTTRUE); + } + if (strncmp(sString, ">POS:LR", 7) == 0) + { + m_hAlign = CUI_HALIGN_RIGHT; + m_Pos = s_PositionLR; + m_ePosition = CP_LR; + return(LTTRUE); + } + if (strncmp(sString, ">POS:LL", 7) == 0) + { + m_hAlign = CUI_HALIGN_LEFT; + m_Pos = s_PositionLL; + m_ePosition = CP_LL; + return(LTTRUE); + } + if (strncmp(sString, ">BIG", 4) == 0) + { + m_bBig = LTTRUE; + return(LTTRUE); + } + + uint8 nFont = 0; + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + CUIFormattedPolyString* pStr = g_pFontManager->CreateFormattedPolyString(pFont,sString,(float)m_Pos.x,(float)m_Pos.y); + if (pStr) + m_Strings.push_back(pStr); + + return(LTTRUE); +} + +void CCredit::FormatStrings() +{ + float x = (float)m_Pos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_Pos.y * g_pInterfaceResMgr->GetYRatio(); + FPStringArray::iterator iter = m_Strings.begin(); + while (iter != m_Strings.end()) + { + CUIFormattedPolyString* pStr = *iter; + + uint8 nSize = (uint8)(16.0f * g_pInterfaceResMgr->GetXRatio()); + if (m_bBig) + nSize = (uint8)(24.0f * g_pInterfaceResMgr->GetYRatio()); + + + pStr->SetCharScreenHeight(nSize); + pStr->SetColor(argbWhite); + pStr->SetAlignmentH(m_hAlign); + pStr->SetPosition(x,y); + y += (float)pStr->GetHeight(); + + iter++; + + } + + float offset = y - ((float)m_Pos.y * g_pInterfaceResMgr->GetYRatio()); + switch (m_ePosition) + { + case CP_CENTER: + offset /= 2.0f; + break; + case CP_UR: + case CP_UL: + offset = 0.0f; + break; + } + + if (offset > 0.0f) + { + FPStringArray::iterator iter = m_Strings.begin(); + while (iter != m_Strings.end()) + { + CUIFormattedPolyString* pStr = *iter; + + float x,y; + pStr->GetPosition(&x,&y); + + y -= offset; + + pStr->SetPosition(x,y); + + iter++; + + } + + } + + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::Draw +// +// PURPOSE: Draws all the strings of the credit +// +// ----------------------------------------------------------------------- // + +void CCredit::Draw() +{ + // Sanity checks... + + if (m_Strings.size() <= 0) return; + + FPStringArray::iterator iter = m_Strings.begin(); + while (iter != m_Strings.end()) + { + CUIFormattedPolyString* pStr = (*iter); + float x; + float y; + pStr->GetPosition(&x,&y); + + //drop shadow + pStr->SetPosition(x+2.0f,y+2.0f); + pStr->SetColor(m_DSColor); + pStr->Render(); + + pStr->SetPosition(x,y); + pStr->SetColor(m_Color); + pStr->Render(); + iter++; + } + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::Update +// +// PURPOSE: Updates the credit +// +// RETURNS: LTFALSE = Stay with current credit +// LTTRUE = Advance to next credit +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::Update() +{ + // Sanity checks... + + if (!g_pLTClient) return(LTFALSE); + + + // Update based on our current state... + + switch(m_nState) + { + case CS_START: + { + SetState(CS_FADEIN); + return(LTFALSE); + } + + case CS_FADEIN: + { + if (UpdateFadeIn()) SetState(CS_HOLDIN); + return(LTFALSE); + } + + case CS_HOLDIN: + { + if (UpdateHoldIn()) SetState(CS_FADEOUT); + return(LTFALSE); + } + + case CS_FADEOUT: + { + if (UpdateFadeOut()) SetState(CS_HOLDOUT); + return(LTFALSE); + } + + case CS_HOLDOUT: + { + if (UpdateHoldOut()) SetState(CS_DONE); + return(LTFALSE); + } + + case CS_DONE: + { + return(LTTRUE); + } + + default: + { + return(LTTRUE); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::SetState +// +// PURPOSE: Sets the update state +// +// ----------------------------------------------------------------------- // + +void CCredit::SetState(int nState) +{ + // Set the new state... + + m_nState = nState; + + switch (nState) + { + case CS_START: + { + break; + } + + case CS_FADEIN: + { + m_fTimer = s_fFadeInTime; + m_fAlpha = 0.0f; + break; + } + + case CS_HOLDIN: + { + m_fTimer = s_fHoldTime; + m_fAlpha = 1.0f; + if (m_fHoldTime > 0.0f) m_fTimer = m_fHoldTime; + break; + } + + case CS_FADEOUT: + { + m_fTimer = s_fFadeOutTime; + m_fAlpha = 1.0f; + break; + } + + case CS_HOLDOUT: + { + m_fTimer = s_fDelayTime; + m_fAlpha = 1.0f; + break; + } + + case CS_DONE: + { + break; + } + } + + m_fTimerStart = m_fTimer; + m_fAlphaStart = m_fAlpha; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::UpdateFadeIn +// +// PURPOSE: Updates the CS_FADEIN state +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::UpdateFadeIn() +{ + // Update the timer value... + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + fDelta *= CCredits::GetSpeed(); + if (s_bPause) fDelta = 0.0f; + + if (m_fTimer > fDelta) + { + m_fTimer -= fDelta; + } + else + { + m_fTimer = 0.0f; + } + + + // set the alpha... + + m_fAlpha = 1.0f - (m_fTimer / m_fTimerStart); + if (m_fAlpha < 0.0f) m_fAlpha = 0.0f; + if (m_fAlpha > 1.0f) m_fAlpha = 1.0f; + + uint8 a = (uint8)( 255.0f * m_fAlpha ); + + m_Color = SET_ARGB(a,0xFF,0xFF,0xFF); + m_DSColor = SET_ARGB(a,0x00,0x00,0x00); + + + + // Draw the credit... + + Draw(); + + + // All done... + + return(m_fTimer == 0.0f); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::UpdateHoldIn +// +// PURPOSE: Updates the CS_HOLDIN state +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::UpdateHoldIn() +{ + // Update the timer value... + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + fDelta *= CCredits::GetSpeed(); + if (s_bPause) fDelta = 0; + + if (m_fTimer > fDelta) + { + m_fTimer -= fDelta; + } + else + { + m_fTimer = 0.0f; + } + + + // Draw the credit... + + Draw(); + + + // All done... + + return(m_fTimer == 0.0f); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::UpdateFadeOut +// +// PURPOSE: Updates the CS_FADEOUT state +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::UpdateFadeOut() +{ + // Update the timer value... + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + fDelta *= CCredits::GetSpeed(); + if (s_bPause) fDelta = 0.0f; + + if (m_fTimer > fDelta) + { + m_fTimer -= fDelta; + } + else + { + m_fTimer = 0.0f; + } + + + // set the alpha... + + m_fAlpha = (m_fTimer / m_fTimerStart); + if (m_fAlpha < 0.0f) m_fAlpha = 0.0f; + if (m_fAlpha > 1.0f) m_fAlpha = 1.0f; + + uint8 a = (uint8)( 255.0f * m_fAlpha ); + + m_Color = SET_ARGB(a,0xFF,0xFF,0xFF); + m_DSColor = SET_ARGB(a,0x00,0x00,0x00); + + // Draw the credit... + + Draw(); + + + // All done... + + return(m_fTimer == 0.0f); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredit::UpdateHoldOut +// +// PURPOSE: Updates the CS_HOLDOUT state +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredit::UpdateHoldOut() +{ + // Update the timer value... + + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + fDelta *= CCredits::GetSpeed(); + if (s_bPause) fDelta = 0; + + if (m_fTimer > fDelta) + { + m_fTimer -= fDelta; + } + else + { + m_fTimer = 0.0f; + } + + + // All done... + + return(m_fTimer == 0.0f); +} + + +void CCredit::Clear() +{ + m_nState = CS_START; + m_fTimer = 0.0f; + m_fHoldTime = -1.0f; +} + + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +LTBOOL CCredits::Init(int nMode, LTBOOL bClearScreen) +{ + // Sanity checks... + + + Term(); + + + // Set simple members... + + m_iCredit = 0; + m_nMode = nMode; + m_bDone = LTFALSE; + m_bClearScreen = bClearScreen; + s_fSpeed = DEF_CREDITS_SPEED; + + if (s_fFadeInTime < 0.0f) + { + s_fFadeInTime = g_pLayoutMgr->GetCreditsFadeInTime(); + s_fHoldTime = g_pLayoutMgr->GetCreditsHoldTime(); + s_fFadeOutTime = g_pLayoutMgr->GetCreditsFadeOutTime(); + s_fDelayTime = g_pLayoutMgr->GetCreditsDelayTime(); + s_PositionUL = g_pLayoutMgr->GetCreditsPositionUL(); + s_PositionUR = g_pLayoutMgr->GetCreditsPositionUR(); + s_PositionLL = g_pLayoutMgr->GetCreditsPositionLL(); + s_PositionLR = g_pLayoutMgr->GetCreditsPositionLR(); + } + + + // Add all the credit objects... + + AddCredits(); + + + // All done... + + if (m_Credits.size()) + m_bInited = LTTRUE; + + return(LTTRUE); +} + +void CCredits::Clear() +{ + + m_bInited = LTFALSE; + m_bDone = LTTRUE; + + m_iCredit = 0; + m_nMode = CM_CREDITS; + + s_fSpeed = DEF_CREDITS_SPEED; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CCredits::Term() +{ + // Term all the credits... + + CreditArray::iterator iter = m_Credits.begin(); + while (iter != m_Credits.end()) + { + + (*iter)->Term(); + debug_delete( (*iter) ); + iter++; + + } + + m_Credits.clear(); + + + // Clear all members... + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::HandleInput +// +// PURPOSE: Handler for input +// +// ----------------------------------------------------------------------- // + +void CCredits::HandleInput(int vkey) +{ + // Handle various keys... + + switch (vkey) + { + case VK_UP: + { + if (IsIntro()) break; + IncSpeed(); + break; + } + + case VK_DOWN: + { + if (IsIntro()) break; + DecSpeed(); + break; + } + + case VK_HOME: + { + if (IsIntro()) break; + s_fSpeed = 1.0; + break; + } + + case VK_RETURN: + case VK_SPACE: + case VK_NEXT: + { + if (IsIntro() || IsDemoIntro()) + { + CCredit* pCredit = GetCredit(m_iCredit); + if (pCredit) + { + if (pCredit->GetState() == CS_HOLDIN) + { + pCredit->SetState(CS_FADEOUT); + } + } + } + else + { + AdvanceCredit(CS_HOLDIN); + } + break; + } + + case VK_PRIOR: + { + if (IsIntro() || IsDemoIntro()) break; + BackupCredit(CS_HOLDIN); + break; + } + + case VK_PAUSE: + { + if (IsIntro() || IsDemoIntro()) break; + s_bPause ^= 1; + break; + } + + case VK_ESCAPE: + { +// ExitToMainMenu(); + break; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::ExitToMainMenu +// +// PURPOSE: Exits back to the main menu game state +// +// ----------------------------------------------------------------------- // + +//void CCredits::ExitToMainMenu() +//{ +// m_bDone = LTTRUE; +//} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::Update +// +// PURPOSE: Updates the credits +// +// ----------------------------------------------------------------------- // + +void CCredits::Update() +{ + // Sanity checks... + + if (!g_pLTClient) return; + if (m_Credits.size() <= 0) return; + + + // Clear the screen... + + if (m_bClearScreen) + { + g_pLTClient->ClearScreen(NULL, CLEARSCREEN_SCREEN, 0); + } + + + + // Update the current credit... + + CCredit* pCredit = GetCredit(m_iCredit); + if (!pCredit) return; + + if (pCredit->Update()) + { + AdvanceCredit(); + } +} + +void CCredits::AdvanceCredit(int nState) +{ + m_iCredit++; + if(m_iCredit >= m_Credits.size()) + { + m_iCredit = 0; + m_bDone = LTTRUE; + } + CCredit* pCredit = GetCredit(m_iCredit); + if (pCredit) pCredit->SetState(nState); +} + +void CCredits::BackupCredit(int nState) +{ + m_iCredit--; + if(m_iCredit < 0) + m_iCredit = 0; + + CCredit* pCredit = GetCredit(m_iCredit); + if (pCredit) pCredit->SetState(nState); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCredits::AddCredits +// +// PURPOSE: Adds all the credit objects +// +// ----------------------------------------------------------------------- // + +void CCredits::AddCredits() +{ + // Sanity checks... + + if (!g_pLTClient) return; + + + // Get the credits text buffer... + + char* sName = NULL; + + switch (GetMode()) + { + case CM_INTRO: sName = "INTRO"; break; + case CM_CREDITS: sName = "CREDITS"; break; + case CM_DEMO_INFO: sName = "DEMOINFO"; break; + case CM_DEMO_INTRO: sName = "DEMOINTRO"; break; + case CM_DEMO_MULTI: sName = "DEMOMULTI"; break; + + default: sName = "CREDITS"; + } + + char* sBuf = GetTextBuffer(sName); + if (!sBuf) return; + + + // Parse the credits text... + + char sCredit[1024]; + int i = 0; + + while (*sBuf) + { + + if (*sBuf == '#' && *(sBuf+1) == '#') + { + sCredit[i] = '\0'; + + if (strncmp(sCredit, ">END", 4) == 0) // end? + { + return; + } + + AddCredit(sCredit); + i = 0; + + sBuf+=2; + + while (*sBuf != '\0' && ((*sBuf == '\n') || (*sBuf == '\r'))) sBuf++; + } + else + { + memcpy(&sCredit[i], sBuf, 1); + i++; + sBuf++; + } + } +} + +void CCredits::AddCredit(char* sText) +{ + // Sanity checks... + + if (!g_pLTClient) return; + + + // Add the credit... + + CCredit* pCredit = debug_new(CCredit); + if (!pCredit->Init(sText)) + { + debug_delete(pCredit); + return; + } + + // Inc our credit counter... + + m_Credits.push_back(pCredit); +} + + +CCredit* CCredits::GetCredit(uint16 iCredit) +{ + if (iCredit >= m_Credits.size()) return(NULL); + if (iCredit < 0) return(NULL); + return(m_Credits[iCredit]); +} + + + +// Functions... + +char* GetTextBuffer(char* sName) +{ + //if (s_sBuf) + //{ + //return(s_sBuf); + //} + //else + { + void* hModule; + g_pLTClient->GetEngineHook("cres_hinstance",&hModule); + s_hModule = (HINSTANCE)hModule; + if (!s_hModule) return(NULL); + + s_hRes = FindResource(s_hModule, sName, "TEXT"); + if (!s_hRes) return(NULL); + + s_hGlobal = LoadResource(s_hModule, s_hRes); + if (!s_hGlobal) return(NULL); + + s_sBuf = (char*)LockResource(s_hGlobal); + if (!s_sBuf) return(NULL); + + return(s_sBuf); + } +} diff --git a/Jack/ClientShellDLL/Credits.h b/Jack/ClientShellDLL/Credits.h new file mode 100644 index 00000000..a6c1b231 --- /dev/null +++ b/Jack/ClientShellDLL/Credits.h @@ -0,0 +1,165 @@ +/**************************************************************************** +; +; MODULE: Credits (.H) +; +; PURPOSE: Credits class +; +; HISTORY: 07/24/98 [blg] This file was created +; 07/26/00 [jrg] modified for NOLF +; +; COMMENT: Copyright (c) 1998-2000, Monolith Productions Inc. +; +****************************************************************************/ + + +#ifndef _CREDITS_H_ +#define _CREDITS_H_ + +#include "iltfontmanager.h" +#include "ltguimgr.h" + +// Defines... + +#define ADJ_CREDITS_SPEED 0.2f +#define MAX_CREDITS_SPEED 5.0f +#define MIN_CREDITS_SPEED 0.4f +#define DEF_CREDITS_SPEED 1.0f + +#define CS_START 0 +#define CS_FADEIN 1 +#define CS_HOLDIN 2 +#define CS_FADEOUT 3 +#define CS_HOLDOUT 4 +#define CS_DONE 5 + +#define CM_CREDITS 0 +#define CM_INTRO 1 +#define CM_DEMO_INFO 2 +#define CM_DEMO_INTRO 3 +#define CM_DEMO_MULTI 4 + + +enum CreditPosition +{ + CP_CENTER, + CP_UL, + CP_UR, + CP_LR, + CP_LL +}; + +// Classes... + +class CCredit +{ + // Member functions... + +public: + CCredit() { Clear(); } + ~CCredit() { Term(); } + + LTBOOL Init( char* sBuf); + void Term(); + void Clear(); + + uint16 GetNumStrings() { return(m_Strings.size()); } +// HSTRING GetString(int iString); + int GetState() { return(m_nState); } + + void SetState(int nState); + + void Draw(); + + LTBOOL Update(); + LTBOOL UpdateFadeIn(); + LTBOOL UpdateHoldIn(); + LTBOOL UpdateFadeOut(); + LTBOOL UpdateHoldOut(); + + +private: + LTBOOL AddString(char* sString); + void FormatStrings(); + +private: + + FPStringArray m_Strings; + int m_nState; + LTFLOAT m_fTimer; + LTFLOAT m_fTimerStart; + LTFLOAT m_fAlpha; + LTFLOAT m_fAlphaStart; + LTFLOAT m_fHoldTime; + + LTIntPt m_Pos; + CreditPosition m_ePosition; + CUI_ALIGNMENTTYPE m_hAlign; + + LTBOOL m_bBig; + + uint32 m_Color; + uint32 m_DSColor; + +}; + +class CCredits +{ + // Member functions... + +public: + CCredits() { Clear(); } + ~CCredits() { Term(); } + + LTBOOL Init (int nMode = CM_CREDITS, LTBOOL bClearScreen = LTFALSE); + + void Term(); + void Clear(); + + LTBOOL IsInited() { return(m_bInited); } + LTBOOL IsDone() { return(m_bDone); } + LTBOOL IsCredits() { return(m_nMode == CM_CREDITS); } + LTBOOL IsIntro() { return(m_nMode == CM_INTRO); } + LTBOOL IsDemoIntro() { return(m_nMode == CM_DEMO_INTRO); } + LTBOOL IsClearingScreen() { return(m_bClearScreen); } + + CCredit* GetCredit(uint16 iCredit); + uint16 GetNumCredits() { return(m_Credits.size()); } + int GetMode() { return(m_nMode); } + + void HandleInput(int vkey); + + void AddCredit(char* sText); + + void Update(); + + void IncSpeed() { if (s_fSpeed < MAX_CREDITS_SPEED) s_fSpeed += ADJ_CREDITS_SPEED; } + void DecSpeed() { if (s_fSpeed > MIN_CREDITS_SPEED) s_fSpeed -= ADJ_CREDITS_SPEED; } + +private: + void AddCredits(); + void AdvanceCredit(int nState = CS_START); + void BackupCredit(int nState = CS_START); + +public: + static LTFLOAT GetSpeed() { return(s_fSpeed); } + + + // Member variables... + +private: + int m_nMode; + LTBOOL m_bDone; + LTBOOL m_bInited; + LTBOOL m_bClearScreen; + typedef std::vector CreditArray; + CreditArray m_Credits; + uint16 m_iCredit; + + static LTFLOAT s_fSpeed; +}; + + + +// EOF... + +#endif diff --git a/Jack/ClientShellDLL/CursorMgr.cpp b/Jack/ClientShellDLL/CursorMgr.cpp new file mode 100644 index 00000000..c952e441 --- /dev/null +++ b/Jack/ClientShellDLL/CursorMgr.cpp @@ -0,0 +1,535 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CursorMgr.cpp +// +// PURPOSE : Manage all mouse cursor related functionality +// +// CREATED : 12/3/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "VarTrack.h" +#include "InterfaceMgr.h" +#include "CursorMgr.h" +#include "clientres.h" + +VarTrack g_vtCursorHack; + +CCursorMgr * g_pCursorMgr = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr constructor and destructor +// +// PURPOSE: Set initial values on ctor, force a Term() on dtor +// +// ----------------------------------------------------------------------- // + +CCursorMgr::CCursorMgr() +{ + g_pCursorMgr = this; + + m_bUseCursor = LTFALSE; + m_bUseHardwareCursor = LTFALSE; + m_bInitialized = LTFALSE; + + m_pCursorSprite = LTNULL; + m_pCursorGlowSprite = LTNULL; + m_pCursorBackgroundSprite = LTNULL; +} + +CCursorMgr::~CCursorMgr() +{ + Term(); + + g_pCursorMgr = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::Init +// +// PURPOSE: Init the cursor +// +// ----------------------------------------------------------------------- // + +LTBOOL CCursorMgr::Init() +{ + if (m_bInitialized) + return LTTRUE; + + // The following line was pulled from InterfaceMgr::Init() + g_vtCursorHack.Init(g_pLTClient, "CursorHack", NULL, 0.0f); + + if (g_pLTClient->Cursor()->LoadCursorBitmapResource(MAKEINTRESOURCE(IDC_POINTER), m_hCursor) != LT_OK) + { + DebugCPrint(1,"can't load cursor resource."); + return LTFALSE; + } + + if (g_pLTClient->Cursor()->SetCursor(m_hCursor) != LT_OK) + { + DebugCPrint(1,"can't set cursor."); + return LTFALSE; + } + + UseHardwareCursor( GetConsoleInt("HardwareCursor",0) > 0 && GetConsoleInt("DisableHardwareCursor",0) == 0); + + if (!m_hSurfCursor) + m_hSurfCursor = g_pLTClient->CreateSurfaceFromBitmap("interface\\cursor0.pcx"); + _ASSERT(m_hSurfCursor); + + m_pCursorSprite = LTNULL; // stay with the default cursor until this points to something + m_pCursorGlowSprite = LTNULL; + m_pCursorBackgroundSprite = LTNULL; + + // Uncomment the line below if you want to see an animated cursor! + // UseSprite("Interface\\Menu\\spr\\cursortest.spr"); + + m_bInitialized = LTTRUE; + + m_CursorCenter.x = 16; + m_CursorCenter.y = 16; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::Term +// +// PURPOSE: Free cursor resources +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::Term() +{ + if (!m_bInitialized) + return; + + if (m_hSurfCursor) + { + g_pLTClient->DeleteSurface(m_hSurfCursor); + m_hSurfCursor = LTNULL; + } + // don't need to clean this up, just erase the list. SpriteMgr will clean up. + m_SpriteArray.clear(); + + m_pCursorSprite = LTNULL; + m_pCursorGlowSprite = LTNULL; + m_pCursorBackgroundSprite = LTNULL; + + m_bInitialized = LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::ScheduleReinit(float fHack) +// +// PURPOSE: Set up a delayed initialization +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::ScheduleReinit(float fDelay) +{ + g_vtCursorHack.SetFloat(fDelay); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::CheckForReinit +// +// PURPOSE: Update any hack variables (reducing frame delay counter) +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::CheckForReinit() +{ + // because of driver bugs, we need to wait a frame after reinitializing the renderer and + // reinitialize the cursor + int nCursorHackFrameDelay = (int)g_vtCursorHack.GetFloat(); + if (nCursorHackFrameDelay) + { + nCursorHackFrameDelay--; + g_vtCursorHack.SetFloat((LTFLOAT)nCursorHackFrameDelay); + if (nCursorHackFrameDelay == 1) + Init(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::UseCursor +// +// PURPOSE: Handle activation and deactivation of visible cursor +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::UseCursor(LTBOOL bUseCursor, LTBOOL bLockCursorToCenter) +{ + m_bUseCursor = bUseCursor; + + // New hardware code: + // if the cursor is visible and being used, ONLY enable the hardware + // cursor if no sprite has been specified + if (m_bUseCursor && m_bUseHardwareCursor && !m_pCursorSprite) + { + g_pLTClient->Cursor()->SetCursorMode(CM_Hardware); + // copied the following 4 lines from Init() + if (g_pLTClient->Cursor()->SetCursor(m_hCursor) != LT_OK) + { + DebugCPrint(1,"can't set cursor."); + } + } + else + { + g_pLTClient->Cursor()->SetCursorMode(CM_None); + + // Kill any cursor sprite + KillSprite(); + } + + // Lock or don't lock the cursor to the center of the screen + if(bLockCursorToCenter) + { + g_pLTClient->RunConsoleString("CursorCenter 1"); + } + else + { + g_pLTClient->RunConsoleString("CursorCenter 0"); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::UseHardwareCursor +// +// PURPOSE: (De)activate the Windows cursor drawing routines +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::UseHardwareCursor(LTBOOL bUseHardwareCursor,bool bForce) +{ + m_bUseHardwareCursor = bUseHardwareCursor; + + if (m_bUseHardwareCursor && m_bUseCursor && !m_pCursorSprite) + { + g_pLTClient->Cursor()->SetCursorMode(CM_Hardware,bForce); + } + else + { + g_pLTClient->Cursor()->SetCursorMode(CM_None,bForce); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::Update +// +// PURPOSE: Display a cursor bitmap, if required, or update the sprite coords +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::Update() +{ + static const HLTCOLOR kTrans = SETRGB_T(255,0,255); + LTBOOL bHWC = (GetConsoleInt("HardwareCursor",0) > 0 && GetConsoleInt("DisableHardwareCursor",0) == 0); + + if (bHWC != m_bUseHardwareCursor) + UseHardwareCursor(bHWC); + + if (!m_bUseCursor) + return; + + if (m_bUseHardwareCursor && !m_pCursorSprite) + return; + + LTIntPt CursorPos = g_pInterfaceMgr->GetCursorPos(); + + // If a software cursor is needed but none has been specified, use the default + if (!m_pCursorSprite) + { + // TODO: replace with DrawPrim + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + + g_pLTClient->DrawSurfaceToSurfaceTransparent(g_pLTClient->GetScreenSurface(), m_hSurfCursor, LTNULL, + CursorPos.x, CursorPos.y, kTrans); + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + return; + } + + // Update the sprite coordinates + m_pCursorSprite->SetPosition(CursorPos); + + // update any additional bitmaps + if (m_pCursorGlowSprite) + m_pCursorGlowSprite->SetPosition(CursorPos); + + if (m_pCursorBackgroundSprite) + m_pCursorBackgroundSprite->SetPosition(CursorPos); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::SetCenter +// +// PURPOSE: Specify a new "center" point for any sprites used to +// display the current cursor position +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::SetCenter(int x, int y) +{ + m_CursorCenter.x = x; + m_CursorCenter.y = y; + + if (m_pCursorSprite) + m_pCursorSprite->SetCenter(m_CursorCenter); + + if (m_pCursorGlowSprite) + m_pCursorGlowSprite->SetCenter(m_CursorCenter); + + if (m_pCursorBackgroundSprite) + m_pCursorBackgroundSprite->SetCenter(m_CursorCenter); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::UseSprite +// +// PURPOSE: Attach a sprite to the mouse cursor. Note: only one sprite +// may be used at a time to represent the mouse cursor. You may +// specify a sprite using either a resource file name or a +// pointer to an existing sprite. +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::UseSprite(char * pFile) +{ + KillSprite(); + + // if pFile is null, just turn the sprite off and set the pointer to null + if (!pFile) + return; + + // See if this sprite is in the list + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + // If it is, then set it to "active" + if (!strcmpi(pFile, (*iter)->GetName())) + { + m_pCursorSprite = *iter; + m_pCursorSprite->Show(LTTRUE); + m_pCursorSprite->SetCenter(m_CursorCenter); + UseHardwareCursor(LTFALSE); + return; + } + iter++; + } + + // No sprite exists, so create one using this file name + CScreenSprite * pSprite = g_pScreenSpriteMgr->CreateScreenSprite(pFile, LTFALSE, SPRITELAYER_CURSOR_FOREGROUND); + _ASSERT(pSprite != LTNULL); + + if (!pSprite) + return; + + // Default center coordinates + pSprite->SetCenter(m_CursorCenter); + pSprite->Show(LTTRUE); + m_SpriteArray.push_back(pSprite); + m_pCursorSprite = pSprite; + UseHardwareCursor(LTFALSE); +} + + + +void CCursorMgr::UseSprite(CScreenSprite * pSprite) +{ + if (m_pCursorSprite == pSprite) + return; + + KillSprite(); + + if (!pSprite) + { + return; + } + + + // See if this sprite is in our list. + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + // If it is, then set it to "active" + if (!strcmpi((*iter)->GetName(), pSprite->GetName())) + { + m_pCursorSprite = *iter; + m_pCursorSprite->SetCenter(m_CursorCenter); + m_pCursorSprite->Show(LTTRUE); + UseHardwareCursor(LTFALSE); + return; + } + iter++; + } + + // This sprite has not been used before. Add it to our local array + // ABM 2/20/02 TWEAK add a new sprite that is a DUPLICATE of the one passed in + CScreenSprite * pNewSprite = g_pScreenSpriteMgr->CreateScreenSprite(pSprite->GetName(), LTFALSE, SPRITELAYER_CURSOR_FOREGROUND); + _ASSERT(pNewSprite != LTNULL); + if (!pNewSprite) + return; + + // Default center coordinates + pNewSprite->SetCenter(m_CursorCenter); + pNewSprite->Show(LTTRUE); + m_SpriteArray.push_back(pNewSprite); + m_pCursorSprite = pNewSprite; + UseHardwareCursor(LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::UseGlowSprite +// +// PURPOSE: Attach an additive glow sprite to overlay the current sprite +// must be specified by filename, and must be used AFTER setting +// the bitmap +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::UseGlowSprite(char * pSpriteFile) +{ + if (m_pCursorGlowSprite) + { + m_pCursorGlowSprite->Show(LTFALSE); + m_pCursorGlowSprite = LTNULL; + } + + // if pFile is null, just turn the sprite off and set the pointer to null + if (!pSpriteFile) + return; + + // See if this sprite is in the list + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + // If it is, then set it to "active" + if (!strcmpi(pSpriteFile, (*iter)->GetName())) + { + m_pCursorGlowSprite = *iter; + m_pCursorGlowSprite->SetCenter(m_CursorCenter); + m_pCursorGlowSprite->Show(LTTRUE); + UseHardwareCursor(LTFALSE); + return; + } + iter++; + } + + // No sprite exists, so create one using this file name + CScreenSprite * pSprite = g_pScreenSpriteMgr->CreateScreenSprite(pSpriteFile, LTFALSE, SPRITELAYER_CURSOR_ADDITIVE); + _ASSERT(pSprite != LTNULL); + + if (!pSprite) + return; + + // Default center coordinates + pSprite->SetCenter(m_CursorCenter); + pSprite->SetAdditive(LTTRUE); + pSprite->Show(LTTRUE); + m_SpriteArray.push_back(pSprite); + m_pCursorGlowSprite = pSprite; + UseHardwareCursor(LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::UseBackgroundSprite +// +// PURPOSE: Attach a background image sprite under the current sprite +// must be specified by filename, and must be used AFTER setting +// the bitmap +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::UseBackgroundSprite(char * pSpriteFile) +{ + if (m_pCursorBackgroundSprite) + { + m_pCursorBackgroundSprite->Show(LTFALSE); + m_pCursorBackgroundSprite = LTNULL; + } + + // if pFile is null, just turn the sprite off and set the pointer to null + if (!pSpriteFile) + return; + + // See if this sprite is in the list + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + // If it is, then set it to "active" + if (!strcmpi(pSpriteFile, (*iter)->GetName())) + { + m_pCursorBackgroundSprite = *iter; + m_pCursorBackgroundSprite->SetCenter(m_CursorCenter); + m_pCursorBackgroundSprite->Show(LTTRUE); + UseHardwareCursor(LTFALSE); + return; + } + iter++; + } + + // No sprite exists, so create one using this file name + CScreenSprite * pSprite = g_pScreenSpriteMgr->CreateScreenSprite(pSpriteFile, LTFALSE, SPRITELAYER_CURSOR_BACKGROUND); + _ASSERT(pSprite != LTNULL); + + if (!pSprite) + return; + + // Default center coordinates + pSprite->SetCenter(m_CursorCenter); + pSprite->Show(LTTRUE); + m_SpriteArray.push_back(pSprite); + m_pCursorBackgroundSprite = pSprite; + UseHardwareCursor(LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCursorMgr::KillSprite +// +// PURPOSE: Disassociate a sprite from the mouse cursor +// +// ----------------------------------------------------------------------- // + +void CCursorMgr::KillSprite() +{ + if (m_pCursorSprite) + { + m_pCursorSprite->Show(LTFALSE); + m_pCursorSprite = LTNULL; + } + + if (m_pCursorGlowSprite) + { + m_pCursorGlowSprite->Show(LTFALSE); + m_pCursorGlowSprite = LTNULL; + } + + if (m_pCursorBackgroundSprite) + { + m_pCursorBackgroundSprite->Show(LTFALSE); + m_pCursorBackgroundSprite = LTNULL; + } + + UseHardwareCursor(LTTRUE); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/CursorMgr.h b/Jack/ClientShellDLL/CursorMgr.h new file mode 100644 index 00000000..6ac1e048 --- /dev/null +++ b/Jack/ClientShellDLL/CursorMgr.h @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CursorMgr.h +// +// PURPOSE : Manage all mouse cursor related functionality +// +// CREATED : 12/3/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CURSOR_MGR_H__ +#define __CURSOR_MGR_H__ + +#include "iltcursor.h" +#include "ScreenSpriteMgr.h" + + +class CCursorMgr; +extern CCursorMgr* g_pCursorMgr; + +class CCursorMgr +{ +public: + CCursorMgr(); + ~CCursorMgr(); + + LTBOOL Init(); + void Term(); + + void ScheduleReinit(float fDelay); + void CheckForReinit(); + + void UseHardwareCursor(LTBOOL bUseHardwareCursor, bool bForce = false); + void UseCursor(LTBOOL bUseCursor, LTBOOL bLockCursorToCenter = LTFALSE); + void Update(); + + void SetCenter(int x, int y); + + // Some functions for controlling the appearance of the cursor + void UseSprite(CScreenSprite * pSprite); + + void UseSprite(char * pFile); // can be spr or dtx, returns ID + void UseGlowSprite(char * pFile); + void UseBackgroundSprite(char * pFile); + + void KillSprite(); + + // TODO at some point in the future, we can allow multiple sprites and other FX here. + +private: + + LTBOOL m_bInitialized; + LTBOOL m_bUseCursor; + LTBOOL m_bUseHardwareCursor; + + LTIntPt m_CursorCenter; + + // old-style cursor + HLTCURSOR m_hCursor; + HSURFACE m_hSurfCursor; + + ScreenSpriteArray m_SpriteArray; + CScreenSprite * m_pCursorSprite; + CScreenSprite * m_pCursorGlowSprite; + CScreenSprite * m_pCursorBackgroundSprite; +}; + +#endif // __CURSOR_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DamageFXMgr.cpp b/Jack/ClientShellDLL/DamageFXMgr.cpp new file mode 100644 index 00000000..3f33d5be --- /dev/null +++ b/Jack/ClientShellDLL/DamageFXMgr.cpp @@ -0,0 +1,1443 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DamageFXMgr.cpp +// +// PURPOSE : Damage FX Manager class - Implementation +// +// CREATED : 1/20/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "DamageFXMgr.h" + #include "VarTrack.h" + #include "SoundMgr.h" + #include "HUDMgr.h" + #include "GameClientShell.h" + #include "MsgIDs.h" + #include "CMoveMgr.h" + #include "FXButeMgr.h" + #include "VehicleMgr.h" + #include "ClientWeaponMgr.h" + +// +// Defines... +// + + #define DMGFXMGR_TAG "DamageFX" + + #define DMGFXMGR_NAME "Name" + #define DMGFXMGR_DAMAGETYPE "DamageType" + #define DMGFXMGR_HUDICON "HudIcon" + #define DMGFXMGR_STARTSND "StartSound" + #define DMGFXMGR_LOOPSND "LoopSound" + #define DMGFXMGR_TINTCOLOR "TintColor" + #define DMGFXMGR_TINTRAMPUPTIME "TintRampUpTime" + #define DMGFXMGR_TINTRAMPDOWNTIME "TintRampDownTime" + #define DMGFXMGR_TINTOFFTIME "TintOffTime" + #define DMGFXMGR_TINTONTIME "TintOnTime" + #define DMGFXMGR_FADETIME "FadeTime" + #define DMGFXMGR_ROTMAX "RotationMax" + #define DMGFXMGR_ROTSPEED "RotationSpeed" + #define DMGFXMGR_MINFXPERCENT "MinFXPercent" + #define DMGFXMGR_FOVMAX "FOVMax" + #define DMGFXMGR_FOVXSPEED "FOVXSpeed" + #define DMGFXMGR_FOVYSPEED "FOVYSpeed" + #define DMGFXMGR_LIGHTSCALESPEED "LightScaleSpeed" + #define DMGFXMGR_LIGHTSCALECOLOR "LightScaleColor" + #define DMGFXMGR_ALLOWMOVEMENT "AllowMovement" + #define DMGFXMGR_ALLOWINPUT "AllowInput" + #define DMGFXMGR_NUMJUMPSTOESCAPE "NumJumpsToEscape" + #define DMGFXMGR_FXNAME "FXName" + #define DMGFXMGR_HEALTHFX "TakingHealthFXName" + #define DMGFXMGR_ARMORFX "TakingArmorFXName" + #define DMGFXMGR_INSTANTEFFECT "InstantEffect" + #define DMGFXMGR_3RDPERSONFXNAME "3rdPersonFXName" + #define DMGFXMGR_3RDPERSONINSTFXNAME "3rdPersonInstantFXName" + #define DMGFXMGR_3RDPERSONDEATHFXNAME "3rdPersonDeathFXName" + #define DMGFXMGR_BODYFXNAME "BodyFXName" + #define DMGFXMGR_ATTACHCAMERATOANI "AttachCameraToAnimation" + #define DMGFXMGR_SHOWCLIENTMODEL "ShowLocalClientModel" + #define DMGFXMGR_ANIMATIONCONTROLSFX "AnimationControlsFX" + + + #define DM_SPRINKLES_TAG "Sprinkles" + + #define KEY_DAMAGEFX "DAMAGE_FX_KEY" + + +// +// Globals... +// + + CDamageFXMgr *g_pDamageFXMgr = LTNULL; + + static char s_aTagName[30]; + static char s_aAttributeName[30]; + VarTrack g_vtEnableDamageFX; + + +// +// Externs... +// + + extern VarTrack g_vtFOVXNormal; + extern VarTrack g_vtFOVYNormal; + extern CGameClientShell* g_pGameClientShell; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::CDamageFXMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CDamageFXMgr::CDamageFXMgr() +: CGameButeMgr ( ), + m_vDamageFXTintColor ( 0.0f, 0.0f, 0.0f ), + m_bTintColorChanged ( LTFALSE ), + m_vDamageFXLightScaleColor ( 0.0f, 0.0f, 0.0f ), + m_bLightScaleColorChanged ( false ), + m_bAllowMovement ( true ), + m_nDisableWeaponCounts ( 0 ) +{ + m_lstDamageFx.Init( LTTRUE ); + m_lstActiveDmgFx.Init( LTFALSE ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::~CDamageFXMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CDamageFXMgr::~CDamageFXMgr() +{ + Term(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::Term +// +// PURPOSE: Clean up after ourselfs +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::Term() +{ + g_pDamageFXMgr = LTNULL; + + m_lstDamageFx.Clear(); + m_lstActiveDmgFx.Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CDamageFXMgr::Init(const char* szAttributeFile) +{ + if( g_pDamageFXMgr || !szAttributeFile ) return LTFALSE; + if( !Parse( szAttributeFile )) return LTFALSE; + + // Set the global ptr + + g_pDamageFXMgr = this; + + // Read in the properties for each Damage FX type... + + int nNum = 0; + sprintf( s_aTagName, "%s%d", DMGFXMGR_TAG, nNum ); + + while( m_buteMgr.Exist( s_aTagName )) + { + DAMAGEFX *pDamageFX = debug_new( DAMAGEFX ); + + if( pDamageFX && pDamageFX->Init( m_buteMgr, s_aTagName )) + { + // Set the ID and add it on the list... + + pDamageFX->m_nID = nNum; + m_lstDamageFx.AddTail( pDamageFX ); + } + else + { + debug_delete( pDamageFX ); + return LTFALSE; + } + + ++nNum; + sprintf( s_aTagName, "%s%d", DMGFXMGR_TAG, nNum ); + } + + g_vtEnableDamageFX.Init( g_pLTClient, "EnableDamageFX", LTNULL, 1.0f ); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: *CDamageFXMgr::GetDamageFX +// +// PURPOSE: Get the specified DamageFX record +// +// ----------------------------------------------------------------------- // + +DAMAGEFX *CDamageFXMgr::GetDamageFX( uint32 nID ) +{ + DAMAGEFX **pCur = LTNULL; + + pCur = m_lstDamageFx.GetItem( TLIT_FIRST ); + + while( pCur ) + { + if( *pCur && (*pCur)->m_nID == nID ) + { + return *pCur; + } + + pCur = m_lstDamageFx.GetItem( TLIT_NEXT ); + } + + return LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: *CDamageFXMgr::GetDamageFX +// +// PURPOSE: Get the specified DamageFX record +// +// ----------------------------------------------------------------------- // + +DAMAGEFX *CDamageFXMgr::GetDamageFX( char *pName ) +{ + DAMAGEFX **pCur = LTNULL; + + pCur = m_lstDamageFx.GetItem( TLIT_FIRST ); + + while( pCur ) + { + if( *pCur && (*pCur)->m_szName[0] && (!_stricmp( (*pCur)->m_szName, pName )) ) + { + return *pCur; + } + + pCur = m_lstDamageFx.GetItem( TLIT_NEXT ); + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::Update +// +// PURPOSE: Update all active damage fx +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::Update() +{ + if( g_vtEnableDamageFX.GetFloat() < 1.0f ) + { + DAMAGEFX *pDamageFX = GetFirstDamageFX(); + while( pDamageFX ) + { + pDamageFX->m_vtTestFX.SetFloat( 0.0f ); + + pDamageFX = GetNextDamageFX(); + } + + Clear(); + return; + } + + //if we are using an external camera, make sure to clear anything that might be causing rendering + //issues + if(g_pPlayerMgr->IsUsingExternalCamera()) + { + LTVector vNoTint(0.0f, 0.0f, 0.0f); + g_pGameClientShell->GetScreenTintMgr()->Set( TINT_DAMAGEFX, &vNoTint ); + + g_pGameClientShell->GetLightScaleMgr()->ClearLightScale(CLightScaleMgr::eLightScaleDamage); + + //and we don't need to update + return; + } + + //don't bother updating if we are paused, or using an alternate camera + if(!g_pInterfaceMgr->IsInGame( ) ||g_pGameClientShell->IsGamePaused()) + return; + + m_bTintColorChanged = LTFALSE; + m_vDamageFXTintColor.Init(); + + m_bLightScaleColorChanged = LTFALSE; + m_vDamageFXLightScaleColor.Init( 1.0f, 1.0f, 1.0f ); + + m_bAllowMovement = true; + m_bAllowInput = true; + bool bHadDisableWeaponCounts = ( m_nDisableWeaponCounts > 0 ); + m_nDisableWeaponCounts = 0; + + // Update all active Damage FX... + + DAMAGEFX *pDamageFX = GetFirstActiveFX(); + while( pDamageFX ) + { + pDamageFX->Update(g_pGameClientShell->GetFrameTime()); + + pDamageFX = GetNextActiveFX(); + } + + if(m_bTintColorChanged) + { + g_pGameClientShell->GetScreenTintMgr()->Set( TINT_DAMAGEFX, &m_vDamageFXTintColor ); + } + else + { + LTVector vNoTint(0.0f, 0.0f, 0.0f); + g_pGameClientShell->GetScreenTintMgr()->Set( TINT_DAMAGEFX, &vNoTint ); + } + + if( m_bLightScaleColorChanged ) + g_pGameClientShell->GetLightScaleMgr()->SetLightScale( m_vDamageFXLightScaleColor, CLightScaleMgr::eLightScaleDamage ); + else + g_pGameClientShell->GetLightScaleMgr()->ClearLightScale(CLightScaleMgr::eLightScaleDamage); + + // Check if we should try to enable our weapons. + if( m_nDisableWeaponCounts == 0 && bHadDisableWeaponCounts ) + { + g_pPlayerMgr->GetClientWeaponMgr()->EnableWeapons(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::Clear +// +// PURPOSE: Stop every active damage fx +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::Clear() +{ + // Stop all Damage FX... + + DAMAGEFX *pDamageFX = GetFirstDamageFX(); + while( pDamageFX ) + { + pDamageFX->Stop( LTFALSE ); + + pDamageFX = GetNextDamageFX(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::IsDamageActive +// +// PURPOSE: Given damage flags, find if we are taking damage of that type +// +// ----------------------------------------------------------------------- // + +LTBOOL CDamageFXMgr::IsDamageActive( DamageFlags nDmgFlag ) +{ + // Detrimine if any damage fx related to the passed in flags are active... + + DAMAGEFX *pDamageFX = GetFirstActiveFX(); + while( pDamageFX ) + { + if( nDmgFlag & pDamageFX->m_nDamageFlag ) + { + return LTTRUE; + } + + pDamageFX = GetNextActiveFX(); + } + + return LTFALSE; +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::IsFOVAffected +// +// PURPOSE: Are any of our active damage FX affecting to camera FOV +// +// ----------------------------------------------------------------------- // + +bool CDamageFXMgr::IsFOVAffected() +{ + // Detrimine if any damage fx related to the passed in flags are active... + + DAMAGEFX *pDamageFX = GetFirstActiveFX(); + while( pDamageFX ) + { + if( pDamageFX->m_fFOVMax > 0.0f ) + { + return true; + } + + pDamageFX = GetNextActiveFX(); + } + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::SetDamageFXTintColor +// +// PURPOSE: Set the new tint color for the damage fx +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::SetDamageFXTintColor( LTVector &vCol, bool bForce ) +{ + if( m_bTintColorChanged ) + { + m_vDamageFXTintColor = vCol; + g_pGameClientShell->GetScreenTintMgr()->Set( TINT_DAMAGEFX, &m_vDamageFXTintColor ); + } + else if( m_vDamageFXTintColor != vCol ) + { + m_vDamageFXTintColor.x = Max( m_vDamageFXTintColor.x, vCol.x ); + m_vDamageFXTintColor.y = Max( m_vDamageFXTintColor.y, vCol.y ); + m_vDamageFXTintColor.z = Max( m_vDamageFXTintColor.z, vCol.z ); + + m_bTintColorChanged = LTTRUE; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::SetDamageFXLightScale +// +// PURPOSE: Set the new light scale color for the damage fx +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::SetDamageFXLightScale( LTVector &vCol, bool bForce ) +{ + //if the color is just bright white, don't set it + if(vCol.NearlyEquals(LTVector(1.0f, 1.0f, 1.0f), 0.01f)) + return; + + if( bForce ) + { + m_vDamageFXLightScaleColor = vCol; + m_bLightScaleColorChanged = LTTRUE; + } + else + { + m_vDamageFXLightScaleColor.x = Min( m_vDamageFXLightScaleColor.x, vCol.x ); + m_vDamageFXLightScaleColor.y = Min( m_vDamageFXLightScaleColor.y, vCol.y ); + m_vDamageFXLightScaleColor.z = Min( m_vDamageFXLightScaleColor.z, vCol.z ); + m_bLightScaleColorChanged = LTTRUE; + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::SetDamageFXAllowMovement +// +// PURPOSE: Sets weather or not any FX doesn't allow movement. +// +// ----------------------------------------------------------------------- // + +void CDamageFXMgr::SetDamageFXMovementAndInput( bool bMove, bool bInput, bool bAllowWeapons ) +{ + m_bAllowMovement = bMove; + m_bAllowInput = bInput; + if( !bAllowWeapons ) + m_nDisableWeaponCounts++; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDamageFXMgr::OnModelKey +// +// PURPOSE: Handle model key +// +// ----------------------------------------------------------------------- // + +bool CDamageFXMgr::OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ) +{ + if (!hObj || !pArgs || !pArgs->argv || pArgs->argc == 0) return false; + + char* pKey = pArgs->argv[0]; + if (!pKey) return false; + + if( stricmp( pKey, KEY_DAMAGEFX ) == 0 ) + { + // Start or Stop FX if they are controlled by the animation... + + if( (pArgs->argc > 1) && pArgs->argv[1] ) + { + if( stricmp( pArgs->argv[1], "START") == 0 ) + { + DAMAGEFX *pDamageFX = GetFirstActiveFX(); + while( pDamageFX ) + { + if( pDamageFX->m_bAnimationControlsFX ) + { + pDamageFX->StartSoundAndVisuals(); + } + + pDamageFX = GetNextActiveFX(); + } + } + else if( stricmp( pArgs->argv[1], "STOP" ) == 0 ) + { + DAMAGEFX *pDamageFX = GetFirstActiveFX(); + while( pDamageFX ) + { + if( pDamageFX->m_bAnimationControlsFX ) + { + pDamageFX->StopSoundAndVisuals(); + } + + pDamageFX = GetNextActiveFX(); + } + } + } + + return true; + } + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::DAMAGEFX +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +DAMAGEFX::DAMAGEFX() +: m_nID ( DMGFXMGR_INVALID_ID ), + m_nDamageFlag ( 0 ), + m_szName ( LTNULL ), + m_szIcon ( LTNULL ), + m_szStartSound ( LTNULL ), + m_szLoopSound ( LTNULL ), + m_szFXName ( LTNULL ), + m_szTakingHealthFXName ( LTNULL ), + m_szTakingArmorFXName ( LTNULL ), + m_sz3rdPersonFXName ( LTNULL ), + m_sz3rdPersonInstFXName ( LTNULL ), + m_sz3rdPersonDeathFXName( LTNULL ), + m_szBodyFXName ( LTNULL ), + m_vMaxTintColor ( 0.0f, 0.0f, 0.0f ), + m_vCurTintColor ( 0.0f, 0.0f, 0.0f ), + m_TintDir ( DAMAGEFX_TINT_RAMPUP ), + m_fTintRampUpTm ( 0.0f ), + m_fTintRampDownTm ( 0.0f ), + m_fTintOffTm ( 0.0f ), + m_fTintOnTm ( 0.0f ), + m_fRotMax ( 0.0f ), + m_fRotSpeed ( 0.0f ), + m_fRotDir ( 0.0f ), + m_fOffsetRot ( 0.0f ), + m_fMaxRot ( 0.0f ), + m_fMinRot ( 0.0f ), + m_fMoveMult ( 0.0f ), + m_fMinFXPercent ( 0.0f ), + m_fFOVXSpeed ( 0.0f ), + m_fFOVYSpeed ( 0.0f ), + m_fFOVMax ( 0.0f ), + m_fFOVXOffset ( 0.0f ), + m_fFOVYOffset ( 0.0f ), + m_fFOVXDir ( 1.0f ), + m_fFOVYDir ( 1.0f ), + m_fLightScale ( 0.0f ), + m_fLightScaleSpeed ( 0.0f ), + m_vLightScaleColor ( 0.0f, 0.0f, 0.0f ), + m_bActive ( LTFALSE ), + m_bFade ( LTFALSE ), + m_fFadeTm ( 0.0f ), + m_bAllowMovement ( true ), + m_bAllowInput ( true ), + m_bAllowWeapons ( true ), + m_hLoopSound ( LTNULL ), + m_pSprinkles ( LTNULL ), + m_nNumSprinkles ( 0 ), + m_bJumpRequested ( LTFALSE ), + m_nNumJumps ( 0 ), + m_nJumpsToEscape ( -1 ), + m_bAttachCameraToAni ( LTFALSE ), + m_bShowClientModel ( LTFALSE ), + m_bAnimationControlsFX ( LTFALSE ), + m_bUpdateSoundAndVisuals( LTFALSE ), + m_fElapsedTime ( 0.0f ), + m_fEndTime ( 0.0f ) +{ + for( int i = 0; i < MAX_SPRINKLE_TYPES; ++i ) + { + m_aszSprinkleName[i] = LTNULL; + } + + m_szVarTrackName[0] = '\0'; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::~DAMAGEFX +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +DAMAGEFX::~DAMAGEFX() +{ + debug_deletea( m_szName ); + debug_deletea( m_szIcon ); + debug_deletea( m_szStartSound ); + debug_deletea( m_szLoopSound ); + debug_deletea( m_szFXName ); + debug_deletea( m_szTakingHealthFXName ); + debug_deletea( m_szTakingArmorFXName ); + debug_deletea( m_sz3rdPersonFXName ); + debug_deletea( m_sz3rdPersonInstFXName ); + debug_deletea( m_sz3rdPersonDeathFXName ); + debug_deletea( m_szBodyFXName ); + + if( m_hLoopSound ) + { + g_pLTClient->SoundMgr()->KillSound( m_hLoopSound ); + m_hLoopSound = LTNULL; + } + + for( int i = 0; i < MAX_SPRINKLE_TYPES; ++i ) + { + debug_deletea( m_aszSprinkleName[i] ); + } + + DestroySprinkles(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::Init +// +// PURPOSE: Build the DamageFX struct +// +// ----------------------------------------------------------------------- // + +LTBOOL DAMAGEFX::Init( CButeMgr &ButeMgr, char *aTagName ) +{ + if( !aTagName ) return LTFALSE; + + m_szName = GetString( ButeMgr, aTagName, DMGFXMGR_NAME, DMGFXMGR_MAX_NAME_LEN ); + m_szIcon = GetString( ButeMgr, aTagName, DMGFXMGR_HUDICON, DMGFXMGR_MAX_PATH ); + m_szStartSound = GetString( ButeMgr, aTagName, DMGFXMGR_STARTSND, DMGFXMGR_MAX_PATH ); + m_szLoopSound = GetString( ButeMgr, aTagName, DMGFXMGR_LOOPSND, DMGFXMGR_MAX_PATH ); + m_szFXName = GetString( ButeMgr, aTagName, DMGFXMGR_FXNAME, DMGFXMGR_MAX_NAME_LEN ); + m_szTakingHealthFXName = GetString( ButeMgr, aTagName, DMGFXMGR_HEALTHFX, DMGFXMGR_MAX_NAME_LEN ); + m_szTakingArmorFXName = GetString( ButeMgr, aTagName, DMGFXMGR_ARMORFX, DMGFXMGR_MAX_NAME_LEN ); + m_sz3rdPersonFXName = GetString( ButeMgr, aTagName, DMGFXMGR_3RDPERSONFXNAME, DMGFXMGR_MAX_NAME_LEN ); + m_sz3rdPersonInstFXName = GetString( ButeMgr, aTagName, DMGFXMGR_3RDPERSONINSTFXNAME, DMGFXMGR_MAX_NAME_LEN ); + m_sz3rdPersonDeathFXName = GetString( ButeMgr, aTagName, DMGFXMGR_3RDPERSONDEATHFXNAME, DMGFXMGR_MAX_NAME_LEN ); + m_szBodyFXName = GetString( ButeMgr, aTagName, DMGFXMGR_BODYFXNAME, DMGFXMGR_MAX_NAME_LEN ); + + m_nNumSprinkles = 0; + sprintf( s_aAttributeName, "%s%d", DM_SPRINKLES_TAG, m_nNumSprinkles ); + while( ButeMgr.Exist( aTagName, s_aAttributeName ) && m_nNumSprinkles < MAX_SPRINKLE_TYPES ) + { + m_aszSprinkleName[m_nNumSprinkles] = GetString( ButeMgr, aTagName, s_aAttributeName, DMGFXMGR_MAX_NAME_LEN ); + + ++m_nNumSprinkles; + sprintf( s_aAttributeName, "%s%d", DM_SPRINKLES_TAG, m_nNumSprinkles ); + } + + m_fTintRampUpTm = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_TINTRAMPUPTIME ); + m_fTintRampDownTm = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_TINTRAMPDOWNTIME ); + m_fTintOffTm = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_TINTOFFTIME ); + m_fTintOnTm = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_TINTONTIME ); + m_fFadeTm = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_FADETIME ); + + m_vMaxTintColor = ButeMgr.GetVector( aTagName, DMGFXMGR_TINTCOLOR ); + m_vMaxTintColor *= MATH_ONE_OVER_255; + + m_fRotMax = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_ROTMAX ); + m_fRotSpeed = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_ROTSPEED ); + + m_fMinFXPercent = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_MINFXPERCENT ); + m_fMinFXPercent = LTCLAMP( m_fMinFXPercent, 0.0f, 1.0f ); + + m_fFOVMax = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_FOVMAX ); + m_fFOVXSpeed = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_FOVXSPEED ); + m_fFOVYSpeed = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_FOVYSPEED ); + + m_fLightScaleSpeed = (LTFLOAT)ButeMgr.GetDouble( aTagName, DMGFXMGR_LIGHTSCALESPEED ); + m_vLightScaleColor = ButeMgr.GetVector( aTagName, DMGFXMGR_LIGHTSCALECOLOR ); + m_vLightScaleColor *= MATH_ONE_OVER_255; + + m_bAllowMovement = !!ButeMgr.GetInt( aTagName, DMGFXMGR_ALLOWMOVEMENT ); + m_bAllowInput = !!ButeMgr.GetInt( aTagName, DMGFXMGR_ALLOWINPUT ); + + m_nJumpsToEscape = ButeMgr.GetInt( aTagName, DMGFXMGR_NUMJUMPSTOESCAPE ); + + m_bInstantEffect = (LTBOOL)ButeMgr.GetInt( aTagName, DMGFXMGR_INSTANTEFFECT, 0 ); + + m_bAttachCameraToAni= (LTBOOL)ButeMgr.GetInt( aTagName, DMGFXMGR_ATTACHCAMERATOANI, 0 ); + m_bShowClientModel = (LTBOOL)ButeMgr.GetInt( aTagName, DMGFXMGR_SHOWCLIENTMODEL, 0 ); + + m_bAnimationControlsFX = (LTBOOL)ButeMgr.GetInt( aTagName, DMGFXMGR_ANIMATIONCONTROLSFX, 0 ); + + // Set up the flag for testing against this DamageFX... + + int nDamageType = StringToDamageType( ButeMgr.GetString( aTagName, DMGFXMGR_DAMAGETYPE )); + m_nDamageFlag = DamageFlags( (DamageFlags)1 << (DamageFlags)nDamageType ); + + // Init the VarTrack for easy testing... + + sprintf( m_szVarTrackName, "Test%sFX", m_szName ); + + m_vtTestFX.Init( g_pLTClient, m_szVarTrackName, LTNULL, 0.0f ); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::Start +// +// PURPOSE: Start the appropriate fx for either the local or non local characters... +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::Start( ) +{ + if( m_bActive || !g_pMoveMgr || !g_pHUDMgr || !g_pDamageFXMgr || !g_pClientFXMgr || g_pPlayerMgr->IsPlayerDead() ) + return; + + m_bActive = LTTRUE; + + // Add ourselves to the global active list + + g_pDamageFXMgr->m_lstActiveDmgFx.Add( this ); + + // Update the hud icon + + g_pHUDMgr->QueueUpdate( kHUDDamage ); + + // Should we start sound and visual fx now or wait for the animation... + + m_bUpdateSoundAndVisuals = !m_bAnimationControlsFX || g_pMoveMgr->IsBodyOnLadder(); + if( m_bUpdateSoundAndVisuals ) + { + StartSoundAndVisuals(); + } + + m_fFOVXOffset = 0.0f; + m_fFOVYOffset = 0.0f; + m_fLightScale = 0.0f; + + // Clear our jump count + + m_nNumJumps = 0; + + m_bAllowWeapons = true; + + if( !g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() ) + { + if( m_bShowClientModel ) + g_pCommonLT->SetObjectFlags( g_pLTClient->GetClientObject(), OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + + if( m_bAttachCameraToAni ) + { + g_pPlayerMgr->AttachCameraToHead( true, IsMultiplayerGame() ); + m_bAllowWeapons = false; + g_pPlayerMgr->GetClientWeaponMgr()->DisableWeapons(); + + // Send message to server so all clients can stop the sound... + // An id of invalid means stop + + IClientWeaponBase *pWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if( pWeapon ) + { + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_SOUND_LOOP ); + cMsg.Writeuint8( PSI_INVALID ); + cMsg.Writeuint8( pWeapon->GetWeaponId() ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + } + + if (!m_bAllowInput) + g_pPlayerMgr->AllowPlayerMovement(LTFALSE); + + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::Stop +// +// PURPOSE: Stop the appropriate fx for either the local or non local characters... +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::Stop( LTBOOL bFade /* = LTTRUE */ ) +{ + if( !m_bActive || !g_pPlayerMgr || !g_pClientFXMgr ) + return; + + m_bActive = LTFALSE; + m_bUpdateSoundAndVisuals = LTFALSE; + + if( !m_bAnimationControlsFX || g_pPlayerMgr->IsPlayerDead() || g_pMoveMgr->IsBodyOnLadder() ) + { + StopSoundAndVisuals( bFade ); + } + + // We no longer want to see the model + + if( m_bShowClientModel ) + g_pCommonLT->SetObjectFlags( g_pLTClient->GetClientObject(), OFT_Flags, 0, FLAG_VISIBLE ); + + if( m_bAttachCameraToAni ) + { + // Reset the player movement before detaching the camera from the head... + + if (!m_bAllowInput) + g_pPlayerMgr->AllowPlayerMovement(LTTRUE); + + g_pPlayerMgr->AttachCameraToHead( false ); + + if( !m_bAllowWeapons ) + g_pPlayerMgr->GetClientWeaponMgr()->EnableWeapons(); + + IClientWeaponBase *pWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetCurrentClientWeapon(); + if( pWeapon ) + { + pWeapon->ClearFiring(); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::Update +// +// PURPOSE: Update an active DamageFX +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::Update( float fElapsedTime ) +{ + if( !g_pPlayerMgr || !g_pMoveMgr || !g_pDamageFXMgr ) + return; + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if( !hCamera ) + return; + + //update our elapsed time + m_fElapsedTime += fElapsedTime; + + // ABM 5/6/02 Quick check on non-looping FX to see if they need to terminate + if (m_bInstantEffect && m_DamageFXInstance.IsValid()) + { + if (m_DamageFXInstance.GetInstance()->IsDone()) + { + Stop(); + return; + } + } + + // If we want to see the model make sure to continualy set it visible (it gets set invisible elsewhere)... + + if( m_bActive && m_bShowClientModel && !g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() ) + g_pCommonLT->SetObjectFlags( g_pLTClient->GetClientObject(), OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + + // See if we can free ourselfs by jumping (Glue Bomb, Bear Trap)... + + if( (m_nJumpsToEscape > 0) && m_bActive ) + { + if( g_pLTClient->IsCommandOn( COMMAND_ID_JUMP ) && !m_bJumpRequested ) + { + // Tap + + m_bJumpRequested = LTTRUE; + ++m_nNumJumps; + } + else if( !g_pLTClient->IsCommandOn( COMMAND_ID_JUMP )) + { + // Ok the player let go of the jump key... let them tap again + + m_bJumpRequested = LTFALSE; + } + + if( m_nNumJumps >= m_nJumpsToEscape ) + { + // End the effect on the client + + Stop(); + + // Send message to server to clear progressive damage. + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_CLEAR_PROGRESSIVE_DAMAGE ); + cMsg.Writeuint64( m_nDamageFlag ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + } + } + + LTFLOAT fMove = g_pPlayerMgr->GetMoveMgr()->GetMovementPercent(); + LTFLOAT fFrameTime = g_pGameClientShell->GetFrameTime(); + + LTFLOAT fFovX, fFovY; + g_pLTClient->GetCameraFOV(hCamera, &fFovX, &fFovY); + + m_fMoveMult = m_fMinFXPercent + (fMove * (1.0f - m_fMinFXPercent)); + + LTRotation rot; + g_pLTClient->GetObjectRotation( hCamera, &rot ); + LTVector vF = rot.Forward(); + + if( m_bActive && m_bUpdateSoundAndVisuals ) + { + // FOV + + LTFLOAT fXSpeed = m_fFOVXSpeed * fFrameTime * m_fFOVXDir; + LTFLOAT fYSpeed = m_fFOVYSpeed * fFrameTime * m_fFOVYDir; + + m_fFOVXOffset += fXSpeed; + if( m_fFOVXOffset > m_fFOVMax ) + { + m_fFOVXOffset = m_fFOVMax; + m_fFOVXDir = -m_fFOVXDir; + } + else if( m_fFOVXOffset < -m_fFOVMax ) + { + m_fFOVXOffset = -m_fFOVMax; + m_fFOVXDir = -m_fFOVXDir; + } + + + m_fFOVYOffset += fYSpeed; + if( m_fFOVYOffset > m_fFOVMax ) + { + m_fFOVYOffset = m_fFOVMax; + m_fFOVYDir = -m_fFOVYDir; + } + else if( m_fFOVYOffset < -m_fFOVMax ) + { + m_fFOVYOffset = -m_fFOVMax; + m_fFOVYDir = -m_fFOVYDir; + } + + + // ROTATION + + LTFLOAT fRotSpeed = m_fRotSpeed * fFrameTime * m_fRotDir; + + m_fOffsetRot += fRotSpeed; + if( m_fOffsetRot >= m_fMaxRot ) + { + m_fOffsetRot = m_fMaxRot; + m_fRotDir = -1.0f; + m_fMinRot = -m_fRotMax * GetRandom( 0.5f, 1.0f ); + } + else if( m_fOffsetRot <= m_fMinRot ) + { + m_fOffsetRot = m_fMinRot; + m_fRotDir = 1.0f; + m_fMaxRot = m_fRotMax * GetRandom( 0.5f, 1.0f ); + } + + } + else if( m_bFade ) + { + LTBOOL bDone = LTFALSE; + + if( m_fElapsedTime >= m_fEndTime ) + { + bDone = LTTRUE; + } + else + { + // FOV + + LTFLOAT fXSpeed = m_fFOVXSpeed * fFrameTime; + LTFLOAT fYSpeed = m_fFOVYSpeed * fFrameTime; + + if( m_fFOVXOffset < -fXSpeed ) + { + m_fFOVXOffset += fXSpeed; + bDone = LTFALSE; + } + else if( m_fFOVXOffset > fXSpeed ) + { + m_fFOVXOffset -= fXSpeed; + bDone = LTFALSE; + } + else + { + m_fFOVXOffset = 0.0f; + } + + if( m_fFOVYOffset < -fYSpeed ) + { + m_fFOVYOffset += fYSpeed; + bDone = LTFALSE; + } + else if( m_fFOVYOffset > fYSpeed ) + { + m_fFOVYOffset -= fYSpeed; + bDone = LTFALSE; + } + else + { + m_fFOVYOffset = 0.0f; + } + + // ROTATION + + LTFLOAT fRotSpeed = m_fRotSpeed * fFrameTime; + + if( m_fOffsetRot < -fRotSpeed ) + { + m_fOffsetRot += fRotSpeed; + bDone = LTFALSE; + } + else if( m_fOffsetRot > fRotSpeed ) + { + m_fOffsetRot -= fRotSpeed; + bDone = LTFALSE; + } + else + { + m_fOffsetRot = 0.0f; + } + + } + + if( bDone ) + m_bFade = LTFALSE; + } + else + { + fFovX = DEG2RAD( g_vtFOVXNormal.GetFloat() ); + fFovY = DEG2RAD( g_vtFOVYNormal.GetFloat() ); + m_fFOVXOffset = 0.0f; + m_fFOVYOffset = 0.0f; + m_fOffsetRot = 0.0f; + } + + // Update the overall damage fx screen tint based on this damagefx's screen tint + + { + bool bForce = ( !m_bActive && !m_bUpdateSoundAndVisuals && !m_bFade); + g_pDamageFXMgr->SetDamageFXTintColor( UpdateTintColor(), bForce ); + g_pDamageFXMgr->SetDamageFXLightScale( UpdateLightScale(), bForce ); + + fFovX += m_fFOVXOffset * m_fMoveMult; + fFovY += m_fFOVYOffset * m_fMoveMult; + + if (!g_pPlayerMgr->IsZoomed() && !g_pPlayerMgr->IsZooming()) + g_pLTClient->SetCameraFOV( hCamera, fFovX, fFovY ); + + rot.Rotate( vF, m_fOffsetRot * m_fMoveMult ); + + if( !g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() ) + g_pLTClient->SetObjectRotation( hCamera, &rot ); + } + + // Set our movement and input... + g_pDamageFXMgr->SetDamageFXMovementAndInput( m_bAllowMovement, m_bAllowInput, m_bAllowWeapons ); + + if( !IsActive() ) + { + g_pHUDMgr->QueueUpdate( kHUDDamage ); + + // Remove from the Activelist + + g_pDamageFXMgr->m_lstActiveDmgFx.Remove( this ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::UpdateTintColor +// +// PURPOSE: Update the current tint color +// +// ----------------------------------------------------------------------- // + +LTVector DAMAGEFX::UpdateTintColor( ) +{ + LTVector vRes( 0.0f, 0.0f, 0.0f ); + + if( m_bActive && m_bUpdateSoundAndVisuals ) + { + switch( m_TintDir ) + { + case DAMAGEFX_TINT_RAMPUP : + { + if( m_fElapsedTime >= m_fEndTime ) + { + // We're at maximum tint... + m_vCurTintColor = m_vMaxTintColor; + + //change our state + m_TintDir = DAMAGEFX_TINT_ON; + + //and update our timer + m_fElapsedTime -= m_fEndTime; + m_fEndTime = m_fTintOnTm; + } + else + { + // Gradually increase tint towards the max color + + m_vCurTintColor = m_vMaxTintColor * (m_fElapsedTime / m_fEndTime); + } + } + break; + + case DAMAGEFX_TINT_RAMPDOWN : + { + if( m_fElapsedTime >= m_fEndTime ) + { + // We're at no tint... + + m_vCurTintColor.Init(); + + //change our state + m_TintDir = DAMAGEFX_TINT_OFF; + + //and update our timer + m_fElapsedTime -= m_fEndTime; + m_fEndTime = m_fTintOffTm; + } + else + { + // Gradually decrease tint towards no color + + m_vCurTintColor = m_vMaxTintColor * (1.0f - m_fElapsedTime / m_fEndTime); + } + } + break; + + case DAMAGEFX_TINT_ON : + { + // Stay at max color for the specified time... + + m_vCurTintColor = m_vMaxTintColor; + + if( m_fElapsedTime >= m_fEndTime ) + { + //change our state + m_TintDir = DAMAGEFX_TINT_RAMPDOWN; + + //and update our timer + m_fElapsedTime -= m_fEndTime; + m_fEndTime = m_fTintRampDownTm; + } + } + break; + + case DAMAGEFX_TINT_OFF : + { + // Stay at no color for the specified time... + + m_vCurTintColor.Init(); + + if( m_fElapsedTime >= m_fEndTime ) + { + //change our state + m_TintDir = DAMAGEFX_TINT_RAMPUP; + + //and update our timer + m_fElapsedTime -= m_fEndTime; + m_fEndTime = m_fTintRampUpTm; + } + } + break; + + default : break; + } + + vRes = m_vCurTintColor; + } + else if( m_bFade ) + { + vRes = m_vCurTintColor * (LTMAX(0.0f, 1.0f - m_fElapsedTime / m_fEndTime)); + } + + return vRes; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::UpdateLightScale +// +// PURPOSE: Update the current light scale color +// +// ----------------------------------------------------------------------- // + +LTVector DAMAGEFX::UpdateLightScale( ) +{ + LTFLOAT fFrameTime = g_pGameClientShell->GetFrameTime(); + + if( m_bActive && m_bUpdateSoundAndVisuals ) + { + m_fLightScale += m_fLightScaleSpeed * fFrameTime; + if( m_fLightScale > 1.0f ) + m_fLightScale = 1.0f; + + LTVector vLightScale( 1.0f - m_fLightScale, 1.0f - m_fLightScale, 1.0f - m_fLightScale ); + vLightScale.x = Max( m_vLightScaleColor.x, vLightScale.x ); + vLightScale.y = Max( m_vLightScaleColor.y, vLightScale.y ); + vLightScale.z = Max( m_vLightScaleColor.z, vLightScale.z ); + + return vLightScale; + } + else if( m_bFade ) + { + // Fade out the light scale color + + LTFLOAT fLightScale = m_fLightScale * LTMAX(0.0f, 1.0f - (m_fElapsedTime / m_fEndTime)); + + LTVector vLightScale( 1.0f - fLightScale, 1.0f - fLightScale, 1.0f - fLightScale ); + vLightScale.x = Max( m_vLightScaleColor.x, vLightScale.x ); + vLightScale.y = Max( m_vLightScaleColor.y, vLightScale.y ); + vLightScale.z = Max( m_vLightScaleColor.z, vLightScale.z ); + + return vLightScale; + } + + return LTVector( 1.0f, 1.0f, 1.0f ); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::CreateSprinkles +// +// PURPOSE: Create the sprinkles associated with this damage fx +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::CreateSprinkles() +{ + if( !m_pSprinkles && m_nNumSprinkles > 0 ) + { + SPRINKLESCREATESTRUCT scs; + + scs.m_nTypes = m_nNumSprinkles; + + // Find the requested Sprinkles and add them to the SprinkleFX create struct... + + for( int i = 0; i < m_nNumSprinkles; ++i ) + { + SPRINKLEFX *pFX = g_pFXButeMgr->GetSprinkleFX( m_aszSprinkleName[i] ); + if( !pFX ) return; + + scs.m_Types[i].m_hFilename = g_pLTClient->CreateString( pFX->szFileName ); + scs.m_Types[i].m_hSkinName = g_pLTClient->CreateString( pFX->szSkinName ); + scs.m_Types[i].m_Count = pFX->dwCount; + scs.m_Types[i].m_Speed = pFX->fSpeed; + scs.m_Types[i].m_Size = pFX->fSize; + scs.m_Types[i].m_SpawnRadius = pFX->fSpawnRadius; + scs.m_Types[i].m_ColorMax = pFX->vColorMax; + scs.m_Types[i].m_ColorMin = pFX->vColorMin; + scs.m_Types[i].m_AnglesVel = pFX->vAnglesVel; + } + + m_pSprinkles = (SprinklesFX*) g_pGameClientShell->GetSFXMgr()->CreateSFX( SFX_SPRINKLES_ID, &scs ); + if( m_pSprinkles ) + m_pSprinkles->Update(); + + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::DestroySprinkles +// +// PURPOSE: Delete all the sprinkles +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::DestroySprinkles() +{ + if( m_pSprinkles ) + { + m_pSprinkles->WantRemove(); + m_pSprinkles = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::StartSoundAndVisuals +// +// PURPOSE: Start fx for sound and visuals +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::StartSoundAndVisuals() +{ + if( !m_bActive ) + return; + + // We can now update the FX.. + + m_bUpdateSoundAndVisuals = LTTRUE; + + if( m_szStartSound[0] ) + { + // Play the start sound + + g_pClientSoundMgr->PlaySoundLocal( m_szStartSound, SOUNDPRIORITY_PLAYER_MEDIUM ); + } + + if( m_szLoopSound[0] && !m_hLoopSound ) + { + // Play the looping sound.. + + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP | PLAYSOUND_CLIENT; + m_hLoopSound = g_pClientSoundMgr->PlaySoundLocal( m_szLoopSound, SOUNDPRIORITY_PLAYER_LOW, dwFlags ); + } + + // Start the tint to ramp up towards max color... + + m_fElapsedTime = 0.0f; + m_fEndTime = m_fTintRampUpTm; + + m_TintDir = DAMAGEFX_TINT_RAMPUP; + + CreateSprinkles(); + + // Create the FxED created FX... + + if( m_szFXName[0] ) + { + LTVector vCamPos; + g_pLTClient->GetObjectPos( g_pPlayerMgr->GetCamera(), &vCamPos ); + + CLIENTFX_CREATESTRUCT fxInit( m_szFXName, FXFLAG_LOOP | FXFLAG_REALLYCLOSE, LTVector(0,0,0) ); + g_pClientFXMgr->CreateClientFX(&m_DamageFXInstance, fxInit, LTTRUE ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: DAMAGEFX::StartSoundAndVisuals +// +// PURPOSE: Stop fx for sound and visuals +// +// ----------------------------------------------------------------------- // + +void DAMAGEFX::StopSoundAndVisuals( LTBOOL bFade /* = LTTRUE */ ) +{ + m_bFade = bFade; + m_bUpdateSoundAndVisuals = LTFALSE; + + m_fElapsedTime = 0.0f; + m_fEndTime = m_fFadeTm; + + m_vtTestFX.SetFloat( 0.0f ); + + if( m_hLoopSound ) + { + g_pLTClient->SoundMgr()->KillSound( m_hLoopSound ); + m_hLoopSound = LTNULL; + } + + DestroySprinkles(); + + if( m_DamageFXInstance.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_DamageFXInstance ); + } +} + + +// ------------------------------------------------------------------------// +// +// Private Helper functions +// +// ------------------------------------------------------------------------// + +LTBOOL CDamageFXMgr::GetBool(char *pTag,char *pAttribute) +{ + return (LTBOOL) m_buteMgr.GetInt(pTag,pAttribute, 0); +} + +LTFLOAT CDamageFXMgr::GetFloat(char *pTag,char *pAttribute) +{ + return (LTFLOAT)m_buteMgr.GetDouble(pTag, pAttribute, 0.0f); +} + +int CDamageFXMgr::GetInt(char *pTag,char *pAttribute) +{ + return m_buteMgr.GetInt(pTag, pAttribute, 0); +} + +LTIntPt CDamageFXMgr::GetPoint(char *pTag,char *pAttribute) +{ + CPoint zero(0,0); + CPoint tmp = m_buteMgr.GetPoint(pTag, pAttribute, zero); + LTIntPt pt(tmp.x,tmp.y); + return pt; +} + +uint32 CDamageFXMgr::GetDWord(char *pTag,char *pAttribute) +{ + return (uint32)m_buteMgr.GetInt(pTag, pAttribute, 0); +} + +void CDamageFXMgr::GetString(char *pTag,char *pAttribute,char *pBuf, int nBufLen) +{ + m_buteMgr.GetString(pTag, pAttribute, "" ,pBuf, nBufLen); +} + +LTVector CDamageFXMgr::GetVector(char *pTag,char *pAttribute) +{ + CAVector vRet(0.0,0.0,0.0); + return m_buteMgr.GetVector(pTag, pAttribute, vRet); +} diff --git a/Jack/ClientShellDLL/DamageFXMgr.h b/Jack/ClientShellDLL/DamageFXMgr.h new file mode 100644 index 00000000..40ad5907 --- /dev/null +++ b/Jack/ClientShellDLL/DamageFXMgr.h @@ -0,0 +1,223 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DamageFXMgr.h +// +// PURPOSE : Damage FX Manager class - Definition +// +// CREATED : 1/20/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __DAMAGE_FX_MGR_H__ +#define __DAMAGE_FX_MGR_H__ + +// +// Includes... +// + + #include "GameButeMgr.h" + #include "sprinklesfx.h" + #include "VarTrack.h" + #include "Timer.h" + #include "TemplateList.h" + #include "ClientFXMgr.h" +// +// Defins... +// + + #define DMGFXMGR_DEFAULT_FILE "Attributes\\DamageFX.txt" + #define DMGFXMGR_MAX_NAME_LEN 32 + #define DMGFXMGR_MAX_PATH 64 + #define DMGFXMGR_INVALID_ID -1 + + #define DAMAGEFX_TINT_OFF 0 + #define DAMAGEFX_TINT_RAMPUP 1 + #define DAMAGEFX_TINT_RAMPDOWN 2 + #define DAMAGEFX_TINT_ON 3 + +// +// Forwards... +// + + class CDamageFXMgr; + +// +// Globals... +// + + extern CDamageFXMgr *g_pDamageFXMgr; + + +struct DAMAGEFX +{ + DAMAGEFX(); + ~DAMAGEFX(); + + LTBOOL Init( CButeMgr &ButeMgr, char *aTagName ); + void Start( ); + void Stop( LTBOOL bFade = LTTRUE ); + void StartSoundAndVisuals(); + void StopSoundAndVisuals( LTBOOL bFade = LTTRUE ); + void Update( float fElapsedTime ); + LTVector UpdateTintColor( ); + LTVector UpdateLightScale( ); + + void CreateSprinkles(); + void DestroySprinkles(); + + inline LTBOOL IsActive( ) const { return m_bActive || m_bFade; } + + uint32 m_nID; + DamageFlags m_nDamageFlag; + + char *m_szName; + char *m_szIcon; + char *m_szStartSound; + char *m_szLoopSound; + char *m_szFXName; + char *m_szTakingHealthFXName; + char *m_szTakingArmorFXName; + char *m_sz3rdPersonFXName; + char *m_sz3rdPersonInstFXName; + char *m_sz3rdPersonDeathFXName; + char *m_szBodyFXName; + char *m_aszSprinkleName[MAX_SPRINKLE_TYPES]; + char m_szVarTrackName[64]; + + LTVector m_vMaxTintColor; // The max tint color + LTVector m_vCurTintColor; // Our current tint color + uint8 m_TintDir; // What state is the tint in + LTFLOAT m_fTintRampUpTm; // How long does it take to get to full color + LTFLOAT m_fTintRampDownTm; // How long does it take to get to no color + LTFLOAT m_fTintOffTm; // How long is the tint at no color + LTFLOAT m_fTintOnTm; // How long is the tint at full color + + LTFLOAT m_fRotSpeed; // Rate at which we roll around the cameras forward + LTFLOAT m_fRotMax; // The maximum angle we can roll + LTFLOAT m_fRotDir; // Which direction are we rolling + LTFLOAT m_fOffsetRot; + LTFLOAT m_fMaxRot; + LTFLOAT m_fMinRot; + LTFLOAT m_fMoveMult; + LTFLOAT m_fMinFXPercent; + + LTFLOAT m_fFOVXSpeed; + LTFLOAT m_fFOVYSpeed; + LTFLOAT m_fFOVMax; + LTFLOAT m_fFOVXOffset; + LTFLOAT m_fFOVYOffset; + LTFLOAT m_fFOVXDir; + LTFLOAT m_fFOVYDir; + + LTFLOAT m_fLightScale; // How much the light is scaled 0-1 + LTFLOAT m_fLightScaleSpeed; // How fast the light gets scaled + LTVector m_vLightScaleColor; // Color we are scaling to + + LTBOOL m_bActive; // Are we active? + LTBOOL m_bFade; // Are we fading? + LTFLOAT m_fFadeTm; // How long does it take to fade this fx + + bool m_bAllowMovement; + bool m_bAllowInput; + bool m_bAllowWeapons; + + LTBOOL m_bJumpRequested; // Did the player tap jump? + int8 m_nNumJumps; // How many times the player jumped so far + int8 m_nJumpsToEscape; // How many jumps it takes to free the player + + HLTSOUND m_hLoopSound; + + //the timer that is used to time transitions between states. + float m_fElapsedTime; // the amount of time that has already elapsed + float m_fEndTime; // The time that the current state ends at + VarTrack m_vtTestFX; // Used for testing the specific DamageFX + + SprinklesFX* m_pSprinkles; + uint8 m_nNumSprinkles; + + LTBOOL m_bInstantEffect; // Does this effect go away immediately instead of looping? + + CLIENTFX_LINK m_DamageFXInstance; // A link to an instance of a FxED created FX + + LTBOOL m_bAttachCameraToAni; // Should we attach the camera to the head of the animation + LTBOOL m_bShowClientModel; // Should make the local client model visible + + LTBOOL m_bAnimationControlsFX; // Does the animation contain keys for turning certain fx on and off + LTBOOL m_bUpdateSoundAndVisuals; // Should we update the sound and visual fx... can be controlled by anis +}; + +typedef CTList DamageFxList; +typedef CTList ActiveDamageFxList; + +class CDamageFXMgr : public CGameButeMgr +{ + friend struct DAMAGEFX; + + public: // Methods... + + CDamageFXMgr(); + ~CDamageFXMgr(); + + LTBOOL Init( const char* szAttributeFile = DMGFXMGR_DEFAULT_FILE ); + void Term(); + + LTBOOL WriteFile() { return m_buteMgr.Save(); } + void Reload() { Term(); m_buteMgr.Term(); Init(); } + + DAMAGEFX *GetDamageFX( uint32 nID ); + DAMAGEFX *GetDamageFX( char *pName ); + + int GetNumDamageFX() const { return m_lstDamageFx.GetLength(); } + + DAMAGEFX *GetFirstDamageFX() { return ( m_lstDamageFx.GetLength() ? *m_lstDamageFx.GetItem( TLIT_FIRST ) : LTNULL ); } + DAMAGEFX *GetNextDamageFX() { return ( m_lstDamageFx.GetLength() ? + (m_lstDamageFx.GetItem( TLIT_NEXT ) ? + *m_lstDamageFx.GetItem( TLIT_CURRENT ) : LTNULL) : LTNULL ); } + + DAMAGEFX *GetFirstActiveFX() { return ( m_lstActiveDmgFx.GetLength() ? *m_lstActiveDmgFx.GetItem( TLIT_FIRST ) : LTNULL ); } + DAMAGEFX *GetNextActiveFX() { return ( m_lstActiveDmgFx.GetLength() ? + (m_lstActiveDmgFx.GetItem( TLIT_NEXT ) ? + *m_lstActiveDmgFx.GetItem( TLIT_CURRENT ) : LTNULL) : LTNULL); } + + LTBOOL IsDamageActive( DamageFlags nDmgFlag ); + + bool AllowMovement() const { return m_bAllowMovement; } + bool AllowInput() const { return m_bAllowInput; } + bool AllowWeapons( ) const { return ( m_nDisableWeaponCounts == 0 ); } + bool IsFOVAffected(); + + void SetDamageFXTintColor( LTVector &vCol, bool bForce ); + void SetDamageFXLightScale( LTVector &vCol, bool bForce ); + void SetDamageFXMovementAndInput( bool bMove, bool bInput, bool bAlloWeapons ); + + void Update(); + void Clear(); + + LTBOOL GetBool(char *pTag,char *pAttribute); + LTFLOAT GetFloat(char *pTag,char *pAttribute); + int GetInt(char *pTag,char *pAttribute); + LTIntPt GetPoint(char *pTag,char *pAttribute); + uint32 GetDWord(char *pTag,char *pAttribute); + void GetString(char *pTag,char *pAttribute, char *pBuf, int nBufLen); + LTVector GetVector(char *pTag,char *pAttribute); + + bool OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ); + + + private : // Members... + + DamageFxList m_lstDamageFx; + ActiveDamageFxList m_lstActiveDmgFx; + LTVector m_vDamageFXTintColor; + LTBOOL m_bTintColorChanged; + LTVector m_vDamageFXLightScaleColor; + LTBOOL m_bLightScaleColorChanged; + bool m_bAllowMovement; + bool m_bAllowInput; + uint32 m_nDisableWeaponCounts; + +}; + +#endif //__DAMAGE_FX_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DeathFX.cpp b/Jack/ClientShellDLL/DeathFX.cpp new file mode 100644 index 00000000..c0c27fad --- /dev/null +++ b/Jack/ClientShellDLL/DeathFX.cpp @@ -0,0 +1,303 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DeathFX.cpp +// +// PURPOSE : Death special FX - Implementation +// +// CREATED : 6/14/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "DeathFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "GameClientShell.h" +#include "GibFX.h" +#include "SFXMsgIds.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::Init +// +// PURPOSE: Init the death fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CDeathFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + DEATHCREATESTRUCT* pD = (DEATHCREATESTRUCT*)psfxCreateStruct; + + m_nDeathType = pD->nDeathType; + m_eModelId = pD->eModelId; + VEC_COPY(m_vPos, pD->vPos); + VEC_COPY(m_vDir, pD->vDir); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CDeathFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !g_pGameClientShell) return LTFALSE; + + // Determine what container the sfx is in... + + HLOCALOBJ objList[1]; + uint32 dwNum = ::GetPointContainers(m_vPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (m_pClientDE->GetContainerCode(objList[0], &dwCode)) + { + m_eCode = (ContainerCode)dwCode; + } + } + + + CreateDeathFX(); + + + return LTFALSE; // Delete me, I'm done :) +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::CreateDeathFX +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +void CDeathFX::CreateDeathFX() +{ + switch ( g_pModelButeMgr->GetModelType(m_eModelId) ) + { + case eModelTypeHuman: + CreateHumanDeathFX(); + break; + + case eModelTypeVehicle: + CreateVehicleDeathFX(); + break; + + default : break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::CreateHumanDeathFX +// +// PURPOSE: Create human specific death fx +// +// ----------------------------------------------------------------------- // + +void CDeathFX::CreateHumanDeathFX() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + CUserProfile* pProfile = g_pProfileMgr->GetCurrentProfile(); + if (!pProfile || !pProfile->m_bGore) return; + + GIBCREATESTRUCT gib; + + gib.rRot = LTRotation(m_vDir, LTVector(0.0f, 1.0f, 0.0f)); + + LTFLOAT fDamage = VEC_MAG(m_vDir); + + VEC_COPY(gib.vPos, m_vPos); + VEC_SET(gib.vMinVel, 50.0f, 100.0f, 50.0f); + VEC_MULSCALAR(gib.vMinVel, gib.vMinVel, fDamage); + VEC_SET(gib.vMaxVel, 100.0f, 200.0f, 100.0f); + VEC_MULSCALAR(gib.vMaxVel, gib.vMaxVel, fDamage); + gib.fLifeTime = 20.0f; + gib.fFadeTime = 7.0f; + gib.nGibFlags = 0; + gib.bRotate = LTTRUE; + gib.nCode = m_eCode; + gib.eModelId = m_eModelId; + gib.bSubGibs = LTTRUE; + gib.bBloodSplats = LTTRUE; + + SetupGibTypes(gib); + + psfxMgr->CreateSFX(SFX_GIB_ID, &gib); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::CreateVehicleDeathFX +// +// PURPOSE: Create Vehicle specific death fx +// +// ----------------------------------------------------------------------- // + +void CDeathFX::CreateVehicleDeathFX() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + GIBCREATESTRUCT gib; + + gib.rRot = LTRotation(m_vDir, LTVector(0.0f, 1.0f, 0.0f)); + + LTFLOAT fDamage = VEC_MAG(m_vDir); + + VEC_COPY(gib.vPos, m_vPos); + VEC_SET(gib.vMinVel, 50.0f, 100.0f, 50.0f); + VEC_MULSCALAR(gib.vMinVel, gib.vMinVel, fDamage); + VEC_SET(gib.vMaxVel, 100.0f, 200.0f, 100.0f); + VEC_MULSCALAR(gib.vMaxVel, gib.vMaxVel, fDamage); + gib.fLifeTime = 20.0f; + gib.fFadeTime = 7.0f; + gib.nGibFlags = 0; + gib.bRotate = LTTRUE; + gib.eModelId = m_eModelId; + gib.nCode = m_eCode; + gib.bSubGibs = LTTRUE; + + SetupGibTypes(gib); + + psfxMgr->CreateSFX(SFX_GIB_ID, &gib); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDeathFX::SetupGibTypes +// +// PURPOSE: Setup gib types +// +// ----------------------------------------------------------------------- // + +void CDeathFX::SetupGibTypes(GIBCREATESTRUCT & gib) +{ + ModelType eType = g_pModelButeMgr->GetModelType(m_eModelId); + int nFirst = eType == eModelTypeHuman ? 0 : 1; + int nCase = GetRandom(nFirst, 3); + + if (eType == eModelTypeVehicle) + { + nCase = 5; + } + + switch (nCase) + { + case 0: // The whole body!!! (human only) + { + gib.nNumGibs =1; + gib.eGibTypes[0] = GT_BODY; + } + break; + + case 1: // Head, arm(s), and leg(s)... + { + gib.nNumGibs = GetRandom(3, 5); + gib.eGibTypes[0] = GT_HEAD; + gib.eGibTypes[1] = GetRandom(0,1) == 0 ? GT_LEFT_ARM : GT_RIGHT_ARM; + gib.eGibTypes[2] = GetRandom(0,1) == 0 ? GT_LEFT_LEG : GT_RIGHT_LEG; + + // Add another arm?... + + if (gib.nNumGibs == 4) + { + gib.eGibTypes[3] = (gib.eGibTypes[1] == GT_LEFT_ARM) ? GT_RIGHT_ARM : GT_LEFT_ARM; + } + + // Add another leg?... + + if (gib.nNumGibs == 5) + { + gib.eGibTypes[4] = (gib.eGibTypes[2] == GT_LEFT_LEG) ? GT_RIGHT_LEG : GT_LEFT_LEG; + } + } + break; + + case 2: // Upper body, randomly a leg or two... + { + gib.nNumGibs = GetRandom(1, 3); + gib.eGibTypes[0] = GT_UPPER_BODY; + + if (gib.nNumGibs == 2) // Add a leg + { + gib.eGibTypes[1] = GetRandom(0,1) == 0 ? GT_LEFT_LEG : GT_RIGHT_LEG; + } + else if (gib.nNumGibs == 3) // Add em both + { + gib.eGibTypes[1] = GT_LEFT_LEG; + gib.eGibTypes[2] = GT_RIGHT_LEG; + } + } + break; + + case 3: // Lower body, randomly a head, an arm or two... + { + gib.nNumGibs = GetRandom(1, 4); + gib.eGibTypes[0] = GT_LOWER_BODY; + + if (gib.nNumGibs == 2) + { + if (GetRandom(0,1) == 0) // Add a head or an arm... + { + gib.eGibTypes[1] = GetRandom(0,1) == 0 ? GT_LEFT_ARM : GT_RIGHT_ARM; + } + else + { + gib.eGibTypes[1] = GT_HEAD; + } + } + else if (gib.nNumGibs == 3) // Add a head and an arm, or two arms... + { + if (GetRandom(0,1) == 0) // Add a head and an arm... + { + gib.eGibTypes[1] = GetRandom(0,1) == 0 ? GT_LEFT_ARM : GT_RIGHT_ARM; + gib.eGibTypes[2] = GT_HEAD; + } + else // Add the arms + { + gib.eGibTypes[1] = GT_LEFT_ARM; + gib.eGibTypes[2] = GT_RIGHT_ARM; + } + } + else if (gib.nNumGibs == 4) // Add ema ll + { + gib.eGibTypes[1] = GT_LEFT_ARM; + gib.eGibTypes[2] = GT_RIGHT_ARM; + gib.eGibTypes[3] = GT_HEAD; + } + } + break; + + case 4: // Smoking boots? + break; + + case 5: // Vehicle + { + gib.nNumGibs = 2; + gib.eGibTypes[0] = GT_FIRST; // Turret + gib.eGibTypes[1] = GT_LAST; // Husk + } + break; + + default : + break; + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/DeathFX.h b/Jack/ClientShellDLL/DeathFX.h new file mode 100644 index 00000000..b7d4bd58 --- /dev/null +++ b/Jack/ClientShellDLL/DeathFX.h @@ -0,0 +1,72 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DeathFX.h +// +// PURPOSE : Death special fx class - Definition +// +// CREATED : 6/14/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __DEATH_FX_H__ +#define __DEATH_FX_H__ + +#include "SpecialFX.h" +#include "ContainerCodes.h" +#include "CharacterAlignment.h" +#include "GibFX.h" + +struct DEATHCREATESTRUCT : public SFXCREATESTRUCT +{ + DEATHCREATESTRUCT(); + + ModelId eModelId; + uint8 nDeathType; + LTVector vPos; + LTVector vDir; +}; + +inline DEATHCREATESTRUCT::DEATHCREATESTRUCT() +{ + eModelId = eModelIdInvalid; + nDeathType = 0; + vPos.Init(); + vDir.Init(); +} + + +class CDeathFX : public CSpecialFX +{ + public : + + CDeathFX() : CSpecialFX() + { + m_eCode = CC_NO_CONTAINER; + m_nDeathType = 0; + m_eModelId = eModelIdInvalid; + VEC_INIT(m_vPos); + VEC_INIT(m_vDir); + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update() { return LTFALSE; } + + virtual uint32 GetSFXID() { return SFX_DEATH_ID; } + + protected : + + ContainerCode m_eCode; // Container effect is in + LTVector m_vPos; // Effect position + LTVector m_vDir; // Direction damage came from + uint8 m_nDeathType; // Type of death + ModelId m_eModelId; // Model + + void CreateDeathFX(); + void CreateVehicleDeathFX(); + void CreateHumanDeathFX(); + + void SetupGibTypes(GIBCREATESTRUCT & gib); +}; + +#endif // __DEATH_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DebrisFX.cpp b/Jack/ClientShellDLL/DebrisFX.cpp new file mode 100644 index 00000000..2347b735 --- /dev/null +++ b/Jack/ClientShellDLL/DebrisFX.cpp @@ -0,0 +1,759 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DebrisFX.cpp +// +// PURPOSE : Debris - Implementation +// +// CREATED : 5/31/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "DebrisFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ContainerCodes.h" +#include "ClientServerShared.h" +#include "WeaponFXTypes.h" +#include "GameClientShell.h" +#include "SurfaceFunctions.h" +#include "VarTrack.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_vtDebrisBounce; + +CDebrisFX::CDebrisFX() : + m_bFirstUpdate(LTTRUE), + m_fLastTime(-1.0f), + m_fStartTime(-1.0f) +{ + memset(m_DebrisList, 0, sizeof(m_DebrisList)); +} + +CDebrisFX::~CDebrisFX() +{ + ClearDebrisList(); +} + +CDebrisFX::DebrisTracker::DebrisTracker() : + m_bActiveEmitter(LTFALSE), + m_BounceCount(0), + m_hDebris(0), + m_fDebrisLife(0.0f), + m_fPitch(0.0f), + m_fYaw(0.0f), + m_fRoll(0.0f), + m_fPitchVel(0.0f), + m_fYawVel(0.0f), + m_fRollVel(0.0f) +{ +} + +CDebrisFX::DebrisTracker::~DebrisTracker() +{ + if (m_hDebris) + { + ASSERT(!"Undeleted debris handle! DebrisTracker can't delete its handles!"); + } +} + +void CDebrisFX::ClearDebrisList() +{ + for (int i=0; i < MAX_DEBRIS; i++) + { + if (m_DebrisList[i]) + { + RemoveDebris(i); + } + } +} + +CBankedList *CDebrisFX::GetDebrisBank() +{ + static CBankedList theBank; + + return &theBank; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::Init +// +// PURPOSE: Init the Particle trail segment +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + DEBRISCREATESTRUCT* pDCS = (DEBRISCREATESTRUCT*)psfxCreateStruct; + + m_ds = *(pDCS); + + // If a valid debris id was specified, use it to determine the debris + // values... + + DEBRIS* pDebris = g_pDebrisMgr->GetDebris(m_ds.nDebrisId); + if (pDebris) + { + m_ds.bRotate = pDebris->bRotate; + m_ds.fMinLifeTime = pDebris->fMinLifetime; + m_ds.fMaxLifeTime = pDebris->fMaxLifetime; + m_ds.fFadeTime = pDebris->fFadetime; + m_ds.fMinScale = pDebris->fMinScale; + m_ds.fMaxScale = pDebris->fMaxScale; + m_ds.nNumDebris = pDebris->nNumber; + m_ds.vMaxVel = pDebris->vMaxVel; + m_ds.vMinVel = pDebris->vMinVel; + m_ds.vMinDOffset = pDebris->vMinDOffset; + m_ds.vMaxDOffset = pDebris->vMaxDOffset; + m_ds.nMaxBounce = pDebris->nMaxBounce; + m_ds.nMinBounce = pDebris->nMinBounce; + m_ds.vMinWorldVel = pDebris->vMinWorldVel; + m_ds.vMaxWorldVel = pDebris->vMaxWorldVel; + m_ds.fGravityScale = pDebris->fGravityScale; + m_ds.fAlpha = pDebris->fAlpha; + + strcpy(m_ds.szWorldSpaceFX, pDebris->szWorldSpaceFX); + strcpy(m_ds.szImpactSpaceFX, pDebris->szImpactSpaceFX); + } + + m_ds.nNumDebris = LTMIN(m_ds.nNumDebris, MAX_DEBRIS); + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTFALSE; + + uint8 nDebrisLevel = GetConsoleInt("DebrisFXLevel", RS_HIGH); + if (nDebrisLevel == RS_LOW) + { + m_ds.nNumDebris = int(float(m_ds.nNumDebris) * 0.333f); + m_ds.fMinLifeTime *= 0.333f; + m_ds.fMaxLifeTime *= 0.333f; + } + else if (nDebrisLevel == RS_MED) + { + m_ds.nNumDebris = int(float(m_ds.nNumDebris) * 0.666f); + m_ds.fMinLifeTime *= 0.666f; + m_ds.fMaxLifeTime *= 0.666f; + } + + // Always make at least one piece ;) + + m_ds.nNumDebris = LTMAX(m_ds.nNumDebris, 1); + + // Allocate that many debris trackers + ClearDebrisList(); + for (uint32 nCreateLoop = 0; nCreateLoop < m_ds.nNumDebris; ++nCreateLoop) + { + m_DebrisList[nCreateLoop] = GetDebrisBank()->New(); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + // Initialize the debris velocity ranges based on our rotation... + + LTVector vVelMin, vVelMax, vU, vR, vF; + + vU = m_ds.rRot.Up(); + vR = m_ds.rRot.Right(); + vF = m_ds.rRot.Forward(); + + vVelMin = m_ds.vMinWorldVel; + vVelMax = m_ds.vMaxWorldVel; + + vVelMin += vF * m_ds.vMinVel.y; + vVelMax += vF * m_ds.vMaxVel.y; + vVelMin += vR * m_ds.vMinVel.x; + vVelMax += vR * m_ds.vMaxVel.x; + vVelMin += vU * m_ds.vMinVel.z; + vVelMax += vU * m_ds.vMaxVel.z; + + + // Initialize our emitters... + + LTFLOAT fVal = MATH_CIRCLE/2.0f; + LTFLOAT fVal2 = MATH_CIRCLE; + LTVector vVel; + for (int i=0; i < m_ds.nNumDebris; i++) + { + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + continue; + + if (m_ds.bRotate) + { + pTracker->m_fPitchVel = GetRandom(-fVal, fVal); + pTracker->m_fYawVel = GetRandom(-fVal2, fVal2); + pTracker->m_fRollVel = GetRandom(-fVal2, fVal2); + } + + pTracker->m_fDebrisLife = GetRandom(m_ds.fMinLifeTime, m_ds.fMaxLifeTime); + + pTracker->m_bActiveEmitter = LTTRUE; + pTracker->m_BounceCount = GetRandom(m_ds.nMinBounce, m_ds.nMaxBounce); + + vVel.Init(GetRandom(vVelMin.x, vVelMax.x), + GetRandom(vVelMin.y, vVelMax.y), + GetRandom(vVelMin.z, vVelMax.z)); + + // Add a random offset to each debris item... + + LTVector vPos; + if (m_ds.bDirOffsetOnly) + { + // Only offset in the direction the debris is traveling... + + vPos = vVel; + vPos.Normalize(); + + // Only use y (forward) offset... + + vPos *= GetRandom(m_ds.vMinDOffset.y, m_ds.vMaxDOffset.y); + } + else + { + vPos.Init(GetRandom(m_ds.vMinDOffset.x, m_ds.vMaxDOffset.x), + GetRandom(m_ds.vMinDOffset.y, m_ds.vMaxDOffset.y), + GetRandom(m_ds.vMinDOffset.z, m_ds.vMaxDOffset.z)); + } + + vPos += m_ds.vPos; + InitMovingObject(&(pTracker->m_Emitter), vPos, vVel); + + pTracker->m_Emitter.m_fGravityScale = m_ds.fGravityScale; + + CreateDebris(i, vPos); + } + + + // Play the explode sound... + + if (m_ds.bPlayExplodeSound) + { + char* pSound = g_pDebrisMgr->GetExplodeSound(m_ds.nDebrisId); + if (pSound) + { + g_pClientSoundMgr->PlaySoundFromPos(m_ds.vPos, pSound, 1000.0f, SOUNDPRIORITY_MISC_LOW); + } + } + + //create the client effects + if ( m_ds.szWorldSpaceFX[ 0 ] != '\0' ) + { + // prepare the create struct + CLIENTFX_CREATESTRUCT fxInit(m_ds.szWorldSpaceFX, 0, m_ds.vPos); + + // create the client fx + g_pClientFXMgr->CreateClientFX(NULL, fxInit, true); + } + if ( m_ds.szImpactSpaceFX[ 0 ] != '\0' ) + { + // prepare the create struct + CLIENTFX_CREATESTRUCT fxInit(m_ds.szImpactSpaceFX, 0, m_ds.vPos, m_ds.rRot); + + // create the client fx + g_pClientFXMgr->CreateClientFX(NULL, fxInit, true); + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::Update +// +// PURPOSE: Update the debris +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::Update() +{ + if (!m_pClientDE) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + m_fLastTime = fTime; + } + + + // Check to see if we should start fading the debris... + + int i; + for (i=0; i < m_ds.nNumDebris; i++) + { + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + continue; + + LTFLOAT fFadeStartTime = m_fStartTime + pTracker->m_fDebrisLife; + LTFLOAT fFadeEndTime = fFadeStartTime + m_ds.fFadeTime; + if (fTime > fFadeEndTime) + { + if (OkToRemoveDebris(i)) + { + RemoveDebris(i); + } + } + else if (fTime > fFadeStartTime && m_ds.fFadeTime > 0.1f) + { + LTFLOAT fScale = ((fFadeEndTime - fTime) / m_ds.fFadeTime); + LTFLOAT r, g, b, a; + + if (pTracker->m_hDebris) + { + m_pClientDE->GetObjectColor(pTracker->m_hDebris, &r, &g, &b, &a); + a = a < fScale ? a : fScale; + m_pClientDE->SetObjectColor(pTracker->m_hDebris, r, g, b, a); + } + } + } + + // See if all the debris have been removed or not... + + for (i=0; i < m_ds.nNumDebris; i++) + { + if (IsValidDebris(i)) break; + } + + // All debris have been removed so remove us... + + if (i == m_ds.nNumDebris) + { + return LTFALSE; + } + + + // Loop over our list of emitters, updating the position of each + + for (i=0; i < m_ds.nNumDebris; i++) + { + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + continue; + + if (pTracker->m_bActiveEmitter) + { + LTBOOL bRemove = LTFALSE; + LTBOOL bBounced = LTFALSE; + LTBOOL bBouncedOnGround = LTFALSE; + if (bBounced = UpdateEmitter(&(pTracker->m_Emitter), bRemove, bBouncedOnGround)) + { + if (bBouncedOnGround) + { + pTracker->m_BounceCount--; + } + + if (!(pTracker->m_Emitter.m_dwPhysicsFlags & MO_LIQUID) && (IsValidDebris(i))) + { + if (pTracker->m_BounceCount > 0) + { + if (m_ds.bPlayBounceSound && GetRandom(1, 4) == 1) + { + char* pSound = g_pDebrisMgr->GetBounceSound(m_ds.nDebrisId); + + // Play appropriate sound... + + if (pSound) + { + g_pClientSoundMgr->PlaySoundFromPos(pTracker->m_Emitter.m_vPos, + pSound, 1000.0f, SOUNDPRIORITY_MISC_LOW); + } + } + } + } + + if (pTracker->m_BounceCount <= 0) + { + pTracker->m_Emitter.m_dwPhysicsFlags |= MO_RESTING; + } + } + + // Remove the debris if necessary... + + if (bRemove) + { + RemoveDebris(i); + return LTTRUE; + } + + if (pTracker->m_Emitter.m_dwPhysicsFlags & MO_RESTING) + { + pTracker->m_bActiveEmitter = LTFALSE; + + if (m_ds.bRotate && IsValidDebris(i)) + { + RotateDebrisToRest(i); + } + } + else if (IsValidDebris(i)) + { + SetDebrisPos(i, pTracker->m_Emitter.m_vPos); + + if (m_ds.bRotate) + { + if (bBounced) + { + // Adjust due to the bounce... + + LTFLOAT fVal = MATH_CIRCLE/2.0f; + LTFLOAT fVal2 = MATH_CIRCLE; + pTracker->m_fPitchVel = GetRandom(-fVal, fVal); + pTracker->m_fYawVel = GetRandom(-fVal2, fVal2); + pTracker->m_fRollVel = GetRandom(-fVal2, fVal2); + } + + if (pTracker->m_fPitchVel != 0 || pTracker->m_fYawVel != 0 || pTracker->m_fRollVel != 0) + { + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + pTracker->m_fPitch += pTracker->m_fPitchVel * fDeltaTime; + pTracker->m_fYaw += pTracker->m_fYawVel * fDeltaTime; + pTracker->m_fRoll += pTracker->m_fRollVel * fDeltaTime; + + LTRotation rRot(pTracker->m_fPitch, pTracker->m_fYaw, pTracker->m_fRoll); + + SetDebrisRot(i, rRot); + } + } + } + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::UpdateEmitter +// +// PURPOSE: Update Emitter position +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::UpdateEmitter(MovingObject* pObject, LTBOOL & bRemove, + LTBOOL & bBounceOnGround) +{ + if (!m_pClientDE || !pObject || pObject->m_dwPhysicsFlags & MO_RESTING) return LTFALSE; + + bRemove = LTFALSE; + + LTBOOL bRet = LTFALSE; + LTVector vNewPos; + if (UpdateMovingObject(LTNULL, pObject, vNewPos)) + { + ClientIntersectInfo info; + + if (m_ds.bBounce) + { + uint dwFlags = (INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID); + bRet = BounceMovingObject(LTNULL, pObject, vNewPos, &info, + dwFlags, true, bBounceOnGround); + } + else + { + bRet = LTFALSE; + } + + // If we hit the sky/invisible surface we're done... + + SurfaceType eType = GetSurfaceType(info); + if (eType == ST_SKY || eType == ST_INVISIBLE) + { + bRemove = LTTRUE; + return LTFALSE; + } + + pObject->m_vLastPos = pObject->m_vPos; + pObject->m_vPos = vNewPos; + + if (g_pCommonLT->GetPointStatus(&vNewPos) == LT_OUTSIDE) + { + pObject->m_dwPhysicsFlags |= MO_RESTING; + pObject->m_vPos = pObject->m_vLastPos; + } + } + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::CreateDebris +// +// PURPOSE: Create the specified debris object +// +// ----------------------------------------------------------------------- // + +void CDebrisFX::CreateDebris(int i, LTVector vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return; + + pTracker->m_hDebris = g_pDebrisMgr->CreateDebris(m_ds.nDebrisId, vPos, i+1); + if (!pTracker->m_hDebris) return; + + LTVector vScale(1.0f, 1.0f, 1.0f); + vScale *= GetRandom(0.8f, 1.2f); + vScale *= GetRandom(m_ds.fMinScale, m_ds.fMaxScale); + m_pClientDE->SetObjectScale(pTracker->m_hDebris, &vScale); + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(pTracker->m_hDebris, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(pTracker->m_hDebris, r, g, b, m_ds.fAlpha); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::OkToRemoveDebris +// +// PURPOSE: See if this particular model can be removed. +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::OkToRemoveDebris(int i) +{ + // Debris sometimes doesn't get removed (and can keep piling up) + // with the following code, so we'll just fade instead ;) + + return LTTRUE; + + if (i < 0 || i >= m_ds.nNumDebris) return LTTRUE; + + if (!m_pClientDE || !g_pGameClientShell || !IsValidDebris(i) || m_ds.bForceRemove) return LTTRUE; + + // The only constraint is that the client isn't currently looking + // at the model... + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return LTTRUE; + + LTVector vPos, vCamPos; + if (!GetDebrisPos(i, vPos)) return LTTRUE; + + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + + + // Determine if the client can see us... + + LTVector vDir; + vDir = vPos - vCamPos; + vDir.Normalize(); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + if (vDir.Dot(rRot.Forward()) <= 0.0f) return LTTRUE; + + + // Client is looking our way, don't remove it yet... + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::RemoveDebris +// +// PURPOSE: Remove the specified debris object +// +// ----------------------------------------------------------------------- // + +void CDebrisFX::RemoveDebris(int i) +{ + if (i < 0 || i >= MAX_DEBRIS) return; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return; + + // Delete the handle if we can/need to + if (pTracker->m_hDebris && m_pClientDE) + { + m_pClientDE->RemoveObject(pTracker->m_hDebris); + pTracker->m_hDebris = LTNULL; + } + + // Remove it from the list + GetDebrisBank()->Delete(pTracker); + m_DebrisList[i] = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::IsValidDebris +// +// PURPOSE: Is the debris valid +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::IsValidDebris(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return LTFALSE; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return LTFALSE; + + return pTracker->m_hDebris != LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::RotateDebrisToRest +// +// PURPOSE: Rotate the debris to the rest position +// +// ----------------------------------------------------------------------- // + +void CDebrisFX::RotateDebrisToRest(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return; + + LTRotation rRot; + rRot.Rotate(LTVector(0.0f, 1.0f, 0.0f), pTracker->m_fYaw); + g_pLTClient->SetObjectRotation(pTracker->m_hDebris, &rRot); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::SetDebrisPos +// +// PURPOSE: Set the debris position +// +// ----------------------------------------------------------------------- // + +void CDebrisFX::SetDebrisPos(int i, const LTVector &vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return; + + g_pLTClient->SetObjectPos(pTracker->m_hDebris, const_cast(&vPos)); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::GetDebrisPos +// +// PURPOSE: Get the debris position +// +// ----------------------------------------------------------------------- // + +LTBOOL CDebrisFX::GetDebrisPos(int i, LTVector & vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris) return LTFALSE; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return LTFALSE; + + g_pLTClient->GetObjectPos(pTracker->m_hDebris, &vPos); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::SetDebrisRot +// +// PURPOSE: Set the debris rotation +// +// ----------------------------------------------------------------------- // + +void CDebrisFX::SetDebrisRot(int i, const LTRotation &rRot) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return; + + g_pLTClient->SetObjectRotation(pTracker->m_hDebris, const_cast(&rRot)); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::GetDebrisPos +// +// PURPOSE: Get the lifetime of the debris +// +// ----------------------------------------------------------------------- // + +LTFLOAT CDebrisFX::GetDebrisLife(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return 0.0f; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return 0.0f; + + return pTracker->m_fDebrisLife; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebrisFX::GetEmitter +// +// PURPOSE: Get the emitter of the debris +// +// ----------------------------------------------------------------------- // + +MovingObject *CDebrisFX::GetEmitter(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return LTNULL; + + // Get the tracker for this slot + DebrisTracker *pTracker = m_DebrisList[i]; + if (!pTracker) + return LTNULL; + + return &(pTracker->m_Emitter); +} + diff --git a/Jack/ClientShellDLL/DebrisFX.h b/Jack/ClientShellDLL/DebrisFX.h new file mode 100644 index 00000000..21ef6be3 --- /dev/null +++ b/Jack/ClientShellDLL/DebrisFX.h @@ -0,0 +1,148 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DebrisFX.h +// +// PURPOSE : Debris - Definition +// +// CREATED : 5/31/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __DEBRIS_FX_H__ +#define __DEBRIS_FX_H__ + +#include "SpecialFX.h" +#include "client_physics.h" +#include "DebrisMgr.h" +#include "BankedList.h" + +#define MAX_DEBRIS 20 + +struct DEBRISCREATESTRUCT : public SFXCREATESTRUCT +{ + DEBRISCREATESTRUCT(); + + LTRotation rRot; + LTVector vPos; + LTVector vMinVel; + LTVector vMaxVel; + LTVector vMinDOffset; + LTVector vMaxDOffset; + LTVector vMinWorldVel; + LTVector vMaxWorldVel; + LTFLOAT fMinLifeTime; + LTFLOAT fMaxLifeTime; + LTFLOAT fFadeTime; + uint8 nNumDebris; + LTBOOL bRotate; + LTBOOL bBounce; + uint8 nDebrisId; + uint8 nMinBounce; + uint8 nMaxBounce; + LTFLOAT fMinScale; + LTFLOAT fMaxScale; + LTFLOAT fGravityScale; + LTFLOAT fAlpha; + LTBOOL bPlayBounceSound; + LTBOOL bPlayExplodeSound; + LTBOOL bForceRemove; + LTBOOL bDirOffsetOnly; + char szWorldSpaceFX[128]; + char szImpactSpaceFX[128]; +}; + +inline DEBRISCREATESTRUCT::DEBRISCREATESTRUCT() +{ + rRot.Init(); + vPos.Init(); + vMinVel.Init(); + vMaxVel.Init(); + vMinDOffset.Init(); + vMaxDOffset.Init(); + vMinWorldVel.Init(); + vMaxWorldVel.Init(); + fMinLifeTime = 0.0f; + fMaxLifeTime = 0.0f; + fFadeTime = 0.0f; + nNumDebris = 0; + bRotate = LTFALSE; + bBounce = LTTRUE; + nDebrisId = DEBRISMGR_INVALID_ID; + nMinBounce = 0; + nMaxBounce = 0; + fMinScale = 0.0f; + fMaxScale = 0.0f; + fAlpha = 1.0f; + fGravityScale = 1.0f; + bPlayBounceSound = LTTRUE; + bPlayExplodeSound = LTTRUE; + bForceRemove = LTFALSE; + szWorldSpaceFX[0] = '\0'; + szImpactSpaceFX[0] = '\0'; +} + +class CDebrisFX : public CSpecialFX +{ + public : + + CDebrisFX(); + + ~CDebrisFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_DEBRIS_ID; } + + protected : + + DEBRISCREATESTRUCT m_ds; + + LTFLOAT m_fStartTime; // When did we start this crazy thing + LTFLOAT m_fLastTime; // Last time we created some particles + LTBOOL m_bFirstUpdate; // First update + + // Accessors for the old arrays.. + LTFLOAT GetDebrisLife(int i); + MovingObject *GetEmitter(int i); + + virtual LTBOOL UpdateEmitter(MovingObject* pObject, + LTBOOL & bRemove, LTBOOL & bBounceOnGround); + + virtual LTBOOL IsValidDebris(int i); + virtual void CreateDebris(int i, LTVector vPos); + virtual LTBOOL OkToRemoveDebris(int i); + virtual void RemoveDebris(int i); + virtual void RotateDebrisToRest(int i); + virtual void SetDebrisPos(int i, const LTVector &vPos); + virtual LTBOOL GetDebrisPos(int i, LTVector &vPos); + virtual void SetDebrisRot(int i, const LTRotation &rRot); + + private: + // Internal representation of the debris arrays + + struct DebrisTracker + { + DebrisTracker(); + ~DebrisTracker(); + + MovingObject m_Emitter; // Debris emitter + LTBOOL m_bActiveEmitter; // Active? + uint32 m_BounceCount; // Number of bounces + HOBJECT m_hDebris; + LTFLOAT m_fDebrisLife; + + // Emitter rotation tracking + LTFLOAT m_fPitch, m_fYaw, m_fRoll; + LTFLOAT m_fPitchVel, m_fYawVel, m_fRollVel; + }; + + static CBankedList *GetDebrisBank(); + + void ClearDebrisList(); + + DebrisTracker *m_DebrisList[MAX_DEBRIS]; +}; + +#endif // __DEBRIS_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DebugLineFX.cpp b/Jack/ClientShellDLL/DebugLineFX.cpp new file mode 100644 index 00000000..f3229142 --- /dev/null +++ b/Jack/ClientShellDLL/DebugLineFX.cpp @@ -0,0 +1,281 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DebugLineFX.cpp +// +// PURPOSE : DebugLine special FX - Implementation +// +// CREATED : 3/29/00 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "DebugLineFX.h" +#include "ClientUtilities.h" +#include "MsgIDs.h" +#include "InterfaceMgr.h" +#include "PlayerMgr.h" + +#pragma warning( disable : 4786 ) +#include + +#ifdef _DEBUG +//#define DEBUGLINEFX_DEBUG +#endif + + +namespace /* unnamed */ +{ + void SetLineDrawingMode(ILTDrawPrim * pDrawPrim) + { + ASSERT( pDrawPrim ); + + pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_WORLD); + pDrawPrim->SetZBufferMode(DRAWPRIM_ZRO); + pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + pDrawPrim->SetFillMode(DRAWPRIM_FILL); + pDrawPrim->SetColorOp(DRAWPRIM_NOCOLOROP); + pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + } + +}; // namespace /* unnamed */ + + + +CDebugLineFX::~CDebugLineFX() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebugLineFX::CreateObject +// +// PURPOSE: Creates the object and sends a message to the server for the data. +// +// ----------------------------------------------------------------------- // +LTBOOL CDebugLineFX::CreateObject(ILTClient* pClientDE) +{ + if (!CBaseLineSystemFX::CreateObject(pClientDE)) return LTFALSE; + + ASSERT( g_pLTClient ); + +#ifdef DEBUGLINEFX_DEBUG + g_pLTClient->CPrint("%f : Linesystem %d created.", + g_pLTClient->GetTime(), GetObject() ); +#endif + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreateFormattedPolyString(pFont,"debug",0.0f, 0.0f); + m_pStr->SetColor(argbWhite); + m_pStr->SetAlignmentH(CUI_HALIGN_CENTER); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebugLineFX::OnServerMessage +// +// PURPOSE: Read an update message from the server. +// +// ----------------------------------------------------------------------- // +LTBOOL CDebugLineFX::OnServerMessage(ILTMessage_Read * pMsg) +{ + + // Read the number of lines. + const int num_lines = pMsg->Readuint16(); + + // Set the new maximum number of lines + m_nMaxLines = pMsg->Readuint32(); + + // See if the server is telling us to clear our old lines. + m_bClearOldLines = (pMsg->Readuint8() != 0); + +#ifdef DEBUGLINEFX_DEBUG + g_pLTClient->CPrint("Reading %d lines, clear lines is %s.", + num_lines, m_bClearOldLines ? "true" : "false"); +#endif + + // If we don't have any lines, we want to clear our old lines + // so that the object will be re-positioned correctly. + if( lines.empty() ) + m_bClearOldLines = true; + + // Clear the lines from memory. The lines will be removed from + // the line system in Update. + if( m_bClearOldLines ) + { +#ifdef DEBUGLINEFX_DEBUG + g_pLTClient->CPrint("Clearing %d lines.", lines.size()); +#endif + + lines.clear(); + } + + // Read each line. + DebugLine new_line; + LT_LINEF new_linef; + LTVector maxV(0.0f,0.0f,0.0f); + LTVector minV(0.0f,0.0f,0.0f); + bool first = true; + for(int i = 0; i < num_lines; ++i) + { + pMsg->ReadType(&new_line); + + new_linef.verts[0].x = new_line.vSource.x; + new_linef.verts[0].y = new_line.vSource.y; + new_linef.verts[0].z = new_line.vSource.z; + + new_linef.verts[1].x = new_line.vDest.x; + new_linef.verts[1].y = new_line.vDest.y; + new_linef.verts[1].z = new_line.vDest.z; + + new_linef.rgba.r = new_line.rgba.r; + new_linef.rgba.g = new_line.rgba.g; + new_linef.rgba.b = new_line.rgba.b; + new_linef.rgba.a = new_line.rgba.a; + + lines.push_back( new_linef ); + + if (first) + { + first = false; + maxV.x = Max(new_line.vSource.x,new_line.vDest.x); + maxV.y = Max(new_line.vSource.y,new_line.vDest.y); + maxV.z = Max(new_line.vSource.z,new_line.vDest.z); + + minV.x = Min(new_line.vSource.x,new_line.vDest.x); + minV.y = Min(new_line.vSource.y,new_line.vDest.y); + minV.z = Min(new_line.vSource.z,new_line.vDest.z); + + } + else + { + maxV.x = Max(maxV.x,new_line.vSource.x); + maxV.y = Max(maxV.y,new_line.vSource.y); + maxV.z = Max(maxV.z,new_line.vSource.z); + maxV.x = Max(maxV.x,new_line.vDest.x); + maxV.y = Max(maxV.y,new_line.vDest.y); + maxV.z = Max(maxV.z,new_line.vDest.z); + + minV.x = Min(minV.x,new_line.vSource.x); + minV.y = Min(minV.y,new_line.vSource.y); + minV.z = Min(minV.z,new_line.vSource.z); + minV.x = Min(minV.x,new_line.vDest.x); + minV.y = Min(minV.y,new_line.vDest.y); + minV.z = Min(minV.z,new_line.vDest.z); + + } + } + + char szDebugString[256]; + pMsg->ReadString(szDebugString,sizeof(szDebugString)); + m_pStr->SetText(szDebugString); + + if (num_lines) + { + vStrPos = (maxV + minV) / 2.0f; + vStrPos.y += 16.0f; + uint32 color = SET_ARGB(new_linef.rgba.a,new_linef.rgba.r,new_linef.rgba.g,new_linef.rgba.b); + m_pStr->SetColor(color); + } + + // Make sure the lines get updated. + m_bUpdateLines = true; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebugLineFX::Update +// +// PURPOSE: If needed, update the cast line (recalculate end point), +// +// ----------------------------------------------------------------------- // +LTBOOL CDebugLineFX::Update() +{ + if(!m_hObject || !g_pLTClient || !m_hServerObject) return LTFALSE; + + if ( IsWaitingForRemove() ) + { + // No sense in adding lines now. + return LTFALSE; + } + + + // Trim the list to max lines or less (from the front, as they are the oldest). + if( !lines.empty() && lines.size() > m_nMaxLines ) + { + const uint32 nNumOver = lines.size() - m_nMaxLines; + + lines.erase(lines.begin(), lines.begin() + nNumOver); + } + + if (!lines.empty()) + { + + + LTVector pos = g_pInterfaceMgr->GetScreenFromWorldPos(vStrPos, g_pPlayerMgr->GetCamera()); + + if (pos.z > 0.0f && pos.z < 900.0f) + { + +// LTVector vScrnPos = g_pInterfaceMgr->GetWorldFromScreenPos(pos,verts.z); + + uint8 h = (uint8)(g_pInterfaceResMgr->GetXRatio() * 5000.0f / (100.0f + pos.z)); + + if (h != m_pStr->GetCharScreenHeight()) + { + m_pStr->SetCharScreenHeight(h); + } + + m_pStr->SetPosition( pos.x, pos.y); + } + else + { + m_pStr->SetPosition( 2000.0f, -1000.0f); + } + } + + // If we cleared our lines out, then remove ourselves. + if( m_bClearOldLines && lines.empty( )) + { + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDebugLineFX::Render +// +// PURPOSE: Render the line system. +// +// ----------------------------------------------------------------------- // +void CDebugLineFX::Render(HOBJECT hCamera) +{ + // Be sure it is in the right state. + SetLineDrawingMode(g_pDrawPrim); + + // Draw all the lines. + if( !lines.empty() ) + { + g_pDrawPrim->DrawPrim( &lines[0], lines.size() ); + m_pStr->Render(); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/DebugLineFX.h b/Jack/ClientShellDLL/DebugLineFX.h new file mode 100644 index 00000000..ecfcaaeb --- /dev/null +++ b/Jack/ClientShellDLL/DebugLineFX.h @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DebugLineFX.h +// +// PURPOSE : DebugLine special fx class -- Provides line system for debugging AI's. +// +// CREATED : 3/27/00 +// +// ----------------------------------------------------------------------- // + +#ifndef __DEBUGLINE_FX_H__ +#define __DEBUGLINE_FX_H__ + +#include "LTBaseTypes.h" +#include "BaseLineSystemFX.h" +#include "DebugLine.h" +#include "ILTDrawPrim.h" +#include "iltfontmanager.h" + +#pragma warning( disable : 4786 ) +#include + +struct DebugLineCreator : public SFXCREATESTRUCT +{ +}; + +class CDebugLineFX : public CBaseLineSystemFX +{ + + public : + + // This _must_ be a std::vector or a new allocated array! + typedef std::vector< LT_LINEF > LineList; + + public : + + CDebugLineFX() + : m_nMaxLines(0), + m_bUpdateLines(false), + m_bClearOldLines(false), + m_pStr(NULL), + m_vLastLocation(0,0,0) {} + + virtual ~CDebugLineFX(); + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + virtual void Render(HOBJECT hCamera); + + virtual LTBOOL OnServerMessage(ILTMessage_Read * pMsg); + + virtual uint32 GetSFXID() { return SFX_DEBUGLINE_ID; } + + protected : + + uint32 m_nMaxLines; + + LineList lines; + + bool m_bUpdateLines; + bool m_bClearOldLines; + LTVector m_vLastLocation; + + CUIFormattedPolyString *m_pStr; + LTVector vStrPos; + +}; + + +#endif // __DEBUGLINE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DynamicLightFX.cpp b/Jack/ClientShellDLL/DynamicLightFX.cpp new file mode 100644 index 00000000..1b02930a --- /dev/null +++ b/Jack/ClientShellDLL/DynamicLightFX.cpp @@ -0,0 +1,161 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DynamicLightFX.cpp +// +// PURPOSE : Dynamic light special FX - Implementation +// +// CREATED : 2/25/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "DynamicLightFX.h" +#include "iltclient.h" +#include "VarTrack.h" + +static VarTrack g_vtDLightOffsetX; +static VarTrack g_vtDLightOffsetY; +static VarTrack g_vtDLightOffsetZ; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicLightFX::Init +// +// PURPOSE: Init the dynamic light +// +// ----------------------------------------------------------------------- // + +LTBOOL CDynamicLightFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + DLCREATESTRUCT* pDL = (DLCREATESTRUCT*)psfxCreateStruct; + + m_vColor = pDL->vColor; + m_vPos = pDL->vPos; + m_fMinRadius = pDL->fMinRadius; + m_fMaxRadius = pDL->fMaxRadius; + m_fRampUpTime = pDL->fRampUpTime; + m_fMaxTime = pDL->fMaxTime; + m_fMinTime = pDL->fMinTime; + m_fRampDownTime = pDL->fRampDownTime; + m_dwFlags = pDL->dwFlags; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicLightFX::CreateObject +// +// PURPOSE: Create object associated the dynamic light. +// +// ----------------------------------------------------------------------- // + +LTBOOL CDynamicLightFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + if (!g_vtDLightOffsetX.IsInitted()) + { + g_vtDLightOffsetX.Init(pClientDE, "DLightOffsetX", "", 0.0f); + } + + if (!g_vtDLightOffsetY.IsInitted()) + { + g_vtDLightOffsetY.Init(pClientDE, "DLightOffsetY", "", 0.0f); + } + + if (!g_vtDLightOffsetZ.IsInitted()) + { + g_vtDLightOffsetZ.Init(pClientDE, "DLightOffsetZ", "", 0.0f); + } + + // Allow create object to be called to re-init object... + + if (m_hObject) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, m_dwFlags, FLAGMASK_ALL); + m_pClientDE->SetObjectPos(m_hObject, &m_vPos); + } + else + { + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = m_dwFlags; + createStruct.m_Pos = m_vPos; + + // TESTING FOR MUZZLE FLASH!!!! + createStruct.m_Pos.x += g_vtDLightOffsetX.GetFloat(); + createStruct.m_Pos.y += g_vtDLightOffsetY.GetFloat(); + createStruct.m_Pos.z += g_vtDLightOffsetZ.GetFloat(); + // TESTING!!!! + + m_hObject = m_pClientDE->CreateObject(&createStruct); + if (!m_hObject) return LTFALSE; + } + + m_pClientDE->SetLightColor(m_hObject, m_vColor.x, m_vColor.y, m_vColor.z); + m_pClientDE->SetLightRadius(m_hObject, m_fMinRadius); + + m_fStartTime = m_pClientDE->GetTime(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicLightFX::Update +// +// PURPOSE: Update the light +// +// ----------------------------------------------------------------------- // + +LTBOOL CDynamicLightFX::Update() +{ + if(!m_hObject || !m_pClientDE) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + LTFLOAT fRadius = m_fMinRadius; + + if (fTime < m_fStartTime + m_fMinTime) + { + return LTTRUE; + } + else if (fTime < m_fStartTime + m_fMinTime + m_fRampUpTime) + { + if (m_fRampUpTime > 0.0f) + { + LTFLOAT fDelta = fTime - (m_fStartTime + m_fMinTime); + LTFLOAT fOffset = fDelta * (m_fMaxRadius - m_fMinRadius)/m_fRampUpTime; + fRadius += fOffset; + } + } + else if (fTime < m_fStartTime + m_fMinTime + m_fRampUpTime + m_fMaxTime) + { + fRadius = m_fMaxRadius; + } + else if (fTime < m_fStartTime + m_fMinTime + m_fRampUpTime + m_fMaxTime + m_fRampDownTime) + { + if (m_fRampDownTime > 0.0f) + { + LTFLOAT fDelta = fTime - (m_fStartTime + m_fMinTime + m_fRampUpTime + m_fMaxTime); + LTFLOAT fOffset = fDelta * m_fMaxRadius/m_fRampDownTime; + fRadius = m_fMaxRadius - fOffset; + } + } + else + { + return LTFALSE; + } + + m_pClientDE->SetLightRadius(m_hObject, fRadius); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/DynamicLightFX.h b/Jack/ClientShellDLL/DynamicLightFX.h new file mode 100644 index 00000000..d0a744ff --- /dev/null +++ b/Jack/ClientShellDLL/DynamicLightFX.h @@ -0,0 +1,88 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DynamicLightFX.h +// +// PURPOSE : Dynamic Light special fx class - Definition +// +// CREATED : 2/25/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __DYNAMIC_LIGHT_FX_H__ +#define __DYNAMIC_LIGHT_FX_H__ + +#include "SpecialFX.h" + + +struct DLCREATESTRUCT : public SFXCREATESTRUCT +{ + DLCREATESTRUCT(); + + LTVector vColor; + LTVector vPos; + LTFLOAT fMinRadius; + LTFLOAT fMaxRadius; + LTFLOAT fRampUpTime; + LTFLOAT fMaxTime; + LTFLOAT fMinTime; + LTFLOAT fRampDownTime; + uint32 dwFlags; +}; + +inline DLCREATESTRUCT::DLCREATESTRUCT() +{ + vColor.Init(); + vPos.Init(); + fMinRadius = 0.0f; + fMaxRadius = 0.0f; + fRampUpTime = 0.0f; + fMaxTime = 0.0f; + fMinTime = 0.0f; + fRampDownTime = 0.0f; + dwFlags = 0; +} + + +class CDynamicLightFX : public CSpecialFX +{ + public : + + CDynamicLightFX() : CSpecialFX() + { + VEC_SET(m_vColor, 1.0f, 1.0f, 1.0f); + m_vPos.Init(); + m_fMinRadius = 100.0f; + m_fMaxRadius = 300.0f; + m_fRampUpTime = 1.0f; + m_fMaxTime = 1.0f; + m_fMinTime = 1.0f; + m_fRampDownTime = 1.0f; + m_dwFlags = 0; + + m_fStartTime = 0.0f; + } + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_DYNAMICLIGHT_ID; } + + private : + + LTVector m_vColor; + LTVector m_vPos; + LTFLOAT m_fMinRadius; + LTFLOAT m_fMaxRadius; + LTFLOAT m_fRampUpTime; + LTFLOAT m_fMaxTime; + LTFLOAT m_fMinTime; + LTFLOAT m_fRampDownTime; + uint32 m_dwFlags; + + LTFLOAT m_fStartTime; // When did we start +}; + +#endif // __DYNAMIC_LIGHT_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/DynamicOccluderVolumeFX.cpp b/Jack/ClientShellDLL/DynamicOccluderVolumeFX.cpp new file mode 100644 index 00000000..89ede615 --- /dev/null +++ b/Jack/ClientShellDLL/DynamicOccluderVolumeFX.cpp @@ -0,0 +1,175 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DynamicOccluderVolumeFX.cpp +// +// PURPOSE : DynamicOccluderVolume special fx class - Implementation +// +// CREATED : 4/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "DynamicOccluderVolumeFX.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::CDynamicOccluderVolumeFX +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CDynamicOccluderVolumeFX::CDynamicOccluderVolumeFX() +: CSpecialFX (), + m_bEnabled ( true ), + m_nNumOccluderIds ( 0 ) +{ + m_nOccluderIds[0] = 0; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::~CDynamicOccluderVolumeFX +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CDynamicOccluderVolumeFX::~CDynamicOccluderVolumeFX() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::Init +// +// PURPOSE: Init the DynamicOccluderVolume.... +// +// ----------------------------------------------------------------------- // + +LTBOOL CDynamicOccluderVolumeFX::Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::Init( hServObj, pMsg )) + return LTFALSE; + + if( !pMsg ) + return LTFALSE; + + LTBOOL bRet = OnServerMessage(pMsg); + + // All occluders should be disabled by default... + m_bEnabled = false; + EnableOccluders(false); + + // All groups are enabled by default, but we don't need to change anything... + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::OnServerMessage +// +// PURPOSE: Handle a message from the server... +// +// ----------------------------------------------------------------------- // + +LTBOOL CDynamicOccluderVolumeFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !pMsg ) return LTFALSE; + + //we need to read this initial list in a manner that we won't go beyond our storage, but + //all data will still be read in preparation for our next list + + //read in the list of all the occluder ID's + uint32 nNumOccluderIds = pMsg->Readuint8(); + m_nNumOccluderIds = 0; + + uint32 i; + for (i=0; i < nNumOccluderIds; i++) + { + if(i < kMaxOccluderIds) + { + m_nOccluderIds[m_nNumOccluderIds] = pMsg->Readuint32(); + m_nNumOccluderIds++; + } + } + + //now read in the list of all the render groups + uint32 nNumRenderGroups = pMsg->Readuint8(); + m_nNumRenderGroups = 0; + + for (i=0; i < nNumRenderGroups; i++) + { + if(i < kMaxRenderGroups) + { + m_nRenderGroups[m_nNumRenderGroups] = pMsg->Readuint8(); + m_nNumRenderGroups++; + } + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::EnableOccluders +// +// PURPOSE: Enable our occluders... +// +// ----------------------------------------------------------------------- // + +void CDynamicOccluderVolumeFX::EnableOccluders(bool bEnable) +{ + for (int i=0; i < m_nNumOccluderIds; i++) + { + g_pLTClient->SetOccluderEnabled(m_nOccluderIds[i], bEnable); + } + + m_bEnabled = bEnable; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::EnableRenderGroups +// +// PURPOSE: Enable render groups associated with this volume +// +// ----------------------------------------------------------------------- // +void CDynamicOccluderVolumeFX::EnableRenderGroups(bool bEnable) +{ + for (uint32 nCurrRenderGroup = 0; nCurrRenderGroup < m_nNumRenderGroups; nCurrRenderGroup++) + { + g_pLTClient->SetObjectRenderGroupEnabled(m_nRenderGroups[nCurrRenderGroup], bEnable); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDynamicOccluderVolumeFX::Enable +// +// PURPOSE: Enable render data associated with this volume +// +// ----------------------------------------------------------------------- // +void CDynamicOccluderVolumeFX::Enable(bool bEnable) +{ + //avoid redundant changes + if(bEnable == m_bEnabled) + return; + + //alright, it has changed, apply the change + EnableRenderGroups(!bEnable); + EnableOccluders(bEnable); + + //set that to our new state + m_bEnabled = bEnable; +} diff --git a/Jack/ClientShellDLL/DynamicOccluderVolumeFX.h b/Jack/ClientShellDLL/DynamicOccluderVolumeFX.h new file mode 100644 index 00000000..b7e879b4 --- /dev/null +++ b/Jack/ClientShellDLL/DynamicOccluderVolumeFX.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : DynamicOccluderVolumeFX.h +// +// PURPOSE : DynamicOccluderVolume special fx class - Definition +// +// CREATED : 4/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __DYNAMIC_OCCLUDER_VOLUME_FX_H__ +#define __DYNAMIC_OCCLUDER_VOLUME_FX_H__ + +// +// Includes... +// + + #include "SpecialFX.h" + + +class CDynamicOccluderVolumeFX : public CSpecialFX +{ + public : // Methods... + + CDynamicOccluderVolumeFX(); + ~CDynamicOccluderVolumeFX(); + + virtual LTBOOL Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ); + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_DYNAMIC_OCCLUDER_ID; } + + //handle enabling and disabling the rendering settings associated with this volume + void Enable(bool bEnable); + + protected : // Members... + + void EnableOccluders(bool bEnable); + void EnableRenderGroups(bool bEnable); + + enum constants { kMaxOccluderIds = 10, + kMaxRenderGroups = 20}; + + bool m_bEnabled; + + uint8 m_nNumOccluderIds; + uint32 m_nOccluderIds[kMaxOccluderIds]; + + uint8 m_nNumRenderGroups; + uint8 m_nRenderGroups[kMaxRenderGroups]; +}; + +#endif // __DYNAMIC_OCCLUDER_VOLUME_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ExplosionFX.cpp b/Jack/ClientShellDLL/ExplosionFX.cpp new file mode 100644 index 00000000..70dfd320 --- /dev/null +++ b/Jack/ClientShellDLL/ExplosionFX.cpp @@ -0,0 +1,116 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ExplosionFX.cpp +// +// PURPOSE : Explosion special FX - Implementation +// +// CREATED : 12/29/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ExplosionFX.h" +#include "FXButeMgr.h" +#include "ClientServerShared.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CExplosionFX::Init +// +// PURPOSE: Init the particle system fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CExplosionFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + EXPLOSIONCREATESTRUCT cs; + + cs.hServerObj = hServObj; + cs.Read(pMsg); + + return Init(&cs); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CExplosionFX::Init +// +// PURPOSE: Init the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CExplosionFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + // Set up our creation struct... + + EXPLOSIONCREATESTRUCT* pCS = (EXPLOSIONCREATESTRUCT*)psfxCreateStruct; + m_cs = *pCS; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CExplosionFX::CreateObject +// +// PURPOSE: Create object associated with the explosion +// +// ----------------------------------------------------------------------- // + +LTBOOL CExplosionFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + // Create the specified explosion... + + IMPACTFX* pImpactFX = g_pFXButeMgr->GetImpactFX(m_cs.nImpactFX); + if (pImpactFX) + { + // Determine what surface we're on???? + + SurfaceType eSurfaceType = ST_UNKNOWN; + + + // Determine what container we're in... + + ContainerCode eCode; + HLOCALOBJ objList[1]; + LTVector vTestPos = m_cs.vPos; + uint32 dwNum = ::GetPointContainers(vTestPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (g_pLTClient->GetContainerCode(objList[0], &dwCode)) + { + eCode = (ContainerCode)dwCode; + } + } + + // Figure out what surface normal to use... + + IFXCS cs; + cs.eCode = eCode; + cs.eSurfType = eSurfaceType; + cs.rSurfRot = m_cs.rRot; + cs.vDir.Init(0, 0, 0); + cs.vPos = m_cs.vPos; + cs.vSurfNormal = m_cs.rRot.Forward(); + cs.fBlastRadius = m_cs.fDamageRadius; + cs.fTintRange = m_cs.fDamageRadius * 5.0f; + cs.bPlaySound = LTTRUE; + + g_pFXButeMgr->CreateImpactFX(pImpactFX, cs); + } + + return LTFALSE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ExplosionFX.h b/Jack/ClientShellDLL/ExplosionFX.h new file mode 100644 index 00000000..2660ca9e --- /dev/null +++ b/Jack/ClientShellDLL/ExplosionFX.h @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ExplosionFX.h +// +// PURPOSE : Explosion special fx class - Definition +// +// CREATED : 12/29/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __EXPLOSION_FX_H__ +#define __EXPLOSION_FX_H__ + +#include "SpecialFX.h" +#include "SharedFXStructs.h" + +class CExplosionFX : public CSpecialFX +{ + public : + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_EXPLOSION_ID; } + + protected : + + // Creation data... + + EXPLOSIONCREATESTRUCT m_cs; // Holds all initialization data +}; + +#endif // __EXPLOSION_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/FastList.h b/Jack/ClientShellDLL/FastList.h new file mode 100644 index 00000000..1c07a2c4 --- /dev/null +++ b/Jack/ClientShellDLL/FastList.h @@ -0,0 +1,589 @@ +//---------------------------------------------------------- +// +// MODULE : FASTLIST.H +// +// PUROSE : CFastList definition file +// +// CREATED : 10 / 27 / 1996 +// +//---------------------------------------------------------- + +#ifndef __FASTLIST_H_ + #define __FASTLIST_H_ + + // Includes.... + + template struct CFastListNode + { + public: + + // Constructor + CFastListNode() { m_pPrev = NULL; m_pNext = NULL; } + + // Accessors + + CFastListNode* GetPrev() { return m_pPrev; } + CFastListNode* GetNext() { return m_pNext; } + T GetData() { return m_Data; } + + CFastListNode *m_pPrev; + CFastListNode *m_pNext; + T m_Data; + }; + + template class CFastList + { + public: + + // Constructor + + CFastList(); + CFastList(int nTotalElem); + + // Destructor + + ~CFastList() { Term(); } + + // Member Functions + + void Term(BOOL bDeAlloc = TRUE); + + BOOL AddHead(T data); + BOOL AddTail(T data); + BOOL InsertAfter(CFastListNode *pNode, T data); + BOOL InsertBefore(CFastListNode *pNode, T data); + T RemoveHead(); + T RemoveTail(); + void Remove(CFastListNode *pNode); + void Remove(T data); + void RemoveAll() { Term(); } + CFastListNode* Find(T data); + T Get(DWORD dwIndex); + int GetIndex(T data); + + // Accessors + + CFastListNode* GetBlock() { return m_pBlock; } + CFastListNode* GetHead() { return m_pHead; } + CFastListNode* GetTail() { return m_pTail; } + DWORD GetSize() { return m_nSize; } + + private: + + // Member Functions + + void AllocMem(int nTotalElem); + + // Member Variables + + CFastListNode *m_pBlock; + CFastListNode *m_pFreeList; + CFastListNode *m_pHead; + CFastListNode *m_pTail; + DWORD m_nSize; + DWORD m_nTotalElem; + BOOL m_bAllocated; + }; + + //---------------------------------------------------------- + // + // FUNCTION : CFastList() + // + // PURPOSE : Standard constructor + // + //---------------------------------------------------------- + + template inline CFastList::CFastList() + { + m_pBlock = NULL; + m_pHead = NULL; + m_pTail = NULL; + m_nSize = 0; + + // Allocate the memory + + AllocMem(100); + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList() + // + // PURPOSE : Standard constructor + // + //---------------------------------------------------------- + + template inline CFastList::CFastList(int nTotalElem) + { + m_pBlock = NULL; + m_pHead = NULL; + m_pTail = NULL; + m_nSize = 0; + + // Allocate the memory + + AllocMem(nTotalElem); + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::Term() + // + // PURPOSE : Terminates a CFastList + // + //---------------------------------------------------------- + + template inline void CFastList::Term(BOOL bDeAlloc) + { + if (m_pBlock) debug_deletea(m_pBlock); + m_pBlock = NULL; + m_pHead = NULL; + m_pTail = NULL; + m_pFreeList = NULL; + + m_nSize = 0; + + if (!bDeAlloc) AllocMem(m_nTotalElem); + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::AddHead() + // + // PURPOSE : Adds an element to the head of the array + // + //---------------------------------------------------------- + + template inline BOOL CFastList::AddHead(T data) + { + if (!m_pHead) + { + m_pHead = debug_new(CFastListNode); + if (!m_pRoot) return FALSE; + + m_pHead->m_Data = data; + + if (!m_pTail) m_pTail = m_pHead; + } + else + { + CFastListNode *pNewNode = debug_new(CFastListNode); + if (!pNewNode) return FALSE; + + m_pHead->m_pPrev = pNewNode; + pNewNode->m_pNext = m_pHead; + pNewNode->m_Data = data; + + m_pHead = pNewNode; + } + + m_nSize ++; + + // Success !! + + return TRUE; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::AddTail() + // + // PURPOSE : Adds an element to the tail of the array + // + //---------------------------------------------------------- + + template inline BOOL CFastList::AddTail(T data) + { + if (!m_pTail) + { + m_pTail = m_pFreeList; + if (!m_pTail) return FALSE; + + m_pFreeList = m_pFreeList->m_pNext; + m_pFreeList->m_pPrev = NULL; + + m_pTail->m_pPrev = NULL; + m_pTail->m_pNext = NULL; + + m_pTail->m_Data = data; + + if (!m_pHead) m_pHead = m_pTail; + } + else + { + CFastListNode *pNewNode = m_pFreeList; + if (!pNewNode) return FALSE; + + m_pFreeList = m_pFreeList->m_pNext; + m_pFreeList->m_pPrev = NULL; + + pNewNode->m_pPrev = NULL; + pNewNode->m_pNext = NULL; + + m_pTail->m_pNext = pNewNode; + pNewNode->m_pPrev = m_pTail; + pNewNode->m_Data = data; + + m_pTail = pNewNode; + } + + m_nSize ++; + + // Success !! + + return TRUE; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::InsertAfter() + // + // PURPOSE : Inserts an element into the list + // + //---------------------------------------------------------- + + template inline BOOL CFastList::InsertAfter(CFastListNode *pNode, T data) + { + CFastListNode *pNewNode = m_pFreeList; + if (!pNewNode) return FALSE; + + m_pFreeList = m_pFreeList->m_pNext; + m_pFreeList->m_pPrev = NULL; + + pNewNode->m_pNext = NULL; + pNewNode->m_pPrev = NULL; + + // Copy in data + + pNewNode->m_Data = data; + + pNewNode->m_pPrev = pNode; + + if (pNode->m_pNext) + { + pNewNode->m_pNext = pNode->m_pNext; + pNode->m_pNext->m_pPrev = pNewNode; + } + else + { + m_pTail = pNewNode; + } + + pNode->m_pNext = pNewNode; + + m_nSize ++; + + // Success !! + + return TRUE; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::InsertBefore() + // + // PURPOSE : Inserts an element into the list + // + //---------------------------------------------------------- + + template inline BOOL CFastList::InsertBefore(CFastListNode *pNode, T data) + { + CFastListNode *pNewNode = m_pFreeList; + if (!pNewNode) return FALSE; + + m_pFreeList = m_pFreeList->m_pNext; + m_pFreeList->m_pPrev = NULL; + + pNewNode->m_pNext = pNode; + + if (pNode->m_pPrev) + { + pNewNode->m_pPrev = pNode->m_pPrev; + } + else + { + m_pHead = pNewNode; + } + + pNode->m_pPrev = pNewNode; + + m_nSize ++; + + // Success !! + + return TRUE; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::RemoveHead() + // + // PURPOSE : Removes head element + // + //---------------------------------------------------------- + + template inline T CFastList::RemoveHead() + { + CFastListNode *pNode; + T Data; + + if (m_pHead) + { + pNode = m_pHead; + Data = m_pHead->m_Data; + + m_pHead = m_pHead->m_pNext; + + if (!m_pHead) + { + // List is empty.. + + m_pTail = NULL; + } + else + { + if (m_pHead->m_pNext) + { + // Correct link + + m_pHead->m_pNext->m_pPrev = m_pHead; + } + } + + pNode->m_pNext = m_pFreeList->m_pNext; + pNode->m_pPrev = m_pFreeList; + m_pFreeList->m_pNext = pNode; + + m_nSize --; + } + + return Data; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::RemoveTail() + // + // PURPOSE : Removes head element + // + //---------------------------------------------------------- + + template inline T CFastList::RemoveTail() + { + CFastListNode *pNode; + T Data; + + if (m_pTail) + { + pNode = m_pTail; + Data = m_pTail->m_Data; + + if (m_pTail->m_pPrev) + { + m_pTail = m_pTail->m_pPrev; + } + else + { + // List is empty.. + + m_pHead = NULL; + m_pTail = NULL; + } + + m_nSize --; + + pNode->m_pNext = m_pFreeList->m_pNext; + pNode->m_pPrev = m_pFreeList; + m_pFreeList->m_pNext = pNode; + } + + return Data; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::Remove() + // + // PURPOSE : Removes an element from the list + // + //---------------------------------------------------------- + + template inline void CFastList::Remove(CFastListNode *pNode) + { + CFastListNode *pPrev = pNode->m_pPrev; + CFastListNode *pNext = pNode->m_pNext; + + if ((pPrev) && (pNext)) + { + pPrev->m_pNext = pNext; + pNext->m_pPrev = pPrev; + } + + if ((!pPrev) && (pNext)) + { + pNext->m_pPrev = NULL; + m_pHead = pNext; + } + + if ((pPrev) && (!pNext)) + { + pPrev->m_pNext = NULL; + m_pTail = pPrev; + } + + if ((!pPrev) && (!pNext)) + { + m_pTail = NULL; + m_pHead = NULL; + } + + // Delete link + + pNode->m_pNext = m_pFreeList->m_pNext; + pNode->m_pPrev = m_pFreeList; + m_pFreeList->m_pNext = pNode; + + m_nSize --; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::Remove() + // + // PURPOSE : Removes an element from the list (SLOW) + // + //---------------------------------------------------------- + + template inline void CFastList::Remove(T data) + { + CFastListNode *pNode = m_pHead; + if (!pNode) return; + + while (pNode) + { + if (pNode->m_Data == data) + { + Remove(pNode); + return; + } + + pNode = pNode->m_pNext; + } + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::Find() + // + // PURPOSE : Finds a data element in the list + // + //---------------------------------------------------------- + + template inline CFastListNode* CFastList::Find(T data) + { + CFastListNode *pNode = m_pHead; + + if (!pNode) return NULL; + + while (pNode) + { + if (pNode->m_Data == data) + { + return pNode; + } + + pNode = pNode->m_pNext; + } + + return NULL; + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::Get() + // + // PURPOSE : Returns data for a given index + // + //---------------------------------------------------------- + + template inline T CFastList::Get(DWORD dwIndex) + { + CFastListNode *pNode = m_pHead; + + if (!pNode) return NULL; + + for (DWORD i = 0; i < dwIndex; i ++) + { + pNode = pNode->GetNext(); + } + + return pNode->GetData(); + } + + //---------------------------------------------------------- + // + // FUNCTION : CFastList::GetIndex() + // + // PURPOSE : Returns an index for a given pointer + // + //---------------------------------------------------------- + + template inline int CFastList::GetIndex(T data) + { + int i = 0; + CFastListNode *pNode = m_pHead; + + if (!pNode) return NULL; + + while (pNode) + { + if (pNode->m_Data == data) + { + return i; + } + + pNode = pNode->m_pNext; + i ++; + } + + return -1; + } + + //------------------------------------------------------------------ + // + // FUNCTION : Alloc() + // + // PURPOSE : Allocates memory block for list and links it + // + //------------------------------------------------------------------ + + template inline void CFastList::AllocMem(int nTotalElem) + { + if (m_pBlock) debug_deletea(m_pBlock); + + m_pBlock = debug_newa(CFastListNode, nTotalElem); + m_nTotalElem = nTotalElem; + + m_pFreeList = m_pBlock; + + // Link up all the nodes + + CFastListNode *pStart = m_pBlock; + + pStart->m_pPrev = NULL; + pStart->m_pNext = pStart + 1; + pStart ++; + + for (int i = 1; i < nTotalElem - 1; i ++) + { + pStart->m_pNext = pStart + 1; + pStart->m_pPrev = pStart - 1; + + pStart ++; + } + + pStart->m_pPrev = pStart - 1; + pStart->m_pNext = NULL; + } + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/FireFX.cpp b/Jack/ClientShellDLL/FireFX.cpp new file mode 100644 index 00000000..f94ae839 --- /dev/null +++ b/Jack/ClientShellDLL/FireFX.cpp @@ -0,0 +1,404 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FireFX.cpp +// +// PURPOSE : FireFX special FX - Implementation +// +// CREATED : 5/06/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "FireFX.h" +#include "RandomSparksFX.h" +#include "GameClientShell.h" +#include "ClientButeMgr.h" + +#define FFX_DEFAULT_RADIUS 100.0f +#define FFX_MIN_RADIUS 20.0f +#define FFX_MAX_RADIUS 500.0f +#define FFX_INNER_CAM_RADIUS 300.0f +#define FFX_CAM_FALLOFF_RANGE 300.0f +#define FFX_DEFAULT_SMOKE_PARTICLE_RADIUS 7000.0f +#define FFX_DEFAULT_FIRE_PARTICLE_RADIUS 4000.0f +#define FFX_MAX_SMOKE_PARTICLE_RADIUS (FFX_DEFAULT_SMOKE_PARTICLE_RADIUS * 1.3f) +#define FFX_MAX_FIRE_PARTICLE_RADIUS (FFX_DEFAULT_FIRE_PARTICLE_RADIUS) +#define FFX_MIN_FIRE_PARTICLE_LIFETIME 0.25f +#define FFX_MAX_FIRE_PARTICLE_LIFETIME 2.0f +#define FFX_MIN_SMOKE_PARTICLE_LIFETIME 0.5f +#define FFX_MAX_SMOKE_PARTICLE_LIFETIME 6.0f +#define FFX_MAX_LIGHT_RADIUS 300.0f + + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFireFX::Init +// +// PURPOSE: Init the lightning fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CFireFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Read in the init info from the message... + + FIRECREATESTRUCT fire; + fire.hServerObj = hServObj; + fire.fRadius = pMsg->Readfloat(); + fire.fSoundRadius = pMsg->Readfloat(); + fire.fLightRadius = pMsg->Readfloat(); + fire.fLightPhase = pMsg->Readfloat(); + fire.fLightFreq = pMsg->Readfloat(); + fire.vLightOffset = pMsg->ReadLTVector(); + fire.vLightColor = pMsg->ReadLTVector(); + fire.bCreateSmoke = (LTBOOL)pMsg->Readuint8(); + fire.bCreateLight = (LTBOOL)pMsg->Readuint8(); + fire.bCreateSparks = (LTBOOL)pMsg->Readuint8(); + fire.bCreateSound = (LTBOOL)pMsg->Readuint8(); + fire.bBlackSmoke = (LTBOOL)pMsg->Readuint8(); + fire.bSmokeOnly = (LTBOOL)pMsg->Readuint8(); + + return Init(&fire); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFireFX::Init +// +// PURPOSE: Init the Fire fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CFireFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((FIRECREATESTRUCT*)psfxCreateStruct); + m_cs.fRadius = m_cs.fRadius < FFX_MIN_RADIUS ? FFX_MIN_RADIUS : + (m_cs.fRadius > FFX_MAX_RADIUS ? FFX_MAX_RADIUS : m_cs.fRadius); + + m_fSizeAdjust = m_cs.fRadius / FFX_DEFAULT_RADIUS; + + // If we're creating smoke, don't do light, sound or sparks... + + if (m_cs.bSmokeOnly) + { + m_cs.bCreateLight = m_cs.bCreateSound = m_cs.bCreateSparks = LTFALSE; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFireFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CFireFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !g_pGameClientShell) return LTFALSE; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return LTFALSE; + + LTVector vOffset(0, 0, 0); + char szStr[128]; + + // Get our initial pos... + + if ((m_cs.vPos.MagSqr() < 0.01f) && m_hServerObject) + { + g_pLTClient->GetObjectPos(m_hServerObject, &(m_cs.vPos)); + } + + + SMCREATESTRUCT sm; + sm.hServerObj = m_hServerObject; + sm.bRelToCameraPos = LTTRUE; + sm.fInnerCamRadius = FFX_INNER_CAM_RADIUS; + sm.fOuterCamRadius = FFX_INNER_CAM_RADIUS + (FFX_CAM_FALLOFF_RANGE * m_fSizeAdjust); + + // Create the smoke particles... + + if (m_cs.bCreateSmoke) + { + vOffset.Init(0, 20.0f * m_fSizeAdjust, 0); + vOffset.y = vOffset.y > 50.0f ? 50.0f : vOffset.y; + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-2.0f, 15.0f, -2.0f); + sm.vMaxDriftVel.Init(2.0f, 50.0f, 2.0f); + sm.fVolumeRadius = 5.0f * (1.5f * m_fSizeAdjust); + sm.fLifeTime = 100000.0f; + sm.fRadius = FFX_DEFAULT_SMOKE_PARTICLE_RADIUS * m_fSizeAdjust; + sm.fParticleCreateDelta = 0.25f; + sm.fMinParticleLife = 2.0f * m_fSizeAdjust; + sm.fMaxParticleLife = 4.0f * m_fSizeAdjust; + sm.nNumParticles = 2; + //sm.bMultiply = m_cs.bBlackSmoke; + sm.bIgnoreWind = LTFALSE; + sm.vPos = m_cs.vPos + vOffset; + + sm.bAdjustParticleScale = LTTRUE; + sm.fStartParticleScale = 1.0f; + sm.fEndParticleScale = 0.5f; + sm.bAdjustParticleAlpha = LTTRUE; + sm.fStartParticleAlpha = 1.0f; + sm.fEndParticleAlpha = 0.0f; + + sm.fMinParticleLife = sm.fMinParticleLife < FFX_MIN_SMOKE_PARTICLE_LIFETIME ? FFX_MIN_SMOKE_PARTICLE_LIFETIME : + (sm.fMinParticleLife > FFX_MAX_SMOKE_PARTICLE_LIFETIME ? FFX_MAX_SMOKE_PARTICLE_LIFETIME : sm.fMinParticleLife); + sm.fMaxParticleLife = sm.fMaxParticleLife > FFX_MAX_SMOKE_PARTICLE_LIFETIME ? FFX_MAX_SMOKE_PARTICLE_LIFETIME : + (sm.fMaxParticleLife < FFX_MIN_SMOKE_PARTICLE_LIFETIME ? FFX_MIN_SMOKE_PARTICLE_LIFETIME : sm.fMaxParticleLife); + sm.fRadius = sm.fRadius > FFX_MAX_SMOKE_PARTICLE_RADIUS ? FFX_MAX_SMOKE_PARTICLE_RADIUS : sm.fRadius; + + g_pClientButeMgr->GetSpecialFXAttributeString("FireSmokeTex",szStr,sizeof(szStr)); + if (!strlen(szStr)) return LTFALSE; + + sm.hstrTexture = g_pLTClient->CreateString(szStr); + + if (!m_Smoke1.Init(&sm) || !m_Smoke1.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + g_pLTClient->FreeString(sm.hstrTexture); + + m_Smoke1.Update(); + } + + // Create the fire particles... + + if (!m_cs.bSmokeOnly) + { + LTFLOAT fVolumeAdjust = m_fSizeAdjust < 1.0 ? m_fSizeAdjust / 1.5f : m_fSizeAdjust * 1.5f; + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-2.0f, 8.0f, -2.0f); + sm.vMaxDriftVel.Init(2.0f, 15.0f, 2.0f); + sm.fVolumeRadius = 10.0f * fVolumeAdjust; + sm.fLifeTime = 100000.0f; + sm.fRadius = FFX_DEFAULT_FIRE_PARTICLE_RADIUS * m_fSizeAdjust; + sm.fParticleCreateDelta = 0.1f; + sm.fMinParticleLife = 1.0f * m_fSizeAdjust; + sm.fMaxParticleLife = 2.0f * m_fSizeAdjust; + sm.nNumParticles = 3; + sm.bAdditive = LTTRUE; + sm.vPos = m_cs.vPos; + + //sm.fStartParticleScale = 1.0f; + //sm.fEndParticleScale = 0.0f; + + sm.fMinParticleLife = sm.fMinParticleLife < FFX_MIN_FIRE_PARTICLE_LIFETIME ? FFX_MIN_FIRE_PARTICLE_LIFETIME : + (sm.fMinParticleLife > FFX_MAX_FIRE_PARTICLE_LIFETIME ? FFX_MAX_FIRE_PARTICLE_LIFETIME : sm.fMinParticleLife); + sm.fMaxParticleLife = sm.fMaxParticleLife > FFX_MAX_FIRE_PARTICLE_LIFETIME ? FFX_MAX_FIRE_PARTICLE_LIFETIME : + (sm.fMaxParticleLife < FFX_MIN_FIRE_PARTICLE_LIFETIME ? FFX_MIN_FIRE_PARTICLE_LIFETIME : sm.fMaxParticleLife); + sm.fRadius = sm.fRadius > FFX_MAX_FIRE_PARTICLE_RADIUS ? FFX_MAX_FIRE_PARTICLE_RADIUS : sm.fRadius; + + g_pClientButeMgr->GetSpecialFXAttributeString("FireTex",szStr,sizeof(szStr)); + if (!strlen(szStr)) return LTFALSE; + + sm.hstrTexture = g_pLTClient->CreateString(szStr); + + if (!m_Fire1.Init(&sm) || !m_Fire1.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + + m_Fire1.Update(); + g_pLTClient->FreeString(sm.hstrTexture); + + + // Create inner fire particles... + + sm.vColor1.Init(100.0f, 100.0f, 100.0f); + sm.vColor2.Init(150.0f, 150.0f, 150.0f); + sm.vMinDriftVel.Init(-2.0f, 25.0f, -2.0f); + sm.vMaxDriftVel.Init(2.0f, 35.0f, 2.0f); + sm.fRadius = FFX_DEFAULT_FIRE_PARTICLE_RADIUS * 0.75f * m_fSizeAdjust; + sm.nNumParticles = 5; + sm.fVolumeRadius = 5.0f * fVolumeAdjust; + sm.fLifeTime = 100000.0f; + sm.fMinParticleLife = 0.5f * m_fSizeAdjust; + sm.fMaxParticleLife = 1.25f * m_fSizeAdjust; + + //sm.fStartParticleScale = 1.0f; + //sm.fEndParticleScale = 0.5f; + + sm.fMinParticleLife = sm.fMinParticleLife < FFX_MIN_FIRE_PARTICLE_LIFETIME ? FFX_MIN_FIRE_PARTICLE_LIFETIME : + (sm.fMinParticleLife > FFX_MAX_FIRE_PARTICLE_LIFETIME ? FFX_MAX_FIRE_PARTICLE_LIFETIME : sm.fMinParticleLife); + sm.fMaxParticleLife = sm.fMaxParticleLife > FFX_MAX_FIRE_PARTICLE_LIFETIME ? FFX_MAX_FIRE_PARTICLE_LIFETIME : + (sm.fMaxParticleLife < FFX_MIN_FIRE_PARTICLE_LIFETIME ? FFX_MIN_FIRE_PARTICLE_LIFETIME : sm.fMaxParticleLife); + sm.fRadius = sm.fRadius > FFX_MAX_FIRE_PARTICLE_RADIUS ? FFX_MAX_FIRE_PARTICLE_RADIUS : sm.fRadius; + + g_pClientButeMgr->GetSpecialFXAttributeString("FireTex2",szStr,sizeof(szStr)); + if (!strlen(szStr)) return LTFALSE; + + sm.hstrTexture = g_pLTClient->CreateString(szStr); + + if (!m_Fire2.Init(&sm) || !m_Fire2.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + + m_Fire2.Update(); + g_pLTClient->FreeString(sm.hstrTexture); + + + // Create the sound... + + if (m_cs.bCreateSound) + { + g_pClientButeMgr->GetSpecialFXAttributeString("FireSnd",szStr,sizeof(szStr)); + + m_hSound = g_pClientSoundMgr->PlaySoundFromPos(m_cs.vPos, szStr, + m_cs.fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM, PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP); + } + + + // Create the dynamic light... + + if (m_cs.bCreateLight) + { + LIGHTCREATESTRUCT light; + + LTFLOAT fRadiusMin = m_cs.fLightRadius; + fRadiusMin = fRadiusMin < 20.0f ? 20.0f : (fRadiusMin > FFX_MAX_LIGHT_RADIUS ? FFX_MAX_LIGHT_RADIUS : fRadiusMin); + + light.vColor = m_cs.vLightColor; + light.hServerObj = m_hServerObject; + light.vOffset = m_cs.vLightOffset; + light.dwLightFlags = FLAG_DONTLIGHTBACKFACING; + light.fIntensityMin = 1.0f; + light.fIntensityMax = 1.0f; + light.nIntensityWaveform = WAVE_NONE; + light.fIntensityFreq = 1.0f; + light.fIntensityPhase = 0.0f; + light.fRadiusMin = fRadiusMin; + light.fRadiusMax = fRadiusMin * 1.1f; + light.nRadiusWaveform = WAVE_FLICKER2; + light.fRadiusFreq = m_cs.fLightFreq; + light.fRadiusPhase = m_cs.fLightPhase; + + if (!m_Light.Init(&light) || !m_Light.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFireFX::Update +// +// PURPOSE: Update the Fire Fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CFireFX::Update() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr || !m_pClientDE || !m_hServerObject) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Check to see if we should go away... + + if (m_bWantRemove) + { + return LTFALSE; + } + + + // Update FX... + + if (m_cs.bCreateSmoke) + { + m_Smoke1.Update(); + } + + if (m_cs.bCreateLight) + { + m_Light.Update(); + } + + m_Fire1.Update(); + m_Fire2.Update(); + + + // Hide/show the fire if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSound); + m_hSound = LTNULL; + } + + return LTTRUE; + } + else + { + if (m_cs.bCreateSound && !m_hSound) + { + char szStr[128] = ""; + g_pClientButeMgr->GetSpecialFXAttributeString("FireSnd",szStr,sizeof(szStr)); + + m_hSound = g_pClientSoundMgr->PlaySoundFromPos(m_cs.vPos, szStr, + m_cs.fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM, PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP); + } + } + } + + // Create the random spark particles... + + if (m_cs.bCreateSparks && GetRandom(1, 10) == 1) + { + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return LTFALSE; + + RANDOMSPARKSCREATESTRUCT sparks; + sparks.hServerObj = m_hServerObject; + + LTFLOAT fVel = m_fSizeAdjust * GetRandom(50.0f, 70.0f); + fVel = (fVel < 30.0f ? 30.0f : (fVel > 100.0f ? 100.0f : fVel)); + + LTVector vDir(0.0, 1.0, 0.0); + sparks.vMinVelAdjust.Init(1, 3, 1); + sparks.vMaxVelAdjust.Init(1, 6, 1); + sparks.vDir = vDir * fVel; + sparks.nSparks = GetRandom(1, 5); + sparks.fDuration = m_fSizeAdjust * GetRandom(1.0f, 2.0f); + sparks.bRelToCameraPos = LTTRUE; + sparks.fInnerCamRadius = FFX_INNER_CAM_RADIUS; + sparks.fOuterCamRadius = FFX_INNER_CAM_RADIUS + (FFX_CAM_FALLOFF_RANGE * m_fSizeAdjust); + sparks.fRadius = 300.0f * m_fSizeAdjust; + sparks.fRadius = sparks.fRadius < 100.0f ? 100.0f : (sparks.fRadius > 500.0f ? 500.0f : sparks.fRadius); + + psfxMgr->CreateSFX(SFX_RANDOMSPARKS_ID, &sparks); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/FireFX.h b/Jack/ClientShellDLL/FireFX.h new file mode 100644 index 00000000..99f15da3 --- /dev/null +++ b/Jack/ClientShellDLL/FireFX.h @@ -0,0 +1,95 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FireFX.cpp +// +// PURPOSE : FireFX special FX - Definitions +// +// CREATED : 5/06/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __FIRE_FX_H__ +#define __FIRE_FX_H__ + +#include "SpecialFX.h" +#include "SmokeFX.h" +#include "LightFX.h" + +struct FIRECREATESTRUCT : public SFXCREATESTRUCT +{ + FIRECREATESTRUCT(); + + LTVector vPos; + LTVector vLightColor; + LTVector vLightOffset; + LTFLOAT fLightRadius; + LTFLOAT fLightPhase; + LTFLOAT fLightFreq; + LTFLOAT fSoundRadius; + LTFLOAT fRadius; + LTBOOL bCreateSmoke; + LTBOOL bCreateLight; + LTBOOL bCreateSparks; + LTBOOL bCreateSound; + LTBOOL bBlackSmoke; + LTBOOL bSmokeOnly; +}; + +inline FIRECREATESTRUCT::FIRECREATESTRUCT() +{ + vPos.Init(); + vLightColor.Init(); + vLightOffset.Init(); + fLightRadius = 0.0f; + fLightPhase = 0.0f; + fLightFreq = 0.0f; + fSoundRadius = 0.0f; + fRadius = 0.0f; + bCreateSmoke = LTFALSE; + bCreateLight = LTFALSE; + bCreateSparks = LTFALSE; + bCreateSound = LTFALSE; + bBlackSmoke = LTFALSE; + bSmokeOnly = LTFALSE; +} + +class CFireFX : public CSpecialFX +{ + public : + + CFireFX() : CSpecialFX() + { + m_hSound = LTNULL; + m_fSizeAdjust = 1.0f; + } + + ~CFireFX() + { + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSound); + } + } + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_FIRE_ID; } + + private : + + FIRECREATESTRUCT m_cs; + HLTSOUND m_hSound; + LTFLOAT m_fSizeAdjust; + + CSmokeFX m_Smoke1; + CSmokeFX m_Fire1; + CSmokeFX m_Fire2; + CLightFX m_Light; +}; + +#endif // __FIRE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/FlashLight.cpp b/Jack/ClientShellDLL/FlashLight.cpp new file mode 100644 index 00000000..e6057baf --- /dev/null +++ b/Jack/ClientShellDLL/FlashLight.cpp @@ -0,0 +1,402 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : FlashLight.cpp +// +// PURPOSE : FlashLight class - Implementation +// +// CREATED : 07/21/99 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "FlashLight.h" +#include "GameClientShell.h" +#include "ClientUtilities.h" +#include "VarTrack.h" +#include "BaseScaleFX.h" +#include "MsgIDs.h" +#include "VehicleMgr.h" +#include "CMoveMgr.h" + +VarTrack g_cvarFLMinLightRadius; +VarTrack g_cvarFLMaxLightRadius; +VarTrack g_cvarFLMinLightColor; +VarTrack g_cvarFLMaxLightColor; +VarTrack g_cvarFLLightOffsetUp; +VarTrack g_cvarFLLightOffsetRight; +VarTrack g_cvarFLLightOffsetForward; + +static bool NonSolidFilterFn(HOBJECT hTest, void *pUserData) +{ + if (ObjListFilterFn(hTest, pUserData)) + { + // Ignore non-solid objects (even if ray-hit is true)... + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_SOLID)) + { + return false; + } + } + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::CFlashLight() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CFlashLight::CFlashLight() +{ + m_bOn = LTFALSE; + m_hLight = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::~CFlashLight() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CFlashLight::~CFlashLight() +{ + if (m_hLight) + { + g_pLTClient->RemoveObject(m_hLight); + m_hLight = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::TurnOn() +// +// PURPOSE: Turn light on +// +// ----------------------------------------------------------------------- // + +void CFlashLight::TurnOn() +{ + CreateLight(); + + if( m_hLight && !m_bOn ) + { + m_bOn = LTTRUE; + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + + if (UpdateServer()) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_FLASHLIGHT); + cMsg.Writeuint8(FL_ON); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::TurnOff() +// +// PURPOSE: Turn light off +// +// ----------------------------------------------------------------------- // + +void CFlashLight::TurnOff() +{ + if( m_hLight && m_bOn ) + { + m_bOn = LTFALSE; + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, 0, FLAG_VISIBLE); + + if (UpdateServer()) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_FLASHLIGHT); + cMsg.Writeuint8(FL_OFF); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::CreateLight() +// +// PURPOSE: Create the dynamic light +// +// ----------------------------------------------------------------------- // + +void CFlashLight::CreateLight() +{ + if (m_hLight) return; + + g_cvarFLMinLightRadius.Init(g_pLTClient, "FLMinRadius", NULL, 75.0f); + g_cvarFLMaxLightRadius.Init(g_pLTClient, "FLMaxtRadius", NULL, 150.0f); + g_cvarFLMinLightColor.Init(g_pLTClient, "FLMinColor", NULL, 100.0f); + g_cvarFLMaxLightColor.Init(g_pLTClient, "FLMaxColor", NULL, 105.0f); + g_cvarFLLightOffsetUp.Init(g_pLTClient, "FLOffsetUp", NULL, 5.0f); + g_cvarFLLightOffsetRight.Init(g_pLTClient, "FLOffsetRight", NULL, 0.0f); + g_cvarFLLightOffsetForward.Init(g_pLTClient, "FLOffsetForward", NULL, 1.0f); + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE; + + //we want to make sure that this dynamically lights the world regardless of + //performance settings + createStruct.m_Flags2 = FLAG2_FORCEDYNAMICLIGHTWORLD; + + g_pLTClient->GetObjectPos(hCamera, &(createStruct.m_Pos)); + + m_hLight = g_pLTClient->CreateObject(&createStruct); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight::Update() +// +// PURPOSE: Update the flash light +// +// ----------------------------------------------------------------------- // + +void CFlashLight::Update() +{ + if (!m_bOn || !m_hLight) return; + + // Calculate light position... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj) return; + + HOBJECT hFilterList[] = {hPlayerObj, g_pPlayerMgr->GetMoveMgr()->GetObject(), LTNULL}; + + IntersectQuery qInfo; + IntersectInfo iInfo; + + LTVector vPos, vEndPos, vUOffset, vROffset; + + GetLightPositions(vPos, vEndPos, vUOffset, vROffset); + + qInfo.m_From = vPos; + qInfo.m_To = vEndPos; + + qInfo.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID; + qInfo.m_FilterFn = NonSolidFilterFn; + qInfo.m_pUserData = hFilterList; + + if (g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + vEndPos = iInfo.m_Point; + } + + g_pLTClient->SetObjectPos(m_hLight, &vEndPos); + + LTVector vDir = vEndPos - vPos; + LTFLOAT fDist = vDir.Length(); + vDir *= 1.0f / fDist; + + LTFLOAT fLightRadius = g_cvarFLMinLightRadius.GetFloat() + + ((g_cvarFLMaxLightRadius.GetFloat() - g_cvarFLMinLightRadius.GetFloat()) * fDist / g_cvarFLLightOffsetForward.GetFloat()); + + g_pLTClient->SetLightRadius(m_hLight, fLightRadius); + + LTVector vColor; + vColor.y = vColor.z = vColor.x = GetRandom(g_cvarFLMinLightColor.GetFloat(), g_cvarFLMaxLightColor.GetFloat()); + + LTVector vLightColor = vColor / 255.0f; + + g_pLTClient->SetLightColor(m_hLight, vLightColor.x, vLightColor.y, vLightColor.z); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLightPlayer::GetLightPositions() +// +// PURPOSE: Get the flash light position and rotation... +// +// ----------------------------------------------------------------------- // + +void CFlashLightPlayer::GetLightPositions(LTVector& vStartPos, LTVector& vEndPos, LTVector& vUOffset, LTVector& vROffset) +{ + vStartPos.Init(); + vEndPos.Init(); + vUOffset.Init(); + vROffset.Init(); + + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + LTRotation rRot; + + if (pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + if (g_pPlayerMgr->IsFirstPerson()) + { + pMoveMgr->GetVehicleMgr()->GetVehicleLightPosRot(vStartPos, rRot); + } + else // 3rd person vehicle + { + // Get light pos on 3rd-person vehicle... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (hPlayerObj) + { + g_pLTClient->GetObjectRotation(hPlayerObj, &rRot); + g_pLTClient->GetObjectPos(hPlayerObj, &vStartPos); + } + } + } + else if (g_pPlayerMgr->IsFirstPerson()) + { + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + g_pLTClient->GetObjectRotation(hCamera, &rRot); + g_pLTClient->GetObjectPos(hCamera, &vStartPos); + } + else // 3rd person + { + // Get light pos from 3rd-person model... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (hPlayerObj) + { + // g_pLTClient->GetObjectRotation(hPlayerObj, &rRot); + // g_pLTClient->GetObjectPos(hPlayerObj, &vStartPos); + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(hPlayerObj, "LeftHand", hSocket) ) + { + LTransform tf; + + if ( LT_OK == g_pModelLT->GetSocketTransform(hPlayerObj, hSocket, tf, LTTRUE) ) + { + vStartPos = tf.m_Pos; + rRot = tf.m_Rot; + } + } + } + } + + vEndPos = vStartPos + (rRot.Forward() * g_cvarFLLightOffsetForward.GetFloat()); + + if (g_pPlayerMgr->IsFirstPerson()) + { + vROffset = (rRot.Right() * g_cvarFLLightOffsetRight.GetFloat()); + vUOffset = (rRot.Up() * g_cvarFLLightOffsetUp.GetFloat()); + + // Update the Start/End position to addjust for any offset... + + vEndPos += vROffset; + vEndPos += vUOffset; + + vStartPos += vROffset; + vStartPos += vUOffset; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight3rdPerson::CFlashLight3rdPerson() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CFlashLight3rdPerson::CFlashLight3rdPerson() +{ + m_hObj = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight3rdPerson::~CFlashLight3rdPerson() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CFlashLight3rdPerson::~CFlashLight3rdPerson() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight3rdPerson::Init() +// +// PURPOSE: Initializes the flashlight +// +// ----------------------------------------------------------------------- // + +void CFlashLight3rdPerson::Init(HOBJECT hObj) +{ + m_hObj = hObj; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFlashLight3rdPerson::GetLightPositions() +// +// PURPOSE: Get the flash light position and rotation... +// +// ----------------------------------------------------------------------- // + +void CFlashLight3rdPerson::GetLightPositions(LTVector& vStartPos, LTVector& vEndPos, LTVector& vUOffset, LTVector& vROffset) +{ + if ( !m_hObj ) return; + + HMODELSOCKET hSocket; + if ( LT_OK == g_pModelLT->GetSocket(m_hObj, "LeftHand", hSocket) ) + { + LTransform tf; + + if ( LT_OK == g_pModelLT->GetSocketTransform(m_hObj, hSocket, tf, LTTRUE) ) + { + LTVector vPos = tf.m_Pos; + LTRotation rRot = tf.m_Rot; + + LTVector vRight, vUp, vForward; + vRight = rRot.Right(); + vUp = rRot.Up(); + vForward = rRot.Forward(); + + //vStartPos = vPos - vUp*4.0f + vForward*8.0f; + //vEndPos = vPos + vForward*200.0f; + //vUOffset = vUp; + //vROffset = vRight; + + vStartPos = vPos; + vEndPos = vPos + (vForward * g_cvarFLLightOffsetForward.GetFloat()); + + vROffset = (vRight * g_cvarFLLightOffsetRight.GetFloat()); + vUOffset = (vUp * g_cvarFLLightOffsetUp.GetFloat()); + + // Update the Start/End position to addjust for any offset... + + vEndPos += vROffset; + vEndPos += vUOffset; + + vStartPos += vROffset; + vStartPos += vUOffset; + } + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/FlashLight.h b/Jack/ClientShellDLL/FlashLight.h new file mode 100644 index 00000000..a49f3cd1 --- /dev/null +++ b/Jack/ClientShellDLL/FlashLight.h @@ -0,0 +1,75 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FlashLight.h +// +// PURPOSE : FlashLight class - Definition +// +// CREATED : 07/21/99 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __FLASH_LIGHT_H__ +#define __FLASH_LIGHT_H__ + +#include "ltbasedefs.h" +#include "PolyLineFX.h" + +class CFlashLight +{ + public : + + CFlashLight(); + virtual ~CFlashLight(); + + virtual void Update(); + + virtual void Toggle() { (m_bOn ? TurnOff() : TurnOn());} + virtual void TurnOn(); + virtual void TurnOff(); + + virtual LTBOOL IsOn() const { return m_bOn; } + + protected : + + virtual void CreateLight(); + + virtual void GetLightPositions(LTVector & vStartPos, LTVector & vEndPos, LTVector & vUOffset, LTVector & vROffset) = 0; + + virtual LTBOOL UpdateServer() { return LTTRUE; } + + private : + + LTBOOL m_bOn; + HOBJECT m_hLight; +}; + +class CFlashLightPlayer : public CFlashLight +{ + protected : + + void GetLightPositions(LTVector & vStartPos, LTVector & vEndPos, LTVector & vUOffset, LTVector & vROffset); +}; + +class CFlashLight3rdPerson : public CFlashLight +{ + public : + + CFlashLight3rdPerson(); + ~CFlashLight3rdPerson(); + + void Init(HOBJECT hObj); + + protected : + + virtual void GetLightPositions(LTVector & vStartPos, LTVector & vEndPos, LTVector & vUOffset, LTVector & vROffset); + + virtual LTBOOL UpdateServer() { return LTFALSE; } + + protected : + + HOBJECT m_hObj; +}; + +#endif // __FLASH_LIGHT_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/FullScreenTint.cpp b/Jack/ClientShellDLL/FullScreenTint.cpp new file mode 100644 index 00000000..06e4a31c --- /dev/null +++ b/Jack/ClientShellDLL/FullScreenTint.cpp @@ -0,0 +1,131 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FullScreenTint.cpp +// +// PURPOSE : Implementation of FullScreenTint class +// +// CREATED : 6/22/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "FullScreenTint.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::CFullScreenTint() +// +// PURPOSE: Initialize object +// +// ----------------------------------------------------------------------- // + +CFullScreenTint::CFullScreenTint() +{ + m_fAlpha = 1.0f; + m_bOn = false; + m_hSurface = LTNULL; + m_rcSrc.Init(0, 0, 2, 2); + m_hTransColor = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::~CFullScreenTint() +// +// PURPOSE: Handle object destruction +// +// ----------------------------------------------------------------------- // + +CFullScreenTint::~CFullScreenTint() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::SetAlpha() +// +// PURPOSE: Set the surface's alpha value +// +// ----------------------------------------------------------------------- // + +void CFullScreenTint::SetAlpha(float fAlpha) +{ + m_fAlpha = (fAlpha < 0.0f ? 0.0f : (fAlpha > 1.0 ? 1.0f : fAlpha)); + + if (m_hSurface) + { + g_pLTClient->SetSurfaceAlpha(m_hSurface, m_fAlpha); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::Init() +// +// PURPOSE: Create the tint surface - black only (for now) +// +// ----------------------------------------------------------------------- // + +void CFullScreenTint::Init() +{ + if (!m_hTransColor) + { + m_hTransColor = g_pLTClient->SetupColor1(1.0f, 1.0f, 1.0f, LTTRUE); + } + + if (!m_hSurface) + { + m_hSurface = g_pLTClient->CreateSurface(2, 2); + if (m_hSurface) + { + g_pLTClient->SetSurfaceAlpha(m_hSurface, m_fAlpha); + g_pLTClient->FillRect(m_hSurface, &m_rcSrc, kBlack); + g_pLTClient->OptimizeSurface(m_hSurface, m_hTransColor); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::Term() +// +// PURPOSE: clean up +// +// ----------------------------------------------------------------------- // + +void CFullScreenTint::Term() +{ + if (m_hSurface) + { + g_pLTClient->DeleteSurface(m_hSurface); + m_hSurface = LTNULL; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CFullScreenTint::Draw() +// +// PURPOSE: Handle drawing the tint +// +// ----------------------------------------------------------------------- // + +void CFullScreenTint::Draw(HSURFACE hScreen) +{ + if (!m_bOn || !hScreen || !m_hSurface) return; + + uint32 dwWidth = 640, dwHeight = 480; + g_pLTClient->GetSurfaceDims(hScreen, &dwWidth, &dwHeight); + + LTRect rcDest; + rcDest.Init(0, 0, dwWidth, dwHeight); + g_pLTClient->ScaleSurfaceToSurfaceTransparent(hScreen, m_hSurface, + &rcDest, &m_rcSrc, m_hTransColor); +} + + diff --git a/Jack/ClientShellDLL/FullScreenTint.h b/Jack/ClientShellDLL/FullScreenTint.h new file mode 100644 index 00000000..5465ced6 --- /dev/null +++ b/Jack/ClientShellDLL/FullScreenTint.h @@ -0,0 +1,43 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : FullScreenTint.h +// +// PURPOSE : Definition of FullScreenTint class +// +// CREATED : 6/22/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __FULL_SCREEN_TINT_H__ +#define __FULL_SCREEN_TINT_H__ + +#include "ltbasedefs.h" + +class CFullScreenTint +{ + public: + + CFullScreenTint(); + ~CFullScreenTint(); + + void Init(); + void Term(); + + void Draw(HSURFACE hScreen); + void TurnOn(bool bOn=true) { m_bOn = bOn; } + uint8 IsOn() { return m_bOn; } + + void SetAlpha(float fAlpha); + + private: + + float m_fAlpha; + bool m_bOn; + HSURFACE m_hSurface; + HLTCOLOR m_hTransColor; + LTRect m_rcSrc; +}; + +#endif // __FULL_SCREEN_TINT_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/GadgetDisabler.cpp b/Jack/ClientShellDLL/GadgetDisabler.cpp new file mode 100644 index 00000000..d10d4668 --- /dev/null +++ b/Jack/ClientShellDLL/GadgetDisabler.cpp @@ -0,0 +1,335 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GadgetDisabler.cpp +// +// PURPOSE : GadgetDisabler implementation +// +// CREATED : 8/30/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "MsgIDs.h" + #include "GadgetTargetTypes.h" + #include "GadgetDisabler.h" + #include "ClientWeaponBase.h" + #include "PlayerMgr.h" + #include "PlayerStats.h" + #include "InterfaceMgr.h" + #include "PopupMgr.h" + #include "TargetMgr.h" + +extern VarTrack g_vtProgressBarScaleToSkills; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGadgetDisabler::Update +// +// PURPOSE: Update the disabler... +// +// ----------------------------------------------------------------------- // + +void CGadgetDisabler::Update( ) +{ + // Are we actually disabling a gadget? + + if( !m_bDisabling || !m_hTargetObj ) return; + + // If stoped disabling send message to the target + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if( !pClientWeapon ) return; + + const WEAPON *pWeaponData = pClientWeapon->GetWeapon(); + if( !pWeaponData ) return; + + const AMMO* pAmmoData = g_pWeaponMgr->GetAmmo(pWeaponData->nDefaultAmmoId); + if (!pAmmoData) return; + + + LTRotation rCamRot; + LTVector vTargetPos, vCamPos, vDir, vCamF; + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + + g_pLTClient->GetObjectRotation( hCamera, &rCamRot ); + vCamF = rCamRot.Forward(); + + g_pLTClient->GetObjectPos( hCamera, &vCamPos ); + g_pLTClient->GetObjectPos( m_hTargetObj, &vTargetPos ); + + // See if we are within range of the target... + + vDir = vTargetPos - vCamPos; + bool bInRange = (g_pPlayerMgr->GetTargetMgr()->IsTargetInRange()); + + // See if we are looking at the target... + + vDir.Normalize(); + LTFLOAT fCamAngle = vDir.Dot( vCamF ); + fCamAngle = fCamAngle < 0.0f ? 0.0f : fCamAngle; + fCamAngle *= 90.0f; + + LTFLOAT fMinAngle = 5.0f; + LTBOOL bLookingAtTarget = !(fCamAngle < (90.0f - fMinAngle )); + + float fGadgetSkillEffect = g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eEffect); + + // Base the speed of searching on the skill level... + + if (!g_pGameClientShell->IsGamePaused()) + { + m_fTimer -= g_pLTClient->GetFrameTime() * fGadgetSkillEffect; + if (m_fTimer < 0.0f) + { + m_fTimer = 0.0f; + } + } + + +//jrg - changing so activate can disable as well as fire +// LTBOOL bButtonDown = (m_pGTInfo->m_eTargetType == eINVALID ? +// g_pLTClient->IsCommandOn( COMMAND_ID_ACTIVATE ) : +// pClientWeapon->IsFireButtonDown()); + LTBOOL bButtonDown = g_pLTClient->IsCommandOn( COMMAND_ID_ACTIVATE ) || pClientWeapon->IsFireButtonDown(); + + //if we somehow switched weapons... STOP! + if (m_pGTInfo->m_eTargetType != eINVALID && (g_pPlayerMgr->GetTargetMgr()->RequiredGadgetDamageType() != pAmmoData->eInstDamageType || pClientWeapon->GetState() != W_FIRING)) + { + bButtonDown = LTFALSE; + } + + + // Do we still meet the requirements for disabling? + + if( m_fTimer <= 0.0f || !bButtonDown || !bLookingAtTarget || !bInRange ) + { + + // Send message to target with the amount of time left... + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_GADGETTARGET ); + + cMsg.WriteObject( m_hTargetObj ); + cMsg.Writefloat( m_fTimer); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + // Stop disabling... + + m_bDisabling = LTFALSE; + m_hTargetObj = LTNULL; + m_bShowTimeBar = LTFALSE; + g_pPlayerMgr->GetTargetMgr()->LockTarget(NULL); + + g_pPopup->Hide(); + + // Let the progress bar hide it's self... + + g_pPlayerStats->UpdateProgress( 0 ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + } + + // Get the percentage of disabling we have done + + uint8 nMaxProgress = GetMaxProgress(); + uint8 nVal = uint8( (m_fTimer / m_fTotalTime) * nMaxProgress ); + + // Update the meter... + + if( m_bShowTimeBar ) + { + // Show the progress bar... + + g_pPlayerStats->UpdateMaxProgress( g_vtProgressBarScaleToSkills.GetFloat() > 1.0f ? 100 : nMaxProgress ); + g_pPlayerStats->UpdateProgress( nVal ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + } + + // Decipher the code... + + if( m_pGTInfo->m_eTargetType == eCodedText ) + { + if( m_fTimer <= 0 ) + { + // Once decoded, leave a popup for the player to read + g_pInterfaceMgr->ShowPopup( m_dwCodeID, 2 ); + } + else if( m_bDisabling ) + { + char szString[512] = {0}; + LoadString( m_dwCodeID, szString, sizeof(szString) ); + char *pBody = strchr(szString,'@'); + if (pBody) + { + ++pBody; + } + else + { + pBody = szString; + } + + + for( uint32 i = 0; i < strlen( pBody ); ++i ) + { + if( pBody[i] != ' ' && pBody[i] != '\n' && pBody[i] != '@' ) + { + // As the percent of disabling left decreases, decrypt more of the text... + + if( (m_szCodedText[i] != pBody[i]) && (GetRandom( GetRandom(0,1), nVal ) == 0) ) + m_szCodedText[i] = pBody[i]; + } + else + { + m_szCodedText[i] = pBody[i]; + } + } + m_szCodedText[i] = NULL; + + g_pPopup->Show( 2, m_szCodedText ); + } + } + else if( m_pGTInfo->m_eTargetType == eInvisibleInk ) + { + if( m_fTimer <= 0 ) + { + // Once visible, leave a popup for the player to read + g_pInterfaceMgr->ShowPopup( m_dwCodeID, 4 ); + } + else if( m_bDisabling ) + { + char szString[512] = {0}; + LoadString( m_dwCodeID, szString, sizeof(szString) ); + + POPUP *pPopup = g_pPopupMgr->GetPopup( 4 ); + if( !pPopup ) + { + m_fTimer = 0; + return; + } + + uint8 nA = 0; + if( nVal >= 25 ) + nA = 100 - nVal; + else + // Not to accurate but it looks good + nA = int(((100.0f - nVal) / 75.0f) * 255) + (100 - nVal); + + uint8 a, r, g, b; + + GET_ARGB(pPopup->argbTextColor, a, r, g, b); + + g_pPopup->SetTextColor( r, g, b, nA ) ; + g_pPopup->Show( 4, szString ); + + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGadgetDisabler::OnGadgetTargetMessage +// +// PURPOSE: Read in the GadgetTarget's message and start disabling +// +// ----------------------------------------------------------------------- // + +void CGadgetDisabler::OnGadgetTargetMessage( ILTMessage_Read *pMsg ) +{ + if( !pMsg ) return; + + // Read the data for disabling this Gadget Target... + + m_hTargetObj = pMsg->ReadObject(); + uint8 eType = pMsg->Readuint8(); + m_fTotalTime = pMsg->Readfloat(); + LTFLOAT fTime = pMsg->Readfloat(); + m_dwCodeID = pMsg->Readuint32(); + + // Get the Gadget Target Info? + + m_pGTInfo = >InfoArray[eType]; + if( !m_pGTInfo ) return; + + m_bShowTimeBar = m_pGTInfo->m_bShowTimeBar; + + // Start disabling + + m_fTimer = fTime; + m_bDisabling = LTTRUE; + g_pPlayerMgr->GetTargetMgr()->LockTarget(m_hTargetObj); + + // Do any special handeling for the different types... + + if( m_pGTInfo->m_eTargetType == eCodedText ) + { + // Randomize the coded text but base it off of the structure of the real text... + + memset( m_szCodedText, 0, ARRAY_LEN(m_szCodedText) ); + + char szString[512] = {0}; + LoadString( m_dwCodeID, szString, ARRAY_LEN(szString) ); + + char szCharSet[512] = {0}; + LoadString( IDS_DECODEMSG_CHARSET, szCharSet, ARRAY_LEN(szCharSet) ); + uint32 nCharSetLen = strlen( szCharSet ); + + for( uint32 i = 0; i < strlen( szString ); ++i ) + { + if( szString[i] != ' ' && szString[i] != '\n' && szString[i] != '@' ) + { + char randChar = 'X'; + + // Get a random character from the character set... + + if( szCharSet[0] && nCharSetLen > 0 ) + { + randChar = szCharSet[GetRandom( 0, nCharSetLen - 1 )]; + } + + m_szCodedText[i] = randChar; + } + else + { + m_szCodedText[i] = szString[i]; + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGadgetDisabler::GetMaxProgress +// +// PURPOSE: Figure out the max allowable progress for the progress bar... +// +// ----------------------------------------------------------------------- // + +uint8 CGadgetDisabler::GetMaxProgress() +{ + float fGadgetSkillEffect = g_pPlayerStats->GetSkillModifier(SKL_GADGET,GadgetModifiers::eEffect); + + uint8 nMaxProgress = 100; + if( g_vtProgressBarScaleToSkills.GetFloat() > 0.0f ) + { + nMaxProgress = (fGadgetSkillEffect > 0.0f ? uint8(100 / fGadgetSkillEffect) : 0); + } + + return nMaxProgress; +} + + +//LTTRUE if the target can be disabled without using a gadget. +LTBOOL CGadgetDisabler::DisableOnActivate() +{ + if (!m_hTargetObj) return LTFALSE; + if( !m_pGTInfo ) return LTFALSE; + + return (m_pGTInfo->m_eTargetType == eINVALID); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/GadgetDisabler.h b/Jack/ClientShellDLL/GadgetDisabler.h new file mode 100644 index 00000000..7a33a43f --- /dev/null +++ b/Jack/ClientShellDLL/GadgetDisabler.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GadgetDisabler.h +// +// PURPOSE : The GadgetDisabler object +// +// CREATED : 8/30/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __GADGET_DISABLER_H__ +#define __GADGET_DISABLER_H__ + +struct GTINFO; + +class CGadgetDisabler +{ + public : // Methods... + + CGadgetDisabler( ) + : m_pGTInfo ( LTNULL ), + m_hTargetObj ( LTNULL ), + m_bShowTimeBar ( LTTRUE ), + m_bDisabling ( LTFALSE ), + m_fTotalTime ( 0.0f ), + m_dwCodeID ( 0 ) + { + m_szCodedText[0] = '\0'; + }; + + ~CGadgetDisabler( ) {}; + + void Update( ); + void OnGadgetTargetMessage( ILTMessage_Read *pMsg ); + + LTBOOL IsDisabling() {return m_bDisabling;} + + //LTTRUE if the target can be disabled without using a gadget. + LTBOOL DisableOnActivate(); + + uint8 GetMaxProgress(); + + protected : // Members... + + GTINFO *m_pGTInfo; + LTFLOAT m_fTimer; + HOBJECT m_hTargetObj; + LTBOOL m_bShowTimeBar; + LTBOOL m_bDisabling; + LTFLOAT m_fTotalTime; + uint32 m_dwCodeID; + char m_szCodedText[512]; +}; + +#endif // __GADGET_DISABLER_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/GadgetTargetFX.cpp b/Jack/ClientShellDLL/GadgetTargetFX.cpp new file mode 100644 index 00000000..cbd46110 --- /dev/null +++ b/Jack/ClientShellDLL/GadgetTargetFX.cpp @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GadgetTargetFX.cpp +// +// PURPOSE : GadgetTarget - Implementation +// +// CREATED : 8/20/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "GadgetTargetFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "SFXMsgIds.h" + +extern CGameClientShell* g_pGameClientShell; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGadgetTargetFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CGadgetTargetFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + GADGETTARGETCREATESTRUCT* pGTCS = (GADGETTARGETCREATESTRUCT*)psfxCreateStruct; + + m_eType = pGTCS->eType; + m_bSwitchWeapons = pGTCS->bSwitchWeapons; + m_bPowerOn = pGTCS->bPowerOn; + m_nTeamID = pGTCS->nTeamID; + + return LTTRUE; +} + + +LTBOOL CGadgetTargetFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + m_eType = (GadgetTargetType)pMsg->Readuint8(); + m_bSwitchWeapons = pMsg->Readbool(); + m_bPowerOn = pMsg->Readbool(); + m_nTeamID = pMsg->Readuint8(); + + return LTTRUE; +}; + + diff --git a/Jack/ClientShellDLL/GadgetTargetFX.h b/Jack/ClientShellDLL/GadgetTargetFX.h new file mode 100644 index 00000000..8ff939c6 --- /dev/null +++ b/Jack/ClientShellDLL/GadgetTargetFX.h @@ -0,0 +1,59 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GadgetTargetFX.h +// +// PURPOSE : GadgetTargetFX - Definition +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __GADGETTARGET_FX_H__ +#define __GADGETTARGET_FX_H__ + +#include "SpecialFX.h" +#include "GadgetTargetTypes.h" + +struct GADGETTARGETCREATESTRUCT : public SFXCREATESTRUCT +{ + GADGETTARGETCREATESTRUCT(); + + GadgetTargetType eType; + bool bSwitchWeapons; + bool bPowerOn; + uint8 nTeamID; +}; + +inline GADGETTARGETCREATESTRUCT::GADGETTARGETCREATESTRUCT() +{ + eType = eINVALID; + bSwitchWeapons = true; + bPowerOn = true; + nTeamID = INVALID_TEAM; +} + +class CGadgetTargetFX : public CSpecialFX +{ + public : + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + + virtual uint32 GetSFXID() { return SFX_GADGETTARGET_ID; } + + virtual GadgetTargetType GetType() const {return m_eType;} + virtual bool SwitchWeapons() const {return m_bSwitchWeapons;} + virtual bool IsPowerOn() const {return m_bPowerOn;} + virtual uint8 GetTeamID() const { return m_nTeamID; } + + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + + + private : + + GadgetTargetType m_eType; + bool m_bSwitchWeapons; + bool m_bPowerOn; + uint8 m_nTeamID; +}; + +#endif // __GADGETTARGET_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/GameButes.h b/Jack/ClientShellDLL/GameButes.h new file mode 100644 index 00000000..5d435458 --- /dev/null +++ b/Jack/ClientShellDLL/GameButes.h @@ -0,0 +1,109 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GameButes.h +// +// PURPOSE : GameButes attributes +// +// CREATED : 2/02/99 +// +// ----------------------------------------------------------------------- // + +#ifndef __GAME_BUTES_H__ +#define __GAME_BUTES_H__ + + + +// Camera specific attributes... + +#define CAMERA_BUTE_LETTERBOXPERCENT "LetterBoxPercent" + + + +// Weather specific attributes... + +#define WEATHER_BUTE_RAINLIGHT "RainNumLightDrops" +#define WEATHER_BUTE_RAINNORMAL "RainNumNormalDrops" +#define WEATHER_BUTE_RAINHEAVY "RainNumHeavyDrops" +#define WEATHER_BUTE_RAINSPLASH "RainSplashSprite" +#define WEATHER_BUTE_RAINRING "RainRingSprite" +#define WEATHER_BUTE_RAINVELLIGHT "RainVelLight" +#define WEATHER_BUTE_RAINVELNORMAL "RainVelNormal" +#define WEATHER_BUTE_RAINVELHEAVY "RainVelHeavy" +#define WEATHER_BUTE_SNOWLIGHT "SnowNumLightFlakes" +#define WEATHER_BUTE_SNOWNORMAL "SnowNumNormalFlakes" +#define WEATHER_BUTE_SNOWHEAVY "SnowNumHeavyFlakes" +#define WEATHER_BUTE_SNOWPARTICLE "SnowParticle" +#define WEATHER_BUTE_SNOWPARTICLERAD "SnowParticleRadius" +#define WEATHER_BUTE_THUNDERSOUND "ThunderSound" +#define WEATHER_BUTE_SNOWVELLIGHT "SnowVelLight" +#define WEATHER_BUTE_SNOWVELNORMAL "SnowVelNormal" +#define WEATHER_BUTE_SNOWVELHEAVY "SnowVelHeavy" + + + +// Level specific attributes... + +#define LEVEL_BUTE_FILENAME "Filename" +#define LEVEL_BUTE_BUMPERTEXTID "BumperTextId" +#define LEVEL_BUTE_STARTMISSION "StartMission" + + + +// Reverb (sound) specific attributes... + +#define REVERB_BUTE_DEFAULTLEVEL "DefaultLevel" +#define REVERB_BUTE_UPDATEPERIOD "UpdatePeriod" +#define REVERB_BUTE_PLAYERMOVEDIST "PlayerMoveDist" +#define REVERB_BUTE_INTERSECTSEGMENTLEN "IntersectSegmentLen" + +#define REVERB_BUTE_PIPESPACE "PipeSpace" +#define REVERB_BUTE_PIPEREFLECTTIME "PipeReflectTime" +#define REVERB_BUTE_PIPEDECAYTIME "PipeDecayTime" +#define REVERB_BUTE_PIPEVOLUME "PipeVolume" +#define REVERB_BUTE_PIPEDAMPING "PipeDamping" + +#define REVERB_BUTE_PLAINSPACE "PlainSpace" +#define REVERB_BUTE_PLAINREFLECTTIME "PlainReflectTime" +#define REVERB_BUTE_PLAINDECAYTIME "PlainDecayTime" +#define REVERB_BUTE_PLAINVOLUME "PlainVolume" +#define REVERB_BUTE_PLAINDAMPING "PlainDamping" + +#define REVERB_BUTE_ARENASPACE "ArenaSpace" +#define REVERB_BUTE_ARENAREFLECTTIME "ArenaReflectTime" +#define REVERB_BUTE_ARENADECAYTIME "ArenaDecayTime" +#define REVERB_BUTE_ARENAVOLUME "ArenaVolume" +#define REVERB_BUTE_ARENADAMPING "ArenaDamping" + +#define REVERB_BUTE_MOUNTAINSSPACE "MountainsSpace" +#define REVERB_BUTE_MOUNTAINSREFLECTTIME "MountainsReflectTime" +#define REVERB_BUTE_MOUNTAINSDECAYTIME "MountainsDecayTime" +#define REVERB_BUTE_MOUNTAINSVOLUME "MountainsVolume" +#define REVERB_BUTE_MOUNTAINSDAMPING "MountainsDamping" + +#define REVERB_BUTE_STONEROOMSPACE "StoneRoomSpace" +#define REVERB_BUTE_STONEROOMREFLECTTIME "StoneRoomReflectTime" +#define REVERB_BUTE_STONEROOMDECAYTIME "StoneRoomDecayTime" +#define REVERB_BUTE_STONEROOMVOLUME "StoneRoomVolume" +#define REVERB_BUTE_STONEROOMDAMPING "StoneRoomDamping" + +#define REVERB_BUTE_HALLWAYSPACE "HallwaySpace" +#define REVERB_BUTE_HALLWAYREFLECTTIME "HallwayReflectTime" +#define REVERB_BUTE_HALLWAYDECAYTIME "HallwayDecayTime" +#define REVERB_BUTE_HALLWAYVOLUME "HallwayVolume" +#define REVERB_BUTE_HALLWAYDAMPING "HallwayDamping" + +#define REVERB_BUTE_CONCERTHALLSPACE "ConcertHallSpace" +#define REVERB_BUTE_CONCERTHALLREFLECTTIME "ConcertHallReflectTime" +#define REVERB_BUTE_CONCERTHALLDECAYTIME "ConcertHallDecayTime" +#define REVERB_BUTE_CONCERTHALLVOLUME "ConcertHallVolume" +#define REVERB_BUTE_CONCERTHALLDAMPING "ConcertHallDamping" + +#define REVERB_BUTE_AUDITORIUMSPACE "AuditoriumSpace" +#define REVERB_BUTE_AUDITORIUMREFLECTTIME "AuditoriumReflectTime" +#define REVERB_BUTE_AUDITORIUMDECAYTIME "AuditoriumDecayTime" +#define REVERB_BUTE_AUDITORIUMVOLUME "AuditoriumVolume" +#define REVERB_BUTE_AUDITORIUMDAMPING "AuditoriumDamping" + + + +#endif // __GAME_BUTES_H__ diff --git a/Jack/ClientShellDLL/GameClientShell.cpp b/Jack/ClientShellDLL/GameClientShell.cpp new file mode 100644 index 00000000..f8276e80 --- /dev/null +++ b/Jack/ClientShellDLL/GameClientShell.cpp @@ -0,0 +1,5107 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GameClientShell.cpp +// +// PURPOSE : Game Client Shell - Implementation +// +// CREATED : 9/18/97 +// +// (c) 1997-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "GameClientShell.h" +#include "InterfaceMgr.h" +#include "PlayerMgr.h" +#include "AssertMgr.h" +#include "MsgIds.h" +#include "CommandIds.h" +#include "ClientUtilities.h" +#include "vkdefs.h" +#include "clientres.h" +#include "SoundTypes.h" +#include "Music.h" +#include "VolumeBrushFX.h" +#include "client_physics.h" +#include "WinUtil.h" +#include "WeaponStringDefs.h" +#include "iltmath.h" +#include "iltphysics.h" +#include "VarTrack.h" +#include "GameButes.h" +#include "SystemDependant.h" +#include "SurfaceFunctions.h" +#include "VehicleMgr.h" +#include "BodyFX.h" +#include "PlayerShared.h" +#include "CharacterFX.h" +#include "iltsoundmgr.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "ClientTrackedNodeMgr.h" +#include "CMoveMgr.h" +#include "PlayerCamera.h" +#include +#include +#include "ClientMultiplayerMgr.h" +#include "ClientButeMgr.h" +#include "MissionMgr.h" +#include "ClientSaveLoadMgr.h" +#include "FXButeMgr.h" +#include "ClientFXDB.h" +#include +#include "PerformanceTest.h" +#include "ScmdConsole.h" +#include "ScmdConsoleDriver_CShell.h" +#include "mmsystem.h" +#include + +#ifdef STRICT + WNDPROC g_pfnMainWndProc = NULL; +#else + FARPROC g_pfnMainWndProc = NULL; +#endif + +#define MAX_FRAME_DELTA 0.1f + +#define WEAPON_MOVE_INC_VALUE_SLOW 0.0025f +#define WEAPON_MOVE_INC_VALUE_FAST 0.005f + +#define VK_TOGGLE_GHOST_MODE VK_F1 +#define VK_TOGGLE_SPECTATOR_MODE VK_F2 +#define VK_TOGGLE_SCREENSHOTMODE VK_F3 +#define VK_WRITE_CAM_POS VK_F4 +#define VK_MAKE_CUBIC_ENVMAP VK_F12 + + +uint32 g_dwSpecial = 2342349; +bool g_bScreenShotMode = false; + +HWND g_hMainWnd = NULL; +RECT* g_prcClip = NULL; + +CGameClientShell* g_pGameClientShell = NULL; + +LTVector g_vWorldWindVel(0.0f, 0.0f, 0.0f); + +PhysicsState g_normalPhysicsState; +PhysicsState g_waterPhysicsState; + +VarTrack g_vtShowTimingTrack; +VarTrack g_varStartLevelScreenFadeTime; +VarTrack g_varStartLevelScreenFade; +VarTrack g_vtUseSoundFilters; +VarTrack g_vtSpecial; +VarTrack g_vtMakeCubicEnvMapSize; +VarTrack g_vtMakeCubicEnvMapName; +VarTrack g_vtApplyWorldOffset; + +VarTrack g_vtPTestMinFPS; +VarTrack g_vtPTestMaxFPS; + +extern CCheatMgr* g_pCheatMgr; +extern LTVector g_vPlayerCameraOffset; +extern VarTrack g_vtFOVXNormal; +extern VarTrack g_vtFOVYNormal; + +// Sample rate +extern int g_nSampleRate; + +// Speed hack prevention variables +static _timeb g_StartTimeB; +static uint32 g_nStartClientTime = 0; +static uint32 g_nStartTicks = 0; + +BOOL SetWindowSize(uint32 nWidth, uint32 nHeight); +BOOL HookWindow(); +void UnhookWindow(); + +BOOL OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg); +LRESULT CALLBACK HookedWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + + + + + + + + +void InitClientShell() +{ + // Hook up the AssertMgr + + CAssertMgr::Enable(); + + // Get our ClientDE pointer + + _ASSERT(g_pLTClient); + + // Init our LT subsystems + + g_pModelLT = g_pLTClient->GetModelLT(); + g_pTransLT = g_pLTClient->GetTransformLT(); + g_pPhysicsLT = g_pLTClient->Physics(); + g_pLTBase = static_cast(g_pLTClient); + + g_pPhysicsLT->SetStairHeight(DEFAULT_STAIRSTEP_HEIGHT); +} + +void TermClientShell() +{ + // Delete our client shell + + // Unhook the AssertMgr and let the CRT handle asserts once again + + CAssertMgr::Disable(); +} + + +void FragSelfFn(int argc, char **argv) +{ + SendEmptyServerMsg(MID_FRAG_SELF); +} + +void ClientFXFn(int argc, char **argv) +{ + if(argc == 4) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CONSOLE_CLIENTFX); + cMsg.Writeuint8(0); // 0 = No object + cMsg.WriteString(argv[0]); + LTVector vPos; + vPos.x = (float)atof(argv[1]); + vPos.y = (float)atof(argv[2]); + vPos.z = (float)atof(argv[3]); + cMsg.WriteLTVector(vPos); + g_pLTClient->SendToServer(cMsg.Read(),MESSAGE_GUARANTEED); + } + else if(argc == 2) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CONSOLE_CLIENTFX); + cMsg.Writeuint8(1); // 1 = Object + cMsg.WriteString(argv[0]); + cMsg.WriteString(argv[1]); + g_pLTClient->SendToServer(cMsg.Read(),MESSAGE_GUARANTEED); + } + else + { + g_pLTClient->CPrint("ClientFX [ OR ]\n"); + } +} + +void StimulusFn(int argc, char **argv) +{ + if( (argc == 1) || (argc == 2) ) + { + // Message may contain a multiplier. + CAutoMessage cMsg; + cMsg.Writeuint8(MID_STIMULUS); + if(argc == 1) + { + cMsg.Writeuint8(1); + cMsg.WriteString(argv[0]); + } + else { + cMsg.Writeuint8(2); + cMsg.WriteString(argv[0]); + cMsg.Writefloat(float(atof(argv[1]))); // multiplier. + } + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + else { + g_pLTClient->CPrint("Stimulus [multiplier]"); + } +} + +void RenderStimulusFn(int argc, char **argv) +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_RENDER_STIMULUS); + if(argc == 1) + { + cMsg.Writeuint8( (uint8)atoi(argv[0]) ); + } + else { + cMsg.Writeuint8( 1 ); + } + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); +} + +void ObjectAlphaFn(int argc, char **argv) +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_OBJECT_ALPHA); + if(argc == 2) + { + cMsg.WriteString(argv[0]); + cMsg.Writefloat((float)atof(argv[1])); + + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } +} + + +void AddGoalFn(int argc, char **argv) +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_ADD_GOAL); + if(argc >= 2) + { + cMsg.WriteString(argv[0]); + cMsg.WriteString(argv[1]); + + cMsg.Writeuint32(argc - 2); + int iArg = 2; + while( iArg < argc ) + { + cMsg.WriteString(argv[iArg++]); + } + + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + else { + g_pLTClient->CPrint("AddGoal [name=val ...]"); + } +} + +void RemoveGoalFn(int argc, char **argv) +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_REMOVE_GOAL); + if(argc == 2) + { + cMsg.WriteString(argv[0]); + cMsg.WriteString(argv[1]); + + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + else + { + g_pLTClient->CPrint("RemoveGoal "); + } +} + +void ReloadWeaponAttributesFn(int argc, char **argv) +{ + g_pWeaponMgr->Reload(); + g_pLTClient->CPrint("Reloaded weapons attributes file..."); +} + +void ReloadSurfacesAttributesFn(int argc, char **argv) +{ + g_pSurfaceMgr->Reload(); + g_pLTClient->CPrint("Reloaded surface attributes file..."); +} + +void ReloadFXAttributesFn(int argc, char **argv) +{ + g_pFXButeMgr->Reload(); + g_pLTClient->CPrint("Reloaded fx attributes file..."); + + // Make sure we re-load the weapons and surface data, it has probably + // changed... + ReloadWeaponAttributesFn(0, 0); + ReloadSurfacesAttributesFn(0, 0); +} + +void ExitLevelFn(int argc, char **argv) +{ + if (g_pCheatMgr) + { + CParsedMsg cMsg( 0, LTNULL ); + g_pCheatMgr->Process( CHEAT_EXITLEVEL, cMsg ); + } +} + +void TeleportFn(int argc, char **argv) +{ + if (argc < 3) + { + g_pLTClient->CPrint("Teleport x y z"); + return; + } + + if (g_pPlayerMgr) + { + LTVector vPos; + vPos.x = (float) atof(argv[0]); + vPos.y = (float) atof(argv[1]); + vPos.z = (float) atof(argv[2]); + + //handle the shift from the current world to the source world + if((uint32)g_vtApplyWorldOffset.GetFloat(1.0f)) + { + LTVector vOffset; + g_pLTClient->GetSourceWorldOffset(vOffset); + vPos -= vOffset; + } + + + g_pPlayerMgr->Teleport(vPos); + } +} + +void ChaseToggleFn(int argc, char **argv) +{ + if (g_pGameClientShell) + { + g_pGameClientShell->ToggleDebugCheat(CHEAT_CHASETOGGLE); + } +} + +void CmdFn(int argc, char **argv) +{ + if (argc < 2) + { + g_pLTClient->CPrint("Cmd "); + return; + } + + // Send message to server... + char buf[256]; + buf[0] = '\0'; + sprintf(buf, "%s", argv[0]); + for (int i=1; i < argc; i++) + { + strcat(buf, " "); + strcat(buf, "\""); + strcat(buf, argv[i]); + strcat(buf, "\""); + } + + HSTRING hstrCmd = g_pLTClient->CreateString(buf); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CONSOLE_COMMAND); + cMsg.WriteHString(hstrCmd); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + g_pLTClient->FreeString(hstrCmd); +} + +void TriggerFn(int argc, char **argv) +{ + if (argc < 2) + { + g_pLTClient->CPrint("Trigger "); + return; + } + + // Send message to server... + + HSTRING hstrObjName = g_pLTClient->CreateString(argv[0]); + HSTRING hstrMsg = g_pLTClient->CreateString(argv[1]); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CONSOLE_TRIGGER); + cMsg.WriteHString(hstrObjName); + cMsg.WriteHString(hstrMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + g_pLTClient->FreeString(hstrObjName); + g_pLTClient->FreeString(hstrMsg); +} + +void ListFn(int argc, char **argv) +{ + if (argc < 1 || !argv) + { + g_pLTClient->CPrint("List "); + return; + } + + // Send message to server... + + char buf[100]; + sprintf(buf, "List %s", argv[0]); + + HSTRING hstrMsg = g_pLTClient->CreateString(buf); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CONSOLE_TRIGGER); + cMsg.WriteHString(LTNULL); + cMsg.WriteHString(hstrMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + g_pLTClient->FreeString(hstrMsg); +} + + +void ExitGame(bool bResponse, uint32 nUserData) +{ + if (bResponse) + { + g_pLTClient->Shutdown(); + } +} + +void InitSoundFn(int argc, char **argv) +{ + if (g_pGameClientShell) + { + g_pGameClientShell->InitSound(); + } +} + +void MusicFn(int argc, char **argv) +{ + if (!g_pGameClientShell->GetMusic()->IsInitialized()) + { + g_pLTClient->CPrint("Direct Music hasn't been initialized!"); + } + + if (argc < 2) + { + g_pLTClient->CPrint("Music "); + g_pLTClient->CPrint(" Commands: (syntax -> Command [Optional])"); + g_pLTClient->CPrint(" "); + g_pLTClient->CPrint(" I [Enact] - Change Intensity"); + g_pLTClient->CPrint(" PS [Enact] - Play secondary segment"); + g_pLTClient->CPrint(" PM [Enact] - Play motif"); + g_pLTClient->CPrint(" V - Change volume"); + g_pLTClient->CPrint(" SS [Enact] - Stop secondary segment"); + g_pLTClient->CPrint(" SM [Enact] - Stop motif"); + g_pLTClient->CPrint(" S [Enact] - Stop music"); + g_pLTClient->CPrint(" P [Enact] - Play music"); + g_pLTClient->CPrint(" "); + g_pLTClient->CPrint(" Enact Change Values:"); + g_pLTClient->CPrint(" Default - Will use the default value that is defined in the Control File or by DirectMusic"); + g_pLTClient->CPrint(" Immediately - Will happen immediately"); + g_pLTClient->CPrint(" Beat - Will happen on the next beat"); + g_pLTClient->CPrint(" Measure - Will happen on the next measure"); + g_pLTClient->CPrint(" Grid - Will happen on the next grid"); + g_pLTClient->CPrint(" Segment - Will happen on the next segment transition"); + + return; + } + + // Build the command... + + char buf[512]; + buf[0] = '\0'; + sprintf(buf, "Music"); + for (int i=0; i < argc; i++) + { + strcat(buf, " "); + strcat(buf, argv[i]); + } + + g_pGameClientShell->GetMusic()->ProcessMusicMessage(buf); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::CGameClientShell() +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +CGameClientShell::CGameClientShell() +{ + //AfxSetAllocStop(37803); + + m_pMissionMgr = NULL; + m_pClientSaveLoadMgr = NULL; + + + g_pGameClientShell = this; + + m_fFrameTime = 0.0f; + + g_vWorldWindVel.Init(); + + + m_bMainWindowMinimized = false; + + + m_bGamePaused = false; + + m_bTweakingWeapon = false; + m_bTweakingWeaponMuzzle = false; + m_bTweakingWeaponBreachOffset = false; + m_bAdjust1stPersonCamera = false; + + + m_bFlashScreen = false; + m_fFlashTime = 0.0f; + m_fFlashStart = 0.0f; + m_fFlashRampUp = 0.0f; + m_fFlashRampDown = 0.0f; + m_vFlashColor.Init(); + + m_bShowPlayerPos = false; + m_bShowCamPosRot = false; + + for (int i=0; i < kMaxDebugStrings; i++) + { + m_pLeftDebugString[i] = NULL; + m_pRightDebugString[i] = NULL; + } + + m_bAdjustLightScale = false; + m_bAdjustLightAdd = false; + m_bAdjustFOV = false; + + m_bFirstUpdate = false; + m_bRestoringGame = false; + + + m_eDifficulty = GD_NORMAL; + m_eGameType = eGameTypeSingle; + + m_hBoundingBox = NULL; + + m_bMainWindowFocus = false; + m_bRendererInit = false; + + + m_fNextSoundReverbTime = 0.0f; + m_bUseReverb = false; + m_fReverbLevel = 0.0f; + + m_vLastReverbPos.Init(); + + m_pClientTrackedNodeMgr = NULL; + + m_pClientMultiplayerMgr = NULL; + + m_bInWorld = false; + + m_bQuickSave = false; + + m_bServerPaused = false; + m_eSwitchingWorldsState = eSwitchingWorldsStateNone; + + + m_fInitialServerTime = 0.0f; + m_fInitialLocalTime = 0.0f; + m_nSpeedCheatCounter = 0; + + m_bRunningPerfTest = false; + m_pPerformanceTest = LTNULL; + + m_bLaunchedServerApp = false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::~CGameClientShell() +// +// PURPOSE: Destruction +// +// ----------------------------------------------------------------------- // + +CGameClientShell::~CGameClientShell() +{ + for (int i=0; i < kMaxDebugStrings; i++) + { + if (m_pLeftDebugString[i]) + { + g_pFontManager->DestroyPolyString(m_pLeftDebugString[i]); + m_pLeftDebugString[i] = NULL; + } + + if (m_pRightDebugString[i]) + { + g_pFontManager->DestroyPolyString(m_pRightDebugString[i]); + m_pRightDebugString[i] = NULL; + } + } + + if (m_hBoundingBox) + { + g_pLTClient->RemoveObject(m_hBoundingBox); + } + + if (g_prcClip) + { + debug_delete(g_prcClip); + g_prcClip = NULL; + } + + if ( m_pClientTrackedNodeMgr != 0 ) + { + debug_delete( m_pClientTrackedNodeMgr ); + m_pClientTrackedNodeMgr = 0; + } + + if( m_pClientMultiplayerMgr ) + { + debug_delete( m_pClientMultiplayerMgr ); + m_pClientMultiplayerMgr = NULL; + } + +#if defined (_DEMO) + // Only show the endsplash if they didn't launch the serverapp. + if( !m_bLaunchedServerApp ) + LaunchFromString( "endsplash.htm", NULL ); +#endif // defined (_DEMO) +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::InitSound +// +// PURPOSE: Initialize the sounds +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::InitSound() +{ + CGameSettings* pSettings = GetInterfaceMgr( )->GetSettings(); + if (!pSettings) return; + + Sound3DProvider *pSound3DProviderList, *pSound3DProvider; + InitSoundInfo soundInfo; + uint32 dwProviderID; + char sz3dSoundProviderName[_MAX_PATH + 1]; + + uint32 dwAdvancedOptions = GetInterfaceMgr( )->GetAdvancedOptions(); + if (!(dwAdvancedOptions & AO_SOUND)) return; + + soundInfo.Init(); + + // Reload the sounds if there are any... + + soundInfo.m_dwFlags = INITSOUNDINFOFLAG_RELOADSOUNDS; + + + // Get the maximum number of 3d voices to use. + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("Max3DVoices"); + if (hVar) + { + soundInfo.m_nNum3DVoices = (uint8)g_pLTClient->GetVarValueFloat(hVar); + } + else + { + soundInfo.m_nNum3DVoices = 32; + } + + // Get the 3d sound provider id.... + if (!(dwAdvancedOptions & AO_HARDWARESOUND)) + { + dwProviderID = SOUND3DPROVIDERID_NONE; + } + else + { + dwProviderID = SOUND3DPROVIDERID_UNKNOWN; + } + + // if hardware isn't turned off, try and use hardware + if ( dwProviderID == SOUND3DPROVIDERID_UNKNOWN ) + { + sz3dSoundProviderName[0] = 0; + hVar = g_pLTClient->GetConsoleVar("3DSoundProviderName"); + if ( hVar ) + { + SAFE_STRCPY( sz3dSoundProviderName, g_pLTClient->GetVarValueString( hVar )); + } + else + { + // try DX hardware + SAFE_STRCPY( sz3dSoundProviderName, "DirectSound Hardware" ); + } + } + + // See if the provider exists.... + if ( dwProviderID != SOUND3DPROVIDERID_NONE ) + { + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->GetSound3DProviderLists( pSound3DProviderList, false, soundInfo.m_nNum3DVoices ); + if ( !pSound3DProviderList ) + { + return; + } + + pSound3DProvider = pSound3DProviderList; + while ( pSound3DProvider ) + { + // If the provider is selected by name, then compare the names. + if ( dwProviderID == SOUND3DPROVIDERID_UNKNOWN ) + { + if ( strcmp(( const char * )sz3dSoundProviderName, ( const char * )pSound3DProvider->m_szProvider ) == 0 ) + break; + } + // Or compare by the id's. + else if ( pSound3DProvider->m_dwProviderID == dwProviderID ) + break; + + // Not this one, try next one. + pSound3DProvider = pSound3DProvider->m_pNextProvider; + } + + // Check if we found one. + if (pSound3DProvider) + { + // Use this provider. + SAFE_STRCPY( soundInfo.m_sz3DProvider, pSound3DProvider->m_szProvider); + } + + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->ReleaseSound3DProviderList(pSound3DProviderList); + } + else + { + soundInfo.m_sz3DProvider[0] = 0; + } + + // Get the maximum number of sw voices to use. + hVar = g_pLTClient->GetConsoleVar("MaxSWVoices"); + if (hVar) + { + soundInfo.m_nNumSWVoices = (uint8)g_pLTClient->GetVarValueFloat(hVar); + } + else + { + soundInfo.m_nNumSWVoices = 32; + } + + soundInfo.m_nSampleRate = g_nSampleRate; + soundInfo.m_nBitsPerSample = 16; + soundInfo.m_nVolume = (unsigned short)pSettings->SoundVolume(); + + if ( pSettings->Sound16Bit( ) ) + { + DebugCPrint(1,"CGameClientShell::InitSound() - 16 bit sound"); + } + else + { + DebugCPrint(1,"CGameClientShell::InitSound() - 8 bit sound"); + soundInfo.m_dwFlags |= INITSOUNDINFOFLAG_CONVERT16TO8; + } + + soundInfo.m_fDistanceFactor = 1.0f / 64.0f; + soundInfo.m_fDopplerFactor = 1.0f; + + // Go initialize the sounds... + + m_bUseReverb = false; + if (((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->InitSound(&soundInfo) == LT_OK) + { + if (soundInfo.m_dwResults & INITSOUNDINFORESULTS_REVERB) + { + m_bUseReverb = true; + } + + hVar = g_pLTClient->GetConsoleVar("ReverbLevel"); + if (hVar) + { + m_fReverbLevel = g_pLTClient->GetVarValueFloat(hVar); + } + else + { + m_fReverbLevel = g_pClientButeMgr->GetReverbAttributeFloat(REVERB_BUTE_DEFAULTLEVEL); + } + + ReverbProperties reverbProperties; + reverbProperties.m_dwParams = REVERBPARAM_VOLUME; + reverbProperties.m_fVolume = m_fReverbLevel; + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetReverbProperties(&reverbProperties); + } + + + // [KLS 9/10/02] Since we just reinitialized the sound system we need to make sure + // any lip-flap sounds that are currently playing are updated since their data + // may have changed and is accessed directly by the game... + + ResetCharacterFXSoundData(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::ResetCharacterFXSoundData +// +// PURPOSE: Tell all the CharacterFX to update their lip-flap +// sound data... +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::ResetCharacterFXSoundData() +{ + CSpecialFXList* pList = m_sfxMgr.GetFXList(SFX_CHARACTER_ID); + if (!pList) return; + + int nNumChars = pList->GetSize(); + + for (int i=0; i < nNumChars; i++) + { + if ((*pList)[i]) + { + CCharacterFX* pChar = (CCharacterFX*)(*pList)[i]; + pChar->ResetSoundBufferData(); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::CSPrint +// +// PURPOSE: Displays a line of text on the client +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::CSPrint(char* msg, ...) +{ + // parse the message + + char pMsg[256]; + va_list marker; + va_start (marker, msg); + int nSuccess = vsprintf (pMsg, msg, marker); + va_end (marker); + + if (nSuccess < 0) return; + + // now display the message + g_pChatMsgs->AddMessage(pMsg); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnEngineInitialized +// +// PURPOSE: Called after engine is fully initialized +// Handle object initialization here +// +// ----------------------------------------------------------------------- // + +uint32 CGameClientShell::OnEngineInitialized(RMode *pMode, LTGUID *pAppGuid) +{ + InitClientShell(); + + //CWinUtil::DebugBreak(); + + *pAppGuid = GAMEGUID; + + + char strTimeDiff[64]; + float fStartTime = CWinUtil::GetTime(); + + + if (!g_hMainWnd) + { + HookWindow(); + SetWindowSize(pMode->m_Width, pMode->m_Height); + } + + + // Initialize all the global bute mgrs... + + if (!m_GlobalMgr.Init()) + { + return LT_ERROR; + } + + // Initialize global console variables... + + + + g_vtShowTimingTrack.Init(g_pLTClient, "ShowTiming", NULL, 0.0f); + + g_varStartLevelScreenFade.Init(g_pLTClient, "ScreenFadeAtLevelStart", NULL, 1.0f); + g_varStartLevelScreenFadeTime.Init(g_pLTClient, "ScreenFadeInAtLevelStartTime", NULL, 1.5f); + + g_vtUseSoundFilters.Init(g_pLTClient, "SoundFilters", NULL, 0.0f); + + g_vtSpecial.Init(g_pLTClient, "ShowSpecial", NULL, 0.0f); + + g_vtMakeCubicEnvMapSize.Init(g_pLTClient, "MakeCubicEnvMapSize", NULL, 256.0f); + g_vtMakeCubicEnvMapName.Init(g_pLTClient, "MakeCubicEnvMapName", "CubicEnvMap", 0.0f); + g_vtApplyWorldOffset.Init(g_pLTClient, "ApplyWorldOffset", NULL, 1.0f); + + g_vtPTestMinFPS.Init(g_pLTClient, "PerformanceMinTestFPS", NULL, 25.0f); + g_vtPTestMaxFPS.Init(g_pLTClient, "PerformanceMaxTestFPS", NULL, 40.0f); + + HCONSOLEVAR hIsSet = g_pLTClient->GetConsoleVar("UpdateRateInitted"); + if (!hIsSet || g_pLTClient->GetVarValueFloat(hIsSet) != 1.0f) + { + // Initialize the update rate. + g_pLTClient->RunConsoleString("+UpdateRateInitted 1"); + g_pLTClient->RunConsoleString("+UpdateRate 60"); + } + + m_cheatMgr.Init(); + m_LightScaleMgr.Init(); + + // would be nice to move these to a centralized registry function + + g_pLTClient->RegisterConsoleProgram("Cmd", CmdFn); + g_pLTClient->RegisterConsoleProgram("Trigger", TriggerFn); + g_pLTClient->RegisterConsoleProgram("List", ListFn); + g_pLTClient->RegisterConsoleProgram("FragSelf", FragSelfFn); + g_pLTClient->RegisterConsoleProgram("ReloadWeapons", ReloadWeaponAttributesFn); + g_pLTClient->RegisterConsoleProgram("ReloadSurfaces", ReloadSurfacesAttributesFn); + g_pLTClient->RegisterConsoleProgram("ReloadFX", ReloadFXAttributesFn); + g_pLTClient->RegisterConsoleProgram("InitSound", InitSoundFn); + g_pLTClient->RegisterConsoleProgram("ExitLevel", ExitLevelFn); + g_pLTClient->RegisterConsoleProgram("Teleport", TeleportFn); + g_pLTClient->RegisterConsoleProgram("ChaseToggle", ChaseToggleFn); + g_pLTClient->RegisterConsoleProgram("Music", MusicFn); + g_pLTClient->RegisterConsoleProgram("Stimulus", StimulusFn); + g_pLTClient->RegisterConsoleProgram("RenderStimulus", RenderStimulusFn); + g_pLTClient->RegisterConsoleProgram("AddGoal", AddGoalFn); + g_pLTClient->RegisterConsoleProgram("RemoveGoal", RemoveGoalFn); + g_pLTClient->RegisterConsoleProgram("Alpha", ObjectAlphaFn); + g_pLTClient->RegisterConsoleProgram("ClientFX", ClientFXFn); + + g_pLTClient->SetModelHook((ModelHookFn)DefaultModelHook, this); + + // Make sure the save directory exists... + if (!CWinUtil::DirExist("Save")) + { + CWinUtil::CreateDir("Save"); + } + + // Add to NumRuns count... + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + uint32 nGameRuns = pRegMgr->Get( "GameRuns", 0 ); + nGameRuns++; + pRegMgr->Set( "GameRuns", nGameRuns ); + } + + bool bNetworkGameStarted = false; + + //setup our render mode to only allow hardware TnL rendering modes at 32 bpp + RMode rMode; + + rMode.m_Width = pMode->m_Width; + rMode.m_Height = pMode->m_Height; + rMode.m_BitDepth = 32; + rMode.m_bHWTnL = true; + rMode.m_pNext = NULL; + + sprintf(rMode.m_InternalName, "%s", pMode->m_InternalName); + sprintf(rMode.m_Description, "%s", pMode->m_Description); + + // Initialize the renderer + LTRESULT hResult = g_pLTClient->SetRenderMode(&rMode); + if (hResult != LT_OK) + { + // If an error occurred, try 640x480x32... + rMode.m_Width = 640; + rMode.m_Height = 480; + + g_pLTClient->DebugOut("%s Error: Couldn't set render mode!\n", GAME_NAME); + g_pLTClient->DebugOut("Setting render mode to 640x480x32...\n"); + + if (g_pLTClient->SetRenderMode(&rMode) != LT_OK) + { + //alright, both of the above failed, so now we need to inform the user that we are unable + //to create a HWTnL device. This can be caused by them not having a TnL device, or by + //them not having DX8.1. We will let them choose if they want to exit or attempt to + //create a SWTnL device + char pszNoTnLWarningBuff[512]; + FormatString(IDS_APP_UNABLE_TO_CREATE_HW_TNL_DEVICE, pszNoTnLWarningBuff, sizeof(pszNoTnLWarningBuff), GAME_NAME); + + if(MessageBox(g_hMainWnd, pszNoTnLWarningBuff, GAME_NAME, MB_OKCANCEL) == IDCANCEL) + { + //alright, they canceled, so we need to just exit + g_pLTClient->DebugOut("User chose to not create software TnL device. Exiting."); + g_pLTClient->Shutdown(); + return LT_ERROR; + } + + g_pLTClient->DebugOut("Attempting to create software TnL device."); + + //they want to continue, so create a software version + rMode.m_Width = pMode->m_Width; + rMode.m_Height = pMode->m_Height; + rMode.m_bHWTnL = false; + + if (g_pLTClient->SetRenderMode(&rMode) != LT_OK) + { + g_pLTClient->DebugOut("Failed to create default resoltution software TnL, falling back to 640x480"); + + rMode.m_Width = 640; + rMode.m_Height = 480; + + if (g_pLTClient->SetRenderMode(&rMode) != LT_OK) + { + char pszErrorBuffer[256]; + FormatString(IDS_APP_SHUTDOWN_1, pszErrorBuffer, sizeof(pszErrorBuffer), GAME_NAME); + + // Okay, that didn't work, looks like we're stuck with software... + g_pLTClient->DebugOut(pszErrorBuffer); + g_pLTClient->ShutdownWithMessage(pszErrorBuffer); + return LT_ERROR; + } + } + WriteConsoleInt("HWTnLDisabled",1); + } + } + + // Init the ClientFX Database + if(!CClientFXDB::GetSingleton().Init(g_pLTClient)) + { + g_pLTClient->ShutdownWithMessage( "Could not init ClientFXDB!" ); + return LT_ERROR; + } + + // Init the ClientFX mgr... (this must become before most other classes) + if( !m_ClientFXMgr.Init( g_pLTClient ) ) + { + // Make sure ClientFX.fxd is built and in the game dir + g_pLTClient->ShutdownWithMessage( "Could not init ClientFXMgr!" ); + return LT_ERROR; + } + + // Init the DamageFX mgr... + if( !m_DamageFXMgr.Init() ) + { + g_pLTClient->ShutdownWithMessage( "Could not init DamageFXMgr!" ); + return false; + } + + // Mission stuff... + m_pMissionMgr = debug_new(CMissionMgr); + if (!m_pMissionMgr || !m_pMissionMgr->Init()) + { + // Don't call ShutdownWithMessage since MissionMgr will have called + // that, so calling it here will overwrite the message... + return LT_ERROR; + } + + m_pClientSaveLoadMgr = debug_new( CClientSaveLoadMgr ); + if( !m_pClientSaveLoadMgr ) + { + // Don't call ShutdownWithMessage since MissionMgr will have called + // that, so calling it here will overwrite the message... + return LT_ERROR; + } + + // Interface stuff... + if (!GetInterfaceMgr( ) || !GetInterfaceMgr( )->Init()) + { + // Don't call ShutdownWithMessage since InterfaceMgr will have called + // that, so calling it here will overwrite the message... + return LT_ERROR; + } + + // Player stuff... + if (!GetPlayerMgr() || !GetPlayerMgr()->Init()) + { + // Don't call ShutdownWithMessage since PlayerMgr will have called + // that, so calling it here will overwrite the message... + return LT_ERROR; + } + + //We need to make sure to setup the camera for the FX Mgr + m_ClientFXMgr.SetCamera(GetPlayerMgr()->GetCamera()); + + // Tracked Node stuff... + if( m_pClientTrackedNodeMgr == 0 ) + { + m_pClientTrackedNodeMgr = debug_new( CClientTrackedNodeMgr ); + ASSERT( 0 != m_pClientTrackedNodeMgr ); + } + + // Setup the music stuff...(before we setup the interface!) + + uint32 dwAdvancedOptions = GetInterfaceMgr( )->GetAdvancedOptions(); + + if (!m_Music.IsInitialized() && (dwAdvancedOptions & AO_MUSIC)) + { + m_Music.Init(g_pLTClient); + } + + + + // Initialize the global physics states... + + g_normalPhysicsState.m_vGravityAccel.Init(0.0f, -1000.0f, 0.0f); + g_normalPhysicsState.m_fVelocityDampen = 0.5f; + g_waterPhysicsState.m_vGravityAccel.Init(0.0f, -500.0f, 0.0f); + g_waterPhysicsState.m_fVelocityDampen = 0.25f; + + + m_pClientMultiplayerMgr = debug_new( ClientMultiplayerMgr ); + + // Init the special fx mgr... + if (!m_sfxMgr.Init(g_pLTClient)) + { + g_pLTClient->ShutdownWithMessage("Could not initialize SFXMgr!"); + return LT_ERROR; + } + + m_bQuickSave = false; + + // Get the name of the mod we want to play. If no mod specified then we consider that the 'Retail' mod... + // Set this when the game initializes and use g_pClientMultiplayerMgr->GetModName() in case the console var changes. + + HCONSOLEVAR hModVar = g_pLTClient->GetConsoleVar( "Mod" ); + if( hModVar ) + { + g_pClientMultiplayerMgr->SetModName( g_pLTClient->GetVarValueString( hModVar) ); + } + else + { + g_pClientMultiplayerMgr->SetModName( RETAIL_MOD_NAME ); + } + + // Process command line. + HCONSOLEVAR hVar = NULL; + if (hVar = g_pLTClient->GetConsoleVar("join")) // looking for join [ip] format + { + g_pInterfaceMgr->SetCommandLineJoin( true ); + + // Change to the splash screen. We'll start the game after that. + GetInterfaceMgr()->ChangeState( GS_SPLASHSCREEN ); + } + else if (hVar = g_pLTClient->GetConsoleVar("host")) // looking for host [1] format + { + int nHost = atoi(g_pLTClient->GetVarValueString( hVar )); + + // Use the settings from the current profile to determine what the game will be... + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile( ); + if( nHost && pProfile ) + { + bool bOk = true; + + // Initialize the mission mgr with the appropriate file based on game type... + + std::string sMissionFile; + switch( pProfile->m_ServerGameOptions.m_eGameType ) + { + case eGameTypeCooperative: + { + sMissionFile = MISSION_COOP_FILE; + } + break; + + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + case eGameTypeDoomsDay: + case eGameTypeDemolition: + { + sMissionFile = MISSION_DM_FILE; + } + break; + + case eGameTypeSingle: + default: + { + sMissionFile = MISSION_DEFAULT_FILE; + bOk = false; + } + break; + } + + if( !g_pMissionButeMgr->Init( sMissionFile.c_str() )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", sMissionFile.c_str() ); + return LT_ERROR; + } + + // Start the server.. + + bOk = bOk && g_pClientMultiplayerMgr->SetupServerHost( pProfile->m_ServerGameOptions.m_nPort , pProfile->m_ServerGameOptions.m_bLANOnly ); + bOk = bOk && g_pMissionMgr->StartGameNew(); + + if( !bOk ) + { + // drop them into the host menu + GetInterfaceMgr( )->LoadFailed(); + GetInterfaceMgr( )->SwitchToScreen(SCREEN_ID_HOST); + + MBCreate mb; + GetInterfaceMgr( )->ShowMessageBox(IDS_NOLOADLEVEL,&mb); + } + } + else + { + // Just treat like normal game... + + GetInterfaceMgr( )->ChangeState(GS_SPLASHSCREEN); + } + } + else if (hVar = g_pLTClient->GetConsoleVar("runworld")) + { + const char* pMap = g_pLTClient->GetVarValueString(hVar); + if (!pMap) + { + g_pLTClient->ShutdownWithMessage("No world string found after runworld tolken, SUCKA'!"); + return LT_ERROR; + } + + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return LT_ERROR; + } + + g_pClientSaveLoadMgr->SetUseMultiplayerFolders( false ); + bool bOk = g_pClientMultiplayerMgr->SetupServerSinglePlayer( ); + bOk = bOk && g_pMissionMgr->StartGameFromLevel(pMap); + if( !bOk ) + { + g_pLTClient->ShutdownWithMessage(LoadTempString(IDS_NOLOADLEVEL)); + return LT_ERROR; + } + } + else if (GetConsoleInt("skiptitle",0)) + { + GetInterfaceMgr( )->SwitchToScreen(SCREEN_ID_MAIN); + } + else + { + GetInterfaceMgr( )->ChangeState(GS_SPLASHSCREEN); + } + +#ifdef _DEMO + WriteConsoleInt( "ConsoleEnable", 0 ); +#endif // _DEMO + + + // Determine how long it took to initialize the game... + sprintf(strTimeDiff, "Game initialized in %f seconds.\n", CWinUtil::GetTime() - fStartTime); + CWinUtil::DebugOut(strTimeDiff); + + m_pPerformanceTest = debug_new(CPerformanceTest); + + // Intialize the scmd handler. + static ScmdConsoleDriver_CShell scmdConsoleDriver_CShell; + if( !ScmdConsole::Instance( ).Init( scmdConsoleDriver_CShell )) + { + return LT_ERROR; + } + + return LT_OK; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnEngineTerm() +// +// PURPOSE: Called before the engine terminates itself +// Handle object destruction here +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnEngineTerm() +{ + UnhookWindow(); + + GetInterfaceMgr( )->Term(); + + if( m_pClientSaveLoadMgr ) + { + debug_delete( m_pClientSaveLoadMgr ); + m_pClientSaveLoadMgr = NULL; + } + + if( m_pMissionMgr ) + { + m_pMissionMgr->Term(); + m_pMissionMgr = NULL; + } + + //Make sure that the FX Mgr isn't still holding on to our camera + m_ClientFXMgr.SetCamera(NULL); + + GetPlayerMgr()->Term(); + + m_Music.Term(); + m_LightScaleMgr.Term(); + + if( m_pClientMultiplayerMgr ) + { + debug_delete( m_pClientMultiplayerMgr ); + m_pClientMultiplayerMgr = NULL; + } + + if (m_pPerformanceTest) + { + debug_delete( m_pPerformanceTest ); + m_pPerformanceTest = NULL; + } + + TermClientShell(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnEvent() +// +// PURPOSE: Called for asynchronous errors that cause the server +// to shut down +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnEvent(uint32 dwEventID, uint32 dwParam) +{ + switch(dwEventID) + { + // Client disconnected from server. dwParam will + // be a error flag found in de_codes.h. + + case LTEVENT_DISCONNECT : + { + SetWorldNotLoaded(); + m_bServerPaused = false; + m_eSwitchingWorldsState = eSwitchingWorldsStateNone; + + } break; + + case LTEVENT_LOSTFOCUS: + { + m_bMainWindowFocus = FALSE; + + } + break; + + case LTEVENT_GAINEDFOCUS: + { + m_bMainWindowFocus = TRUE; + } + break; + + case LTEVENT_RENDERTERM: + { + m_bMainWindowFocus = FALSE; + m_bRendererInit = false; + + // Let the ClientFx mgr know the renderer is shutting down + m_ClientFXMgr.OnRendererShutdown(); + } + break; + + case LTEVENT_RENDERINIT: + { + m_bMainWindowFocus = TRUE; + m_bRendererInit = true; + + // Clip the cursor if we're NOT in a window... + + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("Windowed"); + BOOL bClip = TRUE; + if (hVar) + { + float fVal = g_pLTClient->GetVarValueFloat(hVar); + if (fVal == 1.0f) + { + bClip = FALSE; + } + } + + if (bClip) + { + if (!g_prcClip) + { + g_prcClip = debug_new(RECT); + } + + + if (!g_hMainWnd) + { + HookWindow(); + } + + GetWindowRect(g_hMainWnd, g_prcClip); + ClipCursor(g_prcClip); + } + + if (g_pCursorMgr) + g_pCursorMgr->Init(); + + //setup the glow table + char pszRS[2][_MAX_PATH]; + g_pClientButeMgr->GetDefaultGlowRS(pszRS[0], _MAX_PATH); + g_pLTClient->SetGlowDefaultRenderStyle(pszRS[0]); + + g_pClientButeMgr->GetNoGlowRS(pszRS[0], _MAX_PATH); + g_pLTClient->SetNoGlowRenderStyle(pszRS[0]); + + for(uint32 nCurrMap = 0; nCurrMap < g_pClientButeMgr->GetNumGlowMappings(); nCurrMap++) + { + g_pClientButeMgr->GetGlowMappingRS(nCurrMap, pszRS[0], _MAX_PATH, pszRS[1], _MAX_PATH); + g_pLTClient->AddGlowRenderStyleMapping(pszRS[0], pszRS[1]); + } + } + break; + } + + if (GetInterfaceMgr( )) + GetInterfaceMgr( )->OnEvent(dwEventID, dwParam); + if( g_pClientMultiplayerMgr ) + g_pClientMultiplayerMgr->OnEvent(dwEventID, dwParam); +} + + +LTRESULT CGameClientShell::OnObjectMove(HOBJECT hObj, bool bTeleport, LTVector *pPos) +{ + return g_pPlayerMgr->GetMoveMgr()->OnObjectMove(hObj, bTeleport, pPos); +} + + +LTRESULT CGameClientShell::OnObjectRotate(HOBJECT hObj, bool bTeleport, LTRotation *pNewRot) +{ + m_sfxMgr.OnObjectRotate( hObj, bTeleport, pNewRot ); + return g_pPlayerMgr->GetMoveMgr()->OnObjectRotate(hObj, bTeleport, pNewRot); +} + +LTRESULT CGameClientShell::OnTouchNotify(HOBJECT hMain, CollisionInfo *pInfo, float forceMag) +{ + m_sfxMgr.OnTouchNotify(hMain, pInfo, forceMag); + return LT_OK; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnEnterWorld() +// +// PURPOSE: Handle entering world +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnEnterWorld() +{ + // Reset our speed hack. + g_nStartTicks = 0; + + // In world now. + m_bInWorld = true; + + // Make sure we enable all object render groups so we don't have any weird state + // left over from previous levels + g_pLTClient->SetAllObjectRenderGroupEnabled(); + + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->ResumeSounds(); + + // Set the stair height gotten from the server... + + float fStairHeight = DEFAULT_STAIRSTEP_HEIGHT; + g_pLTClient->GetSConValueFloat( STAIR_STEP_HEIGHT_CVAR, fStairHeight ); + g_pPhysicsLT->SetStairHeight( fStairHeight ); + + m_bFirstUpdate = true; + + m_LightScaleMgr.Init(); + GetInterfaceMgr( )->AddToClearScreenCount(); + + g_pLTClient->ClearInput(); + + GetInterfaceMgr( )->OnEnterWorld(m_bRestoringGame); + GetPlayerMgr()->OnEnterWorld(); + + m_bRestoringGame = false; + + m_vLastReverbPos.Init(); + + MirrorSConVar( "RespawnWaitTime", "RespawnWaitTime" ); + MirrorSConVar( "RespawnMultiWaitTime", "RespawnMultiWaitTime" ); + MirrorSConVar( "RespawnDoomsdayWaitTime", "RespawnDoomsdayWaitTime" ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnExitWorld() +// +// PURPOSE: Handle exiting the world +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnExitWorld() +{ + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->PauseSounds(); + + if (GetConsoleBool("MakeAssetList",false)) + { + WriteConsoleBool("ShowFileAccess",false); + g_pLTClient->CPrint("EndList"); + } + + // Not in world any more. + m_bInWorld = false; + + m_DamageFXMgr.Clear(); // Remove all the sfx + m_sfxMgr.RemoveAll(); // Remove all the sfx + m_ClientFXMgr.ShutdownAllFX(); // Stop all the client FX + + GetInterfaceMgr( )->OnExitWorld(); + + if( GetPlayerMgr() ) + GetPlayerMgr()->OnExitWorld(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::PreUpdate() +// +// PURPOSE: Handle client pre-updates +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::PreUpdate() +{ + GetPlayerMgr()->PreUpdate(); + GetInterfaceMgr( )->PreUpdate(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::Update() +// +// PURPOSE: Handle client updates +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::Update() +{ + // Allow multiplayermgr to update. + g_pClientMultiplayerMgr->Update(); + + // Set up the time for this frame... + m_fFrameTime = g_pLTClient->GetFrameTime(); + if (m_fFrameTime > MAX_FRAME_DELTA) + { + m_fFrameTime = MAX_FRAME_DELTA; + } + + // Update tint if applicable (always do this to make sure tinting + // gets finished)... + + UpdateScreenFlash(); + m_ScreenTintMgr.Update(); + + + + // Update client-side physics structs... + + if (IsServerPaused()) + { + SetPhysicsStateTimeStep(&g_normalPhysicsState, 0.0f); + SetPhysicsStateTimeStep(&g_waterPhysicsState, 0.0f); + } + else + { + SetPhysicsStateTimeStep(&g_normalPhysicsState, m_fFrameTime); + SetPhysicsStateTimeStep(&g_waterPhysicsState, m_fFrameTime); + } + + // Update the interface (don't do anything if the interface mgr + // handles the update...) + + if (GetInterfaceMgr( )->Update()) + { + // In multiplayer we want to continue updating the player to + // account for the player being in the air when the menu was + // brought up... + if( IsMultiplayerGame() && GetPlayerMgr()->IsPlayerInWorld() ) + { + GetPlayerMgr()->UpdateNotPlaying(); + DontRenderCamera(); + } + + return; + } + + GetPlayerMgr()->Update(); + + // At this point we only want to proceed if the player is in the world... + if (GetPlayerMgr()->IsPlayerInWorld() && g_pInterfaceMgr->GetGameState() != GS_UNDEFINED) + { + UpdatePlaying(); + } + else + { + // we should not be here, since we think we should rendering the world, but we are not + bool bBlackScreen = true; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateGoreSettings() +// +// PURPOSE: Looks at the gore settings and makes sure all objects reflect the setting +// +// ----------------------------------------------------------------------- // +void CGameClientShell::UpdateGoreSettings() +{ + //default to no gore + bool bGore = false; + + if(g_pProfileMgr && g_pProfileMgr->GetCurrentProfile() && g_pVersionMgr) + { + if (g_pVersionMgr->IsLowViolence()) + { + //force the profile to be low violence here (to prevent people from hacking their profile to get around the limits) + g_pProfileMgr->GetCurrentProfile()->m_bGore = false; + } + else + { + bGore = g_pProfileMgr->GetCurrentProfile()->m_bGore; + } + } + //setup the FX managers to handle the effects + GetClientFXMgr()->SetGoreEnabled(bGore); + GetInterfaceMgr()->GetInterfaceFXMgr().SetGoreEnabled(bGore); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdatePlaying() +// +// PURPOSE: Handle updating playing (normal) game state +// +// ----------------------------------------------------------------------- // + +uint32 g_nSamplePeriod = 250; +uint32 g_nTolerance = 400; + +void CGameClientShell::UpdatePlaying() +{ + // Handle first update... + + if (m_bFirstUpdate) + { + FirstUpdate(); + } + + if(IsMultiplayerGame() && g_pPlayerMgr->IsPlayerInWorld()) + { + // Only check the speed hack for remote clients. + bool bIsLocalClient = false; + g_pLTClient->IsLocalToServer(&bIsLocalClient); + if( !bIsLocalClient ) + { + uint32 nEndClientTime = timeGetTime( ); + uint32 nEndTicks = GetTickCount(); + _timeb nEndTimeB; + _ftime(&nEndTimeB); + + // Get the client time since the last check. Account for wrap. + uint32 nDeltaClientTime = ( nEndClientTime > g_nStartClientTime ) ? ( nEndClientTime - g_nStartClientTime ) : + ( nEndClientTime + ~g_nStartClientTime ); + + // Check at a periodic rate. + if( nDeltaClientTime > g_nSamplePeriod ) + { + // Make sure we've gone through this at least once to make sure all the counters + // are properly initialized. + if( g_nStartTicks > 0 ) + { + // Get the time between _ftime's. + uint32 nDeltaTimeB = (nEndTimeB.time - g_StartTimeB.time)*1000 + (nEndTimeB.millitm - g_StartTimeB.millitm); + + // Get the time between GetTickCount's. Account for wrapping. + uint32 nDeltaTicks = ( nEndTicks > g_nStartTicks ) ? ( nEndTicks - g_nStartTicks ) : + ( nEndTicks + ~g_nStartTicks ); + + // Make sure all the counters match up. + if((( uint32 )abs( (int)nDeltaTimeB - (int)nDeltaClientTime ) > g_nTolerance ) || + (( uint32 )abs( (int)nDeltaTicks - (int)nDeltaClientTime ) > g_nTolerance ) || + (( uint32 )abs( (int)nDeltaTimeB - (int)nDeltaTicks ) > g_nTolerance )) + { + g_pLTClient->CPrint( "Speedhack kick" ); + g_pLTClient->CPrint( "nDeltaTimeB %d", nDeltaTimeB ); + g_pLTClient->CPrint( "nDeltaTicks %d", nDeltaTicks ); + g_pLTClient->CPrint( "nDeltaClientTime %d", nDeltaClientTime ); + + // You hAxOr! + + // Disconnect from the server. + if(g_pLTClient->IsConnected()) + { + g_pLTClient->Disconnect(); + } + } + } + + // Reset the timers, the initial _ftime call must be before + // the performance counter call! + _ftime( &g_StartTimeB ); + g_nStartTicks = GetTickCount(); + g_nStartClientTime = timeGetTime( ); + } + } + } + + g_pPlayerMgr->UpdatePlaying(); + + + // Update any debugging information... + + UpdateDebugInfo(); + + // Update cheats...(if a cheat is in effect, just return)... + if( UpdateCheats( )) + return; + + // Update any overlays... + + GetInterfaceMgr( )->UpdateOverlays(); + + + // Render the camera... + + RenderCamera(); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::PostUpdate() +// +// PURPOSE: Handle post updates - after the scene is rendered +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::PostUpdate() +{ + // See if we got a oncommandon for quicksave. + if( m_bQuickSave ) + { + m_bQuickSave = false; + if( !g_pClientSaveLoadMgr->QuickSave() ) + { + DebugCPrint(1, "ERROR - Quick Save Failed!" ); + } + } + + GetPlayerMgr()->PostUpdate(); + + // Conditions where we don't want to flip... + + if (GetPlayerMgr()->GetPlayerState() == PS_UNKNOWN && g_pGameClientShell->IsWorldLoaded() && GetInterfaceMgr( )->GetGameState() != GS_SCREEN) + { + return; + } + + + GetInterfaceMgr( )->PostUpdate(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::GetDynamicSoundFilter() +// +// PURPOSE: Get the dynamic sound filter +// +// ----------------------------------------------------------------------- // + +SOUNDFILTER* CGameClientShell::GetDynamicSoundFilter() +{ + // See if we have a current container filter override... + + SOUNDFILTER* pFilter = g_pSoundFilterMgr->GetFilter(g_pPlayerMgr->GetSoundFilter()); + if (!pFilter) return NULL; + + + if (!g_pSoundFilterMgr->IsDynamic(pFilter)) + { + // Found it... + return pFilter; + } + else // Calculate the filter based on the listener... + { + // For now just return global default (from WorldProperties) + + return g_pSoundFilterMgr->GetFilter(g_pPlayerMgr->GetGlobalSoundFilter()); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateCheats() +// +// PURPOSE: Update cheats... +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::UpdateCheats() +{ + +#ifndef _FINAL + // Don't allow cheats in mp. + if( IsMultiplayerGame( )) + return false; +#endif + + if (m_bAdjustLightScale) + { + AdjustLightScale(); + } + + if (m_bAdjustLightAdd) + { + AdjustLightAdd(); + } + + if (m_bAdjustFOV) + { + AdjustFOV(); + } + + if (m_bAdjust1stPersonCamera) + { + Adjust1stPersonCamera(); + } + + // If in spectator mode, just do the camera stuff... + + if (g_pPlayerMgr->IsSpectatorMode() || g_pPlayerMgr->IsPlayerDead()) + { + g_pPlayerMgr->UpdateCamera(); + RenderCamera(); + return true; + } + + // Update weapon position if appropriated... + + if (m_bTweakingWeapon) + { + UpdateWeaponPosition(); + g_pPlayerMgr->UpdateCamera(); + RenderCamera(); + return true; + } + else if (m_bTweakingWeaponMuzzle) + { + UpdateWeaponMuzzlePosition(); + g_pPlayerMgr->UpdateCamera(); + RenderCamera(); + return true; + } + else if (m_bTweakingWeaponBreachOffset) + { + UpdateWeaponBreachOffset(); + g_pPlayerMgr->UpdateCamera(); + RenderCamera(); + return true; + } + + return false; +} + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateScreenFlash +// +// PURPOSE: Update the screen flash +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::UpdateScreenFlash() +{ + // [KLS 2/27/02] - Removed ALL screen flashing... + return; + + if (!m_bFlashScreen) return; + + LTVector vLightAdd; + VEC_SET(vLightAdd, 0.0f, 0.0f, 0.0f); + + float fTime = g_pLTClient->GetTime(); + if ((m_fFlashRampUp > 0.0f) && (fTime < m_fFlashStart + m_fFlashRampUp)) + { + float fDelta = (fTime - m_fFlashStart); + vLightAdd.x = fDelta * (m_vFlashColor.x) / m_fFlashRampUp; + vLightAdd.y = fDelta * (m_vFlashColor.y) / m_fFlashRampUp; + vLightAdd.z = fDelta * (m_vFlashColor.z) / m_fFlashRampUp; + } + else if (fTime < m_fFlashStart + m_fFlashRampUp + m_fFlashTime) + { + VEC_COPY(vLightAdd, m_vFlashColor); + } + else if ((m_fFlashRampDown > 0.0f) && (fTime < m_fFlashStart + m_fFlashRampUp + m_fFlashTime + m_fFlashRampDown)) + { + float fDelta = (fTime - (m_fFlashStart + m_fFlashRampUp + m_fFlashTime)); + + vLightAdd.x = m_vFlashColor.x - (fDelta * (m_vFlashColor.x) / m_fFlashRampUp); + vLightAdd.y = m_vFlashColor.y - (fDelta * (m_vFlashColor.y) / m_fFlashRampUp); + vLightAdd.z = m_vFlashColor.z - (fDelta * (m_vFlashColor.z) / m_fFlashRampUp); + } + else + { + m_bFlashScreen = false; + } + + // Make sure values are in range... + + vLightAdd.x = (vLightAdd.x < 0.0f ? 0.0f : (vLightAdd.x > 1.0f ? 1.0f : vLightAdd.x)); + vLightAdd.y = (vLightAdd.y < 0.0f ? 0.0f : (vLightAdd.y > 1.0f ? 1.0f : vLightAdd.y)); + vLightAdd.z = (vLightAdd.z < 0.0f ? 0.0f : (vLightAdd.z > 1.0f ? 1.0f : vLightAdd.z)); + + m_ScreenTintMgr.Set(TINT_SCREEN_FLASH,&vLightAdd); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::ClearScreenTint +// +// PURPOSE: Clear any screen tinting +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::ClearScreenTint() +{ + m_ScreenTintMgr.ClearAll(); + if (m_bFlashScreen) + { + m_bFlashScreen = false; + } + + m_LightScaleMgr.Term(); + m_LightScaleMgr.Init(); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: QuickLoadCallBack +// +// PURPOSE: Callback for the QuickLoad messagebox... +// +// ----------------------------------------------------------------------- // + +static void QuickLoadCallBack(LTBOOL bReturn, void *pData) +{ + if (bReturn) + { + g_pMissionMgr->StartGameFromQuickSave( ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnCommandOn() +// +// PURPOSE: Handle client commands +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnCommandOn(int command) +{ + + // Make sure we're in the world... + + if (!GetPlayerMgr()->IsPlayerInWorld()) return; + + + // Let the interface handle the command first... + + if (IsMultiplayerGame() || !GetPlayerMgr()->IsPlayerDead()) + { + if (GetInterfaceMgr( )->OnCommandOn(command)) + { + return; + } + } + + + if (GetPlayerMgr()->OnCommandOn(command)) + { + return; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnCommandOff() +// +// PURPOSE: Handle command off notification +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnCommandOff(int command) +{ + // Let the interface handle the command first... + if (GetInterfaceMgr( )->OnCommandOff(command)) + { + return; + } + if (GetPlayerMgr()->OnCommandOff(command)) + { + return; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnKeyDown(int key, int rep) +// +// PURPOSE: Handle key down notification +// Try to avoid using OnKeyDown and OnKeyUp as they +// are not portable functions +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnKeyDown(int key, int rep) +{ + // [RP] - 8/03/02: WinXP likes to add a second OnKeyDown() message with an invalid key of 255 + // for certain single key presses. Just ignore invalid key codes 255 and larger. + + if( key >= 0xFF ) + return; + + // The engine handles the VK_F8 key for screenshots. + if( key == VK_F8 ) + return; + + //if we are performance testing... + if (IsRunningPerformanceTest()) + { + //allow abort... + if (key == VK_ESCAPE) + AbortPerformanceTest(); + + //but don't process anything else + return; + } + + if (key == VK_TOGGLE_SCREENSHOTMODE) + { +#ifndef _FINAL + g_bScreenShotMode = !g_bScreenShotMode; + + bool bDrawHUD = !g_bScreenShotMode; // && GetPlayerMgr()->IsSpectatorMode()); + if (bDrawHUD) + { + GetInterfaceMgr( )->SetHUDRenderLevel(kHUDRenderFull); + } + else + { + GetInterfaceMgr( )->SetHUDRenderLevel(kHUDRenderNone); + } + + g_pLTClient->CPrint("Screen shot mode: %s", g_bScreenShotMode ? "ON" : "OFF"); +#endif + return; + } + + if (key == VK_TOGGLE_SPECTATOR_MODE) + { +#ifndef _FINAL + char *pCheat = "mpclip"; + g_pCheatMgr->Check(CParsedMsg( 1, &pCheat )); +#endif + return; + } + + if (key == VK_TOGGLE_GHOST_MODE) + { +#ifndef _FINAL + char *pCheat = "mppoltergeist"; + g_pCheatMgr->Check(CParsedMsg( 1, &pCheat )); +#endif + return; + } + +#ifndef _DEMO +#ifndef _FINAL + if (key == VK_MULTIPLY) + { + static bool g_bCycleOn = false; + g_bCycleOn = !g_bCycleOn; + if(g_bCycleOn) + { + g_pLTClient->RunConsoleString("cmd msg player StartLightCycle"); + } + else + { + g_pLTClient->RunConsoleString("cmd msg player EndLightCycle"); + } + } +#endif +#endif + + if (key == VK_WRITE_CAM_POS) + { +#ifndef _FINAL + DebugWriteCameraPosition(); +#endif + return; + } + + if (key == VK_MAKE_CUBIC_ENVMAP) + { +#ifndef _FINAL + g_pLTClient->MakeCubicEnvMap(GetPlayerMgr()->GetCamera(), (uint32)(g_vtMakeCubicEnvMapSize.GetFloat(256.0f) + 0.5f), g_vtMakeCubicEnvMapName.GetStr("CubicEnvMap")); +#endif + return; + } + + // Allow quickload from anywhere, anytime. + // jrg - 8/31/02 - well, almost anywhere and almost anytime, except... + GameState eGameState = g_pInterfaceMgr->GetGameState(); + if ( key == VK_F9 && + ( GS_PLAYING == eGameState || + GS_SCREEN == eGameState || + GS_POPUP == eGameState || + GS_MENU == eGameState + ) + ) + { + //handle special case of postload screen + if (GS_SCREEN == eGameState && SCREEN_ID_POSTLOAD == g_pInterfaceMgr->GetScreenMgr()->GetCurrentScreenID() ) + return; + + + // Check if we can do a load. + if( g_pClientSaveLoadMgr->CanLoadGame( ) && g_pClientSaveLoadMgr->QuickSaveExists( )) + { + // If player is in the world, then give them confirmation. + if( g_pPlayerMgr->IsPlayerInWorld() && !g_pPlayerMgr->IsPlayerDead( )) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = QuickLoadCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_ENDCURRENTGAME,&mb); + } + else + { + //if mission bute mgr is not initialized + if (!g_pMissionButeMgr->GetAttributeFile( ) || !strlen(g_pMissionButeMgr->GetAttributeFile( ))) + { + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return; + } + } + + g_pMissionMgr->StartGameFromQuickSave( ); + } + } + return; + } + else if( key == VK_F6 ) + { + // Only allow quicksave if we're in a world and not a remote client. + if( GetPlayerMgr()->IsPlayerInWorld() && !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + if( g_pClientSaveLoadMgr->CanSaveGame() && eGameState == GS_PLAYING ) + { + m_bQuickSave = true; + } + else + { + // Can't quicksave now... + g_pGameClientShell->CSPrint(LoadTempString(IDS_CANTQUICKSAVE)); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\Nosave.wav"); + } + } + return; + } + + // Let the interface mgr have a go at it... + if (GetInterfaceMgr( )->OnKeyDown(key, rep)) + { + return; + } + if (GetPlayerMgr()->OnKeyDown(key, rep)) + { + return; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnKeyUp(int key, int rep) +// +// PURPOSE: Handle key up notification +// +// ----------------------------------------------------------------------- // +void CGameClientShell::OnKeyUp(int key) +{ + // The engine handles the VK_F8 key for screenshots. + if( key == VK_F8 ) + return; + + if (IsRunningPerformanceTest()) + return; + + if (GetInterfaceMgr( )->OnKeyUp(key)) + return; + if (GetPlayerMgr()->OnKeyUp(key)) + return; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnMessage() +// +// PURPOSE: Handle client messages +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnMessage(ILTMessage_Read *pMsg) +{ + // Check inputs. + if( !pMsg ) + return; + + // Read the message ID + uint8 messageID = pMsg->Readuint8(); + + // Act like the message ID wasn't in the message + CLTMsgRef_Read cSubMsg(pMsg->SubMsg(pMsg->Tell())); + + // Let interface handle message first... + + if (GetInterfaceMgr( )->OnMessage(messageID, cSubMsg)) return; + if (GetPlayerMgr()->OnMessage(messageID, cSubMsg)) return; + + if( g_pClientMultiplayerMgr->OnMessage(messageID, cSubMsg )) + return; + + if( g_pMissionMgr->OnMessage( messageID, *cSubMsg )) + return; + + if( g_pClientSaveLoadMgr->OnMessage( messageID, *cSubMsg )) + return; + + // See if the scmd can handle this message. + if( ScmdConsole::Instance( ).OnMessage( messageID, *cSubMsg )) + return; + + /***************************************************************************/ + + switch(messageID) + { + case MID_SFX_MESSAGE: HandleMsgSFXMessage (cSubMsg); break; + case MID_MUSIC: HandleMsgMusic (cSubMsg); break; + case MID_PLAYER_LOADCLIENT: HandleMsgPlayerLoadClient (cSubMsg); break; + case MID_SERVER_ERROR: HandleMsgServerError (cSubMsg); break; + case MID_PROJECTILE: HandleMsgProjectile (messageID, cSubMsg); break; + case MID_GAME_PAUSE: HandleMsgPauseGame (cSubMsg); break; + case MID_SWITCHINGWORLDSSTATE: HandleMsgSwitchingWorldState(cSubMsg); break; + case MID_MULTIPLAYER_OPTIONS: HandleMsgMultiplayerOptions(cSubMsg); break; + + case STC_BPRINT: HandleMsgBPrint (cSubMsg); break; + default: HandleMsgDefault (cSubMsg); break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgSFXMessage() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgSFXMessage (ILTMessage_Read *pMsg) +{ + m_sfxMgr.OnSFXMessage(pMsg); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgMusic() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgMusic (ILTMessage_Read *pMsg) +{ + if (m_Music.IsInitialized()) + { + m_Music.ProcessMusicMessage(pMsg); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgPlayerLoadClient() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgPlayerLoadClient (ILTMessage_Read *pMsg) +{ + g_pVersionMgr->SetCurrentSaveVersion( pMsg->Readuint32( )); + CLTMsgRef_Read pSaveMessage = pMsg->ReadMessage(); + UnpackClientSaveMsg(pSaveMessage); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgServerError() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgServerError (ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + uint8 nError = pMsg->Readuint8(); + switch (nError) + { + case SERROR_SAVEGAME : + { + //DoMessageBox(IDS_SAVEGAMEFAILED, TH_ALIGN_CENTER); + } + break; + + case SERROR_LOADGAME : + { + //DoMessageBox(IDS_NOLOADLEVEL, TH_ALIGN_CENTER); + + GetInterfaceMgr( )->ChangeState(GS_SCREEN); + } + break; + + default : break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgBPrint() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgBPrint (ILTMessage_Read *pMsg) +{ + char msg[50]; + pMsg->ReadString(msg, sizeof(msg)); + CSPrint(msg); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgProjectile() +// +// PURPOSE: Handle messages from the server regarding projectiles +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgProjectile( uint8 messageID, ILTMessage_Read *pMsg ) +{ + // pass the message to the client weapon manager + ASSERT( 0 != g_pPlayerMgr ); + CClientWeaponMgr *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + pClientWeaponMgr->OnMessage( messageID, pMsg ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgPauseGame() +// +// PURPOSE: Handle server telling us the game is paused. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgPauseGame( ILTMessage_Read* pMsg ) +{ + m_bServerPaused = pMsg->Readbool( ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgSwitchingWorldState() +// +// PURPOSE: Handle server telling us the switching world state. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgSwitchingWorldState( ILTMessage_Read* pMsg ) +{ + bool bWasServerLoaded = IsServerLoaded(); + m_eSwitchingWorldsState = ( SwitchingWorldsState )pMsg->Readuint8( ); + bool bServerLoaded = IsServerLoaded(); + if (m_eSwitchingWorldsState == eSwitchingWorldsStateFinished) + { + if (GetConsoleBool("MakeAssetList",false)) + { + WriteConsoleBool("ShowFileAccess",true); + g_pLTClient->CPrint("StartList %s", g_pMissionMgr->GetCurrentWorldName()); + } + + + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgMultiplayerOptions() +// +// PURPOSE: Handle server telling us the game options. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgMultiplayerOptions( ILTMessage_Read* pMsg ) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if( !pProfile ) + return; + + + + uint8 nRunSpeed = pMsg->Readuint8( ); + uint8 nScoreLimit = pMsg->Readuint8( ); + uint8 nTimeLimit = pMsg->Readuint8( ); + uint8 nRounds = pMsg->Readuint8(); + bool bFriendlyFire = pMsg->Readbool( ); + bool bWeaponsStay = pMsg->Readbool( ); + uint8 nDifficulty = pMsg->Readuint8( ); + float fPlayerDiffFactor = pMsg->Readfloat( ); + + switch (m_eGameType) + { + case eGameTypeCooperative: + pProfile->m_ServerGameOptions.GetCoop().m_bFriendlyFire = bFriendlyFire; + pProfile->m_ServerGameOptions.GetCoop().m_nDifficulty = nDifficulty; + break; + case eGameTypeDeathmatch: + pProfile->m_ServerGameOptions.GetDeathmatch().m_nRunSpeed = nRunSpeed; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nScoreLimit = nScoreLimit; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nTimeLimit = nTimeLimit; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nRounds = nRounds; + pProfile->m_ServerGameOptions.GetDeathmatch().m_bWeaponsStay = bWeaponsStay; + break; + case eGameTypeTeamDeathmatch: + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRunSpeed = nRunSpeed; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nScoreLimit = nScoreLimit; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTimeLimit = nTimeLimit; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRounds = nRounds; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bFriendlyFire = bFriendlyFire; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bWeaponsStay = bWeaponsStay; + break; + case eGameTypeDemolition: + pProfile->m_ServerGameOptions.GetDemolition().m_nRunSpeed = nRunSpeed; + pProfile->m_ServerGameOptions.GetDemolition().m_nRounds = nRounds; + pProfile->m_ServerGameOptions.GetDemolition().m_bFriendlyFire = bFriendlyFire; + pProfile->m_ServerGameOptions.GetDemolition().m_bWeaponsStay = bWeaponsStay; + break; + case eGameTypeDoomsDay: + pProfile->m_ServerGameOptions.GetDoomsday().m_nRunSpeed = nRunSpeed; + pProfile->m_ServerGameOptions.GetDoomsday().m_nTimeLimit = nTimeLimit; + pProfile->m_ServerGameOptions.GetDoomsday().m_nRounds = nRounds; + pProfile->m_ServerGameOptions.GetDoomsday().m_bFriendlyFire = bFriendlyFire; + pProfile->m_ServerGameOptions.GetDoomsday().m_bWeaponsStay = bWeaponsStay; + break; + } + + pProfile->Save( ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleMsgDefault() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleMsgDefault (ILTMessage_Read *pMsg) +{ + +} + +/***************************************************************************/ + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::FlashScreen() +// +// PURPOSE: Tint screen +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::FlashScreen(const LTVector &vFlashColor, const LTVector &vPos, float fFlashRange, + float fTime, float fRampUp, float fRampDown, bool bForce) +{ + // [KLS 2/27/02] - Removed ALL screen flashing... + return; + + + CGameSettings* pSettings = GetInterfaceMgr( )->GetSettings(); + if (!pSettings) return; + + if (!bForce && !pSettings->ScreenFlash()) return; + + LTVector vCamPos; + g_pLTClient->GetObjectPos(GetPlayerMgr()->GetCamera(), &vCamPos); + + // Determine if we can see this... + + LTVector vDir; + vDir = vPos - vCamPos; + float fDirMag = vDir.Length(); + if (fDirMag > fFlashRange) return; + + // Okay, not adjust the tint based on the camera's angle to the tint pos. + + LTRotation rRot; + g_pLTClient->GetObjectRotation(GetPlayerMgr()->GetCamera(), &rRot); + + vDir.Normalize(); + float fMul = vDir.Dot(rRot.Forward()); + if (fMul <= 0.0f) return; + + // {MD} See if we can even see this point. + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + iQuery.m_From = vPos; + iQuery.m_To = vCamPos; + if(g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + // Something is in the way. + return; + } + + // Tint less if the pos was far away from the camera... + + float fVal = 1.0f - (fDirMag/fFlashRange); + fMul *= (fVal <= 1.0f ? fVal : 1.0f); + + m_bFlashScreen = true; + m_fFlashStart = g_pLTClient->GetTime(); + m_fFlashTime = fTime; + m_fFlashRampUp = fRampUp; + m_fFlashRampDown = fRampDown; + VEC_COPY(m_vFlashColor, vFlashColor); + VEC_MULSCALAR(m_vFlashColor, m_vFlashColor, fMul); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::PauseGame() +// +// PURPOSE: Pauses/Unpauses the server +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::PauseGame(bool bPause, bool bPauseSound) +{ + m_bGamePaused = bPause; + + g_pPaused->Show(!!bPause); + + GetInterfaceMgr()->GetFullScreenTint()->TurnOn(m_bGamePaused); + + if (!IsMultiplayerGame()) + { + SendEmptyServerMsg(bPause ? MID_GAME_PAUSE : MID_GAME_UNPAUSE); + } + + if (bPause && bPauseSound) + { + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->PauseSounds(); + } + else + { + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->ResumeSounds(); + } + + SetInputState(!bPause && GetPlayerMgr()->IsPlayerMovementAllowed()); + GetPlayerMgr()->SetMouseInput(!bPause, LTTRUE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SetInputState() +// +// PURPOSE: Allows/disallows input +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::SetInputState(bool bAllowInput) +{ + g_pLTClient->SetInputState(bAllowInput); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateWeaponMuzzlePosition() +// +// PURPOSE: Update the current weapon muzzle pos +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateWeaponMuzzlePosition() +{ + float fIncValue = WEAPON_MOVE_INC_VALUE_SLOW; + bool bChanged = false; + + LTVector vOffset(0, 0, 0); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move weapon faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = WEAPON_MOVE_INC_VALUE_FAST; + } + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + vOffset = pClientWeapon->GetMuzzleOffset(); + } + + + // Move weapon forward or backwards... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + vOffset.z += fIncValue; + bChanged = true; + } + + + // Move the weapon to the player's right or left... + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || + (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + vOffset.x += fIncValue; + bChanged = true; + } + + + // Move the weapon up or down relative to the player... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + vOffset.y += fIncValue; + bChanged = true; + } + + + // Okay, set the offset... + + if (bChanged) + { + if ( pClientWeapon ) + { + pClientWeapon->SetMuzzleOffset( vOffset ); + } + } + + //if (bChanged) + //{ + // CSPrint ("Muzzle offset = %f, %f, %f", vOffset.x, vOffset.y, vOffset.z); + //} +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateWeaponPosition() +// +// PURPOSE: Update the position of the current weapon +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateWeaponPosition() +{ + float fIncValue = WEAPON_MOVE_INC_VALUE_SLOW; + bool bChanged = false; + + LTVector vOffset; + VEC_INIT(vOffset); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move weapon faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = WEAPON_MOVE_INC_VALUE_FAST; + } + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + vOffset = pClientWeapon->GetWeaponOffset(); + } + + // Move weapon forward or backwards... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + vOffset.z += fIncValue; + bChanged = true; + } + + + // Move the weapon to the player's right or left... + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || + (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + vOffset.x += fIncValue; + bChanged = true; + } + + + // Move the weapon up or down relative to the player... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + vOffset.y += fIncValue; + bChanged = true; + } + + + // Okay, set the offset... + + if (bChanged) + { + if ( pClientWeapon ) + { + pClientWeapon->SetWeaponOffset( vOffset ); + } + } + + //if (bChanged) + //{ + // CSPrint ("Weapon offset = %f, %f, %f", vOffset.x, vOffset.y, vOffset.z); + //} +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateWeaponBreachOffset() +// +// PURPOSE: Update the current weapon breach offset +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateWeaponBreachOffset() +{ + float fIncValue = WEAPON_MOVE_INC_VALUE_SLOW; + bool bChanged = false; + + LTVector vOffset(0, 0, 0); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move weapon faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = WEAPON_MOVE_INC_VALUE_FAST; + } + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + vOffset = pClientWeapon->GetBreachOffset(); + } + + + // Move weapon forward or backwards... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + vOffset.z += fIncValue; + bChanged = true; + } + + + // Move the weapon to the player's right or left... + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || + (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + vOffset.x += fIncValue; + bChanged = true; + } + + + // Move the weapon up or down relative to the player... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + vOffset.y += fIncValue; + bChanged = true; + } + + + // Okay, set the offset... + + if (bChanged) + { + if ( pClientWeapon ) + { + pClientWeapon->SetBreachOffset( vOffset ); + } + } + + if (bChanged) + { + CSPrint ("Breach offset = %f, %f, %f", vOffset.x, vOffset.y, vOffset.z); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::Adjust1stPersonCamera() +// +// PURPOSE: Update the 1st-person camera offset +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::Adjust1stPersonCamera() +{ + float fIncValue = 0.1f; + bool bChanged = false; + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move offset faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = fIncValue * 2.0f; + } + + // Move 1st person offset.x forward or backwards... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + g_vPlayerCameraOffset.x += fIncValue; + bChanged = true; + } + + // Move 1st person offset.y up or down... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_JUMP ? fIncValue : -fIncValue; + g_vPlayerCameraOffset.y += fIncValue; + bChanged = true; + } + + + if (bChanged) + { + // Okay, set the offset... + + GetPlayerMgr()->GetPlayerCamera()->SetFirstPersonOffset(g_vPlayerCameraOffset); + g_pLTClient->CPrint("1st person camera offset: %.2f, %.2f, %.2f", g_vPlayerCameraOffset.x, g_vPlayerCameraOffset.y, g_vPlayerCameraOffset.z); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::AdjustLightScale() +// +// PURPOSE: Update the current global light scale +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::AdjustLightScale() +{ + float fIncValue = 0.01f; + bool bChanged = false; + + LTVector vScale; + VEC_INIT(vScale); + + g_pLTClient->GetGlobalLightScale(&vScale); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .5f; + } + + + // Move Red up/down... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + vScale.x += fIncValue; + vScale.x = vScale.x < 0.0f ? 0.0f : (vScale.x > 1.0f ? 1.0f : vScale.x); + + bChanged = true; + } + + + // Move Green up/down... + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || + (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + vScale.y += fIncValue; + vScale.y = vScale.y < 0.0f ? 0.0f : (vScale.y > 1.0f ? 1.0f : vScale.y); + + bChanged = true; + } + + + // Move Blue up/down... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + vScale.z += fIncValue; + vScale.z = vScale.z < 0.0f ? 0.0f : (vScale.z > 1.0f ? 1.0f : vScale.z); + + bChanged = true; + } + + + // Okay, set the light scale. + + g_pLTClient->SetGlobalLightScale(&vScale); + + if (bChanged) + { + CSPrint ("Light Scale = %f, %f, %f", vScale.x, vScale.y, vScale.z); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::AdjustLightAdd() +// +// PURPOSE: Update the current global light add +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::AdjustLightAdd() +{ + float fIncValue = 0.01f; + bool bChanged = false; + + LTVector vScale; + VEC_INIT(vScale); + + g_pLTClient->GetCameraLightAdd(GetPlayerMgr()->GetCamera(), &vScale); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .5f; + } + + + // Move Red up/down... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + vScale.x += fIncValue; + vScale.x = vScale.x < 0.0f ? 0.0f : (vScale.x > 1.0f ? 1.0f : vScale.x); + + bChanged = true; + } + + + // Move Green up/down... + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || + (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + vScale.y += fIncValue; + vScale.y = vScale.y < 0.0f ? 0.0f : (vScale.y > 1.0f ? 1.0f : vScale.y); + + bChanged = true; + } + + + // Move Blue up/down... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + vScale.z += fIncValue; + vScale.z = vScale.z < 0.0f ? 0.0f : (vScale.z > 1.0f ? 1.0f : vScale.z); + + bChanged = true; + } + + + // Okay, set the light add. + + g_pLTClient->SetCameraLightAdd(GetPlayerMgr()->GetCamera(), &vScale); + + if (bChanged) + { + CSPrint ("Light Add = %f, %f, %f", vScale.x, vScale.y, vScale.z); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::AdjustFOV() +// +// PURPOSE: Update the current FOV +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::AdjustFOV() +{ + float fIncValue = 0.001f; + bool bChanged = false; + + float fCurFOVx, fCurFOVy; + + // Save the current camera fov... + + g_pLTClient->GetCameraFOV(GetPlayerMgr()->GetCamera(), &fCurFOVx, &fCurFOVy); + + uint32 dwPlayerFlags = GetPlayerMgr()->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .01f; + } + + + // Adjust X + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + fCurFOVx += fIncValue; + + bChanged = true; + } + + + // Adjust Y + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + fCurFOVy += fIncValue; + + bChanged = true; + } + + + // Okay, set the FOV.. + + // Adjust the fov... + + GetPlayerMgr()->SetCameraFOV(fCurFOVx, fCurFOVy); + + if (bChanged) + { + CSPrint ("FOV X = %.2f, FOV Y = %.2f", RAD2DEG(fCurFOVx), RAD2DEG(fCurFOVy)); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SpecialEffectNotify() +// +// PURPOSE: Handle creation of a special fx +// +// This function is called by the engine directly. +// When an effect takes place the server notifies all clients +// who are able to witness the effect. NOT ALL EFFECTS will +// necesarily be recieves through this routine. If the server +// needs to gaurantee that all clients get a particular effect +// it will use the MID_SFX_MESSAGE identifier which will be +// recieved in the OnMessage routine and the OnSFXMessage +// method will be envoked to handle the effect instead. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::SpecialEffectNotify(HLOCALOBJ hObj, ILTMessage_Read *pMsg) +{ + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Client, CF_NOTIFYREMOVE, CF_NOTIFYREMOVE); + } + + m_sfxMgr.HandleSFXMsg(hObj, pMsg); + + // Reset the message and send to the other FX mgr + pMsg->SeekTo(0); + m_ClientFXMgr.OnSpecialEffectNotify( hObj, pMsg ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnObjectRemove() +// +// PURPOSE: Handle removal of a server created object... +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::OnObjectRemove(HLOCALOBJ hObj) +{ + if (!hObj) return; + + m_sfxMgr.RemoveSpecialFX(hObj); + + m_ClientFXMgr.OnObjectRemove( hObj ); + + GetInterfaceMgr()->OnObjectRemove(hObj); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::PreLoadWorld() +// +// PURPOSE: Called before world loads +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::PreLoadWorld(const char *pWorldName) +{ + if (IsMainWindowMinimized()) + { + RestoreMainWindow(); + } + + g_pMissionMgr->PreLoadWorld( pWorldName ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HasJoystick() +// +// PURPOSE: Determines whether or not there is a joystick device +// present +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::HasJoystick() +{ + // Ask the engine if we really have a joystick... + DeviceObject *pJoysticks = g_pLTClient->GetDeviceObjects(DEVICETYPE_JOYSTICK); + if (pJoysticks) + { + g_pLTClient->FreeDeviceObjects(pJoysticks); + return true; + } + + return false; + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::IsJoystickEnabled() +// +// PURPOSE: Determines whether or not there is a joystick device +// enabled +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::IsJoystickEnabled() +{ + // first attempt to find a joystick device + + char strJoystick[128]; + memset (strJoystick, 0, 128); + LTRESULT result = g_pLTClient->GetDeviceName (DEVICETYPE_JOYSTICK, strJoystick, 127); + if (result != LT_OK) return false; + + // ok - we found the device and have a name...see if it's enabled + + bool bEnabled = false; + g_pLTClient->IsDeviceEnabled (strJoystick, &bEnabled); + + return bEnabled; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::EnableJoystick() +// +// PURPOSE: Attempts to find and enable a joystick device +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::EnableJoystick() +{ + // first attempt to find a joystick device + + char strJoystick[128]; + memset(strJoystick, 0, 128); + LTRESULT result = g_pLTClient->GetDeviceName(DEVICETYPE_JOYSTICK, strJoystick, 127); + if (result != LT_OK) return false; + + // ok, now try to enable the device + + char strConsole[256]; + sprintf(strConsole, "EnableDevice \"%s\"", strJoystick); + g_pLTClient->RunConsoleString(strConsole); + + bool bEnabled = false; + g_pLTClient->IsDeviceEnabled(strJoystick, &bEnabled); + + return bEnabled; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HasGamepad() +// +// PURPOSE: Determines whether or not there is a Gamepad device +// present +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::HasGamepad() +{ + // Ask the engine if we really have a Gamepad... + DeviceObject *pGamepads = g_pLTClient->GetDeviceObjects(DEVICETYPE_GAMEPAD); + if (pGamepads) + { + g_pLTClient->FreeDeviceObjects(pGamepads); + return true; + } + + return false; + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::IsGamepadEnabled() +// +// PURPOSE: Determines whether or not there is a Gamepad device +// enabled +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::IsGamepadEnabled() +{ + // first attempt to find a Gamepad device + + char strGamepad[128]; + memset (strGamepad, 0, 128); + LTRESULT result = g_pLTClient->GetDeviceName (DEVICETYPE_GAMEPAD, strGamepad, 127); + if (result != LT_OK) return false; + + // ok - we found the device and have a name...see if it's enabled + + bool bEnabled = false; + g_pLTClient->IsDeviceEnabled (strGamepad, &bEnabled); + + return bEnabled; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::EnableGamepad() +// +// PURPOSE: Attempts to find and enable a Gamepad device +// +// ----------------------------------------------------------------------- // + +bool CGameClientShell::EnableGamepad() +{ + // first attempt to find a Gamepad device + + char strGamepad[128]; + memset(strGamepad, 0, 128); + LTRESULT result = g_pLTClient->GetDeviceName(DEVICETYPE_GAMEPAD, strGamepad, 127); + if (result != LT_OK) return false; + + // ok, now try to enable the device + + char strConsole[256]; + sprintf(strConsole, "EnableDevice \"%s\"", strGamepad); + g_pLTClient->RunConsoleString(strConsole); + + bool bEnabled = false; + g_pLTClient->IsDeviceEnabled(strGamepad, &bEnabled); + + return bEnabled; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::StartPerformanceTest() +// +// PURPOSE: Start the perfomance test +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::StartPerformanceTest() +{ + if (m_pPerformanceTest) + { + m_bRunningPerfTest = true; + + m_pPerformanceTest->Start((uint32)g_vtPTestMinFPS.GetFloat(), + (uint32)g_vtPTestMaxFPS.GetFloat()); + + // Seed Random number generator... + SRand(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::StopPerformanceTest() +// +// PURPOSE: Stop the perfomance test +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::StopPerformanceTest() +{ + m_bRunningPerfTest = false; + + if (m_pPerformanceTest) + { + m_pPerformanceTest->Stop(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::AbortPerformanceTest() +// +// PURPOSE: Cancel out of the perfomance test +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::AbortPerformanceTest() +{ + StopPerformanceTest(); + + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + //since our history was cleared by loading the level... rebuild it + g_pInterfaceMgr->GetScreenMgr()->AddScreenToHistory( SCREEN_ID_MAIN ); + g_pInterfaceMgr->GetScreenMgr()->AddScreenToHistory( SCREEN_ID_OPTIONS ); + + if ( GetInterfaceMgr( )->GetGameState() == GS_LOADINGLEVEL) + { + GetInterfaceMgr( )->LoadFailed(SCREEN_ID_PERFORMANCE,IDS_PERFORMANCE_TEST_ABORTED); + } + else + { + + MBCreate mb; + GetInterfaceMgr( )->ShowMessageBox(IDS_PERFORMANCE_TEST_ABORTED, &mb); + + //we aborted performance testing go back to performance screen + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PERFORMANCE); +} +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateDebugInfo() +// +// PURPOSE: Update debugging info. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateDebugInfo() +{ + char buf[100]; + + ClearDebugStrings(); + + //determine the offset we should use on the positions + LTVector vOffset(0, 0, 0); + const char* pszOffsetDescription = "(Actual)"; + + if((uint32)g_vtApplyWorldOffset.GetFloat(1.0f)) + { + g_pLTClient->GetSourceWorldOffset(vOffset); + pszOffsetDescription = "(Level)"; + } + + // Check to see if we should show the player position... + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (m_bShowPlayerPos && hPlayerObj) + { + LTVector vPos; + g_pLTClient->GetObjectPos(hPlayerObj, &vPos); + + //handle the shift from the current world to the source world + vPos += vOffset; + + sprintf(buf, "Player Position %s: %6.0f, %6.0f, %6.0f ", pszOffsetDescription, vPos.x, vPos.y, vPos.z); + + SetDebugString(buf); + } + + if (m_bShowCamPosRot) + { + LTVector vPos; + g_pLTClient->GetObjectPos(GetPlayerMgr()->GetCamera(), &vPos); + + //handle the shift from the current world to the source world + vPos += vOffset; + + // Convert pitch and yaw to the same units used by DEdit... + + float fYawDeg = RAD2DEG(GetPlayerMgr()->GetYaw()); + while (fYawDeg < 0.0f) + { + fYawDeg += 360.0f; + } + while (fYawDeg > 360.0f) + { + fYawDeg -= 360.0f; + } + + float fPitchDeg = RAD2DEG(GetPlayerMgr()->GetPitch()); + while (fPitchDeg < 0.0f) + { + fPitchDeg += 360.0f; + } + while (fPitchDeg > 360.0f) + { + fPitchDeg -= 360.0f; + } + + sprintf(buf, "Camera Position %s: %6.0f %6.0f %6.0f ", pszOffsetDescription, vPos.x, vPos.y, vPos.z); + SetDebugString(buf, eDSBottomRight, 0); + + sprintf(buf, "Camera Yaw: %6.0f ", fYawDeg); + SetDebugString(buf, eDSBottomRight, 2); + + sprintf(buf, "Camera Pitch: %6.0f ", fPitchDeg); + SetDebugString(buf, eDSBottomRight, 1); + } + + + + // See if the FOV has changed... + + if (GetPlayerMgr()->CanChangeFOV()) + { + float fovX, fovY; + g_pLTClient->GetCameraFOV(GetPlayerMgr()->GetCamera(), &fovX, &fovY); + + if (fovX != g_vtFOVXNormal.GetFloat() || fovY != g_vtFOVYNormal.GetFloat()) + { + GetPlayerMgr()->SetCameraFOV(DEG2RAD(g_vtFOVXNormal.GetFloat()), DEG2RAD(g_vtFOVYNormal.GetFloat())); + } + } + + + // Check to see if we are in spectator or invisible mode... + + LTBOOL bSpectator = GetPlayerMgr()->IsSpectatorMode(); + if ((bSpectator || GetPlayerMgr()->IsInvisibleMode()) && !g_bScreenShotMode) + { + SetDebugString(bSpectator ? "SPECTATOR MODE" : "GHOST MODE", eDSBottomLeft); + +#ifndef _DEMO + LTVector vPos; + g_pLTClient->GetObjectPos(GetPlayerMgr()->GetCamera(), &vPos); + + //handle the shift from the current world to the source world + vPos += vOffset; + + sprintf(buf, "Camera Position %s: %6.0f %6.0f %6.0f", pszOffsetDescription, vPos.x, vPos.y, vPos.z); + SetDebugString(buf); +#endif // _DEMO + } + + + // Check to see if we are in performance test mode... + + if (m_bRunningPerfTest && m_pPerformanceTest) + { + SetDebugString(" TESTING PERFORMANCE SETTINGS", eDSBottomLeft); + + m_pPerformanceTest->Update(g_pLTClient->GetFrameTime()); + + /* Don't show framerate... + uint32 nFPS = m_pPerformanceTest->GetCurFPS(); + if (nFPS > 0) + { + bool bVSync = (GetConsoleInt("VSyncOnFlip", 0) ? true : false); + + sprintf(buf, " %4d FPS %s", nFPS, (bVSync ? "(VSYNC ENABLED) " : "")); + SetDebugString(buf); + } + */ + } + + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("PlayerDims"); + if (hVar) + { + if (g_pLTClient->GetVarValueFloat(hVar) > 0.0f) + { + CreateBoundingBox(); + UpdateBoundingBox(); + } + else if (m_hBoundingBox) + { + g_pLTClient->RemoveObject(m_hBoundingBox); + m_hBoundingBox = NULL; + } + } + + + if (g_vtSpecial.GetFloat()) + { + g_vtSpecial.SetFloat(0.0f); + g_pLTClient->CPrint("%d", g_dwSpecial); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SetDebugString +// +// PURPOSE: Set the debug string (create it if necessary). +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::SetDebugString(char* strMessage, DSSL eLoc, uint8 nLine) +{ + if (!strMessage || strMessage[0] == '\0') return; + if (nLine < 0 || nLine >= kMaxDebugStrings) return; + + // Set the size each time since the screen resolution may have changed... + + uint8 nSize = (uint8)((float)g_pLayoutMgr->GetHelpSize() * g_pInterfaceResMgr->GetXRatio()); + uint8 nFont = g_pLayoutMgr->GetHelpFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + CUIPolyString* pPolyString = NULL; + + switch (eLoc) + { + case eDSBottomLeft : + { + if (!m_pLeftDebugString[nLine]) + { + pPolyString = g_pFontManager->CreatePolyString(pFont, "", 0.0f, 0.0f); + m_pLeftDebugString[nLine] = pPolyString; + } + else + { + pPolyString = m_pLeftDebugString[nLine]; + } + } + break; + + case eDSBottomRight : + default : + { + if (!m_pRightDebugString[nLine]) + { + pPolyString = g_pFontManager->CreatePolyString(pFont, "", 0.0f, 0.0f); + m_pRightDebugString[nLine] = pPolyString; + } + else + { + pPolyString = m_pRightDebugString[nLine]; + } + } + break; + } + + if (pPolyString) + { + pPolyString->SetColor(argbWhite); + pPolyString->SetCharScreenHeight(nSize); + pPolyString->SetText(strMessage); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::ClearDebugStrings +// +// PURPOSE: Clear all the debug strings +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::ClearDebugStrings() +{ + for (int i=0; i < kMaxDebugStrings; i++) + { + if (m_pLeftDebugString[i]) + { + m_pLeftDebugString[i]->SetText(""); + } + + if (m_pRightDebugString[i]) + { + m_pRightDebugString[i]->SetText(""); + } + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::RenderDebugStrings +// +// PURPOSE: Render all the debug strings +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::RenderDebugStrings() +{ + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + uint32 nScreenWidth, nScreenHeight; + g_pLTClient->GetSurfaceDims(hScreen, &nScreenWidth, &nScreenHeight); + + float fx = 0.0f, fy = 0.0f; + float fYLeftOffset = 0.0f, fYRightOffset = 0.0f; + float fScreenWidth = float(nScreenWidth); + float fScreenHeight = float(nScreenHeight); + + for (int i=0; i < kMaxDebugStrings; i++) + { + if (m_pLeftDebugString[i]) + { + fYLeftOffset += m_pLeftDebugString[i]->GetHeight(); + + fy = fScreenHeight - fYLeftOffset; + + m_pLeftDebugString[i]->SetPosition(0.0f, fy); + m_pLeftDebugString[i]->Render(); + } + + if (m_pRightDebugString[i]) + { + fYRightOffset += m_pRightDebugString[i]->GetHeight(); + + fx = fScreenWidth - m_pRightDebugString[i]->GetWidth(); + fy = fScreenHeight - fYRightOffset; + + m_pRightDebugString[i]->SetPosition(fx, fy); + m_pRightDebugString[i]->Render(); + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::ToggleDebugCheat +// +// PURPOSE: Handle debug cheat toggles +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::ToggleDebugCheat(CheatCode eCheat) +{ + switch (eCheat) + { + case CHEAT_POSWEAPON_MUZZLE : + { + if (!g_pPlayerMgr->IsSpectatorMode()) + { + m_bTweakingWeaponMuzzle = !m_bTweakingWeaponMuzzle; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bTweakingWeaponMuzzle); + + // Save tweaks... + + if (!m_bTweakingWeaponMuzzle) + { + g_pWeaponMgr->WriteFile(); + } + } + } + break; + + case CHEAT_WEAPON_BREACHOFFSET : + { + if (!g_pPlayerMgr->IsSpectatorMode()) + { + m_bTweakingWeaponBreachOffset = !m_bTweakingWeaponBreachOffset; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bTweakingWeaponBreachOffset); + + // Save tweaks... + + if (!m_bTweakingWeaponBreachOffset) + { + g_pWeaponMgr->WriteFile(); + } + } + } + break; + + case CHEAT_POSWEAPON : + { + if (!g_pPlayerMgr->IsSpectatorMode()) + { + m_bTweakingWeapon = !m_bTweakingWeapon; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bTweakingWeapon); + + // Save tweaks... + + if (!m_bTweakingWeapon) + { + g_pWeaponMgr->WriteFile(); + } + } + } + break; + + case CHEAT_POS1STCAM : + { + if (!g_pPlayerMgr->IsSpectatorMode()) + { + m_bAdjust1stPersonCamera = !m_bAdjust1stPersonCamera; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bAdjust1stPersonCamera); + } + } + break; + + case CHEAT_LIGHTSCALE : + { + m_bAdjustLightScale = !m_bAdjustLightScale; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bAdjustLightScale); + } + break; + + case CHEAT_LIGHTADD : + { + m_bAdjustLightAdd = !m_bAdjustLightAdd; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bAdjustLightAdd); + } + break; + + case CHEAT_FOV : + { + m_bAdjustFOV = !m_bAdjustFOV; + + g_pPlayerMgr->GetMoveMgr()->AllowMovement(!m_bAdjustFOV); + } + break; + + case CHEAT_CHASETOGGLE : + { + if (GetPlayerMgr()->GetPlayerState() == PS_ALIVE && !GetPlayerMgr()->IsZoomed()) + { + GetPlayerMgr()->SetExternalCamera(GetPlayerMgr()->IsFirstPerson()); + } + } + break; + + + default : break; + } +} + +void CGameClientShell::DebugWriteCameraPosition() +{ + static char s_szDebugCamName[64] = ""; + static uint32 s_nDebugCamCount = 0; + + char szTmp[128] = ""; + GetConsoleString("DebugCameraName",szTmp,"CameraPoint"); + if (stricmp(s_szDebugCamName,szTmp) != 0) + { + SAFE_STRCPY(s_szDebugCamName,szTmp); + s_nDebugCamCount = 0; + } + char szFileName[64]; + sprintf(szFileName,"Game\\%s%02d.txt", s_szDebugCamName, s_nDebugCamCount); + + FILE* pFile = fopen (szFileName, "wt"); + if (!pFile) return; + + LTVector vPos; + g_pLTClient->GetObjectPos(GetPlayerMgr()->GetCamera(), &vPos); + + //handle the shift from the current world to the source world + if((uint32)g_vtApplyWorldOffset.GetFloat(1.0f)) + { + LTVector vOffset; + g_pLTClient->GetSourceWorldOffset(vOffset); + vPos += vOffset; + } + + // Convert pitch and yaw to user friendly units... + + float fYawDeg = RAD2DEG(GetPlayerMgr()->GetYaw()); + while (fYawDeg < 0.0f) + { + fYawDeg += 360.0f; + } + while (fYawDeg > 360.0f) + { + fYawDeg -= 360.0f; + } + + float fPitchDeg = RAD2DEG(GetPlayerMgr()->GetPitch()); + while (fPitchDeg < 0.0f) + { + fPitchDeg += 360.0f; + } + while (fPitchDeg > 360.0f) + { + fPitchDeg -= 360.0f; + } + + + sprintf(szTmp,"\n[CameraPoint]\n"); + fwrite (szTmp, strlen(szTmp), 1, pFile); + + s_nDebugCamCount++; + sprintf(szTmp,"Name = \"%s%02d\"\n", s_szDebugCamName, s_nDebugCamCount); + fwrite (szTmp, strlen(szTmp), 1, pFile); + + sprintf(szTmp,"Pos = <%6.0f,%6.0f,%6.0f>\n", vPos.x, vPos.y, vPos.z); + fwrite (szTmp, strlen(szTmp), 1, pFile); + + sprintf(szTmp,"Rotation = <%0.5f, %0.5f, 0.00000>\n", GetPlayerMgr()->GetPitch(), GetPlayerMgr()->GetYaw()); + fwrite (szTmp, strlen(szTmp), 1, pFile); + + + fwrite ("\n", 1, 1, pFile); + + fclose (pFile); + + g_pLTClient->CPrint("%s%02d:Pos=<%6.0f,%6.0f,%6.0f>;Rot=<%6.0f,%6.0f, 0>", + s_szDebugCamName, s_nDebugCamCount, vPos.x, vPos.y, vPos.z, fPitchDeg, fYawDeg); + + +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::FirstUpdate +// +// PURPOSE: Handle first update (each level) +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::FirstUpdate() +{ + if (!m_bFirstUpdate) return; + + GetPlayerMgr()->FirstUpdate(); + + m_bFirstUpdate = false; + + + // Set up the level-start screen fade... + + if (g_varStartLevelScreenFade.GetFloat()) + { + GetInterfaceMgr( )->StartScreenFadeIn(g_varStartLevelScreenFadeTime.GetFloat()); + } + + + // Set prediction if we are playing multiplayer...We turn this + // off for single player because projectiles look MUCH better... + + if ( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + g_pLTClient->RunConsoleString("Prediction 1"); + } + else + { + g_pLTClient->RunConsoleString("Prediction 0"); + } + + + // Set misc console vars... + + MirrorSConVar("AllSkyPortals", "AllSkyPortals"); + + + // Set up the global (per level) wind values... + + g_pLTClient->GetSConValueFloat("WindX", g_vWorldWindVel.x); + g_pLTClient->GetSConValueFloat("WindY", g_vWorldWindVel.y); + g_pLTClient->GetSConValueFloat("WindZ", g_vWorldWindVel.z); + + + // Set up the global (per level) fog values... + + ResetDynamicWorldProperties(); + + + // Initialize the music playlists... + + RestoreMusic(); + + + // Start with a clean slate... + + g_pLTClient->ClearInput(); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::RestoreMusic +// +// PURPOSE: Restore the music state +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::RestoreMusic() +{ + if (m_Music.IsInitialized()) + { + // Initialize music for the current level... + + char aMusicDirectory[256]; + char* pMusicDirectory = NULL; + if (g_pLTClient->GetSConValueString("MusicDirectory", aMusicDirectory, sizeof(aMusicDirectory)) == LT_OK) + { + pMusicDirectory = aMusicDirectory; + } + + char aMusicControlFile[256]; + char* pMusicControlFile = NULL; + if (g_pLTClient->GetSConValueString("MusicControlFile", aMusicControlFile, sizeof(aMusicControlFile)) == LT_OK) + { + pMusicControlFile = aMusicControlFile; + } + + if (pMusicDirectory && pMusicControlFile) + { + CMusicState* pMS = m_Music.GetMusicState(); + + CMusicState musicState; + musicState.nIntensity = pMS->nIntensity; + strcpy(musicState.szDirectory, pMusicDirectory); + strcpy(musicState.szControlFile, pMusicControlFile); + + m_Music.RestoreMusicState(musicState); + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::MirrorSConVar +// +// PURPOSE: Takes the value of the server-side variable specified by +// pSVarName and sets its value into the client-sdie variable +/// specified by pCVarName. +// +// --------------------------------------------------------------------------- // +void CGameClientShell::MirrorSConVar(char *pSVarName, char *pCVarName) +{ + char buf[512]; + float fVal = 0.0f; + + g_pLTClient->GetSConValueFloat(pSVarName, fVal); + + // Special case, make all farz calls go through this function... + if (stricmp(pCVarName, "FarZ") == 0) + { + SetFarZ((int)fVal); + } + else + { + sprintf(buf, "%s %f", pCVarName, fVal); + g_pLTClient->RunConsoleString(buf); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::ResetGlobalFog +// +// PURPOSE: Reset the global fog values based on the saved values... +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::ResetDynamicWorldProperties(LTBOOL bUseWorldFog) +{ + // Set the FarZ for the level... + + MirrorSConVar("FarZ", "FarZ"); + MirrorSConVar("WorldNorth","WorldNorth"); + + //Setup the fog to reflect the server's fog if applicable + if(bUseWorldFog) + { + // See if fog should be disabled + uint32 dwAdvancedOptions = GetInterfaceMgr( )->GetAdvancedOptions(); + + if (!(dwAdvancedOptions & AO_FOG)) + { + g_pLTClient->RunConsoleString("FogEnable 0"); + return; + } + + MirrorSConVar("FogEnable", "FogEnable"); + MirrorSConVar("FogNearZ", "FogNearZ"); + MirrorSConVar("FogFarZ", "FogFarZ"); + MirrorSConVar("LMAnimStatic", "LMAnimStatic"); + MirrorSConVar("FogR", "FogR"); + MirrorSConVar("FogG", "FogG"); + MirrorSConVar("FogB", "FogB"); + + MirrorSConVar("SkyFogEnable", "SkyFogEnable"); + MirrorSConVar("SkyFogNearZ", "SkyFogNearZ"); + MirrorSConVar("SkyFogFarZ", "SkyFogFarZ"); + + // VFog.... + + MirrorSConVar("SC_VFog", "VFog"); + MirrorSConVar("SC_VFogMinY", "VFogMinY"); + MirrorSConVar("SC_VFogMaxY", "VFogMaxY"); + MirrorSConVar("SC_VFogDensity", "VFogDensity"); + MirrorSConVar("SC_VFogMax", "VFogMax"); + MirrorSConVar("SC_VFogMaxYVal", "VFogMaxYVal"); + MirrorSConVar("SC_VFogMinYVal", "VFogMinYVal"); + } + + //update the shadow information + MirrorSConVar("ModelShadow_Proj_Alpha", "ModelShadow_Proj_Alpha"); + MirrorSConVar("ModelShadow_Proj_MinColorComponent", "ModelShadow_Proj_MinColorComponent"); + MirrorSConVar("ModelShadow_Proj_MaxProjDist", "ModelShadow_Proj_MaxProjDist"); + MirrorSConVar("DrawAllModelShadows", "DrawAllModelShadows"); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::RenderCamera() +// +// PURPOSE: Sets up the client and renders the camera +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::RenderCamera(bool bDrawInterface) +{ + if (!m_bMainWindowFocus) return; + + if (!GetPlayerMgr()->PreRender()) return; + + + // Important to update this after the weapon model has been updated + // (some fx depend on the position of the weapon model)... + + m_sfxMgr.UpdateSpecialFX(); + + // Update any client-side special effects... + + m_DamageFXMgr.Update(); + + //make sure to update the gore settings in case they changed + UpdateGoreSettings(); + + HLOCALOBJ hCamera = GetPlayerMgr()->GetCamera(); + + //handle updating the paused status + m_ClientFXMgr.Pause(IsServerPaused()); + + //update all the effects status as well as any that might effect the camera + m_ClientFXMgr.UpdateAllActiveFX( IsMultiplayerGame() ? true : m_bMainWindowFocus ); + + g_pLTClient->Start3D(); + + float fFrameTime = (IsServerPaused()) ? 0.0f : GetFrameTime(); + + g_pLTClient->RenderCamera(hCamera, fFrameTime); + + // Render the the dynamic FX. + m_sfxMgr.RenderFX(hCamera); + + // Render the effects + m_ClientFXMgr.RenderAllActiveFX(m_bMainWindowFocus ); + + g_pLTClient->StartOptimized2D(); + + GetInterfaceMgr( )->Draw(); + + // Display any necessary debugging info... + + RenderDebugStrings(); + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::DontRenderCamera() +// +// PURPOSE: Sets up the client but doesn't render the camera +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::DontRenderCamera() +{ + GetPlayerMgr()->PreRender(); + + m_sfxMgr.UpdateSpecialFX(); + + //handle updating the paused status + m_ClientFXMgr.Pause(IsServerPaused()); + + //update all the effects status as well as any that might effect the camera + m_ClientFXMgr.UpdateAllActiveFX( IsMultiplayerGame() ? true : m_bMainWindowFocus ); + } + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::BuildClientSaveMsg +// +// PURPOSE: Save all the necessary client-side info +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::BuildClientSaveMsg(ILTMessage_Write *pMsg, SaveDataState eSaveDataState) +{ + if (!pMsg) return; + + // Save the state of the save data... + + pMsg->Writeuint8( eSaveDataState ); + + // Save complex data members... + + GetInterfaceMgr( )->Save(pMsg); + GetPlayerMgr()->Save(pMsg, eSaveDataState); + + m_Music.Save(pMsg); + + // Save all necessary data members... + + pMsg->WriteLTVector(m_vFlashColor); + + pMsg->Writeuint8(m_eDifficulty); + pMsg->Writebool(m_bFlashScreen); + + pMsg->Writefloat(m_fFlashTime); + pMsg->Writefloat(m_fFlashStart); + pMsg->Writefloat(m_fFlashRampUp); + pMsg->Writefloat(m_fFlashRampDown); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UnpackClientSaveMsg +// +// PURPOSE: Load all the necessary client-side info +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::UnpackClientSaveMsg(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + m_bRestoringGame = true; + + // Get the state of the data we are about to load... + + SaveDataState eLoadDataState = static_cast(pMsg->Readuint8()); + + // Load complex data members... + + GetInterfaceMgr( )->Load(pMsg); + GetPlayerMgr()->Load(pMsg, eLoadDataState); + + m_Music.Load(pMsg); + + // Load data members... + + m_vFlashColor = pMsg->ReadLTVector(); + + m_eDifficulty = (GameDifficulty) pMsg->Readuint8(); + m_bFlashScreen = pMsg->Readbool(); + m_fFlashTime = pMsg->Readfloat(); + m_fFlashStart = pMsg->Readfloat(); + m_fFlashRampUp = pMsg->Readfloat(); + m_fFlashRampDown = pMsg->Readfloat(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnModelKey +// +// PURPOSE: Handle weapon model keys +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::OnModelKey(HLOCALOBJ hObj, ArgList *pArgs) +{ + bool bResult; + + // give the client weapon mgr first shot at it + bResult = g_pPlayerMgr->GetClientWeaponMgr()->OnModelKey( hObj, pArgs ); + + // if it hasn't been handled... + if ( !bResult ) + { + // try the sfx mgr + m_sfxMgr.OnModelKey(hObj, pArgs); + } + + if( !bResult ) + { + g_pMoveMgr->GetVehicleMgr()->OnModelKey( hObj, pArgs ); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::OnPlaySound +// +// PURPOSE: Handle a sound being played... +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::OnPlaySound(PlaySoundInfo* pPSI) +{ +#ifdef USE_DX8_SOFTWARE_FILTERS + if (!pPSI || !g_vtUseSoundFilters.GetFloat()) return; + + SOUNDFILTER* pFilter = g_pSoundFilterMgr->GetFilter((uint8)pPSI->m_UserData); + if (!pFilter) + { + DebugCPrint(1,"ERROR in CGameClientShell::OnPlaySound()!"); + DebugCPrint(1," couldn't find filter (%d)", pPSI->m_UserData); + return; + } + + if (pFilter && pPSI->m_hSound) + { + // See if we need to calculate the filter dynamically... + + if (g_pSoundFilterMgr->IsDynamic(pFilter)) + { + pFilter = GetDynamicSoundFilter(); + + if (!pFilter) + { + DebugCPrint(1,"ERROR in CGameClientShell::OnPlaySound()!"); + DebugCPrint(1," couldn't find a dynamic filter (%s)", pFilter->szName); + return; + } + } + + // Some sounds are unfiltered... + + if (g_pSoundFilterMgr->IsUnFiltered(pFilter)) return; + + + // Set up the filter + + ILTClientSoundMgr *pSoundMgr = (ILTClientSoundMgr *)g_pLTClient->SoundMgr(); + + pSoundMgr->SetSoundFilter(pPSI->m_hSound, pFilter->szFilterName); + for (int i=0; i < pFilter->nNumVars; i++) + { + pSoundMgr->SetSoundFilterParam(pPSI->m_hSound, pFilter->szVars[i], pFilter->fValues[i]); + } + + // TEMP, let us test what filter is being used... + // g_pLTClient->CPrint("Using Filter: %s", pFilter->szName); + } + else + { + DebugCPrint(1,"ERROR in CGameClientShell::OnPlaySound()!"); + if (pFilter) + { + DebugCPrint(1," Invalid sound associated with Filter: %s", pFilter->szName); + } + else + { + DebugCPrint(1," Invalid filter associated with FilterId: %d", pPSI->m_UserData); + } + } +#endif +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::CreateBoundingBox +// +// PURPOSE: Create a box around the MoveMgr object +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::CreateBoundingBox() +{ + if (m_hBoundingBox) return; + + HLOCALOBJ hMoveMgrObj = g_pPlayerMgr->GetMoveMgr()->GetObject(); + if (!hMoveMgrObj) return; + + ObjectCreateStruct theStruct; + INIT_OBJECTCREATESTRUCT(theStruct); + + LTVector vPos; + g_pLTClient->GetObjectPos(hMoveMgrObj, &vPos); + theStruct.m_Pos = vPos; + + SAFE_STRCPY(theStruct.m_Filename, "Models\\1x1_square.ltb"); + SAFE_STRCPY(theStruct.m_SkinName, "SpecialFX\\smoke.dtx"); + theStruct.m_ObjectType = OT_MODEL; + theStruct.m_Flags = FLAG_VISIBLE; + + m_hBoundingBox = g_pLTClient->CreateObject(&theStruct); + + UpdateBoundingBox(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateBoundingBox() +// +// PURPOSE: Update the bounding box +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateBoundingBox() +{ + if (!m_hBoundingBox) return; + + HLOCALOBJ hMoveMgrObj = g_pPlayerMgr->GetMoveMgr()->GetObject(); + if (!hMoveMgrObj) return; + + LTVector vPos; + g_pLTClient->GetObjectPos(hMoveMgrObj, &vPos); + g_pLTClient->SetObjectPos(m_hBoundingBox, &vPos); + + LTVector vDims; + g_pPhysicsLT->GetObjectDims(hMoveMgrObj, &vDims); + + LTVector vScale; + VEC_DIVSCALAR(vScale, vDims, 0.5f); + g_pLTClient->SetObjectScale(m_hBoundingBox, &vScale); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: DefaultModelHook +// +// PURPOSE: Default model hook function +// +// --------------------------------------------------------------------------- // + +void DefaultModelHook (ModelHookData *pData, void *pUser) +{ + + CGameClientShell* pShell = (CGameClientShell*) pUser; + if (!pShell) return; + + uint32 nUserFlags = 0; + g_pCommonLT->GetObjectFlags(pData->m_hObject, OFT_User, nUserFlags); + + // If we're using spy vision, turn off the glow on all models + // that use the default model hook function... + + if (g_pPlayerMgr->UsingSpyVision()) + { + pData->m_HookFlags |= MHF_NOGLOW; + } + + if (nUserFlags & USRFLG_GLOW) + { + pData->m_LightAdd = g_pPlayerMgr->GetModelGlow(); + VEC_CLAMP((pData->m_LightAdd), 0.0f, 255.0f); + } + else if (nUserFlags & USRFLG_MODELADD) + { + // Get the new color out of the upper 3 bytes of the + // user flags... + + float r = (float)(nUserFlags>>24); + float g = (float)(nUserFlags>>16); + float b = (float)(nUserFlags>>8); + + VEC_SET (pData->m_LightAdd, r, g, b); + VEC_CLAMP((pData->m_LightAdd), 0.0f, 255.0f); + } +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: HookedWindowProc +// +// PURPOSE: Hook it real good +// +// --------------------------------------------------------------------------- // + +LRESULT CALLBACK HookedWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch(uMsg) + { + HANDLE_MSG(hWnd, WM_LBUTTONUP, CGameClientShell::OnLButtonUp); + HANDLE_MSG(hWnd, WM_LBUTTONDOWN, CGameClientShell::OnLButtonDown); + HANDLE_MSG(hWnd, WM_LBUTTONDBLCLK, CGameClientShell::OnLButtonDblClick); + HANDLE_MSG(hWnd, WM_RBUTTONUP, CGameClientShell::OnRButtonUp); + HANDLE_MSG(hWnd, WM_RBUTTONDOWN, CGameClientShell::OnRButtonDown); + HANDLE_MSG(hWnd, WM_RBUTTONDBLCLK, CGameClientShell::OnRButtonDblClick); + HANDLE_MSG(hWnd, WM_MOUSEMOVE, CGameClientShell::OnMouseMove); + HANDLE_MSG(hWnd, WM_CHAR, CGameClientShell::OnChar); + HANDLE_MSG(hWnd, WM_SETCURSOR, OnSetCursor); + } + _ASSERT(g_pfnMainWndProc); + return(CallWindowProc(g_pfnMainWndProc,hWnd,uMsg,wParam,lParam)); +} + +void CGameClientShell::OnChar(HWND hWnd, char c, int rep) +{ + g_pInterfaceMgr->OnChar((unsigned char)c); +} + + +void CGameClientShell::OnLButtonUp(HWND hWnd, int x, int y, UINT keyFlags) +{ + g_pInterfaceMgr->OnLButtonUp(x,y); +} + +void CGameClientShell::OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) +{ + /*if (!g_tmrDblClick.Stopped() && + (g_mouseMgr.GetClickPosX() == x) && (g_mouseMgr.GetClickPosY() == y)) + { + g_tmrDblClick.Stop(); + OnLButtonDblClick(hwnd,fDoubleClick,x,y,keyFlags); + } + else + { + g_mouseMgr.SetClickPos(x,y); + g_tmrDblClick.Start(.5); + }*/ + + g_pInterfaceMgr->OnLButtonDown(x,y); +} + +void CGameClientShell::OnLButtonDblClick(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) +{ + g_pInterfaceMgr->OnLButtonDblClick(x,y); +} + +void CGameClientShell::OnRButtonUp(HWND hwnd, int x, int y, UINT keyFlags) +{ + g_pInterfaceMgr->OnRButtonUp(x,y); +} + +void CGameClientShell::OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) +{ + g_pInterfaceMgr->OnRButtonDown(x,y); +} + +void CGameClientShell::OnRButtonDblClick(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) +{ + g_pInterfaceMgr->OnRButtonDblClick(x,y); +} + +void CGameClientShell::OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags) +{ + //g_mouseMgr.SetMousePos(x,y); + + g_pInterfaceMgr->OnMouseMove(x,y); +} + +BOOL OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg) +{ + return TRUE; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: SetWindowSize +// +// PURPOSE: This will resize the window to the specified dimensions and clip the cursor if necessary +// +// --------------------------------------------------------------------------- // + +BOOL SetWindowSize(uint32 nWidth, uint32 nHeight) +{ + // Clip the cursor if we're NOT in a window + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("Windowed"); + BOOL bClip = TRUE; + if(hVar) + { + float fVal = g_pLTClient->GetVarValueFloat(hVar); + if(fVal == 1.0f) + bClip = FALSE; + } + + RECT screenRect; + GetWindowRect(GetDesktopWindow(), &screenRect); + + + if(bClip) + { + SetWindowLong(g_hMainWnd,GWL_STYLE,WS_VISIBLE); + SetWindowPos(g_hMainWnd,HWND_TOPMOST,0,0,screenRect.right - screenRect.left,screenRect.bottom - screenRect.top,SWP_FRAMECHANGED); + + RECT wndRect; + GetWindowRect(g_hMainWnd, &wndRect); + ClipCursor(&wndRect); + } + else + { + SetWindowPos(g_hMainWnd,HWND_NOTOPMOST, + ((screenRect.right - screenRect.left) - nWidth) / 2, + ((screenRect.bottom - screenRect.top) - nHeight) / 2, + nWidth, nHeight,SWP_FRAMECHANGED); + ShowWindow(g_hMainWnd, SW_NORMAL); + } + + return TRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: HookWindow +// +// PURPOSE: HOOK IT! +// +// --------------------------------------------------------------------------- // + +BOOL HookWindow() +{ + // Hook the window + if(g_pLTClient->GetEngineHook("HWND",(void **)&g_hMainWnd) != LT_OK) + { + TRACE("HookWindow - ERROR - could not get the engine window!\n"); + return FALSE; + } + + // Get the window procedure +#ifdef STRICT + g_pfnMainWndProc = (WNDPROC)GetWindowLong(g_hMainWnd,GWL_WNDPROC); +#else + g_pfnMainWndProc = (FARPROC)GetWindowLong(g_hMainWnd,GWL_WNDPROC); +#endif + + if(!g_pfnMainWndProc) + { + TRACE("HookWindow - ERROR - could not get the window procedure from the engine window!\n"); + return FALSE; + } + + // Replace it with ours + if(!SetWindowLong(g_hMainWnd,GWL_WNDPROC,(LONG)HookedWindowProc)) + { + TRACE("HookWindow - ERROR - could not set the window procedure!\n"); + return FALSE; + } + + return TRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: UnhookWindow +// +// PURPOSE: Unhook the window +// +// --------------------------------------------------------------------------- // + +void UnhookWindow() +{ + if(g_pfnMainWndProc && g_hMainWnd) + { + SetWindowLong(g_hMainWnd, GWL_WNDPROC, (LONG)g_pfnMainWndProc); + g_hMainWnd = 0; + g_pfnMainWndProc = NULL; + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SetDifficulty +// +// PURPOSE: Dynamically change our difficulty level +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::SetDifficulty(GameDifficulty e) +{ + m_eDifficulty = e; + + //check to see if we've got a server + if (g_pLTClient->IsConnected()) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_DIFFICULTY); + cMsg.Writeuint8(m_eDifficulty); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleWeaponPickup() +// +// PURPOSE: Handle picking up weapon +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleWeaponPickup(uint8 nWeaponID, bool bSuccess, bool bActivatingPickup ) +{ + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponID); + if (!pWeapon) return; + + char szMsg[128] = ""; + if (bSuccess) + { + if (g_pPlayerStats->HaveWeapon(nWeaponID) && g_pPlayerMgr->IsSearching()) + { + g_pPickupMsgs->AddMessage(LoadTempString(IDS_DISARMED),""); + return; + } + else + { + FormatString(IDS_GUNPICKUP,szMsg,sizeof(szMsg),pWeapon->szShortName); + } + } + else if( bActivatingPickup ) + { + if (pWeapon->bIsAmmo && pWeapon->nIsAmmoNoPickupId) + { + FormatString(pWeapon->nIsAmmoNoPickupId, szMsg,sizeof(szMsg)); + } + else if (pWeapon->bInfiniteAmmo) + { + FormatString(IDS_GUN_NOPICKUP_INF,szMsg,sizeof(szMsg),pWeapon->szShortName); + } + else + { + FormatString(IDS_GUN_NOPICKUP,szMsg,sizeof(szMsg),pWeapon->szShortName); + } + + // Play the sound bute NoPickupSound + g_pClientSoundMgr->PlaySoundLocal("NoPickupSound", SOUNDPRIORITY_PLAYER_HIGH); + } + + // If the weapon is really ammo (e.g., grenade), don't display a pickup message, only + // display a message if we didn't pick up the weapon... + + if (szMsg[0] && (!pWeapon->bIsAmmo || !bSuccess)) + { + std::string icon = pWeapon->GetSilhouetteIcon(); + g_pPickupMsgs->AddMessage(szMsg,icon.c_str()); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleGearPickup() +// +// PURPOSE: Handle picking up gear +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleGearPickup(uint8 nGearId, bool bSuccess, bool bActivatingPickup ) +{ + GEAR const *pGear = g_pWeaponMgr->GetGear(nGearId); + if (!pGear) return; + + int nNameId = pGear->nNameId; + if (!nNameId) return; + + char szName[64]; + LoadString(nNameId,szName,sizeof(szName)); + if (!strlen(szName)) return; + + char szMsg[128] = ""; + if (bSuccess) + { + FormatString(IDS_GEARPICKUP,szMsg,sizeof(szMsg),szName); + } + else if( bActivatingPickup ) + { + FormatString(IDS_GEAR_NOPICKUP,szMsg,sizeof(szMsg),szName); + + // Play the sound bute NoPickupSound + g_pClientSoundMgr->PlaySoundLocal("NoPickupSound", SOUNDPRIORITY_PLAYER_HIGH); + } + + if (szMsg[0]) + { + g_pPickupMsgs->AddMessage(szMsg,pGear->szIcon); +} +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleModPickup() +// +// PURPOSE: Handle picking up mod +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleModPickup(uint8 nModId, bool bSuccess, bool bActivatingPickup ) +{ + MOD const *pMod = g_pWeaponMgr->GetMod(nModId); + if (!pMod) return; + + int nNameId = pMod->nNameId; + if (!nNameId) return; + + char szName[64]; + LoadString(nNameId,szName,sizeof(szName)); + if (!strlen(szName)) return; + + char szMsg[128] = ""; + if (bSuccess) + { + FormatString(IDS_MODPICKUP,szMsg,sizeof(szMsg),szName); + } + else if( bActivatingPickup ) + { + FormatString(IDS_MOD_NOPICKUP,szMsg,sizeof(szMsg),szName); + + // Play the sound bute NoPickupSound + g_pClientSoundMgr->PlaySoundLocal("NoPickupSound", SOUNDPRIORITY_PLAYER_HIGH); + } + + if (szMsg[0]) + { + g_pPickupMsgs->AddMessage(szMsg,pMod->szIcon); +} +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::HandleAmmoPickup() +// +// PURPOSE: Handle picking up ammo +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::HandleAmmoPickup(uint8 nAmmoId, int nAmmoCount, + bool bSuccess, bool bActivatingPickup, + uint8 nWeaponId /* = WMGR_INVALID_ID */) +{ + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoId); + if (!pAmmo) return; + + if (pAmmo->nSelectionAmount >= 1000) + return; + + char szMsg[1280] = ""; + if (bSuccess) + { + //check for "infinite" ammo types + FormatString(IDS_AMMOPICKUP,szMsg,sizeof(szMsg),nAmmoCount,pAmmo->szShortName); + } + else if( bActivatingPickup ) + { + FormatString(IDS_AMMO_NOPICKUP,szMsg,sizeof(szMsg),pAmmo->szShortName); + + // Play the sound bute NoPickupSound + g_pClientSoundMgr->PlaySoundLocal("NoPickupSound", SOUNDPRIORITY_PLAYER_HIGH); + } + + if (szMsg[0]) + { + std::string icon = pAmmo->GetNormalIcon(); + + // Use the weapon's icon if necessary... + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponId); + if (pWeapon && pWeapon->bIsAmmo) + { + icon = pWeapon->GetSilhouetteIcon(); + } + + g_pPickupMsgs->AddMessage(szMsg, icon.c_str()); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SetFarZ +// +// PURPOSE: Localize setting the far z (cause it can screw things up +// when set to 0) +// +// --------------------------------------------------------------------------- // + +void CGameClientShell::SetFarZ(int nFarZ) +{ + // Don't EVER set the farZ really close! + if (nFarZ > 50) + { + WriteConsoleInt("FarZ", nFarZ); + } +} + + +void CGameClientShell::OnLockRenderer() +{ + if (GetInterfaceMgr()->IsLoadScreenVisible()) + { + GetInterfaceMgr()->PauseLoadScreen(); + } +} + +void CGameClientShell::OnUnLockRenderer() +{ + if (GetInterfaceMgr()->IsLoadScreenVisible()) + { + GetInterfaceMgr()->ResumeLoadScreen(); + } +} + +void CGameClientShell::PostLevelLoadFirstUpdate() +{ + // Draw the screen once + g_pPlayerMgr->UpdateCamera(); + RenderCamera(false); + + // Restore the game's music state. (This can take a while...) + RestoreMusic(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::UpdateSpeedMonitor() +// +// PURPOSE: Handle updating the server speed monitor... +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::UpdateSpeedMonitor() +{ + LTFLOAT fLocalTime = g_pLTClient->GetTime(); + LTFLOAT fServerTime = g_pLTClient->GetGameTime(); + if(fServerTime - m_fInitialServerTime > 5.0f) + { + // time to do our check + LTFLOAT fServerDelta = fServerTime - m_fInitialServerTime; + LTFLOAT fLocalDelta = fLocalTime - m_fInitialLocalTime; + + if(fServerDelta / fLocalDelta < 0.98) + { + // possible cheater, increment cheat counter + m_nSpeedCheatCounter++; + + if(m_nSpeedCheatCounter > 24) + { + // Disconnect from the server. + if(g_pLTClient->IsConnected()) + { + g_pLTClient->Disconnect(); + } + } + } + else + { + // reset the instance counter + m_nSpeedCheatCounter = 0; + } + + // reset the time counters + m_fInitialServerTime = fServerTime; + m_fInitialLocalTime = fLocalTime; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::SendClientLoadedMessage +// +// PURPOSE: Sent when client done with loading and postloading screens. +// +// ----------------------------------------------------------------------- // + +void CGameClientShell::SendClientLoadedMessage( ) +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_CLIENT_LOADED); + g_pLTClient->SendToServer(cMsg.Read(),MESSAGE_GUARANTEED); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::LauncherServerApp() +// +// PURPOSE: Launches the serverapp. +// +// --------------------------------------------------------------------------- // + +bool CGameClientShell::LauncherServerApp( char const* pszProfileFile ) +{ + // Setup the command line. + std::string sCmdLine = "-profile "; + // Enclose the profile name in quotes since we allow spaces in the name... + sCmdLine += "\""; + sCmdLine += pszProfileFile; + sCmdLine += "\""; + + if( !LaunchFromString( "ContractJackServer.exe", sCmdLine.c_str( ))) + return false; + + // Flag that we launched the server app so that other code knows we + // are exiting due to it. + m_bLaunchedServerApp = true; + + return true; +} + +void CGameClientShell::SetGameType(GameType eGameType) +{ + if (m_eGameType == eGameType) return; + + switch( eGameType ) + { + // Single player and coop use the same weapon files... + + case eGameTypeSingle: + case eGameTypeCooperative: + { + g_pWeaponMgr->LoadOverrideButes( WEAPON_DEFAULT_FILE ); + } + break; + + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + case eGameTypeDoomsDay: + case eGameTypeDemolition: + { + g_pWeaponMgr->LoadOverrideButes( WEAPON_DEFAULT_MULTI_FILE ); + } + break; + + } + m_eGameType = eGameType; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::LaunchPatchUpdate +// +// PURPOSE: Launchers patchupdate given URL to patch file. +// +// --------------------------------------------------------------------------- // + +bool CGameClientShell::LaunchPatchUpdate( char const* pszUrl ) +{ + static char* pszExe = "FPUpdate.exe"; + + // Check inputs. + if( !pszUrl || !pszUrl[0] ) + return false; + + if( !LaunchFromString( pszExe, pszUrl )) + return false; + + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CGameClientShell::LaunchFromString +// +// PURPOSE: Runs a start command. +// +// --------------------------------------------------------------------------- // +bool CGameClientShell::LaunchFromString( char const* pszFile, char const* pszParameters ) +{ + RMode rMode; + + // Check inputs. + if( !pszFile || !pszFile[0] ) + return false; + + // Make sure the file exists. + if( !CWinUtil::FileExist( pszFile )) + return false; + + // Save the current render mode. We'll need to restore it if the serverapp + // launching fails. + g_pLTClient->GetRenderMode( &rMode ); + + // Shutdown the renderer, minimize it, and hide it... + g_pLTClient->ShutdownRender( RSHUTDOWN_MINIMIZEWINDOW | RSHUTDOWN_HIDEWINDOW ); + + // Start the server app. + if(( int )ShellExecute( NULL, "open", pszFile, pszParameters, NULL, SW_SHOWNORMAL ) <= 32 ) + { + // Serverapp failed. Restore the render mode. + g_pLTClient->SetRenderMode( &rMode ); + return false; + } + + // We're done with this process. + g_pLTClient->Shutdown(); + + return true; +} diff --git a/Jack/ClientShellDLL/GameClientShell.h b/Jack/ClientShellDLL/GameClientShell.h new file mode 100644 index 00000000..9c5f0824 --- /dev/null +++ b/Jack/ClientShellDLL/GameClientShell.h @@ -0,0 +1,395 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GameClientShell.h +// +// PURPOSE : Game Client Shell - Definition +// +// CREATED : 9/18/97 +// +// (c) 1997-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __GAME_CLIENT_SHELL_H__ +#define __GAME_CLIENT_SHELL_H__ + +#include "iclientshell.h" +#include "iltfontmanager.h" +#include "ClientServerShared.h" +#include "SFXMgr.h" +#include "Music.h" +#include "GlobalClientMgr.h" +#include "VarTrack.h" +#include "AttachButeMgr.h" +#include "SharedMovement.h" +#include "NetDefs.h" +#include "ClientFXMgr.h" +#include "CheatMgr.h" +#include "LightScaleMgr.h" +#include "ScreenTintMgr.h" +#include "InterfaceMgr.h" +#include "PlayerMgr.h" +#include "VersionMgr.h" +#include "ClientSoundMgr.h" +#include "MsgIds.h" + +class CSpecialFX; +class CCameraFX; +class CGameTexMgr; +class CInterfaceMgr; +class CPlayerMgr; +class CMissionMgr; +class CClientSaveLoadMgr; +class CClientWeaponAllocator; +class ClientMultiplayerMgr; +class CClientTrackedNodeMgr; +class CPerformanceTest; + +class CGameClientShell; +extern CGameClientShell* g_pGameClientShell; + + +class CGameClientShell : public IClientShellStub +{ +public: + CGameClientShell(); + ~CGameClientShell(); + + + //************************************************************************** + //general game stuff + //************************************************************************** +public: + void OnEnterWorld(); + void OnExitWorld(); + + void StartPerformanceTest(); + void StopPerformanceTest(); + void AbortPerformanceTest(); //cancel out early + bool IsRunningPerformanceTest() const { return m_bRunningPerfTest; } + CPerformanceTest* GetLastPerformanceTest() { return m_pPerformanceTest; } + + virtual void PauseGame(bool bPause, bool bPauseSound=false); + + float GetFrameTime() { return m_fFrameTime; } + bool IsGamePaused() const { return m_bGamePaused || m_bServerPaused; } + bool IsServerPaused() const { return m_bServerPaused; } + bool IsFirstUpdate() const { return m_bFirstUpdate; } + + void MinimizeMainWindow() { m_bMainWindowMinimized = true; } + bool IsMainWindowMinimized() { return m_bMainWindowMinimized; } + void RestoreMainWindow() { m_bMainWindowMinimized = false; } + + + CMusic* GetMusic() { return &m_Music; } + void RestoreMusic(); + void InitSound(); + + void UpdateGoreSettings(); + + void ClearAllScreenBuffers(); + + bool HasJoystick(); + bool IsJoystickEnabled(); + bool EnableJoystick(); + + bool HasGamepad(); + bool IsGamepadEnabled(); + bool EnableGamepad(); + + void SetInputState(bool bAllowInput); + + void CSPrint(char* msg, ...); + + void BuildClientSaveMsg(ILTMessage_Write *pMsg, SaveDataState eSaveDataState); + void UnpackClientSaveMsg(ILTMessage_Read *pMsg); + + void PreLoadWorld(const char *pWorldName); + + // Mouse Messages + static void OnChar(HWND hWnd, char c, int rep); + static void OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags); + static void OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); + static void OnLButtonDblClick(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); + static void OnRButtonUp(HWND hwnd, int x, int y, UINT keyFlags); + static void OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); + static void OnRButtonDblClick(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags); + static void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags); + + bool IsRendererInitted() {return m_bRendererInit;} + + void SetFarZ(int nFarZ); + void ResetDynamicWorldProperties(LTBOOL bUseWorldFog = LTTRUE); + + virtual CInterfaceMgr* GetInterfaceMgr() { return NULL; } + virtual CPlayerMgr* GetPlayerMgr() = 0; + virtual CClientWeaponAllocator const *GetClientWeaponAllocator() const = 0; + + LTBOOL IsWorldLoaded() const { return m_bInWorld; } + void SetWorldNotLoaded() { m_bInWorld = LTFALSE; } + + // Are we able to use the radar functionality + virtual bool ShouldUseRadar( ) { return false; } + + // Do whatever we need to do after the level loads, but before the first update. + // This happens while the loading screen is still visible so we're not stuck at + // a black screen. + virtual void PostLevelLoadFirstUpdate(); + + + // Called when done with loading and postloading screens. + void SendClientLoadedMessage( ); + + // Check the server's status on loading the world. + bool IsServerLoaded( ) { return ( m_eSwitchingWorldsState == eSwitchingWorldsStateWaitForClient || + m_eSwitchingWorldsState == eSwitchingWorldsStateFinished ); } + SwitchingWorldsState GetSwitchingWorldsState( ) { return m_eSwitchingWorldsState; } + + CClientFXMgr* GetClientFXMgr() { return &m_ClientFXMgr; } + + bool LauncherServerApp( char const* pszProfileFile ); + + // Launchers patchupdate given URL to patch file. + bool LaunchPatchUpdate( char const* pszUrl ); + + // Runs a start command. + bool LaunchFromString( char const* pszFile, char const* pszParameters ); + +protected : + uint32 OnEngineInitialized(RMode *pMode, LTGUID *pAppGuid); + void OnEngineTerm(); + void OnEvent(uint32 dwEventID, uint32 dwParam); + LTRESULT OnObjectMove(HOBJECT hObj, bool bTeleport, LTVector *pPos); + LTRESULT OnObjectRotate(HOBJECT hObj, bool bTeleport, LTRotation *pNewRot); + LTRESULT OnTouchNotify(HOBJECT hMain, CollisionInfo *pInfo, float forceMag); + void PreUpdate(); + void Update(); + void PostUpdate(); + void UpdatePlaying(); + void OnCommandOn(int command); + void OnCommandOff(int command); + void OnKeyDown(int key, int rep); + void OnKeyUp(int key); + void OnObjectRemove(HLOCALOBJ hObj); + virtual void OnMessage(ILTMessage_Read *pMsg); + void OnModelKey(HLOCALOBJ hObj, ArgList *pArgs); + void OnPlaySound(PlaySoundInfo* pPlaySoundInfo); + + void RenderCamera(bool bDrawInterface = true); + void DontRenderCamera(); + + void OnLockRenderer(); + void OnUnLockRenderer(); +private: + + //************************************************************************** + // settings + //************************************************************************** +public: + void SetDifficulty(GameDifficulty e); + GameDifficulty GetDifficulty() {return m_eDifficulty;} + GameType GetGameType() {return m_eGameType;} + void SetGameType(GameType eGameType); +private: + + + //************************************************************************** + //Debug stuff + //************************************************************************** +public: + void ToggleDebugCheat(CheatCode eCheat); + void ShowPlayerPos(bool bShow=true) { m_bShowPlayerPos = bShow; } + void ShowCamPosRot(bool bShow=true) { m_bShowCamPosRot = bShow; } + void DebugWriteCameraPosition(); + +private: + + //************************************************************************** + //SFX stuff + //************************************************************************** +public: + CSFXMgr* GetSFXMgr() { return &m_sfxMgr; } + void FlashScreen(const LTVector &vFlashColor, const LTVector &vPos, float fFlashRange, + float fTime, float fRampUp, float fRampDown, bool bForce=false); + + void HandleWeaponPickup(uint8 nWeaponId, bool bSuccess, bool bActivatingPickup ); + void HandleGearPickup(uint8 nGearId, bool bSucces, bool bActivatingPickup ); + void HandleModPickup(uint8 nModId, bool bSucces, bool bActivatingPickup ); + void HandleAmmoPickup(uint8 nAmmoId, int nAmmoCount, bool bSuccess, bool bActivatingPickup, uint8 nWeaponId = WMGR_INVALID_ID); + + CDamageFXMgr* GetDamageFXMgr() { return &m_DamageFXMgr; } + + + void ClearScreenTint(); + CScreenTintMgr* GetScreenTintMgr() { return &m_ScreenTintMgr; } + CLightScaleMgr* GetLightScaleMgr() { return &m_LightScaleMgr; } + +protected : + + void SpecialEffectNotify(HLOCALOBJ hObj, ILTMessage_Read *pMsg); + +private : + CMissionMgr* m_pMissionMgr; + CClientSaveLoadMgr* m_pClientSaveLoadMgr; // Same as g_pClientSaveLoadMgr + + CGlobalClientMgr m_GlobalMgr; // Contains global mgrs + + CDamageFXMgr m_DamageFXMgr; // Same as g_pDamageFxMgr + bool m_bFlashScreen; // Are we tinting the screen for a screen flash + float m_fFlashTime; // Time screen stays at tint color + float m_fFlashStart; // When did the flash start + float m_fFlashRampUp; // Ramp up time + float m_fFlashRampDown; // Ramp down time + LTVector m_vFlashColor; // Tint color + + + GameDifficulty m_eDifficulty; // Difficulty of this game + GameType m_eGameType; + + +// NOTE: The following data members do not need to be saved / loaded +// when saving games. Any data members that don't need to be saved +// should be added here (to keep them together)... + + float m_fFrameTime; // Current frame delta + + bool m_bRestoringGame; // Are we restoring a saved game + + bool m_bMainWindowMinimized; // Is the main window minimized? + + bool m_bTweakingWeapon; // Helper, move player-view weapon around + bool m_bTweakingWeaponMuzzle; // Helper, move player-view weapon muzzle around + bool m_bTweakingWeaponBreachOffset; // Helper, move player-view weapon breach offset around + + CMusic m_Music; // Music helper variable + bool m_bGamePaused; // Is the game paused? + bool m_bServerPaused; // Is server paused? + SwitchingWorldsState m_eSwitchingWorldsState; // Server's switching world state. + bool m_bMainWindowFocus; // Focus + bool m_bRendererInit; // Has the renderer been initted? + + + // Interface stuff... + CCheatMgr m_cheatMgr; // Same as g_pCheatMgr + CLightScaleMgr m_LightScaleMgr; // Class to handle light scale changes + CScreenTintMgr m_ScreenTintMgr; + + + HLOCALOBJ m_hBoundingBox; + + bool m_bFirstUpdate; // Is this the first update + + + // Reverb parameters... + + bool m_bUseReverb; + float m_fReverbLevel; + float m_fNextSoundReverbTime; + LTVector m_vLastReverbPos; + + + // Special FX management... + + CSFXMgr m_sfxMgr; + CClientFXMgr m_ClientFXMgr; // This handels the Client fx created with FxED + + + bool m_bShowPlayerPos; // Display player's position. + bool m_bShowCamPosRot; // Display camera's position/rotation. + bool m_bAdjustLightScale; // Adjusting the global light scale + bool m_bAdjustLightAdd; // Adjusting the camera light add + bool m_bAdjustFOV; // Adjusting the FOV + bool m_bAdjust1stPersonCamera; // Adjust the 1st person camera offset + + CClientTrackedNodeMgr* m_pClientTrackedNodeMgr; + + // Private helper functions... + + void FirstUpdate(); + void MirrorSConVar(char *pSVarName, char *pCVarName); + void Adjust1stPersonCamera(); + void UpdateWeaponPosition(); + void UpdateWeaponMuzzlePosition(); + void UpdateWeaponBreachOffset(); + void ResetCharacterFXSoundData(); + + SOUNDFILTER* GetDynamicSoundFilter(); + + void AdjustLightScale(); + void AdjustLightAdd(); + void AdjustFOV(); + void AdjustMenuPolygrid(); + void AdjustHeadBob(); + void UpdateDebugInfo(); + + + // Handle OnMessage Type (message) + void HandleMsgChangingLevels (ILTMessage_Read*); + void HandleMsgSFXMessage (ILTMessage_Read*); + void HandleMsgPlayerLevelTransition (ILTMessage_Read*); + void HandleMsgMusic (ILTMessage_Read*); + void HandleMsgPlayerLoadClient (ILTMessage_Read*); + void HandleMsgPlayerSingleplayerInit (ILTMessage_Read*); + void HandleMsgServerError (ILTMessage_Read*); + void HandleMsgBPrint (ILTMessage_Read*); + void HandleMsgDefault (ILTMessage_Read*); + void HandleMsgProjectile (uint8, ILTMessage_Read*); + void HandleMsgPauseGame (ILTMessage_Read*); + void HandleMsgSwitchingWorldState (ILTMessage_Read*); + void HandleMsgMultiplayerOptions (ILTMessage_Read*); + + + void InitSinglePlayer(); + + + // Camera helper functions... + + void UpdateScreenFlash(); + + void CreateBoundingBox(); + void UpdateBoundingBox(); + + bool UpdateCheats(); + + // Speed Hack security monitor + void UpdateSpeedMonitor(); + + // Debugging variables... + + enum Constants { kMaxDebugStrings = 3 }; + // Debug string screen locations... + + enum DSSL { eDSBottomLeft, eDSBottomRight }; + + void SetDebugString(char* strMessage, DSSL eLoc=eDSBottomRight, uint8 nLine=0); + void ClearDebugStrings(); + void RenderDebugStrings(); + + CUIPolyString* m_pLeftDebugString[kMaxDebugStrings]; + CUIPolyString* m_pRightDebugString[kMaxDebugStrings]; + + // Contains all multiplayer functionality. + ClientMultiplayerMgr* m_pClientMultiplayerMgr; + + // Are we in a world + bool m_bInWorld; + + // Set when we get an oncommandon for quicksave. + bool m_bQuickSave; + + // Speed Hack security monitor variables + float m_fInitialServerTime; + float m_fInitialLocalTime; + uint8 m_nSpeedCheatCounter; + + // Performance testing variables + bool m_bRunningPerfTest; + CPerformanceTest *m_pPerformanceTest; + + bool m_bLaunchedServerApp; +}; + +void DefaultModelHook(ModelHookData *pData, void *pUser); + + +#endif // __GAME_CLIENT_SHELL_H__ diff --git a/Jack/ClientShellDLL/GameSettings.cpp b/Jack/ClientShellDLL/GameSettings.cpp new file mode 100644 index 00000000..a533efb6 --- /dev/null +++ b/Jack/ClientShellDLL/GameSettings.cpp @@ -0,0 +1,200 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GameSettings.cpp +// +// PURPOSE : Handles implementation of various game settings +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "GameClientShell.h" +#include "iltclient.h" +#include "GameSettings.h" +#include "stdio.h" +#include "windows.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +VarTrack g_vtMouseScaleBase; +VarTrack g_vtMouseScaleInc; + +extern CGameClientShell* g_pGameClientShell; + +CGameSettings::CGameSettings() +{ + m_pClientDE = LTNULL; + m_pClientShell = LTNULL; +} + +////////////////////////////////////////////////////////////////// +// +// INIT THE SETTINGS... +// +////////////////////////////////////////////////////////////////// + +LTBOOL CGameSettings::Init (ILTClient* pClientDE, CGameClientShell* pClientShell) +{ + if (!pClientDE || !pClientShell) return LTFALSE; + + m_pClientDE = pClientDE; + m_pClientShell = pClientShell; + + g_vtMouseScaleBase.Init(g_pLTClient, "MouseScaleBase", NULL, 0.00125f); + g_vtMouseScaleInc.Init(g_pLTClient, "MouseScaleIncrement", NULL, 0.001125f); + + // check if gore is allowed + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + + if (dwAdvancedOptions & AO_MUSIC) + { + m_pClientDE->RunConsoleString("musicenable 1"); + } + else + { + m_pClientDE->RunConsoleString("musicenable 0"); + } + if (dwAdvancedOptions & AO_SOUND) + { + m_pClientDE->RunConsoleString("soundenable 1"); + } + else + { + m_pClientDE->RunConsoleString("soundenable 0"); + } + + // implement settings that need implementing + + ImplementMouseSensitivity(); + + // hack to keep sound volume reasonable + if (SoundVolume() > 100.0f) + SetFloatVar("SoundVolume",100.0f); + + ImplementSoundVolume(); + + return LTTRUE; +} + + + + + + + +void CGameSettings::ImplementMusicSource() +{ + if (!m_pClientDE || !m_pClientShell) return; + + ASSERT(!"Don't call this"); + + LTBOOL bPlay = MusicEnabled(); + + if (bPlay) + { + // [KLS 8/11/02] SetupMusic will handle turning on the + // music and making sure it plays the appropriate music. + g_pInterfaceMgr->SetupMusic(); + } + else + { + m_pClientShell->GetMusic()->Term(); + } + +} + +void CGameSettings::ImplementMusicVolume() +{ + if (!m_pClientDE) return; + ASSERT(!"Don't call this"); + + float nMusicVolume = MusicVolume(); + + g_pGameClientShell->GetMusic()->SetMenuVolume((long)nMusicVolume); +} + +void CGameSettings::ImplementSoundVolume() +{ + if (!m_pClientDE) return; + + float nSoundVolume = SoundVolume(); + + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->SetVolume((short)nSoundVolume); + + // set up the sound volume classes for the game + float fMultiplier; + fMultiplier = WeaponsMultiplier(); + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->SetSoundClassMultiplier( WEAPONS_SOUND_CLASS, fMultiplier ); + fMultiplier = SpeechMultiplier(); + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->SetSoundClassMultiplier( SPEECH_SOUND_CLASS, fMultiplier, false ); + fMultiplier = DefaultMultiplier(); + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->SetSoundClassMultiplier( DEFAULT_SOUND_CLASS, fMultiplier ); + + // now have the sound manager update any playing sounds + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->UpdateVolumeSettings(); +} + + +void CGameSettings::ImplementMouseSensitivity() +{ + if (!m_pClientDE) return; + + float nMouseSensitivity = GetFloatVar("MouseSensitivity"); + + // get the mouse device name + + char strDevice[128]; + memset (strDevice, 0, 128); + LTRESULT result = m_pClientDE->GetDeviceName (DEVICETYPE_MOUSE, strDevice, 127); + if (result == LT_OK) + { + // get mouse x- and y- axis names + + char strXAxis[32]; + memset (strXAxis, 0, 32); + char strYAxis[32]; + memset (strYAxis, 0, 32); + + LTBOOL bFoundXAxis = LTFALSE; + LTBOOL bFoundYAxis = LTFALSE; + + DeviceObject* pList = m_pClientDE->GetDeviceObjects (DEVICETYPE_MOUSE); + DeviceObject* ptr = pList; + while (ptr) + { + if (ptr->m_ObjectType == CONTROLTYPE_XAXIS) + { + SAFE_STRCPY(strXAxis, "##x-axis"); + bFoundXAxis = LTTRUE; + } + + if (ptr->m_ObjectType == CONTROLTYPE_YAXIS) + { + SAFE_STRCPY(strYAxis, "##y-axis"); + bFoundYAxis = LTTRUE; + } + + ptr = ptr->m_pNext; + } + if (pList) m_pClientDE->FreeDeviceObjects (pList); + + if (bFoundXAxis && bFoundYAxis) + { + // run the console string + + char strConsole[64]; + float fBaseScale = g_vtMouseScaleBase.GetFloat(); + float fScaleIncrement = g_vtMouseScaleInc.GetFloat(); + + sprintf (strConsole, "scale \"%s\" \"%s\" %f", strDevice, strXAxis, fBaseScale + ((float)nMouseSensitivity * fScaleIncrement)); + m_pClientDE->RunConsoleString (strConsole); + sprintf (strConsole, "scale \"%s\" \"%s\" %f", strDevice, strYAxis, fBaseScale + ((float)nMouseSensitivity * fScaleIncrement)); + m_pClientDE->RunConsoleString (strConsole); + } + } +} + + + + diff --git a/Jack/ClientShellDLL/GameSettings.h b/Jack/ClientShellDLL/GameSettings.h new file mode 100644 index 00000000..6510b769 --- /dev/null +++ b/Jack/ClientShellDLL/GameSettings.h @@ -0,0 +1,161 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GameSettings.h +// +// PURPOSE : Handles implementation of various game settings +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __GAMESETTINGS_H +#define __GAMESETTINGS_H + +#include "clientutilities.h" + +// Values for 3 position options.. + +#define RS_LOW 0 +#define RS_MED 1 +#define RS_HIGH 2 + + +class CGameClientShell; + +// *********************************************** +// +// Class Definition +// +// *********************************************** + +class CGameSettings +{ + +public: + + CGameSettings(); + ~CGameSettings() {} + + LTBOOL Init (ILTClient* pClientDE, CGameClientShell* pClientShell); + + LTBOOL GetBoolVar(char *pVar); + void SetBoolVar(char *pVar, LTBOOL bVal); + uint8 GetByteVar(char *pVar); + void SetByteVar(char *pVar, uint8 nVal); + float GetFloatVar(char *pVar); + void SetFloatVar(char *pVar, float fVal); + + // misc access functions + + LTBOOL ScreenFlash() {return GetBoolVar("ScreenFlash");} + + // control access functions + + LTBOOL MouseLook() { return GetBoolVar("MouseLook"); } + LTBOOL MouseInvertY() { return GetBoolVar("MouseInvertY");} + void SetMouseLook(LTBOOL bVal) { SetBoolVar("MouseLook",bVal); } + void SetMouseInvertY(LTBOOL bVal) { SetBoolVar("MouseInvertY",bVal); } + + float MouseSensitivity() { return GetFloatVar("MouseSensitivity");} + LTBOOL UseJoystick() { return GetBoolVar("UseJoystick"); } + LTBOOL Lookspring() { return GetBoolVar("LookSpring"); } + + // sound access functions + + LTBOOL MusicEnabled() { return GetBoolVar("MusicEnable"); } + float MusicVolume() { return GetFloatVar("MusicVolume");} + LTBOOL SoundEnabled() { return GetBoolVar("SoundEnable"); } + float SoundVolume() { return GetFloatVar("SoundVolume");} + float SoundChannels() { return GetFloatVar("SoundChannels");} + LTBOOL Sound16Bit() { return GetBoolVar("Sound16Bit"); } + float WeaponsMultiplier() { return GetFloatVar( "WeaponsSoundMultiplier" ); } + float SpeechMultiplier() { return GetFloatVar( "SpeechSoundMultiplier" ); } + float DefaultMultiplier() { return GetFloatVar( "DefaultSoundMultiplier" ); } + + + // low-level detail access functions + + float ModelLOD() { return GetFloatVar("ModelLOD");} + uint8 Shadows() { return GetByteVar("MaxModelShadows"); } + float NumBulletHoles() { return GetFloatVar("BulletHoles");} + float TextureDetailSetting() { return GetFloatVar("TextureDetail");} + float DynamicLightSetting() { return GetFloatVar("DynamicLightSetting");} + LTBOOL LightMap() { return GetBoolVar("LightMap");} + uint8 SpecialFXSetting() { return GetConsoleInt("PerformanceLevel",1); } + LTBOOL EnvironmentMapping() { return GetBoolVar("EnvMapEnable"); } + LTBOOL ModelFullBrights() { return GetBoolVar("ModelFullbrite"); } + LTBOOL CloudMapLight() { return GetBoolVar("CloudMapLight"); } + uint8 PlayerViewWeaponSetting() { return GetByteVar("PVWeapons"); } + LTBOOL PolyGrids() { return GetBoolVar("PolyGrids"); } + LTBOOL DrawSky() { return GetBoolVar("DrawSky"); } + LTBOOL FogEnable() { return GetBoolVar("FogEnable"); } + + // settings implementation functions + + void ImplementMusicSource(); + void ImplementMusicVolume(); + void ImplementSoundVolume(); + void ImplementMouseSensitivity(); + + +private: + + ILTClient* m_pClientDE; + CGameClientShell* m_pClientShell; + RMode CurrentRenderer; + + + HCONSOLEVAR m_hTmpVar; + char m_tmpStr[128]; + + +}; + +inline LTBOOL CGameSettings::GetBoolVar(char *pVar) +{ + m_hTmpVar = m_pClientDE->GetConsoleVar(pVar); + if (m_hTmpVar) + return (LTBOOL)m_pClientDE->GetVarValueFloat(m_hTmpVar); + else + return LTFALSE; +}; + + +inline void CGameSettings::SetBoolVar(char *pVar, LTBOOL bVal) +{ + sprintf (m_tmpStr, "+%s %d", pVar, bVal ? 1 : 0); + m_pClientDE->RunConsoleString (m_tmpStr); +}; + +inline uint8 CGameSettings::GetByteVar(char *pVar) +{ + m_hTmpVar = m_pClientDE->GetConsoleVar(pVar); + if (m_hTmpVar) + return (uint8)m_pClientDE->GetVarValueFloat(m_hTmpVar); + else + return 0; +}; + +inline void CGameSettings::SetByteVar(char *pVar, uint8 nVal) +{ + sprintf (m_tmpStr, "+%s %d", pVar, nVal); + m_pClientDE->RunConsoleString (m_tmpStr); +} + + +inline float CGameSettings::GetFloatVar(char *pVar) +{ + m_hTmpVar = m_pClientDE->GetConsoleVar(pVar); + if (m_hTmpVar) + return m_pClientDE->GetVarValueFloat(m_hTmpVar); + else + return 0.0f; +}; +inline void CGameSettings::SetFloatVar(char *pVar, float fVal) +{ + sprintf (m_tmpStr, "+%s %f", pVar, fVal); + m_pClientDE->RunConsoleString (m_tmpStr); +} + + +#endif //__GAMESETTINGS_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/GibFX.cpp b/Jack/ClientShellDLL/GibFX.cpp new file mode 100644 index 00000000..9873c3b1 --- /dev/null +++ b/Jack/ClientShellDLL/GibFX.cpp @@ -0,0 +1,941 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GibFX.cpp +// +// PURPOSE : Gib - Implementation +// +// CREATED : 6/15/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "GibFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "SurfaceMgr.h" +#include "GameClientShell.h" +#include "ParticleSystemFX.h" +#include "SFXMsgIds.h" +#include "ParticleTrailFX.h" +#include "ParticleExplosionFX.h" +#include "ParticleShowerFX.h" +#include "BaseScaleFX.h" +#include "DebrisMgr.h" +#include "SmokeFX.h" +#include "WeaponFXTypes.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CGibFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + GIBCREATESTRUCT* pGib = (GIBCREATESTRUCT*)psfxCreateStruct; + m_rRot = pGib->rRot; + VEC_COPY(m_vPos, pGib->vPos); + VEC_COPY(m_vMinVel, pGib->vMinVel); + VEC_COPY(m_vMaxVel, pGib->vMaxVel); + m_fLifeTime = pGib->fLifeTime; + m_fFadeTime = pGib->fFadeTime; + m_nGibFlags = pGib->nGibFlags; + m_bRotate = pGib->bRotate; + m_eCode = (ContainerCode) pGib->nCode; + m_eModelId = pGib->eModelId; + m_nNumGibs = pGib->nNumGibs; + m_bSubGibs = pGib->bSubGibs; + m_bBloodSplats = pGib->bBloodSplats; + + for (int i=0; i < m_nNumGibs; i++) + { + m_eGibTypes[i] = pGib->eGibTypes[i]; + } + + m_nNumRandomGibs = GetRandom(3, 6); + m_nNumGibs += m_nNumRandomGibs; + if (m_nNumGibs > MAX_GIB) m_nNumGibs = MAX_GIB; + + + if (m_bRotate) + { + LTFLOAT fVal = GetRandom(MATH_CIRCLE/4.0f, MATH_CIRCLE/2.0f); + m_fPitchVel = GetRandom(-fVal, fVal); + m_fYawVel = GetRandom(-fVal, fVal); + m_fRollVel = GetRandom(-fVal, fVal); + } + + m_eModelType = g_pModelButeMgr->GetModelType(m_eModelId); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateObject +// +// PURPOSE: Create object associated the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CGibFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + // Initialize the Gib velocity ranges based on our rotation... + + LTVector vVelMin, vVelMax, vTemp, vU, vR, vF; + VEC_SET(vVelMin, 1.0f, 1.0f, 1.0f); + VEC_SET(vVelMax, 1.0f, 1.0f, 1.0f); + + vU = m_rRot.Up(); + vR = m_rRot.Right(); + vF = m_rRot.Forward(); + + if (vF.y <= -0.95f || vF.y >= 0.95f) + { + vF.y = vF.y > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.x <= -0.95f || vF.x >= 0.95f) + { + vF.x = vF.x > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 0.0f, 1.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.z <= -0.95f || vF.z >= 0.95f) + { + vF.z = vF.z > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 1.0f, 0.0f); + } + + VEC_MULSCALAR(vVelMin, vF, m_vMinVel.y); + VEC_MULSCALAR(vVelMax, vF, m_vMaxVel.y); + + VEC_MULSCALAR(vTemp, vR, m_vMinVel.x); + VEC_ADD(vVelMin, vVelMin, vTemp); + + VEC_MULSCALAR(vTemp, vR, m_vMaxVel.x); + VEC_ADD(vVelMax, vVelMax, vTemp); + + VEC_MULSCALAR(vTemp, vU, m_vMinVel.z); + VEC_ADD(vVelMin, vVelMin, vTemp); + + VEC_MULSCALAR(vTemp, vU, m_vMaxVel.z); + VEC_ADD(vVelMax, vVelMax, vTemp); + + + // Initialize our emitters... + + LTVector vVel; + for (int i=0; i < m_nNumGibs; i++) + { + if (i < m_nNumGibs - m_nNumRandomGibs) + { + m_hGib[i] = CreateGib(m_eGibTypes[i]); + } + else + { + m_hGib[i] = CreateRandomGib(); + } + + m_fGibLife[i] = GetRandom(m_fLifeTime, m_fLifeTime * 2.0f); + + m_pGibTrail[i] = CreateGibTrail(m_hGib[i]); + + m_ActiveEmitters[i] = LTTRUE; + m_BounceCount[i] = GetRandom(2, 5); + + VEC_SET(vVel, GetRandom(vVelMin.x, vVelMax.x), + 50.0f + GetRandom(vVelMin.y, vVelMax.y), + GetRandom(vVelMin.z, vVelMax.z)); + + InitMovingObject(&(m_Emitters[i]), m_vPos, vVel); + m_Emitters[i].m_dwPhysicsFlags |= m_nGibFlags; + } + + + // Create a big burst of blood... + + if ( m_eModelType == eModelTypeHuman ) + { + //CreateBloodSpray(); + } + + + // Play die sound... + + char* pSound = GetGibDieSound(); + if (pSound) + { + g_pClientSoundMgr->PlaySoundFromPos(m_vPos, pSound, 1000.0f, + SOUNDPRIORITY_MISC_LOW); + } + + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::Update +// +// PURPOSE: Update the Gib +// +// ----------------------------------------------------------------------- // + +LTBOOL CGibFX::Update() +{ + if (!m_pClientDE) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + m_fLastTime = fTime; + } + + + // Check to see if we should start fading the Gib... + + if (fTime > m_fStartTime + m_fFadeTime) + { + int i; + for (i=0; i < m_nNumGibs; i++) + { + LTFLOAT fEndTime = m_fStartTime + m_fGibLife[i]; + + if (fTime > fEndTime) + { + if (OkToRemoveGib(m_hGib[i])) + { + if (m_hGib[i]) + { + m_pClientDE->RemoveObject(m_hGib[i]); + m_hGib[i] = LTNULL; + } + } + } + } + + // See if all the gibs have been removed or not... + + for (i=0; i < m_nNumGibs; i++) + { + if (m_hGib[i]) break; + } + + // All gibs have been removed so remove us... + + if (i == m_nNumGibs) + { + RemoveAllFX(); + return LTFALSE; + } + +// #define FADING_GIBS +#ifdef FADING_GIBS + LTFLOAT fScale = (fEndTime - fTime) / (m_fLifeTime - m_fFadeTime); + + LTFLOAT r, g, b, a; + + for (int i=0; i < m_nNumGibs; i++) + { + if (m_hGib[i]) + { + m_pClientDE->GetObjectColor(m_hGib[i], &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hGib[i], r, g, b, fScale); + } + } +#endif + } + + + // Loop over our list of emitters, updating the position of each + + for (int i=0; i < m_nNumGibs; i++) + { + if (m_ActiveEmitters[i]) + { + LTBOOL bBounced = LTFALSE; + if (bBounced = UpdateEmitter(&m_Emitters[i])) + { + HandleBounce(i); + } + + UpdateGib(i, bBounced); + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::UpdateEmitter +// +// PURPOSE: Update emitter position +// +// ----------------------------------------------------------------------- // + +LTBOOL CGibFX::UpdateEmitter(MovingObject* pObject) +{ + if (!m_pClientDE || !pObject || pObject->m_dwPhysicsFlags & MO_RESTING) return LTFALSE; + + LTBOOL bRet = LTFALSE; + + LTVector vNewPos; + if (UpdateMovingObject(LTNULL, pObject, vNewPos)) + { + LTBOOL bBouncedOnGround = LTFALSE; + uint32 dwFlags = (INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID); + + bRet = BounceMovingObject(LTNULL, pObject, vNewPos, &m_info, + dwFlags, true, bBouncedOnGround); + + pObject->m_vLastPos = pObject->m_vPos; + pObject->m_vPos = vNewPos; + + if (g_pCommonLT->GetPointStatus(&vNewPos) == LT_OUTSIDE) + { + pObject->m_dwPhysicsFlags |= MO_RESTING; + pObject->m_vPos = pObject->m_vLastPos; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::UpdateGib +// +// PURPOSE: Update gib pos/rot +// +// ----------------------------------------------------------------------- // + +void CGibFX::UpdateGib(int nIndex, LTBOOL bBounced) +{ + if (nIndex < 0 || nIndex >= m_nNumGibs) return; + + if (m_Emitters[nIndex].m_dwPhysicsFlags & MO_RESTING) + { + m_ActiveEmitters[nIndex] = LTFALSE; + if (m_pGibTrail[nIndex]) + { + debug_delete(m_pGibTrail[nIndex]); + m_pGibTrail[nIndex] = LTNULL; + } + + if (m_hGib[nIndex]) + { + if (m_bRotate) + { + LTRotation rRot; + rRot.Rotate(rRot.Up(), m_fYaw); + rRot.Rotate(rRot.Forward(), m_fRoll); + g_pLTClient->SetObjectRotation(m_hGib[nIndex], &rRot); + } + + // m_pClientDE->SetObjectPos(m_hGib[nIndex], &(m_info.m_Point)); + } + } + else if (m_hGib[nIndex]) + { + g_pLTClient->SetObjectPos(m_hGib[nIndex], &(m_Emitters[nIndex].m_vPos)); + + if (m_bRotate) + { + if (bBounced) + { + // Adjust due to the bounce... + + LTFLOAT fVal = GetRandom(MATH_CIRCLE/4.0f, MATH_CIRCLE/2.0f); + m_fPitchVel = GetRandom(-fVal, fVal); + m_fYawVel = GetRandom(-fVal, fVal); + m_fRollVel = GetRandom(-fVal, fVal); + } + + if (m_fPitchVel != 0 || m_fYawVel != 0 || m_fRollVel) + { + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + m_fPitch += m_fPitchVel * fDeltaTime; + m_fYaw += m_fYawVel * fDeltaTime; + m_fRoll += m_fRollVel * fDeltaTime; + + LTRotation rRot(m_fPitch, m_fYaw, m_fRoll); + g_pLTClient->SetObjectRotation(m_hGib[nIndex], &rRot); + } + } + } + + if (m_pGibTrail[nIndex]) + { + m_pGibTrail[nIndex]->Update(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateGib +// +// PURPOSE: Create a Gib model +// +// ----------------------------------------------------------------------- // + +HLOCALOBJ CGibFX::CreateGib(GibType eType) +{ + // TODO: REIMPLEMENT GIB LOOKUP IN MODELBUTEMGR + + char* pFilename = LTNULL;//GetGibModel(m_eModel, eType); + char* pSkin = LTNULL;//GetGibSkin(m_eModel, eType); + + if (!pFilename) return LTNULL; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_MODEL; + SAFE_STRCPY(createStruct.m_Filename, pFilename); + if (pSkin) SAFE_STRCPY(createStruct.m_SkinName, pSkin); + createStruct.m_Flags = FLAG_VISIBLE; // | FLAG_NOLIGHT; + VEC_COPY(createStruct.m_Pos, m_vPos); + + HLOCALOBJ hObj = m_pClientDE->CreateObject(&createStruct); + + if (hObj) + { + m_pClientDE->SetModelAnimation(hObj, m_pClientDE->GetAnimIndex(hObj, "DEAD1")); + } + + return hObj; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateRandomGib +// +// PURPOSE: Create a random gib model +// +// ----------------------------------------------------------------------- // + +HLOCALOBJ CGibFX::CreateRandomGib() +{ + return LTNULL; +/* + DebrisType eType = DBT_GENERIC; + switch (g_pModelButeMgr->GetModelType(m_eModelId)) + { + case eModelTypeHuman: + eType = DBT_HUMAN_PARTS; + break; + case eModelTypeVehicle: + eType = DBT_VEHICLE_PARTS; + break; + default : break; + } + + LTVector vScale(1.0f, 1.0f, 1.0f); + + char* pFilename = GetDebrisModel(eType, vScale); + char* pSkin = GetDebrisSkin(eType); + if (!pFilename) return LTNULL; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_MODEL; + SAFE_STRCPY(createStruct.m_Filename, pFilename); + if (pSkin) SAFE_STRCPY(createStruct.m_SkinName, pSkin); + createStruct.m_Flags = FLAG_VISIBLE; // | FLAG_NOLIGHT; + VEC_COPY(createStruct.m_Pos, m_vPos); + + HLOCALOBJ hObj = m_pClientDE->CreateObject(&createStruct); + + if (hObj) + { + m_pClientDE->SetObjectScale(hObj, &vScale); + } + + return hObj; +*/ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateGibTrail +// +// PURPOSE: Create a blood/smoke gib trail fx +// +// ----------------------------------------------------------------------- // + +CSpecialFX* CGibFX::CreateGibTrail(HLOCALOBJ hObj) +{ + if (!hObj || !m_pClientDE) return LTNULL; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTNULL; + + uint8 nDetailLevel = pSettings->SpecialFXSetting(); + if (nDetailLevel == RS_LOW) return LTNULL; + + + PTCREATESTRUCT pt; + pt.hServerObj = hObj; + pt.nType = (uint8) (m_eModelType == eModelTypeHuman ? PT_BLOOD : PT_GIBSMOKE); + + CSpecialFX* pSFX = debug_new(CParticleTrailFX); + if (!pSFX) return LTNULL; + + pSFX->Init(&pt); + pSFX->CreateObject(m_pClientDE); + + return pSFX; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::GetBounceSound +// +// PURPOSE: Get a gib bounce sound +// +// ----------------------------------------------------------------------- // + +char* CGibFX::GetBounceSound() +{ + char* pSound = LTNULL; + +/* + switch (m_eModelType) + { + case eModelTypeHuman: + { + pSound = GetDebrisBounceSound(DBT_HUMAN_PARTS); + } + break; + + case eModelTypeVehicle: + { + pSound = GetDebrisBounceSound(DBT_VEHICLE_PARTS); + } + break; + + case eModelTypeGenericProp: + default : + { + pSound = GetDebrisBounceSound(DBT_GENERIC); + } + break; + } +*/ + return pSound; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::GetGibDieSound +// +// PURPOSE: Get the sound when a gib dies +// +// ----------------------------------------------------------------------- // + +char* CGibFX::GetGibDieSound() +{ + char* pSound = LTNULL; + +/* + switch (m_eModelType) + { + case eModelTypeHuman: + { + pSound = GetDebrisExplodeSound(DBT_HUMAN_PARTS); + } + break; + + case eModelTypeVehicle: + { + pSound = GetDebrisExplodeSound(DBT_VEHICLE_PARTS); + } + break; + + case eModelTypeGenericProp: + default : + { + pSound = GetDebrisExplodeSound(DBT_GENERIC); + } + break; + } +*/ + return pSound; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::HandleBounce +// +// PURPOSE: Handle gib bouncing +// +// ----------------------------------------------------------------------- // + +void CGibFX::HandleBounce(int nIndex) +{ + if (nIndex < 0 || nIndex >= m_nNumGibs) return; + + // Play a bounce sound if the gib isn't in liquid... + + if (!(m_Emitters[nIndex].m_dwPhysicsFlags & MO_LIQUID) && (m_hGib[nIndex])) + { + if (m_bPlayBounceSound && GetRandom(1, 4) != 1) + { + char* pSound = GetBounceSound(); + + // Play appropriate sound... + + if (pSound) + { + g_pClientSoundMgr->PlaySoundFromPos(m_Emitters[nIndex].m_vPos, + pSound, 1000.0f, SOUNDPRIORITY_MISC_LOW); + } + } + } + + + // See if we're resting... + + m_BounceCount[nIndex]--; + if (m_BounceCount[nIndex] <= 0) + { + m_Emitters[nIndex].m_dwPhysicsFlags |= MO_RESTING; + if (m_bSubGibs) HandleDoneBouncing(nIndex); + } + + + // Add a blood splat... + + if (m_bBloodSplats) + { + // Don't add blood splats on the sky... + + uint32 dwTextureFlags; + m_pClientDE->GetPolyTextureFlags(m_info.m_hPoly, &dwTextureFlags); + SurfaceType eType = (SurfaceType)dwTextureFlags; + if (eType == ST_SKY) return; + + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + BSCREATESTRUCT sc; + + sc.rRot = LTRotation(m_info.m_Plane.m_Normal, LTVector(0.0f, 1.0f, 0.0f)); + + sc.vPos = m_info.m_Point + (LTVector)m_info.m_Plane.m_Normal * 2.0f; // Off the wall/floor a bit + sc.vVel.Init(); + VEC_SET(sc.vInitialScale, GetRandom(0.3f, 0.5f), GetRandom(0.3f, 0.5f), 1.0f); + VEC_SET(sc.vFinalScale, GetRandom(0.8f, 1.0f), GetRandom(0.8f, 1.0f), 1.0f); + + sc.dwFlags = FLAG_VISIBLE | FLAG_ROTATEABLESPRITE | FLAG_NOLIGHT; + sc.fLifeTime = m_fLifeTime + 10.0f; + sc.fInitialAlpha = 1.0f; + sc.fFinalAlpha = 0.0f; + sc.nType = OT_SPRITE; + + char* pBloodFiles[] = + { + "Sprites\\BloodSplat1.spr", + "Sprites\\BloodSplat2.spr", + "Sprites\\BloodSplat3.spr", + "Sprites\\BloodSplat4.spr" + }; + + sc.pFilename = pBloodFiles[GetRandom(0,3)]; + + + CSpecialFX* pFX = psfxMgr->CreateSFX(SFX_SCALE_ID, &sc); + if (pFX) pFX->Update(); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::HandleDoneBouncing +// +// PURPOSE: Handle gib done bouncing +// +// ----------------------------------------------------------------------- // + +void CGibFX::HandleDoneBouncing(int nIndex) +{ + if (nIndex < 0 || nIndex >= m_nNumGibs) return; + + switch ( g_pModelButeMgr->GetModelType(m_eModelId) ) + { + case eModelTypeVehicle: + CreateLingeringSmoke(nIndex); + break; + + case eModelTypeHuman: + CreateMiniBloodExplosion(nIndex); + break; + + default : break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateLingeringSmoke +// +// PURPOSE: Create a bit o smoke... +// +// ----------------------------------------------------------------------- // + +void CGibFX::CreateLingeringSmoke(int nIndex) +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return; + + uint8 nDetailLevel = pSettings->SpecialFXSetting(); + if (nDetailLevel == RS_LOW) return; + + SMCREATESTRUCT sm; + + char* pTexture = "Sprites\\SmokeTest.spr"; + + VEC_SET(sm.vColor1, 100.0f, 100.0f, 100.0f); + VEC_SET(sm.vColor2, 125.0f, 125.0f, 125.0f); + VEC_SET(sm.vMinDriftVel, -10.0f, 25.0f, -10.0f); + VEC_SET(sm.vMaxDriftVel, 10.0f, 50.0f, 10.0f); + + LTFLOAT fVolumeRadius = 10.0f; + LTFLOAT fLifeTime = GetRandom(m_fLifeTime * 0.75f, m_fLifeTime); + LTFLOAT fRadius = 1500; + LTFLOAT fParticleCreateDelta = 0.1f; + LTFLOAT fMinParticleLife = 1.0f; + LTFLOAT fMaxParticleLife = 5.0f; + uint8 nNumParticles = 3; + LTBOOL bIgnoreWind = LTFALSE; + + if (IsLiquid(m_eCode)) + { + GetLiquidColorRange(m_eCode, &sm.vColor1, &sm.vColor2); + pTexture = DEFAULT_BUBBLE_TEXTURE; + fRadius = 750.0f; + bIgnoreWind = LTTRUE; + fMinParticleLife = 1.0f; + fMaxParticleLife = 1.5f; + } + + sm.vPos = m_Emitters[nIndex].m_vPos; + sm.hServerObj = m_hGib[nIndex]; + sm.fVolumeRadius = fVolumeRadius; + sm.fLifeTime = fLifeTime; + sm.fRadius = fRadius; + sm.fParticleCreateDelta = fParticleCreateDelta; + sm.fMinParticleLife = fMinParticleLife; + sm.fMaxParticleLife = fMaxParticleLife; + sm.nNumParticles = nNumParticles; + sm.bIgnoreWind = bIgnoreWind; + sm.hstrTexture = m_pClientDE->CreateString(pTexture); + + psfxMgr->CreateSFX(SFX_SMOKE_ID, &sm); + + m_pClientDE->FreeString(sm.hstrTexture); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateMiniBloodExplosion +// +// PURPOSE: Crate a mini blood explosion effect +// +// ----------------------------------------------------------------------- // + +void CGibFX::CreateMiniBloodExplosion(int nIndex) +{ + // Add a mini blood explosion... + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return; + + uint8 nDetailLevel = pSettings->SpecialFXSetting(); + if (nDetailLevel == RS_LOW) return; + + char* szBlood[2] = { "SpecialFX\\ParticleTextures\\Blood_1.dtx", + "SpecialFX\\ParticleTextures\\Blood_2.dtx" }; + + PARTICLESHOWERCREATESTRUCT ps; + + ps.vPos = m_Emitters[nIndex].m_vPos; + ps.vPos.y += 30.0f; + + ps.vDir.Init(0, 100, 0); + VEC_SET(ps.vColor1, 200.0f, 200.0f, 200.0f); + VEC_SET(ps.vColor2, 255.0f, 255.0f, 255.0f); + ps.pTexture = szBlood[GetRandom(0,1)];; + ps.nParticles = 50; + ps.fDuration = 1.0f; + ps.fEmissionRadius = 0.3f; + ps.fRadius = 800.0f; + ps.fGravity = PSFX_DEFAULT_GRAVITY; + + if (IsLiquid(m_eCode)) + { + ps.vDir *= 3.0f; + ps.fEmissionRadius = 0.2f; + ps.fRadius = 700.0f; + } + + psfxMgr->CreateSFX(SFX_PARTICLESHOWER_ID, &ps); + + // Play appropriate sound... + + char* pSound = GetGibDieSound(); + + if (pSound) + { + g_pClientSoundMgr->PlaySoundFromPos(ps.vPos, pSound, 300.0f, + SOUNDPRIORITY_MISC_LOW); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::CreateBloodSpray +// +// PURPOSE: Create a spray of blood +// +// ----------------------------------------------------------------------- // + +void CGibFX::CreateBloodSpray() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + BSCREATESTRUCT sc; + + VEC_COPY(sc.vPos, m_vPos); + sc.vPos.y += 30.0f; + VEC_SET(sc.vVel, 0.0f, -20.0f, 0.0f); + VEC_SET(sc.vInitialScale, GetRandom(2.0f, 4.0f), GetRandom(2.0f, 4.0f), 1.0f); + VEC_SET(sc.vFinalScale, GetRandom(0.5f, 0.8f), GetRandom(0.5f, 0.8f), 1.0f); + + sc.dwFlags = FLAG_VISIBLE | FLAG_SPRITEBIAS | FLAG_NOLIGHT; + sc.fLifeTime = 0.5f; + sc.fInitialAlpha = 1.0f; + sc.fFinalAlpha = 0.0f; + sc.nType = OT_SPRITE; + + char* pBloodFiles[] = + { + "Sprites\\BloodSplat1.spr", + "Sprites\\BloodSplat2.spr", + "Sprites\\BloodSplat3.spr", + "Sprites\\BloodSplat4.spr" + }; + + sc.pFilename = pBloodFiles[GetRandom(0,3)]; + + + CSpecialFX* pFX = psfxMgr->CreateSFX(SFX_SCALE_ID, &sc); + if (pFX) pFX->Update(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::RemoveAllFX +// +// PURPOSE: Remove all the fx +// +// ----------------------------------------------------------------------- // + +void CGibFX::RemoveAllFX() +{ + if (!m_pClientDE) return; + + for (int i=0; i < m_nNumGibs; i++) + { + if (m_hGib[i]) + { + m_pClientDE->RemoveObject(m_hGib[i]); + m_hGib[i] = LTNULL; + } + if (m_pGibTrail[i]) + { + debug_delete(m_pGibTrail[i]); + m_pGibTrail[i] = LTNULL; + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGibFX::OkToRemoveGib +// +// PURPOSE: See if this particular model can be removed. +// +// ----------------------------------------------------------------------- // + +LTBOOL CGibFX::OkToRemoveGib(HLOCALOBJ hGib) +{ + if (!m_pClientDE || !g_pGameClientShell || !hGib) return LTTRUE; + + + // The only constraint is that the client isn't currently looking + // at the model... + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return LTTRUE; + + LTVector vPos, vCamPos; + g_pLTClient->GetObjectPos(hGib, &vPos); + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + + + // Determine if the client can see us... + + LTVector vDir; + vDir = vPos - vCamPos; + vDir.Normalize(); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + if (vDir.Dot(rRot.Forward()) <= 0.0f) return LTTRUE; + + + // Client is looking our way, don't remove it yet... + + return LTFALSE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/GibFX.h b/Jack/ClientShellDLL/GibFX.h new file mode 100644 index 00000000..99d40e23 --- /dev/null +++ b/Jack/ClientShellDLL/GibFX.h @@ -0,0 +1,187 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GibFX.h +// +// PURPOSE : Gib - Definition +// +// CREATED : 6/15/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __GIB_FX_H__ +#define __GIB_FX_H__ + +#include "SpecialFX.h" +#include "client_physics.h" +#include "ModelButeMgr.h" +#include "GibTypes.h" +#include "ContainerCodes.h" + +#define MAX_GIB 20 + +struct GIBCREATESTRUCT : public SFXCREATESTRUCT +{ + GIBCREATESTRUCT(); + + LTRotation rRot; + LTVector vPos; + LTVector vMinVel; + LTVector vMaxVel; + LTFLOAT fLifeTime; + LTFLOAT fFadeTime; + uint8 nGibFlags; + uint8 nCode; + LTBOOL bRotate; + uint8 nSize; + ModelId eModelId; + LTBOOL bSubGibs; + LTBOOL bBloodSplats; + uint8 nNumGibs; + GibType eGibTypes[MAX_GIB]; +}; + +inline GIBCREATESTRUCT::GIBCREATESTRUCT() +{ + rRot.Init(); + vPos.Init(); + vMinVel.Init(); + vMaxVel.Init(); + fLifeTime = 0.0f; + fFadeTime = 0.0f; + nGibFlags = 0; + nCode = 0; + nSize = 0; + nNumGibs = 0; + eModelId = eModelIdInvalid; + bSubGibs = LTFALSE; + bBloodSplats = LTFALSE; + bRotate = LTFALSE; + + for (int i=0; i < MAX_GIB; i++) + { + eGibTypes[i] = GT_FIRST; + } +} + +class CGibFX : public CSpecialFX +{ + public : + + CGibFX() : CSpecialFX() + { + VEC_INIT(m_vMinVel); + VEC_INIT(m_vMaxVel); + + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + + m_bFirstUpdate = LTTRUE; + m_fLastTime = -1.0f; + m_fStartTime = -1.0f; + + memset(m_Emitters, 0, sizeof(MovingObject)*MAX_GIB); + memset(m_ActiveEmitters, 0, sizeof(LTBOOL)*MAX_GIB); + memset(m_BounceCount, 0, sizeof(uint8)*MAX_GIB); + memset(m_hGib, 0, sizeof(HOBJECT)*MAX_GIB); + memset(m_pGibTrail, 0, sizeof(CSpecialFX*)*MAX_GIB); + memset(m_eGibTypes, 0, sizeof(GibType)*MAX_GIB); + memset(m_fGibLife, 0, sizeof(LTFLOAT)*MAX_GIB); + m_nNumGibs = 0; + m_nGibFlags = 0; + m_bSubGibs = LTFALSE; + m_bBloodSplats = LTFALSE; + + m_nNumRandomGibs = 2; + + m_eCode = CC_NO_CONTAINER; + + m_eModelId = eModelIdInvalid; + + m_bCurGibOnGround = LTFALSE; + m_bPlayBounceSound = LTTRUE; + + m_bRotate = LTFALSE; + m_fPitch = 0.0f; + m_fYaw = 0.0f; + m_fPitchVel = 0.0f; + m_fYawVel = 0.0f; + } + + ~CGibFX() + { + RemoveAllFX(); + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_GIB_ID; } + + private : + + LTRotation m_rRot; // Direction of velocities + LTVector m_vPos; // Where Gib starts + + LTVector m_vMinVel; // Minimum emitter velocity + LTVector m_vMaxVel; // Maximum emitter velocity + + LTFLOAT m_fFadeTime; // When system should start to fade + LTFLOAT m_fLifeTime; // How long system stays around + LTFLOAT m_fStartTime; // When did we start this crazy thing + + LTFLOAT m_fLastTime; // Last time we created some particles + LTBOOL m_bFirstUpdate; // First update + + ContainerCode m_eCode; // Container code + + ModelId m_eModelId; // Model + ModelType m_eModelType; // Type of model gibbed + + MovingObject m_Emitters[MAX_GIB]; // Gib Emitters + uint8 m_nNumGibs; // Num in array + uint8 m_nGibFlags; // MoveObject flags + LTBOOL m_ActiveEmitters[MAX_GIB]; // Active? + uint8 m_BounceCount[MAX_GIB]; // Number of bounces + HLOCALOBJ m_hGib[MAX_GIB]; // Gib models + CSpecialFX* m_pGibTrail[MAX_GIB]; // Blood trails + GibType m_eGibTypes[MAX_GIB]; // Types of gibs + LTFLOAT m_fGibLife[MAX_GIB]; // Life time of the gib + uint8 m_nNumRandomGibs; // Num random gibs + + LTBOOL m_bCurGibOnGround; + LTBOOL m_bPlayBounceSound; + LTBOOL m_bSubGibs; + LTBOOL m_bBloodSplats; + + // emitter rotation stuff... + + LTBOOL m_bRotate; + LTFLOAT m_fPitch; + LTFLOAT m_fYaw; + LTFLOAT m_fRoll; + LTFLOAT m_fPitchVel; + LTFLOAT m_fYawVel; + LTFLOAT m_fRollVel; + + ClientIntersectInfo m_info; // Last bounce info + + LTBOOL UpdateEmitter(MovingObject* pObject); + void UpdateGib(int nIndex, LTBOOL bBounced); + HLOCALOBJ CreateGib(GibType eType); + HLOCALOBJ CreateRandomGib(); + CSpecialFX* CreateGibTrail(HLOCALOBJ hObj); + + void CreateBloodSpray(); + void CreateMiniBloodExplosion(int nIndex); + void CreateLingeringSmoke(int nIndex); + void HandleBounce(int nIndex); + void HandleDoneBouncing(int nIndex); + char* GetBounceSound(); + char* GetGibDieSound(); + + void RemoveAllFX(); + LTBOOL OkToRemoveGib(HLOCALOBJ hGib); +}; + +#endif // __GIB_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/GlobalClientMgr.cpp b/Jack/ClientShellDLL/GlobalClientMgr.cpp new file mode 100644 index 00000000..dd260a62 --- /dev/null +++ b/Jack/ClientShellDLL/GlobalClientMgr.cpp @@ -0,0 +1,265 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GlobalClientMgr.cpp +// +// PURPOSE : Implementations of client global definitions +// +// CREATED : 7/07/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "GlobalClientMgr.h" +#include "ClientButeMgr.h" +#include "ClientSoundMgr.h" +#include "KeyMgr.h" +#include "SearchItemMgr.h" +#include "PopupMgr.h" +#include "RadarTypeMgr.h" +#include "ActivateTypeMgr.h" +#include "TriggerTypeMgr.h" +#include "VehicleButeMgr.h" +#include "ChassisButeMgr.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGlobalClientMgr::CGlobalClientMgr() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CGlobalClientMgr::CGlobalClientMgr( ) +{ + m_pClientButeMgr = NULL; + m_pClientSoundMgr = NULL; + m_pKeyMgr = NULL; + m_pSearchItemMgr = NULL; + m_pPopupMgr = NULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGlobalClientMgr::Init() +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +LTBOOL CGlobalClientMgr::Init() +{ + char errorBuf[256]; + bool bOk = true; + + // Start fresh. + Term( ); + + if (!CGlobalMgr::Init()) + return LTFALSE; + + if( bOk ) + { + m_pClientSoundMgr = debug_new( CClientSoundMgr ); + if( !m_pClientSoundMgr || !m_pClientSoundMgr->Init()) + { + bOk = false; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize ClientSoundMgr. Make sure the %s file is valid!", CSNDMGR_DEFAULT_FILE); + } + } + + if( bOk ) + { + m_pClientButeMgr = debug_new( CClientButeMgr ); + if( !m_pClientButeMgr || !m_pClientButeMgr->Init()) + { + bOk = false; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize ClientButeMgr. Make sure the %s file is valid!", CBMGR_DEFAULT_FILE); + } + } + + if( bOk ) + { + m_pKeyMgr = debug_new( CKeyMgr ); + if( !m_pKeyMgr || !m_pKeyMgr->Init()) + { + bOk = false; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize CKeyMgr." ); + } + } + + if( bOk ) + { + m_pSearchItemMgr = debug_new( CSearchItemMgr ); + if( !m_pSearchItemMgr || !m_pSearchItemMgr->Init()) + { + bOk = false; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize CSearchItemMgr." ); + } + } + + if( bOk ) + { + m_pPopupMgr = debug_new( CPopupMgr ); + if( !m_pPopupMgr || !m_pPopupMgr->Init()) + { + bOk = false; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize CPopupMgr." ); + } + } + + if( bOk ) + { + if( g_pGameClientShell->ShouldUseRadar() ) + { + // Get the singleton instance of the radar type mgr and initialize it... + if( !g_pRadarTypeMgr ) + { + CRadarTypeMgr &RadarTypeMgr = CRadarTypeMgr::Instance(); + if( !RadarTypeMgr.Init() ) + { + ShutdownWithError( "RadarTypeMgr", RTMGR_DEFAULT_FILE ); + return LTFALSE; + } + } + } + + if( !g_pActivateTypeMgr ) + { + CActivateTypeMgr &ActivateTypeMgr = CActivateTypeMgr::Instance(); + if( !ActivateTypeMgr.Init() ) + { + ASSERT( !"ERROR in CGlobalClientMgr::Init() Couldn't initialize CActivateTypeMgr." ); + DebugCPrint(1, "ERROR in CGlobalClientMgr::Init()\nCouldn't initialize CActivateTypeMgr.\n\n" ); + } + } + + if( !g_pTriggerTypeMgr ) + { + CTriggerTypeMgr &TriggerTypeMgr = CTriggerTypeMgr::Instance(); + if( !TriggerTypeMgr.Init() ) + { + ASSERT( !"ERROR in CGlobalClienMgr::Init() Couldn't initialize CTriggerTypeMgr." ); + DebugCPrint(1, "ERROR in CGlobalClientMgr::Init()\nCouldn't initialize CTriggerTypeMgr.\n\n" ); + } + } + + if( !g_pVehicleButeMgr ) + { + CVehicleButeMgr &VehicleButeMgr = CVehicleButeMgr::Instance( ); + if( !VehicleButeMgr.Init( )) + { + ASSERT( !"ERROR in CGlobalClientMgr::Init() Couldn't initialize CVehicleButeMgr." ); + DebugCPrint(1, "ERROR in CGlobalClientMgr::Init()\nCouldn't initialize CVehicleButeMgr.\n\n" ); + } + } + + if( !ChassisButeMgr::Instance( ).IsInitialized( )) + { + if( !ChassisButeMgr::Instance( ).Init( )) + { + ASSERT( !"ERROR in CGlobalClientMgr::Init() Couldn't initialize ChassisButeMgr." ); + DebugCPrint(1, "ERROR in CGlobalClientMgr::Init()\nCouldn't initialize ChassisButeMgr.\n\n" ); + } + } + } + + if( !bOk ) + g_pLTClient->ShutdownWithMessage(errorBuf); + + return bOk; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGlobalClientMgr::~CGlobalClientMgr() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CGlobalClientMgr::~CGlobalClientMgr() +{ + Term( ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGlobalClientMgr::Term() +// +// PURPOSE: Terminates object. +// +// ----------------------------------------------------------------------- // + +void CGlobalClientMgr::Term() +{ + if( m_pClientButeMgr ) + { + debug_delete( m_pClientButeMgr ); + m_pClientButeMgr = NULL; + } + + if( m_pClientSoundMgr ) + { + debug_delete( m_pClientSoundMgr ); + m_pClientSoundMgr = NULL; + } + + if( m_pKeyMgr ) + { + debug_delete( m_pKeyMgr ); + m_pKeyMgr = NULL; + } + + if( m_pSearchItemMgr ) + { + debug_delete( m_pSearchItemMgr ); + m_pSearchItemMgr = NULL; + } + + if( m_pPopupMgr ) + { + debug_delete( m_pPopupMgr ); + m_pPopupMgr = NULL; + } + + if( g_pRadarTypeMgr ) + { + g_pRadarTypeMgr->Term(); + } + + if( g_pActivateTypeMgr ) + { + g_pActivateTypeMgr->Term(); + } + + if( g_pTriggerTypeMgr ) + { + g_pTriggerTypeMgr->Term(); + } + + if( g_pVehicleButeMgr ) + { + g_pVehicleButeMgr->Term( ); + } + + CGlobalMgr::Term( ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CGlobalClientMgr::ShutdownWithError() +// +// PURPOSE: Shutdown the client with an error +// +// ----------------------------------------------------------------------- // + +void CGlobalClientMgr::ShutdownWithError(char* pMgrName, char* pButeFilePath) +{ + char errorBuf[256]; + sprintf(errorBuf, "ERROR in CGlobalClientMgr::Init()\n\nCouldn't initialize %s. Make sure the %s file is valid!", pMgrName, pButeFilePath); + g_pLTClient->ShutdownWithMessage(errorBuf); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/GlobalClientMgr.h b/Jack/ClientShellDLL/GlobalClientMgr.h new file mode 100644 index 00000000..f3521d6c --- /dev/null +++ b/Jack/ClientShellDLL/GlobalClientMgr.h @@ -0,0 +1,49 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : GlobalClientMgr.h +// +// PURPOSE : Definition of client global definitions +// +// CREATED : 7/07/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __GLOBAL_CLIENT_MGR_H__ +#define __GLOBAL_CLIENT_MGR_H__ + +#include "GlobalMgr.h" + +class CClientButeMgr; +class CClientSoundMgr; +class CKeyMgr; +class CSearchItemMgr; +class CPopupMgr; + +class CGlobalClientMgr : public CGlobalMgr +{ + public : + + CGlobalClientMgr( ); + ~CGlobalClientMgr(); + + LTBOOL Init( ); + void Term( ); + + protected : + + virtual void ShutdownWithError(char* pMgrName, char* pButeFilePath); + + private : + + CClientButeMgr* m_pClientButeMgr; // Same as g_pClientButeMgr + CClientSoundMgr* m_pClientSoundMgr; // Same as g_pClientSoundMgr + + CKeyMgr* m_pKeyMgr; // stores key item data + CSearchItemMgr* m_pSearchItemMgr; // stores search item data + CPopupMgr* m_pPopupMgr; // stores popup item data + +}; + +#endif // __GLOBAL_CLIENT_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/GlobalsInit.cpp b/Jack/ClientShellDLL/GlobalsInit.cpp new file mode 100644 index 00000000..2b7dc6b6 --- /dev/null +++ b/Jack/ClientShellDLL/GlobalsInit.cpp @@ -0,0 +1,23 @@ +#include "stdafx.h" +#include "TO2GameClientShell.h" + +// These macros create a bunch of static variables whose constructors do initialization +// for hooking into the engine. They need to get created before all other static variables +// in the project. + +ILTModelClient* g_pILTModelClient = NULL; +define_holder(ILTModelClient, g_pILTModelClient); + +ILTDrawPrim* g_pDrawPrim; +define_holder(ILTDrawPrim,g_pDrawPrim); + +ILTFontManager* g_pFontManager; +define_holder(ILTFontManager,g_pFontManager); + +ILTTexInterface* g_pTexInterface; +define_holder(ILTTexInterface,g_pTexInterface); + +SETUP_CLIENTSHELL(); + +define_interface(CTO2GameClientShell, IClientShell); + diff --git a/Jack/ClientShellDLL/HUDAir.cpp b/Jack/ClientShellDLL/HUDAir.cpp new file mode 100644 index 00000000..7c0a6ccd --- /dev/null +++ b/Jack/ClientShellDLL/HUDAir.cpp @@ -0,0 +1,158 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDAir.cpp +// +// PURPOSE : HUDItem to display player air meter +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" + +//****************************************************************************************** +//** +//** HUD Air display +//** +//****************************************************************************************** + +CHUDAir::CHUDAir() +{ + m_UpdateFlags = kHUDAir; + m_hIcon = LTNULL; +} + + +LTBOOL CHUDAir::Init() +{ + //Air icon + m_hIcon = g_pInterfaceResMgr->GetTexture("interface\\hud\\icon_Air.dtx"); + g_pDrawPrim->SetRGBA(&m_Poly,argbWhite); + SetupQuadUVs(m_Poly,m_hIcon,0.0f,0.0f,1.0f,1.0f); + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreatePolyString(pFont,"",0.0f, 0.0f); + + UpdateLayout(); + + m_Bar.Init(g_pInterfaceResMgr->GetTexture("interface\\hud\\airbar.dtx")); + + m_pStr->SetColor(m_Color); + + return LTTRUE; +} + +void CHUDAir::Term() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + +} + +void CHUDAir::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + if (m_bUseBar) + { + m_Bar.Render(); + } + + if (m_bUseText) + { + m_pStr->Render(); + } + + if (m_bUseIcon) + { + // draw our icons + g_pDrawPrim->SetTexture(m_hIcon); + g_pDrawPrim->DrawPrim(&m_Poly,1); + } + +} + +void CHUDAir::Update() +{ + LTFLOAT fPercent = g_pPlayerStats->GetAirPercent() * 100.0f; + + m_bDraw = (fPercent < 100.0f); + if (!m_bDraw) return; + + if (m_bUseBar) + { + float x = (float)(m_BasePos.x + m_BarOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_BarOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = fPercent * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float maxW = 100.0f * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_nBarHeight * g_pInterfaceResMgr->GetYRatio(); + + m_Bar.Update(x,y,w,maxW,h); + + } + + if (m_bUseText) + { + float x = (float)(m_BasePos.x + m_TextOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_TextOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + uint8 h = (uint8)((float)m_nTextHeight * g_pInterfaceResMgr->GetYRatio()); + + m_pStr->SetPosition(x,y); + m_pStr->SetCharScreenHeight(h); + char szTmp[16] = ""; + sprintf(szTmp,"%d",(int)fPercent); + m_pStr->SetText(szTmp); + + + } + + if (m_bUseIcon) + { + float x = (float)(m_BasePos.x + m_IconOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_IconOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)m_nIconSize * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly,x,y,w,w); + + + } + +} + +void CHUDAir::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetAirBasePos(nCurrentLayout); + + m_bUseBar = g_pLayoutMgr->GetUseAirBar(nCurrentLayout); + m_BarOffset = g_pLayoutMgr->GetAirBarOffset(nCurrentLayout); + + m_bUseText = g_pLayoutMgr->GetUseAirText(nCurrentLayout); + m_TextOffset = g_pLayoutMgr->GetAirTextOffset(nCurrentLayout); + + m_bUseIcon = g_pLayoutMgr->GetUseAirIcon(nCurrentLayout); + m_IconOffset = g_pLayoutMgr->GetAirIconOffset(nCurrentLayout); + m_nIconSize = g_pLayoutMgr->GetAirIconSize(nCurrentLayout); + + m_nBarHeight = g_pLayoutMgr->GetBarHeight(nCurrentLayout); + m_nTextHeight = g_pLayoutMgr->GetTextHeight(nCurrentLayout); + m_fBarScale = g_pLayoutMgr->GetBarScale(nCurrentLayout); + + m_Color = g_pLayoutMgr->GetAirColor(nCurrentLayout); + +} + diff --git a/Jack/ClientShellDLL/HUDAir.h b/Jack/ClientShellDLL/HUDAir.h new file mode 100644 index 00000000..c70c8491 --- /dev/null +++ b/Jack/ClientShellDLL/HUDAir.h @@ -0,0 +1,65 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDAir.h +// +// PURPOSE : HUDItem to display player air meter +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_AIR_H +#define __HUD_AIR_H + +#include "HUDItem.h" +#include "HUDBar.h" + +//****************************************************************************************** +//** HUD Air display +//****************************************************************************************** +class CHUDAir : public CHUDItem +{ +public: + CHUDAir(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + LTIntPt m_BasePos; + + LTBOOL m_bUseBar; + LTIntPt m_BarOffset; + + LTBOOL m_bUseText; + LTIntPt m_TextOffset; + + LTBOOL m_bUseIcon; + LTIntPt m_IconOffset; + uint8 m_nIconSize; + + int m_nBarHeight; + uint8 m_nTextHeight; + LTFLOAT m_fBarScale; + + uint32 m_Color; + + LTBOOL m_bDraw; + + + LTPoly_GT4 m_Poly; + HTEXTURE m_hIcon; // icon + + CHUDBar m_Bar; + + + CUIPolyString* m_pStr; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDAmmo.cpp b/Jack/ClientShellDLL/HUDAmmo.cpp new file mode 100644 index 00000000..96dc8b21 --- /dev/null +++ b/Jack/ClientShellDLL/HUDAmmo.cpp @@ -0,0 +1,216 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDAmmo.cpp +// +// PURPOSE : HUDItem to display player ammo +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "PlayerMgr.h" + +//****************************************************************************************** +//** +//** HUD Ammo display +//** +//****************************************************************************************** + +CHUDAmmo::CHUDAmmo() +{ + m_UpdateFlags = kHUDAmmo; + m_bDraw = LTFALSE; + m_bInfinite = LTFALSE; +} + +LTBOOL CHUDAmmo::Init() +{ + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreatePolyString(pFont,"",0.0f, 0.0f); + + UpdateLayout(); + + //armor bar + m_Bar.Init(g_pInterfaceResMgr->GetTexture("interface\\hud\\ammobar.dtx")); + + m_pStr->SetColor(m_TextColor); + + m_hFull = g_pInterfaceResMgr->GetTexture("interface\\hud\\ammo_full.dtx"); + m_hEmpty = g_pInterfaceResMgr->GetTexture("interface\\hud\\ammo_empty.dtx"); + + uint32 a,r,g,b, fadeColor; + GET_ARGB(m_TextColor,a,r,g,b); + + fadeColor = SET_ARGB(a,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA(&m_Poly[0],fadeColor); + g_pDrawPrim->SetRGBA(&m_Poly[1],fadeColor); + + return LTTRUE; +} + +void CHUDAmmo::Term() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } +} + +void CHUDAmmo::Render() +{ + bool bWeaponsEnabled = g_pPlayerMgr->GetClientWeaponMgr()->WeaponsEnabled(); + IClientWeaponBase* pClientWeapon = + g_pPlayerMgr->GetCurrentClientWeapon(); + if (!pClientWeapon || !bWeaponsEnabled) return; + + if (!m_bDraw || pClientWeapon->GetState() == W_DESELECT) return; + + + SetRenderState(); + + if (m_bUseBar && !m_bInfinite) + { + g_pDrawPrim->BeginDrawPrim(); + + m_Bar.Render(); + + + float x = (float)(m_BasePos.x + m_ClipOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_ClipOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)m_ClipUnitSize.x * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_ClipUnitSize.y * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetTexture(m_hFull); + SetupQuadUVs(m_Poly[0], m_hFull, 0.0f, 0.0f, 1.0f, 1.0f); + + for (uint8 i = 0; i < m_nFull; i++) + { + x -= w; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,w,h); + g_pDrawPrim->DrawPrim(&m_Poly[0],1); + } + g_pDrawPrim->SetTexture(m_hEmpty); + SetupQuadUVs(m_Poly[0], m_hEmpty, 0.0f, 0.0f, 1.0f, 1.0f); + + for (i = 0; i < m_nEmpty; i++) + { + x -= w; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,w,h); + g_pDrawPrim->DrawPrim(&m_Poly[0],1); + } + + g_pDrawPrim->EndDrawPrim(); + + } + + if (m_bUseText && !m_bInfinite) + { + m_pStr->Render(); + } + + //render icon here + if (m_hIcon) + { + g_pDrawPrim->SetTexture(m_hIcon); + SetupQuadUVs(m_Poly[1], m_hIcon, 0.0f, 0.0f, 1.0f, 1.0f); + g_pDrawPrim->DrawPrim(&m_Poly[1],1); + } +} + +void CHUDAmmo::Update() +{ + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(g_pPlayerStats->GetCurrentWeapon()); + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(g_pPlayerStats->GetCurrentAmmo()); + + m_bDraw = (pWeapon && pAmmo); + + if (pAmmo && (pAmmo->eInstDamageType == DT_MELEE || pAmmo->eInstDamageType == DT_SWORD) ) + m_bDraw = LTFALSE; + + if (!m_bDraw) return; + + IClientWeaponBase* pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon( ); + int nAmmoInClip = pClientWeapon ? pClientWeapon->GetAmmoInClip() : 0; + int nAmmo = g_pPlayerStats->GetCurrentAmmoCount() - nAmmoInClip; + m_nFull = (uint8)nAmmoInClip; + m_nEmpty = (uint8)pWeapon->nShotsPerClip - m_nFull; + + m_bInfinite = pWeapon->bInfiniteAmmo; + + if (m_bUseBar && !m_bInfinite) + { + LTFLOAT fPercent = 100.0f * (LTFLOAT) (nAmmo + nAmmoInClip) / (LTFLOAT) pAmmo->GetMaxAmount(LTNULL); + + float x = (float)(m_BasePos.x + m_BarOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_BarOffset.y) * g_pInterfaceResMgr->GetYRatio(); + float h = (float)m_nBarHeight * g_pInterfaceResMgr->GetYRatio(); + + float w = fPercent * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float maxW = 100.0f * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + + m_Bar.Update(x,y,w,maxW,h); + + } + + if (m_bUseText && !m_bInfinite) + { + char str[32]; + sprintf(str,"%d/%d", nAmmoInClip, nAmmo < 0 ? 0 : nAmmo); + + uint8 h = (uint8)((float)m_nTextHeight * g_pInterfaceResMgr->GetYRatio()); + + float x = (float)(m_BasePos.x + m_TextOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_TextOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + m_pStr->SetText(str); + m_pStr->SetPosition(x,y); + m_pStr->SetCharScreenHeight(h); + + + } + + + float x = (float)(m_BasePos.x + m_IconOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y + m_IconOffset.y) * g_pInterfaceResMgr->GetYRatio(); + float w = (float)m_nIconSize * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_nIconSize * g_pInterfaceResMgr->GetYRatio(); + std::string icon = pAmmo->GetNormalIcon(); + m_hIcon = g_pInterfaceResMgr->GetTexture(icon.c_str()); + g_pDrawPrim->SetXYWH(&m_Poly[1],x,y,w,h); + +} + +void CHUDAmmo::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetAmmoBasePos(nCurrentLayout); + + m_bUseBar = g_pLayoutMgr->GetUseAmmoBar(nCurrentLayout); + m_BarOffset = g_pLayoutMgr->GetAmmoBarOffset(nCurrentLayout); + m_ClipOffset = g_pLayoutMgr->GetAmmoClipOffset(nCurrentLayout); + m_ClipUnitSize = g_pLayoutMgr->GetAmmoClipUnitSize(nCurrentLayout); + + m_bUseText = g_pLayoutMgr->GetUseAmmoText(nCurrentLayout); + m_TextOffset = g_pLayoutMgr->GetAmmoTextOffset(nCurrentLayout); + + m_IconOffset = g_pLayoutMgr->GetAmmoIconOffset(nCurrentLayout); + m_nIconSize = g_pLayoutMgr->GetAmmoIconSize(nCurrentLayout); + m_TextColor = g_pLayoutMgr->GetAmmoColor(nCurrentLayout); + + m_nBarHeight = g_pLayoutMgr->GetBarHeight(nCurrentLayout); + m_nTextHeight = g_pLayoutMgr->GetTextHeight(nCurrentLayout); + m_fBarScale = g_pLayoutMgr->GetBarScale(nCurrentLayout); + +} diff --git a/Jack/ClientShellDLL/HUDAmmo.h b/Jack/ClientShellDLL/HUDAmmo.h new file mode 100644 index 00000000..4beb9213 --- /dev/null +++ b/Jack/ClientShellDLL/HUDAmmo.h @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDAmmo.h +// +// PURPOSE : HUDItem to display player ammo +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_AMMO_H +#define __HUD_AMMO_H + +#include "HUDItem.h" +#include "HUDBar.h" + +//****************************************************************************************** +//** HUD Ammo display +//****************************************************************************************** +class CHUDAmmo : public CHUDItem +{ +public: + CHUDAmmo(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + + LTIntPt m_BasePos; + + LTBOOL m_bUseBar; + LTIntPt m_BarOffset; + LTIntPt m_ClipOffset; + LTIntPt m_ClipUnitSize; + + LTBOOL m_bUseText; + LTIntPt m_TextOffset; + uint32 m_TextColor; + + LTIntPt m_IconOffset; + uint8 m_nIconSize; + + int m_nBarHeight; + uint8 m_nTextHeight; + LTFLOAT m_fBarScale; + + LTPoly_GT4 m_Poly[2]; + HTEXTURE m_hFull; // clip + HTEXTURE m_hEmpty; // clip + HTEXTURE m_hIcon; + + CHUDBar m_Bar; + + uint8 m_nEmpty; + uint8 m_nFull; + + LTBOOL m_bDraw; + LTBOOL m_bInfinite; + + CUIPolyString* m_pStr; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDBar.cpp b/Jack/ClientShellDLL/HUDBar.cpp new file mode 100644 index 00000000..972c0354 --- /dev/null +++ b/Jack/ClientShellDLL/HUDBar.cpp @@ -0,0 +1,141 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDBar.h +// +// PURPOSE : Definition of "Bar" HUD component +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "InterfaceMgr.h" +#include "HUDBar.h" + + +CHUDBar::CHUDBar() +{ + m_bInitted = false; + m_Bar = NULL; +} + + +void CHUDBar::Init(HTEXTURE hBar) +{ + ASSERT(hBar); + if (!hBar) return; + m_Bar = hBar; + + + float u[4] = {0.0f, 0.25f, 0.75f, 1.0f}; + float v[3] = {0.0f, 0.5f, 1.0f}; + + + for (int row = 0; row < 2; row++) + { + for (int col = 0; col < 3; col++) + { + int i = row*3+col; + g_pDrawPrim->SetRGBA(&m_Poly[i],0xFFFFFFFF); + SetupQuadUVs(m_Poly[i], hBar, u[col],v[row], u[col+1] - u[col],v[row+1] - v[row]); + } + } + + m_bInitted = true; + +} + +void CHUDBar::Render() +{ + if (!m_bInitted) return; + + g_pDrawPrim->SetTexture(m_Bar); + g_pDrawPrim->DrawPrim(m_Poly,6); +} + + +void CHUDBar::Update(float x,float y, float fillW, float maxW, float h) +{ + float capW = h/2.0f; + float barW = maxW - (2.0f * capW); + + float barLeft = x + capW; + float barRight = barLeft + barW; + + if (fillW < capW) + { + //width of bar is lass than endcap width + + //draw partial left endcap + float capUw = (fillW/capW) / 4.0f; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,fillW,h); + SetupQuadUVs(m_Poly[0], m_Bar, 0.0f,0.0f,capUw,0.5f); + g_pDrawPrim->SetXYWH(&m_Poly[3],x+fillW,y,(capW-fillW),h); + SetupQuadUVs(m_Poly[3], m_Bar, capUw,0.5f,0.25f-capUw,0.5f); + + //hide full armor bars and right endcap + g_pDrawPrim->SetXYWH(&m_Poly[1],-1.0f,-1.0f,0.0f,0.0f); + g_pDrawPrim->SetXYWH(&m_Poly[2],-1.0f,-1.0f,0.0f,0.0f); + + //draw empty armor bars and right endcap + g_pDrawPrim->SetXYWH(&m_Poly[4],barLeft,y, barW,h); + g_pDrawPrim->SetXYWH(&m_Poly[5],barRight,y, capW,h); + SetupQuadUVs(m_Poly[5], m_Bar, 0.75f,0.5f,0.25f,0.5f); + } + else + { + //draw full left endcap + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,capW,h); + SetupQuadUVs(m_Poly[0], m_Bar, 0.0f,0.0f,0.25f,0.5f); + g_pDrawPrim->SetXYWH(&m_Poly[3],-1.0f,-1.0f,0.0f,0.0f); + SetupQuadUVs(m_Poly[3], m_Bar, 0.0f,0.5f,0.25f,0.5f); + + if (fillW < (capW + barW) ) + { + x += fillW; + + //draw partial bar + g_pDrawPrim->SetXYWH(&m_Poly[1],barLeft,y,x-barLeft,h); + g_pDrawPrim->SetXYWH(&m_Poly[4],x,y,barRight-x,h); + + //draw empty right endcap + g_pDrawPrim->SetXYWH(&m_Poly[2],-1.0f,-1.0f,0.0f,0.0f); + g_pDrawPrim->SetXYWH(&m_Poly[5],barRight,y, capW,h); + SetupQuadUVs(m_Poly[5], m_Bar, 0.75f,0.5f,0.25f,0.5f); + } + else + { + //draw full bar + g_pDrawPrim->SetXYWH(&m_Poly[1],barLeft,y, barW,h); + g_pDrawPrim->SetXYWH(&m_Poly[4],-1.0f,-1.0f,0.0f,0.0f); + + if (fillW < maxW) + { + //draw partial right endcap + float partW = maxW - fillW; + float capUw = (partW/capW) / 4.0f; + g_pDrawPrim->SetXYWH(&m_Poly[2],barRight,y, capW-partW,h); + SetupQuadUVs(m_Poly[2], m_Bar, 0.75f,0.0f,0.25f-capUw,0.5f); + g_pDrawPrim->SetXYWH(&m_Poly[5],x+fillW,y,partW,h); + SetupQuadUVs(m_Poly[5], m_Bar, 1.0f-capUw,0.5f,capUw,0.5f); + } + else + { + //draw full right endcap + g_pDrawPrim->SetXYWH(&m_Poly[2],barRight,y, capW,h); + SetupQuadUVs(m_Poly[2], m_Bar, 0.75f,0.0f,0.25f,0.5f); + g_pDrawPrim->SetXYWH(&m_Poly[5],-1.0f,-1.0f,0.0f,0.0f); + } + + } + } +} + +void CHUDBar::SetForegroundColor(uint32 argbColor) +{ + // Set the color on the foreground polygons. + g_pDrawPrim->SetRGBA(&m_Poly[0],argbColor); + g_pDrawPrim->SetRGBA(&m_Poly[1],argbColor); + g_pDrawPrim->SetRGBA(&m_Poly[2],argbColor); +} diff --git a/Jack/ClientShellDLL/HUDBar.h b/Jack/ClientShellDLL/HUDBar.h new file mode 100644 index 00000000..0100164f --- /dev/null +++ b/Jack/ClientShellDLL/HUDBar.h @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDBar.h +// +// PURPOSE : Definition of "Bar" HUD component +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_BAR_H +#define __HUD_BAR_H + +#include "ltbasedefs.h" +#include "LTPoly.h" + +class CHUDBar +{ +public: + CHUDBar(); + + void Init(HTEXTURE hBar); + void Update(float x,float y, float fillW, float maxW, float h); + void Render(); + + void SetForegroundColor(uint32 argbColor); + +private: + bool m_bInitted; + + LTPoly_GT4 m_Poly[6]; + HTEXTURE m_Bar; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDBombTarget.cpp b/Jack/ClientShellDLL/HUDBombTarget.cpp new file mode 100644 index 00000000..534913c0 --- /dev/null +++ b/Jack/ClientShellDLL/HUDBombTarget.cpp @@ -0,0 +1,168 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDBombTarget.cpp +// +// PURPOSE : HUDItem to display status of doomsday pieces +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "HUDBombTarget.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "TO2PlayerMgr.h" +#include "GameClientShell.h" + +//****************************************************************************************** +//** +//** HUD Carry Icon display +//** +//****************************************************************************************** +CHUDBombTarget::CHUDBombTarget() +{ + m_eLevel = kHUDRenderDead; + m_UpdateFlags = kHUDBombTarget; + m_lstIconData.resize( 3 ); + m_fScale = 1.0f; +} + + +LTBOOL CHUDBombTarget::Init() +{ + UpdateLayout(); + + m_lstIconData[0].m_hIcon = g_pInterfaceResMgr->GetTexture("interface\\hud\\radar_bomb1.dtx"); + m_lstIconData[1].m_hIcon = g_pInterfaceResMgr->GetTexture("interface\\hud\\radar_bomb2.dtx"); + m_lstIconData[2].m_hIcon = g_pInterfaceResMgr->GetTexture("interface\\hud\\radar_bomb3.dtx"); + + float fx = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)(m_nSize) * g_pInterfaceResMgr->GetXRatio(); + float fgap = fw * 1.25f; + + uint8 nFont = g_pLayoutMgr->GetInt("Miscellaneous","BombTimerFont"); + uint8 nBaseSize = (uint8)g_pLayoutMgr->GetInt("Miscellaneous","BombTimerSize"); + LTVector const& vColor = g_pLayoutMgr->GetVector("Miscellaneous","BombTimerColor"); + + LTIntPt pos( m_BasePos.x + m_nSize + 2, m_BasePos.y - 2 ); + for (uint32 i = 0; i < m_lstIconData.size( ); i++) + { + g_pDrawPrim->SetRGBA(&m_lstIconData[i].m_Poly,argbWhite); + SetupQuadUVs( m_lstIconData[i].m_Poly, m_lstIconData[i].m_hIcon, 0.0f,0.0f,1.0f,1.0f); + + m_lstIconData[i].m_Timer.Init( nFont, nBaseSize, pos, vColor, CUI_HALIGN_LEFT ); + // The pos for the timer is in unscaled space, so we need to convert + // the scaled fgab to unscaled. + pos.y += ( int )(( fgap / g_pInterfaceResMgr->GetXRatio()) + 0.5f ); + + g_pDrawPrim->SetXYWH(&m_lstIconData[i].m_Poly,fx,fy,fw,fw); + fy += fgap; + } + + return LTTRUE; +} + +void CHUDBombTarget::Term() +{ + +} +void CHUDBombTarget::Update() +{ + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + m_fScale = g_pInterfaceResMgr->GetXRatio(); + + for ( uint32 i = 0; i < m_lstIconData.size( ); i++) + { + IconData& iconData = m_lstIconData[i]; + iconData.m_Timer.ScreenDimsChanged( ); + } + + float fx = (float)(m_BasePos.x) * m_fScale; + float fy = (float)(m_BasePos.y) * m_fScale; + float fw = (float)(m_nSize) * m_fScale; + float fgap = fw * 1.25f; + + LTIntPt pos( m_BasePos.x + m_nSize + 2, m_BasePos.y - 2 ); + for (uint32 i = 0; i < m_lstIconData.size( ); i++) + { + g_pDrawPrim->SetXYWH(&m_lstIconData[i].m_Poly,fx,fy,fw,fw); + fy += fgap; + } + } +} + +void CHUDBombTarget::Render() +{ + if (!g_pRadar->GetDraw()) + return; + + // Check if none of the timers are running. + bool bRunning = false; + for ( uint32 i = 0; i < m_lstIconData.size( ); i++) + { + if( m_lstIconData[i].m_Timer.GetTime( ) > 0 ) + bRunning = true; + } + if( !bRunning ) + return; + + SetRenderState(); + + for ( uint32 i = 0; i < m_lstIconData.size( ); i++) + { + IconData& iconData = m_lstIconData[i]; + + // Only draw if the timer is going. + if( iconData.m_Timer.GetTimeLeft( ) > 0 ) + { + //use the appropriate icon + g_pDrawPrim->SetTexture( iconData.m_hIcon ); + // draw the icon + g_pDrawPrim->DrawPrim(&m_lstIconData[i].m_Poly); + + // Draw the timer. + iconData.m_Timer.Draw( ); + } + } +} + +void CHUDBombTarget::UpdateLayout() +{ + static char *pTag = "Miscellaneous"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BombTimerPos"); + m_nSize = (uint8)g_pLayoutMgr->GetInt(pTag,"BombTimerSize"); + + if (!m_nSize) + { + m_BasePos = LTIntPt(500,10); + m_nSize = 32; + } +} + +bool CHUDBombTarget::SetTimer( uint8 nTimer, float fTime, bool bPause ) +{ + if( nTimer > m_lstIconData.size( )) + { + ASSERT( !"CHUDBombTarget::SetTimer: Invalid timer specified." ); + return false; + } + + m_lstIconData[nTimer].m_Timer.SetTime( fTime, bPause ); + + return true; +} + +float CHUDBombTarget::GetTimer( uint8 nTimer ) const +{ + if( nTimer > m_lstIconData.size( )) + { + ASSERT( !"CHUDBombTarget::GetTimer: Invalid timer specified." ); + return 0.0f; + } + + return m_lstIconData[nTimer].m_Timer.GetTime( ); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDBombTarget.h b/Jack/ClientShellDLL/HUDBombTarget.h new file mode 100644 index 00000000..a59e2710 --- /dev/null +++ b/Jack/ClientShellDLL/HUDBombTarget.h @@ -0,0 +1,58 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDBombTarget.h +// +// PURPOSE : HUDItem to display status of doomsday pieces +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUDBOMBTARGET_H__ +#define __HUDBOMBTARGET_H__ + +#include "HUDItem.h" +#include +#include "InterfaceTimer.h" + +//****************************************************************************************** +//** HUD Bombtarget +//****************************************************************************************** +class CHUDBombTarget : public CHUDItem +{ +public: + CHUDBombTarget(); + + LTBOOL Init(); + void Term(); + void Render(); + void Update(); + void UpdateLayout(); + + // Gets/Sets time on timer. + bool SetTimer( uint8 nTimer, float fTime, bool bPaused ); + float GetTimer( uint8 nTimer ) const; + +private: + + LTIntPt m_BasePos; + uint16 m_nSize; + + struct IconData + { + IconData( ) + { + m_hIcon = NULL; + } + + CInterfaceTimer m_Timer; + LTPoly_GT4 m_Poly; + HTEXTURE m_hIcon; + }; + typedef std::vector< IconData > TIconDataList; + TIconDataList m_lstIconData; + + float m_fScale; +}; + +#endif // __HUDBOMBTARGET_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDCarrying.cpp b/Jack/ClientShellDLL/HUDCarrying.cpp new file mode 100644 index 00000000..407e7507 --- /dev/null +++ b/Jack/ClientShellDLL/HUDCarrying.cpp @@ -0,0 +1,227 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCarrying.cpp +// +// PURPOSE : HUDItem to display an icon while carrying a body +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "TO2PlayerMgr.h" +#include "ChassisButeMgr.h" +#include "ChassisPieceFX.h" +#include +#include "KeyMgr.h" + +//****************************************************************************************** +//** +//** HUD Carry Icon display +//** +//****************************************************************************************** + +CHUDCarrying::CHUDCarrying() +{ + m_UpdateFlags = kHUDCarry | kHUDFrame; + for (int i = 0; i < kNumCarryBodyIcons; i++) + { + m_hIcon[i] = LTNULL; + }; +} + + +LTBOOL CHUDCarrying::Init() +{ + m_hIcon[eBodyCanDrop] = g_pInterfaceResMgr->GetTexture("interface\\hud\\carrying.dtx"); + m_hIcon[eBodyNoDrop] = g_pInterfaceResMgr->GetTexture("interface\\hud\\nodrop.dtx"); + m_hIcon[eBodyCanCarry] = g_pInterfaceResMgr->GetTexture("interface\\hud\\carry.dtx"); + + // Add all the chassis piece icons. + ChassisPieceIcon chassisPieceIcon; + ChassisButeMgr::ChassisPieceButeList::const_iterator iter = ChassisButeMgr::Instance( ).GetChassisPieceButeList( ).begin( ); + for( ; iter != ChassisButeMgr::Instance( ).GetChassisPieceButeList( ).end( ); iter++ ) + { + ChassisPieceBute const* pChassisPieceBute = *iter; + chassisPieceIcon.m_hCarryingIcon = g_pInterfaceResMgr->GetTexture( pChassisPieceBute->m_sCarryingIcon.c_str( )); + chassisPieceIcon.m_hPickupIcon = g_pInterfaceResMgr->GetTexture( pChassisPieceBute->m_sPickupIcon.c_str( )); + m_lstChassisPieceIcon.push_back( chassisPieceIcon ); + } + + g_pDrawPrim->SetRGBA(&m_Poly,argbWhite); + SetupQuadUVs(m_Poly, m_hIcon[0], 0.0f,0.0f,1.0f,1.0f); + + UpdateLayout(); + + return LTTRUE; +} + +void CHUDCarrying::Term() +{ + +} + +void CHUDCarrying::Render() +{ + CSpecialFX* pSFX; + uint8 nCarry = g_pPlayerMgr->GetCarryingObject(); + uint8 nCanCarry = g_pPlayerMgr->CanCarryObject( &pSFX ); + + if( nCarry || nCanCarry) + { + float fx = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)(m_nSize) * g_pInterfaceResMgr->GetXRatio(); + + SetRenderState(); + + g_pDrawPrim->SetTexture(NULL); + g_pDrawPrim->SetXYWH(&m_Poly,fx,fy,fw,fw); + + if(nCanCarry) + { + switch (nCanCarry) + { + case CFX_CARRY_BODY: + g_pDrawPrim->SetTexture(m_hIcon[eBodyCanCarry]); + break; + case CFX_CARRY_CHASSIS_PIECE: + ChassisPieceFX* pChassisPieceFX = dynamic_cast< ChassisPieceFX* >( pSFX ); + ChassisPieceBute const* pChassisPieceBute = pChassisPieceFX->GetChassisPieceBute( ); + if( pChassisPieceBute ) + g_pDrawPrim->SetTexture( m_lstChassisPieceIcon[pChassisPieceBute->m_nIndex].m_hPickupIcon ); + break; + }; + } + else if (g_pPlayerMgr->CanDropCarriedObject()) + { + switch (nCarry) + { + case CFX_CARRY_BODY: + g_pDrawPrim->SetTexture(m_hIcon[eBodyCanDrop]); + break; + case CFX_CARRY_CHASSIS_PIECE: + ChassisPieceBute const* pChassisPieceBute = g_pPlayerMgr->GetCarryingChassisPiece( ); + if( pChassisPieceBute ) + g_pDrawPrim->SetTexture( m_lstChassisPieceIcon[pChassisPieceBute->m_nIndex].m_hCarryingIcon ); + break; + }; + } + else + { + g_pDrawPrim->SetTexture(m_hIcon[eBodyNoDrop]); + } + + g_pDrawPrim->DrawPrim(&m_Poly); + + } + + // Check if we have any keyicons to render. + if( m_lstKeyIcons.size( )) + { + // Always put the keyitems to the right of the carrying slot, even if it's empty. + uint32 nXPos = m_BasePos.x + m_nSize + 2; + + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + g_pDrawPrim->SetTexture(NULL); + + KeyIconList::iterator iter = m_lstKeyIcons.begin( ); + for( ; iter != m_lstKeyIcons.end( ); iter++ ) + { + KeyIcon& keyIcon = *iter; + + float fx = (float)( nXPos ) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)( keyIcon.m_Size.x ) * g_pInterfaceResMgr->GetXRatio(); + float fh = (float)( keyIcon.m_Size.y ) * g_pInterfaceResMgr->GetXRatio(); + g_pDrawPrim->SetXYWH(&m_Poly,fx,fy,fw,fh); + g_pDrawPrim->SetTexture( keyIcon.m_hIcon ); + g_pDrawPrim->DrawPrim( &m_Poly ); + + // Move over for the next icon. + nXPos += keyIcon.m_Size.x + 2; + } + } +} + +void CHUDCarrying::Update() +{ +} + +void CHUDCarrying::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetCarryIconPos(nCurrentLayout); + m_nSize = g_pLayoutMgr->GetCarryIconSize(nCurrentLayout); + + if (!m_nSize) + { + m_BasePos = LTIntPt(40,360); + m_nSize = 64; + } +} + + +bool CHUDCarrying::AddKey( uint32 nKeyId ) +{ + KeyIcon keyIcon; + keyIcon.m_nKeyIndex = nKeyId; + + // Check if we already have it. + if( std::find( m_lstKeyIcons.begin( ), m_lstKeyIcons.end( ), keyIcon ) != m_lstKeyIcons.end( )) + return false; + + // Get the key info. + KEY* pKey = g_pKeyMgr->GetKey( nKeyId ); + if( !pKey ) + return false; + + keyIcon.m_hIcon = g_pInterfaceResMgr->GetTexture( pKey->szImage ); + uint32 nWidth, nHeight; + g_pTexInterface->GetTextureDims( keyIcon.m_hIcon, nWidth, nHeight ); + + // Scale the image into the slot size. + float fScale = 1.0; + if( nWidth > nHeight ) + { + fScale = ( float )m_nSize / nWidth; + } + else + { + fScale = ( float )m_nSize / nHeight; + } + nWidth = ( uint32 )(( nWidth * fScale ) + 0.5f ); + nHeight = ( uint32 )(( nHeight * fScale ) + 0.5f ); + + keyIcon.m_Size.x = nWidth; + keyIcon.m_Size.y = nHeight; + m_lstKeyIcons.push_back( keyIcon ); + g_pHUDMgr->QueueUpdate(kHUDCarry); + + return true; +} + +bool CHUDCarrying::RemoveKey( uint32 nKeyId ) +{ + KeyIcon keyIcon; + keyIcon.m_nKeyIndex = nKeyId; + + // Check if we don't have it. + KeyIconList::iterator iter = std::find( m_lstKeyIcons.begin( ), m_lstKeyIcons.end( ), keyIcon ); + if( iter == m_lstKeyIcons.end( )) + return false; + + m_lstKeyIcons.erase( iter ); + g_pHUDMgr->QueueUpdate(kHUDCarry); + + return true; +} + +void CHUDCarrying::ClearAllKeys( ) +{ + m_lstKeyIcons.clear( ); + g_pHUDMgr->QueueUpdate(kHUDCarry); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDCarrying.h b/Jack/ClientShellDLL/HUDCarrying.h new file mode 100644 index 00000000..2fb19dea --- /dev/null +++ b/Jack/ClientShellDLL/HUDCarrying.h @@ -0,0 +1,92 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCarrying.h +// +// PURPOSE : HUDItem to display an icon while carrying a body +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_CARRYING_H +#define __HUD_CARRYING_H + +#include "HUDItem.h" + + + +//****************************************************************************************** +//** HUD Carry Icon display +//****************************************************************************************** +class CHUDCarrying : public CHUDItem +{ +public: + CHUDCarrying(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + bool AddKey( uint32 nKeyId ); + bool RemoveKey( uint32 nKeyId ); + void ClearAllKeys( ); + +private: + LTIntPt m_BasePos; + uint16 m_nSize; + + enum eCarryBodyIcons + { + eBodyCanDrop, + eBodyNoDrop, + eBodyCanCarry, + kNumCarryBodyIcons + }; + + + LTPoly_GT4 m_Poly; + HTEXTURE m_hIcon[kNumCarryBodyIcons]; + + struct ChassisPieceIcon + { + ChassisPieceIcon( ) + { + m_hCarryingIcon = m_hPickupIcon = NULL; + } + + HTEXTURE m_hCarryingIcon; + HTEXTURE m_hPickupIcon; + }; + + typedef std::vector< ChassisPieceIcon > ChassisPieceIconList; + ChassisPieceIconList m_lstChassisPieceIcon; + + // Holds individual keyicon. + struct KeyIcon + { + KeyIcon( ) + { + m_hIcon = NULL; + m_nKeyIndex = 0; + } + + bool operator==( KeyIcon const& other ) const + { + return ( m_nKeyIndex == other.m_nKeyIndex ); + } + + HTEXTURE m_hIcon; + uint32 m_nKeyIndex; + LTIntPt m_Size; + }; + + // Can have 0 or more keys shown in carrying list. + typedef std::vector< KeyIcon > KeyIconList; + KeyIconList m_lstKeyIcons; +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDChatInput.cpp b/Jack/ClientShellDLL/HUDChatInput.cpp new file mode 100644 index 00000000..2f74f9c5 --- /dev/null +++ b/Jack/ClientShellDLL/HUDChatInput.cpp @@ -0,0 +1,284 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDChatInput.cpp +// +// PURPOSE : HUDItem to display chat input +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "MsgIds.h" +#include "ClientSoundMgr.h" +#include "ScmdConsole.h" + +//****************************************************************************************** +//** +//** HUD Air display +//** +//****************************************************************************************** + +CHUDChatInput::CHUDChatInput() +{ + m_UpdateFlags = kHUDNone; + m_bVisible = LTFALSE; + m_pStr = LTNULL; + m_eLevel = kHUDRenderText; + m_bTeamMessage = false; +} + + +LTBOOL CHUDChatInput::Init() +{ + char *pTag = "ChatInput"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"Color"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + uint32 color = SET_ARGB(0xFF,nR,nG,nB); + + uint8 h = (uint8)((float)m_nFontSize * g_pInterfaceResMgr->GetYRatio()); + + float x = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetYRatio(); + + + m_pStr = g_pFontManager->CreatePolyString(pFont," ",x, y); + m_pStr->SetCharScreenHeight(h); + m_pStr->SetColor(color); + + m_EditCtrl.Create(g_pLTClient,LTNULL,pFont,m_nFontSize,kMaxChatLength,LTNULL,m_szChatStr); + m_EditCtrl.SetColors(color,color,color); + m_EditCtrl.EnableCaret(LTTRUE); + + m_EditCtrl.SetBasePos(m_BasePos); + m_EditCtrl.SetScale(g_pInterfaceResMgr->GetXRatio()); + + UpdateLayout(); + + + return LTTRUE; +} + +void CHUDChatInput::Term() +{ + m_EditCtrl.Destroy(); + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + +} + +void CHUDChatInput::Render() +{ + + if (!m_bVisible) return; +// SetRenderState(); + + m_pStr->Render(); + m_EditCtrl.Render(); + + +} + +void CHUDChatInput::Update() +{ + + uint8 h = (uint8)((float)m_nFontSize * g_pInterfaceResMgr->GetYRatio()); + m_pStr->SetCharScreenHeight(h); + + float x = ((float)(m_BasePos.x - 5) * g_pInterfaceResMgr->GetXRatio()) - m_pStr->GetWidth(); + float y = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetYRatio(); + m_pStr->SetPosition(x,y); + + m_EditCtrl.SetScale(g_pInterfaceResMgr->GetXRatio()); +} + +void CHUDChatInput::OnExitWorld() +{ + if (m_bVisible) + { + m_bVisible = LTFALSE; + m_nHistory = -1; + g_pChatMsgs->ShowHistory(LTFALSE); + + m_EditCtrl.Show(LTFALSE); + m_EditCtrl.UpdateData(LTTRUE); + + g_pGameClientShell->SetInputState(LTTRUE); + g_pLTClient->ClearInput(); + } +} + +void CHUDChatInput::Show(bool bShow, bool bTeam) +{ + m_bVisible = bShow; + m_nHistory = -1; + g_pChatMsgs->ShowHistory(bShow); + + + //only set the team flag when showing the ChatInput. We will need to + // access the flag after it is hidden. + if (bShow) + m_bTeamMessage = bTeam; + + m_EditCtrl.Show(bShow); + g_pGameClientShell->SetInputState(!bShow); + g_pLTClient->ClearInput(); + + if (bShow) + { + if (bTeam) + m_pStr->SetText(LoadTempString(IDS_TEAM_SAY)); + else + m_pStr->SetText(LoadTempString(IDS_SAY)); + m_szChatStr[0] = 0; + + Update(); + + } + + // Pause the server in single player while chatting... + + if( !IsMultiplayerGame() ) + { + g_pGameClientShell->PauseGame( !!bShow, true ); + } + + // Send the Message to the server + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CHATMODE); + cMsg.Writeuint8((uint8)bShow); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + m_EditCtrl.UpdateData(!bShow); +} + +void CHUDChatInput::UpdateLayout() +{ + +} + +LTBOOL CHUDChatInput::HandleKeyDown(int key, int rep) +{ + switch (key) + { + case VK_ESCAPE: + { + Show(false,false); + return LTTRUE; + } break; + + case VK_RETURN: + { + Send(); + return LTTRUE; + } break; + + case VK_UP: + { + int nTest = m_nHistory+1; + if (nTest >= 0 && nTest < kMaxChatHistory && strlen(m_szChatHistory[nTest])) + { + m_nHistory = nTest; + SAFE_STRCPY(m_szChatStr,m_szChatHistory[nTest]); + m_EditCtrl.UpdateData(LTFALSE); + } + return LTTRUE; + } break; + + case VK_DOWN: + { + int nTest = m_nHistory-1; + if (nTest >= 0 && nTest < kMaxChatHistory && strlen(m_szChatHistory[nTest])) + { + m_nHistory = nTest; + SAFE_STRCPY(m_szChatStr,m_szChatHistory[nTest]); + m_EditCtrl.UpdateData(LTFALSE); + } + return LTTRUE; + } break; + + case VK_PRIOR: + { + g_pChatMsgs->IncHistoryOffset(); + return LTTRUE; + } break; + + case VK_NEXT: + { + g_pChatMsgs->DecHistoryOffset(); + return LTTRUE; + } break; + + default: + return m_EditCtrl.HandleKeyDown(key,rep); + } +} + +LTBOOL CHUDChatInput::HandleChar(unsigned char c) +{ + return m_EditCtrl.HandleChar(c); +} + +void CHUDChatInput::Send() +{ + + Show(false,false); + + // Ignore empty messages. + if( !m_szChatStr[0] ) + return; + + // First check and see if it was a cheat that was entered... + + ConParse cParse( m_szChatStr ); + if( LT_OK == g_pCommonLT->Parse( &cParse )) + { + CParsedMsg parsedMsg( cParse.m_nArgs, cParse.m_Args ); + + if (g_pCheatMgr->Check( parsedMsg )) + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Menu\\Snd\\Cheat.wav"); + return; + } + // Check if this is an scmd command. + else if( ScmdConsole::Instance( ).SendParsedCommand( parsedMsg )) + { + // If it was, it was sent. Don't send chat. + return; + } + } + + // Send the Message to the server + CAutoMessage cMsg; + uint8 nMsgID; + if (g_pPlayerMgr->GetPlayerState() == PS_GHOST) + nMsgID = MID_PLAYER_GHOSTMESSAGE; + else + nMsgID = MID_PLAYER_MESSAGE; + cMsg.Writeuint8(nMsgID); + cMsg.WriteString(m_szChatStr); + cMsg.Writebool(m_bTeamMessage); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + // cache this string in the chat history + for (int i = kMaxChatHistory-1; i > 0; i--) + { + SAFE_STRCPY(m_szChatHistory[i], m_szChatHistory[i-1]); + } + + SAFE_STRCPY(m_szChatHistory[0], m_szChatStr); +} diff --git a/Jack/ClientShellDLL/HUDChatInput.h b/Jack/ClientShellDLL/HUDChatInput.h new file mode 100644 index 00000000..aa5354c0 --- /dev/null +++ b/Jack/ClientShellDLL/HUDChatInput.h @@ -0,0 +1,71 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDChatInput.h +// +// PURPOSE : HUDItem to display chat input +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_CHAT_H +#define __HUD_CHAT_H + +#include "HUDItem.h" +#include "LTGUIMgr.h" + +const int kMaxChatLength = 64; +const int kMaxChatHistory = 25; + +//****************************************************************************************** +//** HUD Chat display +//****************************************************************************************** +class CHUDChatInput : public CHUDItem +{ +public: + CHUDChatInput(); + + LTBOOL Init(); + void Term(); + + void OnExitWorld(); + + void Render(); + void Update(); + + void UpdateLayout(); + + // Handles a key press + LTBOOL HandleKeyDown(int key, int rep); + LTBOOL HandleChar(unsigned char c); + + + void Show(bool bShow, bool bTeam); + LTBOOL IsVisible() {return m_bVisible;} + +private: + void Send(); + + +private: + + CLTGUIEditCtrl m_EditCtrl; + + LTBOOL m_bVisible; + + LTIntPt m_BasePos; + uint8 m_nFontSize; + + CUIPolyString* m_pStr; + + + char m_szChatStr[kMaxChatLength]; + char m_szChatHistory[kMaxChatHistory][kMaxChatLength]; + + int m_nHistory; + + bool m_bTeamMessage; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDChooser.cpp b/Jack/ClientShellDLL/HUDChooser.cpp new file mode 100644 index 00000000..5a2e1e50 --- /dev/null +++ b/Jack/ClientShellDLL/HUDChooser.cpp @@ -0,0 +1,507 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDChooser.cpp +// +// PURPOSE : HUDItem to display weapon and ammo choices +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDChooser.h" +#include "PlayerStats.h" +#include "InterfaceMgr.h" +#include "PlayerMgr.h" +#include "ClientWeaponMgr.h" + +//****************************************************************************************** +//** +//** HUD Weapon Chooser display +//** +//****************************************************************************************** +CHUDWpnChooser::CHUDWpnChooser() +{ + m_UpdateFlags = kHUDChooser; + m_bDraw = LTFALSE; + m_fTexScale = 0.0f; + m_fScale = 0.0f; + m_nScreenWidth = 0; + m_pStr = LTNULL; +} + +CHUDWpnChooser::~CHUDWpnChooser() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + +} + + +LTBOOL CHUDWpnChooser::Init() +{ + // get first and last weapon indices + uint8 nFirstWeaponCommandId = g_pWeaponMgr->GetFirstWeaponCommandId(); + uint8 nLastWeaponCommandId = g_pWeaponMgr->GetLastWeaponCommandId(); + uint8 nWeaponCount[kMaxClasses]; + memset(nWeaponCount,0,sizeof(nWeaponCount)); + for (uint8 nWpnCommandId = nFirstWeaponCommandId; nWpnCommandId <= nLastWeaponCommandId; nWpnCommandId++) + { + uint8 nWpn = g_pWeaponMgr->GetWeaponId( nWpnCommandId ); + + WEAPON const* pWeapon = g_pWeaponMgr->GetWeapon( nWpn ); + if( pWeapon->bShowChooser && g_pWeaponMgr->IsPlayerWeapon( nWpn )) + { + // get the weapon data struct + uint8 nClass = g_pWeaponMgr->GetWeaponClass( nWpn ) - 1; + if (nClass < kMaxClasses && nWeaponCount[nClass] < kMaxItemsPerClass) + { + m_nWeaponID[nClass][nWeaponCount[nClass]] = nWpn; + nWeaponCount[nClass]++; + } + + } + } + + UpdateLayout(); + + for( uint8 i = 0; i < kMaxClasses; ++i ) + { + g_pDrawPrim->SetRGBA( &m_ClassPoly[i], argbWhite ); + + for (uint8 n = nWeaponCount[i]; n < kMaxItemsPerClass; n++) + { + m_nWeaponID[i][n] = WMGR_INVALID_ID; + } + } + for( i = 0; i < kMaxItemsPerClass; ++i ) + { + g_pDrawPrim->SetRGBA( &m_ItemPoly[i], argbWhite ); + + m_hItemIcon[i] = NULL; + + } + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f, 0.0f); + m_pStr->SetColor(m_TextColor); + + + + return LTTRUE; +} + + +void CHUDWpnChooser::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + for (uint8 n = 0; n < kMaxClasses; n++) + { +// if (n != m_nClass) +// { + g_pDrawPrim->SetTexture( m_hClassIcon[n] ); + SetupQuadUVs(m_ClassPoly[n], m_hClassIcon[n], 0.0f, 0.0f, m_fTexScale, m_fTexScale); + g_pDrawPrim->DrawPrim( &m_ClassPoly[n], 1 ); +// } + } + + for (n = 0; n < kMaxItemsPerClass && m_hItemIcon[n]; n++) + { + g_pDrawPrim->SetTexture( m_hItemIcon[n] ); + SetupQuadUVs(m_ItemPoly[n], m_hItemIcon[n], 0.0f, 0.0f, m_fTexScale, m_fTexScale); + g_pDrawPrim->DrawPrim( &m_ItemPoly[n], 1 ); + } + + m_pStr->Render(); +} + + +void CHUDWpnChooser::Update() +{ + m_bDraw = !!g_pInterfaceMgr->IsChoosingWeapon(); + if (!m_bDraw) return; + + if (g_pInterfaceResMgr->GetScreenWidth() != m_nScreenWidth) + { + m_nScreenWidth = g_pInterfaceResMgr->GetScreenWidth(); + if (m_nScreenWidth < 1024) + m_fScale = (float)m_nScreenWidth / 1024.0f; + else + m_fScale = 1.0f; + uint8 h = (uint8)(m_fTextHeight * m_fScale); + m_pStr->SetCharScreenHeight(h); + + uint16 w = ((uint16)(m_nScreenWidth) / 2) - 20; + m_pStr->SetWrapWidth(w); + + + float cw = m_fScale * m_fIconHt; + float x = ((float)m_nScreenWidth - ((float)kMaxClasses * cw)) / 2.0f; + x += cw / 2.0f; + + + for( uint8 i = 0; i < kMaxClasses; ++i ) + m_fColumnXPos[i] = x + (float)i * cw; + + } + + uint8 nClass = g_pInterfaceMgr->GetWeaponChooser()->GetCurrentClass(); + uint8 nWpn = g_pInterfaceMgr->GetWeaponChooser()->GetCurrentSelection(); + + if (nClass > 0) + m_nClass = nClass - 1; + else + { + m_nClass = g_pWeaponMgr->GetWeaponClass( nWpn ) - 1; + } + + if (m_nClass >= kMaxClasses) + { + m_bDraw = LTFALSE; + g_pInterfaceMgr->GetWeaponChooser()->Close(); + return; + } + + char szTmp[64] = ""; + float fHeight = m_fIconHt * m_fScale; + sprintf(szTmp,"interface\\hud\\WpnClass%d.dtx",(m_nClass+1)); + m_hClassIcon[m_nClass] = g_pInterfaceResMgr->GetTexture( szTmp ); + + uint32 tw,th; + g_pTexInterface->GetTextureDims(m_hClassIcon[m_nClass],tw,th); + + float fBaseWidth = (float)tw * ( fHeight / (float)th ); + float fBaseX = (float)m_fColumnXPos[m_nClass] - (fBaseWidth / 2.0f); + + g_pDrawPrim->SetXYWH( &m_ClassPoly[m_nClass], fBaseX, 0.0f, fBaseWidth, fHeight ); + + float x = fBaseX; + for (uint8 n = m_nClass; n > 0; n--) + { + x -= fHeight; + g_pDrawPrim->SetXYWH( &m_ClassPoly[n-1], x, 0.0f, fHeight, fHeight ); + } + x = fBaseX + fBaseWidth; + for (n = m_nClass+1; n < kMaxClasses; n++) + { + g_pDrawPrim->SetXYWH( &m_ClassPoly[n], x, 0.0f, fHeight, fHeight ); + x += fHeight; + } + + for (n = 0; n < kMaxClasses; n++) + { + if (n == m_nClass) continue; + + bool bHasOne = false; + for (uint8 i = 0; i < kMaxItemsPerClass && !bHasOne; i++) + { + bHasOne = (g_pPlayerStats->HaveWeapon( m_nWeaponID[n][i] ) && g_pPlayerMgr->GetClientWeaponMgr()->CanChangeToWeapon(m_nWeaponID[n][i])); + } + + if (bHasOne) + sprintf(szTmp,"interface\\hud\\WpnClass%dU.dtx",(n+1)); + else + sprintf(szTmp,"interface\\hud\\WpnClass%dD.dtx",(n+1)); + m_hClassIcon[n] = g_pInterfaceResMgr->GetTexture( szTmp ); + + } + + + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( nWpn ); + if (pWeapon) + m_pStr->SetText(pWeapon->szShortName); + else + m_pStr->SetText(""); + + + uint8 nSlot = 0; + float y = fHeight; + for (uint8 i = 0; i < kMaxItemsPerClass; i++) + { + m_hItemIcon[nSlot] = LTNULL; + if (g_pPlayerStats->HaveWeapon( m_nWeaponID[m_nClass][i] )) + { + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( m_nWeaponID[m_nClass][i] ); + if (pWeapon) + { + std::string icon; + + if (!g_pPlayerMgr->GetClientWeaponMgr()->CanChangeToWeapon(m_nWeaponID[m_nClass][i])) + { + icon = pWeapon->GetDisabledIcon(); + } + else if (m_nWeaponID[m_nClass][i] == nWpn) + { + icon = pWeapon->GetNormalIcon(); + } + else + { + icon = pWeapon->GetUnselectedIcon(); + } + m_hItemIcon[nSlot] = g_pInterfaceResMgr->GetTexture( icon.c_str() ); + + uint32 tw,th; + g_pTexInterface->GetTextureDims(m_hItemIcon[nSlot],tw,th); + + float fWidth = (float)tw * ( fHeight / (float)th ); + float x = (float)m_fColumnXPos[m_nClass] - (fWidth / 2.0f); + + g_pDrawPrim->SetXYWH( &m_ItemPoly[nSlot], x, y, fWidth, fHeight ); + + if (m_nWeaponID[m_nClass][i] == nWpn) + { + if (m_nClass >= kMaxClasses / 2) + { + m_pStr->SetPosition(x-2.0f,y+2.0f); + m_pStr->SetAlignmentH(CUI_HALIGN_RIGHT); + } + else + { + m_pStr->SetPosition(x+fWidth+2.0f,y+2.0f); + m_pStr->SetAlignmentH(CUI_HALIGN_LEFT); + } + } + + + nSlot++; + y += fHeight; + + } + } + + } + +} + +void CHUDWpnChooser::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + + m_fIconHt = (float)g_pLayoutMgr->GetChooserIconHeight(nCurrentLayout,48); + m_TextColor = g_pLayoutMgr->GetChooserTextColor(nCurrentLayout,argbWhite); + m_fTextHeight = (float)g_pLayoutMgr->GetChooserTextSize(nCurrentLayout,20); + m_fTexScale = g_pLayoutMgr->GetChooserTextureScale(nCurrentLayout,0.75f); + + +} + + + +//****************************************************************************************** +//** +//** HUD Weapon Chooser display +//** +//****************************************************************************************** + +CHUDAmmoChooser::CHUDAmmoChooser() +{ + m_UpdateFlags = kHUDChooser; + m_bDraw = LTFALSE; + m_fScale = 0.0f; + m_fTexScale = 0.0f; + m_nScreenWidth = 0; + m_pStr = LTNULL; + m_pWpnStr = LTNULL; +} + +CHUDAmmoChooser::~CHUDAmmoChooser() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + if (m_pWpnStr) + { + g_pFontManager->DestroyPolyString(m_pWpnStr); + m_pWpnStr=LTNULL; + } + +} + + +LTBOOL CHUDAmmoChooser::Init() +{ + + UpdateLayout(); + + + g_pDrawPrim->SetRGBA( &m_WeaponPoly, argbWhite ); + + m_hWeaponIcon = NULL; + + for (int i = 0; i < kMaxAmmoTypes; ++i ) + { + g_pDrawPrim->SetRGBA( &m_AmmoPoly[i], argbWhite ); + + m_hAmmoIcon[i] = NULL; + + } + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f, 0.0f); + m_pStr->SetColor(m_TextColor); + + m_pWpnStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f, 0.0f); + m_pWpnStr->SetColor(m_TextColor); + + + return LTTRUE; +} + + +void CHUDAmmoChooser::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + g_pDrawPrim->SetTexture( m_hWeaponIcon ); + SetupQuadUVs(m_WeaponPoly, m_hWeaponIcon, 0.0f, 0.0f, m_fTexScale, m_fTexScale); + g_pDrawPrim->DrawPrim( &m_WeaponPoly, 1 ); + + for (uint8 n = 0; m_hAmmoIcon[n] && n < kMaxAmmoTypes; n++) + { + g_pDrawPrim->SetTexture( m_hAmmoIcon[n] ); + SetupQuadUVs(m_AmmoPoly[n], m_hAmmoIcon[n], 0.0f, 0.0f, m_fTexScale, m_fTexScale); + g_pDrawPrim->DrawPrim( &m_AmmoPoly[n], 1 ); + } + + m_pStr->Render(); + m_pWpnStr->Render(); +} + + +void CHUDAmmoChooser::Update() +{ + m_bDraw = !!g_pInterfaceMgr->IsChoosingAmmo(); + if (!m_bDraw) return; + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( !pClientWeapon ) + { + m_bDraw = LTFALSE; + g_pInterfaceMgr->GetAmmoChooser()->Close(); + return; + } + + WEAPON const *pWeapon = pClientWeapon->GetWeapon(); + if (!pWeapon || pWeapon->nNumAmmoIds <= 1) + { + m_bDraw = LTFALSE; + g_pInterfaceMgr->GetAmmoChooser()->Close(); + return; + } + + if (g_pInterfaceResMgr->GetScreenWidth() != m_nScreenWidth) + { + m_nScreenWidth = g_pInterfaceResMgr->GetScreenWidth(); + if (m_nScreenWidth < 1024) + m_fScale = (float)m_nScreenWidth / 1024.0f; + else + m_fScale = 1.0f; + + uint8 h = (uint8)(m_fTextHeight * m_fScale); + m_pStr->SetCharScreenHeight(h); + m_pWpnStr->SetCharScreenHeight(h); + + uint16 w = ((uint16)(m_nScreenWidth) / 2) - 20; + m_pStr->SetWrapWidth(w); + m_pWpnStr->SetWrapWidth(w); + + } + + + float fHeight = m_fIconHt * m_fScale; + + std::string icon = pWeapon->GetNormalIcon(); + m_hWeaponIcon = g_pInterfaceResMgr->GetTexture( icon.c_str() ); + + uint32 tw,th; + g_pTexInterface->GetTextureDims(m_hWeaponIcon,tw,th); + + float fWidth = (float)tw * ( fHeight / (float)th ); + float x = ((float)m_nScreenWidth / 2.0f); + g_pDrawPrim->SetXYWH( &m_WeaponPoly, x-fWidth, 0.0f, fWidth, fHeight ); + + uint8 nSlot = 0; + uint8 nCurrAmmo = g_pInterfaceMgr->GetAmmoChooser()->GetCurrentSelection(); + float y = fHeight; + + + m_pWpnStr->SetText(pWeapon->szShortName); + m_pWpnStr->SetPosition(x+2.0f,2.0f); + + for (uint8 n = 0; n < pWeapon->nNumAmmoIds && n < kMaxAmmoTypes; n++) + { + uint8 nAmmoID = pWeapon->aAmmoIds[n]; + if (g_pPlayerStats->GetAmmoCount(nAmmoID) <= 0) continue; + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoID); + if (!pAmmo) continue; + + + icon = ""; + if (nAmmoID == nCurrAmmo) + { + icon = pAmmo->GetNormalIcon(); + } + else + { + icon = pAmmo->GetUnselectedIcon(); + } + + m_hAmmoIcon[nSlot] = g_pInterfaceResMgr->GetTexture( icon.c_str() ); + if (!m_hAmmoIcon[nSlot]) continue; + + uint32 tw,th; + g_pTexInterface->GetTextureDims(m_hAmmoIcon[nSlot],tw,th); + float fWidth = (float)tw * ( fHeight / (float)th ); + + g_pDrawPrim->SetXYWH( &m_AmmoPoly[nSlot], x-fWidth, y, fWidth, fHeight ); + + + char szTmp[256] = ""; + + if (pWeapon->bInfiniteAmmo) + LTStrCpy(szTmp,pAmmo->szShortName,sizeof(szTmp)); + else + sprintf(szTmp,"(%d/%d) %s",g_pPlayerStats->GetAmmoCount(nAmmoID), pAmmo->GetMaxAmount(LTNULL), pAmmo->szShortName ); + if (nAmmoID == nCurrAmmo) + { + m_pStr->SetText( szTmp); + m_pStr->SetPosition(x+2.0f,y+2.0f); + } + + nSlot++; + y += fHeight; + + } + m_hAmmoIcon[nSlot] = NULL; + +} + +void CHUDAmmoChooser::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + + m_fIconHt = (float)g_pLayoutMgr->GetChooserIconHeight(nCurrentLayout,48); + m_TextColor = g_pLayoutMgr->GetChooserTextColor(nCurrentLayout,argbWhite); + m_fTextHeight = (float)g_pLayoutMgr->GetChooserTextSize(nCurrentLayout,20); + m_fTexScale = g_pLayoutMgr->GetChooserTextureScale(nCurrentLayout,0.75f); + + +} + diff --git a/Jack/ClientShellDLL/HUDChooser.h b/Jack/ClientShellDLL/HUDChooser.h new file mode 100644 index 00000000..8201a36b --- /dev/null +++ b/Jack/ClientShellDLL/HUDChooser.h @@ -0,0 +1,106 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDChooser.h +// +// PURPOSE : HUDItem to display weapon and ammo choices +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_CHOOSER_H +#define __HUD_CHOOSER_H + +#include "HUDItem.h" + +class CHUDWpnChooser : public CHUDItem +{ +public: + CHUDWpnChooser(); + ~CHUDWpnChooser(); + + LTBOOL Init(); + + void Render(); + void Update(); + + void UpdateLayout(); + + enum Constants + { + kMaxClasses = 6, + kMaxItemsPerClass = 16 + }; + + +private: + float m_fColumnXPos[kMaxClasses]; + float m_fIconHt; + float m_fTextHeight; + uint32 m_TextColor; + float m_fTexScale; + + + + float m_fScale; + uint32 m_nScreenWidth; + + LTBOOL m_bDraw; + uint8 m_nClass; + + uint8 m_nWeaponID[kMaxClasses][kMaxItemsPerClass]; + + + LTPoly_GT4 m_ClassPoly[kMaxClasses]; + HTEXTURE m_hClassIcon[kMaxClasses]; + + LTPoly_GT4 m_ItemPoly[kMaxItemsPerClass]; + HTEXTURE m_hItemIcon[kMaxItemsPerClass]; + + CUIFormattedPolyString *m_pStr; + +}; + + +class CHUDAmmoChooser : public CHUDItem +{ +public: + CHUDAmmoChooser(); + ~CHUDAmmoChooser(); + + LTBOOL Init(); + + void Render(); + void Update(); + + void UpdateLayout(); + + enum Constants + { + kMaxAmmoTypes = 10, + }; + + +private: + float m_fIconHt; + float m_fTextHeight; + uint32 m_TextColor; + float m_fTexScale; + + float m_fScale; + uint32 m_nScreenWidth; + + LTBOOL m_bDraw; + + LTPoly_GT4 m_WeaponPoly; + HTEXTURE m_hWeaponIcon; + + LTPoly_GT4 m_AmmoPoly[kMaxAmmoTypes]; + HTEXTURE m_hAmmoIcon[kMaxAmmoTypes]; + + CUIFormattedPolyString *m_pWpnStr; + CUIFormattedPolyString *m_pStr; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDCompass.cpp b/Jack/ClientShellDLL/HUDCompass.cpp new file mode 100644 index 00000000..3565088e --- /dev/null +++ b/Jack/ClientShellDLL/HUDCompass.cpp @@ -0,0 +1,133 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCompass.cpp +// +// PURPOSE : HUDItem to display a compass +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "PlayerMgr.h" + +//****************************************************************************************** +//** +//** HUD Compass display +//** +//****************************************************************************************** + +CHUDCompass::CHUDCompass() +{ + m_UpdateFlags = kHUDFrame; + m_hBack = LTNULL; + m_hNeedle = LTNULL; + m_bDraw = LTFALSE; + m_eLevel = kHUDRenderDead; + m_fLastRotation = 0.0f; +} + + +LTBOOL CHUDCompass::Init() +{ + + + for (int i =0; i < 2; i++) + { + g_pDrawPrim->SetRGBA(&m_Poly[i],argbWhite); + } + + m_hBack = g_pInterfaceResMgr->GetTexture("interface\\hud\\compass_back.dtx"); + m_hNeedle = g_pInterfaceResMgr->GetTexture("interface\\hud\\compass_needle.dtx"); + + SetupQuadUVs(m_Poly[0], m_hBack, 0.0f, 0.0f, 1.0f, 1.0f); + SetupQuadUVs(m_Poly[1], m_hNeedle, 0.0f, 0.0f, 1.0f, 1.0f); + + UpdateLayout(); + + return LTTRUE; +} + +void CHUDCompass::Term() +{ + +} + +void CHUDCompass::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + g_pDrawPrim->SetTexture(m_hBack); + g_pDrawPrim->DrawPrim(&m_Poly[0]); + + + g_pDrawPrim->SetTexture(m_hNeedle); + g_pDrawPrim->DrawPrim(&m_Poly[1]); + +} + +void CHUDCompass::Update() +{ + if (!m_bDraw) return; + + static float fRat = (2.0f * (float)sin(MATH_PI/4.0f)); + float fWorldNorth = GetConsoleFloat("WorldNorth",0.0f); + + + float cx = (float)(m_BasePos.x + m_nSize/2); + float cy = (float)(m_BasePos.y + m_nSize/2); + float fw = (float)(m_nSize) * g_pInterfaceResMgr->GetXRatio(); + float r = (float)(m_nSize) / fRat; + + float fx = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[1],fx,fy,fw,fw); + + float fRot = (fWorldNorth - (MATH_PI * 0.75f)) - g_pPlayerMgr->GetYaw(); + + if (g_pPlayerMgr->IsCameraAttachedToHead()) + { + fRot = m_fLastRotation; + } + else + { + m_fLastRotation = fRot; + } + + + + + float x[4]; + float y[4]; + + + for (uint8 i = 0; i < 4; i++) + { + x[i] = (cx + (float)cos(fRot) * r) * g_pInterfaceResMgr->GetXRatio(); + y[i] = (cy + (float)sin(fRot) * r) * g_pInterfaceResMgr->GetXRatio(); + fRot += (MATH_PI / 2); + } + + g_pDrawPrim->SetXY4(&m_Poly[0],x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); + + + +} + +void CHUDCompass::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetCompassPos(nCurrentLayout); + m_nSize = g_pLayoutMgr->GetCompassSize(nCurrentLayout); + +} + + + diff --git a/Jack/ClientShellDLL/HUDCompass.h b/Jack/ClientShellDLL/HUDCompass.h new file mode 100644 index 00000000..2e1f6495 --- /dev/null +++ b/Jack/ClientShellDLL/HUDCompass.h @@ -0,0 +1,53 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCompass.h +// +// PURPOSE : HUDItem to display a compass +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_COMPASS_H +#define __HUD_COMPASS_H + +#include "HUDItem.h" + + + +//****************************************************************************************** +//** HUD Compass display +//****************************************************************************************** +class CHUDCompass : public CHUDItem +{ +public: + CHUDCompass(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + void Toggle() {m_bDraw = !m_bDraw;} + void SetDraw( bool bDraw ) { m_bDraw = bDraw; } + bool GetDraw( ) { return m_bDraw; } + +private: + LTIntPt m_BasePos; + uint16 m_nSize; + + bool m_bDraw; + float m_fLastRotation; + + + LTPoly_GT4 m_Poly[2]; + HTEXTURE m_hBack; + HTEXTURE m_hNeedle; + + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDCrosshair.cpp b/Jack/ClientShellDLL/HUDCrosshair.cpp new file mode 100644 index 00000000..1072bbce --- /dev/null +++ b/Jack/ClientShellDLL/HUDCrosshair.cpp @@ -0,0 +1,628 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCrosshair.cpp +// +// PURPOSE : HUDItem to display crosshair +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "HUDCrosshair.h" +#include "PlayerStats.h" +#include "SurfaceFunctions.h" +#include "CharacterFX.h" +#include "BodyFX.h" +#include "TO2GameClientShell.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "TargetMgr.h" +#include "AutoTargetMgr.h" +#include "CMoveMgr.h" +#include "VehicleMgr.h" + +namespace +{ + VarTrack g_vtScopeLRGap; + VarTrack g_vtScopeUDGap; + VarTrack g_vtScopeLRRadius; + VarTrack g_vtScopeUDRadius; + +} + + + +//****************************************************************************************** +//** HUD crosshair +//****************************************************************************************** +CHUDCrosshair::CHUDCrosshair() +{ + m_UpdateFlags = kHUDFrame; + m_bEnabled = true; + m_bArmed = false; + m_pStr = LTNULL; + m_fScale = 0.0f; + m_x = 0.0f; + m_y = 0.0f; + m_dbgx = 0.0f; + m_dbgy = 0.0f; + m_style = 0; + m_bCanActivateTarget = true; + m_nTargetTeam = INVALID_TEAM; + m_eLevel = kHUDRenderDead; +} + + +LTBOOL CHUDCrosshair::Init() +{ + + g_pDrawPrim->SetRGBA(&m_Poly[0],argbWhite); + g_pDrawPrim->SetRGBA(&m_Poly[1],argbWhite); + g_pDrawPrim->SetRGBA(&m_Poly[2],argbWhite); + + + g_vtScopeLRGap.Init(g_pLTClient, "ScopeLRGap", NULL, 32.0f); + g_vtScopeUDGap.Init(g_pLTClient, "ScopeUPGap", NULL, 32.0f); + g_vtScopeLRRadius.Init(g_pLTClient, "ScopeLRRadius", NULL, 0.377f); + g_vtScopeUDRadius.Init(g_pLTClient, "ScopeUDRadius", NULL, 0.34f); + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_StrPos = LTIntPt(320,250); + m_nStrSz = 16; + m_nStrJust = 1; + m_StrColor = argbWhite; + m_StrDisColor = 0x80808080; + + m_pStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f,0.0f); + m_pStr->SetColor(m_StrColor); + + m_DbgPos = LTIntPt(360,200); + m_nDbgSz = 12; + m_nDbgWidth = 220; + m_nDbgJust = 0; + m_DbgColor = argbWhite; + + m_pDbgStr = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f,0.0f); + m_pDbgStr->SetColor(m_DbgColor); + m_pDbgStr->SetWrapWidth(m_nDbgWidth); + + + uint8 style = (uint8)GetConsoleInt("CrosshairStyle",0); + SetStyle(style); + + UpdateLayout(); + + + return LTTRUE; +} + +void CHUDCrosshair::Term() +{ + if (m_pStr) + { + g_pFontManager->DestroyPolyString(m_pStr); + m_pStr=LTNULL; + } + if (m_pDbgStr) + { + g_pFontManager->DestroyPolyString(m_pDbgStr); + m_pDbgStr=LTNULL; + } +} + +void CHUDCrosshair::Render() +{ + + SetRenderState(); + bool bRenderScope = false; + if (g_pInterfaceMgr->IsOverlayActive(OVM_SCOPE)) + { + if (!g_pPlayerMgr->UsingCamera()) + { + RenderScope(); + bRenderScope = true; + } + } + + if( !bRenderScope ) + { + // See if we can show a crosshair or not... + if (g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() && + !g_pMoveMgr->GetVehicleMgr()->CanShowCrosshair()) + { + return; + } + + if (!m_bEnabled) + return; + + if (g_pPlayerMgr->IsPlayerDead()) + { + g_pDrawPrim->SetTexture(LTNULL); + g_pDrawPrim->SetRGBA(&m_Poly[2],argbWhite); + + float x = 319.0f * g_pInterfaceResMgr->GetXRatio(); + float y = 239.0f * g_pInterfaceResMgr->GetYRatio(); + float w = 2.0f * g_pInterfaceResMgr->GetXRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,w,w); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + } + else if (CAutoTargetMgr::Instance().IsLockedOn()) + { + + g_pDrawPrim->SetTexture(LTNULL); + g_pDrawPrim->SetRGBA(&m_Poly[2],argbWhite); + + float x = (float)g_pInterfaceResMgr->GetScreenWidth() / 2.0f; + float y = (float)g_pInterfaceResMgr->GetScreenHeight() / 2.0f; + float w = 2.0f * g_pInterfaceResMgr->GetXRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,w,w); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + LTVector pos = CAutoTargetMgr::Instance().GetCrosshairPos(); + + + w = m_fAccurateSz; + x = pos.x - w/2.0f; + y = pos.y - w/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,w,w); + + w = m_fInaccurateSz; + x = pos.x - w/2.0f; + y = pos.y - w/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[1],x,y,w,w); + + g_pDrawPrim->SetTexture(m_hAccurate); + g_pDrawPrim->DrawPrim(&m_Poly[0],1); + + if (GetConsoleInt("CrosshairDynamic",1)) + { + g_pDrawPrim->SetTexture(m_hInaccurate); + g_pDrawPrim->DrawPrim(&m_Poly[1],1); + } + + + } + else + { + float cx = (float)g_pInterfaceResMgr->GetScreenWidth() / 2.0f; + float cy = (float)g_pInterfaceResMgr->GetScreenHeight() / 2.0f; + float w = m_fAccurateSz; + float x = (float)cx - w/2.0f; + float y = (float)cy - w/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,w,w); + + w = m_fInaccurateSz; + x = (float)cx - w/2.0f; + y = (float)cy - w/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[1],x,y,w,w); + + g_pDrawPrim->SetTexture(m_hAccurate); + g_pDrawPrim->DrawPrim(&m_Poly[0],1); + + if (GetConsoleInt("CrosshairDynamic",1)) + { + g_pDrawPrim->SetTexture(m_hInaccurate); + g_pDrawPrim->DrawPrim(&m_Poly[1],1); + } + + } + } + + if( m_pStr ) + { + m_pStr->SetPosition(m_x+2.0f,m_y+2.0f); + m_pStr->SetColor(argbBlack); + m_pStr->Render(); + + m_pStr->SetPosition(m_x,m_y); + if (m_bCanActivateTarget) + { + if (m_nTargetTeam == INVALID_TEAM) + { + m_pStr->SetColor(m_StrColor); + } + else + { + m_pStr->SetColor(m_TeamColor[m_nTargetTeam]); + } + } + else + { + m_pStr->SetColor(m_StrDisColor); + } + + m_pStr->Render(); + } + + if( m_pDbgStr ) + { + m_pDbgStr->SetPosition(m_dbgx+1.0f,m_dbgy+1.0f); + m_pDbgStr->SetColor(argbBlack); + m_pDbgStr->Render(); + + m_pDbgStr->SetColor(m_DbgColor); + m_pDbgStr->SetPosition(m_dbgx,m_dbgy); + m_pDbgStr->Render(); + } +} + + +void CHUDCrosshair::Update() +{ + if (!m_bEnabled) + return; + + + + IClientWeaponBase* pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + + float fPerturb = 1.0f; + + // Just use the weapon's dynamic perturb to determine the amount the + // crosshair should scale... + if (pClientWeapon) + { + fPerturb = pClientWeapon->GetDynamicPerturb(); + } + + uint8 style = (uint8)GetConsoleInt("CrosshairStyle",0); + if (style != m_style) + SetStyle(style); + + bool bDynamic = (!!GetConsoleInt("CrosshairDynamic",1)); + + + uint32 cr = (uint32)(GetConsoleInt("CrosshairRed",0x00)); + uint32 cg = (uint32)(GetConsoleInt("CrosshairGreen",0xFF)); + uint32 cb = (uint32)(GetConsoleInt("CrosshairBlue",0xFF)); + uint32 ca = (uint32)( (1.0f - fPerturb) * 255.0f); + + if (!bDynamic) + ca = 0xFF; + + uint32 crosscolor = SET_ARGB(ca,cr,cg,cb); + g_pDrawPrim->SetRGBA(&m_Poly[0],crosscolor); + + if (bDynamic) + { + ca = (uint32)( fPerturb * 255.0f); + crosscolor = SET_ARGB(ca,cr,cg,cb); + g_pDrawPrim->SetRGBA(&m_Poly[1],crosscolor); + } + + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + m_fScale = g_pInterfaceResMgr->GetXRatio(); + + ScalePolies(); + + m_x = (float)m_StrPos.x * m_fScale; + m_y = (float)m_StrPos.y * m_fScale; + uint8 nTextSize = (uint8)((float)m_nStrSz * m_fScale); + m_pStr->SetCharScreenHeight(nTextSize); + + m_dbgx = (float)m_DbgPos.x * m_fScale; + m_dbgy = (float)m_DbgPos.y * m_fScale; + nTextSize = (uint8)((float)m_nDbgSz * m_fScale); + m_pDbgStr->SetCharScreenHeight(nTextSize); + } + + m_bCanActivateTarget = g_pPlayerMgr->GetTargetMgr()->CanActivateTarget(); + m_nTargetTeam = g_pPlayerMgr->GetTargetMgr()->GetTargetTeam(); + + if (g_pPlayerMgr->IsSearching()) + { + m_pStr->SetText(LoadTempString(IDS_TARGET_SEARCHING)); + return; + } + + HOBJECT hObj = g_pPlayerMgr->GetTargetMgr()->GetTargetObject(); + uint16 nID = g_pPlayerMgr->GetTargetMgr()->GetTargetStringID(); + + if (strcmp(g_pPlayerMgr->GetTargetMgr()->GetDebugString(),m_pDbgStr->GetText())) + m_pDbgStr->SetText(g_pPlayerMgr->GetTargetMgr()->GetDebugString()); + + //track whether or not we've zoomed since our last update + static bool bZoomed = false; + if( g_pPlayerMgr->IsZooming() ) + { + if (!bZoomed) + { + bZoomed = true; + m_pStr->SetText(""); + } + + return; + } + + //if we have zoomed since our last full update, force an update + if (!bZoomed && hObj == m_hObj && nID == m_nString) + return; + + bZoomed = false; + + m_hObj = hObj; + m_nString = nID; + m_pStr->SetText(g_pPlayerMgr->GetTargetMgr()->GetTargetString()); + + + // Check for special case of camera-activate mode... + + bool bUsingCamera = false; + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(g_pPlayerStats->GetCurrentAmmo()); + if (pAmmo && pAmmo->eInstDamageType == DT_GADGET_CAMERA) + { + bUsingCamera = true; + } + if (!bUsingCamera || !g_pPlayerMgr->IsZoomed()) + { + g_pInterfaceMgr->RemoveOverlay(OVM_CAMERA); + g_pInterfaceMgr->RemoveOverlay(OVM_CAMERA_TARGET); + return; + } + + + if (hObj) + { + uint32 dwUserFlags = 0; + g_pCommonLT->GetObjectFlags(hObj, OFT_User, dwUserFlags); + + if ( (dwUserFlags & USRFLG_GADGET_CAMERA) && g_pPlayerMgr->InCameraGadgetRange( hObj ) ) + { + g_pInterfaceMgr->CreateOverlay(OVM_CAMERA_TARGET); + g_pInterfaceMgr->RemoveOverlay(OVM_CAMERA); + return; + + } + } + + g_pInterfaceMgr->CreateOverlay(OVM_CAMERA); + g_pInterfaceMgr->RemoveOverlay(OVM_CAMERA_TARGET); + + +} + + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDCrosshair::RenderScope() +// +// PURPOSE: Draw the scope crosshair +// +// ----------------------------------------------------------------------- // +void CHUDCrosshair::RenderScope() +{ + g_pDrawPrim->SetTexture(LTNULL); + + g_pDrawPrim->SetRGBA(&m_Poly[2],argbBlack); + + float cx = 320.0f * g_pInterfaceResMgr->GetXRatio(); + float cy = 240.0f * g_pInterfaceResMgr->GetYRatio(); + + float hR = g_vtScopeLRRadius.GetFloat() * cx * 2.0f; + float hGap = g_vtScopeLRGap.GetFloat() * g_pInterfaceResMgr->GetXRatio(); + float vR = g_vtScopeUDRadius.GetFloat() * cx * 2.0f; + float vGap = g_vtScopeUDGap.GetFloat() * g_pInterfaceResMgr->GetXRatio(); + + + //left post + float x = cx - hR; + float y = cy - 2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,(hR-hGap),4.0f); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //right post + x = cx + hGap; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,(hR-hGap),4.0f); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //horizontal hair + x = cx - hGap; + y = cy - 1.0f; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,(hGap * 2.0f),2.0f); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + + + //top post + x = cx - 2.0f; + y = cy - vR; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,4.0f,(vR-vGap)); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //bottom post + y = cy + vGap; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,4.0f,(vR-vGap)); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //vertical hair + x = cx - 1.0f; + y = cy - vGap; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,2.0f,(vGap * 2.0f)); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + + uint32 gold = SET_ARGB(255,140,128,20); + g_pDrawPrim->SetRGBA(&m_Poly[2],gold); + + //left highlight + x = cx - hR; + y = cy - 1.0f; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,(hR-hGap),2.0f); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //right highlight + x = cx + vGap; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,(hR-hGap),2.0f); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //top highlight + x = cx - 1.0f; + y = cy - vR; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,2.0f,(vR-vGap)); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + //bottom highlight + y = cy + vGap; + g_pDrawPrim->SetXYWH(&m_Poly[2],x,y,2.0f,(vR-vGap)); + g_pDrawPrim->DrawPrim(&m_Poly[2],1); + + +} + + + +void CHUDCrosshair::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + LTIntPt pos = g_pLayoutMgr->GetActivationTextPos(nCurrentLayout); + if (pos.x > 0) + m_StrPos = pos; + + uint8 nTmp = g_pLayoutMgr->GetActivationTextSize(nCurrentLayout); + if (nTmp > 0) + m_nStrSz = nTmp; + + m_nStrJust = g_pLayoutMgr->GetActivationTextJustify(nCurrentLayout); + + uint32 color = g_pLayoutMgr->GetActivationTextColor(nCurrentLayout); + if (color > 0) + m_StrColor = color; + + color = g_pLayoutMgr->GetActivationTextDisabledColor(nCurrentLayout); + if (color > 0) + m_StrDisColor = color; + + pos = g_pLayoutMgr->GetDebugTextPos(nCurrentLayout); + if (pos.x > 0) + m_DbgPos = pos; + + nTmp = g_pLayoutMgr->GetDebugTextSize(nCurrentLayout); + if (nTmp > 0) + m_nDbgSz = nTmp; + + uint16 nWid = g_pLayoutMgr->GetDebugTextWidth(nCurrentLayout); + if (nWid > 0) + m_nDbgWidth = nWid; + + m_nDbgJust = g_pLayoutMgr->GetDebugTextJustify(nCurrentLayout); + + color = g_pLayoutMgr->GetDebugTextColor(nCurrentLayout); + if (color > 0) + m_DbgColor = color; + + LTVector vCol = g_pLayoutMgr->GetVector("Miscellaneous","Team1Color"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_TeamColor[0] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector("Miscellaneous","Team2Color"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_TeamColor[1] = SET_ARGB(0xFF,nR,nG,nB); + + switch (m_nStrJust) + { + case 0: + m_pStr->SetAlignmentH(CUI_HALIGN_LEFT); + break; + case 1: + m_pStr->SetAlignmentH(CUI_HALIGN_CENTER); + break; + case 2: + m_pStr->SetAlignmentH(CUI_HALIGN_RIGHT); + break; + } + + switch (m_nDbgJust) + { + case 0: + m_pDbgStr->SetAlignmentH(CUI_HALIGN_LEFT); + break; + case 1: + m_pDbgStr->SetAlignmentH(CUI_HALIGN_CENTER); + break; + case 2: + m_pDbgStr->SetAlignmentH(CUI_HALIGN_RIGHT); + break; + } +} + + + + +void CHUDCrosshair::SetStyle(uint8 style) +{ + char *szTag = "HUDCrosshair"; + char szAtt[32]; + sprintf(szAtt,"Crosshair%d",style); + + if (!g_pLayoutMgr->HasValue(szTag,szAtt)) + { + style = 0; + sprintf(szAtt,"Crosshair%d",0); + } + + + char szTexA[256]; + char szTexI[256]; + g_pLayoutMgr->GetString(szTag,szAtt,szTexA,sizeof(szTexA)); + SAFE_STRCPY(szTexI,szTexA); + strcat(szTexA,"_A.dtx"); + strcat(szTexI,"_I.dtx"); + + + uint32 tw,th; + m_hAccurate = g_pInterfaceResMgr->GetTexture(szTexA); + g_pTexInterface->GetTextureDims(m_hAccurate,tw,th); + m_fAccurateSz = (float)tw; + + //setup the poly UV coords + SetupQuadUVs(m_Poly[0], m_hAccurate, 0.0f, 0.0f, 1.0f, 1.0f); + + m_hInaccurate = g_pInterfaceResMgr->GetTexture(szTexI); + g_pTexInterface->GetTextureDims(m_hInaccurate,tw,th); + m_fInaccurateSz = (float)tw; + + //setup the poly UV coords + SetupQuadUVs(m_Poly[1], m_hInaccurate, 0.0f, 0.0f, 1.0f, 1.0f); + + ScalePolies(); + + m_style = style; +} + +void CHUDCrosshair::ScalePolies() +{ + float x = (float)g_pInterfaceResMgr->GetScreenWidth() / 2.0f; + float y = (float)g_pInterfaceResMgr->GetScreenHeight() / 2.0f; + float sz = m_fAccurateSz; + + x -= sz/2.0f; + y -= sz/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,sz,sz); + + x = (float)g_pInterfaceResMgr->GetScreenWidth() / 2.0f; + y = (float)g_pInterfaceResMgr->GetScreenHeight() / 2.0f; + sz = m_fInaccurateSz; + + x -= sz/2.0f; + y -= sz/2.0f; + g_pDrawPrim->SetXYWH(&m_Poly[1],x,y,sz,sz); +}; + diff --git a/Jack/ClientShellDLL/HUDCrosshair.h b/Jack/ClientShellDLL/HUDCrosshair.h new file mode 100644 index 00000000..5590bb07 --- /dev/null +++ b/Jack/ClientShellDLL/HUDCrosshair.h @@ -0,0 +1,91 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDCrosshair.h +// +// PURPOSE : HUDItem to display crosshair +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_CROSSHAIR_H +#define __HUD_CROSSHAIR_H + +#include "HUDItem.h" + + +//****************************************************************************************** +//** HUD crosshair +//****************************************************************************************** +class CHUDCrosshair : public CHUDItem +{ +public: + CHUDCrosshair(); + + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + void RenderScope(); + + void Toggle() {m_bEnabled = !m_bEnabled;} + + void SetStyle(uint8 style); + +protected: + + void ScalePolies(); + + + LTPoly_GT4 m_Poly[3]; + + CUIFormattedPolyString* m_pStr; + LTIntPt m_StrPos; + uint8 m_nStrSz; + uint8 m_nStrJust; + uint32 m_StrColor; + uint32 m_StrDisColor; + uint32 m_TeamColor[2]; + + + CUIFormattedPolyString* m_pDbgStr; + LTIntPt m_DbgPos; + uint8 m_nDbgSz; + uint8 m_nDbgJust; + uint16 m_nDbgWidth; + uint32 m_DbgColor; + + float m_fScale; + float m_x; + float m_y; + float m_dbgx; + float m_dbgy; + + //activation data + HOBJECT m_hObj; + uint16 m_nString; + + bool m_bEnabled; + bool m_bArmed; + + bool m_bCamActive; + + HTEXTURE m_hAccurate; + HTEXTURE m_hInaccurate; + + float m_fAccurateSz; + float m_fInaccurateSz; + + uint8 m_style; + + bool m_bCanActivateTarget; + uint8 m_nTargetTeam; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDamage.cpp b/Jack/ClientShellDLL/HUDDamage.cpp new file mode 100644 index 00000000..6471af26 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDamage.cpp @@ -0,0 +1,114 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDamage.cpp +// +// PURPOSE : HUDItem to display player air meter +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "PlayerStats.h" +#include "DamageFxMgr.h" +#include "InterfaceMgr.h" + +//****************************************************************************************** +//** +//** HUD Air display +//** +//****************************************************************************************** + +CHUDDamage::CHUDDamage() +{ + m_UpdateFlags = kHUDDamage; + m_hIcon = LTNULL; + m_Poly = LTNULL; + m_bDraw = LTTRUE; + m_nIconHt = 0; +} + +CHUDDamage::~CHUDDamage() +{ + debug_deletea( m_hIcon ); + debug_deletea( m_Poly ); +} + + +LTBOOL CHUDDamage::Init() +{ + if( !g_pDamageFXMgr ) + return LTFALSE; + + int nNumDmgFX = g_pDamageFXMgr->GetNumDamageFX(); + + // Alloc the texture and poly arrays + + m_hIcon = debug_newa( HTEXTURE, nNumDmgFX ); + m_Poly = debug_newa( LTPoly_GT4, nNumDmgFX ); + + for( int i = 0; i < nNumDmgFX; ++i ) + { + m_hIcon[i] = g_pInterfaceResMgr->GetTexture( g_pDamageFXMgr->GetDamageFX( i )->m_szIcon ); + + g_pDrawPrim->SetRGBA( &m_Poly[i], argbWhite ); + SetupQuadUVs( m_Poly[i], m_hIcon[i], 0.0f, 0.0f, 1.0f, 1.0f ); + } + + UpdateLayout(); + return LTTRUE; +} + + +void CHUDDamage::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstActiveFX(); + while( pDamageFX ) + { + g_pDrawPrim->SetTexture( m_hIcon[pDamageFX->m_nID] ); + g_pDrawPrim->DrawPrim( &m_Poly[pDamageFX->m_nID], 1 ); + + pDamageFX = g_pDamageFXMgr->GetNextActiveFX(); + } +} + + +void CHUDDamage::Update() +{ + if (!m_bDraw) return; + + float x = (float)m_BasePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_BasePos.y * g_pInterfaceResMgr->GetYRatio(); + float sz = m_nIconHt * g_pInterfaceResMgr->GetYRatio(); + + uint32 nNumDamageFX = g_pDamageFXMgr->GetNumDamageFX(); + bool *aDamageSet = (bool*)alloca(nNumDamageFX); + memset(aDamageSet, 0, sizeof(aDamageSet[0]) * nNumDamageFX); + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstActiveFX(); + while( pDamageFX ) + { + if (!aDamageSet[pDamageFX->m_nID]) + { + g_pDrawPrim->SetXYWH( &m_Poly[pDamageFX->m_nID], x, y, sz, sz ); + y += sz; + aDamageSet[pDamageFX->m_nID] = true; + } + + pDamageFX = g_pDamageFXMgr->GetNextActiveFX(); + } +} + +void CHUDDamage::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetDamageBasePos(nCurrentLayout); + m_nIconHt = g_pLayoutMgr->GetDamageIconSize(nCurrentLayout); +} + diff --git a/Jack/ClientShellDLL/HUDDamage.h b/Jack/ClientShellDLL/HUDDamage.h new file mode 100644 index 00000000..135f65ac --- /dev/null +++ b/Jack/ClientShellDLL/HUDDamage.h @@ -0,0 +1,42 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDamage.h +// +// PURPOSE : HUDItem to display player damage icons +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DAMAGE_H +#define __HUD_DAMAGE_H + +#include "HUDItem.h" + + +class CHUDDamage : public CHUDItem +{ +public: + CHUDDamage(); + ~CHUDDamage(); + + LTBOOL Init(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + LTIntPt m_BasePos; + uint16 m_nIconHt; + + LTBOOL m_bDraw; + + + LTPoly_GT4 *m_Poly; + HTEXTURE *m_hIcon; // icon + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDamageDir.cpp b/Jack/ClientShellDLL/HUDDamageDir.cpp new file mode 100644 index 00000000..416ac049 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDamageDir.cpp @@ -0,0 +1,165 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDamageDir.cpp +// +// PURPOSE : HUDItem to display a compass +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "HUDDamageDir.h" +#include "PlayerMgr.h" + + +VarTrack g_vtDamageMinAlpha; +VarTrack g_vtDamageMaxAlpha; +VarTrack g_vtDamageShowAll; + +//****************************************************************************************** +//** +//** HUD Compass display +//** +//****************************************************************************************** + +CHUDDamageDir::CHUDDamageDir() +{ + m_UpdateFlags = kHUDFrame; + m_hArrow = LTNULL; + m_bDraw = LTFALSE; + m_fScale = 0.0f; +} + + +LTBOOL CHUDDamageDir::Init() +{ + m_hArrow = g_pInterfaceResMgr->GetTexture("interface\\hud\\damagearrow.dtx"); + + for (int i =0; i < kNumDamageSectors; i++) + { + g_pDrawPrim->SetRGBA(&m_Poly[i],argbWhite); + SetupQuadUVs(m_Poly[i], m_hArrow, 0.0f,0.0f,1.0f,1.0f); + } + + g_vtDamageMinAlpha.Init(g_pLTClient, "DamageMinAlpha", NULL, 0.25f); + g_vtDamageMaxAlpha.Init(g_pLTClient, "DamageMaxAlpha", NULL, 0.9f); + g_vtDamageShowAll.Init(g_pLTClient, "DamageShowAll", NULL, 0.0f); + + UpdateLayout(); + + return LTTRUE; +} + +void CHUDDamageDir::Term() +{ + +} + +void CHUDDamageDir::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + g_pDrawPrim->SetTexture(m_hArrow); + g_pDrawPrim->DrawPrim(m_Poly,kNumDamageSectors); + +} + +void CHUDDamageDir::Update() +{ + if (m_nSize <= 0) + { + m_bDraw = LTFALSE; + return; + } + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + UpdateScale(); + + float fAlphaRange = g_vtDamageMaxAlpha.GetFloat() - g_vtDamageMinAlpha.GetFloat(); + + float fDamTotal = 0.0f; + for (uint8 i = 0; i < kNumDamageSectors; i++) + { + float fDam = g_pPlayerMgr->GetDamageFromSector(i); + fDam = LTCLAMP( fDam, 0.0f, 1.0f ); + + if (g_vtDamageShowAll.GetFloat() > 0.0f && fDam < 0.1f) + fDam = 0.1f; + + fDamTotal += fDam; + + uint8 nAlpha = 0; + + + + if (fDam > 0.0f) + { + float fA = g_vtDamageMinAlpha.GetFloat() + fDam * fAlphaRange; + nAlpha = (uint8) (fA * 255.0f); + + } + + uint32 argbCol = SET_ARGB(nAlpha,255,255,255); + g_pDrawPrim->SetRGBA(&m_Poly[i],argbCol); + } + + m_bDraw = (fDamTotal > 0.0f); + +} + +void CHUDDamageDir::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_nSize = g_pLayoutMgr->GetDamageSize(nCurrentLayout); + + if (m_nSize == 0) + m_nSize = 48; + + UpdateScale(); + +} + + +void CHUDDamageDir::UpdateScale() +{ + m_fScale = g_pInterfaceResMgr->GetXRatio(); + + float r = (float)(m_nSize) / (2.0f * (float)sin(MATH_PI/4.0f)); + + float fx = 320.0f; + float fy = 240.0f; + float fw = (float)(m_nSize/2) * m_fScale; + + for (int n = 0; n < kNumDamageSectors; n++) + { + float fRot = ((float)n * MATH_PI * 2) / kNumDamageSectors; + + float x[4]; + float y[4]; + + float cx = fx + fw * (float)cos(fRot); + float cy = fy - fw * (float)sin(fRot); + + + fRot += (1.25f * MATH_PI); + + + for (uint8 i = 0; i < 4; i++) + { + x[i] = (cx + (float)cos(fRot) * r) * m_fScale; + y[i] = (cy - (float)sin(fRot) * r) * m_fScale; + fRot += (MATH_PI / 2); + } + + g_pDrawPrim->SetXY4(&m_Poly[n],x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]); + } + + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDamageDir.h b/Jack/ClientShellDLL/HUDDamageDir.h new file mode 100644 index 00000000..fa6e6b06 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDamageDir.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDamageDir.h +// +// PURPOSE : HUDItem to display directional damage info +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DAMAGE_DIR_H +#define __HUD_DAMAGE_DIR_H + +#include "HUDItem.h" + + + +//****************************************************************************************** +//** HUD directional damage display +//****************************************************************************************** +class CHUDDamageDir : public CHUDItem +{ +public: + CHUDDamageDir(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + void UpdateScale(); + +private: + uint16 m_nSize; + + LTBOOL m_bDraw; + float m_fScale; + + enum eConstants + { + kNumDamageSectors = 12, + }; + + + LTPoly_GT4 m_Poly[kNumDamageSectors]; + + HTEXTURE m_hArrow; + + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDecision.cpp b/Jack/ClientShellDLL/HUDDecision.cpp new file mode 100644 index 00000000..06e8054b --- /dev/null +++ b/Jack/ClientShellDLL/HUDDecision.cpp @@ -0,0 +1,289 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDecision.cpp +// +// PURPOSE : Implementation of CHUDDecision to display messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDDecision.h" +#include "InterfaceResMgr.h" +#include "LayoutMgr.h" +#include "PlayerMgr.h" +#include "MsgIDs.h" +#include "ClientUtilities.h" +#include "CMoveMgr.h" + + +static const char* szOpenSound = "interface\\snd\\dialogueopen.wav"; +static const char* szCloseSound = "interface\\snd\\dialogueClose.wav"; + +CHUDDecision::CHUDDecision() +{ + m_UpdateFlags = kHUDFrame; + m_bVisible = LTFALSE; + for (int i = 0; i < MAX_DECISION_CHOICES; i++) + { + m_pText[i] = LTNULL; + } + m_hObject = LTNULL; + m_fRadius = 0.0f; +} + + +LTBOOL CHUDDecision::Init() +{ + UpdateLayout(); + + return LTTRUE; + +} +void CHUDDecision::Term() +{ + m_Dlg.Destroy(); +} + +void CHUDDecision::Render() +{ + if (!m_bVisible) return; + m_Dlg.Render(); +} + +void CHUDDecision::Update() +{ + // Sanity checks... + if (!IsVisible()) return; + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + SetScale(g_pInterfaceResMgr->GetXRatio()); + + LTVector vPos; + g_pLTClient->GetObjectPos(g_pPlayerMgr->GetMoveMgr()->GetObject(), &vPos); + float fDist = vPos.Dist(m_vObjPos); + if (m_fRadius > 0.0f && fDist > m_fRadius) + { + Hide(); + } + + +} + +void CHUDDecision::Hide() +{ + CAutoMessage cMsg; + cMsg.Writeuint8(MID_DECISION); + cMsg.WriteObject(m_hObject); + cMsg.Writeuint8(-1); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + m_hObject = LTNULL; + + if (m_bVisible) + g_pClientSoundMgr->PlayInterfaceSound(szCloseSound); + m_bVisible = LTFALSE; + + + +} + +void CHUDDecision::Show(ILTMessage_Read *pMsg) +{ + HOBJECT hObj = LTNULL; + float fRad = 0.0f; + uint32 nID[MAX_DECISION_CHOICES]; + memset(nID,0,sizeof(nID)); + + LTBOOL bShow = (LTBOOL)pMsg->Readuint8(); + if (bShow) + { + LTBOOL bForce = (LTBOOL)pMsg->Readuint8(); +// DebugCPrint(1,"CHUDDecision::Show() : show"); + //read in the message + for (int i=0; i < MAX_DECISION_CHOICES; i++) + { + nID[i] = pMsg->Readuint32(); + } + + hObj = pMsg->ReadObject(); + fRad = pMsg->Readfloat(); + + g_pLTClient->GetObjectPos(hObj, &m_vObjPos); + + LTVector vPos; + g_pLTClient->GetObjectPos(g_pPlayerMgr->GetMoveMgr()->GetObject(), &vPos); + float fDist = vPos.Dist(m_vObjPos); + + m_hObject = hObj; + m_fRadius = fRad; + + //if we're out of range, bail right away + if (!bForce && fRad > 0.0f && fDist > fRad) + { + Hide(); + return; + } + + //if a decision window is open and we get a new one, hide (and abort) the old one + if (m_bVisible && m_hObject) + { + m_bVisible = LTFALSE; //set here so close soun doesn't play + Hide(); + } + + //fill the new window + m_Dlg.SetScale(1.0f); + LTIntPt offset = m_Offset; + for (i=0; i < MAX_DECISION_CHOICES; i++) + { + char szStr[256] = ""; + if (nID[i]) + { + LoadString(nID[i],szStr,sizeof(szStr)); + } + if (strlen(szStr)) + { + if (m_pText[i]) + { + m_pText[i]->Show(LTTRUE); + m_pText[i]->GetColumn(1)->SetString(szStr); + m_Dlg.SetControlOffset(m_pText[i],offset); + offset.y += m_pText[i]->GetHeight() + 4; + } + } + else if (m_pText[i]) + { + m_pText[i]->Show(LTFALSE); + } + + + + } + + m_Dlg.SetSize(m_nWidth,(offset.y+m_Offset.y)); + m_Dlg.SetScale(m_fScale); + + if (!m_bVisible) + g_pClientSoundMgr->PlayInterfaceSound(szOpenSound); + + m_bVisible = LTTRUE; + } + else + { + HOBJECT hObject = pMsg->ReadObject(); + if (m_hObject == hObject) + { + m_hObject = LTNULL; + if (m_bVisible) + g_pClientSoundMgr->PlayInterfaceSound(szCloseSound); + m_bVisible = LTFALSE; + } + + } + + + + + +} + +void CHUDDecision::Choose(uint8 nChoice) +{ + m_bVisible = LTFALSE; + if (!m_hObject) return; + + if (nChoice > MAX_DECISION_CHOICES) + nChoice = MAX_DECISION_CHOICES; + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_DECISION); + cMsg.WriteObject(m_hObject); + cMsg.Writeuint8(nChoice); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + g_pClientSoundMgr->PlayInterfaceSound(szCloseSound); + m_hObject = LTNULL; +} + +void CHUDDecision::SetScale(float fScale) +{ + m_Dlg.SetScale(fScale); + m_fScale = fScale; +} + +void CHUDDecision::UpdateLayout() +{ + + char *pTag = "DecisionWindow"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"Pos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + m_pFont = g_pInterfaceResMgr->GetFont(nFont); + m_nFontSize = m_nBaseFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + uint16 nHeaderWidth = 2 * m_nFontSize; + + m_nWidth = (uint16)g_pLayoutMgr->GetInt(pTag,"Width"); + + m_Offset = g_pLayoutMgr->GetPoint(pTag,"TextOffset"); + LTIntPt offset = m_Offset; + + uint16 nTextWidth = (m_nWidth - 2 * offset.x) - nHeaderWidth; + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + uint32 color = SET_ARGB(0xFF,nR,nG,nB); + + char szFrame[128] = ""; + g_pLayoutMgr->GetString(pTag,"Frame",szFrame,sizeof(szFrame)); + + m_Dlg.Create(g_pInterfaceResMgr->GetTexture(szFrame),m_nWidth,m_nWidth); + m_Dlg.Show(LTTRUE); + m_Dlg.SetScale(1.0f); + + for (int i = 0; i < MAX_DECISION_CHOICES; i++) + { + if (m_pText[i]) + { + m_Dlg.SetControlOffset(m_pText[i],offset); + m_pText[i]->SetFont(m_pFont,m_nFontSize); + } + else + { + char szTmp[4]; + sprintf(szTmp,"%d.",i+1); + m_pText[i] = debug_new(CLTGUIColumnCtrl); + m_pText[i]->Create(LTNULL,LTNULL,m_pFont,m_nFontSize,LTNULL); + m_pText[i]->AddColumn(szTmp,nHeaderWidth); + m_pText[i]->AddColumn("X",nTextWidth); + + m_Dlg.AddControl(m_pText[i],offset); + } + + m_pText[i]->SetColors(color,color,color); +// m_pText[i]->SetFixedWidth(nTextWidth); + + offset.y += m_pText[i]->GetBaseHeight() + 4; + + } + + m_Dlg.SetBasePos(m_BasePos); + + m_Dlg.SetSize(m_nWidth,(offset.y+m_Offset.y)); + + m_Dlg.SetScale(g_pInterfaceResMgr->GetXRatio()); +} + + + +void CHUDDecision::OnObjectRemove(HLOCALOBJ hObj) +{ + if (!hObj || m_hObject != hObj) return; + + m_hObject = LTNULL; + m_bVisible = LTFALSE; + +} diff --git a/Jack/ClientShellDLL/HUDDecision.h b/Jack/ClientShellDLL/HUDDecision.h new file mode 100644 index 00000000..48b3e889 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDecision.h @@ -0,0 +1,75 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDecision.h +// +// PURPOSE : Definition of CHUDDecision to display transmission messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DECISION_H +#define __HUD_DECISION_H + +#include "HUDItem.h" +#include "ClientServerShared.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDDecision : public CHUDItem +{ +public: + CHUDDecision(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + void OnObjectRemove(HLOCALOBJ hObj); + + //hide or show based on messages from the server + void Show(ILTMessage_Read *pMsg); + + //close window and tell server + void Hide(); + + void SetScale(float fScale); + + LTBOOL IsVisible() {return m_bVisible;} + + void Choose(uint8 nChoice); + + HOBJECT GetObject() { return m_hObject; } + float GetRadius() { return m_fRadius; } + +protected: + + LTIntPt m_BasePos; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + uint32 m_nTextColor; + float m_fScale; + LTBOOL m_bVisible; + uint16 m_nWidth; + LTIntPt m_Offset; + + HOBJECT m_hObject; + LTVector m_vObjPos; + float m_fRadius; + + CLTGUIWindow m_Dlg; + CLTGUIColumnCtrl* m_pText[MAX_DECISION_CHOICES]; + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDisplayMeter.cpp b/Jack/ClientShellDLL/HUDDisplayMeter.cpp new file mode 100644 index 00000000..f210171b --- /dev/null +++ b/Jack/ClientShellDLL/HUDDisplayMeter.cpp @@ -0,0 +1,58 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDisplayMeter.cpp +// +// PURPOSE : HUDDisplayMeter to display a meter from a server object or from the client game code.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMgr.h" + #include "LayoutMgr.h" + #include "HUDDisplayMeter.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDisplayMeter::CHUDDisplayMeter +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDDisplayMeter::CHUDDisplayMeter() +: CHUDMeter () +{ + m_UpdateFlags = kHUDDisplayMeter; + + m_dwMaxValue = 100; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDisplayMeter::UpdateLayout +// +// PURPOSE: Get the values for displaying the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDDisplayMeter::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_MeterBasePos.y = g_pLayoutMgr->GetDisplayMeterBasePosY( nCurrentLayout ); + m_MeterOffset = g_pLayoutMgr->GetDisplayMeterOffset( nCurrentLayout ); + m_nMeterHeight = g_pLayoutMgr->GetDisplayMeterHeight( nCurrentLayout ); + m_fMeterScale = g_pLayoutMgr->GetDisplayMeterScale( nCurrentLayout ); + + g_pLayoutMgr->GetDisplayMeterTexture( nCurrentLayout, m_szMeterTex, ARRAY_LEN( m_szMeterTex )); + + // Center the display bar in the middle of the screen... + m_MeterBasePos.x = 320 - (uint16)(m_fMeterScale * (float)m_dwMaxValue / 2.0f); + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDisplayMeter.h b/Jack/ClientShellDLL/HUDDisplayMeter.h new file mode 100644 index 00000000..8f3bf31c --- /dev/null +++ b/Jack/ClientShellDLL/HUDDisplayMeter.h @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDisplayMeter.h +// +// PURPOSE : HUDDisplayMeter to display a meter from a server object or from the client game code.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DISPLAY_METER_H__ +#define __HUD_DISPLAY_METER_H__ + +// +// Includes... +// + + #include "HUDMeter.h" + +class CHUDDisplayMeter : public CHUDMeter +{ + public: // Methods... + + CHUDDisplayMeter(); + + void UpdateLayout(); + + + private: // Methods... + + // Keep this private because we want to keep our meter on a percent scale 0 - 100... + + void SetMaxValue( uint32 dwVal ) { m_dwMaxValue = dwVal; } +}; + +#endif // __HUD_DISPLAY_METER_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDistance.cpp b/Jack/ClientShellDLL/HUDDistance.cpp new file mode 100644 index 00000000..0e0b90e2 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDistance.cpp @@ -0,0 +1,246 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDistance.cpp +// +// PURPOSE : HUDItem to display player distance to an area +// +// CREATED : 5/08/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDDistance.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::CHUDDistance +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDDistance::CHUDDistance() +: CHUDItem ( ), + m_BasePos ( 0, 0 ), + m_fBlinkSpeed ( 0.0f ), + m_fAlpha ( 0.0f ), + m_fIconSize ( 0.0f ), + m_bDraw ( false ), + m_bBlink ( false ), + m_fFadeIncrement ( 0.0f ), + m_nFadeDir ( 1 ), + m_bFadeOut ( false ), + m_fFadeOutSpeed ( 0.0f ), + m_fMaxAlpha ( 0.0f ), + m_hIcon ( LTNULL ), + m_bFirstUpdate ( true ) +{ + m_UpdateFlags = kHUDDistance; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::~CHUDDistance +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CHUDDistance::~CHUDDistance() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::Init +// +// PURPOSE: Setup the icon and poly we are going to to draw... +// +// ----------------------------------------------------------------------- // + +LTBOOL CHUDDistance::Init() +{ + UpdateLayout(); + + return LTTRUE; +} + +//---------------------------------------------------------------------------- +// +// ROUTINE: CHUDDistance::Term() +// +// PURPOSE: Term is called when a world is exited. As such, clear out +// state at this time. +// +//---------------------------------------------------------------------------- +void CHUDDistance::Term() +{ + m_fAlpha = 0.0f; + m_bDraw = false; + m_bBlink = false; + m_fFadeIncrement = 0.0f; + m_nFadeDir = 1; + m_bFadeOut = false; + m_hIcon = LTNULL; + m_bFirstUpdate = true; +} +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::Render +// +// PURPOSE: Draw the Icon... +// +// ----------------------------------------------------------------------- // + +void CHUDDistance::Render() +{ + if (!m_bDraw || m_bFirstUpdate) return; + + if( m_bFadeOut ) + { + m_fAlpha += g_pGameClientShell->GetFrameTime() * m_fFadeIncrement; + + if( m_fAlpha <= 0.0f ) + { + m_bFadeOut = false; + m_bDraw = false; + m_fAlpha = 0.0f; + m_nFadeDir = 1; + } + } + else if( m_bBlink ) + { + m_fAlpha += g_pGameClientShell->GetFrameTime() * m_fFadeIncrement; + + if (m_fAlpha < 0.0f) + { + m_fAlpha = 0.0f; + m_nFadeDir = 1; + } + + if (m_fAlpha > m_fMaxAlpha) + { + m_fAlpha = m_fMaxAlpha; + m_nFadeDir = -1; + } + + m_fFadeIncrement = m_nFadeDir * m_fBlinkSpeed * m_fDistPercent; + } + + uint8 a = (uint8)( 255.0f * m_fAlpha ); + + uint32 color = SET_ARGB(a,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA(&m_Poly,color); + + SetRenderState(); + + // draw our icons + g_pDrawPrim->SetTexture(m_hIcon); + g_pDrawPrim->DrawPrim(&m_Poly,1); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::Update +// +// PURPOSE: Decide if we should draw the icon setup the render data... +// +// ----------------------------------------------------------------------- // + +void CHUDDistance::Update() +{ + if( m_bFirstUpdate ) + { + m_bFirstUpdate = false; + g_pHUDMgr->QueueUpdate( kHUDDistance ); + return; + } + + m_fDistPercent = g_pPlayerMgr->GetDistanceIndicatorPercent(); + m_hIcon = g_pPlayerMgr->GetDistanceIndicatorIcon(); + m_bDraw = (m_fDistPercent > 0.0f && m_hIcon); + + if( !m_bDraw ) + { + if( m_fAlpha > 0.0f ) + { + m_bDraw = true; + m_nFadeDir = -1; + m_fDistPercent = 0.5f; + m_bFadeOut = true; + + m_fFadeIncrement = m_nFadeDir * m_fFadeOutSpeed; + } + else + { + m_fAlpha = 0.0f; + m_nFadeDir = 1; + return; + } + } + + // Setup the poly and get the texture... + + g_pDrawPrim->SetRGBA( &m_Poly, argbWhite ); + SetupQuadUVs( m_Poly, m_hIcon, 0.0f, 0.0f, 1.0f, 1.0f ); + + uint32 tw, th; + g_pTexInterface->GetTextureDims( m_hIcon, tw, th ); + m_fIconSize = (float)th; + + float x = (float)m_BasePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_BasePos.y * g_pInterfaceResMgr->GetYRatio(); + + float w = m_fIconSize * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly,x,y,w,w); + + m_bBlink = true; + if( m_fDistPercent >= 1.0f ) + { + m_bBlink = false; + m_fAlpha = m_fMaxAlpha; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::UpdateLayout +// +// PURPOSE: Get data for this HUDItem from layouts.txt... +// +// ----------------------------------------------------------------------- // + +void CHUDDistance::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt( "HUDLayout", 0 ); + + m_BasePos = g_pLayoutMgr->GetDistanceIconPos( nCurrentLayout ); + m_fBlinkSpeed = g_pLayoutMgr->GetDistanceIconBlinkSpeed( nCurrentLayout ); + m_fMaxAlpha = g_pLayoutMgr->GetDistanceIconAlpha( nCurrentLayout ); + m_fFadeOutSpeed = g_pLayoutMgr->GetDistanceIconFadeOutSpeed( nCurrentLayout ); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDDistance::Clear +// +// PURPOSE: Clears to not init state. +// +// ----------------------------------------------------------------------- // +void CHUDDistance::Clear() +{ + m_fAlpha = 0.0f; + m_nFadeDir = 1; + m_bDraw = false; +} diff --git a/Jack/ClientShellDLL/HUDDistance.h b/Jack/ClientShellDLL/HUDDistance.h new file mode 100644 index 00000000..476fdbcb --- /dev/null +++ b/Jack/ClientShellDLL/HUDDistance.h @@ -0,0 +1,61 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDistance.h +// +// PURPOSE : HUDItem to display player distance to an area +// +// CREATED : 5/08/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DISTANCE_H__ +#define __HUD_DISTANCE_H__ + +// +// Includes... +// + + #include "HUDItem.h" + #include "HUDBar.h" + + +class CHUDDistance : public CHUDItem +{ + public: // Methods... + + CHUDDistance(); + ~CHUDDistance(); + + LTBOOL Init(); + void Term( ); + void Render(); + void Update(); + void UpdateLayout(); + + void Clear( ); + + private: // Members... + + LTIntPt m_BasePos; + float m_fBlinkSpeed; + float m_fAlpha; + float m_fIconSize; + + bool m_bDraw; + bool m_bBlink; + float m_fFadeIncrement; + int8 m_nFadeDir; + bool m_bFadeOut; + float m_fFadeOutSpeed; + float m_fMaxAlpha; + bool m_bFirstUpdate; + + float m_fDistPercent; + + LTPoly_GT4 m_Poly; + HTEXTURE m_hIcon; // icon +}; + +#endif // __HUD_DISTANCE_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDoomsday.cpp b/Jack/ClientShellDLL/HUDDoomsday.cpp new file mode 100644 index 00000000..7c8bda58 --- /dev/null +++ b/Jack/ClientShellDLL/HUDDoomsday.cpp @@ -0,0 +1,210 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDoomsday.cpp +// +// PURPOSE : HUDItem to display status of doomsday pieces +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "TO2PlayerMgr.h" +#include "GameClientShell.h" +#include "ChassisPieceFX.h" +#include "ChassisButeMgr.h" + +//****************************************************************************************** +//** +//** HUD Carry Icon display +//** +//****************************************************************************************** +namespace +{ + float fAlpha = 1.0f; + float fBlink = -2.0f; +} + +CHUDDoomsday::CHUDDoomsday() +{ + m_eLevel = kHUDRenderDead; + m_UpdateFlags = kHUDDoomsday; + for (int i = 0; i < kNumDDIcons; i++) + { + for (int j = 0; j < 3; j++) + { + m_hIcon[i][j] = LTNULL; + } + m_bBlink[i] = false; + m_nTeam[i] = INVALID_TEAM; + }; +} + + +LTBOOL CHUDDoomsday::Init() +{ + + m_hIcon[eDD_Transmitter][0] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_trans_b.dtx"); + m_hIcon[eDD_Core][0] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_core_b.dtx"); + m_hIcon[eDD_Battery][0] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_bat_b.dtx"); + + m_hIcon[eDD_Transmitter][1] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_trans_r.dtx"); + m_hIcon[eDD_Core][1] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_core_r.dtx"); + m_hIcon[eDD_Battery][1] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_bat_r.dtx"); + + m_hIcon[eDD_Transmitter][2] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_trans_n.dtx"); + m_hIcon[eDD_Core][2] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_core_n.dtx"); + m_hIcon[eDD_Battery][2] = g_pInterfaceResMgr->GetTexture("interface\\hud\\doom_bat_n.dtx"); + + + for (int i = 0; i < kNumDDIcons; i++) + { + g_pDrawPrim->SetRGBA(&m_Poly[i],argbWhite); + SetupQuadUVs(m_Poly[i], m_hIcon[i][2], 0.0f,0.0f,1.0f,1.0f); + } + + UpdateLayout(); + + return LTTRUE; +} + +void CHUDDoomsday::Term() +{ + +} + +void CHUDDoomsday::Render() +{ + + if (g_pGameClientShell->GetGameType() != eGameTypeDoomsDay) return; + + if (!g_pRadar->GetDraw()) return; + + SetRenderState(); + + // calculate a simple fade-in/out cycle + fAlpha += (fBlink * g_pLTClient->GetFrameTime()); + if (fAlpha > 1.0f) + { + fAlpha = 1.0f; + fBlink = -fBlink; + } + else if (fAlpha < 0.3f) + { + fAlpha = 0.3f; + fBlink = -fBlink; + } + uint8 nAlpha = (uint8)(255.0f * fAlpha); + + //calculate the fade color + uint32 nFade = SET_ARGB(nAlpha,0xFF,0xFF,0xFF); + + + + for (int i = 0; i < kNumDDIcons; i++) + { + //if the matching piece is unowned, use normal color and unowned icon + if (m_nTeam[i] == INVALID_TEAM) + { + g_pDrawPrim->SetRGBA(&m_Poly[i],argbWhite); + g_pDrawPrim->SetTexture(m_hIcon[i][2]); + } + else + { + //if the matching piece is carried, use the current fade color + if (m_bBlink[i]) + { + g_pDrawPrim->SetRGBA(&m_Poly[i],nFade); + } + else + { + g_pDrawPrim->SetRGBA(&m_Poly[i],argbWhite); + } + //use the appropriate team icon + g_pDrawPrim->SetTexture(m_hIcon[i][m_nTeam[i]]); + + } + + // draw the icon + g_pDrawPrim->DrawPrim(&m_Poly[i]); + } + +} + +void CHUDDoomsday::Update() +{ + if (g_pGameClientShell->GetGameType() != eGameTypeDoomsDay) return; + + //clear status + for (int i = 0; i < kNumDDIcons; i++) + { + m_bBlink[i] = false; + m_nTeam[i] = INVALID_TEAM; + } + + static const uint8 kTransmitter = ChassisButeMgr::Instance( ).GetChassisPieceButeIndex( "Doomsday_transmitter" ); + static const uint8 kBattery = ChassisButeMgr::Instance( ).GetChassisPieceButeIndex( "Doomsday_batteries" ); + static const uint8 kCore = ChassisButeMgr::Instance( ).GetChassisPieceButeIndex( "Doomsday_core" ); + + //step through each doomsday piece in the world + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_CHASSISPIECE_ID); + if (pList) + { + int nNumDD = pList->GetSize(); + for (int i=0; i < nNumDD; i++) + { + if ((*pList)[i]) + { + ChassisPieceFX* pDDP = (ChassisPieceFX*)(*pList)[i]; + ChassisPieceBute const* pChassisPieceBute = pDDP->GetChassisPieceBute( ); + uint8 nIndex = pChassisPieceBute ? pChassisPieceBute->m_nIndex : CHASSISPIECEBUTE_INVALID; + int nIcon = kNumDDIcons; + + // find out which icon matched the piece + if( nIndex == kTransmitter ) + nIcon = eDD_Transmitter; + else if( nIndex == kBattery ) + nIcon = eDD_Battery; + else if( nIndex == kCore ) + nIcon = eDD_Core; + + // if we've got a match (which should be always) + if (nIcon < kNumDDIcons) + { + //set the status for the icon + m_bBlink[nIcon] = pDDP->IsCarried(); + m_nTeam[nIcon] = pDDP->GetTeam(); + } + } + } + } + + float fx = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)(m_nSize) * g_pInterfaceResMgr->GetXRatio(); + float fgap = fw * 1.25f; + + for (i = 0; i < kNumDDIcons; i++) + { + g_pDrawPrim->SetXYWH(&m_Poly[i],fx,fy,fw,fw); + fy += fgap; + } + +} + +void CHUDDoomsday::UpdateLayout() +{ + char *pTag = "Doomsday"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + m_nSize = (uint8)g_pLayoutMgr->GetInt(pTag,"IconSize"); + + if (!m_nSize) + { + m_BasePos = LTIntPt(500,10); + m_nSize = 32; + } + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDDoomsday.h b/Jack/ClientShellDLL/HUDDoomsday.h new file mode 100644 index 00000000..5a18785b --- /dev/null +++ b/Jack/ClientShellDLL/HUDDoomsday.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDDoomsday.h +// +// PURPOSE : HUDItem to display status of doomsday pieces +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_DOOM_H +#define __HUD_DOOM_H + +#include "HUDItem.h" + + + +//****************************************************************************************** +//** HUD Carry Icon display +//****************************************************************************************** +class CHUDDoomsday : public CHUDItem +{ +public: + CHUDDoomsday(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + +private: + LTIntPt m_BasePos; + uint16 m_nSize; + + enum eDDIcons + { + eDD_Transmitter, + eDD_Core, + eDD_Battery, + kNumDDIcons + + }; + + + LTPoly_GT4 m_Poly[kNumDDIcons]; + HTEXTURE m_hIcon[kNumDDIcons][3]; + bool m_bBlink[kNumDDIcons]; + uint8 m_nTeam[kNumDDIcons]; + + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDHealth.cpp b/Jack/ClientShellDLL/HUDHealth.cpp new file mode 100644 index 00000000..df0a3efd --- /dev/null +++ b/Jack/ClientShellDLL/HUDHealth.cpp @@ -0,0 +1,202 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHealth.cpp +// +// PURPOSE : HUDItem to display player health +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "PlayerStats.h" +#include "InterfaceMgr.h" +#include "HUDHealth.h" + +extern CGameClientShell* g_pGameClientShell; + +//****************************************************************************************** +//** +//** HUD Health display +//** +//****************************************************************************************** + +CHUDHealth::CHUDHealth() +{ + m_UpdateFlags = kHUDHealth | kHUDArmor; + m_hHealth = LTNULL; + m_hArmor = LTNULL; +} + +LTBOOL CHUDHealth::Init() +{ + + //health icon + m_hHealth = g_pInterfaceResMgr->GetTexture("interface\\hud\\icon_health.dtx"); + g_pDrawPrim->SetRGBA(&m_Poly[0],argbWhite); + SetupQuadUVs(m_Poly[0], m_hHealth, 0.0f,0.0f,1.0f,1.0f); + + //armor icon + m_hArmor = g_pInterfaceResMgr->GetTexture("interface\\hud\\icon_armor.dtx"); + g_pDrawPrim->SetRGBA(&m_Poly[1],argbWhite); + SetupQuadUVs(m_Poly[1], m_hArmor, 0.0f,0.0f,1.0f,1.0f); + + + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_pHealthStr = g_pFontManager->CreatePolyString(pFont,"",0.0f, 0.0f); + m_pArmorStr = g_pFontManager->CreatePolyString(pFont,"",0.0f, 0.0f); + + + UpdateLayout(); + + //health bar + m_HealthBar.Init(g_pInterfaceResMgr->GetTexture("interface\\hud\\healthbar.dtx")); + + //armor bar + m_ArmorBar.Init(g_pInterfaceResMgr->GetTexture("interface\\hud\\armorbar.dtx")); + + m_pHealthStr->SetColor(m_HealthColor); + m_pArmorStr->SetColor(m_ArmorColor); + + return LTTRUE; +} + +void CHUDHealth::Term() +{ + if (m_pHealthStr) + { + g_pFontManager->DestroyPolyString(m_pHealthStr); + m_pHealthStr=LTNULL; + } + if (m_pArmorStr) + { + g_pFontManager->DestroyPolyString(m_pArmorStr); + m_pArmorStr=LTNULL; + } + +} + +void CHUDHealth::Render() +{ + SetRenderState(); + + if (m_bUseHealthBar) + { + m_HealthBar.Render(); + m_ArmorBar.Render(); + + + } + + if (m_bUseHealthText) + { + m_pHealthStr->Render(); + m_pArmorStr->Render(); + } + + if (m_bUseHealthIcon) + { + // draw our icons + g_pDrawPrim->SetTexture(m_hHealth); + g_pDrawPrim->DrawPrim(&m_Poly[0]); + g_pDrawPrim->SetTexture(m_hArmor); + g_pDrawPrim->DrawPrim(&m_Poly[1]); + } + +} + +void CHUDHealth::Update() +{ + if (m_bUseHealthBar) + { + float x = (float)(m_HealthBasePos.x + m_HealthBarOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_HealthBasePos.y + m_HealthBarOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)g_pPlayerStats->GetHealth() * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_nBarHeight * g_pInterfaceResMgr->GetYRatio(); + float maxW = (float)g_pPlayerStats->GetMaxHealth() * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + + m_HealthBar.Update(x,y,w,maxW,h); + + + x = (float)(m_HealthBasePos.x + m_ArmorBarOffset.x) * g_pInterfaceResMgr->GetXRatio(); + y = (float)(m_HealthBasePos.y + m_ArmorBarOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + w = (float)g_pPlayerStats->GetArmor() * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + maxW = (float)g_pPlayerStats->GetMaxArmor() * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + + m_ArmorBar.Update(x,y,w,maxW,h); + + } + + if (m_bUseHealthText) + { + float x = (float)(m_HealthBasePos.x + m_HealthTextOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_HealthBasePos.y + m_HealthTextOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + uint8 h = (uint8)((float)m_nTextHeight * g_pInterfaceResMgr->GetYRatio()); + + m_pHealthStr->SetPosition(x,y); + m_pHealthStr->SetCharScreenHeight(h); + char szTmp[16] = ""; + sprintf(szTmp,"%d",g_pPlayerStats->GetHealth()); + m_pHealthStr->SetText(szTmp); + + x = (float)(m_HealthBasePos.x + m_ArmorTextOffset.x) * g_pInterfaceResMgr->GetXRatio(); + y = (float)(m_HealthBasePos.y + m_ArmorTextOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + m_pArmorStr->SetPosition(x,y); + m_pArmorStr->SetCharScreenHeight(h); + sprintf(szTmp,"%d",g_pPlayerStats->GetArmor()); + m_pArmorStr->SetText(szTmp); + + } + + if (m_bUseHealthIcon) + { + float x = (float)(m_HealthBasePos.x + m_HealthIconOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_HealthBasePos.y + m_HealthIconOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)m_nHealthIconSize * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[0],x,y,w,w); + + x = (float)(m_HealthBasePos.x + m_ArmorIconOffset.x) * g_pInterfaceResMgr->GetXRatio(); + y = (float)(m_HealthBasePos.y + m_ArmorIconOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[1],x,y,w,w); + + } + +} + +void CHUDHealth::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_HealthBasePos = g_pLayoutMgr->GetHealthBasePos(nCurrentLayout); + + m_bUseHealthBar = g_pLayoutMgr->GetUseHealthBar(nCurrentLayout); + m_HealthBarOffset = g_pLayoutMgr->GetHealthBarOffset(nCurrentLayout); + m_ArmorBarOffset = g_pLayoutMgr->GetArmorBarOffset(nCurrentLayout); + + m_bUseHealthText = g_pLayoutMgr->GetUseHealthText(nCurrentLayout); + m_HealthTextOffset = g_pLayoutMgr->GetHealthTextOffset(nCurrentLayout); + m_ArmorTextOffset = g_pLayoutMgr->GetArmorTextOffset(nCurrentLayout); + + m_bUseHealthIcon = g_pLayoutMgr->GetUseHealthIcon(nCurrentLayout); + m_HealthIconOffset = g_pLayoutMgr->GetHealthIconOffset(nCurrentLayout); + m_ArmorIconOffset = g_pLayoutMgr->GetArmorIconOffset(nCurrentLayout); + m_nHealthIconSize = g_pLayoutMgr->GetHealthIconSize(nCurrentLayout); + + m_nBarHeight = g_pLayoutMgr->GetBarHeight(nCurrentLayout); + m_nTextHeight = g_pLayoutMgr->GetTextHeight(nCurrentLayout); + m_fBarScale = g_pLayoutMgr->GetBarScale(nCurrentLayout); + + m_HealthColor = g_pLayoutMgr->GetHealthColor(nCurrentLayout); + m_ArmorColor = g_pLayoutMgr->GetArmorColor(nCurrentLayout); + +} diff --git a/Jack/ClientShellDLL/HUDHealth.h b/Jack/ClientShellDLL/HUDHealth.h new file mode 100644 index 00000000..016553f2 --- /dev/null +++ b/Jack/ClientShellDLL/HUDHealth.h @@ -0,0 +1,73 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHealth.h +// +// PURPOSE : HUDItem to display player health +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_HEALTH_H +#define __HUD_HEALTH_H + +#include "HUDItem.h" +#include "HUDBar.h" + + +//****************************************************************************************** +//** HUD Health display +//****************************************************************************************** +class CHUDHealth : public CHUDItem +{ +public: + CHUDHealth(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + LTIntPt m_HealthBasePos; + + LTBOOL m_bUseHealthBar; + LTIntPt m_HealthBarOffset; + LTIntPt m_ArmorBarOffset; + + LTBOOL m_bUseHealthText; + LTIntPt m_HealthTextOffset; + LTIntPt m_ArmorTextOffset; + + LTBOOL m_bUseHealthIcon; + LTIntPt m_HealthIconOffset; + LTIntPt m_ArmorIconOffset; + uint8 m_nHealthIconSize; + + int m_nBarHeight; + uint8 m_nTextHeight; + LTFLOAT m_fBarScale; + + uint32 m_HealthColor; + uint32 m_ArmorColor; + + + LTPoly_GT4 m_Poly[2]; + HTEXTURE m_hHealth; // health icon + HTEXTURE m_hArmor; // armor icon + + CHUDBar m_HealthBar; + CHUDBar m_ArmorBar; + + + + CUIPolyString* m_pHealthStr; + CUIPolyString* m_pArmorStr; + +}; + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDHiding.cpp b/Jack/ClientShellDLL/HUDHiding.cpp new file mode 100644 index 00000000..cca03ec8 --- /dev/null +++ b/Jack/ClientShellDLL/HUDHiding.cpp @@ -0,0 +1,201 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHiding.cpp +// +// PURPOSE : HUDItem to display hiding icon +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" + +extern VarTrack g_vtProgressBarScaleToSkills; + +//****************************************************************************************** +//** +//** HUD Hiding display +//** +//****************************************************************************************** + +CHUDHiding::CHUDHiding() +{ + m_UpdateFlags = kHUDHiding; + m_bDraw = LTFALSE; + m_fHideTimer = 0.0f; + m_fHideDuration = 0.0f; + m_fHideBarWaitTime = 0.0f; + + for( int i = 0; i < kNumPrims; ++i ) + { + m_hIcon[i] = LTNULL; + } +} + + +LTBOOL CHUDHiding::Init() +{ + //Hiding icon + m_hIcon[kHidePrim] = g_pInterfaceResMgr->GetTexture("interface\\hud\\hide.dtx"); + g_pDrawPrim->SetRGBA(&m_Poly[kHidePrim],argbWhite); + SetupQuadUVs(m_Poly[kHidePrim],m_hIcon[kHidePrim],0.0f,0.0f,1.0f,1.0f); + + //Hidden icon + m_hIcon[kHiddenPrim] = g_pInterfaceResMgr->GetTexture( "interface\\hud\\hidden.dtx" ); + g_pDrawPrim->SetRGBA( &m_Poly[kHiddenPrim], argbWhite ); + SetupQuadUVs(m_Poly[kHiddenPrim], m_hIcon[kHiddenPrim], 0.0f, 0.0f, 1.0f, 1.0f ); + + // Cant hide icon + m_hIcon[kCantHidePrim] = g_pInterfaceResMgr->GetTexture( "interface\\hud\\hideno.dtx" ); + g_pDrawPrim->SetRGBA( &m_Poly[kCantHidePrim], argbWhite ); + SetupQuadUVs( m_Poly[kCantHidePrim], m_hIcon[kCantHidePrim], 0.0f, 0.0f, 1.0f, 1.0f ); + + UpdateLayout(); + + // Init our hiding bar... + + m_HideBar.Init(); + + return LTTRUE; +} + +void CHUDHiding::Term() +{ + +} + +void CHUDHiding::Render() +{ + if (!m_bDraw) return; + + + SetRenderState(); + + if( g_pPlayerStats->CanHide() ) + { + if( !g_pPlayerStats->IsHidden() ) + { + if (m_fHideDuration <= 0.0f ) return; + + float fAlpha = Clamp((m_fHideTimer / m_fHideDuration), 0.0f, 1.0f); + + uint8 a = (uint8)( 255.0f * fAlpha ); + + uint32 color = SET_ARGB(a,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA( &m_Poly[kHiddenPrim], color ); + + a = 255 - a; + color = SET_ARGB(a,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA(&m_Poly[kHidePrim],color); + } + else + { + uint32 color = SET_ARGB(0,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA( &m_Poly[kHiddenPrim], color ); + + color = SET_ARGB(255,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA(&m_Poly[kHidePrim],color); + } + + // draw our icons + g_pDrawPrim->SetTexture(m_hIcon[kHidePrim]); + g_pDrawPrim->DrawPrim(&m_Poly[kHidePrim]); + + // draw our icons + g_pDrawPrim->SetTexture(m_hIcon[kHiddenPrim]); + g_pDrawPrim->DrawPrim(&m_Poly[kHiddenPrim]); + + + // Update our hiding bar... + + if( !g_pPlayerStats->IsHidden() ) + { + if (!g_pGameClientShell->IsGamePaused()) + { + m_fHideTimer -= g_pLTClient->GetFrameTime(); + if( m_fHideTimer <= 0.0f ) + { + m_HideBar.SetMaxValue( 0 ); + m_HideBar.SetValue( 0 ); + } + else + { + float fStealthSkillEffect = g_pPlayerStats->GetSkillModifier(SKL_STEALTH,StealthModifiers::eHideTime); + + uint8 nMaxProgress = 100; + if( g_vtProgressBarScaleToSkills.GetFloat() > 0.0f ) + { + nMaxProgress = (fStealthSkillEffect > 0.0f ? uint8(100 * fStealthSkillEffect) : 0); + } + + uint8 nVal = uint8( (1 - (m_fHideTimer / m_fHideDuration)) * nMaxProgress ); + + m_HideBar.SetMaxValue( nMaxProgress ); + m_HideBar.SetValue( nVal ); + } + } + + if( m_fHideBarWaitTime > 0.0f ) + { + if (!g_pGameClientShell->IsGamePaused()) + m_fHideBarWaitTime += g_pLTClient->GetFrameTime(); + if( m_fHideBarWaitTime >= 0.5f ) + { + m_HideBar.Update(); + m_HideBar.Render(); + } + } + } + } + else + { + g_pDrawPrim->SetTexture(m_hIcon[kCantHidePrim]); + g_pDrawPrim->DrawPrim(&m_Poly[kCantHidePrim]); + } + +} + +void CHUDHiding::Update() +{ + m_bDraw = g_pPlayerStats->IsHiding() || g_pPlayerStats->IsHidden(); + if (!m_bDraw) + { + m_fHideDuration = m_fHideTimer = m_fHideBarWaitTime = 0.0f; + + return; + } + + float x = (float)m_BasePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_BasePos.y * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)m_BaseSize.x * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_BaseSize.y * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly[kHidePrim],x,y,w,h); + g_pDrawPrim->SetXYWH(&m_Poly[kHiddenPrim],x,y,w,h); + g_pDrawPrim->SetXYWH(&m_Poly[kCantHidePrim],x,y,w,h); + + if (g_pPlayerStats->IsHidden()) + { + m_fHideTimer = 0.0f; + m_fHideBarWaitTime = -1.0f; + } + else if (g_pPlayerStats->IsHiding()) + { + m_fHideDuration = m_fHideTimer = g_pPlayerStats->GetHideDuration(); + m_fHideBarWaitTime = g_pLTClient->GetFrameTime(); + } +} + +void CHUDHiding::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetHideIconPos(nCurrentLayout); + m_BaseSize = g_pLayoutMgr->GetHideIconSize(nCurrentLayout); +} + diff --git a/Jack/ClientShellDLL/HUDHiding.h b/Jack/ClientShellDLL/HUDHiding.h new file mode 100644 index 00000000..1c6caaf7 --- /dev/null +++ b/Jack/ClientShellDLL/HUDHiding.h @@ -0,0 +1,60 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHiding.h +// +// PURPOSE : HUDItem to display hiding icon +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_HIDING_H +#define __HUD_HIDING_H + +#include "HUDItem.h" +#include "HUDHidingBar.h" + +//****************************************************************************************** +//** HUD Hiding display +//****************************************************************************************** +class CHUDHiding : public CHUDItem +{ +public: + CHUDHiding(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + + enum eHidingPrims + { + kHidePrim, + kHiddenPrim, + kCantHidePrim, + + kNumPrims + }; + + LTIntPt m_BasePos; + LTIntPt m_BaseSize; + LTFLOAT m_fIconSize; + + LTFLOAT m_bDraw; + + LTPoly_GT4 m_Poly[kNumPrims]; + HTEXTURE m_hIcon[kNumPrims]; // icon + + float m_fHideDuration; + float m_fHideTimer; + float m_fHideBarWaitTime; + + CHUDHidingBar m_HideBar; +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDHidingBar.cpp b/Jack/ClientShellDLL/HUDHidingBar.cpp new file mode 100644 index 00000000..ae8d0d29 --- /dev/null +++ b/Jack/ClientShellDLL/HUDHidingBar.cpp @@ -0,0 +1,69 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHidingBar.cpp +// +// PURPOSE : HUDHidingBar to display a meter when hiding.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMgr.h" + #include "LayoutMgr.h" + #include "HUDHidingBar.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDHidingBar::CHUDHidingBar +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDHidingBar::CHUDHidingBar() +: CHUDMeter () +{ + m_UpdateFlags = kHUDNone; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDHidingBar::Update +// +// PURPOSE: Update the values to display the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDHidingBar::Update() +{ + // Center the hiding bar in the middle of the screen... + m_MeterBasePos.x = 320 - (uint16)(m_fMeterScale * (float)m_dwMaxValue / 2.0f); + + CHUDMeter::Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDHidingBar::UpdateLayout +// +// PURPOSE: Get the values for displaying the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDHidingBar::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_MeterBasePos.y = g_pLayoutMgr->GetHidingBarBasePosY( nCurrentLayout ); + m_MeterOffset = g_pLayoutMgr->GetHidingBarOffset( nCurrentLayout ); + m_nMeterHeight = g_pLayoutMgr->GetHidingBarHeight( nCurrentLayout ); + m_fMeterScale = g_pLayoutMgr->GetHidingBarScale( nCurrentLayout ); + + g_pLayoutMgr->GetHidingBarTexture( nCurrentLayout, m_szMeterTex, ARRAY_LEN( m_szMeterTex )); + +} diff --git a/Jack/ClientShellDLL/HUDHidingBar.h b/Jack/ClientShellDLL/HUDHidingBar.h new file mode 100644 index 00000000..94f3d65d --- /dev/null +++ b/Jack/ClientShellDLL/HUDHidingBar.h @@ -0,0 +1,30 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDHidingBar.h +// +// PURPOSE : HUDHidingBar to display a meter when hiding.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_HIDING_BAR_H__ +#define __HUD_HIDING_BAR_H__ + +// +// Includes... +// + + #include "HUDMeter.h" + +class CHUDHidingBar : public CHUDMeter +{ + public: // Methods... + + CHUDHidingBar(); + + void Update(); + void UpdateLayout(); +}; + +#endif // __HUD_HIDING_BAR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDItem.h b/Jack/ClientShellDLL/HUDItem.h new file mode 100644 index 00000000..b7fd3898 --- /dev/null +++ b/Jack/ClientShellDLL/HUDItem.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDItem.h +// +// PURPOSE : Definition of CHUDItem base class +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_ITEM_H +#define __HUD_ITEM_H + +#include "ltbasedefs.h" + + +enum eHUDRenderLevel +{ + kHUDRenderNone = 0, // always render + kHUDRenderText, // render when text is allowed (i.e. cinematics, etc.) + kHUDRenderDead, // render when text is allowed (i.e. cinematics, etc.) + kHUDRenderFull // render only when full HUD is rendered +}; + + +//****************************************************************************************** +//** Base HUD item +//****************************************************************************************** +class CHUDItem +{ +public: + CHUDItem() {m_UpdateFlags = 0; m_eLevel = kHUDRenderFull;} + virtual ~CHUDItem() {Term();} + + + virtual LTBOOL Init() {return LTTRUE;} + virtual void Term() {} + + virtual void Render() = 0; + virtual void Update() = 0; + + virtual void UpdateLayout() {} + + virtual uint32 GetUpdateFlags() { return m_UpdateFlags; } + + virtual eHUDRenderLevel GetRenderLevel() { return m_eLevel; } + + virtual void SetRenderState(); + +protected: + uint32 m_UpdateFlags; + eHUDRenderLevel m_eLevel; + +}; + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDMessage.cpp b/Jack/ClientShellDLL/HUDMessage.cpp new file mode 100644 index 00000000..5db2e055 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMessage.cpp @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------- +// +// MODULE : HUDMessage.cpp +// +// PURPOSE : Base class for HUD text display +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +//------------------------------------------------------------------------- + + +#include "stdafx.h" +#include "GameClientShell.h" +#include "HUDMessage.h" +#include "LayoutMgr.h" + +namespace +{ + float kMinDuration = -1.0f; + float kMinFade = -1.0f; +} + + +CHUDMessage::CHUDMessage() +{ + m_hImage = LTNULL; + m_nBaseImageSize = 0; + + m_pText = LTNULL; + + m_pFont = LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + m_nTextColor = argbWhite; + + m_fInitTime = -1.0f; + m_eJustify = kMsgLeft; + m_fDuration = 0.0f; + m_fFadeDur = 0.0f; + + m_fImageGap = 4.0f; + m_fAlpha = 1.0f; + + m_bDropShadow = true; +} + + +LTBOOL CHUDMessage::Create(MsgCreate &mc) +{ + if (!mc.pFont) return LTFALSE; + + if (kMinDuration < 0.0f) + kMinDuration = g_pLayoutMgr->GetMessageMinTime(); + if (kMinFade < 0.0f) + kMinFade = g_pLayoutMgr->GetMessageMinFade(); + + + m_pFont = mc.pFont; + + + if (!m_pText) + { + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont,"",0.0f,0.0f); + if (!m_pText) + return LTFALSE; + } + + m_pText->SetText(mc.sString.c_str()); + + + m_nFontSize = mc.nFontSize; + m_nBaseFontSize = mc.nFontSize; + m_nTextColor = mc.nTextColor; + m_nFixedWidth = mc.nWidth; + + m_bDropShadow = mc.bDropShadow; + + m_pText->SetColor(m_nTextColor); + + m_fInitTime = -1.0f; + + m_eJustify = mc.eJustify; + m_fDuration = mc.fDuration * GetConsoleFloat("MessageDuration",1.0f); + if (m_fDuration < kMinDuration) + m_fDuration = kMinDuration; + m_fFadeDur = mc.fFadeDur * GetConsoleFloat("MessageDuration",1.0f);; + if (m_fFadeDur < kMinFade) + m_fFadeDur = kMinFade; + + m_hImage = mc.hImage; + m_nBaseImageSize = mc.nImageSize; + + switch (m_eJustify) + { + case kMsgLeft: + m_pText->SetAlignmentH(CUI_HALIGN_LEFT); + break; + case kMsgRight: + m_pText->SetAlignmentH(CUI_HALIGN_RIGHT); + break; + case kMsgCenter: + m_pText->SetAlignmentH(CUI_HALIGN_CENTER); + break; + }; + + + InitPoly(); + + SetBasePos(LTIntPt(0,0)); + + SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_bVisible = LTTRUE; + + + + return LTTRUE; +} + +void CHUDMessage::Destroy ( ) +{ + if (m_pText) + { + g_pFontManager->DestroyPolyString(m_pText); + m_pText = LTNULL; + } + CLTGUICtrl::Destroy(); + +} + +void CHUDMessage::SetAlpha(float fAlpha) +{ + if (fAlpha < 0.0f) fAlpha = 0.0f; + if (fAlpha > 1.0f) fAlpha = 1.0f; + m_fAlpha = fAlpha; + uint32 a,r,g,b; + GET_ARGB(m_nTextColor,a,r,g,b); + a = (uint8)(255.0f * fAlpha); + m_nTextColor = SET_ARGB(a,r,g,b); + if (m_pText) + m_pText->SetColor(m_nTextColor); + + + + uint32 c = SET_ARGB(a,255,255,255); + g_pDrawPrim->SetRGBA(&m_Poly,c); + +} + + +void CHUDMessage::Update() +{ + // Sanity checks... + if (!IsVisible()) return; + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + SetScale(g_pInterfaceResMgr->GetXRatio()); + + if (m_fInitTime < 0.0f) + m_fInitTime = g_pLTClient->GetTime(); + + if (m_fDuration > 0.0f) + { + float fTime = GetLifetime(); + if (fTime > m_fDuration) + { + fTime -= m_fDuration; + float fAlpha = 1.0f - (fTime / m_fFadeDur); + if (fAlpha <= 0.0f) + { + Show(LTFALSE); + return; + } + else + SetAlpha(fAlpha); + } + } + else + Show(LTFALSE); + +} + + +void CHUDMessage::Render(LTBOOL bForceVisible) +{ + + LTBOOL bVis = m_bVisible; + float fAlpha = m_fAlpha; + if (bForceVisible) + { + m_bVisible = LTTRUE; + SetAlpha(1.0f); + } + Render(); + if (bForceVisible) + { + m_bVisible = bVis; + SetAlpha(fAlpha); + } + +} +void CHUDMessage::Render() +{ + // Sanity checks... + if (!IsVisible()) return; + + if (m_hImage) + { + g_pDrawPrim->SetTexture(m_hImage); + // set up the render state + SetRenderState(); + + // draw our button + g_pDrawPrim->DrawPrim(&m_Poly); + } + + if (m_pText) + { + if (m_bDropShadow) + { + float px,py; + m_pText->GetPosition(&px,&py); + px += 2.0f; + py += 2.0f; + m_pText->SetColor(0xBF000000); + m_pText->SetPosition(px,py); + m_pText->Render(); + + px -= 2.0f; + py -= 2.0f; + m_pText->SetColor(m_nTextColor); + m_pText->SetPosition(px,py); + + } + m_pText->Render(); + + } +} + + +float CHUDMessage::GetLifetime() +{ + if (m_fInitTime < 0.0f) + return 0.0f; + + return g_pLTClient->GetTime() - m_fInitTime; +} + + +void CHUDMessage::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + ScalePoly(); + if (m_pText) + { + float x = (float)m_pos.x; + float y = (float)m_pos.y; + + if (m_hImage) + { + switch (m_eJustify) + { + case kMsgLeft: + case kMsgCenter: + //adjust for image size + x += (float)m_imageSize.x + m_fImageGap; + y += ((float)m_imageSize.y - m_pText->GetHeight()) / 2; + break; + case kMsgRight: + break; + }; + + } + m_pText->SetPosition(x,y); + } + JustifyPoly(); + + +} + +void CHUDMessage::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + ScalePoly(); + m_fImageGap = 4.0f * m_fScale; + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + float x = (float)m_pos.x; + float y = (float)m_pos.y; + m_pText->SetCharScreenHeight(m_nFontSize); + if (m_hImage) + { + switch (m_eJustify) + { + case kMsgLeft: + case kMsgCenter: + //adjust for image size + x += (float)m_imageSize.x + m_fImageGap; + y += ((float)m_imageSize.y - m_pText->GetHeight()) / 2; + break; + case kMsgRight: + break; + }; + } + m_pText->SetPosition(x,y); + + uint16 nTextWidth = (uint16)(m_fScale * (float)m_nFixedWidth - ((float)m_imageSize.x + m_fImageGap)); + m_pText->SetWrapWidth(nTextWidth); + + m_nWidth = m_imageSize.x + (uint16)( m_fImageGap + m_pText->GetWidth()); + m_nHeight = Max((uint16)m_imageSize.y,(uint16)m_pText->GetHeight()); + + } + else + { + m_nWidth = m_imageSize.x; + m_nHeight = m_imageSize.y; + } + JustifyPoly(); + +} + + +void CHUDMessage::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); +} + +void CHUDMessage::InitPoly() +{ + if (!m_hImage) return; + ScalePoly(); + SetupQuadUVs(m_Poly, m_hImage, 0.0f,0.0f,1.0f,1.0f); + g_pDrawPrim->SetRGBA(&m_Poly,0xFFFFFFFF); + JustifyPoly(); +} + +void CHUDMessage::ScalePoly() +{ + if (!m_hImage) return; + + uint32 w,h; + g_pTexInterface->GetTextureDims(m_hImage,w,h); + + if (m_nBaseImageSize > 0) + { + w = (uint32)( (float)w * (float)m_nBaseImageSize/ (float)h); + h = m_nBaseImageSize; + } + + + m_imageSize.x = (int)((float)w * m_fScale); + m_imageSize.y = (int)((float)h * m_fScale); + +} + + +void CHUDMessage::JustifyPoly() +{ + if (!m_hImage) return; + + float x = (float)m_basePos.x * m_fScale; + float y = (float)m_basePos.y * m_fScale; + float fw = (float)m_imageSize.x; + float fh = (float)m_imageSize.y; + + if (m_pText) + { + switch (m_eJustify) + { + case kMsgCenter: + //adjust for text size + x -= ( m_pText->GetWidth() + m_fImageGap ) / 2.0f; + break; + case kMsgRight: + //adjust for text size + x -= ( m_pText->GetWidth() + m_fImageGap ); + break; + case kMsgLeft: + break; + }; + } + +// y += (m_pText->GetHeight() - (float)m_imageSize.y) / 2.0f; + + g_pDrawPrim->SetXYWH(&m_Poly,x,y,fw,fh); + + +} + + + + diff --git a/Jack/ClientShellDLL/HUDMessage.h b/Jack/ClientShellDLL/HUDMessage.h new file mode 100644 index 00000000..88a0aed7 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMessage.h @@ -0,0 +1,136 @@ +//------------------------------------------------------------------------- +// +// MODULE : HUDMessage.h +// +// PURPOSE : Base class for HUD text display +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +//------------------------------------------------------------------------- + +#ifndef __HUD_MESSAGE_H__ +#define __HUD_MESSAGE_H__ + + +#include "LTGUIMgr.h" +#include "LTPoly.h" + +enum MsgJustification +{ + kMsgLeft, + kMsgCenter, + kMsgRight, +}; + +typedef struct MsgCreate_t +{ + MsgCreate_t() + { + pFont = LTNULL; + nFontSize = 0; + nTextColor = 0; + hImage = LTNULL; + nImageSize = 0; + eJustify = kMsgLeft; + fDuration = 0.0f; + fFadeDur = 0.0f; + nWidth = 640; + bDropShadow = true; + + }; + + MsgCreate_t &operator=(const MsgCreate_t &cOther) { + sString = cOther.sString; + pFont = cOther.pFont; + nFontSize = cOther.nFontSize; + nTextColor = cOther.nTextColor; + hImage = cOther.hImage; + nImageSize = cOther.nImageSize; + eJustify = cOther.eJustify; + fDuration = cOther.fDuration; + fFadeDur = cOther.fFadeDur; + nWidth = cOther.nWidth; + bDropShadow = cOther.bDropShadow; + return *this; + } + + + std::string sString; + CUIFont* pFont; + uint8 nFontSize; + uint32 nTextColor; + HTEXTURE hImage; + uint8 nImageSize; + MsgJustification eJustify; + float fDuration; + float fFadeDur; + uint16 nWidth; + bool bDropShadow; + +} MsgCreate; + + + +class CHUDMessage : public CLTGUICtrl +{ +public: + CHUDMessage(); + virtual ~CHUDMessage() {Destroy();} + + LTBOOL Create(MsgCreate &mc); + virtual void Destroy(); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + // Render the control + virtual void Render (LTBOOL bForceVisible); + virtual void Render (); + + void SetAlpha(float fAlpha); + + virtual void Update(); + + virtual uint16 GetHeight() {return m_nHeight;} + virtual uint16 GetWidth() {return m_nWidth;} + +protected: + void SetRenderState(); + void InitPoly(); + void ScalePoly(); + void JustifyPoly(); + float GetLifetime(); + +protected: + LTPoly_GT4 m_Poly; + HTEXTURE m_hImage; + + uint16 m_nFixedWidth; // The width of the control + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The width of the control + + LTIntPt m_imageSize; + uint8 m_nBaseImageSize; + + CUIFormattedPolyString* m_pText; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + uint32 m_nTextColor; + + float m_fInitTime; + float m_fDuration; + float m_fFadeDur; + + float m_fImageGap; + + float m_fAlpha; + + bool m_bDropShadow; + + MsgJustification m_eJustify; +}; + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDMessageQueue.cpp b/Jack/ClientShellDLL/HUDMessageQueue.cpp new file mode 100644 index 00000000..504c76bd --- /dev/null +++ b/Jack/ClientShellDLL/HUDMessageQueue.cpp @@ -0,0 +1,534 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMessageQueue.cpp +// +// PURPOSE : Implementation of CHUDMessageQueue to display messages +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDMessageQueue.h" +#include "InterfaceMgr.h" + + +const uint16 CHUDMessageQueue::kMaxHistory = 255; + +void SimulateChatFn(int argc, char **argv) +{ +// int num = GetRandom(3,7); + char szTmp[128]; + for (int n = 0; n < 25; n++) + { + sprintf(szTmp,"%d",n); + g_pChatMsgs->AddMessage(szTmp,(eChatMsgType)GetRandom(0,2)); + } +} + + +CHUDMessageQueue::CHUDMessageQueue() +{ + m_UpdateFlags = kHUDFrame; + m_nMaxActiveMsgs = 5; + m_nMaxHistoryMsgs = 1; + m_bTopJustify = LTTRUE; + m_eLevel = kHUDRenderText; + m_bShowHistory = LTFALSE; + m_nHistoryOffset = 0; + m_bDraw = true; +} + + +LTBOOL CHUDMessageQueue::Init() +{ + UpdateLayout(); + + g_pLTClient->RegisterConsoleProgram("SimulateChat", SimulateChatFn); + + ASSERT(m_nMaxActiveMsgs); + if (!m_nMaxActiveMsgs) return LTFALSE; + + m_ActiveMsgs.reserve(m_nMaxActiveMsgs); + m_HistoryMsgs.reserve(m_nMaxHistoryMsgs); + + m_History.reserve(32); + + + MsgCreate fmt = m_MsgFormat; + fmt.sString = ""; + fmt.fDuration = 0.0f; + + for (int i = 0; i < m_nMaxActiveMsgs; i++) + { + CHUDMessage *pMsg = debug_new(CHUDMessage); + if (pMsg->Create(fmt)) + { + pMsg->Show(LTFALSE); + m_ActiveMsgs.push_back(pMsg); + } + else + { + debug_delete(pMsg); + } + } + + for (i = 0; i < m_nMaxHistoryMsgs; i++) + { + CHUDMessage *pMsg = debug_new(CHUDMessage); + if (pMsg->Create(fmt)) + { + pMsg->Show(LTFALSE); + m_HistoryMsgs.push_back(pMsg); + } + else + { + debug_delete(pMsg); + } + } + + return LTTRUE; + +} +void CHUDMessageQueue::Term() +{ + MessageArray::iterator iter = m_ActiveMsgs.begin(); + while (iter != m_ActiveMsgs.end()) + { + CHUDMessage *pMsg = (*iter); + pMsg->Destroy(); + debug_delete(pMsg); + iter++; + } + + iter = m_HistoryMsgs.begin(); + while (iter != m_HistoryMsgs.end()) + { + CHUDMessage *pMsg = (*iter); + pMsg->Destroy(); + debug_delete(pMsg); + iter++; + } + + MCArray::iterator mcIter = m_History.begin(); + while (mcIter != m_History.end()) + { + debug_delete((*mcIter)); + mcIter++; + } + + +} + +void CHUDMessageQueue::Render() +{ + if( !m_bDraw ) + return; + + LTIntPt pos = m_BasePos; + + if (m_bTopJustify) + { + MessageArray::iterator iter; + if (m_bShowHistory) + { + iter = m_HistoryMsgs.begin(); + while (iter != m_HistoryMsgs.end()) + { + CHUDMessage *pMsg = *iter; + + if (pMsg->IsVisible()) + { + pMsg->SetBasePos(pos); + pMsg->Render(LTTRUE); + + pos.y += pMsg->GetBaseHeight(); + } + + iter++; + } + } + else + { + + iter = m_ActiveMsgs.begin(); + while (iter != m_ActiveMsgs.end()) + { + CHUDMessage *pMsg = *iter; + if (pMsg->IsVisible()) + { + pMsg->SetBasePos(pos); + pMsg->Render(); + + pos.y += pMsg->GetBaseHeight(); + } + + iter++; + } + } + + + } + else + { + MessageArray::reverse_iterator iter; + + if (m_bShowHistory) + { + iter = m_HistoryMsgs.rbegin(); + while (iter != m_HistoryMsgs.rend()) + { + CHUDMessage *pMsg = *iter; + if (pMsg->IsVisible()) + { + + pos.y -= pMsg->GetBaseHeight(); + pMsg->SetBasePos(pos); + pMsg->Render(LTTRUE); + } + + iter++; + } + } + else + { + iter = m_ActiveMsgs.rbegin(); + while (iter != m_ActiveMsgs.rend()) + { + CHUDMessage *pMsg = *iter; + if (pMsg->IsVisible()) + { + pos.y -= pMsg->GetBaseHeight(); + pMsg->SetBasePos(pos); + pMsg->Render(); + } + + iter++; + } + } + } + +} + +void CHUDMessageQueue::Update() +{ + MessageArray::iterator iter = m_ActiveMsgs.begin(); + while (iter != m_ActiveMsgs.end()) + { + CHUDMessage *pMsg = *iter; + pMsg->Update(); + iter++; + } + +} + +void CHUDMessageQueue::AddMessage(MsgCreate &fmt, bool bHistoryOnly) +{ + + if (!bHistoryOnly) + { + CHUDMessage *pMsg = 0; + + if (!m_ActiveMsgs.empty()) + { + //take the oldest active message out of the list + MessageArray::iterator iter = m_ActiveMsgs.begin(); + pMsg = (*iter); + m_ActiveMsgs.erase(iter); + } + else + { + CHUDMessage *pMsg = debug_new(CHUDMessage); + } + + //overwrite the data + pMsg->Create(fmt); + pMsg->Show(LTTRUE); + + //and add it back to the list + m_ActiveMsgs.push_back(pMsg); + } + + MCArray::iterator mcIter; + while (m_History.size() >= kMaxHistory) + { + mcIter = m_History.begin(); + debug_delete(*mcIter); + m_History.erase(mcIter); + } + + MsgCreate *pMC = debug_new(MsgCreate); + *pMC = fmt; + m_History.push_back(pMC); + + if (m_bShowHistory) + { + SetHistoryOffset(m_nHistoryOffset); + } + +} + +void CHUDMessageQueue::ShowHistory(LTBOOL bShow) +{ + m_bShowHistory = bShow; + if (bShow) + { + SetHistoryOffset(0); + } +} + + +void CHUDMessageQueue::ClearHistory() +{ + MCArray::iterator mcIter = m_History.begin(); + while (mcIter != m_History.end()) + { + debug_delete((*mcIter)); + mcIter++; + } + m_History.clear(); + + MessageArray::iterator iter = m_ActiveMsgs.begin(); + while (iter != m_ActiveMsgs.end()) + { + (*iter)->Show(LTFALSE); + iter++; + } + +} + +void CHUDMessageQueue::SetHistoryOffset(uint16 nOffset) +{ + uint16 nMaxOffset; + if (m_History.size() <= m_HistoryMsgs.size()) + nMaxOffset = 0; + else + nMaxOffset = (m_History.size() - m_HistoryMsgs.size()); + + if (nOffset > nMaxOffset) + nOffset = nMaxOffset; + + m_nHistoryOffset = nOffset; + + uint8 nMsg = m_HistoryMsgs.size() - 1; + uint8 nIndex = (m_History.size() - m_nHistoryOffset) - 1; + + while (nMsg < m_HistoryMsgs.size()) + { + CHUDMessage* pMsg = m_HistoryMsgs[nMsg]; + if ( nIndex < m_History.size() ) + { + pMsg->Create(*(m_History[nIndex])); + pMsg->Show(LTTRUE); + nIndex--; + } + else + pMsg->Show(LTFALSE); + + nMsg--; + + + } + + +} + + +//display an earlier page of history +void CHUDMessageQueue::IncHistoryOffset() +{ + uint16 nMaxOffset; + if (m_History.size() <= m_HistoryMsgs.size()) + nMaxOffset = 0; + else + nMaxOffset = (m_History.size() - m_HistoryMsgs.size()); + + uint16 nOffset = m_nHistoryOffset + m_HistoryMsgs.size(); + + if (nOffset > nMaxOffset) + nOffset = nMaxOffset; + + SetHistoryOffset(nOffset); +} + +//display an later page of history +void CHUDMessageQueue::DecHistoryOffset() +{ + uint16 nOffset = m_nHistoryOffset; + + if (nOffset > m_HistoryMsgs.size()) + nOffset -= m_HistoryMsgs.size(); + else + nOffset = 0; + + SetHistoryOffset(nOffset); + +} + +void CHUDChatMsgQueue::UpdateLayout() +{ + + char *pTag = "ChatMessageQueue"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + + m_MsgFormat.pFont = g_pInterfaceResMgr->GetFont(nFont); + m_MsgFormat.nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + m_MsgFormat.nTextColor = argbWhite; + m_MsgFormat.fDuration = g_pLayoutMgr->GetFloat(pTag,"MessageTime"); + m_MsgFormat.fFadeDur = g_pLayoutMgr->GetFloat(pTag,"MessageFade"); + m_MsgFormat.nWidth = (uint16) g_pLayoutMgr->GetInt(pTag,"Width"); + + + m_nMaxActiveMsgs = (uint8)g_pLayoutMgr->GetInt(pTag,"MaxMessages"); + m_nMaxHistoryMsgs = (uint8)g_pLayoutMgr->GetInt(pTag,"MaxHistory"); + + + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_nMsgColors[kMsgDefault] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"ChatColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgChat] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"CheatColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgCheatConfirm] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector("Transmission","TextColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgTransmission] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector( pTag, "ScmdColor" ); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgScmd] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"TeamColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgTeam] = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector( pTag, "RedTeamColor" ); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgRedTeam] = SET_ARGB( 0xFF, nR, nG, nB ); + + vCol = g_pLayoutMgr->GetVector( pTag, "BlueTeamColor" ); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nMsgColors[kMsgBlueTeam] = SET_ARGB( 0xFF, nR, nG, nB ); + +} + +void CHUDChatMsgQueue::AddMessage(const char *pszString, eChatMsgType type) +{ + + MsgCreate fmt = m_MsgFormat; + fmt.sString = pszString; + fmt.nTextColor = m_nMsgColors[type]; + bool bHistoryOnly = (type == kMsgTransmission); + CHUDMessageQueue::AddMessage(fmt,bHistoryOnly); + +} + +void CHUDChatMsgQueue::AddMessage(int nMessageID, eChatMsgType type) +{ + AddMessage(LoadTempString(nMessageID),type); +} + + +void CHUDPickupMsgQueue::UpdateLayout() +{ + m_bTopJustify = LTFALSE; + + char *pTag = "PickupMessageQueue"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + + m_MsgFormat.pFont = g_pInterfaceResMgr->GetFont(nFont); + m_MsgFormat.nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + m_MsgFormat.nImageSize = (uint8)g_pLayoutMgr->GetInt(pTag,"IconSize"); + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_MsgFormat.nTextColor = SET_ARGB(0xFF,nR,nG,nB); + + m_MsgFormat.fDuration = g_pLayoutMgr->GetFloat(pTag,"MessageTime"); + m_MsgFormat.fFadeDur = g_pLayoutMgr->GetFloat(pTag,"MessageFade"); + m_MsgFormat.nWidth = (uint16) g_pLayoutMgr->GetInt(pTag,"Width"); + + + m_nMaxActiveMsgs = (uint8)g_pLayoutMgr->GetInt(pTag,"MaxMessages"); + +} + + +void CHUDPickupMsgQueue::AddMessage(const char *pszString,const char *pszImage) +{ + MsgCreate fmt = m_MsgFormat; + fmt.sString = pszString; + fmt.hImage = g_pInterfaceResMgr->GetTexture(pszImage); + CHUDMessageQueue::AddMessage(fmt); + +} + +void CHUDPickupMsgQueue::AddMessage(int nMessageID,const char *pszImage) +{ + AddMessage(LoadTempString(nMessageID),pszImage); +} + +void CHUDPickupMsgQueue::Render() +{ + // [KLS 7/17/02] Don't show pickup messages during cinematics... + if (!g_pPlayerMgr->IsUsingExternalCamera()) + { + CHUDMessageQueue::Render(); + } +} + +void CHUDRewardMsgQueue::UpdateLayout() +{ + m_bTopJustify = LTFALSE; + + char *pTag = "RewardMessageQueue"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + + m_MsgFormat.pFont = g_pInterfaceResMgr->GetFont(nFont); + m_MsgFormat.nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + m_MsgFormat.nTextColor = argbWhite; + m_MsgFormat.fDuration = g_pLayoutMgr->GetFloat(pTag,"MessageTime"); + m_MsgFormat.fFadeDur = g_pLayoutMgr->GetFloat(pTag,"MessageFade"); + m_MsgFormat.nWidth = (uint16) g_pLayoutMgr->GetInt(pTag,"Width"); + + m_nMaxActiveMsgs = (uint8)g_pLayoutMgr->GetInt(pTag,"MaxMessages"); + m_nMaxHistoryMsgs = (uint8)g_pLayoutMgr->GetInt(pTag,"MaxHistory"); + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_nMsgColors[kMsgDefault] = SET_ARGB(0xFF,nR,nG,nB); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDMessageQueue.h b/Jack/ClientShellDLL/HUDMessageQueue.h new file mode 100644 index 00000000..aa03c546 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMessageQueue.h @@ -0,0 +1,124 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMessageQueue.h +// +// PURPOSE : Definition of CHUDMessageQueue to display messages +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_MSG_Q_H +#define __HUD_MSG_Q_H + +#include "HUDItem.h" +#include "HUDMessage.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDMessageQueue : public CHUDItem +{ +public: + CHUDMessageQueue(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void AddMessage(MsgCreate &fmt, bool bHistoryOnly = false); + + virtual uint8 GetNumActiveMsgs() {return (uint8)m_ActiveMsgs.size(); } + + virtual void ShowHistory(LTBOOL bShow); + virtual void ClearHistory(); + + virtual void SetHistoryOffset(uint16 nOffset); + + //display an earlier page of history + virtual void IncHistoryOffset(); + + //display an later page of history + virtual void DecHistoryOffset(); + + virtual void CanDraw( bool bDraw ) { m_bDraw = bDraw; } + +protected: + static const uint16 kMaxHistory; + + + LTBOOL m_bTopJustify; + LTBOOL m_bShowHistory; + + typedef std::vector MessageArray; + MessageArray m_ActiveMsgs; + MessageArray m_HistoryMsgs; + + typedef std::vector MCArray; + MCArray m_History; + + uint16 m_nHistoryOffset; + + + LTIntPt m_BasePos; + MsgCreate m_MsgFormat; + + uint8 m_nMaxActiveMsgs; + uint8 m_nMaxHistoryMsgs; + + bool m_bDraw; +}; + +enum eChatMsgType +{ + kMsgDefault = 0, + kMsgChat, + kMsgCheatConfirm, + kMsgTransmission, + kMsgScmd, + kMsgTeam, + kMsgRedTeam, + kMsgBlueTeam, + kNumChatMsgTypes +}; + +class CHUDChatMsgQueue : public CHUDMessageQueue +{ +public: + + virtual void UpdateLayout(); + + virtual void AddMessage(const char *pszString, eChatMsgType type = kMsgDefault); + virtual void AddMessage(int nMessageID, eChatMsgType type = kMsgDefault); + + +protected: + + uint32 m_nMsgColors[kNumChatMsgTypes]; + +}; + +class CHUDPickupMsgQueue : public CHUDMessageQueue +{ +public: + + virtual void UpdateLayout(); + virtual void Render(); + + + virtual void AddMessage(const char *pszString,const char *pszImage); + virtual void AddMessage(int nMessageID,const char *pszImage); + +}; + +class CHUDRewardMsgQueue : public CHUDChatMsgQueue +{ +public: + + virtual void UpdateLayout(); +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDMeter.cpp b/Jack/ClientShellDLL/HUDMeter.cpp new file mode 100644 index 00000000..621e56d4 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMeter.cpp @@ -0,0 +1,125 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMeter.cpp +// +// PURPOSE : HUDItem to display a meter +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMeter.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMeter::CHUDMeter +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDMeter::CHUDMeter() +: CHUDItem ( ), + m_MeterBasePos ( 0, 0 ), + m_MeterOffset ( 0, 0 ), + m_nMeterHeight ( 0 ), + m_fMeterScale ( 0.0f ), + m_dwValue ( 0 ), + m_dwMaxValue ( 0 ), + m_bDraw ( false ) +{ + m_szMeterTex[0] = '\0'; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMeter::CHUDMeter +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CHUDMeter::~CHUDMeter() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMeter::Init +// +// PURPOSE: Setup the meter... +// +// ----------------------------------------------------------------------- // + +LTBOOL CHUDMeter::Init() +{ + // Get the data for layout.txt to setup the meter... + + UpdateLayout(); + + // Set the meter bar texture... + + if( m_szMeterTex[0] ) + { + m_MeterBar.Init( g_pInterfaceResMgr->GetTexture( m_szMeterTex )); + } + else + { + return LTFALSE; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMeter::Render +// +// PURPOSE: Draw the meter... +// +// ----------------------------------------------------------------------- // + +void CHUDMeter::Render() +{ + if( !m_bDraw ) + return; + + SetRenderState(); + + m_MeterBar.Render(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMeter::Update +// +// PURPOSE: Set the values for the bar to draw... +// +// ----------------------------------------------------------------------- // + +void CHUDMeter::Update() +{ + if( m_dwValue == 0 || m_dwMaxValue == 0 ) + { + m_bDraw = false; + return; + } + + m_bDraw = true; + + float x = (float)(m_MeterBasePos.x + m_MeterOffset.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_MeterBasePos.y + m_MeterOffset.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = (float)m_dwValue * m_fMeterScale * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_nMeterHeight * g_pInterfaceResMgr->GetYRatio(); + float maxW = (float)m_dwMaxValue * m_fMeterScale * g_pInterfaceResMgr->GetXRatio(); + + m_MeterBar.Update( x, y, w, maxW, h ); +} diff --git a/Jack/ClientShellDLL/HUDMeter.h b/Jack/ClientShellDLL/HUDMeter.h new file mode 100644 index 00000000..6314c2fc --- /dev/null +++ b/Jack/ClientShellDLL/HUDMeter.h @@ -0,0 +1,58 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMeter.h +// +// PURPOSE : HUDItem to display a meter +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_METER_H__ +#define __HUD_METER_H__ + +// +// Includes... +// + + #include "HUDItem.h" + #include "HUDBar.h" + #include "CommonUtilities.h" + +class CHUDMeter : public CHUDItem +{ + public: // Methods... + + CHUDMeter(); + virtual ~CHUDMeter(); + + virtual LTBOOL Init(); + virtual void Term() {}; + virtual void Render(); + virtual void Update(); + + // Force any implementation of this hud item to use its own layout data... + virtual void UpdateLayout() = 0; + + virtual void SetValue( uint32 dwVal ) { m_dwValue = (dwVal >= m_dwMaxValue ? m_dwMaxValue : dwVal); } + virtual void SetMaxValue( uint32 dwVal ) { m_dwMaxValue = dwVal; } + + + protected: // Members... + + LTIntPt m_MeterBasePos; + LTIntPt m_MeterOffset; + + int m_nMeterHeight; + float m_fMeterScale; + char m_szMeterTex[128]; + + uint32 m_dwValue; + uint32 m_dwMaxValue; + + bool m_bDraw; + + CHUDBar m_MeterBar; +}; + +#endif // __HUD_METER_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDMgr.cpp b/Jack/ClientShellDLL/HUDMgr.cpp new file mode 100644 index 00000000..5ade3a56 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMgr.cpp @@ -0,0 +1,244 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMgr.cpp +// +// PURPOSE : Implementation of CHUDMgr class +// +// CREATED : 07/17/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "GameClientShell.h" + + +CHUDMgr* g_pHUDMgr = LTNULL; +CHUDChatMsgQueue* g_pChatMsgs = LTNULL; +CHUDPickupMsgQueue* g_pPickupMsgs = LTNULL; +CHUDChatInput* g_pChatInput = LTNULL; +CHUDTransmission* g_pTransmission = LTNULL; +CHUDMissionText* g_pMissionText = LTNULL; +CHUDSubtitles* g_pSubtitles = LTNULL; +CHUDDecision* g_pDecision = LTNULL; +CHUDPopup* g_pPopup = LTNULL; +CHUDRadar* g_pRadar = LTNULL; +CHUDRewardMsgQueue* g_pRewardMsgs = LTNULL; +CHUDPaused* g_pPaused = LTNULL; +CHUDDisplayMeter* g_pDisplayMeter = LTNULL; +CHUDScores* g_pScores = LTNULL; +CHUDBombTarget* g_pBombTarget = LTNULL; +CHUDCarrying* g_pCarrying = LTNULL; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMgr::CHUDMgr() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CHUDMgr::CHUDMgr() +{ + m_itemArray.reserve(12); + m_eLevel = kHUDRenderNone; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMgr::~CHUDMgr() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CHUDMgr::~CHUDMgr() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMgr::Init() +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +LTBOOL CHUDMgr::Init() +{ + m_itemArray.push_back(&m_RewardMsgs); + m_itemArray.push_back(&m_Popup); + m_itemArray.push_back(&m_Decision); + m_itemArray.push_back(&m_Subtitles); + m_itemArray.push_back(&m_ChatMsgs); + m_itemArray.push_back(&m_ChatInput); + m_itemArray.push_back(&m_MissionText); + m_itemArray.push_back(&m_Transmission); + m_itemArray.push_back(&m_PickupMsgs); + m_itemArray.push_back(&m_Damage); + m_itemArray.push_back(&m_Radar); + m_itemArray.push_back(&m_DisplayMeter); + m_itemArray.push_back(&m_Scores); + m_itemArray.push_back(&m_BombTarget); + m_itemArray.push_back(&m_Carrying); + m_itemArray.push_back(&m_WeaponHeat); + + g_pPopup = &m_Popup; + g_pDecision = &m_Decision; + g_pSubtitles = &m_Subtitles; + g_pChatMsgs = &m_ChatMsgs; + g_pChatInput = &m_ChatInput; + g_pMissionText = &m_MissionText; + g_pTransmission = &m_Transmission; + g_pPickupMsgs = &m_PickupMsgs; + g_pRadar = &m_Radar; + g_pRewardMsgs = &m_RewardMsgs; + g_pPaused = &m_Paused; + g_pDisplayMeter = &m_DisplayMeter; + g_pScores = &m_Scores; + g_pBombTarget = &m_BombTarget; + g_pCarrying = &m_Carrying; + + m_nCurrentLayout = GetConsoleInt("HUDLayout",0); + + ItemArray::iterator iter = m_itemArray.begin(); + while (iter != m_itemArray.end()) + { + if (!(*iter)->Init()) + return LTFALSE; + iter++; + } + + m_UpdateFlags = kHUDAll; + + g_pHUDMgr = this; + + m_bVisible = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDMgr::Term() +// +// PURPOSE: Terminate the HUD +// +// ----------------------------------------------------------------------- // + +void CHUDMgr::Term() +{ + ItemArray::iterator iter = m_itemArray.begin(); + + while (iter != m_itemArray.end()) + { + (*iter)->Term(); + iter++; + } + + m_itemArray.clear(); + + g_pHUDMgr = LTNULL; +} + + +void CHUDMgr::Update() +{ + + int nLayout = GetConsoleInt("HUDLayout",0); + if (nLayout != m_nCurrentLayout) + { + m_nCurrentLayout = nLayout; + UpdateLayout(); + } + m_UpdateFlags |= kHUDFrame; + + ItemArray::iterator iter = m_itemArray.begin(); + + while (iter != m_itemArray.end()) + { + if (m_UpdateFlags & (*iter)->GetUpdateFlags()) + (*iter)->Update(); + iter++; + } + + m_UpdateFlags = kHUDNone; + +} + +void CHUDMgr::Render() +{ + if (!m_bVisible) return; + + ItemArray::iterator iter = m_itemArray.begin(); + + while (iter != m_itemArray.end()) + { + //we need to make sure that this hud item is up to date though + if (m_UpdateFlags & (*iter)->GetUpdateFlags()) + (*iter)->Update(); + + if ((*iter)->GetRenderLevel() <= m_eLevel) + (*iter)->Render(); + iter++; + } + +} + + +void CHUDMgr::QueueUpdate(uint32 nUpdateFlag) +{ + m_UpdateFlags |= nUpdateFlag; +} + +void CHUDMgr::ScreenDimsChanged() +{ + m_UpdateFlags = kHUDAll; +} + +void CHUDMgr::NextLayout() +{ + m_nCurrentLayout++; + if (m_nCurrentLayout >= g_pLayoutMgr->GetNumHUDLayouts()) + m_nCurrentLayout = 0; + WriteConsoleInt("HUDLayout",m_nCurrentLayout); + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->m_nLayout = m_nCurrentLayout; + pProfile->Save(); + UpdateLayout(); +} + +void CHUDMgr::PrevLayout() +{ + if (m_nCurrentLayout == 0) + m_nCurrentLayout = g_pLayoutMgr->GetNumHUDLayouts() - 1; + else + m_nCurrentLayout--; + WriteConsoleInt("HUDLayout",m_nCurrentLayout); + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->m_nLayout = m_nCurrentLayout; + pProfile->Save(); + UpdateLayout(); +} + +void CHUDMgr::UpdateLayout() +{ + ItemArray::iterator iter = m_itemArray.begin(); + + while (iter != m_itemArray.end()) + { + (*iter)->UpdateLayout(); + iter++; + } + + + m_UpdateFlags = kHUDAll; + +} + + + + diff --git a/Jack/ClientShellDLL/HUDMgr.h b/Jack/ClientShellDLL/HUDMgr.h new file mode 100644 index 00000000..6ba071e7 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMgr.h @@ -0,0 +1,145 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMgr.h +// +// PURPOSE : Definition of CHUDMgr class +// +// CREATED : 07/17/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUDMGR_H +#define __HUDMGR_H + +#include "HUDItem.h" +#include "HUDMessageQueue.h" +#include "HUDChatInput.h" +#include "HUDTransmission.h" +#include "HUDPaused.h" +#include "HUDMissionText.h" +#include "HUDSubtitles.h" +#include "HUDDamage.h" +#include "HUDDecision.h" +#include "HUDPopup.h" +#include "HUDRadar.h" +#include "HUDDisplayMeter.h" +#include "HUDScores.h" +#include "HUDBombTarget.h" +#include "HUDCarrying.h" +#include "HUDWeaponHeat.h" + +enum eHUDUpdateFlag +{ + kHUDNone = 0x00000000, + kHUDFrame = 0x00000001, + kHUDHealth = 0x00000002, + kHUDArmor = 0x00000004, + kHUDDamage = 0x00000008, + kHUDAmmo = 0x00000010, + kHUDAir = 0x00000020, //TO2 + kHUDHiding = 0x00000040, //TO2 + kHUDWeapons = 0x00000080, //TRON + kHUDPermissions = 0x00000100, //TRON + kHUDVersion = 0x00000200, //TRON + kHUDEnergy = 0x00000400, //TRON + kHUDCarry = 0x00000800, //TO2 + kHUDChooser = 0x00001000, //TO2 + kHUDEnergyTrans = 0x00002000, //TRON + kHUDObjectives = 0x00004000, //both + kHUDProcedurals = 0x00008000, //TRON + kHUDDistance = 0x00010000, + kHUDProgressBar = 0x00020000, //TO2 + kHUDDisplayMeter= 0x00040000, + kHUDRespawn = 0x00080000, + kHUDScores = 0x00100000, + kHUDDoomsday = 0x00200000, + kHUDBombTarget = 0x00400000, + kHUDWeaponHeat = 0x00800000, + kHUDAll = 0xFFFFFFFF, +}; + + +//****************************************************************************************** +//** HUD Manager +//****************************************************************************************** +class CHUDMgr +{ +public: + + CHUDMgr(); + ~CHUDMgr(); + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void QueueUpdate(uint32 nUpdateFlag); + virtual uint32 QueryUpdateFlags() {return m_UpdateFlags;} + + virtual void ScreenDimsChanged(); + + virtual void NextLayout(); + virtual void PrevLayout(); + virtual void UpdateLayout(); + + virtual void Show(LTBOOL bShow) {m_bVisible = bShow;} + virtual LTBOOL IsShown() {return m_bVisible;} + + virtual void SetRenderLevel(eHUDRenderLevel eLevel) {m_eLevel = eLevel;} + virtual eHUDRenderLevel GetRenderLevel() {return m_eLevel;} + + +protected: + + uint8 m_nCurrentLayout; + LTBOOL m_bVisible; + + uint32 m_UpdateFlags; + eHUDRenderLevel m_eLevel; + + CHUDDamage m_Damage; + CHUDChatMsgQueue m_ChatMsgs; + CHUDPickupMsgQueue m_PickupMsgs; + CHUDTransmission m_Transmission; + CHUDChatInput m_ChatInput; + CHUDMissionText m_MissionText; + CHUDSubtitles m_Subtitles; + CHUDDecision m_Decision; + CHUDPopup m_Popup; + CHUDRadar m_Radar; + CHUDRewardMsgQueue m_RewardMsgs; + CHUDPaused m_Paused; + CHUDDisplayMeter m_DisplayMeter; + CHUDScores m_Scores; + CHUDBombTarget m_BombTarget; + CHUDCarrying m_Carrying; + CHUDWeaponHeat m_WeaponHeat; + + //items + typedef std::vector ItemArray; + ItemArray m_itemArray; // Pointer to each screen + +}; + +extern CHUDMgr* g_pHUDMgr; +extern CHUDChatMsgQueue* g_pChatMsgs; +extern CHUDPickupMsgQueue* g_pPickupMsgs; +extern CHUDChatInput* g_pChatInput; +extern CHUDTransmission* g_pTransmission; +extern CHUDMissionText* g_pMissionText; +extern CHUDSubtitles* g_pSubtitles; +extern CHUDDecision* g_pDecision; +extern CHUDPopup* g_pPopup; +extern CHUDRadar* g_pRadar; +extern CHUDRewardMsgQueue* g_pRewardMsgs; +extern CHUDPaused* g_pPaused; +extern CHUDDisplayMeter* g_pDisplayMeter; +extern CHUDScores* g_pScores; +extern CHUDBombTarget* g_pBombTarget; +extern CHUDCarrying* g_pCarrying; + +#endif diff --git a/Jack/ClientShellDLL/HUDMissionText.cpp b/Jack/ClientShellDLL/HUDMissionText.cpp new file mode 100644 index 00000000..06362623 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMissionText.cpp @@ -0,0 +1,161 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMissionText.cpp +// +// PURPOSE : Implementation of CHUDMissionText to display messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDMissionText.h" +#include "InterfaceResMgr.h" +#include "LayoutMgr.h" +#include "ClientUtilities.h" + +CHUDMissionText::CHUDMissionText() +{ + m_UpdateFlags = kHUDFrame; + m_eLevel = kHUDRenderText; + m_bVisible = LTFALSE; + m_bPause = LTFALSE; + m_fScale = 1.0f; +} + + +LTBOOL CHUDMissionText::Init() +{ + UpdateLayout(); + if (!m_pText) + return LTFALSE; + + return LTTRUE; + +} +void CHUDMissionText::Term() +{ + m_Text.Clear(); + if (m_pText) + { + g_pFontManager->DestroyPolyString(m_pText); + m_pText = LTNULL; + } + +} + +void CHUDMissionText::Render() +{ + if (!m_bVisible) return; + m_Text.Render(); +} + +void CHUDMissionText::Update() +{ + // Sanity checks... + if (!IsVisible() || m_bPause) return; + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_Text.Update(); + +} + +void CHUDMissionText::Start(int nMessageID) +{ + Start(LoadTempString(nMessageID)); +} + +void CHUDMissionText::Start(char *pszString) +{ + + ASSERT(m_pText); + m_pText->SetText(pszString); + m_bVisible = LTTRUE; + m_bPause = LTFALSE; + + SetScale(g_pInterfaceResMgr->GetXRatio()); + + // Set up the timed text and start it off + m_Text.Init( m_Format ); + m_Text.Start(); + m_Text.Show(); + + +} + +void CHUDMissionText::Clear() +{ + m_Text.Clear(); +} + +void CHUDMissionText::Pause(LTBOOL bPause) +{ + m_bPause = bPause; + if (bPause) + m_Text.Pause(); + else + m_Text.Resume(); +} + +void CHUDMissionText::SetScale(float fScale) +{ + m_fScale = fScale; + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + float x = m_fScale * (float)m_BasePos.x; + float y = m_fScale * (float)m_BasePos.y; + m_pText->SetCharScreenHeight(m_nFontSize); + m_pText->SetPosition(x,y); + + uint16 nTextWidth = (uint16)(m_fScale * (float)m_nWidth); + m_pText->SetWrapWidth(nTextWidth); + + } + +} + +void CHUDMissionText::UpdateLayout() +{ + + char *pTag = "MissionText"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"Pos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + m_pFont = g_pInterfaceResMgr->GetFont(nFont); + m_nFontSize = m_nBaseFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + float x = m_fScale * (float)m_BasePos.x; + float y = m_fScale * (float)m_BasePos.y; + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont," ",x,y); + if (!m_pText) + return; + + m_nWidth = (uint16)g_pLayoutMgr->GetInt(pTag,"Width"); + m_pText->SetWrapWidth(m_nWidth); + + m_Format.text = m_pText; + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_Format.color = SET_ARGB(0xFF,nR,nG,nB); + + m_Format.useDroppedShadow = LTTRUE; + + m_Format.numberOfLinesBeforeScroll = g_pLayoutMgr->GetInt(pTag,"NumLines"); + m_Format.clipRect = NULL; + m_Format.initialDelay = 0.0f; + m_Format.characterDelay = g_pLayoutMgr->GetFloat(pTag,"LetterDelay"); + m_Format.lineDelay = g_pLayoutMgr->GetFloat(pTag,"LineDelay"); + m_Format.scrollTime = g_pLayoutMgr->GetFloat(pTag,"LineScrollTime"); + m_Format.completeDelay = g_pLayoutMgr->GetFloat(pTag,"FadeDelay"); + m_Format.fadeTime = g_pLayoutMgr->GetFloat(pTag,"FadeTime"); + + g_pLayoutMgr->GetString(pTag,"TypeSound",m_Format.textDisplaySound, TIMED_TEXT_SOUND_NAME_LENGTH ); + g_pLayoutMgr->GetString(pTag,"ScrollSound",m_Format.scrollSound, TIMED_TEXT_SOUND_NAME_LENGTH ); + +} diff --git a/Jack/ClientShellDLL/HUDMissionText.h b/Jack/ClientShellDLL/HUDMissionText.h new file mode 100644 index 00000000..f68e6268 --- /dev/null +++ b/Jack/ClientShellDLL/HUDMissionText.h @@ -0,0 +1,68 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDMissionText.h +// +// PURPOSE : Definition of CHUDMissionText to display transmission messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_MISSIONTEXT_H +#define __HUD_MISSIONTEXT_H + +#include "HUDItem.h" +#include "TimedText.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDMissionText : public CHUDItem +{ +public: + CHUDMissionText(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + void Start(int nStringId); + void Start(char *pszString); + + void Clear(); + + void Pause(LTBOOL bPause); + + void SetScale(float fScale); + + LTBOOL IsVisible() {return m_bVisible;} + +protected: + CTimedText m_Text; + + LTIntPt m_BasePos; + CUIFormattedPolyString* m_pText; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + uint32 m_nTextColor; + float m_fScale; + LTBOOL m_bVisible; + uint16 m_nWidth; + + TIMED_TEXT_INIT_STRUCT m_Format; + + LTBOOL m_bPause; + + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDObjectives.cpp b/Jack/ClientShellDLL/HUDObjectives.cpp new file mode 100644 index 00000000..c89ed84c --- /dev/null +++ b/Jack/ClientShellDLL/HUDObjectives.cpp @@ -0,0 +1,149 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDObjectives.cpp +// +// PURPOSE : HUDItem to indicate that you've received a new objective +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "TO2PlayerMgr.h" +#include "GameClientShell.h" + +//****************************************************************************************** +//** +//** HUD Carry Icon display +//** +//****************************************************************************************** + +CHUDObjectives::CHUDObjectives() +: CHUDItem ( ), + m_BasePos ( 0, 0 ), + m_fBlinkSpeed ( 0.0f ), + m_fBlinkTime ( 0.0f ), + m_fBlinkDuration ( 0.0f ), + m_fAlpha ( 0.0f ), + m_bShow ( false ), + m_bBlink ( false ), + m_fFadeDir ( 1.0f ), + m_hIcon ( LTNULL ) +{ + m_UpdateFlags = kHUDObjectives; +} + + +LTBOOL CHUDObjectives::Init() +{ + m_hIcon = g_pInterfaceResMgr->GetTexture("interface\\hud\\objectives.dtx"); + + g_pDrawPrim->SetRGBA(&m_Poly,argbWhite); + SetupQuadUVs(m_Poly,m_hIcon,0.0f,0.0f,1.0f,1.0f); + + UpdateLayout(); + + return LTTRUE; +} + +void CHUDObjectives::Term() +{ + +} + +void CHUDObjectives::Render() +{ + if (!m_bShow) return; + + if( m_bBlink ) + { + m_fAlpha += (g_pGameClientShell->GetFrameTime() * m_fFadeDir * m_fBlinkSpeed); + m_fBlinkTime -= g_pGameClientShell->GetFrameTime(); + + if (m_fAlpha < 0.0f) + { + m_fAlpha = 0.0f; + m_fFadeDir = 1.0f; + } + + if (m_fAlpha > 1.0f) + { + m_fAlpha = 1.0f; + m_fFadeDir = -1.0f; + if (m_fBlinkTime < 0.0f) + m_bBlink = false; + } + + } + + uint8 a = (uint8)( 255.0f * m_fAlpha ); + + uint32 color = SET_ARGB(a,0xFF,0xFF,0xFF); + g_pDrawPrim->SetRGBA(&m_Poly,color); + + SetRenderState(); + + g_pDrawPrim->SetTexture(m_hIcon); + g_pDrawPrim->DrawPrim(&m_Poly); + + +} + +void CHUDObjectives::Update() +{ + if (!m_bShow) return; + + float fx = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)(m_BaseSize.x) * g_pInterfaceResMgr->GetXRatio(); + float fh = (float)(m_BaseSize.y) * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH(&m_Poly,fx,fy,fw,fh); + +} + +void CHUDObjectives::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetObjectiveIconPos(nCurrentLayout); + m_BaseSize = g_pLayoutMgr->GetObjectiveIconSize(nCurrentLayout); + + m_fBlinkDuration = g_pLayoutMgr->GetObjectiveBlinkDuration(nCurrentLayout); + if (m_fBlinkDuration <= 0.0f) + m_fBlinkDuration = 3.0f; + m_fBlinkSpeed = g_pLayoutMgr->GetObjectiveBlinkSpeed(nCurrentLayout); + if (m_fBlinkSpeed <= 4.0f) + m_fBlinkSpeed = 3.0f; + + if (!m_BaseSize.x) + { + m_BasePos = LTIntPt(536,360); + m_BaseSize = LTIntPt(64,32); + } + +} + + +void CHUDObjectives::Show(bool bShow) +{ + if (m_bShow) + { + m_fAlpha = 0.0f; + m_fFadeDir = 1.0f; + } + else + { + m_fAlpha = 1.0f; + m_fFadeDir = -1.0f; + } + + m_fBlinkTime = m_fBlinkDuration; + m_bShow = bShow; + m_bBlink = true; + g_pHUDMgr->QueueUpdate(kHUDObjectives); +} + diff --git a/Jack/ClientShellDLL/HUDObjectives.h b/Jack/ClientShellDLL/HUDObjectives.h new file mode 100644 index 00000000..395c29bb --- /dev/null +++ b/Jack/ClientShellDLL/HUDObjectives.h @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDObjectives.h +// +// PURPOSE : HUDItem to indicate that you've received a new objective +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_OBJECTIVES_H +#define __HUD_OBJECTIVES_H + +#include "HUDItem.h" + + + +//****************************************************************************************** +//** HUD Carry Icon display +//****************************************************************************************** +class CHUDObjectives : public CHUDItem +{ +public: + CHUDObjectives(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + void Show(bool bShow); + + +private: + bool m_bShow; + + LTIntPt m_BasePos; + LTIntPt m_BaseSize; + + float m_fBlinkSpeed; + float m_fBlinkTime; + float m_fBlinkDuration; + float m_fAlpha; + bool m_bBlink; + float m_fFadeDir; + + LTPoly_GT4 m_Poly; + HTEXTURE m_hIcon; + + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDPaused.cpp b/Jack/ClientShellDLL/HUDPaused.cpp new file mode 100644 index 00000000..b4c6853c --- /dev/null +++ b/Jack/ClientShellDLL/HUDPaused.cpp @@ -0,0 +1,89 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDPaused.cpp +// +// PURPOSE : Implementation of CHUDPaused to display a paused message. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDPaused.h" +#include "InterfaceMgr.h" + +CHUDPaused::CHUDPaused() +{ + m_UpdateFlags = kHUDNone; + m_eLevel = kHUDRenderText; +} + + +LTBOOL CHUDPaused::Init() +{ + m_fScale = 1.0f; + + UpdateLayout(); + + m_MsgFormat.sString = LoadTempString(IDS_PAUSED); + m_MsgFormat.fDuration = 0.0f; + m_Msg.Create(m_MsgFormat); + + return LTTRUE; + +} +void CHUDPaused::Term() +{ + m_Msg.Destroy(); +} + +void CHUDPaused::Render() +{ + if (!m_Msg.IsVisible()) return; + m_Msg.Render(); +} + +void CHUDPaused::Show(LTBOOL bShow) +{ + m_Msg.Show(bShow); + + if (!bShow) + return; + + LTIntPt pos = m_BasePos; + pos.y -= m_Msg.GetBaseHeight()/2; + + m_Msg.SetBasePos(pos); +} + +void CHUDPaused::UpdateLayout() +{ + char *pTag = "PausedText"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + + m_MsgFormat.pFont = g_pInterfaceResMgr->GetFont(nFont); + m_MsgFormat.nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_MsgFormat.nTextColor = SET_ARGB(0xFF,nR,nG,nB); + m_MsgFormat.fDuration = 0.0f; + m_MsgFormat.fFadeDur = 0.0f; + m_MsgFormat.nWidth = 640; + m_MsgFormat.eJustify = kMsgCenter; + +} + +void CHUDPaused::Update() +{ + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + m_fScale = g_pInterfaceResMgr->GetXRatio(); + m_Msg.SetScale(m_fScale); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDPaused.h b/Jack/ClientShellDLL/HUDPaused.h new file mode 100644 index 00000000..0376ba3b --- /dev/null +++ b/Jack/ClientShellDLL/HUDPaused.h @@ -0,0 +1,48 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDPaused.h +// +// PURPOSE : Definition of CHUDPaused to display a paused message +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_PAUSED_H +#define __HUD_PAUSED_H + +#include "HUDItem.h" +#include "HUDMessage.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDPaused : public CHUDItem +{ +public: + CHUDPaused(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + virtual void Show(LTBOOL bShow); + +protected: + CHUDMessage m_Msg; + + LTIntPt m_BasePos; + MsgCreate m_MsgFormat; + float m_fScale; + + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDPopup.cpp b/Jack/ClientShellDLL/HUDPopup.cpp new file mode 100644 index 00000000..6544fe19 --- /dev/null +++ b/Jack/ClientShellDLL/HUDPopup.cpp @@ -0,0 +1,177 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDPopup.cpp +// +// PURPOSE : Implementation of CHUDPopup to display popups +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMgr.h" + #include "InterfaceResMgr.h" + #include "PopupMgr.h" + #include "HUDPopup.h" + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::CHUDPopup +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CHUDPopup::CHUDPopup() +: CHUDItem ( ) +{ + m_UpdateFlags = kHUDFrame; + m_bVisible = LTFALSE; + m_bColorOverride = LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Init +// +// PURPOSE: Initialize the popup... +// +// ----------------------------------------------------------------------- // + +LTBOOL CHUDPopup::Init() +{ + m_Text.Create(" ",0,0,g_pInterfaceResMgr->GetFont(0),8,LTNULL); + m_Frame.Create(g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\frame.dtx"),200,320,LTTRUE); + + return LTTRUE; + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Term +// +// PURPOSE: Destroy thyself... +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::Term() +{ + m_Frame.Destroy(); + m_Text.Destroy(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Hide +// +// PURPOSE: NONE +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::Hide( ) +{ + m_bVisible = LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Render +// +// PURPOSE: Draw the popup... +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::Render() +{ + if (!m_bVisible) return; + m_Frame.Render(); + m_Text.Render(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Update +// +// PURPOSE: Update the popup... +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::Update() +{ + // Sanity checks... + if( !IsVisible() ) return; + + if( m_fScale != g_pInterfaceResMgr->GetXRatio() ) + SetScale( g_pInterfaceResMgr->GetXRatio() ); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::SetScale +// +// PURPOSE: Set the items scale... +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::SetScale(float fScale) +{ + m_Frame.SetScale( fScale ); + m_Text.SetScale( fScale ); + + m_fScale = fScale; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDPopup::Show +// +// PURPOSE: Display the popup with the passed in text... +// +// ----------------------------------------------------------------------- // + +void CHUDPopup::Show( uint8 nPopupID, const char *pText ) +{ + POPUP* pPopup = g_pPopupMgr->GetPopup(nPopupID); + if (!pPopup) return; + + CUIFont *pFont = g_pInterfaceResMgr->GetFont(pPopup->nFont); + LTIntPt pos( (640 - pPopup->sSize.x) / 2, (480 - pPopup->sSize.y) / 2 ); + + m_Frame.SetFrame(g_pInterfaceResMgr->GetTexture(pPopup->szFrame)); + m_Frame.SetSize(pPopup->sSize.x,pPopup->sSize.y); + m_Frame.SetBasePos(pos); + m_Frame.SetScale(g_pInterfaceResMgr->GetXRatio()); + + pos.x += pPopup->sTextOffset.x; + pos.y += pPopup->sTextOffset.y; + + m_Text.SetScale(1.0f); + + m_Text.SetString( (pText ? pText : "") ); + + m_Text.SetFont(pFont,pPopup->nFontSize); + + if( !m_bColorOverride ) + m_Text.SetColors(pPopup->argbTextColor,pPopup->argbTextColor,pPopup->argbTextColor); + + m_bColorOverride = LTFALSE; + + m_Text.SetFixedWidth(pPopup->nTextWidth); + m_Text.SetBasePos(pos); + m_Text.SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_bVisible = LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDPopup.h b/Jack/ClientShellDLL/HUDPopup.h new file mode 100644 index 00000000..8669439a --- /dev/null +++ b/Jack/ClientShellDLL/HUDPopup.h @@ -0,0 +1,62 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDPopup.h +// +// PURPOSE : Definition of CHUDPopup to display Popups +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_POPUP_H +#define __HUD_POPUP_H + +// +// Includes... +// + + #include "HUDItem.h" + #include "LTGuiMgr.h" + + +class CHUDPopup : public CHUDItem +{ +public: + CHUDPopup(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + //hide or show + void Show( uint8 nPopupID, const char *pText ); + + //close window and tell server + void Hide(); + + void SetScale(float fScale); + void SetTextColor( uint8 nR, uint8 nG, uint8 nB, uint8 nA ) + { + m_bColorOverride = LTTRUE; + m_Text.SetColors( SET_ARGB(nA,nR,nG,nB), SET_ARGB(nA,nR,nG,nB), SET_ARGB(nA,nR,nG,nB) ); + } + + LTBOOL IsVisible() {return m_bVisible;} + +protected: + + + float m_fScale; + LTBOOL m_bVisible; + LTBOOL m_bColorOverride; + + + CLTGUIFrame m_Frame; + CLTGUITextCtrl m_Text; + +}; + +#endif // __HUD_POPUP_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDProgressBar.cpp b/Jack/ClientShellDLL/HUDProgressBar.cpp new file mode 100644 index 00000000..ddae56bc --- /dev/null +++ b/Jack/ClientShellDLL/HUDProgressBar.cpp @@ -0,0 +1,74 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDProgressBar.cpp +// +// PURPOSE : HUDProgressBar to display a meter for disabling gadget targets.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMgr.h" + #include "PlayerStats.h" + #include "LayoutMgr.h" + #include "HUDProgressBar.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDProgressBar::CHUDProgressBar +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDProgressBar::CHUDProgressBar() +: CHUDMeter () +{ + m_UpdateFlags = kHUDProgressBar; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDProgressBar::Update +// +// PURPOSE: Update the values to display the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDProgressBar::Update() +{ + m_dwValue = g_pPlayerStats->GetProgress(); + m_dwMaxValue = g_pPlayerStats->GetMaxProgress(); + + m_MeterBasePos.x = 320 - (uint16)(m_fMeterScale * (float)m_dwMaxValue / 2.0f); + + CHUDMeter::Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDProgressBar::UpdateLayout +// +// PURPOSE: Get the values for displaying the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDProgressBar::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_MeterBasePos.y = g_pLayoutMgr->GetProgressBarBasePosY( nCurrentLayout ); + m_MeterOffset = g_pLayoutMgr->GetProgressBarOffset( nCurrentLayout ); + m_nMeterHeight = g_pLayoutMgr->GetProgressBarHeight( nCurrentLayout ); + m_fMeterScale = g_pLayoutMgr->GetProgressBarScale( nCurrentLayout ); + + g_pLayoutMgr->GetProgressBarTexture( nCurrentLayout, m_szMeterTex, ARRAY_LEN( m_szMeterTex )); + + m_MeterBasePos.x = 320 - (uint16)(m_fMeterScale * (float)m_dwMaxValue / 2.0f); + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDProgressBar.h b/Jack/ClientShellDLL/HUDProgressBar.h new file mode 100644 index 00000000..65d17275 --- /dev/null +++ b/Jack/ClientShellDLL/HUDProgressBar.h @@ -0,0 +1,30 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDProgressBar.h +// +// PURPOSE : HUDProgressBar to display a meter for disabling gadget targets.... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_PROGRESS_BAR_H__ +#define __HUD_PROGRESS_BAR_H__ + +// +// Includes... +// + + #include "HUDMeter.h" + +class CHUDProgressBar : public CHUDMeter +{ + public: // Methods... + + CHUDProgressBar(); + + void Update(); + void UpdateLayout(); +}; + +#endif // __HUD_PROGRESS_BAR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDRadar.cpp b/Jack/ClientShellDLL/HUDRadar.cpp new file mode 100644 index 00000000..9b9f8d8d --- /dev/null +++ b/Jack/ClientShellDLL/HUDRadar.cpp @@ -0,0 +1,784 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRadar.cpp +// +// PURPOSE : HUDItem to display radar +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HUDMgr.h" + #include "HUDRadar.h" + #include "GameClientShell.h" + #include "CharacterFX.h" + #include "RadarTypeMgr.h" + +LTPoly_GT4 teamPoly; +uint32 nTeamColors[2][3] = { {argbBlack,argbBlack,argbBlack}, + {argbBlack,argbBlack,argbBlack} }; + + +float fFlashSpeed = 0.25f; +uint32 nLiveColor = 0xFFFFFF00; +uint32 nDeadColor = 0xFF808080; +uint32 nTalkColor = 0xFFFFFFFF; +float fTotalFlashTime = 2.0f; + +typedef RADAROBJECT* LPRADAROBJECT; +class RadarObjectLesser +{ +public: + + bool operator()(const LPRADAROBJECT & x, const LPRADAROBJECT & y) const + { + return (x->m_nDrawOrder < y->m_nDrawOrder ); + } +}; + + +#define RADAR_PLAYER_ALIVE_TYPE "PlayerAlive" +#define RADAR_PLAYER_DEAD_TYPE "PlayerDead" +#define RADAR_PLAYER_TALK_TYPE "PlayerTalk" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::CHUDRadar +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDRadar::CHUDRadar() +: CHUDItem (), + m_BasePos ( 0, 0 ), + m_NamePos ( 0, 0 ), + m_nBaseSize ( 0 ), + m_nObjectSize ( 0 ), + m_bDraw ( false ), + m_nMaxShowDist ( 0 ), + m_fNameXRatio ( 0.0f ), + m_fNameYRatio ( 0.0f ) +{ + m_UpdateFlags = kHUDFrame; + m_eLevel = kHUDRenderDead; + m_fLastRotation = 0.0f; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::CHUDRadar +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CHUDRadar::~CHUDRadar() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::Term +// +// PURPOSE: Release the list of radar objects... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::Term() +{ + Reset(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::Init +// +// PURPOSE: Setup the icon and poly we are going to draw... +// +// ----------------------------------------------------------------------- // + +LTBOOL CHUDRadar::Init() +{ + UpdateLayout(); + + g_pDrawPrim->SetRGBA( &teamPoly, SET_ARGB(0x7F,0xFF,0xFF,0xFF)); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::Render +// +// PURPOSE: Draw the radar... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::Render() +{ + if( !m_bDraw ) + return; + + + SetRenderState(); + + RADAROBJECT *pRadarObj = LTNULL; + RadarObjectSortList::iterator iter; + + uint8 nCount = 0; + for( iter = m_ROSortList.begin(); iter != m_ROSortList.end(); ++iter ) + { + pRadarObj = (*iter); + + // Check if the radar object has team information in it. Only + // show on same team's radar. + if( IsTeamGameType( )) + { + // Get local clientinfo. + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return; + + // Check if the radar is for an opposing player, show them on radar. + if( pRadarObj->m_nVisibleTeamId != INVALID_TEAM && + pLocalCI->nTeamID != pRadarObj->m_nVisibleTeamId ) + continue; + } + + if( pRadarObj->m_bDraw ) + { + g_pDrawPrim->SetTexture( pRadarObj->m_hTex ); + g_pDrawPrim->DrawPrim( &pRadarObj->m_Poly ); + ++nCount; + } + } + + if( IsTeamGameType() ) + { + g_pDrawPrim->SetTexture( LTNULL ); + g_pDrawPrim->DrawPrim( &teamPoly ); + } + + + RadarPlayerList::iterator sIter = m_Players.begin(); + while (sIter != m_Players.end()) + { + (*sIter)->Render(); + sIter++; + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::Update +// +// PURPOSE: Decide if we should draw the radar... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::Update() +{ + // No need to update if we aren't going to render... + + if( !m_bDraw || (m_mapRadarObjects.size() == 0 && m_Players.size() == 0) ) + return; + + //see if we have changed ratios and need to recalculate the name positions + if( (m_fNameXRatio != g_pInterfaceResMgr->GetXRatio()) || + (m_fNameYRatio != g_pInterfaceResMgr->GetYRatio())) + { + UpdateNamePositions(); + m_fNameXRatio = g_pInterfaceResMgr->GetXRatio(); + m_fNameYRatio = g_pInterfaceResMgr->GetYRatio(); + } + + LTVector vLocalPos, vObjPos, vDir; + g_pLTClient->GetObjectPos( g_pLTClient->GetClientObject(), &vLocalPos ); + + float fYaw = g_pPlayerMgr->GetYaw() - MATH_PI; + + if (g_pPlayerMgr->IsCameraAttachedToHead()) + { + fYaw = m_fLastRotation; + } + else + { + m_fLastRotation = fYaw; + } + + + LTRotation rRot( 0.0f, fYaw, 0.0f ); + LTMatrix mMat; + + rRot.ConvertToMatrix( mMat ); + mMat = ~mMat; + + RADAROBJECT *pRadarObj = LTNULL; + HOBJECT hObj = LTNULL; + RadarObjectList::iterator iter; + + for( iter = m_mapRadarObjects.begin(); iter != m_mapRadarObjects.end(); ++iter ) + { + hObj = iter->first; + pRadarObj = iter->second; + + pRadarObj->m_bDraw = false; + + g_pLTClient->GetObjectPos( hObj, &vObjPos ); + + float fDist = vLocalPos.Dist( vObjPos ); + + // Focus on all objects within maxshowdist. All objects father than maxshowdist + // are pushed to within 1/e^2 of the edge. + // This will scale fDist between 0 and 1. + fDist = 1.0f - 1.0f / ( float )( exp( 2.0f * fDist / m_nMaxShowDist )); + + // This will scale fDist within the hud element size. + fDist = ( fDist * (float)m_nBaseSize / 2.0f); + + vDir = vLocalPos - vObjPos; + MatVMul_InPlace_3x3( &mMat, &vDir ); + + vDir.y = 0.0f; + if( vDir.LengthSquared() > 0.01f ) + { + vDir.Normalize(); + } + else + { + vDir.Init(); + } + + vDir *= fDist; + + float fx = (float)(m_BasePos.x + vDir.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_BasePos.y - vDir.z) * g_pInterfaceResMgr->GetXRatio(); + float fw = (float)(m_nObjectSize) * g_pInterfaceResMgr->GetXRatio(); + + g_pDrawPrim->SetXYWH( &pRadarObj->m_Poly, fx, fy, fw, fw ); + pRadarObj->m_bDraw = true; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::UpdateLayout +// +// PURPOSE: Get data for this HUDItem from layouts.txt... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + // Use the compass values to determine where the radar should go... + + m_BasePos = g_pLayoutMgr->GetCompassPos( nCurrentLayout ); + m_nBaseSize = g_pLayoutMgr->GetCompassSize( nCurrentLayout ); + + m_NamePos = m_BasePos; + m_NamePos.x += m_nBaseSize; + m_NamePos.y += (m_nBaseSize + m_nObjectSize); + + m_nMaxShowDist = g_pLayoutMgr->GetRadarMaxShowDist( nCurrentLayout ); + m_nObjectSize = g_pLayoutMgr->GetRadarObjectSize( nCurrentLayout ); + + nLiveColor = g_pLayoutMgr->GetRadarLivePlayerColor(nCurrentLayout); + nDeadColor = g_pLayoutMgr->GetRadarDeadPlayerColor(nCurrentLayout); + nTalkColor = g_pLayoutMgr->GetRadarTalkPlayerColor(nCurrentLayout); + fTotalFlashTime = g_pLayoutMgr->GetRadarFlashTime(nCurrentLayout); + + + LTVector vCol = g_pLayoutMgr->GetVector("Scores","Team1Color"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + nTeamColors[0][0]= SET_ARGB(0x80,nR,nG,nB); + nTeamColors[0][1]= SET_ARGB(0x20,nR,nG,nB); + nTeamColors[0][2]= SET_ARGB(0x00,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector("Scores","Team2Color"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + nTeamColors[1][0]= SET_ARGB(0x80,nR,nG,nB); + nTeamColors[1][1]= SET_ARGB(0x20,nR,nG,nB); + nTeamColors[1][2]= SET_ARGB(0x00,nR,nG,nB); + + + int nCenterOffset = int(m_nBaseSize / 2) - int(m_nObjectSize / 2); + + m_BasePos.x += nCenterOffset; + m_BasePos.y += nCenterOffset; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::AddObject +// +// PURPOSE: Add a new object to the radar and display with the specified type... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::AddObject( HOBJECT hObj, uint8 nRadarType, uint8 nVisibleTeamId ) +{ + if( !hObj || !g_pRadarTypeMgr ) + return; + + // Don't add the object more than once... + + if( m_mapRadarObjects.find( hObj ) != m_mapRadarObjects.end() ) + { + DebugCPrint(1,"HUDRadar: failed adding object (duplicate)"); + return; + } + + RADARTYPE *pType = g_pRadarTypeMgr->GetRadarType( nRadarType ); + if( pType && pType->szIcon ) + { + HTEXTURE hTex = g_pInterfaceResMgr->GetTexture( pType->szIcon ); + if( !hTex ) + { + DebugCPrint(1,"HUDRadar: failed adding object (no texture %s)", pType->szIcon); + return; + } + + RADAROBJECT *pRadObj = debug_new( RADAROBJECT ); + if( !pRadObj ) + return; + + pRadObj->m_bDraw = false; + pRadObj->m_hTex = hTex; + pRadObj->m_nDrawOrder = pType->nDrawOrder; + pRadObj->m_nVisibleTeamId = nVisibleTeamId; + + g_pDrawPrim->SetRGBA( &pRadObj->m_Poly, argbWhite ); + SetupQuadUVs( pRadObj->m_Poly, hTex, 0.0f, 0.0f, 1.0f, 1.0f ); + + m_mapRadarObjects[hObj] = pRadObj; + m_ROSortList.push_back(pRadObj); + m_ROSortList.sort(RadarObjectLesser()); + + } + else + { + DebugCPrint(1,"HUDRadar: failed adding object (unknown type %d)",nRadarType); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::AddObject +// +// PURPOSE: Add a new object to the radar and display with the specified type... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::AddObject( HOBJECT hObj, const char *pRadarType, uint8 nVisibleTeamId ) +{ + if( !hObj || !pRadarType || !g_pRadarTypeMgr ) + return; + + RADARTYPE *pType = g_pRadarTypeMgr->GetRadarType( pRadarType ); + if( pType ) + { + AddObject( hObj, pType->nId, nVisibleTeamId ); + } + else + { + DebugCPrint(1,"HUDRadar: failed adding object (unknown type %s)",pRadarType); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::RemoveObject +// +// PURPOSE: Remove the object from the radar... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::RemoveObject( HOBJECT hObj ) +{ + if( !hObj ) + return; + + //if we have a player record for this object, remove it + RemovePlayer(hObj); + + // Make sure we actually have the object in our list... + + RadarObjectList::iterator iter = m_mapRadarObjects.find( hObj ); + if( iter == m_mapRadarObjects.end() ) + return; + + m_ROSortList.remove(iter->second); + + debug_delete( iter->second ); + m_mapRadarObjects.erase( iter ); + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::ChangeRadarType +// +// PURPOSE: Change the texture used to display the object... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::ChangeRadarType( HOBJECT hObj, const char *pRadarType ) +{ + if( !hObj || !pRadarType || !g_pRadarTypeMgr ) + return; + + RadarObjectList::iterator iter = m_mapRadarObjects.find( hObj ); + if( iter == m_mapRadarObjects.end() ) + return; + + RADARTYPE *pType = g_pRadarTypeMgr->GetRadarType( pRadarType ); + if( pType && pType->szIcon ) + { + HTEXTURE hTex = g_pInterfaceResMgr->GetTexture( pType->szIcon ); + if( !hTex ) + return; + + iter->second->m_hTex = hTex; + + iter->second->m_nDrawOrder = pType->nDrawOrder; + m_ROSortList.sort(RadarObjectLesser()); + + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::AddPlayer +// +// PURPOSE: Add a player name and icon to the radar... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::AddPlayer(HOBJECT hObj, uint32 nId) +{ + if (!hObj) return; + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + HOBJECT hLocalObj = g_pLTClient->GetClientObject(); + + + uint8 nTeamID = INVALID_TEAM; + + // Check for teams and only display players of the same team... + if( IsTeamGameType() && hLocalObj != hObj) + { + CLIENT_INFO *pLocalCI = pCIMgr->GetLocalClient(); + if( !pLocalCI || !pCI ) + return; + + if( pLocalCI->nTeamID != pCI->nTeamID ) + return; + + nTeamID = pCI->nTeamID; + + } + + + bool bDead = false; + + if (hLocalObj != hObj) + { + + AddObject( hObj, RADAR_PLAYER_ALIVE_TYPE, nTeamID ); + + } + + CCharacterFX *pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(hObj); + if (pCharacter && pCharacter->IsPlayerDead()) + { + bDead = true; + } + + + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && ( (*iter)->hObj != hObj ) ) + { + iter++; + } + + RADAR_PLAYER_OBJ* pPlayer = NULL; + + //new player... + if (iter == m_Players.end()) + { + pPlayer = debug_new(RADAR_PLAYER_OBJ); + m_Players.push_back(pPlayer); + } + else + { + pPlayer = (*iter); + } + + pPlayer->nID = nId; + pPlayer->hObj = hObj; + + if (!pPlayer->pName) + { + uint8 nFont = 0; + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + pPlayer->pName = g_pFontManager->CreateFormattedPolyString(pFont,"",0.0f,0.0f); + pPlayer->pName->SetAlignmentH(CUI_HALIGN_RIGHT); + } + + if (pCI) + { + pPlayer->pName->SetText(pCI->sName.c_str()); + } + + SetPlayerDead(hObj,bDead); + + UpdateNamePositions(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::RemovePlayer +// +// PURPOSE: Remove a player name from the radar... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::RemovePlayer(HOBJECT hObj) +{ + if (!hObj) return; + + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && ( (*iter)->hObj != hObj ) ) + { + iter++; + } + + if (iter != m_Players.end()) + { + g_pFontManager->DestroyPolyString((*iter)->pName); + debug_delete(*iter); + m_Players.erase(iter); + UpdateNamePositions(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRadar::SetPlayerDead +// +// PURPOSE: Mark a player's name as dead... +// +// ----------------------------------------------------------------------- // + +void CHUDRadar::SetPlayerDead(HOBJECT hObj, bool bDead) +{ + if (!hObj) return; + + if (bDead) + ChangeRadarType(hObj, RADAR_PLAYER_DEAD_TYPE ); + else + ChangeRadarType(hObj, RADAR_PLAYER_ALIVE_TYPE ); + + + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && (*iter)->hObj != hObj ) + { + iter++; + } + + if (iter != m_Players.end()) + { + CUIFormattedPolyString* pStr = (*iter)->pName; + (*iter)->bDead = bDead; + if (bDead) + pStr->SetColor(nDeadColor); + else + pStr->SetColor(nLiveColor); + } +} + +void CHUDRadar::UpdatePlayerName( uint32 nId, const char*pName, uint8 nTeamID ) +{ + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && (*iter)->nID != nId ) + { + iter++; + } + + if (iter != m_Players.end()) + { + CUIFormattedPolyString* pStr = (*iter)->pName; + pStr->SetText(pName); + + + } + UpdateNamePositions(); +} + +void CHUDRadar::SetPlayerTalk( uint32 nId ) +{ + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && (*iter)->nID != nId ) + { + iter++; + } + + if (iter != m_Players.end()) + { + (*iter)->fFlashTime = fTotalFlashTime; + } +} + + + +void CHUDRadar::UpdatePlayerID(HOBJECT hObj, uint32 nId) +{ + if (!hObj) return; + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end() && (*iter)->hObj != hObj ) + { + iter++; + } + + if (iter != m_Players.end()) + { + (*iter)->nID = nId; + + if (pCI) + { + (*iter)->pName->SetText(pCI->sName.c_str()); + UpdateNamePositions(); + } + } +} + + +void CHUDRadar::UpdateNamePositions() +{ + + float fx = (float)(m_NamePos.x) * g_pInterfaceResMgr->GetXRatio(); + float fy = (float)(m_NamePos.y) * g_pInterfaceResMgr->GetYRatio(); + + if( IsTeamGameType() ) + { + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO *pLocalCI = pCIMgr->GetLocalClient(); + uint8 nTeam = 0; + if( pLocalCI) + { + nTeam = pLocalCI->nTeamID; + } + + g_pDrawPrim->SetRGBA4( &teamPoly, nTeamColors[nTeam][1], nTeamColors[nTeam][0], nTeamColors[nTeam][1], nTeamColors[nTeam][2] ); + + float fw = 90.0f * g_pInterfaceResMgr->GetXRatio(); + float fh = 90.0f * g_pInterfaceResMgr->GetYRatio(); + + g_pDrawPrim->SetXYWH( &teamPoly, fx-fw, fy, fw, fh); + + } + + + RadarPlayerList::iterator iter = m_Players.begin(); + while (iter != m_Players.end()) + { + CUIFormattedPolyString* pStr = (*iter)->pName; + + if (pStr->GetLength()) + { + uint8 nSize = (uint8)(12.0f * g_pInterfaceResMgr->GetXRatio()); + pStr->SetCharScreenHeight(nSize); + + pStr->SetPosition(fx,fy); + fy += (float)pStr->GetHeight(); + + } + iter++; + } +} + + +void CHUDRadar::Reset() +{ + + m_ROSortList.clear(); + + RadarObjectList::iterator iter; + for( iter = m_mapRadarObjects.begin(); iter != m_mapRadarObjects.end(); ++iter ) + { + debug_delete( iter->second ); + } + m_mapRadarObjects.clear(); + + for (uint16 i = 0; i < m_Players.size(); i++) + { + g_pFontManager->DestroyPolyString(m_Players[i]->pName); + debug_delete(m_Players[i]); + } + m_Players.clear(); +} + +void RADAR_PLAYER_OBJ::Render() +{ + if (fFlashTime > 0.0f) + { + fFlashTime -= g_pLTClient->GetFrameTime(); + if (fFlashTime < 0.0f) + { + bFlashOn = false; + } + else + { + fCurFlashTime -= g_pLTClient->GetFrameTime(); + if (fCurFlashTime <= 0.0f) + { + bFlashOn = !bFlashOn; + fCurFlashTime = Min(fFlashSpeed,fFlashTime); + } + } + + if (bFlashOn) + { + g_pRadar->ChangeRadarType(hObj, RADAR_PLAYER_TALK_TYPE ); + pName->SetColor(argbWhite); + } + else + { + if (bDead) + { + g_pRadar->ChangeRadarType(hObj, RADAR_PLAYER_DEAD_TYPE ); + pName->SetColor(nDeadColor); + } + else + { + g_pRadar->ChangeRadarType(hObj, RADAR_PLAYER_ALIVE_TYPE ); + pName->SetColor(nLiveColor); + } + } + + } + + + pName->Render(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDRadar.h b/Jack/ClientShellDLL/HUDRadar.h new file mode 100644 index 00000000..5e953d49 --- /dev/null +++ b/Jack/ClientShellDLL/HUDRadar.h @@ -0,0 +1,132 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRadar.h +// +// PURPOSE : HUDItem to display radar +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_RADAR_H__ +#define __HUD_RADAR_H__ + + +// +// Includes... +// + + #include "HUDItem.h" + #include "ltguimgr.h" + +struct RADAR_PLAYER_OBJ +{ + RADAR_PLAYER_OBJ() + { + nID = -1; + hObj = NULL; + pName = NULL; + bDead = false; + fFlashTime = 0.0f; + fCurFlashTime = 0.0f; + bFlashOn = false; + } + + void Render(); + + uint32 nID; + HOBJECT hObj; + CUIFormattedPolyString* pName; + bool bDead; + float fFlashTime; + float fCurFlashTime; + bool bFlashOn; + +}; + +struct RADAROBJECT +{ + RADAROBJECT() + { + m_bDraw = false; + m_hTex = LTNULL; + m_nDrawOrder = 0; + memset( &m_Poly, 0, sizeof( m_Poly )); + } + + bool m_bDraw; + LTPoly_GT4 m_Poly; + HTEXTURE m_hTex; + int m_nDrawOrder; + uint8 m_nVisibleTeamId; +}; + + + +class CHUDRadar : public CHUDItem +{ + public: // Methods... + + CHUDRadar(); + ~CHUDRadar(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + + void Toggle() { m_bDraw = !m_bDraw; } + void SetDraw( bool bDraw ) { m_bDraw = bDraw; } + bool GetDraw( ) { return m_bDraw; } + + void AddObject( HOBJECT hObj, uint8 nRadarType, uint8 nVisibleTeamId ); + void AddObject( HOBJECT hObj, const char *pRadarType, uint8 nVisibleTeamId ); + void RemoveObject( HOBJECT hObj ); + + void ChangeRadarType( HOBJECT hObj, const char *pRadarType ); + + void AddPlayer( HOBJECT hObj, uint32 nId); + void RemovePlayer( HOBJECT hObj); + void SetPlayerDead(HOBJECT hObj, bool bDead); + void SetPlayerTalk(uint32 nId); + void UpdatePlayerName( uint32 nId, const char*pName, uint8 nTeamID ); + void UpdatePlayerID( HOBJECT hObj, uint32 nId); + + void Reset(); + + + private: // Members... + + void UpdateNamePositions(); + + typedef std::map RadarObjectList; + RadarObjectList m_mapRadarObjects; + + //jrg- 9/7/02 - added as a quick and dirty solution to radar clutter + // for a cleaner solution maybe these lists could be consolidated + typedef std::list RadarObjectSortList; + RadarObjectSortList m_ROSortList; + + LTIntPt m_BasePos; + LTIntPt m_NamePos; + uint16 m_nBaseSize; + uint16 m_nObjectSize; + + bool m_bDraw; + uint32 m_nMaxShowDist; + float m_fLastRotation; + + //the ratio values that we have calculated the names for. If these change, + //we need to recalculate the name positions + float m_fNameXRatio; + float m_fNameYRatio; + + typedef std::vector RadarPlayerList; + RadarPlayerList m_Players; + +}; + +#endif // __HUD_RADAR_H__ diff --git a/Jack/ClientShellDLL/HUDRadio.cpp b/Jack/ClientShellDLL/HUDRadio.cpp new file mode 100644 index 00000000..e98f6124 --- /dev/null +++ b/Jack/ClientShellDLL/HUDRadio.cpp @@ -0,0 +1,271 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRadio.cpp +// +// PURPOSE : Implementation of CHUDRadio to display messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDRadio.h" +#include "InterfaceMgr.h" +#include "ClientRes.h" +#include "ClientMultiplayerMgr.h" +#include "GameClientShell.h" + +static int g_CoopRadioArray[] = +{ + IDS_DIALOGUE_33575, + IDS_DIALOGUE_33579, + IDS_DIALOGUE_33582, + IDS_DIALOGUE_33584, + IDS_DIALOGUE_33590, + IDS_DIALOGUE_33596 +}; + +static int g_TDMRadioArray[] = +{ + IDS_DIALOGUE_33579, + IDS_DIALOGUE_33582, + IDS_DIALOGUE_33584, + IDS_DIALOGUE_33588, + IDS_DIALOGUE_33593, + IDS_DIALOGUE_33596 +}; + +static int g_DDRadioArray[] = +{ + IDS_DIALOGUE_10356, + IDS_DIALOGUE_10357, + IDS_DIALOGUE_10358, + IDS_DIALOGUE_10359, + IDS_DIALOGUE_10360, + IDS_DIALOGUE_10361, +}; + +static int g_DERadioArray[] = +{ + IDS_DIALOGUE_10338, + IDS_DIALOGUE_10339, + IDS_DIALOGUE_10340, + IDS_DIALOGUE_10337, + IDS_DIALOGUE_10341, + IDS_DIALOGUE_10342, +}; + +static GameType eGameType = eGameTypeSingle; + + + +CHUDRadio::CHUDRadio() +{ + m_eLevel = kHUDRenderDead; + m_UpdateFlags = kHUDNone; + m_bVisible = false; + + for (int i = 0; i < MAX_RADIO_CHOICES; i++) + { + m_pText[i] = LTNULL; + } + m_nNumChoices = 0; +} + + +LTBOOL CHUDRadio::Init() +{ + m_nNumChoices = ARRAY_LEN(g_CoopRadioArray); + if (m_nNumChoices > MAX_RADIO_CHOICES) + m_nNumChoices = MAX_RADIO_CHOICES; + + UpdateLayout(); + + return LTTRUE; + +} +void CHUDRadio::Term() +{ + m_Dlg.Destroy(); +} + +void CHUDRadio::Render() +{ + if (!m_bVisible) return; + m_Dlg.Render(); +} + +void CHUDRadio::Update() +{ + // Sanity checks... + if (!IsVisible()) return; + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + SetScale(g_pInterfaceResMgr->GetXRatio()); + +} + + +void CHUDRadio::Show(bool bShow) +{ + m_bVisible = bShow; + + Update(); + + if (eGameType != g_pGameClientShell->GetGameType()) + { + eGameType = g_pGameClientShell->GetGameType(); + + for (int i = 0; i < m_nNumChoices; i++) + { + if (m_pText[i]) + { + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeTeamDeathmatch: + m_pText[i]->GetColumn(1)->SetString(LoadTempString(g_TDMRadioArray[i])); + break; + case eGameTypeDoomsDay: + m_pText[i]->GetColumn(1)->SetString(LoadTempString(g_DDRadioArray[i])); + break; + case eGameTypeDemolition: + m_pText[i]->GetColumn(1)->SetString(LoadTempString(g_DERadioArray[i])); + break; + default: + m_pText[i]->GetColumn(1)->SetString(LoadTempString(g_CoopRadioArray[i])); + break; + } + + } + } + + } + +} + +void CHUDRadio::Choose(uint8 nChoice) +{ + + if (nChoice > m_nNumChoices) + return; + + m_bVisible = false; + + uint32 nLocalID; + g_pLTClient->GetLocalClientID(&nLocalID); + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeTeamDeathmatch: + g_pClientMultiplayerMgr->DoTaunt(nLocalID,g_TDMRadioArray[nChoice]); + break; + case eGameTypeDoomsDay: + g_pClientMultiplayerMgr->DoTaunt(nLocalID,g_DDRadioArray[nChoice]); + break; + case eGameTypeDemolition: + g_pClientMultiplayerMgr->DoTaunt(nLocalID,g_DERadioArray[nChoice]); + break; + default: + g_pClientMultiplayerMgr->DoTaunt(nLocalID,g_CoopRadioArray[nChoice]); + break; + } + + +} + +void CHUDRadio::SetScale(float fScale) +{ + m_Dlg.SetScale(fScale); + m_fScale = fScale; +} + +void CHUDRadio::UpdateLayout() +{ + + char *pTag = "RadioWindow"; + + LTIntPt offset; + uint16 nTextWidth, nHeaderWidth; + uint32 color = argbWhite; + char szFrame[128] = "interface\\menu\\sprtex\\frame.dtx"; + + if (g_pLayoutMgr->Exist(pTag)) + { + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"Pos"); + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + m_pFont = g_pInterfaceResMgr->GetFont(nFont); + m_nFontSize = m_nBaseFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + nHeaderWidth = 2 * m_nFontSize; + + m_nWidth = (uint16)g_pLayoutMgr->GetInt(pTag,"Width"); + + m_Offset = g_pLayoutMgr->GetPoint(pTag,"TextOffset"); + offset = m_Offset; + nTextWidth = (m_nWidth - 2 * offset.x) - nHeaderWidth; + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + color = SET_ARGB(0xFF,nR,nG,nB); + + g_pLayoutMgr->GetString(pTag,"Frame",szFrame,sizeof(szFrame)); + } + else + { + m_BasePos = LTIntPt(220,100); + uint8 nFont = 0; + m_pFont = g_pInterfaceResMgr->GetFont(nFont); + m_nFontSize = m_nBaseFontSize = 12; + + nHeaderWidth = 2 * m_nFontSize; + + m_nWidth = 200; + + m_Offset = LTIntPt(8,8); + offset = m_Offset; + nTextWidth = (m_nWidth - 2 * offset.x) - nHeaderWidth; + + } + + m_Dlg.Create(g_pInterfaceResMgr->GetTexture(szFrame),m_nWidth,m_nWidth); + m_Dlg.Show(LTTRUE); + m_Dlg.SetScale(1.0f); + + for (int i = 0; i < m_nNumChoices; i++) + { + if (m_pText[i]) + { + m_Dlg.SetControlOffset(m_pText[i],offset); + m_pText[i]->SetFont(m_pFont,m_nFontSize); + } + else + { + char szTmp[4]; + sprintf(szTmp,"%d.",i+1); + m_pText[i] = debug_new(CLTGUIColumnCtrl); + m_pText[i]->Create(LTNULL,LTNULL,m_pFont,m_nFontSize,LTNULL); + m_pText[i]->AddColumn(szTmp,nHeaderWidth); + m_pText[i]->AddColumn("x",nTextWidth); + + m_Dlg.AddControl(m_pText[i],offset); + } + + m_pText[i]->Show(LTTRUE); + m_Dlg.SetControlOffset(m_pText[i],offset); + offset.y += m_pText[i]->GetBaseHeight() + 4; + + m_pText[i]->SetColors(color,color,color); +// m_pText[i]->SetFixedWidth(nTextWidth); + + + } + + m_Dlg.SetBasePos(m_BasePos); + + m_Dlg.SetSize(m_nWidth,(offset.y+m_Offset.y)); + + m_Dlg.SetScale(g_pInterfaceResMgr->GetXRatio()); +} + + diff --git a/Jack/ClientShellDLL/HUDRadio.h b/Jack/ClientShellDLL/HUDRadio.h new file mode 100644 index 00000000..7c8595ea --- /dev/null +++ b/Jack/ClientShellDLL/HUDRadio.h @@ -0,0 +1,65 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRadio.h +// +// PURPOSE : Definition of CHUDRadio to display transmission messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_RADIO_H +#define __HUD_RADIO_H + +#include "HUDItem.h" +#include "ClientServerShared.h" + +#define MAX_RADIO_CHOICES 6 +//****************************************************************************************** +//** HUD Radio dialog +//****************************************************************************************** +class CHUDRadio : public CHUDItem +{ +public: + CHUDRadio(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + //hide or show + void Show(bool bShow); + + void SetScale(float fScale); + + bool IsVisible() {return m_bVisible;} + + void Choose(uint8 nChoice); + +protected: + uint8 m_nNumChoices; + + LTIntPt m_BasePos; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + uint32 m_nTextColor; + float m_fScale; + bool m_bVisible; + uint16 m_nWidth; + LTIntPt m_Offset; + + CLTGUIWindow m_Dlg; + CLTGUIColumnCtrl* m_pText[MAX_RADIO_CHOICES]; + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDRespawn.cpp b/Jack/ClientShellDLL/HUDRespawn.cpp new file mode 100644 index 00000000..5b9eec33 --- /dev/null +++ b/Jack/ClientShellDLL/HUDRespawn.cpp @@ -0,0 +1,268 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRespawn.cpp +// +// PURPOSE : HUDItem to display hiding icon +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "HUDRespawn.h" +#include "TO2PlayerStats.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" + + +extern VarTrack g_vtMultiplayerRespawnWaitTime; +extern VarTrack g_vtDoomsdayRespawnWaitTime; + +static char s_aTagName[30] = "HUDRespawn"; +static const int kMaxValue = 200; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRespawnBar::CHUDRespawnBar +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CHUDRespawnBar::CHUDRespawnBar() +: CHUDMeter () +{ + m_UpdateFlags = kHUDNone; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRespawnBar::Update +// +// PURPOSE: Update the values to display the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDRespawnBar::Update() +{ + m_MeterBasePos.x = 320 - (uint16)((float)m_dwMaxValue * m_fMeterScale/2.0f); + + CHUDMeter::Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHUDRespawnBar::UpdateLayout +// +// PURPOSE: Get the values for displaying the bar... +// +// ----------------------------------------------------------------------- // + +void CHUDRespawnBar::UpdateLayout() +{ + + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_MeterBasePos.y = g_pLayoutMgr->GetInt(s_aTagName,"BarPosY"); + m_nMeterHeight = g_pLayoutMgr->GetInt(s_aTagName,"BarHeight"); + m_fMeterScale = g_pLayoutMgr->GetFloat(s_aTagName,"BarScale"); + + g_pLayoutMgr->GetString(s_aTagName,"BarTexture", m_szMeterTex, ARRAY_LEN( m_szMeterTex )); + + +} + + +//****************************************************************************************** +//** +//** HUD Respawn display +//** +//****************************************************************************************** + +CHUDRespawn::CHUDRespawn() +{ + m_UpdateFlags = kHUDRespawn; + m_eLevel = kHUDRenderText; + m_bDraw = LTFALSE; + m_fDuration = 0.0f; + m_pString = NULL; + m_bReady = false; + m_bCancelRevive = false; +} + + +LTBOOL CHUDRespawn::Init() +{ + uint8 nFont = g_pLayoutMgr->GetHUDFont(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + m_StrPos = LTIntPt(320,320); + m_nStrSz = 12; + m_StrColor = argbWhite; + m_StrDisColor = 0x80808080; + + m_pString = g_pFontManager->CreateFormattedPolyString(pFont,LoadTempString(IDS_RESPAWN),0.0f,0.0f); + m_pString->SetColor(m_StrColor); + m_pString->SetAlignmentH(CUI_HALIGN_CENTER); + + UpdateLayout(); + + // Init our bar... + + m_RespawnBar.Init(); + m_RespawnBar.SetMaxValue( kMaxValue ); + + return LTTRUE; +} + +void CHUDRespawn::Term() +{ + if (m_pString) + { + g_pFontManager->DestroyPolyString(m_pString); + m_pString=LTNULL; + } +} + +void CHUDRespawn::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + uint8 nVal = kMaxValue; + float fTimeLeft = g_pPlayerMgr->GetRespawnTime() - g_pLTClient->GetTime(); + if( fTimeLeft > 0.0f) + { + nVal = uint8( (1.0f - (fTimeLeft / m_fDuration)) * kMaxValue ); + + // If this game allows the player to be revived, check if they cancelled their + // revive. If they did, then change to disabled respawn. + if( IsRevivePlayerGameType( )) + { + if( !m_bCancelRevive ) + { + if( g_pPlayerMgr->GetCancelRevive( )) + { + m_bCancelRevive = true; + m_pString->SetText( LoadTempString( IDS_RESPAWN )); + m_pString->SetColor(m_StrDisColor); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + } + } + } + else + { + if (!m_bReady) + { + m_bReady = true; + m_pString->SetText( LoadTempString( IDS_RESPAWN )); + m_pString->SetColor(m_StrColor); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + } + } + + + m_pString->Render(); + + + m_RespawnBar.SetValue( nVal ); + m_RespawnBar.Update(); + m_RespawnBar.Render(); + +} + +void CHUDRespawn::Update() +{ + m_bDraw = IsMultiplayerGame() && g_pPlayerMgr->IsPlayerDead(); + if (!m_bDraw) + { + m_fDuration = -1.0f; + return; + } + + float x = (float)m_StrPos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_StrPos.y * g_pInterfaceResMgr->GetYRatio(); + uint8 nTextSize = (uint8)((float)m_nStrSz * g_pInterfaceResMgr->GetYRatio()); + m_pString->SetCharScreenHeight(nTextSize); + + m_pString->SetPosition(x,y); + + if (m_fDuration < 0.0f) + { + m_bReady = false; + m_bCancelRevive = false; + if (IsCoopMultiplayerGameType( )) + { + m_fDuration = g_vtMultiplayerRespawnWaitTime.GetFloat(); + } + else + { + m_fDuration = g_vtDoomsdayRespawnWaitTime.GetFloat(); + } + + // If the player can be revived, then allow them to cancel revive. + if( IsRevivePlayerGameType( )) + { + m_pString->SetText( LoadTempString( IDS_CANCELREVIVE )); + m_pString->SetColor(m_StrColor); + } + else + { + m_pString->SetText( LoadTempString( IDS_RESPAWN )); + m_pString->SetColor(m_StrDisColor); + } + + m_RespawnBar.SetValue(0); + } + m_RespawnBar.Update(); +} + +void CHUDRespawn::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + int pos = g_pLayoutMgr->GetInt(s_aTagName,"TextPosY"); + if (pos > 0) + m_StrPos.y = pos; + + uint8 nTmp = (uint8)g_pLayoutMgr->GetInt(s_aTagName,"TextSize"); + if (nTmp > 0) + m_nStrSz = nTmp; + + + { //set string color + float fAlpha = g_pLayoutMgr->GetFloat(s_aTagName, "TextAlpha"); + uint8 nA = (uint8)(255.0f * fAlpha); + + LTVector vColor = g_pLayoutMgr->GetVector(s_aTagName, "TextColor"); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + uint32 color = SET_ARGB(nA,nR,nG,nB); + if (color > 0) + m_StrColor = color; + } + + { //set string disabled color + float fAlpha = g_pLayoutMgr->GetFloat(s_aTagName, "TextDisAlpha"); + uint8 nA = (uint8)(255.0f * fAlpha); + + LTVector vColor = g_pLayoutMgr->GetVector(s_aTagName, "TextDisColor"); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + uint32 color = SET_ARGB(nA,nR,nG,nB); + if (color > 0) + m_StrDisColor = color; + } + + m_RespawnBar.UpdateLayout(); +} + diff --git a/Jack/ClientShellDLL/HUDRespawn.h b/Jack/ClientShellDLL/HUDRespawn.h new file mode 100644 index 00000000..59927d37 --- /dev/null +++ b/Jack/ClientShellDLL/HUDRespawn.h @@ -0,0 +1,64 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDRespawn.h +// +// PURPOSE : HUDItem to display hiding icon +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_RESPAWN_H +#define __HUD_RESPAWN_H + +#include "HUDMeter.h" + +class CHUDRespawnBar : public CHUDMeter +{ + public: // Methods... + + CHUDRespawnBar(); + + void Update(); + void UpdateLayout(); +}; + + +//****************************************************************************************** +//** HUD Respawn display +//****************************************************************************************** +class CHUDRespawn : public CHUDItem +{ +public: + CHUDRespawn(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + + + LTIntPt m_StrPos; + uint8 m_nStrSz; + uint32 m_StrColor; + uint32 m_StrDisColor; + + + LTFLOAT m_bDraw; + + CUIFormattedPolyString* m_pString; + + + float m_fDuration; + bool m_bReady; + bool m_bCancelRevive; + + CHUDRespawnBar m_RespawnBar; +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDScores.cpp b/Jack/ClientShellDLL/HUDScores.cpp new file mode 100644 index 00000000..393144ce --- /dev/null +++ b/Jack/ClientShellDLL/HUDScores.cpp @@ -0,0 +1,420 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDScores.cpp +// +// PURPOSE : Implementation of CHUDScores to display player scores +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDScores.h" +#include "InterfaceMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ResShared.h" + +CHUDScores::CHUDScores() +{ + m_UpdateFlags = kHUDScores; + m_eLevel = kHUDRenderText; + + m_fScale = 0.0f; + m_nDraw = 0; + m_bScreen = false; + +} + + +LTBOOL CHUDScores::Init() +{ + m_bControlsInited = false; + UpdateLayout(); + + return LTTRUE; + +} + +void CHUDScores::Term() +{ + if (m_bControlsInited) + { + m_SingleFrame.Destroy(); + m_Server.Destroy(); + for (int team = 0; team < kNumTeams; team++) + { + m_Frame[team].Destroy(); + m_Team[team].Destroy(); + m_Rounds[team].Destroy(); + m_Header[team].Destroy(); + for (int i = 0; i < kMaxPlayers; i++) + m_Columns[team][i].Destroy(); + } + } + +} + +void CHUDScores::Show(bool bDraw, bool bScreen) +{ + if (!m_nDraw && bDraw && bScreen && !m_bScreen) + m_bFirstScreenUpdate = bScreen; + if (bDraw) + m_nDraw++; + else if (m_nDraw > 0) + m_nDraw--; + + if (bDraw) + { + + if (strlen(g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName)) + { + std::string str = g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName; + if ( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + str += " : "; + str += g_pClientMultiplayerMgr->GetStartGameRequest( ).m_TCPAddress; + } + m_Server.SetString(str.c_str()); + } + else + { + m_Server.SetString(""); + } + + } + + m_bScreen = bScreen && bDraw; + Update(); +} + +void CHUDScores::Render() +{ + g_pChatMsgs->CanDraw( true ); + + if (m_nDraw <= 0) return; + + g_pChatMsgs->CanDraw( false ); + + if (m_bControlsInited) + { + if (!m_bScreen && !IsTeamGameType()) + m_SingleFrame.Render(); + + for (int team = 0; team < kNumTeams; team++) + { + if (IsTeamGameType()) + { + m_Frame[team].Render(); + m_Team[team].Render(); + m_Rounds[team].Render(); + } + m_Header[team].Render(); + for (int i = 0; i < kMaxPlayers; i++) + m_Columns[team][i].Render(); + } + m_Server.Render(); + + } + + +} + +void CHUDScores::Update() +{ + if (m_nDraw <= 0) return; + + uint32 textCol = (m_bScreen ? m_nScreenTextColor : m_nTextColor); + uint32 playerTextCol = (m_bScreen ? m_nScreenPlayerTextColor : m_nPlayerTextColor); + + float fScale = g_pInterfaceResMgr->GetXRatio(); + if (fScale != m_fScale) + { + m_fScale = fScale; + m_Server.SetScale(fScale); + m_SingleFrame.SetScale(fScale); + for (int team = 0; team < kNumTeams; team++) + { + m_Team[team].SetScale(fScale); + m_Rounds[team].SetScale(fScale); + m_Header[team].SetScale(fScale); + m_Frame[team].SetScale(fScale); + + for (int i = 0; i < kMaxPlayers; i++) + { + m_Columns[team][i].SetScale(fScale); + } + } + + } + + //for the screen mode scoreboard, don't update the text once we've drawn it + if (m_bScreen && !m_bFirstScreenUpdate) + return; + + m_bFirstScreenUpdate = false; + + if (IsTeamGameType()) + { + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + for( uint8 team = 0; team < kNumTeams; ++team ) + { + CTeam* pTeam = CTeamMgr::Instance().GetTeam(team); + if (!pTeam) continue; + + char szTmp[128]; + sprintf(szTmp,"%s : %d",pTeam->GetName(),pTeam->GetScore()); + m_Team[team].SetString(szTmp); + + sprintf(szTmp,"%s : %d", LoadTempString(IDS_ROUNDS), pTeam->GetRoundScore( )); + m_Rounds[team].SetString(szTmp); + + m_Header[team].Show(LTTRUE); + } + + } + else + { + m_Team[0].SetString(""); + m_Rounds[0].SetString(""); + m_Header[1].Show(LTFALSE); + } + + + m_Server.SetColors(textCol,textCol,textCol); + + CClientInfoMgr *pCIMgr = g_pGameClientShell->GetInterfaceMgr( )->GetClientInfoMgr(); + if (!pCIMgr) return; + + CLIENT_INFO* pCI = pCIMgr->GetFirstClient(); + int nTotal = 0; + int count[kNumTeams] = {0,0}; + char szTmp[64] = ""; + uint16 nHeight[kNumTeams]; + nHeight[0] = m_Server.GetBaseHeight() + m_Header[0].GetBaseHeight() + m_Team[0].GetBaseHeight() + 24; + nHeight[1] = m_Team[1].GetBaseHeight() + m_Header[1].GetBaseHeight() + 16; + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + + while (pCI && (nTotal < kMaxPlayers)) + { + uint8 nTeam = 0; + + if (IsTeamGameType()) + { + nTeam = pCI->nTeamID; + } + + + int ndx = count[nTeam]; + + + + if (nTeam < kNumTeams) + { + sprintf( szTmp, "%s%s",pCI->sName.c_str( ), pCI->bIsAdmin ? "[*]" : "" ); + m_Columns[nTeam][ndx].GetPolyString(0)->SetText( szTmp ); + sprintf(szTmp,"%d",pCI->sScore.GetScore()); + m_Columns[nTeam][ndx].GetPolyString(1)->SetText(szTmp); + + sprintf(szTmp,"%d",pCI->sScore.GetFrags()); + m_Columns[nTeam][ndx].GetPolyString(2)->SetText(szTmp); + + sprintf(szTmp,"%d",pCI->nPing); + m_Columns[nTeam][ndx].GetPolyString(3)->SetText(szTmp); + + if (nLocalID == pCI->nID) + { + m_Columns[nTeam][ndx].SetColors(playerTextCol,playerTextCol,playerTextCol); + } + else + { + m_Columns[nTeam][ndx].SetColors(textCol,textCol,textCol); + } + + m_Columns[nTeam][ndx].Show(LTTRUE); + + nHeight[nTeam] += m_Columns[nTeam][ndx].GetBaseHeight(); + } + + pCI = pCI->pNext; + ++count[nTeam]; + } + + + + for (int team = 0; team < kNumTeams; team++) + { + + m_Team[team].SetColors(textCol,textCol,textCol); + m_Rounds[team].SetColors(textCol,textCol,textCol); + m_Header[team].SetColors(textCol,textCol,textCol); + + nHeight[team] += 16; + m_Frame[team].SetSize(m_nFrameWidth,nHeight[team]); + + while (count[team] < kMaxPlayers) + { + m_Columns[team][count[team]].Show(LTFALSE); + ++count[team]; + } + + LTIntPt pos = m_BasePos; + if (IsTeamGameType() && team > 0) + { + pos.y += nHeight[team-1] + 8; + UpdateTeamPos(team,pos); + } + + } + m_SingleFrame.SetSize(m_nFrameWidth,nHeight[0]+8); + + + +} + + +void CHUDScores::UpdateLayout() +{ + char *pTag = "Scores"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + m_nBaseFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_nTextColor = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"PlayerTextColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nPlayerTextColor = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"ScreenPlayerTextColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nScreenPlayerTextColor = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"ScreenTextColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + m_nScreenTextColor = SET_ARGB(0xFF,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"FrameColor"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + float fAlpha = g_pLayoutMgr->GetFloat(pTag,"FrameAlpha"); + uint8 nA = (uint8)(255.0f * fAlpha); + uint32 nFrameColor = SET_ARGB(nA,nR,nG,nB); + + uint32 nTeamColors[kNumTeams] = {argbBlack,argbBlack}; + vCol = g_pLayoutMgr->GetVector(pTag,"Team1Color"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + nTeamColors[0]= SET_ARGB(nA,nR,nG,nB); + + vCol = g_pLayoutMgr->GetVector(pTag,"Team2Color"); + nR = (uint8)vCol.x; + nG = (uint8)vCol.y; + nB = (uint8)vCol.z; + nTeamColors[1]= SET_ARGB(nA,nR,nG,nB); + + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + uint16 nCol1 = g_pLayoutMgr->GetInt(pTag,"NameColumn"); + uint16 nCol2 = g_pLayoutMgr->GetInt(pTag,"ScoreColumn"); + uint16 nCol3 = g_pLayoutMgr->GetInt(pTag,"KillColumn"); + uint16 nCol4 = g_pLayoutMgr->GetInt(pTag,"PingColumn"); + + m_nFrameWidth = (nCol1+nCol2+nCol3+nCol4) + 16; + + if (!m_bControlsInited) + { + m_SingleFrame.Create(nFrameColor,m_nFrameWidth,32); + for (int team = 0; team < kNumTeams; team++) + { + m_Frame[team].Create(nTeamColors[team],m_nFrameWidth,32); + + + m_Team[team].Create("",0,0,pFont,(m_nBaseFontSize+4),NULL); + m_Team[team].SetColors(m_nTextColor,m_nTextColor,m_nTextColor); + + m_Rounds[team].Create("",0,0,pFont,(m_nBaseFontSize+4),NULL); + m_Rounds[team].SetColors(m_nTextColor,m_nTextColor,m_nTextColor); + m_Rounds[team].GetString()->SetAlignmentH(CUI_HALIGN_RIGHT); + + m_Header[team].Create ( 0,0, pFont, (m_nBaseFontSize+4), NULL); + + m_Header[team].SetColors(m_nTextColor,m_nTextColor,m_nTextColor); + m_Header[team].AddColumn(LoadTempString(IDS_SCORE_PLAYERS), (nCol1-8), LTFALSE); + m_Header[team].AddColumn(LoadTempString(IDS_SCORE_SCORE), nCol2, LTFALSE); + m_Header[team].AddColumn(LoadTempString(IDS_SCORE_KILLS), nCol3, LTFALSE); + m_Header[team].AddColumn(LoadTempString(IDS_SCORE_PING), nCol4, LTFALSE); + + for (int i = 0; i < kMaxPlayers; i++) + { + m_Columns[team][i].Create ( 0,0, pFont, m_nBaseFontSize, NULL); + m_Columns[team][i].SetColors(m_nTextColor,m_nTextColor,m_nTextColor); + m_Columns[team][i].AddColumn("", nCol1, LTTRUE); + m_Columns[team][i].AddColumn("", nCol2, LTTRUE); + m_Columns[team][i].AddColumn("", nCol3, LTTRUE); + m_Columns[team][i].AddColumn("", nCol4, LTTRUE); + m_Columns[team][i].Show(LTFALSE); + + } + } + + m_Server.Create("",0,0,pFont,(m_nBaseFontSize+4),NULL); + m_Server.SetColors(m_nTextColor,m_nTextColor,m_nTextColor); + + LTIntPt framePos = m_BasePos; + framePos.x -= 8; + framePos.y -= 4; + m_SingleFrame.SetBasePos(framePos); + UpdateTeamPos(0,m_BasePos); + + + m_bControlsInited = true; + } + +} + +void CHUDScores::UpdateTeamPos(uint8 nTeam, LTIntPt pos) +{ + LTIntPt framePos = pos; + framePos.x -= 8; + framePos.y -= 4; + m_Frame[nTeam].SetBasePos(framePos); + + if (nTeam == 0) + { + m_Server.SetBasePos(pos); + pos.y += m_nBaseFontSize + 16; + } + + m_Team[nTeam].SetBasePos(pos); + + LTIntPt roundPos = pos; + roundPos.x += m_nFrameWidth-24; + m_Rounds[nTeam].SetBasePos(roundPos); + + pos.y += m_nBaseFontSize; + + m_Header[nTeam].SetBasePos(pos); + pos.y += m_nBaseFontSize + 8; + + + for (int i = 0; i < kMaxPlayers; i++) + { + m_Columns[nTeam][i].SetBasePos(pos); + pos.y += m_nBaseFontSize; + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDScores.h b/Jack/ClientShellDLL/HUDScores.h new file mode 100644 index 00000000..3b395fc8 --- /dev/null +++ b/Jack/ClientShellDLL/HUDScores.h @@ -0,0 +1,72 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDScores.h +// +// PURPOSE : Definition of CHUDScores to display player scores +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_SCORES_H +#define __HUD_SCORES_H + +#include "HUDItem.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDScores : public CHUDItem +{ +public: + CHUDScores(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + virtual void Show(bool bDraw, bool bScreen = false); + + + enum Constants + { + kMaxPlayers = 16, + kNumTeams = 2, + }; + +protected: + + void UpdateTeamPos(uint8 nTeam, LTIntPt pos); + + CLTGUITextCtrl m_Server; + CLTGUITextCtrl m_Team[kNumTeams]; + CLTGUITextCtrl m_Rounds[kNumTeams]; + CLTGUIColumnCtrl m_Header[kNumTeams]; + CLTGUIColumnCtrl m_Columns[kNumTeams][kMaxPlayers]; + CLTGUIFrame m_Frame[kNumTeams]; + CLTGUIFrame m_SingleFrame; + + int m_nDraw; + bool m_bScreen; + bool m_bFirstScreenUpdate; + LTIntPt m_BasePos; + uint8 m_nBaseFontSize; + uint32 m_nTextColor; + uint32 m_nPlayerTextColor; + uint32 m_nScreenTextColor; + uint32 m_nScreenPlayerTextColor; + bool m_bControlsInited; + float m_fScale; + uint16 m_nFrameWidth; + + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDSubtitles.cpp b/Jack/ClientShellDLL/HUDSubtitles.cpp new file mode 100644 index 00000000..dd333ab8 --- /dev/null +++ b/Jack/ClientShellDLL/HUDSubtitles.cpp @@ -0,0 +1,387 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDSubtitles.cpp +// +// PURPOSE : Implementation of CHUDSubtitles to display subtitles +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDSubtitles.h" +#include "PlayerMgr.h" +#include "InterfaceMgr.h" +#include "VarTrack.h" + +VarTrack g_vtAdjustedRadius; + +void TestSubtitleFn(int argc, char **argv) +{ + + if (argc <= 0) return; + + int nID = atoi(argv[0]); + + LTVector vPos; + + vPos.Init(); + + g_pSubtitles->Show(nID,vPos); + +} + + +CHUDSubtitles::CHUDSubtitles() +{ + m_UpdateFlags = kHUDFrame; + m_eLevel = kHUDRenderText; + m_bVisible = LTFALSE; + m_fScale = 1.0f; + m_fElapsedTime = 0.0f; + + m_vSpeakerPos.Init(); + m_fRadius = 0.0; + m_fDuration = -1.0f; + m_bSubtitlePriority = false; +} + + +LTBOOL CHUDSubtitles::Init() +{ + g_pLTClient->RegisterConsoleProgram("TestSubtitle", TestSubtitleFn); + + + UpdateLayout(); + if (!m_pText) + return LTFALSE; + + return LTTRUE; + +} +void CHUDSubtitles::Term() +{ + if (m_pText) + { + g_pFontManager->DestroyPolyString(m_pText); + m_pText = LTNULL; + } + +} + +void CHUDSubtitles::Render() +{ + // Sanity checks... + if (!m_bVisible) return; + if (GetConsoleInt("Subtitles",0) == 0) return; + + // Only show subtitles if conversations in range... + LTVector vListenerPos; + bool bListenerInClient; + LTRotation rRot; + g_pLTClient->GetListener(&bListenerInClient, &vListenerPos, &rRot); + + bool bForceDraw = (bool)(m_vSpeakerPos == LTVector(0, 0, 0)); + bForceDraw = g_pPlayerMgr->IsUsingExternalCamera() ? LTTRUE : bForceDraw; + + LTVector vPos = m_vSpeakerPos - vListenerPos; + float fAdjustedRadius = m_fRadius * g_vtAdjustedRadius.GetFloat(); + + if (!bForceDraw && vPos.Mag() > fAdjustedRadius) + return; + + //render dropshadow + float x,y; + m_pText->GetPosition(&x,&y); + m_pText->SetPosition(x+2.0f,y+2.0f); + m_pText->SetColor(argbBlack); + + if (m_bOverflow) + m_pText->RenderClipped(&m_DisplayRect); + else + m_pText->Render(); + + //render normal + m_pText->SetPosition(x,y); + m_pText->SetColor(m_nTextColor); + + if (m_bOverflow) + m_pText->RenderClipped(&m_DisplayRect); + else + m_pText->Render(); + + +} + +void CHUDSubtitles::Update() +{ + // Sanity checks... + if (!m_bVisible) + return; + + if (GetConsoleInt("Subtitles",0) == 0) + return; + + + //update the amount of time that has elapsed + m_fElapsedTime += g_pLTClient->GetFrameTime(); + + if (m_fEndTime < m_fElapsedTime) + { + Clear(); + return; + } + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + SetScale(g_pInterfaceResMgr->GetXRatio()); + + + //scroll it + if (!m_bOverflow) + return; + + if (m_fScrollStartTime < m_fElapsedTime) + { + LTFLOAT fElapsedTime = m_fElapsedTime - m_fScrollStartTime; + m_fOffset = (fElapsedTime * m_fScrollSpeed); + if (m_fOffset > m_fMaxOffset) m_fOffset = m_fMaxOffset; + + + float textY = m_DisplayRect.y - m_fOffset; + m_pText->SetPosition(m_DisplayRect.x,textY); + + } + + +} + +LTBOOL CHUDSubtitles::Show(int nStringId, LTVector vSpeakerPos, LTFLOAT fRadius, LTFLOAT fDuration, bool bSubtitlePriority) +{ + + if (!g_vtAdjustedRadius.IsInitted()) + { + g_vtAdjustedRadius.Init(g_pLTClient, "SubtitleSoundRadiusPercent", LTNULL, 0.77f); + } + + //if it's too far away, don't play it... + LTVector vListenerPos; + bool bListenerInClient; + LTRotation rRot; + g_pLTClient->GetListener(&bListenerInClient, &vListenerPos, &rRot); + + bool bForceDraw = (bool)(vSpeakerPos == LTVector(0, 0, 0)); + bForceDraw = g_pPlayerMgr->IsUsingExternalCamera() ? LTTRUE : bForceDraw; + + LTVector vPos = vSpeakerPos - vListenerPos; + float fAdjustedRadius = fRadius * g_vtAdjustedRadius.GetFloat(); + float fDist = vPos.Mag(); + if (!bForceDraw && fDist > fAdjustedRadius) + { + return LTFALSE; + } + + //should we override what ever is already playing? + if (m_bVisible) + { + + //if the old one has priority, and the new doesn't, don't play the new + if (m_bSubtitlePriority && !bSubtitlePriority) + { + return LTFALSE; + } + + //if they have the same priority, check distances + if (m_bSubtitlePriority == bSubtitlePriority) + { + LTVector vOldPos = m_vSpeakerPos - vListenerPos; + float fOldDist = vOldPos.Mag(); + + + if (fOldDist < fDist) + { + return LTFALSE; + } + } + + } + + + ASSERT(m_pText); + const char *pStr = LoadTempString(nStringId); + + + if (!strlen(pStr)) + { + DebugCPrint(2,"CHUDSubtitles::Show(%d) : No Text",nStringId); + return LTFALSE; + } + + + + + m_pText->SetText(pStr); + + m_bVisible = LTTRUE; + m_bSubtitlePriority = bSubtitlePriority; + + m_vSpeakerPos = vSpeakerPos; + m_fRadius = fRadius; + m_fDuration = fDuration; + + if (m_fDuration < 0.0f) + m_fDuration = 0.04f * (float)m_pText->GetLength(); + + + SetScale(g_pInterfaceResMgr->GetXRatio()); + + LTIntPt pos = m_FullScreenPos; + uint16 width = m_nFullScreenWidth; + if (g_pPlayerMgr->IsUsingExternalCamera()) + { + pos = m_CinematicPos; + width = m_nCinematicWidth; + } + + m_DisplayRect.x = (float)pos.x * m_fScale; + m_DisplayRect.y = (float)pos.y * m_fScale; + m_DisplayRect.width = (float)width * m_fScale; + m_DisplayRect.height = 2.0f + (float)m_nMaxLines * (float)m_nFontSize; + + m_pText->SetWrapWidth((uint16)m_DisplayRect.width); + float textX = m_DisplayRect.x; + float textY = m_DisplayRect.y; + + float fw,fh; + m_pText->GetDims(&fw,&fh); + + uint8 numLines = (uint8)(fh / (float)m_nFontSize); +// g_pLTClient->CPrint("Lines: %d",numLines); +// g_pLTClient->CPrint("Duration: %0.2f",m_fDuration); + + if (numLines > m_nMaxLines) + { + m_bOverflow = LTTRUE; + LTFLOAT fTimePerLine = m_fDuration / ((LTFLOAT)numLines + 1.0f); + LTFLOAT fRemainingLines = (LTFLOAT)(numLines - m_nMaxLines); + LTFLOAT fDelay = (LTFLOAT)m_nMaxLines * fTimePerLine; + m_fScrollStartTime = fDelay; + + m_fScrollSpeed = (LTFLOAT)m_nFontSize / fTimePerLine; + m_fMaxOffset = (fh + 2.0f) - m_DisplayRect.height; + + } + else + { + m_bOverflow = LTFALSE; + + textX += (m_DisplayRect.width - fw) / 2.0f; + m_fOffset = (m_DisplayRect.height - fh); + textY += m_fOffset; + m_fScrollSpeed = 0.0f; + + } + + m_fEndTime = m_fDuration; + + //reset our time to the beginning + m_fElapsedTime = 0.0f; + + + m_pText->SetPosition(textX,textY); + + return LTTRUE; + +} + +void CHUDSubtitles::Clear() +{ + m_bVisible = LTFALSE; + if (m_pText) + m_pText->SetText(" "); + + //reset our elapsed time as well, just to be safe + m_fElapsedTime = 0.0f; + + m_bSubtitlePriority = false; + +} + + + +void CHUDSubtitles::SetScale(float fScale) +{ + m_fScale = fScale; + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + float x = (float)m_BasePos.x * m_fScale; + float y = (float)m_BasePos.y * m_fScale; + m_pText->SetCharScreenHeight(m_nFontSize); + m_pText->SetPosition(x,y); + + LTIntPt pos = m_FullScreenPos; + uint16 width = m_nFullScreenWidth; + if (g_pPlayerMgr->IsUsingExternalCamera()) + { + pos = m_CinematicPos; + width = m_nCinematicWidth; + } + + + m_DisplayRect.x = (float)pos.x * m_fScale; + m_DisplayRect.y = (float)pos.y * m_fScale; + m_DisplayRect.width = (float)width * m_fScale; + m_DisplayRect.height = (float)m_nMaxLines * (float)m_nFontSize; + + + if (!m_bOverflow) + { + float textX = m_DisplayRect.x; + float textY = m_DisplayRect.y; + + float fw,fh; + m_pText->GetDims(&fw,&fh); + + textX += (m_DisplayRect.width - fw) / 2.0f; + m_fOffset = (m_DisplayRect.height - fh); + textY += m_fOffset; + + } + + } + +} + +void CHUDSubtitles::UpdateLayout() +{ + + char *pTag = "Subtitle"; + + m_CinematicPos = g_pLayoutMgr->GetPoint(pTag,"Pos"); + m_nCinematicWidth = (uint16)g_pLayoutMgr->GetInt(pTag,"Width"); + m_FullScreenPos = g_pLayoutMgr->GetPoint(pTag,"FullScreenPos"); + m_nFullScreenWidth = (uint16)g_pLayoutMgr->GetInt(pTag,"FullScreenWidth"); + m_nMaxLines = (uint8)g_pLayoutMgr->GetInt(pTag,"NumLines"); + + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + m_pFont = g_pInterfaceResMgr->GetFont(nFont); + m_nFontSize = m_nBaseFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont," ",(float)m_BasePos.x,(float)m_BasePos.y); + if (!m_pText) + return; + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_nTextColor = SET_ARGB(0xFF,nR,nG,nB); + + m_pText->SetColor(m_nTextColor); + + +} + + + diff --git a/Jack/ClientShellDLL/HUDSubtitles.h b/Jack/ClientShellDLL/HUDSubtitles.h new file mode 100644 index 00000000..f7f57d1f --- /dev/null +++ b/Jack/ClientShellDLL/HUDSubtitles.h @@ -0,0 +1,81 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDSubtitles.h +// +// PURPOSE : Definition of CHUDSubtitles to display subtitles +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_SUBTITLES_H +#define __HUD_SUBTITLES_H + +#include "HUDItem.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDSubtitles : public CHUDItem +{ +public: + CHUDSubtitles(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + LTBOOL Show(int nStringId, LTVector vSpeakerPos, LTFLOAT fRadius=0.0f, LTFLOAT fDuration=-1.0f, bool bSubtitlePriority = false); + void Clear(); + + void SetScale(float fScale); + + LTBOOL IsVisible() {return m_bVisible;} + +protected: + + LTIntPt m_BasePos; + CUIFormattedPolyString* m_pText; + + CUIRECT m_DisplayRect; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + uint32 m_nTextColor; + float m_fScale; + float m_fElapsedTime; // The amount of time that has elapsed while this subtitle is displayed + LTBOOL m_bVisible; + + LTIntPt m_CinematicPos; + uint16 m_nCinematicWidth; + LTIntPt m_FullScreenPos; + uint16 m_nFullScreenWidth; + uint8 m_nMaxLines; + + LTVector m_vSpeakerPos; + bool m_bSubtitlePriority; + + int m_nCursorPos; + LTBOOL m_bOverflow; + LTFLOAT m_fRadius; + LTFLOAT m_fDuration; + + LTFLOAT m_fScrollStartTime; + LTFLOAT m_fScrollSpeed; + LTFLOAT m_fOffset; + LTFLOAT m_fMaxOffset; + + LTFLOAT m_fEndTime; + + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDTransmission.cpp b/Jack/ClientShellDLL/HUDTransmission.cpp new file mode 100644 index 00000000..f6dfaa25 --- /dev/null +++ b/Jack/ClientShellDLL/HUDTransmission.cpp @@ -0,0 +1,91 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDTransmission.cpp +// +// PURPOSE : Implementation of CHUDTransmission to display messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // +#include "stdafx.h" +#include "HUDMgr.h" +#include "HUDTransmission.h" +#include "InterfaceMgr.h" + +CHUDTransmission::CHUDTransmission() +{ + m_UpdateFlags = kHUDFrame; + m_eLevel = kHUDRenderText; +} + + +LTBOOL CHUDTransmission::Init() +{ + UpdateLayout(); + + MsgCreate fmt = m_MsgFormat; + fmt.sString = " "; + fmt.fDuration = 0.0f; + m_Msg.Create(fmt); + + return LTTRUE; + +} +void CHUDTransmission::Term() +{ + m_Msg.Destroy(); +} + +void CHUDTransmission::Render() +{ + if (!m_Msg.IsVisible()) return; + m_Msg.Render(); +} + +void CHUDTransmission::Update() +{ + if (!m_Msg.IsVisible()) return; + m_Msg.Update(); + +} + +void CHUDTransmission::Show(int nMessageID) +{ + Show(LoadTempString(nMessageID)); +} + +void CHUDTransmission::Show(const char *pszString) +{ + MsgCreate fmt = m_MsgFormat; + fmt.sString = pszString; + m_Msg.Create(fmt); + m_Msg.Show(LTTRUE); + + + LTIntPt pos = m_BasePos; + pos.y -= m_Msg.GetBaseHeight()/2; + + m_Msg.SetBasePos(pos); +} + +void CHUDTransmission::UpdateLayout() +{ + char *pTag = "Transmission"; + m_BasePos = g_pLayoutMgr->GetPoint(pTag,"BasePos"); + + uint8 nFont = (uint8)g_pLayoutMgr->GetInt(pTag,"Font"); + + m_MsgFormat.pFont = g_pInterfaceResMgr->GetFont(nFont); + m_MsgFormat.nFontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"FontSize"); + + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"TextColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + m_MsgFormat.nTextColor = SET_ARGB(0xFF,nR,nG,nB); + m_MsgFormat.fDuration = g_pLayoutMgr->GetFloat(pTag,"Time"); + m_MsgFormat.fFadeDur = g_pLayoutMgr->GetFloat(pTag,"FadeTime"); + m_MsgFormat.nWidth = (uint16) g_pLayoutMgr->GetInt(pTag,"Width"); + m_MsgFormat.eJustify = kMsgCenter; + +} diff --git a/Jack/ClientShellDLL/HUDTransmission.h b/Jack/ClientShellDLL/HUDTransmission.h new file mode 100644 index 00000000..a048db10 --- /dev/null +++ b/Jack/ClientShellDLL/HUDTransmission.h @@ -0,0 +1,50 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDTransmission.h +// +// PURPOSE : Definition of CHUDTransmission to display transmission messages +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_TRANSMISSION_H +#define __HUD_TRANSMISSION_H + +#include "HUDItem.h" +#include "HUDMessage.h" + +//****************************************************************************************** +//** HUD Message Queue +//****************************************************************************************** +class CHUDTransmission : public CHUDItem +{ +public: + CHUDTransmission(); + + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void Render(); + virtual void Update(); + + virtual void UpdateLayout(); + + virtual void Show(int nMessageId); + virtual void Show(const char *pszString); + + virtual void Hide() { m_Msg.Show( LTFALSE ); } + +protected: + CHUDMessage m_Msg; + + LTIntPt m_BasePos; + MsgCreate m_MsgFormat; + + +}; + + + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HUDWeaponHeat.cpp b/Jack/ClientShellDLL/HUDWeaponHeat.cpp new file mode 100644 index 00000000..0a5e0a9b --- /dev/null +++ b/Jack/ClientShellDLL/HUDWeaponHeat.cpp @@ -0,0 +1,115 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDWeaponHeat.cpp +// +// PURPOSE : HUDItem to display weapon heat meter +// +// (c) 2001-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HUDMgr.h" +#include "InterfaceMgr.h" +#include "ClientWeaponMgr.h" +#include "CMoveMgr.h" +#include "VehicleMgr.h" + +//****************************************************************************************** +//** +//** HUD Air display +//** +//****************************************************************************************** + +CHUDWeaponHeat::CHUDWeaponHeat() +{ + m_UpdateFlags = kHUDWeaponHeat | kHUDFrame; +} + + +LTBOOL CHUDWeaponHeat::Init() +{ + UpdateLayout(); + + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + char szTexture[256]; + g_pLayoutMgr->GetWeaponHeatBarTexture( nCurrentLayout, szTexture, ARRAY_LEN( szTexture )); + if( !szTexture[0] ) + return LTFALSE; + + m_Bar.Init(g_pInterfaceResMgr->GetTexture( szTexture )); + + return LTTRUE; +} + +void CHUDWeaponHeat::Term() +{ +} + +void CHUDWeaponHeat::Render() +{ + if (!m_bDraw) return; + + SetRenderState(); + + m_Bar.Render(); +} + +void CHUDWeaponHeat::Update() +{ + IClientWeaponBase const* pClientWeapon = NULL; + if( g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() && g_pMoveMgr->GetVehicleMgr()->HasVehicleWeapon()) + { + pClientWeapon = g_pMoveMgr->GetVehicleMgr()->GetVehicleWeapon(); + } + else + { + pClientWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetCurrentClientWeapon(); + } + if( !pClientWeapon ) + return; + + m_bDraw = ( pClientWeapon->GetWeapon( )->fHeatFactor > 0.0f ); + if (!m_bDraw) + return; + + float fPercent = pClientWeapon->GetWeaponHeat( ); + float x = (float)(m_BasePos.x) * g_pInterfaceResMgr->GetXRatio(); + float y = (float)(m_BasePos.y) * g_pInterfaceResMgr->GetYRatio(); + + float w = 100.0f * fPercent * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float maxW = 100.0f * m_fBarScale * g_pInterfaceResMgr->GetXRatio(); + float h = (float)m_nBarHeight * g_pInterfaceResMgr->GetYRatio(); + + if( fPercent < 0.5f ) + { + LTVector vColor; + VEC_LERP( vColor, m_vCool, m_vWarm, fPercent / 0.5f ); + m_Bar.SetForegroundColor( SET_ARGB(255,(uint8)vColor.x,(uint8)vColor.y,(uint8)vColor.z)); + } + else if( fPercent < 1.0f ) + { + LTVector vColor; + VEC_LERP( vColor, m_vWarm, m_vHot, (( fPercent - 0.5f ) / 0.5f )); + m_Bar.SetForegroundColor( SET_ARGB(255,(uint8)vColor.x,(uint8)vColor.y,(uint8)vColor.z)); + } + else + m_Bar.SetForegroundColor( m_argbOverheat ); + + m_Bar.Update(x,y,w,maxW,h); +} + +void CHUDWeaponHeat::UpdateLayout() +{ + int nCurrentLayout = GetConsoleInt("HUDLayout",0); + + m_BasePos = g_pLayoutMgr->GetWeaponHeatBasePos(nCurrentLayout); + + m_nBarHeight = g_pLayoutMgr->GetWeaponHeatBarHeight(nCurrentLayout); + m_fBarScale = g_pLayoutMgr->GetWeaponHeatBarScale(nCurrentLayout); + + LTVector vOverheat; + g_pLayoutMgr->GetWeaponHeatColors( nCurrentLayout, m_vCool, m_vWarm, m_vHot, vOverheat ); + m_argbOverheat = SET_ARGB(255,(uint8)vOverheat.x,(uint8)vOverheat.y,(uint8)vOverheat.z); +} + diff --git a/Jack/ClientShellDLL/HUDWeaponHeat.h b/Jack/ClientShellDLL/HUDWeaponHeat.h new file mode 100644 index 00000000..86ec1988 --- /dev/null +++ b/Jack/ClientShellDLL/HUDWeaponHeat.h @@ -0,0 +1,49 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HUDWeaponHeat.h +// +// PURPOSE : HUDItem to display weapon heat meter +// +// (c) 2001-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HUD_WEAPONHEAT_H +#define __HUD_WEAPONHEAT_H + +#include "HUDItem.h" +#include "HUDBar.h" + +//****************************************************************************************** +//** HUD Air display +//****************************************************************************************** +class CHUDWeaponHeat : public CHUDItem +{ +public: + CHUDWeaponHeat(); + + LTBOOL Init(); + void Term(); + + void Render(); + void Update(); + + void UpdateLayout(); + +private: + + LTIntPt m_BasePos; + + int m_nBarHeight; + float m_fBarScale; + CHUDBar m_Bar; + + bool m_bDraw; + + LTVector m_vCool; + LTVector m_vWarm; + LTVector m_vHot; + uint32 m_argbOverheat; +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/HeadBobMgr.cpp b/Jack/ClientShellDLL/HeadBobMgr.cpp new file mode 100644 index 00000000..bbdc68c2 --- /dev/null +++ b/Jack/ClientShellDLL/HeadBobMgr.cpp @@ -0,0 +1,545 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HeadBobMgr.cpp +// +// PURPOSE : Head Bob Mgr - Implementation +// +// CREATED : 01/09/00 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "HeadBobMgr.h" +#include "GameClientShell.h" +#include "SurfaceFunctions.h" +#include "VarTrack.h" +#include "CharacterFX.h" +#include "VehicleMgr.h" +#include "ClientWeaponBase.h" +#include "CMoveMgr.h" + +CHeadBobMgr* g_pHeadBobMgr = LTNULL; + +extern VarTrack g_vtMaxVehicleYawDiff; +extern SurfaceType g_eClientLastSurfaceType; + +VarTrack g_vtVehicleHeadCantUpRate; +VarTrack g_vtVehicleHeadCantDownRate; +VarTrack g_vtMaxVehicleHeadCant; +VarTrack g_vtVehiclePaceAdjust; +VarTrack g_vtRunPaceAdjust; +VarTrack g_vtWalkPaceAdjust; +VarTrack g_vtBobDecayTime; +VarTrack g_vtBobV; +VarTrack g_vtSwayH; +VarTrack g_vtSwayV; +VarTrack g_vtMaxBobAmp; +VarTrack g_vtRollAdjust; +VarTrack g_vtHeadBobAdjust; +VarTrack g_vtWeaponSway; + +static LTFLOAT s_fBobDecayStartTime = -1.0f; +static LTFLOAT s_fBobStartTime = -1.0f; +static LTBOOL s_bCanDoLeftFootstep = LTTRUE; +static LTBOOL s_bCanDoRightFootstep = LTFALSE; + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::CHeadBobMgr +// +// PURPOSE: Constructor +// +// --------------------------------------------------------------------------- // + +CHeadBobMgr::CHeadBobMgr() +{ + g_pHeadBobMgr = this; + + m_fBobHeight = 0.0f; + m_fBobAmp = 0.0f; + m_fBobPhase = 0.0f; + m_fSwayPhase = 0.0f; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::Init +// +// PURPOSE: Init +// +// --------------------------------------------------------------------------- // + +LTBOOL CHeadBobMgr::Init() +{ + g_vtVehicleHeadCantUpRate.Init(g_pLTClient, "VehicleHeadCantUpRate", NULL, 1.0f); + g_vtVehicleHeadCantDownRate.Init(g_pLTClient, "VehicleHeadCantDownRate", NULL, 1.0f); + g_vtMaxVehicleHeadCant.Init(g_pLTClient, "VehicleMaxHeadCant", NULL, 20.0f); + g_vtVehiclePaceAdjust.Init(g_pLTClient, "BobSwayVehiclePaceAdjust", NULL, 0.0f); + + g_vtRunPaceAdjust.Init(g_pLTClient, "BobSwayRunPaceAdjust", NULL, 1.5f); + g_vtWalkPaceAdjust.Init(g_pLTClient, "BobSwayWalkPaceAdjust", NULL, 1.0f); + + g_vtBobDecayTime.Init(g_pLTClient, "BobDecayTime", NULL, 0.1f); + g_vtBobV.Init(g_pLTClient, "BobV", NULL, 0.45f); + g_vtSwayH.Init(g_pLTClient, "SwayH", NULL, 0.005f); + g_vtSwayV.Init(g_pLTClient, "SwayV", NULL, 0.002f); + g_vtMaxBobAmp.Init(g_pLTClient, "MaxBobAmp", NULL, 10.0f); + + g_vtRollAdjust.Init(g_pLTClient, "BobRollAdjust", NULL, 0.005f); + g_vtHeadBobAdjust.Init(g_pLTClient, "HeadBob", NULL, 1.0f); + g_vtWeaponSway.Init(g_pLTClient, "WeaponSway", NULL, 1.0f); + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::Update +// +// PURPOSE: Update all variables +// +// --------------------------------------------------------------------------- // + +void CHeadBobMgr::Update() +{ + // Don't allow head bobbing or canting to update when paused... + + if( g_pGameClientShell->IsGamePaused() ) + return; + + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + // We check CanDoFootstep instead of on ground since CanDoFootstep + // handles stairs much better... + + if ( pMoveMgr->GetVehicleMgr()->AllowHeadBobCant( ) && (!g_pPlayerMgr->IsSpectatorMode() && g_pPlayerMgr->IsFirstPerson() && pMoveMgr->CanDoFootstep() && + g_pPlayerMgr->IsPlayerMovementAllowed() && pMoveMgr->GetAllowMovement())) + { + UpdateHeadBob(); + UpdateHeadCant(); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::UpdateHeadBob +// +// PURPOSE: Adjusts the head bobbing & swaying +// +// --------------------------------------------------------------------------- // + +void CHeadBobMgr::UpdateHeadBob() +{ + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + LTBOOL bZoomed = g_pPlayerMgr->IsZoomed(); + + uint32 dwPlayerFlags = g_pPlayerMgr->GetPlayerFlags(); + + // This frame time is used since unlike ClientDE::GetFrameTime() the + // max value is controlled by the game... + + LTFLOAT fFrameTime = g_pGameClientShell->GetFrameTime(); + + LTFLOAT fTime = g_pLTClient->GetTime(); + LTBOOL bRunning = (LTBOOL) !!(dwPlayerFlags & BC_CFLG_RUN); + LTFLOAT fMoveDist = pMoveMgr->GetVelocity().Mag() * fFrameTime; + + LTBOOL bFootstep = LTFALSE; + LTBOOL bLeftFoot = LTFALSE; + LTFLOAT fPace = 0.0f; + + if (pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + fPace = MATH_CIRCLE * g_vtVehiclePaceAdjust.GetFloat(); + } + else if (bRunning) + { + fPace = MATH_CIRCLE * g_vtRunPaceAdjust.GetFloat(); + } + else + { + fPace = MATH_CIRCLE * g_vtWalkPaceAdjust.GetFloat(); + } + + // Make sure bob phase and sway phase start at the right values... + + if (m_fBobAmp == 0.0f) + { + m_fBobPhase = 0.0f; + m_fSwayPhase = 0.0f; + } + else // Normal processing... + { + // Bob phase should be between MATH_PI and MATH_CIRCLE so that the + // sin(m_fBobPhase) is always between -1 and 0... + + m_fBobPhase += (fFrameTime * fPace); + + if (m_fBobPhase > MATH_CIRCLE) + { + m_fBobPhase -= MATH_PI; + } + else if (m_fBobPhase < MATH_PI) + { + m_fBobPhase += MATH_PI; + } + + m_fSwayPhase += (fFrameTime * fPace); + + if (m_fSwayPhase > MATH_CIRCLE) + { + m_fSwayPhase -= MATH_CIRCLE; + } + } + + + // See if it is time to play a footstep sound... + + if ((m_fSwayPhase > MATH_CIRCLE * 0.25f) && + (m_fSwayPhase <= MATH_CIRCLE * 0.75f)) + { + if (s_bCanDoLeftFootstep) + { + bLeftFoot = LTFALSE; + bFootstep = LTTRUE; + s_bCanDoLeftFootstep = LTFALSE; + s_bCanDoRightFootstep = LTTRUE; + } + } + else if (m_fSwayPhase > MATH_CIRCLE * 0.75f) + { + if (s_bCanDoRightFootstep) + { + bLeftFoot = LTTRUE; + bFootstep = LTTRUE; + s_bCanDoLeftFootstep = LTTRUE; + s_bCanDoRightFootstep = LTFALSE; + } + } + + + LTBOOL bMoving = LTFALSE; + LTFLOAT t; + + uint32 dwTestFlags = (BC_CFLG_MOVING); // | BC_CFLG_DUCK); + if (fMoveDist > 0.1f) + { + bMoving = !!(dwPlayerFlags & dwTestFlags); + } + + + // If we're not moving, decay the head bob... + + if (!bMoving) + { + s_fBobStartTime = -1.0f; + + if (s_fBobDecayStartTime < 0.0f) + { + // Calculate what the current bobamp percent is... + + t = (1.0f - m_fBobAmp / g_vtMaxBobAmp.GetFloat()); + + s_fBobDecayStartTime = fTime - (g_vtBobDecayTime.GetFloat() * t); + } + + LTFLOAT fDur = (fTime - s_fBobDecayStartTime); + if (fDur <= g_vtBobDecayTime.GetFloat()) + { + t = fDur / g_vtBobDecayTime.GetFloat(); // 0 to 1 + t = WaveFn_SlowOff(t); + t = 1.0f - t; // 1 to 0 + + m_fBobAmp = t * g_vtMaxBobAmp.GetFloat(); + + if (m_fBobAmp < 0.0f) + { + m_fBobAmp = 0.0f; + } + } + else + { + m_fBobAmp = 0.0f; + } + } + else // We're moving... + { + s_fBobDecayStartTime = -1.0f; + + // If we just started bobing, ramp up the bob... + + if (s_fBobStartTime < 0.0f) + { + // Calculate what the current bobamp percent is... + + t = m_fBobAmp / g_vtMaxBobAmp.GetFloat(); + + s_fBobStartTime = fTime - (g_vtBobDecayTime.GetFloat() * t); + } + + LTFLOAT fDur = (fTime - s_fBobStartTime); + if (fDur <= g_vtBobDecayTime.GetFloat()) + { + t = fDur / g_vtBobDecayTime.GetFloat(); // 0 to 1 + t = WaveFn_SlowOn(t); + + m_fBobAmp = t * g_vtMaxBobAmp.GetFloat(); + + if (m_fBobAmp > g_vtMaxBobAmp.GetFloat()) + { + m_fBobAmp = g_vtMaxBobAmp.GetFloat(); + } + } + else + { + m_fBobAmp = g_vtMaxBobAmp.GetFloat(); + } + } + + + // Update the bob... + + if (!bZoomed) + { + m_fBobHeight = g_vtBobV.GetFloat() * m_fBobAmp * (float)sin(m_fBobPhase); + } + + + // Update the weapon model bobbing... + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon && !bZoomed ) + { + LTFLOAT fSwayHeight = g_vtSwayV.GetFloat() * m_fBobAmp * (float)sin(m_fSwayPhase * 2); + LTFLOAT fSwayWidth = g_vtSwayH.GetFloat() * m_fBobAmp * (float)sin(m_fSwayPhase - (MATH_PI/3)); + + // No weapon bob if vehicle mode... + + if (pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + fSwayWidth = fSwayHeight = 0.0f; + } + + fSwayHeight *= g_vtWeaponSway.GetFloat(); + fSwayWidth *= g_vtWeaponSway.GetFloat(); + + pClientWeapon->UpdateBob(fSwayWidth, fSwayHeight); + } + + + // Update the head cant... + + if (!bZoomed && !pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + LTFLOAT fRollAdjust = g_vtRollAdjust.GetFloat() * (float)sin(m_fSwayPhase); + + // Turn head bob up/down... + + fRollAdjust *= g_vtHeadBobAdjust.GetFloat(); + + if (m_fBobAmp == 0.0f) + { + fRollAdjust = 0.0f; + } + + g_pPlayerMgr->SetRoll(fRollAdjust); + } + + + // Play foot step sounds at the appropriate time... + + if (bMoving && bFootstep) + { + CCharacterFX* pCharFX = pMoveMgr->GetCharacterFX(); + if (pCharFX) + { + SurfaceType eSurf = pMoveMgr->GetStandingOnSurface(); + eSurf = (eSurf == ST_UNKNOWN ? pCharFX->GetLastSurface() : eSurf); + + LTVector vPos; + g_pLTClient->GetObjectPos(pMoveMgr->GetObject(), &vPos); + pCharFX->PlayMovementSound(vPos, eSurf, bLeftFoot); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::AdjustCameraPos() +// +// PURPOSE: Adjust the camera's bob position... +// +// ----------------------------------------------------------------------- // + +void CHeadBobMgr::AdjustCameraPos(LTVector &vPos) +{ + vPos.y += m_fBobHeight * g_vtHeadBobAdjust.GetFloat(); +} + +// Limits the angle to a -PI to PI range. +static inline float LimitToPosNegPi( float fAngle ) +{ + // Copy the angle and make sure it's under 2 pi. + float fNewAngle = ( float )fmod( fAngle, MATH_CIRCLE ); + + if( fNewAngle > MATH_PI ) + fNewAngle = fNewAngle - MATH_CIRCLE; + else if( fNewAngle < -MATH_PI ) + fNewAngle = fNewAngle + MATH_CIRCLE; + + return fNewAngle; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHeadBobMgr::UpdateHeadCant() +// +// PURPOSE: Update head tilt when strafing +// +// ----------------------------------------------------------------------- // + +void CHeadBobMgr::UpdateHeadCant() +{ + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + CVehicleMgr* pVehicleMgr = pMoveMgr->GetVehicleMgr(); + if (!pVehicleMgr) return; + + LTBOOL bVehicleTurning = pVehicleMgr->IsTurning(); + int nVehicleTurnDir = pVehicleMgr->GetTurnDirection(); + + CantType eCantType = eCantNone; + LTFLOAT fMaxCant = 0.0f, fCantRate = 0.0f; + + if (bVehicleTurning && pMoveMgr->CanDoFootstep()) + { + eCantType = nVehicleTurnDir > 0 ? eCantRight : eCantLeft; + } + + + fMaxCant = DEG2RAD(g_vtMaxVehicleHeadCant.GetFloat()); + LTFLOAT fMinCant = fMaxCant * 0.25f; + + LTFLOAT fRoll = LimitToPosNegPi( g_pPlayerMgr->GetRoll() - pVehicleMgr->GetVehicleContourRoll() ); + + switch (eCantType) + { + case eCantRight : + { + if (fRoll > 0.0f) + { + fCantRate = g_vtVehicleHeadCantDownRate.GetFloat(); + } + else + { + fCantRate = g_vtVehicleHeadCantUpRate.GetFloat(); + } + } + break; + case eCantLeft : + { + if (fRoll < 0.0f) + { + fCantRate = g_vtVehicleHeadCantDownRate.GetFloat(); + } + else + { + fCantRate = g_vtVehicleHeadCantUpRate.GetFloat(); + } + } + break; + case eCantNone: + { + fCantRate = g_vtVehicleHeadCantDownRate.GetFloat(); + } + break; + + default : + break; + } + + if (fabs(fRoll) < fMinCant) + { + fCantRate *= 0.5f; + } + + // This frame time is used since unlike ClientDE::GetFrameTime() the + // max value is controlled by the game... + + LTFLOAT fFrameTime = g_pGameClientShell->GetFrameTime(); + + LTFLOAT fDelta = fCantRate * fFrameTime; + + switch (eCantType) + { + case eCantRight : + { + fRoll -= fDelta; + + if (fRoll < -fMaxCant) + { + fRoll = -fMaxCant; + } + } + break; + + case eCantLeft : + { + fRoll += fDelta; + + if (fRoll > fMaxCant) + { + fRoll = fMaxCant; + } + } + break; + + case eCantNone: + default : + { + // We are not canting so move us toward zero... + + if (fRoll != 0.0f) + { + if (fRoll < 0.0f) + { + fRoll += fDelta; + + if (fRoll > 0.0f) + { + fRoll = 0.0f; + } + } + else + { + fRoll -= fDelta; + + if (fRoll < 0.0f) + { + fRoll = 0.0f; + } + } + } + } + break; + } + + // Let the vehicle mgr adjust the value... + + pVehicleMgr->AdjustCameraRoll(fRoll); + + // Set the new value... + + g_pPlayerMgr->SetRoll(fRoll); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/HeadBobMgr.h b/Jack/ClientShellDLL/HeadBobMgr.h new file mode 100644 index 00000000..08b37e9a --- /dev/null +++ b/Jack/ClientShellDLL/HeadBobMgr.h @@ -0,0 +1,51 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HeadBobMgr.h +// +// PURPOSE : Head Bob Mgr - Definition +// +// CREATED : 01/09/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HEAD_BOB_MGR__ +#define __HEAD_BOB_MGR__ + +class CHeadBobMgr; +extern CHeadBobMgr* g_pHeadBobMgr; + +class CHeadBobMgr +{ + public: + + CHeadBobMgr(); + + LTBOOL Init(); + void Update(); + + void OnEnterWorld(); + + void AdjustCameraPos(LTVector &vPos); + + private : + + LTFLOAT m_fBobHeight; + LTFLOAT m_fBobAmp; + LTFLOAT m_fBobPhase; + LTFLOAT m_fSwayPhase; + + void UpdateHeadBob(); + void UpdateHeadCant(); + + enum CantType { eCantNone=0, eCantLeft, eCantRight }; + void AdjustCant(CantType eType, LTFLOAT fDelta, LTFLOAT fMaxCant); + +}; + +inline void CHeadBobMgr::OnEnterWorld() +{ +} + +#endif // __HEAD_BOB_MGR__ diff --git a/Jack/ClientShellDLL/HitBox.cpp b/Jack/ClientShellDLL/HitBox.cpp new file mode 100644 index 00000000..7db08e4b --- /dev/null +++ b/Jack/ClientShellDLL/HitBox.cpp @@ -0,0 +1,301 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HitBox.cpp +// +// PURPOSE : Client side reresentation of the CCharacterHitBox object +// +// CREATED : 8/26/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "HitBox.h" + +// +// Defines... +// + + #define HB_COLOR_R 0.5f + #define HB_COLOR_G 0.5f + #define HB_COLOR_B 0.5f + #define HB_COLOR_A 1.0f + +static VarTrack s_ShowClientHitBox; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::CHitBox() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CHitBox::CHitBox() +: m_hObject ( INVALID_HOBJECT ), + m_hModel ( INVALID_HOBJECT ), + m_vDims ( 0.0f, 0.0f, 0.0f ), + m_vOffset ( 0.0f, 0.0f, 0.0f ), + m_hBoundingBox ( INVALID_HOBJECT ) +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::~CHitBox() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CHitBox::~CHitBox() +{ + if( m_hObject != INVALID_HOBJECT ) + { + g_pLTClient->RemoveObject( m_hObject ); + } + m_hObject = INVALID_HOBJECT; + + if( m_hBoundingBox != INVALID_HOBJECT ) + { + g_pLTClient->RemoveObject( m_hBoundingBox ); + } + m_hBoundingBox = INVALID_HOBJECT; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::Init() +// +// PURPOSE: Create our object +// +// ----------------------------------------------------------------------- // + +bool CHitBox::Init( HOBJECT hModel, const LTVector &vDims, const LTVector &vOffset ) +{ + if( hModel == INVALID_HOBJECT ) + return false; + + if( !s_ShowClientHitBox.IsInitted() ) + { + s_ShowClientHitBox.Init( g_pLTClient, "ShowClientHitBox", LTNULL, 0.0f ); + } + + m_hModel = hModel; + m_vDims = vDims; + m_vOffset = vOffset; + + // Create the hitbox at the propper offset from the models position... + + LTVector vModelPos; + g_pLTClient->GetObjectPos( m_hModel, &vModelPos ); + + LTRotation rModelRot; + g_pLTClient->GetObjectRotation( m_hModel, &rModelRot ); + + LTMatrix mMat; + rModelRot.ConvertToMatrix( mMat ); + + // Get rid of our object if it already exists... + + if( m_hObject ) + { + g_pLTClient->RemoveObject( m_hObject ); + m_hObject = LTNULL; + } + + ObjectCreateStruct ocs; + + ocs.m_ObjectType = OT_NORMAL; + ocs.m_Flags = FLAG_RAYHIT; + ocs.m_Pos = vModelPos + (mMat * m_vOffset); + + m_hObject = g_pLTClient->CreateObject( &ocs ); + if( m_hObject == INVALID_HOBJECT ) + { + return false; + } + + g_pPhysicsLT->SetObjectDims( m_hObject, &m_vDims, 0 ); + + g_pCommonLT->SetObjectFlags( m_hObject, OFT_User, USRFLG_HITBOX | USRFLG_CHARACTER, USRFLG_HITBOX | USRFLG_CHARACTER ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::Update() +// +// PURPOSE: Update the HitBox... +// +// ----------------------------------------------------------------------- // + +void CHitBox::Update() +{ + if( (m_hObject == INVALID_HOBJECT) || + (m_hModel == INVALID_HOBJECT) ) + { + return; + } + + // Offset the HitBox from the position of the associated model... + + LTVector vPos; + g_pLTClient->GetObjectPos( m_hModel, &vPos ); + + LTRotation rRot; + g_pLTClient->GetObjectRotation( m_hModel, &rRot ); + + LTMatrix mMat; + rRot.ConvertToMatrix( mMat ); + + vPos += (mMat * m_vOffset); + + g_pLTClient->SetObjectPos( m_hObject, &vPos ); + + // If the model object is not visible we should not be able to interact with the hitbox + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags( m_hModel, OFT_Flags, dwFlags ); + g_pCommonLT->SetObjectFlags( m_hObject, OFT_Flags, ((dwFlags & FLAG_VISIBLE) ? FLAG_RAYHIT : 0), FLAG_RAYHIT ); + + +#ifndef _FINAL + // Update the visual model... + UpdateBoundingBox(); +#endif // _FINAL + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::SetDims() +// +// PURPOSE: Set the dimensions of the hitbox... +// +// ----------------------------------------------------------------------- // + +void CHitBox::SetDims( const LTVector &vDims ) +{ + if( m_hObject == INVALID_HOBJECT ) + return; + + m_vDims = vDims; + g_pPhysicsLT->SetObjectDims( m_hObject, &m_vDims, 0 ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::SetOffset() +// +// PURPOSE: Set the offset from the models position... +// +// ----------------------------------------------------------------------- // + +void CHitBox::SetOffset( const LTVector &vOffset ) +{ + if( m_hObject == INVALID_HOBJECT ) + return; + + // Just set the offset, Update() will take care of setting the position... + + m_vOffset = vOffset; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::CreateBoundingBox() +// +// PURPOSE: Create a model for some visual feedback of the hitbox... +// +// ----------------------------------------------------------------------- // + +void CHitBox::CreateBoundingBox() +{ + if( (m_hObject == INVALID_HOBJECT) || + (m_hBoundingBox != INVALID_HOBJECT )) + return; + + ObjectCreateStruct ocs; + + g_pLTClient->GetObjectPos( m_hObject, &ocs.m_Pos ); + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_VISIBLE | FLAG_NOLIGHT | FLAG_GOTHRUWORLD; + ocs.m_Flags2 = FLAG2_FORCETRANSLUCENT; + ocs.m_Scale = m_vDims * 2.0f; + + LTStrCpy( ocs.m_Filename, "Models\\1x1_square.ltb", ARRAY_LEN( ocs.m_Filename )); + LTStrCpy( ocs.m_SkinName, "Models\\1x1_square.dtx", ARRAY_LEN( ocs.m_SkinName )); + + m_hBoundingBox = g_pLTClient->CreateObject( &ocs ); + if( m_hBoundingBox == INVALID_HOBJECT ) + return; + + g_pLTClient->SetObjectColor( m_hBoundingBox, HB_COLOR_R, HB_COLOR_G, HB_COLOR_B, HB_COLOR_A); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::UpdateBoundingBox() +// +// PURPOSE: Update the model for some visual feedback of the hitbox... +// +// ----------------------------------------------------------------------- // + +void CHitBox::UpdateBoundingBox() +{ + if( m_hObject == INVALID_HOBJECT ) + return; + + if( s_ShowClientHitBox.GetFloat( 0.0f ) > 0.0f ) + { + CreateBoundingBox(); + + if( m_hBoundingBox == INVALID_HOBJECT ) + return; + + LTVector vPos; + + g_pLTClient->GetObjectPos( m_hObject, &vPos ); + g_pLTClient->SetObjectPos( m_hBoundingBox, &vPos ); + + LTVector vScale = m_vDims * 2.0f; + g_pLTClient->SetObjectScale( m_hBoundingBox, &vScale ); + + g_pLTClient->SetObjectColor( m_hBoundingBox, HB_COLOR_R, HB_COLOR_G, HB_COLOR_B, HB_COLOR_A ); + } + else + { + if( m_hBoundingBox != INVALID_HOBJECT ) + { + g_pLTClient->RemoveObject( m_hBoundingBox ); + } + m_hBoundingBox = INVALID_HOBJECT; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CHitBox::SetCanBeSearched() +// +// PURPOSE: Set the hitbox to be searchable... +// +// ----------------------------------------------------------------------- // + +void CHitBox::SetCanBeSearched( bool bCanBeSearched ) +{ + if( m_hObject == INVALID_HOBJECT ) + return; + +// Don't allow searching. +// g_pCommonLT->SetObjectFlags( m_hObject, OFT_User, (bCanBeSearched ? USRFLG_CAN_SEARCH : 0), USRFLG_CAN_SEARCH ); +} diff --git a/Jack/ClientShellDLL/HitBox.h b/Jack/ClientShellDLL/HitBox.h new file mode 100644 index 00000000..bdb58487 --- /dev/null +++ b/Jack/ClientShellDLL/HitBox.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : HitBox.h +// +// PURPOSE : Client side reresentation of the CCharacterHitBox object +// +// CREATED : 8/26/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __HITBOX_H__ +#define __HITBOX_H__ + +// +// Includes... +// + + +class CHitBox +{ + public: // Methods... + + CHitBox(); + ~CHitBox(); + + virtual bool Init( HOBJECT hModel, const LTVector &vDims, const LTVector &vOffset ); + virtual void Update(); + + virtual void SetDims( const LTVector &vDims ); + virtual void SetOffset( const LTVector &vOffset ); + virtual void SetCanBeSearched( bool bCanBeSearched ); + + const LTVector& GetDims() const { return m_vDims; } + const LTVector& GetOffset() const { return m_vOffset; } + + HOBJECT GetObject() const { return m_hObject; } + + protected: // Methods... + + void CreateBoundingBox(); // Testing puposes only! + void UpdateBoundingBox(); // Testing puposes only! + + + protected: // Members... + + HOBJECT m_hObject; + HOBJECT m_hModel; // Object we are associated with + + LTVector m_vDims; // HitBox dimensions + LTVector m_vOffset; // HitBox offset relative to the position and rotation of our model object + + HOBJECT m_hBoundingBox; // Testing puposes only! The visual model of the hitbox. +}; + +#endif // __HITBOX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/IntelItemList.cpp b/Jack/ClientShellDLL/IntelItemList.cpp new file mode 100644 index 00000000..293ec2f4 --- /dev/null +++ b/Jack/ClientShellDLL/IntelItemList.cpp @@ -0,0 +1,122 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : IntelItemList.cpp +// +// PURPOSE : Implementation of list of collected intel items +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "IntelItemList.h" + + +void CIntelItemList::Clear() +{ + IntelArray::iterator iter = m_IntelArray.begin(); + + while (iter != m_IntelArray.end()) + { + debug_delete(*iter); + iter++; + } + + m_IntelArray.clear(); +} + +uint16 CIntelItemList::GetIndex(uint32 id) +{ + return ( Find(id) - m_IntelArray.begin() ); +} + +IntelArray::iterator CIntelItemList::Find(uint32 id) +{ + IntelArray::iterator iter = m_IntelArray.begin(); + + while (iter != m_IntelArray.end() && (*iter)->nTextId != id) + { + iter++; + } + + return iter; + +} + +LTBOOL CIntelItemList::Add(INTEL_ITEM *pItem) +{ + if (Find(pItem->nTextId) == m_IntelArray.end()) + { + m_IntelArray.push_back(pItem); + return LTTRUE; + } + + return LTFALSE; +} + +LTBOOL CIntelItemList::Remove(uint32 id) +{ + IntelArray::iterator iter = Find(id); + + if (iter != m_IntelArray.end()) + { + debug_delete(*iter); + m_IntelArray.erase(iter); + return LTTRUE; + } + + return LTFALSE; +} + +void CIntelItemList::Save(ILTMessage_Write *pMsg) +{ + if (!pMsg) return; + pMsg->Writeuint16(m_IntelArray.size()); + + IntelArray::iterator iter = m_IntelArray.begin(); + while (iter != m_IntelArray.end()) + { + pMsg->Writeuint32( (*iter)->nTextId ); + pMsg->Writeuint8( (*iter)->nPopupId ); + pMsg->Writebool( (*iter)->bIsIntel != LTFALSE ); + pMsg->Writeuint8( (*iter)->nMissionNum ); + iter++; + } + +} + +void CIntelItemList::Load(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + uint16 nCount = pMsg->Readuint16(); + uint16 i = 0; + + for (i=0; i < nCount; i++) + { + INTEL_ITEM *pItem = LTNULL; + if (i < m_IntelArray.size()) + { + pItem = m_IntelArray[i]; + } + else + { + pItem = debug_new(INTEL_ITEM); + m_IntelArray.push_back(pItem); + } + pItem->nTextId = pMsg->Readuint32(); + pItem->nPopupId = pMsg->Readuint8(); + pItem->bIsIntel = pMsg->Readbool() ? LTTRUE : LTFALSE; + pItem->nMissionNum = pMsg->Readuint8(); + + } +} + + +INTEL_ITEM* CIntelItemList::Get(uint16 nIndex) +{ + if (nIndex > m_IntelArray.size()) + return LTNULL; + return m_IntelArray[nIndex]; +} diff --git a/Jack/ClientShellDLL/IntelItemList.h b/Jack/ClientShellDLL/IntelItemList.h new file mode 100644 index 00000000..da5800ef --- /dev/null +++ b/Jack/ClientShellDLL/IntelItemList.h @@ -0,0 +1,61 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : IntelItemList.h +// +// PURPOSE : Definition of list of collected intel items +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __INTEL_LIST_H +#define __INTEL_LIST_H + +#pragma warning( disable : 4786 ) +#include + +#include "ltbasedefs.h" + +struct INTEL_ITEM +{ + INTEL_ITEM() {nTextId = 0; nPopupId = 0; bIsIntel = 0; nMissionNum = 0;} + + uint32 nTextId; + uint8 nPopupId; + LTBOOL bIsIntel; + uint8 nMissionNum; + +}; +typedef std::vector IntelArray; + + + +class CIntelItemList +{ +public: + CIntelItemList(uint8 baseSize = 25) { m_IntelArray.reserve(baseSize);} + ~CIntelItemList() { Clear(); } + + + void Clear(); + + LTBOOL IsValid(uint16 nIndex) {return (nIndex < m_IntelArray.size());} + + uint16 GetIndex(uint32 id); + + LTBOOL Add(INTEL_ITEM *pItem); + LTBOOL Remove(uint32 id); + + void Save(ILTMessage_Write *pMsg); + void Load(ILTMessage_Read *pMsg); + + uint16 GetCount() {return m_IntelArray.size();} + INTEL_ITEM* Get(uint16 nIndex); + +private: + IntelArray::iterator Find(uint32 id); + IntelArray m_IntelArray; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/InterfaceMgr.cpp b/Jack/ClientShellDLL/InterfaceMgr.cpp new file mode 100644 index 00000000..55b1622c --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceMgr.cpp @@ -0,0 +1,6516 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceMgr.cpp +// +// PURPOSE : Manage all interface related functionality +// +// CREATED : 4/6/99 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "WeaponStringDefs.h" +#include "VKDefs.h" +#include "SoundMgr.h" +#include "InterfaceResMgr.h" +#include "VarTrack.h" +#include "ClientButeMgr.h" +#include "CharacterFX.h" +#include "GameButes.h" +#include "UberAssert.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "ClientMultiplayerMgr.h" +#include "MissionMgr.h" +#include "ClientSaveLoadMgr.h" +#include "ScreenPreload.h" +#include "ScreenPostload.h" +#include "timer.h" +#include "WaveFn.h" +#include "ChassisButeMgr.h" +#include "ScreenJoin.h" +#include "IGameSpy.h" + +CInterfaceMgr* g_pInterfaceMgr = LTNULL; + +#define IM_SPLASH_SOUND "Interface\\Menu\\Snd\\theme_mp3.wav" +#define IM_SPLASH_SCREEN "Interface\\Menu\\Art\\splash.pcx" + +#define MAX_INTERFACE_SFX 100 +#define MAX_INTERFACE_LIGHTS 5 +#define INVALID_ANI ((HMODELANIM)-1) + +static enum MovieOrderEnum +{ + eVUG, + eSierra, + eMonolith, + eJupiter, + eNVidia, +}; + +//hack to track whether we are trying to host/join a LAN only or an internet game +bool g_bLAN = false; + +static MovieOrderEnum gMovieOrder[] = +{ + eVUG, eSierra, eMonolith, eJupiter, eNVidia +}; + +float g_fSplashSndDuration = 0.0f; + +float g_fFovXTan = 0.0f; +float g_fFovYTan = 0.0f; + +LTVector g_vOverlaySpriteScale(0.02f, 0.02f, 1.0f); +LTVector g_vOverlayModelScale(1.0f, 1.0f, 1.0f); +float g_fOverlaySpriteDist = 1.0f; +float g_fOverlayModelDist = 0.25f; + +LTVector g_vBaseBackScale(0.8f, 0.6f, 1.0f); +float g_fBackDist = 200.0f; + +HSURFACE g_hSplash = LTNULL; +HSURFACE g_hDemo = LTNULL; +int g_nDemo = 0; + +#define NUM_DEMO_SCREENS 1 +char g_szDemoScreens[NUM_DEMO_SCREENS][64] = +{ + "Interface\\Menu\\Art\\EndSplash.pcx" +}; +uint8 g_nNumDemoScreens = sizeof(g_szDemoScreens)/sizeof(char*); + + +VarTrack g_vtDrawInterface; +VarTrack g_vtModelApplySun; +VarTrack g_vtLetterBox; +VarTrack g_vtLetterBoxFadeInTime; +VarTrack g_vtLetterBoxFadeOutTime; +VarTrack g_vtLetterBoxDisabled; +VarTrack g_vtDisableMovies; +VarTrack g_vtInterfaceFOVX; +VarTrack g_vtInterfaceFOVY; +VarTrack g_vtPauseTintAlpha; +VarTrack g_vtSplashScreenFadeIn; +VarTrack g_vtSplashScreenFadeOut; +VarTrack g_vtSplashScreenTime; +VarTrack g_vtMainScreenFadeIn; +VarTrack g_vtProgressBarScaleToSkills; +VarTrack g_vtExitLevelScreenFadeTime; + +extern VarTrack g_vtFOVXNormal; +extern VarTrack g_vtFOVYNormal; + +extern VarTrack g_vtScreenFadeInTime; + +const char* c_GameStateNames[] = +{ + "GS_UNDEFINED", + "GS_PLAYING", + "GS_EXITINGLEVEL", + "GS_LOADINGLEVEL", + "GS_SPLASHSCREEN", + "GS_MENU", + "GS_POPUP", + "GS_SCREEN", + "GS_PAUSED", + "GS_DEMOSCREEN", + "GS_MOVIE", +}; + + +static LTMatrix GetCameraTransform(HOBJECT hCamera) +{ + LTVector vPos, vRight, vUp, vForward; + LTRotation rRot; + + g_pLTClient->GetObjectPos(hCamera, &vPos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + vPos.x = -vPos.x; + vPos.y = -vPos.y; + vPos.z = -vPos.z; + + LTMatrix mTran, mRot, mFull; + + mRot.SetBasisVectors((LTVector*)&rRot.Right(), (LTVector*)&rRot.Up(), (LTVector*)&rRot.Forward()); + MatTranspose3x3(&mRot); + + Mat_Identity(&mTran); + mTran.m[0][3] = vPos.x; + mTran.m[1][3] = vPos.y; + mTran.m[2][3] = vPos.z; + + MatMul(&mFull, &mRot, &mTran); + + return mFull; +} + + +namespace +{ + LTBOOL g_bInGameFogEnabled = LTTRUE; + + HLTCOLOR hBackColor; + + //********************************************************** + //*** definitions needed for rendering FX in the interface + //********************************************************** + typedef struct FXRenderInfo_t + { + HOBJECT hObj; + uint8 nLayer; + } FXRenderInfo; + + const int kMaxFX = MAX_INTERFACE_SFX + MAX_INTERFACE_LIGHTS + 2; + static FXRenderInfo sRenderInfo[kMaxFX]; + typedef std::list FXRenderList; + FXRenderList renderList; + + + typedef std::vector KeystrokeList; + KeystrokeList g_keys; + + bool g_bLockPopup = true; + + CTimer g_SplashScreenTimer; +} + + +static LTBOOL HandleDebugKey(int key ) +{ +#ifdef _FINAL + return LTFALSE; +#endif + +#ifdef _DEMO + //don't bother checking in demo build + return LTFALSE; +#endif + + char szTempStr[256]; + char szVarName[256]; + + int iID = -1; + + // Go through each debug key and see if it matches the key hit. + // Favor modified versions of keys (e.g. shift F11). + + for( int i = 0; i < g_pClientButeMgr->GetNumDebugKeys(); ++i ) + { + if( g_pClientButeMgr->GetDebugKeyId(i) == key ) + { + if( IsKeyDown( g_pClientButeMgr->GetDebugModifierId(i) ) ) + { + iID = i; + } + else if( iID == -1 ) + { + iID = i; + } + } + } + + if( iID != -1 ) + { + szVarName[0] = 0; + g_pClientButeMgr->GetDebugName(iID,szVarName,256); + + if( !szVarName[0] ) + { + return LTFALSE; + } + + // Get the console variable associated with this debug key. + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar(szVarName); + + // Initialize the variable if it does not exist. + if( !hVar ) + { + sprintf(szTempStr, "\"%s\" \"%2f\"", szVarName, 0.0f ); + g_pLTClient->RunConsoleString( szTempStr ); + + hVar = g_pLTClient->GetConsoleVar(szVarName); + ASSERT( hVar ); + + if( !hVar ) + { + return LTFALSE; + } + } + + // Increment the current debug level, recycling to zero if it is above max levels. + float fCurrentLevel = g_pLTClient->GetVarValueFloat(hVar); + ++fCurrentLevel; + + if( int(fCurrentLevel) >= g_pClientButeMgr->GetNumDebugLevels(iID) ) + { + fCurrentLevel = 0.0f; + } + + // Set the new debug level. + sprintf(szTempStr, "\"%s\" \"%2f\"", szVarName, fCurrentLevel ); + g_pLTClient->RunConsoleString( szTempStr ); + + g_pLTClient->CPrint("%s %2f", szVarName, fCurrentLevel ); + + szTempStr[0] = 0; + g_pClientButeMgr->GetDebugString(iID,uint8(fCurrentLevel), szTempStr, 256); + if( szTempStr ) + { + g_pLTClient->RunConsoleString( szTempStr ); +#ifdef _DEBUG + g_pLTClient->CPrint( szTempStr ); +#endif + } + + // Display message + szTempStr[0] = 0; + g_pClientButeMgr->GetDebugTitle(iID,uint8(fCurrentLevel), szTempStr, 256); + if( szTempStr[0] ) + { + g_pChatMsgs->AddMessage( szTempStr ); + } + else + { + sprintf(szTempStr, "%s set to level %1.0f", szVarName, fCurrentLevel ); + + g_pChatMsgs->AddMessage( szTempStr ); + } + + return LTTRUE; + } + + return LTFALSE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::CInterfaceMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CInterfaceMgr::CInterfaceMgr() +{ + g_pInterfaceMgr = this; + + m_eGameState = GS_UNDEFINED; + m_eLastGameState = GS_UNDEFINED; + + + m_dwAdvancedOptions = AO_DEFAULT_ENABLED; + m_dwOrignallyEnabled = 0; + + m_nClearScreenCount = 0; + m_bClearScreenAlways = LTFALSE; + + m_fMenuSaveFOVx = 0.0f; + m_fMenuSaveFOVy = 0.0f; + + m_bSwitchingModes = LTFALSE; + + m_hSplashSound = LTNULL; + g_fSplashSndDuration = 0.0f; + + m_nFailStringId = LTNULL; + + m_bUseInterfaceCamera = LTTRUE; + m_hInterfaceCamera = LTNULL; + + for (int i =0; i < NUM_OVERLAY_MASKS; i++) + { + m_hOverlays[i] = LTNULL; + m_fOverlayScaleMult[i] = 1.0f; + } + m_nOverlayCount = 0; + + m_hScubaSound = LTNULL; + m_hSound = LTNULL; + + m_hFadeSurface = LTNULL; + m_hLetterBoxSurface = LTNULL; +/* + m_nBorderSize = 0; +*/ + m_fLetterBoxAlpha = 0.0f; + m_bLetterBox = LTFALSE; + m_bWasLetterBox = LTFALSE; + m_fLetterBoxFadeEndTime = 0.0f; + + m_bScreenFade = LTFALSE; + m_bFadeInitialized = LTFALSE; + m_fTotalFadeTime = 0.0f; + m_fCurFadeTime = 0.0f; + m_bFadeIn = LTTRUE; + + m_bSavedGameMusic = LTFALSE; + + m_eNextSound = IS_NONE; + + m_bQuitAfterDemoScreens = LTFALSE; + m_bSeenDemoScreens = LTFALSE; + + m_hMovie = LTNULL; + m_nCurMovie = gMovieOrder[0]; + + m_bLoadFailed = LTFALSE; + m_bCommandLineJoin = false; + m_eLoadFailedScreen = SCREEN_ID_MAIN; + m_nLoadFailedMsgId = -1; + + m_hGamePausedSurface = LTNULL; + + m_fLastUpdateRequestTime = 0.0f; + + m_MouseFX.ClearLink(); + m_SelectFX.ClearLink(); + + m_bInitialized = false; + m_bHideHUDInPopup = false; + m_ePrePopupHUDRenderLevel = kHUDRenderFull; + + m_bSuppressNextFlip = false; + + m_bEnteredScreenState = false; + m_bIntentionalDisconnect = false; + + m_bSkipPreLoadScreen = false; + m_ePostLoadScreenID = SCREEN_ID_POSTLOAD; + + m_pGameSpyPatchInfo = NULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::~CInterfaceMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CInterfaceMgr::~CInterfaceMgr() +{ + if (m_hSplashSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSplashSound); + } + + if (m_hScubaSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hScubaSound); + } + + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSound); + } + + if (m_hFadeSurface) + { + g_pLTClient->DeleteSurface(m_hFadeSurface); + } + + if (m_hLetterBoxSurface) + { + g_pLTClient->DeleteSurface(m_hLetterBoxSurface); + } + + + g_pInterfaceMgr = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Init +// +// PURPOSE: Init the mgr +// +// ----------------------------------------------------------------------- // +LTBOOL CInterfaceMgr::Init() +{ + if (!m_ScreenSpriteMgr.Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize ScreenSpriteMgr!"); + return LTFALSE; + } + + if (!m_CursorMgr.Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize Cursor!"); + return LTFALSE; + } + + g_vtDrawInterface.Init(g_pLTClient, "DrawInterface", NULL, 1.0f); + g_vtModelApplySun.Init(g_pLTClient, "ModelApplySun", NULL, 1.0f); + + + g_vtLetterBox.Init(g_pLTClient, "LetterBox", NULL, 0.0f); + g_vtLetterBoxDisabled.Init(g_pLTClient, "LetterBoxDisabled", NULL, 0.0f); + g_vtLetterBoxFadeInTime.Init(g_pLTClient, "LetterBoxFadeInTime", NULL, 0.5f); + g_vtLetterBoxFadeOutTime.Init(g_pLTClient, "LetterBoxFadeOutTime", NULL, 1.0f); + g_vtDisableMovies.Init(g_pLTClient, "NoMovies", NULL, 0.0f); + + g_vtInterfaceFOVX.Init(g_pLTClient, "FovXInterface", NULL, 90.0f); + g_vtInterfaceFOVY.Init(g_pLTClient, "FovYInterface", NULL, 75.0f); + + g_vtPauseTintAlpha.Init(g_pLTClient, "PauseTintAlpha", NULL, 0.65f); + + g_vtSplashScreenFadeIn.Init(g_pLTClient, "SplashScreenFadeInTime", NULL, 2.5f); + g_vtSplashScreenFadeOut.Init(g_pLTClient, "SplashScreenFadeOutTime", NULL, 2.5f); + g_vtSplashScreenTime.Init(g_pLTClient, "SplashScreenTime", NULL, 3.0f); + g_vtMainScreenFadeIn.Init(g_pLTClient, "MainScreenFadeInTime", NULL, 3.0f); + + g_vtProgressBarScaleToSkills.Init( g_pLTClient, "ProgressBarScaleToSkills", LTNULL, 1.0f ); + + g_vtExitLevelScreenFadeTime.Init( g_pLTClient, "ExitLevelScreenFadeTime", LTNULL, 1.0f ); + + ProcessAdvancedOptions(); + + // Create the Interface camera... + uint32 dwWidth = 640; + uint32 dwHeight = 480; + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &dwWidth, &dwHeight); + + ObjectCreateStruct theStruct; + INIT_OBJECTCREATESTRUCT(theStruct); + + theStruct.m_ObjectType = OT_CAMERA; + + m_hInterfaceCamera = g_pLTClient->CreateObject(&theStruct); + _ASSERT(m_hInterfaceCamera); + + g_pLTClient->SetCameraRect(m_hInterfaceCamera, LTFALSE, 0, 0, dwWidth, dwHeight); + g_pLTClient->SetCameraFOV(m_hInterfaceCamera, DEG2RAD(g_vtInterfaceFOVX.GetFloat()), DEG2RAD(g_vtInterfaceFOVY.GetFloat())); + + // read in the settings + m_Settings.Init (g_pLTClient, g_pGameClientShell); + + + if (!g_pLayoutMgr || !g_pLayoutMgr->Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize LayoutMgr!"); + return LTFALSE; + } + hBackColor = g_pLayoutMgr->GetBackColor(); + + if (!m_InterfaceResMgr.Init()) + { + // If we couldn't init, something critical must have happened (like no render dlls) + + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize InterfaceResMgr!"); + return LTFALSE; + } + + if (!GetScreenMgr( )->Init()) + { + // If we couldn't init, something critical must have happened + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize ScreenMgr!"); + return LTFALSE; + } + + if (!m_MenuMgr.Init()) + { + // If we couldn't init, something critical must have happened + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize MenuMgr!"); + return LTFALSE; + } + + + + m_ClientInfo.Init(); + + if (!GetPlayerStats( )->Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize Player Stats!"); + return LTFALSE; + } + if (!GetHUDMgr()->Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CInterfaceMgr::Init(): Could not initialize HUDMgr!"); + return LTFALSE; + } + + g_pPaused->Init(); + + m_PopupText.Init(); + m_WeaponChooser.Init(); + m_AmmoChooser.Init(); + + + m_CursorPos.x = 0; + m_CursorPos.y = 0; + + g_fFovXTan = (float)tan(DEG2RAD(g_vtInterfaceFOVX.GetFloat())/2); + g_fFovYTan = (float)tan(DEG2RAD(g_vtInterfaceFOVY.GetFloat())/2); + + m_MessageBox.Init(); + m_FullScreenTint.Init(); + + if (!m_PerformanceMgr.Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CPerformanceMgr::Init(): Could not initialize PerformanceMgr!"); + m_PerformanceMgr.Term(); + return LTFALSE; + } + + + if (!m_ProfileMgr.Init()) + { + g_pLTClient->ShutdownWithMessage("ERROR in CProfileMgr::Init(): Could not initialize ProfileMgr!"); + m_ProfileMgr.Term(); + return LTFALSE; + } + + + // Create the surface used for making letterboxed cinematics... + LTRect rcSrc; + rcSrc.Init(0, 0, 2, 2); + HLTCOLOR hTransColor = g_pLTClient->SetupColor1(1.0f, 1.0f, 1.0f, LTTRUE); + + m_hLetterBoxSurface = g_pLTClient->CreateSurface(2, 2); + + g_pLTClient->SetSurfaceAlpha(m_hLetterBoxSurface, 0.0f); + g_pLTClient->FillRect(m_hLetterBoxSurface, &rcSrc, kBlack); + g_pLTClient->OptimizeSurface(m_hLetterBoxSurface, hTransColor); + + if (!m_InterfaceFXMgr.Init(g_pLTClient,LTFALSE)) + { + g_pLTClient->ShutdownWithMessage("ERROR in CClientFXMgr::Init(): Could not initialize interface FX mgr!"); + m_InterfaceFXMgr.Term(); + return LTFALSE; + } + m_InterfaceFXMgr.SetCamera(m_hInterfaceCamera); + + m_szMouseFXName[0] = 0; + m_szSelectFXName[0] = 0; + + // Initialize the interface timers. + m_RedInterfaceTimer.Init( g_pLayoutMgr->GetInt("Miscellaneous","Team1TimerFont"), + (uint8)g_pLayoutMgr->GetInt("Miscellaneous","Team1TimerSize"), + g_pLayoutMgr->GetPoint("Miscellaneous","Team1TimerPos"), + g_pLayoutMgr->GetVector("Miscellaneous","Team1TimerColor"), CUI_HALIGN_CENTER); + m_BlueInterfaceTimer.Init( g_pLayoutMgr->GetInt("Miscellaneous","Team2TimerFont"), + (uint8)g_pLayoutMgr->GetInt("Miscellaneous","Team2TimerSize"), + g_pLayoutMgr->GetPoint("Miscellaneous","Team2TimerPos"), + g_pLayoutMgr->GetVector("Miscellaneous","Team2TimerColor"), CUI_HALIGN_CENTER); + m_InterfaceTimer.Init( g_pLayoutMgr->GetInt("Miscellaneous","TimerFont"), + (uint8)g_pLayoutMgr->GetInt("Miscellaneous","TimerSize"), + g_pLayoutMgr->GetPoint("Miscellaneous","TimerPos"), + g_pLayoutMgr->GetVector("Miscellaneous","TimerColor"), CUI_HALIGN_CENTER); + + IGameSpyPatchInfo::StartupInfo startupInfo; +#ifdef _MPDEMO + startupInfo.m_eGameSKU = eGameSKU_ContractJack_MPDemo; +#elif defined(_SPDEMO) + startupInfo.m_eGameSKU = eGameSKU_ContractJack_SPDemo; +#elif defined (_PRDEMO) + startupInfo.m_eGameSKU = eGameSKU_ContractJack_PRDemo; +#else + startupInfo.m_eGameSKU = eGameSKU_ContractJack_Retail; +#endif + startupInfo.m_sVersion = g_pVersionMgr->GetPatchVersion( ); + startupInfo.m_nPatchInfoDistributionId = atoi( LoadTempString( IDS_NETWORK_DISTRIBUTIONID )); + m_pGameSpyPatchInfo = IGameSpyPatchInfo::Create( startupInfo ); + if( m_pGameSpyPatchInfo ) + { + m_pGameSpyPatchInfo->RequestPatchInfo( ); + } + + // Consider ourselves initialized. + m_bInitialized = true; + + return LTTRUE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Term() +// +// PURPOSE: Term the mgr +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::Term() +{ + // Turn off the loading screen if it's currently up + if (m_LoadingScreen.IsActive()) + m_LoadingScreen.Hide(); + + if (m_hGamePausedSurface) + { + g_pInterfaceResMgr->FreeSharedSurface(m_hGamePausedSurface); + m_hGamePausedSurface = LTNULL; + } + + if (m_hInterfaceCamera) + { + g_pLTClient->RemoveObject(m_hInterfaceCamera); + m_hInterfaceCamera = LTNULL; + } + + //make sure that the interface manager isn't still holding onto a reference + m_InterfaceFXMgr.SetCamera(NULL); + + // ABM TODO term the subroutinemgr and ratingsmgr + + GetScreenMgr( )->Term(); + m_MenuMgr.Term(); + if (g_pLayoutMgr) + g_pLayoutMgr->Term(); + GetPlayerStats( )->Term(); + GetHUDMgr()->Term(); + m_WeaponChooser.Term(); + m_AmmoChooser.Term(); + m_InterfaceResMgr.Term(); + + m_MessageBox.Term(); + m_FullScreenTint.Term(); + m_PopupText.Term(); + m_Credits.Term(); + + m_CursorMgr.Term(); + + m_ScreenSpriteMgr.Term(); + + if ((m_dwOrignallyEnabled & AO_SOUND) && !(m_dwAdvancedOptions & AO_SOUND)) + { + g_pLTClient->RunConsoleString("SoundEnable 1"); + } + + if ((m_dwOrignallyEnabled & AO_MUSIC) && !(m_dwAdvancedOptions & AO_MUSIC)) + { + g_pLTClient->RunConsoleString("MusicEnable 1"); + } + + if (m_hScubaSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hScubaSound); + m_hScubaSound = LTNULL; + } + + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSound); + m_hSound = LTNULL; + } + + // Unititialized. + m_bInitialized = false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnEnterWorld() +// +// PURPOSE: Handle entering new world +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::OnEnterWorld(LTBOOL bRestoringGame) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + GetPlayerStats( )->OnEnterWorld(bRestoringGame); + + // Update every HUD element so they display accurate info + GetHUDMgr()->QueueUpdate( kHUDAll ); + + GetMenuMgr()->EnableMenus(); +// GetMenu(MENU_ID_MISSION)->Enable(g_pGameClientShell->GetGameType() != eGameTypeDeathmatch); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnExitWorld() +// +// PURPOSE: Handle exiting a world +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::OnExitWorld() +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + GetPlayerStats( )->OnExitWorld(); +/* + g_pMissionText->Clear(); + g_pChatInput->Show(LTFALSE, LTFALSE); + g_pSubtitles->Clear(); +*/ + m_Credits.Term(); + m_PopupText.Close(); + m_InterfaceTimer.SetTime(0.0f,false); + m_BlueInterfaceTimer.SetTime(0.0f,false); + m_RedInterfaceTimer.SetTime(0.0f,false); + g_pBombTarget->SetTimer( 0, 0.0f, false ); + g_pBombTarget->SetTimer( 1, 0.0f, false ); + g_pBombTarget->SetTimer( 2, 0.0f, false ); + m_FullScreenTint.TurnOn(false); + + g_pDisplayMeter->SetValue( 0 ); + + if (m_AmmoChooser.IsOpen()) + { + m_AmmoChooser.Close(); + } + if (m_WeaponChooser.IsOpen()) + { + m_WeaponChooser.Close(); + } + + + for (int i =0; i < NUM_OVERLAY_MASKS; i++) + { + if (m_hOverlays[i]) + g_pLTClient->RemoveObject(m_hOverlays[i]); + + m_hOverlays[i] = LTNULL; + } + + m_bFadeInitialized = LTFALSE; + + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreUpdate() +// +// PURPOSE: Handle pre-updates +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreUpdate() +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // Don't clear the screen if the loading screen's up + if (m_LoadingScreen.IsVisible()) + return LTTRUE; + + if (m_bClearScreenAlways) + { + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + } + else if (m_nClearScreenCount) + { + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + m_nClearScreenCount--; + } + else + { + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_RENDER, 0); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostUpdate() +// +// PURPOSE: Handle post-updates (return LTTRUE to FLIP +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostUpdate() +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + if (m_eGameState != GS_LOADINGLEVEL) + { + if (!m_bSuppressNextFlip) + g_pLTClient->FlipScreen(0); + else + m_bSuppressNextFlip = false; + } + + m_CursorMgr.CheckForReinit(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Update() +// +// PURPOSE: Handle updating the interface +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::Update() +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // Update based on the game state... + LTBOOL bHandled = LTFALSE; + switch (m_eGameState) + { + case GS_PLAYING: + { + UpdatePlayingState(); + bHandled = LTFALSE; // Allow further processing + } + break; + + case GS_MENU: + { + UpdateMenuState(); + bHandled = LTFALSE; // Allow further processing + } + break; + + case GS_POPUP: + { + UpdatePopupState(); + bHandled = LTFALSE; // Allow further processing + } + break; + + case GS_EXITINGLEVEL: + { + UpdateExitingLevelState(); + bHandled = LTFALSE; + } + break; + + case GS_LOADINGLEVEL: + { + UpdateLoadingLevelState(); + bHandled = LTTRUE; + } + break; + + case GS_SCREEN : + { + UpdateScreenState(); + bHandled = LTTRUE; + } + break; + + case GS_PAUSED: + { + UpdatePausedState(); + bHandled = LTTRUE; + } + break; + + case GS_SPLASHSCREEN: + { + UpdateSplashScreenState(); + bHandled = LTTRUE; + } + break; + + case GS_MOVIE: + { + UpdateMovieState(); + bHandled = LTTRUE; + } + break; + + case GS_DEMOSCREEN: + { + UpdateDemoScreenState(); + bHandled = LTTRUE; + } + break; + + + } + + //in playing state, message box is drawn in InterfaceMgr::Draw(), + // otherwise draw it here + if (bHandled) + { + if (m_MessageBox.IsVisible()) + { + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + m_MessageBox.Draw(); + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + } + m_CursorMgr.Update(); + } + + m_ScreenSpriteMgr.Update(); + + return bHandled; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::DrawSFX() +// +// PURPOSE: Renders the currently active special effects +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::DrawSFX() +{ + float fApplySun = g_vtModelApplySun.GetFloat(); + g_vtModelApplySun.SetFloat(0.0f); + UpdateInterfaceSFX(); + g_vtModelApplySun.SetFloat(fApplySun); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateScreenState() +// +// PURPOSE: Update screen state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateScreenState() +{ + if (GetScreenMgr( )->GetCurrentScreenID() == SCREEN_ID_NONE) + { + SwitchToScreen(SCREEN_ID_MAIN); + } + + // [KLS 9/2/02] FogEnabled is cleared in PreScreenState, however it is possible for + // it to get set to 1 while in the screen state. This will ensure that we never + // render the screen state with fog enabled. PostScreenState will return FogEnabled + // to whatever it was before the screen state was entered. + WriteConsoleInt("FogEnable", 0); + + + if (!GetScreenMgr( )->UpdateInterfaceSFX()) + m_bSuppressNextFlip = true; + else + { + g_pLTClient->Start3D(); + + DrawSFX(); + + g_pLTClient->StartOptimized2D(); + m_InterfaceResMgr.DrawScreen(); + UpdateScreenFade(); + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + } + + // Update the patch info. + if( m_pGameSpyPatchInfo ) + { + UpdatePatchInfo( ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdatePatchInfo() +// +// PURPOSE: Checks for patch information. +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdatePatchInfo() +{ + // Are we still checking for patches. + if( !m_pGameSpyPatchInfo ) + return; + + switch( m_pGameSpyPatchInfo->GetPatchInfoStatus( )) + { + // Still processing, don't do anything for now. + case IGameSpyPatchInfo::eBrowserStatus_Processing: + break; + // We have the results. + case IGameSpyPatchInfo::eBrowserStatus_Complete: + { + // Get the results. + IGameSpyPatchInfo::PatchInfoResults patchInfoResults; + if( m_pGameSpyPatchInfo->GetPatchInfoResults( patchInfoResults ) && + patchInfoResults.m_bNewVersionAvailable && !m_MessageBox.IsVisible( )) + { + m_sPatchUrl = patchInfoResults.m_sURL; + + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = GetPatchCallBack; + mb.pData = this; + mb.nFlags = eMBFlag_IgnoreESC; + ShowMessageBox(IDS_NEW_VERSION,&mb); + } + + // Don't need the patch update object anymore. + IGameSpyPatchInfo::Delete( m_pGameSpyPatchInfo ); + m_pGameSpyPatchInfo = NULL; + break; + } + // Something's wrong. + case IGameSpyPatchInfo::eBrowserStatus_Idle: + case IGameSpyPatchInfo::eBrowserStatus_Error: + { + // If we're not processing or there was an error, + // just dump the pachinfo object. We'll check + // next time they launch. + IGameSpyPatchInfo::Delete( m_pGameSpyPatchInfo ); + m_pGameSpyPatchInfo = NULL; + break; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: GetPatchCallBack +// +// PURPOSE: Callback for the Getpatch messagebox... +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::GetPatchCallBack( LTBOOL bReturn, void *pData ) +{ + CInterfaceMgr* pInterfaceMgr = reinterpret_cast< CInterfaceMgr* >( pData ); + + if( bReturn ) + { + // Launch the updater. + g_pGameClientShell->LaunchPatchUpdate( pInterfaceMgr->m_sPatchUrl.c_str( )); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdatePlayingState() +// +// PURPOSE: Update playing state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdatePlayingState() +{ + GetPlayerStats()->Update(); + + // Update auto chooser switching... + m_WeaponChooser.Update(); + m_AmmoChooser.Update(); + + // Update the player stats... + GetHUDMgr()->Update(); + g_pPaused->Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateMenuState() +// +// PURPOSE: Update menu state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateMenuState() +{ + if (!m_MenuMgr.GetCurrentMenu()) + { + SwitchToMenu(MENU_ID_SYSTEM); + } + + m_MenuMgr.Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdatePopupState() +// +// PURPOSE: Update dialogue state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdatePopupState() +{ + if (m_PopupText.IsVisible()) + { + m_PopupText.Update(); + } + else + { + ChangeState(m_eLastGameState); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateExitingLevelState() +// +// PURPOSE: Update exiting level state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateExitingLevelState() +{ + // Update the screen fade. + UpdateScreenFade(); + + // Check if screen is done fading out or is fading in at all. + if( ScreenFadedOut( ) || FadingScreenIn( )) + { + if (g_pMissionMgr->IsExitingMission()) + { + switch( g_pGameClientShell->GetGameType( )) + { + case eGameTypeCooperative: + SwitchToScreen(SCREEN_ID_END_COOP_MISSION); + break; + case eGameTypeDemolition: + case eGameTypeTeamDeathmatch: + case eGameTypeDeathmatch: + case eGameTypeDoomsDay: + SwitchToScreen(SCREEN_ID_END_DM_MISSION); + break; + default: + SwitchToScreen(SCREEN_ID_END_MISSION); + break; + } + } + else + { + switch( g_pGameClientShell->GetGameType( )) + { + case eGameTypeDemolition: + case eGameTypeTeamDeathmatch: + case eGameTypeDeathmatch: + case eGameTypeDoomsDay: + { + SwitchToScreen(SCREEN_ID_END_DM_MISSION); + } + break; + + case eGameTypeCooperative: + default: + { + CScreenPreload *pPreload = (CScreenPreload *) (GetScreenMgr( )->GetScreenFromID(SCREEN_ID_PRELOAD)); + if (pPreload) + { + pPreload->SetWaitingToExit(true); + SwitchToScreen(SCREEN_ID_PRELOAD); + + } + else + { + g_pMissionMgr->FinishExitLevel(); + } + } + break; + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateLoadingLevelState() +// +// PURPOSE: Update loading level state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateLoadingLevelState() +{ + // Check if we just entered the world. + if (g_pPlayerMgr->IsPlayerInWorld()) + { + // We may have been told to exit the world while we were loading the last one. + // Ignore the fact that we entered the world in this case. + if( g_pMissionMgr->IsExitingLevel( )) + { + return; + } + + // Make sure the loading screen isn't busy + m_LoadingScreen.Pause(); + // Let the game client shell do stuff that's time consuming so we're not stuck on a black screen + g_pGameClientShell->PostLevelLoadFirstUpdate(); + // Turn off the loading screen + m_LoadingScreen.Hide(); + + + if (IsTeamGameType() && !g_pClientMultiplayerMgr->HasSelectedTeam()) + { + SwitchToScreen(SCREEN_ID_PLAYER_TEAM); + } + else if (m_LoadingScreen.NeedsPostLoadScreen() && GetConsoleInt("LoadScreenWait",1) ) + { + SwitchToScreen( m_ePostLoadScreenID ); + } + else + { + // Tell the client we're ready to play. + g_pGameClientShell->SendClientLoadedMessage( ); + + ChangeState(GS_PLAYING); + } + } + else if ((m_bLoadFailed) || (g_pLTClient->IsConnected() && IsKeyDown(VK_ESCAPE))) + { + m_bLoadFailed = LTFALSE; + m_LoadingScreen.Hide(); + + // We joined using the command line, we need to visit the main screen before + // any other screen, since we didn't go through the normal screen + // progression. + if( GetCommandLineJoin( )) + { + SwitchToScreen( SCREEN_ID_MAIN ); + } + else + { + SwitchToScreen(m_eLoadFailedScreen); + } + + MBCreate mb; + if( m_nLoadFailedMsgId == ( uint32 )-1 ) + m_nLoadFailedMsgId = IDS_LOADGAMEFAILED; + + ShowMessageBox( m_nLoadFailedMsgId, &mb ); + } + else if (!m_LoadingScreen.IsActive() && m_LoadingScreen.IsVisible()) + { + // Update the loading screen if it's not active, but it is visible + // so we can see the console on failure conditions. + m_LoadingScreen.Update(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::HideLoadScreen() +// +// PURPOSE: Called externally to hide the loading screen +// +// ----------------------------------------------------------------------- // +void CInterfaceMgr::HideLoadScreen() +{ + m_LoadingScreen.Hide(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdatePausedState() +// +// PURPOSE: Update paused state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdatePausedState() +{ + g_pLTClient->Start3D(); + + UpdateInterfaceSFX(); + + g_pLTClient->StartOptimized2D(); + + LTRect rcFull(0,0,g_pInterfaceResMgr->GetScreenWidth()-1,g_pInterfaceResMgr->GetScreenHeight()-1); + g_pLTClient->FillRect(g_pLTClient->GetScreenSurface(),&rcFull,hBackColor); + + + if (m_hGamePausedSurface) + { + g_pLTClient->ScaleSurfaceToSurface(g_pLTClient->GetScreenSurface(), m_hGamePausedSurface, &rcFull, LTNULL); + } + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateSplashScreenState() +// +// PURPOSE: Update splash screen state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateSplashScreenState() +{ + g_fSplashSndDuration -= g_pGameClientShell->GetFrameTime(); + + if(m_hSplashSound) + { + if((g_fSplashSndDuration <= 0.0f) || g_pLTClient->IsDone(m_hSplashSound)) + { + DebugCPrint(1,"Current Time: %.4f", g_pLTClient->GetTime()); + DebugCPrint(1,"Splash sound done playing..."); + + g_pLTClient->SoundMgr()->KillSound(m_hSplashSound); + m_hSplashSound = LTNULL; + } + } + + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + uint32 nWidth = 0; + uint32 nHeight = 0; + + g_pLTClient->GetSurfaceDims(hScreen, &nWidth, &nHeight); + + LTRect rcDst; + rcDst.Init(0, 0, nWidth, nHeight); + + g_pLTClient->GetSurfaceDims(g_hSplash, &nWidth, &nHeight); + + LTRect rcSrc; + rcSrc.Init(0, 0, nWidth, nHeight); + + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + + g_pLTClient->ScaleSurfaceToSurface(hScreen, g_hSplash, &rcDst, &rcSrc); + + UpdateScreenFade(); + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + + static LTBOOL bDidFadeOut = LTFALSE; + + if (!m_bScreenFade) + { + if (!bDidFadeOut && !m_hSplashSound) + { + // [KLS 7/28/02] See if it is time to start the fade out... + if (!g_SplashScreenTimer.On()) + { + g_SplashScreenTimer.Start(g_vtSplashScreenTime.GetFloat()); + } + else if (g_SplashScreenTimer.Stopped()) + { + StartScreenFadeOut(g_vtSplashScreenFadeOut.GetFloat()); + bDidFadeOut = LTTRUE; + } + } + } + else if (bDidFadeOut && m_fCurFadeTime <= 0.0f) + { + EndSplashScreen( ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::EndSplashScreen +// +// PURPOSE: Ends the splash screen. +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::EndSplashScreen() +{ + // If the user didn't start a join from the command line, proceed + // like normal to the movies. + if( !GetCommandLineJoin( )) + { + ChangeState(GS_MOVIE); + return; + } + + // If user is joining a mp game from the command line, + // start the connection here. + char szIP[256] = ""; + LTStrCpy( szIP, GetConsoleTempString( "join", "" ), ARRAY_LEN( szIP )); + + char szPassword[256]; + LTStrCpy( szPassword, GetConsoleTempString( "password", "" ), ARRAY_LEN( szPassword )); + + char szGameType[256] = ""; + LTStrCpy( szGameType, GetConsoleTempString( "gametype", "" ), ARRAY_LEN( szGameType )); + + if( szGameType[0] == 0 ) + { + LTStrCpy( szGameType, GameTypeToString( eGameTypeDeathmatch ), ARRAY_LEN( szGameType )); + } + + GameType eGameType = GameStringTypeToGameType( szGameType ); + g_pGameClientShell->SetGameType( eGameType ); + + // Check if we know this is a public server and better try nat negotiations. + char szPublicServer[256] = ""; + LTStrCpy( szPublicServer, GetConsoleTempString( "publicserver", "1" ), ARRAY_LEN( szPublicServer )); + bool bDoNatNegotiations = !!atoi( szPublicServer ); + + if( !szIP[0] || + !g_pClientMultiplayerMgr->SetupClient( NULL, szPassword, bDoNatNegotiations, true, szIP, szIP ) || + !g_pMissionMgr->StartGameAsClient( )) + { + // drop them into the join menu + LoadFailed( SCREEN_ID_MAIN ); + + MBCreate mb; + ShowMessageBox(IDS_CANT_CONNECT_TO_SERVER, &mb); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateMovieState() +// +// PURPOSE: Update movie state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateMovieState() +{ + ILTVideoMgr* pVideoMgr = g_pLTClient->VideoMgr(); + if (!pVideoMgr || !m_hMovie) + { + SwitchToScreen(SCREEN_ID_MAIN); + return; + } + + // Update and check if we're finished... + + if (pVideoMgr->UpdateVideo(m_hMovie) != LT_OK || + pVideoMgr->GetVideoStatus(m_hMovie) == LT_FINISHED) + { + NextMovie(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateDemoScreenState() +// +// PURPOSE: Update demo screen state +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateDemoScreenState() +{ + if (m_bSeenDemoScreens) + { + if (m_bQuitAfterDemoScreens) + { + g_pLTClient->Shutdown(); + } + else + { + SwitchToScreen(SCREEN_ID_MAIN); + } + return; + } + + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + uint32 nWidth = 0; + uint32 nHeight = 0; + + g_pLTClient->GetSurfaceDims(hScreen, &nWidth, &nHeight); + + LTRect rcDst; + rcDst.Init(0, 0, nWidth, nHeight); + + g_pLTClient->GetSurfaceDims(g_hDemo, &nWidth, &nHeight); + + LTRect rcSrc; + rcSrc.Init(0, 0, nWidth, nHeight); + + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + + if (rcSrc.right > rcDst.right) + { + g_pLTClient->ScaleSurfaceToSurface(hScreen, g_hDemo, &rcDst, &rcSrc); + } + else + { + int xDest = (rcDst.right - (int)nWidth) / 2; + int yDest = (rcDst.bottom - (int)nHeight) / 2; + g_pLTClient->DrawSurfaceToSurface(hScreen, g_hDemo, &rcSrc, xDest, yDest); + } + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::SetupMusic() +// +// PURPOSE: Handles changes to the state of the menu / level music +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::SetupMusic() +{ + CMusic* pMusic = g_pGameClientShell->GetMusic(); + if (!pMusic) return LTFALSE; + + // Stop the music if it isn't enabled... + + if (!m_Settings.MusicEnabled() || !GetConsoleInt("MusicActive",0)) + { + pMusic->Stop(); + return LTTRUE; + } + + + + // Use the current level's music if we have a level loaded... + + if ( g_pLTClient->IsConnected() ) + { + // Re-initialize music if necessary... + + if (!pMusic->IsInitialized()) + { + if (!pMusic->Init(g_pLTClient)) + { + return LTFALSE; + } + } + + g_pGameClientShell->RestoreMusic(); + + pMusic->Play(); + + return LTTRUE; + } + + + // Handle using the menu music if necessary...this should only occur if we + // aren't in a level... + + CMusicState* pMS = pMusic->GetMusicState(); + + int nIntensity = g_pLayoutMgr->GetScreenMusicIntensity(GetScreenMgr( )->GetCurrentScreenID()); + + if (pMusic->IsPlaying()) + { + if (pMS->nIntensity != nIntensity) + { + pMusic->ChangeIntensity(nIntensity); + } + return LTTRUE; + } + + // Setup the menu music... + + char szFile[128] = ""; + g_pClientButeMgr->GetInterfaceAttributeString("MenuMusicCtrlFile",szFile,sizeof(szFile)); + if (!strlen(szFile)) return LTFALSE; + + if (!pMusic->IsInitialized()) + { + if (!pMusic->Init(g_pLTClient)) + { + return LTFALSE; + } + } + + if (!pMusic->IsLevelInitialized()) + { + char szDir[128] = ""; + g_pClientButeMgr->GetInterfaceAttributeString("MenuMusicDir",szDir,sizeof(szDir)); + + if (!strlen(szDir)) + { + return LTFALSE; + } + + CMusicState MusicState; + MusicState.nIntensity = nIntensity; + strcpy(MusicState.szDirectory, szDir); + strcpy(MusicState.szControlFile, szFile); + + if (!pMusic->RestoreMusicState(MusicState)) + { + return LTFALSE; + } + } + + pMusic->Play(); + + if (pMS->nIntensity != nIntensity) + { + pMusic->ChangeIntensity(nIntensity); + } + + m_ProfileMgr.ImplementMusicVolume(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::StartMenuMusic +// +// PURPOSE: Starts the menu music. +// +// ----------------------------------------------------------------------- // + +bool CInterfaceMgr::StartMenuMusic() +{ + CMusic* pMusic = g_pGameClientShell->GetMusic(); + if( !pMusic) + return false; + + pMusic->Stop(); + + // Don't restart the music if it isn't enabled... + if (!m_Settings.MusicEnabled() || !GetConsoleInt("MusicActive",0)) + { + return true; + } + + // Setup the menu music... + + char szFile[128] = ""; + g_pClientButeMgr->GetInterfaceAttributeString("MenuMusicCtrlFile",szFile,sizeof(szFile)); + if (!strlen(szFile)) + return LTFALSE; + + if (!pMusic->IsInitialized()) + { + if (!pMusic->Init(g_pLTClient)) + { + return LTFALSE; + } + } + + char szDir[128] = ""; + g_pClientButeMgr->GetInterfaceAttributeString("MenuMusicDir",szDir,sizeof(szDir)); + + if (!strlen(szDir)) + { + return LTFALSE; + } + + CMusicState MusicState; + MusicState.nIntensity = g_pLayoutMgr->GetScreenMusicIntensity(GetScreenMgr( )->GetCurrentScreenID());; + strcpy(MusicState.szDirectory, szDir); + strcpy(MusicState.szControlFile, szFile); + + if (!pMusic->RestoreMusicState(MusicState)) + { + return LTFALSE; + } + + if (!pMusic->IsPlaying()) + { + pMusic->Play(); + } + + + pMusic->ChangeIntensity(MusicState.nIntensity); + + m_ProfileMgr.ImplementMusicVolume(); + + return true; +} + +static uint8 GetChassisPieceButeIndex( char const* pszName ) +{ + ChassisPieceBute* pChassisPieceBute = ChassisButeMgr::Instance( ).GetChassisPieceBute( pszName ); + if( !pChassisPieceBute ) + return -1; + + return pChassisPieceBute->m_nIndex; +} + +static uint8 ConvertChassisPieceButeIndexToDDIndex( uint8 nChassisPieceButeIndex ) +{ + static const uint8 kTransmitter = GetChassisPieceButeIndex( "Doomsday_transmitter" ); + static const uint8 kBattery = GetChassisPieceButeIndex( "Doomsday_batteries" ); + static const uint8 kCore = GetChassisPieceButeIndex( "Doomsday_core" ); + + if( nChassisPieceButeIndex == kTransmitter ) + return 0; + else if( nChassisPieceButeIndex == kBattery ) + return 1; + else if( nChassisPieceButeIndex == kCore ) + return 2; + + return 0; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnMessage() +// +// PURPOSE: Handle interface messages +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnMessage(uint8 messageID, ILTMessage_Read *pMsg) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + { + return LTFALSE; + } + + switch(messageID) + { + case MID_PLAYER_INFOCHANGE : + { + UpdatePlayerStats( *pMsg ); + + return LTTRUE; + } + break; + + case MID_PLAYER_SKILLS : + { + GetPlayerStats( )->UpdateSkills(pMsg); + if (m_eGameState == GS_MENU) + { + m_MenuMgr.GetCurrentMenu()->OnCommand(MC_UPDATE,0,0); + } + return LTTRUE; + } + break; + + case MID_PLAYER_SUMMARY : + { + uint32 nID = pMsg->Readuint32(); + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + + if (!IsMultiplayerGame() || nLocalID == nID) + { + GetPlayerStats( )->UpdateMissionStats(pMsg); + } + else + { + CLIENT_INFO *pClient; + + if(pClient = m_ClientInfo.GetClientByID(nID)) + pClient->sStats.ReadData(pMsg); + + } + +// if (m_eGameState == GS_MENU) +// m_MenuMgr.GetCurrentMenu()->OnCommand(MC_UPDATE,0,0); + return LTTRUE; + } + break; + + case MID_PLAYER_SCORE : + { + uint32 nID = pMsg->Readuint32(); + CLIENT_INFO *pClient; + + if(pClient = m_ClientInfo.GetClientByID(nID)) + { + pClient->sScore.ReadData(pMsg); + m_ClientInfo.UpdateClientSort(pClient); + } + + + return LTTRUE; + } + break; + + + case MID_GEAR_PICKEDUP : + { + uint8 nGearId = pMsg->Readuint8(); + bool bPickedUp = pMsg->Readbool(); + bool bActivatingPickup = pMsg->Readbool( ); + + g_pGameClientShell->HandleGearPickup(nGearId, bPickedUp, bActivatingPickup); + + if (bPickedUp) + { + GetPlayerStats( )->UpdateGear(nGearId); + } + return LTTRUE; + } + break; + + case MID_INTEL_PICKEDUP : + { + // [KLS 6/20/02] - Removed due to Craig request + // g_pChatMsgs->AddMessage(LoadTempString(IDS_INTELLIGENCE)); + + uint32 nTextId = pMsg->Readuint32(); + uint8 nPopupId = pMsg->Readuint8(); + LTBOOL bIsIntel = (LTBOOL)pMsg->Readuint8(); + LTBOOL bShow = (LTBOOL)pMsg->Readuint8(); + LTBOOL bAdd = (LTBOOL)pMsg->Readuint8(); + + if (bShow) + { + ShowPopup(nTextId, nPopupId, true); + } + + if (bAdd) + { + GetPlayerStats( )->UpdateIntel(nTextId,nPopupId,bIsIntel); + } + } + break; + + + case MID_DISPLAY_METER : + { + uint8 val = pMsg->Readuint8(); + g_pDisplayMeter->SetValue( val ); + g_pHUDMgr->QueueUpdate( kHUDDisplayMeter ); + return LTTRUE; + } + break; + + case MID_DECISION : + { + g_pDecision->Show(pMsg); + return LTTRUE; + } + break; + + case MID_PLAYER_CONNECTED: + { + char szName[MAX_PLAYER_NAME]; + pMsg->ReadString( szName, ARRAY_LEN( szName )); + uint32 nID = (uint32) pMsg->Readuint32(); + DebugCPrint(0,"MID_PLAYER_CONNECTED : Client %d (%s)", nID, szName); + m_ClientInfo.PlayerConnected( szName, nID ); + return LTTRUE; + } + break; + + case MID_PLAYER_TEAM : + { + + g_pChatMsgs->AddMessage(LoadTempString(IDS_IWILLCHANGE)); + return LTTRUE; + } + break; + + + case MID_PLAYER_INFO: + { + // Only do something if we're in multiplayer... + + if (!IsMultiplayerGame()) break; + + char szName[MAX_PLAYER_NAME]; + pMsg->ReadString( szName, ARRAY_LEN( szName )); + uint32 nID = pMsg->Readuint32(); + HOBJECT hObj = pMsg->ReadObject(); + ModelId eModelId = (ModelId)pMsg->Readuint8(); + uint8 nTeamId = pMsg->Readuint8(); + bool bIsAdmin = pMsg->Readbool( ); + uint8 nInfoType = pMsg->Readuint8(); + + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + + bool bChangedTeams = false; + uint8 nOldTeam = INVALID_TEAM; + if (IsTeamGameType()) + { + CLIENT_INFO* pOldCI = m_ClientInfo.GetClientByID(nID,false); + if (pOldCI && pOldCI->nTeamID != nTeamId) + { + bChangedTeams = true; + nOldTeam = pOldCI->nTeamID; + } + } + + switch (nInfoType) + { + case MID_PI_JOIN: + { + //new player entering + DebugCPrint(0,"MID_PLAYER_INFO:MID_PI_JOIN - Adding client %d (%s)", nID, szName); + m_ClientInfo.AddClient(szName, bIsAdmin, nID, nTeamId); + if( nLocalID != nID ) + g_pGameClientShell->CSPrint(FormatTempString(IDS_JOINEDGAME, szName)); + } break; + case MID_PI_EXIST: + { + //we are joining and this is info about a player already in the game + DebugCPrint(0,"MID_PLAYER_INFO:MID_PI_EXIST - Adding client %d (%s)", nID, szName); + m_ClientInfo.AddClient(szName, bIsAdmin, nID, nTeamId); + } break; + case MID_PI_UPDATE: + { + //this is an update about a player already in the game + DebugCPrint(1,"MID_PLAYER_INFO:MID_PI_UPDATE - Updating client %d (%s)", nID, szName); + m_ClientInfo.UpdateClient(szName, bIsAdmin, nID, nTeamId); + + //if this is a team game, and this is our player's update, update our team info + if (IsTeamGameType() ) + { + if(nLocalID == nID) + { + g_pClientMultiplayerMgr->SelectTeam(nTeamId,false); + } + + //if we changed teams, we have to clean up our radar + if (bChangedTeams) + { + HandlePlayerTeamChange(); + + if (nTeamId != INVALID_TEAM && nOldTeam != INVALID_TEAM) + { + char szTmp[128] = ""; + char szTeam[32] = ""; + static uint32 dwTeamID[] = { IDS_TEAM_1, IDS_TEAM_2, }; + LoadString( dwTeamID[nTeamId], szTeam, ARRAY_LEN(szTeam) ); + + if(nLocalID == nID) + { + FormatString(IDS_ICHANGED, szTmp,sizeof(szTmp), szTeam); + } + else + { + FormatString(IDS_HECHANGED, szTmp,sizeof(szTmp), szName, szTeam); + } + + g_pChatMsgs->AddMessage(szTmp); + + } + + } + } + + } break; + }; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (psfxMgr) + { + CCharacterFX* pCFX = (CCharacterFX*)psfxMgr->FindSpecialFX(SFX_CHARACTER_ID, hObj); + if (pCFX) + { + pCFX->ChangeModel(eModelId); + + if( pCFX->m_cs.bRadarVisible ) + { + if (bChangedTeams) + g_pRadar->RemovePlayer(pCFX->GetServerObj()); + g_pRadar->AddPlayer( pCFX->GetServerObj(), pCFX->m_cs.nClientID ); + } + } + } + + + return LTTRUE; + } + break; + + case MID_TEAM_INFO: + { + CTeamMgr::Instance().UpdateTeam(pMsg); + } + break; + + case MID_PLAYER_REMOVED: + { + // Only do something if we're in multiplayer... + + if (!IsMultiplayerGame()) break; + + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + uint32 nID = pMsg->Readuint32(); + + //if it's us we know we're leaving + if (nID == nLocalID) + return LTTRUE; + + //if we don't know who it is, let's not display our ignorance... + if (!m_ClientInfo.GetClientByID(nID,false)) + return LTTRUE; + + g_pGameClientShell->CSPrint(FormatTempString(IDS_LEFTGAME, m_ClientInfo.GetPlayerName(nID))); + + m_ClientInfo.RemoveClient(nID); + + return LTTRUE; + } + break; + + case MID_PINGTIMES: + { + while(1) + { + uint16 id, ping; + CLIENT_INFO *pClient; + + id = pMsg->Readuint16(); + if(id == 0xFFFF) + break; + + ping = pMsg->Readuint16(); + if(pClient = m_ClientInfo.GetClientByID(id,false)) + pClient->nPing = ping; + } + + return LTTRUE; + } + break; + + case MID_PLAYER_SCORED: + { + //Only do something if we're in multiplayer... + + if (!IsMultiplayerGame()) break; + + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID(&nLocalID); + + bool bFragged = pMsg->Readbool( ); + uint32 nVictim = pMsg->Readuint32(); + uint32 nScorer = pMsg->Readuint32(); + + CLIENT_INFO *pVictim = m_ClientInfo.GetClientByID(nVictim); + CLIENT_INFO *pScorer = m_ClientInfo.GetClientByID(nScorer); + + char szTmp[128] = ""; + if (nVictim == nLocalID) + { + // Scored againsts self. + if (nVictim == nScorer) + { + if( bFragged ) + FormatString(IDS_KILLEDMYSELF,szTmp,sizeof(szTmp)); + else + FormatString(IDS_TAGGEDMYSELF,szTmp,sizeof(szTmp)); + } + // Scored by ai. + else if( nScorer == -1 ) + { + if( bFragged ) + FormatString(IDS_IWASKILLED,szTmp,sizeof(szTmp)); + } + // Killed by player. + else + { + if( bFragged ) + FormatString(IDS_HEKILLEDME, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nScorer)); + else + FormatString(IDS_HETAGGEDME, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nScorer)); + } + + g_pChatMsgs->AddMessage(szTmp); + } + else if (nScorer == nLocalID) + { + if( bFragged ) + FormatString(IDS_IKILLEDHIM, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nVictim)); + else + FormatString(IDS_ITAGGEDHIM, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nVictim)); + + g_pLTClient->CPrint(szTmp); + g_pChatMsgs->AddMessage(szTmp);//,eType); + } + else + { + if (nVictim == nScorer) + { + if( bFragged ) + FormatString(IDS_HEKILLEDHIMSELF, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName(nVictim)); + else + FormatString(IDS_HETAGGEDHIMSELF, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName(nVictim)); + } + else if( nScorer == -1 ) + { + if( bFragged ) + FormatString(IDS_HEWASKILLED, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName(nVictim)); + } + else + { + if( bFragged ) + FormatString(IDS_HEKILLEDHIM, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nScorer), m_ClientInfo.GetPlayerName (nVictim)); + else + FormatString(IDS_HETAGGEDHIM, szTmp,sizeof(szTmp), m_ClientInfo.GetPlayerName (nScorer), m_ClientInfo.GetPlayerName (nVictim)); + } + + g_pLTClient->CPrint(szTmp); + g_pChatMsgs->AddMessage(szTmp); + } + + return LTTRUE; + } + break; + + + case MID_PLAYER_MESSAGE : + case MID_PLAYER_GHOSTMESSAGE : + { + // retrieve the string from the message, play the chat sound, and display the message + + char szMessage[256]; + pMsg->ReadString(szMessage, sizeof(szMessage)); + uint32 clientID = pMsg->Readuint32(); + uint8 nTeam = pMsg->Readuint8(); + + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + + if( IsTeamGameType() && nTeam != INVALID_TEAM ) + { + CLIENT_INFO *pLocalCI = m_ClientInfo.GetLocalClient(); + if( !pLocalCI ) + return LTFALSE; + + if( pLocalCI->nTeamID != nTeam ) + return LTFALSE; + } + + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\chat.wav"); + g_pRadar->SetPlayerTalk(clientID); + + if (IsMultiplayerGame()) + { + // The dedicated server will have a ClientID of -1... + + if( clientID == -1 ) + { + g_pChatMsgs->AddMessage( szMessage, kMsgChat ); + } + else + { + + char szTemp[256]; + sprintf(szTemp,"%s : %s", m_ClientInfo.GetPlayerName(clientID), szMessage); + + if( IsTeamGameType() && nTeam != INVALID_TEAM ) + { + g_pChatMsgs->AddMessage(szTemp,kMsgTeam); + } + else + { + g_pChatMsgs->AddMessage(szTemp,kMsgChat); + } + } + } + else + { + g_pChatMsgs->AddMessage(szMessage,kMsgChat); + }; + + + return LTTRUE; + } + break; + + case MID_PLAYER_CREDITS : + { + uint8 nMsg = pMsg->Readuint8(); + switch (nMsg) + { + case 0: + m_Credits.Term(); + break; + case 1: + m_Credits.Init(); + break; + case 2: + m_Credits.Init(CM_INTRO); + break; + } + } + break; + + + case MID_PLAYER_TRANSMISSION : + { + // retrieve the string from the message, play the chat sound, and display the message + uint32 nActivePlayerClientId = pMsg->Readuint32( ); + uint32 dwId = pMsg->Readuint32(); + uint32 nSound = pMsg->Readuint32(); + uint8 nTeam = pMsg->Readuint8(); + + if( IsTeamGameType() && nTeam != INVALID_TEAM ) + { + CLIENT_INFO *pLocalCI = m_ClientInfo.GetLocalClient(); + if( !pLocalCI ) + return LTFALSE; + + if( pLocalCI->nTeamID != nTeam ) + return LTFALSE; + } + + + if (nSound) + { + char szStr[128] = ""; + g_pClientSoundMgr->GetSoundFilenameFromId("Dialogue", nSound, szStr, sizeof(szStr)); + + g_pClientSoundMgr->PlaySoundLocal(szStr,SOUNDPRIORITY_PLAYER_HIGH); + } + else + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\transmission.wav"); + } + + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + // Check if there wasn't an active player for this transmission. + if( nActivePlayerClientId == -1 || nActivePlayerClientId == nLocalID ) + { + g_pTransmission->Show(dwId); + g_pChatMsgs->AddMessage(dwId,kMsgTransmission); + } + // There was an active player with this transmission. Format it like this: + // ": ". + else + { + CString sTransmission; + sTransmission.Format( "%s: %s", m_ClientInfo.GetPlayerName( nActivePlayerClientId ), + LoadTempString( dwId )); + + g_pTransmission->Show( sTransmission ); + g_pChatMsgs->AddMessage(sTransmission,kMsgTransmission); + g_pRadar->SetPlayerTalk(nActivePlayerClientId); + + } + + return LTTRUE; + } + break; + + + case MID_PLAYER_OVERLAY : + { + // retrieve the string from the message, play the chat sound, and display the message + + uint8 nId = pMsg->Readuint8(); + bool bOn = !!pMsg->Readuint8(); + + if (nId < NUM_OVERLAY_MASKS) + { + if (bOn) + CreateOverlay((eOverlayMask)nId); + else + RemoveOverlay((eOverlayMask)nId); + return LTTRUE; + } + return LTFALSE; + } + break; + + case MID_LOAD_FAILED: + { + LoadFailed(); + return LTFALSE; + } + break; + + case MID_DOOMSDAY_MESSAGE: + { + uint8 nId = pMsg->Readuint8(); + + switch( nId ) + { + case MID_DOOMSDAY_PIECE_PICKEDUP: + case MID_DOOMSDAY_PIECE_DROPPED: + case MID_DOOMSDAY_PIECE_PLACED: + case MID_DOOMSDAY_PIECE_STOLEN: + { + // Static tables to make creating the transmission text easier... + + static uint32 dwActionID[] = { IDS_DOOMSDAY_PICKEDUP, + IDS_DOOMSDAY_DROPPED, + IDS_DOOMSDAY_PLACED, + IDS_DOOMSDAY_STOLE, }; + + + static uint32 dwPieceID[] = { IDS_DOOMSDAY_TRANSMITTER, IDS_DOOMSDAY_BATTERIES, IDS_DOOMSDAY_CORE, }; + + static uint32 dwTeamID[] = { IDS_TEAM_1, IDS_TEAM_2, }; + + static eChatMsgType eChatType[] = { kMsgBlueTeam, kMsgRedTeam }; + + struct DoomsdayActionSound + { + char const* m_pszActionSound[3]; + }; + static DoomsdayActionSound doomsdayActionSound[] = + { + // Pickedup + { + // Transmitter + "voice\\10348.wav", + // Batteries + "voice\\10352.wav", + // Core + "voice\\10344.wav", + }, + // Dropped + { + // Transmitter + "voice\\10349.wav", + // Batteries + "voice\\10353.wav", + // Core + "voice\\10345.wav", + }, + // Placed + { + // Transmitter + "voice\\10350.wav", + // Batteries + "voice\\10354.wav", + // Core + "voice\\10346.wav", + }, + // Stolen + { + // Transmitter + "voice\\10351.wav", + // Batteries + "voice\\10355.wav", + // Core + "voice\\10347.wav", + }, + }; + + uint8 nPiece = ConvertChassisPieceButeIndexToDDIndex( pMsg->Readuint8()); + uint8 nTeam = pMsg->Readuint8(); + + if( nPiece >= kDoomsDay_MAXTYPES ) + return LTFALSE; + if( nTeam >= MAX_TEAMS ) + return LTFALSE; + + // Build the string to display... + + char szTransmission[256] = {0}; + char szTeam[32] = {0}; + char szPiece[32] = {0}; + + LoadString( dwTeamID[nTeam], szTeam, ARRAY_LEN(szTeam) ); + + LoadString( dwPieceID[nPiece], szPiece, ARRAY_LEN(szPiece) ); + + FormatString( dwActionID[nId], szTransmission, ARRAY_LEN( szTransmission ), szTeam, szPiece ); + + g_pChatMsgs->AddMessage( szTransmission, eChatType[nTeam] ); + + // Play a sound... + g_pClientSoundMgr->PlayInterfaceSound( doomsdayActionSound[nId].m_pszActionSound[nPiece] ); + } + break; + + case MID_DOOMSDAY_DEVICE_COMPLETED: + { + // Get the team name. + uint8 nTeam = pMsg->Readuint8(); + + if( nTeam >= MAX_TEAMS ) + return LTFALSE; + + char szTeam[32] = {0}; + static uint32 dwTeamID[] = { IDS_TEAM_1, IDS_TEAM_2, }; + LoadString( dwTeamID[nTeam], szTeam, ARRAY_LEN(szTeam) ); + + // Build the string to display... + char szTransmission[256] = {0}; + FormatString( IDS_DOOMSDAY_DEVICE_COMPLETED, szTransmission, ARRAY_LEN( szTransmission ), szTeam ); + + g_pTransmission->Show( szTransmission ); + g_pChatMsgs->AddMessage( szTransmission, kMsgTransmission ); + + // Play a sound... + g_pClientSoundMgr->PlayInterfaceSound("voice\\10343.wav"); + } + break; + + case MID_DOOMSDAY_PIECE_RESPAWNED: + { + static uint32 dwPieceID[] = { IDS_DOOMSDAY_TRANSMITTER, IDS_DOOMSDAY_BATTERIES, IDS_DOOMSDAY_CORE, }; + + DDPieceType Piece = (DDPieceType)pMsg->Readuint8(); + + if( Piece >= kDoomsDay_MAXTYPES ) + return LTFALSE; + + char szPiece[32] = {0}; + LoadString( dwPieceID[Piece], szPiece, ARRAY_LEN(szPiece) ); + + // Build the string to display... + + char szTransmission[256] = {0}; + FormatString( IDS_DOOMSDAY_RESPAWNED, szTransmission, ARRAY_LEN( szTransmission ), szPiece ); + + g_pChatMsgs->AddMessage( szTransmission ); + + // Play a sound... + + g_pClientSoundMgr->PlayInterfaceSound( "Interface\\Snd\\chat.wav" ); + } + break; + + default: + break; + } + } + break; + + + default : break; + } + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnEvent() +// +// PURPOSE: Called for asynchronous errors that cause the server +// to shut down +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnEvent(uint32 dwEventID, uint32 dwParam) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + switch (dwEventID) + { + // Called when the renderer has switched into + // the new mode but before it reloads all the textures + // so you can display a loading screen. + + case LTEVENT_RENDERALMOSTINITTED : + { + if (m_bSwitchingModes) + { + ClearAllScreenBuffers(); + + + m_InterfaceResMgr.DrawMessage(IDS_REINITIALIZING_RENDERER); + + // because of driver bugs, we need to wait a frame after reinitializing the renderer and + // reinitialize the cursor + m_CursorMgr.ScheduleReinit(2.0f); + } + } + break; + + // Client disconnected from server. dwParam will + // be a error flag found in de_codes.h. + + case LTEVENT_DISCONNECT : + { + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->Reset(); + } + + // Clean up our clientinfo's if we're in mp. + if( IsMultiplayerGame( )) + m_ClientInfo.RemoveAllClients(); + + if ( !m_bIntentionalDisconnect ) + { + Disconnected(dwParam); + } + m_bIntentionalDisconnect = false; + + StartMenuMusic( ); + } + break; + + // Engine shutting down. dwParam will be a error + // flag found in de_codes.h. + + case LTEVENT_SHUTDOWN : + break; + + // The renderer was initialized. This is called if + // you call SetRenderMode or if focus was lost and regained. + + case LTEVENT_RENDERINIT : + { + if (m_LoadingScreen.IsVisible()) + { + // Hide it to get rid of any resources that may have been around + m_LoadingScreen.Hide(); + // And then start it up again + m_LoadingScreen.Show(); + } + } + break; + + // The renderer is being shutdown. This happens when + // ShutdownRender is called or if the app loses focus. + + case LTEVENT_RENDERTERM : + { + // Stop drawing the loading screen + if (m_LoadingScreen.IsVisible()) + m_LoadingScreen.Pause(); + } + break; + + case LTEVENT_LOSTFOCUS: + case LTEVENT_GAINEDFOCUS: + break; + + default : + { + uint32 nStringID = IDS_UNSPECIFIEDERROR; + SwitchToScreen(SCREEN_ID_MAIN); + //DoMessageBox(nStringID, TH_ALIGN_CENTER); + } + break; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdatePlayerStats() +// +// PURPOSE: Update the player's stats +// +// ----------------------------------------------------------------------- // + +// ABM TODO move this function out of base class into TronInterfaceMgr. +void CInterfaceMgr::UpdatePlayerStats(ILTMessage_Read& msg ) +{ + uint8 nThing = msg.Readuint8(); + uint8 nType1 = msg.Readuint8(); + uint8 nType2 = msg.Readuint8(); + float fAmount = msg.Readfloat(); + + switch (nThing) + { + case IC_WEAPON_OBTAIN_ID : + { + GetPlayerStats( )->UpdateAmmo(nType1, nType2, (uint32)fAmount, LTTRUE, LTFALSE); + } + break; + + case IC_WEAPON_PICKUP_ID : + { + bool bActivatingPickup = msg.Readbool( ); + + if (nType2 != WMGR_INVALID_ID) + { + GetPlayerStats( )->UpdateAmmo(nType1, nType2, (uint32)fAmount, LTTRUE, LTTRUE, bActivatingPickup ); + } + else + { + g_pGameClientShell->HandleWeaponPickup( nType1, false, bActivatingPickup ); + } + } + break; + + case IC_MOD_PICKUP_ID : + { + bool bPickedUp = (bool) !!(nType1); + bool bDisplayMsg = (bool) !!(fAmount); + bool bActivatingPickup = msg.Readbool( ); + + if (bDisplayMsg) + { + g_pGameClientShell->HandleModPickup(nType2, bPickedUp, bActivatingPickup); + } + + if (bPickedUp) + { + GetPlayerStats( )->UpdateMod(nType2); + } + } + break; + + case IC_DEFAULTWEAPON_ID : + { + CClientWeaponMgr* pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + pClientWeaponMgr->SetDefaultWeapon( nType1 ); + } + break; + + case IC_AMMO_ID : + { + GetPlayerStats( )->UpdateAmmo(nType1, nType2, (uint32)fAmount); + } + break; + + case IC_MAX_HEALTH_ID : + { + GetPlayerStats( )->UpdateMaxHealth((uint32)fAmount); + } + break; + + case IC_MAX_ENERGY_ID : + { + GetPlayerStats( )->UpdateMaxEnergy((uint32)fAmount); + } + break; + + case IC_ENERGY_ID : + { + GetPlayerStats( )->UpdateEnergy((uint32)fAmount); + } + break; + + case IC_MAX_ARMOR_ID : + { + GetPlayerStats( )->UpdateMaxArmor((uint32)fAmount); + } + break; + + case IC_HEALTH_ID : + { + GetPlayerStats( )->UpdateHealth((uint32)fAmount); + } + break; + + case IC_ARMOR_ID : + { + GetPlayerStats( )->UpdateArmor((uint32)fAmount); + } + break; + + case IC_AIRLEVEL_ID : + { + GetPlayerStats( )->UpdateAir(fAmount); + } + break; + + case IC_OUTOFAMMO_ID : + { + g_pChatMsgs->AddMessage(FormatTempString(IDS_OUTOFAMMO, GetWeaponString(nType1))); + } + break; + + case IC_OBJECTIVE_ID : + case IC_OPTION_ID : + case IC_PARAMETER_ID : + { + GetPlayerStats( )->UpdateObjectives(nThing, nType1, (uint32)fAmount); + } + break; + + case IC_SECRET : + { + GetPlayerStats( )->UpdateObjectives(nThing, nType1, (uint32)fAmount); + g_pTransmission->Show(IDS_FOUND_SECRET); + g_pChatMsgs->AddMessage(IDS_FOUND_SECRET,kMsgTransmission); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\secret.wav"); + } + break; + + + case IC_KEY_ID : + { + GetPlayerStats( )->UpdateKeys(nType1, (uint16)fAmount); + } + break; + + case IC_SKILLS_ID : + { + GetPlayerStats( )->GainSkills(nType1, nType2, (uint16)fAmount); + } + break; + + case IC_FADE_SCREEN_ID : + { + // Fade the screen in or out... + + if (nType1) + { + StartScreenFadeIn(fAmount); + } + else + { + StartScreenFadeOut(fAmount); + } + } + break; + + case IC_RESET_INVENTORY_ID : + { + GetPlayerStats( )->DropInventory((LTBOOL)nType1); + } + break; + + + case IC_MISSION_TEXT_ID : + { + if (fAmount > 0.0f) + g_pMissionText->Start((int)fAmount); + else + g_pMissionText->Clear(); + } + break; + + case IC_MISSION_FAILED_ID : + { + MissionFailed((int)fAmount); + } + break; + + default : break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnCommandOn() +// +// PURPOSE: Handle command on +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnCommandOn(int command) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // Take appropriate action + if ( g_pDecision->IsVisible() && + command >= COMMAND_ID_CHOOSE_1 && + command <= COMMAND_ID_CHOOSE_6 ) + { + uint8 nChoice = command - COMMAND_ID_CHOOSE_1; + g_pDecision->Choose(nChoice); + return LTTRUE; + } + + + if (GS_MENU == m_eGameState || GS_PLAYING == m_eGameState) + { + if (m_MenuMgr.OnCommandOn(command) || GS_MENU == m_eGameState) + return LTTRUE; + } + + + switch (command) + { + + case COMMAND_ID_LASTWEAPON : + { + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase const *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if (pClientWeapon && !pClientWeaponMgr->WeaponsEnabled()) return LTTRUE; + + if (m_AmmoChooser.IsOpen()) + { + m_AmmoChooser.Close(); + } + if (m_WeaponChooser.IsOpen()) + { + m_WeaponChooser.Close(); + } + + return LTTRUE; + + } + break; + + case COMMAND_ID_PREV_WEAPON : + { + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase const *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if (pClientWeapon && !pClientWeaponMgr->WeaponsEnabled()) return LTTRUE; + + //can't bring up chooser while disabling a gadget target + if (g_pPlayerMgr->IsDisabling()) return LTTRUE; + + if (m_AmmoChooser.IsOpen()) + { + m_AmmoChooser.Close(); + } + if (m_WeaponChooser.Open(0)) + { + m_WeaponChooser.PrevWeapon(); + } + + uint8 nCurrWeapon = m_WeaponChooser.GetCurrentSelection(); + g_pPlayerMgr->ChangeWeapon( nCurrWeapon ); + + return LTTRUE; + } + break; + + case COMMAND_ID_NEXT_WEAPON : + { + NextWeapon(command); + return LTTRUE; + } break; + + case COMMAND_ID_NEXT_WEAPON_1 : + case COMMAND_ID_NEXT_WEAPON_2 : + case COMMAND_ID_NEXT_WEAPON_3 : + case COMMAND_ID_NEXT_WEAPON_4 : + case COMMAND_ID_NEXT_WEAPON_5 : + case COMMAND_ID_NEXT_WEAPON_6 : + { + if (!g_pDecision->IsVisible()) + NextWeapon(command); + return LTTRUE; + } + break; + + case COMMAND_ID_NEXT_AMMO : + { + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase const *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + + //can't bring up chooser while disabling a gadget target + if (g_pPlayerMgr->IsDisabling()) return LTTRUE; + + if (pClientWeapon && !pClientWeaponMgr->WeaponsEnabled()) return LTTRUE; + + if (m_WeaponChooser.IsOpen()) + { + m_WeaponChooser.Close(); + } + if (m_AmmoChooser.Open()) + { + m_AmmoChooser.NextAmmo(); + + uint8 nCurrAmmo = m_AmmoChooser.GetCurrentSelection(); + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + pClientWeapon->ChangeAmmoWithReload( nCurrAmmo, true ); + } + } + + return LTTRUE; + } + break; + + case COMMAND_ID_FIRING : + { + // Make sure the choosers are closed if we fire. + CloseChoosers( ); + } + break; + + case COMMAND_ID_NEXT_LAYOUT : + { + if (m_eGameState == GS_PLAYING) + { + GetHUDMgr()->NextLayout(); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\HudLayoutToggle.wav"); + } + return LTTRUE; + + } + break; + case COMMAND_ID_PREV_LAYOUT : + { + if (m_eGameState == GS_PLAYING) + { + GetHUDMgr()->PrevLayout(); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\HudLayoutToggle.wav"); + } + return LTTRUE; + + } + break; + + case COMMAND_ID_MISSION: + { + if (m_eGameState == GS_PLAYING && !IsCoopMultiplayerGameType() ) + { + g_pScores->Show(true); + return LTTRUE; + }; + } break; + + default : + break; + } + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnCommandOff() +// +// PURPOSE: Handle command off +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnCommandOff(int command) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // Only process if not editing a message... + + if (g_pChatInput->IsVisible()) return LTTRUE; + + if (m_MenuMgr.OnCommandOff(command)) + return LTTRUE; + + + switch (command) + { + case COMMAND_ID_ACTIVATE : + { + return LTFALSE; + } + break; + + case COMMAND_ID_LASTWEAPON : + { + ASSERT( 0 != g_pPlayerMgr ); + g_pPlayerMgr->LastWeapon( ); + return LTTRUE; + } + break; + + case COMMAND_ID_NEXT_WEAPON : + case COMMAND_ID_NEXT_WEAPON_1 : + case COMMAND_ID_NEXT_WEAPON_2 : + case COMMAND_ID_NEXT_WEAPON_3 : + case COMMAND_ID_NEXT_WEAPON_4 : + case COMMAND_ID_NEXT_WEAPON_5 : + case COMMAND_ID_NEXT_WEAPON_6 : + { + // End the timer for quick weapon changing... + m_WeaponChooser.EndAutoSwitch(); + } + break; + + case COMMAND_ID_PREV_WEAPON : + { + // End the timer for quick weapon changing... + m_WeaponChooser.EndAutoSwitch(false); + } + break; + + case COMMAND_ID_NEXT_AMMO : + { + // End the timer for quick ammo changing... + m_AmmoChooser.EndAutoSwitch(); + } + break; + + case COMMAND_ID_MISSION: + { + g_pScores->Show(false); + } break; + + default : break; + } + + return LTFALSE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnKeyDown() +// +// PURPOSE: Handle OnKeyDown messages +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnKeyDown(int key, int rep) +{ + // Make sure we're initialized. + if ( !IsInitialized( ) ) + { + return LTFALSE; + } + + if (m_MessageBox.IsVisible()) + { + return m_MessageBox.HandleKeyDown(key,rep); + } + + switch (m_eGameState) + { + case GS_SCREEN : + { + GetScreenMgr( )->HandleKeyDown(key,rep); + return LTTRUE; + } + break; + + case GS_PAUSED : + { + if( HandleDebugKey(key) ) + { + return LTTRUE; + } + + // They pressed a key - unpause the game + + ChangeState(GS_PLAYING); + return LTTRUE; + } + break; + + case GS_SPLASHSCREEN : + { + // They pressed a key - end splash screen... + EndSplashScreen( ); + return LTTRUE; + } + break; + + case GS_MOVIE : + { + + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + bool bEndMovies = false; + if (pRegMgr->IsValid()) + { + uint32 nGameRuns = pRegMgr->Get( "GameRuns",0 ); + if( nGameRuns > 1 ) + bEndMovies = true; + } + + // They pressed a key - end splash screen... + + NextMovie( bEndMovies ); + return LTTRUE; + } + break; + + case GS_DEMOSCREEN : + { + // They pressed a key - go to next screen... + NextDemoScreen(); + return LTTRUE; + } + break; + + + case GS_POPUP : + { + if(m_PopupText.IsVisible()) + { + KeystrokeList::iterator iter = g_keys.begin(); + while (iter != g_keys.end() && (*iter) != key) + iter++; + if (iter == g_keys.end()) + m_PopupText.Close(); + + + } + } + break; + + case GS_MENU : + { + m_MenuMgr.HandleKeyDown(key,rep); + return LTTRUE; + } + break; + + // ABM TODO write handlers for the subroutine and ratings states + + case GS_PLAYING : + { + // Are We Broadcasting a Message + if (g_pChatInput->IsVisible()) + { + g_pChatInput->HandleKeyDown(key, rep); + return LTTRUE; + } + + switch (key) + { + case VK_PAUSE: + { + if (IsMultiplayerGame()) return LTFALSE; + + if (!g_pGameClientShell->IsGamePaused()) + { + ChangeState(GS_PAUSED); + } + + g_pGameClientShell->PauseGame(!g_pGameClientShell->IsGamePaused(), LTTRUE); + return LTTRUE; + } + break; + + // Escape Key Handling + case VK_ESCAPE: + { + bool bHandled = false; + if (!g_pPlayerMgr->IsPlayerDead() && g_pPlayerMgr->IsPlayerInWorld()) + { + if (IsChoosingWeapon()) + { + m_WeaponChooser.Close(); + bHandled = true; + } + if (IsChoosingAmmo()) + { + m_AmmoChooser.Close(); + bHandled = true; + } + } + + if (g_pDecision->IsVisible()) + { + g_pDecision->Choose(MAX_DECISION_CHOICES); + bHandled = true; + } + + if (bHandled) + { + return LTTRUE; + } + } + break; + + default : break; + } + + if ( m_MenuMgr.HandleKeyDown(key,rep) ) + { + return LTTRUE; + } + + if ( HandleDebugKey(key) ) + { + return LTTRUE; + } + + } + break; + + default : break; + } + + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnKeyUp(int key) +// +// PURPOSE: Handle key up notification +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::OnKeyUp(int key) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // if it's the tilde (~) key then the console has been turned off + // (this is the only event that causes this key to ever get processed) + // so clear the back buffer to get rid of any part of the console still showing + if (key == VK_TILDE) + { + AddToClearScreenCount(); + return LTTRUE; + } + + if (g_pChatInput->IsVisible()) + { + return LTTRUE; + } + + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->HandleKeyUp(key); + return LTTRUE; + } + break; + + case GS_MENU: + { + m_MenuMgr.HandleKeyUp(key); + return LTTRUE; + } + break; + + case GS_LOADINGLEVEL : + { + return LTTRUE; + } + break; + case GS_POPUP: + { + KeystrokeList::iterator iter = g_keys.begin(); + while (iter != g_keys.end() && (*iter) != key) + iter++; + bool bKeepLocked = false; + if (iter != g_keys.end() && (*iter) == key) + { + g_keys.erase(iter); + bKeepLocked = !g_keys.empty(); + } + g_bLockPopup &= bKeepLocked; + } break; + + } + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnChar() +// +// PURPOSE: Handle OnChar messages +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::OnChar(unsigned char c) +{ + if (c < ' ') return; + + + if (m_MessageBox.IsVisible()) + { + m_MessageBox.HandleChar(c); + return; + } + + if (g_pChatInput->IsVisible()) + { + g_pChatInput->HandleChar(c); + return; + } + if (m_eGameState == GS_SCREEN) + { + GetScreenMgr( )->HandleChar(c); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Draw() +// +// PURPOSE: Draws any interface stuff that may need to be drawn +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::Draw() +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + // Tint the screen if necessary... + + m_FullScreenTint.SetAlpha(g_vtPauseTintAlpha.GetFloat()); + m_FullScreenTint.Draw(g_pLTClient->GetScreenSurface()); + + // Check for interface drawing override... + + if (g_vtDrawInterface.GetFloat()) + { + // Update letter box... + + UpdateLetterBox(); + + // Find out if we're in multiplayer... + + PlayerState ePlayerState = g_pPlayerMgr->GetPlayerState(); + + if (GetGameState() == GS_PLAYING || GetGameState() == GS_POPUP) + { + // Draw the player stats (health,armor,ammo) if appropriate... + GetHUDMgr()->Render(); + + if (m_Credits.IsInited()) + { + if (m_Credits.IsDone()) + { + m_Credits.Term(); + } + else + { + m_Credits.Update(); + } + } + + if (m_InterfaceTimer.GetTime() > 0.0f) + { + m_InterfaceTimer.Draw(); + } + + if( IsTeamGameType( )) + { + if (m_BlueInterfaceTimer.GetTime() > 0.0f) + { + m_BlueInterfaceTimer.Draw(); + } + + if (m_RedInterfaceTimer.GetTime() > 0.0f) + { + m_RedInterfaceTimer.Draw(); + } + } + } + + if( g_pDamageFXMgr->IsDamageActive( DamageTypeToFlag(DT_SLEEPING) )) + { + if (IsChoosingWeapon()) + { + m_WeaponChooser.Close(); + } + + if (IsChoosingAmmo()) + { + m_AmmoChooser.Close(); + } + } + + + if (!IsMultiplayerGame()) + { + if (GetGameState() == GS_PLAYING || GetGameState() == GS_POPUP || GetGameState() == GS_MENU) + { + g_pPaused->Render(); + } + } + + + // Update the screen fade alpha only if we are in the playing state and not paused... + + bool bUpdateAlpha = (GetGameState() == GS_PLAYING ? !g_pGameClientShell->IsGamePaused() : false); + + UpdateScreenFade(bUpdateAlpha); + } + + if (GetGameState() == GS_MENU) + { + m_MenuMgr.Render(); + } + if (GetGameState() == GS_POPUP) + { + m_PopupText.Draw(); + } + + //this should be last so it is always on top. + if (m_MessageBox.IsVisible()) + { + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + m_MessageBox.Draw(); + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + } + + m_CursorMgr.Update(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreScreenState() +// +// PURPOSE: Initialize the Screen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreScreenState(GameState eCurState) +{ + if (eCurState == GS_SCREEN) return LTFALSE; + + m_InterfaceResMgr.Setup(); + + // Pause the game... + g_pGameClientShell->PauseGame(LTTRUE, LTTRUE); + + // Disable light scaling when not in the playing state... + g_pGameClientShell->GetLightScaleMgr()->Disable(); + g_pGameClientShell->GetScreenTintMgr()->ClearAll(); + + + CreateInterfaceBackground(); + + SetHUDRenderLevel(kHUDRenderNone); + ClearScreenAlways(); + + // No fog in the menus... + g_bInGameFogEnabled = (LTBOOL) GetConsoleInt("FogEnable", 1); + WriteConsoleInt("FogEnable", 0); + + // Make sure menus and screens are full screen... + memset(&m_rcMenuRestoreCamera, 0, sizeof (LTRect)); + + uint32 nWidth, nHeight; + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &nWidth, &nHeight); + + m_bUseInterfaceCamera = LTTRUE; + + if (eCurState == GS_LOADINGLEVEL) + { + AbortScreenFade(); + } + else + { + ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + } + + m_bEnteredScreenState = true; + + // Initialize the music... + + SetupMusic(); + + return LTTRUE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostScreenState() +// +// PURPOSE: Handle leaving the Screen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostScreenState(GameState eNewState) +{ + if (eNewState == GS_SCREEN) return LTFALSE; + + GetScreenMgr( )->ExitScreens(); + + if (eNewState != GS_LOADINGLEVEL && eNewState != GS_DEMOSCREEN) + { + int nGameMode = GAMEMODE_NONE; + g_pLTClient->GetGameMode(&nGameMode); + if (nGameMode == GAMEMODE_NONE) return LTFALSE; + } + + ClearScreenAlways(LTFALSE); + AddToClearScreenCount(); + + + RemoveAllInterfaceSFX(); + + //see what state we need to restore the HUD into (in case we go into the menus + //while we are dead) + if(g_pPlayerMgr->IsPlayerDead()) + { + SetHUDRenderLevel(kHUDRenderDead); + } + else + { + SetHUDRenderLevel(kHUDRenderFull); + } + + // m_InterfaceResMgr.Clean(); + + g_pLTClient->ClearInput(); + + + // Reset fog value... + + WriteConsoleInt("FogEnable", (int) g_bInGameFogEnabled); + + m_bSuppressNextFlip = true; + + // Match the pause from PreScreeState... + + g_pGameClientShell->PauseGame( LTFALSE ); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PrePauseState() +// +// PURPOSE: Initialize the Pause state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PrePauseState(GameState eCurState) +{ + if (eCurState == GS_PAUSED) return LTFALSE; + + CreateInterfaceBackground(); + + // Create the "paused" surface... + m_hGamePausedSurface = g_pInterfaceResMgr->GetSharedSurface("interface\\pause.pcx"); + + m_bUseInterfaceCamera = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostPauseState() +// +// PURPOSE: Handle leaving the Pause state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostPauseState(GameState eNewState) +{ + if (eNewState == GS_PAUSED) return LTFALSE; + + RemoveAllInterfaceSFX(); + + // Remove the "paused" surface... + if (m_hGamePausedSurface) + { + g_pInterfaceResMgr->FreeSharedSurface(m_hGamePausedSurface); + m_hGamePausedSurface = LTNULL; + } + + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PrePlayingState() +// +// PURPOSE: Initialize the Playing state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PrePlayingState(GameState eCurState) +{ + if (eCurState == GS_PLAYING) return LTFALSE; + + if (eCurState != GS_MENU) + { + // Unpause the game... + + g_pGameClientShell->PauseGame(LTFALSE); + } + + // Clear whatever input got us here... + g_pLTClient->ClearInput(); + + // Eanble light scaling... + + g_pGameClientShell->GetLightScaleMgr()->Enable(); + g_pPlayerMgr->RestorePlayerModes(); + + g_pMissionText->Pause(LTFALSE); + + m_bUseInterfaceCamera = LTFALSE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostPlayingState() +// +// PURPOSE: Handle leaving the Playing state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostPlayingState(GameState eNewState) +{ + if (eNewState == GS_PLAYING) return LTFALSE; + + g_pGameClientShell->GetScreenTintMgr()->ClearAll(); + g_pGameClientShell->GetLightScaleMgr()->ClearAllLightScales(); + + g_pLTClient->SetModelHook((ModelHookFn)DefaultModelHook, this); + + g_pMissionText->Pause(LTTRUE); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreMenuState() +// +// PURPOSE: Initialize the menu state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreMenuState(GameState eCurState) +{ + if (eCurState == GS_MENU) return LTFALSE; + + if (!m_MenuMgr.GetCurrentMenu()) + { + if (!m_MenuMgr.GetLastMenu()) + return LTFALSE; + + m_MenuMgr.SetCurrentMenu(m_MenuMgr.GetLastMenu()->GetMenuID()); + } + + m_bUseInterfaceCamera = LTFALSE; + + // [KLS 7/28/02] Shouldn't need to fade in for the menu, screen fade + // is drawn behind the menu... + // ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + + // Pause the game... + g_pGameClientShell->PauseGame(LTTRUE, LTTRUE); + g_pLTClient->SetInputState(LTTRUE); + + // If we're currently viewing a cinematic disable all the menu bar menus + // except the system menu... + + if (g_pPlayerMgr->IsUsingExternalCamera()) + { + m_MenuMgr.EnableMenuBar(false, (MB_ALL & ~MB_SYSTEM)); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostMenuState() +// +// PURPOSE: Handle leaving the menu state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostMenuState(GameState eNewState) +{ + if (eNewState == GS_MENU) return LTFALSE; + + m_MenuMgr.ExitMenus(); + + // Unpause the game... + g_pGameClientShell->PauseGame(LTFALSE); + g_pLTClient->ClearInput(); + + // If we're currently viewing a cinematic re-enable the menu bar... + + if (g_pPlayerMgr->IsUsingExternalCamera()) + { + m_MenuMgr.EnableMenuBar(true); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PrePopupState() +// +// PURPOSE: Initialize the Popup state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PrePopupState(GameState eCurState) +{ + if (eCurState == GS_POPUP) return LTFALSE; + + // Pause the game... + if ( !IsMultiplayerGame( ) ) + { + g_pGameClientShell->PauseGame(LTTRUE, LTTRUE); + } + + g_pPlayerMgr->AllowPlayerMovement(LTFALSE); + g_pPlayerMgr->ClearPlayerModes(LTTRUE); + + m_bUseInterfaceCamera = LTFALSE; + + m_ePrePopupHUDRenderLevel = GetHUDMgr()->GetRenderLevel(); + + if (m_bHideHUDInPopup) + { + SetHUDRenderLevel(kHUDRenderNone); + } + + g_keys.clear(); + for (int k = 0; k < 256; k++) + { + if (IsKeyDown(k)) + g_keys.push_back(k); + } + + g_bLockPopup = !g_keys.empty(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostPopupState() +// +// PURPOSE: Handle leaving the Popup state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostPopupState(GameState eNewState) +{ + if (eNewState == GS_POPUP) return LTFALSE; + + g_pPlayerMgr->AllowPlayerMovement(LTTRUE); + g_pLTClient->ClearInput(); + + SetHUDRenderLevel(m_ePrePopupHUDRenderLevel); + m_bHideHUDInPopup = false; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreLoadingLevelState() +// +// PURPOSE: Initialize the LoadingLevel state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreLoadingLevelState(GameState eCurState) +{ + if (eCurState == GS_LOADINGLEVEL) return LTFALSE; + + // Disable light scaling when not in the playing state... + g_pGameClientShell->GetLightScaleMgr()->ClearAllLightScales(); + + RemoveInterfaceFX(); + m_InterfaceFXMgr.UseSystemTime(true); + + m_bUseInterfaceCamera = LTTRUE; + + m_LoadingScreen.Show(); + + // Turn off the music (this will be turned on when we start the + // next level... + //CMusic* pMusic = g_pGameClientShell->GetMusic(); + //if (pMusic) + //{ + // pMusic->Stop(); + //} + + // Turn off sound + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetVolume(0); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostLoadingLevelState() +// +// PURPOSE: Handle leaving the LoadingLevel state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostLoadingLevelState(GameState eNewState) +{ + if (eNewState == GS_LOADINGLEVEL) return LTFALSE; + + // Don't allow the loading state to go away until the loading screen has been hidden + if (m_LoadingScreen.IsVisible()) + return LTFALSE; + + RemoveAllInterfaceSFX(); + m_InterfaceFXMgr.UseSystemTime(false); + + // Turn back on the sound + m_ProfileMgr.ImplementSoundVolume(); + + +// ClearAllScreenBuffers(); + m_bLoadFailed = LTFALSE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreExitingLevelState() +// +// PURPOSE: Initialize the ExitingLevel state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreExitingLevelState(GameState eCurState) +{ + if (eCurState == GS_EXITINGLEVEL) return LTFALSE; + + if (eCurState == GS_SCREEN && GetScreenMgr( )->GetCurrentScreenID() == SCREEN_ID_MAIN ) + { + return LTFALSE; + } + + StartScreenFadeOut( g_vtExitLevelScreenFadeTime.GetFloat() ); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostExitingLevelState() +// +// PURPOSE: Handle leaving the ExitingLevel state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostExitingLevelState(GameState eNewState) +{ + if (eNewState == GS_EXITINGLEVEL) return LTFALSE; + + // Tell the missionmgr we're leaving exit level. +// g_pMissionMgr->FinishExitLevel( ); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreSplashScreenState() +// +// PURPOSE: Initialize the SplashScreen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreSplashScreenState(GameState eCurState) +{ + if (eCurState == GS_SPLASHSCREEN) return LTFALSE; + + // Since we're going to always go to the menu state next, load the + // surfaces here... + + m_InterfaceResMgr.Setup(); + + + // Play splash screen sound... + + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hSplashSound = g_pClientSoundMgr->PlayInterfaceSound(IM_SPLASH_SOUND, dwFlags); + + if (m_hSplashSound) + { + g_pLTClient->SoundMgr()->GetSoundDuration(m_hSplashSound, g_fSplashSndDuration); + DebugCPrint(1,"Splash sound duration: %.4f", g_fSplashSndDuration); + DebugCPrint(1,"Current Time: %.4f", g_pLTClient->GetTime()); + } + + // Create the splash screen... + g_hSplash = g_pLTClient->CreateSurfaceFromBitmap(IM_SPLASH_SCREEN); + if (!g_hSplash) return LTFALSE; + + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + + // Fade into the splash screen... + + StartScreenFadeIn(g_vtSplashScreenFadeIn.GetFloat()); + m_bUseInterfaceCamera = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostSplashScreenState() +// +// PURPOSE: Handle leaving the SplashScreen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostSplashScreenState(GameState eNewState) +{ + if (eNewState == GS_SPLASHSCREEN) return LTFALSE; + + if (g_hSplash) + { + g_pLTClient->DeleteSurface(g_hSplash); + g_hSplash = LTNULL; + } + + // Stop splash screen sound (if playing)... + + if (m_hSplashSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSplashSound); + m_hSplashSound = LTNULL; + } + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreMovieState() +// +// PURPOSE: Initialize the movie state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreMovieState(GameState eCurState) +{ + if (eCurState == GS_MOVIE) return LTFALSE; + + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN, 0); + m_bUseInterfaceCamera = LTTRUE; + + m_nCurMovie = gMovieOrder[0]; + NextMovie(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostMovieState() +// +// PURPOSE: Handle leaving the movie state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostMovieState(GameState eNewState) +{ + if (eNewState == GS_MOVIE) return LTFALSE; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreDemoScreenState() +// +// PURPOSE: Initialize the DemoScreen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreDemoScreenState(GameState eCurState) +{ + if (eCurState == GS_DEMOSCREEN) return LTFALSE; + + g_nDemo = -1; + NextDemoScreen(); + + m_bUseInterfaceCamera = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PostDemoScreenState() +// +// PURPOSE: Handle leaving the DemoScreen state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PostDemoScreenState(GameState eNewState) +{ + if (eNewState == GS_DEMOSCREEN) return LTFALSE; + + if (g_hDemo) + { + g_pLTClient->DeleteSurface(g_hDemo); + g_hDemo = LTNULL; + } + + return LTTRUE; +} + + + + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::ProcessAdvancedOptions +// +// PURPOSE: Process the advanced options +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::ProcessAdvancedOptions() +{ + // Check advanced options... + + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("DisableMusic"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_MUSIC; + } + + hVar = g_pLTClient->GetConsoleVar("DisableSound"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_SOUND; + } + + hVar = g_pLTClient->GetConsoleVar("DisableMovies"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_MOVIES; + } + + hVar = g_pLTClient->GetConsoleVar("DisableFog"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_FOG; + } + + hVar = g_pLTClient->GetConsoleVar("DisableLines"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_LINES; + } + + hVar = g_pLTClient->GetConsoleVar("DisableJoystick"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_JOYSTICK; + } + + hVar = g_pLTClient->GetConsoleVar("DisableTripBuf"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_TRIPLEBUFFER; + } + + hVar = g_pLTClient->GetConsoleVar("DisableTJuncs"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_TJUNCTIONS; + } + + hVar = g_pLTClient->GetConsoleVar("DisableSoundFilters"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_SOUNDFILTERS; + } + + hVar = g_pLTClient->GetConsoleVar("DisableHardwareSound"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwAdvancedOptions &= ~AO_HARDWARESOUND; + } + + // Record the original state of sound and music + + hVar = g_pLTClient->GetConsoleVar("SoundEnable"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwOrignallyEnabled |= AO_SOUND; + } + + hVar = g_pLTClient->GetConsoleVar("MusicEnable"); + if (hVar && g_pLTClient->GetVarValueFloat(hVar)) + { + m_dwOrignallyEnabled |= AO_MUSIC; + } + + // Implement any advanced options here (before renderer is started) + if ( !(m_dwAdvancedOptions & AO_SOUNDFILTERS) ) + { + g_pLTClient->RunConsoleString("SoundFilters 0"); + } + else + { + // only set this on, if there isn't a current setting + hVar = g_pLTClient->GetConsoleVar("SoundFilters"); + if ( !hVar ) + g_pLTClient->RunConsoleString("SoundFilters 1"); + } + + hVar = g_pLTClient->GetConsoleVar("SoundEnable"); + if (!hVar && (m_dwAdvancedOptions & AO_SOUND)) + { + g_pLTClient->RunConsoleString("SoundEnable 1"); + } + + hVar = g_pLTClient->GetConsoleVar("MusicEnable"); + if (!hVar && (m_dwAdvancedOptions & AO_MUSIC)) + { + g_pLTClient->RunConsoleString("MusicEnable 1"); + } + + + if (!(m_dwAdvancedOptions & AO_TRIPLEBUFFER)) + { + g_pLTClient->RunConsoleString("BackBufferCount 1"); + } + + if (!(m_dwAdvancedOptions & AO_FOG)) + { + g_pLTClient->RunConsoleString("FogEnable 0"); + } + + if (!(m_dwAdvancedOptions & AO_JOYSTICK)) + { + g_pLTClient->RunConsoleString("JoystickDisable 1"); + } + + if (!(m_dwAdvancedOptions & AO_CURSOR)) + { + g_pLTClient->RunConsoleString("HardwareCursor 0"); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::ChangeState +// +// PURPOSE: Change the game state. This allows us to do pre/post state +// change handling +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::ChangeState(GameState eNewState) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return LTFALSE; + + DebugChangeState(eNewState); + + GameState eCurState = m_eGameState; + + // First make sure we change change to the new state from the the + // state we are currently in... + + if (PreChangeState(eCurState, eNewState)) + { + m_eGameState = eNewState; + + // Since the state changed, update the cursor + UpdateCursorState(); + +// g_pLTClient->ClearInput(); + m_eLastGameState = eCurState; + + return LTTRUE; + + } + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::DebugChangeState +// +// PURPOSE: Print out debugging info about changing states +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::DebugChangeState(GameState eNewState) +{ +#ifdef _DEBUG +//#define _DEBUG_INTERFACE_MGR +#ifdef _DEBUG_INTERFACE_MGR + g_pLTClient->CPrint("CInterfaceMgr::ChangeState() :"); + g_pLTClient->CPrint(" Old State: %s", c_GameStateNames[m_eGameState]); + g_pLTClient->CPrint(" New State: %s", c_GameStateNames[eNewState]); +#endif +#endif +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::PreChangeState +// +// PURPOSE: Handle pre setting of game state +// +// ----------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::PreChangeState(GameState eCurState, GameState eNewState) +{ + // Do any clean up of the old (current) state... + + switch (eCurState) + { + case GS_PLAYING : + { + if (!PostPlayingState(eNewState)) return LTFALSE; + } + break; + + case GS_MENU : + { + if (!PostMenuState(eNewState)) return LTFALSE; + } + break; + + case GS_POPUP : + { + if (!PostPopupState(eNewState)) return LTFALSE; + } + break; + + case GS_EXITINGLEVEL: + { + if (!PostExitingLevelState(eNewState)) return LTFALSE; + } + break; + + case GS_LOADINGLEVEL: + { + if (!PostLoadingLevelState(eNewState)) return LTFALSE; + } + break; + + case GS_SCREEN : + { + if (!PostScreenState(eNewState)) return LTFALSE; + } + break; + + case GS_PAUSED : + { + if (!PostPauseState(eNewState)) return LTFALSE; + } + break; + + case GS_SPLASHSCREEN : + { + if (!PostSplashScreenState(eNewState)) return LTFALSE; + } + break; + + case GS_MOVIE : + { + if (!PostMovieState(eNewState)) return LTFALSE; + } + break; + + case GS_DEMOSCREEN : + { + if (!PostDemoScreenState(eNewState)) return LTFALSE; + } + break; + + default : break; + } + + // Do any initial setup for the new state... + + switch (eNewState) + { + case GS_PLAYING : + { + return PrePlayingState(eCurState); + } + break; + + case GS_MENU : + { + return PreMenuState(eCurState); + } + break; + + case GS_POPUP : + { + return PrePopupState(eCurState); + } + break; + + case GS_EXITINGLEVEL: + { + return PreExitingLevelState(eCurState); + } + break; + + case GS_LOADINGLEVEL: + { + return PreLoadingLevelState(eCurState); + } + break; + + case GS_SCREEN : + { + return PreScreenState(eCurState); + } + break; + + case GS_PAUSED : + { + return PrePauseState(eCurState); + } + break; + + case GS_SPLASHSCREEN : + { + return PreSplashScreenState(eCurState); + } + break; + + case GS_MOVIE : + { + return PreMovieState(eCurState); + } + break; + + case GS_DEMOSCREEN : + { + return PreDemoScreenState(eCurState); + } + break; + + default : break; + } + + return LTTRUE; +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Save +// +// PURPOSE: Save the interface info +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::Save(ILTMessage_Write *pMsg) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + GetPlayerStats( )->Save(pMsg); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Load +// +// PURPOSE: Load the interface info +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::Load(ILTMessage_Read *pMsg) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + GetPlayerStats( )->Load(pMsg); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::GetCurrentScreen() +// +// PURPOSE: Finds out what the current screen is +// - returns SCREEN_ID_NONE if not in a screen state +// +// --------------------------------------------------------------------------- // + +eScreenID CInterfaceMgr::GetCurrentScreen() +{ + if (m_eGameState != GS_SCREEN) + { + return SCREEN_ID_NONE; + } + return GetScreenMgr( )->GetCurrentScreenID(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::SwitchToScreen +// +// PURPOSE: Go to the specified screen +// +// --------------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::SwitchToScreen(eScreenID screenID) +{ + if (m_eGameState != GS_SCREEN) + { + if (((m_eGameState == GS_SPLASHSCREEN) || (m_eGameState == GS_DEMOSCREEN)) && (screenID == SCREEN_ID_MAIN)) + { + StartScreenFadeIn(g_vtMainScreenFadeIn.GetFloat()); + } + + if (!ChangeState(GS_SCREEN)) return LTFALSE; + } + + GetScreenMgr( )->SetCurrentScreen(screenID); + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::SwitchToMenu +// +// PURPOSE: Go to the specified menu +// +// --------------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::SwitchToMenu(eMenuID menuID) +{ + if (!m_MenuMgr.SetCurrentMenu(menuID)) return LTFALSE; + + if (m_eGameState != GS_MENU) + { + if (!ChangeState(GS_MENU)) return LTFALSE; + m_MenuMgr.SlideIn(); + } + + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::ForceScreenUpdate +// +// PURPOSE: Force the current screen to update +// +// --------------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::ForceScreenUpdate(eScreenID screenID) +{ + if (m_eGameState != GS_SCREEN) return LTFALSE; + + return GetScreenMgr( )->ForceScreenUpdate(screenID); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::MissionFailed +// +// PURPOSE: Go to the mission failure state +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::MissionFailed(int nFailStringId) +{ + // The player is no longer in the world... + g_pGameClientShell->SetWorldNotLoaded(); + + m_nFailStringId = nFailStringId; + SwitchToScreen(SCREEN_ID_FAILURE); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::ScreenDimsChanged +// +// PURPOSE: Handle the screen dims changing +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::ScreenDimsChanged() +{ + m_InterfaceResMgr.ScreenDimsChanged(); + GetScreenMgr( )->ScreenDimsChanged(); + m_MenuMgr.ScreenDimsChanged(); + GetHUDMgr()->ScreenDimsChanged(); + + m_InterfaceTimer.ScreenDimsChanged(); + m_RedInterfaceTimer.ScreenDimsChanged(); + m_BlueInterfaceTimer.ScreenDimsChanged(); + + // Update the camera rect... + uint32 dwWidth = 640, dwHeight = 480; + + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &dwWidth, &dwHeight); + + // This may need to be changed to support in-game cinematics... + + ResetMenuRestoreCamera(0, 0, dwWidth, dwHeight); + g_pLTClient->SetCameraRect (m_hInterfaceCamera, LTTRUE, 0, 0, dwWidth, dwHeight); + + UpdateInterfaceBackground(); + +} + + + +//mouse handling +void CInterfaceMgr::OnLButtonUp(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + if (m_MessageBox.IsVisible()) + { + m_MessageBox.OnLButtonUp(x,y); + return; + } + + switch (m_eGameState) + { + case GS_LOADINGLEVEL: + { + } break; + case GS_SCREEN: + { + GetScreenMgr( )->OnLButtonUp(x,y); + } break; + case GS_MENU: + { + m_MenuMgr.OnLButtonUp(x,y); + } break; + case GS_POPUP: + { + if(m_PopupText.IsVisible() && !g_bLockPopup) + { + m_PopupText.Close(); + } + g_bLockPopup = false; + } break; + } +} + +void CInterfaceMgr::OnLButtonDown(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + if (m_MessageBox.IsVisible()) + { + m_MessageBox.OnLButtonDown(x,y); + return; + } + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnLButtonDown(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnLButtonDown(x,y); + } + break; + + case GS_SPLASHSCREEN: + { + // They pressed a mouse button - end splash screen... + EndSplashScreen( ); + } + break; + + case GS_MOVIE: + { + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + bool bEndMovies = false; + if (pRegMgr->IsValid()) + { + uint32 nGameRuns = pRegMgr->Get( "GameRuns",0 ); + if( nGameRuns > 1 ) + bEndMovies = true; + } + + // They pressed a mouse button - next movie + NextMovie( bEndMovies ); + } + break; + + case GS_DEMOSCREEN: + { + // They pressed a mouse button - next demo screen + NextDemoScreen(); + } + break; + + } +} + + +void CInterfaceMgr::OnLButtonDblClick(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( ) ) + return; + + if (m_MessageBox.IsVisible()) + { + return; + } + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnLButtonDblClick(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnLButtonDblClick(x,y); + } + break; + } + +} + +void CInterfaceMgr::OnRButtonUp(int x, int y) +{ + if (m_MessageBox.IsVisible()) + { + return; + } + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnRButtonUp(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnRButtonUp(x,y); + } break; + + case GS_POPUP: + { + if(m_PopupText.IsVisible() && !g_bLockPopup) + { + m_PopupText.Close(); + } + g_bLockPopup = false; + } break; + } + + +} + +void CInterfaceMgr::OnRButtonDown(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + if (m_MessageBox.IsVisible()) + { + return; + } + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnRButtonDown(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnRButtonDown(x,y); + } + break; + + case GS_SPLASHSCREEN: + { + // They pressed a button - end splash screen... + EndSplashScreen( ); + } + break; + + case GS_MOVIE: + { + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + bool bEndMovies = false; + if (pRegMgr->IsValid()) + { + uint32 nGameRuns = pRegMgr->Get( "GameRuns",0 ); + if( nGameRuns > 1 ) + bEndMovies = true; + } + + // They pressed a button - next movie... + NextMovie( bEndMovies ); + } + break; + + case GS_DEMOSCREEN: + { + // They pressed a button - next demo screen... + NextDemoScreen(); + } + break; + + } +} + +void CInterfaceMgr::OnRButtonDblClick(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + if (m_MessageBox.IsVisible()) + { + return; + } + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnRButtonDblClick(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnRButtonDblClick(x,y); + } + break; + } + +} + +void CInterfaceMgr::OnMouseMove(int x, int y) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + m_CursorPos.x = x; + m_CursorPos.y = y; + + if (GetConsoleInt("ShowMousePos",0) > 0) + { + float fx = (float)x / g_pInterfaceResMgr->GetXRatio(); + float fy = (float)y / g_pInterfaceResMgr->GetYRatio(); + g_pLTClient->CPrint("MousePos (%0.0f,%0.0f)",fx,fy); + } + + if (m_MessageBox.IsVisible()) + { + m_MessageBox.OnMouseMove(x,y); + return; + } + + switch (m_eGameState) + { + case GS_SCREEN: + { + GetScreenMgr( )->OnMouseMove(x,y); + } + break; + + case GS_MENU: + { + m_MenuMgr.OnMouseMove(x,y); + } + break; + } +} + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateOverlays() +// +// PURPOSE: Update the overlay used as a scope crosshair +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateOverlays() +{ + if (!m_nOverlayCount) return; + + + LTVector vPos(0, 0, 0), vU, vR, vF, vTemp; + LTRotation rRot; + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + LTBOOL bDrawnOne = LTFALSE; + for (int i = 0; i < NUM_OVERLAY_MASKS; i++) + { + if (m_hOverlays[i]) + { + if ((!bDrawnOne || i >= OVM_NON_EXCLUSIVE) && GS_PLAYING == GetGameState()) + { + if (i < OVM_NON_EXCLUSIVE) + { + bDrawnOne = LTTRUE; + } + + if (g_pLayoutMgr->IsMaskSprite((eOverlayMask)i)) + { + VEC_COPY(vTemp,g_vOverlaySpriteScale); + } + else + { + VEC_COPY(vTemp,g_vOverlayModelScale); + } + VEC_MULSCALAR(vTemp, vTemp, m_fOverlayScaleMult[i]); + + g_pLTClient->SetObjectScale(m_hOverlays[i], &vTemp); + + g_pCommonLT->SetObjectFlags(m_hOverlays[i], OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + + } + else + { + g_pCommonLT->SetObjectFlags(m_hOverlays[i], OFT_Flags, 0, FLAG_VISIBLE); + } + } + } +} + +void CInterfaceMgr::CreateOverlay(eOverlayMask eMask) +{ + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + // Already created this mask + if (m_hOverlays[eMask]) return; + + + m_fOverlayScaleMult[eMask] = g_pLayoutMgr->GetMaskScale(eMask); + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_SPRITE; + + LTVector vPos(0,0,0), vU, vR, vF, vTemp; + LTRotation rRot; + +// g_pLTClient->GetObjectPos(hCamera, &vPos); +// g_pLTClient->GetObjectRotation(hCamera, &rRot); + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + if (g_pLayoutMgr->IsMaskSprite(eMask)) + { + + VEC_MULSCALAR(vTemp, vF, g_fOverlaySpriteDist); + VEC_ADD(vPos, vPos, vTemp); + createStruct.m_Flags = FLAG_VISIBLE | FLAG_SPRITE_NOZ | FLAG_FOGDISABLE | FLAG_NOLIGHT | FLAG_REALLYCLOSE; + VEC_COPY(createStruct.m_Pos, vPos); + createStruct.m_Rotation = rRot; + + + char sprName[128] = ""; + g_pLayoutMgr->GetMaskSprite(eMask,sprName,sizeof(sprName)); + + if (sprName[0]) + { + SAFE_STRCPY(createStruct.m_Filename, sprName); + m_hOverlays[eMask] = g_pLTClient->CreateObject(&createStruct); + m_nOverlayCount++; + + // [KLS 5/15/02] Change the alpha value of the sprite... + // [JRG 9/1/02] Added alpha values to layout butes + float r, g, b, a; + g_pLTClient->GetObjectColor(m_hOverlays[eMask], &r, &g, &b, &a); + + a = g_pLayoutMgr->GetMaskAlpha(eMask); + + g_pLTClient->SetObjectColor(m_hOverlays[eMask], r, g, b, a); + } + } + else + { + VEC_MULSCALAR(vTemp, vF, g_fOverlayModelDist); + VEC_ADD(vPos, vPos, vTemp); + createStruct.m_Flags = FLAG_VISIBLE | FLAG_NOLIGHT; + VEC_COPY(createStruct.m_Pos, vPos); + createStruct.m_Rotation = rRot; + + char modName[128] = ""; + char skinName[128] = ""; + g_pLayoutMgr->GetMaskModel(eMask,modName,sizeof(modName)); + g_pLayoutMgr->GetMaskSkin(eMask,skinName,sizeof(skinName)); + + createStruct.m_ObjectType = OT_MODEL; + + if (modName[0] && skinName[0]) + { + SAFE_STRCPY(createStruct.m_Filename, modName); + SAFE_STRCPY(createStruct.m_SkinName, skinName); + m_hOverlays[eMask] = g_pLTClient->CreateObject(&createStruct); +/* + LTVector vColor; + float a; + g_pLTClient->GetObjectColor(m_hOverlays[eMask], &(vColor.x), &(vColor.y), &(vColor.z), &a); + g_pLTClient->SetObjectColor(m_hOverlays[eMask], vColor.x, vColor.y, vColor.z, 0.999f); +*/ + m_nOverlayCount++; + } + } + + + // Update to make sure everything is scaled correctly before the next + // frame is rendered... + + UpdateOverlays(); +} + +void CInterfaceMgr::RemoveOverlay(eOverlayMask eMask) +{ + if (m_hOverlays[eMask]) + { + m_nOverlayCount--; + g_pLTClient->RemoveObject(m_hOverlays[eMask]); + m_hOverlays[eMask] = LTNULL; + } +} + + + +void CInterfaceMgr::BeginScope(LTBOOL bVisionMode, LTBOOL bCamera) +{ + if (bVisionMode) + { + CreateOverlay(OVM_STATIC); + } + + CreateOverlay(OVM_SCOPE); + + if (bCamera) + { + CreateOverlay(OVM_CAMERA); + } +} + +void CInterfaceMgr::EndScope() +{ + RemoveOverlay(OVM_SCOPE); + RemoveOverlay(OVM_STATIC); + RemoveOverlay(OVM_CAMERA); + RemoveOverlay(OVM_CAMERA_TARGET); + +} + +void CInterfaceMgr::BeginZoom(LTBOOL bIn) +{ + CreateOverlay(bIn ? OVM_ZOOM_IN : OVM_ZOOM_OUT); +} + +void CInterfaceMgr::EndZoom() +{ + RemoveOverlay(OVM_ZOOM_IN); + RemoveOverlay(OVM_ZOOM_OUT); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateScreenFade() +// +// PURPOSE: Update the screen fade +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateScreenFade(bool bUpdateAlpha /*=true*/) +{ + if (!m_bScreenFade || m_fTotalFadeTime < 0.1f) return; + + LTRect rcSrc; + rcSrc.Init(0, 0, 2, 2); + + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + uint32 dwWidth = 640, dwHeight = 480; + g_pLTClient->GetSurfaceDims(hScreen, &dwWidth, &dwHeight); + + HLTCOLOR hTransColor = g_pLTClient->SetupColor1(1.0f, 1.0f, 1.0f, LTTRUE); + + // Initialize the surface if necessary... + + if (!m_bFadeInitialized) + { + if (m_hFadeSurface) + { + g_pLTClient->DeleteSurface(m_hFadeSurface); + } + + m_hFadeSurface = g_pLTClient->CreateSurface(2, 2); + if (!m_hFadeSurface) return; + + g_pLTClient->SetSurfaceAlpha(m_hFadeSurface, 1.0f); + g_pLTClient->FillRect(m_hFadeSurface, &rcSrc, kBlack); + g_pLTClient->OptimizeSurface(m_hFadeSurface, hTransColor); + + m_fCurFadeTime = m_fTotalFadeTime; + m_bFadeInitialized = LTTRUE; + } + + + // Fade the screen if the surface is around... + + if (m_hFadeSurface) + { + float fTimeDelta = m_bFadeIn ? m_fCurFadeTime : (m_fTotalFadeTime - m_fCurFadeTime); + + float fLinearAlpha = (fTimeDelta / m_fTotalFadeTime); + fLinearAlpha = fLinearAlpha < 0.0f ? 0.0f : (fLinearAlpha > 1.0f ? 1.0f : fLinearAlpha); + + float fAlpha = 1.0f - WaveFn_SlowOn(1.0f - fLinearAlpha); + fAlpha = fAlpha < 0.0f ? 0.0f : (fAlpha > 1.0f ? 1.0f : fAlpha); + + g_pLTClient->SetSurfaceAlpha(m_hFadeSurface, fAlpha); + + LTRect rcDest; + rcDest.Init(0, 0, dwWidth, dwHeight); + + g_pLTClient->ScaleSurfaceToSurfaceTransparent(hScreen, m_hFadeSurface, &rcDest, &rcSrc, hTransColor); + + // The alpha value is based on the fade time, only update it if + // we want the alpha value to change... + + if (bUpdateAlpha) + { + m_fCurFadeTime -= g_pGameClientShell->GetFrameTime(); + } + } + + // See if we're done... + + if (ScreenFadeDone()) + { + if (m_hFadeSurface) + { + g_pLTClient->DeleteSurface(m_hFadeSurface); + m_hFadeSurface = LTNULL; + } + + // If we faded in we're done... + + if (m_bFadeIn) + { + m_bFadeInitialized = LTFALSE; + m_bScreenFade = LTFALSE; + } + else + { + // We need to keep the screen black until it is faded + // back in, so we'll just make sure the screen is clear + // (and not set m_bScreenFade so we'll be called to + // clear the screen every frame until we fade back in)... + + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN, 0); + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::AbortScreenFade() +// +// PURPOSE: Cancel the screen fade +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::AbortScreenFade() +{ + if (m_hFadeSurface) + { + g_pLTClient->DeleteSurface(m_hFadeSurface); + m_hFadeSurface = LTNULL; + } + + m_bFadeInitialized = LTFALSE; + m_bScreenFade = LTFALSE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateLetterBox() +// +// PURPOSE: Update the letterbox +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateLetterBox() +{ + LTBOOL bOn = (g_vtLetterBoxDisabled.GetFloat() ? LTFALSE : (m_bLetterBox || g_vtLetterBox.GetFloat())); + + float fTime = g_pLTClient->GetTime(); + + if (bOn && !m_bWasLetterBox) + { + // Handle being turned on... + + m_fLetterBoxAlpha = 0.0f; + m_fLetterBoxFadeEndTime = fTime + g_vtLetterBoxFadeInTime.GetFloat(); + } + else if (!bOn && m_bWasLetterBox) + { + // Handle being turned off... + + m_fLetterBoxAlpha = 1.0f; + m_fLetterBoxFadeEndTime = fTime + g_vtLetterBoxFadeOutTime.GetFloat(); + } + + // Store the current state of being on or off... + + m_bWasLetterBox = bOn; + + + float fTimeLeft = m_fLetterBoxFadeEndTime - fTime; + if (fTimeLeft < 0.0f) fTimeLeft = 0.0f; + + // Calculate the current alpha... + + if (bOn) + { + // Fading in... + + float fFadeTime = g_vtLetterBoxFadeInTime.GetFloat(); + + if (fFadeTime <= 0.0f || fTimeLeft <= 0.0f) + { + m_fLetterBoxAlpha = 1.0f; + } + else + { + m_fLetterBoxAlpha = 1.0f - (fTimeLeft / fFadeTime); + } + } + else + { + // Fading out... + + float fFadeTime = g_vtLetterBoxFadeOutTime.GetFloat(); + + if (fFadeTime <= 0.0f || fTimeLeft <= 0.0f) + { + m_fLetterBoxAlpha = 0.0f; + } + else + { + m_fLetterBoxAlpha = fTimeLeft / fFadeTime; + } + } + + + // If not using letter box, and we faded it out, we're done... + + if (!bOn && m_fLetterBoxAlpha <= 0.0f) return; + + + // Determine the border size... + + float fBorderPercent = 0.0f; + float fLetterBoxPercent = g_pClientButeMgr->GetCameraAttributeFloat(CAMERA_BUTE_LETTERBOXPERCENT); + + if (fLetterBoxPercent > 0.01f && fLetterBoxPercent <= 1.0f) + { + fBorderPercent = (1.0f - fLetterBoxPercent) / 2.0f; + } + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + uint32 dwWidth = 640, dwHeight = 480; + g_pLTClient->GetSurfaceDims(hScreen, &dwWidth, &dwHeight); + + g_pLTClient->SetSurfaceAlpha(m_hLetterBoxSurface, m_fLetterBoxAlpha); + + int nBorderSize = (int) (float(dwHeight) * fBorderPercent); + + LTRect rcDest; + rcDest.Init(0, 0, dwWidth, nBorderSize); + + LTRect rcSrc; + rcSrc.Init(0, 0, 2, 2); + + HLTCOLOR hTransColor = g_pLTClient->SetupColor1(1.0f, 1.0f, 1.0f, LTTRUE); + + // Cover top of screen... + + g_pLTClient->ScaleSurfaceToSurfaceTransparent(hScreen, m_hLetterBoxSurface, + &rcDest, &rcSrc, hTransColor); + + // Cover bottom of screen... + + rcDest.Init(0, dwHeight - nBorderSize, dwWidth, dwHeight); + g_pLTClient->ScaleSurfaceToSurfaceTransparent(hScreen, m_hLetterBoxSurface, + &rcDest, &rcSrc, hTransColor); +/* + if (m_nBorderSize == 0) + { + uint32 dwHeight = 448; + m_nBorderSize = (int) (float(dwHeight) * fBorderPercent); + m_LetterBox[0].verts[2].y = m_LetterBox[0].verts[3].y = m_nBorderSize; + m_LetterBox[1].verts[0].y = m_LetterBox[1].verts[1].y = dwHeight - m_nBorderSize; + } + // Set the alpha + m_LetterBox[0].rgba.a = m_LetterBox[1].rgba.a = 255.0 * m_fLetterBoxAlpha; + + g_pLTDrawprim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pLTDrawprim->SetColorOp(DRAWPRIM_MODULATE); + g_pLTDrawprim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + g_pLTDrawprim->SetZBufferMode(DRAWPRIM_NOZ); + g_pLTDrawprim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pLTDrawprim->SetClipMode(DRAWPRIM_FASTCLIP); + g_pLTDrawprim->SetFillMode(DRAWPRIM_FILL); + + // draw the two polys + g_pLTDrawprim->DrawPrim(m_LetterBox, 2); + +*/ +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::AllowCameraMovement +// +// PURPOSE: Can the camera move (while in this state) +// +// --------------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::AllowCameraMovement() +{ + switch (m_eGameState) + { + case GS_MENU : + case GS_POPUP : + return LTFALSE; + break; + + case GS_PLAYING: + return !g_pChatInput->IsVisible(); + break; + + default : + break; + } + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::AllowCameraRotation +// +// PURPOSE: Can the camera rotate (while in this state) +// +// --------------------------------------------------------------------------- // + +LTBOOL CInterfaceMgr::AllowCameraRotation() +{ + switch( m_eGameState ) + { + case GS_MENU: + case GS_POPUP: + return LTFALSE; + break; + + default: + break; + } + + return LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::CreateInterfaceBackground +// +// PURPOSE: Create the sprite used as a background for the menu +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::CreateInterfaceBackground() +{ + char sprName[128] = ""; + + BSCREATESTRUCT bcs; + + LTVector vTemp, vScale; + LTVector vPos, vU, vR, vF; + LTRotation rRot; + + g_pLTClient->GetObjectPos(m_hInterfaceCamera, &vPos); + g_pLTClient->GetObjectRotation(m_hInterfaceCamera, &rRot); + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + if( !g_pLayoutMgr ) + { + UBER_ASSERT( 0, "CInterfaceMgr::CreateInterfaceBackground: No LayoutMgr" ); + return; + } + + vScale = g_vBaseBackScale * g_pLayoutMgr->GetBackSpriteScale(); + + + VEC_MULSCALAR(vTemp, vF, g_fBackDist); +// VEC_MULSCALAR(vTemp, vTemp, g_pInterfaceResMgr->GetXRatio()); + VEC_ADD(vPos, vPos, vTemp); + + VEC_COPY(bcs.vPos, vPos); + bcs.rRot = rRot; + VEC_COPY(bcs.vInitialScale, vScale); + VEC_COPY(bcs.vFinalScale, vScale); + + VEC_SET(bcs.vInitialColor, 1.0f, 1.0f, 1.0f); + VEC_SET(bcs.vFinalColor, 1.0f, 1.0f, 1.0f); + bcs.bUseUserColors = LTTRUE; + + + g_pLayoutMgr->GetBackSprite(sprName,sizeof(sprName)); + if ( sprName[0] ) + { + bcs.pFilename = sprName; + bcs.dwFlags = FLAG_VISIBLE | FLAG_FOGDISABLE | FLAG_NOLIGHT; + bcs.nType = OT_SPRITE; + bcs.fInitialAlpha = 1.0f; + bcs.fFinalAlpha = 1.0f; + bcs.fLifeTime = 1000000.0f; + + if (m_BackSprite.Init(&bcs)) + { + m_BackSprite.CreateObject(g_pLTClient); + } + } + +//TEST: Mouse Light +/* + if (!g_hLight) + { + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_ONLYLIGHTOBJECTS; + + g_pLTClient->GetObjectPos(m_hInterfaceCamera, &createStruct.m_Pos); + //vPos -= (vF * (g_fBackDist / 2.0f)); + //createStruct.m_Pos = vPos; + + createStruct.m_Pos.x += 10.0f; + createStruct.m_Pos.y += 25.0f; + createStruct.m_Pos.z -= 300.0f; + + g_hLight = g_pLTClient->CreateObject(&createStruct); + + g_pLTClient->SetLightColor(g_hLight, 1.0f, 1.0f, 1.0f); + g_pLTClient->SetLightRadius(g_hLight, 1500.0f); + } +*/ +// END TEST!!! + +} + +void CInterfaceMgr::UpdateInterfaceBackground() +{ + +/* + if (GetConsoleInt("MouseLight",0)) + { + LTVector vPos; + LTRotation rRot; + + g_pLTClient->GetObjectPos(m_hInterfaceCamera, &vPos); + g_pLTClient->GetObjectRotation(m_hInterfaceCamera, &rRot); + + vPos.z -= 300.0f; + + float x = ((float)m_CursorPos.x - ((float)g_pInterfaceResMgr->GetScreenWidth() / 2.0f)); + float y = (((float)g_pInterfaceResMgr->GetScreenHeight() / 2.0f) - (float)m_CursorPos.y); + + g_pLTClient->CPrint("light pos: (%0.2f,%0.2f)",x,y); + vPos.x+=x; + vPos.y+=y; + + g_pLTClient->SetObjectPos(g_hLight, &vPos); + // g_pLTClient->SetObjectPos(m_BackSprite.GetObject(), &vPos); + } +*/ +} + +void CInterfaceMgr::RemoveInterfaceBackground() +{ + m_BackSprite.Term(); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::AddInterfaceSFX +// +// PURPOSE: Add a SFX object to the interface +// +// --------------------------------------------------------------------------- // +void CInterfaceMgr::AddInterfaceSFX(CSpecialFX* pSFX, ISFXType eType) +{ + if (!pSFX) return; + + SFXArray::iterator iter = m_InterfaceSFX.begin(); + uint32 index = 0; + while (iter != m_InterfaceSFX.end() && (*iter) != pSFX) + { + iter++; + index++; + } + if (index >= m_InterfaceSFX.size()) + { + if (m_InterfaceSFX.size() < MAX_INTERFACE_SFX) + { + m_InterfaceSFX.push_back(pSFX); + } + } + + HOBJECT hObj = pSFX->GetObject(); + if (!hObj) + return; + + if (GetObjectType(hObj)== OT_MODEL) + { + char* pAniName = LTNULL; + switch (eType) + { + case IFX_NORMAL : + pAniName = "Interface"; + break; + + case IFX_ATTACH : + pAniName = "Hand"; + break; + + case IFX_WORLD : + pAniName = "World"; + break; + + case IFX_MENU_ATTACH: // abm 3/7/02 new fx type for when an ani is prespecified + pAniName = LTNULL; + break; + + default : + pAniName = "World"; + break; + + + } + + if (pAniName) + { + uint32 dwAni = g_pLTClient->GetAnimIndex(hObj, pAniName); + if (dwAni != INVALID_ANI) + { + g_pLTClient->SetModelAnimation(hObj, dwAni); + } + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::RemoveInterfaceSFX +// +// PURPOSE: Remove a SFX object from the interface +// +// --------------------------------------------------------------------------- // +void CInterfaceMgr::RemoveInterfaceSFX(CSpecialFX* pSFX) +{ + SFXArray::iterator iter = m_InterfaceSFX.begin(); + uint32 index = 0; + while (iter != m_InterfaceSFX.end() && (*iter) != pSFX) + { + iter++; + } + if (iter != m_InterfaceSFX.end()) + { + m_InterfaceSFX.erase(iter); + } +} + +void CInterfaceMgr::AddInterfaceFX(CLIENTFX_LINK* pLink, char *pFXName, LTVector vPos, LTBOOL bLoop) +{ + uint32 dwFlags = 0; + if (bLoop) + dwFlags |= FXFLAG_LOOP; + + CLIENTFX_CREATESTRUCT fxInit(pFXName , dwFlags, vPos ); + CLIENTFX_LINK fxLink; + if (!pLink) + pLink = &fxLink; + + m_InterfaceFXMgr.CreateClientFX(pLink, fxInit, LTTRUE ); + + if (pLink->IsValid()) + { + pLink->GetInstance()->SetPos(vPos,vPos); + pLink->GetInstance()->Show(); + } + else + { + DebugCPrint(1,"ERROR: Failed to create interface FX %s",pFXName); + } + +} +void CInterfaceMgr::RemoveInterfaceFX() +{ + m_InterfaceFXMgr.ShutdownAllFX(); + m_SelectFX.ClearLink(); + m_MouseFX.ClearLink(); +} + +void CInterfaceMgr::RemoveInterfaceFX(CLIENTFX_LINK *pLink) +{ + m_InterfaceFXMgr.ShutdownClientFX(pLink); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: RemoveAllInterfaceSFX +// +// PURPOSE: Remove the 3D objects used as a background for the menu +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::RemoveAllInterfaceSFX() +{ + m_InterfaceSFX.clear(); + RemoveInterfaceBackground(); + RemoveInterfaceLights(); + + m_InterfaceFXMgr.ShutdownAllFX(); + m_SelectFX.ClearLink(); + m_MouseFX.ClearLink(); +} + +void CInterfaceMgr::AddInterfaceLight(HOBJECT hLight) +{ + if (!hLight) return; + + ObjectArray::iterator iter = m_InterfaceLights.begin(); + while (iter != m_InterfaceLights.end() && (*iter) != hLight) + { + iter++; + } + if (iter == m_InterfaceLights.end()) + { + if (m_InterfaceLights.size() < MAX_INTERFACE_LIGHTS) + { + m_InterfaceLights.push_back(hLight); + } + } + +} + +void CInterfaceMgr::RemoveInterfaceLights() +{ + ObjectArray::iterator iter = m_InterfaceLights.begin(); + while (iter != m_InterfaceLights.end()) + { + if( *iter ) + { + g_pLTClient->RemoveObject((*iter)); + } + + iter++; + } + m_InterfaceLights.clear(); +} + + +void CInterfaceMgr::UpdateModelAnimations(float fCurFrameDelta) +{ + for (uint32 i = 0; i < m_InterfaceSFX.size(); i++) + { + uint32 nObjType; + g_pCommonLT->GetObjectType(m_InterfaceSFX[i]->GetObject(), &nObjType); + if (nObjType == OT_MODEL) + { + g_pModelLT->UpdateMainTracker(m_InterfaceSFX[i]->GetObject(), fCurFrameDelta); + } + } + + CLinkList* pInstList = m_InterfaceFXMgr.GetActiveFXList(); + CLIENTFX_INSTANCE *pInst; + + CLinkListNode *pInstNode = pInstList->GetHead(); + while( pInstNode ) + { + pInst = pInstNode->m_Data; + + CLinkListNode *pActiveNode; + CBaseFX *pFX; + + pActiveNode = pInst->m_collActiveFX.GetHead(); + while( pActiveNode ) + { + pFX = pActiveNode->m_Data.m_pFX; + if( pFX) + { + uint32 nObjType; + g_pCommonLT->GetObjectType(pFX->GetFXObject(), &nObjType); + if (nObjType == OT_MODEL) + { + g_pModelLT->UpdateMainTracker(pFX->GetFXObject(), fCurFrameDelta); + } + } + pActiveNode = pActiveNode->m_pNext; + } + pInstNode = pInstNode->m_pNext; + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::UpdateInterfaceSFX +// +// PURPOSE: Update the 3D Objects used as a background for the menu +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::UpdateInterfaceSFX() +{ + +//TEST: Mouse Light +// UpdateInterfaceBackground(); + + static LTIntPt s_oldPos = m_CursorPos; + int dist = abs(s_oldPos.x - m_CursorPos.x) + abs(s_oldPos.y - m_CursorPos.y); + if (dist > 1) + ShowMouseFX(); + else + { + if (m_MouseFX.IsValid()) + m_MouseFX.GetInstance()->Hide(); + } + s_oldPos = m_CursorPos; + + uint32 numSfx = m_InterfaceSFX.size(); + HLOCALOBJ objs[kMaxFX]; + + int next = 0; + int infoIndex = 0; + for (uint32 i = 0; i < numSfx; i++) + { + if (m_InterfaceSFX[i]->Update()) + { + FXRenderList::iterator iter = renderList.begin(); + + while (iter != renderList.end() && (*iter)->nLayer < m_InterfaceSFX[i]->GetMenuLayer()) + { + iter++; + } + + if(infoIndex < kMaxFX) + { + sRenderInfo[infoIndex].hObj = m_InterfaceSFX[i]->GetObject(); + sRenderInfo[infoIndex].nLayer = m_InterfaceSFX[i]->GetMenuLayer(); + renderList.insert(iter,&sRenderInfo[infoIndex]); + infoIndex++; + } + } + } + CLinkList* pInstList = m_InterfaceFXMgr.GetActiveFXList(); + CLIENTFX_INSTANCE *pInst; + + CLinkListNode *pInstNode = pInstList->GetHead(); + + while( pInstNode ) + { + pInst = pInstNode->m_Data; + + CLinkListNode *pActiveNode; + CBaseFX *pFX; + + pActiveNode = pInst->m_collActiveFX.GetHead(); + while( pActiveNode ) + { + pFX = pActiveNode->m_Data.m_pFX; + if( pFX) + { + FXRenderList::iterator iter = renderList.begin(); + + while (iter != renderList.end() && (*iter)->nLayer < pFX->GetMenuLayer()) + { + iter++; + } + + if(infoIndex < kMaxFX) + { + sRenderInfo[infoIndex].hObj = pFX->GetFXObject(); + sRenderInfo[infoIndex].nLayer = pFX->GetMenuLayer(); + renderList.insert(iter,&sRenderInfo[infoIndex]); + infoIndex++; + } + } + pActiveNode = pActiveNode->m_pNext; + } + pInstNode = pInstNode->m_pNext; + } + + + // Render the effects + m_InterfaceFXMgr.RenderAllActiveFX( true ); + + //step through the render list + FXRenderList::iterator iter = renderList.begin(); + static char szTmp[256]; + static char szNum[16]; + while (iter != renderList.end()) + { + next = 0; + + //get the menu layer of the first item + uint8 layer = (*iter)->nLayer; + + //add each item of that same layer to the list of objects to be rendered during this pass + while (iter != renderList.end() && next < kMaxFX && (*iter)->nLayer == layer) + { + objs[next] = (*iter)->hObj; + next++; + iter++; + } + + //add the lights + for ( ObjectArray::iterator iter = m_InterfaceLights.begin( ); iter != m_InterfaceLights.end() && + next < kMaxFX; iter++ ) + { + HOBJECT hObj = *iter; + if ( hObj ) + { + objs[next] = hObj; + next++; + } + } + + + g_pLTClient->RenderObjects(m_hInterfaceCamera, objs, next,g_pLTClient->GetFrameTime()); + + } + + + //the updating of the active effects comes at the end of the update so that way chained + //effects will be able to setup prior to the next rendering and prevent popping issues + m_InterfaceFXMgr.UpdateAllActiveFX( true ); + + renderList.clear(); +} + + +/******************************************************************/ +void CInterfaceMgr::RequestInterfaceSound(InterfaceSound eIS) +{ + if (m_eNextSound <= eIS) + { +// ClearInterfaceSound(); + + m_eNextSound = eIS; + +// m_hSound = UpdateInterfaceSound(); + UpdateInterfaceSound(); + } +} + +void CInterfaceMgr::ClearInterfaceSound() +{ + m_eNextSound = IS_NONE; + + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hSound); + m_hSound = LTNULL; + } +} + +HLTSOUND CInterfaceMgr::UpdateInterfaceSound() +{ + HLTSOUND hSnd = LTNULL; + + switch (m_eNextSound) + { + case IS_SELECT: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_CHANGE: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundChange(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_PAGE: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundPageChange(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_UP: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundArrowUp(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_DOWN: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundArrowDown(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_LEFT: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundArrowLeft(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_RIGHT: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundArrowRight(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + case IS_NO_SELECT: + hSnd = g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundUnselectable(), NULL /*PLAYSOUND_GETHANDLE*/); + break; + default : + break; + } + m_eNextSound = IS_NONE; + + return hSnd; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::NextMovie +// +// PURPOSE: Go to the next movie, if there is one +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::NextMovie(bool bEndMovies /*=false*/) +{ + ILTVideoMgr* pVideoMgr = g_pLTClient->VideoMgr(); + if (!pVideoMgr) return; + + if (!(GetAdvancedOptions() & AO_MOVIES) || g_vtDisableMovies.GetFloat()) + { + SwitchToScreen(SCREEN_ID_MAIN); + return; + } + + if (m_hMovie) + { + pVideoMgr->StopVideo(m_hMovie); + m_hMovie = LTNULL; + } + + char* pMovie = (bEndMovies ? LTNULL : GetCurrentMovie()); + + if (!pMovie || pVideoMgr->StartOnScreenVideo(pMovie, PLAYBACK_FULLSCREEN, m_hMovie) != LT_OK) + { + m_nCurMovie = 0; + m_hMovie = LTNULL; + SwitchToScreen(SCREEN_ID_MAIN); + return; + } + + m_nCurMovie++; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::GetCurrentMovie +// +// PURPOSE: Get the name of the current movie to play... +// +// --------------------------------------------------------------------------- // + +char* CInterfaceMgr::GetCurrentMovie() +{ + char* pMovie = LTNULL; + + switch (m_nCurMovie) + { + case eSierra : + pMovie = "Movies\\sierralogo.bik"; + break; + + case eMonolith : + pMovie = "Movies\\lithLogo.bik"; + break; + + case eJupiter : + pMovie = "Movies\\Jupiter.bik"; + break; + + case eVUG : + pMovie = "Movies\\VUGlogo.bik"; + break; + + case eNVidia : + pMovie = "Movies\\nvidia.bik"; + break; + + default : break; + } + + return pMovie; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::NextDemoScreen +// +// PURPOSE: Go to the next marketing screen, if there is one +// +// --------------------------------------------------------------------------- // + +void CInterfaceMgr::NextDemoScreen() +{ + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + + if (g_hDemo) + { + g_pLTClient->DeleteSurface(g_hDemo); + g_hDemo = LTNULL; + } + g_nDemo++; + if (g_nDemo < g_nNumDemoScreens) + { + g_hDemo = g_pLTClient->CreateSurfaceFromBitmap(g_szDemoScreens[g_nDemo]); + } + if (!g_hDemo) + { + m_bSeenDemoScreens = LTTRUE; + } +} + + +void CInterfaceMgr::ShowDemoScreens(LTBOOL bQuit) +{ + m_bQuitAfterDemoScreens = bQuit; + m_bSeenDemoScreens = LTFALSE; + ChangeState(GS_DEMOSCREEN); +} + + + +// Find the filename in the missing filename result.. +const char *FindFilename(const char *pFileName) +{ + // Jump to the end.. + const char *pResult = &pFileName[strlen(pFileName)]; + // Look for a backslash + while ((pResult != pFileName) && (pResult[-1] != '\\')) + --pResult; + // Return that.. + return pResult; +} + +void CInterfaceMgr::Disconnected(uint32 nDisconnectFlag) +{ + eScreenID destination = SCREEN_ID_MULTI; + // Get the disconnect code. + uint32 nDisconnectCode = g_pClientMultiplayerMgr->GetDisconnectCode(); + const char *pDisconnectMsg = g_pClientMultiplayerMgr->GetDisconnectMsg(); + uint32 nMsgId = 0; + + switch (nDisconnectCode) + { + case eDisconnect_NotSameGUID: + nMsgId = IDS_NETERR_NOTSAMEGUID; + break; + case eDisconnect_WrongPassword: + nMsgId = IDS_NETERR_WRONGPASS; + destination = SCREEN_ID_MULTI; + break; + case eDisconnect_BadCdKey: + nMsgId = IDS_NETERR_VERIFYCDKEYFAIL; + destination = SCREEN_ID_MULTI; + break; + case eDisconnect_InvalidAssets: + nMsgId = IDS_NETERR_INVALIDASSETS; + destination = SCREEN_ID_MULTI; + break; + case eDisconnect_Banned: + nMsgId = IDS_NETERR_BANNED; + destination = SCREEN_ID_MULTI; + break; + + case 0 : // Avoid the warning.. + default : + { + if( nDisconnectFlag == LT_REJECTED ) + { + nMsgId = IDS_KICKED; + } + else if ( nDisconnectFlag == LT_MISSINGWORLDFILE ) + { + nMsgId = IDS_MISSING_WORLD; + } + else + { + nMsgId = IDS_DISCONNECTED_FROM_SERVER; + } + + DebugCPrint(0,"CInterfaceMgr::Disconnected(%d)", nDisconnectCode); + } + break; + } + + // We joined using the command line, we need to visit the main screen before + // any other screen, since we didn't go through the normal screen + // progression. + if( GetCommandLineJoin( )) + { + destination = SCREEN_ID_MAIN; + } + + g_pClientMultiplayerMgr->ClearDisconnectCode(); + + if (GetGameState() == GS_LOADINGLEVEL) + { + LoadFailed( destination, nMsgId ); + } + else + { + if (!m_bIntentionalDisconnect) + { + MBCreate mb; + char szMsg[1024] = ""; + LoadString( nMsgId, szMsg, sizeof(szMsg)); + ShowMessageBox(szMsg,&mb); + } + + ClearAllScreenBuffers(); + SwitchToScreen(destination); + } +} + +void CInterfaceMgr::ConnectionFailed(uint32 nConnectionError) +{ + uint32 nMsgId = -1; + eScreenID eScreenToShow = SCREEN_ID_NONE; + if (IsMultiplayerGame()) + { + bool bWasHosting = g_pClientMultiplayerMgr->GetStartGameRequest( ).m_Type == STARTGAME_HOST; + switch( g_pClientMultiplayerMgr->GetServerGameOptions( ).m_eServerStartResult ) + { + default: + break; + case eServerStartResult_Failed: + nMsgId = bWasHosting ? IDS_NETERR_HOSTSESSION : IDS_NETERR_JOINSESSION; + break; + case eServerStartResult_NetworkError: + nMsgId = IDS_NETERR_SELECTSERVICE; + break; + } + + if( GetCommandLineJoin( )) + { + eScreenToShow = SCREEN_ID_MAIN; + } + else + { + eScreenToShow = bWasHosting ? SCREEN_ID_HOST : SCREEN_ID_JOIN; + } + } + else + { + eScreenToShow = SCREEN_ID_MAIN; + } + + MBCreate mb; + if (nConnectionError == LT_REJECTED) + { + nMsgId = IDS_SERVERFULL; + } + + LoadFailed( eScreenToShow, nMsgId ); +} + +// hides or shows cursor based on current game state +void CInterfaceMgr::UpdateCursorState() +{ + switch (m_eGameState) + { + case GS_EXITINGLEVEL: + case GS_PLAYING: + { + // 2nd param specifiies whether or not to lock the cursor to the + // center of the screen + m_CursorMgr.UseCursor(m_MessageBox.IsVisible(),!m_MessageBox.IsVisible()); + } + break; + + case GS_LOADINGLEVEL: + case GS_SPLASHSCREEN: + case GS_POPUP: + case GS_PAUSED: + case GS_DEMOSCREEN: + case GS_MOVIE: + case GS_UNDEFINED: + { + m_CursorMgr.UseCursor(FALSE); + } + break; + + case GS_MENU: + case GS_SCREEN: + default: + { + m_CursorMgr.UseCursor(TRUE); + } + } +} + + + +void CInterfaceMgr::UpdateClientList() +{ + if (IsMultiplayerGame()) + { + // Don't send update requests more than once per second + if ((g_pLTClient->GetTime() - m_fLastUpdateRequestTime) > 1.0f) + { + DebugCPrint(2,"Asking for clientlist update"); + SendEmptyServerMsg(MID_MULTIPLAYER_UPDATE, MESSAGE_GUARANTEED); + m_fLastUpdateRequestTime = g_pLTClient->GetTime(); + } + } +} + + + +LTVector CInterfaceMgr::GetWorldFromScreenPos(LTIntPt pos, float fDepth) +{ + LTVector vPos; + + float fx = (2.0f * ((float)pos.x / (float)g_pInterfaceResMgr->GetScreenWidth() )) - 1.0f; + float fy = 1.0f - (2.0f * ((float)pos.y / (float)g_pInterfaceResMgr->GetScreenHeight()) ); + + vPos.x = fx * g_fFovXTan * fDepth; + vPos.y = fy * g_fFovYTan * fDepth; + vPos.z = fDepth; + + return vPos; +} + +//transforms world space to camera space to screen coordinates +//return vector's x and y are screen coordinates +//return vector's z is distance from the camera + +LTVector CInterfaceMgr::GetScreenFromWorldPos(LTVector vPos, HOBJECT hCamera) +{ + LTVector tmp,pos; + LTMatrix mCam; + mCam = GetCameraTransform(hCamera); + mCam.Normalize(); + + MatVMul((LTVector*)&tmp, &mCam, (LTVector*)&vPos); + + float fx = tmp.x / (g_fFovXTan * tmp.z); + float fy = tmp.y / (g_fFovYTan * tmp.z); + + pos.x = ((float)g_pInterfaceResMgr->GetScreenWidth() * (1.0f + fx) / 2.0f); + pos.y = ((float)g_pInterfaceResMgr->GetScreenHeight() * (1.0f - fy) / 2.0f); + pos.z = tmp.z; + + return pos; +} + + +void CInterfaceMgr::SetMouseFX(char* pFXName) +{ + SAFE_STRCPY(m_szMouseFXName,pFXName); + if (m_MouseFX.IsValid()) + { + m_InterfaceFXMgr.ShutdownClientFX(&m_MouseFX); + } +} + +void CInterfaceMgr::SetSelectFX(char* pFXName) +{ + SAFE_STRCPY(m_szSelectFXName,pFXName); +} + +void CInterfaceMgr::ShowSelectFX(const LTIntPt &pos) +{ + if (!strlen(m_szSelectFXName)) return; + if (m_SelectFX.IsValid() && GetConsoleInt("ShutdownSelect",1)) + { + m_InterfaceFXMgr.ShutdownClientFX(&m_SelectFX); + } + LTVector vPos = GetWorldFromScreenPos(pos,25.0f); + CLIENTFX_CREATESTRUCT fxInit(m_szSelectFXName , LTNULL, vPos ); + + m_InterfaceFXMgr.CreateClientFX(&m_SelectFX, fxInit, LTTRUE ); + if( !m_SelectFX.IsValid() ) + { + char szError[256]; + LTSNPrintF( szError, sizeof(szError), "CInterfaceMgr::ShowSelectFX: Could not create client fx %s", m_szSelectFXName ); + UBER_ASSERT( 0, szError ); + return; + } + + if(m_SelectFX.IsValid()) + m_SelectFX.GetInstance()->Show(); + +} +void CInterfaceMgr::ShowMouseFX() +{ + if (!strlen(m_szMouseFXName)) + { + return; + } + LTVector vPos = GetWorldFromScreenPos(m_CursorPos,25.0f); + + if (!m_MouseFX.IsValid()) + { + CLIENTFX_CREATESTRUCT fxInit(m_szMouseFXName , FXFLAG_LOOP, vPos ); + m_InterfaceFXMgr.CreateClientFX(&m_MouseFX, fxInit, LTTRUE ); + } + + if (m_MouseFX.IsValid()) + { + m_MouseFX.GetInstance()->SetPos(vPos,vPos); + m_MouseFX.GetInstance()->Show(); + } +} + + +void CInterfaceMgr::NextWeapon(int nCommand) +{ + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase const *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if (pClientWeapon && !pClientWeaponMgr->WeaponsEnabled()) return; + + //can't bring up chooser while disabling a gadget target + if (g_pPlayerMgr->IsDisabling()) return; + + uint8 nClass = 0; + switch (nCommand) + { + case COMMAND_ID_NEXT_WEAPON : + nClass = 0; + break; + case COMMAND_ID_NEXT_WEAPON_1 : + nClass = 1; + break; + case COMMAND_ID_NEXT_WEAPON_2 : + nClass = 2; + break; + case COMMAND_ID_NEXT_WEAPON_3 : + nClass = 3; + break; + case COMMAND_ID_NEXT_WEAPON_4 : + nClass = 4; + break; + case COMMAND_ID_NEXT_WEAPON_5 : + nClass = 5; + break; + case COMMAND_ID_NEXT_WEAPON_6 : + nClass = 6; + break; + default: + return; + + } + + if (m_AmmoChooser.IsOpen()) + { + m_AmmoChooser.Close(); + } + if (m_WeaponChooser.Open(nClass)) + { + m_WeaponChooser.NextWeapon(nClass); + } + + uint8 nCurrWeapon = m_WeaponChooser.GetCurrentSelection(); + g_pPlayerMgr->ChangeWeapon( nCurrWeapon ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnObjectRemove() +// +// PURPOSE: Handle removal of a server created object... +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::OnObjectRemove(HLOCALOBJ hObj) +{ + // Make sure we're initialized. + if( !IsInitialized( )) + return; + + if (!hObj) return; + + if (g_pDecision->IsVisible() && g_pDecision->GetObject() == hObj) + g_pDecision->OnObjectRemove(hObj); + + if( g_pGameClientShell->ShouldUseRadar()) + g_pRadar->RemoveObject( hObj ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::IsInGame() +// +// PURPOSE: Check if we're in one of the "in game" states. +// +// ----------------------------------------------------------------------- // + +bool CInterfaceMgr::IsInGame( ) +{ + switch( GetGameState( )) + { + case GS_PLAYING: + case GS_EXITINGLEVEL: + return true; + default: + return false; + } + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::HandleDisplayTimerMsg +// +// PURPOSE: Handle update to display timer. +// +// ----------------------------------------------------------------------- // + +bool CInterfaceMgr::HandleDisplayTimerMsg( ILTMessage_Read& msg ) +{ + float fGameTimeEnd = msg.Readfloat(); + bool bPaused = msg.Readbool(); + uint8 nId = msg.Readuint8( ); + + // Calculate time to the end. + switch( nId ) + { + case 0: + m_InterfaceTimer.SetTime( fGameTimeEnd, bPaused ); + break; + case 1: + m_BlueInterfaceTimer.SetTime( fGameTimeEnd, bPaused ); + break; + case 2: + m_RedInterfaceTimer.SetTime( fGameTimeEnd, bPaused ); + break; + case 3: + case 4: + case 5: + g_pBombTarget->SetTimer( nId - 3, fGameTimeEnd, bPaused ); + break; + } + return LTTRUE; +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::LoadFailed +// +// PURPOSE: Handle failed load attempt, specify what screen to go to +// +// ----------------------------------------------------------------------- // + +void CInterfaceMgr::LoadFailed(eScreenID eScreenToShow /*= SCREEN_ID_NONE*/, uint32 nLoadFailedMsgId /* = -1 */ ) +{ + m_bLoadFailed = LTTRUE; + m_nLoadFailedMsgId = nLoadFailedMsgId; + + if (eScreenToShow == SCREEN_ID_NONE) + { + if (IsMultiplayerGame()) + { + m_eLoadFailedScreen = SCREEN_ID_MULTI; + } + else + { + m_eLoadFailedScreen = SCREEN_ID_MAIN; + } + } + else + m_eLoadFailedScreen = eScreenToShow; + +} + +void CInterfaceMgr::HandlePlayerTeamChange() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + CSpecialFXList* pList = psfxMgr->GetFXList(SFX_CHARACTER_ID); + if (pList) + { + int nNumChars = pList->GetSize(); + + for (int i=0; i < nNumChars; i++) + { + if ((*pList)[i]) + { + CCharacterFX* pCFX = (CCharacterFX*)(*pList)[i]; + if( pCFX->m_cs.bRadarVisible) + { + g_pRadar->RemoveObject(pCFX->GetServerObj()); + g_pRadar->AddPlayer( pCFX->GetServerObj(), pCFX->m_cs.nClientID ); + } + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::StartingNewGame +// +// PURPOSE: Called when client is starting its connection to the server. +// +// ----------------------------------------------------------------------- // + +bool CInterfaceMgr::StartingNewGame( ) +{ + GetClientInfoMgr()->RemoveAllClients(); + SkipPreLoad( false ); + + // Make sure we delete the browsers, since they can take up quite a bit of memory. + CScreenJoin *pScreenJoin= dynamic_cast< CScreenJoin * >( g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_JOIN)); + if( pScreenJoin ) + { + pScreenJoin->TermServerLists( ); + } + + // Don't need the patch info check at this point. + if( m_pGameSpyPatchInfo ) + { + IGameSpyPatchInfo::Delete( m_pGameSpyPatchInfo ); + m_pGameSpyPatchInfo = NULL; + } + + return true; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/InterfaceMgr.h b/Jack/ClientShellDLL/InterfaceMgr.h new file mode 100644 index 00000000..98f3c6b1 --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceMgr.h @@ -0,0 +1,641 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceMgr.h +// +// PURPOSE : Manage all interface related functionality +// +// CREATED : 4/6/99 +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __INTERFACE_MGR_H__ +#define __INTERFACE_MGR_H__ + +#include "iltclient.h" +#include "iltfontmanager.h" + +#include "HUDMgr.h" +#include "GameSettings.h" +#include "ClientInfoMgr.h" +#include "InterfaceResMgr.h" +#include "ScreenMgr.h" +#include "MenuMgr.h" +#include "LayoutMgr.h" +#include "MessageBox.h" +#include "WeaponChooser.h" +#include "Credits.h" +#include "InterfaceTimer.h" +#include "FullScreenTint.h" +#include "Overlays.h" +#include "SpecialFX.h" +#include "BaseScaleFX.h" +#include "Music.h" +#include "LoadingScreen.h" +#include "iltvideomgr.h" +#include "clientres.h" +#include "PerformanceMgr.h" +#include "ProfileMgr.h" +#include "PopupText.h" +#include "PlayerStats.h" +#include "ClientFxMgr.h" +#include "CursorMgr.h" +#include "LTObjRef.h" + + +extern ILTModelClient* g_pILTModelClient; +extern ILTDrawPrim* g_pDrawPrim; +extern ILTFontManager* g_pFontManager; +extern ILTTexInterface* g_pTexInterface; + +#define AO_MUSIC (1<<0) +#define AO_SOUND (1<<1) +#define AO_MOVIES (1<<2) +#define AO_CURSOR (1<<3) +#define AO_FOG (1<<4) +#define AO_LINES (1<<5) +#define AO_JOYSTICK (1<<7) +#define AO_TRIPLEBUFFER (1<<9) +#define AO_TJUNCTIONS (1<<10) +#define AO_HARDWARESOUND (1<<11) +#define AO_SOUNDFILTERS (1<<12) + +#define AO_DEFAULT_ENABLED (AO_MUSIC | AO_SOUND | AO_MOVIES | AO_CURSOR | AO_FOG | AO_LINES | AO_TRIPLEBUFFER | AO_TJUNCTIONS | AO_JOYSTICK | AO_HARDWARESOUND | AO_SOUNDFILTERS) + +// Game states + + +enum GameState +{ + GS_UNDEFINED=0, + GS_PLAYING, + GS_EXITINGLEVEL, + GS_LOADINGLEVEL, + GS_SPLASHSCREEN, + GS_MENU, + GS_POPUP, + GS_SCREEN, + GS_PAUSED, + GS_DEMOSCREEN, + GS_MOVIE, +}; + +enum InterfaceSound +{ + IS_NONE, + IS_CHANGE, + IS_SELECT, + IS_PAGE, + IS_UP, + IS_DOWN, + IS_LEFT, + IS_RIGHT, + IS_NO_SELECT +}; + +enum ISFXType +{ + IFX_NORMAL, + IFX_WORLD, + IFX_ATTACH, + IFX_MENU_ATTACH, +}; + +const HLTCOLOR kWhite = SETRGB(255,255,255); +const HLTCOLOR kGray = SETRGB(96,96,96); +const HLTCOLOR kBlack = SETRGB(0,0,0); +const HLTCOLOR kTransBlack = SETRGB_T(0,0,0); + +const uint32 argbWhite = 0xFFFFFFFF; +const uint32 argbGray = 0xFF606060; +const uint32 argbBlack = 0xFF000000; +const uint32 argbTransBlack = 0x00000000; + +class CInterfaceMgr; +extern CInterfaceMgr* g_pInterfaceMgr; + +typedef std::vector ObjectArray; + +class IGameSpyPatchInfo; + +class CInterfaceMgr +{ + public : + + CInterfaceMgr(); + virtual ~CInterfaceMgr(); + + virtual LTBOOL Init(); + virtual void Term(); + bool IsInitialized( ) { return m_bInitialized; } + + virtual void OnEnterWorld(LTBOOL bRestoringGame=LTFALSE); + virtual void OnExitWorld(); + + virtual LTBOOL OnCommandOn(int command); + virtual LTBOOL OnCommandOff(int command); + virtual LTBOOL OnKeyDown(int key, int rep); + virtual LTBOOL OnKeyUp(int nKey); + + virtual LTBOOL OnMessage(uint8 messageID, ILTMessage_Read *pMsg); + virtual LTBOOL OnEvent(uint32 dwEventID, uint32 dwParam); + virtual void OnObjectRemove(HLOCALOBJ hObj); + + void SetLetterBox(LTBOOL b) { m_bLetterBox = b; } + + void ShowPopup(uint32 nTextId, uint8 nPopupId, bool bHideHUD=false) + { + m_bHideHUDInPopup = bHideHUD; + m_PopupText.Show(nTextId,nPopupId); + } + void ShowPopup(char *pText, uint8 nPopupId, bool bHideHUD=false) + { + m_bHideHUDInPopup = bHideHUD; + m_PopupText.Show(pText, nPopupId); + } + void ClosePopup() { m_PopupText.Close(); } + + // Check if we're in one of the "in game" states. + bool IsInGame( ); + + // Screen Fade functions + void StartScreenFadeIn(LTFLOAT fFadeTime) + { + m_bFadeInitialized = LTFALSE; + m_bScreenFade = LTTRUE; + m_fTotalFadeTime = fFadeTime; + m_bFadeIn = LTTRUE; + } + void StartScreenFadeOut(LTFLOAT fFadeTime) + { + m_bFadeInitialized = LTFALSE; + m_bScreenFade = LTTRUE; + m_fTotalFadeTime = fFadeTime; + m_bFadeIn = LTFALSE; + } + + void ForceScreenFadeIn(LTFLOAT fFadeTime) + { + if (FadingScreen() && !FadingScreenIn()) + { + StartScreenFadeIn(fFadeTime); + } + } + + LTBOOL FadingScreen() const { return m_bScreenFade; } + + LTBOOL FadingScreenIn() const { return (m_bScreenFade && m_bFadeIn); } + LTBOOL FadingScreenOut() const { return (m_bScreenFade && !m_bFadeIn); } + + LTBOOL ScreenFadedOut() const { return (FadingScreenOut() && ScreenFadeDone()); } + LTBOOL ScreenFadedIn() const { return !m_bScreenFade; } + + LTBOOL ScreenFadeDone() const + { + if (m_hFadeSurface) + { + LTFLOAT fAlpha = 0.0f; + g_pLTClient->GetSurfaceAlpha(m_hFadeSurface, fAlpha); + return (m_bFadeIn ? (fAlpha <= 0.0f) : (fAlpha >= 1.0f)); + } + return LTTRUE; +/* + int iAlpha = m_FadePoly.rgba.a; + return (m_bFadeIn ? (iAlpha <= 0) : (iAlpha >= 255)); +*/ + } + + //mouse messages + void OnLButtonUp(int x, int y); + void OnLButtonDown(int x, int y); + void OnLButtonDblClick(int x, int y); + void OnRButtonUp(int x, int y); + void OnRButtonDown(int x, int y); + void OnRButtonDblClick(int x, int y); + void OnMouseMove(int x, int y); + void OnChar(unsigned char c); + + LTBOOL PreUpdate(); + LTBOOL Update(); + LTBOOL PostUpdate(); + + LTBOOL Draw(); + + LTBOOL DrawSFX(); + + LTBOOL ChangeState(GameState eNewState); + void DebugChangeState(GameState eNewState); + GameState GetGameState() const { return m_eGameState; } + bool HasEnteredScreenState() const { return m_bEnteredScreenState; } + + LTBOOL UseInterfaceCamera() {return m_bUseInterfaceCamera;} + HLOCALOBJ GetInterfaceCamera() const { return m_hInterfaceCamera; } + + eScreenID GetCurrentScreen(); + LTBOOL SwitchToScreen(eScreenID screenID); + LTBOOL SwitchToMenu(eMenuID menuID); + LTBOOL ForceScreenUpdate(eScreenID screenID); + + void AbortScreenFade(); + + void MissionFailed(int nFailStringId); + int GetFailStringID() {return m_nFailStringId;} + + void ShowDemoScreens(LTBOOL bQuit); + + void Disconnected(uint32 nDisconnectFlag); + void ConnectionFailed(uint32 nConnectionError); + + void Save(ILTMessage_Write *pMsg); + void Load(ILTMessage_Read *pMsg); + + void SetSwitchingRenderModes(LTBOOL bSwitch) { m_bSwitchingModes = bSwitch; } + + void ResetMenuRestoreCamera(int nLeft, int nTop, int nRight, int nBottom); + + void ClearScreenAlways(LTBOOL bYes = LTTRUE) { m_bClearScreenAlways = bYes; } + void AddToClearScreenCount() { m_nClearScreenCount = 3; } + void ZeroClearScreenCount() { m_nClearScreenCount = 0; } + void ClearAllScreenBuffers(); + + LTBOOL SetupMusic(); + LTBOOL RestoreGameMusic(); + bool StartMenuMusic(); + + CGameSettings* GetSettings() { return &m_Settings; } + CClientInfoMgr* GetClientInfoMgr() { return &m_ClientInfo; } + CMenuMgr* GetMenuMgr() { return &m_MenuMgr; } + + CFullScreenTint* GetFullScreenTint() { return &m_FullScreenTint; } + + virtual CHUDMgr* GetHUDMgr() = 0; + virtual CScreenMgr* GetScreenMgr( ) = 0; + virtual CPlayerStats* GetPlayerStats( ) = 0; + + uint32 GetAdvancedOptions() const { return m_dwAdvancedOptions; } + + void EnableCrosshair(LTBOOL bOn) { /*m_stats.EnableCrosshair(bOn); */} + LTBOOL IsCrosshairEnabled() { return LTTRUE;/* m_stats.CrosshairEnabled(); */} + LTBOOL IsCrosshairOn() { return LTTRUE;/* m_stats.CrosshairOn(); */} + + + void SetHUDRenderLevel(eHUDRenderLevel eLevel) {GetHUDMgr()->SetRenderLevel(eLevel);} + + LTBOOL IsChoosingWeapon() { return m_WeaponChooser.IsOpen();} + LTBOOL IsChoosingAmmo() { return m_AmmoChooser.IsOpen();} + void CloseChoosers() { m_WeaponChooser.Close();m_AmmoChooser.Close();} + + virtual CWeaponChooser* GetWeaponChooser() { return &m_WeaponChooser;} + virtual CAmmoChooser* GetAmmoChooser() { return &m_AmmoChooser;} + + LTBOOL AllowCameraMovement(); + LTBOOL AllowCameraRotation(); + + virtual void UpdatePlayerStats(ILTMessage_Read& msg); + + // Updates check for patch info. + void UpdatePatchInfo(); + + void ScreenDimsChanged(); + + LTIntPt GetCursorPos() {return m_CursorPos;} + void UseCursor(LTBOOL bUseCursor, LTBOOL bLockCursorToCenter = LTFALSE) {m_CursorMgr.UseCursor(bUseCursor,bLockCursorToCenter);} + void UpdateCursorState(); // hides or shows cursor based on current game state + + void UpdateOverlays(); + bool IsOverlayActive(eOverlayMask eMask) {return (m_hOverlays[eMask] != NULL);} + void CreateOverlay(eOverlayMask eMask); + void RemoveOverlay(eOverlayMask eMask); + + void BeginScope(LTBOOL bVisionMode = LTFALSE, LTBOOL bCamera = LTFALSE); + void EndScope(); + + void BeginZoom(LTBOOL bIn = LTTRUE); + void EndZoom(); + + void ShowMessageBox(int nStringID, MBCreate* pCreate, uint8 nFontSize = 0, LTBOOL bDefaultReturn = LTTRUE); + void ShowMessageBox(const char *pString, MBCreate* pCreate, uint8 nFontSize = 0, LTBOOL bDefaultReturn = LTTRUE); + void CloseMessageBox(LTBOOL bReturn); + + + void ViewOptions(); + + void AddInterfaceSFX(CSpecialFX* pSFX, ISFXType eType); + void RemoveInterfaceSFX(CSpecialFX* pSFX); + + void AddInterfaceFX(CLIENTFX_LINK* pLink, char *pFXName, LTVector vPos, LTBOOL bLoop); + void RemoveInterfaceFX(); + void RemoveInterfaceFX(CLIENTFX_LINK *pLink); + + void AddInterfaceLight(HOBJECT hLight); + void RemoveInterfaceLights(); + + void RequestInterfaceSound(InterfaceSound eIS); + void ClearInterfaceSound(); + + + //accessor for the interfaces FX manager + CClientFXMgr& GetInterfaceFXMgr() { return m_InterfaceFXMgr; } + + // Update the interface model animations + void UpdateModelAnimations(LTFLOAT fCurFrameDelta); + + // Hide the loading screen. + // (Note : This does not change out of the loading state, it only stops the loading screen's rendering) + void HideLoadScreen(); + + // Is the loading screen visible? + bool IsLoadScreenVisible() { return m_LoadingScreen.IsVisible() != LTFALSE; } + // Pause the loading screen animation + void PauseLoadScreen() { m_LoadingScreen.Pause(); } + // Resume the loading screen animation + void ResumeLoadScreen() { m_LoadingScreen.Resume(); } + // Update loading screen mission info + void UpdateLoadScreenInfo() { m_LoadingScreen.UpdateMissionInfo(); } + // Set the screen to render on the loading screen + void SetLoadingRenderScreen( CBaseScreen *pScreen ) { m_LoadingScreen.SetRenderScreen( pScreen ); } + + + //called to indicate an intentional disconnection from the server + void SetIntentionalDisconnect( bool bIntentionalDisconnect ) { m_bIntentionalDisconnect = bIntentionalDisconnect; } + bool GetIntentionalDisconnect( ) const { return m_bIntentionalDisconnect; } + + void LoadFailed( eScreenID eScreenToShow = SCREEN_ID_NONE, uint32 nMsgId = -1 ); + + void UpdateClientList(); + + void SetMouseFX(char* pFXName); + void SetSelectFX(char* pFXName); + void ShowMouseFX(); + void ShowSelectFX(const LTIntPt &pos); + + LTVector GetWorldFromScreenPos(LTIntPt pos, LTFLOAT fDepth); + + //transforms world space to camera space to screen coordinates + //return vector's x and y are screen coordinates + //return vector's z is distance from the camera + LTVector GetScreenFromWorldPos(LTVector vPos, HOBJECT hCamera); + + // Handle display timer message. + bool HandleDisplayTimerMsg( ILTMessage_Read& msg ); + + // Indicates we joined using the "+join" command line and we + // should take special precautions if we fail. + bool GetCommandLineJoin( ) const { return m_bCommandLineJoin; } + void SetCommandLineJoin( bool bCommandLineJoin ) { m_bCommandLineJoin = bCommandLineJoin; } + + void SkipPreLoad( bool bSkip ) { m_bSkipPreLoadScreen = bSkip; } + bool ShouldSkipPreLoad() const { return m_bSkipPreLoadScreen; } + void SetPostLoadScreenID( eScreenID eID = SCREEN_ID_POSTLOAD ) { m_ePostLoadScreenID = eID; } + + // Called when a new game is started. + bool StartingNewGame( ); + + protected: + CWeaponChooser m_WeaponChooser; // Next/previous weapon interface + CAmmoChooser m_AmmoChooser; // Next ammo interface + GameState m_eGameState; // Current game state + + private : + CInterfaceResMgr m_InterfaceResMgr; // manages shared resources + CMenuMgr m_MenuMgr; +// CLayoutMgr m_LayoutMgr; // bute mgr for layout info + CPerformanceMgr m_PerformanceMgr; // manages performance settings + CProfileMgr m_ProfileMgr; // manages player profiles + + CClientInfoMgr m_ClientInfo; // Client info mgr + + CScreenSpriteMgr m_ScreenSpriteMgr; // Screen sprite mgr (new for Tron/TO2) + + CCursorMgr m_CursorMgr; // Cursor handler (new for Tron/TO2) + + CGameSettings m_Settings; + CInterfaceTimer m_InterfaceTimer; // Main interface timer + CInterfaceTimer m_RedInterfaceTimer; // Blue team interface timer + CInterfaceTimer m_BlueInterfaceTimer; // Red team interface timer + CCredits m_Credits; // Display credits + CPopupText m_PopupText; // Display in game text + CMessageBox m_MessageBox; // Used for simple dialog boxes + + CFullScreenTint m_FullScreenTint; // All full screen tinting (used for pause) + + GameState m_eLastGameState; // Previous game state + + + uint32 m_dwAdvancedOptions; // Advanced options + uint32 m_dwOrignallyEnabled; // Advanced options that were originally enabled + + uint8 m_nClearScreenCount; // How many frames to clear the screen + LTBOOL m_bClearScreenAlways; // Should we always clear the screen? + + HLTSOUND m_hSplashSound; // Handle to sound played when splash screen is up + + HSURFACE m_hGamePausedSurface; // "Game Paused" message + + LTRect m_rcMenuRestoreCamera; // Camera rect to restore after leaving menus + LTBOOL m_bMenuRectRestore; // Was the camera rect full-screen before going to the menus? + + LTBOOL m_bUseInterfaceCamera; + HLOCALOBJ m_hInterfaceCamera; // The camera used in the interface + + LTFLOAT m_fMenuSaveFOVx; // Fov before entering menu + LTFLOAT m_fMenuSaveFOVy; // Fov before entering menu + + LTBOOL m_bSwitchingModes; // Switching render modes? + + LTIntPt m_CursorPos; + + int m_nFailStringId; // id of the string to display on the mission failed screen + + HLTSOUND m_hScubaSound; // sound looping while scuba gear is on + + HLTSOUND m_hSound; // current interface snd + + HSURFACE m_hFadeSurface; // Used to do screen fading + HSURFACE m_hLetterBoxSurface; // Used for letter box border + + +/* + uint16 m_nBorderSize; // Thickness of Letterbox border + LT_POLYF4 m_LetterBox[2]; // Letterbox top/bottom border + LT_POLYF4 m_FadePoly; // Used for screen fades on PSX2 +*/ + + LTBOOL m_bFadeInitialized; // Have we initialized everything + LTBOOL m_bScreenFade; // Should we fade the screen + LTFLOAT m_fTotalFadeTime; // How long to do the fade + LTFLOAT m_fCurFadeTime; // Current fade time + LTBOOL m_bFadeIn; // Should we fade in (or out) + + LTBOOL m_bLetterBox; // Letter box mode? + LTBOOL m_bWasLetterBox; // Was letter box last frame? + LTFLOAT m_fLetterBoxFadeEndTime; // When do we stop fading the letter box in/out + LTFLOAT m_fLetterBoxAlpha; // The current letter box border alpha + + uint8 m_nOverlayCount; + HOBJECT m_hOverlays[NUM_OVERLAY_MASKS]; + LTFLOAT m_fOverlayScaleMult[NUM_OVERLAY_MASKS]; + + + SFXArray m_InterfaceSFX; + ObjectArray m_InterfaceLights; + + CLIENTFX_LINK m_MouseFX; + CLIENTFX_LINK m_SelectFX; + char m_szMouseFXName[128]; + char m_szSelectFXName[128]; + CClientFXMgr m_InterfaceFXMgr; + + + CBaseScaleFX m_BackSprite; + + LTBOOL m_bSavedGameMusic; // Did we save the game music state? + CMusicState m_GameMusicState; // State of the game music + + CLoadingScreen m_LoadingScreen; // The loading screen object/thread + LTBOOL m_bLoadFailed; + bool m_bCommandLineJoin; + eScreenID m_eLoadFailedScreen; + uint32 m_nLoadFailedMsgId; + + InterfaceSound m_eNextSound; + + LTBOOL PreChangeState(GameState eCurState, GameState eNewState); + + bool m_bSuppressNextFlip; + + bool m_bEnteredScreenState; + bool m_bIntentionalDisconnect; + + // Pre/Post load screen... + + bool m_bSkipPreLoadScreen; + eScreenID m_ePostLoadScreenID; + +protected: + LTBOOL PrePlayingState(GameState eCurState); + virtual void UpdatePlayingState(); + LTBOOL PostPlayingState(GameState eNewState); + + static void GetPatchCallBack(LTBOOL bReturn, void *pData); + +private: + LTBOOL PreMenuState(GameState eCurState); + void UpdateMenuState(); + LTBOOL PostMenuState(GameState eNewState); + + LTBOOL PrePopupState(GameState eCurState); + void UpdatePopupState(); + LTBOOL PostPopupState(GameState eNewState); + + LTBOOL PreLoadingLevelState(GameState eCurState); + void UpdateLoadingLevelState(); + LTBOOL PostLoadingLevelState(GameState eNewState); + + LTBOOL PreExitingLevelState(GameState eCurState); + void UpdateExitingLevelState(); + LTBOOL PostExitingLevelState(GameState eNewState); + + LTBOOL PrePauseState(GameState eCurState); + void UpdatePausedState(); + LTBOOL PostPauseState(GameState eNewState); + + LTBOOL PreSplashScreenState(GameState eCurState); + void UpdateSplashScreenState(); + void EndSplashScreen( ); + LTBOOL PostSplashScreenState(GameState eNewState); + + LTBOOL PreScreenState(GameState eCurState); + void UpdateScreenState(); + LTBOOL PostScreenState(GameState eNewState); + + LTBOOL PreDemoScreenState(GameState eCurState); + void UpdateDemoScreenState(); + LTBOOL PostDemoScreenState(GameState eNewState); + + LTBOOL PreMovieState(GameState eCurState); + void UpdateMovieState(); + LTBOOL PostMovieState(GameState eNewState); + + void ProcessAdvancedOptions(); + + void UpdateScreenFade(bool bUpdateAlpha = true); + void UpdateLetterBox(); + + void CreateInterfaceBackground(); + void UpdateInterfaceBackground(); + void RemoveInterfaceBackground(); + void RemoveAllInterfaceSFX(); + void UpdateInterfaceSFX(); + + HLTSOUND UpdateInterfaceSound(); + + void HandlePlayerTeamChange(); + + void NextWeapon(int nCommand); + + void NextDemoScreen(); + LTBOOL m_bQuitAfterDemoScreens; + LTBOOL m_bSeenDemoScreens; + + void NextMovie(bool bEndMovies=false); + char* GetCurrentMovie(); + HVIDEO m_hMovie; + int m_nCurMovie; + + LTBOOL m_bStartedNew; + + float m_fLastUpdateRequestTime; + + // true after Init called. false after Term called. + bool m_bInitialized; + + bool m_bHideHUDInPopup; + eHUDRenderLevel m_ePrePopupHUDRenderLevel; + + // Used to check if new patches are available. + IGameSpyPatchInfo* m_pGameSpyPatchInfo; + std::string m_sPatchUrl; +}; + + +inline void CInterfaceMgr::ResetMenuRestoreCamera(int nLeft, int nTop, int nRight, int nBottom) +{ + if (m_rcMenuRestoreCamera.right != 0 && m_rcMenuRestoreCamera.bottom != 0) + { + m_rcMenuRestoreCamera.left = nLeft; + m_rcMenuRestoreCamera.top = nTop; + m_rcMenuRestoreCamera.right = nRight; + m_rcMenuRestoreCamera.bottom = nBottom; + } +} + +// ----------------------------------------------------------------------- // +// Clears the screen a few times so the backbuffer(s) get cleared. +// ----------------------------------------------------------------------- // +inline void CInterfaceMgr::ClearAllScreenBuffers() +{ + for (int i=0; i < 4; i++) + { + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + g_pLTClient->FlipScreen(0); + } +} + + +inline void CInterfaceMgr::ShowMessageBox(int nStringID, MBCreate* pCreate, uint8 nFontSize, LTBOOL bDefaultReturn) +{ + m_MessageBox.Show(nStringID,pCreate,nFontSize,bDefaultReturn); +} +inline void CInterfaceMgr::ShowMessageBox(const char *pString, MBCreate* pCreate, uint8 nFontSize, LTBOOL bDefaultReturn) +{ + m_MessageBox.Show(pString,pCreate,nFontSize,bDefaultReturn); +} +inline void CInterfaceMgr::CloseMessageBox(LTBOOL bReturn) +{ + m_MessageBox.Close(bReturn); +} + + +#endif // __INTERFACE_MGR_H__ diff --git a/Jack/ClientShellDLL/InterfaceResMgr.cpp b/Jack/ClientShellDLL/InterfaceResMgr.cpp new file mode 100644 index 00000000..a24cd754 --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceResMgr.cpp @@ -0,0 +1,608 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceResMgr.cpp +// +// PURPOSE : Manager for resources associated with the interface +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "gameclientshell.h" +#include "InterfaceResMgr.h" +#include "ClientButeMgr.h" + + +CInterfaceResMgr* g_pInterfaceResMgr = LTNULL; + +namespace +{ + const uint8 kIndent = 8; + const uint16 kBaseWidth = 320; + const uint16 kBaseHeight = 200; + const uint16 kBigWidth = 480; + const uint16 kMinWidth = 160; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CInterfaceResMgr::CInterfaceResMgr() +{ + g_pInterfaceResMgr = this; + + m_hSurfCursor = NULL; + + m_dwScreenWidth = 0; + m_dwScreenHeight = 0; + + m_fXRatio = 1.0f; + m_fYRatio = 1.0f; + + m_pMsgText = LTNULL; + +} + +CInterfaceResMgr::~CInterfaceResMgr() +{ + g_pInterfaceResMgr = LTNULL; +} + +////////////////////////////////////////////////////////////////////// +// Function name : CInterfaceResMgr::Init +// Description : +// Return type : LTBOOL +////////////////////////////////////////////////////////////////////// +LTBOOL CInterfaceResMgr::Init() +{ + + + // Set the English flag + if (stricmp((const char*)"english", LoadTempString(IDS_GAME_LANGUAGE)) != 0) + { + m_bEnglish=LTFALSE; + } + else + { + m_bEnglish=LTTRUE; + } + + // Load the virtual key codes for yes responses + char szTmp[64] = ""; + LoadString(IDS_MENU_VKEY_YES,szTmp,sizeof(szTmp)); + if (strlen(szTmp)) + { + m_nYesVKeyCode=atoi(szTmp); + } + + // Load the virtual key codes for no responses + LoadString(IDS_MENU_VKEY_NO,szTmp,sizeof(szTmp)); + if (strlen(szTmp)) + { + m_nNoVKeyCode=atoi(szTmp); + } + + // Init the InterfaceSurfMgr class + m_InterfaceSurfMgr.Init(g_pLTClient); + + // Initialize the fonts + if (!InitFonts()) + { + return LTFALSE; + } + + // set resolution dependant variables + ScreenDimsChanged(); + + + uint8 nFont = g_pLayoutMgr->GetDialogFontFace(); + CUIFont* pFont = GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetDialogFontSize(); + + m_pMsgText = debug_new(CLTGUITextCtrl); + if (!m_pMsgText->Create("", LTNULL, LTNULL, pFont, nFontSize, LTNULL)) + { + debug_delete(m_pMsgText); + m_pMsgText = LTNULL; + return LTFALSE; + } + m_pMsgText->SetColors(argbBlack, argbBlack, argbBlack); + m_pMsgText->SetFixedWidth(kBaseWidth-2*kIndent); + m_pMsgText->Enable(LTFALSE); + + char szBack[128] = ""; + g_pLayoutMgr->GetDialogFrame(szBack,sizeof(szBack)); + + m_MsgDlg.Create(GetTexture(szBack),kBaseWidth,kBaseHeight); + LTIntPt tmp(0,0); + m_MsgDlg.AddControl(m_pMsgText, tmp); + + return LTTRUE; +} + +////////////////////////////////////////////////////////////////////// +// Function name : CInterfaceResMgr::Term +// Description : +// Return type : void +////////////////////////////////////////////////////////////////////// + +void CInterfaceResMgr::Term() +{ + Clean(); + + m_MsgDlg.Destroy(); + + // Terminate the InterfaceSurfMgr class + m_InterfaceSurfMgr.Term(); + + // Destroy CUI fonts through the font manager + if (g_pFontManager) + { + FontArray::iterator iter = m_FontArray.begin(); + while (iter != m_FontArray.end()) + { + g_pFontManager->DestroyFont(*iter); + iter++; + } + m_FontArray.clear(); + } + + // Release any textures that the InterfaceResMgr has. + for (TextureSet::iterator iter = m_TextureSet.begin(); iter != m_TextureSet.end(); iter++) + { + g_pTexInterface->ReleaseTextureHandle(*iter); + } + m_TextureSet.clear(); + + if (m_hSurfCursor) + { + g_pLTClient->DeleteSurface(m_hSurfCursor); + m_hSurfCursor = NULL; + } + +} + +////////////////////////////////////////////////////////////////////// +// Function name : CInterfaceResMgr::Setup +// Description : +// Return type : LTBOOL +////////////////////////////////////////////////////////////////////// + +LTBOOL CInterfaceResMgr::Setup() +{ + //preload common surfaces + + return LTTRUE; +} + +////////////////////////////////////////////////////////////////////// +// Function name : CInterfaceResMgr::Clean +// Description : +// Return type : void +////////////////////////////////////////////////////////////////////// + +void CInterfaceResMgr::Clean() +{ + if (g_pLTClient) + { + + // free shared surfaces + m_InterfaceSurfMgr.FreeAllSurfaces(); + + + } +} + +////////////////////////////////////////////////////////////////////// +// Function name : CInterfaceResMgr::DrawScreen +// Description : +// Return type : void +////////////////////////////////////////////////////////////////////// +void CInterfaceResMgr::DrawScreen() +{ + _ASSERT(g_pLTClient); + if (!g_pLTClient) return; + + if (m_dwScreenWidth == 0) + ScreenDimsChanged(); + + // The screen surface + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + + // Render the current screen + g_pInterfaceMgr->GetScreenMgr()->Render(hScreen); + + return; +} + + + +void CInterfaceResMgr::DrawMessage(int nMessageId, uint8 nFontSize) +{ + DrawMessage(LoadTempString(nMessageId),nFontSize); +} + +void CInterfaceResMgr::DrawMessage(const char *pString, uint8 nFontSize) +{ + _ASSERT(g_pLTClient); + if (!g_pLTClient || !pString) return; + + + uint8 nSize; + if (nFontSize) + nSize = nFontSize; + else + nSize = g_pLayoutMgr->GetDialogFontSize(); + + m_MsgDlg.SetScale(1.0f); + + m_pMsgText->SetFixedWidth(kBaseWidth-2*kIndent); + m_pMsgText->SetString(pString); + m_pMsgText->SetFont(LTNULL,nSize); + + + float fw,fh; + m_pMsgText->GetString()->GetDims(&fw,&fh); + int nWidth = (int)fw; + int nHeight = (int)fh; + + if (nHeight > kBaseWidth) + { + m_pMsgText->SetFixedWidth(kBigWidth-2*kIndent); + m_pMsgText->GetString()->GetDims(&fw,&fh); + nWidth = (int)fw; + nHeight = (int)fh; + } + + uint16 nDlgWidth = nWidth + 2*kIndent; + if (nDlgWidth < kMinWidth) + nDlgWidth = kMinWidth; + uint16 nDlgHeight = nHeight + 2*kIndent; + + LTIntPt offset; + + m_MsgDlg.SetSize(nDlgWidth,nDlgHeight); + + offset.x = (nDlgWidth - nWidth) / 2; + offset.y = kIndent; + m_MsgDlg.SetControlOffset(m_pMsgText,offset); + + + + offset.x = (640 - nDlgWidth) / 2; + offset.y = (480 - nDlgHeight) / 2; + m_MsgDlg.SetBasePos(offset); + m_MsgDlg.SetScale(GetXRatio()); + + m_MsgDlg.Show(LTTRUE); + + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + + m_MsgDlg.Render(); + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + g_pLTClient->FlipScreen(0); + + m_MsgDlg.Show(LTFALSE); + +} + +LTBOOL CInterfaceResMgr::InitFonts() +{ + + if (!g_pFontManager || !g_pTexInterface) + return (LTFALSE); + + int nNumFonts = g_pLayoutMgr->GetNumFonts(); + char szFontName[_MAX_PATH]; + char szFontFace[_MAX_PATH]; + for (int i = 0; i < nNumFonts; i++) + { + g_pLayoutMgr->GetFontName( i, szFontName, sizeof( szFontName ), szFontFace, sizeof( szFontFace )); + uint8 nPtSize = g_pLayoutMgr->GetFontSize(i); + if (!nPtSize) + nPtSize = 24; + CUIFont *pFont = CreateFont( szFontName, szFontFace, nPtSize ); + if (pFont) + m_FontArray.push_back(pFont); + else + { + DebugCPrint(1,"Failed to create font <%s> at size %d.",szFontName,nPtSize); + } + } + + if ((int)m_FontArray.size() != nNumFonts) + { + return LTFALSE; + } + + return LTTRUE; + +} + +#define USABLE_HEIGHT_I 480 +#define USABLE_HEIGHT_F 480.0f + +void CInterfaceResMgr::ScreenDimsChanged() +{ + if (!g_pLTClient) return; + + RMode currentMode; + g_pLTClient->GetRenderMode(¤tMode); + + m_fXRatio = (float)currentMode.m_Width / 640.0f; + m_fYRatio = (float)currentMode.m_Height / USABLE_HEIGHT_F; + + m_dwScreenWidth = currentMode.m_Width; + m_dwScreenHeight = currentMode.m_Height; + +} + + +HSURFACE CInterfaceResMgr::GetSurfaceCursor() +{ + if (!m_hSurfCursor) + m_hSurfCursor = g_pLTClient->CreateSurfaceFromBitmap("interface\\cursor0.pcx"); + _ASSERT(m_hSurfCursor); + return m_hSurfCursor; +}; + + +const char *CInterfaceResMgr::GetSoundSelect() +{ + if (!strlen(m_szSoundSelect)) + { + g_pClientButeMgr->GetInterfaceAttributeString("SelectSound",m_szSoundSelect,sizeof(m_szSoundSelect)); + } + _ASSERT(strlen(m_szSoundSelect)); + return m_szSoundSelect; +}; + +const char *CInterfaceResMgr::GetSoundUnselectable() +{ + if (!strlen(m_szSoundUnselectable)) + { + g_pClientButeMgr->GetInterfaceAttributeString("UnselectableSound",m_szSoundUnselectable,sizeof(m_szSoundUnselectable)); + } + _ASSERT(strlen(m_szSoundUnselectable)); + return m_szSoundUnselectable; +}; + +const char *CInterfaceResMgr::GetSoundChange() +{ + if (!strlen(m_szSoundChange)) + { + g_pClientButeMgr->GetInterfaceAttributeString("SelectChangeSound",m_szSoundChange,sizeof(m_szSoundChange)); + } + _ASSERT(strlen(m_szSoundChange)); + return m_szSoundChange; +}; + +const char *CInterfaceResMgr::GetSoundPageChange() +{ + if (!strlen(m_szSoundPageChange)) + { + g_pClientButeMgr->GetInterfaceAttributeString("PageChangeSound",m_szSoundPageChange,sizeof(m_szSoundPageChange)); + } + _ASSERT(strlen(m_szSoundPageChange)); + return m_szSoundPageChange; +}; + +const char *CInterfaceResMgr::GetSoundArrowUp() +{ + if (!strlen(m_szSoundArrowUp)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ArrowUpSound",m_szSoundArrowUp,sizeof(m_szSoundArrowUp)); + } + _ASSERT(strlen(m_szSoundArrowUp)); + return m_szSoundArrowUp; +}; + +const char *CInterfaceResMgr::GetSoundArrowDown() +{ + if (!strlen(m_szSoundArrowDown)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ArrowDownSound",m_szSoundArrowDown,sizeof(m_szSoundArrowDown)); + } + _ASSERT(strlen(m_szSoundArrowDown)); + return m_szSoundArrowDown; +}; + +const char *CInterfaceResMgr::GetSoundArrowLeft() +{ + if (!strlen(m_szSoundArrowLeft)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ArrowLeftSound",m_szSoundArrowLeft,sizeof(m_szSoundArrowLeft)); + } + _ASSERT(strlen(m_szSoundArrowLeft)); + return m_szSoundArrowLeft; +}; + +const char *CInterfaceResMgr::GetSoundArrowRight() +{ + if (!strlen(m_szSoundArrowLeft)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ArrowRightSound",m_szSoundArrowLeft,sizeof(m_szSoundArrowLeft)); + } + _ASSERT(strlen(m_szSoundArrowLeft)); + return m_szSoundArrowLeft; +}; + + + +const char *CInterfaceResMgr::GetObjectiveAddedSound() +{ + if (!strlen(m_szSoundObjAdd)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ObjAddSound",m_szSoundObjAdd,sizeof(m_szSoundObjAdd)); + } + _ASSERT(strlen(m_szSoundObjAdd)); + return m_szSoundObjAdd; +}; + +const char *CInterfaceResMgr::GetObjectiveRemovedSound() +{ + if (!strlen(m_szSoundObjRemove)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ObjRemoveSound",m_szSoundObjRemove,sizeof(m_szSoundObjRemove)); + } + _ASSERT(strlen(m_szSoundObjRemove)); + return m_szSoundObjRemove; +}; + +const char *CInterfaceResMgr::GetObjectiveCompletedSound() +{ + if (!strlen(m_szSoundObjComplete)) + { + g_pClientButeMgr->GetInterfaceAttributeString("ObjCompleteSound",m_szSoundObjComplete,sizeof(m_szSoundObjComplete)); + } + _ASSERT(strlen(m_szSoundObjComplete)); + return m_szSoundObjComplete; +}; + + + +void CInterfaceResMgr::ConvertScreenPos(int &x, int &y) +{ + if (m_dwScreenWidth == 640 && m_dwScreenHeight == USABLE_HEIGHT_I) + return; + + x = (int)( (LTFLOAT)x * m_fXRatio ); + y = (int)( (LTFLOAT)y * m_fYRatio ); +}; + +void CInterfaceResMgr::ConvertScreenRect(LTRect &rect) +{ + if (m_dwScreenWidth == 640 && m_dwScreenHeight == USABLE_HEIGHT_I) + return; + + rect.left = (int)( (LTFLOAT)rect.left * m_fXRatio ); + rect.right = (int)( (LTFLOAT)rect.right * m_fXRatio ); + rect.top = (int)( (LTFLOAT)rect.top * m_fYRatio ); + rect.bottom = (int)( (LTFLOAT)rect.bottom * m_fYRatio ); + +}; + +CUIFont* CInterfaceResMgr::GetFont(uint32 nIndex) +{ + if (nIndex >= m_FontArray.size()) + return LTNULL; + return m_FontArray.at(nIndex); +} + +////////////////////////////////////////////////////////////////////// +// Load font information from file and build the font +CUIFont* CInterfaceResMgr::CreateFont(char const* pszFontFile, char const* pszFontFace, uint8 ptSize) +{ + // Must specify a font face. + if ( !pszFontFace ) + return LTNULL; + + CUIFont * pFont = g_pFontManager->CreateFont( pszFontFile, pszFontFace, ptSize, 33, 255); + + //this will set the width of the space character for proportional fonts + if (pFont) + { + pFont->SetDefCharWidth((ptSize/4)); + pFont->SetDefColor(argbBlack); + } + + if (pFont) + { + uint32 w,h; + g_pTexInterface->GetTextureDims(pFont->GetTexture(),w,h); + DebugCPrint(1,"Created font <%s> using a %dX%d texture.",pszFontFace,w,h); + + } + + + return (pFont); + +/* +//create a font from a texture + + HTEXTURE hTex = LTNULL; + LTIntPt ptSize(23,23); + + char szFontName[128] = "Interface/Fonts/font_large.dtx"; + char szFontTable[128] = "Interface/Fonts/font_large.ftb"; + + g_pTexInterface->CreateTextureFromName(hTex, szFontName); + + // Note valid textures which we will need to release during termination + if (hTex) + m_TextureSet.Add(hTex); + + // Got a table name, use it. + uint8 *pBuf = LTNULL; + ILTStream *pStream; + int32 iSize; + + // Slurp the font table into memory + if(g_pLTClient->OpenFile(szFontTable, &pStream) == LT_OK) + { + iSize = pStream->GetLen(); + pBuf = debug_newa(uint8, iSize); + + if (!pBuf) + { + g_pLTClient->CPrint("Couldn't alloc for font table"); + pStream->Release(); + return LTNULL; + } + + // Slurp the whole file into memory. + pStream->Read(pBuf, iSize); + pStream->Release(); + } + pFont = g_pFontManager->CreateFont(hTex, pBuf, ptSize.y); + + if (!pFont) + return (pDefault); + + // Perform any necessary rescaling + if (ht != 0) pFont->SetDefCharHeight(ht); + + pFont->SetDefColor(0xFF000000); + return (pFont); + +*/ + +} + + +HTEXTURE CInterfaceResMgr::GetTexture(const char *szTexName) +{ + HTEXTURE hTex = LTNULL; + + LTRESULT res = g_pTexInterface->FindTextureFromName(hTex, szTexName); + + //if we found it, see if it's in our list + if (res == LT_OK) + { + TextureSet::iterator iter = m_TextureSet.find(hTex); + + //if is not in our list, inc the ref count so no one else frees it + if (iter == m_TextureSet.end()) + { +// g_pLTClient->CPrint("CInterfaceResMgr::GetTexture() : increasing ref count to existing texture %s",szTexName); + g_pTexInterface->AddRefTextureHandle(hTex); + m_TextureSet.insert(hTex); + } + } + else + { +// g_pLTClient->CPrint("CInterfaceResMgr::GetTexture() : creating texture %s",szTexName); + g_pTexInterface->CreateTextureFromName(hTex, szTexName); + // Note valid textures which we will need to release during termination + if (hTex) + m_TextureSet.insert(hTex); + + } + + return hTex; +} diff --git a/Jack/ClientShellDLL/InterfaceResMgr.h b/Jack/ClientShellDLL/InterfaceResMgr.h new file mode 100644 index 00000000..60d5de17 --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceResMgr.h @@ -0,0 +1,145 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceResMgr.h +// +// PURPOSE : Manager for resources associated with the interface +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_INTERFACERESMGR_H_) +#define _INTERFACERESMGR_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "LTGUIMgr.h" +#include "InterfaceSurfMgr.h" +#include "iltfontmanager.h" + +class CGameClientShell; +class CInterfaceResMgr; +extern CInterfaceResMgr* g_pInterfaceResMgr; + +typedef std::vector FontArray; +typedef std::set TextureSet; + +const int kMaxSoundFilename = 64; + +class CInterfaceResMgr +{ +public: + CInterfaceResMgr(); + virtual ~CInterfaceResMgr(); + + LTBOOL Init(); + void Term(); + HSURFACE GetSharedSurface(char *lpszPath) { return m_InterfaceSurfMgr.GetSurface(lpszPath); } + void FreeSharedSurface(char *lpszPath) { m_InterfaceSurfMgr.FreeSurface(lpszPath); } + void FreeSharedSurface(HSURFACE hSurf) { m_InterfaceSurfMgr.FreeSurface(hSurf); } + + HTEXTURE GetTexture(const char *szTexName); + + CUIFont* GetFont(uint32 nIndex); + + HSURFACE GetSurfaceCursor(); + + const char *GetSoundSelect(); + const char *GetSoundChange(); + const char *GetSoundPageChange(); + const char *GetSoundUnselectable(); + const char *GetSoundArrowUp(); + const char *GetSoundArrowDown(); + const char *GetSoundArrowLeft(); + const char *GetSoundArrowRight(); + const char *GetObjectiveAddedSound(); + const char *GetObjectiveRemovedSound(); + const char *GetObjectiveCompletedSound(); + + void ScreenDimsChanged(); + + + LTBOOL IsEnglish() { return m_bEnglish; } + + void DrawScreen(); + + + void ConvertScreenRect(LTRect &rect); + void ConvertScreenPos(LTIntPt &pos) {ConvertScreenPos(pos.x,pos.y);} + void ConvertScreenPos(int &x, int &y); + LTFLOAT GetXRatio() {return m_fXRatio;} + LTFLOAT GetYRatio() {return m_fYRatio;} + + uint32 GetScreenWidth(); + uint32 GetScreenHeight(); + + void DrawMessage(int nMessageId, uint8 nFontSize = 0); + void DrawMessage(const char *pString, uint8 nFontSize = 0); + + + //call Setup() before entering a 2-d state (screen) + //call Clean() before returning to the game + LTBOOL Setup(); + void Clean(); + +protected: + // More initialization + + LTBOOL InitFonts(); + CUIFont* CreateFont(char const* pszFontFile, char const* pszFontFace, uint8 ptSize); + +protected: + LTBOOL m_bEnglish; // True if the resource file has English as the specified language + + TextureSet m_TextureSet; // list of used textures + + FontArray m_FontArray; + + HSURFACE m_hSurfCursor; // The software cursor surface + + int m_nYesVKeyCode; // The virtual key code for "yes" responses + int m_nNoVKeyCode; // The virtual key code for "no" responses + + CInterfaceSurfMgr m_InterfaceSurfMgr; // Used to share title graphics + + LTFLOAT m_fXRatio; + LTFLOAT m_fYRatio; + uint32 m_dwScreenWidth; + uint32 m_dwScreenHeight; + + char m_szSoundSelect[kMaxSoundFilename]; + char m_szSoundChange[kMaxSoundFilename]; + char m_szSoundPageChange[kMaxSoundFilename]; + char m_szSoundUnselectable[kMaxSoundFilename]; + char m_szSoundArrowUp[kMaxSoundFilename]; + char m_szSoundArrowDown[kMaxSoundFilename]; + char m_szSoundArrowLeft[kMaxSoundFilename]; + char m_szSoundArrowRight[kMaxSoundFilename]; + char m_szSoundObjAdd[kMaxSoundFilename]; + char m_szSoundObjRemove[kMaxSoundFilename]; + char m_szSoundObjComplete[kMaxSoundFilename]; + + CLTGUIWindow m_MsgDlg; + CLTGUITextCtrl* m_pMsgText; + +}; + +#define TERMSHAREDSURF(surf) if(surf) { g_pInterfaceResMgr->FreeSharedSurface(surf); surf = NULL; } + +inline uint32 CInterfaceResMgr::GetScreenWidth() +{ + if (m_dwScreenWidth < 0) + ScreenDimsChanged(); + return m_dwScreenWidth; +} +inline uint32 CInterfaceResMgr::GetScreenHeight() +{ + if (m_dwScreenHeight < 0) + ScreenDimsChanged(); + return m_dwScreenHeight; +} + + +#endif // !defined(_INTERFACERESMGR_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/InterfaceSurfMgr.cpp b/Jack/ClientShellDLL/InterfaceSurfMgr.cpp new file mode 100644 index 00000000..56deb46e --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceSurfMgr.cpp @@ -0,0 +1,184 @@ +// InterfaceSurfMgr.cpp: implementation of the CInterfaceSurfMgr class. +// +////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "ltbasedefs.h" +#include "iclientshell.h" +#include "InterfaceSurfMgr.h" +#ifndef __PSX2 +#include +#endif + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CInterfaceSurfMgr::CInterfaceSurfMgr() +{ + m_pClientDE=LTNULL; +} + +CInterfaceSurfMgr::~CInterfaceSurfMgr() +{ + Term(); +} + +// Intialization +LTBOOL CInterfaceSurfMgr::Init(ILTClient *pClientDE) +{ + m_pClientDE=pClientDE; + + if (m_pClientDE == LTNULL) + { + return LTFALSE; + } + + return LTTRUE; +} + +// Termination +void CInterfaceSurfMgr::Term() +{ + if (!m_pClientDE) + { + return; + } + FreeAllSurfaces(); + return; +} + + +void CInterfaceSurfMgr::FreeAllSurfaces() +{ + unsigned int i; + for (i=0; i < m_sharedSurfaceArray.GetSize(); i++) + { + m_pClientDE->DeleteSurface(m_sharedSurfaceArray[i]->m_hSurface); + debug_delete(m_sharedSurfaceArray[i]); + } + m_sharedSurfaceArray.SetSize(0); +} + +// Returns a handle to a surface from its bitmap filename. +HSURFACE CInterfaceSurfMgr::GetSurface(char *lpszSurface) +{ + if (!lpszSurface) + { + return LTNULL; + } + + // Search for the surface to see if it has been loaded yet + int nIndex=FindSurfaceIndex(lpszSurface); + + // Return the surface if it is already loaded + if (nIndex != -1) + { + return m_sharedSurfaceArray[nIndex]->m_hSurface; + } + + // Load the surface + HSURFACE hSurface=m_pClientDE->CreateSurfaceFromBitmap(lpszSurface); + if (hSurface == LTNULL) + { + return LTNULL; + } + + // Create the new resource class + CSharedSurface *pSharedSurface=debug_new(CSharedSurface); + + // Copy the filename +#ifdef __PSX2 + int nBufferSize=strlen(lpszSurface)+1; +#else + int nBufferSize=_mbstrlen(lpszSurface)+1; +#endif + pSharedSurface->m_lpszPathName=debug_newa(char, nBufferSize); +#ifdef __PSX2 + strncpy(pSharedSurface->m_lpszPathName, lpszSurface, nBufferSize); +#else + _mbsncpy((unsigned char*)pSharedSurface->m_lpszPathName, (const unsigned char*)lpszSurface, nBufferSize); +#endif + + pSharedSurface->m_hSurface=hSurface; // Copy the surface handle + m_sharedSurfaceArray.Add(pSharedSurface); // Add the class to the array + + // Return the surface handle + return pSharedSurface->m_hSurface; +} + +// Frees a surface. It is only removed when its reference count reaches zero +void CInterfaceSurfMgr::FreeSurface(char *lpszSurface) +{ + int nIndex=FindSurfaceIndex(lpszSurface); + + if (nIndex == -1) + { + return; + } + + FreeSurface(nIndex); +} + +// Frees a surface. It is only removed when its reference count reaches zero +void CInterfaceSurfMgr::FreeSurface(HSURFACE hSurface) +{ + int nIndex=FindSurfaceIndex(hSurface); + + if (nIndex == -1) + { + return; + } + + FreeSurface(nIndex); +} + +// Frees a surface based on its index into the surface array +void CInterfaceSurfMgr::FreeSurface(int nIndex) +{ + if (!m_pClientDE) + { + return; + } + + m_pClientDE->DeleteSurface(m_sharedSurfaceArray[nIndex]->m_hSurface); + + debug_delete(m_sharedSurfaceArray[nIndex]); + m_sharedSurfaceArray.Remove(nIndex); +} + +// Finds a surface index into the surface array +int CInterfaceSurfMgr::FindSurfaceIndex(char *lpszSurface) +{ + unsigned int i; + for (i=0; i < m_sharedSurfaceArray.GetSize(); i++) + { +#ifdef __PSX2 + if (stricmp(m_sharedSurfaceArray[i]->m_lpszPathName, lpszSurface) == 0) +#else + if (_mbsicmp((const unsigned char*)m_sharedSurfaceArray[i]->m_lpszPathName, (const unsigned char*)lpszSurface) == 0) +#endif + { + return i; + } + } + + // Surface was not found + return -1; +} + +// Finds a surface index into the surface array +int CInterfaceSurfMgr::FindSurfaceIndex(HSURFACE hSurface) +{ + unsigned int i; + for (i=0; i < m_sharedSurfaceArray.GetSize(); i++) + { + if (m_sharedSurfaceArray[i]->m_hSurface == hSurface) + { + return i; + } + } + + // Surface was not found + return -1; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/InterfaceSurfMgr.h b/Jack/ClientShellDLL/InterfaceSurfMgr.h new file mode 100644 index 00000000..fbacf92e --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceSurfMgr.h @@ -0,0 +1,73 @@ +// InterfaceSurfMgr.h: interface for the CInterfaceSurfMgr class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_INTERFACESURFMGR_H__8B896D01_6918_11D2_BDAE_0060971BDC6D__INCLUDED_) +#define AFX_INTERFACESURFMGR_H__8B896D01_6918_11D2_BDAE_0060971BDC6D__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "stdlith.h" + +class CSharedSurface +{ +public: + // Constructor + CSharedSurface() + { + m_lpszPathName=LTNULL; + m_hSurface=LTNULL; + } + + // Destructor + ~CSharedSurface() + { + if (m_lpszPathName) + { + debug_deletea(m_lpszPathName); + m_lpszPathName=LTNULL; + } + } + +public: + char *m_lpszPathName; + HSURFACE m_hSurface; +}; + +class CInterfaceSurfMgr +{ +public: + CInterfaceSurfMgr(); + virtual ~CInterfaceSurfMgr(); + + // Intialization/Termination + LTBOOL Init(ILTClient *pClientDE); + void Term(); + + // Returns a handle to a surface from its bitmap filename. + HSURFACE GetSurface(char *lpszSurface); + + // Frees a surface. + void FreeSurface(char *lpszSurface); + void FreeSurface(HSURFACE hSurface); + + void FreeAllSurfaces(); + +protected: + // Frees a surface based on its index into the surface array + void FreeSurface(int nIndex); + + // Finds a surface index into the surface array. -1 is returned if it cannot be found + int FindSurfaceIndex(char *lpszSurface); + int FindSurfaceIndex(HSURFACE hSurface); + +protected: + ILTClient *m_pClientDE; // Pointer to client interface + + // Array of shared surfaces + CMoArray m_sharedSurfaceArray; +}; + +#endif // !defined(AFX_INTERFACESURFMGR_H__8B896D01_6918_11D2_BDAE_0060971BDC6D__INCLUDED_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/InterfaceTimer.cpp b/Jack/ClientShellDLL/InterfaceTimer.cpp new file mode 100644 index 00000000..a75b5102 --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceTimer.cpp @@ -0,0 +1,138 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceTimer.cpp +// +// PURPOSE : Implementation of InterfaceTimer class +// +// CREATED : 10/18/99 +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include +#include "InterfaceTimer.h" +#include "GameClientShell.h" +#include "iltclient.h" +#include "InterfaceResMgr.h" + +static void BuildTimeString(char* aBuffer, int nTime); + +CInterfaceTimer::CInterfaceTimer() +{ + m_fTime = 0.0f; + m_fTimeLeft = 0.0f; + m_bPause = LTFALSE; + m_pTimeStr = LTNULL; + m_nBaseSize = 0; + m_pFont = NULL; + m_nColor = argbWhite; + m_eAlignment = CUI_HALIGN_CENTER; +} + +CInterfaceTimer::~CInterfaceTimer() +{ + if (m_pTimeStr) + g_pFontManager->DestroyPolyString(m_pTimeStr); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceTimer::Init() +// +// PURPOSE: Initializes the interface timer. +// +// ----------------------------------------------------------------------- // +bool CInterfaceTimer::Init( uint8 nFont, uint8 nBaseSize, LTIntPt const& basePos, LTVector const& vColor, CUI_ALIGNMENTTYPE eAlignment ) +{ + m_pFont = g_pInterfaceResMgr->GetFont( nFont ); + if( !m_pFont ) + return false; + + m_nBaseSize = nBaseSize; + m_BasePos = basePos; + if(m_BasePos.x == 0) + m_BasePos = LTIntPt(320,40); + m_nColor = SET_ARGB( 0xFF, ( uint8 )vColor.x, ( uint8 )vColor.y, ( uint8 )vColor.z ); + + m_eAlignment = eAlignment; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceTimer::Draw() +// +// PURPOSE: Handle drawing the stats +// +// ----------------------------------------------------------------------- // + +void CInterfaceTimer::Draw() +{ + + // If we're not paused, recalculate the time left. + if( !m_bPause ) + m_fTimeLeft = m_fTime - g_pLTClient->GetGameTime( ); + + // Update/Draw the timer if there is anytime left... + if( m_fTimeLeft <= 0.0f ) + return; + + // Draw the string to the surface... + + int nMinutes = int(m_fTimeLeft) / 60; + int nSeconds = m_fTimeLeft > 60.0 ? int(m_fTimeLeft) % 60 : int(m_fTimeLeft); + + char aBuffer[8]; + uint8 nFont = 0; + LTVector vColor; + + sprintf(aBuffer, "%02d:%02d", nMinutes, nSeconds); + + if (!m_pTimeStr) + { + m_pTimeStr = g_pFontManager->CreateFormattedPolyString(m_pFont, aBuffer); + m_pTimeStr->SetAlignmentH(m_eAlignment); + uint8 nSize = (uint8)((LTFLOAT)m_nBaseSize * g_pInterfaceResMgr->GetXRatio()); + m_pTimeStr->SetCharScreenHeight(nSize); + } + else + { + m_pTimeStr->SetText(aBuffer); + } + + // Position the text + float x = (float)m_BasePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)m_BasePos.y * g_pInterfaceResMgr->GetYRatio(); + + m_pTimeStr->SetPosition( x+2.0f, y+2.0f); + m_pTimeStr->SetColor(argbBlack); + m_pTimeStr->Render(); + + m_pTimeStr->SetPosition( x, y ); + m_pTimeStr->SetColor(m_nColor); + m_pTimeStr->Render(); +} + +static void BuildTimeString(char* aBuffer, int nTime) +{ + if (nTime > 9) + { + sprintf(aBuffer, "%d", nTime); + } + else + { + sprintf(aBuffer, "0%d", nTime); + } +} + +void CInterfaceTimer::ScreenDimsChanged() +{ + if (m_pTimeStr) + { + uint8 nSize = (uint8)((LTFLOAT)m_nBaseSize * g_pInterfaceResMgr->GetXRatio()); + m_pTimeStr->SetCharScreenHeight(nSize); + } +} diff --git a/Jack/ClientShellDLL/InterfaceTimer.h b/Jack/ClientShellDLL/InterfaceTimer.h new file mode 100644 index 00000000..ec163ae5 --- /dev/null +++ b/Jack/ClientShellDLL/InterfaceTimer.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : InterfaceTimer.h +// +// PURPOSE : Definition of InterfaceTimer class +// +// CREATED : 10/18/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __INTERFACE_TIMER_H__ +#define __INTERFACE_TIMER_H__ + +#include "ltbasedefs.h" +#include "iltfontmanager.h" +#include "TeamMgr.h" + +extern ILTFontManager* g_pFontManager; + +class CInterfaceTimer +{ + public: + + CInterfaceTimer(); + ~CInterfaceTimer(); + + bool Init( uint8 nFont, uint8 nBaseSize, LTIntPt const& basePos, LTVector const& vColor, + CUI_ALIGNMENTTYPE eAlignment ); + void Draw(); + + void SetTime(LTFLOAT fTime, bool bPause) { m_fTime = fTime; m_fTimeLeft = m_fTime - g_pLTClient->GetGameTime( ); m_bPause = bPause; } + float GetTime() const { return m_fTime; } + float GetTimeLeft( ) const { return m_fTimeLeft; } + + void ScreenDimsChanged(); + + private: + + // Server game time when timer runs out. + float m_fTime; + float m_fTimeLeft; + bool m_bPause; + + CUIFormattedPolyString *m_pTimeStr; + + CUIFont* m_pFont; + LTIntPt m_BasePos; + uint8 m_nBaseSize; + uint32 m_nColor; + CUI_ALIGNMENTTYPE m_eAlignment; +}; + +#endif // __INTERFACE_TIMER_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/IpMgr.cpp b/Jack/ClientShellDLL/IpMgr.cpp new file mode 100644 index 00000000..a31c9940 --- /dev/null +++ b/Jack/ClientShellDLL/IpMgr.cpp @@ -0,0 +1,560 @@ +/**************************************************************************** +; +; MODULE: IPMGR (.CPP) +; +; PURPOSE: IP Manager Classes +; +; HISTORY: 11/09/98 [blg] This file was created +; +; COMMENT: Copyright (c) 1998, Monolith Productions Inc. +; +****************************************************************************/ + + +// Includes... + +#include "stdafx.h" +#include "iltclient.h" +#include "IpMgr.h" + + +// Functions... + +/* *********************************************************************** */ +/* CIp */ + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIp::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CIp::Init(const char* sIp) +{ + // Sanity checks... + + if (!sIp) return(FALSE); + if (sIp[0] == '\0') return(FALSE); + + + // Set simple members... + + strncpy(m_sIp, sIp, IPM_MAX_ADDRESS); + + + // All done... + + return(TRUE); +} + + +/* *********************************************************************** */ +/* CIpMgr */ + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::Init(ILTClient* pClientDE) +{ + // Sanity checks... + + if (!pClientDE) return(FALSE); + + + // Set simple members... + + Clear(); + + m_pClientDE = pClientDE; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CIpMgr::Term() +{ + // Delete all the ips... + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + if (pIp) + { + debug_delete(pIp); + } + } + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::ExistIp +// +// PURPOSE: Determines if the given ip exists +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::ExistIp(const char* sIp) +{ + // Sanity checks... + + if (!sIp) return(FALSE); + + + // Loop through each ip... + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + if (pIp) + { + if (strcmp(sIp, pIp->GetAddress()) == 0) + { + return(TRUE); + } + } + } + + + // If we get here, the ip doesn't exist... + + return(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::AddIp +// +// PURPOSE: Adds the given ip +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::AddIp(const char* sIp) +{ + // Sanity checks... + + if (!sIp) return(FALSE); + + + // Make sure this ip doesn't already exist... + + if (ExistIp(sIp)) return(TRUE); + + + // Make sure there is room to add this ip... + + if (m_cIps >= IPM_MAX_IPS) return(FALSE); + + + // Create a new ip... + + CIp* pIp = debug_new(CIp); + if (!pIp) return(FALSE); + + if (!pIp->Init(sIp)) + { + debug_delete(pIp); + return(FALSE); + } + + + // Add this ip... + + m_aIps[m_cIps++] = pIp; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::RemoveIp +// +// PURPOSE: Removes the given ip +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::RemoveIp(const char* sIp) +{ + // Sanity checks... + + if (!sIp) return(FALSE); + + + // Loop through each ip... + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + if (pIp) + { + if (strcmp(sIp, pIp->GetAddress()) == 0) + { + // Delete this ip... + + debug_delete(pIp); + + + // Shift the array... + + for (int j = i + 1; j < m_cIps; j++) + { + m_aIps[j-1] = m_aIps[j]; + } + + m_cIps--; + + + // All done removing the ip... + + return(TRUE); + } + } + } + + + // If we get here, the ip doesn't exist so we can't remove it... + + return(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::GetAllIpString +// +// PURPOSE: Returns a big huge string with all the ip addresses +// sperated by semi-colons. +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::GetAllIpString(char* sBuf, int nBufSize) +{ + // Sanity checks... + + if (!sBuf) return(FALSE); + if (nBufSize <= 0) return(FALSE); + + + // Start building the string, making sure we don't over-run the buffer... + + int nTotalSize = 0; + + strcpy(sBuf, ""); + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + + if (pIp) + { + const char* sIp = pIp->GetAddress(); + if (sIp) + { + int nLen = strlen(sIp); + + if (nTotalSize + nLen + 2 < nBufSize) + { + if (nTotalSize > 0) strcat(sBuf, ";"); + strcat(sBuf, sIp); + nTotalSize = strlen(sBuf); + } + } + } + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::FillListBox +// +// PURPOSE: Fills the given list box with all the ips +// +// ----------------------------------------------------------------------- // + +int CIpMgr::FillListBox(HWND hList) +{ + // Sanity checks... + + if (!hList) return(0); + + + // Empty the list box... + + SendMessage(hList, LB_RESETCONTENT, 0, 0); + + + // Add each ip... + + SendMessage(hList, WM_SETREDRAW, 0, 0); + + int cIps = 0; + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + if (pIp) + { + int nRet = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)pIp->GetAddress()); + if (nRet != LB_ERR) cIps++; + } + } + + SendMessage(hList, WM_SETREDRAW, 1, 0); + InvalidateRect(hList, NULL, FALSE); + UpdateWindow(hList); + + + // All done... + + return(cIps); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::AddIpFromEditControl +// +// PURPOSE: Adds a new ip from the given edit control +// +// COMMENT: This function will update a list box if one is given +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::AddIpFromEditControl(HWND hEdit, HWND hList) +{ + // Sanity checks... + + if (!hEdit) return(FALSE); + + + // Get the text from the edit control... + + char sIp[IPM_MAX_ADDRESS + 2]; + + int nLen = GetWindowText(hEdit, sIp, IPM_MAX_ADDRESS); + if (nLen <= 0) return(FALSE); + + + // Add the ip... + + if (!AddIp(sIp)) + { + return(FALSE); + } + + + // Empty the edit control... + + SetWindowText(hEdit, ""); + + + // Fill the list box if one was specified... + + FillListBox(hList); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::RemoveSelectedIpFromListBox +// +// PURPOSE: Removes the currently selected ip from the given list box +// +// ----------------------------------------------------------------------- // + +BOOL CIpMgr::RemoveSelectedIpFromListBox(HWND hList) +{ + // Sanity checks... + + if (!hList) return(FALSE); + + + // Get the currently selected ip text from the list box... + + int iSel = SendMessage(hList, LB_GETCURSEL, 0, 0); + if (iSel == LB_ERR) return(FALSE); + + char sIp[IPM_MAX_ADDRESS + 2]; + + int nRet = SendMessage(hList, LB_GETTEXT, iSel, (LPARAM)sIp); + if (nRet == LB_ERR) return(FALSE); + + + // Remove the ip from our array... + + RemoveIp(sIp); + + + // Remove the ip from the list box... + + SendMessage(hList, LB_DELETESTRING, iSel, 0); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::RemoveAll +// +// PURPOSE: Removes all of the ips +// +// ----------------------------------------------------------------------- // + +void CIpMgr::RemoveAll() +{ + // Delete all the ips... + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + if (pIp) + { + debug_delete(pIp); + } + } + + Clear(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::WriteIps +// +// PURPOSE: Writes the ip addresses to the config file +// +// ----------------------------------------------------------------------- // + +int CIpMgr::WriteIps() +{ + // Sanity checks... + + if (!m_pClientDE) return(0); + + + // Write each ip address... + + char sKey[64]; + char sTemp[512]; + int cIps = 0; + + for (int i = 0; i < m_cIps; i++) + { + CIp* pIp = GetIp(i); + + if (pIp) + { + wsprintf(sKey, "Ip%i", i); + wsprintf(sTemp, "+%s %s", sKey, pIp->GetAddress()); + m_pClientDE->RunConsoleString(sTemp); + cIps++; + } + } + + + // Write out the count... + + wsprintf(sTemp, "+IpCount %i", cIps); + m_pClientDE->RunConsoleString(sTemp); + + + // All done... + + return(cIps); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CIpMgr::ReadIps +// +// PURPOSE: Reads the ip addresses from the config file +// +// ----------------------------------------------------------------------- // + +int CIpMgr::ReadIps() +{ + // Sanity checks... + + if (!m_pClientDE) return(0); + + + // Read the ip address count value... + + int cIps = 0; + + HCONSOLEVAR hVar = m_pClientDE->GetConsoleVar("IpCount"); + if (hVar) + { + cIps = (int)m_pClientDE->GetVarValueFloat(hVar); + } + + if (cIps <= 0) return(0); + + + // Read each ip address... + + char sKey[64]; + int count = 0; + + for (int i = 0; i < cIps; i++) + { + wsprintf(sKey, "Ip%i", i); + + HCONSOLEVAR hVar = m_pClientDE->GetConsoleVar(sKey); + if (hVar) + { + const char* sValue = m_pClientDE->GetVarValueString(hVar); + if (sValue) + { + if (AddIp(sValue)) count++; + } + } + } + + + // All done... + + return(count); +} + diff --git a/Jack/ClientShellDLL/IpMgr.h b/Jack/ClientShellDLL/IpMgr.h new file mode 100644 index 00000000..69e52779 --- /dev/null +++ b/Jack/ClientShellDLL/IpMgr.h @@ -0,0 +1,126 @@ +/**************************************************************************** +; +; MODULE: IPMGR (.H) +; +; PURPOSE: IP Manager Classes +; +; HISTORY: 11/09/98 [blg] This file was created +; +; COMMENT: Copyright (c) 1998, Monolith Productions Inc. +; +****************************************************************************/ + + +#ifndef _IPMGR_H_ +#define _IPMGR_H_ + + +// Defines... + +#define IPM_MAX_ADDRESS 32 +#define IPM_MAX_IPS 256 + + +// Externs... + +class ILTClient; + + +// Classes... + +class CIp +{ + // Member functions... + +public: + CIp() { Clear(); } + ~CIp() { Term(); } + + BOOL Init(const char* sIp); + void Term(); + void Clear(); + + char* GetAddress() { return(m_sIp); } + + + // Member variables... + +private: + char m_sIp[IPM_MAX_ADDRESS + 2]; +}; + +class CIpMgr +{ + // Member functions... + +public: + CIpMgr() { Clear(); } + ~CIpMgr() { Term(); } + + BOOL Init(ILTClient* pClientDE); + void Term(); + void Clear(BOOL bClearClientDE=TRUE); + + int GetNumIps() { return(m_cIps); } + BOOL GetAllIpString(char* sBuf, int nBufSize); + CIp* GetIp(int i); + + BOOL ExistIp(const char* sIp); + + BOOL AddIp(const char* sIp); + BOOL AddIpFromEditControl(HWND hEdit, HWND hList = NULL); + + BOOL RemoveIp(const char* sIp); + void RemoveAll(); + BOOL RemoveSelectedIpFromListBox(HWND hList); + + int FillListBox(HWND hList); + + int ReadIps(); + int WriteIps(); + + + // Member variables... + +private: + int m_cIps; + CIp* m_aIps[IPM_MAX_IPS]; + ILTClient* m_pClientDE; +}; + + +// Inlines... + +inline void CIp::Clear() +{ + m_sIp[0] = '\0'; +} + +inline void CIp::Term() +{ + Clear(); +} + +inline void CIpMgr::Clear(BOOL bClearClientDE) +{ + m_cIps = 0; + + if(bClearClientDE) + { + m_pClientDE = NULL; + } + + for (int i = 0; i < IPM_MAX_IPS; i++) m_aIps[i] = NULL; +} + +inline CIp* CIpMgr::GetIp(int i) +{ + if (i < 0) return(NULL); + if (i >= m_cIps) return(NULL); + return(m_aIps[i]); +} + + +// EOF... + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/JumpVolumeFX.cpp b/Jack/ClientShellDLL/JumpVolumeFX.cpp new file mode 100644 index 00000000..94f66d02 --- /dev/null +++ b/Jack/ClientShellDLL/JumpVolumeFX.cpp @@ -0,0 +1,85 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : JumpVolumeFX.h +// +// PURPOSE : JumpVolume special fx class - Definition +// +// CREATED : 1/24/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "JumpVolumeFX.h" + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CJumpVolumeFX::CJumpVolumeFX +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CJumpVolumeFX::CJumpVolumeFX() +: CSpecialFX (), + m_vVelocity ( 0.0f, 0.0f, 0.0f ) +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CJumpVolumeFX::~CJumpVolumeFX +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CJumpVolumeFX::~CJumpVolumeFX() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CJumpVolumeFX::Init +// +// PURPOSE: Init the JumpVolume.... +// +// ----------------------------------------------------------------------- // + +LTBOOL CJumpVolumeFX::Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::Init( hServObj, pMsg )) return LTFALSE; + if( !pMsg ) return LTFALSE; + + m_vVelocity = pMsg->ReadLTVector(); + + g_pCommonLT->SetObjectFlags( m_hServerObject, OFT_Flags, FLAG_TOUCH_NOTIFY, FLAG_TOUCH_NOTIFY ); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CJumpVolumeFX::OnServerMessage +// +// PURPOSE: Handle a message from the server... +// +// ----------------------------------------------------------------------- // + +LTBOOL CJumpVolumeFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !pMsg ) return LTFALSE; + + m_vVelocity = pMsg->ReadLTVector(); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/JumpVolumeFX.h b/Jack/ClientShellDLL/JumpVolumeFX.h new file mode 100644 index 00000000..18ce18db --- /dev/null +++ b/Jack/ClientShellDLL/JumpVolumeFX.h @@ -0,0 +1,42 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : JumpVolumeFX.h +// +// PURPOSE : JumpVolume special fx class - Definition +// +// CREATED : 1/24/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __JUMP_VOLUME_FX_H__ +#define __JUMP_VOLUME_FX_H__ + +// +// Includes... +// + + #include "SpecialFX.h" + + +class CJumpVolumeFX : public CSpecialFX +{ + public : // Methods... + + CJumpVolumeFX(); + ~CJumpVolumeFX(); + + virtual LTBOOL Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ); + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_JUMPVOLUME_ID; } + + inline LTVector GetVelocity() const { return m_vVelocity; } + + protected : // Members... + + LTVector m_vVelocity; +}; + +#endif // __JUMP_VOLUME_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LaserBeam.cpp b/Jack/ClientShellDLL/LaserBeam.cpp new file mode 100644 index 00000000..5f3da1a2 --- /dev/null +++ b/Jack/ClientShellDLL/LaserBeam.cpp @@ -0,0 +1,285 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : LaserBeam.cpp +// +// PURPOSE : LaserBeam class - Implementation +// +// CREATED : 11/16/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LaserBeam.h" +#include "GameClientShell.h" +#include "ClientUtilities.h" +#include "VarTrack.h" +#include "CMoveMgr.h" + +VarTrack g_cvarLaserBeamThickness; +VarTrack g_cvarLaserBeamAlpha; +VarTrack g_cvarLaserBeamUOffset; +VarTrack g_cvarLaserBeamROffset; +VarTrack g_cvarLaserBeamFOffset; +VarTrack g_cvarLaserBeamNumSegments; + +VarTrack g_cvarLaserBeamDebug; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::CLaserBeam() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CLaserBeam::CLaserBeam() +{ + m_bOn = LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::~CLaserBeam() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CLaserBeam::~CLaserBeam() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::TurnOn() +// +// PURPOSE: Turn light on +// +// ----------------------------------------------------------------------- // + +void CLaserBeam::TurnOn() +{ + Init(); + + uint32 dwFlags = m_LightBeam.GetFlags(); + m_LightBeam.SetFlags(dwFlags | FLAG_VISIBLE); + + m_bOn = LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::TurnOff() +// +// PURPOSE: Turn light off +// +// ----------------------------------------------------------------------- // + +void CLaserBeam::TurnOff() +{ + uint32 dwFlags = m_LightBeam.GetFlags(); + m_LightBeam.SetFlags(dwFlags & ~FLAG_VISIBLE); + + m_bOn = LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::Init() +// +// PURPOSE: Init stuff +// +// ----------------------------------------------------------------------- // + +void CLaserBeam::Init() +{ + g_cvarLaserBeamThickness.Init(g_pLTClient, "LaserBeamThickness", NULL, 1.0f); + g_cvarLaserBeamAlpha.Init(g_pLTClient, "LaserBeamAlpha", NULL, 0.5f); + g_cvarLaserBeamUOffset.Init(g_pLTClient, "LaserBeamUOffset", NULL, 0.0f); + g_cvarLaserBeamROffset.Init(g_pLTClient, "LaserBeamROffset", NULL, 0.0f); + g_cvarLaserBeamFOffset.Init(g_pLTClient, "LaserBeamFOffset", NULL, 0.0f); + g_cvarLaserBeamNumSegments.Init(g_pLTClient, "LaserBeamNumSegments", NULL, 2.0f); + + g_cvarLaserBeamDebug.Init(g_pLTClient, "LaserBeamDebug", NULL, 2.0f); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserBeam::Update() +// +// PURPOSE: Update the flash light +// +// ----------------------------------------------------------------------- // + +void CLaserBeam::Update(LTVector &vBeamStartPos, const LTRotation* pRDirRot, + LTBOOL b3rdPerson, LTBOOL bDetect) +{ + if (!m_bOn) return; + + // Calculate beam position... + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj) return; + + HOBJECT hFilterList[] = {hPlayerObj, g_pPlayerMgr->GetMoveMgr()->GetObject(), LTNULL}; + + IntersectQuery qInfo; + IntersectInfo iInfo; + + LTVector vPos(0, 0, 0); + LTRotation rRot; + + LTVector vU, vR, vF; + + if (pRDirRot && b3rdPerson) + { + vPos = vBeamStartPos; + + vU = pRDirRot->Up(); + vR = pRDirRot->Right(); + vF = pRDirRot->Forward(); + } + else + { + g_pLTClient->GetObjectRotation(hCamera, &rRot); + g_pLTClient->GetObjectPos(hCamera, &vPos); + + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + if (g_cvarLaserBeamDebug.GetFloat() == 0.0f) + { + vBeamStartPos += vPos; + } + else if (g_cvarLaserBeamDebug.GetFloat() == 1.0f) + { + vBeamStartPos = vPos; + } + else if (pRDirRot) + { + vU = pRDirRot->Up(); + vR = pRDirRot->Right(); + vF = pRDirRot->Forward(); + vBeamStartPos = vBeamStartPos; + } + + } + + + LTVector vEndPos = vPos + (vF * 10000.0f); + + qInfo.m_From = vPos; + qInfo.m_To = vEndPos; + + qInfo.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID; + qInfo.m_FilterFn = ObjListFilterFn; + qInfo.m_pUserData = hFilterList; + + if (g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + vEndPos = iInfo.m_Point; + } + + + // Show the light beam... + + LTVector vColor = LTVector(GetRandom(235.0f, 255.0f), GetRandom(35.0f, 55.0f), GetRandom(35.0f, 55.0f));; + + LTFLOAT fAlpha = g_cvarLaserBeamAlpha.GetFloat(); + + if (iInfo.m_hObject && bDetect) + { + uint32 dwUsrFlgs = 0; + g_pCommonLT->GetObjectFlags(iInfo.m_hObject, OFT_User, dwUsrFlgs); + + if (dwUsrFlgs & USRFLG_CHARACTER) + { + fAlpha = 0.95f; + vColor.Init(GetRandom(35.0f, 55.0f), GetRandom(235.0f, 255.0f), GetRandom(35.0f, 55.0f));; + } + } + + LTFLOAT fWidth = g_cvarLaserBeamThickness.GetFloat(); + fWidth = b3rdPerson ? fWidth*2.0f : fWidth; + + vBeamStartPos += (vF * g_cvarLaserBeamFOffset.GetFloat()); + vBeamStartPos += (vR * g_cvarLaserBeamROffset.GetFloat()); + vBeamStartPos += (vU * g_cvarLaserBeamUOffset.GetFloat()); + + PLFXCREATESTRUCT pls; + + if (g_cvarLaserBeamDebug.GetFloat() >= 0.0f) + { + // g_pLTClient->CPrint("StartPos = %.2f, %.2f, %.2f", VEC_EXPAND(vBeamStartPos)); + // g_pLTClient->CPrint("EndPos = %.2f, %.2f, %.2f", VEC_EXPAND(vEndPos)); + } + + pls.vStartPos = vBeamStartPos; + pls.vEndPos = vEndPos; + pls.vInnerColorStart = vColor; + pls.vInnerColorEnd = pls.vInnerColorStart; + pls.vOuterColorStart = LTVector(0, 0, 0); + pls.vOuterColorEnd = LTVector(0, 0, 0); + pls.fAlphaStart = fAlpha; + pls.fAlphaEnd = fAlpha; + pls.fMinWidth = 0; + pls.fMaxWidth = fWidth; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fLifeTime = 1.0f; + pls.fAlphaLifeTime = 1.0f; + pls.fPerturb = 0.0f; + pls.bAdditive = LTTRUE; + pls.bAlignFlat = b3rdPerson ? LTFALSE : LTTRUE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.nNumSegments = (int)g_cvarLaserBeamNumSegments.GetFloat(); + + if (m_LightBeam.HasBeenDrawn()) + { + // Keep the light beam in the vis list... + + m_LightBeam.SetPos(vBeamStartPos); + + // Hide the beam in portals if 1st person...Also set flag really + // close to true... + + uint32 dwFlags2, dwFlags; + + dwFlags = m_LightBeam.GetFlags(); + dwFlags2 = m_LightBeam.GetFlags2(); + + if (b3rdPerson) + { + dwFlags &= ~FLAG_REALLYCLOSE; + } + else + { + if (g_cvarLaserBeamDebug.GetFloat() > 1.0f) + { + dwFlags |= FLAG_REALLYCLOSE; + pls.bUseObjectRotation = LTTRUE; + } + } + + m_LightBeam.SetFlags(dwFlags); + m_LightBeam.SetFlags2(dwFlags2); + + m_LightBeam.ReInit(&pls); + } + else + { + m_LightBeam.Init(&pls); + m_LightBeam.CreateObject(g_pLTClient); + } + + + m_LightBeam.Update(); +} diff --git a/Jack/ClientShellDLL/LaserBeam.h b/Jack/ClientShellDLL/LaserBeam.h new file mode 100644 index 00000000..81311dbd --- /dev/null +++ b/Jack/ClientShellDLL/LaserBeam.h @@ -0,0 +1,40 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : LaserBeam.h +// +// PURPOSE : LaserBeam class - Definition +// +// CREATED : 11/16/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LASER_BEAM_H__ +#define __LASER_BEAM_H__ + +#include "ltbasedefs.h" +#include "PolyLineFX.h" + +class CLaserBeam +{ + public : + + CLaserBeam(); + ~CLaserBeam(); + + void Toggle() { (m_bOn ? TurnOff() : TurnOn());} + void TurnOn(); + void TurnOff(); + void Update(LTVector &vBeamStartPos, const LTRotation* pRDirRot, + LTBOOL b3rdPerson, LTBOOL bDetect=LTFALSE); + + private : + + LTBOOL m_bOn; + CPolyLineFX m_LightBeam; + + void Init(); +}; + +#endif // __LASER_BEAM_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LaserTriggerFX.cpp b/Jack/ClientShellDLL/LaserTriggerFX.cpp new file mode 100644 index 00000000..266ce77b --- /dev/null +++ b/Jack/ClientShellDLL/LaserTriggerFX.cpp @@ -0,0 +1,312 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LaserTriggerFX.cpp +// +// PURPOSE : LaserTrigger FX - Implementation +// +// CREATED : 2/11/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LaserTriggerFX.h" +#include "VarTrack.h" +#include "GameClientShell.h" +#include "VisionModeMgr.h" + +VarTrack g_vtLaserTriggerAlpha; + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserTriggerFX::Init +// +// PURPOSE: Init the laser trigger +// +// ----------------------------------------------------------------------- // + +LTBOOL CLaserTriggerFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + m_cs.hServerObj = hServObj; + m_cs.Read(pMsg); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserTriggerFX::Init +// +// PURPOSE: Init the laser trigger fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLaserTriggerFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((LTCREATESTRUCT*)psfxCreateStruct); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserTriggerFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLaserTriggerFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + if (!g_vtLaserTriggerAlpha.IsInitted()) + { + g_vtLaserTriggerAlpha.Init(g_pLTClient, "LTAlpha", NULL, 0.01f); + } + + if (!CalcBeamCoords()) return LTFALSE; + + m_pls.vInnerColorStart = m_cs.vColor; + m_pls.vInnerColorEnd = m_cs.vColor; + m_pls.vOuterColorStart = LTVector(0, 0, 0); + m_pls.vOuterColorEnd = LTVector(0, 0, 0); + m_pls.fAlphaStart = m_cs.fAlpha; + m_pls.fAlphaEnd = m_cs.fAlpha; + m_pls.fMinWidth = 0; + m_pls.fMaxWidth = 50; + m_pls.fMinDistMult = 1.0f; + m_pls.fMaxDistMult = 1.0f; + m_pls.fLifeTime = 10000000.0f; + m_pls.fAlphaLifeTime = 10000000.0f; + m_pls.fPerturb = 0.0f; + m_pls.bAdditive = LTFALSE; + m_pls.nWidthStyle = PLWS_CONSTANT; + m_pls.bAlignUp = LTTRUE; + m_pls.nNumSegments = 1; + m_pls.bNoZ = LTTRUE; + + m_Beam.Init(&m_pls); + m_Beam.CreateObject(m_pClientDE); + + + // Create the sprites if requested... + + if (m_cs.bCreateSprite && m_cs.hstrSpriteFilename) + { + BSCREATESTRUCT bs; + + bs.fLifeTime = 1000000.0f; + bs.fInitialAlpha= 1.0f; + bs.fFinalAlpha = 1.0f; + bs.pFilename = g_pLTClient->GetStringData(m_cs.hstrSpriteFilename); + bs.dwFlags = FLAG_VISIBLE | FLAG_GLOWSPRITE | FLAG_SPRITEBIAS; + bs.bAdditive = LTTRUE; + bs.nType = OT_SPRITE; + bs.vInitialScale.Init(m_cs.fSpriteScale, m_cs.fSpriteScale, 1.0f); + bs.vFinalScale.Init(m_cs.fSpriteScale, m_cs.fSpriteScale, 1.0f); + + bs.vPos = m_pls.vStartPos; + m_StartSprite.Init(&bs); + m_StartSprite.CreateObject(m_pClientDE); + + bs.vPos = m_pls.vEndPos; + m_EndSprite.Init(&bs); + m_EndSprite.CreateObject(m_pClientDE); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserTriggerFX::Update +// +// PURPOSE: Update the beam fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLaserTriggerFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; + + // Hide/show the beam if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + m_Beam.SetFlags(m_Beam.GetFlags() & ~FLAG_VISIBLE); + + // Update the sprites... + + if (m_cs.bCreateSprite) + { + HOBJECT hObj = m_StartSprite.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + + hObj = m_EndSprite.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + } + + return LTTRUE; + } + else + { + m_Beam.SetFlags(m_Beam.GetFlags() | FLAG_VISIBLE); + + // Update the sprites... + + if (m_cs.bCreateSprite) + { + HOBJECT hObj = m_StartSprite.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + hObj = m_EndSprite.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + } + } + + + // Move the beam to the correct position... + + if (CalcBeamCoords()) + { + LTBOOL bShowSprites = LTFALSE; + m_pls.fAlphaStart = g_vtLaserTriggerAlpha.GetFloat(); + m_pls.bAdditive = LTFALSE; + + // See if this client can clearly see laser triggers... + + if (g_pPlayerMgr->GetVisionModeMgr()->GetMode() == eVM_SPY) + { + m_pls.fAlphaStart = m_cs.fAlpha; + m_pls.bAdditive = LTTRUE; + bShowSprites = LTTRUE; + } + + m_pls.fAlphaEnd = m_pls.fAlphaStart; + + m_Beam.ReInit(&m_pls); + m_Beam.Update(); + + // Update the sprites... + + if (m_cs.bCreateSprite) + { + HOBJECT hObj = m_StartSprite.GetObject(); + if (hObj) + { + m_StartSprite.Update(); + + g_pLTClient->SetObjectPos(hObj, &(m_pls.vStartPos)); + + if (bShowSprites) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + else + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + } + + hObj = m_EndSprite.GetObject(); + if (hObj) + { + m_EndSprite.Update(); + + g_pLTClient->SetObjectPos(hObj, &(m_pls.vEndPos)); + + if (bShowSprites) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + else + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + } + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLaserTriggerFX::CalcBeamCoords +// +// PURPOSE: Calculate the beam start/end coords +// +// ----------------------------------------------------------------------- // + +LTBOOL CLaserTriggerFX::CalcBeamCoords() +{ + if (!m_hServerObject) return LTFALSE; + + // The beam is relative to the server object's dims... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + LTVector vU, vR, vF; + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + + // Okay, the beam is always along the object's longest dim... + + LTVector vDir = vF; + LTFLOAT fLongestDim = m_cs.vDims.z; // Assume forward first... + + m_pls.fMaxWidth = (m_cs.vDims.x + m_cs.vDims.y); // Assume x/y are same... + + if (m_cs.vDims.y > fLongestDim) + { + vDir = vU; + fLongestDim = m_cs.vDims.y; + m_pls.fMaxWidth = (m_cs.vDims.x + m_cs.vDims.z); + } + if (m_cs.vDims.x > fLongestDim) + { + vDir = vR; + fLongestDim = m_cs.vDims.x; + m_pls.fMaxWidth = (m_cs.vDims.y + m_cs.vDims.z); + } + + m_pls.vStartPos = vPos + (vDir * fLongestDim); + m_pls.vEndPos = vPos - (vDir * fLongestDim); + + return LTTRUE; +} diff --git a/Jack/ClientShellDLL/LaserTriggerFX.h b/Jack/ClientShellDLL/LaserTriggerFX.h new file mode 100644 index 00000000..12be5739 --- /dev/null +++ b/Jack/ClientShellDLL/LaserTriggerFX.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LaserTriggerFX.h +// +// PURPOSE : LaserTrigger special fx class - Definition +// +// CREATED : 2/11/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LASER_TRIGGER_FX_H__ +#define __LASER_TRIGGER_FX_H__ + +#include "SpecialFX.h" +#include "SharedFXStructs.h" +#include "PolyLineFX.h" +#include "BaseScaleFX.h" + +class CLaserTriggerFX : public CSpecialFX +{ + public : + + CLaserTriggerFX() : CSpecialFX() + { + } + + ~CLaserTriggerFX() + { + if(m_cs.hstrSpriteFilename && g_pLTClient) + { + g_pLTClient->FreeString(m_cs.hstrSpriteFilename); + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_LASERTRIGGER_ID; } + + protected : + + LTCREATESTRUCT m_cs; // Our data + PLFXCREATESTRUCT m_pls; // Data for creating the beam + CPolyLineFX m_Beam; // Laser Beam + CBaseScaleFX m_StartSprite; // Glow at start of beam + CBaseScaleFX m_EndSprite; // Glow at end of beam + + LTBOOL CalcBeamCoords(); +}; + +#endif // __LASER_TRIGGER_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LayoutMgr.cpp b/Jack/ClientShellDLL/LayoutMgr.cpp new file mode 100644 index 00000000..fb61da1a --- /dev/null +++ b/Jack/ClientShellDLL/LayoutMgr.cpp @@ -0,0 +1,2673 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LayoutMgr.cpp +// +// PURPOSE : Attribute file manager for interface layout info +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LayoutMgr.h" +#include "InterfaceMgr.h" + + +#define LO_BASIC_TAG "BasicLayout" +#define LO_SELECT_TAG "SelectionLayout" +#define LO_DEFAULT_TAG "GenericScreen" +#define LO_HUD_TAG "HUDLayout" +#define LO_MISC_TAG "Miscellaneous" +#define LO_MASK_TAG "Overlay" +#define LO_DIALOGUE_TAG "DialogueWindow" +#define LO_DECISION_TAG "DecisionWindow" +#define LO_MENU_TAG "Menu" +#define LO_CHAR_TAG "Character" +#define LO_LIGHT_TAG "Light" +#define LO_FX_TAG "FX" +#define LO_CREDITS_TAG "Credits" +#define LO_TRANSITION_TAG "Transition" + +#define LO_BASIC_HELP_RECT "HelpRect" +#define LO_BASIC_HELP_FONT "HelpFont" +#define LO_BASIC_HELP_SIZE "HelpSize" +#define LO_BASIC_HUD_FONT "HUDFont" +#define LO_BASIC_BACK_FONT "BackFont" +#define LO_BASIC_BACK_SIZE "BackSize" +#define LO_BASIC_BACK_POS "BackPos" +#define LO_BASIC_NEXT_POS "NextPos" +#define LO_BASIC_BACK_COLOR "BackColor" +#define LO_BASIC_BACK_SPRITE "BackSprite" +#define LO_BASIC_BACK_SCALE "BackSpriteScale" +#define LO_BASIC_SLIDER "SliderTex" +#define LO_BASIC_ARROW_BACK "ArrowBackTex" +#define LO_BASIC_ARROW_BACK_H "ArrowBackTexH" +#define LO_BASIC_ARROW_BACK_POS "ArrowBackPos" +#define LO_BASIC_ARROW_NEXT "ArrowNextTex" +#define LO_BASIC_ARROW_NEXT_H "ArrowNextTexH" +#define LO_BASIC_ARROW_NEXT_POS "ArrowNextPos" +#define LO_BASIC_BOSS_RECT "BossRect" + +#define LO_SCREEN_TITLE_POS "TitlePos" +#define LO_SCREEN_TITLE_FONT "TitleFont" +#define LO_SCREEN_TITLE_SIZE "TitleSize" +#define LO_SCREEN_BACKGROUND "Background" +#define LO_SCREEN_PAGE_RECT "PageRect" +#define LO_SCREEN_ITEM_FONT "FontFace" +#define LO_SCREEN_ITEM_SIZE "FontSize" +#define LO_SCREEN_ITEM_SPACE "ItemSpace" +#define LO_SCREEN_ITEM_ALIGN "ItemAlign" +#define LO_SCREEN_MUSIC_INTENSITY "MusicIntensity" +#define LO_SCREEN_CHARACTER "Character" +#define LO_SCREEN_ATTACH "Attachment" + +#define LO_HUD_LAYOUT_NAME "LayoutName" + +#define LO_HUD_AMMO_BASEPOS "AmmoBasePos" +#define LO_HUD_AMMO_USEBAR "UseAmmoBar" +#define LO_HUD_AMMO_BAROFF "AmmoClipOffset" +#define LO_HUD_AMMO_CLIPSZ "AmmoClipUnitSize" +#define LO_HUD_AMMO_OFFSET "AmmoBarOffset" +#define LO_HUD_AMMO_USETEXT "UseAmmoText" +#define LO_HUD_AMMO_TEXTOFF "AmmoTextOffset" +#define LO_HUD_AMMO_ICONOFF "AmmoIconOffset" +#define LO_HUD_AMMO_ICONSZ "AmmoIconSize" +#define LO_HUD_AMMO_ALPHA "AmmoTextAlpha" +#define LO_HUD_AMMO_COLOR "AmmoTextColor" + +#define LO_HUD_HEALTH_BASEPOS "HealthBasePos" +#define LO_HUD_HEALTH_USEBAR "UseHealthBar" +#define LO_HUD_HEALTH_BAROFF "HealthBarOffset" +#define LO_HUD_ARMOR_OFFSET "ArmorBarOffset" +#define LO_HUD_HEALTH_USETEXT "UseHealthText" +#define LO_HUD_HEALTH_TEXTOFF "HealthTextOffset" +#define LO_HUD_ARMOR_TEXTOFF "ArmorTextOffset" +#define LO_HUD_HEALTH_USEICON "UseHealthIcon" +#define LO_HUD_HEALTH_ICONOFF "HealthIconOffset" +#define LO_HUD_ARMOR_ICONOFF "ArmorIconOffset" +#define LO_HUD_HEALTH_ICONSZ "HealthIconSize" +#define LO_HUD_HEALTH_ALPHA "HealthAlpha" +#define LO_HUD_HEALTH_COLOR "HealthColor" +#define LO_HUD_ARMOR_COLOR "ArmorColor" + +#define LO_HUD_AIR_BASEPOS "AirBasePos" +#define LO_HUD_AIR_USEICON "UseAirIcon" +#define LO_HUD_AIR_ICONOFF "AirIconOffset" +#define LO_HUD_AIR_ICONSZ "AirIconSize" +#define LO_HUD_AIR_USETEXT "UseAirText" +#define LO_HUD_AIR_TEXTOFF "AirTextOffset" +#define LO_HUD_AIR_USEBAR "UseAirBar" +#define LO_HUD_AIR_BAROFF "AirBarOffset" +#define LO_HUD_AIR_ALPHA "AirAlpha" +#define LO_HUD_AIR_COLOR "AirColor" + +#define LO_HUD_BAR_HEIGHT "BarHeight" +#define LO_HUD_BAR_SCALE "BarScale" +#define LO_HUD_TEXT_HEIGHT "TextHeight" + +#define LO_HUD_WEAPONHEAT_TEX "WeaponHeatTex" +#define LO_HUD_WEAPONHEAT_BASEPOS "WeaponHeatBasePos" +#define LO_HUD_WEAPONHEAT_BAR_HEIGHT "WeaponHeatBarHeight" +#define LO_HUD_WEAPONHEAT_BAR_SCALE "WeaponHeatBarScale" +#define LO_HUD_WEAPONHEAT_COOL "WeaponHeatCool" +#define LO_HUD_WEAPONHEAT_WARM "WeaponHeatWarm" +#define LO_HUD_WEAPONHEAT_HOT "WeaponHeatHot" +#define LO_HUD_WEAPONHEAT_OVERHEAT "WeaponHeatOverheat" + +#define LO_HUD_DAMAGE_BASEPOS "DamageBasePos" +#define LO_HUD_DAMAGE_ICON_SZ "DamageIconSize" + +#define LO_HUD_COMPASS_POS "CompassPos" +#define LO_HUD_COMPASS_SZ "CompassSize" + +#define LO_HUD_RADAR_OBJSZ "RadarObjectSize" +#define LO_HUD_RADAR_MAXDIST "RadarMaxDistance" +#define LO_HUD_RADAR_LIVE "RadarLivePlayerColor" +#define LO_HUD_RADAR_DEAD "RadarDeadPlayerColor" +#define LO_HUD_RADAR_TALK "RadarTalkPlayerColor" +#define LO_HUD_RADAR_FLASH "RadarFlashTime" + +#define LO_HUD_DAMAGE_SZ "DamageSize" + +#define LO_HUD_CARRY_POS "CarryPos" +#define LO_HUD_CARRY_SZ "CarrySize" + +#define LO_HUD_OBJ_POS "ObjectivePos" +#define LO_HUD_OBJ_SZ "ObjectiveSize" +#define LO_HUD_OBJ_BLINKDUR "ObjectiveBlinkDuration" +#define LO_HUD_OBJ_BLINKSPD "ObjectiveBlinkSpeed" + +#define LO_HUD_HIDE_POS "HideIconPos" +#define LO_HUD_HIDE_SZ "HideIconSize" +#define LO_HUD_HIDE_SPEED "HideIconBlinkSpeed" +#define LO_HUD_HIDE_ALPHA "HideIconAlpha" +#define LO_HUD_HIDE_BASEPOSY "HidingBarBasePosY" +#define LO_HUD_HIDE_OFFSET "HidingBarOffset" +#define LO_HUD_HIDE_HEIGHT "HidingBarHeight" +#define LO_HUD_HIDE_SCALE "HidingBarScale" +#define LO_HUD_HIDE_TEX "HidingBarTexture" + +#define LO_HUD_DIST_POS "DistanceIconPos" +#define LO_HUD_DIST_SPEED "DistanceIconBlinkSpeed" +#define LO_HUD_DIST_ALPHA "DistanceIconAlpha" +#define LO_HUD_DIST_FADESPEED "DistanceIconFadeOutSpeed" + +#define LO_HUD_ACT_POS "ActivationTextPos" +#define LO_HUD_ACT_SZ "ActivationTextSize" +#define LO_HUD_ACT_JUST "ActivationTextJustify" +#define LO_HUD_ACT_ALPHA "ActivationTextAlpha" +#define LO_HUD_ACT_COLOR "ActivationTextColor" +#define LO_HUD_ACT_DIS_ALPHA "ActivationTextDisAlpha" +#define LO_HUD_ACT_DIS_COLOR "ActivationTextDisColor" + +#define LO_HUD_DBG_POS "DebugTextPos" +#define LO_HUD_DBG_SZ "DebugTextSize" +#define LO_HUD_DBG_WD "DebugTextWidth" +#define LO_HUD_DBG_JUST "DebugTextJustify" +#define LO_HUD_DBG_ALPHA "DebugTextAlpha" +#define LO_HUD_DBG_COLOR "DebugTextColor" + +#define LO_HUD_CHS_SZ "ChooserTextSize" +#define LO_HUD_CHS_TEX "ChooserTextureScale" +#define LO_HUD_CHS_HT "ChooserIconHeight" +#define LO_HUD_CHS_ALPHA "ChooserTextAlpha" +#define LO_HUD_CHS_COLOR "ChooserTextColor" + +#define LO_HUD_PROG_BASEPOSY "ProgressBarBasePosY" +#define LO_HUD_PROG_OFFSET "ProgressBarOffset" +#define LO_HUD_PROG_HEIGHT "ProgressBarHeight" +#define LO_HUD_PROG_SCALE "ProgressBarScale" +#define LO_HUD_PROG_TEX "ProgressBarTexture" + +#define LO_HUD_DISPLAYMETER_BASEPOSY "DisplayMeterBasePosY" +#define LO_HUD_DISPLAYMETER_OFFSET "DisplayMeterOffset" +#define LO_HUD_DISPLAYMETER_HEIGHT "DisplayMeterHeight" +#define LO_HUD_DISPLAYMETER_SCALE "DisplayMeterScale" +#define LO_HUD_DISPLAYMETER_TEX "DisplayMeterTexture" + +#define LO_HUD_MODE_TEXTPOS "ModeTextPos" + + +#define LO_MISC_SV_MODEL "SpyVisionModelColor" +#define LO_MISC_SV_LIGHT "SpyVisionLightScale" +#define LO_MISC_WPN_COLOR "WeaponPickupColor" +#define LO_MISC_AMMO_COLOR "AmmoPickupColor" +#define LO_MISC_TINTTIME "TintTime" +#define LO_MISC_GAPMIN "CrosshairGapMin" +#define LO_MISC_GAPMAX "CrosshairGapMax" +#define LO_MISC_BARMIN "CrosshairBarMin" +#define LO_MISC_BARMAX "CrosshairBarMax" +#define LO_MISC_ROTEFFECT "PerturbRotationEffect" +#define LO_MISC_PERTURBINC "PerturbIncreaseSpeed" +#define LO_MISC_PERTURBDEC "PerturbDecreaseSpeed" +#define LO_MISC_WALKPER "PerturbWalkPercent" +#define LO_MISC_DLG_FRAME "DialogFrame" +#define LO_MISC_DLG_FONT_FACE "DialogFontFace" +#define LO_MISC_DLG_FONT_SIZE "DialogFontSize" +#define LO_MISC_DEATHDELAY "DeathDelay" +#define LO_MISC_MSG_FADE "MessageMinimumFade" +#define LO_MISC_MSG_TIME "MessageMinimumTime" +#define LO_MISC_OBJ_RECT "ObjectiveRect" +#define LO_MISC_POPUP_RECT "PopupTextRect" +#define LO_MISC_SUB_TINT "SubtitleTint" +#define LO_MISC_HEALTH_TINT "HealthTint" +#define LO_MISC_ARMOR_TINT "ArmorTint" +#define LO_MISC_AMMO_TINT "AmmoTint" +#define LO_MISC_POPUP_TINT "PopupTint" + +#define LO_MASK_SPRITE "Sprite" +#define LO_MASK_MODEL "Model" +#define LO_MASK_SKIN "Skin" +#define LO_MASK_SCALE "Scale" +#define LO_MASK_ALPHA "Alpha" + +#define LO_CHAR_NAME "Name" +#define LO_CHAR_MOD "Model" +#define LO_CHAR_SKIN "Skin" +#define LO_CHAR_STYLE "RenderStyle" +#define LO_CHAR_POS "Pos" +#define LO_CHAR_SCALE "Scale" +#define LO_CHAR_ROT "Rotation" +#define LO_CHAR_MENULAYER "MenuLayer" + +#define LO_LIGHT_NAME "Name" +#define LO_LIGHT_POS "Pos" +#define LO_LIGHT_COLOR "Color" +#define LO_LIGHT_RADIUS "Radius" + +#define LO_CREDITS_FADEIN "FadeInTime" +#define LO_CREDITS_HOLD "HoldTime" +#define LO_CREDITS_FADEOUT "FadeOutTime" +#define LO_CREDITS_DELAY "DelayTime" +#define LO_CREDITS_POS_UL "PositionUL" +#define LO_CREDITS_POS_UR "PositionUR" +#define LO_CREDITS_POS_LR "PositionLR" +#define LO_CREDITS_POS_LL "PositionLL" + +#define LO_DEFAULT_MENU_TAG "GenericMenu" +#define LO_MENU_FONT "Font" +#define LO_MENU_FONT_SIZE "FontSize" +#define LO_MENU_TITLE_FONT "TitleFont" +#define LO_MENU_TITLE_FONT_SIZE "TitleSize" +#define LO_MENU_SIZE "Size" +#define LO_MENU_FRAME "Frame" +#define LO_MENU_FRAME_TIP "FrameTip" +#define LO_MENU_ARROW_U "UpArrow" +#define LO_MENU_ARROW_U_H "UpArrowH" +#define LO_MENU_ARROW_D "DownArrow" +#define LO_MENU_ARROW_D_H "DownArrowH" +/* +#define LO_MENU_ARROW_L "LeftArrow" +#define LO_MENU_ARROW_L_H "LeftArrowH" +#define LO_MENU_ARROW_R "RightArrow" +#define LO_MENU_ARROW_R_H "RightArrowH" +#define LO_MENU_CLOSE "Close" +#define LO_MENU_CLOSE_H "CloseH" +*/ +#define LO_MENU_INDENT "Indent" +#define LO_MENU_POS "Position" +#define LO_MENU_IN_TIME "SlideInTime" +#define LO_MENU_OUT_TIME "SlideOutTime" + +#define LO_SELECTED_COLOR "SelectedColor" +#define LO_NONSELECTED_COLOR "NonSelectedColor" +#define LO_DISABLED_COLOR "DisabledColor" + +//CLayoutMgr* g_pLayoutMgr = LTNULL; + +static char s_aTagName[30]; +static char s_aAttName[30]; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +LTBOOL INT_CHAR::Init(CButeMgr & buteMgr, char* aTagName) +{ + + buteMgr.GetString(aTagName, LO_CHAR_NAME, "", szName, sizeof(szName)); + if (strlen(szName) == 0) return LTFALSE; + + buteMgr.GetString(aTagName, LO_CHAR_MOD, "", szModel, sizeof(szModel)); + if (strlen(szModel) == 0) return LTFALSE; + + blrSkins.Read(&buteMgr, aTagName, LO_CHAR_SKIN, 128); + blrRenderStyles.Read(&buteMgr, aTagName, LO_CHAR_STYLE, 128); + + + CAVector zero(0.0, 0.0, 0.0); + vPos = buteMgr.GetVector(aTagName, LO_CHAR_POS, zero); + fScale = (LTFLOAT)buteMgr.GetDouble(aTagName, LO_CHAR_SCALE, 1.0); + fRot = (LTFLOAT)buteMgr.GetDouble(aTagName, LO_CHAR_ROT, 1.0); + nMenuLayer = (uint8)buteMgr.GetInt( aTagName, LO_CHAR_MENULAYER, 0 ); + + return LTTRUE; +} + + +LTBOOL INT_LIGHT::Init(CButeMgr & buteMgr, char* aTagName) +{ + + buteMgr.GetString(aTagName, LO_LIGHT_NAME, "", szName, sizeof(szName)); + if (strlen(szName) == 0) return LTFALSE; + + + CAVector zero(0.0, 0.0, 0.0); + vPos = buteMgr.GetVector(aTagName, LO_LIGHT_POS, zero); + vColor = buteMgr.GetVector(aTagName, LO_LIGHT_COLOR, zero); + vColor *= MATH_ONE_OVER_255; + + fRadius = (LTFLOAT)buteMgr.GetDouble(aTagName, LO_LIGHT_RADIUS, 0.0); + + return LTTRUE; +} + +LTBOOL INT_FX::Init(CButeMgr & buteMgr, char* aTagName) +{ + + buteMgr.GetString(aTagName, "Name", "", szName, sizeof(szName)); + if (strlen(szName) == 0) return LTFALSE; + + buteMgr.GetString(aTagName, "FXName", "", szFXName, sizeof(szFXName)); + if (strlen(szFXName) == 0) return LTFALSE; + + CAVector zero(0.0, 0.0, 0.0); + vPos = buteMgr.GetVector(aTagName, "Pos", zero); + + bLoop = (LTBOOL)buteMgr.GetInt(aTagName, "Loop", 0); + + return LTTRUE; +} + +bool INT_CHAINFX::Init(CButeMgr & buteMgr, char *aTagName, int iNum) +{ + sprintf(s_aAttName, "IntroFX%d", iNum); + buteMgr.GetString(aTagName, s_aAttName, szIntroName, sizeof(szIntroName)); + + sprintf(s_aAttName, "ShortIntroFX%d", iNum); + buteMgr.GetString(aTagName, s_aAttName, szShortIntroName, sizeof(szShortIntroName)); + + sprintf(s_aAttName, "LoopFX%d", iNum); + buteMgr.GetString(aTagName, s_aAttName, szLoopName, sizeof(szLoopName)); + + if (szIntroName[0] || szShortIntroName[0] || szLoopName[0]) + { + return (true); + } + return (false); +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLayoutMgr::CLayoutMgr() +{ + m_nNumHUDLayouts = 0; + m_nNumFonts = 0; + +} + +CLayoutMgr::~CLayoutMgr() +{ + g_pLayoutMgr = LTNULL; + Term(); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLayoutMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CLayoutMgr::Init(const char* szAttributeFile) +{ + if (!szAttributeFile) return LTFALSE; +// if (g_pLayoutMgr || !szAttributeFile) return LTFALSE; + if (!Parse(szAttributeFile)) return LTFALSE; + + + // Set up global pointer... + +// g_pLayoutMgr = this; + + m_nNumHUDLayouts = 0; + m_nNumFonts = 0; + + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + while (m_buteMgr.Exist(s_aTagName)) + { + m_nNumHUDLayouts++; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, m_nNumHUDLayouts); + } + + sprintf(s_aTagName, "%s0", LO_CHAR_TAG); + int numChar = 0; + while (m_buteMgr.Exist(s_aTagName)) + { + INT_CHAR *pChar = debug_new(INT_CHAR); + if (pChar->Init(m_buteMgr,s_aTagName)) + m_CharacterArray.push_back(pChar); + else + { + debug_delete(pChar); + } + numChar++; + sprintf(s_aTagName, "%s%d", LO_CHAR_TAG, numChar); + } + + sprintf(s_aTagName, "%s0", LO_LIGHT_TAG); + int numLight = 0; + while (m_buteMgr.Exist(s_aTagName)) + { + INT_LIGHT *pLight = debug_new(INT_LIGHT); + if (pLight->Init(m_buteMgr,s_aTagName)) + m_LightArray.push_back(pLight); + else + { + debug_delete(pLight); + } + numLight++; + sprintf(s_aTagName, "%s%d", LO_LIGHT_TAG, numLight); + } + + sprintf(s_aTagName, "%s0", LO_FX_TAG); + int numFX = 0; + while (m_buteMgr.Exist(s_aTagName)) + { + INT_FX *pFX = debug_new(INT_FX); + if (pFX->Init(m_buteMgr,s_aTagName)) + m_FXArray.push_back(pFX); + else + { + debug_delete(pFX); + } + numFX++; + sprintf(s_aTagName, "%s%d", LO_FX_TAG, numFX); + } + + // ABM 2/6/02 parser for new layout item, the transition (chained fx mapped + // to a specific screen-to-screen transition). + sprintf(s_aTagName, "%s0", LO_TRANSITION_TAG); + int numTransitions = 0; + while (m_buteMgr.Exist(s_aTagName)) + { + // Get the TransitionFrom and TransitionTo + int iTransFrom = 0; + int iTransTo = 0; + char szName[128]; + + szName[0] = 0; + m_buteMgr.GetString(s_aTagName, "TransitionFrom", szName, sizeof(szName)); + if (strlen(szName)) + { + iTransFrom = g_pInterfaceMgr->GetScreenMgr()->GetScreenIDFromName(szName); + if (iTransFrom == 999) iTransFrom = 0; + } + + szName[0] = 0; + m_buteMgr.GetString(s_aTagName, "TransitionTo", szName, sizeof(szName)); + if (strlen(szName)) + { + iTransTo = g_pInterfaceMgr->GetScreenMgr()->GetScreenIDFromName(szName); + if (iTransTo == 999) iTransTo = 0; + } + + // Loop through and create a bunch of INT_CHAINFX + int numChainFX = 0; + bool bFound; + + do + { + INT_CHAINFX * pChainFX = debug_new(INT_CHAINFX); + bFound = pChainFX->Init(m_buteMgr, s_aTagName, numChainFX); + if (bFound) + { + // copy over the information for this screen + pChainFX->iFromScreen = iTransFrom; + pChainFX->iToScreen = iTransTo; + m_ChainFXArray.push_back(pChainFX); + } + else + { + debug_delete(pChainFX); + } + numChainFX++; + } while (bFound); + + numTransitions++; + sprintf(s_aTagName, "%s%d", LO_TRANSITION_TAG, numTransitions); + } // while + + + sprintf(s_aTagName, "Fonts"); + sprintf(s_aAttName, "FontFace0"); + while (m_buteMgr.Exist(s_aTagName,s_aAttName)) + { + m_nNumFonts++; + sprintf(s_aAttName, "FontFace%d", m_nNumFonts); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLayoutMgr::Term() +// +// PURPOSE: Clean up. +// +// ----------------------------------------------------------------------- // + +void CLayoutMgr::Term() +{ +// g_pLayoutMgr = LTNULL; + + CharacterArray::iterator iter = m_CharacterArray.begin(); + while (iter != m_CharacterArray.end()) + { + debug_delete(*iter); + iter++; + } + m_CharacterArray.clear(); + + LightArray::iterator lIter = m_LightArray.begin(); + while (lIter != m_LightArray.end()) + { + debug_delete(*lIter); + lIter++; + } + m_LightArray.clear(); + + FXArray::iterator fxIter = m_FXArray.begin(); + while (fxIter != m_FXArray.end()) + { + debug_delete(*fxIter); + fxIter++; + } + m_FXArray.clear(); +} + + +// ------------------------------------------------------------------------// +// +// Basic Screen Layout +// +// ------------------------------------------------------------------------// + +LTRect CLayoutMgr::GetHelpRect() +{ + return GetRect(LO_BASIC_TAG, LO_BASIC_HELP_RECT); +} + +uint8 CLayoutMgr::GetHelpFont() +{ + return (uint8)GetInt(LO_BASIC_TAG, LO_BASIC_HELP_FONT); +} + +uint8 CLayoutMgr::GetHelpSize() +{ + return (uint8)GetInt(LO_BASIC_TAG, LO_BASIC_HELP_SIZE); +} + +uint8 CLayoutMgr::GetHUDFont() +{ + return (uint8)GetInt(LO_BASIC_TAG, LO_BASIC_HUD_FONT); +} + + +uint8 CLayoutMgr::GetBackFont() +{ + return (uint8)GetInt(LO_BASIC_TAG, LO_BASIC_BACK_FONT); +} + +uint8 CLayoutMgr::GetBackSize() +{ + return (uint8)GetInt(LO_BASIC_TAG, LO_BASIC_BACK_SIZE); +} + +LTIntPt CLayoutMgr::GetBackPos() +{ + return GetPoint(LO_BASIC_TAG, LO_BASIC_BACK_POS); +} + +LTIntPt CLayoutMgr::GetNextPos() +{ + return GetPoint(LO_BASIC_TAG, LO_BASIC_NEXT_POS); +} + +HLTCOLOR CLayoutMgr::GetBackColor() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vColor = m_buteMgr.GetVector(LO_BASIC_TAG, LO_BASIC_BACK_COLOR, vDef); + return SETRGB(vColor.x,vColor.y,vColor.z); +} + +void CLayoutMgr::GetBackSprite(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_BACK_SPRITE, pBuf, nBufLen); +} + +LTFLOAT CLayoutMgr::GetBackSpriteScale() +{ + return GetFloat(LO_BASIC_TAG, LO_BASIC_BACK_SCALE); +} + +void CLayoutMgr::GetSliderTex(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_SLIDER, pBuf, nBufLen); +} + +void CLayoutMgr::GetArrowBackTex(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_ARROW_BACK, pBuf, nBufLen); +} +void CLayoutMgr::GetArrowBackTexH(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_ARROW_BACK_H, pBuf, nBufLen); +} +LTIntPt CLayoutMgr::GetArrowBackPos() +{ + return GetPoint(LO_BASIC_TAG, LO_BASIC_ARROW_BACK_POS); +} +void CLayoutMgr::GetArrowNextTex(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_ARROW_NEXT, pBuf, nBufLen); +} +void CLayoutMgr::GetArrowNextTexH(char *pBuf, int nBufLen) +{ + GetString(LO_BASIC_TAG, LO_BASIC_ARROW_NEXT_H, pBuf, nBufLen); +} +LTIntPt CLayoutMgr::GetArrowNextPos() +{ + return GetPoint(LO_BASIC_TAG, LO_BASIC_ARROW_NEXT_POS); +} + +LTRect CLayoutMgr::GetBossRect() +{ + return GetRect(LO_BASIC_TAG, LO_BASIC_BOSS_RECT); +} + + + + + +// ------------------------------------------------------------------------// +// +// Specific Screen Layouts +// +// ------------------------------------------------------------------------// + +LTIntPt CLayoutMgr::GetScreenTitlePos(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_TITLE_POS)) + { + return GetPoint(pTag, LO_SCREEN_TITLE_POS); + } + else + return GetPoint(LO_DEFAULT_TAG, LO_SCREEN_TITLE_POS); +} + +uint8 CLayoutMgr::GetScreenTitleFont(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_TITLE_FONT)) + { + return GetInt(pTag, LO_SCREEN_TITLE_FONT); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_TITLE_FONT); +} + +uint8 CLayoutMgr::GetScreenTitleSize(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_TITLE_SIZE)) + { + return GetInt(pTag, LO_SCREEN_TITLE_SIZE); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_TITLE_SIZE); +} + +uint8 CLayoutMgr::GetScreenFontFace(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_ITEM_FONT)) + { + return GetInt(pTag, LO_SCREEN_ITEM_FONT); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_ITEM_FONT); +} + +uint8 CLayoutMgr::GetScreenFontSize(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_ITEM_SIZE)) + { + return GetInt(pTag, LO_SCREEN_ITEM_SIZE); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_ITEM_SIZE); +} + +LTRect CLayoutMgr::GetScreenPageRect(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + + if (m_buteMgr.Exist(pTag,LO_SCREEN_PAGE_RECT)) + { + return GetRect(pTag, LO_SCREEN_PAGE_RECT); + } + else + return GetRect(LO_DEFAULT_TAG, LO_SCREEN_PAGE_RECT); +} + +int CLayoutMgr::GetScreenItemSpacing(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_ITEM_SPACE)) + { + return GetInt(pTag, LO_SCREEN_ITEM_SPACE); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_ITEM_SPACE); +} + +int CLayoutMgr::GetScreenItemAlign(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_ITEM_ALIGN)) + { + return GetInt(pTag, LO_SCREEN_ITEM_ALIGN); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_ITEM_ALIGN); +} + +int CLayoutMgr::GetScreenMusicIntensity(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_MUSIC_INTENSITY)) + { + return GetInt(pTag, LO_SCREEN_MUSIC_INTENSITY); + } + else + return GetInt(LO_DEFAULT_TAG, LO_SCREEN_MUSIC_INTENSITY); +} + +void CLayoutMgr::GetScreenMouseFX(eScreenID screenId, char *pBuf, int nBufLen) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,"MouseFX")) + { + GetString(pTag, "MouseFX",pBuf,nBufLen); + } + else + GetString(LO_DEFAULT_TAG, "MouseFX",pBuf,nBufLen); +} +void CLayoutMgr::GetScreenSelectFX(eScreenID screenId, char *pBuf, int nBufLen) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,"SelectFX")) + { + GetString(pTag, "SelectFX",pBuf,nBufLen); + } + else + GetString(LO_DEFAULT_TAG, "SelectFX",pBuf,nBufLen); +} + +LTBOOL CLayoutMgr::GetScreenSelectFXCenter(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,"SelectFXCenter")) + { + return (LTBOOL)GetInt(pTag, "SelectFXCenter"); + } + else + return (LTBOOL)GetInt(LO_DEFAULT_TAG, "SelectFXCenter"); +} + + + +INT_CHAR* CLayoutMgr::GetScreenCharacter(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,LO_SCREEN_CHARACTER)) + { + char szTest[128]; + GetString(pTag,LO_SCREEN_CHARACTER,szTest,sizeof(szTest)); + int i = 0; + while (i < (int)m_CharacterArray.size()) + { + if (stricmp(szTest,m_CharacterArray[i]->szName) == 0) + return m_CharacterArray[i]; + i++; + } + + } + return LTNULL; +} + + +INT_CHAR* CLayoutMgr::GetScreenCustomCharacter(eScreenID screenId, char* pName) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + if (m_buteMgr.Exist(pTag,pName)) + { + char szTest[128]; + GetString(pTag,pName,szTest,sizeof(szTest)); + int i = 0; + while (i < (int)m_CharacterArray.size()) + { + if (stricmp(szTest,m_CharacterArray[i]->szName) == 0) + return m_CharacterArray[i]; + i++; + } + + } + return LTNULL; +} + + +int CLayoutMgr::GetScreenNumAttachments(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + int nNum = 0; + sprintf(s_aAttName, "%s%d", LO_SCREEN_ATTACH, nNum); + while (m_buteMgr.Exist(pTag,s_aAttName)) + { + nNum++; + sprintf(s_aAttName, "%s%d", LO_SCREEN_ATTACH, nNum); + } + return nNum; + +} + + +void CLayoutMgr::GetScreenAttachment(eScreenID screenId, int num, char *pBuf, int nBufLen) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + sprintf(s_aAttName, "%s%d", LO_SCREEN_ATTACH, num); + if (m_buteMgr.Exist(pTag,s_aAttName)) + { + GetString(pTag,s_aAttName,pBuf,nBufLen); + } +} + + +uint32 CLayoutMgr::GetScreenSelectedColor(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + LTVector vColor; + if (screenId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_SELECTED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_SELECTED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_TAG, LO_SELECTED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint32 CLayoutMgr::GetScreenNonSelectedColor(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + LTVector vColor; + if (screenId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_NONSELECTED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_NONSELECTED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_TAG, LO_NONSELECTED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint32 CLayoutMgr::GetScreenDisabledColor(eScreenID screenId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + LTVector vColor; + if (screenId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_DISABLED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_DISABLED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_TAG, LO_DISABLED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + + +// Custom Screen values +LTBOOL CLayoutMgr::HasCustomValue(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + + return m_buteMgr.Exist(pTag, pAttribute); +} + +LTIntPt CLayoutMgr::GetScreenCustomPoint(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + return GetPoint(pTag, pAttribute); +} + +LTRect CLayoutMgr::GetScreenCustomRect(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + return GetRect(pTag, pAttribute); +} + +int CLayoutMgr::GetScreenCustomInt(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + return GetInt(pTag, pAttribute); +} + +LTFLOAT CLayoutMgr::GetScreenCustomFloat(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + return GetFloat(pTag, pAttribute); +} + +void CLayoutMgr::GetScreenCustomString(eScreenID screenId, char *pAttribute, char *pBuf, int nBufLen) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + GetString(pTag, pAttribute, pBuf, nBufLen); +} + +LTVector CLayoutMgr::GetScreenCustomVector(eScreenID screenId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetScreenMgr()->GetScreenName(screenId); + return GetVector(pTag, pAttribute); +} + +INT_LIGHT* CLayoutMgr::GetLight(const char*szLight) +{ + LightArray::iterator iter = m_LightArray.begin(); + while (iter != m_LightArray.end()) + { + if (stricmp(szLight,(*iter)->szName) == 0) + return (*iter); + iter++; + } + return LTNULL; +} + +INT_FX* CLayoutMgr::GetFX(const char*szFX) +{ + FXArray::iterator iter = m_FXArray.begin(); + while (iter != m_FXArray.end()) + { + if (stricmp(szFX,(*iter)->szName) == 0) + return (*iter); + iter++; + } + return LTNULL; +} + +INT_CHAINFX* CLayoutMgr::GetChainFX(unsigned int iChainNum) +{ + if (iChainNum < m_ChainFXArray.size()) + { + return m_ChainFXArray[iChainNum]; + } + else + { + return LTNULL; + } +} + +// ------------------------------------------------------------------------// +// +// Fonts +// +// ------------------------------------------------------------------------// + +void CLayoutMgr::GetFontName(int nFont, char* pszFontFile, int nFontFileBufLen, + char* pszFontFace, int nFontFaceBufLen ) +{ + sprintf(s_aAttName, "FontFile%d", nFont); + GetString("Fonts", s_aAttName, pszFontFile, nFontFileBufLen); + sprintf(s_aAttName, "FontFace%d", nFont); + GetString("Fonts", s_aAttName, pszFontFace, nFontFaceBufLen); +} + +uint8 CLayoutMgr::GetFontSize(int nFont) +{ + sprintf(s_aAttName, "FontSize%d", nFont); + return (uint8)GetInt("Fonts", s_aAttName); +} + + + +// ------------------------------------------------------------------------// +// +// HUD Layouts +// +// ------------------------------------------------------------------------// +int CLayoutMgr::GetLayoutName(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_LAYOUT_NAME)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName,LO_HUD_LAYOUT_NAME); +} + + +LTBOOL CLayoutMgr::GetUseAmmoBar(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_USEBAR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_AMMO_USEBAR); +} + +LTIntPt CLayoutMgr::GetAmmoBasePos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_BASEPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_BASEPOS); +} + +LTIntPt CLayoutMgr::GetAmmoClipOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_BAROFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_BAROFF); +} + +LTIntPt CLayoutMgr::GetAmmoClipUnitSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_CLIPSZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_CLIPSZ); +} + + +LTIntPt CLayoutMgr::GetAmmoBarOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_OFFSET)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_OFFSET); +} + + +LTBOOL CLayoutMgr::GetUseAmmoText(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_USETEXT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_AMMO_USETEXT); +} + +LTIntPt CLayoutMgr::GetAmmoTextOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_TEXTOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_TEXTOFF); +} + + +LTIntPt CLayoutMgr::GetAmmoIconOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_ICONOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AMMO_ICONOFF); +} + +uint8 CLayoutMgr::GetAmmoIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_ICONSZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_AMMO_ICONSZ); +} + +uint32 CLayoutMgr::GetAmmoColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_AMMO_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AMMO_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_AMMO_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + + + +LTBOOL CLayoutMgr::GetUseHealthBar(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_USEBAR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_HEALTH_USEBAR); +} + +LTIntPt CLayoutMgr::GetHealthBasePos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_BASEPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HEALTH_BASEPOS); +} + +LTIntPt CLayoutMgr::GetHealthBarOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_BAROFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HEALTH_BAROFF); +} + + +LTIntPt CLayoutMgr::GetArmorBarOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ARMOR_OFFSET)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_ARMOR_OFFSET); +} + + +LTBOOL CLayoutMgr::GetUseHealthText(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_USETEXT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_HEALTH_USETEXT); +} + +LTIntPt CLayoutMgr::GetHealthTextOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_TEXTOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HEALTH_TEXTOFF); +} + +LTIntPt CLayoutMgr::GetArmorTextOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ARMOR_TEXTOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_ARMOR_TEXTOFF); +} + + +LTBOOL CLayoutMgr::GetUseHealthIcon(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_USEICON)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_HEALTH_USEICON); +} + +LTIntPt CLayoutMgr::GetHealthIconOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_ICONOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HEALTH_ICONOFF); +} + +LTIntPt CLayoutMgr::GetArmorIconOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ARMOR_ICONOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_ARMOR_ICONOFF); +} + +uint8 CLayoutMgr::GetHealthIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_ICONSZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_HEALTH_ICONSZ); +} + +uint32 CLayoutMgr::GetHealthColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_HEALTH_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_HEALTH_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint32 CLayoutMgr::GetArmorColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HEALTH_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_HEALTH_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ARMOR_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_ARMOR_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + + +LTBOOL CLayoutMgr::GetUseAirIcon(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_USEICON)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_AIR_USEICON); +} + +LTIntPt CLayoutMgr::GetAirBasePos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_BASEPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AIR_BASEPOS); +} + +LTIntPt CLayoutMgr::GetAirIconOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_ICONOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AIR_ICONOFF); +} + + +LTBOOL CLayoutMgr::GetUseAirText(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_USETEXT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_AIR_USETEXT); +} + + +LTIntPt CLayoutMgr::GetAirTextOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_TEXTOFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AIR_TEXTOFF); +} + + + +LTBOOL CLayoutMgr::GetUseAirBar(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_USEBAR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetBool(s_aTagName,LO_HUD_AIR_USEBAR); +} + +LTIntPt CLayoutMgr::GetAirBarOffset(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_BAROFF)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_AIR_BAROFF); +} + +uint32 CLayoutMgr::GetAirColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_AIR_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_AIR_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint8 CLayoutMgr::GetAirIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_AIR_ICONSZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_AIR_ICONSZ); +} + + + +int CLayoutMgr::GetBarHeight(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_BAR_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_BAR_HEIGHT); +} + +uint8 CLayoutMgr::GetTextHeight(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_TEXT_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_TEXT_HEIGHT); +} + +LTFLOAT CLayoutMgr::GetBarScale(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_BAR_SCALE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_BAR_SCALE); +} + +void CLayoutMgr::GetWeaponHeatBarTexture( int nLayout, char *pBuf, int nBufLen ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_WEAPONHEAT_TEX)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + GetString( s_aTagName, LO_HUD_WEAPONHEAT_TEX, pBuf, nBufLen ); +} + + +LTIntPt CLayoutMgr::GetWeaponHeatBasePos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_WEAPONHEAT_BASEPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_WEAPONHEAT_BASEPOS); +} + + +int CLayoutMgr::GetWeaponHeatBarHeight(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_WEAPONHEAT_BAR_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_WEAPONHEAT_BAR_HEIGHT); +} + +LTFLOAT CLayoutMgr::GetWeaponHeatBarScale(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_WEAPONHEAT_BAR_SCALE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_WEAPONHEAT_BAR_SCALE); +} + + +void CLayoutMgr::GetWeaponHeatColors( int nLayout, LTVector& vCool, LTVector& vWarm, LTVector& vHot, LTVector& vOverheat ) +{ + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_WEAPONHEAT_COOL)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vCool = m_buteMgr.GetVector(s_aTagName, LO_HUD_WEAPONHEAT_COOL); + vWarm = m_buteMgr.GetVector(s_aTagName, LO_HUD_WEAPONHEAT_WARM); + vHot = m_buteMgr.GetVector(s_aTagName, LO_HUD_WEAPONHEAT_HOT); + vOverheat = m_buteMgr.GetVector(s_aTagName, LO_HUD_WEAPONHEAT_OVERHEAT); +} + + +LTIntPt CLayoutMgr::GetModeTextPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_MODE_TEXTPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_MODE_TEXTPOS); +} + +LTIntPt CLayoutMgr::GetDamageBasePos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DAMAGE_BASEPOS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_DAMAGE_BASEPOS); +} + +uint16 CLayoutMgr::GetDamageIconSize( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DAMAGE_ICON_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_DAMAGE_ICON_SZ); +} + + +LTIntPt CLayoutMgr::GetCompassPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_COMPASS_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_COMPASS_POS); +} + +uint16 CLayoutMgr::GetCompassSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_COMPASS_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_COMPASS_SZ); +} + +uint16 CLayoutMgr::GetRadarObjectSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_OBJSZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_RADAR_OBJSZ); +} + +uint32 CLayoutMgr::GetRadarLivePlayerColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_LIVE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTVector vColor; + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_RADAR_LIVE); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); +} + +uint32 CLayoutMgr::GetRadarDeadPlayerColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_DEAD)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTVector vColor; + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_RADAR_DEAD); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); +} + +uint32 CLayoutMgr::GetRadarTalkPlayerColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_TALK)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTVector vColor; + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_RADAR_TALK); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); +} + +float CLayoutMgr::GetRadarFlashTime(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_FLASH)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_RADAR_FLASH); +} + +uint32 CLayoutMgr::GetRadarMaxShowDist(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if( !m_buteMgr.Exist(s_aTagName, LO_HUD_RADAR_MAXDIST)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint32)GetInt(s_aTagName, LO_HUD_RADAR_MAXDIST); +} + + +uint16 CLayoutMgr::GetDamageSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DAMAGE_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_DAMAGE_SZ); +} + +LTIntPt CLayoutMgr::GetCarryIconPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CARRY_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_CARRY_POS); +} + +uint16 CLayoutMgr::GetCarryIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CARRY_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_CARRY_SZ); +} + + +LTIntPt CLayoutMgr::GetObjectiveIconPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_OBJ_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_OBJ_POS); +} + +LTIntPt CLayoutMgr::GetObjectiveIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_OBJ_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_OBJ_SZ); +} + +float CLayoutMgr::GetObjectiveBlinkDuration(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_OBJ_BLINKDUR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_OBJ_BLINKDUR); +} + +float CLayoutMgr::GetObjectiveBlinkSpeed(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_OBJ_BLINKSPD)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_OBJ_BLINKSPD); +} + + +LTIntPt CLayoutMgr::GetHideIconPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HIDE_POS); +} + +LTIntPt CLayoutMgr::GetHideIconSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HIDE_SZ); +} + + +LTFLOAT CLayoutMgr::GetHideIconBlinkSpeed(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_SPEED)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_HIDE_SPEED); +} + +LTFLOAT CLayoutMgr::GetHideIconAlpha(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_HIDE_ALPHA); +} + +int CLayoutMgr::GetHidingBarBasePosY( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_BASEPOSY)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_HIDE_BASEPOSY); +} + +LTIntPt CLayoutMgr::GetHidingBarOffset( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_OFFSET)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_HIDE_OFFSET); +} + +int CLayoutMgr::GetHidingBarHeight( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_HIDE_HEIGHT); +} + +float CLayoutMgr::GetHidingBarScale( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_SCALE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (float)GetFloat(s_aTagName, LO_HUD_HIDE_SCALE); +} + +void CLayoutMgr::GetHidingBarTexture( int nLayout, char *pBuf, int nBufLen ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_HIDE_TEX)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + GetString( s_aTagName, LO_HUD_HIDE_TEX, pBuf, nBufLen ); +} + + +LTIntPt CLayoutMgr::GetDistanceIconPos(int nLayout) +{ + sprintf( s_aTagName, "%s%d", LO_HUD_TAG, nLayout ); + if( !m_buteMgr.Exist( s_aTagName, LO_HUD_DIST_POS )) + sprintf( s_aTagName, "%s0", LO_HUD_TAG ); + + return GetPoint( s_aTagName, LO_HUD_DIST_POS ); +} + +LTFLOAT CLayoutMgr::GetDistanceIconBlinkSpeed( int nLayout ) +{ + sprintf( s_aTagName, "%s%d", LO_HUD_TAG, nLayout ); + if( !m_buteMgr.Exist( s_aTagName, LO_HUD_DIST_SPEED )) + sprintf( s_aTagName, "%s0", LO_HUD_TAG ); + + return GetFloat( s_aTagName, LO_HUD_DIST_SPEED ); +} + +LTFLOAT CLayoutMgr::GetDistanceIconAlpha( int nLayout ) +{ + sprintf( s_aTagName, "%s%d", LO_HUD_TAG, nLayout ); + if( !m_buteMgr.Exist( s_aTagName, LO_HUD_DIST_ALPHA )) + sprintf( s_aTagName, "%s0", LO_HUD_TAG ); + + return GetFloat( s_aTagName, LO_HUD_DIST_ALPHA ); +} + +LTFLOAT CLayoutMgr::GetDistanceIconFadeOutSpeed( int nLayout ) +{ + sprintf( s_aTagName, "%s%d", LO_HUD_TAG, nLayout ); + if( !m_buteMgr.Exist( s_aTagName, LO_HUD_DIST_FADESPEED )) + sprintf( s_aTagName, "%s0", LO_HUD_TAG ); + + return GetFloat( s_aTagName, LO_HUD_DIST_FADESPEED ); +} + +LTIntPt CLayoutMgr::GetActivationTextPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_ACT_POS); +} + +uint32 CLayoutMgr::GetActivationTextColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_ACT_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_ACT_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint8 CLayoutMgr::GetActivationTextJustify(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_JUST)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_ACT_JUST); +} + +uint8 CLayoutMgr::GetActivationTextSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_ACT_SZ); +} + + +uint32 CLayoutMgr::GetActivationTextDisabledColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_DIS_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_ACT_DIS_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_ACT_DIS_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_ACT_DIS_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + + +LTIntPt CLayoutMgr::GetDebugTextPos(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_POS)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_DBG_POS); +} + +uint32 CLayoutMgr::GetDebugTextColor(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + LTFLOAT fAlpha = GetFloat(s_aTagName, LO_HUD_DBG_ALPHA); + uint8 nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor; + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_DBG_COLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint8 CLayoutMgr::GetDebugTextJustify(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_JUST)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_DBG_JUST); +} + +uint8 CLayoutMgr::GetDebugTextSize(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_DBG_SZ); +} + +uint16 CLayoutMgr::GetDebugTextWidth(int nLayout) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DBG_WD)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint16)GetInt(s_aTagName, LO_HUD_DBG_WD); +} + + +uint8 CLayoutMgr::GetChooserIconHeight(int nLayout, uint8 nDefault) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_HT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_CHS_HT,nDefault); + +} + +float CLayoutMgr::GetChooserTextureScale(int nLayout, float fDefault) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_TEX)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetFloat(s_aTagName, LO_HUD_CHS_TEX,fDefault); + +} + +uint32 CLayoutMgr::GetChooserTextColor(int nLayout, uint32 nDefault) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_ALPHA)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + uint8 nA,nR,nG,nB; + GET_ARGB(nDefault, nA, nR, nG, nB); + + + float fAlpha = GetFloat(s_aTagName, LO_HUD_CHS_ALPHA, (float)nA / 255.0f ); + nA = (uint8)(255.0f * fAlpha); + + + LTVector vColor( (float)nR,(float)nG,(float)nB); + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_COLOR)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + if (m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_COLOR)) + vColor = m_buteMgr.GetVector(s_aTagName, LO_HUD_CHS_COLOR); + + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint8 CLayoutMgr::GetChooserTextSize(int nLayout, uint8 nDefault) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_CHS_SZ)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (uint8)GetInt(s_aTagName, LO_HUD_CHS_SZ,nDefault); + +} + +int CLayoutMgr::GetProgressBarBasePosY( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_PROG_BASEPOSY)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_PROG_BASEPOSY); +} + +LTIntPt CLayoutMgr::GetProgressBarOffset( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_PROG_OFFSET)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_PROG_OFFSET); +} + +int CLayoutMgr::GetProgressBarHeight( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_PROG_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_PROG_HEIGHT); +} + +float CLayoutMgr::GetProgressBarScale( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_PROG_SCALE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (float)GetFloat(s_aTagName, LO_HUD_PROG_SCALE); +} + +void CLayoutMgr::GetProgressBarTexture( int nLayout, char *pBuf, int nBufLen ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_PROG_TEX)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + GetString( s_aTagName, LO_HUD_PROG_TEX, pBuf, nBufLen ); +} + +int CLayoutMgr::GetDisplayMeterBasePosY( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DISPLAYMETER_BASEPOSY)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_DISPLAYMETER_BASEPOSY); +} + +LTIntPt CLayoutMgr::GetDisplayMeterOffset( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DISPLAYMETER_OFFSET)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetPoint(s_aTagName, LO_HUD_DISPLAYMETER_OFFSET); +} + +int CLayoutMgr::GetDisplayMeterHeight( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DISPLAYMETER_HEIGHT)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return GetInt(s_aTagName, LO_HUD_DISPLAYMETER_HEIGHT); +} + +float CLayoutMgr::GetDisplayMeterScale( int nLayout ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DISPLAYMETER_SCALE)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + return (float)GetFloat(s_aTagName, LO_HUD_DISPLAYMETER_SCALE); +} + +void CLayoutMgr::GetDisplayMeterTexture( int nLayout, char *pBuf, int nBufLen ) +{ + sprintf(s_aTagName, "%s%d", LO_HUD_TAG, nLayout); + if (!m_buteMgr.Exist(s_aTagName,LO_HUD_DISPLAYMETER_TEX)) + sprintf(s_aTagName, "%s0", LO_HUD_TAG); + + GetString( s_aTagName, LO_HUD_DISPLAYMETER_TEX, pBuf, nBufLen ); +} + +// ------------------------------------------------------------------------// +// +// Miscellaneous Layout +// +// ------------------------------------------------------------------------// + +LTVector CLayoutMgr::GetSpyVisionModelColor() +{ + CAVector vRet(0.0,0.0,0.0); + + return m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_SV_MODEL, vRet); +} + +LTVector CLayoutMgr::GetSpyVisionLightScale() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vRet = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_SV_LIGHT, vDef); + return (vRet * MATH_ONE_OVER_255); +} + + +LTVector CLayoutMgr::GetWeaponPickupColor() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vRet = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_WPN_COLOR, vDef); + return (vRet * MATH_ONE_OVER_255); +} + + +LTVector CLayoutMgr::GetAmmoPickupColor() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vRet = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_AMMO_COLOR, vDef); + return (vRet * MATH_ONE_OVER_255); +} + +LTFLOAT CLayoutMgr::GetTintTime() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_TINTTIME, 0.0f); +} + +LTFLOAT CLayoutMgr::GetCrosshairGapMin() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_GAPMIN, 0.0f); +} + +LTFLOAT CLayoutMgr::GetCrosshairGapMax() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_GAPMAX, 0.0f); +} + +LTFLOAT CLayoutMgr::GetCrosshairBarMin() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_BARMIN, 0.0f); +} + +LTFLOAT CLayoutMgr::GetCrosshairBarMax() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_BARMAX, 0.0f); +} + +LTFLOAT CLayoutMgr::GetPerturbRotationEffect() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_ROTEFFECT, 0.0f); +} + +LTFLOAT CLayoutMgr::GetPerturbIncreaseSpeed() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_PERTURBINC, 0.0f); +} + +LTFLOAT CLayoutMgr::GetPerturbDecreaseSpeed() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_PERTURBDEC, 0.0f); +} + +LTFLOAT CLayoutMgr::GetPerturbWalkPercent() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_WALKPER, 0.0f); +} + + +LTBOOL CLayoutMgr::IsMaskSprite(eOverlayMask eMask) +{ + if (eMask == OVM_NONE) return LTFALSE; + sprintf(s_aAttName,"%s%d",LO_MASK_SPRITE,(uint8)eMask); + return m_buteMgr.Exist(LO_MASK_TAG, s_aAttName); +} + + +void CLayoutMgr::GetMaskSprite(eOverlayMask eMask, char *pBuf, int nBufLen) +{ + if (eMask == OVM_NONE) + { + pBuf[0] = LTNULL; + return; + } + sprintf(s_aAttName,"%s%d",LO_MASK_SPRITE,(uint8)eMask); + + GetString(LO_MASK_TAG, s_aAttName, pBuf, nBufLen); +} + + +void CLayoutMgr::GetMaskModel(eOverlayMask eMask, char *pBuf, int nBufLen) +{ + if (eMask == OVM_NONE) + { + pBuf[0] = LTNULL; + return; + } + sprintf(s_aAttName,"%s%d",LO_MASK_MODEL,(uint8)eMask); + + GetString(LO_MASK_TAG, s_aAttName, pBuf, nBufLen); +} + + +void CLayoutMgr::GetMaskSkin(eOverlayMask eMask, char *pBuf, int nBufLen) +{ + if (eMask == OVM_NONE) + { + pBuf[0] = LTNULL; + return; + } + sprintf(s_aAttName,"%s%d",LO_MASK_SKIN,(uint8)eMask); + + GetString(LO_MASK_TAG, s_aAttName, pBuf, nBufLen); + +} + + +LTFLOAT CLayoutMgr::GetMaskScale(eOverlayMask eMask) +{ + if (eMask == OVM_NONE) + { + return 1.0f; + } + sprintf(s_aAttName,"%s%d",LO_MASK_SCALE,(uint8)eMask); + + return (LTFLOAT)m_buteMgr.GetDouble(LO_MASK_TAG, s_aAttName, 1.0f); +} + + +LTFLOAT CLayoutMgr::GetMaskAlpha(eOverlayMask eMask) +{ + if (eMask == OVM_NONE) + { + return 1.0f; + } + sprintf(s_aAttName,"%s%d",LO_MASK_ALPHA,(uint8)eMask); + + return (LTFLOAT)m_buteMgr.GetDouble(LO_MASK_TAG, s_aAttName, 1.0f); +} + + +void CLayoutMgr::GetDialogFrame(char *pBuf, int nBufLen) +{ + GetString(LO_MISC_TAG, LO_MISC_DLG_FRAME, pBuf, nBufLen); +} + +uint8 CLayoutMgr::GetDialogFontFace() +{ + return (uint8)GetInt(LO_MISC_TAG, LO_MISC_DLG_FONT_FACE); +} + +uint8 CLayoutMgr::GetDialogFontSize() +{ + return (uint8)GetInt(LO_MISC_TAG, LO_MISC_DLG_FONT_SIZE); +} + +LTFLOAT CLayoutMgr::GetDeathDelay() +{ + return (LTFLOAT)m_buteMgr.GetDouble(LO_MISC_TAG, LO_MISC_DEATHDELAY, 0.0f); +} + +LTFLOAT CLayoutMgr::GetMessageMinFade() +{ + return GetFloat(LO_MISC_TAG, LO_MISC_MSG_FADE); +} + +LTFLOAT CLayoutMgr::GetMessageMinTime() +{ + return GetFloat(LO_MISC_TAG, LO_MISC_MSG_TIME); +} + + +LTRect CLayoutMgr::GetObjectiveRect() +{ + return GetRect(LO_MISC_TAG, LO_MISC_OBJ_RECT); +} + +LTRect CLayoutMgr::GetPopupTextRect() +{ + return GetRect(LO_MISC_TAG, LO_MISC_POPUP_RECT); +} + +HLTCOLOR CLayoutMgr::GetSubtitleTint() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vColor = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_SUB_TINT, vDef); + return SETRGB(vColor.x,vColor.y,vColor.z); +} + +HLTCOLOR CLayoutMgr::GetHealthTint() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vColor = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_HEALTH_TINT, vDef); + return SETRGB(vColor.x,vColor.y,vColor.z); +} + +HLTCOLOR CLayoutMgr::GetArmorTint() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vColor = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_ARMOR_TINT, vDef); + return SETRGB(vColor.x,vColor.y,vColor.z); +} + +HLTCOLOR CLayoutMgr::GetAmmoTint() +{ + CAVector vDef(0.0,0.0,0.0); + + LTVector vColor = m_buteMgr.GetVector(LO_MISC_TAG, LO_MISC_AMMO_TINT, vDef); + return SETRGB(vColor.x,vColor.y,vColor.z); +} + + +//------------------------------------------------------------------------- +// +// Credits +// +LTFLOAT CLayoutMgr::GetCreditsFadeInTime() +{ + return GetFloat(LO_CREDITS_TAG, LO_CREDITS_FADEIN); +} + +LTFLOAT CLayoutMgr::GetCreditsHoldTime() +{ + return GetFloat(LO_CREDITS_TAG, LO_CREDITS_HOLD); +} + +LTFLOAT CLayoutMgr::GetCreditsFadeOutTime() +{ + return GetFloat(LO_CREDITS_TAG, LO_CREDITS_FADEOUT); +} + +LTFLOAT CLayoutMgr::GetCreditsDelayTime() +{ + return GetFloat(LO_CREDITS_TAG, LO_CREDITS_DELAY); +} + +LTIntPt CLayoutMgr::GetCreditsPositionUL() +{ + return GetPoint(LO_CREDITS_TAG, LO_CREDITS_POS_UL); +} + +LTIntPt CLayoutMgr::GetCreditsPositionUR() +{ + return GetPoint(LO_CREDITS_TAG, LO_CREDITS_POS_UR); +} + +LTIntPt CLayoutMgr::GetCreditsPositionLL() +{ + return GetPoint(LO_CREDITS_TAG, LO_CREDITS_POS_LL); +} + +LTIntPt CLayoutMgr::GetCreditsPositionLR() +{ + return GetPoint(LO_CREDITS_TAG, LO_CREDITS_POS_LR); +} + + + +void CLayoutMgr::GetMenuFrame(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_FRAME, pBuf, nBufLen); +} + +void CLayoutMgr::GetMenuFrameTip(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_FRAME_TIP, pBuf, nBufLen); +} +/* +void CLayoutMgr::GetMenuLeftArrow(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_L, pBuf, nBufLen); +} +void CLayoutMgr::GetMenuLeftArrowHighlight(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_L_H, pBuf, nBufLen); +} + +void CLayoutMgr::GetMenuRightArrow(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_R, pBuf, nBufLen); +} +void CLayoutMgr::GetMenuRightArrowHighlight(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_R_H, pBuf, nBufLen); +} +*/ +void CLayoutMgr::GetMenuUpArrow(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_U, pBuf, nBufLen); +} +void CLayoutMgr::GetMenuUpArrowHighlight(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_U_H, pBuf, nBufLen); +} + +void CLayoutMgr::GetMenuDownArrow(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_D, pBuf, nBufLen); +} +void CLayoutMgr::GetMenuDownArrowHighlight(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_ARROW_D_H, pBuf, nBufLen); +} + +LTIntPt CLayoutMgr::GetMenuSize() +{ + return GetPoint(LO_MENU_TAG, LO_MENU_SIZE); +} + +uint16 CLayoutMgr::GetMenuPosition() +{ + return (uint16)GetInt(LO_MENU_TAG, LO_MENU_POS); +} + +float CLayoutMgr::GetMenuSlideInTime() +{ + return GetFloat(LO_MENU_TAG, LO_MENU_IN_TIME); +} + +float CLayoutMgr::GetMenuSlideOutTime() +{ + return GetFloat(LO_MENU_TAG, LO_MENU_OUT_TIME); +} + +/* +void CLayoutMgr::GetMenuClose(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_CLOSE, pBuf, nBufLen); +} +void CLayoutMgr::GetMenuCloseHighlight(char *pBuf, int nBufLen) +{ + GetString(LO_MENU_TAG, LO_MENU_CLOSE_H, pBuf, nBufLen); +} +*/ +uint8 CLayoutMgr::GetMenuFontFace(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_MENU_FONT)) + { + return (uint8)GetInt(pTag, LO_MENU_FONT); + } + else + return (uint8)GetInt(LO_DEFAULT_MENU_TAG, LO_MENU_FONT); + +} + +uint8 CLayoutMgr::GetMenuFontSize(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_MENU_FONT_SIZE)) + { + return (uint8)GetInt(pTag, LO_MENU_FONT_SIZE); + } + else + return (uint8)GetInt(LO_DEFAULT_MENU_TAG, LO_MENU_FONT_SIZE); + +} + +uint8 CLayoutMgr::GetMenuTitleFontFace(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_MENU_TITLE_FONT)) + { + return (uint8)GetInt(pTag, LO_MENU_TITLE_FONT); + } + else + return (uint8)GetInt(LO_DEFAULT_MENU_TAG, LO_MENU_TITLE_FONT); +} + +uint8 CLayoutMgr::GetMenuTitleFontSize(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_MENU_TITLE_FONT_SIZE)) + { + return (uint8)GetInt(pTag, LO_MENU_TITLE_FONT_SIZE); + } + else + return (uint8)GetInt(LO_DEFAULT_MENU_TAG, LO_MENU_TITLE_FONT_SIZE); +} + + + +LTIntPt CLayoutMgr::GetMenuIndent(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_MENU_INDENT)) + { + return GetPoint(pTag, LO_MENU_INDENT); + } + else + return GetPoint(LO_DEFAULT_MENU_TAG, LO_MENU_INDENT); +} + +uint32 CLayoutMgr::GetMenuSelectedColor(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + LTVector vColor; + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_SELECTED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_SELECTED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_MENU_TAG, LO_SELECTED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint32 CLayoutMgr::GetMenuNonSelectedColor(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + LTVector vColor; + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_NONSELECTED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_NONSELECTED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_MENU_TAG, LO_NONSELECTED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +uint32 CLayoutMgr::GetMenuDisabledColor(eMenuID menuId) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + LTVector vColor; + if (menuId != MENU_ID_NONE && m_buteMgr.Exist(pTag,LO_DISABLED_COLOR)) + { + vColor = m_buteMgr.GetVector(pTag, LO_DISABLED_COLOR); + } + else + vColor = m_buteMgr.GetVector(LO_DEFAULT_MENU_TAG, LO_DISABLED_COLOR); + + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + return SET_ARGB(nA,nR,nG,nB); + +} + +// Custom Menu values +LTBOOL CLayoutMgr::MenuHasCustomValue(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + + return m_buteMgr.Exist(pTag, pAttribute); +} + +LTIntPt CLayoutMgr::GetMenuCustomPoint(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + return GetPoint(pTag, pAttribute); +} + +LTRect CLayoutMgr::GetMenuCustomRect(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + return GetRect(pTag, pAttribute); +} + +int CLayoutMgr::GetMenuCustomInt(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + return GetInt(pTag, pAttribute); +} + +LTFLOAT CLayoutMgr::GetMenuCustomFloat(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + return GetFloat(pTag, pAttribute); +} + +void CLayoutMgr::GetMenuCustomString(eMenuID menuId, char *pAttribute, char *pBuf, int nBufLen) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + GetString(pTag, pAttribute, pBuf, nBufLen); +} + +LTVector CLayoutMgr::GetMenuCustomVector(eMenuID menuId, char *pAttribute) +{ + char* pTag = (char*)g_pInterfaceMgr->GetMenuMgr()->GetMenuName(menuId); + return GetVector(pTag, pAttribute); +} + + +// ------------------------------------------------------------------------// +// +// Private Helper functions +// +// ------------------------------------------------------------------------// +LTBOOL CLayoutMgr::Exist(char *pTag) +{ + return m_buteMgr.Exist(pTag); +} + +LTBOOL CLayoutMgr::HasValue(char *pTag,char *pAttribute) +{ + return m_buteMgr.Exist(pTag,pAttribute); +} + +LTBOOL CLayoutMgr::GetBool(char *pTag,char *pAttribute, LTBOOL bDefault) +{ + return (LTBOOL) m_buteMgr.GetInt(pTag,pAttribute, bDefault); +} + +LTFLOAT CLayoutMgr::GetFloat(char *pTag,char *pAttribute, float fDefault) +{ + return (LTFLOAT)m_buteMgr.GetDouble(pTag, pAttribute, fDefault); +} + +int CLayoutMgr::GetInt(char *pTag,char *pAttribute, int nDefault) +{ + return m_buteMgr.GetInt(pTag, pAttribute, nDefault); +} + +LTIntPt CLayoutMgr::GetPoint(char *pTag,char *pAttribute) +{ + CPoint zero(0,0); + CPoint tmp = m_buteMgr.GetPoint(pTag, pAttribute, zero); + LTIntPt pt(tmp.x,tmp.y); + return pt; +} + +LTRect CLayoutMgr::GetRect(char *pTag,char *pAttribute) +{ + CRect zero(0,0,0,0); + CRect tmp = m_buteMgr.GetRect(pTag, pAttribute, zero ); + LTRect rect(tmp.left,tmp.top,tmp.right,tmp.bottom); + return rect; + +} + +void CLayoutMgr::GetString(char *pTag,char *pAttribute,char *pBuf, int nBufLen) +{ + + m_buteMgr.GetString(pTag, pAttribute, "", pBuf, nBufLen); + +} + +LTVector CLayoutMgr::GetVector(char *pTag,char *pAttribute) +{ + CAVector vRet(0.0,0.0,0.0); + return m_buteMgr.GetVector(pTag, pAttribute, vRet); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LayoutMgr.h b/Jack/ClientShellDLL/LayoutMgr.h new file mode 100644 index 00000000..50d323ca --- /dev/null +++ b/Jack/ClientShellDLL/LayoutMgr.h @@ -0,0 +1,387 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LayoutMgr.h +// +// PURPOSE : Attribute file manager for interface layout info +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LAYOUTMGR_H_) +#define _LAYOUTMGR_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "GameButeMgr.h" +#include "ltbasetypes.h" +#include "ScreenMgr.h" +#include "MenuMgr.h" +#include "Overlays.h" + + +#define LO_DEFAULT_FILE "Attributes\\Layout.txt" + +class CLayoutMgr; +extern CLayoutMgr* g_pLayoutMgr; + +struct INT_CHAR +{ + INT_CHAR() {szName[0] = szModel[0] = 0; vPos.Init(); fScale = 1.0f; fRot = 0.0f; nMenuLayer = 0; } + + LTBOOL Init(CButeMgr & buteMgr, char* aTagName); + + char szName[128]; + + char szModel[128]; + CButeListReader blrSkins; + CButeListReader blrRenderStyles; + + LTVector vPos; + LTFLOAT fScale; + LTFLOAT fRot; + uint8 nMenuLayer; +}; + +struct INT_LIGHT +{ + INT_LIGHT() {szName[0] = 0; vPos.Init(); vColor.Init(); fRadius = 0.0f; } + + LTBOOL Init(CButeMgr & buteMgr, char* aTagName); + + char szName[128]; + + LTVector vPos; + LTVector vColor; + LTFLOAT fRadius; + +}; + +struct INT_FX +{ + INT_FX() {szName[0] = szFXName[0] = 0; bLoop = LTFALSE; vPos.Init();} + + LTBOOL Init(CButeMgr & buteMgr, char* aTagName); + + char szName[128]; + char szFXName[128]; + LTVector vPos; + LTBOOL bLoop; + +}; + +struct INT_CHAINFX +{ + INT_CHAINFX() {szIntroName[0] = szShortIntroName[0] = szLoopName[0] = 0; iFromScreen = iToScreen = -1;} + + bool Init(CButeMgr & buteMgr, char* aTagName, int iNum); + + int iFromScreen; + int iToScreen; + + char szIntroName[128]; + char szShortIntroName[128]; + char szLoopName[128]; +}; + + +class CLayoutMgr : public CGameButeMgr +{ +public: + CLayoutMgr(); + virtual ~CLayoutMgr(); + + virtual LTBOOL Init(const char* szAttributeFile=LO_DEFAULT_FILE); + void Term(); + + LTBOOL WriteFile() { return m_buteMgr.Save(); } + void Reload() { m_buteMgr.Parse(m_strAttributeFile); } + + LTRect GetHelpRect(); + uint8 GetHelpFont(); + uint8 GetHelpSize(); + uint8 GetHUDFont(); + uint8 GetBackFont(); + uint8 GetBackSize(); + LTIntPt GetBackPos(); + LTIntPt GetNextPos(); + HLTCOLOR GetBackColor(); + void GetBackSprite(char *pBuf, int nBufLen); + LTFLOAT GetBackSpriteScale(); + void GetSliderTex(char *pBuf, int nBufLen); + void GetArrowBackTex(char *pBuf, int nBufLen); + void GetArrowBackTexH(char *pBuf, int nBufLen); + LTIntPt GetArrowBackPos(); + void GetArrowNextTex(char *pBuf, int nBufLen); + void GetArrowNextTexH(char *pBuf, int nBufLen); + LTIntPt GetArrowNextPos(); + LTRect GetBossRect(); + + LTIntPt GetScreenTitlePos(eScreenID screenId); + uint8 GetScreenTitleFont(eScreenID screenId); + uint8 GetScreenTitleSize(eScreenID screenId); + uint8 GetScreenFontFace(eScreenID screenId); + uint8 GetScreenFontSize(eScreenID screenId); + LTRect GetScreenPageRect(eScreenID screenId); + int GetScreenItemSpacing(eScreenID screenId); + int GetScreenItemAlign(eScreenID screenId); + int GetScreenMusicIntensity(eScreenID screenId); + void GetScreenMouseFX(eScreenID screenId, char *pBuf, int nBufLen); + void GetScreenSelectFX(eScreenID screenId, char *pBuf, int nBufLen); + LTBOOL GetScreenSelectFXCenter(eScreenID screenId); + + INT_CHAR *GetScreenCharacter(eScreenID screenId); + INT_CHAR *GetScreenCustomCharacter(eScreenID screenId, char* pName); + int GetScreenNumAttachments(eScreenID screenId); + void GetScreenAttachment(eScreenID screenId, int num, char *pBuf, int nBufLen); + + uint32 GetScreenSelectedColor(eScreenID screenId); + uint32 GetScreenNonSelectedColor(eScreenID screenId); + uint32 GetScreenDisabledColor(eScreenID screenId); + + LTBOOL HasCustomValue(eScreenID screenId, char *pAttribute); + LTIntPt GetScreenCustomPoint(eScreenID screenId, char *pAttribute); + LTRect GetScreenCustomRect(eScreenID screenId, char *pAttribute); + int GetScreenCustomInt(eScreenID screenId, char *pAttribute); + LTFLOAT GetScreenCustomFloat(eScreenID screenId, char *pAttribute); + void GetScreenCustomString(eScreenID screenId, char *pAttribute, char *pBuf, int nBufLen); + LTVector GetScreenCustomVector(eScreenID screenId, char *pAttribute); + + INT_LIGHT *GetLight(const char*szLight); + INT_FX *GetFX(const char*szFX); + INT_CHAINFX *GetChainFX(unsigned int iChainNum); + + int GetNumHUDLayouts() {return m_nNumHUDLayouts;} + int GetLayoutName(int nLayout); + + int GetNumFonts() {return m_nNumFonts;} + void GetFontName(int nFont, char* pszFontFile, int nFontFileBufLen, + char* pszFontFace, int nFontFaceBufLen ); + uint8 GetFontSize(int nFont); + + + LTBOOL GetUseAmmoBar(int nLayout); + LTIntPt GetAmmoBasePos(int nLayout); + LTIntPt GetAmmoClipOffset(int nLayout); + LTIntPt GetAmmoClipUnitSize(int nLayout); + LTIntPt GetAmmoBarOffset(int nLayout); + LTBOOL GetUseAmmoText(int nLayout); + LTIntPt GetAmmoTextOffset(int nLayout); + LTIntPt GetAmmoIconOffset(int nLayout); + uint8 GetAmmoIconSize(int nLayout); + uint32 GetAmmoColor(int nLayout); + + LTBOOL GetUseHealthBar(int nLayout); + LTIntPt GetHealthBasePos(int nLayout); + LTIntPt GetHealthBarOffset(int nLayout); + LTIntPt GetArmorBarOffset(int nLayout); + LTBOOL GetUseHealthText(int nLayout); + LTIntPt GetHealthTextOffset(int nLayout); + LTIntPt GetArmorTextOffset(int nLayout); + LTBOOL GetUseHealthIcon(int nLayout); + LTIntPt GetHealthIconOffset(int nLayout); + LTIntPt GetArmorIconOffset(int nLayout); + uint8 GetHealthIconSize(int nLayout); + uint32 GetHealthColor(int nLayout); + uint32 GetArmorColor(int nLayout); + + LTBOOL GetUseAirIcon(int nLayout); + LTIntPt GetAirBasePos(int nLayout); + LTIntPt GetAirIconOffset(int nLayout); + uint8 GetAirIconSize(int nLayout); + LTBOOL GetUseAirText(int nLayout); + LTIntPt GetAirTextOffset(int nLayout); + LTBOOL GetUseAirBar(int nLayout); + LTIntPt GetAirBarOffset(int nLayout); + uint32 GetAirColor(int nLayout); + + void GetWeaponHeatBarTexture( int nLayout, char *pBuf, int nBufLen ); + LTIntPt GetWeaponHeatBasePos(int nLayout); + int GetWeaponHeatBarHeight(int nLayout); + LTFLOAT GetWeaponHeatBarScale(int nLayout); + void GetWeaponHeatColors( int nLayout, LTVector& vCool, LTVector& vWarm, LTVector& vHot, LTVector& vOverheat ); + + int GetBarHeight(int nLayout); + LTFLOAT GetBarScale(int nLayout); + uint8 GetTextHeight(int nLayout); + LTIntPt GetModeTextPos(int nLayout); + LTIntPt GetDamageBasePos(int nLayout); + uint16 GetDamageIconSize(int nLayout); + + LTIntPt GetCompassPos(int nLayout); + uint16 GetCompassSize(int nLayout); + + uint16 GetRadarObjectSize(int nLayout); + uint32 GetRadarMaxShowDist(int nLayout); + uint32 GetRadarLivePlayerColor(int nLayout); + uint32 GetRadarDeadPlayerColor(int nLayout); + uint32 GetRadarTalkPlayerColor(int nLayout); + float GetRadarFlashTime(int nLayout); + + uint16 GetDamageSize(int nLayout); + + LTIntPt GetCarryIconPos(int nLayout); + uint16 GetCarryIconSize(int nLayout); + + LTIntPt GetObjectiveIconPos(int nLayout); + LTIntPt GetObjectiveIconSize(int nLayout); + float GetObjectiveBlinkDuration(int nLayout); + float GetObjectiveBlinkSpeed(int nLayout); + + LTIntPt GetHideIconPos(int nLayout); + LTIntPt GetHideIconSize(int nLayout); + LTFLOAT GetHideIconBlinkSpeed(int nLayout); + LTFLOAT GetHideIconAlpha(int nLayout); + + int GetHidingBarBasePosY(int nLayout); + LTIntPt GetHidingBarOffset(int nLayout); + int GetHidingBarHeight(int nLayout); + float GetHidingBarScale(int nLayout); + void GetHidingBarTexture(int nLayout, char *pBuf, int nBufLen); + + LTIntPt GetDistanceIconPos(int nLayout); + LTFLOAT GetDistanceIconBlinkSpeed(int nLayout); + LTFLOAT GetDistanceIconAlpha(int nLayout); + LTFLOAT GetDistanceIconFadeOutSpeed(int nLayout); + + LTIntPt GetActivationTextPos(int nLayout); + uint8 GetActivationTextSize(int nLayout); + uint8 GetActivationTextJustify(int nLayout); + uint32 GetActivationTextColor(int nLayout); + uint32 GetActivationTextDisabledColor(int nLayout); + LTIntPt GetDebugTextPos(int nLayout); + uint8 GetDebugTextSize(int nLayout); + uint8 GetDebugTextJustify(int nLayout); + uint32 GetDebugTextColor(int nLayout); + uint16 GetDebugTextWidth(int nLayout); + + uint8 GetChooserIconHeight(int nLayout, uint8 nDefault); + float GetChooserTextureScale(int nLayout, float fDefault); + uint32 GetChooserTextColor(int nLayout, uint32 nDefault); + uint8 GetChooserTextSize(int nLayout, uint8 nDefault); + + int GetProgressBarBasePosY(int nLayout); + LTIntPt GetProgressBarOffset(int nLayout); + int GetProgressBarHeight(int nLayout); + float GetProgressBarScale(int nLayout); + void GetProgressBarTexture(int nLayout, char *pBuf, int nBufLen); + + int GetDisplayMeterBasePosY(int nLayout); + LTIntPt GetDisplayMeterOffset(int nLayout); + int GetDisplayMeterHeight(int nLayout); + float GetDisplayMeterScale(int nLayout); + void GetDisplayMeterTexture(int nLayout, char *pBuf, int nBufLen); + + LTVector GetSpyVisionModelColor(); + LTVector GetSpyVisionLightScale(); + LTVector GetWeaponPickupColor(); + LTVector GetAmmoPickupColor(); + LTFLOAT GetTintTime(); + + LTFLOAT GetCrosshairGapMin(); + LTFLOAT GetCrosshairGapMax(); + LTFLOAT GetCrosshairBarMin(); + LTFLOAT GetCrosshairBarMax(); + LTFLOAT GetPerturbRotationEffect(); + LTFLOAT GetPerturbIncreaseSpeed(); + LTFLOAT GetPerturbDecreaseSpeed(); + LTFLOAT GetPerturbWalkPercent(); + + LTBOOL IsMaskSprite(eOverlayMask eMask); + void GetMaskSprite(eOverlayMask eMask, char *pBuf, int nBufLen); + void GetMaskModel(eOverlayMask eMask, char *pBuf, int nBufLen); + void GetMaskSkin(eOverlayMask eMask, char *pBuf, int nBufLen); + LTFLOAT GetMaskScale(eOverlayMask eMask); + LTFLOAT GetMaskAlpha(eOverlayMask eMask); + + void GetDialogFrame(char *pBuf, int nBufLen); + uint8 GetDialogFontFace(); + uint8 GetDialogFontSize(); + + LTFLOAT GetDeathDelay(); + + LTFLOAT GetMessageMinFade(); + LTFLOAT GetMessageMinTime(); + + LTRect GetObjectiveRect(); + LTRect GetPopupTextRect(); + + HLTCOLOR GetSubtitleTint(); + HLTCOLOR GetHealthTint(); + HLTCOLOR GetArmorTint(); + HLTCOLOR GetAmmoTint(); + + LTIntPt GetMenuSize(); + uint16 GetMenuPosition(); + float GetMenuSlideInTime(); + float GetMenuSlideOutTime(); + void GetMenuFrame(char *pBuf, int nBufLen); + void GetMenuFrameTip(char *pBuf, int nBufLen); + void GetMenuUpArrow(char *pBuf, int nBufLen); + void GetMenuUpArrowHighlight(char *pBuf, int nBufLen); + void GetMenuDownArrow(char *pBuf, int nBufLen); + void GetMenuDownArrowHighlight(char *pBuf, int nBufLen); +// void GetMenuLeftArrow(char *pBuf, int nBufLen); +// void GetMenuLeftArrowHighlight(char *pBuf, int nBufLen); +// void GetMenuRightArrow(char *pBuf, int nBufLen); +// void GetMenuRightArrowHighlight(char *pBuf, int nBufLen); +// void GetMenuClose(char *pBuf, int nBufLen); +// void GetMenuCloseHighlight(char *pBuf, int nBufLen); + + uint8 GetMenuFontFace(eMenuID menuId); + uint8 GetMenuFontSize(eMenuID menuId); + uint8 GetMenuTitleFontFace(eMenuID menuId); + uint8 GetMenuTitleFontSize(eMenuID menuId); + LTIntPt GetMenuIndent(eMenuID menuId); + uint32 GetMenuSelectedColor(eMenuID menuId); + uint32 GetMenuNonSelectedColor(eMenuID menuId); + uint32 GetMenuDisabledColor(eMenuID menuId); + + LTBOOL MenuHasCustomValue(eMenuID menuId, char *pAttribute); + LTIntPt GetMenuCustomPoint(eMenuID menuId, char *pAttribute); + LTRect GetMenuCustomRect(eMenuID menuId, char *pAttribute); + int GetMenuCustomInt(eMenuID menuId, char *pAttribute); + LTFLOAT GetMenuCustomFloat(eMenuID menuId, char *pAttribute); + void GetMenuCustomString(eMenuID menuId, char *pAttribute, char *pBuf, int nBufLen); + LTVector GetMenuCustomVector(eMenuID menuId, char *pAttribute); + + LTFLOAT GetCreditsFadeInTime(); + LTFLOAT GetCreditsHoldTime(); + LTFLOAT GetCreditsFadeOutTime(); + LTFLOAT GetCreditsDelayTime(); + LTIntPt GetCreditsPositionUL(); + LTIntPt GetCreditsPositionUR(); + LTIntPt GetCreditsPositionLL(); + LTIntPt GetCreditsPositionLR(); + + LTBOOL Exist(char *pTag); + LTBOOL HasValue(char *pTag,char *pAttribute); + LTBOOL GetBool(char *pTag,char *pAttribute, LTBOOL bDefault = LTFALSE); + LTFLOAT GetFloat(char *pTag,char *pAttribute, float fDefault = 0.0f); + int GetInt(char *pTag,char *pAttribute, int nDefault = 0); + LTIntPt GetPoint(char *pTag,char *pAttribute); + LTRect GetRect(char *pTag,char *pAttribute); + void GetString(char *pTag,char *pAttribute, char *pBuf, int nBufLen); + LTVector GetVector(char *pTag,char *pAttribute); + + +protected: + int m_nNumHUDLayouts; + int m_nNumFonts; + + typedef std::vector CharacterArray; + CharacterArray m_CharacterArray; + + typedef std::vector LightArray; + LightArray m_LightArray; + + typedef std::vector FXArray; + FXArray m_FXArray; + + typedef std::vector ChainFXArray; + ChainFXArray m_ChainFXArray; +}; + +#endif // !defined(_LAYOUTMGR_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/LeanMgr.cpp b/Jack/ClientShellDLL/LeanMgr.cpp new file mode 100644 index 00000000..03b94eb6 --- /dev/null +++ b/Jack/ClientShellDLL/LeanMgr.cpp @@ -0,0 +1,612 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LeanMgr.cpp +// +// PURPOSE : Lean mgr - Implementation +// +// CREATED : 1/8/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "PlayerMgr.h" + #include "CMoveMgr.h" + #include "MsgIds.h" + #include "LeanMgr.h" + #include "InterfaceMgr.h" + #include "PlayerCamera.h" + #include "VehicleMgr.h" + +// +// Globals... +// + + VarTrack g_vtLeanOutTime; + VarTrack g_vtLeanCenterTime; + VarTrack g_vtLeanRadius; + VarTrack g_vtLeanAngle; + VarTrack g_vtLeanCamClipDist; + + extern VarTrack g_vtCameraClipDistance; + extern CMoveMgr* g_pMoveMgr; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::CLeanMgr +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CLeanMgr::CLeanMgr( ) +: m_kLeanDir ( kLean_Center ), + m_dwControlFlags ( 0 ), + m_dwLastControlFlags ( 0 ), + m_vRotationPt ( 0.0f, 0.0f, 0.0f ), + m_vRotationPtOffset ( 0.0f, 0.0f, 0.0f ), + m_rOrigCamRot ( 0.0f, 0.0f, 0.0f, 1.0f ), + m_fLeanAngle ( 0.0f ), + m_fLastLeanAngle ( 0.0f ), + m_fMaxLeanAngle ( 0.0f ), + m_fLeanFromAngle ( 0.0f ), + m_fCenterFromAngle ( 0.0f ), + m_fStartTime ( 0.0f ), + m_fEndTime ( 0.0f ), + m_bFailedToCenter ( false ), + m_bFailedToLean ( false ), + m_bLeanedOut ( false ), + m_bDoneMoving ( false ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::~CLeanMgr +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CLeanMgr::~CLeanMgr( ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::Init +// +// PURPOSE: Initialize vars... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::Init( ) +{ + g_vtLeanOutTime.Init( g_pLTClient, "LeanOutTime", LTNULL, 0.5f ); + g_vtLeanCenterTime.Init( g_pLTClient, "LeanCenterTime", LTNULL, 0.5f ); + g_vtLeanRadius.Init( g_pLTClient, "LeanRadius", LTNULL, 250.0f ); + g_vtLeanAngle.Init( g_pLTClient, "LeanAngle", LTNULL, 3.0f ); + g_vtLeanCamClipDist.Init( g_pLTClient, "LeanCamClipDist", LTNULL, 20.0f ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::Update +// +// PURPOSE: Update the player lean... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::Update( ) +{ + + if (g_pGameClientShell->IsGamePaused()) return; + + UpdateControlFlags(); + + bool bLeft = !!(m_dwControlFlags & BC_CFLG_LEAN_LEFT); + bool bRight = !!(m_dwControlFlags & BC_CFLG_LEAN_RIGHT); + bool bLastLeft = !!(m_dwLastControlFlags & BC_CFLG_LEAN_LEFT); + bool bLastRight = !!(m_dwLastControlFlags & BC_CFLG_LEAN_RIGHT); + + // Check to see if we should start leaning in a direction... + + if( bLeft && !bLastLeft ) + { + BeginLean( kLean_Left ); + } + else if( !bLeft && bLastLeft ) + { + EndLean( kLean_Left ); + } + + + if( bRight && !bLastRight ) + { + BeginLean( kLean_Right ); + } + else if( !bRight && bLastRight ) + { + EndLean( kLean_Right ); + } + + // Should we snap back to the center or keep leaning... + + if( !bLeft && !bRight && (m_kLeanDir != kLean_Center) ) + { + UpdateCenter( ); + } + else + { + UpdateLean( ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::UpdateControlFlags +// +// PURPOSE: Update the command states... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::UpdateControlFlags( ) +{ + // Save and clear the flags from the last update... + + m_dwLastControlFlags = m_dwControlFlags; + m_dwControlFlags = 0; + + // We can only lean while on the ground... + + if( g_pMoveMgr->CanDoFootstep() && g_pInterfaceMgr->AllowCameraMovement() && + !g_pPlayerMgr->IsPlayerDead() && !g_pMoveMgr->IsBodyOnLadder() && !g_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() ) + { + if( g_pLTClient->IsCommandOn( COMMAND_ID_LEAN_LEFT )) + { + m_dwControlFlags |= BC_CFLG_LEAN_LEFT; + } + + if( g_pLTClient->IsCommandOn( COMMAND_ID_LEAN_RIGHT )) + { + m_dwControlFlags |= BC_CFLG_LEAN_RIGHT; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::BeginLean +// +// PURPOSE: Start leaning in a direction... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::BeginLean( eLeanDirection kDir ) +{ + m_kLeanDir = kDir; + + m_fMaxLeanAngle = DEG2RAD( g_vtLeanAngle.GetFloat() ); + m_fLeanFromAngle = m_fLastLeanAngle; + + m_fStartTime = 0.0f; + m_fEndTime = g_vtLeanOutTime.GetFloat(); + + if( m_bLeanedOut ) + { + // Send a message to the server to remove the original stimulus. + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + cMsg.Writeuint8( CP_PLAYER_LEAN ); + cMsg.Writeuint8( PL_CENTER ); + cMsg.WriteLTVector( LTVector( 0, 0, 0) ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + + // If we are just begining to lean then we are not leaned out... + + m_bLeanedOut = false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::EndLean +// +// PURPOSE: End leaning in a direction... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::EndLean( eLeanDirection kDir ) +{ + + if( m_bLeanedOut ) + { + // Send a message to the server to remove the original stimulus. + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + cMsg.Writeuint8( CP_PLAYER_LEAN ); + cMsg.Writeuint8( PL_CENTER ); + cMsg.WriteLTVector( LTVector( 0, 0, 0) ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + + // If we are ending a lean we are not leaned out... + + m_bLeanedOut = false; + + + bool bLeft = !!(m_dwControlFlags & BC_CFLG_LEAN_LEFT); + bool bRight = !!(m_dwControlFlags & BC_CFLG_LEAN_RIGHT); + + if( bLeft || bRight ) + { + // Readjust the lean... + + m_kLeanDir = bLeft ? kLean_Left : kLean_Right; + m_fLeanFromAngle = m_fLastLeanAngle; + m_fStartTime = 0.0f; + + float fMovePercent = 1.0f - (float(m_kLeanDir) * (m_fLastLeanAngle / m_fMaxLeanAngle)); + m_fEndTime = g_vtLeanOutTime.GetFloat() * fMovePercent; + } + else + { + BeginCenter(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::BeginCenter +// +// PURPOSE: Setup values to snap back to center... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::BeginCenter( ) +{ + m_fCenterFromAngle = m_fLastLeanAngle; + + m_kLeanDir = (m_fCenterFromAngle > 0.0f ? kLean_Left : kLean_Right ); + + m_fStartTime = 0.0f; + m_fEndTime = g_vtLeanCenterTime.GetFloat(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::UpdateLean +// +// PURPOSE: Update the leaning motion... +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::UpdateLean( ) +{ + if( !IsLeaning() ) return; + + + // Don't start leaning untill we are done moving... + + if( !m_bDoneMoving && (g_pMoveMgr->GetMovementPercent() > MATH_EPSILON) ) + { + BeginLean( m_kLeanDir ); + } + else + { + m_bDoneMoving = true; + } + + LTVector vCamPos; + g_pLTClient->GetObjectPos( g_pPlayerMgr->GetCamera(), &vCamPos ); + + // Develop the rotation values... + + m_vRotationPt.Init( vCamPos.x, vCamPos.y - g_vtLeanRadius.GetFloat(), vCamPos.z ); + m_vRotationPtOffset.Init( 0.0f, g_vtLeanRadius.GetFloat(), 0.0f ); + + + float fLeanFromAngle = m_fLeanFromAngle; + + // Did we try to center but went back to leaning before we finished... + + if( m_bFailedToCenter ) + { + m_bFailedToCenter = false; + + // Recalculate the time... + + if( m_fMaxLeanAngle > 0.0f ) + { + float fMovePercent = 1.0f - (float(m_kLeanDir) * (m_fLastLeanAngle / m_fMaxLeanAngle)); + m_fEndTime = g_vtLeanOutTime.GetFloat() * fMovePercent; + } + + m_fStartTime = 0.0f; + fLeanFromAngle = m_fLastLeanAngle; + } + + // Find the angle based on the percentage of lean we should be at... + + m_fStartTime += g_pLTClient->GetFrameTime(); + + float fT = (m_fStartTime / m_fEndTime); + bool bDone = CalcAngle( m_fLeanAngle, fLeanFromAngle, m_fMaxLeanAngle, m_kLeanDir, m_fEndTime, fT ); + + // Save our last lean angle... + + m_fLastLeanAngle = m_fLeanAngle; + + LTRotation rRot; + LTVector vPos; + CalculateNewPosRot( vPos, rRot, m_fLeanAngle ); + + // [KLS 3/22/03] Only adjust the camera in first person... + + if (g_pPlayerMgr->IsFirstPerson()) + { + g_pLTClient->SetObjectPosAndRotation( g_pPlayerMgr->GetCamera(), &vPos, &rRot ); + } + + if( bDone ) + { + if( !m_bLeanedOut ) + { + // We are completely leaned out. + + m_bLeanedOut = true; + + // Send a message to the server to register a stimulus. + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + cMsg.Writeuint8( CP_PLAYER_LEAN ); + cMsg.Writeuint8( m_kLeanDir == kLean_Left ? PL_LEFT : PL_RIGHT ); + cMsg.WriteLTVector( vPos ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } + + m_bFailedToLean = false; + return; + } + + m_bFailedToLean = true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::UpdateCenter +// +// PURPOSE: NONE +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::UpdateCenter( ) +{ + float fCenterFromAngle = m_fCenterFromAngle; + + LTVector vCamPos; + g_pLTClient->GetObjectPos( g_pPlayerMgr->GetCamera(), &vCamPos ); + + // Develop the rotation values... + + m_vRotationPt.Init( vCamPos.x, vCamPos.y - g_vtLeanRadius.GetFloat(), vCamPos.z ); + m_vRotationPtOffset.Init( 0.0f, g_vtLeanRadius.GetFloat(), 0.0f ); + + // Did we try to lean but went back to centering before we finished... + + if( m_bFailedToLean ) + { + m_bFailedToLean = false; + + // Recalculate the time... + + if( m_fMaxLeanAngle > 0.0f ) + { + float fMovePercent = float(m_kLeanDir) * (m_fLastLeanAngle / m_fMaxLeanAngle); + m_fEndTime = g_vtLeanCenterTime.GetFloat() * fMovePercent; + } + + m_fStartTime = 0.0f; + fCenterFromAngle = m_fLastLeanAngle; + } + + // Find the angle based on the percentage of lean we should be at... + + m_fStartTime += g_pLTClient->GetFrameTime(); + + float fT = (m_fStartTime / m_fEndTime); + bool bDone = CalcAngle( m_fLeanAngle, fCenterFromAngle, 0.0f, eLeanDirection(-m_kLeanDir), m_fEndTime, fT ); + + // Save our current lean angle... + + m_fLastLeanAngle = m_fLeanAngle; + + LTRotation rRot; + LTVector vPos; + CalculateNewPosRot( vPos, rRot, m_fLeanAngle ); + + // [KLS 3/22/03] Only adjust the camera in first person... + + if (g_pPlayerMgr->IsFirstPerson()) + { + g_pLTClient->SetObjectPosAndRotation( g_pPlayerMgr->GetCamera(), &vPos, &rRot ); + } + + if( bDone ) + { + // We are centered. + + m_kLeanDir = kLean_Center; + m_bFailedToCenter = false; + m_bDoneMoving = false; + + return; + } + + m_bFailedToCenter = true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::CalcAngle +// +// PURPOSE: Calculate the new value of fAngle +// +// ----------------------------------------------------------------------- // + +bool CLeanMgr::CalcAngle( float &fAngle, float fInitial, float fTarget, eLeanDirection kDir, float fTotalTime, float fPercent ) +{ + // Adjust the target angle based on direction... + + fTarget *= (float)kDir; + + float fLastAngle = fAngle; + bool bRet = false; // Are we at the target angle? + + if( fPercent > 1.0f ) + { + fAngle = fTarget; + bRet = true; + } + else + { + + float fRate = ( fTarget - fInitial ) / fTotalTime; + float fAmount = fRate * g_pLTClient->GetFrameTime(); + + + if( kDir != kLean_Center ) + { + if( kDir == kLean_Right ) + { + if( fAngle > fTarget ) + { + fAngle += fAmount; + } + else + { + fAngle = fTarget; + bRet = true; + } + } + else + { + if( fAngle < fTarget ) + { + fAngle += fAmount; + } + else + { + fAngle = fTarget; + bRet = true; + } + } + } + else + { + bRet = true; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: LeanFilterFn +// +// PURPOSE: Lean intersect seg filter function. +// +// ----------------------------------------------------------------------- // +static bool LeanFilterFn(HOBJECT hTest, void *pUserData) +{ + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + if(!(dwFlags & FLAG_RAYHIT)) + { + return false; + } + + // If it's a body, ignore it + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(hTest); + if (pBody) + { + return false; + } + pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox(hTest); + if (pBody) + { + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLeanMgr::CalculateNewPosRot +// +// PURPOSE: Calculate a new Position and Rotation based on current values +// +// ----------------------------------------------------------------------- // + +void CLeanMgr::CalculateNewPosRot( LTVector &vOutPos, LTRotation &rOutRot, float fAngle ) +{ + float fPitch = g_pPlayerMgr->GetPitch(); + float fYaw = g_pPlayerMgr->GetYaw(); + float fRoll = g_pPlayerMgr->GetRoll(); + + // Use the current camera angles and just add the new roll for the camera rotation... + + rOutRot = LTRotation( fPitch, fYaw, fRoll + fAngle ); + + // Don't factor in the pitch so the position isn't affected by it... + + LTMatrix mRotation; + LTRotation rRotation( 0.0f, fYaw, fRoll + fAngle ); + + rRotation.ConvertToMatrix( mRotation ); + + vOutPos = (mRotation * m_vRotationPtOffset) + m_vRotationPt; + + // Make sure we are actually in the world before we try to clip... + + ClientIntersectQuery iQuery; + iQuery.m_FilterActualIntersectFn = LeanFilterFn; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID | INTERSECT_HPOLY; + iQuery.m_From = m_vRotationPt + m_vRotationPtOffset; + iQuery.m_To = vOutPos; + + if( g_pLTClient->IntersectSegment( &iQuery, &iInfo )) + { + vOutPos = iInfo.m_Point + iInfo.m_Plane.m_Normal; + } + + // Keep us far away from walls to avoid clipping... + + float fCamClipDist = g_vtCameraClipDistance.GetFloat(); + g_vtCameraClipDistance.SetFloat( g_vtLeanCamClipDist.GetFloat() ); + + g_pPlayerMgr->GetPlayerCamera()->CalcNonClipPos( vOutPos, rOutRot ); + + g_vtCameraClipDistance.SetFloat( fCamClipDist ); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LeanMgr.h b/Jack/ClientShellDLL/LeanMgr.h new file mode 100644 index 00000000..e5215ea1 --- /dev/null +++ b/Jack/ClientShellDLL/LeanMgr.h @@ -0,0 +1,83 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LeanMgr.cpp +// +// PURPOSE : Lean mgr - Definition +// +// CREATED : 1/8/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LEANMGR_H__ +#define __LEANMGR_H__ + +class CLeanMgr +{ + private: + + enum eLeanDirection + { + kLean_Right = -1, + kLean_Center = 0, + kLean_Left = 1, + }; + + + public: // Methods... + + CLeanMgr(); + ~CLeanMgr(); + + void Init( ); + void Update( ); + + bool IsLeaning() const { return !!(m_kLeanDir != kLean_Center); } + + uint32 GetControlFlags() const { return m_dwControlFlags; } + + + private: // Methods... + + void UpdateControlFlags( ); + + void BeginLean( eLeanDirection kDir ); + void EndLean( eLeanDirection kDir ); + void BeginCenter( ); + + void UpdateLean( ); + void UpdateCenter( ); + + bool CalcAngle( float &fAngle, float fInitial, float fTarget, eLeanDirection kDir, float fTotalTime, float fPercent ); + void CalculateNewPosRot( LTVector &vOutPos, LTRotation &rOutRot, float fAngle ); + + + private: // Members... + + eLeanDirection m_kLeanDir; + + uint32 m_dwControlFlags; + uint32 m_dwLastControlFlags; + + LTVector m_vRotationPt; + LTVector m_vRotationPtOffset; + + LTRotation m_rOrigCamRot; // The rotation of the camera when we began to lean + + float m_fLeanAngle; + float m_fLastLeanAngle; + float m_fMaxLeanAngle; + float m_fLeanFromAngle; + float m_fCenterFromAngle; + + float m_fStartTime; + float m_fEndTime; + + bool m_bFailedToCenter; // Did we try to center last update but failed? + bool m_bFailedToLean; // Did we try to lean last update but failed? + bool m_bLeanedOut; // Are we completely leand out? + bool m_bDoneMoving; +}; + +#endif // __LEANMGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LensFlareFX.cpp b/Jack/ClientShellDLL/LensFlareFX.cpp new file mode 100644 index 00000000..63b52673 --- /dev/null +++ b/Jack/ClientShellDLL/LensFlareFX.cpp @@ -0,0 +1,373 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LensFlareFX.cpp +// +// PURPOSE : LensFlare FX - Implementation +// +// CREATED : 5/9/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LensFlareFX.h" +#include "GameClientShell.h" +#include "VarTrack.h" +#include "CMoveMgr.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarMinFlareAngle; +VarTrack g_cvarMinFlareSprAlpha; +VarTrack g_cvarMaxFlareSprAlpha; +VarTrack g_cvarMinFlareSprScale; +VarTrack g_cvarMaxFlareSprScale; + +VarTrack g_cvarBlindMinScale; +VarTrack g_cvarBlindMaxScale; +VarTrack g_cvarBlindObjectAngle; +VarTrack g_cvarBlindCameraAngle; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLensFlareFX::Init +// +// PURPOSE: Init the lens flare fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLensFlareFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + LENSFLARECREATESTRUCT lens; + + lens.InitFromMessage(lens, pMsg); + lens.hServerObj = hServObj; + + return Init(&lens); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: LENSFLARECREATESTRUCT::InitFromMessage +// +// PURPOSE: Init the lens flare fx create struct based on the message +// +// ----------------------------------------------------------------------- // + +LTBOOL LENSFLARECREATESTRUCT::InitFromMessage(LENSFLARECREATESTRUCT & lens, + ILTMessage_Read *pMsg) +{ + if (!pMsg) return LTFALSE; + + lens.bInSkyBox = (LTBOOL) pMsg->Readuint8(); + lens.bCreateSprite = (LTBOOL) pMsg->Readuint8(); + lens.bSpriteOnly = (LTBOOL) pMsg->Readuint8(); + lens.bUseObjectAngle = (LTBOOL) pMsg->Readuint8(); + lens.bSpriteAdditive = (LTBOOL) pMsg->Readuint8(); + lens.fSpriteOffset = pMsg->Readfloat(); + lens.fMinAngle = pMsg->Readfloat(); + lens.fMinSpriteAlpha = pMsg->Readfloat(); + lens.fMaxSpriteAlpha = pMsg->Readfloat(); + lens.fMinSpriteScale = pMsg->Readfloat(); + lens.fMaxSpriteScale = pMsg->Readfloat(); + lens.hstrSpriteFile = pMsg->ReadHString(); + lens.bBlindingFlare = (LTBOOL) pMsg->Readuint8(); + lens.fBlindObjectAngle = pMsg->Readfloat(); + lens.fBlindCameraAngle = pMsg->Readfloat(); + lens.fMinBlindScale = pMsg->Readfloat(); + lens.fMaxBlindScale = pMsg->Readfloat(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLensFlareFX::Init +// +// PURPOSE: Init the lens flare fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLensFlareFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((LENSFLARECREATESTRUCT*)psfxCreateStruct); + + g_cvarMinFlareAngle.Init(g_pLTClient, "FlareMin", NULL, -1.0f); + g_cvarMinFlareSprAlpha.Init(g_pLTClient, "FlareSprAlphaMin", NULL, -1.0f); + g_cvarMaxFlareSprAlpha.Init(g_pLTClient, "FlareSprAlphaMax", NULL, -1.0f); + g_cvarMinFlareSprScale.Init(g_pLTClient, "FlareSprScaleMin", NULL, -1.0f); + g_cvarMaxFlareSprScale.Init(g_pLTClient, "FlareSprScaleMax", NULL, -1.0f); + + g_cvarBlindMinScale.Init(g_pLTClient, "FlareBlindScaleMin", NULL, -1.0f); + g_cvarBlindMaxScale.Init(g_pLTClient, "FlareBlindScaleMax", NULL, -1.0f); + g_cvarBlindObjectAngle.Init(g_pLTClient, "FlareBlindObjAngle", NULL, -1.0f); + g_cvarBlindCameraAngle.Init(g_pLTClient, "FlareBlindCamAngle", NULL, -1.0f); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLensFlareFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLensFlareFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + if (!m_cs.bCreateSprite) return LTTRUE; // Don't want a sprite + if (!m_cs.hstrSpriteFile) return LTFALSE; // Wanted a sprite, but no filename + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + // Create the lens flare sprite... + + + g_pLTClient->GetObjectPos(m_hServerObject, &(createStruct.m_Pos)); + createStruct.m_ObjectType = OT_SPRITE; + + const char* pFilename = m_pClientDE->GetStringData(m_cs.hstrSpriteFile); + if (!pFilename) return LTFALSE; + + SAFE_STRCPY(createStruct.m_Filename, pFilename); + createStruct.m_Flags = FLAG_NOLIGHT | FLAG_SPRITEBIAS; + + if (m_cs.bSpriteAdditive) + { + createStruct.m_Flags2 = FLAG2_ADDITIVE; + } + + m_hFlare = m_pClientDE->CreateObject(&createStruct); + if (!m_hFlare) return LTFALSE; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLensFlareFX::Update +// +// PURPOSE: Update the lens flare fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLensFlareFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; + + // Hide/show the flare object if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + if (m_hFlare) + { + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, 0, FLAG_VISIBLE); + } + + return LTTRUE; + } + else + { + if (m_hFlare) + { + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + } + + + // Only show the flare if the camera is looking at it... + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return LTFALSE; + + LTVector vPos, vCamPos; + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + // If our server object is in the sky box, convert its position to + // real world coordinates... + + if (m_cs.bInSkyBox) + { + SkyDef sky; + m_pClientDE->GetSkyDef(&sky); + + LTVector vSkyCenter = (sky.m_Min + ((sky.m_Max - sky.m_Min) / 2.0f)); + vPos = vCamPos + (vPos - vSkyCenter); + } + + + LTRotation rCamRot, rObjRot; + g_pLTClient->GetObjectRotation(hCamera, &rCamRot); + g_pLTClient->GetObjectRotation(m_hServerObject, &rObjRot); + + LTVector vF, vObjF; + vF = rCamRot.Forward(); + vObjF = rObjRot.Forward(); + + LTVector vDir = vPos - vCamPos; + vDir.Normalize(); + + LTFLOAT fCameraAngle = vDir.Dot(vF); + fCameraAngle = fCameraAngle < 0.0f ? 0.0f : fCameraAngle; + fCameraAngle *= 90.0f; // Change to degrees + + LTFLOAT fObjectAngle = -vDir.Dot(vObjF); + fObjectAngle = fObjectAngle < 0.0f ? 0.0f : fObjectAngle; + fObjectAngle *= 90.0f; // Change to degrees + + LTFLOAT fSpriteAngle = m_cs.bUseObjectAngle ? fObjectAngle : fCameraAngle; + LTFLOAT fMinAngle = g_cvarMinFlareAngle.GetFloat() < 0.0f ? m_cs.fMinAngle : g_cvarMinFlareAngle.GetFloat(); + + // Show or hide the server object, if necessary... + + if (!m_cs.bSpriteOnly) + { + if (fCameraAngle < (90.0f - fMinAngle)) + { + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Flags, 0, FLAG_VISIBLE); + } + else + { + // Set Server object's color... + + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + + LTFLOAT r, g, b, a; + LTFLOAT fVal = (fCameraAngle + fMinAngle - 90.0f)/fMinAngle; + r = g = b = a = fVal; + + m_pClientDE->SetObjectColor(m_hServerObject, r, g, b, a); + } + } + + // Handle Scale sprite... + + if (m_hFlare) + { + if (fSpriteAngle < (90.0f - fMinAngle)) + { + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, 0, FLAG_VISIBLE); + } + else + { + if (m_cs.bBlindingFlare) + { + // Doesn't look quite as good, but will clip on + // world/objects... + + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, FLAG_SPRITEBIAS | FLAG_VISIBLE, FLAG_SPRITE_NOZ | FLAG_SPRITEBIAS | FLAG_VISIBLE); + } + else + { + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + LTFLOAT fVal = (fSpriteAngle + fMinAngle - 90.0f)/fMinAngle; + + // Calculate new alpha... + + LTFLOAT fMinAlpha = g_cvarMinFlareSprAlpha.GetFloat() < 0.0 ? m_cs.fMinSpriteAlpha : g_cvarMinFlareSprAlpha.GetFloat(); + LTFLOAT fMaxAlpha = g_cvarMaxFlareSprAlpha.GetFloat() < 0.0 ? m_cs.fMaxSpriteAlpha : g_cvarMaxFlareSprAlpha.GetFloat(); + LTFLOAT fAlphaRange = fMaxAlpha - fMinAlpha; + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hFlare, &r, &g, &b, &a); + + a = fMinAlpha + (fVal * fAlphaRange); + m_pClientDE->SetObjectColor(m_hFlare, r, g, b, a); + + // Calculate new scale... + + LTFLOAT fMinScale = g_cvarMinFlareSprScale.GetFloat() < 0.0 ? m_cs.fMinSpriteScale : g_cvarMinFlareSprScale.GetFloat(); + LTFLOAT fMaxScale = g_cvarMaxFlareSprScale.GetFloat() < 0.0 ? m_cs.fMaxSpriteScale : g_cvarMaxFlareSprScale.GetFloat(); + LTFLOAT fScaleRange = fMaxScale - fMinScale; + + LTFLOAT fScale = fMinScale + (fVal * fScaleRange); + LTVector vScale(fScale, fScale, fScale); + m_pClientDE->SetObjectScale(m_hFlare, &vScale); + + + // Make sure the flare is in the correct position... + + vPos += (vObjF * m_cs.fSpriteOffset); + g_pLTClient->SetObjectPos(m_hFlare, &vPos); + + // Don't do any more processing if the alpha is 0... + + if (a < 0.001f) return LTTRUE; + + + // See if we should make a "bliding" flare, and if so see if the + // camera is looking directly at the flare... + + if (m_cs.bBlindingFlare) + { + LTFLOAT fBlindObjAngle = g_cvarBlindObjectAngle.GetFloat() < 0.0 ? m_cs.fBlindObjectAngle : g_cvarBlindObjectAngle.GetFloat(); + LTFLOAT fBlindCamAngle = g_cvarBlindCameraAngle.GetFloat() < 0.0 ? m_cs.fBlindCameraAngle : g_cvarBlindCameraAngle.GetFloat(); + + if ((fObjectAngle > (90.0f - fBlindObjAngle)) && + (fCameraAngle > (90.0f - fBlindCamAngle))) + { + // Update the no-z flare if possible... + + // Make sure there is a clear path from the flare to the camera... + + HLOCALOBJ hPlayerObj = m_pClientDE->GetClientObject(); + HOBJECT hFilterList[] = {hPlayerObj, g_pPlayerMgr->GetMoveMgr()->GetObject(), LTNULL}; + + IntersectInfo iInfo; + IntersectQuery qInfo; + qInfo.m_Flags = INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID; + qInfo.m_FilterFn = ObjListFilterFn; + qInfo.m_pUserData = g_pPlayerMgr->IsFirstPerson() ? hFilterList : LTNULL; + qInfo.m_From = vPos; + qInfo.m_To = vCamPos; + + if (!g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + // Calculate new flare scale... + + fVal = (fObjectAngle + fBlindObjAngle - 90.0f)/fBlindObjAngle; + + LTFLOAT fMaxBlindScale = g_cvarBlindMaxScale.GetFloat() < 0.0 ? m_cs.fMaxBlindScale : g_cvarBlindMaxScale.GetFloat(); + LTFLOAT fMinBlindScale = g_cvarBlindMinScale.GetFloat() < 0.0 ? m_cs.fMinBlindScale : g_cvarBlindMinScale.GetFloat(); + + fScaleRange = fMaxBlindScale - fMinBlindScale; + fScale = fMinBlindScale + (fVal * fScaleRange); + vScale.Init(fScale, fScale, fScale); + m_pClientDE->SetObjectScale(m_hFlare, &vScale); + + // This looks better, but will show through + // world/objects so we only do this if there + // isn't anything in the way... + + g_pCommonLT->SetObjectFlags(m_hFlare, OFT_Flags, FLAG_SPRITE_NOZ, FLAG_SPRITE_NOZ | FLAG_SPRITEBIAS); + } + + } + } + } + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LensFlareFX.h b/Jack/ClientShellDLL/LensFlareFX.h new file mode 100644 index 00000000..490c966f --- /dev/null +++ b/Jack/ClientShellDLL/LensFlareFX.h @@ -0,0 +1,99 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LensFlareFX.h +// +// PURPOSE : LensFlare special fx class - Definition +// +// CREATED : 5/9/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LENS_FLARE_FX_H__ +#define __LENS_FLARE_FX_H__ + +#include "SpecialFX.h" + +struct LENSFLARECREATESTRUCT : public SFXCREATESTRUCT +{ + LENSFLARECREATESTRUCT(); + + LTBOOL InitFromMessage(LENSFLARECREATESTRUCT & lens, ILTMessage_Read *pMsg); + + LTBOOL bInSkyBox; + LTBOOL bCreateSprite; + LTBOOL bSpriteOnly; + LTBOOL bUseObjectAngle; + LTBOOL bSpriteAdditive; + LTFLOAT fSpriteOffset; + LTFLOAT fMinAngle; + LTFLOAT fMinSpriteAlpha; + LTFLOAT fMaxSpriteAlpha; + LTFLOAT fMinSpriteScale; + LTFLOAT fMaxSpriteScale; + HSTRING hstrSpriteFile; + LTBOOL bBlindingFlare; + LTFLOAT fBlindObjectAngle; + LTFLOAT fBlindCameraAngle; + LTFLOAT fMinBlindScale; + LTFLOAT fMaxBlindScale; +}; + +inline LENSFLARECREATESTRUCT::LENSFLARECREATESTRUCT() +{ + bInSkyBox = LTFALSE; + bCreateSprite = LTFALSE; + bSpriteOnly = LTFALSE; + bUseObjectAngle = LTFALSE; + bBlindingFlare = LTFALSE; + bSpriteAdditive = LTTRUE; + fSpriteOffset = 0.0f; + fMinAngle = 0.0f; + fMinSpriteAlpha = 0.0f; + fMaxSpriteAlpha = 0.0f; + fMinSpriteScale = 0.0f; + fMaxSpriteScale = 0.0f; + fBlindObjectAngle = 0.0f; + fBlindCameraAngle = 0.0f; + fMinBlindScale = 0.0f; + fMaxBlindScale = 0.0f; + hstrSpriteFile = LTNULL; +} + +class CLensFlareFX : public CSpecialFX +{ + public : + + CLensFlareFX() : CSpecialFX() + { + m_hFlare = LTNULL; + } + + ~CLensFlareFX() + { + if (m_hFlare) + { + m_pClientDE->RemoveObject(m_hFlare); + } + + if (m_cs.hstrSpriteFile) + { + m_pClientDE->FreeString(m_cs.hstrSpriteFile); + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_LENSFLARE_ID; } + + protected : + + LENSFLARECREATESTRUCT m_cs; + HOBJECT m_hFlare; +}; + +#endif // __LENS_FLARE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightFX.cpp b/Jack/ClientShellDLL/LightFX.cpp new file mode 100644 index 00000000..f99cfbc8 --- /dev/null +++ b/Jack/ClientShellDLL/LightFX.cpp @@ -0,0 +1,451 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LightFX.cpp +// +// PURPOSE : Glowing Light +// +// CREATED : 02/04/98 +// 7/17/98 - Converted to client SFX. +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include +#include "iltclient.h" +#include "ClientUtilities.h" +#include "LightFX.h" +#include "ClientServerShared.h" +#include "SoundMgr.h" +#include "ClientSoundMgr.h" + +// Defines.... + + +#define DOWNSOUND 0 +#define UPSOUND 1 + +#define PI (LTFLOAT)3.14159 +#define PIx2 (LTFLOAT)PI*2 + +// Waveform values taken from Blood + +// monotonic flicker -- very doom like +static char flicker1[] = { + 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, + 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, +}; + +// organic flicker -- good for torches +static LTFLOAT flicker2[] = { + 1, 2, 4, 2, 3, 4, 3, 2, 0, 0, 1, 2, 4, 3, 2, 0, + 2, 1, 0, 1, 0, 2, 3, 4, 3, 2, 1, 1, 2, 0, 0, 1, + 1, 2, 3, 4, 4, 3, 2, 1, 2, 3, 4, 4, 2, 1, 0, 1, + 0, 0, 0, 0, 1, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, +}; + +// mostly on flicker -- good for flaky fluourescents +static LTFLOAT flicker3[] = { + 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 2, 4, 3, 4, 4, + 4, 4, 2, 1, 3, 3, 3, 4, 3, 4, 4, 4, 4, 4, 2, 4, + 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 1, 0, 1, + 0, 1, 0, 1, 0, 2, 3, 4, 4, 4, 4, 4, 4, 4, 3, 4, +}; + +// mostly off flicker -- good for really flaky fluourescents +static LTFLOAT flicker4[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 3, 0, 1, 0, 1, 0, 4, 4, 4, 4, 4, 2, 0, + 0, 0, 0, 4, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static LTFLOAT strobe[] = { + 64, 64, 64, 48, 36, 27, 20, 15, 11, 9, 6, 5, 4, 3, 2, 2, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +//static int GetWaveValue( int nWave, int theta, int amplitude ) +static LTFLOAT GetWaveValue(uint8 nWaveform, LTFLOAT fMin, LTFLOAT fMax, LTFLOAT fTheta ) +{ + LTFLOAT fReturn = fMax; + + fTheta = (LTFLOAT)fmod(fTheta, PIx2); + + switch (nWaveform) + { + case WAVE_SQUARE: + fReturn = (fTheta <= PI) ? fMin : fMax; + break; + + case WAVE_SAW: + { + if (fTheta < PI) + fReturn = fMin + (fMax - fMin) * fTheta / PI; + else + fReturn = fMin + (fMax - fMin) * (PIx2 - fTheta) / PI; + break; + } + + case WAVE_RAMPUP: + fReturn = fMin + (fMax - fMin) * fTheta / (PIx2); + break; + + case WAVE_RAMPDOWN: + fReturn = fMin + (fMax - fMin) * (PIx2 - fTheta) / (PIx2); + break; + + case WAVE_SINE: + fReturn = fMin + (fMax - fMin) * ((LTFLOAT)sin(fTheta)/2.0f + 0.5f); + break; + + case WAVE_FLICKER1: + { + int index = (int)((fTheta/(PIx2))*63); + fReturn = fMin + (fMax - fMin) * (flicker1[index]); + break; + } + + case WAVE_FLICKER2: + { + int index = (int)((fTheta/(PIx2))*63); + fReturn = fMin + (fMax - fMin) * (flicker2[index]/4.0f); + break; + } + + case WAVE_FLICKER3: + { + int index = (int)((fTheta/(PIx2))*63); + fReturn = fMin + (fMax - fMin) * (flicker3[index]/4.0f); + break; + } + + case WAVE_FLICKER4: + { + int index = (int)((fTheta/(PIx2))*127); + fReturn = fMin + (fMax - fMin) * (flicker4[index]/4.0f); + break; + } + + case WAVE_STROBE: + { + int index = (int)((fTheta/(PIx2))*63); + fReturn = fMin + (fMax - fMin) * (strobe[index]/64.0f); + break; + } + + case WAVE_SEARCH: + { + fTheta *= 2.0f; + if ( fTheta > PIx2 ) + fReturn = fMin; + else + fReturn = fMin + (fMax - fMin) * ((LTFLOAT)-cos(fTheta)/2.0f + 0.5f); + break; + } + } + + return fReturn; +}; + + + + +CLightFX::CLightFX() : CSpecialFX() +{ + m_vColor.Init(255, 255, 255); + m_vOffset.Init(); + + m_fStartTime = -1.0f; + m_fIntensityMin = 0.5f; + m_fIntensityMax = 1.0f; + m_fRadiusMin = 500.0f; + m_fRadiusMax = 0.0f; + m_fLifeTime = -1.0f; + m_fCurrentRadius = 0.0f; + m_fIntensityTime = 0.0f; + m_fRadiusTime = 0.0f; + m_fStartTime = 0.0f; + + m_bUseServerPos = LTFALSE; + m_hstrRampUpSound = LTNULL; + m_hstrRampDownSound = LTNULL; +} + + +CLightFX::~CLightFX() +{ + if (m_pClientDE) + { + if (m_hstrRampUpSound) + { + m_pClientDE->FreeString(m_hstrRampUpSound); + } + if (m_hstrRampDownSound) + { + m_pClientDE->FreeString(m_hstrRampDownSound); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: Init() +// +// PURPOSE: Initialize data members +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) + return LTFALSE; + + LIGHTCREATESTRUCT* pLight = (LIGHTCREATESTRUCT*)psfxCreateStruct; + + VEC_COPY(m_vColor, pLight->vColor); + m_dwLightFlags = pLight->dwLightFlags; + m_fIntensityMin = pLight->fIntensityMin; + m_fIntensityMax = pLight->fIntensityMax; + m_nIntensityWaveform = pLight->nIntensityWaveform; + m_fIntensityFreq = pLight->fIntensityFreq; + m_fIntensityPhase = pLight->fIntensityPhase; + m_fRadiusMin = pLight->fRadiusMin; + m_fRadiusMax = pLight->fRadiusMax; + m_nRadiusWaveform = pLight->nRadiusWaveform; + m_fRadiusFreq = pLight->fRadiusFreq; + m_fRadiusPhase = pLight->fRadiusPhase; + m_hstrRampUpSound = pLight->hstrRampUpSound; + m_hstrRampDownSound = pLight->hstrRampDownSound; + m_vOffset = pLight->vOffset; + + m_fCurrentRadius = m_fRadius = m_fRadiusMin; + + return LTTRUE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX::CreateObject +// +// PURPOSE: Create object associated with the light +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + LTVector vPos; + + LTRotation rRot; + + if (m_hServerObject) + { + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + vPos += m_vOffset; + + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + } + else + { + return LTFALSE; + } + + // Setup the light... + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | m_dwLightFlags; + + createStruct.m_Pos = vPos; + createStruct.m_Rotation = rRot; + + m_hObject = m_pClientDE->CreateObject(&createStruct); + + if (m_hObject) + { + UpdateLightRadius(); + UpdateLightIntensity(); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX::Update +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +LTBOOL CLightFX::Update() +{ + if (!m_pClientDE) return LTFALSE; + + if (m_hServerObject) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + vPos += m_vOffset; + g_pLTClient->SetObjectPos(m_hObject, &vPos); + } + else + { + return LTFALSE; + } + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwFlags); + LTBOOL bOn = ((dwFlags & USRFLG_VISIBLE) != 0); + + if (bOn) + { + if (m_nIntensityWaveform != WAVE_NONE) + UpdateLightIntensity(); + if (m_nRadiusWaveform != WAVE_NONE) + UpdateLightRadius(); + } + else + { + // Its NOT turned on, so reset the start time + // So if there is a duration, then it will start timing when the switch is turned on + m_fStartTime = m_pClientDE->GetTime(); + + m_fRadius = m_fRadiusMin; // Effectively turn light off + SetRadius(m_fRadius); + } + + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, (bOn) ? FLAG_VISIBLE : 0, FLAG_VISIBLE); + return LTTRUE; +} + +//////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////// + + + +// The following are Light Radius related methods ///////////////////////////// + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX:: +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +void CLightFX::UpdateLightRadius() +{ + // Determine a theta between 0 and 2PI + LTFLOAT fTheta = m_pClientDE->GetTime() * m_fRadiusFreq + m_fRadiusPhase; + + LTFLOAT fValue = GetWaveValue(m_nRadiusWaveform, m_fRadiusMin, m_fRadiusMax, fTheta); + + SetRadius(fValue); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX:: +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +void CLightFX::UpdateLightIntensity() +{ + // Determine a theta between 0 and 2PI + LTFLOAT fTheta = m_pClientDE->GetTime() * m_fIntensityFreq + m_fIntensityPhase; + + LTFLOAT fValue = GetWaveValue(m_nIntensityWaveform, m_fIntensityMin, m_fIntensityMax, fTheta); + + SetColor(0.5f + m_vColor.x * fValue, 0.5f + m_vColor.y * fValue, 0.5f + m_vColor.z * fValue); +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX:: +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +void CLightFX::PlayRampSound(int nDirection) +{ + const char *sound = LTNULL; + + // Set the char pointer + if (nDirection == 1 && m_hstrRampUpSound) + { + sound = m_pClientDE->GetStringData(m_hstrRampUpSound); + } + else if (m_hstrRampDownSound) + { + sound = m_pClientDE->GetStringData(m_hstrRampDownSound); + } + + // Play the sound if valid pointer + if (sound && strlen(sound) > 0) + { + LTFLOAT Radius = 1000.0f; + g_pClientSoundMgr->PlaySoundFromObject(m_hObject, sound, Radius, SOUNDPRIORITY_MISC_HIGH); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX:: +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +void CLightFX::SetRadius(LTFLOAT fRadius) +{ + if (fRadius > 10000.0f) fRadius = 10000.0f; + if (fRadius < 0.0f) fRadius = 0.0f; + + m_pClientDE->SetLightRadius(m_hObject, fRadius); + m_fCurrentRadius = fRadius; +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightFX:: +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // +void CLightFX::SetColor(LTFLOAT fRedValue, LTFLOAT fGreenValue, LTFLOAT fBlueValue) +{ + if (fRedValue > 1.0f) fRedValue = 1.0f; + if (fRedValue < 0.0f) fRedValue = 0.0f; + + if (fGreenValue > 1.0f) fGreenValue = 1.0f; + if (fGreenValue < 0.0f) fGreenValue = 0.0f; + + if (fBlueValue > 1.0f) fBlueValue = 1.0f; + if (fBlueValue < 0.0f) fBlueValue = 0.0f; + + m_pClientDE->SetLightColor(m_hObject, fRedValue, fGreenValue, fBlueValue); +} diff --git a/Jack/ClientShellDLL/LightFX.h b/Jack/ClientShellDLL/LightFX.h new file mode 100644 index 00000000..195e159e --- /dev/null +++ b/Jack/ClientShellDLL/LightFX.h @@ -0,0 +1,123 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LightFX.h +// +// PURPOSE : LightFX Inventory Item +// +// CREATED : 02/03/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __LIGHT_FX_H__ +#define __LIGHT_FX_H__ + +#include "SpecialFX.h" +#include "ClientServerShared.h" + + +struct LIGHTCREATESTRUCT : public SFXCREATESTRUCT +{ + LIGHTCREATESTRUCT(); + + LTVector vColor; + LTVector vOffset; + uint32 dwLightFlags; + LTFLOAT fIntensityMin; + LTFLOAT fIntensityMax; + uint8 nIntensityWaveform; + LTFLOAT fIntensityFreq; + LTFLOAT fIntensityPhase; + LTFLOAT fRadiusMin; + LTFLOAT fRadiusMax; + uint8 nRadiusWaveform; + LTFLOAT fRadiusFreq; + LTFLOAT fRadiusPhase; + HSTRING hstrRampUpSound; + HSTRING hstrRampDownSound; +}; + +inline LIGHTCREATESTRUCT::LIGHTCREATESTRUCT() +{ + vColor.Init(); + vOffset.Init(); + dwLightFlags = 0; + fIntensityMin = 0.0f; + fIntensityMax = 0.0f; + nIntensityWaveform = 0; + fIntensityFreq = 0.0f; + fIntensityPhase = 0.0f; + fRadiusMin = 0.0f; + fRadiusMax = 0.0f; + nRadiusWaveform = 0; + fRadiusFreq = 0.0f; + fRadiusPhase = 0.0f; + hstrRampUpSound = LTNULL; + hstrRampDownSound = LTNULL; +} + + +class CLightFX : public CSpecialFX +{ + public : + + CLightFX(); + ~CLightFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_LIGHT_ID; } + + protected: + + void SetRadius(LTFLOAT fRadius); + void SetColor(LTFLOAT fRedValue, LTFLOAT fGreenValue, LTFLOAT fBlueValue); + + virtual void UpdateLightRadius(); + virtual void UpdateLightIntensity(); + virtual void PlayRampSound(int nDirection); + + private : + + // Member Variables + + LTVector m_vColor; // First color to use + LTVector m_vOffset; // Offset relative to server obj + + uint32 m_dwLightFlags; + + LTFLOAT m_fIntensityMin; // How Dark light gets + LTFLOAT m_fIntensityMax; // How Bright light gets + uint8 m_nIntensityWaveform; + LTFLOAT m_fIntensityFreq; + LTFLOAT m_fIntensityPhase; + + uint32 m_nNumRadiusCycles; // Number of times to cycle through + LTFLOAT m_fRadiusMin; // How small light gets + LTFLOAT m_fRadiusMax; // How large light gets + uint8 m_nRadiusWaveform; + LTFLOAT m_fRadiusFreq; + LTFLOAT m_fRadiusPhase; + + LTFLOAT m_fLifeTime; // How long should this light stay around + + LTVector m_vCurrentColor; // Color currently using + LTFLOAT m_fCurrentRadius; // Radius currently using + + LTFLOAT m_fIntensityTime; // Intensity timer + LTFLOAT m_fRadiusTime; // Radius timer + LTFLOAT m_fColorTime; // Color timer + + int m_nCurIntensityState; // What intensity state are we in + int m_nCurRadiusState; // What radius state are we in + + HSTRING m_hstrRampUpSound; // Sounds for RampUp and RampDown + HSTRING m_hstrRampDownSound; + + LTBOOL m_bUseServerPos; // Should we use the server pos? + LTFLOAT m_fStartTime; // When did this light get created + LTFLOAT m_fRadius; +}; + +#endif // __LIGHT_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightGroupFX.cpp b/Jack/ClientShellDLL/LightGroupFX.cpp new file mode 100644 index 00000000..f77157e9 --- /dev/null +++ b/Jack/ClientShellDLL/LightGroupFX.cpp @@ -0,0 +1,97 @@ + +#include "stdafx.h" + +#include "LightGroupFX.h" + +static uint32 s_LG; + +CLightGroupFXMgr::CLightGroupFXMgr() +{ +} + +CLightGroupFXMgr::~CLightGroupFXMgr() +{ +} + +void CLightGroupFXMgr::HandleSFXMsg(ILTMessage_Read *pMsg) +{ + // Get the lightgroup ID + uint32 nLGID = pMsg->Readuint32(); + + // Get the color adjustment + LTVector vColorAdj = pMsg->ReadLTVector(); + + // Change it + if (!ChangeLGColor(nLGID, vColorAdj)) + { + // If we couldn't change it, put it on the list for later processing + m_aWaitingAdjList.push_front(SWaitingAdj(nLGID, vColorAdj)); + } +} + +void CLightGroupFXMgr::Update() +{ + if (m_aWaitingAdjList.empty()) + return; + + // Try to clear items out of our waiting list + TWaitingAdjList::iterator iCurAdj = m_aWaitingAdjList.begin(); + while (iCurAdj != m_aWaitingAdjList.end()) + { + TWaitingAdjList::iterator iNextAdj = iCurAdj; + ++iNextAdj; + if (ChangeLGColor(iCurAdj->m_nID, iCurAdj->m_vAdj)) + m_aWaitingAdjList.erase(iCurAdj); + iCurAdj = iNextAdj; + } +} + + +bool CLightGroupFXMgr::ChangeLGColor(uint32 nID, const LTVector &vAdj) +{ + // Get the light's original color + LTVector vLightColor; + TLGColorMap::iterator iLGBaseColor = m_cColorMap.find(nID); + + s_LG = nID; + + if (iLGBaseColor == m_cColorMap.end()) + { + // Find out what color the engine thinks this lightgroup should be + if (g_pLTClient->GetLightGroupColor(nID, &vLightColor) != LT_OK) + { + // This happens when the client gets the request for the light color + // change before the world has been loaded on the client + return false; + } + m_cColorMap[nID] = vLightColor; + } + else + vLightColor = iLGBaseColor->second; + + // Get the new color + LTVector vNewColor = vLightColor * vAdj; + +// g_pLTClient->SetLightGroupColor(nID, LTVector( 0.0f, 1.0f, 0.0f ) ); + + // Tell the engine + g_pLTClient->SetLightGroupColor(nID, vNewColor); + + return true; +} + +void CLightGroupFXMgr::Clear( ) +{ + // Forget what we were waiting on + m_aWaitingAdjList.clear(); + // Go through our known colors and put them back to their starting values + // Note : This is very important because of the possibility of SFX messages + // coming through between level loads when re-loading the same level. + TLGColorMap::const_iterator iCurLG = m_cColorMap.begin(); + for (; iCurLG != m_cColorMap.end(); ++iCurLG) + { + g_pLTClient->SetLightGroupColor(iCurLG->first, iCurLG->second); + } + // Clear it + m_cColorMap.clear(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightGroupFX.h b/Jack/ClientShellDLL/LightGroupFX.h new file mode 100644 index 00000000..406210a1 --- /dev/null +++ b/Jack/ClientShellDLL/LightGroupFX.h @@ -0,0 +1,44 @@ +////////////////////////////////////////////////////////////////////////////// +// LightGroup FX manager header file + +#ifndef __LIGHTGROUPFX_H__ +#define __LIGHTGROUPFX_H__ + +#pragma warning (disable : 4786) +#include +#include + +class CLightGroupFXMgr +{ +public: + CLightGroupFXMgr(); + ~CLightGroupFXMgr(); + + void HandleSFXMsg(ILTMessage_Read *pMsg); + void Update(); + void Clear(); +private: + bool ChangeLGColor(uint32 nID, const LTVector &vAdj); + + typedef std::map TLGColorMap; + TLGColorMap m_cColorMap; + + struct SWaitingAdj + { + SWaitingAdj() {} + SWaitingAdj(uint32 nID, const LTVector &vAdj) : m_nID(nID), m_vAdj(vAdj) {} + SWaitingAdj(const SWaitingAdj &cOther) : m_nID(cOther.m_nID), m_vAdj(cOther.m_vAdj) {} + SWaitingAdj &operator=(const SWaitingAdj &cOther) { + m_nID = cOther.m_nID; + m_vAdj = cOther.m_vAdj; + return *this; + } + uint32 m_nID; + LTVector m_vAdj; + }; + + typedef std::list TWaitingAdjList; + TWaitingAdjList m_aWaitingAdjList; +}; + +#endif //__LIGHTGROUPFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightScaleMgr.cpp b/Jack/ClientShellDLL/LightScaleMgr.cpp new file mode 100644 index 00000000..13bbe995 --- /dev/null +++ b/Jack/ClientShellDLL/LightScaleMgr.cpp @@ -0,0 +1,99 @@ +#include "stdafx.h" +#include "iltclient.h" +#include "LightScaleMgr.h" + +//the vector that indicates that a light scale is not used +static const LTVector g_vInvalidLightScale(-1.0f, -1.0f, -1.0f); + +CLightScaleMgr::CLightScaleMgr() +{ + for(uint32 nCurrType = 0; nCurrType < eNumLightScaleTypes; nCurrType++) + { + m_vLightScales[nCurrType] = g_vInvalidLightScale; + } +} + +CLightScaleMgr::~CLightScaleMgr() +{ +} + + +LTBOOL CLightScaleMgr::Init() +{ + ClearAllLightScales(); + + return LTTRUE; +} + +void CLightScaleMgr::Term() +{ + ClearAllLightScales(); +} + +void CLightScaleMgr::SetLightScale (const LTVector& vColor, ELightScaleType eType) +{ + assert((eType < eNumLightScaleTypes) && "Invalid light scale type"); + + //setup this scale + m_vLightScales[eType] = vColor; + + // set the correct global light scale + SetLightScale(); +} + +void CLightScaleMgr::ClearLightScale (ELightScaleType eType) +{ + assert((eType < eNumLightScaleTypes) && "Invalid light scale type"); + m_vLightScales[eType] = g_vInvalidLightScale; + + SetLightScale(); +} + +void CLightScaleMgr::SetLightScale() const +{ + //look for effects in the order in which they are declared + LTVector vTintColor(1.0f, 1.0f, 1.0f); + + bool bAnyEnabled = false; + + for(uint32 nCurrType = 0; nCurrType < eNumLightScaleTypes; nCurrType++) + { + if(IsEnabled(static_cast(nCurrType))) + { + vTintColor = m_vLightScales[nCurrType]; + break; + } + } + + + g_pLTClient->SetGlobalLightScale(&vTintColor); +} + + +void CLightScaleMgr::ClearAllLightScales () +{ + for(uint32 nCurrType = 0; nCurrType < eNumLightScaleTypes; nCurrType++) + { + m_vLightScales[nCurrType] = g_vInvalidLightScale; + } + + SetLightScale(); +} + +bool CLightScaleMgr::IsEnabled(ELightScaleType eType) const +{ + return !m_vLightScales[eType].NearlyEquals(g_vInvalidLightScale, 0.01f); +} + +void CLightScaleMgr::Enable() const +{ + //Just install our light scale + SetLightScale(); +} + +void CLightScaleMgr::Disable() const +{ + //reset our light scale to off + LTVector vTintColor(1.0f, 1.0f, 1.0f); + g_pLTClient->SetGlobalLightScale(&vTintColor); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightScaleMgr.h b/Jack/ClientShellDLL/LightScaleMgr.h new file mode 100644 index 00000000..a438b90a --- /dev/null +++ b/Jack/ClientShellDLL/LightScaleMgr.h @@ -0,0 +1,54 @@ +#ifndef __LIGHTSCALEMGR_H +#define __LIGHTSCALEMGR_H + +#include "iltclient.h" + +class CLightScaleMgr +{ +public: + + //the different types of light scales we support, the order that they + //are listed in here is the priority, with the first items having + //highest priority + enum ELightScaleType + { + eLightScaleDamage, + eLightScaleEnvironment, + + //this value must come last + eNumLightScaleTypes + }; + + CLightScaleMgr(); + ~CLightScaleMgr(); + + //called to reset all the items in the light scale manager + LTBOOL Init(); + void Term(); + + void Enable() const; + void Disable() const; + + //sets the light scale for a particular type + void SetLightScale (const LTVector& vColor, ELightScaleType eType); + + //clears the light scale so any light scales of lower priority can be displayed + void ClearLightScale (ELightScaleType eType); + + //clears all light scales + void ClearAllLightScales (); + +private: + + //installs the highest priority active light scale + void SetLightScale() const; + + //determines if the particular light scale type is enabled + bool IsEnabled(ELightScaleType eType) const; + + //the current values of our light scales + LTVector m_vLightScales[eNumLightScaleTypes]; + +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/LightningFX.cpp b/Jack/ClientShellDLL/LightningFX.cpp new file mode 100644 index 00000000..86cac867 --- /dev/null +++ b/Jack/ClientShellDLL/LightningFX.cpp @@ -0,0 +1,352 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LightningFX.cpp +// +// PURPOSE : Lightning special FX - Implementation +// +// CREATED : 4/15/99 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LightningFX.h" +#include "iltclient.h" +#include "SFXMgr.h" +#include "GameClientShell.h" +#include "DynamicLightFX.h" +#include "GameButes.h" +#include "VarTrack.h" +#include "ClientButeMgr.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::Init +// +// PURPOSE: Init the lightning fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightningFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Read in the init info from the message... + + LFXCREATESTRUCT lcs; + + lcs.hServerObj = hServObj; + lcs.lfx.hServerObj = hServObj; + + lcs.lfx.vStartPos = pMsg->ReadLTVector(); + lcs.lfx.vEndPos = pMsg->ReadLTVector(); + lcs.vLightColor = pMsg->ReadLTVector(); + + lcs.lfx.vInnerColorStart = pMsg->ReadLTVector(); + lcs.lfx.vInnerColorEnd = pMsg->ReadLTVector(); + lcs.lfx.vOuterColorStart = pMsg->ReadLTVector(); + lcs.lfx.vOuterColorEnd = pMsg->ReadLTVector(); + + lcs.lfx.fAlphaStart = pMsg->Readfloat(); + lcs.lfx.fAlphaEnd = pMsg->Readfloat(); + + lcs.lfx.fMinWidth = pMsg->Readfloat(); + lcs.lfx.fMaxWidth = pMsg->Readfloat(); + lcs.lfx.fLifeTime = pMsg->Readfloat(); + lcs.lfx.fAlphaLifeTime = pMsg->Readfloat(); + lcs.fMinDelayTime = pMsg->Readfloat(); + lcs.fMaxDelayTime = pMsg->Readfloat(); + lcs.lfx.fPerturb = pMsg->Readfloat(); + lcs.fLightRadius = pMsg->Readfloat(); + lcs.fSoundRadius = pMsg->Readfloat(); + lcs.lfx.nWidthStyle = pMsg->Readuint8(); + lcs.lfx.nNumSegments = pMsg->Readuint8(); + lcs.bOneTimeOnly = (LTBOOL) pMsg->Readuint8(); + lcs.bDynamicLight = (LTBOOL) pMsg->Readuint8(); + lcs.bPlaySound = (LTBOOL) pMsg->Readuint8(); + lcs.lfx.bAdditive = (LTBOOL) pMsg->Readuint8(); + lcs.lfx.bMultiply = (LTBOOL) pMsg->Readuint8(); + + m_hstrTexture = pMsg->ReadHString(); + + return Init(&lcs); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::Init +// +// PURPOSE: Init the lightning fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightningFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + LFXCREATESTRUCT* pLFX = (LFXCREATESTRUCT*)psfxCreateStruct; + + m_cs = *pLFX; + + if (m_hstrTexture) + { + m_cs.lfx.pTexture = g_pLTClient->GetStringData(m_hstrTexture); + } + + m_szThunderStr[0] = LTNULL; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::CreateObject +// +// PURPOSE: Create object associated the object +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightningFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + // Validate our init info... + + if (m_cs.lfx.nNumSegments < 1) return LTFALSE; + + + // Get the thunder sound path if we need to play the sound... + + if (m_cs.bPlaySound) + { + g_pClientButeMgr->GetWeatherAttributeString(WEATHER_BUTE_THUNDERSOUND,m_szThunderStr,sizeof(m_szThunderStr)); + } + + + // Set up the lightning... + + return Setup(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::Setup +// +// PURPOSE: Setup the line used to draw lightning +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightningFX::Setup() +{ + // Figure out the position based on the object's current pos... + + if (m_hServerObject) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + m_cs.lfx.vStartPos = vPos; + } + + // Create our poly-line for the lightning... + + if (m_Line.HasBeenDrawn()) + { + m_Line.ReInit(&m_cs.lfx); + } + else + { + m_Line.Init(&m_cs.lfx); + m_Line.CreateObject(g_pLTClient); + } + + // Figure out when to start/stop... + + LTFLOAT fTime = g_pLTClient->GetTime(); + m_fStartTime = fTime + GetRandom(m_cs.fMinDelayTime, m_cs.fMaxDelayTime); + m_fEndTime = m_fStartTime + m_cs.lfx.fLifeTime; + + // Calculate our mid point... + + LTVector vPos = m_cs.lfx.vStartPos; + LTVector vDir = (m_cs.lfx.vEndPos - m_cs.lfx.vStartPos); + float fDist = vDir.Mag(); + float fTotalDist = fDist; + + vDir.Normalize(); + + m_vMidPos = (m_cs.lfx.vStartPos + (vDir * fDist/2.0f)); + + // Create the dynamic light if necessary... + + if (m_cs.bDynamicLight && !m_hLight) + { + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_DONTLIGHTBACKFACING; + createStruct.m_Pos = m_vMidPos; + + m_hLight = m_pClientDE->CreateObject(&createStruct); + if (!m_hLight) return LTFALSE; + + m_pClientDE->SetLightColor(m_hLight, m_cs.vLightColor.x/255.0f, + m_cs.vLightColor.y/255.0f, m_cs.vLightColor.z/255.0f); + m_pClientDE->SetLightRadius(m_hLight, m_cs.fLightRadius); + } + + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::HandleFirstTime +// +// PURPOSE: Handle the first time drawing... +// +// ----------------------------------------------------------------------- // + +void CLightningFX::HandleFirstTime() +{ + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + if (m_cs.bPlaySound) + { + float fWaitTime = 0.0f; + m_fPlaySoundTime = g_pLTClient->GetTime() + fWaitTime; + m_bPlayedSound = LTFALSE; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::UpdateSound +// +// PURPOSE: Handle playing the sound +// +// ----------------------------------------------------------------------- // + +void CLightningFX::UpdateSound() +{ + if (m_bPlayedSound || !m_cs.bPlaySound || (strlen(m_szThunderStr) < 1)) return; + + if (m_fPlaySoundTime <= g_pLTClient->GetTime()) + { + m_bPlayedSound = LTTRUE; + + g_pClientSoundMgr->PlaySoundFromPos(m_vMidPos, m_szThunderStr, + m_cs.fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLightningFX::Update +// +// PURPOSE: Update the lightning +// +// ----------------------------------------------------------------------- // + +LTBOOL CLightningFX::Update() +{ + if (m_bWantRemove) return LTFALSE; + + LTFLOAT fTime = g_pLTClient->GetTime(); + + // Hide/show lightning if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + m_Line.SetFlags(m_Line.GetFlags() & ~FLAG_VISIBLE); + + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, 0, FLAG_VISIBLE); + } + + return LTTRUE; + } + else + { + m_Line.SetFlags(m_Line.GetFlags() | FLAG_VISIBLE); + + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + } + + m_Line.Update(); + + // See if it is time to act... + + if (fTime > m_fEndTime) + { + if (m_cs.bOneTimeOnly) + { + return LTFALSE; + } + else + { + Setup(); + m_bFirstTime = LTTRUE; + } + } + + if (fTime < m_fStartTime) + { + m_Line.SetFlags(m_Line.GetFlags() & ~FLAG_VISIBLE); + + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, 0, FLAG_VISIBLE); + } + + return LTTRUE; // not yet... + } + else + { + m_Line.SetFlags(m_Line.GetFlags() | FLAG_VISIBLE); + } + + + // Do first time stuff... + + if (m_bFirstTime) + { + m_bFirstTime = LTFALSE; + HandleFirstTime(); + } +/* else + { + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, 0, FLAG_VISIBLE); + } + } +*/ + // Update playing the sound... + + UpdateSound(); + + return LTTRUE; +} + diff --git a/Jack/ClientShellDLL/LightningFX.h b/Jack/ClientShellDLL/LightningFX.h new file mode 100644 index 00000000..1d923839 --- /dev/null +++ b/Jack/ClientShellDLL/LightningFX.h @@ -0,0 +1,132 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LightningFX.h +// +// PURPOSE : Lightning special fx class - Definition +// +// CREATED : 4/15/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LIGHTNING_FX_H__ +#define __LIGHTNING_FX_H__ + +#include "SpecialFX.h" +#include "SoundMgr.h" +#include "SFXMsgIds.h" +#include "TemplateList.h" +#include "PolyLineFX.h" + +struct LFXCREATESTRUCT : public SFXCREATESTRUCT +{ + LFXCREATESTRUCT(); + + PLFXCREATESTRUCT lfx; + + LTVector vLightColor; + LTBOOL bOneTimeOnly; + LTBOOL bDynamicLight; + LTBOOL bPlaySound; + LTFLOAT fLightRadius; + LTFLOAT fSoundRadius; + LTFLOAT fMinDelayTime; + LTFLOAT fMaxDelayTime; +}; + +inline LFXCREATESTRUCT::LFXCREATESTRUCT() +{ + vLightColor.Init(); + + fLightRadius = 0.0f; + fSoundRadius = 0.0f; + bDynamicLight = LTFALSE; + bPlaySound = LTFALSE; + bOneTimeOnly = LTFALSE; + fMinDelayTime = 0.0f; + fMaxDelayTime = 0.0f; +} + +struct PolyVert +{ + PolyVert() + { + vPos.Init(); + fOffset = 0.0f; + fPosOffset = 0.0f; + } + + LTVector vPos; + LTFLOAT fOffset; + LTFLOAT fPosOffset; +}; + +typedef CTList PolyVertList; + + +class CLightningFX : public CSpecialFX +{ + public : + + CLightningFX() : CSpecialFX() + { + m_hLight = LTNULL; + m_fStartTime = 0.0f; + m_fEndTime = 0.0f; + m_bFirstTime = LTTRUE; + m_bPlayedSound = LTTRUE; + m_fPlaySoundTime = 0.0f; + + m_vMidPos.Init(); + + m_hstrTexture = LTNULL; + } + + ~CLightningFX() + { + if (g_pLTClient) + { + if (m_hLight) + { + g_pLTClient->RemoveObject(m_hLight); + } + + if (m_hstrTexture) + { + g_pLTClient->FreeString(m_hstrTexture); + } + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_LIGHTNING_ID; } + + protected : + + LFXCREATESTRUCT m_cs; + + LTFLOAT m_fStartTime; + LTFLOAT m_fEndTime; + LTVector m_vMidPos; + + LTFLOAT m_fPlaySoundTime; + LTBOOL m_bPlayedSound; + LTBOOL m_bFirstTime; + char m_szThunderStr[128]; + + HOBJECT m_hLight; + HSTRING m_hstrTexture; + + CPolyLineFX m_Line; // Lightning + + LTBOOL Setup(); + void HandleFirstTime(); + void UpdateSound(); +}; + +#endif // __LIGHTNING_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LineSystemFX.cpp b/Jack/ClientShellDLL/LineSystemFX.cpp new file mode 100644 index 00000000..f13e4af3 --- /dev/null +++ b/Jack/ClientShellDLL/LineSystemFX.cpp @@ -0,0 +1,591 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LineSystemFX.cpp +// +// PURPOSE : LineSystem special FX - Implementation +// +// CREATED : 4/12/99 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LineSystemFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +#define MAX_LINES_PER_SECOND 1000 // Max lines to be created in a second +#define MAX_TOTAL_LINES 4000 // Max lines total (all systems) +#define MAX_SYSTEM_LINES 2000 // Max lines per system +#define MAX_VIEW_DIST_SQR (10000*10000) // Max global distance to add lines + +extern CGameClientShell* g_pGameClientShell; +extern LTVector g_vWorldWindVel; + +static VarTrack s_cvarTweak; + +int CLineSystemFX::m_snTotalLines = 0; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::CLineSystemFX +// +// PURPOSE: Construct +// +// ----------------------------------------------------------------------- // + +CLineSystemFX::CLineSystemFX() : CBaseLineSystemFX() +{ + m_bFirstUpdate = LTTRUE; + m_bContinuous = LTFALSE; + + m_fLastTime = 0.0f; + m_fNextUpdate = 0.01f; + + m_RemoveLineFn = LTNULL; + m_pUserData = LTNULL; + + m_fMaxViewDistSqr = 1000.0f*1000.0f; + m_nTotalNumLines = 0; + m_pLines = LTNULL; + + m_vStartOffset.Init(); + m_vEndOffset.Init(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::~CLineSystemFX +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CLineSystemFX::~CLineSystemFX() +{ + if (m_pLines) + { + for (int i=0; i < m_nTotalNumLines; i++) + { + RemoveLine(i); + } + + debug_deletea(m_pLines); + m_pLines = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::Init +// +// PURPOSE: Init the line system +// +// ----------------------------------------------------------------------- // + +LTBOOL CLineSystemFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseLineSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + // Set up our creation struct... + + LSCREATESTRUCT* pLS = (LSCREATESTRUCT*)psfxCreateStruct; + m_cs = *pLS; + + + // Set our (parent's) flags... + + m_vPos = m_cs.vPos; + + + // Set our max viewable distance... + + m_fMaxViewDistSqr = m_cs.fViewDist*m_cs.fViewDist; + m_fMaxViewDistSqr = m_fMaxViewDistSqr > MAX_VIEW_DIST_SQR ? MAX_VIEW_DIST_SQR : m_fMaxViewDistSqr; + + + // Adjust velocities based on global wind values... + + m_cs.vMinVel += g_vWorldWindVel; + m_cs.vMaxVel += g_vWorldWindVel; + + + // Adjust slope of lines based on global wind values... + + m_vStartOffset.y = m_cs.fLineLength / 2.0f; + m_vEndOffset.y = -m_cs.fLineLength / 2.0f; + + float fVal = (float)fabs(m_cs.vMaxVel.y); + + if (fVal > 0.0) + { + m_vEndOffset.x = (m_cs.fLineLength * (g_vWorldWindVel.x / fVal)); + } + + if (fVal > 0.0) + { + m_vEndOffset.z = (m_cs.fLineLength * (g_vWorldWindVel.z / fVal)); + } + + m_bContinuous = (m_cs.fBurstWait <= 0.001f); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CLineSystemFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + LTBOOL bRet = CBaseLineSystemFX::CreateObject(pClientDE); + + if (bRet && m_hObject && m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + } + } + + + // Create lines... + + m_nTotalNumLines = int(m_cs.fLinesPerSecond * m_cs.fLineLifetime); + if (m_nTotalNumLines > MAX_SYSTEM_LINES) + { + m_nTotalNumLines = MAX_SYSTEM_LINES; + } + + m_pLines = debug_newa(LSLineStruct, m_nTotalNumLines); + + SetupSystem(); + + s_cvarTweak.Init(g_pLTClient, "TweakLines", NULL, 0.0f); + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::Update +// +// PURPOSE: Update the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CLineSystemFX::Update() +{ + if (!m_hObject || !m_pClientDE || m_bWantRemove) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Hide/show the line system if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + m_fLastTime = fTime; + return LTTRUE; + } + else + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + // Debugging aid... + + if (s_cvarTweak.GetFloat() > 0) + { + TweakSystem(); + } + + + if (m_bFirstUpdate) + { + m_fLastTime = fTime; + m_bFirstUpdate = LTFALSE; + } + else + { + UpdateSystem(); + } + + // Make sure it is time to update... + + if (fTime < m_fLastTime + m_fNextUpdate) + { + return LTTRUE; + } + + + // Ok, how many to add this frame.... + + float fTimeDelta = fTime - m_fLastTime; + + // Make sure delta time is no less than 15 frames/sec if we're + // continuously adding lines... + + if (m_bContinuous) + { + fTimeDelta = fTimeDelta > 0.0666f ? 0.0666f : fTimeDelta; + } + + int nToAdd = (int) floor(m_cs.fLinesPerSecond * fTimeDelta); + nToAdd = LTMIN(nToAdd, (int)(MAX_LINES_PER_SECOND * fTimeDelta)); + + + // Add new lines... + + AddLines(nToAdd); + + + // Determine when next update should occur... + + if (m_cs.fBurstWait > 0.001f) + { + m_fNextUpdate = m_cs.fBurstWait * GetRandom(m_cs.fBurstWaitMin, m_cs.fBurstWaitMax); + } + else + { + m_fNextUpdate = 0.001f; + } + + m_fLastTime = fTime; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::UpdateSystem +// +// PURPOSE: Update the lines in the system +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::UpdateSystem() +{ + if (!m_pLines) return; + + // Make sure delta time is no less than 15 frames/sec... + + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + fDeltaTime = fDeltaTime > 0.0666f ? 0.0666f : fDeltaTime; + + // Update all the lines... + + LTLine line; + + for (int i=0; i < m_nTotalNumLines; i++) + { + if (m_pLines[i].hLTLine) + { + m_pClientDE->GetLineInfo(m_pLines[i].hLTLine, &line); + + line.m_Points[0].m_Pos += (m_pLines[i].vVel * fDeltaTime); + line.m_Points[1].m_Pos += (m_pLines[i].vVel * fDeltaTime); + + m_pClientDE->SetLineInfo(m_pLines[i].hLTLine, &line); + m_pLines[i].fLifetime -= fDeltaTime; + + // Remove dead lines... + + if (m_pLines[i].fLifetime <= 0.0f) + { + if (m_RemoveLineFn) + { + m_RemoveLineFn(m_pUserData, &(m_pLines[i])); + } + + RemoveLine(i); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::SetupSystem +// +// PURPOSE: Setup the system (add ALL possible lines) +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::SetupSystem() +{ + if (!m_hServerObject) return; + + if (m_bContinuous) + { + for (int i=0; i < m_nTotalNumLines; i++) + { + if (m_snTotalLines < MAX_TOTAL_LINES) + { + AddLine(i, LTTRUE); + } + else + { + break; + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::AddLines +// +// PURPOSE: Add lines to the system +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::AddLines(int nToAdd) +{ + if (!m_hServerObject || !m_pLines) return; + + int nNumAdded = 0; + + for (int i=0; nNumAdded < nToAdd && i < m_nTotalNumLines; i++) + { + if (!m_pLines[i].hLTLine || m_pLines[i].fLifetime <= 0.0f) + { + if (m_snTotalLines < MAX_TOTAL_LINES) + { + AddLine(i); + nNumAdded++; + } + else + { + break; + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::AddLine +// +// PURPOSE: Add a line to the system +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::AddLine(int nIndex, LTBOOL bSetInitialPos) +{ + if (!m_hServerObject || !m_pLines || nIndex < 0 || nIndex >= m_nTotalNumLines) return; + + LTVector vPos, vCamPos, vObjPos, vDist, vVel; + LTLine line; + + g_pLTClient->GetObjectPos(m_hServerObject, &vObjPos); + + // Get the camera's position...If the camera is too far away from + // the line being added, don't add it :) + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + vCamPos.y = 0.0f; // Only take x/z into account... + + vPos.x = GetRandom(-m_cs.vDims.x, m_cs.vDims.x); + vPos.y = GetRandom(-m_cs.vDims.y, m_cs.vDims.y); + vPos.z = GetRandom(-m_cs.vDims.z, m_cs.vDims.z); + + LTFLOAT fLifetime = m_cs.fLineLifetime; + + vVel.x = GetRandom(m_cs.vMinVel.x, m_cs.vMaxVel.x); + vVel.y = GetRandom(m_cs.vMinVel.y, m_cs.vMaxVel.y); + vVel.z = GetRandom(m_cs.vMinVel.z, m_cs.vMaxVel.z); + + + // If we need to set the initial line pos... + + if (bSetInitialPos) + { + fLifetime = GetRandom(0.0f, m_cs.fLineLifetime); + + if (fLifetime >= 0.0f) + { + vPos += (vVel * (m_cs.fLineLifetime - fLifetime)); + } + else + { + fLifetime = m_cs.fLineLifetime; + } + } + + + vObjPos += vPos; + vObjPos.y = 0.0f; // Only take x/z into account + + vDist = vCamPos - vObjPos; + + if (vDist.MagSqr() < m_fMaxViewDistSqr || bSetInitialPos) + { + line.m_Points[0].m_Pos = vPos + m_vStartOffset; + line.m_Points[0].r = m_cs.vStartColor.x; + line.m_Points[0].g = m_cs.vStartColor.y; + line.m_Points[0].b = m_cs.vStartColor.z; + line.m_Points[0].a = m_cs.fStartAlpha; + + line.m_Points[1].m_Pos = vPos + m_vEndOffset; + line.m_Points[1].r = m_cs.vEndColor.x; + line.m_Points[1].g = m_cs.vEndColor.y; + line.m_Points[1].b = m_cs.vEndColor.z; + line.m_Points[1].a = m_cs.fEndAlpha; + + if (m_pLines[nIndex].hLTLine) + { + m_pClientDE->SetLineInfo(m_pLines[nIndex].hLTLine, &line); + } + else + { + m_pLines[nIndex].hLTLine = m_pClientDE->AddLine(m_hObject, &line); + + m_snTotalLines++; + } + + m_pLines[nIndex].fLifetime = fLifetime; + m_pLines[nIndex].vVel = vVel; + } + else + { + RemoveLine(nIndex); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::RemoveLine +// +// PURPOSE: Remove the line from the system +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::RemoveLine(int nIndex) +{ + if (!m_pLines || nIndex < 0 || nIndex >= m_nTotalNumLines) return; + + if (m_pLines[nIndex].hLTLine) + { + m_pClientDE->RemoveLine(m_hObject, m_pLines[nIndex].hLTLine); + m_pLines[nIndex].hLTLine = LTNULL; + m_snTotalLines--; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLineSystemFX::TweakSystem +// +// PURPOSE: Tweak the particle system +// +// ----------------------------------------------------------------------- // + +void CLineSystemFX::TweakSystem() +{ + LTFLOAT fIncValue = 0.01f; + LTBOOL bChanged = LTFALSE; + + LTVector vScale; + vScale.Init(); + + uint32 dwPlayerFlags = g_pPlayerMgr->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .5f; + } + + // Move Red up/down... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + fIncValue = dwPlayerFlags & BC_CFLG_FORWARD ? fIncValue : -fIncValue; + + m_cs.vMinVel.y += (LTFLOAT)(fIncValue * 101.0); + m_cs.vMaxVel.y += (LTFLOAT)(fIncValue * 101.0); + //m_cs.vColor1 + //m_cs.vColor2 + + bChanged = LTTRUE; + } + + + // Add/Subtract number of lines per second + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + m_cs.fLinesPerSecond += (LTFLOAT)(fIncValue * 101.0); + + m_cs.fLinesPerSecond = m_cs.fLinesPerSecond < 0.0f ? 0.0f : + (m_cs.fLinesPerSecond > MAX_LINES_PER_SECOND ? MAX_LINES_PER_SECOND : m_cs.fLinesPerSecond); + + bChanged = LTTRUE; + } + + + // Change line length... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + + // Adjust length and slope of lines... + + m_cs.fLineLength += (fIncValue*2.0f); + + m_vStartOffset.y = m_cs.fLineLength / 2.0f; + m_vEndOffset.y = -m_cs.fLineLength / 2.0f; + + float fVal = (float)fabs(m_cs.vMaxVel.y); + + if (fVal > 0.0) + { + m_vEndOffset.x = (m_cs.fLineLength * (g_vWorldWindVel.x / fVal)); + } + + if (fVal > 0.0) + { + m_vEndOffset.z = (m_cs.fLineLength * (g_vWorldWindVel.z / fVal)); + } + + bChanged = LTTRUE; + } + + + if (bChanged) + { + g_pGameClientShell->CSPrint("Lines per second: %.2f", m_cs.fLinesPerSecond); + g_pGameClientShell->CSPrint("Line length: %.2f", m_vStartOffset.y - m_vEndOffset.y); + g_pGameClientShell->CSPrint("Velocity: %.2f", m_cs.vMinVel.y); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LineSystemFX.h b/Jack/ClientShellDLL/LineSystemFX.h new file mode 100644 index 00000000..eebf7165 --- /dev/null +++ b/Jack/ClientShellDLL/LineSystemFX.h @@ -0,0 +1,120 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LineSystemFX.h +// +// PURPOSE : LineSystem special fx class - Definition +// +// CREATED : 10/21/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __LINE_SYSTEM_FX_H__ +#define __LINE_SYSTEM_FX_H__ + +#include "BaseLineSystemFX.h" + +struct LSCREATESTRUCT : public SFXCREATESTRUCT +{ + LSCREATESTRUCT(); + + LTBOOL bContinuous; + LTVector vStartColor; + LTVector vEndColor; + LTVector vDims; + LTVector vMinVel; + LTVector vMaxVel; + LTVector vPos; + LTFLOAT fStartAlpha; + LTFLOAT fEndAlpha; + LTFLOAT fBurstWait; + LTFLOAT fBurstWaitMin; + LTFLOAT fBurstWaitMax; + LTFLOAT fLinesPerSecond; + LTFLOAT fLineLifetime; + LTFLOAT fLineLength; + LTFLOAT fViewDist; +}; + +inline LSCREATESTRUCT::LSCREATESTRUCT() +{ + vStartColor.Init(); + vEndColor.Init(); + vDims.Init(); + vMinVel.Init(); + vMaxVel.Init(); + vPos.Init(); + fStartAlpha = 0.0f; + fEndAlpha = 0.0f; + fBurstWait = 0.0f; + fLinesPerSecond = 0.0f; + fLineLifetime = 0.0f; + fLineLength = 0.0f; + fViewDist = 0.0f; + + fBurstWaitMin = 0.01f; + fBurstWaitMax = 1.0f; + + bContinuous = LTTRUE; +} + +struct LSLineStruct +{ + LSLineStruct(); + + HLTLINE hLTLine; + float fLifetime; + LTVector vVel; +}; + +inline LSLineStruct::LSLineStruct() +{ + memset(this, 0, sizeof(LSLineStruct)); +} + +typedef void (*RemoveLineFn)(void *pUserData, LSLineStruct* pLine); + +class CLineSystemFX : public CBaseLineSystemFX +{ + public : + + CLineSystemFX(); + ~CLineSystemFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + void SetRemoveLineFn(RemoveLineFn Fn, void* pUserData) { m_RemoveLineFn = Fn; m_pUserData = pUserData; } + + protected : + + LSCREATESTRUCT m_cs; // Holds all initialization data + + LTBOOL m_bFirstUpdate; // Is this the first update + LTFLOAT m_fNextUpdate; // Time between updates + LTFLOAT m_fLastTime; // When was the last time + double m_fMaxViewDistSqr; // Max distance lines are added (from camera) + + LTVector m_vStartOffset; // Top of line offset + LTVector m_vEndOffset; // Bottom of line offset + + RemoveLineFn m_RemoveLineFn; // Function to be called when a line is removed + void* m_pUserData; // Data passed to RemoveLineFn + + static int m_snTotalLines; // Total number of lines in all CLineSystemFX + + LSLineStruct* m_pLines; // Array of lines in system + int m_nTotalNumLines; // Num of lines in array + + LTBOOL m_bContinuous; // Do we continually add lines + + void UpdateSystem(); + void AddLines(int nToAdd); + void AddLine(int nIndex, LTBOOL bSetIntialPos=LTFALSE); + void RemoveLine(int nIndex); + void SetupSystem(); + + void TweakSystem(); +}; + +#endif // __LINE_SYSTEM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/LoadingScreen.cpp b/Jack/ClientShellDLL/LoadingScreen.cpp new file mode 100644 index 00000000..79cfe781 --- /dev/null +++ b/Jack/ClientShellDLL/LoadingScreen.cpp @@ -0,0 +1,1047 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LoadingScreen.cpp +// +// PURPOSE : Background-thread loading screen encapsulation class +// +// CREATED : 2000 +// +// (c) 2000-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "LoadingScreen.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "WinUtil.h" +#include "BaseScreen.h" +#include "MissionMgr.h" +#include "MissionButeMgr.h" +#include "FXButeMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ScreenPostload.h" +#include "clientres.h" + +extern CGameClientShell* g_pGameClientShell; + +CLoadingScreen::CLoadingScreen() : + m_eCurState(STATE_NONE) +{ + // Create the event handles + m_hEventEnd = CreateEvent(NULL, TRUE, FALSE, NULL); + m_hEventThreadRunning = CreateEvent(NULL, TRUE, FALSE, NULL); + + m_nOldFarZ = 10000; + m_bOldFogEnable = LTFALSE; + m_pMissionNameStr = LTNULL; + m_pLevelNameStr = LTNULL; + m_pBriefingStr = LTNULL; + m_pHelpStr = LTNULL; + + m_bReadLayout = false; + + m_nDefaultTitleFont = 0; + m_nDefaultTitleFontSize = 0; + m_nDefaultTitleColor = 0; + + m_nDefaultBriefingWidth = 0; + m_nDefaultBriefingFont = 0; + m_nDefaultBriefingFontSize = 0; + m_nDefaultBriefingColor = 0; + + m_nDefaultHelpWidth = 0; + m_nDefaultHelpFont = 0; + m_nDefaultHelpFontSize = 0; + m_nDefaultHelpColor = 0; + + InitializeCriticalSection(&m_MissionUpdate); + +} + +CLoadingScreen::~CLoadingScreen() +{ + // Terminate the object, just in case... + Term(); + + DeleteObject(m_hEventEnd); + DeleteObject(m_hEventThreadRunning); + + DeleteCriticalSection(&m_MissionUpdate); + +} + +void CLoadingScreen::CreateScaleFX(char *szFXName) +{ + if( m_pRenderScreen ) + return; + + CScaleFX* pScaleFX = g_pFXButeMgr->GetScaleFX(szFXName); + if (pScaleFX) + { + CBaseScaleFX *pSFX = debug_new(CBaseScaleFX); + if (!g_pFXButeMgr->CreateScaleFX(pScaleFX,m_vPos, m_vF, LTNULL, &m_rRot, pSFX)) + { + debug_delete(pSFX); + return; + } + m_SFXArray.Add(pSFX); + g_pInterfaceMgr->AddInterfaceSFX(pSFX, IFX_NORMAL); + + //adjust the object's position based on screen res + HOBJECT hSFX = pSFX->GetObject(); + if (hSFX) + { + LTVector vNewPos; + g_pLTClient->GetObjectPos(hSFX, &vNewPos); + vNewPos.z; + g_pLTClient->SetObjectPos(hSFX, &vNewPos); + } + } +} + +void CLoadingScreen::CreateInterfaceSFX() +{ + if( m_pRenderScreen ) + return; + + HOBJECT hCamera = g_pInterfaceMgr->GetInterfaceCamera(); + if (!hCamera) return; + + g_pLTClient->GetObjectPos(hCamera, &m_vPos); + g_pLTClient->GetObjectRotation(hCamera, &m_rRot); + m_vU = m_rRot.Up(); + m_vR = m_rRot.Right(); + m_vF = m_rRot.Forward(); + + int n = 0; + char szTagName[30]; + char szAttName[30]; + char szFXName[128]; + + sprintf(szAttName,"Light%d",n); + SAFE_STRCPY(szTagName,m_layout.c_str()); + if (!g_pLayoutMgr->Exist(szTagName)) + SAFE_STRCPY(szTagName,"LoadScreenDefault"); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CreateLightFX(szFXName); + } + + n++; + sprintf(szAttName,"Light%d",n); + + } + + + n = 0; + sprintf(szAttName,"LoadScale%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CreateScaleFX(szFXName); + } + + n++; + sprintf(szAttName,"LoadScale%d",n); + + } + +} + +void CLoadingScreen::RemoveInterfaceSFX() +{ + g_pInterfaceMgr->RemoveInterfaceFX(); + + while (m_SFXArray.GetSize() > 0) + { + CSpecialFX *pSFX = m_SFXArray[0]; + g_pInterfaceMgr->RemoveInterfaceSFX(pSFX); + debug_delete(pSFX); + m_SFXArray.Remove(0); + } + + +} + +void CLoadingScreen::UpdateInterfaceSFX() +{ + if( m_pRenderScreen ) + return; + + // Update the model's animtracker by hand... + g_pInterfaceMgr->UpdateModelAnimations(m_fCurFrameDelta); + +} + +LTBOOL CLoadingScreen::Init() +{ + if (m_eCurState != STATE_NONE) + return LTFALSE; + + if( m_pRenderScreen ) + { + // Just let the render screen know it is about to be draw and set the state to init... + + m_pRenderScreen->OnFocus( true ); + m_eCurState = STATE_INIT; + + return LTTRUE; + } + + m_photo = ""; + + // Check if we have a mission entry. + bool bGotMission = false; + + if( !g_pMissionMgr->IsCustomLevel( )) + { + int nCurMission = g_pMissionMgr->GetCurrentMission( ); + MISSION* pMission = g_pMissionButeMgr->GetMission( nCurMission ); + + if( pMission ) + { + if (pMission->nNameId > 0) + m_missionname = LoadTempString(pMission->nNameId); + else + m_missionname = pMission->sName; + + int nCurLevel = g_pMissionMgr->GetCurrentLevel( ); + m_levelname = LoadTempString( pMission->aLevels[nCurLevel].nNameId ); + m_layout = pMission->szLayout; + + //set the post load layout here, so that it matches + // even when our mission info is updated partway through the load + CScreenPostload *pPostload = (CScreenPostload *) (g_pInterfaceMgr->GetScreenMgr( )->GetScreenFromID(SCREEN_ID_POSTLOAD)); + if (pPostload) + { + pPostload->SetLayout(pMission->szLayout); + } + + + // Show a briefing for this level if it exists. Also, only + // show the briefing if we haven't been to this level before. + int nBriefingId = pMission->aLevels[nCurLevel].nBriefingId; + if( nBriefingId >= 0 && !g_pMissionMgr->IsRestoringLevel( )) + { + m_briefing = LoadTempString( nBriefingId ); + m_layout = pMission->szBriefLayout; + if (pPostload) + { + pPostload->SetLayout(pMission->szBriefLayout); + } + } + else + m_briefing = ""; + + // Show help text for this level if it exists. + int nHelpId = pMission->aLevels[nCurLevel].nHelpId; + if( nHelpId >= 0) + { + m_help = LoadTempString( nHelpId ); + if (pPostload) + { + pPostload->SetLayout(pMission->szBriefLayout); + } + } + else + m_help = ""; + + if( !IsCoopMultiplayerGameType( )) + { + m_photo = pMission->sPhoto; + } + + + bGotMission = true; + } + + } + + // If we were unsuccessful in getting info from the mission, then just + // use defaults. + if( !bGotMission ) + { + // If connecting to a remote server, set our mission descriptor to + // the ip we're connecting to. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + // Make a loading string using the IP to be joined. + char szLoadingString[256]; + + if (strlen(g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName)) + { + sprintf( szLoadingString, "%s: %s", LoadTempString(IDS_CONNECTING_TO_SERVER), + g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName ); + } + else + { + sprintf( szLoadingString, "%s", LoadTempString(IDS_CONNECTING_TO_SERVER)); + } + m_missionname = szLoadingString; + + sprintf( szLoadingString, " (%s)", g_pClientMultiplayerMgr->GetStartGameRequest( ).m_TCPAddress ); + + m_levelname = szLoadingString; + } + // Local game, set the mission descriptor to the level name. + else + { + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + m_missionname = LoadTempString( IDS_TITLE_PERFORMANCE_TEST ); + m_levelname = ""; + } + else + { + m_missionname = LoadTempString( IDS_CUSTOM_LEVEL ); + // Split the worldname up into parts so we can get the load string. + char const* pszWorldName = g_pMissionMgr->GetCurrentWorldName( ); + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pszWorldName, NULL, NULL, szWorldTitle, NULL ); + m_levelname = szWorldTitle; + + } + + } + + m_layout = "LoadScreenDefault"; + m_briefing = ""; + m_help = ""; + } + + char szTagName[30]; + if (!m_bReadLayout) + { + m_bReadLayout = true; + + SAFE_STRCPY(szTagName,"LoadScreenDefault"); + + //default layout info title string + m_DefaultTitlePos = g_pLayoutMgr->GetPoint(szTagName,"TitlePos"); + m_nDefaultTitleFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleFont"); + m_nDefaultTitleFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleSize"); + + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "TitleColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + m_nDefaultTitleColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info title string + m_DefaultLevelPos = g_pLayoutMgr->GetPoint(szTagName,"LevelPos"); + m_nDefaultLevelFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelFont"); + m_nDefaultLevelFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "LevelColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultLevelColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info mission briefing string + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"BriefingRect"); + m_DefaultBriefingPos = LTIntPt(rect.left,rect.top); + m_nDefaultBriefingWidth = (rect.right - rect.left); + + m_nDefaultBriefingFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingFont"); + m_nDefaultBriefingFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "BriefingColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultBriefingColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info mission help string + rect = g_pLayoutMgr->GetRect(szTagName,"HelpRect"); + m_DefaultHelpPos = LTIntPt(rect.left,rect.top); + m_nDefaultHelpWidth = (rect.right - rect.left); + + m_nDefaultHelpFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpFont"); + m_nDefaultHelpFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "HelpColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultHelpColor = SET_ARGB(0xFF,nR,nG,nB); + + m_DefaultPhotoRect = g_pLayoutMgr->GetRect(szTagName,"PhotoRect"); + + } + + //Setup title string + LTIntPt TitlePos = m_DefaultTitlePos; + uint8 TitleFont = m_nDefaultTitleFont; + uint8 TitleFontSize = m_nDefaultTitleFontSize; + uint32 TitleColor = m_nDefaultTitleColor; + LTIntPt LevelPos = m_DefaultLevelPos; + uint8 LevelFont = m_nDefaultLevelFont; + uint8 LevelFontSize = m_nDefaultLevelFontSize; + uint32 LevelColor = m_nDefaultLevelColor; + LTIntPt BriefingPos = m_DefaultBriefingPos; + uint16 BriefingWidth = m_nDefaultBriefingWidth; + uint8 BriefingFont = m_nDefaultBriefingFont; + uint8 BriefingFontSize = m_nDefaultBriefingFontSize; + uint32 BriefingColor = m_nDefaultBriefingColor; + LTIntPt HelpPos = m_DefaultHelpPos; + uint16 HelpWidth = m_nDefaultHelpWidth; + uint8 HelpFont = m_nDefaultHelpFont; + uint8 HelpFontSize = m_nDefaultHelpFontSize; + uint32 HelpColor = m_nDefaultHelpColor; + + //******************************************************************************* + // Build Mission Name String + + // look for override values + SAFE_STRCPY(szTagName,m_layout.c_str()); + if (g_pLayoutMgr->Exist(szTagName)) + { + //override layout info title string + if (g_pLayoutMgr->HasValue(szTagName,"TitlePos")) + TitlePos = g_pLayoutMgr->GetPoint(szTagName,"TitlePos"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleFont")) + TitleFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleSize")) + TitleFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "TitleColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + TitleColor = SET_ARGB(0xFF,nR,nG,nB); + } + + //override layout info Level string + if (g_pLayoutMgr->HasValue(szTagName,"LevelPos")) + LevelPos = g_pLayoutMgr->GetPoint(szTagName,"LevelPos"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelFont")) + LevelFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelSize")) + LevelFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "LevelColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + LevelColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + uint8 nFontSize = (uint8)((float)TitleFontSize * g_pInterfaceResMgr->GetXRatio()); + CUIFont *pFont = g_pInterfaceResMgr->GetFont(TitleFont); + + if (!m_pMissionNameStr) + { + m_pMissionNameStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + m_pMissionNameStr->SetColor(TitleColor); + m_pMissionNameStr->SetText(m_missionname.c_str()); + m_pMissionNameStr->SetCharScreenHeight(nFontSize); + float x = (float)TitlePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)TitlePos.y * g_pInterfaceResMgr->GetYRatio(); + m_pMissionNameStr->SetPosition(x,y); + + nFontSize = (uint8)((float)LevelFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(LevelFont); + + if (!m_pLevelNameStr) + { + m_pLevelNameStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + m_pLevelNameStr->SetColor(LevelColor); + m_pLevelNameStr->SetText(m_levelname.c_str()); + m_pLevelNameStr->SetCharScreenHeight(nFontSize); + x = (float)LevelPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)LevelPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pLevelNameStr->SetPosition(x,y); + + + //******************************************************************************* + // Build Mission Briefing String + + //look for override values + if (g_pLayoutMgr->Exist(szTagName)) + { + //default layout info mission briefing string + if (g_pLayoutMgr->HasValue(szTagName,"BriefingRect")) + { + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"BriefingRect"); + BriefingPos = LTIntPt(rect.left,rect.top); + BriefingWidth = (rect.right - rect.left); + } + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingFont")) + BriefingFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingSize")) + BriefingFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "BriefingColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + BriefingColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + nFontSize = (uint8)((float)BriefingFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(BriefingFont); + + if (!m_pBriefingStr) + { + m_pBriefingStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + + + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + m_pBriefingStr->SetText(LoadTempString( IDS_PERFORMANCE_TEST_BRIEF )); + } + else + { + m_pBriefingStr->SetText(m_briefing.c_str()); + } + m_pBriefingStr->SetColor(BriefingColor); + m_pBriefingStr->SetCharScreenHeight(nFontSize); + x = (float)BriefingPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)BriefingPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pBriefingStr->SetPosition(x,y); + m_pBriefingStr->SetWrapWidth((uint16)(g_pInterfaceResMgr->GetXRatio() * (float)BriefingWidth)); + + //******************************************************************************* + // Build Mission Help String + + //look for override values + if (g_pLayoutMgr->Exist(szTagName)) + { + //default layout info mission briefing string + if (g_pLayoutMgr->HasValue(szTagName,"HelpRect")) + { + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"HelpRect"); + HelpPos = LTIntPt(rect.left,rect.top); + HelpWidth = (rect.right - rect.left); + } + + if (g_pLayoutMgr->HasValue(szTagName,"HelpFont")) + HelpFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"HelpSize")) + HelpFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"HelpColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "HelpColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + HelpColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + nFontSize = (uint8)((float)HelpFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(HelpFont); + + if (!m_pHelpStr) + { + m_pHelpStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (pProfile->m_bLoadScreenTips) + { + m_pHelpStr->SetText(m_help.c_str()); + m_pHelpStr->SetColor(HelpColor); + m_pHelpStr->SetCharScreenHeight(nFontSize); + x = (float)HelpPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)HelpPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pHelpStr->SetPosition(x,y); + m_pHelpStr->SetWrapWidth((uint16)(g_pInterfaceResMgr->GetXRatio() * (float)HelpWidth)); + } + else + { + m_pHelpStr->SetText(""); + } + + + if( !IsCoopMultiplayerGameType() && !m_photo.empty() ) + { + m_hFrame = g_pInterfaceResMgr->GetTexture(m_photo.c_str()); + if (m_hFrame) + { + SetupQuadUVs(m_photoPoly, m_hFrame, 0.0f, 0.0f, 1.0f, 0.75f); + g_pDrawPrim->SetRGBA(&m_photoPoly,argbWhite); + + float fScale = g_pInterfaceResMgr->GetXRatio(); + float fx = (float)m_DefaultPhotoRect.left * fScale; + float fy = (float)m_DefaultPhotoRect.top * fScale; + + float fw = (float)(m_DefaultPhotoRect.right - m_DefaultPhotoRect.left) * fScale; + float fh = (float)(m_DefaultPhotoRect.bottom - m_DefaultPhotoRect.top) * fScale; + + g_pDrawPrim->SetXYWH(&m_photoPoly,fx,fy,fw,fh); + + } + } + else + { + m_hFrame = LTNULL; + } + + + + CreateInterfaceSFX(); + + // Reset the frame counter + m_nFrameCounter = 0; + m_fLastFrameTime = CWinUtil::GetTime(); + m_fCurFrameDelta = 0.0f; + + m_eCurState = STATE_INIT; + + return LTTRUE; +} + +LTBOOL CLoadingScreen::Term() +{ + if (m_eCurState != STATE_INIT) + return LTFALSE; + + // Clean up + RemoveInterfaceSFX(); + + m_eCurState = STATE_NONE; + + if (m_pMissionNameStr) + { + g_pFontManager->DestroyPolyString(m_pMissionNameStr); + m_pMissionNameStr = LTNULL; + } + if (m_pLevelNameStr) + { + g_pFontManager->DestroyPolyString(m_pLevelNameStr); + m_pLevelNameStr = LTNULL; + } + if (m_pBriefingStr) + { + g_pFontManager->DestroyPolyString(m_pBriefingStr); + m_pBriefingStr = LTNULL; + } + if (m_pHelpStr) + { + g_pFontManager->DestroyPolyString(m_pHelpStr); + m_pHelpStr = LTNULL; + } + + + return LTTRUE; +} + +unsigned long WINAPI CLoadingScreen::ThreadBootstrap(void *pData) +{ + return ((CLoadingScreen*)pData)->RunThread(); +} + +int CLoadingScreen::RunThread() +{ + // Change state + m_eCurState = STATE_ACTIVE; + + // Tell the main thread we're now in our main loop + SetEvent(m_hEventThreadRunning); + + // The main rendering loop... (i.e. keep drawing until someone tells us to stop) + while (WaitForSingleObject(m_hEventEnd, 0) == WAIT_TIMEOUT) + { + // Draw the frame.. + Update(); + + // Make sure we're not running faster than 10fps so stuff can still happen in the background + Sleep(100); + } + return 0; +} + +LTBOOL CLoadingScreen::Update() +{ + // Make sure we're in a valid state... + if ((m_eCurState != STATE_ACTIVE) && (m_eCurState != STATE_SHOW)) + return LTFALSE; + + // Only draw the render screen if we have one... + + if( m_pRenderScreen ) + { + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + + g_pLTClient->Start3D(); + + // Draw any FX First, such as the back ground... + + m_pRenderScreen->UpdateInterfaceSFX(); + g_pInterfaceMgr->DrawSFX(); + + EnterCriticalSection(&m_MissionUpdate); + + g_pLTClient->StartOptimized2D(); + + // Actually draw the screen... + + LTBOOL bRet = m_pRenderScreen->Render( hScreen ); + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + g_pLTClient->FlipScreen(0); + + LeaveCriticalSection(&m_MissionUpdate); + + return bRet; + } + + g_pLTClient->ClearScreen(LTNULL, CLEARSCREEN_SCREEN | CLEARSCREEN_RENDER, 0); + // Mmm.. Triple dimensional... + g_pLTClient->Start3D(); + + // Update our interface SFX since the interface mgr doesn't know about us + UpdateInterfaceSFX(); + + // Update the interface mgr + g_pInterfaceMgr->DrawSFX(); + + + EnterCriticalSection(&m_MissionUpdate); + + HSURFACE hDestSurf = g_pLTClient->GetScreenSurface(); + + // Go into optimized2d so the multiplayer info can draw + g_pLTClient->StartOptimized2D(); + + if (m_pMissionNameStr) + m_pMissionNameStr->Render(); + if (m_pLevelNameStr) + m_pLevelNameStr->Render(); + if (m_pBriefingStr) + m_pBriefingStr->Render(); + if (m_pHelpStr) + m_pHelpStr->Render(); + + if (m_hFrame) + { + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + + g_pDrawPrim->SetTexture(m_hFrame); + g_pDrawPrim->DrawPrim(&m_photoPoly); + } + + + g_pLTClient->EndOptimized2D(); + + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + + + g_pLTClient->FlipScreen(0); + + LeaveCriticalSection(&m_MissionUpdate); + + // Count it.. + ++m_nFrameCounter; + + LTFLOAT fCurTime = CWinUtil::GetTime(); + m_fCurFrameDelta = fCurTime - m_fLastFrameTime; + m_fLastFrameTime = fCurTime; + + return LTTRUE; +} + +LTBOOL CLoadingScreen::Show(LTBOOL bRun) +{ + + // Make sure we're in the correct state + if (m_eCurState == STATE_NONE) + { + if (!Init()) + return LTFALSE; + } + + if (m_eCurState != STATE_INIT) + return LTFALSE; + + // Turn off the cursor + g_pCursorMgr->UseCursor(LTFALSE); + + // Set up the FarZ & turn off fog (farz of 0 is bogus) + + m_nOldFarZ = GetConsoleInt("FarZ", 10000); + m_nOldFarZ = m_nOldFarZ == 0 ? 10000 : m_nOldFarZ; + + m_bOldFogEnable = (LTBOOL) GetConsoleInt("FogEnable", 0); + + g_pGameClientShell->SetFarZ(10000); + WriteConsoleInt("FogEnable", 0); + + // Make sure we're not in optimized 2D mode (happens sometimes...) + g_pLTClient->EndOptimized2D(); + + + // Go into the right state.. + m_eCurState = STATE_SHOW; + + // Update once so the screen's showing + Update(); + + // Start updating if they wanted it to.. + if (bRun) + return Resume(); + + // Ok, it's visible or active + return LTTRUE; +} + +LTBOOL CLoadingScreen::Pause() +{ + // Make sure we're in the right state + if (m_eCurState != STATE_ACTIVE) + return LTFALSE; + + // Shut down the loading screen thread + SetEvent(m_hEventEnd); + WaitForSingleObject(m_hThreadHandle, INFINITE); + + // Ok, it's just visible now.. + m_eCurState = STATE_SHOW; + + return LTTRUE; +} + +LTBOOL CLoadingScreen::Resume() +{ + // Ensure our state + if (m_eCurState != STATE_SHOW) + return LTFALSE; + + // Reset the events + ResetEvent(m_hEventEnd); + ResetEvent(m_hEventThreadRunning); + + // Start up the loading screen thread + uint32 uThreadID; + m_hThreadHandle = CreateThread(NULL, 0, ThreadBootstrap, (void *)this, 0, (unsigned long *)&uThreadID); + + // Handle what shouldn't be possible.. + if (!m_hThreadHandle) + return LTFALSE; + + // Wait for the loading thread to stop touching stuff.. + WaitForSingleObject(m_hEventThreadRunning, INFINITE); + + // Now we're actually active. (Thank you Mr. Thread..) + return LTTRUE; +} + +LTBOOL CLoadingScreen::Hide() +{ + // Ensure our state + if (m_eCurState == STATE_ACTIVE) + { + // Stop!!! + if (!Pause()) + return LTFALSE; + } + + if (m_eCurState != STATE_SHOW) + return LTFALSE; + + // Clear the screen +// g_pInterfaceMgr->ClearAllScreenBuffers(); + + // Change state + m_eCurState = STATE_INIT; + + // Clean up + Term(); + + // Re-set the console... + g_pGameClientShell->SetFarZ(m_nOldFarZ); + WriteConsoleInt("FogEnable", (int)m_bOldFogEnable); + + // Let the render screen know it's going away... + + if( m_pRenderScreen ) + { + // Don't lose focus until after setting the state to init... + + m_pRenderScreen->OnFocus( LTFALSE ); + m_pRenderScreen = LTNULL; + } + + // Done! + return LTTRUE; +} + + +void CLoadingScreen::CreateLightFX(char *szFXName) +{ + if( m_pRenderScreen ) + return; + + INT_LIGHT* pLight = g_pLayoutMgr->GetLight(szFXName); + if (pLight) + { + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_ONLYLIGHTOBJECTS; + + createStruct.m_Pos = m_vPos; + + createStruct.m_Pos += pLight->vPos;; + + HOBJECT hLight = g_pLTClient->CreateObject(&createStruct); + + if (hLight) + { + g_pLTClient->SetLightColor(hLight, pLight->vColor.x, pLight->vColor.y, pLight->vColor.z); + g_pLTClient->SetLightRadius(hLight, pLight->fRadius); + + g_pInterfaceMgr->AddInterfaceLight(hLight); + } + + } +} + +void CLoadingScreen::UpdateMissionInfo() +{ + // No need to update mission info if a different screen is being rendered... + + if( m_pRenderScreen ) + return; + + EnterCriticalSection(&m_MissionUpdate); + + if( !g_pMissionMgr->IsCustomLevel( )) + { + int nCurMission = g_pMissionMgr->GetCurrentMission( ); + MISSION* pMission = g_pMissionButeMgr->GetMission( nCurMission ); + + if( pMission ) + { + if (pMission->nNameId > 0) + m_missionname = LoadTempString(pMission->nNameId); + else + m_missionname = pMission->sName; + + int nCurLevel = g_pMissionMgr->GetCurrentLevel( ); + + m_levelname = LoadTempString( pMission->aLevels[nCurLevel].nNameId ); + + // Show a briefing for this level if it exists. Also, only + // show the briefing if we haven't been to this level before. + int nBriefingId = pMission->aLevels[nCurLevel].nBriefingId; + if( nBriefingId >= 0 && !g_pMissionMgr->IsRestoringLevel( )) + m_briefing = LoadTempString( nBriefingId ); + else + m_briefing = ""; + + // Show help text for this level if it exists. + int nHelpId = pMission->aLevels[nCurLevel].nHelpId; + if( nHelpId >= 0) + m_help = LoadTempString( nHelpId ); + else + m_help = ""; + + if( !IsCoopMultiplayerGameType( )) + { + m_photo = pMission->sPhoto; + } + + } + + } + + m_pMissionNameStr->SetText(m_missionname.c_str()); + m_pLevelNameStr->SetText(m_levelname.c_str()); + m_pHelpStr->SetText(m_help.c_str()); + + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + m_pBriefingStr->SetText(LoadTempString( IDS_PERFORMANCE_TEST_BRIEF )); + } + else + { + m_pBriefingStr->SetText(m_briefing.c_str()); + } + + if( !IsCoopMultiplayerGameType() && !m_photo.empty()) + { + m_hFrame = g_pInterfaceResMgr->GetTexture(m_photo.c_str()); + if (m_hFrame) + { + SetupQuadUVs(m_photoPoly, m_hFrame, 0.0f, 0.0f, 1.0f, 0.75f); + g_pDrawPrim->SetRGBA(&m_photoPoly,argbWhite); + + float fScale = g_pInterfaceResMgr->GetXRatio(); + float fx = (float)m_DefaultPhotoRect.left * fScale; + float fy = (float)m_DefaultPhotoRect.top * fScale; + + float fw = (float)(m_DefaultPhotoRect.right - m_DefaultPhotoRect.left) * fScale; + float fh = (float)(m_DefaultPhotoRect.bottom - m_DefaultPhotoRect.top) * fScale; + + g_pDrawPrim->SetXYWH(&m_photoPoly,fx,fy,fw,fh); + + } + } + else + { + m_hFrame = LTNULL; + } + + + + LeaveCriticalSection(&m_MissionUpdate); +} + +bool CLoadingScreen::NeedsPostLoadScreen() const +{ + // Always go to postload screen if in mp. We may need to wait there for other players. + if( IsMultiplayerGame( )) + return true; + + // Only go to postload if we had a briefing for sp. + return ( !m_briefing.empty( )); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/LoadingScreen.h b/Jack/ClientShellDLL/LoadingScreen.h new file mode 100644 index 00000000..450d5c2f --- /dev/null +++ b/Jack/ClientShellDLL/LoadingScreen.h @@ -0,0 +1,162 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LoadingScreen.h +// +// PURPOSE : Background-thread loading screen encapsulation class +// +// CREATED : 2000 +// +// (c) 2000, 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LOADINGSCREEN_H__ +#define __LOADINGSCREEN_H__ + +#include "BaseScreen.h" +#include "ScreenMgr.h" + +class CLoadingScreen +{ +// External functions +public: + CLoadingScreen(); + ~CLoadingScreen(); + + // Note : Init/Term will be called automatically when needed, so + // you shouldn't ever actually need to call them. + + // Initialize and load the screen resources + // Returns LTFALSE if not in STATE_NONE + LTBOOL Init(); + // Terminate the screen and its resources + // Returns LTFALSE if not in STATE_INIT + LTBOOL Term(); + + // Show the loading screen + // Setting bRun to LTTRUE will start the update thread + // Returns LTFALES if the state isn't STATE_NONE or STATE_INIT + LTBOOL Show(LTBOOL bRun = LTTRUE); + // Update the loading screen + // Returns LTFALSE if the state isn't STATE_SHOW + LTBOOL Update(); + // Take the loading screen out of threaded mode + // Returns LTFALSE if the state isn't STATE_ACTIVE + LTBOOL Pause(); + // Resume threaded mode + // Returns LTFALSE if the state isn't STATE_SHOW + LTBOOL Resume(); + // Hide the loading screen + // Returns LTFALSE if the state isn't STATE_SHOW or STATE_ACTIVE + LTBOOL Hide(); + + // Returns whether or not the loading screen is currently being actively updated + inline LTBOOL IsActive() const { return m_eCurState == STATE_ACTIVE; }; + // Returns whether or not the loading screen is visible + inline LTBOOL IsVisible() const { return ((m_eCurState == STATE_ACTIVE) || (m_eCurState == STATE_SHOW)); }; + + //is loading a new mission? + bool NeedsPostLoadScreen() const; + + void UpdateMissionInfo(); + + void SetRenderScreen( CBaseScreen* pScreen ) { m_pRenderScreen = (m_eCurState == STATE_NONE ? pScreen : LTNULL); } + + +// Internal functions +protected: +#ifdef NOPS2 + static unsigned long WINAPI ThreadBootstrap(void *pData); + int RunThread(); +#endif +private: +#ifdef NOPS2 + // The thread handle + HANDLE m_hThreadHandle; + // Events... + HANDLE m_hEventEnd; // Stop rendering, damnit! + HANDLE m_hEventThreadRunning; // Ok, the thread is done initializing, continue on + + CRITICAL_SECTION m_MissionUpdate; + +#endif + + LTBOOL m_bOldFogEnable; + int m_nOldFarZ; + + // State of the loading screen + enum EScreenState { + STATE_NONE, // Not active in any way + STATE_INIT, // It's been initialized, but that's it.. + STATE_SHOW, // It's on screen + STATE_ACTIVE // It's in a thread and running + }; + EScreenState m_eCurState; + + ////////////////////////////////////////////////////////////////////////////// + // Variables needed for updating (i.e. stuff only Init/Update/Term should touch) + + CUIFormattedPolyString *m_pMissionNameStr; + CUIFormattedPolyString *m_pLevelNameStr; + CUIFormattedPolyString *m_pBriefingStr; + CUIFormattedPolyString *m_pHelpStr; + std::string m_missionname; + std::string m_levelname; + std::string m_briefing; + std::string m_help; + std::string m_layout; + std::string m_photo; + + HTEXTURE m_hFrame; + LTPoly_GT4 m_photoPoly; + + + + //layout info + bool m_bReadLayout; + LTIntPt m_DefaultTitlePos; + uint8 m_nDefaultTitleFont; + uint8 m_nDefaultTitleFontSize; + uint32 m_nDefaultTitleColor; + LTIntPt m_DefaultLevelPos; + uint8 m_nDefaultLevelFont; + uint8 m_nDefaultLevelFontSize; + uint32 m_nDefaultLevelColor; + LTIntPt m_DefaultBriefingPos; + uint16 m_nDefaultBriefingWidth; + uint8 m_nDefaultBriefingFont; + uint8 m_nDefaultBriefingFontSize; + uint32 m_nDefaultBriefingColor; + LTIntPt m_DefaultHelpPos; + uint16 m_nDefaultHelpWidth; + uint8 m_nDefaultHelpFont; + uint8 m_nDefaultHelpFontSize; + uint32 m_nDefaultHelpColor; + LTRect m_DefaultPhotoRect; + + // Array of SFX owned by the loading screen + CMoArray m_SFXArray; + + // Position variables for internal use + LTVector m_vPos, m_vU, m_vR, m_vF; + LTRotation m_rRot; + + void CreateInterfaceSFX(); + + // Functions for handling the character/attributes/sfx/etc + // Note that these are basically copies of what's in BaseScreen + void CreateScaleFX(char *szFXName); + void CreateLightFX(char *szFXName); + + void RemoveInterfaceSFX(); + void UpdateInterfaceSFX(); + + uint32 m_nFrameCounter; // Frame tracking + float m_fLastFrameTime, m_fCurFrameDelta; + + // If this is set the loading screen will render this rather than draw its self... + CBaseScreen *m_pRenderScreen; + +}; + +#endif //__LOADINGSCREEN_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MarkSFX.cpp b/Jack/ClientShellDLL/MarkSFX.cpp new file mode 100644 index 00000000..a90921ca --- /dev/null +++ b/Jack/ClientShellDLL/MarkSFX.cpp @@ -0,0 +1,279 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MarkSFX.cpp +// +// PURPOSE : Mark special FX - Implementation +// +// CREATED : 10/13/97 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MarkSFX.h" +#include "iltclient.h" +#include "ltlink.h" +#include "GameClientShell.h" +#include "SurfaceFunctions.h" +#include "VarTrack.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarClipMarks; +VarTrack g_cvarLightMarks; +VarTrack g_cvarShowMarks; +VarTrack g_cvarMarkFadeTime; +VarTrack g_cvarMarkSolidTime; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMarkSFX::Init +// +// PURPOSE: Create the mark +// +// ----------------------------------------------------------------------- // + +LTBOOL CMarkSFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!psfxCreateStruct) return LTFALSE; + + CSpecialFX::Init(psfxCreateStruct); + + MARKCREATESTRUCT* pMark = (MARKCREATESTRUCT*)psfxCreateStruct; + + m_Rotation = pMark->m_Rotation; + VEC_COPY(m_vPos, pMark->m_vPos); + m_fScale = pMark->m_fScale; + m_nAmmoId = pMark->nAmmoId; + m_nSurfaceType = pMark->nSurfaceType; + + if (!g_cvarClipMarks.IsInitted()) + { + g_cvarClipMarks.Init(g_pLTClient, "MarksClip", NULL, 0.0f); + } + + if (!g_cvarLightMarks.IsInitted()) + { + g_cvarLightMarks.Init(g_pLTClient, "MarkLight", NULL, 0.0f); + } + + if (!g_cvarShowMarks.IsInitted()) + { + g_cvarShowMarks.Init(g_pLTClient, "MarkShow", NULL, 1.0f); + } + + if (!g_cvarMarkFadeTime.IsInitted()) + { + g_cvarMarkFadeTime.Init(g_pLTClient, "MarkFadeTime", NULL, 3.0f); + } + + if (!g_cvarMarkSolidTime.IsInitted()) + { + g_cvarMarkSolidTime.Init(g_pLTClient, "MarkSolidTime", NULL, 3.0f); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMarkSFX::CreateObject +// +// PURPOSE: Create object associated with the mark +// +// ----------------------------------------------------------------------- // + +LTBOOL CMarkSFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !g_pGameClientShell) return LTFALSE; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return LTFALSE; + + // If we're not showing marks, don't bother... + + if (!g_cvarShowMarks.GetFloat()) return LTFALSE; + + + // Before we create a new buillet hole see if there is already another + // bullet hole close by that we could use instead... + + CSpecialFXList* pList = psfxMgr->GetFXList(SFX_MARK_ID); + if (!pList) return LTFALSE; + + int nNumBulletHoles = pList->GetSize(); + + HOBJECT hMoveObj = LTNULL; + HOBJECT hObj = LTNULL; + LTFLOAT fClosestMarkDist = REGION_DIAMETER; + uint8 nNumInRegion = 0; + + LTVector vPos; + + for (int i=0; i < nNumBulletHoles; i++) + { + if ((*pList)[i]) + { + hObj = (*pList)[i]->GetObject(); + if (hObj) + { + g_pLTClient->GetObjectPos(hObj, &vPos); + + LTFLOAT fDist = VEC_DISTSQR(vPos, m_vPos); + if (fDist < REGION_DIAMETER) + { + if (fDist < fClosestMarkDist) + { + fClosestMarkDist = fDist; + hMoveObj = hObj; + } + + if (++nNumInRegion > MAX_MARKS_IN_REGION) + { + // Just move this bullet-hole to the correct pos, and + // remove thyself... + + g_pLTClient->SetObjectPos(hMoveObj, &m_vPos); + return LTFALSE; + } + } + } + } + } + + + // Setup the mark... + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + LTFLOAT fScaleAdjust = 1.0f; + if (!GetImpactSprite((SurfaceType)m_nSurfaceType, fScaleAdjust, m_nAmmoId, + createStruct.m_Filename, ARRAY_LEN(createStruct.m_Filename))) + { + return LTFALSE; + } + + createStruct.m_ObjectType = OT_SPRITE; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_ROTATEABLESPRITE; + + // Should probably force this in low detail modes... + + if (g_cvarLightMarks.GetFloat() == 0.0f) + { + createStruct.m_Flags |= FLAG_NOLIGHT; + } + + VEC_COPY(createStruct.m_Pos, m_vPos); + createStruct.m_Rotation = m_Rotation; + + m_hObject = pClientDE->CreateObject(&createStruct); + + m_fScale *= fScaleAdjust; + + m_pClientDE->SetObjectScale(m_hObject, <Vector(m_fScale, m_fScale, m_fScale)); + + if (g_cvarClipMarks.GetFloat() > 0) + { + // Clip the mark to th poly... + + IntersectQuery qInfo; + IntersectInfo iInfo; + + LTVector vF = m_Rotation.Forward(); + + qInfo.m_From = m_vPos + (vF * 2.0); + qInfo.m_To = m_vPos - (vF * 2.0); + + qInfo.m_Flags = IGNORE_NONSOLID | INTERSECT_HPOLY; + + if (g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + g_pLTClient->ClipSprite(m_hObject, iInfo.m_hPoly); + } + } + + LTFLOAT r, g, b, a; + r = g = b = 0.5f; + a = 1.0f; + m_pClientDE->SetObjectColor(m_hObject, r, g, b, a); + + m_fElapsedTime = 0.0f; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMarkSFX::WantRemove +// +// PURPOSE: If this gets called, remove the mark (this should only get +// called if we have a server object associated with us, and +// that server object gets removed). +// +// ----------------------------------------------------------------------- // + +void CMarkSFX::WantRemove(LTBOOL bRemove) +{ + CSpecialFX::WantRemove(bRemove); + + if (!g_pGameClientShell) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + // Tell the special fx mgr to go ahead and remove us... + + if (m_hObject) + { + psfxMgr->RemoveSpecialFX(m_hObject); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMarkSFX::Update +// +// PURPOSE: Always return TRUE, however check to see if we should +// hide/show the mark. +// +// ----------------------------------------------------------------------- // + +LTBOOL CMarkSFX::Update() +{ + if (!g_cvarShowMarks.GetFloat()) + { + // Remove the object... + return LTFALSE; + } + + //make sure that we don't update while paused + if(g_pGameClientShell->IsServerPaused()) + { + return LTTRUE; + } + + m_fElapsedTime += g_pLTClient->GetFrameTime(); + + LTFLOAT fFadeStartTime = g_cvarMarkSolidTime.GetFloat(); + LTFLOAT fFadeEndTime = fFadeStartTime + g_cvarMarkFadeTime.GetFloat(); + + if (m_fElapsedTime > fFadeEndTime) + { + // Remove the object... + return LTFALSE; + } + else if (m_fElapsedTime > fFadeStartTime) + { + LTFLOAT fScale = ((fFadeEndTime - m_fElapsedTime) / fFadeStartTime); + LTFLOAT r, g, b, a; + + g_pLTClient->GetObjectColor(m_hObject, &r, &g, &b, &a); + a = a < fScale ? a : fScale; + g_pLTClient->SetObjectColor(m_hObject, r, g, b, a); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MarkSFX.h b/Jack/ClientShellDLL/MarkSFX.h new file mode 100644 index 00000000..aa4abc92 --- /dev/null +++ b/Jack/ClientShellDLL/MarkSFX.h @@ -0,0 +1,70 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : MarkSFX.h +// +// PURPOSE : Mark special fx class - Definition +// +// CREATED : 11/6/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __MARKSFX_H__ +#define __MARKSFX_H__ + +#include "SpecialFX.h" +#include "ltlink.h" + +struct MARKCREATESTRUCT : public SFXCREATESTRUCT +{ + MARKCREATESTRUCT(); + + LTRotation m_Rotation; + LTVector m_vPos; + LTFLOAT m_fScale; + uint8 nAmmoId; + uint8 nSurfaceType; +}; + +inline MARKCREATESTRUCT::MARKCREATESTRUCT() +{ + m_Rotation.Init(); + m_vPos.Init(); + m_fScale = 0.0f; + nAmmoId = 0; + nSurfaceType = 0; +} + + +class CMarkSFX : public CSpecialFX +{ + public : + + CMarkSFX() + { + m_Rotation.Init(); + VEC_INIT(m_vPos); + m_fScale = 1.0f; + m_nAmmoId = 0; + m_nSurfaceType = 0; + m_fElapsedTime = 0.0f; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual void WantRemove(LTBOOL bRemove=LTTRUE); + + virtual uint32 GetSFXID() { return SFX_MARK_ID; } + + private : + + LTRotation m_Rotation; + LTVector m_vPos; + LTFLOAT m_fScale; + LTFLOAT m_fElapsedTime; + uint8 m_nAmmoId; + uint8 m_nSurfaceType; +}; + +#endif // __MARKSFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuEnum.h b/Jack/ClientShellDLL/MenuEnum.h new file mode 100644 index 00000000..3aeee7f6 --- /dev/null +++ b/Jack/ClientShellDLL/MenuEnum.h @@ -0,0 +1,33 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuEnum.h +// +// PURPOSE : Enums and string constants for menus. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// ----------------------------------------------------------------------- // + +// +// The following macros allow the enum entries to be included as the +// body of an enum, or the body of a const char* string list. +// + + +#undef ADD_MENU + +#if defined(INCLUDE_AS_ENUM) + #define ADD_MENU(id,name) MENU_ID_##id, +#elif defined(INCLUDE_AS_STRING) + #define ADD_MENU(id,name) #name, +#else + #error To use this include file, first define either INCLUDE_AS_ENUM or INCLUDE_AS_STRING, to include the menus as enums, or string constants. +#endif + + +ADD_MENU(NONE,GenericMenu) +ADD_MENU(SYSTEM,MenuSystem) +ADD_MENU(MISSION,MenuMission) + +//this must be the last id +ADD_MENU(UNASSIGNED,GenericMenu) + diff --git a/Jack/ClientShellDLL/MenuIntel.cpp b/Jack/ClientShellDLL/MenuIntel.cpp new file mode 100644 index 00000000..9b469918 --- /dev/null +++ b/Jack/ClientShellDLL/MenuIntel.cpp @@ -0,0 +1,303 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuIntel.cpp +// +// PURPOSE : In-game intel item menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MenuIntel.h" +#include "InterfaceMgr.h" +#include "clientres.h" +#include "MissionMgr.h" + +namespace +{ + enum eLocalMenuCmds + { + MC_INTEL = MC_CUSTOM, + }; +} + + + +LTBOOL CMenuIntel::Init() +{ + m_MenuID = MENU_ID_INTEL; + + if (!CBaseMenu::Init()) return LTFALSE; + + SetTitle(IDS_TITLE_INTEL); + + g_pInterfaceMgr->GetMenuMgr()->RegisterCommand(COMMAND_ID_INTEL,MENU_ID_INTEL); + + m_PopupText.Init(false); + + return LTTRUE; +} + +void CMenuIntel::Term() +{ + CBaseMenu::Term(); + + m_PopupText.Term(); +} + +uint32 CMenuIntel::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return 1; + } + + switch (nCommand) + { + case MC_INTEL: + { + uint16 nID = (uint16) nParam1; + CIntelItemList *pList = g_pPlayerStats->GetIntelList(); + INTEL_ITEM* pItem = pList->Get(nID); + + if (pItem) + { + m_PopupText.Show(pItem->nTextId, pItem->nPopupId); + + // Disable menu now that popup is visible. + + g_pInterfaceMgr->GetMenuMgr()->EnableMenuBar(false); + } + } + + default: + { + return CBaseMenu::OnCommand(nCommand,nParam1,nParam2); + } + } + + return 1; +} + + +// This is called when the screen gets or loses focus +void CMenuIntel::OnFocus(LTBOOL bFocus) +{ + if (!m_PopupText.IsVisible()) + { + ClearSelection(); + } + + if (bFocus) + { + uint16 nextItem = 0; + CIntelItemList *pList = g_pPlayerStats->GetIntelList(); + char szTemp[512] = ""; + for (uint16 i = 0; i < pList->GetCount(); i++) + { + uint16 nIndex = (pList->GetCount() - i) - 1; + INTEL_ITEM* pItem = pList->Get(nIndex); + if (!pItem) + { + continue; + } + + GetIntelName(pItem->nTextId,szTemp,sizeof(szTemp)); + + CLTGUITextCtrl* pCtrl = LTNULL; + if (nextItem < m_List.GetNumControls()) + { + pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nextItem); + if (pCtrl) + { + pCtrl->SetString(szTemp); + pCtrl->Show(LTTRUE); + nextItem++; + } + } + else + { + uint16 ndx = AddControl(szTemp,MC_INTEL); + pCtrl = (CLTGUITextCtrl*)m_List.GetControl(ndx); + nextItem++; + } + + if (pCtrl) + { + pCtrl->SetParam1(nIndex); + if (pItem->bIsIntel) + { + pCtrl->SetColors(0xFFFF0000,0xFFA00000,m_DisabledColor); + } + else + { + pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + } + } + } + + for (uint16 nIndex = nextItem; nIndex < m_List.GetNumControls(); nIndex++) + { + + CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nIndex); + if (pCtrl) + { + pCtrl->Show(LTFALSE); + } + } + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + SetSelection(GetIndex(&m_List)); + } +} + + +void CMenuIntel::GetIntelName(uint32 nTextId, char *pBuf, int nBufSize) +{ + LoadString(nTextId,pBuf,nBufSize); + if (strchr(pBuf,'@')) + { + char* pTok = strtok(pBuf,"@"); + } + else + { + char* pTok = strtok(pBuf,"\n\t,"); + int i = 24; + int len = strlen(pBuf); + if (len <= i) i = len; + for (int j = 0; j < 3; j++) + pBuf[i+j] = '.'; + pBuf[i+j] = 0; + + } +}; + + + +// [KLS 6/23/02] - The following were overridden to support the m_PopupText data member... + +void CMenuIntel::ClosePopup() +{ + m_PopupText.Close(); + g_pInterfaceMgr->UseCursor(LTTRUE); + g_pLTClient->ClearInput(); + + // Re-enable the menu since the popup is now closed + + g_pInterfaceMgr->GetMenuMgr()->EnableMenuBar(true); +} + +void CMenuIntel::Render ( ) +{ + if (!IsVisible()) return; + + CBaseMenu::Render(); + + // If we're showing the intel item, render the popup... + + if (m_PopupText.IsVisible()) + { + // Make sure the cursor isn't visible... + g_pInterfaceMgr->UseCursor(LTFALSE, LTTRUE); + + m_PopupText.Update(); + m_PopupText.Draw(); + } +} + +LTBOOL CMenuIntel::OnUp ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnUp(); +} + +LTBOOL CMenuIntel::OnDown ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnDown(); +} + +LTBOOL CMenuIntel::OnLeft ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnLeft(); +} + +LTBOOL CMenuIntel::OnRight ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnRight(); +} + +LTBOOL CMenuIntel::OnEnter ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnEnter(); +} + +LTBOOL CMenuIntel::OnEscape ( ) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnEscape(); +} + +LTBOOL CMenuIntel::OnLButtonDown(int x, int y) +{ + if (m_PopupText.IsVisible()) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::OnLButtonDown(x, y); +} + +LTBOOL CMenuIntel::HandleKeyDown(int key, int rep) +{ + // Close popup if necessary...Use OnEscape + // to handle escape key... + if (m_PopupText.IsVisible() && (VK_ESCAPE != key)) + { + ClosePopup(); + return LTTRUE; + } + + return CBaseMenu::HandleKeyDown(key, rep); +} + diff --git a/Jack/ClientShellDLL/MenuIntel.h b/Jack/ClientShellDLL/MenuIntel.h new file mode 100644 index 00000000..d9ba0f61 --- /dev/null +++ b/Jack/ClientShellDLL/MenuIntel.h @@ -0,0 +1,49 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuIntel.h +// +// PURPOSE : In-game intel item menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_INTEL_H_) +#define _MENU_INTEL_H_ + +#include "BaseMenu.h" +#include "PopupText.h" + +class CMenuIntel : public CBaseMenu +{ +public: + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void OnFocus(LTBOOL bFocus); + + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + virtual LTBOOL OnLeft ( ); + virtual LTBOOL OnRight ( ); + virtual LTBOOL OnEnter ( ); + virtual LTBOOL OnEscape (); + + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL OnLButtonDown(int x, int y); + + // Render the control + virtual void Render (); + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); +private: + void GetIntelName(uint32 nTextId, char *pBuf, int nBufSize); + + CPopupText m_PopupText; + void ClosePopup(); +}; + +#endif //!defined(_MENU_INTEL_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuInventory.cpp b/Jack/ClientShellDLL/MenuInventory.cpp new file mode 100644 index 00000000..3123c04d --- /dev/null +++ b/Jack/ClientShellDLL/MenuInventory.cpp @@ -0,0 +1,324 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuInventory.cpp +// +// PURPOSE : In-game system menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MenuInventory.h" +#include "InterfaceMgr.h" +#include "clientres.h" +#include "PlayerMgr.h" +#include "ClientWeaponMgr.h" + +namespace +{ + enum eLocalMenuCmds + { + MC_WEAPON = MC_CUSTOM, + MC_AMMO, + }; + + uint8 nWeaponID = WMGR_INVALID_ID; + + CMenuInventory* s_pInvMenu = NULL; +} + +LTBOOL CAmmoMenu::OnUp() +{ + LTBOOL bHandled = CLTGUIWindow::OnUp(); + + if (bHandled && s_pInvMenu) + s_pInvMenu->UpdateAmmoText(); + + return bHandled; + +} + +LTBOOL CAmmoMenu::OnDown() +{ + LTBOOL bHandled = CSubMenu::OnDown(); + + if (bHandled && s_pInvMenu) + s_pInvMenu->UpdateAmmoText(); + + return bHandled; +} + +LTBOOL CAmmoMenu::OnMouseMove(int x, int y) +{ + LTBOOL bHandled = CSubMenu::OnMouseMove(x, y); + + if (bHandled && s_pInvMenu) + s_pInvMenu->UpdateAmmoText(); + + return bHandled; +} + + + +LTBOOL CMenuInventory::Init() +{ + m_MenuID = MENU_ID_INVENTORY; + s_pInvMenu = this; + + if (!CBaseMenu::Init()) return LTFALSE; + + SetTitle(IDS_TITLE_INVENTORY); + + LTIntPt size = g_pLayoutMgr->GetMenuCustomPoint(m_MenuID,"PopupSize"); + + m_Popup.Init(s_Frame,s_FrameTip,size); + LTIntPt offset = m_Indent; + offset.y = 8; + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFontFace); + m_Name.Create("name",LTNULL,LTNULL,pFont,m_FontSize,LTNULL); + m_Name.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_Name.Enable(LTFALSE); + m_Popup.AddControl(&m_Name,offset); + offset.y += (m_Name.GetHeight() + 4); + + + m_Photo.Create(LTNULL,LTNULL,s_Frame); + m_Photo.Enable(LTFALSE); + m_Photo.SetTextureScale(0.75f); + m_Popup.AddControl(&m_Photo,offset); + + int nDescriptionOffset = g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"DescriptionOffset"); + if (!nDescriptionOffset) + nDescriptionOffset = 64; + offset.y += nDescriptionOffset; + + pFont = g_pInterfaceResMgr->GetFont(m_FontFace); + uint8 nDescFont = (uint8)g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"DescFontSize"); + if (!nDescFont) + nDescFont = m_FontSize; + m_Description.Create("description",LTNULL,LTNULL,pFont,nDescFont,LTNULL); + m_Description.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_Description.SetFixedWidth( size.x - (m_Indent.x * 2)); + m_Description.Enable(LTFALSE); + m_Popup.AddControl(&m_Description,offset); + + int nAmmoOffset = g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"AmmoOffset"); + if (!nAmmoOffset) + nAmmoOffset = 64; + + offset.y += nAmmoOffset; + + m_Ammo.Create( (size.y - offset.y) - 8); + m_Popup.AddControl(&m_Ammo,offset); + + int nPopupPos = g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"PopupPos"); + m_Popup.SetBasePos(LTIntPt(0,nPopupPos)); + + + uint8 nHelpFont = (uint8)g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"HelpFontSize"); + offset = g_pLayoutMgr->GetMenuCustomPoint(m_MenuID,"HelpOffset"); + uint16 nWidth = 600 - 2* offset.x; + if (!nHelpFont) + nHelpFont = m_FontSize; + m_AmmoDesc.Create("description",LTNULL,LTNULL,pFont,nHelpFont,LTNULL); + m_AmmoDesc.SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + m_AmmoDesc.SetFixedWidth(nWidth); + m_AmmoDesc.Enable(LTFALSE); + m_Popup.AddControl(&m_AmmoDesc,offset); + + + g_pInterfaceMgr->GetMenuMgr()->RegisterCommand(COMMAND_ID_INVENTORY,MENU_ID_INVENTORY); + + return LTTRUE; +} + +void CMenuInventory::Term() +{ + + m_Popup.RemoveAll(LTFALSE); + + CBaseMenu::Term(); +} + + +uint32 CMenuInventory::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + switch (nCommand) + { + case MC_WEAPON: + { + uint8 nID = (uint8) nParam1; + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nID); + m_Name.SetString(pWeapon->szLongName); + m_Description.SetString(LoadTempString(pWeapon->nDescriptionId)); + + std::string icon = pWeapon->GetSilhouetteIcon(); + HTEXTURE hTmp = g_pInterfaceResMgr->GetTexture(icon.c_str()); + m_Photo.SetTexture(hTmp); + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_FontFace); + m_Ammo.RemoveAll(); + m_nAmmo = 0; + + uint8 index = 0; + for (uint8 i = 0; i < pWeapon->nNumAmmoIds; i++) + { + uint8 nAmmoID = pWeapon->aAmmoIds[i]; + if (g_pPlayerStats->GetAmmoCount(nAmmoID)) + { + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoID); + char szAmmoStr[64]; + if (pWeapon->bInfiniteAmmo) + { + LTStrCpy(szAmmoStr,pAmmo->szLongName,sizeof(szAmmoStr)); + } + else + { + sprintf(szAmmoStr,"%s : %d/%d",pAmmo->szLongName,g_pPlayerStats->GetAmmoCount(nAmmoID),pAmmo->GetMaxAmount(LTNULL)); + } + + char szFinalAmmoStr[128]; + sprintf(szFinalAmmoStr, "%s %s",LoadTempString(IDS_SELECT_AMMO_TEXT), szAmmoStr); + + CLTGUITextCtrl *pCtrl = debug_new(CLTGUITextCtrl); + pCtrl->Create(szFinalAmmoStr,MC_AMMO,0,pFont,m_FontSize,this); + pCtrl->SetParam1(nAmmoID); + + m_Ammo.AddControl(pCtrl); + m_nAmmoID[index] = nAmmoID; + if (nAmmoID == g_pPlayerStats->GetCurrentAmmo()) + m_nAmmo = index; + ++index; + + } + } + m_Ammo.SetStartIndex(0); + + if (!index) + { +// m_Ammo.AddString("No ammo available."); + m_nAmmoID[0] = WMGR_INVALID_ID; + m_Ammo.SetSelection(CLTGUIListCtrl::kNoSelection); + } + else + m_Ammo.SetSelection(m_nAmmo); + m_Ammo.UpdateData(LTFALSE); + + UpdateAmmoText(true); + + m_Popup.SetSelection(m_Popup.GetIndex(&m_Ammo)); + + g_pInterfaceMgr->GetMenuMgr()->ShowSubMenu(&m_Popup); + nWeaponID = nID; + } + break; + case MC_AMMO: + { + uint8 nAmmoID = (uint8) nParam1; + if (nParam1 != WMGR_INVALID_ID) + { + // change the weapon + ASSERT( 0 != g_pPlayerMgr ); + g_pPlayerMgr->ChangeWeapon( nWeaponID, nAmmoID ); + + + // change the state + g_pInterfaceMgr->GetMenuMgr()->SlideOut(); + } + } + break; + + default: + return CBaseMenu::OnCommand(nCommand,nParam1,nParam2); + } + return 1; +} + + +// This is called when the screen gets or loses focus +void CMenuInventory::OnFocus(LTBOOL bFocus) +{ + ClearSelection(); + if (bFocus) + { + uint16 nextItem = 0; + uint16 nSel = 1; + + // get first and last weapon indices + int nFirstWeaponCommandId =g_pWeaponMgr->GetFirstWeaponCommandId(); + int nLastWeaponCommandId = g_pWeaponMgr->GetLastWeaponCommandId(); + + for (int nCmd = nFirstWeaponCommandId; nCmd <= nLastWeaponCommandId; nCmd++) + { + uint8 nWpn = g_pWeaponMgr->GetWeaponId(nCmd); + if (g_pPlayerStats->HaveWeapon(nWpn)) + { + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWpn); + if (pWeapon) + { + if (nextItem < m_List.GetNumControls()) + { + CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nextItem); + if (pCtrl) + { + pCtrl->SetString(pWeapon->szLongName); + pCtrl->Show(LTTRUE); + pCtrl->SetParam1(nWpn); + nextItem++; + } + } + else + { + uint16 ndx = AddControl(pWeapon->szLongName,MC_WEAPON); + CLTGUICtrl* pCtrl = m_List.GetControl(ndx); + pCtrl->SetParam1(nWpn); + nextItem++; + + } + if (g_pPlayerStats->GetCurrentWeapon() == nWpn) + nSel = nextItem-1; + } + } + } + + for (uint16 nIndex = nextItem; nIndex < m_List.GetNumControls(); nIndex++) + { + + CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nIndex); + if (pCtrl) + pCtrl->Show(LTFALSE); + } + + + + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + SetScale(g_pInterfaceResMgr->GetXRatio()); + m_Popup.SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + SetSelection(GetIndex(&m_List)); + + m_List.SetSelection(nSel); + } +} + +void CMenuInventory::UpdateAmmoText(bool bForce) +{ + if (m_Ammo.GetSelectedIndex() != m_nAmmo || bForce) + { + m_nAmmo = (uint8)m_Ammo.GetSelectedIndex(); + if (m_nAmmo == CLTGUIListCtrl::kNoSelection || m_nAmmoID[m_nAmmo] == WMGR_INVALID_ID) + { + m_AmmoDesc.SetString(" "); + return; + } + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(m_nAmmoID[m_nAmmo]); + m_AmmoDesc.SetString(LoadTempString(pAmmo->nDescId)); + + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuInventory.h b/Jack/ClientShellDLL/MenuInventory.h new file mode 100644 index 00000000..e472b108 --- /dev/null +++ b/Jack/ClientShellDLL/MenuInventory.h @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuInventory.h +// +// PURPOSE : In-game inventory menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_INVENTORY_H_) +#define _MENU_INVENTORY_H_ + +#include "BaseMenu.h" +#include "WeaponMgr.h" + +class CAmmoMenu : public CSubMenu +{ +public: + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + virtual LTBOOL OnMouseMove(int x, int y); + +}; + + +class CMenuInventory : public CBaseMenu +{ +public: + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void OnFocus(LTBOOL bFocus); + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); + + void UpdateAmmoText(bool bForce = false); + +protected: + + CAmmoMenu m_Popup; + CLTGUITextCtrl m_Name; + CLTGUITextCtrl m_Description; + CLTGUIButton m_Photo; + CLTGUIListCtrl m_Ammo; + CLTGUITextCtrl m_AmmoDesc; + + uint8 m_nAmmo; + uint8 m_nAmmoID[WMGR_MAX_AMMO_IDS]; + +}; + +#endif //!defined(_MENU_INVENTORY_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuKeys.cpp b/Jack/ClientShellDLL/MenuKeys.cpp new file mode 100644 index 00000000..eb2a98ca --- /dev/null +++ b/Jack/ClientShellDLL/MenuKeys.cpp @@ -0,0 +1,168 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuKeys.cpp +// +// PURPOSE : In-game key item menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MenuKeys.h" +#include "InterfaceMgr.h" +#include "clientres.h" +#include "KeyMgr.h" + +namespace +{ + enum eLocalMenuCmds + { + MC_KEY = MC_CUSTOM, + MC_POPUP, + }; + + uint8 nKeyID = WMGR_INVALID_ID; +} + + + +LTBOOL CMenuKeys::Init() +{ + m_MenuID = MENU_ID_KEYS; + + if (!CBaseMenu::Init()) return LTFALSE; + + SetTitle(IDS_TITLE_KEYS); + + LTIntPt popupSize = g_pLayoutMgr->GetMenuCustomPoint(m_MenuID,"PopupSize"); + m_Popup.Init(s_Frame,s_FrameTip,popupSize); + LTIntPt offset = m_Indent; + offset.y = 8; + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_TitleFontFace); + m_Name.Create("name",LTNULL,LTNULL,pFont,m_TitleFontSize,LTNULL); + m_Name.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_Name.Enable(LTFALSE); + m_Popup.AddControl(&m_Name,offset); + offset.y += (m_Name.GetHeight() + 4); + + + m_Image.Create(LTNULL,LTNULL,s_Frame); + m_Image.Enable(LTFALSE); + m_Popup.AddControl(&m_Image,offset); + offset.y += 64; + + pFont = g_pInterfaceResMgr->GetFont(m_FontFace); + m_Description.Create("description",MC_POPUP,LTNULL,pFont,m_FontSize,this); + m_Description.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_Description.SetFixedWidth( s_Size.x - (m_Indent.x * 2)); + m_Description.Enable(LTTRUE); + m_Popup.AddControl(&m_Description,offset); + offset.y += 64; + + m_Popup.SetSelection(m_Popup.GetIndex(&m_Description)); + m_Popup.SetBasePos(LTIntPt(320,160)); + + g_pInterfaceMgr->GetMenuMgr()->RegisterCommand(COMMAND_ID_KEYS,MENU_ID_KEYS); + + return LTTRUE; +} + +void CMenuKeys::Term() +{ + + m_Popup.RemoveAll(LTFALSE); + + CBaseMenu::Term(); +} + + +uint32 CMenuKeys::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + switch (nCommand) + { + case MC_KEY: + { + uint8 nID = (uint8) nParam1; + KEY* pKey = g_pKeyMgr->GetKey(nID); + m_Name.SetString(LoadTempString(pKey->nNameId)); + m_Description.SetString(LoadTempString(pKey->nDescriptionId)); + HTEXTURE hTmp = g_pInterfaceResMgr->GetTexture(pKey->szImage); + m_Image.SetTexture(hTmp); + + g_pInterfaceMgr->GetMenuMgr()->ShowSubMenu(&m_Popup); + nKeyID = nID; + } + break; + case MC_POPUP: + { + g_pInterfaceMgr->GetMenuMgr()->HideSubMenu(true); + } + break; + + default: + return CBaseMenu::OnCommand(nCommand,nParam1,nParam2); + } + return 1; +} + + +// This is called when the screen gets or loses focus +void CMenuKeys::OnFocus(LTBOOL bFocus) +{ + ClearSelection(); + if (bFocus) + { + uint16 nextItem = 0; + uint8 nTemp; + for (uint8 i = 0; i < (uint8)g_pKeyMgr->GetNumKeys(); i++) + { + if (g_pPlayerStats->GetKeys()->Have(i,nTemp)) + { + KEY* pKey = g_pKeyMgr->GetKey(i); + if (pKey) + { + if (nextItem < m_List.GetNumControls()) + { + CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nextItem); + if (pCtrl) + { + pCtrl->SetString(LoadTempString(pKey->nNameId)); + pCtrl->Show(LTTRUE); + pCtrl->SetParam1(i); + nextItem++; + } + } + else + { + uint16 ndx = AddControl(pKey->nNameId,MC_KEY); + CLTGUICtrl* pCtrl = m_List.GetControl(ndx); + pCtrl->SetParam1(i); + nextItem++; + } + } + } + } + + for (uint16 nIndex = nextItem; nIndex < m_List.GetNumControls(); nIndex++) + { + + CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nIndex); + if (pCtrl) + pCtrl->Show(LTFALSE); + } + + + + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + SetScale(g_pInterfaceResMgr->GetXRatio()); + m_Popup.SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + SetSelection(GetIndex(&m_List)); + + } +} diff --git a/Jack/ClientShellDLL/MenuKeys.h b/Jack/ClientShellDLL/MenuKeys.h new file mode 100644 index 00000000..9847ff5e --- /dev/null +++ b/Jack/ClientShellDLL/MenuKeys.h @@ -0,0 +1,39 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuKeys.h +// +// PURPOSE : In-game key item menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_KEYS_H_) +#define _MENU_KEYS_H_ + +#include "BaseMenu.h" + +class CMenuKeys : public CBaseMenu +{ +public: + + virtual LTBOOL Init(); + virtual void Term(); + + virtual void OnFocus(LTBOOL bFocus); + + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); + +protected: + + CSubMenu m_Popup; + CLTGUITextCtrl m_Name; + CLTGUITextCtrl m_Description; + CLTGUIButton m_Image; + +}; + +#endif //!defined(_MENU_KEYS_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuMgr.cpp b/Jack/ClientShellDLL/MenuMgr.cpp new file mode 100644 index 00000000..3b3d2933 --- /dev/null +++ b/Jack/ClientShellDLL/MenuMgr.cpp @@ -0,0 +1,1026 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuMgr.cpp +// +// PURPOSE : Manager for in-game menus +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "MenuMgr.h" +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + +static char s_aMenuName[MENU_ID_UNASSIGNED+1][32] = +{ +#define INCLUDE_AS_STRING +#include "MenuEnum.h" +#undef INCLUDE_AS_STRING + +}; + +namespace +{ + bool bHK = false; + uint32 g_nSelectColor = argbWhite; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CMenuMgr::CMenuMgr() +{ + m_nMenuIndex = 0xFF; + m_pLastMenu = LTNULL; + m_pCurrentMenu = LTNULL; + m_pSubMenu = LTNULL; + + m_fSlideInTime = 0.5f; + m_fSlideOutTime = 0.5f; + +} + +CMenuMgr::~CMenuMgr() +{ + +} + + +LTBOOL CMenuMgr::Init() +{ + //build menu array + m_MenuArray.reserve(MENU_ID_UNASSIGNED); + + //add menus here + m_MenuArray.push_back(&m_MenuSystem); + m_MenuArray.push_back(&m_MenuMission); + + //init menus + MenuArray::iterator iter = m_MenuArray.begin(); + while (iter != m_MenuArray.end()) + { + if (!(*iter)->Init()) + return LTFALSE; + iter++; + } + + m_fSlideInTime = g_pLayoutMgr->GetMenuSlideInTime(); + m_fSlideOutTime = g_pLayoutMgr->GetMenuSlideOutTime(); + m_nMenuPos = g_pLayoutMgr->GetMenuPosition(); + + char szTemp[128]; + char *pTag = "Menu"; + + g_pLayoutMgr->GetString(pTag,"SlideInSound",szTemp,sizeof(szTemp)); + m_sSlideInSound = szTemp; + + g_pLayoutMgr->GetString(pTag,"SlideOutSound",szTemp,sizeof(szTemp)); + m_sSlideOutSound = szTemp; + + g_pLayoutMgr->GetString(pTag,"Bar",szTemp,sizeof(szTemp)); + HTEXTURE hBar = g_pInterfaceResMgr->GetTexture(szTemp); + + g_pLayoutMgr->GetString(pTag,"BarTip",szTemp,sizeof(szTemp)); + HTEXTURE hBarTip = g_pInterfaceResMgr->GetTexture(szTemp); + + + + LTIntPt size = g_pLayoutMgr->GetPoint(pTag,"BarSize"); + uint16 xpos = g_pLayoutMgr->GetInt(pTag,"BarTextOffset"); + uint8 fontFace = (uint8)g_pLayoutMgr->GetInt(pTag,"BarFont"); + uint8 fontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"BarFontSize"); + m_nBarPos = g_pLayoutMgr->GetInt(pTag,"BarPosition"); + int nBarSpacing = g_pLayoutMgr->GetInt(pTag,"BarSpacing"); + LTVector vCol = g_pLayoutMgr->GetVector(pTag,"BarSelectColor"); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + g_nSelectColor = SET_ARGB(0xFF,nR,nG,nB); + + + m_MenuBar.Init(hBar,hBarTip,size); + m_MenuBar.SetBasePos(LTIntPt(0,m_nBarPos)); + + CUIFont* pFont = g_pInterfaceResMgr->GetFont(fontFace); + + LTIntPt offset(xpos,(size.y-fontSize)/2); + for (int i = 0; i < (int)m_MenuArray.size() ; i++) + { + CLTGUITextCtrl *pCtrl = debug_new(CLTGUITextCtrl); + CBaseMenu *pMenu = m_MenuArray[i]; + pCtrl->Create(pMenu->GetTitle(),i,NULL,pFont,fontSize,&m_MenuBar); + pCtrl->SetColors(g_nSelectColor,argbBlack,argbWhite); + pCtrl->SetParam1(pMenu->GetMenuID()); + m_MenuBar.AddControl(pCtrl,offset); + } + + offset.x += m_MenuBar.GetBasePos().x; + offset.y += m_MenuBar.GetBasePos().y; + for (int i = (int)m_MenuArray.size()-1; i >= 0; i--) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_MenuBar.GetControl(i); + offset.x -= (pCtrl->GetBaseWidth()+nBarSpacing); + pCtrl->SetBasePos(offset); + } + + return LTTRUE; +} + +void CMenuMgr::Term() +{ + //term menus + MenuArray::iterator iter = m_MenuArray.begin(); + while (iter != m_MenuArray.end()) + { + (*iter)->Term(); + iter++; + } + + //clear menu array + m_MenuArray.clear(); + + //term menus + KeyArray::iterator kiter = m_HotKeys.begin(); + while (kiter != m_HotKeys.end()) + { + debug_delete(*kiter); + kiter++; + } + + //clear menu array + m_HotKeys.clear(); + +} + + +LTBOOL CMenuMgr::HandleKeyDown (int vkey, int rep) +{ + + //check for hot keys + + //if the key is escape, switch to the system menu, only if there is no open menu + //otherwise (i.e. either not Escape or there is no open menu) see if we hit a hot key and switch to the menu + if (vkey != VK_ESCAPE || !m_pCurrentMenu) + { + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (vkey == (*iter)->m_vk); + if (!found) + iter++; + } + if (found && (!m_pCurrentMenu || (*iter)->m_id != m_pCurrentMenu->GetMenuID()) ) + { + g_pInterfaceMgr->SwitchToMenu((*iter)->m_id); + bHK = true; + return LTTRUE; + } + } + + + //if we're here, we didn't hit a hot key, so if we don't have a menu, we don't want the key + if (!m_pCurrentMenu) + { + return LTFALSE; + } + + //see who wants the key + CLTGUIWindow *pMenu = LTNULL; + if (m_pSubMenu) + { + pMenu = m_pSubMenu; + } + else + pMenu = m_pCurrentMenu; + + //try to map the key to a standard action... + LTBOOL handled = LTFALSE; + while (pMenu && !handled) + { + switch (vkey) + { + case VK_LEFT: + { + handled = pMenu->OnLeft(); + if (!handled && pMenu == m_pCurrentMenu) + { + handled = PreviousMenu(); + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + } + break; + } + case VK_RIGHT: + { + LTBOOL handled = LTFALSE; + handled = pMenu->OnRight(); + if (!handled && pMenu == m_pCurrentMenu) + { + handled = NextMenu(); + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + } + break; + } + case VK_UP: + { + if (pMenu->OnUp()) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + handled = LTTRUE; + } + break; + } + case VK_DOWN: + { + if (pMenu->OnDown()) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + handled = LTTRUE; + } + break; + } + case VK_RETURN: + { + if (pMenu->OnEnter()) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + handled = LTTRUE; + } + break; + } + default: + { + //no standard action, see if the menu wants to handle it directly + handled = m_pCurrentMenu->HandleKeyDown(vkey,rep); + break; + } + + } + if (!handled) + { + if (pMenu == m_pSubMenu) + pMenu = m_pCurrentMenu; + else + pMenu = NULL; + } + + } + + return handled; +} + +void CMenuMgr::HandleKeyUp (int vkey) +{ + //check for hot keys + if (m_pCurrentMenu) + { + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (vkey == (*iter)->m_vk); + if (!found) + iter++; + } + if (found && (*iter)->m_id == m_pCurrentMenu->GetMenuID()) + { + if (!bHK) + SlideOut(); + bHK = false; + return; + } + + + } + + if (vkey == VK_ESCAPE) + { + CLTGUIWindow *pMenu = LTNULL; + if (m_pSubMenu) + { + HideSubMenu(true); + } + else if (m_pCurrentMenu && !m_pCurrentMenu->OnEscape()) + { + SlideOut(); + } + + } +} + + + + + +LTBOOL CMenuMgr::SetCurrentMenu(eMenuID menuID) +{ + MenuArray::iterator iter = m_MenuArray.begin(); + uint8 index = 0; + while (iter != m_MenuArray.end() && (*iter)->GetMenuID() != menuID ) + { + index++; + iter++; + } + + if (iter != m_MenuArray.end() && (*iter)->IsEnabled()) + { + m_nMenuIndex = index; + SwitchToMenu(*iter); + return LTTRUE; + } + return LTFALSE; +} + +LTBOOL CMenuMgr::SetCurrentMenu(uint8 index) +{ + if (index < m_MenuArray.size() && m_MenuArray[index]->IsEnabled() ) + { + m_nMenuIndex = index; + SwitchToMenu(m_MenuArray[index]); + return LTTRUE; + } + return LTFALSE; +} + +LTBOOL CMenuMgr::NextMenu() +{ + if (m_MenuArray.size() == 0) return LTFALSE; + + uint8 index = m_nMenuIndex + 1; + if (index >= m_MenuArray.size()) + index = 0; + + while (index != m_nMenuIndex) + { + if (SetCurrentMenu(index)) + return LTTRUE; + else + { + index++; + if (index >= m_MenuArray.size()) + index = 0; + } + } + + + return LTFALSE; +} + +LTBOOL CMenuMgr::PreviousMenu() +{ + if (m_MenuArray.size() == 0) return LTFALSE; + + uint8 index = m_nMenuIndex; + if (index == 0) + index = m_MenuArray.size(); + index--; + + while (index != m_nMenuIndex) + { + if (SetCurrentMenu(index)) + return LTTRUE; + else + { + if (index == 0) + index = m_MenuArray.size(); + index--; + } + } + return LTFALSE; +} + +void CMenuMgr::ExitMenus() +{ + if (m_pSubMenu) m_pSubMenu = LTNULL; + if (m_pCurrentMenu) + { + m_pCurrentMenu->OnFocus(LTFALSE); + m_pLastMenu = m_pCurrentMenu; + } + m_pCurrentMenu = LTNULL; +} + + + +void CMenuMgr::Update() +{ + if (!m_pCurrentMenu) return; + if (m_MenuSlide.IsStarted()) + { + m_pCurrentMenu->SetBasePos(m_MenuSlide.GetCurrentPos()); + if (m_MenuSlide.IsDone()) + { + m_MenuSlide.Stop(); + if (m_MenuSlide.IsSlidingOut()) + { + g_pInterfaceMgr->ChangeState(GS_PLAYING); + m_SubSlide.Stop(); + m_BarSlide.Stop(); + } + } + + } + + if (m_SubSlide.IsStarted() && m_pSubMenu) + { + m_pSubMenu->SetBasePos(m_SubSlide.GetCurrentPos()); + if (m_SubSlide.IsDone()) + { + m_SubSlide.Stop(); + if (m_SubSlide.IsSlidingOut()) + m_pSubMenu = NULL; + } + + } + + if (m_BarSlide.IsStarted()) + { + m_MenuBar.SetBasePos(m_BarSlide.GetCurrentPos()); + if (m_BarSlide.IsDone()) + { + m_BarSlide.Stop(); + } + + } + + + +} + +void CMenuMgr::Render() +{ + if (m_pCurrentMenu) + { + m_pCurrentMenu->Render(); + m_MenuBar.Render(); + } + if (m_pSubMenu) + { + m_pSubMenu->Render(); + } + +} + + +void CMenuMgr::SlideIn() +{ + if (m_MenuSlide.IsStarted()) return; + ASSERT(m_pCurrentMenu); + if (!m_pCurrentMenu) return; + + LTIntPt startPos, endPos; + startPos.x = m_nMenuPos; + startPos.y = -((3 * m_pCurrentMenu->GetHeight()) / 2 + m_pCurrentMenu->GetWidth()) / 2 ; + + endPos.x = m_nMenuPos; + endPos.y = 0; + + g_pClientSoundMgr->PlayInterfaceSound(m_sSlideInSound.c_str()); + m_MenuSlide.Start(startPos,endPos,m_fSlideInTime, false); + + startPos.x = -((3 * m_MenuBar.GetHeight()) / 2 + m_MenuBar.GetWidth()) / 2 ; + startPos.y = m_nBarPos; + + endPos.x = 0; + endPos.y = m_nBarPos; + + m_BarSlide.Start(startPos,endPos,m_fSlideInTime, false); + + +} + +void CMenuMgr::SlideOut() +{ + if (m_MenuSlide.IsStarted()) return; + if (m_pSubMenu) + { + HideSubMenu(true); + } + + LTIntPt startPos, endPos; + endPos.x = m_nMenuPos; + endPos.y = -((3 * m_pCurrentMenu->GetHeight()) / 2 + m_pCurrentMenu->GetWidth()) / 2; + + startPos.x = m_nMenuPos; + startPos.y = 0; + + g_pClientSoundMgr->PlayInterfaceSound(m_sSlideOutSound.c_str()); + m_MenuSlide.Start(startPos,endPos,m_fSlideInTime,true); + + startPos.x = 0; + startPos.y = m_nBarPos; + + endPos.x = -((3 * m_MenuBar.GetHeight()) / 2 + m_MenuBar.GetWidth()) / 2 ; + endPos.y = m_nBarPos; + + m_BarSlide.Start(startPos,endPos,m_fSlideInTime,true); + +} + + + +void CMenuMgr::ScreenDimsChanged() +{ + if (m_pCurrentMenu) + { + m_pCurrentMenu->SetScale(g_pInterfaceResMgr->GetXRatio()); + } + if (m_pSubMenu) + { + m_pSubMenu->SetScale(g_pInterfaceResMgr->GetXRatio()); + } + m_MenuBar.SetScale(g_pInterfaceResMgr->GetXRatio()); +} + +void CMenuMgr::SwitchToMenu(CBaseMenu *pNewMenu) +{ + if (!pNewMenu || !pNewMenu->IsEnabled()) + return; + + if (m_pSubMenu) + { + HideSubMenu(true); + } + // Tell the old menu that it is losing focus + if (m_pCurrentMenu) + { + m_pCurrentMenu->OnFocus(LTFALSE); + } + + m_pLastMenu = m_pCurrentMenu; + m_pCurrentMenu=pNewMenu; + + // Tell the new menu that it is gaining focus + if (pNewMenu) + { + LTIntPt tmp = pNewMenu->GetBasePos(); + tmp.y = 0; + pNewMenu->SetBasePos(tmp); + pNewMenu->OnFocus(LTTRUE); + + m_MenuBar.SetScale(g_pInterfaceResMgr->GetXRatio()); + for (uint8 i =0; i < m_MenuArray.size(); i++) + { + CLTGUICtrl* pCtrl = m_MenuBar.GetControl(i); + pCtrl->Enable(i != m_nMenuIndex); + } + + + } +} + +// Mouse messages +void CMenuMgr::OnLButtonDown(int x, int y) +{ + if (m_pSubMenu && m_pSubMenu->OnLButtonDown(x,y)) return; + if (m_pCurrentMenu) + { + if (!m_pCurrentMenu->OnLButtonDown(x,y)) + m_MenuBar.OnLButtonDown(x,y); + } +} + +void CMenuMgr::OnLButtonUp(int x, int y) +{ + if (m_pSubMenu && m_pSubMenu->OnLButtonUp(x,y)) return; + if (m_pCurrentMenu) + { + if (!m_pCurrentMenu->OnLButtonUp(x,y)) + m_MenuBar.OnLButtonUp(x,y); + } +} + +void CMenuMgr::OnLButtonDblClick(int x, int y) +{ + if (m_pSubMenu &&m_pSubMenu->OnLButtonDblClick(x,y)) return; + if (m_pCurrentMenu) + m_pCurrentMenu->OnLButtonDblClick(x,y); +} + +void CMenuMgr::OnRButtonDown(int x, int y) +{ + if (m_pSubMenu && m_pSubMenu->OnRButtonDown(x,y)) return; + if (m_pCurrentMenu) + m_pCurrentMenu->OnRButtonDown(x,y); +} + +void CMenuMgr::OnRButtonUp(int x, int y) +{ + CLTGUIWindow *pMenu = LTNULL; + if (m_pSubMenu) + { + HideSubMenu(true); + } + else if (m_pCurrentMenu && !m_pCurrentMenu->OnEscape()) + { + SlideOut(); + } +} + +void CMenuMgr::OnRButtonDblClick(int x, int y) +{ + if (m_pSubMenu && m_pSubMenu->OnRButtonDblClick(x,y)) return; + if (m_pCurrentMenu) + m_pCurrentMenu->OnRButtonDblClick(x,y); +} + +void CMenuMgr::OnMouseMove(int x, int y) +{ + if (m_pSubMenu && m_pSubMenu->OnMouseMove(x,y)) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + return; + } + if (m_pCurrentMenu) + { + m_pCurrentMenu->OnMouseMove(x,y); + if (m_MenuBar.IsOnMe(x,y)) + { + if (m_MenuBar.OnMouseMove(x,y)) + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + } + else + m_MenuBar.ClearSelection(); + } +} + + +const char* CMenuMgr::GetMenuName(eMenuID id) +{ + return s_aMenuName[id]; +} + +CBaseMenu* CMenuMgr::GetMenu(eMenuID menuID) +{ + MenuArray::iterator iter = m_MenuArray.begin(); + while (iter != m_MenuArray.end() && (*iter)->GetMenuID() != menuID ) + { + iter++; + } + + if (iter != m_MenuArray.end()) + { + return (*iter); + } + return LTNULL; +} + +eMenuID CMenuMgr::GetCurrentMenuID() +{ + if (m_pCurrentMenu) + return m_pCurrentMenu->GetMenuID(); + else + return MENU_ID_NONE; +} + + +void CMenuMgr::RegisterHotKey(int vk, eMenuID id) +{ + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (vk == (*iter)->m_vk); + if (!found) + iter++; + } + if (found) + { + (*iter)->m_id = id; + } + else + { + CMenuHotKey* newKey = debug_new3(CMenuHotKey,vk,COMMAND_ID_UNASSIGNED,id); + m_HotKeys.push_back(newKey); + } + +} +void CMenuMgr::RegisterCommand(int command, eMenuID id) +{ + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (command == (*iter)->m_command); + if (!found) + iter++; + } + if (found) + { + (*iter)->m_id = id; + } + else + { + CMenuHotKey* newKey = debug_new3(CMenuHotKey,-1,command,id); + m_HotKeys.push_back(newKey); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMenuMgr::OnCommandOn() +// +// PURPOSE: Handle command on +// +// ----------------------------------------------------------------------- // + +LTBOOL CMenuMgr::OnCommandOn(int command) +{ + if (m_pSubMenu) return LTFALSE; + + if (GS_PLAYING != g_pInterfaceMgr->GetGameState()) return LTFALSE; + + + + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (command == (*iter)->m_command); + if (!found) + iter++; + } + + + if (found) + { + if (g_pInterfaceMgr->SwitchToMenu((*iter)->m_id)) + { + bHK = true; + return LTTRUE; + } + } + + return LTFALSE; + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMenuMgr::OnCommandOff() +// +// PURPOSE: Handle command off +// +// ----------------------------------------------------------------------- // + +LTBOOL CMenuMgr::OnCommandOff(int command) +{ + if (m_pSubMenu || !m_pCurrentMenu ) return LTFALSE; + + + if (GS_MENU != g_pInterfaceMgr->GetGameState()) return LTFALSE; + + + + LTBOOL found = LTFALSE; + KeyArray::iterator iter = m_HotKeys.begin(); + while (iter != m_HotKeys.end() && !found) + { + found = (command == (*iter)->m_command); + if (!found) + iter++; + } + + + //if we found a menu that uses the command as a hotkey... + if (found) + { + //close the current menu if the hotkey belongs to it.. + if ((*iter)->m_id == m_pCurrentMenu->GetMenuID()) + { + if (!bHK) + SlideOut(); + bHK = false; + return LTTRUE; + } + else + { + //switch to the appropriate menu + g_pInterfaceMgr->SwitchToMenu((*iter)->m_id); + bHK = false; + return LTTRUE; + + } + } + + return LTFALSE; + +} + + + +void CMenuMgr::ShowSubMenu(CSubMenu* pSubMenu) +{ + if (pSubMenu) + { + if (m_pSubMenu) + { + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + else + { + + if (m_SubSlide.IsStarted()) return; + + LTIntPt startPos, endPos; + + endPos = pSubMenu->GetBasePos(); + endPos.x = 0; + + startPos = endPos; + startPos.x = -((3 * pSubMenu->GetWidth()) / 2 + pSubMenu->GetHeight()) / 2 ; + + g_pClientSoundMgr->PlayInterfaceSound(m_sSlideInSound.c_str()); + m_SubSlide.Start(startPos,endPos,m_fSlideInTime, false); + } + + } + m_pSubMenu = pSubMenu; + if (m_pSubMenu) + m_pSubMenu->SetScale(g_pInterfaceResMgr->GetXRatio()); + + +} + +void CMenuMgr::HideSubMenu(bool bSlideOut) +{ + if (!bSlideOut) + { + m_pSubMenu = NULL; + m_SubSlide.Stop(); + return; + } + if (m_pSubMenu) + { + m_pSubMenu->SetScale(g_pInterfaceResMgr->GetXRatio()); + + if (m_SubSlide.IsStarted()) return; + + LTIntPt startPos, endPos; + + endPos = m_pSubMenu->GetBasePos(); + endPos.x = -((3 * m_pSubMenu->GetWidth()) / 2 + m_pSubMenu->GetHeight()) / 2 ; + + startPos = endPos; + startPos.x = 0; + + + + if (!m_MenuSlide.IsStarted()) + g_pClientSoundMgr->PlayInterfaceSound(m_sSlideOutSound.c_str()); + + m_SubSlide.Start(startPos,endPos,m_fSlideOutTime, true); + } + +} + + +void CMenuMgr::EnableMenuBar(bool bEnable/*=true*/, uint32 nMenuFlags/*=MB_ALL*/) +{ + // Determine the state of each control based on the flags passed... + + uint32 MBCtrlFlags[MB_NUM_CTRLS] = + { + MB_SYSTEM, + MB_MISSION, + MB_INVENTORY, + MB_KEYS, + MB_INTEL, + MB_PLAYER + }; + + if (!IsCoopMultiplayerGameType()) + { + nMenuFlags &= ~(MB_MISSION & MB_KEYS & MB_INTEL & MB_PLAYER); + } + + for (int i=0; i < MB_NUM_CTRLS; i++) + { + CLTGUICtrl* pCtrl = m_MenuBar.GetControl(i); + if (pCtrl) + { + if (MBCtrlFlags[i] & nMenuFlags) + { + pCtrl->Enable(bEnable); + } + else + { + pCtrl->Enable(!bEnable); + } + + // Okay this is pretty much a hack since we use the disabled state to + // really specify a selected control (see CMenuMgr::SwitchToMenu()), but in the + // case of Enable = true we really want the menu bar to be disabled, we'll handle + // this here by changing the color of the disabled state... + + if (pCtrl->IsDisabled()) + { + pCtrl->SetColors(g_nSelectColor,argbBlack,argbGray); + } + else + { + // Control is enabled, so we'll set it's "disabled" color to white... + + pCtrl->SetColors(g_nSelectColor,argbBlack,argbWhite); + + // We need to disable the current menu control here using the new + // color (i.e., it will appear white signifying it is actually + // the current control)... + + if (i == m_nMenuIndex) + { + pCtrl->Enable(false); + } + } + } + } +} + + + +void CMenuMgr::EnableMenus() +{ + bool bSPMenus = IsCoopMultiplayerGameType(); + + m_MenuMission.Enable(bSPMenus); +} + + + + + + +////////////////////////////////////////////////////////////////////// +// DataStructure to handle sliding in of menu elements +////////////////////////////////////////////////////////////////////// + + +CMenuSlide::CMenuSlide() +{ + m_fStartTime = 0.0f; + m_fDuration = 0.0f; + m_bSlidingOut = false; +} + +void CMenuSlide::Start(LTIntPt startPos,LTIntPt endPos,float fDuration, bool bSlidingOut) +{ + m_startPos = startPos; + m_offset.x = endPos.x - startPos.x; + m_offset.y = endPos.y - startPos.y; + + m_fStartTime = g_pLTClient->GetTime(); + m_fDuration = fDuration; + + m_bSlidingOut = bSlidingOut; +} + +LTIntPt CMenuSlide::GetCurrentPos() +{ + LTIntPt curPos; + float fPercent = 1.0f; + + if (m_fDuration > 0.0f) + { + float fElapsed = g_pLTClient->GetTime() - m_fStartTime; + if (fElapsed < m_fDuration) + fPercent = fElapsed / m_fDuration; + } + + + curPos.x = m_startPos.x + (int)(fPercent * (float)m_offset.x); + curPos.y = m_startPos.y + (int)(fPercent * (float)m_offset.y); + + return curPos; +} + +bool CMenuSlide::IsDone() +{ + if (m_fDuration <= 0.0f) return true; + + float fElapsed = g_pLTClient->GetTime() - m_fStartTime; + + return (fElapsed >= m_fDuration); + +} + + +uint32 CMenuBar::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + if (nParam1 >= 0 && nParam1 < MENU_ID_UNASSIGNED) + { + g_pInterfaceMgr->GetMenuMgr()->SetCurrentMenu((eMenuID)nParam1); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return 1; + } + else + { + g_pInterfaceMgr->GetMenuMgr()->SlideOut(); + return 1; + } + return 0; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuMgr.h b/Jack/ClientShellDLL/MenuMgr.h new file mode 100644 index 00000000..5fdd5e33 --- /dev/null +++ b/Jack/ClientShellDLL/MenuMgr.h @@ -0,0 +1,162 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuMgr.h +// +// PURPOSE : Manager for in-game menus +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_MGR_H_) +#define _MENU_MGR_H_ + +#include "InterfaceResMgr.h" +#include "MenuSystem.h" +#include "MenuMission.h" + +// These flags are used in CMenuMgr::EnableMenuBar and need to correspond to each +// item on the menu bar + +#define MB_SYSTEM (1<<0) +#define MB_MISSION (1<<1) +#define MB_INVENTORY (1<<2) +#define MB_KEYS (1<<3) +#define MB_INTEL (1<<4) +#define MB_PLAYER (1<<5) +#define MB_ALL 0xFFFFFFFF +#define MB_NUM_CTRLS 6 + +class CMenuHotKey +{ +public: + CMenuHotKey(int vk, int command, eMenuID id) {m_vk = vk; m_command = command; m_id = id;} + int m_vk; + int m_command; + eMenuID m_id; +}; + +class CMenuSlide +{ +public: + CMenuSlide(); + void Start(LTIntPt startPos,LTIntPt endPos,float fDuration, bool bSlidingOut); + void Stop() {m_fDuration = 0.0f;} + + bool IsStarted() {return (m_fDuration > 0.0f);} + bool IsDone(); + bool IsSlidingOut() {return m_bSlidingOut;} + + LTIntPt GetCurrentPos(); + +private: + LTIntPt m_startPos; + LTIntPt m_offset; + + float m_fStartTime; + float m_fDuration; + + bool m_bSlidingOut; + + +}; + +class CMenuBar : public CSubMenu +{ +public: + virtual LTBOOL HandleKeyUp(int key) {return LTFALSE;} + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); +}; + +class CMenuMgr +{ +public: + CMenuMgr(); + virtual ~CMenuMgr(); + LTBOOL Init(); + void Term(); + + LTBOOL HandleKeyDown (int vkey, int rep); + void HandleKeyUp (int vkey); + LTBOOL OnCommandOn(int command); + LTBOOL OnCommandOff(int command); + + + // Mouse messages + void OnLButtonDown(int x, int y); + void OnLButtonUp(int x, int y); + void OnLButtonDblClick(int x, int y); + void OnRButtonDown(int x, int y); + void OnRButtonUp(int x, int y); + void OnRButtonDblClick(int x, int y); + void OnMouseMove(int x, int y); + + + CBaseMenu* GetMenu(eMenuID menuID); + + CBaseMenu* GetCurrentMenu() {return m_pCurrentMenu;} + CBaseMenu* GetLastMenu() {return m_pLastMenu;} + eMenuID GetCurrentMenuID(); + LTBOOL SetCurrentMenu(eMenuID menuID); + LTBOOL SetCurrentMenu(uint8 index); + LTBOOL NextMenu(); + LTBOOL PreviousMenu(); + void ExitMenus(); + + //enables/disables menus based on game type + void EnableMenus(); + + void EnableMenuBar(bool bEnable=true, uint32 nMenuFlags=MB_ALL); + + const char* GetMenuName(eMenuID id); + + void Update(); + + // Renders the Menu to a surface + void Render(); + void ScreenDimsChanged(); + + void ShowSubMenu(CSubMenu* pSubMenu); + void HideSubMenu(bool bSlideOut); + + void RegisterHotKey(int vk, eMenuID id); + void RegisterCommand(int command, eMenuID id); + + void SlideIn(); + void SlideOut(); + +private: + + void SwitchToMenu(CBaseMenu *pNewMenu); + + uint8 m_nMenuIndex; + CBaseMenu* m_pCurrentMenu; // The current Menu + CBaseMenu* m_pLastMenu; // The last menu displayed + CSubMenu* m_pSubMenu; // The current sub Menu + + CMenuBar m_MenuBar; + + //Menus + typedef std::vector MenuArray; + MenuArray m_MenuArray; // Pointer to each Menu + + typedef std::vector KeyArray; + KeyArray m_HotKeys; // Pointer to each Menu + + CMenuSystem m_MenuSystem; + CMenuMission m_MenuMission; + + CMenuSlide m_MenuSlide; + CMenuSlide m_BarSlide; + CMenuSlide m_SubSlide; + + float m_fSlideInTime; + float m_fSlideOutTime; + int m_nMenuPos; + int m_nBarPos; + std::string m_sSlideInSound; + std::string m_sSlideOutSound; +}; + +#endif // _MENU_MGR_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuMission.cpp b/Jack/ClientShellDLL/MenuMission.cpp new file mode 100644 index 00000000..5e2a608d --- /dev/null +++ b/Jack/ClientShellDLL/MenuMission.cpp @@ -0,0 +1,406 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuMission.cpp +// +// PURPOSE : In-game system menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MenuMission.h" +#include "InterfaceMgr.h" +#include "MissionButeMgr.h" +#include "clientres.h" +#include "ObjectiveControl.h" +#include "MissionMgr.h" + +namespace +{ + char szOptional[256] = ""; + uint32 argbCompleted = 0xFF303030; + uint8 nObjSize = 10; +} + +CMenuMission::CMenuMission() +{ + m_pNameCtrl = LTNULL; + m_pLevelCtrl = LTNULL; + m_pObjLabel = LTNULL; + m_pParameters = LTNULL; + m_nFirstObj = -1; +} + + +LTBOOL CMenuMission::Init() +{ + m_MenuID = MENU_ID_MISSION; + + if (!CBaseMenu::Init()) return LTFALSE; + + SetTitle(IDS_TITLE_BRIEFING); + + uint16 nWidth = s_Size.x - 2*m_Indent.x; + + uint8 nMissSize = (uint8)g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"MissionFontSize"); + uint16 ndx = AddControl("",0,LTTRUE); + m_pNameCtrl = (CLTGUITextCtrl *)m_List.GetControl(ndx); + m_pNameCtrl->SetFont(NULL,nMissSize); + m_pNameCtrl->SetFixedWidth(nWidth); + + uint8 nLevSize = (uint8)g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"LevelFontSize"); + nWidth -= nLevSize; + ndx = AddControl("",0,LTTRUE); + m_pLevelCtrl = (CLTGUITextCtrl *)m_List.GetControl(ndx); + m_pLevelCtrl->SetFont(NULL,nLevSize); + m_pLevelCtrl->SetIndent(nLevSize); + m_pLevelCtrl->SetFixedWidth(nWidth); + + AddControl(" ",0,LTTRUE); + + nObjSize = (uint8)g_pLayoutMgr->GetMenuCustomInt(m_MenuID,"ObjectiveFontSize"); + + m_nFirstObj = m_List.GetNumControls(); + + m_List.SetItemSpacing(4); + m_List.SetScrollByPage(LTTRUE); + + g_pInterfaceMgr->GetMenuMgr()->RegisterCommand(COMMAND_ID_MISSION,MENU_ID_MISSION); + + LTVector vColor = g_pLayoutMgr->GetMenuCustomVector(m_MenuID,"CompletedColor"); + uint8 nA = 255; + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + argbCompleted = SET_ARGB(nA,nR,nG,nB); + + LoadString(IDS_OBJECTIVES_OPTIONAL,szOptional,sizeof(szOptional)); + + m_BulletTex = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\bullet.dtx"); + m_CompletedTex = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\completed.dtx"); + + + return LTTRUE; +} + +void CMenuMission::Term() +{ + + //take anything we've cached out of the list, so that we + // don't try to delete them twice + RemoveObjectives(); + + //delete our cache + ControlArray::iterator iter = m_Objectives.begin(); + while (iter != m_Objectives.end()) + { + debug_delete(*iter); + iter++; + } + m_Objectives.clear(); + + if (m_pObjLabel) + { + debug_delete(m_pObjLabel); + m_pObjLabel = LTNULL; + } + if (m_pParameters) + { + debug_delete(m_pParameters); + m_pParameters = LTNULL; + } + + CBaseMenu::Term(); +} + +uint32 CMenuMission::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ +// switch (nCommand) +// { +// default: + return CBaseMenu::OnCommand(nCommand,nParam1,nParam2); +// } +// return 1; +} + +// This is called when the screen gets or loses focus +void CMenuMission::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + int mission = g_pMissionMgr->GetCurrentMission(); + int level = g_pMissionMgr->GetCurrentLevel(); + MISSION* pMission = g_pMissionButeMgr->GetMission(mission); + if (pMission) + { + m_pNameCtrl->SetString(LoadTempString(pMission->nNameId)); + LEVEL* pLevel = g_pMissionButeMgr->GetLevel(mission,level); + if (pLevel) + { + m_pLevelCtrl->SetString(LoadTempString(pLevel->nNameId)); + } + else + m_pLevelCtrl->SetString(" "); + + } + else + { + m_pNameCtrl->SetString(LoadTempString(IDS_CUSTOM_LEVEL)); + m_pLevelCtrl->SetString(" "); + } + + uint16 nextItem = m_nFirstObj; + uint16 numItems = 0; + uint16 nWidth = s_Size.x - 2*m_Indent.x; + + g_pPlayerStats->SetObjectivesSeen(); + + // add required objectives + IDList* pObj = g_pPlayerStats->GetObjectives(); + + //check to see if we need to add a label + if (pObj->m_IDArray.size()) + { + // if we already have created a objectives label, use it + if (m_pObjLabel) + { + m_List.AddControl(m_pObjLabel); + } + else + { + // otherwise create a label + uint16 ndx = AddControl(IDS_OBJECTIVES,0,LTTRUE); + m_pObjLabel = (CLTGUITextCtrl *)m_List.GetControl(ndx); + } + } + + for (int i = pObj->m_IDArray.size()-1; i >= 0 ; i--) + { + CObjectiveCtrl* pCtrl = LTNULL; + uint32 objID = pObj->m_IDArray[i]; + // if we don't have a cached objective control, create a new one + if (numItems >= m_Objectives.size()) + { + uint16 ndx = AddObjectiveControl(objID); + pCtrl = (CObjectiveCtrl*)m_List.GetControl(ndx); + pCtrl->SetFixedWidth(nWidth); + numItems++; + } + else + { + //otherwise, grab one from the cache + pCtrl = (CObjectiveCtrl*)m_Objectives[numItems]; + m_List.AddControl(pCtrl); + pCtrl->SetString(LoadTempString(objID)); + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->SetTexture(m_BulletTex); + numItems++; + + } + + } + + // add optional objectives + pObj = g_pPlayerStats->GetOptionalObjectives(); + + //check to see if we need to add a label + if (pObj->m_IDArray.size() && !numItems) + { + // if we already have created a objectives label, use it + if (m_pObjLabel) + { + m_List.AddControl(m_pObjLabel); + } + else + { + // otherwise create a label + uint16 ndx = AddControl(IDS_OBJECTIVES,0,LTTRUE); + m_pObjLabel = (CLTGUITextCtrl *)m_List.GetControl(ndx); + } + } + for (i = pObj->m_IDArray.size()-1; i >= 0 ; i--) + { + CObjectiveCtrl* pCtrl = LTNULL; + uint32 objID = pObj->m_IDArray[i]; + // if we don't have a cached objective control, create a new one + if (numItems >= m_Objectives.size()) + { + uint16 ndx = AddObjectiveControl(objID,LTFALSE,LTTRUE); + pCtrl = (CObjectiveCtrl*)m_List.GetControl(ndx); + pCtrl->SetFixedWidth(nWidth); + numItems++; + } + else + { + //otherwise, grab one from the cache + pCtrl = (CObjectiveCtrl*)m_Objectives[numItems]; + m_List.AddControl(pCtrl); + char szString[256] = ""; + LoadString(objID,szString,sizeof(szString)); + strcat(szString,szOptional); + + pCtrl->SetString(szString); + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->SetTexture(m_BulletTex); + numItems++; + + } + + } + + // add completed objectives + pObj = g_pPlayerStats->GetCompletedObjectives(); + + //check to see if we need to add a label + if (pObj->m_IDArray.size() && !numItems) + { + // if we already have created a objectives label, use it + if (m_pObjLabel) + { + m_List.AddControl(m_pObjLabel); + } + else + { + // otherwise create a label + uint16 ndx = AddControl(IDS_OBJECTIVES,0,LTTRUE); + m_pObjLabel = (CLTGUITextCtrl *)m_List.GetControl(ndx); + } + } + + for (i = pObj->m_IDArray.size()-1; i >= 0 ; i--) + { + CObjectiveCtrl* pCtrl = LTNULL; + uint32 objID = pObj->m_IDArray[i]; + // if we don't have a cached objective control, create a new one + if (numItems >= m_Objectives.size()) + { + uint16 ndx = AddObjectiveControl(objID,LTTRUE); + pCtrl = (CObjectiveCtrl*)m_List.GetControl(ndx); + pCtrl->SetFixedWidth(nWidth); + numItems++; + } + else + { + //otherwise, grab one from the cache + pCtrl = (CObjectiveCtrl*)m_Objectives[numItems]; + m_List.AddControl(pCtrl); + pCtrl->SetString(LoadTempString(objID)); + pCtrl->SetColors(argbCompleted,argbCompleted,argbCompleted); + pCtrl->SetTexture(m_CompletedTex); + numItems++; + + } + + } + + // add mission parameters + pObj = g_pPlayerStats->GetParameters(); + + //check to see if we need to add a label + if (pObj->m_IDArray.size()) + { + // if we already have created a parameters label, use it + if (m_pParameters) + { + m_List.AddControl(m_pParameters); + } + else + { + // otherwise create a label + uint16 ndx = AddControl(IDS_PARAMETERS,0,LTTRUE); + m_pParameters = (CLTGUITextCtrl *)m_List.GetControl(ndx); + } + } + for (i = pObj->m_IDArray.size()-1; i >= 0 ; i--) + { + CObjectiveCtrl* pCtrl = LTNULL; + uint32 objID = pObj->m_IDArray[i]; + + // if we don't have a cached objective control, create a new one + if (numItems >= m_Objectives.size()) + { + uint16 ndx = AddObjectiveControl(objID); + pCtrl = (CObjectiveCtrl*)m_List.GetControl(ndx); + pCtrl->SetFixedWidth(nWidth); + numItems++; + } + else + { + //otherwise, grab one from the cache + pCtrl = (CObjectiveCtrl*)m_Objectives[numItems]; + m_List.AddControl(pCtrl); + pCtrl->SetString(LoadTempString(objID)); + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + numItems++; + + } + + } + + m_List.SetStartIndex(0); + + } + else + { + // take the objectives and parameters out of the list + // (they are still cached for re-use) + RemoveObjectives(); + } + CBaseMenu::OnFocus(bFocus); + +} + + +// create and add an objective control +uint16 CMenuMission::AddObjectiveControl (int stringID, LTBOOL bCompleted, LTBOOL bOptional) +{ + CUIFont* pFont = g_pInterfaceResMgr->GetFont(m_FontFace); + if (!pFont) return -1; + + CObjectiveCtrl* pCtrl=debug_new(CObjectiveCtrl); + + char szString[256] = ""; + LoadString(stringID,szString,sizeof(szString)); + + if (!bCompleted && bOptional) + { + strcat(szString,szOptional); + } + + if (!pCtrl->Create(szString, pFont, nObjSize, 16, m_BulletTex)) + { + debug_delete(pCtrl); + return -1; + } + + pCtrl->SetBasePos(m_nextPos); + pCtrl->Enable(LTFALSE); + if (bCompleted) + { + pCtrl->SetColors(argbCompleted,argbCompleted,argbCompleted); + pCtrl->SetTexture(m_CompletedTex); + } + else + { + pCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pCtrl->SetTexture(m_BulletTex); + } + + pCtrl->SetScale(g_pInterfaceResMgr->GetXRatio()); + + //cache the control for re-use + m_Objectives.push_back(pCtrl); + return m_List.AddControl(pCtrl); + +} + + +void CMenuMission::RemoveObjectives() +{ + //take everything starting from the first objective out of the list + // but don't delete them, because we might reuse them + while (m_nFirstObj < m_List.GetNumControls()) + m_List.RemoveControl(m_nFirstObj,LTFALSE); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuMission.h b/Jack/ClientShellDLL/MenuMission.h new file mode 100644 index 00000000..5cc7d809 --- /dev/null +++ b/Jack/ClientShellDLL/MenuMission.h @@ -0,0 +1,51 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuMission.h +// +// PURPOSE : In-game system menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_MISSION_H_) +#define _MENU_MISSION_H_ + +#include "BaseMenu.h" + + +class CMenuMission : public CBaseMenu +{ +public: + CMenuMission(); + + virtual LTBOOL Init(); + virtual void Term(); + + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); + + virtual void OnFocus(LTBOOL bFocus); + + uint16 AddObjectiveControl (int stringID, LTBOOL bCompleted = LTFALSE, LTBOOL bOptional = LTFALSE); + +private: + void RemoveObjectives(); + + CLTGUITextCtrl* m_pNameCtrl; + CLTGUITextCtrl* m_pLevelCtrl; + CLTGUITextCtrl* m_pObjLabel; + CLTGUITextCtrl* m_pParameters; + + uint16 m_nFirstObj; + + ControlArray m_Objectives; + + HTEXTURE m_BulletTex; + HTEXTURE m_CompletedTex; + +}; + +#endif //!defined(_MENU_MISSION_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/MenuSystem.cpp b/Jack/ClientShellDLL/MenuSystem.cpp new file mode 100644 index 00000000..507921f2 --- /dev/null +++ b/Jack/ClientShellDLL/MenuSystem.cpp @@ -0,0 +1,248 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuSystem.cpp +// +// PURPOSE : In-game system menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MenuSystem.h" +#include "InterfaceMgr.h" +#include "clientres.h" +#include "ClientMultiplayerMgr.h" +#include "ClientSaveLoadMgr.h" +namespace +{ + enum eMenuCmds + { + MC_LOAD = MC_CUSTOM, + MC_SAVE, + MC_OPTIONS, + MC_HOST_OPTIONS, + MC_PLAYER, + MC_TEAM, + MC_MAIN, + MC_ABORT, + MC_QUIT, + MC_EXIT, + }; + + void QuitCallBack(LTBOOL bReturn, void *pData) + { + CMenuSystem *pThisMenu = (CMenuSystem *)pData; + if (bReturn && pThisMenu) + pThisMenu->SendCommand(MC_EXIT,0,0); + }; + + void AbortCallBack(LTBOOL bReturn, void *pData) + { + CMenuSystem* pThisMenu = (CMenuSystem *)pData; + if (bReturn && pThisMenu) + pThisMenu->SendCommand(MC_MAIN,0,0); + } + + +} + +CMenuSystem::CMenuSystem( ) +{ + m_pSaveCtrl = NULL; + m_pLoadCtrl = NULL; + m_pPlayerCtrl = NULL; + m_pTeamCtrl = NULL; + m_pHostCtrl = NULL; + m_pServerCtrl = NULL; +} + +LTBOOL CMenuSystem::Init() +{ + m_MenuID = MENU_ID_SYSTEM; + + if (!CBaseMenu::Init()) return LTFALSE; + + SetTitle(IDS_TITLE_SYSTEM); + + uint16 nLoadCtrlId = AddControl(IDS_LOADGAME,MC_LOAD); + m_pLoadCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nLoadCtrlId ); + uint16 nSaveCtrlId = AddControl(IDS_SAVEGAME,MC_SAVE); + m_pSaveCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nSaveCtrlId ); + + AddControl(IDS_OPTIONS,MC_OPTIONS); + + uint16 nHostCtrlId = AddControl(IDS_HOST_OPTIONS,MC_HOST_OPTIONS); + m_pHostCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nHostCtrlId ); + + uint16 nPlayerCtrlId = AddControl(IDS_PLAYER,MC_PLAYER); + m_pPlayerCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nPlayerCtrlId ); + + uint16 nTeamCtrlId = AddControl(IDS_CHOOSE_TEAM,MC_TEAM); + m_pTeamCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nTeamCtrlId ); + + AddControl(IDS_ABORT,MC_ABORT); + AddControl(IDS_EXIT,MC_QUIT); + + AddControl(" ",0,LTTRUE); + uint16 nServerCtrlId = AddControl("",0,LTTRUE); + m_pServerCtrl = ( CLTGUITextCtrl* )m_List.GetControl( nServerCtrlId ); + + + g_pInterfaceMgr->GetMenuMgr()->RegisterHotKey(VK_ESCAPE,MENU_ID_SYSTEM); + + return LTTRUE; +} + +uint32 CMenuSystem::OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) +{ + switch (nCommand) + { + case MC_LOAD: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_LOAD); + break; + case MC_SAVE: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_SAVE); + break; + case MC_OPTIONS: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_OPTIONS); + break; + case MC_HOST_OPTIONS: + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_OPTIONS); + break; + case eGameTypeDeathmatch: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DM_OPTIONS); + break; + case eGameTypeTeamDeathmatch: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_TDM_OPTIONS); + break; + case eGameTypeDemolition: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DE_OPTIONS); + break; + case eGameTypeDoomsDay: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DD_OPTIONS); + break; + }; + break; + case MC_PLAYER: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PLAYER); + break; + case MC_TEAM: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PLAYER_TEAM); + break; + case MC_MAIN: + { + + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); + + } + break; + case MC_QUIT: + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = QuitCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_SUREWANTQUIT,&mb); + break; + } + case MC_ABORT: + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = AbortCallBack; + mb.pData = this; + + int nMsgID = IDS_SUREWANTABORT; + if (IsMultiplayerGame()) + { + // Since we know we're starting a new server, ignore any disconnect messages. + bool bIsLocalClient = false; + g_pLTClient->IsLocalToServer(&bIsLocalClient); + if( bIsLocalClient) + nMsgID = IDS_SHUTDOWNSERVER; + + } + g_pInterfaceMgr->ShowMessageBox(nMsgID,&mb); + + break; + } + case MC_EXIT: + { + g_pLTClient->Shutdown(); + break; + } + default: + return CBaseMenu::OnCommand(nCommand,nParam1,nParam2); + } + return 1; +} + +void CMenuSystem::OnFocus(LTBOOL bFocus) +{ + ClearSelection(); + m_List.ClearSelection(); + if( bFocus ) + { + // Hide the save/load controls if we are a remote client. + if ( !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) && + ( g_pGameClientShell->GetGameType() == eGameTypeSingle || + g_pGameClientShell->GetGameType() == eGameTypeCooperative + ) + ) + { + m_pSaveCtrl->Show( LTTRUE ); + m_pLoadCtrl->Show( LTTRUE ); + } + else + { + m_pSaveCtrl->Show( LTFALSE ); + m_pLoadCtrl->Show( LTFALSE ); + } + + m_pSaveCtrl->Enable(g_pClientSaveLoadMgr->CanSaveGame()); + + if (IsMultiplayerGame()) + { + m_pPlayerCtrl->Show( LTTRUE ); + m_pTeamCtrl->Show( IsTeamGameType() ); + m_pHostCtrl->Show( !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) ); + m_pServerCtrl->Show(g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )); + + if (g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + std::string str = g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName; + str += " : "; + str += g_pClientMultiplayerMgr->GetStartGameRequest( ).m_TCPAddress; + m_pServerCtrl->SetString(str.c_str()); + } + + + } + else + { + m_pPlayerCtrl->Show( LTFALSE ); + m_pTeamCtrl->Show( LTFALSE ); + m_pHostCtrl->Show( LTFALSE ); + m_pServerCtrl->Show( LTFALSE ); + } + + if (m_fScale != g_pInterfaceResMgr->GetXRatio()) + { + SetScale(g_pInterfaceResMgr->GetXRatio()); + } + + SetSelection(GetIndex(&m_List)); + m_List.ClearSelection(); + m_List.NextSelection(); + } +} diff --git a/Jack/ClientShellDLL/MenuSystem.h b/Jack/ClientShellDLL/MenuSystem.h new file mode 100644 index 00000000..bed46226 --- /dev/null +++ b/Jack/ClientShellDLL/MenuSystem.h @@ -0,0 +1,41 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MenuSystem.h +// +// PURPOSE : In-game system menu +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_MENU_SYSTEM_H_) +#define _MENU_SYSTEM_H_ + +#include "BaseMenu.h" + + +class CMenuSystem : public CBaseMenu +{ +public: + + CMenuSystem( ); + + virtual LTBOOL Init(); + + virtual void OnFocus(LTBOOL bFocus); + + // Handle a command + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2); + +private: + + CLTGUITextCtrl* m_pSaveCtrl; + CLTGUITextCtrl* m_pLoadCtrl; + CLTGUITextCtrl* m_pPlayerCtrl; + CLTGUITextCtrl* m_pTeamCtrl; + CLTGUITextCtrl* m_pHostCtrl; + CLTGUITextCtrl* m_pServerCtrl; +}; + +#endif //!defined(_MENU_SYSTEM_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/MessageBox.cpp b/Jack/ClientShellDLL/MessageBox.cpp new file mode 100644 index 00000000..6328ac3f --- /dev/null +++ b/Jack/ClientShellDLL/MessageBox.cpp @@ -0,0 +1,459 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MessageBox.cpp +// +// PURPOSE : Handle the display of a simple message box +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MessageBox.h" +#include "ScreenCommands.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// KLS - Added new control type to allow for sounds when control is selected... +class CLTGUIAutoSoundTextCtrl : public CLTGUITextCtrl +{ + protected: + + // Override virtual function that is called when the state of the control + // is changed. + virtual void OnSelChange() + { + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + } +}; + +namespace +{ + char szOK[8] = ""; + char szCancel[16] = ""; + char szYes[8] = ""; + char szNo[8] = ""; + const uint8 kIndent = 8; + const uint16 kBaseWidth = 320; + const uint16 kBaseHeight = 200; + const uint16 kBigWidth = 480; + const uint16 kMinWidth = 160; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CMessageBox::CMessageBox() +{ + m_pCallback = LTNULL; + m_bVisible = LTFALSE; + m_bGameWasPaused = LTFALSE; + + m_pText = LTNULL; + m_pEdit = LTNULL; + m_pOK = LTNULL; + m_pCancel = LTNULL; + + m_pData = LTNULL; + + m_bIgnoreEsc = false; +} + +CMessageBox::~CMessageBox() +{ + Term(); +} + +LTBOOL CMessageBox::Init() +{ + + uint8 nFont = g_pLayoutMgr->GetDialogFontFace(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetDialogFontSize(); + + uint32 selColor = g_pLayoutMgr->GetScreenSelectedColor(SCREEN_ID_MAIN); + uint32 nonColor = g_pLayoutMgr->GetScreenNonSelectedColor(SCREEN_ID_MAIN); + uint32 disColor = g_pLayoutMgr->GetScreenDisabledColor(SCREEN_ID_MAIN); + + LoadString(IDS_OK,szOK,sizeof(szOK)); + LoadString(IDS_CANCEL,szCancel,sizeof(szCancel)); + LoadString(IDS_YES,szYes,sizeof(szYes)); + LoadString(IDS_NO,szNo,sizeof(szNo)); + + + + m_pOK = debug_new(CLTGUIAutoSoundTextCtrl); + if (!m_pOK->Create(szOK, CMD_OK, LTNULL, pFont, nFontSize, this)) + { + debug_delete(m_pOK); + m_pOK = LTNULL; + return LTFALSE; + } + m_pOK->SetColors(selColor, nonColor, disColor); + + m_pCancel = debug_new(CLTGUIAutoSoundTextCtrl); + if (!m_pCancel->Create(szNo, CMD_CANCEL, LTNULL, pFont, nFontSize, this)) + { + debug_delete(m_pCancel); + m_pCancel = LTNULL; + return LTFALSE; + } + m_pCancel->SetColors(selColor, nonColor, disColor); + + m_pText = debug_new(CLTGUITextCtrl); + if (!m_pText->Create("", LTNULL, LTNULL, pFont, nFontSize, this)) + { + debug_delete(m_pText); + m_pText = LTNULL; + return LTFALSE; + } + m_pText->SetColors(nonColor, nonColor, nonColor); + m_pText->SetFixedWidth(kBaseWidth-2*kIndent); + m_pText->Enable(LTFALSE); + + m_pEdit = debug_new(CLTGUIEditCtrl); + if (!m_pEdit->Create(g_pLTClient, CMD_OK, pFont, nFontSize, 60, this)) + { + debug_delete(m_pEdit); + m_pEdit = LTNULL; + return LTFALSE; + } + m_pEdit->EnableCaret(LTTRUE); + m_pEdit->SetFixedWidth(kBaseWidth-2*kIndent,LTTRUE); + m_pEdit->SetColors(nonColor, nonColor, nonColor); + + + + char szBack[128] = ""; + g_pLayoutMgr->GetDialogFrame(szBack,sizeof(szBack)); + + m_Dlg.Create(g_pInterfaceResMgr->GetTexture(szBack),kBaseWidth,kBaseHeight); + LTIntPt tmp(0,0); + m_Dlg.AddControl(m_pText, tmp); + m_Dlg.AddControl(m_pEdit, tmp); + m_Dlg.AddControl(m_pOK, tmp); + m_Dlg.AddControl(m_pCancel, tmp); + + return LTTRUE; +} + +void CMessageBox::Term() +{ + m_Dlg.Destroy(); +} + +void CMessageBox::Show(int nStringID, MBCreate* pCreate, uint8 nFontSize, LTBOOL bDefaultReturn) +{ + if (m_bVisible || !pCreate) + return; + + Show(LoadTempString(nStringID),pCreate,nFontSize,bDefaultReturn); +} + +void CMessageBox::Show(const char *pString, MBCreate* pCreate, uint8 nFontSize, LTBOOL bDefaultReturn) +{ + if (m_bVisible || !pCreate) + return; + + m_eType = pCreate->eType; + + m_bGameWasPaused = g_pGameClientShell->IsGamePaused(); + if (!m_bGameWasPaused) + g_pGameClientShell->PauseGame(LTTRUE,LTTRUE); + + uint8 nSize; + if (nFontSize) + nSize = nFontSize; + else + nSize = g_pLayoutMgr->GetDialogFontSize(); + + //build everything at normal scale to make calculations easier + m_Dlg.SetScale(1.0f); + + m_pText->SetFixedWidth(kBaseWidth-2*kIndent); + m_pText->SetString(pString); + m_pText->SetFont(LTNULL,nSize); + + if (m_eType == LTMB_EDIT) + { + m_pEdit->SetText(pCreate->pString); + m_pEdit->SetInputMode(pCreate->eInput); + m_pEdit->SetInputFilter(pCreate->pFilterFn); + m_pEdit->SetMaxLength(pCreate->nMaxChars); + + m_pEdit->Show(LTTRUE); + m_pEdit->SetFont(LTNULL,nSize); + } + else + m_pEdit->Show(LTFALSE); + + + + LTFLOAT fScale = g_pInterfaceResMgr->GetXRatio(); + // need to do this to get accurate sizes, since the width and height of the string + // do not scale precicely + m_pText->SetScale(fScale); + float fw,fh; + m_pText->GetString()->GetDims(&fw,&fh); + int nWidth = (int)(fw/fScale); + int nHeight = (int)(fh/fScale); + + if (nHeight > kBaseWidth) + { + m_pText->SetFixedWidth(kBigWidth-2*kIndent); + m_pText->GetString()->GetDims(&fw,&fh); + nWidth = (int)(fw/fScale); + nHeight = (int)(fh/fScale); + } + + uint16 nDlgWidth = nWidth + 2*kIndent; + if (nDlgWidth < kMinWidth) + nDlgWidth = kMinWidth; + uint16 nDlgHeight = nHeight + 3*kIndent + m_pOK->GetHeight(); + if (m_eType == LTMB_EDIT) + { + // need to do this to get accurate sizes, since the width and height of the string + // do not scale precicely + m_pEdit->SetScale(fScale); + nDlgHeight += (kIndent + m_pEdit->GetHeight()); + if (nDlgWidth < kBaseWidth) + nDlgWidth = kBaseWidth; + m_pEdit->SetFixedWidth(nDlgWidth-2*kIndent,LTTRUE); + } + + + LTIntPt offset; + + m_Dlg.SetSize(nDlgWidth,nDlgHeight); + + offset.x = (nDlgWidth - nWidth) / 2; + offset.y = kIndent; + m_Dlg.SetControlOffset(m_pText,offset); + + m_bIgnoreEsc = !!( pCreate->nFlags & eMBFlag_IgnoreESC ); + + switch (m_eType) + { + case LTMB_YESNO: + { + m_pOK->SetString(szYes); + offset.x = ((nDlgWidth / 2) - m_pOK->GetWidth()) - 2*kIndent; + offset.y = (nDlgHeight - kIndent) - m_pOK->GetHeight(); + m_Dlg.SetControlOffset(m_pOK,offset); + m_pOK->Show(LTTRUE); + + m_pCancel->SetString(szNo); + offset.x = (nDlgWidth / 2) + 2*kIndent; + offset.y = (nDlgHeight - kIndent) - m_pOK->GetHeight(); + m_Dlg.SetControlOffset(m_pCancel,offset); + m_pCancel->Show(LTTRUE); + } break; + case LTMB_OK: + { + m_pOK->SetString(szOK); + offset.x = (nDlgWidth - m_pOK->GetWidth()) / 2; + offset.y = (nDlgHeight - kIndent) - m_pOK->GetHeight(); + m_Dlg.SetControlOffset(m_pOK,offset); + m_pOK->Show(LTTRUE); + m_pCancel->Show(LTFALSE); + } break; + case LTMB_EDIT: + { + offset.x = kIndent; + offset.y = 2* kIndent + m_pText->GetHeight(); + m_Dlg.SetControlOffset(m_pEdit,offset); + + m_pOK->SetString(szOK); + offset.x = ((nDlgWidth / 2) - m_pOK->GetWidth()) - 2*kIndent; + offset.y = (nDlgHeight - kIndent) - m_pOK->GetHeight(); + m_Dlg.SetControlOffset(m_pOK,offset); + m_pOK->Show(LTTRUE); + + m_pCancel->SetString(szCancel); + offset.x = (nDlgWidth / 2) + 2*kIndent; + offset.y = (nDlgHeight - kIndent) - m_pOK->GetHeight(); + m_Dlg.SetControlOffset(m_pCancel,offset); + m_pCancel->Show(LTTRUE); + } break; + }; + + + m_pCallback = pCreate->pFn; + m_pData = pCreate->pData; + + if (bDefaultReturn) + { + m_Dlg.SetSelection(m_Dlg.GetIndex(m_pOK)); + } + else + { + m_Dlg.SetSelection(m_Dlg.GetIndex(m_pCancel)); + } + + offset.x = (640 - nDlgWidth) / 2; + offset.y = (480 - nDlgHeight) / 2; + m_Dlg.SetBasePos(offset); + m_Dlg.SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_Dlg.Show(LTTRUE); + m_bVisible = LTTRUE; + + // Set the cursor to the appropriate state + g_pInterfaceMgr->UpdateCursorState(); +} + + +void CMessageBox::Close(LTBOOL bReturn) +{ + if (!m_bVisible) + return; + m_bVisible = LTFALSE; + m_Dlg.Show(LTFALSE); + + if (m_eType == LTMB_EDIT) + m_pData = (void*)m_pEdit->GetText(); + + + if (!m_bGameWasPaused) + g_pGameClientShell->PauseGame(LTFALSE); + + if (m_pCallback) + { + m_pCallback(bReturn, m_pData); + } + + // Play sound... + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + + // Set the cursor to the appropriate state + g_pInterfaceMgr->UpdateCursorState(); +} + +void CMessageBox::Draw() +{ + if (m_bVisible) + { + m_Dlg.Render(); + } +} + +LTBOOL CMessageBox::HandleChar(unsigned char c) +{ + if (!m_bVisible) return LTFALSE; + if (m_eType == LTMB_EDIT) + return m_pEdit->HandleChar(c); + + return LTFALSE; +} + +LTBOOL CMessageBox::HandleKeyDown(int key, int rep) +{ + if (!m_bVisible) return LTFALSE; + if (m_eType == LTMB_EDIT) + { + //special handling for right and left arrows so that they may cycle through controls + // when the edit box is not selected + if (m_Dlg.GetSelectedControl() != m_pEdit) + { + if (key == VK_LEFT) + return m_Dlg.OnUp(); + if (key == VK_RIGHT) + return m_Dlg.OnDown(); + } + + if (m_pEdit->HandleKeyDown(key,rep)) + return LTTRUE; + } + + LTBOOL handled = LTFALSE; + switch (key) + { + case VK_LEFT: + case VK_UP: + { + handled = m_Dlg.OnUp(); + break; + } + case VK_RIGHT: + case VK_DOWN: + { + handled = m_Dlg.OnDown(); + break; + } + case VK_RETURN: + { + handled = m_Dlg.OnEnter(); + break; + } + case VK_ESCAPE: + { + if( !m_bIgnoreEsc ) + { + Close(LTFALSE); + handled = LTTRUE; + } + break; + } + default: + { + CLTGUICtrl* pCtrl = m_Dlg.GetSelectedControl(); + if (pCtrl) + handled = pCtrl->HandleKeyDown(key,rep); + else + handled = LTFALSE; + break; + } + } + + // Handled the key + return handled; +} + +LTBOOL CMessageBox::OnLButtonDown(int x, int y) +{ + if (m_bVisible) + { + return m_Dlg.OnLButtonDown( x, y); + } + return LTFALSE; +} + +LTBOOL CMessageBox::OnLButtonUp(int x, int y) +{ + if (m_bVisible) + { + return m_Dlg.OnLButtonUp( x, y); + } + return LTFALSE; +} + + +LTBOOL CMessageBox::OnMouseMove(int x, int y) +{ + if (m_bVisible) + { + return m_Dlg.OnMouseMove(x,y); + } + return LTFALSE; +} + +uint32 CMessageBox::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_OK: + Close(LTTRUE); + return LTTRUE; + break; + case CMD_CANCEL: + Close(LTFALSE); + return LTTRUE; + break; + default: + return LTFALSE; + break; + } +} diff --git a/Jack/ClientShellDLL/MessageBox.h b/Jack/ClientShellDLL/MessageBox.h new file mode 100644 index 00000000..0e1969d9 --- /dev/null +++ b/Jack/ClientShellDLL/MessageBox.h @@ -0,0 +1,113 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MessageBox.h +// +// PURPOSE : Handle the display of a simple message box +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_MESSAGEBOX_H_) +#define _MESSAGEBOX_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "LTGUIMgr.h" + +enum eMBType +{ + LTMB_OK, + LTMB_YESNO, + LTMB_EDIT, +}; + +enum EMBFlag +{ + eMBFlag_None = 0, + eMBFlag_IgnoreESC = (1<<0), +}; + +//edit boxes return a pointer to their strings in pData +//YesNo and OK boxes return their passed data untouched +typedef void (*MBCallBackFn)(LTBOOL bReturn, void *pData); + + + +typedef struct MBCreate_t +{ + MBCreate_t() + { + eType = LTMB_OK; + pFn = LTNULL; + pData = LTNULL; + + pString = LTNULL; + nMaxChars = CLTGUIEditCtrl::kMaxLength; + eInput = CLTGUIEditCtrl::kInputAll; + pFilterFn = NULL; + nFlags = 0; + }; + + eMBType eType; + MBCallBackFn pFn; + void* pData; + + //edit only data + const char * pString; + uint16 nMaxChars; + CLTGUIEditCtrl::eInputMode eInput; + FilterCallbackFn pFilterFn; + uint32 nFlags; + +} MBCreate; + +class CMessageBox : CLTGUICommandHandler +{ +public: + CMessageBox(); + virtual ~CMessageBox(); + + LTBOOL Init(); + void Term(); + + void Draw(); + + void Show(int nStringID, MBCreate* pCreate, uint8 nFontSize = 0, LTBOOL bDefaultReturn = LTTRUE); + void Show(const char *pString, MBCreate* pCreate, uint8 nFontSize = 0, LTBOOL bDefaultReturn = LTTRUE); + + void Close(LTBOOL bReturn); + + LTBOOL HandleKeyDown(int key, int rep); + LTBOOL HandleChar(unsigned char c); + LTBOOL OnLButtonDown(int x, int y); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnMouseMove(int x, int y); + + LTBOOL IsVisible() {return m_bVisible;} + +private: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + + CLTGUIWindow m_Dlg; + CLTGUITextCtrl* m_pText; + CLTGUIEditCtrl* m_pEdit; + CLTGUITextCtrl* m_pOK; + CLTGUITextCtrl* m_pCancel; + + eMBType m_eType; + + LTBOOL m_bVisible; + + LTBOOL m_bGameWasPaused; + MBCallBackFn m_pCallback; + void* m_pData; + + bool m_bIgnoreEsc; + +}; + +#endif // _MESSAGEBOX_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MineFX.cpp b/Jack/ClientShellDLL/MineFX.cpp new file mode 100644 index 00000000..edac4fa7 --- /dev/null +++ b/Jack/ClientShellDLL/MineFX.cpp @@ -0,0 +1,191 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MineFX.cpp +// +// PURPOSE : Mine FX - Implementation +// +// CREATED : 2/26/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MineFX.h" +#include "VarTrack.h" +#include "GameClientShell.h" +#include "VisionModeMgr.h" + +VarTrack g_vtMineShit; + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMineFX::Init +// +// PURPOSE: Init the laser trigger +// +// ----------------------------------------------------------------------- // + +LTBOOL CMineFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + MINECREATESTRUCT mine; + + mine.hServerObj = hServObj; + mine.Read(pMsg); + + return Init(&mine); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMineFX::Init +// +// PURPOSE: Init the laser trigger fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CMineFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((MINECREATESTRUCT*)psfxCreateStruct); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMineFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CMineFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + if (!g_vtMineShit.IsInitted()) + { + g_vtMineShit.Init(g_pLTClient, "MineShit", NULL, 0.01f); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMineFX::Update +// +// PURPOSE: Update the beam fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CMineFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove) return LTFALSE; + + LTBOOL bShowMine = LTFALSE; + + // See if this client can see the mine... + + if( g_pPlayerMgr->GetVisionModeMgr()->GetMode() == eVM_SPY ) + { + bShowMine = LTTRUE; + } + + // Show/Hide the mine fx... + + if (bShowMine) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + HOBJECT hObj = m_RadiusModel.GetObject(); + if (!hObj) + { + // Create fx... + + m_scalecs.dwFlags = FLAG_VISIBLE | FLAG_NOLIGHT; + + // Set up fx flags... + + m_scalecs.pFilename = "SFX\\Expl\\Models\\364.ltb"; + + CButeListReader blrSkinReader; + blrSkinReader.SetItem(0, "SFX\\Beams\\Skins\\Spotlight_beam.dtx", MAX_CS_FILENAME_LEN+1); + m_scalecs.pSkinReader = &blrSkinReader; + + m_scalecs.vPos = vPos; + m_scalecs.vVel.Init(); + m_scalecs.vInitialScale.Init(m_cs.fMinRadius, m_cs.fMinRadius, m_cs.fMinRadius); + m_scalecs.vFinalScale.Init(m_cs.fMaxRadius, m_cs.fMaxRadius, m_cs.fMaxRadius); + m_scalecs.vInitialColor.Init(1, 1, 0); + m_scalecs.vFinalColor.Init(1, 0, 0); + m_scalecs.bUseUserColors = LTTRUE; + m_scalecs.fLifeTime = 1.0f; + m_scalecs.fInitialAlpha = 0.5f; + m_scalecs.fFinalAlpha = 0.9f; + m_scalecs.bLoop = LTTRUE; + m_scalecs.fDelayTime = 0.0f; + m_scalecs.bAdditive = LTTRUE; + m_scalecs.nType = OT_MODEL; + + m_RadiusModel.Init(&m_scalecs); + m_RadiusModel.CreateObject(g_pLTClient); + } + else + { + // Update fx... + + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + + // See if it is time to scale the other way... + + if (!m_RadiusModel.Update()) + { + if (m_scalecs.vInitialScale.x == m_cs.fMinRadius) + { + m_scalecs.vInitialScale.Init(m_cs.fMaxRadius, m_cs.fMaxRadius, m_cs.fMaxRadius); + m_scalecs.vFinalScale.Init(m_cs.fMinRadius, m_cs.fMinRadius, m_cs.fMinRadius); + m_scalecs.fInitialAlpha = 0.9f; + m_scalecs.fFinalAlpha = 0.4f; + m_scalecs.vInitialColor.Init(1, 0, 0); + m_scalecs.vFinalColor.Init(1, 1, 1); + } + else + { + m_scalecs.vInitialScale.Init(m_cs.fMinRadius, m_cs.fMinRadius, m_cs.fMinRadius); + m_scalecs.vFinalScale.Init(m_cs.fMaxRadius, m_cs.fMaxRadius, m_cs.fMaxRadius); + m_scalecs.fInitialAlpha = 0.4f; + m_scalecs.fFinalAlpha = 0.9f; + m_scalecs.vInitialColor.Init(1, 1, 1); + m_scalecs.vFinalColor.Init(1, 0, 0); + } + + m_RadiusModel.Init(&m_scalecs); + m_RadiusModel.CreateObject(g_pLTClient); + } + } + else + { + // Hide fx... + + HOBJECT hObj = m_RadiusModel.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + } + + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MineFX.h b/Jack/ClientShellDLL/MineFX.h new file mode 100644 index 00000000..b7e016c0 --- /dev/null +++ b/Jack/ClientShellDLL/MineFX.h @@ -0,0 +1,47 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MineFX.h +// +// PURPOSE : Mine special fx class - Definition +// +// CREATED : 2/26/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __MINE_FX_H__ +#define __MINE_FX_H__ + +#include "SpecialFX.h" +#include "SharedFXStructs.h" +#include "BaseScaleFX.h" + +class CMineFX : public CSpecialFX +{ + public : + + CMineFX() : CSpecialFX() + { + } + + ~CMineFX() + { + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_MINE_ID; } + + protected : + + MINECREATESTRUCT m_cs; + BSCREATESTRUCT m_scalecs; + + CBaseScaleFX m_RadiusModel; +}; + +#endif // __MINE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MissionMgr.cpp b/Jack/ClientShellDLL/MissionMgr.cpp new file mode 100644 index 00000000..08c599b7 --- /dev/null +++ b/Jack/ClientShellDLL/MissionMgr.cpp @@ -0,0 +1,1096 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MissionMgr.cpp +// +// PURPOSE : Implementation of class to handle managment of missions and worlds. +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "MissionMgr.h" +#include "GameClientShell.h" +#include "VarTrack.h" +#include "MsgIds.h" +#include "WinUtil.h" +#include "MissionButeMgr.h" +#include "PlayerMgr.h" +#include "ClientSaveLoadMgr.h" +#include "clientres.h" +#include "ClientMultiplayerMgr.h" +#include "ProfileMgr.h" +#include "ScreenPreload.h" + +extern VarTrack g_vtScreenFadeInTime; + +CMissionMgr* g_pMissionMgr = LTNULL; + +// --------------------------------------------------------------------------- // +// Constructor & Destructor +// --------------------------------------------------------------------------- // +CMissionMgr::CMissionMgr() +{ + m_bCustomLevel = false; + m_nCurrentMission = -1; + m_nCurrentLevel = -1; + m_bExitingLevel = false; + m_bExitingMission = false; + m_eStartGameState = eStartGameUnknown; + m_nSaveSlot = -1; + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + m_nNewMission = -1; + m_nNewLevel = -1; + m_bGameOver = false; +} + +CMissionMgr::~CMissionMgr() +{ + Term( ); + + g_pMissionMgr = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::Init +// +// PURPOSE: Init the mgr +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::Init() +{ + // Start fresh. + Term( ); + + g_pMissionMgr = this; + + m_bCustomLevel = false; + m_nCurrentMission = -1; + m_nCurrentLevel = -1; + m_bExitingLevel = false; + m_bExitingMission = false; + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + m_nNewMission = -1; + m_nNewLevel = -1; + + m_sCurrentWorldName.Empty( ); + m_sNewWorldName.Empty( ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::Term +// +// PURPOSE: Term the mgr +// +// ----------------------------------------------------------------------- // +void CMissionMgr::Term() +{ + g_pMissionMgr = LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameNew +// +// PURPOSE: Start the game from the beginning. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameNew( ) +{ + // Default to use the first mission. + int nFirstMission = 0; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // If this is a multiplayer game, then get use the campaign file to determine + // the first mission. + if( IsMultiplayerGame( )) + { + // Get the first mission to play from the missions file. + char szMission[4]; + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + char const* pszCampaignFile = GetCampaignFile( pUserProfile->m_ServerGameOptions ); + if (!CWinUtil::FileExist( pszCampaignFile )) + return false; + + CWinUtil::WinGetPrivateProfileString( "MissionList", "Mission0", "0", szMission, + ARRAY_LEN( szMission ), pszCampaignFile ); + nFirstMission = atoi( szMission ); + } + + // Get the level name for the first mission/level. + char const* pszLevelFilename = GetLevelFromMission( nFirstMission, 0 ); + if( !pszLevelFilename ) + return false; + + // Start from the first level. + if( !StartGameFromLevel( pszLevelFilename )) + return false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromLevel +// +// PURPOSE: Start the game from a level +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromLevel( char const* pszFilename ) +{ + // Check inputs. + if( !pszFilename || !pszFilename[0] ) + { + ASSERT( !"CMissionMgr::StartGameFromLevel: Invalid filename." ); + return false; + } + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + m_eStartGameState = eStartGameFromLevel; + // Set our new level name. + if( !SetNewLevel( pszFilename )) + return false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartPerformanceLevel +// +// PURPOSE: Start the game from the performance level +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartPerformanceLevel() +{ + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // [KLS 8/30/02] Make sure the server info is setup correctly... + g_pClientMultiplayerMgr->SetupServerSinglePlayer(); + + m_eStartGameState = eStartGameFromLevel; + // Set our new level name. + if( !SetNewLevel("worlds\\RetailSinglePlayer\\performance" )) + return false; + + return true; +} + + + +bool CMissionMgr::FinishStartGameFromLevel() +{ + m_eStartGameState = eStartGameStarted; + + // Make sure we have a server started. + if( !g_pClientMultiplayerMgr->StartClientServer( )) + { + return false; + } + + // Send the start game message. + if( !SendStartGameMessage( )) + return false; + + // Tell the server to start with this level. + CAutoMessage cMsg; + cMsg.Writeuint8( MID_START_LEVEL ); + cMsg.WriteString( m_sCurrentWorldName ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromQuickSave +// +// PURPOSE: Start the game from quicksave. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromQuickSave( ) +{ + // Check if there was a save available. + if( !g_pClientSaveLoadMgr->QuickSaveExists( )) + return false; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Get the worldname for the save. + char szWorldName[MAX_PATH]; + if( !g_pClientSaveLoadMgr->ReadSaveINI( QUICKSAVE_INIKEY, NULL, 0, szWorldName, ARRAY_LEN( szWorldName ), + NULL )) + return false; + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + bool bOk = true; + + // Set this as the level we'll be playing. + bOk = SetNewLevel( szWorldName ); + + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + m_eStartGameState = eStartGameFromQuickSave; + + return true; +} + + +bool CMissionMgr::FinishStartGameFromQuickSave( ) +{ + bool bOk = true; + + m_eStartGameState = eStartGameStarted; + + // Make sure we have a server started. + bOk = bOk && g_pClientMultiplayerMgr->StartClientServer( ); + + // Send the start game message. + bOk = bOk && SendStartGameMessage( ); + + // Do the quickload. + bOk = bOk && g_pClientSaveLoadMgr->QuickLoad( ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromSaveSlot +// +// PURPOSE: Start the game from save slot. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromSaveSlot( int nSlot ) +{ + // Check if there was a save available. + if( !g_pClientSaveLoadMgr->SlotSaveExists( nSlot )) + return false; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Get the worldname for the save. + char szWorldName[MAX_PATH]; + if( !g_pClientSaveLoadMgr->ReadSaveINI( g_pClientSaveLoadMgr->GetSlotSaveKey( nSlot ), NULL, 0, + szWorldName, ARRAY_LEN( szWorldName ), NULL )) + return false; + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + bool bOk = true; + + // Set this as the level we'll be playing. + bOk = bOk && SetNewLevel( szWorldName ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + m_nSaveSlot = nSlot; + m_eStartGameState = eStartGameFromSaveSlot; + + return true; +} + + +bool CMissionMgr::FinishStartGameFromSaveSlot( ) +{ + bool bOk = true; + m_eStartGameState = eStartGameStarted; + + // Make sure we have a server started. + bOk = bOk && g_pClientMultiplayerMgr->StartClientServer( ); + + // Send the start game message. + bOk = bOk && SendStartGameMessage( ); + + // Do the load. + bOk = bOk && g_pClientSaveLoadMgr->LoadGameSlot( m_nSaveSlot ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromReload +// +// PURPOSE: Start the game from reload. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromReload( ) +{ + // Check if there was a save available. + if( !g_pClientSaveLoadMgr->ReloadSaveExists( )) + return false; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Get the worldname for the save. + char szWorldName[MAX_PATH]; + if( !g_pClientSaveLoadMgr->ReadSaveINI( RELOADLEVEL_INIKEY, NULL, 0, + szWorldName, ARRAY_LEN( szWorldName ), NULL )) + return false; + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + bool bOk = true; + + // Set this as the level we'll be playing. + bOk = bOk && SetNewLevel( szWorldName ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + m_eStartGameState = eStartGameFromReload; + + return true; +} + +bool CMissionMgr::FinishStartGameFromReload( ) +{ + m_eStartGameState = eStartGameStarted; + + bool bOk = true; + + // Make sure we have a server started. + bOk = bOk && g_pClientMultiplayerMgr->StartClientServer( ); + + // Send the start game message. + bOk = bOk && SendStartGameMessage( ); + + // Do the load. + bOk = bOk && g_pClientSaveLoadMgr->ReloadLevel( ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromCheckpointSave +// +// PURPOSE: Start the game from checkpointsave. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromCheckpointSave( ) +{ + // Check if there was a save available. + if( !g_pClientSaveLoadMgr->CheckpointSaveExists( )) + return false; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Get the worldname for the save. + char szWorldName[MAX_PATH]; + if( !g_pClientSaveLoadMgr->ReadSaveINI( CHECKPOINTSAVE_INIKEY, NULL, 0, + szWorldName, ARRAY_LEN( szWorldName ), NULL )) + return false; + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + bool bOk = true; + + // Set this as the level we'll be playing. + bOk = bOk && SetNewLevel( szWorldName ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + m_eStartGameState = eStartGameFromCheckpointSave; + + return true; +} + +bool CMissionMgr::FinishStartGameFromCheckpointSave( ) +{ + m_eStartGameState = eStartGameStarted; + + bool bOk = true; + + // Make sure we have a server started. + bOk = bOk && g_pClientMultiplayerMgr->StartClientServer( ); + + // Send the start game message. + bOk = bOk && SendStartGameMessage( ); + + // Do the load. + bOk = bOk && g_pClientSaveLoadMgr->LoadCheckpointSave( ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameFromContinue +// +// PURPOSE: Start the game from continue. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameFromContinue( ) +{ + // Check if there was a save available. + if( !g_pClientSaveLoadMgr->CanContinueGame( )) + return false; + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // Get the savekey in the continue info. + char szSaveKey[SLMGR_MAX_INIKEY_LEN]; + if( !g_pClientSaveLoadMgr->ReadContinueINI( szSaveKey, ARRAY_LEN( szSaveKey ), NULL, 0, NULL, 0 )) + return false; + + // Get the worldname for the save. + char szWorldName[MAX_PATH]; + if( !g_pClientSaveLoadMgr->ReadSaveINI( szSaveKey, NULL, 0, + szWorldName, ARRAY_LEN( szWorldName ), NULL )) + return false; + + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + bool bOk = true; + + // Set this as the level we'll be playing. + bOk = bOk && SetNewLevel( szWorldName ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + m_eStartGameState = eStartGameFromContinue; + + return true; +} + +bool CMissionMgr::FinishStartGameFromContinue( ) +{ + m_eStartGameState = eStartGameStarted; + + bool bOk = true; + + // Make sure we have a server started. + bOk = bOk && g_pClientMultiplayerMgr->StartClientServer( ); + + // Send the start game message. + bOk = bOk && SendStartGameMessage( ); + + // Do the load. + bOk = bOk && g_pClientSaveLoadMgr->ContinueGame( ); + + if( !bOk ) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::StartGameAsClient +// +// PURPOSE: Start the game from remote server. +// +// ----------------------------------------------------------------------- // +bool CMissionMgr::StartGameAsClient( ) +{ + // Starting new mission. + m_bNewMission = true; + m_bRestoringLevel = false; + m_bServerWaiting = true; + ClearMissionInfo( ); + + // Starting new game. + g_pInterfaceMgr->StartingNewGame( ); + + // We don't know our level yet, so just go to a join loading screen. + if( !SetLoadingLevel( )) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + m_eStartGameState = eStartGameAsClient; + return true; +} + +bool CMissionMgr::FinishStartGameAsClient( ) +{ + m_eStartGameState = eStartGameStarted; + + // Make sure we have a server started. + if( !g_pClientMultiplayerMgr->StartClientServer( )) + return false; + + return true; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::OnMessage() +// +// PURPOSE: Handle client messages +// +// ----------------------------------------------------------------------- // + +bool CMissionMgr::OnMessage( uint8 messageID, ILTMessage_Read & msg ) +{ + + switch(messageID) + { + case MID_EXIT_LEVEL: HandleExitLevel ( msg ); return true; + case MID_END_GAME: HandleEndGame ( msg ); return true; + } + + return false; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::HandleMissionFailed +// +// PURPOSE: Handle mission failure +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::HandleMissionFailed() +{ + g_pPlayerMgr->ClearPlayerModes(); + // [KLS 7/28/02] - Interface mgr handles forcing screen fading in + // if necessary, doing it here may cause problems... + ///g_pInterfaceMgr->ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + g_pInterfaceMgr->MissionFailed(IDS_YOUWEREKILLED); + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::HandleExitLevel +// +// PURPOSE: Handle the server telling us to prepare for exit level. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::HandleExitLevel( ILTMessage_Read& msg ) +{ + // If we're told to exit the level while we're dead or dying, make sure we go to the + // mission failed screen, not to the next level. + if( !IsMultiplayerGame( )) + { + if( g_pPlayerMgr->GetPlayerState( ) == PS_DEAD || g_pPlayerMgr->GetPlayerState( ) == PS_DYING ) + { + g_pPlayerMgr->ClearPlayerModes(); + // [KLS 7/28/02] - Interface mgr handles forcing screen fading in + // if necessary, doing it here may cause problems... + ///g_pInterfaceMgr->ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + g_pInterfaceMgr->MissionFailed(IDS_YOUWEREKILLED); + return true; + } + } + + msg.ReadString( m_sNewWorldName.GetBuffer( MAX_PATH ), MAX_PATH ); + m_sNewWorldName.ReleaseBuffer( ); + m_bExitingMission = msg.Readbool( ); + m_bRestoringLevel = msg.Readbool( ); + m_bServerWaiting = msg.Readbool( ); + + int nMissionId, nLevel; + + // Check if this is a valid mission level. + if (g_pMissionButeMgr->IsMissionLevel( m_sNewWorldName, nMissionId, nLevel)) + { + m_nNewMission = nMissionId; + m_nNewLevel = nLevel; + } + else + { + m_nNewMission = -1; + m_nNewLevel = -1; + } + + //m_bServerWaiting should only be false in the case where we are loading a game, + if (!m_bServerWaiting) + { + // if we are the host, we are already on the preload screen + if (g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) ) + g_pInterfaceMgr->ChangeState(GS_LOADINGLEVEL); + return true; + + } + + + m_bNewMission = m_bExitingMission; + + // Check if we didn't get a new world. + if( m_sNewWorldName.IsEmpty( )) + { + // Just go back to the main menu. + g_pInterfaceMgr->ChangeState( GS_SCREEN ); + return true; + } + + // Consider ourselves to be exiting. + m_bExitingLevel = true; + + // Make sure the loading screen isn't up anymore. We won't be able to switch + // out of it if it is. + g_pInterfaceMgr->HideLoadScreen( ); + + // Change to the exiting level state. + g_pInterfaceMgr->ChangeState(GS_EXITINGLEVEL); + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::HandleEndGame +// +// PURPOSE: Handle the server telling us to prepare for exit level. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::HandleEndGame( ILTMessage_Read& msg ) +{ + // Go to the main menu. + g_pInterfaceMgr->ChangeState(GS_SCREEN); + + m_bGameOver = true; + + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + //since our history was cleared by loading the level... rebuild it + g_pInterfaceMgr->GetScreenMgr()->AddScreenToHistory( SCREEN_ID_MAIN ); + g_pInterfaceMgr->GetScreenMgr()->AddScreenToHistory( SCREEN_ID_OPTIONS ); + + //we're done performance testing go back to performance screen + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PERFORMANCE); + } + else if (IsMultiplayerGame()) + { + switch( g_pGameClientShell->GetGameType( )) + { + case eGameTypeCooperative: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_END_COOP_MISSION); + break; + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + case eGameTypeDoomsDay: + case eGameTypeDemolition: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_END_DM_MISSION); + break; + } + } + else + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_END_MISSION); + + //record the completion + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + pRegMgr->Set("EndGame",1); + } + + } + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::FinishExitLevel +// +// PURPOSE: Called when interfacemgr is finished doing exit level tasks. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::FinishExitLevel( ) +{ + // We already handled the exiting level. + if( !m_bExitingLevel ) + return true; + + m_bExitingLevel = false; + m_bExitingMission = false; + + // Tell the server we're done exiting. + + if (m_bServerWaiting) + { + SendEmptyServerMsg( MID_EXIT_LEVEL, MESSAGE_GUARANTEED ); + } + + // Set our new level information. + if( !SetNewLevel( m_sNewWorldName )) + { + g_pInterfaceMgr->LoadFailed( ); + return false; + } + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::FinishStartGame +// +// PURPOSE: Called when interfacemgr is finished doing start game tasks. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::FinishStartGame( ) +{ + g_pInterfaceMgr->ChangeState(GS_LOADINGLEVEL); + + g_pChatMsgs->ClearHistory(); + g_pRewardMsgs->ClearHistory(); + g_pPickupMsgs->ClearHistory(); + g_pTransmission->Hide(); + + switch (m_eStartGameState) + { + case eStartGameFromLevel: + return FinishStartGameFromLevel( ); + case eStartGameFromQuickSave: + return FinishStartGameFromQuickSave( ); + case eStartGameFromSaveSlot: + return FinishStartGameFromSaveSlot(); + case eStartGameFromReload: + return FinishStartGameFromReload( ); + case eStartGameFromCheckpointSave: + return FinishStartGameFromCheckpointSave( ); + case eStartGameFromContinue: + return FinishStartGameFromContinue( ); + case eStartGameAsClient: + return FinishStartGameAsClient( ); + case eStartGameStarted: + return true; + default: + g_pInterfaceMgr->LoadFailed( ); + return false; + + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::SetNewLevel +// +// PURPOSE: Initialize new level information. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::SetNewLevel( char const* pszWorldName ) +{ + // Check inputs. + if( !pszWorldName || !pszWorldName[0] ) + { + ASSERT( !"CMissionMgr::SetNewLevel: Invalid world name." ); + return false; + } + + m_sCurrentWorldName = pszWorldName; + + // See if the loaded world is a custom level or not... + + int nMissionId, nLevel; + + // Check if this is a valid mission level. + if (g_pMissionButeMgr->IsMissionLevel( pszWorldName, nMissionId, nLevel)) + { + // Check if we're switching missions. + if( m_bNewMission ) + { + // Starting new mission. + ClearMissionInfo( ); + } + + m_nCurrentMission = nMissionId; + m_nCurrentLevel = nLevel; + m_nNewMission = nMissionId; + m_nNewLevel = nLevel; + m_bCustomLevel = false; + } + // This is a custom level. + else + { + m_bCustomLevel = true; + m_nCurrentMission = -1; + m_nCurrentLevel = -1; + m_bNewMission = true; + m_nNewMission = -1; + m_nNewLevel = -1; + } + + // Go to the loading state. + if( !SetLoadingLevel( )) + return false; + + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::SetLoadingLevel +// +// PURPOSE: Go to loading level state. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::SetLoadingLevel( ) +{ + // Clear the input buffer. + g_pLTClient->ClearInput(); + + // Toss any cameras. + g_pPlayerMgr->TurnOffAlternativeCamera( CT_FULLSCREEN ); + + g_pGameClientShell->GetPlayerMgr()->ResetCamera(); + + // Consider the world not loaded. + g_pGameClientShell->SetWorldNotLoaded( ); + + // Clear the disconnect flags. + g_pInterfaceMgr->SetIntentionalDisconnect( false ); + + if (GS_LOADINGLEVEL == g_pInterfaceMgr->GetGameState()) + { + g_pInterfaceMgr->UpdateLoadScreenInfo(); + return true; + } + + // Change to the loading level state. + if (!m_bServerWaiting) + { + // if we are the host, we can ignore this + if (g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) ) + g_pInterfaceMgr->ChangeState(GS_LOADINGLEVEL); + + return true; + + } + else if( g_pInterfaceMgr->ShouldSkipPreLoad() ) + { + // Skipping pre-load, go right into level loading... + + g_pInterfaceMgr->ChangeState( GS_LOADINGLEVEL ); + } + else + { + CScreenPreload *pPreload = (CScreenPreload *) (g_pInterfaceMgr->GetScreenMgr( )->GetScreenFromID(SCREEN_ID_PRELOAD)); + if (pPreload) + { + pPreload->SetWaitingToExit(false); + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PRELOAD); + } + else + ASSERT(!"No Preload screen available."); + + } + + return true; +} +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::GetLevelFromMission +// +// PURPOSE: Get the level name from mission info. +// +// --------------------------------------------------------------------------- // + +char const* CMissionMgr::GetLevelFromMission( int nMission, int nLevel ) +{ + MISSION* pMission = g_pMissionButeMgr->GetMission( nMission ); + if( !pMission ) + { + ASSERT( !"CMissionMgr::GetLevelFromMission: Invalid mission." ); + return NULL; + } + + if( nLevel < 0 || nLevel > pMission->nNumLevels ) + { + ASSERT( !"CMissionMgr::GetLevelFromMission: Invalid mission info." ); + return NULL; + } + + return pMission->aLevels[nLevel].szLevel; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::PreLoadWorld +// +// PURPOSE: Handle pre-load world. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::PreLoadWorld( char const* pszNewWorldName ) +{ + // Check inputs. + if( !pszNewWorldName ) + { + ASSERT( !"CMissionMgr::PreLoadWorld: Invalid inputs." ); + return false; + } + + char szTmp[256]; + SAFE_STRCPY(szTmp,pszNewWorldName); + strtok(szTmp,"."); + + // Check if we already set ourselves up for this world. +// if( !m_sCurrentWorldName.IsEmpty( ) && m_sCurrentWorldName.CompareNoCase( szTmp ) == 0 ) +// return true; + + // If we just joined a remote server, this is the first time we + // know the new world name. + if( !SetNewLevel( szTmp )) + return false; + + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::ClearMissionInfo +// +// PURPOSE: Clear the mission information when a new mission is started. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::ClearMissionInfo( ) +{ + g_pPlayerStats->ClearMissionInfo(); + + m_bCustomLevel = false; + m_nCurrentMission = -1; + m_nCurrentLevel = -1; + m_nNewMission = -1; + m_nNewLevel = -1; + + return true; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CMissionMgr::SendStartGameMessage +// +// PURPOSE: Clear the mission information when a new mission is started. +// +// --------------------------------------------------------------------------- // + +bool CMissionMgr::SendStartGameMessage( ) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + m_bGameOver = false; + + // Tell the server to start with the specified bute. + CAutoMessage cMsg; + cMsg.Writeuint8( MID_START_GAME ); + + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + return true; +} diff --git a/Jack/ClientShellDLL/MissionMgr.h b/Jack/ClientShellDLL/MissionMgr.h new file mode 100644 index 00000000..1760698e --- /dev/null +++ b/Jack/ClientShellDLL/MissionMgr.h @@ -0,0 +1,180 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MissionMgr.h +// +// PURPOSE : Definition of class to handle managment of missions and worlds. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __MISSION_MGR_H__ +#define __MISSION_MGR_H__ + +#include "ClientServerShared.h" +#include "MsgIds.h" + +class CMissionMgr +{ + public: + + CMissionMgr(); + ~CMissionMgr(); + + // Initialize the object. + bool Init( ); + + // Terminate the object. + void Term(); + + // Start game from scratch. + bool StartGameNew( ); + + // Start game from specific level. + bool StartGameFromLevel( char const* pszLevelName ); + + // Start game from quicksave. + bool StartGameFromQuickSave( ); + + // Start game from save slot. + bool StartGameFromSaveSlot( int nSlot ); + + // Start game from reload. + bool StartGameFromReload( ); + + // Start game from checkpointsave. + bool StartGameFromCheckpointSave( ); + + // Start game from continue game. + bool StartGameFromContinue( ); + + // Start game as client of remote server. + bool StartGameAsClient( ); + + // Start perfromance test level + bool StartPerformanceLevel(); + + // Call when mission was failed. + bool HandleMissionFailed(); + + bool IsCustomLevel() const {return m_bCustomLevel;} + int GetCurrentMission() const {return m_nCurrentMission;} + int GetCurrentLevel() const {return m_nCurrentLevel;} + char const* GetCurrentWorldName() const { return m_sCurrentWorldName; } + bool IsNewMission( ) const { return m_bNewMission; } + bool IsRestoringLevel( ) const { return m_bRestoringLevel; } + + int GetNewMission() const {return m_nNewMission;} + int GetNewLevel() const {return m_nNewLevel;} + char const* GetNewWorldName() const { return m_sNewWorldName; } + + // Handles messages. + bool OnMessage( uint8 messageID, ILTMessage_Read& msg ); + + // Handle pre-start world. + bool PreLoadWorld( char const* pszNewWorldName ); + + // Called when interfacemgr is finished doing exit level tasks. + bool FinishExitLevel( ); + + // Called when interfacemgr is finished doing start game tasks. + bool FinishStartGame( ); + + + bool IsExitingLevel() { return m_bExitingLevel; } + + // Check if the last MID_EXIT_LEVEL was also the end of a mission. + bool IsExitingMission() { return m_bExitingMission; } + + //Has last mission been completed? + bool IsGameOver() {return m_bGameOver;} + + //we've dealt with the end of game summary + void ClearGameOver() {m_bGameOver = false;} + + enum eStartGameState + { + eStartGameUnknown, + eStartGameFromLevel, + eStartGameFromQuickSave, + eStartGameFromSaveSlot, + eStartGameFromReload, + eStartGameFromCheckpointSave, + eStartGameFromContinue, + eStartGameAsClient, + eStartGameStarted, + + }; + + private: + + // Finish starting games. + bool FinishStartGameFromLevel( ); + bool FinishStartGameFromQuickSave( ); + bool FinishStartGameFromSaveSlot(); + bool FinishStartGameFromReload( ); + bool FinishStartGameFromCheckpointSave( ); + bool FinishStartGameFromContinue( ); + bool FinishStartGameAsClient( ); + + + // Called when exit level is sent from server. + bool HandleExitLevel( ILTMessage_Read& msg ); + + // Called when end game is sent from server. + bool HandleEndGame( ILTMessage_Read& msg ); + + // Setup new level information. + bool SetNewLevel( char const* pszWorldName ); + + // Go to the loading state. + bool SetLoadingLevel( ); + + // Get the level name based on mission info. + char const* GetLevelFromMission( int nMission, int nLevel ); + + // Clears mission information between missions. + bool ClearMissionInfo( ); + + // Send the message to the server to start game. + bool SendStartGameMessage( ); + + + private: + + bool m_bCustomLevel; // Is the current level a custom level + int m_nCurrentMission; + int m_nCurrentLevel; + CString m_sCurrentWorldName; // Current world that's running + + // True after receiving an EndGame message, cleared after leaving the mission summary screen + bool m_bGameOver; + + // True, when we're waiting to send the server an exitlevel confirmation. + bool m_bExitingLevel; + + // True, when we're exiting the last level of a mission + bool m_bExitingMission; + + // Used by FinishExitWorld to setup the loading state. + int m_nNewMission; + int m_nNewLevel; + CString m_sNewWorldName; + + eStartGameState m_eStartGameState; + int m_nSaveSlot; + + // Level switch is a new mission. + bool m_bNewMission; + + // Level switch is restored from a previous transition. + bool m_bRestoringLevel; + + // Level switch is from a load game and the server is not waiting for us + bool m_bServerWaiting; + +}; + +extern CMissionMgr* g_pMissionMgr; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/Music.cpp b/Jack/ClientShellDLL/Music.cpp new file mode 100644 index 00000000..41cdad9d --- /dev/null +++ b/Jack/ClientShellDLL/Music.cpp @@ -0,0 +1,740 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : Music.cpp +// +// PURPOSE : LithTech DirectMusic helper class. Handles all music commands for game. +// +// CREATED : Apr-13-2000 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "iltdirectmusic.h" +#include "iltclient.h" +#include "ClientServerShared.h" +#include "MsgIDs.h" +#include "CommonUtilities.h" +#include "Music.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::CMusic +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // +CMusic::CMusic( ) +{ + m_pClientDE = LTNULL; + m_pMusicMgr = NULL; + m_bMusicEnabled = TRUE; + m_bLevelInitialized = FALSE; + m_bHighQuality = true; + m_bUseSavedState = false; + + m_nMenuVolume = 0; + m_nTriggerVolume = 0; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Init +// +// PURPOSE: Initialize the music +// +// ----------------------------------------------------------------------- // +LTBOOL CMusic::Init( ILTClient *pClientDE) +{ + // make sure we are not already initialized + if (IsInitialized()) return LTTRUE; + + m_pClientDE = pClientDE; + + m_bMusicEnabled = TRUE; + m_bLevelInitialized = FALSE; + m_pMusicMgr = NULL; + + // get the musicenable console var + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("disablemusic"); + if (hVar) + { + // check if music is disabled + if (((int)g_pLTClient->GetVarValueFloat(hVar)) != 0) + { + m_bMusicEnabled = FALSE; + } + } + + // if music is enabled + if (MusicEnabled()) + { + // get a pointer to the music mgr + m_pMusicMgr = g_pLTClient->GetDirectMusicMgr(); + + // make sure directmusic mgr was available + if (m_pMusicMgr != NULL) + { + // initialize the music mgr + m_pMusicMgr->Init(); + } + else + { + return LTFALSE; + } + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Term +// +// PURPOSE: Terminate the music +// +// ----------------------------------------------------------------------- // +void CMusic::Term( ) +{ + // Make sure we clean up when we end this baby... + Stop(); + + if (m_pMusicMgr != NULL) + { + m_pMusicMgr->Term(); + m_pMusicMgr = NULL; + } + + m_pClientDE = NULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::InitMusicLevel +// +// PURPOSE: Initialize Music for Current Game Level +// +// ----------------------------------------------------------------------- // + +LTBOOL CMusic::InitLevel(char* pDirectory, char* pControlFile) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return LTFALSE; + if (m_pMusicMgr == NULL) return LTFALSE; + if (!pDirectory || !pControlFile || !*pDirectory || !*pControlFile) return LTFALSE; + + // Make sure we are not trying to initialize the level again + //if (IsLevelInitialized()) return LTTRUE; + if (IsLevelInitialized()) + { + TermLevel(); + } + + // If we're using low quality music, make sure we update the directory + // path + + char szDirectory[128]; + +#ifdef _DEMO + // Always use low quality music in the demo (only music in the demo)... + sprintf(szDirectory, "%s\\low", pDirectory); +#else + if (m_bHighQuality) + { + sprintf(szDirectory, "%s", pDirectory); + } + else + { + sprintf(szDirectory, "%s\\low", pDirectory); + } +#endif // _DEMO + + // initialize the music mgr + if ( m_pMusicMgr->InitLevel( szDirectory, pControlFile ) != LT_OK ) + { + return LTFALSE; + } + + // set level initialized flag + m_bLevelInitialized = TRUE; + + // set the initial volume + SetTriggerVolume(m_pMusicMgr->GetInitialVolume()); + + strcpy(m_State.szDirectory, pDirectory); + strcpy(m_State.szControlFile, pControlFile); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::TermMusicLevel +// +// PURPOSE: Terminate Music for Current Game Level +// +// ----------------------------------------------------------------------- // +void CMusic::TermLevel() +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (m_pMusicMgr == NULL) return; + + // make sure directmusic mgr was available + if (m_pMusicMgr != NULL) + { + // initialize the music mgr + m_pMusicMgr->TermLevel(); + } + + m_State.Clear(); + + // set level initialized flag + m_bLevelInitialized = FALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::ProcessMusicMessage +// +// PURPOSE: Process a music trigger message from the server. +// +// ----------------------------------------------------------------------- // + +void CMusic::ProcessMusicMessage(ILTMessage_Read *pMsg) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + // get the data from the message + HSTRING hStr = pMsg->ReadHString(); + + // get the message string data + const char *pMessage = g_pLTClient->GetStringData(hStr); + ProcessMusicMessage(pMessage); + + g_pLTClient->FreeString(hStr); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::ProcessMusicMessage +// +// PURPOSE: Process a music trigger message from the server. +// +// ----------------------------------------------------------------------- // + +void CMusic::ProcessMusicMessage(const char* pMessage) +{ + // Make sure mgrs are initialized + if (!pMessage || !pMessage[0]) return; + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + ConParse parse; + parse.Init(pMessage); + + while (g_pCommonLT->Parse(&parse) == LT_OK) + { + if (parse.m_nArgs > 1) + { + if (parse.m_Args[1] != NULL) + { + // change intensity command + if ((_stricmp(parse.m_Args[1], "intensity") == 0) || + (_stricmp(parse.m_Args[1], "i") == 0)) + { + if (parse.m_nArgs > 2) + { + if (parse.m_Args[2] != NULL) + { + // convert intensity value to an int + int nIntensity = atoi(parse.m_Args[2]); + + // figure out the enact time (optional parameter) + LTDMEnactTypes nEnact = LTDMEnactDefault; + if (parse.m_nArgs > 3) nEnact = StringToEnactType(parse.m_Args[3]); + + // change the music intensity + ChangeIntensity(nIntensity, nEnact); + } + } + } + // play secondary segment command + if ((_stricmp(parse.m_Args[1], "secondary") == 0) || + (_stricmp(parse.m_Args[1], "ps") == 0)) + + { + if (parse.m_nArgs > 2) + { + if (parse.m_Args[2] != NULL) + { + strcpy(m_State.szSecondary, parse.m_Args[2]); + + // figure out the enact time (optional parameter) + m_State.nSecondaryEnact = LTDMEnactDefault; + if (parse.m_nArgs > 3) m_State.nSecondaryEnact = StringToEnactType(parse.m_Args[3]); + + // play a secondary segment + m_pMusicMgr->PlaySecondary(m_State.szSecondary, m_State.nSecondaryEnact); + } + } + } + // play motif command + if ((_stricmp(parse.m_Args[1], "motif") == 0) || + (_stricmp(parse.m_Args[1], "pm") == 0)) + { + if (parse.m_nArgs > 3) + { + if ((parse.m_Args[2] != NULL) && (parse.m_Args[3] != NULL)) + { + strcpy(m_State.szMotifStyle, parse.m_Args[2]); + strcpy(m_State.szMotifName, parse.m_Args[3]); + + // figure out the enact time (optional parameter) + m_State.nMotifEnact = LTDMEnactDefault; + if (parse.m_nArgs > 4) + { + m_State.nMotifEnact = StringToEnactType(parse.m_Args[4]); + } + + // play a motif + if ((stricmp(m_State.szMotifStyle,"*") == 0)) + { + m_pMusicMgr->PlayMotif(NULL, m_State.szMotifName, m_State.nMotifEnact); + } + else + { + m_pMusicMgr->PlayMotif(m_State.szMotifStyle, m_State.szMotifName, m_State.nMotifEnact); + } + } + } + } + // set volume command + if ((_stricmp(parse.m_Args[1], "volume") == 0) || + (_stricmp(parse.m_Args[1], "v") == 0)) + { + if (parse.m_nArgs > 2) + { + if (parse.m_Args[2] != NULL) + { + // set the new volume + SetTriggerVolume(atol(parse.m_Args[2])); + } + } + } + // stop secondary segment command + if ((_stricmp(parse.m_Args[1], "stopsecondary") == 0) || + (_stricmp(parse.m_Args[1], "ss") == 0)) + + { + if (parse.m_nArgs > 2) + { + if (parse.m_Args[2] != NULL) + { + // No secondary... + m_State.szSecondary[0] = '\0'; + + // figure out the enact time (optional parameter) + LTDMEnactTypes nEnact = LTDMEnactDefault; + if (parse.m_nArgs > 3) nEnact = StringToEnactType(parse.m_Args[3]); + + // stop a secondary segment if name is * stop all + if ((stricmp(parse.m_Args[2],"*") == 0)) m_pMusicMgr->StopSecondary(NULL, nEnact); + else m_pMusicMgr->StopSecondary(parse.m_Args[2], nEnact); + } + } + } + // stop motif command + if ((_stricmp(parse.m_Args[1], "stopmotif") == 0) || + (_stricmp(parse.m_Args[1], "sm") == 0)) + { + if (parse.m_nArgs > 3) + { + if ((parse.m_Args[2] != NULL) && (parse.m_Args[3] != NULL)) + { + // No motifs... + m_State.szMotifStyle[0] = '\0'; + m_State.szMotifName[0] = '\0'; + + // figure out the enact time (optional parameter) + LTDMEnactTypes nEnact = LTDMEnactDefault; + if (parse.m_nArgs > 4) nEnact = StringToEnactType(parse.m_Args[4]); + + // if name or style are * pass in NULL for all/any + if ((stricmp(parse.m_Args[2],"*") == 0)) + { + if ((stricmp(parse.m_Args[3],"*") == 0)) m_pMusicMgr->StopMotif(NULL, NULL, nEnact); + else m_pMusicMgr->StopMotif(NULL, parse.m_Args[3], nEnact); + } + else + { + if ((stricmp(parse.m_Args[3],"*") == 0)) m_pMusicMgr->StopMotif(parse.m_Args[2], NULL, nEnact); + else m_pMusicMgr->StopMotif(parse.m_Args[2], parse.m_Args[3], nEnact); + } + } + } + } + // play command + if ((_stricmp(parse.m_Args[1], "play") == 0) || + (_stricmp(parse.m_Args[1], "p") == 0)) + + { + int nIntensity = -1; + LTDMEnactTypes nEnact = LTDMEnactDefault; + + if (parse.m_nArgs > 2) + { + if (parse.m_Args[2] != NULL) + { + // convert intensity value to an int + nIntensity = atoi(parse.m_Args[2]); + + // figure out the enact time (optional parameter) + if (parse.m_nArgs > 3) + { + nEnact = StringToEnactType(parse.m_Args[3]); + } + } + } + + // play music + Play(nIntensity, nEnact); + } + // stop command + if ((_stricmp(parse.m_Args[1], "stop") == 0) || + (_stricmp(parse.m_Args[1], "s") == 0)) + + { + // enact time to stop at + LTDMEnactTypes nEnact = LTDMEnactDefault; + + // see if there is another parameter for the enact time + if (parse.m_nArgs > 2) + { + nEnact = StringToEnactType(parse.m_Args[2]); + } + + // stop music from playing + Stop(nEnact); + } + } + } + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::StringToEnactType +// +// PURPOSE: Converts a string to an enact type for LithTech DirectMusic. +// +// ----------------------------------------------------------------------- // +LTDMEnactTypes CMusic::StringToEnactType(const char* sName) +{ + if (sName == NULL) return LTDMEnactDefault; + if (stricmp(sName, "Invalid") == 0) return LTDMEnactInvalid; + if (stricmp(sName, "Default") == 0) return LTDMEnactDefault; + if (stricmp(sName, "Immediately") == 0) return LTDMEnactImmediatly; + if (stricmp(sName, "Immediate") == 0) return LTDMEnactImmediatly; + if (stricmp(sName, "NextBeat") == 0) return LTDMEnactNextBeat; + if (stricmp(sName, "NextMeasure") == 0) return LTDMEnactNextMeasure; + if (stricmp(sName, "NextGrid") == 0) return LTDMEnactNextGrid; + if (stricmp(sName, "NextSegment") == 0) return LTDMEnactNextSegment; + if (stricmp(sName, "Beat") == 0) return LTDMEnactNextBeat; + if (stricmp(sName, "Measure") == 0) return LTDMEnactNextMeasure; + if (stricmp(sName, "Grid") == 0) return LTDMEnactNextGrid; + if (stricmp(sName, "Segment") == 0) return LTDMEnactNextSegment; + return LTDMEnactDefault; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Play +// +// PURPOSE: Begin playing music +// +// ----------------------------------------------------------------------- // +// Begin playing music +void CMusic::Play(int32 nIntensity /* = -1 */, int32 nStart /* = LTDMEnactDefault */) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + if (!GetConsoleInt("MusicActive",0)) return; + + if ( !m_State.bPlaying ) + { + DebugCPrint(2,"CMusic::Play()"); + m_pMusicMgr->Play(); + } + + m_State.bPlaying = LTTRUE; + + // Use the new intensity values... + + if ( nIntensity != -1 ) + { + m_State.nIntensity = nIntensity; + m_State.nIntensityEnact = (LTDMEnactTypes)nStart; + } + + m_pMusicMgr->ChangeIntensity(m_State.nIntensity, m_State.nIntensityEnact); + + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Stop +// +// PURPOSE: Stop playing music +// +// ----------------------------------------------------------------------- // +void CMusic::Stop(const LTDMEnactTypes nStart) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + if (!m_State.bPlaying) return; + + // Stop playing music + m_pMusicMgr->Stop(nStart); + m_State.bPlaying = LTFALSE; + DebugCPrint(2,"CMusic::Stop()"); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Pause +// +// PURPOSE: Pause playing music +// +// ----------------------------------------------------------------------- // +void CMusic::Pause(const LTDMEnactTypes nStart) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + // Pause music playing + m_pMusicMgr->Pause(); + m_State.bPaused = LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::UnPause +// +// PURPOSE: Un pause the music +// +// ----------------------------------------------------------------------- // +void CMusic::UnPause() +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + // UnPause music playing + m_pMusicMgr->UnPause(); + m_State.bPaused = LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::SetMenuVolume +// +// PURPOSE: Adjust music volume +// +// ----------------------------------------------------------------------- // +void CMusic::SetMenuVolume(const long nVolume) +{ + if (!IsInitialized()) return; + + // Set current volume (even if not everything is initialized yet) + m_nMenuVolume = nVolume; + + DebugCPrint(2,"CMusic::SetMenuVolume(%d)",nVolume); + + // make sure mgrs are initialized + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + m_pMusicMgr->SetVolume(m_nMenuVolume+m_nTriggerVolume); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::SetQuality +// +// PURPOSE: Adjust music quality +// +// ----------------------------------------------------------------------- // +void CMusic::SetQuality(const bool bHighQuality) +{ + // Always set the quality even if we're not initialized yet... + + bool bQualityChanged = (m_bHighQuality != bHighQuality); + m_bHighQuality = bHighQuality; + + if (!bQualityChanged) return; + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + + // Okay, quality changed and we're initialized so we need to re-initialize + // the music to the new quality setting...NOTE: Don't pass in m_State as + // it may change during the RestoreMusicState process... + + CMusicState tempState; + tempState.Copy(m_State); + + if (RestoreMusicState(tempState, true)) + { + // Restore us to the playing state if necessary... + if (tempState.bPlaying) + { + Play(tempState.nIntensity, tempState.nIntensityEnact); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::SetTriggerVolume +// +// PURPOSE: Adjust music volume +// +// ----------------------------------------------------------------------- // +void CMusic::SetTriggerVolume(const long nVolume) +{ + if (!IsInitialized()) return; + + // Set current volume (even if not everything is initialized yet) + m_nTriggerVolume = nVolume; + + DebugCPrint(2,"CMusic::SetTriggerVolume(%d)",nVolume); + + // make sure mgrs are initialized + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + m_pMusicMgr->SetVolume(m_nMenuVolume+m_nTriggerVolume); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::ChangeIntensity +// +// PURPOSE: Set the music intensity +// +// ----------------------------------------------------------------------- // +void CMusic::ChangeIntensity(const int nIntensity, const LTDMEnactTypes nStart) +{ + // make sure mgrs are initialized + if (!IsInitialized()) return; + if (!IsLevelInitialized()) return; + if (m_pMusicMgr == NULL) return; + + // Just set our intensity back to whatever it was... + + Play(nIntensity, nStart); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::RestoreMusicState +// +// PURPOSE: Restore the music to the given state +// +// ----------------------------------------------------------------------- // + +LTBOOL CMusic::RestoreMusicState(const CMusicState & newState, bool bForce) +{ + if (!IsInitialized()) return LTFALSE; + + // See if the new state is valid... + + if (!strlen(newState.szDirectory) || !strlen(newState.szControlFile)) + { + return LTFALSE; + } + + // See if anything has changed... + + if ( !IsLevelInitialized( ) || bForce || + (stricmp(m_State.szDirectory, newState.szDirectory) != 0) || + (stricmp(m_State.szControlFile, newState.szControlFile) != 0)) + { + if (!InitLevel((char*)newState.szDirectory, (char*)newState.szControlFile)) + { + return LTFALSE; + } + } + + + // See if this is the first time we restored music after loading a + // game...If so use our saved state... + + if (m_bUseSavedState) + { + ChangeIntensity(m_SavedState.nIntensity, m_SavedState.nIntensityEnact); + m_bUseSavedState = false; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Save +// +// PURPOSE: Save the state of the music +// +// ----------------------------------------------------------------------- // +void CMusic::Save(ILTMessage_Write *pMsg) +{ + if (!pMsg) return; + + pMsg->Writeint32( m_State.nIntensity ); + pMsg->Writeuint8( m_State.nIntensityEnact ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMusic::Load +// +// PURPOSE: Load the state of the music +// +// ----------------------------------------------------------------------- // +void CMusic::Load(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + m_bUseSavedState = true; + + m_SavedState.nIntensity = pMsg->Readint32(); + m_SavedState.nIntensityEnact = (LTDMEnactTypes) pMsg->Readuint8(); +} diff --git a/Jack/ClientShellDLL/Music.h b/Jack/ClientShellDLL/Music.h new file mode 100644 index 00000000..f6e8e244 --- /dev/null +++ b/Jack/ClientShellDLL/Music.h @@ -0,0 +1,178 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : Music.h +// +// PURPOSE : LithTech DirectMusic helper class. Handles all music commands for game. +// +// CREATED : Apr-13-2000 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __MUSIC_H__ +#define __MUSIC_H__ + +#include "ltbasedefs.h" +#include "iltclient.h" +#include "iltdirectmusic.h" + +class CPlayerObj; + +// Class Definition... + +struct CMusicState +{ + CMusicState() + { + Clear(); + } + + void Clear() + { + nIntensity = 0; + nIntensityEnact = LTDMEnactDefault; + szSecondary[0] = '\0'; + nSecondaryEnact = LTDMEnactDefault; + szMotifStyle[0] = '\0'; + szMotifName[0] = '\0'; + nMotifEnact = LTDMEnactDefault; + szDirectory[0] = '\0'; + szControlFile[0] = '\0'; + bPlaying = LTFALSE; + bPaused = LTFALSE; + } + + void Copy(const CMusicState & fromState) + { + nIntensity = fromState.nIntensity; + nIntensityEnact = fromState.nIntensityEnact; + nSecondaryEnact = fromState.nSecondaryEnact; + nMotifEnact = fromState.nMotifEnact; + bPlaying = fromState.bPlaying; + bPaused = fromState.bPaused; + strcpy(szSecondary, fromState.szSecondary); + strcpy(szMotifStyle, fromState.szMotifStyle); + strcpy(szMotifName, fromState.szMotifName); + strcpy(szDirectory, fromState.szDirectory); + strcpy(szControlFile, fromState.szControlFile); + } + + int nIntensity; + LTDMEnactTypes nIntensityEnact; + char szSecondary[64]; + LTDMEnactTypes nSecondaryEnact; + char szMotifStyle[64]; + char szMotifName[64]; + LTDMEnactTypes nMotifEnact; + char szDirectory[64]; + char szControlFile[32]; + LTBOOL bPlaying; + LTBOOL bPaused; +}; + +class CMusic +{ + public : + + // Constructor / Destructor + CMusic(); + ~CMusic() { Term(); } + + // Initialize mgr + LTBOOL Init(ILTClient *pClientDE); + + // Terminate mgr + void Term(); + + void Save(ILTMessage_Write *pMsg); + void Load(ILTMessage_Read *pMsg); + + // Returns true if mgr has been initialized + LTBOOL IsInitialized() const { return (m_pClientDE != NULL); } + + // Terminate the music for the current game level + void TermLevel(); + + // Returns true if mgr has been initialized + LTBOOL IsLevelInitialized() const { return m_bLevelInitialized; } + + LTBOOL IsPlaying() const { return m_State.bPlaying; } + + // Returns true if music is enabled + LTBOOL MusicEnabled() const { return m_bMusicEnabled; }; + + // Process a music trigger message from the server + void ProcessMusicMessage(ILTMessage_Read *pMsg); + void ProcessMusicMessage(const char* pMessage); + + // Begin playing music + void Play(int32 nIntensity = -1, int32 nStart = LTDMEnactDefault); + + // Stop playing music + void Stop(const LTDMEnactTypes nStart = LTDMEnactDefault); + + // Pause playing music + void Pause(const LTDMEnactTypes nStart = LTDMEnactDefault); + + // Unpause the music + void UnPause(); + + // Adjust music volumes + void SetMenuVolume(const long nVolume); + void SetTriggerVolume(const long nVolume); + + // Set music quality + void SetQuality(const bool bHighQuality); + + // Get music volumes + long GetMenuVolume() { return m_nMenuVolume; }; + long GetTriggerVolume() { return m_nTriggerVolume; }; + + void ChangeIntensity(const int nIntensity, const LTDMEnactTypes nStart = LTDMEnactDefault); + + LTBOOL RestoreMusicState(const CMusicState & newState, bool bForce=false); + + CMusicState* GetMusicState() { return &m_State; } + + private: + + // private functions + + // Initialize the music for the current game level + LTBOOL InitLevel(char* pDirectory, char* pControlFile); + + // converts a string to a LithTech DirectMusic enact type + LTDMEnactTypes StringToEnactType(const char* sName); + + // Member variables... + + // pointer to the ClientDE interface for LithTech + ILTClient * m_pClientDE; + + // pointer to the LithTech DirectMusic interface + ILTDirectMusicMgr* m_pMusicMgr; + + // set to TRUE if music is enabled + LTBOOL m_bMusicEnabled; + + // set to TRUE if we are currently in an initialized music game level + LTBOOL m_bLevelInitialized; + + // Current state of the music... + + CMusicState m_State; + + // The current volume as set by the control file initial volume or any game triggers + long m_nTriggerVolume; + + // The current volume as set by the game menu + long m_nMenuVolume; + + bool m_bHighQuality; // Music quality high or low + + bool m_bUseSavedState; + CMusicState m_SavedState; +}; + +#endif // __MUSIC_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MuzzleFlashFX.cpp b/Jack/ClientShellDLL/MuzzleFlashFX.cpp new file mode 100644 index 00000000..fdf3f504 --- /dev/null +++ b/Jack/ClientShellDLL/MuzzleFlashFX.cpp @@ -0,0 +1,561 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MuzzleFlashFX.cpp +// +// PURPOSE : MuzzleFlash special FX - Implementation +// +// CREATED : 12/17/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MuzzleFlashFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "iltmodel.h" +#include "ilttransform.h" +#include "VarTrack.h" + +VarTrack g_vtReallyClose; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Init +// +// PURPOSE: Init the MuzzleFlash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Don't support server-side versions of this fx... + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Init +// +// PURPOSE: Init the MuzzleFlash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + MUZZLEFLASHCREATESTRUCT* pMF = (MUZZLEFLASHCREATESTRUCT*)psfxCreateStruct; + + m_cs = *((MUZZLEFLASHCREATESTRUCT*)pMF); + + if (!m_cs.pWeapon) return LTFALSE; + + // Set our server object to our hParent so we get notified when + // the hParent goes away... + + if (!m_hServerObject) + { + m_hServerObject = m_cs.hParent; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::CreateObject +// +// PURPOSE: Create fx objects +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE || !CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + if (!g_vtReallyClose.IsInitted()) + { + g_vtReallyClose.Init(pClientDE, "MFReallyClose", NULL, 1.0f); + } + + return ResetFX(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Setup +// +// PURPOSE: Create fx objects +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::Setup(MUZZLEFLASHCREATESTRUCT & cs) +{ + LTBOOL bRet = LTFALSE; + + if (!m_pClientDE) + { + if (Init(&cs)) + { + bRet = CreateObject(g_pLTClient); + } + } + else + { + bRet = Reset(cs); + } + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Reset +// +// PURPOSE: Reset the muzzle flash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::Reset(MUZZLEFLASHCREATESTRUCT & cs) +{ + if (!m_pClientDE) return LTFALSE; + + m_cs = cs; + + ReallyHide(); + return ResetFX(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::ResetFX +// +// PURPOSE: Reset all the fx... +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::ResetFX() +{ + if (!m_pClientDE) return LTFALSE; + + m_bUsingParticles = LTFALSE; + m_bUsingLight = LTFALSE; + m_bUsingScale = LTFALSE; + + // Create/Reset the fx specified by the weapon... + + if (!m_cs.pWeapon) return LTFALSE; + + CMuzzleFX* pMuzzleFX = LTNULL; + if (m_cs.bPlayerView) + { + pMuzzleFX = m_cs.pWeapon->pPVMuzzleFX; + } + else + { + return LTFALSE; + } + + if (!pMuzzleFX) return LTFALSE; + + + // Create/Update the dynamic light... + + if (pMuzzleFX->pDLightFX) + { + if (m_cs.bPlayerView || GetConsoleInt("MuzzleLight", 1)) + { + m_bUsingLight = (LTBOOL) !!(g_pFXButeMgr->CreateDLightFX( + pMuzzleFX->pDLightFX, m_cs.vPos, &m_Light)); + } + } + + + // Create/Update the scale fx... + + if (pMuzzleFX->pScaleFX) + { + m_bUsingScale = (LTBOOL) !!(g_pFXButeMgr->CreateScaleFX(pMuzzleFX->pScaleFX, + m_cs.vPos, m_cs.rRot.Forward(), LTNULL, &(m_cs.rRot), &m_Scale)); + + // Make camera-relative if player view... + + if (m_bUsingScale && m_cs.bPlayerView) + { + if (m_Scale.GetObject()) + { + g_pCommonLT->SetObjectFlags(m_Scale.GetObject(), OFT_Flags, FLAG_REALLYCLOSE, FLAG_REALLYCLOSE); + } + } + } + + // Create/Update the particle muzzle fx... + + if (pMuzzleFX->pPMuzzleFX) + { + MFPCREATESTRUCT mfpcs; + mfpcs.pPMuzzleFX = pMuzzleFX->pPMuzzleFX; + mfpcs.bPlayerView = m_cs.bPlayerView; + mfpcs.vPos = m_cs.vPos; + mfpcs.rRot = m_cs.rRot; + mfpcs.hFiredFrom = m_cs.bPlayerView ? LTNULL : m_cs.hParent; + + if (!m_Particle.GetObject()) + { + if (m_Particle.Init(&mfpcs)) + { + m_Particle.CreateObject(m_pClientDE); + + // Make camera-relative if player view... + + if (m_cs.bPlayerView) + { + if (m_Particle.GetObject()) + { + g_pCommonLT->SetObjectFlags(m_Particle.GetObject(), OFT_Flags, + g_vtReallyClose.GetFloat() ? FLAG_REALLYCLOSE : 0, FLAG_REALLYCLOSE); + } + } + } + } + else + { + m_Particle.Reset(mfpcs); + } + + m_bUsingParticles = LTTRUE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Update +// +// PURPOSE: Update the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashFX::Update() +{ + if (!m_pClientDE || m_bHidden) return LTFALSE; + + // If we we're not a player-view muzzle fx, If our + // server object has been removed, we should go away... + + if (!m_cs.bPlayerView && !m_hServerObject) return LTFALSE; + + // Set/Clear the FLAG_REALLYCLOSE + + if (m_bUsingParticles && m_Particle.GetObject()) + { + g_pCommonLT->SetObjectFlags(m_Particle.GetObject(), OFT_Flags, + (m_cs.bPlayerView && g_vtReallyClose.GetFloat()) ? FLAG_REALLYCLOSE : 0, FLAG_REALLYCLOSE); + } + + if (m_bUsingScale && m_Scale.GetObject()) + { + g_pCommonLT->SetObjectFlags(m_Scale.GetObject(), OFT_Flags, + m_cs.bPlayerView ? FLAG_REALLYCLOSE : 0, FLAG_REALLYCLOSE); + } + + + // Update all the fx, and see if we're done... + + LTBOOL bParticleDone = m_bUsingParticles ? !m_Particle.Update() : LTTRUE; + LTBOOL bLightDone = m_bUsingLight ? !m_Light.Update() : LTTRUE; + LTBOOL bScaleDone = m_bUsingScale ? !m_Scale.Update() : LTTRUE; + + + // Keep the objects in the correct place... + + if (!m_cs.bPlayerView && m_cs.hParent) + { + HOBJECT hObj; + LTRotation rRot; + LTVector vPos; + + if( !GetAttachmentSocketTransform(m_cs.hParent, "Flash", vPos, rRot)) + { + DebugCPrint(1, "CMuzzleFlashFX::Update: Invalid attachment." ); + ASSERT( !"CMuzzleFlashFX::Update: Invalid attachment." ); + return LTFALSE; + } + + if (m_bUsingScale) + { + hObj = m_Scale.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectPosAndRotation(hObj, &vPos, &rRot); + } + } + + if (m_bUsingParticles) + { + hObj = m_Particle.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectPosAndRotation(hObj, &vPos, &rRot); + } + } + + if (m_bUsingLight) + { + hObj = m_Light.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectPos(hObj, &vPos); + } + } + } + + return !(bParticleDone && bLightDone && bScaleDone); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Hide +// +// PURPOSE: Hide the fx +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::Hide() +{ + m_bHidden = LTTRUE; + ReallyHide(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::ReallyHide +// +// PURPOSE: Hide the fx +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::ReallyHide() +{ + if (!m_pClientDE) return; + + HOBJECT hObj; + + // Hide particles... + + hObj = m_Particle.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + + // Hide light... + + hObj = m_Light.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + + // Hide scale fx... + + hObj = m_Scale.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Show +// +// PURPOSE: Show the fx +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::Show() +{ + if (!m_pClientDE) return; + + HOBJECT hObj; + + m_bHidden = LTFALSE; + + // Show particles... + + if (m_bUsingParticles) + { + hObj = m_Particle.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + // Show light... + + if (m_bUsingLight && GetConsoleInt("MuzzleLight", 1)) + { + hObj = m_Light.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + // Show scale fx... + + if (m_bUsingScale) + { + hObj = m_Scale.GetObject(); + if (hObj) + { + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::SetPos +// +// PURPOSE: Set the fx positions +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::SetPos(const LTVector &vWorldPos, const LTVector &vCamRelPos) +{ + if (!m_pClientDE) return; + + HOBJECT hObj; + + //m_pClientDE->CPrint("WorldPos: %.2f, %.2f, %.2f", VEC_EXPAND(vWorldPos)); + //m_pClientDE->CPrint("CamRelPos: %.2f, %.2f, %.2f", VEC_EXPAND(vCamRelPos)); + + if (m_bUsingParticles) + { + hObj = m_Particle.GetObject(); + if (hObj) + { + if (g_vtReallyClose.GetFloat()) + { + g_pLTClient->SetObjectPos(hObj, const_cast(&vCamRelPos)); + } + else + { + g_pLTClient->SetObjectPos(hObj, const_cast(&vWorldPos)); + } + } + } + + if (m_bUsingLight) + { + hObj = m_Light.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectPos(hObj, const_cast(&vWorldPos)); + } + } + + if (m_bUsingScale) + { + hObj = m_Scale.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectPos(hObj, const_cast(&vCamRelPos)); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::SetRot +// +// PURPOSE: Set the fx rotations +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::SetRot(const LTRotation &rRot) +{ + if (!m_pClientDE) return; + + HOBJECT hObj; + + if (m_bUsingParticles) + { + hObj = m_Particle.GetObject(); + if (hObj) + { + if (g_vtReallyClose.GetFloat()) + { + g_pLTClient->SetObjectRotation(hObj, <Rotation()); + } + else + { + g_pLTClient->SetObjectRotation(hObj, const_cast(&rRot)); + } + } + } + + if (m_bUsingLight) + { + hObj = m_Light.GetObject(); + if (hObj) + { + g_pLTClient->SetObjectRotation(hObj, const_cast(&rRot)); + } + } + + if (m_bUsingScale) + { + hObj = m_Scale.GetObject(); + if (hObj) + { + LTRotation rTempRot = rRot; + + // Camera relative rotation... + if (m_cs.bPlayerView) + { + rTempRot.Init(); + } + + g_pLTClient->SetObjectRotation(hObj, &rTempRot); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashFX::Term +// +// PURPOSE: If Term() is called on the CMuzzleFlashFX, Setup must be +// called on the object to re-create any engine objects +// associated with the fx. +// +// ----------------------------------------------------------------------- // + +void CMuzzleFlashFX::Term() +{ + // Set our clientde pointer to NULL, this is how Setup knows to + // create our sub-objects... + m_pClientDE = LTNULL; + + // Term our sub-objects... + + m_Particle.Term(); + m_Scale.Term(); + m_Light.Term(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MuzzleFlashFX.h b/Jack/ClientShellDLL/MuzzleFlashFX.h new file mode 100644 index 00000000..a507e8e0 --- /dev/null +++ b/Jack/ClientShellDLL/MuzzleFlashFX.h @@ -0,0 +1,89 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MuzzleFlashFX.h +// +// PURPOSE : MuzzleFlash special fx class - Definition +// +// CREATED : 12/17/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __MUZZLE_FLASH_FX_H__ +#define __MUZZLE_FLASH_FX_H__ + +#include "SpecialFX.h" +#include "WeaponMgr.h" +#include "MuzzleFlashParticleFX.h" +#include "DynamicLightFX.h" +#include "BaseScaleFX.h" + +struct MUZZLEFLASHCREATESTRUCT : public SFXCREATESTRUCT +{ + MUZZLEFLASHCREATESTRUCT(); + + WEAPON const* pWeapon; // Weapon data + HOBJECT hParent; // Character or Player model if bPlayerView = TRUE + LTVector vPos; // Initial pos + LTRotation rRot; // Initial rotation + LTBOOL bPlayerView; // Is this fx tied to the client-side player view +}; + +inline MUZZLEFLASHCREATESTRUCT::MUZZLEFLASHCREATESTRUCT() +{ + rRot.Init(); + vPos.Init(); + hParent = LTNULL; + pWeapon = LTNULL; + bPlayerView = LTFALSE; +} + + +class CMuzzleFlashFX : public CSpecialFX +{ + public : + + CMuzzleFlashFX() : CSpecialFX() + { + m_bUsingParticles = LTFALSE; + m_bUsingScale = LTFALSE; + m_bUsingLight = LTFALSE; + m_bHidden = LTFALSE; + } + + void Term(); + + LTBOOL Setup(MUZZLEFLASHCREATESTRUCT & cs); + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + void Hide(); + void Show(); + void SetPos(const LTVector &vWorldPos, const LTVector &vCamRelPos); + void SetRot(const LTRotation &rRot); + + virtual uint32 GetSFXID() { return SFX_MUZZLEFLASH_ID; } + private : + + LTBOOL Reset(MUZZLEFLASHCREATESTRUCT & cs); + LTBOOL ResetFX(); + void ReallyHide(); + + + MUZZLEFLASHCREATESTRUCT m_cs; // Our data + + CMuzzleFlashParticleFX m_Particle; // Particle system + CBaseScaleFX m_Scale; // Model/Sprite + CDynamicLightFX m_Light; // Dynamic light + + LTBOOL m_bUsingParticles; + LTBOOL m_bUsingScale; + LTBOOL m_bUsingLight; + LTBOOL m_bHidden; +}; + +#endif // __MUZZLE_FLASH_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/MuzzleFlashParticleFX.cpp b/Jack/ClientShellDLL/MuzzleFlashParticleFX.cpp new file mode 100644 index 00000000..9b24043c --- /dev/null +++ b/Jack/ClientShellDLL/MuzzleFlashParticleFX.cpp @@ -0,0 +1,229 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MuzzleFlashParticleFX.cpp +// +// PURPOSE : MuzzleFlash special FX - Implementation +// +// CREATED : 1/17/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "MuzzleFlashParticleFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "iltmodel.h" +#include "ilttransform.h" + +#define MFPFX_INFINITE_DURATION 1000000.0f + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::Init +// +// PURPOSE: Init the MuzzleFlash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CBaseParticleSystemFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Don't support server-side versions of this fx... + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::Init +// +// PURPOSE: Init the MuzzleFlash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + MFPCREATESTRUCT* pMF = (MFPCREATESTRUCT*)psfxCreateStruct; + + m_cs = *((MFPCREATESTRUCT*)pMF); + + if (!m_cs.pPMuzzleFX) return LTFALSE; + + // Make sure parent fx has correct values... + + m_basecs.bAdditive = m_cs.bAdditive = m_cs.pPMuzzleFX->bAdditive; + m_basecs.bMultiply = m_cs.bMultiply = m_cs.pPMuzzleFX->bMultiply; + + m_vPos = m_cs.vPos; + m_rRot = m_cs.rRot; + m_fRadius = m_cs.pPMuzzleFX->fRadius; + m_fGravity = 0.0f; + + // Set our server object to our fired from so we get notified when + // the fired from goes away... + + if (!m_hServerObject) + { + m_hServerObject = m_cs.hFiredFrom; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + if (m_cs.pPMuzzleFX->szFile[0]) + { + m_pTextureName = m_cs.pPMuzzleFX->szFile; + } + + LTBOOL bRet = CBaseParticleSystemFX::CreateObject(pClientDE); + + if (bRet) + { + bRet = AddMuzzleFlash(); + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::Reset +// +// PURPOSE: Reset the muzzle flash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::Reset(MFPCREATESTRUCT & mfcs) +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + m_cs = mfcs; + + if (!m_cs.pPMuzzleFX) return LTFALSE; + + m_vPos = m_cs.vPos; + m_rRot = m_cs.rRot; + m_fRadius = m_cs.pPMuzzleFX->fRadius; + m_fGravity = 0.0f; + + if (m_cs.pPMuzzleFX->szFile[0]) + { + m_pTextureName = m_cs.pPMuzzleFX->szFile; + } + + RemoveAllParticles(); + + CBaseParticleSystemFX::SetupSystem(); + + return AddMuzzleFlash(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::Update +// +// PURPOSE: Update the particles +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::Update() +{ + if (!m_hObject || !m_pClientDE || !m_cs.pPMuzzleFX) return LTFALSE; + + // If we have a fired from, it should be the same as our + // server object. If our server object has been removed, in + // this case, we should go away... + + if (m_cs.hFiredFrom && !m_hServerObject) return LTFALSE; + + + LTFLOAT fTime = m_pClientDE->GetTime(); + + LTFLOAT fDuration = m_cs.bPlayerView ? MFPFX_INFINITE_DURATION : m_cs.pPMuzzleFX->fDuration; + + // Check to see if we should go away... + + if (fTime > m_fStartTime + fDuration) + { + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMuzzleFlashParticleFX::AddMuzzleFlash +// +// PURPOSE: Make the MuzzleFlash +// +// ----------------------------------------------------------------------- // + +LTBOOL CMuzzleFlashParticleFX::AddMuzzleFlash() +{ + if (!m_hObject || !m_pClientDE || !m_cs.pPMuzzleFX) return LTFALSE; + + LTParticle* pParticle = LTNULL; + + LTVector vF, vU, vR; + vU = m_cs.rRot.Up(); + vR = m_cs.rRot.Right(); + vF = m_cs.rRot.Forward(); + + LTFLOAT fLength = m_cs.pPMuzzleFX->fLength; + + LTVector vPos(0, 0, 0), vZero(0, 0, 0), vColor; + int nNumParticles = GetNumParticles(m_cs.pPMuzzleFX->nNumParticles); + LTFLOAT fFDelta = fLength / (LTFLOAT)nNumParticles; + + LTFLOAT fDuration = m_cs.bPlayerView ? MFPFX_INFINITE_DURATION : m_cs.pPMuzzleFX->fDuration; + + // Add all the particles...stepping along the forward vector... + + for (LTFLOAT fFOffset = 0.0f; fFOffset < fLength; fFOffset += fFDelta) + { + // Add particle at current position along the forward vector... + + GetRandomColorInRange(vColor); + pParticle = m_pClientDE->AddParticle(m_hObject, &vPos, &vZero, &vColor, fDuration); + + // Adjust particle size... + + if (pParticle) + { + LTFLOAT fDistPercent = (fFOffset / fLength); + fDistPercent = fDistPercent <= 0.33f ? GetRandom(0.1f, 0.33f) : + (fDistPercent <= 0.5f ? GetRandom(0.5f, 1.0f) : GetRandom(0.5f, 1.0f)); + + LTFLOAT fScale = (fDistPercent * m_cs.pPMuzzleFX->fMaxScale); + pParticle->m_Size = m_fRadius * (1.0f + fScale); + } + + vPos.z += fFDelta; + } + + m_fStartTime = m_pClientDE->GetTime(); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/MuzzleFlashParticleFX.h b/Jack/ClientShellDLL/MuzzleFlashParticleFX.h new file mode 100644 index 00000000..155e6604 --- /dev/null +++ b/Jack/ClientShellDLL/MuzzleFlashParticleFX.h @@ -0,0 +1,64 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : MuzzleFlashParticleFX.h +// +// PURPOSE : MuzzleFlash particle special fx class - Definition +// +// CREATED : 1/17/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __MUZZLEFLASH_PARTICLE_FX_H__ +#define __MUZZLEFLASH_PARTICLE_FX_H__ + +#include "BaseParticleSystemFX.h" +#include "FXButeMgr.h" + +struct MFPCREATESTRUCT : public BPSCREATESTRUCT +{ + MFPCREATESTRUCT(); + + HOBJECT hFiredFrom; + LTVector vPos; + LTRotation rRot; + CParticleMuzzleFX* pPMuzzleFX; + LTBOOL bPlayerView; +}; + +inline MFPCREATESTRUCT::MFPCREATESTRUCT() +{ + rRot.Init(); + vPos.Init(); + hFiredFrom = LTNULL; + pPMuzzleFX = LTNULL; + bPlayerView = LTFALSE; +} + + +class CMuzzleFlashParticleFX : public CBaseParticleSystemFX +{ + public : + + CMuzzleFlashParticleFX() : CBaseParticleSystemFX() + { + m_fStartTime = 0.0f; + } + + LTBOOL Reset(MFPCREATESTRUCT & mfcs); + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + private : + + LTBOOL AddMuzzleFlash(); + + MFPCREATESTRUCT m_cs; // Our data + LTFLOAT m_fStartTime; // When did we start +}; + +#endif // __MUZZLEFLASH_PARTICLE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/NodeController.cpp b/Jack/ClientShellDLL/NodeController.cpp new file mode 100644 index 00000000..ef0d447d --- /dev/null +++ b/Jack/ClientShellDLL/NodeController.cpp @@ -0,0 +1,1024 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : NodeController.cpp +// +// PURPOSE : Model node control +// +// CREATED : 1997 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "StdAfx.h" +#include "SFXMsgIds.h" +#include "NodeController.h" +#include "iltmodel.h" +#include "ilttransform.h" +#include "CharacterFx.h" +#include "SoundMgr.h" +#include "VarTrack.h" +#include "HudMgr.h" +#include "GameClientShell.h" +#include "MsgIds.h" + +//Lip sync file version information +#define LIPSYNC_FILE_ID (('L' << 24) | ('I' << 16) | ('P' << 8) | 'S') +#define LIPSYNC_FILE_VERSION 1 + +#define INVALID_NODE_CONTROL -1 + + +VarTrack g_vtLipFlapMaxRot; +VarTrack g_vtLipFlapFreq; +VarTrack g_vtDisableLipFlap; + +// ----------------------------------------------------------------------- // + +CNodeController::CNodeController() +{ + m_pCharacterFX = LTNULL; + + m_cNodeControls = 0; + + m_fCurLipFlapRot = 0.0f; + m_bAddedNodeControlFn = false; + + m_hSound = LTNULL; + m_nUniqueDialogueId = 0; + m_bSubtitlePriority = false; + + m_pSixteenBitBuffer = LTNULL; + m_pEightBitBuffer = LTNULL; + m_dwSamplesPerSecond = 0; + + m_bShowingSubtitles = LTFALSE; +} + +// ----------------------------------------------------------------------- // + +CNodeController::~CNodeController() +{ + // Make sure we free up allocated memory... + CleanUpLipSyncNodeControls(); +} + +// ----------------------------------------------------------------------- // + +LTBOOL CNodeController::Init(CCharacterFX* pCharacterFX) +{ + _ASSERT(pCharacterFX); + if ( !pCharacterFX ) return LTFALSE; + + if (!g_vtLipFlapMaxRot.IsInitted()) + { + g_vtLipFlapMaxRot.Init(g_pLTClient, "LipFlapMaxRot", NULL, 30.0f); + } + + if (!g_vtLipFlapFreq.IsInitted()) + { + g_vtLipFlapFreq.Init(g_pLTClient, "LipFlapFreq", NULL, 20.0f); + } + + if (!g_vtDisableLipFlap.IsInitted()) + { + g_vtDisableLipFlap.Init(g_pLTClient, "DisableLipFlap", NULL, 0.0f); + } + + + // Store our backpointer + + m_pCharacterFX = pCharacterFX; + + // Map all the nodes in our skeleton in the bute file to the nodes in the actual model file + + int iNode = 0; + HMODELNODE hCurNode = INVALID_MODEL_NODE; + while ( g_pLTClient->GetModelLT()->GetNextNode(GetCFX()->GetServerObj(), hCurNode, hCurNode) == LT_OK) + { + char szName[64] = ""; + g_pLTClient->GetModelLT()->GetNodeName(GetCFX()->GetServerObj(), hCurNode, szName, 64); + + ModelNode eModelNode = g_pModelButeMgr->GetSkeletonNode(m_pCharacterFX->GetModelSkeleton(), szName); + + if ( eModelNode != eModelNodeInvalid ) + { + _ASSERT(eModelNode < kMaxNodes); + + if (eModelNode < kMaxNodes) + { + m_aNodes[eModelNode].eModelNode = eModelNode; + m_aNodes[eModelNode].hModelNode = hCurNode; + } + else + { + DebugCPrint(1,"ERROR in CNodeController::Init()!"); + DebugCPrint(1," More than (%d) model nodes!", kMaxNodes); + return LTFALSE; + } + } + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::Update() +{ + //don't bother if we are paused + uint32 nFlags; + g_pLTClient->Common()->GetObjectFlags(GetCFX()->GetServerObj(), OFT_Flags, nFlags); + + if(nFlags & FLAG_PAUSED) + return; + + if ( m_cNodeControls > 0 ) + { + if(!m_bAddedNodeControlFn) + { + g_pLTClient->GetModelLT()->AddNodeControlFn(GetCFX()->GetServerObj(), CNodeController::NodeControlFn, this); + m_bAddedNodeControlFn = true; + } + } + else + { + if(m_bAddedNodeControlFn) + { + g_pLTClient->GetModelLT()->RemoveNodeControlFn(GetCFX()->GetServerObj(), CNodeController::NodeControlFn, this); + m_bAddedNodeControlFn = false; + } + } + + // Reset all our nodes matrices + + for ( int iNode = 0 ; iNode < kMaxNodes ; iNode++ ) + { + // Only reset the matrix if our control refcount is greater than zero (ie we are being controlled) + + if ( m_aNodes[iNode].cControllers > 0 ) + { + m_aNodes[iNode].matTransform.Identity(); + } + } + + // Update all our active node controls. + + int cValidNodeControls = 0; + + for ( int iNodeControl = 0 ; iNodeControl < kMaxNodeControls && cValidNodeControls < m_cNodeControls ; iNodeControl++ ) + { + if ( m_aNodeControls[iNodeControl].bValid ) + { + // Update the node control + + cValidNodeControls++; + + switch ( m_aNodeControls[iNodeControl].eControl ) + { + case eControlLipFlap: + UpdateLipFlapControl(&m_aNodeControls[iNodeControl]); + break; + + case eControlLipSync: + UpdateLipSyncControl(&m_aNodeControls[iNodeControl]); + break; + + case eControlHeadFollowObj: + UpdateHeadFollowObjControl(&m_aNodeControls[iNodeControl]); + break; + + default: + _ASSERT(LTFALSE); + m_aNodeControls[iNodeControl].bValid = LTFALSE; + break; + } + + // Check to see if the node control is done + + if ( !m_aNodeControls[iNodeControl].bValid ) + { + RemoveNodeControl(iNodeControl); + } + } + } +} + +// ----------------------------------------------------------------------- // + +void CNodeController::UpdateLipFlapControl(NCSTRUCT *pNodeControl) +{ + bool bEnd = false; + + // Make sure the sound handle is valid and check to see if the sound is done + if ( !m_hSound || g_pLTClient->IsDone(m_hSound) ) + { + bEnd = true; + } + + + LTRotation rRot; + rRot.Init(); + + if( !bEnd ) + { + // [KLS 9/10/02] - If the sound system is re-inited our buffers will be cleared so + // we need to make sure we always have valid sound buffers... + + if (!m_pSixteenBitBuffer && !m_pEightBitBuffer) + { + LTRESULT ltRes = g_pLTClient->GetSoundData(m_hSound, m_pSixteenBitBuffer, + m_pEightBitBuffer, &m_dwSamplesPerSecond, NULL); + + if( ltRes != LT_OK ) + { + DebugCPrint(1,"CNodeController::UpdateLipFlapControl: Could not read sound data! Is it streamed?"); + } + } + + // Process the current sound data (average over sound amplitude) + LTFLOAT fAverage = 0.0f; // this will hold the average, normalized from 0.0f to 1.0f. + + uint32 dwOffset = 0; + uint32 dwSize = 0; + + // Average over the data. We do an average of the data from the current point + // being played to 1/g_vtLipFlapFreq.GetFloat() seconds ahead of that point. + if( LT_OK == g_pLTClient->GetSoundOffset(m_hSound, &dwOffset, &dwSize)) + { + // Determine the end of the data we wish to average over. + + const uint32 dwDivisor = uint32(g_vtLipFlapFreq.GetFloat()); + uint32 dwOffsetEnd = dwOffset + m_dwSamplesPerSecond/dwDivisor; + dwOffsetEnd = Min(dwOffsetEnd, dwSize); + + // Accumulate the the amplitudes for the average. + + uint32 dwMaxAmplitude = 0; + uint32 dwNumSamples = 0; + uint32 dwAccum = 0; + + if( m_pSixteenBitBuffer ) + { + for( int16 * pIterator = m_pSixteenBitBuffer + dwOffset; + pIterator < m_pSixteenBitBuffer + dwOffsetEnd; + ++pIterator) + { + dwAccum += abs(*pIterator); + ++dwNumSamples; + } + + dwMaxAmplitude = 65536/2; + } + else if( m_pEightBitBuffer ) + { + for( int8 * pIterator = m_pEightBitBuffer + dwOffset; + pIterator < m_pEightBitBuffer + dwOffsetEnd; + ++pIterator) + { + dwAccum += abs(*pIterator); + ++dwNumSamples; + } + + dwMaxAmplitude = 256/2; + } + + // And find the average! + if( dwNumSamples > 0 ) + { + fAverage = LTFLOAT(dwAccum) / LTFLOAT(dwNumSamples) / LTFLOAT(dwMaxAmplitude); + } + } + + // Do the rotation. + + LTVector vAxis(0.0f, 0.0f, 1.0f); + LTFLOAT fMaxRot = MATH_DEGREES_TO_RADIANS(g_vtLipFlapMaxRot.GetFloat()); + + // Calculate the rotation + + m_fCurLipFlapRot = fAverage*fMaxRot; + rRot.Rotate(vAxis, -m_fCurLipFlapRot); + + // Check if they have a valid modelnode. + if( pNodeControl->eModelNode == eModelNodeInvalid ) + { + _ASSERT( !"CNodeController::UpdateLipFlapControl: Invalid modelnode." ); + bEnd = true; + } + } + + if( !bEnd ) + { + // Create a rotation matrix and apply it to the current offset matrix + LTMatrix m1; + rRot.ConvertToMatrix(m1); + m_aNodes[pNodeControl->eModelNode].matTransform = m_aNodes[pNodeControl->eModelNode].matTransform * m1; + } + + if( bEnd ) + { + KillLipSyncSound( true ); + pNodeControl->bValid = LTFALSE; + } +} + +// ----------------------------------------------------------------------- // + +void CNodeController::UpdateLipSyncControl(NCSTRUCT *pNodeControl) +{ + // Make sure the sound handle is valid and check to see if the sound is done + + if ( !m_hSound || g_pLTClient->IsDone(m_hSound) ) + { + KillLipSyncSound( true ); + pNodeControl->bValid = LTFALSE; + + return; + } + + pNodeControl->fTimer += g_pLTClient->GetFrameTime(); + if ( pNodeControl->fTimer < 0.0f ) + return; + + //the amount of time each keyframe lasts + static const float kfKeyFrameTime = 1.0f / 30.0f; + + int iKeyframe = int(pNodeControl->fTimer / kfKeyFrameTime); + + if ( iKeyframe >= pNodeControl->cKeyframes ) + return; + + int iKeyframeNext = Min(pNodeControl->cKeyframes-1, iKeyframe+1); + float fInterpolation = pNodeControl->fTimer / kfKeyFrameTime - (float)iKeyframe; + + // Check if they have a valid modelnode. + if( pNodeControl->eModelNode == eModelNodeInvalid ) + { + _ASSERT( !"CNodeController::UpdateLipSyncControl: Invalid modelnode." ); + return; + } + +// g_pLTClient->CPrint("%d: Updating lip syncing, keyframe = %d, fInterpolation = %f", pNodeControl, iKeyframe, fInterpolation); + + LTVector vTranslation = pNodeControl->aKeyframes[iKeyframe].vTranslation*(1.0f - fInterpolation) + + pNodeControl->aKeyframes[iKeyframeNext].vTranslation*(fInterpolation); + + LTRotation rRotation; + rRotation.Slerp(pNodeControl->aKeyframes[iKeyframe].rRotation, pNodeControl->aKeyframes[iKeyframeNext].rRotation, fInterpolation); + + LTMatrix m; + m.Identity(); + + rRotation.ConvertToMatrix(m); + m.SetTranslation(vTranslation); + + m_aNodes[pNodeControl->eModelNode].matTransform = m_aNodes[pNodeControl->eModelNode].matTransform * m; +} + +// ----------------------------------------------------------------------- // + +LTBOOL CNodeController::HandleNodeControlMessage(uint8 byMsgId, ILTMessage_Read *pMsg) +{ + switch ( byMsgId ) + { + case CFX_NODECONTROL_LIP_SYNC: + { + HandleNodeControlLipSyncMessage(pMsg); + break; + } + + case CFX_NODECONTROL_HEAD_FOLLOW_OBJ: + { + HandleNodeControlHeadFollowObjMessage(pMsg); + break; + } + + default : + { + DebugCPrint(1,"ERROR in CNodeController::HandleNodeControlMessage invalid message Id!"); + } + break; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::HandleNodeControlLipSyncMessage(ILTMessage_Read *pMsg) +{ + HSTRING hSoundFile = pMsg->ReadHString(); + LTFLOAT fRadius = pMsg->Readfloat(); + m_nUniqueDialogueId = pMsg->Readuint8( ); + CharacterSoundType cst = (CharacterSoundType)pMsg->Readuint8( ); + + m_bSubtitlePriority = (cst == CST_DIALOG); + bool bCensor = (cst == CST_DEATH) || (cst == CST_DAMAGE); + + if (bCensor && g_pVersionMgr->IsLowViolence()) + { + //don't play the sound, but do notify the server that we're done with it + KillLipSyncSound( true ); + return; + } + + char const* pszSoundFile = g_pLTClient->GetStringData(hSoundFile); + + HandleNodeControlLipSync(pszSoundFile, fRadius); + + g_pLTClient->FreeString(hSoundFile); + hSoundFile = NULL; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::HandleNodeControlLipFlap( char const* pszSoundFile, LTFLOAT fRadius) +{ + if (g_vtDisableLipFlap.GetFloat()) + return; + + ModelNode eModelNode = g_pModelButeMgr->GetSkeletonNode(m_pCharacterFX->GetModelSkeleton(), "Face_Jaw"); + + // See if we are already controlling the jaw node + + int iCtrl = FindNodeControl(eModelNode, eControlLipFlap); + + LTBOOL bSubtitles = LTFALSE; + char szSound[128]; + strcpy(szSound, pszSoundFile); + + // Check to make sure all the info is ok... + + if ((eModelNode == eModelNodeInvalid) || fRadius <= 0.0f) + { + if( iCtrl != INVALID_NODE_CONTROL ) + { + if ( m_hSound ) + { + KillLipSyncSound( false ); + } + + m_aNodeControls[iCtrl].bValid = LTFALSE; + } + + return; + } + + // Add the node control structure... + + int iNodeControl = (iCtrl != INVALID_NODE_CONTROL) ? iCtrl : AddNodeControl(); + + ASSERT(iNodeControl != INVALID_NODE_CONTROL); + if ( iNodeControl == INVALID_NODE_CONTROL ) + { + return; + } + + if ( m_hSound ) + { + KillLipSyncSound( false ); + } + + NCSTRUCT* pNodeControl = &m_aNodeControls[iNodeControl]; + pNodeControl->eControl = eControlLipFlap; + pNodeControl->eModelNode = eModelNode; + + m_bShowingSubtitles = bSubtitles; + + ResetSoundBufferData(); + + // Start the sound. + m_hSound = m_pCharacterFX->PlayLipSyncSound(szSound, fRadius, bSubtitles, m_bSubtitlePriority); + if( m_hSound == NULL ) + { + KillLipSyncSound( true ); + return; + } + + pNodeControl->bValid = LTTRUE; + + // Increment the number of controllers for this node + + m_aNodes[eModelNode].cControllers++; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::HandleNodeControlLipSync( char const* pszSoundFile, LTFLOAT fRadius) +{ + char szSound[_MAX_PATH + 1]; + char szPhoneme[_MAX_PATH + 1]; + + strcpy(szSound, pszSoundFile); + strcpy(szPhoneme, pszSoundFile); + + + // [KLS 3/1/02] - Make sure we clean up any lip syncing node controls that are + // currently active... + + CleanUpLipSyncNodeControls(); + + char* pch = strchr(szPhoneme, '.'); + + if ( !pch ) + { + // DebugCPrint(1,"CNodeController::HandleNodeControlLipSync() invalid pszSoundFile: '%s'", pszSoundFile ? pszSoundFile : "NULL"); + return; + } + + + strcpy(pch, ".lip"); + + ILTStream* pStream = LTNULL; + LTRESULT dr = g_pLTBase->OpenFile(szPhoneme, &pStream); + + if (dr != LT_OK || !pStream) + { + // g_pLTClient->CPrint("Playing sound '%s' as a lip FLAP sound...Couldn't find .lip file!!!", pszSoundFile); + + // If the lipsync file doesn't exist just use the old-school lipflap + HandleNodeControlLipFlap( szSound, fRadius ); + return; + } + + //make sure it is the right file type and version + uint32 nFileType = 0; + uint32 nVersion = 0; + + pStream->Read(&nFileType, sizeof(nFileType)); + pStream->Read(&nVersion, sizeof(nVersion)); + + //make sure they match + if((nFileType != LIPSYNC_FILE_ID) || (nVersion != LIPSYNC_FILE_VERSION)) + { + pStream->Release(); + + DebugCPrint(1,"Playing sound '%s' as a lip FLAP sound: (nFileType != LIPSYNC_FILE_ID) || (nVersion != LIPSYNC_FILE_VERSION)!!!", pszSoundFile); + + HandleNodeControlLipFlap( szSound, fRadius ); + return; + } + + // If the radius is 0, that means we were supposed to stop the current sound, so we're done... + if (fRadius <= 0.0f) + { + pStream->Release(); + return; + } + + uint32 cBones = 0; + pStream->Read(&cBones, sizeof(cBones)); + + //read in the number of keyframes + uint32 cKeyframes = 0; + pStream->Read(&cKeyframes, sizeof(cKeyframes)); + + LTBOOL bSubtitles = LTFALSE; + m_hSound = m_pCharacterFX->PlayLipSyncSound(szSound, fRadius, bSubtitles, m_bSubtitlePriority); + if( !m_hSound ) + { + KillLipSyncSound( true ); + } + + int32 aiNodeControls[kMaxNodeControls]; + + for ( uint32 iBone = 0 ; iBone < cBones ; iBone++ ) + { + char szBone[256]; + + //read in the size of the bone + int nBoneSize = 0; + pStream->Read(&nBoneSize, sizeof(nBoneSize)); + + //now read in the bone name + pStream->Read(szBone, nBoneSize); + + //end the string appropriately + szBone[nBoneSize] = '\0'; + + ModelNode eModelNode = g_pModelButeMgr->GetSkeletonNode(m_pCharacterFX->GetModelSkeleton(), szBone); + if( eModelNode == eModelNodeInvalid ) + { + _ASSERT( !"CNodeController::HandleNodeControlLipSync: Invalid modelnode." ); + aiNodeControls[iBone] = INVALID_NODE_CONTROL; + continue; + } + + int iNodeControl = FindNodeControl(eModelNode, eControlLipSync); + iNodeControl = (iNodeControl != INVALID_NODE_CONTROL) ? iNodeControl : AddNodeControl(); + + aiNodeControls[iBone] = iNodeControl; + + ASSERT( iNodeControl != INVALID_NODE_CONTROL ); + if( iNodeControl == INVALID_NODE_CONTROL ) + continue; + + m_aNodeControls[iNodeControl].bValid = LTTRUE; + m_aNodeControls[iNodeControl].eControl = eControlLipSync; + m_aNodeControls[iNodeControl].eModelNode = eModelNode; + m_aNodeControls[iNodeControl].cKeyframes = cKeyframes; + m_aNodeControls[iNodeControl].aKeyframes = debug_newa(NCKEYFRAME, cKeyframes); + m_bShowingSubtitles = bSubtitles; + m_aNodeControls[iNodeControl].fTimer = -GetConsoleFloat("fudge", 0.0f); + + m_aNodes[eModelNode].cControllers++; + } + + for ( iBone = 0 ; iBone < cBones ; iBone++ ) + { + //read in all the keyframes for this node + if( aiNodeControls[iBone] != INVALID_NODE_CONTROL ) + { + pStream->Read(m_aNodeControls[aiNodeControls[iBone]].aKeyframes, sizeof(NCKEYFRAME) * cKeyframes); + } + } + + pStream->Release(); +} + +// Clean up all eControlLipSync node controls... + +void CNodeController::CleanUpLipSyncNodeControls() +{ + KillLipSyncSound( false ); + + // Reset all eControlLipSync controls... + + for (int i = 0; i < kMaxNodeControls; i++) + { + // Free up the memory... + + if (m_aNodeControls[i].aKeyframes) + { + debug_deletea(m_aNodeControls[i].aKeyframes); + m_aNodeControls[i].aKeyframes = LTNULL; + } + + // Reset the node control... + + m_aNodeControls[i].Reset(); + } +} + +// ----------------------------------------------------------------------- // + +NSTRUCT* CNodeController::FindNode(HMODELNODE hModelNode) +{ + for ( int iNode = 0 ; iNode < kMaxNodes ; iNode++ ) + { + if ( m_aNodes[iNode].hModelNode == hModelNode ) + { + return &m_aNodes[iNode]; + } + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // + +int CNodeController::FindNodeControl(ModelNode eNode, Control eControl) +{ + for(int i = 0; i < kMaxNodeControls; i++) + { + if(m_aNodeControls[i].bValid && m_aNodeControls[i].eModelNode == eNode && m_aNodeControls[i].eControl == eControl) + return i; + } + + return INVALID_NODE_CONTROL; +} + +// ----------------------------------------------------------------------- // + +int CNodeController::AddNodeControl() +{ + for ( int iNodeControl = 0 ; iNodeControl < kMaxNodeControls ; iNodeControl++ ) + { + if ( !m_aNodeControls[iNodeControl].bValid ) + { + m_cNodeControls++; + return iNodeControl; + } + } + + return INVALID_NODE_CONTROL; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::RemoveNodeControl(int iNodeControl) +{ + _ASSERT(!m_aNodeControls[iNodeControl].bValid); + + if( m_aNodeControls[iNodeControl].eModelNode != eModelNodeInvalid ) + m_aNodes[m_aNodeControls[iNodeControl].eModelNode].cControllers--; + + m_cNodeControls--; +} + +// ----------------------------------------------------------------------- // + +void CNodeController::NodeControlFn(const NodeControlData& Data, void *pUserData) +{ + CNodeController* pNC = (CNodeController*)pUserData; + _ASSERT(pNC); + if ( !pNC ) return; + + pNC->HandleNodeControl(Data.m_hModel, Data.m_hNode, Data.m_pNodeTransform); +} + +// ----------------------------------------------------------------------- // + +void CNodeController::HandleNodeControl(HOBJECT hObj, HMODELNODE hNode, LTMatrix *pGlobalMat) +{ + NSTRUCT* pNode = FindNode(hNode); + + if ( pNode && pNode->cControllers > 0 ) + { + *pGlobalMat = *pGlobalMat * pNode->matTransform; + } +} + + +// ----------------------------------------------------------------------- // + +LTBOOL CNodeController::IsLipSynching() +{ + for (int i = 0; i < kMaxNodeControls ; i++) + { + if ( m_aNodeControls[i].bValid && (m_aNodeControls[i].eControl == eControlLipFlap || m_aNodeControls[i].eControl == eControlLipSync )) + { + return LTTRUE; + } + } + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeController::UpdateHeadFollowObjControl +// +// PURPOSE: Updates a follow object node control +// +// ----------------------------------------------------------------------- // + +void CNodeController::UpdateHeadFollowObjControl(NCSTRUCT *pNodeControl) +{ + LTVector vPos; + LTRotation rRot; + LTransform transform; + LTVector vU, vR, vF; + + if( pNodeControl->eModelNode == eModelNodeInvalid ) + { + _ASSERT( !"CNodeController::UpdateHeadFollowObjControl: Invalid modelnode." ); + return; + } + + //---------------------------------------------------------------------- + // Get information about the control node... + // *** NOTE: On the head node... vU faces forward, vR faces down, vF faces right *** + + // Get access to the controls... + ILTModel *pModelLT = g_pLTClient->GetModelLT(); + ILTTransform *pTransformLT = g_pLTClient->GetTransformLT(); + + // Get the transform of the node we're controlling + pModelLT->GetNodeTransform(GetCFX()->GetServerObj(), m_aNodes[pNodeControl->eModelNode].hModelNode, transform, LTTRUE); + + // Get forward vector of character. + g_pLTClient->GetObjectRotation(GetCFX()->GetServerObj(), &rRot); + vF = rRot.Forward(); + vU = rRot.Up(); + vR = rRot.Right(); + + // Decompose the transform into the position and rotation + pTransformLT->Get(transform, vPos, rRot); + + //---------------------------------------------------------------------- + // Get information about the follow object position... + LTVector vObjPos; + + if(pNodeControl->hFollowObjNode == INVALID_MODEL_NODE) + { + // Just get the position of the follow object if the follow node is invalid + g_pLTClient->GetObjectPos(pNodeControl->hFollowObj, &vObjPos); + } + else + { + // Get the transform of the node we're following + pModelLT->GetNodeTransform(pNodeControl->hFollowObj, pNodeControl->hFollowObjNode, transform, LTTRUE); + + // Decompose the transform into the position and rotation + pTransformLT->GetPos(transform, vObjPos); + } + + // Turn the follow control off if the expire time has past + if(pNodeControl->fFollowExpireTime <= 0.0f) + { + pNodeControl->fFollowExpireTime = 0.0f; + pNodeControl->bFollowOn = LTFALSE; + } + else + pNodeControl->fFollowExpireTime -= g_pGameClientShell->GetFrameTime(); + + //---------------------------------------------------------------------- + // Setup the rotation matrix to directly follow the destination position + + LTRotation rNew; + rNew.Identity(); + + LTVector vDir; + LTFLOAT fDot; + LTFLOAT fAngle; + + // + // Track on the XZ plane. + // + + // Get the direction that we're going to face... + vDir = vObjPos - vPos; + vDir.y = 0.f; + vDir.Normalize(); + + // Find angle between char's facing and target dir. + + fDot = vDir.Dot( vF ); + + fAngle = (LTFLOAT)acos( fDot ); + fAngle = Min(fAngle, 1.f); + + // Look left or right. + if ( vDir.Dot( vR ) > 0.0f ) + { + rNew.Rotate( LTVector(0.f, 1.f, 0.f), fAngle); + } + else { + rNew.Rotate( LTVector(0.f, 1.f, 0.f), -fAngle); + } + + + // + // Track on the YZ plane. + // + + LTVector vAxis; + vAxis = rNew.Right(); + + // Get the direction that we're going to face... + vDir = vObjPos - vPos; + vDir.x = 0.f; + vDir.Normalize(); + + // Find angle between char's facing and target dir. + + fDot = vDir.Dot( vF ); + + fAngle = (LTFLOAT)acos( fDot ); + fAngle = Min(fAngle, 0.5f); + + // look up or down. + + if ( vDir.Dot( vU ) < 0.0f ) + { + rNew.Rotate( vAxis, fAngle); + } + else { + rNew.Rotate( vAxis, -fAngle); + } + + + // Create a rotation matrix and apply it to the current offset matrix + LTMatrix m1; + rNew.ConvertToMatrix(m1); + + LTMatrix m2, invm2; + rRot.ConvertToMatrix(m2); + invm2 = m2; + invm2.Inverse(); + + m1 = invm2 * m1 * m2; + + m_aNodes[pNodeControl->eModelNode].matTransform = m1; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeController::HandleNodeControlHeadFollowObjMessage +// +// PURPOSE: Handle CFX_NODECONTROL_HEAD_FOLLOW_OBJ from the server +// +// ----------------------------------------------------------------------- // + +void CNodeController::HandleNodeControlHeadFollowObjMessage(ILTMessage_Read *pMsg) +{ + HOBJECT hObj = pMsg->ReadObject(); + HSTRING hFollowObjNode = pMsg->ReadHString(); + LTFLOAT fTurnRate = pMsg->Readfloat(); + LTFLOAT fExpireTime = pMsg->Readfloat(); + LTBOOL bOn = pMsg->Readuint8(); + + ModelNode eModelNode = g_pModelButeMgr->GetSkeletonNode(m_pCharacterFX->GetModelSkeleton(), "Head"); + + // See if we are already controlling the head node + int iCtrl = FindNodeControl(eModelNode, eControlHeadFollowObj); + + char szFollowObjNode[64]; + strcpy(szFollowObjNode, g_pLTClient->GetStringData(hFollowObjNode)); + g_pLTClient->FreeString(hFollowObjNode); + + // Check to make sure all the info is ok... + if((eModelNode == eModelNodeInvalid) || !hObj || (fTurnRate <= 0.0f)) + { + if(iCtrl != INVALID_NODE_CONTROL) + m_aNodeControls[iCtrl].bValid = LTFALSE; + + return; + } + + // Add the node control structure... + int iNodeControl = (iCtrl != INVALID_NODE_CONTROL) ? iCtrl : AddNodeControl(); + _ASSERT(iNodeControl != INVALID_NODE_CONTROL); + if ( iNodeControl == INVALID_NODE_CONTROL ) + return; + + m_aNodeControls[iNodeControl].bValid = LTTRUE; + m_aNodeControls[iNodeControl].eControl = eControlHeadFollowObj; + m_aNodeControls[iNodeControl].eModelNode = eModelNode; + + m_aNodeControls[iNodeControl].hFollowObj = hObj; + m_aNodeControls[iNodeControl].hFollowObjNode = INVALID_MODEL_NODE; + m_aNodeControls[iNodeControl].fFollowRate = fTurnRate; + m_aNodeControls[iNodeControl].fFollowExpireTime = fExpireTime; + m_aNodeControls[iNodeControl].bFollowOn = bOn; + + // Find the node in the follow object... + if(szFollowObjNode) + { + HMODELNODE hCurNode = INVALID_MODEL_NODE; + + while(g_pLTClient->GetModelLT()->GetNextNode(hObj, hCurNode, hCurNode) == LT_OK) + { + char szName[64] = ""; + g_pLTClient->GetModelLT()->GetNodeName(hObj, hCurNode, szName, 64); + + if(!strcmp(szName, szFollowObjNode)) + { + m_aNodeControls[iNodeControl].hFollowObjNode = hCurNode; + break; + } + } + } + + // Increment the number of controllers for this node... + m_aNodes[eModelNode].cControllers++; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeController::KillLipSyncSound +// +// PURPOSE: Kill the lipsync sound. +// +// ----------------------------------------------------------------------- // + +void CNodeController::KillLipSyncSound( bool bSendNotification ) +{ + if( m_hSound ) + { + g_pLTClient->SoundMgr()->KillSound( m_hSound ); + m_hSound = LTNULL; + } + + if( m_bShowingSubtitles ) + { + g_pSubtitles->Clear(); + m_bShowingSubtitles = false; + } + + ResetSoundBufferData(); + + if( bSendNotification ) + { + if( !m_pCharacterFX->GetServerObj( )) + { + ASSERT( !"CNodeController::KillLipSyncSound: No characterfx object for nodecontroller." ); + return; + } + + // Tell the server that the sound finished. + CAutoMessage cMsg; + cMsg.Writeuint8( MID_OBJECT_MESSAGE ); + cMsg.WriteObject( m_pCharacterFX->GetServerObj( )); + cMsg.Writeuint32( MID_SFX_MESSAGE ); + cMsg.Writeuint8( SFX_CHARACTER_ID ); + cMsg.Writeuint8( CFX_NODECONTROL_LIP_SYNC ); + cMsg.Writeuint32( m_nUniqueDialogueId ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/NodeController.h b/Jack/ClientShellDLL/NodeController.h new file mode 100644 index 00000000..38b80f53 --- /dev/null +++ b/Jack/ClientShellDLL/NodeController.h @@ -0,0 +1,199 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : NodeController.h +// +// PURPOSE : Model node control +// +// CREATED : 1997 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __NODE_CONTROLLER_H__ +#define __NODE_CONTROLLER_H__ + +#include "ModelButeMgr.h" + +class CCharacterFX; + +enum Control +{ + eControlInvalid = -1, + eControlLipFlap, + eControlLipSync, + eControlHeadFollowObj, +}; + +//structure to hold a single keyframe for the lip syncing. Note that the layout of this +//is very important since it must match the layout in which the keys are saved out for +//very fast loading and saving. Changing this structure requires changing the lipcompiler +struct NCKEYFRAME +{ + LTVector vTranslation; + LTRotation rRotation; +}; + +typedef struct NCSTRUCT +{ + NCSTRUCT() + { + Reset(); + } + + inline void Reset() + { + bValid = LTFALSE; + eModelNode = eModelNodeInvalid; + eControl = eControlInvalid; + + fTimer = 0.0f; + + cKeyframes = 0; + aKeyframes = LTNULL; + + hFollowObj = LTNULL; + hFollowObjNode = INVALID_MODEL_NODE; + vFollowPos.Init(); + fFollowRate = 0.0f; + vFollowAngles.Init(); + fFollowExpireTime = 0.0f; + bFollowOn = LTFALSE; + } + + // Members used by all control methods + LTBOOL bValid; + ModelNode eModelNode; + Control eControl; + + // Lip sync members + LTFLOAT fTimer; + int32 cKeyframes; + NCKEYFRAME* aKeyframes; + + // Head follow object rotation members + HOBJECT hFollowObj; + HMODELNODE hFollowObjNode; + + // Head follow position rotation members + LTVector vFollowPos; + + // General head follow members + LTFLOAT fFollowRate; + LTVector vFollowAngles; + LTFLOAT fFollowExpireTime; + LTBOOL bFollowOn; +} +NCSTRUCT; + +// Our node struct + +typedef struct NSTRUCT +{ + NSTRUCT() + { + hModelNode = INVALID_MODEL_NODE; + eModelNode = eModelNodeInvalid; + rRot.Init(); + matTransform.Identity(); + cControllers = 0; + } + + HMODELNODE hModelNode; + ModelNode eModelNode; + LTRotation rRot; + LTMatrix matTransform; + int cControllers; +} +NSTRUCT; + +class CNodeController +{ + public : // Public methods + + // Ctors/dtors/etc + CNodeController(); + ~CNodeController(); + + LTBOOL Init(CCharacterFX* pCFX); + + // Simple accessors + CCharacterFX* GetCFX() const { return m_pCharacterFX; } + + LTBOOL IsLipSynching(); + + // Updates + void Update(); + void UpdateRotationTimed(NCSTRUCT *pNodeControl); + void UpdateLipFlapControl(NCSTRUCT *pNodeControl); + void UpdateLipSyncControl(NCSTRUCT *pNodeControl); + + // Message handlers + LTBOOL HandleNodeControlMessage(uint8 byMsgId, ILTMessage_Read *pMsg); + void HandleNodeControlLipFlap( char const* pszSoundFile, LTFLOAT fRadius); + void HandleNodeControlLipSyncMessage(ILTMessage_Read *pMsg); + void HandleNodeControlLipSync( char const* pszSoundFile, LTFLOAT fRadius); + + // Node methods + NSTRUCT* FindNode(HMODELNODE hModelNode); + int FindNodeControl(ModelNode eNode, Control eControl); + + // Node control methods + int AddNodeControl(); + void AddNodeControlRotationTimed(ModelNode eModelNode, const LTVector& vAxis, LTFLOAT fDistance, LTFLOAT fDuration); + + void RemoveNodeControl(int iNodeControl); + + // Node control callback methods + static void NodeControlFn(const NodeControlData& Data, void *pUserData); + void HandleNodeControl(HOBJECT hObj, HMODELNODE hNode, LTMatrix *pGlobalMat); + + void UpdateHeadFollowObjControl(NCSTRUCT *pNodeControl); + void HandleNodeControlHeadFollowObjMessage(ILTMessage_Read *pMsg); + + void ResetSoundBufferData() + { + m_pSixteenBitBuffer = LTNULL; + m_pEightBitBuffer = LTNULL; + m_dwSamplesPerSecond = 0; + } + + protected : + + enum Constants + { + kMaxNodes = 40, + kMaxNodeControls = 32, + }; + + protected : + + void KillLipSyncSound( bool bSendNotification ); + + //flag indicating whether or not the node control function was installed + bool m_bAddedNodeControlFn; + + CCharacterFX* m_pCharacterFX; + + int m_cNodeControls; + NCSTRUCT m_aNodeControls[kMaxNodeControls]; + + NSTRUCT m_aNodes[kMaxNodes]; + + LTFLOAT m_fCurLipFlapRot; + + // Lip flap members + HLTSOUND m_hSound; + uint8 m_nUniqueDialogueId; + bool m_bSubtitlePriority; + int16* m_pSixteenBitBuffer; + int8* m_pEightBitBuffer; + uint32 m_dwSamplesPerSecond; + LTBOOL m_bShowingSubtitles; + + private : + + void CleanUpLipSyncNodeControls(); +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/NodeLinesFX.cpp b/Jack/ClientShellDLL/NodeLinesFX.cpp new file mode 100644 index 00000000..712a2306 --- /dev/null +++ b/Jack/ClientShellDLL/NodeLinesFX.cpp @@ -0,0 +1,124 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : NodeLinesFX.cpp +// +// PURPOSE : NodeLines special FX - Implementation +// +// CREATED : 1/21/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "NodeLinesFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "SFXMsgIds.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeLinesFX::Init +// +// PURPOSE: Init the node lines fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CNodeLinesFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + NLCREATESTRUCT* pNL = (NLCREATESTRUCT*)psfxCreateStruct; + + VEC_COPY(m_vSource, pNL->vSource); + VEC_COPY(m_vDestination, pNL->vDestination); + + m_bFirstUpdate = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeLinesFX::RemoveFX +// +// PURPOSE: Remove all fx +// +// ----------------------------------------------------------------------- // + +void CNodeLinesFX::RemoveFX() +{ + if (m_pFX) + { + debug_delete(m_pFX); + m_pFX = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CNodeLinesFX::Update +// +// PURPOSE: Update the node lines +// +// ----------------------------------------------------------------------- // + +LTBOOL CNodeLinesFX::Update() +{ + if(!m_pClientDE) return LTFALSE; + + if (m_bFirstUpdate) + { + BSCREATESTRUCT ex; + + LTVector vDirection = m_vDestination - m_vSource; + LTFLOAT fDistance = VEC_MAG(vDirection); + + vDirection.Normalize(); + + ex.vPos = m_vSource + vDirection*fDistance/2.0f; + + ex.rRot = LTRotation(vDirection, LTVector(0.0f, 1.0f, 0.0f)); + + VEC_SET(ex.vVel, 0.0f, 0.0f, 0.0f); + VEC_SET(ex.vInitialScale, 1.0f, 1.0f, fDistance); + VEC_SET(ex.vFinalScale, 1.0f, 1.0f, fDistance); + VEC_SET(ex.vInitialColor, 1.0f, 0.0f, 0.0f); + VEC_SET(ex.vFinalColor, 1.0f, 0.0f, 0.0f); + ex.bUseUserColors = LTTRUE; + + ex.dwFlags = FLAG_VISIBLE | FLAG_NOLIGHT; + ex.fLifeTime = 500000.0f; + ex.fInitialAlpha = 1.0f; + ex.fFinalAlpha = 1.0f; + ex.pFilename = "Models\\1x1_square.ltb"; + ex.nType = OT_MODEL; + //ex.pSkin = "SpecialFX\\Explosions\\Juggernaut.dtx"; + + m_pFX = debug_new(CBaseScaleFX); + if (!m_pFX) + { + RemoveFX(); + return LTFALSE; + } + + m_pFX->Init(&ex); + m_pFX->CreateObject(m_pClientDE); + + m_bFirstUpdate = LTFALSE; + } + + if (m_bWantRemove) + { + RemoveFX(); + return LTFALSE; + } + + if (m_pFX) + { + m_pFX->Update(); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/NodeLinesFX.h b/Jack/ClientShellDLL/NodeLinesFX.h new file mode 100644 index 00000000..2beedb15 --- /dev/null +++ b/Jack/ClientShellDLL/NodeLinesFX.h @@ -0,0 +1,60 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : NodeLinesFX.h +// +// PURPOSE : NodeLines special fx class - Definition +// +// CREATED : 2/10/99 +// +// ----------------------------------------------------------------------- // + +#ifndef __NODELINES_FX_H__ +#define __NODELINES_FX_H__ + +#include "BaseScaleFX.h" + +struct NLCREATESTRUCT : public SFXCREATESTRUCT +{ + NLCREATESTRUCT(); + + LTVector vSource; + LTVector vDestination; +}; + +inline NLCREATESTRUCT::NLCREATESTRUCT() +{ + vSource.Init(); + vDestination.Init(); +} + +class CNodeLinesFX : public CSpecialFX +{ + public : + + CNodeLinesFX() : CSpecialFX() + { + VEC_INIT(m_vSource); + VEC_INIT(m_vDestination); + m_pFX = LTNULL; + } + + ~CNodeLinesFX() + { + RemoveFX(); + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual void RemoveFX(); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_NODELINES_ID; } + + protected : + + LTBOOL m_bFirstUpdate; + LTVector m_vSource; + LTVector m_vDestination; + CBaseScaleFX* m_pFX; +}; + +#endif // __NODELINES_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ObjSpriteFX.cpp b/Jack/ClientShellDLL/ObjSpriteFX.cpp new file mode 100644 index 00000000..2574f10c --- /dev/null +++ b/Jack/ClientShellDLL/ObjSpriteFX.cpp @@ -0,0 +1,84 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ObjSpriteFX.cpp +// +// PURPOSE : ObjSprite special FX - Implementation +// +// CREATED : 10/19/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ObjSpriteFX.h" +#include "VarTrack.h" +#include "GameClientShell.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CObjSpriteFX::CObjSpriteFX +// +// PURPOSE: Construct +// +// ----------------------------------------------------------------------- // + +CObjSpriteFX::CObjSpriteFX() : CSpecialFX() +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CObjSpriteFX::Init +// +// PURPOSE: Construct +// +// ----------------------------------------------------------------------- // + +LTBOOL CObjSpriteFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + + m_cs = *psfxCreateStruct; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CObjSpriteFX::Init +// +// PURPOSE: Init the object sprite fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CObjSpriteFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + SFXCREATESTRUCT scs; + + scs.hServerObj = hServObj; + scs.Read(pMsg); + + return Init(&scs); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CObjSpriteFX::Update +// +// PURPOSE: Update the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CObjSpriteFX::Update() +{ + if (m_bWantRemove) return LTFALSE; + + return CSpecialFX::Update(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ObjSpriteFX.h b/Jack/ClientShellDLL/ObjSpriteFX.h new file mode 100644 index 00000000..1386fd32 --- /dev/null +++ b/Jack/ClientShellDLL/ObjSpriteFX.h @@ -0,0 +1,41 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ObjSpriteFX.h +// +// PURPOSE : ObjSprite special fx class - Definition +// +// CREATED : 9/12/00 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __OBJSPRITE_FX_H__ +#define __OBJSPRITE_FX_H__ + +#include "SpecialFX.h" +#include "SmokeFX.h" +#include "SharedFXStructs.h" + +class CObjSpriteFX : public CSpecialFX +{ + public : + + CObjSpriteFX(); + ~CObjSpriteFX() {}; + + virtual LTBOOL Update(); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + + virtual uint32 GetSFXID() { return SFX_OBJSPRITE_ID; } + + protected : + + // Creation data... + + SFXCREATESTRUCT m_cs; // Holds all initialization data + +}; + +#endif // __OBJSPRITE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ObjectiveControl.cpp b/Jack/ClientShellDLL/ObjectiveControl.cpp new file mode 100644 index 00000000..fc2b2ca7 --- /dev/null +++ b/Jack/ClientShellDLL/ObjectiveControl.cpp @@ -0,0 +1,119 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ObjectiveControl.cpp +// +// PURPOSE : GUI control to display of objectives. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ObjectiveControl.h" +#include "InterfaceMgr.h" + +LTBOOL CObjectiveCtrl::Create (const char *pText, CUIFont *pFont, uint8 nFontSize, uint16 nTextOffset, HTEXTURE hTex) +{ + CLTGUITextCtrl::Create(pText,LTNULL,LTNULL,pFont,nFontSize,LTNULL); + SetIndent(nTextOffset); + + m_BulletTexture = hTex; + + InitPoly(); + + return LTTRUE; +} + +void CObjectiveCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUITextCtrl::SetBasePos(pos); + ScalePoly(); +} + +void CObjectiveCtrl::SetScale(float fScale) +{ + CLTGUITextCtrl::SetScale(fScale); + ScalePoly(); +} + +void CObjectiveCtrl::SetString(const char *pText) +{ + CLTGUITextCtrl::SetString(pText); + ScalePoly(); +} + +void CObjectiveCtrl::SetTexture(HTEXTURE hTex) +{ + if (hTex == m_BulletTexture) return; + + m_BulletTexture = hTex; + ScalePoly(); + SetupQuadUVs(m_Poly, m_BulletTexture, 0.0f,0.0f,1.0f,1.0f); +} + + +// Render the control +void CObjectiveCtrl::Render () +{ + // Sanity checks... + if (!IsVisible()) return; + + CLTGUITextCtrl::Render(); + + if (m_BulletTexture) + g_pDrawPrim->SetTexture(m_BulletTexture); + +// g_pDrawPrim->SetRGBA(&m_Poly,GetCurrentColor()); + + // set up the render state + SetRenderState(); + + // draw our button + g_pDrawPrim->DrawPrim(&m_Poly); +} + + +void CObjectiveCtrl::InitPoly() +{ + ScalePoly(); + SetupQuadUVs(m_Poly, m_BulletTexture, 0.0f,0.0f,1.0f,1.0f); + g_pDrawPrim->SetRGBA(&m_Poly,0xFFFFFFFF); + +} + +void CObjectiveCtrl::ScalePoly() +{ + if (!m_BulletTexture) return; +// uint32 w,h; +// g_pTexInterface->GetTextureDims(m_BulletTexture,w,h); + + float strH = 0.0f; + if (m_pString) + { + strH = m_pString->GetHeight(); + } + +// float fw = (float)w * m_fScale; +// float fh = (float)h * m_fScale; + float fh = (float)m_nFontSize; + + float x = (float)(m_basePos.x) * m_fScale; + float y = (float)(m_basePos.y) * m_fScale + (strH-fh)/2.0f; + + + g_pDrawPrim->SetXYWH(&m_Poly,x,y,fh,fh); + +} + +void CObjectiveCtrl::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + +} diff --git a/Jack/ClientShellDLL/ObjectiveControl.h b/Jack/ClientShellDLL/ObjectiveControl.h new file mode 100644 index 00000000..2c822574 --- /dev/null +++ b/Jack/ClientShellDLL/ObjectiveControl.h @@ -0,0 +1,50 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ObjectiveControl.h +// +// PURPOSE : GUI control to display of objectives. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_OBJ_CTRL_H_) +#define _OBJ_CTRL_H_ + +#include "LTGuiMgr.h" + +class CObjectiveCtrl : public CLTGUITextCtrl +{ +public: + + CObjectiveCtrl() + { + m_BulletTexture = LTNULL; + } + + LTBOOL Create (const char *pText, CUIFont *pFont, uint8 nFontSize, uint16 nTextOffset, HTEXTURE hTex); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + virtual void SetString(const char *pText); + virtual void SetTexture(HTEXTURE hTex); + + + // Render the control + virtual void Render (); + + +protected: + void SetRenderState(); + void InitPoly(); + void ScalePoly(); + +protected: + + LTPoly_GT4 m_Poly; + + HTEXTURE m_BulletTexture; +}; + +#endif // _OBJ_CTRL_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/Overlays.h b/Jack/ClientShellDLL/Overlays.h new file mode 100644 index 00000000..bfef726c --- /dev/null +++ b/Jack/ClientShellDLL/Overlays.h @@ -0,0 +1,48 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : Overlays.h +// +// PURPOSE : definitions for overlays +// +// CREATED : 1/28/00 +// +// ----------------------------------------------------------------------- // + +#ifndef __OVERLAYS_H__ +#define __OVERLAYS_H__ + +// the order of the eOverlayMask enum determines drawing priority, only the first +// exclusive overlay is drawn, while all active non-exclusive overlays are drawn +enum eOverlayMask +{ + OVM_NONE = -1, + + //exclusive overlays + OVM_SCOPE = 0, + OVM_BINOC, + OVM_SS_MASK, + + //non-exclusive overlays + OVM_NON_EXCLUSIVE, + OVM_STATIC = OVM_NON_EXCLUSIVE, + OVM_CAMERA, + OVM_CAMERA_TARGET, + OVM_ZOOM_IN, + OVM_ZOOM_OUT, + + //cinematic overlays + OVM_CINEMATIC_1, + OVM_CINEMATIC_2, + OVM_CINEMATIC_3, + OVM_CINEMATIC_4, + OVM_CINEMATIC_5, + OVM_CINEMATIC_6, + OVM_CINEMATIC_7, + OVM_CINEMATIC_8, + OVM_CINEMATIC_9, + + NUM_OVERLAY_MASKS +}; + + +#endif // __OVERLAYS_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PVFXMgr.cpp b/Jack/ClientShellDLL/PVFXMgr.cpp new file mode 100644 index 00000000..fa295357 --- /dev/null +++ b/Jack/ClientShellDLL/PVFXMgr.cpp @@ -0,0 +1,510 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PVFXMgr.cpp +// +// PURPOSE : Player-view fx manager - Implementation +// +// CREATED : 12/13/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PVFXMgr.h" +#include "CommonUtilities.h" +#include "GameClientShell.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "FXButeMgr.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::CPVFXMgr() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CPVFXMgr::CPVFXMgr() +{ + m_hModelObject = LTNULL; + + // Set up arrays... + int i; + for (i=0; i < PVFX_MAX_SCALE_FX; i++) + { + m_ScaleFX[i].pFX = &(m_prvtScaleFX[i]); + } + + for (i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + m_DLightFX[i].pFX = &(m_prvtLightFX[i]); + } + + for (i=0; i < PVFX_MAX_SOUND_FX; i++) + { + m_SoundFX[i].pFX = &(m_prvtSoundFX[i]); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::~CPVFXMgr() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CPVFXMgr::~CPVFXMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::Init() +// +// PURPOSE: Initialize data +// +// ----------------------------------------------------------------------- // + +LTBOOL CPVFXMgr::Init(HOBJECT hModelObj, WEAPON const *pWeapon) +{ + if (!pWeapon || !hModelObj) return LTFALSE; + + m_hModelObject = hModelObj; + + // Disable all current fx... + + DisableAllFX(); + + // Set up our fx... + + HMODELSOCKET hSocket = INVALID_MODEL_SOCKET; + for (int i=0; i < pWeapon->nNumPVFXTypes; i++) + { + PVFX* pFX = g_pFXButeMgr->GetPVFX(pWeapon->aPVFXTypes[i]); + if (pFX) + { + // Add the sounds... + + int j; + for (j=0; j < pFX->nNumSoundFX; j++) + { + AddSoundFX(g_pFXButeMgr->GetSoundFX(pFX->aSoundFXTypes[j]), + pFX->szName); + } + + if (pFX->szSocket[0]) + { + if (g_pModelLT->GetSocket(m_hModelObject, pFX->szSocket, hSocket) != LT_OK) + { + g_pLTClient->CPrint("ERROR: CPVFXMgr::Init() %s is an Invalid socket!", pFX->szSocket); + continue; + } + + // Add the scale types... + + for (j=0; j < pFX->nNumScaleFXTypes; j++) + { + AddScaleFX(g_pFXButeMgr->GetScaleFX(pFX->aScaleFXTypes[j]), + hSocket, pFX->szName); + } + + // Add the dynamic lights... + + for (j=0; j < pFX->nNumDLightFX; j++) + { + AddDLightFX(g_pFXButeMgr->GetDLightFX(pFX->aDLightFXTypes[j]), + hSocket, pFX->szName); + } + } + } + } + + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::DisableAllFX() +// +// PURPOSE: Disable all fx +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::DisableAllFX() +{ + HOBJECT hFX = LTNULL; + + int i; + for (i=0; i < PVFX_MAX_SCALE_FX; i++) + { + hFX = m_ScaleFX[i].pFX->GetObject(); + if (hFX) + { + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, 0, FLAG_VISIBLE); + } + + m_ScaleFX[i].bOn = LTFALSE; + m_ScaleFX[i].bUsed = LTFALSE; + m_ScaleFX[i].hSocket = INVALID_MODEL_SOCKET; + m_ScaleFX[i].pName = LTNULL; + } + + for (i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + hFX = m_DLightFX[i].pFX->GetObject(); + if (hFX) + { + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, 0, FLAG_VISIBLE); + } + + m_DLightFX[i].bOn = LTFALSE; + m_DLightFX[i].bUsed = LTFALSE; + m_DLightFX[i].hSocket = INVALID_MODEL_SOCKET; + m_DLightFX[i].pName = LTNULL; + } + + for (i=0; i < PVFX_MAX_SOUND_FX; i++) + { + m_SoundFX[i].Term(); + m_SoundFX[i].bOn = LTFALSE; + m_SoundFX[i].bUsed = LTFALSE; + m_SoundFX[i].hSocket = INVALID_MODEL_SOCKET; + m_SoundFX[i].pName = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::AddScaleFX() +// +// PURPOSE: Add ScaleFX +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::AddScaleFX(CScaleFX* pScaleFX, HMODELSOCKET hSocket, char* pName) +{ + if (!pScaleFX || !m_hModelObject || hSocket == INVALID_MODEL_SOCKET) return; + + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_hModelObject, hSocket, transform, LTTRUE) != LT_OK) + return; + + LTVector vPos = transform.m_Pos; + LTRotation rRot = transform.m_Rot; + + + // Find a slot for the scale fx... + + for (int i=0; i < PVFX_MAX_SCALE_FX; i++) + { + if (!m_ScaleFX[i].bUsed) + { + m_ScaleFX[i].pFX = g_pFXButeMgr->CreateScaleFX(pScaleFX, vPos, + LTVector(0, 0, 0), LTNULL, LTNULL, (CBaseScaleFX *)m_ScaleFX[i].pFX); + + m_ScaleFX[i].bOn = LTFALSE; + m_ScaleFX[i].bUsed = LTTRUE; + m_ScaleFX[i].hSocket = hSocket; + m_ScaleFX[i].pName = pName; + + // Hide fx... + + HOBJECT hFX = m_ScaleFX[i].pFX->GetObject(); + if (hFX) + { + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, 0, FLAG_VISIBLE); + } + + return; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::AddDLightFX() +// +// PURPOSE: Add DLightFX +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::AddDLightFX(DLIGHTFX* pDLightFX, HMODELSOCKET hSocket, char* pName) +{ + if (!pDLightFX || !m_hModelObject || hSocket == INVALID_MODEL_SOCKET) return; + + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_hModelObject, hSocket, transform, LTTRUE) != LT_OK) + return; + + LTVector vPos = transform.m_Pos; + LTRotation rRot = transform.m_Rot; + + for (int i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + if (!m_DLightFX[i].bUsed) + { + m_DLightFX[i].pFX = g_pFXButeMgr->CreateDLightFX(pDLightFX, vPos, + (CDynamicLightFX*)m_DLightFX[i].pFX); + + m_DLightFX[i].bOn = LTFALSE; + m_DLightFX[i].bUsed = LTTRUE; + m_DLightFX[i].hSocket = hSocket; + m_DLightFX[i].pName = pName; + + // Hide fx... + + HOBJECT hFX = m_DLightFX[i].pFX->GetObject(); + if (hFX) + { + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, 0, FLAG_VISIBLE); + } + + return; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::AddSoundFX() +// +// PURPOSE: Add SoundFX +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::AddSoundFX(SOUNDFX* pSoundFX, char* pName) +{ + if (!pSoundFX || !m_hModelObject) return; + + for (int i=0; i < PVFX_MAX_SOUND_FX; i++) + { + if (!m_SoundFX[i].bUsed) + { + m_SoundFX[i].pFX = g_pFXButeMgr->CreateSoundFX(pSoundFX, + LTVector(0, 0, 0), (CSoundFX*)m_SoundFX[i].pFX); + + m_SoundFX[i].bOn = LTFALSE; + m_SoundFX[i].bUsed = LTTRUE; + m_SoundFX[i].pName = pName; + + return; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::Term() +// +// PURPOSE: Term +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::Term() +{ + // Term all our special fx objects...NOTE: We don't set the pFX pointers + // to NULL because these pointers point into our m_prvtXXX static special + // fx arrays (i.e., these pointers are always valid)... + + int i; + for (i=0; i < PVFX_MAX_SCALE_FX; i++) + { + m_ScaleFX[i].Term(); + } + + for (i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + m_DLightFX[i].Term(); + } + + for (i=0; i < PVFX_MAX_SOUND_FX; i++) + { + m_SoundFX[i].Term(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::HandleFXKey() +// +// PURPOSE: Handle fx model key +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::HandleFXKey(ArgList* pArgList) +{ + if (!pArgList) return; + if (pArgList->argc < 3 || !pArgList->argv[1] || !pArgList->argv[2]) return; + + char* pFXName = pArgList->argv[1]; + char* pFXState = pArgList->argv[2]; + + // Turn on/off the necessary fx... + + TurnOn(pFXName, (stricmp(pFXState, "ON") == 0)); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::Update() +// +// PURPOSE: Update our fx +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::Update() +{ + if (!m_hModelObject) return; + + LTransform transform; + LTVector vPos; + LTRotation rRot; + HOBJECT hFX; + + g_pLTClient->GetObjectPos(m_hModelObject, &vPos); + + // Hide all the fx if not 1st person... + + LTBOOL bForceHide = LTFALSE; + + // get a pointer to the current client weapon + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + + if (!g_pPlayerMgr->IsFirstPerson() || + g_pPlayerMgr->IsUsingExternalCamera() || + ( pClientWeapon && !pClientWeaponMgr->WeaponsEnabled() ) ) + { + bForceHide = LTTRUE; + } + + + // Update all the used scale fx... + + int i; + for (i=0; i < PVFX_MAX_SCALE_FX; i++) + { + if (m_ScaleFX[i].bUsed && m_ScaleFX[i].hSocket != INVALID_MODEL_SOCKET) + { + if (g_pModelLT->GetSocketTransform(m_hModelObject, + m_ScaleFX[i].hSocket, transform, LTTRUE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + } + + hFX = m_ScaleFX[i].pFX->GetObject(); + if (!hFX) continue; + + g_pLTClient->SetObjectPos(hFX, &vPos); + g_pLTClient->SetObjectRotation(hFX, &rRot); + + m_ScaleFX[i].pFX->Update(); + + // Show/Hide object if on/off... + + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, (m_ScaleFX[i].bOn && !bForceHide) ? FLAG_VISIBLE : 0, FLAG_VISIBLE); + } + } + + // Update all the used light fx... + + for (i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + if (m_DLightFX[i].bUsed && m_DLightFX[i].hSocket != INVALID_MODEL_SOCKET) + { + if (g_pModelLT->GetSocketTransform(m_hModelObject, + m_DLightFX[i].hSocket, transform, LTTRUE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + } + + hFX = m_DLightFX[i].pFX->GetObject(); + if (!hFX) continue; + + // Add on the camera's position... + + LTVector vOffset; + g_pLTClient->GetObjectPos(g_pPlayerMgr->GetCamera(), &vOffset); + + vPos += vOffset; + g_pLTClient->SetObjectPos(hFX, &vPos); + + + m_DLightFX[i].pFX->Update(); + + // Show/Hide object if on/off... + + g_pCommonLT->SetObjectFlags(hFX, OFT_Flags, (m_DLightFX[i].bOn && !bForceHide) ? FLAG_VISIBLE : 0, FLAG_VISIBLE); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPVFXMgr::TurnOn() +// +// PURPOSE: Turn on/off the specified fx +// +// ----------------------------------------------------------------------- // + +void CPVFXMgr::TurnOn(char* pFXName, LTBOOL bOn) +{ + if (!pFXName || !pFXName[0]) return; + + // Hide/Show all scale fx... + int i; + for (i=0; i < PVFX_MAX_SCALE_FX; i++) + { + if (m_ScaleFX[i].pName && m_ScaleFX[i].bUsed) + { + if (stricmp(m_ScaleFX[i].pName, pFXName) == 0) + { + m_ScaleFX[i].bOn = bOn; + } + } + } + + + // Hide/show all light fx... + + for (i=0; i < PVFX_MAX_DLIGHT_FX; i++) + { + if (m_DLightFX[i].pName && m_DLightFX[i].bUsed) + { + if (stricmp(m_DLightFX[i].pName, pFXName) == 0) + { + m_DLightFX[i].bOn = bOn; + } + } + } + + + // Play all the sound fx... + + for (i=0; i < PVFX_MAX_SOUND_FX; i++) + { + if (m_SoundFX[i].pName && m_SoundFX[i].bUsed && m_SoundFX[i].pFX) + { + if (stricmp(m_SoundFX[i].pName, pFXName) == 0) + { + if (bOn) + { + ((CSoundFX*)m_SoundFX[i].pFX)->Play(); + } + else + { + ((CSoundFX*)m_SoundFX[i].pFX)->Stop(); + } + } + } + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PVFXMgr.h b/Jack/ClientShellDLL/PVFXMgr.h new file mode 100644 index 00000000..09f3d6af --- /dev/null +++ b/Jack/ClientShellDLL/PVFXMgr.h @@ -0,0 +1,92 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PVFXMgr.h +// +// PURPOSE : Player-view fx manager - Definition +// +// CREATED : 12/13/99 +// +// (c) 1999-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PV_FX_MGR_H__ +#define __PV_FX_MGR_H__ + +#include "clientheaders.h" +#include "BaseScaleFX.h" +#include "DynamicLightFX.h" +#include "SoundFX.h" +#include "WeaponMgr.h" + +struct SOUNDFX; + +#define PVFX_MAX_SCALE_FX 10 +#define PVFX_MAX_DLIGHT_FX 10 +#define PVFX_MAX_SOUND_FX 10 + +struct PVFX_STRUCT +{ + PVFX_STRUCT() + { + pFX = LTNULL; + bUsed = LTFALSE; + bOn = LTFALSE; + hSocket = INVALID_MODEL_SOCKET; + pName = LTNULL; + } + + void Term() + { + if (pFX) pFX->Term(); + + bOn = LTFALSE; + bUsed = LTFALSE; + hSocket = INVALID_MODEL_SOCKET; + pName = LTNULL; + } + + CSpecialFX* pFX; + LTBOOL bUsed; + LTBOOL bOn; + HMODELSOCKET hSocket; + char* pName; +}; + +class CPVFXMgr +{ + public : + + CPVFXMgr(); + ~CPVFXMgr(); + + void Term(); + LTBOOL Init(HOBJECT hModelObj, WEAPON const *pWeapon); + + void HandleFXKey(ArgList* pArgList); + void Update(); + + private : + + void DisableAllFX(); + void TurnOn(char* pFXName, LTBOOL bOn); + void AddScaleFX(CScaleFX* pScaleFX, HMODELSOCKET hSocket, char* pName); + void AddDLightFX(DLIGHTFX* pDLightFX, HMODELSOCKET hSocket, char* pName); + void AddSoundFX(SOUNDFX* pSoundFX, char* pName); + + HOBJECT m_hModelObject; + + // These arrays hold the actual data... + + CBaseScaleFX m_prvtScaleFX[PVFX_MAX_SCALE_FX]; + CDynamicLightFX m_prvtLightFX[PVFX_MAX_DLIGHT_FX]; + CSoundFX m_prvtSoundFX[PVFX_MAX_SOUND_FX]; + + // These arrays are what we access (hold above data, plus + // some extra info... + PVFX_STRUCT m_ScaleFX[PVFX_MAX_SCALE_FX]; + PVFX_STRUCT m_DLightFX[PVFX_MAX_DLIGHT_FX]; + PVFX_STRUCT m_SoundFX[PVFX_MAX_SOUND_FX]; +}; + +#endif // __PV_FX_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleExplosionFX.cpp b/Jack/ClientShellDLL/ParticleExplosionFX.cpp new file mode 100644 index 00000000..fc31fee9 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleExplosionFX.cpp @@ -0,0 +1,448 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleExplosionFX.cpp +// +// PURPOSE : Particle Explosion - Implementation +// +// CREATED : 5/22/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ParticleExplosionFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ContainerCodes.h" +#include "ClientServerShared.h" +#include "WeaponFXTypes.h" +#include "DebrisMgr.h" +#include "SoundMgr.h" +#include "GameClientShell.h" + +extern LTVector g_vWorldWindVel; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::Init +// +// PURPOSE: Init the Particle trail segment +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleExplosionFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + PESCREATESTRUCT* pPE = (PESCREATESTRUCT*)psfxCreateStruct; + m_rSurfaceRot = pPE->rSurfaceRot; + m_vPos = pPE->vPos; + m_vColor1 = pPE->vColor1; + m_vColor2 = pPE->vColor2; + m_vMinVel = pPE->vMinVel; + m_vMaxVel = pPE->vMaxVel; + m_vMinDriftVel = pPE->vMinDriftVel; + m_vMaxDriftVel = pPE->vMaxDriftVel; + m_fLifeTime = pPE->fLifeTime; + m_fFadeTime = pPE->fFadeTime; + m_fOffsetTime = pPE->fOffsetTime; + m_fRadius = pPE->fRadius; + m_fGravity = pPE->fGravity; + m_nNumPerPuff = pPE->nNumPerPuff; + m_nNumEmitters = (pPE->nNumEmitters > MAX_EMITTERS ? MAX_EMITTERS : pPE->nNumEmitters); + m_nEmitterFlags = pPE->nEmitterFlags; + m_pTextureName = pPE->pFilename; + m_bCreateDebris = pPE->bCreateDebris; + m_bRotateDebris = pPE->bRotateDebris; + m_nSurfaceType = pPE->nSurfaceType; + m_bIgnoreWind = pPE->bIgnoreWind; + m_nNumSteps = pPE->nNumSteps; + + VEC_SET(m_vColorRange, m_vColor2.x - m_vColor1.x, + m_vColor2.y - m_vColor1.y, + m_vColor2.z - m_vColor1.z); + + if (m_vColorRange.x < 0.0f) m_vColorRange.x = 0.0f; + if (m_vColorRange.y < 0.0f) m_vColorRange.y = 0.0f; + if (m_vColorRange.z < 0.0f) m_vColorRange.z = 0.0f; + + + if (m_bRotateDebris) + { + m_fPitchVel = GetRandom(-MATH_CIRCLE, MATH_CIRCLE); + m_fYawVel = GetRandom(-MATH_CIRCLE, MATH_CIRCLE); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleExplosionFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CBaseParticleSystemFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + // Initialize the Emitters velocity ranges based on our rotation... + + LTVector vVelMin, vVelMax, vTemp, vU, vR, vF; + VEC_SET(vVelMin, 1.0f, 1.0f, 1.0f); + VEC_SET(vVelMax, 1.0f, 1.0f, 1.0f); + + vU = m_rSurfaceRot.Up(); + vR = m_rSurfaceRot.Right(); + vF = m_rSurfaceRot.Forward(); + + if (vF.y <= -0.95f || vF.y >= 0.95f) + { + vF.y = vF.y > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.x <= -0.95f || vF.x >= 0.95f) + { + vF.x = vF.x > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 0.0f, 1.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.z <= -0.95f || vF.z >= 0.95f) + { + vF.z = vF.z > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 1.0f, 0.0f); + } + + VEC_MULSCALAR(vVelMin, vF, m_vMinVel.y); + VEC_MULSCALAR(vVelMax, vF, m_vMaxVel.y); + + VEC_MULSCALAR(vTemp, vR, m_vMinVel.x); + VEC_ADD(vVelMin, vVelMin, vTemp); + + VEC_MULSCALAR(vTemp, vR, m_vMaxVel.x); + VEC_ADD(vVelMax, vVelMax, vTemp); + + VEC_MULSCALAR(vTemp, vU, m_vMinVel.z); + VEC_ADD(vVelMin, vVelMin, vTemp); + + VEC_MULSCALAR(vTemp, vU, m_vMaxVel.z); + VEC_ADD(vVelMax, vVelMax, vTemp); + + + // Initialize our Emitters... + + LTVector vStartVel; + for (int i=0; i < m_nNumEmitters; i++) + { + if (m_bCreateDebris) + { + m_hDebris[i] = CreateDebris(); + } + + m_ActiveEmitters[i] = LTTRUE; + m_BounceCount[i] = 2; + + VEC_SET(vStartVel, GetRandom(vVelMin.x, vVelMax.x), + GetRandom(vVelMin.y, vVelMax.y), + GetRandom(vVelMin.z, vVelMax.z)); + + InitMovingObject(&(m_Emitters[i]), m_vPos, vStartVel); + m_Emitters[i].m_dwPhysicsFlags |= m_nEmitterFlags; + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::Update +// +// PURPOSE: Update the Particle trail (add Particle) +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleExplosionFX::Update() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + if (!CBaseParticleSystemFX::Update()) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + m_fLastTime = fTime; + } + + + // Check to see if we should start fading the system... + + if (fTime > m_fStartTime + m_fFadeTime) + { + LTFLOAT fEndTime = m_fStartTime + m_fLifeTime; + if (fTime > fEndTime) + { + return LTFALSE; + } + + LTFLOAT fScale = (fEndTime - fTime) / (m_fLifeTime - m_fFadeTime); + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, fScale); + } + + + // See if it is time to create a new Particle puff... + + if (fTime >= m_fLastTime + m_fOffsetTime) + { + // Loop over our list of Emitters, creating new particles... + + for (int i=0; i < m_nNumEmitters; i++) + { + if (m_ActiveEmitters[i]) + { + AddParticles(&m_Emitters[i]); + } + } + + m_fLastTime = fTime; + } + + + // Loop over our list of Emitters, updating the position of each + + for (int i=0; i < m_nNumEmitters; i++) + { + if (m_ActiveEmitters[i]) + { + LTBOOL bBounced = LTFALSE; + if (bBounced = UpdateEmitter(&m_Emitters[i])) + { + if (!(m_Emitters[i].m_dwPhysicsFlags & MO_LIQUID) && (m_hDebris[i])) + { + /* + char* pSound = GetDebrisBounceSound(DBT_STONE_BIG); + + // Play appropriate sound... + + g_pClientSoundMgr->PlaySoundFromPos(m_Emitters[i].m_Pos, pSound, + 300.0f, SOUNDPRIORITY_MISC_LOW); + */ + } + + m_BounceCount[i]--; + + if (m_BounceCount[i] <= 0) + { + m_Emitters[i].m_dwPhysicsFlags |= MO_RESTING; + } + } + + if (m_Emitters[i].m_dwPhysicsFlags & MO_RESTING) + { + m_ActiveEmitters[i] = LTFALSE; + if (m_hDebris[i]) + { + m_pClientDE->RemoveObject(m_hDebris[i]); + m_hDebris[i] = LTNULL; + } + } + else if (m_hDebris[i]) + { + g_pLTClient->SetObjectPos(m_hDebris[i], &(m_Emitters[i].m_vPos)); + + if (m_bRotateDebris) + { + if (bBounced) + { + // Adjust due to the bounce... + + m_fPitchVel = GetRandom(-MATH_CIRCLE, MATH_CIRCLE); + m_fYawVel = GetRandom(-MATH_CIRCLE, MATH_CIRCLE); + } + + if (m_fPitchVel != 0 || m_fYawVel != 0) + { + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + m_fPitch += m_fPitchVel * fDeltaTime; + m_fYaw += m_fYawVel * fDeltaTime; + + LTRotation rRot; + rRot.Rotate(rRot.Up(), m_fYaw); + rRot.Rotate(rRot.Right(), m_fPitch); + g_pLTClient->SetObjectRotation(m_hDebris[i], &rRot); + } + } + } + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::UpdateEmitter +// +// PURPOSE: Update emitter position +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleExplosionFX::UpdateEmitter(MovingObject* pObject) +{ + if (!m_pClientDE || !pObject || pObject->m_dwPhysicsFlags & MO_RESTING) return LTFALSE; + + LTBOOL bRet = LTFALSE; + + LTVector vNewPos; + if (UpdateMovingObject(LTNULL, pObject, vNewPos)) + { + ClientIntersectInfo info; + LTBOOL bBouncedOnGround = LTFALSE; + uint32 dwFlags = (INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID); + + bRet = BounceMovingObject(LTNULL, pObject, vNewPos, &info, + dwFlags, false, bBouncedOnGround); + + pObject->m_vLastPos = pObject->m_vPos; + pObject->m_vPos = vNewPos; + + if (g_pCommonLT->GetPointStatus(&vNewPos) == LT_OUTSIDE) + { + pObject->m_dwPhysicsFlags |= MO_RESTING; + pObject->m_vPos = pObject->m_vLastPos; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::AddParticles +// +// PURPOSE: Add particles to system +// +// ----------------------------------------------------------------------- // + +void CParticleExplosionFX::AddParticles(MovingObject* pObject) +{ + if (!m_hObject || !m_pClientDE || !pObject || pObject->m_dwPhysicsFlags & MO_RESTING) return; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + LTVector vCurPos, vLastPos, vPos, vDelta, vTemp, vDriftVel, vColor; + + vCurPos = pObject->m_vPos; + vLastPos = pObject->m_vLastPos; + + // Calculate Particle puff positions... + + // Current position is relative to the particle system's postion (i.e., + // each puff of Particle is some distance away from the particle system's + // position)... + + VEC_SUB(vCurPos, vCurPos, m_vPos); + VEC_SUB(vLastPos, vLastPos, m_vPos); + + + // How long has it been since the last Particle puff? + + LTFLOAT fTimeOffset = fTime - m_fLastTime; + + + // Fill the distance between the last projectile position, and it's + // current position with Particle puffs... + + VEC_SUB(vTemp, vCurPos, vLastPos); + VEC_MULSCALAR(vDelta, vTemp, 1.0f/float(m_nNumSteps)); + + VEC_COPY(vPos, vLastPos); + + LTFLOAT fCurLifeTime = 10.0f; + LTFLOAT fLifeTimeOffset = fTimeOffset / float(m_nNumSteps); + + LTFLOAT fOffset = 0.5f; + + int nNumPerPuff = GetNumParticles(m_nNumPerPuff); + + for (int i=0; i < m_nNumSteps; i++) + { + // Build the individual Particle puffs... + + for (int j=0; j < nNumPerPuff; j++) + { + VEC_COPY(vTemp, vPos); + + VEC_SET(vDriftVel, GetRandom(m_vMinDriftVel.x, m_vMaxDriftVel.x), + GetRandom(m_vMinDriftVel.y, m_vMaxDriftVel.y), + GetRandom(m_vMinDriftVel.z, m_vMaxDriftVel.z)); + + if (!m_bIgnoreWind) + { + vDriftVel.x += g_vWorldWindVel.x; + vDriftVel.y += g_vWorldWindVel.y; + vDriftVel.z += g_vWorldWindVel.z; + } + + vTemp.x += GetRandom(-fOffset, fOffset); + vTemp.y += GetRandom(-fOffset, fOffset); + vTemp.z += GetRandom(-fOffset, fOffset); + + GetRandomColorInRange(vColor); + + m_pClientDE->AddParticle(m_hObject, &vTemp, &vDriftVel, &vColor, fCurLifeTime); + } + + VEC_ADD(vPos, vPos, vDelta); + fCurLifeTime += fLifeTimeOffset; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleExplosionFX::CreateDebris +// +// PURPOSE: Create a debris model +// +// ----------------------------------------------------------------------- // + +HLOCALOBJ CParticleExplosionFX::CreateDebris() +{ + return LTNULL; +/* + LTVector vScale; + VEC_SET(vScale, 1.0f, 1.0f, 1.0f); + VEC_MULSCALAR(vScale, vScale, GetRandom(1.0f, 5.0f)); + + char* pFilename = GetDebrisModel(DBT_STONE_BIG, vScale); + char* pSkin = GetDebrisSkin(DBT_STONE_BIG); + + if (!pFilename) return LTNULL; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_MODEL; + SAFE_STRCPY(createStruct.m_Filename, pFilename); + SAFE_STRCPY(createStruct.m_SkinName, pSkin); + createStruct.m_Flags = FLAG_VISIBLE | FLAG_NOLIGHT; + VEC_COPY(createStruct.m_Pos, m_vPos); + + HLOCALOBJ hObj = m_pClientDE->CreateObject(&createStruct); + + m_pClientDE->SetObjectScale(hObj, &vScale); + + return hObj; +*/ +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleExplosionFX.h b/Jack/ClientShellDLL/ParticleExplosionFX.h new file mode 100644 index 00000000..85265f9b --- /dev/null +++ b/Jack/ClientShellDLL/ParticleExplosionFX.h @@ -0,0 +1,174 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleExplosionFX.h +// +// PURPOSE : Particle explosion - Definition +// +// CREATED : 5/22/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLE_EXPLOSION_FX_H__ +#define __PARTICLE_EXPLOSION_FX_H__ + +#include "BaseParticleSystemFX.h" +#include "client_physics.h" + +#define MAX_EMITTERS 10 + +struct PESCREATESTRUCT : public BPSCREATESTRUCT +{ + PESCREATESTRUCT(); + + LTRotation rSurfaceRot; + LTVector vPos; + LTVector vColor1; + LTVector vColor2; + LTVector vMinVel; + LTVector vMaxVel; + LTVector vMinDriftVel; + LTVector vMaxDriftVel; + LTFLOAT fLifeTime; + LTFLOAT fFadeTime; + LTFLOAT fOffsetTime; + LTFLOAT fRadius; + LTFLOAT fGravity; + uint8 nSurfaceType; + uint8 nNumPerPuff; + uint8 nNumEmitters; + uint8 nEmitterFlags; + uint8 nNumSteps; + LTBOOL bCreateDebris; + LTBOOL bRotateDebris; + LTBOOL bIgnoreWind; + char* pFilename; +}; + +inline PESCREATESTRUCT::PESCREATESTRUCT() +{ + rSurfaceRot.Init(); + vPos.Init(); + vColor1.Init(); + vColor2.Init(); + vMinVel.Init(); + vMaxVel.Init(); + vMinDriftVel.Init(0.0f, 5.0f, 0.0f); + vMaxDriftVel.Init(0.0f, 6.0f, 0.0f); + fLifeTime = 0.0f; + fFadeTime = 0.0f; + fOffsetTime = 0.0f; + fRadius = 0.0f; + fGravity = 0.0f; + nSurfaceType = 0; + nNumPerPuff = 0; + nNumEmitters = 0; + nEmitterFlags = 0; + nNumSteps = 2; + bCreateDebris = LTTRUE; + bRotateDebris = LTTRUE; + bIgnoreWind = LTTRUE; + pFilename = LTNULL; +} + +class CParticleExplosionFX : public CBaseParticleSystemFX +{ + public : + + CParticleExplosionFX() : CBaseParticleSystemFX() + { + VEC_INIT(m_vLastPos); + VEC_INIT(m_vMinVel); + VEC_INIT(m_vMaxVel); + VEC_INIT(m_vMinDriftVel); + VEC_INIT(m_vMaxDriftVel); + + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + m_fOffsetTime = 0.0f; + m_nNumPerPuff = 1; + m_nNumSteps = 2; + + m_bFirstUpdate = LTTRUE; + m_fLastTime = -1.0f; + m_fStartTime = -1.0f; + + m_nSurfaceType = 0; + m_bIgnoreWind = LTFALSE; + + memset(m_Emitters, 0, sizeof(MovingObject)*MAX_EMITTERS); + memset(m_ActiveEmitters, 0, sizeof(LTBOOL)*MAX_EMITTERS); + memset(m_BounceCount, 0, sizeof(uint8)*MAX_EMITTERS); + memset(m_hDebris, 0, sizeof(HOBJECT)*MAX_EMITTERS); + + m_nNumEmitters = 0; + m_nEmitterFlags = 0; + + m_bCreateDebris = LTFALSE; + m_bRotateDebris = LTFALSE; + m_fPitch = 0.0f; + m_fYaw = 0.0f; + m_fPitchVel = 0.0f; + m_fYawVel = 0.0f; + } + + ~CParticleExplosionFX() + { + for (int i=0; i < m_nNumEmitters; i++) + { + if (m_hDebris[i] && m_pClientDE) + { + m_pClientDE->RemoveObject(m_hDebris[i]); + } + } + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_PARTICLEEXPLOSION_ID; } + + private : + + LTRotation m_rSurfaceRot; // Rotation of surface + LTVector m_vLastPos; // Last Particle particle position + LTVector m_vMinVel; // Minimum emitter velocity + LTVector m_vMaxVel; // Maximum emitter velocity + LTVector m_vMinDriftVel; // Particle min drift velocity + LTVector m_vMaxDriftVel; // Particle max drift velocity + + LTFLOAT m_fFadeTime; // When system should start to fade + LTFLOAT m_fLifeTime; // How long system stays around + LTFLOAT m_fStartTime; // When did we start this crazy thing + LTFLOAT m_fOffsetTime; // Time between particles + + uint8 m_nNumPerPuff; // Number of particles per Particle puff + + LTFLOAT m_fLastTime; // Last time we created some particles + LTBOOL m_bFirstUpdate; // First update + LTBOOL m_bIgnoreWind; // Ignore world wind? + LTBOOL m_bCreateDebris;// Should we create debris? + uint8 m_nSurfaceType; // Impact surface + uint8 m_nNumSteps; // Number of steps between each particle puff + + MovingObject m_Emitters[MAX_EMITTERS]; // Particle Emitters + uint8 m_nNumEmitters; // Num in array + uint8 m_nEmitterFlags; // MoveObject flags + LTBOOL m_ActiveEmitters[MAX_EMITTERS]; // Active? + uint8 m_BounceCount[MAX_EMITTERS]; // Number of bounces + HLOCALOBJ m_hDebris[MAX_EMITTERS]; + + // Emitter rotation stuff... + + LTBOOL m_bRotateDebris; + LTFLOAT m_fPitch; + LTFLOAT m_fYaw; + LTFLOAT m_fPitchVel; + LTFLOAT m_fYawVel; + + LTBOOL UpdateEmitter(MovingObject* pObject); + void AddParticles(MovingObject* pObject); + HLOCALOBJ CreateDebris(); +}; + +#endif // __PARTICLE_EXPLOSION_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleShowerFX.cpp b/Jack/ClientShellDLL/ParticleShowerFX.cpp new file mode 100644 index 00000000..0c981e22 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleShowerFX.cpp @@ -0,0 +1,163 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleShower.cpp +// +// PURPOSE : ParticleShower special FX - Implementation +// +// CREATED : 1/17/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ParticleShowerFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleShowerFX::Init +// +// PURPOSE: Init the sparks +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleShowerFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *(PARTICLESHOWERCREATESTRUCT*)psfxCreateStruct; + + m_vColor1 = m_cs.vColor1; + m_vColor2 = m_cs.vColor2; + m_fGravity = m_cs.fGravity; + m_fRadius = m_cs.fRadius; + m_vPos = m_cs.vPos; + m_pTextureName = m_cs.pTexture; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleShowerFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleShowerFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + if (CBaseParticleSystemFX::CreateObject(pClientDE)) + { + return AddParticles(); + } + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleShowerFX::Update +// +// PURPOSE: Update the particle shower +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleShowerFX::Update() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Check to see if we should go away... + + if (fTime > m_fStartTime + m_cs.fDuration) + { + return LTFALSE; + } + + + // Fade particles over duration... + + LTFLOAT fScale = (m_cs.fDuration - (fTime - m_fStartTime)) / m_cs.fDuration; + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, fScale); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleShowerFX::AddParticles +// +// PURPOSE: Make the particles +// +// ----------------------------------------------------------------------- //``` + +LTBOOL CParticleShowerFX::AddParticles() +{ + if(!m_hObject || !m_pClientDE) return LTFALSE; + + LTVector vMinOffset, vMaxOffset, vMinVel, vMaxVel; + VEC_SET(vMinOffset, -m_cs.fEmissionRadius, -m_cs.fEmissionRadius, -m_cs.fEmissionRadius); + VEC_SET(vMaxOffset, m_cs.fEmissionRadius, m_cs.fEmissionRadius, m_cs.fEmissionRadius); + + LTFLOAT fVelOffset = m_cs.vDir.Mag(); + m_cs.vDir.Normalize(); + + LTRotation rRot(m_cs.vDir, LTVector(0.0f, 1.0f, 0.0f)); + + LTVector vF, vU, vR; + vF = rRot.Forward(); + vU = rRot.Up(); + vR = rRot.Right(); + + if (vF.y <= -0.95f || vF.y >= 0.95f) + { + vF.y = vF.y > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.x <= -0.95f || vF.x >= 0.95f) + { + vF.x = vF.x > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 0.0f, 1.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.z <= -0.95f || vF.z >= 0.95f) + { + vF.z = vF.z > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 1.0f, 0.0f); + } + + LTVector vTemp; + + vMinVel = vF * (fVelOffset * .025f); + vMaxVel = vF * fVelOffset; + + vMinVel += vR * -fVelOffset; + vMaxVel += vR * fVelOffset; + vMinVel += vU * -fVelOffset; + vMaxVel += vU * fVelOffset; + + int nParticles = GetNumParticles(m_cs.nParticles); + + m_pClientDE->AddParticles(m_hObject, nParticles, + &vMinOffset, &vMaxOffset, // Position offset + &vMinVel, &vMaxVel, // Velocity + &m_vColor1, &m_vColor2, // Color + m_cs.fDuration, m_cs.fDuration); + + m_fStartTime = m_pClientDE->GetTime(); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleShowerFX.h b/Jack/ClientShellDLL/ParticleShowerFX.h new file mode 100644 index 00000000..02dceb37 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleShowerFX.h @@ -0,0 +1,76 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleShowerFX.h +// +// PURPOSE : ParticleShower special fx class - Definition +// (used to be CSparksFX) +// +// CREATED : 1/17/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLE_SHOWER_FX_H__ +#define __PARTICLE_SHOWER_FX_H__ + +#include "BaseParticleSystemFX.h" + + +struct PARTICLESHOWERCREATESTRUCT : public BPSCREATESTRUCT +{ + PARTICLESHOWERCREATESTRUCT(); + + LTVector vPos; + LTVector vDir; + LTVector vColor1; + LTVector vColor2; + uint8 nParticles; + LTFLOAT fDuration; + LTFLOAT fEmissionRadius; + LTFLOAT fRadius; + LTFLOAT fGravity; + char* pTexture; +}; + +inline PARTICLESHOWERCREATESTRUCT::PARTICLESHOWERCREATESTRUCT() +{ + vPos.Init(); + vDir.Init(); + vColor1.Init(); + vColor2.Init(); + nParticles = 0; + fDuration = 0.0f; + fEmissionRadius = 0.0f; + fRadius = 0.0f; + fGravity = 0.0f; + pTexture = LTNULL; +} + + +class CParticleShowerFX : public CBaseParticleSystemFX +{ + public : + + CParticleShowerFX() : CBaseParticleSystemFX() + { + VEC_SET(m_vColor1, 255.0f, 255.0f, 255.0f); + VEC_SET(m_vColor2, 255.0f, 255.0f, 0.0f); + + m_fStartTime = 0.0f; + } + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_PARTICLESHOWER_ID; } + + private : + + LTBOOL AddParticles(); + + PARTICLESHOWERCREATESTRUCT m_cs; + + LTFLOAT m_fStartTime; // When did we start +}; + +#endif // __PARTICLE_SHOWER_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleSystemFX.cpp b/Jack/ClientShellDLL/ParticleSystemFX.cpp new file mode 100644 index 00000000..bfafecb3 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleSystemFX.cpp @@ -0,0 +1,344 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleSystemFX.cpp +// +// PURPOSE : ParticleSystem special FX - Implementation +// +// CREATED : 10/24/97 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ParticleSystemFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +#define MAX_PARTICLES_PER_SECOND 5000 +#define MAX_PS_VIEW_DIST_SQR (10000*10000) // Max global distance to add particles + +extern CGameClientShell* g_pGameClientShell; + +extern LTVector g_vWorldWindVel; +static VarTrack s_cvarTweak; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::CParticleSystemFX +// +// PURPOSE: Construct +// +// ----------------------------------------------------------------------- // + +CParticleSystemFX::CParticleSystemFX() : CBaseParticleSystemFX() +{ + m_bFirstUpdate = LTTRUE; + m_fLastTime = 0.0f; + m_fNextUpdate = 0.01f; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Init +// +// PURPOSE: Init the particle system fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleSystemFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CBaseParticleSystemFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + PSCREATESTRUCT ps; + + ps.hServerObj = hServObj; + ps.vColor1 = pMsg->ReadLTVector(); + ps.vColor2 = pMsg->ReadLTVector(); + ps.vDims = pMsg->ReadLTVector(); + ps.vMinVel = pMsg->ReadLTVector(); + ps.vMaxVel = pMsg->ReadLTVector(); + ps.dwFlags = pMsg->Readuint32(); + ps.fBurstWait = pMsg->Readfloat(); + ps.fBurstWaitMin = pMsg->Readfloat(); + ps.fBurstWaitMax = pMsg->Readfloat(); + ps.fParticlesPerSecond = pMsg->Readfloat(); + ps.fParticleLifetime = pMsg->Readfloat(); + ps.fParticleRadius = pMsg->Readfloat(); + ps.fGravity = pMsg->Readfloat(); + ps.fRotationVelocity = pMsg->Readfloat(); + ps.fViewDist = pMsg->Readfloat(); + ps.hstrTextureName = pMsg->ReadHString(); + + return Init(&ps); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Init +// +// PURPOSE: Init the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleSystemFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + // Set up our creation struct... + + PSCREATESTRUCT* pPS = (PSCREATESTRUCT*)psfxCreateStruct; + m_cs = *pPS; + + // Set our (parent's) flags... + + m_dwFlags = m_cs.dwFlags; + m_fRadius = m_cs.fParticleRadius; + m_fGravity = m_cs.fGravity; + m_vPos = m_cs.vPos; + + // Set our max viewable distance... + + m_fMaxViewDistSqr = m_cs.fViewDist*m_cs.fViewDist; + m_fMaxViewDistSqr = m_fMaxViewDistSqr > MAX_PS_VIEW_DIST_SQR ? MAX_PS_VIEW_DIST_SQR : m_fMaxViewDistSqr; + + + m_vMinOffset = -m_cs.vDims; + m_vMaxOffset = m_cs.vDims; + + // Adjust velocities based on global wind values... + + m_cs.vMinVel += g_vWorldWindVel; + m_cs.vMaxVel += g_vWorldWindVel; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleSystemFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + if (m_cs.hstrTextureName) + { + m_pTextureName = pClientDE->GetStringData(m_cs.hstrTextureName); + } + + LTBOOL bRet = CBaseParticleSystemFX::CreateObject(pClientDE); + + if (bRet && m_hObject && m_hServerObject) + { + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + } + } + + s_cvarTweak.Init(g_pLTClient, "TweakParticles", NULL, 0.0f); + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::Update +// +// PURPOSE: Update the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleSystemFX::Update() +{ + if (!m_hObject || !m_pClientDE || m_bWantRemove) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Hide/show the particle system if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); + + // Once last puff as disappeared, hide the system (no new puffs + // will be added...) + + if (dwFlags & FLAG_VISIBLE) + { + if (fTime > m_fLastTime + m_cs.fParticleLifetime) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + } + } + else + { + m_fLastTime = fTime; + } + + return LTTRUE; + } + else + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + // Debugging aid... + + if (s_cvarTweak.GetFloat() > 0) + { + TweakSystem(); + } + + + if (m_bFirstUpdate) + { + m_fLastTime = fTime; + m_bFirstUpdate = LTFALSE; + } + + + // Make sure it is time to update... + + if (fTime < m_fLastTime + m_fNextUpdate) + { + return LTTRUE; + } + + + // Ok, how many to add this frame....(make sure time delta is no more than + // 15 frames/sec... + + float fTimeDelta = fTime - m_fLastTime; + fTimeDelta = fTimeDelta > 0.0666f ? 0.0666f : fTimeDelta; + int nToAdd = (int) floor(m_cs.fParticlesPerSecond * fTimeDelta); + nToAdd = LTMIN(nToAdd, (int)(MAX_PARTICLES_PER_SECOND * fTimeDelta)); + + nToAdd = GetNumParticles(nToAdd); + + m_pClientDE->AddParticles(m_hObject, nToAdd, + &m_vMinOffset, &m_vMaxOffset, // Position offset + &(m_cs.vMinVel), &(m_cs.vMaxVel), // Velocity + &(m_cs.vColor1), &(m_cs.vColor2), // Color + m_cs.fParticleLifetime, m_cs.fParticleLifetime); + + + // Determine when next update should occur... + + if (m_cs.fBurstWait > 0.001f) + { + m_fNextUpdate = m_cs.fBurstWait * GetRandom(m_cs.fBurstWaitMin, m_cs.fBurstWaitMax); + } + else + { + m_fNextUpdate = 0.001f; + } + + + // Rotate the particle system... + + if (m_cs.fRotationVelocity != 0.0f) + { + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hObject, &rRot); + rRot.Rotate(rRot.Up(), g_pGameClientShell->GetFrameTime() * m_cs.fRotationVelocity); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + } + + m_fLastTime = fTime; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleSystemFX::TweakSystem +// +// PURPOSE: Tweak the particle system +// +// ----------------------------------------------------------------------- // + +void CParticleSystemFX::TweakSystem() +{ + LTFLOAT fIncValue = 0.01f; + LTBOOL bChanged = LTFALSE; + + LTVector vScale; + vScale.Init(); + + uint32 dwPlayerFlags = g_pPlayerMgr->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .5f; + } + + // Move Red up/down... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + + //m_cs.vMinVel + //m_cs.vMaxVel + //m_cs.vColor1 + //m_cs.vColor2 + + bChanged = LTTRUE; + } + + + // Add/Subtract number of particles per second + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + m_cs.fParticlesPerSecond += (LTFLOAT)(fIncValue * 101.0); + + m_cs.fParticlesPerSecond = m_cs.fParticlesPerSecond < 0.0f ? 0.0f : + (m_cs.fParticlesPerSecond > MAX_PARTICLES_PER_SECOND ? MAX_PARTICLES_PER_SECOND : m_cs.fParticlesPerSecond); + + bChanged = LTTRUE; + } + + + // Lower/Raise burst wait... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + + bChanged = LTTRUE; + } + + + if (bChanged) + { + g_pGameClientShell->CSPrint("Particles per second: %.2f", m_cs.fParticlesPerSecond); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleSystemFX.h b/Jack/ClientShellDLL/ParticleSystemFX.h new file mode 100644 index 00000000..c5d890c6 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleSystemFX.h @@ -0,0 +1,98 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleSystemFX.h +// +// PURPOSE : ParticleSystem special fx class - Definition +// +// CREATED : 10/21/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLE_SYSTEM_FX_H__ +#define __PARTICLE_SYSTEM_FX_H__ + +#include "BaseParticleSystemFX.h" + + +struct PSCREATESTRUCT : public BPSCREATESTRUCT +{ + PSCREATESTRUCT(); + + LTVector vColor1; + LTVector vColor2; + LTVector vDims; + LTVector vMinVel; + LTVector vMaxVel; + LTVector vPos; + uint32 dwFlags; + LTFLOAT fBurstWait; + LTFLOAT fBurstWaitMin; + LTFLOAT fBurstWaitMax; + LTFLOAT fParticlesPerSecond; + LTFLOAT fParticleLifetime; + LTFLOAT fParticleRadius; + LTFLOAT fGravity; + LTFLOAT fRotationVelocity; + LTFLOAT fViewDist; + HSTRING hstrTextureName; +}; + +inline PSCREATESTRUCT::PSCREATESTRUCT() +{ + vColor1.Init(); + vColor2.Init(); + vDims.Init(); + vMinVel.Init(); + vMaxVel.Init(); + vPos.Init(); + dwFlags = 0; + fBurstWait = 0.0f; + fParticlesPerSecond = 0.0f; + fParticleLifetime = 0.0f; + fParticleRadius = 0.0f; + fGravity = 0.0f; + fRotationVelocity = 0.0f; + fViewDist = 0.0f; + fBurstWaitMin = 0.01f; + fBurstWaitMax = 1.0f; + hstrTextureName = LTNULL; +} + +class CParticleSystemFX : public CBaseParticleSystemFX +{ + public : + + CParticleSystemFX(); + ~CParticleSystemFX() + { + if (m_cs.hstrTextureName && m_pClientDE) + { + m_pClientDE->FreeString(m_cs.hstrTextureName); + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_PARTICLESYSTEM_ID; } + + protected : + + // Creation data... + + PSCREATESTRUCT m_cs; // Holds all initialization data + + LTBOOL m_bFirstUpdate; // Is this the first update + LTFLOAT m_fNextUpdate; // Time between updates + LTFLOAT m_fLastTime; // When was the last time + LTFLOAT m_fMaxViewDistSqr; // Max dist to add particles (squared) + + LTVector m_vMinOffset; + LTVector m_vMaxOffset; + + void TweakSystem(); +}; + +#endif // __PARTICLE_SYSTEM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleTrailFX.cpp b/Jack/ClientShellDLL/ParticleTrailFX.cpp new file mode 100644 index 00000000..a20c6815 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleTrailFX.cpp @@ -0,0 +1,203 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleTrailFX.cpp +// +// PURPOSE : ParticleTrail special FX - Implementation +// +// CREATED : 4/27/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ParticleTrailFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ParticleTrailSegmentFX.h" +#include "GameClientShell.h" +#include "MsgIds.h" +#include "WeaponFXTypes.h" +#include "VarTrack.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarSmokeTrailNumPerPuff; +VarTrack g_cvarSmokeTrailColor1R; +VarTrack g_cvarSmokeTrailColor1G; +VarTrack g_cvarSmokeTrailColor1B; +VarTrack g_cvarSmokeTrailColor2R; +VarTrack g_cvarSmokeTrailColor2G; +VarTrack g_cvarSmokeTrailColor2B; +VarTrack g_cvarSmokeTrailLifetime; +VarTrack g_cvarSmokeTrailLWFadetime; +VarTrack g_cvarSmokeTrailSWFadetime; +VarTrack g_cvarSmokeTrailSBFadetime; +VarTrack g_cvarSmokeTrailSegtime; +VarTrack g_cvarSmokeTrailDriftOffsetX; +VarTrack g_cvarSmokeTrailDriftOffsetY; +VarTrack g_cvarSmokeTrailDriftOffsetZ; +VarTrack g_cvarSmokeTrailParticleRadius; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleTrailFX::Init +// +// PURPOSE: Init the Particle trail +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleTrailFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + PTCREATESTRUCT* pST = (PTCREATESTRUCT*)psfxCreateStruct; + m_nType = pST->nType; + + g_cvarSmokeTrailNumPerPuff.Init(g_pLTClient, "SmokeTrailNumPerPuff", LTNULL, 1.0f); + g_cvarSmokeTrailColor1R.Init(g_pLTClient, "SmokeTrailColor1R", LTNULL, 150.0f); + g_cvarSmokeTrailColor1G.Init(g_pLTClient, "SmokeTrailColor1G", LTNULL, 150.0f); + g_cvarSmokeTrailColor1B.Init(g_pLTClient, "SmokeTrailColor1B", LTNULL, 150.0f); + g_cvarSmokeTrailColor2R.Init(g_pLTClient, "SmokeTrailColor2R", LTNULL, 230.0f); + g_cvarSmokeTrailColor2G.Init(g_pLTClient, "SmokeTrailColor2G", LTNULL, 230.0f); + g_cvarSmokeTrailColor2B.Init(g_pLTClient, "SmokeTrailColor2B", LTNULL, 230.0f); + g_cvarSmokeTrailLifetime.Init(g_pLTClient, "SmokeTrailLifetime", LTNULL, 1.5f); + g_cvarSmokeTrailLWFadetime.Init(g_pLTClient, "SmokeTrailLWFadetime", LTNULL, 0.2f); + g_cvarSmokeTrailSWFadetime.Init(g_pLTClient, "SmokeTrailSWFadetime", LTNULL, 0.2f); + g_cvarSmokeTrailSBFadetime.Init(g_pLTClient, "SmokeTrailSBFadetime", LTNULL, 0.3f); + g_cvarSmokeTrailSegtime.Init(g_pLTClient, "SmokeTrailSegtime", LTNULL, 0.1f); + g_cvarSmokeTrailDriftOffsetX.Init(g_pLTClient, "SmokeTrailDriftOffsetX", LTNULL, 0.0f); + g_cvarSmokeTrailDriftOffsetY.Init(g_pLTClient, "SmokeTrailDriftOffsetY", LTNULL, 20.0f); + g_cvarSmokeTrailDriftOffsetZ.Init(g_pLTClient, "SmokeTrailDriftOffsetZ", LTNULL, 5.0f); + g_cvarSmokeTrailParticleRadius.Init(g_pLTClient, "SmokeTrailParticleRadius", LTNULL, 2000.0f); + + if (m_nType & PT_BLOOD) + { + m_vDriftOffset.Init(60.0f, 60.0f, 60.0f); + + m_nNumPerPuff = 1; + m_vColor1.Init(150.0f, 150.0f, 150.0f); + m_vColor2.Init(200.0f, 200.0f, 200.0f); + + m_fLifeTime = 0.3f; + m_fFadeTime = 0.25f; + + m_fSegmentTime = 0.1f; + } + else if (m_nType & PT_GIBSMOKE) + { + m_vDriftOffset.Init(60.0f, 60.0f, 60.0f); + + m_nNumPerPuff = 1; + m_vColor1.Init(100.0f, 100.0f, 100.0f); + m_vColor2.Init(125.0f, 125.0f, 125.0f); + + m_fLifeTime = 0.75f; + m_fFadeTime = 0.25f; + + m_fSegmentTime = 0.1f; + } + else if ((m_nType & PT_SMOKE) || (m_nType & PT_SMOKE_LONG) || (m_nType & PT_SMOKE_BLACK)) + { + m_vDriftOffset.Init( + g_cvarSmokeTrailDriftOffsetX.GetFloat(), + g_cvarSmokeTrailDriftOffsetY.GetFloat(), + g_cvarSmokeTrailDriftOffsetZ.GetFloat()); + + m_nNumPerPuff = (int)g_cvarSmokeTrailNumPerPuff.GetFloat(); + + m_vColor1.Init( + g_cvarSmokeTrailColor1R.GetFloat(), + g_cvarSmokeTrailColor1G.GetFloat(), + g_cvarSmokeTrailColor1B.GetFloat()); + + m_vColor2.Init( + g_cvarSmokeTrailColor2R.GetFloat(), + g_cvarSmokeTrailColor2G.GetFloat(), + g_cvarSmokeTrailColor2B.GetFloat()); + + m_fLifeTime = g_cvarSmokeTrailLifetime.GetFloat(); + if ((m_nType & PT_SMOKE) || (m_nType & PT_SMOKE_BLACK)) + { + m_fLifeTime /= 2.0f; + } + + if (m_nType & PT_SMOKE) + { + m_fFadeTime = g_cvarSmokeTrailSWFadetime.GetFloat(); + } + else if (m_nType & PT_SMOKE_LONG) + { + m_fFadeTime = g_cvarSmokeTrailLWFadetime.GetFloat(); + } + else // Short black + { + m_fFadeTime = g_cvarSmokeTrailSBFadetime.GetFloat(); + } + + m_fSegmentTime = g_cvarSmokeTrailSegtime.GetFloat(); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleTrailFX::Update +// +// PURPOSE: Update the Particle trail (add Particle) +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleTrailFX::Update() +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr || !m_pClientDE || !m_hServerObject) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Check to see if we should go away... + + if (m_bWantRemove) + { + return LTFALSE; + } + + + // See if it is time to create a new trail segment... + + if ((m_fStartTime < 0) || (fTime > m_fStartTime + m_fSegmentTime)) + { + PTSCREATESTRUCT pts; + + pts.hServerObj = m_hServerObject; + pts.vColor1 = m_vColor1; + pts.vColor2 = m_vColor2; + pts.vDriftOffset = m_vDriftOffset; + pts.nType = m_nType; + pts.fLifeTime = m_fLifeTime; + pts.fFadeTime = m_fFadeTime; + pts.fOffsetTime = m_fOffsetTime; + pts.fRadius = g_cvarSmokeTrailParticleRadius.GetFloat(); + pts.fGravity = 0.0f; + pts.nNumPerPuff = m_nNumPerPuff; + + if (m_nType & PT_BLOOD) + { + pts.fRadius = 600.0f; + } + else if (m_nType & PT_GIBSMOKE) + { + pts.fRadius = 1250.0f; + } + + CSpecialFX* pFX = psfxMgr->CreateSFX(SFX_PARTICLETRAILSEG_ID, &pts); + + // Let each Particle segment do its initial update... + + if (pFX) pFX->Update(); + + m_fStartTime = fTime; + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleTrailFX.h b/Jack/ClientShellDLL/ParticleTrailFX.h new file mode 100644 index 00000000..c6fa194e --- /dev/null +++ b/Jack/ClientShellDLL/ParticleTrailFX.h @@ -0,0 +1,69 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleTrailFX.h +// +// PURPOSE : ParticleTrail special fx class - Definition +// +// CREATED : 4/27/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLE_TRAIL_FX_H__ +#define __PARTICLE_TRAIL_FX_H__ + +#include "SpecialFX.h" + + +struct PTCREATESTRUCT : public SFXCREATESTRUCT +{ + PTCREATESTRUCT(); + + uint8 nType; +}; + +inline PTCREATESTRUCT::PTCREATESTRUCT() +{ + nType = 0; +} + +class CParticleTrailFX : public CSpecialFX +{ + public : + + CParticleTrailFX() : CSpecialFX() + { + VEC_INIT(m_vLastPos); + VEC_INIT(m_vColor1); + VEC_INIT(m_vColor2); + VEC_INIT(m_vDriftOffset); + + m_nType = 0; + m_fStartTime = -1.0f; + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + m_fOffsetTime = 0.0f; + m_nNumPerPuff = 1; + m_fSegmentTime = 1.0f; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + private : + + LTVector m_vLastPos; // Last Particle particle position + LTVector m_vColor1; // Color of darkest Particle particles + LTVector m_vColor2; // Color of lightest Particle particles + LTVector m_vDriftOffset; // Particle drift offset + + LTFLOAT m_fSegmentTime; // When should we create a new segment + LTFLOAT m_fFadeTime; // When should segment start to fade + LTFLOAT m_fLifeTime; // How long segment stays around + LTFLOAT m_fStartTime; // When did we start this crazy thing + LTFLOAT m_fOffsetTime; // Time between particles + + int m_nNumPerPuff; // Number of particles per Particle puff + uint8 m_nType; // Type of particle trail. +}; + +#endif // __PARTICLE_TRAIL_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleTrailSegmentFX.cpp b/Jack/ClientShellDLL/ParticleTrailSegmentFX.cpp new file mode 100644 index 00000000..2df06b26 --- /dev/null +++ b/Jack/ClientShellDLL/ParticleTrailSegmentFX.cpp @@ -0,0 +1,346 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleTrailSegmentFX.cpp +// +// PURPOSE : ParticleTrail segment special FX - Implementation +// +// CREATED : 4/27/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ParticleTrailSegmentFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ContainerCodes.h" +#include "ClientServerShared.h" +#include "WeaponFXTypes.h" +#include "GameSettings.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +extern LTVector g_vWorldWindVel; +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarSmokeTrailStartScale; +VarTrack g_cvarSmokeTrailLWEndScale; +VarTrack g_cvarSmokeTrailSWEndScale; +VarTrack g_cvarSmokeTrailSBEndScale; +VarTrack g_cvarSmokeTrailStartAlpha; +VarTrack g_cvarSmokeTrailEndAlpha; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleTrailSegmentFX::Init +// +// PURPOSE: Init the Particle trail segment +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleTrailSegmentFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + g_cvarSmokeTrailStartScale.Init(g_pLTClient, "SmokeTrailStartScale", LTNULL, 1.0f); + g_cvarSmokeTrailLWEndScale.Init(g_pLTClient, "SmokeTrailLWEndScale", LTNULL, 15.0f); + g_cvarSmokeTrailSWEndScale.Init(g_pLTClient, "SmokeTrailSWEndScale", LTNULL, 15.0f); + g_cvarSmokeTrailSBEndScale.Init(g_pLTClient, "SmokeTrailSBEndScale", LTNULL, 15.0f); + g_cvarSmokeTrailStartAlpha.Init(g_pLTClient, "SmokeTrailStartAlpha", LTNULL, 0.9f); + g_cvarSmokeTrailEndAlpha.Init(g_pLTClient, "SmokeTrailEndAlpha", LTNULL, 0.0f); + + PTSCREATESTRUCT* pPTS = (PTSCREATESTRUCT*)psfxCreateStruct; + VEC_COPY(m_vColor1, pPTS->vColor1); + VEC_COPY(m_vColor2, pPTS->vColor2); + VEC_COPY(m_vDriftOffset, pPTS->vDriftOffset); + m_nType = pPTS->nType; + m_fLifeTime = pPTS->fLifeTime; + m_fFadeTime = pPTS->fFadeTime; + m_fOffsetTime = pPTS->fOffsetTime; + m_fRadius = pPTS->fRadius; + m_fGravity = pPTS->fGravity; + m_nNumPerPuff = pPTS->nNumPerPuff; + + m_bIgnoreWind = LTFALSE; + + // We'll control the particle system's position... + + m_basecs.bClientControlsPos = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleTrailSegmentFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleTrailSegmentFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE || !m_hServerObject) return LTFALSE; + + if (m_nType & PT_SMOKE_LONG) + { + m_pTextureName = "SFX\\Smoke\\Spr\\WhiteTrailLong.spr"; + + m_basecs.bAdjustParticleScale = LTTRUE; + m_basecs.fStartParticleScale = g_cvarSmokeTrailStartScale.GetFloat(); + m_basecs.fEndParticleScale = g_cvarSmokeTrailLWEndScale.GetFloat(); + + m_basecs.bAdjustParticleAlpha = LTTRUE; + m_basecs.fStartParticleAlpha = g_cvarSmokeTrailStartAlpha.GetFloat(); + m_basecs.fEndParticleAlpha = g_cvarSmokeTrailEndAlpha.GetFloat(); + } + else if (m_nType & PT_SMOKE) + { + m_pTextureName = "SFX\\Smoke\\Spr\\WhiteTrailShort.spr"; + + m_basecs.bAdjustParticleScale = LTTRUE; + m_basecs.fStartParticleScale = g_cvarSmokeTrailStartScale.GetFloat(); + m_basecs.fEndParticleScale = g_cvarSmokeTrailSWEndScale.GetFloat(); + + m_basecs.bAdjustParticleAlpha = LTTRUE; + m_basecs.fStartParticleAlpha = g_cvarSmokeTrailStartAlpha.GetFloat(); + m_basecs.fEndParticleAlpha = g_cvarSmokeTrailEndAlpha.GetFloat(); + } + else if (m_nType & PT_SMOKE_BLACK) + { + m_pTextureName = "SFX\\Smoke\\Spr\\BlackTrailShort.spr"; + + m_basecs.bAdjustParticleScale = LTTRUE; + m_basecs.fStartParticleScale = g_cvarSmokeTrailStartScale.GetFloat(); + m_basecs.fEndParticleScale = g_cvarSmokeTrailSBEndScale.GetFloat(); + + m_basecs.bAdjustParticleAlpha = LTTRUE; + m_basecs.fStartParticleAlpha = g_cvarSmokeTrailStartAlpha.GetFloat(); + m_basecs.fEndParticleAlpha = g_cvarSmokeTrailEndAlpha.GetFloat(); + } + else if ((m_nType & PT_GIBSMOKE)) + { + m_pTextureName = "SFX\\Impact\\Spr\\Smoke.spr"; + + m_basecs.bAdjustParticleScale = LTTRUE; + m_basecs.fStartParticleScale = g_cvarSmokeTrailStartScale.GetFloat(); + m_basecs.fEndParticleScale = g_cvarSmokeTrailSWEndScale.GetFloat(); + + m_basecs.bAdjustParticleAlpha = LTTRUE; + m_basecs.fStartParticleAlpha = g_cvarSmokeTrailStartAlpha.GetFloat(); + m_basecs.fEndParticleAlpha = g_cvarSmokeTrailEndAlpha.GetFloat(); + } + else if (m_nType & PT_BLOOD) + { + if (GetRandom(0, 1) == 0) + { + m_pTextureName = "SFX\\Particle\\Blood_1.dtx"; + } + else + { + m_pTextureName = "SFX\\Particle\\Blood_2.dtx"; + } + } + + // Determine if we are in a liquid... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + HLOCALOBJ objList[1]; + uint32 dwNum = ::GetPointContainers(vPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum) + { + uint16 dwCode; + if (pClientDE->GetContainerCode(objList[0], &dwCode)) + { + // Don't create blood under water... + + if (m_nType & PT_BLOOD) + { + m_bWantRemove = LTTRUE; + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + return LTFALSE; + } + + m_fRadius = 500.0f; + m_fGravity = 5.0f; + m_nNumPerPuff *= 3; + m_bIgnoreWind = LTTRUE; + m_pTextureName = DEFAULT_BUBBLE_TEXTURE; + + ::GetLiquidColorRange((ContainerCode)dwCode, &m_vColor1, &m_vColor2); + } + } + + return CBaseParticleSystemFX::CreateObject(pClientDE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CParticleTrailSegmentFX::Update +// +// PURPOSE: Update the Particle trail (add Particle) +// +// ----------------------------------------------------------------------- // + +LTBOOL CParticleTrailSegmentFX::Update() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + if (!CBaseParticleSystemFX::Update()) return LTFALSE; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTFALSE; + + uint8 nDetailLevel = pSettings->SpecialFXSetting(); + + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + if (!m_hServerObject) return LTFALSE; + + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + m_fLastTime = fTime; + + // Where is the server (moving) object... + + LTVector vPos, vTemp; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + // Current position is relative to the particle system's postion (i.e., + // each puff of Particle is some distance away from the particle system's + /// position)... + + g_pLTClient->GetObjectPos(m_hObject, &vTemp); + + vPos -= vTemp; + m_vLastPos = vPos; + } + + + // Check to see if we should just wait for last Particle puff to go away... + + if (m_bWantRemove || (fTime > m_fStartTime + m_fFadeTime)) + { + if (fTime > m_fLastTime + m_fLifeTime) + { + return LTFALSE; + } + + LTFLOAT fScale = (m_fLifeTime - (fTime - m_fLastTime)) / m_fLifeTime; + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, fScale); + + return LTTRUE; + } + + + // See if it is time to create a new Particle puff... + + if ((fTime > m_fLastTime + m_fOffsetTime) && m_hServerObject) + { + LTVector vCurPos, vPos, vDelta, vTemp, vDriftVel; + LTVector vColor; + + // Calculate Particle puff position... + + // Where is the server (moving) object... + + g_pLTClient->GetObjectPos(m_hServerObject, &vCurPos); + + + // Current position is relative to the particle system's postion (i.e., + // each puff of Particle is some distance away from the particle system's + /// position)... + + g_pLTClient->GetObjectPos(m_hObject, &vTemp); + vCurPos -= vTemp; + + + // How long has it been since the last Particle puff? + + LTFLOAT fTimeOffset = fTime - m_fLastTime; + + + // What is the range of colors? + + LTFLOAT fRange = m_vColor2.x - m_vColor1.x; + + + // Fill the distance between the last projectile position, and it's + // current position with Particle puffs... + + int nNumSteps = (m_fLastTime > 0) ? (((m_nType & PT_BLOOD) || (m_nType & PT_GIBSMOKE)) ? 20 : 5): 1; + + if (nDetailLevel != RS_HIGH) + { + nNumSteps /= 2; + } + + vTemp = vCurPos - m_vLastPos; + vDelta = vTemp * (1.0f/float(nNumSteps)); + + vPos = m_vLastPos; + + LTFLOAT fCurLifeTime = 10.0f; + if (nDetailLevel == RS_HIGH) + { + fCurLifeTime /= 2; + } + + LTFLOAT fLifeTimeOffset = fTimeOffset / float(nNumSteps); + + LTFLOAT fOffset = 0.5f; + + int nNumPerPuff = GetNumParticles(m_nNumPerPuff); + + for (int i=0; i < nNumSteps; i++) + { + // Build the individual Particle puffs... + + for (int j=0; j < nNumPerPuff; j++) + { + vTemp = vPos; + + if (m_bIgnoreWind) + { + vDriftVel.Init( + GetRandom(-m_vDriftOffset.x*2.0f, -m_vDriftOffset.x), + GetRandom(5.0f, 6.0f), + GetRandom(-m_vDriftOffset.z, m_vDriftOffset.z)); + } + else + { + vDriftVel.Init( + g_vWorldWindVel.x + GetRandom(-m_vDriftOffset.x*2.0f, -m_vDriftOffset.x), + g_vWorldWindVel.y + GetRandom(5.0f, 6.0f), + g_vWorldWindVel.z + GetRandom(-m_vDriftOffset.z, m_vDriftOffset.z)); + } + + vTemp.x += GetRandom(-fOffset, fOffset); + vTemp.y += GetRandom(-fOffset, fOffset); + vTemp.z += GetRandom(-fOffset, fOffset); + + GetRandomColorInRange(vColor); + + m_pClientDE->AddParticle(m_hObject, &vTemp, &vDriftVel, &vColor, fCurLifeTime); + } + + vPos += vDelta; + fCurLifeTime += fLifeTimeOffset; + } + + m_fLastTime = fTime; + + m_vLastPos = vCurPos; + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ParticleTrailSegmentFX.h b/Jack/ClientShellDLL/ParticleTrailSegmentFX.h new file mode 100644 index 00000000..1e6631ff --- /dev/null +++ b/Jack/ClientShellDLL/ParticleTrailSegmentFX.h @@ -0,0 +1,93 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ParticleTrailSegmentFX.h +// +// PURPOSE : ParticleTrail segment special fx class - Definition +// +// CREATED : 4/27/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PARTICLE_TRAIL_SEGMENT_FX_H__ +#define __PARTICLE_TRAIL_SEGMENT_FX_H__ + +#include "BaseParticleSystemFX.h" + + +struct PTSCREATESTRUCT : public BPSCREATESTRUCT +{ + PTSCREATESTRUCT(); + + uint8 nType; + LTVector vColor1; + LTVector vColor2; + LTVector vDriftOffset; + LTFLOAT fLifeTime; + LTFLOAT fFadeTime; + LTFLOAT fOffsetTime; + LTFLOAT fRadius; + LTFLOAT fGravity; + uint8 nNumPerPuff; +}; + +inline PTSCREATESTRUCT::PTSCREATESTRUCT() +{ + vColor1.Init(); + vColor2.Init(); + vDriftOffset.Init(); + fLifeTime = 0.0f; + fFadeTime = 0.0f; + fOffsetTime = 0.0f; + fRadius = 0.0f; + fGravity = 0.0f; + nNumPerPuff = 0; + nType = 0; +} + +class CParticleTrailSegmentFX : public CBaseParticleSystemFX +{ + public : + + CParticleTrailSegmentFX() : CBaseParticleSystemFX() + { + VEC_INIT(m_vLastPos); + VEC_INIT(m_vDriftOffset); + + m_fLifeTime = 0.0f; + m_fFadeTime = 0.0f; + m_fOffsetTime = 0.0f; + m_nNumPerPuff = 1; + m_nType = 0; + + m_bFirstUpdate = LTTRUE; + m_fLastTime = -1.0f; + m_fStartTime = -1.0f; + + m_bIgnoreWind = LTFALSE; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_PARTICLETRAILSEG_ID; } + + private : + + LTVector m_vLastPos; // Last Particle particle position + LTVector m_vDriftOffset; // Particle drift offset + + LTFLOAT m_fFadeTime; // When system should start to fade + LTFLOAT m_fLifeTime; // How long system stays around + LTFLOAT m_fStartTime; // When did we start this crazy thing + LTFLOAT m_fOffsetTime; // Time between particles + + uint8 m_nNumPerPuff; // Number of particles per Particle puff + uint8 m_nType; // Type of particle + + LTFLOAT m_fLastTime; // Last time we created some particles + LTBOOL m_bFirstUpdate; // First update + LTBOOL m_bIgnoreWind; // Ignore world wind? +}; + +#endif // __PARTICLE_TRAIL_SEGMENT_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PerformanceEnum.h b/Jack/ClientShellDLL/PerformanceEnum.h new file mode 100644 index 00000000..f1dbb811 --- /dev/null +++ b/Jack/ClientShellDLL/PerformanceEnum.h @@ -0,0 +1,36 @@ +#undef ADD_OPTION + +#if defined(INCLUDE_AS_ENUM) + #define ADD_OPTION(var,name,low,med,high) kPerform_##name, +#elif defined(INCLUDE_AS_SETTING) + #define ADD_OPTION(var,name,low,med,high) {#var,#name,low}, +#elif defined(INCLUDE_AS_LOW) + #define ADD_OPTION(var,name,low,med,high) low, +#elif defined(INCLUDE_AS_MED) + #define ADD_OPTION(var,name,low,med,high) med, +#elif defined(INCLUDE_AS_HIGH) + #define ADD_OPTION(var,name,low,med,high) high, +#else + #error To use this include file, first define one of INCLUDE_AS_ENUM, INCLUDE_AS_SETTING, INCLUDE_AS_LOW, INCLUDE_AS_MED, or INCLUDE_AS_HIGH. +#endif + +//console var, friendly name, low perf setting, medium perf setting, high perf setting +ADD_OPTION(dynamiclightworld,DynamicLight,1,0,0) +ADD_OPTION(ShadowDetail,ShadowDetail,2,1,0) +ADD_OPTION(bumpmappolygrids,PolyGridBumpmap,1,0,0) +ADD_OPTION(fresnelpolygrids,PolyGridFresnel,1,1,0) +ADD_OPTION(envbumpmapenable,EnvironmentBumpMapping,1,1,0) +ADD_OPTION(anisotropic,AnisotropicFiltering,1,0,0) +ADD_OPTION(trilinear,TrilinearFiltering,1,0,0) +ADD_OPTION(envmapenable,EnvironmentMapping,1,1,1) +ADD_OPTION(detailtextures,DetailTextures,1,1,1) +ADD_OPTION(BackBufferCount,TripleBuffering,2,1,1) +ADD_OPTION(Tracers,Tracers,1,1,0) +ADD_OPTION(ShellCasings,ShellCasings,1,1,0) +ADD_OPTION(EnvironmentalDetail,EnvironmentalDetail,3,2,0) +ADD_OPTION(FXDetail,FXDetail,2,1,0) +ADD_OPTION(DetailLevel,DetailLevel,2,1,0) +ADD_OPTION(MusicQuality,MusicQuality,1,0,0) +ADD_OPTION(sound16bit,SoundQuality,1,1,0) +ADD_OPTION(MusicActive,MusicActive,1,1,1) +ADD_OPTION(PreCacheAssets,PreCacheAssets,1,1,0) diff --git a/Jack/ClientShellDLL/PerformanceMgr.cpp b/Jack/ClientShellDLL/PerformanceMgr.cpp new file mode 100644 index 00000000..503c71f5 --- /dev/null +++ b/Jack/ClientShellDLL/PerformanceMgr.cpp @@ -0,0 +1,503 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PerformanceMgr.cpp +// +// PURPOSE : Manage performance related settings +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" + +#include "PerformanceMgr.h" +#include "interfacemgr.h" + +#include // For input and output +#include // For the files +#include // Find first, find next, etc. + + +namespace +{ +} + const std::string CONFIG_DIR("Config\\"); + const std::string CONFIG_EXT(".txt"); + + sDetailSetting sTextureGroups[kNumTextureGroups] = + { + "GroupOffset1","RegularTex", 1,0,0, + "GroupOffset2","LargeTex", 1,1,0, + "GroupOffset3","XLargeTex", 2,1,0, + }; + + sDetailSetting sShadowDetails[] = + { + {"modelshadow_proj_blurenable","ShadowBlending",0,1,1}, + {"modelshadow_proj_textureres","ShadowTextureRes",128,256,512}, + {"modelshadow_proj_backfacecull","ShadowBackfaceCull",0,0,1}, + {"modelshadow_proj_maxshadowsperframe","ShadowMaxCount",1,2,3}, + }; + uint8 kNumShadowDetails = ARRAY_LEN( sShadowDetails ); + + sDetailSetting sFXDetails[] = + { + {"ClientFXDetailLevel","ClientFX",0,1,2}, + {"DebrisFXLevel","DebrisFX",0,1,2}, + }; + uint8 kNumFXDetails = ARRAY_LEN( sFXDetails ); + + + + sDetailSetting sSettings[kNumDetailSettings] = + { +#define INCLUDE_AS_SETTING +#include "PerformanceEnum.h" +#undef INCLUDE_AS_SETTING + }; + + + sPerformCfg cfgDefaultLow = + { + ".DefaultLow", + "", + 1024, + 1600, +#define INCLUDE_AS_LOW +#include "PerformanceEnum.h" +#undef INCLUDE_AS_LOW + }; + + sPerformCfg cfgDefaultMid = + { + ".DefaultMid", + "", + 800, + 800, +#define INCLUDE_AS_MED +#include "PerformanceEnum.h" +#undef INCLUDE_AS_MED + }; + + sPerformCfg cfgDefaultHigh = + { + ".DefaultHigh", + "", + 640, + 640, +#define INCLUDE_AS_HIGH +#include "PerformanceEnum.h" +#undef INCLUDE_AS_HIGH + }; + +CPerformanceMgr* g_pPerformanceMgr = NULL; + +LTBOOL CPerformanceMgr::Init() +{ + g_pPerformanceMgr = this; + + LoadString(IDS_PERFORM_HIGH,cfgDefaultHigh.szNiceName,sizeof(cfgDefaultHigh.szNiceName)); + LoadString(IDS_PERFORM_MEDIUM,cfgDefaultMid.szNiceName,sizeof(cfgDefaultHigh.szNiceName)); + LoadString(IDS_PERFORM_LOW,cfgDefaultLow.szNiceName,sizeof(cfgDefaultHigh.szNiceName)); + + +// char szCfg[64]; +// GetConsoleString("PerformanceConfig",szCfg,".DefaultLow"); + + BuildConfigList(); + + SetPerformanceCfg(0); + + return LTTRUE; + +} + +void CPerformanceMgr::Term() +{ + unsigned int i; + for (i=0; i < m_ConfigList.size(); i++) + { + delete m_ConfigList[i]; + } + m_ConfigList.clear(); + + g_pPerformanceMgr = LTNULL; +} + + +int CPerformanceMgr::GetPerformanceCfg(bool bIgnoreResolution) +{ + uint32 nCfg = 0; + + while (nCfg < m_ConfigList.size() && !IsCurrentConfig(nCfg,bIgnoreResolution)) + nCfg++; + + return nCfg; +} + + +void CPerformanceMgr::SetPerformanceCfg(char *szName) +{ + uint32 i = 0; + + while (i < m_ConfigList.size() && stricmp(m_ConfigList[i]->szName,szName) != 0) + i++; + + + SetPerformanceCfg(i); +} + + +void CPerformanceMgr::SetPerformanceCfg(int nCfg) +{ + if (nCfg < 0 || (uint32)nCfg >= m_ConfigList.size()) + { + WriteConsoleString("PerformanceConfig",".CustomConfig"); +// g_pLTClient->WriteConfigFile("autoexec.cfg"); + return; + } + + sPerformCfg *pCfg = m_ConfigList[nCfg]; + + SetPerformanceOptions(pCfg,nCfg); + +} + +void CPerformanceMgr::BuildConfigList() +{ + unsigned int i; + + if (m_ConfigList.size() >= 3) + { + m_ConfigList.erase(m_ConfigList.begin()); + m_ConfigList.erase(m_ConfigList.begin()); + m_ConfigList.erase(m_ConfigList.begin()); + }; + for (i=0; i < m_ConfigList.size(); i++) + { + delete m_ConfigList[i]; + } + m_ConfigList.clear(); + + m_ConfigList.push_back(&cfgDefaultHigh); + m_ConfigList.push_back(&cfgDefaultMid); + m_ConfigList.push_back(&cfgDefaultLow); + + struct _finddata_t file; + long hFile; + + std::string directory = CONFIG_DIR + "*" + CONFIG_EXT; + + // find first file + if((hFile = _findfirst(directory.c_str(), &file)) != -1L) + { + do + { + std::string fn = CONFIG_DIR + file.name; + + m_buteMgr.Term(); + if (m_buteMgr.Parse(fn.c_str())) + { + sPerformCfg* pCfg = new sPerformCfg; + char *pName = strtok(file.name,"."); + SAFE_STRCPY(pCfg->szName,pName); + + m_buteMgr.GetString("General","Name",pCfg->szNiceName,sizeof(pCfg->szNiceName)); + + LoadPerformanceOptions(m_buteMgr,pCfg); + + m_ConfigList.push_back(pCfg); + } + } + while(_findnext(hFile, &file) == 0); + } + _findclose(hFile); + + +} + + +LTBOOL CPerformanceMgr::IsCurrentConfig(int nCfg,bool bIgnoreResolution) +{ + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + + if (nCfg < 0 || (uint32)nCfg >= m_ConfigList.size()) + { + return LTFALSE; + } + + sPerformCfg *pCfg = m_ConfigList[nCfg]; + + if (!bIgnoreResolution) + { + uint16 nScreenSize = (uint16)GetConsoleInt("screenwidth",640); + if (nScreenSize < pCfg->nMinScreenSize) + { + DebugCPrint(1,"CPerformanceMgr::IsCurrentConfig(%d) : failed on MinScreenSize",nCfg); + return LTFALSE; + } + if (nScreenSize > pCfg->nMaxScreenSize) + { + DebugCPrint(1,"CPerformanceMgr::IsCurrentConfig(%d) : failed on MaxScreenSize",nCfg); + return LTFALSE; + } + } + + for (int i = 0; i < kNumDetailSettings; i++) + { + if (kPerform_TripleBuffering == i && !(dwAdvancedOptions & AO_TRIPLEBUFFER)) + continue; + if (nCfg == 2 && kPerform_TripleBuffering == i) + { + //for high detail, the triple buffering default value depends on the VSyncOnFlip setting + int buff = GetConsoleInt(sSettings[i].szVar,0); + int vsync = !!GetConsoleInt("VSyncOnFlip",1); + if (buff != (vsync + 1)) + { + DebugCPrint(1,"CPerformanceMgr::IsCurrentConfig(%d) : failed on %s",nCfg,sSettings[i].szName); + return LTFALSE; + } + continue; + } + if (kPerform_MusicActive == i && !(dwAdvancedOptions & AO_MUSIC)) + continue; + int n = GetConsoleInt(sSettings[i].szVar,0); + if (n != pCfg->nSettings[i]) + { + DebugCPrint(1,"CPerformanceMgr::IsCurrentConfig(%d) : failed on %s",nCfg,sSettings[i].szName); + return LTFALSE; + } + + } + + int nDetail = pCfg->nSettings[kPerform_DetailLevel]; + if ( nDetail < 0 || nDetail >= kNumDetailLevels) + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + if (pCfg->nDetails[grp] != GetConsoleInt(sTextureGroups[grp].szVar,0) ) + { + DebugCPrint(1,"CPerformanceMgr::IsCurrentConfig(%d) : failed on %s",nCfg,sTextureGroups[grp].szName); + return LTFALSE; + } + } + } + + return LTTRUE; + + +} + +int CPerformanceMgr::GetDetailLevel(const int* pOffsetArray) +{ + for (int level = 0; level < kNumDetailLevels; level++) + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + if (pOffsetArray[grp] != sTextureGroups[grp].nSetting[level]) + break; + } + if (grp >= kNumTextureGroups) + break; + } + return level; +} + +void CPerformanceMgr::SetDetailLevels(int nLevel, int* pOffsetArray) +{ + if (nLevel < 0 || nLevel >= kNumDetailLevels) return; + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + pOffsetArray[grp] = sTextureGroups[grp].nSetting[nLevel]; + } +} + + + +//sets current options from given cfg +void CPerformanceMgr::SetPerformanceOptions(sPerformCfg *pCfg, int nCfg) +{ + bool bOldSoundQuality = GetConsoleBool("sound16bit",0); + bool bNewSoundQuality = !!(pCfg->nSettings[kPerform_SoundQuality]); + + for (int i = 0; i < kNumDetailSettings; i++) + { + WriteConsoleInt(sSettings[i].szVar,pCfg->nSettings[i]); + } + + if (bNewSoundQuality != bOldSoundQuality) + { + g_pGameClientShell->InitSound(); + } + + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + //disable triple buffer + if ( !(dwAdvancedOptions & AO_TRIPLEBUFFER)) + { + + } + if (nCfg == 2 && kPerform_TripleBuffering) + { + //for high detail, the triple buffering default value depends on the VSyncOnFlip setting + int vsync = !!GetConsoleInt("VSyncOnFlip",1); + WriteConsoleInt(sSettings[kPerform_TripleBuffering].szVar,vsync+1); + } + + + //disable music + if ( !(dwAdvancedOptions & AO_MUSIC)) + { + WriteConsoleInt(sSettings[kPerform_MusicActive].szVar,0); + } + + if (pCfg->nSettings[kPerform_MusicActive] == 0) + { + WriteConsoleInt("musicvolume",MUSIC_MIN_VOL); + } + + if (pCfg->nSettings[kPerform_ShadowDetail] <= 0) + { + //turn off shadows if appropriate + WriteConsoleInt("ModelShadow_Proj_Enable", 0 ); + } + else + { + WriteConsoleInt("ModelShadow_Proj_Enable", 1 ); + int8 nDetail = pCfg->nSettings[kPerform_ShadowDetail] - 1; + for (int sub = 0; sub < kNumShadowDetails; sub++) + { + WriteConsoleInt(sShadowDetails[sub].szVar,sShadowDetails[sub].nSetting[nDetail]); + } + + } + + uint8 nDetail = pCfg->nSettings[kPerform_FXDetail]; + for (int sub = 0; sub < kNumFXDetails; sub++) + { + WriteConsoleInt(sFXDetails[sub].szVar,sFXDetails[sub].nSetting[nDetail]); + } + + // Set the fx detail setting here (it is set in the loop above) so we know it is + // always correct... + g_pGameClientShell->GetClientFXMgr()->SetDetailLevel( GetConsoleInt("ClientFXDetailLevel", 0) ); + + + switch (pCfg->nSettings[kPerform_EnvironmentalDetail]) + { + case 0: //off + WriteConsoleInt("ScatterEnable", 0 ); + WriteConsoleInt("SnowEnable", 0 ); + break; + case 1: //low + WriteConsoleInt("ScatterEnable", 0 ); + WriteConsoleInt("SnowEnable", 1 ); + WriteConsoleFloat("SnowDensityScale", 0.25f ); + break; + case 2: //medium + WriteConsoleInt("ScatterEnable", 1 ); + WriteConsoleInt("SnowEnable", 1 ); + WriteConsoleFloat("SnowDensityScale", 0.5f ); + break; + case 3: //high + WriteConsoleInt("ScatterEnable", 1 ); + WriteConsoleInt("SnowEnable", 1 ); + WriteConsoleFloat("SnowDensityScale", 1.0f ); + break; + } + + + + nDetail = pCfg->nSettings[kPerform_DetailLevel]; + if ( nDetail >= 0 && nDetail < kNumDetailLevels) + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + WriteConsoleInt(sTextureGroups[grp].szVar,sTextureGroups[grp].nSetting[nDetail]); + } + } + else + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + WriteConsoleInt(sTextureGroups[grp].szVar,pCfg->nDetails[grp]); + } + } + + if (nCfg < 0) + nCfg = GetPerformanceCfg(false); + + if (nCfg < 0 || (uint32)nCfg >= m_ConfigList.size()) + { + WriteConsoleString("PerformanceConfig",".CustomConfig"); + } + else + { + sPerformCfg *pPresetCfg = m_ConfigList[nCfg]; + WriteConsoleString("PerformanceConfig",pPresetCfg->szName); + } + +// g_pLTClient->WriteConfigFile("autoexec.cfg"); + +} + +//fills cfg with current options +void CPerformanceMgr::GetPerformanceOptions(sPerformCfg *pCfg) +{ + for (int i = 0; i < kNumDetailSettings; i++) + { + pCfg->nSettings[i] = GetConsoleInt(sSettings[i].szVar,pCfg->nSettings[i]); + } + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + pCfg->nDetails[grp] = GetConsoleInt(sTextureGroups[grp].szVar,pCfg->nDetails[grp]); + } + + GetConsoleString("PerformanceConfig",pCfg->szName,pCfg->szName); + +} + +void CPerformanceMgr::LoadPerformanceOptions(CButeMgr &buteMgr,sPerformCfg *pCfg) +{ + for (int i = 0; i < kNumDetailSettings; i++) + { + pCfg->nSettings[i] = buteMgr.GetInt("Settings",sSettings[i].szName, 0); + } + + int nDetail = pCfg->nSettings[kPerform_DetailLevel]; + if ( nDetail >= 0 && nDetail < kNumDetailLevels) + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + pCfg->nDetails[grp] = (int8)sTextureGroups[grp].nSetting[nDetail]; + } + + } + else + { + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + pCfg->nDetails[grp] = buteMgr.GetInt("Details",sTextureGroups[grp].szName, 0); + } + } +} + +void CPerformanceMgr::SavePerformanceOptions(CButeMgr &buteMgr,sPerformCfg *pCfg) +{ + + for (int i = 0; i < kNumDetailSettings; i++) + { + buteMgr.SetInt("Settings",sSettings[i].szName, pCfg->nSettings[i]); + } + + for (int grp = 0; grp < kNumTextureGroups; grp++) + { + buteMgr.SetInt("Details",sTextureGroups[grp].szName, pCfg->nDetails[grp]); + } +} + +//gets the current value of the specified setting +int CPerformanceMgr::GetSetting(eDetailID eDetail) +{ + return GetConsoleInt(sSettings[eDetail].szVar,sSettings[eDetail].nSetting[0]); +} diff --git a/Jack/ClientShellDLL/PerformanceMgr.h b/Jack/ClientShellDLL/PerformanceMgr.h new file mode 100644 index 00000000..5ecc93ba --- /dev/null +++ b/Jack/ClientShellDLL/PerformanceMgr.h @@ -0,0 +1,99 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PerformanceMgr.h +// +// PURPOSE : Manage performance related settings +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef PERFORM_MGR_H +#define PERFORM_MGR_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "ClientUtilities.h" +#include "ButeMgr.h" + +class CPerformanceMgr; +extern CPerformanceMgr* g_pPerformanceMgr; + +const int kNumDetailLevels = 3; +const int kNumTextureGroups = 3; +typedef struct sDetailSetting_t +{ + char szVar[64]; + char szName[64]; + int16 nSetting[kNumDetailLevels]; +} sDetailSetting; + +enum eDetailID +{ +#define INCLUDE_AS_ENUM +#include "PerformanceEnum.h" +#undef INCLUDE_AS_ENUM + + kNumDetailSettings +}; + + +typedef struct sPerformCfg_t +{ + char szName[64]; + char szNiceName[64]; + uint16 nMinScreenSize; + uint16 nMaxScreenSize; + uint8 nSettings[kNumDetailSettings]; + int8 nDetails[kNumTextureGroups]; +} sPerformCfg; + + + +class CPerformanceMgr +{ +public: + + LTBOOL Init(); + void Term(); + + + int GetPerformanceCfg(bool bIgnoreResolution); + + //gets the current value of the specified setting + int GetSetting(eDetailID eDetail); + + void SetPerformanceCfg(char *szName); + void SetPerformanceCfg(int nCfg); + + typedef std::vector ConfigList; + ConfigList m_ConfigList; + + int GetDetailLevel(const int* pOffsetArray); + void SetDetailLevels(int nLevel, int* pOffsetArray); + + + //sets current options from given cfg + void SetPerformanceOptions(sPerformCfg *pCfg, int nCfg = -1); + //fills cfg with current options + void GetPerformanceOptions(sPerformCfg *pCfg); + + //used by ProfileMgr to load/save performance options + void LoadPerformanceOptions(CButeMgr &buteMgr,sPerformCfg *pCfg); + void SavePerformanceOptions(CButeMgr &buteMgr,sPerformCfg *pCfg); + + +protected: + void BuildConfigList(); + LTBOOL IsCurrentConfig(int nCfg,bool bIgnoreResolution); + + + CButeMgr m_buteMgr; + + +}; + + +#endif // PERFORM_MGR_H diff --git a/Jack/ClientShellDLL/PerformanceTest.cpp b/Jack/ClientShellDLL/PerformanceTest.cpp new file mode 100644 index 00000000..8bf4d619 --- /dev/null +++ b/Jack/ClientShellDLL/PerformanceTest.cpp @@ -0,0 +1,220 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : PerformanceTest.cpp +// +// PURPOSE : PerformanceTest class - Implementation +// +// CREATED : 08/28/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PerformanceTest.h" +#include "VarTrack.h" + +VarTrack g_vtPerformanceSmoothFPSTime; +VarTrack g_vtPerformanceMinSampleFPS; +VarTrack g_vtPerformanceMaxSampleFPS; +VarTrack g_vtPerformanceThrowAwaySamples; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPerformanceTest::Reset() +// +// PURPOSE: Reset the test +// +// ----------------------------------------------------------------------- // + +void CPerformanceTest::Reset() +{ + m_nThrowAwaySamples = 0; + m_nTotalSamples = 0; + m_nSamplesBelowMin = 0; + m_nSamplesAboveMax = 0; + m_nSmoothedCurFPS = 0; + m_nTotalCurFPSSamples = 0; + m_nTotalCurFPS = 0; + m_nAveFPS = 0; + m_nMinFPS = kMaxFPS; + m_nMaxFPS = 0; + m_nPercentBelowMin = 0; + m_nPercentMintoMax = 0; + m_nPercentAboveMax = 0; + m_fTotalTime = 0.0f; + m_fFPSSmoothTime = 0.0f; + m_nMinTestFPS = kDefaultMin; + m_nMaxTestFPS = kDefaultMax; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPerformanceTest::Start() +// +// PURPOSE: Start the test +// +// ----------------------------------------------------------------------- // + +bool CPerformanceTest::Start(uint32 nMin /*=kDefaultMin*/, uint32 nMax /*=kDefaultMax*/) +{ + Reset(); + + if (nMin < nMax) + { + m_nMinTestFPS = nMin; + m_nMaxTestFPS = nMax; + } + else + { + return false; + } + + if (!g_vtPerformanceSmoothFPSTime.IsInitted()) + { + g_vtPerformanceSmoothFPSTime.Init(g_pLTClient, "PerformanceFPSSmoothTime", NULL, 0.5f); + } + if (!g_vtPerformanceMinSampleFPS.IsInitted()) + { + g_vtPerformanceMinSampleFPS.Init(g_pLTClient, "PerformanceMinSampleFrameRate", NULL, 0.00001f); + } + if (!g_vtPerformanceMaxSampleFPS.IsInitted()) + { + g_vtPerformanceMaxSampleFPS.Init(g_pLTClient, "PerformanceMaxSampleFrameRate", NULL, 1.0f); + } + if (!g_vtPerformanceThrowAwaySamples.IsInitted()) + { + g_vtPerformanceThrowAwaySamples.Init(g_pLTClient, "PerformanceThrowAwaySamples", NULL, 5.0f); + } + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPerformanceTest::Update() +// +// PURPOSE: Update our calculations +// +// ----------------------------------------------------------------------- // + +void CPerformanceTest::Update(float fFrameTime) +{ + // Skip the first few samples since they skew the results... + m_nThrowAwaySamples++; + if (m_nThrowAwaySamples <= uint32(g_vtPerformanceThrowAwaySamples.GetFloat())) + { + return; + } + + // Throw out any bogus frame times (too fast or too slow)... + if (fFrameTime < g_vtPerformanceMinSampleFPS.GetFloat() || + fFrameTime > g_vtPerformanceMaxSampleFPS.GetFloat()) + { + return; + } + + uint32 nCurFPS = (fFrameTime > 0.0 ? int(1.0/fFrameTime) : kMaxFPS); + + m_nTotalSamples++; + m_fTotalTime += fFrameTime; + m_fFPSSmoothTime += fFrameTime; + + if (nCurFPS < m_nMinFPS) + { + m_nMinFPS = nCurFPS; + } + + if (nCurFPS > m_nMaxFPS) + { + m_nMaxFPS = nCurFPS; + } + + if (nCurFPS < m_nMinTestFPS) + { + m_nSamplesBelowMin++; + } + else if (nCurFPS > m_nMaxTestFPS) + { + m_nSamplesAboveMax++; + } + + + // Smooth out the "current" fps over kNumSmoothFrames... + + if (m_fFPSSmoothTime <= g_vtPerformanceSmoothFPSTime.GetFloat()) + { + m_nTotalCurFPS += nCurFPS; + m_nTotalCurFPSSamples++; + } + else + { + // Time to calculate smooth current fps + m_nSmoothedCurFPS = (m_nTotalCurFPS / m_nTotalCurFPSSamples); + + m_nTotalCurFPS = 0; + m_nTotalCurFPSSamples = 0; + m_fFPSSmoothTime = 0.0f; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPerformanceTest::Stop() +// +// PURPOSE: Stop the test and calculate the results +// +// ----------------------------------------------------------------------- // + +void CPerformanceTest::Stop() +{ + if (m_nTotalSamples > 0) + { + float fAverage = m_fTotalTime / float(m_nTotalSamples); + + m_nAveFPS = (fAverage > 0.0 ? int(1.0/fAverage) : kMaxFPS); + + m_nPercentBelowMin = int(100.0 * float(m_nSamplesBelowMin) / float(m_nTotalSamples)); + m_nPercentAboveMax = int(100.0 * float(m_nSamplesAboveMax) / float(m_nTotalSamples)); + m_nPercentMintoMax = (100 - (m_nPercentBelowMin + m_nPercentAboveMax)); + + if (m_nPercentMintoMax < 0) m_nPercentMintoMax = 0; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPerformanceTest::GetRecommendedDetailChange() +// +// PURPOSE: Return the recommended detail setting based on the last +// performance test ran. +// +// RETURNS: 0 = No change needed +// 1 = Recommend detail increase +// -1 = Recommend detail decrease +// +// ----------------------------------------------------------------------- // + +int CPerformanceTest::GetRecommendedDetailChange() const +{ + // If more than 50% of the test was below the minimum test percent, recommend + // one detail level lower than they are currently running at...If more than 50% + // of the test was below the maximum test percent, recommend one detail level + // higher than they are running at...else, they've hit the sweet spot. + + // Assume we'll recommend they don't change their detail settings... + + int nDetailAdjust = 0; + + if (m_nPercentBelowMin >= 50) + { + nDetailAdjust = -1; + } + else if (m_nPercentAboveMax >= 50) + { + nDetailAdjust = 1; + } + + return nDetailAdjust; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PerformanceTest.h b/Jack/ClientShellDLL/PerformanceTest.h new file mode 100644 index 00000000..314e0a9e --- /dev/null +++ b/Jack/ClientShellDLL/PerformanceTest.h @@ -0,0 +1,69 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : PerformanceTest.cpp +// +// PURPOSE : PerformanceTest class - Implementation +// +// CREATED : 08/28/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PERFORMANCE_TEST_H__ +#define __PERFORMANCE_TEST_H__ + +class CPerformanceTest +{ + public : + + CPerformanceTest() + { + Reset(); + } + + void Reset(); + bool Start(uint32 nMin=kDefaultMin, uint32 nMax=kDefaultMax); + void Update(float fFrameTime); + void Stop(); + + uint32 GetCurFPS() const { return m_nSmoothedCurFPS; } + uint32 GetAveFPS() const { return m_nAveFPS; } + uint32 GetMinFPS() const { return m_nMinFPS; } + uint32 GetMaxFPS() const { return m_nMaxFPS; } + + int GetRecommendedDetailChange() const; + + uint32 GetPercentFPSBelowMin() const { return m_nPercentBelowMin; } + uint32 GetPercentFPSMintoMax() const { return m_nPercentMintoMax; } + uint32 GetPercentFPSAboveMax() const { return m_nPercentAboveMax; } + + uint32 GetMinTestFPS() const { return m_nMinTestFPS; } + uint32 GetMaxTestFPS() const { return m_nMaxTestFPS; } + + private : + + enum Constants { kMaxFPS = 10000, kDefaultMin = 30, kDefaultMax = 60}; + + uint32 m_nAveFPS; + uint32 m_nMinFPS; + uint32 m_nMaxFPS; + uint32 m_nThrowAwaySamples; + uint32 m_nTotalSamples; + uint32 m_nSamplesBelowMin; + uint32 m_nSamplesAboveMax; + uint32 m_nSmoothedCurFPS; + uint32 m_nTotalCurFPSSamples; + uint32 m_nTotalCurFPS; + uint32 m_nPercentBelowMin; + uint32 m_nPercentMintoMax; + uint32 m_nPercentAboveMax; + + float m_fTotalTime; + float m_fFPSSmoothTime; + + uint32 m_nMinTestFPS; + uint32 m_nMaxTestFPS; +}; + +#endif // __PERFORMANCE_TEST_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PickupItemFX.cpp b/Jack/ClientShellDLL/PickupItemFX.cpp new file mode 100644 index 00000000..e3e0839e --- /dev/null +++ b/Jack/ClientShellDLL/PickupItemFX.cpp @@ -0,0 +1,180 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PickupItemFX.cpp +// +// PURPOSE : PickupItem - Implementation +// +// CREATED : 8/20/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PickupItemFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "SFXMsgIds.h" + +extern CGameClientShell* g_pGameClientShell; + +#define PICKUPITEM_ROTVEL 0.3333f * MATH_CIRCLE + +CPickupItemFX::~CPickupItemFX() +{ + if( m_linkClientFX.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_linkClientFX ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPickupItemFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPickupItemFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + PICKUPITEMCREATESTRUCT* pPICS = (PICKUPITEMCREATESTRUCT*)psfxCreateStruct; + + m_bRotate = pPICS->bRotate; + m_bBounce = pPICS->bBounce; + m_nTeamId = pPICS->m_nTeamId; + + // Shutdown any currently playing FX... + + if( m_linkClientFX.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_linkClientFX ); + } + + + if( pPICS->sClientFX.length() ) + { + CLIENTFX_CREATESTRUCT fxInit( pPICS->sClientFX.c_str(), FXFLAG_LOOP, m_hServerObject ); + g_pClientFXMgr->CreateClientFX( &m_linkClientFX, fxInit, true ); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPickupItemFX::CreateObject +// +// PURPOSE: Create object associated the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPickupItemFX::CreateObject(ILTClient *pClientDE) +{ + LTBOOL bRet = CSpecialFX::CreateObject(pClientDE); + if (!bRet) return bRet; + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPickupItemFX::Update +// +// PURPOSE: Update the pickupitem +// +// ----------------------------------------------------------------------- // + +LTBOOL CPickupItemFX::Update() +{ + if (!m_pClientDE || m_bWantRemove || !m_hServerObject) return LTFALSE; + + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + if (m_bRotate) + { + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + rRot.Rotate(rRot.Up(), PICKUPITEM_ROTVEL * fDeltaTime); + g_pLTClient->SetObjectRotation(m_hServerObject, &rRot); + } + + if (m_bBounce) + { + + } + + // If we have a ClientFX that is playing hide or show it based on the serverobject... + + if( m_linkClientFX.IsValid() ) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags( m_hServerObject, OFT_Flags, dwFlags ); + + if( dwFlags & FLAG_VISIBLE ) + { + m_linkClientFX.GetInstance()->Show(); + } + else + { + m_linkClientFX.GetInstance()->Hide(); + } + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPickupItemFX::OnServerMessage +// +// PURPOSE: Handle recieving a message from the server... +// +// ----------------------------------------------------------------------- // + +LTBOOL CPickupItemFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) + return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch( nMsgId ) + { + case PUFX_CLIENTFX: + { + char szClientFX[256] = {0}; + + pMsg->ReadString( szClientFX, ARRAY_LEN( szClientFX )); + + // Shutdown any currently playing FX... + + if( m_linkClientFX.IsValid() ) + { + g_pClientFXMgr->ShutdownClientFX( &m_linkClientFX ); + } + + + if( szClientFX[0] ) + { + CLIENTFX_CREATESTRUCT fxInit( szClientFX, FXFLAG_LOOP, m_hServerObject ); + g_pClientFXMgr->CreateClientFX( &m_linkClientFX, fxInit, true ); + } + } + break; + + case PUFX_TEAMID: + { + m_nTeamId = pMsg->Readuint8( ); + } + break; + + default: + break; + + } + + return LTTRUE; +} diff --git a/Jack/ClientShellDLL/PickupItemFX.h b/Jack/ClientShellDLL/PickupItemFX.h new file mode 100644 index 00000000..e6286503 --- /dev/null +++ b/Jack/ClientShellDLL/PickupItemFX.h @@ -0,0 +1,59 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PickupItem.h +// +// PURPOSE : PickupItem - Definition +// +// CREATED : 8/20/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PICKUPITEM_FX_H__ +#define __PICKUPITEM_FX_H__ + +#include "SpecialFX.h" + +struct PICKUPITEMCREATESTRUCT : public SFXCREATESTRUCT +{ + PICKUPITEMCREATESTRUCT(); + + LTBOOL bRotate; + LTBOOL bBounce; + std::string sClientFX; + uint8 m_nTeamId; +}; + +inline PICKUPITEMCREATESTRUCT::PICKUPITEMCREATESTRUCT() +{ + bRotate = LTFALSE; + bBounce = LTFALSE; + m_nTeamId = INVALID_TEAM; +} + +class CPickupItemFX : public CSpecialFX +{ + public : + + ~CPickupItemFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_PICKUPITEM_ID; } + + uint8 GetTeamId( ) const { return m_nTeamId; } + + private : + + LTBOOL m_bRotate; + LTBOOL m_bBounce; + + CLIENTFX_LINK m_linkClientFX; + + uint8 m_nTeamId; +}; + +#endif // __PICKUPITEM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerCamera.cpp b/Jack/ClientShellDLL/PlayerCamera.cpp new file mode 100644 index 00000000..8679080e --- /dev/null +++ b/Jack/ClientShellDLL/PlayerCamera.cpp @@ -0,0 +1,1061 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerCamera.cpp +// +// PURPOSE : PlayerCamera - Implementation +// +// CREATED : 10/5/97 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PlayerCamera.h" +#include "iltclient.h" +#include +#include "GameClientShell.h" +#include "VarTrack.h" +#include "VehicleMgr.h" +#include "CMoveMgr.h" + +VarTrack g_vtCameraMoveUpTime; +VarTrack g_vtCameraMoveUpMinVel; +VarTrack g_vtCameraMaxYDifference; +VarTrack g_vtCameraClipDistance; +VarTrack g_vtCameraCollisionObjScale; +VarTrack g_vtCameraCollisionUseObject; + +#define CAMERA_COLLISION_MODEL "models\\1x1_square.ltb" +#define DEFAULT_COLLISION_MODEL_SCALE 12.0f + +// Camera's distance back from the player's position +#define DEFAULT_CAMERA_DIST_BACK 110 +// Camera's distance up from the player's position +#define DEFAULT_CAMERA_DIST_UP 40 +// Camera's distance back from the player's position but at a 45 degree angle +// (for example, if the camera is looking at the player from the southeast position) +#define DEFAULT_CAMERA_DIST_DIAG 106 + +// Camera's X offset from the player when it is in the MLOOK state +#define DEFAULT_CAMERA_DIST_MLOOK_X 0 +// Camera's Y offset from the player when it is in the MLOOK state +#define DEFAULT_CAMERA_DIST_MLOOK_Y 10 +// Camera's Z offset from the player when it is in the MLOOK state +#define DEFAULT_CAMERA_DIST_MLOOK_Z 29 + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CPlayerCamera() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CPlayerCamera::CPlayerCamera() +{ + m_hTarget = NULL; + m_pClientDE = NULL; + + m_rRotation.Init(); + m_rLastTargetRot.Init(); + m_vPos.Init(); + m_vLastTargetPos.Init(); + m_vLastOptPos.Init(); + + m_eOrientation = SOUTH; + m_eSaveOrientation = SOUTH; + + m_OptX = 0.0f; + m_OptY = 0.0f; + m_OptZ = 0.0f; + m_CircleStartTime = 0.0f; + m_SaveAnglesY = 0.0f; + + m_bSlide = LTTRUE; + + m_CameraDistBack = DEFAULT_CAMERA_DIST_BACK; + m_CameraDistUp = DEFAULT_CAMERA_DIST_UP; + m_CameraDistDiag = DEFAULT_CAMERA_DIST_DIAG; + + m_ePointType = AT_POSITION; + m_bStartCircle = LTFALSE; + m_CircleHeightOffset = 0.0f; + m_CircleRadius = 75.0f; + m_CircleTime = 3.0f; + m_bRestoreFirstPerson = LTFALSE; + + m_GoingFirstPersonStart = 0.0f; + m_GoingFirstPersonTransition = 1.5f; + + m_eCameraMode = CHASE; + m_eSaveCameraMode = CHASE; + + m_TargetFirstPersonOffset.Init(); + m_TargetChaseOffset.Init(); + m_TargetPointAtOffset.Init(); + + m_hCollisionObject = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::~CPlayerCamera() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CPlayerCamera::~CPlayerCamera() +{ + if( m_hCollisionObject ) + { + g_pLTClient->RemoveObject( m_hCollisionObject ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::Init() +// +// PURPOSE: Init the camera +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerCamera::Init(ILTClient* pClientDE) +{ + if (!pClientDE) return LTFALSE; + m_pClientDE = pClientDE; + + g_vtCameraMoveUpTime.Init(pClientDE, "CameraMoveUpTime", NULL, 0.1f); + g_vtCameraMoveUpMinVel.Init(pClientDE, "CameraMoveUpMinVel", NULL, 140.0f); + g_vtCameraMaxYDifference.Init(pClientDE, "CameraMoveMaxYDiff", NULL, 30.0f); + g_vtCameraClipDistance.Init(pClientDE, "CameraClipDist", NULL, 30.0f); + g_vtCameraCollisionObjScale.Init(pClientDE, "CameraCollisionObjScale", NULL, DEFAULT_COLLISION_MODEL_SCALE ); + g_vtCameraCollisionUseObject.Init(pClientDE, "CameraCollisionUseObject", NULL, 1.0f ); + + CreateCameraCollisionObject(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CameraUpdate() +// +// PURPOSE: Update the position & orientation of the camera based +// on the target +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::CameraUpdate(float deltaTime) +{ + if (!m_pClientDE || !m_hTarget) return; + + LTRotation rRot; + LTVector vOpt, vPos; + + g_pLTClient->GetObjectPos(m_hTarget, &vPos); + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + + LTVector vF = rRot.Forward(); + + if (m_hTarget) + { + if (m_eOrientation == HOLD) + return; + + switch(m_eCameraMode) + { + case CHASE: + break; + + case GOINGFIRSTPERSON: + { + vF.y = 0.0f; + vPos += (vF * m_TargetFirstPersonOffset.x); + vPos.y += m_TargetFirstPersonOffset.y; + + vOpt = vPos; + } + break; + + case CIRCLING: + { + CircleAroundTarget(); + return; + } + break; + + case FIRSTPERSON: + { + UpdateFirstPerson(vF, vPos, deltaTime); + PointInDirection(rRot); + return; + } + break; + + case SCRIPT: + return; + break; + + default: + return; + } + + // Find the optimal position for the camera + if (m_eCameraMode == GOINGFIRSTPERSON) + { + MoveCameraToPosition(vOpt, deltaTime); + PointAtPosition(vOpt, rRot, m_vPos); + return; + } + else + { + vOpt = FindOptimalCameraPosition(); + } + + // Move the camera to the optimal position + // (it will slide or not depending on the m_bSlide param) + MoveCameraToPosition(vOpt, deltaTime); + + // Either point the camera at the player or MLOOK + if(m_eOrientation == MLOOK) + { + m_rRotation = rRot; + } + else + { + switch(m_ePointType) + { + case IN_DIRECTION: + PointInDirection(rRot); + break; + + case AT_POSITION: + default: + { + LTVector vTemp; + vTemp = vPos + m_TargetPointAtOffset; + PointAtPosition(vTemp, rRot, vOpt); + // g_pLTClient->CPrint("Camera orientation : %0.4f, %0.4f, %0.4f", VEC_EXPAND(m_rRotation.Forward())); + } + break; + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::UpdateFirstPerson() +// +// PURPOSE: Update the position of the camera when in first person +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::UpdateFirstPerson(LTVector vF, LTVector vPos, float fDeltaTime) +{ + vF.y = 0.0f; + vPos += (vF * m_TargetFirstPersonOffset.x); + vPos.y += m_TargetFirstPersonOffset.y; + + // Modify the position so it's always based on the standing height... + + vPos.y += g_pMoveMgr->GetCurrentHeightDifference(); + + // Make sure we don't move the camera up too fast (going up stairs)... + + if (vPos.y > (m_vPos.y + 1.0f)) + { + float fNewY = m_vPos.y; + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (!pMoveMgr) return; + + LTBOOL bFreeMovement = pMoveMgr->IsFreeMovement(); + + if (!bFreeMovement) + { + float fMaxYDiff = g_vtCameraMaxYDifference.GetFloat(); + float fYDiff = (vPos.y - fNewY); + + // Force the camera to never be more than fMaxYDiff away from + // its "real" position... + + if (fYDiff > fMaxYDiff) + { + fNewY += (fYDiff - fMaxYDiff); + fYDiff = fMaxYDiff; + } + + float fVel = fYDiff / g_vtCameraMoveUpTime.GetFloat(); + fVel = fVel < g_vtCameraMoveUpMinVel.GetFloat() ? g_vtCameraMoveUpMinVel.GetFloat() : fVel; + + fNewY += (fDeltaTime * fVel); + + if (fabs(fNewY - vPos.y) > 1.0f) + { + vPos.y = fNewY > vPos.y ? vPos.y : fNewY; + } + } + } + + m_vPos = vPos; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::Apply() +// +// PURPOSE: Matrix apply function +// +// ----------------------------------------------------------------------- // + +LTVector CPlayerCamera::Apply(const LTVector &right, const LTVector &up, const LTVector &forward, const LTVector ©) +{ + LTVector target; + + target.x = copy.x*right.x + copy.y*right.y + copy.z*right.z; + target.y = copy.x*up.x + copy.y*up.y + copy.z*up.z; + target.z = copy.x*forward.x + copy.y*forward.y + copy.z*forward.z; + + return target; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::PointAtPosition() +// +// PURPOSE: Point the camera at a position from a position +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::PointAtPosition(const LTVector &pos, const LTRotation &rRot, const LTVector &pointFrom) +{ + if (!m_pClientDE) return; + + LTVector vAngles; + vAngles.Init(); + + m_rRotation = rRot; + + float diffX = pos.x - m_vPos.x; + float diffY = pos.z - m_vPos.z; + vAngles.y = (float)atan2(diffX, diffY); + + LTVector target, copy; + + copy = pos - pointFrom; + + target = Apply(m_rRotation.Right(), m_rRotation.Up(), m_rRotation.Forward(), copy); + + diffX = target.z; + diffY = target.y; + + + vAngles.x = (float)-atan2(diffY, diffX); + + LTRotation rOldRot; + rOldRot = m_rRotation; + + m_rRotation = LTRotation(VEC_EXPAND(vAngles)); + + // Make sure rotation is valid... + + if (m_rRotation.Up().y < 0) m_rRotation = rOldRot; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::SetCameraState() +// +// PURPOSE: Set the state/orientation of the camera +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::SetCameraState(CameraState eOrientation) +{ + switch(eOrientation) + { + case SOUTHEAST: + m_OptX = m_CameraDistDiag; + m_OptY = m_CameraDistUp; + m_OptZ = -m_CameraDistDiag; + break; + + case EAST: + m_OptX = m_CameraDistBack; + m_OptY = m_CameraDistUp; + m_OptZ = 0; + break; + + case NORTHEAST: + m_OptX = m_CameraDistDiag; + m_OptY = m_CameraDistUp; + m_OptZ = m_CameraDistDiag; + break; + + case NORTH: + m_OptX = 0; + m_OptY = m_CameraDistUp; + m_OptZ = m_CameraDistBack; + break; + + case NORTHWEST: + m_OptX = -m_CameraDistDiag; + m_OptY = m_CameraDistUp; + m_OptZ = m_CameraDistDiag; + break; + + case WEST: + m_OptX = -m_CameraDistBack; + m_OptY = m_CameraDistUp; + m_OptZ = 0; + break; + + case SOUTHWEST: + m_OptX = -m_CameraDistDiag; + m_OptY = m_CameraDistUp; + m_OptZ = -m_CameraDistDiag; + break; + + case SOUTH: + m_OptX = 0; + m_OptY = m_CameraDistUp; + m_OptZ = -m_CameraDistBack; + break; + + case MLOOK: + m_OptX = DEFAULT_CAMERA_DIST_MLOOK_X; + m_OptY = DEFAULT_CAMERA_DIST_MLOOK_Y; + m_OptZ = DEFAULT_CAMERA_DIST_MLOOK_Z; + break; + + default: + break; + } + + m_eOrientation = eOrientation; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::RotateCameraState() +// +// PURPOSE: Rotate the camera clockwise or counterclockwise around +// the target +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::RotateCameraState(LTBOOL bClockwise) +{ + switch(m_eOrientation) + { + case SOUTHEAST: + if(bClockwise) + SetCameraState(SOUTH); + else + SetCameraState(EAST); + break; + + case EAST: + if(bClockwise) + SetCameraState(SOUTHEAST); + else + SetCameraState(NORTHEAST); + break; + + case NORTHEAST: + if(bClockwise) + SetCameraState(EAST); + else + SetCameraState(NORTH); + break; + + case NORTH: + if(bClockwise) + SetCameraState(NORTHEAST); + else + SetCameraState(NORTHWEST); + break; + + case NORTHWEST: + if(bClockwise) + SetCameraState(NORTH); + else + SetCameraState(WEST); + break; + + case WEST: + if(bClockwise) + SetCameraState(NORTHWEST); + else + SetCameraState(SOUTHWEST); + break; + + case SOUTHWEST: + if(bClockwise) + SetCameraState(WEST); + else + SetCameraState(SOUTH); + break; + + case SOUTH: + if(bClockwise) + SetCameraState(SOUTHWEST); + else + SetCameraState(SOUTHEAST); + break; + + default: + break; + + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::MoveCameraToPosition() +// +// PURPOSE: Move the camera to a position over a time period +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::MoveCameraToPosition(LTVector pos, float deltaTime) +{ + if (!m_pClientDE || !m_hTarget) return; + + if (m_eCameraMode == GOINGFIRSTPERSON) + { + m_eCameraMode = FIRSTPERSON; + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + + LTVector vF = rRot.Forward(); + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hTarget, &vPos); + + vF.y = 0.0f; + vPos += (vF * m_TargetFirstPersonOffset.x); + vPos.y += m_TargetFirstPersonOffset.y; + + m_vPos = vPos; + + PointInDirection(rRot); + return; + } + + LTVector dir; + dir = (pos - m_vPos); + + float multiplier = 1.0f; // 0.5f; + + LTVector toMove; + toMove = (dir * multiplier); + + float moveMag; + + if (m_bSlide) + { + moveMag = toMove.Length(); + + if (moveMag > dir.Length()) + { + moveMag = dir.Length(); + } + + if (toMove.x != 0.0f || toMove.y != 0.0f || toMove.z != 0.0f) + { + toMove.Normalize(); + } + + m_vPos += (toMove * moveMag); + } + else + { + m_vPos = pos; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::FindOptimalCameraPosition() +// +// PURPOSE: Find the optimal camera position +// +// ----------------------------------------------------------------------- // + +LTVector CPlayerCamera::FindOptimalCameraPosition() +{ + LTVector pos; + VEC_INIT(pos); + + if (!m_pClientDE || !m_hTarget) return pos; + + LTVector dir; + float distToOptimal; + LTVector TargetPlusOffset; + + LTVector vTargetPos; + g_pLTClient->GetObjectPos(m_hTarget, &vTargetPos); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + + if (vTargetPos.NearlyEquals(m_vLastTargetPos, 1.0f) && (rRot == m_rLastTargetRot)) + { + return m_vLastOptPos; + } + else + { + m_vLastTargetPos = vTargetPos; + m_rLastTargetRot = rRot; + } + + LTVector vTemp; + vTemp = vTargetPos + m_TargetChaseOffset; + TargetPlusOffset = vTemp; + + // pos = TargetPlusOffset + right*m_OptX + up*m_OptY + forward*m_OptZ; + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + pos = TargetPlusOffset + + (rRot.Right() * m_OptX) + + (rRot.Up() * m_OptY) + + (rRot.Forward() * m_OptZ); + + vTemp = TargetPlusOffset - pos; + distToOptimal = vTemp.Length(); + + dir = pos - TargetPlusOffset; + dir.Normalize(); + + iQuery.m_From = TargetPlusOffset; + iQuery.m_To = pos; + + if (m_pClientDE->IntersectSegment(&iQuery, &iInfo)) + { + vTemp = iInfo.m_Point - TargetPlusOffset; + + // If there was something in the way, move in front of that thing. + if (vTemp.Length() < distToOptimal) + { + pos = iInfo.m_Point + iInfo.m_Plane.m_Normal; + } + } + + + CalcNonClipPos(pos, rRot); + + m_vLastOptPos = pos; + + return pos; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::PrintVector() +// +// PURPOSE: Print it! +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::PrintVector(LTVector v) +{ + if (!m_pClientDE) return; + + char buf[50]; + sprintf(buf, "x = %f, y = %f, z = %f", v.x, v.y, v.z); + m_pClientDE->CPrint(buf); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::StartCircle() +// +// PURPOSE: Start the circle...jerk! +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::StartCircle(float HeightOffset, float Radius, float PointAtOffset, float Time) +{ + if (!m_pClientDE || !m_hTarget) return; + + if(m_eCameraMode != CIRCLING) + { + m_CircleHeightOffset = HeightOffset; + m_CircleRadius = Radius; + m_CircleHeightOffset = PointAtOffset; + m_CircleTime = Time; + m_bStartCircle = LTFALSE; + + LTVector vTargetPos, up, right, forward; + LTRotation rRot; + + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + g_pLTClient->GetObjectPos(m_hTarget, &vTargetPos); + + SaveState(); + + SaveCameraMode(); + //GetClientShell().CPrint("Going circle"); + m_eCameraMode = CIRCLING; + + m_CircleStartTime = m_pClientDE->GetTime(); + + + m_vPos = vTargetPos + + ((rRot.Up() * m_CircleHeightOffset) - + (rRot.Forward() * m_CircleRadius)); + + // PointAtPosition(m_Target.m_Pos+CreateVector(0,m_CircleHeightOffset,0), m_Target.m_Angles, m_Pos); + LTVector vTemp = vTargetPos + LTVector(0.0f, m_CircleHeightOffset, 0.0f); + + PointAtPosition(vTemp, rRot, m_vPos); + + // m_SaveAnglesY = m_Angles.y; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CircleAroundTarget() +// +// PURPOSE: Circle the target +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::CircleAroundTarget() +{ + if (!m_pClientDE || !m_hTarget) return; + + float diff = (m_pClientDE->GetTime() - m_CircleStartTime) / m_CircleTime; + + if(diff >= 1.0f) + { + RestoreState(); + RestoreCameraMode(); + //GetClientShell().CPrint("Done with circle"); + return; + } + + //m_Angles.y = m_SaveAnglesY + (MATH_CIRCLE*diff); + m_rRotation.Rotate(m_rRotation.Up(), MATH_CIRCLE*diff); + + LTVector vTargetPos; + LTRotation rRot; + g_pLTClient->GetObjectPos(m_hTarget, &vTargetPos); + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + + m_vPos = vTargetPos + + (rRot.Up() * m_CircleHeightOffset) - + (rRot.Forward() * m_CircleRadius); + + LTVector vTemp = vTargetPos + LTVector(0.0f, m_CircleHeightOffset, 0.0f); + + PointAtPosition(vTemp, rRot, m_vPos); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::VCompare() +// +// PURPOSE: Compare two vectors +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerCamera::VCompare(LTVector a, LTVector b) +{ + if((fabs(a.x - b.x) > 5.0f) || (fabs(a.y - b.y) > 5.0f) || (fabs(a.z - b.z) > 5.0f)) + return LTFALSE; + else + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::AttachToObject() +// +// PURPOSE: Attach camera to an object +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::AttachToObject(HLOCALOBJ hObj) +{ + m_hTarget = hObj; + + // Initialize our position to that of the object... + + if (m_hTarget && m_pClientDE) + { + g_pLTClient->GetObjectPos(m_hTarget, &m_vPos); + + // Assume for now first person... + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hTarget, &rRot); + + LTVector vF = rRot.Forward(); + vF.y = 0.0f; + + m_vPos += (vF * m_TargetFirstPersonOffset.x); + m_vPos.y += m_TargetFirstPersonOffset.y; + } +} + +void CPlayerCamera::GoFirstPerson() +{ + if((m_eCameraMode != GOINGFIRSTPERSON) && (m_eCameraMode != FIRSTPERSON)) + { + m_GoingFirstPersonStart = g_pLTClient->GetTime(); + m_eCameraMode = GOINGFIRSTPERSON; + CameraUpdate(g_pGameClientShell->GetFrameTime()); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CreateCameraCollisionObject() +// +// PURPOSE: Create an object to use for collision detection when calculating a no-clip pos... +// +// ----------------------------------------------------------------------- // + +bool CPlayerCamera::CreateCameraCollisionObject() +{ + if( !g_pLTClient ) + return false; + + ObjectCreateStruct ocs; + + SAFE_STRCPY( ocs.m_Filename, CAMERA_COLLISION_MODEL ); + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_DONTFOLLOWSTANDING | FLAG_NOSLIDING; + ocs.m_Flags2 = FLAG2_PLAYERCOLLIDE; + ocs.m_Pos.Init(); + + float fScale = g_vtCameraCollisionObjScale.GetFloat(); + ocs.m_Scale.Init( fScale, fScale, fScale ); + + m_hCollisionObject = g_pLTClient->CreateObject( &ocs ); + if( !m_hCollisionObject ) + return false; + + g_pPhysicsLT->SetObjectDims( m_hCollisionObject, <Vector( fScale, fScale, fScale ), 0 ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CalcNonClipPos() +// +// PURPOSE: Get a position that won't clip into the world or other objects... +// Doesn't actullay move the camera to that position! +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::CalcNonClipPos( LTVector & vPos, LTRotation & rRot ) +{ + LTVector vTemp, vU, vR, vF; + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + if( !m_hCollisionObject || (g_vtCameraCollisionUseObject.GetFloat() < 1.0f) ) + { + CalcNoClipPos_WithoutObject( vPos, rRot ); + return; + } + + LTVector vCamPos; + g_pLTClient->GetObjectPos( g_pPlayerMgr->GetCamera(), &vCamPos ); + + g_pLTClient->SetObjectPos( m_hCollisionObject, &vCamPos ); + g_pLTClient->SetObjectRotation( m_hCollisionObject, &rRot ); + + if( g_vtCameraCollisionObjScale.GetFloat() != DEFAULT_COLLISION_MODEL_SCALE ) + { + float fScale = g_vtCameraCollisionObjScale.GetFloat(); + LTVector vScale( fScale, fScale, fScale ); + + g_pPhysicsLT->SetObjectDims( m_hCollisionObject, &vScale, 0 ); + } + + uint32 dwMoveObjFlags; + HOBJECT hMoveObj = g_pMoveMgr->GetObject(); + + g_pCommonLT->GetObjectFlags( hMoveObj, OFT_Flags, dwMoveObjFlags ); + + // Set objects the camera is inside of to be non-solid... + + g_pCommonLT->SetObjectFlags( hMoveObj, OFT_Flags, 0, FLAG_SOLID ); + + // Our collision object needs to be solid while moving... + + g_pCommonLT->SetObjectFlags( m_hCollisionObject, OFT_Flags, FLAG_SOLID, FLAG_SOLID ); + + // Do the collison checking and get the final pos... + + g_pPhysicsLT->MoveObject( m_hCollisionObject, &vPos, 0 ); + g_pLTClient->GetObjectPos( m_hCollisionObject, &vPos ); + + // Set the objects to their previous solidity... + + g_pCommonLT->SetObjectFlags( hMoveObj, OFT_Flags, dwMoveObjFlags, FLAG_SOLID ); + g_pCommonLT->SetObjectFlags( m_hCollisionObject, OFT_Flags, 0, FLAG_SOLID ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerCamera::CalcNoClipPos_WithoutObject() +// +// PURPOSE: Just use ray casts to test for collision... +// +// ----------------------------------------------------------------------- // + +void CPlayerCamera::CalcNoClipPos_WithoutObject( LTVector & vPos, LTRotation & rRot ) +{ + LTVector vTemp, vU, vR, vF; + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + + uint32 dwFlags = INTERSECT_OBJECTS | IGNORE_NONSOLID | INTERSECT_HPOLY; + + // Make sure we aren't clipping into walls... + + float fClipDistance = g_vtCameraClipDistance.GetFloat(); + + + // Check for walls to the right... + + vTemp = (vR * fClipDistance); + vTemp += vPos; + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = (vR * -fDist); + vPos += vTemp; + } + else + { + // If we didn't adjust for a wall to the right, check walls to the left... + + vTemp = (vR * -fClipDistance); + vTemp += vPos; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = (vR * fDist); + vPos += vTemp; + } + } + + // Check for ceilings... + + vTemp = vU * fClipDistance; + vTemp += vPos; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = vU * -fDist; + vPos += vTemp; + } + else + { + // If we didn't hit any ceilings, check for floors... + + vTemp = vU * -fClipDistance; + vTemp += vPos; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo)) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = vU * fDist; + vPos += vTemp; + } + } + + // Check infront of us... + + vTemp = vF * fClipDistance; + vTemp += vPos; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if( g_pLTClient->IntersectSegment( &iQuery, &iInfo )) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = vF * -fDist; + vPos += vTemp; + } + else + { + vTemp = vF * -fClipDistance; + vTemp += vPos; + + iQuery.m_Flags = dwFlags; + iQuery.m_From = vPos; + iQuery.m_To = vTemp; + + if( g_pLTClient->IntersectSegment( &iQuery, &iInfo )) + { + vTemp = iInfo.m_Point - vPos; + float fDist = (fClipDistance - vTemp.Length()); + + vTemp = vU * -fDist; + vPos += vTemp; + } + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerCamera.h b/Jack/ClientShellDLL/PlayerCamera.h new file mode 100644 index 00000000..9afb83f6 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerCamera.h @@ -0,0 +1,206 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerCamera.cpp +// +// PURPOSE : PlayerCamera - Implementation +// +// CREATED : 10/5/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYER_CAMERA_H__ +#define __PLAYER_CAMERA_H__ + +#include "iltclient.h" + + +class CPlayerCamera +{ + public: + + enum CameraState { SOUTH, SOUTHEAST, EAST, NORTHEAST, NORTH, + NORTHWEST, WEST, SOUTHWEST, MLOOK, HOLD }; + + enum CameraMode { FIRSTPERSON, CHASE, GOINGFIRSTPERSON, + CIRCLING, SCRIPT }; + + enum CameraPoint { AT_POSITION, IN_DIRECTION, AUTOMATIC }; + + // Constructor + CPlayerCamera(); + ~CPlayerCamera(); + + LTBOOL Init(ILTClient* pClientDE); + + // Update the position & orientation of the camera based on the target + void CameraUpdate(float deltaTime); + + // Set the state/orientation of the camera + void SetCameraState(CameraState eOrientation); + CameraState GetCameraState() const { return m_eOrientation; } + + void StartCircle(float HeightOffset, float Radius, + float PointAtOffset, float Time); + + // Attach the camera to an object + void AttachToObject(HLOCALOBJ hObj); + + + // Get the object that the camera is attached to + HLOCALOBJ GetAttachedObject() + { + return m_hTarget; + } + + // Save the camera's current orientation + void SaveState() + { + m_eSaveOrientation = m_eOrientation; + } + + // Restore the camera's last saved orientation + void RestoreState() + { + SetCameraState(m_eSaveOrientation); + } + + void GoChaseMode() + { + m_eCameraMode = CHASE; + } + + void GoFirstPerson(); + + LTBOOL IsChaseView() const { return (m_eCameraMode == CHASE); } + LTBOOL IsFirstPerson() const { return (m_eCameraMode == FIRSTPERSON); } + LTBOOL IsGoingFirstPerson() const { return (m_eCameraMode == GOINGFIRSTPERSON); } + + const LTRotation &GetRotation() const { return m_rRotation; } + const LTVector &GetPos() const { return m_vPos; } + + void SetDistUp(float f) { m_CameraDistUp = f; } + void SetDistBack(float f) { m_CameraDistBack = f; } + void SetDistDiag(float f) { m_CameraDistDiag = f; } + void SetPointAtOffset(LTVector v) { VEC_COPY(m_TargetPointAtOffset, v); } + void SetChaseOffset(LTVector v) { VEC_COPY(m_TargetChaseOffset, v); } + void SetFirstPersonOffset(LTVector v) { VEC_COPY(m_TargetFirstPersonOffset, v); } + + void SetOptZ(float f) { m_OptZ = f; } + + void CalcNonClipPos( LTVector & vPos, LTRotation & rRot ); + void CalcNoClipPos_WithoutObject( LTVector & vPos, LTRotation & rRot ); + + private : // Data members + + // Target object for the camera to follow + HLOCALOBJ m_hTarget; + ILTClient* m_pClientDE; + + LTRotation m_rRotation; + LTVector m_vPos; + + LTVector m_vLastTargetPos; // The last position of our target + LTVector m_vLastOptPos; // Last optimal camera pos + LTRotation m_rLastTargetRot; + + CameraState m_eOrientation; + CameraState m_eSaveOrientation; + + CameraMode m_eCameraMode; + CameraMode m_eSaveCameraMode; + + // Should the camera point at a position, in a direction, or dynamically + CameraPoint m_ePointType; + + // Current optimal camera positions and orientation variables + float m_OptX, m_OptY, m_OptZ; + + // Optimal camera distance from the target + float m_CameraDistBack, m_CameraDistUp, m_CameraDistDiag; + + // Does the camera slide or not + LTBOOL m_bSlide; + + // Offset from the target's position. + // If a wall is between the optimal camera position and the target, the camera + // will move closer to the target's position added to this offset. (Chase view) + LTVector m_TargetChaseOffset; + + // Offset from the target's position... + // The camera will point at this potision (Chase view) + LTVector m_TargetPointAtOffset; + + // How high from the center of the target should the camera be during a circle + float m_CircleHeightOffset; + // What is the radius of the circle + float m_CircleRadius; + // How long in seconds should it take for a circle to complete + float m_CircleTime; + + float m_GoingFirstPersonStart; // start time for going first person + float m_GoingFirstPersonTransition; // transition time + + LTBOOL m_bStartCircle; + float m_CircleStartTime; + float m_SaveAnglesY; + LTBOOL m_bRestoreFirstPerson; + + LTVector m_TargetFirstPersonOffset; + + HOBJECT m_hCollisionObject; + + // Internal functions.. + private: + + // Matrix apply function. + LTVector Apply(const LTVector &right, const LTVector &up, const LTVector &forward, const LTVector ©); + + // Point the camera at a position from a position + void PointAtPosition(const LTVector &pos, const LTRotation &rot, const LTVector &pointFrom); + + // Point the camera in a direction + void PointInDirection(const LTRotation &rRot) + { + m_rRotation = rRot; + } + + // Dynamically point the camera based on the distance between the camera and the target + void PointAutomatic(LTVector pos, LTVector angles, LTVector pointFrom) + { + } + + // Rotate the camera clockwise or counterclockwise around the target + void RotateCameraState(LTBOOL bClockwise); + + // Move the camera to a position over a time period + void MoveCameraToPosition(LTVector pos, float deltaTime); + + // Find the optimal camera position + LTVector FindOptimalCameraPosition(); + + void PrintVector(LTVector v); + + void CircleAroundTarget(); + + void SaveCameraMode() + { + m_eSaveCameraMode = m_eCameraMode; + } + + void RestoreCameraMode() + { + if((m_eCameraMode == CIRCLING) && (m_eSaveCameraMode == FIRSTPERSON)) + GoFirstPerson(); + else + m_eCameraMode = m_eSaveCameraMode; + } + + void UpdateFirstPerson(LTVector vF, LTVector vPos, float fDeltaTime); + + LTBOOL VCompare(LTVector a, LTVector b); + + bool CreateCameraCollisionObject(); +}; + + +#endif // __PLAYER_CAMERA_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerLureFX.cpp b/Jack/ClientShellDLL/PlayerLureFX.cpp new file mode 100644 index 00000000..ddfc0c9f --- /dev/null +++ b/Jack/ClientShellDLL/PlayerLureFX.cpp @@ -0,0 +1,166 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerLureFX.cpp +// +// PURPOSE : PlayerLure FX - Implementation +// +// CREATED : 01/28/02 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PlayerLureFX.h" +#include "GameClientShell.h" +#include "CMoveMgr.h" + +PlayerLureFX::PlayerLureFXList PlayerLureFX::m_lstPlayerLureFXs; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlayerLureFX::PlayerLureFX +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +PlayerLureFX::PlayerLureFX( ) +{ + m_eCameraFreedom = kPlayerLureCameraFreedomNone; + m_bAllowWeapon = false; + m_bRetainOffsets = false; + m_nPlayerLureId = 0; + m_bCalcInitialOffset = true; + + // Add this instance to a list of all playerlurefx's. + m_lstPlayerLureFXs.push_back( this ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlayerLureFX::~PlayerLureFX +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +PlayerLureFX::~PlayerLureFX( ) +{ + // Erase this instance from the list of all PlayerLureFX's. + PlayerLureFXList::iterator it = m_lstPlayerLureFXs.begin( ); + while( it != m_lstPlayerLureFXs.end( )) + { + if( *it == this ) + { + m_lstPlayerLureFXs.erase( it ); + break; + } + + it++; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlayerLureFX::Init +// +// PURPOSE: Init the weapon fx +// +// ----------------------------------------------------------------------- // + +LTBOOL PlayerLureFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + char szString[256]; + + // The actual HOBJECT may not be on the client yet. We pass the id so we can + // poll for it later. + m_nPlayerLureId = pMsg->Readuint32( ); + m_eCameraFreedom = ( PlayerLureCameraFreedom )pMsg->Readuint8( ); + BYTE nFlags = pMsg->Readuint8( ); + pMsg->ReadString( szString, ARRAY_LEN( szString )); + m_sDeathFX = szString; + m_bAllowWeapon = !!( nFlags & ePlayerLureFlagsAllowWeapon ); + m_bRetainOffsets = !!( nFlags & ePlayerLureFlagsRetainOffsets ); + m_bBicycle = !!( nFlags & ePlayerLureFlagsBicycle ); + if( m_eCameraFreedom == kPlayerLureCameraFreedomLimited ) + { + m_fLimitedYawLeft = pMsg->Readfloat( ); + m_fLimitedYawRight = pMsg->Readfloat( ); + m_fLimitedPitchDown = pMsg->Readfloat( ); + m_fLimitedPitchUp = pMsg->Readfloat( ); + } + + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlayerLureFX::Reset +// +// PURPOSE: Resets the lure when the player is commanded to follow it. +// +// ----------------------------------------------------------------------- // + +bool PlayerLureFX::Reset( ) +{ + // Get the client player object. + HOBJECT hObj = g_pMoveMgr->GetObject( ); + if( !hObj ) + { + ASSERT( !"PlayerLureFX::GetOffsetTransform: Missing client-side player object." ); + return false; + } + + // Get the client player's position. + LTransform playerTransform; + g_pLTClient->GetObjectPos( hObj, &playerTransform.m_Pos ); + g_pLTClient->GetObjectRotation( hObj, &playerTransform.m_Rot ); + playerTransform.m_Scale.Init( 1.0f, 1.0f, 1.0f ); + + // Get the playerlure's transform. + LTransform playerLureTransform; + g_pLTClient->GetObjectPos( GetServerObj( ), &playerLureTransform.m_Pos ); + g_pLTClient->GetObjectRotation( GetServerObj( ), &playerLureTransform.m_Rot ); + playerLureTransform.m_Scale.Init( 1.0f, 1.0f, 1.0f ); + + // Find the offset transform. + ILTTransform *pTransformLT = g_pLTClient->GetTransformLT(); + pTransformLT->Difference( m_offsetTransform, playerTransform, playerLureTransform ); + m_offsetTransform.m_Scale.Init( 1.0f, 1.0f, 1.0f ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlayerLureFX::GetPlayerLureFX +// +// PURPOSE: Gets the playerlurefx object given a playerlureid it's associated with. +// +// ----------------------------------------------------------------------- // + +PlayerLureFX* PlayerLureFX::GetPlayerLureFX( uint32 nPlayerLureId ) +{ + PlayerLureFX* pPlayerLureFX = NULL; + + // Find the id in the list of playerlurefx's. + PlayerLureFXList::iterator it = m_lstPlayerLureFXs.begin( ); + while( it != m_lstPlayerLureFXs.end( )) + { + if( ( *it )->GetPlayerLureId( ) == nPlayerLureId ) + { + pPlayerLureFX = *it; + } + + it++; + } + + return pPlayerLureFX; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerLureFX.h b/Jack/ClientShellDLL/PlayerLureFX.h new file mode 100644 index 00000000..857bbcf0 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerLureFX.h @@ -0,0 +1,82 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerLureFX.h +// +// PURPOSE : PlayerLureFX +// +// CREATED : 01/28/02 +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYERLUREFX_H__ +#define __PLAYERLUREFX_H__ + +#include "SpecialFX.h" +#include "ClientServerShared.h" + + +class PlayerLureFX : public CSpecialFX +{ + public : + + PlayerLureFX(); + ~PlayerLureFX(); + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct) { ASSERT( !"Not supported." ); return FALSE; } + + virtual uint32 GetSFXID() { return SFX_PLAYERLURE_ID; } + + // Resets the lure when the player is commanded to follow it. + bool Reset( ); + bool Reset( const LTransform &offset ) { m_offsetTransform = offset; return true; } + + PlayerLureCameraFreedom GetCameraFreedom( ) { return m_eCameraFreedom; } + bool GetAllowWeapon( ) { return m_bAllowWeapon; } + bool GetRetainOffsets( ) { return m_bRetainOffsets; } + uint32 GetPlayerLureId( ) { return m_nPlayerLureId; } + bool GetBicycle( ) { return m_bBicycle; } + + void GetLimitedRanges( float& fLimitedYawLeft, float& fLimitedYawRight, float& fLimitedPitchDown, float& fLimitedPitchUp ) + { + fLimitedYawLeft = m_fLimitedYawLeft; + fLimitedYawRight = m_fLimitedYawRight; + fLimitedPitchDown = m_fLimitedPitchDown; + fLimitedPitchUp = m_fLimitedPitchUp; + } + + // Gets the offset to be used when following the lure. + LTransform const& GetOffsetTransform( ) { return m_offsetTransform; } + + char const* GetDeathFX( ) { return m_sDeathFX.c_str( ); } + + // Get a playerlurefx object based on a playerlureid from the server. The HOBJECT + // may not be on the client when the player is first told to followlure, but should + // sometime the same frame. + static PlayerLureFX* GetPlayerLureFX( uint32 nPlayerLureId ); + + private : + + PlayerLureCameraFreedom m_eCameraFreedom; + bool m_bAllowWeapon; + bool m_bRetainOffsets; + bool m_bBicycle; + DWORD m_nPlayerLureId; + LTransform m_offsetTransform; + + bool m_bCalcInitialOffset; + + float m_fLimitedYawLeft; + float m_fLimitedYawRight; + float m_fLimitedPitchDown; + float m_fLimitedPitchUp; + + // ClientFX to play if we die while using lure. + std::string m_sDeathFX; + + typedef std::vector< PlayerLureFX* > PlayerLureFXList; + static PlayerLureFXList m_lstPlayerLureFXs; +}; + + +#endif // __PLAYERLUREFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerMgr.cpp b/Jack/ClientShellDLL/PlayerMgr.cpp new file mode 100644 index 00000000..2af8276b --- /dev/null +++ b/Jack/ClientShellDLL/PlayerMgr.cpp @@ -0,0 +1,5822 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerMgr.cpp +// +// PURPOSE : Implementation of class used to manage the client player +// +// (c) 2001-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "PlayerMgr.h" +#include "AttachButeMgr.h" +#include "BodyFX.h" +#include "CMoveMgr.h" +#include "CameraFX.h" +#include "CameraOffsetMgr.h" +#include "ClientUtilities.h" +#include "ClientWeaponMgr.h" +#include "FlashLight.h" +#include "GadgetDisabler.h" +#include "GameClientShell.h" +#include "HeadBobMgr.h" +#include "LeanMgr.h" +#include "MsgIDs.h" +#include "PlayerCamera.h" +#include "PlayerShared.h" +#include "Searcher.h" +#include "VarTrack.h" +#include "VehicleMgr.h" +#include "VisionModeMgr.h" +#include "VolumeBrushFX.h" +#include "TargetMgr.h" +#include "MissionMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ClientButeMgr.h" +#include "DynamicOccluderVolumeFX.h" +#include "TriggerFX.h" +#include "PlayerLureFX.h" +#include "CharacterFX.h" +#include "PolyGridFX.h" +#include "PlayerViewAttachmentMgr.h" +#include "LTEulerAngles.h" +#include "ChassisPieceFX.h" +#include "AutoTargetMgr.h" +#include "ChassisButeMgr.h" +#include "HUDDistance.h" + +CPlayerMgr* g_pPlayerMgr = NULL; + +#define MAX_SHAKE_AMOUNT 10.0f + +#define FOVX_ZOOMED 20.0f +#define FOVX_ZOOMED1 7.0f +#define FOVX_ZOOMED2 2.0f +#define ZOOM_TIME 0.5f +#define LOD_ZOOMADJUST -5.0f +#define DEFAULT_LOD_OFFSET 0.0f + +#define DEFAULT_CSENDRATE 15.0f +#define DEFAULT_CSENDRATE_MIN 2.0f + +namespace +{ + bool g_bCinChangedNumModelShadows = false; + int g_nCinSaveNumModelShadows = 0; + const g_kMaxNumberOfCinShadows = 10; + uint8 s_nLastCamType = CT_FULLSCREEN; + float s_fDeadTimer = 0.0f; + float s_fDeathDelay = 0.0f; + LTVector g_vSVModelColor; // model color modifier for spy vision + int g_nSaveSpyVisionShadows = 0; + float s_fRecoilDecaySpeed = 0.0f; +} + +LTVector g_vPlayerCameraOffset = g_kvPlayerCameraOffset; + +extern bool g_bScreenShotMode; + + +void SVModelHook(ModelHookData *pData, void *pUser); + + +VarTrack g_CV_CSendRate; // The SendRate console variable. +VarTrack g_CV_CSendRate_Min; // The SendRate_Min console variable. +VarTrack g_vtPlayerRotate; // The PlayerRotate console variable +VarTrack g_vtCamZoom1MaxDist; +VarTrack g_vtCamZoom2MaxDist; +VarTrack g_vtFOVXNormal; +VarTrack g_vtFOVYNormal; +VarTrack g_vtFOVYMaxUW; +VarTrack g_vtFOVYMinUW; +VarTrack g_vtUWFOVRate; +VarTrack g_vtRespawnWaitTime; +VarTrack g_vtMultiplayerRespawnWaitTime; +VarTrack g_vtDoomsdayRespawnWaitTime; +VarTrack g_vtCamRotInterpTime; +VarTrack g_vtScreenFadeInTime; +VarTrack g_vtScreenFadeOutTime; +VarTrack g_vtChaseCamPitchAdjust; +VarTrack g_vtChaseCamOffset; +VarTrack g_vtChaseCamDistUp; +VarTrack g_vtChaseCamDistBack; +VarTrack g_vtNormalTurnRate; +VarTrack g_vtFastTurnRate; +VarTrack g_vtLookUpRate; +VarTrack g_vtCameraSwayXFreq; +VarTrack g_vtCameraSwayYFreq; +VarTrack g_vtCameraSwayXSpeed; +VarTrack g_vtCameraSwayYSpeed; +VarTrack g_vtCameraSwayDuckMult; +VarTrack g_vtModelGlowTime; +VarTrack g_vtModelGlowMin; +VarTrack g_vtModelGlowMax; +VarTrack g_vtActivateOverride; +VarTrack g_vtCamDamage; +VarTrack g_vtCamDamagePitch; +VarTrack g_vtCamDamageRoll; +VarTrack g_vtCamDamageTime1; +VarTrack g_vtCamDamageTime2; +VarTrack g_vtCamDamageMinPitchVal; +VarTrack g_vtCamDamageMaxPitchVal; +VarTrack g_vtCamDamageMinRollVal; +VarTrack g_vtCamDamageMaxRollVal; +VarTrack g_vtCamDamagePitchMin; +VarTrack g_vtCamDamageRollMin; +VarTrack g_vtCamDamageFXOffsetX; +VarTrack g_vtCamDamageFXOffsetY; +VarTrack g_vtCamDamageFXOffsetZ; +VarTrack g_vtAlwaysHUD; +VarTrack g_vtDamageFadeRate; +VarTrack g_vtAdaptiveMouse; +VarTrack g_vtAdaptiveMouseMaxOffset; +VarTrack g_vtShowSoundFilterInfo; +VarTrack g_vtMultiplayerDeathCamMoveTime; +VarTrack g_vtMultiAttachDeathCamMaxTime; +VarTrack g_vtAttachedCamInterpolationRate; + +extern VarTrack g_vtUseSoundFilters; + +// Utility function for comparing two messages that should probably go in a shared file somewhere. +bool AreMessagesEqual(ILTMessage_Read *pLHS, ILTMessage_Read *pRHS) +{ + if (!pLHS || !pRHS) + return pLHS == pRHS; + + if (pLHS->Size() != pRHS->Size()) + return false; + + uint32 nLHSPos = pLHS->Tell(); + uint32 nRHSPos = pRHS->Tell(); + + pLHS->SeekTo(0); + pRHS->SeekTo(0); + bool bEqual = true; + while (bEqual && !pLHS->EOM()) + bEqual &= pLHS->Readuint32() == pRHS->Readuint32(); + + pLHS->SeekTo(nLHSPos); + pRHS->SeekTo(nRHSPos); + + return bEqual; +} + +// --------------------------------------------------------------------------- // +// Constructor & Destructor +// --------------------------------------------------------------------------- // +CPlayerMgr::CPlayerMgr() + : m_bServerAccurateRotation( false ) + , m_bSendCameraOffsetToServer( false ) +{ + m_pHeadBobMgr = debug_new( CHeadBobMgr ); ASSERT( 0 != m_pHeadBobMgr ); + m_pCameraOffsetMgr = debug_new( CCameraOffsetMgr ); ASSERT( 0 != m_pCameraOffsetMgr ); + m_pFlashLight = debug_new( CFlashLightPlayer ); ASSERT( 0 != m_pFlashLight ); + m_pGadgetDisabler = debug_new( CGadgetDisabler ); ASSERT( 0 != m_pGadgetDisabler ); + m_pSearcher = debug_new( CSearcher ); ASSERT( 0 != m_pSearcher ); + m_pMoveMgr = debug_new( CMoveMgr ); ASSERT( 0 != m_pMoveMgr ); + m_pVisionModeMgr = debug_new( CVisionModeMgr ); ASSERT( 0 != m_pVisionModeMgr ); + m_pAttachButeMgr = debug_new( CAttachButeMgr ); ASSERT( 0 != m_pAttachButeMgr ); + m_pLeanMgr = debug_new( CLeanMgr ); ASSERT( 0 != m_pLeanMgr ); + m_pClientWeaponMgr = debug_new( CClientWeaponMgr ); ASSERT( 0 != m_pClientWeaponMgr ); + m_pPlayerCamera = debug_new( CPlayerCamera ); ASSERT( 0 != m_pPlayerCamera ); + m_pPVAttachmentMgr = debug_new( CPlayerViewAttachmentMgr ); ASSERT( 0 != m_pPVAttachmentMgr ); + +// InitTargetMgr(); + + m_hCamera = NULL; + m_bStrafing = LTFALSE; + m_bHoldingMouseLook = LTFALSE; + m_fYawBackup = 0.0f; + m_fPitchBackup = 0.0f; + m_bRestoreOrientation = LTFALSE; + m_bAllowPlayerMovement = LTTRUE; + m_bLastAllowPlayerMovement = LTTRUE; + m_bWasUsingExternalCamera = LTFALSE; + m_bUsingExternalCamera = LTFALSE; + m_bCamIsListener = LTFALSE; + m_bCamera = LTFALSE; + m_bStartedPlaying = LTFALSE; + m_vSVLightScale.Init(1, 1, 1); + + m_vShakeAmount.Init(); + m_bSpectatorMode = LTFALSE; + m_bInvisibleMode = LTFALSE; + + m_fEarliestRespawnTime = 0.0f; + m_bCancelRevive = false; + + m_rRotation.Init(); + + m_fPitch = 0.0f; + m_fYaw = 0.0f; + m_fRoll = 0.0f; + + m_fPlayerPitch = 0.0f; + m_fPlayerYaw = 0.0f; + m_fPlayerRoll = 0.0f; + + m_fModelAttachPitch = 0.0f; + m_fModelAttachYaw = 0.0f; + m_fModelAttachRoll = 0.0f; + + m_fFireJitterPitch = 0.0f; + m_fFireJitterYaw = 0.0f; + + m_fCurrentRecoil = 0.0f; + m_fLastFireTime = 0.0f; + + m_dwPlayerFlags = 0; + m_ePlayerState = PS_UNKNOWN; + + m_nZoomView = 0; + m_bZooming = LTFALSE; + m_bZoomingIn = LTFALSE; + m_fSaveLODScale = DEFAULT_LOD_OFFSET; + + m_eCurContainerCode = CC_NO_CONTAINER; + m_nSoundFilterId = 0; + m_nGlobalSoundFilterId = 0; + m_bInSafetyNet = false; + + m_fContainerStartTime = -1.0f; + m_fFovXFXDir = 1.0f; + + m_vCurModelGlow.Init(127.0f, 127.0f, 127.0f); + m_vMaxModelGlow.Init(255.0f, 255.0f, 255.0f); + m_vMinModelGlow.Init(50.0f, 50.0f, 50.f); + m_fModelGlowCycleTime = 0.0f; + m_bModelGlowCycleUp = LTTRUE; + + m_bCameraPosInited = LTFALSE; + + m_bPlayerUpdated = LTFALSE; + + m_bCameraAttachedToHead = false; + m_bLerpAttachedCamera = false; + + m_nPlayerInfoChangeFlags = 0; + m_fPlayerInfoLastSendTime = 0.0f; + m_fPlayerInfoLastUniqueSendTime = 0.0f; + m_nPlayerInfoLastCompPitch = 0; + m_nPlayerInfoLastCompRot = 0; + + m_bUseWorldFog = LTTRUE; + m_hContainerSound = NULL; + + m_bStartedDuckingDown = LTFALSE; + m_bStartedDuckingUp = LTFALSE; + m_fCamDuck = 0.0f; + m_fDuckDownV = -75.0f; + m_fDuckUpV = 75.0f; + m_fMaxDuckDistance = -20.0f; + m_fStartDuckTime = 0.0f; + + m_nCarryingObject = CFX_CARRY_NONE; + m_bCanDropCarriedObject = false; + + m_fDistanceIndicatorPercent = -1.0f; + m_hDistanceIndicatorIcon = LTNULL; + + m_nPreGadgetWeapon = WMGR_INVALID_ID; + m_bChangingToGadget = false; + m_bSwitchingWeapons = false; + + m_fMultiplayerDeathCamMoveTimer = 0.0f; + m_fMultiAttachDeathCamTimer = 0.0f; + + m_bManualAim = false; + + m_bRespawnRequested = false; + m_vServerRot.Init(); +} + +CPlayerMgr::~CPlayerMgr() +{ + if ( m_pHeadBobMgr ) + { + debug_delete( m_pHeadBobMgr ); + m_pHeadBobMgr = 0; + } + + if ( m_pCameraOffsetMgr ) + { + debug_delete( m_pCameraOffsetMgr ); + m_pCameraOffsetMgr = 0; + } + + if ( m_pFlashLight ) + { + debug_delete( m_pFlashLight ); + m_pFlashLight = 0; + } + + if ( m_pGadgetDisabler ) + { + debug_delete( m_pGadgetDisabler ); + m_pGadgetDisabler = 0; + } + + if ( m_pSearcher ) + { + debug_delete( m_pSearcher ); + m_pSearcher = 0; + } + + if ( m_pMoveMgr ) + { + debug_delete( m_pMoveMgr ); + m_pMoveMgr = 0; + } + + if ( m_pVisionModeMgr ) + { + debug_delete( m_pVisionModeMgr ); + m_pVisionModeMgr = 0; + } + + if ( m_pAttachButeMgr ) + { + debug_delete( m_pAttachButeMgr ); + m_pAttachButeMgr = 0; + } + + if ( m_pLeanMgr ) + { + debug_delete( m_pLeanMgr ); + m_pLeanMgr = 0; + } + + if ( m_pClientWeaponMgr ) + { + debug_delete( m_pClientWeaponMgr ); + m_pClientWeaponMgr = 0; + } + + if ( m_pPlayerCamera ) + { + debug_delete( m_pPlayerCamera ); + m_pPlayerCamera = 0; + } + + if( m_pPVAttachmentMgr ) + { + debug_delete( m_pPVAttachmentMgr ); + m_pPVAttachmentMgr = LTNULL; + } + + g_pPlayerMgr = NULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Init +// +// PURPOSE: Init the mgr +// +// ----------------------------------------------------------------------- // +LTBOOL CPlayerMgr::Init() +{ + g_pPlayerMgr = this; + + InitTargetMgr(); + + g_CV_CSendRate.Init(g_pLTClient, "CSendRate", NULL, DEFAULT_CSENDRATE); + g_CV_CSendRate_Min.Init(g_pLTClient, "CSendRate_Min", NULL, DEFAULT_CSENDRATE_MIN); + g_vtPlayerRotate.Init(g_pLTClient, "PlayerRotate", NULL, 1.0f); + g_vtCamZoom1MaxDist.Init(g_pLTClient, "CamZoom1MaxDist", NULL, 600.0f); + g_vtCamZoom2MaxDist.Init(g_pLTClient, "CamZoom2MaxDist", NULL, 1000.0f); + g_vtFOVXNormal.Init(g_pLTClient, "FovX", NULL, 90.0f); + g_vtFOVYNormal.Init(g_pLTClient, "FovY", NULL, 78.0f); + g_vtFOVYMaxUW.Init(g_pLTClient, "FOVYUWMax", NULL, 78.0f); + g_vtFOVYMinUW.Init(g_pLTClient, "FOVYUWMin", NULL, 77.0f); + g_vtUWFOVRate.Init(g_pLTClient, "FOVUWRate", NULL, 0.3f); + g_vtCamRotInterpTime.Init(g_pLTClient, "CamRotInterpTime", NULL, 0.15f); + g_vtRespawnWaitTime.Init(g_pLTClient, "RespawnWaitTime", NULL, 1.0f); + g_vtMultiplayerRespawnWaitTime.Init(g_pLTClient, "RespawnMultiWaitTime", NULL, 30.0f); + g_vtDoomsdayRespawnWaitTime.Init(g_pLTClient, "RespawnDoomsdayWaitTime", NULL, 15.0f); + g_vtScreenFadeInTime.Init(g_pLTClient, "ScreenFadeInTime", NULL, 3.0f); + g_vtScreenFadeOutTime.Init(g_pLTClient, "ScreenFadeOutTime", NULL, 5.0f); + g_vtChaseCamOffset.Init(g_pLTClient, "ChaseCamOffset", NULL, 50.0f); + g_vtChaseCamPitchAdjust.Init(g_pLTClient, "ChaseCamPitchAdjust", NULL, 0.0f); + g_vtChaseCamDistUp.Init(g_pLTClient, "ChaseCamDistUp", NULL, 10.0f); + g_vtChaseCamDistBack.Init(g_pLTClient, "ChaseCamDistBack", NULL, 100.0f); + g_vtFastTurnRate.Init(g_pLTClient, "FastTurnRate", NULL, 2.3f); + g_vtNormalTurnRate.Init(g_pLTClient, "NormalTurnRate", NULL, 1.5f); + g_vtLookUpRate.Init(g_pLTClient, "LookUpRate", NULL, 2.5f); + g_vtCameraSwayXFreq.Init(g_pLTClient, "CameraSwayXFreq", NULL, 13.0f); + g_vtCameraSwayYFreq.Init(g_pLTClient, "CameraSwayYFreq", NULL, 5.0f); + g_vtCameraSwayXSpeed.Init(g_pLTClient, "CameraSwayXSpeed", NULL, 12.0f); + g_vtCameraSwayYSpeed.Init(g_pLTClient, "CameraSwayYSpeed", NULL, 1.5f); + g_vtCameraSwayDuckMult.Init(g_pLTClient, "CameraSwayCrouchMultiplier", NULL, 0.5f); + g_vtModelGlowTime.Init(g_pLTClient, "ModelGlowTime", NULL, 1.5f); + g_vtModelGlowMin.Init(g_pLTClient, "ModelGlowMin", NULL, -25.0f); + g_vtModelGlowMax.Init(g_pLTClient, "ModelGlowMax", NULL, 75.0f); + g_vtActivateOverride.Init(g_pLTClient, "ActivateOverride", " ", 0.0f); + g_vtCamDamage.Init(g_pLTClient, "CamDamage", NULL, 1.0f); + g_vtCamDamagePitch.Init(g_pLTClient, "CamDamagePitch", NULL, 1.0f); + g_vtCamDamageRoll.Init(g_pLTClient, "CamDamageRoll", NULL, 1.0f); + g_vtCamDamageTime1.Init(g_pLTClient, "CamDamageTime1", NULL, 0.1f); + g_vtCamDamageTime2.Init(g_pLTClient, "CamDamageTime2", NULL, 0.25f); + g_vtCamDamageMinPitchVal.Init(g_pLTClient, "CamDamageMinPitchVal", NULL, 5.0f); + g_vtCamDamageMaxPitchVal.Init(g_pLTClient, "CamDamageMaxPitchVal", NULL, 20.0f); + g_vtCamDamageMinRollVal.Init(g_pLTClient, "CamDamageMinRollVal", NULL, 5.0f); + g_vtCamDamageMaxRollVal.Init(g_pLTClient, "CamDamageMaxRollVal", NULL, 20.0f); + g_vtCamDamagePitchMin.Init(g_pLTClient, "CamDamagePitchMin", NULL, 0.7f); + g_vtCamDamageRollMin.Init(g_pLTClient, "CamDamageRollMin", NULL, 0.7f); + g_vtCamDamageFXOffsetX.Init(g_pLTClient, "CamDamageFXOffsetX", NULL, 5.0f); + g_vtCamDamageFXOffsetY.Init(g_pLTClient, "CamDamageFXOffsetX", NULL, 5.0f); + g_vtCamDamageFXOffsetZ.Init(g_pLTClient, "CamDamageFXOffsetX", NULL, 5.0f); + g_vtAlwaysHUD.Init(g_pLTClient, "AlwaysHUD", NULL, 0.0f); + g_vtDamageFadeRate.Init(g_pLTClient, "DamageFadeRate", NULL, 0.5f); + g_vtAdaptiveMouse.Init(g_pLTClient, "AdaptiveMouse", NULL, 0.0f); + g_vtAdaptiveMouseMaxOffset.Init(g_pLTClient, "AdaptiveMouseMaxOffset", NULL, 0.1f); + g_vtShowSoundFilterInfo.Init(g_pLTClient, "SoundFilterInfo", NULL, 0.0f); + g_vtMultiplayerDeathCamMoveTime.Init( g_pLTClient, "MultiplayerDeathCamMoveTime", NULL, 0.5f ); + g_vtMultiAttachDeathCamMaxTime.Init( g_pLTClient, "MultiplayerDeathAttachCamMaxTime", NULL, 5.0f ); + g_vtAttachedCamInterpolationRate.Init( g_pLTClient, "AttachedCamIntrepolationRate", NULL, 0.1f ); + + g_vSVModelColor = g_pLayoutMgr->GetSpyVisionModelColor(); + m_vSVLightScale = g_pLayoutMgr->GetSpyVisionLightScale(); + + // Create the camera... + + ObjectCreateStruct theStruct; + INIT_OBJECTCREATESTRUCT(theStruct); + + theStruct.m_ObjectType = OT_CAMERA; + + m_hCamera = g_pLTClient->CreateObject(&theStruct); + _ASSERT(m_hCamera); + + ResetCamera(); + + m_pHeadBobMgr->Init(); + m_pCameraOffsetMgr->Init(); + //m_pFlashLight no init + //m_pGadgetDisabler no init + //m_pSearcher + m_pMoveMgr->Init(); + //m_pVisionModeMgr no init + m_pAttachButeMgr->Init(); + m_pLeanMgr->Init(); + m_pClientWeaponMgr->Init(); + m_pPVAttachmentMgr->Init(); + + s_fDeathDelay = g_pLayoutMgr->GetDeathDelay(); + + // Player camera (non-1st person) stuff... + + if (m_pPlayerCamera->Init(g_pLTClient)) + { + InitPlayerCamera(); + m_pPlayerCamera->GoFirstPerson(); + } + else + { + g_pGameClientShell->CSPrint ("Could not init player camera!"); + } + + ClearDamageSectors(); + + m_bSpyVision = false; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Term +// +// PURPOSE: Term the mgr +// +// ----------------------------------------------------------------------- // +void CPlayerMgr::Term() +{ + // terminate the weapon mgr + m_pClientWeaponMgr->Term(); + + m_pPVAttachmentMgr->Term(); + + g_pPlayerMgr = NULL; + + if (m_hCamera) + { + g_pLTClient->RemoveObject(m_hCamera); + m_hCamera = NULL; + } + + m_cLastPlayerInfoMsg = NULL; + m_cLastPlayerInfoMoveMsg = NULL; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::Save +// +// PURPOSE: Save the interface info +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState) +{ + // save the class information + m_pMoveMgr->Save(pMsg, eSaveDataState); + m_pClientWeaponMgr->Save(pMsg); + + pMsg->Writebool(m_bSpectatorMode != LTFALSE); + pMsg->WriteLTRotation(m_rRotation); + pMsg->Writebool(m_bLastSent3rdPerson != LTFALSE); + pMsg->Writebool(m_bAllowPlayerMovement != LTFALSE); + pMsg->Writebool(m_bLastAllowPlayerMovement != LTFALSE); + pMsg->Writebool(m_bWasUsingExternalCamera != LTFALSE); + pMsg->Writebool(m_bUsingExternalCamera != LTFALSE); + pMsg->Writeuint8(m_ePlayerState); + pMsg->Writeuint8(m_nSoundFilterId); + pMsg->Writeuint8(m_nGlobalSoundFilterId); + + pMsg->Writebool(m_pFlashLight->IsOn() != LTFALSE); + + pMsg->Writefloat(m_fPitch); + pMsg->Writefloat(m_fYaw); + pMsg->Writefloat(m_fRoll); + + pMsg->Writefloat(m_fPlayerPitch); + pMsg->Writefloat(m_fPlayerYaw); + pMsg->Writefloat(m_fPlayerRoll); + + pMsg->Writefloat(m_fModelAttachPitch); + pMsg->Writefloat(m_fModelAttachYaw); + pMsg->Writefloat(m_fModelAttachRoll); + + m_fPitchBackup = m_fPitch; + m_fYawBackup = m_fYaw; + + pMsg->Writefloat(m_fPitchBackup); + pMsg->Writefloat(m_fYawBackup); + + pMsg->Writefloat(m_fFireJitterPitch); + pMsg->Writefloat(m_fFireJitterYaw); + pMsg->Writefloat(m_fContainerStartTime); + pMsg->Writefloat(m_fFovXFXDir); + pMsg->Writefloat(m_fSaveLODScale); + + + pMsg->Writeuint8( m_nCarryingObject ); + if( m_nCarryingObject == CFX_CARRY_CHASSIS_PIECE ) + { + if( m_pCarryChassisPieceBute ) + { + pMsg->WriteString( m_pCarryChassisPieceBute->m_sName.c_str( )); + } + else + { + pMsg->WriteString( "" ); + } + } + else + { + pMsg->WriteString( "" ); + } + + pMsg->Writebool( m_bCanDropCarriedObject ); + + pMsg->Writebool( m_bCameraAttachedToHead ); + + pMsg->Writebool( m_pMoveMgr->DuckLock() ? true : false ); + + pMsg->Writebool( m_pMoveMgr->IsDucking() ? true : false ); + + pMsg->Writefloat( m_fMultiplayerDeathCamMoveTimer ); + pMsg->Writefloat( m_fMultiAttachDeathCamTimer ); + + pMsg->Writebool( m_bLerpAttachedCamera ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Load +// +// PURPOSE: Load the interface info +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState) +{ + // load the contained member classes + m_pMoveMgr->Load(pMsg, eLoadDataState); + m_pClientWeaponMgr->Load(pMsg); + + m_bSpectatorMode = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_rRotation = pMsg->ReadLTRotation(); + m_bLastSent3rdPerson = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bAllowPlayerMovement = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bLastAllowPlayerMovement = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bWasUsingExternalCamera = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bUsingExternalCamera = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_ePlayerState = (PlayerState) pMsg->Readuint8(); + m_nSoundFilterId = pMsg->Readuint8(); + m_nGlobalSoundFilterId = pMsg->Readuint8(); + + if (pMsg->Readbool()) + { + m_pFlashLight->TurnOn(); + } + + m_fPitch = pMsg->Readfloat(); + m_fYaw = pMsg->Readfloat(); + m_fRoll = pMsg->Readfloat(); + + m_fPlayerPitch = pMsg->Readfloat(); + m_fPlayerYaw = pMsg->Readfloat(); + m_fPlayerRoll = pMsg->Readfloat(); + + m_fModelAttachPitch = pMsg->Readfloat(); + m_fModelAttachYaw = pMsg->Readfloat(); + m_fModelAttachRoll = pMsg->Readfloat(); + + m_fPitchBackup = pMsg->Readfloat(); + m_fYawBackup = pMsg->Readfloat(); + + m_fFireJitterPitch = pMsg->Readfloat(); + m_fFireJitterYaw = pMsg->Readfloat(); + m_fContainerStartTime = pMsg->Readfloat(); + m_fFovXFXDir = pMsg->Readfloat(); + m_fSaveLODScale = pMsg->Readfloat(); + + uint8 nCarryingObject = 0; + nCarryingObject = pMsg->Readuint8(); + char szChassisPieceBute[256]; + pMsg->ReadString( szChassisPieceBute, ARRAY_LEN( szChassisPieceBute )); + SetCarryingObject( nCarryingObject, ChassisButeMgr::Instance( ).GetChassisPieceBute( szChassisPieceBute ), false ); + + m_bCanDropCarriedObject = pMsg->Readbool(); + + m_bCameraAttachedToHead = pMsg->Readbool(); + + m_pMoveMgr->SetDuckLock( pMsg->Readbool() ? LTTRUE : LTFALSE ); + + m_pMoveMgr->SetDucking( pMsg->Readbool() ? LTTRUE : LTFALSE ); + + m_fMultiplayerDeathCamMoveTimer = pMsg->Readfloat(); + m_fMultiAttachDeathCamTimer = pMsg->Readfloat(); + + m_bLerpAttachedCamera = pMsg->Readbool(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnEnterWorld() +// +// PURPOSE: Handle entering world +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::OnEnterWorld() +{ + m_vShakeAmount.Init(); + m_ePlayerState = PS_UNKNOWN; + + m_bPlayerUpdated = LTFALSE; + m_nZoomView = 0; + m_bZooming = LTFALSE; + m_bZoomingIn = LTFALSE; + + m_eCurContainerCode = CC_NO_CONTAINER; + m_bInSafetyNet = false; + + m_bCameraAttachedToHead = false; + m_bLerpAttachedCamera = false; + + m_pHeadBobMgr->OnEnterWorld(); + + SetExternalCamera(LTFALSE); + + m_bCameraPosInited = LTFALSE; + + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_PLAYERROT | CLIENTUPDATE_ALLOWINPUT; + + m_pMoveMgr->OnEnterWorld(); + + m_nCarryingObject = CFX_CARRY_NONE; + m_pCarryChassisPieceBute = NULL; + m_bCanDropCarriedObject = false; + + m_fDistanceIndicatorPercent = -1.0f; + g_pHUDMgr->QueueUpdate( kHUDDistance ); + extern CHUDDistance* g_pDistance; + g_pDistance->Clear( ); + + m_pClientWeaponMgr->OnEnterWorld(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnExitWorld() +// +// PURPOSE: Handle leaving world +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::OnExitWorld() +{ + m_bStartedPlaying = LTFALSE; + + ClearPlayerModes(); + + m_pPlayerCamera->AttachToObject(NULL); // Detatch camera + + m_pFlashLight->TurnOff(); + m_pMoveMgr->OnExitWorld(); + + if (m_hContainerSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hContainerSound); + m_hContainerSound = NULL; + } + + m_pClientWeaponMgr->OnExitWorld(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnMessage() +// +// PURPOSE: Handle client messages +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::OnMessage(uint8 messageID, ILTMessage_Read *pMsg) +{ + switch(messageID) + { + case MID_SHAKE_SCREEN: HandleMsgShakeScreen (pMsg); break; + case MID_PLAYER_STATE_CHANGE: HandleMsgPlayerStateChange (pMsg); break; + case MID_CLIENT_PLAYER_UPDATE: HandleMsgClientPlayerUpdate (pMsg); break; + case MID_PLAYER_DAMAGE: HandleMsgPlayerDamage (pMsg); break; + case MID_PLAYER_ORIENTATION: HandleMsgPlayerOrientation (pMsg); break; + case MID_WEAPON_CHANGE: HandleMsgWeaponChange (pMsg); break; + case MID_CHANGE_WORLDPROPERTIES: HandleMsgChangeWorldProperties (pMsg); break; + case MID_GADGETTARGET: HandleMsgGadgetTarget (pMsg); break; + case MID_SEARCH: HandleMsgSearch (pMsg); break; + case MID_ADD_PUSHER: HandleMsgAddPusher (pMsg); break; + case MID_OBJECTIVES_DATA: HandleMsgObjectivesData (pMsg); break; + default: return LTFALSE; break; + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnKeyDown(int key, int rep) +// +// PURPOSE: Handle key down notification +// Try to avoid using OnKeyDown and OnKeyUp as they +// are not portable functions +// +// ----------------------------------------------------------------------- // +LTBOOL CPlayerMgr::OnKeyDown(int key, int rep) +{ + if (!IsPlayerInWorld()) return LTFALSE; + if (IsPlayerDead()) + { + // See if we can respawn. For SP, this just makes us wait + // a little bit before we can go to the mission failure screen. + if (g_pLTClient->GetTime() > m_fEarliestRespawnTime) + { + // Death is a mission failure in sp. + if (!IsMultiplayerGame()) + { + g_pMissionMgr->HandleMissionFailed(); + return LTTRUE; + } + } + } + + // Are we playing a cinematic... + + if (m_bUsingExternalCamera) + { + if (key == VK_SPACE) + { + // Send an activate message to stop the cinemaitc... + + DoActivate(); + g_pLTClient->ClearInput(); + return LTTRUE; + } + } + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnKeyUp(int key) +// +// PURPOSE: Handle key up notification +// +// ----------------------------------------------------------------------- // +LTBOOL CPlayerMgr::OnKeyUp(int key) +{ + return LTFALSE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::PreUpdate() +// +// PURPOSE: Handle client pre-updates +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::PreUpdate() +{ + // Conditions in which we don't want to clear the screen + + if ((m_ePlayerState == PS_UNKNOWN && g_pGameClientShell->IsWorldLoaded())) + { + return; + } + + // See if we're using an external camera now - if so, clear the screen + // immediately, and add to the clearscreen count + if (m_bUsingExternalCamera && !m_bWasUsingExternalCamera) + { + m_bWasUsingExternalCamera = LTTRUE; + g_pInterfaceMgr->AddToClearScreenCount(); + } + else if (m_bWasUsingExternalCamera && !m_bUsingExternalCamera) + { + m_bWasUsingExternalCamera = LTFALSE; + g_pInterfaceMgr->AddToClearScreenCount(); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Update() +// +// PURPOSE: Handle client updates +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::Update() +{ + // Update models (powerups) glowing... + + UpdateModelGlow(); + + UpdateDamage(); + + if (IsPlayerDead()) + { + if (!IsMultiplayerGame() && !g_pGameClientShell->IsGamePaused()) + { + if (s_fDeadTimer < s_fDeathDelay) + { + s_fDeadTimer += g_pGameClientShell->GetFrameTime(); + } + else + { + LTBOOL bHandleMissionFailed = LTTRUE; + + if (g_pInterfaceMgr->FadingScreen() && g_pInterfaceMgr->FadingScreenIn()) + { + bHandleMissionFailed = g_pInterfaceMgr->ScreenFadeDone(); + } + + if (bHandleMissionFailed) + { + g_pMissionMgr->HandleMissionFailed(); + } + } + } + } + + + if (g_pLTClient->IsCommandOn(COMMAND_ID_ACTIVATE)) + { + //if the activate key is down, + // and we're in range + // and we have not started to auto-switch to a gadget i.e (m_nPreGadgetWeapon == WMGR_INVALID_ID) + // and we are not in the process of switching weapons + //then try to switch to a gadget + if (GetTargetMgr()->IsTargetInRange() && (m_nPreGadgetWeapon == WMGR_INVALID_ID) && !m_bSwitchingWeapons) + { + DamageType eDT = GetTargetMgr()->RequiredGadgetDamageType(); + UseGadget(eDT); + + } + } + else + { + //if the activate key is not down, + // and we have started to auto-switch to a gadget i.e (m_nPreGadgetWeapon != WMGR_INVALID_ID) + // and we are not in the process of switching weapons + //then switch back to the old weapon + if ((m_nPreGadgetWeapon != WMGR_INVALID_ID) && !m_bSwitchingWeapons) + { + m_bChangingToGadget = false; + ChangeWeapon(m_nPreGadgetWeapon); + + + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::FirstUpdate +// +// PURPOSE: Handle first update (each level) +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::FirstUpdate() +{ + // Force the player camera to update... + + UpdatePlayerCamera(); + +#ifdef USE_EAX20_HARDWARE_FILTERS + + m_nGlobalSoundFilterId = 0; + + char aGlobalSoundFilter[256] = {0}; + char* pGlobalSoundFilter = NULL; + if (g_pLTClient->GetSConValueString("GlobalSoundFilter", aGlobalSoundFilter, sizeof(aGlobalSoundFilter)) == LT_OK) + { + pGlobalSoundFilter = aGlobalSoundFilter; + } + + if (pGlobalSoundFilter && pGlobalSoundFilter[0]) + { + SOUNDFILTER* pFilter = g_pSoundFilterMgr->GetFilter(pGlobalSoundFilter); + if (pFilter) + { + m_nGlobalSoundFilterId = pFilter->nId; + + // set the global filter, if appropriate + if (g_vtUseSoundFilters.GetFloat()) + { + bool bFilterOK = true; + ILTClientSoundMgr *pSoundMgr = (ILTClientSoundMgr *)g_pLTClient->SoundMgr(); + + if ( !g_pSoundFilterMgr->IsUnFiltered( pFilter ) ) + { + if ( pSoundMgr->SetSoundFilter( pFilter->szFilterName ) == LT_OK ) + { + for (int i=0; i < pFilter->nNumVars; i++) + { + if ( pSoundMgr->SetSoundFilterParam(pFilter->szVars[i], pFilter->fValues[i]) != LT_OK ) + bFilterOK = false; + } + } + else + { + bFilterOK = false; + } + } + else + { + // Not filtered. + bFilterOK = false; + } + + pSoundMgr->EnableSoundFilter( bFilterOK ); + +#ifndef _FINAL + if (g_vtShowSoundFilterInfo.GetFloat()) + { + g_pLTClient->CPrint("Entering (Global) sound filter '%s' (%s)", + pFilter->szName, (bFilterOK ? "Enabled" : "Disabled")); + + // Display detailed filter info if necessary... + if (g_vtShowSoundFilterInfo.GetFloat() > 1) + { + g_pLTClient->CPrint(" FilterName: '%s'", pFilter->szFilterName); + for (int i=0; i < pFilter->nNumVars; i++) + { + g_pLTClient->CPrint(" '%s' = '%f'", pFilter->szVars[i], pFilter->fValues[i]); + } + } + } +#endif // _FINAL + + } + + } + } + +#endif // USE_EAX20_HARDWARE_FILTERS + + // Force us to re-evaluate what container we're in. We call + // UpdateContainers() first to make sure any container changes + // have been accounted for, then we clear the container code + // and force an update (this is done for underwater situations like + // dying underwater and respawning, and also for picking up intelligence + // items underwater)... + UpdateContainers(); + ClearCurContainerCode(); + UpdateContainers(); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::FirstPlayingUpdate() +// +// PURPOSE: Handle when the player first starts playing +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::FirstPlayingUpdate() +{ + // Set Initial cheats... + if (g_pCheatMgr) + { + uint8 nNumCheats = g_pClientButeMgr->GetNumCheatAttributes(); + char strCheat[64]; + + for (uint8 i=0; i < nNumCheats; i++) + { + strCheat[0] = '\0'; + g_pClientButeMgr->GetCheat(i, strCheat, ARRAY_LEN(strCheat)); + if (strCheat[0]) + { + g_pCheatMgr->Check(strCheat); + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdatePlaying() +// +// PURPOSE: Handle updating playing (normal) game state +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdatePlaying() +{ + // Just to make sure our flags don't get screwed up by + // the server when we're paused (which they can) + if (g_pGameClientShell->IsServerPaused()) + { + UpdatePlayer(); + return; + } + + + // First time UpdatePlaying is called... + + if (!m_bStartedPlaying) + { + m_bStartedPlaying = LTTRUE; + FirstPlayingUpdate(); + } + + // Update player movement... + + m_pMoveMgr->Update(); + + + // Update our camera offset mgr... + + m_pCameraOffsetMgr->Update(); + + + // Update Player... + + UpdatePlayer(); + + + // Keep track of what the player is doing... + + UpdatePlayerFlags(); + + + // Update head-bob/head-cant camera offsets... + + m_pHeadBobMgr->Update(); + + + // Update duck camera offset... + + UpdateDuck(); + + + // Update the camera's position... + + UpdateCamera(); + + + // See if we are tracking distance to an object.. + + UpdateDistanceIndicator(); + + + // Update player leaning... + + m_pLeanMgr->Update(); + + //updates dependant on camera position and rotation should be handled after this point + + // Update the targetting info... + CAutoTargetMgr::Instance().Update(); + m_pTargetMgr->Update(); + + // Update the Gadget Disabler... + + m_pGadgetDisabler->Update(); + + // Update the Searcher... + + m_pSearcher->Update(); + + // Update the vision modes... + + m_pVisionModeMgr->Update(); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateNotPlaying() +// +// PURPOSE: Handle updating non-playing (screen) game state +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateNotPlaying() +{ + Update(); + UpdatePlaying(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::PostUpdate() +// +// PURPOSE: Handle post updates - after the scene is rendered +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::PostUpdate() +{ + // Update container effects... + if(m_bStartedPlaying) + { + UpdateContainers(); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateDuck() +// +// PURPOSE: Update ducking camera offset +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateDuck() +{ + // Can't duck when free movement... + + if (g_pPlayerMgr->GetMoveMgr()->IsBodyInLiquid() || + g_pPlayerMgr->GetMoveMgr()->IsBodyOnLadder() || + g_pPlayerMgr->IsPlayerDead() || + IsFreeMovement(m_eCurContainerCode)) + { + // Reset ducking parameters... + m_fCamDuck = 0.0f; + m_bStartedDuckingDown = LTFALSE; + return; + } + + float fTime = g_pLTClient->GetTime(); + + float fBodyMult = 1.0f; + + if ( (m_dwPlayerFlags & BC_CFLG_DUCK) || m_bCameraDip) + { + m_bStartedDuckingUp = LTFALSE; + + // Get the difference in crouch height... + + float fCrouchDelta = g_pMoveMgr->GetCrouchHeightDifference(); + + // If dipping don't use the crouch distance... + + if( m_bCameraDip ) + fCrouchDelta = 0.0f; + + // See if the duck just started... + + if (!m_bStartedDuckingDown) + { + m_bStartedDuckingDown = LTTRUE; + m_fStartDuckTime = fTime - g_pLTClient->GetFrameTime(); + } + + m_fCamDuck += m_fDuckDownV * (fTime - m_fStartDuckTime); + + if (m_fCamDuck < (m_fMaxDuckDistance - fCrouchDelta) ) + { + m_bCameraDip = false; + m_fCamDuck = m_fMaxDuckDistance - fCrouchDelta; + } + + } + else if (m_fCamDuck < 0.0) // Raise up + { + m_bStartedDuckingDown = LTFALSE; + + if (!m_bStartedDuckingUp) + { + m_fStartDuckTime = fTime - g_pLTClient->GetFrameTime(); + m_bStartedDuckingUp = LTTRUE; + } + + if( IsCarryingHeavyObject() ) + fBodyMult = 0.01f; + + m_fCamDuck += m_fDuckUpV * (fTime - m_fStartDuckTime) * fBodyMult; + + if (m_fCamDuck > 0.0f) + { + m_fCamDuck = 0.0f; + } + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgShakeScreen() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgShakeScreen (ILTMessage_Read *pMsg) +{ + LTVector vAmount = pMsg->ReadLTVector(); + ShakeScreen(vAmount); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ShakeScreen() +// +// PURPOSE: Shanke, rattle, and roll +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::ShakeScreen(LTVector vShake) +{ + // Add... + + VEC_ADD(m_vShakeAmount, m_vShakeAmount, vShake); + + if (m_vShakeAmount.x > MAX_SHAKE_AMOUNT) m_vShakeAmount.x = MAX_SHAKE_AMOUNT; + if (m_vShakeAmount.y > MAX_SHAKE_AMOUNT) m_vShakeAmount.y = MAX_SHAKE_AMOUNT; + if (m_vShakeAmount.z > MAX_SHAKE_AMOUNT) m_vShakeAmount.z = MAX_SHAKE_AMOUNT; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgClientPlayerUpdate() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgClientPlayerUpdate (ILTMessage_Read *pMsg) +{ + uint16 changeFlags = pMsg->Readuint16(); + + m_pMoveMgr->OnPhysicsUpdate(changeFlags, pMsg); + + if (changeFlags & PSTATE_INTERFACE) + { + uint8 nFlags = pMsg->Readuint8(); + float fHideTime = pMsg->Readfloat(); + + LTBOOL bHiding = !!(nFlags & PSTATE_INT_HIDING); + LTBOOL bHidden = !!(nFlags & PSTATE_INT_HIDDEN); + LTBOOL bCantHide = !!(nFlags & PSTATE_INT_CANTHIDE); + + g_pPlayerStats->UpdateHiding( bHiding, bHidden, bCantHide, fHideTime ); + + SetCanDropCarriedObject( !!(nFlags & PSTATE_INT_CAN_DROP) ); + +// Don't allow respawn meter to go 100% immediately, since +// there is no punishment for dying. +/* + if( IsPlayerDead( ) && IsRevivePlayerGameType( )) + { + // If we can't be revived, then allow respawn immediately. + bool bCanBeRevived = !!( nFlags & PSTATE_INT_CANREVIVE ); + if( !bCanBeRevived ) + { + SetRespawnTime( g_pLTClient->GetTime( )); + } + } +*/ + } + + + m_bPlayerUpdated = LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgWeaponChange() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgWeaponChange (ILTMessage_Read *pMsg) +{ + ChangeWeapon(pMsg); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgPlayerDamage() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + + +void CPlayerMgr::HandleMsgPlayerDamage (ILTMessage_Read *pMsg) +{ + static const float kfSectorSize = MATH_PI * 2.0f / (float)kNumDamageSectors; + if (!pMsg || g_bScreenShotMode) return; + + LTVector vDir = pMsg->ReadLTVector(); + DamageType eType = (DamageType) pMsg->Readuint8(); + LTBOOL bTookHealth = (LTBOOL) pMsg->Readuint8(); + + // No need to handle a damage message if the player is dead... + + if( IsPlayerDead() ) + return; + + float fPercent = vDir.Mag(); + + uint8 damageSector = kNumDamageSectors; + + // [KLS 3/5/02] - If we were damaged, determine the direction the damage came from... + if (fPercent > 0.0f) + { + + LTRotation rRot; + GetPlayerRotation(rRot); + + vDir.Normalize(); + float fDF = rRot.Forward().Dot(vDir); + float fDR = rRot.Right().Dot(vDir); + + float damageAngle = MATH_PI+(float)atan2(fDF,fDR); + damageSector = (uint8)(damageAngle / kfSectorSize); + + m_fDamage[damageSector] += fPercent; + + if (m_fDamage[damageSector] > 1.0f) + m_fDamage[damageSector] = 1.0f; + + } + + +/******************************* +/****** Damage Sector Map ****** + 3 + 4 2 + + 5 1 + + 6 0 + + 7 11 + + 8 10 + 9 +*******************************/ + + + // Do some camera FX for taking armor and taking health... + // Tie this into the DamageSector at some point?? + + DamageFlags dmgFlag = DamageTypeToFlag( eType ); + + if( bTookHealth ) + { + // Play the taking health fx for the DamageFX associated with the damage type... + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstDamageFX(); + while( pDamageFX ) + { + // Test the damage flags against the DamageFX... + + if( dmgFlag & pDamageFX->m_nDamageFlag || pDamageFX->m_vtTestFX.GetFloat() > 0.0f ) + { + CLIENTFX_CREATESTRUCT fxInit( pDamageFX->m_szTakingHealthFXName, FXFLAG_REALLYCLOSE, LTVector(0,0,0) ); + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } + + pDamageFX = g_pDamageFXMgr->GetNextDamageFX(); + } + } + else + { + // Play the taking armor fx for the DamageFX associated with the damage type... + + DAMAGEFX *pDamageFX = g_pDamageFXMgr->GetFirstDamageFX(); + while( pDamageFX ) + { + // Test the damage flags against the DamageFX... + + if( dmgFlag & pDamageFX->m_nDamageFlag || pDamageFX->m_vtTestFX.GetFloat() > 0.0f ) + { + CLIENTFX_CREATESTRUCT fxInit( pDamageFX->m_szTakingArmorFXName, FXFLAG_REALLYCLOSE, LTVector(0,0,0) ); + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } + + pDamageFX = g_pDamageFXMgr->GetNextDamageFX(); + } + } + + // Tilt the camera based on the direction the damage came from... + + if (kNumDamageSectors != damageSector && IsJarCameraType(eType) && + m_pPlayerCamera->IsFirstPerson() && g_vtCamDamage.GetFloat() > 0.0f) + { + CameraDelta delta; + + if (g_vtCamDamagePitch.GetFloat() > 0.0f) + { + float fPitchAngle = g_vtCamDamageMinPitchVal.GetFloat() + ((g_vtCamDamageMaxPitchVal.GetFloat() - g_vtCamDamageMinPitchVal.GetFloat()) * fPercent); + + if (damageSector > 7 && damageSector <11) + { + delta.Pitch.fTime1 = g_vtCamDamageTime1.GetFloat(); + delta.Pitch.fTime2 = g_vtCamDamageTime2.GetFloat(); + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + delta.Pitch.fVar = DEG2RAD(fPitchAngle); + } + else if (damageSector > 1 && damageSector < 5) + { + delta.Pitch.fTime1 = g_vtCamDamageTime1.GetFloat(); + delta.Pitch.fTime2 = g_vtCamDamageTime2.GetFloat(); + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + delta.Pitch.fVar = -DEG2RAD(fPitchAngle); + } + } + + if (g_vtCamDamageRoll.GetFloat() > 0.0f) + { + float fRollAngle = g_vtCamDamageMinRollVal.GetFloat() + ((g_vtCamDamageMaxRollVal.GetFloat() - g_vtCamDamageMinRollVal.GetFloat()) * fPercent); + + if (damageSector > 4 && damageSector < 8) + { + delta.Roll.fTime1 = g_vtCamDamageTime1.GetFloat(); + delta.Roll.fTime2 = g_vtCamDamageTime2.GetFloat(); + delta.Roll.eWave1 = Wave_SlowOff; + delta.Roll.eWave2 = Wave_SlowOff; + delta.Roll.fVar = DEG2RAD(fRollAngle); + } + else if (damageSector < 2 || damageSector == 11) + { + delta.Roll.fTime1 = g_vtCamDamageTime1.GetFloat(); + delta.Roll.fTime2 = g_vtCamDamageTime2.GetFloat(); + delta.Roll.eWave1 = Wave_SlowOff; + delta.Roll.eWave2 = Wave_SlowOff; + delta.Roll.fVar = -DEG2RAD(fRollAngle); + } + } + + m_pCameraOffsetMgr->AddDelta(delta); + } + + + float fSlow = SlowMovementDuration(eType); + if (fSlow > 0.0f) + { + m_pMoveMgr->AddDamagePenalty(fSlow); + } + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Handle() +// +// PURPOSE: This handles the message sent by the world properties +// indicating that they have changed and that the player needs +// to sync to the console variables on the server +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgChangeWorldProperties (ILTMessage_Read *pMsg) +{ + g_pGameClientShell->ResetDynamicWorldProperties(m_bUseWorldFog); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Handle() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgPlayerOrientation (ILTMessage_Read *pMsg) +{ + // Set our pitch, yaw, and roll according to the players... + + uint8 nID = pMsg->Readuint8(); + m_vServerRot = pMsg->ReadLTVector(); + + switch( nID ) + { + case MID_ORIENTATION_ALL : + { + m_fPitch = m_vServerRot.x; + m_fYaw = m_vServerRot.y; + m_fRoll = m_vServerRot.z; + } + break; + + case MID_ORIENTATION_YAW : + { + m_fYaw = m_vServerRot.y; + } + break; + + default : break; + }; + + m_fPlayerPitch = m_fPitch; + m_fPlayerYaw = m_fYaw; + m_fPlayerRoll = m_fRoll; + m_fYawBackup = m_fYaw; + m_fPitchBackup = m_fPitch; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgGadgetTarget +// +// PURPOSE: Just pass the message on the the disabler object +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgGadgetTarget( ILTMessage_Read *pMsg ) +{ + m_pGadgetDisabler->OnGadgetTargetMessage( pMsg ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgSearch +// +// PURPOSE: Just pass the message on the the searcher object +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgSearch( ILTMessage_Read *pMsg ) +{ + m_pSearcher->OnSearchMessage( pMsg ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgAddPusher +// +// PURPOSE: Add a pusher to the MoveMgr. +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgAddPusher( ILTMessage_Read *pMsg ) +{ + LTVector vPos = pMsg->ReadCompLTVector(); + float fRadius = pMsg->Readfloat(); + float fStartDelay = pMsg->Readfloat(); + float fDuration = pMsg->Readfloat(); + float fStrength = pMsg->Readfloat(); + + g_pPlayerMgr->GetMoveMgr()->AddPusher( vPos, fRadius, fStartDelay, fDuration, fStrength ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgObjectivesData +// +// PURPOSE: Set our objectives obtained from the server... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgObjectivesData( ILTMessage_Read *pMsg ) +{ + g_pPlayerStats->OnObjectivesDataMessage( pMsg ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCamera() +// +// PURPOSE: Update the camera position/rotation +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCamera() +{ + //handle updating the camera, as long as we aren't paused + if(!g_pGameClientShell->IsServerPaused() || !m_bCameraPosInited) + { + // Update the sway... + + if (IsZoomed()) + { + UpdateCameraSway(); + } + + // Update the camera's position and rotation.. + + UpdateAlternativeCamera(); + + + // Update the player camera... + + UpdatePlayerCamera(); + + + if (!m_bUsingExternalCamera) + { + if( IsMultiplayerGame() ) + { + UpdateMultiplayerCameraPosition(); + } + else if( g_pInterfaceMgr->AllowCameraMovement() ) + { + UpdateCameraPosition(); + } + } + + if (g_pInterfaceMgr->AllowCameraRotation() ) + { + // [RP] 11/14/02 - Don't calculate the rotation if we're not supposed to be allowing + // mouse inputs. But we do want to update the rotation incase the camera is + // attached to the head of the player. + + if( g_pDamageFXMgr->AllowInput() ) + { + CalculateCameraRotation(); + } + + UpdateCameraRotation(); + } + + if (m_bUsingExternalCamera) + { + HandleZoomChange(LTTRUE); + } + + // Update zoom if applicable... + + if (m_bZooming) + { + UpdateCameraZoom(); + } + + // Update any camera displacement. + UpdateCameraDisplacement(); + + // Make sure the player gets updated + + if (IsMultiplayerGame() || g_pInterfaceMgr->AllowCameraMovement()) + { + UpdatePlayerInfo(true); + } + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hCamera, &vPos); + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hCamera, &rRot); + + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetListener( LTFALSE, &vPos, &rRot, LTTRUE ); + } + // Remember to continue updating the server if we're in multiplayer + else if (IsMultiplayerGame() && g_pGameClientShell->IsServerPaused()) + { + UpdatePlayerInfo(false); + } +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraDisplacement +// +// PURPOSE: Update any camera displacement. +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCameraDisplacement() +{ + LTVector vDisplacement( 0.0f, 0.0f, 0.0f ); + LTVector vAdd; + + vAdd.Init( ); + UpdateCameraShake( vAdd ); + vDisplacement += vAdd; + vAdd.Init( ); + UpdateVehicleCamera( vAdd ); + vDisplacement += vAdd; + + if (!g_pInterfaceMgr->AllowCameraMovement()) + return; + + // Check if no significant movement occurred. + if( vDisplacement.LengthSquared( ) < 0.01f ) + return; + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hCamera, &vPos); + vPos += vDisplacement; + g_pLTClient->SetObjectPos(m_hCamera, &vPos); + + //TODO: move this code into the weapon class + HLOCALOBJ hWeapon = 0; + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + hWeapon = pClientWeapon->GetHandle(); + } + if (!hWeapon) return; + + g_pLTClient->GetObjectPos(hWeapon, &vPos); + vDisplacement += LTVector(0.95f, 0.95f, 0.95f); + vPos += vDisplacement; + g_pLTClient->SetObjectPos(hWeapon, &vPos); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraShake +// +// PURPOSE: Update the camera's shake +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCameraShake( LTVector& vDisplacement ) +{ + // Decay... + + float fDecayAmount = 2.0f * g_pGameClientShell->GetFrameTime(); + + m_vShakeAmount.x -= fDecayAmount; + m_vShakeAmount.y -= fDecayAmount; + m_vShakeAmount.z -= fDecayAmount; + + if (m_vShakeAmount.x < 0.0f) m_vShakeAmount.x = 0.0f; + if (m_vShakeAmount.y < 0.0f) m_vShakeAmount.y = 0.0f; + if (m_vShakeAmount.z < 0.0f) m_vShakeAmount.z = 0.0f; + + + if (m_vShakeAmount.x <= 0.0f && m_vShakeAmount.y <= 0.0f && m_vShakeAmount.z <= 0.0f) return; + + + // Apply... + + float faddX = GetRandom(-1.0f, 1.0f) * m_vShakeAmount.x * 3.0f; + float faddY = GetRandom(-1.0f, 1.0f) * m_vShakeAmount.y * 3.0f; + float faddZ = GetRandom(-1.0f, 1.0f) * m_vShakeAmount.z * 3.0f; + + LTVector vAdd; + vDisplacement.Init(faddX, faddY, faddZ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateVehicleCamera +// +// PURPOSE: Update the vehicle's camera displacement +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateVehicleCamera( LTVector& vDisplacement ) +{ + // Check if we're not in vehicle mode. + if( !m_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + return; + + m_pMoveMgr->GetVehicleMgr()->CalculateVehicleCameraDisplacment( vDisplacement ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraSway +// +// PURPOSE: Update the camera's sway +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCameraSway() +{ + // Apply... + float swayAmount = g_pGameClientShell->GetFrameTime() / 1000.0f; + + float tm = g_pLTClient->GetTime()/10.0f; + + // Adjust if ducking... + float fMult = (m_dwPlayerFlags & BC_CFLG_DUCK) ? g_vtCameraSwayDuckMult.GetFloat() : 1.0f; + + //Adjust for skills + fMult *= g_pPlayerStats->GetSkillModifier(SKL_AIM,AimModifiers::eZoomSway); + + //Adjust for damage + if (g_pDamageFXMgr->IsFOVAffected()) + fMult *= 5.0f; + + float faddP = fMult * g_vtCameraSwayYSpeed.GetFloat() * (float)sin(tm*g_vtCameraSwayYFreq.GetFloat()) * swayAmount; + float faddY = fMult * g_vtCameraSwayXSpeed.GetFloat() * (float)sin(tm*g_vtCameraSwayXFreq.GetFloat()) * swayAmount; + + m_fPitch += faddP; + m_fYaw += faddY; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetExternalCamera() +// +// PURPOSE: Turn on/off external camera mode +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::SetExternalCamera(LTBOOL bExternal) +{ + if (bExternal && m_pPlayerCamera->IsFirstPerson()) + { + g_pDamageFXMgr->Clear(); + + m_pClientWeaponMgr->DisableWeapons(); + + ShowPlayer(LTTRUE); + m_pPlayerCamera->GoChaseMode(); + m_pPlayerCamera->CameraUpdate(0.0f); + + g_pInterfaceMgr->EnableCrosshair(LTFALSE); // Disable cross hair in 3rd person... + } + else if (!bExternal && !m_pPlayerCamera->IsFirstPerson()) // Go Internal + { + m_pClientWeaponMgr->EnableWeapons(); + + // We don't want to accidently fire off a round or two comming out of a cinematic... + + IClientWeaponBase *pWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if( pWeapon ) + { + pWeapon->ClearFiring(); + } + + ShowPlayer(LTFALSE); + m_pPlayerCamera->GoFirstPerson(); + m_pPlayerCamera->CameraUpdate(0.0f); + + g_pInterfaceMgr->EnableCrosshair(LTTRUE); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateAlternativeCamera() +// +// PURPOSE: Update the camera using an alternative camera +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::UpdateAlternativeCamera() +{ + m_bLastAllowPlayerMovement = m_bAllowPlayerMovement; + m_bAllowPlayerMovement = LTTRUE; + + HOBJECT hObj = NULL; + + // See if we should use an alternative camera position... + + CSpecialFXList* pCameraList = g_pGameClientShell->GetSFXMgr()->GetCameraList(); + if (pCameraList) + { + int nNum = pCameraList->GetSize(); + + for (int i=0; i < nNum; i++) + { + CCameraFX* pCamFX = (CCameraFX*)(*pCameraList)[i]; + if (!pCamFX) continue; + + hObj = pCamFX->GetServerObj(); + + if (hObj) + { + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_User, dwUsrFlags); + + if (dwUsrFlags & USRFLG_CAMERA_LIVE) + { + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderText); + + SetExternalCamera(LTTRUE); + + m_bAllowPlayerMovement = pCamFX->AllowPlayerMovement(); + + LTVector vPos; + g_pLTClient->GetObjectPos(hObj, &vPos); + g_pLTClient->SetObjectPos(m_hCamera, &vPos); + m_bCameraPosInited = LTTRUE; + + LTRotation rRot; + g_pLTClient->GetObjectRotation(hObj, &rRot); + g_pLTClient->SetObjectRotation(m_hCamera, &rRot); + + // Always set the camera as the listener, so ambient sounds are + // heard from the camera position. + m_bCamIsListener = LTTRUE; + + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetListener(LTFALSE, &vPos, &rRot, (m_bCamIsListener ? true : false)); + + // Initialize the cinematic camera + + s_nLastCamType = pCamFX->GetType(); + + pCamFX->UpdateFOV(); + + float fFovX = pCamFX->GetFovX(); + float fFovY = pCamFX->GetFovY(); + + TurnOnAlternativeCamera(s_nLastCamType, fFovX, fFovY); + + return LTTRUE; + } + } + } + } + + + // Okay, we're no longer using an external camera... + + if (m_bUsingExternalCamera) + { + TurnOffAlternativeCamera(s_nLastCamType); + } + + + return LTFALSE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::TurnOnAlternativeCamera() +// +// PURPOSE: Set up using an alternative camera +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::TurnOnAlternativeCamera(uint8 nCamType, float fFovX, float fFovY) +{ + g_pInterfaceMgr->SetLetterBox((nCamType == CT_CINEMATIC)); + + SetCameraFOV( DEG2RAD(fFovX), DEG2RAD(fFovY) ); + + if (!m_bUsingExternalCamera) + { + //g_pLTClient->CPrint("TURNING ALTERNATIVE CAMERA: ON"); + + // Make sure we clear whatever was on the screen before + // we switch to this camera... + HandleZoomChange( LTTRUE ); + + g_pInterfaceMgr->ClosePopup(); + + m_pClientWeaponMgr->DisableWeapons(); + + // Make sure we're using the highest model lods + g_pLTClient->RunConsoleString("+ModelLODOffset -10"); + } + + m_bUsingExternalCamera = LTTRUE; + + // All the number of model shadows in cinematics to be much higher + + if(!g_bCinChangedNumModelShadows) + { + g_nCinSaveNumModelShadows = GetConsoleInt("ModelShadow_Proj_MaxShadowsPerFrame", 0); + WriteConsoleInt("ModelShadow_Proj_MaxShadowsPerFrame", g_kMaxNumberOfCinShadows); + + g_bCinChangedNumModelShadows = true; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::TurnOffAlternativeCamera() +// +// PURPOSE: Turn off the alternative camera mode +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::TurnOffAlternativeCamera(uint8 nCamType) +{ + //g_pLTClient->CPrint("TURNING ALTERNATIVE CAMERA: OFF"); + + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderFull); + m_bUsingExternalCamera = LTFALSE; + + // Set the listener back to the client... + + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetListener(LTTRUE, NULL, NULL, LTTRUE); + + // Force 1st person... + + SetExternalCamera(LTFALSE); + + // enable the weapons + m_pClientWeaponMgr->EnableWeapons(); + + // turn off the letter box + g_pInterfaceMgr->SetLetterBox(LTFALSE); + + // Reset the normal FOV + + SetCameraFOV(DEG2RAD(g_vtFOVXNormal.GetFloat()), DEG2RAD(g_vtFOVYNormal.GetFloat())); + + // Make sure we're using the normal model lod... + g_pLTClient->RunConsoleString("+ModelLODOffset 0"); + + // Set number of shadows back to whatever they were set to before... + + if(g_bCinChangedNumModelShadows) + { + WriteConsoleInt("ModelShadow_Proj_MaxShadowsPerFrame", g_nCinSaveNumModelShadows); + g_bCinChangedNumModelShadows = false; + } +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CPlayerMgr::GetCurrentClientWeapon() +// +// PURPOSE: Return a pointer to the player's bucurrent weapon +// +// ----------------------------------------------------------------------- // + +IClientWeaponBase* CPlayerMgr::GetCurrentClientWeapon() const +{ + return m_pClientWeaponMgr->GetCurrentClientWeapon(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::InCameraGadgetRange +// +// PURPOSE: See if the given object is in the camera gadget's range +// +// --------------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::InCameraGadgetRange(HOBJECT hObj) +{ + if (!hObj || !m_hCamera) return LTFALSE; + + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if ( pClientWeapon && !m_pClientWeaponMgr->WeaponsEnabled() ) + { + return LTFALSE; + } + + LTVector vCamPos, vObjPos; + g_pLTClient->GetObjectPos(m_hCamera, &vCamPos); + g_pLTClient->GetObjectPos(hObj, &vObjPos); + + LTVector vDist = vCamPos - vObjPos; + float fDist = vDist.Length(); + + // g_pLTClient->CPrint("fDist = %.2f, Zoom View = %d", fDist, m_nZoomView); + + if (fDist < g_vtCamZoom1MaxDist.GetFloat()) + { + return LTTRUE; + } + else if (fDist < g_vtCamZoom2MaxDist.GetFloat()) + { + if (m_nZoomView > 0) return LTTRUE; + } + else + { + if (m_nZoomView > 1) return LTTRUE; + } + + // Not zoomed in enough... + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateWeaponModel() +// +// PURPOSE: Update the weapon model +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateWeaponModel() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj) return; + + + // Decay weapon recoil... + + DecayWeaponRecoil(); + + // If possible, get these values from the camera, because it + // is more up-to-date... + + LTRotation rRot; + LTVector vPos(0, 0, 0); + + // Weapon model pos/rot is relative to camera now... + g_pLTClient->GetObjectPos(m_hCamera, &vPos); + g_pLTClient->GetObjectRotation(m_hCamera, &rRot); + + if (!m_pPlayerCamera->IsFirstPerson() || m_bUsingExternalCamera) + { + // Use the gun's flash orientation... + + GetAttachmentSocketTransform(hPlayerObj, "Flash", vPos, rRot); + } + + + // If we aren't dead, and we aren't in the middle of changing weapons, + // let us fire. + + FireType eFireType = FT_NORMAL_FIRE; + bool bFire = false; + + // only fire if: + // fire key down (alt firing is disabled) AND + // player is not choosing ammo AND + // player is not choosing a weapon AND + // player is not dead AND + // player is not in spectator mode + if ( ( m_dwPlayerFlags & BC_CFLG_FIRING ) && + ( !g_pInterfaceMgr->IsChoosingAmmo() ) && + ( !IsPlayerDead() ) && + ( !m_bSpectatorMode ) && + ( g_pInterfaceMgr->GetGameState() == GS_PLAYING ) ) + { + bFire = true; + } + + // If we are on a vehicle update the vehicle weapon... + + if( m_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics() && m_pMoveMgr->GetVehicleMgr()->HasVehicleWeapon() ) + { + m_pMoveMgr->GetVehicleMgr()->UpdateVehicleWeapon( rRot, vPos, bFire, eFireType ); + } + else + { + // Update the model position and state... + WeaponState eWeaponState = m_pClientWeaponMgr->Update( rRot, vPos, bFire, eFireType ); + + // Do fire camera jitter... + + if (FiredWeapon(eWeaponState)) + { + m_fLastFireTime = g_pLTClient->GetTime(); + + if( m_pPlayerCamera->IsFirstPerson( )) + { + StartWeaponRecoil(); + } +} + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::StartWeaponRecoil() +// +// PURPOSE: Start the weapon recoiling... +// +// ----------------------------------------------------------------------- // +void CPlayerMgr::StartWeaponRecoil() +{ + float fRecoilKick = GetConsoleFloat("CamRecoilKick",-1.0f); + float fRecoilFactor = GetConsoleFloat("CamRecoilFactor",1.0f); + float fRecoilScale = GetConsoleFloat("CamRecoilScale",0.05f); + float fRecoilMax = GetConsoleFloat("CamRecoilMax",10.0f); + + + + // Move view up a bit...(based on the current weapon/ammo type) + if (fRecoilKick < 0.0f) + { + WEAPON const *pWeaponData = 0; + AMMO const *pAmmoData = 0; + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + pWeaponData = pClientWeapon->GetWeapon(); + pAmmoData = pClientWeapon->GetAmmo(); + } + + if (pWeaponData && pAmmoData) + { + fRecoilKick = pWeaponData->fFireRecoilPitch * pAmmoData->fFireRecoilMult; + } + } + + + s_fRecoilDecaySpeed = 0; + + float fKickMult = 1.0f + (m_fCurrentRecoil * fRecoilFactor); + float fDelta = fRecoilKick * fKickMult * fRecoilScale; + m_fCurrentRecoil += fDelta; + float fPitchDiff = GetRandom(-fDelta,fDelta / 2.0f); + if (GetConsoleBool("CamRecoilDebug",false)) + fPitchDiff = -fDelta / 2.0f; + m_fPitch += DEG2RAD(fPitchDiff); + + if (m_fCurrentRecoil > fRecoilMax) + m_fCurrentRecoil = fRecoilMax; + + if (GetConsoleBool("CamRecoilDebug",false)) + g_pLTClient->CPrint("recoil up to: %0.2f",m_fCurrentRecoil); + + float fYawDiff = GetRandom(-fDelta,fDelta) / 3.0f; + if (GetConsoleBool("CamRecoilDebug",false)) + fYawDiff = 0.0f; + m_fYaw += DEG2RAD(fYawDiff); + + if (fDelta > 0.0f) + { + // Shake the screen if it isn't shaking... + + if (m_vShakeAmount.x < 0.1f && m_vShakeAmount.y < 0.1f && m_vShakeAmount.z < 0.1f) + { + LTVector vShake(0.1f, 0.1f, 0.1f); + ShakeScreen(vShake); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::DecayWeaponRecoil() +// +// PURPOSE: Decay the weapon's recoil... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::DecayWeaponRecoil() +{ + + if (m_fCurrentRecoil <= 0.0f) + return; + + float fElapsedTime = (g_pLTClient->GetTime() - m_fLastFireTime); + + //don't decay immediately + if (fElapsedTime < 0.03f) + return; + + float fRecoilRecover = GetConsoleFloat("CamRecoilRecover",-1.0f); + // Move view up a bit...(based on the current weapon/ammo type) + if (fRecoilRecover < 0.0f) + { + WEAPON const *pWeaponData = 0; + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + pWeaponData = pClientWeapon->GetWeapon(); + } + + if (pWeaponData) + { + fRecoilRecover = pWeaponData->fFireRecoilDecay; + } + } + + s_fRecoilDecaySpeed += g_pLTClient->GetFrameTime(); + + float fRecover = fRecoilRecover * (s_fRecoilDecaySpeed * g_pLTClient->GetFrameTime()) * g_pPlayerStats->GetSkillModifier(SKL_AIM,AimModifiers::eCorrection); + + m_fCurrentRecoil -= fRecover; + + if (m_fCurrentRecoil < 0.0f) + { + m_fCurrentRecoil = 0.0f; + if (GetConsoleBool("CamRecoilDebug",false)) + g_pLTClient->CPrint("recovered in: %0.2f",fElapsedTime); + + } + else + { + if (GetConsoleBool("CamRecoilDebug",false)) + g_pLTClient->CPrint("recoil down to: %0.2f",m_fCurrentRecoil); + } + + } + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::GetRecoilValue() +// +// PURPOSE: Get the current recoil value (0.0 to 1.0) +// +// ----------------------------------------------------------------------- // +float CPlayerMgr::GetRecoilValue() const +{ + float fRecoilMax = GetConsoleFloat("CamRecoilMax",10.0f); + + float fPerturb = sqrtf(m_fCurrentRecoil / fRecoilMax); + return min(fPerturb,1.0f); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetSpectatorMode() +// +// PURPOSE: Turn spectator mode on/off +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::SetSpectatorMode(LTBOOL bOn) +{ + m_bSpectatorMode = bOn; + + // Don't show stats in spectator mode... + // Unless "alwaysHUD" console variable is set. + + if (bOn && ( g_vtAlwaysHUD.GetFloat() > 0.0f ) ) + { + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderNone); + } + else + { + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderFull); + } + + if (m_pPlayerCamera->IsFirstPerson()) + { + m_pMoveMgr->SetSpectatorMode(bOn); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ChangeWeapon() +// +// PURPOSE: Change the weapon model +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::ChangeWeapon(uint8 nWeaponId, + uint8 nAmmoId,/*= WMGR_INVALID_ID*/ + int dwAmmo/*= -1*/) +{ + if (m_pClientWeaponMgr->ChangeWeapon( nWeaponId, nAmmoId, dwAmmo )) + { + + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleWeaponChanged() +// +// PURPOSE: Handle updating necessary player data after a weapon +// change occurs...(NOTE: this should only be called from the +// CClientWeaponMgr::ChangeWeapon() after a successful +// weapon change) +// +// ----------------------------------------------------------------------- // + + // jrg 9/2/02 - this will get called twice most of the time when switching weapons: + // once when the weapon switch is started + // and again when it completes (if a switching animation was needed) + // bImmediateSwitch will be true on the second call (or the first if the switch is immediate) + // (I'm using the repeated call to track whether we are in mid switch) + +void CPlayerMgr::HandleWeaponChanged(uint8 nWeaponId, uint8 nAmmoId, bool bImmediateSwitch) +{ + // Turn off zooming... + HandleZoomChange( LTTRUE ); + + // Tell the server to change weapons... + LTRESULT ltResult; + CAutoMessage cMsg; + cMsg.Writeuint8( MID_WEAPON_CHANGE ); + + cMsg.Writeuint8( nWeaponId ); + cMsg.Writeuint8( nAmmoId ); + + ltResult = g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + ASSERT( LT_OK == ltResult ); + + // this isn't strictly necessary, the hide should have been + // called when we entered the chase view + if ( m_pPlayerCamera->IsChaseView() ) + { + m_pClientWeaponMgr->HideWeapons(); + } + + //when the swicth is complete... + if (bImmediateSwitch) + { + //if we are changing to a gadget, we're done switching + if (m_bChangingToGadget) + { + m_bChangingToGadget = false; + } + else + { + //we are not changing to a gadget, so forget about any gadget related stuff... + if (m_nPreGadgetWeapon != WMGR_INVALID_ID ) + { + m_nPreGadgetWeapon = WMGR_INVALID_ID; + } + } + } + + m_bSwitchingWeapons = !bImmediateSwitch; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ChangeWeapon() +// +// PURPOSE: Change the weapon model +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::ChangeWeapon(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + uint8 nCommandId = pMsg->Readuint8(); + LTBOOL bAuto = pMsg->Readuint8(); + float fAmmoId = pMsg->Readfloat(); + + + uint8 nWeaponId = g_pWeaponMgr->GetWeaponId(nCommandId); + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponId); + if (!pWeapon) return; + + + LTBOOL bChange = (bAuto && GetConsoleBool("AutoWeaponSwitch",LTTRUE)); + + // See what ammo the weapon should start with... + + uint8 nAmmoId = pWeapon->nDefaultAmmoId; + if (fAmmoId >= 0) + { + nAmmoId = (uint8)fAmmoId; + } + + if (bChange) + { + // Force a change to the approprite weapon... + if (g_pPlayerStats) + { + ChangeWeapon(nWeaponId, nAmmoId, g_pPlayerStats->GetAmmoCount(nAmmoId)); + } + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ToggleHolster() +// +// PURPOSE: Toggle the holster state of the weapon. +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::ToggleHolster( bool bPlayDeselect ) +{ + // toggle the holster + m_pClientWeaponMgr->ToggleHolster( bPlayDeselect ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::LastWeapon() +// +// PURPOSE: Swap to our previously used weapon. +// +// ----------------------------------------------------------------------- // +void CPlayerMgr::LastWeapon() +{ + // toggle the last weapon + m_pClientWeaponMgr->LastWeapon(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::BeginSpyVision +// +// PURPOSE: setup spy vision mode +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::BeginSpyVision() +{ +/* KLS - 6/22/02 - Spy vision has been cut + + // Turn on the glow effect (and set the necessary values)... + g_pLTClient->RunConsoleString("ScreenGlowEnable 1"); + + // Turn off shadows (if they're on)... + g_nSaveSpyVisionShadows = GetConsoleInt("MaxModelShadows", 0); + WriteConsoleInt("MaxModelShadows", 0); + + g_pLTClient->SetModelHook((ModelHookFn)SVModelHook, g_pGameClientShell); + m_bSpyVision = true; + +*/ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::EndSpyVision +// +// PURPOSE: end spy vision mode +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::EndSpyVision() +{ +/* KLS - 6/22/02 - Spy vision has been cut + + // Turn off the glow effect... + g_pLTClient->RunConsoleString("ScreenGlowEnable 0"); + + // Turn on shadows (if they were on)...NOTE: this assumes the user won't change + // the state of the shadows while in spy vision... + WriteConsoleInt("MaxModelShadows", g_nSaveSpyVisionShadows); + + g_pLTClient->SetModelHook((ModelHookFn)DefaultModelHook, g_pGameClientShell); + m_bSpyVision = false; + +*/ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::BeginZoom() +// +// PURPOSE: prepare for zooming +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::BeginZoom() +{ + uint8 nScopeId = g_pPlayerStats->GetScope(); + + m_bCamera = LTFALSE; + uint8 nAmmoId = g_pPlayerStats->GetCurrentAmmo(); + if (nAmmoId != WMGR_INVALID_ID) + { + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoId); + if (pAmmo) + { + m_bCamera = (pAmmo->eInstDamageType == DT_GADGET_CAMERA); + } + } + + + g_pInterfaceMgr->BeginScope(m_bSpyVision, m_bCamera); + + m_pClientWeaponMgr->HideWeapons(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::EndZoom() +// +// PURPOSE: done zooming +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::EndZoom() +{ + g_pInterfaceMgr->EndScope(); + m_bCamera = LTFALSE; + + // show the weapon + m_pClientWeaponMgr->ShowWeapons(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleZoomChange() +// +// PURPOSE: Handle a potential zoom change +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleZoomChange(LTBOOL bReset) +{ + // Reset to normal FOV... + + if (bReset) + { + if (m_nZoomView == 0) return; + + m_nZoomView = 0; + m_bZooming = LTFALSE; + m_bZoomingIn = LTFALSE; + g_pInterfaceMgr->EndZoom(); + EndZoom(); + + SetCameraFOV(DEG2RAD(g_vtFOVXNormal.GetFloat()), DEG2RAD(g_vtFOVYNormal.GetFloat())); + + char strConsole[40]; + sprintf(strConsole, "+ModelLODOffset %f", m_fSaveLODScale); + g_pLTClient->RunConsoleString(strConsole); + } + + + uint8 nScopeId = g_pPlayerStats->GetScope(); + if (nScopeId == WMGR_INVALID_ID) return; + + MOD const *pMod = g_pWeaponMgr->GetMod(nScopeId); + if (!pMod) return; + + // Play zoom in/out sounds... + + if (m_bZoomingIn) + { + if (pMod->szZoomInSound[0]) + { + g_pClientSoundMgr->PlaySoundLocal(pMod->szZoomInSound, SOUNDPRIORITY_MISC_MEDIUM); + } + } + else + { + if (pMod->szZoomOutSound[0]) + { + g_pClientSoundMgr->PlaySoundLocal(pMod->szZoomOutSound, SOUNDPRIORITY_MISC_MEDIUM); + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetCameraFOV +// +// PURPOSE: Set the camera's FOV +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::SetCameraFOV(float fFovX, float fFovY) +{ + if (!m_hCamera) return; + + g_pLTClient->SetCameraFOV(m_hCamera, fFovX, fFovY); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraZoom +// +// PURPOSE: Update the camera's field of view +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCameraZoom() +{ + char strConsole[30]; + + uint32 dwWidth = 640, dwHeight = 480; + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &dwWidth, &dwHeight); + + float fovX, fovY; + g_pLTClient->GetCameraFOV(m_hCamera, &fovX, &fovY); + + float fOldFovX = fovX; + + if (!fovX) + { + fovX = DEG2RAD(g_vtFOVXNormal.GetFloat()); + } + + m_bZooming = LTTRUE; + + + float fFovXZoomed, fZoomDist; + + if (m_bZoomingIn) + { + if (m_nZoomView == 1) + { + fFovXZoomed = DEG2RAD(FOVX_ZOOMED); + fZoomDist = DEG2RAD(g_vtFOVXNormal.GetFloat()) - fFovXZoomed; + } + else if (m_nZoomView == 2) + { + fFovXZoomed = DEG2RAD(FOVX_ZOOMED1); + // KLS - Always zoom all the way in... + fZoomDist = DEG2RAD(g_vtFOVXNormal.GetFloat()) - fFovXZoomed; + // Remove above code and uncomment line below to do old + // step zoom behavoir + //fZoomDist = DEG2RAD(FOVX_ZOOMED) - fFovXZoomed; + } + else if (m_nZoomView == 3) + { + fFovXZoomed = DEG2RAD(FOVX_ZOOMED2); + // KLS - Always zoom all the way in... + fZoomDist = DEG2RAD(g_vtFOVXNormal.GetFloat()) - fFovXZoomed; + // Remove above code and uncomment line below to do old + // step zoom behavoir + //fZoomDist = DEG2RAD(FOVX_ZOOMED1) - fFovXZoomed; + } + } + else + { + if (m_nZoomView == 0) + { + fFovXZoomed = DEG2RAD(g_vtFOVXNormal.GetFloat()); + fZoomDist = DEG2RAD(g_vtFOVXNormal.GetFloat()) - DEG2RAD(FOVX_ZOOMED); + } + else if (m_nZoomView == 1) + { + fFovXZoomed = DEG2RAD(FOVX_ZOOMED); + fZoomDist = fFovXZoomed - DEG2RAD(FOVX_ZOOMED1); + } + else if (m_nZoomView == 2) + { + fFovXZoomed = DEG2RAD(FOVX_ZOOMED1); + fZoomDist = fFovXZoomed - DEG2RAD(FOVX_ZOOMED2); + } + } + + float fZoomVel = fZoomDist / ZOOM_TIME; + float fZoomAmount = fZoomVel * g_pGameClientShell->GetFrameTime(); + + // Zoom camera in or out... + + if (m_bZoomingIn) + { + if (fovX > fFovXZoomed) + { + // Zoom camera in... + + fovX -= fZoomAmount; + } + + if (fovX <= fFovXZoomed) + { + fovX = fFovXZoomed; + m_bZooming = LTFALSE; + g_pInterfaceMgr->EndZoom(); + } + } + else // Zoom camera out... + { + if (fovX < fFovXZoomed) + { + // Zoom camera out... + + fovX += fZoomAmount; + } + + if (fovX >= fFovXZoomed) + { + fovX = fFovXZoomed; + m_bZooming = LTFALSE; + g_pInterfaceMgr->EndZoom(); + if (m_nZoomView == 0) + { + EndZoom(); + } + } + } + + if (fOldFovX != fovX) + { + fovY = (fovX * DEG2RAD(g_vtFOVYNormal.GetFloat())) / DEG2RAD(g_vtFOVXNormal.GetFloat()); + + SetCameraFOV(fovX, fovY); + + // Update the lod adjustment for models... + float fZoomAmount = (DEG2RAD(g_vtFOVXNormal.GetFloat()) - fovX) / (DEG2RAD(g_vtFOVXNormal.GetFloat()) - DEG2RAD(FOVX_ZOOMED2)); + float fNewLODOffset = m_fSaveLODScale + (LOD_ZOOMADJUST * fZoomAmount); + + sprintf(strConsole, "+ModelLODOffset %f", fNewLODOffset); + g_pLTClient->RunConsoleString(strConsole); + + //g_pLTClient->CPrint("Current FOV (%f, %f)", fovX, fovY); + //g_pLTClient->CPrint("Current Zoom LODOffset: %f", fNewLODOffset); + } + +} + + + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnCommandOn() +// +// PURPOSE: Handle client commands +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::OnCommandOn(int command) +{ + // Make sure we're in the world... + + if (!IsPlayerInWorld()) return LTFALSE; + + // See if the vehiclemgr would like to trap this + if(m_pMoveMgr->GetVehicleMgr()->OnCommandOn(command)) + { + return LTTRUE; + } + + // Check for weapon change... + + if (g_pWeaponMgr->GetFirstWeaponCommandId() <= command && + command <= g_pWeaponMgr->GetLastWeaponCommandId()) + { + ChangeWeapon( g_pWeaponMgr->GetWeaponId( command ) ); + return LTTRUE; + } + + // Take appropriate action + + switch (command) + { + case COMMAND_ID_ACTIVATE : + { + if (IsPlayerDead()) + { + if (IsMultiplayerGame()) + { + if (g_pLTClient->GetTime() > m_fEarliestRespawnTime) + { + // Allow respawn after a certain amount of time. This way the Player + // can remain in 'limbo' for as long as they want and wait to be revived. + + HandleRespawn(); + } + else + { + // If waiting to respawn and they hit activate, then they will cancel + // their revive. + if( IsRevivePlayerGameType( )) + { + SetCancelRevive( true ); + } + } + } + else if (g_pLTClient->GetTime() > m_fEarliestRespawnTime) + { + g_pMissionMgr->HandleMissionFailed(); + } + } + else + { + // If we're pointed at something activate it if we're not + // riding a vehicle... + if (m_pMoveMgr->GetVehicleMgr()->CanDismount()) + { + // Vehicle Mgr now handles calling DoActivate(), just tell + // the vehicle mgr to get off the vehicle... + m_pMoveMgr->GetVehicleMgr()->SetPhysicsModel(PPM_NORMAL); + return LTTRUE; + } + else if (GetTargetMgr()->IsTargetInRange()) + { + DamageType eDT = GetTargetMgr()->RequiredGadgetDamageType(); + if (eDT != DT_INVALID && !GetGadgetDisabler()->DisableOnActivate()) + { + return TRUE; + } + else if( g_pDamageFXMgr->AllowWeapons( ) && GetTargetMgr()->GetTargetObject() && DoActivate()) + { + return TRUE; + } + else if( GetCarryingObject() && CanDropCarriedObject( )) + { + CActivationData data = GetTargetMgr()->GetActivationData(); + data.m_nType = MID_ACTIVATE_MOVE; + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + return TRUE; + } + else if( CanCarryObject( NULL )) + { + CActivationData data = GetTargetMgr()->GetActivationData(); + data.m_nType = MID_ACTIVATE_MOVE; + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + return TRUE; + } + } + // If we're carrying an object that disallows weapons, we can automatically + // drop it with activate. + else if( GetCarryingObject() && CanDropCarriedObject( ) && g_pPlayerMgr->IsCarryingHeavyObject()) + { + CActivationData data = GetTargetMgr()->GetActivationData(); + data.m_nType = MID_ACTIVATE_MOVE; + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + return TRUE; + } + + //we're not pointed at anything, so reload + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if( pClientWeapon ) + { + // Reload the clip and let the server know... + pClientWeapon->ReloadClip( true, -1, false, true ); + } + } + } + break; + + case COMMAND_ID_MOVE_BODY: + { + CActivationData data = GetTargetMgr()->GetActivationData(); + + // If we're carrying something, then drop it. + if( GetCarryingObject() ) + { + data.m_nType = MID_ACTIVATE_MOVE; + + if( CanDropCarriedObject( )) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + else + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\Nodrop.wav"); + } + } + // If we can pick something up, then do it. + else if (GetTargetMgr()->IsTargetInRange()) + { + if( CanCarryObject( NULL )) + { + CActivationData data = GetTargetMgr()->GetActivationData(); + data.m_nType = MID_ACTIVATE_MOVE; + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + return TRUE; + } + } + } + break; + + case COMMAND_ID_FIRING : + { + if (IsPlayerDead()) + { + if (IsMultiplayerGame()) + { + if (g_pLTClient->GetTime() > m_fEarliestRespawnTime) + { + // Allow respawn after a certain amount of time. This way the Player + // can remain in 'limbo' for as long as they want and wait to be revived. + + HandleRespawn(); + } + } + else if (g_pLTClient->GetTime() > m_fEarliestRespawnTime) + { + g_pMissionMgr->HandleMissionFailed(); + } + } + } + break; + + case COMMAND_ID_RELOAD : + { + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + // Reload the clip and let the server know... + pClientWeapon->ReloadClip( true, -1, false, true ); + } + } + break; + +#ifndef _DEMO + case COMMAND_ID_NEXT_VISMODE : + { + m_pVisionModeMgr->NextMode(); + } + break; +#endif + + case COMMAND_ID_ZOOM_IN : + { + if ( !m_pClientWeaponMgr->WeaponsEnabled() ) break; + + uint8 nScopeId = g_pPlayerStats->GetScope(); + if (nScopeId == WMGR_INVALID_ID) break; + + MOD const * pMod = g_pWeaponMgr->GetMod(nScopeId); + if (!pMod) break; + + int nZoomLevel = pMod->nZoomLevel; + + // Figure out if our current weapon has a scope... + if (!m_bZooming && nZoomLevel > 0) + { + int nOldZoom = m_nZoomView; + + // KLS - Always zoom all the way out or in... + if (nOldZoom == nZoomLevel) + { + m_nZoomView = 0; + } + else + { + m_nZoomView = nZoomLevel; + } + // Remove above code and uncomment line below to do old + // step zoom behavoir + // m_nZoomView = (m_nZoomView + 1) % (nZoomLevel+1); + + if (m_nZoomView > nOldZoom) + { + m_bZooming = LTTRUE; + m_bZoomingIn = LTTRUE; + + if (nOldZoom == 0) + { + BeginZoom(); + } + + g_pInterfaceMgr->BeginZoom(LTTRUE); + HandleZoomChange(); + } + else if (m_nZoomView < nOldZoom) + { + m_bZooming = LTTRUE; + m_bZoomingIn = LTFALSE; + g_pInterfaceMgr->BeginZoom(LTFALSE); + HandleZoomChange(); + } + } + } + break; + + case COMMAND_ID_TURNAROUND : + { + m_fYaw += MATH_PI; + } + break; + + case COMMAND_ID_CENTERVIEW : + { + m_fPitch = 0.0f; + } + break; + + case COMMAND_ID_STRAFE: + { + m_bStrafing = LTTRUE; + } + break; + + case COMMAND_ID_MANUALAIM: + { + m_bManualAim = !m_bManualAim; + } + break; + + case COMMAND_ID_RUNLOCK : + { + if (!m_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + m_pMoveMgr->SetRunLock(!m_pMoveMgr->RunLock()); + } + } + break; + + case COMMAND_ID_DUCKLOCK : + { + if( !IsCarryingHeavyObject() && !m_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics()) + { + m_pMoveMgr->SetDuckLock(!m_pMoveMgr->DuckLock()); + } + } + break; + + case COMMAND_ID_JUMP : + case COMMAND_ID_DUCK : + { + m_pMoveMgr->SetDuckLock(LTFALSE); + } + break; + + default : + return LTFALSE; + break; + } + + return LTTRUE; + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnCommandOff() +// +// PURPOSE: Handle command off notification +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::OnCommandOff(int command) +{ + // See if the vehiclemgr would like to trap this + if(m_pMoveMgr->GetVehicleMgr()->OnCommandOff(command)) + { + return LTTRUE; + } + + switch (command) + { + case COMMAND_ID_STRAFE : + { + m_bStrafing = LTFALSE; + } + break; + + default : + return LTFALSE; + break; + } + + return LTTRUE; + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleMsgPlayerStateChange() +// +// PURPOSE: +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HandleMsgPlayerStateChange (ILTMessage_Read *pMsg) +{ + m_ePlayerState = (PlayerState) pMsg->Readuint8(); + + switch (m_ePlayerState) + { + case PS_DYING: + { + // Clear out any damagefx... + // Do this first since we may be unattaching the camera from the head when clearing out a + // damage fx. + + g_pDamageFXMgr->Clear(); + + AttachCameraToHead(LTTRUE); + + if( IsMultiplayerGame() ) + { + m_fMultiplayerDeathCamMoveTimer = 0.0f; + m_fMultiAttachDeathCamTimer = 0.0f; + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeCooperative: + { + m_fEarliestRespawnTime = g_pLTClient->GetTime() + ((CCharacterFX::GetNumPlayersInGame() > 1) ? + g_vtMultiplayerRespawnWaitTime.GetFloat() : + g_vtRespawnWaitTime.GetFloat()); + + } break; + case eGameTypeDoomsDay: + { + m_fEarliestRespawnTime = g_pLTClient->GetTime() + ((g_pInterfaceMgr->GetClientInfoMgr()->GetNumPlayersOnTeam() > 1) ? + g_vtDoomsdayRespawnWaitTime.GetFloat() : + g_vtRespawnWaitTime.GetFloat()); + + } break; + case eGameTypeDemolition: + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + default: + { + m_fEarliestRespawnTime = g_pLTClient->GetTime() + g_vtRespawnWaitTime.GetFloat(); + } break; + } + + // Clear the cancel revive setting. + if( IsRevivePlayerGameType( )) + { + SetCancelRevive( false ); + } + + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderDead); + g_pHUDMgr->QueueUpdate(kHUDRespawn); + } + else + { + m_fEarliestRespawnTime = g_pLTClient->GetTime() + g_vtRespawnWaitTime.GetFloat(); + + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderNone); + } + + if( g_pMoveMgr->GetVehicleMgr()->GetPhysicsModel() == PPM_LURE ) + { + // Get the playerlurefx. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( g_pMoveMgr->GetVehicleMgr()->GetPlayerLureId() ); + if( pPlayerLureFX ) + { + char const* pszDeathFX = pPlayerLureFX->GetDeathFX( ); + if( !pszDeathFX && pszDeathFX[0] != '\0' ) + { + LTVector vPos; + g_pLTClient->GetObjectPos( g_pMoveMgr->GetObject(), &vPos ); + + CLIENTFX_CREATESTRUCT fxInit( pszDeathFX, 0, vPos ); + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } + } + } + + ClearPlayerModes(); + + m_pClientWeaponMgr->OnPlayerDead(); + + g_pInterfaceMgr->AddToClearScreenCount(); + + if (!IsMultiplayerGame( )) + { + g_pGameClientShell->CSPrint(LoadTempString(IDS_YOUWEREKILLED)); + g_pInterfaceMgr->StartScreenFadeOut(g_vtScreenFadeOutTime.GetFloat()); + } + + } + break; + + case PS_ALIVE: + { +// g_pScores->Show(false); + g_pHUDMgr->QueueUpdate(kHUDRespawn); + g_pPickupMsgs->ClearHistory(); + g_pDamageFXMgr->Clear(); // Remove all the damage sfx + ClearDamageSectors(); + + g_pInterfaceMgr->ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + + AttachCameraToHead(LTFALSE); + + if( m_bRespawnRequested ) + { + // We're comming alive from a respawn so make sure we set the appropriate rotation... + + m_fPitch = m_vServerRot.x; + m_fYaw = m_vServerRot.y; + m_fRoll = m_vServerRot.z; + } + + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderFull); + + SetExternalCamera(LTFALSE); + + m_pClientWeaponMgr->OnPlayerAlive(); + + if( IsMultiplayerGame() ) + { + AllowPlayerMovement( LTTRUE ); + } + + // Since we are alive, disassociate any body from us... + + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_BODY_ID); + if( !pList ) return; + + int nNumBodies = pList->GetSize(); + + uint32 dwId; + g_pLTClient->GetLocalClientID( &dwId ); + + for( int i = 0; i < nNumBodies; ++i ) + { + if ((*pList)[i]) + { + CBodyFX* pBody = (CBodyFX*)(*pList)[i]; + + if( pBody->GetClientId() == dwId ) + { + pBody->RemoveClientAssociation( ); + } + } + } + + // Finished the respawn process... + m_bRespawnRequested = false; + } + break; + + case PS_DEAD: + { + g_pDamageFXMgr->Clear(); // Remove all the damage sfx + ClearDamageSectors(); + s_fDeadTimer = 0.0f; + } + break; + + case PS_GHOST: + { + AttachCameraToHead(LTFALSE); + m_pClientWeaponMgr->HideWeapons(); + + g_pInterfaceMgr->SetHUDRenderLevel(kHUDRenderNone); + + g_pInterfaceMgr->ForceScreenFadeIn(g_vtScreenFadeInTime.GetFloat()); + +// SetExternalCamera(LTTRUE); + + m_pClientWeaponMgr->DisableWeapons(); + } + break; + + default : break; + } + + +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleRespawn +// +// PURPOSE: Handle player respawn +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::HandleRespawn() +{ + if (!IsPlayerDead()) return; + + // if we're in multiplayer send the respawn command... + + if (IsMultiplayerGame()) + { + // When remotely connected there is a delay from this point to changing to the alive + // state so set this flag so the player knows it's respawning. This gets cleared + // once the player has switched to the alive state and the respawn process is complete... + m_bRespawnRequested = true; + + // send a message to the server telling it that it's ok to respawn us now... + SendEmptyServerMsg(MID_PLAYER_RESPAWN); + return; + } + else // Bring up load game menu... + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_LOAD); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::PreRender() +// +// PURPOSE: Sets up the client for rendering +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::PreRender() +{ + if (!m_bCameraPosInited) return LTFALSE; + + // Make sure the rendered player object is right where it should be. + + UpdateServerPlayerModel(); + + // Make sure we process attachments before updating the weapon model + // and special fx...(some fx are based on attachment positions/rotations) + + g_pLTClient->ProcessAttachments(g_pLTClient->GetClientObject()); + + // Make sure the weapon is updated before we render the camera... + + UpdateWeaponModel(); + + // Make sure the move-mgr models are updated before we render... + + m_pMoveMgr->UpdateModels(); + + // Update the flash light... + + m_pFlashLight->Update(); + + + return LTTRUE; +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdatePlayerCamera() +// +// PURPOSE: Update the player camera +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::UpdatePlayerCamera() +{ + // Make sure our player camera is attached... + + if (m_pPlayerCamera->GetAttachedObject() != m_pMoveMgr->GetObject()) + { + m_pPlayerCamera->AttachToObject(m_pMoveMgr->GetObject()); + } + + if (m_pPlayerCamera->IsChaseView()) + { + // Init the camera so they can be adjusted via the console... + + InitPlayerCamera(); + + Update3rdPersonInfo(); + } + + + // Update our camera position based on the player camera... + + m_pPlayerCamera->CameraUpdate(g_pGameClientShell->GetFrameTime()); + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::InitPlayerCamera() +// +// PURPOSE: Update the player camera +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::InitPlayerCamera() +{ + LTVector vOffset(0.0f, 0.0f, 0.0f); + vOffset.y = g_vtChaseCamOffset.GetFloat(); + + m_pPlayerCamera->SetDistUp(g_vtChaseCamDistUp.GetFloat()); + m_pPlayerCamera->SetDistBack(g_vtChaseCamDistBack.GetFloat()); + m_pPlayerCamera->SetPointAtOffset(vOffset); + m_pPlayerCamera->SetChaseOffset(vOffset); + m_pPlayerCamera->SetCameraState(CPlayerCamera::SOUTH); + + // Determine the first person offset... + + vOffset = g_vPlayerCameraOffset; + + CCharacterFX* pChar = m_pMoveMgr->GetCharacterFX(); + if (pChar) + { + vOffset = GetPlayerHeadOffset( ); + } + + m_pPlayerCamera->SetFirstPersonOffset(vOffset); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraPosition() +// +// PURPOSE: Update the camera position +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateCameraPosition() +{ + LTVector vPos = m_pPlayerCamera->GetPos(); + + if (m_pPlayerCamera->IsFirstPerson()) + { + // Special case of camera being attached to the player's head + // (i.e., death)... + if (m_bCameraAttachedToHead) + { + + LTVector vHeadPos; + LTRotation rHeadRot; + + HLOCALOBJ hPlayer = g_pLTClient->GetClientObject(); + + // Make sure we never go backwards in our animation... + + uint32 dwCurTime = 0; + static uint32 dwPrevTime = 0; + + g_pModelLT->GetCurAnimTime( hPlayer, MAIN_TRACKER, dwCurTime ); + + if( (dwCurTime > 0) && (dwCurTime < dwPrevTime) ) + { + uint32 dwFrameTime = (uint32)(10000.0f * g_pGameClientShell->GetFrameTime()); + g_pModelLT->SetCurAnimTime( hPlayer, MAIN_TRACKER, dwPrevTime + dwFrameTime ); + } + dwPrevTime = dwCurTime; + + GetPlayerHeadPosRot(vHeadPos, rHeadRot); + vPos = vHeadPos; + + if( m_bLerpAttachedCamera ) + { + m_rRotation.Slerp( m_rRotation, rHeadRot, g_vtAttachedCamInterpolationRate.GetFloat( 0.1f ) ); + } + else + { + m_rRotation = rHeadRot; + } + + //save this rotation into the yaw pitch and roll as well so that when we + //come out of the attached mode, our view won't pop + EulerAngles EA = Eul_FromQuat( m_rRotation, EulOrdYXZr ); + + m_fModelAttachYaw = EA.x; + m_fModelAttachPitch = EA.y; + m_fModelAttachRoll = EA.z; + } + else + { + //normal updating of the head position + m_pHeadBobMgr->AdjustCameraPos(vPos); + + vPos.y += m_fCamDuck; + vPos += m_pCameraOffsetMgr->GetPosDelta(); + } + } + else + { + m_rRotation = m_pPlayerCamera->GetRotation(); + } + + g_pLTClient->SetObjectPos(m_hCamera, &vPos); + + + m_bCameraPosInited = LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateMultiplayerCameraPosition() +// +// PURPOSE: Update the camera position while in a multiplayer game... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateMultiplayerCameraPosition() +{ + // If the player is alive, or in the middle of the respawn process, don't do anything special. + // Just treat like single player.... + + if( IsPlayerDead() ) + { + HOBJECT hBody = NULL; + + // We actually want to use the body prop, so... + + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_BODY_ID); + if (!pList) return; + + int nNumBodies = pList->GetSize(); + + uint32 dwId; + g_pLTClient->GetLocalClientID(&dwId); + + float fNewestBodyTime = -1.0f; + + for (int i=0; i < nNumBodies; i++) + { + if ((*pList)[i]) + { + CBodyFX* pBody = (CBodyFX*)(*pList)[i]; + + if( (pBody->GetClientId() == dwId) && (pBody->GetTimeCreated() > fNewestBodyTime) ) + { + // Keep the newest body belonging to this client... + + fNewestBodyTime = pBody->GetTimeCreated(); + hBody = pBody->GetServerObj(); + } + } + } + + + if( hBody ) + { + bool bTimesUp = (m_fMultiAttachDeathCamTimer > g_vtMultiAttachDeathCamMaxTime.GetFloat()); + + // Increment our attach camera timer...Always increment this even if we're + // not attached since we may become unattached at some point... + + m_fMultiAttachDeathCamTimer += g_pLTClient->GetFrameTime(); + + // Check the body to see if the death animation has finished playing.... + + uint32 dwFlags; + g_pModelLT->GetPlaybackState( hBody, MAIN_TRACKER, dwFlags ); + if( (dwFlags & MS_PLAYDONE) || bTimesUp ) + { + // Detach from the head and float above the body... + + LTVector vFinalCamPos; + LTRotation rAniCamRot; + LTVector vAniCamPos; + + // Get the position of where the camera left off in the animation... + + GetPlayerHeadPosRot( vAniCamPos, rAniCamRot ); + + // Offset the camera position from the position of the body... + + g_pLTClient->GetObjectPos( hBody, &vFinalCamPos); + vFinalCamPos += GetPlayerHeadOffset( ); + + // Detach the camera and then get the rotation from the animation rotation... + + AttachCameraToHead( LTFALSE ); + LTRotation rRot( m_fPitch, m_fYaw, m_fRoll ); + + m_fMultiplayerDeathCamMoveTimer += g_pLTClient->GetFrameTime(); + + float fMoveDelta = g_vtMultiplayerDeathCamMoveTime.GetFloat( 3.0f ); + float fPercent = (fMoveDelta > 0.0f ? m_fMultiplayerDeathCamMoveTimer / fMoveDelta : 0.0f); + float fT = Clamp( fPercent, 0.0f, 1.0f ); + + LTVector vLerped; + VEC_LERP( vLerped, vAniCamPos, vFinalCamPos, fT ); + + // Don't clip the camera into the world... + + m_pPlayerCamera->CalcNonClipPos( vLerped, rRot ); + + g_pLTClient->SetObjectPos( m_hCamera, &vLerped ); + m_bCameraPosInited = LTTRUE; + + return; + } + else + { + // Sometimes the death animation is multiple animations, so we'll make + // sure to keep the camera attached if an animation is playing... + + AttachCameraToHead(LTTRUE); + } + } + } + + // The player is alive, has no body, or the body is still animating. Just use the normal position... + + UpdateCameraPosition(); + return; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::CalculateCameraRotation() +// +// PURPOSE: Calculate the new camera rotation +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::CalculateCameraRotation() +{ + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return; + + LTBOOL bIsVehicle = m_pMoveMgr->GetVehicleMgr()->IsVehiclePhysics(); + + float fVal = 1.0f + (float)(3 * m_nZoomView); + + // Get axis offsets... + + float offsets[3]; + g_pLTClient->GetAxisOffsets(offsets); + + if (m_bRestoreOrientation) + { + offsets[0] = offsets[1] = offsets[2] = 0.0f; + m_bRestoreOrientation = LTFALSE; + } + + if (m_bStrafing) + { + // Clear yaw and pitch offsets if we're using mouse strafing... + offsets[0] = offsets[1] = 0.0f; + } + + float fYawDelta = offsets[0] / fVal; + float fPitchDelta = offsets[1] / fVal; + + if (g_vtAdaptiveMouse.GetFloat() && fYawDelta != 0.0f) + { + float fMaxOff = g_vtAdaptiveMouseMaxOffset.GetFloat(); + float fAbsYawDelta = (float)fabs(fYawDelta); + bool bNegative = (fYawDelta < 0.0f); + + g_pLTClient->CPrint("Initial fYawDelta = %.6f", fYawDelta); + + if (fAbsYawDelta <= fMaxOff) + { + fVal = fAbsYawDelta / fMaxOff; + fYawDelta = (WaveFn_SlowOn(fVal) * fMaxOff); + fYawDelta = bNegative ? -fYawDelta : fYawDelta; + + g_pLTClient->CPrint("Adjusted fYawDelta = %.6f", fYawDelta); + } + } + + // [kml] 12/26/00 Check varying degrees of strafe and look. + if(!(m_dwPlayerFlags & BC_CFLG_STRAFE)) + { + if(m_dwPlayerFlags & BC_CFLG_LEFT) + { + fYawDelta = -1.0f * g_pGameClientShell->GetFrameTime() * ((m_dwPlayerFlags & BC_CFLG_RUN) ? g_vtFastTurnRate.GetFloat() : g_vtNormalTurnRate.GetFloat()); + } + if(m_dwPlayerFlags & BC_CFLG_RIGHT) + { + fYawDelta = g_pGameClientShell->GetFrameTime() * ((m_dwPlayerFlags & BC_CFLG_RUN) ? g_vtFastTurnRate.GetFloat() : g_vtNormalTurnRate.GetFloat()); + } + } + + m_fYaw += fYawDelta; + + float fTempPitch = m_fPitch; + if (pSettings->MouseLook() || (m_dwPlayerFlags & BC_CFLG_LOOKUP) || (m_dwPlayerFlags & BC_CFLG_LOOKDOWN) + || m_bHoldingMouseLook) + { + if (pSettings->MouseLook() || m_bHoldingMouseLook) + { + if (pSettings->MouseInvertY()) + { + fTempPitch -= fPitchDelta; + } + else + { + fTempPitch += fPitchDelta; + } + } + + if(m_dwPlayerFlags & BC_CFLG_LOOKUP) + { + fTempPitch -= g_pGameClientShell->GetFrameTime() * g_vtLookUpRate.GetFloat(); + } + + if(m_dwPlayerFlags & BC_CFLG_LOOKDOWN) + { + fTempPitch += g_pGameClientShell->GetFrameTime() * g_vtLookUpRate.GetFloat(); + } + // Don't allow much movement up/down if 3rd person... + + if (!m_pPlayerCamera->IsFirstPerson()) + { + static float const fMinY = DEG2RAD(45.0f) - 0.1f; + + if (fTempPitch < -fMinY) fTempPitch = -fMinY; + if (fTempPitch > fMinY) fTempPitch = fMinY; + } + } + else if (fTempPitch != 0.0f && GetConsoleInt("AutoCenter",0)) + { + float fPitchDelta = (g_pGameClientShell->GetFrameTime() * g_vtLookUpRate.GetFloat()); + if (fTempPitch > 0.0f) fTempPitch -= Min(fPitchDelta, fTempPitch); + if (fTempPitch < 0.0f) fTempPitch += Min(fPitchDelta, -fTempPitch); + } + + static float const fMinY = MATH_HALFPI - 0.1f; + fTempPitch = Clamp( fTempPitch, -fMinY, fMinY ); + + // Calculate the final pitch delta and set the final pitch. + fPitchDelta = fTempPitch - m_fPitch; + m_fPitch = fTempPitch; + + // Set camera and player variables... + + // Only use mouse values for yaw if the player isn't on a vehicle... + + if (bIsVehicle) + { + // Can't look up/down on vehicles... + + LTVector vPlayerPYR(m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); + LTVector vPYR(m_fPitch, m_fYaw, m_fRoll); + + m_pMoveMgr->GetVehicleMgr()->CalculateVehicleRotation( vPlayerPYR, vPYR, fYawDelta, fPitchDelta ); + + m_fPlayerPitch = vPlayerPYR.x; + m_fPlayerYaw = vPlayerPYR.y; + m_fPlayerRoll = vPlayerPYR.z; + + m_fPitch = vPYR.x; + m_fYaw = vPYR.y; + m_fRoll = vPYR.z; + + } + else // Not vehicle... + { + m_fPlayerPitch = 0.0f; + m_fPlayerYaw = m_fYaw; + m_fPlayerRoll = m_fRoll; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateCameraRotation() +// +// PURPOSE: Set the new camera rotation +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::UpdateCameraRotation() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj) return LTFALSE; + + // Update camera orientation vars... + + LTVector vPitchYawRollDelta = m_pCameraOffsetMgr->GetPitchYawRollDelta(); + + if (m_bUsingExternalCamera) + { + // Just calculate the correct player rotation... + + m_rRotation = LTRotation(m_fPitch, m_fYaw, m_fRoll); + } + else if (m_pPlayerCamera->IsFirstPerson()) + { + if (!m_bCameraAttachedToHead) + { + float fPitch = m_fPitch + vPitchYawRollDelta.x; + float fYaw = m_fYaw + vPitchYawRollDelta.y; + float fRoll = m_fRoll + vPitchYawRollDelta.z; + + m_rRotation = LTRotation(fPitch, fYaw, fRoll); + } + + g_pLTClient->SetObjectRotation(m_hCamera, &m_rRotation); + } + else + { + // Set the camera to use the rotation calculated by the player camera, + // however we still need to calculate the correct rotation to be sent + // to the player... + + float fAdjust = DEG2RAD(g_vtChaseCamPitchAdjust.GetFloat()); + m_rRotation.Rotate(m_rRotation.Right(), m_fPitch + fAdjust); + g_pLTClient->SetObjectRotation(m_hCamera, &m_rRotation); + + // Okay, now calculate the correct player rotation... + m_rRotation = LTRotation(m_fPitch, m_fYaw, m_fRoll); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Update3rdPersonInfo +// +// PURPOSE: Update the 3rd person cross hair / camera info +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::Update3rdPersonInfo() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj || IsPlayerDead()) return; + + HOBJECT hFilterList[] = {hPlayerObj, m_pMoveMgr->GetObject(), NULL}; + + + ClientIntersectInfo info; + ClientIntersectQuery query; + LTVector vPlayerPos, vForward; + + g_pLTClient->GetObjectPos(hPlayerObj, &vPlayerPos); + + float fCrosshairDist = -1.0f; + float fCameraOptZ = g_vtChaseCamDistBack.GetFloat(); + + // Figure out crosshair distance... + IClientWeaponBase* pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + if (g_pInterfaceMgr->IsCrosshairOn() && pClientWeapon) + { + WEAPON const *pWeapon = pClientWeapon->GetWeapon(); + if (!pWeapon) return; + + fCrosshairDist = (float) pWeapon->nRange; + + vForward = m_rRotation.Forward(); + + // Determine where the cross hair should be... + + LTVector vStart, vEnd, vPos; + VEC_COPY(vStart, vPlayerPos); + VEC_MULSCALAR(vEnd, vForward, fCrosshairDist); + VEC_ADD(vEnd, vEnd, vStart); + + VEC_COPY(query.m_From, vStart); + VEC_COPY(query.m_To, vEnd); + + query.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID; + query.m_FilterFn = ObjListFilterFn; + query.m_pUserData = hFilterList; + + if (g_pLTClient->IntersectSegment (&query, &info)) + { + VEC_COPY(vPos, info.m_Point); + } + else + { + VEC_COPY(vPos, vEnd); + } + + LTVector vTemp; + VEC_SUB(vTemp, vPos, vStart); + + fCrosshairDist = VEC_MAG(vTemp); + } + + + // Figure out optinal camera distance... + + LTRotation rRot; + g_pLTClient->GetObjectRotation(hPlayerObj, &rRot); + vForward = rRot.Forward(); + + // Determine how far behind the player the camera can go... + + LTVector vEnd; + vEnd = vForward * -fCameraOptZ + vPlayerPos; + + query.m_From = vPlayerPos; + query.m_To = vEnd; + + query.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID; + query.m_FilterFn = ObjListFilterFn; + query.m_pUserData = hFilterList; + + if (g_pLTClient->IntersectSegment (&query, &info)) + { + LTVector vTemp; + VEC_SUB(vTemp, info.m_Point, vPlayerPos); + float fDist = VEC_MAG(vTemp); + + fCameraOptZ = fDist < fCameraOptZ ? -(fDist - 5.0f) : -fCameraOptZ; + } + else + { + fCameraOptZ = -fCameraOptZ; + } + + + m_pPlayerCamera->SetOptZ(fCameraOptZ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdatePlayerFlags +// +// PURPOSE: Update our copy of the movement flags +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdatePlayerFlags() +{ + // Update flags... + + m_dwPlayerFlags = m_pMoveMgr->GetControlFlags(); + + if (g_pLTClient->IsCommandOn(COMMAND_ID_LOOKUP)) + { + m_dwPlayerFlags |= BC_CFLG_LOOKUP; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_LOOKDOWN)) + { + m_dwPlayerFlags |= BC_CFLG_LOOKDOWN; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdatePlayerInfo() +// +// PURPOSE: Tell the player about the new camera stuff +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdatePlayerInfo(bool bPlaying) +{ + if (m_bAllowPlayerMovement != m_bLastAllowPlayerMovement) + { + g_pGameClientShell->SetInputState(!!m_bAllowPlayerMovement); + } + + if (m_pPlayerCamera->IsChaseView() != m_bLastSent3rdPerson) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_3RDPERSON; + m_bLastSent3rdPerson = m_pPlayerCamera->IsChaseView(); + + if (m_pPlayerCamera->IsChaseView()) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_3RDPERVAL; + } + } + + if (m_bAllowPlayerMovement != m_bLastAllowPlayerMovement) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_ALLOWINPUT; + } + + // Always send CLIENTUPDATE_ALLOWINPUT changes guaranteed... + + if (m_nPlayerInfoChangeFlags & CLIENTUPDATE_ALLOWINPUT) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_UPDATE); + cMsg.Writeuint8(CLIENTUPDATE_ALLOWINPUT); + cMsg.Writeuint8((uint8)m_bAllowPlayerMovement); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_ALLOWINPUT; + } + + float fCurTime = g_pLTClient->GetTime(); + float fSendRate = 1.0f / g_CV_CSendRate.GetFloat(DEFAULT_CSENDRATE); + float fSendDelta = (fCurTime - m_fPlayerInfoLastSendTime); + + bool bSendUnique = (fCurTime - m_fPlayerInfoLastUniqueSendTime) > (1.0f / g_CV_CSendRate_Min.GetFloat(DEFAULT_CSENDRATE_MIN)); + + if ( m_pMoveMgr->IsInWorld() && (!g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) || fSendDelta > fSendRate)) + { + CAutoMessage cMsg; + + cMsg.Writeuint8(MID_PLAYER_UPDATE); + + uint8 nCurCompRot, nCurCompPitch; + + LTRotation rPlayerRot(m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); + nCurCompRot = CompressRotationByte( &rPlayerRot ); + nCurCompPitch = CompressAngleToByte( m_fPitch ); + + if (g_vtPlayerRotate.GetFloat(1.0) > 0.0) + { + PlayerPhysicsModel PPM = m_pMoveMgr->GetVehicleMgr()->GetPhysicsModel(); + if( PPM_VEHICLE == PPM ) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_FULLPLAYERROT; + + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_ACCURATEPLAYERROT; + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_PLAYERROT; + } + else if( m_bServerAccurateRotation ) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_ACCURATEPLAYERROT; + + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_PLAYERROT; + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_FULLPLAYERROT; + } + else + { + + if (bSendUnique || (nCurCompRot != m_nPlayerInfoLastCompRot) || (nCurCompPitch != m_nPlayerInfoLastCompPitch)) + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_PLAYERROT; + else + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_PLAYERROT; + + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_ACCURATEPLAYERROT; + m_nPlayerInfoChangeFlags &= ~CLIENTUPDATE_FULLPLAYERROT; + } + } + + if ( m_bSendCameraOffsetToServer ) + { + m_nPlayerInfoChangeFlags |= CLIENTUPDATE_CAMERAOFFSET; + } + + ASSERT((m_nPlayerInfoChangeFlags & ~0xFF) == 0); + cMsg.Writeuint8((uint8)m_nPlayerInfoChangeFlags); + + if (m_nPlayerInfoChangeFlags & CLIENTUPDATE_PLAYERROT) + { + // Set the player's rotation (don't allow model to rotate up/down). + cMsg.Writeuint8(nCurCompRot); + m_nPlayerInfoLastCompRot = nCurCompRot; + } + else if ( m_nPlayerInfoChangeFlags & CLIENTUPDATE_ACCURATEPLAYERROT ) + { + + LTRotation rPlayerRot( m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll ); + cMsg.Writeuint16( CompressRotationShort( &rPlayerRot ) ); + } + else if( m_nPlayerInfoChangeFlags & CLIENTUPDATE_FULLPLAYERROT ) + { + LTRotation rPlayerRot( m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); + cMsg.WriteCompLTRotation( rPlayerRot ); + } + + if ( m_nPlayerInfoChangeFlags & ( CLIENTUPDATE_PLAYERROT | CLIENTUPDATE_ACCURATEPLAYERROT ) ) + { + // + // pitch + // + + // and write it to the message. + cMsg.Writeuint8( nCurCompPitch ); + m_nPlayerInfoLastCompPitch = nCurCompPitch; + } + + // write the camera offset + if ( m_nPlayerInfoChangeFlags & CLIENTUPDATE_CAMERAOFFSET ) + { + LTRESULT ltResult; + + // Get the fire position from the camera + LTVector vCameraPosition; + + // get the camera + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + + if ( g_pPlayerMgr->IsFirstPerson() && + ( !g_pPlayerMgr->IsUsingExternalCamera() ) && + ( 0 != hCamera ) ) + { + // we're in 1st person and not using an external camera, + + // get the camera's position + ltResult = g_pLTClient->GetObjectPos( hCamera, &vCameraPosition ); + ASSERT( LT_OK == ltResult ); + } + else + { + HMODELNODE hPlayerHeadNode; + LTransform transHeadNode; + + // external camera, figure out where the model's head + // is and use that. It won't be as accurate but it is + // better than nothing. + + // get the head node + ltResult = g_pModelLT->GetNode( g_pLTClient->GetClientObject(), + "Head_node", + hPlayerHeadNode ); + ASSERT( LT_OK == ltResult ); + + // get the node's transform + ltResult = + g_pModelLT->GetNodeTransform( g_pLTClient->GetClientObject(), + hPlayerHeadNode, + transHeadNode, + true ); + ASSERT( LT_OK == ltResult ); + + // fake the camera position + ltResult = + g_pLTClient->GetTransformLT()->GetPos( transHeadNode, + vCameraPosition ); + ASSERT( LT_OK == ltResult ); + } + + // get the player's position + LTVector vPlayerPosition; + ltResult = g_pLTClient->GetObjectPos( g_pMoveMgr->GetObject(), + &vPlayerPosition ); + ASSERT( LT_OK == ltResult ); + + // get the camera offset + LTVector vOffset = vCameraPosition - vPlayerPosition; + + TVector3< short > vCompressedOffset; + + // compress the offset + bool result = CompressOffset( &vCompressedOffset, vOffset, 100 ); + ASSERT( true == result ); + + // write the offset to the message + cMsg.Writeuint16( vCompressedOffset.x ); + + cMsg.Writeuint16( vCompressedOffset.y ); + + cMsg.Writeuint16( vCompressedOffset.z ); + + } + + // Write the control flags + + if (bPlaying) + cMsg.Writeuint32(g_pMoveMgr->GetControlFlags()); + else + cMsg.Writeuint32(g_pMoveMgr->GetControlFlags() & BC_CFLG_DUCK); + + // Write position info... + { + CAutoMessage cMoveMsg; + m_pMoveMgr->WritePositionInfo(cMoveMsg); + CLTMsgRef_Read cMoveMsg_Read = cMoveMsg.Read(); + if (bSendUnique || !AreMessagesEqual(cMoveMsg_Read, m_cLastPlayerInfoMoveMsg)) + { + cMsg.Writebool(1); + cMsg.WriteMessageRaw(cMoveMsg_Read); + + m_cLastPlayerInfoMoveMsg = cMoveMsg_Read; + } + else + cMsg.Writebool(0); + } + + CLTMsgRef_Read cNewMsg = cMsg.Read(); + // Compare the messages... + bool bMsgChange = bSendUnique || !AreMessagesEqual(cNewMsg, m_cLastPlayerInfoMsg); + // Don't send the message if it's the same as last time. + if (bMsgChange) + { + m_cLastPlayerInfoMsg = cNewMsg; + g_pLTClient->SendToServer(cNewMsg, 0); + + m_fPlayerInfoLastUniqueSendTime = fCurTime; + } + + m_fPlayerInfoLastSendTime = fCurTime; + m_nPlayerInfoChangeFlags = 0; + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsFirstPerson() +// +// PURPOSE: See if we are in first person mode +// +// --------------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::IsFirstPerson() +{ + return m_pPlayerCamera->IsFirstPerson(); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsFirstPerson() +// +// PURPOSE: See if we are going into first person mode... +// +// --------------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::IsGoingFirstPerson() +{ + return m_pPlayerCamera->IsGoingFirstPerson(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsPlayerInWorld() +// +// PURPOSE: See if the player is in the world +// +// --------------------------------------------------------------------------- // + +LTBOOL CPlayerMgr::IsPlayerInWorld() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + + if (!g_pGameClientShell->IsServerLoaded( ) || !g_pGameClientShell->IsWorldLoaded() || m_ePlayerState == PS_UNKNOWN || !hPlayerObj) return LTFALSE; + + return LTTRUE; +} + +void CPlayerMgr::GetCameraRotation(LTRotation &rRot) +{ + rRot = LTRotation(m_fPitch, m_fYaw, m_fRoll); +} + +void CPlayerMgr::GetPlayerRotation(LTRotation &rRot) +{ + rRot = LTRotation(m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: UpdateModelGlow +// +// PURPOSE: Update the current model glow color +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateModelGlow() +{ + float fColor = 0.0f; + float fMin = g_vtModelGlowMin.GetFloat(); + float fMax = g_vtModelGlowMax.GetFloat(); + float fColorRange = fMax - fMin; + float fTimeRange = g_vtModelGlowTime.GetFloat(); + + if (m_bModelGlowCycleUp) + { + if (m_fModelGlowCycleTime < fTimeRange) + { + fColor = fMin + (fColorRange * (m_fModelGlowCycleTime / fTimeRange)); + m_vCurModelGlow.Init(fColor, fColor, fColor); + } + else + { + m_fModelGlowCycleTime = 0.0f; + m_vCurModelGlow.Init(fMax, fMax, fMax); + m_bModelGlowCycleUp = LTFALSE; + return; + } + } + else + { + if (m_fModelGlowCycleTime < fTimeRange) + { + fColor = fMax - (fColorRange * (m_fModelGlowCycleTime / fTimeRange)); + m_vCurModelGlow.Init(fColor, fColor, fColor); + } + else + { + m_fModelGlowCycleTime = 0.0f; + m_vCurModelGlow.Init(fMin, fMin, fMin); + m_bModelGlowCycleUp = LTTRUE; + return; + } + } + + if (!g_pGameClientShell->IsServerPaused()) + { + m_fModelGlowCycleTime += g_pGameClientShell->GetFrameTime(); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ClearCurContainerCode +// +// PURPOSE: Clear our current container info. +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::ClearCurContainerCode() +{ + //make sure we clear out any tinting that the container may have been doing + g_pGameClientShell->GetLightScaleMgr()->ClearLightScale(CLightScaleMgr::eLightScaleEnvironment); + + m_eCurContainerCode = CC_NO_CONTAINER; + m_nSoundFilterId = 0; +} + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HandleWeaponDisable +// +// PURPOSE: Handle the weapon being disabled... +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::HandleWeaponDisable(LTBOOL bDisabled) +{ + if (bDisabled) + { + ClearPlayerModes(LTTRUE); + } + else + { + // Force us to re-evaluate what container we're in. We call + // UpdateContainers() first to make sure any container changes + // have been accounted for, then we clear the container code + // and force an update (this is done for underwater situations like + // dying underwater and respawning, and also for picking up intelligence + // items underwater)... + + if (IsPlayerInWorld()) + { + UpdateContainers(); + ClearCurContainerCode(); + UpdateContainers(); + } + + m_pClientWeaponMgr->ShowWeapons(); + } + } + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ClearPlayerModes +// +// PURPOSE: Clear any special modes the player is in +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::ClearPlayerModes(LTBOOL bWeaponOnly) +{ + HandleZoomChange( LTTRUE ); + EndZoom(); + + if (!bWeaponOnly) + { + EndSpyVision(); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::RestorePlayerModes +// +// PURPOSE: Restore any special modes the player was in +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::RestorePlayerModes() +{ + if (m_bSpyVision) + { + BeginSpyVision(); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::AttachCameraToHead +// +// PURPOSE: Attach the camera to a socket in the player's head +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::AttachCameraToHead( bool bAttach, bool bInterpolate ) +{ + // We don't want to reset our orientations if we are currently doing what was requested... + + if( m_bCameraAttachedToHead == bAttach ) + return; + + //set the new value + m_bCameraAttachedToHead = bAttach; + m_bLerpAttachedCamera = bInterpolate; + + //if we are enabling, then cache our values + if(bAttach) + { + m_fModelAttachPitch = m_fPitch; + m_fModelAttachYaw = m_fYaw; + m_fModelAttachRoll = m_fRoll; + } + else + { + //we are disabling, make our animation orientation our actual orientation + m_fPitch = m_fModelAttachPitch; + m_fYaw = m_fModelAttachYaw; + m_fRoll = m_fModelAttachRoll; + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::GetPlayerHeadPos +// +// PURPOSE: Get the player's head position +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::GetPlayerHeadPosRot(LTVector & vPos, LTRotation & rRot) +{ + HMODELSOCKET hSocket = INVALID_MODEL_SOCKET; + HOBJECT hBody = NULL; // g_pLTClient->GetClientObject(); + + // We actually want to use the body prop, so... + + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_BODY_ID); + if (!pList) return; + + int nNumBodies = pList->GetSize(); + + uint32 dwId; + g_pLTClient->GetLocalClientID(&dwId); + + float fNewestBodyTime = -1.0f; + + for (int i=0; i < nNumBodies; i++) + { + if ((*pList)[i]) + { + CBodyFX* pBody = (CBodyFX*)(*pList)[i]; + + if( (pBody->GetClientId() == dwId) && (pBody->GetTimeCreated() > fNewestBodyTime) ) + { + // Keep the newest body belonging to this client... + + fNewestBodyTime = pBody->GetTimeCreated(); + hBody = pBody->GetServerObj(); + } + } + } + + if( !hBody ) + { + // If we are alive then we don't have a body and we should use the client object... + + hBody = g_pLTClient->GetClientObject(); + } + + + if (hBody) + { + g_pModelLT->ApplyAnimations( hBody ); + + if (g_pModelLT->GetSocket(hBody, "Eyes", hSocket) == LT_OK) + { + LTransform transform; + if (g_pModelLT->GetSocketTransform(hBody, hSocket, transform, LTTRUE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + m_pPlayerCamera->CalcNonClipPos(vPos, rRot); + } + } + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::DoActivate +// +// PURPOSE: Tell the server to do Activate +// +// --------------------------------------------------------------------------- // + +bool CPlayerMgr::DoActivate() +{ + char const* pActivateOverride = g_vtActivateOverride.GetStr(); + if (pActivateOverride && pActivateOverride[0] != ' ') + { + g_pLTClient->RunConsoleString(( char* )pActivateOverride); + return true; + } + + CActivationData data = GetTargetMgr()->GetActivationData(); + + //don't revive if we are too close + if (data.m_nType == MID_ACTIVATE_REVIVE && !GetTargetMgr()->CanActivateTarget() ) + return false; + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_ACTIVATE); + data.Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + return true; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::Teleport +// +// PURPOSE: Tell the server to teleport to the specified point +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::Teleport(const LTVector & vPos) +{ +#ifndef _FINAL // Don't allow player teleporing in the final version... + + LTVector vPitchYawRoll(m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_TELEPORT); + cMsg.WriteLTVector(vPos); + cMsg.WriteLTVector(vPitchYawRoll); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + +#endif // _FINAL +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateServerPlayerModel() +// +// PURPOSE: Puts the server's player model where our invisible one is +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateServerPlayerModel() +{ + HOBJECT hClientObj, hRealObj; + + if (!(hClientObj = g_pLTClient->GetClientObject())) return; + + if (!(hRealObj = m_pMoveMgr->GetObject())) return; + + LTVector myPos; + g_pLTClient->GetObjectPos(hRealObj, &myPos); + g_pLTClient->SetObjectPos(hClientObj, &myPos); + + if (g_vtPlayerRotate.GetFloat(1.0) > 0.0) + { + LTRotation myRot(m_fPlayerPitch, m_fPlayerYaw, m_fPlayerRoll); + g_pLTClient->SetObjectRotation(hClientObj, &myRot); + } +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateContainers +// +// PURPOSE: Update anything associated with being in a container +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateContainers() +{ + LTVector vCamPos; + g_pLTClient->GetObjectPos(m_hCamera, &vCamPos); + + LTVector vScale(1.0f, 1.0f, 1.0f), vLightAdd(0.0f, 0.0f, 0.0f); + + char* pCurSound = NULL; + uint8 nSoundFilterId = 0; + uint32 dwUserFlags = USRFLG_VISIBLE; + m_bUseWorldFog = LTTRUE; + + // We'll update this below... + + m_bInSafetyNet = false; + + // [KLS 4/16/02] Find container objects that we care about... + + HLOCALOBJ hContainerObj = LTNULL; + ContainerCode eCode = CC_NO_CONTAINER; + + HLOCALOBJ objList[MAX_OVERLAPPING_CONTAINERS]; + uint32 nContainerFlags = (CC_ALL_FLAG & ~CC_PLAYER_IGNORE_FLAGS); + uint32 dwNum = ::GetPointContainers(vCamPos, objList, MAX_OVERLAPPING_CONTAINERS, nContainerFlags); + + for (uint32 i=0; i < dwNum; i++) + { + uint16 code; + if (g_pLTClient->GetContainerCode(objList[i], &code)) + { + ContainerCode eTempCode = (ContainerCode)code; + + // Ignore dynamic occluder volumes... + if (CC_DYNAMIC_OCCLUDER_VOLUME != eTempCode) + { + // [KEF 9/03/02] Allow sound filter volumes to be overridden if needed + + // [KLS 9/07/02] Modified so we look at all the containers on the list, + // and save off saftey nets separately... + + if (CC_SAFTEY_NET == eTempCode) + { + // Don't count this as a normal container as it has one specific + // purpose ONLY (protect the player)... + m_bInSafetyNet = true; + } + else if (CC_NO_CONTAINER == eCode || CC_FILTER == eCode) + { + hContainerObj = objList[i]; + eCode = eTempCode; + } + } + } + } + + + // Update Dynamic occluders... + + UpdateDynamicOccluders(objList, dwNum); + + + if (hContainerObj) + { + // Check for weather volume brush first (weather volume brushes + // should never overlap normal volume brushes) + + CVolumeBrushFX* pFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_WEATHER_ID, hContainerObj)); + if (!pFX) + { + pFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_VOLUMEBRUSH_ID, hContainerObj)); + } + + pFX = UpdateVolumeBrushFX(pFX, eCode); + + // See if we have entered/left a container... + + float fTime = g_pLTClient->GetTime(); + + if (m_eCurContainerCode != eCode) + { + m_fContainerStartTime = fTime; + + if (pFX) + { + // Set the sound filter override... + + nSoundFilterId = pFX->GetSoundFilterId(); + + // See if this container has fog associated with it.. + + LTBOOL bFog = pFX->IsFogEnable(); + + if (bFog) + { + m_bUseWorldFog = LTFALSE; + + char buf[30]; + sprintf(buf, "FogEnable %d", (int)bFog); + g_pLTClient->RunConsoleString(buf); + + sprintf(buf, "FogNearZ %d", (int)pFX->GetFogNearZ()); + g_pLTClient->RunConsoleString(buf); + + sprintf(buf, "FogFarZ %d", (int)pFX->GetFogFarZ()); + g_pLTClient->RunConsoleString(buf); + + LTVector vFogColor = pFX->GetFogColor(); + + sprintf(buf, "FogR %d", (int)vFogColor.x); + g_pLTClient->RunConsoleString(buf); + + sprintf(buf, "FogG %d", (int)vFogColor.y); + g_pLTClient->RunConsoleString(buf); + + sprintf(buf, "FogB %d", (int)vFogColor.z); + g_pLTClient->RunConsoleString(buf); + } + + // Get the tint color... + + vScale = pFX->GetTintColor(); + vScale /= 255.0f; + + vLightAdd = pFX->GetLightAdd(); + vLightAdd /= 255.0f; + } + } + + switch (eCode) + { + case CC_WATER: + case CC_CORROSIVE_FLUID: + case CC_FREEZING_WATER: + { + pCurSound = "Chars\\Snd\\Player\\unwater.wav"; + } + break; + + case CC_ENDLESS_FALL: + { + float fFallTime = 1.0f; + + if (fTime > m_fContainerStartTime + fFallTime) + { + vScale.Init(0.0f, 0.0f, 0.0f); + } + else + { + float fScaleStart = .3f; + float fTimeLeft = (m_fContainerStartTime + fFallTime) - fTime; + float fScalePercent = fTimeLeft/fFallTime; + float fScale = fScaleStart * fScalePercent; + + vScale.Init(fScale, fScale, fScale); + } + } + break; + + default : break; + } + + } // if (hContainerObj) + + + + // See if we have entered/left a container... + + if (m_eCurContainerCode != eCode) + { + // Adjust world properties as necessary... + g_pGameClientShell->ResetDynamicWorldProperties(m_bUseWorldFog); + + g_pGameClientShell->GetLightScaleMgr()->ClearLightScale(CLightScaleMgr::eLightScaleEnvironment); + + if (vScale.x != 1.0f || vScale.y != 1.0f || vScale.z != 1.0f) + { + g_pGameClientShell->GetLightScaleMgr()->SetLightScale(vScale, CLightScaleMgr::eLightScaleEnvironment); + } + + // See if we are coming out of water... + + if (IsLiquid(m_eCurContainerCode) && !IsLiquid(eCode)) + { + UpdateUnderWaterFX(LTFALSE); + } + + m_eCurContainerCode = eCode; + + UpdateSoundFilters(nSoundFilterId); + + if (m_hContainerSound) + { + g_pLTClient->SoundMgr()->KillSound(m_hContainerSound); + m_hContainerSound = NULL; + } + + if (pCurSound) + { + uint32 dwFlags = PLAYSOUND_CLIENT | PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE; + m_hContainerSound = g_pClientSoundMgr->PlaySoundLocal(pCurSound, SOUNDPRIORITY_PLAYER_MEDIUM, dwFlags); + } + + g_pGameClientShell->GetScreenTintMgr()->Set(TINT_CONTAINER,&vLightAdd); + } + + + // See if we are under water (under any liquid)... + + if (IsLiquid(m_eCurContainerCode)) + { + UpdateUnderWaterFX(); + } + else + { + UpdateBreathingFX(); + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateVolumeBrushFX +// +// PURPOSE: Deterimine if we're really in a VolumeBrush that has +// a polygrid surface (i.e., water) +// +// NOTES: Passed in eCode may be updated +// +// --------------------------------------------------------------------------- // + +CVolumeBrushFX* CPlayerMgr::UpdateVolumeBrushFX(CVolumeBrushFX* pFX, + ContainerCode & eCode) +{ + if (!pFX) return LTNULL; + + // Get the PolyGridFX associated with the VolumeBrush... + + // Get a list of all the poly grids... + + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList( SFX_POLYGRID_ID ); + if( pList ) + { + int nNumPGrids = pList->GetSize(); + HOBJECT hObj = pFX->GetServerObj(); + + // Try and find a polygrid that is the surface of our container... + + for( int i = 0; i < nNumPGrids; ++i ) + { + if( (*pList)[i] ) + { + CPolyGridFX* pPGrid= (CPolyGridFX*)(*pList)[i]; + + if( pPGrid->GetVolumeBrush() == hObj ) + { + float fDisplacement; + LTVector vIntersection; + + LTRotation rRot; + g_pLTClient->GetObjectRotation( m_hCamera, &rRot ); + + LTVector vCamPos; + g_pLTClient->GetObjectPos(m_hCamera, &vCamPos); + + // Develop a position out and down from the camera to test from... + + LTVector vPos = vCamPos + (rRot.Forward() * 5.0f); + vPos.y -= 2.0f; + + // See if we interected the polygrid... + + if( pPGrid->GetOrientedIntersectionHeight( vPos, LTVector(0,1,0), fDisplacement, vIntersection )) + { + vIntersection.y += fDisplacement; + + // If we are above it clear our container and fx... + + if( vPos.y > vIntersection.y ) + { + eCode = CC_NO_CONTAINER; + pFX = LTNULL; + } + } + + break; + } + } + } + } + + return pFX; +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateSoundFilters +// +// PURPOSE: Update sound filters +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateSoundFilters(uint8 nSoundFilterId) +{ +#ifndef USE_EAX20_HARDWARE_FILTERS + return; +#endif // USE_EAX20_HARDWARE_FILTERS + + if (g_vtUseSoundFilters.GetFloat()) + { + if ( m_nSoundFilterId != nSoundFilterId ) + { + m_nSoundFilterId = nSoundFilterId; + + bool bFilterOK = true; + + ILTClientSoundMgr *pSoundMgr = (ILTClientSoundMgr *)g_pLTClient->SoundMgr(); + SOUNDFILTER* pFilter = g_pSoundFilterMgr->GetFilter( nSoundFilterId ); + + // tell the sound engine about new filter, if a dynamic filter, + // use the global sound filter + bool bUsingDynamic = false; + if ( g_pSoundFilterMgr->IsDynamic( pFilter ) ) + { + bUsingDynamic = true; + m_nSoundFilterId = m_nGlobalSoundFilterId; + pFilter = g_pSoundFilterMgr->GetFilter( m_nGlobalSoundFilterId ); + } + + if ( !g_pSoundFilterMgr->IsUnFiltered( pFilter ) ) + { + if ( pSoundMgr->SetSoundFilter( pFilter->szFilterName ) == LT_OK ) + { + for (int i=0; i < pFilter->nNumVars; i++) + { + if ( pSoundMgr->SetSoundFilterParam(pFilter->szVars[i], pFilter->fValues[i]) != LT_OK ) + bFilterOK = false; + } + } + else + { + bFilterOK = false; + } + } + else + { + bFilterOK = false; + } + + pSoundMgr->EnableSoundFilter( bFilterOK ); + +#ifndef _FINAL + if (g_vtShowSoundFilterInfo.GetFloat()) + { + g_pLTClient->CPrint("Entering %s sound filter '%s' (%s)", + ((bUsingDynamic && m_eCurContainerCode == CC_NO_CONTAINER)? "(Global)" : ""), pFilter->szName, + (bFilterOK ? "Enabled" : "Disabled")); + + // Display detailed filter info if necessary... + if (g_vtShowSoundFilterInfo.GetFloat() > 1 && pFilter) + { + g_pLTClient->CPrint(" FilterName: '%s'", pFilter->szFilterName); + for (int i=0; i < pFilter->nNumVars; i++) + { + g_pLTClient->CPrint(" '%s' = '%f'", pFilter->szVars[i], pFilter->fValues[i]); + } + } + } +#endif // _FINAL + + } + } + + } + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateUnderWaterFX +// +// PURPOSE: Update under water fx +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateUnderWaterFX(LTBOOL bUpdate) +{ + if (m_nZoomView) return; + + uint32 dwWidth = 640, dwHeight = 480; + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &dwWidth, &dwHeight); + + if (dwWidth < 0 || dwHeight < 0) return; + + + // Initialize to default fov x and y... + + float fFovX = g_vtFOVXNormal.GetFloat(); + float fFovY = g_vtFOVYNormal.GetFloat(); + + //see if we are supposed to modify the FOV. Note that we can't modify it while any damage + //effects are active since they can modify the FOV as well which will cause cumulative issues + //and ultimately lead to a fairly messed up camera state until it is restored + if (bUpdate && (g_pDamageFXMgr->GetFirstActiveFX() == NULL)) + { + g_pLTClient->GetCameraFOV(m_hCamera, &fFovX, &fFovY); + + fFovX = RAD2DEG(fFovX); + fFovY = RAD2DEG(fFovY); + + float fSpeed = g_vtUWFOVRate.GetFloat() * g_pGameClientShell->GetFrameTime(); + + if (m_fFovXFXDir > 0) + { + fFovX -= fSpeed; + fFovY += fSpeed; + + if (fFovY > g_vtFOVYMaxUW.GetFloat()) + { + fFovY = g_vtFOVYMaxUW.GetFloat(); + m_fFovXFXDir = -m_fFovXFXDir; + } + } + else + { + fFovX += fSpeed; + fFovY -= fSpeed; + + if (fFovY < g_vtFOVYMinUW.GetFloat()) + { + fFovY = g_vtFOVYMinUW.GetFloat(); + m_fFovXFXDir = -m_fFovXFXDir; + } + } + } + + SetCameraFOV(DEG2RAD(fFovX), DEG2RAD(fFovY)); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateBreathingFX +// +// PURPOSE: Update breathing fx +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateBreathingFX(LTBOOL bUpdate) +{ + //if (m_nZoomView) return; + +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateDynamicOccluders +// +// PURPOSE: Update dynamic occluders +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::UpdateDynamicOccluders(HLOCALOBJ* pContainerArray, uint32 nNumContainers) +{ + CDynamicOccluderVolumeFX* enabledOccluderFX[50]; + CDynamicOccluderVolumeFX* disabledOccluderFX[50]; + uint32 nNumEnabledOccluderFX = 0; + uint32 nNumDisabledOccluderFX = 0; + + // Find the occluder volumes fx that we wish to enable... + + for (uint32 i=0; i < nNumContainers; i++) + { + // We only care about "visible" containers... + + uint32 dwUserFlags = USRFLG_VISIBLE; + g_pCommonLT->GetObjectFlags(pContainerArray[i], OFT_User, dwUserFlags); + + if (dwUserFlags & USRFLG_VISIBLE) + { + uint16 code; + if (g_pLTClient->GetContainerCode(pContainerArray[i], &code)) + { + ContainerCode eTempCode = (ContainerCode)code; + + if (CC_DYNAMIC_OCCLUDER_VOLUME == eTempCode) + { + enabledOccluderFX[nNumEnabledOccluderFX] = (CDynamicOccluderVolumeFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_DYNAMIC_OCCLUDER_ID, pContainerArray[i]); + nNumEnabledOccluderFX++; + } + } + } + } + + // Find the occluder volume FX that we wish to disable... + + CSpecialFXList* pDynOccluderList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_DYNAMIC_OCCLUDER_ID); + if (pDynOccluderList) + { + uint32 nNum = pDynOccluderList->GetSize(); + + for (uint32 i=0; i < nNum; i++) + { + CDynamicOccluderVolumeFX* pFX = (CDynamicOccluderVolumeFX*)(*pDynOccluderList)[i]; + if (!pFX) continue; + + // Check to see if this fx is on the enabled list... + + bool bEnabled = false; + for (uint32 j=0; j < nNumEnabledOccluderFX; j++) + { + if (pFX == enabledOccluderFX[j]) + { + bEnabled = true; + break; + } + } + + // Add the fx to the disabled list... + + if (!bEnabled) + { + disabledOccluderFX[nNumDisabledOccluderFX] = pFX; + nNumDisabledOccluderFX++; + } + } + } + + + // Disable the necessary occluder volumes... + + for (i=0; i < nNumDisabledOccluderFX; i++) + { + if (disabledOccluderFX[i]) + { + (disabledOccluderFX[i])->Enable(false); + } + } + + // Enable the necessary occluder volumes... + + for (i=0; i < nNumEnabledOccluderFX; i++) + { + if (enabledOccluderFX[i]) + { + (enabledOccluderFX[i])->Enable(true); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetMouseInput() +// +// PURPOSE: Allows or disallows mouse input on the client +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::SetMouseInput( LTBOOL bAllowInput, LTBOOL bRestoreBackupAngles ) +{ + if (bAllowInput) + { + m_bRestoreOrientation = LTTRUE; + + if( bRestoreBackupAngles ) + { + m_fYaw = m_fYawBackup; + m_fPitch = m_fPitchBackup; + } + } + else + { + m_fYawBackup = m_fYaw; + m_fPitchBackup = m_fPitch; + } +} + +void CPlayerMgr::AllowPlayerMovement(LTBOOL bAllowPlayerMovement) +{ + m_bAllowPlayerMovement = bAllowPlayerMovement; + + SetMouseInput( bAllowPlayerMovement, LTFALSE ); +} + + +void CPlayerMgr::ResetCamera() +{ + // Make sure the FOV is set correctly... + + uint32 dwWidth = 640; + uint32 dwHeight = 480; + g_pLTClient->GetSurfaceDims(g_pLTClient->GetScreenSurface(), &dwWidth, &dwHeight); + + g_pLTClient->SetCameraRect(m_hCamera, LTTRUE, 0, 0, dwWidth, dwHeight); + SetCameraFOV(DEG2RAD(g_vtFOVXNormal.GetFloat()), DEG2RAD(g_vtFOVYNormal.GetFloat())); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::ShowPlayer() +// +// PURPOSE: Show/Hide the player object +// +// --------------------------------------------------------------------------- // + +void CPlayerMgr::ShowPlayer(LTBOOL bShow) +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj) return; + + g_pCommonLT->SetObjectFlags(hPlayerObj, OFT_Flags, (bShow ? FLAG_VISIBLE : 0), FLAG_VISIBLE); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdatePlayer() +// +// PURPOSE: Update the player +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdatePlayer() +{ + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (!hPlayerObj || IsPlayerDead()) return; + + + // This is pretty much a complete kludge, but I can't really think of + // a better way to handle this...Okay, since the server can update the + // player's flags at any time (and override anything that we set), we'll + // make sure that the player's flags are always what we want them to be :) + + uint32 dwPlayerFlags; + g_pCommonLT->GetObjectFlags(hPlayerObj, OFT_Flags, dwPlayerFlags); + if (m_pPlayerCamera->IsFirstPerson()) + { + if (dwPlayerFlags & FLAG_VISIBLE) + { + ShowPlayer(LTFALSE); + } + } + else // Third person + { + if (!(dwPlayerFlags & FLAG_VISIBLE)) + { + ShowPlayer(LTTRUE); + } + } + + + // Hide/Show our attachments... + + HideShowAttachments(hPlayerObj); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::HideShowAttachments() +// +// PURPOSE: Recursively hide/show attachments... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::HideShowAttachments(HOBJECT hObj) +{ + if (!hObj) return; + + HLOCALOBJ attachList[20]; + uint32 dwListSize = 0; + uint32 dwNumAttach = 0; + + g_pCommonLT->GetAttachments(hObj, attachList, 20, dwListSize, dwNumAttach); + int nNum = dwNumAttach <= dwListSize ? dwNumAttach : dwListSize; + + for (int i=0; i < nNum; i++) + { + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(attachList[i], OFT_User, dwUsrFlags); + + if (dwUsrFlags & USRFLG_ATTACH_HIDE1SHOW3) + { + if (m_pPlayerCamera->IsFirstPerson()) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + else + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + else if (dwUsrFlags & USRFLG_ATTACH_HIDE1) + { + if (m_pPlayerCamera->IsFirstPerson()) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + } + + if (g_pVersionMgr->IsLowViolence() && dwUsrFlags & USRFLG_ATTACH_HIDEGORE) + { + g_pCommonLT->SetObjectFlags(attachList[i], OFT_Flags, 0, FLAG_VISIBLE); + } + + // Hide/Show this attachment's attachments... + HideShowAttachments(attachList[i]); + } +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: SVModelHook +// +// PURPOSE: Special Rendering Code for SpyVision Powerup +// +// --------------------------------------------------------------------------- // +/* +void SVModelHook(ModelHookData *pData, void *pUser) +{ + + CGameClientShell* pShell = (CGameClientShell*) pUser; + if (!pShell) return; + + uint32 nUserFlags = 0; + g_pCommonLT->GetObjectFlags(pData->m_hObject, OFT_User, nUserFlags); + if (nUserFlags & USRFLG_SPY_VISION) + { + // Do the poor-man's glow if necessary... + bool bCanDoGlow = true; // NEED TO CALL API FUNCTION FOR THIS!!!! + + if (!bCanDoGlow) + { + pData->m_HookFlags &= ~MHF_USETEXTURE; + pData->m_LightAdd = g_vSVModelColor; + } + + // pData->m_ObjectColor = g_vSVModelColor; + // pData->m_ObjectFlags |= FLAG_NOLIGHT; + } + else + { + DefaultModelHook(pData, pUser); + } +} +*/ + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsSearching() +// +// PURPOSE: Return whether or not the searcher object is searching +// +// ----------------------------------------------------------------------- // + +bool CPlayerMgr::IsSearching() +{ + return m_pSearcher->IsSearching(); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsDisabling() +// +// PURPOSE: Return whether or not the player is currently disabling a gadget target +// +// ----------------------------------------------------------------------- // + +bool CPlayerMgr::IsDisabling() +{ + return !!(m_pGadgetDisabler->IsDisabling()); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetCarryingObject() +// +// PURPOSE: Set the player to carry an object... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::SetCarryingObject( uint8 nCarry, ChassisPieceBute* pChassisPieceBute, bool bUpdateCameraDip ) +{ + if( m_nCarryingObject != nCarry ) + { + m_nCarryingObject = nCarry; + m_pCarryChassisPieceBute = pChassisPieceBute; + + bool bHeavy = false; + + if(nCarry == CFX_CARRY_BODY ) + bHeavy = true; + else if( nCarry == CFX_CARRY_CHASSIS_PIECE ) +{ + if( pChassisPieceBute ) + { + bHeavy = pChassisPieceBute->m_bHeavy; + } + } + + if( bHeavy ) + { + if( bUpdateCameraDip ) + m_bCameraDip = true; + + m_pMoveMgr->SetDuckLock(LTFALSE); + m_pClientWeaponMgr->DisableWeapons(); + } + else + { + m_pClientWeaponMgr->EnableWeapons(); + } + } + + g_pHUDMgr->QueueUpdate(kHUDCarry); +} + +//pulled target mgr initialization into a function so that it maybe overridden by +// a game specific TargetMgr +void CPlayerMgr::InitTargetMgr() +{ + m_pTargetMgr = debug_new( CTargetMgr ); + + //force the initializtion + CAutoTargetMgr::Instance(); + + ASSERT( 0 != m_pTargetMgr ); +} + + +void CPlayerMgr::ClearDamageSectors() +{ + memset(m_fDamage,0,sizeof(m_fDamage)); +} + +void CPlayerMgr::UpdateDamage() +{ + if (g_pGameClientShell->IsGamePaused()) return; + + float fDelta = g_pGameClientShell->GetFrameTime() * g_vtDamageFadeRate.GetFloat(); + for (int i = 0; i < kNumDamageSectors; i++) + { + if (m_fDamage[i] > fDelta) + m_fDamage[i] -= fDelta; + else + m_fDamage[i] = 0.0f; + } +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UpdateDistanceIndicator() +// +// PURPOSE: If we are close to a distance indicator object update the huditem... +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::UpdateDistanceIndicator() +{ + float fLastDistPercent = m_fDistanceIndicatorPercent; + m_fDistanceIndicatorPercent = -1.0f; + + // Currently the only distance indicator objects are triggers... + + CSpecialFXList* pTriggerList = g_pGameClientShell->GetSFXMgr()->GetFXList( SFX_TRIGGER_ID ); + if( pTriggerList ) + { + uint32 nNum = pTriggerList->GetNumItems(); + + for( uint32 i = 0; i < nNum; ++i ) + { + CTriggerFX* pFX = (CTriggerFX*)(*pTriggerList)[i]; + if( !pFX || !pFX->WithinIndicatorRadius() ) continue; + + // Just grab the first distance being tracked. The distance indicators + // shouldn't overlap. If they do it's an LD issue or this needs to change :) + + m_fDistanceIndicatorPercent = pFX->GetDistancePercentage(); + m_hDistanceIndicatorIcon = pFX->GetIcon(); + break; + } + } + + if( (m_fDistanceIndicatorPercent != fLastDistPercent) && m_hDistanceIndicatorIcon ) + g_pHUDMgr->QueueUpdate( kHUDDistance ); +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::CanCarryObject() +// +// PURPOSE: Check to see if we are able to carry an object or not.... +// +// ----------------------------------------------------------------------- // + +uint8 CPlayerMgr::CanCarryObject( CSpecialFX** ppSFX ) +{ + if( !GetCarryingObject() && GetTargetMgr()->IsTargetInRange() && GetTargetMgr()->IsMoveTarget() && !m_pMoveMgr->IsDucking() ) + { + // Check if the target object is a body... + + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(GetTargetMgr()->GetTargetObject()); + if( pBody ) + { + if( ppSFX ) + *ppSFX = pBody; + + // If the body can be revived then we can't carry it... + + if (pBody->CanBeRevived()) + return CFX_CARRY_NONE; + else + return CFX_CARRY_BODY; +} + CCharacterFX* pChar = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(GetTargetMgr()->GetTargetObject()); + if( pChar ) + { + if( ppSFX ) + *ppSFX = pChar; + + return CFX_CARRY_BODY; + } + + + ChassisPieceFX* const pFX = (ChassisPieceFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_CHASSISPIECE_ID, GetTargetMgr()->GetTargetObject()); + if( pFX ) + { + if( ppSFX ) + *ppSFX = pFX; + + return CFX_CARRY_CHASSIS_PIECE; + } + } + + return CFX_CARRY_NONE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::UseGadget() +// +// PURPOSE: Try to switch to a gadget that will use the specified damage type... +// +// ----------------------------------------------------------------------- // + +bool CPlayerMgr::UseGadget(DamageType eDamageType) + { + if( IsCarryingHeavyObject() ) + return false; + + // if it's an invalid type we are either not pointing at a gadget target, or it doesn't require a gadget + if (eDamageType == DT_INVALID) + { + //if we had been using a weapon, switch back to it + if (m_nPreGadgetWeapon != WMGR_INVALID_ID && m_pClientWeaponMgr->CanChangeToWeapon(m_nPreGadgetWeapon)) + { + m_bChangingToGadget = false; + ChangeWeapon(m_nPreGadgetWeapon); + return true; + } + return false; + } + + uint8 nId = GetGadgetFromDamageType(eDamageType); + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + uint8 nCurWeapon = WMGR_INVALID_ID; + if ( pClientWeapon ) + nCurWeapon = pClientWeapon->GetWeaponId(); + + //if we found a weapon to use, and we aren't already using it + if (nId != WMGR_INVALID_ID && nCurWeapon != nId) + { + //found a match + m_bChangingToGadget = true; + ChangeWeapon(nId); + + //switching to a gadget, so remember what we had + m_nPreGadgetWeapon = nCurWeapon; + + return true; + } + return false; + +} + + + +uint8 CPlayerMgr::GetGadgetFromDamageType(DamageType eDamageType) +{ + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + uint8 nCurWeapon = WMGR_INVALID_ID; + if ( pClientWeapon ) + { + // Check if we have ammo, we may have just run out... + if (pClientWeapon->HasAmmo()) + { + nCurWeapon = pClientWeapon->GetWeaponId(); + } + else + { + // Start with our next weapon that has ammo... + + nCurWeapon = m_pClientWeaponMgr->GetNextWeaponId(nCurWeapon, 0); + } +} + + uint8 nTestWeapon = nCurWeapon; + + do +{ + const WEAPON* pWpnData = g_pWeaponMgr->GetWeapon(nTestWeapon); + if (pWpnData) + { + const AMMO* pAmmoData = g_pWeaponMgr->GetAmmo(pWpnData->nDefaultAmmoId); + if (pAmmoData->eInstDamageType == eDamageType) + { + return nTestWeapon; + } + } + + nTestWeapon = m_pClientWeaponMgr->GetNextWeaponId(nTestWeapon, 0); + + } while (nTestWeapon != nCurWeapon && nTestWeapon != WMGR_INVALID_ID); + + + + return WMGR_INVALID_ID; + +} + + +bool CPlayerMgr::FireOnActivate() +{ + if (!GetTargetMgr()->IsTargetGadgetActivatable()) return false; + if (GetGadgetDisabler()->DisableOnActivate()) return false; + + DamageType eDT = GetTargetMgr()->RequiredGadgetDamageType(); + + IClientWeaponBase *pClientWeapon = m_pClientWeaponMgr->GetCurrentClientWeapon(); + uint8 nCurWeapon = WMGR_INVALID_ID; + if ( pClientWeapon ) + nCurWeapon = pClientWeapon->GetWeaponId(); + + const WEAPON* pWpnData = g_pWeaponMgr->GetWeapon(nCurWeapon); + if (pWpnData) + { + const AMMO* pAmmoData = g_pWeaponMgr->GetAmmo(pWpnData->nDefaultAmmoId); + if (pAmmoData->eInstDamageType == eDT) + { + return true; + } +} + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::SetCancelRevive +// +// PURPOSE: Sets the cancel revive setting. While the player +// is waiting to respawn, they can be revived in certain +// game types. If they hit fire or activate during that time +// they will cancel their ability to revive. +// +// ----------------------------------------------------------------------- // + +void CPlayerMgr::SetCancelRevive( bool bCancelRevive ) +{ + // Tell the server if we just cancelled revive. + if( bCancelRevive && m_bCancelRevive != bCancelRevive ) + { + SendEmptyServerMsg( MID_PLAYER_CANCELREVIVE ); + } + + m_bCancelRevive = bCancelRevive; + } + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::IsCarryingHeavyObject +// +// PURPOSE: Determines if we're carrying heavy object. +// +// ----------------------------------------------------------------------- // +bool CPlayerMgr::IsCarryingHeavyObject() const + { + if( m_nCarryingObject == CFX_CARRY_BODY ) + return true; + + if( m_nCarryingObject == CFX_CARRY_CHASSIS_PIECE ) + { + if( !m_pCarryChassisPieceBute ) + return false; + + return m_pCarryChassisPieceBute->m_bHeavy; + } + + return false; +} diff --git a/Jack/ClientShellDLL/PlayerMgr.h b/Jack/ClientShellDLL/PlayerMgr.h new file mode 100644 index 00000000..17770101 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerMgr.h @@ -0,0 +1,513 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerMgr.h +// +// PURPOSE : Definition of class used to manage the client player +// +// (c) 2001-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYER_MGR_H__ +#define __PLAYER_MGR_H__ + +#include "DamageFxMgr.h" +#include "ContainerCodes.h" +#include "WeaponMgr.h" +#include "ilttexinterface.h" + + +// Forward declarations to reduce header dependancy. +class CHeadBobMgr; +class CCameraOffsetMgr; +class CFlashLightPlayer; +class CGadgetDisabler; +class CSearcher; +class CMoveMgr; +class CVisionModeMgr; +class CAttachButeMgr; +class CLeanMgr; +class CClientWeaponMgr; +class IClientWeaponBase; +class CPlayerCamera; +class CTargetMgr; +class CPlayerViewAttachmentMgr; +class CVolumeBrushFX; +struct ChassisPieceBute; + +class CPlayerMgr +{ +public: + CPlayerMgr(); + virtual ~CPlayerMgr(); + + virtual LTBOOL Init(); + virtual void Term(); + virtual void Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState); + virtual void Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState); + + virtual void OnEnterWorld(); + virtual void OnExitWorld(); + + void PreUpdate(); + void FirstUpdate(); + virtual void Update(); + void UpdatePlaying(); + void UpdateNotPlaying(); + void PostUpdate(); + + void FirstPlayingUpdate(); + + virtual float GetJumpVelocity(float fJumpVel, float fSuperJumpVel) { return fJumpVel; } + + virtual LTBOOL OnMessage(uint8 messageID, ILTMessage_Read *pMsg); + + virtual LTBOOL OnCommandOn(int command); + virtual LTBOOL OnCommandOff(int command); + + LTBOOL OnKeyDown(int key, int rep); + LTBOOL OnKeyUp(int key); + + + //************************************************************************** + // Camera/Player access function + //************************************************************************** + IClientWeaponBase* GetCurrentClientWeapon() const; + CClientWeaponMgr* GetClientWeaponMgr() const { ASSERT( 0 != m_pClientWeaponMgr ); return m_pClientWeaponMgr; } + + CMoveMgr* GetMoveMgr() { return m_pMoveMgr; } + ContainerCode GetCurContainerCode() const { return m_eCurContainerCode; } + CVisionModeMgr* GetVisionModeMgr() { return m_pVisionModeMgr; } + + CAttachButeMgr* GetAttachButeMgr() { return m_pAttachButeMgr; } + CCameraOffsetMgr* GetCameraOffsetMgr() { return m_pCameraOffsetMgr; } + CPlayerCamera* GetPlayerCamera() { return m_pPlayerCamera; } + CLeanMgr* GetLeanMgr() { return m_pLeanMgr; } + CTargetMgr* GetTargetMgr() { return m_pTargetMgr; } + CSearcher* GetSearcher() { return m_pSearcher; } + CGadgetDisabler* GetGadgetDisabler() { return m_pGadgetDisabler; } + + bool InSafetyNet() const { return m_bInSafetyNet; } + + CPlayerViewAttachmentMgr* GetPlayerViewAttachmentMgr() { return m_pPVAttachmentMgr; } + + HLOCALOBJ GetCamera() const { return m_hCamera; } + + LTBOOL IsUsingExternalCamera() const { return m_bUsingExternalCamera; } + LTBOOL IsCameraListener() const { return m_bCamIsListener; } + LTBOOL InCameraGadgetRange(HOBJECT hObj); + void AllowPlayerMovement(LTBOOL bAllowPlayerMovement); + void SetMouseInput(LTBOOL bAllowInput, LTBOOL bRestoreBackupAngels); + + void SetCameraFOV(float fFovX, float fFovY); + void ResetCamera(); + + LTBOOL IsPlayerMovementAllowed() { return m_bAllowPlayerMovement;} + LTBOOL IsZoomed() const { return (m_nZoomView > 0 || m_bZooming); } + LTBOOL IsZooming() const { return m_bZooming; } + LTBOOL IsUnderwater() const { return IsLiquid(m_eCurContainerCode); } + bool UsingSpyVision() const { return m_bSpyVision; } + LTBOOL UsingCamera() const { return m_bCamera; } + + LTBOOL IsFirstPerson(); + LTBOOL IsGoingFirstPerson(); + LTBOOL IsPlayerInWorld(); + + bool IsSearching(); + bool IsDisabling(); + + bool IsManualAim( ) const { return m_bManualAim; } + + bool IsMouseStrafing() const { return (m_bStrafing ? true : false); } + + PlayerState GetPlayerState() const { return m_ePlayerState; } + LTBOOL IsPlayerDead() const { return (m_ePlayerState == PS_DEAD || m_ePlayerState == PS_DYING); } + float GetRespawnTime() const { return m_fEarliestRespawnTime;} + void SetRespawnTime( float fEarliestRespawnTime ) { m_fEarliestRespawnTime = fEarliestRespawnTime; } + bool GetCancelRevive( ) const { return m_bCancelRevive; } + void SetCancelRevive( bool bCancelRevive ); + + uint32 GetPlayerFlags() const { return m_dwPlayerFlags; } + + void GetCameraRotation(LTRotation &rRot); + void GetPlayerRotation(LTRotation &rRot); + void GetPlayerPitchYawRoll(LTVector & vVec) const { vVec.x = m_fPlayerPitch; vVec.y = m_fPlayerYaw; vVec.z = m_fPlayerRoll; } + + float GetPitch() const { return m_fPitch; } + float GetYaw() const { return m_fYaw; } + float GetRoll() const { return m_fRoll; } + + float GetPlayerPitch() const { return m_fPlayerPitch; } + float GetPlayerYaw() const { return m_fPlayerYaw; } + float GetPlayerRoll() const { return m_fPlayerRoll; } + + // These should only be called after first getting the value + // from the GetXXX() functions above... + + void SetPitch(float fPitch) { m_fPitch = fPitch; } + void SetYaw(float fYaw) { m_fYaw = fYaw; } + void SetRoll(float fRoll) { m_fRoll = fRoll; } + + void SetPlayerPitch(float fPitch) { m_fPlayerPitch = fPitch; } + void SetPlayerYaw(float fYaw) { m_fPlayerYaw = fYaw; } + void SetPlayerRoll(float fRoll) { m_fPlayerRoll = fRoll; } + + LTBOOL IsSpectatorMode() { return m_bSpectatorMode; } + void SetSpectatorMode(LTBOOL bOn=LTTRUE); + + LTBOOL IsInvisibleMode() { return m_bInvisibleMode; } + void SetInvisibleMode(LTBOOL bOn) { m_bInvisibleMode = bOn; } + + uint8 GetSoundFilter() { return m_nSoundFilterId; } + uint8 GetGlobalSoundFilter() { return m_nGlobalSoundFilterId; } + + void StartServerAccurateRotation() { m_bServerAccurateRotation = true; } + void EndServerAccurateRotation() { m_bServerAccurateRotation = false; } + + void StartSendingCameraOffsetToServer() { m_bSendCameraOffsetToServer = true; } + void EndSendingCameraOffsetToServer() { m_bSendCameraOffsetToServer = false; } + + //************************************************************************** + // Camera/Player function + //************************************************************************** + void UpdateCamera(); + + void ShakeScreen(LTVector vAmount); + + void ClearCurContainerCode(); + + void BeginSpyVision(); + void EndSpyVision(); + + void UpdateModelGlow(); + LTVector& GetModelGlow() {return m_vCurModelGlow;} + + void ClearPlayerModes(LTBOOL bWeaponOnly = LTFALSE); + void RestorePlayerModes(); + + void UpdatePlayerFlags(); + void HandleWeaponDisable(LTBOOL bDisabled); + + void ChangeWeapon(uint8 nWeaponId, uint8 nAmmoId = WMGR_INVALID_ID, int dwAmmo = -1); + void ToggleHolster(bool bPlayDeselect); + void LastWeapon(); + + bool DoActivate(); + + void Teleport(const LTVector & vPos); + + void TurnOffAlternativeCamera(uint8 nCamType); + void TurnOnAlternativeCamera(uint8 nCamType, float fFovX, float fFovY); + void SetExternalCamera(LTBOOL bExternal=LTTRUE); + + LTBOOL PreRender(); + + LTBOOL CanChangeFOV() const { return (!m_bUsingExternalCamera && !m_bZooming && !m_nZoomView && !IsLiquid(m_eCurContainerCode)); } + + + // Carrying methods... + + uint8 GetCarryingObject() const { return m_nCarryingObject; } + ChassisPieceBute* GetCarryingChassisPiece( ) const { return m_pCarryChassisPieceBute; } + bool IsCarryingHeavyObject() const; + void SetCarryingObject( uint8 nCarry, ChassisPieceBute* pChassisPieceBute, bool bUpdateCameraDip ); + uint8 CanCarryObject( CSpecialFX** pSFX ); + bool CanDropCarriedObject() { return m_bCanDropCarriedObject; } + void SetCanDropCarriedObject( bool bCanDrop ) { m_bCanDropCarriedObject = bCanDrop; } + + CFlashLightPlayer * GetFlashLight() const { return m_pFlashLight; } + + enum eConstants + { + kNumDamageSectors = 12, + }; + + float GetDamageFromSector(uint8 nSector) + { + if (nSector >= kNumDamageSectors) + return 0.0f; + else + return m_fDamage[nSector]; + }; + + + float GetDistanceIndicatorPercent() const { return m_fDistanceIndicatorPercent; } + HTEXTURE GetDistanceIndicatorIcon() const { return m_hDistanceIndicatorIcon; } + + + // This should only be called from CClientWeaponMgr::ChangeWeapon()... + // jrg 9/2/02 - this will get called twice most of the time when switching weapons: + // once when the weapon switch is started + // and again when it completes (if a switching animation was needed) + // bImmediateSwitch will be true on the second call (or the first if the switch is immediate) + // (I'm using the repeated call to track whether we are in mid switch) + void HandleWeaponChanged(uint8 nWeaponId,uint8 nAmmoId, bool bImmediateSwitch); + + void AttachCameraToHead( bool bAttach = true, bool bInterpolate = false ); + + //returns the id of a gadget that has the specified damagetype + uint8 GetGadgetFromDamageType(DamageType eDamageType); + + //returns whether the activate key should be treated as a fire key + bool FireOnActivate(); + + // returns if the camera duck movement has stopped or not... + bool IsFinishedDucking(bool bUp=true) const + { + return ( bUp ? (m_fCamDuck == 0.0f) : (m_fCamDuck == m_fMaxDuckDistance) ); + } + + // Is the camera using an animation to update it's position... + LTBOOL IsCameraAttachedToHead() const { return m_bCameraAttachedToHead; } + + // Get the current recoil value (0.0 to 1.0) + float GetRecoilValue() const; + +protected: + + void ShowPlayer(LTBOOL bShow=LTTRUE); + void UpdateServerPlayerModel(); + + // Handle OnMessage Type (message) + void HandleMsgShakeScreen (ILTMessage_Read*); + void HandleMsgPlayerStateChange (ILTMessage_Read*); + void HandleMsgClientPlayerUpdate (ILTMessage_Read*); + void HandleMsgWeaponChange (ILTMessage_Read*); + void HandleMsgPlayerDamage (ILTMessage_Read*); + void HandleMsgPlayerOrientation (ILTMessage_Read*); + void HandleMsgChangeWorldProperties (ILTMessage_Read*); + void HandleMsgGadgetTarget (ILTMessage_Read*); + void HandleMsgSearch (ILTMessage_Read*); + void HandleMsgAddPusher (ILTMessage_Read*); + void HandleMsgObjectivesData (ILTMessage_Read*); + + + // Camera helper functions... + + void UpdateCameraZoom(); + void UpdateCameraDisplacement(); + void UpdateCameraShake( LTVector& vDisplacement ); + void UpdateVehicleCamera( LTVector& vDisplacement ); + void UpdateCameraSway(); + void InitPlayerCamera(); + LTBOOL UpdatePlayerCamera(); + void UpdateCameraPosition(); + void UpdateMultiplayerCameraPosition(); + void CalculateCameraRotation(); + LTBOOL UpdateCameraRotation(); + void UpdatePlayerInfo(bool bPlaying); + LTBOOL UpdateAlternativeCamera(); + + void BeginZoom(); + void HandleZoomChange(LTBOOL bReset=LTFALSE); + void EndZoom(); + + void Update3rdPersonInfo(); + void HideShowAttachments(HOBJECT hObj); + + void GetPlayerHeadPosRot(LTVector & vPos, LTRotation & rRot); + + void ChangeWeapon(ILTMessage_Read *pMsg); + void UpdateContainers(); + void UpdateUnderWaterFX(LTBOOL bUpdate=LTTRUE); + void UpdateBreathingFX(LTBOOL bUpdate=LTTRUE); + void UpdateDynamicOccluders(HLOCALOBJ* pContainerArray, uint32 nNumContainers); + void UpdateWeaponModel(); + void StartWeaponRecoil(); + void DecayWeaponRecoil(); + void UpdateDuck(); + void UpdatePlayer(); + void UpdateDistanceIndicator(); + void UpdateSoundFilters(uint8 nSoundFilterId); + CVolumeBrushFX* UpdateVolumeBrushFX(CVolumeBrushFX* pFX, ContainerCode & eCode); + + + void HandleRespawn(); + + virtual void InitTargetMgr(); + + void UpdateDamage(); + void ClearDamageSectors(); + + + //switches weapons to a gadget that has the specified damagetype + bool UseGadget(DamageType eDamageType); + + +protected: + // + // To reduce header dependancies, these classes have been forward declared, + // the class declared as a pointer, and then formally instantiated/destroyed + // during the construction/destruction of the class using dynamic memory calls. + // + //save these + CHeadBobMgr *m_pHeadBobMgr; // Handle head/weapon bob/cant + CCameraOffsetMgr *m_pCameraOffsetMgr; // Adjust camera orientation + CFlashLightPlayer *m_pFlashLight; // flash light for the player + CGadgetDisabler *m_pGadgetDisabler; // Handles the disabling of a gadget + CSearcher *m_pSearcher; // Handles searching bodies and props + CMoveMgr *m_pMoveMgr; // Always around... + CVisionModeMgr *m_pVisionModeMgr; // Controls the vision mode switching and updating + CAttachButeMgr *m_pAttachButeMgr; + CLeanMgr *m_pLeanMgr; // Handles the player leaning + CClientWeaponMgr *m_pClientWeaponMgr; // client weapon manager + CTargetMgr *m_pTargetMgr; // handles tracking what the player is aimed at + CPlayerViewAttachmentMgr *m_pPVAttachmentMgr; // handles model attachments to our player-view models (weapons, vehicles) + + float m_fYawBackup; + float m_fPitchBackup; + + // Player movement variables... + + uint32 m_dwPlayerFlags; // What is the player doing + PlayerState m_ePlayerState; // What is the state of the player + + // Player update stuff... + + LTBOOL m_bLastSent3rdPerson; + + LTRotation m_rRotation; // Player view rotation + float m_fPitch; // Pitch of camera + float m_fYaw; // Yaw of camera + float m_fRoll; // Roll of camera + float m_fFireJitterPitch; // Weapon firing jitter pitch adjust + float m_fFireJitterYaw; // Weapon firing jitter yaw adjust + + // Last gametime the weapon fired. + float m_fLastFireTime; + + //values for camera recoil calculation + float m_fCurrentRecoil; + + float m_fPlayerPitch; // Pitch of player object + float m_fPlayerYaw; // Yaw of player object + float m_fPlayerRoll; // Roll of player object + + //the euler angles for the orientation that the camera was in when it was attached + //to the model. This allows for the orientation of the player to be taken from + //the model when it ends + float m_fModelAttachPitch; + float m_fModelAttachYaw; + float m_fModelAttachRoll; + + LTBOOL m_bAllowPlayerMovement; // External camera stuff + LTBOOL m_bLastAllowPlayerMovement; + LTBOOL m_bWasUsingExternalCamera; // so we can detect when we start using it + LTBOOL m_bUsingExternalCamera; + LTBOOL m_bCamIsListener; + LTBOOL m_bRestoreOrientation; + LTBOOL m_bCameraPosInited; // Make sure the position is valid + LTBOOL m_bStartedPlaying; + + LTVector m_vShakeAmount; // Amount to shake screen + LTBOOL m_bSpectatorMode; // Are we in spectator mode + LTBOOL m_bInvisibleMode; // Are we in invisible mode + + // Glowing models... + + LTVector m_vCurModelGlow; // Current glowing model light color + LTVector m_vMaxModelGlow; // Max glowing model light color + LTVector m_vMinModelGlow; // Min glowing model light color + float m_fModelGlowCycleTime; // Current type throught 1/2 cycle + LTBOOL m_bModelGlowCycleUp; // Cycle color up or down? + + // Container FX helpers... + + ContainerCode m_eCurContainerCode; // Code of container currently in + float m_fContainerStartTime; // Time we entered current container + float m_fFovXFXDir; // Variable use in UpdateUnderWaterFX() + uint8 m_nSoundFilterId; // SoundFilterId for our current container + uint8 m_nGlobalSoundFilterId; // Global (i.e., whole level) sound filter + bool m_bInSafetyNet; // Are we in a saftey net container? + + // Camera zoom related variables... + + int m_nZoomView; // Are we in zoom mode (m_nZoomView > 0) + LTBOOL m_bZooming; // Are we zooming + LTBOOL m_bZoomingIn; // Are we zooming in + float m_fSaveLODScale; // LOD Scale value before zooming + + + // Camera ducking variables... + + LTBOOL m_bStartedDuckingDown; // Have we started ducking down + LTBOOL m_bStartedDuckingUp; // Have we started back up + float m_fCamDuck; // How far to move camera + float m_fDuckDownV; // Ducking down velocity + float m_fDuckUpV; // Ducking up velocity + float m_fMaxDuckDistance; // Max distance we can duck + float m_fStartDuckTime; // When duck up/down started + + LTBOOL m_bCamera; // does this player currently use a camera + LTVector m_vSVLightScale; // light scale for spy vision + + // Camera variables... + + HLOCALOBJ m_hCamera; // The camera + CPlayerCamera *m_pPlayerCamera; // Handle 3rd person view + + bool m_bCameraAttachedToHead; + + LTBOOL m_bFirstUpdate; // Is this the first update + + LTBOOL m_bPlayerUpdated; // Has the server sent us a player update? + + LTBOOL m_bStrafing; // Are we strafing? This used to implement mouse strafing. + LTBOOL m_bHoldingMouseLook; // Is the user holding down the mouselook key? + + float m_fEarliestRespawnTime; + bool m_bCancelRevive; + + uint16 m_nPlayerInfoChangeFlags; + float m_fPlayerInfoLastSendTime, m_fPlayerInfoLastUniqueSendTime; + uint8 m_nPlayerInfoLastCompRot, m_nPlayerInfoLastCompPitch; + CLTMsgRef_Read m_cLastPlayerInfoMsg, m_cLastPlayerInfoMoveMsg; + + // Container FX helpers... + + LTBOOL m_bUseWorldFog; // Tells if we should use global fog settings or + // let the container handling do it. + + HLTSOUND m_hContainerSound; // Container sound... + + bool m_bCameraDip; + uint8 m_nCarryingObject; + ChassisPieceBute* m_pCarryChassisPieceBute; + bool m_bCanDropCarriedObject; + + float m_fDamage[kNumDamageSectors]; + + bool m_bServerAccurateRotation; + bool m_bSendCameraOffsetToServer; + + float m_fDistanceIndicatorPercent; + HTEXTURE m_hDistanceIndicatorIcon; + + bool m_bSpyVision; + + //used to track what wepon player was using before auto-switching to gadget + uint8 m_nPreGadgetWeapon; + + // are we currently trying to auto=switch to a gadget + bool m_bChangingToGadget; + + // are we in the middle of a weapon switch animation + bool m_bSwitchingWeapons; + + float m_fMultiplayerDeathCamMoveTimer; + float m_fMultiAttachDeathCamTimer; + + bool m_bLerpAttachedCamera; + + // Manual aim overrides autoaim. + bool m_bManualAim; + + bool m_bRespawnRequested; + + // Saves the rotation comming from the server to use when needed... + LTVector m_vServerRot; +}; + +extern CPlayerMgr* g_pPlayerMgr; + +#endif // __PLAYER_MGR_H__ diff --git a/Jack/ClientShellDLL/PlayerSoundFX.cpp b/Jack/ClientShellDLL/PlayerSoundFX.cpp new file mode 100644 index 00000000..6d261803 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerSoundFX.cpp @@ -0,0 +1,97 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerSoundFX.cpp +// +// PURPOSE : Player sound special FX - Implementation +// +// CREATED : 7/28/98 (was WeaponSoundFX) +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PlayerSoundFX.h" +#include "GameClientShell.h" +#include "iltclient.h" +#include "MsgIds.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerSoundFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerSoundFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + PLAYERSOUNDCREATESTRUCT* pPSCS = (PLAYERSOUNDCREATESTRUCT*)psfxCreateStruct; + + m_vPos = pPSCS->vPos; + m_nClientId = pPSCS->nClientId; + m_nType = pPSCS->nType; + m_nWeaponId = pPSCS->nWeaponId; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerSoundFX::CreateObject +// +// PURPOSE: Create object associated with the CPlayerSoundFX +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerSoundFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + uint32 dwId; + if (m_pClientDE->GetLocalClientID(&dwId) != LT_OK) return LTFALSE; + + // Don't play sounds for this client... + + if (int(dwId) == m_nClientId) return LTFALSE; + + PlayerSoundId eSndType = (PlayerSoundId)m_nType; + + if (::IsWeaponSound(eSndType)) + { + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(m_nWeaponId); + if (!pWeapon) return LTFALSE; + + PlayWeaponSound(pWeapon, m_vPos, (PlayerSoundId)m_nType); + } + else + { + switch (eSndType) + { + case PSI_JUMP : + { + char* pSounds[] = { "Chars\\Snd\\jump1.wav", "Chars\\Snd\\jump2.wav" }; + g_pClientSoundMgr->PlaySoundFromPos(m_vPos, pSounds[GetRandom(0,1)], 1000.0f, + SOUNDPRIORITY_MISC_HIGH); + } + break; + + case PSI_LAND : + { + char* pSounds[] = { "Chars\\Snd\\player\\landing1.wav", "Chars\\Snd\\player\\landing2.wav" }; + g_pClientSoundMgr->PlaySoundFromPos(m_vPos, pSounds[GetRandom(0,1)], 1000.0f, + SOUNDPRIORITY_MISC_HIGH); + } + break; + + default : break; + } + } + + + return LTFALSE; // Delete me, I'm done :) +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerSoundFX.h b/Jack/ClientShellDLL/PlayerSoundFX.h new file mode 100644 index 00000000..cdd2a77d --- /dev/null +++ b/Jack/ClientShellDLL/PlayerSoundFX.h @@ -0,0 +1,66 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerSoundFX.h +// +// PURPOSE : Player Sound fx - Definition +// +// CREATED : 10/28/98 (was WeaponSoundFX) +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYER_SOUND_FX_H__ +#define __PLAYER_SOUND_FX_H__ + +#include "SpecialFX.h" + +struct PLAYERSOUNDCREATESTRUCT : public SFXCREATESTRUCT +{ + PLAYERSOUNDCREATESTRUCT(); + + LTVector vPos; + uint8 nClientId; + uint8 nType; + uint8 nWeaponId; +}; + +inline PLAYERSOUNDCREATESTRUCT::PLAYERSOUNDCREATESTRUCT() +{ + vPos.Init(); + nClientId = 0; + nType = 0; + nWeaponId = 0; +} + +class CPlayerSoundFX : public CSpecialFX +{ + public : + + CPlayerSoundFX() : CSpecialFX() + { + m_vPos.Init(); + m_nClientId = 0; + m_nType = 0; + m_nWeaponId = 0; + } + + ~CPlayerSoundFX() + { + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update() { return LTFALSE; } + + virtual uint32 GetSFXID() { return SFX_PLAYERSOUND_ID; } + + private : + + LTVector m_vPos; + uint8 m_nClientId; + uint8 m_nType; + uint8 m_nWeaponId; +}; + +#endif // __PLAYER_SOUND_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerStats.cpp b/Jack/ClientShellDLL/PlayerStats.cpp new file mode 100644 index 00000000..b434ade3 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerStats.cpp @@ -0,0 +1,17 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerStats.cpp +// +// PURPOSE : Implementation of PlayerStats class +// +// CREATED : 10/9/97 +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PlayerStats.h" + + +CPlayerStats* g_pPlayerStats = LTNULL; diff --git a/Jack/ClientShellDLL/PlayerStats.h b/Jack/ClientShellDLL/PlayerStats.h new file mode 100644 index 00000000..b789fe31 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerStats.h @@ -0,0 +1,151 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerStats.h +// +// PURPOSE : Definition of PlayerStats class +// +// CREATED : 10/9/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYERSTATS_H +#define __PLAYERSTATS_H + +#include "ltbasedefs.h" +#include "overlays.h" +#include "IDList.h" +#include "IntelItemList.h" +#include "SkillsButeMgr.h" +#include "weaponmgr.h" + +class CGameClientShell; +struct MissionStats; + +class CPlayerStats +{ +public: + + virtual IDList* GetObjectives() = 0; + virtual IDList* GetOptionalObjectives() = 0; + virtual IDList* GetCompletedObjectives() = 0; + virtual IDList* GetParameters() = 0; + virtual IDList* GetKeys() = 0; + + virtual CIntelItemList* GetIntelList() = 0; + + virtual LTBOOL Init() = 0; + virtual void Term() = 0; + + virtual void OnEnterWorld(LTBOOL bRestoringGame=LTFALSE) = 0; + virtual void OnExitWorld() = 0; + virtual void Update() {} + + virtual void UpdatePlayerWeapon(uint8 nWeaponId, uint8 nAmmoId, LTBOOL bForce=LTFALSE) = 0; + virtual void ResetStats() = 0; + + virtual void Clear() = 0; + virtual void UpdateHealth(uint32 nHealth) = 0; + virtual void UpdateArmor(uint32 nArmor) = 0; + virtual void UpdateMaxHealth(uint32 nHealth) = 0; + virtual void UpdateMaxArmor(uint32 nArmor) = 0; + virtual void UpdateEnergy(uint32 nEnergy) = 0; + virtual void UpdateMaxEnergy(uint32 nEnergy) = 0; + virtual void UpdateProgress(uint32 nProgress) = 0; + virtual void UpdateMaxProgress(uint32 nMaxProgress) = 0; + + virtual void UpdateAmmo(uint8 nWeaponId, uint8 nAmmoId, uint32 nAmmo, LTBOOL bPickedup=LTFALSE, LTBOOL bDisplayMsg=LTTRUE, bool bActivatingPickup=false) = 0; + virtual void UpdateGear(uint8 nGearId) = 0; + virtual void UpdateMod(uint8 nModId) = 0; + virtual void UpdateAir(LTFLOAT nPercent) = 0; + virtual void UpdateObjectives(uint8 nThing, uint8 nType, uint32 dwId) = 0; + virtual void UpdateKeys(uint8 nType, uint16 dwId) = 0; + virtual void UpdateIntel(uint32 nTextId, uint8 nPopupId, LTBOOL bIsIntel) = 0; + virtual void UpdateHiding(LTBOOL bIsHiding,LTBOOL bIsHidden, LTBOOL bCantHide, float fHideDuration) = 0; + virtual void UpdateSkills(ILTMessage_Read *pMsg) = 0; + virtual void GainSkills(uint8 nRewardId, uint8 nBonusId, uint16 nAmount) = 0; + virtual void UpdateMissionStats(ILTMessage_Read *pMsg) = 0; + + virtual void ResetSkills() = 0; //clears all skill data + virtual void ResetObjectives() = 0; //clears all objective data + virtual void ResetMissionStats() = 0; //clears all mission data + + virtual void ResetInventory() = 0; //clears all inventory data + virtual void DropInventory(LTBOOL bResetGear=LTTRUE) = 0; //drops are currently carried weapons and ammo + // also drops gear and mods if bResetGear is set + virtual void OnObjectivesDataMessage(ILTMessage_Read *pMsg) = 0; + + virtual void ClearMissionInfo() = 0; + virtual int GetMissionDamage() = 0; + + virtual void SetObjectivesSeen() {}; + + virtual const MissionStats* GetMissionStats() const = 0; + + virtual void Save(ILTMessage_Write *pMsg) = 0; + virtual void Load(ILTMessage_Read *pMsg) = 0; + + virtual uint8 GetCurWeapon() const = 0; + + // [KLS - 02/13/02] Updated to support checking for mods on weapons other than + // the current weapon... + virtual uint8 GetMod(ModType eType, const WEAPON* pW=LTNULL) = 0; + virtual inline uint8 GetSilencer(const WEAPON* pW=LTNULL) = 0; + virtual inline uint8 GetScope(const WEAPON* pW=LTNULL) = 0; + + virtual inline LTBOOL CanBeSilenced() = 0; + virtual inline LTBOOL CanHaveScope() = 0; + + + virtual uint32 GetAmmoCount(uint8 nAmmoId) const = 0; + virtual LTBOOL HaveWeapon(uint8 nWeaponId) const = 0; + virtual LTBOOL HaveMod(uint8 nModId) const = 0; + virtual LTBOOL HaveGear(uint8 nGearId) const = 0; + + virtual LTBOOL CanUseWeapon(uint8 nWeaponId) const = 0; + virtual LTBOOL CanUseAmmo(uint8 nAmmoId) const = 0; + virtual LTBOOL CanUseMod(uint8 nModId) const = 0; + virtual LTBOOL CanUseGear(uint8 nGearId) const = 0; + + + virtual void Setup( ) = 0; + + virtual LTBOOL HaveAirSupply() = 0; + + + + virtual uint32 GetHealth() = 0; + virtual uint32 GetMaxHealth() = 0; + virtual uint32 GetArmor() = 0; + virtual uint32 GetMaxArmor() = 0; + virtual uint32 GetEnergy() = 0; + virtual uint32 GetMaxEnergy() = 0; + virtual LTFLOAT GetAirPercent() = 0; + virtual uint32 GetProgress() = 0; + virtual uint32 GetMaxProgress() = 0; + + virtual uint8 GetCurrentWeapon() = 0; + virtual uint8 GetCurrentAmmo() = 0; + + virtual uint32 GetCurrentAmmoCount() = 0; + + virtual LTBOOL IsHiding() = 0; + virtual LTBOOL IsHidden() = 0; + virtual LTBOOL CanHide() = 0; + virtual float GetHideDuration() = 0; + + virtual uint32 GetTotalSkillPoints() = 0; + virtual uint32 GetAvailSkillPoints() = 0; + virtual uint8 GetSkillLevel(eSkill skill) = 0; + + virtual const RANK* GetRank() = 0; + virtual uint32 GetCostToUpgrade(eSkill skill) = 0; + + virtual float GetSkillModifier(eSkill skl, uint8 nMod) = 0; +}; + +extern CPlayerStats* g_pPlayerStats; + + +#endif diff --git a/Jack/ClientShellDLL/PlayerVehicleFX.cpp b/Jack/ClientShellDLL/PlayerVehicleFX.cpp new file mode 100644 index 00000000..293c9e2d --- /dev/null +++ b/Jack/ClientShellDLL/PlayerVehicleFX.cpp @@ -0,0 +1,232 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerVehicleFX.cpp +// +// PURPOSE : Beam special FX - Implementation +// +// CREATED : 6/8/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PlayerVehicleFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "SFXMsgIds.h" +#include "GameClientShell.h" +#include "VehicleButeMgr.h" + +#define RADAR_SNOWMOBILE_TYPE "Snowmobile" + +//blinks per second +static float fFadeSpeed = 2.0f; + +extern CGameClientShell* g_pGameClientShell; + + +CPlayerVehicleFX::~CPlayerVehicleFX() +{ + if (m_bBlinking) + { + m_bBlinking = false; + g_pClientFXMgr->ShutdownClientFX(&m_ClientFXLink); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerVehicleFX::Init +// +// PURPOSE: Init the beam fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerVehicleFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + PVCREATESTRUCT cs; + + cs.hServerObj = hServObj; + cs.Read(pMsg); + + m_bBlinking = pMsg->Readbool(); + if (m_bBlinking) + StartBlink(); + else + ClearBlink(); + + return Init(&cs); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerVehicleFX::Init +// +// PURPOSE: Init the player vehicle fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerVehicleFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + PVCREATESTRUCT* pFX = (PVCREATESTRUCT*)psfxCreateStruct; + m_cs = *pFX; + + // Add the snowmobile object to the radar list in coop games only... + + if( IsMultiplayerGame( ) && IsCoopMultiplayerGameType( ) && g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->AddObject( m_hServerObject, RADAR_SNOWMOBILE_TYPE, INVALID_TEAM ); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerVehicleFX::Update +// +// PURPOSE: Update the tracer +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerVehicleFX::Update() +{ + if( !CSpecialFX::Update() || m_bWantRemove ) + return LTFALSE; + + if (m_bBlinking) + { + UpdateBlink(); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CPlayerVehicleFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::OnServerMessage(pMsg)) return LTFALSE; + + PlayerVehicleFXMsgs eMsg = (PlayerVehicleFXMsgs)pMsg->Readuint8(); + switch(eMsg) + { + case kPlayerVehicleRespawn: + { + LTVector vOldPos = pMsg->ReadLTVector(); + LTVector vNewPos = pMsg->ReadLTVector(); + Respawn(vOldPos,vNewPos); + } + break; + case kPlayerVehicleStartFade: + StartBlink(); + break; + case kPlayerVehicleStopFade: + ClearBlink(); + break; + } + + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerVehicleFX::UpdateBlink +// +// PURPOSE: Update the fade in/out +// +// ----------------------------------------------------------------------- // + +void CPlayerVehicleFX::UpdateBlink() +{ + if (m_bFadeIn) + { + m_fAlpha += g_pLTClient->GetFrameTime() * fFadeSpeed; + if (m_fAlpha > 1.0f) + { + m_fAlpha = 1.0f; + m_bFadeIn = false; + } + } + else + { + m_fAlpha -= g_pLTClient->GetFrameTime() * fFadeSpeed; + if (m_fAlpha < 0.01f) + { + m_fAlpha = 0.01f; + m_bFadeIn = true; + } + } + + g_pLTClient->SetObjectColor(m_hServerObject, 1.0f, m_fAlpha, m_fAlpha, 1.0f); + +} + +void CPlayerVehicleFX::StartBlink() +{ + m_fAlpha = 1.0f; + m_bFadeIn = false; + m_bBlinking = true; + + // get the flags for this ClientFX + uint32 dwFlags = FXFLAG_LOOP | FXFLAG_NOSMOOTHSHUTDOWN; + + VEHICLE* pVehicle = g_pVehicleButeMgr->GetVehicle(m_cs.nVehicleId); + + LTVector vPos; + // get in initial position for the effect + g_pLTClient->GetObjectPos( m_hServerObject, &vPos ); + + // prepare the create struct + CLIENTFX_CREATESTRUCT fxInit(pVehicle->sFadeFX.c_str(),dwFlags,vPos); + + // create the client fx + g_pClientFXMgr->CreateClientFX(&m_ClientFXLink,fxInit,true); + + + g_pLTClient->SetObjectColor(m_hServerObject, 1.0f, 1.0f, 1.0f, 1.0f); +} + +void CPlayerVehicleFX::ClearBlink() +{ + m_fAlpha = 1.0f; + m_bBlinking = false; + g_pClientFXMgr->ShutdownClientFX(&m_ClientFXLink); + g_pLTClient->SetObjectColor(m_hServerObject, 1.0f, 1.0f, 1.0f, 1.0f); +} + + +void CPlayerVehicleFX::Respawn(LTVector& vOldPos, LTVector& vNewPos ) +{ + ClearBlink(); + + VEHICLE* pVehicle = g_pVehicleButeMgr->GetVehicle(m_cs.nVehicleId); + + // create the unspawn fx + CLIENTFX_CREATESTRUCT unspawnFxInit(pVehicle->sUnspawnFX.c_str(),0,vOldPos); + CLIENTFX_LINK unspawnFXLink; + g_pClientFXMgr->CreateClientFX(&unspawnFXLink,unspawnFxInit,true); + + // create the respawn fx + CLIENTFX_CREATESTRUCT respawnFxInit(pVehicle->sSpawnFX.c_str(),0,vNewPos); + CLIENTFX_LINK respawnFXLink; + g_pClientFXMgr->CreateClientFX(&respawnFXLink,respawnFxInit,true); + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerVehicleFX.h b/Jack/ClientShellDLL/PlayerVehicleFX.h new file mode 100644 index 00000000..724b8715 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerVehicleFX.h @@ -0,0 +1,50 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerVehicleFX.h +// +// PURPOSE : Tracer special fx class - Definition +// +// CREATED : 6/8/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYER_VEHICLE_FX_H__ +#define __PLAYER_VEHICLE_FX_H__ + +#include "SpecialFX.h" +#include "SharedFXStructs.h" + +class CPlayerVehicleFX : public CSpecialFX +{ + public : + + CPlayerVehicleFX() : CSpecialFX() + { + } + ~CPlayerVehicleFX(); + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + + virtual uint32 GetSFXID() { return SFX_PLAYERVEHICLE_ID; } + + protected : + void StartBlink(); + void UpdateBlink(); + void ClearBlink(); + void Respawn(LTVector& vOldPos, LTVector& vNewPos ); + + PVCREATESTRUCT m_cs; + bool m_bBlinking; + bool m_bFadeIn; + float m_fAlpha; + + CLIENTFX_LINK m_ClientFXLink; +}; + +#endif // __PLAYER_VEHICLE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PlayerViewAttachmentMgr.cpp b/Jack/ClientShellDLL/PlayerViewAttachmentMgr.cpp new file mode 100644 index 00000000..541d3ff6 --- /dev/null +++ b/Jack/ClientShellDLL/PlayerViewAttachmentMgr.cpp @@ -0,0 +1,365 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerViewAttachmentMgr.cpp +// +// PURPOSE : Manager of objects attached to player-view models... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "CMoveMgr.h" + #include "CharacterFX.h" + #include "PlayerViewAttachmentMgr.h" + +// +// Globals... +// + + CPlayerViewAttachmentMgr *g_pPVAttachmentMgr = LTNULL; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::CPlayerViewAttachmentMgr() +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CPlayerViewAttachmentMgr::CPlayerViewAttachmentMgr() +: m_hObject ( LTNULL ) +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::CPlayerViewAttachmentMgr() +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CPlayerViewAttachmentMgr::~CPlayerViewAttachmentMgr() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::Init() +// +// PURPOSE: Initialize the mgr... +// +// ----------------------------------------------------------------------- // + +bool CPlayerViewAttachmentMgr::Init() +{ + ASSERT( !g_pPVAttachmentMgr ); + + if( g_pPVAttachmentMgr ) + { + return false; + } + + g_pPVAttachmentMgr = this; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::Term() +// +// PURPOSE: Clean up... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::Term() +{ + RemovePVAttachments(); + m_hObject = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::CreatePVAttachments() +// +// PURPOSE: Create any attachment models that we should have... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::CreatePVAttachments( HOBJECT hPVObject ) +{ + ASSERT( g_pPlayerMgr->GetMoveMgr() ); + ASSERT( g_pModelButeMgr ); + + // No need to recrete the attachments if it's just being added to the same model... + + if( (m_hObject == hPVObject) && !m_lstPVAttachments.empty() ) + return; + + // Start with an empty list... + + RemovePVAttachments(); + + // Get the clients CharacterFX so we know which model we are using... + + CCharacterFX* pCharFX = g_pPlayerMgr->GetMoveMgr()->GetCharacterFX(); + if( !pCharFX ) + return; + + // Check how many player view attachments we need to create... + + ModelId eModelId = pCharFX->GetModelId(); + uint8 nNumPVAttachments = g_pModelButeMgr->GetNumPlayerViewAttachments( eModelId ); + if( nNumPVAttachments == 0 ) + return; + + uint32 dwFlags = 0; + g_pCommonLT->GetObjectFlags( hPVObject, OFT_Flags, dwFlags ); + + // It must be a player view model... + + if( !(dwFlags & FLAG_REALLYCLOSE) ) + return; + + // We need to create attachments so assign the model we are attaching to... + + m_hObject = hPVObject; + + const char *pszPVAttachmentPosition = LTNULL; + const char *pszPVAttachment = LTNULL; + + for( uint8 i = 0; i < nNumPVAttachments; ++i ) + { + g_pModelButeMgr->GetPlayerViewAttachment( eModelId, i, pszPVAttachmentPosition, pszPVAttachment ); + + CreatePVAttachment( pszPVAttachmentPosition, pszPVAttachment ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::CreatePVAttachment() +// +// PURPOSE: Create an attachment at a given socket... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::CreatePVAttachment( const char *pszPVAttachmentPosition, const char *pszPVAttachment ) +{ + ASSERT( g_pAttachButeMgr ); + + if( !pszPVAttachmentPosition || !pszPVAttachment || !m_hObject ) + return; + + CPlayerViewAttachment pva; + + // Make sure the attachment position socket actually exists on the weapon model... + + if( LT_OK != g_pModelLT->GetSocket( m_hObject, pszPVAttachmentPosition, pva.m_hSocket )) + { + return; + } + + // Make sure the attachment record actually exists... + + int nAttachmentId = g_pAttachButeMgr->GetPVAttachmentIDByName( pszPVAttachment ); + if( nAttachmentId < 0 ) + return; + + char szBuf[MAX_CS_FILENAME_LEN] = {0}; + + // The socket is good, now create the model... + + ObjectCreateStruct ocs; + + g_pAttachButeMgr->GetPVAttachmentModel( nAttachmentId, ocs.m_Filename, ARRAY_LEN( ocs.m_Filename )); + g_pAttachButeMgr->CopyPVAttachmentSkins( nAttachmentId, ocs.m_SkinNames[0], ARRAY_LEN( ocs.m_SkinNames[0] )); + g_pAttachButeMgr->CopyPVAttachmentRenderStyles( nAttachmentId, ocs.m_RenderStyleNames[0], ARRAY_LEN( ocs.m_RenderStyleNames[0] )); + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags |= FLAG_REALLYCLOSE; + ocs.m_Flags2 |= FLAG2_DYNAMICDIRLIGHT; + + if( g_pAttachButeMgr->GetPVAttachmentTranslcuent( nAttachmentId )) + { + ocs.m_Flags2 |= FLAG2_FORCETRANSLUCENT; + } + + pva.m_hModel = g_pLTClient->CreateObject( &ocs ); + if( !pva.m_hModel ) + return; + + LTVector vScale = g_pAttachButeMgr->GetPVAttachmentScale( nAttachmentId ); + g_pLTClient->SetObjectScale( pva.m_hModel, &vScale ); + g_pLTClient->SetModelLooping( pva.m_hModel, false ); + + // The attachment is set up so give it an Update and add it to our list... + + m_lstPVAttachments.push_back( pva ); + UpdatePVAttachment( m_lstPVAttachments.size() - 1); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::UpdatePVAttachments() +// +// PURPOSE: Update all the player view attachments to the propper position and rotation... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::UpdatePVAttachments() +{ + for( uint8 i = 0; i < m_lstPVAttachments.size(); ++i ) + { + UpdatePVAttachment( i ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::UpdatePVAttachment() +// +// PURPOSE: Update the player view attachment to the propper position and rotation... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::UpdatePVAttachment( uint8 nPVAttachIndex ) +{ + if( nPVAttachIndex >= m_lstPVAttachments.size() ) + return; + + if( !m_hObject ) + return; + + CPlayerViewAttachment PlayerViewAttachment = m_lstPVAttachments[nPVAttachIndex]; + + if( PlayerViewAttachment.m_hModel ) + { + if( INVALID_MODEL_SOCKET != PlayerViewAttachment.m_hSocket ) + { + LTransform transform; + if ( LT_OK == g_pModelLT->GetSocketTransform( m_hObject, + PlayerViewAttachment.m_hSocket, + transform, + LTTRUE ) ) + { + LTVector vPos = transform.m_Pos; + LTRotation rRot = transform.m_Rot; + + g_pLTClient->SetObjectPos( PlayerViewAttachment.m_hModel, &vPos ); + g_pLTClient->SetObjectRotation( PlayerViewAttachment.m_hModel, &rRot ); + + if (transform.m_Scale.x != 1.0f || transform.m_Scale.y != 1.0f || transform.m_Scale.z != 1.0f) + g_pLTClient->SetObjectScale( PlayerViewAttachment.m_hModel, &transform.m_Scale ); + } + } + else + { + ShowPVAttachment( nPVAttachIndex, false ); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::RemovePVAttachments() +// +// PURPOSE: Remove the player view attachment objects and empty our list... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::RemovePVAttachments() +{ + for( uint8 i = 0; i < m_lstPVAttachments.size(); ++i ) + { + RemovePVAttachment( i ); + } + + m_lstPVAttachments.clear(); + m_hObject = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::RemovePVAttachment() +// +// PURPOSE: Remove the player view attachment object... +// This does NOT remove it from our player-view attachment list. +// You should erase it after the call to RemovePVAttachment() +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::RemovePVAttachment( uint8 nPVAttachIndex ) +{ + if( nPVAttachIndex >= m_lstPVAttachments.size() ) + return; + + CPlayerViewAttachment PlayerViewAttachment = m_lstPVAttachments[nPVAttachIndex]; + + if( PlayerViewAttachment.m_hModel ) + { + g_pLTClient->RemoveObject( PlayerViewAttachment.m_hModel ); + } + + PlayerViewAttachment.m_hModel = LTNULL; + PlayerViewAttachment.m_hSocket = INVALID_MODEL_SOCKET; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::ShowPVAttachments() +// +// PURPOSE: Hide/Show the player view attachment objects... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::ShowPVAttachments( bool bVisible /* = true */ ) +{ + for( uint8 i = 0; i < m_lstPVAttachments.size(); ++i ) + { + // Save whether the attachment was hidden before this call.. + + bool bHidden = m_lstPVAttachments[i].m_bHidden; + + if( !bHidden ) + ShowPVAttachment( i, bVisible ); + + // Keep the hidden state + + m_lstPVAttachments[i].m_bHidden = bHidden; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerViewAttachmentMgr::ShowPVAttachments() +// +// PURPOSE: Hide/Show the player view attachment object... +// +// ----------------------------------------------------------------------- // + +void CPlayerViewAttachmentMgr::ShowPVAttachment( uint8 nPVAttachIndex, bool bVisible /* = true */ ) +{ + if( nPVAttachIndex >= m_lstPVAttachments.size() ) + return; + + HOBJECT hModel = m_lstPVAttachments[nPVAttachIndex].m_hModel; + + if( hModel ) + { + g_pCommonLT->SetObjectFlags( hModel, OFT_Flags, (bVisible ? FLAG_VISIBLE : 0), FLAG_VISIBLE ); + } + + m_lstPVAttachments[nPVAttachIndex].m_bHidden = !bVisible; +} + diff --git a/Jack/ClientShellDLL/PlayerViewAttachmentMgr.h b/Jack/ClientShellDLL/PlayerViewAttachmentMgr.h new file mode 100644 index 00000000..6a13219e --- /dev/null +++ b/Jack/ClientShellDLL/PlayerViewAttachmentMgr.h @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerViewAttachmentMgr.h +// +// PURPOSE : Manager of objects attached to player-view models... +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __PLAYER_VIEW_ATTACHMENT_MGR_H__ +#define __PLAYER_VIEW_ATTACHMENT_MGR_H__ + +// +// Globals... +// + + extern CPlayerViewAttachmentMgr *g_pPVAttachmentMgr; + + + +class CPlayerViewAttachmentMgr +{ + public: // Methods... + + CPlayerViewAttachmentMgr(); + ~CPlayerViewAttachmentMgr(); + + bool Init(); + void Term(); + + void CreatePVAttachments( HOBJECT hPVObject ); + void UpdatePVAttachments(); + void RemovePVAttachments(); + void ShowPVAttachments( bool bVisible = true ); + void ShowPVAttachment( uint8 nPVAttachIndex, bool bVisible = true ); + + + protected: // Methods... + + void CreatePVAttachment( const char *pszPVAttachmentPosition, const char *pszPVAttachment ); + void UpdatePVAttachment( uint8 nPVAttachIndex ); + void RemovePVAttachment( uint8 nPVAttachIndex ); + + + protected: // Members... + + class CPlayerViewAttachment + { + public: + + CPlayerViewAttachment() + : m_hModel ( LTNULL ), + m_hSocket ( INVALID_MODEL_SOCKET ), + m_bHidden ( false ) + { + } + + LTObjRef m_hModel; + HMODELSOCKET m_hSocket; + bool m_bHidden; + }; + typedef std::vector PVAttachmentList; + + PVAttachmentList m_lstPVAttachments; // List of all current player-view attachments + + HOBJECT m_hObject; // Object that the attachments are attached to +}; + +#endif // __PLAYER_VIEW_ATTACHMENT_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PolyDebrisFX.cpp b/Jack/ClientShellDLL/PolyDebrisFX.cpp new file mode 100644 index 00000000..404b668c --- /dev/null +++ b/Jack/ClientShellDLL/PolyDebrisFX.cpp @@ -0,0 +1,386 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PolyDebrisFX.cpp +// +// PURPOSE : Polygon Debris - Implementation +// +// CREATED : 7/16/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PolyDebrisFX.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarPolyDebrisTrailTime; +VarTrack g_cvarPolyDebrisScaleDist; +VarTrack g_cvarPolyDebrisMinDistScale; +VarTrack g_cvarPolyDebrisMaxDistScale; + +CPolygonDebrisFX::~CPolygonDebrisFX() +{ + // Clear out the PolyFX list + for (uint32 nClearLoop = 0; nClearLoop < MAX_DEBRIS; ++nClearLoop) + { + if (m_Polies[nClearLoop]) + { + GetPolyLineFXBank()->Delete(m_Polies[nClearLoop]); + m_Polies[nClearLoop] = LTNULL; + } + } +} + +CBankedList *CPolygonDebrisFX::GetPolyLineFXBank() +{ + static CBankedList theBank; + + return &theBank; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::Init +// +// PURPOSE: Init the polygon debris +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolygonDebrisFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!psfxCreateStruct) return LTFALSE; + + m_cs = *(POLYDEBRISCREATESTRUCT*)psfxCreateStruct; + + DEBRISCREATESTRUCT debris; + + debris.rRot = LTRotation(m_cs.vNormal, LTVector(0.0f, 1.0f, 0.0f)); + debris.vPos = m_cs.vPos + (m_cs.vDir * m_cs.PolyDebrisFX.fDirOffset); + debris.vMinVel = m_cs.PolyDebrisFX.vMinVel; + debris.vMaxVel = m_cs.PolyDebrisFX.vMaxVel; + debris.fMinLifeTime = m_cs.PolyDebrisFX.fMinDuration; + debris.fMaxLifeTime = m_cs.PolyDebrisFX.fMaxDuration; + debris.nNumDebris = GetRandom(m_cs.PolyDebrisFX.nMinDebris, m_cs.PolyDebrisFX.nMaxDebris); + debris.nMinBounce = m_cs.PolyDebrisFX.nMinBounce; + debris.nMaxBounce = m_cs.PolyDebrisFX.nMaxBounce; + debris.fGravityScale = m_cs.PolyDebrisFX.fGravityScale; + debris.vMinDOffset = m_cs.PolyDebrisFX.vMinDOffset; + debris.vMaxDOffset = m_cs.PolyDebrisFX.vMaxDOffset; + debris.vMinWorldVel = m_cs.PolyDebrisFX.vMinWorldVel; + debris.vMaxWorldVel = m_cs.PolyDebrisFX.vMaxWorldVel; + debris.bDirOffsetOnly = m_cs.PolyDebrisFX.bDirOffsetOnly; + + if (!CDebrisFX::Init(&debris)) return LTFALSE; + + // Too expensive to have poly debris bouncing... + + m_ds.bBounce = LTFALSE; + + if (!g_cvarPolyDebrisTrailTime.IsInitted()) + { + g_cvarPolyDebrisTrailTime.Init(g_pLTClient, "PolyDebrisTrailTime", LTNULL, 0.25f); + } + + if (!g_cvarPolyDebrisScaleDist.IsInitted()) + { + g_cvarPolyDebrisScaleDist.Init(g_pLTClient, "PolyDebrisScaleDist", LTNULL, 150.0f); + } + + if (!g_cvarPolyDebrisMinDistScale.IsInitted()) + { + g_cvarPolyDebrisMinDistScale.Init(g_pLTClient, "PolyDebrisMinDistScale", LTNULL, 1.0f); + } + + if (!g_cvarPolyDebrisMaxDistScale.IsInitted()) + { + g_cvarPolyDebrisMaxDistScale.Init(g_pLTClient, "PolyDebrisMaxDistScale", LTNULL, 1.0f); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::IsValidDebris +// +// PURPOSE: Is this debris object valid +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolygonDebrisFX::IsValidDebris(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return LTFALSE; + + return (i < m_nNumPolies && (m_Polies[i] != LTNULL)); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::CreateDebris +// +// PURPOSE: Create a debris poly +// +// ----------------------------------------------------------------------- // + +void CPolygonDebrisFX::CreateDebris(int i, const LTVector &vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris || i != m_nNumPolies || (m_Polies[i] != LTNULL)) return; + + // Create a poly debris object... + + PLFXCREATESTRUCT pls; + + LTVector vLength = (m_cs.vDir * GetRandom(m_cs.PolyDebrisFX.fMinLength, m_cs.PolyDebrisFX.fMaxLength)) / 2.0f; + + LTVector vMinC1 = m_cs.PolyDebrisFX.vMinColor1; + LTVector vMaxC1 = m_cs.PolyDebrisFX.vMaxColor1; + LTVector vMinC2 = m_cs.PolyDebrisFX.vMinColor2; + LTVector vMaxC2 = m_cs.PolyDebrisFX.vMaxColor2; + + pls.pTexture = m_cs.PolyDebrisFX.szTexture[0] ? m_cs.PolyDebrisFX.szTexture : LTNULL; + pls.vStartPos = vPos - vLength; + pls.vEndPos = vPos + vLength; + pls.vInnerColorStart = LTVector(GetRandom(vMinC1.x, vMaxC1.x), GetRandom(vMinC1.y, vMaxC1.y), GetRandom(vMinC1.z, vMaxC1.z)); + pls.vInnerColorEnd = LTVector(GetRandom(vMinC2.x, vMaxC2.x), GetRandom(vMinC2.y, vMaxC2.y), GetRandom(vMinC2.z, vMaxC2.z)); + pls.vOuterColorStart = pls.vInnerColorStart; + pls.vOuterColorEnd = pls.vInnerColorEnd; + pls.fAlphaStart = m_cs.PolyDebrisFX.fInitialAlpha; + pls.fAlphaEnd = m_cs.PolyDebrisFX.fFinalAlpha; + pls.fMinWidth = 0.0f; + pls.fMaxWidth = GetRandom(m_cs.PolyDebrisFX.fMinWidth, m_cs.PolyDebrisFX.fMaxWidth); + pls.fLifeTime = GetDebrisLife(i); + pls.fAlphaLifeTime = GetDebrisLife(i); + pls.bAdditive = m_cs.PolyDebrisFX.bAdditive; + pls.bMultiply = m_cs.PolyDebrisFX.bMultiply; + pls.bDontFadeAlphaAtEdge= !m_cs.PolyDebrisFX.bAdditive; + pls.nWidthStyle = m_cs.PolyDebrisFX.nStyle > PLWS_CONSTANT ? GetRandom(PLWS_BIG_TO_SMALL, PLWS_CONSTANT) : m_cs.PolyDebrisFX.nStyle; + pls.bUseObjectRotation = !m_cs.PolyDebrisFX.bShowTrail; + pls.bNoZ = m_cs.PolyDebrisFX.bShowTrail; + pls.nNumSegments = 1; + + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fPerturb = 0.0f; + + // Scale the width based on the distance the camera is away from the + // origin of the debris... + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if (hCamera) + { + LTVector vCamPos; + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + + vCamPos -= vPos; + LTFLOAT fScaleVal = vCamPos.Length() / g_cvarPolyDebrisScaleDist.GetFloat(); + + fScaleVal = LTCLAMP(fScaleVal, g_cvarPolyDebrisMinDistScale.GetFloat(), g_cvarPolyDebrisMaxDistScale.GetFloat()); + + pls.fMaxWidth *= fScaleVal; + } + + CPolyLineFX *pNewPoly = GetPolyLineFXBank()->New(); + + if (!pNewPoly->Init(&pls) || + !pNewPoly->CreateObject(m_pClientDE)) + { + GetPolyLineFXBank()->Delete(pNewPoly); + return; + } + else + { + m_Polies[m_nNumPolies] = pNewPoly; + } + + m_nNumPolies++; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::OkToRemoveDebris +// +// PURPOSE: See if this particular debris can be removed. +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolygonDebrisFX::OkToRemoveDebris(int i) +{ + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::RemoveDebris +// +// PURPOSE: Remove the specified debris object +// +// ----------------------------------------------------------------------- // + +void CPolygonDebrisFX::RemoveDebris(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + if (i >= m_nNumPolies) return; + if (m_Polies[i] == LTNULL) return; + + GetPolyLineFXBank()->Delete(m_Polies[i]); + m_Polies[i] = LTNULL; + + CDebrisFX::RemoveDebris(i); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::RotateDebrisToRest +// +// PURPOSE: Rotate the debris to the rest position +// +// ----------------------------------------------------------------------- // + +void CPolygonDebrisFX::RotateDebrisToRest(int i) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + if (i >= m_nNumPolies) return; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::SetDebrisPos +// +// PURPOSE: Set the debris position +// +// ----------------------------------------------------------------------- // + +void CPolygonDebrisFX::SetDebrisPos(int i, const LTVector &vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + if (i >= m_nNumPolies) return; + if (m_Polies[i] == LTNULL) return; + + // Instead of moving the current poly, add another one at the + // new position if we're showing a trail.. + + if (m_cs.PolyDebrisFX.bShowTrail) + { + PLFXLINESTRUCT ls; + + LTVector vLength = (m_cs.vDir * GetRandom(m_cs.PolyDebrisFX.fMinLength, m_cs.PolyDebrisFX.fMaxLength)) / 2.0f; + + ls.vStartPos = vPos - vLength; + + // Get the last vert position... + + PolyLineList* pLines = m_Polies[i]->GetLines(); + if (pLines->GetLength() > 0) + { + PolyLine** pLine = pLines->GetItem(TLIT_LAST); + if (pLine && *pLine) + { + PolyVertStruct** pVert = (*pLine)->list.GetItem(TLIT_LAST); + if (pVert && *pVert) + { + ls.vStartPos = m_Polies[i]->GetVertPos((*pVert)); + } + } + } + + LTVector vMinC1 = m_cs.PolyDebrisFX.vMinColor1; + LTVector vMaxC1 = m_cs.PolyDebrisFX.vMaxColor1; + LTVector vMinC2 = m_cs.PolyDebrisFX.vMinColor2; + LTVector vMaxC2 = m_cs.PolyDebrisFX.vMaxColor2; + + ls.vEndPos = vPos; + ls.vInnerColorStart = LTVector(GetRandom(vMinC1.x, vMaxC1.x), GetRandom(vMinC1.y, vMaxC1.y), GetRandom(vMinC1.z, vMaxC1.z)); + ls.vInnerColorEnd = LTVector(GetRandom(vMinC2.x, vMaxC2.x), GetRandom(vMinC2.y, vMaxC2.y), GetRandom(vMinC2.z, vMaxC2.z)); + ls.fAlphaStart = m_cs.PolyDebrisFX.fInitialAlpha; + ls.fAlphaEnd = m_cs.PolyDebrisFX.fFinalAlpha; + //ls.fLifeTime = m_fDebrisLife[i] - (g_pLTClient->GetTime() - m_fStartTime); + ls.fLifeTime = g_cvarPolyDebrisTrailTime.GetFloat(); + ls.fLifeTime = ls.fLifeTime < 0.0f ? 0.0f : ls.fLifeTime; + ls.fAlphaLifeTime = ls.fLifeTime; + + m_Polies[i]->AddLine(ls); + } + else + { + m_Polies[i]->SetPos(vPos); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::GetDebrisPos +// +// PURPOSE: Get the debris position +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolygonDebrisFX::GetDebrisPos(int i, LTVector & vPos) +{ + if (i < 0 || i >= m_ds.nNumDebris) return LTFALSE; + if (i >= m_nNumPolies) return LTFALSE; + if (m_Polies[i] == LTNULL) return LTFALSE; + + vPos = m_Polies[i]->GetPos(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::SetDebrisRot +// +// PURPOSE: Set the debris rotation +// +// ----------------------------------------------------------------------- // + +void CPolygonDebrisFX::SetDebrisRot(int i, const LTRotation &rRot) +{ + if (i < 0 || i >= m_ds.nNumDebris) return; + if (i >= m_nNumPolies) return; + if (m_Polies[i] == LTNULL) return; + + if (!m_cs.PolyDebrisFX.bShowTrail) + { + m_Polies[i]->SetRot(rRot); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolygonDebrisFX::Update +// +// PURPOSE: Update the debris +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolygonDebrisFX::Update() +{ + if (!CDebrisFX::Update()) + return LTFALSE; + + for (int i=0; i < m_nNumPolies; i++) + { + if (m_Polies[i] == LTNULL) continue; + + // Align poly forward vector to movement direction... + + if (!m_cs.PolyDebrisFX.bShowTrail) + { + LTVector vDir = GetEmitter(i)->m_vLastPos - GetEmitter(i)->m_vPos; + + LTRotation rRot(vDir, LTVector(0.0f, 1.0f, 0.0f)); + m_Polies[i]->SetRot(rRot); + } + + m_Polies[i]->Update(); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PolyDebrisFX.h b/Jack/ClientShellDLL/PolyDebrisFX.h new file mode 100644 index 00000000..08cbe4a4 --- /dev/null +++ b/Jack/ClientShellDLL/PolyDebrisFX.h @@ -0,0 +1,75 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PolyDebrisFX.h +// +// PURPOSE : Polygon Debris - Definition +// +// CREATED : 7/16/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __POLYGON_DEBRIS_FX_H__ +#define __POLYGON_DEBRIS_FX_H__ + +#include "DebrisFX.h" +#include "PolyLineFX.h" +#include "FXStructs.h" + +struct POLYDEBRISCREATESTRUCT : public SFXCREATESTRUCT +{ + POLYDEBRISCREATESTRUCT(); + + LTVector vPos; + LTVector vNormal; + LTVector vDir; + + CPolyDebrisFX PolyDebrisFX; +}; + +inline POLYDEBRISCREATESTRUCT::POLYDEBRISCREATESTRUCT() +{ + vPos.Init(); + vNormal.Init(); + vDir.Init(); +} + +class CPolygonDebrisFX : public CDebrisFX +{ + public : + + CPolygonDebrisFX() : CDebrisFX() + { + m_nNumPolies = 0; + memset(m_Polies, 0, sizeof(m_Polies)); + } + + ~CPolygonDebrisFX(); + + virtual LTBOOL Update(); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + + virtual uint32 GetSFXID() { return SFX_POLYDEBRIS_ID; } + + protected : + + POLYDEBRISCREATESTRUCT m_cs; + + static CBankedList *GetPolyLineFXBank(); + + CPolyLineFX* m_Polies[MAX_DEBRIS]; + + int m_nNumPolies; + + virtual LTBOOL IsValidDebris(int i); + virtual void CreateDebris(int i, const LTVector &vPos); + virtual LTBOOL OkToRemoveDebris(int i); + virtual void RemoveDebris(int i); + virtual void RotateDebrisToRest(int i); + virtual void SetDebrisPos(int i, const LTVector &vPos); + virtual LTBOOL GetDebrisPos(int i, LTVector & vPos); + virtual void SetDebrisRot(int i, const LTRotation &rRot); +}; + +#endif // __POLYGON_DEBRIS_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PolyGridFX.cpp b/Jack/ClientShellDLL/PolyGridFX.cpp new file mode 100644 index 00000000..56826056 --- /dev/null +++ b/Jack/ClientShellDLL/PolyGridFX.cpp @@ -0,0 +1,1487 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PolyGridFX.cpp +// +// PURPOSE : PolyGrid special FX - Implementation +// +// CREATED : 10/13/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PolyGridFX.h" +#include "Plasma.h" +#include "iltclient.h" +#include "ClientServerShared.h" +#include "GameClientShell.h" +#include "GameSettings.h" +#include "ILTCommon.h" // For g_pCommonLT +#include "VarTrack.h" + +//variable to track if the artist wants to simulate the minimum frame rate of the polygrids +VarTrack g_cvarMinPGFrameRate; + +//this is the default movement. Movement slower will cause more subtle waves, faster will create +//larger +VarTrack g_cvarPGDisplaceMoveScale; + +extern ILTCommon *g_pCommonLT; // Defined in CommonUtilities.h + +static char g_SinTable[256]; +static LTBOOL g_bSinTableInitted=LTFALSE; + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: FindClosestPowerOf2 +// +// PURPOSE: Given a number it will find the closest power of 2 to that +// number. +// +// ----------------------------------------------------------------------- // +static uint32 FindClosestPowerOf2(uint32 nVal) +{ + //our current val, the highest bit possible + uint32 nRV = (1 << 31); + + //now repeat until we find a value + while(nRV > 0) + { + //see if we are sharing a bit, if so we have found the highest bit, and + //need to decide between this value or the one higher + if(nRV & nVal) + { + //ok, now find the distance to this + uint32 nDist1 = nVal - nRV; + + //keep that one if the distance is 0 or if we can't check higher + if((nDist1 == 0) || (nRV == (1 << 31))) + return nRV; + + //check the one higher and see if it is a better match + uint32 nDist2 = (nRV << 1) - nVal; + + //return the minimum + return (nDist2 < nDist1) ? (nRV << 1) : nRV; + } + + //move along... + nRV >>= 1; + } + + return 0; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::Init +// +// PURPOSE: Create the poly grid +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyGridFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!psfxCreateStruct) return LTFALSE; + + CSpecialFX::Init(psfxCreateStruct); + + PGCREATESTRUCT* pg = (PGCREATESTRUCT*)psfxCreateStruct; + + m_vDims = pg->vDims; + m_vColor1 = pg->vColor1; + m_vColor2 = pg->vColor2; + m_fXScaleMin = pg->fXScaleMin; + m_fXScaleMax = pg->fXScaleMax; + m_fYScaleMin = pg->fYScaleMin; + m_fYScaleMax = pg->fYScaleMax; + m_fXScaleDuration = pg->fXScaleDuration; + m_fYScaleDuration = pg->fYScaleDuration; + m_fXPan = pg->fXPan; + m_fYPan = pg->fYPan; + m_fBaseReflection = pg->fBaseReflection; + m_fVolumeIOR = pg->fVolumeIOR; + m_sSurfaceSprite = pg->sSurfaceSprite; + m_sSurfaceEnvMap = pg->sSurfaceEnvMap; + m_sDampenImage = pg->sDampenImage; + m_dwNumPoliesX = pg->dwNumPoliesX; + m_dwNumPoliesY = pg->dwNumPoliesY; + m_nNumStartupFrames = pg->nNumStartupFrames; + + m_fAlpha = pg->fAlpha; + m_nSurfaceType = pg->nPlasmaType; + m_bAdditive = pg->bAdditive; + m_bMultiply = pg->bMultiply; + m_bFresnel = pg->bFresnel; + m_bBackfaceCull = pg->bBackfaceCull; + m_bRenderEarly = pg->bRenderEarly; + m_bNormalMapSprite = pg->bNormalMapSprite; + + m_nRingRate[0] = pg->nRingRate[0]; + m_nRingRate[1] = pg->nRingRate[1]; + m_nRingRate[2] = pg->nRingRate[2]; + m_nRingRate[3] = pg->nRingRate[3]; + + m_fDampenScale = pg->fDampenScale; + m_fTimeScale = pg->fTimeScale; + m_fSpringCoeff = pg->fSpringCoeff; + m_fModelDisplace = pg->fModelDisplace; + m_fMinFrameRate = pg->fMinFrameRate; + m_nActiveModifiers = pg->nActiveModifiers; + + for(uint32 nCurrTrack = 0; nCurrTrack < MAX_MODELS_TO_TRACK; nCurrTrack++) + { + m_hTrackedModels[nCurrTrack] = NULL; + } + + for(uint32 nCurrMod = 0; nCurrMod < PG_MAX_MODIFIERS; nCurrMod++) + { + m_nXMin[nCurrMod] = pg->nXMin[nCurrMod]; + m_nYMin[nCurrMod] = pg->nYMin[nCurrMod]; + m_nXMax[nCurrMod] = pg->nXMax[nCurrMod]; + m_nYMax[nCurrMod] = pg->nYMax[nCurrMod]; + m_nNumAccelPoints[nCurrMod] = pg->nNumAccelPoints[nCurrMod]; + m_fAccelAmount[nCurrMod] = pg->fAccelAmount[nCurrMod]; + } + + m_hVolumeBrush = pg->hVolumeBrush; + + //setup any console variables + if (!g_cvarMinPGFrameRate.IsInitted()) + { + g_cvarMinPGFrameRate.Init(g_pLTClient, "MinPGFrameRate", LTNULL, 0.0f); + } + + if (!g_cvarPGDisplaceMoveScale.IsInitted()) + { + g_cvarPGDisplaceMoveScale.Init(g_pLTClient, "PGDisplaceMoveScale", LTNULL, 70.0f); + } + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::CreateObject +// +// PURPOSE: Create object associated the poly grid +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyGridFX::CreateObject(ILTClient *pClientDE) +{ + ColorRamp colorRamps[] = + { + ColorRamp(LTVector(m_vColor1.x, m_vColor1.y, m_vColor1.z), 0), + ColorRamp(LTVector(m_vColor2.x, m_vColor2.y, m_vColor2.z), 256) + }; + + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + if (!g_pGameClientShell) return LTFALSE; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTFALSE; + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + // Setup the PolyGrid... + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_POLYGRID; + createStruct.m_Flags = FLAG_VISIBLE; + createStruct.m_Pos = vPos; + createStruct.m_Rotation = rRot; + + uint32 dwSizeX = 2; + uint32 dwSizeY = 2; + + if ((m_dwNumPoliesX >= 2) && (m_dwNumPoliesY >= 2)) + { + dwSizeX = m_dwNumPoliesX; + dwSizeY = m_dwNumPoliesY; + + if (m_nSurfaceType == PGSURFACE_PLASMA_FOUR_RING) + { + // Make sure dwSize is a factor of 2 if using four ring plasma... + dwSizeX = FindClosestPowerOf2(dwSizeX); + dwSizeY = FindClosestPowerOf2(dwSizeY); + + //make sure they are at least 2 wide + if(dwSizeX < 2) + dwSizeX = 2; + if(dwSizeY < 2) + dwSizeY = 2; + } + } + + uint32 nFlags = 0; + + if(m_bFresnel) + nFlags |= PG_FRESNEL; + if(!m_bBackfaceCull) + nFlags |= PG_NOBACKFACECULL; + if(m_bRenderEarly) + nFlags |= PG_RENDERBEFORETRANSLUCENTS; + if(m_bNormalMapSprite) + nFlags |= PG_NORMALMAPSPRITE; + + //load in the dampening buffer if applicable + LoadDampenImage(dwSizeX, dwSizeY); + + //see if we need to setup a cutout mask + CPolyGridBuffer CutoutMask; + if(m_DampenBuffer.GetWidth() > 0) + { + bool bUseCutout = false; + + //resize our buffer + CutoutMask.Resize(dwSizeX, dwSizeY); + + //now run through and translate the dampening image to the cutout + uint8* pImage = m_DampenBuffer.GetBuffer(); + uint8* pEnd = pImage + dwSizeY * dwSizeX; + bool* pCutout = CutoutMask.GetBuffer(); + + while(pImage < pEnd) + { + if(*pImage == 0) + { + *pCutout = false; + bUseCutout = true; + } + else + { + *pCutout = true; + } + + ++pCutout; + ++pImage; + } + } + + m_hObject = m_pClientDE->CreateObject(&createStruct); + m_pClientDE->SetupPolyGrid(m_hObject, dwSizeX, dwSizeY, nFlags, CutoutMask.GetBuffer()); + + //update our sizes + m_dwNumPoliesX = dwSizeX; + m_dwNumPoliesY = dwSizeY; + + // Set alpha value... + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, m_fAlpha); + + if (m_sSurfaceSprite.size( )) + { + m_pClientDE->SetPolyGridTexture(m_hObject, m_sSurfaceSprite.c_str( )); + m_pClientDE->SetPolyGridTextureInfo(m_hObject, m_fXPan, m_fYPan, m_fXScaleMin, m_fYScaleMin, m_fBaseReflection, m_fVolumeIOR); + } + + if (m_sSurfaceEnvMap.size( )) + { + m_pClientDE->SetPolyGridEnvMap(m_hObject, m_sSurfaceEnvMap.c_str()); + } + + m_pClientDE->SetObjectPos(m_hObject, &vPos); + m_pClientDE->Physics()->SetObjectDims(m_hObject, &m_vDims, 0); + + SetPolyGridPalette(colorRamps, sizeof(colorRamps)/sizeof(colorRamps[0])); + + //handle initializing our appropriate updaters + switch(m_nSurfaceType) + { + case PGSURFACE_PLASMA_NORMAL: + case PGSURFACE_PLASMA_FOUR_RING: + PrecalculatePlasma(); + break; + case PGSURFACE_WAVE_PROP: + InitWaveProp(); + break; + default: + PrecalculatePlasma(); + break; + } + + // Set blend modes if applicable... + + uint32 dwFlags = 0; + + LTBOOL bFog = LTTRUE; + if (m_bAdditive) + { + dwFlags |= FLAG2_ADDITIVE; + bFog = LTFALSE; + } + else if (m_bMultiply) + { + dwFlags |= FLAG2_MULTIPLY; + bFog = LTFALSE; + } + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags2, dwFlags, dwFlags); + + //handle any startup frames that we want + HandleStartupFrames(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::Update +// +// PURPOSE: Update the grid +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyGridFX::Update() +{ + if(!m_hObject || !m_pClientDE || !m_hServerObject) + return LTFALSE; + + + if(m_bWantRemove) + return LTFALSE; + + + // Set the flags of the polygrid based on the the server object... + + uint32 dwServerFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_Flags, dwServerFlags); + + if (dwServerFlags & FLAG_VISIBLE) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + else // We're hidden, no need to update... + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + return LTTRUE; + } + + + // Don't update if not drawn :) + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_WASDRAWN) && !m_bAlwaysUpdate) + { + return LTTRUE; + } + + + // Update the position of the polygrid to reflect the position of the + // server object... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pLTClient->SetObjectPos(m_hObject, &vPos); + + + // If we're not using polygrids (or special fx are set to the lowest + // detail setting), don't update... + + if (m_bUseGlobalSettings) + { + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTTRUE; + + uint8 nVal = pSettings->SpecialFXSetting(); + LTBOOL bOn = pSettings->PolyGrids(); + + if (!bOn || nVal == RS_LOW) + { + return LTTRUE; + } + } + + //if we are paused we shouldn't bother updating + if(g_pGameClientShell->IsServerPaused()) + { + g_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, FLAG_PAUSED, FLAG_PAUSED); + return LTTRUE; + } + else + { + g_pLTClient->Common()->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_PAUSED); + } + + + // Update the plasma based on the type of plasma... + + switch (m_nSurfaceType) + { + case PGSURFACE_PLASMA_FOUR_RING : + UpdateFourRingPlasma(); + break; + + case PGSURFACE_PLASMA_NORMAL: + UpdatePlasma(); + break; + + case PGSURFACE_WAVE_PROP: + UpdateWaveProp(g_pGameClientShell->GetFrameTime()); + break; + + default : + //default surface... + UpdatePlasma(); + break; + } + + + if( m_sSurfaceSprite.size( )) + { + UpdateSurface(); + } + + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::OnServerMessage +// +// PURPOSE: Handles messages from the server +// +// ----------------------------------------------------------------------- // +LTBOOL CPolyGridFX::OnServerMessage(ILTMessage_Read *pMsg) +{ + //the only message we should be receiving from the server is one + //telling us which modifiers are activated, so read that bad boy in + m_nActiveModifiers = pMsg->Readuint8(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::HandleStartupFrames +// +// PURPOSE: runs through several iterations of updating specified in NumStartupFrames so that +// the water won't be completely calm when starting +// +// ----------------------------------------------------------------------- // +void CPolyGridFX::HandleStartupFrames() +{ + //if we aren't a wave prop though, we don't need to fake updates + if(m_nSurfaceType != PGSURFACE_WAVE_PROP) + return; + + //if we don't have a minimum frame rate, there is no point in doing tihs + if(m_fMinFrameRate < 0.01f) + return; + + //alright, run through as many updates as specified + for(uint32 nCurrUpdate = 0; nCurrUpdate < m_nNumStartupFrames; nCurrUpdate++) + { + //and update the surface based upon the minimum frame rate + UpdateWaveProp(1.0f / m_fMinFrameRate); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyGridFX::UpdateSurface +// +// PURPOSE: Update the polygrid's surface fx +// +// ----------------------------------------------------------------------- // + +void CPolyGridFX::UpdateSurface() +{ + if (!m_pClientDE || !m_sSurfaceSprite.size( )) + return; + + //don't bother updating if we are paused + if(g_pGameClientShell->IsServerPaused()) + return; + + LTFLOAT fXPan, fYPan, fXScale, fYScale, fBaseReflection, fVolumeIOR; + m_pClientDE->GetPolyGridTextureInfo(m_hObject, &fXPan, &fYPan, &fXScale, &fYScale, &fBaseReflection, &fVolumeIOR); + + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + // Scale in X direction... + + if (m_fXScaleDuration > 0.0f) + { + if (m_bScalingXUp) + { + fXScale += fDeltaTime * (m_fXScaleMax - m_fXScaleMin) / m_fXScaleDuration; + if (fXScale > m_fXScaleMax) + { + fXScale = m_fXScaleMax; + m_bScalingXUp = LTFALSE; + } + } + else + { + fXScale -= fDeltaTime * (m_fXScaleMax - m_fXScaleMin) / m_fXScaleDuration; + if (fXScale < m_fXScaleMin) + { + fXScale = m_fXScaleMin; + m_bScalingXUp = LTTRUE; + } + } + } + + // Scale in Y direction... + + if (m_fYScaleDuration > 0.0f) + { + if (m_bScalingYUp) + { + fYScale += fDeltaTime * (m_fYScaleMax - m_fYScaleMin) / m_fYScaleDuration; + if (fYScale > m_fYScaleMax) + { + fYScale = m_fYScaleMax; + m_bScalingYUp = LTFALSE; + } + } + else + { + fYScale -= fDeltaTime * (m_fYScaleMax - m_fYScaleMin) / m_fYScaleDuration; + if (fYScale < m_fYScaleMin) + { + fYScale = m_fYScaleMin; + m_bScalingYUp = LTTRUE; + } + } + } + + // Handle panning... + fXPan += m_fXPan * fDeltaTime; + fYPan += m_fYPan * fDeltaTime; + + m_pClientDE->SetPolyGridTextureInfo(m_hObject, fXPan, fYPan, fXScale, fYScale, fBaseReflection, fVolumeIOR); +} + +// ----------------------------------------------------------------------- // +// Loads up the dampen image and assigns it to a map that can be used to +// dampen the surface +// ----------------------------------------------------------------------- // + +void CPolyGridFX::LoadDampenImage(uint32 nPGWidth, uint32 nPGHeight) +{ + if (!m_sDampenImage.size( )) + { + return; + } + + //ok, now try and load the image + uint32 nWidth, nHeight; + uint8* pData; + + if(m_pClientDE->CreateHeightmapFromBitmap(m_sDampenImage.c_str( ), &nWidth, &nHeight, &pData) != LT_OK) + return; + + //alright, now we need to do some filtering to generate our final dampen map + m_DampenBuffer.Resize(nPGWidth, nPGHeight); + + //find out our dimensions with respect to the image + float fXSize = (float)nWidth / (float)nPGWidth; + float fYSize = (float)nHeight / (float)nPGHeight; + + float fSampleArea = fXSize * fYSize; + + //now run through for every sample in the dampen buffer + for(uint32 nY = 0; nY < nPGHeight; nY++) + { + for(uint32 nX = 0; nX < nPGWidth; nX++) + { + //ok, now we build up a rectangle and filter the image buffer through + //this rectangle to find the final value + float fXMin = nX * fXSize; + float fYMin = (nPGHeight - 1 - nY) * fYSize; + float fXMax = fXMin + fXSize; + float fYMax = fYMin + fYSize; + + //now we can find the extents to filter into this rectangle + uint32 nXMin = (uint32)fXMin; + uint32 nYMin = (uint32)fYMin; + uint32 nXMax = LTMIN((uint32)fXMax, nWidth - 1); + uint32 nYMax = LTMIN((uint32)fYMax, nHeight - 1); + + float fVal = 0.0f; + + for(uint32 nIY = nYMin; nIY <= nYMax; nIY++) + { + for(uint32 nIX = nXMin; nIX <= nXMax; nIX++) + { + //now we have a rectangle of width/height of one at this position, + //so we need to see how much intersects with the bounding rect + float fIXMin = LTMAX(fXMin, (float)nIX); + float fIYMin = LTMAX(fYMin, (float)nIY); + float fIXMax = LTMIN(fXMax, (float)nIX + 1.0f); + float fIYMax = LTMIN(fYMax, (float)nIY + 1.0f); + + //figure out how much of the rectangle is occupied by this + float fWeight = (fIXMax - fIXMin) * (fIYMax - fIYMin) / fSampleArea; + + //add our contribution + fVal += fWeight * pData[nIY * nWidth + nIX]; + } + } + + //save this value + m_DampenBuffer.Get(nX, nY) = (uint8)fVal; + } + } + + //free our heightmap + m_pClientDE->FreeHeightmap(pData); +} + + +// ----------------------------------------------------------------------- // +// Precalculates the lookup tables for plasma FX. +// ----------------------------------------------------------------------- // + +void CPolyGridFX::PrecalculatePlasma() +{ + uint32 width, height; + int halfWidth, halfHeight, x, y; + char *pData; + PGColor *pColorTable; + float scale, val, maxDistSqr, testDist, t; + int i; + + + // Create the (scaled) sin table. + if(!g_bSinTableInitted) + { + scale = (MATH_CIRCLE / 255.0f) * 3.0f; + for(i=0; i < 256; i++) + { + val = (float)i * scale; + g_SinTable[i] = (char)(sin(val) * 128.0f); + } + + g_bSinTableInitted = LTTRUE; + } + + + // Fill in the distance grid. + m_pClientDE->GetPolyGridInfo(m_hObject, &pData, &width, &height, &pColorTable); + + + m_DistanceGrid.Resize(width, height); + halfWidth = width >> 1; + halfHeight = height >> 1; + maxDistSqr = (float)(halfWidth*halfWidth + halfHeight*halfHeight); + for(y=0; y < (int)height; y++) + { + for(x=0; x < (int)width; x++) + { + testDist = (float)((x-halfWidth)*(x-halfWidth) + (y-halfHeight)*(y-halfHeight)); + t = testDist / maxDistSqr; + m_DistanceGrid[y*width+x] = (uint8)(t * 255.0f); + } + } +} + +// ----------------------------------------------------------------------- // +// Inits the buffers for the wave propagation +// ----------------------------------------------------------------------- // +void CPolyGridFX::InitWaveProp() +{ + //get the information about the polygrid + char* pPGData; + uint32 nPGWidth, nPGHeight; + PGColor* pPGColorTable; + m_pClientDE->GetPolyGridInfo(m_hObject, &pPGData, &nPGWidth, &nPGHeight, &pPGColorTable); + + //alright, now we need to allocate our 2 buffers, and clear them out + m_WaveBuffer[0].Resize(nPGWidth, nPGHeight); + + //now clear it out + memset(m_WaveBuffer[0].GetBuffer(), 0, sizeof(float) * nPGWidth * nPGHeight); + + //copy it to the second one so they are both initialized + m_WaveBuffer[1] = m_WaveBuffer[0]; + + m_nCurrWaveBuffer = 0; + m_fPrevFrameTime = 1.0f; +} + +void CPolyGridFX::CreateModelWaves(uint32 nKernalSize, uint32 nBuffer, float fFrameTime) +{ + //maximum number of objects to find intersecting the grid + static const uint32 knMaxObjToFind = 32; + + //find the radius of our polygrid + float fPolyRad = m_vDims.Mag(); + + //amount to displace for a model + float fDisplaceAmount = m_fModelDisplace * fFrameTime; + + //just bail if the models aren't going to displace at all + if(fDisplaceAmount < 0.01f) + return; + + HLOCALOBJ hFound[knMaxObjToFind]; + uint32 nFound = 0; + + LTVector vPGPos; + m_pClientDE->GetObjectPos(m_hObject, &vPGPos); + + LTVector vPGDims; + m_pClientDE->Physics()->GetObjectDims(m_hObject, &vPGDims); + + //now run through all the characters and see which ones intersect + CSpecialFXList* pCharacterList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_CHARACTER_ID); + + LTVector vPGMin = vPGPos - vPGDims; + LTVector vPGMax = vPGPos + vPGDims; + + for(uint32 nCurrChar = 0; nCurrChar < (uint32)pCharacterList->GetNumItems(); nCurrChar++) + { + if(!(*pCharacterList)[nCurrChar]) + continue; + + //determine the HOBJECT of this character + HOBJECT hChar = (*pCharacterList)[nCurrChar]->GetServerObj(); + + if(!hChar) + continue; + + //get the object position and dimensions + LTVector vCharPos, vCharDims; + m_pClientDE->GetObjectPos(hChar, &vCharPos); + m_pClientDE->Physics()->GetObjectDims(hChar, &vCharDims); + + LTVector vCharMin = vCharPos - vCharDims; + LTVector vCharMax = vCharPos + vCharDims; + + //if it overlaps, add it to our list + if( (vPGMin.x < vCharMax.x) && (vPGMax.x > vCharMin.x) && + (vPGMin.y < vCharMax.y) && (vPGMax.y > vCharMin.y) && + (vPGMin.z < vCharMax.z) && (vPGMax.z > vCharMin.z)) + { + //they intersect, add it to the list + hFound[nFound] = hChar; + nFound++; + + //see if we need to stop looking for objects + if(nFound >= knMaxObjToFind) + break; + } + } + + //bail if none + if(nFound == 0) + { + //make sure all objects are cleared from the list + for(uint32 nCurrRemove = 0; nCurrRemove < MAX_MODELS_TO_TRACK; nCurrRemove++) + { + m_hTrackedModels[nCurrRemove] = NULL; + } + return; + } + + //precalc info + + //find the orienation of the polygrid + LTRotation rRot; + m_pClientDE->GetObjectRotation(m_hObject, &rRot); + + //now get the basis vectors of the object space + LTVector vRight = rRot.Right(); + LTVector vForward = rRot.Forward(); + + //make sure the polygrid is valid + if((m_dwNumPoliesX == 0) || (m_dwNumPoliesY == 0)) + return; + + //find the dimensions of the polygons of the polygrid + float fXPolySize = (m_vDims.x * 2.0f) / (float)m_dwNumPoliesX; + float fYPolySize = (m_vDims.z * 2.0f) / (float)m_dwNumPoliesY; + + //bail if not a valid size + if((fXPolySize < 0.01f) || (fYPolySize < 0.01f)) + return; + + //flag indicating which tracked models should be kept around + bool bTouchedTrackedModels[MAX_MODELS_TO_TRACK]; + + for(uint32 nCurrTrack = 0; nCurrTrack < MAX_MODELS_TO_TRACK; nCurrTrack++) + { + bTouchedTrackedModels[nCurrTrack] = false; + } + + //ok, now we run through all the objects we found and update our grid accordingly + for(uint32 nCurrObj = 0; nCurrObj < nFound; nCurrObj++) + { + //the object we are checking + HLOCALOBJ hObj = hFound[nCurrObj]; + + //now lets see if this is a tracked model, if it is, we know where it was last + //update and we can create a wave line, otherwise we have no clue, and should + //track it for the next update + bool bTracked = false; + LTVector vPrevPos; + + LTVector vPos; + m_pClientDE->GetObjectPos(hObj, &vPos); + + //if we aren't currently tracking it, this is where to put it + uint32 nInsertPos = MAX_MODELS_TO_TRACK - 1; + + for(uint32 nCurrModel = 0; nCurrModel < MAX_MODELS_TO_TRACK; nCurrModel++) + { + if(m_hTrackedModels[nCurrModel] == hObj) + { + //we found a match, we need to save this value, move + //it to the front of the list, and update it + vPrevPos = m_vTrackedModelsPos[nCurrModel]; + + //move all the items back so that this will be in the first slot + for(uint32 nCurrMove = nCurrModel; nCurrMove > 0; nCurrMove--) + { + m_hTrackedModels[nCurrMove] = m_hTrackedModels[nCurrMove - 1]; + m_vTrackedModelsPos[nCurrMove] = m_vTrackedModelsPos[nCurrMove - 1]; + bTouchedTrackedModels[nCurrMove] = bTouchedTrackedModels[nCurrMove - 1]; + } + + //update the first element + m_hTrackedModels[0] = hObj; + m_vTrackedModelsPos[0] = vPos; + bTouchedTrackedModels[0] = true; + + //all done + bTracked = true; + break; + } + + //also bail if one of the slots is NULL + if(m_hTrackedModels[nCurrModel] == NULL) + { + nInsertPos = nCurrModel; + } + } + + //see if this was tracked or not + if(!bTracked) + { + //was not! We need to add it to the list + m_hTrackedModels[nInsertPos] = hObj; + m_vTrackedModelsPos[nInsertPos] = vPos; + bTouchedTrackedModels[nInsertPos] = true; + + continue; + } + + //make sure that the model is actually moving + if((vPrevPos - vPos).MagSqr() < 0.5f) + continue; + + //ok, we have a model that intersects our polygrid, let us create some waves + + //find out the endpoints of the line that will displace + float fX1 = vRight.Dot(vPrevPos - vPGPos) + m_vDims.x; + float fY1 = vForward.Dot(vPrevPos - vPGPos) + m_vDims.z; + float fX2 = vRight.Dot(vPos - vPGPos) + m_vDims.x; + float fY2 = vForward.Dot(vPos - vPGPos) + m_vDims.z; + + //now find the greater delta in polygon units + float fXDelta = (float)fabs(fX1 - fX2) / fXPolySize; + float fYDelta = (float)fabs(fY1 - fY2) / fYPolySize; + + //increments for the X and Y directions + float fXInc, fYInc; + float fCurrX, fCurrY; + + //the variable to use for threshold comparisons + float *pfCompare; + + //the threshold + float fThreshold; + + //now scan convert accordingly + if(fYDelta > fXDelta) + { + //make sure Y1 is smaller + if(fY2 < fY1) + { + Swap(fY1, fY2); + Swap(fX1, fX2); + } + + fYInc = fYPolySize; + fXInc = (fX2 - fX1) / (fY2 - fY1) * fYInc; + + fThreshold = fY2 / fYPolySize; + pfCompare = &fCurrY; + } + else + { + //make sure Y1 is smaller + if(fX2 < fX1) + { + Swap(fY1, fY2); + Swap(fX1, fX2); + } + fXInc = fXPolySize; + fYInc = (fY2 - fY1) / (fX2 - fX1) * fXInc; + + fThreshold = fX2 / fXPolySize; + pfCompare = &fCurrX; + } + + //start out at the first point + fCurrY = fY1 / fYPolySize; + fCurrX = fX1 / fXPolySize; + fXInc /= fXPolySize; + fYInc /= fXPolySize; + + float fXFrac; + float fYFrac; + + uint32 nPrevBuffer = (nBuffer + 1) % 2; + + //we need to scale the displacement amount by the speed at which we are moving + fDisplaceAmount *= (vPrevPos - vPos).Mag() / (fFrameTime * g_cvarPGDisplaceMoveScale.GetFloat()); + + //now scan convert! + while(*pfCompare < fThreshold) + { + //convert this to an integer position + int32 nXPos = (int32)(fCurrX); + int32 nYPos = (int32)(fCurrY); + + //handle clipping + if((nXPos >= (int32)nKernalSize) && (nYPos >= (int32)nKernalSize) && + (nXPos < (int32)m_dwNumPoliesX - (int32)nKernalSize - 1) && + (nYPos < (int32)m_dwNumPoliesY - (int32)nKernalSize - 1)) + { + fXFrac = fCurrX - nXPos; + fYFrac = fCurrY - nYPos; + + m_WaveBuffer[nBuffer].Get(nXPos, nYPos) += fDisplaceAmount * (1.0f - fXFrac) * (1.0f - fYFrac); + m_WaveBuffer[nBuffer].Get(nXPos + 1, nYPos) += fDisplaceAmount * fXFrac * (1.0f - fYFrac); + m_WaveBuffer[nBuffer].Get(nXPos, nYPos + 1) += fDisplaceAmount * (1.0f - fXFrac) * fYFrac; + m_WaveBuffer[nBuffer].Get(nXPos + 1, nYPos + 1) += fDisplaceAmount * fXFrac * fYFrac; + + m_WaveBuffer[nPrevBuffer].Get(nXPos, nYPos) += fDisplaceAmount * (1.0f - fXFrac) * (1.0f - fYFrac); + m_WaveBuffer[nPrevBuffer].Get(nXPos + 1, nYPos) += fDisplaceAmount * fXFrac * (1.0f - fYFrac); + m_WaveBuffer[nPrevBuffer].Get(nXPos, nYPos + 1) += fDisplaceAmount * (1.0f - fXFrac) * fYFrac; + m_WaveBuffer[nPrevBuffer].Get(nXPos + 1, nYPos + 1) += fDisplaceAmount * fXFrac * fYFrac; + } + + //move along + fCurrX += fXInc; + fCurrY += fYInc; + } + } + + //now that we are done, clear out any models that were not touched + for(uint32 nCurrRemove = 0; nCurrRemove < MAX_MODELS_TO_TRACK; nCurrRemove++) + { + if(!bTouchedTrackedModels[nCurrRemove]) + m_hTrackedModels[nCurrRemove] = NULL; + } +} + +static inline void CalcSample(float* pCurr, const float* pPrev, float fVelocCoeff, float fAccelCoeff, float fDampen, uint32 nPGWidth) +{ + //find all the forces bineg applied to this point. The layout is to + //be as cache friendly as possible + float fResult = *(pPrev - nPGWidth - 1) + + *(pPrev - nPGWidth) + + *(pPrev - nPGWidth + 1) + + *(pPrev - 1) - + *pPrev * 8.0f + + *(pPrev + 1) + + *(pPrev + nPGWidth - 1) + + *(pPrev + nPGWidth) + + *(pPrev + nPGWidth + 1); + + + //now find the new position, and apply dampening + *pCurr = (*pPrev + (*pPrev - *pCurr) * fVelocCoeff + fResult * fAccelCoeff) * fDampen; + + //clamp to be in range + if(*pCurr < -127.0f) + *pCurr = 127.0f; + else if(*pCurr > 127.0f) + *pCurr = 127.0f; +} + +//outputs a standard height to the buffer and moves both pointers forward +static inline void OutputHeight(char*& pOut, const float*& pCurr) +{ + *pOut = (char)*pCurr; + pOut++; + pCurr++; +} + +//outputs a dampened standard height to the buffer and moves all pointers forward +static inline void OutputDampenedHeight(char*& pOut, const float*& pCurr, const uint8*& pDampen) +{ + *pOut = (char)(((int32)((*pCurr) * (*pDampen))) >> 8); + pOut++; + pCurr++; + pDampen++; +} + +void CPolyGridFX::UpdateWaveProp(float fFrameTime) +{ + //constant on how large our kernal is, extending beyond the source pixel on a side + static const uint32 knKernalSize = 1; + + static const float kfInvWaterMass = 0.05f; + + //adjust for user scale + fFrameTime *= m_fTimeScale; + + //clamp the frame time to prevent explosions + if(m_fMinFrameRate > 0.01f) + { + float fInvMinFrameRate = 1.0f / m_fMinFrameRate; + if(g_cvarMinPGFrameRate.GetFloat() > 0.1f) + { + //we want to simulate the slowest possible time (to allow artists a chance to see if it + //will blow up) + fFrameTime = fInvMinFrameRate; + } + + if(fFrameTime > fInvMinFrameRate) + fFrameTime = fInvMinFrameRate; + } + + //get the information about the polygrid + char* pPGData; + uint32 nPGWidth, nPGHeight; + PGColor* pPGColorTable; + m_pClientDE->GetPolyGridInfo(m_hObject, &pPGData, &nPGWidth, &nPGHeight, &pPGColorTable); + + //figure out indices for our buffers + uint32 nCurrBufferIndex = m_nCurrWaveBuffer; + uint32 nPrevBufferIndex = (m_nCurrWaveBuffer + 1) % 2; + + //check and see if any models are moving through the water + CreateModelWaves(knKernalSize, nPrevBufferIndex, fFrameTime); + + + //run through our active modifiers + for(uint32 nCurrMod = 0; nCurrMod < PG_MAX_MODIFIERS; nCurrMod++) + { + //see if this modifier is active + if(!(m_nActiveModifiers & (1 << nCurrMod))) + continue; + + //find the width and heights + uint32 nWidth = m_nXMax[nCurrMod] - m_nXMin[nCurrMod]; + uint32 nHeight = m_nYMax[nCurrMod] - m_nYMin[nCurrMod]; + + //bail if invalid + if((nWidth == 0) || (nHeight == 0) || (m_fAccelAmount[nCurrMod] == 0.0f)) + continue; + + //instead of scaling the impact amount by the frame time (which produces a lot of noise + //due to tons of little punches), we scale the number of samples, and scale the last sample + //to be of the appropriate size which reduces noise considerably + float fModifierEnergy = m_nNumAccelPoints[nCurrMod] * fFrameTime; + + //this modifier is active, so let us offset the desired number of points + while(fModifierEnergy > 0.01f) + { + //figure out how much we are contributing + float fEnergyToUse = LTMIN(fModifierEnergy, m_fPrevImpactAmountLeft[nCurrMod]); + + fModifierEnergy -= fEnergyToUse; + m_fPrevImpactAmountLeft[nCurrMod] -= fEnergyToUse; + + float fAccelAmount = m_fAccelAmount[nCurrMod] * fEnergyToUse; + + uint32 nX = m_nPrevImpactX[nCurrMod]; + uint32 nY = m_nPrevImpactY[nCurrMod]; + + m_WaveBuffer[nPrevBufferIndex].Get(nX, nY) -= fAccelAmount; + m_WaveBuffer[nCurrBufferIndex].Get(nX, nY) -= fAccelAmount; + + //see if we need to generate a new position + if(m_fPrevImpactAmountLeft[nCurrMod] < 0.01f) + { + m_fPrevImpactAmountLeft[nCurrMod] = 1.0f; + m_nPrevImpactX[nCurrMod] = (rand() % nWidth) + m_nXMin[nCurrMod]; + m_nPrevImpactY[nCurrMod] = (rand() % nHeight) + m_nYMin[nCurrMod]; + } + } + } + + //get our primary buffer + float* pCurr = m_WaveBuffer[nCurrBufferIndex].GetBuffer(); + + //now get this buffer which for the duration of this function is still our + //secondary buffer + float* pPrev = m_WaveBuffer[nPrevBufferIndex].GetBuffer() + knKernalSize * (nPGWidth + 1); + + //need to make sure that the dampening scale is not frame rate dependant, so + //that for every second, that amount of energy will be left in the system + float fDampen = (float)pow(m_fDampenScale, fFrameTime); + + //sanity check... + assert(fDampen <= 1.0f); + + //precalculate some variables + float fSpringForce = (m_fSpringCoeff * kfInvWaterMass); + float fAccelCoeff = fSpringForce * fFrameTime * fFrameTime; + float fVelocCoeff = fFrameTime / m_fPrevFrameTime; + + char* pOut = pPGData; + uint32 nX, nY; + + if(m_DampenBuffer.GetWidth() > 0) + { + //update our buffer, dampened + uint8* pDampen = m_DampenBuffer.GetBuffer(); + + for(nY = 0; nY < nPGWidth * knKernalSize; nY++) + { + OutputDampenedHeight(pOut, pCurr, pDampen); + } + for(nY = knKernalSize; nY < nPGHeight - knKernalSize; nY++) + { + for(nX = 0; nX < knKernalSize; nX++) + { + OutputDampenedHeight(pOut, pCurr, pDampen); + } + for(; nX < nPGWidth - knKernalSize; nX++) + { + CalcSample(pCurr, pPrev, fVelocCoeff, fAccelCoeff, fDampen, nPGWidth); + OutputDampenedHeight(pOut, pCurr, pDampen); + + //update our pointers + pPrev++; + } + for(nX = 0; nX < knKernalSize; nX++) + { + OutputDampenedHeight(pOut, pCurr, pDampen); + } + + //now update our current pointers to skip over the kernal buffers on either side + pPrev += knKernalSize * 2; + } + for(nY = 0; nY < nPGWidth * knKernalSize; nY++) + { + OutputDampenedHeight(pOut, pCurr, pDampen); + } + } + else + { + //update our buffer undampened + for(nY = 0; nY < nPGWidth * knKernalSize; nY++) + { + OutputHeight(pOut, pCurr); + } + for(nY = knKernalSize; nY < nPGHeight - knKernalSize; nY++) + { + for(nX = 0; nX < knKernalSize; nX++) + { + OutputHeight(pOut, pCurr); + } + for(; nX < nPGWidth - knKernalSize; nX++) + { + CalcSample(pCurr, pPrev, fVelocCoeff, fAccelCoeff, fDampen, nPGWidth); + OutputHeight(pOut, pCurr); + + //update our pointers + pPrev++; + } + for(nX = 0; nX < knKernalSize; nX++) + { + OutputHeight(pOut, pCurr); + } + + //now update our current pointers to skip over the kernal buffers on either side + pPrev += knKernalSize * 2; + } + for(nY = 0; nY < nPGWidth * knKernalSize; nY++) + { + OutputHeight(pOut, pCurr); + } + } + + //switch our buffer to be the other one + m_nCurrWaveBuffer = nPrevBufferIndex; + + //save the frame time + m_fPrevFrameTime = fFrameTime; +} + + +// ----------------------------------------------------------------------- // +// Inits the palette for the grid. Pass in a ramp list for it to interpolate thru. +// ----------------------------------------------------------------------- // + +void CPolyGridFX::SetPolyGridPalette(ColorRamp *pRamps, int nRamps) +{ + float t; + uint32 width, height; + char *pData; + PGColor *pColorTable, color1, color2; + int ramp, i, index1, index2; + + // Randomize the poly grid values. + m_pClientDE->GetPolyGridInfo(m_hObject, &pData, &width, &height, &pColorTable); + + // Make the color table go from white to black. + for(ramp=0; ramp < nRamps-1; ramp++) + { + index1 = pRamps[ramp].m_Index; + index2 = pRamps[ramp+1].m_Index; + VEC_COPY(color1, pRamps[ramp].m_Color); + VEC_COPY(color2, pRamps[ramp+1].m_Color); + + for(i=index1; i < index2; i++) + { + t = (float)(i - index1) / (index2 - index1); + VEC_LERP(pColorTable[i], color1, color2, t); + pColorTable[i].a = 255.0f; + } + } +} + + +// ----------------------------------------------------------------------- // +// Updates the plasma effect. +// ----------------------------------------------------------------------- // + +void CPolyGridFX::UpdatePlasma() +{ + uint32 width, height; + char *pData, *pCur, *pEnd; + PGColor *pColorTable; + uint8 count, *pDistanceGrid; + + m_fCount += 50.0f * g_pGameClientShell->GetFrameTime(); + count = (uint8)m_fCount; + + // Randomize the poly grid values. + m_pClientDE->GetPolyGridInfo(m_hObject, &pData, &width, &height, &pColorTable); + + + //see if we have a dampening buffer, if so we want to do the slightly slower route + //and apply the dampening factors + if(m_DampenBuffer.GetWidth() > 0) + { + uint8* pCurrDampen = m_DampenBuffer.GetBuffer(); + pDistanceGrid = m_DistanceGrid.GetBuffer(); + pCur = pData; + pEnd = pCur + width * height; + + while(pCur < pEnd) + { + *pCur = (char)((*pCurrDampen * (int32)g_SinTable[(uint8)((*pDistanceGrid) + count)]) >> 8); + ++pDistanceGrid; + ++pCurrDampen; + ++pCur; + } + } + else + { + //no dampening, the standard route + pDistanceGrid = m_DistanceGrid.GetBuffer(); + pCur = pData; + pEnd = pCur + width * height; + + while(pCur < pEnd) + { + *pCur = g_SinTable[(uint8)((*pDistanceGrid) + count)]; + ++pDistanceGrid; + ++pCur; + } + } +} + +float g_Counts[4] = {0.0f, 1.0f, 4.0f, 3.0f}; +long g_Offsets[4][2] = +{ + 6, 10, + 13, 3, + 17, 1, + 31, 22 +}; + +// ----------------------------------------------------------------------- // +// Updates the plasma effect. +// ----------------------------------------------------------------------- // + +void CPolyGridFX::UpdateFourRingPlasma() +{ + + uint32 dwWidth, dwHeight; + long width, height, x, y, xMask, yMask, yOffsets[4]; + char *pData, *pCur; + PGColor *pColorTable; + uint8 val[4], counts[4], *pDistanceGrid; + long i; + + for(i=0; i < 4; i++) + { + g_Counts[i] += ((float)m_nRingRate[i]) * g_pGameClientShell->GetFrameTime(); + counts[i] = (uint8)g_Counts[i]; + } + + m_pClientDE->GetPolyGridInfo(m_hObject, &pData, &dwWidth, &dwHeight, &pColorTable); + width = (long)dwWidth; + height = (long)dwHeight; + + xMask = width - 1; + yMask = height - 1; + + //see if we have a dampening buffer, if so we want to do the slightly slower route + //and apply the dampening factors + if(m_DampenBuffer.GetWidth() > 0) + { + uint8* pCurrDampen = m_DampenBuffer.GetBuffer(); + + for(y=0; y < height; y++) + { + pCur = pData + (y*width); + pDistanceGrid = m_DistanceGrid.GetRow(0); + + yOffsets[0] = ((y+g_Offsets[0][1]) & yMask)*width; + yOffsets[1] = ((y+g_Offsets[1][1]) & yMask)*width; + yOffsets[2] = ((y+g_Offsets[2][1]) & yMask)*width; + yOffsets[3] = ((y+g_Offsets[3][1]) & yMask)*width; + + x = width; + while(x--) + { + val[0] = pDistanceGrid[yOffsets[0] + ((x+g_Offsets[0][0]) & xMask)]; + val[1] = pDistanceGrid[yOffsets[1] + ((x+g_Offsets[1][0]) & xMask)]; + val[2] = pDistanceGrid[yOffsets[2] + ((x+g_Offsets[2][0]) & xMask)]; + val[3] = pDistanceGrid[yOffsets[3] + ((x+g_Offsets[3][0]) & xMask)]; + + *pCur = (char)((*pCurrDampen * + (( (int32) g_SinTable[(uint8)(val[0] + counts[0])] + + g_SinTable[(uint8)(val[1] + counts[1])] + + g_SinTable[(uint8)(val[2] + counts[2])] + + g_SinTable[(uint8)(val[3] + counts[3])] + ) >> 2)) >> 8); + ++pCur; + ++pCurrDampen; + } + } + } + else + { + //no dampening, do the standard route + for(y=0; y < height; y++) + { + pCur = pData + (y*width); + pDistanceGrid = m_DistanceGrid.GetRow(0); + + yOffsets[0] = ((y+g_Offsets[0][1]) & yMask)*width; + yOffsets[1] = ((y+g_Offsets[1][1]) & yMask)*width; + yOffsets[2] = ((y+g_Offsets[2][1]) & yMask)*width; + yOffsets[3] = ((y+g_Offsets[3][1]) & yMask)*width; + + x = width; + while(x--) + { + val[0] = pDistanceGrid[yOffsets[0] + ((x+g_Offsets[0][0]) & xMask)]; + val[1] = pDistanceGrid[yOffsets[1] + ((x+g_Offsets[1][0]) & xMask)]; + val[2] = pDistanceGrid[yOffsets[2] + ((x+g_Offsets[2][0]) & xMask)]; + val[3] = pDistanceGrid[yOffsets[3] + ((x+g_Offsets[3][0]) & xMask)]; + + *pCur = (char)(((int32) g_SinTable[(uint8)(val[0] + counts[0])] + + g_SinTable[(uint8)(val[1] + counts[1])] + + g_SinTable[(uint8)(val[2] + counts[2])] + + g_SinTable[(uint8)(val[3] + counts[3])] + ) >> 2); + ++pCur; + } + } + } +} + +//Given a point and a direction to look in, this function will find out where it intersects +//the polygrid, and determine the displacement from the polygrid at that point. It will +//return false if it doesn't intersect. This assumes an axis aligned polygrid. +bool CPolyGridFX::GetOrientedIntersectionHeight(const LTVector& vPos, const LTVector& vUnitDir, float& fDisplacement, LTVector& vIntersection) +{ + //Just assume an axis aligned polygrid, and find the intersection point + if(fabs(vUnitDir.y) < 0.01f) + { + //we are parallel to the plane + return false; + } + + //get the position of the polygrid so we know the plane distance + LTVector vPGPos; + g_pLTClient->GetObjectPos(m_hObject, &vPGPos); + + float fT = (vPGPos.y - vPos.y) / vUnitDir.y; + + vIntersection = vPos + vUnitDir * fT; + + //find the unit displacements along the polygrid axis + float fX = ((vIntersection.x - vPGPos.x) + m_vDims.x) / (m_vDims.x * 2.0f); + float fZ = ((vIntersection.z - vPGPos.z) + m_vDims.z) / (m_vDims.z * 2.0f); + + //determine the actual grid cels + int32 nXGrid = (int32)(fX * m_dwNumPoliesX); + int32 nZGrid = (int32)(fZ * m_dwNumPoliesY); + + //now determine if the point is outside of the box + if( (nXGrid < 0) || (nXGrid >= (int32)m_dwNumPoliesX) || (nZGrid < 0) || (nZGrid >= (int32)m_dwNumPoliesY)) + { + //outside of the box + return false; + } + + //now just grab our interpolants + float fXRemainder = fX * m_dwNumPoliesX - (float)nXGrid; + float fZRemainder = fZ * m_dwNumPoliesY - (float)nZGrid; + + //grab our polygrid height data (we can't use the wave tables in order to support other + //wave modes) + char* pHeights = LTNULL; + uint32 dwWidth, dwHeight; + PGColor *pColor = LTNULL; + + if( LT_OK != g_pLTClient->GetPolyGridInfo(m_hObject, &pHeights, &dwWidth, &dwHeight, &pColor) || !pHeights ) + { + return false; + } + + //find our sample points + float fUL = (float)pHeights[nZGrid * m_dwNumPoliesX + nXGrid]; + float fUR = (float)pHeights[nZGrid * m_dwNumPoliesX + nXGrid + 1]; + float fLL = (float)pHeights[(nZGrid + 1) * m_dwNumPoliesX + nXGrid]; + float fLR = (float)pHeights[(nZGrid + 1) * m_dwNumPoliesX + nXGrid + 1]; + + //and now interpolate + float fLeft = fUL * (1.0f - fZRemainder) + fLL * fZRemainder; + float fRight = fUR * (1.0f - fZRemainder) + fLR * fZRemainder; + + //and the final value + fDisplacement = fLeft * (1.0f - fXRemainder) + fRight; + + //scale the displacement to be along the dims + fDisplacement *= m_vDims.y / 127.0f; + + //success + return true; +} diff --git a/Jack/ClientShellDLL/PolyGridFX.h b/Jack/ClientShellDLL/PolyGridFX.h new file mode 100644 index 00000000..36f5a88c --- /dev/null +++ b/Jack/ClientShellDLL/PolyGridFX.h @@ -0,0 +1,334 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : PolyGridFX.h +// +// PURPOSE : Polygrid special fx class - Definition +// +// CREATED : 10/13/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __POLY_GRID_FX_H__ +#define __POLY_GRID_FX_H__ + +#include "SpecialFX.h" +#include "PolyGridBuffer.h" + +#define PGSURFACE_PLASMA_NORMAL 0 +#define PGSURFACE_PLASMA_FOUR_RING 1 +#define PGSURFACE_WAVE_PROP 2 + +#define PG_MAX_MODIFIERS 4 + +// These are used for SetPolyGridPalette. +struct ColorRamp +{ + ColorRamp(const LTVector &color, int index) + { + m_Color = color; + m_Index = index; + } + + LTVector m_Color; + int m_Index; +}; + + +struct PGCREATESTRUCT : public SFXCREATESTRUCT +{ + PGCREATESTRUCT(); + + LTVector vDims; + LTVector vColor1; + LTVector vColor2; + LTFLOAT fXScaleMin; + LTFLOAT fXScaleMax; + LTFLOAT fYScaleMin; + LTFLOAT fYScaleMax; + LTFLOAT fXScaleDuration; + LTFLOAT fYScaleDuration; + LTFLOAT fXPan; + LTFLOAT fYPan; + LTFLOAT fBaseReflection; + LTFLOAT fVolumeIOR; + std::string sSurfaceSprite; + std::string sSurfaceEnvMap; + LTFLOAT fAlpha; + uint32 dwNumPoliesX; + uint32 dwNumPoliesY; + uint32 nNumStartupFrames; + uint8 nPlasmaType; + uint8 nRingRate[4]; + LTBOOL bAdditive; + LTBOOL bMultiply; + LTBOOL bFresnel; + LTBOOL bBackfaceCull; + LTBOOL bRenderEarly; + LTBOOL bNormalMapSprite; + std::string sDampenImage; + float fDampenScale; + float fTimeScale; + float fSpringCoeff; + float fModelDisplace; + float fMinFrameRate; + uint8 nActiveModifiers; + uint16 nXMin[PG_MAX_MODIFIERS]; + uint16 nYMin[PG_MAX_MODIFIERS]; + uint16 nXMax[PG_MAX_MODIFIERS]; + uint16 nYMax[PG_MAX_MODIFIERS]; + uint16 nNumAccelPoints[PG_MAX_MODIFIERS]; + float fAccelAmount[PG_MAX_MODIFIERS]; + HOBJECT hVolumeBrush; +}; + +inline PGCREATESTRUCT::PGCREATESTRUCT() +{ + vDims.Init(); + vColor1.Init(); + vColor2.Init(); + fXScaleMin = 0.0f; + fXScaleMax = 0.0f; + fYScaleMin = 0.0f; + fYScaleMax = 0.0f; + fXScaleDuration = 0.0f; + fYScaleDuration = 0.0f; + fXPan = 0.0f; + fYPan = 0.0f; + fBaseReflection = 0.5f; + fVolumeIOR = 1.33f; + fAlpha = 0.0f; + dwNumPoliesX = 0; + dwNumPoliesY = 0; + nNumStartupFrames = 0; + nPlasmaType = 0; + bAdditive = LTFALSE; + bMultiply = LTFALSE; + bFresnel = LTTRUE; + bBackfaceCull = LTTRUE; + bRenderEarly = LTFALSE; + bNormalMapSprite = LTFALSE; + + for (int i=0; i < 4; i++) + { + nRingRate[i] = 0; + } + + fDampenScale = 0.99f; + fTimeScale = 1.0f; + fSpringCoeff = 40.0f; + fModelDisplace = 10.0f; + fMinFrameRate = 10.0f; + nActiveModifiers = 0; + + for(uint32 nCurrMod = 0; nCurrMod < PG_MAX_MODIFIERS; nCurrMod++) + { + nXMin[nCurrMod] = 0; + nYMin[nCurrMod] = 0; + nXMax[nCurrMod] = 0; + nYMax[nCurrMod] = 0; + nNumAccelPoints[nCurrMod] = 0; + fAccelAmount[nCurrMod] = 0.0f; + } + + hVolumeBrush = LTNULL; +} + + +class CPolyGridFX : public CSpecialFX +{ + public : + + CPolyGridFX() : CSpecialFX() + { + VEC_INIT(m_vDims); + VEC_SET(m_vColor1, 255.0f, 255.0f, 255.0f); + VEC_SET(m_vColor2, 255.0f, 255.0f, 255.0f); + m_fXScaleMin = 15.0f; + m_fXScaleMax = 25.0f; + m_fYScaleMin = 15.0f; + m_fYScaleMax = 25.0f; + m_fXScaleDuration = 10.0f; + m_fYScaleDuration = 10.0f; + m_fXPan = 0.0f; + m_fYPan = 0.0f; + m_fBaseReflection = 0.5f; + m_fVolumeIOR = 1.33f; + m_fAlpha = 0.7f; + + m_bAlwaysUpdate = LTFALSE; + m_fCount = 0.0f; + + m_bScalingXUp = LTTRUE; + m_bScalingYUp = LTTRUE; + + m_dwNumPoliesX = 16; + m_dwNumPoliesY = 16; + + m_nNumStartupFrames = 0; + + m_nSurfaceType = PGSURFACE_PLASMA_FOUR_RING; + m_nRingRate[0] = 50; + m_nRingRate[1] = 10; + m_nRingRate[2] = 30; + m_nRingRate[3] = 20; + + m_bUseGlobalSettings = LTTRUE; + + m_bAdditive = LTFALSE; + m_bMultiply = LTFALSE; + m_bFresnel = LTTRUE; + m_bBackfaceCull = LTTRUE; + m_bRenderEarly = LTFALSE; + m_bNormalMapSprite = LTFALSE; + + m_nCurrWaveBuffer = 0; + + m_fDampenScale = 0.99f; + m_fTimeScale = 1.0f; + m_fSpringCoeff = 40.0f; + m_fModelDisplace = 10.0f; + m_fMinFrameRate = 10.0f; + m_nActiveModifiers = 0; + + for(uint32 nCurrMod = 0; nCurrMod < PG_MAX_MODIFIERS; nCurrMod++) + { + m_nXMin[nCurrMod] = 0; + m_nYMin[nCurrMod] = 0; + m_nXMax[nCurrMod] = 0; + m_nYMax[nCurrMod] = 0; + m_nNumAccelPoints[nCurrMod] = 0; + m_fAccelAmount[nCurrMod] = 0.0f; + m_fPrevImpactAmountLeft[nCurrMod] = 0.0f; + m_nPrevImpactX[nCurrMod] = 0; + m_nPrevImpactY[nCurrMod] = 0; + } + + m_hVolumeBrush = LTNULL; + } + + ~CPolyGridFX() + { + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_POLYGRID_ID; } + + //Given a point and a direction to look in, this function will find out where it intersects + //the polygrid, and determine the displacement from the polygrid at that point. It will + //return false if it doesn't intersect. This assumes an axis aligned polygrid. + bool GetOrientedIntersectionHeight(const LTVector& vPos, const LTVector& vUnitDir, float& fDisplacement, LTVector& vIntersection); + + HOBJECT GetVolumeBrush() const { return m_hVolumeBrush; } + + protected: + + void LoadDampenImage(uint32 nWidth, uint32 nHeight); + void SetPolyGridPalette(ColorRamp *pRamps, int nRamps); + void UpdateSurface(); + + //different updaters for the different surface styles + void PrecalculatePlasma(); + void UpdatePlasma(); + void UpdateFourRingPlasma(); + + LTBOOL OnServerMessage(ILTMessage_Read *pMsg); + + //wave propagation methods + void InitWaveProp(); + void UpdateWaveProp(float fFrameTime); + void CreateModelWaves(uint32 nKernalSize, uint32 nBuffer, float fFrameTime); + + //runs through several iterations of updating specified in NumStartupFrames so that + //the water won't be completely calm when starting + void HandleStartupFrames(); + + private : + + // Plasma stuff. + CPolyGridBuffer m_DistanceGrid; + float m_fCount; + LTBOOL m_bScalingXUp; + LTBOOL m_bScalingYUp; + + // Dampening image + CPolyGridBuffer m_DampenBuffer; + + //Wave propagation buffers + CPolyGridBuffer m_WaveBuffer[2]; + uint32 m_nCurrWaveBuffer; + float m_fPrevFrameTime; + + //maximum number of models in the water that we can keep track of + enum { MAX_MODELS_TO_TRACK = 32 }; + + //the handles to each tracked model + HLOCALOBJ m_hTrackedModels[MAX_MODELS_TO_TRACK]; + + //the last position of the models we are tracking + LTVector m_vTrackedModelsPos[MAX_MODELS_TO_TRACK]; + + //wave prop data + float m_fDampenScale; + float m_fTimeScale; + float m_fSpringCoeff; + float m_fModelDisplace; + float m_fMinFrameRate; + + + //wave prop modifiers + uint8 m_nActiveModifiers; + uint16 m_nXMin[PG_MAX_MODIFIERS]; + uint16 m_nYMin[PG_MAX_MODIFIERS]; + uint16 m_nXMax[PG_MAX_MODIFIERS]; + uint16 m_nYMax[PG_MAX_MODIFIERS]; + uint16 m_nNumAccelPoints[PG_MAX_MODIFIERS]; + float m_fAccelAmount[PG_MAX_MODIFIERS]; + + //information about the previous unfinished impact + float m_fPrevImpactAmountLeft[PG_MAX_MODIFIERS]; + uint32 m_nPrevImpactX[PG_MAX_MODIFIERS]; + uint32 m_nPrevImpactY[PG_MAX_MODIFIERS]; + + LTVector m_vDims; + LTVector m_vColor1; + LTVector m_vColor2; + LTFLOAT m_fXScaleMin; + LTFLOAT m_fXScaleMax; + LTFLOAT m_fYScaleMin; + LTFLOAT m_fYScaleMax; + LTFLOAT m_fXScaleDuration; + LTFLOAT m_fYScaleDuration; + LTFLOAT m_fXPan; + LTFLOAT m_fYPan; + LTFLOAT m_fBaseReflection; + LTFLOAT m_fVolumeIOR; + std::string m_sSurfaceSprite; + std::string m_sSurfaceEnvMap; + std::string m_sDampenImage; + LTFLOAT m_fAlpha; + uint32 m_dwNumPoliesX; + uint32 m_dwNumPoliesY; + uint32 m_nNumStartupFrames; + + uint8 m_nSurfaceType; + uint8 m_nRingRate[4]; + + LTBOOL m_bAlwaysUpdate; + LTBOOL m_bUseGlobalSettings; + + LTBOOL m_bAdditive; + LTBOOL m_bMultiply; + LTBOOL m_bFresnel; + LTBOOL m_bBackfaceCull; + LTBOOL m_bRenderEarly; + LTBOOL m_bNormalMapSprite; + + HOBJECT m_hVolumeBrush; +}; + +#endif // __POLY_GRID_FX_H__ diff --git a/Jack/ClientShellDLL/PolyLineFX.cpp b/Jack/ClientShellDLL/PolyLineFX.cpp new file mode 100644 index 00000000..0ecd9c57 --- /dev/null +++ b/Jack/ClientShellDLL/PolyLineFX.cpp @@ -0,0 +1,947 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PolyLineFX.cpp +// +// PURPOSE : Poly line special FX - Implementation +// +// CREATED : 01/25/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PolyLineFX.h" +#include "iltclient.h" +#include "SFXMgr.h" +#include "GameClientShell.h" +#include "DynamicLightFX.h" +#include "GameButes.h" +#include "VarTrack.h" + +#ifdef __PSX2 +class LTVertex +{ +public: + LTVector m_Vec; + float m_RHW; // Don't touch. + LT_VERTRGBA m_Color; + LT_VERTRGBA m_Specular; // Don't touch. + float m_TU, m_TV; +}; +#endif + +VarTrack g_vtTestingTexture; +VarTrack g_vtTextureAddr; +VarTrack g_vtTextureColor; +VarTrack g_vtTextureAlpha; +VarTrack g_vtTexture; + +extern CGameClientShell* g_pGameClientShell; + +#ifndef __PSX2 +// The global vertex structure bank.. +CBankedList g_PolyVertStructBank; + +// The global PolyLine bank +CBankedList g_PolyLineBank; +#endif + +static LTMatrix GetCameraTransform(HOBJECT hCamera) +{ + LTVector vPos, vRight, vUp, vForward; + LTRotation rRot; + + g_pLTClient->GetObjectPos(hCamera, &vPos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + vPos.x = -vPos.x; + vPos.y = -vPos.y; + vPos.z = -vPos.z; + + LTMatrix mTran, mRot, mFull; + + mRot.SetBasisVectors((LTVector*)&rRot.Right(), (LTVector*)&rRot.Up(), (LTVector*)&rRot.Forward()); + MatTranspose3x3(&mRot); + + Mat_Identity(&mTran); + mTran.m[0][3] = vPos.x; + mTran.m[1][3] = vPos.y; + mTran.m[2][3] = vPos.z; + + MatMul(&mFull, &mRot, &mTran); + + return mFull; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::CPolyLineFX +// +// PURPOSE: CPolyLineFX ctor +// +// ----------------------------------------------------------------------- // + +CPolyLineFX::CPolyLineFX() : CBasePolyDrawFX(), m_bHasBeenDrawn(LTFALSE) +{ + m_Lines.Init(LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::~CPolyLineFX +// +// PURPOSE: CPolyLineFX dtor +// +// ----------------------------------------------------------------------- // + +CPolyLineFX::~CPolyLineFX() +{ + DeleteLines(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::Init +// +// PURPOSE: Init the poly line fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + // Client-side only... + + return LTFALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::Init +// +// PURPOSE: Init the poly line fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBasePolyDrawFX::Init(psfxCreateStruct)) return LTFALSE; + + PLFXCREATESTRUCT* pplfx = (PLFXCREATESTRUCT*)psfxCreateStruct; + + m_cs = *pplfx; + m_vPos = m_cs.vStartPos; + + if (!g_vtTextureAddr.IsInitted()) + { + g_vtTextureAddr.Init(g_pLTClient, "TexAddr", LTNULL, 0.0f); + } + + if (!g_vtTextureColor.IsInitted()) + { + g_vtTextureColor.Init(g_pLTClient, "TexColor", LTNULL, 0.0f); + } + + if (!g_vtTextureAlpha.IsInitted()) + { + g_vtTextureAlpha.Init(g_pLTClient, "TexAlpha", LTNULL, 0.0f); + } + + if (!g_vtTexture.IsInitted()) + { + g_vtTexture.Init(g_pLTClient, "Tex", "fxtest09", 0.0f); + } + + if (!g_vtTestingTexture.IsInitted()) + { + g_vtTestingTexture.Init(g_pLTClient, "TexTest", LTNULL, 0.0f); + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::ReInit +// +// PURPOSE: ReInit the polyline fx (Assumes CreateObject() was already +// called) +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::ReInit(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!m_pClientDE) return LTFALSE; + + PLFXCREATESTRUCT* pplfx = (PLFXCREATESTRUCT*)psfxCreateStruct; + + m_cs = *pplfx; + m_vPos = m_cs.vStartPos; + + Setup(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::CreateObject +// +// PURPOSE: Create object associated the object +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::CreateObject(ILTClient *pClientDE) +{ + if (!CBasePolyDrawFX::CreateObject(pClientDE)) return LTFALSE; + + // Validate our init info... + + if (m_cs.nNumSegments < 1) return LTFALSE; + + + // Set up the poly line... + + return Setup(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::Setup +// +// PURPOSE: Setup the line used to draw the poly line +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::Setup() +{ + // Clear list if necessary... + DeleteLines(); + + m_bHasBeenDrawn = LTFALSE; + + + // Add the first (only?) line... + + PLFXLINESTRUCT ls; + + ls.vStartPos = m_cs.vStartPos; + ls.vEndPos = m_cs.vEndPos; + ls.fAlphaStart = m_cs.fAlphaStart; + ls.fAlphaEnd = m_cs.fAlphaEnd; + ls.fLifeTime = m_cs.fLifeTime; + ls.fAlphaLifeTime = m_cs.fAlphaLifeTime; + ls.vInnerColorStart = m_cs.vInnerColorStart; + ls.vInnerColorEnd = m_cs.vInnerColorEnd; + ls.vOuterColorStart = m_cs.vOuterColorStart; + ls.vOuterColorEnd = m_cs.vOuterColorEnd; + + return AddLine(ls); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::AddLine +// +// PURPOSE: Add another line segment...This allows lines to be added +// dynamically :) +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::AddLine(PLFXLINESTRUCT ls) +{ +#ifdef __PSX2 + PolyLine* pLine = new PolyLine; +#else + PolyLine* pLine = g_PolyLineBank.New(); +#endif + if (!pLine) return LTFALSE; + + pLine->list.Init(LTFALSE); + + pLine->fAlphaStart = ls.fAlphaStart; + pLine->fAlphaEnd = ls.fAlphaEnd; + pLine->fLifeTime = ls.fLifeTime; + pLine->fAlphaLifeTime = ls.fAlphaLifeTime; + pLine->vInnerColorStart = ls.vInnerColorStart; + pLine->vInnerColorEnd = ls.vInnerColorEnd; + pLine->vOuterColorStart = ls.vOuterColorStart; + pLine->vOuterColorEnd = ls.vOuterColorEnd; + pLine->fStartTime = g_pLTClient->GetTime(); + + if (SetupLine(pLine, ls.vStartPos, ls.vEndPos)) + { + m_Lines.AddTail(pLine); + } + else + { +#ifdef __PSX2 + delete pLine; +#else + g_PolyLineBank.Delete(pLine); +#endif + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::DeleteLines +// +// PURPOSE: Clears out the line list +// +// ----------------------------------------------------------------------- // + +void CPolyLineFX::DeleteLines() +{ +#ifndef __PSX2 + // Manually delete the PolyLine pointers since they're in a bank.. + PolyLine** pCurLine = m_Lines.GetItem(TLIT_FIRST); + while (pCurLine) + { + if (*pCurLine) + { + g_PolyLineBank.Delete(*pCurLine); + *pCurLine = LTNULL; + } + pCurLine = m_Lines.GetItem(TLIT_NEXT); + } +#endif + // Clear the list + m_Lines.Clear(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::SetupLine +// +// PURPOSE: Setup the verts for a line segment +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::SetupLine(PolyLine* pLine, LTVector vStartPos, LTVector vEndPos) +{ + if (!pLine) return LTFALSE; + + // Make all the verticies relative to the object's position... + + LTVector vPos = vStartPos; + LTVector vDir = (vEndPos - vStartPos); + float fDist = vDir.Mag(); + float fTotalDist = fDist; + + vDir.Normalize(); + + LTRotation rRot; + if (m_cs.bUseObjectRotation) + { + rRot = m_rRot; + } + else + { + rRot = LTRotation(vDir, LTVector(0.0f, 1.0f, 0.0f)); + } + + LTVector vU, vR, vF; + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + float fMinDist = fDist / m_cs.nNumSegments; + fMinDist *= m_cs.fMinDistMult; + float fMaxDist = fMinDist * m_cs.fMaxDistMult; + + PolyVertStruct* pCurVert; + + for (int i=0; i <= m_cs.nNumSegments; i++) + { + // Get a new vert from the list +#ifdef __PSX2 + pCurVert = new PolyVertStruct; +#else + pCurVert = g_PolyVertStructBank.New(); +#endif + if (!pCurVert) return LTFALSE; + + // Set up the vertex + pCurVert->fPosOffset = fTotalDist - fDist; + pCurVert->vPos = vPos - m_vPos; + pCurVert->fOffset = CalcCurOffset(i); + + pLine->list.AddTail(pCurVert); + + float fNewDist = GetRandom(fMinDist, fMaxDist); + fDist -= fNewDist; + + if (fDist > 0.0) + { + vPos += (vF * fNewDist); + vPos += (vU * GetRandom(-m_cs.fPerturb, m_cs.fPerturb)); + vPos += (vR * GetRandom(-m_cs.fPerturb, m_cs.fPerturb)); + } + + // Calculate end point vert... + + if (i == m_cs.nNumSegments) + { + pCurVert->fPosOffset = fTotalDist; + pCurVert->vPos = vEndPos - m_vPos; + } + } + + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::CalcCurOffset +// +// PURPOSE: Calculate the current offset for indicated vertex +// +// ----------------------------------------------------------------------- // + +LTFLOAT CPolyLineFX::CalcCurOffset(int nVertexNum) +{ + // Determine the offset to use... + + float fMaxOffset = m_cs.fMaxWidth/2.0f; + float fMinOffset = m_cs.fMinWidth/2.0f; + float fWidth = fMaxOffset - fMinOffset; + float fHalfNumVerts = float(m_cs.nNumSegments+1)/2.0f; + + LTFLOAT fOffset = 0.0f; + + switch (m_cs.nWidthStyle) + { + case PLWS_CONSTANT : + { + fOffset = fWidth / 2.0f; + } + break; + + case PLWS_SMALL_TO_BIG : + { + fOffset = fMinOffset + (fWidth * float(nVertexNum) / float(m_cs.nNumSegments)); + } + break; + + case PLWS_SMALL_TO_SMALL : + { + if (nVertexNum < (int)fHalfNumVerts) + { + fOffset = fMinOffset + (fWidth * float(nVertexNum) / fHalfNumVerts); + } + else + { + fOffset = fMaxOffset - (fWidth * (float(nVertexNum+1) - fHalfNumVerts) / fHalfNumVerts); + } + } + break; + + default: + case PLWS_BIG_TO_SMALL : + { + fOffset = fMaxOffset - (fWidth * float(nVertexNum) / float(m_cs.nNumSegments)); + } + break; + } + + return fOffset; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::Draw +// +// PURPOSE: Draw the poly line +// +// ----------------------------------------------------------------------- // +LTBOOL CPolyLineFX::Draw(ILTDrawPrim *pDraw) +{ + if (!pDraw || m_Lines.GetLength() < 1) return LTFALSE; + + // Save current state settings... + + if (m_cs.bAdditive) + { + pDraw->SetAlphaBlendMode(DRAWPRIM_BLEND_ADD); + } + else if (m_cs.bMultiply) + { + pDraw->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCCOLOR); + } + + if (m_cs.bNoZ) + { + pDraw->SetZBufferMode(DRAWPRIM_ZRO); + } + + pDraw->SetColorOp((ELTColorOp)m_cs.dwColorOp); + + + // Calculate the transform relative to the camera... + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return LTFALSE; + + pDraw->SetCamera( hCamera ); + pDraw->SetTransformType( DRAWPRIM_TRANSFORM_WORLD ); + + HTEXTURE hTex = LTNULL; + if( m_cs.pTexture ) + { + g_pLTClient->GetTexInterface()->CreateTextureFromName( hTex, m_cs.pTexture ); + pDraw->SetTexture( hTex ); + } + + LTRotation rRot; + + + // Used to align the segments using our rotation (usually used with + // m_cs.bAlignFlat or m_cs.bAlignUp... + + if (m_cs.bAlignUsingRot) + { + rRot = m_rRot; + } + else + { + g_pLTClient->GetObjectRotation(hCamera, &rRot); + } + + + LTVector vU, vR; + vU = rRot.Up(); + vR = rRot.Right(); + + LTMatrix mCam, mInvCam; + mCam = GetCameraTransform(hCamera); + mCam.Normalize(); + + mInvCam = mCam.MakeInverseTransform(); + mInvCam.Normalize(); + + PolyLine** pLine = m_Lines.GetItem(TLIT_FIRST); + + // Need to pass this to draw primitive, because the flag has already been + // checked on the object by this time (and it can't be set on s_hCanvasObj + // because this is used for all BasePolyDrawFX objects)... + + uint32 dwFlags = (m_Flags & FLAG_REALLYCLOSE) ? FLAG_REALLYCLOSE : 0; + + LTBOOL bCalculatedNormal = LTFALSE; + + LTVector vPt1, vPt2, vPt1Trans, vPt2Trans, vDir; + LTVector vPt2MinusNonTrans, vPt2PlusNonTrans; + LTVector vLastPt2; + LTVector vLastPt2MinusNonTrans; + LTVector vLastPt2PlusNonTrans; + + float x, y; + + LTPoly_GT4 dpPoly; + + while (pLine && *pLine) + { + PolyVertStruct** pCurVert = (*pLine)->list.GetItem(TLIT_FIRST); + PolyVertStruct** pNextVert = (*pLine)->list.GetItem(TLIT_NEXT); + if (!pCurVert || !*pCurVert || !pNextVert || !*pNextVert) return LTFALSE; + + vPt1 = GetVertPos(*pCurVert); + vPt2 = GetVertPos(*pNextVert); + + MatVMul((LTVector*)&vPt1Trans, &mCam, (LTVector*)&vPt1); + MatVMul((LTVector*)&vPt2Trans, &mCam, (LTVector*)&vPt2); + + if (m_cs.bLinesShareNormal || !bCalculatedNormal) + { + x = (vPt2Trans.y - vPt1Trans.y); + y = -(vPt2Trans.x - vPt1Trans.x); + + vDir.Init(x, y, 0.0f); + vDir.Normalize(); + + bCalculatedNormal = LTTRUE; + } + + // Initialize last values... + + vLastPt2 = vPt1; + vLastPt2MinusNonTrans = vPt1Trans - (vDir * (*pCurVert)->fOffset); + vLastPt2PlusNonTrans = vPt1Trans + (vDir * (*pCurVert)->fOffset); + + PolyVertStruct** pNextNextVert = (*pLine)->list.GetItem(TLIT_NEXT); + + while (pNextVert) + { + vPt1 = GetVertPos(*pCurVert); + vPt2 = GetVertPos(*pNextVert); + + MatVMul((LTVector*)&vPt1Trans, &mCam, (LTVector*)&vPt1); + MatVMul((LTVector*)&vPt2Trans, &mCam, (LTVector*)&vPt2); + + if (!m_cs.bLinesShareNormal) + { + x = (vPt2Trans.y - vPt1Trans.y); + y = -(vPt2Trans.x - vPt1Trans.x); + + vDir.Init(x, y, 0.0f); + vDir.Normalize(); + + if (pNextNextVert) + { + // Calculate normal for the next segment... + + LTVector vPt3Trans; + LTVector vVertPos = GetVertPos(*pNextNextVert); + MatVMul((LTVector*)&vPt3Trans, &mCam, (LTVector*)&vVertPos); + + x = (vPt3Trans.y - vPt2Trans.y); + y = -(vPt3Trans.x - vPt2Trans.x); + + LTVector vDir2(x, y, 0.0f); + vDir2.Normalize(); + + LTVector vNewDir = (vDir + vDir2) / 2.0f; + + vPt2MinusNonTrans = vPt2Trans - (vNewDir * (*pNextVert)->fOffset); + vPt2PlusNonTrans = vPt2Trans + (vNewDir * (*pNextVert)->fOffset); + } + else + { + vPt2MinusNonTrans = vPt2Trans - (vDir * (*pNextVert)->fOffset); + vPt2PlusNonTrans = vPt2Trans + (vDir * (*pNextVert)->fOffset); + } + } + else + { + vPt2MinusNonTrans = vPt2Trans - (vDir * (*pNextVert)->fOffset); + vPt2PlusNonTrans = vPt2Trans + (vDir * (*pNextVert)->fOffset); + } + + + // Set up lower left vertex... + + if (m_cs.bAlignUp) + { + LTVector vTemp = (vLastPt2 + (-vU * (*pNextVert)->fOffset)); + dpPoly.verts[0].x = vTemp.x; + dpPoly.verts[0].y = vTemp.y; + dpPoly.verts[0].z = vTemp.z; + } + else if (m_cs.bAlignFlat) + { + LTVector vTemp = (vLastPt2 + (-vR * (*pNextVert)->fOffset)); + dpPoly.verts[0].x = vTemp.x; + dpPoly.verts[0].y = vTemp.y; + dpPoly.verts[0].z = vTemp.z; + } + else + { + LTVector vTemp = vLastPt2MinusNonTrans; + MatVMul_InPlace(&mInvCam, (LTVector*)&vTemp); + dpPoly.verts[0].x = vTemp.x; + dpPoly.verts[0].y = vTemp.y; + dpPoly.verts[0].z = vTemp.z; + } + + dpPoly.verts[0].rgba.r = (uint8)((*pCurVert)->vCurOuterColor.x); + dpPoly.verts[0].rgba.g = (uint8)((*pCurVert)->vCurOuterColor.y); + dpPoly.verts[0].rgba.b = (uint8)((*pCurVert)->vCurOuterColor.z); + dpPoly.verts[0].rgba.a = (uint8) (m_cs.bDontFadeAlphaAtEdge ? ((*pCurVert)->fCurAlpha) : 0); + dpPoly.verts[0].u = 0.0; + dpPoly.verts[0].v = 0.0; + + + // Set up upper left vertex... + + // verts[1].m_Vec = vLastPt2; + if (m_cs.bAlignUp) + { + LTVector vTemp = (vLastPt2 + (vU * (*pNextVert)->fOffset)); + dpPoly.verts[1].x = vTemp.x; + dpPoly.verts[1].y = vTemp.y; + dpPoly.verts[1].z = vTemp.z; + } + else if (m_cs.bAlignFlat) + { + LTVector vTemp = (vLastPt2 + (vR * (*pNextVert)->fOffset)); + dpPoly.verts[1].x = vTemp.x; + dpPoly.verts[1].y = vTemp.y; + dpPoly.verts[1].z = vTemp.z; + } + else + { + LTVector vTemp = vLastPt2PlusNonTrans; + MatVMul_InPlace(&mInvCam, (LTVector*)&vTemp); + dpPoly.verts[1].x = vTemp.x; + dpPoly.verts[1].y = vTemp.y; + dpPoly.verts[1].z = vTemp.z; + } + + dpPoly.verts[1].rgba.r = (uint8)((*pCurVert)->vCurInnerColor.x); + dpPoly.verts[1].rgba.g = (uint8)((*pCurVert)->vCurInnerColor.y); + dpPoly.verts[1].rgba.b = (uint8)((*pCurVert)->vCurInnerColor.z); + dpPoly.verts[1].rgba.a = (uint8)((*pCurVert)->fCurAlpha); + dpPoly.verts[1].u = 0.0; + dpPoly.verts[1].v = 1.0; + + + // Set up upper right vertex... + + // verts[2].m_Vec = vPt2; + + if (m_cs.bAlignUp) + { + LTVector vTemp = (vPt2 + (vU * (*pNextVert)->fOffset)); + dpPoly.verts[2].x = vTemp.x; + dpPoly.verts[2].y = vTemp.y; + dpPoly.verts[2].z = vTemp.z; + } + else if (m_cs.bAlignFlat) + { + LTVector vTemp = (vPt2 + (vR * (*pNextVert)->fOffset)); + dpPoly.verts[2].x = vTemp.x; + dpPoly.verts[2].y = vTemp.y; + dpPoly.verts[2].z = vTemp.z; + } + else + { + LTVector vTemp = vPt2PlusNonTrans; + MatVMul_InPlace(&mInvCam, (LTVector*)&vTemp); + dpPoly.verts[2].x = vTemp.x; + dpPoly.verts[2].y = vTemp.y; + dpPoly.verts[2].z = vTemp.z; + } + + dpPoly.verts[2].rgba.r = (uint8)((*pNextVert)->vCurInnerColor.x); + dpPoly.verts[2].rgba.g = (uint8)((*pNextVert)->vCurInnerColor.y); + dpPoly.verts[2].rgba.b = (uint8)((*pNextVert)->vCurInnerColor.z); + dpPoly.verts[2].rgba.a = (uint8)((*pNextVert)->fCurAlpha); + dpPoly.verts[2].u = 1.0; + dpPoly.verts[2].v = 1.0; + + + // Set up lower right vertex... + + if (m_cs.bAlignUp) + { + LTVector vTemp = (vPt2 + (-vU * (*pNextVert)->fOffset)); + dpPoly.verts[3].x = vTemp.x; + dpPoly.verts[3].y = vTemp.y; + dpPoly.verts[3].z = vTemp.z; + } + else if (m_cs.bAlignFlat) + { + LTVector vTemp = (vPt2 + (-vR * (*pNextVert)->fOffset)); + dpPoly.verts[3].x = vTemp.x; + dpPoly.verts[3].y = vTemp.y; + dpPoly.verts[3].z = vTemp.z; + } + else + { + LTVector vTemp = vPt2MinusNonTrans; + MatVMul_InPlace(&mInvCam, (LTVector*)&vTemp); + dpPoly.verts[3].x = vTemp.x; + dpPoly.verts[3].y = vTemp.y; + dpPoly.verts[3].z = vTemp.z; + } + + dpPoly.verts[3].rgba.r = (uint8)((*pNextVert)->vCurOuterColor.x); + dpPoly.verts[3].rgba.g = (uint8)((*pNextVert)->vCurOuterColor.y); + dpPoly.verts[3].rgba.b = (uint8)((*pNextVert)->vCurOuterColor.z); + dpPoly.verts[3].rgba.a = (uint8)(m_cs.bDontFadeAlphaAtEdge ? ((*pNextVert)->fCurAlpha) : 0); + dpPoly.verts[3].u = 1.0; + dpPoly.verts[3].v = 0.0; + + // Draw the poly... + + pDraw->DrawPrim(&dpPoly, 1); + // Save value of last points... + + vLastPt2 = vPt2; + vLastPt2MinusNonTrans = vPt2MinusNonTrans; + vLastPt2PlusNonTrans = vPt2PlusNonTrans; + + // Get next verts... + + pCurVert = pNextVert; + pNextVert = pNextNextVert; + pNextNextVert = (*pLine)->list.GetItem(TLIT_NEXT); + + m_bHasBeenDrawn = LTTRUE; + } + + pLine = m_Lines.GetItem(TLIT_NEXT); + } + + if( hTex ) + g_pLTClient->GetTexInterface()->ReleaseTextureHandle( hTex ); + + return m_bHasBeenDrawn; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::GetVertPos +// +// PURPOSE: Get the PolyVertStruct absolute position +// +// ----------------------------------------------------------------------- // + +LTVector CPolyLineFX::GetVertPos(PolyVertStruct *pVert) +{ + if (m_cs.bUseObjectRotation) + { + return m_vPos + (m_rRot.Forward() * pVert->fPosOffset); + } + + return (pVert->vPos + m_vPos); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPolyLineFX::Update +// +// PURPOSE: Update the poly line +// +// ----------------------------------------------------------------------- // + +LTBOOL CPolyLineFX::Update() +{ + if (m_bWantRemove) return LTFALSE; + + // Hide/show poly line if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + m_Flags &= ~FLAG_VISIBLE; + return LTTRUE; + } + else + { + m_Flags |= FLAG_VISIBLE; + } + } + + + // Update the color and alpha for all the lines... + + LTFLOAT fTime = g_pLTClient->GetTime(); + PolyLine** pLine = m_Lines.GetItem(TLIT_FIRST); + + while (pLine && *pLine) + { + LTFLOAT fTimeDelta = fTime - (*pLine)->fStartTime; + + (*pLine)->UpdateColorAlpha(fTimeDelta, (m_cs.bAdditive || m_cs.bMultiply)); + + if (fTimeDelta > (*pLine)->fLifeTime) + { + m_Lines.Remove(*pLine); +#ifndef __PSX2 + g_PolyLineBank.Delete(*pLine); +#endif + + pLine = m_Lines.GetItem(TLIT_CURRENT); + } + else + { + pLine = m_Lines.GetItem(TLIT_NEXT); + } + } + + + return m_Lines.GetLength(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PolyLine::UpdateColorAlpha +// +// PURPOSE: Update the line color/alpha +// +// ----------------------------------------------------------------------- // + +void PolyLine::UpdateColorAlpha(LTFLOAT fTimeDelta, LTBOOL bAdjustColors) +{ + PolyVertStruct** pCurVert = list.GetItem(TLIT_FIRST); + + while (pCurVert && *pCurVert) + { + PolyVertStruct* pCur = (*pCurVert); + + // If using additive or multiply blending, colors needs to be + // adjusted to change alpha... + + pCur->UpdateColorAlpha(this, fTimeDelta, bAdjustColors); + + pCurVert = list.GetItem(TLIT_NEXT); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PolyVertStruct::UpdateColorAlpha +// +// PURPOSE: Update the poly line color/alpha +// +// ----------------------------------------------------------------------- // + +void PolyVertStruct::UpdateColorAlpha(PolyLine* pLine, LTFLOAT fTimeDelta, + LTBOOL bAdjustColors) +{ + if (!pLine) return; + + LTFLOAT fAlphaPercent = 1.0f; + + if (pLine->fAlphaLifeTime > 0.0f) + { + fAlphaPercent = (pLine->fAlphaStart + (fTimeDelta * (pLine->fAlphaEnd - pLine->fAlphaStart) / pLine->fAlphaLifeTime)); + fAlphaPercent = fAlphaPercent < 0.0f ? 0.0f : (fAlphaPercent > 1.0f ? 1.0f : fAlphaPercent); + } + + fCurAlpha = 255.0f * fAlphaPercent; + + vCurInnerColor.x = pLine->vInnerColorStart.x + (fTimeDelta * (pLine->vInnerColorEnd.x - pLine->vInnerColorStart.x) / pLine->fLifeTime); + vCurInnerColor.x = vCurInnerColor.x < 0.0f ? 0.0f : (vCurInnerColor.x > 255.0f ? 255.0f : vCurInnerColor.x); + vCurInnerColor.y = pLine->vInnerColorStart.y + (fTimeDelta * (pLine->vInnerColorEnd.y - pLine->vInnerColorStart.y) / pLine->fLifeTime); + vCurInnerColor.y = vCurInnerColor.y < 0.0f ? 0.0f : (vCurInnerColor.y > 255.0f ? 255.0f : vCurInnerColor.y); + vCurInnerColor.z = pLine->vInnerColorStart.z + (fTimeDelta * (pLine->vInnerColorEnd.z - pLine->vInnerColorStart.z) / pLine->fLifeTime); + vCurInnerColor.z = vCurInnerColor.z < 0.0f ? 0.0f : (vCurInnerColor.z > 255.0f ? 255.0f : vCurInnerColor.z); + + vCurOuterColor.x = pLine->vOuterColorStart.x + (fTimeDelta * (pLine->vOuterColorEnd.x - pLine->vOuterColorStart.x) / pLine->fLifeTime); + vCurOuterColor.x = vCurOuterColor.x < 0.0f ? 0.0f : (vCurOuterColor.x > 255.0f ? 255.0f : vCurOuterColor.x); + vCurOuterColor.y = pLine->vOuterColorStart.y + (fTimeDelta * (pLine->vOuterColorEnd.y - pLine->vOuterColorStart.y) / pLine->fLifeTime); + vCurOuterColor.y = vCurOuterColor.y < 0.0f ? 0.0f : (vCurOuterColor.y > 255.0f ? 255.0f : vCurOuterColor.y); + vCurOuterColor.z = pLine->vOuterColorStart.z + (fTimeDelta * (pLine->vOuterColorEnd.z - pLine->vOuterColorStart.z) / pLine->fLifeTime); + vCurOuterColor.z = vCurOuterColor.z < 0.0f ? 0.0f : (vCurOuterColor.z > 255.0f ? 255.0f : vCurOuterColor.z); + + if (bAdjustColors) + { + vCurInnerColor.x *= fAlphaPercent; + vCurInnerColor.y *= fAlphaPercent; + vCurInnerColor.z *= fAlphaPercent; + + vCurOuterColor.x *= fAlphaPercent; + vCurOuterColor.y *= fAlphaPercent; + vCurOuterColor.z *= fAlphaPercent; + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PolyLineFX.h b/Jack/ClientShellDLL/PolyLineFX.h new file mode 100644 index 00000000..c1f757ba --- /dev/null +++ b/Jack/ClientShellDLL/PolyLineFX.h @@ -0,0 +1,245 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PolyLineFX.h +// +// PURPOSE : Poly Line special fx class - Definition +// +// CREATED : 01/25/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __POLY_LINE_FX_H__ +#define __POLY_LINE_FX_H__ + +#include "BasePolyDrawFX.h" +#include "SoundMgr.h" +#include "SFXMsgIds.h" +#include "TemplateList.h" +#include "BankedList.h" +#include "ILTDrawPrim.h" + +struct PLFXCREATESTRUCT : public SFXCREATESTRUCT +{ + PLFXCREATESTRUCT(); + + LTVector vStartPos; + LTVector vEndPos; + LTVector vInnerColorStart; + LTVector vInnerColorEnd; + LTVector vOuterColorStart; + LTVector vOuterColorEnd; + LTFLOAT fAlphaStart; + LTFLOAT fAlphaEnd; + LTFLOAT fMinWidth; + LTFLOAT fMaxWidth; + LTFLOAT fLifeTime; + LTFLOAT fAlphaLifeTime; + LTFLOAT fPerturb; + LTFLOAT fMinDistMult; + LTFLOAT fMaxDistMult; + LTBOOL bUseObjectRotation; + LTBOOL bDontFadeAlphaAtEdge; + uint8 nWidthStyle; + uint8 nNumSegments; + LTBOOL bAlignFlat; + LTBOOL bAlignUp; + LTBOOL bAlignUsingRot; + LTBOOL bAdditive; + LTBOOL bMultiply; + LTBOOL bNoZ; + LTBOOL bLinesShareNormal; + const char* pTexture; + + uint32 dwTexAddr; + uint32 dwColorOp; +}; + +inline PLFXCREATESTRUCT::PLFXCREATESTRUCT() +{ + vStartPos.Init(); + vEndPos.Init(); + + fMinWidth = 0.0f; + fMaxWidth = 0.0f; + fPerturb = 0.0f; + bUseObjectRotation = LTFALSE; + bDontFadeAlphaAtEdge = LTFALSE; + bAlignFlat = LTFALSE; + bAlignUp = LTFALSE; + bAlignUsingRot = LTFALSE; + bNoZ = LTFALSE; + bAdditive = LTFALSE; + bMultiply = LTFALSE; + nWidthStyle = 0; + nNumSegments = 0; + fMinDistMult = 0.5f; + fMaxDistMult = 2.5f; + bLinesShareNormal = LTTRUE; + pTexture = LTNULL; + dwTexAddr = 0; + dwColorOp = DRAWPRIM_MODULATE; + + vInnerColorStart.Init(); + vInnerColorEnd.Init(); + vOuterColorStart.Init(); + vOuterColorEnd.Init(); + fAlphaStart = 0.0f; + fAlphaEnd = 0.0f; + fLifeTime = 0.0f; + fAlphaLifeTime = 0.0f; +} + +// Parameter to AddLine method... + +struct PLFXLINESTRUCT +{ + PLFXLINESTRUCT() + { + vStartPos.Init(); + vEndPos.Init(); + vInnerColorStart.Init(); + vInnerColorEnd.Init(); + vOuterColorStart.Init(); + vOuterColorEnd.Init(); + fAlphaStart = 0.0f; + fAlphaEnd = 0.0f; + fLifeTime = 0.0f; + fAlphaLifeTime = 0.0f; + } + + LTVector vStartPos; + LTVector vEndPos; + LTVector vInnerColorStart; + LTVector vInnerColorEnd; + LTVector vOuterColorStart; + LTVector vOuterColorEnd; + LTFLOAT fAlphaStart; + LTFLOAT fAlphaEnd; + LTFLOAT fLifeTime; + LTFLOAT fAlphaLifeTime; +}; + + + + +struct PolyLine; +struct PolyVertStruct +{ + PolyVertStruct() + { + fOffset = 0.0f; + fPosOffset = 0.0f; + fCurAlpha = 0.0f; + + vPos.Init(); + vCurInnerColor.Init(); + vCurOuterColor.Init(); + } + + void UpdateColorAlpha(PolyLine* pParent, LTFLOAT fTimeDelta, + LTBOOL bAdjustColors); + + LTVector vPos; + LTVector vCurInnerColor; + LTVector vCurOuterColor; + + LTFLOAT fCurAlpha; + LTFLOAT fOffset; + LTFLOAT fPosOffset; +}; + +typedef CTList PolyVertStructList; +extern CBankedList g_PolyVertStructBank; + +struct PolyLine +{ + PolyLine() + { + fAlphaStart = 0.0f; + fAlphaEnd = 0.0f; + fLifeTime = 0.0f; + fAlphaLifeTime = 0.0f; + fStartTime = 0.0f; + + vInnerColorStart.Init(); + vInnerColorEnd.Init(); + vOuterColorStart.Init(); + vOuterColorEnd.Init(); + } + +#ifndef __PSX2 + ~PolyLine() + { + // Clear out the list by hand since it was allocated out of the bank + PolyVertStruct** pCurVert = list.GetItem(TLIT_FIRST); + while (pCurVert) + { + if (*pCurVert) + { + g_PolyVertStructBank.Delete(*pCurVert); + *pCurVert = LTNULL; + } + pCurVert = list.GetItem(TLIT_NEXT); + } + } +#endif + void UpdateColorAlpha(LTFLOAT fTimeDelta, LTBOOL bAdjustColors); + + LTVector vInnerColorStart; + LTVector vInnerColorEnd; + LTVector vOuterColorStart; + LTVector vOuterColorEnd; + LTFLOAT fAlphaStart; + LTFLOAT fAlphaEnd; + LTFLOAT fLifeTime; + LTFLOAT fAlphaLifeTime; + LTFLOAT fStartTime; + + PolyVertStructList list; +}; + +typedef CTList PolyLineList; + +class CPolyLineFX : public CBasePolyDrawFX +{ + public : + + CPolyLineFX(); + + ~CPolyLineFX(); + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + PolyLineList* GetLines() { return &m_Lines; } + LTVector GetVertPos(PolyVertStruct *pVert); + + LTBOOL AddLine(PLFXLINESTRUCT ls); + + LTBOOL HasBeenDrawn() const { return m_bHasBeenDrawn; } + + LTBOOL ReInit(SFXCREATESTRUCT* psfxCreateStruct); + + virtual uint32 GetSFXID() { return SFX_POLYLINE_ID; } + + protected : + + virtual LTBOOL Draw(ILTDrawPrim *pDraw); + + PLFXCREATESTRUCT m_cs; + + PolyLineList m_Lines; + LTBOOL m_bHasBeenDrawn; + + void DeleteLines(); + + LTBOOL Setup(); + LTFLOAT CalcCurOffset(int nVertexNum); + LTBOOL SetupLine(PolyLine* pLine, LTVector vStartPos, LTVector vEndPos); +}; + +#endif // __POLY_LINE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/PolygridBuffer.h b/Jack/ClientShellDLL/PolygridBuffer.h new file mode 100644 index 00000000..65459058 --- /dev/null +++ b/Jack/ClientShellDLL/PolygridBuffer.h @@ -0,0 +1,124 @@ +/////////////////////////////////////////////////////////////////// +// PolygridBuffer.h +// +// Template class used for holding an array of the specified size +// for polygrid operations +// +#ifndef __POLYGRIDBUFFER_H__ +#define __POLYGRIDBUFFER_H__ + +template +class CPolyGridBuffer +{ +public: + + //creates a new buffer of the specified dimensions + CPolyGridBuffer() : + m_pData(NULL), m_nWidth(0), m_nHeight(0), m_bOwnBuffer(false) + { + } + + //uses a preconstructed buffer of the specified dimensions. Note that + //it will not delete this buffer + CPolyGridBuffer(uint32 nWidth, uint32 nHeight, T* pData) : + m_pData(pData), m_nWidth(nWidth), m_nHeight(nHeight), m_bOwnBuffer(false) + { + } + + //copy constructor + CPolyGridBuffer(const CPolyGridBuffer& rhs) : + m_pData(NULL), m_nWidth(0), m_nHeight(0), m_bOwnBuffer(false) + { + *this = rhs; + } + + //destructor + ~CPolyGridBuffer() { FreeBuffer(); } + + uint32 GetWidth() const { return m_nWidth; } + uint32 GetHeight() const { return m_nHeight; } + + //gets a specified value + T& Get(uint32 nX, uint32 nY) { assert(nX < GetWidth()); assert(nY < GetHeight()); return m_pData[nY * GetWidth() + nX]; } + const T& Get(uint32 nX, uint32 nY) const { assert(nX < GetWidth()); assert(nY < GetHeight()); return m_pData[nY * GetWidth() + nX]; } + + //index operators + T& operator[](uint32 nVal) { assert(nVal < GetWidth() * GetHeight()); return m_pData[nVal]; } + const T& operator[](uint32 nVal) const { assert(nVal < GetWidth() * GetHeight()); return m_pData[nVal]; } + + //gets a specified row + T* GetRow(uint32 nY) { assert(nY < GetHeight()); return &m_pData[nY * GetWidth()]; } + + //gets a pointer to the first element of the buffer + T* GetBuffer() { return m_pData; } + const T* GetBuffer() const { return m_pData; } + + //resizes the buffer, note that values will be lost + bool Resize(uint32 nWidth, uint32 nHeight) + { + //do nothing if the size matches + if((nWidth == GetWidth()) && (nHeight == GetHeight())) + return true; + + //out with the old + FreeBuffer(); + + if((nWidth == 0) || (nHeight == 0)) + return true; + + //we now own this buffer + m_bOwnBuffer = true; + + //in with the new + m_pData = new T [nWidth * nHeight]; + + //check the allocation + if(m_pData) + { + m_nWidth = nWidth; + m_nHeight = nHeight; + return true; + } + + //allocation failed + return false; + } + + //assignement operator + CPolyGridBuffer& operator=(const CPolyGridBuffer& rhs) + { + if(Resize(rhs.GetWidth(), rhs.GetHeight())) + { + memcpy(m_pData, rhs.m_pData, sizeof(T) * GetWidth() * GetHeight()); + } + return *this; + } + +private: + + //frees the buffer + void FreeBuffer() + { + if(m_bOwnBuffer) + { + delete [] m_pData; + } + m_pData = NULL; + m_nWidth = 0; + m_nHeight = 0; + } + + //the actual buffer + T* m_pData; + + //the buffer dimensions + uint32 m_nWidth; + uint32 m_nHeight; + + //flag indicating if we own the buffer or not + bool m_bOwnBuffer; +}; + + +#endif + diff --git a/Jack/ClientShellDLL/PopupMgr.cpp b/Jack/ClientShellDLL/PopupMgr.cpp new file mode 100644 index 00000000..f038f889 --- /dev/null +++ b/Jack/ClientShellDLL/PopupMgr.cpp @@ -0,0 +1,145 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PopupMgr.cpp +// +// PURPOSE : Attribute file manager for popup item info +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "PopupMgr.h" +#include "InterfaceMgr.h" + + +#define POPUP_TAG "PopupItem" + +#define POPUP_FRAME "Frame" +#define POPUP_FONT "Font" +#define POPUP_FONTSIZE "FontSize" +#define POPUP_SIZE "Size" +#define POPUP_TEXTPOS "TextOffset" +#define POPUP_TEXTWIDTH "TextWidth" +#define POPUP_TEXTCOLOR "TextColor" + +CPopupMgr* g_pPopupMgr = LTNULL; + +static char s_aTagName[30]; +static char s_aAttName[30]; + +POPUP::POPUP() +{ + nId = 0; + szFrame[0] = 0; + nFont = 0; + nFontSize = 0; + nTextWidth = 0; + argbTextColor = argbBlack; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CPopupMgr::CPopupMgr() +{ +} + +CPopupMgr::~CPopupMgr() +{ + Term(); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPopupMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CPopupMgr::Init(const char* szAttributeFile) +{ + if (g_pPopupMgr || !szAttributeFile) return LTFALSE; + if (!Parse(szAttributeFile)) return LTFALSE; + + m_PopupArray.reserve(10); + + // Set up global pointer... + g_pPopupMgr = this; + + uint8 nNumPopups = 0; + CPoint zero(0,0); + + sprintf(s_aTagName, "%s0", POPUP_TAG); + while (m_buteMgr.Exist(s_aTagName)) + { + POPUP* pNew = debug_new(POPUP); + pNew->nId = nNumPopups; + + m_buteMgr.GetString(s_aTagName, POPUP_FRAME, "", pNew->szFrame, sizeof(pNew->szFrame)); + pNew->nFont = (uint8)m_buteMgr.GetInt(s_aTagName, POPUP_FONT, 0); + pNew->nFontSize = (uint8)m_buteMgr.GetInt(s_aTagName, POPUP_FONTSIZE, 12); + + + CPoint tmp = m_buteMgr.GetPoint(s_aTagName,POPUP_SIZE,zero); + pNew->sSize.x = tmp.x; + pNew->sSize.y = tmp.y; + + tmp = m_buteMgr.GetPoint(s_aTagName,POPUP_TEXTPOS,zero); + pNew->sTextOffset.x = tmp.x; + pNew->sTextOffset.y = tmp.y; + + pNew->nTextWidth = (uint16)m_buteMgr.GetInt(s_aTagName,POPUP_TEXTWIDTH,0); + + + LTVector vColor = m_buteMgr.GetVector(s_aTagName, POPUP_TEXTCOLOR); + + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + pNew->argbTextColor = SET_ARGB(0xFF,nR,nG,nB); + + m_PopupArray.push_back(pNew); + + nNumPopups++; + sprintf(s_aTagName, "%s%d", POPUP_TAG, nNumPopups); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPopupMgr::Term() +// +// PURPOSE: Clean up. +// +// ----------------------------------------------------------------------- // + +void CPopupMgr::Term() +{ + g_pPopupMgr = LTNULL; + + PopupArray::iterator iter = m_PopupArray.begin(); + + while (iter != m_PopupArray.end()) + { + debug_delete(*iter); + iter++; + } + + m_PopupArray.clear(); +} + + +POPUP* CPopupMgr::GetPopup(uint8 nID) +{ + if (nID >= m_PopupArray.size()) return LTNULL; + + return m_PopupArray[nID]; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/PopupMgr.h b/Jack/ClientShellDLL/PopupMgr.h new file mode 100644 index 00000000..0d3f627c --- /dev/null +++ b/Jack/ClientShellDLL/PopupMgr.h @@ -0,0 +1,65 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PopupMgr.h +// +// PURPOSE : Attribute file manager for popup item info +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_POPUP_MGR_H_) +#define _POPUP_MGR_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "GameButeMgr.h" +#include "ltbasetypes.h" + + +#define POPUP_DEFAULT_FILE "Attributes\\PopupItems.txt" +#define POPUP_MAX_FILE_PATH 64 + + +class CPopupMgr; +extern CPopupMgr* g_pPopupMgr; + +struct POPUP +{ + POPUP(); + uint8 nId; + char szFrame[POPUP_MAX_FILE_PATH]; + uint8 nFont; + uint8 nFontSize; + LTIntPt sSize; + LTIntPt sTextOffset; + uint16 nTextWidth; + uint32 argbTextColor; + +}; + +class CPopupMgr : public CGameButeMgr +{ +public: + CPopupMgr(); + virtual ~CPopupMgr(); + + LTBOOL Init(const char* szAttributeFile=POPUP_DEFAULT_FILE); + void Term(); + + uint16 GetNumPopups() {return m_PopupArray.size();} + + LTBOOL IsValidPopup(uint8 nID) {return nID < m_PopupArray.size();} + POPUP* GetPopup(uint8 nID); + +protected: + typedef std::vector PopupArray; + PopupArray m_PopupArray; + + + +}; + +#endif // !defined(_POPUP_MGR_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/PopupText.cpp b/Jack/ClientShellDLL/PopupText.cpp new file mode 100644 index 00000000..9b2e060a --- /dev/null +++ b/Jack/ClientShellDLL/PopupText.cpp @@ -0,0 +1,154 @@ +// PopupText.cpp: implementation of the CPopupText class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "PopupText.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "ClientWeaponMgr.h" +#include "PopupMgr.h" + + +namespace +{ +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CPopupText::CPopupText() +{ + m_bVisible = LTFALSE; + m_bUsePopupState = true; + m_bWeaponsEnabled = true; +} + + + +CPopupText::~CPopupText() +{ + Term(); +} + + +void CPopupText::Init(bool bUsePopupState/*=true*/) +{ + m_bVisible = LTFALSE; + m_bUsePopupState = bUsePopupState; + + m_Text.Create(" ",0,0,g_pInterfaceResMgr->GetFont(0),8,LTNULL); + m_Frame.Create(g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\frame.dtx"),200,320,LTTRUE); + +} + +void CPopupText::Term() +{ + if (m_bVisible) + { + Close(); + } + +} + + +void CPopupText::Close() +{ + + m_bVisible = LTFALSE; + + + //if we had our weapons out before, show them again now + if (g_pInterfaceMgr && g_pPlayerMgr && m_bWeaponsEnabled) + { + g_pPlayerMgr->GetClientWeaponMgr()->EnableWeapons(); + g_pInterfaceMgr->EnableCrosshair(LTTRUE); + } +} + +void CPopupText::Draw() +{ + if (!m_bVisible) return; + + m_Frame.Render(); + m_Text.Render(); + +} + + +void CPopupText::DisplayPopup(uint8 nPopupId, char *pText, uint32 nTextId) +{ + POPUP* pPopup = g_pPopupMgr->GetPopup(nPopupId); + if (!pPopup) return; + + CUIFont *pFont = g_pInterfaceResMgr->GetFont(pPopup->nFont); + LTIntPt pos( (640 - pPopup->sSize.x) / 2, (480 - pPopup->sSize.y) / 2 ); + + m_Frame.SetFrame(g_pInterfaceResMgr->GetTexture(pPopup->szFrame)); + m_Frame.SetSize(pPopup->sSize.x,pPopup->sSize.y); + m_Frame.SetBasePos(pos); + m_Frame.SetScale(g_pInterfaceResMgr->GetXRatio()); + + + pos.x += pPopup->sTextOffset.x; + pos.y += pPopup->sTextOffset.y; + + m_Text.SetScale(1.0f); + + // If we were given a string use it, otherwise get the string from the ID... + + if( pText ) + { + m_Text.SetString( pText ); + } + else + { + char szString[1024] = ""; + LoadString(nTextId,szString,sizeof(szString)); + + char *pBody = strchr(szString,'@'); + if (pBody) + { + ++pBody; + m_Text.SetString(pBody); + } + else + { + m_Text.SetString(szString); + } + } + + m_Text.SetFont(pFont,pPopup->nFontSize); + m_Text.SetColors(pPopup->argbTextColor,pPopup->argbTextColor,pPopup->argbTextColor); + m_Text.SetFixedWidth(pPopup->nTextWidth); + m_Text.SetBasePos(pos); + m_Text.SetScale(g_pInterfaceResMgr->GetXRatio()); + + m_bVisible = LTTRUE; + + //remember whether our weapons were out + m_bWeaponsEnabled = g_pPlayerMgr->GetClientWeaponMgr()->WeaponsEnabled(); + + if (m_bUsePopupState) + { + g_pInterfaceMgr->ChangeState(GS_POPUP); + } +} + + +void CPopupText::Update() +{ +} + +LTBOOL CPopupText::OnKeyDown(int key, int rep) +{ + // They pressed escape - close the popup + if (key == VK_ESCAPE) + { + Close(); + return LTTRUE; + } + return LTFALSE; +} diff --git a/Jack/ClientShellDLL/PopupText.h b/Jack/ClientShellDLL/PopupText.h new file mode 100644 index 00000000..9f5e2152 --- /dev/null +++ b/Jack/ClientShellDLL/PopupText.h @@ -0,0 +1,69 @@ +// PopupText.h: interface for the CPopupText class. +// +////////////////////////////////////////////////////////////////////// + +#ifndef _POPUPTEXT_INCLUDED_ +#define _POPUPTEXT_INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "LTGuiMgr.h" + +class CPopupText +{ +public: + CPopupText(); + virtual ~CPopupText(); + + void Init(bool bUsePopupState=true); + void Term(); + + + void Show(uint32 nTextId, uint8 nPopupId) { DisplayPopup( nPopupId, LTNULL, nTextId ); } + void Show(char* pText, uint8 nPopupId) { DisplayPopup( nPopupId, pText, (uint32)-1 ); } + void Update(); + void Close(); + +#ifndef __PSX2 + LTBOOL OnKeyDown(int key, int rep); +#else + LTBOOL OnInterfaceCommand(int command); +#endif + + void Draw(); + + LTBOOL IsVisible() { return m_bVisible;} + +private: + + void DisplayPopup( uint8 nPopupId, char *pText, uint32 nTextId ); + LTBOOL m_bVisible; + bool m_bUsePopupState; + + bool m_bWeaponsEnabled; + + CLTGUIFrame m_Frame; + CLTGUITextCtrl m_Text; +/* + void ClearSurfaces(); + void ShowText(int nStringId); + void CreateScaleFX(char *szFXName); + + LTRect m_rcRect; + LTIntPt m_pos; + uint32 m_dwWidth; + uint32 m_dwHeight; + + int m_nLineHeight; +#ifndef __PSX2 //*@ + int m_nKey; + + HSURFACE m_hForeSurf; + CLTGUIFont *m_pForeFont; +#else + */ +}; + +#endif // _POPUPTEXT_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ProfileMgr.cpp b/Jack/ClientShellDLL/ProfileMgr.cpp new file mode 100644 index 00000000..3744d6b9 --- /dev/null +++ b/Jack/ClientShellDLL/ProfileMgr.cpp @@ -0,0 +1,1968 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ProfileMgr.cpp +// +// PURPOSE : Manages player profiles +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" + +#include "profileMgr.h" +#include "clientutilities.h" +#include "commandids.h" +#include "interfacemgr.h" +#include "winutil.h" +#include "clientres.h" +#include "GameClientShell.h" +#include "GameSettings.h" +#include "MenuMgr.h" +#include "ClientSaveLoadMgr.h" +#include "ClientMultiplayerMgr.h" +#include "VarTrack.h" +#include "CMoveMgr.h" +#include "MsgIds.h" +#include "VersionMgr.h" + +extern CGameClientShell* g_pGameClientShell; + +#include // For _rmdir +#include "dinput.h" +#include +#include + +VarTrack g_vtMouseMinSensitivity; +VarTrack g_vtMouseMaxSensitivity; +VarTrack g_vtMouseMinInputRate; +VarTrack g_vtMouseMaxInputRate; + + +CProfileMgr* g_pProfileMgr = LTNULL; + +namespace +{ + uint32 devices[3] = + { + DEVICETYPE_KEYBOARD, + DEVICETYPE_MOUSE, + DEVICETYPE_JOYSTICK + }; + + char strDeviceName[3][256] = + { + "","","" + }; + + char szWheelUp[32] = ""; + char szWheelDown[32] = ""; + + char szJoyLookUp[32] = ""; + char szJoyLookDown[32] = ""; + char szJoyForward[32] = ""; + char szJoyBackward[32] = ""; + char szJoyLeft[32] = ""; + char szJoyRight[32] = ""; + char szJoyStrafeLeft[32] = ""; + char szJoyStrafeRight[32] = ""; + + + char szDefProfileName[16] = ""; +} + + char s_aTagName[30]; + char s_aAttName[30]; + +CommandData g_CommandArray[] = +{ + { IDS_CONTROL_FORWARD, COMMAND_ID_FORWARD, "Forward", COM_MOVE }, + { IDS_CONTROL_BACKWARD, COMMAND_ID_REVERSE, "Backward", COM_MOVE }, + { IDS_CONTROL_STRAFELEFT, COMMAND_ID_STRAFE_LEFT, "StrafeLeft", COM_MOVE }, + { IDS_CONTROL_STRAFERIGHT, COMMAND_ID_STRAFE_RIGHT, "StrafeRight", COM_MOVE }, + { IDS_CONTROL_TURNLEFT, COMMAND_ID_LEFT, "Left", COM_MOVE }, + { IDS_CONTROL_TURNRIGHT, COMMAND_ID_RIGHT, "Right", COM_MOVE }, + { IDS_CONTROL_STRAFE, COMMAND_ID_STRAFE, "Strafe", COM_MOVE }, + { IDS_CONTROL_RUN, COMMAND_ID_RUN, "Speed", COM_MOVE }, + { IDS_CONTROL_JUMP, COMMAND_ID_JUMP, "Jump", COM_MOVE }, + { IDS_CONTROL_DUCK, COMMAND_ID_DUCK, "Duck", COM_MOVE }, + { IDS_CONTROL_TURNAROUND, COMMAND_ID_TURNAROUND, "TurnAround", COM_MOVE }, + { IDS_CONTROL_LEANLEFT, COMMAND_ID_LEAN_LEFT, "LeanLeft", COM_MOVE }, + { IDS_CONTROL_LEANRIGHT, COMMAND_ID_LEAN_RIGHT, "LeanRight", COM_MOVE }, + { IDS_CONTROL_RUNLOCKTOGGLE, COMMAND_ID_RUNLOCK, "RunLock", COM_MOVE }, + { IDS_CONTROL_CROUCHTOGGLE, COMMAND_ID_DUCKLOCK, "DuckLock", COM_MOVE }, + + { IDS_CONTROL_FIRE, COMMAND_ID_FIRING, "Fire", COM_INV }, + { IDS_CONTROL_ACTIVATE, COMMAND_ID_ACTIVATE, "Activate", COM_INV }, + { IDS_CONTROL_RELOAD, COMMAND_ID_RELOAD, "Reload", COM_INV }, + { IDS_CONTROL_NEXT_AMMO, COMMAND_ID_NEXT_AMMO, "NextAmmo", COM_INV }, + { IDS_CONTROL_NEXTWEAPON, COMMAND_ID_NEXT_WEAPON, "NextWeapon", COM_INV }, + { IDS_CONTROL_PREVIOUSWEAPON, COMMAND_ID_PREV_WEAPON, "PrevWeapon", COM_INV }, + { IDS_CONTROL_LASTWEAPON, COMMAND_ID_LASTWEAPON, "LastWeapon", COM_INV }, + { IDS_CONTROL_MOVE_BODY, COMMAND_ID_MOVE_BODY, "MoveBody", COM_INV }, + { IDS_CONTROL_MANUALAIM, COMMAND_ID_MANUALAIM, "ManualAim", COM_INV }, + + { IDS_CONTROL_LOOKUP, COMMAND_ID_LOOKUP, "LookUp", COM_VIEW }, + { IDS_CONTROL_LOOKDOWN, COMMAND_ID_LOOKDOWN, "LookDown", COM_VIEW }, + { IDS_CONTROL_CENTERVIEW, COMMAND_ID_CENTERVIEW, "CenterView", COM_VIEW }, + { IDS_CONTROL_ZOOM_IN, COMMAND_ID_ZOOM_IN, "ZoomIn", COM_VIEW }, + + { IDS_CONTROL_MISSION, COMMAND_ID_MISSION, "Mission", COM_MISC }, + + { IDS_CONTROL_COMPASS, COMMAND_ID_COMPASS, "CompassToggle", COM_MISC }, + { IDS_CONTROL_RADIO, COMMAND_ID_RADIO, "Radio", COM_MISC }, + + { IDS_CONTROL_SAY, COMMAND_ID_MESSAGE, "SendMessage", COM_MISC }, + { IDS_CONTROL_TEAM_SAY, COMMAND_ID_TEAM_MESSAGE, "TeamMessage", COM_MISC }, + + // This control must always remain as the last one in the array + { IDS_CONTROL_UNASSIGNED, COMMAND_ID_UNASSIGNED, "unassigned", COM_MISC } +}; + +const int g_kNumCommands = sizeof(g_CommandArray) / sizeof(g_CommandArray[0]) - 1; + +//Called to write out the display.cfg file which holds data for restoring the video +//mode the next time the game is run +void SaveDisplaySettings() +{ + //save out the display configuration + const char* pszValsToSave[] = { "ScreenWidth", + "ScreenHeight", + "BitDepth", + "HardwareCursor", + "VSyncOnFlip", + "GammaR", + "GammaG", + "GammaB" + }; + + uint32 nNumVals = sizeof(pszValsToSave) / sizeof(pszValsToSave[0]); + g_pLTClient->WriteConfigFileFields("display.cfg", nNumVals, pszValsToSave); +} + +//------------------------------------------------------------------------------------------- +// GetCommandName +// +// Retrieves the command name from a command number +// Arguments: +// nCommand - command number +// Return: +// String containing the name of the action +//------------------------------------------------------------------------------------------- + +char* GetCommandName(int nCommand) +{ + static char buffer[128]; + + for (int i=0; i < g_kNumCommands; i++) + { + if (g_CommandArray[i].nCommandID == nCommand) + { + SAFE_STRCPY(buffer, g_CommandArray[i].szActionString); + } + } + + SAFE_STRCPY(buffer, "Error in CommandName()!"); + return buffer; +} + +const CommandData* GetCommandData(int nIndex) +{ + if (nIndex < 0 || nIndex >= g_kNumCommands) + return LTNULL; + return &g_CommandArray[nIndex]; +} + + +CUserProfile::CUserProfile() +{ + m_sName = ""; + m_bInitted = LTFALSE; + m_pCryptKey = LTNULL; + + //controls + m_bInvertY = LTFALSE; + m_bMouseLook = LTFALSE; + m_nInputRate = 0; + m_nSensitivity = 0; + + m_bAutoCenter = LTFALSE; + m_nNormalTurn = 15; + m_nFastTurn = 23; + m_nLookUp = 25; + + m_nVehicleTurn = 100; + + m_bUseJoystick = LTFALSE; + memset(m_nAxis,0,sizeof(m_nAxis)); + + //game options + m_nDifficulty = 1; + m_nSubtitles = 0; + m_bGore = LTFALSE; + m_bAlwaysRun = LTTRUE; + m_nLayout = 0; + m_nHeadBob = 0; + m_nWeaponSway = 0; + m_nMsgDur = 0; + m_bAutoWeaponSwitch = LTFALSE; + m_bLoadScreenTips = LTFALSE; + m_bVehicleContour = LTFALSE; + + m_bCrosshair = LTTRUE; + m_CrosshairR = 0x1F; + m_CrosshairG = 0xFF; + m_CrosshairB = 0xFF; + m_CrosshairA = 0xBF; + m_nStyle = 0; + m_bDynamic = 1; + + + //sound + m_nSoundVolume=SOUND_DEFAULT_VOL; + m_nMusicVolume=MUSIC_DEFAULT_VOL; + + + //display + m_bHardwareCursor = LTTRUE; + m_bVSync = LTTRUE; + m_nScreenWidth = 0; + m_nScreenHeight = 0; + m_nScreenDepth = 0; + + //performance + memset(&m_sPerformance,0,sizeof(m_sPerformance)); + + //multi player + m_nCPPlayerModel = 0; + m_nDMPlayerModel = 0; + memset(m_nPlayerSkills,0,sizeof(m_nPlayerSkills)); + m_nBandwidthClient = 3; + m_nBandwidthClientCustom = g_BandwidthClient[m_nBandwidthClient]; + m_nClientPort = 27888; + m_nDifficulty = 1; + + m_nSaveVersion = 0; +} + +static bool CreatePlayerGuid( char* pszPlayerGuid, int nSize ) +{ + // Check inputs. + if( !pszPlayerGuid ) + { + ASSERT( false ); + return false; + } + + // Clear out the result. + pszPlayerGuid[0] = 0; + + // Create the guid. + GUID guid; + if( !SUCCEEDED( CoCreateGuid( &guid ))) + return false; + + // Write the guid into the string. + _snprintf( pszPlayerGuid, nSize, "%X-%X-%X-%X%X-%X%X%X%X%X%X", guid.Data1, guid.Data2, + guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], + guid.Data4[5], guid.Data4[6], guid.Data4[7] ); + pszPlayerGuid[nSize-1] = 0; + + if( !pszPlayerGuid[0] ) + return false; + + return true; +} + +LTBOOL CUserProfile::Init(const std::string& profileName, LTBOOL bCreate) +{ + std::string fn = GetProfileFile( profileName.c_str( )); + std::string dfn = PROFILE_DIR; + dfn += "default.prf"; + + g_vtMouseMinSensitivity.Init(g_pLTClient, "MouseSensitivityMin", NULL, 0.0); + g_vtMouseMaxSensitivity.Init(g_pLTClient, "MouseSensitivityMax", NULL, 10.0); + g_vtMouseMinInputRate.Init(g_pLTClient, "MouseInputRateMin", NULL, 0.0); + g_vtMouseMaxInputRate.Init(g_pLTClient, "MouseInputRateMax", NULL, 40.0); + + LTBOOL bRet = LTFALSE; + + m_buteMgr.Term(); + + if (m_pCryptKey) + { + bRet = m_buteMgr.Parse(fn.c_str(), m_pCryptKey); + } + else + { + bRet = m_buteMgr.Parse(fn.c_str()); + } + + // Handle case where we had a previous profile file. + if (bRet) + { + m_sName = profileName; + } + // Handle brand new profile. + else + { + //clear out any old data + m_buteMgr.Term(); + + // No previous profile and not told to create one. + if (!bCreate) + return LTFALSE; + + m_sName = profileName; + + if (m_pCryptKey) + { + bRet = m_buteMgr.Parse(dfn.c_str(), m_pCryptKey); + } + else + { + + bRet = m_buteMgr.Parse(dfn.c_str()); + } + + if (!bRet) + return LTFALSE; + } + + // Since we changed our profile, we'll need to re-init the saveloadmgr, which + // uses the profile name. + if( !g_pClientSaveLoadMgr->Init( m_sName.c_str( ), IsMultiplayerGame() )) + return LTFALSE; + + Load( ); + + if (m_buteMgr.Exist("Settings")) + { + LoadPerformance(false);//defer applying now, because ApplyPerformance() will do it below + } + else + { + g_pPerformanceMgr->GetPerformanceOptions(&m_sPerformance); + } + + ApplyPerformance(false); + + + m_bInitted = LTTRUE; + + + return LTTRUE; + +} + +void CUserProfile::Load() +{ + m_nSaveVersion = m_buteMgr.GetInt( "Version", "VersionNumber", 0 ); + + LoadControls(); + LoadMultiplayer(); + LoadGameOptions(); + LoadSound(true); +} + +void CUserProfile::LoadControls() +{ + + char temp[256]; + memset(m_bindings,0,sizeof(m_bindings)); + m_nNumBindings = 0; + + + strcpy(s_aTagName,"Bindings"); + for (int c = 0; c < g_kNumCommands; c++) + { + + int n = m_nNumBindings; + m_nNumBindings++; + + m_bindings[n].nStringID = g_CommandArray[c].nStringID; + SAFE_STRCPY(m_bindings[n].szAction,g_CommandArray[c].szActionString); + + for( int nDev = 0; nDev < NUM_DEVICES; nDev++ ) + { + m_bindings[n].nDeviceObjectId[nDev] = 0; + } + + strcpy(m_bindings[n].strTriggerName[0],""); + + if (g_CommandArray[c].nCommandID < 0) + { + strcpy(m_bindings[n].strRealName[0]," "); + } + else + { + m_buteMgr.GetString(s_aTagName, m_bindings[n].szAction,temp,sizeof(temp)); + + char *pTok = strtok(temp,"@"); + if (pTok) + strcpy(m_bindings[n].strRealName[0],pTok); + + pTok = strtok(LTNULL,"@"); + if (pTok) + strcpy(m_bindings[n].strRealName[1],pTok); + + pTok = strtok(LTNULL,"@"); + if (pTok) + strcpy(m_bindings[n].strRealName[2],pTok); + } + + } + + strcpy(s_aTagName,"Controls"); + m_bInvertY = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"InvertMouse",0); + m_bMouseLook = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"MouseLook",1); + m_nInputRate = m_buteMgr.GetInt(s_aTagName,"InputRate",12); + m_nSensitivity = m_buteMgr.GetInt(s_aTagName,"Sensitivity",5); + + m_nNormalTurn = m_buteMgr.GetInt(s_aTagName,"NormalTurn",15); + m_nFastTurn = m_buteMgr.GetInt(s_aTagName,"FastTurn",23); + m_nLookUp = m_buteMgr.GetInt(s_aTagName,"LookUp",25); + m_bAutoCenter = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"AutoCenter",0); + + m_nVehicleTurn = m_buteMgr.GetInt(s_aTagName,"VehicleTurnRate",100); + + m_bUseJoystick = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"UseJoystick",0); + + for (int a = 0; a < g_pProfileMgr->GetNumAxis(); a++) + { + CDeviceAxisData *pAxisData = g_pProfileMgr->GetAxisData(a); + uint8 nDef = 0; + + if (pAxisData->m_nType == CONTROLTYPE_YAXIS || pAxisData->m_nType == CONTROLTYPE_RYAXIS) + { + nDef = 2; + } + + char szAxis[8] = ""; + sprintf(szAxis,"Axis%d",a); + m_nAxis[a] = (uint8)m_buteMgr.GetInt(s_aTagName,szAxis,nDef); + + } + + for (a = 0; a < g_pProfileMgr->GetNumPOV(); a++) + { + CDevicePOVData *pPOVData = g_pProfileMgr->GetPOVData(a); + char szPOV[8] = ""; + sprintf(szPOV,"POV%d",a); + m_nPOV[a] = (uint8)m_buteMgr.GetInt(s_aTagName,szPOV,0); + + } + + ApplyControls(); + ApplyBindings(); + ApplyMouse(); + ApplyKeyboard(); + ApplyJoystick(); + +} + + +void CUserProfile::LoadMultiplayer() +{ + strcpy(s_aTagName,"Multiplayer"); + + char szStr[64]; + m_buteMgr.GetString(s_aTagName, "PlayerName",m_sName.c_str(),szStr,sizeof(szStr)); + m_sPlayerName = FixPlayerName(szStr); + if (!m_sPlayerName.length()) + { + m_sPlayerName = LoadTempString(IDS_PLAYER); + } + + m_buteMgr.GetString( s_aTagName, "Guid", "", szStr, sizeof( szStr )); + // If they didn't have a guid, create one. + if( !m_buteMgr.Success( )) + { + CreatePlayerGuid( szStr, ARRAY_LEN( szStr )); + } + m_sPlayerGuid = szStr; + + m_nCPPlayerModel = (uint8)m_buteMgr.GetInt(s_aTagName,"PlayerModel",0); + m_nDMPlayerModel = (uint8)m_buteMgr.GetInt(s_aTagName,"DMPlayerModel",0); + + + //see if the MP skills settings are valid + sprintf(s_aAttName,"PlayerSkills0"); + int nTest = m_buteMgr.GetInt(s_aTagName,s_aAttName,-1); + + + if (nTest >= 0) + { + //if valid, read 'em in + for (uint8 i = 0; i < kNumSkills; i++) + { + eSkill skl = (eSkill)i; + if (g_pSkillsButeMgr->IsAvailable(skl) ) + { + sprintf(s_aAttName,"PlayerSkills%d",i); + int nDef = (int)g_pSkillsButeMgr->GetDefaultMultiplayerLevel(skl); + m_nPlayerSkills[i] = (uint8)m_buteMgr.GetInt(s_aTagName,s_aAttName,nDef); + } + else + m_nPlayerSkills[i] = 0; + } + } + else + { + //if the first was not valid, get 'em from the SkillsButeMgr + for (uint8 i = 0; i < kNumSkills; i++) + { + eSkill skl = (eSkill)i; + if (g_pSkillsButeMgr->IsAvailable(skl) ) + { + m_nPlayerSkills[i] = (uint8)g_pSkillsButeMgr->GetDefaultMultiplayerLevel(skl); + } + else + m_nPlayerSkills[i] = 0; + } + } + + m_nBandwidthClient = (uint8)m_buteMgr.GetInt(s_aTagName,"BandwidthClient",3); + m_nBandwidthClientCustom = (uint16)m_buteMgr.GetInt(s_aTagName,"BandwidthClientCustom",g_BandwidthClient[3]); + m_nClientPort = (uint16)m_buteMgr.GetInt(s_aTagName,"ClientPort",27888); + + m_bMPRadar = m_buteMgr.GetBool( s_aTagName, "MPRadar", true ); + + // Set the default properties on the session name and password. + m_ServerGameOptions.m_sPassword = LoadTempString( IDS_PASSWORD_DEFAULT ); + m_ServerGameOptions.m_sScmdPassword = LoadTempString( IDS_PASSWORD_DEFAULT ); + + // Load the options from the bute file. + if( !m_ServerGameOptions.LoadFromBute( m_buteMgr )) + { + ASSERT( !"CUserProfile::LoadMultiplayer: Could not read multiplayer info from profile." ); + return; + } + + // Make sure the name of the profile is correct. + m_ServerGameOptions.m_sProfileName = m_sName; + + ApplyMultiplayer(false); +} + + +void CUserProfile::LoadGameOptions() +{ + strcpy(s_aTagName,"Game"); + + m_nDifficulty = m_buteMgr.GetInt(s_aTagName,"Difficulty",2); + m_nSubtitles = (uint8)m_buteMgr.GetInt(s_aTagName,"Subtitles",0); + m_bGore = (!g_pVersionMgr->IsLowViolence() && (m_buteMgr.GetInt(s_aTagName,"Gore",0) > 0)); + m_bAlwaysRun = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"AlwaysRun",1); + m_nLayout = m_buteMgr.GetInt(s_aTagName,"HUDLayout",0); + m_nHeadBob = m_buteMgr.GetInt(s_aTagName,"HeadBob",0); + m_nWeaponSway = m_buteMgr.GetInt(s_aTagName,"WeaponSway",0); + m_nMsgDur = m_buteMgr.GetInt(s_aTagName,"MessageDur",0); + m_bAutoWeaponSwitch = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"AutoWeaponSwitch",1); + m_bLoadScreenTips = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"LoadScreenTips",1); + m_bVehicleContour = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"VehicleContour",1); + + m_bCrosshair = (LTBOOL)m_buteMgr.GetInt(s_aTagName,"UseCrosshair",1); + m_CrosshairR = (uint32)m_buteMgr.GetInt(s_aTagName,"CrosshairRed",0x1F); + m_CrosshairG = (uint32)m_buteMgr.GetInt(s_aTagName,"CrosshairGreen",0xFF); + m_CrosshairB = (uint32)m_buteMgr.GetInt(s_aTagName,"CrosshairBlue",0xFF); + m_CrosshairA = (uint8)m_buteMgr.GetInt(s_aTagName,"CrosshairAlpha",0xBF); + m_nStyle = m_buteMgr.GetInt(s_aTagName,"CrosshairStyle",0); + m_bDynamic = m_buteMgr.GetInt(s_aTagName,"CrosshairDynamic",1); + + m_bSPRadar = m_buteMgr.GetBool( s_aTagName, "SPRadar", true ); + + ApplyGameOptions(); + ApplyCrosshair(); + +} + +void CUserProfile::LoadSound(bool bApply) +{ + strcpy(s_aTagName,"Sound"); + + + m_nSoundVolume = m_buteMgr.GetInt(s_aTagName,"soundvolume",SOUND_DEFAULT_VOL); + m_nMusicVolume = m_buteMgr.GetInt(s_aTagName,"musicvolume",MUSIC_DEFAULT_VOL); + m_fWeaponsSoundMultiplier = m_buteMgr.GetFloat( s_aTagName, "weaponssoundmultiplier", WEAPONS_DEFAULT_MULTIPLIER ); + m_fSpeechSoundMultiplier = m_buteMgr.GetFloat( s_aTagName, "speechsoundmultiplier", SPEECH_DEFAULT_MULTIPLIER ); + m_fDefaultSoundMultiplier = m_buteMgr.GetFloat( s_aTagName, "defaultsoundmultiplier", DEFAULT_DEFAULT_MULTIPLIER ); + + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + if (!(dwAdvancedOptions & AO_MUSIC)) + m_nMusicVolume = MUSIC_MIN_VOL; + + if (bApply) + ApplySound(); + +} + +void CUserProfile::LoadPerformance(bool bApply) +{ + + g_pPerformanceMgr->LoadPerformanceOptions(m_buteMgr,&m_sPerformance); + + if (bApply) + ApplyPerformance(false); + + +} + + +void CUserProfile::Save(bool bForceClose /*= false*/) +{ + m_nSaveVersion = g_pVersionMgr->GetSaveVersion( ); + m_buteMgr.SetInt( "Version","VersionNumber", m_nSaveVersion ); + + SaveControls(); + SaveMultiplayer(); + SaveGameOptions(); + SaveSound(); + SavePerformance(); + + std::string fn = GetProfileFile( m_sName.c_str( )); + m_buteMgr.Save(fn.c_str()); + + + if (bForceClose) + { + std::string name = m_sName.c_str( ); + Term(); + Init(name,false); + } +} + +void CUserProfile::SaveControls() +{ + //************************ save bindings + strcpy(s_aTagName,"Bindings"); + for (int c = 0; c < g_kNumCommands; c++) + { + if ( g_CommandArray[c].nCommandID < 0 ) + continue; + + CBindingData *pData = FindBinding(c); + if (pData) + { + + char szStr[128] = ""; + for (int d = 0; d < 3; d++) + { + if (pData->strRealName[d] && pData->strRealName[d][0]) + { + strcat(szStr,pData->strRealName[d]); + } + else + { + strcat(szStr," "); + } + if (d < 2) + strcat(szStr,"@"); + } + + m_buteMgr.SetString(s_aTagName, pData->szAction, szStr); + + } + } + + //************************ save controls + strcpy(s_aTagName,"Controls"); + + //save mouse + m_buteMgr.SetInt(s_aTagName,"InvertMouse",(int)m_bInvertY); + m_buteMgr.SetInt(s_aTagName,"MouseLook",(int)m_bMouseLook); + m_buteMgr.SetInt(s_aTagName,"InputRate",m_nInputRate); + m_buteMgr.SetInt(s_aTagName,"Sensitivity",m_nSensitivity); + m_buteMgr.SetInt(s_aTagName,"VehicleTurnRate",m_nVehicleTurn); + + + m_buteMgr.SetInt(s_aTagName,"NormalTurn",m_nNormalTurn); + m_buteMgr.SetInt(s_aTagName,"FastTurn",m_nFastTurn); + m_buteMgr.SetInt(s_aTagName,"LookUp",m_nLookUp); + m_buteMgr.SetInt(s_aTagName,"AutoCenter",(int)m_bAutoCenter); + + m_buteMgr.SetInt(s_aTagName,"UseJoystick",(int)m_bUseJoystick); + + for (int a = 0; a < g_pProfileMgr->GetNumAxis(); a++) + { + char szAxis[8] = ""; + sprintf(szAxis,"Axis%d",a); + m_buteMgr.SetInt(s_aTagName,szAxis,(int)m_nAxis[a]); + + } + +} + + +void CUserProfile::SaveMultiplayer() +{ + strcpy(s_aTagName,"Multiplayer"); + m_buteMgr.SetString(s_aTagName, "PlayerName",m_sPlayerName.c_str()); + m_buteMgr.SetString( s_aTagName, "Guid", m_sPlayerGuid.c_str( )); + m_buteMgr.SetInt(s_aTagName,"PlayerModel",(int)m_nCPPlayerModel); + m_buteMgr.SetInt(s_aTagName,"DMPlayerModel",(int)m_nDMPlayerModel); + + for (uint8 i = 0; i < kNumSkills; i++) + { + sprintf(s_aAttName,"PlayerSkills%d",i); + m_buteMgr.SetInt(s_aTagName,s_aAttName,(int)m_nPlayerSkills[i]); + } + + m_buteMgr.SetInt(s_aTagName,"BandwidthClient",(int)m_nBandwidthClient); + m_buteMgr.SetInt(s_aTagName,"BandwidthClientCustom",(int)m_nBandwidthClientCustom); + m_buteMgr.SetInt(s_aTagName,"ClientPort",(int)m_nClientPort); + + m_buteMgr.SetBool( s_aTagName, "MPRadar", m_bMPRadar ); + + m_ServerGameOptions.SaveToBute( m_buteMgr ); +} + +void CUserProfile::SaveGameOptions() +{ + strcpy(s_aTagName,"Game"); + m_buteMgr.SetInt(s_aTagName,"Difficulty",m_nDifficulty); + m_buteMgr.SetInt(s_aTagName,"Subtitles",m_nSubtitles); + m_buteMgr.SetInt(s_aTagName,"Gore",(int)(!g_pVersionMgr->IsLowViolence() && m_bGore)); + m_buteMgr.SetInt(s_aTagName,"AlwaysRun",(int)m_bAlwaysRun); + m_buteMgr.SetInt(s_aTagName,"HUDLayout",m_nLayout); + m_buteMgr.SetInt(s_aTagName,"HeadBob",m_nHeadBob); + m_buteMgr.SetInt(s_aTagName,"WeaponSway",m_nWeaponSway); + m_buteMgr.SetInt(s_aTagName,"MessageDur",m_nMsgDur); + m_buteMgr.SetInt(s_aTagName,"AutoWeaponSwitch",(int)m_bAutoWeaponSwitch); + m_buteMgr.SetInt(s_aTagName,"LoadScreenTips",(int)m_bLoadScreenTips); + m_buteMgr.SetInt(s_aTagName,"VehicleContour",(int)m_bVehicleContour); + + + m_buteMgr.SetInt(s_aTagName,"UseCrosshair",m_bCrosshair); + m_buteMgr.SetInt(s_aTagName,"CrosshairRed",(int)m_CrosshairR); + m_buteMgr.SetInt(s_aTagName,"CrosshairGreen",(int)m_CrosshairG); + m_buteMgr.SetInt(s_aTagName,"CrosshairBlue",(int)m_CrosshairB); + m_buteMgr.SetInt(s_aTagName,"CrosshairAlpha",(int)m_CrosshairA); + m_buteMgr.SetInt(s_aTagName,"CrosshairStyle",m_nStyle); + m_buteMgr.SetInt(s_aTagName,"CrosshairDynamic",m_bDynamic); + + m_buteMgr.SetBool( s_aTagName, "SPRadar", m_bSPRadar ); +} + + +void CUserProfile::SaveSound() +{ + strcpy(s_aTagName,"Sound"); + + m_buteMgr.SetInt(s_aTagName,"soundvolume",m_nSoundVolume); + m_buteMgr.SetInt(s_aTagName,"musicvolume",m_nMusicVolume); + m_buteMgr.SetFloat(s_aTagName,"defaultsoundmultiplier",m_fDefaultSoundMultiplier); + m_buteMgr.SetFloat(s_aTagName,"weaponssoundmultiplier", m_fWeaponsSoundMultiplier); + m_buteMgr.SetFloat(s_aTagName,"speechsoundmultiplier", m_fSpeechSoundMultiplier); + +} + +void CUserProfile::SavePerformance() +{ + g_pPerformanceMgr->SavePerformanceOptions(m_buteMgr,&m_sPerformance); +} + +void CUserProfile::Term() +{ + m_buteMgr.Term(); + m_bInitted = LTFALSE; +} + +CBindingData* CUserProfile::FindBinding(int commandIndex) +{ + int n = 0; + while (n < m_nNumBindings && stricmp(m_bindings[n].szAction,g_CommandArray[commandIndex].szActionString) != 0) + n++; + + if (n >= m_nNumBindings) + return LTNULL; + return &m_bindings[n]; +} + +char const* CUserProfile::GetDeviceName( uint32 nDeviceIndex ) +{ + if( nDeviceIndex > 2 ) + return NULL; + + return strDeviceName[nDeviceIndex]; +} + + +//************************************************************************** +//functions to read settings from the profile and write them to the console +//************************************************************************** + + //take bindings from profile and apply them to the game +void CUserProfile::ApplyBindings() +{ + g_pProfileMgr->ClearBindings(); + + for (int d = 0; d < 3; d++) + { + CBindingData *pWheelUp = LTNULL; + CBindingData *pWheelDown = LTNULL; + for (int c = 0; c < g_kNumCommands; c++) + { + CBindingData *pData = FindBinding(c); + if (pData) + { + + if (devices[d] == DEVICETYPE_MOUSE && stricmp(pData->strRealName[d],"#U") == 0) + { + pWheelUp = pData; + } + else if (devices[d] == DEVICETYPE_MOUSE && stricmp(pData->strRealName[d],"#D") == 0) + { + pWheelDown = pData; + } + else if (pData->strRealName[d][0] && pData->strRealName[d][0] != ' ') + { + // Set the binding + g_pLTClient->AddBinding(strDeviceName[d], pData->strRealName[d],pData->szAction,0.0f,0.0f); + + } + } + + + } + if (devices[d] == DEVICETYPE_MOUSE) + { + char tempStr[512] = ""; + if (pWheelUp || pWheelDown) + { + // Set the mouse wheel binding + char upStr[32] = ""; + if (pWheelUp) + { + SAFE_STRCPY(upStr,pWheelUp->szAction); + } + char downStr[32] = ""; + if (pWheelDown) + { + SAFE_STRCPY(downStr,pWheelDown->szAction); + } + + g_pLTClient->AddBinding(strDeviceName[d],"##z-axis",upStr,0.10f,255.0f); + g_pLTClient->AddBinding(strDeviceName[d],"##z-axis",downStr,-0.10f,-255.0f); + } + + } + + } +} + + +void CUserProfile::ApplyMouse() +{ + WriteConsoleInt("MouseInvertY",m_bInvertY); + WriteConsoleInt("MouseLook",m_bMouseLook); + WriteConsoleFloat("MouseSensitivity",(float)m_nSensitivity); + WriteConsoleFloat("InputRate",(float)m_nInputRate); + + float fTemp = (float)m_nVehicleTurn / 100.0f; + WriteConsoleFloat("VehicleTurnRateScale",fTemp); + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + pSettings->ImplementMouseSensitivity(); +} + +void CUserProfile::ApplyKeyboard() +{ + if (!m_bMouseLook) + WriteConsoleInt("AutoCenter",(int)m_bAutoCenter); + + float fTemp = (float)m_nNormalTurn / 10.0f; + WriteConsoleFloat("NormalTurnRate",fTemp); + + fTemp = (float)m_nFastTurn / 10.0f; + WriteConsoleFloat("FastTurnRate",fTemp); + + fTemp = (float)m_nLookUp / 10.0f; + WriteConsoleFloat("LookUpRate",fTemp); + + fTemp = (float)m_nVehicleTurn / 100.0f; + WriteConsoleFloat("VehicleTurnRateScale",fTemp); +} + +void CUserProfile::ApplyMultiplayer(bool bLAN) +{ + // Use max on LAN games + float fMinBandwidth = (bLAN) ? k_fMaxBandwidth : 0.0f; + + //set mp console vars here + if (m_nBandwidthClient < eBandwidth_Custom) + WriteConsoleFloat("BandwidthTargetClient",LTCLAMP(((float)g_BandwidthClient[m_nBandwidthClient] * 1024.0f), fMinBandwidth, k_fMaxBandwidth) ); + else + WriteConsoleFloat("BandwidthTargetClient",LTCLAMP(((float)m_nBandwidthClientCustom * 1024.0f), fMinBandwidth, k_fMaxBandwidth) ); + +} + +void CUserProfile::ApplyGameOptions() +{ + int nGore = (int)(!g_pVersionMgr->IsLowViolence() && m_bGore); + WriteConsoleInt("Gore", nGore); + WriteConsoleInt("Subtitles",m_nSubtitles); + WriteConsoleInt("HUDLayout",m_nLayout); + WriteConsoleInt("Difficulty",m_nDifficulty); + + GameDifficulty eDiff = GD_NORMAL; + if (IsDifficultyGameType()) + { + eDiff = (GameDifficulty)m_nDifficulty; + } + g_pGameClientShell->SetDifficulty(eDiff); + + + + WriteConsoleFloat("HeadBob",((LTFLOAT)m_nHeadBob / 10.0f)); + WriteConsoleFloat("WeaponSway",((LTFLOAT)m_nWeaponSway / 10.0f)); + WriteConsoleFloat("MessageDuration",((LTFLOAT)m_nMsgDur / 10.0f)); + + WriteConsoleInt("AutoWeaponSwitch",(int)m_bAutoWeaponSwitch); + WriteConsoleInt("VehicleContour",(int)m_bVehicleContour); + + g_pMoveMgr->SetRunLock(m_bAlwaysRun); + + g_pGameClientShell->UpdateGoreSettings(); +} + +void CUserProfile::ApplyCrosshair() +{ + WriteConsoleInt("CrosshairRed",m_CrosshairR ); + WriteConsoleInt("CrosshairGreen",m_CrosshairG ); + WriteConsoleInt("CrosshairBlue",m_CrosshairB ); + WriteConsoleInt("CrosshairAlpha",m_CrosshairA ); + + WriteConsoleInt("CrosshairStyle", m_nStyle); + WriteConsoleInt("CrosshairDynamic", m_bDynamic ); + g_pInterfaceMgr->EnableCrosshair(m_bCrosshair); +} + +void CUserProfile::ApplySound() +{ + + WriteConsoleInt("soundvolume",m_nSoundVolume); + WriteConsoleFloat( "weaponssoundmultiplier", m_fWeaponsSoundMultiplier ); + WriteConsoleFloat( "defaultsoundmultiplier", m_fDefaultSoundMultiplier ); + WriteConsoleFloat( "speechsoundmultiplier", m_fSpeechSoundMultiplier ); + ImplementSoundVolume(); + + // Set the music quality... + + bool bQuality = (m_sPerformance.nSettings[kPerform_MusicQuality] > 0); + WriteConsoleInt("MusicQuality",(int)bQuality); + g_pGameClientShell->GetMusic()->SetQuality(!!bQuality); + + //if we haven't gotten to the menus yet, don't start the music yet... + if (g_pInterfaceMgr->HasEnteredScreenState()) + { + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + LTBOOL bMusicOn = (m_nMusicVolume > MUSIC_MIN_VOL) && (dwAdvancedOptions & AO_MUSIC) && GetConsoleInt("MusicActive",0); + WriteConsoleInt("MusicActive",(int)bMusicOn); + if (bMusicOn != g_pGameClientShell->GetMusic()->IsPlaying()) + { + if (bMusicOn) + { + // [KLS 8/11/02] SetupMusic will handle turning on the + // music and making sure it plays the appropriate music. + g_pInterfaceMgr->SetupMusic(); + } + else + { + g_pGameClientShell->GetMusic()->Term(); + + } + } + } + + ImplementMusicVolume(); +} + + +void CUserProfile::ImplementSoundVolume() +{ + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetVolume(m_nSoundVolume); + + // set up the sound volume classes for the game + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetSoundClassMultiplier( WEAPONS_SOUND_CLASS, m_fWeaponsSoundMultiplier ); + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetSoundClassMultiplier( SPEECH_SOUND_CLASS, m_fSpeechSoundMultiplier, false ); + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetSoundClassMultiplier( DEFAULT_SOUND_CLASS, m_fDefaultSoundMultiplier ); + + // now have the sound manager update any playing sounds + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->UpdateVolumeSettings(); +} + + +void CUserProfile::ImplementMusicVolume() +{ + WriteConsoleInt("musicvolume",m_nMusicVolume); + g_pGameClientShell->GetMusic()->SetMenuVolume(m_nMusicVolume); +} + +void CUserProfile::ApplyDisplay() +{ + + LTBOOL initVS = (LTBOOL)GetConsoleInt("VSyncOnFlip",1); + WriteConsoleInt("HardwareCursor",m_bHardwareCursor); + WriteConsoleInt("VSyncOnFlip",m_bVSync); + + WriteConsoleFloat("GammaR",m_fGamma); + WriteConsoleFloat("GammaG",m_fGamma); + WriteConsoleFloat("GammaB",m_fGamma); + + bool bRestart = (initVS != m_bVSync); +// if (bRestart) +// { +// g_pLTClient->CPrint("CUserProfile::ApplyDisplay() : restart because of VSync change"); +// } + + RMode currentMode; + if (g_pGameClientShell->IsRendererInitted() && g_pLTClient->GetRenderMode(¤tMode) == LT_OK) + { + // Build the list of render modes + RMode *pRenderModes=g_pLTClient->GetRenderModes(); + RMode *pMode=pRenderModes; + LTBOOL bFound = LTFALSE; + while (pMode != LTNULL && !bFound) + { + bFound = ( pMode->m_Width == m_nScreenWidth && + pMode->m_Height == m_nScreenHeight && + pMode->m_BitDepth == m_nScreenDepth && + pMode->m_bHWTnL == currentMode.m_bHWTnL); + if (!bFound) + pMode = pMode->m_pNext; + } + + + if (pMode && !IsRendererEqual(pMode,¤tMode)) + { + //switch renderers + g_pInterfaceResMgr->DrawMessage(IDS_REINITIALIZING_RENDERER); + g_pLTClient->SetRenderMode(pMode); + g_pInterfaceMgr->ScreenDimsChanged(); + + //update the game camera to have the new dimensions + g_pLTClient->SetCameraRect(g_pGameClientShell->GetPlayerMgr()->GetCamera(), LTTRUE, 0, 0, pMode->m_Width, pMode->m_Height); +// if (bRestart) +// g_pLTClient->CPrint("CUserProfile::ApplyDisplay() : cancel restart because of mode change"); + bRestart = false; + } + + // Free the linked list of render modes + g_pLTClient->RelinquishRenderModes(pRenderModes); + } + + + //make sure to save out these changed settings so that they will be applied next + //time we run + SaveDisplaySettings(); + + if (bRestart) + { + // Set the renderer mode + g_pInterfaceMgr->SetSwitchingRenderModes(LTTRUE); +// g_pLTClient->CPrint("CUserProfile::ApplyDisplay() : restart"); + g_pLTClient->RunConsoleString("RestartRender"); + g_pInterfaceMgr->SetSwitchingRenderModes(LTFALSE); + + //force this because restarting the renderer may affect the cursor + g_pCursorMgr->UseHardwareCursor(m_bHardwareCursor,true); + } + +} + +void CUserProfile::SetPerformanceCfg(char *pszCfg) +{ + if (!pszCfg || !pszCfg[0]) return; + + g_pPerformanceMgr->SetPerformanceCfg(pszCfg); + g_pPerformanceMgr->GetPerformanceOptions(&m_sPerformance); + SavePerformance(); + ApplyPerformance(false); +} + +void CUserProfile::ApplyPerformance(bool bForceDisplay) +{ + g_pPerformanceMgr->SetPerformanceOptions(&m_sPerformance); + + //other settings affected by performance + //if we are going to force the display resolution to match out overall performance level, + // we should ignore the current resolution when determining what our level is. + uint8 nOverall = g_pPerformanceMgr->GetPerformanceCfg(bForceDisplay); + SetSound(); + SetDisplay(); + + DebugCPrint(1,"CUserProfile::ApplyPerformance(%d) : nOverall = %d",bForceDisplay,nOverall); + switch (nOverall) + { + case 0: + if (m_nScreenWidth != 640) + { + m_nScreenWidth = 640; + m_nScreenHeight = 480; + ApplyDisplay(); + } + break; + case 1: + if (m_nScreenWidth != 800) + { + m_nScreenWidth = 800; + m_nScreenHeight = 600; + ApplyDisplay(); + } + + break; + + case 2: + if (m_nScreenWidth < 1024) + { + m_nScreenWidth = 1024; + m_nScreenHeight = 768; + ApplyDisplay(); + } + break; + + } + ApplySound(); + + if (g_pLTClient->IsConnected()) + SendPerformanceMsg(); +} + + +void CUserProfile::SendPerformanceMsg() +{ + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PERFORMANCE ); + cMsg.Writeuint8( m_sPerformance.nSettings[kPerform_EnvironmentalDetail] ); + cMsg.Writebool( (m_sPerformance.nSettings[kPerform_PreCacheAssets] > 0) ); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + +} + + +void CUserProfile::ApplyControls() +{ + + WriteConsoleInt("UseJoystick",(int)m_bUseJoystick); +} + +void CUserProfile::ApplyJoystick() +{ + uint32 devType = DEVICETYPE_UNKNOWN; + if (g_pGameClientShell->HasGamepad()) + devType = DEVICETYPE_GAMEPAD; + else if (g_pGameClientShell->HasJoystick()) + devType = DEVICETYPE_JOYSTICK; + + //clear all joystick actions bound to an axis + DeviceBinding* pBindings = g_pLTClient->GetDeviceBindings (devType); + //step through each binding + DeviceBinding* ptr = pBindings; + while (ptr) + { + uint32 contType = g_pProfileMgr->GetControlType(devType, ptr->m_nObjectId ); + if (contType != CONTROLTYPE_BUTTON && contType != CONTROLTYPE_KEY) + { + g_pLTClient->ClearBinding(ptr->strDeviceName, ptr->strRealName); + } + ptr = ptr->pNext; + } + + g_pLTClient->FreeDeviceBindings (pBindings); + + if (!m_bUseJoystick) + { + WriteConsoleInt("UseJoystick",0); + return; + } + + WriteConsoleInt("UseJoystick",1); + + char strJoystick[128]; + memset(strJoystick, 0, 128); + LTRESULT result = g_pLTClient->GetDeviceName(devType, strJoystick, 127); + if (result != LT_OK) return; + + for (int a = 0; a < g_pProfileMgr->GetNumAxis(); a++) + { + CDeviceAxisData *pAxisData = g_pProfileMgr->GetAxisData(a); + if (!pAxisData || m_nAxis[a] == eJoystick_None) continue; + + // figure out the intermediate range information + float fRange = pAxisData->m_fRangeHigh - pAxisData->m_fRangeLow; + float fActiveRange = fRange * 0.45f; + + char *pszHigh = NULL; + char *pszLow = NULL; + + switch (pAxisData->m_nType) + { + case CONTROLTYPE_XAXIS: + case CONTROLTYPE_RXAXIS: + case CONTROLTYPE_ZAXIS: + if (m_nAxis[a] == eJoystick_Look) + { + pszHigh = szJoyRight; + pszLow = szJoyLeft; + } + else if (m_nAxis[a] == eJoystick_Move) + { + pszHigh = szJoyStrafeRight; + pszLow = szJoyStrafeLeft; + } + break; + case CONTROLTYPE_YAXIS: + case CONTROLTYPE_RYAXIS: + case CONTROLTYPE_RZAXIS: + if (m_nAxis[a] == eJoystick_Look) + { + pszHigh = szJoyLookDown; + pszLow = szJoyLookUp; + } + else if (m_nAxis[a] == eJoystick_Move) + { + pszHigh = szJoyBackward; + pszLow = szJoyForward; + } + else if (m_nAxis[a] == eJoystick_LookInvert) + { + pszHigh = szJoyLookUp; + pszLow = szJoyLookDown; + } + break; + } + if (pszHigh && pszLow) + { + g_pLTClient->AddBinding(strJoystick, pAxisData->m_sName,pszLow,pAxisData->m_fRangeLow,pAxisData->m_fRangeLow+fActiveRange); + g_pLTClient->AddBinding(strJoystick, pAxisData->m_sName,pszHigh,pAxisData->m_fRangeHigh-fActiveRange,pAxisData->m_fRangeHigh); + } + } + + for (a = 0; a < g_pProfileMgr->GetNumPOV(); a++) + { + CDevicePOVData *pPOVData = g_pProfileMgr->GetPOVData(a); + if (!pPOVData || m_nPOV[a] == eJoystick_None) continue; + + char *pszUp = NULL; + char *pszLeft = NULL; + char *pszDown = NULL; + char *pszRight = NULL; + + if (m_nPOV[a] == eJoystick_Look) + { + pszUp = szJoyLookUp; + pszLeft = szJoyLeft; + pszDown = szJoyLookDown; + pszRight = szJoyRight; + + } + else if (m_nPOV[a] == eJoystick_Move) + { + pszUp = szJoyForward; + pszLeft = szJoyStrafeLeft; + pszDown = szJoyBackward; + pszRight = szJoyStrafeRight; + + } + + if (pszUp) + { + g_pLTClient->AddBinding(strJoystick, pPOVData->m_sName,pszUp,0.0f,4500.0f); + g_pLTClient->AddBinding(strJoystick, pPOVData->m_sName,pszRight,4500.0f,13500.0f); + g_pLTClient->AddBinding(strJoystick, pPOVData->m_sName,pszDown,13500.0f,22500.0f); + g_pLTClient->AddBinding(strJoystick, pPOVData->m_sName,pszLeft,22500.0f,31500.0f); + g_pLTClient->AddBinding(strJoystick, pPOVData->m_sName,pszUp,31500.0f,36000.0f); + + } + } + +} + + +//************************************************************************** +//functions to read settings from the console and write them to the profile +//************************************************************************** + +//read bindings from the game and save them in the profile +void CUserProfile::SetBindings() +{ + for (int dev = 0; dev < 3; ++dev) + { + for (int i = 0; i < m_nNumBindings; i++) + { + SAFE_STRCPY (m_bindings[i].strRealName[dev], ""); + SAFE_STRCPY (m_bindings[i].strTriggerName[dev], ""); + m_bindings[i].nCode = 0; + m_bindings[i].nDeviceObjectId[dev] = 0; + } + uint32 devType = devices[dev]; + DeviceBinding* pBindings = g_pLTClient->GetDeviceBindings (devType); + if (!pBindings) + { + continue; + } + DeviceBinding* ptr = pBindings; + while (ptr) + { + GameAction* pAction = ptr->pActionHead; + while (pAction) + { + int com = 0; + while (com < g_kNumCommands && (pAction->nActionCode != g_CommandArray[com].nCommandID) ) + com++; + if (com >= g_kNumCommands) + break; + + + CBindingData *pData = FindBinding(com); + if (pData) + { + uint32 contType = g_pProfileMgr->GetControlType(devType, ptr->m_nObjectId ); + + pData->nDeviceObjectId[dev] = ptr->m_nObjectId; + + if (contType == CONTROLTYPE_BUTTON || contType == CONTROLTYPE_KEY) + { + SAFE_STRCPY (pData->strTriggerName[dev], ptr->strTriggerName); + SAFE_STRCPY (pData->strRealName[dev], ptr->strRealName); + } + else if (devType == DEVICETYPE_MOUSE && contType == CONTROLTYPE_ZAXIS) + { + if (pAction->nRangeHigh > 0) + { + strcpy(pData->strRealName[dev],"#U"); + strcpy(pData->strTriggerName[dev],szWheelUp); + } + else if (pAction->nRangeHigh < 0) + { + strcpy(pData->strRealName[dev],"#D"); + strcpy(pData->strTriggerName[dev],szWheelDown); + } + } + } + + pAction = pAction->pNext; + } + + ptr = ptr->pNext; + } + g_pLTClient->FreeDeviceBindings (pBindings); + } + + +} + +void CUserProfile::SetMouse() +{ + int nMin, nMax; + + m_bMouseLook = GetConsoleInt("MouseLook",1); + m_bInvertY = GetConsoleInt("MouseInvertY",0); + + m_nInputRate = GetConsoleInt("InputRate",20); + + nMin = int(g_vtMouseMinInputRate.GetFloat()); + nMax = int(g_vtMouseMaxInputRate.GetFloat()); + + if (m_nInputRate < nMin) m_nInputRate = nMin; + if (m_nInputRate > nMax) m_nInputRate = nMax; + + m_nSensitivity = GetConsoleInt("MouseSensitivity",5); + + nMin = int(g_vtMouseMinSensitivity.GetFloat()); + nMax = int(g_vtMouseMaxSensitivity.GetFloat()); + + if (m_nSensitivity < nMin) m_nSensitivity = nMin; + if (m_nSensitivity > nMax) m_nSensitivity = nMax; + + float fTemp = GetConsoleFloat("VehicleTurnRateScale",1.0f); + m_nVehicleTurn = (int)(100.0f * fTemp); +} + +void CUserProfile::SetKeyboard() +{ + //keyboard settings + if (m_bMouseLook) + { + m_bAutoCenter = LTFALSE; + } + else + m_bAutoCenter = (LTBOOL)GetConsoleInt("AutoCenter",0); + + float fTemp = GetConsoleFloat("NormalTurnRate",1.5f); + m_nNormalTurn = (int)(10.0f * fTemp); + + fTemp = GetConsoleFloat("FastTurnRate",2.3f); + m_nFastTurn = (int)(10.0f * fTemp); + + fTemp = GetConsoleFloat("LookUpRate",2.5f); + m_nLookUp = (int)(10.0f * fTemp); + +} + +void CUserProfile::SetControls() +{ + if (g_pProfileMgr->GetNumAxis() < 1 && g_pProfileMgr->GetNumPOV() < 1) + { + m_bUseJoystick = 0; + return; + } + m_bUseJoystick = (LTBOOL)m_buteMgr.GetInt("Controls","UseJoystick",0); +} + +void CUserProfile::SetJoystick() +{ +} + + +void CUserProfile::SetMultiplayer() +{ + +} + +void CUserProfile::SetGameOptions() +{ + m_bGore = !g_pVersionMgr->IsLowViolence() && (LTBOOL)GetConsoleInt("Gore",0); + m_nDifficulty = g_pGameClientShell->GetDifficulty(); + m_nSubtitles = GetConsoleInt("Subtitles",0); + + m_bAlwaysRun = (LTBOOL)g_pMoveMgr->RunLock(); + + m_nLayout = GetConsoleInt("HUDLayout",0); + + m_nHeadBob = (int)(10.0f * GetConsoleFloat("HeadBob",1.0f)); + m_nWeaponSway = (int)(10.0f * GetConsoleFloat("WeaponSway",1.0f)); + m_nMsgDur = (int)(10.0f * GetConsoleFloat("MessageDuration",1.0f)); + + m_bAutoWeaponSwitch = (LTBOOL)GetConsoleInt("AutoWeaponSwitch",1); + m_bVehicleContour = (LTBOOL)GetConsoleInt("VehicleContour",1); +} + + +void CUserProfile::SetCrosshair() +{ + m_bCrosshair = g_pInterfaceMgr->IsCrosshairEnabled(); + + m_CrosshairR = GetConsoleInt("CrosshairRed",0x1F); + m_CrosshairG = GetConsoleInt("CrosshairGreen",0xFF); + m_CrosshairB = GetConsoleInt("CrosshairBlue",0xFF); + m_CrosshairA = GetConsoleInt("CrosshairAlpha",0xBF); + + m_nStyle = GetConsoleInt("CrosshairStyle",0); + m_bDynamic = GetConsoleInt("CrosshairDynamic",1); +} + +void CUserProfile::SetSound() +{ + m_nSoundVolume = GetConsoleInt("soundvolume",SOUND_DEFAULT_VOL); + m_nMusicVolume = GetConsoleInt("musicvolume",MUSIC_DEFAULT_VOL); + m_fWeaponsSoundMultiplier = GetConsoleFloat("weaponssoundmultiplier",WEAPONS_DEFAULT_MULTIPLIER); + m_fSpeechSoundMultiplier = GetConsoleFloat("speechsoundmultiplier",SPEECH_DEFAULT_MULTIPLIER); + m_fDefaultSoundMultiplier = GetConsoleFloat("defaultsoundmultiplier", DEFAULT_DEFAULT_MULTIPLIER); + + if (!GetConsoleInt("MusicEnable",0) || !GetConsoleInt("MusicActive",0)) + m_nMusicVolume = MUSIC_MIN_VOL; + +} + +void CUserProfile::SetDisplay() +{ + m_bHardwareCursor = (GetConsoleInt("HardwareCursor",0) > 0 && GetConsoleInt("DisableHardwareCursor",0) == 0); + m_bVSync = (GetConsoleInt("VSyncOnFlip",1) > 0 ); + + //get the average + m_fGamma = (GetConsoleFloat("GammaR",kDefaultGamma) + GetConsoleFloat("GammaG",kDefaultGamma) + GetConsoleFloat("GammaB",kDefaultGamma)) / 3.0f; + + // The current render mode + RMode currentMode; + g_pLTClient->GetRenderMode(¤tMode); + + m_nScreenWidth = currentMode.m_Width; + m_nScreenHeight = currentMode.m_Height; + m_nScreenDepth = currentMode.m_BitDepth; + + DebugCPrint(1,"CUserProfile::SetDisplay() : %d x %d %d",m_nScreenWidth,m_nScreenHeight,m_nScreenDepth); + +} + +void CUserProfile::SetPerformance() +{ + g_pPerformanceMgr->GetPerformanceOptions(&m_sPerformance); +} + +LTBOOL CProfileMgr::Init() +{ + + ASSERT(g_kNumCommands <= MAX_NUM_COMMANDS); + if (g_kNumCommands > MAX_NUM_COMMANDS) + return LTFALSE; + + + LoadString(IDS_PLAYER,szDefProfileName,sizeof(szDefProfileName)); + + + + g_pProfileMgr = this; + + SetDeviceData(); + + std::string currentProfile; + char szProfileName[128] = ""; + + //get the profile name + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + unsigned int nBufSize = sizeof(szProfileName); + pRegMgr->Get("ProfileName", szProfileName, nBufSize, ""); + } + + //are we supposed to set a particular performance level? + char *pszPerf = GetConsoleTempString("SetPerformanceLevel",""); + //if we have a profile name try to init it + if (strlen(szProfileName) > 0) + { + currentProfile = szProfileName; + if (m_profile.Init(currentProfile, LTFALSE)) + { + //if we've been told to restore, do so... + if (GetConsoleInt("RestoreDefaults",0)) + { + m_profile.RestoreDefaults(PROFILE_ALL); + WriteConsoleInt("RestoreDefaults",0); + } + + + m_profile.SetPerformanceCfg(pszPerf); + WriteConsoleString("SetPerformanceLevel",""); + + + //we also want to make sure to save the display configuration so that parameters passed + //through the command line will be saved for the next run + SaveDisplaySettings(); + return LTTRUE; + } + } + + //we either don't have a profile or it couldn't be initted, create one + NewProfile(szDefProfileName); + + if (!m_profile.IsInitted()) + return LTFALSE; + + m_profile.SetPerformanceCfg(pszPerf); + WriteConsoleString("SetPerformanceLevel",""); + + + //we also want to make sure to save the display configuration so that parameters passed + //through the command line will be saved for the next run + SaveDisplaySettings(); + + return LTTRUE; +} + +void CProfileMgr::Term() +{ + if (m_profile.IsInitted()) + { + m_profile.SetBindings(); + + m_profile.Save(); + m_profile.Term(); + } + + g_pProfileMgr = LTNULL; +} + +void CProfileMgr::GetProfileList(StringSet& profileList) +{ + struct _finddata_t file; + long hFile; + + std::string directory = GetProfileFile( "*" ); + + // find first file + if((hFile = _findfirst(directory.c_str(), &file)) != -1L) + { + do + { + char *pName = strtok(file.name,"."); + profileList.insert(pName); + } + while(_findnext(hFile, &file) == 0); + } + _findclose(hFile); +} + +void CProfileMgr::ClearBindings() +{ + //step through each device + for (int i = 0; i < 3; ++i) + { + DeviceBinding* pBindings = g_pLTClient->GetDeviceBindings (devices[i]); + if (!pBindings) + { + continue; + } + + //step through each binding + DeviceBinding* ptr = pBindings; + while (ptr) + { + //step through each action on that binding checking to see if we should clear it + GameAction* pAction = ptr->pActionHead; + while (pAction) + { + int com = 0; + while (com < g_kNumCommands && pAction->nActionCode != g_CommandArray[com].nCommandID) + com++; + //if it is a bindable command, clear it + if (com < g_kNumCommands) + { + uint32 contType = GetControlType(devices[i], ptr->m_nObjectId ); + if (contType == CONTROLTYPE_BUTTON || contType == CONTROLTYPE_KEY) + { + g_pLTClient->ClearBinding(ptr->strDeviceName, ptr->strRealName); + } + else if (devices[i] == DEVICETYPE_MOUSE && contType == CONTROLTYPE_ZAXIS) + { + g_pLTClient->ClearBinding(ptr->strDeviceName, ptr->strRealName); + } + + } + pAction = pAction->pNext; + } + + ptr = ptr->pNext; + } + + g_pLTClient->FreeDeviceBindings (pBindings); + } +} + + + +void CProfileMgr::NewProfile(const std::string& profileName) +{ + if (profileName.length() == 0) + return; + if (m_profile.IsInitted()) + { + m_profile.Save(); + m_profile.Term(); + } + + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + if (!m_profile.Init(profileName, LTTRUE)) return; + + m_profile.Save(); + + + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + pRegMgr->Set("ProfileName", m_profile.m_sName.c_str()); + } + else + { + _ASSERT("!RegMgr not valid."); + } + +} + +void CProfileMgr::DeleteProfile(const std::string& profileName) +{ + LTBOOL bNeedNew = LTFALSE; + if (m_profile.IsInitted() && m_profile.m_sName.compare(profileName) == 0) + { + m_profile.Term(); + bNeedNew = LTTRUE; + } + + std::string fn = GetProfileFile( profileName.c_str( )); + remove(fn.c_str()); + + g_pClientSaveLoadMgr->DeleteSpecificSaveDir( profileName.c_str() ); + + if (bNeedNew) + { + StringSet profileList; + GetProfileList(profileList); + + StringSet::iterator iter = profileList.begin(); + if (iter == profileList.end()) + { + //empty list + NewProfile(szDefProfileName); + } + else + NewProfile(*iter); + + + } + +} +void CProfileMgr::RenameProfile(const std::string& oldName,const std::string& newName) +{ + if (newName.length() == 0) + return; + LTBOOL bIsCurrent = (m_profile.IsInitted() && m_profile.m_sName.compare(oldName) == 0); + + if (bIsCurrent && m_profile.IsInitted()) + { + m_profile.Save(); + m_profile.Term(); + } + + std::string ofn = GetProfileFile( oldName.c_str( )); + std::string nfn = GetProfileFile( newName.c_str( )); + rename(ofn.c_str(),nfn.c_str()); + + char oldDir[128]; + char newDir[128]; + sprintf(oldDir,"%s\\%s",SAVE_DIR,oldName.c_str()); + sprintf(newDir,"%s\\%s",SAVE_DIR,newName.c_str()); + rename(oldDir,newDir); + + if (bIsCurrent) + { + m_profile.Init(newName,LTFALSE); + + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + pRegMgr->Set("ProfileName", m_profile.m_sName.c_str()); + } + else + { + _ASSERT("!RegMgr not valid."); + } + + + } +} + + +LTBOOL CUserProfile::RestoreDefaults(uint8 nFlags) +{ + std::string dfn = PROFILE_DIR; + dfn += "default.prf"; + + LTBOOL bRet = LTFALSE; + + if (m_bInitted) + m_buteMgr.Term(); + + if (m_pCryptKey) + { + bRet = m_buteMgr.Parse(dfn.c_str(), m_pCryptKey); + } + else + { + bRet = m_buteMgr.Parse(dfn.c_str()); + } + + if (!bRet) return LTFALSE; + + if (nFlags & PROFILE_CONTROLS) + LoadControls(); + if (nFlags & PROFILE_MULTI) + LoadMultiplayer(); + if (nFlags & PROFILE_GAME) + LoadGameOptions(); + if (nFlags & PROFILE_SOUND) + LoadSound(true); + + m_bInitted = LTTRUE; + + return LTTRUE; + +} + +uint32 CProfileMgr::GetControlType(uint32 deviceType, uint32 nObjectId ) +{ + DeviceObject* pList = g_pLTClient->GetDeviceObjects(deviceType); + DeviceObject* pObj = pList; + uint32 type = CONTROLTYPE_UNKNOWN; + bool bFound = false; + while (pObj != NULL && !bFound) + { + bFound = ( nObjectId == pObj->m_nObjectId ); + if (bFound) + type = pObj->m_ObjectType; + pObj = pObj->m_pNext; + } + + if( pList ) + { + g_pLTClient->FreeDeviceObjects( pList ); + pList = NULL; + } + + return type; +} + + +void CProfileMgr::SetDeviceData() +{ + + if (g_pGameClientShell->HasGamepad()) + { + devices[2] = DEVICETYPE_GAMEPAD; + g_pGameClientShell->EnableGamepad(); + } + else if (g_pGameClientShell->HasJoystick()) + { + devices[2] = DEVICETYPE_JOYSTICK; + g_pGameClientShell->EnableJoystick(); + } + else + devices[2] = DEVICETYPE_UNKNOWN; + + for (int dev = 0; dev < 3; dev++) + { + g_pLTClient->GetDeviceName (devices[dev],strDeviceName[dev], sizeof(strDeviceName[dev])); + } + + LoadString(IDS_WHEEL_UP,szWheelUp,sizeof(szWheelUp)); + LoadString(IDS_WHEEL_DOWN,szWheelDown,sizeof(szWheelDown)); + + strncpy(szJoyLookUp,"LookUp",sizeof(szJoyLookUp)); + strncpy(szJoyLookDown,"LookDown",sizeof(szJoyLookDown)); + strncpy(szJoyForward,"Forward",sizeof(szJoyForward)); + strncpy(szJoyBackward,"Backward",sizeof(szJoyBackward)); + strncpy(szJoyLeft,"Left",sizeof(szJoyLeft)); + strncpy(szJoyRight,"Right",sizeof(szJoyRight)); + strncpy(szJoyStrafeLeft,"StrafeLeft",sizeof(szJoyStrafeLeft)); + strncpy(szJoyStrafeRight,"StrafeRight",sizeof(szJoyStrafeRight)); + + + m_nNumDeviceAxis = 0; + m_nNumDevicePOV = 0; + + + + DeviceObject* pObjects = g_pLTClient->GetDeviceObjects(devices[2]); + DeviceObject* pObj = pObjects; + LTBOOL bFoundIt = LTFALSE; + + // loop through all joystick objects and store the axis ones with our devicename the m_aDeviceData array + while ((pObj != NULL) && (m_nNumDeviceAxis < kMaxDeviceAxis)) + { + if ((pObj->m_ObjectName != NULL) && (pObj->m_DeviceName != NULL)) + { + if ( (pObj->m_DeviceType == DEVICETYPE_JOYSTICK || pObj->m_DeviceType == DEVICETYPE_GAMEPAD) && + (stricmp(pObj->m_DeviceName, strDeviceName[2]) == 0) && + ( (pObj->m_ObjectType == CONTROLTYPE_XAXIS) || + (pObj->m_ObjectType == CONTROLTYPE_YAXIS) || + (pObj->m_ObjectType == CONTROLTYPE_ZAXIS) || + (pObj->m_ObjectType == CONTROLTYPE_RXAXIS) || + (pObj->m_ObjectType == CONTROLTYPE_RYAXIS) || + (pObj->m_ObjectType == CONTROLTYPE_RZAXIS) + ) + ) + { + m_aDeviceAxisData[m_nNumDeviceAxis].Init(pObj->m_ObjectName, pObj->m_ObjectType, pObj->m_RangeLow, pObj->m_RangeHigh); + m_nNumDeviceAxis++; + } + + } + if ((pObj->m_ObjectName != NULL) && (pObj->m_DeviceName != NULL)) + { + if ( (pObj->m_DeviceType == DEVICETYPE_JOYSTICK || pObj->m_DeviceType == DEVICETYPE_GAMEPAD) && + (stricmp(pObj->m_DeviceName, strDeviceName[2]) == 0) && + (pObj->m_ObjectType == CONTROLTYPE_POV) + ) + { + m_aDevicePOVData[m_nNumDevicePOV].Init(pObj->m_ObjectName); + m_nNumDevicePOV++; + } + + } + pObj = pObj->m_pNext; + } + + // free the device objects + if (pObjects != NULL) g_pLTClient->FreeDeviceObjects (pObjects); + +} + +CDeviceAxisData* CProfileMgr::GetAxisData(int ndx) +{ + if (ndx < 0 || ndx >= m_nNumDeviceAxis) + return LTNULL; + return &m_aDeviceAxisData[ndx]; +} + +CDevicePOVData* CProfileMgr::GetPOVData(int ndx) +{ + if (ndx < 0 || ndx >= m_nNumDevicePOV) + return LTNULL; + return &m_aDevicePOVData[ndx]; +} + +LTBOOL IsRendererEqual(RMode *pRenderer1, RMode *pRenderer2) +{ + _ASSERT(pRenderer1); + _ASSERT(pRenderer2); + if (!pRenderer1 || !pRenderer2) return LTFALSE; + + if (pRenderer1->m_Width != pRenderer2->m_Width) + { + return LTFALSE; + } + + if (pRenderer1->m_Height != pRenderer2->m_Height) + { + return LTFALSE; + } + + if (pRenderer1->m_BitDepth != pRenderer2->m_BitDepth) + { + return LTFALSE; + } + + return LTTRUE; +} + +// Gets the default session name. +bool GetDefaultSessionName( GameType eGameType, char* pszSessionName, uint32 nSessionNameLen ) +{ + uint32 nStringId = 0; + + switch( eGameType ) + { + case eGameTypeCooperative: + nStringId = IDS_HOST_NAME_COOP_DEFAULT; + break; + case eGameTypeDeathmatch: + nStringId = IDS_HOST_NAME_DM_DEFAULT; + break; + case eGameTypeDemolition: + nStringId = IDS_HOST_NAME_DE_DEFAULT; + break; + case eGameTypeTeamDeathmatch: + nStringId = IDS_HOST_NAME_TDM_DEFAULT; + break; + case eGameTypeDoomsDay: + nStringId = IDS_HOST_NAME_DD_DEFAULT; + break; + default: + return false; + break; + } + + strncpy( pszSessionName, LoadTempString( nStringId ), nSessionNameLen ); + pszSessionName[ nSessionNameLen - 1 ] = '\0'; + + return true; +} + diff --git a/Jack/ClientShellDLL/ProfileMgr.h b/Jack/ClientShellDLL/ProfileMgr.h new file mode 100644 index 00000000..8a24d573 --- /dev/null +++ b/Jack/ClientShellDLL/ProfileMgr.h @@ -0,0 +1,358 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ProfileMgr.h +// +// PURPOSE : Manages player profiles +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef PROFILE_MGR_H +#define PROFILE_MGR_H + +#pragma warning( disable : 4786 ) +#include // For strings + +#include "ClientUtilities.h" +#include "PerformanceMgr.h" +#include "ButeMgr.h" +#include "SkillsButeMgr.h" +#include "NetDefs.h" +#include "ProfileUtils.h" + +class CProfileMgr; +extern CProfileMgr* g_pProfileMgr; + + +const int NUM_DEVICES = 3; +const int MAX_NUM_COMMANDS = 50; +const int kMaxDeviceAxis = 6; +const int kMaxDevicePOV = 4; + +enum JoystickAxisBindings +{ + eJoystick_None, + eJoystick_Look, + eJoystick_Move, + eJoystick_LookInvert, +}; + +const int MUSIC_MIN_VOL = -2500; +const int MUSIC_MAX_VOL = 5000; +const int MUSIC_SLIDER_INC = 250; +const int MUSIC_DEFAULT_VOL = 2500; + +const int SOUND_MIN_VOL = 0; +const int SOUND_MAX_VOL = 100; +const int SOUND_SLIDER_INC = 10; +const int SOUND_DEFAULT_VOL = 75; +const int SPEECH_MIN_VOL = 0; +const int SPEECH_MAX_VOL = 100; +const int SPEECH_SLIDER_INC = 10; +const int SPEECH_DEFAULT_VOL = 100; + +const float WEAPONS_DEFAULT_MULTIPLIER = 1.0f; +const float SPEECH_DEFAULT_MULTIPLIER = 1.0f; +const float DEFAULT_DEFAULT_MULTIPLIER = 0.75f; + +const float kMinGamma = 0.5f; +const float kMaxGamma = 6.0f; + +//this should match the value in Launcher\LauncherDlg.cpp +const float kDefaultGamma = 1.04f; + +extern const int g_kNumCommands; + +//section flags +const uint8 PROFILE_CONTROLS = 0x01; +const uint8 PROFILE_MULTI = 0x02; +const uint8 PROFILE_GAME = 0x04; +const uint8 PROFILE_CROSSHAIR = 0x08; +const uint8 PROFILE_SOUND = 0x10; +const uint8 PROFILE_ALL = 0xFF; + + +enum CommandType +{ + COM_MOVE, + COM_INV, + COM_VIEW, + COM_MISC, + kNumCommandTypes +}; + +struct CommandData +{ + int nStringID; + int nCommandID; + char szActionString[32]; + int nCommandType; +}; + +char* GetCommandName(int nCommand); +const CommandData* GetCommandData(int nIndex); +inline uint16 GetMinimumBandwidth() {return (g_BandwidthServer[0]/2);} +inline uint16 GetMaximumBandwidth() {return (g_BandwidthClient[eBandwidth_Custom-1]);} +inline bool IsValidBandwidth(uint16 nBandwidth) +{ + return (nBandwidth >= GetMinimumBandwidth() && nBandwidth <= GetMaximumBandwidth()); +} + + + +class CBindingData +{ +public: + CBindingData() { nStringID = 0; szAction[0] = '\0'; memset(strRealName, 0, sizeof(strRealName)); + memset(strTriggerName, 0, sizeof(strTriggerName)); } + + uint32 nStringID; + char szAction[32]; + char strTriggerName[NUM_DEVICES][64]; + char strRealName[NUM_DEVICES][64]; + uint32 nDeviceObjectId[NUM_DEVICES]; + uint16 nCode; +}; + + +class CDeviceAxisData +{ +public: + CDeviceAxisData() {Init("",0,0.0f,0.0f);} + void Init(char *sName, uint32 nType, float fRangeLow, float fRangeHigh) + { SAFE_STRCPY(m_sName,sName); m_nType = nType; m_fRangeLow = fRangeLow; m_fRangeHigh = fRangeHigh; } + char m_sName[INPUTNAME_LEN]; + uint32 m_nType; + float m_fRangeLow; + float m_fRangeHigh; +}; + +class CDevicePOVData +{ +public: + CDevicePOVData() {Init("");} + void Init(char *sName) { SAFE_STRCPY(m_sName,sName); } + char m_sName[INPUTNAME_LEN]; +}; + + + +class CUserProfile +{ +public: + CUserProfile(); + + LTBOOL Init(const std::string& profileName, LTBOOL bCreate); + LTBOOL RestoreDefaults(uint8 nFlags); + void Term(); + + //take data from profile and apply them to the game + void ApplyControls(); + void ApplyBindings(); + void ApplyMouse(); + void ApplyKeyboard(); + void ApplyJoystick(); + + void ApplyMultiplayer(bool bLAN); + + void ApplyGameOptions(); + void ApplyCrosshair(); + + void ApplySound(); + void ImplementSoundVolume(); + void ImplementMusicVolume(); + + void ApplyDisplay(); + + void SetPerformanceCfg(char *pszCfg); + void ApplyPerformance(bool bForceDisplay); //this may affect sound and display settings as well + void SendPerformanceMsg(); + + //read data from the game and save them in the profile + void SetControls(); + void SetBindings(); + void SetMouse(); + void SetKeyboard(); + void SetJoystick(); + + void SetMultiplayer(); + + void SetGameOptions(); + void SetCrosshair(); + + void SetSound(); + + void SetDisplay(); + + void SetPerformance(); + + // load/save profile to file + void Load( ); + void Save(bool bForceClose = false); + + LTBOOL IsInitted() {return m_bInitted;} + + CBindingData* FindBinding(int commandIndex); + char const* GetDeviceName( uint32 nDeviceIndex ); + + std::string m_sName; + + //****************** controls + //mouse + LTBOOL m_bInvertY; + LTBOOL m_bMouseLook; + int m_nInputRate; + int m_nSensitivity; + + //keyboard + LTBOOL m_bAutoCenter; + int m_nNormalTurn; + int m_nFastTurn; + int m_nLookUp; + + //shared + int m_nVehicleTurn; + + //joystick + LTBOOL m_bUseJoystick; + uint8 m_nAxis[kMaxDeviceAxis]; + uint8 m_nPOV[kMaxDevicePOV]; + + + //****************** multiplayer + std::string m_sPlayerName; + std::string m_sPlayerGuid; + uint8 m_nCPPlayerModel; + uint8 m_nDMPlayerModel; + uint8 m_nPlayerSkills[kNumSkills]; + uint8 m_nBandwidthClient; + uint16 m_nBandwidthClientCustom; + bool m_bMPRadar; + uint16 m_nClientPort; + + //****************** multiplayer server game options + ServerGameOptions m_ServerGameOptions; + + //****************** game options + uint8 m_nSubtitles; + bool m_bGore; + uint8 m_nDifficulty; + LTBOOL m_bAlwaysRun; + uint8 m_nLayout; + int m_nHeadBob; + int m_nWeaponSway; + int m_nMsgDur; + bool m_bSPRadar; + LTBOOL m_bAutoWeaponSwitch; + LTBOOL m_bLoadScreenTips; + LTBOOL m_bVehicleContour; + + //crosshair + LTBOOL m_bCrosshair; + uint8 m_CrosshairR; + uint8 m_CrosshairG; + uint8 m_CrosshairB; + uint8 m_CrosshairA; + uint8 m_nStyle; + LTBOOL m_bDynamic; + + + + //****************** sound + int m_nSoundVolume; + int m_nMusicVolume; + float m_fDefaultSoundMultiplier; + float m_fWeaponsSoundMultiplier; + float m_fSpeechSoundMultiplier; + + //****************** display + LTBOOL m_bHardwareCursor; + LTBOOL m_bVSync; + uint32 m_nScreenWidth; + uint32 m_nScreenHeight; + uint32 m_nScreenDepth; + float m_fGamma; + + //****************** display + sPerformCfg m_sPerformance; + +private: + //load parts of profile to file (file must already have been parsed by m_buteMgr) + void LoadControls(); + void LoadMultiplayer(); + void LoadGameOptions(); + void LoadSound(bool bApply); //optionlly defer applying these settings + void LoadPerformance(bool bApply); //optionlly defer applying these settings + + //save parts of profile to file + void SaveControls(); + void SaveMultiplayer(); + void SaveGameOptions(); + void SaveSound(); + void SavePerformance(); + + + +private: + int m_nNumBindings; + CBindingData m_bindings[MAX_NUM_COMMANDS]; + + + LTBOOL m_bInitted; + CButeMgr m_buteMgr; + char* m_pCryptKey; + uint32 m_nSaveVersion; +}; + + + + +class CProfileMgr +{ +public: + LTBOOL Init(); + void Term(); + + void GetProfileList(StringSet& profileList); + + //saves current profile and loads specified one (creating it if necessary) + void NewProfile(const std::string& profileName); + void DeleteProfile(const std::string& profileName); + void RenameProfile(const std::string& oldName,const std::string& newName); + CUserProfile* GetCurrentProfile() {return &m_profile;} + const char* GetCurrentProfileName() {return m_profile.m_sName.c_str();} + + void ClearBindings(); + uint32 GetControlType(uint32 deviceType, uint32 nObjectId ); + + int GetNumAxis() {return m_nNumDeviceAxis;} + CDeviceAxisData* GetAxisData(int ndx); + + int GetNumPOV() {return m_nNumDevicePOV;} + CDevicePOVData* GetPOVData(int ndx); + + void ImplementSoundVolume() {m_profile.ImplementSoundVolume();} + void ImplementMusicVolume() {m_profile.ImplementMusicVolume();} + +private: + void SetDeviceData(); + + CUserProfile m_profile; + + // Information about each joystick axis + int m_nNumDeviceAxis; + CDeviceAxisData m_aDeviceAxisData[kMaxDeviceAxis]; + + // Information about each joystick POV + int m_nNumDevicePOV; + CDevicePOVData m_aDevicePOVData[kMaxDevicePOV]; +}; + + +LTBOOL IsRendererEqual(RMode *pRenderer1, RMode *pRenderer2); + +// Gets the default session name. +bool GetDefaultSessionName( GameType eGameType, char* pszSessionName, uint32 nSessionNameLen ); + +#endif // PROFILE_MGR_H diff --git a/Jack/ClientShellDLL/ProjectileFX.cpp b/Jack/ClientShellDLL/ProjectileFX.cpp new file mode 100644 index 00000000..e4d51e39 --- /dev/null +++ b/Jack/ClientShellDLL/ProjectileFX.cpp @@ -0,0 +1,654 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ProjectileFX.cpp +// +// PURPOSE : Weapon special FX - Implementation +// +// CREATED : 7/6/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ProjectileFX.h" +#include "GameClientShell.h" +#include "ParticleTrailFX.h" +#include "SFXMsgIds.h" +#include "ClientUtilities.h" +#include "iltphysics.h" +#include "ClientWeaponUtils.h" +#include "ParticleTrailFX.h" +#include "WeaponFXTypes.h" +#include "SurfaceFunctions.h" +#include "CMoveMgr.h" +#include "ClientMultiplayerMgr.h" +#include "FXButeMgr.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::Init +// +// PURPOSE: Init the projectile system fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CProjectileFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + PROJECTILECREATESTRUCT proj; + + proj.hServerObj = hServObj; + proj.nWeaponId = pMsg->Readuint8(); + proj.nAmmoId = pMsg->Readuint8(); + proj.nShooterId = pMsg->Readuint8(); + + return Init(&proj); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::Init +// +// PURPOSE: Init the projectile fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CProjectileFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + PROJECTILECREATESTRUCT* pCS = (PROJECTILECREATESTRUCT*)psfxCreateStruct; + + m_nWeaponId = pCS->nWeaponId; + m_nAmmoId = pCS->nAmmoId; + m_nShooterId = pCS->nShooterId; + m_bLocal = pCS->bLocal; + m_bAltFire = pCS->bAltFire; + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(m_nAmmoId); + if (!pAmmo || !pAmmo->pProjectileFX) + { + return LTFALSE; + } + + m_pProjectileFX = pAmmo->pProjectileFX; + m_nFX = m_pProjectileFX->nFlags; + + ASSERT( 0 != m_pProjectileFX ); + // the fx associated with this projectile fx + if ( '\0' != m_pProjectileFX->szFXName[ 0 ] ) + { + // get the flags for this ClientFX + uint32 dwFlags = m_pProjectileFX->dwFXFlags; + + // prepare the create struct + CLIENTFX_CREATESTRUCT fxInit + ( + m_pProjectileFX->szFXName, + dwFlags, + pCS->hServerObj + ); + + // get in initial position for the effect + g_pLTClient->GetObjectPos( pCS->hServerObj, &fxInit.m_vPos ); + + // create the client fx + CLIENTFX_LINK tmpClientFXLink; + g_pClientFXMgr->CreateClientFX + ( + &tmpClientFXLink, + fxInit, + true + ); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::CreateObject +// +// PURPOSE: Create the various fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CProjectileFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTFALSE; + + uint8 nDetailLevel = pSettings->SpecialFXSetting(); + + LTVector vPos; + LTRotation rRot; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + //m_pClientDE->CPrint("Client start pos (%.2f, %.2f, %.2f)", vPos.x, vPos.y, vPos.z); + //m_fStartTime = m_pClientDE->GetTime(); + + if (nDetailLevel != RS_LOW) + { + if (m_nFX & PFX_SMOKETRAIL) + { + CreateSmokeTrail(vPos, rRot); + } + + if (m_nFX & PFX_LIGHT) + { + CreateLight(vPos, rRot); + } + } + + if (m_nFX & PFX_FLARE) + { + CreateFlare(vPos, rRot); + } + + if (m_nFX & PFX_FLYSOUND) + { + CreateFlyingSound(vPos, rRot); + } + + + // Do client-side projectiles in multiplayer games... + + if ( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + // Set the velocity of the "server" object if it is really just a local + // object... + + if (m_bLocal) + { + VEC_COPY(m_vFirePos, vPos); + + m_fStartTime = m_pClientDE->GetTime(); + + LTVector vVel, vF; + vF = rRot.Forward(); + + m_vPath = vF; + + // Special case of adjusting the projectile speed... + + LTFLOAT fVel = (LTFLOAT) m_pProjectileFX->nVelocity; + if (m_bAltFire) + { + fVel = (LTFLOAT) m_pProjectileFX->nAltVelocity; + } + + LTFLOAT fMultiplier = 1.0f; + if (m_pClientDE->GetSConValueFloat("MissileSpeed", fMultiplier) != LT_NOTFOUND) + { + fVel *= fMultiplier; + } + + vVel = vF * fVel; + g_pPhysicsLT->SetVelocity(m_hServerObject, &vVel); + } + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::Update +// +// PURPOSE: Update the weapon fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CProjectileFX::Update() +{ + if (!m_pClientDE) return LTFALSE; + + + if (g_pClientMultiplayerMgr->IsConnectedToRemoteServer( ) && m_hServerObject) + { + // If this is a local fx, we control the position of the "server object"... + + if (m_bLocal) + { + if (!MoveServerObj()) + { + Detonate(LTNULL); + + // Remove the "server" object... + + m_pClientDE->RemoveObject(m_hServerObject); + m_hServerObject = LTNULL; + m_bWantRemove = LTTRUE; + } + } + } + + + // Update fx positions... + + LTRotation rRot; + LTVector vPos; + + if (m_hServerObject) + { + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + } + + + // See if it is time to go away... + + if (m_bWantRemove) + { + RemoveFX(); + return LTFALSE; + } + + + if (m_pSmokeTrail) + { + m_pSmokeTrail->Update(); + } + + + if (m_hFlare) + { + g_pLTClient->SetObjectPos(m_hFlare, &vPos); + g_pLTClient->SetObjectRotation(m_hFlare, &rRot); + } + + if (m_hLight) + { + g_pLTClient->SetObjectPos(m_hLight, &vPos); + g_pLTClient->SetObjectRotation(m_hLight, &rRot); + } + + if (m_hFlyingSound) + { + ((ILTClientSoundMgr*)m_pClientDE->SoundMgr())->SetSoundPosition(m_hFlyingSound, &vPos); + } + + + // Update this here so m_vLastServPos is updated after we use it... + + CSpecialFX::Update(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::MoveServerObj +// +// PURPOSE: Update mover +// +// ----------------------------------------------------------------------- // + +LTBOOL CProjectileFX::MoveServerObj() +{ + if (!m_pClientDE || !m_bLocal || !m_hServerObject || !g_pWeaponMgr) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // If we didn't hit anything we're done... + + if (fTime >= (m_fStartTime + m_pProjectileFX->fLifeTime)) + { + return LTFALSE; + } + + LTFLOAT fFrameTime = g_pGameClientShell->GetFrameTime(); + + LTBOOL bRet = LTTRUE; + + // Zero out the acceleration to start with. + + LTVector zeroVec; + zeroVec.Init(); + g_pPhysicsLT->SetAcceleration(m_hServerObject, &zeroVec); + + MoveInfo info; + + info.m_hObject = m_hServerObject; + info.m_dt = fFrameTime; + ((ILTClientPhysics*)g_pPhysicsLT)->UpdateMovement(&info); + + if (info.m_Offset.MagSqr() > 0.01f) + { + LTVector vDiff, vNewPos, vCurPos; + m_pClientDE->GetObjectPos(m_hServerObject, &vCurPos); + vNewPos = vCurPos + info.m_Offset; + g_pPhysicsLT->MoveObject(m_hServerObject, &vNewPos, 0); + + vDiff = vCurPos - vNewPos; + if (vDiff.MagSqr() < 5.0f) + { + bRet = LTFALSE; + } + } + else + { + bRet = LTFALSE; + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::GetParticleTrailBank +// +// PURPOSE: Get the CParticleTrailFX effect bank +// +// ----------------------------------------------------------------------- // + +CBankedList *CProjectileFX::GetParticleTrailBank() +{ + static CBankedList theBank; + + return &theBank; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::CreateSmokeTrail +// +// PURPOSE: Create a smoke trail special fx +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::CreateSmokeTrail(const LTVector & vPos, const LTRotation & rRot) +{ + if (!g_pGameClientShell || !m_hServerObject) return; + + // Particle smoke trail... + + PTCREATESTRUCT pt; + + pt.hServerObj = m_hServerObject; + pt.nType = m_pProjectileFX->nSmokeTrailType; + + m_pSmokeTrail = GetParticleTrailBank()->New(); + if (!m_pSmokeTrail) return; + + m_pSmokeTrail->Init(&pt); + m_pSmokeTrail->CreateObject(m_pClientDE); + } + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::CreateFlare +// +// PURPOSE: Create a flare special fx +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::CreateFlare(const LTVector & vPos, const LTRotation & rRot) +{ + if (!m_pClientDE || !m_hServerObject) return; + + ObjectCreateStruct createStruct; + createStruct.Clear(); + + if (!m_pProjectileFX->szFlareSprite[0]) return; + + SAFE_STRCPY(createStruct.m_Filename, m_pProjectileFX->szFlareSprite); + createStruct.m_ObjectType = OT_SPRITE; + createStruct.m_Flags = FLAG_VISIBLE; + VEC_COPY(createStruct.m_Pos, vPos); + createStruct.m_Rotation = rRot; + + m_hFlare = m_pClientDE->CreateObject(&createStruct); + if (!m_hFlare) return; + + LTFLOAT fScale = m_pProjectileFX->fFlareScale; + m_pClientDE->SetObjectScale(m_hFlare, <Vector(fScale, fScale, 1.0f)); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::CreateLight +// +// PURPOSE: Create a light special fx +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::CreateLight(const LTVector & vPos, const LTRotation & rRot) +{ + if (!m_pClientDE || !m_hServerObject) return; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_DONTLIGHTBACKFACING; + VEC_COPY(createStruct.m_Pos, vPos); + + m_hLight = m_pClientDE->CreateObject(&createStruct); + if (!m_hLight) return; + + LTVector vColor = m_pProjectileFX->vLightColor; + LTFLOAT fRadius = (LTFLOAT) m_pProjectileFX->nLightRadius; + + m_pClientDE->SetLightColor(m_hLight, vColor.x, vColor.y, vColor.z); + m_pClientDE->SetLightRadius(m_hLight, fRadius); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::CreateFlyingSound +// +// PURPOSE: Create the flying sound +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::CreateFlyingSound(const LTVector & vPos, const LTRotation & rRot) +{ + if (!m_pClientDE || m_hFlyingSound || !g_pWeaponMgr) return; + + char buf[MAX_CS_FILENAME_LEN]; + buf[0] = '\0'; + + LTFLOAT fRadius = (LTFLOAT) m_pProjectileFX->nSoundRadius; + if (m_pProjectileFX->szSound[0] ) + { + m_hFlyingSound = g_pClientSoundMgr->PlaySoundFromPos((LTVector)vPos, m_pProjectileFX->szSound, + fRadius, SOUNDPRIORITY_MISC_LOW, PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::RemoveFX +// +// PURPOSE: Remove all fx +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::RemoveFX() +{ + if (!g_pGameClientShell || !m_pClientDE) return; + + if (m_pSmokeTrail) + { + GetParticleTrailBank()->Delete((CParticleTrailFX*)m_pSmokeTrail); + m_pSmokeTrail = LTNULL; + } + + if (m_hFlare) + { + m_pClientDE->RemoveObject(m_hFlare); + m_hFlare = LTNULL; + } + + if (m_hLight) + { + m_pClientDE->RemoveObject(m_hLight); + m_hLight = LTNULL; + } + + if (m_hFlyingSound) + { + m_pClientDE->SoundMgr()->KillSound(m_hFlyingSound); + m_hFlyingSound = LTNULL; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::HandleTouch() +// +// PURPOSE: Handle touch notify message +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::HandleTouch(CollisionInfo *pInfo) +{ + if (!m_pClientDE || !pInfo || !pInfo->m_hObject || !g_pGameClientShell) return; + + // Let it get out of our bounding box... + + CMoveMgr* pMoveMgr = g_pPlayerMgr->GetMoveMgr(); + if (pMoveMgr) + { + // Don't colide with the move mgr object... + + HLOCALOBJ hMoveObj = pMoveMgr->GetObject(); + if (pInfo->m_hObject == hMoveObj) return; + + // Don't colide with the player object... + + HLOCALOBJ hPlayerObj = m_pClientDE->GetClientObject(); + if (pInfo->m_hObject == hPlayerObj) return; + } + + + // See if we want to impact on this object... + + uint32 dwUsrFlags; + g_pCommonLT->GetObjectFlags(pInfo->m_hObject, OFT_User, dwUsrFlags); + if (dwUsrFlags & USRFLG_IGNORE_PROJECTILES) return; + + LTBOOL bIsWorld = IsMainWorld(pInfo->m_hObject); + + // Don't impact on non-solid objects... + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(pInfo->m_hObject, OFT_Flags, dwFlags); + if (!bIsWorld && !(dwFlags & FLAG_SOLID)) return; + + + // See if we hit the sky... + + if (bIsWorld) + { + SurfaceType eType = GetSurfaceType(pInfo->m_hPoly); + + if (eType == ST_SKY) + { + m_bWantRemove = LTTRUE; + return; + } + else if (eType == ST_INVISIBLE) + { + // Keep going, ignore this object... + return; + } + } + + Detonate(pInfo); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CProjectileFX::Detonate() +// +// PURPOSE: Handle blowing up the projectile +// +// ----------------------------------------------------------------------- // + +void CProjectileFX::Detonate(CollisionInfo* pInfo) +{ + if (!m_pClientDE || m_bDetonated) return; + + m_bDetonated = LTTRUE; + + SurfaceType eType = ST_UNKNOWN; + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + // Determine the normal of the surface we are impacting on... + + LTVector vNormal; + VEC_SET(vNormal, 0.0f, 1.0f, 0.0f); + + if (pInfo) + { + if (pInfo->m_hObject) + { + eType = GetSurfaceType(pInfo->m_hObject); + } + else if (pInfo->m_hPoly != INVALID_HPOLY) + { + eType = GetSurfaceType(pInfo->m_hPoly); + + VEC_COPY(vNormal, pInfo->m_Plane.m_Normal); + + LTRotation rRot(vNormal, LTVector(0.0f, 1.0f, 0.0f)); + m_pClientDE->SetObjectRotation(m_hServerObject, &rRot); + + // Calculate where we really hit the plane... + + LTVector vVel, vP0, vP1; + g_pPhysicsLT->GetVelocity(m_hServerObject, &vVel); + + VEC_COPY(vP1, vPos); + VEC_MULSCALAR(vVel, vVel, g_pGameClientShell->GetFrameTime()); + VEC_SUB(vP0, vP1, vVel); + + LTFLOAT fDot1 = VEC_DOT(pInfo->m_Plane.m_Normal, vP0) - pInfo->m_Plane.m_Dist; + LTFLOAT fDot2 = VEC_DOT(pInfo->m_Plane.m_Normal, vP1) - pInfo->m_Plane.m_Dist; + + if (fDot1 < 0.0f && fDot2 < 0.0f || fDot1 > 0.0f && fDot2 > 0.0f) + { + VEC_COPY(vPos, vP1); + } + else + { + LTFLOAT fPercent = -fDot1 / (fDot2 - fDot1); + VEC_LERP(vPos, vP0, vP1, fPercent); + } + } + } + else + { + // Since pInfo was null, this means the projectile's lifetime was up, + // so we just blow-up in the air. + + eType = ST_AIR; + } + + + HOBJECT hObj = !!pInfo ? pInfo->m_hObject : LTNULL; + ::AddLocalImpactFX(hObj, m_vFirePos, vPos, vNormal, eType, m_vPath, + m_nWeaponId, m_nAmmoId, 0); + + m_bWantRemove = LTTRUE; +} diff --git a/Jack/ClientShellDLL/ProjectileFX.h b/Jack/ClientShellDLL/ProjectileFX.h new file mode 100644 index 00000000..80abaacc --- /dev/null +++ b/Jack/ClientShellDLL/ProjectileFX.h @@ -0,0 +1,115 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ProjectileFX.h +// +// PURPOSE : Projectile special fx class - Definition +// +// CREATED : 7/6/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __PROJECTILE_FX_H__ +#define __PROJECTILE_FX_H__ + +#include "SpecialFX.h" +#include "WeaponMgr.h" +#include "PolyLineFX.h" +#include "ParticleTrailFX.h" + +struct PROJECTILECREATESTRUCT : public SFXCREATESTRUCT +{ + PROJECTILECREATESTRUCT(); + + uint8 nWeaponId; + uint8 nAmmoId; + uint8 nShooterId; + LTBOOL bLocal; + LTBOOL bAltFire; +}; + +inline PROJECTILECREATESTRUCT::PROJECTILECREATESTRUCT() +{ + nShooterId = -1; + nWeaponId = WMGR_INVALID_ID; + nAmmoId = WMGR_INVALID_ID; + bLocal = LTFALSE; + bAltFire = LTFALSE; +} + + +class CProjectileFX : public CSpecialFX +{ + public : + + CProjectileFX() : CSpecialFX() + { + m_nWeaponId = WMGR_INVALID_ID; + m_nAmmoId = WMGR_INVALID_ID; + m_nFX = 0; + + m_pSmokeTrail = LTNULL; + m_hFlare = LTNULL; + m_hLight = LTNULL; + m_hFlyingSound = LTNULL; + + m_nShooterId = -1; + m_bLocal = LTFALSE; + + m_fStartTime = 0.0f; + m_bDetonated = LTFALSE; + m_bAltFire = LTFALSE; + + m_pProjectileFX = LTNULL; + } + + ~CProjectileFX() + { + RemoveFX(); + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + void HandleTouch(CollisionInfo *pInfo); + + virtual uint32 GetSFXID() { return SFX_PROJECTILE_ID; } + + protected : + + void CreateFlare(const LTVector & vPos, const LTRotation & rRot); + void CreateLight(const LTVector & vPos, const LTRotation & rRot); + void CreateProjectile(const LTVector & vPos, const LTRotation & rRot); + void CreateFlyingSound(const LTVector & vPos, const LTRotation & rRot); + void CreateSmokeTrail(const LTVector & vPos, const LTRotation & rRot); + + void RemoveFX(); + + LTBOOL MoveServerObj(); + void Detonate(CollisionInfo* pInfo); + + static CBankedList *GetParticleTrailBank(); + + CSpecialFX* m_pSmokeTrail; // Smoke trail fx + PROJECTILEFX* m_pProjectileFX; + HOBJECT m_hFlare; // Flare fx + HOBJECT m_hLight; // Light fx + HLTSOUND m_hFlyingSound; // Sound of the projectile + + uint8 m_nWeaponId; // Id of weapon fired + uint8 m_nAmmoId; // Type of ammo fired + uint8 m_nFX; // FX associated with projectile + uint8 m_nShooterId; // Client Id of shooter + LTBOOL m_bLocal; // Did local client create this fx + LTBOOL m_bAltFire; // Alt-fire? + LTBOOL m_bDetonated; + + LTFLOAT m_fStartTime; + + LTVector m_vFirePos; + LTVector m_vPath; + +}; + +#endif // __PROJECTILE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/RadarObjectFX.cpp b/Jack/ClientShellDLL/RadarObjectFX.cpp new file mode 100644 index 00000000..0e268fba --- /dev/null +++ b/Jack/ClientShellDLL/RadarObjectFX.cpp @@ -0,0 +1,104 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : RadarObjectFX.h +// +// PURPOSE : RadarObject special fx class - Definition +// +// CREATED : 6/6/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "RadarObjectFX.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRadarObjectFX::CRadarObjectFX +// +// PURPOSE: ctor +// +// ----------------------------------------------------------------------- // + +CRadarObjectFX::CRadarObjectFX( ) +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRadarObjectFX::~CRadarObjectFX +// +// PURPOSE: dtor +// +// ----------------------------------------------------------------------- // + +CRadarObjectFX::~CRadarObjectFX( ) +{ + g_pRadar->RemoveObject( m_hServerObject ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: RadarObjectFX::Init +// +// PURPOSE: Init the RadarObject fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CRadarObjectFX::Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ) +{ + if( !hServObj ) return LTFALSE; + if( !CSpecialFX::Init( hServObj, pMsg )) return LTFALSE; + + if( !g_pGameClientShell->ShouldUseRadar() ) + return LTFALSE; + + m_cs.hServerObj = hServObj; + m_cs.Read( pMsg ); + + // If the object is supposed to start on add it to the radar immediately... + + if( m_cs.bOn ) + { + g_pRadar->AddObject( m_hServerObject, m_cs.nRadarTypeId, m_cs.nTeamId ); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRadarObjectFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CRadarObjectFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) return LTFALSE; + + m_cs.Read( pMsg ); + + // See if we should add the object to the radar or remove it... + + if( m_cs.bOn ) + { + g_pRadar->RemoveObject( m_hServerObject ); + g_pRadar->AddObject( m_hServerObject, m_cs.nRadarTypeId, m_cs.nTeamId ); + } + else + { + g_pRadar->RemoveObject( m_hServerObject ); + } + + return LTTRUE; +} + diff --git a/Jack/ClientShellDLL/RadarObjectFX.h b/Jack/ClientShellDLL/RadarObjectFX.h new file mode 100644 index 00000000..ea571b13 --- /dev/null +++ b/Jack/ClientShellDLL/RadarObjectFX.h @@ -0,0 +1,44 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : RadarObjectFX.h +// +// PURPOSE : RadarObject special fx class - Definition +// +// CREATED : 6/6/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __RADAR_OBJECT_FX_H__ +#define __RADAR_OBJECT_FX_H__ + +// +// Includes... +// + + #include "SpecialFX.h" + + +class CRadarObjectFX : public CSpecialFX +{ + public: // Methods... + + CRadarObjectFX(); + ~CRadarObjectFX(); + + + virtual LTBOOL Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ); + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_RADAROBJECT_ID; } + + virtual LTBOOL Update() { return !m_bWantRemove; } + + protected: // Members... + + RADAROBJCREATESTRUCT m_cs; +}; + + +#endif //__RADAR_OBJECT_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/RagDoll.cpp b/Jack/ClientShellDLL/RagDoll.cpp new file mode 100644 index 00000000..416004d6 --- /dev/null +++ b/Jack/ClientShellDLL/RagDoll.cpp @@ -0,0 +1,778 @@ +#include "stdafx.h" +#include "RagDoll.h" +#include "RagDollNode.h" +#include "RagDollConstraint.h" + + +//----------------------------------------------------------------------------------- +// Model Node +//----------------------------------------------------------------------------------- +class CModelNode +{ +public: + + //This is the ragdoll node that we should look to to grab our base position + CRagDollNode* m_pPosNode; + + //This serves as the primary node link in building the basis space + CRagDollNode* m_pPrimaryLink; + + //This serves as the secondary link in building the basis space + CRagDollNode* m_pSecondaryLink; + + //The matrix to convert the binding space orientation to the current space + LTMatrix m_mBasisOrientation; + + //the vector offset from its parent node + LTVector m_vParentOffset; + + //the rag doll that we belong to (opaque to this class) + CRagDoll* m_pRagDoll; + + //the node that we are tracking this + HMODELNODE m_hModelNode; +}; + + +//----------------------------------------------------------------------------------- +// A function that given a model node, it will attempt to build up an orienation +// matrix for the node +//----------------------------------------------------------------------------------- +void BuildModelNodeOrientation(const CModelNode& Node, const LTVector& vDefaultUp, uint32 nCurrPos, LTMatrix& mOutMat) +{ + //we first off make the assumption that the right vector is along the primary link, and that this + //is the most stable of all the axis + LTVector vRight = Node.m_pPosNode->m_vPosition[nCurrPos] - Node.m_pPrimaryLink->m_vPosition[nCurrPos]; + vRight.Normalize(); + + //determine if we can build a plane out of the basis or not + LTVector vOther = Node.m_pSecondaryLink->m_vPosition[nCurrPos] - Node.m_pPosNode->m_vPosition[nCurrPos]; + vOther.Normalize(); + + LTVector vUp; + + float fDot = vOther.Dot(vRight); + + if(fabs(vOther.Dot(vRight)) > 0.95f) + { + //these are too close to forming a line, we have to use the default + vUp = vDefaultUp; + } + else + { + //alright, build up a basis space that we can orient off of + vUp = vRight.Cross(vOther); + vUp.Normalize(); + + //now orthogonalize the basis space + LTVector vForward = vUp.Cross(vRight); + vForward.Normalize(); + + //install that into a matrix so that we can apply the node offset to it + LTMatrix mMat; + mMat.SetBasisVectors(&vRight, &vUp, &vForward); + + //now apply our transformation to it + mMat = mMat * Node.m_mBasisOrientation; + + //and reget the up out of it + vUp.Init(mMat.m[0][1], mMat.m[1][1], mMat.m[2][1]); + } + + //now orthogonalize the basis space + LTVector vForward = vUp.Cross(vRight); + vForward.Normalize(); + + vUp = vRight.Cross(vForward); + + mOutMat.SetBasisVectors(&vRight, &vUp, &vForward); +} + +//----------------------------------------------------------------------------------- +// Node Control function +//----------------------------------------------------------------------------------- + +static void RagDollListenNodeControlFn(const NodeControlData& Data, void* pUserData) +{ + //some sanity checks + assert(Data.m_pFromParentTransform && Data.m_pNodeTransform && Data.m_pParentTransform); + + //see if we have no node assocaited with this data. In that case, we just want to return + //the animation transform + if(!pUserData) + return; + + //our user data is a ragdoll node + CRagDollNode* pRagNode = (CRagDollNode*)pUserData; + + //now get the handle to the ragdoll that this belongs to + CRagDoll* pRagDoll = pRagNode->m_pRagDoll; + + //determine which position we need to store this in + uint32 nStorePos = pRagDoll->GetCurrentPosition(); + + //we just need to grab the position from the node + Data.m_pNodeTransform->GetTranslation(pRagNode->m_vPosition[nStorePos]); +} + +static void RagDollNodeControlFn(const NodeControlData& Data, void* pUserData) +{ + //some sanity checks + assert(Data.m_pFromParentTransform && Data.m_pNodeTransform && Data.m_pParentTransform); + + //see if we have no node assocaited with this data. In that case, we just want to return + //the animation transform + if(!pUserData) + return; + + //save the default animation up, we may need to use that + LTVector vAnimationUp(Data.m_pNodeTransform->m[0][1], Data.m_pNodeTransform->m[1][1], Data.m_pNodeTransform->m[2][1]); + + //our user data is a ragdoll node + CModelNode* pModelNode = (CModelNode*)pUserData; + + //figure out the correct positional index + uint32 nPosIndex = pModelNode->m_pRagDoll->GetCurrentPosition(); + + //we just need to steal our node orientation and position + BuildModelNodeOrientation(*pModelNode, vAnimationUp, nPosIndex, *Data.m_pNodeTransform); + + //override the translation + Data.m_pNodeTransform->m[0][3] = pModelNode->m_pPosNode->m_vPosition[nPosIndex].x; + Data.m_pNodeTransform->m[1][3] = pModelNode->m_pPosNode->m_vPosition[nPosIndex].y; + Data.m_pNodeTransform->m[2][3] = pModelNode->m_pPosNode->m_vPosition[nPosIndex].z; +} + +//node control function to handle all the non-simulated nodes in an active rag doll +static void RagDollExtraNodeControlFn(const NodeControlData& Data, void* pUserData) +{ + //all we need to do is to apply our binding position transform on top of our parent's + //transform and all should be good + *Data.m_pNodeTransform = *Data.m_pParentTransform * *Data.m_pFromParentTransform; +} + +//----------------------------------------------------------------------------------- +// CRagDoll +//----------------------------------------------------------------------------------- + +CRagDoll::CRagDoll(HOBJECT hModel, uint32 nMaxNodes, uint32 nMaxConstraints, uint32 nMaxModelNodes) : + m_fCOR(0.001f), + m_nNumIterations(5), + m_fPrevFrameDelta(0.1f), + m_nCurrentIndex(0), + m_pNodes(NULL), + m_nNumNodes(0), + m_nMaxNodes(0), + m_pConstraints(NULL), + m_nNumConstraints(0), + m_nMaxConstraints(0), + m_pModelNodes(NULL), + m_nNumModelNodes(0), + m_nMaxModelNodes(0), + m_hModel(hModel), + m_bFirstUpdate(true), + m_bValidLastUpdateTime(false), + m_hMovementNode(INVALIDRAGDOLLNODE), + m_fDragAmount(0.3f), + m_fFrictionConstant(1.0f) +{ + m_vAccel.Init(0, 0, 0); + + m_pNodes = debug_newa(CRagDollNode, nMaxNodes); + if(m_pNodes) + m_nMaxNodes = nMaxNodes; + + m_pConstraints = debug_newa(CRagDollConstraint*, nMaxConstraints); + if(m_pConstraints) + m_nMaxConstraints = nMaxConstraints; + + m_pModelNodes = debug_newa(CModelNode, nMaxModelNodes); + if(m_pModelNodes) + m_nMaxModelNodes = nMaxModelNodes; +} + +CRagDoll::~CRagDoll() +{ + //clean up + Free(); +} + + +//this returns the positions of the nodes in the current frame +uint32 CRagDoll::GetCurrentPosition() +{ + return m_nCurrentIndex; +} + + +//this returns the positions of the nodes from the previous frame +uint32 CRagDoll::GetPreviousPosition() +{ + return (m_nCurrentIndex + 1) % 2; +} + + +//this tells the doll to swap the status of the positions (so current becomes previous, etc) +void CRagDoll::SwapPositions() +{ + m_nCurrentIndex = GetPreviousPosition(); +} + + +//accesses the coefficient of restitution (fraction of remaining energy after a bounce) of the model +float CRagDoll::GetCOR() const +{ + return m_fCOR; +} + +void CRagDoll::SetCOR(float fCOR) +{ + m_fCOR = fCOR; +} + + +//accesses the number of iterations to perform on this model +uint32 CRagDoll::GetNumIterations() const +{ + return m_nNumIterations; +} + +void CRagDoll::SetNumIterations(uint32 nNumIterations) +{ + m_nNumIterations = nNumIterations; +} + + +//gets the stat that the ragdoll is currently in +CRagDoll::ERagDollState CRagDoll::GetState() const +{ + return m_eState; +} + +void CRagDoll::SetState(ERagDollState eState) +{ + m_eState = eState; +} + +//accessors for the global acceleration that will be applied on the model each frame +const LTVector& CRagDoll::GetAccel() const +{ + return m_vAccel; +} + +void CRagDoll::SetAccel(const LTVector& vAccel) +{ + m_vAccel = vAccel; +} + +//creates a link from a model node to a ragdoll node that will use the passed in nodes in order +//to determine its position and orientation +bool CRagDoll::CreateModelNode(const char* pszNodeName, HRAGDOLLNODE hPos, HRAGDOLLNODE hPrimaryLink, HRAGDOLLNODE hSecondaryLink) +{ + //make sure things are valid + if(!m_hModel || !pszNodeName) + return false; + + //make sure we have room + if(m_nNumModelNodes >= m_nMaxModelNodes) + return false; + + //alright, now make sure that our links are valid for orienation + if((hPos == INVALIDRAGDOLLNODE) || (hPrimaryLink == INVALIDRAGDOLLNODE) || (hSecondaryLink == INVALIDRAGDOLLNODE)) + return false; + + //try and find the node + HMODELNODE hNode; + if(g_pLTClient->GetModelLT()->GetNode(m_hModel, const_cast(pszNodeName), hNode) != LT_OK) + return false; + + //alright, everything looks good, create it + CModelNode* pNode = &m_pModelNodes[m_nNumModelNodes]; + + pNode->m_pPosNode = (hPos == INVALIDRAGDOLLNODE) ? NULL : &m_pNodes[hPos]; + pNode->m_pPrimaryLink = (hPrimaryLink == INVALIDRAGDOLLNODE) ? NULL : &m_pNodes[hPrimaryLink]; + pNode->m_pSecondaryLink = (hSecondaryLink == INVALIDRAGDOLLNODE) ? NULL : &m_pNodes[hSecondaryLink]; + pNode->m_pRagDoll = this; + pNode->m_hModelNode = hNode; + + //setup the default transformation matrix + //we first off make the assumption that the right vector is along the primary link, and that this + //is the most stable of all the axis + LTVector vRight = pNode->m_pPosNode->m_vPosition[GetCurrentPosition()] - pNode->m_pPrimaryLink->m_vPosition[GetCurrentPosition()]; + vRight.Normalize(); + + //determine if we can build a plane out of the basis or not + LTVector vOther = pNode->m_pSecondaryLink->m_vPosition[GetCurrentPosition()] - pNode->m_pPosNode->m_vPosition[GetCurrentPosition()]; + vOther.Normalize(); + + LTVector vUp; + + //alright, build up a basis space that we can orient off of + vUp = vRight.Cross(vOther); + vUp.Normalize(); + + //now orthogonalize the basis space + LTVector vForward = vUp.Cross(vRight); + vForward.Normalize(); + + vUp = vRight.Cross(vForward); + + //install that into a matrix so that we can apply the node offset to it + LTMatrix mMat; + mMat.SetBasisVectors(&vRight, &vUp, &vForward); + mMat.Transpose(); + + LTMatrix mBindPoseOr; + g_pLTClient->GetModelLT()->GetBindPoseNodeTransform(m_hModel, pNode->m_hModelNode, mBindPoseOr); + mBindPoseOr.SetTranslation(0, 0, 0); + + pNode->m_mBasisOrientation = mMat * mBindPoseOr; + + //increment our count + m_nNumModelNodes++; + + //success + return true; +} + + +//creates a node from the specified model node +HRAGDOLLNODE CRagDoll::CreateNode(const char* pszNodeName, float fRadius, float fWeight) +{ + //make sure things are valid + if(!m_hModel || !pszNodeName) + return INVALIDRAGDOLLNODE; + + //make sure we have room + if(m_nNumNodes >= m_nMaxNodes) + return INVALIDRAGDOLLNODE; + + //try and find the node + HMODELNODE hNode; + if(g_pLTClient->GetModelLT()->GetNode(m_hModel, const_cast(pszNodeName), hNode) != LT_OK) + return INVALIDRAGDOLLNODE; + + //get the node we are storing this in + CRagDollNode* pNode = &m_pNodes[m_nNumNodes]; + + //ok, we have the node, initialize it + pNode->m_hModelNode = hNode; + pNode->m_pRagDoll = this; + pNode->m_fBSphereRadius = fRadius; + pNode->m_fWeight = fWeight; + + //update the position of this node + LTMatrix mTransform; + g_pLTClient->GetModelLT()->GetBindPoseNodeTransform(m_hModel, pNode->m_hModelNode, mTransform); + mTransform.GetTranslation(pNode->m_vPosition[GetCurrentPosition()]); + pNode->m_vPosition[GetPreviousPosition()] = pNode->m_vPosition[GetCurrentPosition()]; + + //we need to add the listener onto the node now so that when the ragdoll is activated we can + //take over from there + g_pLTClient->GetModelLT()->AddNodeControlFn(m_hModel, hNode, RagDollListenNodeControlFn, pNode); + + //inc our node count + m_nNumNodes++; + + //the rest will be filled out later after the constraints have been done + return (HRAGDOLLNODE)(m_nNumNodes - 1); +} + +//creates a distance constraint between two nodes +bool CRagDoll::AddConstraint(const CRagDollConstraint& Constraint) +{ + //make sure that we have room + if(m_nNumConstraints >= m_nMaxConstraints) + return false; + + m_pConstraints[m_nNumConstraints] = Constraint.Clone(); + + if(m_pConstraints[m_nNumConstraints]) + { + m_nNumConstraints++; + return true; + } + + //the cloning failed + return false; +} + +//called to finalize the creation of a ragdoll. This must be called before update is, otherwise +//update will fail +bool CRagDoll::ActivateRagDoll() +{ + //now run through our constraints and allow them to initialize and make sure they are valid + for(uint32 nCurrConstraint = 0; nCurrConstraint < m_nNumConstraints; nCurrConstraint++) + { + CRagDollConstraint* pConstraint = m_pConstraints[nCurrConstraint]; + + if(!pConstraint->IsValid()) + return false; + } + + //now we need to get all the nodes animation position and duplicate those + g_pLTClient->GetModelLT()->ApplyAnimations(m_hModel); + + //we can now also remove the listener node controls since we are taking over now + uint32 nCurrNode; + for(nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + CRagDollNode* pNode = &m_pNodes[nCurrNode]; + + //remove the listener + g_pLTClient->GetModelLT()->RemoveNodeControlFn(m_hModel, pNode->m_hModelNode, RagDollListenNodeControlFn, pNode); + } + + //we now also need to add th extra node control function to all nodes in the model so that they + //will not play their animation + g_pLTClient->GetModelLT()->AddNodeControlFn(m_hModel, RagDollExtraNodeControlFn, NULL); + + //alright, now we need to run through and duplicate the node data so that in + //the worst case scenario the animation is played for 0 frames and we start out with a 0 velocity + //on our nodes + for(nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + CRagDollNode* pNode = &m_pNodes[nCurrNode]; + pNode->m_vPosition[GetPreviousPosition()] = pNode->m_vPosition[GetCurrentPosition()]; + } + + //we now need to hook up all the node controllers + for(uint32 nCurrModelNode = 0; nCurrModelNode < m_nNumModelNodes; nCurrModelNode++) + { + CModelNode* pModelNode = &m_pModelNodes[nCurrModelNode]; + g_pLTClient->GetModelLT()->AddNodeControlFn(m_hModel, pModelNode->m_hModelNode, RagDollNodeControlFn, pModelNode); + + //since we are actually updating this node, we can remove the extra node tracker from it + g_pLTClient->GetModelLT()->RemoveNodeControlFn(m_hModel, pModelNode->m_hModelNode, RagDollExtraNodeControlFn, NULL); + } + + + //ok, we can finally switch into the active state + SetState(eRagDollState_Active); + + //we are active and live, let us rag this doll + return true; +} + + + +//called to update this model. This should be called before any accessing of the nodes since it +//will only evaluate itself on the first call of the frame +bool CRagDoll::Update() +{ + //we need to determine what the frame delta is + float fFrameDelta = g_pLTClient->GetFrameTime(); + + //see if we just need to grab the time + if(!m_bValidLastUpdateTime) + { + m_fPrevFrameDelta = fFrameDelta; + m_bValidLastUpdateTime = true; + return true; + } + + //check for too short of updates + if(fabs(fFrameDelta) < 0.001f) + { + //we don't need to update + return true; + } + + //see what mode we are in... + bool bRV; + if(GetState() == eRagDollState_Listen) + { + //we are in a listen mode, just grab the new positions + bRV = UpdateListen(); + } + else + { + //we are in an active state. Update our ragdoll + bRV = UpdateRagDoll(fFrameDelta); + + //update our position if necessary + if(m_hMovementNode != INVALIDRAGDOLLNODE) + { + CRagDollNode& MovementNode = m_pNodes[m_hMovementNode]; + g_pLTClient->SetObjectPos(m_hModel, &MovementNode.m_vPosition[GetCurrentPosition()], TRUE); + } + } + + //update our state to reflect the new times + m_fPrevFrameDelta = fFrameDelta; + + return bRV; +} + +//cleans up all allocated memory +void CRagDoll::Free() +{ + //run through and delete each constraint + for(uint32 nCurrConstraint = 0; nCurrConstraint < m_nNumConstraints; nCurrConstraint++) + { + debug_delete(m_pConstraints[nCurrConstraint]); + } + + debug_deletea(m_pConstraints); + m_pConstraints = NULL; + + m_nNumConstraints = 0; + m_nMaxConstraints = 0; + + //remove all the extra controllers from the model + g_pLTClient->GetModelLT()->RemoveNodeControlFn(m_hModel, RagDollExtraNodeControlFn, NULL); + + debug_deletea(m_pNodes); + m_pNodes = NULL; + + m_nNumNodes = 0; + m_nMaxNodes = 0; + + //we need to run through and remove the node controler from each node + for(uint32 nCurrModelNode = 0; nCurrModelNode < m_nNumModelNodes; nCurrModelNode++) + { + CModelNode* pModelNode = &m_pModelNodes[nCurrModelNode]; + g_pLTClient->GetModelLT()->RemoveNodeControlFn(m_hModel, pModelNode->m_hModelNode, RagDollNodeControlFn, pModelNode); + } + + debug_deletea(m_pModelNodes); + m_pModelNodes = NULL; + + m_nNumModelNodes = 0; + m_nMaxModelNodes = 0; +} + +//during a listening state, this will just run through and grab new positions +bool CRagDoll::UpdateListen() +{ + //we need to swap our positions since the node controller will be filling in the current + SwapPositions(); + + //so we just need to update the animation, the node controller will listen and fill + //in the positions in the current field... + g_pLTClient->GetModelLT()->ApplyAnimations(m_hModel); + + //success + return true; +} + +//applies the forces onto each node +bool CRagDoll::ApplyForces(float fNewFrameTime) +{ + uint32 nCurrIndex = GetCurrentPosition(); + uint32 nPrevIndex = GetPreviousPosition(); + + //the acceleration scale is dependant upon the square of the frame time + float fAccelScale = fNewFrameTime * fNewFrameTime; + + //calculate a global acceleration to use + LTVector vGlobalAccel = m_vAccel * fAccelScale; + + float fVelocityScale = (float)pow(1.0f - m_fDragAmount, fNewFrameTime) * fNewFrameTime / m_fPrevFrameDelta; + + //the position is equal to the old position plus the velocity plus the acceleration + for(uint32 nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + CRagDollNode* pNode = &m_pNodes[nCurrNode]; + + //now update the previous position with the updated position + pNode->m_vPosition[nPrevIndex] = pNode->m_vPosition[nCurrIndex] + fVelocityScale * (pNode->m_vPosition[nCurrIndex] - pNode->m_vPosition[nPrevIndex]) + vGlobalAccel; + } + + if(m_bFirstUpdate) + m_pNodes[0].m_vPosition[nPrevIndex] += LTVector(0, 0, -55.0f); + + if(rand() % 10 == 0) + { + LTVector vDir = LTVector(((rand() % 10000) - 5000) / 5000.0f, ((rand() % 10000) - 5000) / 5000.0f, ((rand() % 10000) - 5000) / 5000.0f); + vDir *= 70.0f; + + //m_pNodes[rand() % m_nNumNodes].m_vPosition[nPrevIndex] += vDir; + } + + //now we need to swap the indices so we will use the new position, and the old current becomes + //the previous + SwapPositions(); + + m_bFirstUpdate = false; + + //success + return true; +} + +bool CRagDoll::ApplyInterNodeCollisions() +{ + uint32 nPosIndex = GetCurrentPosition(); + + //run through each node + for(uint32 nNode1 = 0; nNode1 < m_nNumNodes; nNode1++) + { + for(uint32 nNode2 = nNode1 + 1; nNode2 < m_nNumNodes; nNode2++) + { + //see if these nodes intersect + float fSumRadius = m_pNodes[nNode1].m_fBSphereRadius + m_pNodes[nNode2].m_fBSphereRadius; + + //find the vector between the center points + LTVector vThroughCenters = m_pNodes[nNode2].m_vPosition[nPosIndex] - m_pNodes[nNode1].m_vPosition[nPosIndex]; + + //find the magnitude + float fDistSqr = vThroughCenters.MagSqr(); + + if(fDistSqr < fSumRadius * fSumRadius) + { + //they intersect, we need to find the amount of intersection and push each node back + //by half that amount + float fDist = (float)sqrt(fDistSqr); + float fMoveScale = (fSumRadius - fDist) * 0.5f / fDist; + + //now offset the vertices + m_pNodes[nNode1].m_vPosition[nPosIndex] -= vThroughCenters * fMoveScale; + m_pNodes[nNode2].m_vPosition[nPosIndex] += vThroughCenters * fMoveScale; + } + } + } + + return true; +} + +//runs through all the constraints and applies them the specified number of times +bool CRagDoll::ApplyConstraints(float fNewFrameTime) +{ + uint32 nPosIndex = GetCurrentPosition(); + uint32 nPrevIndex = GetPreviousPosition(); + + static const bool bApplyIntersections = true; + + LTVector vNodeBuff[256]; + for(uint32 nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + vNodeBuff[nCurrNode] = m_pNodes[nCurrNode].m_vPosition[nPrevIndex]; + } + + float fFrictionScale = m_fFrictionConstant * fNewFrameTime / (m_fPrevFrameDelta * m_nNumIterations); + + //run through the specified number of times and apply constraints + for(uint32 nIteration = 0; nIteration < m_nNumIterations; nIteration++) + { + for(uint32 nCurrConstraint = 0; nCurrConstraint < m_nNumConstraints; nCurrConstraint++) + { + m_pConstraints[nCurrConstraint]->Apply(nPosIndex); + } + + //we need to handle intersections + if(bApplyIntersections) + { + for(uint32 nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + CRagDollNode& Node = m_pNodes[nCurrNode]; + + LTVector vHitPos; + LTVector vHitNormal; + + if(g_pLTClient->IntersectSweptSphere(vNodeBuff[nCurrNode], Node.m_vPosition[nPosIndex], Node.m_fBSphereRadius, vHitPos, vHitNormal)) + { + Node.m_vPosition[nPosIndex] = vHitPos; + + /* + //find the amount of penetration + float fAmountPen = vDir.Dot(vHitPos - vStart); + + //we need to apply friction on it based upon this penetration depth + float fFriction = fAmountPen * fFrictionScale; + + //find the vector in which it was heading + LTVector vCurrVel = Node.m_vPosition[nPosIndex] - vNodeBuff[nCurrNode]; + vCurrVel.Normalize(); + + //find out how much friction is going to remove + LTVector vFriction = fFriction * vCurrVel; + + Node.m_vPosition[nPrevIndex] += vFriction; + + if(vCurrVel.Dot(Node.m_vPosition[nPosIndex] - Node.m_vPosition[nPrevIndex]) <= 0.0f) + { + Node.m_vPosition[nPrevIndex] = Node.m_vPosition[nPosIndex]; + } + */ + } + } + } + } + + ClampVelocities(); + + return true; +} + +//this function will actually handle the updating of the ragdoll positions based upon +//the forces +bool CRagDoll::UpdateRagDoll(float fCurrFrameTime) +{ + //phase 1: apply the acceleration to all the nodes + ApplyForces(fCurrFrameTime); + + //phase 2: recursively apply all the constraints + ApplyConstraints(fCurrFrameTime); + + return true; +} + +//gets a specified node, returns NULL if out of range +//NOTE: This is only intended for the constraints, this is not intended for general use +CRagDollNode* CRagDoll::GetNode(HRAGDOLLNODE hNode) +{ + if(hNode >= m_nNumNodes) + return NULL; + + return &m_pNodes[hNode]; +} + +//gets the distance between two ragdoll nodes. This assumes the nodes have had their positions updated +float CRagDoll::GetDistance(HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2) +{ + assert(hNode1 < m_nNumNodes); + assert(hNode2 < m_nNumNodes); + + return (m_pNodes[hNode1].m_vPosition[GetCurrentPosition()] - m_pNodes[hNode2].m_vPosition[GetCurrentPosition()]).Mag(); +} + +//specifies a node to use as the position for the model. Each update the model will be moved +//to the position of the node for purposes of visibility, hit detection, etc +bool CRagDoll::SetMovementNode(HRAGDOLLNODE hNode) +{ + m_hMovementNode = hNode; + return true; +} + +//runs through the nodes looking for nodes that should have their velocity set to 0 (prevents jitters) +bool CRagDoll::ClampVelocities() +{ + //run through all the nodes, find velocities that should be 0, and clamp them + static const float kfMinVelocitySqr = 0.01f * 0.01f; + + for(uint32 nCurrNode = 0; nCurrNode < m_nNumNodes; nCurrNode++) + { + CRagDollNode& Node = m_pNodes[nCurrNode]; + + if((Node.m_vPosition[GetCurrentPosition()] - Node.m_vPosition[GetPreviousPosition()]).MagSqr() <= kfMinVelocitySqr) + { + //clamp it to 0 + Node.m_vPosition[GetPreviousPosition()] = Node.m_vPosition[GetCurrentPosition()]; + } + } + + return true; +} + +//the amount of drag on the velocities (ie .3 would have 30% of the velocity energy removed per second) +void CRagDoll::SetDragAmount(float fAmount) +{ + m_fDragAmount = fAmount; +} + +//the frictional constant. The higher this is the stronger the force of friction +void CRagDoll::SetFrictionConstant(float fVal) +{ + m_fFrictionConstant = fVal; +} + diff --git a/Jack/ClientShellDLL/RagDoll.h b/Jack/ClientShellDLL/RagDoll.h new file mode 100644 index 00000000..44ca6d60 --- /dev/null +++ b/Jack/ClientShellDLL/RagDoll.h @@ -0,0 +1,170 @@ +#ifndef __RAGDOLL_H__ +#define __RAGDOLL_H__ + +class CRagDollNode; +class CModelNode; +class CRagDollConstraint; + +//A handle to a ragdoll node +typedef uint32 HRAGDOLLNODE; +#define INVALIDRAGDOLLNODE ((HRAGDOLLNODE)-1) + +class CRagDoll +{ +public: + + //the different states that the ragdoll can be in + enum ERagDollState { eRagDollState_Listen, + eRagDollState_Active + }; + + CRagDoll(HOBJECT hModel, uint32 nMaxNodes, uint32 nMaxConstraints, uint32 nMaxModelNodes); + ~CRagDoll(); + + //this returns the positions of the nodes in the current frame + uint32 GetCurrentPosition(); + + //this returns the positions of the nodes from the previous frame + uint32 GetPreviousPosition(); + + //accesses the coefficient of restitution (fraction of remaining energy after a bounce) of the model + float GetCOR() const; + void SetCOR(float fCOR); + + //accesses the number of iterations to perform on this model + uint32 GetNumIterations() const; + void SetNumIterations(uint32 nNumIterations); + + //gets the stat that the ragdoll is currently in + ERagDollState GetState() const; + + //accessors for the global acceleration that will be applied on the model each frame + const LTVector& GetAccel() const; + void SetAccel(const LTVector& vAccel); + + //creates a node from the specified model node + HRAGDOLLNODE CreateNode(const char* pszNodeName, float fRadius, float fWeight); + + //creates a link from a model node to a ragdoll node that will use the passed in nodes in order + //to determine its position and orientation + bool CreateModelNode(const char* pszNodeName, HRAGDOLLNODE hPos, HRAGDOLLNODE hPrimaryLink, HRAGDOLLNODE hSecondaryLink); + + //creates a distance constraint between two nodes + bool AddConstraint(const CRagDollConstraint& Constraint); + + //called to finalize the creation of a ragdoll. This must be called before update is, otherwise + //update will fail + bool ActivateRagDoll(); + + //called to update this model. This should be called before any accessing of the nodes since it + //will only evaluate itself on the first call of the frame + bool Update(); + + //gets the distance between two ragdoll nodes. This assumes the nodes have had their positions updated + float GetDistance(HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2); + + //gets a specified node, returns NULL if out of range + CRagDollNode* GetNode(HRAGDOLLNODE hNode); + + //specifies a node to use as the position for the model. Each update the model will be moved + //to the position of the node for purposes of visibility, hit detection, etc + bool SetMovementNode(HRAGDOLLNODE hNode); + + //the amount of drag on the velocities (ie .3 would have 30% of the velocity energy removed per second) + void SetDragAmount(float fAmount); + + //the frictional constant. The higher this is the stronger the force of friction + void SetFrictionConstant(float fVal); + + +private: + + void SetState(ERagDollState eState); + + //this tells the doll to swap the status of the positions (so current becomes previous, etc) + void SwapPositions(); + + //during a listening state, this will just run through and grab new positions + bool UpdateListen(); + + //applies the forces onto each node + bool ApplyForces(float fCurrFrameTime); + + //runs through all the constraints and applies them the specified number of times + bool ApplyConstraints(float fNewFrameTime); + + //handles nodes intersecting other node bounding spheres + bool ApplyInterNodeCollisions(); + + //runs through the nodes looking for nodes that should have their velocity set to 0 (prevents jitters) + bool ClampVelocities(); + + //this function will actually handle the updating of the ragdoll positions based upon + //the forces + bool UpdateRagDoll(float fCurrFrameTime); + + //cleans up all allocated memory + void Free(); + + //the model that this is ragdolling + HOBJECT m_hModel; + + //coefficient of restitution for the model + float m_fCOR; + + //number of iterations to perform + uint32 m_nNumIterations; + + //the time delta between the last and current frame + float m_fPrevFrameDelta; + + //initial update flag...this is just for testing (applying arbitrary forces) + //TODO:JO Remove this eventually + bool m_bFirstUpdate; + + //determines if the last time update value is valid + bool m_bValidLastUpdateTime; + + //the index into the position list for the current frame + uint32 m_nCurrentIndex; + + //current state of the ragdoll + ERagDollState m_eState; + + //the actual nodes that belong to this ragdoll + CRagDollNode* m_pNodes; + + //the number of nodes that we have allocated + uint32 m_nNumNodes; + uint32 m_nMaxNodes; + + //the amount of drag on the velocities (ie .3 would have 30% of the velocity energy removed per second) + float m_fDragAmount; + + //the frictional constant + float m_fFrictionConstant; + + //the distance constraints on the model + CRagDollConstraint** m_pConstraints; + + //the number of nodes that we have allocated + uint32 m_nNumConstraints; + uint32 m_nMaxConstraints; + + //the tyings from the model nodes to the ragdoll nodes + CModelNode* m_pModelNodes; + + //the number of nodes that we have allocated + uint32 m_nNumModelNodes; + uint32 m_nMaxModelNodes; + + //the acceleration on this ragdoll + LTVector m_vAccel; + + //the node that should be used for the position of the model + HRAGDOLLNODE m_hMovementNode; + +}; + +#endif + diff --git a/Jack/ClientShellDLL/RagDollConstraint.cpp b/Jack/ClientShellDLL/RagDollConstraint.cpp new file mode 100644 index 00000000..42d357c5 --- /dev/null +++ b/Jack/ClientShellDLL/RagDollConstraint.cpp @@ -0,0 +1,455 @@ +#include "stdafx.h" +#include "RagDollConstraint.h" +#include "RagDoll.h" +#include "RagDollNode.h" + +//------------------------------------------------------------------------------------------------ +// Utility functions +//------------------------------------------------------------------------------------------------ + +//given a weight value, it will determine if it is above 0, and if it is will use that. Otherwise +//it will look at the weighting of each node and use that to determine the value +void DetermineNodeWeights(float fDefaultWeight, const CRagDollNode* pNode1, const CRagDollNode* pNode2, float& fWeight1, float& fWeight2) +{ + if(fDefaultWeight < 0.0f) + { + //we want to determine the weighting based upon the weight of each node + fWeight1 = pNode2->m_fWeight / (pNode1->m_fWeight + pNode2->m_fWeight); + } + else + { + fWeight1 = fDefaultWeight; + } + + //clamp it to ensure it is valid + fWeight1 = LTCLAMP(fWeight1, 0.0f, 1.0f); + + //the other weight is simply the compliment of the first + fWeight2 = 1.0f - fWeight1; +} + + +//------------------------------------------------------------------------------------------------ +// CRagDollDistanceConstraint +//------------------------------------------------------------------------------------------------ + +CRagDollDistanceConstraint::CRagDollDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fDistance, float fNode1Weight) +{ + m_pNode[0] = NULL; + m_pNode[1] = NULL; + + if(pRagDoll) + { + m_pNode[0] = pRagDoll->GetNode(hNode1); + m_pNode[1] = pRagDoll->GetNode(hNode2); + + DetermineNodeWeights(fNode1Weight, m_pNode[0], m_pNode[1], m_fNode1Weight, m_fNode2Weight); + m_fDistance = (fDistance < 0.0f) ? pRagDoll->GetDistance(hNode1, hNode2) : fDistance; + } +} + +CRagDollDistanceConstraint::CRagDollDistanceConstraint(const CRagDollDistanceConstraint& rhs) +{ + m_pNode[0] = rhs.m_pNode[0]; + m_pNode[1] = rhs.m_pNode[1]; + m_fDistance = rhs.m_fDistance; + + m_fNode1Weight = rhs.m_fNode1Weight; + m_fNode2Weight = rhs.m_fNode2Weight; +} + +bool CRagDollDistanceConstraint::IsValid() const +{ + //only valid if both nodes are valid and not the same + return (m_pNode[0] && m_pNode[1]) && (m_pNode[0] != m_pNode[1]); +} + +void CRagDollDistanceConstraint::Apply(uint32 nPosIndex) +{ + //find the distance between them + LTVector vToOther = m_pNode[1]->m_vPosition[nPosIndex] - + m_pNode[0]->m_vPosition[nPosIndex]; + + float fDist = vToOther.Mag(); + float fScale = (fDist - m_fDistance) / fDist; + + //now offset the vertices + m_pNode[0]->m_vPosition[nPosIndex] += vToOther * fScale * m_fNode1Weight; + m_pNode[1]->m_vPosition[nPosIndex] -= vToOther * fScale * m_fNode2Weight; +} + +CRagDollConstraint* CRagDollDistanceConstraint::Clone() const +{ + return debug_new1(CRagDollDistanceConstraint, *this); +} + +//------------------------------------------------------------------------------------------------ +// CRagDollMinDistanceConstraint +//------------------------------------------------------------------------------------------------ + +CRagDollMinDistanceConstraint::CRagDollMinDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fDistance, float fNode1Weight) +{ + m_fDistance = fDistance; + + m_pNode[0] = NULL; + m_pNode[1] = NULL; + + if(pRagDoll) + { + m_pNode[0] = pRagDoll->GetNode(hNode1); + m_pNode[1] = pRagDoll->GetNode(hNode2); + + DetermineNodeWeights(fNode1Weight, m_pNode[0], m_pNode[1], m_fNode1Weight, m_fNode2Weight); + m_fDistance = (fDistance < 0.0f) ? pRagDoll->GetDistance(hNode1, hNode2) : fDistance; + } +} + +CRagDollMinDistanceConstraint::CRagDollMinDistanceConstraint(const CRagDollMinDistanceConstraint& rhs) +{ + m_pNode[0] = rhs.m_pNode[0]; + m_pNode[1] = rhs.m_pNode[1]; + m_fDistance = rhs.m_fDistance; + + m_fNode1Weight = rhs.m_fNode1Weight; + m_fNode2Weight = rhs.m_fNode2Weight; +} + +bool CRagDollMinDistanceConstraint::IsValid() const +{ + //only valid if both nodes are valid and not the same + return (m_pNode[0] && m_pNode[1]) && (m_pNode[0] != m_pNode[1]); +} + +void CRagDollMinDistanceConstraint::Apply(uint32 nPosIndex) +{ + //find the distance between them + LTVector vToOther = m_pNode[1]->m_vPosition[nPosIndex] - + m_pNode[0]->m_vPosition[nPosIndex]; + + float fDist = vToOther.Mag(); + + if(fDist < m_fDistance) + { + float fScale = (fDist - m_fDistance) / fDist; + + //now offset the vertices + m_pNode[0]->m_vPosition[nPosIndex] += vToOther * fScale * m_fNode1Weight; + m_pNode[1]->m_vPosition[nPosIndex] -= vToOther * fScale * m_fNode2Weight; + } +} + +CRagDollConstraint* CRagDollMinDistanceConstraint::Clone() const +{ + return debug_new1(CRagDollMinDistanceConstraint, *this); +} + +//------------------------------------------------------------------------------------------------ +// CRagDollMaxDistanceConstraint +//------------------------------------------------------------------------------------------------ + +CRagDollMaxDistanceConstraint::CRagDollMaxDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fDistance, float fNode1Weight) +{ + m_fDistance = fDistance; + + m_pNode[0] = NULL; + m_pNode[1] = NULL; + + if(pRagDoll) + { + m_pNode[0] = pRagDoll->GetNode(hNode1); + m_pNode[1] = pRagDoll->GetNode(hNode2); + + DetermineNodeWeights(fNode1Weight, m_pNode[0], m_pNode[1], m_fNode1Weight, m_fNode2Weight); + m_fDistance = (fDistance < 0.0f) ? pRagDoll->GetDistance(hNode1, hNode2) : fDistance; + } +} + +CRagDollMaxDistanceConstraint::CRagDollMaxDistanceConstraint(const CRagDollMaxDistanceConstraint& rhs) +{ + m_pNode[0] = rhs.m_pNode[0]; + m_pNode[1] = rhs.m_pNode[1]; + m_fDistance = rhs.m_fDistance; + + m_fNode1Weight = rhs.m_fNode1Weight; + m_fNode2Weight = rhs.m_fNode2Weight; +} + +bool CRagDollMaxDistanceConstraint::IsValid() const +{ + //only valid if both nodes are valid and not the same + return (m_pNode[0] && m_pNode[1]) && (m_pNode[0] != m_pNode[1]); +} + +void CRagDollMaxDistanceConstraint::Apply(uint32 nPosIndex) +{ + //find the distance between them + LTVector vToOther = m_pNode[1]->m_vPosition[nPosIndex] - + m_pNode[0]->m_vPosition[nPosIndex]; + + float fDist = vToOther.Mag(); + + if(fDist > m_fDistance) + { + float fScale = (fDist - m_fDistance) / fDist; + + //now offset the vertices + m_pNode[0]->m_vPosition[nPosIndex] += vToOther * fScale * m_fNode1Weight; + m_pNode[1]->m_vPosition[nPosIndex] -= vToOther * fScale * m_fNode2Weight; + } +} + +CRagDollConstraint* CRagDollMaxDistanceConstraint::Clone() const +{ + return debug_new1(CRagDollMaxDistanceConstraint, *this); +} + + +//------------------------------------------------------------------------------------------------ +// CRagDollInPlaneConstraint +//------------------------------------------------------------------------------------------------ +CRagDollInPlaneConstraint::CRagDollInPlaneConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hHinge, HRAGDOLLNODE hFirstPlaneCenter, HRAGDOLLNODE hFirstPlaneOther, HRAGDOLLNODE hEndFinalSeg, float fNormalScale, float fTolerance) : + m_pHinge(NULL), + m_pPlaneCenter(NULL), + m_pPlaneOther(NULL), + m_pConstrain(NULL), + m_fNormalScale(fNormalScale), + m_fTolerance(fTolerance) +{ + if(pRagDoll) + { + m_pHinge = pRagDoll->GetNode(hHinge); + m_pPlaneCenter = pRagDoll->GetNode(hFirstPlaneCenter); + m_pPlaneOther = pRagDoll->GetNode(hFirstPlaneOther); + m_pConstrain = pRagDoll->GetNode(hEndFinalSeg); + } +} + +CRagDollInPlaneConstraint::CRagDollInPlaneConstraint(const CRagDollInPlaneConstraint& rhs) : + m_pHinge(rhs.m_pHinge), + m_pPlaneCenter(rhs.m_pPlaneCenter), + m_pPlaneOther(rhs.m_pPlaneOther), + m_pConstrain(rhs.m_pConstrain), + m_fNormalScale(rhs.m_fNormalScale), + m_fTolerance(rhs.m_fTolerance) +{ +} + +void CRagDollInPlaneConstraint::Apply(uint32 nPosIndex) +{ + //find the plane pivot point (the connection between both points forming the first plane) + LTVector& vPivot = m_pPlaneCenter->m_vPosition[nPosIndex]; + + //find the vector that goes from the pivot point to the hinge point + LTVector vToHinge = m_pHinge->m_vPosition[nPosIndex] - vPivot; + LTVector vToOther = m_pPlaneOther->m_vPosition[nPosIndex] - vPivot; + + //find the plane normal + LTVector vPlaneNormal = vToOther.Cross(vToHinge); + vPlaneNormal.Normalize(); + + vPlaneNormal = vToHinge.Cross(vPlaneNormal) * m_fNormalScale; + vPlaneNormal.Normalize(); + + //move the point into the plane + LTVector& vConstrain = m_pConstrain->m_vPosition[nPosIndex]; + + float fDot = vPlaneNormal.Dot(vConstrain - vPivot); + + if(fDot < -m_fTolerance) + { + fDot += m_fTolerance; + vConstrain -= vPlaneNormal * fDot; + } + else if(fDot > m_fTolerance) + { + fDot -= m_fTolerance; + vConstrain -= vPlaneNormal * fDot; + } + + //success +} + +bool CRagDollInPlaneConstraint::IsValid() const +{ + return (m_pHinge && m_pPlaneCenter && m_pPlaneOther && m_pConstrain); +} + +CRagDollConstraint* CRagDollInPlaneConstraint::Clone() const +{ + return debug_new1(CRagDollInPlaneConstraint, *this); +} + +//------------------------------------------------------------------------------------------------ +// CRagDollAbovePlaneConstraint +//------------------------------------------------------------------------------------------------ +CRagDollAbovePlaneConstraint::CRagDollAbovePlaneConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPtInPlane, HRAGDOLLNODE hPtOnNormal, HRAGDOLLNODE hConstrain, float fNormalScale, float fPlaneOffset) : + m_pPtInPlane(NULL), + m_pPtOnNormal(NULL), + m_pConstrain(NULL), + m_fNormalScale(fNormalScale), + m_fPlaneOffset(fPlaneOffset) +{ + if(pRagDoll) + { + m_pPtInPlane = pRagDoll->GetNode(hPtInPlane); + m_pPtOnNormal = pRagDoll->GetNode(hPtOnNormal); + m_pConstrain = pRagDoll->GetNode(hConstrain); + } +} + +CRagDollAbovePlaneConstraint::CRagDollAbovePlaneConstraint(const CRagDollAbovePlaneConstraint& rhs) : + m_pPtInPlane(rhs.m_pPtInPlane), + m_pPtOnNormal(rhs.m_pPtOnNormal), + m_pConstrain(rhs.m_pConstrain), + m_fNormalScale(rhs.m_fNormalScale), + m_fPlaneOffset(rhs.m_fPlaneOffset) +{ +} + +void CRagDollAbovePlaneConstraint::Apply(uint32 nPosIndex) +{ + const LTVector& vPtInPlane = m_pPtInPlane->m_vPosition[nPosIndex]; + + //we first off need to caclulate the normal of the plane + LTVector vNormal = (m_pPtOnNormal->m_vPosition[nPosIndex] - vPtInPlane) * m_fNormalScale; + vNormal.Normalize(); + + //ok, now we see if the point is above the plane + LTVector& vConstrain = m_pConstrain->m_vPosition[nPosIndex]; + float fDot = vNormal.Dot(vConstrain - vPtInPlane) - m_fPlaneOffset; + + if(fDot < 0.0f) + { + vConstrain -= fDot * vNormal; + } +} + +bool CRagDollAbovePlaneConstraint::IsValid() const +{ + return (m_pPtInPlane && m_pPtOnNormal && m_pConstrain); +} + +CRagDollConstraint* CRagDollAbovePlaneConstraint::Clone() const +{ + return debug_new1(CRagDollAbovePlaneConstraint, *this); +} + +//------------------------------------------------------------------------------------------------ +// CRagDollAbovePlane3Constraint +//------------------------------------------------------------------------------------------------ +CRagDollAbovePlane3Constraint::CRagDollAbovePlane3Constraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPt1, HRAGDOLLNODE hPt2, HRAGDOLLNODE hPt3, HRAGDOLLNODE hConstrain, float fNormalScale, float fOffset) : + m_pPt1(NULL), + m_pPt2(NULL), + m_pPt3(NULL), + m_pConstrain(NULL), + m_fNormalScale(fNormalScale), + m_fOffset(fOffset) +{ + if(pRagDoll) + { + m_pPt1 = pRagDoll->GetNode(hPt1); + m_pPt2 = pRagDoll->GetNode(hPt2); + m_pPt3 = pRagDoll->GetNode(hPt3); + m_pConstrain = pRagDoll->GetNode(hConstrain); + } +} + +CRagDollAbovePlane3Constraint::CRagDollAbovePlane3Constraint(const CRagDollAbovePlane3Constraint& rhs) : + m_pPt1(rhs.m_pPt1), + m_pPt2(rhs.m_pPt2), + m_pPt3(rhs.m_pPt3), + m_pConstrain(rhs.m_pConstrain), + m_fNormalScale(rhs.m_fNormalScale), + m_fOffset(rhs.m_fOffset) +{ +} + +void CRagDollAbovePlane3Constraint::Apply(uint32 nPosIndex) +{ + const LTVector& vPtInPlane = m_pPt1->m_vPosition[nPosIndex]; + + //we first off need to caclulate the normal of the plane + LTVector vNormal = (m_pPt2->m_vPosition[nPosIndex] - vPtInPlane).Cross(m_pPt3->m_vPosition[nPosIndex] - vPtInPlane) * m_fNormalScale; + vNormal.Normalize(); + + //ok, now we see if the point is above the plane + LTVector& vConstrain = m_pConstrain->m_vPosition[nPosIndex]; + float fDot = vNormal.Dot(vConstrain - vPtInPlane) - m_fOffset; + + if(fDot < 0.0f) + { + vConstrain -= fDot * vNormal; + } +} + +bool CRagDollAbovePlane3Constraint::IsValid() const +{ + return (m_pPt1 && m_pPt2 && m_pPt3 && m_pConstrain); +} + +CRagDollConstraint* CRagDollAbovePlane3Constraint::Clone() const +{ + return debug_new1(CRagDollAbovePlane3Constraint, *this); +} + +//------------------------------------------------------------------------------------------------ +// CRagDollAbovePlaneOnEdgeConstraint +//------------------------------------------------------------------------------------------------ +CRagDollAbovePlaneOnEdgeConstraint::CRagDollAbovePlaneOnEdgeConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPt1, HRAGDOLLNODE hPt2, HRAGDOLLNODE hPt3, HRAGDOLLNODE hConstrain, float fNormalScale) : + m_pPt1(NULL), + m_pPt2(NULL), + m_pPt3(NULL), + m_pConstrain(NULL), + m_fNormalScale(fNormalScale) +{ + if(pRagDoll) + { + m_pPt1 = pRagDoll->GetNode(hPt1); + m_pPt2 = pRagDoll->GetNode(hPt2); + m_pPt3 = pRagDoll->GetNode(hPt3); + m_pConstrain = pRagDoll->GetNode(hConstrain); + } +} + +CRagDollAbovePlaneOnEdgeConstraint::CRagDollAbovePlaneOnEdgeConstraint(const CRagDollAbovePlaneOnEdgeConstraint& rhs) : + m_pPt1(rhs.m_pPt1), + m_pPt2(rhs.m_pPt2), + m_pPt3(rhs.m_pPt3), + m_pConstrain(rhs.m_pConstrain), + m_fNormalScale(rhs.m_fNormalScale) +{ +} + +void CRagDollAbovePlaneOnEdgeConstraint::Apply(uint32 nPosIndex) +{ + const LTVector& vPtInPlane = m_pPt1->m_vPosition[nPosIndex]; + + LTVector vEdge = m_pPt2->m_vPosition[nPosIndex] - vPtInPlane; + + //we first off need to caclulate the normal of the plane + LTVector vNormal = vEdge.Cross(m_pPt3->m_vPosition[nPosIndex] - vPtInPlane); + vNormal.Normalize(); + + //now we need to take that plane, and find the perpindicular plane that passes through the first edge + LTVector vEdgeNormal = vNormal.Cross(vEdge) * m_fNormalScale; + vEdgeNormal.Normalize(); + + //ok, now we see if the point is above the plane + LTVector& vConstrain = m_pConstrain->m_vPosition[nPosIndex]; + float fDot = vEdgeNormal.Dot(vConstrain - vPtInPlane); + + if(fDot < 0.0f) + { + vConstrain -= fDot * vEdgeNormal; + } +} + +bool CRagDollAbovePlaneOnEdgeConstraint::IsValid() const +{ + return (m_pPt1 && m_pPt2 && m_pPt3 && m_pConstrain); +} + +CRagDollConstraint* CRagDollAbovePlaneOnEdgeConstraint::Clone() const +{ + return debug_new1(CRagDollAbovePlaneOnEdgeConstraint, *this); +} diff --git a/Jack/ClientShellDLL/RagDollConstraint.h b/Jack/ClientShellDLL/RagDollConstraint.h new file mode 100644 index 00000000..ff57be9f --- /dev/null +++ b/Jack/ClientShellDLL/RagDollConstraint.h @@ -0,0 +1,191 @@ +#ifndef __RAGDOLLCONSTRAINT_H__ +#define __RAGDOLLCONSTRAINT_H__ + +class CRagDoll; +class CRagDollNode; +typedef uint32 HRAGDOLLNODE; + +class CRagDollConstraint +{ +public: + + CRagDollConstraint() {} + virtual ~CRagDollConstraint() {} + + //determines if this constraint is valid or not + virtual bool IsValid() const = 0; + + //called to apply the constraint + virtual void Apply(uint32 nPosIndex) = 0; + + //clones the constraint, allocating a new one with the standard C++ allocator + virtual CRagDollConstraint* Clone() const = 0; +}; + +//This is the standard distance constraint that keeps nodes a certain distance apart from one another +class CRagDollDistanceConstraint : + public CRagDollConstraint +{ +public: + + CRagDollDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fDistance = -1.0f, float fNode1Weight = -1.0f); + CRagDollDistanceConstraint(const CRagDollDistanceConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + CRagDollNode* m_pNode[2]; + float m_fDistance; + float m_fNode1Weight; + float m_fNode2Weight; +}; + +//This is the minimum distance constraint, meaning that nodes must be at least N units apart +// it doesn't care about max distances +class CRagDollMinDistanceConstraint : + public CRagDollConstraint +{ +public: + + CRagDollMinDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fMinDist = -1.0f, float fNode1Weight = -1.0f); + CRagDollMinDistanceConstraint(const CRagDollMinDistanceConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + CRagDollNode* m_pNode[2]; + float m_fDistance; + float m_fNode1Weight; + float m_fNode2Weight; +}; + +//This is the maximum distance constraint, meaning that nodes must be at most N units apart +// it doesn't care about min distances +class CRagDollMaxDistanceConstraint : + public CRagDollConstraint +{ +public: + + CRagDollMaxDistanceConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hNode1, HRAGDOLLNODE hNode2, float fMaxDist = -1.0f, float fNode1Weight = -1.0f); + CRagDollMaxDistanceConstraint(const CRagDollMaxDistanceConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + CRagDollNode* m_pNode[2]; + float m_fDistance; + float m_fNode1Weight; + float m_fNode2Weight; +}; + +//This will take two segments, from this create a plane. It will then create a plane using the first +//segment and the plane normal and constrain the third segment to that plane. This is useful for +//hinge joints in arms and legs +class CRagDollInPlaneConstraint : + public CRagDollConstraint +{ +public: + + CRagDollInPlaneConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hHinge, HRAGDOLLNODE hFirstPlaneCenter, HRAGDOLLNODE hFirstPlaneOther, HRAGDOLLNODE hEndFinalSeg, float fNormalScale, float fTolerance); + CRagDollInPlaneConstraint(const CRagDollInPlaneConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + CRagDollNode* m_pHinge; + CRagDollNode* m_pPlaneCenter; + CRagDollNode* m_pPlaneOther; + CRagDollNode* m_pConstrain; + float m_fNormalScale; + float m_fTolerance; +}; + +//Given two points it will form a plane passing through the first point, and ensure that the specified point +//is below that plane +class CRagDollAbovePlaneConstraint : + public CRagDollConstraint +{ +public: + + CRagDollAbovePlaneConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPtInPlane, HRAGDOLLNODE hPtOnNormal, HRAGDOLLNODE hConstrain, float fNormalScale = 1.0f, float fPlaneOffset = 0.0f); + CRagDollAbovePlaneConstraint(const CRagDollAbovePlaneConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + float m_fNormalScale; + float m_fPlaneOffset; + CRagDollNode* m_pPtInPlane; + CRagDollNode* m_pPtOnNormal; + CRagDollNode* m_pConstrain; +}; + +//Same as above, but plane is specified with 3 points in the plane +class CRagDollAbovePlane3Constraint : + public CRagDollConstraint +{ +public: + + CRagDollAbovePlane3Constraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPt1, HRAGDOLLNODE hPt2, HRAGDOLLNODE hPt3, HRAGDOLLNODE hConstrain, float fNormalScale = 1.0f, float fOffset = 0.0f); + CRagDollAbovePlane3Constraint(const CRagDollAbovePlane3Constraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + float m_fNormalScale; + float m_fOffset; + CRagDollNode* m_pPt1; + CRagDollNode* m_pPt2; + CRagDollNode* m_pPt3; + CRagDollNode* m_pConstrain; +}; + +//Simlar to above, it forms a plane from the 3 points, and then finds a perpindicular plane that +//lies along the first edge +class CRagDollAbovePlaneOnEdgeConstraint : + public CRagDollConstraint +{ +public: + + CRagDollAbovePlaneOnEdgeConstraint(CRagDoll* pRagDoll, HRAGDOLLNODE hPt1, HRAGDOLLNODE hPt2, HRAGDOLLNODE hPt3, HRAGDOLLNODE hConstrain, float fNormalScale = 1.0f); + CRagDollAbovePlaneOnEdgeConstraint(const CRagDollAbovePlaneOnEdgeConstraint& rhs); + + virtual void Apply(uint32 nPosIndex); + virtual bool IsValid() const; + virtual CRagDollConstraint* Clone() const; + + +private: + + float m_fNormalScale; + CRagDollNode* m_pPt1; + CRagDollNode* m_pPt2; + CRagDollNode* m_pPt3; + CRagDollNode* m_pConstrain; +}; + +#endif diff --git a/Jack/ClientShellDLL/RagDollDistanceConstraint.h b/Jack/ClientShellDLL/RagDollDistanceConstraint.h new file mode 100644 index 00000000..90d6fc57 --- /dev/null +++ b/Jack/ClientShellDLL/RagDollDistanceConstraint.h @@ -0,0 +1,38 @@ +#ifndef __RAGDOLLDISTANCECONSTRAINT_H__ +#define __RAGDOLLDISTANCECONSTRAINT_H__ + +class CRagDollNode; + +class CRagDollDistanceConstraint +{ +public: + + CRagDollDistanceConstraint() : + m_fDistance(0.0f) + { + m_pNode[0] = NULL; + m_pNode[1] = NULL; + } + + //returns true if the passed in node is involved in this constraint + bool UsesNode(const CRagDollNode* pNode) const + { + return (m_pNode[0] == pNode) || (m_pNode[1] == pNode); + } + + //returns the opposite node (assumes that the passed in node is used) + CRagDollNode* GetOpposite(const CRagDollNode* pNode) + { + return (m_pNode[0] == pNode) ? m_pNode[1] : m_pNode[0]; + } + + //the two nodes it links + CRagDollNode* m_pNode[2]; + + //the distance that should be preserved between them + float m_fDistance; + +private: +}; + +#endif diff --git a/Jack/ClientShellDLL/RagDollNode.h b/Jack/ClientShellDLL/RagDollNode.h new file mode 100644 index 00000000..00a58291 --- /dev/null +++ b/Jack/ClientShellDLL/RagDollNode.h @@ -0,0 +1,42 @@ +#ifndef __RAGDOLLNODE_H__ +#define __RAGDOLLNODE_H__ + +class CRagDoll; + +class CRagDollNode +{ +public: + + CRagDollNode() : + m_hModelNode(INVALID_MODEL_NODE), + m_pRagDoll(NULL), + m_fBSphereRadius(0.0f), + m_fWeight(1.0f) + { + } + + ~CRagDollNode() + { + } + + //the model node that this node corresponds to + HMODELNODE m_hModelNode; + + //the previous and current position of this node + LTVector m_vPosition[2]; + + //the radius of the bounding sphere (0 indicates don't perform collisions) + float m_fBSphereRadius; + + //the parent model. I know this is a cyclic dependency, but it is opaque to the rag doll node + //and is intended for use inside of the node controller + CRagDoll* m_pRagDoll; + + //this is the weight of the node + float m_fWeight; + +private: + +}; + +#endif diff --git a/Jack/ClientShellDLL/RandomSparksFX.cpp b/Jack/ClientShellDLL/RandomSparksFX.cpp new file mode 100644 index 00000000..8e7fa7bf --- /dev/null +++ b/Jack/ClientShellDLL/RandomSparksFX.cpp @@ -0,0 +1,180 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : RandomSparksFX.cpp +// +// PURPOSE : Sparks special FX - Implementation +// +// CREATED : 1/21/99 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "RandomSparksFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRandomSparksFX::Init +// +// PURPOSE: Init the sparks +// +// ----------------------------------------------------------------------- // + +LTBOOL CRandomSparksFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + RANDOMSPARKSCREATESTRUCT* pStruct = (RANDOMSPARKSCREATESTRUCT*)psfxCreateStruct; + VEC_COPY(m_vPos, pStruct->vPos); + VEC_COPY(m_vDir, pStruct->vDir); + m_nSparks = pStruct->nSparks; + m_fDuration = pStruct->fDuration; + m_vMinVelAdjust = pStruct->vMinVelAdjust; + m_vMaxVelAdjust = pStruct->vMaxVelAdjust; + m_fRadius = pStruct->fRadius; + + m_pTextureName = "SFX\\Impact\\Spr\\RandomSpark.spr"; + + VEC_SET(m_vColor1, 200.0f, 200.0f, 200.0f); + VEC_SET(m_vColor2, 255.0f, 255.0f, 255.0f); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRandomSparksFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CRandomSparksFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + LTBOOL bRet = CBaseParticleSystemFX::CreateObject(pClientDE); + + if (bRet) + { + bRet = AddSparks(); + } + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRandomSparksFX::Update +// +// PURPOSE: Update the smoke trail (add smoke) +// +// ----------------------------------------------------------------------- // + +LTBOOL CRandomSparksFX::Update() +{ + if (!CBaseParticleSystemFX::Update()) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + // Check to see if we should go away... + + if (fTime > m_fStartTime + m_fDuration) + { + return LTFALSE; + } + + + // Fade sparks over duration... + + LTFLOAT fScale = (m_fDuration - (fTime - m_fStartTime)) / m_fDuration; + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_hObject, r, g, b, fScale); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRandomSparksFX::AddSparks +// +// PURPOSE: Make the sparks +// +// ----------------------------------------------------------------------- // + +LTBOOL CRandomSparksFX::AddSparks() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + LTVector vMinOffset, vMaxOffset, vMinVel, vMaxVel; + VEC_SET(vMinOffset, -0.5f, -0.5f, -0.5f); + VEC_SET(vMaxOffset, 0.5f, 0.5f, 0.5f); + + LTFLOAT fVelOffset = VEC_MAG(m_vDir); + VEC_NORM(m_vDir); + + LTRotation rRot(m_vDir, LTVector(0.0f, 1.0f, 0.0f)); + + LTVector vF, vU, vR; + vF = rRot.Forward(); + vU = rRot.Up(); + vR = rRot.Right(); + + if (vF.y <= -0.95f || vF.y >= 0.95f) + { + vF.y = vF.y > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.x <= -0.95f || vF.x >= 0.95f) + { + vF.x = vF.x > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 0.0f, 1.0f, 0.0f); + VEC_SET(vU, 0.0f, 0.0f, 1.0f); + } + else if (vF.z <= -0.95f || vF.z >= 0.95f) + { + vF.z = vF.z > 0.0f ? 1.0f : -1.0f; + VEC_SET(vR, 1.0f, 0.0f, 0.0f); + VEC_SET(vU, 0.0f, 1.0f, 0.0f); + } + + LTVector vTemp; + + VEC_MULSCALAR(vMinVel, vF, fVelOffset * m_vMinVelAdjust.y); + VEC_MULSCALAR(vMaxVel, vF, fVelOffset * m_vMaxVelAdjust.y); + + VEC_MULSCALAR(vTemp, vR, -fVelOffset * m_vMinVelAdjust.x); + VEC_ADD(vMinVel, vMinVel, vTemp); + + VEC_MULSCALAR(vTemp, vR, fVelOffset * m_vMaxVelAdjust.x); + VEC_ADD(vMaxVel, vMaxVel, vTemp); + + VEC_MULSCALAR(vTemp, vU, -fVelOffset * m_vMinVelAdjust.z); + VEC_ADD(vMinVel, vMinVel, vTemp); + + VEC_MULSCALAR(vTemp, vU, fVelOffset * m_vMaxVelAdjust.z); + VEC_ADD(vMaxVel, vMaxVel, vTemp); + + vMinVel -= m_vVel; + vMaxVel -= m_vVel; + + int nNumSparks = GetNumParticles(m_nSparks); + + m_pClientDE->AddParticles(m_hObject, nNumSparks, + &vMinOffset, &vMaxOffset, // Position offset + &vMinVel, &vMaxVel, // Velocity + &m_vColor1, &m_vColor2, // Color + m_fDuration*0.5f, m_fDuration); + + m_fStartTime = m_pClientDE->GetTime(); + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/RandomSparksFX.h b/Jack/ClientShellDLL/RandomSparksFX.h new file mode 100644 index 00000000..aa621405 --- /dev/null +++ b/Jack/ClientShellDLL/RandomSparksFX.h @@ -0,0 +1,73 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : RandomSparksFX.h +// +// PURPOSE : Sparks special fx class - Definition +// +// CREATED : 1/21/99 +// +// ----------------------------------------------------------------------- // + +#ifndef __RANDOM_SPARKS_FX_H__ +#define __RANDOM_SPARKS_FX_H__ + +#include "BaseParticleSystemFX.h" + +struct RANDOMSPARKSCREATESTRUCT : public BPSCREATESTRUCT +{ + RANDOMSPARKSCREATESTRUCT(); + + LTVector vPos; + LTVector vDir; + uint8 nSparks; + LTFLOAT fDuration; + LTVector vMinVelAdjust; + LTVector vMaxVelAdjust; + LTFLOAT fRadius; +}; + +inline RANDOMSPARKSCREATESTRUCT::RANDOMSPARKSCREATESTRUCT() +{ + vPos.Init(); + vDir.Init(); + vMinVelAdjust.Init(1, 0.025f, 1); + vMaxVelAdjust.Init(1, 1, 1); + nSparks = 0; + fDuration = 0.0f; + fRadius = 300.0f; +} + + +class CRandomSparksFX : public CBaseParticleSystemFX +{ + public : + + CRandomSparksFX() : CBaseParticleSystemFX() + { + VEC_INIT(m_vDir); + m_nSparks = 5; + m_fDuration = 1.0f; + m_fStartTime = 0.0f; + m_vMinVelAdjust.Init(1, 0.025f, 1); + m_vMaxVelAdjust.Init(1, 1, 1); + } + + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_RANDOMSPARKS_ID; } + + private : + + LTBOOL AddSparks(); + + LTVector m_vDir; // Direction sparks shoot + uint8 m_nSparks; // Number of sparks + LTFLOAT m_fDuration; // Life time of sparks + LTFLOAT m_fStartTime; // When did we start + LTVector m_vMinVelAdjust; // How much to adjust the min velocity + LTVector m_vMaxVelAdjust; // How much to adjust the max velocity. +}; + +#endif // __RANDOM_SPARKS_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SFXMgr.cpp b/Jack/ClientShellDLL/SFXMgr.cpp new file mode 100644 index 00000000..065a9ac7 --- /dev/null +++ b/Jack/ClientShellDLL/SFXMgr.cpp @@ -0,0 +1,2130 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CSFXMgr.cpp +// +// PURPOSE : Special FX Mgr - Implementation +// +// CREATED : 10/24/97 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SFXMgr.h" +#include "SpecialFX.h" +#include "PolyGridFX.h" +#include "ParticleTrailFX.h" +#include "ParticleSystemFX.h" +#include "MarkSFX.h" +#include "ParticleShowerFX.h" +#include "TracerFX.h" +#include "WeaponFX.h" +#include "DynamicLightFX.h" +#include "ParticleTrailSegmentFX.h" +#include "SmokeFX.h" +#include "BulletTrailFX.h" +#include "VolumeBrushFX.h" +#include "ShellCasingFX.h" +#include "CommonUtilities.h" +#include "WeaponFXTypes.h" +#include "CameraFX.h" +#include "ParticleExplosionFX.h" +#include "DebrisFX.h" +#include "DeathFX.h" +#include "GibFX.h" +#include "ProjectileFX.h" +#include "LightFX.h" +#include "PickupItemFX.h" +#include "AimMagnetFX.h" +#include "GadgetTargetFX.h" +#include "GameClientShell.h" +#include "CharacterFX.h" +#include "BodyFX.h" +#include "PlayerSoundFX.h" +#include "RandomSparksFX.h" +#include "NodeLinesFX.h" +#include "WeatherFX.h" +#include "LightningFX.h" +#include "sprinklesfx.h" +#include "FireFX.h" +#include "LensFlareFX.h" +#include "MuzzleFlashFX.h" +#include "SearchLightFX.h" +#include "PolyDebrisFX.h" +#include "SteamFX.h" +#include "BaseScaleFX.h" +#include "ExplosionFX.h" +#include "PolyLineFX.h" +#include "LaserTriggerFX.h" +#include "MineFX.h" +#include "BeamFX.h" +#include "PlayerVehicleFX.h" +#include "ObjSpriteFX.h" +#include "VarTrack.h" +#include "DebugLineFX.h" +#include "JumpVolumeFX.h" +#include "CMoveMgr.h" +#include "PlayerLureFX.h" +#include "SnowFX.h" +#include "ScatterFX.h" +#include "DynamicOccluderVolumeFX.h" +#include "TriggerFX.h" +#include "RadarObjectFX.h" +#include "ActivateObjectFX.h" +#include "ChassisPieceFX.h" +#include "ChassisFX.h" +#include "ChassisButeMgr.h" + +// NOTE: These indexes should map EXACTLY to the SFX ids defined +// in SFXMsgIds.h... + +static unsigned int s_nDynArrayMaxNums[DYN_ARRAY_SIZE] = +{ + 10, // General fx (Unused?) + 50, // Polygrid + 1, // Particle trails - never added to sfx mgr + 50, // Particle systems + 50, // Particle shower + 50, // Tracers + 1, // Weapons - uses a single static weapon fx + 50, // Dynamic lights + 50, // Particle trail segments + 50, // Smoke + 50, // Bullet trail + 100, // Volume brush + 200, // Shell casings + 1, // Camera - Unused, it has its own list + 20, // Particle explosions + 200, // Sprites/Models (base scale) + 100, // Debris + 50, // Death + 50, // Gibs + 50, // Projectile + 100, // Marks - bullet holes + 100, // Light + 50, // Random sparks + 200, // Pickup item + 200, // Character + 20, // Player sounds + 1000, // Node Lines (used for AI nodes) + 100, // Weather + 50, // Lightning + 10, // Sprinkles + 100, // Fire + 50, // Lens Flares + 20, // Muzzle flash + 100, // Search lights + 100, // Polygon debris + 100, // Steam, + 100, // Explosion + 200, // PolyLine + 200, // Body + 100, // Laser trigger + 100, // Mines + 50, // Beams + 10, // Player vehicles + 10, // Sound fx (not currently used) + 10, // Objective sprites + 1, // Light groups + 500, // Debug line systems + 1, // Texture FX, has its own list + 50, // Snow + 20, // JumpVolumes + 5, // PlayerLure + 50, // GadgetTargets + 1, // DisplayTimer, doesn't need a list. + 50, // Dynamic Occluder volumes + 50, // Scatter + 50, // Trigger + 100, // RadarObject + 512, // ActivateObject + 15, // Chassis pieces + 15, // Chassis + MAX_AIM_MAGNETS, // AutoAim Magnets +}; + + +static CWeaponFX s_WeaponFX; + +// The special FX banks... +CBankedList g_SFXBank_MuzzleFlash; +CBankedList g_SFXBank_PlayerSound; +CBankedList g_SFXBank_BaseScale; +CBankedList g_SFXBank_ParticleShower; +CBankedList g_SFXBank_Mark; +CBankedList g_SFXBank_ShellCasing; +CBankedList g_SFXBank_Tracer; +CBankedList g_SFXBank_PolygonDebris; +CBankedList g_SFXBank_Projectile; +CBankedList g_SFXBank_Beam; +CBankedList g_SFXBank_ParticleTrailSegment; +CBankedList g_SFXBank_Debris; +CBankedList g_SFXBank_DynamicLight; +CBankedList g_SFXBank_Fire; +CBankedList g_SFXBank_LensFlare; +CBankedList g_SFXBank_Smoke; +CBankedList g_SFXBank_Camera; +CBankedList g_SFXBank_PolyGrid; +CBankedList g_SFXBank_Explosion; +CBankedList g_SFXBank_VolumeBrush; +CBankedList g_SFXBank_Light; +CBankedList g_SFXBank_Steam; +CBankedList g_SFXBank_Body; +CBankedList g_SFXBank_Character; // Note : This one's big. CCharacterFX is 9k +CBankedList g_SFXBank_Lightning; +CBankedList g_SFXBank_PolyLine; +CBankedList g_SFXBank_SearchLight; +CBankedList g_SFXBank_LaserTrigger; +CBankedList g_SFXBank_Mine; +CBankedList g_SFXBank_RandomSparks; +CBankedList g_SFXBank_BulletTrail; +CBankedList g_SFXBank_ParticleExplosion; +CBankedList g_SFXBank_Gib; +CBankedList g_SFXBank_Death; +CBankedList g_SFXBank_Weather; +CBankedList g_SFXBank_ParticleSystem; +CBankedList g_SFXBank_PickupItem; +CBankedList g_SFXBank_AimMagnet; +CBankedList g_SFXBank_GadgetTarget; +CBankedList g_SFXBank_NodeLines; +CBankedList g_SFXBank_Sprinkles; +CBankedList g_SFXBank_PlayerVehicle; +CBankedList g_SFXBank_ObjSprite; +CBankedList g_SFXBank_DebugLine; +CBankedList g_SFXBank_Snow; +CBankedList g_SFXBank_JumpVolume; +CBankedList g_SFXBank_DynamicOccluderVolume; +CBankedList g_SFXBank_Scatter; +CBankedList g_SFXBank_Trigger; +CBankedList g_SFXBank_RadarObject; +CBankedList g_SFXBank_ActivateObject; +CBankedList g_SFXBank_ChassisPiece; +CBankedList g_SFXBank_Chassis; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::Init() +// +// PURPOSE: Init the CSFXMgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CSFXMgr::Init(ILTClient *pClientDE) +{ + if (!g_pLTClient) return LTFALSE; + + for (int i=0; i < DYN_ARRAY_SIZE; i++) + { + if (!m_dynSFXLists[i].Create(GetDynArrayMaxNum(i))) return LTFALSE; + } + + return m_cameraSFXList.Create(CAMERA_LIST_SIZE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::HandleSFXMsg() +// +// PURPOSE: Handle a special fx message +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::HandleSFXMsg(HLOCALOBJ hObj, ILTMessage_Read *pMsg) +{ + uint8 nId = pMsg->Readuint8(); + + switch (nId) + { + case SFX_WEAPON_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_PLAYERLURE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_PLAYERSOUND_ID : + { + PLAYERSOUNDCREATESTRUCT pscs; + + pscs.hServerObj = hObj; + pscs.nType = pMsg->Readuint8(); + pscs.nWeaponId = pMsg->Readuint8(); + pscs.nClientId = pMsg->Readuint8(); + pscs.vPos = pMsg->ReadCompPos(); + + CreateSFX(nId, &pscs); + } + break; + + case SFX_PROJECTILE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_MUZZLEFLASH_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_DEBRIS_ID : + { + DEBRISCREATESTRUCT debris; + + debris.hServerObj = hObj; + debris.rRot = pMsg->ReadLTRotation(); + debris.vPos = pMsg->ReadCompPos(); + debris.nDebrisId = pMsg->Readuint8(); + + CreateSFX(nId, &debris); + } + break; + + case SFX_RANDOMSPARKS_ID : + { + RANDOMSPARKSCREATESTRUCT rs; + + rs.hServerObj = hObj; + rs.vPos = pMsg->ReadCompPos(); + rs.vDir = pMsg->ReadLTVector(); + rs.nSparks = pMsg->Readuint8(); + rs.fDuration = pMsg->Readuint16(); + + CreateSFX(nId, &rs); + } + break; + + case SFX_DEATH_ID : + { + DEATHCREATESTRUCT d; + + d.hServerObj = hObj; + d.eModelId = (ModelId)pMsg->Readuint8(); + d.nDeathType = pMsg->Readuint8(); + d.vPos = pMsg->ReadLTVector(); + d.vDir = pMsg->ReadLTVector(); + + CreateSFX(nId, &d); + } + break; + + case SFX_EXPLOSION_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_VOLUMEBRUSH_ID : + { + VBCREATESTRUCT vb; + vb.Read(pMsg); + vb.hServerObj = hObj; + + CreateSFX(nId, &vb); + } + break; + + case SFX_WEATHER_ID : + { + WFXCREATESTRUCT weather; + + weather.Read(pMsg); + weather.hServerObj = hObj; + + CreateSFX(nId, &weather); + } + break; + + case SFX_CAMERA_ID : + { + CAMCREATESTRUCT cam; + + cam.hServerObj = hObj; + cam.bAllowPlayerMovement = (LTBOOL) pMsg->Readuint8(); + cam.nCameraType = pMsg->Readuint8(); + cam.bIsListener = (LTBOOL) pMsg->Readuint8(); + cam.fFovX = pMsg->Readfloat(); + cam.fFovY = pMsg->Readfloat(); + + CreateSFX(nId, &cam); + } + break; + + case SFX_TRACER_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_POLYGRID_ID : + { + PGCREATESTRUCT pg; + + pg.hServerObj = hObj; + + pg.vDims = pMsg->ReadLTVector(); + uint16 wColor = pMsg->Readuint16(); + Color255WordToVector(wColor, &(pg.vColor1)); + wColor = pMsg->Readuint16(); + Color255WordToVector(wColor, &(pg.vColor2)); + pg.fXScaleMin = pMsg->Readfloat(); + pg.fXScaleMax = pMsg->Readfloat(); + pg.fYScaleMin = pMsg->Readfloat(); + pg.fYScaleMax = pMsg->Readfloat(); + pg.fXScaleDuration = pMsg->Readfloat(); + pg.fYScaleDuration = pMsg->Readfloat(); + pg.fXPan = pMsg->Readfloat(); + pg.fYPan = pMsg->Readfloat(); + pg.fAlpha = pMsg->Readfloat(); + pg.fTimeScale = pMsg->Readfloat(); + pg.fDampenScale = pMsg->Readfloat(); + pg.fSpringCoeff = pMsg->Readfloat(); + pg.fModelDisplace = pMsg->Readfloat(); + pg.fMinFrameRate = pMsg->Readfloat(); + pg.fBaseReflection = pMsg->Readfloat(); + pg.fVolumeIOR = pMsg->Readfloat(); + + char szString[256]; + pMsg->ReadString( szString, ARRAY_LEN( szString )); + pg.sSurfaceSprite = szString; + + pMsg->ReadString( szString, ARRAY_LEN( szString )); + pg.sSurfaceEnvMap = szString; + + pMsg->ReadString( szString, ARRAY_LEN( szString )); + pg.sDampenImage = szString; + + pg.dwNumPoliesX = (uint32)pMsg->Readuint16(); + pg.dwNumPoliesY = (uint32)pMsg->Readuint16(); + pg.nNumStartupFrames = (uint32)pMsg->Readuint16(); + pg.bAdditive = (LTBOOL)pMsg->Readbool(); + pg.bMultiply = (LTBOOL)pMsg->Readbool(); + pg.bFresnel = (LTBOOL)pMsg->Readbool(); + pg.bBackfaceCull = (LTBOOL)pMsg->Readbool(); + pg.bRenderEarly = (LTBOOL)pMsg->Readbool(); + pg.bNormalMapSprite = (LTBOOL)pMsg->Readbool(); + pg.nPlasmaType = pMsg->Readuint8(); + pg.nRingRate[0] = pMsg->Readuint8(); + pg.nRingRate[1] = pMsg->Readuint8(); + pg.nRingRate[2] = pMsg->Readuint8(); + pg.nRingRate[3] = pMsg->Readuint8(); + + //read in our modifier data + pg.nActiveModifiers = pMsg->Readuint8(); + for(uint32 nCurrMod = 0; nCurrMod < PG_MAX_MODIFIERS; nCurrMod++) + { + pg.fAccelAmount[nCurrMod] = pMsg->Readfloat(); + pg.nNumAccelPoints[nCurrMod] = pMsg->Readuint16(); + pg.nXMin[nCurrMod] = pMsg->Readuint16(); + pg.nYMin[nCurrMod] = pMsg->Readuint16(); + pg.nXMax[nCurrMod] = pMsg->Readuint16(); + pg.nYMax[nCurrMod] = pMsg->Readuint16(); + } + + pg.hVolumeBrush = pMsg->ReadObject(); + + CreateSFX(nId, &pg); + } + break; + + case SFX_PARTICLESYSTEM_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_MARK_ID : + { + MARKCREATESTRUCT mark; + + mark.hServerObj = hObj; + mark.m_Rotation = pMsg->ReadLTRotation(); + mark.m_vPos = pMsg->ReadLTVector(); + mark.m_fScale = pMsg->Readfloat(); + mark.nAmmoId = pMsg->Readuint8(); + mark.nSurfaceType = pMsg->Readuint8(); + + CreateSFX(nId, &mark); + } + break; + + case SFX_LIGHTNING_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_POLYLINE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_FIRE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_LENSFLARE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_SEARCHLIGHT_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_LASERTRIGGER_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_MINE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_BEAM_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_LIGHT_ID : + { + LIGHTCREATESTRUCT light; + + light.hServerObj = hObj; + + light.vColor = pMsg->ReadLTVector(); + light.dwLightFlags = pMsg->Readuint32(); + light.fIntensityMin = pMsg->Readfloat(); + light.fIntensityMax = pMsg->Readfloat(); + light.nIntensityWaveform = pMsg->Readuint8(); + light.fIntensityFreq = pMsg->Readfloat(); + light.fIntensityPhase = pMsg->Readfloat(); + light.fRadiusMin = pMsg->Readfloat(); + light.fRadiusMax = pMsg->Readfloat(); + light.nRadiusWaveform = pMsg->Readuint8(); + light.fRadiusFreq = pMsg->Readfloat(); + light.fRadiusPhase = pMsg->Readfloat(); + light.hstrRampUpSound = pMsg->ReadHString(); + light.hstrRampDownSound = pMsg->ReadHString(); + + CreateSFX(nId, &light); + } + break; + + case SFX_PICKUPITEM_ID : + { + PICKUPITEMCREATESTRUCT pickupitem; + + pickupitem.hServerObj = hObj; + pickupitem.bRotate = (LTBOOL)pMsg->Readbool(); + pickupitem.bBounce = (LTBOOL)pMsg->Readbool(); + + char szTemp[256] = {0}; + pMsg->ReadString( szTemp, ARRAY_LEN(szTemp) ); + pickupitem.sClientFX = szTemp; + + pickupitem.m_nTeamId = pMsg->Readuint8( ); + + CreateSFX(nId, &pickupitem); + } + break; + + case SFX_AIMMAGNET_ID : + { + AIMMAGNETCREATESTRUCT AimMagnet; + + AimMagnet.hServerObj = hObj; + + AimMagnet.m_nTeamId = pMsg->Readuint8( ); + AimMagnet.m_hTarget = pMsg->ReadObject( ); + + CreateSFX(nId, &AimMagnet); + } + break; + + case SFX_CHASSISPIECE_ID : + { + CHASSISPIECECREATESTRUCT ChassisPieceCS; + + ChassisPieceCS.hServerObj = hObj; + uint8 nIndex = pMsg->Readuint8(); + if( nIndex != CHASSISPIECEBUTE_INVALID ) + ChassisPieceCS.pChassisPieceBute = ChassisButeMgr::Instance( ).GetChassisPieceButeList( )[nIndex]; + else + ChassisPieceCS.pChassisPieceBute = NULL; + ChassisPieceCS.bCarried = pMsg->Readbool(); + ChassisPieceCS.nTeam = pMsg->Readuint8(); + ChassisPieceCS.bPlanted = pMsg->Readbool(); + ChassisPieceCS.nActivateId = pMsg->Readuint8( ); + ChassisPieceCS.bBlinking = pMsg->Readbool( ); + + CreateSFX(nId, &ChassisPieceCS); + } + break; + + case SFX_CHASSIS_ID : + { + CHASSISCREATESTRUCT ChassisCS; + + ChassisCS.hServerObj = hObj; + ChassisCS.nTeam = pMsg->Readuint8(); + ChassisCS.fDropZoneRadius = pMsg->Readfloat(); + ChassisCS.nActivateId = pMsg->Readuint8( ); + + CreateSFX(nId, &ChassisCS); + } + break; + + case SFX_GADGETTARGET_ID : + { + GADGETTARGETCREATESTRUCT GadgetTarget; + + GadgetTarget.hServerObj = hObj; + GadgetTarget.eType = (GadgetTargetType)pMsg->Readuint8(); + GadgetTarget.bSwitchWeapons = pMsg->Readbool(); + GadgetTarget.bPowerOn = pMsg->Readbool(); + GadgetTarget.nTeamID = pMsg->Readuint8(); + CreateSFX(nId, &GadgetTarget); + } + break; + + case SFX_CHARACTER_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_BODY_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_NODELINES_ID : + { + NLCREATESTRUCT w; + + w.hServerObj = hObj; + + w.vSource = pMsg->ReadLTVector(); + w.vDestination = pMsg->ReadLTVector(); + + CreateSFX(nId, &w); + } + break; + + case SFX_SPRINKLES_ID: + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_STEAM_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_PLAYERVEHICLE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_OBJSPRITE_ID : + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_LIGHTGROUP_ID : + { + m_cLightGroupFXMgr.HandleSFXMsg(pMsg); + } + break; + + case SFX_DEBUGLINE_ID: + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_TEXTUREFX_ID: + { + m_cTextureFXMgr.HandleSFXMsg(pMsg); + } + break; + + case SFX_DISPLAYTIMER_ID: + { + g_pInterfaceMgr->HandleDisplayTimerMsg( *pMsg ); + } + break; + + case SFX_SNOW_ID: + { + SNOWCREATESTRUCT snow; + + snow.hServerObj = hObj; + + snow.vDims = pMsg->ReadLTVector(); + snow.fDensity = pMsg->Readfloat(); + snow.fParticleRadius = pMsg->Readfloat(); + snow.fFallRate = pMsg->Readfloat(); + snow.fTumbleRate = pMsg->Readfloat(); + snow.fTumbleRadius = pMsg->Readfloat(); + snow.fMaxDrawDist = pMsg->Readfloat(); + snow.vAmbientColor = pMsg->ReadLTVector(); + snow.bUseLighting = pMsg->Readuint8() > 0; + snow.bUseSaturate = pMsg->Readuint8() > 0; + snow.hstrTextureName = pMsg->ReadHString(); + snow.bOn = pMsg->Readbool(); + + CreateSFX( nId, &snow ); + } + break; + + case SFX_JUMPVOLUME_ID: + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_DYNAMIC_OCCLUDER_ID: + { + CreateSFX(nId, LTNULL, pMsg, hObj); + } + break; + + case SFX_SCATTER_ID: + { + SCATTERCREATESTRUCT scatter; + + scatter.hServerObj = hObj; + + scatter.vDims = pMsg->ReadLTVector(); + scatter.nBlindDataIndex = pMsg->Readuint32(); + scatter.fHeight = pMsg->Readfloat(); + scatter.fWidth = pMsg->Readfloat(); + scatter.fMaxScale = pMsg->Readfloat(); + scatter.fTilt = pMsg->Readfloat(); + scatter.fWaveRate = pMsg->Readfloat(); + scatter.fWaveDist = pMsg->Readfloat(); + scatter.fMaxDrawDist = pMsg->Readfloat(); + scatter.hstrTextureName = pMsg->ReadHString(); + scatter.bUseSaturate = pMsg->Readuint8() > 0; + + CreateSFX( nId, &scatter ); + } + break; + + case SFX_TRIGGER_ID: + { + CreateSFX( nId, LTNULL, pMsg, hObj ); + } + break; + + case SFX_RADAROBJECT_ID: + { + CreateSFX( nId, LTNULL, pMsg, hObj ); + } + break; + + case SFX_ACTIVATEOBJECT_ID: + { + CreateSFX( nId, LTNULL, pMsg, hObj ); + } + break; + + default : break; + } +} + + +void CSFXMgr::DeleteSFX(CSpecialFX* pFX) +{ + // Make sure we've got a valid pointer + if (!pFX) + return; + + // Make sure we don't try to delete the static fx(s)... + if (pFX == &s_WeaponFX) + return; + + // Alrighty, get the ID from the effect... + switch(pFX->GetSFXID()) + { + // Delete it from the right place... + + case SFX_PLAYERSOUND_ID : + { + g_SFXBank_PlayerSound.Delete((CPlayerSoundFX*)pFX); + } + break; + + case SFX_MUZZLEFLASH_ID : + { + g_SFXBank_MuzzleFlash.Delete((CMuzzleFlashFX*)pFX); + } + break; + + case SFX_SCALE_ID : + { + g_SFXBank_BaseScale.Delete((CBaseScaleFX*)pFX); + } + break; + + case SFX_PARTICLESHOWER_ID : + { + g_SFXBank_ParticleShower.Delete((CParticleShowerFX*)pFX); + } + break; + + case SFX_MARK_ID : + { + g_SFXBank_Mark.Delete((CMarkSFX*)pFX); + } + break; + + case SFX_SHELLCASING_ID : + { + g_SFXBank_ShellCasing.Delete((CShellCasingFX*)pFX); + } + break; + + case SFX_TRACER_ID : + { + g_SFXBank_Tracer.Delete((CTracerFX*)pFX); + } + break; + + case SFX_POLYDEBRIS_ID : + { + g_SFXBank_PolygonDebris.Delete((CPolygonDebrisFX*)pFX); + } + break; + + case SFX_PROJECTILE_ID : + { + g_SFXBank_Projectile.Delete((CProjectileFX*)pFX); + } + break; + + case SFX_BEAM_ID : + { + g_SFXBank_Beam.Delete((CBeamFX*)pFX); + } + break; + + case SFX_PARTICLETRAILSEG_ID : + { + g_SFXBank_ParticleTrailSegment.Delete((CParticleTrailSegmentFX*)pFX); + } + break; + + case SFX_DEBRIS_ID: + { + g_SFXBank_Debris.Delete((CDebrisFX*)pFX); + } + break; + + case SFX_DYNAMICLIGHT_ID: + { + g_SFXBank_DynamicLight.Delete((CDynamicLightFX*)pFX); + } + break; + + case SFX_FIRE_ID : + { + g_SFXBank_Fire.Delete((CFireFX*)pFX); + } + break; + + case SFX_LENSFLARE_ID : + { + g_SFXBank_LensFlare.Delete((CLensFlareFX*)pFX); + } + break; + + case SFX_SMOKE_ID : + { + g_SFXBank_Smoke.Delete((CSmokeFX*)pFX); + } + break; + + case SFX_CAMERA_ID : + { + g_SFXBank_Camera.Delete((CCameraFX*)pFX); + } + break; + + case SFX_POLYGRID_ID : + { + g_SFXBank_PolyGrid.Delete((CPolyGridFX*)pFX); + } + break; + + case SFX_EXPLOSION_ID : + { + g_SFXBank_Explosion.Delete((CExplosionFX*)pFX); + } + break; + + case SFX_VOLUMEBRUSH_ID : + { + g_SFXBank_VolumeBrush.Delete((CVolumeBrushFX*)pFX); + } + break; + + case SFX_LIGHT_ID : + { + g_SFXBank_Light.Delete((CLightFX*)pFX); + } + break; + + case SFX_STEAM_ID : + { + g_SFXBank_Steam.Delete((CSteamFX*)pFX); + } + break; + + case SFX_BODY_ID : + { + g_SFXBank_Body.Delete((CBodyFX*)pFX); + } + break; + + case SFX_CHARACTER_ID : + { + g_SFXBank_Character.Delete((CCharacterFX*)pFX); + } + break; + + case SFX_LIGHTNING_ID : + { + g_SFXBank_Lightning.Delete((CLightningFX*)pFX); + } + break; + + case SFX_POLYLINE_ID : + { + g_SFXBank_PolyLine.Delete((CPolyLineFX*)pFX); + } + break; + + case SFX_SEARCHLIGHT_ID : + { + g_SFXBank_SearchLight.Delete((CSearchLightFX*)pFX); + } + break; + + case SFX_LASERTRIGGER_ID : + { + g_SFXBank_LaserTrigger.Delete((CLaserTriggerFX*)pFX); + } + break; + + case SFX_MINE_ID : + { + g_SFXBank_Mine.Delete((CMineFX*)pFX); + } + break; + + case SFX_RANDOMSPARKS_ID : + { + g_SFXBank_RandomSparks.Delete((CRandomSparksFX*)pFX); + } + break; + + case SFX_BULLETTRAIL_ID : + { + g_SFXBank_BulletTrail.Delete((CBulletTrailFX*)pFX); + } + break; + + case SFX_PARTICLEEXPLOSION_ID : + { + g_SFXBank_ParticleExplosion.Delete((CParticleExplosionFX*)pFX); + } + break; + + case SFX_GIB_ID : + { + g_SFXBank_Gib.Delete((CGibFX*)pFX); + } + break; + + case SFX_DEATH_ID : + { + g_SFXBank_Death.Delete((CDeathFX*)pFX); + } + break; + + case SFX_WEATHER_ID : + { + g_SFXBank_Weather.Delete((CWeatherFX*)pFX); + } + break; + + case SFX_PARTICLESYSTEM_ID : + { + g_SFXBank_ParticleSystem.Delete((CParticleSystemFX*)pFX); + } + break; + + case SFX_PICKUPITEM_ID : + { + g_SFXBank_PickupItem.Delete((CPickupItemFX*)pFX); + } + break; + + case SFX_AIMMAGNET_ID : + { + g_SFXBank_AimMagnet.Delete((CAimMagnetFX*)pFX); + } + break; + + case SFX_CHASSISPIECE_ID : + { + g_SFXBank_ChassisPiece.Delete((ChassisPieceFX*)pFX); + } + break; + + case SFX_CHASSIS_ID : + { + g_SFXBank_Chassis.Delete((ChassisFX*)pFX); + } + break; + + case SFX_GADGETTARGET_ID : + { + g_SFXBank_GadgetTarget.Delete((CGadgetTargetFX*)pFX); + } + break; + + case SFX_NODELINES_ID : + { + g_SFXBank_NodeLines.Delete((CNodeLinesFX*)pFX); + } + break; + + case SFX_SPRINKLES_ID : + { + g_SFXBank_Sprinkles.Delete((SprinklesFX*)pFX); + } + break; + + case SFX_PLAYERVEHICLE_ID : + { + g_SFXBank_PlayerVehicle.Delete((CPlayerVehicleFX*)pFX); + } + break; + + case SFX_OBJSPRITE_ID : + { + g_SFXBank_ObjSprite.Delete((CObjSpriteFX*)pFX); + } + break; + + case SFX_DEBUGLINE_ID : + { + g_SFXBank_DebugLine.Delete((CDebugLineFX*)pFX); + } + break; + + case SFX_SNOW_ID : + { + g_SFXBank_Snow.Delete((CSnowFX*)pFX); + } + break; + + case SFX_JUMPVOLUME_ID : + { + g_SFXBank_JumpVolume.Delete((CJumpVolumeFX*)pFX); + } + break; + + case SFX_DYNAMIC_OCCLUDER_ID : + { + g_SFXBank_DynamicOccluderVolume.Delete((CDynamicOccluderVolumeFX*)pFX); + } + break; + + case SFX_SCATTER_ID : + { + g_SFXBank_Scatter.Delete((CScatterFX*)pFX); + } + break; + + case SFX_TRIGGER_ID : + { + g_SFXBank_Trigger.Delete((CTriggerFX*)pFX); + } + break; + + case SFX_RADAROBJECT_ID : + { + g_SFXBank_RadarObject.Delete((CRadarObjectFX*)pFX); + } + break; + + case SFX_ACTIVATEOBJECT_ID : + { + g_SFXBank_ActivateObject.Delete((CActivateObjectFX*)pFX); + } + break; + + // Ok, it's not a banked effect + default: + { + debug_delete(pFX); + } + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::CreateSFX() +// +// PURPOSE: Create the special fx +// +// ----------------------------------------------------------------------- // + +CSpecialFX* CSFXMgr::CreateSFX(uint8 nId, SFXCREATESTRUCT *psfxCreateStruct, + ILTMessage_Read *pMsg, HOBJECT hServerObj) +{ + CSpecialFX* pSFX = LTNULL; + + switch (nId) + { + case SFX_WEAPON_ID : + { + pSFX = &s_WeaponFX; + } + break; + + case SFX_PLAYERLURE_ID : + { + pSFX = debug_new( PlayerLureFX ); + } + break; + + case SFX_PLAYERSOUND_ID : + { + pSFX = g_SFXBank_PlayerSound.New(); + } + break; + + case SFX_PROJECTILE_ID : + { + pSFX = g_SFXBank_Projectile.New(); + } + break; + + case SFX_MUZZLEFLASH_ID : + { + pSFX = g_SFXBank_MuzzleFlash.New(); + } + break; + + case SFX_SCALE_ID : + { + pSFX = g_SFXBank_BaseScale.New(); + } + break; + + case SFX_TRACER_ID : + { + pSFX = g_SFXBank_Tracer.New(); + } + break; + + case SFX_LIGHTNING_ID : + { + pSFX = g_SFXBank_Lightning.New(); + } + break; + + case SFX_POLYLINE_ID : + { + pSFX = g_SFXBank_PolyLine.New(); + } + break; + + case SFX_FIRE_ID : + { + pSFX = g_SFXBank_Fire.New(); + } + break; + + case SFX_LENSFLARE_ID : + { + pSFX = g_SFXBank_LensFlare.New(); + } + break; + + case SFX_SEARCHLIGHT_ID : + { + pSFX = g_SFXBank_SearchLight.New(); + } + break; + + case SFX_LASERTRIGGER_ID : + { + pSFX = g_SFXBank_LaserTrigger.New(); + } + break; + + case SFX_MINE_ID : + { + pSFX = g_SFXBank_Mine.New(); + } + break; + + case SFX_BEAM_ID : + { + pSFX = g_SFXBank_Beam.New(); + } + break; + + case SFX_PARTICLESHOWER_ID : + { + pSFX = g_SFXBank_ParticleShower.New(); + } + break; + + case SFX_RANDOMSPARKS_ID : + { + pSFX = g_SFXBank_RandomSparks.New(); + } + break; + + case SFX_PARTICLETRAILSEG_ID : + { + pSFX = g_SFXBank_ParticleTrailSegment.New(); + } + break; + + case SFX_BULLETTRAIL_ID : + { + pSFX = g_SFXBank_BulletTrail.New(); + } + break; + + case SFX_MARK_ID : + { + pSFX = g_SFXBank_Mark.New(); + } + break; + + case SFX_SHELLCASING_ID : + { + pSFX = g_SFXBank_ShellCasing.New(); + } + break; + + case SFX_PARTICLEEXPLOSION_ID : + { + pSFX = g_SFXBank_ParticleExplosion.New(); + } + break; + + case SFX_DEBRIS_ID : + { + pSFX = g_SFXBank_Debris.New(); + } + break; + + case SFX_POLYDEBRIS_ID : + { + pSFX = g_SFXBank_PolygonDebris.New(); + } + break; + + case SFX_GIB_ID : + { + pSFX = g_SFXBank_Gib.New(); + } + break; + + case SFX_DYNAMICLIGHT_ID : + { + pSFX = g_SFXBank_DynamicLight.New(); + } + break; + + case SFX_SMOKE_ID : + { + pSFX = g_SFXBank_Smoke.New(); + } + break; + + case SFX_DEATH_ID : + { + pSFX = g_SFXBank_Death.New(); + } + break; + + case SFX_CAMERA_ID : + { + pSFX = g_SFXBank_Camera.New(); + if (pSFX) + { + if (pSFX->Init(psfxCreateStruct)) + { + if (g_pLTClient->IsConnected()) + { + if (pSFX->CreateObject(g_pLTClient)) + { + m_cameraSFXList.Add(pSFX); + } + else + { + DeleteSFX(pSFX); + pSFX = LTNULL; + } + } + else + { + DeleteSFX(pSFX); + pSFX = LTNULL; + } + } + } + + return pSFX; + } + break; + + case SFX_POLYGRID_ID : + { + pSFX = g_SFXBank_PolyGrid.New(); + } + break; + + case SFX_EXPLOSION_ID : + { + pSFX = g_SFXBank_Explosion.New(); + } + break; + + case SFX_VOLUMEBRUSH_ID : + { + pSFX = g_SFXBank_VolumeBrush.New(); + } + break; + + case SFX_WEATHER_ID : + { + pSFX = g_SFXBank_Weather.New(); + } + break; + + case SFX_PARTICLESYSTEM_ID : + { + pSFX = g_SFXBank_ParticleSystem.New(); + } + break; + + case SFX_LIGHT_ID : + { + pSFX = g_SFXBank_Light.New(); + } + break; + + case SFX_PICKUPITEM_ID : + { + pSFX = g_SFXBank_PickupItem.New(); + } + break; + + case SFX_AIMMAGNET_ID : + { + pSFX = g_SFXBank_AimMagnet.New(); + } + break; + + case SFX_CHASSISPIECE_ID : + { + pSFX = g_SFXBank_ChassisPiece.New(); + } + break; + + case SFX_CHASSIS_ID : + { + pSFX = g_SFXBank_Chassis.New(); + } + break; + + case SFX_GADGETTARGET_ID : + { + pSFX = g_SFXBank_GadgetTarget.New(); + } + break; + + case SFX_CHARACTER_ID : + { + pSFX = g_SFXBank_Character.New(); + } + break; + + case SFX_BODY_ID : + { + pSFX = g_SFXBank_Body.New(); + } + break; + + case SFX_NODELINES_ID : + { + pSFX = g_SFXBank_NodeLines.New(); + } + break; + + case SFX_SPRINKLES_ID: + { + pSFX = g_SFXBank_Sprinkles.New(); + } + break; + + case SFX_STEAM_ID: + { + pSFX = g_SFXBank_Steam.New(); + } + break; + + case SFX_PLAYERVEHICLE_ID: + { + pSFX = g_SFXBank_PlayerVehicle.New(); + } + break; + + case SFX_OBJSPRITE_ID: + { + pSFX = g_SFXBank_ObjSprite.New(); + } + break; + + case SFX_DEBUGLINE_ID: + { + pSFX = g_SFXBank_DebugLine.New(); + } + break; + + case SFX_SNOW_ID: + { + pSFX = g_SFXBank_Snow.New(); + + } + break; + + case SFX_JUMPVOLUME_ID: + { + pSFX = g_SFXBank_JumpVolume.New(); + } + break; + + case SFX_DYNAMIC_OCCLUDER_ID: + { + pSFX = g_SFXBank_DynamicOccluderVolume.New(); + } + break; + + case SFX_SCATTER_ID: + { + pSFX = g_SFXBank_Scatter.New(); + } + break; + + case SFX_TRIGGER_ID: + { + pSFX = g_SFXBank_Trigger.New(); + } + break; + + case SFX_RADAROBJECT_ID: + { + pSFX = g_SFXBank_RadarObject.New(); + } + break; + + case SFX_ACTIVATEOBJECT_ID: + { + pSFX = g_SFXBank_ActivateObject.New(); + } + break; + + default : + return LTNULL; + break; + } + + + // Initialize the sfx, and add it to the appropriate array... + + if (!pSFX) return LTNULL; + + + // First initialize with the create struct... + + if (psfxCreateStruct) + { + if (!pSFX->Init(psfxCreateStruct)) + { + DeleteSFX(pSFX); + return LTNULL; + } + } + else if (pMsg) // Initialize using the hMessage + { + if (!pSFX->Init(hServerObj, pMsg)) + { + DeleteSFX(pSFX); + return LTNULL; + } + } + else + { + DeleteSFX(pSFX); + return LTNULL; + } + + if (!pSFX->CreateObject(g_pLTClient)) + { + DeleteSFX(pSFX); + return LTNULL; + } + + if( !AddDynamicSpecialFX(pSFX, nId)) + { + DeleteSFX( pSFX ); + return NULL; + } + + return pSFX; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::UpdateSpecialFX() +// +// PURPOSE: Update any the special FX +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::UpdateSpecialFX() +{ + LTFLOAT fTime = g_pLTClient->GetTime(); + + // Update the lightgroups + m_cLightGroupFXMgr.Update(); + + // Update dynamic sfx... + + UpdateDynamicSpecialFX(); + + + // Update camera sfx... + + int nNumSFX = m_cameraSFXList.GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + if (m_cameraSFXList[i]) + { + if (fTime >= m_cameraSFXList[i]->m_fNextUpdateTime) + { + if (!m_cameraSFXList[i]->Update()) + { + m_cameraSFXList.Remove(m_cameraSFXList[i]); + } + else + { + m_cameraSFXList[i]->m_fNextUpdateTime = fTime + m_cameraSFXList[i]->GetUpdateDelta(); + } + } + } + } + + + // Make sure the global canvase is near the camera... + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (hCamera) + { + HOBJECT hObj = CBasePolyDrawFX::GetGlobalCanvaseObj(); + if (hObj) + { + LTVector vPos; + g_pLTClient->GetObjectPos(hCamera, &vPos); + g_pLTClient->SetObjectPos(hObj, &vPos); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::RenderFX() +// +// PURPOSE: Render any the special FX +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::RenderFX(HOBJECT hCamera) +{ + // Right now only the DebugLineFX && CCharacterFX need rendering, so just walk thruogh those. + CSpecialFXList* const pDebugLineList = GetFXList(SFX_DEBUGLINE_ID); + + ASSERT( pDebugLineList ); + if( pDebugLineList ) + { + + CSpecialFXList & debug_lines = *pDebugLineList; + + // Try to save ourselves from going through _every_ + // possible item if we can. + if( debug_lines.GetNumItems() > 0 ) + { + // Go through ever possible line system and render the + // non-null ones. + const int nSize = debug_lines.GetSize(); + for (int i = 0; i < nSize; ++i ) + { + if ( debug_lines[i] ) + { + debug_lines[i]->Render(hCamera); + } + } + } + } + + CSpecialFXList* const pCharList = GetFXList(SFX_CHARACTER_ID); + + ASSERT( pCharList ); + if( pCharList ) + { + + CSpecialFXList & chars = *pCharList; + + // Try to save ourselves from going through _every_ + // possible item if we can. + if( chars.GetNumItems() > 0 ) + { + // Go through ever possible line system and render the + // non-null ones. + const int nSize = chars.GetSize(); + for (int i = 0; i < nSize; ++i ) + { + if ( chars[i] ) + { + chars[i]->Render(hCamera); + } + } + } + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::RemoveSpecialFX() +// +// PURPOSE: Remove the specified special fx +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::RemoveSpecialFX(HLOCALOBJ hObj) +{ + // Remove the dynamic special fx associated with this object.. + + RemoveDynamicSpecialFX(hObj); + + + // See if this was a camera... + + int nNumSFX = m_cameraSFXList.GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + if (m_cameraSFXList[i] && m_cameraSFXList[i]->GetServerObj() == hObj) + { + m_cameraSFXList[i]->WantRemove(); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::RemoveAll() +// +// PURPOSE: Remove all the special fx +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::RemoveAll() +{ + RemoveAllDynamicSpecialFX(); + + int nNumSFX = m_cameraSFXList.GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + m_cameraSFXList.Remove(m_cameraSFXList[i]); + } + + m_cLightGroupFXMgr.Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::AddDynamicSpecialFX() +// +// PURPOSE: Add a dyanamic special fx to our lists +// +// ----------------------------------------------------------------------- // + +bool CSFXMgr::AddDynamicSpecialFX(CSpecialFX* pSFX, uint8 nId) +{ + int nIndex = GetDynArrayIndex(nId); + + if (0 <= nIndex && nIndex < DYN_ARRAY_SIZE) + { + return !!m_dynSFXLists[nIndex].Add(pSFX); + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::UpdateDynamicSpecialFX() +// +// PURPOSE: Update the dyanamic special fxs +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::UpdateDynamicSpecialFX() +{ + LTFLOAT fTime = g_pLTClient->GetTime(); + + for (int j=0; j < DYN_ARRAY_SIZE; j++) + { + int nNumSFX = m_dynSFXLists[j].GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + CSpecialFX* pSFX = m_dynSFXLists[j][i]; + if( pSFX ) + { + if (fTime >= pSFX->m_fNextUpdateTime) + { + if (!pSFX->Update()) + { + m_dynSFXLists[j].Remove(pSFX); + } + else + { + pSFX->m_fNextUpdateTime = fTime + pSFX->GetUpdateDelta(); + } + } + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::RemoveDynamicSpecialFX() +// +// PURPOSE: Remove the specified special fx +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::RemoveDynamicSpecialFX(HOBJECT hObj) +{ + for (int j=0; j < DYN_ARRAY_SIZE; j++) + { + int nNumSFX = m_dynSFXLists[j].GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + // More than one sfx may have the same server handle, so let them + // all have an opportunity to remove themselves... + + if (m_dynSFXLists[j][i] && m_dynSFXLists[j][i]->GetServerObj() == hObj) + { + m_dynSFXLists[j][i]->WantRemove(); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::RemoveAllDynamicSpecialFX() +// +// PURPOSE: Remove all dynamic special fx +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::RemoveAllDynamicSpecialFX() +{ + for (int j=0; j < DYN_ARRAY_SIZE; j++) + { + int nNumSFX = m_dynSFXLists[j].GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + m_dynSFXLists[j].Remove(m_dynSFXLists[j][i]); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::FindSpecialFX() +// +// PURPOSE: Find the specified special fx type associated with the +// object (see SFXMsgIds.h for valid types) +// +// ----------------------------------------------------------------------- // + +CSpecialFX* CSFXMgr::FindSpecialFX(uint8 nType, HLOCALOBJ hObj) +{ + if (0 <= nType && nType < DYN_ARRAY_SIZE) + { + int nNumSFX = m_dynSFXLists[nType].GetSize(); + + for (int i=0; i < nNumSFX; i++) + { + if (m_dynSFXLists[nType][i] && m_dynSFXLists[nType][i]->GetServerObj() == hObj) + { + return m_dynSFXLists[nType][i]; + } + } + } + + return LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::GetDynArrayIndex() +// +// PURPOSE: Get the array index associated with a particular type of +// dynamic special fx +// +// ----------------------------------------------------------------------- // + +int CSFXMgr::GetDynArrayIndex(uint8 nFXId) +{ + // All valid fxids should map directly to the array index...If this is + // an invalid id, use the general fx index (i.e., 0)... + + if (nFXId < 0 || nFXId >= DYN_ARRAY_SIZE) + { + return 0; + } + + return nFXId; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::GetDynArrayMaxNum() +// +// PURPOSE: Find a dyanamic special fx associated with an object +// +// ----------------------------------------------------------------------- // + +unsigned int CSFXMgr::GetDynArrayMaxNum(uint8 nIndex) +{ + if (0 <= nIndex && nIndex < DYN_ARRAY_SIZE) + { + // Use detail setting for bullet holes... + + if (nIndex == SFX_MARK_ID) + { + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (pSettings) + { + return int(pSettings->NumBulletHoles() + 1); + } + } + + return s_nDynArrayMaxNums[nIndex]; + } + + return 0; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::OnObjectRotate() +// +// PURPOSE: Handle an object rotation. +// Some FX may want to modify the rotation. +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::OnObjectRotate( HOBJECT hObj, bool bTeleport, LTRotation *pNewRot ) +{ + if( !hObj || ! pNewRot ) + return; + + // If it's a CharacterFX we might want to modify the rotation... + + CSpecialFX *pFX = FindSpecialFX( SFX_CHARACTER_ID, hObj ); + if( pFX ) + { + pFX->OnObjectRotate( pNewRot ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::OnTouchNotify() +// +// PURPOSE: Handle client-side touch notify +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::OnTouchNotify(HOBJECT hMain, CollisionInfo *pInfo, float forceMag) +{ + if (!hMain) return; + + // See if this is the move-mgr's object... + + if (hMain == g_pPlayerMgr->GetMoveMgr()->GetObject()) + { + g_pPlayerMgr->GetMoveMgr()->OnTouchNotify(pInfo, forceMag); + } + else + { + // Okay see if this is a special fx... + + CSpecialFX* pFX = FindSpecialFX(SFX_PROJECTILE_ID, hMain); + + if (pFX) + { + pFX->HandleTouch(pInfo); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::OnSFXMessage() +// +// PURPOSE: Handle server-to-sfx messages +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::OnSFXMessage(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + uint8 nFXType = pMsg->Readuint8(); + HOBJECT hObj = pMsg->ReadObject(); + + // Special case for the lightgroups + switch( nFXType ) + { + case SFX_LIGHTGROUP_ID: + { + m_cLightGroupFXMgr.HandleSFXMsg(pMsg); + return; + } + break; + + // Special case for the texture FX + case SFX_TEXTUREFX_ID: + { + m_cTextureFXMgr.HandleSFXMsg(pMsg); + return; + } + break; + + // Special case for the camera + case SFX_CAMERA_ID: + { + // Find the camera sfx... + + int nNumSFX = m_cameraSFXList.GetSize(); + + for( int i = 0; i < nNumSFX; ++i ) + { + if( m_cameraSFXList[i] && m_cameraSFXList[i]->GetServerObj() == hObj ) + { + m_cameraSFXList[i]->OnServerMessage( pMsg ); + } + } + + return; + } + break; + + // Special case for the texture FX + case SFX_DISPLAYTIMER_ID: + { + g_pInterfaceMgr->HandleDisplayTimerMsg( *pMsg ); + return; + } + break; + + } + + + if (0 <= nFXType && nFXType < DYN_ARRAY_SIZE && hObj) + { + CSpecialFX* pFX = FindSpecialFX(nFXType, hObj); + + if (pFX) + { + pFX->OnServerMessage(pMsg); + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSFXMgr::OnModelKey() +// +// PURPOSE: Handle client-side model key +// +// ----------------------------------------------------------------------- // + +void CSFXMgr::OnModelKey(HLOCALOBJ hObj, ArgList *pArgs) +{ + if (!hObj || !pArgs) return; + + // Only pass these on to the player (and AI)... + + int nNumSFX = m_dynSFXLists[SFX_CHARACTER_ID].GetSize(); + + int i; + for (i=0; i < nNumSFX; i++) + { + if (m_dynSFXLists[SFX_CHARACTER_ID][i] && m_dynSFXLists[SFX_CHARACTER_ID][i]->GetServerObj() == hObj) + { + m_dynSFXLists[SFX_CHARACTER_ID][i]->OnModelKey(hObj, pArgs); + } + } + + nNumSFX = m_dynSFXLists[SFX_BODY_ID].GetSize(); + + for (i=0; i < nNumSFX; i++) + { + if (m_dynSFXLists[SFX_BODY_ID][i] && m_dynSFXLists[SFX_BODY_ID][i]->GetServerObj() == hObj) + { + m_dynSFXLists[SFX_BODY_ID][i]->OnModelKey(hObj, pArgs); + } + } +} + +CCharacterFX* CSFXMgr::GetCharacterFX(HOBJECT hObject) +{ + CCharacterFX* pCharacterFX = NULL; + int cCharacterFX = m_dynSFXLists[SFX_CHARACTER_ID].GetSize(); + + for ( int iCharacterFX = 0 ; iCharacterFX < cCharacterFX ; iCharacterFX++ ) + { + pCharacterFX = (CCharacterFX*)m_dynSFXLists[SFX_CHARACTER_ID][iCharacterFX]; + if (pCharacterFX && pCharacterFX->GetServerObj() == hObject) + { + return pCharacterFX; + } + } + + return LTNULL; +} + + +CCharacterFX* CSFXMgr::GetCharacterFromHitBox(HOBJECT hHitBox) +{ + CCharacterFX* pCharacterFX = NULL; + int cCharacterFX = m_dynSFXLists[SFX_CHARACTER_ID].GetSize(); + + for ( int iCharacterFX = 0 ; iCharacterFX < cCharacterFX ; iCharacterFX++ ) + { + pCharacterFX = (CCharacterFX*)m_dynSFXLists[SFX_CHARACTER_ID][iCharacterFX]; + if (pCharacterFX) + { + if (pCharacterFX->GetHitBox() == hHitBox) + { + return pCharacterFX; + } + } + } + + return LTNULL; +} + + +CBodyFX* CSFXMgr::GetBodyFX(HOBJECT hObject) +{ + CBodyFX* pBodyFX = NULL; + int cBodyFX = m_dynSFXLists[SFX_BODY_ID].GetSize(); + + for ( int iBodyFX = 0 ; iBodyFX < cBodyFX ; iBodyFX++ ) + { + pBodyFX = (CBodyFX*)m_dynSFXLists[SFX_BODY_ID][iBodyFX]; + if (pBodyFX && pBodyFX->GetServerObj() == hObject) + { + return pBodyFX; + } + } + + return LTNULL; +} + + +CBodyFX* CSFXMgr::GetBodyFromHitBox(HOBJECT hHitBox) +{ + CBodyFX* pBodyFX = NULL; + int cBodyFX = m_dynSFXLists[SFX_BODY_ID].GetSize(); + + for ( int iBodyFX = 0 ; iBodyFX < cBodyFX ; iBodyFX++ ) + { + pBodyFX = (CBodyFX*)m_dynSFXLists[SFX_BODY_ID][iBodyFX]; + if (pBodyFX) + { + if (pBodyFX->GetHitBox() == hHitBox) + { + return pBodyFX; + } + } + } + + return LTNULL; +} diff --git a/Jack/ClientShellDLL/SFXMgr.h b/Jack/ClientShellDLL/SFXMgr.h new file mode 100644 index 00000000..46750557 --- /dev/null +++ b/Jack/ClientShellDLL/SFXMgr.h @@ -0,0 +1,154 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SFXMgr.h +// +// PURPOSE : Special FX Mgr - Definition +// +// CREATED : 10/24/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SFX_MGR_H__ +#define __SFX_MGR_H__ + +#include "iltclient.h" +#include "SpecialFXList.h" +#include "SFXMsgIds.h" +#include "LightGroupFX.h" +#include "TextureFXMgr.h" + + +#define DYN_ARRAY_SIZE (SFX_TOTAL_NUMBER + 1) +#define CAMERA_LIST_SIZE 20 +#define MAX_AIM_MAGNETS 20 + +class CCharacterFX; +class CBodyFX; + +class CSFXMgr +{ + public : + + CSFXMgr() {} + ~CSFXMgr() {} + + LTBOOL Init(ILTClient* pClientDE); + + CSpecialFX* FindSpecialFX(uint8 nType, HLOCALOBJ hObj); + + CSpecialFXList* GetCameraList() { return &m_cameraSFXList; } + + void RemoveSpecialFX(HLOCALOBJ hObj); + void UpdateSpecialFX(); + void RenderFX(HOBJECT hCamera); + void HandleSFXMsg(HLOCALOBJ hObj, ILTMessage_Read *pMsg); + + void RemoveAll(); + + CSpecialFX* CreateSFX(uint8 nId, SFXCREATESTRUCT *psfxCreateStruct, + ILTMessage_Read *pMsg=LTNULL, HOBJECT hServerObj=LTNULL); + + static void DeleteSFX(CSpecialFX *pSFX); + + inline CSpecialFXList* GetFXList(uint8 nType) + { + if (nType < 0 || nType >= DYN_ARRAY_SIZE) return LTNULL; + + return &m_dynSFXLists[nType]; + } + + void OnObjectRotate( HOBJECT hObj, bool bTeleport, LTRotation *pNewRot ); + void OnTouchNotify(HOBJECT hMain, CollisionInfo *pInfo, float forceMag); + void OnModelKey(HLOCALOBJ hObj, ArgList *pArgs); + void OnSFXMessage(ILTMessage_Read *pMsg); + + CCharacterFX* GetCharacterFX(HOBJECT hObject); + CCharacterFX* GetCharacterFromHitBox(HOBJECT hHitBox); + CBodyFX* GetBodyFX(HOBJECT hObject); + CBodyFX* GetBodyFromHitBox(HOBJECT hHitBox); + + + private : + + bool AddDynamicSpecialFX(CSpecialFX* pSFX, uint8 nId); + void UpdateDynamicSpecialFX(); + void RemoveDynamicSpecialFX(HOBJECT hObj); + void RemoveAllDynamicSpecialFX(); + + int GetDynArrayIndex(uint8 nFXId); + unsigned int GetDynArrayMaxNum(uint8 nArrayIndex); + + CSpecialFXList m_dynSFXLists[DYN_ARRAY_SIZE]; // Lists of dynamic special fx + CSpecialFXList m_cameraSFXList; // List of camera special fx + + // Special case handler for the lightgroup fx messages + CLightGroupFXMgr m_cLightGroupFXMgr; + + // Handler for all the texture effects messages + CTextureFXMgr m_cTextureFXMgr; +}; + +////////////////////////////////////////////////////////////////////////////// +// Functions below are used for GetCharactersInRadius +////////////////////////////////////////////////////////////////////////////// +// +// BoxesIntersect +// +// Tests if boxes intersect each other. +// Arguments +// vBox1Min - Mininim of box 1 +// vBox1Max - Maximum of box 1 +// vBox2Min - Mininim of box 2 +// vBox2Max - Maximum of box 2 +// +static bool BoxesIntersect( const LTVector &vBox1Min, const LTVector &vBox1Max, const LTVector &vBox2Min, const LTVector &vBox2Max ) +{ + if( vBox1Min.x - vBox2Max.x >= 0.0f || vBox1Max.x - vBox2Min.x <= 0.0f || + vBox1Min.y - vBox2Max.y >= 0.0f || vBox1Max.y - vBox2Min.y <= 0.0f || + vBox1Min.z - vBox2Max.z >= 0.0f || vBox1Max.z - vBox2Min.z <= 0.0f ) + return false; + + return true; +} + +////////////////////////////////////////////////////////////////////////////// +// +// SetupBoxPoints +// +// Calculates the points of a box. +// Arguments +// vPts[8] - OUT: Array of 8 points to fill in. +// vDims - IN: dims. +// +////////////////////////////////////////////////////////////////////////////// +// +// SetupBoxPoints +// +// Calculates the points of a box. +// Arguments +// vPts[8] - OUT: Points to fill in. +// vDims - IN: dims. +// +static void SetupBoxPoints( LTVector *pvPts, const LTVector &vPos, const LTVector &vDims ) +{ + VEC_SET(pvPts[0], +vDims.x, +vDims.y, +vDims.z); + pvPts[0] += vPos; + VEC_SET(pvPts[1], +vDims.x, -vDims.y, +vDims.z); + pvPts[1] += vPos; + VEC_SET(pvPts[2], +vDims.x, +vDims.y, -vDims.z); + pvPts[2] += vPos; + VEC_SET(pvPts[3], +vDims.x, -vDims.y, -vDims.z); + pvPts[3] += vPos; + VEC_SET(pvPts[4], -vDims.x, +vDims.y, +vDims.z); + pvPts[4] += vPos; + VEC_SET(pvPts[5], -vDims.x, -vDims.y, +vDims.z); + pvPts[5] += vPos; + VEC_SET(pvPts[6], -vDims.x, +vDims.y, -vDims.z); + pvPts[6] += vPos; + VEC_SET(pvPts[7], -vDims.x, -vDims.y, -vDims.z); + pvPts[7] += vPos; +} + +#endif // __SFX_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScatterFX.cpp b/Jack/ClientShellDLL/ScatterFX.cpp new file mode 100644 index 00000000..612df506 --- /dev/null +++ b/Jack/ClientShellDLL/ScatterFX.cpp @@ -0,0 +1,634 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScatterFX.cpp +// +// PURPOSE : Scatter special FX - Implementation +// +// CREATED : 4/3/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScatterFX.h" +#include "iltclient.h" +#include "GameClientShell.h" + + +extern CGameClientShell* g_pGameClientShell; + + +// console variables +VarTrack g_cvarScatterEnable; // false will totally disable scatter (deactivating all subvolumes) + + +bool CScatterFXSubVolume::tableInit = false; +float CScatterFXSubVolume::sinTable[]; +uint32 CScatterFXSubVolume::rndTable[]; +std::list CScatterFX::freeEffects; + + +struct DynamicParticleVertex +{ + float x, y, z; + uint32 color; + float u, v; +}; + + +CScatterFX::CScatterFX() : CSpecialFX() +{ + VEC_INIT( m_vDims ); + m_nBlindDataIndex = 0xffffffff; + m_fHeight = 64.0f; + m_fWidth = 64.0f; + m_fMaxScale = 1.0f; + m_fTilt = 30.0f; + m_fWaveRate = 90.0f; + m_fWaveDist = 10.0f; + m_fMaxDrawDist = 1024.0f; + m_fMaxDrawDistSq = 1024.0f * 1024.0f; + m_hstrTextureName = LTNULL; + m_bUseSaturate = true; + + VEC_INIT( m_vCamPos ); + m_nInternalTime = 0; + + m_nNumSubVolumes = 0; + m_pSubVolumes = NULL; + + m_bEnabled = true; +} + + +CScatterFX::~CScatterFX() +{ + if( m_hstrTextureName && m_pClientDE ) + { + m_pClientDE->FreeString( m_hstrTextureName ); + } + + debug_deletea( m_pSubVolumes ); + + for( std::list::iterator objIt = freeEffects.begin(); objIt != freeEffects.end(); objIt++ ) + { + ASSERT( *objIt ); + m_pClientDE->RemoveObject( *objIt ); + } + + freeEffects.clear(); +} + + +LTBOOL CScatterFX::Init( SFXCREATESTRUCT* psfxCreateStruct ) +{ + if( !psfxCreateStruct ) + return LTFALSE; + + CSpecialFX::Init( psfxCreateStruct ); + + SCATTERCREATESTRUCT* cs = (SCATTERCREATESTRUCT*)psfxCreateStruct; + + m_vDims = cs->vDims; + m_nBlindDataIndex = cs->nBlindDataIndex; + m_fWidth = cs->fWidth * 0.5f; + m_fHeight = cs->fHeight; + m_fMaxScale = cs->fMaxScale; + m_fTilt = cs->fTilt; + m_fWaveRate = cs->fWaveRate; + m_fWaveDist = cs->fWaveDist; + m_fMaxDrawDist = cs->fMaxDrawDist; + m_fMaxDrawDistSq = m_fMaxDrawDist * m_fMaxDrawDist; + m_hstrTextureName = cs->hstrTextureName; + m_bUseSaturate = cs->bUseSaturate; + + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + AdjustBounds( pos, m_vDims ); + + // setup console variables + if( !g_cvarScatterEnable.IsInitted() ) + g_cvarScatterEnable.Init( g_pLTClient, "ScatterEnable", LTNULL, 1.0f ); + + return LTTRUE; +} + + +LTBOOL CScatterFX::CreateObject( ILTClient* pClientDE ) +{ + if( !CSpecialFX::CreateObject( pClientDE ) ) + return LTFALSE; + + m_hObject = LTNULL; + + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + m_vMinBounds = pos - m_vDims; + m_vMaxBounds = pos + m_vDims; + + // grab the subvolumes and particles from the blind object data + uint32 numVolumes = 0; + + if( m_nBlindDataIndex != 0xffffffff ) + { + // grab the blind data + uint8* blindData = NULL; + uint32 blindDataSize = 0; + if( m_pClientDE->GetBlindObjectData( m_nBlindDataIndex, SCATTER_BLINDOBJECTID, blindData, blindDataSize ) != LT_OK ) + return LTFALSE; + uint8* curBlindData = blindData; + + uint32 fltSz = sizeof(float); + + // get the number of subvolumes + numVolumes = *((uint32*)curBlindData); + curBlindData += 4; + + if( numVolumes ) + m_pSubVolumes = debug_newa( CScatterFXSubVolume, numVolumes ); + m_nNumSubVolumes = numVolumes; + + for( uint32 i = 0; i < numVolumes; i++ ) + { + // get the position of this subvolume + LTVector pos; + pos.x = *((float*)curBlindData); + curBlindData += fltSz; + pos.y = *((float*)curBlindData); + curBlindData += fltSz; + pos.z = *((float*)curBlindData); + curBlindData += fltSz; + + // get the dimensions of this subvolume + LTVector dims; + dims.x = *((float*)curBlindData); + curBlindData += fltSz; + dims.y = *((float*)curBlindData); + curBlindData += fltSz; + dims.z = *((float*)curBlindData); + curBlindData += fltSz; + + // get the number of particles in this volume + uint32 numParticles = *((uint32*)curBlindData); + curBlindData += 4; + + ASSERT( numParticles ); + + // this will be dealloced by the subvolume it is passed down to + CScatterFXParticle* particles = debug_newa( CScatterFXParticle, numParticles ); + + for( uint32 j = 0; j < numParticles; j++ ) + { + particles[j].pos.x = *((float*)curBlindData); + curBlindData += fltSz; + particles[j].pos.y = *((float*)curBlindData); + curBlindData += fltSz; + particles[j].pos.z = *((float*)curBlindData); + curBlindData += fltSz; + + particles[j].color = *((uint32*)curBlindData) & 0x00ffffff; + curBlindData += 4; + + particles[j].scale = *((float*)curBlindData); + curBlindData += fltSz; + + particles[j].waveRot = *curBlindData; + curBlindData++; + + particles[j].waveStart = *curBlindData; + curBlindData++; + + //-0---- + float tmp = (float)rand() / (float)RAND_MAX; + tmp *= 2.0f * PI; + + particles[j].xoffset = (float)sin( tmp ) * m_fWidth * particles[j].scale; + particles[j].yoffset = (float)cos( tmp ) * m_fWidth * particles[j].scale; + //------ + } + + AdjustBounds( pos, dims ); + + m_pSubVolumes[i].Init( this, pos, dims, numParticles, particles ); + } + + // we're done with the blind data for this object, free it + m_pClientDE->FreeBlindObjectData( m_nBlindDataIndex, SCATTER_BLINDOBJECTID ); + } + + return LTTRUE; +} + + +LTBOOL CScatterFX::Update( void ) +{ + if( !m_pClientDE || !m_hServerObject ) + return LTFALSE; + + if( m_bWantRemove ) + return LTFALSE; + + // check if scatter should be enabled + m_bEnabled = g_cvarScatterEnable.GetFloat() > 0.0f; + + // update our internal time counter + if(!g_pGameClientShell->IsServerPaused()) + m_nInternalTime += (uint32)(10000.0f * g_pGameClientShell->GetFrameTime()); + + // get the camera position + HLOCALOBJ camera = g_pPlayerMgr->GetCamera(); + m_pClientDE->GetObjectPos( camera, &m_vCamPos ); + + // update the sub volumes + if( !UpdateSubVolumes() ) + return LTFALSE; + + return LTTRUE; +} + + +// returns the minimum squared distance to an AABB (0 if pos is inside the AABB) +static inline float DistSqToAABB( const LTVector& pos, const LTVector& min, const LTVector& max ) +{ + float distance = 0.0f; + + if( pos.x < min.x ) + { + float tmp = pos.x - min.x; + distance = tmp * tmp; + } + else if( pos.x > max.x ) + { + float tmp = pos.x - max.x; + distance = tmp * tmp; + } + + if( pos.y < min.y ) + { + float tmp = pos.y - min.y; + distance += tmp * tmp; + } + else if( pos.y > max.y ) + { + float tmp = pos.y - max.y; + distance += tmp * tmp; + } + + if( pos.z < min.z ) + { + float tmp = pos.z - min.z; + distance += tmp * tmp; + } + else if( pos.z > max.z ) + { + float tmp = pos.z - max.z; + distance += tmp * tmp; + } + + return distance; +} + + +// update which subvolumes are visible and setup LOD +bool CScatterFX::UpdateSubVolumes( void ) +{ + // make sure there are no active subvolumes if scatter isn't enabled + if( !m_bEnabled ) + { + std::set::iterator it = activeSubVolumes.begin(); + while( it != activeSubVolumes.end()) + { + // Deactivate will remove the item from the set, thus invalidating the + // iterator. Get the next item before calling deactivate. + std::set::iterator next = it; + next++; + (*it)->Deactivate(); + it = next; + } + + return true; + } + + // get the distance from the camera to the volume (0 if inside) + float cameraDistSq = DistSqToAABB( m_vCamPos, m_vMinBounds, m_vMaxBounds ); + + //check to see if all subvolumes should be inactive + if( cameraDistSq > m_fMaxDrawDistSq ) + { + // camera is farther away than the max draw distance for this volume, so kill all the subvolumes + std::set::iterator it = activeSubVolumes.begin(); + while( it != activeSubVolumes.end()) + { + // Deactivate will remove the item from the set, thus invalidating the + // iterator. Get the next item before calling deactivate. + std::set::iterator next = it; + next++; + (*it)->Deactivate(); + it = next; + } + + // don't test any of the subvolumes directly + return true; + } + + // activate subvolumes with positive LOD + for( uint32 i = 0; i < m_nNumSubVolumes; i++ ) + { + float curLOD = m_pSubVolumes[i].CalculateLOD( m_vCamPos ); + + if( curLOD > 0.0f ) + m_pSubVolumes[i].Activate( curLOD ); + else if( m_pSubVolumes[i].IsActive() ) + m_pSubVolumes[i].Deactivate(); + } + + return true; +} + + +// take bounds that assume point sized particles, and adjust for particle size, wave, etc. +void CScatterFX::AdjustBounds( LTVector& pos, LTVector& dims ) +{ + // start off with no offset (all particles are considered to be static points) + float maxXZOffset = 0.0f; + float maxYOffset = 0.0f; + + // adjust for height of particles + maxYOffset += m_fHeight * m_fMaxScale; + + // adjust for width of particles; + maxXZOffset += m_fWidth * m_fMaxScale; + + // adjust for wind offsets + maxXZOffset += m_fWaveDist; + + LTVector min = pos - dims; + LTVector max = pos + dims; + + min.x -= maxXZOffset; + min.z -= maxXZOffset; + max.x += maxXZOffset; + max.z += maxXZOffset; + max.y += maxYOffset; + + dims = (max - min) * 0.5f; + pos = min + dims; +} + + +LTBOOL CScatterFX::OnServerMessage( ILTMessage_Read* pMsg ) +{ + return LTTRUE; +} + + + +//--------------------------- +//--- CScatterFXSubVolume --- +//--------------------------- + +CScatterFXSubVolume::CScatterFXSubVolume() : + m_Parent(NULL), m_Active(false), m_NumParticles(0), m_Particles(NULL), m_Effect(NULL) +{ + if( !tableInit ) + { + tableInit = true; + + srand( 1337 ); + + float angleStep = (2*PI)/(float)SCATTERFX_TABLESIZE; + float curAngle = 0.0f; + + for( uint32 i = 0; i < SCATTERFX_TABLESIZE; ++i ) + { + rndTable[i] = (uint32)(((float)rand() / (float)RAND_MAX) * (SCATTERFX_TABLESIZE - 1)); + sinTable[i] = (float)sin( curAngle ); + curAngle += angleStep; + } + + // add overlap to the end of the table for cosine to reference into + for( ; i < SCATTERFX_TABLESIZE + SCATTERFX_COSOFFSET; ++i ) + { + sinTable[i] = (float)sin( curAngle ); + curAngle += angleStep; + } + } +} + + +CScatterFXSubVolume::~CScatterFXSubVolume() +{ + Deactivate(); + + debug_deletea( m_Particles ); + + if( m_Effect ) + m_Parent->m_pClientDE->RemoveObject( m_Effect ); +} + + +void CScatterFXSubVolume::Init( CScatterFX* parent, const LTVector& pos, const LTVector& dims, uint32 numParticles, CScatterFXParticle* particles ) +{ + ASSERT( !m_Active ); + ASSERT( parent ); + + m_Active = false; + m_Parent = parent; + m_LOD = 0.0f; + m_Pos = pos; + m_Dims = dims; + m_MinBounds = pos - dims; + m_MaxBounds = pos + dims; + m_NumParticles = numParticles; + m_Particles = particles; +} + + +// the engine calls this with a pointer to an subvolume in pUser +// fill in the specified vertex buffer with generated particles +bool ScatterFXFillVertexBuffer( void* pUser, void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ) +{ + CScatterFXSubVolume* subVolume = (CScatterFXSubVolume*)pUser; + + return subVolume->FillVertexBuffer( pVertexBufferData, pLightingData, nVBNumVerts, nPrevFilledVerts, nNumFilledVerts ); +} + + +// returns the LOD this subvolume should be at +float CScatterFXSubVolume::CalculateLOD( const LTVector& camPos ) +{ + float distance = DistSqToAABB( camPos, m_MinBounds, m_MaxBounds ); + + // the subvolume is too far away, give it a 0 LOD + if( distance > m_Parent->m_fMaxDrawDistSq ) + return 0.0f; + + float lodBegin = SCATTERFX_LODPERCENT * m_Parent->m_fMaxDrawDist; + distance = (float)sqrt( distance ); + + // the subvolume is closer than the fadeout start point, give it a 1 LOD + if( distance < lodBegin ) + return 1.0f; + + // evaluate falloff using 3x^2 - 2x^3 + distance = (distance - lodBegin) / (m_Parent->m_fMaxDrawDist - lodBegin); + return 1.0f - (distance * distance * (3.0f - 2.0f * distance)); +} + + +bool CScatterFXSubVolume::Activate( float detail ) +{ + // update the LOD + ASSERT( detail > 0.0f && detail <= 1.0f ); + m_LOD = detail; + + // adjust translucent vs. solid based on LOD + if( m_LOD < 1.0f ) + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags2, FLAG2_FORCETRANSLUCENT, FLAG2_FORCETRANSLUCENT ); + else + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags2, 0, FLAG2_FORCETRANSLUCENT ); + + // don't do anything else if already active + if( m_Active ) + return true; + + m_Active = true; + + // create the volume effect (either reusing an old one, or creating a new one) + if( !m_Parent->freeEffects.empty() ) + { + m_Effect = HOBJECT(*m_Parent->freeEffects.begin()); + m_Parent->freeEffects.pop_front(); + + m_Parent->m_pClientDE->SetObjectPos( m_Effect, &m_Pos ); + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + } + else + { + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT( ocs ); + ocs.m_ObjectType = OT_VOLUMEEFFECT; + ocs.m_Flags = FLAG_VISIBLE; + ocs.m_Pos = m_Pos; + ocs.m_Rotation.Init(); + + m_Effect = m_Parent->m_pClientDE->CreateObject( &ocs ); + } + + VolumeEffectInfo vei; + vei.m_EffectType = VolumeEffectInfo::kDynamicParticles; + vei.m_Dims = m_Dims; + vei.m_DPPrimitive = VolumeEffectInfo::kQuadlist; + vei.m_DPLighting = VolumeEffectInfo::kNone; + vei.m_DPLightConstant = 0xffffffff; + vei.m_DPSaturate = m_Parent->m_bUseSaturate; + vei.m_DPTextureName = m_Parent->m_pClientDE->GetStringData( m_Parent->m_hstrTextureName ); + vei.m_DPUserData = this; + vei.m_DPUpdateFn = &ScatterFXFillVertexBuffer; + + m_Parent->m_pClientDE->SetupVolumeEffect( m_Effect, vei ); + + m_Parent->activeSubVolumes.insert( this ); + + return true; +} + + +bool CScatterFXSubVolume::Deactivate( void ) +{ + if( !m_Active ) + return true; + + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags, 0, FLAG_VISIBLE ); + m_Parent->freeEffects.push_front( m_Effect ); + m_Effect = NULL; + + m_Active = false; + + m_Parent->activeSubVolumes.erase( this ); + + return true; +} + + +bool CScatterFXSubVolume::FillVertexBuffer( void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ) +{ + DynamicParticleVertex* curVert = (DynamicParticleVertex*)pVertexBufferData; + + uint32 numQuads = nVBNumVerts / 4; + uint32 prevQuads = nPrevFilledVerts / 4; + + if( numQuads > m_NumParticles - prevQuads ) + numQuads = m_NumParticles - prevQuads; + + uint32 maxQuad = prevQuads + numQuads; + + double seconds = m_Parent->m_nInternalTime / 10000.0; + uint32 curWave = (uint32)((fmod( (m_Parent->m_fWaveRate * seconds), 360.0 ) / 360.0) * SCATTERFX_TABLESIZE); + + float width = m_Parent->m_fWidth; + float height = m_Parent->m_fHeight; + + float waveAmt, waveXOffset, waveZOffset; + + LTVector pos; + float xoff, yoff, scale; + uint32 color, alpha; + + // setup the alpha information + if( m_LOD < 1.0f ) + alpha = ((uint8)(m_LOD * 0xff)) << 24; + else + alpha = 0xff000000; + + uint32 curQuad = 0; + + for( uint32 i = prevQuads; i < maxQuad; ++i ) + { + pos = m_Particles[i].pos; + scale = m_Particles[i].scale * height; + xoff = m_Particles[i].xoffset; + yoff = m_Particles[i].yoffset; + color = m_Particles[i].color | alpha; + + waveAmt = sinTable[(curWave + m_Particles[i].waveStart) % SCATTERFX_TABLESIZE] * m_Parent->m_fWaveDist; + waveXOffset = sinTable[m_Particles[i].waveRot] * waveAmt; + waveZOffset = sinTable[m_Particles[i].waveRot + SCATTERFX_COSOFFSET] * waveAmt; + + curVert->x = pos.x - xoff + waveXOffset; + curVert->y = pos.y + scale; + curVert->z = pos.z - yoff + waveZOffset; + curVert->color = color; + curVert->u = 0.0f; + curVert->v = 0.0f; + ++curVert; + curVert->x = pos.x - xoff; + curVert->y = pos.y; + curVert->z = pos.z - yoff; + curVert->color = color; + curVert->u = 0.0f; + curVert->v = 1.0f; + ++curVert; + curVert->x = pos.x + xoff + waveXOffset; + curVert->y = pos.y + scale; + curVert->z = pos.z + yoff + waveZOffset; + curVert->color = color; + curVert->u = 1.0f; + curVert->v = 0.0f; + ++curVert; + curVert->x = pos.x + xoff; + curVert->y = pos.y; + curVert->z = pos.z + yoff; + curVert->color = color; + curVert->u = 1.0f; + curVert->v = 1.0f; + ++curVert; + + ++curQuad; + } + + nNumFilledVerts = curQuad * 4; + + return maxQuad == m_NumParticles; +} diff --git a/Jack/ClientShellDLL/ScatterFX.h b/Jack/ClientShellDLL/ScatterFX.h new file mode 100644 index 00000000..ebc07ede --- /dev/null +++ b/Jack/ClientShellDLL/ScatterFX.h @@ -0,0 +1,170 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : ScatterFX.h +// +// PURPOSE : Scatter special fx class - Definition +// +// CREATED : 4/3/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SCATTER_FX_H__ +#define __SCATTER_FX_H__ + +#include "SpecialFX.h" + + +#define SCATTER_BLINDOBJECTID 0x73f53a84 // ID for scatter blind object data +#define SCATTERFX_SUBVOLUMEDIMS 512.0f // maximum length of a side of a scatter subvolume +#define SCATTERFX_LODPERCENT 0.8f // percentage of max draw dist to begin to fade a subvolume at (range is 0 to 1) +#define SCATTERFX_TABLESIZE 256 // size of tables used for particle generation +#define SCATTERFX_COSOFFSET 64 // offset into sin table to get cos (sin table is actually table size + this offset) + + +class CScatterFX; + + +struct CScatterFXParticle +{ + LTVector pos; + uint32 color; + float scale; + float xoffset; + float yoffset; + uint8 waveRot; + uint8 waveStart; +}; + + +class CScatterFXSubVolume +{ +public: + CScatterFXSubVolume(); + ~CScatterFXSubVolume(); + + // initialize the subvolume + void Init( CScatterFX* parent, const LTVector& pos, const LTVector& dims, uint32 numParticles, CScatterFXParticle* particles ); + + // returns the LOD this subvolume should be at + float CalculateLOD( const LTVector& camPos ); + + // returns the current state of this subvolume + bool IsActive() { return m_Active; } + + // this subvolume should start rendering particles (just updates it's LOD if already active) + bool Activate( float detail ); + + // this subvolume should stop rendering particles + bool Deactivate(); + + // fill in a vertex buffer with procedurally generated particles + bool FillVertexBuffer( void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ); + +private: + bool m_Active; // true if this subvolume is currently active (visible and containing particles) + uint32 m_NumParticles; // number of full LOD particles in this subvolume + float m_LOD; // level of detail for this subvolume (0 is invisible, 1 is fully visible) + CScatterFX* m_Parent; // the ScatterFX object containing this subvolume + LTVector m_Pos; // center of this subvolume + LTVector m_Dims; // dimensions of this subvolume + LTVector m_MinBounds; // min bounds for this subvolume + LTVector m_MaxBounds; // max bounds for this subvolume + CScatterFXParticle* m_Particles; // unsorted array of particles + + // the following members are only valid for active subvolumes + HOBJECT m_Effect; // volume effect object for this subvolume + + static bool tableInit; + static float sinTable[SCATTERFX_TABLESIZE+SCATTERFX_COSOFFSET]; + static uint32 rndTable[SCATTERFX_TABLESIZE]; +}; + + +struct SCATTERCREATESTRUCT : public SFXCREATESTRUCT +{ + SCATTERCREATESTRUCT(); + + LTVector vDims; + uint32 nBlindDataIndex; + float fHeight; + float fWidth; + float fMaxScale; + float fTilt; + float fWaveRate; + float fWaveDist; + float fMaxDrawDist; + HSTRING hstrTextureName; + bool bUseSaturate; +}; + + +inline SCATTERCREATESTRUCT::SCATTERCREATESTRUCT() +{ + vDims.Init(); + nBlindDataIndex = 0xffffffff; + fHeight = 0.0f; + fWidth = 0.0f; + fMaxScale = 0.0f; + fTilt = 0.0f; + fWaveRate = 0.0f; + fWaveDist = 0.0f; + fMaxDrawDist = 0.0f; + hstrTextureName = LTNULL; + bUseSaturate = false; +} + + +class CScatterFX : public CSpecialFX +{ +public: + CScatterFX(); + ~CScatterFX(); + + virtual LTBOOL Init( SFXCREATESTRUCT* psfxCreateStruct ); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject( ILTClient* pClientDE ); + virtual uint32 GetSFXID() { return SFX_SCATTER_ID; } + +protected: + LTBOOL OnServerMessage( ILTMessage_Read* pMsg ); + +private: + LTVector m_vDims; + uint32 m_nBlindDataIndex; + float m_fHeight; + float m_fWidth; + float m_fMaxScale; + float m_fTilt; + float m_fWaveRate; + float m_fWaveDist; + float m_fMaxDrawDist; + float m_fMaxDrawDistSq; + HSTRING m_hstrTextureName; + bool m_bUseSaturate; + + LTVector m_vMinBounds; // bounding box min value + LTVector m_vMaxBounds; // bounding box max value + + bool m_bEnabled; // if false, don't update (all subvolumes will be inactive) + + uint32 m_nInternalTime; // current time value in internal units (10000s of a second) + LTVector m_vCamPos; // current camera position + + uint32 m_nNumSubVolumes; // number of subvolumes in this volume + CScatterFXSubVolume* m_pSubVolumes; // array of subvolumes within this scatter volume + + static std::list freeEffects; // shared list of volumeeffect objects that have been allocated, but aren't currently used + std::set activeSubVolumes; // collection of subvolumes that are currently active + + bool UpdateSubVolumes(); + + // take bounds that assume point sized particles, and adjust for particle size, wave, etc. + void AdjustBounds( LTVector& pos, LTVector& dims ); + + friend CScatterFXSubVolume; +}; + + +#endif // __SCATTER_FX_H__ diff --git a/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.cpp b/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.cpp new file mode 100644 index 00000000..6b214657 --- /dev/null +++ b/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.cpp @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScmdConsoleDriver_CShell.cpp +// +// PURPOSE : CShell driver for scmdclient +// +// CREATED : 10/24/02 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScmdConsoleDriver_CShell.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ScmdConsoleDriver_CShell::SendToServer +// +// PURPOSE: Sends formed message to server. +// +// RETURN: false on error. +// +// ----------------------------------------------------------------------- // + +bool ScmdConsoleDriver_CShell::SendToServer( ILTMessage_Read& msg ) +{ + g_pLTClient->SendToServer( &msg, MESSAGE_GUARANTEED ); + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ScmdConsoleDriver_CShell::WriteMessage +// +// PURPOSE: Writes message to clients output window. +// +// RETURN: false on error. +// +// ----------------------------------------------------------------------- // + +bool ScmdConsoleDriver_CShell::WriteMessage( char const* pszMessage ) +{ + // Check inputs. + if( !pszMessage || !pszMessage[0] ) + { + ASSERT( !"ScmdConsole_Impl::WriteMessage: Invalid inputs." ); + return false; + } + + g_pChatMsgs->AddMessage( pszMessage, kMsgScmd ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ScmdConsoleDriver_CShell::LoadStringResId +// +// PURPOSE: Loads string resource. +// +// RETURN: false on error. +// +// ----------------------------------------------------------------------- // + +char const* ScmdConsoleDriver_CShell::LoadStringResId( uint32 nResId ) +{ + return LoadTempString( nResId ); +} diff --git a/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.h b/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.h new file mode 100644 index 00000000..a9b301f0 --- /dev/null +++ b/Jack/ClientShellDLL/ScmdConsoleDriver_CShell.h @@ -0,0 +1,43 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScmdConsoleDriver_CShell.h +// +// PURPOSE : CShell driver for scmdclient +// +// CREATED : 10/24/02 +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef SCMDCONSOLEDRIVER_CSHELL_H +#define SCMDCONSOLEDRIVER_CSHELL_H + +#include "ScmdConsole.h" + +// ----------------------------------------------------------------------- // +// +// CLASS: ScmdConsoleDriver_CShell +// +// PURPOSE: Provides specialized ScmdConsoleDriver for Cshell. +// +// ----------------------------------------------------------------------- // + +class ScmdConsoleDriver_CShell : public ScmdConsoleDriver +{ + // Override to provide specialized IO with application. + public: + + // Sends formed message to server. + virtual bool SendToServer( ILTMessage_Read& msg ); + + // Writes message to clients output window. + virtual bool WriteMessage( char const* pszMessge ); + + // Loads string resource. + virtual char const* LoadStringResId( uint32 nResId ); +}; + + + +#endif // SCMDCONSOLEDRIVER_CSHELL_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenAudio.cpp b/Jack/ClientShellDLL/ScreenAudio.cpp new file mode 100644 index 00000000..fef9710f --- /dev/null +++ b/Jack/ClientShellDLL/ScreenAudio.cpp @@ -0,0 +1,380 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenAudio.cpp +// +// PURPOSE : Interface screen for setting audio options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenAudio.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "ProfileMgr.h" + +#include "GameClientShell.h" + + +namespace +{ + int kGap = 0; + int kWidth = 0; + void AreYouSureCallBack(LTBOOL bReturn, void *pData) + { + CScreenAudio *pThisScreen = (CScreenAudio *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_AUDIO); + if (pThisScreen) + { + pThisScreen->SendCommand(CMD_CONFIRM,bReturn,(uint32)pData); + } + } +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenAudio::CScreenAudio() +{ + m_nSoundVolume=SOUND_DEFAULT_VOL; + m_nMusicVolume=MUSIC_DEFAULT_VOL; + m_nSpeechVolume = SPEECH_DEFAULT_VOL; + m_bSoundQuality=LTFALSE; + m_bMusicQuality=LTFALSE; + m_bMusicEnabled=LTFALSE; + + m_pSoundVolumeCtrl=LTNULL; + m_pSpeechVolumeCtrl=LTNULL; + m_pMusicVolumeCtrl=LTNULL; + m_pSoundQualityCtrl=LTNULL; + m_pMusicQualityCtrl=LTNULL; + +} + +CScreenAudio::~CScreenAudio() +{ + +} + +// Build the screen +LTBOOL CScreenAudio::Build() +{ + + CreateTitle(IDS_TITLE_SOUND); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_AUDIO,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_AUDIO,"SliderWidth"); + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + m_bMusicEnabled = (dwAdvancedOptions & AO_MUSIC); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_AUDIO,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_AUDIO,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_SelectedColor); + AddControl(pFrame); + + m_pSoundVolumeCtrl=AddSlider(IDS_SOUND_FXVOL, IDS_HELP_SOUNDVOL, kGap, kWidth, -1, &m_nSoundVolume); + m_pSoundVolumeCtrl->Enable( (dwAdvancedOptions & AO_SOUND) ); + m_pSoundVolumeCtrl->SetSliderRange(SOUND_MIN_VOL, SOUND_MAX_VOL); + m_pSoundVolumeCtrl->SetSliderIncrement(SOUND_SLIDER_INC); + + m_pSpeechVolumeCtrl=AddSlider(IDS_SPEECH_FXVOL, IDS_HELP_SPEECHVOL, kGap, kWidth, -1, &m_nSpeechVolume); + m_pSpeechVolumeCtrl->Enable( (dwAdvancedOptions & AO_SOUND) ); + m_pSpeechVolumeCtrl->SetSliderRange(SPEECH_MIN_VOL, SPEECH_MAX_VOL); + m_pSpeechVolumeCtrl->SetSliderIncrement(SPEECH_SLIDER_INC); + + m_pSoundQualityCtrl=AddToggle(IDS_SOUND_QUALITY, IDS_HELP_SOUNDQUAL, kGap, &m_bSoundQuality); + m_pSoundQualityCtrl->SetOnString(LoadTempString(IDS_SOUND_HIGH)); + m_pSoundQualityCtrl->SetOffString(LoadTempString(IDS_SOUND_LOW)); + m_pSoundQualityCtrl->Enable( (dwAdvancedOptions & AO_SOUND) ); + + m_pMusicVolumeCtrl = AddSlider(IDS_SOUND_MUSICVOL, IDS_HELP_MUSICVOL, kGap, kWidth, -1, &m_nMusicVolume); + m_pMusicVolumeCtrl->Enable( (dwAdvancedOptions & AO_MUSIC) ); + m_pMusicVolumeCtrl->SetSliderRange(MUSIC_MIN_VOL, MUSIC_MAX_VOL); + m_pMusicVolumeCtrl->SetSliderIncrement(MUSIC_SLIDER_INC); + + m_pMusicQualityCtrl=AddToggle(IDS_MUSIC_QUALITY, IDS_HELP_MUSIC_QUALITY, kGap, &m_bMusicQuality); + m_pMusicQualityCtrl->SetOnString(LoadTempString(IDS_SOUND_HIGH)); + m_pMusicQualityCtrl->SetOffString(LoadTempString(IDS_SOUND_LOW)); + m_pMusicQualityCtrl->Enable( (dwAdvancedOptions & AO_MUSIC) ); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +uint32 CScreenAudio::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand == CMD_CONFIRM) + { + // See if we kept the change or not... + bool bChanged = true; + + if (dwParam2 == IDS_CONFIRM_MUSIC) + { + LTBOOL bChangedMusicQuality = m_bMusicQuality; + + m_bMusicQuality = (dwParam1 > 0); + m_pMusicQualityCtrl->UpdateData(LTFALSE); + + bChanged = (bChangedMusicQuality == m_bMusicQuality); + } + else if (dwParam2 == IDS_CONFIRM_SOUND) + { + LTBOOL bChangedSoundQuality = m_bSoundQuality; + + m_bSoundQuality = (dwParam1 > 0); + m_pSoundQualityCtrl->UpdateData(LTFALSE); + + bChanged = (bChangedSoundQuality == m_bSoundQuality); + } + + if (bChanged) + { + SaveSoundSettings(); + } + + return 1; + } + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); +}; + + +void CScreenAudio::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + pProfile->SetSound(); + + m_nSoundVolume = pProfile->m_nSoundVolume; + m_nMusicVolume = pProfile->m_nMusicVolume; + m_nSpeechVolume = (int)(100.0f * pProfile->m_fSpeechSoundMultiplier); + m_bSoundQuality = (pProfile->m_sPerformance.nSettings[kPerform_SoundQuality] > 0); + + LTBOOL bSoundOn = (LTBOOL)GetConsoleInt("soundenable",1); + m_pSoundVolumeCtrl->Enable(bSoundOn); + m_pSpeechVolumeCtrl->Enable(bSoundOn); + m_pSoundQualityCtrl->Enable(bSoundOn); + + m_bMusicQuality = (pProfile->m_sPerformance.nSettings[kPerform_MusicQuality] > 0); + + if (!GetConsoleInt("MusicActive",0)) + m_nMusicVolume = MUSIC_MIN_VOL; + + m_pMusicVolumeCtrl->Enable(m_bMusicEnabled); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + + m_nPerformance = g_pPerformanceMgr->GetPerformanceCfg(false); + + UpdateData(LTFALSE); + } + else + { + SaveSoundSettings(); + + //sound setting can affect performance sttings so update them here... + g_pPerformanceMgr->GetPerformanceOptions(&pProfile->m_sPerformance); + pProfile->Save(); + } + + CBaseScreen::OnFocus(bFocus); +} + +//check to see if they really want to (for performance reasons) +void CScreenAudio::ConfirmQualityChange(bool bMusic) +{ + UpdateData(LTTRUE); + + if (bMusic) + { + if (m_bMusicQuality && (m_nPerformance < 2)) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = AreYouSureCallBack; + mb.pData = (void *)IDS_CONFIRM_MUSIC; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_MUSIC,&mb,0,LTFALSE); + return; + } + } + else + { + if (m_bSoundQuality && (m_nPerformance == 0)) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = AreYouSureCallBack; + mb.pData = (void *)IDS_CONFIRM_SOUND; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_SOUND,&mb,0,LTFALSE); + return; + } + } + + // We accepted change, so save the new sound settings... + + SaveSoundSettings(); +} + +// Save the sound settings +void CScreenAudio::SaveSoundSettings() +{ + UpdateData(LTTRUE); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->m_nSoundVolume = m_nSoundVolume; + pProfile->m_nMusicVolume = m_nMusicVolume; + + bool bActive = ((m_nMusicVolume > MUSIC_MIN_VOL) && m_bMusicEnabled); + WriteConsoleInt("MusicActive", !!bActive); + pProfile->m_fSpeechSoundMultiplier = m_nSpeechVolume / 100.0f; + pProfile->m_sPerformance.nSettings[kPerform_MusicQuality] = m_bMusicQuality; + pProfile->m_sPerformance.nSettings[kPerform_SoundQuality] = m_bSoundQuality; + pProfile->m_sPerformance.nSettings[kPerform_MusicActive] = bActive; + + pProfile->ApplySound(); + + //need to ApplyPerformance() becaue music quality is a performance setting. + pProfile->ApplyPerformance(false); +} + + + +// Override the left and right controls so that the volumes can be changed +LTBOOL CScreenAudio::OnLeft() +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnLeft(); + if (handled) + { + if (pCtrl == m_pMusicVolumeCtrl) + { + UpdateData(LTTRUE); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + SaveSoundSettings(); + } + else if (pCtrl == m_pMusicQualityCtrl) + ConfirmQualityChange(true); + else if (pCtrl == m_pSoundQualityCtrl) + ConfirmQualityChange(false); + else + SaveSoundSettings(); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + + return handled; +} + +LTBOOL CScreenAudio::OnRight() +{ + LTBOOL handled = CBaseScreen::OnRight(); + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (handled) + { + if (pCtrl == m_pMusicVolumeCtrl) + { + UpdateData(LTTRUE); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + SaveSoundSettings(); + } + else if (pCtrl == m_pMusicQualityCtrl) + ConfirmQualityChange(true); + else if (pCtrl == m_pSoundQualityCtrl) + ConfirmQualityChange(false); + else + SaveSoundSettings(); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + return handled; +} + + +LTBOOL CScreenAudio::OnEnter() +{ + LTBOOL handled = CBaseScreen::OnEnter(); + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (handled) + { + if (pCtrl == m_pMusicVolumeCtrl) + { + UpdateData(LTTRUE); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + SaveSoundSettings(); + } + else if (pCtrl == m_pMusicQualityCtrl) + ConfirmQualityChange(true); + else if (pCtrl == m_pSoundQualityCtrl) + ConfirmQualityChange(false); + else + SaveSoundSettings(); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + return handled; +} + +LTBOOL CScreenAudio::OnLButtonUp(int x, int y) +{ + LTBOOL handled = CBaseScreen::OnLButtonUp(x, y); + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (handled) + { + if (pCtrl == m_pMusicVolumeCtrl) + { + UpdateData(LTTRUE); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + SaveSoundSettings(); + } + else if (pCtrl == m_pMusicQualityCtrl) + ConfirmQualityChange(true); + else if (pCtrl == m_pSoundQualityCtrl) + ConfirmQualityChange(false); + else + SaveSoundSettings(); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + return handled; +} + +LTBOOL CScreenAudio::OnRButtonUp(int x, int y) +{ + LTBOOL handled = CBaseScreen::OnRButtonUp(x, y); + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (handled) + { + if (pCtrl == m_pMusicVolumeCtrl) + { + UpdateData(LTTRUE); + m_pMusicQualityCtrl->Enable(m_bMusicEnabled && m_nMusicVolume > MUSIC_MIN_VOL); + SaveSoundSettings(); + } + else if (pCtrl == m_pMusicQualityCtrl) + ConfirmQualityChange(true); + else if (pCtrl == m_pSoundQualityCtrl) + ConfirmQualityChange(false); + else + SaveSoundSettings(); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + return handled; +} diff --git a/Jack/ClientShellDLL/ScreenAudio.h b/Jack/ClientShellDLL/ScreenAudio.h new file mode 100644 index 00000000..ea93d776 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenAudio.h @@ -0,0 +1,62 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenAudio.cpp +// +// PURPOSE : Interface screen for setting audio options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_AUDIO_H_ +#define _SCREEN_AUDIO_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenAudio : public CBaseScreen +{ +public: + CScreenAudio(); + virtual ~CScreenAudio(); + + // Build the screen + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + + // Override the left and right controls so that the volumes can be changed + LTBOOL OnLeft(); + LTBOOL OnRight(); + LTBOOL OnEnter(); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + +protected: + void ConfirmQualityChange(bool bMusic); + void SaveSoundSettings(); + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + +protected: + int m_nSoundVolume; + int m_nMusicVolume; + int m_nSpeechVolume; + LTBOOL m_bSoundQuality; + LTBOOL m_bMusicQuality; + LTBOOL m_bMusicEnabled; + + uint8 m_nPerformance; + + + CLTGUISlider *m_pSoundVolumeCtrl; + CLTGUISlider *m_pMusicVolumeCtrl; + CLTGUISlider *m_pSpeechVolumeCtrl; + CLTGUIToggle *m_pSoundQualityCtrl; + CLTGUIToggle *m_pMusicQualityCtrl; + +}; + +#endif // _SCREEN_AUDIO_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenCommands.h b/Jack/ClientShellDLL/ScreenCommands.h new file mode 100644 index 00000000..4b8318a9 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenCommands.h @@ -0,0 +1,137 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenCommands.h +// +// PURPOSE : Enumerate interface screen commands +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef SCREENCOMMANDS_H +#define SCREENCOMMANDS_H + +/////////////////////////////////////// +// The command IDs for the screen options + +enum eScreenCmds +{ + CMD_NONE, + +// Reusable + CMD_BACK, + CMD_CONTINUE, + CMD_LEFT, + CMD_RIGHT, + CMD_MAIN, + CMD_OK, + CMD_CANCEL, + CMD_UPDATE, + +// Main menu + CMD_SINGLE_PLAYER, + CMD_CONTINUE_GAME, + CMD_MULTI_PLAYER, + CMD_MULTI_PLAYER_LAN, + CMD_COOP, + CMD_DM, + CMD_TEAM_DM, + CMD_DOOM, + CMD_DEMOLITION, + CMD_OPTIONS, + CMD_RESUME, + CMD_PROFILE, + CMD_EXIT, + CMD_QUIT, + +// single + CMD_NEW_GAME, + CMD_LEVEL1, + CMD_LEVEL2, + CMD_LEVEL3, + CMD_LOAD_GAME, + CMD_SAVE_GAME, + CMD_CUSTOM_LEVEL, + CMD_CHAPTER, + CMD_EASY, + CMD_MEDIUM, + CMD_HARD, + CMD_INSANE, + +// single-save + CMD_OVERWRITE, + CMD_EDIT_NAME, + +// multi + CMD_PLAYER, + CMD_HOST, + CMD_JOIN, + +// multi-player + +// multi-host + CMD_EDIT_PASS, + CMD_EDIT_SCMDPASS, + CMD_EDIT_PORT, + CMD_TOGGLE_PASS, + CMD_TOGGLE_SCMDPASS, + CMD_TOGGLE_LAN, + CMD_SET_OPTIONS, + CMD_CHOOSE_CAMPAIGN, + CMD_SET_LEVELS, + CMD_EDIT_BANDWIDTH, + CMD_LAUNCH, + CMD_WEAPONS, + +// multi-host-levels + CMD_ADD_LEVEL, + CMD_REMOVE_LEVEL, + CMD_ADD_ALL, + CMD_REMOVE_ALL, + +// multi-join + CMD_SEARCH, + CMD_EDIT_CDKEY, + +// options + CMD_DISPLAY, + CMD_AUDIO, + CMD_CONTROLS, + CMD_GAME, + CMD_PERFORMANCE, + +// options-controls + CMD_CONFIGURE, + CMD_MOUSE, + CMD_KEYBOARD, + CMD_JOYSTICK, + CMD_RESET_DEFAULTS, + +// options-game + CMD_CROSSHAIR, + +// options-performance + CMD_SFX, + CMD_TEXTURE, + +// options-controls-configure + CMD_MOVE_COM, + CMD_INV_COM, + CMD_VIEW_COM, + CMD_MISC_COM, + CMD_CHANGE_CONTROL, + +// profile + CMD_LOAD, + CMD_CONFIRM, + CMD_DELETE, + CMD_CREATE, + CMD_RENAME, + CMD_EDIT, + + CMD_CUSTOM, //this needs to be the last cmd, so that custom commands may be defined after it +}; + + + +#endif // SCREENCOMMANDS_H diff --git a/Jack/ClientShellDLL/ScreenConfigure.cpp b/Jack/ClientShellDLL/ScreenConfigure.cpp new file mode 100644 index 00000000..6ea68d24 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenConfigure.cpp @@ -0,0 +1,919 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenConfigure.cpp +// +// PURPOSE : Interface screen for binding keys to commands +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenConfigure.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "dinput.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" + +// The different columns +#define SCREEN_COLUMN_ACTION 0 +#define SCREEN_COLUMN_EQUALS 1 +#define SCREEN_COLUMN_KEY 2 + +namespace +{ + + uint32 devices[SCREEN_CONTROLS_NUM_DEVICES] = + { + DEVICETYPE_KEYBOARD, + DEVICETYPE_MOUSE, + DEVICETYPE_JOYSTICK + }; + + char strDeviceName[SCREEN_CONTROLS_NUM_DEVICES][256] = + { + "","","" + }; + + char strDeviceNiceName[SCREEN_CONTROLS_NUM_DEVICES][256] = + { + "","","" + }; + + LTBOOL bEatMouseButtonUp = LTFALSE; + + char szWheelUp[32] = ""; + char szWheelDown[32] = ""; + + +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenConfigure::CScreenConfigure() +{ + m_bControlChanged = LTFALSE; + m_bWaitingForKey = LTFALSE; + m_fInputPauseTimeLeft = 0.0f; + m_nType = 0; + m_pProfile = LTNULL; + +} + +CScreenConfigure::~CScreenConfigure() +{ + +} + +void CScreenConfigure::Escape() +{ + if (m_bWaitingForKey || m_fInputPauseTimeLeft) + { + return; + } + + for (int n = 0; n < 4; n++) + { + if (GetSelection() == GetIndex(m_pList[n])) + { + SetCurrentType(kNumCommandTypes); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return; + } + } + + m_bControlChanged = LTFALSE; + + CBaseScreen::Escape(); +} + +LTBOOL CScreenConfigure::Init(int nScreenID) +{ + LoadString(IDS_DEVICE_MOUSE,strDeviceNiceName[1],sizeof(strDeviceNiceName[1])); + LoadString(IDS_DEVICE_JOYSTICK,strDeviceNiceName[2],sizeof(strDeviceNiceName[2])); + + sprintf (szWheelUp,"%s %s",strDeviceNiceName[1], LoadTempString(IDS_WHEEL_UP) ); + sprintf (szWheelDown,"%s %s",strDeviceNiceName[1], LoadTempString(IDS_WHEEL_DOWN) ); + + if (g_pGameClientShell->HasGamepad()) + { + devices[2] = DEVICETYPE_GAMEPAD; + g_pGameClientShell->EnableGamepad(); + } + else if (g_pGameClientShell->HasJoystick()) + { + devices[2] = DEVICETYPE_JOYSTICK; + g_pGameClientShell->EnableJoystick(); + } + else + devices[2] = DEVICETYPE_UNKNOWN; + + + + for (int dev = 0; dev < 3; dev++) + { + g_pLTClient->GetDeviceName (devices[dev],strDeviceName[dev], sizeof(strDeviceName[dev])); + } + + + return CBaseScreen::Init(nScreenID); +} + +// Build the screen +LTBOOL CScreenConfigure::Build() +{ + + CreateTitle(IDS_TITLE_CONFIGURE); + + m_nActionWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONFIGURE,"ActionWidth"); + m_nEqualsWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONFIGURE,"EqualsWidth"); + m_nCommandWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONFIGURE,"CommandWidth"); + m_ListRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_CONFIGURE,"ListRect"); + m_nListFontSize = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONFIGURE,"ListFontSize"); + + + int nWidth = GetPageRight() - GetPageLeft(); + LTIntPt topPos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_CONFIGURE,"MoveControlPos"); + + CLTGUITextCtrl *pCtrl = AddTextItem(IDS_MOVE_CONTROLS,CMD_MOVE_COM,LTNULL,topPos); + pCtrl->SetFixedWidth(nWidth); + + pCtrl = AddTextItem(IDS_INV_CONTROLS,CMD_INV_COM,LTNULL); + pCtrl->SetFixedWidth(nWidth); + + pCtrl = AddTextItem(IDS_VIEW_CONTROLS,CMD_VIEW_COM,LTNULL); + pCtrl->SetFixedWidth(nWidth); + + pCtrl = AddTextItem(IDS_MISC_CONTROLS,CMD_MISC_COM,LTNULL); + pCtrl->SetFixedWidth(nWidth); + + + LTIntPt pos(m_ListRect.left,m_ListRect.top); + int nHt = m_ListRect.bottom - m_ListRect.top; + int nWd = m_nActionWidth + m_nEqualsWidth + m_nCommandWidth; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_CONFIGURE,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + m_pFrame = debug_new(CLTGUIFrame); + m_pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + m_pFrame->SetBasePos(pos); + AddControl(m_pFrame); + + + for (int nType = 0; nType < kNumCommandTypes; nType++) + { + m_pList[nType] = AddList(pos,nHt); + m_pList[nType]->SetFrameWidth(2); + m_pList[nType]->SetIndent(LTIntPt(4,4)); + m_pList[nType]->Show(LTFALSE); + + pCtrl = LTNULL; + switch (nType) + { + case COM_MOVE: + pCtrl = CreateTextItem(IDS_MOVE_CONTROLS,LTNULL,LTNULL,kDefaultPos,LTTRUE); + break; + case COM_INV: + pCtrl = CreateTextItem(IDS_INV_CONTROLS,LTNULL,LTNULL,kDefaultPos,LTTRUE); + break; + case COM_VIEW: + pCtrl = CreateTextItem(IDS_VIEW_CONTROLS,LTNULL,LTNULL,kDefaultPos,LTTRUE); + break; + case COM_MISC: + pCtrl = CreateTextItem(IDS_MISC_CONTROLS,LTNULL,LTNULL,kDefaultPos,LTTRUE); + break; + } + + if (pCtrl) + m_pList[nType]->AddControl(pCtrl); + + } + + InitControlList(); + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +void CScreenConfigure::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + m_pProfile->SetBindings(); + UpdateControlList(); + } + else + { + m_pProfile->ApplyBindings(); + m_pProfile->Save(); + m_pProfile = LTNULL; + for (int nType = 0; nType < kNumCommandTypes; nType++) + m_pList[nType]->Show(LTFALSE); + } + CBaseScreen::OnFocus(bFocus); + + if (bFocus) + SetCurrentType(COM_MOVE); + +} + + +// Adds the columns to the controls +void CScreenConfigure::InitControlList() +{ + + LTIntPt pos(m_ListRect.left,m_ListRect.top); + + + for (int i=0; i < g_kNumCommands; i++) + { + const CommandData *pData = GetCommandData(i); + + //check to see that this is a TO2 command + if (pData->nCommandID < FIRST_TRON_COMMAND) + { + // The initial column (contains the action) + CLTGUIColumnCtrl *pCtrl=CreateColumnCtrl(CMD_CHANGE_CONTROL, IDS_HELP_SETCONTROL); + pCtrl->SetFont(LTNULL,m_nListFontSize); + + // The "action" column + char szTmp[64]; + FormatString(pData->nStringID,szTmp,sizeof(szTmp)); + pCtrl->AddColumn(szTmp, m_nActionWidth); + + // The equals column. Changes from "" to "=" when the user is binding the key + pCtrl->AddColumn(" ", m_nEqualsWidth); + + // The column that contains the key which is assigned to the control! + FormatString(IDS_CONTROL_UNASSIGNED,szTmp,sizeof(szTmp)); + pCtrl->AddColumn(szTmp, m_nCommandWidth); + + pCtrl->SetParam1(i); + + m_pList[pData->nCommandType]->AddControl(pCtrl); + } + + } +} + + +// fill the list of controls with binding data +void CScreenConfigure::UpdateControlList() +{ + for (int nType = 0; nType < kNumCommandTypes; nType++) + { + int nHt = m_ListRect.bottom - m_ListRect.top; + + m_pList[nType]->SetHeight(nHt); + + for (int i = 0; i < m_pList[nType]->GetNumControls(); i ++) + { + SetControlText(nType,i); + } + } + + AdjustControlFrame(); + +} + + +// Sets the key/mouse info for a control at a specific index +void CScreenConfigure::SetControlText(int nType, int nIndex) +{ + + CLTGUICtrl *pCtrl = m_pList[nType]->GetControl(nIndex+1); + if (pCtrl) + { + SetControlText(pCtrl); + } +} +void CScreenConfigure::SetControlText(CLTGUICtrl *pCtrl) +{ + CLTGUIColumnCtrl *pCol = (CLTGUIColumnCtrl *)pCtrl; + uint32 nCommand = pCtrl->GetParam1(); + + CBindingData* pData = m_pProfile->FindBinding(nCommand); + + char strControls[256] = ""; + char szDeviceObjectName[256] = ""; + int numControls = 0; + + if (pData) + { + if (strlen(pData->strTriggerName[0]) != 0 ) + { + char szTemp[256] = ""; + + // Get the name twice and take the shorter version. WinXP has a problem + // with occasionally reporting garbage. Taking the shorter one assumes that + // the garbage version is full of bad characters. + g_pLTClient->GetDeviceObjectName( m_pProfile->GetDeviceName( 0 ), pData->nDeviceObjectId[0], + szTemp, ARRAY_LEN( szTemp )); + g_pLTClient->GetDeviceObjectName( m_pProfile->GetDeviceName( 0 ), pData->nDeviceObjectId[0], + szDeviceObjectName, ARRAY_LEN( szDeviceObjectName )); + + if( strlen( szTemp ) < strlen( szDeviceObjectName )) + { + SAFE_STRCPY(strControls, szTemp ); + } + else + { + SAFE_STRCPY(strControls, szDeviceObjectName ); + } + + ++numControls; + } + + if (strlen(pData->strTriggerName[1]) != 0 ) + { + if (numControls) + strcat(strControls,", "); + + if (stricmp("#U",pData->strRealName[1]) == 0) + strcat(strControls,szWheelUp); + else if (stricmp("#D",pData->strRealName[1]) == 0) + strcat(strControls,szWheelDown); + else if (stricmp("##3",pData->strRealName[1]) == 0) + strcat(strControls,LoadTempString(IDS_MOUSE_LEFTBUTTON)); + else if (stricmp("##4",pData->strRealName[1]) == 0) + strcat(strControls,LoadTempString(IDS_MOUSE_RIGHTBUTTON)); + else if (stricmp("##5",pData->strRealName[1]) == 0) + strcat(strControls,LoadTempString(IDS_MOUSE_MIDDLEBUTTON)); + else + { + strcat(strControls,strDeviceNiceName[1]); + strcat(strControls," "); + + g_pLTClient->GetDeviceObjectName( m_pProfile->GetDeviceName( 1 ), pData->nDeviceObjectId[1], + szDeviceObjectName, ARRAY_LEN( szDeviceObjectName )); + + strcat(strControls, szDeviceObjectName ); + } + } + + if (strlen(pData->strTriggerName[2]) != 0 ) + { + if (numControls) + strcat(strControls,", "); + strcat(strControls,strDeviceNiceName[2]); + strcat(strControls," "); + + g_pLTClient->GetDeviceObjectName( m_pProfile->GetDeviceName( 2 ), pData->nDeviceObjectId[2], + szDeviceObjectName, ARRAY_LEN( szDeviceObjectName )); + + strcat( strControls, szDeviceObjectName ); + } + } + + + // If the key is unassigned, then just set the text to the unassigned message + if (strlen(strControls) == 0 ) + { + char szTmp[64]; + FormatString(IDS_CONTROL_UNASSIGNED,szTmp,sizeof(szTmp)); + pCol->SetString(SCREEN_COLUMN_KEY, szTmp); + } + else + { + // Set the text in the control + pCol->SetString(SCREEN_COLUMN_KEY, strControls); + } + +} + +int CScreenConfigure::GetCommand(int nType, int nIndex) +{ + CLTGUIColumnCtrl *pCtrl = (CLTGUIColumnCtrl *) (m_pList[nType]->GetControl(nIndex+1)); + if (!pCtrl) + { + _ASSERT(0); + return 0; + } + + return pCtrl->GetParam1(); + +} + +// Unbinds an action +void CScreenConfigure::UnBind( uint32 nObjectId, char const* pszControlName, uint32 deviceType) +{ + if( !nObjectId && !pszControlName ) + { + ASSERT( !"CScreenConfigure::UnBind: Invalid inputs." ); + return; + } + + int dev = 0; + while (dev < 3 && devices[dev] != deviceType) + ++dev; + + char szTmp[16] =""; + for (int i = 0; i < g_kNumCommands; i++) + { + CBindingData *pData = m_pProfile->FindBinding(i); + if( nObjectId ) + { + if( pData->nDeviceObjectId[dev] != nObjectId ) + { + continue; + } + } + else + { + if( stricmp( pData->strRealName[dev], pszControlName )) + continue; + } + + strcpy(pData->strRealName[dev],""); + strcpy(pData->strTriggerName[dev],""); + pData->nDeviceObjectId[dev] = 0; + + } +} + +// Binds a key to a action +void CScreenConfigure::Bind(int nCommand, uint32 nDeviceObjectId, uint16 nControlCode, char *lpszControlName, uint32 deviceType) +{ + _ASSERT(lpszControlName || nControlCode); + + int dev = 0; + while (dev < 3 && devices[dev] != deviceType) + ++dev; + + CBindingData *pData = m_pProfile->FindBinding(nCommand); + if (pData) + { + pData->nDeviceObjectId[dev] = nDeviceObjectId; + + if (nControlCode && (deviceType != DEVICETYPE_JOYSTICK || deviceType == DEVICETYPE_GAMEPAD)) + { + sprintf(pData->strRealName[dev],"##%d",nControlCode); + SAFE_STRCPY(pData->strTriggerName[dev],lpszControlName) + } + else + { + SAFE_STRCPY(pData->strRealName[dev],lpszControlName) + SAFE_STRCPY(pData->strTriggerName[dev],lpszControlName) + } + } +} + +// Handle a keypress +LTBOOL CScreenConfigure::HandleKeyDown(int key, int rep) +{ + + LTBOOL handled = LTFALSE; + + switch (key) + { + case VK_DELETE: + { + // Ignore if they haven't selected anything yet. + if( GetSelection( ) == kNoSelection ) + break; + + // Unassign the key + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + { + + CLTGUICtrl *pCtrl = m_pList[m_nType]->GetSelectedControl(); + if( !pCtrl ) + break; + + int nCommand = pCtrl->GetParam1(); + CBindingData* pData = m_pProfile->FindBinding(nCommand); + + UnBind( pData->nDeviceObjectId[0], NULL, DEVICETYPE_KEYBOARD); + UnBind( 0, pData->strTriggerName[1], DEVICETYPE_MOUSE); + + if (g_pGameClientShell->HasGamepad()) + UnBind( 0, pData->strTriggerName[2], DEVICETYPE_GAMEPAD); + else if (g_pGameClientShell->HasJoystick()) + UnBind(0, pData->strTriggerName[2], DEVICETYPE_JOYSTICK); + else + UnBind(0, pData->strTriggerName[2], DEVICETYPE_UNKNOWN); + + SetControlText(pCtrl); + + handled = LTTRUE; + } + break; + } + } + // Check to see if the base class is handling this key + if (m_bWaitingForKey || m_fInputPauseTimeLeft) + return handled; + + if (!handled) + { + handled = CBaseScreen::HandleKeyDown(key, rep); + } + + // Handled the key + return handled; +} + + +uint32 CScreenConfigure::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_MOVE_COM: + SetCurrentType(COM_MOVE); + break; + case CMD_INV_COM: + SetCurrentType(COM_INV); + break; + case CMD_VIEW_COM: + SetCurrentType(COM_VIEW); + break; + case CMD_MISC_COM: + SetCurrentType(COM_MISC); + break; + + + case CMD_CHANGE_CONTROL: + { + + if (m_bWaitingForKey) + break; + // Set the current screen item to ??? while tracking the device. + int nIndex=m_pList[m_nType]->GetSelectedIndex()-1; + if (nIndex < 0) + break; + + CLTGUIColumnCtrl *pCtrl= (CLTGUIColumnCtrl *)m_pList[m_nType]->GetSelectedControl(); + + pCtrl->SetString(SCREEN_COLUMN_EQUALS, "="); + + pCtrl->SetString(SCREEN_COLUMN_KEY, " "); + + + + // see if we can track the input devices + LTRESULT hResult = g_pLTClient->StartDeviceTrack (DEVICETYPE_KEYBOARD | DEVICETYPE_MOUSE | devices[2], TRACK_BUFFER_SIZE); + if (hResult != LT_OK) + { + g_pLTClient->EndDeviceTrack(); + } + else + { + m_bWaitingForKey = LTTRUE; + } + + + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +LTBOOL CScreenConfigure::Render(HSURFACE hDestSurf) +{ + + + //no actual rendering here... just wait for keypress + + // see if we are pausing input + if (m_fInputPauseTimeLeft) + { + m_fInputPauseTimeLeft -= g_pGameClientShell->GetFrameTime(); + if (m_fInputPauseTimeLeft < 0.0f) m_fInputPauseTimeLeft = 0.0f; + } + + // see if we are waiting for a keypress + if (m_bWaitingForKey) + { + uint32 nArraySize = TRACK_BUFFER_SIZE; + g_pLTClient->TrackDevice (m_pInputArray, &nArraySize); + if (nArraySize > 0) + { + // find the first key down event + for (uint32 i = 0; i < nArraySize; i++) + { + if (m_pInputArray[i].m_InputValue) + { + if (SetCurrentSelection (&m_pInputArray[i])) + { + if (m_pInputArray[i].m_ControlType == CONTROLTYPE_BUTTON) + bEatMouseButtonUp = LTTRUE; + m_bWaitingForKey = LTFALSE; + g_pLTClient->EndDeviceTrack(); + m_fInputPauseTimeLeft = 0.2f; + } + } + } + } + } + + return CBaseScreen::Render(hDestSurf); +} + + +void CScreenConfigure::SetCurrentType(int nType) +{ + if (nType < 0 || nType > kNumCommandTypes) + { + nType = kNumCommandTypes; + } + for (int n = 0; n < kNumCommandTypes; n++) + { + m_pList[n]->Show( (n==nType) ); + } + m_nType = nType; + if (nType < kNumCommandTypes) + SetSelection(GetIndex(m_pList[nType])); + else + SetSelection(0); + + AdjustControlFrame(); + +} + +LTBOOL CScreenConfigure::SetCurrentSelection (DeviceInput* pInput) +{ + CLTGUIColumnCtrl *pCtrl=(CLTGUIColumnCtrl *)m_pList[m_nType]->GetSelectedControl(); + int nCommand=pCtrl->GetParam1(); + int nIndex=m_pList[m_nType]->GetSelectedIndex()-1; + + if (pInput->m_DeviceType == DEVICETYPE_JOYSTICK) + { + uint16 diCode = pInput->m_ControlCode; + g_pLTClient->CPrint("joystick diCode:%d",diCode); + } + + if (pInput->m_DeviceType == DEVICETYPE_MOUSE && pInput->m_ControlType == CONTROLTYPE_ZAXIS) + { + return CheckMouseWheel(pInput); + } + + if (pInput->m_ControlType != CONTROLTYPE_BUTTON && + pInput->m_ControlType != CONTROLTYPE_KEY) + return LTFALSE; + + + +// char sNewKey[256]; +// SAFE_STRCPY(sNewKey,pInput->m_ControlName); + + // see if this key is bound to something not in the keyboard configuration folder... + if (KeyRemappable(pInput)) + { + UnBind( pInput->m_nObjectId, NULL, pInput->m_DeviceType); + Bind(nCommand, pInput->m_nObjectId, pInput->m_ControlCode, pInput->m_ControlName, pInput->m_DeviceType); + + }; + + + pCtrl->SetString(SCREEN_COLUMN_EQUALS, ""); + + UpdateControlList(); + + return LTTRUE; +} + +LTBOOL CScreenConfigure::KeyRemappable (DeviceInput* pInput) +{ + + if (pInput->m_DeviceType != DEVICETYPE_KEYBOARD) return LTTRUE; + + uint16 nDIK = pInput->m_ControlCode; + if (nDIK == DIK_ESCAPE) + return LTFALSE; + if (nDIK == DIK_PAUSE) + return LTFALSE; + if (nDIK >= DIK_F1 && nDIK <= DIK_F10) + return LTFALSE; + if (nDIK >= DIK_F11 && nDIK <= DIK_F15) + return LTFALSE; + if (nDIK >= DIK_MUTE && nDIK <= DIK_WEBHOME) + return LTFALSE; + if (nDIK >= DIK_LWIN) + return LTFALSE; + + + DeviceBinding* pBindings = g_pLTClient->GetDeviceBindings (DEVICETYPE_KEYBOARD); + if (!pBindings) return LTTRUE; + + // see if this input object is already bound to something... + + DeviceBinding* ptr = pBindings; + while (ptr) + { + if( ptr->m_nObjectId == pInput->m_nObjectId ) + { + // see if this binding is in the list of mappable ones + GameAction* pAction = ptr->pActionHead; + while (pAction) + { + LTBOOL bFound = LTFALSE; + for (int i = 0; i < g_kNumCommands; i++) + { + const CommandData *pData = GetCommandData(i); + if (pData->nCommandID == pAction->nActionCode) + { + bFound = LTTRUE; + break; + } + } + + if (!bFound) + { + // this key is already bound to something but is not remappable + g_pLTClient->FreeDeviceBindings (pBindings); + return LTFALSE; + } + + pAction = pAction->pNext; + } + + // binding must already exist in the folders... + break; + } + ptr = ptr->pNext; + } + + // either the binding exists in the folders or this key is not currently bound...therefore it's remappable + + g_pLTClient->FreeDeviceBindings (pBindings); + return LTTRUE; +} + + +LTBOOL CScreenConfigure::OnUp() +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnUp(); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnDown() +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnDown(); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnLeft() +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnLeft(); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnRight() +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnRight(); + else + return LTTRUE; +} +LTBOOL CScreenConfigure::OnEnter() +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnEnter(); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnLButtonDown(int x, int y) +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnLButtonDown(x,y); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnLButtonUp(int x, int y) +{ + if (bEatMouseButtonUp) + { + bEatMouseButtonUp = LTFALSE; + return LTTRUE; + } + else + return CBaseScreen::OnLButtonUp(x,y); +} + +LTBOOL CScreenConfigure::OnLButtonDblClick(int x, int y) +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnLButtonDblClick(x,y); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnRButtonDown(int x, int y) +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnRButtonDown(x,y); + else + return LTTRUE; +} + +LTBOOL CScreenConfigure::OnRButtonUp(int x, int y) +{ + if (bEatMouseButtonUp) + { + bEatMouseButtonUp = LTFALSE; + return LTTRUE; + } + else + return CBaseScreen::OnRButtonUp(x,y); +} + +LTBOOL CScreenConfigure::OnRButtonDblClick(int x, int y) +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnRButtonDblClick(x,y); + else + return LTTRUE; +} + + +LTBOOL CScreenConfigure::OnMouseMove(int x, int y) +{ + if (!m_bWaitingForKey && !m_fInputPauseTimeLeft) + return CBaseScreen::OnMouseMove(x, y); + else + return LTTRUE; +} + + + +LTBOOL CScreenConfigure::CheckMouseWheel (DeviceInput* pInput) +{ + + if (!g_pLTClient) return LTFALSE; + + if (pInput->m_DeviceType != DEVICETYPE_MOUSE || pInput->m_ControlType != CONTROLTYPE_ZAXIS) + return LTFALSE; + + LTBOOL bWheelUp = ((int)pInput->m_InputValue > 0); + char szCommand[64]; + + CLTGUIColumnCtrl *pCtrl=(CLTGUIColumnCtrl *)m_pList[m_nType]->GetSelectedControl(); + int nCommand=pCtrl->GetParam1(); + uint16 diCode = pInput->m_ControlCode; + + if (bWheelUp) + strcpy(szCommand, "#U"); + else + strcpy(szCommand, "#D"); + + UnBind( 0, szCommand, pInput->m_DeviceType ); + + Bind(nCommand, pInput->m_nObjectId, 0, szCommand, pInput->m_DeviceType); + + pCtrl->SetString(SCREEN_COLUMN_EQUALS, ""); + + UpdateControlList(); + + return LTTRUE; +} + + + +void CScreenConfigure::AdjustControlFrame() +{ + if (m_nType >= kNumCommandTypes) + { + m_pFrame->Show(LTFALSE); + return; + } + + + uint16 nWd = m_nActionWidth + m_nEqualsWidth + m_nCommandWidth; + m_pFrame->Show(LTTRUE); + + m_pList[m_nType]->CalculatePositions(); + + LTIntPt listpos = m_pList[m_nType]->GetBasePos(); + uint16 i = m_pList[m_nType]->GetNumControls() - 1; + CLTGUICtrl *pCtrl = m_pList[m_nType]->GetControl(i); + if (pCtrl) + { + LTIntPt pos = pCtrl->GetBasePos(); + + uint16 nHt = (pos.y - listpos.y) + pCtrl->GetBaseHeight() + 4; + + m_pFrame->SetSize(nWd+8,nHt); + m_pList[m_nType]->SetHeight(nHt); + } +} diff --git a/Jack/ClientShellDLL/ScreenConfigure.h b/Jack/ClientShellDLL/ScreenConfigure.h new file mode 100644 index 00000000..c203395f --- /dev/null +++ b/Jack/ClientShellDLL/ScreenConfigure.h @@ -0,0 +1,96 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenConfigure.h +// +// PURPOSE : Interface screen for binding keys to commands +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_CONFIGURE_H_ +#define _SCREEN_CONFIGURE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "ProfileMgr.h" + +#define TRACK_BUFFER_SIZE 8 +#define SCREEN_CONTROLS_NUM_DEVICES 3 +#define MAX_CONTROLS_PER_ACTION 2 + + +class CScreenConfigure : public CBaseScreen +{ +public: + CScreenConfigure(); + virtual ~CScreenConfigure(); + + LTBOOL Init(int nScreenID); + LTBOOL Render(HSURFACE hDestSurf); + + // Build the screen + LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + + // Handle input + virtual LTBOOL OnUp(); + virtual LTBOOL OnDown(); + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnEnter(); + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnLButtonDblClick(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + virtual LTBOOL OnRButtonUp(int x, int y); + virtual LTBOOL OnRButtonDblClick(int x, int y); + virtual LTBOOL OnMouseMove(int x, int y); + + virtual void Escape(); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void InitControlList(); + void UpdateControlList(); + void AdjustControlFrame(); + + void SetControlText(int nType, int nIndex); + void SetControlText(CLTGUICtrl *pCtrl); + LTBOOL HandleKeyDown(int key, int rep); + LTBOOL KeyRemappable (DeviceInput* pInput); + LTBOOL SetCurrentSelection (DeviceInput* pInput); + LTBOOL CheckMouseWheel (DeviceInput* pInput); + int GetCommand(int nType, int nIndex); + void Bind(int nCommand, uint32 nDeviceObjectId, uint16 nControlCode, char *lpszControlName, uint32 deviceType); + void UnBind( uint32 nDeviceObjectId, char const* pszControlName, uint32 deviceType); + + void SetCurrentType(int nType); + + LTBOOL m_bControlChanged; + LTBOOL m_bWaitingForKey; + CLTGUIListCtrl* m_pList[kNumCommandTypes]; + CLTGUIFrame* m_pFrame; + + + LTFLOAT m_fInputPauseTimeLeft; + DeviceInput m_pInputArray[TRACK_BUFFER_SIZE]; + + LTRect m_ListRect; + uint8 m_nListFontSize; + int m_nActionWidth; + int m_nEqualsWidth; + int m_nCommandWidth; + + int m_nType; + + CUserProfile* m_pProfile; + + +}; + +#endif // _SCREEN_CONFIGURE_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenControls.cpp b/Jack/ClientShellDLL/ScreenControls.cpp new file mode 100644 index 00000000..43ff4f7a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenControls.cpp @@ -0,0 +1,220 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenControls.cpp +// +// PURPOSE : Interface screen for setting control options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenControls.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameSettings.h" +#include "InterfaceMgr.h" +#include "GameSettings.h" +#include "GameClientShell.h" + +namespace +{ + int kGap = 200; + int kWidth = 200; + + void ConfirmCallBack(LTBOOL bReturn, void *pData) + { + CScreenControls *pThisScreen = (CScreenControls *)pData; + if (pThisScreen) + { + pThisScreen->ConfirmSetting(bReturn); + } + } + + + bool bHasJoystick = true; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenControls::CScreenControls() +{ + m_pJoystickCtrl = LTNULL; + + m_bUseJoystick=LTFALSE; + m_nConfirm = 0; + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + bHasJoystick = (dwAdvancedOptions & AO_JOYSTICK) != 0; + if (bHasJoystick) + { + bHasJoystick = g_pGameClientShell->HasJoystick() || g_pGameClientShell->HasGamepad(); + } +} + +CScreenControls::~CScreenControls() +{ + +} + +// Build the screen +LTBOOL CScreenControls::Build() +{ + CreateTitle(IDS_TITLE_CONTROLS); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONTROLS,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CONTROLS,"SliderWidth"); + + //customize + AddTextItem(IDS_CONFIGURE, CMD_CONFIGURE, IDS_HELP_CUSTOMCONTROLS); + + // Mouse + AddTextItem(IDS_MOUSE, CMD_MOUSE, IDS_HELP_MOUSE); + + // keyboard + AddTextItem(IDS_KEYBOARD, CMD_KEYBOARD, IDS_HELP_KEYBOARD); + + // use joystick + CLTGUIToggle* pToggle = AddToggle(IDS_JOYSTICK_USE, IDS_HELP_USEJOYSTICK, kGap, &m_bUseJoystick); + pToggle->NotifyOnChange(CMD_UPDATE,this); + char szYes[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + char szNo[16]; + FormatString(IDS_NO,szNo,sizeof(szNo)); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + pToggle->Enable( bHasJoystick ? LTTRUE : LTFALSE ); +// pToggle->Enable(LTFALSE); + + + // joystick + m_pJoystickCtrl = AddTextItem(IDS_JOYSTICK, CMD_JOYSTICK, IDS_HELP_JOYSTICK); + m_pJoystickCtrl->Enable( bHasJoystick ); +// m_pJoystickCtrl->Enable(LTFALSE); + + //restore + AddTextItem(IDS_RESTOREDEFAULTS, CMD_RESET_DEFAULTS, IDS_HELP_RESTORE); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + +// CScreenJoystick *pJoy = (CScreenJoystick *)m_pScreenMgr->GetScreenFromID(SCREEN_ID_JOYSTICK); +// pJoy->Build(); + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; + +} + +uint32 CScreenControls::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_CONFIGURE: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_CONFIGURE); + break; + } + case CMD_UPDATE: + { + + UpdateData(); + m_pJoystickCtrl->Enable(bHasJoystick && m_bUseJoystick); + break; + + } + case CMD_MOUSE: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_MOUSE); + break; + } + case CMD_KEYBOARD: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_KEYBOARD); + break; + } + case CMD_JOYSTICK: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_JOYSTICK); + break; + } + case CMD_RESET_DEFAULTS: + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = ConfirmCallBack; + mb.pData = this; + m_nConfirm = IDS_CONFIRM_RESTORE; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_RESTORE,&mb); + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + + } + return 1; +}; + + +// Change in focus +void CScreenControls::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + + pProfile->SetControls(); + + m_bUseJoystick = pProfile->m_bUseJoystick; + + m_pJoystickCtrl->Enable(bHasJoystick && m_bUseJoystick); + + UpdateData(LTFALSE); + } + else + { + bool bJoystickChanged = !(pProfile->m_bUseJoystick == m_bUseJoystick); + pProfile->m_bUseJoystick = m_bUseJoystick; + + pProfile->ApplyControls(); + if (bJoystickChanged) + pProfile->ApplyJoystick(); + pProfile->Save(); + + UpdateData(); + } + CBaseScreen::OnFocus(bFocus); +} + + +void CScreenControls::ConfirmSetting(LTBOOL bConfirm) +{ + switch (m_nConfirm) + { + + case IDS_JOYSTICK_UNBOUND: +/* + if (bConfirm) + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_JOYSTICK); + else + { + m_bUseJoystick = LTFALSE; + UpdateData(LTFALSE); + } +*/ + break; + + case IDS_CONFIRM_RESTORE: + if (bConfirm) + { + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->RestoreDefaults(PROFILE_CONTROLS); + } + break; + } + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenControls.h b/Jack/ClientShellDLL/ScreenControls.h new file mode 100644 index 00000000..07fc1a69 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenControls.h @@ -0,0 +1,44 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenControls.h +// +// PURPOSE : Interface screen for setting control options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_CONTROLS_H_ +#define _SCREEN_CONTROLS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenControls : public CBaseScreen +{ +public: + CScreenControls(); + virtual ~CScreenControls(); + + // Build the folder + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + + void ConfirmSetting(LTBOOL bConfirm); + +protected: + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + LTBOOL m_bUseJoystick; // TRUE if the joystick should be used + CLTGUITextCtrl *m_pJoystickCtrl; + + int m_nConfirm; + + +}; + +#endif // _SCREEN_CONTROLS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenCrosshair.cpp b/Jack/ClientShellDLL/ScreenCrosshair.cpp new file mode 100644 index 00000000..1f4620cf --- /dev/null +++ b/Jack/ClientShellDLL/ScreenCrosshair.cpp @@ -0,0 +1,265 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenCrosshair.cpp +// +// PURPOSE : Interface screen for setting crosshair options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenCrosshair.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameSettings.h" +#include "TO2InterfaceMgr.h" +#include "VarTrack.h" + +namespace +{ + int kGap = 250; + int kWidth = 200; +} + uint32 nCrosshairSize = 0; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenCrosshair::CScreenCrosshair() +{ + m_nColorR = 0; + m_nColorG = 0; + m_nColorB = 0; + m_nStyle = 0; + m_bDynamic = LTFALSE; + +} + +CScreenCrosshair::~CScreenCrosshair() +{ + +} + + +// Build the screen +LTBOOL CScreenCrosshair::Build() +{ + CreateTitle(IDS_TITLE_CROSSHAIR); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CROSSHAIR,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_CROSSHAIR,"SliderWidth"); + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_CROSSHAIR,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_CROSSHAIR,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_SelectedColor); + AddControl(pFrame); + + CLTGUISlider *pSlider = AddSlider(IDS_CH_R, IDS_HELP_CH_R, kGap, kWidth, -1, &m_nColorR); + pSlider->SetSliderRange(15,255); + pSlider->SetSliderIncrement(16); + + pSlider = AddSlider(IDS_CH_G, IDS_HELP_CH_G, kGap, kWidth, -1, &m_nColorG); + pSlider->SetSliderRange(15,255); + pSlider->SetSliderIncrement(16); + + pSlider = AddSlider(IDS_CH_B, IDS_HELP_CH_B, kGap, kWidth, -1, &m_nColorB); + pSlider->SetSliderRange(15,255); + pSlider->SetSliderIncrement(16); + + CLTGUIToggle* pToggle = AddToggle(IDS_CH_DYNAMIC, IDS_HELP_CH_DYNAMIC, kGap, &m_bDynamic ); + + m_pStyle = AddCycle(IDS_CH_STYLE,IDS_HELP_CH_STYLE,kGap,&m_nStyle); + char szTmp[kMaxStringBuffer]; + + uint8 style = 0; + char *szTag = "HUDCrosshair"; + char szAtt[32]; + sprintf(szAtt,"Crosshair%d",style); + + while (g_pLayoutMgr->HasValue(szTag,szAtt)) + { + g_pLayoutMgr->GetString(szTag,szAtt,szTmp,sizeof(szTmp)); + strcat(szTmp,"_A.dtx"); + m_styles.push_back(szTmp); + + sprintf(szTmp,"%d",style); +// m_pStyle->AddString(szTmp); + m_pStyle->AddString(" "); + + style++; + sprintf(szAtt,"Crosshair%d",style); + + } + + g_pDrawPrim->SetRGBA(&m_Poly,argbWhite); + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +LTBOOL CScreenCrosshair::OnLeft() +{ + LTBOOL bHandled = CBaseScreen::OnLeft(); + if (bHandled) + { + UpdateData(); + SetConsoleVariables(); + } + return bHandled; +} + +LTBOOL CScreenCrosshair::OnRight() +{ + LTBOOL bHandled = CBaseScreen::OnRight(); + if (bHandled) + { + UpdateData(); + SetConsoleVariables(); + } + return bHandled; +} + +LTBOOL CScreenCrosshair::OnLButtonUp(int x, int y) +{ + LTBOOL bHandled = CBaseScreen::OnLButtonUp(x,y); + if (bHandled) + { + UpdateData(); + SetConsoleVariables(); + } + return bHandled; +} + +LTBOOL CScreenCrosshair::OnRButtonUp(int x, int y) +{ + LTBOOL bHandled = CBaseScreen::OnRButtonUp(x,y); + if (bHandled) + { + UpdateData(); + SetConsoleVariables(); + } + return bHandled; +} + +// Change in focus +void CScreenCrosshair::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + + GetConsoleVariables(); + UpdateData(LTFALSE); + + uint32 th; + m_hCrosshair = g_pInterfaceResMgr->GetTexture(m_styles[m_nStyle].c_str()); + SetupQuadUVs(m_Poly, m_hCrosshair, 0.0f, 0.0f, 1.0f, 1.0f); + g_pTexInterface->GetTextureDims(m_hCrosshair,nCrosshairSize,th); + + uint8 cr = (uint8)m_nColorR; + uint8 cg = (uint8)m_nColorG; + uint8 cb = (uint8)m_nColorB; + uint8 ca = 0xFF; + uint32 crosscolor = SET_ARGB(ca,cr,cg,cb); + g_pDrawPrim->SetRGBA(&m_Poly,crosscolor); + + } + else + { + UpdateData(); + SetConsoleVariables(); + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->Save(); + + } + CBaseScreen::OnFocus(bFocus); +} + +void CScreenCrosshair::GetConsoleVariables() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->SetCrosshair(); + + + + m_nColorR = (int)pProfile->m_CrosshairR; + m_nColorG = (int)pProfile->m_CrosshairG; + m_nColorB = (int)pProfile->m_CrosshairB; + m_nStyle = pProfile->m_nStyle; + m_bDynamic = pProfile->m_bDynamic; +} + +void CScreenCrosshair::SetConsoleVariables() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + pProfile->m_CrosshairR = (uint8)m_nColorR; + pProfile->m_CrosshairG = (uint8)m_nColorG; + pProfile->m_CrosshairB = (uint8)m_nColorB; + + pProfile->m_nStyle = m_nStyle; + pProfile->m_bDynamic = m_bDynamic; + + pProfile->ApplyCrosshair(); + + uint32 th; + m_hCrosshair = g_pInterfaceResMgr->GetTexture(m_styles[m_nStyle].c_str()); + g_pTexInterface->GetTextureDims(m_hCrosshair,nCrosshairSize,th); + + uint8 cr = (uint8)m_nColorR; + uint8 cg = (uint8)m_nColorG; + uint8 cb = (uint8)m_nColorB; + uint8 ca = 0xFF; + uint32 crosscolor = SET_ARGB(ca,cr,cg,cb); + g_pDrawPrim->SetRGBA(&m_Poly,crosscolor); + + +} + +LTBOOL CScreenCrosshair::Render ( HSURFACE hDestSurf ) +{ + LTBOOL bRendered = CBaseScreen::Render(hDestSurf); + + if (bRendered) + { + LTIntPt pos = m_pStyle->GetBasePos(); + pos.x += kGap; + g_pInterfaceResMgr->ConvertScreenPos(pos.x,pos.y); + + + uint32 nSize = (uint32)((float)nCrosshairSize * g_pInterfaceResMgr->GetXRatio()); + uint8 nIndent = (uint8)(8.0f * g_pInterfaceResMgr->GetXRatio()); + LTRect rect(pos.x,pos.y,pos.x+nSize+(nIndent*2),pos.y+nSize+(nIndent*2)); + + g_pLTClient->FillRect(hDestSurf,&rect,LTNULL); + + float x = (float)(pos.x + nIndent); + float y = (float)(pos.y + nIndent); + float sz = (float)nSize; + g_pDrawPrim->SetXYWH(&m_Poly,x,y,sz,sz); + + g_pDrawPrim->SetTexture(m_hCrosshair); + g_pDrawPrim->DrawPrim(&m_Poly,1); + } + + return bRendered; +} diff --git a/Jack/ClientShellDLL/ScreenCrosshair.h b/Jack/ClientShellDLL/ScreenCrosshair.h new file mode 100644 index 00000000..2ee295e4 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenCrosshair.h @@ -0,0 +1,57 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenCrosshair.h +// +// PURPOSE : Interface screen for setting crosshair options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_CROSSHAIR_H_) +#define _SCREEN_CROSSHAIR_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenCrosshair : public CBaseScreen +{ +public: + CScreenCrosshair(); + virtual ~CScreenCrosshair(); + + // Build the screen + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + LTBOOL Render(HSURFACE hDestSurf); + + LTBOOL OnLeft(); + LTBOOL OnRight(); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + +protected: + void GetConsoleVariables(); + void SetConsoleVariables(); + +protected: + + CLTGUICycleCtrl *m_pStyle; + + int m_nColorR; + int m_nColorG; + int m_nColorB; + uint8 m_nStyle; + LTBOOL m_bDynamic; + + StringArray m_styles; + + HTEXTURE m_hCrosshair; + LTPoly_GT4 m_Poly; + +}; + +#endif // !defined(_SCREEN_CROSSHAIR_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenDisplay.cpp b/Jack/ClientShellDLL/ScreenDisplay.cpp new file mode 100644 index 00000000..9998303a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenDisplay.cpp @@ -0,0 +1,691 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenDisplay.cpp +// +// PURPOSE : Interface screen for setting display options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenDisplay.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" + +#include "GameClientShell.h" +#include "GameSettings.h" +extern CGameClientShell* g_pGameClientShell; + +namespace +{ + int kGap = 0; + int kWidth = 100; + void AreYouSureCallBack(LTBOOL bReturn, void *pData) + { + CScreenDisplay *pThisScreen = (CScreenDisplay *)pData; + if (pThisScreen) + { + pThisScreen->ConfirmHardwareCursor(bReturn); + } + } + LTBOOL bInitTex; + LTBOOL bInitLM; + + const int kNumSteps = 50; + const float kBreakpoint = (float)(kNumSteps/3); + const float kUpperSteps = (float)kNumSteps - kBreakpoint; + const float fLowerRange = kDefaultGamma - kMinGamma; + const float fUpperRange = kMaxGamma - kDefaultGamma; + float ConvertToGamma(int slider) + { + float gamma = kDefaultGamma; + if (slider < (int)kBreakpoint) + { + float fRatio = (float)slider / kBreakpoint; + fRatio = (float)sqrt(fRatio); + gamma = kMinGamma + fRatio * fLowerRange; + } + else + { + float fRatio = ((float)slider - kBreakpoint) / kUpperSteps; + fRatio *= fRatio; + gamma = kDefaultGamma + fRatio * fUpperRange; + } + +// g_pLTClient->CPrint("Gamma: %0.2f",gamma); +// g_pLTClient->CPrint("Slider: %d",slider); + return gamma; + + } + + int ConvertToSlider(float gamma) + { + int slider = 5; + if (gamma < kDefaultGamma) + { + float underVal = gamma - kMinGamma; + float fRatio = underVal / fLowerRange; + fRatio *= fRatio; + slider = (int)(0.5f + kBreakpoint * fRatio); + + } + else + { + float overVal = gamma - kDefaultGamma; + float fRatio = overVal / fUpperRange; + fRatio = (float)sqrt(fRatio); + slider = (int)(0.5f + kBreakpoint + kUpperSteps * fRatio); + } +// g_pLTClient->CPrint("Gamma: %0.2f",gamma); +// g_pLTClient->CPrint("Slider: %d",slider); + return slider; + } +} + +//helper function used for sorting +int ScreenDisplayCompare( const void *arg1, const void *arg2 ) +{ + ScreenDisplayResolution *pRes1=(ScreenDisplayResolution *)arg1; + ScreenDisplayResolution *pRes2=(ScreenDisplayResolution *)arg2; + + if (pRes1->m_dwWidth < pRes2->m_dwWidth) + { + return -1; + } + else if (pRes1->m_dwWidth > pRes2->m_dwWidth) + { + return 1; + } + else + { + if ( pRes1->m_dwHeight < pRes2->m_dwHeight ) + { + return -1; + } + else if ( pRes1->m_dwHeight > pRes2->m_dwHeight ) + { + return 1; + } + else + { + if ( pRes1->m_dwBitDepth < pRes2->m_dwBitDepth ) + { + return -1; + } + else if ( pRes1->m_dwBitDepth > pRes2->m_dwBitDepth ) + { + return 1; + } + + } + } + + return 0; +} + + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenDisplay::CScreenDisplay() +{ + + m_bEscape = LTFALSE; + + m_pResolutionCtrl = LTNULL; + m_pHardwareCursor = LTNULL; +} + +CScreenDisplay::~CScreenDisplay() +{ + +} + +// Build the screen +LTBOOL CScreenDisplay::Build() +{ + + CreateTitle(IDS_TITLE_DISPLAYOPTIONS); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_DISPLAY,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_DISPLAY,"SliderWidth"); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_DISPLAY,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_DISPLAY,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_SelectedColor); + AddControl(pFrame); + + // Build the array of renderers + GetRendererData(); + + // Add the "resolution" control + m_pResolutionCtrl = AddCycle(IDS_DISPLAY_RESOLUTION,IDS_HELP_RESOLUTION,kGap); + + // Setup the resolution control based on the current renderer + SetupResolutionCtrl(); + + m_pHardwareCursor = AddToggle(IDS_HARDWARE_CURSOR,IDS_HELP_HARDWARE_CURSOR,kGap,&m_bHardwareCursor); + + AddToggle(IDS_VSYNC,IDS_HELP_VSYNC,kGap,&m_bVSync); + + + m_pGamma = AddSlider(IDS_GAMMA,IDS_HELP_GAMMA,kGap,kWidth,-1,&m_nGamma); + m_pGamma->SetSliderRange(0,kNumSteps); + m_pGamma->SetSliderIncrement(1); + + int nBaseGamma = ConvertToSlider(kDefaultGamma); + float xoffset = (m_pGamma->CalculateSliderOffset(nBaseGamma) / m_pGamma->GetScale()); + uint16 nHeight = m_pGamma->GetBarHeight(); + float yoffset = ((( (float)m_pGamma->GetBaseHeight()) - (float)nHeight)) / 2.0f; + + pos = m_pGamma->GetBasePos(); + pos.x += (int)(xoffset - 1.0f); + pos.y += (int)(yoffset + 0.5f); + + CLTGUIFrame *pBar = debug_new(CLTGUIFrame); + pBar->Create(0xBF000000,3,nHeight+1); + pBar->SetBasePos(pos); + pBar->SetScale(g_pInterfaceResMgr->GetXRatio()); + AddControl(pBar); + + + + + + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + + return LTTRUE; + +} + +void CScreenDisplay::Escape() +{ + m_bEscape = LTTRUE; + CBaseScreen::Escape(); +} + +uint32 CScreenDisplay::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); +}; + +// Setup the resolution control based on the currently selected resolution +void CScreenDisplay::SetupResolutionCtrl() +{ + if (!m_pResolutionCtrl) + { + return; + } + + + // Get the selected renderer + int nResolutionIndex=m_pResolutionCtrl->GetSelIndex(); + + // Clear the current resolutions + m_pResolutionCtrl->RemoveAll(); + uint32 dwOldWidth=0; + uint32 dwOldHeight=0; + uint32 dwOldBitDepth=0; + uint32 dwCurWidth = 0; + uint32 dwCurHeight = 0; + uint32 dwCurBitDepth = 0; + int nNewRes = 0; + + unsigned int nResolutions=m_rendererData.m_resolutionArray.GetSize(); + + if ((unsigned int)nResolutionIndex < nResolutions) + { + dwOldWidth=m_rendererData.m_resolutionArray[nResolutionIndex].m_dwWidth; + dwOldHeight=m_rendererData.m_resolutionArray[nResolutionIndex].m_dwHeight; + dwOldBitDepth=m_rendererData.m_resolutionArray[nResolutionIndex].m_dwBitDepth; + } + + + // Add each resolution + unsigned int i; + for (i=0; i < nResolutions; i++) + { + uint32 dwWidth=m_rendererData.m_resolutionArray[i].m_dwWidth; + uint32 dwHeight=m_rendererData.m_resolutionArray[i].m_dwHeight; + uint32 dwBitDepth=m_rendererData.m_resolutionArray[i].m_dwBitDepth; + + if ( LTDIFF(dwWidth,dwOldWidth) <= LTDIFF(dwCurWidth,dwOldWidth) && + LTDIFF(dwHeight,dwOldHeight) <= LTDIFF(dwCurHeight,dwOldHeight) && + LTDIFF(dwBitDepth,dwOldBitDepth) < LTDIFF(dwCurBitDepth,dwOldBitDepth) + ) + { + nNewRes = i; + dwCurWidth = dwWidth; + dwCurHeight = dwHeight; + dwCurBitDepth = dwBitDepth; + } + // Load the resolution format string. This is "Resolution: [%dx%dx%d]" in English + m_pResolutionCtrl->AddString(FormatTempString(IDS_DMODE_RESOLUTION, dwWidth, dwHeight, dwBitDepth)); + } + + m_pResolutionCtrl->SetSelIndex(nNewRes); + +} +// Build the array of renderers +void CScreenDisplay::GetRendererData() +{ + m_rendererData.m_description[0] = '\0'; + m_rendererData.m_internalName[0] = '\0'; + + // Build the list of render modes + RMode *pRenderModes=g_pLTClient->GetRenderModes(); + + bool bHWTnL = true; + + RMode currentMode; + if (g_pGameClientShell->IsRendererInitted() && g_pLTClient->GetRenderMode(¤tMode) == LT_OK) + { + bHWTnL = currentMode.m_bHWTnL; + } + + + // Iterate through the list of render modes adding each one to the array + RMode *pCurrentMode=pRenderModes; + while (pCurrentMode != LTNULL) + { + if (pCurrentMode->m_Width >= 640 && pCurrentMode->m_Height >= 480 && pCurrentMode->m_BitDepth == 32) + { + // disallow non-standard aspect ratios + uint32 testWidth = (pCurrentMode->m_Height * 4 / 3); + if (pCurrentMode->m_Width != testWidth) + { + + // Go to the next render mode + pCurrentMode=pCurrentMode->m_pNext; + continue; + } + + //disallow any that aren't hardware TnL + if(bHWTnL && !pCurrentMode->m_bHWTnL) + { + pCurrentMode=pCurrentMode->m_pNext; + continue; + } + + // Check to see if we need to add this renderer + if (!m_rendererData.m_description[0]) + { + m_rendererData.m_bHWTnL = pCurrentMode->m_bHWTnL; + SAFE_STRCPY(m_rendererData.m_description, pCurrentMode->m_Description); + SAFE_STRCPY(m_rendererData.m_internalName, pCurrentMode->m_InternalName); + + } + + // Add the display resolutions for this renderer + ScreenDisplayResolution resolution; + resolution.m_dwWidth=pCurrentMode->m_Width; + resolution.m_dwHeight=pCurrentMode->m_Height; + resolution.m_dwBitDepth=pCurrentMode->m_BitDepth; + + LTBOOL bFound = LTFALSE; + uint32 i = 0; + while (!bFound && i < m_rendererData.m_resolutionArray.GetSize()) + { + bFound = (ScreenDisplayCompare(&(m_rendererData.m_resolutionArray[i]), &resolution) == 0); + ++i; + } + if (!bFound) + m_rendererData.m_resolutionArray.Add(resolution); + } + + // Go to the next render mode + pCurrentMode=pCurrentMode->m_pNext; + } + + // Free the linked list of render modes + g_pLTClient->RelinquishRenderModes(pRenderModes); + + // Sort the render resolution based on screen width and height + SortRenderModes(); +} + +// Sort the render resolution based on screen width and height +void CScreenDisplay::SortRenderModes() +{ + // Build a temporary array of render modes + int nResolutions=m_rendererData.m_resolutionArray.GetSize(); + if ( nResolutions < 1 ) + { + return; + } + + ScreenDisplayResolution *pResolutions = new ScreenDisplayResolution[nResolutions]; + + int i; + for (i=0; i < nResolutions; i++) + { + pResolutions[i]=m_rendererData.m_resolutionArray[i]; + } + + // Sort the array + qsort(pResolutions, nResolutions, sizeof(ScreenDisplayResolution), ScreenDisplayCompare); + + // Clear the current renderer resolutions array + m_rendererData.m_resolutionArray.SetSize(0); + + // Copy the sorted array back to the resolutions array + for (i=0; i < nResolutions; i++) + { + m_rendererData.m_resolutionArray.Add(pResolutions[i]); + } + + delete []pResolutions; +} + + +// Gets a RMode structure based on a renderer index and a resolution index +RMode CScreenDisplay::GetRendererModeStruct(int nResolutionIndex) +{ + // Copy the renderer information from the renderer structure to the temporary RMode structure + RMode mode; + mode.m_bHWTnL = m_rendererData.m_bHWTnL; + + SAFE_STRCPY(mode.m_InternalName, m_rendererData.m_internalName); + SAFE_STRCPY(mode.m_Description, m_rendererData.m_description); + + ScreenDisplayResolution resolution=m_rendererData.m_resolutionArray[nResolutionIndex]; + mode.m_Width=resolution.m_dwWidth; + mode.m_Height=resolution.m_dwHeight; + mode.m_BitDepth=resolution.m_dwBitDepth; + + mode.m_pNext=LTNULL; + + return mode; +} + +// Returns TRUE if two renderers are the same + +// Called when the screen gains or focus +void CScreenDisplay::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + m_bEscape = LTFALSE; + + pProfile->SetDisplay(); + + m_bHardwareCursor = pProfile->m_bHardwareCursor; + m_bVSync = pProfile->m_bVSync; + + + float gamma = pProfile->m_fGamma; + + m_nGamma = ConvertToSlider(gamma); + + + + m_pHardwareCursor->Enable(GetConsoleInt("DisableHardwareCursor",0) == 0); + + // The current render mode + RMode currentMode; + g_pLTClient->GetRenderMode(¤tMode); + + // Set the renderer controls so that they match the currently selected renderer + unsigned int i; + for (i=0; i < m_rendererData.m_resolutionArray.GetSize(); i++) + { + RMode mode=GetRendererModeStruct(i); + + if (IsRendererEqual(¤tMode, &mode)) + { + // Setup the resolution control + SetupResolutionCtrl(); + + // Set the resolution index + m_pResolutionCtrl->SetSelIndex(i); + } + } + + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + + if (m_bEscape) + { + + pProfile->m_bHardwareCursor = m_bHardwareCursor; + pProfile->m_bVSync = m_bVSync; + pProfile->m_fGamma = ConvertToGamma(m_nGamma); + // Set the render mode if we are losing focus + if (m_pResolutionCtrl) + { + // Get the new renderer structure + RMode newMode=GetRendererModeStruct(m_pResolutionCtrl->GetSelIndex()); + + pProfile->m_nScreenWidth = newMode.m_Width; + pProfile->m_nScreenHeight = newMode.m_Height; + pProfile->m_nScreenDepth = newMode.m_BitDepth; + } + + pProfile->ApplyDisplay(); + + //display settings can affect performance sttings so update them here... + g_pPerformanceMgr->GetPerformanceOptions(&pProfile->m_sPerformance); + + pProfile->Save(); + + } + + + + + } + CBaseScreen::OnFocus(bFocus); +} + + +// Returns the currently selected resolution +ScreenDisplayResolution CScreenDisplay::GetCurrentSelectedResolution() +{ + int nResolutionIndex=m_pResolutionCtrl->GetSelIndex(); + + _ASSERT(nResolutionIndex >= 0); + if (nResolutionIndex >= 0) + return m_rendererData.m_resolutionArray[nResolutionIndex]; + else + return m_rendererData.m_resolutionArray[0]; +} + +// Set the resolution for the resolution control. If it cannot be found the +// next highest resolution is selected. +void CScreenDisplay::SetCurrentCtrlResolution(ScreenDisplayResolution resolution) +{ + + // Go through the resolutions searching for a match + unsigned int i; + for (i=0; i < m_rendererData.m_resolutionArray.GetSize(); i++) + { + ScreenDisplayResolution searchRes=m_rendererData.m_resolutionArray[i]; + + if (resolution.m_dwWidth == searchRes.m_dwWidth && + resolution.m_dwHeight == searchRes.m_dwHeight && + resolution.m_dwBitDepth == searchRes.m_dwBitDepth) + { + m_pResolutionCtrl->SetSelIndex(i); + return; + } + } + + // Since an exact match wasn't found, set it to the next highest resolution + for (i=0; i < m_rendererData.m_resolutionArray.GetSize(); i++) + { + ScreenDisplayResolution searchRes=m_rendererData.m_resolutionArray[i]; + + if (resolution.m_dwWidth > searchRes.m_dwWidth || + resolution.m_dwHeight > searchRes.m_dwHeight && + resolution.m_dwBitDepth == searchRes.m_dwBitDepth) + { + if (i > 0) + { + m_pResolutionCtrl->SetSelIndex(i-1); + } + else + { + m_pResolutionCtrl->SetSelIndex(0); + } + return; + } + } +} + + + + + +LTBOOL CScreenDisplay::OnLButtonUp(int x, int y) +{ + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pHardwareCursor) + { + return OnRight(); + } + if (pCtrl == m_pGamma) + { + if (!pCtrl->OnLButtonUp(x,y)) return LTFALSE; + pCtrl->UpdateData(); + float fGamma = ConvertToGamma(m_nGamma); + WriteConsoleFloat("GammaR",fGamma); + WriteConsoleFloat("GammaG",fGamma); + WriteConsoleFloat("GammaB",fGamma); + return LTTRUE; + } + } + return CBaseScreen::OnLButtonUp(x, y); +} + +LTBOOL CScreenDisplay::OnRButtonUp(int x, int y) +{ + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pHardwareCursor) + { + return OnLeft(); + } + if (pCtrl == m_pGamma) + { + if (!pCtrl->OnRButtonUp(x,y)) return LTFALSE; + pCtrl->UpdateData(); + float fGamma = ConvertToGamma(m_nGamma); + WriteConsoleFloat("GammaR",fGamma); + WriteConsoleFloat("GammaG",fGamma); + WriteConsoleFloat("GammaB",fGamma); + return LTTRUE; + } + } + return CBaseScreen::OnRButtonUp(x, y); +} + + +LTBOOL CScreenDisplay::OnLeft() +{ + if (!CBaseScreen::OnLeft()) return LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl == m_pHardwareCursor) + { + m_pHardwareCursor->UpdateData(LTTRUE); + if (m_bHardwareCursor) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = AreYouSureCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_CURSOR,&mb,0,LTFALSE); + } + else + { + g_pCursorMgr->UseHardwareCursor(LTFALSE); + WriteConsoleInt("HardwareCursor",0); + } + } + if (GetSelectedControl() == m_pGamma) + { + pCtrl->UpdateData(); + float fGamma = ConvertToGamma(m_nGamma); + WriteConsoleFloat("GammaR",fGamma); + WriteConsoleFloat("GammaG",fGamma); + WriteConsoleFloat("GammaB",fGamma); + } + + return LTTRUE; +} +LTBOOL CScreenDisplay::OnRight() +{ + if (!CBaseScreen::OnRight()) return LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl == m_pHardwareCursor) + { + m_pHardwareCursor->UpdateData(LTTRUE); + if (m_bHardwareCursor) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = AreYouSureCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_CURSOR,&mb,0,LTFALSE); + } + else + { + g_pCursorMgr->UseHardwareCursor(LTFALSE); + WriteConsoleInt("HardwareCursor",0); + } + } + if (pCtrl == m_pGamma) + { + pCtrl->UpdateData(); + float fGamma = ConvertToGamma(m_nGamma); + WriteConsoleFloat("GammaR",fGamma); + WriteConsoleFloat("GammaG",fGamma); + WriteConsoleFloat("GammaB",fGamma); + } + return LTTRUE; +} +LTBOOL CScreenDisplay::OnEnter() +{ + return CBaseScreen::OnEnter(); +} + + +void CScreenDisplay::ConfirmHardwareCursor(LTBOOL bReturn) +{ + UpdateData(LTTRUE); + m_bHardwareCursor = bReturn; + g_pCursorMgr->UseHardwareCursor(m_bHardwareCursor); + WriteConsoleInt("HardwareCursor",(int)m_bHardwareCursor); + UpdateData(LTFALSE); +} + + diff --git a/Jack/ClientShellDLL/ScreenDisplay.h b/Jack/ClientShellDLL/ScreenDisplay.h new file mode 100644 index 00000000..9e1ac2d8 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenDisplay.h @@ -0,0 +1,103 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenDisplay.h +// +// PURPOSE : Interface screen for setting display options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_DISPLAY_H_ +#define _SCREEN_DISPLAY_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + + +typedef struct ScreenDisplayResolution_t +{ + uint32 m_dwWidth; // Screen width + uint32 m_dwHeight; // Screen height + uint32 m_dwBitDepth; // Screen bitdepth +} ScreenDisplayResolution; + +typedef struct ScreenDisplayRenderer_t +{ + bool m_bHWTnL; + + char m_renderDll[200]; // The DLL name for the renderer + char m_internalName[200]; // This is what the DLLs use to identify a card + char m_description[200]; // The description of the renderer + + // An array of video resolutions + CMoArray m_resolutionArray; +} ScreenDisplayRenderer; + + + +class CScreenDisplay : public CBaseScreen +{ +public: + CScreenDisplay(); + virtual ~CScreenDisplay(); + + // Build the screen + LTBOOL Build(); + + // Handle input + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + LTBOOL OnLeft(); + LTBOOL OnRight(); + LTBOOL OnEnter(); + + void Escape(); + void OnFocus(LTBOOL bFocus); + + void ConfirmHardwareCursor(LTBOOL bReturn); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + // Build the array of resolutions + void GetRendererData(); + + // Setup the resolution control based on the currently selected resolution + void SetupResolutionCtrl(); + + // Sort the render resolution based on screen width and height + void SortRenderModes(); + + // Gets a RMode structure based on resolution index + RMode GetRendererModeStruct(int nResolutionIndex); + + // Returns the currently selected resolution + ScreenDisplayResolution GetCurrentSelectedResolution(); + + // Set the resolution for the resolution control. If it cannot be found the + // next highest resolution is selected. + void SetCurrentCtrlResolution(ScreenDisplayResolution resolution); + + +private: + LTBOOL m_bEscape; + LTBOOL m_bHardwareCursor; + LTBOOL m_bVSync; + int m_nGamma; + + CLTGUICycleCtrl *m_pResolutionCtrl; // The resolution control + + ScreenDisplayRenderer m_rendererData; + + CLTGUISlider *m_pGamma; + CLTGUICycleCtrl *m_pHardwareCursor; + + + +}; + +#endif // _SCREEN_DISPLAY_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenEndCoopMission.cpp b/Jack/ClientShellDLL/ScreenEndCoopMission.cpp new file mode 100644 index 00000000..a1de1bb1 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndCoopMission.cpp @@ -0,0 +1,286 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndCoopMission.cpp +// +// PURPOSE : Interface screen for handling end of mission in a co-op game +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenEndCoopMission.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ScreenPreload.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" + +namespace +{ + float g_fDuration = 0.0f; + float g_fMinDelay = 3.0f; + float g_fDelay = 30.0f; + uint8 statSize = 12; + uint16 NameWidth = 150; + uint16 AccuracyWidth = 100; + uint16 KillsWidth = 75; + uint16 DeathsWidth = 75; + + bool s_bFlash; + float s_fFlashTime; + +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenEndCoopMission::CScreenEndCoopMission() +{ + m_pMission = NULL; + m_pList = NULL; +} + +CScreenEndCoopMission::~CScreenEndCoopMission() +{ + +} + + +// Build the screen +LTBOOL CScreenEndCoopMission::Build() +{ + CreateTitle(IDS_TITLE_ENDMISSION); + + uint8 statSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"StatSize"); + if (!statSize) statSize = 12; + + uint16 NameWidth = (uint16)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"NameWidth"); + if (!NameWidth) NameWidth = 150; + + uint16 AccuracyWidth = (uint16)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"AccuracyWidth"); + if (!AccuracyWidth) AccuracyWidth = 100; + + uint16 KillsWidth = (uint16)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"KillsWidth"); + if (!KillsWidth) KillsWidth = 75; + + uint16 DeathsWidth = (uint16)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"DeathsWidth"); + if (!DeathsWidth) DeathsWidth = 75; + + m_pMission = AddTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_nextPos.y += 8; + + m_pList = AddList(m_nextPos,(GetPageBottom() - m_nextPos.y)); + + LTIntPt pos(GetPageLeft(),GetPageBottom()); + m_pContinue = AddTextItem(LoadTempString(IDS_PRESS_ANY_KEY),NULL,NULL,pos,LTTRUE); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenEndCoopMission::OnFocus(LTBOOL bFocus) +{ + + if (bFocus) + { + //the quickload game confirmation dialog might be up at this point + // close it here because loading at this point gets us into an undefined (i.e. bad) state + g_pInterfaceMgr->CloseMessageBox(LTFALSE); + + g_fDuration = 0.0f; + char szString[256] = ""; + + int nMission = g_pMissionMgr->GetCurrentMission(); + MISSION* pMission = g_pMissionButeMgr->GetMission(nMission); + + if (pMission) + { + sprintf(szString,"%s ", LoadTempString(IDS_STAT_MISSION)); + strcat(szString, LoadTempString(pMission->nNameId)); + m_pMission->SetString(szString); + } + else + { + m_pMission->SetString(" "); + } + + m_pList->RemoveAll(); + + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + + CLTGUIColumnCtrl *pCtrl=CreateColumnCtrl(NULL,NULL,kDefaultPos,LTTRUE); + + pCtrl->AddColumn(" ", (NameWidth-16)); + pCtrl->AddColumn(LoadTempString(IDS_COOP_STAT_ACCURACY), AccuracyWidth); + pCtrl->AddColumn(LoadTempString(IDS_COOP_STAT_KILLS), KillsWidth); + pCtrl->AddColumn(LoadTempString(IDS_COOP_STAT_DEATHS), DeathsWidth); + + m_pList->AddControl(pCtrl); + + + CLIENT_INFO* pInfo = pCIMgr->GetFirstClient(); + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + char szTmp[64]; + while (pInfo) + { + CLTGUIColumnCtrl *pCtrl=CreateColumnCtrl(NULL,NULL,kDefaultPos,LTTRUE); + pCtrl->SetFont(LTNULL,statSize); + + m_pList->AddControl(pCtrl); + + pCtrl->AddColumn(pInfo->sName.c_str(), NameWidth); + + + const MissionStats *pStats = NULL; + + + if (pInfo->nID == nLocalID) + { + pStats = g_pPlayerStats->GetMissionStats(); + pCtrl->SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + } + else + { + pStats = &pInfo->sStats; + } + + if (pStats) + { + + if (pStats->dwNumShotsFired) + { + float fAccuracy = 100.0f * (float)pStats->dwNumHits / (float) pStats->dwNumShotsFired; + sprintf(szTmp,"%0.1f%",fAccuracy); + } + else + { + strcpy(szTmp," - "); + } + + pCtrl->AddColumn(szTmp, AccuracyWidth); + + + sprintf(szTmp,"%d", pStats->dwNumEnemyKills); + pCtrl->AddColumn(szTmp, KillsWidth); + + sprintf(szTmp,"%d", pStats->dwNumTimesKilled); + pCtrl->AddColumn(szTmp, DeathsWidth); + + + } + pInfo = pInfo->pNext; + + } + + m_pList->SetStartIndex(0); + + s_bFlash = false; + s_fFlashTime = g_pLTClient->GetTime() + 0.333f; + m_pContinue->Show(LTFALSE); + + } + CBaseScreen::OnFocus(bFocus); +} + + +void CScreenEndCoopMission::Escape() +{ + + OnFocus(LTFALSE); + + if (g_pMissionMgr->IsGameOver()) + { + g_pMissionMgr->ClearGameOver(); +#ifdef _DEMO + g_pInterfaceMgr->ShowDemoScreens(LTFALSE); +#else + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); +#endif + } + else + { + CScreenPreload *pPreload = (CScreenPreload *) (g_pInterfaceMgr->GetScreenMgr( )->GetScreenFromID(SCREEN_ID_PRELOAD)); + if (pPreload) + { + pPreload->SetWaitingToExit(true); + } + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PRELOAD); + } + +} + +LTBOOL CScreenEndCoopMission::HandleKeyDown(int key, int rep) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; + +} +LTBOOL CScreenEndCoopMission::OnLButtonDown(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} +LTBOOL CScreenEndCoopMission::OnRButtonDown(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} + + +LTBOOL CScreenEndCoopMission::Render(HSURFACE hDestSurf) +{ + CBaseScreen::Render(hDestSurf); + float fTime = g_pLTClient->GetTime(); + if (fTime > s_fFlashTime) + { + s_bFlash = !s_bFlash; + s_fFlashTime = fTime + 0.333f; + if (s_bFlash) + { + m_pContinue->SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + } + else + { + m_pContinue->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + } + + } + + g_fDuration += g_pGameClientShell->GetFrameTime(); + + if (g_fDuration > g_fMinDelay && !m_pContinue->IsVisible()) + { + m_pContinue->Show(LTTRUE); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + } + if (g_fDuration >= g_fDelay) + Escape(); + return LTTRUE; + +} + + + + diff --git a/Jack/ClientShellDLL/ScreenEndCoopMission.h b/Jack/ClientShellDLL/ScreenEndCoopMission.h new file mode 100644 index 00000000..6acdacf6 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndCoopMission.h @@ -0,0 +1,42 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndCoopMission.h +// +// PURPOSE : Interface screen for handling end of mission in a co-op game +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_END_COOP_MISSION_H_) +#define _SCREEN_END_COOP_MISSION_H_ + +#include "BaseScreen.h" + +class CScreenEndCoopMission : public CBaseScreen +{ +public: + CScreenEndCoopMission(); + virtual ~CScreenEndCoopMission(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + + virtual LTBOOL Render(HSURFACE hDestSurf); + + +protected: + + CLTGUITextCtrl *m_pMission; + CLTGUIListCtrl *m_pList; + + CLTGUITextCtrl *m_pContinue; +}; + +#endif // !defined(_SCREEN_END_COOP_MISSION_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenEndDMMission.cpp b/Jack/ClientShellDLL/ScreenEndDMMission.cpp new file mode 100644 index 00000000..9ea1e00c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndDMMission.cpp @@ -0,0 +1,237 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndDMMission.cpp +// +// PURPOSE : Interface screen for handling end of mission +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenEndDMMission.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ScreenPreload.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" +#include "HUDMgr.h" + + + +static float s_fMinDelay = 3.0f; +static float s_fDelay = 30.0f; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenEndDMMission::CScreenEndDMMission() +: CBaseScreen ( ), + m_pContinue ( LTNULL ), + m_fDuration ( 0.0f ), + m_bFlash ( false ), + m_fFlashTime ( 0.0f ), + m_bForceShowContinue ( false ) +{ +} + +CScreenEndDMMission::~CScreenEndDMMission() +{ + +} + + +// Build the screen +LTBOOL CScreenEndDMMission::Build() +{ + //CreateTitle(IDS_TITLE_ENDMISSION); + + LTIntPt pos(GetPageLeft(),GetPageBottom()); + m_pContinue = AddTextItem(LoadTempString(IDS_PRESS_ANY_KEY),NULL,NULL,pos,LTTRUE); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenEndDMMission::OnFocus(LTBOOL bFocus) +{ + + if (bFocus) + { + g_pScores->Show(true,true); + m_pContinue->Show(LTFALSE); + + // Reset our flash data... + + m_bFlash = false; + m_fFlashTime = g_pLTClient->GetTime() + 0.333f; + + // Reset the ammount of time the screen has been active... + + m_fDuration = 0.0f; + + // If just going between rounds we want to keep showing this screen while loading... + + if( !g_pMissionMgr->IsExitingMission() && g_pMissionMgr->IsExitingLevel() ) + { + g_pInterfaceMgr->SetLoadingRenderScreen( this ); + + CBaseScreen::OnFocus(bFocus); + + // Skip the preload and set the postload to this screen... + + g_pInterfaceMgr->SkipPreLoad( true ); + g_pInterfaceMgr->SetPostLoadScreenID( SCREEN_ID_END_DM_MISSION ); + + // Handle restarting the round... + + g_pMissionMgr->FinishExitLevel( ); + g_pMissionMgr->FinishStartGame( ); + + // Be sure to show the contine screen as soon as we are ready... + + m_bForceShowContinue = true; + + return; + } + } + else + { + g_pScores->Show(false); + } + + CBaseScreen::OnFocus(bFocus); +} + + +void CScreenEndDMMission::Escape() +{ + + OnFocus(LTFALSE); + + if (g_pMissionMgr->IsGameOver()) + { + g_pMissionMgr->ClearGameOver(); + +#ifdef _DEMO + g_pInterfaceMgr->ShowDemoScreens(LTFALSE); +#else + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); +#endif + + } + else if( g_pInterfaceMgr->ShouldSkipPreLoad() ) + { + // No need to skip the preload screen anymore... + + g_pInterfaceMgr->SkipPreLoad( false ); + + // Set the post load back to it's default... + + g_pInterfaceMgr->SetPostLoadScreenID( ); + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if( g_pGameClientShell->IsWorldLoaded() && hPlayerObj ) + { + // Let the client enter the world... + + g_pGameClientShell->SendClientLoadedMessage( ); + g_pInterfaceMgr->ChangeState( GS_PLAYING ); + } + } + else + { + CScreenPreload *pPreload = (CScreenPreload *) (g_pInterfaceMgr->GetScreenMgr( )->GetScreenFromID(SCREEN_ID_PRELOAD)); + if (pPreload) + { + pPreload->SetWaitingToExit(true); + } + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PRELOAD); + } + +} + +LTBOOL CScreenEndDMMission::HandleKeyDown(int key, int rep) +{ + if( m_pContinue->IsVisible() ) + { + Escape(); + return LTTRUE; + } + return LTFALSE; + +} +LTBOOL CScreenEndDMMission::OnLButtonDown(int x, int y) +{ + if (m_fDuration > s_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} +LTBOOL CScreenEndDMMission::OnRButtonDown(int x, int y) +{ + if (m_fDuration > s_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} + + +LTBOOL CScreenEndDMMission::Render(HSURFACE hDestSurf) +{ + CBaseScreen::Render(hDestSurf); + + g_pScores->Render(); + + float fTime = g_pLTClient->GetTime(); + if (fTime > m_fFlashTime) + { + m_bFlash = !m_bFlash; + m_fFlashTime = fTime + 0.333f; + if (m_bFlash) + { + m_pContinue->SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + } + else + { + m_pContinue->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + } + + } + + m_fDuration += g_pGameClientShell->GetFrameTime(); + + if( (m_fDuration > s_fMinDelay && !m_pContinue->IsVisible()) || (m_bForceShowContinue && !g_pInterfaceMgr->IsLoadScreenVisible()) ) + { + m_bForceShowContinue = false; + + m_pContinue->Show(LTTRUE); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + } + + + // [KLS 9/13/02] Only auto switch in Multiplayer... + if (m_fDuration >= s_fDelay && IsMultiplayerGame()) + { + Escape(); + } + + return LTTRUE; + +} + + + + diff --git a/Jack/ClientShellDLL/ScreenEndDMMission.h b/Jack/ClientShellDLL/ScreenEndDMMission.h new file mode 100644 index 00000000..ee389164 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndDMMission.h @@ -0,0 +1,46 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndDMMission.h +// +// PURPOSE : Interface screen for handling end of mission +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_END_DM_MISSION_H_) +#define _SCREEN_END_DM_MISSION_H_ + +#include "BaseScreen.h" + +class CScreenEndDMMission : public CBaseScreen +{ +public: + CScreenEndDMMission(); + virtual ~CScreenEndDMMission(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + + virtual LTBOOL Render(HSURFACE hDestSurf); + + +protected: + + CLTGUITextCtrl *m_pContinue; + + float m_fDuration; + + bool m_bFlash; + float m_fFlashTime; + + bool m_bForceShowContinue; +}; + +#endif // !defined(_SCREEN_END_MISSION_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenEndMission.cpp b/Jack/ClientShellDLL/ScreenEndMission.cpp new file mode 100644 index 00000000..1b121655 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndMission.cpp @@ -0,0 +1,267 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndMission.cpp +// +// PURPOSE : Interface screen for handling end of mission +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenEndMission.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ScreenPreload.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" + +namespace +{ + float g_fDuration = 0.0f; + float g_fMinDelay = 3.0f; + float g_fDelay = 30.0f; + + bool s_bFlash; + float s_fFlashTime; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenEndMission::CScreenEndMission() +{ + m_pMission = NULL; + m_pAccuracy = NULL; + m_pMarksmanship = NULL; + m_pNonInjury = NULL; + m_pTimesHit = NULL; + m_pSecrets = NULL; + m_pList = NULL; +} + +CScreenEndMission::~CScreenEndMission() +{ + +} + + +// Build the screen +LTBOOL CScreenEndMission::Build() +{ + CreateTitle(IDS_TITLE_ENDMISSION); + + uint8 statSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_END_MISSION,"StatSize"); + if (!statSize) statSize = 12; + + m_pMission = AddTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_nextPos.y += 8; + + m_pList = AddList(m_nextPos,(GetPageBottom() - m_nextPos.y)); + + m_pAccuracy = CreateTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_pAccuracy->SetFont(NULL,statSize); + m_pList->AddControl(m_pAccuracy); + + m_pMarksmanship = CreateTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_pMarksmanship->SetFont(NULL,statSize); + m_pList->AddControl(m_pMarksmanship); + + m_pNonInjury = CreateTextItem(IDS_M_STAT_UNDAMAGED,LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_pNonInjury->SetFont(NULL,statSize); + m_pList->AddControl(m_pNonInjury); + + m_pTimesHit = CreateTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_pTimesHit->SetFont(NULL,statSize); + m_pList->AddControl(m_pTimesHit); + + m_pSecrets = CreateTextItem(" ",LTNULL,LTNULL,kDefaultPos,LTTRUE); + m_pSecrets->SetFont(NULL,statSize); + m_pList->AddControl(m_pSecrets); + + + LTIntPt pos(GetPageLeft(),GetPageBottom()); + m_pContinue = AddTextItem(LoadTempString(IDS_PRESS_ANY_KEY),NULL,NULL,pos,LTTRUE); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenEndMission::OnFocus(LTBOOL bFocus) +{ + + if (bFocus) + { + //the quickload game confirmation dialog might be up at this point + // close it here because loading at this point gets us into an undefined (i.e. bad) state + g_pInterfaceMgr->CloseMessageBox(LTFALSE); + + g_fDuration = 0.0f; + char szString[256] = ""; + + int nMission = g_pMissionMgr->GetCurrentMission(); + MISSION* pMission = g_pMissionButeMgr->GetMission(nMission); + + if (pMission) + { + sprintf(szString,"%s ", LoadTempString(IDS_STAT_MISSION)); + strcat(szString, LoadTempString(pMission->nNameId)); + m_pMission->SetString(szString); + } + else + { + m_pMission->SetString(" "); + } + + const MissionStats *pStats = g_pPlayerStats->GetMissionStats(); + + if (pStats) + { + if (pStats->dwNumShotsFired) + { + + float fAccuracy = 100.0f * (float)pStats->dwNumHits / (float) pStats->dwNumShotsFired; + FormatString(IDS_M_STAT_ACCURACY,szString,sizeof(szString),pStats->dwNumHits,pStats->dwNumShotsFired,(int)fAccuracy); + } + else + { + FormatString(IDS_M_STAT_ACCURACY,szString,sizeof(szString),0,0,0); + } + m_pAccuracy->SetString(szString); + + m_pMarksmanship->SetString(FormatTempString(IDS_M_STAT_MARKSMANSHIP,pStats->dwHitLocations[HL_HEAD])); + + m_pNonInjury->Show(g_pPlayerStats->GetMissionDamage() == 0); + + m_pTimesHit->SetString(FormatTempString(IDS_M_STAT_TIMES_HIT,pStats->dwNumTimesHit)); + + if (pMission->nNumSecrets) + { + m_pSecrets->SetString(FormatTempString(IDS_M_STAT_SECRETS,pStats->dwNumSecrets,pMission->nNumSecrets)); + m_pSecrets->Show(true); + } + else + m_pSecrets->Show(false); + + + + m_pList->SetStartIndex(0); + + } + + s_bFlash = false; + s_fFlashTime = g_pLTClient->GetTime() + 0.333f; + m_pContinue->Show(LTFALSE); + + } + CBaseScreen::OnFocus(bFocus); +} + + +void CScreenEndMission::Escape() +{ + + OnFocus(LTFALSE); + + if (g_pMissionMgr->IsGameOver()) + { + g_pMissionMgr->ClearGameOver(); + +#ifdef _DEMO + g_pInterfaceMgr->ShowDemoScreens(LTFALSE); +#else + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); +#endif + + } + else + { + CScreenPreload *pPreload = (CScreenPreload *) (g_pInterfaceMgr->GetScreenMgr( )->GetScreenFromID(SCREEN_ID_PRELOAD)); + if (pPreload) + { + pPreload->SetWaitingToExit(true); + } + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_PRELOAD); + } + +} + +LTBOOL CScreenEndMission::HandleKeyDown(int key, int rep) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; + +} +LTBOOL CScreenEndMission::OnLButtonDown(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} +LTBOOL CScreenEndMission::OnRButtonDown(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} + + +LTBOOL CScreenEndMission::Render(HSURFACE hDestSurf) +{ + CBaseScreen::Render(hDestSurf); + + float fTime = g_pLTClient->GetTime(); + if (fTime > s_fFlashTime) + { + s_bFlash = !s_bFlash; + s_fFlashTime = fTime + 0.333f; + if (s_bFlash) + { + m_pContinue->SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + } + else + { + m_pContinue->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + } + + } + + g_fDuration += g_pGameClientShell->GetFrameTime(); + + if (g_fDuration > g_fMinDelay && !m_pContinue->IsVisible()) + { + m_pContinue->Show(LTTRUE); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + } + + + // [KLS 9/13/02] Only auto switch in Multiplayer... + if (g_fDuration >= g_fDelay && IsMultiplayerGame()) + { + Escape(); + } + + return LTTRUE; + +} + + + + diff --git a/Jack/ClientShellDLL/ScreenEndMission.h b/Jack/ClientShellDLL/ScreenEndMission.h new file mode 100644 index 00000000..4767da13 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEndMission.h @@ -0,0 +1,51 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEndMission.h +// +// PURPOSE : Interface screen for handling end of mission +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_END_MISSION_H_) +#define _SCREEN_END_MISSION_H_ + +#include "BaseScreen.h" + +class CScreenEndMission : public CBaseScreen +{ +public: + CScreenEndMission(); + virtual ~CScreenEndMission(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + + virtual LTBOOL Render(HSURFACE hDestSurf); + + +protected: + + CLTGUITextCtrl *m_pMission; + CLTGUITextCtrl *m_pAccuracy; + CLTGUITextCtrl *m_pMarksmanship; + CLTGUITextCtrl *m_pNonInjury; + CLTGUITextCtrl *m_pTimesHit; + CLTGUITextCtrl *m_pSecrets; + CLTGUIListCtrl *m_pList; + + CLTGUITextCtrl *m_pContinue; + + + + +}; + +#endif // !defined(_SCREEN_END_MISSION_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenEnum.h b/Jack/ClientShellDLL/ScreenEnum.h new file mode 100644 index 00000000..e4238a08 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenEnum.h @@ -0,0 +1,85 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenEnum.h +// +// PURPOSE : Enums and string constants for screens. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// ----------------------------------------------------------------------- // + +// +// The following macros allow the enum entries to be included as the +// body of an enum, or the body of a const char* string list. +// + +#undef ADD_SCREEN + +#if defined(INCLUDE_AS_ENUM) + #define ADD_SCREEN(id,name) SCREEN_ID_##id, +#elif defined(INCLUDE_AS_STRING) + #define ADD_SCREEN(id,name) #name, +#else + #error To use this include file, first define either INCLUDE_AS_ENUM or INCLUDE_AS_STRING, to include the screens as enums, or string constants. +#endif + + +ADD_SCREEN(NONE,GenericScreen) +ADD_SCREEN(MAIN,ScreenMain) + +//main +ADD_SCREEN(SINGLE,ScreenSingle) +ADD_SCREEN(MULTI,ScreenMulti) +ADD_SCREEN(OPTIONS,ScreenOptions) +ADD_SCREEN(PROFILE,ScreenProfile) + +//single +ADD_SCREEN(LOAD,ScreenLoad) +ADD_SCREEN(SAVE,ScreenSave) + +//multi +ADD_SCREEN(PLAYER,ScreenPlayer) +ADD_SCREEN(HOST,ScreenHost) +ADD_SCREEN(JOIN,ScreenJoin) +ADD_SCREEN(PLAYER_TEAM,ScreenPlayerTeam) + +//options +ADD_SCREEN(DISPLAY,ScreenDisplay) +ADD_SCREEN(AUDIO,ScreenAudio) +ADD_SCREEN(GAME,ScreenGame) +ADD_SCREEN(PERFORMANCE,ScreenPerformance) +ADD_SCREEN(CONTROLS,ScreenControls) + +//multi - host +ADD_SCREEN(HOST_OPTIONS,ScreenHostOptions) +ADD_SCREEN(HOST_DM_OPTIONS,ScreenHostDMOptions) +ADD_SCREEN(HOST_TDM_OPTIONS,ScreenHostTDMOptions) +ADD_SCREEN(HOST_DE_OPTIONS,ScreenHostDemolitionOptions) +ADD_SCREEN(HOST_DD_OPTIONS,ScreenHostDDOptions) +ADD_SCREEN(HOST_MISSION,ScreenHostMission) +ADD_SCREEN(HOST_LEVELS,ScreenHostLevels) +ADD_SCREEN(HOST_WEAPONS,ScreenHostWeapons) +ADD_SCREEN(TEAM,ScreenTeam) + +//options - game +ADD_SCREEN(CROSSHAIR,ScreenCrosshair) + +//options - controls +ADD_SCREEN(CONFIGURE,ScreenConfigure) +ADD_SCREEN(MOUSE,ScreenMouse) +ADD_SCREEN(KEYBOARD,ScreenKeyboard) +ADD_SCREEN(JOYSTICK,ScreenJoystick) + +//not really standard screens, but needed for layout stuff +ADD_SCREEN(FAILURE,ScreenFailure) +ADD_SCREEN(END_MISSION,ScreenEndMission) +ADD_SCREEN(END_DM_MISSION,ScreenEndDMMission) +ADD_SCREEN(END_COOP_MISSION,ScreenEndCoopMission) +ADD_SCREEN(PRELOAD,ScreenPreload) +ADD_SCREEN(POSTLOAD,ScreenPostload) + +// Tron's player management screen +ADD_SCREEN(SUBROUTINES,ScreenSubroutines) + +//this must be the last id +ADD_SCREEN(UNASSIGNED,GenericScreen) + diff --git a/Jack/ClientShellDLL/ScreenFailure.cpp b/Jack/ClientShellDLL/ScreenFailure.cpp new file mode 100644 index 00000000..e11245d6 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenFailure.cpp @@ -0,0 +1,268 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenFailure.cpp +// +// PURPOSE : Interface screen for setting crosshair options +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenFailure.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "TO2InterfaceMgr.h" +#include "SaveLoadMgr.h" +#include "GameClientShell.h" +#include "ClientSaveLoadMgr.h" +#include "ClientMultiplayerMgr.h" +#include "MissionMgr.h" + +namespace +{ + float g_fDuration = 0.0f; + float g_fMinDelay = 3.0f; + float g_fDelay = 10.0f; + LTRect stringRect(20,240,620,400); + uint8 stringSize = 24; + LTIntPt helpPos(160,440); + uint8 helpSize = 12; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenFailure::CScreenFailure() +{ + m_pString = LTNULL; + m_pHelp = NULL; + m_bSentAutoLoadMessage = false; + g_fDuration = 0.0f; +} + +CScreenFailure::~CScreenFailure() +{ + +} + + +// Build the screen +LTBOOL CScreenFailure::Build() +{ + CreateTitle(NULL); + + if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"FailStringRect")) + { + stringRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_FAILURE,"FailStringRect"); + } + if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"FailStringSize")) + { + stringSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_FAILURE,"FailStringSize"); + } + + if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"HelpStringPos")) + { + helpPos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_FAILURE,"HelpStringPos"); + } + if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"HelpStringSize")) + { + helpSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_FAILURE,"HelpStringSize"); + } + + LTIntPt stringPos; + stringPos.x = (stringRect.left + stringRect.right) / 2; + stringPos.y = stringRect.top; + m_pString = AddTextItem("failed",NULL,NULL,stringPos,LTTRUE); + if (m_pString) + { + m_pString->SetFont(NULL,stringSize); + m_pString->SetFixedWidth(stringRect.right - stringRect.left); + CUIFormattedPolyString *pStr = m_pString->GetString(); + if (pStr) + { + pStr->SetAlignmentH(CUI_HALIGN_CENTER); + } + } + + if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"Delay")) + { + g_fDelay = g_pLayoutMgr->GetScreenCustomFloat(SCREEN_ID_FAILURE,"Delay"); + } + + if( !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + m_pHelp = AddTextItem(IDS_HELP_FAILURE,NULL,NULL,helpPos,LTTRUE); + if (m_pHelp) + { + m_pHelp->SetFont(NULL,helpSize); + } + } + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenFailure::OnFocus(LTBOOL bFocus) +{ + + if (bFocus) + { + g_fDuration = 0.0f; + if (m_pString) + { + m_pString->SetString(LoadTempString(g_pInterfaceMgr->GetFailStringID())); + } + if (m_pHelp) + { + m_pHelp->Show(LTFALSE); + } + + m_bSentAutoLoadMessage = false; + } + else + { + if (m_pString) + { + m_pString->SetString(" "); + } + + //for co-op hide the MB if they are forced to leave the screen before choosing + g_pInterfaceMgr->CloseMessageBox(LTFALSE); + } + CBaseScreen::OnFocus(bFocus); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ExitFailureScreenCB +// +// PURPOSE: Callback for the Exit failure mission screen messagebox... +// +// ----------------------------------------------------------------------- // + +static void ExitFailureScreenCB(LTBOOL bReturn, void *pData) +{ + // If they confirm, then go back. + if (bReturn) + { + CScreenMgr* pScreenMgr = g_pInterfaceMgr->GetScreenMgr( ); + + //hack to rebuild our screen history + pScreenMgr->ClearHistory(); + pScreenMgr->AddScreenToHistory( SCREEN_ID_MAIN ); + pScreenMgr->AddScreenToHistory( SCREEN_ID_MULTI ); + + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + g_pInterfaceMgr->GetScreenMgr( )->PreviousScreen( ); + } +} + + + +void CScreenFailure::Escape() +{ + // Only go back to the load screen if local client or single player. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = ExitFailureScreenCB; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_ENDCURRENTGAME,&mb); + } + else + { + //hack to rebuild our screen history + m_pScreenMgr->ClearHistory(); + + g_pInterfaceMgr->RequestInterfaceSound(IS_PAGE); + + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_MAIN); + + // Put mp history if mp game. + if( IsMultiplayerGame( )) + { + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_MULTI); + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_HOST); + } + // Put sp history if sp game. + else + { + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_SINGLE); + } + + OnFocus(LTFALSE); + + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_LOAD); + } +} + +LTBOOL CScreenFailure::HandleKeyUp(int key, int rep) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; + +} +LTBOOL CScreenFailure::OnLButtonUp(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} +LTBOOL CScreenFailure::OnRButtonUp(int x, int y) +{ + if (g_fDuration > g_fMinDelay) + { + Escape(); + return LTTRUE; + } + return LTFALSE; +} + + +LTBOOL CScreenFailure::Render(HSURFACE hDestSurf) +{ + CBaseScreen::Render(hDestSurf); + g_fDuration += g_pGameClientShell->GetFrameTime(); + + // Let the serve know we are ready to begin an automatic load... + + if( g_fDuration > g_fMinDelay && !m_bSentAutoLoadMessage ) + { + SendEmptyServerMsg( MID_CLIENT_READY_FOR_AUTOLOAD ); + m_bSentAutoLoadMessage = true; + } + + // Automatically trigger an escape if we're a local client. + if( !g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + + if (g_fDuration > g_fMinDelay && m_pHelp && !m_pHelp->IsVisible()) + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + m_pHelp->Show(LTTRUE); + } + + if (g_fDuration >= g_fDelay) + Escape(); + } + return LTTRUE; + +} + + + + diff --git a/Jack/ClientShellDLL/ScreenFailure.h b/Jack/ClientShellDLL/ScreenFailure.h new file mode 100644 index 00000000..28535515 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenFailure.h @@ -0,0 +1,48 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenFailure.h +// +// PURPOSE : Interface screen for handling mission failure +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_FAILURE_H_) +#define _SCREEN_FAILURE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenFailure : public CBaseScreen +{ +public: + CScreenFailure(); + virtual ~CScreenFailure(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual LTBOOL HandleKeyUp(int key, int rep); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnRButtonUp(int x, int y); + + virtual LTBOOL Render(HSURFACE hDestSurf); + + +protected: + + CLTGUITextCtrl *m_pString; + CLTGUITextCtrl *m_pHelp; + + bool m_bSentAutoLoadMessage; + + +}; + +#endif // !defined(_SCREEN_FAILURE_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenGame.cpp b/Jack/ClientShellDLL/ScreenGame.cpp new file mode 100644 index 00000000..8751a956 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenGame.cpp @@ -0,0 +1,215 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenGame.cpp +// +// PURPOSE : Interface screen for setting gameplay options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenGame.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" + +#include "GameClientShell.h" +#include "VersionMgr.h" +#include "ResShared.h" + +namespace +{ + int kGap = 0; + int kWidth = 0; +} + +//extern VarTrack g_vtSubtitles; +VarTrack g_vtSubtitles; +extern VarTrack g_vtHUDLayout; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenGame::CScreenGame() +{ + m_nDifficulty = 2; + m_nSubtitles = 0; + m_bGore = LTFALSE; + m_bAlwaysRun = LTTRUE; + m_nLayout = 0; + m_nHeadBob = 0; + m_nWeaponSway = 0; + m_nMsgDur = 0; + m_bAutoWeaponSwitch = LTTRUE; + m_bVehicleContour = LTTRUE; +} + +CScreenGame::~CScreenGame() +{ + +} + +// Build the screen +LTBOOL CScreenGame::Build() +{ + + CreateTitle(IDS_TITLE_GAME_OPTIONS); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_GAME,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_GAME,"SliderWidth"); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_GAME,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_GAME,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_SelectedColor); + AddControl(pFrame); + + //crosshair menu + AddTextItem(IDS_CONTROLS_CROSSHAIR, CMD_CROSSHAIR, IDS_HELP_CROSSHAIRMENU); + + CLTGUICycleCtrl* pCycle = AddCycle(IDS_DISPLAY_SUBTITLES,IDS_HELP_SUBTITLES,kGap,&m_nSubtitles); + char szTmp[64]; + FormatString(IDS_OFF,szTmp,sizeof(szTmp)); + pCycle->AddString(szTmp); + + FormatString(IDS_ON,szTmp,sizeof(szTmp)); + pCycle->AddString(szTmp); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (pProfile && !g_pVersionMgr->IsLowViolence()) + { + CLTGUIToggle *pGore = AddToggle(IDS_DISPLAY_GORE,IDS_HELP_GORE,kGap,&m_bGore); + } + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + //always run + CLTGUIToggle* pToggle = AddToggle(IDS_ADVCONTROLS_RUNLOCK, IDS_HELP_RUNLOCK, kGap, &m_bAlwaysRun ); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + // Add the Difficulty option + m_pDifficultyCtrl = AddCycle(IDS_DIFFICULTY,IDS_HELP_DIFFICULTY,kGap,&m_nDifficulty); + + FormatString(IDS_NEW_EASY,szTmp,sizeof(szTmp)); + m_pDifficultyCtrl->AddString(szTmp); + + FormatString(IDS_NEW_MEDIUM,szTmp,sizeof(szTmp)); + m_pDifficultyCtrl->AddString(szTmp); + + FormatString(IDS_NEW_HARD,szTmp,sizeof(szTmp)); + m_pDifficultyCtrl->AddString(szTmp); + + FormatString(IDS_NEW_INSANE,szTmp,sizeof(szTmp)); + m_pDifficultyCtrl->AddString(szTmp); +/* + pCycle = AddCycle(IDS_HUDLAYOUT,IDS_HELP_HUDLAYOUT,kGap,&m_nLayout); + for (int hl = 0; hl < g_pLayoutMgr->GetNumHUDLayouts(); hl++) + { + char szTmpBuffer[128]; + FormatString(g_pLayoutMgr->GetLayoutName(hl),szTmpBuffer,sizeof(szTmpBuffer)); + pCycle->AddString(szTmpBuffer); + } +*/ + + CLTGUISlider *pSlider=AddSlider(IDS_HEADBOB, IDS_HELP_HEADBOB, kGap, kWidth, -1, &m_nHeadBob); + pSlider->SetSliderRange(0, 10); + pSlider->SetSliderIncrement(1); + + pSlider=AddSlider(IDS_WEAPONSWAY, IDS_HELP_WEAPONSWAY, kGap, kWidth, -1, &m_nWeaponSway); + pSlider->SetSliderRange(0, 10); + pSlider->SetSliderIncrement(1); + + pSlider=AddSlider(IDS_PICKUP_MSG_DUR, IDS_HELP_PICKUP_MSG_DUR, kGap, kWidth, -1, &m_nMsgDur); + pSlider->SetSliderRange(1, 10); + pSlider->SetSliderIncrement(1); + + pToggle = AddToggle(IDS_AUTOSWITCH_WEAPONS, IDS_HELP_AUTOSWITCH_WEAPONS, kGap, &m_bAutoWeaponSwitch ); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + pToggle = AddToggle(IDS_CONTOUR, IDS_HELP_CONTOUR, kGap, &m_bVehicleContour ); + pToggle->SetOnString(LoadTempString(IDS_ON)); + pToggle->SetOffString(LoadTempString(IDS_OFF)); + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +uint32 CScreenGame::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + + switch(dwCommand) + { + case CMD_CROSSHAIR: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_CROSSHAIR); + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + +void CScreenGame::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + pProfile->SetGameOptions(); + + m_nDifficulty = pProfile->m_nDifficulty; + m_nSubtitles = pProfile->m_nSubtitles; + m_bGore = pProfile->m_bGore; + m_bAlwaysRun = pProfile->m_bAlwaysRun; + m_nLayout = pProfile->m_nLayout; + m_nHeadBob = pProfile->m_nHeadBob; + m_nWeaponSway = pProfile->m_nWeaponSway; + m_nMsgDur = pProfile->m_nMsgDur; + m_bAutoWeaponSwitch = pProfile->m_bAutoWeaponSwitch; + m_bVehicleContour = pProfile->m_bVehicleContour; + + m_pDifficultyCtrl->Enable( !(g_pLTClient->IsConnected() && IsMultiplayerGame()) ); + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + + pProfile->m_nDifficulty = m_nDifficulty; + pProfile->m_nSubtitles = m_nSubtitles; + pProfile->m_bGore = !!m_bGore; + pProfile->m_bAlwaysRun = m_bAlwaysRun; + pProfile->m_nLayout = m_nLayout; + pProfile->m_nHeadBob = m_nHeadBob; + pProfile->m_nWeaponSway = m_nWeaponSway; + pProfile->m_nMsgDur = m_nMsgDur; + pProfile->m_bAutoWeaponSwitch = m_bAutoWeaponSwitch; + pProfile->m_bVehicleContour = m_bVehicleContour; + + pProfile->ApplyGameOptions(); + pProfile->Save(); + + } + CBaseScreen::OnFocus(bFocus); +} + + diff --git a/Jack/ClientShellDLL/ScreenGame.h b/Jack/ClientShellDLL/ScreenGame.h new file mode 100644 index 00000000..4ff1328c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenGame.h @@ -0,0 +1,52 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenGame.h +// +// PURPOSE : Interface screen for setting gameplay options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_GAME_H_ +#define _SCREEN_GAME_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenGame : public CBaseScreen +{ +public: + CScreenGame(); + virtual ~CScreenGame(); + + // Build the folder + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + + +protected: + + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + +protected: + uint8 m_nSubtitles; + LTBOOL m_bGore; + uint8 m_nDifficulty; + LTBOOL m_bAlwaysRun; + uint8 m_nLayout; + int m_nHeadBob; + int m_nWeaponSway; + int m_nMsgDur; + LTBOOL m_bAutoWeaponSwitch; + LTBOOL m_bVehicleContour; + + CLTGUICycleCtrl *m_pDifficultyCtrl; // The difficulty control + +}; + +#endif // _SCREEN_GAME_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHost.cpp b/Jack/ClientShellDLL/ScreenHost.cpp new file mode 100644 index 00000000..d27b033a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHost.cpp @@ -0,0 +1,861 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHost.cpp +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHost.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "CommonUtilities.h" +#include "ClientRes.h" +#include "ResShared.h" +#include "MissionMgr.h" +#include "clientmultiplayermgr.h" +#include "WinUtil.h" +#include "GameClientShell.h" + +static const int kMaxPortStrLen = 5; +static const int kMaxBandwidthStrLen = 8; + +extern bool g_bLAN; + +namespace +{ + void EditNameCallBack(LTBOOL bReturn, void *pData) + { + CScreenHost *pThisScreen = (CScreenHost *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_NAME); + }; + void EditPassCallBack(LTBOOL bReturn, void *pData) + { + CScreenHost *pThisScreen = (CScreenHost *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_PASS); + }; + void EditScmdPassCallBack(LTBOOL bReturn, void *pData) + { + CScreenHost *pThisScreen = (CScreenHost *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_SCMDPASS); + }; + void EditPortCallBack(LTBOOL bReturn, void *pData) + { + CScreenHost *pThisScreen = (CScreenHost *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_PORT); + }; + void EditBandwidthCallBack(LTBOOL bReturn, void *pData) + { + CScreenHost *pThisScreen = (CScreenHost *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_BANDWIDTH); + }; + +} + +void LaunchCallBack(LTBOOL bReturn, void *pData); + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHost::CScreenHost() +{ + m_pName = LTNULL; + m_pCampaign = LTNULL; + + m_pWeapons = LTNULL; + + m_pPassword = LTNULL; + m_pPassToggle = LTNULL; + m_pLanToggle = LTNULL; + m_bLan = LTFALSE; + + m_pPort = LTNULL; + + m_pScmdPassword = LTNULL; + m_pScmdPassToggle = LTNULL; + + m_pBandwidthCycle = LTNULL; + m_pBandwidth = LTNULL; + m_nBandwidth = 0; + m_sBandwidth = ""; + + LoadString( IDS_PASSWORD_DEFAULT, m_sPassword.GetBuffer( MAX_PASSWORD ), MAX_PASSWORD ); + m_sPassword.ReleaseBuffer( ); + + LoadString( IDS_PASSWORD_DEFAULT, m_sScmdPassword.GetBuffer( MAX_PASSWORD ), MAX_PASSWORD ); + m_sScmdPassword.ReleaseBuffer( ); + + m_sCampaignName = DEFAULT_CAMPAIGN; + + m_sPort.Format( "%d", DEFAULT_PORT ); + m_bUsePassword = LTFALSE; + m_bAllowScmdCommands = LTFALSE; + m_bReadyToLaunch = LTFALSE; + m_bDedicated = LTFALSE; + + m_nGameType = 0; + +} + + +CScreenHost::~CScreenHost() +{ +} + +// Build the screen +LTBOOL CScreenHost::Build() +{ + int kColumn0 = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST,"ColumnWidth"); + int kColumn1 = (640 - GetPageLeft()) - kColumn0; + + CreateTitle(IDS_TITLE_HOST); + + m_pName = AddColumnCtrl(CMD_EDIT_NAME, IDS_HELP_SESSION_NAME); + m_pName->AddColumn(LoadTempString(IDS_HOST_NAME), kColumn0); + m_pName->AddColumn("", kColumn1, LTTRUE); + + CLTGUICycleCtrl* pCycle = AddCycle(IDS_GAME_TYPE,IDS_HELP_GAME_TYPE,kColumn0,&m_nGameType); + pCycle->NotifyOnChange( CMD_GAME, this ); + pCycle->AddString( LoadTempString(IDS_DEATHMATCH) ); + pCycle->AddString( LoadTempString(IDS_TEAMDEATHMATCH) ); +#if !defined( _MPDEMO ) && !defined( _PRDEMO ) + pCycle->AddString( LoadTempString(IDS_DOOMSDAY) ); +#endif// !defined( _MPDEMO ) && !defined( _PRDEMO ) + pCycle->AddString( LoadTempString(IDS_DEMOLITION) ); + + m_pLanToggle = AddToggle(IDS_SERVER_LAN,IDS_HELP_SERVER_LAN,kColumn0,&m_bLan); + m_pLanToggle->NotifyOnChange(CMD_TOGGLE_LAN,this); + m_pLanToggle->SetOnString(LoadTempString(IDS_SERVER_LAN_ONLY)); + m_pLanToggle->SetOffString(LoadTempString(IDS_SERVER_INTERNET)); + + m_pCampaign = AddColumnCtrl(CMD_CHOOSE_CAMPAIGN, IDS_HELP_CAMPAIGN_NAME); + m_pCampaign->AddColumn(LoadTempString(IDS_HOST_CAMPAIGN), kColumn0); + m_pCampaign->AddColumn("", kColumn1, LTTRUE); + + m_pPassToggle = AddToggle(IDS_USE_PASSWORD,IDS_HELP_PASSWORD,kColumn0,&m_bUsePassword); + m_pPassToggle->NotifyOnChange(CMD_TOGGLE_PASS,this); + + m_pPassword = AddColumnCtrl(CMD_EDIT_PASS, IDS_HELP_ENTER_PASSWORD); + m_pPassword->AddColumn(LoadTempString(IDS_PASSWORD), kColumn0); + m_pPassword->AddColumn("", kColumn1, LTTRUE); + + m_pScmdPassToggle = AddToggle(IDS_ALLOW_SCMD_COMMANDS,IDS_HELP_ALLOWSCMD,kColumn0,&m_bAllowScmdCommands); + m_pScmdPassToggle->NotifyOnChange(CMD_TOGGLE_SCMDPASS,this); + + m_pScmdPassword = AddColumnCtrl(CMD_EDIT_SCMDPASS, IDS_HELP_ENTER_SCMDPASSWORD); + m_pScmdPassword->AddColumn(LoadTempString(IDS_SCMDPASSWORD), kColumn0); + m_pScmdPassword->AddColumn("", kColumn1, LTTRUE); + + m_pPort = AddColumnCtrl(CMD_EDIT_PORT, IDS_HELP_ENTER_PORT); + m_pPort->AddColumn(LoadTempString(IDS_PORT), kColumn0); + m_pPort->AddColumn("", kColumn1, LTTRUE); + + m_pBandwidthCycle = AddCycle(IDS_BANDWIDTH_CYCLE,IDS_HELP_BANDWIDTH_CYCLE,kColumn0,&m_nBandwidth); + m_pBandwidthCycle->AddString(LoadTempString(IDS_56K)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_DSL_LOW)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_DSL_HIGH)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_CABLE)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_T1)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_T3)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_CUSTOM)); + + m_pBandwidth = AddColumnCtrl(CMD_EDIT_BANDWIDTH, IDS_HELP_BANDWIDTH_EDIT); + m_pBandwidth->AddColumn(LoadTempString(IDS_BANDWIDTH_EDIT), kColumn0); + m_pBandwidth->AddColumn("", kColumn1, LTTRUE); + + + AddTextItem(IDS_OPTIONS, CMD_OPTIONS, IDS_HELP_HOST_OPTIONS); + m_pWeapons = AddTextItem(IDS_WPN_RESTRICT, CMD_WEAPONS, IDS_HELP_WPN_RESTRICT); + + CLTGUIToggle *pToggle = AddToggle(IDS_DEDICATED,IDS_HELP_DEDICATED,kColumn0,&m_bDedicated); + pToggle->SetOnString(LoadTempString(IDS_YES)); + pToggle->SetOffString(LoadTempString(IDS_NO)); + + + LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_HOST,"LaunchPos"); + uint8 nFont = g_pLayoutMgr->GetBackFont(); + uint8 nFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST,"LaunchFontSize"); + CLTGUITextCtrl* pCtrl = AddTextItem(IDS_HOST_LAUNCH, CMD_LAUNCH, IDS_HELP_LAUNCH,pos,LTFALSE,nFont); + pCtrl->SetFont(LTNULL,nFontSize); + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenHost::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand == CMD_OK) + { + HandleCallback(dwParam1,dwParam2); + return 1; + } + switch(dwCommand) + { + case CMD_GAME: + { + UpdateData(); + SaveOptions(); + UpdateGameType(); + + } break; + + case CMD_EDIT_NAME: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditNameCallBack; + mb.pString = m_sSessionName; + mb.nMaxChars = MAX_SESSION_NAME-1; + g_pInterfaceMgr->ShowMessageBox(IDS_HOST_NAME,&mb); + } break; + case CMD_LOAD_GAME: + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_LOAD); + break; + } + case CMD_EDIT_PASS: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditPassCallBack; + mb.pString = m_sPassword; + mb.nMaxChars = MAX_PASSWORD-1; + g_pInterfaceMgr->ShowMessageBox(IDS_PASSWORD,&mb); + } break; + case CMD_EDIT_SCMDPASS: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditScmdPassCallBack; + mb.pString = m_sScmdPassword; + mb.nMaxChars = MAX_PASSWORD-1; + g_pInterfaceMgr->ShowMessageBox(IDS_SCMDPASSWORD,&mb); + } break; + case CMD_EDIT_PORT: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditPortCallBack; + mb.pString = m_sPort; + mb.nMaxChars = kMaxPortStrLen; + mb.eInput = CLTGUIEditCtrl::kInputNumberOnly; + g_pInterfaceMgr->ShowMessageBox(IDS_PORT,&mb); + } break; + case CMD_EDIT_BANDWIDTH: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditBandwidthCallBack; + mb.pString = m_sBandwidth; + mb.nMaxChars = kMaxBandwidthStrLen; + mb.eInput = CLTGUIEditCtrl::kInputNumberOnly; + g_pInterfaceMgr->ShowMessageBox(IDS_BANDWIDTH_EDIT,&mb); + } break; + case CMD_TOGGLE_PASS: + { + m_pPassToggle->UpdateData(); + m_pPassword->Enable(m_bUsePassword); + } break; + case CMD_TOGGLE_LAN: + { + m_pLanToggle->UpdateData(); + m_pBandwidthCycle->Enable( !m_bLan ); + m_pBandwidth->Enable( !m_bLan ); + g_bLAN = !!m_bLan; + } break; + case CMD_TOGGLE_SCMDPASS: + { + m_pScmdPassToggle->UpdateData(); + m_pScmdPassword->Enable(m_bAllowScmdCommands); + } break; + case CMD_OPTIONS: + { + switch (m_eGameType) + { + case eGameTypeCooperative: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_OPTIONS); + break; + case eGameTypeDeathmatch: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DM_OPTIONS); + break; + case eGameTypeTeamDeathmatch: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_TDM_OPTIONS); + break; + case eGameTypeDemolition: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DE_OPTIONS); + break; + case eGameTypeDoomsDay: + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_DD_OPTIONS); + break; + }; + } break; + case CMD_WEAPONS: + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_WEAPONS); + } break; + case CMD_CHOOSE_CAMPAIGN: + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_MISSION); + } break; + case CMD_LAUNCH: + { + + if (g_pGameClientShell->IsWorldLoaded()) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = LaunchCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_ENDCURRENTGAME,&mb); + } + else + { + HandleLaunch(); + } + + } break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + +// Change in focus +void CScreenHost::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + m_eGameType = pProfile->m_ServerGameOptions.m_eGameType; + + + switch(m_eGameType) + { + case eGameTypeTeamDeathmatch: + m_nGameType = 1; + break; + case eGameTypeDoomsDay: + m_nGameType = 2; + break; + case eGameTypeDemolition: +#if defined( _MPDEMO ) || defined( _PRDEMO ) + m_nGameType = 2; +#else // !defined( _MPDEMO ) && !defined( _PRDEMO ) + m_nGameType = 3; +#endif // !defined( _MPDEMO ) && !defined( _PRDEMO ) + break; + case eGameTypeDeathmatch: + default: + m_nGameType = 0; + break; + } + + UpdateGameType(); + + m_sPassword = pProfile->m_ServerGameOptions.m_sPassword.c_str(); + m_sPassword = m_sPassword.Left( MAX_PASSWORD ); + m_sScmdPassword = pProfile->m_ServerGameOptions.m_sScmdPassword.c_str( ); + m_sScmdPassword = m_sScmdPassword.Left( MAX_PASSWORD ); + uint16 nPort = pProfile->m_ServerGameOptions.m_nPort; + m_sPort.Format( "%d", nPort ); + m_nBandwidth = pProfile->m_ServerGameOptions.m_nBandwidthServer; + m_bUsePassword = pProfile->m_ServerGameOptions.m_bUsePassword; + m_bAllowScmdCommands = pProfile->m_ServerGameOptions.m_bAllowScmdCommands; + m_bDedicated = pProfile->m_ServerGameOptions.m_bDedicated; + m_bLan = pProfile->m_ServerGameOptions.m_bLANOnly; + g_bLAN = !!m_bLan; + + m_pPassword->Enable(m_bUsePassword); + + m_pScmdPassword->Enable(m_bAllowScmdCommands); + + m_pBandwidthCycle->Enable( !m_bLan ); + m_pBandwidth->Enable( !m_bLan ); + + + m_pPassword->SetString(1,m_sPassword); + m_pScmdPassword->SetString(1,m_sScmdPassword); + m_pPort->SetString(1,m_sPort); + + m_pWeapons->Show(!IsCoopMultiplayerGameType( )); + + if (!m_bLan) + UpdateBandwidth(); + + UpdateData(LTFALSE); + + // Setup the host info, so that loaded games have the correct settings + g_pClientMultiplayerMgr->SetupServerHost( pProfile->m_ServerGameOptions.m_nPort, !!m_bLan ); + + } + else + { + UpdateData(); + + SaveOptions(); + + // Setup the host info, so that loaded games have the correct settings + g_pClientMultiplayerMgr->SetupServerHost( pProfile->m_ServerGameOptions.m_nPort, !!m_bLan ); + + } + CBaseScreen::OnFocus(bFocus); +} + +LTBOOL CScreenHost::OnLeft() +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + + if (!m_nBandwidth) + m_nBandwidth = eBandwidth_Custom-1; + else + --m_nBandwidth; + + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnLeft(); +} + +LTBOOL CScreenHost::OnRight() +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + ++m_nBandwidth; + if (m_nBandwidth >= eBandwidth_Custom) + m_nBandwidth = 0; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnRight(); +} + +/******************************************************************/ +LTBOOL CScreenHost::OnLButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + ++m_nBandwidth; + if (m_nBandwidth >= eBandwidth_Custom) + m_nBandwidth = 0; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnLButtonUp(x,y); +} + + +/******************************************************************/ +LTBOOL CScreenHost::OnRButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + if (!m_nBandwidth) + m_nBandwidth = eBandwidth_Custom-1; + else + --m_nBandwidth; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnRButtonUp(x,y); +} + +void CScreenHost::HandleLaunch() +{ + m_bReadyToLaunch = LTFALSE; + UpdateData(); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + SaveOptions(); + + // Setup the host info. + if( !g_pClientMultiplayerMgr->SetupServerHost( pProfile->m_ServerGameOptions.m_nPort, !!m_bLan )) + { + // This should probably prevent them from starting the server if this function fails, + // But it never does... + } + + if (!LaunchGame()) + { + g_pInterfaceMgr->LoadFailed(SCREEN_ID_HOST); + } +} + + + +LTBOOL CScreenHost::LaunchGame() +{ + if( !g_pMissionMgr->StartGameNew( )) + return LTFALSE; + + return LTTRUE; +} + + +void LaunchCallBack(LTBOOL bReturn, void *pData) +{ + CScreenHost *pThisScreen = (CScreenHost *)pData; + if (bReturn && pThisScreen) + { + pThisScreen->ReadyLaunch(LTTRUE); + } +} + + +bool CScreenHost::UpdateInterfaceSFX() +{ + if (m_bReadyToLaunch) + HandleLaunch(); + + CBaseScreen::UpdateInterfaceSFX(); + + return true; +} + + +void CScreenHost::ReadyLaunch(LTBOOL bReady) +{ + m_bReadyToLaunch = bReady; +} + +void CScreenHost::UpdateBandwidth() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if ( m_nBandwidth >= eBandwidth_Custom ) + { + m_sBandwidth.Format( "%d", pProfile->m_ServerGameOptions.m_nBandwidthServerCustom); + m_pBandwidth->SetString(1,m_sBandwidth); + } + else + { + + m_sBandwidth.Format( "%d", g_BandwidthServer[m_nBandwidth]); + m_pBandwidth->SetString(1,m_sBandwidth); + } +} + + +void CScreenHost::HandleCallback(uint32 dwParam1, uint32 dwParam2) +{ + switch(dwParam2) + { + case CMD_EDIT_NAME: + { + const char* pszNewVal = (const char*)dwParam1; + + if( pszNewVal[0] ) + { + m_sSessionName = pszNewVal; + } + else + { + GetDefaultSessionName( m_eGameType, m_sSessionName.GetBuffer( MAX_SESSION_NAME ), MAX_SESSION_NAME ); + m_sSessionName.ReleaseBuffer( ); + } + + m_sSessionName = m_sSessionName.Left( MAX_SESSION_NAME ); + m_pName->SetString(1,m_sSessionName); + } + break; + case CMD_EDIT_PASS: + m_sPassword = ((char *)dwParam1); + m_sPassword = m_sPassword.Left( MAX_PASSWORD ); + m_pPassword->SetString(1,m_sPassword); + break; + case CMD_EDIT_SCMDPASS: + m_sScmdPassword = ((char *)dwParam1); + m_sScmdPassword = m_sScmdPassword.Left( MAX_PASSWORD ); + m_pScmdPassword->SetString(1,m_sScmdPassword); + break; + case CMD_EDIT_PORT: + { + char *pszPort = (char *)dwParam1; + uint16 nPort = (uint16)atoi(pszPort); + m_sPort = pszPort; + m_sPort = m_sPort.Left( kMaxPortStrLen ); + m_pPort->SetString(1,m_sPort); + + // Setup the host info. + g_pClientMultiplayerMgr->SetupServerHost( nPort, !!m_bLan ); + } + break; + case CMD_EDIT_BANDWIDTH: + { + char *pszBandwidth = (char *)dwParam1; + uint32 nBandwidth = (uint32)atoi(pszBandwidth); + if ( IsValidBandwidth(nBandwidth) ) + { + m_sBandwidth = pszBandwidth; + m_sBandwidth = m_sBandwidth.Left( kMaxBandwidthStrLen ); + m_nBandwidth = eBandwidth_Custom; + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->m_ServerGameOptions.m_nBandwidthServerCustom = (uint16)atol(m_sBandwidth); + m_pBandwidthCycle->UpdateData(LTFALSE); + UpdateBandwidth(); + } + else + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(FormatTempString(IDS_BANDWIDTH_INVALID,GetMinimumBandwidth(),GetMaximumBandwidth()),&mb); + } + } + break; + } + UpdateData(); +} + +void CScreenHost::UpdateGameType() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + switch(m_nGameType) + { + case 0: + m_eGameType = eGameTypeDeathmatch; + break; + case 1: + m_eGameType = eGameTypeTeamDeathmatch; + break; +#if defined( _MPDEMO ) || defined( _PRDEMO ) + case 2: + m_eGameType = eGameTypeDemolition; + break; +#else // defined( _MPDEMO ) || defined( _PRDEMO ) + case 2: + m_eGameType = eGameTypeDoomsDay; + break; + case 3: + m_eGameType = eGameTypeDemolition; + break; +#endif // defined( _MPDEMO ) || defined( _PRDEMO ) + } + + pProfile->m_ServerGameOptions.m_eGameType = m_eGameType; + + + m_sSessionName = pProfile->m_ServerGameOptions.GetSessionName(); + m_sCampaignName = pProfile->m_ServerGameOptions.GetCampaignName(); + + // If the session name isn't specified, then get the default. + if( m_sSessionName.GetLength() == 0 ) + { + GetDefaultSessionName( m_eGameType, m_sSessionName.GetBuffer( MAX_SESSION_NAME ), MAX_SESSION_NAME ); + m_sSessionName.ReleaseBuffer( ); + } + m_pName->SetString(1,m_sSessionName); + + + CreateDefaultCampaign(); + bool isDefault = (m_sCampaignName.CompareNoCase(DEFAULT_CAMPAIGN) == 0); + + if (!isDefault) + { + char const* pszCampaignFile = GetCampaignFile( pProfile->m_ServerGameOptions ); + + if (!CWinUtil::FileExist( pszCampaignFile )) + { + switch (m_eGameType) + { + case eGameTypeCooperative: + pProfile->m_ServerGameOptions.GetCoop().m_sCampaignName = DEFAULT_CAMPAIGN; + break; + case eGameTypeDeathmatch: + pProfile->m_ServerGameOptions.GetDeathmatch().m_sCampaignName = DEFAULT_CAMPAIGN; + break; + case eGameTypeTeamDeathmatch: + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sCampaignName = DEFAULT_CAMPAIGN; + break; + case eGameTypeDemolition: + pProfile->m_ServerGameOptions.GetDemolition().m_sCampaignName = DEFAULT_CAMPAIGN; + break; + case eGameTypeDoomsDay: + pProfile->m_ServerGameOptions.GetDoomsday().m_sCampaignName = DEFAULT_CAMPAIGN; + break; + + } + isDefault = true; + } + } + + m_sCampaignName = m_sCampaignName.Left( MAX_SESSION_NAME ); + + if (isDefault) + m_pCampaign->SetString(1,LoadTempString(IDS_HOST_CAMPAIGN_DEFAULT)); + else + m_pCampaign->SetString(1,m_sCampaignName); + + g_pGameClientShell->SetGameType(m_eGameType); + + +} + + +void CScreenHost::SaveOptions() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + pProfile->m_ServerGameOptions.m_eGameType = m_eGameType; + pProfile->m_ServerGameOptions.m_bUsePassword = !!m_bUsePassword; + pProfile->m_ServerGameOptions.m_sPassword = m_sPassword; + pProfile->m_ServerGameOptions.m_sScmdPassword = m_sScmdPassword; + pProfile->m_ServerGameOptions.m_bAllowScmdCommands = !!m_bAllowScmdCommands; + pProfile->m_ServerGameOptions.m_nPort = (uint16)atoi(m_sPort); + pProfile->m_ServerGameOptions.m_nBandwidthServer = m_nBandwidth; + pProfile->m_ServerGameOptions.m_nBandwidthServerCustom = (uint16)atol(m_sBandwidth); + pProfile->m_ServerGameOptions.m_bDedicated = !!m_bDedicated; + pProfile->m_ServerGameOptions.m_bLANOnly = !!m_bLan; + + switch (m_eGameType) + { + case eGameTypeCooperative: + pProfile->m_ServerGameOptions.GetCoop().m_sSessionName = m_sSessionName; + pProfile->m_ServerGameOptions.GetCoop().m_sCampaignName = m_sCampaignName; + break; + case eGameTypeDeathmatch: + pProfile->m_ServerGameOptions.GetDeathmatch().m_sSessionName = m_sSessionName; + pProfile->m_ServerGameOptions.GetDeathmatch().m_sCampaignName = m_sCampaignName; + break; + case eGameTypeTeamDeathmatch: + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sSessionName = m_sSessionName; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sCampaignName = m_sCampaignName; + break; + case eGameTypeDemolition: + pProfile->m_ServerGameOptions.GetDemolition().m_sSessionName = m_sSessionName; + pProfile->m_ServerGameOptions.GetDemolition().m_sCampaignName = m_sCampaignName; + break; + case eGameTypeDoomsDay: + pProfile->m_ServerGameOptions.GetDoomsday().m_sSessionName = m_sSessionName; + pProfile->m_ServerGameOptions.GetDoomsday().m_sCampaignName = m_sCampaignName; + break; + + }; + + pProfile->ApplyMultiplayer(!!m_bLan); + pProfile->Save(true); +} + + + +void CScreenHost::CreateDefaultCampaign() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + std::string sFN = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), m_eGameType ); + + + + if( !CWinUtil::DirExist( sFN.c_str( ))) + { + if( !CWinUtil::CreateDir( sFN.c_str( ))) + { + //TODO: error message + return; + } + } + + sFN += DEFAULT_CAMPAIGN_FILE; + + if (CWinUtil::FileExist(sFN.c_str())) + { + remove(sFN.c_str()); + } + + char szString[256]; + char szNum[4]; + + sprintf(szNum, "%d", (IsCoopMultiplayerGameType() ? 0 : 1) ); + CWinUtil::WinWritePrivateProfileString( "MissionList", "LoopMissions", szNum, sFN.c_str()); + + CWinUtil::WinWritePrivateProfileString( "MissionList", "MissionSourceFile", g_pMissionButeMgr->GetAttributeFile(), sFN.c_str()); + + + uint16 nCount = 0; + bool bAdd =false; + for (int nMission = 0; nMission < g_pMissionButeMgr->GetNumMissions(); nMission++) + { + MISSION *pMission = g_pMissionButeMgr->GetMission(nMission); + if (pMission) + { + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); + + bAdd = false; + switch (m_eGameType) + { + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + if (strnicmp(szWorldTitle,"DM_",3) == 0 || + strnicmp(szWorldTitle,"DE_",3) == 0 ) + { + bAdd = true; + } + break; + case eGameTypeDemolition: + if (strnicmp(szWorldTitle,"DE_",3) == 0) + { + bAdd = true; + } + break; + case eGameTypeDoomsDay: + if (strnicmp(szWorldTitle,"DD_",3) == 0) + { + bAdd = true; + } + break; + default: + bAdd = true; + break; + } + + if (bAdd) + { + sprintf(szString,"Mission%d",nCount); + sprintf(szNum,"%d",nMission); + CWinUtil::WinWritePrivateProfileString( "MissionList", szString, szNum, sFN.c_str()); + nCount++; + } + + } + + } + + // Flush the file. + CWinUtil::WinWritePrivateProfileString( NULL, NULL, NULL, sFN.c_str()); + + +} diff --git a/Jack/ClientShellDLL/ScreenHost.h b/Jack/ClientShellDLL/ScreenHost.h new file mode 100644 index 00000000..f37be66a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHost.h @@ -0,0 +1,95 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHost.h +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_HOST_H_ +#define _SCREEN_HOST_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHost : public CBaseScreen +{ +public: + CScreenHost(); + virtual ~CScreenHost(); + + // Build the screen + LTBOOL Build(); + LTBOOL OnLeft(); + LTBOOL OnRight(); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + + void OnFocus(LTBOOL bFocus); + + virtual bool UpdateInterfaceSFX(); + void ReadyLaunch(LTBOOL bReady); + +protected: + void HandleCallback(uint32 dwParam1, uint32 dwParam2); + void CreateDefaultCampaign(); + + LTBOOL LaunchGame(); + LTBOOL SetService( ); + void RunServerOptions(); + void HandleLaunch(); + + void UpdateBandwidth(); + void UpdateGameType(); + void SaveOptions(); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + CString m_sSessionName; + CString m_sCampaignName; + CString m_sPassword; + CString m_sPort; + LTBOOL m_bUsePassword; + LTBOOL m_bDedicated; + CString m_sScmdPassword; + LTBOOL m_bAllowScmdCommands; + LTBOOL m_bLan; + + CLTGUIColumnCtrl* m_pName; + CLTGUIToggle* m_pLanToggle; + + CLTGUIColumnCtrl* m_pCampaign; + + CLTGUIColumnCtrl* m_pPassword; + CLTGUIToggle* m_pPassToggle; + + CLTGUIColumnCtrl* m_pScmdPassword; + CLTGUIToggle* m_pScmdPassToggle; + + CLTGUIColumnCtrl* m_pPort; + + CLTGUICycleCtrl* m_pBandwidthCycle; + CLTGUIColumnCtrl* m_pBandwidth; + + CLTGUITextCtrl* m_pWeapons; + + uint8 m_nGameType; + GameType m_eGameType; + + uint8 m_nBandwidth; + CString m_sBandwidth; + + LTBOOL m_bReadyToLaunch; +}; + + + +#endif // _SCREEN_HOST_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostDDOptions.cpp b/Jack/ClientShellDLL/ScreenHostDDOptions.cpp new file mode 100644 index 00000000..4148b02e --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDDOptions.cpp @@ -0,0 +1,235 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDDOptions.cpp +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostDDOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "ResShared.h" + +namespace +{ + const int kMaxScoreLimit = 200; + const int kMaxTimeLimit = 60; + const int kMaxRunSpeed = 150; + const int kMaxRounds = 20; + + const uint32 CMD_TEAM1 = CMD_CUSTOM+1; + const uint32 CMD_TEAM2 = CMD_CUSTOM+2; +} + +uint8 g_nCurTeam = 0; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostDDOptions::CScreenHostDDOptions() +{ + m_nMaxPlayers = 8; + m_nRunSpeed = 130; + m_nTimeLimit = 10; + m_nRounds = 1; + m_bFriendlyFire = LTFALSE; + m_nFragScore = 1; + m_nDeviceCompletedScore = 10; + m_nLightPiecePlacedScore = 3; + m_nHeavyPiecePlacedScore = 5; + m_nPieceRemovedScore = 2; + m_nRevivingScore = 1; + + m_pMaxPlayers = NULL; + + m_bWeaponsStay = false; +} + + +CScreenHostDDOptions::~CScreenHostDDOptions() +{ +} + +// Build the screen +LTBOOL CScreenHostDDOptions::Build() +{ + int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"ColumnWidth"); + int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"SliderWidth"); + + CreateTitle(IDS_TITLE_HOST_OPTIONS); + + m_pTeam1 = AddTextItem(IDS_TEAM_1_OPTIONS, CMD_TEAM1, IDS_HELP_TEAM_1); + m_pTeam2 = AddTextItem(IDS_TEAM_2_OPTIONS, CMD_TEAM2, IDS_HELP_TEAM_2); +/* + LTIntPt tmp = m_nextPos; + + LTIntPt pos = m_pTeam1->GetBasePos(); + pos.x += kColumn; + m_pTeam1Name = AddTextItem("",0,0,pos,LTTRUE); + + pos = m_pTeam2->GetBasePos(); + pos.x += kColumn; + m_pTeam2Name = AddTextItem("",0,0,pos,LTTRUE); + + m_nextPos = tmp; +*/ + m_pMaxPlayers = AddSlider(IDS_MAX_PLAYERS, IDS_MAX_PLAYERS_HELP, kColumn, kSlider, -1, &m_nMaxPlayers); + m_pMaxPlayers->SetSliderRange(2, 16); + m_pMaxPlayers->SetSliderIncrement(1); + m_pMaxPlayers->SetNumericDisplay(LTTRUE); + + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + CLTGUIToggle* pToggle = AddToggle(IDS_FRIENDLY_FIRE,IDS_FRIENDLY_FIRE_HELP,kColumn,&m_bFriendlyFire); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + CLTGUISlider* pSlider = AddSlider(IDS_RUN_SPEED, IDS_RUN_SPEED_HELP, kColumn, kSlider, -1, &m_nRunSpeed); + pSlider->SetSliderRange(100, kMaxRunSpeed); + pSlider->SetSliderIncrement(10); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_TIME_LIMIT, IDS_TIME_LIMIT_HELP, kColumn, kSlider, -1, &m_nTimeLimit); + pSlider->SetSliderRange(0,kMaxTimeLimit); + pSlider->SetSliderIncrement(5); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider( IDS_ROUNDS, IDS_ROUNDS_HELP, kColumn, kSlider, -1, &m_nRounds ); + pSlider->SetSliderRange( 1, kMaxRounds ); + pSlider->SetSliderIncrement( 1 ); + pSlider->SetNumericDisplay( LTTRUE ); + + pSlider = AddSlider(IDS_FRAG_SCORE, IDS_FRAG_SCORE_HELP, kColumn, kSlider, -1, &m_nFragScore); + pSlider->SetSliderRange(0,3); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_REVIVE_SCORE, IDS_REVIVE_SCORE_HELP, kColumn, kSlider, -1, &m_nRevivingScore); + pSlider->SetSliderRange(0,3); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_DD_COMP_SCORE, IDS_DD_COMP_SCORE_HELP, kColumn, kSlider, -1, &m_nDeviceCompletedScore); + pSlider->SetSliderRange(0,20); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_DD_HVY_SCORE, IDS_DD_HVY_SCORE_HELP, kColumn, kSlider, -1, &m_nHeavyPiecePlacedScore); + pSlider->SetSliderRange(0,10); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_DD_LGT_SCORE, IDS_DD_LGT_SCORE_HELP, kColumn, kSlider, -1, &m_nLightPiecePlacedScore); + pSlider->SetSliderRange(0,5); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_DD_REMOVED_SCORE, IDS_DD_REMOVED_SCORE_HELP, kColumn, kSlider, -1, &m_nPieceRemovedScore); + pSlider->SetSliderRange(0,5); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pToggle = AddToggle(IDS_WEAPONSSTAY, IDS_WEAPONSSTAY_HELP, kColumn,&m_bWeaponsStay); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +// Change in focus +void CScreenHostDDOptions::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + m_nMaxPlayers = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nMaxPlayers; + m_nRunSpeed = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nRunSpeed; + m_nTimeLimit = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nTimeLimit; + m_nRounds = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nRounds; + m_bFriendlyFire = pProfile->m_ServerGameOptions.GetDoomsday().m_bFriendlyFire; + + m_nFragScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nFragScore; + m_nRevivingScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nRevivingScore; + m_nDeviceCompletedScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nDeviceCompletedScore; + m_nHeavyPiecePlacedScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nHeavyPiecePlacedScore; + m_nLightPiecePlacedScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nLightPiecePlacedScore; + m_nPieceRemovedScore = (int)pProfile->m_ServerGameOptions.GetDoomsday().m_nPieceRemovedScore; +/* + m_pTeam1Name->SetString(pProfile->m_ServerGameOptions.GetDoomsday().m_sTeamName[0].c_str()); + m_pTeam2Name->SetString(pProfile->m_ServerGameOptions.GetDoomsday().m_sTeamName[1].c_str()); +*/ + m_pMaxPlayers->Enable(!g_pPlayerMgr->IsPlayerInWorld()); + + m_bWeaponsStay = pProfile->m_ServerGameOptions.GetDoomsday().m_bWeaponsStay; + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + pProfile->m_ServerGameOptions.GetDoomsday().m_nMaxPlayers = (uint8)m_nMaxPlayers; + pProfile->m_ServerGameOptions.GetDoomsday().m_nRunSpeed = (uint8)m_nRunSpeed; + pProfile->m_ServerGameOptions.GetDoomsday().m_nTimeLimit = (uint8)m_nTimeLimit; + pProfile->m_ServerGameOptions.GetDoomsday().m_nRounds = (uint8)m_nRounds; + pProfile->m_ServerGameOptions.GetDoomsday().m_bFriendlyFire = !!m_bFriendlyFire; + + pProfile->m_ServerGameOptions.GetDoomsday().m_nFragScore = (uint8)m_nFragScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_nRevivingScore = (uint8)m_nRevivingScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_nDeviceCompletedScore = (uint8)m_nDeviceCompletedScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_nHeavyPiecePlacedScore = (uint8)m_nHeavyPiecePlacedScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_nLightPiecePlacedScore = (uint8)m_nLightPiecePlacedScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_nPieceRemovedScore = (uint8)m_nPieceRemovedScore; + pProfile->m_ServerGameOptions.GetDoomsday().m_bWeaponsStay = !!m_bWeaponsStay; + + pProfile->Save(); + + if (g_pPlayerMgr->IsPlayerInWorld()) + { + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_MULTIPLAYER_OPTIONS ); + pProfile->m_ServerGameOptions.GetDoomsday().Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + } + CBaseScreen::OnFocus(bFocus); +} + +uint32 CScreenHostDDOptions::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_TEAM1: + { + g_nCurTeam = 0; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + case CMD_TEAM2: + { + g_nCurTeam = 1; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + diff --git a/Jack/ClientShellDLL/ScreenHostDDOptions.h b/Jack/ClientShellDLL/ScreenHostDDOptions.h new file mode 100644 index 00000000..b8a890e8 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDDOptions.h @@ -0,0 +1,61 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDDOptions.h +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +//3 +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_HOST_DD_OPTIONS_H_ +#define _SCREEN_HOST_DD_OPTIONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHostDDOptions : public CBaseScreen +{ +public: + CScreenHostDDOptions(); + virtual ~CScreenHostDDOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + int m_nMaxPlayers; + int m_nRunSpeed; + int m_nScoreLimit; + int m_nTimeLimit; + int m_nRounds; + LTBOOL m_bFriendlyFire; + + int m_nFragScore; + + int m_nDeviceCompletedScore; + int m_nLightPiecePlacedScore; + int m_nHeavyPiecePlacedScore; + int m_nPieceRemovedScore; + + int m_nRevivingScore; + + LTBOOL m_bWeaponsStay; + + CLTGUISlider* m_pMaxPlayers; + CLTGUITextCtrl* m_pTeam1; + CLTGUITextCtrl* m_pTeam2; + CLTGUITextCtrl* m_pTeam1Name; + CLTGUITextCtrl* m_pTeam2Name; +}; + +#endif // _SCREEN_HOST_DD_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostDMOptions.cpp b/Jack/ClientShellDLL/ScreenHostDMOptions.cpp new file mode 100644 index 00000000..ca50371c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDMOptions.cpp @@ -0,0 +1,156 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDMOptions.cpp +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostDMOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "ResShared.h" + +namespace +{ + const int kMaxScoreLimit = 100; + const int kMaxTimeLimit = 60; + const int kMaxRunSpeed = 150; + const int kMaxRounds = 20; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostDMOptions::CScreenHostDMOptions() +{ + m_nMaxPlayers = 8; + m_nRunSpeed = 130; + m_nScoreLimit = 25; + m_nTimeLimit = 10; + m_nRounds = 1; + + m_nFragScore = 1; + + m_pMaxPlayers = NULL; + + m_bWeaponsStay = false; +} + + +CScreenHostDMOptions::~CScreenHostDMOptions() +{ +} + +// Build the screen +LTBOOL CScreenHostDMOptions::Build() +{ + int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"ColumnWidth"); + int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"SliderWidth"); + + CreateTitle(IDS_TITLE_HOST_OPTIONS); + + m_pMaxPlayers = AddSlider(IDS_MAX_PLAYERS, IDS_MAX_PLAYERS_HELP, kColumn, kSlider, -1, &m_nMaxPlayers); + m_pMaxPlayers->SetSliderRange(2, 16); + m_pMaxPlayers->SetSliderIncrement(1); + m_pMaxPlayers->SetNumericDisplay(LTTRUE); + + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + CLTGUISlider* pSlider = AddSlider(IDS_RUN_SPEED, IDS_RUN_SPEED_HELP, kColumn, kSlider, -1, &m_nRunSpeed); + pSlider->SetSliderRange(100, kMaxRunSpeed); + pSlider->SetSliderIncrement(10); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_FRAG_LIMIT, IDS_FRAG_LIMIT_HELP, kColumn, kSlider, -1, &m_nScoreLimit); + pSlider->SetSliderRange(0,kMaxScoreLimit); + pSlider->SetSliderIncrement(5); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_TIME_LIMIT, IDS_TIME_LIMIT_HELP, kColumn, kSlider, -1, &m_nTimeLimit); + pSlider->SetSliderRange(0,kMaxTimeLimit); + pSlider->SetSliderIncrement(5); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider( IDS_ROUNDS, IDS_ROUNDS_HELP, kColumn, kSlider, -1, &m_nRounds ); + pSlider->SetSliderRange( 1, kMaxRounds ); + pSlider->SetSliderIncrement( 1 ); + pSlider->SetNumericDisplay( LTTRUE ); + +// pSlider = AddSlider(IDS_FRAG_SCORE, IDS_FRAG_SCORE_HELP, kColumn, kSlider, -1, &m_nFragScore); +// pSlider->SetSliderRange(0,3); +// pSlider->SetSliderIncrement(1); +// pSlider->SetNumericDisplay(LTTRUE); + + CLTGUIToggle* pToggle = NULL; + pToggle = AddToggle(IDS_WEAPONSSTAY, IDS_WEAPONSSTAY_HELP, kColumn,&m_bWeaponsStay); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +// Change in focus +void CScreenHostDMOptions::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + + m_nMaxPlayers = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nMaxPlayers; + m_nRunSpeed = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nRunSpeed; + m_nScoreLimit = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nScoreLimit; + m_nTimeLimit = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nTimeLimit; + m_nRounds = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nRounds; + +// m_nFragScore = (int)pProfile->m_ServerGameOptions.GetDeathmatch().m_nFragScore; + + m_pMaxPlayers->Enable(!g_pPlayerMgr->IsPlayerInWorld()); + + m_bWeaponsStay = pProfile->m_ServerGameOptions.GetDeathmatch().m_bWeaponsStay; + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + pProfile->m_ServerGameOptions.GetDeathmatch().m_nMaxPlayers = (uint8)m_nMaxPlayers; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nRunSpeed = (uint8)m_nRunSpeed; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nScoreLimit = (uint8)m_nScoreLimit; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nTimeLimit = (uint8)m_nTimeLimit; + pProfile->m_ServerGameOptions.GetDeathmatch().m_nRounds = (uint8)m_nRounds; + +// pProfile->m_ServerGameOptions.GetDeathmatch().m_nFragScore = (uint8)m_nFragScore; + + pProfile->m_ServerGameOptions.GetDeathmatch().m_bWeaponsStay = !!m_bWeaponsStay; + + pProfile->Save(); + + if (g_pPlayerMgr->IsPlayerInWorld()) + { + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_MULTIPLAYER_OPTIONS ); + pProfile->m_ServerGameOptions.GetDeathmatch().Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + } + CBaseScreen::OnFocus(bFocus); +} + diff --git a/Jack/ClientShellDLL/ScreenHostDMOptions.h b/Jack/ClientShellDLL/ScreenHostDMOptions.h new file mode 100644 index 00000000..74aea7e5 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDMOptions.h @@ -0,0 +1,54 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDMOptions.h +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +//3 +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_HOST_DM_OPTIONS_H_ +#define _SCREEN_HOST_DM_OPTIONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHostDMOptions : public CBaseScreen +{ +public: + CScreenHostDMOptions(); + virtual ~CScreenHostDMOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + + +protected: + + +protected: +// uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + int m_nMaxPlayers; + int m_nRunSpeed; + int m_nScoreLimit; + int m_nTimeLimit; + int m_nRounds; + + int m_nFragScore; + + LTBOOL m_bWeaponsStay; + + CLTGUISlider* m_pMaxPlayers; + +}; + +#endif // _SCREEN_HOST_DM_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostDemolitionOptions.cpp b/Jack/ClientShellDLL/ScreenHostDemolitionOptions.cpp new file mode 100644 index 00000000..63d61490 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDemolitionOptions.cpp @@ -0,0 +1,192 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDemolitionOptions.cpp +// +// PURPOSE : Interface screen for hosting multi player demolition games +// +// (c) 1999-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostDemolitionOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "ResShared.h" + +namespace +{ + const int kMaxScoreLimit = 200; + const int kMaxTimeLimit = 60; + const int kMaxRunSpeed = 150; + const int kMaxRounds = 20; + + const uint32 CMD_TEAM1 = CMD_CUSTOM+1; + const uint32 CMD_TEAM2 = CMD_CUSTOM+2; +} + +extern uint8 g_nCurTeam; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostDemolitionOptions::CScreenHostDemolitionOptions() +{ + m_nMaxPlayers = 8; + m_nRunSpeed = 130; + m_nRounds = 2; + m_bFriendlyFire = LTFALSE; + + m_nFragScore = 1; + + m_bWeaponsStay = true; + + m_pMaxPlayers = NULL; +} + + +CScreenHostDemolitionOptions::~CScreenHostDemolitionOptions() +{ +} + +// Build the screen +LTBOOL CScreenHostDemolitionOptions::Build() +{ + int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DE_OPTIONS,"ColumnWidth"); + int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DE_OPTIONS,"SliderWidth"); + + CreateTitle(IDS_TITLE_HOST_OPTIONS); + + m_pTeam1 = AddTextItem(IDS_TEAM_1_OPTIONS, CMD_TEAM1, IDS_HELP_TEAM_1); + m_pTeam2 = AddTextItem(IDS_TEAM_2_OPTIONS, CMD_TEAM2, IDS_HELP_TEAM_2); + + /* + LTIntPt tmp = m_nextPos; + + LTIntPt pos = m_pTeam1->GetBasePos(); + pos.x += kColumn; + m_pTeam1Name = AddTextItem("",0,0,pos,LTTRUE); + + pos = m_pTeam2->GetBasePos(); + pos.x += kColumn; + m_pTeam2Name = AddTextItem("",0,0,pos,LTTRUE); + + m_nextPos = tmp; + */ + + m_pMaxPlayers = AddSlider(IDS_MAX_PLAYERS, IDS_MAX_PLAYERS_HELP, kColumn, kSlider, -1, &m_nMaxPlayers); + m_pMaxPlayers->SetSliderRange(2, 16); + m_pMaxPlayers->SetSliderIncrement(1); + m_pMaxPlayers->SetNumericDisplay(LTTRUE); + + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + CLTGUIToggle* pToggle = AddToggle(IDS_FRIENDLY_FIRE,IDS_FRIENDLY_FIRE_HELP,kColumn,&m_bFriendlyFire); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + CLTGUISlider* pSlider = AddSlider(IDS_RUN_SPEED, IDS_RUN_SPEED_HELP, kColumn, kSlider, -1, &m_nRunSpeed); + pSlider->SetSliderRange(100, kMaxRunSpeed); + pSlider->SetSliderIncrement(10); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider( IDS_ROUNDS, IDS_ROUNDS_HELP, kColumn, kSlider, -1, &m_nRounds ); + pSlider->SetSliderRange( 2, kMaxRounds ); + pSlider->SetSliderIncrement( 2 ); + pSlider->SetNumericDisplay( LTTRUE ); + + pSlider = AddSlider(IDS_FRAG_SCORE, IDS_FRAG_SCORE_HELP, kColumn, kSlider, -1, &m_nFragScore); + pSlider->SetSliderRange(0,3); + pSlider->SetSliderIncrement(1); + pSlider->SetNumericDisplay(LTTRUE); + + pToggle = AddToggle(IDS_WEAPONSSTAY, IDS_WEAPONSSTAY_HELP, kColumn,&m_bWeaponsStay); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +// Change in focus +void CScreenHostDemolitionOptions::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + m_nMaxPlayers = (int)pProfile->m_ServerGameOptions.GetDemolition().m_nMaxPlayers; + m_nRunSpeed = (int)pProfile->m_ServerGameOptions.GetDemolition().m_nRunSpeed; + m_nRounds = (int)pProfile->m_ServerGameOptions.GetDemolition().m_nRounds; + m_bFriendlyFire = pProfile->m_ServerGameOptions.GetDemolition().m_bFriendlyFire; + + m_nFragScore = (int)pProfile->m_ServerGameOptions.GetDemolition().m_nFragScore; +/* + m_pTeam1Name->SetString(pProfile->m_ServerGameOptions.GetDemolition().m_sTeamName[0].c_str()); + m_pTeam2Name->SetString(pProfile->m_ServerGameOptions.GetDemolition().m_sTeamName[1].c_str()); +*/ + m_pMaxPlayers->Enable(!g_pPlayerMgr->IsPlayerInWorld()); + + m_bWeaponsStay = pProfile->m_ServerGameOptions.GetDemolition().m_bWeaponsStay; + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + pProfile->m_ServerGameOptions.GetDemolition().m_nMaxPlayers = (uint8)m_nMaxPlayers; + pProfile->m_ServerGameOptions.GetDemolition().m_nRunSpeed = (uint8)m_nRunSpeed; + pProfile->m_ServerGameOptions.GetDemolition().m_nRounds = (uint8)m_nRounds; + pProfile->m_ServerGameOptions.GetDemolition().m_bFriendlyFire = !!m_bFriendlyFire; + pProfile->m_ServerGameOptions.GetDemolition().m_bWeaponsStay = !!m_bWeaponsStay; + + pProfile->m_ServerGameOptions.GetDemolition().m_nFragScore = (uint8)m_nFragScore; + + pProfile->Save(); + + if (g_pPlayerMgr->IsPlayerInWorld()) + { + CAutoMessage cMsg; + cMsg.Writeuint8( MID_MULTIPLAYER_OPTIONS ); + pProfile->m_ServerGameOptions.GetDemolition().Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + } + CBaseScreen::OnFocus(bFocus); +} + + + +uint32 CScreenHostDemolitionOptions::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_TEAM1: + { + g_nCurTeam = 0; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + case CMD_TEAM2: + { + g_nCurTeam = 1; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + diff --git a/Jack/ClientShellDLL/ScreenHostDemolitionOptions.h b/Jack/ClientShellDLL/ScreenHostDemolitionOptions.h new file mode 100644 index 00000000..6054bef4 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostDemolitionOptions.h @@ -0,0 +1,54 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostDemolitionOptions.h +// +// PURPOSE : Interface screen for hosting multi player demolition games +// +// (c) 1999-2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef __SCREENHOSTDEMOLITIONOPTIONS_H__ +#define __SCREENHOSTDEMOLITIONOPTIONS_H__ + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHostDemolitionOptions : public CBaseScreen +{ +public: + CScreenHostDemolitionOptions(); + virtual ~CScreenHostDemolitionOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + + +protected: + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + int m_nMaxPlayers; + int m_nRunSpeed; + int m_nRounds; + LTBOOL m_bFriendlyFire; + + int m_nFragScore; + + LTBOOL m_bWeaponsStay; + + + CLTGUISlider* m_pMaxPlayers; + CLTGUITextCtrl* m_pTeam1; + CLTGUITextCtrl* m_pTeam2; + CLTGUITextCtrl* m_pTeam1Name; + CLTGUITextCtrl* m_pTeam2Name; + +}; + +#endif // _SCREEN_HOST_DM_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostLevels.cpp b/Jack/ClientShellDLL/ScreenHostLevels.cpp new file mode 100644 index 00000000..6a7c4bb2 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostLevels.cpp @@ -0,0 +1,457 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostLevels.cpp +// +// PURPOSE : Interface screen for choosing levels for a hosted game +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostLevels.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "VarTrack.h" +#include "NetDefs.h" +#include "profileMgr.h" +#include "clientmultiplayermgr.h" +#include "WinUtil.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + + +namespace +{ + uint8 nListFontSize = 12; + int nAvailWidth = 0; + int nSelWidth = 0; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostLevels::CScreenHostLevels() +{ + m_pAvailMissions = LTNULL; + m_pSelMissions = LTNULL; + m_pAdd = LTNULL; + m_pRemove = LTNULL; + m_pAddAll = LTNULL; + m_pRemoveAll = LTNULL; + +} + +CScreenHostLevels::~CScreenHostLevels() +{ + Term(); +} + +// Build the screen +LTBOOL CScreenHostLevels::Build() +{ + LTIntPt addPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"AddPos"); + LTIntPt removePos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"RemovePos"); + LTIntPt commandPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"CommandPos"); + + if (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,"ListFontSize")) + nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + + CreateTitle(IDS_TITLE_HOST_MISSIONS); + + m_pAdd = AddTextItem(IDS_HOST_ADD_MISSION, CMD_ADD_LEVEL, IDS_HELP_ADD_MISSION, addPos, LTTRUE); + + m_pAddAll = AddTextItem(IDS_HOST_ADD_ALL, CMD_ADD_ALL, IDS_HELP_ADD_ALL, commandPos); + m_pRemoveAll = AddTextItem(IDS_HOST_REMOVE_ALL, CMD_REMOVE_ALL, IDS_HELP_REM_ALL); + + m_pRemove = AddTextItem(IDS_HOST_REMOVE_MISSION, CMD_REMOVE_LEVEL, IDS_HELP_REM_MISSION, removePos, LTTRUE); + + + LTRect rcAvailRect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"AvailRect"); + int nListHeight = (rcAvailRect.bottom - rcAvailRect.top); + nAvailWidth = (rcAvailRect.right - rcAvailRect.left); + + m_pAvailMissions = AddList(LTIntPt(rcAvailRect.left,rcAvailRect.top),nListHeight,LTTRUE,nAvailWidth); + m_pAvailMissions->SetIndent(LTIntPt(5,5)); + m_pAvailMissions->SetFrameWidth(2); + m_pAvailMissions->SetScrollWrap(LTFALSE); + + LTRect rcSelRect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"SelectRect"); + nListHeight = (rcSelRect.bottom - rcSelRect.top); + nSelWidth = (rcSelRect.right - rcSelRect.left); + + m_pSelMissions = AddList(LTIntPt(rcSelRect.left,rcSelRect.top),nListHeight,LTTRUE,nSelWidth); + m_pSelMissions->SetIndent(LTIntPt(5,5)); + m_pSelMissions->SetFrameWidth(2); + m_pSelMissions->SetScrollWrap(LTFALSE); + + m_nextPos.y += nListHeight; + uint16 nListWidth = nSelWidth-16; + + + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + + + + return LTTRUE; + +} + +void CScreenHostLevels::Escape() +{ + CBaseScreen::Escape(); +} + + + +uint32 CScreenHostLevels::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_BACK: + { + m_pScreenMgr->EscapeCurrentScreen(); + break; + } + + case CMD_ADD_LEVEL: + { + char sMission[256] = ""; + + if (m_pAvailMissions->GetSelectedIndex() >= 0 && (m_pSelMissions->GetNumControls() < MAX_GAME_LEVELS)) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pAvailMissions->GetSelectedControl(); + if (pCtrl) + { + AddMissionToList(pCtrl->GetParam1()); + m_pSelMissions->ClearSelection(); + } + } + + UpdateButtons(); + } break; + case CMD_ADD_ALL: + { + if (m_pAvailMissions->GetNumControls()) + { + for (int i = 0; i < m_pAvailMissions->GetNumControls() && (m_pSelMissions->GetNumControls() < MAX_GAME_LEVELS); i++) + { + char sMission[256] = ""; + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pAvailMissions->GetControl(i); + if (pCtrl) + { + AddMissionToList(pCtrl->GetParam1()); + } + } + } + m_pSelMissions->ClearSelection(); + UpdateButtons(); + } break; + case CMD_REMOVE_LEVEL: + { + int nIndex = m_pSelMissions->GetSelectedIndex(); + if (nIndex >= 0) + { + m_pSelMissions->ClearSelection(); + m_pSelMissions->RemoveControl(nIndex); + int numLeft = m_pSelMissions->GetNumControls(); + if (numLeft > 0) + { + if (nIndex >= numLeft) + nIndex = numLeft-1; + m_pSelMissions->SetSelection(nIndex); + } + } + UpdateButtons(); + + } break; + case CMD_REMOVE_ALL: + { + if (m_pSelMissions->GetNumControls() > 0) + { + m_pSelMissions->ClearSelection(); + m_pSelMissions->RemoveAll(); + } + UpdateButtons(); + } break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenHostLevels::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + m_sCampaignFile = GetCampaignFile( pUserProfile->m_ServerGameOptions ); + + if(!CWinUtil::FileExist( m_sCampaignFile.c_str() ) ) + { + //TODO handle more cleanly + g_pLTClient->CPrint("Could not load campaign file %s.", m_sCampaignFile.c_str() ); + m_sCampaignFile = ""; + } + + + + FillAvailList(); + + LoadMissionList(); + + if (!m_pSelMissions->GetNumControls()) + { + MakeDefaultMissionList(); + } + + m_bLoopMissions = LTTRUE; + + UpdateButtons(); + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + if (m_sCampaignFile.length()) + { + SaveMissionList(); + } + m_pAvailMissions->RemoveAll(); + m_pSelMissions->RemoveAll(); + } + CBaseScreen::OnFocus(bFocus); + +} + +LTBOOL CScreenHostLevels::FillAvailList() +{ + // Sanity checks... + + if (!m_pAvailMissions) return(LTFALSE); + + + for (int nMission = 0; nMission < g_pMissionButeMgr->GetNumMissions(); nMission++) + { + MISSION* pMission = g_pMissionButeMgr->GetMission(nMission); + if (pMission) + { + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); + + bool bAdd = false; + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + bAdd = true; + break; + case eGameTypeDemolition: + if (strnicmp(szWorldTitle,"DE_",3) == 0) + { + bAdd = true; + } + break; + case eGameTypeDoomsDay: + if (strnicmp(szWorldTitle,"DD_",3) == 0) + { + bAdd = true; + } + break; + default: + bAdd = false; + break; + } + + + if (bAdd) + { + CLTGUITextCtrl *pCtrl = NULL; + if (pMission->nNameId > 0) + pCtrl = CreateTextItem(LoadTempString(pMission->nNameId),CMD_ADD_LEVEL,pMission->nDescId); + else if (!pMission->sName.empty()) + pCtrl = CreateTextItem((char *)pMission->sName.c_str(),CMD_ADD_LEVEL,pMission->nDescId); + else + { + pCtrl = CreateTextItem(szWorldTitle,CMD_ADD_LEVEL,0); + } + pCtrl->SetFont(LTNULL,nListFontSize); + pCtrl->SetParam1(nMission); + pCtrl->SetFixedWidth(nAvailWidth,LTTRUE); + m_pAvailMissions->AddControl(pCtrl); + + } + } + } + + + return (LTTRUE); +} + +void CScreenHostLevels::LoadMissionList() +{ + // Sanity checks... + + if (!m_pSelMissions) return; + + char szString[256]; + CWinUtil::WinGetPrivateProfileString( "MissionList", "LoopMissions", "0", szString, ARRAY_LEN( szString ), m_sCampaignFile.c_str()); + + m_bLoopMissions = ( atoi(szString) > 0 ); + + char szKey[64]; + uint8 numMissions = 0; + do + { + sprintf(szKey,"Mission%d",numMissions); + CWinUtil::WinGetPrivateProfileString( "MissionList", szKey, "", szString, ARRAY_LEN( szString ), m_sCampaignFile.c_str()); + if (strlen(szString)) + { + int nMissionId = atoi(szString); + AddMissionToList(nMissionId); + numMissions++; + } + + } while (strlen(szString)); + +} + +void CScreenHostLevels::MakeDefaultMissionList() +{ + // Sanity checks... + + if (!m_pAvailMissions) return; + if (!m_pSelMissions) return; + + for (int nMission = 0; nMission < g_pMissionButeMgr->GetNumMissions(); nMission++) + { + MISSION *pMission = g_pMissionButeMgr->GetMission(nMission); + if (pMission) + { + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + if (strnicmp(szWorldTitle,"DM_",3) == 0 || + strnicmp(szWorldTitle,"DE_",3) == 0 ) + { + AddMissionToList(nMission); + } + break; + case eGameTypeDemolition: + if (strnicmp(szWorldTitle,"DE_",3) == 0) + { + AddMissionToList(nMission); + } + break; + case eGameTypeDoomsDay: + if (strnicmp(szWorldTitle,"DD_",3) == 0) + { + AddMissionToList(nMission); + } + break; + default: + AddMissionToList(nMission); + break; + } + } + + } + +} + +void CScreenHostLevels::SaveMissionList() +{ + // Sanity checks... + + if (!m_pSelMissions) return; + + remove(m_sCampaignFile.c_str()); + + char szString[256]; + char szNum[4]; + + sprintf(szNum, "%d", (m_bLoopMissions ? 1 : 0) ); + CWinUtil::WinWritePrivateProfileString( "MissionList", "LoopMissions", szNum, m_sCampaignFile.c_str()); + + CWinUtil::WinWritePrivateProfileString( "MissionList", "MissionSourceFile", g_pMissionButeMgr->GetAttributeFile(), m_sCampaignFile.c_str()); + + for (int n = 0; n < m_pSelMissions->GetNumControls(); n++) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pSelMissions->GetControl(n); + if (pCtrl) + { + sprintf(szString,"Mission%d",n); + sprintf(szNum,"%d",pCtrl->GetParam1()); + CWinUtil::WinWritePrivateProfileString( "MissionList", szString, szNum, m_sCampaignFile.c_str()); + } + } + + // Flush the file. + CWinUtil::WinWritePrivateProfileString( NULL, NULL, NULL, m_sCampaignFile.c_str()); +} + + + + +void CScreenHostLevels::UpdateButtons() +{ + m_pAddAll->Enable( m_pSelMissions->GetNumControls() < MAX_GAME_LEVELS && m_pAvailMissions->GetNumControls() > 0); + m_pRemoveAll->Enable(m_pSelMissions->GetNumControls() > 0); + +} + +void CScreenHostLevels::AddMissionToList(int nMissionId) +{ + // Sanity checks... + + if (!m_pSelMissions) return; + if (m_pSelMissions->GetNumControls() == MAX_GAME_LEVELS) return; + + + // Add the level to the list... + + MISSION *pMission = g_pMissionButeMgr->GetMission(nMissionId); + + if (pMission) + { + + CLTGUITextCtrl *pCtrl = NULL; + if (pMission->nNameId > 0) + pCtrl = CreateTextItem(LoadTempString(pMission->nNameId),CMD_REMOVE_LEVEL,pMission->nDescId); + else if (!pMission->sName.empty()) + pCtrl = CreateTextItem((char *)pMission->sName.c_str(),CMD_REMOVE_LEVEL,pMission->nDescId); + else + { + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); + pCtrl = CreateTextItem(szWorldTitle,CMD_REMOVE_LEVEL,0); + } + pCtrl->SetFont(LTNULL,nListFontSize); + pCtrl->SetParam1(nMissionId); + pCtrl->SetFixedWidth(nSelWidth,LTTRUE); + m_pSelMissions->AddControl(pCtrl); + + } + else + { + ASSERT(!"Invalid mission id"); + } + +} + diff --git a/Jack/ClientShellDLL/ScreenHostLevels.h b/Jack/ClientShellDLL/ScreenHostLevels.h new file mode 100644 index 00000000..337aa109 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostLevels.h @@ -0,0 +1,55 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostLevels.h +// +// PURPOSE : Interface screen for choosing levels for a hosted game +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_HOST_LEVELS_H_ +#define _SCREEN_HOST_LEVELS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + + +class CScreenHostLevels : public CBaseScreen +{ +public: + CScreenHostLevels(); + virtual ~CScreenHostLevels(); + + // Build the screen + LTBOOL Build(); + void Escape(); + + void OnFocus(LTBOOL bFocus); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + LTBOOL FillAvailList(); + void LoadMissionList(); + void MakeDefaultMissionList(); + void SaveMissionList(); + void AddMissionToList(int nMissionId); + void UpdateButtons(); + + CLTGUITextCtrl* m_pAdd; + CLTGUITextCtrl* m_pRemove; + CLTGUITextCtrl* m_pAddAll; + CLTGUITextCtrl* m_pRemoveAll; + CLTGUIListCtrl* m_pAvailMissions; + CLTGUIListCtrl* m_pSelMissions; + + + std::string m_sCampaignFile; + LTBOOL m_bLoopMissions; +}; + +#endif // _SCREEN_HOST_LEVELS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostMission.cpp b/Jack/ClientShellDLL/ScreenHostMission.cpp new file mode 100644 index 00000000..e3c00606 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostMission.cpp @@ -0,0 +1,677 @@ +// ScreenHostMission.cpp: implementation of the CScreenHostMission class. +// +////////////////////////////////////////////////////////////////////// +#include "stdafx.h" +#include "ScreenHostMission.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "NetDefs.h" +#include "profileMgr.h" +#include "clientmultiplayermgr.h" +#include "WinUtil.h" +#include + +#include "GameClientShell.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +namespace +{ + std::string sOldFN; + + LTBOOL bCreate = LTFALSE; + + void DeleteCallBack(LTBOOL bReturn, void *pData) + { + CScreenHostMission *pThisScreen = (CScreenHostMission *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST_MISSION); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_DELETE); + } + void CreateCallBack(LTBOOL bReturn, void *pData) + { + CScreenHostMission *pThisScreen = (CScreenHostMission *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST_MISSION); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_CREATE); + } + void LoadCallBack(LTBOOL bReturn, void *pData) + { + CScreenHostMission *pThisScreen = (CScreenHostMission *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST_MISSION); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_LOAD); + } + void EditCallBack(LTBOOL bReturn, void *pData) + { + CScreenHostMission *pThisScreen = (CScreenHostMission *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_HOST_MISSION); + if (bReturn && pThisScreen) + { + pThisScreen->SendCommand(CMD_EDIT,(uint32)pData,0); + } + }; + + int kDlgHt = 240; + int kDlgWd = 240; + uint32 nCommand = 0; + uint8 nListFont = 1; + uint8 nListFontSz = 14; + +} + +CScreenHostMission::CScreenHostMission() +{ + m_pCurrent = LTNULL; + m_pLoad = LTNULL; + m_pDelete = LTNULL; + m_pRename = LTNULL; + m_pLevels = LTNULL; + +} + +CScreenHostMission::~CScreenHostMission() +{ +} + +// Build the screen +LTBOOL CScreenHostMission::Build() +{ + // Set the title's text + CreateTitle(IDS_TITLE_HOST_CAMPAIGN); + + // Get edit controls position and create it. + LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"MissionNamePos"); + m_pCurrent = AddTextItem(" ", LTNULL, LTNULL, pos, LTTRUE); + + AddTextItem(IDS_CREATE, CMD_CREATE, IDS_HELP_CAMPAIGN_CREATE); + + AddTextItem(IDS_LOAD, CMD_LOAD, IDS_HELP_CAMPAIGN_LOAD); + + m_pRename = AddTextItem(IDS_RENAME, CMD_RENAME, IDS_HELP_CAMPAIGN_RENAME); + + m_pDelete = AddTextItem(IDS_DELETE, CMD_DELETE, IDS_HELP_CAMPAIGN_DELETE); + + m_pLevels = AddTextItem(IDS_HOST_MISSIONS, CMD_SET_LEVELS, IDS_HELP_HOST_MISSIONS); + + + + LTIntPt dlgPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogPos"); + LTIntPt dlgSz = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogSize"); + kDlgHt = dlgSz.y; + kDlgWd = dlgSz.x; + uint8 nDlgFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontFace"); + uint8 nDlgFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontSize"); + + nListFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontFace"); + nListFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + + char szBack[128] = ""; + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,"DialogFrame",szBack,sizeof(szBack)); + + m_pDlg = debug_new(CLTGUIWindow); + m_pDlg->Create(g_pInterfaceResMgr->GetTexture(szBack),kDlgHt,kDlgWd); + + LTIntPt tmp(8,8); + CUIFont *pFont = g_pInterfaceResMgr->GetFont(nDlgFont); + + CLTGUITextCtrl *pCtrl = CreateTextItem(IDS_CAMPAIGN_LIST, LTNULL, LTNULL, kDefaultPos, LTTRUE); + pCtrl->SetFont(pFont,nDlgFontSz); + m_pDlg->AddControl(pCtrl, tmp); + + tmp.y += 24; + + + // Make a list controller + m_pListCtrl = debug_new(CLTGUIListCtrl); + if (m_pListCtrl->Create(kDlgHt-64)) + { + HTEXTURE hUp = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup.dtx"); + HTEXTURE hUpH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup_h.dtx"); + HTEXTURE hDown = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn.dtx"); + HTEXTURE hDownH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn_h.dtx"); + m_pListCtrl->UseArrows(kDlgWd-48,1.0f,hUp,hUpH,hDown,hDownH); + m_pListCtrl->SetIndent(LTIntPt(4,4)); + m_pListCtrl->SetFrameWidth(2); + m_pListCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + + m_pDlg->AddControl(m_pListCtrl, tmp); + + } + + pCtrl = CreateTextItem(IDS_CANCEL, CMD_CANCEL, LTNULL); + pCtrl->SetFont(pFont,nDlgFontSz); + tmp.x = (kDlgWd - pCtrl->GetBaseWidth()) / 2; + tmp.y = (kDlgHt - pCtrl->GetBaseHeight()) - 8; + m_pDlg->AddControl(pCtrl, tmp); + + + m_pDlg->SetBasePos(dlgPos); + m_pDlg->SetScale(g_pInterfaceResMgr->GetXRatio()); + m_pDlg->Show(LTFALSE); + + m_pDlg->SetSelection(1); + AddControl(m_pDlg); + + UseBack(LTTRUE); + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenHostMission::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch (dwCommand) + { + case CMD_OK: + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + HandleDlgCommand(nCommand,(uint16)dwParam1); + SetSelection(1); + } + break; + case CMD_CANCEL: + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + SetSelection(1); + } + break; + + case CMD_SET_LEVELS: + { + + if (m_pProfile->m_ServerGameOptions.IsDefaultCampaign() ) + return 0; + else + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_LEVELS); + } + } + break; + + + case CMD_LOAD: + { + m_pDefaultTextCtrl->Show(LTTRUE); + m_pListCtrl->SetStartIndex(0); + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_CONFIRM: + { + uint16 nIndex = (uint16)dwParam1; + if (dwParam2 == CMD_DELETE) + { + if (nIndex != m_nDefaultCampaign && nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_CampaignList.begin(); + for (int i = 0; i < nIndex && iter != m_CampaignList.end(); ++i, ++iter); + + if (iter != m_CampaignList.end()) + { + DeleteCampaign(*iter); + + } + } + } + else if (dwParam2 == CMD_LOAD) + { + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_CampaignList.begin(); + for (int i = 0; i < nIndex && iter != m_CampaignList.end(); ++i, ++iter); + + if (iter != m_CampaignList.end()) + { + SetCampaignName( (*iter).c_str()); + } + + } + } + else if (dwParam2 == CMD_CREATE) + { + m_sOldCampaign = m_pProfile->m_ServerGameOptions.GetCampaignName(); + std::string sNew = m_sOldCampaign; + if (sNew.compare(DEFAULT_CAMPAIGN) == 0) + sNew = m_pProfile->m_sName; + bCreate = LTTRUE; + + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCallBack; + mb.pString = sNew.c_str(); + mb.nMaxChars = MAX_PROFILE_NAME; + mb.eInput = CLTGUIEditCtrl::kInputFileFriendly; + g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_CAMPAIGN_NAME,&mb); + } + } + break; + case CMD_DELETE: + { + m_pDefaultTextCtrl->Show(LTFALSE); + m_pListCtrl->SetStartIndex(0); + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_CREATE: + { + if (g_pLTClient->IsConnected()) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = CreateCallBack, + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_NEWPROFILE,&mb); + } + else + SendCommand(CMD_CONFIRM,0,CMD_CREATE); + } + break; + case CMD_RENAME: + { + m_pDefaultTextCtrl->Show(LTFALSE); + m_pListCtrl->SetStartIndex(0); + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_EDIT: + { + std::string campaignName = (char *)dwParam1; + + StringSet::iterator iter = m_CampaignList.find(campaignName); + if (iter != m_CampaignList.end()) + campaignName = (*iter); + + if (bCreate) + { + NewCampaign(campaignName); + } + else + { + RenameCampaign(sOldFN,campaignName); + } + + } + break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + + return 1; +}; + +void CScreenHostMission::Escape() +{ + if (m_pDlg->IsVisible()) + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + else + CBaseScreen::Escape(); +} + +LTBOOL CScreenHostMission::OnLButtonUp(int x, int y) +{ + return CBaseScreen::OnLButtonUp(x,y); +} + +LTBOOL CScreenHostMission::OnRButtonUp(int x, int y) +{ + return CBaseScreen::OnRButtonUp(x,y); +} + +void CScreenHostMission::CreateCampaignList() +{ + // Empty the list + m_pListCtrl->RemoveAll(); + m_CampaignList.clear(); + + CUIFont *pFont = g_pInterfaceResMgr->GetFont(nListFont); + + m_CampaignList.insert(DEFAULT_CAMPAIGN); + + // Get new stuff + struct _finddata_t file; + long hFile; + + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + std::string directory = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), + pUserProfile->m_ServerGameOptions.m_eGameType ); + directory += "*.txt"; + + // find first file + if((hFile = _findfirst(directory.c_str(), &file)) != -1L) + { + do + { + if (_stricmp(file.name,DEFAULT_CAMPAIGN_FILE) != 0) + { + char *pName = strtok(file.name,"."); + m_CampaignList.insert(pName); + } + + } + while(_findnext(hFile, &file) == 0); + } + _findclose(hFile); + + // add campaigns to the list control + for (StringSet::iterator iter = m_CampaignList.begin(); iter != m_CampaignList.end(); ++iter) + { + CLTGUITextCtrl* pTextCtrl = NULL; + uint16 ndx = 0; + if (iter->compare(DEFAULT_CAMPAIGN) == 0) + { + m_pDefaultTextCtrl = CreateTextItem(IDS_HOST_CAMPAIGN_DEFAULT, CMD_OK, LTNULL); + ndx = m_pListCtrl->AddControl(m_pDefaultTextCtrl); + m_nDefaultCampaign = ndx; + m_pDefaultTextCtrl->Show(LTFALSE); + m_pDefaultTextCtrl->SetParam1(ndx); + m_pDefaultTextCtrl->SetFont(pFont,nListFontSz); + } + else + { + pTextCtrl = CreateTextItem((char *)iter->c_str(), CMD_OK, LTNULL); + pTextCtrl->SetFont(pFont,nListFontSz); + ndx = m_pListCtrl->AddControl(pTextCtrl); + pTextCtrl->SetParam1(ndx); + } + + + + + if (iter->compare(m_pProfile->m_ServerGameOptions.GetCampaignName()) == 0) + m_pListCtrl->SetSelection(ndx); + } + +} + +void CScreenHostMission::UpdateCampaignName() +{ + bool isDefault = (m_pProfile->m_ServerGameOptions.IsDefaultCampaign()); + if (!isDefault) + { + char const* pszCampaignFile = GetCampaignFile( m_pProfile->m_ServerGameOptions ); + + if (!CWinUtil::FileExist( pszCampaignFile )) + { + m_pProfile->m_ServerGameOptions.SetCampaignName(DEFAULT_CAMPAIGN); + isDefault = true; + } + } + + + + if (isDefault) + { + char szTmp[64]; + LoadString(IDS_HOST_CAMPAIGN_DEFAULT,szTmp,sizeof(szTmp)); + m_pCurrent->SetString(FormatTempString(IDS_CURRENT_CAMPAIGN,szTmp)); + m_pLevels->Enable(false); + } + else + { + m_pCurrent->SetString(FormatTempString(IDS_CURRENT_CAMPAIGN,m_pProfile->m_ServerGameOptions.GetCampaignName())); + m_pLevels->Enable(true); + } +} + +void CScreenHostMission::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + m_eGameType = g_pGameClientShell->GetGameType(); + UpdateCampaignName(); + CreateCampaignList(); + } + CBaseScreen::OnFocus(bFocus); +} + + + +void CScreenHostMission::HandleDlgCommand(uint32 dwCommand, uint16 nIndex) +{ + switch (dwCommand) + { + case CMD_LOAD: + { + m_sOldCampaign = m_pProfile->m_ServerGameOptions.GetCampaignName(); + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_CampaignList.begin(); + for (int i = 0; i < nIndex && iter != m_CampaignList.end(); ++i, ++iter); + + if (iter != m_CampaignList.end()) + { + std::string sCampaign = *iter; + if (g_pLTClient->IsConnected() && stricmp(sCampaign.c_str(),m_pProfile->m_ServerGameOptions.GetCampaignName()) != 0) + { + + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = LoadCallBack, + mb.pData = (void *)nIndex; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_NEWPROFILE,&mb); + } + else + SendCommand(CMD_CONFIRM,nIndex,CMD_LOAD); + + } + } + } + break; + case CMD_DELETE: + { + if (nIndex != m_nDefaultCampaign) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = DeleteCallBack, + mb.pData = (void *)nIndex; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_DELETE,&mb); + } + } + break; + case CMD_RENAME: + m_sOldCampaign = m_pProfile->m_ServerGameOptions.GetCampaignName(); + if (nIndex != m_nDefaultCampaign && nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_CampaignList.begin(); + for (int i = 0; i < nIndex && iter != m_CampaignList.end(); ++i, ++iter); + + if (iter != m_CampaignList.end()) + { + std::string sCampaign = *iter; + sOldFN = sCampaign; + bCreate = LTFALSE; + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCallBack; + mb.pString = sCampaign.c_str(); + mb.nMaxChars = 16; + mb.eInput = CLTGUIEditCtrl::kInputFileFriendly; + g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_CAMPAIGN_NAME,&mb); + } + } + break; + } + +}; + + +void CScreenHostMission::DeleteCampaign(const std::string& campaignName) +{ + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + std::string fn = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), + pUserProfile->m_ServerGameOptions.m_eGameType ); + fn += campaignName; + fn += ".txt"; + + + remove(fn.c_str()); + + + if (stricmp(campaignName.c_str(),m_pProfile->m_ServerGameOptions.GetCampaignName()) == 0) + { + SetCampaignName(DEFAULT_CAMPAIGN); + } + + CreateCampaignList(); + +} + +void CScreenHostMission::NewCampaign(const std::string& campaignName) +{ + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + std::string fn = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), + pUserProfile->m_ServerGameOptions.m_eGameType ); + + if( !CWinUtil::DirExist( fn.c_str( ))) + { + if( !CWinUtil::CreateDir( fn.c_str( ))) + { + //TODO: error message + return; + } + } + + + fn += campaignName; + fn += ".txt"; + + if (CWinUtil::FileExist(fn.c_str())) + { + MBCreate mb; + mb.eType = LTMB_OK; + g_pInterfaceMgr->ShowMessageBox(IDS_CAMPAIGN_EXISTS,&mb); + return; + } + + + char szString[256]; + char szNum[4]; + + CWinUtil::WinWritePrivateProfileString( "MissionList", "LoopMissions", "0", fn.c_str()); + + CWinUtil::WinWritePrivateProfileString( "MissionList", "MissionSourceFile", g_pMissionButeMgr->GetAttributeFile(), fn.c_str()); + + uint16 nCount = 0; + bool bAdd =false; + for (int n = 0; n < g_pMissionButeMgr->GetNumMissions(); n++) + { + MISSION *pMission = g_pMissionButeMgr->GetMission(n); + if (pMission) + { + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); + + bAdd = false; + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeDeathmatch: + case eGameTypeTeamDeathmatch: + if (strnicmp(szWorldTitle,"DM_",3) == 0 || + strnicmp(szWorldTitle,"DE_",3) == 0 ) + { + bAdd = true; + } + break; + case eGameTypeDemolition: + if (strnicmp(szWorldTitle,"DE_",3) == 0) + { + bAdd = true; + } + break; + case eGameTypeDoomsDay: + if (strnicmp(szWorldTitle,"DD_",3) == 0) + { + bAdd = true; + } + break; + default: + bAdd = true; + break; + } + + if (bAdd) + { + sprintf(szString,"Mission%d",nCount); + sprintf(szNum,"%d",n); + CWinUtil::WinWritePrivateProfileString( "MissionList", szString, szNum, fn.c_str()); + nCount++; + } + } + } + + // Flush the file. + CWinUtil::WinWritePrivateProfileString( NULL, NULL, NULL, fn.c_str()); + + SetCampaignName(campaignName.c_str()); + + CreateCampaignList(); + + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_HOST_LEVELS); + + +} + +void CScreenHostMission::RenameCampaign(const std::string& oldName,const std::string& newName) +{ + if (!newName.length()) return; + + + CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); + char const* pszCampaignDir = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), + pUserProfile->m_ServerGameOptions.m_eGameType ); + std::string ofn = pszCampaignDir; + ofn += oldName; + ofn += ".txt"; + + std::string nfn = pszCampaignDir; + nfn += newName; + nfn += ".txt"; + + + if (CWinUtil::FileExist(nfn.c_str())) + { + MBCreate mb; + mb.eType = LTMB_OK; + g_pInterfaceMgr->ShowMessageBox(IDS_CAMPAIGN_EXISTS,&mb); + return; + } + + + rename(ofn.c_str(),nfn.c_str()); + + if (oldName.compare(m_pProfile->m_ServerGameOptions.GetCampaignName()) == 0) + { + SetCampaignName(newName.c_str()); + } + + CreateCampaignList(); + + +} + + +void CScreenHostMission::SetCampaignName(const char* newName) +{ + if (stricmp(m_pProfile->m_ServerGameOptions.GetCampaignName(),newName) == 0) + return; + + m_pProfile->m_ServerGameOptions.SetCampaignName(newName); + + UpdateCampaignName(); + +}; diff --git a/Jack/ClientShellDLL/ScreenHostMission.h b/Jack/ClientShellDLL/ScreenHostMission.h new file mode 100644 index 00000000..fcbd88ca --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostMission.h @@ -0,0 +1,65 @@ +// ScreenHostMission.h: interface for the ScreenHostMission class. +// +////////////////////////////////////////////////////////////////////// + +#ifndef SCREEN_HOST_MISSION_H +#define SCREEN_HOST_MISSION_H + + +#include "BaseScreen.h" +#include "ProfileMgr.h" + + +#pragma warning (disable : 4503) +#pragma warning( disable : 4786 ) +#include +#include + + +class CScreenHostMission : public CBaseScreen +{ +public: + + CScreenHostMission(); + virtual ~CScreenHostMission(); + + // Build the screen + LTBOOL Build(); + + virtual uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void Escape(); + void OnFocus(LTBOOL bFocus); + LTBOOL OnRButtonUp(int x, int y); + LTBOOL OnLButtonUp(int x, int y); + +private: + void HandleDlgCommand(uint32 dwCommand, uint16 nIndex); + void CreateCampaignList(); + void UpdateCampaignName(); + void DeleteCampaign(const std::string& campaignName); + void NewCampaign(const std::string& campaignName); + void RenameCampaign(const std::string& oldName,const std::string& newName); + void SetCampaignName(const char* newName); + + std::string m_sOldCampaign; + + CLTGUITextCtrl *m_pCurrent; + CLTGUITextCtrl *m_pLoad; + CLTGUITextCtrl *m_pDelete; + CLTGUITextCtrl *m_pRename; + CLTGUITextCtrl *m_pLevels; + CLTGUITextCtrl *m_pDefaultTextCtrl; + + + StringSet m_CampaignList; + CLTGUIListCtrl* m_pListCtrl; + CLTGUIWindow* m_pDlg; + + CUserProfile* m_pProfile; + + uint16 m_nDefaultCampaign; + GameType m_eGameType; + +}; + +#endif // SCREEN_HOST_MISSION_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostOptions.cpp b/Jack/ClientShellDLL/ScreenHostOptions.cpp new file mode 100644 index 00000000..bfb45649 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostOptions.cpp @@ -0,0 +1,122 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostOptions.cpp +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "ResShared.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostOptions::CScreenHostOptions() +{ + m_nMaxPlayers = 4; + m_bUseSkills = LTTRUE; + m_bFriendlyFire = LTFALSE; + m_nDifficulty = 0; + + m_pMaxPlayers = NULL; +} + + +CScreenHostOptions::~CScreenHostOptions() +{ +} + +// Build the screen +LTBOOL CScreenHostOptions::Build() +{ + int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_OPTIONS,"ColumnWidth"); + int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_OPTIONS,"SliderWidth"); + + CreateTitle(IDS_TITLE_HOST_OPTIONS); + + m_pMaxPlayers = AddSlider(IDS_MAX_PLAYERS, IDS_MAX_PLAYERS_HELP, kColumn, kSlider, -1, &m_nMaxPlayers); + m_pMaxPlayers->SetSliderRange(1, 4); + m_pMaxPlayers->SetSliderIncrement(1); + m_pMaxPlayers->SetNumericDisplay(LTTRUE); + + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + CLTGUIToggle* pToggle = AddToggle(IDS_FRIENDLY_FIRE,IDS_FRIENDLY_FIRE_HELP,kColumn,&m_bFriendlyFire); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + CLTGUICycleCtrl *pCycle = AddCycle(IDS_DIFFICULTY,IDS_HELP_DIFFICULTY,kColumn,&m_nDifficulty); + pCycle->AddString(LoadTempString(IDS_NEW_EASY)); + pCycle->AddString(LoadTempString(IDS_NEW_MEDIUM)); + pCycle->AddString(LoadTempString(IDS_NEW_HARD)); + pCycle->AddString(LoadTempString(IDS_NEW_INSANE)); + + CLTGUISlider* pSlider = AddSlider(IDS_HOST_PLAYERDIFF, IDS_HELP_HOST_PLAYERDIFF, kColumn, kSlider, -1, &m_nPlayerDiff); + pSlider->SetSliderRange(0, 20); + pSlider->SetSliderIncrement(2); + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +// Change in focus +void CScreenHostOptions::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + + m_nMaxPlayers = (int)pProfile->m_ServerGameOptions.GetCoop().m_nMaxPlayers; + m_bUseSkills = pProfile->m_ServerGameOptions.GetCoop().m_bUseSkills; + m_bFriendlyFire = pProfile->m_ServerGameOptions.GetCoop().m_bFriendlyFire; + m_nDifficulty = pProfile->m_ServerGameOptions.GetCoop().m_nDifficulty; + m_nPlayerDiff = (int)(100.0f * pProfile->m_ServerGameOptions.GetCoop().m_fPlayerDiffFactor); + + + m_pMaxPlayers->Enable(!g_pPlayerMgr->IsPlayerInWorld()); + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + pProfile->m_ServerGameOptions.GetCoop().m_nMaxPlayers = (uint8)m_nMaxPlayers; + pProfile->m_ServerGameOptions.GetCoop().m_bUseSkills = !!m_bUseSkills; + pProfile->m_ServerGameOptions.GetCoop().m_bFriendlyFire = !!m_bFriendlyFire; + pProfile->m_ServerGameOptions.GetCoop().m_nDifficulty = m_nDifficulty; + pProfile->m_ServerGameOptions.GetCoop().m_fPlayerDiffFactor = (float)m_nPlayerDiff / 100.0f; + + pProfile->Save(); + + if (g_pPlayerMgr->IsPlayerInWorld()) + { + CAutoMessage cMsg; + cMsg.Writeuint8( MID_MULTIPLAYER_OPTIONS ); + cMsg.Writebool( pProfile->m_ServerGameOptions.GetCoop().m_bFriendlyFire ); + cMsg.Writeuint8( pProfile->m_ServerGameOptions.GetCoop().m_nDifficulty = m_nDifficulty ); + cMsg.Writefloat( pProfile->m_ServerGameOptions.GetCoop().m_fPlayerDiffFactor ); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + } + CBaseScreen::OnFocus(bFocus); +} + diff --git a/Jack/ClientShellDLL/ScreenHostOptions.h b/Jack/ClientShellDLL/ScreenHostOptions.h new file mode 100644 index 00000000..7f47206e --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostOptions.h @@ -0,0 +1,49 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostOptions.h +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +//3 +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_HOST_OPTIONS_H_ +#define _SCREEN_HOST_OPTIONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHostOptions : public CBaseScreen +{ +public: + CScreenHostOptions(); + virtual ~CScreenHostOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + + +protected: + + +protected: +// uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + LTBOOL m_bUseSkills; + int m_nMaxPlayers; + LTBOOL m_bFriendlyFire; + uint8 m_nDifficulty; + int m_nPlayerDiff; + + CLTGUISlider* m_pMaxPlayers; +}; + +#endif // _SCREEN_HOST_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostTDMOptions.cpp b/Jack/ClientShellDLL/ScreenHostTDMOptions.cpp new file mode 100644 index 00000000..2fc641e2 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostTDMOptions.cpp @@ -0,0 +1,208 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostTDMOptions.cpp +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostTDMOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "ResShared.h" + +namespace +{ + const int kMaxScoreLimit = 200; + const int kMaxTimeLimit = 60; + const int kMaxRunSpeed = 150; + const int kMaxRounds = 20; + + const uint32 CMD_TEAM1 = CMD_CUSTOM+1; + const uint32 CMD_TEAM2 = CMD_CUSTOM+2; +} + +extern uint8 g_nCurTeam; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostTDMOptions::CScreenHostTDMOptions() +{ + m_nMaxPlayers = 8; + m_nRunSpeed = 130; + m_nScoreLimit = 25; + m_nTimeLimit = 10; + m_nRounds = 1; + m_bFriendlyFire = LTFALSE; + + m_nFragScore = 1; + + m_pMaxPlayers = NULL; + m_bWeaponsStay = false; +} + + +CScreenHostTDMOptions::~CScreenHostTDMOptions() +{ +} + +// Build the screen +LTBOOL CScreenHostTDMOptions::Build() +{ + int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"ColumnWidth"); + int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_HOST_DM_OPTIONS,"SliderWidth"); + + CreateTitle(IDS_TITLE_HOST_OPTIONS); + + m_pTeam1 = AddTextItem(IDS_TEAM_1_OPTIONS, CMD_TEAM1, IDS_HELP_TEAM_1); + m_pTeam2 = AddTextItem(IDS_TEAM_2_OPTIONS, CMD_TEAM2, IDS_HELP_TEAM_2); +/* + LTIntPt tmp = m_nextPos; + + LTIntPt pos = m_pTeam1->GetBasePos(); + pos.x += kColumn; + m_pTeam1Name = AddTextItem("",0,0,pos,LTTRUE); + + pos = m_pTeam2->GetBasePos(); + pos.x += kColumn; + m_pTeam2Name = AddTextItem("",0,0,pos,LTTRUE); + + m_nextPos = tmp; +*/ + m_pMaxPlayers = AddSlider(IDS_MAX_PLAYERS, IDS_MAX_PLAYERS_HELP, kColumn, kSlider, -1, &m_nMaxPlayers); + m_pMaxPlayers->SetSliderRange(2, 16); + m_pMaxPlayers->SetSliderIncrement(1); + m_pMaxPlayers->SetNumericDisplay(LTTRUE); + + + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + CLTGUIToggle* pToggle = AddToggle(IDS_FRIENDLY_FIRE,IDS_FRIENDLY_FIRE_HELP,kColumn,&m_bFriendlyFire); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + CLTGUISlider* pSlider = AddSlider(IDS_RUN_SPEED, IDS_RUN_SPEED_HELP, kColumn, kSlider, -1, &m_nRunSpeed); + pSlider->SetSliderRange(100, kMaxRunSpeed); + pSlider->SetSliderIncrement(10); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_FRAG_LIMIT, IDS_FRAG_LIMIT_HELP, kColumn, kSlider, -1, &m_nScoreLimit); + pSlider->SetSliderRange(0,kMaxScoreLimit); + pSlider->SetSliderIncrement(10); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider(IDS_TIME_LIMIT, IDS_TIME_LIMIT_HELP, kColumn, kSlider, -1, &m_nTimeLimit); + pSlider->SetSliderRange(0,kMaxTimeLimit); + pSlider->SetSliderIncrement(5); + pSlider->SetNumericDisplay(LTTRUE); + + pSlider = AddSlider( IDS_ROUNDS, IDS_ROUNDS_HELP, kColumn, kSlider, -1, &m_nRounds ); + pSlider->SetSliderRange( 1, kMaxRounds ); + pSlider->SetSliderIncrement( 1 ); + pSlider->SetNumericDisplay( LTTRUE ); + +// pSlider = AddSlider(IDS_FRAG_SCORE, IDS_FRAG_SCORE_HELP, kColumn, kSlider, -1, &m_nFragScore); +// pSlider->SetSliderRange(0,3); +// pSlider->SetSliderIncrement(1); +// pSlider->SetNumericDisplay(LTTRUE); + + pToggle = AddToggle(IDS_WEAPONSSTAY, IDS_WEAPONSSTAY_HELP, kColumn,&m_bWeaponsStay); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +// Change in focus +void CScreenHostTDMOptions::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if (bFocus) + { + + m_nMaxPlayers = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nMaxPlayers; + m_nRunSpeed = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRunSpeed; + m_nScoreLimit = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nScoreLimit; + m_nTimeLimit = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTimeLimit; + m_nRounds = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRounds; + m_bFriendlyFire = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bFriendlyFire; + +// m_nFragScore = (int)pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nFragScore; +/* + m_pTeam1Name->SetString(pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sTeamName[0].c_str()); + m_pTeam2Name->SetString(pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sTeamName[1].c_str()); +*/ + m_pMaxPlayers->Enable(!g_pPlayerMgr->IsPlayerInWorld()); + + m_bWeaponsStay = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bWeaponsStay; + + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nMaxPlayers = (uint8)m_nMaxPlayers; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRunSpeed = (uint8)m_nRunSpeed; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nScoreLimit = (uint8)m_nScoreLimit; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTimeLimit = (uint8)m_nTimeLimit; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nRounds = (uint8)m_nRounds; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bFriendlyFire = !!m_bFriendlyFire; + +// pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nFragScore = (uint8)m_nFragScore; + + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_bWeaponsStay = !!m_bWeaponsStay; + + pProfile->Save(); + + if (g_pPlayerMgr->IsPlayerInWorld()) + { + + CAutoMessage cMsg; + cMsg.Writeuint8( MID_MULTIPLAYER_OPTIONS ); + pProfile->m_ServerGameOptions.GetTeamDeathmatch().Write(cMsg); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + } + CBaseScreen::OnFocus(bFocus); +} + + + +uint32 CScreenHostTDMOptions::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_TEAM1: + { + g_nCurTeam = 0; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + case CMD_TEAM2: + { + g_nCurTeam = 1; + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_TEAM); + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + diff --git a/Jack/ClientShellDLL/ScreenHostTDMOptions.h b/Jack/ClientShellDLL/ScreenHostTDMOptions.h new file mode 100644 index 00000000..c694fed5 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostTDMOptions.h @@ -0,0 +1,59 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostTDMOptions.h +// +// PURPOSE : Interface screen for hosting multi player games +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +//3 +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_HOST_TDM_OPTIONS_H_ +#define _SCREEN_HOST_TDM_OPTIONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "NetDefs.h" + +class CScreenHostTDMOptions : public CBaseScreen +{ +public: + CScreenHostTDMOptions(); + virtual ~CScreenHostTDMOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + + +protected: + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + int m_nMaxPlayers; + int m_nRunSpeed; + int m_nScoreLimit; + int m_nTimeLimit; + int m_nRounds; + LTBOOL m_bFriendlyFire; + + int m_nFragScore; + + LTBOOL m_bWeaponsStay; + + CLTGUISlider* m_pMaxPlayers; + CLTGUITextCtrl* m_pTeam1; + CLTGUITextCtrl* m_pTeam2; + CLTGUITextCtrl* m_pTeam1Name; + CLTGUITextCtrl* m_pTeam2Name; + +}; + +#endif // _SCREEN_HOST_DM_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenHostWeapons.cpp b/Jack/ClientShellDLL/ScreenHostWeapons.cpp new file mode 100644 index 00000000..b19f9c67 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostWeapons.cpp @@ -0,0 +1,505 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostWeapons.cpp +// +// PURPOSE : Interface screen for choosing levels for a hosted game +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenHostWeapons.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "VarTrack.h" +#include "NetDefs.h" +#include "profileMgr.h" +#include "clientmultiplayermgr.h" +#include "WinUtil.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + + +namespace +{ + uint8 nListFontSize = 12; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenHostWeapons::CScreenHostWeapons() +{ + m_pAvailItems = LTNULL; + m_pSelItems = LTNULL; + m_pAdd = LTNULL; + m_pRemove = LTNULL; + m_pRemoveAll = LTNULL; +} + +CScreenHostWeapons::~CScreenHostWeapons() +{ + Term(); +} + +// Build the screen +LTBOOL CScreenHostWeapons::Build() +{ + LTIntPt addPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"AddPos"); + LTIntPt removePos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"RemovePos"); + LTIntPt commandPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"CommandPos"); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + + if (g_pLayoutMgr->HasCustomValue((eScreenID)m_nScreenID,"ListFontSize")) + nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + + CreateTitle(IDS_TITLE_HOST_WEAPONS); + + m_pAdd = AddTextItem(IDS_HOST_ADD_WEAPON, CMD_ADD_LEVEL, IDS_HELP_ADD_WEAPONS, addPos,LTTRUE); + addPos.y -= (nFontSize + m_nItemSpacing); + AddTextItem(IDS_ALLOWED_WEAPONS,NULL,NULL,addPos,LTTRUE); + + m_pRemoveAll = AddTextItem(IDS_HOST_REMOVE_ALL, CMD_REMOVE_ALL, IDS_HELP_REM_ALL_WPNS, commandPos); + + m_pRemove = AddTextItem(IDS_HOST_REMOVE_WEAPON, CMD_REMOVE_LEVEL, IDS_HELP_REM_WEAPONS, removePos,LTTRUE); + removePos.y -= (nFontSize + m_nItemSpacing); + AddTextItem(IDS_DISABLED_WEAPONS,NULL,NULL,removePos,LTTRUE); + + + LTRect rcAvailRect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"AvailRect"); + int nListHeight = (rcAvailRect.bottom - rcAvailRect.top); + int nListWidth = (rcAvailRect.right - rcAvailRect.left) - 32; + + m_pAvailItems = AddList(LTIntPt(rcAvailRect.left,rcAvailRect.top),nListHeight,LTTRUE,nListWidth); + m_pAvailItems->SetIndent(LTIntPt(5,5)); + m_pAvailItems->SetFrameWidth(2); + m_pAvailItems->SetScrollWrap(LTFALSE); + + LTRect rcSelRect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"SelectRect"); + nListHeight = (rcSelRect.bottom - rcSelRect.top); + nListWidth = (rcSelRect.right - rcSelRect.left) - 32; + + m_pSelItems = AddList(LTIntPt(rcSelRect.left,rcSelRect.top),nListHeight,LTTRUE,nListWidth); + m_pSelItems->SetIndent(LTIntPt(5,5)); + m_pSelItems->SetFrameWidth(2); + m_pSelItems->SetScrollWrap(LTFALSE); + + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + + + + return LTTRUE; + +} + +void CScreenHostWeapons::Escape() +{ + CBaseScreen::Escape(); +} + + + +uint32 CScreenHostWeapons::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_BACK: + { + m_pScreenMgr->EscapeCurrentScreen(); + break; + } + + case CMD_ADD_LEVEL: + { + { + char sWeapon[256] = ""; + + if (m_pAvailItems->GetSelectedIndex() >= 0 ) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pAvailItems->GetSelectedControl(); + if (pCtrl) + { + AddItemToList(pCtrl->GetParam1(),true,(eItemTypes)pCtrl->GetParam2()); + int nIndex = m_pAvailItems->GetSelectedIndex(); + if (nIndex >= 0) + { + m_pAvailItems->ClearSelection(); + m_pAvailItems->RemoveControl(nIndex); + int numLeft = m_pAvailItems->GetNumControls(); + if (numLeft > 0) + { + if (nIndex >= numLeft) + nIndex = numLeft-1; + m_pAvailItems->SetSelection(nIndex); + } + + } + } + } + + UpdateButtons(); + } + } break; + case CMD_ADD_ALL: + { + if (m_pAvailItems->GetNumControls()) + { + for (int i = 0; i < m_pAvailItems->GetNumControls(); i++) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pAvailItems->GetControl(i); + if (pCtrl) + { + AddItemToList(pCtrl->GetParam1(),true,(eItemTypes)pCtrl->GetParam2()); + } + } + } + m_pAvailItems->RemoveAll(); + m_pSelItems->ClearSelection(); + UpdateButtons(); + } break; + case CMD_REMOVE_LEVEL: + { + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pSelItems->GetSelectedControl(); + if (pCtrl) + { + AddItemToList(pCtrl->GetParam1(),false,(eItemTypes)pCtrl->GetParam2()); + int nIndex = m_pSelItems->GetSelectedIndex(); + if (nIndex >= 0) + { + m_pSelItems->ClearSelection(); + m_pSelItems->RemoveControl(nIndex); + int numLeft = m_pSelItems->GetNumControls(); + if (numLeft > 0) + { + if (nIndex >= numLeft) + nIndex = numLeft-1; + m_pSelItems->SetSelection(nIndex); + } + } + + } + UpdateButtons(); + } + + } break; + case CMD_REMOVE_ALL: + { + if (m_pSelItems->GetNumControls()) + { + for (int i = 0; i < m_pSelItems->GetNumControls(); i++) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pSelItems->GetControl(i); + if (pCtrl) + { + AddItemToList(pCtrl->GetParam1(),false,(eItemTypes)pCtrl->GetParam2()); + } + } + } + m_pSelItems->RemoveAll(); + m_pAvailItems->ClearSelection(); + UpdateButtons(); + } break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenHostWeapons::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + + FillAvailList(); + + LoadItemList(); + + if (!m_pSelItems->GetNumControls()) + { + MakeDefaultItemList(); + } + + UpdateButtons(); + UpdateData(LTFALSE); + + } + else + { + UpdateData(); + + SaveItemList(); + + m_pAvailItems->RemoveAll(); + m_pSelItems->RemoveAll(); + } + CBaseScreen::OnFocus(bFocus); + +} + +LTBOOL CScreenHostWeapons::FillAvailList() +{ + // Sanity checks... + + if (!m_pAvailItems) return(LTFALSE); + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + // get first and last weapon indices + uint8 nFirstWeaponCommandId = g_pWeaponMgr->GetFirstWeaponCommandId(); + uint8 nLastWeaponCommandId = g_pWeaponMgr->GetLastWeaponCommandId(); + for (uint8 nWpnCommandId = nFirstWeaponCommandId; nWpnCommandId <= nLastWeaponCommandId; nWpnCommandId++) + { + uint8 nWpn = g_pWeaponMgr->GetWeaponId( nWpnCommandId); + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( nWpn ); + if (pWeapon && pWeapon->bCanServerRestrict && !pWeapon->bIsAmmo) + { + std::string sItem = pWeapon->szName; + StringSet::iterator iter = pProfile->m_ServerGameOptions.m_setRestrictedWeapons.find(sItem); + + if (iter == pProfile->m_ServerGameOptions.m_setRestrictedWeapons.end()) + AddItemToList(pWeapon->nId,false,kWeaponType); + } + } + + for (uint8 nId = 0; nId <= g_pWeaponMgr->GetNumAmmoIds(); nId++) + { + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo( nId ); + if (pAmmo && pAmmo->bCanServerRestrict) + { + std::string sItem = pAmmo->szName; + StringSet::iterator iter = pProfile->m_ServerGameOptions.m_setRestrictedAmmo.find(sItem); + + if (iter == pProfile->m_ServerGameOptions.m_setRestrictedAmmo.end()) + AddItemToList(pAmmo->nId,false,kAmmoType); + } + } + + for (nId = 0; nId <= g_pWeaponMgr->GetNumGearIds(); nId++) + { + GEAR const *pGear = g_pWeaponMgr->GetGear( nId ); + if (pGear && pGear->bCanServerRestrict) + { + std::string sItem = pGear->szName; + StringSet::iterator iter = pProfile->m_ServerGameOptions.m_setRestrictedGear.find(sItem); + + if (iter == pProfile->m_ServerGameOptions.m_setRestrictedGear.end()) + AddItemToList(pGear->nId,false,kGearType); + } + } + + + return (LTTRUE); +} + +void CScreenHostWeapons::LoadItemList() +{ + // Sanity checks... + + if (!m_pSelItems) return; + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + StringSet::iterator iter = pProfile->m_ServerGameOptions.m_setRestrictedWeapons.begin( ); + while( iter != pProfile->m_ServerGameOptions.m_setRestrictedWeapons.end( )) + { + std::string const& sValue = *iter; + iter++; + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( sValue.c_str( )); + + if(pWeapon && pWeapon->bCanServerRestrict ) + AddItemToList(pWeapon->nId,true,kWeaponType); + } + + iter = pProfile->m_ServerGameOptions.m_setRestrictedAmmo.begin( ); + while( iter != pProfile->m_ServerGameOptions.m_setRestrictedAmmo.end( )) + { + std::string const& sValue = *iter; + iter++; + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo( sValue.c_str( )); + + if(pAmmo && pAmmo->bCanServerRestrict ) + AddItemToList(pAmmo->nId,true,kAmmoType); + } + + iter = pProfile->m_ServerGameOptions.m_setRestrictedGear.begin( ); + while( iter != pProfile->m_ServerGameOptions.m_setRestrictedGear.end( )) + { + std::string const& sValue = *iter; + iter++; + + GEAR const *pGear = g_pWeaponMgr->GetGear( sValue.c_str( )); + + if(pGear && pGear->bCanServerRestrict ) + AddItemToList(pGear->nId,true,kGearType); + } +} + +void CScreenHostWeapons::MakeDefaultItemList() +{ + // Sanity checks... + + if (!m_pSelItems) return; + + m_pSelItems->RemoveAll(); + +} + +void CScreenHostWeapons::SaveItemList() +{ + // Sanity checks... + + if (!m_pSelItems) return; + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + pProfile->m_ServerGameOptions.m_setRestrictedWeapons.clear(); + pProfile->m_ServerGameOptions.m_setRestrictedAmmo.clear(); + pProfile->m_ServerGameOptions.m_setRestrictedGear.clear(); + + for (int n = 0; n < m_pSelItems->GetNumControls(); n++) + { + CLTGUITextCtrl *pCtrl = (CLTGUITextCtrl *)m_pSelItems->GetControl(n); + if (pCtrl) + { + switch (pCtrl->GetParam2()) + { + case kWeaponType: + { + int nWeaponId = pCtrl->GetParam1(); + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( nWeaponId ); + if (pWeapon && pWeapon->bCanServerRestrict) + { + std::string sItem = pWeapon->szName; + pProfile->m_ServerGameOptions.m_setRestrictedWeapons.insert(sItem); + } + } break; + case kAmmoType: + { + int nAmmoId = pCtrl->GetParam1(); + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo( nAmmoId ); + if (pAmmo && pAmmo->bCanServerRestrict) + { + std::string sItem = pAmmo->szName; + pProfile->m_ServerGameOptions.m_setRestrictedAmmo.insert(sItem); + } + } break; + case kGearType: + { + int nGearId = pCtrl->GetParam1(); + GEAR const *pGear = g_pWeaponMgr->GetGear( nGearId ); + if (pGear && pGear->bCanServerRestrict) + { + std::string sItem = pGear->szName; + pProfile->m_ServerGameOptions.m_setRestrictedGear.insert(sItem); + } + } break; + } + } + } + + pProfile->Save(); +} + + + + +void CScreenHostWeapons::UpdateButtons() +{ + m_pRemoveAll->Enable(m_pSelItems->GetNumControls() > 0); + +} + +void CScreenHostWeapons::AddItemToList(int nId, bool bSelected, eItemTypes eType) +{ + // Sanity checks... + + CLTGUIListCtrl* pList = m_pAvailItems; + uint32 nCmd = CMD_ADD_LEVEL; + uint32 nHelp = IDS_HELP_ADD_WEAPON; + + if (bSelected) + { + pList = m_pSelItems; + nCmd = CMD_REMOVE_LEVEL; + nHelp = IDS_HELP_REM_WEAPON; + } + + if (!pList) return; + + + switch (eType) + { + case kWeaponType: + { + // Add the weapon to the list... + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon( nId ); + if (pWeapon) + { + + CLTGUITextCtrl *pCtrl = NULL; + pCtrl = CreateTextItem(pWeapon->szLongName,nCmd,nHelp); + pCtrl->SetFont(LTNULL,nListFontSize); + pCtrl->SetParam1(nId); + pCtrl->SetParam2(eType); + pList->AddControl(pCtrl); + } + else + { + ASSERT(!"Invalid Weapon id"); + } + } break; + case kAmmoType: + { + // Add the ammo to the list... + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo( nId ); + if (pAmmo) + { + + CLTGUITextCtrl *pCtrl = NULL; + pCtrl = CreateTextItem(pAmmo->szLongName,nCmd,nHelp); + pCtrl->SetFont(LTNULL,nListFontSize); + pCtrl->SetParam1(nId); + pCtrl->SetParam2(eType); + pList->AddControl(pCtrl); + } + else + { + ASSERT(!"Invalid Ammo id"); + } + } break; + case kGearType: + { + // Add the Gear to the list... + GEAR const *pGear = g_pWeaponMgr->GetGear( nId ); + if (pGear) + { + + CLTGUITextCtrl *pCtrl = NULL; + pCtrl = CreateTextItem(LoadTempString(pGear->nNameId),nCmd,nHelp); + pCtrl->SetFont(LTNULL,nListFontSize); + pCtrl->SetParam1(nId); + pCtrl->SetParam2(eType); + pList->AddControl(pCtrl); + } + else + { + ASSERT(!"Invalid Gear id"); + } + } break; + } + +} + diff --git a/Jack/ClientShellDLL/ScreenHostWeapons.h b/Jack/ClientShellDLL/ScreenHostWeapons.h new file mode 100644 index 00000000..7aef9718 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenHostWeapons.h @@ -0,0 +1,59 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenHostWeapons.h +// +// PURPOSE : Interface screen for choosing levels for a hosted game +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREENHOSTWEAPONS_H_ +#define _SCREENHOSTWEAPONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + + +class CScreenHostWeapons : public CBaseScreen +{ +public: + CScreenHostWeapons(); + virtual ~CScreenHostWeapons(); + + // Build the screen + LTBOOL Build(); + void Escape(); + + void OnFocus(LTBOOL bFocus); + + +protected: + enum eItemTypes + { + kWeaponType, + kAmmoType, + kGearType, + }; + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + LTBOOL FillAvailList(); + void LoadItemList(); + void MakeDefaultItemList(); + void SaveItemList(); + void AddItemToList(int nId, bool bSelected, eItemTypes eType); + void UpdateButtons(); + + + CLTGUITextCtrl* m_pAdd; + CLTGUITextCtrl* m_pRemove; + CLTGUITextCtrl* m_pRemoveAll; + CLTGUIListCtrl* m_pAvailItems; + CLTGUIListCtrl* m_pSelItems; + +}; + +#endif // _SCREENHOSTWEAPONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenJoin.cpp b/Jack/ClientShellDLL/ScreenJoin.cpp new file mode 100644 index 00000000..df16a40c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenJoin.cpp @@ -0,0 +1,1781 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenJoin.cpp +// +// PURPOSE : Interface screen to search for and join LAN games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenJoin.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "ClientMultiplayerMgr.h" +#include "msgids.h" +#include "MissionMgr.h" +#include "ResShared.h" +#include "igamespy.h" +#include "GameClientShell.h" +#include + +void JoinCallBack(LTBOOL bReturn, void *pData); + +namespace +{ + int kColumnWidth_ServerName = 150; + int kColumnWidth_PlayerName = 225; + int kColumnWidth_Ping = 60; + int kColumnWidth_Players = 80; + int kColumnWidth_Lock = 25; + int kColumnWidth_Type = 60; + int kColumnWidth_Version = 245; + + enum eLocalCommands + { + CMD_SORT_NAME = CMD_CUSTOM+1, + CMD_SORT_PING, + CMD_SORT_PLAYER, + CMD_SORT_LOCK, + CMD_SORT_VERSION, + CMD_SORT_TYPE, + CMD_FILTER_VERSION, + CMD_FILTER_PLAYERS, + CMD_FILTER_PING, + CMD_FILTER_MOD, + CMD_FILTER_TYPE, + CMD_DETAILS, + + }; + + + void JoinConfirmationCallback(LTBOOL bReturn, void *pData) + { + CScreenJoin *pThisScreen = (CScreenJoin*)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_JOIN); + if (bReturn && pThisScreen) + { + pThisScreen->CheckPassword(); + } + } + void EditPassCallBack(LTBOOL bReturn, void *pData) + { + CScreenJoin *pThisScreen = (CScreenJoin *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_JOIN); + if (bReturn && pThisScreen) + { + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_PASS); + } + }; + + void EditPortCallBack(LTBOOL bReturn, void *pData) + { + CScreenJoin *pThisScreen = (CScreenJoin *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_JOIN); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_PORT); + }; +} + +struct SortedServerEntry +{ + TServerEntryMap::const_iterator m_mapIter; +}; +typedef std::vector< SortedServerEntry > SortedServerList; + +class CServerSortName +{ +public: + + bool operator()(const SortedServerEntry & x, const SortedServerEntry & y) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + return (stricmp( seX.m_sName.c_str(), seY.m_sName.c_str()) < 0 ); + } +}; +class CServerSortVersion +{ +public: + + bool operator()(const SortedServerEntry & x, const SortedServerEntry & y) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + // If the versions are different, then just compare those. + int nVersionCmp = stricmp(seX.m_sVersion.c_str(), seY.m_sVersion.c_str()); + if( nVersionCmp != 0 ) + return ( nVersionCmp < 0 ); + + // Versions are different, so it's up to the mod name to differentiate them. + return (stricmp( seX.m_sModName.c_str(), seY.m_sModName.c_str() ) < 0); + } +}; +class CServerSortPing +{ +public: + + bool operator()(const SortedServerEntry & x, const SortedServerEntry & y) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + return (seX.m_nPing < seY.m_nPing ); + } +}; + +class CServerSortPlayers +{ +public: + + bool operator()(const SortedServerEntry & x, const SortedServerEntry & y) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + return (seX.m_nNumPlayers < seY.m_nNumPlayers ); + } +}; + +class CServerSortLock +{ +public: + + bool operator()(const SortedServerEntry & x, const SortedServerEntry & y) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + return (seX.m_bUsePassword || !seY.m_bUsePassword ); + } +}; + +class CServerSortType +{ +public: + + bool operator()( const SortedServerEntry &x, const SortedServerEntry &y ) const + { + ServerEntry const& seX = x.m_mapIter->second; + ServerEntry const& seY = y.m_mapIter->second; + + return (seX.m_nGameType < seY.m_nGameType); + } +}; + +static void SortServers( TServerEntryMap const& serverEntryMap, uint32 nSortField, SortedServerList& lstSortedServers ) +{ + // Add the servers to a sortable vector. + lstSortedServers.resize( 0 ); + lstSortedServers.reserve( serverEntryMap.size( )); + SortedServerEntry sortedServerEntry; + for( TServerEntryMap::const_iterator iter = serverEntryMap.begin( ); iter != serverEntryMap.end( ); iter++ ) + { + sortedServerEntry.m_mapIter = iter; + lstSortedServers.push_back( sortedServerEntry ); + } + + switch(nSortField) + { + case CMD_SORT_NAME: + std::sort(lstSortedServers.begin(),lstSortedServers.end(),CServerSortName()); + break; + case CMD_SORT_PING: + std::sort(lstSortedServers.begin(),lstSortedServers.end(),CServerSortPing()); + break; + case CMD_SORT_PLAYER: + std::sort(lstSortedServers.begin(),lstSortedServers.end(),CServerSortPlayers()); + break; + case CMD_SORT_LOCK: + std::sort(lstSortedServers.begin(),lstSortedServers.end(),CServerSortLock()); + break; + case CMD_SORT_VERSION: + std::sort(lstSortedServers.begin(),lstSortedServers.end(),CServerSortVersion()); + break; + case CMD_SORT_TYPE: + std::sort( lstSortedServers.begin(), lstSortedServers.end(), CServerSortType() ); + break; + + default: + ASSERT(!"Unknown sort command."); + return; + + }; +} + + + +// ----------------------------------------------------------------------- // +// Function name : SetSummaryInfo +// Description : Sets the summary info on the column control. +// Return type : static bool - true on success. +// Argument : CLTGUIColumnCtrl& columnCtrl - column control to setup. +// Argument : char const* pszAddress - address of new server. +// Argument : ServerEntry const& serverEntry - serverentry to use. +// ----------------------------------------------------------------------- // +static bool SetSummaryInfo( CLTGUIColumnCtrl& columnCtrl, char const* pszAddress, ServerEntry const& serverEntry ) +{ + char aTempBuffer[256]; + CLTGUITextCtrl* pColumn = NULL; + + // Make sure we have all the columns. + if( columnCtrl.GetNumColumns( ) == 0 ) + { + columnCtrl.AddColumn( "", kColumnWidth_ServerName, LTTRUE ); + columnCtrl.AddColumn( "", kColumnWidth_Type, LTTRUE ); + columnCtrl.AddColumn( "", kColumnWidth_Ping, LTTRUE ); + columnCtrl.AddColumn( "", kColumnWidth_Players, LTTRUE ); + columnCtrl.AddColumn( "", kColumnWidth_Lock, LTTRUE ); + columnCtrl.AddColumn( "", kColumnWidth_Version, LTTRUE ); + } + + // Do the name + uint8 nColumnIndex = 0; + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( serverEntry.m_sName.c_str( )); + + + // Do the game type... + switch(serverEntry.m_nGameType) + { + case eGameTypeCooperative: + sprintf( aTempBuffer, "%s", LoadTempString(IDS_COOPERATIVE) ); + break; + case eGameTypeDeathmatch: + sprintf( aTempBuffer, "%s", LoadTempString(IDS_DEATHMATCH) ); + break; + case eGameTypeTeamDeathmatch: + sprintf( aTempBuffer, "%s", LoadTempString(IDS_TEAMDEATHMATCH) ); + break; + case eGameTypeDoomsDay: + sprintf( aTempBuffer, "%s", LoadTempString(IDS_DOOMSDAY) ); + break; + case eGameTypeDemolition: + sprintf( aTempBuffer, "%s", LoadTempString(IDS_DEMOLITION) ); + break; + default: + sprintf( aTempBuffer, "%s", LoadTempString( IDS_UNKNOWN ) ); + } + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( aTempBuffer); + + // Do the ping + sprintf(aTempBuffer, "%d", serverEntry.m_nPing); + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( aTempBuffer); + + // Do the number of players + sprintf(aTempBuffer, "%d/%d", serverEntry.m_nNumPlayers, serverEntry.m_nMaxPlayers); + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( aTempBuffer); + + if (serverEntry.m_bUsePassword) + { + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( "x" ); + } + else + { + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( " " ); + } + + + // Do the version + if (stricmp( serverEntry.m_sModName.c_str(), RETAIL_MOD_NAME ) == 0 ) + sprintf( aTempBuffer, "%s", serverEntry.m_sVersion.c_str() ); + else + sprintf( aTempBuffer, "%s, %s", serverEntry.m_sVersion.c_str(), serverEntry.m_sModName.c_str() ); + pColumn = columnCtrl.GetColumn( nColumnIndex++ ); + pColumn->SetString( aTempBuffer ); + + // If their version/mod is different than our version, gray it out. + bool bEnabled = true; + if( stricmp(serverEntry.m_sVersion.c_str(), g_pVersionMgr->GetNetVersion()) != 0) + { + bEnabled = false; + } + if( bEnabled && stricmp( serverEntry.m_sModName.c_str( ), g_pClientMultiplayerMgr->GetModName( )) != 0) + { + bEnabled = false; + } + columnCtrl.Enable( bEnabled ); + + // Remember where we came from + columnCtrl.SetParam1( reinterpret_cast< uint32 >( pszAddress )); + + return true; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenJoin::CScreenJoin() : + m_eCurState ( eState_Inactive ), + m_nLastSort ( CMD_SORT_PING ), + m_nVersionFilter ( 0 ), + m_nPlayersFilter ( 0 ), + m_nPingFilter ( 0 ), + m_nModFilter ( 0 ), + m_eUpdateDirState ( eUpdateDirState_Idle ), + m_pServerListCtrl ( NULL ) +{ + +} + +CScreenJoin::~CScreenJoin() +{ + if( m_bInit ) + Term( ); +} + +// Build the screen +LTBOOL CScreenJoin::Build() +{ + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + CreateTitle(IDS_TITLE_JOIN); + + //read layout info ----------------------------------------------- + uint8 headerFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"HeaderFontSize"); + LTRect serverRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_JOIN,"ServerRect"); + + int totalwidth = serverRect.right - serverRect.left; + kColumnWidth_Version = totalwidth; + + kColumnWidth_ServerName = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"NameWidth"); + kColumnWidth_Version -= kColumnWidth_ServerName; + + kColumnWidth_Type = g_pLayoutMgr->GetScreenCustomInt( SCREEN_ID_JOIN, "TypeWidth" ); + kColumnWidth_Version -= kColumnWidth_Type; + + kColumnWidth_Ping = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"PingWidth"); + kColumnWidth_Version -= kColumnWidth_Ping; + + kColumnWidth_Players = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"PlayerWidth"); + kColumnWidth_Version -= kColumnWidth_Players; + + kColumnWidth_Lock = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"LockWidth"); + kColumnWidth_Version -= kColumnWidth_Lock; + + ASSERT(kColumnWidth_Version > 0); + if (kColumnWidth_Version <= 0) kColumnWidth_Version = 50; + + + //find servers button ----------------------------------------------- + LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_JOIN,"FindPos"); + m_pFindCtrl = AddTextItem(IDS_FIND_SERVERS,CMD_SEARCH,IDS_HELP_FIND_SERVERS,pos); + m_pFindCtrl->Enable(LTFALSE); + m_pFindCtrl->SetFont(NULL,headerFontSize); + + // server sort buttons ----------------------------------------------- + pos.x = serverRect.left; + pos.y = serverRect.top; + + CLTGUITextCtrl* pCtrl = AddTextItem(IDS_SERVER_NAME,CMD_SORT_NAME,IDS_HELP_SERVER_NAME,pos); + pCtrl->SetFont(NULL,headerFontSize); + pos.x += kColumnWidth_ServerName; + + pCtrl = AddTextItem( IDS_GAME_TYPE, CMD_SORT_TYPE, IDS_HELP_SERVER_TYPE, pos ); + pCtrl->SetFont( NULL, headerFontSize ); + pos.x += kColumnWidth_Type; + + pCtrl = AddTextItem(IDS_SERVER_PING,CMD_SORT_PING,IDS_HELP_SERVER_PING,pos); + pCtrl->SetFont(NULL,headerFontSize); + pos.x += kColumnWidth_Ping; + + pCtrl = AddTextItem(IDS_SERVER_PLAYERS,CMD_SORT_PLAYER,IDS_HELP_SERVER_PLAYERS,pos); + pCtrl->SetFont(NULL,headerFontSize); + pos.x += kColumnWidth_Players; + + pCtrl = AddTextItem(IDS_SERVER_LOCKED,CMD_SORT_LOCK,0,pos,LTTRUE); + pCtrl->SetFont(NULL,headerFontSize); + pCtrl->Enable(LTFALSE); + pos.x += kColumnWidth_Lock; + + pCtrl = AddTextItem(IDS_SERVER_VERSION,CMD_SORT_VERSION,IDS_HELP_SERVER_VERSION,pos); + pCtrl->SetFont(NULL,headerFontSize); + + // server list ----------------------------------------------- + pos.x = serverRect.left; + pos.y += headerFontSize + 4; + uint16 height = serverRect.bottom - pos.y; + m_pServerListCtrl = AddList(pos,height,LTTRUE,totalwidth); + m_pServerListCtrl->SetScrollWrap(LTFALSE); + m_pServerListCtrl->SetFrameWidth(2); + m_pServerListCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_DisabledColor); + m_pServerListCtrl->SetIndent(2); + + // filter buttons ----------------------------------------------- + pos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_JOIN,"BaseFilterPos"); + pCtrl = AddTextItem(IDS_SERVER_FILTERS,NULL,0,pos,LTTRUE); + pCtrl->SetFont(NULL,headerFontSize); + int kFilterNameWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"FilterNameWidth"); + + // Temporarily set the item spacing for the filter controls... + + int nOldSpacing = GetItemSpacing(); + int nFilterSpacing = g_pLayoutMgr->GetScreenCustomInt( SCREEN_ID_JOIN, "FilterItemSpacing" ); + SetItemSpacing( nFilterSpacing ); + + m_pPort = AddColumnCtrl(CMD_EDIT_PORT, IDS_HELP_ENTER_PORT); + int kPortColumnWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"PortColumnWidth"); + m_pPort->AddColumn( LoadTempString( IDS_SCANLANPORTS ), kPortColumnWidth); + SAFE_STRCPY(m_szPort,"27888"); + m_pPort->AddColumn(m_szPort, kPortColumnWidth, LTTRUE); + + CLTGUICycleCtrl* pCycle = AddCycle( IDS_VERSION_FILTER,IDS_HELP_VERSION_FILTER,kFilterNameWidth, &m_nVersionFilter); + pCycle->NotifyOnChange(CMD_FILTER_VERSION,this); + pCycle->AddString(LoadTempString(IDS_ALL_VERSIONS)); + pCycle->AddString(LoadTempString(IDS_CURRENT_VERSION)); + + pCycle = AddCycle(IDS_POP_FILTER,IDS_HELP_POP_FILTER,kFilterNameWidth,&m_nPlayersFilter); + pCycle->NotifyOnChange(CMD_FILTER_PLAYERS,this); + pCycle->AddString(LoadTempString(IDS_FILTER_ALLPOP)); + pCycle->AddString(LoadTempString(IDS_FILTER_NOTEMPTY)); + pCycle->AddString(LoadTempString(IDS_FILTER_NOTFULL)); + pCycle->AddString(LoadTempString(IDS_FILTER_NOT_BOTH)); + + pCycle = AddCycle(IDS_FILTER_PING,IDS_HELP_FILTER_PING,kFilterNameWidth,&m_nPingFilter); + pCycle->NotifyOnChange(CMD_FILTER_PING,this); + pCycle->AddString(LoadTempString(IDS_FILTER_ALLPING)); + pCycle->AddString(LoadTempString(IDS_FILTER_LOWPING)); + pCycle->AddString(LoadTempString(IDS_FILTER_MEDPING)); + pCycle->AddString(LoadTempString(IDS_FILTER_HIGHPING)); + + // Reset the item spacing before the last filter control is added... + +/* + pCycle = AddCycle( IDS_FILTER_MOD, IDS_HELP_FILTER_MOD, kFilterNameWidth, &m_nModFilter); + pCycle->NotifyOnChange( CMD_FILTER_MOD, this ); + pCycle->AddString( LoadTempString(IDS_FILTER_ALLMODS) ); + pCycle->AddString( RETAIL_MOD_NAME ); + pCycle->AddString( LoadTempString(IDS_FILTER_CURRENTMOD) ); +*/ + + SetItemSpacing( nOldSpacing ); + + pCycle = AddCycle( IDS_FILTER_TYPE, IDS_HELP_FILTER_TYPE, kFilterNameWidth, &m_nTypeFilter); + pCycle->NotifyOnChange( CMD_FILTER_TYPE, this ); + pCycle->AddString( LoadTempString(IDS_ALL) ); + pCycle->AddString( LoadTempString(IDS_DEATHMATCH) ); + pCycle->AddString( LoadTempString(IDS_TEAMDEATHMATCH) ); + pCycle->AddString( LoadTempString(IDS_DOOMSDAY) ); + pCycle->AddString( LoadTempString(IDS_DEMOLITION) ); + + // status text ----------------------------------------------- +/* pos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_JOIN,"StatusPos"); + char szTmp[256] = ""; + LoadString(IDS_WAITING,szTmp,sizeof(szTmp)); + m_pStatusCtrl = AddTextItem(FormatTempString(IDS_STATUS_STRING,szTmp), 0, 0, pos, LTTRUE); +*/ + // "please wait" popup window ----------------------------------------------- + uint8 nFont = g_pLayoutMgr->GetDialogFontFace(); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetDialogFontSize(); + + CLTGUITextCtrl* pText = debug_new(CLTGUITextCtrl); + if (!pText->Create(LoadTempString(IDS_QUERYING), NULL, LTNULL, pFont, nFontSize, this)) + { + debug_delete(pText); + return LTFALSE; + } + pText->SetColors(argbBlack, argbBlack, argbBlack); + pText->Enable(LTFALSE); + + uint16 w = 16+pText->GetBaseWidth(); + uint16 h = 16+pText->GetBaseHeight(); + + + m_pWait = debug_new(CLTGUIWindow); + char szBack[128] = ""; + g_pLayoutMgr->GetDialogFrame(szBack,sizeof(szBack)); + m_pWait->Create(g_pInterfaceResMgr->GetTexture(szBack),w,h); + uint16 x = (640-w)/2; + uint16 y = (480-h)/2; + m_pWait->SetBasePos(LTIntPt(x,y)); + AddControl(m_pWait); + + m_pWait->AddControl(pText,LTIntPt(8,8)); + + + + // details popup window ----------------------------------------------- + LTRect detailsRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_JOIN,"DetailsRect"); + uint8 optionFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"OptionsFontSize"); + uint16 optionHeight = (uint16)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOIN,"OptionsHeight"); + pos.x = detailsRect.left; + pos.y = detailsRect.top; + uint16 nDetailsWidth = detailsRect.right-detailsRect.left; + uint16 nDetailsHeight = detailsRect.bottom-detailsRect.top; + + m_pDetails = debug_new(CLTGUIWindow); + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_JOIN,"DetailsFrame",szBack,sizeof(szBack)); + m_pDetails->Create(g_pInterfaceResMgr->GetTexture(szBack),nDetailsWidth,nDetailsHeight); + m_pDetails->SetBasePos(pos); + AddControl(m_pDetails); + + pos.x = 8; + pos.y = 8; + + + CLTGUITextCtrl* pOption = CreateTextItem(IDS_HOST_OPTIONS,0,0,pos,LTTRUE); + pOption->SetFont(NULL,headerFontSize); + m_pDetails->AddControl(pOption,pos); + pos.y += (headerFontSize + 4); + + uint16 width = nDetailsWidth - 32; + kColumnWidth_PlayerName = width - kColumnWidth_Ping; + + m_pOptions = CreateTextItem(" ",0,0,pos,LTTRUE); + m_pOptions->SetFixedWidth(width); + m_pOptions->SetFont(NULL,optionFontSize); + m_pDetails->AddControl(m_pOptions,pos); + pos.y += (optionHeight + 4); + + pOption = CreateTextItem(IDS_SERVER_MAP,0,0,pos,LTTRUE); + pOption->SetFont(NULL,optionFontSize); + m_pDetails->AddControl(pOption,pos); + + LTIntPt tmp = pos; + tmp.x += pOption->GetBaseWidth(); + tmp.x += 16; + + m_pMission = CreateTextItem(IDS_SERVER_MISSION,0,0,pos,LTTRUE); + m_pMission->SetFont(NULL,optionFontSize); + m_pDetails->AddControl(m_pMission,tmp); + + pos.y += (optionFontSize + 4); + + CLTGUITextCtrl* pPlayer = CreateTextItem(IDS_SERVER_PLAYERS,0,0,pos,LTTRUE); + pPlayer->SetFont(NULL,headerFontSize); + m_pDetails->AddControl(pPlayer,pos); + pos.x += kColumnWidth_PlayerName; + + CLTGUITextCtrl* pPing = CreateTextItem(IDS_SERVER_PING,0,0,pos,LTTRUE); + pPing->SetFont(NULL,headerFontSize); + m_pDetails->AddControl(pPing,pos); + + pos.x = 8; + pos.y += (headerFontSize + 4); + height = nDetailsHeight - pos.y - headerFontSize - 2 * m_nItemSpacing; + + m_pPlayerListCtrl = CreateList(pos,height,LTTRUE,width); + m_pPlayerListCtrl->SetScrollWrap(LTFALSE); + m_pPlayerListCtrl->SetScrollByPage(LTTRUE); + m_pPlayerListCtrl->SetFrameWidth(1); + m_pPlayerListCtrl->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + m_pPlayerListCtrl->SetIndent(2); + m_pPlayerListCtrl->Enable(LTTRUE); + m_pDetails->AddControl(m_pPlayerListCtrl,pos); + + CLTGUITextCtrl* pCancel = CreateTextItem(IDS_CANCEL,CMD_CANCEL,0); + pCancel->SetFont(NULL,headerFontSize); + pos.y += (height + m_nItemSpacing); + m_pDetails->AddControl(pCancel,pos); + + m_pJoin = CreateTextItem(IDS_JOIN_GAME,CMD_JOIN,IDS_HELP_JOIN_GAME); + m_pJoin->SetFont(NULL,headerFontSize); + pos.x = (nDetailsWidth - 8) - m_pJoin->GetBaseWidth(); + + m_pDetails->AddControl(m_pJoin,pos); + + m_pDetails->Show(LTFALSE); + + return LTTRUE; +} + +uint32 CScreenJoin::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_SORT_NAME: + case CMD_SORT_PING: + case CMD_SORT_PLAYER: + case CMD_SORT_LOCK: + case CMD_SORT_VERSION: + case CMD_SORT_TYPE: + { + DisplayCurServerList( dwCommand ); + break; + } + + case CMD_FILTER_VERSION: + case CMD_FILTER_PING: + case CMD_FILTER_PLAYERS: + case CMD_FILTER_MOD: + case CMD_FILTER_TYPE: + { + UpdateData(); + FilterServers(); + break; + } + + case CMD_CANCEL : + { + m_pDetails->Show(LTFALSE); + SetCapture(NULL); + ChangeState(eState_Waiting); + break; + } + + case CMD_DETAILS : + { + char const* pszAddress = reinterpret_cast< char const* >( dwParam1 ); + if( !pszAddress || !pszAddress[0] ) + return 0; + + m_sSelectedServerAddress = pszAddress; + + ChangeState(eState_QueryDetails); + break; + } + + case CMD_SEARCH : + { + FindServers(); + break; + } + + case CMD_OK: + { + HandleCallback(dwParam1,dwParam2); + break; + } + case CMD_JOIN: + { + + m_pDetails->Show(LTFALSE); + SetCapture(LTNULL); + + TServerEntryMap::const_iterator iter = m_cServerMap.find(m_sSelectedServerAddress); + if( iter == m_cServerMap.end( )) + return 0; + std::string const& sPriavateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + if (stricmp(serverEntry.m_sVersion.c_str(), g_pVersionMgr->GetNetVersion( )) != 0) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_SERVER_WRONGVERSION,&mb); + return 1; + } + + if (serverEntry.m_nNumPlayers >= serverEntry.m_nMaxPlayers) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_SERVERFULL,&mb); + return 1; + } + + if( stricmp( serverEntry.m_sModName.c_str(), g_pClientMultiplayerMgr->GetModName() ) != 0 ) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox( IDS_SERVER_WRONGMOD, &mb ); + return 1; + } + + CheckPassword(); + + break; + } + case CMD_EDIT_PORT: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditPortCallBack; + mb.pString = m_szPort; + mb.nMaxChars = 5; + mb.eInput = CLTGUIEditCtrl::kInputNumberOnly; + g_pInterfaceMgr->ShowMessageBox(IDS_SCANLANPORTS,&mb); + } break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +} + +uint32 CScreenJoin::HandleCallback(uint32 dwParam1, uint32 dwParam2) +{ + switch (dwParam2) + { + case CMD_EDIT_PORT: + { + char *pszPort = (char *)dwParam1; + uint16 nPort = (uint16)atoi(pszPort); + if (IsValidPort(nPort)) + { + SAFE_STRCPY(m_szPort,pszPort); + m_pPort->SetString(1,m_szPort); + } + break; + } + case CMD_EDIT_PASS : + { + m_sPassword = (char *)dwParam1; + JoinCurGame(); + break; + } + } + ChangeState(eState_Waiting); + return 1; +} + + +// Change in focus +void CScreenJoin::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + // Update our state when the focus changes + if (bFocus) + { + m_pWait->Show(LTTRUE); + SetCapture(m_pWait); + + sprintf(m_szPort,"%d",pProfile->m_nClientPort); + m_pPort->GetColumn(1)->SetString(m_szPort); + + bool bCreatedBrowsers = false; + + if( !g_pClientMultiplayerMgr->GetRetailServerBrowser( ) || + !g_pClientMultiplayerMgr->GetDemoServerBrowser( )) + { + g_pClientMultiplayerMgr->CreateServerBrowsers( ); + bCreatedBrowsers = true; + } + + // Only do startup if the browsers haven't been created yet. + if( bCreatedBrowsers ) + ChangeState(eState_Startup); + else + ChangeState(eState_Waiting); + } + else + { + // Don't go! + ChangeState(eState_Inactive); + } + + if (bFocus) + { + + // we may have gotten here after failing a join, so rebuild our history + if (m_pScreenMgr->GetLastScreenID() == SCREEN_ID_NONE) + { + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_MAIN); + m_pScreenMgr->AddScreenToHistory(SCREEN_ID_MULTI); + } + + SetSelection(GetIndex(m_pFindCtrl)); + + UpdateData(LTFALSE); + } + else + { + pProfile->m_nClientPort = (uint16)atoi(m_szPort); + pProfile->Save(); + + UpdateData(); + } + + CBaseScreen::OnFocus(bFocus); +} + +void CScreenJoin::FindServers() +{ + // Don't allow a new find while the browsers are working. + if(( g_pClientMultiplayerMgr->GetRetailServerBrowser( )->GetBrowserStatus( ) == IGameSpyBrowser::eBrowserStatus_Processing ) || + g_pClientMultiplayerMgr->GetDemoServerBrowser( )->GetBrowserStatus( ) == IGameSpyBrowser::eBrowserStatus_Processing ) + return; + + ChangeState(eState_UpdateDir); +} + +void CScreenJoin::DisplayCurServerList( uint32 nSortField ) +{ + // Remove all the controls from the list, but don't delete them. + m_pServerListCtrl->RemoveAll( LTFALSE ); + + // Sort the servers. + SortedServerList lstSortedServers; + m_nLastSort = nSortField; + SortServers( m_cServerMap, nSortField, lstSortedServers ); + + uint16 nSelected = CLTGUIListCtrl::kNoSelection; + + SortedServerList::const_iterator iCurServer = lstSortedServers.begin(); + for (; iCurServer != lstSortedServers.end(); ++iCurServer) + { + std::string const& sPrivateAddress = iCurServer->m_mapIter->first; + ServerEntry const& serverEntry = iCurServer->m_mapIter->second; + + // Skip it if it the control is invalid. + if( !serverEntry.m_pColumnCtrl ) + { + ASSERT( !"CScreenJoin::DisplayCurServerList: Invalid column control." ); + continue; + } + + // Add the control. + uint16 nCtrlIndex = m_pServerListCtrl->AddControl( serverEntry.m_pColumnCtrl ); + + // If this is the server we had selected before, reselect it. + if( stricmp( sPrivateAddress.c_str( ), m_sSelectedServerAddress.c_str( )) == 0 ) + nSelected = nCtrlIndex; + } + +// m_pServerListCtrl->Enable( (m_pServerListCtrl->GetNumControls() > 0)); + m_pServerListCtrl->SetSelection(nSelected); + FilterServers(); +} + +void CScreenJoin::DisplayDetails() +{ + char aStringBuffer[256]; + m_pPlayerListCtrl->RemoveAll(); + + // Get the serverentry we are showing details for. + TServerEntryMap::const_iterator iter = m_cServerMap.find(m_sSelectedServerAddress); + if( iter == m_cServerMap.end( )) + return; + std::string const& sPrivateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + int nMission, nLevel; + std::string sMission = ""; + if(g_pMissionButeMgr->IsMissionLevel( serverEntry.m_sMission.c_str( ),nMission,nLevel)) + { + MISSION* pMission = g_pMissionButeMgr->GetMission(nMission); + if (pMission) + { + if (pMission->nNameId > 0) + sMission = LoadTempString(pMission->nNameId); + else if (!pMission->sName.empty()) + sMission = pMission->sName; + } + } + + if (sMission.empty()) + sMission = serverEntry.m_sMission.c_str( ); + + m_pMission->SetString(sMission.c_str()); + + //read game options and build the options string + std::string sOptions = ""; + sOptions.reserve(64); + char szOptionsString[256] = ""; + + LTStrCpy(szOptionsString,serverEntry.m_sOptions.c_str(),sizeof(szOptionsString)); + + if (strlen(szOptionsString)) + { + + //find friendly fire value + char *pTok = strtok(szOptionsString,";"); + sOptions += LoadTempString(IDS_FRIENDLY_FIRE); + sOptions += ": "; + pTok = strpbrk( pTok, "0123456789" ); + if (pTok && *pTok >= '1') + { + sOptions += LoadTempString(IDS_YES); + } + else + { + sOptions += LoadTempString(IDS_NO); + } + sOptions += "; "; + + //find weapon stay value + pTok = strtok(NULL,";"); + sOptions += LoadTempString(IDS_WEAPONS_STAY); + sOptions += ": "; + pTok = strpbrk( pTok, "0123456789" ); + if (pTok && *pTok >= '1') + { + sOptions += LoadTempString(IDS_YES); + } + else + { + sOptions += LoadTempString(IDS_NO); + } + sOptions += "; "; + + //num rounds + pTok = strtok(NULL,";"); + sOptions += LoadTempString(IDS_ROUNDS); + sOptions += ": "; + pTok = strpbrk( pTok, "0123456789" ); + sOptions += pTok; + sOptions += "; "; + + //runspeed + pTok = strtok(NULL,";"); + sOptions += LoadTempString(IDS_RUN_SPEED); + sOptions += ": "; + pTok = strpbrk( pTok, "0123456789" ); + sOptions += pTok; + + } + + + + GameType eType = (GameType)serverEntry.m_nGameType; + + if (eType == eGameTypeDeathmatch || eType == eGameTypeTeamDeathmatch) + { + sprintf(aStringBuffer,"; %s: %d",LoadTempString(IDS_SCORE_LIMIT), serverEntry.m_nFragLimit); + sOptions += aStringBuffer; + } + + if (eType != eGameTypeDemolition) + { + sprintf(aStringBuffer,"; %s: %d",LoadTempString(IDS_TIME_LIMIT), serverEntry.m_nTimeLimit); + sOptions += aStringBuffer; + } + + m_pOptions->SetString(sOptions.c_str()); + + //read player list + char szPing[6]; + for( uint32 i = 0; i < serverEntry.m_lstPlayerEntry.size( ); i++ ) + { + PlayerEntry const& playerEntry = serverEntry.m_lstPlayerEntry[i]; + + // Create a control + CLTGUIColumnCtrl* pCtrl = CreateColumnCtrl(0,0,kDefaultPos,LTTRUE); + // Do the name + pCtrl->AddColumn(playerEntry.m_sName.c_str( ), kColumnWidth_PlayerName,LTTRUE); + + // Do the ping + sprintf( szPing, "%d", playerEntry.m_nPing ); + pCtrl->AddColumn( szPing, kColumnWidth_Ping); + + m_pPlayerListCtrl->AddControl(pCtrl); + } + + m_pJoin->Enable(LTTRUE); + m_pDetails->Show(LTTRUE); + m_pDetails->SetSelection(m_pDetails->GetIndex(m_pJoin)); + SetCapture(m_pDetails); +} + +void CScreenJoin::SetDetailErrorMessage(const char *szError) +{ + m_pPlayerListCtrl->RemoveAll(); + + if (m_pWait->IsVisible()) + m_pWait->Show(LTFALSE); + if (m_pDetails->IsVisible()) + m_pDetails->Show(LTFALSE); + SetCapture(NULL); + + //show edit box here + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(szError,&mb); + +} + + +LTBOOL CScreenJoin::Render(HSURFACE hDestSurf) +{ + CWinSync_CSAuto cs( m_csAddServer ); + + Update(); + + return CBaseScreen::Render(hDestSurf); +} + +LTBOOL CScreenJoin::HandleKeyDown(int key, int rep) +{ + if (key == VK_F5) + { + FindServers(); + return LTTRUE; + } + return CBaseScreen::HandleKeyDown(key,rep); +} + +bool CScreenJoin::IsCurrentGame(const char *pAddr) +{ + if (!IsMultiplayerGame( )) return false; + + uint32 aAddr[4]; + uint16 nPort; + aAddr[0] = 0; + aAddr[1] = 0; + aAddr[2] = 0; + aAddr[3] = 0; + sscanf(pAddr, "%d.%d.%d.%d:%d", &aAddr[0], &aAddr[1], &aAddr[2], &aAddr[3], &nPort); + + uint8 nServerAddr[4]; + uint16 nServerPort; + g_pLTClient->GetServerIPAddress(nServerAddr, &nServerPort); + + if ((aAddr[0] == (uint32)nServerAddr[0]) && + (aAddr[1] == (uint32)nServerAddr[1]) && + (aAddr[2] == (uint32)nServerAddr[2]) && + (aAddr[3] == (uint32)nServerAddr[3]) && + (nPort == nServerPort)) + return true; + else + return false; + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenJoin::JoinGame +// +// PURPOSE: Joins the given game service +// +// ----------------------------------------------------------------------- // + +void CScreenJoin::JoinCurGame() +{ + // Get the currently selected game server... + + TServerEntryMap::const_iterator iter = m_cServerMap.find(m_sSelectedServerAddress); + if( iter == m_cServerMap.end( )) + return; + std::string const& sPrivateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + g_pGameClientShell->SetGameType((GameType)serverEntry.m_nGameType); + if( !g_pClientMultiplayerMgr->SetupClient( serverEntry.m_sName.c_str(), m_sPassword.c_str(), + !serverEntry.m_bDirectConnect, serverEntry.m_bConnectViaPublic, + serverEntry.m_sPublicAddress.c_str( ), sPrivateAddress.c_str( ))) + { + ChangeState(eState_Inactive); + g_pInterfaceMgr->LoadFailed(SCREEN_ID_JOIN); + g_pInterfaceMgr->ConnectionFailed(g_pClientMultiplayerMgr->GetLastConnectionResult()); + return; + } + + if( !g_pMissionMgr->StartGameAsClient( )) + { + ChangeState(eState_Inactive); + g_pInterfaceMgr->LoadFailed(SCREEN_ID_JOIN); + g_pInterfaceMgr->ConnectionFailed(g_pClientMultiplayerMgr->GetLastConnectionResult()); + return; + } +} + +bool CScreenJoin::PreState(EState eNewState) +{ + switch (eNewState) + { + case eState_Inactive : + return PreState_Inactive(); + case eState_Startup : + return PreState_Startup(); + case eState_UpdateDir : + return PreState_UpdateDir(); + case eState_QueryDetails : + return PreState_QueryDetails(); + case eState_Waiting : + return PreState_Waiting(); + default : + return true; + } +} + +bool CScreenJoin::PostState(EState eNewState) +{ + switch (m_eCurState) + { + case eState_UpdateDir : + return PostState_UpdateDir(eNewState); + case eState_QueryDetails : + return PostState_QueryDetails(eNewState); + case eState_Waiting : + return PostState_Waiting(eNewState); + default : + return true; + } +} + +bool CScreenJoin::ChangeState(EState eNewState) +{ + if (!PostState(m_eCurState)) + { + return false; + } + + m_eCurState = eState_Transition; + + if (!PreState(eNewState)) + { + m_pFindCtrl->Enable(LTTRUE); + if (m_pWait->IsVisible()) + m_pWait->Show(LTFALSE); + if (GetCapture() == m_pWait) + SetCapture(NULL); + m_eCurState = eState_Waiting; + return false; + } + + m_eCurState = eNewState; + + return true; +} + +void CScreenJoin::Update() +{ + switch (m_eCurState) + { + case eState_Startup : + Update_State_Startup(); + return; + case eState_UpdateDir : + Update_State_UpdateDir(); + return; + case eState_QueryDetails : + Update_State_QueryDetails(); + return; + default : + return; + } +} + +bool CScreenJoin::PreState_Inactive() +{ + // Make sure we're not doing anything... + if( g_pClientMultiplayerMgr->GetRetailServerBrowser( )) + g_pClientMultiplayerMgr->GetRetailServerBrowser( )->HaltRequest( ); + if( g_pClientMultiplayerMgr->GetDemoServerBrowser( )) + g_pClientMultiplayerMgr->GetDemoServerBrowser( )->HaltRequest( ); + + return true; +} + +bool CScreenJoin::PreState_Startup() +{ + return true; +} + +bool CScreenJoin::PreState_UpdateDir() +{ + m_pFindCtrl->Enable(LTFALSE); + + // Stop any requests going. + if( g_pClientMultiplayerMgr->GetRetailServerBrowser( )) + g_pClientMultiplayerMgr->GetRetailServerBrowser( )->HaltRequest( ); + if( g_pClientMultiplayerMgr->GetDemoServerBrowser( )) + g_pClientMultiplayerMgr->GetDemoServerBrowser( )->HaltRequest( ); + + // Clear out our current server list. + m_pServerListCtrl->RemoveAll(); + + // Clear out the server entry map. + m_cServerMap.clear( ); + + // Start off our state on the retialpublic. + m_eUpdateDirState = eUpdateDirState_Idle; + + return true; +} + +bool CScreenJoin::PreState_QueryDetails() +{ + TServerEntryMap::const_iterator iter = m_cServerMap.find(m_sSelectedServerAddress); + if( iter == m_cServerMap.end( )) + return false; + std::string const& sPrivateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + if (stricmp(serverEntry.m_sVersion.c_str(), g_pVersionMgr->GetNetVersion()) != 0) + { + SetDetailErrorMessage(LoadTempString(IDS_SERVER_DETAIL_VERSION)); + return false; + } + + // Convert the address string into ip and port. + char szIP[16]; + uint32 nColon = serverEntry.m_sPublicAddress.rfind( ":", serverEntry.m_sPublicAddress.length( ) - 1); + if( nColon == std::string::npos || nColon > ARRAY_LEN( szIP )) + return false; + strncpy( szIP, serverEntry.m_sPublicAddress.c_str( ), nColon ); + szIP[nColon] = 0; + if( !serverEntry.m_sPublicAddress.c_str( )[nColon+1] ) + return false; + uint16 nPort = min( atoi( serverEntry.m_sPublicAddress.c_str( ) + nColon + 1 ), 65535 ); + + // Request the details for this server. + IGameSpyBrowser* pGameSpyBrowser = ( serverEntry.m_bDemoServer ) ? + g_pClientMultiplayerMgr->GetDemoServerBrowser( ) : + g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + if( !pGameSpyBrowser->RequestServerDetails( szIP, nPort, ServerInfoCallback, this )) + { + SetDetailErrorMessage(LoadTempString(IDS_SERVER_NORESPONSE)); + return false; + } + + return true; +} + + +bool CScreenJoin::PreState_Waiting() +{ + m_pFindCtrl->Enable(LTTRUE); + + if (m_pWait->IsVisible()) + m_pWait->Show(LTFALSE); + if (GetCapture() == m_pWait) + SetCapture(NULL); + + + return true; +} + +bool CScreenJoin::PostState_UpdateDir(EState eNewState) +{ + // Show it + DisplayCurServerList( m_nLastSort ); + return true; +} + +bool CScreenJoin::PostState_QueryDetails(EState eNewState) +{ + // Read the details + DisplayDetails(); + + m_pFindCtrl->Enable(LTTRUE); + return true; +} + +bool CScreenJoin::PostState_Waiting(EState eNewState) +{ + m_pFindCtrl->Enable(LTFALSE); + + m_pWait->Show(LTTRUE); + SetCapture(m_pWait); + + return true; +} + +void CScreenJoin::Update_State_Startup() +{ + // Update the directory list + ChangeState(eState_UpdateDir); +} + +void CScreenJoin::Update_State_UpdateDir() +{ + IGameSpyBrowser* pResponseGameSpyBrowser; + EUpdateDirState eRequestUpdateDirState; + IGameSpyBrowser* pRequestGameSpyBrowser; + bool bRequestPublic; + + // Setup the response/request data based on the state we're + // in. The response variables tell us what gamespybrowser + // to check for status. If we get a response, we switch to + // the new updatedirstate and request a new dir. + switch( m_eUpdateDirState ) + { + case eUpdateDirState_Idle: + { + pResponseGameSpyBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + eRequestUpdateDirState = eUpdateDirState_RetailPublic; + pRequestGameSpyBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + bRequestPublic = true; + } + break; + case eUpdateDirState_RetailPublic: + { + pResponseGameSpyBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + eRequestUpdateDirState = eUpdateDirState_RetailLan; + pRequestGameSpyBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + bRequestPublic = false; + } + break; + case eUpdateDirState_RetailLan: + { + pResponseGameSpyBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + eRequestUpdateDirState = eUpdateDirState_DemoPublic; + pRequestGameSpyBrowser = g_pClientMultiplayerMgr->GetDemoServerBrowser( ); + bRequestPublic = true; + } + break; + case eUpdateDirState_DemoPublic: + { + pResponseGameSpyBrowser = g_pClientMultiplayerMgr->GetDemoServerBrowser( ); + eRequestUpdateDirState = eUpdateDirState_DemoLan; + pRequestGameSpyBrowser = g_pClientMultiplayerMgr->GetDemoServerBrowser( ); + bRequestPublic = false; + } + break; + case eUpdateDirState_DemoLan: + { + pResponseGameSpyBrowser = g_pClientMultiplayerMgr->GetDemoServerBrowser( ); + eRequestUpdateDirState = eUpdateDirState_Finished; + pRequestGameSpyBrowser = NULL; // No new request needed when we get here. + bRequestPublic = false; + } + break; + case eUpdateDirState_Finished: + { + ChangeState(eState_Waiting); + return; + } + break; + default: + { + ASSERT( !"CScreenJoin::Update_State_UpdateDir: Invalid updatedir state." ); + ChangeState(eState_Waiting); + return; + } + break; + } + + // Are we still waiting? + switch( pResponseGameSpyBrowser->GetBrowserStatus( )) + { + // Still waiting for the results. + case IGameSpyBrowser::eBrowserStatus_Processing: + return; + case IGameSpyBrowser::eBrowserStatus_Idle: + case IGameSpyBrowser::eBrowserStatus_Complete: + case IGameSpyBrowser::eBrowserStatus_Error: + { + // Stop any previous requests we were doing. + pResponseGameSpyBrowser->HaltRequest( ); + + // Make the new request. If there isn't anything setup + // to request from, then we're done. + if( pRequestGameSpyBrowser ) + { + uint16 nPort = atoi( m_szPort ); + + // Request the next serverlist. + pRequestGameSpyBrowser->RequestServerList( + bRequestPublic, nPort, NULL, ServerInfoCallback, this ); + } + + // Switch to the next state for when we are complete with this request. + m_eUpdateDirState = eRequestUpdateDirState; + + break; + } + default : + { + ASSERT(!"Unknown directory status encountered"); + ChangeState(eState_Waiting); + break; + } + } +} + +void CScreenJoin::Update_State_QueryDetails() +{ + // Are we still waiting? + if(( g_pClientMultiplayerMgr->GetRetailServerBrowser( )->GetBrowserStatus( ) == IGameSpyBrowser::eBrowserStatus_Processing ) || + g_pClientMultiplayerMgr->GetDemoServerBrowser( )->GetBrowserStatus( ) == IGameSpyBrowser::eBrowserStatus_Processing ) + return; + + //get back to work + ChangeState(eState_Waiting); +} + +void CScreenJoin::FilterServers() +{ + + uint16 iFirst = CLTGUIListCtrl::kNoSelection; + for (uint16 i = 0 ;i < m_pServerListCtrl->GetNumControls(); ++i) + { + char const* pszAddress = reinterpret_cast< char const* >( m_pServerListCtrl->GetControl(i)->GetParam1()); + if( !pszAddress || !pszAddress[0] ) + return; + + TServerEntryMap::const_iterator iter = m_cServerMap.find(pszAddress); + if( iter == m_cServerMap.end( )) + return; + std::string const& sPrivateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + bool bShow = true; + + //Version Filter + if (m_nVersionFilter) + { + bShow &= (stricmp(serverEntry.m_sVersion.c_str(), g_pVersionMgr->GetNetVersion()) == 0); + } + + //Game type filter + GameType eType = (GameType)serverEntry.m_nGameType; + switch(m_nTypeFilter) + { + case 1: //deathmatch + bShow &= (eType == eGameTypeDeathmatch); + break; + case 2: //team deathmatch + bShow &= (eType == eGameTypeTeamDeathmatch); + break; + case 3: //doomsday + bShow &= (eType == eGameTypeDoomsDay); + break; + case 4: //demolition + bShow &= (eType == eGameTypeDemolition); + break; + } + + switch (m_nPlayersFilter) + { + case 0: + break; + case 1: + bShow &= (serverEntry.m_nNumPlayers > 0); + break; + case 2: + bShow &= (serverEntry.m_nNumPlayers < serverEntry.m_nMaxPlayers); + break; + case 3: + bShow &= (serverEntry.m_nNumPlayers > 0); + bShow &= (serverEntry.m_nNumPlayers < serverEntry.m_nMaxPlayers); + break; + } + + switch (m_nPingFilter) + { + case 0: + break; + case 1: + bShow &= (serverEntry.m_nPing < 100); + break; + case 2: + bShow &= (serverEntry.m_nPing < 300); + break; + case 3: + bShow &= (serverEntry.m_nPing < 500); + break; + } + + switch( m_nModFilter ) + { + case 0: // All Mods (no filtering) + break; + + case 1: // Retail games only + { + bShow &= (stricmp( serverEntry.m_sModName.c_str(), RETAIL_MOD_NAME ) == 0 ); + } + break; + + case 2: // Currently selected mod only + { + bShow &= (stricmp( serverEntry.m_sModName.c_str(), g_pClientMultiplayerMgr->GetModName() ) == 0 ); + } + break; + + default: + break; + } + + if (bShow && iFirst == CLTGUIListCtrl::kNoSelection) + iFirst = i; + + m_pServerListCtrl->GetControl(i)->Show(bShow); + } + + if (iFirst == CLTGUIListCtrl::kNoSelection) + { +// m_pServerListCtrl->Enable(false); + } + else + { +// m_pServerListCtrl->Enable(true); + m_pServerListCtrl->SetStartIndex(iFirst); + } + + m_pServerListCtrl->SetSelection(iFirst); + +} + + + +void CScreenJoin::CheckPassword() +{ + TServerEntryMap::const_iterator iter = m_cServerMap.find(m_sSelectedServerAddress); + if( iter == m_cServerMap.end( )) + return; + std::string const& sPrivateAddress = iter->first; + const ServerEntry &serverEntry = iter->second; + + m_sPassword = ""; + if( serverEntry.m_bUsePassword) + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditPassCallBack; + mb.pString = ""; + mb.nMaxChars = MAX_PASSWORD-1; + g_pInterfaceMgr->ShowMessageBox(IDS_PASSWORD,&mb); + } + else + { + JoinCurGame(); + } +} + +void CScreenJoin::Escape() +{ + if (m_pDetails->IsVisible()) + { + m_pDetails->Show(LTFALSE); + SetCapture(NULL); + ChangeState(eState_Waiting); + return; + } + + + CBaseScreen::Escape(); +} + +void CScreenJoin::ReadCoopDetails(std::string& sOptions,CLTMsgRef_Read& cRead) +{ + char aStringBuffer[256]; + + bool bFriendlyFire = cRead->Readbool(); + sprintf(aStringBuffer,"%s: ",LoadTempString(IDS_FRIENDLY_FIRE)); + sOptions += aStringBuffer; + if (bFriendlyFire) + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_YES)); + else + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_NO)); + sOptions += aStringBuffer; + + uint8 nDiff = cRead->Readuint8(); + sprintf(aStringBuffer,"%s: ",LoadTempString(IDS_DIFFICULTY)); + sOptions += aStringBuffer; + switch (nDiff) + { + case 3: + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_NEW_INSANE)); + break; + case 2: + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_NEW_HARD)); + break; + case 1: + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_NEW_MEDIUM)); + break; + case 0: + default: + sprintf(aStringBuffer,"%s; ",LoadTempString(IDS_NEW_EASY)); + break; + + } + sOptions += aStringBuffer; + + float fPlayerDiff = cRead->Readfloat(); + sprintf(aStringBuffer,"%s: %0.2f; ",LoadTempString(IDS_HOST_PLAYERDIFF),fPlayerDiff); + sOptions += aStringBuffer; + + //read player list + bool bPlayerToRead = cRead->Readbool(); + while (bPlayerToRead) + { + cRead->ReadString(aStringBuffer, sizeof(aStringBuffer)); + uint16 nPing = cRead->Readuint16(); + bPlayerToRead = cRead->Readbool(); + + // Create a control + CLTGUIColumnCtrl* pCtrl = CreateColumnCtrl(0,0,kDefaultPos,LTTRUE); + // Do the name + pCtrl->AddColumn(aStringBuffer, kColumnWidth_PlayerName,LTTRUE); + + // Do the ping + sprintf(aStringBuffer, "%d", nPing); + pCtrl->AddColumn(aStringBuffer, kColumnWidth_Ping); + + m_pPlayerListCtrl->AddControl(pCtrl); + + } +} + +static bool ReadServerEntry( IGameSpyBrowser& gameSpyBrowser, IGameSpyBrowser::HGAMESERVER hGameServer, std::string& sPrivateAddress, ServerEntry& serverEntry ) +{ + char szString[256]; + + // Get the connection information. + char szPublicAddress[256]; + uint16 nPublicPort; + char szPrivateAddress[256]; + uint16 nPrivatePort; + if( !gameSpyBrowser.GetServerConnectInfo( hGameServer, szPrivateAddress, nPrivatePort, + szPublicAddress, nPublicPort, serverEntry.m_bConnectViaPublic, serverEntry.m_bDirectConnect )) + return false; + + // Create a combined address string. + sPrivateAddress = szPrivateAddress; + sPrivateAddress += ":"; + sprintf( szString, "%d", nPrivatePort ); + sPrivateAddress += szString; + + // Create a combined address string. + serverEntry.m_sPublicAddress = szPublicAddress; + serverEntry.m_sPublicAddress += ":"; + sprintf( szString, "%d", nPublicPort ); + serverEntry.m_sPublicAddress += szString; + + // Get the server name. + if( !gameSpyBrowser.GetServerProperty( hGameServer, "hostname", szString, ARRAY_LEN( szString ))) + return false; + serverEntry.m_sName = szString; + + if( !gameSpyBrowser.GetServerProperty( hGameServer, "gamever", szString, ARRAY_LEN( szString ))) + return false; + serverEntry.m_sVersion = szString; + + if( !gameSpyBrowser.GetServerProperty( hGameServer, "modname", szString, ARRAY_LEN( szString ))) + return false; + serverEntry.m_sModName = szString; + + serverEntry.m_nNumPlayers = gameSpyBrowser.GetNumPlayers( hGameServer ); + + if( !gameSpyBrowser.GetServerProperty( hGameServer, "maxplayers", szString, ARRAY_LEN( szString ))) + return false; + serverEntry.m_nMaxPlayers = atoi( szString ); + + if( !gameSpyBrowser.GetServerProperty( hGameServer, "password", szString, ARRAY_LEN( szString ))) + return false; + serverEntry.m_bUsePassword = !!( atoi( szString )); + + if( !gameSpyBrowser.GetServerProperty( hGameServer, "gametype", szString, ARRAY_LEN( szString ))) + return false; + GameType eGameType = GameStringTypeToGameType( szString ); + serverEntry.m_nGameType = eGameType; + + serverEntry.m_nPing = gameSpyBrowser.GetServerPing( hGameServer ); + + // Make sure it has the details. + if( gameSpyBrowser.HasServerDetails( hGameServer )) + { + // read the mission name + if( gameSpyBrowser.GetServerProperty( hGameServer, "mapname", szString, ARRAY_LEN( szString ))) + serverEntry.m_sMission = szString; + + if( gameSpyBrowser.GetServerProperty( hGameServer, "options", szString, ARRAY_LEN( szString ))) + serverEntry.m_sOptions = szString; + + if( gameSpyBrowser.GetServerProperty( hGameServer, "fraglimit", szString, ARRAY_LEN( szString ))) + serverEntry.m_nFragLimit = min( atoi( szString ), 65535 ); + + if( gameSpyBrowser.GetServerProperty( hGameServer, "timelimit", szString, ARRAY_LEN( szString ))) + serverEntry.m_nTimeLimit = min( atoi( szString ), 65535 ); + + //read player list + uint32 nNumPlayers = gameSpyBrowser.GetNumPlayers( hGameServer ); + serverEntry.m_lstPlayerEntry.resize( 0 ); + serverEntry.m_lstPlayerEntry.reserve( nNumPlayers ); + char szKey[256]; + PlayerEntry playerEntry; + for( uint32 i = 0; i < nNumPlayers; i++ ) + { + sprintf( szKey, "player_%d", i ); + if( !gameSpyBrowser.GetServerProperty( hGameServer, szKey, szString, ARRAY_LEN( szString ))) + break; + playerEntry.m_sName = szString; + + sprintf( szKey, "ping_%d", i ); + if( gameSpyBrowser.GetServerProperty( hGameServer, szKey, szString, ARRAY_LEN( szString ))) + playerEntry.m_nPing = min( atoi( szString ), 65535 ); + else + playerEntry.m_nPing = 65535; + + serverEntry.m_lstPlayerEntry.push_back( playerEntry ); + } + } + + return true; +} + +// Callback for IGameSpyBrowser::RequestServerList +void CScreenJoin::ServerInfoCallback( IGameSpyBrowser& gameSpyBrowser, IGameSpyBrowser::HGAMESERVER hGameServer, void* pUserData ) +{ + CScreenJoin* pScreenJoin = reinterpret_cast< CScreenJoin* >( pUserData ); + + // Read the information on the server into the serverEntry. + ServerEntry serverEntry; + std::string sPrivateAddress; + if( !ReadServerEntry( gameSpyBrowser, hGameServer, sPrivateAddress, serverEntry )) + return; + + // Set whether this is a demo server or a retail server. + serverEntry.m_bDemoServer = ( &gameSpyBrowser == g_pClientMultiplayerMgr->GetDemoServerBrowser( )); + + // Assume we don't need to add this to our listctrl. + bool bAddToList = false; + + // Check if this server isn't in our map yet. + TServerEntryMap::iterator iter = pScreenJoin->m_cServerMap.find(sPrivateAddress); + if( iter == pScreenJoin->m_cServerMap.end( )) + { + // We'll need to add this to our list. + bAddToList = true; + + // We need to make an new column control for it. + serverEntry.m_pColumnCtrl = pScreenJoin->CreateColumnCtrl(CMD_DETAILS, IDS_HELP_JOIN); + + // Add the server to the map. We use insert, because we need to get the iterator to the + // newly added item. + typedef std::pair< std::string, ServerEntry > TServerMapInsertValuePair; + typedef std::pair< TServerEntryMap::iterator, bool > TServerMapInsertResultsPair; + TServerMapInsertResultsPair mapInsert = pScreenJoin->m_cServerMap.insert( TServerMapInsertValuePair( sPrivateAddress, serverEntry )); + iter = mapInsert.first; + } + else + { + // Use the previous column control. + serverEntry.m_pColumnCtrl = iter->second.m_pColumnCtrl; + + // Copy in the serverentry. + iter->second = serverEntry; + } + + + // Setup the control with the summary information. We need to send the string + // key from the map because column control uses its string data and the local + // sAddress won't stick around. + std::string const& sKeyAddress = iter->first; + SetSummaryInfo( *serverEntry.m_pColumnCtrl, sKeyAddress.c_str( ), serverEntry ); + + // Add the columnctrl to our list. + if( bAddToList ) + { + CWinSync_CSAuto cs( pScreenJoin->m_csAddServer ); + + // Add the control to the control list. + uint16 nCtrlIndex = pScreenJoin->m_pServerListCtrl->AddControl(serverEntry.m_pColumnCtrl); + } +} + +void CScreenJoin::Term( ) +{ + TermServerLists( ); + + CBaseScreen::Term( ); +} + +// ----------------------------------------------------------------------- // +// Function name : CScreenJoin::TermServerLists +// Description : Deletes the server list objects. Good idea +// to delete them when you are done with them, +// since they can store lots of data in the server lists. +// ----------------------------------------------------------------------- // +void CScreenJoin::TermServerLists( ) +{ + // Clear out our current server list. We need + // to check m_bInit here because ScreenMgr + // could have deleted our controls from under us. + if( m_bInit && m_pServerListCtrl ) + m_pServerListCtrl->RemoveAll(); + + // Clear out the server entry map. + m_cServerMap.clear( ); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenJoin.h b/Jack/ClientShellDLL/ScreenJoin.h new file mode 100644 index 00000000..f6e2d8bc --- /dev/null +++ b/Jack/ClientShellDLL/ScreenJoin.h @@ -0,0 +1,200 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenJoin.h +// +// PURPOSE : Interface screen to search for and join LAN games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_JOIN_H_ +#define _SCREEN_JOIN_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "IGameSpy.h" +#include "winsync.h" + +struct PlayerEntry +{ + std::string m_sName; + uint16 m_nPing; +}; +typedef std::vector< PlayerEntry > PlayerEntryList; + +struct ServerEntry +{ + ServerEntry( ) + { + m_nNumPlayers = 0; + m_nMaxPlayers = 0; + m_nPing = 0; + m_bUsePassword = false; + m_nGameType = 0; + m_nFragLimit = 0; + m_nTimeLimit = 0; + m_bDemoServer = false; + m_bDirectConnect = true; + m_bConnectViaPublic = true; + m_pColumnCtrl = NULL; + } + + std::string m_sPublicAddress; + std::string m_sName; + std::string m_sMission; + std::string m_sVersion; + std::string m_sModName; + uint32 m_nNumPlayers; + uint32 m_nMaxPlayers; + uint16 m_nPing; + bool m_bUsePassword; + uint8 m_nGameType; + std::string m_sOptions; + uint16 m_nFragLimit; + uint16 m_nTimeLimit; + PlayerEntryList m_lstPlayerEntry; + bool m_bDemoServer; + bool m_bDirectConnect; + bool m_bConnectViaPublic; + CLTGUIColumnCtrl* m_pColumnCtrl; +}; +typedef stdext::hash_map TServerEntryMap; + + +class CScreenJoin : public CBaseScreen +{ +public: + CScreenJoin(); + virtual ~CScreenJoin(); + + virtual void Term(); + + // Build the screen + LTBOOL Build(); + + LTBOOL Render(HSURFACE hDestSurf); + + void OnFocus(LTBOOL bFocus); + LTBOOL HandleKeyDown(int key, int rep); + + void CheckPassword(); + + virtual void Escape(); + + // Deletes serverlist data, which can be very large. + void TermServerLists( ); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + uint32 HandleCallback(uint32 dwParam1, uint32 dwParam2); + + void FindServers(); + + LTBOOL IsValidPort(uint16 nPort) { return (nPort > 0); } + + CLTGUITextCtrl* m_pFindCtrl; +// CLTGUITextCtrl* m_pStatusCtrl; + CLTGUIListCtrl* m_pServerListCtrl; + CLTGUIListCtrl* m_pPlayerListCtrl; + CLTGUIWindow* m_pWait; + CLTGUIWindow* m_pDetails; + CLTGUITextCtrl* m_pJoin; + CLTGUITextCtrl* m_pOptions; + CLTGUITextCtrl* m_pMission; + CLTGUIColumnCtrl* m_pPort; + + // Type manages list of servers reported. + TServerEntryMap m_cServerMap; + std::string m_sSelectedServerAddress; + + // Dump the server list into the display + void DisplayCurServerList( uint32 nSortField ); + + // Read the peer details + void DisplayDetails(); + void SetDetailErrorMessage(const char *szError); + void ReadDMDetails(std::string& sOptions,CLTMsgRef_Read& cRead); + void ReadCoopDetails(std::string& sOptions,CLTMsgRef_Read& cRead); + + bool IsCurrentGame(const char *pAddr); + void JoinCurGame(); + + enum EState { + eState_Inactive, + eState_Startup, + eState_UpdateDir, + eState_QueryDetails, + eState_DisplaySysMOTD, + eState_DisplayGameMOTD, + eState_Waiting, + eState_Transition, + eState_Error + }; + EState m_eCurState; + + // Called when entering a state + bool PreState(EState eNewState); + // Called when leaving a state + // Returns false if that is an invalid state transition + bool PostState(EState eNewState); + // Change states + bool ChangeState(EState eNewState); + void Update(); + + // Pre-state handling for each state + bool PreState_Inactive(); + bool PreState_Startup(); + bool PreState_UpdateDir(); + bool PreState_QueryDetails(); + bool PreState_Waiting(); + + // Post-state handling for each state + bool PostState_UpdateDir(EState eNewState); + bool PostState_QueryDetails(EState eNewState); + bool PostState_Waiting(EState eNewState); + + // Update handling for each state + void Update_State_Startup(); + void Update_State_UpdateDir(); + void Update_State_QueryDetails(); + + void FilterServers(); + + // Callback for IGameSpyBrowser::RequestServerList + static void ServerInfoCallback( IGameSpyBrowser& gameSpyBrowser, IGameSpyBrowser::HGAMESERVER hServer, void* pUserData ); + + uint8 m_nVersionFilter; + uint8 m_nPlayersFilter; + uint8 m_nPingFilter; + uint8 m_nModFilter; + uint8 m_nTypeFilter; + + uint32 m_nLastSort; + + std::string m_sPassword; + + char m_szPort[8]; + + // UpdateDir states. + enum EUpdateDirState + { + eUpdateDirState_Idle, + eUpdateDirState_RetailPublic, + eUpdateDirState_RetailLan, + eUpdateDirState_DemoPublic, + eUpdateDirState_DemoLan, + eUpdateDirState_Finished, + + eUpdateDirState_NumStates, + }; + EUpdateDirState m_eUpdateDirState; + + CWinSync_CS m_csAddServer; +}; + +#endif // _SCREEN_MULTI_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenJoystick.cpp b/Jack/ClientShellDLL/ScreenJoystick.cpp new file mode 100644 index 00000000..2c585fb8 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenJoystick.cpp @@ -0,0 +1,162 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenJoystick.cpp +// +// PURPOSE : Interface screen for joystick/gamepad settings +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenJoystick.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameSettings.h" +#include "InterfaceMgr.h" + +namespace +{ + int kGap = 200; + int kWidth = 200; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenJoystick::CScreenJoystick() +{ + memset(m_nAxis,0,sizeof(m_nAxis)); + memset(m_nPOV,0,sizeof(m_nPOV)); + +} + +CScreenJoystick::~CScreenJoystick() +{ + +} + +// Build the screen +LTBOOL CScreenJoystick::Build() +{ + CreateTitle(IDS_TITLE_JOYSTICK); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOYSTICK,"ColumnWidth"); + uint8 nLarge = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_JOYSTICK,"HeaderFontSize"); + + + CLTGUICycleCtrl *pCtrl = AddCycle(IDS_JOYSTICK_AXIS, NULL, kGap, NULL, kDefaultPos, LTTRUE ); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_ACTION)); + pCtrl->SetFont(NULL,nLarge); + m_nextPos.y += 8; + + for (int axis = 0; axis < g_pProfileMgr->GetNumAxis(); axis++) + { + CDeviceAxisData *pAxisData = g_pProfileMgr->GetAxisData(axis); + if (!pAxisData || !strlen(pAxisData->m_sName)) continue; + + CLTGUICycleCtrl *pCtrl = AddCycle(pAxisData->m_sName, IDS_HELP_AXIS, kGap, &m_nAxis[axis] ); + pCtrl->SetParam1(axis); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_AXISNONE)); + + switch (pAxisData->m_nType) + { + case CONTROLTYPE_XAXIS: + case CONTROLTYPE_RXAXIS: + case CONTROLTYPE_ZAXIS: + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_TURN)); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_STRAFE)); + break; + case CONTROLTYPE_YAXIS: + case CONTROLTYPE_RYAXIS: + case CONTROLTYPE_RZAXIS: + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_LOOK)); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_MOVE)); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_INVERT)); + break; + } + +// pCtrl->NotifyOnChange(CMD_UPDATE,this); + } + + for (int POV = 0; POV < g_pProfileMgr->GetNumPOV(); POV++) + { + CDevicePOVData *pPOVData = g_pProfileMgr->GetPOVData(POV); + if (!pPOVData || !strlen(pPOVData->m_sName)) continue; + + CLTGUICycleCtrl *pCtrl = AddCycle(pPOVData->m_sName, IDS_HELP_POV, kGap, &m_nPOV[POV] ); + pCtrl->SetParam1(POV); + pCtrl->AddString(LoadTempString(IDS_JOYSTICK_AXISNONE)); + + pCtrl->AddString(LoadTempString(IDS_POV_LOOK)); + pCtrl->AddString(LoadTempString(IDS_POV_MOVE)); + } + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; + +} + +uint32 CScreenJoystick::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_UPDATE: + { + UpdateData(); + + + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + + } + return 1; +}; + + + +// Change in focus +void CScreenJoystick::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + pProfile->SetJoystick(); + for (int axis = 0; axis < g_pProfileMgr->GetNumAxis(); axis++) + { + m_nAxis[axis] = pProfile->m_nAxis[axis]; + } + for (int POV = 0; POV < g_pProfileMgr->GetNumPOV(); POV++) + { + m_nPOV[POV] = pProfile->m_nPOV[POV]; + } + + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + + for (int axis = 0; axis < g_pProfileMgr->GetNumAxis(); axis++) + { + pProfile->m_nAxis[axis] = m_nAxis[axis]; + }; + for (int POV = 0; POV < g_pProfileMgr->GetNumPOV(); POV++) + { + pProfile->m_nPOV[POV] = m_nPOV[POV]; + }; + + pProfile->ApplyJoystick(); + pProfile->Save(); + } + CBaseScreen::OnFocus(bFocus); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenJoystick.h b/Jack/ClientShellDLL/ScreenJoystick.h new file mode 100644 index 00000000..024d951c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenJoystick.h @@ -0,0 +1,40 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenJoystick.h +// +// PURPOSE : Interface screen for joystick/gamepad settings +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_JOYSTICK_H_ +#define _SCREEN_JOYSTICK_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "ProfileMgr.h" + +class CScreenJoystick : public CBaseScreen +{ +public: + CScreenJoystick(); + virtual ~CScreenJoystick(); + + // Build the screen + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + +protected: + void ClearBindings(); + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + uint8 m_nAxis[kMaxDeviceAxis]; + uint8 m_nPOV[kMaxDevicePOV]; +}; + +#endif // _SCREEN_KEYBOARD_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenKeyboard.cpp b/Jack/ClientShellDLL/ScreenKeyboard.cpp new file mode 100644 index 00000000..48af2a75 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenKeyboard.cpp @@ -0,0 +1,156 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenKeyboard.cpp +// +// PURPOSE : Interface screen for keyboard settings +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenKeyboard.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameSettings.h" +#include "InterfaceMgr.h" + +namespace +{ + int kGap = 200; + int kWidth = 200; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenKeyboard::CScreenKeyboard() +{ + m_pLookCtrl = LTNULL; + + + m_bAutoCenter = LTFALSE; + m_nNormalTurn = 15; + m_nFastTurn = 23; + m_nLookUp = 25; + m_nVehicleTurn = 100; + +} + +CScreenKeyboard::~CScreenKeyboard() +{ + +} + +// Build the screen +LTBOOL CScreenKeyboard::Build() +{ + CreateTitle(IDS_TITLE_KEYBOARD); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_KEYBOARD,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_KEYBOARD,"SliderWidth"); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_KEYBOARD,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_KEYBOARD,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_NonSelectedColor); + AddControl(pFrame); + + //turn speed + CLTGUISlider *pSlider = AddSlider(IDS_NORMALTURN, IDS_HELP_NORMALTURN, kGap, kWidth, -1, &m_nNormalTurn); + pSlider->SetSliderRange(5, 55); + pSlider->SetSliderIncrement(5); + + pSlider = AddSlider(IDS_FASTTURN, IDS_HELP_FASTTURN, kGap, kWidth, -1, &m_nFastTurn); + pSlider->SetSliderRange(8, 58); + pSlider->SetSliderIncrement(5); + + // look speed + pSlider = AddSlider(IDS_LOOKUP, IDS_HELP_LOOKUP, kGap, kWidth, -1, &m_nLookUp); + pSlider->SetSliderRange(5, 50); + pSlider->SetSliderIncrement(5); + + // auto center + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + + m_pLookCtrl = AddToggle(IDS_MOUSE_LOOKSPRING, IDS_HELP_LOOKSPRING, kGap, &m_bAutoCenter ); + m_pLookCtrl->SetOnString(szYes); + m_pLookCtrl->SetOffString(szNo); + + pSlider = AddSlider(IDS_VEHICLETURN, IDS_HELP_VEHICLETURN, kGap, kWidth, -1, &m_nVehicleTurn); + pSlider->SetSliderRange(50, 150); + pSlider->SetSliderIncrement(10); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; + +} + +uint32 CScreenKeyboard::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_UPDATE: + { + UpdateData(); +// m_pLookCtrl->Enable(!m_bMouseLook); + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + + } + return 1; +}; + + + +// Change in focus +void CScreenKeyboard::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + pProfile->SetKeyboard(); + m_pLookCtrl->Enable(!pProfile->m_bMouseLook); + m_bAutoCenter = pProfile->m_bAutoCenter; + m_nNormalTurn = pProfile->m_nNormalTurn; + m_nFastTurn = pProfile->m_nFastTurn; + m_nLookUp = pProfile->m_nLookUp; + m_nVehicleTurn = pProfile->m_nVehicleTurn; + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + + pProfile->m_bAutoCenter = m_bAutoCenter; + pProfile->m_nNormalTurn = m_nNormalTurn; + pProfile->m_nFastTurn = m_nFastTurn; + pProfile->m_nLookUp = m_nLookUp; + pProfile->m_nVehicleTurn = m_nVehicleTurn; + + pProfile->ApplyKeyboard(); + pProfile->Save(); + } + CBaseScreen::OnFocus(bFocus); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenKeyboard.h b/Jack/ClientShellDLL/ScreenKeyboard.h new file mode 100644 index 00000000..ea1a2439 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenKeyboard.h @@ -0,0 +1,46 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenKeyboard.h +// +// PURPOSE : Interface screen for keyboard settings +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_KEYBOARD_H_ +#define _SCREEN_KEYBOARD_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenKeyboard : public CBaseScreen +{ +public: + CScreenKeyboard(); + virtual ~CScreenKeyboard(); + + // Build the screen + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + +protected: + void ClearBindings(); + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + CLTGUIToggle *m_pLookCtrl; + + LTBOOL m_bAutoCenter; + int m_nNormalTurn; + int m_nFastTurn; + int m_nVehicleTurn; + int m_nLookUp; + + +}; + +#endif // _SCREEN_KEYBOARD_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenLoad.cpp b/Jack/ClientShellDLL/ScreenLoad.cpp new file mode 100644 index 00000000..a1f26b25 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenLoad.cpp @@ -0,0 +1,359 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenLoad.cpp +// +// PURPOSE : Interface screen for loading saved games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "MissionButeMgr.h" +#include "ScreenLoad.h" + +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "ClientSaveLoadMgr.h" +#include "MissionMgr.h" +#include "ClientMultiplayerMgr.h" + + +#include "WinUtil.h" +#include +#include + +namespace +{ + const int kMaxSave = SLMGR_MAX_SAVE_SLOTS; + int kNameWidth = 0; + int kTimeWidth = 0; + int kIndent = 0; + int kSmallFontSize = 4; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenLoad::CScreenLoad() +{ + +} + +CScreenLoad::~CScreenLoad() +{ + +} + +LTBOOL CScreenLoad::Build() +{ + CreateTitle(IDS_TITLE_LOADGAME); + + kNameWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_LOAD,"NameWidth"); + kTimeWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_LOAD,"TimeWidth"); + kIndent = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_LOAD,"Indent"); + kSmallFontSize = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_LOAD,"SmallFontSize"); + + return CBaseScreen::Build(); +} + + +void CScreenLoad::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + BuildSavedLevelLists(); + UseBack(LTTRUE); + } + else + { + SetSelection(kNoSelection); + ClearSavedLevelLists(); + UseBack(LTFALSE); + } + CBaseScreen::OnFocus(bFocus); +} + +uint32 CScreenLoad::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand >= CMD_CUSTOM && dwCommand <= CMD_CUSTOM+2+kMaxSave) + { + bool bLoaded = true; + + if (dwCommand == CMD_CUSTOM) + { + // This is the Quick load slot but we might not be in a game so don't QuickLoad... + bLoaded = bLoaded && g_pMissionMgr->StartGameFromQuickSave( ); + } + else if (dwCommand == CMD_CUSTOM+1) + { + bLoaded = bLoaded && g_pMissionMgr->StartGameFromReload( ); + } + else if (dwCommand == CMD_CUSTOM+2) + { + bLoaded = bLoaded && g_pMissionMgr->StartGameFromCheckpointSave( ); + } + else + { + uint32 slot = (dwCommand - CMD_CUSTOM) - 2; + bLoaded = bLoaded && g_pMissionMgr->StartGameFromSaveSlot( slot ); + } + + if ( !bLoaded ) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_LOADGAMEFAILED,&mb); + return 0; + } + + return 1; + } + else + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + +}; + + +CLTGUIColumnCtrl* CScreenLoad::BuildSaveControls( char const* pszIniKey, uint32 nCommandId, uint32 nControlHelpStringId, + bool bUserName, LTIntPt pos ) +{ + // Check inputs. + if( !pszIniKey || !pszIniKey[0] ) + { + ASSERT( !"CScreenLoad::BuildSaveControls: Invalid inputs." ); + return NULL; + } + + char szSaveTitle[SLMGR_MAX_INISTR_LEN+1]; + char szWorldName[MAX_PATH*2]; + time_t saveTime; + SaveGameData saveGameData; + + if( !g_pClientSaveLoadMgr->ReadSaveINI( pszIniKey, szSaveTitle, ARRAY_LEN( szSaveTitle ), + szWorldName, ARRAY_LEN( szWorldName ), &saveTime )) + return NULL; + + ParseSaveString( szWorldName, szSaveTitle, saveTime, &saveGameData, bUserName ); + if( !saveGameData.szUserName[0] ) + return NULL; + + CLTGUIColumnCtrl* pColCtrl = CreateColumnCtrl(nCommandId, nControlHelpStringId, pos ); + pColCtrl->SetFont(LTNULL,kSmallFontSize); + + // The world name column + pColCtrl->AddColumn(saveGameData.szUserName, kNameWidth); + + // The column that contains the date/time + pColCtrl->AddColumn(saveGameData.szTime, kTimeWidth); + + return pColCtrl; + +} + +void CScreenLoad::BuildSavedLevelLists() +{ + LTIntPt pos = m_nextPos; + + if (g_pClientSaveLoadMgr->QuickSaveExists()) + { + CLTGUITextCtrl *pCtrl = AddTextItem( IDS_QUICKLOAD,LTNULL,LTNULL,kDefaultPos,LTTRUE); + pCtrl->Enable(LTFALSE); + pos = m_nextPos; + m_nextPos.x += kIndent; + CLTGUIColumnCtrl* pColCtrl = BuildSaveControls( QUICKSAVE_INIKEY, CMD_CUSTOM, IDS_HELP_QUICKLOAD, false, m_nextPos ); + AddControl(pColCtrl); + m_nextPos.x -= kIndent; + } + + if (g_pClientSaveLoadMgr->ReloadSaveExists()) + { + + CLTGUITextCtrl *pCtrl = AddTextItem( IDS_LOADCURRENT,LTNULL,LTNULL,kDefaultPos,LTTRUE); + pCtrl->Enable(LTFALSE); + pos = m_nextPos; + m_nextPos.x += kIndent; + CLTGUIColumnCtrl* pColCtrl = BuildSaveControls( RELOADLEVEL_INIKEY, CMD_CUSTOM+1, IDS_HELP_RELOAD, false, m_nextPos ); + AddControl(pColCtrl); + m_nextPos.x -= kIndent; + } + + if (g_pClientSaveLoadMgr->CheckpointSaveExists()) + { + + CLTGUITextCtrl *pCtrl = AddTextItem( IDS_LOADCHECKPOINT,LTNULL,LTNULL,kDefaultPos,LTTRUE); + pCtrl->Enable(LTFALSE); + pos = m_nextPos; + m_nextPos.x += kIndent; + CLTGUIColumnCtrl* pColCtrl = BuildSaveControls( CHECKPOINTSAVE_INIKEY, CMD_CUSTOM+2, IDS_HELP_LOADCHECKPOINTSAVE, false, m_nextPos ); + AddControl(pColCtrl); + m_nextPos.x -= kIndent; + } + + CLTGUITextCtrl *pCtrl = AddTextItem(IDS_LOAD_USERGAME,LTNULL,LTNULL,kDefaultPos,LTTRUE); + pCtrl->Enable(LTFALSE); + + pos = m_nextPos; + pos.x += kIndent; + uint16 nHeight = (GetPageBottom() - pos.y); + uint16 nWidth = (GetPageRight() - pos.x) - 32; + CLTGUIListCtrl *pList = AddList(pos,nHeight,true,nWidth); + pList->SetFrameWidth(2); + pList->SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor); + pList->SetIndent(LTIntPt(4,4)); + pList->SetScrollWrap(LTFALSE); + for (int i = 0; i < kMaxSave; i++) + { + if (g_pClientSaveLoadMgr->SlotSaveExists( i+1 )) + { + CLTGUIColumnCtrl* pColCtrl = BuildSaveControls( g_pClientSaveLoadMgr->GetSlotSaveKey( i+1 ), CMD_CUSTOM+3+i, IDS_HELP_LOADGAME, true ); + pList->AddControl(pColCtrl); + + } + } +} + +void CScreenLoad::ClearSavedLevelLists() +{ + RemoveAll(); +} + + + +void CScreenLoad::ParseSaveString(char const* pszWorldName, char const* pszTitle, time_t const& saveTime, SaveGameData *pSG, bool bUserName) +{ + int mission = -1; + int level = -1; + + // Check inputs. + if (!pszWorldName || !pszWorldName[0] || !pszTitle ) + return; + + char* pMissionNum = LTNULL; + char* pLevelNum = LTNULL; + if (bUserName) + { + strncpy(pSG->szUserName,pszTitle,128); + } + else + { + pSG->szUserName[0] = LTNULL; + char szTitle[SLMGR_MAX_INISTR_LEN+1]; + SAFE_STRCPY( szTitle, pszTitle ); + pMissionNum = strtok(szTitle,","); + pLevelNum = strtok(LTNULL,","); + } + + strncpy(pSG->szWorldName,pszWorldName,128); + + if (pMissionNum) + mission = atoi(pMissionNum); + if (pLevelNum) + level = atoi(pLevelNum); + + struct tm* pTimeDate = LTNULL; + pTimeDate = localtime (&saveTime); + if (pTimeDate) + { + if (g_pInterfaceResMgr->IsEnglish()) + { + sprintf (pSG->szTime, "%02d/%02d/%02d %02d:%02d:%02d", pTimeDate->tm_mon + 1, pTimeDate->tm_mday, (pTimeDate->tm_year + 1900) % 100, pTimeDate->tm_hour, pTimeDate->tm_min, pTimeDate->tm_sec); + } + else + { + sprintf (pSG->szTime, "%02d/%02d/%02d %02d:%02d:%02d", pTimeDate->tm_mday, pTimeDate->tm_mon + 1, (pTimeDate->tm_year + 1900) % 100, pTimeDate->tm_hour, pTimeDate->tm_min, pTimeDate->tm_sec); + } + } + + if (strlen(pSG->szUserName) == 0) + { + if (mission >= 0) + { + MISSION* pMission = g_pMissionButeMgr->GetMission(mission); + if (pMission) + { + int missionId = pMission->nNameId; + char szMission[64]; + char szLevel[64] = ""; + LoadString(missionId,szMission,sizeof(szMission)); + LEVEL* pLevel = g_pMissionButeMgr->GetLevel(mission,level); + if (pLevel) + { + LoadString(pLevel->nNameId,szLevel,sizeof(szLevel)); + } + + //strip whitespace + char *pszLevel = szLevel; + while (*pszLevel == ' ' || *pszLevel == '\t') + pszLevel++; + + if(strlen(pszLevel)) + sprintf(pSG->szUserName,"%s",pszLevel); + else + sprintf(pSG->szUserName,"%s",szMission); + } + } + else + { + strncpy(pSG->szUserName,pszWorldName,128); + } + } + + +}; + + +LTBOOL CScreenLoad::HandleKeyDown(int key, int rep) +{ + + if (key == VK_F9) + { + SendCommand(CMD_CUSTOM,0,0); + return LTTRUE; + } + return CBaseScreen::HandleKeyDown(key,rep); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ExitLoadScreenCB +// +// PURPOSE: Callback for the load mission screen messagebox... +// +// ----------------------------------------------------------------------- // + +static void ExitLoadScreenCB(LTBOOL bReturn, void *pData) +{ + // If they confirm, then go back. + if (bReturn) + { + g_pInterfaceMgr->GetScreenMgr( )->PreviousScreen( ); + } +} + + + +void CScreenLoad::Escape() +{ + // If we're playing mp, and we're about to go to the host screen, then warn + // the user. + if( IsMultiplayerGame( ) && g_pLTClient->IsConnected()) + { + if( m_pScreenMgr->GetFromHistory( 0 ) == SCREEN_ID_HOST ) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = ExitLoadScreenCB; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_SHUTDOWNSERVER,&mb); + return; + } + } + + CBaseScreen::Escape(); +} diff --git a/Jack/ClientShellDLL/ScreenLoad.h b/Jack/ClientShellDLL/ScreenLoad.h new file mode 100644 index 00000000..68fa5997 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenLoad.h @@ -0,0 +1,52 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenLoad.h +// +// PURPOSE : Interface screen for loading saved games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_LOAD_H_) +#define _SCREEN_LOAD_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +struct SaveGameData +{ + SaveGameData() {szWorldName[0] = LTNULL;szUserName[0] = LTNULL;szTime[0] = LTNULL;} + char szWorldName[128]; + char szUserName[128]; + char szTime[128]; +}; + + +class CScreenLoad : public CBaseScreen +{ +public: + CScreenLoad(); + virtual ~CScreenLoad(); + + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + LTBOOL HandleKeyDown(int key, int rep); + +protected: + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void BuildSavedLevelLists(); + void ClearSavedLevelLists(); + void ParseSaveString(char const* pszWorldName, char const* pszTitle, time_t const& saveTime, SaveGameData *pSG, bool bUserName); + CLTGUIColumnCtrl* BuildSaveControls( char const* pszIniKey, uint32 nCommandId, uint32 nControlHelpStringId, + bool bUserName, LTIntPt pos = kDefaultPos ); + +}; + +#endif // !defined(_SCREEN_LOAD_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMain.cpp b/Jack/ClientShellDLL/ScreenMain.cpp new file mode 100644 index 00000000..3f3924b6 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMain.cpp @@ -0,0 +1,277 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMain.cpp +// +// PURPOSE : Top level interface screen +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ScreenMain.h" +#include "ScreenMgr.h" +#include "LayoutMgr.h" +#include "ScreenCommands.h" +#include "WinUtil.h" +#include "direct.h" +#include "GameClientShell.h" +#include "ModelButeMgr.h" +#include "ClientSaveLoadMgr.h" +#include "MissionMgr.h" +#include "ClientMultiplayerMgr.h" +#include "ResShared.h" +#include "ScreenMulti.h" + +namespace +{ + void QuitCallBack(LTBOOL bReturn, void *pData) + { + CScreenMain *pThisScreen = (CScreenMain *)pData; + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_EXIT,0,0); + }; + +} + +extern bool g_bLAN; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenMain::CScreenMain() +{ + m_pResume = LTNULL; + +} + +CScreenMain::~CScreenMain() +{ +} + + +// Build the screen +LTBOOL CScreenMain::Build() +{ + + char szTmp[1024]; + FormatString(IDS_SINGLEPLAYER,szTmp,sizeof(szTmp)); + +#if !defined(_MPDEMO) + CLTGUITextCtrl* pSP = AddTextItem(szTmp, CMD_SINGLE_PLAYER, IDS_HELP_SINGLEPLAYER); + m_pResume = AddTextItem(IDS_CONTINUE_GAME, CMD_CONTINUE_GAME, IDS_HELP_CONTINUE_GAME); + m_pResume->Enable(LTFALSE); +#endif // !defined(_MPDEMO) + +#if !defined(_SPDEMO) + CLTGUITextCtrl* pMP = AddTextItem(IDS_MULTIPLAYER, CMD_MULTI_PLAYER, IDS_HELP_MULTIPLAYER); +#endif // !defined(_SPDEMO) + + CLTGUITextCtrl* pOptions = AddTextItem(IDS_OPTIONS, CMD_OPTIONS, IDS_HELP_OPTIONS); + CLTGUITextCtrl* pCtrl = AddTextItem(IDS_PROFILE, CMD_PROFILE, IDS_HELP_PROFILE); + + AddTextItem(IDS_EXIT, CMD_QUIT, IDS_HELP_EXIT, s_BackPos); + + // Put the version number at versionpos, but don't let it clip off the edge. + LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"VersionPos"); + uint8 nFont = g_pLayoutMgr->GetHelpFont(); + + char szVersion[256]; + g_pVersionMgr->GetDisplayVersion( szVersion, ARRAY_LEN( szVersion )); + +// Don't show mod for demo's. +#ifndef _DEMO + strcat( szVersion, " - " ); + strcat( szVersion, g_pClientMultiplayerMgr->GetModName()); +#endif // _DEMO + + pCtrl= AddTextItem( szVersion,LTNULL,LTNULL,pos,LTTRUE,nFont); + pCtrl->SetFont(LTNULL,g_pLayoutMgr->GetHelpSize()); + uint16 nUnScaledWidth = pCtrl->GetBaseWidth(); + if( pos.x + nUnScaledWidth >= 640 ) + { + pos.x = 640 - nUnScaledWidth; + } + int nUnScaledHeight = pCtrl->GetBaseHeight(); + if( pos.y + nUnScaledHeight > 480 ) + { + pos.y = 480 - nUnScaledHeight; + } + pCtrl->SetBasePos(pos); + + //Build multiplayer screen to force construction of DM mission file + CScreenMulti *pMulti = (CScreenMulti *)m_pScreenMgr->GetScreenFromID(SCREEN_ID_MULTI); + pMulti->Build(); + + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + + return LTTRUE; + +} + +void CScreenMain::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + //since can get here from various points in the game, let's make sure that we're not fading in or out... + g_pInterfaceMgr->AbortScreenFade(); + + + SetSelection(-1); + + // Always assume sp save/load when in the main screen. This is so the + // "continue game" and "quick load" assumes sp. + g_pGameClientShell->SetGameType( eGameTypeSingle ); + + + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return; + } + + g_pClientSaveLoadMgr->SetUseMultiplayerFolders( false ); + g_pClientMultiplayerMgr->SetupServerSinglePlayer( ); + + if( m_pResume ) + m_pResume->Enable( g_pClientSaveLoadMgr->CanContinueGame() ); + + // We don't go thru the main screen when joining from command line, so disable it if + // we get here. + g_pInterfaceMgr->SetCommandLineJoin( false ); + } + + CBaseScreen::OnFocus(bFocus); +} + + +uint32 CScreenMain::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_SINGLE_PLAYER: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_SINGLE); + break; + } + + case CMD_MULTI_PLAYER: + { + g_bLAN = false; + + char path[256]; + std::string sFN = _getcwd(path,sizeof(path)); + sFN += "\\"; + sFN += MISSION_DM_FILE; + + if (!CWinUtil::FileExist(sFN.c_str())) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_NO_DM_MAPS,&mb); + return 0; + } + + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_MULTI); + } break; + + case CMD_MULTI_PLAYER_LAN: + { + g_bLAN = true; + char path[256]; + std::string sFN = _getcwd(path,sizeof(path)); + sFN += "\\"; + sFN += MISSION_DM_FILE; + + if (!CWinUtil::FileExist(sFN.c_str())) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_NO_DM_MAPS,&mb); + return 0; + } + + g_pGameClientShell->SetGameType( eGameTypeDeathmatch); + + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_MULTI); + } break; + + case CMD_OPTIONS: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_OPTIONS); + break; + } + case CMD_PROFILE: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_PROFILE); + break; + } + case CMD_QUIT: + { + + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = QuitCallBack; + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_SUREWANTQUIT,&mb); + break; + } + case CMD_EXIT: + { +#ifdef _DEMO + g_pInterfaceMgr->ShowDemoScreens(LTTRUE); +#else + g_pLTClient->Shutdown(); +#endif + break; + } + case CMD_RESUME: + { + Escape(); + break; + } + case CMD_CONTINUE_GAME: + { + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return 0; + } + + // Start the game from the continue save. + if( !g_pMissionMgr->StartGameFromContinue( )) + return 0; + + return 1; + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + +// Screen specific rendering +LTBOOL CScreenMain::Render(HSURFACE hDestSurf) +{ + return CBaseScreen::Render(hDestSurf); + +} + + +void CScreenMain::Escape() +{ + CBaseScreen::Escape(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMain.h b/Jack/ClientShellDLL/ScreenMain.h new file mode 100644 index 00000000..5b5472f0 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMain.h @@ -0,0 +1,46 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMain.h +// +// PURPOSE : Top level interface screen +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_MAIN_H_ +#define _SCREEN_MAIN_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "BaseScaleFX.h" + +class CScreenMain : public CBaseScreen +{ +public: + CScreenMain(); + virtual ~CScreenMain(); + + // Build the screen + LTBOOL Build(); + + // This is called when the screen gets or loses focus + virtual void OnFocus(LTBOOL bFocus); + + virtual void Escape(); + + LTBOOL DoMultiplayer(LTBOOL bMinimize); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + LTBOOL Render(HSURFACE hDestSurf); + + CLTGUITextCtrl* m_pResume; + +}; + +#endif // _SCREEN_MAIN_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMgr.cpp b/Jack/ClientShellDLL/ScreenMgr.cpp new file mode 100644 index 00000000..9332a5fd --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMgr.cpp @@ -0,0 +1,368 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMgr.cpp +// +// PURPOSE : Interface screen manager +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ScreenMgr.h" +#include "ClientButeMgr.h" +#include "SoundMgr.h" +#include "TransitionFXMgr.h" + +//screens +#include "BaseScreen.h" +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenMgr::CScreenMgr() +{ + m_pCurrentScreen = LTNULL; + m_eCurrentScreenID = (eScreenID)0; + m_eLastScreenID = (eScreenID)0; + m_nHistoryLen = 0; +} + +CScreenMgr::~CScreenMgr() +{ + +} + + +////////////////////////////////////////////////////////////////////// +// Function name : CScreenMgr::Init +// Description : +// Return type : LTBOOL +////////////////////////////////////////////////////////////////////// + +LTBOOL CScreenMgr::Init() +{ + m_pTransitionFXMgr = debug_new(CTransitionFXMgr); + m_pTransitionFXMgr->Init(); + return LTTRUE; +} + +////////////////////////////////////////////////////////////////////// +// Function name : CScreenMgr::Term +// Description : +// Return type : void +////////////////////////////////////////////////////////////////////// + +void CScreenMgr::Term() +{ + // Term the screens + for (uint16 i=0; i < m_screenArray.size(); ++i) + { + m_screenArray[i]->Term(); + debug_delete(m_screenArray[i]); + } + m_screenArray.clear(); + + if(m_pTransitionFXMgr) + { + m_pTransitionFXMgr->Term(); + debug_delete(m_pTransitionFXMgr); + m_pTransitionFXMgr = LTNULL; + } +} + + + +// Renders the screen to a surface +LTBOOL CScreenMgr::Render(HSURFACE hDestSurf) +{ + if (m_pCurrentScreen) + { + return m_pCurrentScreen->Render(hDestSurf); + } + return LTFALSE; +} + +bool CScreenMgr::UpdateInterfaceSFX() +{ + if (m_pCurrentScreen) + { + return m_pCurrentScreen->UpdateInterfaceSFX(); + } + + return true; +} + +void CScreenMgr::HandleKeyDown (int vkey, int rep) +{ + if (m_pCurrentScreen) + { + if (vkey == VK_ESCAPE) + { + m_pCurrentScreen->Escape(); + } + else + m_pCurrentScreen->HandleKeyDown(vkey,rep); + } +} + +void CScreenMgr::HandleKeyUp (int vkey) +{ + if (m_pCurrentScreen) + { + m_pCurrentScreen->HandleKeyUp(vkey); + } +} + +void CScreenMgr::HandleChar (unsigned char c) +{ + if (m_pCurrentScreen) + { + m_pCurrentScreen->HandleChar(c); + } +} + + +eScreenID CScreenMgr::GetFromHistory( int nHistoryIndex ) +{ + if( nHistoryIndex < MAX_SCREEN_HISTORY ) + return m_eScreenHistory[m_nHistoryLen - nHistoryIndex - 1]; + return SCREEN_ID_NONE; +} + +LTBOOL CScreenMgr::PreviousScreen() +{ + if (m_nHistoryLen < 1) return LTFALSE; + + CBaseScreen *pNewScreen=GetScreenFromID(m_eScreenHistory[m_nHistoryLen-1]); + if (pNewScreen) + { + SwitchToScreen(pNewScreen); + + // The music may change per screen... + //g_pInterfaceMgr->SetupMusic(); + + return LTTRUE; + } + return LTFALSE; +} + +LTBOOL CScreenMgr::SetCurrentScreen(eScreenID screenID) +{ + + CBaseScreen *pNewScreen=GetScreenFromID(screenID); + if (pNewScreen) + { + SwitchToScreen(pNewScreen); + + // The music may change per screen... + //g_pInterfaceMgr->SetupMusic(); + + return LTTRUE; + } + return LTFALSE; +} + +void CScreenMgr::EscapeCurrentScreen() +{ + if (m_pCurrentScreen) + m_pCurrentScreen->Escape(); +} + +void CScreenMgr::ExitScreens() +{ + // Tell the old screen that it is losing focus + if (m_pCurrentScreen) + { + m_pCurrentScreen->OnFocus(LTFALSE); + } + + //clear our screen history (no longer relevant) + ClearHistory(); + +} + + +void CScreenMgr::SwitchToScreen(CBaseScreen *pNewScreen) +{ + + CBaseScreen *pOldScreen = m_pCurrentScreen; + // Tell the old screen that it is losing focus + if (m_pCurrentScreen && pNewScreen != m_pCurrentScreen) + { + m_pCurrentScreen->OnFocus(LTFALSE); + int insert = 0; + + //look through the list of screens we've visited, if we find the + // one we're going to cut the history back to that point. + // otherwise add it at the end. + eScreenID nextScreenID = (eScreenID)pNewScreen->GetScreenID(); + eScreenID currentScreenID = (eScreenID)m_pCurrentScreen->GetScreenID(); + while (insert < m_nHistoryLen && m_eScreenHistory[insert] != nextScreenID) + ++insert; + if (insert == m_nHistoryLen) + { + if (m_nHistoryLen < MAX_SCREEN_HISTORY) + { + ++m_nHistoryLen; + m_eScreenHistory[insert] = currentScreenID; + } + } + else + { + m_nHistoryLen = insert; + } + } + + m_pCurrentScreen=pNewScreen; + m_eLastScreenID = m_eCurrentScreenID; + + m_eCurrentScreenID = (eScreenID)m_pCurrentScreen->GetScreenID(); + + // If the new screen hasn't been built yet... better build it! + if (!m_pCurrentScreen->IsBuilt()) + { + + m_pCurrentScreen->Build(); + } + + // Tell the new screen that it is gaining focus + if (pNewScreen && pNewScreen != pOldScreen) + { + pNewScreen->OnFocus(LTTRUE); + } +} + + +// Returns a screen based on an ID +CBaseScreen *CScreenMgr::GetScreenFromID(eScreenID screenID) +{ + CBaseScreen *pScreen=NULL; + + ScreenArray::iterator iter = m_screenArray.begin(); + while (iter != m_screenArray.end() && (*iter)->GetScreenID() != (int)screenID) + iter++; + + if (iter != m_screenArray.end()) + pScreen = (*iter); + + return pScreen; + +} + + +// Mouse messages +void CScreenMgr::OnLButtonDown(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnLButtonDown(x,y); +} + +void CScreenMgr::OnLButtonUp(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnLButtonUp(x,y); +} + +void CScreenMgr::OnLButtonDblClick(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnLButtonDblClick(x,y); +} + +void CScreenMgr::OnRButtonDown(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnRButtonDown(x,y); +} + +void CScreenMgr::OnRButtonUp(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnRButtonUp(x,y); +} + +void CScreenMgr::OnRButtonDblClick(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnRButtonDblClick(x,y); +} + +void CScreenMgr::OnMouseMove(int x, int y) +{ + if (m_pCurrentScreen) + m_pCurrentScreen->OnMouseMove(x,y); +} + + +void CScreenMgr::AddScreen(CBaseScreen* pScreen) +{ + if (pScreen) + { + m_screenArray.push_back(pScreen); + } + +} + +LTBOOL CScreenMgr::ForceScreenUpdate(eScreenID screenID) +{ + if (!m_pCurrentScreen || m_eCurrentScreenID != screenID) return LTFALSE; + + return m_pCurrentScreen->HandleForceUpdate(); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CScreenMgr::ScreenDimsChanged +// +// PURPOSE: Handle the screen dims changing +// +// --------------------------------------------------------------------------- // + +void CScreenMgr::ScreenDimsChanged() +{ + if (m_pCurrentScreen) + { + m_pCurrentScreen->ScreenDimsChanged(); + } + +} + + + +void CScreenMgr::ClearHistory() +{ + m_nHistoryLen = 0; + m_eScreenHistory[0] = (eScreenID)0; + m_pCurrentScreen = LTNULL; + m_eCurrentScreenID = (eScreenID)0; + + GetTransitionFXMgr()->ClearScreenHistory(); + +} + +void CScreenMgr::AddScreenToHistory(eScreenID screenID) +{ + int insert = 0; + while (insert < m_nHistoryLen && m_eScreenHistory[insert] != screenID) + ++insert; + if (insert == m_nHistoryLen) + { + if (m_nHistoryLen < MAX_SCREEN_HISTORY) + { + ++m_nHistoryLen; + m_eScreenHistory[insert] = screenID; + } + } + else + { + m_nHistoryLen = insert+1; + } + +} diff --git a/Jack/ClientShellDLL/ScreenMgr.h b/Jack/ClientShellDLL/ScreenMgr.h new file mode 100644 index 00000000..030d832d --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMgr.h @@ -0,0 +1,102 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMgr.h +// +// PURPOSE : Interface screen manager +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_SCREEN_MGR_H_) +#define _SCREEN_MGR_H_ + +#include "InterfaceResMgr.h" + +#define MAX_SCREEN_HISTORY 20 + +class CGameClientShell; +class CBaseScreen; +class CTransitionFXMgr; + +enum eScreenID +{ +#define INCLUDE_AS_ENUM +#include "ScreenEnum.h" +#undef INCLUDE_AS_ENUM +}; + + +class CScreenMgr +{ +public: + CScreenMgr(); + virtual ~CScreenMgr(); + virtual LTBOOL Init(); + virtual void Term(); + + virtual void HandleKeyDown (int vkey, int rep); + virtual void HandleKeyUp (int vkey); + virtual void HandleChar (unsigned char c); + + // Mouse messages + virtual void OnLButtonDown(int x, int y); + virtual void OnLButtonUp(int x, int y); + virtual void OnLButtonDblClick(int x, int y); + virtual void OnRButtonDown(int x, int y); + virtual void OnRButtonUp(int x, int y); + virtual void OnRButtonDblClick(int x, int y); + virtual void OnMouseMove(int x, int y); + + + virtual LTBOOL ForceScreenUpdate(eScreenID screenID); + + virtual eScreenID GetCurrentScreenID() {return m_eCurrentScreenID;} + virtual eScreenID GetLastScreenID() {return m_eLastScreenID;} + virtual uint16 GetScreenIDFromName(char * pName) = 0; + virtual LTBOOL SetCurrentScreen(eScreenID screenID); + virtual LTBOOL PreviousScreen(); + virtual void EscapeCurrentScreen(); + virtual void ExitScreens(); + + // Get from history, where nHistoryIndex=0 is the most recent in history. + eScreenID GetFromHistory( int nHistoryIndex ); + + virtual const char *GetScreenName(eScreenID id) = 0; + + virtual CTransitionFXMgr * GetTransitionFXMgr() {return m_pTransitionFXMgr;} + + // Renders the screen to a surface + virtual LTBOOL Render(HSURFACE hDestSurf); + virtual bool UpdateInterfaceSFX(); + virtual void ScreenDimsChanged(); + + virtual CBaseScreen* GetScreenFromID(eScreenID screenID); + + + virtual void ClearHistory(); + virtual void AddScreenToHistory(eScreenID screenID); + +protected: + // note that the screen should already have been initted before being added + virtual void AddScreen(CBaseScreen* pScreen); + + virtual void SwitchToScreen(CBaseScreen *pNewScreen); + +protected: + + int m_nHistoryLen; + eScreenID m_eScreenHistory[MAX_SCREEN_HISTORY]; + eScreenID m_eCurrentScreenID; + eScreenID m_eLastScreenID; + CBaseScreen* m_pCurrentScreen; // The current screen + + CTransitionFXMgr * m_pTransitionFXMgr; // ABM 2/7/02 added for screens to access + + //screens + typedef std::vector ScreenArray; + ScreenArray m_screenArray; // Pointer to each screen +}; + +#endif // _SCREENMGR_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMouse.cpp b/Jack/ClientShellDLL/ScreenMouse.cpp new file mode 100644 index 00000000..a385c72b --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMouse.cpp @@ -0,0 +1,160 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMouse.cpp +// +// PURPOSE : Interface screen for setting mouse options +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenMouse.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameSettings.h" +#include "InterfaceMgr.h" +#include "VarTrack.h" + +extern VarTrack g_vtMouseMinSensitivity; +extern VarTrack g_vtMouseMaxSensitivity; +extern VarTrack g_vtMouseMinInputRate; +extern VarTrack g_vtMouseMaxInputRate; + +namespace +{ + int kGap = 200; + int kWidth = 200; + +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenMouse::CScreenMouse() +{ + + m_bInvertY = LTFALSE; + m_bMouseLook = LTFALSE; + m_nInputRate = 0; + m_nSensitivity = 0; + m_nVehicleTurn = 100; + + m_pSensitivityCtrl = LTNULL; + m_pInputCtrl = LTNULL; + + +} + +CScreenMouse::~CScreenMouse() +{ + +} + +// Build the screen +LTBOOL CScreenMouse::Build() +{ + CreateTitle(IDS_TITLE_MOUSE); + + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_MOUSE,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_MOUSE,"SliderWidth"); + + //background frame + LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_MOUSE,"FrameRect"); + LTIntPt pos(frameRect.left,frameRect.top); + int nHt = frameRect.bottom - frameRect.top; + int nWd = frameRect.right - frameRect.left; + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_MOUSE,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_NonSelectedColor); + AddControl(pFrame); + + + //Always mouse look + char szYes[16]; + char szNo[16]; + FormatString(IDS_YES,szYes,sizeof(szYes)); + FormatString(IDS_NO,szNo,sizeof(szNo)); + CLTGUIToggle* pToggle = AddToggle(IDS_MOUSE_MOUSELOOK, IDS_HELP_MOUSELOOK, kGap, &m_bMouseLook ); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + //mouse sensitivity + int nMin = int(g_vtMouseMinSensitivity.GetFloat()); + int nMax = int(g_vtMouseMaxSensitivity.GetFloat()); + m_pSensitivityCtrl= AddSlider(IDS_MOUSE_SENSITIVITY, IDS_HELP_MOUSE_SENSE, kGap, kWidth, -1, &m_nSensitivity); + m_pSensitivityCtrl->SetSliderRange(nMin, nMax); + m_pSensitivityCtrl->SetSliderIncrement(1); + + //mouse responsiveness + nMin = int(g_vtMouseMinInputRate.GetFloat()); + nMax = int(g_vtMouseMaxInputRate.GetFloat()); + m_pInputCtrl=AddSlider(IDS_MOUSE_INPUTRATE, IDS_HELP_MOUSE_INPUT, kGap, kWidth, -1, &m_nInputRate); + m_pInputCtrl->SetSliderRange(nMin, nMax); + m_pInputCtrl->SetSliderIncrement(2); + + //invert mouse + pToggle = AddToggle(IDS_MOUSE_INVERTYAXIS, IDS_HELP_INVERTY, kGap, &m_bInvertY ); + pToggle->SetOnString(szYes); + pToggle->SetOffString(szNo); + + CLTGUISlider *pSlider = AddSlider(IDS_VEHICLETURN, IDS_HELP_VEHICLETURN, kGap, kWidth, -1, &m_nVehicleTurn); + pSlider->SetSliderRange(50, 150); + pSlider->SetSliderIncrement(10); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; + +} + +uint32 CScreenMouse::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); +}; + + + +// Change in focus +void CScreenMouse::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + pProfile->SetMouse(); + m_bMouseLook = pProfile->m_bMouseLook; + m_bInvertY = pProfile->m_bInvertY; + + m_nInputRate = pProfile->m_nInputRate; + + m_nSensitivity = pProfile->m_nSensitivity; + + m_nVehicleTurn = pProfile->m_nVehicleTurn; + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + + pProfile->m_bMouseLook = m_bMouseLook; + pProfile->m_bInvertY = m_bInvertY; + pProfile->m_nInputRate = m_nInputRate; + pProfile->m_nSensitivity = m_nSensitivity; + pProfile->m_nVehicleTurn = m_nVehicleTurn; + + pProfile->ApplyMouse(); + pProfile->Save(); + } + CBaseScreen::OnFocus(bFocus); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMouse.h b/Jack/ClientShellDLL/ScreenMouse.h new file mode 100644 index 00000000..9757d98e --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMouse.h @@ -0,0 +1,47 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMouse.h +// +// PURPOSE : Interface screen for setting mouse options +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_MOUSE_H_ +#define _SCREEN_MOUSE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenMouse : public CBaseScreen +{ +public: + CScreenMouse(); + virtual ~CScreenMouse(); + + // Build the screen + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + +protected: + void ClearBindings(); + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + + LTBOOL m_bInvertY; + LTBOOL m_bMouseLook; + int m_nInputRate; + int m_nSensitivity; + int m_nVehicleTurn; + + CLTGUISlider *m_pInputCtrl; + CLTGUISlider *m_pSensitivityCtrl; + +}; + +#endif // _SCREEN_MOUSE_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenMulti.cpp b/Jack/ClientShellDLL/ScreenMulti.cpp new file mode 100644 index 00000000..20333613 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMulti.cpp @@ -0,0 +1,629 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMulti.cpp +// +// PURPOSE : Interface screen for hosting and joining multi player games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenMulti.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "GameClientShell.h" +#include "ClientSaveLoadMgr.h" +#include "ClientMultiplayerMgr.h" +#include "msgids.h" +#include "WinUtil.h" +#include "direct.h" +#include "ClientButeMgr.h" +#include "IGameSpy.h" + +namespace +{ + const int kMaxCDKeyLength = 24; + uint16 kWaitWidth = 160; + uint16 kWaitHeight = 60; + + + void EditCDKeyCallBack(LTBOOL bReturn, void *pData) + { + CScreenMulti *pThisScreen = (CScreenMulti *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_MULTI); + if (pThisScreen) + pThisScreen->SendCommand(bReturn ? CMD_OK : CMD_CANCEL,(uint32)pData,CMD_EDIT_CDKEY); + } + void NewVersionCallBack(LTBOOL bReturn, void *pData) + { + CScreenMulti *pThisScreen = (CScreenMulti *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_MULTI); + if (pThisScreen) + pThisScreen->SendCommand(CMD_OK,NULL,CMD_UPDATE); + } + + unsigned char CDKeyFilter(unsigned char c) + { + return toupper(c); + } +} + + +extern bool g_bLAN; + +//local butemgr for use reading MP mission configurations +class CMPButeMgr : public CGameButeMgr +{ + public : + virtual LTBOOL Init(const char* szAttributeFile); + CButeMgr* GetButeMgr() {return &m_buteMgr;} +}; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMPButeMgr::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // +LTBOOL CMPButeMgr::Init(const char* szAttributeFile) +{ + if(!szAttributeFile) return LTFALSE; + + // See if we already have this attribute file loaded. + if( m_strAttributeFile.GetLength( ) && m_strAttributeFile.CompareNoCase( szAttributeFile ) == 0 ) + return LTTRUE; + + // Start fresh. + Term( ); + + ILTStream* pDStream = LTNULL; + LTRESULT dr = g_pLTBase->OpenFile(szAttributeFile, &pDStream); + bool bFound = (dr == LT_OK && pDStream); + if (pDStream) + pDStream->Release(); + + + if (!bFound || !Parse(szAttributeFile)) + return LTFALSE; + + return LTTRUE; +}; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenMulti::CScreenMulti() : + m_sCurCDKey(""), + m_sLastValidCDKey(""), + m_pCDKeyCtrl( NULL ) +{ +} + +CScreenMulti::~CScreenMulti() +{ + +} + +// Build the screen +LTBOOL CScreenMulti::Build() +{ + + CreateTitle(IDS_TITLE_MULTI); + + //basic controls + AddTextItem(IDS_PLAYER_SETUP, CMD_PLAYER, IDS_HELP_PLAYER); + +#if !defined( _DEMO ) + + m_pCDKeyCtrl = AddColumnCtrl(CMD_EDIT_CDKEY, IDS_HELP_CDKEY); + m_pCDKeyCtrl->AddColumn(LoadTempString(IDS_CDKEY), 200); + m_pCDKeyCtrl->AddColumn(" ", 320, LTTRUE); + +#endif // !defined( _DEMO ) + + m_pJoin = AddTextItem(IDS_JOIN, CMD_JOIN, IDS_HELP_JOIN); + m_pHost = AddTextItem(IDS_HOST, CMD_HOST, IDS_HELP_HOST); + + + m_pUpdate = AddTextItem(IDS_LAUNCH_UPDATE, CMD_UPDATE, IDS_HELP_LAUNCH_UPDATE); + + + HTEXTURE hUp = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup.dtx"); + HTEXTURE hUpH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup_h.dtx"); + HTEXTURE hDown = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn.dtx"); + HTEXTURE hDownH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn_h.dtx"); + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_MULTI,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + + LTRect rect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_MULTI,"SystemMOTDRect"); + LTIntPt pos(rect.left,rect.top); + LTIntPt size( (rect.right - rect.left),(rect.bottom - rect.top)); + uint8 nMOTDSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_MULTI,"MessageFontSize"); + uint8 nFont = g_pLayoutMgr->GetScreenFontFace((eScreenID)m_nScreenID); + CUIFont* pFont = g_pInterfaceResMgr->GetFont(nFont); + + nFont = g_pLayoutMgr->GetDialogFontFace(); + pFont = g_pInterfaceResMgr->GetFont(nFont); + uint8 nFontSize = g_pLayoutMgr->GetDialogFontSize(); + + m_pWaitText = debug_new(CLTGUITextCtrl); + if (!m_pWaitText->Create(LoadTempString(IDS_INTERNET), NULL, LTNULL, pFont, nFontSize, this)) + { + debug_delete(m_pWaitText); + return LTFALSE; + } + m_pWaitText->SetColors(argbBlack, argbBlack, argbBlack); + m_pWaitText->Enable(LTFALSE); + + uint16 w = 16+m_pWaitText->GetBaseWidth(); + uint16 h = 16+m_pWaitText->GetBaseHeight(); + + + m_pWait = debug_new(CLTGUIWindow); + + char szBack[128] = ""; + g_pLayoutMgr->GetDialogFrame(szBack,sizeof(szBack)); + + m_pWait->Create(g_pInterfaceResMgr->GetTexture(szBack),w,h); + + uint16 x = (640-w)/2; + uint16 y = (480-h)/2; + m_pWait->SetBasePos(LTIntPt(x,y)); + AddControl(m_pWait); + + + m_pWait->AddControl(m_pWaitText,LTIntPt(8,8)); + + + // status text ----------------------------------------------- + pos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_MULTI,"StatusPos"); + char szTmp[256] = ""; + LoadString(IDS_WAITING,szTmp,sizeof(szTmp)); + m_pStatusCtrl = AddTextItem(FormatTempString(IDS_STATUS_STRING,szTmp), 0, 0, pos, LTTRUE); + m_pStatusCtrl->SetFont(NULL, nMOTDSize); + + CreateMPMissionFile(); + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenMulti::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (m_eCurState == eState_Startup || m_eCurState == eState_ValidateCDKey) return 0; + switch(dwCommand) + { + case CMD_UPDATE: + { + //LaunchSierraUp(); + } break; + + case CMD_OK: + { + return HandleCallback(dwParam1,dwParam2); + } break; + + case CMD_PLAYER: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_PLAYER); + break; + } + case CMD_JOIN: + { + if (m_eCurState == eState_NoCDKey) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_CDKEY_INVALID,&mb); + return 0; + } + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_JOIN); + + break; + } + + case CMD_HOST: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_HOST); + break; + } + case CMD_EDIT_CDKEY : + { + ChangeCDKey(); + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenMulti::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + if( !g_pMissionButeMgr->Init( MISSION_DM_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DM_FILE ); + return; + } + + char szCDKey[256]; + g_pVersionMgr->GetCDKey( szCDKey, ARRAY_LEN( szCDKey )); + m_sCurCDKey = szCDKey; + m_sLastValidCDKey = m_sCurCDKey; + + m_eCurState = eState_Ready; + if( m_pCDKeyCtrl ) + m_pCDKeyCtrl->Show(LTTRUE); + m_pJoin->Enable( m_pCDKeyCtrl ? m_sCurCDKey.length( ) : LTTRUE ); + m_pHost->Enable( m_pCDKeyCtrl ? m_sCurCDKey.length( ) : LTTRUE ); + m_pWait->Show(LTFALSE); + m_pUpdate->Show(LTFALSE); + m_pStatusCtrl->Show(LTFALSE); + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + } + + CBaseScreen::OnFocus(bFocus); + if (bFocus) + { + //since several failure states can drop us here, make sure that we return to main screen on escape + m_pScreenMgr->AddScreenToHistory( SCREEN_ID_MAIN ); + +#if !defined( _DEMO ) + + // If they don't have a cdkey, then ask them to put one in. + if( m_sCurCDKey.length( ) == 0 ) + { + ChangeCDKey( ); + } + +#endif // !defined( _DEMO ) + + } +} + + + +uint32 CScreenMulti::HandleCallback(uint32 dwParam1, uint32 dwParam2) +{ + switch (dwParam2) + { + case CMD_EDIT_CDKEY : + { + char newCdKey[kMaxCDKeyLength+1]; + const char* pStr = ( const char* )dwParam1; + + int c = 0; + int n = 0; + while (*pStr && c < kMaxCDKeyLength) + { + newCdKey[c] = *pStr; + c++; + pStr++; + n++; + //insert dashes every 4th char as necessary + if (n == 4 && c < kMaxCDKeyLength) + { + n = 0; + //if there is a dash, copy it and move on + if (*pStr == '-') + { + newCdKey[c] = *pStr; + c++; + pStr++; + } + else + { + newCdKey[c] = '-'; + c++; + } + } + + } + newCdKey[c] = 0; + + m_sCurCDKey = newCdKey; + m_pJoin->Enable( m_pCDKeyCtrl ? m_sCurCDKey.length( ) : LTTRUE ); + m_pHost->Enable( m_pCDKeyCtrl ? m_sCurCDKey.length( ) : LTTRUE ); + + g_pVersionMgr->SetCDKey( m_sCurCDKey.c_str( )); + + // Make sure we have our browser. + if( !g_pClientMultiplayerMgr->GetRetailServerBrowser( )) + { + g_pClientMultiplayerMgr->CreateServerBrowsers( ); + } + + IGameSpyBrowser* pBrowser = g_pClientMultiplayerMgr->GetRetailServerBrowser( ); + if( !pBrowser || !pBrowser->IsCDKeyValid( m_sCurCDKey.c_str( ))) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_CDKEY_INVALID,&mb); + + m_pWait->Show(LTFALSE); + if (GetCapture() == m_pWait) + SetCapture(NULL); + + m_pCDKeyCtrl->SetString(1,m_sLastValidCDKey.c_str()); + m_pJoin->Enable(!m_sLastValidCDKey.empty()); + m_pHost->Enable(!m_sLastValidCDKey.empty()); + m_sCurCDKey = m_sLastValidCDKey; + + if (m_sLastValidCDKey.empty()) + m_eCurState = eState_NoCDKey; + } + else + { + m_sLastValidCDKey = m_sCurCDKey; + g_pVersionMgr->SetCDKey( m_sCurCDKey.c_str( )); + } + + break; + } + } + return 1; +} + +void CScreenMulti::ChangeCDKey() +{ + // Show the CD key change dialog + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCDKeyCallBack; + mb.pString = m_sCurCDKey.c_str(); + mb.nMaxChars = kMaxCDKeyLength; + mb.pFilterFn = CDKeyFilter; + g_pInterfaceMgr->ShowMessageBox(IDS_CDKEY_ENTER,&mb); +} + + +LTBOOL CScreenMulti::Render(HSURFACE hDestSurf) +{ + Update(); + return CBaseScreen::Render(hDestSurf); +} + +void CScreenMulti::Update() +{ +} + + + + + + +void CScreenMulti::CreateMPMissionFile() +{ + char path[256]; + std::string sFN = _getcwd(path,sizeof(path)); + sFN += "\\"; + sFN += MISSION_DM_FILE; + + if (CWinUtil::FileExist(sFN.c_str())) + { + remove(MISSION_DM_FILE); + } + + StringSet filenames; + +#if !defined( _MPDEMO ) && !defined( _PRDEMO ) + + // Get a list of world names and sort them alphabetically + + uint8 nNumPaths = g_pClientButeMgr->GetNumMultiWorldPaths(); + + char pathBuf[128]; + FileEntry** pFilesArray = debug_newa(FileEntry*, nNumPaths); + + if (pFilesArray) + { + for (int i=0; i < nNumPaths; ++i) + { + pathBuf[0] = '\0'; + g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf),LTFALSE); + + if (pathBuf[0]) + { + pFilesArray[i] = g_pLTClient->GetFileList(pathBuf); + } + else + { + pFilesArray[i] = LTNULL; + } + } + } + + + char strBaseName[256]; + char* pBaseName = NULL; + char* pBaseExt = NULL; + + for (int i=0; i < nNumPaths; ++i) + { + pathBuf[0] = '\0'; + g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf),LTFALSE); + + if (pathBuf[0] && pFilesArray[i]) + { + sprintf(path, "%s\\", pathBuf); + FileEntry* ptr = pFilesArray[i]; + + while (ptr) + { + if (ptr->m_Type == TYPE_FILE) + { + if (strnicmp(ptr->m_pBaseFilename,"DM_",3) == 0 || + strnicmp(ptr->m_pBaseFilename,"DE_",3) == 0 || + strnicmp(ptr->m_pBaseFilename,"DD_",3) == 0) + { + SAFE_STRCPY(strBaseName, ptr->m_pBaseFilename); + pBaseName = strtok (strBaseName, "."); + pBaseExt = strtok (NULL, "\0"); + if (pBaseExt && stricmp (pBaseExt, "dat") == 0) + { + char szString[512]; + sprintf(szString, "%s%s", path, pBaseName); + + // add this to the array + filenames.insert(szString); + } + } + } + + ptr = ptr->m_pNext; + } + + g_pLTClient->FreeFileList(pFilesArray[i]); + } + } + + debug_deletea(pFilesArray); + +#else // !defined( _MPDEMO ) && !defined( _PRDEMO ) + + // add this to the array + filenames.insert( "worlds\\retailmultiplayer\\DE_Italy" ); + filenames.insert( "worlds\\retailmultiplayer\\DE_Ruins" ); + +#endif // !defined( _MPDEMO ) && !defined( _PRDEMO ) + + int index = 0; + char szLabel[256]; + StringSet::iterator iter = filenames.begin(); + + CMPButeMgr buteMgr; + char szTmp[16]; + char szString[512]; + char szDefWeapon[512] = ""; + + while (iter != filenames.end()) + { + bool bDefaultWeapons = false; + bool bSelectedWeapon = false; + szDefWeapon[0] = '\0'; + + sprintf(szLabel,"Mission%d",index); + + sprintf(szString, "\"%s\"", (*iter).c_str()); + CWinUtil::WinWritePrivateProfileString( szLabel, "Level0", szString, sFN.c_str()); + + std::string sCfg = (*iter); + sCfg += ".cfg"; + + if (buteMgr.Init(sCfg.c_str())) + { + MISSION mission; + mission.Init(*buteMgr.GetButeMgr(),"Mission"); + + if (mission.nNameId > 0) + { + sprintf(szTmp,"%d",mission.nNameId); + CWinUtil::WinWritePrivateProfileString( szLabel, "NameId", szTmp, sFN.c_str()); + } + + if (!mission.sName.empty()) + { + sprintf(szString, "\"%s\"", mission.sName.c_str()); + CWinUtil::WinWritePrivateProfileString( szLabel, "NameStr", szString, sFN.c_str()); + } + + if (!mission.sPhoto.empty()) + { + sprintf(szString, "\"%s\"", mission.sPhoto.c_str()); + CWinUtil::WinWritePrivateProfileString( szLabel, "Photo", szString, sFN.c_str()); + } + + if (mission.nNumDefaultWeapons) + { + bDefaultWeapons = true; + std::string sDef = "\""; + for (int w = 0; w < mission.nNumDefaultWeapons; w++) + { + if (w > 0) + sDef += ","; + LTStrCpy(szDefWeapon,g_pWeaponMgr->GetWeapon(mission.aDefaultWeapons[w])->szName,sizeof(szDefWeapon)); + sDef += szDefWeapon; + } + sDef += "\""; + CWinUtil::WinWritePrivateProfileString( szLabel, "DefaultWeapons", sDef.c_str(), sFN.c_str()); + } + + if (mission.nSelectedWeapon != WMGR_INVALID_ID) + { + bSelectedWeapon = true; + WEAPON const* pWpn = g_pWeaponMgr->GetWeapon(mission.nSelectedWeapon); + sprintf(szTmp,"%d",pWpn->szName); + CWinUtil::WinWritePrivateProfileString( szLabel, "SelectedWeapon", pWpn->szName, sFN.c_str()); + } + + buteMgr.Term(); + } + + if (!bDefaultWeapons) + { + sprintf(szString, "\"%s\"", g_pWeaponMgr->GetMPDefaultWeapons()); + CWinUtil::WinWritePrivateProfileString( szLabel, "DefaultWeapons", szString, sFN.c_str()); + } + + if (!bSelectedWeapon) + { + if (strlen(szDefWeapon)) + { + sprintf(szString, "\"%s\"", szDefWeapon); + } + else + { + sprintf(szString, "\"%s\"", g_pWeaponMgr->GetMPSelectedWeapon()); + } + CWinUtil::WinWritePrivateProfileString( szLabel, "SelectedWeapon", szString, sFN.c_str()); + } + + ++index; + iter++; + } + + + // Flush the file. (if anything was added) + if (index > 0) + { + CWinUtil::WinWritePrivateProfileString( NULL, NULL, NULL, sFN.c_str()); + } + + filenames.clear(); +} + + +void CScreenMulti::Escape() +{ + // Switch save/load to back to use sp folders. + g_pClientSaveLoadMgr->SetUseMultiplayerFolders( false ); + + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return; + } + + g_pClientMultiplayerMgr->SetupServerSinglePlayer( ); + + CBaseScreen::Escape(); +} diff --git a/Jack/ClientShellDLL/ScreenMulti.h b/Jack/ClientShellDLL/ScreenMulti.h new file mode 100644 index 00000000..c5db546e --- /dev/null +++ b/Jack/ClientShellDLL/ScreenMulti.h @@ -0,0 +1,66 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMulti.h +// +// PURPOSE : Interface screen for hosting and joining multi player games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_MULTI_H_ +#define _SCREEN_MULTI_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenMulti : public CBaseScreen +{ +public: + CScreenMulti(); + virtual ~CScreenMulti(); + + // Build the screen + LTBOOL Build(); + + LTBOOL Render(HSURFACE hDestSurf); + + void OnFocus(LTBOOL bFocus); + void Escape(); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + uint32 HandleCallback(uint32 dwParam1, uint32 dwParam2); + void ChangeCDKey(); + void RequestValidate(); + void CreateMPMissionFile(); + + void Update(); + + CLTGUIColumnCtrl* m_pCDKeyCtrl; + + std::string m_sCurCDKey; + std::string m_sLastValidCDKey; + + enum EState { + eState_Startup, + eState_VersionCheck, + eState_NoCDKey, + eState_ValidateCDKey, + eState_Ready, + }; + EState m_eCurState; + + CLTGUIWindow* m_pWait; + CLTGUICtrl* m_pJoin; + CLTGUICtrl* m_pHost; + + CLTGUITextCtrl* m_pStatusCtrl; + CLTGUITextCtrl* m_pUpdate; + CLTGUITextCtrl* m_pWaitText; +}; + +#endif // _SCREEN_MULTI_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenOptions.cpp b/Jack/ClientShellDLL/ScreenOptions.cpp new file mode 100644 index 00000000..655f9946 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenOptions.cpp @@ -0,0 +1,106 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenOptions.cpp +// +// PURPOSE : Interface screen for navigation to various option setting screens +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenOptions.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + +namespace +{ + +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenOptions::CScreenOptions() +{ +} + +CScreenOptions::~CScreenOptions() +{ + +} + +// Build the screen +LTBOOL CScreenOptions::Build() +{ + + CreateTitle(IDS_TITLE_OPTIONS); + + CLTGUITextCtrl* pDisplay = AddTextItem(IDS_DISPLAY, CMD_DISPLAY, IDS_HELP_DISPLAY); + CLTGUITextCtrl* pSound = AddTextItem(IDS_SOUND, CMD_AUDIO, IDS_HELP_SOUND); + CLTGUITextCtrl* pControls = AddTextItem(IDS_CONTROLS, CMD_CONTROLS, IDS_HELP_CONTROLS); + CLTGUITextCtrl* pGame = AddTextItem(IDS_GAME_OPTIONS, CMD_GAME, IDS_HELP_GAME_OPTIONS); + CLTGUITextCtrl* pPerf = AddTextItem(IDS_PERFORMANCE, CMD_PERFORMANCE, IDS_HELP_PERFORMANCE); + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +uint32 CScreenOptions::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_DISPLAY: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_DISPLAY); + break; + } + case CMD_AUDIO: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_AUDIO); + break; + } + case CMD_GAME: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_GAME); + break; + } + case CMD_PERFORMANCE: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_PERFORMANCE); + break; + } + case CMD_CONTROLS: + { + m_pScreenMgr->SetCurrentScreen(SCREEN_ID_CONTROLS); + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenOptions::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + UpdateData(LTFALSE); + } + else + { + UpdateData(); + } + CBaseScreen::OnFocus(bFocus); +} + diff --git a/Jack/ClientShellDLL/ScreenOptions.h b/Jack/ClientShellDLL/ScreenOptions.h new file mode 100644 index 00000000..ce15ce39 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenOptions.h @@ -0,0 +1,36 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenOptions.h +// +// PURPOSE : Interface screen for navigation to various option setting screens +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_OPTIONS_H_ +#define _SCREEN_OPTIONS_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenOptions : public CBaseScreen +{ +public: + CScreenOptions(); + virtual ~CScreenOptions(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + +}; + +#endif // _SCREEN_OPTIONS_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPerformance.cpp b/Jack/ClientShellDLL/ScreenPerformance.cpp new file mode 100644 index 00000000..d1ac8965 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPerformance.cpp @@ -0,0 +1,839 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPerformance.cpp +// +// PURPOSE : Interface screen for setting performance options +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenPerformance.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "MissionMgr.h" +#include "PerformanceTest.h" +#include "ClientMultiplayerMgr.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; +extern VarTrack g_vtPerformanceTestMode; + +namespace +{ + int kGap = 200; + int kWidth = 0; + int kNumCfg; + + int nInitTex; + int nInitEBM; + int nInitEM; + int nInitDT; + + int kDlgHt; + int kDlgWd; + + LTBOOL g_bSettingOverall = LTFALSE; + +} + + int nInitTB; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenPerformance::CScreenPerformance() +{ + m_pResolution= NULL; + m_pDisplay = LTNULL; + m_pSFX = LTNULL; + m_pDisplayLabel = LTNULL; + m_pSFXLabel = LTNULL; + m_pDisplayFrame = LTNULL; + m_pSFXFrame = LTNULL; + + memset(&m_sCfg,0,sizeof(m_sCfg)); + + m_nTripleBuffer = 1; + + +} + +CScreenPerformance::~CScreenPerformance() +{ + +} + +// Build the screen +LTBOOL CScreenPerformance::Build() +{ + kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PERFORMANCE,"ColumnWidth"); + kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PERFORMANCE,"SliderWidth"); + uint8 nFontSize = g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID); + uint8 nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PERFORMANCE,"ListFontSize"); + int nListSpacing = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PERFORMANCE,"ListSpacing"); + + CreateTitle(IDS_TITLE_PERFORMANCE); + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_PERFORMANCE,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + + + LTRect rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"MainRect"); + int nHeight = (rect.bottom - rect.top) + 16; + int nWidth = (rect.right - rect.left); + LTIntPt pos = LTIntPt(rect.left-8,rect.top-8); + + CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); + pFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + pFrame->SetBasePos(pos); + pFrame->SetBorder(2,m_SelectedColor); + AddControl(pFrame); + + m_nextPos.x = GetPageLeft(); + m_nextPos.y = GetPageTop(); + + m_pPerformance = AddCycle(IDS_PERFORMANCE,IDS_HELP_PERFORMANCE,kGap,&m_nOverall); + kNumCfg = g_pPerformanceMgr->m_ConfigList.size(); + + for (int i = 0; i < kNumCfg; i++) + { + m_pPerformance->AddString(g_pPerformanceMgr->m_ConfigList[i]->szNiceName); + } + + char szTmp[64]; + FormatString(IDS_CUSTOM,szTmp,sizeof(szTmp)); + m_pPerformance->AddString(szTmp); + + m_pDetailLevel = AddCycle(IDS_TEXTURE_RES,IDS_HELP_TEXTURE_RES,kGap,&m_sCfg.nSettings[kPerform_DetailLevel]); + m_pDetailLevel->AddString(LoadTempString(IDS_LOW)); + m_pDetailLevel->AddString(LoadTempString(IDS_MEDIUM)); + m_pDetailLevel->AddString(LoadTempString(IDS_HIGH)); + + m_pPrecache = AddCycle(IDS_PRECACHE,IDS_HELP_PRECACHE,kGap,&m_sCfg.nSettings[kPerform_PreCacheAssets]); + m_pPrecache->AddString(LoadTempString(IDS_OFF)); + m_pPrecache->AddString(LoadTempString(IDS_ON)); + + CLTGUITextCtrl *pCtrl = AddTextItem(IDS_DISPLAY, CMD_DISPLAY, IDS_HELP_ADVDISPLAY); + + pCtrl = AddTextItem(IDS_SFX, CMD_SFX, IDS_HELP_SFX); + + //add a gap before performance test item + m_nextPos.y += g_pLayoutMgr->GetScreenFontSize((eScreenID)m_nScreenID);; + + char szOn[32] = ""; + char szOff[32] = ""; + LoadString(IDS_ON,szOn,sizeof(szOn)); + LoadString(IDS_OFF,szOff,sizeof(szOff)); + + rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"DisplayRect"); + nHeight = (rect.bottom - rect.top) + 16; + nWidth = (rect.right - rect.left); + pos = LTIntPt(rect.left-8,rect.top-8); + + m_pDisplayFrame = debug_new(CLTGUIFrame); + m_pDisplayFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + m_pDisplayFrame->SetBasePos(pos); + m_pDisplayFrame->Show(LTFALSE); + m_pDisplayFrame->SetBorder(2,m_SelectedColor); + AddControl(m_pDisplayFrame); + + pos.x += 8; + pos.y += 8; + + m_pDisplayLabel = AddTextItem(IDS_DISPLAY, LTNULL, LTNULL, pos, LTTRUE); + m_pDisplayLabel->Show(LTFALSE); + rect.top += (nFontSize+8); + + int listGap = g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DisplayColumn"); + nWidth = (rect.right - rect.left) - 32; + m_pDisplay = AddList(LTIntPt(rect.left,rect.top),rect.bottom - rect.top, LTTRUE, nWidth); + if (m_pDisplay) + { + m_pDisplay->SetIndent(LTIntPt(8,8)); + m_pDisplay->Show(LTFALSE); + m_pDisplay->SetItemSpacing(nListSpacing); + + CLTGUICycleCtrl *pCtrl = NULL; + + pCtrl = CreateCycle(IDS_DYNAMICLIGHTS, IDS_HELP_DYNAMICLIGHTS,listGap,&m_sCfg.nSettings[kPerform_DynamicLight]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_SHADOWS, IDS_HELP_SHADOWS,listGap,&m_sCfg.nSettings[kPerform_ShadowDetail]); + pCtrl->AddString(szOff); + pCtrl->AddString(LoadTempString(IDS_LOW)); + pCtrl->AddString(LoadTempString(IDS_MEDIUM)); + pCtrl->AddString(LoadTempString(IDS_HIGH)); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_POLYGRIDBUMP, IDS_HELP_POLYGRIDBUMP,listGap,&m_sCfg.nSettings[kPerform_PolyGridBumpmap]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_POLYGRIDFRES, IDS_HELP_POLYGRIDFRES,listGap,&m_sCfg.nSettings[kPerform_PolyGridFresnel]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_BUMPMAP, IDS_HELP_BUMPMAP,listGap,&m_sCfg.nSettings[kPerform_EnvironmentBumpMapping]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_ANISOTROPIC, IDS_HELP_ANISOTROPIC,listGap,&m_sCfg.nSettings[kPerform_AnisotropicFiltering]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_TRILINEAR, IDS_HELP_TRILINEAR ,listGap,&m_sCfg.nSettings[kPerform_TrilinearFiltering]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_ENVIRONMENT_MAP, IDS_HELP_ENVIRONMENT_MAP,listGap,&m_sCfg.nSettings[kPerform_EnvironmentMapping]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_DETAILTEXTURES, IDS_HELP_DETAILTEXTURES,listGap,&m_sCfg.nSettings[kPerform_DetailTextures]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_TRIPLE_BUFF, IDS_HELP_TRIPLE_BUFF,listGap, &m_nTripleBuffer); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pDisplay->AddControl(pCtrl); + + uint32 dwAdvancedOptions = g_pInterfaceMgr->GetAdvancedOptions(); + pCtrl->Enable( (dwAdvancedOptions & AO_TRIPLEBUFFER) ); + + } + + + rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"SFXRect"); + + nHeight = (rect.bottom - rect.top) + 16; + nWidth = (rect.right - rect.left); + pos = LTIntPt(rect.left-8,rect.top-8); + + m_pSFXFrame = debug_new(CLTGUIFrame); + m_pSFXFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + m_pSFXFrame->SetBasePos(pos); + m_pSFXFrame->Show(LTFALSE); + m_pSFXFrame->SetBorder(2,m_SelectedColor); + AddControl(m_pSFXFrame); + + pos.x += 8; + pos.y += 8; + + m_pSFXLabel = AddTextItem(IDS_SFX, LTNULL, LTNULL, LTIntPt(rect.left,rect.top), LTTRUE); + m_pSFXLabel->Show(LTFALSE); + rect.top += (nFontSize+8); + + listGap = g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"SFXColumn"); + nWidth = (rect.right - rect.left) - 32; + m_pSFX = AddList(LTIntPt(rect.left,rect.top),rect.bottom - rect.top, LTTRUE, nWidth); + if (m_pSFX) + { + m_pSFX->SetIndent(LTIntPt(8,8)); + m_pSFX->Show(LTFALSE); + m_pSFX->SetItemSpacing(nListSpacing); + + CLTGUICycleCtrl *pCtrl = CreateCycle(IDS_TRACERS, IDS_HELP_TRACERS, listGap, &m_sCfg.nSettings[kPerform_Tracers]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pSFX->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_SHELLCASINGS, IDS_HELP_SHELLCASINGS, listGap, &m_sCfg.nSettings[kPerform_ShellCasings]); + pCtrl->AddString(szOff); + pCtrl->AddString(szOn); + pCtrl->SetFont(NULL,nListFontSize); + m_pSFX->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_ENV_DETAIL, IDS_HELP_ENV_DETAIL, listGap, &m_sCfg.nSettings[kPerform_EnvironmentalDetail]); + pCtrl->AddString(LoadTempString(IDS_OFF)); + pCtrl->AddString(LoadTempString(IDS_LOW)); + pCtrl->AddString(LoadTempString(IDS_MEDIUM)); + pCtrl->AddString(LoadTempString(IDS_HIGH)); + pCtrl->SetFont(NULL,nListFontSize); + m_pSFX->AddControl(pCtrl); + + pCtrl = CreateCycle(IDS_FX_DETAIL, IDS_HELP_FX_DETAIL, listGap, &m_sCfg.nSettings[kPerform_FXDetail]); + pCtrl->AddString(LoadTempString(IDS_LOW)); + pCtrl->AddString(LoadTempString(IDS_MEDIUM)); + pCtrl->AddString(LoadTempString(IDS_HIGH)); + pCtrl->SetFont(NULL,nListFontSize); + m_pSFX->AddControl(pCtrl); + + } + + + pos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"ResolutionPos"); + m_pResolution = CreateTextItem(IDS_RES_DIFFERS,0,0,pos,LTTRUE); + m_pResolution->SetFont(NULL,nListFontSize); + m_pResolution->SetColors(m_SelectedColor,m_SelectedColor,m_SelectedColor); + AddControl(m_pResolution); + + + + + LTIntPt dlgPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogPos"); + LTIntPt dlgSz = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogSize"); + kDlgHt = dlgSz.y; + kDlgWd = dlgSz.x; + + char szBack[128] = ""; + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,"DialogFrame",szBack,sizeof(szBack)); + + m_pDlg = debug_new(CLTGUIWindow); + m_pDlg->Create(g_pInterfaceResMgr->GetTexture(szBack), kDlgWd, kDlgHt); + m_pDlg->SetBasePos(dlgPos); + + LTIntPt tmp(60,8); + pCtrl = CreateTextItem(IDS_PERFORMANCE_RESULTS, LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(pCtrl, tmp); + +#ifdef _SHOW_PERFORMACE_FRAMERATE_ + + tmp.x = 10; + tmp.y += (pCtrl->GetBaseHeight() + 18); + m_pMaxFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pMaxFPS, tmp); + + tmp.y += (pCtrl->GetBaseHeight() + 2); + m_pAveFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pAveFPS, tmp); + + tmp.y += (pCtrl->GetBaseHeight() + 2); + m_pMinFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pMinFPS, tmp); + + tmp.y += (pCtrl->GetBaseHeight() + 16); + m_pAboveMaxFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pAboveMaxFPS, tmp); + + tmp.y += (pCtrl->GetBaseHeight() + 2); + m_pMintoMaxFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pMintoMaxFPS, tmp); + + tmp.y += (pCtrl->GetBaseHeight() + 2); + m_pBelowMinFPS = CreateTextItem("<>", LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pDlg->AddControl(m_pBelowMinFPS, tmp); + +#else + + const int nXOffset = 18; + tmp.x = nXOffset; + tmp.y += (pCtrl->GetBaseHeight() + 10); + m_pRecommendation = CreateTextItem(FormatTempString(IDS_PERFORMANCE_RECOMMEND_LOWER), LTNULL, LTNULL, kDefaultPos, LTTRUE); + m_pRecommendation->SetFixedWidth(kDlgWd - (2*nXOffset)); + m_pDlg->AddControl(m_pRecommendation, tmp); + +#endif // _SHOW_PERFORMACE_FRAMERATE_ + + pCtrl = CreateTextItem(IDS_OK, CMD_OK, LTNULL); + tmp.y = kDlgHt - pCtrl->GetBaseHeight(); + tmp.x = (kDlgWd - pCtrl->GetBaseWidth()) / 2; + m_pDlg->AddControl(pCtrl, tmp); + + m_pDlg->Show(LTFALSE); + + AddControl(m_pDlg); + + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTTRUE,LTTRUE); + return LTTRUE; +} + +uint32 CScreenPerformance::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_OK: + m_pDlg->Show(LTFALSE); + SetCapture(NULL); + break; + + case CMD_BACK: + m_pDisplay->Show(LTFALSE); + m_pDisplayLabel->Show(LTFALSE); + m_pDisplayFrame->Show(LTFALSE); + + m_pSFX->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + + m_pDisplay->SetSelection(kNoSelection); + m_pSFX->SetSelection(kNoSelection); + m_pScreenMgr->EscapeCurrentScreen(); + break; + case CMD_CUSTOM: + m_pDisplay->Show(LTFALSE); + m_pDisplayLabel->Show(LTFALSE); + m_pDisplayFrame->Show(LTFALSE); + + m_pSFX->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + + m_pDisplay->SetSelection(kNoSelection); + m_pSFX->SetSelection(kNoSelection); + + g_pGameClientShell->StartPerformanceTest(); + if (!g_pMissionMgr->StartPerformanceLevel()) + { + _ASSERT(!"Performace Test Level failed!"); + g_pGameClientShell->StopPerformanceTest(); + } + + break; + case CMD_DISPLAY: + { + m_pSFX->Show(LTFALSE); + m_pDisplay->Show(LTTRUE); + m_pSFXLabel->Show(LTFALSE); + m_pDisplayLabel->Show(LTTRUE); + m_pSFXFrame->Show(LTFALSE); + m_pDisplayFrame->Show(LTTRUE); + + m_pDisplay->SetSelection(0); + SetSelection(GetIndex(m_pDisplay)); + + } break; + case CMD_SFX: + { + m_pDisplay->Show(LTFALSE); + m_pSFX->Show(LTTRUE); + m_pDisplayLabel->Show(LTFALSE); + m_pSFXLabel->Show(LTTRUE); + m_pDisplayFrame->Show(LTFALSE); + m_pSFXFrame->Show(LTTRUE); + + m_pSFX->SetSelection(0); + SetSelection(GetIndex(m_pSFX)); + + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + +// Screen specific rendering +LTBOOL CScreenPerformance::Render(HSURFACE hDestSurf) +{ + return CBaseScreen::Render(hDestSurf); +} +// Change in focus +void CScreenPerformance::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (bFocus) + { + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + // Make sure we're disconnected from server. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + + g_pGameClientShell->StopPerformanceTest(); + + CPerformanceTest* pTest = g_pGameClientShell->GetLastPerformanceTest(); + if (pTest) + { + +#ifdef _SHOW_PERFORMACE_FRAMERATE_ + + m_pMinFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_MIN, pTest->GetMinFPS())); + m_pMaxFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_MAX, pTest->GetMaxFPS())); + m_pAveFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_AVE, pTest->GetAveFPS())); + + m_pBelowMinFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_BELOW_MIN, + pTest->GetPercentFPSBelowMin(), pTest->GetMinTestFPS())); + m_pMintoMaxFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_MINTOMAX, + pTest->GetPercentFPSMintoMax(), pTest->GetMinTestFPS(), pTest->GetMaxTestFPS())); + m_pAboveMaxFPS->SetString(FormatTempString(IDS_PERFORMANCE_FPS_ABOVE_MAX, + pTest->GetPercentFPSAboveMax(), pTest->GetMaxTestFPS())); + +#else + + int nChange = pTest->GetRecommendedDetailChange(); + if (nChange < 0) + { + m_pRecommendation->SetString(FormatTempString(IDS_PERFORMANCE_RECOMMEND_LOWER)); + } + else if (nChange > 0) + { + m_pRecommendation->SetString(FormatTempString(IDS_PERFORMANCE_RECOMMEND_HIGHER)); + } + else + { + m_pRecommendation->SetString(FormatTempString(IDS_PERFORMANCE_RECOMMEND_CURRENT)); + } + +#endif // _SHOW_PERFORMACE_FRAMERATE_ + + m_pDlg->Show(LTTRUE); + } + } + + pProfile->SetPerformance(); + + m_nOverall = g_pPerformanceMgr->GetPerformanceCfg(true); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + g_bSettingOverall = LTTRUE; + m_sCfg = pProfile->m_sPerformance; + + nInitTex = pProfile->m_sPerformance.nSettings[kPerform_DetailLevel]; + nInitEBM = pProfile->m_sPerformance.nSettings[kPerform_EnvironmentBumpMapping]; + nInitEM = pProfile->m_sPerformance.nSettings[kPerform_EnvironmentMapping]; + nInitDT = pProfile->m_sPerformance.nSettings[kPerform_DetailTextures]; + nInitTB = pProfile->m_sPerformance.nSettings[kPerform_TripleBuffering]; + + UpdateData(LTFALSE); + g_bSettingOverall = LTFALSE; + } + else + { + + UpdateData(); + + g_pPerformanceMgr->SetPerformanceCfg(m_nOverall); + if (m_nOverall < g_pPerformanceMgr->m_ConfigList.size()) + { + pProfile->SetPerformance(); + } + else + { + pProfile->m_sPerformance = m_sCfg; + } + + bool bRebind = (nInitTex != pProfile->m_sPerformance.nSettings[kPerform_DetailLevel]); + bool bRestart = (nInitTB != pProfile->m_sPerformance.nSettings[kPerform_TripleBuffering]) || + (nInitEBM != pProfile->m_sPerformance.nSettings[kPerform_EnvironmentBumpMapping]) || + (nInitEM != pProfile->m_sPerformance.nSettings[kPerform_EnvironmentMapping]) || + (nInitDT != pProfile->m_sPerformance.nSettings[kPerform_DetailTextures]); + +// if (bRestart) +// g_pLTClient->CPrint("CScreenPerformance::OnFocus() : restart because of setting change"); + + + //no need to restart in these cases because the call to ApplyPerformance() will restart the renderer + switch (m_nOverall) + { + case 0: + if (pProfile->m_nScreenWidth != 640) + { +// if (bRestart) +// g_pLTClient->CPrint("CScreenPerformance::OnFocus() : cancel restart because of resolution change"); + bRestart = false; + } + break; + case 1: + + if (pProfile->m_nScreenWidth != 800) + { +// if (bRestart) +// g_pLTClient->CPrint("CScreenPerformance::OnFocus() : cancel restart because of resolution change"); + bRestart = false; + } + + break; + + case 2: + if (pProfile->m_nScreenWidth < 1024) + { +// if (bRestart) +// g_pLTClient->CPrint("CScreenPerformance::OnFocus() : cancel restart because of resolution change"); + bRestart = false; + } + break; + + } + + + if ( bRestart ) + + { + // Set the renderer mode + g_pInterfaceMgr->SetSwitchingRenderModes(LTTRUE); +// g_pLTClient->CPrint("CScreenPerformance::OnFocus() : restart"); + g_pLTClient->RunConsoleString("RestartRender"); + g_pInterfaceMgr->SetSwitchingRenderModes(LTFALSE); + } + + if (bRebind) + { + g_pInterfaceResMgr->DrawMessage(IDS_REBINDING_TEXTURES); + g_pLTClient->RunConsoleString("RebindTextures"); + } + + pProfile->ApplyPerformance(true); + + + pProfile->Save(); + + + //force this because restarting the renderer may show the hardware cursor + g_pCursorMgr->UseHardwareCursor(pProfile->m_bHardwareCursor,true); + + + m_pDisplay->Show(LTFALSE); + m_pSFX->Show(LTFALSE); + + m_pDisplayLabel->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + + m_pDisplayFrame->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + + m_pDisplay->SetSelection(kNoSelection); + m_pSFX->SetSelection(kNoSelection); + + } + CBaseScreen::OnFocus(bFocus); + + if (bFocus) + { + if (m_pDlg->IsVisible()) + { + SetCapture(m_pDlg); + SetSelection( GetIndex(m_pDlg) ); + } + } +} + + +LTBOOL CScreenPerformance::OnLeft() +{ + if (GetSelectedControl() == m_pPerformance) + { + int nOverall = m_pPerformance->GetSelIndex(); + --nOverall; + if (nOverall < 0) + nOverall = kNumCfg-1; + m_pPerformance->SetSelIndex(nOverall); + m_nOverall = nOverall; + if (m_nOverall != kNumCfg) + { + g_pPerformanceMgr->SetPerformanceCfg(m_nOverall); + g_pPerformanceMgr->GetPerformanceOptions(&m_sCfg); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + UpdateData(LTFALSE); + } + return LTTRUE; + } + + LTBOOL bHandled = CBaseScreen::OnLeft(); + if (bHandled) + { + UpdateData(LTTRUE); + + g_pPerformanceMgr->SetPerformanceOptions(&m_sCfg); + m_nOverall = g_pPerformanceMgr->GetPerformanceCfg(true); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + + UpdateData(LTFALSE); + + } + return bHandled; +} + +LTBOOL CScreenPerformance::OnRight() +{ + if (GetSelectedControl() == m_pPerformance) + { + int nOverall = m_pPerformance->GetSelIndex(); + ++nOverall; + if (nOverall > kNumCfg-1) + nOverall = 0; + m_pPerformance->SetSelIndex(nOverall); + m_nOverall = nOverall; + if (m_nOverall != kNumCfg) + { + g_pPerformanceMgr->SetPerformanceCfg(m_nOverall); + g_pPerformanceMgr->GetPerformanceOptions(&m_sCfg); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + UpdateData(LTFALSE); + } + + return LTTRUE; + } + LTBOOL bHandled = CBaseScreen::OnRight(); + if (bHandled) + { + UpdateData(LTTRUE); + + g_pPerformanceMgr->SetPerformanceOptions(&m_sCfg); + m_nOverall = g_pPerformanceMgr->GetPerformanceCfg(true); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + UpdateData(LTFALSE); + } + return bHandled; + +} + + +LTBOOL CScreenPerformance::OnLButtonUp(int x, int y) +{ + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pPerformance || pCtrl == m_pDetailLevel || pCtrl == m_pPrecache) + { + + m_pDisplay->Show(LTFALSE); + m_pDisplay->SetSelection(kNoSelection); + + m_pSFX->Show(LTFALSE); + m_pSFX->SetSelection(kNoSelection); + + m_pDisplayFrame->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + + m_pDisplayLabel->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + + + return OnRight(); + } + } + LTBOOL bHandled = CBaseScreen::OnLButtonUp(x, y); + if (bHandled) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pDisplay || + pCtrl == m_pSFX) + { + UpdateData(LTTRUE); + + g_pPerformanceMgr->SetPerformanceOptions(&m_sCfg); + m_nOverall = g_pPerformanceMgr->GetPerformanceCfg(true); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + UpdateData(LTFALSE); + } + } + return bHandled; + +} + +LTBOOL CScreenPerformance::OnRButtonUp(int x, int y) +{ + uint16 nControlIndex=0; + if (GetControlUnderPoint(x, y, &nControlIndex)) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pPerformance || pCtrl == m_pDetailLevel || pCtrl == m_pPrecache) + { + + m_pDisplay->Show(LTFALSE); + m_pDisplay->SetSelection(kNoSelection); + m_pSFX->Show(LTFALSE); + m_pSFX->SetSelection(kNoSelection); + + m_pDisplayLabel->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + + m_pDisplayFrame->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + + m_pDisplayLabel->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + + return OnLeft(); + } + } + LTBOOL bHandled = CBaseScreen::OnRButtonUp(x, y); + if (bHandled) + { + CLTGUICtrl* pCtrl = GetControl(nControlIndex); + if (pCtrl == m_pDisplay || + pCtrl == m_pSFX ) + { + UpdateData(LTTRUE); + + g_pPerformanceMgr->SetPerformanceOptions(&m_sCfg); + m_nOverall = g_pPerformanceMgr->GetPerformanceCfg(true); + m_pResolution->Show(m_nOverall < 3 && m_nOverall != g_pPerformanceMgr->GetPerformanceCfg(false)); + UpdateData(LTFALSE); + } + + } + return bHandled; +} + + +void CScreenPerformance::Escape() +{ + + if (m_pDlg->IsVisible()) + { + m_pDlg->Show(LTFALSE); + SetCapture(NULL); + } + else if (m_pDisplay->IsVisible()) + { + m_pDisplay->Show(LTFALSE); + m_pDisplayLabel->Show(LTFALSE); + m_pDisplayFrame->Show(LTFALSE); + SetSelection(1); + } + else if (m_pSFX->IsVisible()) + { + m_pSFX->Show(LTFALSE); + m_pSFXLabel->Show(LTFALSE); + m_pSFXFrame->Show(LTFALSE); + SetSelection(2); + } + else + { + CBaseScreen::Escape(); + } +} + +// Calls UpdateData on each control in the screen +void CScreenPerformance::UpdateData(LTBOOL bSaveAndValidate) +{ + if (!bSaveAndValidate) + { + //the TripleBuffering setting will be 1 or 2, whereas the control needs it to be 0 or 1 + m_nTripleBuffer = m_sCfg.nSettings[kPerform_TripleBuffering]-1; + } + + CBaseScreen::UpdateData(bSaveAndValidate); + + if (bSaveAndValidate) + { + //the TripleBuffering setting will be 1 or 2, whereas the control needs it to be 0 or 1 + m_sCfg.nSettings[kPerform_TripleBuffering] = m_nTripleBuffer+1; + } + +} diff --git a/Jack/ClientShellDLL/ScreenPerformance.h b/Jack/ClientShellDLL/ScreenPerformance.h new file mode 100644 index 00000000..e6c0a1b4 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPerformance.h @@ -0,0 +1,86 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPerformance.h +// +// PURPOSE : Interface screen for setting performance options +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _SCREEN_PERFORMANCE_H_ +#define _SCREEN_PERFORMANCE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "PerformanceMgr.h" + + +// #define _SHOW_PERFORMACE_FRAMERATE_ + +class CScreenPerformance : public CBaseScreen +{ +public: + CScreenPerformance(); + virtual ~CScreenPerformance(); + + // Build the screen + LTBOOL Build(); + + void OnFocus(LTBOOL bFocus); + + LTBOOL OnLeft(); + LTBOOL OnRight(); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + + virtual void Escape(); + + + // Calls UpdateData on each control in the screen + virtual void UpdateData(LTBOOL bSaveAndValidate=LTTRUE); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + LTBOOL Render(HSURFACE hDestSurf); + + CLTGUICycleCtrl* m_pPerformance; + CLTGUITextCtrl* m_pResolution; + + CLTGUIListCtrl* m_pDisplay; + CLTGUITextCtrl* m_pDisplayLabel; + CLTGUIFrame* m_pDisplayFrame; + + + CLTGUIListCtrl* m_pSFX; + CLTGUITextCtrl* m_pSFXLabel; + CLTGUIFrame* m_pSFXFrame; + + CLTGUICycleCtrl* m_pDetailLevel; + CLTGUICycleCtrl* m_pPrecache; + + CLTGUIWindow* m_pDlg; + +#ifdef _SHOW_PERFORMACE_FRAMERATE_ + CLTGUITextCtrl* m_pMinFPS; + CLTGUITextCtrl* m_pMaxFPS; + CLTGUITextCtrl* m_pAveFPS; + CLTGUITextCtrl* m_pBelowMinFPS; + CLTGUITextCtrl* m_pMintoMaxFPS; + CLTGUITextCtrl* m_pAboveMaxFPS; +#else + CLTGUITextCtrl* m_pRecommendation; +#endif // _SHOW_PERFORMACE_FRAMERATE_ + + sPerformCfg m_sCfg; + uint8 m_nOverall; + uint8 m_nTripleBuffer; + + +}; + +#endif // _SCREEN_PERFORMANCE_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPlayer.cpp b/Jack/ClientShellDLL/ScreenPlayer.cpp new file mode 100644 index 00000000..6a2eff1b --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPlayer.cpp @@ -0,0 +1,505 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPlayer.h +// +// PURPOSE : Interface screen for player setup +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenPlayer.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientMultiplayerMgr.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + +static const int kMaxBandwidthStrLen = 8; + +extern bool g_bLAN; + +namespace +{ + void EditNameCallBack(LTBOOL bReturn, void *pData) + { + CScreenPlayer *pThisScreen = (CScreenPlayer *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PLAYER); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_NAME); + }; + void EditBandwidthCallBack(LTBOOL bReturn, void *pData) + { + CScreenPlayer *pThisScreen = (CScreenPlayer *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PLAYER); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_BANDWIDTH); + }; + + #define INVALID_ANI ((HMODELANIM)-1) +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenPlayer::CScreenPlayer() +{ + m_pName = LTNULL; + m_pModel = LTNULL; + m_pLeft = LTNULL; + m_pRight = LTNULL; + m_nCurrentModel = 0; + + m_pBandwidthCycle = LTNULL; + m_pBandwidth = LTNULL; + m_nBandwidth = 0; + +} + +CScreenPlayer::~CScreenPlayer() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenPlayer::Term +// +// PURPOSE: Terminate the screen +// +// ----------------------------------------------------------------------- // + +void CScreenPlayer::Term() +{ + CBaseScreen::Term(); +} + +// Build the screen +LTBOOL CScreenPlayer::Build() +{ + + CreateTitle(IDS_TITLE_PLAYER); + int kColumn0 = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PLAYER,"ColumnWidth"); + int kColumn1 = (640 - GetPageLeft()) - kColumn0; + int kArrow = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PLAYER,"ArrowWidth"); + + m_pName = AddColumnCtrl(CMD_EDIT_NAME, IDS_HELP_PLAYER_NAME); + m_pName->AddColumn(LoadTempString(IDS_PLAYER_NAME), kColumn0); + m_pName->AddColumn("", kColumn1, LTTRUE); + + m_pModel = AddTextItem(IDS_PLAYER_MODEL, LTNULL, IDS_HELP_PLAYER_MODEL); + + m_pBandwidthCycle = AddCycle(IDS_BANDWIDTH_CYCLE,IDS_HELP_BANDWIDTH_CYCLE,kColumn0,&m_nBandwidth); + m_pBandwidthCycle->AddString(LoadTempString(IDS_56K)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_DSL_LOW)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_DSL_HIGH)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_CABLE)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_T1)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_T3)); + m_pBandwidthCycle->AddString(LoadTempString(IDS_CUSTOM)); + + m_pBandwidth = AddColumnCtrl(CMD_EDIT_BANDWIDTH, IDS_HELP_BANDWIDTH_EDIT); + m_pBandwidth->AddColumn(LoadTempString(IDS_BANDWIDTH_EDIT), kColumn0); + m_pBandwidth->AddColumn("", kColumn1, LTTRUE); + + LTIntPt arrowPos = m_pModel->GetBasePos(); + arrowPos.x += kColumn0; + + HTEXTURE hLeft = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowlt.dtx"); + HTEXTURE hLeftH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowlt_h.dtx"); + + m_pLeft = debug_new(CLTGUIButton); + if (m_pLeft) + { + m_pLeft->Create(CMD_LEFT,LTNULL,hLeft,hLeftH); + m_pLeft->SetBasePos(arrowPos); + AddControl(m_pLeft); + m_pLeft->SetCommandHandler(this); + } + arrowPos.x += kArrow; + + HTEXTURE hRight = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowrt.dtx"); + HTEXTURE hRightH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowrt_h.dtx"); + m_pRight = debug_new(CLTGUIButton); + if (m_pRight) + { + m_pRight->Create(CMD_RIGHT,LTNULL,hRight,hRightH); + m_pRight->SetBasePos(arrowPos); + AddControl(m_pRight); + m_pRight->SetCommandHandler(this); + } + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenPlayer::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand == CMD_OK) + { + HandleCallback(dwParam1,dwParam2); + return 1; + } + switch(dwCommand) + { + case CMD_EDIT_NAME: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditNameCallBack; +// mb.eInput = CLTGUIEditCtrl::kInputAlphaNumeric; + mb.pString = m_sPlayerName.c_str(); + mb.nMaxChars = MAX_PLAYER_NAME-1; + g_pInterfaceMgr->ShowMessageBox(IDS_PLAYER_NAME,&mb); + } break; + case CMD_EDIT_BANDWIDTH: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditBandwidthCallBack; + mb.pString = m_sBandwidth; + mb.nMaxChars = kMaxBandwidthStrLen; + mb.eInput = CLTGUIEditCtrl::kInputNumberOnly; + g_pInterfaceMgr->ShowMessageBox(IDS_BANDWIDTH_EDIT,&mb); + } break; + case CMD_LEFT: + { + PrevModel(); + } break; + case CMD_RIGHT: + { + NextModel(); + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenPlayer::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + LTBOOL bInMPGame = (IsMultiplayerGame() && g_pGameClientShell->IsWorldLoaded()); + if (bFocus) + { + if (g_bLAN) + { + m_pBandwidthCycle->Show(LTFALSE); + m_pBandwidth->Show(LTFALSE); + } + else + { + m_pBandwidthCycle->Show(LTTRUE); + m_pBandwidth->Show(LTTRUE); + } + + int n = 0; + for (n = 0; n < g_pModelButeMgr->GetNumDMModels(); n++) + { + ModelId id = g_pModelButeMgr->GetDMModel(n); + HMODELDB dummy = NULL; + g_pILTModelClient->CacheModelDB(g_pModelButeMgr->GetModelFilename(id),dummy); + } + m_nCurrentModel = pProfile->m_nDMPlayerModel; + m_pLeft->Show(LTTRUE); + m_pRight->Show(LTTRUE); + m_pModel->Show(LTTRUE); + + m_sPlayerName = pProfile->m_sPlayerName; + + + m_pName->SetString(1,m_sPlayerName.c_str()); + + m_nBandwidth = pProfile->m_nBandwidthClient; + UpdateBandwidth(); + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + pProfile->m_sPlayerName = m_sPlayerName; + int n = 0; + for (n = 0; n < g_pModelButeMgr->GetNumDMModels(); n++) + { + ModelId id = g_pModelButeMgr->GetDMModel(n); + g_pILTModelClient->UncacheModelDB(g_pModelButeMgr->GetModelFilename(id)); + } + pProfile->m_nDMPlayerModel = m_nCurrentModel; + + pProfile->m_nBandwidthClient = m_nBandwidth; + pProfile->m_nBandwidthClientCustom = (uint16)atol(m_sBandwidth); + + pProfile->Save(); + pProfile->ApplyMultiplayer(g_bLAN); + + + if (bInMPGame) + g_pClientMultiplayerMgr->UpdateMultiPlayer(); + + } + CBaseScreen::OnFocus(bFocus); + + if (bFocus) + UpdateChar(); +} + +LTBOOL CScreenPlayer::OnUp() +{ + m_pLeft->Enable(LTFALSE); + m_pRight->Enable(LTFALSE); + LTBOOL bHandled = CBaseScreen::OnUp(); + m_pLeft->Enable(LTTRUE); + m_pRight->Enable(LTTRUE); + return bHandled; +} + +LTBOOL CScreenPlayer::OnDown() +{ + m_pLeft->Enable(LTFALSE); + m_pRight->Enable(LTFALSE); + LTBOOL bHandled = CBaseScreen::OnDown(); + m_pLeft->Enable(LTTRUE); + m_pRight->Enable(LTTRUE); + return bHandled; +} + + +LTBOOL CScreenPlayer::OnLeft() +{ + if (m_pModel->IsSelected()) + { + PrevModel(); + return LTTRUE; + } + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + if (!m_nBandwidth) + m_nBandwidth = eBandwidth_Custom-1; + else + --m_nBandwidth; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + + return CBaseScreen::OnLeft(); + +} + + +LTBOOL CScreenPlayer::OnRight() +{ + if (m_pModel->IsSelected()) + { + NextModel(); + return LTTRUE; + } + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + ++m_nBandwidth; + if (m_nBandwidth >= eBandwidth_Custom) + m_nBandwidth = 0; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + + return CBaseScreen::OnRight(); + +} + +/******************************************************************/ + +/******************************************************************/ +LTBOOL CScreenPlayer::OnLButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + ++m_nBandwidth; + if (m_nBandwidth >= eBandwidth_Custom) + m_nBandwidth = 0; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnLButtonUp(x,y); +} + + +/******************************************************************/ +LTBOOL CScreenPlayer::OnRButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + if (pCtrl == m_pBandwidthCycle) + { + m_nBandwidth = m_pBandwidthCycle->GetSelIndex(); + if (!m_nBandwidth) + m_nBandwidth = eBandwidth_Custom-1; + else + --m_nBandwidth; + m_pBandwidthCycle->SetSelIndex(m_nBandwidth); + UpdateBandwidth(); + return LTTRUE; + } + return CBaseScreen::OnRButtonUp(x,y); +} +LTBOOL CScreenPlayer::OnMouseMove(int x, int y) +{ + LTBOOL bHandled = CBaseScreen::OnMouseMove(x, y); + if (GetSelectedControl() == m_pLeft || GetSelectedControl() == m_pRight) + m_pModel->Select(LTTRUE); + else if (GetSelectedControl() != m_pModel) + m_pModel->Select(LTFALSE); + return bHandled; +} + +void CScreenPlayer::NextModel() +{ + m_nCurrentModel++; + if (m_nCurrentModel >= g_pModelButeMgr->GetNumDMModels()) + m_nCurrentModel = 0; + UpdateChar(); +} + +void CScreenPlayer::PrevModel() +{ + if (!m_nCurrentModel) + m_nCurrentModel = g_pModelButeMgr->GetNumDMModels(); + m_nCurrentModel--; + + UpdateChar(); +} + +void CScreenPlayer::UpdateChar() +{ + + HOBJECT hChar = m_CharSFX.GetObject(); + if (hChar) + { + ModelId id = eModelIdInvalid; + + if (m_nCurrentModel >= g_pModelButeMgr->GetNumDMModels()) + { + m_nCurrentModel = 0; + } + id = g_pModelButeMgr->GetDMModel(m_nCurrentModel); + g_pLTClient->Common()->SetObjectFlags( hChar, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + SAFE_STRCPY(createStruct.m_Filename, g_pModelButeMgr->GetModelFilename(id)); + if(g_pModelButeMgr->GetSkinReader(id)) + { + g_pModelButeMgr->GetSkinReader(id)->CopyList(0, createStruct.m_SkinNames[0], MAX_CS_FILENAME_LEN+1); + } + + g_pModelButeMgr->CopyRenderStyleFilenames( id, &createStruct ); + + g_pLTClient->SetModelAnimation(hChar, 0); + g_pCommonLT->SetObjectFilenames(hChar, &createStruct); + + uint32 dwAni = g_pLTClient->GetAnimIndex(hChar, "Interface"); + if (dwAni != INVALID_ANI) + { + g_pLTClient->SetModelAnimation(hChar, dwAni); + } + + // Remove old attachments... + + ClearAttachFX(); + + // Create the required attachments for this model... + + INT_CHAR *pChar = g_pLayoutMgr->GetScreenCharacter((eScreenID)m_nScreenID); + uint8 nDefaultAttachments = g_pModelButeMgr->GetNumDefaultAttachments( id ); + + const char *pszAttachmentPos; + const char *pszAttachment; + + for( uint8 i = 0; i < nDefaultAttachments; ++i ) + { + INT_ATTACH acs; + + g_pModelButeMgr->GetDefaultAttachment( id, i, pszAttachmentPos, pszAttachment ); + + acs.nAttachmentID = g_pAttachButeMgr->GetAttachmentIDByName( pszAttachment ); + acs.fScale = pChar->fScale; + + LTStrCpy( acs.szSocket, pszAttachmentPos, ARRAY_LEN( acs.szSocket )); + + CreateAttachFX( &acs ); + } + } +} + + +void CScreenPlayer::UpdateBandwidth() +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if ( m_nBandwidth >= eBandwidth_Custom ) + { + m_sBandwidth.Format( "%d", pProfile->m_nBandwidthClientCustom); + m_pBandwidth->SetString(1,m_sBandwidth); + } + else + { + m_sBandwidth.Format( "%d", g_BandwidthClient[m_nBandwidth]); + m_pBandwidth->SetString(1,m_sBandwidth); + } +} + +void CScreenPlayer::HandleCallback(uint32 dwParam1, uint32 dwParam2) +{ + switch(dwParam2) + { + case CMD_EDIT_BANDWIDTH: + { + char *pszBandwidth = (char *)dwParam1; + uint32 nBandwidth = (uint32)atoi(pszBandwidth); + if ( IsValidBandwidth(nBandwidth) ) + { + m_sBandwidth = pszBandwidth; + m_sBandwidth = m_sBandwidth.Left( kMaxBandwidthStrLen ); + m_nBandwidth = eBandwidth_Custom; + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + pProfile->m_nBandwidthClientCustom = (uint16)atol(m_sBandwidth); + m_pBandwidthCycle->UpdateData(LTFALSE); + UpdateBandwidth(); + } + else + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(FormatTempString(IDS_BANDWIDTH_INVALID,GetMinimumBandwidth(),GetMaximumBandwidth()),&mb); + } + } + break; + case CMD_EDIT_NAME: + { + const char* pName = FixPlayerName((char *)dwParam1); + if (pName && strlen(pName)) + { + m_sPlayerName = pName; + m_pName->SetString(1,pName); + } + } break; + } + UpdateData(); +} + diff --git a/Jack/ClientShellDLL/ScreenPlayer.h b/Jack/ClientShellDLL/ScreenPlayer.h new file mode 100644 index 00000000..3fc79d30 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPlayer.h @@ -0,0 +1,68 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPlayer.h +// +// PURPOSE : Interface screen for player setup +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_PLAYER_H_ +#define _SCREEN_PLAYER_H_ + +#include "BaseScreen.h" +#include "LayoutMgr.h" + +class CScreenPlayer : public CBaseScreen +{ +public: + CScreenPlayer(); + virtual ~CScreenPlayer(); + + + // Build the screen + LTBOOL Build(); + void Term(); + + void OnFocus(LTBOOL bFocus); + + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnUp(); + virtual LTBOOL OnDown(); + virtual LTBOOL OnMouseMove(int x, int y); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + + + void NextModel(); + void PrevModel(); + +protected: + void HandleCallback(uint32 dwParam1, uint32 dwParam2); + + void UpdateBandwidth(); + + void UpdateChar(); + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + CLTGUIColumnCtrl* m_pName; + CLTGUITextCtrl* m_pModel; + CLTGUIButton* m_pLeft; + CLTGUIButton* m_pRight; + + int m_nCurrentModel; + std::string m_sPlayerName; + + CLTGUICycleCtrl* m_pBandwidthCycle; + CLTGUIColumnCtrl* m_pBandwidth; + + uint8 m_nBandwidth; + CString m_sBandwidth; + +}; + + +#endif // _SCREEN_PLAYER_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPlayerTeam.cpp b/Jack/ClientShellDLL/ScreenPlayerTeam.cpp new file mode 100644 index 00000000..cc00cba2 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPlayerTeam.cpp @@ -0,0 +1,625 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPlayerTeam.cpp +// +// PURPOSE : Interface screen for team selection +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenPlayerTeam.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientMultiplayerMgr.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + +namespace +{ + const int CMD_TEAM1 = (CMD_CUSTOM+1); + const int CMD_TEAM2 = (CMD_CUSTOM+2); + #define INVALID_ANI ((HMODELANIM)-1) + + uint32 nTeamColors[2] = {argbBlack,argbBlack}; + uint8 nListFontSize = 14; + uint16 nListWidth = 100; + + CTimer UpdateTimer; + CTimer AutoSelectTimer; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenPlayerTeam::CScreenPlayerTeam() +{ + memset(m_pTeams,0,sizeof(m_pTeams)); + memset(m_pPlayers,0,sizeof(m_pPlayers)); + memset(m_pFrame,0,sizeof(m_pFrame)); +} + +CScreenPlayerTeam::~CScreenPlayerTeam() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenPlayerTeam::Term +// +// PURPOSE: Terminate the screen +// +// ----------------------------------------------------------------------- // + +void CScreenPlayerTeam::Term() +{ + CBaseScreen::Term(); +} + +// Build the screen +LTBOOL CScreenPlayerTeam::Build() +{ + + CreateTitle(IDS_TITLE_TEAM); + + nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + nListWidth = (uint16)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListWidth"); + + LTRect rTeam[2]; + char szAtt[128]; + + for (uint8 nTeam = 0; nTeam < 2; nTeam++) + { + sprintf(szAtt,"Team%dRect",nTeam); + rTeam[nTeam] = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_PLAYER_TEAM,szAtt); + + sprintf(szAtt,"Team%dColor",(nTeam+1)); + LTVector vCol = g_pLayoutMgr->GetVector("Scores",szAtt); + uint8 nR = (uint8)vCol.x; + uint8 nG = (uint8)vCol.y; + uint8 nB = (uint8)vCol.z; + nTeamColors[nTeam]= SET_ARGB(0xB0,nR,nG,nB); + + uint16 nWidth = rTeam[nTeam].right - rTeam[nTeam].left; + uint16 nHeight = rTeam[nTeam].bottom - rTeam[nTeam].top; + + LTIntPt pos(rTeam[nTeam].left,rTeam[nTeam].top); + m_pFrame[nTeam] = debug_new(CLTGUIFrame); + m_pFrame[nTeam]->Create((uint32)0,nWidth,nHeight); + m_pFrame[nTeam]->SetBasePos(pos); + m_pFrame[nTeam]->SetBorder(2,argbBlack); + AddControl(m_pFrame[nTeam]); + + + }; + + LTIntPt pos(rTeam[0].left+4,rTeam[0].top+2); + m_pTeams[0] = AddTextItem( "", CMD_TEAM1, IDS_HELP_CHOOSE_TEAM_1, pos); + pos.y += 22; + + uint16 nHeight = (rTeam[0].bottom-pos.y) - 8; + m_pPlayers[0] = AddList(pos,nHeight, LTTRUE, nListWidth); + if (m_pPlayers[0]) + { + m_pPlayers[0]->SetIndent(LTIntPt(4,4)); + m_pPlayers[0]->SetFrameWidth(2); +// m_pPlayers[0]->SetColors(nTeamColors[0],nTeamColors[0],nTeamColors[0]); + m_pPlayers[0]->Enable(LTFALSE); + } + + pos= LTIntPt(rTeam[1].left+4,rTeam[1].top+2); + m_pTeams[1] = AddTextItem( "", CMD_TEAM2, IDS_HELP_CHOOSE_TEAM_2, pos); + pos.y += 22; + + nHeight = (rTeam[1].bottom - pos.y) - 8; + m_pPlayers[1] = AddList(pos,nHeight, LTTRUE, nListWidth); + if (m_pPlayers[1]) + { + m_pPlayers[1]->SetIndent(LTIntPt(4,4)); + m_pPlayers[1]->SetFrameWidth(2); +// m_pPlayers[1]->SetColors(nTeamColors[1],nTeamColors[1],nTeamColors[1]); + m_pPlayers[1]->Enable(LTFALSE); + } + + pos.x = GetPageLeft(); + pos.y = GetPageBottom()-20; + m_pAuto = AddTextItem(IDS_AUTO_SELECT,CMD_LAUNCH,IDS_HELP_AUTO_SELECT,pos); + + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + UseBack(LTFALSE); + return LTTRUE; + +} + +uint32 CScreenPlayerTeam::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch(dwCommand) + { + case CMD_TEAM1: + m_nTeam = 0; + Escape(); + break; + case CMD_TEAM2: + m_nTeam = 1; + Escape(); + break; + case CMD_LAUNCH: + m_nTeam = INVALID_TEAM; + Escape(); + break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenPlayerTeam::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + m_nTeam = INVALID_TEAM; + + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( pLocalCI ) + SelectTeam(pLocalCI->nTeamID); + + m_pAuto->Show(!g_pClientMultiplayerMgr->HasSelectedTeam()); + + UpdateTeam(); + + AutoSelectTimer.Start(30.0f); + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + + } + CBaseScreen::OnFocus(bFocus); +} + +void CScreenPlayerTeam::Escape() +{ + + if (!g_pClientMultiplayerMgr->HasSelectedTeam()) + { + g_pClientMultiplayerMgr->SelectTeam(m_nTeam,true); + + g_pClientMultiplayerMgr->UpdateMultiPlayer(); + + // Tell the client we're ready to play. + g_pGameClientShell->SendClientLoadedMessage( ); + + + + g_pInterfaceMgr->ChangeState(GS_PLAYING); + } + else + { + g_pClientMultiplayerMgr->SelectTeam(m_nTeam,true); + g_pClientMultiplayerMgr->UpdateMultiPlayer(); + + CBaseScreen::Escape(); + } +} + + + +bool CScreenPlayerTeam::UpdateInterfaceSFX() +{ + if (AutoSelectTimer.Stopped()) + { + Escape(); + return true; + } + + if (UpdateTimer.Stopped()) + UpdateTeam(); + + for (uint8 nTeam = 0; nTeam < 2; nTeam++) + { + + for (int i = 0; i < m_nNumTeamAttachments[nTeam]; i++) + { + CBaseScaleFX *pSFX = &m_aTeamAttachment[nTeam][i].sfx; + + HMODELSOCKET hSocket = m_aTeamAttachment[nTeam][i].socket; + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_TeamSFX[nTeam].GetObject(), hSocket, transform, LTTRUE) == LT_OK) + { + g_pLTClient->SetObjectPosAndRotation(pSFX->GetObject(), &transform.m_Pos, &transform.m_Rot); + + } + } + } + + + return CBaseScreen::UpdateInterfaceSFX(); +} + + + +void CScreenPlayerTeam::SelectTeam(uint8 nTeam) +{ + if (nTeam >= 2) + { + m_pFrame[0]->SetBorder(2,argbBlack); + m_pFrame[1]->SetBorder(2,argbBlack); + return; + } + + m_pFrame[1-nTeam]->SetBorder(2,argbBlack); + m_pFrame[nTeam]->SetBorder(4,nTeamColors[nTeam]); + + SetSelection(GetIndex(m_pTeams[nTeam])); +} + +void CScreenPlayerTeam::UpdateTeam() +{ + char szTemp[128]; + uint8 nPlayers[2] = {0,0}; + + UpdateTimer.Start(3.0f); + + CClientInfoMgr *pCIMgr = g_pGameClientShell->GetInterfaceMgr( )->GetClientInfoMgr(); + if (!pCIMgr) return; + + CLIENT_INFO* pCI = pCIMgr->GetFirstClient(); + uint32 nLocalID = 0; + g_pLTClient->GetLocalClientID (&nLocalID); + + CLTGUITextCtrl* pItem; + + for (uint8 nTeam = 0; nTeam < 2; nTeam++) + { + m_pPlayers[nTeam]->RemoveAll(); + } + + while (pCI) + { + if (pCI->nTeamID != INVALID_TEAM) + { + LTStrCpy(szTemp,pCI->sName.c_str(),sizeof(szTemp)); + + uint32 nColor = nTeamColors[pCI->nTeamID]; + + pItem = CreateTextItem(szTemp,NULL,NULL,kDefaultPos,LTTRUE); + pItem->SetColors(nColor,nColor,nColor); + pItem->SetFont(LTNULL, nListFontSize); + pItem->SetFixedWidth(nListWidth,LTTRUE); + m_pPlayers[pCI->nTeamID]->AddControl(pItem); + nPlayers[pCI->nTeamID]++; + } + + pCI = pCI->pNext; + } + + for (nTeam = 0; nTeam < 2; nTeam++) + { + CTeam* pTeam = CTeamMgr::Instance().GetTeam(nTeam); + if (!pTeam) continue; + + sprintf(szTemp,"%s - %s %d", pTeam->GetName(), LoadTempString(IDS_SCORE_PLAYERS), nPlayers[nTeam]); + m_pTeams[nTeam]->SetString(szTemp); + }; + + + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenPlayerTeam::CreateInterfaceSFX +// +// PURPOSE: Create the SFX to render on this screen +// +// ----------------------------------------------------------------------- // + +void CScreenPlayerTeam::CreateInterfaceSFX() +{ + CBaseScreen::CreateInterfaceSFX(); + + for (uint8 nTeam = 0; nTeam < 2; nTeam++) + { + CreateTeamFX(nTeam); + } +} + + +void CScreenPlayerTeam::CreateTeamFX(uint8 nTeam) +{ + char szName[128]; + sprintf(szName,"Team%dModel",nTeam); + INT_CHAR *pChar = g_pLayoutMgr->GetScreenCustomCharacter(SCREEN_ID_PLAYER_TEAM,szName); + + CTeam* pTeam = CTeamMgr::Instance().GetTeam(nTeam); + ModelId id = g_pModelButeMgr->GetTeamModel(pTeam->GetModel()); + if (pChar) + { + + + BSCREATESTRUCT bcs; + LTVector vPos, vTemp, vScale(1.0f,1.0f,1.0f); + LTRotation rRot = s_rRot; + + VEC_COPY(vPos,s_vPos); + VEC_SET(vScale,1.0f,1.0f,1.0f); + VEC_MULSCALAR(vScale, vScale, pChar->fScale); + + LTVector vModPos = pChar->vPos; + LTFLOAT fRot = pChar->fRot; + fRot = MATH_PI + DEG2RAD(fRot); + rRot.Rotate(s_vU, fRot); + + VEC_MULSCALAR(vTemp, s_vF, vModPos.z); + VEC_ADD(vPos, vPos, vTemp); + + VEC_MULSCALAR(vTemp, s_vR, vModPos.x); + VEC_ADD(vPos, vPos, vTemp); + + VEC_MULSCALAR(vTemp, s_vU, vModPos.y); + VEC_ADD(vPos, vPos, vTemp); + + VEC_COPY(bcs.vPos, vPos); + bcs.rRot = rRot; + VEC_COPY(bcs.vInitialScale, vScale); + VEC_COPY(bcs.vFinalScale, vScale); + VEC_SET(bcs.vInitialColor, 1.0f, 1.0f, 1.0f); + VEC_SET(bcs.vFinalColor, 1.0f, 1.0f, 1.0f); + bcs.bUseUserColors = LTTRUE; + + bcs.pFilename = g_pModelButeMgr->GetModelFilename(id); + bcs.pSkinReader = g_pModelButeMgr->GetSkinReader(id); + bcs.pRenderStyleReader = g_pModelButeMgr->GetRenderStyleReader(id); + bcs.dwFlags = FLAG_VISIBLE | FLAG_FOGDISABLE;// | FLAG_NOLIGHT; + + bcs.nType = OT_MODEL; + bcs.fInitialAlpha = 0.99f; + bcs.fFinalAlpha = 0.99f; + bcs.fLifeTime = 1000000.0f; + bcs.bLoop = LTTRUE; + + bcs.fMinRotateVel = 1.0f; + bcs.fMaxRotateVel = 1.0f; + + bcs.nMenuLayer = pChar->nMenuLayer; + + + if (m_TeamSFX[nTeam].Init(&bcs)) + { + m_TeamSFX[nTeam].CreateObject(g_pLTClient); + if (m_TeamSFX[nTeam].GetObject()) + { + g_pInterfaceMgr->AddInterfaceSFX(&m_TeamSFX[nTeam], IFX_NORMAL); + + int reqID[MAX_INT_ATTACHMENTS]; + int numReq = g_pAttachButeMgr->GetRequirementIDs(bcs.pFilename,reqID,MAX_INT_ATTACHMENTS); + int i; + for (i = 0; i < numReq; i++) + { + INT_ATTACH acs; + acs.fScale = pChar->fScale; + acs.nAttachmentID = g_pAttachButeMgr->GetRequirementAttachment(reqID[i]); + g_pAttachButeMgr->GetRequirementSocket(reqID[i],acs.szSocket,sizeof(acs.szSocket)); + + CreateTeamAttachFX(&acs,nTeam); + } + + } + } + + } +} + +void CScreenPlayerTeam::CreateTeamAttachFX(INT_ATTACH *pAttach, uint8 nTeam) +{ + if (m_nNumTeamAttachments[nTeam] < MAX_INT_ATTACHMENTS) + { + int nCount = m_nNumTeamAttachments[nTeam]; + + BSCREATESTRUCT bcs; + LTVector vPos, vTemp, vScale(1.0f,1.0f,1.0f); + LTRotation rRot = s_rRot; + + char szModel[128]; + + g_pAttachButeMgr->GetAttachmentModel(pAttach->nAttachmentID,szModel,sizeof(szModel)); + + VEC_SET(vScale,1.0f,1.0f,1.0f); + VEC_MULSCALAR(vScale, vScale, pAttach->fScale); + + VEC_COPY(bcs.vInitialScale, vScale); + VEC_COPY(bcs.vFinalScale, vScale); + VEC_SET(bcs.vInitialColor, 1.0f, 1.0f, 1.0f); + VEC_SET(bcs.vFinalColor, 1.0f, 1.0f, 1.0f); + bcs.bUseUserColors = LTTRUE; + + bcs.pFilename = szModel; + bcs.dwFlags = FLAG_VISIBLE | FLAG_FOGDISABLE;// | FLAG_NOLIGHT; + + CButeListReader blrSkinReader; + g_pAttachButeMgr->GetAttachmentSkins(pAttach->nAttachmentID, &blrSkinReader); + bcs.pSkinReader = &blrSkinReader; + + CButeListReader blrRenderStyleReader; + g_pAttachButeMgr->GetAttachmentRenderStyles(pAttach->nAttachmentID, &blrRenderStyleReader); + bcs.pRenderStyleReader = &blrRenderStyleReader; + + bcs.fInitialAlpha = 1.0f; + bcs.fFinalAlpha = 1.0f; + bcs.nType = OT_MODEL; + bcs.fLifeTime = 1000000.0f; + bcs.bLoop = LTTRUE; + bcs.nMenuLayer = m_TeamSFX[nTeam].GetMenuLayer(); + + CBaseScaleFX *pSFX = &m_aTeamAttachment[nTeam][nCount].sfx; + + if (!pSFX->Init(&bcs)) return; + + pSFX->CreateObject(g_pLTClient); + if (!pSFX->GetObject()) return; + + HOBJECT hChar = m_TeamSFX[nTeam].GetObject(); + if (!hChar) return; + if (g_pModelLT->GetSocket(hChar, pAttach->szSocket, m_aTeamAttachment[nTeam][nCount].socket) != LT_OK) + return; + + g_pInterfaceMgr->AddInterfaceSFX(pSFX, IFX_ATTACH); + m_nNumTeamAttachments[nTeam]++; + } +} + + +void CScreenPlayerTeam::RemoveInterfaceSFX() +{ + + for (uint8 nTeam = 0; nTeam < 2; nTeam++) + { + g_pInterfaceMgr->RemoveInterfaceSFX(&m_TeamSFX[nTeam]); + + m_TeamSFX[nTeam].Reset(); + m_TeamSFX[nTeam].Term(); + + ClearTeamAttachFX(nTeam); + } + + CBaseScreen::RemoveInterfaceSFX(); +} + +void CScreenPlayerTeam::ClearTeamAttachFX(uint8 nTeam) +{ + for (int i = 0; i < MAX_INT_ATTACHMENTS; i++) + { + g_pInterfaceMgr->RemoveInterfaceSFX(&m_aTeamAttachment[nTeam][i].sfx); + m_aTeamAttachment[nTeam][i].sfx.Reset(); + m_aTeamAttachment[nTeam][i].sfx.Term(); + m_aTeamAttachment[nTeam][i].socket = INVALID_MODEL_SOCKET; + } + m_nNumTeamAttachments[nTeam] = 0; +} + + + +LTBOOL CScreenPlayerTeam::OnMouseMove(int x, int y) +{ + if (m_pFrame[0]->IsOnMe(x,y)) + { + if (GetSelectedControl() != m_pTeams[0]) + { + SelectTeam(0); + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + UpdateHelpText(); + return LTTRUE; + } + } + else if (m_pFrame[1]->IsOnMe(x,y)) + { + if (GetSelectedControl() != m_pTeams[1]) + { + SelectTeam(1); + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + UpdateHelpText(); + return LTTRUE; + } + } + else + { + SelectTeam(-1); + return CBaseScreen::OnMouseMove(x,y); + } + + return LTFALSE; + +} + +LTBOOL CScreenPlayerTeam::OnUp() +{ + LTBOOL bHandled = CBaseScreen::OnUp(); + if (bHandled) + { + if (GetSelectedControl() == m_pTeams[0]) + SelectTeam(0); + else if (GetSelectedControl() == m_pTeams[1]) + SelectTeam(1); + else + SelectTeam(-1); + } + return bHandled; +} + +LTBOOL CScreenPlayerTeam::OnDown() +{ + LTBOOL bHandled = CBaseScreen::OnDown(); + if (bHandled) + { + if (GetSelectedControl() == m_pTeams[0]) + SelectTeam(0); + else if (GetSelectedControl() == m_pTeams[1]) + SelectTeam(1); + else + SelectTeam(-1); + } + return bHandled; +} + + +/******************************************************************/ +LTBOOL CScreenPlayerTeam::OnLButtonDown(int x, int y) +{ + if (m_pFrame[0]->IsOnMe(x,y)) + { + SelectTeam(0); + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + + m_nLMouseDownItemSel=GetIndex(m_pTeams[0]); + + return m_pTeams[0]->OnLButtonDown(x,y); + } + else if (m_pFrame[1]->IsOnMe(x,y)) + { + SelectTeam(1); + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + + m_nLMouseDownItemSel=GetIndex(m_pTeams[1]); + + return m_pTeams[1]->OnLButtonDown(x,y); + } + + SelectTeam(-1); + return CBaseScreen::OnLButtonDown( x, y); +} + +/******************************************************************/ +LTBOOL CScreenPlayerTeam::OnLButtonUp(int x, int y) +{ + if (m_pFrame[0]->IsOnMe(x,y) && m_nLMouseDownItemSel == GetIndex(m_pTeams[0])) + { + LTBOOL bHandled = m_pTeams[0]->OnLButtonUp(x,y); + if (bHandled) + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return bHandled; + } + else if (m_pFrame[1]->IsOnMe(x,y) && m_nLMouseDownItemSel == GetIndex(m_pTeams[1])) + { + LTBOOL bHandled = m_pTeams[1]->OnLButtonUp(x,y); + if (bHandled) + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + return bHandled; + } + return CBaseScreen::OnLButtonUp( x, y); +} + diff --git a/Jack/ClientShellDLL/ScreenPlayerTeam.h b/Jack/ClientShellDLL/ScreenPlayerTeam.h new file mode 100644 index 00000000..de7cca71 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPlayerTeam.h @@ -0,0 +1,71 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPlayerTeam.h +// +// PURPOSE : Interface screen for team selection +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREENPLAYERTEAM_H_ +#define _SCREENPLAYERTEAM_H_ + +#include "BaseScreen.h" +#include "LayoutMgr.h" + +class CScreenPlayerTeam : public CBaseScreen +{ +public: + CScreenPlayerTeam(); + virtual ~CScreenPlayerTeam(); + + + // Build the screen + LTBOOL Build(); + void Term(); + + void OnFocus(LTBOOL bFocus); + + virtual void Escape(); + + virtual LTBOOL OnMouseMove(int x, int y); + virtual LTBOOL OnUp(); + virtual LTBOOL OnDown(); + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + + + // Returns false if the screen should exit as a result of this update + virtual bool UpdateInterfaceSFX(); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + virtual void CreateInterfaceSFX(); + virtual void RemoveInterfaceSFX(); + + void CreateTeamFX(uint8 nTeam); + void CreateTeamAttachFX(INT_ATTACH *pAttach, uint8 nTeam); + void ClearTeamAttachFX(uint8 nTeam); + + void SelectTeam(uint8 nTeam); + void UpdateTeam(); + + CLTGUITextCtrl* m_pTeams[2]; + CLTGUIListCtrl* m_pPlayers[2]; + CLTGUIFrame* m_pFrame[2]; + CLTGUITextCtrl* m_pAuto; + + uint8 m_nTeam; + + CBaseScaleFX m_TeamSFX[2]; + int m_nNumTeamAttachments[2]; + AttachmentData m_aTeamAttachment[2][MAX_INT_ATTACHMENTS]; + + +}; + + +#endif // _SCREENPLAYERTEAM_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPostload.cpp b/Jack/ClientShellDLL/ScreenPostload.cpp new file mode 100644 index 00000000..2cf67c93 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPostload.cpp @@ -0,0 +1,713 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPostload.h +// +// PURPOSE : Interface screen to be displayed after loading a level but before +// starting to play it. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ScreenPostload.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" +#include "ClientMultiplayerMgr.h" + + +namespace +{ + bool s_bFlash; + float s_fFlashTime; + uint32 s_nFlashColor; + +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenPostload::CScreenPostload() +{ + m_bReadLayout = false; + + m_pMissionNameStr = LTNULL; + m_pLevelNameStr = LTNULL; + m_pBriefingStr = LTNULL; + m_pHelpStr = LTNULL; + m_pContinueStr = LTNULL; + + m_nDefaultTitleFont = 0; + m_nDefaultTitleFontSize = 0; + m_nDefaultTitleColor = 0; + m_nDefaultBriefingWidth = 0; + m_nDefaultBriefingFont = 0; + m_nDefaultBriefingFontSize = 0; + m_nDefaultHelpColor = 0; + m_nDefaultHelpWidth = 0; + m_nDefaultHelpFont = 0; + m_nDefaultHelpFontSize = 0; + m_nDefaultHelpColor = 0; + m_nDefaultContinueFont = 0; + m_nDefaultContinueFontSize = 0; + m_nDefaultContinueColor = 0; + m_bPressAnyKey = false; +} + +CScreenPostload::~CScreenPostload() +{ + if (m_pMissionNameStr) + { + g_pFontManager->DestroyPolyString(m_pMissionNameStr); + m_pMissionNameStr = LTNULL; + } + if (m_pLevelNameStr) + { + g_pFontManager->DestroyPolyString(m_pLevelNameStr); + m_pLevelNameStr = LTNULL; + } + if (m_pBriefingStr) + { + g_pFontManager->DestroyPolyString(m_pBriefingStr); + m_pBriefingStr = LTNULL; + } + if (m_pHelpStr) + { + g_pFontManager->DestroyPolyString(m_pHelpStr); + m_pHelpStr = LTNULL; + } +} + + +// Build the screen +LTBOOL CScreenPostload::Build() +{ + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenPostload::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + // [KLS 6/23/02] - Turn the cursor off until everything is loaded... + g_pInterfaceMgr->UseCursor(LTFALSE, LTFALSE); + + // Assume we won't be showing the press any key text. + m_bPressAnyKey = false; + + // Check if we have a mission entry. + bool bGotMission = false; + if( !g_pMissionMgr->IsCustomLevel( )) + { + int nCurMission = g_pMissionMgr->GetCurrentMission( ); + MISSION* pMission = g_pMissionButeMgr->GetMission( nCurMission ); + + if( pMission ) + { + m_missionname = LoadTempString(pMission->nNameId); + int nCurLevel = g_pMissionMgr->GetCurrentLevel( ); + m_levelname = LoadTempString( pMission->aLevels[nCurLevel].nNameId ); + m_layout = pMission->szLayout; + + // Show a briefing for this level if it exists. Also, only + // show the briefing if we haven't been to this level before. + int nBriefingId = pMission->aLevels[nCurLevel].nBriefingId; + if( nBriefingId >= 0 && !g_pMissionMgr->IsRestoringLevel( )) + { + m_briefing = LoadTempString( nBriefingId ); + m_layout = pMission->szBriefLayout; + } + else + m_briefing = ""; + + // Show help text for this level if it exists. + int nHelpId = pMission->aLevels[nCurLevel].nHelpId; + if( nHelpId >= 0) + m_help = LoadTempString( nHelpId ); + else + m_help = ""; + bGotMission = true; + } + } + + + // If we were unsuccessful in getting info from the mission, then just + // use defaults. + if( !bGotMission ) + { + // If connecting to a remote server, set our mission descriptor to + // the ip we're connecting to. + if( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + // Make a loading string using the IP to be joined. + char szLoadingString[256]; + if (strlen(g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName)) + { + sprintf( szLoadingString, "%s: %s", LoadTempString(IDS_CONNECTING_TO_SERVER), + g_pClientMultiplayerMgr->GetStartGameRequest( ).m_HostInfo.m_sName ); + } + else + { + sprintf( szLoadingString, "%s", LoadTempString(IDS_CONNECTING_TO_SERVER)); + } + m_missionname = szLoadingString; + + sprintf( szLoadingString, " (%s)", g_pClientMultiplayerMgr->GetStartGameRequest( ).m_TCPAddress ); + + m_levelname = szLoadingString; + } + // Local game, set the mission descriptor to the level name. + else + { + + if (g_pGameClientShell->IsRunningPerformanceTest()) + { + m_missionname = LoadTempString( IDS_TITLE_PERFORMANCE_TEST ); + m_levelname = ""; + } + else + { + m_missionname = LoadTempString( IDS_CUSTOM_LEVEL ); + // Split the worldname up into parts so we can get the load string. + char const* pszWorldName = g_pMissionMgr->GetCurrentWorldName( ); + char szWorldTitle[MAX_PATH] = ""; + _splitpath( pszWorldName, NULL, NULL, szWorldTitle, NULL ); + m_levelname = szWorldTitle; + + } + + } + + m_layout = "LoadScreenDefault"; + m_briefing = ""; + } + + char szTagName[30]; + if (!m_bReadLayout) + { + m_bReadLayout = true; + + SAFE_STRCPY(szTagName,"LoadScreenDefault"); + + //default layout info title string + m_DefaultTitlePos = g_pLayoutMgr->GetPoint(szTagName,"TitlePos"); + m_nDefaultTitleFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleFont"); + m_nDefaultTitleFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleSize"); + + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "TitleColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + m_nDefaultTitleColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info level string + m_DefaultLevelPos = g_pLayoutMgr->GetPoint(szTagName,"LevelPos"); + m_nDefaultLevelFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelFont"); + m_nDefaultLevelFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "LevelColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultLevelColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info mission briefing string + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"BriefingRect"); + m_DefaultBriefingPos = LTIntPt(rect.left,rect.top); + m_nDefaultBriefingWidth = (rect.right - rect.left); + + m_nDefaultBriefingFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingFont"); + m_nDefaultBriefingFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "BriefingColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultBriefingColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info mission help string + rect = g_pLayoutMgr->GetRect(szTagName,"HelpRect"); + m_DefaultHelpPos = LTIntPt(rect.left,rect.top); + m_nDefaultHelpWidth = (rect.right - rect.left); + + m_nDefaultHelpFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpFont"); + m_nDefaultHelpFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "HelpColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultHelpColor = SET_ARGB(0xFF,nR,nG,nB); + + //default layout info Continue string + m_DefaultContinuePos = g_pLayoutMgr->GetPoint(szTagName,"ContinuePos"); + m_nDefaultContinueFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"ContinueFont"); + m_nDefaultContinueFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"ContinueSize"); + + vColor = g_pLayoutMgr->GetVector(szTagName, "ContinueColor"); + nR = (uint8)vColor.x; + nG = (uint8)vColor.y; + nB = (uint8)vColor.z; + + m_nDefaultContinueColor = SET_ARGB(0xFF,nR,nG,nB); + + } + + //Setup title string + LTIntPt TitlePos = m_DefaultTitlePos; + uint8 TitleFont = m_nDefaultTitleFont; + uint8 TitleFontSize = m_nDefaultTitleFontSize; + uint32 TitleColor = m_nDefaultTitleColor; + LTIntPt LevelPos = m_DefaultLevelPos; + uint8 LevelFont = m_nDefaultLevelFont; + uint8 LevelFontSize = m_nDefaultLevelFontSize; + uint32 LevelColor = m_nDefaultLevelColor; + + //look for override values + SAFE_STRCPY(szTagName,m_layout.c_str()); + if (g_pLayoutMgr->Exist(szTagName)) + { + //override layout info title string + if (g_pLayoutMgr->HasValue(szTagName,"TitlePos")) + TitlePos = g_pLayoutMgr->GetPoint(szTagName,"TitlePos"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleFont")) + TitleFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleSize")) + TitleFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"TitleSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"TitleColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "TitleColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + TitleColor = SET_ARGB(0xFF,nR,nG,nB); + } + + //override layout info Level string + if (g_pLayoutMgr->HasValue(szTagName,"LevelPos")) + LevelPos = g_pLayoutMgr->GetPoint(szTagName,"LevelPos"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelFont")) + LevelFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelSize")) + LevelFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"LevelSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"LevelColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "LevelColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + LevelColor = SET_ARGB(0xFF,nR,nG,nB); + } + } + + uint8 nFontSize = (uint8)((float)TitleFontSize * g_pInterfaceResMgr->GetXRatio()); + CUIFont *pFont = g_pInterfaceResMgr->GetFont(TitleFont); + + if (!m_pMissionNameStr) + { + m_pMissionNameStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + m_pMissionNameStr->SetColor(TitleColor); + m_pMissionNameStr->SetText(m_missionname.c_str()); + m_pMissionNameStr->SetCharScreenHeight(nFontSize); + float x = (float)TitlePos.x * g_pInterfaceResMgr->GetXRatio(); + float y = (float)TitlePos.y * g_pInterfaceResMgr->GetYRatio(); + m_pMissionNameStr->SetPosition(x,y); + + nFontSize = (uint8)((float)LevelFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(LevelFont); + + if (!m_pLevelNameStr) + { + m_pLevelNameStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + m_pLevelNameStr->SetColor(LevelColor); + m_pLevelNameStr->SetText(m_levelname.c_str()); + m_pLevelNameStr->SetCharScreenHeight(nFontSize); + x = (float)LevelPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)LevelPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pLevelNameStr->SetPosition(x,y); + + //Setup briefing string + LTIntPt BriefingPos = m_DefaultBriefingPos; + uint16 BriefingWidth = m_nDefaultBriefingWidth; + uint8 BriefingFont = m_nDefaultBriefingFont; + uint8 BriefingFontSize = m_nDefaultBriefingFontSize; + uint32 BriefingColor = m_nDefaultBriefingColor; + + //look for override values + if (g_pLayoutMgr->Exist(szTagName)) + { + //default layout info mission briefing string + if (g_pLayoutMgr->HasValue(szTagName,"BriefingRect")) + { + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"BriefingRect"); + BriefingPos = LTIntPt(rect.left,rect.top); + BriefingWidth = (rect.right - rect.left); + } + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingFont")) + BriefingFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingSize")) + BriefingFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"BriefingSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"BriefingColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "BriefingColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + BriefingColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + nFontSize = (uint8)((float)BriefingFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(BriefingFont); + + if (!m_pBriefingStr) + { + m_pBriefingStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + + m_pBriefingStr->SetText(m_briefing.c_str()); + m_pBriefingStr->SetColor(BriefingColor); + m_pBriefingStr->SetCharScreenHeight(nFontSize); + x = (float)BriefingPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)BriefingPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pBriefingStr->SetPosition(x,y); + m_pBriefingStr->SetWrapWidth((uint16)(g_pInterfaceResMgr->GetXRatio() * (float)BriefingWidth)); + + + //Setup briefing string + LTIntPt HelpPos = m_DefaultHelpPos; + uint16 HelpWidth = m_nDefaultHelpWidth; + uint8 HelpFont = m_nDefaultHelpFont; + uint8 HelpFontSize = m_nDefaultHelpFontSize; + uint32 HelpColor = m_nDefaultHelpColor; + + //look for override values + if (g_pLayoutMgr->Exist(szTagName)) + { + //default layout info mission briefing string + if (g_pLayoutMgr->HasValue(szTagName,"HelpRect")) + { + LTRect rect = g_pLayoutMgr->GetRect(szTagName,"HelpRect"); + HelpPos = LTIntPt(rect.left,rect.top); + HelpWidth = (rect.right - rect.left); + } + + if (g_pLayoutMgr->HasValue(szTagName,"HelpFont")) + HelpFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"HelpSize")) + HelpFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"HelpSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"HelpColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "HelpColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + HelpColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + nFontSize = (uint8)((float)HelpFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(HelpFont); + + if (!m_pHelpStr) + { + m_pHelpStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + if (pProfile->m_bLoadScreenTips) + { + + m_pHelpStr->SetText(m_help.c_str()); + m_pHelpStr->SetColor(HelpColor); + m_pHelpStr->SetCharScreenHeight(nFontSize); + x = (float)HelpPos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)HelpPos.y * g_pInterfaceResMgr->GetYRatio(); + m_pHelpStr->SetPosition(x,y); + m_pHelpStr->SetWrapWidth((uint16)(g_pInterfaceResMgr->GetXRatio() * (float)HelpWidth)); + } + else + { + m_pHelpStr->SetText(""); + } + + + //Setup Continue string + LTIntPt ContinuePos = m_DefaultContinuePos; + uint8 ContinueFont = m_nDefaultContinueFont; + uint8 ContinueFontSize = m_nDefaultContinueFontSize; + m_nContinueColor = m_nDefaultContinueColor; + + //look for override values + if (g_pLayoutMgr->Exist(szTagName)) + { + //override layout info Continue string + if (g_pLayoutMgr->HasValue(szTagName,"ContinuePos")) + ContinuePos = g_pLayoutMgr->GetPoint(szTagName,"ContinuePos"); + + if (g_pLayoutMgr->HasValue(szTagName,"ContinueFont")) + ContinueFont = (uint8)g_pLayoutMgr->GetInt(szTagName,"ContinueFont"); + + if (g_pLayoutMgr->HasValue(szTagName,"ContinueSize")) + ContinueFontSize = (uint8)g_pLayoutMgr->GetInt(szTagName,"ContinueSize"); + + if (g_pLayoutMgr->HasValue(szTagName,"ContinueColor")) + { + LTVector vColor = g_pLayoutMgr->GetVector(szTagName, "ContinueColor"); + uint8 nR = (uint8)vColor.x; + uint8 nG = (uint8)vColor.y; + uint8 nB = (uint8)vColor.z; + + m_nContinueColor = SET_ARGB(0xFF,nR,nG,nB); + } + + } + + // [KLS 6/21/02] - We restore music here to make sure everything is loaded + // before the "press any key" text is shown... + + g_pGameClientShell->RestoreMusic(); + + // [KLS 6/23/02] - Turn the cursor on once everything is loaded... + g_pInterfaceMgr->UseCursor(LTTRUE); + + + nFontSize = (uint8)((float)ContinueFontSize * g_pInterfaceResMgr->GetXRatio()); + pFont = g_pInterfaceResMgr->GetFont(ContinueFont); + + if (!m_pContinueStr) + { + m_pContinueStr = g_pFontManager->CreateFormattedPolyString(pFont,""); + } + + // If we have a briefing, then post the press any key. + if( m_briefing.length( ) > 0 ) + { + m_bPressAnyKey = true; + m_pContinueStr->SetText( LoadTempString( IDS_PRESS_ANY_KEY )); + } + // Otherwise show the "waiting for other players". + else + { + m_bPressAnyKey = false; + m_pContinueStr->SetText( LoadTempString( IDS_WAITINGFOROTHERPLAYERS )); + + g_pGameClientShell->SendClientLoadedMessage( ); + } + + m_pContinueStr->SetColor(m_nContinueColor); + m_pContinueStr->SetCharScreenHeight(nFontSize); + x = (float)ContinuePos.x * g_pInterfaceResMgr->GetXRatio(); + y = (float)ContinuePos.y * g_pInterfaceResMgr->GetYRatio(); + m_pContinueStr->SetPosition(x,y); + + s_bFlash = false; + s_fFlashTime = g_pLTClient->GetTime() + 0.333f; + + s_nFlashColor = (m_nContinueColor ^ 0x00FFFFFF); + + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\pressanykey.wav"); + } + + CBaseScreen::OnFocus(bFocus); + m_bVisited = LTFALSE; + +} + + +void CScreenPostload::Escape() +{ + // Check if they were prompted to press any key. + if( m_bPressAnyKey ) + { + // Acknowledge keypress. + m_bPressAnyKey = false; + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + if (g_pGameClientShell->IsWorldLoaded() && hPlayerObj) + { + // Tell the client we're ready to play. + g_pGameClientShell->SendClientLoadedMessage( ); + + // Change to waiting for other players. + m_pContinueStr->SetText( LoadTempString(IDS_WAITINGFOROTHERPLAYERS)); + m_pContinueStr->SetColor(m_nContinueColor); + } + else + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); + } + } +} + +bool CScreenPostload::UpdateInterfaceSFX() +{ + if( m_bPressAnyKey ) + { + float fTime = g_pLTClient->GetTime(); + if (fTime > s_fFlashTime) + { + s_bFlash = !s_bFlash; + s_fFlashTime = fTime + 0.333f; + if (s_bFlash) + { + m_pContinueStr->SetColor(s_nFlashColor); + } + else + { + m_pContinueStr->SetColor(m_nContinueColor); + } + + } + } + + + return CBaseScreen::UpdateInterfaceSFX(); +} + +void CScreenPostload::CreateInterfaceSFX() +{ + + int n = 0; + char szTagName[30]; + char szAttName[30]; + char szFXName[128]; + + m_bHaveLights = LTFALSE; + + + HOBJECT hCamera = g_pInterfaceMgr->GetInterfaceCamera(); + if (!hCamera) return; + + g_pLTClient->GetObjectPos(hCamera, &s_vPos); + g_pLTClient->GetObjectRotation(hCamera, &s_rRot); + s_vU = s_rRot.Up(); + s_vR = s_rRot.Right(); + s_vF = s_rRot.Forward(); + + + SAFE_STRCPY(szTagName,m_layout.c_str()); + if (!g_pLayoutMgr->Exist(szTagName)) + SAFE_STRCPY(szTagName,"LoadScreenDefault"); + + sprintf(szAttName,"Light%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CreateLightFX(szFXName); + } + + n++; + sprintf(szAttName,"Light%d",n); + + } + + + n = 0; + sprintf(szAttName,"PostScale%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CBaseScaleFX *pSFX = CreateScaleFX(szFXName); + } + + n++; + sprintf(szAttName,"PostScale%d",n); + + } + + + + n = 0; + sprintf(szAttName,"PostFX%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + INT_FX* pFX = g_pLayoutMgr->GetFX(szFXName); + if (pFX) + { + g_pInterfaceMgr->AddInterfaceFX(LTNULL, pFX->szFXName,pFX->vPos,pFX->bLoop); + } + } + + + n++; + sprintf(szAttName,"PostFX%d",n); + + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenPostload::Render +// +// PURPOSE: Renders the screen to a surface +// +// ----------------------------------------------------------------------- // + +LTBOOL CScreenPostload::Render(HSURFACE hDestSurf) +{ + // Check if we're finished waiting for a key. + if( !m_bPressAnyKey ) + { + // Check if the server's ready for us to get in and play. + if( g_pGameClientShell->GetSwitchingWorldsState( ) == eSwitchingWorldsStateFinished ) + { + g_pInterfaceMgr->ChangeState(GS_PLAYING); + return TRUE; + } + } + + if (m_pMissionNameStr) + m_pMissionNameStr->Render(); + if (m_pLevelNameStr) + m_pLevelNameStr->Render(); + if (m_pBriefingStr) + m_pBriefingStr->Render(); + if (m_pHelpStr) + m_pHelpStr->Render(); + if (m_pContinueStr) + m_pContinueStr->Render(); + + return LTTRUE; + +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPostload.h b/Jack/ClientShellDLL/ScreenPostload.h new file mode 100644 index 00000000..3acd8d4a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPostload.h @@ -0,0 +1,88 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPostload.h +// +// PURPOSE : Interface screen to be displayed after loading a level but before +// starting to play it. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_POSTLOAD_H_) +#define _SCREEN_POSTLOAD_H_ + +#include "BaseScreen.h" + +class CScreenPostload : public CBaseScreen +{ +public: + CScreenPostload(); + virtual ~CScreenPostload(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual bool UpdateInterfaceSFX(); + + virtual LTBOOL HandleKeyDown(int key, int rep) { Escape(); return LTTRUE; } + virtual LTBOOL OnLButtonDown(int x, int y) { Escape(); return LTTRUE;} + + virtual LTBOOL Render(HSURFACE hDestSurf); + + // used by Load Screen to synchronize layout info + void SetLayout(const char *pszLayout) { m_layout = pszLayout;} + + +protected: + + virtual void CreateInterfaceSFX(); + + std::string m_missionname; + std::string m_levelname; + std::string m_layout; + std::string m_briefing; + std::string m_help; + + CUIFormattedPolyString *m_pMissionNameStr; + CUIFormattedPolyString *m_pLevelNameStr; + CUIFormattedPolyString *m_pBriefingStr; + CUIFormattedPolyString *m_pHelpStr; + CUIFormattedPolyString *m_pContinueStr; + + + //layout info + bool m_bReadLayout; + LTIntPt m_DefaultTitlePos; + uint8 m_nDefaultTitleFont; + uint8 m_nDefaultTitleFontSize; + uint32 m_nDefaultTitleColor; + LTIntPt m_DefaultLevelPos; + uint8 m_nDefaultLevelFont; + uint8 m_nDefaultLevelFontSize; + uint32 m_nDefaultLevelColor; + LTIntPt m_DefaultBriefingPos; + uint16 m_nDefaultBriefingWidth; + uint8 m_nDefaultBriefingFont; + uint8 m_nDefaultBriefingFontSize; + uint32 m_nDefaultBriefingColor; + LTIntPt m_DefaultHelpPos; + uint16 m_nDefaultHelpWidth; + uint8 m_nDefaultHelpFont; + uint8 m_nDefaultHelpFontSize; + uint32 m_nDefaultHelpColor; + LTIntPt m_DefaultContinuePos; + uint8 m_nDefaultContinueFont; + uint8 m_nDefaultContinueFontSize; + uint32 m_nDefaultContinueColor; + + uint32 m_nContinueColor; + + bool m_bPressAnyKey; + + +}; + +#endif // !defined(_SCREEN_PRELOAD_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPreload.cpp b/Jack/ClientShellDLL/ScreenPreload.cpp new file mode 100644 index 00000000..393d446d --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPreload.cpp @@ -0,0 +1,382 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPreload.h +// +// PURPOSE : Interface screen to be displayed before loading a level +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "ScreenPreload.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "ClientMultiplayerMgr.h" +#include "MissionMgr.h" +//#include "iserverdir.h" + +extern bool g_bLAN; + +namespace +{ +} + +static void FailCDKey( ) +{ + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_CDKEY_INVALID,&mb); + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_MAIN); +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenPreload::CScreenPreload() +{ + m_bWaitingToExit = false; + m_eValidatingCDKeyState = kValidatingCDKeyState_None; + m_bFirstUpdate = false; +} + +CScreenPreload::~CScreenPreload() +{ + +} + + +// Build the screen +LTBOOL CScreenPreload::Build() +{ + // Make sure to call the base class + if (! CBaseScreen::Build()) return LTFALSE; + + UseBack(LTFALSE); + return LTTRUE; +} + + +void CScreenPreload::OnFocus(LTBOOL bFocus) +{ + CBaseScreen::OnFocus(bFocus); + m_bVisited = LTFALSE; +} + + +void CScreenPreload::Escape() +{ +} + +bool CScreenPreload::UpdateInterfaceSFX() +{ + if( m_bFirstUpdate ) + { + m_bFirstUpdate = false; + FirstUpdate( ); + } + + + if (!CBaseScreen::UpdateInterfaceSFX()) + return false; + + ChainFXList::iterator iter = m_Chains.begin(); + bool bAnyActive = false; + while (iter != m_Chains.end() && !bAnyActive) + { + CChainedFX *pChain = (*iter); + pChain->Update(); + + bAnyActive = !pChain->IsIntroDone(); + iter++; + } + + bAnyActive = bAnyActive || !UpdateCDKeyValidation( ); + + if (!bAnyActive ) + { + bool bSuccess = true; + if (m_bWaitingToExit) + bSuccess = g_pMissionMgr->FinishExitLevel( ); + else + bSuccess = g_pMissionMgr->FinishStartGame( ); + + if (!bSuccess) + { + if (IsMultiplayerGame()) + g_pInterfaceMgr->ConnectionFailed(g_pClientMultiplayerMgr->GetLastConnectionResult()); + else + g_pInterfaceMgr->LoadFailed(); + } + } + + return bAnyActive; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CScreenPreload::UpdateCDKeyValidation +// +// PURPOSE: Updates the cdkey validation state. +// +// RETURN: true when validation complete. +// +// --------------------------------------------------------------------------- // + +bool CScreenPreload::UpdateCDKeyValidation( ) +{ + switch( m_eValidatingCDKeyState ) + { + case kValidatingCDKeyState_None: + { + // Not validating cdkey, so we're done. + return true; + break; + } + case kValidatingCDKeyState_Start: + { +/* + IServerDirectory *pServerDir = g_pClientMultiplayerMgr->GetServerDir(); + if( !pServerDir ) + { + pServerDir = g_pClientMultiplayerMgr->CreateServerDir( ); + } + + // Need to ask serverdir what the cdkey is from registry then set it. + std::string sCDKey; + pServerDir->GetCDKey( &sCDKey ); + if( !pServerDir->SetCDKey( sCDKey.c_str( ))) + { + FailCDKey( ); + return false; + } + + if( !pServerDir->QueueRequest(IServerDirectory::eRequest_Validate_CDKey)) + { + FailCDKey( ); + return false; + } + + m_eValidatingCDKeyState = kValidatingCDKeyState_Waiting; +*/ + break; + } + case kValidatingCDKeyState_Waiting: + { +/* + IServerDirectory *pServerDir = g_pClientMultiplayerMgr->GetServerDir(); + + // Are we still waiting? + switch (pServerDir->GetCurStatus()) + { + case IServerDirectory::eStatus_Processing : + { + // Still waiting for response. + break; + } + case IServerDirectory::eStatus_Waiting : + { + // If we reach the waiting state, we're done. + m_eValidatingCDKeyState = kValidatingCDKeyState_None; + return true; + break; + } + case IServerDirectory::eStatus_Error : + { + FailCDKey( ); + break; + } + default : + { + ASSERT(!"Unknown directory status encountered"); + + FailCDKey( ); + break; + } + } +*/ + break; + } + } + + return false; +} + + +void CScreenPreload::FirstUpdate( ) +{ + int n = 0; + char szTagName[30]; + char szAttName[30]; + char szFXName[128]; + + m_bHaveLights = LTFALSE; + + + HOBJECT hCamera = g_pInterfaceMgr->GetInterfaceCamera(); + if (!hCamera) return; + + // Check if we have a mission entry. + bool bGotMission = false; + if( !g_pMissionMgr->IsCustomLevel( )) + { + int nNewMission = g_pMissionMgr->GetNewMission( ); + int nNewLevel = g_pMissionMgr->GetNewLevel( ); + MISSION* pMission = g_pMissionButeMgr->GetMission( nNewMission ); + if( pMission ) + { + int nBriefingId = pMission->aLevels[nNewLevel].nBriefingId; + if( nBriefingId >= 0 && !g_pMissionMgr->IsRestoringLevel( )) + m_layout = pMission->szBriefLayout; + else + m_layout = pMission->szLayout; + + bGotMission = true; + } + } + + // If we were unsuccessful in getting info from the mission, then just + // use defaults. + if( !bGotMission ) + { + m_layout = "LoadScreenDefault"; + } + + + + g_pLTClient->GetObjectPos(hCamera, &s_vPos); + g_pLTClient->GetObjectRotation(hCamera, &s_rRot); + s_vU = s_rRot.Up(); + s_vR = s_rRot.Right(); + s_vF = s_rRot.Forward(); + + + SAFE_STRCPY(szTagName,m_layout.c_str()); + if (!g_pLayoutMgr->Exist(szTagName)) + SAFE_STRCPY(szTagName,"LoadScreenDefault"); + + sprintf(szAttName,"Light%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CreateLightFX(szFXName); + } + + n++; + sprintf(szAttName,"Light%d",n); + + } + + + n = 0; + sprintf(szAttName,"PreScale%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + CBaseScaleFX *pSFX = CreateScaleFX(szFXName); + } + + n++; + sprintf(szAttName,"PreScale%d",n); + + } + + + + n = 0; + sprintf(szAttName,"PreFX%d",n); + while (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szFXName,128); + if (strlen(szFXName)) + { + INT_FX* pFX = g_pLayoutMgr->GetFX(szFXName); + if (pFX) + { + g_pInterfaceMgr->AddInterfaceFX(LTNULL, pFX->szFXName,pFX->vPos,pFX->bLoop); + } + } + + + n++; + sprintf(szAttName,"PreFX%d",n); + + } + + ChainFXList::iterator iter = m_Chains.begin(); + while (iter != m_Chains.end()) + { + debug_delete(*iter); + iter++; + } + m_Chains.clear(); + + char szIntroFXName[128] = ""; + char szShortFXName[128] = ""; + char szLoopFXName[128] = ""; + int nFXNum = 0; + bool bFound = false; + do + { + szIntroFXName[0] = 0; + szShortFXName[0] = 0; + szLoopFXName[0] = 0; + bFound = false; + + sprintf(szAttName,"PreIntroFX%d",nFXNum); + if (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szIntroFXName,128); + } + sprintf(szAttName,"PreLoopFX%d",nFXNum); + if (g_pLayoutMgr->HasValue(szTagName,szAttName)) + { + g_pLayoutMgr->GetString(szTagName,szAttName,szLoopFXName,128); + } + if (strlen(szIntroFXName) || strlen(szShortFXName) ) //don't start loop-only chains || strlen(szLoopFXName)) + { + nFXNum++; + bFound = true; + + CChainedFX *pChain = debug_new(CChainedFX); + pChain->Init(szIntroFXName,szShortFXName,szLoopFXName); + m_Chains.push_back(pChain); + } + + } while (bFound); + + + // Start all the chains. + iter = m_Chains.begin(); + while (iter != m_Chains.end()) + { + (*iter)->Start(!!m_bVisited); + iter++; + } + + // If we are not joining a lan game and the cdkey hasn't been validated, + // we need to do it now. + m_eValidatingCDKeyState = kValidatingCDKeyState_None; + if( !g_bLAN && g_pClientMultiplayerMgr->GetStartGameRequest( ).m_Type == STARTGAME_CLIENTTCP ) + { +/* IServerDirectory *pServerDir = g_pClientMultiplayerMgr->GetServerDir(); + if( !pServerDir || !pServerDir->IsCDKeyValid( )) + { + m_eValidatingCDKeyState = kValidatingCDKeyState_Start; + } +*/ + } +} + +void CScreenPreload::CreateInterfaceSFX() +{ + // Flag that this is will be the first update. + m_bFirstUpdate = true; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenPreload.h b/Jack/ClientShellDLL/ScreenPreload.h new file mode 100644 index 00000000..f8c149d9 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenPreload.h @@ -0,0 +1,53 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenPreload.h +// +// PURPOSE : Interface screen to be displayed before loading a level +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_PRELOAD_H_) +#define _SCREEN_PRELOAD_H_ + +#include "BaseScreen.h" + +class CScreenPreload : public CBaseScreen +{ +public: + CScreenPreload(); + virtual ~CScreenPreload(); + + // Build the screen + virtual LTBOOL Build(); + virtual void OnFocus(LTBOOL bFocus); + virtual void Escape(); + + virtual bool UpdateInterfaceSFX(); + + //sets the name of the world being loaded + void SetWaitingToExit(bool bWaitingToExit) {m_bWaitingToExit = bWaitingToExit;} + +protected: + + virtual void CreateInterfaceSFX(); + + void FirstUpdate( ); + bool UpdateCDKeyValidation( ); + + std::string m_layout; + bool m_bWaitingToExit; + bool m_bFirstUpdate; + + enum ValidatingCDKeyState + { + kValidatingCDKeyState_None, + kValidatingCDKeyState_Start, + kValidatingCDKeyState_Waiting, + }; + ValidatingCDKeyState m_eValidatingCDKeyState; + +}; + +#endif // !defined(_SCREEN_PRELOAD_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenProfile.cpp b/Jack/ClientShellDLL/ScreenProfile.cpp new file mode 100644 index 00000000..16a1c76e --- /dev/null +++ b/Jack/ClientShellDLL/ScreenProfile.cpp @@ -0,0 +1,438 @@ +// ScreenProfile.cpp: implementation of the CScreenProfile class. +// +////////////////////////////////////////////////////////////////////// +#include "stdafx.h" +#include "ScreenProfile.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientRes.h" +#include "NetDefs.h" + +#include "GameClientShell.h" +#include "profileMgr.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +namespace +{ + char szOldFN[MAX_PROFILE_LEN]; + + LTBOOL bCreate = LTFALSE; + + void DeleteCallBack(LTBOOL bReturn, void *pData) + { + CScreenProfile *pThisScreen = (CScreenProfile *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PROFILE); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_DELETE); + } + void CreateCallBack(LTBOOL bReturn, void *pData) + { + CScreenProfile *pThisScreen = (CScreenProfile *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PROFILE); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_CREATE); + } + void LoadCallBack(LTBOOL bReturn, void *pData) + { + CScreenProfile *pThisScreen = (CScreenProfile *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PROFILE); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_CONFIRM,(uint32)pData,CMD_LOAD); + } + void EditCallBack(LTBOOL bReturn, void *pData) + { + CScreenProfile *pThisScreen = (CScreenProfile *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_PROFILE); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_EDIT,(uint32)pData,0); + }; + + int kDlgHt = 240; + int kDlgWd = 240; + uint32 nCommand = 0; + uint8 nListFont = 1; + uint8 nListFontSz = 14; + +} + +CScreenProfile::CScreenProfile() +{ + m_pCurrent = LTNULL; + m_pLoad = LTNULL; + m_pDelete = LTNULL; + m_pRename = LTNULL; + m_pProfile = LTNULL; + +} + +CScreenProfile::~CScreenProfile() +{ +} + +// Build the screen +LTBOOL CScreenProfile::Build() +{ + // Set the title's text + CreateTitle(IDS_TITLE_PROFILE); + + // Get edit controls position and create it. + LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"ProfileNamePos"); + m_pCurrent = AddTextItem(" ", LTNULL, LTNULL, pos, LTTRUE); + + AddTextItem(IDS_CREATE, CMD_CREATE, IDS_HELP_PROFILE_CREATE); + + AddTextItem(IDS_LOAD, CMD_LOAD, IDS_HELP_PROFILE_LOAD); + +//jrg - 8/18/02 removed as a quick and dirty to multiple issues caused by renaming profiles. +// m_pRename = AddTextItem(IDS_RENAME, CMD_RENAME, IDS_HELP_PROFILE_RENAME); + + m_pDelete = AddTextItem(IDS_DELETE, CMD_DELETE, IDS_HELP_PROFILE_DELETE); + + + LTIntPt dlgPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogPos"); + LTIntPt dlgSz = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogSize"); + kDlgHt = dlgSz.y; + kDlgWd = dlgSz.x; + uint8 nDlgFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontFace"); + uint8 nDlgFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontSize"); + + nListFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontFace"); + nListFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + + char szBack[128] = ""; + g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,"DialogFrame",szBack,sizeof(szBack)); + + m_pDlg = debug_new(CLTGUIWindow); + m_pDlg->Create(g_pInterfaceResMgr->GetTexture(szBack),kDlgHt,kDlgWd); + + LTIntPt tmp(8,8); + CUIFont *pFont = g_pInterfaceResMgr->GetFont(nDlgFont); + + CLTGUITextCtrl *pCtrl = CreateTextItem(IDS_PROFILE_LIST, LTNULL, LTNULL, kDefaultPos, LTTRUE); + pCtrl->SetFont(pFont,nDlgFontSz); + m_pDlg->AddControl(pCtrl, tmp); + + tmp.y += 24; + + + // Make a list controller + m_pListCtrl = debug_new(CLTGUIListCtrl); + if (m_pListCtrl->Create(kDlgHt-64)) + { + HTEXTURE hUp = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup.dtx"); + HTEXTURE hUpH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup_h.dtx"); + HTEXTURE hDown = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn.dtx"); + HTEXTURE hDownH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn_h.dtx"); + m_pListCtrl->UseArrows(kDlgWd-48,1.0f,hUp,hUpH,hDown,hDownH); + m_pListCtrl->SetIndent(LTIntPt(4,4)); + m_pListCtrl->SetFrameWidth(2); + m_pListCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); + + m_pDlg->AddControl(m_pListCtrl, tmp); + + } + + pCtrl = CreateTextItem(IDS_CANCEL, CMD_CANCEL, LTNULL); + pCtrl->SetFont(pFont,nDlgFontSz); + tmp.x = (kDlgWd - pCtrl->GetBaseWidth()) / 2; + tmp.y = (kDlgHt - pCtrl->GetBaseHeight()) - 8; + m_pDlg->AddControl(pCtrl, tmp); + + AddControl(m_pDlg); + + m_pDlg->SetBasePos(dlgPos); + m_pDlg->SetScale(g_pInterfaceResMgr->GetXRatio()); + m_pDlg->Show(LTFALSE); + + m_pDlg->SetSelection(1); + + UseBack(LTTRUE); + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenProfile::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + switch (dwCommand) + { + case CMD_OK: + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + HandleDlgCommand(nCommand,(uint16)dwParam1); + SetSelection(1); + } + break; + case CMD_CANCEL: + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + SetSelection(1); + } + break; + + case CMD_LOAD: + { + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_CONFIRM: + { + uint16 nIndex = (uint16)dwParam1; + if (dwParam2 == CMD_DELETE) + { + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_ProfileList.begin(); + for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); + + if (iter != m_ProfileList.end()) + { + std::string profile = *iter; + g_pProfileMgr->DeleteProfile(profile); + + } + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + SAFE_STRCPY(m_szProfile, m_pProfile->m_sName.c_str()); + UpdateProfileName(); + + } + } + else if (dwParam2 == CMD_LOAD) + { + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_ProfileList.begin(); + for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); + + if (iter != m_ProfileList.end()) + { + std::string profile = *iter; + g_pProfileMgr->NewProfile(profile); + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + + SAFE_STRCPY(m_szProfile, profile.c_str()); + UpdateProfileName(); + } + } + } + else if (dwParam2 == CMD_CREATE) + { + SAFE_STRCPY(m_szOldProfile,m_szProfile); + bCreate = LTTRUE; + + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCallBack; + mb.pString = m_szProfile; + mb.nMaxChars = MAX_PROFILE_NAME; + mb.eInput = CLTGUIEditCtrl::kInputFileFriendly; + g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_PROFILE_NAME,&mb); + } + } + break; + case CMD_DELETE: + { + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_CREATE: + { + if (g_pLTClient->IsConnected()) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = CreateCallBack, + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_NEWPROFILE,&mb); + } + else + SendCommand(CMD_CONFIRM,0,CMD_CREATE); + } + break; + case CMD_RENAME: + { + m_pDlg->Show(LTTRUE); + SetCapture(m_pDlg); + nCommand = dwCommand; + } + break; + case CMD_EDIT: + { + SAFE_STRCPY(m_szProfile,(char *)dwParam1); + std::string profileName = m_szProfile; + StringSet::iterator iter = m_ProfileList.find(profileName); + + if (iter != m_ProfileList.end()) + { + //don't proceed renaming or creating a new one if we already have a profile of that + //name + MBCreate mb; + mb.eType = LTMB_OK; + mb.pFn = NULL, + g_pInterfaceMgr->ShowMessageBox(IDS_PROFILE_ALREADY_EXISTS,&mb); + } + else + { + if (bCreate) + { + g_pProfileMgr->NewProfile(profileName); + } + else + { + g_pProfileMgr->RenameProfile(szOldFN,profileName); + } + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + SAFE_STRCPY(m_szProfile,m_pProfile->m_sName.c_str()); + UpdateProfileName(); + } + } + break; + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + + return 1; +}; + +void CScreenProfile::Escape() +{ + if (m_pDlg->IsVisible()) + { + m_pDlg->Show(LTFALSE); + SetCapture(LTNULL); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + else + CBaseScreen::Escape(); +} + +LTBOOL CScreenProfile::OnLButtonUp(int x, int y) +{ + return CBaseScreen::OnLButtonUp(x,y); +} + +LTBOOL CScreenProfile::OnRButtonUp(int x, int y) +{ + return CBaseScreen::OnRButtonUp(x,y); +} + +void CScreenProfile::CreateProfileList() +{ + // Empty the list + m_pListCtrl->RemoveAll(); + + // Get new stuff + m_ProfileList.clear(); + g_pProfileMgr->GetProfileList(m_ProfileList); + + CUIFont *pFont = g_pInterfaceResMgr->GetFont(nListFont); + + // Profiles to the list + for (StringSet::iterator iter = m_ProfileList.begin(); iter != m_ProfileList.end(); ++iter) + { + char *pStr = (char *)iter->c_str(); + CLTGUITextCtrl* pTextCtrl = CreateTextItem(pStr, CMD_OK, LTNULL); + pTextCtrl->SetFont(pFont,nListFontSz); + uint16 ndx = m_pListCtrl->AddControl(pTextCtrl); + pTextCtrl->SetParam1(ndx); + + if (stricmp(iter->c_str(),m_pProfile->m_sName.c_str()) == 0) + m_pListCtrl->SetSelection(ndx); + } + +} + +void CScreenProfile::UpdateProfileName() +{ + m_pCurrent->SetString(FormatTempString(IDS_CURRENT_PROFILE,m_szProfile)); + + CreateProfileList(); + +} + +void CScreenProfile::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + m_pProfile = g_pProfileMgr->GetCurrentProfile(); + SAFE_STRCPY(m_szProfile,m_pProfile->m_sName.c_str()); + UpdateProfileName(); + + } + CBaseScreen::OnFocus(bFocus); +} + + + +void CScreenProfile::HandleDlgCommand(uint32 dwCommand, uint16 nIndex) +{ + switch (dwCommand) + { + case CMD_LOAD: + { + SAFE_STRCPY(m_szOldProfile,m_szProfile); + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_ProfileList.begin(); + for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); + + if (iter != m_ProfileList.end()) + { + std::string profile = *iter; + if (g_pLTClient->IsConnected() && stricmp(profile.c_str(), m_szProfile)) + { + + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = LoadCallBack, + mb.pData = (void *)nIndex; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_NEWPROFILE,&mb); + } + else + SendCommand(CMD_CONFIRM,nIndex,CMD_LOAD); + + } + } + } + break; + case CMD_DELETE: + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = DeleteCallBack, + mb.pData = (void *)nIndex; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_DELETE_PROFILE,&mb); + } + break; + case CMD_RENAME: + SAFE_STRCPY(m_szOldProfile,m_szProfile); + if (nIndex < m_pListCtrl->GetNumControls()) + { + StringSet::iterator iter = m_ProfileList.begin(); + for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); + + if (iter != m_ProfileList.end()) + { + std::string profile = *iter; + SAFE_STRCPY(szOldFN,profile.c_str()); + SAFE_STRCPY(m_szProfile, profile.c_str()); + bCreate = LTFALSE; + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCallBack; + mb.pString = m_szProfile; + mb.nMaxChars = 16; + mb.eInput = CLTGUIEditCtrl::kInputFileFriendly; + g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_PROFILE_NAME,&mb); + } + } + break; + } + +}; diff --git a/Jack/ClientShellDLL/ScreenProfile.h b/Jack/ClientShellDLL/ScreenProfile.h new file mode 100644 index 00000000..f73a7118 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenProfile.h @@ -0,0 +1,61 @@ +// ScreenProfile.h: interface for the ScreenProfile class. +// +////////////////////////////////////////////////////////////////////// + +#ifndef SCREEN_PROFILE_H +#define SCREEN_PROFILE_H + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +#include "profileMgr.h" + +#pragma warning (disable : 4503) +#pragma warning( disable : 4786 ) +#include +#include + +const int MAX_PROFILE_LEN = 16; + +class CScreenProfile : public CBaseScreen +{ +public: + + CScreenProfile(); + virtual ~CScreenProfile(); + + // Build the screen + LTBOOL Build(); + + virtual uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void Escape(); + void OnFocus(LTBOOL bFocus); + LTBOOL OnRButtonUp(int x, int y); + LTBOOL OnLButtonUp(int x, int y); + +private: + void HandleDlgCommand(uint32 dwCommand, uint16 nIndex); + void CreateProfileList(); + void UpdateProfileName(); + + char m_szProfile[MAX_PROFILE_LEN]; + char m_szOldProfile[MAX_PROFILE_LEN]; + + CLTGUITextCtrl *m_pCurrent; + CLTGUITextCtrl *m_pLoad; + CLTGUITextCtrl *m_pDelete; + CLTGUITextCtrl *m_pRename; + + + StringSet m_ProfileList; + CLTGUIListCtrl* m_pListCtrl; + CLTGUIWindow* m_pDlg; + + CUserProfile* m_pProfile; + +}; + +#endif // SCREEN_PROFILE_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenSave.cpp b/Jack/ClientShellDLL/ScreenSave.cpp new file mode 100644 index 00000000..cd97a104 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSave.cpp @@ -0,0 +1,382 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSave.cpp +// +// PURPOSE : Interface screen for saving games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "MissionButeMgr.h" +#include "ScreenSave.h" + +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "MissionMgr.h" +#include "ClientSaveLoadMgr.h" + + +#include "WinUtil.h" +#include +#include + +namespace +{ + const int kMaxSave = SLMGR_MAX_SAVE_SLOTS; + int g_nSaveSlot = -1; + int g_nSaveIndex = -1; + void OverwriteCallBack(LTBOOL bReturn, void *pData) + { + CScreenSave *pThisScreen = (CScreenSave *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_SAVE); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OVERWRITE,0,0); + } + CLTGUIColumnCtrl* g_pColCtrl = LTNULL; + + char g_szOldName[40] = { '\0' }; + char g_szOldTime[40] = { '\0' }; + + int kNameWidth = 0; + int kTimeWidth = 0; + int kIndent = 0; + int kSmallFontSize = 4; + + void EditCallBack(LTBOOL bReturn, void *pData) + { + CScreenSave *pThisScreen = (CScreenSave *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_SAVE); + + if(pThisScreen) + { + if (bReturn) + { + pThisScreen->SendCommand(CMD_EDIT_NAME,(uint32)pData,0); + } + else + { + //the user cancelled we need to restore the original text, which has been saved in the + //globals above. + if(g_pColCtrl) + { + g_pColCtrl->SetString(1, g_szOldName); + g_pColCtrl->SetString(2, g_szOldTime); + } + } + } + }; + + unsigned char SaveNameFilter(unsigned char c) + { + if (c == '|') + return NULL; + else + return c; + } + + +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenSave::CScreenSave() +{ +} + +CScreenSave::~CScreenSave() +{ + +} + +LTBOOL CScreenSave::Build() +{ + CreateTitle(IDS_TITLE_SAVEGAME); + + kNameWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_SAVE,"NameWidth"); + kTimeWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_SAVE,"TimeWidth"); + kIndent = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_SAVE,"Indent"); + kSmallFontSize = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_SAVE,"SmallFontSize"); + + return CBaseScreen::Build(); +} + + +void CScreenSave::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + BuildSavedLevelList(); + SetSelection(0); + UseBack(LTTRUE); + } + else + { + SetSelection(kNoSelection); + ClearSavedLevelList(); + UseBack(LTFALSE); + } + CBaseScreen::OnFocus(bFocus); +} + +uint32 CScreenSave::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand >= CMD_CUSTOM && dwCommand <= CMD_CUSTOM+kMaxSave) + { + uint32 slot = dwCommand - CMD_CUSTOM; + + g_nSaveSlot = slot; + g_nSaveIndex = (int)dwParam1; + + if (g_pClientSaveLoadMgr->SlotSaveExists( g_nSaveSlot )) + { + MBCreate mb; + mb.eType = LTMB_YESNO; + mb.pFn = OverwriteCallBack, + mb.pData = this; + g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRMSAVE,&mb); + return 1; + } + if (g_nSaveSlot > 0) + { + m_szSaveName[0] = LTNULL; + NameSaveGame(g_nSaveSlot,g_nSaveIndex); + } + else if (!SaveGame(g_nSaveSlot)) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_SAVEGAMEFAILED,&mb); + } + + + } + else if (dwCommand == CMD_OVERWRITE) + { + NameSaveGame(g_nSaveSlot,g_nSaveIndex); + } + else if (dwCommand == CMD_EDIT_NAME) + { + char *pStr = (char *)dwParam1; + if (strlen(pStr)) + { + SAFE_STRCPY(m_szSaveName,pStr); + } + ForceMouseUpdate(); + if (!SaveGame(g_nSaveSlot)) + { + MBCreate mb; + g_pInterfaceMgr->ShowMessageBox(IDS_SAVEGAMEFAILED,&mb); + return 0; + } + } + + else + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + + return 1; +}; + +void CScreenSave::BuildSavedLevelList() +{ + AddTextItem(IDS_QUICKSAVE,CMD_CUSTOM,IDS_HELP_QUICKSAVE); + + int nFirstEmpty = -1; + + CLTGUITextCtrl *pCtrl = AddTextItem(IDS_LOAD_USERGAME,LTNULL,LTNULL,kDefaultPos,LTTRUE); + pCtrl->Enable(LTFALSE); + + for (int i = 0; i < kMaxSave; i++) + { + LTBOOL bEmpty = LTTRUE; + + if (g_pClientSaveLoadMgr->SlotSaveExists( i+1 )) + { + char strSaveGameSetting[256] = {0}; + + int mission = -1; + int level = -1; + struct tm* pTimeDate = LTNULL; + char strTime[128] = ""; + + char szSaveTitle[SLMGR_MAX_INISTR_LEN+1]; + char szWorldName[MAX_PATH*2]; + time_t saveTime; + + if( g_pClientSaveLoadMgr->ReadSaveINI( g_pClientSaveLoadMgr->GetSlotSaveKey( i+1 ), + szSaveTitle, ARRAY_LEN( szSaveTitle ), szWorldName, ARRAY_LEN( szWorldName ), &saveTime )) + { + pTimeDate = localtime (&saveTime); + if (pTimeDate) + { + if (g_pInterfaceResMgr->IsEnglish()) + { + sprintf (strTime, "%02d/%02d/%02d %02d:%02d:%02d", pTimeDate->tm_mon + 1, pTimeDate->tm_mday, (pTimeDate->tm_year + 1900) % 100, pTimeDate->tm_hour, pTimeDate->tm_min, pTimeDate->tm_sec); + } + else + { + sprintf (strTime, "%02d/%02d/%02d %02d:%02d:%02d", pTimeDate->tm_mday, pTimeDate->tm_mon + 1, (pTimeDate->tm_year + 1900) % 100, pTimeDate->tm_hour, pTimeDate->tm_min, pTimeDate->tm_sec); + } + + } + + } + + + char *pWorld = LTNULL; + char *pTime = LTNULL; + if ( szSaveTitle[0] ) + { + pWorld = szSaveTitle; + bEmpty = LTFALSE; + } + else if ( szWorldName[0] ) + { + pWorld = szWorldName; + bEmpty = LTFALSE; + } + + + if (pWorld) + { + CLTGUIColumnCtrl* pCtrl = AddColumnCtrl(CMD_CUSTOM+1+i, IDS_HELP_SAVEGAME); + pCtrl->SetFont(LTNULL,kSmallFontSize); + pCtrl->SetParam1( m_controlArray.size() - 1); + + // This is a spacer + pCtrl->AddColumn("", kIndent, LTTRUE); + + // The world name column + pCtrl->AddColumn(pWorld, kNameWidth); + + if (strlen(strTime)) + { + // The column that contains the date/time + pCtrl->AddColumn(strTime, kTimeWidth); + } + } + + + } + + + if (bEmpty && nFirstEmpty < 0) + nFirstEmpty = i; + + } + + if (nFirstEmpty >= 0) + { + CLTGUIColumnCtrl* pCtrl = AddColumnCtrl(CMD_CUSTOM+1+nFirstEmpty, IDS_HELP_SAVEGAME); + pCtrl->SetFont(LTNULL,kSmallFontSize); + pCtrl->SetParam1( m_controlArray.size() - 1); + // This is a spacer + pCtrl->AddColumn("", kIndent, LTTRUE); + + // The world name column + char szTmp[64]; + FormatString(IDS_EMPTY,szTmp,sizeof(szTmp)); + pCtrl->AddColumn(szTmp, kNameWidth); + + + // The column that contains the date/time + pCtrl->AddColumn("", kTimeWidth); + } + +} + +void CScreenSave::ClearSavedLevelList() +{ + RemoveAll(); + +} + +LTBOOL CScreenSave::SaveGame(uint32 slot) +{ + if (slot > 0) + { + if( !g_pClientSaveLoadMgr->SaveGameSlot( slot, m_szSaveName )) + return false; + } + else + { + if( !g_pClientSaveLoadMgr->QuickSave() ) + return false; + } + +// g_pInterfaceMgr->GetMessageMgr()->AddLine(IDS_GAMESAVED); + g_pInterfaceMgr->ChangeState(GS_PLAYING); + return LTTRUE; +} + + +LTBOOL CScreenSave::HandleKeyDown(int key, int rep) +{ + + if (key == VK_F6) + { + SendCommand(CMD_CUSTOM,0,0); + return LTTRUE; + } + return CBaseScreen::HandleKeyDown(key,rep); + +} + + +void CScreenSave::NameSaveGame(uint32 slot, int index) +{ + sprintf(m_szSaveName,"%s", g_pMissionMgr->GetCurrentWorldName()); + + if (!g_pMissionMgr->IsCustomLevel()) + { + int missionNum = g_pMissionMgr->GetCurrentMission(); + int sceneNum = g_pMissionMgr->GetCurrentLevel(); + MISSION* pMission = g_pMissionButeMgr->GetMission(missionNum); + if (pMission) + { + int missionId = pMission->nNameId; + char szMission[40] = ""; + char szLevel[40] = ""; + LoadString(missionId,szMission,sizeof(szMission)); + LEVEL* pLevel = g_pMissionButeMgr->GetLevel(missionNum,sceneNum); + if (pLevel) + { + LoadString(pLevel->nNameId,szLevel,sizeof(szLevel)); + } + + //strip whitespace + char *pszLevel = szLevel; + while (*pszLevel == ' ' || *pszLevel == '\t') + pszLevel++; + + if(strlen(pszLevel)) + sprintf(m_szSaveName,"%s",pszLevel); + else + sprintf(m_szSaveName,"%s",szMission); + } + } + + + g_pColCtrl = (CLTGUIColumnCtrl*)GetControl(index); + if (!g_pColCtrl) + return; + LTIntPt pos = g_pColCtrl->GetPos(); + + SAFE_STRCPY(g_szOldName,g_pColCtrl->GetString(1)); + SAFE_STRCPY(g_szOldTime,g_pColCtrl->GetString(2)); + + g_pColCtrl->SetString(1, " "); + g_pColCtrl->SetString(2, " "); + + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditCallBack; + mb.pFilterFn = SaveNameFilter; + mb.pString = m_szSaveName; + mb.nMaxChars = 40; + g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_NAME,&mb); + +} diff --git a/Jack/ClientShellDLL/ScreenSave.h b/Jack/ClientShellDLL/ScreenSave.h new file mode 100644 index 00000000..2aeaf134 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSave.h @@ -0,0 +1,44 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSave.h +// +// PURPOSE : Interface screen for saving games +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_SCREEN_SAVE_H_) +#define _SCREEN_SAVE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" + +class CScreenSave : public CBaseScreen +{ +public: + CScreenSave(); + virtual ~CScreenSave(); + + LTBOOL Build(); + void OnFocus(LTBOOL bFocus); + + LTBOOL HandleKeyDown(int key, int rep); + + LTBOOL SaveGame(uint32 slot); + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void BuildSavedLevelList(); + void ClearSavedLevelList(); + + void NameSaveGame(uint32 slot, int index); + + char m_szSaveName[40]; + +}; + +#endif // !defined(_SCREEN_SAVE_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenSingle.cpp b/Jack/ClientShellDLL/ScreenSingle.cpp new file mode 100644 index 00000000..8035169b --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSingle.cpp @@ -0,0 +1,675 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSingle.cpp +// +// PURPOSE : Interface screen for starting, loading, and saving single player +// games. +// +// (c) 1999-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenSingle.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "WinUtil.h" +#include "GameClientShell.h" +#include "MissionMgr.h" +#include "ClientSaveLoadMgr.h" +#include "ClientButeMgr.h" +#include "ClientMultiplayerMgr.h" +#include "clientres.h" + + +#ifdef _FINAL +#define _REMOVE_CUSTOM_LEVELS +#endif + + +static char* s_apszLevels[] = +{ + "worlds\\retailsingleplayer\\m02s01", + "worlds\\retailsingleplayer\\m04s01", +}; +static uint32 s_nNumLevels = ARRAY_LEN( s_apszLevels ); + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenSingle::CScreenSingle() +{ + m_pLoadCtrl = LTNULL; + + m_pDiff = LTNULL; + m_pDiffFrame = LTNULL; + + m_pCustom = LTNULL; + m_pCustomFrame = LTNULL; + + m_pChapter = LTNULL; + m_pChapterFrame = LTNULL; + +} + +CScreenSingle::~CScreenSingle() +{ + m_Filenames.clear(); +} + +// Build the screen +LTBOOL CScreenSingle::Build() +{ + CreateTitle(IDS_TITLE_GAME); + +#if !defined(_SPDEMO) && !defined(_PRDEMO) + AddTextItem(IDS_NEWGAME, CMD_NEW_GAME, IDS_HELP_NEW); +#else // !defined(_SPDEMO) && !defined(_PRDEMO) + + int nCmdOffset = 0; + int nLevelIndex; + int nMission; + for( uint32 nLevel = 0; nLevel < s_nNumLevels; nLevel++ ) + { + if( !g_pMissionButeMgr->IsMissionLevel( s_apszLevels[nLevel], nMission, nLevelIndex )) + return LTFALSE; + + MISSION* pMISSION = g_pMissionButeMgr->GetMission( nMission ); + AddTextItem( LoadTempString( pMISSION->nNameId ), CMD_LEVEL1 + nCmdOffset, 0); + nCmdOffset++; + } + +#endif // !defined(_SPDEMO) && !defined(_PRDEMO) + + + m_pLoadCtrl = AddTextItem(IDS_LOADGAME, CMD_LOAD_GAME, IDS_HELP_LOAD); + m_pLoadCtrl->Enable( LTFALSE ); + + m_pChapterCtrl = AddTextItem(IDS_CHAPTERS, CMD_CHAPTER, IDS_HELP_CHAPTERS); + +#ifndef _REMOVE_CUSTOM_LEVELS + CLTGUITextCtrl *pCustom = AddTextItem(IDS_CUSTOM_LEVEL, CMD_CUSTOM_LEVEL, IDS_HELP_CUSTOM); +#endif // _REMOVE_CUSTOM_LEVELS + + + + char szFrame[128]; + g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_SINGLE,"FrameTexture",szFrame,sizeof(szFrame)); + HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); + + LTRect rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"DiffRect"); + int nHeight = (rect.bottom - rect.top); + int nWidth = (rect.right - rect.left); + LTIntPt pos = LTIntPt(rect.left,rect.top); + + m_pDiffFrame = debug_new(CLTGUIFrame); + m_pDiffFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + m_pDiffFrame->SetBasePos(pos); + m_pDiffFrame->Show(LTFALSE); + AddControl(m_pDiffFrame); + + + nWidth -= 16; + m_pDiff = AddList(pos,nHeight, LTTRUE, nWidth); + if (m_pDiff) + { + m_pDiff->SetIndent(LTIntPt(8,8)); + m_pDiff->SetFrameWidth(2); + m_pDiff->Show(LTFALSE); + + + CLTGUITextCtrl *pCtrl = CreateTextItem(IDS_NEW_EASY, CMD_EASY, IDS_HELP_EASY); + m_pDiff->AddControl(pCtrl); + + pCtrl = CreateTextItem(IDS_NEW_MEDIUM, CMD_MEDIUM, IDS_HELP_MEDIUM); + m_pDiff->AddControl(pCtrl); + + pCtrl = CreateTextItem(IDS_NEW_HARD, CMD_HARD, IDS_HELP_HARD); + m_pDiff->AddControl(pCtrl); + + pCtrl = CreateTextItem(IDS_NEW_INSANE, CMD_INSANE, IDS_HELP_INSANE); + m_pDiff->AddControl(pCtrl); + } + + + rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"ChapterRect"); + nHeight = (rect.bottom - rect.top); + nWidth = (rect.right - rect.left); + pos = LTIntPt(rect.left,rect.top); + + m_pChapterFrame = debug_new(CLTGUIFrame); + m_pChapterFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + m_pChapterFrame->SetBasePos(pos); + m_pChapterFrame->Show(LTFALSE); + AddControl(m_pChapterFrame); + + + nWidth -= 16; + m_pChapter = AddList(pos,nHeight, LTTRUE, nWidth); + if (m_pChapter) + { + m_pChapter->SetIndent(LTIntPt(8,8)); + m_pChapter->SetFrameWidth(2); + m_pChapter->Show(LTFALSE); + + } + + + +#ifndef _REMOVE_CUSTOM_LEVELS + + rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"CustomRect"); + nHeight = (rect.bottom - rect.top); + nWidth = (rect.right - rect.left); + pos = LTIntPt(rect.left,rect.top); + + m_pCustomFrame = debug_new(CLTGUIFrame); + m_pCustomFrame->Create(hFrame,nWidth,nHeight,LTTRUE); + m_pCustomFrame->SetBasePos(pos); + m_pCustomFrame->Show(LTFALSE); + AddControl(m_pCustomFrame); + + nWidth -= 16; + m_pCustom = AddList(pos,nHeight, LTTRUE, nWidth); + if (m_pCustom) + { + m_pCustom->SetIndent(LTIntPt(8,8)); + m_pCustom->SetFrameWidth(2); + m_pCustom->Show(LTFALSE); + + BuildCustomLevelsList(nWidth-16); + + + } + + //if no custom levels, remove the link + if (pCustom && !m_pCustom || m_pCustom->GetNumControls() < 1) + { + RemoveControl(pCustom); + } +#endif // _REMOVE_CUSTOM_LEVELS + + + + // Make sure to call the base class + if (!CBaseScreen::Build()) return LTFALSE; + + + return LTTRUE; + +} + +uint32 CScreenSingle::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand >= CMD_CUSTOM) + { + + int index = dwCommand - CMD_CUSTOM; + + //is custom level + if (index < 1000) + { + StringSet::iterator iter = m_Filenames.begin(); + while (iter != m_Filenames.end() && index > 0) + { + iter++; + --index; + } + if (iter != m_Filenames.end()) + { + g_pMissionMgr->StartGameFromLevel(iter->c_str()); + } + + } + else + { + index -= 1000; + if (index < g_pMissionButeMgr->GetNumMissions()) + { + const MISSION* pMission = g_pMissionButeMgr->GetMission(index); + const LEVEL* pLevel = &pMission->aLevels[0]; + g_pMissionMgr->StartGameFromLevel(pLevel->szLevel); + + } + return 1; + } + } + + switch(dwCommand) + { + +#if defined(_SPDEMO) || defined(_PRDEMO) + case CMD_LEVEL1: + case CMD_LEVEL2: + case CMD_LEVEL3: + { + + int nSelectedLevel = dwCommand - CMD_LEVEL1; + + int nMission; + int nLevelIndex; + if( !g_pMissionButeMgr->IsMissionLevel( s_apszLevels[nSelectedLevel], nMission, nLevelIndex )) + return 1; + + LEVEL* pLevel = g_pMissionButeMgr->GetLevel( nMission, nLevelIndex ); + if( pLevel && g_pClientMultiplayerMgr->SetupServerSinglePlayer( )) + { + g_pMissionMgr->StartGameFromLevel( pLevel->szLevel ); + } + + break; + } +#endif // defined(_SPDEMO) || defined(_PRDEMO) + case CMD_BACK: + { + + +#ifndef _REMOVE_CUSTOM_LEVELS + m_pCustom->Show(LTFALSE); + m_pCustom->SetSelection(kNoSelection); + m_pCustomFrame->Show(LTFALSE); +#endif // _REMOVE_CUSTOM_LEVELS + + + m_pDiff->Show(LTFALSE); + m_pDiff->SetSelection(kNoSelection); + m_pDiffFrame->Show(LTFALSE); + + m_pChapter->Show(LTFALSE); + m_pChapter->SetSelection(kNoSelection); + m_pChapterFrame->Show(LTFALSE); + + + m_pScreenMgr->EscapeCurrentScreen(); + break; + } + case CMD_NEW_GAME: + { + +#ifndef _REMOVE_CUSTOM_LEVELS + m_pCustom->Show(LTFALSE); + m_pCustomFrame->Show(LTFALSE); +#endif // _REMOVE_CUSTOM_LEVELS + + m_pDiff->Show(LTTRUE); + m_pDiffFrame->Show(LTTRUE); + + m_pChapter->Show(LTFALSE); + m_pChapterFrame->Show(LTFALSE); + + + SetSelection(GetIndex(m_pDiff)); + m_pDiff->SetSelection(g_pGameClientShell->GetDifficulty()); + UpdateHelpText(); + + break; + } + + case CMD_CHAPTER: + { + +#ifndef _REMOVE_CUSTOM_LEVELS + m_pCustom->Show(LTFALSE); + m_pCustomFrame->Show(LTFALSE); +#endif // _REMOVE_CUSTOM_LEVELS + + m_pDiff->Show(LTFALSE); + m_pDiffFrame->Show(LTFALSE); + + m_pChapter->Show(LTTRUE); + m_pChapterFrame->Show(LTTRUE); + + + SetSelection(GetIndex(m_pChapter)); +// m_pDiff->SetSelection(g_pGameClientShell->GetDifficulty()); + + break; + } + + case CMD_EASY: + { + g_pGameClientShell->SetDifficulty(GD_EASY); + g_pMissionMgr->StartGameNew( ); + break; + } + case CMD_MEDIUM: + { + g_pGameClientShell->SetDifficulty(GD_NORMAL); + g_pMissionMgr->StartGameNew( ); + break; + } + case CMD_HARD: + { + g_pGameClientShell->SetDifficulty(GD_HARD); + g_pMissionMgr->StartGameNew( ); + break; + } + case CMD_INSANE: + { + g_pGameClientShell->SetDifficulty(GD_VERYHARD); + g_pMissionMgr->StartGameNew( ); + break; + } + + case CMD_LOAD_GAME: + { + g_pInterfaceMgr->SwitchToScreen(SCREEN_ID_LOAD); + break; + } + case CMD_CUSTOM_LEVEL: + { + m_pDiff->Show(LTFALSE); + m_pDiffFrame->Show(LTFALSE); + m_pChapter->Show(LTFALSE); + m_pChapterFrame->Show(LTFALSE); + +#ifndef _REMOVE_CUSTOM_LEVELS + m_pCustom->Show(LTTRUE); + m_pCustomFrame->Show(LTTRUE); + SetSelection(GetIndex(m_pCustom)); +#endif // _REMOVE_CUSTOM_LEVELS + + break; + } + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +void CScreenSingle::OnFocus(LTBOOL bFocus) +{ + if (bFocus) + { + // We should not be connected to a server at this point. + if(g_pLTClient->IsConnected()) + { + g_pInterfaceMgr->SetIntentionalDisconnect( true ); + g_pClientMultiplayerMgr->ForceDisconnect(); + } + + // Initialize to the sp mission bute. + if( !g_pMissionButeMgr->Init( MISSION_DEFAULT_FILE )) + { + g_pLTClient->ShutdownWithMessage("Could not load mission bute %s.", MISSION_DEFAULT_FILE ); + return; + } + + m_pLoadCtrl->Enable( g_pClientSaveLoadMgr->CanContinueGame( )); + m_pDiff->Show(LTFALSE); + m_pDiffFrame->Show(LTFALSE); + + + m_pChapter->Show(LTFALSE); + m_pChapterFrame->Show(LTFALSE); + + +#ifndef _REMOVE_CUSTOM_LEVELS + m_pCustom->Show(LTFALSE); + m_pCustomFrame->Show(LTFALSE); +#endif _REMOVE_CUSTOM_LEVELS + + //have they completed game? + LTBOOL bCompleted = LTFALSE; + CRegMgr* pRegMgr = g_pVersionMgr->GetRegMgr(); + if (pRegMgr->IsValid()) + { + bCompleted = (pRegMgr->Get("EndGame") > 0); + } + + m_pChapterCtrl->Show(bCompleted); + + if (bCompleted && m_pChapter->GetNumControls() == 0) + BuildChapterList(); + + + + + + + } + + CBaseScreen::OnFocus(bFocus); +} + + +void CScreenSingle::Escape() +{ + if (m_pDiff->IsVisible()) + { + m_pDiff->SetSelection(kNoSelection); + m_pDiff->Show(LTFALSE); + m_pDiffFrame->Show(LTFALSE); + + SetSelection(0); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + else if (m_pChapter->IsVisible()) + { + m_pChapter->SetSelection(kNoSelection); + m_pChapter->Show(LTFALSE); + m_pChapterFrame->Show(LTFALSE); + SetSelection(2); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } + +#ifndef _REMOVE_CUSTOM_LEVELS + else if (m_pCustom->IsVisible()) + { + m_pCustom->SetSelection(kNoSelection); + m_pCustom->Show(LTFALSE); + m_pCustomFrame->Show(LTFALSE); + SetSelection(3); + g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT); + } +#endif // _REMOVE_CUSTOM_LEVELS + + else + { + CBaseScreen::Escape(); + } +} + + +// Build the list of Custom Levels +void CScreenSingle::BuildCustomLevelsList(int nWidth) +{ + m_Filenames.clear(); + m_pCustom->RemoveAll(); + + // Get a list of world names and sort them alphabetically + + uint8 nNumPaths = g_pClientButeMgr->GetNumSingleWorldPaths(); + + char pathBuf[128]; + FileEntry** pFilesArray = debug_newa(FileEntry*, nNumPaths); + + if (pFilesArray) + { + for (int i=0; i < nNumPaths; ++i) + { + pathBuf[0] = '\0'; + g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf)); + + if (pathBuf[0]) + { + pFilesArray[i] = g_pLTClient->GetFileList(pathBuf); + } + else + { + pFilesArray[i] = LTNULL; + } + } + } + + + + char Buf[255]; + + for (int i=0; i < nNumPaths; ++i) + { + pathBuf[0] = '\0'; + g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf)); + + if (pathBuf[0] && pFilesArray[i]) + { + sprintf(Buf, "%s\\", pathBuf); + AddFilesToFilenames(pFilesArray[i], Buf); + g_pLTClient->FreeFileList(pFilesArray[i]); + } + } + + debug_deletea(pFilesArray); + + CLTGUITextCtrl* pItem; + + uint8 nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + int index = 0; + StringSet::iterator iter = m_Filenames.begin(); + while (iter != m_Filenames.end()) + { + pItem = CreateTextItem((char *)iter->c_str(), CMD_CUSTOM+index, IDS_HELP_CUSTOMLEVEL); + pItem->SetFont(LTNULL, nListFontSize); + pItem->SetFixedWidth(nWidth,LTTRUE); + + m_pCustom->AddControl(pItem); + ++index; + iter++; + } + +} + +void CScreenSingle::AddFilesToFilenames(FileEntry* pFiles, char* pPath) +{ + if (!pFiles || !pPath) return; + + char strBaseName[256]; + char* pBaseName = NULL; + char* pBaseExt = NULL; + FileEntry* ptr = pFiles; + + while (ptr) + { + if (ptr->m_Type == TYPE_FILE) + { + SAFE_STRCPY(strBaseName, ptr->m_pBaseFilename); + pBaseName = strtok (strBaseName, "."); + pBaseExt = strtok (NULL, "\0"); + if (pBaseExt && stricmp (pBaseExt, "dat") == 0) + { + char szString[512]; + sprintf(szString, "%s%s", pPath, pBaseName); + + // add this to the array + m_Filenames.insert(szString); + } + } + + ptr = ptr->m_pNext; + } +} + +// Build the list of Chapters +void CScreenSingle::BuildChapterList() +{ + LTRect rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"ChapterRect"); + int nWidth = (rect.right - rect.left) - 16; + + + CLTGUITextCtrl* pItem; + + uint8 nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); + for (int i = 0; i < g_pMissionButeMgr->GetNumMissions(); i++) + { + const MISSION* pMission = g_pMissionButeMgr->GetMission(i); + + pItem = CreateTextItem(pMission->nNameId, CMD_CUSTOM+1000+i, pMission->nDescId); + pItem->SetFont(LTNULL, nListFontSize); + pItem->SetFixedWidth(nWidth,LTTRUE); + + m_pChapter->AddControl(pItem); + + } +} + +/******************************************************************/ +LTBOOL CScreenSingle::OnMouseMove(int x, int y) +{ + +/* + uint16 oldSelect = kNoSelection; + + +#ifndef _REMOVE_CUSTOM_LEVELS + if (GetSelectedControl() == m_pCustom) + { + oldSelect = m_pCustom->GetSelectedIndex(); + } +#endif // _REMOVE_CUSTOM_LEVELS + +*/ + LTBOOL bHandled = CBaseScreen::OnMouseMove(x,y); + +/* +#ifndef _REMOVE_CUSTOM_LEVELS + if (bHandled && GetSelectedControl() == m_pCustom && oldSelect != kNoSelection && oldSelect != m_pCustom->GetSelectedIndex()) + { + CLTGUICtrl *pSelCtrl = m_pCustom->GetSelectedControl(); + LTIntPt pos = pSelCtrl->GetPos(); + if (m_bSelectFXCenter) + pos.x += (pSelCtrl->GetWidth() / 2); + pos.y += (pSelCtrl->GetHeight() / 2); + + g_pInterfaceMgr->RequestInterfaceSound(IS_CHANGE); + + g_pInterfaceMgr->ShowSelectFX(pos); + } +#endif // _REMOVE_CUSTOM_LEVELS +*/ + + return bHandled; + +} + +/******************************************************************/ +LTBOOL CScreenSingle::HandleKeyDown(int key, int rep) +{ + +/* + uint16 oldSelect = kNoSelection; + + +#ifndef _REMOVE_CUSTOM_LEVELS + if (GetSelectedControl() == m_pCustom) + { + oldSelect = m_pCustom->GetSelectedIndex(); + } +#endif // _REMOVE_CUSTOM_LEVELS + +*/ + LTBOOL bHandled = CBaseScreen::HandleKeyDown(key,rep); + +/* +#ifndef _REMOVE_CUSTOM_LEVELS + if (bHandled && GetSelectedControl() == m_pCustom && oldSelect != kNoSelection && oldSelect != m_pCustom->GetSelectedIndex()) + { + m_pCustom->GetWidth(); + CLTGUICtrl *pSelCtrl = m_pCustom->GetSelectedControl(); + LTIntPt pos = pSelCtrl->GetPos(); + if (m_bSelectFXCenter) + pos.x += (pSelCtrl->GetWidth() / 2); + pos.y += (pSelCtrl->GetHeight() / 2); + + g_pInterfaceMgr->ShowSelectFX(pos); + } +#endif // _REMOVE_CUSTOM_LEVELS + +*/ + return bHandled; + +} + + diff --git a/Jack/ClientShellDLL/ScreenSingle.h b/Jack/ClientShellDLL/ScreenSingle.h new file mode 100644 index 00000000..6b836c7a --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSingle.h @@ -0,0 +1,68 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSingle.cpp +// +// PURPOSE : Interface screen for starting, loading, and saving single player +// games. +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_SINGLE_H_ +#define _SCREEN_SINGLE_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "BaseScreen.h" +#include "ClientUtilities.h" + +class CScreenSingle : public CBaseScreen +{ +public: + CScreenSingle(); + virtual ~CScreenSingle(); + + // Build the screen + LTBOOL Build(); + void Escape(); + + virtual LTBOOL HandleKeyDown(int key, int rep); + virtual LTBOOL OnMouseMove(int x, int y); + + + void OnFocus(LTBOOL bFocus); + + +protected: + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + void AddFilesToFilenames(FileEntry* pFiles, char* pPath); + void BuildCustomLevelsList(int nWidth); + void BuildChapterList(); + + + // Sets up the server for local singleplayer game. + bool SetupServer( ); + +protected: + + CLTGUITextCtrl* m_pLoadCtrl; + CLTGUITextCtrl* m_pChapterCtrl; + + CLTGUIListCtrl* m_pDiff; + CLTGUIListCtrl* m_pCustom; + CLTGUIListCtrl* m_pChapter; + + CLTGUIFrame* m_pDiffFrame; + CLTGUIFrame* m_pCustomFrame; + CLTGUIFrame* m_pChapterFrame; + + + StringSet m_Filenames; + + +}; + +#endif // _SCREEN_SINGLE_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenSpriteMgr.cpp b/Jack/ClientShellDLL/ScreenSpriteMgr.cpp new file mode 100644 index 00000000..2d138217 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSpriteMgr.cpp @@ -0,0 +1,738 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSpriteMgr.cpp +// +// PURPOSE : Manage all game-side handling of 2d (screenspace) sprites +// +// CREATED : 12/7/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "InterfaceMgr.h" +#include "ScreenSpriteMgr.h" + +CScreenSpriteMgr *g_pScreenSpriteMgr = LTNULL; + +// ======================================================================= // +// +// Class: CScreenSprite +// +// Purpose: Game-side class encapsulating autonomous sprites +// +// ======================================================================= // + +// ----------------------------------------------------------------------- // +// +// ROUTINE: Constructor and Destructor +// +// PURPOSE: Set default values for the class, clean up any allocations +// +// ----------------------------------------------------------------------- // + +CScreenSprite::CScreenSprite() +{ + m_Center.x = 0; // default is sprite coord is top-left + m_Center.y = 0; + m_pName = LTNULL; + m_nFrames = 0; + m_nFrameRate = 1; + m_fOneFrameTime = 1.0f; + m_bShow = LTFALSE; + m_bAdditive = LTFALSE; + + // Set up the drawprim in the Init() function + // Set up the FrameArray in the Init() function + + m_iCurrentFrame = 0; + m_fCurrentTime = 0.0f; + + // by default, a sprite lasts FOREVER + m_bExpires = LTTRUE; + m_fLifeTime = 1.0f; + + m_eLayer = SPRITELAYER_DEFAULT; +} + +CScreenSprite::~CScreenSprite() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::Init +// +// PURPOSE: Called by the ScreenSpriteMgr to set up a few variables +// +// ----------------------------------------------------------------------- // + +void CScreenSprite::Init() +{ + m_FrameArray.clear(); + + SetupQuadUVs(m_DrawPrim, NULL, 0.0f, 0.0f, 1.0f, 1.0f); + g_pDrawPrim->SetRGBA(&m_DrawPrim,argbWhite); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::SetExpiration +// +// PURPOSE: Called by the ScreenSpriteMgr to set up sprite life duration +// +// ----------------------------------------------------------------------- // + +void CScreenSprite::SetExpiration(bool bExpires) +{ + m_bExpires = bExpires; + if (m_bExpires) + { + m_fLifeTime = m_fOneFrameTime * (float)m_nFrames; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::Init +// +// PURPOSE: Have the ScreenSpriteMgr add it to its array of items to manage +// Also caches all assets needed +// +// ----------------------------------------------------------------------- // +/* +LTBOOL CScreenSprite::Init(char *pName, LTBOOL bExpires) +{ + _ASSERT(g_pScreenSpriteMgr != LTNULL); + _ASSERT(g_pDrawPrim != LTNULL); + + m_FrameArray.clear(); + + g_pDrawPrim->SetUVWH(&m_DrawPrim, 0.0f, 0.0f, 1.0f, 1.0f); + g_pDrawPrim->SetRGBA(&m_DrawPrim,argbWhite); + + m_bExpires = bExpires; + + LTBOOL bResult = g_pScreenSpriteMgr->AddSprite(this, pName); + + if (m_bExpires) + { + m_fLifeTime = m_fOneFrameTime * (float)m_nFrames; + } + return (bResult); +} +*/ +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::Term +// +// PURPOSE: Clean up any local allocations +// +// ----------------------------------------------------------------------- // +void CScreenSprite::Term() +{ + if (m_pName) + { + free(m_pName); + m_pName = LTNULL; + } + m_FrameArray.clear(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::Show +// +// PURPOSE: Determines the visibility of the sprite. If bRestartAnimation +// is true, then also restart the animation from the first frame +// instead of wherever it was last at. +// +// ----------------------------------------------------------------------- // + +void CScreenSprite::Show(LTBOOL bShow, LTBOOL bRestartAnimation) +{ + m_bShow = bShow; + if (m_bShow && bRestartAnimation) + { + m_iCurrentFrame = 0; + m_fCurrentTime = g_pLTClient->GetTime(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::AdvanceTime +// +// PURPOSE: Used by the ScreenSpriteMgr to tell this sprite how much +// time has elapsed since it was last drawn in order to +// compute if the frame number should change. +// +// ----------------------------------------------------------------------- // +void CScreenSprite::AdvanceTime(float fDelta) +{ + if (m_nFrames <= 1) + return; + + if (m_bExpires) + { + m_fLifeTime -= fDelta; + } + + m_fCurrentTime += fDelta; + + // Is it time to change frames? + if (m_fCurrentTime > m_fOneFrameTime) + { + // See how many frames to advance (typically one) + int nAdvanceFrames = (int)(m_fCurrentTime / m_fOneFrameTime); + // reduce the frame clock by that amount + m_fCurrentTime -= (float)nAdvanceFrames * m_fOneFrameTime; + // Advance the frame counter (and modulus it!) + m_iCurrentFrame = (m_iCurrentFrame + nAdvanceFrames) % m_nFrames; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::Render +// +// PURPOSE: Used by the ScreenSpriteMgr. Draws this sprite to screen +// +// ----------------------------------------------------------------------- // + +void CScreenSprite::Render() +{ + g_pDrawPrim->SetAlphaBlendMode(m_bAdditive ? DRAWPRIM_BLEND_ADD : DRAWPRIM_BLEND_MOD_SRCALPHA); + + g_pDrawPrim->SetTexture(m_FrameArray[m_iCurrentFrame]->hTex); + + float x = (float)m_Position.x - (float)m_Center.x; + float y = (float)m_Position.y - (float)m_Center.y; + float w = (float)m_FrameArray[m_iCurrentFrame]->iWidth; + float h = (float)m_FrameArray[m_iCurrentFrame]->iHeight; + g_pDrawPrim->SetXYWH(&m_DrawPrim, x, y, w, h); + SetupQuadUVs(m_DrawPrim, m_FrameArray[m_iCurrentFrame]->hTex, 0.0f, 0.0f, 1.0f, 1.0f); + + g_pDrawPrim->DrawPrim(&m_DrawPrim); +} +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::SetCenter +// +// PURPOSE: Change the "center" of the sprite i.e. drawing offset +// +// ----------------------------------------------------------------------- // +void CScreenSprite::SetCenter(int x, int y) +{ + m_Center.x = x; + m_Center.y = y; +} + +void CScreenSprite::SetCenter(LTIntPt pos) +{ + m_Center.x = pos.x; + m_Center.y = pos.y; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::SetPosition +// +// PURPOSE: Position the sprite in screen coordinates +// Note that all coordinates are absolute and not scaled for +// differing screen resolutions, so any repositioning needs +// to be done by the calling routine. +// +// ----------------------------------------------------------------------- // +void CScreenSprite::SetPosition(int x, int y) +{ + m_Position.x = x; + m_Position.y = y; +} + +void CScreenSprite::SetPosition(LTIntPt pos) +{ + m_Position.x = pos.x; + m_Position.y = pos.y; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::GetPosition +// +// PURPOSE: Query for the current location of the sprite +// +// ----------------------------------------------------------------------- // + +LTIntPt CScreenSprite::GetPosition() +{ + LTIntPt pos; + pos.x = m_Position.x; + pos.y = m_Position.y; + return (pos); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::GetDims +// +// PURPOSE: Query for the current dimensions of the sprite. Computed +// by taking the dims of the first frame texture +// +// ----------------------------------------------------------------------- // + +LTIntPt CScreenSprite::GetDims() +{ + _ASSERT(m_nFrames > 0); + + unsigned int iWidth = 1; + unsigned int iHeight = 1; + + // Grab the dimensions of the first frame + HTEXTURE hTex = m_FrameArray[0]->hTex; + g_pTexInterface->GetTextureDims(hTex,iWidth,iHeight); + + LTIntPt dims(iWidth, iHeight); + return dims; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSprite::SetLifeTime +// +// PURPOSE: Calculate and set up a sprite for self-termination +// +// ----------------------------------------------------------------------- // + +void CScreenSprite::SetLifeTime(int iLoop) +{ + if (iLoop < 0) + { + m_bExpires = LTFALSE; + return; + } + SetLifeTime((float)iLoop * m_fOneFrameTime * m_nFrames); +} + +void CScreenSprite::SetLifeTime(float fSeconds) +{ + m_bExpires = LTTRUE; + m_fLifeTime = fSeconds; +} + +// ======================================================================= // +// +// Class: CScreenSpriteMgr +// +// Purpose: Black-box management of screen-based sprites +// +// ======================================================================= // + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr constructor and destructor +// +// PURPOSE: Initialization and cleanup +// +// ----------------------------------------------------------------------- // + +CScreenSpriteMgr::CScreenSpriteMgr() +{ + g_pScreenSpriteMgr = this; + m_bInitialized = LTFALSE; +} + +CScreenSpriteMgr::~CScreenSpriteMgr() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::Init +// +// PURPOSE: Make sure the arrays are cleaned up, start the local timer +// +// ----------------------------------------------------------------------- // + +LTBOOL CScreenSpriteMgr::Init() +{ + if (m_bInitialized) + return LTTRUE; + + m_SpriteArray.clear(); + m_FrameArray.clear(); + + m_fLastTime = g_pLTClient->GetTime(); + + m_bInitialized = LTTRUE; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::Term +// +// PURPOSE: Calls Term() on all attached sprites, and frees up all +// dynamically allocated memory (textures and strings) +// +// ----------------------------------------------------------------------- // + +void CScreenSpriteMgr::Term() +{ + if (!m_bInitialized) + return; + + // clean up the sprite array + ScreenSpriteArray::iterator sIter = m_SpriteArray.begin(); + while (sIter != m_SpriteArray.end()) + { + delete (*sIter); + sIter++; + } + m_SpriteArray.clear(); + + // clean up the texture array + FrameArray::iterator fIter = m_FrameArray.begin(); + while (fIter != m_FrameArray.end()) + { + if ((*fIter)->pName) + free((*fIter)->pName); + + if ((*fIter)->hTex) + g_pTexInterface->ReleaseTextureHandle((*fIter)->hTex); + + delete (*fIter); + fIter++; + } + m_FrameArray.clear(); + + g_pScreenSpriteMgr = LTNULL; + m_bInitialized = LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::DestroyScreenSprite +// +// PURPOSE: Delete a sprite from the list of managed screensprites +// +// ----------------------------------------------------------------------- // + +void CScreenSpriteMgr::DestroyScreenSprite(CScreenSprite * pSprite) +{ + if (pSprite == LTNULL) + return; + + ScreenSpriteArray::iterator sIter = m_SpriteArray.begin(); + while (sIter != m_SpriteArray.end()) + { + if (*sIter == pSprite) + { + // Remove a single sprite + debug_delete(*sIter); + m_SpriteArray.erase(sIter); + return; + } + sIter++; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::Update +// +// PURPOSE: Iterate through the array of sprites and render all that are visible +// +// ----------------------------------------------------------------------- // + +void CScreenSpriteMgr::Update() +{ + if (!m_bInitialized) + return; + + LTBOOL bKillingSprites = LTFALSE; + LTBOOL bDraw = LTFALSE; + + // Note the elapsed time + float fCurrentTime = g_pLTClient->GetTime(); + float fDeltaTime = fCurrentTime - m_fLastTime; + m_fLastTime = fCurrentTime; + + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + if ((*iter)->m_bShow) + { + bDraw = LTTRUE; + + (*iter)->AdvanceTime(fDeltaTime); + if ((*iter)->KillMe()) + { + bKillingSprites = LTTRUE; + } + } + iter++; + } + + // Cull out any dead sprites + if (bKillingSprites) + { + iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + if ((*iter)->KillMe()) + { + delete (*iter); + m_SpriteArray.erase(iter); +// iter = m_SpriteArray.begin(); + } + else + { + iter++; + } + } + } + + if(bDraw) + { + g_pLTClient->Start3D(); + g_pLTClient->StartOptimized2D(); + + // Set up the rendering + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + + iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + if ((*iter)->m_bShow) + { + (*iter)->Render(); + } + iter++; + } + + g_pLTClient->EndOptimized2D(); + g_pLTClient->End3D(END3D_CANDRAWCONSOLE); + } +} + +CScreenSprite * CScreenSpriteMgr::CreateScreenSprite(char * pFile, bool bExpires, ScreenSpriteLayer eLayer) +{ + // Make sure the ScreenSpriteMgr is operational + if (!m_bInitialized) + Init(); + + CScreenSprite * pSpr = debug_new(CScreenSprite); + pSpr->Init(); + + bool bResult = GiveSpriteResources(pSpr, pFile); + + if (!bResult) + { + debug_delete(pSpr); + return LTNULL; + } + + pSpr->SetExpiration(bExpires); + pSpr->m_eLayer = eLayer; // determine the draw-order with the layer number + +// m_SpriteArray.push_back(pSpr); + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + if (pSpr->m_eLayer <= (*iter)->m_eLayer) + { + m_SpriteArray.insert(iter, pSpr); + return pSpr; + } + iter++; + } + // pSpr didn't come before anything in the array, or the array is empty. Add it + m_SpriteArray.push_back(pSpr); + return pSpr; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::AddSprite +// +// PURPOSE: Called by each sprite as it is initialized. This routine +// handles the parsing of the filename (sprite or dtx) and +// adds the sprite to the internal array used for rendering +// +// ----------------------------------------------------------------------- // + +bool CScreenSpriteMgr::GiveSpriteResources(CScreenSprite * pSprite, char * pFile) +{ +/* + if (!m_bInitialized) + Init(); + + // Do a quick check to see if this sprite already exists in the array + ScreenSpriteArray::iterator iter = m_SpriteArray.begin(); + while (iter != m_SpriteArray.end()) + { + if (pSprite == *iter) + return LTTRUE; + iter++; + } +*/ + // See if it's a texture (DTX) + if (strnicmp(&pFile[strlen(pFile) - 4], ".dtx", 4) == 0) + { + int iFrameID = CacheTexture(pFile); + if (iFrameID == -1) + return (LTFALSE); + + pSprite->m_FrameArray.push_back(m_FrameArray[iFrameID]); + pSprite->m_pName = strdup(pFile); + +// m_SpriteArray.push_back(pSprite); + return LTTRUE; + } + + // See if it's an SPR file + if (strnicmp(&pFile[strlen(pFile) - 4], ".spr", 4) == 0) + { + // Cache the textures + if (CacheSprite(pSprite, pFile)) + { + // then add it to the array +// m_SpriteArray.push_back(pSprite); + return (LTTRUE); + } + } + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::CacheSprite +// +// PURPOSE: Called by AddSprite(), used to parse the SPR file and cache +// all assets needed into the appropriate arrays. +// +// ----------------------------------------------------------------------- // + +LTBOOL CScreenSpriteMgr::CacheSprite(CScreenSprite * pSprite, char * pFile) +{ + ILTStream * pStream; + char buf[1024]; + + pSprite->m_pName = strdup(pFile); + + g_pLTClient->OpenFile(pFile, &pStream); + if (pStream) + { + int nFrames; + int nFrameRate; + int bTransparency; + int bTranslucency; + int iChromakey; + + pStream->Read(&nFrames, 4); + pSprite->m_nFrames = nFrames; + + pStream->Read(&nFrameRate, 4); + pSprite->m_nFrameRate = nFrameRate; + pSprite->m_fOneFrameTime = 1.0f / (float)nFrameRate; + + pStream->Read(&bTransparency, 4); + pStream->Read(&bTranslucency, 4); + pStream->Read(&iChromakey, 4); + + if (nFrames < 1 && nFrames > 64) + { + // We have an error. + // FIXME report it + pStream->Release(); + return LTFALSE; + } + for (int i = 0; i < nFrames; i++) + { + short iLen; + pStream->Read(&iLen, 2); + if (iLen < 1 || iLen > 1023) + { + // We have an error. + // FIXME report it + pStream->Release(); + return LTFALSE; + } + memset(buf,0,1024); + pStream->Read(&buf, iLen); + + int iFrameID = CacheTexture(buf); + pSprite->m_FrameArray.push_back(m_FrameArray[iFrameID]); + } + pStream->Release(); + + return LTTRUE; + } + return (LTFALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenSpriteMgr::CacheTextrue +// +// PURPOSE: Called by AddSprite() and CacheSprite. Given a file name, +// this routine adds a new texture to the local texture array +// complete with supplemental data (dims and name) +// +// ----------------------------------------------------------------------- // + +int CScreenSpriteMgr::CacheTexture(char * pFile) +{ + // First, check to see if we already have the texture + // iterate through the array and return the index of the element that matches + // this string. Otherwise, return -1 + FrameArray::iterator iter = m_FrameArray.begin(); + + while (iter != m_FrameArray.end()) + { + char * pTextureName = (*iter)->pName; + + if (!strcmpi(pTextureName, pFile)) + { + return (*iter)->iFrameID; + } + iter++; + } + + HTEXTURE hTex = LTNULL; + + LTRESULT res = g_pTexInterface->FindTextureFromName(hTex, pFile); + + if (res != LT_OK) + { + g_pTexInterface->CreateTextureFromName(hTex, pFile); + } + + if (hTex) + { + ScreenSpriteFrame * pFrame = new ScreenSpriteFrame; + _ASSERT(pFrame != LTNULL); + + pFrame->iFrameID = m_FrameArray.size(); + pFrame->pName = strdup(pFile); + pFrame->hTex = hTex; + g_pTexInterface->GetTextureDims(hTex,pFrame->iWidth,pFrame->iHeight); + + m_FrameArray.push_back(pFrame); + return (pFrame->iFrameID); + } + return -1; +} + diff --git a/Jack/ClientShellDLL/ScreenSpriteMgr.h b/Jack/ClientShellDLL/ScreenSpriteMgr.h new file mode 100644 index 00000000..8842835f --- /dev/null +++ b/Jack/ClientShellDLL/ScreenSpriteMgr.h @@ -0,0 +1,156 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenSpriteMgr.h +// +// PURPOSE : Manage all game-side handling of 2d (screenspace) sprites +// +// CREATED : 12/7/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SCREEN_SPRITE_MGR_H__ +#define __SCREEN_SPRITE_MGR_H__ + +#include "iltdrawprim.h" + +class CScreenSpriteMgr; +extern CScreenSpriteMgr *g_pScreenSpriteMgr; + +typedef enum +{ + // default layer, the very back + SPRITELAYER_DEFAULT = 0, + + // the layers to a subroutine: subroutine bitmap, build state, and condition + SPRITELAYER_SUBROUTINE_SHAPE, + SPRITELAYER_SUBROUTINE_BUILD, + SPRITELAYER_SUBROUTINE_CONDITION, + + // the layers to a subroutine + SPRITELAYER_ADDITIVE_SHAPE, + SPRITELAYER_ADDITIVE_GLOW, + SPRITELAYER_ADDITIVE_HIGHLIGHT, + + // procedurals + SPRITELAYER_PROCEDURAL_SHAPE, + SPRITELAYER_PROCEDURAL_PROGRESS, + SPRITELAYER_PROCEDURAL_HIGHLIGHT, + + // at the very front, the three layers to a mouse cursor + SPRITELAYER_CURSOR_ADDITIVE, + SPRITELAYER_CURSOR_BACKGROUND, + SPRITELAYER_CURSOR_FOREGROUND, +} ScreenSpriteLayer; + +// Wrapper struct for HTEXTUREs that expose a bit more information on our end +// Managed by the CScreenSpriteMgr class. One frame refers to a single texture +// that can be used by multiple sprites + +struct ScreenSpriteFrame +{ + int iFrameID; // unique ID number (it's an array index) + char *pName; + HTEXTURE hTex; + unsigned int iWidth; + unsigned int iHeight; +}; + +typedef std::vector FrameArray; + +class CScreenSprite +{ + friend class CScreenSpriteMgr; +public: + CScreenSprite(); + ~CScreenSprite(); + +// LTBOOL Init(char *pName, LTBOOL bExpires = LTTRUE); + + void Show(LTBOOL bShow, LTBOOL bRestartAnimation = LTTRUE); + + void SetAdditive(LTBOOL bAdditive) {m_bAdditive = bAdditive;} + void SetCenter(int x, int y); + void SetCenter(LTIntPt pos); + + void SetPosition(int x, int y); + void SetPosition(LTIntPt pos); + LTIntPt GetPosition(); + LTIntPt GetDims(); + + char * GetName() {return m_pName;} + + void SetLifeTime(int iLoops); + void SetLifeTime(float fSeconds); + + LTBOOL KillMe() {return (m_bExpires && (m_fLifeTime < 0.0f));} + +private: + + // Private functions used by ScreenSpriteMgr + void Init(); + void SetExpiration(bool bExpires); + void Term(); + + void AdvanceTime(float fDelta); // Tell the sprite how much time has elapsed + void Render(); // Render the sprite,called from the Mgr + + ScreenSpriteLayer m_eLayer; // sprite layer to determine draw-order + + LTIntPt m_Position; + LTIntPt m_Center; // Offset from top-left corner of bitmap to center of sprite (0,0) + char *m_pName; // filename (spr or dtx) + int m_nFrames; // Number of frames in the sprite + int m_nFrameRate; // frame rate (in frames per second) for animation + float m_fOneFrameTime; // Time in seconds for a single frame to be visible + + LTBOOL m_bExpires; // flag to set if the sprite will die (default = true) + float m_fLifeTime; // Life expectancy of sprite + + LTBOOL m_bShow; // flag. Is this sprite supposed to be drawn? + LTBOOL m_bAdditive; // new bonus flag. Is this an additive texture? + LTPoly_GT4 m_DrawPrim; // Drawprim used for rendering + + FrameArray m_FrameArray; // array of pointers to the textures used + + // Variables used to animate + int m_iCurrentFrame; + float m_fCurrentTime; +}; + +typedef std::vector ScreenSpriteArray; + +// The management class. Simply takes charge of updating timers and drawing the respective +// frames of all active sprites. Manages the list of all sprites. + +class CScreenSpriteMgr +{ +friend class CScreenSprite; +public: + CScreenSpriteMgr(); + ~CScreenSpriteMgr(); + + LTBOOL Init(); + void Term(); + + void Update(); // Draw all visible sprites + + CScreenSprite * CreateScreenSprite(char * pFile, bool bExpires = true, ScreenSpriteLayer eLayer = SPRITELAYER_DEFAULT); + void DestroyScreenSprite(CScreenSprite * pSprite); // public fn for destructor + +private: + bool GiveSpriteResources(CScreenSprite * pSprite, char * pFile); // can only be called by CScreenSprites + int CacheTexture(char * pFile); + LTBOOL CacheSprite(CScreenSprite * pSprite, char * pFile); + + LTBOOL m_bInitialized; + + FrameArray m_FrameArray; + ScreenSpriteArray m_SpriteArray; + + float m_fLastTime; + // TODO if a sprite has expired, go ahead and term() it and delete it! +}; + +#endif // __SCREEN_SPRITE_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenTeam.cpp b/Jack/ClientShellDLL/ScreenTeam.cpp new file mode 100644 index 00000000..8bc1ceaf --- /dev/null +++ b/Jack/ClientShellDLL/ScreenTeam.cpp @@ -0,0 +1,403 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenTeam.h +// +// PURPOSE : Interface screen for Team setup +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ScreenTeam.h" +#include "ScreenMgr.h" +#include "ScreenCommands.h" +#include "ClientMultiplayerMgr.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + +extern uint8 g_nCurTeam; + +namespace +{ + void EditNameCallBack(LTBOOL bReturn, void *pData) + { + CScreenTeam *pThisScreen = (CScreenTeam *)g_pInterfaceMgr->GetScreenMgr()->GetScreenFromID(SCREEN_ID_TEAM); + if (bReturn && pThisScreen) + pThisScreen->SendCommand(CMD_OK,(uint32)pData,CMD_EDIT_NAME); + }; + + #define INVALID_ANI ((HMODELANIM)-1) +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CScreenTeam::CScreenTeam() +{ + m_pName = LTNULL; + m_pModel = LTNULL; + m_pLeft = LTNULL; + m_pRight = LTNULL; + m_nCurrentModel = 0; + +} + +CScreenTeam::~CScreenTeam() +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CScreenTeam::Term +// +// PURPOSE: Terminate the screen +// +// ----------------------------------------------------------------------- // + +void CScreenTeam::Term() +{ + CBaseScreen::Term(); +} + +// Build the screen +LTBOOL CScreenTeam::Build() +{ + + CreateTitle(IDS_TITLE_TEAM); + int kColumn0 = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_TEAM,"ColumnWidth"); + int kColumn1 = (640 - GetPageLeft()) - kColumn0; + int kArrow = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_TEAM,"ArrowWidth"); + + m_pName = AddColumnCtrl(CMD_EDIT_NAME, IDS_HELP_TEAM_NAME); + m_pName->AddColumn(LoadTempString(IDS_TEAM_NAME), kColumn0); + m_pName->AddColumn("", kColumn1, LTTRUE); + + m_pModel = AddTextItem(IDS_TEAM_MODEL, LTNULL, IDS_HELP_TEAM_MODEL); + + LTIntPt arrowPos = m_pModel->GetBasePos(); + arrowPos.x += kColumn0; + + HTEXTURE hLeft = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowlt.dtx"); + HTEXTURE hLeftH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowlt_h.dtx"); + + m_pLeft = debug_new(CLTGUIButton); + if (m_pLeft) + { + m_pLeft->Create(CMD_LEFT,LTNULL,hLeft,hLeftH); + m_pLeft->SetBasePos(arrowPos); + AddControl(m_pLeft); + m_pLeft->SetCommandHandler(this); + } + arrowPos.x += kArrow; + + HTEXTURE hRight = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowrt.dtx"); + HTEXTURE hRightH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowrt_h.dtx"); + m_pRight = debug_new(CLTGUIButton); + if (m_pRight) + { + m_pRight->Create(CMD_RIGHT,LTNULL,hRight,hRightH); + m_pRight->SetBasePos(arrowPos); + AddControl(m_pRight); + m_pRight->SetCommandHandler(this); + } + + + // Make sure to call the base class + return CBaseScreen::Build(); +} + +uint32 CScreenTeam::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) +{ + if (dwCommand == CMD_OK) + { + HandleCallback(dwParam1,dwParam2); + return 1; + } + switch(dwCommand) + { + case CMD_EDIT_NAME: + { + //show edit box here + MBCreate mb; + mb.eType = LTMB_EDIT; + mb.pFn = EditNameCallBack; +// mb.eInput = CLTGUIEditCtrl::kInputAlphaNumeric; + mb.pString = m_sTeamName.c_str(); + mb.nMaxChars = MAX_PLAYER_NAME-1; + g_pInterfaceMgr->ShowMessageBox(IDS_TEAM_NAME,&mb); + } break; + + case CMD_LEFT: + { + PrevModel(); + } break; + case CMD_RIGHT: + { + NextModel(); + } break; + + default: + return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); + } + return 1; +}; + + +// Change in focus +void CScreenTeam::OnFocus(LTBOOL bFocus) +{ + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + LTBOOL bInMPGame = (IsMultiplayerGame() && g_pGameClientShell->IsWorldLoaded()); + if (bFocus) + { + int n = 0; + for (n = 0; n < g_pModelButeMgr->GetNumTeamModels(); n++) + { + ModelId id = g_pModelButeMgr->GetTeamModel(n); + HMODELDB dummy = NULL; + g_pILTModelClient->CacheModelDB(g_pModelButeMgr->GetModelFilename(id),dummy); + } + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeDemolition: + m_nCurrentModel = pProfile->m_ServerGameOptions.GetDemolition().m_nTeamModel[g_nCurTeam]; + m_nSkipModel = pProfile->m_ServerGameOptions.GetDemolition().m_nTeamModel[1-g_nCurTeam]; + m_sTeamName = pProfile->m_ServerGameOptions.GetDemolition().m_sTeamName[g_nCurTeam].c_str(); + break; + case eGameTypeTeamDeathmatch: + m_nCurrentModel = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTeamModel[g_nCurTeam]; + m_nSkipModel = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTeamModel[1-g_nCurTeam]; + m_sTeamName = pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sTeamName[g_nCurTeam].c_str(); + break; + case eGameTypeDoomsDay: + m_nCurrentModel = pProfile->m_ServerGameOptions.GetDoomsday().m_nTeamModel[g_nCurTeam]; + m_nSkipModel = pProfile->m_ServerGameOptions.GetDoomsday().m_nTeamModel[1-g_nCurTeam]; + m_sTeamName = pProfile->m_ServerGameOptions.GetDoomsday().m_sTeamName[g_nCurTeam].c_str(); + break; + }; + + m_pName->SetString(1,m_sTeamName.c_str()); + + m_pName->Enable(!bInMPGame); + m_pModel->Enable(!bInMPGame); + m_pLeft->Enable(!bInMPGame); + m_pRight->Enable(!bInMPGame); + + + UpdateData(LTFALSE); + } + else + { + UpdateData(); + int n = 0; + for (n = 0; n < g_pModelButeMgr->GetNumTeamModels(); n++) + { + ModelId id = g_pModelButeMgr->GetTeamModel(n); + g_pILTModelClient->UncacheModelDB(g_pModelButeMgr->GetModelFilename(id)); + } + + switch (g_pGameClientShell->GetGameType()) + { + case eGameTypeDemolition: + pProfile->m_ServerGameOptions.GetDemolition().m_nTeamModel[g_nCurTeam] = m_nCurrentModel; + pProfile->m_ServerGameOptions.GetDemolition().m_sTeamName[g_nCurTeam] = m_sTeamName; + break; + case eGameTypeTeamDeathmatch: + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_nTeamModel[g_nCurTeam] = m_nCurrentModel; + pProfile->m_ServerGameOptions.GetTeamDeathmatch().m_sTeamName[g_nCurTeam] = m_sTeamName; + break; + case eGameTypeDoomsDay: + pProfile->m_ServerGameOptions.GetDoomsday().m_nTeamModel[g_nCurTeam] = m_nCurrentModel; + pProfile->m_ServerGameOptions.GetDoomsday().m_sTeamName[g_nCurTeam] = m_sTeamName; + break; + }; + + pProfile->Save(); + + } + CBaseScreen::OnFocus(bFocus); + + if (bFocus) + UpdateChar(); +} + +LTBOOL CScreenTeam::OnUp() +{ + m_pLeft->Enable(LTFALSE); + m_pRight->Enable(LTFALSE); + LTBOOL bHandled = CBaseScreen::OnUp(); + m_pLeft->Enable(LTTRUE); + m_pRight->Enable(LTTRUE); + return bHandled; +} + +LTBOOL CScreenTeam::OnDown() +{ + m_pLeft->Enable(LTFALSE); + m_pRight->Enable(LTFALSE); + LTBOOL bHandled = CBaseScreen::OnDown(); + m_pLeft->Enable(LTTRUE); + m_pRight->Enable(LTTRUE); + return bHandled; +} + + +LTBOOL CScreenTeam::OnLeft() +{ + if (m_pModel->IsSelected()) + { + PrevModel(); + return LTTRUE; + } + + return CBaseScreen::OnLeft(); + +} + + +LTBOOL CScreenTeam::OnRight() +{ + if (m_pModel->IsSelected()) + { + NextModel(); + return LTTRUE; + } + return CBaseScreen::OnRight(); + +} + +/******************************************************************/ + +/******************************************************************/ +LTBOOL CScreenTeam::OnLButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + return CBaseScreen::OnLButtonUp(x,y); +} + + +/******************************************************************/ +LTBOOL CScreenTeam::OnRButtonUp(int x, int y) +{ + CLTGUICtrl *pCtrl = GetSelectedControl(); + return CBaseScreen::OnRButtonUp(x,y); +} + +LTBOOL CScreenTeam::OnMouseMove(int x, int y) +{ + LTBOOL bHandled = CBaseScreen::OnMouseMove(x, y); + if (GetSelectedControl() == m_pLeft || GetSelectedControl() == m_pRight) + m_pModel->Select(LTTRUE); + else if (GetSelectedControl() != m_pModel) + m_pModel->Select(LTFALSE); + return bHandled; +} + +void CScreenTeam::NextModel() +{ + m_nCurrentModel++; + if (m_nCurrentModel >= g_pModelButeMgr->GetNumTeamModels()) + m_nCurrentModel = 0; + + if (m_nCurrentModel == m_nSkipModel) + NextModel(); + else + UpdateChar(); +} + +void CScreenTeam::PrevModel() +{ + if (!m_nCurrentModel) + m_nCurrentModel = g_pModelButeMgr->GetNumTeamModels(); + m_nCurrentModel--; + + if (m_nCurrentModel == m_nSkipModel) + PrevModel(); + else + UpdateChar(); +} + +void CScreenTeam::UpdateChar() +{ + + HOBJECT hChar = m_CharSFX.GetObject(); + if (hChar) + { + if (m_nCurrentModel >= g_pModelButeMgr->GetNumTeamModels()) + { + m_nCurrentModel = 0; + } + ModelId id = g_pModelButeMgr->GetTeamModel(m_nCurrentModel); + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + SAFE_STRCPY(createStruct.m_Filename, g_pModelButeMgr->GetModelFilename(id)); + if(g_pModelButeMgr->GetSkinReader(id)) + { + g_pModelButeMgr->GetSkinReader(id)->CopyList(0, createStruct.m_SkinNames[0], MAX_CS_FILENAME_LEN+1); + } + + g_pModelButeMgr->CopyRenderStyleFilenames( id, &createStruct ); + + g_pLTClient->SetModelAnimation(hChar, 0); + g_pCommonLT->SetObjectFilenames(hChar, &createStruct); + + uint32 dwAni = g_pLTClient->GetAnimIndex(hChar, "Interface"); + if (dwAni != INVALID_ANI) + { + g_pLTClient->SetModelAnimation(hChar, dwAni); + } + + // Remove old attachments... + + ClearAttachFX(); + + // Create the required attachments for this model... + + INT_CHAR *pChar = g_pLayoutMgr->GetScreenCharacter((eScreenID)m_nScreenID); + uint8 nDefaultAttachments = g_pModelButeMgr->GetNumDefaultAttachments( id ); + + const char *pszAttachmentPos; + const char *pszAttachment; + + for( uint8 i = 0; i < nDefaultAttachments; ++i ) + { + INT_ATTACH acs; + + g_pModelButeMgr->GetDefaultAttachment( id, i, pszAttachmentPos, pszAttachment ); + + acs.nAttachmentID = g_pAttachButeMgr->GetAttachmentIDByName( pszAttachment ); + acs.fScale = pChar->fScale; + + LTStrCpy( acs.szSocket, pszAttachmentPos, ARRAY_LEN( acs.szSocket )); + + CreateAttachFX( &acs ); + } + } +} + + +void CScreenTeam::HandleCallback(uint32 dwParam1, uint32 dwParam2) +{ + switch(dwParam2) + { + case CMD_EDIT_NAME: + { + char* pName = ((char *)dwParam1); + if (pName && strlen(pName)) + { + m_sTeamName = pName; + m_pName->SetString(1,m_sTeamName.c_str()); + } + } break; + } + UpdateData(); +} + diff --git a/Jack/ClientShellDLL/ScreenTeam.h b/Jack/ClientShellDLL/ScreenTeam.h new file mode 100644 index 00000000..fedf8534 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenTeam.h @@ -0,0 +1,63 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenTeam.h +// +// PURPOSE : Interface screen for player setup +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef _SCREEN_TEAM_H_ +#define _SCREEN_TEAM_H_ + +#include "BaseScreen.h" +#include "LayoutMgr.h" + +class CScreenTeam : public CBaseScreen +{ +public: + CScreenTeam(); + virtual ~CScreenTeam(); + + + // Build the screen + LTBOOL Build(); + void Term(); + + void OnFocus(LTBOOL bFocus); + + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnUp(); + virtual LTBOOL OnDown(); + virtual LTBOOL OnMouseMove(int x, int y); + LTBOOL OnLButtonUp(int x, int y); + LTBOOL OnRButtonUp(int x, int y); + + + void NextModel(); + void PrevModel(); + +protected: + void HandleCallback(uint32 dwParam1, uint32 dwParam2); + void UpdateChar(); + + uint32 OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2); + + CLTGUIColumnCtrl* m_pName; + CLTGUITextCtrl* m_pModel; + CLTGUIButton* m_pLeft; + CLTGUIButton* m_pRight; + + INT_CHAR m_Model; + + int m_nCurrentModel; + int m_nSkipModel; + std::string m_sTeamName; + + +}; + + +#endif // _SCREEN_TEAM_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenTintMgr.cpp b/Jack/ClientShellDLL/ScreenTintMgr.cpp new file mode 100644 index 00000000..78948152 --- /dev/null +++ b/Jack/ClientShellDLL/ScreenTintMgr.cpp @@ -0,0 +1,76 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenTintMgr.cpp +// +// PURPOSE : Implementation of ScreenTintMgr class +// +// CREATED : 02/02/00 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "screentintmgr.h" +#include "GameClientShell.h" + + +CScreenTintMgr::CScreenTintMgr() +{ + for (int i = 0; i < NUM_TINT_EFFECTS; i++) + { + m_avTints[i].Init(0.0f,0.0f,0.0f); + } + m_bChanged = LTFALSE; +} + +CScreenTintMgr::~CScreenTintMgr() +{ +} + +void CScreenTintMgr::Update() +{ + if (!m_bChanged) + return; + + LTVector vTemp; + vTemp.Init(0.0f,0.0f,0.0f); + for (int i = 0; i < NUM_TINT_EFFECTS; i++) + { + vTemp.x = Max(vTemp.x,m_avTints[i].x); + vTemp.y = Max(vTemp.y,m_avTints[i].y); + vTemp.z = Max(vTemp.z,m_avTints[i].z); + } + + if (vTemp.x > 1.0f) + vTemp.x = 1.0f; + if (vTemp.y > 1.0f) + vTemp.y = 1.0f; + if (vTemp.z > 1.0f) + vTemp.z = 1.0f; + m_bChanged = LTFALSE; + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + g_pLTClient->SetCameraLightAdd(hCamera, &vTemp); + +} + +void CScreenTintMgr::Set(eTintEffect eEffect, LTVector *pvColor) +{ + m_bChanged = LTTRUE; + VEC_COPY(m_avTints[eEffect],*pvColor); +} + +void CScreenTintMgr::Clear(eTintEffect eEffect) +{ + m_bChanged = LTTRUE; + VEC_SET(m_avTints[eEffect],0.0f,0.0f,0.0f); +} + +void CScreenTintMgr::ClearAll() +{ + for (int i = 0; i < NUM_TINT_EFFECTS; i++) + { + Clear((eTintEffect)i); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ScreenTintMgr.h b/Jack/ClientShellDLL/ScreenTintMgr.h new file mode 100644 index 00000000..c904402c --- /dev/null +++ b/Jack/ClientShellDLL/ScreenTintMgr.h @@ -0,0 +1,47 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenTintMgr.h +// +// PURPOSE : Definition of ScreenTintMgr class +// +// CREATED : 02/02/00 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SCREENTINT_H +#define __SCREENTINT_H + +#include "ltbasedefs.h" + +enum eTintEffect +{ + TINT_DAMAGEFX = 0, + TINT_SPYVISION, + TINT_INK, + TINT_SCREEN_FLASH, + TINT_CONTAINER, + NUM_TINT_EFFECTS +}; + +class CScreenTintMgr +{ +public: + CScreenTintMgr(); + ~CScreenTintMgr(); + + void Update(); + + void Set(eTintEffect eEffect, LTVector *pvColor); + void Clear(eTintEffect eEffect); + + void ClearAll(); + +private: + LTVector m_avTints[NUM_TINT_EFFECTS]; + LTBOOL m_bChanged; +}; + + +#endif // __SCREENTINT_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/SearchLightFX.cpp b/Jack/ClientShellDLL/SearchLightFX.cpp new file mode 100644 index 00000000..a392689a --- /dev/null +++ b/Jack/ClientShellDLL/SearchLightFX.cpp @@ -0,0 +1,253 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SearchLightFX.cpp +// +// PURPOSE : SearchLight FX - Implementation +// +// CREATED : 6/8/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SearchLightFX.h" +#include "GameClientShell.h" +#include "ClientWeaponUtils.h" +#include "ClientButeMgr.h" + +extern CGameClientShell* g_pGameClientShell; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearchLightFX::Init +// +// PURPOSE: Init the search light +// +// ----------------------------------------------------------------------- // + +LTBOOL CSearchLightFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + SEARCHLIGHTCREATESTRUCT sl; + + sl.hServerObj = hServObj; + sl.fBeamLength = pMsg->Readfloat(); + sl.fBeamRadius = pMsg->Readfloat(); + sl.fBeamAlpha = pMsg->Readfloat(); + sl.fBeamRotTime = pMsg->Readfloat(); + sl.fLightRadius = pMsg->Readfloat(); + sl.bBeamAdditive = (LTBOOL) pMsg->Readuint8(); + sl.vLightColor = pMsg->ReadLTVector(); + + sl.lens.InitFromMessage(sl.lens, pMsg); + + // Should be between 0.0 and 1.0f... + + sl.vLightColor /= 255.0f; + + return Init(&sl); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearchLightFX::Init +// +// PURPOSE: Init the search light fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CSearchLightFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *((SEARCHLIGHTCREATESTRUCT*)psfxCreateStruct); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearchLightFX::CreateObject +// +// PURPOSE: Create the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CSearchLightFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !m_hServerObject) return LTFALSE; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + // Create the beam model... + + g_pLTClient->GetObjectPos(m_hServerObject, &(createStruct.m_Pos)); + createStruct.m_ObjectType = OT_MODEL; + + g_pClientButeMgr->GetSpecialFXAttributeString("SearchBeam",createStruct.m_Filename,sizeof(createStruct.m_Filename)); + if (!createStruct.m_Filename[0]) return LTFALSE; + + g_pClientButeMgr->GetSpecialFXAttributeString("SearchSkin0",createStruct.m_SkinNames[0],sizeof(createStruct.m_SkinNames[0])); + g_pClientButeMgr->GetSpecialFXAttributeString("SearchSkin1",createStruct.m_SkinNames[1],sizeof(createStruct.m_SkinNames[1])); + + g_pClientButeMgr->GetSpecialFXAttributeString("SearchRenderStyle0",createStruct.m_RenderStyleNames[0],sizeof(createStruct.m_RenderStyleNames[0])); + + + createStruct.m_Flags = FLAG_VISIBLE | FLAG_NOLIGHT; + createStruct.m_Flags2 = FLAG2_FORCETRANSLUCENT; + + m_hBeam = m_pClientDE->CreateObject(&createStruct); + if (!m_hBeam) return LTFALSE; + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_hBeam, &r, &g, &b, &a); + r = g = b = 1.0f; + m_pClientDE->SetObjectColor(m_hBeam, r, g, b, m_cs.fBeamAlpha); + + + // Create the dynamic light... + + if (m_cs.fLightRadius > 1.0f) + { + createStruct.m_ObjectType = OT_LIGHT; + createStruct.m_Flags = FLAG_VISIBLE | FLAG_DONTLIGHTBACKFACING; + + m_hLight = m_pClientDE->CreateObject(&createStruct); + if (!m_hLight) return LTFALSE; + + m_pClientDE->SetLightColor(m_hLight, m_cs.vLightColor.x, m_cs.vLightColor.y, m_cs.vLightColor.z); + m_pClientDE->SetLightRadius(m_hLight, m_cs.fLightRadius); + } + + + // Create the lens flare... + + LENSFLARECREATESTRUCT lens = m_cs.lens; + + lens.hServerObj = m_hServerObject; + lens.bInSkyBox = LTFALSE; + lens.bCreateSprite = LTTRUE; + lens.bSpriteOnly = LTTRUE; + lens.bUseObjectAngle = LTTRUE; + + if (!m_LensFlare.Init(&lens) || !m_LensFlare.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearchLightFX::Update +// +// PURPOSE: Update the lens flare fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CSearchLightFX::Update() +{ + if (!m_pClientDE || !m_hServerObject || m_bWantRemove || !m_hBeam) return LTFALSE; + + // Update the lens flare... + + m_LensFlare.Update(); + + // Hide/show the fx if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) // Hide fx + { + if (m_hBeam) + { + g_pCommonLT->SetObjectFlags(m_hBeam, OFT_Flags, 0, FLAG_VISIBLE); + } + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, 0, FLAG_VISIBLE); + } + + return LTTRUE; + } + else // Make all fx visible + { + if (m_hBeam) + { + g_pCommonLT->SetObjectFlags(m_hBeam, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + if (m_hLight) + { + g_pCommonLT->SetObjectFlags(m_hLight, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + } + + + // Update the position/rotation of the beam... + + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + + // See how long to make the beam... + + LTVector vDest = vPos + (rRot.Forward() * m_cs.fBeamLength); + + IntersectInfo iInfo; + IntersectQuery qInfo; + qInfo.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID; + qInfo.m_FilterFn = AttackerLiquidFilterFn; + qInfo.m_pUserData = m_hServerObject; + qInfo.m_From = vPos; + qInfo.m_To = vDest; + + if (g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + vDest = iInfo.m_Point; + } + + LTVector vDir = vDest - vPos; + LTFLOAT fDistance = vDir.Length(); + vDir.Normalize(); + + LTVector vNewPos = vPos + vDir * fDistance/2.0f; + rRot = LTRotation(vDir, LTVector(0.0f, 1.0f, 0.0f)); + + if (m_cs.fBeamRotTime > 0.0f) + { + m_fBeamRotation += (360.0f/m_cs.fBeamRotTime * g_pGameClientShell->GetFrameTime()); + m_fBeamRotation = m_fBeamRotation > 360.0f ? m_fBeamRotation - 360.0f : m_fBeamRotation; + rRot.Rotate(vDir, DEG2RAD(m_fBeamRotation)); + } + + g_pLTClient->SetObjectRotation(m_hBeam, &rRot); + g_pLTClient->SetObjectPos(m_hBeam, &vNewPos); + + + LTVector vScale(m_cs.fBeamRadius, m_cs.fBeamRadius, fDistance); + m_pClientDE->SetObjectScale(m_hBeam, &vScale); + + + // Move the dynamic light... + + if (m_hLight) + { + vDest -= (vDir * 5.0f); + g_pLTClient->SetObjectPos(m_hLight, &vDest); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/SearchLightFX.h b/Jack/ClientShellDLL/SearchLightFX.h new file mode 100644 index 00000000..441083f3 --- /dev/null +++ b/Jack/ClientShellDLL/SearchLightFX.h @@ -0,0 +1,88 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SearchLightFX.h +// +// PURPOSE : SearchLight special fx class - Definition +// +// CREATED : 6/8/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SEARCH_LIGHT_FX_H__ +#define __SEARCH_LIGHT_FX_H__ + +#include "SpecialFX.h" +#include "LensFlareFX.h" + +struct SEARCHLIGHTCREATESTRUCT : public SFXCREATESTRUCT +{ + SEARCHLIGHTCREATESTRUCT(); + + LTFLOAT fBeamLength; + LTFLOAT fBeamRadius; + LTFLOAT fBeamAlpha; + LTFLOAT fBeamRotTime; + LTFLOAT fLightRadius; + LTVector vLightColor; + LTBOOL bBeamAdditive; + + LENSFLARECREATESTRUCT lens; +}; + +inline SEARCHLIGHTCREATESTRUCT::SEARCHLIGHTCREATESTRUCT() +{ + fBeamLength = 0.0f; + fBeamRadius = 0.0f; + fBeamAlpha = 0.0f; + fBeamRotTime = 0.0f; + fLightRadius = 0.0f; + bBeamAdditive = LTTRUE; + vLightColor.Init(); +} + + +class CSearchLightFX : public CSpecialFX +{ + public : + + CSearchLightFX() : CSpecialFX() + { + m_hBeam = LTNULL; + m_hLight = LTNULL; + + m_fBeamRotation = 0.0f; + } + + ~CSearchLightFX() + { + if (m_hBeam) + { + m_pClientDE->RemoveObject(m_hBeam); + } + + if (m_hLight) + { + m_pClientDE->RemoveObject(m_hLight); + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_SEARCHLIGHT_ID; } + + protected : + + SEARCHLIGHTCREATESTRUCT m_cs; + HOBJECT m_hBeam; + HOBJECT m_hLight; + + LTFLOAT m_fBeamRotation; + CLensFlareFX m_LensFlare; +}; + +#endif // __SEARCH_LIGHT_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/Searcher.cpp b/Jack/ClientShellDLL/Searcher.cpp new file mode 100644 index 00000000..5d6cbe5e --- /dev/null +++ b/Jack/ClientShellDLL/Searcher.cpp @@ -0,0 +1,204 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : Searcher.cpp +// +// PURPOSE : Searcher implementation +// +// CREATED : 12/20/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + +#include "stdafx.h" +#include "MsgIDs.h" +#include "Searcher.h" +#include "PlayerMgr.h" +#include "TargetMgr.h" +#include "PlayerStats.h" +#include "GameClientShell.h" +#include "BodyFX.h" +#include "SearchItemMgr.h" + +extern VarTrack g_vtProgressBarScaleToSkills; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearcher::Update +// +// PURPOSE: Update the searcher... +// +// ----------------------------------------------------------------------- // + +void CSearcher::Update( ) +{ + // Are we actually searching something + if( !m_bSearching || !m_hTargetObj ) + { + return; + } + + HOBJECT hTarget = m_hTargetObj; + if (m_hTargetHitBox) + hTarget = m_hTargetHitBox; + HOBJECT hObj = g_pPlayerMgr->GetTargetMgr()->GetLockedTarget(); + + bool bLookingAtTarget = (hObj == hTarget); + bool bInRange = (g_pPlayerMgr->GetTargetMgr()->IsTargetInRange()); + + float fSearchSkillEffect = g_pPlayerStats->GetSkillModifier(SKL_SEARCH,SearchModifiers::eSearchSpeed); + + m_fTimer -= g_pLTClient->GetFrameTime() * fSearchSkillEffect; + if (m_fTimer < 0.0f) + m_fTimer = 0.0f; + + + bool bButtonDown = !!g_pLTClient->IsCommandOn( COMMAND_ID_ACTIVATE); + + // Do we still meet the requirements for searching? + if( m_fTimer <= 0.0f || !bButtonDown || !bLookingAtTarget || !bInRange ) + { + + // Send message to target with the amount of time left... + + CAutoMessage cMsg; + + cMsg.Writeuint8( MID_SEARCH ); + cMsg.WriteObject( m_hTargetObj ); + cMsg.Writefloat( m_fTimer); + g_pLTClient->SendToServer( cMsg.Read(), MESSAGE_GUARANTEED ); + + // Stop searching... + m_bSearching = false; + m_hTargetObj = LTNULL; + m_hTargetHitBox = LTNULL; + g_pPlayerMgr->GetTargetMgr()->LockTarget(NULL); + + // Let the progress bar hide it's self... + + if( !bButtonDown || !bLookingAtTarget || !bInRange ) + { + m_bShowTimeBar = false; + g_pPlayerStats->UpdateProgress( 0 ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + } + } + + // Get the percentage of searching we have done + + uint8 nMaxProgress = GetMaxProgress(); + uint8 nVal = uint8( ((m_fRemainingTime+m_fTimer) / m_fTotalTime) * nMaxProgress ); + + // Update the meter... + if( m_bShowTimeBar ) + { + // Show the progress bar... + + g_pPlayerStats->UpdateMaxProgress( g_vtProgressBarScaleToSkills.GetFloat() > 1.0f ? 100 : nMaxProgress ); + g_pPlayerStats->UpdateProgress( nVal ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + } + + if (!nVal) + { + g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\SearchComplete.wav", SOUNDPRIORITY_MISC_MEDIUM); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearcher::OnSearchMessage +// +// PURPOSE: Read in the search message and start searching +// +// ----------------------------------------------------------------------- // + +void CSearcher::OnSearchMessage( ILTMessage_Read *pMsg ) +{ + if( !pMsg ) return; + + uint8 nMsgType = pMsg->Readuint8(); + + switch (nMsgType) + { + case SEARCH_START: + { + // Read the data for searching... + m_hTargetObj = pMsg->ReadObject(); + m_fTotalTime = pMsg->Readfloat(); + m_fRemainingTime = pMsg->Readfloat(); + m_fTimer = pMsg->Readfloat(); + + if (m_fRemainingTime > m_fTimer) + m_fRemainingTime -= m_fTimer; + else + m_fRemainingTime = 0.0f; + + m_bShowTimeBar = (m_fTimer > 0.0f); + + // Start searching + + m_bSearching = true; + + //are we searching a body? if so, we have to jump through some hoops + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(m_hTargetObj); + if (pBody) + { + m_hTargetHitBox = pBody->GetHitBox(); + } + else + { + m_hTargetHitBox = LTNULL; + } + + if (m_hTargetHitBox) + g_pPlayerMgr->GetTargetMgr()->LockTarget(m_hTargetHitBox); + else + g_pPlayerMgr->GetTargetMgr()->LockTarget(m_hTargetObj); + + } break; + + case SEARCH_FOUND: + { + uint8 nFind = pMsg->Readuint8(); + uint8 nId = pMsg->Readuint8(); + + SEARCH_ITEM *pItem = g_pSearchItemMgr->GetItem(nId); + if (pItem) + { + + g_pPickupMsgs->AddMessage(LoadTempString(pItem->nTextId),pItem->szIcon); +// g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\SearchFind.wav", SOUNDPRIORITY_MISC_MEDIUM); + + } + + } break; + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSearcher::GetMaxProgress +// +// PURPOSE: Figure out the max allowable progress for the search bar... +// +// ----------------------------------------------------------------------- // + +uint8 CSearcher::GetMaxProgress() +{ + float fSearchSkillEffect = g_pPlayerStats->GetSkillModifier(SKL_SEARCH,SearchModifiers::eSearchSpeed); + + uint8 nMaxProgress = 100; + if( g_vtProgressBarScaleToSkills.GetFloat() > 0.0f ) + { + nMaxProgress = (fSearchSkillEffect > 0.0f ? uint8(100 / fSearchSkillEffect) : 0); + } + + return nMaxProgress; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/Searcher.h b/Jack/ClientShellDLL/Searcher.h new file mode 100644 index 00000000..a1fdfb94 --- /dev/null +++ b/Jack/ClientShellDLL/Searcher.h @@ -0,0 +1,52 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : Searcher.h +// +// PURPOSE : The Searcher object +// +// CREATED : 12/20/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SEARCHER_H__ +#define __SEARCHER_H__ + +class CSearcher +{ + public : // Methods... + + CSearcher( ) + : m_hTargetObj ( LTNULL ), + m_hTargetHitBox ( LTNULL ), + m_bShowTimeBar ( true ), + m_bSearching ( false ), + m_fTotalTime ( 0.0f ), + m_fRemainingTime ( 0.0f ), + m_fTimer ( 0.0f ) + { + + } + + ~CSearcher( ) {} + + void Update( ); + void OnSearchMessage( ILTMessage_Read *pMsg ); + + bool IsSearching() {return (m_bSearching && m_hTargetObj);} + + uint8 GetMaxProgress(); + + protected : // Members... + + HOBJECT m_hTargetObj; + HOBJECT m_hTargetHitBox; + bool m_bShowTimeBar; + bool m_bSearching; + float m_fTotalTime; + float m_fRemainingTime; + float m_fTimer; +}; + +#endif // __SEARCHER_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SharedDefs.h b/Jack/ClientShellDLL/SharedDefs.h new file mode 100644 index 00000000..24ed6ed9 --- /dev/null +++ b/Jack/ClientShellDLL/SharedDefs.h @@ -0,0 +1,21 @@ +#ifndef __SHAREDEFS_H__ +#define __SHAREDEFS_H__ + +// Various useful defines + + +#define PI (LTFLOAT)3.14159 +#define PIx2 (LTFLOAT)PI*2 +#define DEG2RAD(x) ((x*PI)/180) +#define RAD2DEG(x) ((x*180)/PI) + +#define VEC_EQU(v1, v2) (v1.x == v2.x && v1.y == v2.y && v1.z == v2.z) +#define ROTN_EQU(r1, r2) (VEC_EQU(r1.m_Vec, r2.m_Vec) && r1.m_Spin == r2.m_Spin) +#define ROTN_SUB(d, r1, r2) VEC_SUB(d.m_Vec, r1.m_Vec, r2.m_Vec); d.m_Spin = r1.m_Spin - r2.m_Spin; +#define ROTN_ADD(d, r1, r2) VEC_ADD(d.m_Vec, r1.m_Vec, r2.m_Vec); d.m_Spin = r1.m_Spin + r2.m_Spin; + + +#define CLIPLOWHIGH(x,l,h) if (x < l) x = l; if (x > h) x = h; + + +#endif // __SHAREDEFS_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/ShellCasingFX.cpp b/Jack/ClientShellDLL/ShellCasingFX.cpp new file mode 100644 index 00000000..783067ae --- /dev/null +++ b/Jack/ClientShellDLL/ShellCasingFX.cpp @@ -0,0 +1,389 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SHELLCASINGFX.CPP +// +// PURPOSE : defines class for ejected shells +// +// CREATED : 5/1/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// Includes.... + +#include "stdafx.h" +#include "ShellCasingFX.h" +#include "iltclient.h" +#include "ltlink.h" +#include "ClientUtilities.h" +#include "WeaponMgr.h" +#include "GameClientShell.h" +#include "ClientWeaponUtils.h" +#include "SurfaceFunctions.h" +#include "VarTrack.h" +#include "FXButeMgr.h" + + +VarTrack g_vtShellMaxBounceCountTrack; +VarTrack g_vtShellMinUpVelocity; +VarTrack g_vtShellMaxUpVelocity; +VarTrack g_vtShellMinRightVelocity; +VarTrack g_vtShellMaxRightVelocity; +VarTrack g_vtShellMinForwardVelocity; +VarTrack g_vtShellMaxForwardVelocity; +VarTrack g_vtShellMinLifetime; +VarTrack g_vtShellMaxLifetime; +VarTrack g_vtShellScaleTime; +VarTrack g_vtShellMaxScale; +VarTrack g_vtShellMinSpinsPerSecond; +VarTrack g_vtShellMaxSpinsPerSecond; + +#define MAX_BOUNCE_COUNT 3 + +extern PhysicsState g_normalPhysicsState; +extern PhysicsState g_waterPhysicsState; + +//------------------------------------------------------------------------- +// Utility functions +//------------------------------------------------------------------------- + +// this function will return a random value that can be used for a random +// pitch/yaw velocity +float GenerateRandomVelocity() +{ + //find a random number between that range + float fRand = GetRandom(g_vtShellMinSpinsPerSecond.GetFloat(), g_vtShellMaxSpinsPerSecond.GetFloat()); + + + //scale it to be either positive or negative + if(rand() % 2 == 0) + fRand = -fRand; + + //now map it into rotations + return /*MATH_CIRCLE * */ fRand; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CShellCasingFX::CShellCasingFX +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +CShellCasingFX::CShellCasingFX() +{ + m_rRot.Init(); + m_vStartPos.Init(); + m_vStartVel.Init(); + m_nWeaponId = WMGR_INVALID_ID; + m_nAmmoId = WMGR_INVALID_ID; + m_b3rdPerson = LTFALSE; + m_fPitchVel = 0.0f; + m_fYawVel = 0.0f; + m_fPitch = 0.0f; + m_fYaw = 0.0f; + + m_vInitialScale.Init(1.0f, 1.0f, 1.0f); + m_vFinalScale.Init(1.0f, 1.0f, 1.0f); + + m_dwFlags = FLAG_VISIBLE; // | FLAG_NOLIGHT; + m_fDieTime = 15.0f; + m_bResting = LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CShellCasingFX::Init +// +// PURPOSE: Create the shell casing +// +// ----------------------------------------------------------------------- // + +LTBOOL CShellCasingFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!psfxCreateStruct) return LTFALSE; + + CSpecialFX::Init(psfxCreateStruct); + + SHELLCREATESTRUCT* pShell = (SHELLCREATESTRUCT*)psfxCreateStruct; + + m_rRot = pShell->rRot; + m_vStartPos = pShell->vStartPos; + m_nWeaponId = pShell->nWeaponId; + m_nAmmoId = pShell->nAmmoId; + m_dwFlags |= pShell->dwFlags; + m_vStartVel = pShell->vStartVel; + m_b3rdPerson = pShell->b3rdPerson; + + m_vInitialScale.Init(1.0f, 1.0f, 1.0f); + m_vFinalScale.Init(1.0f, 1.0f, 1.0f); + + if (!g_vtShellMaxBounceCountTrack.IsInitted()) + { + g_vtShellMaxBounceCountTrack.Init(g_pLTClient, "ShellMaxBounceCount", NULL, 3.0); + } + if (!g_vtShellMinUpVelocity.IsInitted()) + { + g_vtShellMinUpVelocity.Init(g_pLTClient, "ShellMinUpVelocity", NULL, 30.0f); + } + if (!g_vtShellMaxUpVelocity.IsInitted()) + { + g_vtShellMaxUpVelocity.Init(g_pLTClient, "ShellMaxUpVelocity", NULL, 75.0f); + } + if (!g_vtShellMinRightVelocity.IsInitted()) + { + g_vtShellMinRightVelocity.Init(g_pLTClient, "ShellMinRightVelocity", NULL, 50.0f); + } + if (!g_vtShellMaxRightVelocity.IsInitted()) + { + g_vtShellMaxRightVelocity.Init(g_pLTClient, "ShellMaxRightVelocity", NULL, 75.0f); + } + if (!g_vtShellMinForwardVelocity.IsInitted()) + { + g_vtShellMinForwardVelocity.Init(g_pLTClient, "ShellMinForwardVelocity", NULL, 20.0f); + } + if (!g_vtShellMaxForwardVelocity.IsInitted()) + { + g_vtShellMaxForwardVelocity.Init(g_pLTClient, "ShellMaxForwardVelocity", NULL, 50.0f); + } + if (!g_vtShellMinLifetime.IsInitted()) + { + g_vtShellMinLifetime.Init(g_pLTClient, "ShellMinLifetime", NULL, 10.0f); + } + if (!g_vtShellMaxLifetime.IsInitted()) + { + g_vtShellMaxLifetime.Init(g_pLTClient, "ShellMaxLifetime", NULL, 15.0f); + } + if (!g_vtShellScaleTime.IsInitted()) + { + g_vtShellScaleTime.Init(g_pLTClient, "ShellScaleTime", NULL, 0.5f); + } + if (!g_vtShellMaxScale.IsInitted()) + { + g_vtShellMaxScale.Init(g_pLTClient, "ShellMaxScale", NULL, 2.0f); + } + if (!g_vtShellMinSpinsPerSecond.IsInitted()) + { + g_vtShellMinSpinsPerSecond.Init(g_pLTClient, "ShellMinSpinsPerSecond", NULL, 2.0f); + } + if (!g_vtShellMaxSpinsPerSecond.IsInitted()) + { + g_vtShellMaxSpinsPerSecond.Init(g_pLTClient, "ShellMaxSpinsPerSecond", NULL, 10.0f); + } + + m_nBounceCount = (int)g_vtShellMaxBounceCountTrack.GetFloat(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CShellCasingFX::CreateObject +// +// PURPOSE: Create the model associated with the shell +// +// ----------------------------------------------------------------------- // + +LTBOOL CShellCasingFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + // Setup the shell... + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(m_nAmmoId); + if (!pAmmo || !pAmmo->pFireFX) return LTFALSE; + + ObjectCreateStruct createStruct; + INIT_OBJECTCREATESTRUCT(createStruct); + + SAFE_STRCPY(createStruct.m_Filename, pAmmo->pFireFX->szShellModel); + SAFE_STRCPY(createStruct.m_SkinName, pAmmo->pFireFX->szShellSkin); + + m_vInitialScale = pAmmo->pFireFX->vShellScale; + m_vFinalScale = (m_vInitialScale * g_vtShellMaxScale.GetFloat()); + + createStruct.m_ObjectType = OT_MODEL; + createStruct.m_Flags = m_dwFlags; + createStruct.m_Pos = m_vStartPos; + createStruct.m_Rotation = m_rRot; + + m_hObject = m_pClientDE->CreateObject(&createStruct); + if (!m_hObject) return LTFALSE; + + m_pClientDE->SetObjectScale(m_hObject, &m_vInitialScale); + + // User camera rotation if not 3rd person ;) + + if (!m_b3rdPerson) + { + g_pPlayerMgr->GetCameraRotation(m_rRot); + } + + m_vStartVel += (m_rRot.Up() * GetRandom(g_vtShellMinUpVelocity.GetFloat(), g_vtShellMaxUpVelocity.GetFloat())); + m_vStartVel += (m_rRot.Right() * GetRandom(g_vtShellMinRightVelocity.GetFloat(), g_vtShellMaxRightVelocity.GetFloat())); + m_vStartVel += (m_rRot.Forward() * GetRandom(g_vtShellMinForwardVelocity.GetFloat(), g_vtShellMaxForwardVelocity.GetFloat())); + + InitMovingObject(&m_movingObj, m_vStartPos, m_vStartVel);; + + m_fElapsedTime = 0.0f; + m_fDieTime = GetRandom(g_vtShellMinLifetime.GetFloat(), g_vtShellMaxLifetime.GetFloat()); + + m_fPitchVel = GenerateRandomVelocity(); + m_fYawVel = GenerateRandomVelocity(); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CShellCasingFX::Update +// +// PURPOSE: Update the shell +// +// ----------------------------------------------------------------------- // + +LTBOOL CShellCasingFX::Update() +{ + if (!m_hObject || !m_pClientDE) return LTFALSE; + + if (g_pGameClientShell->IsServerPaused()) + { + return LTTRUE; + } + + m_fElapsedTime += g_pGameClientShell->GetFrameTime(); + m_fDieTime -= g_pGameClientShell->GetFrameTime(); + + if (m_fDieTime <= 0.0f) return LTFALSE; + + // Update object scale if necessary... + + LTVector vScale; + m_pClientDE->GetObjectScale(m_hObject, &vScale); + + if (vScale != m_vFinalScale) + { + if (m_fElapsedTime <= g_vtShellScaleTime.GetFloat()) + { + LTVector vScaleRange = (m_vFinalScale - m_vInitialScale); + + vScale = m_vInitialScale + (vScaleRange * (m_fElapsedTime/g_vtShellScaleTime.GetFloat())); + + if (vScale > m_vFinalScale) + { + vScale = m_vFinalScale; + } + + m_pClientDE->SetObjectScale(m_hObject, &vScale); + } + else + { + m_pClientDE->SetObjectScale(m_hObject, &m_vFinalScale); + } + } + + if (m_bResting) return LTTRUE; + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hObject, &rRot); + + // If velocity slows enough, and we're on the ground, just stop bouncing and just wait to expire. + + if (m_movingObj.m_dwPhysicsFlags & MO_RESTING) + { + m_bResting = LTTRUE; + + // Stop the spinning... + + rRot.Rotate(rRot.Up(), m_fYaw); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + + // Shell is at rest, we can add a check here to see if we really want + // to keep it around depending on detail settings... + + //HLOCALOBJ hObjs[1]; + //uint32 nNumFound, nBogus; + //m_pClientDE->FindObjectsInSphere(&m_movingObj.m_vPos, 64.0f, hObjs, 1, &nBogus, &nNumFound); + + // Remove thyself... + //if (nNumFound > 15) return LTFALSE; + } + else + { + if (m_fPitchVel != 0 || m_fYawVel != 0) + { + LTFLOAT fDeltaTime = g_pGameClientShell->GetFrameTime(); + + m_fPitch += m_fPitchVel * fDeltaTime; + m_fYaw += m_fYawVel * fDeltaTime; + + rRot.Rotate(rRot.Up(), m_fYaw); + rRot.Rotate(rRot.Right(), m_fPitch); + g_pLTClient->SetObjectRotation(m_hObject, &rRot); + } + } + + + LTVector vNewPos; + if (UpdateMovingObject(LTNULL, &m_movingObj, vNewPos)) + { + ClientIntersectInfo info; + LTBOOL bBouncedOnGround = LTFALSE; + if (BounceMovingObject(LTNULL, &m_movingObj, vNewPos, &info, + INTERSECT_HPOLY, true, bBouncedOnGround)) + { + // If we hit the sky/invisible surface we're done... + + SurfaceType eType = GetSurfaceType(info); + if (eType == ST_SKY || eType == ST_INVISIBLE) + { + return LTFALSE; + } + + if (m_nBounceCount >= MAX_BOUNCE_COUNT) + { + if (!(m_movingObj.m_dwPhysicsFlags & MO_LIQUID)) + { + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(eType); + if (pSurf) + { + // Play appropriate sound... + + if (pSurf->szShellImpactSnds[0]) + { + g_pClientSoundMgr->PlaySoundFromPos(vNewPos, pSurf->szShellImpactSnds[0], pSurf->fShellSndRadius, + SOUNDPRIORITY_MISC_LOW); + } + } + } + } + + // Adjust the bouncing.. + + m_fPitchVel *= 0.75f; + m_fYawVel *= -0.75f; + + m_nBounceCount--; + + if (m_nBounceCount <= 0) + { + m_movingObj.m_dwPhysicsFlags |= MO_RESTING; + } + } + + m_movingObj.m_vPos = vNewPos; + + if (g_pCommonLT->GetPointStatus(&vNewPos) == LT_OUTSIDE) + { + return LTFALSE; + } + + g_pLTClient->SetObjectPos(m_hObject, &vNewPos); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/ShellCasingFX.h b/Jack/ClientShellDLL/ShellCasingFX.h new file mode 100644 index 00000000..f31816df --- /dev/null +++ b/Jack/ClientShellDLL/ShellCasingFX.h @@ -0,0 +1,85 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SHELLCASINGFX.H +// +// PURPOSE : defines class for ejected shells +// +// CREATED : 5/1/98 +// +// (c) 1998-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SHELLCASING_FX_H__ +#define __SHELLCASING_FX_H__ + +#include "SpecialFX.h" +#include "ltlink.h" +#include "client_physics.h" + + +struct SHELLCREATESTRUCT : public SFXCREATESTRUCT +{ + SHELLCREATESTRUCT(); + + LTRotation rRot; + LTVector vStartPos; + LTVector vStartVel; + uint8 nWeaponId; + uint8 nAmmoId; + uint32 dwFlags; + LTBOOL b3rdPerson; +}; + +inline SHELLCREATESTRUCT::SHELLCREATESTRUCT() +{ + rRot.Init(); + vStartPos.Init(); + vStartVel.Init(); + nWeaponId = 0; + nAmmoId = 0; + dwFlags = 0; + b3rdPerson = LTFALSE; +} + +class CShellCasingFX : public CSpecialFX +{ + public : + + CShellCasingFX(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_SHELLCASING_ID; } + + private: + + LTVector m_vStartVel; + + LTFLOAT m_fPitchVel; + LTFLOAT m_fYawVel; + LTFLOAT m_fPitch; + LTFLOAT m_fYaw; + + int m_nBounceCount; + + LTRotation m_rRot; + LTVector m_vStartPos; + uint8 m_nWeaponId; + uint8 m_nAmmoId; + LTBOOL m_bResting; + uint32 m_dwFlags; + LTBOOL m_b3rdPerson; + + LTFLOAT m_fDieTime; + LTFLOAT m_fElapsedTime; + LTVector m_vInitialScale; + LTVector m_vFinalScale; + + MovingObject m_movingObj; +}; + + +#endif // __SHELLCASING_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SmokeFX.cpp b/Jack/ClientShellDLL/SmokeFX.cpp new file mode 100644 index 00000000..0b31439c --- /dev/null +++ b/Jack/ClientShellDLL/SmokeFX.cpp @@ -0,0 +1,205 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SmokeFX.cpp +// +// PURPOSE : Smoke special FX - Implementation +// +// CREATED : 3/2/98 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SmokeFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ClientServerShared.h" + +extern LTVector g_vWorldWindVel; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSmokeFX::Init +// +// PURPOSE: Init the smoke trail +// +// ----------------------------------------------------------------------- // + +LTBOOL CSmokeFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CBaseParticleSystemFX::Init(psfxCreateStruct)) return LTFALSE; + + m_pTextureName = "SFX\\Particle\\Smoke1.dtx"; + + SMCREATESTRUCT* pSM = (SMCREATESTRUCT*)psfxCreateStruct; + + m_dwFlags = pSM->dwSystemFlags; + + m_vPos = pSM->vPos; + m_vColor1 = pSM->vColor1; + m_vColor2 = pSM->vColor1; + m_vMinDriftVel = pSM->vMinDriftVel; + m_vMaxDriftVel = pSM->vMaxDriftVel; + m_fVolumeRadius = pSM->fVolumeRadius; + m_fLifeTime = pSM->fLifeTime; + m_fRadius = pSM->fRadius; + m_fParticleCreateDelta = pSM->fParticleCreateDelta; + m_fMinParticleLife = pSM->fMinParticleLife; + m_fMaxParticleLife = pSM->fMaxParticleLife; + m_nNumParticles = pSM->nNumParticles; + m_bIgnoreWind = pSM->bIgnoreWind; + m_hstrTexture = pSM->hstrTexture; + + //reset our elapsed time, and our emission time + m_fElapsedTime = 0.0f; + m_fElapsedEmissionTime = m_fParticleCreateDelta; + + m_fGravity = 0.0f; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSmokeFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CSmokeFX::CreateObject(ILTClient *pClientDE) +{ + if (!pClientDE ) return LTFALSE; + + if (m_hstrTexture) + { + m_pTextureName = pClientDE->GetStringData(m_hstrTexture); + } + + LTBOOL bRet = CBaseParticleSystemFX::CreateObject(pClientDE); + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSmokeFX::Update +// +// PURPOSE: Update the smoke +// +// ----------------------------------------------------------------------- // + +LTBOOL CSmokeFX::Update() +{ + if (!m_hObject || !m_pClientDE ) return LTFALSE; + + if( g_pGameClientShell->IsServerPaused() ) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_PAUSED, FLAG_PAUSED); + return LTTRUE; + } + + //make sure we aren't paused + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_PAUSED); + + LTFLOAT fFrameTime = m_pClientDE->GetFrameTime(); + + m_fElapsedTime += fFrameTime; + m_fElapsedEmissionTime += fFrameTime; + + // Hide/show the particle system if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(m_hObject, OFT_Flags, dwFlags); + + // Once last puff as disappeared, hide the system (no new puffs + // will be added...) + + if (dwFlags & FLAG_VISIBLE) + { + if (m_fElapsedEmissionTime > m_fMaxParticleLife) + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, 0, FLAG_VISIBLE); + } + } + else + { + m_fElapsedEmissionTime = 0.0f; + } + + return LTTRUE; + } + else + { + g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + } + + + + // Check to see if we should just wait for last smoke puff to go away... + + if (m_fElapsedTime > m_fLifeTime) + { + if (m_fElapsedEmissionTime > m_fMaxParticleLife) + { + return LTFALSE; + } + + return LTTRUE; + } + + + // See if it is time to add some more smoke... + + if (m_fElapsedEmissionTime >= m_fParticleCreateDelta) + { + LTVector vDriftVel, vColor, vPos; + + // What is the range of colors? + + LTFLOAT fRange = m_vColor2.x - m_vColor1.x; + + + // Determine how many particles to add... + + int nNumParticles = GetNumParticles(m_nNumParticles); + + // Build the individual smoke puffs... + + for (int j=0; j < nNumParticles; j++) + { + VEC_SET(vPos, GetRandom(-m_fVolumeRadius, m_fVolumeRadius), + -2.0f, GetRandom(-m_fVolumeRadius, m_fVolumeRadius)); + + VEC_SET(vDriftVel, + GetRandom(m_vMinDriftVel.x, m_vMaxDriftVel.x), + GetRandom(m_vMinDriftVel.y, m_vMaxDriftVel.y), + GetRandom(m_vMinDriftVel.z, m_vMaxDriftVel.z)); + + if (!m_bIgnoreWind) + { + VEC_ADD(vDriftVel, vDriftVel, g_vWorldWindVel); + } + + GetRandomColorInRange(vColor); + + LTFLOAT fLifeTime = GetRandom(m_fMinParticleLife, m_fMaxParticleLife); + + vDriftVel -= (m_vVel * 0.1f); + + m_pClientDE->AddParticle(m_hObject, &vPos, &vDriftVel, &vColor, fLifeTime); + } + + m_fElapsedEmissionTime = 0.0f; + } + + + return CBaseParticleSystemFX::Update(); +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/SmokeFX.h b/Jack/ClientShellDLL/SmokeFX.h new file mode 100644 index 00000000..380bbab6 --- /dev/null +++ b/Jack/ClientShellDLL/SmokeFX.h @@ -0,0 +1,108 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SmokeFX.h +// +// PURPOSE : Smoke special fx class - Definition +// +// CREATED : 12/15/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __SMOKE_FX_H__ +#define __SMOKE_FX_H__ + +#include "BaseParticleSystemFX.h" + + +struct SMCREATESTRUCT : public BPSCREATESTRUCT +{ + SMCREATESTRUCT(); + + LTVector vPos; + LTVector vColor1; + LTVector vColor2; + LTVector vMinDriftVel; + LTVector vMaxDriftVel; + LTFLOAT fLifeTime; + LTFLOAT fVolumeRadius; + LTFLOAT fRadius; + LTFLOAT fParticleCreateDelta; + LTFLOAT fMinParticleLife; + LTFLOAT fMaxParticleLife; + uint8 nNumParticles; + uint32 dwSystemFlags; + LTBOOL bIgnoreWind; + HSTRING hstrTexture; +}; + +inline SMCREATESTRUCT::SMCREATESTRUCT() +{ + vPos.Init(); + vColor1.Init(); + vColor2.Init(); + vMinDriftVel.Init(); + vMaxDriftVel.Init(); + fLifeTime = 0.0f; + fVolumeRadius = 0.0f; + fRadius = 0.0f; + fParticleCreateDelta = 0.0f; + fMinParticleLife = 0.0f; + fMaxParticleLife = 0.0f; + nNumParticles = 0; + dwSystemFlags = 0; + bIgnoreWind = LTFALSE; + hstrTexture = LTNULL; +} + +class CSmokeFX : public CBaseParticleSystemFX +{ + public : + + CSmokeFX() : CBaseParticleSystemFX() + { + m_vMinDriftVel.Init(); + m_vMaxDriftVel.Init(); + m_fElapsedTime = 0.0f; + m_fElapsedEmissionTime = 0.0f; + m_fVolumeRadius = 0.0f; + m_fLifeTime = 0.0f; + m_fParticleCreateDelta = 0.0f; + m_nNumParticles = 5; + m_fMinParticleLife = 5.0f; + m_fMaxParticleLife = 10.0f; + m_bIgnoreWind = LTFALSE; + m_hstrTexture = LTNULL; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + inline void SetDriftVel(LTVector vMinVel, LTVector vMaxVel) + { + m_vMinDriftVel = vMinVel; + m_vMaxDriftVel = vMaxVel; + } + + virtual uint32 GetSFXID() { return SFX_SMOKE_ID; } + + private : + + LTFLOAT m_fVolumeRadius; // Radius of smoke volume + LTFLOAT m_fLifeTime; // How long each particle stays around + LTFLOAT m_fElapsedTime; // How much time has elapsed on this system + LTFLOAT m_fElapsedEmissionTime; // How much time has passed since we last emitted particles + + LTVector m_vMinDriftVel; // Min Drift velocity + LTVector m_vMaxDriftVel; // Max Drift velocity + + LTFLOAT m_fParticleCreateDelta; // How often we create smoke particles + uint8 m_nNumParticles; // Number we create every delta + LTFLOAT m_fMaxParticleLife; // Maximum lifetime of a particle + LTFLOAT m_fMinParticleLife; // Minimum lifetime of a particle + HSTRING m_hstrTexture; // Texture to sprite to use + + LTBOOL m_bIgnoreWind; // Ignore world wind +}; + +#endif // __SMOKE_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SnowFX.cpp b/Jack/ClientShellDLL/SnowFX.cpp new file mode 100644 index 00000000..57e2d709 --- /dev/null +++ b/Jack/ClientShellDLL/SnowFX.cpp @@ -0,0 +1,1042 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SnowFX.cpp +// +// PURPOSE : Snow special FX - Implementation +// +// CREATED : 1/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SnowFX.h" +#include "iltclient.h" +#include "GameClientShell.h" + + +//#define SNOWFX_PROFILE_ACTIVATION // if defined, airspace activation times will be displayed in the console + + +extern CGameClientShell* g_pGameClientShell; + + +// console variables +VarTrack g_cvarSnowEnable; // false will totally disable snow (deactivating all airspaces) +VarTrack g_cvarSnowDensityScale; // how much to scale the snow density by +VarTrack g_cvarSnowParticleScale; // how much to scale each snow particle by + + +// initialize the static particle manager +CSnowFXParticleMgr CSnowFX::m_ParticleMgr; + +bool CSnowFXAirspace::tableInit = false; +float CSnowFXAirspace::sinTable[]; +uint32 CSnowFXAirspace::rndTable[]; +std::list CSnowFX::freeEffects; + + +struct DynamicParticleVertex +{ + float x, y, z; + uint32 color; + float u, v; +}; + + +struct DynamicParticleLightingData +{ + LTVector pos; // position to sample lights at + uint32 alpha; // alpha is at 0xff000000 + LTVector acc; // accumulated light color, game code should clear or initialize this (for ambient, etc.) +}; + + + +CSnowFX::CSnowFX() : CSpecialFX() +{ + VEC_INIT( m_vDims ); + m_fDensity = 512.0f; + m_fParticleRadius = 1.0f * 2.0f; + m_fFallRate = 80.0f; + m_fTumbleRate = 180.0f / 360.0f; + m_fTumbleRadius = 5.0f; + m_fMaxDrawDist = 1024.0f; + m_fMaxDrawDistSq = 1024.0f * 1024.0f; + m_nAmbientColor = 0x00ffffff; + m_bUseLighting = false; + m_bUseSaturate = true; + m_hstrTextureName = LTNULL; + m_bOn = true; + m_bUseCycling = false; + + m_nInternalTime = 0; + + m_nNumAirspaces = 0; + m_pAirspaces = NULL; + + m_bEnabled = true; + m_fDensityScale = 1.0f; + m_fParticleSizeScale = 1.0f; + + m_fLowestParticleY = 0.0f; + + // allocate a few particles now just to initialize the table so we don't get a possible framerate hitch later + CSnowFXParticle* tmpParticles; + if( m_ParticleMgr.AllocateParticles( 10, tmpParticles ) ) + m_ParticleMgr.FreeParticles( tmpParticles ); +} + + +CSnowFX::~CSnowFX() +{ + if( m_hstrTextureName && m_pClientDE ) + { + m_pClientDE->FreeString( m_hstrTextureName ); + } + + debug_deletea( m_pAirspaces ); + + for( std::list::iterator objIt = freeEffects.begin(); objIt != freeEffects.end(); objIt++ ) + { + ASSERT( *objIt ); + m_pClientDE->RemoveObject( *objIt ); + } + + freeEffects.clear(); +} + + +LTBOOL CSnowFX::Init( SFXCREATESTRUCT* psfxCreateStruct ) +{ + if( !psfxCreateStruct ) + return LTFALSE; + + CSpecialFX::Init( psfxCreateStruct ); + + SNOWCREATESTRUCT* cs = (SNOWCREATESTRUCT*)psfxCreateStruct; + + m_vDims = cs->vDims; + m_fDensity = cs->fDensity; + m_fParticleRadius = cs->fParticleRadius * 2.0f; + m_fFallRate = cs->fFallRate; + m_fTumbleRate = cs->fTumbleRate / 360.0f; + m_fTumbleRadius = cs->fTumbleRadius; + m_fMaxDrawDist = cs->fMaxDrawDist; + m_fMaxDrawDistSq = m_fMaxDrawDist * m_fMaxDrawDist; + m_vAmbientColor = cs->vAmbientColor; + m_nAmbientColor = (uint32(m_vAmbientColor.x) & 0xff) << 16; + m_nAmbientColor |= (uint32(m_vAmbientColor.y) & 0xff) << 8; + m_nAmbientColor |= (uint32(m_vAmbientColor.z) & 0xff); + m_bUseLighting = cs->bUseLighting; + m_bUseSaturate = cs->bUseSaturate; + m_hstrTextureName = cs->hstrTextureName; + m_bOn = cs->bOn; + + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + + m_fLowestParticleY = pos.y + m_vDims.y; + + // setup console variables + if( !g_cvarSnowEnable.IsInitted() ) + g_cvarSnowEnable.Init( g_pLTClient, "SnowEnable", LTNULL, 1.0f ); + if( !g_cvarSnowDensityScale.IsInitted() ) + g_cvarSnowDensityScale.Init( g_pLTClient, "SnowDensityScale", LTNULL, 1.0f ); + if( !g_cvarSnowParticleScale.IsInitted() ) + g_cvarSnowParticleScale.Init( g_pLTClient, "SnowParticleScale", LTNULL, 1.0f ); + + return LTTRUE; +} + + +LTBOOL CSnowFX::CreateObject( ILTClient* pClientDE ) +{ + if( !CSpecialFX::CreateObject( pClientDE ) ) + return LTFALSE; + + m_hObject = LTNULL; + + // get the bounds for this snow volume + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + LTVector min = pos - m_vDims; + LTVector size = m_vDims * 2.0f; + m_vMinBounds = pos - m_vDims; + m_vMaxBounds = pos + m_vDims; + + // determine how many airspaces it will divide into + uint32 numXAirspaces = (uint32)((m_vDims.x * 2.0f) / SNOWFX_AIRSPACEDIMS) + 1; + uint32 numZAirspaces = (uint32)((m_vDims.z * 2.0f) / SNOWFX_AIRSPACEDIMS) + 1; + + // don't add sliver airspaces on boundaries + if( fmod( (m_vDims.x * 2.0f), SNOWFX_AIRSPACEDIMS ) < 1.0f ) + numXAirspaces--; + if( fmod( (m_vDims.z * 2.0f), SNOWFX_AIRSPACEDIMS ) < 1.0f ) + numZAirspaces--; + + m_nNumAirspaces = numXAirspaces * numZAirspaces; + + // create the airspaces + if( m_nNumAirspaces ) + m_pAirspaces = debug_newa( CSnowFXAirspace, m_nNumAirspaces ); + + // intialize each airspace with it's position and size + float remainingZSize = size.z; + float curZMin = min.z; + + for( uint32 z = 0; z < numZAirspaces; z++ ) + { + float curZSize = remainingZSize; + if( curZSize >= SNOWFX_AIRSPACEDIMS ) + { + curZSize = SNOWFX_AIRSPACEDIMS; + remainingZSize -= SNOWFX_AIRSPACEDIMS; + } + curZSize *= 0.5f; + + float remainingXSize = size.x; + float curXMin = min.x; + + for( uint32 x = 0; x < numXAirspaces; x++ ) + { + float curXSize = remainingXSize; + if( curXSize >= SNOWFX_AIRSPACEDIMS ) + { + curXSize = SNOWFX_AIRSPACEDIMS; + remainingXSize -= SNOWFX_AIRSPACEDIMS; + } + curXSize *= 0.5f; + + LTVector curPos; + curPos.x = curXMin + curXSize; + curPos.y = pos.y; + curPos.z = curZMin + curZSize; + + LTVector curDims; + curDims.x = curXSize; + curDims.y = m_vDims.y; + curDims.z = curZSize; + + m_pAirspaces[numXAirspaces*z + x].Init( this, curPos, curDims ); + + curXMin += SNOWFX_AIRSPACEDIMS; + } + + curZMin += SNOWFX_AIRSPACEDIMS; + } + + return LTTRUE; +} + + +LTBOOL CSnowFX::Update( void ) +{ + if( !m_pClientDE || !m_hServerObject ) + return LTFALSE; + + if( m_bWantRemove ) + return LTFALSE; + + // check if snow should be enabled + m_bEnabled = g_cvarSnowEnable.GetFloat() > 0.0f; + + // update the density scale if needed + float tmpDensityScale = g_cvarSnowDensityScale.GetFloat(); + if( tmpDensityScale < 0.0f ) + tmpDensityScale = 0.0f; + if( tmpDensityScale != m_fDensityScale ) + { + m_fDensityScale = tmpDensityScale; + for( uint32 i = 0; i < m_nNumAirspaces; i++ ) + { + m_pAirspaces[i].UpdateDensity(); + } + } + + // update the particle radius scale + m_fParticleSizeScale = g_cvarSnowParticleScale.GetFloat(); + + // update our internal clock (since floats blow out over time) + if(!g_pGameClientShell->IsServerPaused()) + m_nInternalTime += (uint32)(10000.0f * g_pGameClientShell->GetFrameTime()); + + if( !UpdateAirspaces() ) + return LTFALSE; + + return LTTRUE; +} + + +// returns the minimum squared distance to an AABB (0 if pos is inside the AABB) +static inline float DistSqToAABB( const LTVector& pos, const LTVector& min, const LTVector& max ) +{ + float distance = 0.0f; + + if( pos.x < min.x ) + { + float tmp = pos.x - min.x; + distance = tmp * tmp; + } + else if( pos.x > max.x ) + { + float tmp = pos.x - max.x; + distance = tmp * tmp; + } + + if( pos.y < min.y ) + { + float tmp = pos.y - min.y; + distance += tmp * tmp; + } + else if( pos.y > max.y ) + { + float tmp = pos.y - max.y; + distance += tmp * tmp; + } + + if( pos.z < min.z ) + { + float tmp = pos.z - min.z; + distance += tmp * tmp; + } + else if( pos.z > max.z ) + { + float tmp = pos.z - max.z; + distance += tmp * tmp; + } + + return distance; +} + + +// update which airspaces are visible and setup LOD +bool CSnowFX::UpdateAirspaces( void ) +{ + // make sure there are no active airspaces if the snow isn't enabled + if( !m_bEnabled || !m_bOn ) + { + std::set::iterator it = activeAirspaces.begin(); + while( it != activeAirspaces.end()) + { + // Deactivate will remove the item from the set, thus invalidating the + // iterator. Get the next item before calling deactivate. + std::set::iterator next = it; + next++; + (*it)->Deactivate(); + it = next; + } + + + return true; + } + + // get the camera position + LTVector camPos; + HLOCALOBJ camera = g_pPlayerMgr->GetCamera(); + m_pClientDE->GetObjectPos( camera, &camPos ); + + // get the distance from the camera to the volume (0 if inside) + float cameraDistSq = DistSqToAABB( camPos, m_vMinBounds, m_vMaxBounds ); + + // check to see if all airspaces should be inactive + if( cameraDistSq > m_fMaxDrawDistSq ) + { + // camera is farther away than the max draw distance for this volume, so kill all the airspaces + std::set::iterator it = activeAirspaces.begin(); + while( it != activeAirspaces.end()) + { + // Get the snowfx and iterate to the next one. Deactive will invalidate + // our iterator. + CSnowFXAirspace* pSnowFXAirspace = *it; + it++; + + pSnowFXAirspace->Deactivate(); + } + + // don't test any of the airspaces directly + return true; + } + + // activate airspaces with positive LOD + for( uint32 i = 0; i < m_nNumAirspaces; i++ ) + { + float curLOD = m_pAirspaces[i].CalculateLOD( camPos ); + + if( curLOD > 0.0f ) + m_pAirspaces[i].Activate( curLOD ); + else if( m_pAirspaces[i].IsActive() ) + m_pAirspaces[i].Deactivate(); + + m_bUseCycling &= !m_pAirspaces[i].m_bCycledOnce; + } + + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + + // No need to use cycling if the particles can fill the entire volume... + + if( m_fLowestParticleY <= pos.y - m_vDims.y ) + m_bUseCycling = false; + + return true; +} + + +LTBOOL CSnowFX::OnServerMessage( ILTMessage_Read* pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) + return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch(nMsgId) + { + case SVFX_TURNON : + { + m_bOn = pMsg->Readbool(); + + // AirSpaces care about cycling when they activate... + + m_bUseCycling = true; + + // Reset the airspaces cycled flags.. + + for( uint32 i = 0; i < m_nNumAirspaces; i++ ) + { + m_pAirspaces[i].m_bCycledOnce = false; + } + + LTVector pos; + g_pLTClient->GetObjectPos( m_hServerObject, &pos ); + + m_fLowestParticleY = pos.y + m_vDims.y; + } + break; + + default: + break; + } + + return LTTRUE; +} + + + +//-------------------------- +//--- CSnowFXParticleMgr --- +//-------------------------- + +CSnowFXParticleMgr::CSnowFXParticleMgr() +{ + m_NumParticles = 0; + m_Particles = NULL; +} + + +CSnowFXParticleMgr::~CSnowFXParticleMgr() +{ + debug_deletea( m_Particles ); +} + + +// get a pointer to a block of particles +bool CSnowFXParticleMgr::AllocateParticles( uint32 numParticles, CSnowFXParticle*& particles ) +{ + // if this is the first time particles have been requested, initialize the particle array + if( !m_Particles ) + { + m_NumParticles = SNOWFX_PARTICLEPOOLSIZE; + + m_Particles = debug_newa( CSnowFXParticle, m_NumParticles ); + } + + if( !m_Particles ) + { + ASSERT(0); + m_NumParticles = 0; + } + + srand( 101374 ); + for( uint32 i = 0; i < m_NumParticles; i++ ) + { + m_Particles[i].bCycled = false; + m_Particles[i].id = (uint32)(((float)rand() / (float)RAND_MAX) * (SNOWFX_TABLESIZE - 1)); + m_Particles[i].pos.x = ((float)rand() / (float)RAND_MAX) * 2.0f - 1.0f; + m_Particles[i].pos.y = ((float)rand() / (float)RAND_MAX) * 2.0f - 1.0f; + m_Particles[i].pos.z = ((float)rand() / (float)RAND_MAX) * 2.0f - 1.0f; + } + + if( !m_Particles || (numParticles > m_NumParticles) ) + return false; + + float offsetAmt = (float)rand() / (float)RAND_MAX; + + uint32 startRange = m_NumParticles - numParticles; + uint32 start = (uint32)(offsetAmt * startRange); + + particles = &(m_Particles[start]); + + return true; +} + + +// release the allocated particles +bool CSnowFXParticleMgr::FreeParticles( CSnowFXParticle* particles ) +{ + // don't actually do anything, but get the user used to freeing in case we do something in the future + return true; +} + + + +//----------------------- +//--- CSnowFXAirspace --- +//----------------------- + +CSnowFXAirspace::CSnowFXAirspace() : + m_Parent ( NULL ), + m_Active ( false ), + m_NumParticles ( 0 ), + m_Particles ( NULL ), + m_MinY ( NULL ), + m_Effect ( NULL ), + m_bUseCycling ( false ), + m_bCycledOnce ( false ) +{ + if( !tableInit ) + { + tableInit = true; + + srand( 1337 ); + + float angleStep = (2*PI)/(float)SNOWFX_TABLESIZE; + float curAngle = 0.0f; + + for( uint32 i = 0; i < SNOWFX_TABLESIZE; i++ ) + { + rndTable[i] = (uint32)(((float)rand() / (float)RAND_MAX) * (SNOWFX_TABLESIZE - 1)); + sinTable[i] = (float)sin( curAngle ); + curAngle += angleStep; + } + + // add overlap to the end of the table for cosine to reference into + for( ; i < SNOWFX_TABLESIZE + SNOWFX_COSOFFSET; i++ ) + { + sinTable[i] = (float)sin( curAngle ); + curAngle += angleStep; + } + } +} + + +CSnowFXAirspace::~CSnowFXAirspace() +{ + Deactivate(); + + if( m_Effect ) + m_Parent->m_pClientDE->RemoveObject( m_Effect ); +} + + +void CSnowFXAirspace::Init( CSnowFX* parent, const LTVector& pos, const LTVector& dims ) +{ + ASSERT( !m_Active ); + ASSERT( parent ); + + m_Active = false; + m_Parent = parent; + m_LOD = 0.0f; + m_Pos = pos; + m_Dims = dims; + m_MinBounds = pos - dims; + m_MaxBounds = pos + dims; + + // get the particle blockers for this airspace + uint32 nSize = 0; + // First get the number of blockers. + m_Parent->m_pClientDE->GetParticleBlockersInAABB( pos, dims, NULL, nSize ); + m_Blockers.resize( nSize ); + m_Parent->m_pClientDE->GetParticleBlockersInAABB( pos, dims, &m_Blockers[0], nSize ); + + m_bUseCycling = false; + + UpdateDensity(); +} + + +bool CSnowFXAirspace::UpdateDensity( void ) +{ + float relVolume = (m_Dims.x / 256.0f) * (m_Dims.y / 256.0f) * (m_Dims.z / 256.0f); + m_NumParticles = (uint32)(m_Parent->m_fDensity * m_Parent->m_fDensityScale * relVolume); + + if( m_NumParticles >= SNOWFX_PARTICLEPOOLSIZE ) + m_NumParticles = SNOWFX_PARTICLEPOOLSIZE - 1; + + // reactivate active airspaces to get the right number of particles + if( m_Active ) + { + if( !Deactivate() ) + return false; + + if( !Activate( m_LOD ) ) + return false; + } + + return true; +} + + +// the engine calls this with a pointer to an airspace in pUser +// fill in the specified vertex buffer with generated particles +bool SnowFXFillVertexBuffer( void* pUser, void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ) +{ + CSnowFXAirspace* airspace = (CSnowFXAirspace*)pUser; + + return airspace->FillVertexBuffer( pVertexBufferData, pLightingData, nVBNumVerts, nPrevFilledVerts, nNumFilledVerts ); +} + + +// returns the LOD this airspace should be at +float CSnowFXAirspace::CalculateLOD( const LTVector& camPos ) +{ + float distance = DistSqToAABB( camPos, m_MinBounds, m_MaxBounds ); + + // the airspace is too far away, give it a 0 LOD + if( distance > m_Parent->m_fMaxDrawDistSq ) + return 0.0f; + + float lodBegin = SNOWFX_LODPERCENT * m_Parent->m_fMaxDrawDist; + distance = (float)sqrt( distance ); + + // the airspace is closer than the fadeout start point, give it a 1 LOD + if( distance < lodBegin ) + return 1.0f; + + // evaluate falloff using 3x^2 - 2x^3 + distance = (distance - lodBegin) / (m_Parent->m_fMaxDrawDist - lodBegin); + return 1.0f - (distance * distance * (3.0f - 2.0f * distance)); +} + + +// see if a particle is within the blocker polygon +static inline bool TestParticleBlocker( const LTVector& pos, uint32 numEdges, const LTPlane*& edgeNormals ) +{ + float px = pos.x; + float pz = pos.z; + + const LTPlane* curPlane = edgeNormals; + + // check to see if the point is outside any of the edge planes + for( uint32 i = 0; i < numEdges; i++, curPlane++ ) + { + if( curPlane->m_Normal.x * px + curPlane->m_Normal.z * pz > curPlane->m_Dist ) + return false; + } + + // point is inside all edge planes + return true; +} + + +bool CSnowFXAirspace::Activate( float detail ) +{ + // update the LOD + ASSERT( detail > 0.0f && detail <= 1.0f ); + m_LOD = detail; + + // don't do anything else if already active + if( m_Active ) + return true; + +#ifdef SNOWFX_PROFILE_ACTIVATION + LARGE_INTEGER pcStart, pcEnd, pcFreq; + QueryPerformanceFrequency( &pcFreq ); + QueryPerformanceCounter( &pcStart ); +#endif + + if( !m_Parent->m_ParticleMgr.AllocateParticles( m_NumParticles, m_Particles ) ) + return false; + + m_Active = true; + + // allocate space for the particle minimum elevation array + m_MinY = debug_newa( float, m_NumParticles ); + + // initialize the minimum elevation array + for( uint32 i = 0; i < m_NumParticles; i++ ) + { + m_MinY[i] = m_Pos.y - m_Dims.y; + } + + // adjust minimum elevation array by blockers + for( std::vector::iterator it = m_Blockers.begin(); it != m_Blockers.end(); it++ ) + { + float t; + LTPlane blockerPlane; + uint32 numEdges; + LTPlane* edgePlanes; + + // get the current particle blocker + m_Parent->m_pClientDE->GetParticleBlockerEdgesXZ( *it, blockerPlane, numEdges, edgePlanes ); + + // don't consider nearly vertical blockers + if( fabs(blockerPlane.m_Normal.y) < 0.00001 ) + continue; + + // precalculate some stuff for plane intersection calculations + float dc = -1.0f / blockerPlane.m_Normal.y; + float xc = blockerPlane.m_Normal.x * dc; + float zc = blockerPlane.m_Normal.z * dc; + dc *= blockerPlane.m_Dist; + + LTVector curPos; + curPos.y = 0.0f; + + // check all particles against this blocker + for( uint32 i = 0; i < m_NumParticles; i++ ) + { + curPos.x = m_Pos.x + m_Particles[i].pos.x * m_Dims.x; + curPos.z = m_Pos.z + m_Particles[i].pos.z * m_Dims.z; + + // check if the xz of the particle is within the projected xz polygon + if( TestParticleBlocker( curPos, numEdges, edgePlanes ) ) + { + // find where the particle hits the blocker + t = dc + curPos.x * xc + curPos.z * zc; + if( t > m_MinY[i] ) + m_MinY[i] = t; + } + } + } + + // create the volume effect (either reusing an old one, or creating a new one) + if( !m_Parent->freeEffects.empty() ) + { + m_Effect = HOBJECT(*m_Parent->freeEffects.begin()); + m_Parent->freeEffects.pop_front(); + + m_Parent->m_pClientDE->SetObjectPos( m_Effect, &m_Pos ); + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE ); + } + else + { + ObjectCreateStruct ocs; + INIT_OBJECTCREATESTRUCT( ocs ); + ocs.m_ObjectType = OT_VOLUMEEFFECT; + ocs.m_Flags = FLAG_VISIBLE; + ocs.m_Flags2 = FLAG2_FORCETRANSLUCENT; + ocs.m_Pos = m_Pos; + ocs.m_Rotation.Init(); + + m_Effect = m_Parent->m_pClientDE->CreateObject( &ocs ); + } + + VolumeEffectInfo vei; + vei.m_EffectType = VolumeEffectInfo::kDynamicParticles; + vei.m_Dims = m_Dims; + vei.m_DPPrimitive = VolumeEffectInfo::kTrilist; + vei.m_DPLighting = m_Parent->m_bUseLighting ? VolumeEffectInfo::kSinglePointNonDirectional : VolumeEffectInfo::kNone; + vei.m_DPLightConstant = 0xffffffff; + vei.m_DPSaturate = m_Parent->m_bUseSaturate; + vei.m_DPTextureName = m_Parent->m_pClientDE->GetStringData( m_Parent->m_hstrTextureName ); + vei.m_DPUserData = this; + vei.m_DPUpdateFn = &SnowFXFillVertexBuffer; + + m_Parent->m_pClientDE->SetupVolumeEffect( m_Effect, vei ); + + m_bUseCycling = m_Parent->m_bUseCycling; + m_bCycledOnce = false; + + m_Parent->activeAirspaces.insert( this ); + +#ifdef SNOWFX_PROFILE_ACTIVATION + QueryPerformanceCounter( &pcEnd ); + double pcTime = (double)(pcEnd.QuadPart - pcStart.QuadPart) * (double)1000.0 / (double)pcFreq.QuadPart; + g_pLTClient->CPrint( " Snow Activation: %8.6f ms", pcTime ); +#endif + + return true; +} + + +bool CSnowFXAirspace::Deactivate( void ) +{ + if( !m_Active ) + return true; + + g_pCommonLT->SetObjectFlags( m_Effect, OFT_Flags, 0, FLAG_VISIBLE ); + m_Parent->freeEffects.push_front( m_Effect ); + m_Effect = NULL; + + m_Parent->m_ParticleMgr.FreeParticles( m_Particles ); + m_Particles = NULL; + + debug_deletea( m_MinY ); + m_MinY = NULL; + + m_Active = false; + + m_Parent->activeAirspaces.erase( this ); + + return true; +} + + +bool CSnowFXAirspace::FillVertexBuffer( void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ) +{ + DynamicParticleVertex* curVert = (DynamicParticleVertex*)pVertexBufferData; + + uint32 numTris = nVBNumVerts / 3; + uint32 prevTris = nPrevFilledVerts / 3; + + if( numTris > m_NumParticles - prevTris ) + numTris = m_NumParticles - prevTris; + + uint32 maxTri = prevTris + numTris; + + LTVector pos; + float alpha, curY, xRotOffset, zRotOffset; + uint32 tmpInt, color; + + double seconds = m_Parent->m_nInternalTime / 10000.0; + double fallRate = (m_Parent->m_fFallRate * seconds / m_Dims.y); + uint32 tumbleOffset = (uint32)(m_Parent->m_fTumbleRate * seconds * SNOWFX_TABLESIZE) % SNOWFX_TABLESIZE; + + float particleSize = m_Parent->m_fParticleRadius * m_Parent->m_fParticleSizeScale; + float tumbleRadius = m_Parent->m_fTumbleRadius; + float yOffset = (float)fmod( fallRate, 2.0 ); + uint32 initialColor = m_Parent->m_nAmbientColor; + uint8 baseAlpha = (uint8)(m_LOD * 0xff); + uint32 baseAlphaShifted = baseAlpha << 24; + + uint32 curTri = 0; + + m_bCycledOnce = true; + + // two different loops, first for lit particles, second for unlit (be sure to update both when changing behavior!) + if( m_Parent->m_bUseLighting ) + { + LTVector ambient = m_Parent->m_vAmbientColor; + DynamicParticleLightingData* curLight = (DynamicParticleLightingData*)pLightingData; + + // procedurally generate particles for this frame + for( uint32 i = prevTris; i < maxTri; ++i ) + { + // update the vertical position + curY = m_Particles[i].pos.y - yOffset; + if( curY < -1.0f ) + curY += 2.0f; + + pos.y = m_Pos.y + curY * m_Dims.y; + + // fade in the first 20% of the particles life + alpha = (1.0f - curY) * 2.5f; + if( alpha < 1.0f ) + { + color = initialColor | ((uint32)(alpha*baseAlpha)<<24); + + m_Particles[i].bCycled = true; + } + else if( m_bUseCycling ) + { + if( m_Particles[i].bCycled ) + { + // This particle has been cycled so we should be able to see it... + + color = (initialColor | baseAlphaShifted); + + if( pos.y < m_Parent->m_fLowestParticleY ) + { + // Set this cycled particles Y to the parents lowest Y... + // All particles above the parents Y should be visible, cycled or not... + + m_Parent->m_fLowestParticleY = pos.y; + } + } + else + { + if( pos.y >= m_Parent->m_fLowestParticleY ) + { + // All particles above the parents Y should be visible and considered cycled... + + color = color = (initialColor | baseAlphaShifted); + m_Particles[i].bCycled = true; + } + else + { + // Not cycled and below the parents Y so we shouldn't see it... + + color = initialColor; + } + } + + // See if all the particles have been cycled... + + m_bCycledOnce &= m_Particles[i].bCycled; + } + else + { + color = initialColor | baseAlphaShifted; + } + + + //TEMP: need to kill particle rather than alpha it out + if( pos.y < m_MinY[i] ) + color = initialColor; + + // get the initial position of the particle + pos.x = m_Pos.x + m_Particles[i].pos.x * m_Dims.x; + pos.z = m_Pos.z + m_Particles[i].pos.z * m_Dims.z; + + // orient the particle around the y axis + tmpInt = m_Particles[i].id; + zRotOffset = particleSize * sinTable[tmpInt]; + xRotOffset = particleSize * sinTable[tmpInt + SNOWFX_COSOFFSET]; + + // move the particle back and forth as it falls + tmpInt = (rndTable[tmpInt] + tumbleOffset) % SNOWFX_TABLESIZE; + pos.x += tumbleRadius * sinTable[tmpInt + SNOWFX_COSOFFSET]; + pos.z += tumbleRadius * sinTable[tmpInt]; + + // fill in the triangle information + curVert->x = pos.x - xRotOffset; + curVert->y = pos.y + particleSize; + curVert->z = pos.z - zRotOffset; + curVert->u = 0.0f; + curVert->v = -1.0f; + ++curVert; + curVert->x = pos.x - xRotOffset; + curVert->y = pos.y - particleSize; + curVert->z = pos.z - zRotOffset; + curVert->u = 0.0f; + curVert->v = 1.0f; + ++curVert; + curVert->x = pos.x + xRotOffset; + curVert->y = pos.y - particleSize; + curVert->z = pos.z + zRotOffset; + curVert->u = 2.0f; + curVert->v = 1.0f; + ++curVert; + + // lighting information + curLight->pos = pos; + curLight->alpha = color; + curLight->acc = ambient; + ++curLight; + + ++curTri; + } + } + else + { + // procedurally generate particles for this frame + for( uint32 i = prevTris; i < maxTri; ++i ) + { + // update the vertical position + curY = m_Particles[i].pos.y - yOffset; + if( curY < -1.0f ) + curY += 2.0f; + + pos.y = m_Pos.y + curY * m_Dims.y; + + // fade in the first 20% of the particles life + alpha = (1.0f - curY) * 2.5f; + if( alpha < 1.0f ) + { + color = initialColor | ((uint32)(alpha*baseAlpha)<<24); + + m_Particles[i].bCycled = true; + } + else if( m_bUseCycling ) + { + if( m_Particles[i].bCycled ) + { + // This particle has been cycled so we should be able to see it... + + color = (initialColor | baseAlphaShifted); + + if( pos.y < m_Parent->m_fLowestParticleY ) + { + // Set this cycled particles Y to the parents lowest Y... + // All particles above the parents Y should be visible, cycled or not... + + m_Parent->m_fLowestParticleY = pos.y; + } + } + else + { + if( pos.y >= m_Parent->m_fLowestParticleY ) + { + // All particles above the parents Y should be visible and considered cycled... + + color = color = (initialColor | baseAlphaShifted); + m_Particles[i].bCycled = true; + } + else + { + // Not cycled and below the parents Y so we shouldn't see it... + + color = initialColor; + } + } + + // See if all the particles have been cycled... + + m_bCycledOnce &= m_Particles[i].bCycled; + } + else + { + color = initialColor | baseAlphaShifted; + } + + //TEMP: need to kill particle rather than alpha it out + if( pos.y < m_MinY[i] ) + color = initialColor; + + // get the initial position of the particle + pos.x = m_Pos.x + m_Particles[i].pos.x * m_Dims.x; + pos.z = m_Pos.z + m_Particles[i].pos.z * m_Dims.z; + + // orient the particle around the y axis + tmpInt = m_Particles[i].id; + zRotOffset = particleSize * sinTable[tmpInt]; + xRotOffset = particleSize * sinTable[tmpInt + SNOWFX_COSOFFSET]; + + // move the particle back and forth as it falls + tmpInt = (rndTable[tmpInt] + tumbleOffset) % SNOWFX_TABLESIZE; + pos.x += tumbleRadius * sinTable[tmpInt + SNOWFX_COSOFFSET]; + pos.z += tumbleRadius * sinTable[tmpInt]; + + // fill in the triangle information + curVert->x = pos.x - xRotOffset; + curVert->y = pos.y + particleSize; + curVert->z = pos.z - zRotOffset; + curVert->color = color; + curVert->u = 0.0f; + curVert->v = -1.0f; + ++curVert; + curVert->x = pos.x - xRotOffset; + curVert->y = pos.y - particleSize; + curVert->z = pos.z - zRotOffset; + curVert->color = color; + curVert->u = 0.0f; + curVert->v = 1.0f; + ++curVert; + curVert->x = pos.x + xRotOffset; + curVert->y = pos.y - particleSize; + curVert->z = pos.z + zRotOffset; + curVert->color = color; + curVert->u = 2.0f; + curVert->v = 1.0f; + ++curVert; + + ++curTri; + } + } + + nNumFilledVerts = curTri * 3; + + return maxTri == m_NumParticles; +} diff --git a/Jack/ClientShellDLL/SnowFX.h b/Jack/ClientShellDLL/SnowFX.h new file mode 100644 index 00000000..0b370bb1 --- /dev/null +++ b/Jack/ClientShellDLL/SnowFX.h @@ -0,0 +1,205 @@ + // ----------------------------------------------------------------------- // +// +// MODULE : SnowFX.h +// +// PURPOSE : Snow special fx class - Definition +// +// CREATED : 1/16/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SNOW_FX_H__ +#define __SNOW_FX_H__ + +#include "SpecialFX.h" + + +#define SNOWFX_AIRSPACEDIMS 512.0f // maximum length of side of a snow airspace +#define SNOWFX_LODPERCENT 0.8f // percentage of max draw dist to begin to fade an airspace at (range is 0 to 1) +#define SNOWFX_PARTICLEPOOLSIZE 16384 // size of pool of particles to allocate from (particles can be reused in other airspaces) +#define SNOWFX_TABLESIZE 256 // size of tables used for particle generation +#define SNOWFX_COSOFFSET 64 // offset into sin table to get cos (sin table is actually table size + this offset) + + +class CSnowFX; + + +struct CSnowFXParticle +{ + LTVector pos; // initial particle position relative to airspace origin + uint32 id; // random value used for indexing into various tables + bool bCycled; // has this particle been cycled, from bottom of air space to top +}; + + +class CSnowFXParticleMgr +{ +public: + CSnowFXParticleMgr(); + ~CSnowFXParticleMgr(); + + // get a pointer to a block of particles + bool AllocateParticles( uint32 numParticles, CSnowFXParticle*& particles ); + + // release the allocated particles + bool FreeParticles( CSnowFXParticle* particles ); + +private: + uint32 m_NumParticles; // number of particles in the array + CSnowFXParticle* m_Particles; // array containing all particles available to allocate from +}; + + +class CSnowFXAirspace +{ +public: + CSnowFXAirspace(); + ~CSnowFXAirspace(); + + // initialize the airspace + void Init( CSnowFX* parent, const LTVector& pos, const LTVector& dims ); + + // returns the LOD this airspace should be at + float CalculateLOD( const LTVector& camPos ); + + // returns the current state of this airspace + bool IsActive() { return m_Active; } + + // this airspace should start generating particles (just updates it's LOD if already active) + bool Activate( float detail ); + + // this airspace should stop generating particles + bool Deactivate(); + + // update the density of this airspace + bool UpdateDensity(); + + // fill in a vertex buffer with procedurally generated particles + bool FillVertexBuffer( void* pVertexBufferData, void* pLightingData, uint32 nVBNumVerts, uint32 nPrevFilledVerts, uint32& nNumFilledVerts ); + +public: + + bool m_bCycledOnce; + +private: + bool m_Active; // true if this airspace is currently active (visible and containing particles) + uint32 m_NumParticles; // number of particles in this airspace (based on density and volume) + float m_LOD; // level of detail for this airspace (0 is invisible, 1 is fully visible) + CSnowFX* m_Parent; // the SnowFX object containing this airspace + LTVector m_Pos; // center of this airspace + LTVector m_Dims; // dimensions of this airspace + LTVector m_MinBounds; // min bounds for this airspace + LTVector m_MaxBounds; // max bounds for this airspace + std::vector m_Blockers; // indices of particle blockers that affect this airspace + + // the following members are only valid for active airspaces + CSnowFXParticle* m_Particles; // array of particles + float* m_MinY; // matching array of minimum elevations for each particle + HOBJECT m_Effect; // volume effect object for this airspace + + static bool tableInit; + static float sinTable[SNOWFX_TABLESIZE+SNOWFX_COSOFFSET]; + static uint32 rndTable[SNOWFX_TABLESIZE]; + + bool m_bUseCycling; +}; + + +struct SNOWCREATESTRUCT : public SFXCREATESTRUCT +{ + SNOWCREATESTRUCT(); + + LTVector vDims; + float fDensity; + float fParticleRadius; + float fFallRate; + float fTumbleRate; + float fTumbleRadius; + float fMaxDrawDist; + LTVector vAmbientColor; + bool bUseLighting; + bool bUseSaturate; + HSTRING hstrTextureName; + bool bOn; +}; + + +inline SNOWCREATESTRUCT::SNOWCREATESTRUCT() +{ + vDims.Init(); + fDensity = 0.0f; + fParticleRadius = 0.0f; + fFallRate = 0.0f; + fTumbleRate = 0.0f; + fTumbleRadius = 0.0f; + fMaxDrawDist = 0.0f; + vAmbientColor.Init(); + bUseLighting = false; + bUseSaturate = false; + hstrTextureName = LTNULL; + bOn = true; +} + + +class CSnowFX : public CSpecialFX +{ +public: + CSnowFX(); + ~CSnowFX(); + + virtual LTBOOL Init( SFXCREATESTRUCT* psfxCreateStruct ); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject( ILTClient* pClientDE ); + virtual uint32 GetSFXID() { return SFX_SNOW_ID; } + +protected: + LTBOOL OnServerMessage( ILTMessage_Read* pMsg ); + +public: + + float m_fLowestParticleY; + +private: + LTVector m_vDims; + float m_fDensity; + float m_fParticleRadius; + float m_fFallRate; + float m_fTumbleRate; + float m_fTumbleRadius; + float m_fMaxDrawDist; + float m_fMaxDrawDistSq; + uint32 m_nAmbientColor; + LTVector m_vAmbientColor; + bool m_bUseLighting; + bool m_bUseSaturate; + HSTRING m_hstrTextureName; + bool m_bOn; + bool m_bUseCycling; // Use the particels' bCycled member to determine if the partice should be alphaed out + + + LTVector m_vMinBounds; // bounding box min value + LTVector m_vMaxBounds; // bounding box max value + + bool m_bEnabled; // if false, don't update (all airspaces will be inactive) + float m_fDensityScale; // value of console variable specifying density + float m_fParticleSizeScale; // value of console variable specifying snow particle scale + + uint32 m_nInternalTime; // current time value in internal units (10000s of a second) + + uint32 m_nNumAirspaces; // number of airspaces in this volume + CSnowFXAirspace* m_pAirspaces; // array of airspaces within this snow volume + + static std::list freeEffects; // shared list of volumeeffect objects that have been allocated, but aren't currently used + std::set activeAirspaces; // collection of airspaces that are currently active + + static CSnowFXParticleMgr m_ParticleMgr; // shared block of particle information + + bool UpdateAirspaces(); + + friend CSnowFXAirspace; +}; + + +#endif // __SNOW_FX_H__ diff --git a/Jack/ClientShellDLL/SoundFX.cpp b/Jack/ClientShellDLL/SoundFX.cpp new file mode 100644 index 00000000..175c89f4 --- /dev/null +++ b/Jack/ClientShellDLL/SoundFX.cpp @@ -0,0 +1,112 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SoundFX.cpp +// +// PURPOSE : Sound fx - Implementation +// +// CREATED : 6/20/2000 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SoundFX.h" +#include "iltclient.h" +#include "ClientSoundMgr.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSoundFX::Init +// +// PURPOSE: Init the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CSoundFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + m_cs = *(SNDCREATESTRUCT*)psfxCreateStruct; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSoundFX::CreateObject +// +// PURPOSE: Create object associated with the CSoundFX +// +// ----------------------------------------------------------------------- // + +LTBOOL CSoundFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + if (!m_cs.pSndName || !(*m_cs.pSndName)) return LTFALSE; + + // If we're non-looping we're done... + + return (m_cs.bLoop); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSoundFX::Update +// +// PURPOSE: See if we should go away or not... +// +// ----------------------------------------------------------------------- // + +LTBOOL CSoundFX::Update() +{ + // Stay around as long as we have a valid sound... + return (LTBOOL) m_hSnd; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSoundFX::Play +// +// PURPOSE: Play the sound +// +// ----------------------------------------------------------------------- // + +void CSoundFX::Play() +{ + if (!m_cs.pSndName || !(*m_cs.pSndName)) return; + + // Make sure we're not playing... + + Stop(); + + uint32 dwFlags = 0; + + if (m_cs.fPitchShift != 1.0) + { + dwFlags |= PLAYSOUND_CTRL_PITCH; + } + + if (m_cs.bLoop) + { + dwFlags |= (PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP); + } + + + if (m_cs.bLocal) + { + m_hSnd = g_pClientSoundMgr->PlaySoundLocal(m_cs.pSndName, m_cs.ePriority, + dwFlags, m_cs.nVolume, m_cs.fPitchShift); + } + else + { + m_hSnd = g_pClientSoundMgr->PlaySoundFromPos(m_cs.vPos, m_cs.pSndName, + m_cs.fRadius, m_cs.ePriority, dwFlags, + m_cs.nVolume, m_cs.fPitchShift); + } +} + diff --git a/Jack/ClientShellDLL/SoundFX.h b/Jack/ClientShellDLL/SoundFX.h new file mode 100644 index 00000000..7c66d241 --- /dev/null +++ b/Jack/ClientShellDLL/SoundFX.h @@ -0,0 +1,87 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SoundFX.h +// +// PURPOSE : Sound fx - Definition +// +// CREATED : 6/20/2000 +// +// (c) 2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SOUND_FX_H__ +#define __SOUND_FX_H__ + +#include "SpecialFX.h" +#include "SoundMgr.h" + +struct SNDCREATESTRUCT : public SFXCREATESTRUCT +{ + SNDCREATESTRUCT(); + + LTVector vPos; + LTBOOL bLocal; + LTBOOL bLoop; + LTFLOAT fRadius; + LTFLOAT fPitchShift; + char* pSndName; + uint8 nVolume; + SoundPriority ePriority; +}; + +inline SNDCREATESTRUCT::SNDCREATESTRUCT() +{ + vPos.Init(); + fRadius = 0.0f; + fPitchShift = 1.0f; + bLocal = LTFALSE; + bLoop = LTFALSE; + pSndName = LTNULL; + nVolume = SMGR_DEFAULT_VOLUME; + ePriority = SOUNDPRIORITY_MISC_LOW; +} + + +class CSoundFX : public CSpecialFX +{ + public : + + CSoundFX() : CSpecialFX() + { + m_hSnd = LTNULL; + } + + void Term() + { + CSpecialFX::Term(); + Stop(); + } + + ~CSoundFX() + { + Stop(); + } + + void Play(); + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update(); + + inline void Stop() + { + if (m_hSnd) + { + g_pLTClient->SoundMgr()->KillSoundLoop(m_hSnd); + m_hSnd = LTNULL; + } + } + + private : + + SNDCREATESTRUCT m_cs; + HLTSOUND m_hSnd; +}; + +#endif // __SOUND_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/Sparam.cpp b/Jack/ClientShellDLL/Sparam.cpp new file mode 100644 index 00000000..a832e454 --- /dev/null +++ b/Jack/ClientShellDLL/Sparam.cpp @@ -0,0 +1,130 @@ +/**************************************************************************** +; +; MODULE: SPARAM (.CPP) +; +; PURPOSE: String Parameter funcions +; +; HISTORY: 10/13/96 [blg] This file was created +; +; COMMENT: Copyright (c) 1996, Monolith Productions Inc. +; +****************************************************************************/ + + +// Includes... + +#include "stdafx.h" +#include "Sparam.h" + + +// Functions... + +// ----------------------------------------------------------------------- // +// +// ROUTINE: Sparam_Get +// +// PURPOSE: Gets the parameter with the given ID +// +// ----------------------------------------------------------------------- // + +BOOL Sparam_Get(char* sDest, const char* sSource, const char* sId) +{ + // Sanity checks... + + _ASSERT(sSource); + _ASSERT(sId); + + + // Scan for the ID... + + char sRealId[256]; + wsprintf(sRealId, "[%s:", sId); + + char* sStart = strstr(sSource, sRealId); + if (!sStart) return(FALSE); + + + // Move to the start of the param... + + int nLen = strlen(sRealId); + sStart = &sStart[nLen]; + if (strlen(sStart) < 2) return(FALSE); + + + // Find the end of the param... + + char* pEnd = strstr(sStart, "]"); + if (!pEnd) return(FALSE); + if (pEnd <= sStart) return(FALSE); + + + // Fill the dest string with the param... + + int i = 0; + + while (&sStart[i] != pEnd) + { + sDest[i] = sStart[i]; + i++; + } + + sDest[i] = '\0'; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: Sparam_Add +// +// PURPOSE: Addss the given parameter with the given ID +// +// WARNING: The source string must contain enough extra memory for +// the new param and id! +// +// ----------------------------------------------------------------------- // + +BOOL Sparam_Add(char* sSource, const char* sId, const char* sParam) +{ + // Sanity checks... + + _ASSERT(sSource); + _ASSERT(sId); + if (!sParam) return(FALSE); + + + // Add the real id... + + strcat(sSource, "["); + strcat(sSource, sId); + strcat(sSource, ":"); + + + // Add the param... + + strcat(sSource, sParam); + + + // Add the closing id... + + strcat(sSource, "]"); + + + // All done... + + return(TRUE); +} + +BOOL Sparam_Add(char* sSource, const char* sId, int nParam) +{ + char sTmp[256]; + wsprintf(sTmp, "%i", nParam); + + return(Sparam_Add(sSource, sId, sTmp)); +} + + diff --git a/Jack/ClientShellDLL/Sparam.h b/Jack/ClientShellDLL/Sparam.h new file mode 100644 index 00000000..12bc4f1b --- /dev/null +++ b/Jack/ClientShellDLL/Sparam.h @@ -0,0 +1,29 @@ +/**************************************************************************** +; +; MODULE: SPARAM (.H) +; +; PURPOSE: String Parameter funcions +; +; HISTORY: 10/13/96 [blg] This file was created +; +; COMMENT: Copyright (c) 1996, Monolith Productions Inc. +; +****************************************************************************/ + + +#ifndef _SPARAM_H_ +#define _SPARAM_H_ + + +// Prototypes... + +BOOL Sparam_Get(char* sDest, const char* sSource, const char* sId); +BOOL Sparam_Add(char* sSource, const char* sId, const char* sParam); +BOOL Sparam_Add(char* sSource, const char* sId, int nParam); +BOOL Sparam_Remove(char* sSource, const char* sId); + + +// EOF... + +#endif + diff --git a/Jack/ClientShellDLL/SpecialFX.h b/Jack/ClientShellDLL/SpecialFX.h new file mode 100644 index 00000000..b4f6879f --- /dev/null +++ b/Jack/ClientShellDLL/SpecialFX.h @@ -0,0 +1,150 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SpecialFX.h +// +// PURPOSE : Generic client-side Special FX wrapper class - Definition +// +// CREATED : 10/13/97 +// +// (c) 1997-1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __SPECIAL_FX_H__ +#define __SPECIAL_FX_H__ + +#include "ltbasedefs.h" +#include "iltclient.h" +#include "SharedBaseFXStructs.h" +#include "SFXMsgIds.h" + +#pragma warning( disable : 4786 ) +#include + +class CSpecialFX +{ + public : + + CSpecialFX() + { + m_bWantRemove = LTFALSE; + m_pClientDE = LTNULL; + m_hObject = LTNULL; + m_hServerObject = LTNULL; + m_fUpdateDelta = 0.001f; + m_fNextUpdateTime = 0.0f; + m_vLastServPos.Init(); + m_vVel.Init(); + m_nMenuLayer = 0; + } + + virtual ~CSpecialFX() + { + CSpecialFX::Term(); + } + + virtual void Term() + { + if (m_pClientDE && m_hObject) + { + m_pClientDE->RemoveObject(m_hObject); + m_hObject = LTNULL; + } + } + + virtual LTBOOL CreateObject(ILTClient* pClientDE) + { + if (!pClientDE) return LTFALSE; + m_pClientDE = pClientDE; + + if (m_hServerObject) + { + m_pClientDE->GetObjectPos(m_hServerObject, &m_vLastServPos); + } + + return LTTRUE; + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) + { + if (!pMsg) return LTFALSE; + + m_hServerObject = hServObj; + + return LTTRUE; + } + + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct) + { + if (!psfxCreateStruct) return LTFALSE; + + m_hServerObject = psfxCreateStruct->hServerObj; + + return LTTRUE; + } + + // Return of LTFALSE indicates special fx is done and can be removed. + + virtual LTBOOL Update() + { + // Calculate our server-object's velocity... + + if (m_hServerObject && m_pClientDE) + { + LTVector vPos; + m_pClientDE->GetObjectPos(m_hServerObject, &vPos); + + m_vVel = vPos - m_vLastServPos; + m_vVel /= m_pClientDE->GetFrameTime(); + + m_vLastServPos = vPos; + } + + return LTTRUE; + } + + virtual void Render(HOBJECT hCamera) {} + + // Call this to tell special fx to finish up so we can remove it... + + virtual void WantRemove(LTBOOL bRemove=LTTRUE) + { + m_bWantRemove = bRemove; + if (m_bWantRemove) m_hServerObject = LTNULL; + } + LTBOOL IsWaitingForRemove() const { return m_bWantRemove; } + + HLOCALOBJ GetObject() const { return m_hObject; } + HLOCALOBJ GetServerObj() const { return m_hServerObject; } + + LTFLOAT GetUpdateDelta() const { return m_fUpdateDelta; } + + virtual void OnObjectRotate( LTRotation *pRot ) {} + virtual void HandleTouch(CollisionInfo *pInfo) {} + virtual void OnModelKey(HLOCALOBJ hObj, ArgList *pArgs) {} + virtual LTBOOL OnServerMessage(ILTMessage_Read *pMsg) { return (!!pMsg); } + + LTFLOAT m_fNextUpdateTime; // When do we update next + + // Function for returning a special effect ID from a derived class + virtual uint32 GetSFXID() { return SFX_TOTAL_NUMBER + 1; } + + virtual uint8 GetMenuLayer() { return m_nMenuLayer; } + + protected : + + ILTClient* m_pClientDE; + HOBJECT m_hObject; // Special FX object + HOBJECT m_hServerObject; // Local handle to Server-side object + LTVector m_vLastServPos; // Last position of the server object + LTVector m_vVel; // Our server object's velocity + LTBOOL m_bWantRemove; + LTFLOAT m_fUpdateDelta; // Time between updates + uint8 m_nMenuLayer; +}; + + +typedef std::vector SFXArray; + + +#endif // __SPECIAL_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SpecialFXList.cpp b/Jack/ClientShellDLL/SpecialFXList.cpp new file mode 100644 index 00000000..b4acb9f0 --- /dev/null +++ b/Jack/ClientShellDLL/SpecialFXList.cpp @@ -0,0 +1,108 @@ +////////////////////////////////////////////////////////////////////////////// +// Implementation of the CSpecialFXList class + +#include "stdafx.h" +#include "SpecialFXList.h" + +#include "SFXMgr.h" + +CSpecialFXList::~CSpecialFXList() +{ + if (m_pArray) + { + + for (unsigned int i=0; i < m_nArraySize; i++) + { + if (m_pArray[i]) + { + CSFXMgr::DeleteSFX(m_pArray[i]); + } + } + + debug_deletea(m_pArray); + m_pArray = LTNULL; + } + + if (m_pAgeArray) + { + debug_deletea(m_pAgeArray); + m_pAgeArray = LTNULL; + } +} + +LTBOOL CSpecialFXList::Add(CSpecialFX* pFX) +{ + LTBOOL bFoundSlot = LTFALSE; + + if (!m_pArray || !m_pAgeArray) return LTFALSE; + + for (unsigned int i=0; i < m_nArraySize; i++) + { + if (!m_pArray[i] && !bFoundSlot) + { + m_pArray[i] = pFX; + m_pAgeArray[i] = 0; + bFoundSlot = LTTRUE; + } + else if (m_pArray[i]) + { + m_pAgeArray[i]++; // Age all elements in array; + } + } + + + // See if array is full...If so, find the oldest element and + // remove it... + + if (!bFoundSlot) + { + // Check if list was already empty. + if( !m_nArraySize ) + { + ASSERT( !"CSpecialFXList::Add: Could not add sfx to list." ); + return FALSE; + } + + int nSlot = 0; + uint32 dwOldestYet = 0; + for (unsigned int i=0; i < m_nArraySize; i++) + { + if (m_pAgeArray[i] > dwOldestYet) + { + nSlot = i; + dwOldestYet = m_pAgeArray[i]; + } + } + + // Replace the element at nSlot with the new fx + + CSFXMgr::DeleteSFX(m_pArray[nSlot]); + m_pArray[nSlot] = pFX; + m_pAgeArray[nSlot] = 0; + } + else + { + m_nElements++; + } + + return LTTRUE; +} + +LTBOOL CSpecialFXList::Remove(CSpecialFX* pFX) +{ + if (!pFX || !m_pArray) return LTFALSE; + + for (unsigned int i=0; i < m_nArraySize; i++) + { + if (m_pArray[i] == pFX) + { + CSFXMgr::DeleteSFX(m_pArray[i]); + m_pArray[i] = LTNULL; + m_pAgeArray[i] = 0; + m_nElements--; + return LTTRUE; + } + } + + return LTFALSE; +} diff --git a/Jack/ClientShellDLL/SpecialFXList.h b/Jack/ClientShellDLL/SpecialFXList.h new file mode 100644 index 00000000..05283c45 --- /dev/null +++ b/Jack/ClientShellDLL/SpecialFXList.h @@ -0,0 +1,75 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SpecialFXList.h +// +// PURPOSE : List of CSpecialFX class objects +// +// CREATED : 10/21/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __SPECIAL_FX_LIST_H__ +#define __SPECIAL_FX_LIST_H__ + +#include "ltlink.h" +#include "SpecialFX.h" + +#define DEFAULT_MAX_NUM 50 +#define MAX_NUM_LINKS 500 + +class CSpecialFXList +{ + public : + + int GetSize() const { return m_nArraySize; } + int GetNumItems() const { return m_nElements; } + LTBOOL IsEmpty() const { return (LTBOOL)(m_nElements == 0); } + + CSpecialFXList() + { + m_nArraySize = LTNULL; + m_pArray = LTNULL; + m_pAgeArray = LTNULL; + m_nElements = 0; + } + + LTBOOL Create(unsigned int nMaxNum=DEFAULT_MAX_NUM) + { + if (m_pArray) return LTFALSE; // Already created + + m_nArraySize = nMaxNum < MAX_NUM_LINKS ? nMaxNum : MAX_NUM_LINKS; + m_pArray = debug_newa(CSpecialFX*, m_nArraySize); + if (!m_pArray) return LTFALSE; + + m_pAgeArray = debug_newa(uint32, m_nArraySize); + if (!m_pAgeArray) return LTFALSE; + + m_nElements = 0; + + memset(m_pArray, 0, sizeof(CSpecialFX*)*m_nArraySize); + memset(m_pAgeArray, 0, sizeof(uint32)*m_nArraySize); + + return LTTRUE; + } + + CSpecialFX* operator[] (unsigned int nIndex) + { + if (!m_pArray || nIndex < 0 || nIndex >= m_nArraySize) return LTNULL; + return m_pArray[nIndex]; + } + + ~CSpecialFXList(); + + LTBOOL Add(CSpecialFX* pFX); + + LTBOOL Remove(CSpecialFX* pFX); + + private : + + CSpecialFX** m_pArray; // Array of special fx + uint32* m_pAgeArray; // Age special fx in array + unsigned int m_nArraySize; // Size of array + unsigned int m_nElements; // Number of elements in array +}; + +#endif // __SPECIAL_FX_LIST_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/Stdafx.cpp b/Jack/ClientShellDLL/Stdafx.cpp new file mode 100644 index 00000000..9b13c1ca --- /dev/null +++ b/Jack/ClientShellDLL/Stdafx.cpp @@ -0,0 +1 @@ +#include "StdAfx.h" diff --git a/Jack/ClientShellDLL/Stdafx.h b/Jack/ClientShellDLL/Stdafx.h new file mode 100644 index 00000000..b7dfe48c --- /dev/null +++ b/Jack/ClientShellDLL/Stdafx.h @@ -0,0 +1,50 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#ifndef __STDAFX_H__ +#define __STDAFX_H__ + +// This removes warnings about truncating symbol names when using stl maps. +// +#pragma warning( disable : 4786 ) +#pragma warning( disable : 4503 ) + +// This removes warnings in Vis C about the CodeWarrior pragma 'force_active' +// +#pragma warning( disable : 4068 ) + +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include + +#include "mfcstub.h" + +#include "DebugNew.h" + +#include "BuildDefines.h" +#include "clientheaders.h" +#include "iltserver.h" +#include "iltmessage.h" +#include "iltsoundmgr.h" +#include "globals.h" +#include "iltmodel.h" +#include "ilttransform.h" +#include "iltphysics.h" +#include "iltmath.h" +#include "iltsoundmgr.h" +#include "ltobjectcreate.h" +#include "ltbasetypes.h" +#include "ltobjref.h" +#include "Factory.h" +#include "ClientUtilities.h" +#include "CommonUtilities.h" +#include "AutoMessage.h" +#include "GameClientShell.h" + + + +#endif // __STDAFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SteamFX.cpp b/Jack/ClientShellDLL/SteamFX.cpp new file mode 100644 index 00000000..d16cb4ca --- /dev/null +++ b/Jack/ClientShellDLL/SteamFX.cpp @@ -0,0 +1,324 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SteamFX.cpp +// +// PURPOSE : Steam special FX - Implementation +// +// CREATED : 10/19/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "SteamFX.h" +#include "VarTrack.h" +#include "GameClientShell.h" +#include "SoundMgr.h" + +static VarTrack s_cvarTweak; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::CSteamFX +// +// PURPOSE: Construct +// +// ----------------------------------------------------------------------- // + +CSteamFX::CSteamFX() : CSpecialFX() +{ + m_hSound = LTNULL; + m_dwLastUserFlags = 0; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::Init +// +// PURPOSE: Init the particle system fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CSteamFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + STEAMCREATESTRUCT scs; + + scs.hServerObj = hServObj; + scs.Read(pMsg); + + return Init(&scs); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::Init +// +// PURPOSE: Init the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CSteamFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + // Set up our creation struct... + + STEAMCREATESTRUCT* pPS = (STEAMCREATESTRUCT*)psfxCreateStruct; + m_cs = *pPS; + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::CreateObject +// +// PURPOSE: Create object associated the particle system. +// +// ----------------------------------------------------------------------- // + +LTBOOL CSteamFX::CreateObject(ILTClient *pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + // Make sure the particles are moving... + + if (m_cs.fVel <= 0.0f) return LTFALSE; + + s_cvarTweak.Init(g_pLTClient, "TweakSteam", NULL, 0.0f); + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + LTVector vF = rRot.Forward(); + + // Create the "smoke" that we'll ust as steam... + + SMCREATESTRUCT sm; + + // Don't set the position, make it use the server object + // so that we can be keyframed on the server... + // pClientDE->GetObjectPos(m_hServerObject, &(sm.vPos)); + + sm.hServerObj = m_hServerObject; + + sm.bAdjustParticleScale = LTTRUE; + sm.fStartParticleScale = m_cs.fStartScale; + sm.fEndParticleScale = m_cs.fEndScale; + + sm.bAdjustParticleAlpha = LTTRUE; + sm.fStartParticleAlpha = m_cs.fStartAlpha; + sm.fEndParticleAlpha = m_cs.fEndAlpha; + + sm.hstrTexture = m_cs.hstrParticle; + + sm.vColor1 = m_cs.vColor1; + sm.vColor2 = m_cs.vColor2; + + sm.vMinDriftVel = vF * (m_cs.fVel * 0.75f); + sm.vMaxDriftVel = vF * m_cs.fVel; + + sm.vMinDriftVel += m_cs.vMinDriftVel; + sm.vMaxDriftVel += m_cs.vMaxDriftVel; + + sm.fVolumeRadius = m_cs.fVolumeRadius; + sm.fLifeTime = 1000000.0f; + sm.fRadius = m_cs.fParticleRadius; + sm.fParticleCreateDelta = m_cs.fCreateDelta; + + LTFLOAT fTime = m_cs.fRange / m_cs.fVel; + + sm.fMinParticleLife = fTime * 0.8f; + sm.fMaxParticleLife = fTime * 1.2f; + sm.nNumParticles = m_cs.nNumParticles; + sm.bIgnoreWind = LTTRUE; + + m_Steam.Init(&sm); + + LTBOOL bRet = m_Steam.CreateObject(pClientDE); + + return bRet; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::Update +// +// PURPOSE: Update the particle system +// +// ----------------------------------------------------------------------- // + +LTBOOL CSteamFX::Update() +{ + if (m_bWantRemove) return LTFALSE; + + // Debugging aid... + + if (s_cvarTweak.GetFloat() > 0) + { + TweakSystem(); + } + + // Start/stop steam sound if necessary... + + if (m_hServerObject) + { + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags(m_hServerObject, OFT_User, dwUserFlags); + + if (!(dwUserFlags & USRFLG_VISIBLE)) + { + if ((m_dwLastUserFlags & USRFLG_VISIBLE)) + { + StopSound(); + } + } + else // visible + { + if (!(m_dwLastUserFlags & USRFLG_VISIBLE)) + { + StartSound(); + } + } + + m_dwLastUserFlags = dwUserFlags; + + // Make sure the sound is in the correct place (in case we are getting + // keyframed)... + + if (m_hSound) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + ((ILTClientSoundMgr*)g_pLTClient->SoundMgr())->SetSoundPosition(m_hSound, &vPos); + } + + + // Update the steam velocity based on our current rotation (again + // for keyframing)... + + LTRotation rRot; + g_pLTClient->GetObjectRotation(m_hServerObject, &rRot); + + LTVector vF = rRot.Forward(); + + m_Steam.SetDriftVel(vF * (m_cs.fVel * 0.75f), vF * m_cs.fVel); + } + + return m_Steam.Update(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::StartSound +// +// PURPOSE: Start the sound... +// +// ----------------------------------------------------------------------- // + +void CSteamFX::StartSound() +{ + if (!m_hSound && m_cs.hstrSoundName) + { + LTVector vPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vPos); + + const char* pSnd = g_pLTClient->GetStringData(m_cs.hstrSoundName); + + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_LOOP; + m_hSound = g_pClientSoundMgr->PlaySoundFromPos(vPos, pSnd, m_cs.fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM, dwFlags); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::StopSound +// +// PURPOSE: Stop the sound... +// +// ----------------------------------------------------------------------- // + +void CSteamFX::StopSound() +{ + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSoundLoop(m_hSound); + m_hSound = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::TweakSystem +// +// PURPOSE: Tweak the particle system +// +// ----------------------------------------------------------------------- // + +void CSteamFX::TweakSystem() +{ + LTFLOAT fIncValue = 0.01f; + LTBOOL bChanged = LTFALSE; + + LTVector vScale; + vScale.Init(); + + uint32 dwPlayerFlags = g_pPlayerMgr->GetPlayerFlags(); + + // Move faster if running... + + if (dwPlayerFlags & BC_CFLG_RUN) + { + fIncValue = .5f; + } + + // Move Red up/down... + + if ((dwPlayerFlags & BC_CFLG_FORWARD) || (dwPlayerFlags & BC_CFLG_REVERSE)) + { + + //m_cs.vMinVel + //m_cs.vMaxVel + //m_cs.vColor1 + //m_cs.vColor2 + + bChanged = LTTRUE; + } + + + // Add/Subtract number of particles per second + + if ((dwPlayerFlags & BC_CFLG_STRAFE_RIGHT) || (dwPlayerFlags & BC_CFLG_STRAFE_LEFT)) + { + fIncValue = dwPlayerFlags & BC_CFLG_STRAFE_RIGHT ? fIncValue : -fIncValue; + //m_cs.fParticlesPerSecond += (LTFLOAT)(fIncValue * 101.0); + + //m_cs.fParticlesPerSecond = m_cs.fParticlesPerSecond < 0.0f ? 0.0f : + // (m_cs.fParticlesPerSecond > MAX_PARTICLES_PER_SECOND ? MAX_PARTICLES_PER_SECOND : m_cs.fParticlesPerSecond); + + bChanged = LTTRUE; + } + + + // Lower/Raise burst wait... + + if ((dwPlayerFlags & BC_CFLG_JUMP) || (dwPlayerFlags & BC_CFLG_DUCK)) + { + fIncValue = dwPlayerFlags & BC_CFLG_DUCK ? -fIncValue : fIncValue; + + bChanged = LTTRUE; + } + + + if (bChanged) + { + //g_pGameClientShell->CSPrint("Particles per second: %.2f", m_cs.fParticlesPerSecond); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/SteamFX.h b/Jack/ClientShellDLL/SteamFX.h new file mode 100644 index 00000000..1ee06c88 --- /dev/null +++ b/Jack/ClientShellDLL/SteamFX.h @@ -0,0 +1,65 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SteamFX.h +// +// PURPOSE : Steam special fx class - Definition +// +// CREATED : 10/19/99 +// +// (c) 1999 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __STEAM_FX_H__ +#define __STEAM_FX_H__ + +#include "SpecialFX.h" +#include "SmokeFX.h" +#include "SharedFXStructs.h" + +class CSteamFX : public CSpecialFX +{ + public : + + CSteamFX(); + ~CSteamFX() + { + if (m_hSound) + { + g_pLTClient->SoundMgr()->KillSoundLoop(m_hSound); + } + + if (m_cs.hstrSoundName) + { + g_pLTClient->FreeString(m_cs.hstrSoundName); + } + + if (m_cs.hstrParticle) + { + g_pLTClient->FreeString(m_cs.hstrParticle); + } + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + virtual uint32 GetSFXID() { return SFX_STEAM_ID; } + + protected : + + // Creation data... + + STEAMCREATESTRUCT m_cs; // Holds all initialization data + + CSmokeFX m_Steam; + HLTSOUND m_hSound; + uint32 m_dwLastUserFlags; + + void TweakSystem(); + void StartSound(); + void StopSound(); +}; + +#endif // __STEAM_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/SystemDependant.h b/Jack/ClientShellDLL/SystemDependant.h new file mode 100644 index 00000000..af3cb992 --- /dev/null +++ b/Jack/ClientShellDLL/SystemDependant.h @@ -0,0 +1,21 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : SystemDependant.h +// +// PURPOSE : Include operating system dependant files +// +// CREATED : 07.15.1999 +// +// ----------------------------------------------------------------------- // + +#ifndef _SYSTEM_DEPENDANT_ +#define _SYSTEM_DEPENDANT_ + +#include "windowsx.h" + +//windowsx.h includes a macro called DeleteFont() which interferes with use +// of the client api call DeleteFont(), so the macro is undefined here +#undef DeleteFont + + +#endif // _SYSTEM_DEPENDANT_ diff --git a/Jack/ClientShellDLL/TO2ClientWeaponAllocator.cpp b/Jack/ClientShellDLL/TO2ClientWeaponAllocator.cpp new file mode 100644 index 00000000..a98cc028 --- /dev/null +++ b/Jack/ClientShellDLL/TO2ClientWeaponAllocator.cpp @@ -0,0 +1,72 @@ + +#include "stdafx.h" + +#include "StandardCreator.h" +#include "TO2ClientWeaponAllocator.h" +#include "ClientWeaponBase.h" +#include "ClientWeapon.h" +#include "ClientWeaponNone.h" + +// +// Typedefs +// + +// These are the various types of client weapons available +// in this game. Be VERY VERY careful about changing these, +// or changing their order. There are data files that rely +// on this ordering to create the proper weapon. +typedef enum _CLIENT_WEAPON_TYPE +{ + CLIENT_WEAPON_TYPE_NONE, // this is invalid + CLIENT_WEAPON_TYPE_VECTOR, + CLIENT_WEAPON_TYPE_PROJECTILE, + + NUM_CLIENT_WEAPON_TYPES // always last! +} CLIENT_WEAPON_TYPE; + + +// Here is a list of the templated classes that will +// be used to create the specific ClientWeapon. +CStandardCreator< IClientWeaponBase, CClientWeaponNone > ClientWeaponNoneCreator; +CStandardCreator< IClientWeaponBase, CClientWeapon > ClientWeaponCreator; + + +// This table matches the enumeration from above to a +// class that will create the proper client weapon +// (also defined above). Be VERY VERY careful about +// changeing the order of these, or the corresponding +// enumeration. There are data files that rely +// on this ordering to create the proper weapon. +CCreator< IClientWeaponBase > *aWeaponClasses[] = +{ + &ClientWeaponNoneCreator, // CLIENT_WEAPON_TYPE_NONE, + &ClientWeaponCreator, // CLIENT_WEAPON_TYPE_VECTOR, + &ClientWeaponCreator, // CLIENT_WEAPON_TYPE_PROJECTILE, +}; + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2ClientWeponAllocator::New +// +// PURPOSE: Allocate the specified CClientWepaon. +// +// ----------------------------------------------------------------------- // + +IClientWeaponBase *CTO2ClientWeaponAllocator::New( int nClientWeaponType ) const +{ + // check the specified client weapon type (do NOT include type NONE) + ASSERT( ( CLIENT_WEAPON_TYPE_NONE < nClientWeaponType ) && + ( NUM_CLIENT_WEAPON_TYPES > nClientWeaponType ) ); + + // return 0 if the client weapon type is invalid + if ( !( ( CLIENT_WEAPON_TYPE_NONE < nClientWeaponType ) && + ( NUM_CLIENT_WEAPON_TYPES > nClientWeaponType ) ) ) + { + // specified an invalid client weapon type + return 0; + } + + // return a new instance of the requested type of client weapon + return aWeaponClasses[ nClientWeaponType ]->New(); +} diff --git a/Jack/ClientShellDLL/TO2ClientWeaponAllocator.h b/Jack/ClientShellDLL/TO2ClientWeaponAllocator.h new file mode 100644 index 00000000..b8d25ceb --- /dev/null +++ b/Jack/ClientShellDLL/TO2ClientWeaponAllocator.h @@ -0,0 +1,26 @@ + +#ifndef _TO2ClientWeaponAllocator_h_INCLUDED_ +#define _TO2ClientWeaponAllocator_h_INCLUDED_ + +#include "ClientWeaponAllocator.h" + +// +// This class's sole purpose is to create each +// instance of the ClientWeapon. It will +// take a type and match it to a class. +// +// See the ClientWeapon stuff for an example of its +// implementation. Specifically, CCreator, +// CStandardCreator, the derived classes of ClientWeaponAllocator +// (CTRONClientWeaponAllocator and CTO2ClientWeaponAllocator), +// and CPlayerMgr (as well as derived classes +// CTRONPlayerMgr or CTO2PlayerMgr). +// + +class CTO2ClientWeaponAllocator : public CClientWeaponAllocator +{ +public: + virtual IClientWeaponBase *New( int nClientWeaponType ) const; +}; + +#endif //_TO2ClientWeaponAllocator_h_INCLUDED_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TO2GameClientShell.cpp b/Jack/ClientShellDLL/TO2GameClientShell.cpp new file mode 100644 index 00000000..4df9bbf1 --- /dev/null +++ b/Jack/ClientShellDLL/TO2GameClientShell.cpp @@ -0,0 +1,157 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2GameClientShell.cpp +// +// PURPOSE : Game Client Shell - Implementation +// +// CREATED : 11/5/01 +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2GameClientShell.h" + +#include "msgids.h" + +#include "clientmultiplayermgr.h" +#include "IGameSpy.h" + +// Sample rate +int g_nSampleRate = 22050; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::CTO2GameClientShell() +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +CTO2GameClientShell::CTO2GameClientShell() : CGameClientShell() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::~CTO2GameClientShell() +// +// PURPOSE: Destruction +// +// ----------------------------------------------------------------------- // + +CTO2GameClientShell::~CTO2GameClientShell() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::OnEngineInitialized +// +// PURPOSE: Wrapper for OnEngineInitialized so we can do something extra +// +// ----------------------------------------------------------------------- // + +uint32 CTO2GameClientShell::OnEngineInitialized(RMode *pMode, LTGUID *pAppGuid) +{ + uint32 nResult = CGameClientShell::OnEngineInitialized(pMode, pAppGuid); + m_VersionMgr.Update(); + + //with the update of the version manager, it might have changed the gore setting, + //so make sure that the FX managers know about the change + UpdateGoreSettings(); + + return nResult; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::ProcessPacket +// +// PURPOSE: Handling for connectionless networking packets +// +// ----------------------------------------------------------------------- // + +LTRESULT CTO2GameClientShell::ProcessPacket(ILTMessage_Read *pMsg, uint8 senderAddr[4], uint16 senderPort) +{ + // Gotta have some data... + if (pMsg->Size() < 16) + return LT_OK; + + // Check if we have a gamespy server browser. + if( g_pClientMultiplayerMgr->GetRetailServerBrowser( )) + { + // Read the data out of the message. + uint32 nDataLen = pMsg->Size() / 8; + uint8* pData = ( uint8* )alloca( nDataLen ); + pMsg->ReadData( pData, nDataLen * 8 ); + + // See if the gamespybrowser wants it. + g_pClientMultiplayerMgr->GetRetailServerBrowser( )->HandleNetMessage( pData, nDataLen, senderAddr, senderPort ); + + // Reset to beginning for the rest of the function. + pMsg->Seek( 0 ); + } + + // Skip the engine-side portion of the message header + CLTMsgRef_Read cSubMsg(pMsg->SubMsg(8)); + + // Remember what address this came from + g_pClientMultiplayerMgr->SetCurMessageSource(senderAddr, senderPort); + + // Hand it off as if it were a message + // Note : This has to go through the parent's OnMessage so we handle the message source properly + CGameClientShell::OnMessage(cSubMsg); + + return LT_OK; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::OnMessage +// +// PURPOSE: Message from the server +// +// ----------------------------------------------------------------------- // +void CTO2GameClientShell::OnMessage(ILTMessage_Read *pMsg) +{ + // Store the server's address as where this message came from + uint8 aAddrBuffer[4]; + uint16 nPort; + g_pLTClient->GetServerIPAddress(aAddrBuffer, &nPort); + g_pClientMultiplayerMgr->SetCurMessageSource(aAddrBuffer, nPort); + + CGameClientShell::OnMessage(pMsg); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2GameClientShell::OnEnterWorld() +// +// PURPOSE: Handle entering world +// +// ----------------------------------------------------------------------- // + +void CTO2GameClientShell::OnEnterWorld() +{ + CGameClientShell::OnEnterWorld(); + +#ifndef _FINAL + //override for debugging purposes + float fVal = 0.0f; + if (!g_pLTClient) return; + + HCONSOLEVAR hVar = g_pLTClient->GetConsoleVar("LowViolence"); + if(hVar) + { + fVal = g_pLTClient->GetVarValueFloat(hVar); + char buf[128] = ""; + sprintf(buf, "serv LowViolence %f",fVal); + g_pLTClient->RunConsoleString(buf); + } + + +#endif +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/TO2GameClientShell.h b/Jack/ClientShellDLL/TO2GameClientShell.h new file mode 100644 index 00000000..482ef14e --- /dev/null +++ b/Jack/ClientShellDLL/TO2GameClientShell.h @@ -0,0 +1,56 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2GameClientShell.h +// +// PURPOSE : Game Client Shell - Definition +// +// CREATED : 11/5/01 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TO2GAME_CLIENT_SHELL_H__ +#define __TO2GAME_CLIENT_SHELL_H__ + +#include "GameClientShell.h" +#include "TO2InterfaceMgr.h" +#include "TO2PlayerMgr.h" +#include "VersionMgr.h" +#include "TO2ClientWeaponAllocator.h" +#include "TO2MissionButeMgr.h" + +class CTO2GameClientShell : public CGameClientShell +{ + public: + declare_interface(CTO2GameClientShell); + + CTO2GameClientShell(); + ~CTO2GameClientShell(); + + virtual CInterfaceMgr * GetInterfaceMgr() { return &m_InterfaceMgr;} + virtual CPlayerMgr * GetPlayerMgr() { return &m_PlayerMgr;} + virtual CClientWeaponAllocator const *GetClientWeaponAllocator() const + { return &m_ClientWeaponAllocator; } + + virtual uint32 OnEngineInitialized(RMode *pMode, LTGUID *pAppGuid); + virtual LTRESULT ProcessPacket(ILTMessage_Read *pMsg, uint8 senderAddr[4], uint16 senderPort); + virtual void OnMessage(ILTMessage_Read *pMsg); + + // Are we able to use the radar functionality + virtual bool ShouldUseRadar( ) { return true; } + + virtual void OnEnterWorld(); + + + private: + CTO2InterfaceMgr m_InterfaceMgr; // Interface manager + CVersionMgr m_VersionMgr; // Same as g_pVersionMgr + CTO2PlayerMgr m_PlayerMgr; // Interface manager + CTO2MissionButeMgr m_MissionButeMgr; // Same as g_pMissionButeMgr + + // allocator for client weapons + CTO2ClientWeaponAllocator m_ClientWeaponAllocator; +}; + +#endif // __TRON_GAME_CLIENT_SHELL_H__ diff --git a/Jack/ClientShellDLL/TO2HUDMgr.cpp b/Jack/ClientShellDLL/TO2HUDMgr.cpp new file mode 100644 index 00000000..3e95b48a --- /dev/null +++ b/Jack/ClientShellDLL/TO2HUDMgr.cpp @@ -0,0 +1,99 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2HUDMgr.cpp +// +// PURPOSE : Implementation of CTO2HUDMgr class +// +// CREATED : 07/17/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2HUDMgr.h" +#include "TO2PlayerStats.h" +#include "SurfaceFunctions.h" +#include "CharacterFX.h" + +extern CGameClientShell* g_pGameClientShell; + +CHUDCrosshair* g_pCrosshair = LTNULL; +CHUDCompass* g_pCompass = LTNULL; +CHUDObjectives* g_pObjectives = LTNULL; +CHUDRadio* g_pRadio = LTNULL; +CHUDDistance* g_pDistance = LTNULL; + +inline void CHUDItem::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2HUDMgr::CTO2HUDMgr() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CTO2HUDMgr::CTO2HUDMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2HUDMgr::~CTO2HUDMgr() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CTO2HUDMgr::~CTO2HUDMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2HUDMgr::Init() +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +LTBOOL CTO2HUDMgr::Init() +{ + //crosshair should be first so that it is rendered first (potential overlap) + m_itemArray.push_back(&m_Crosshair); + + m_itemArray.push_back(&m_Ammo); + m_itemArray.push_back(&m_Air); + m_itemArray.push_back(&m_Compass); + m_itemArray.push_back(&m_Hiding); + m_itemArray.push_back(&m_Health); + m_itemArray.push_back(&m_DamageDir); + m_itemArray.push_back(&m_Distance); + m_itemArray.push_back(&m_Objectives); + m_itemArray.push_back(&m_Radio); + m_itemArray.push_back(&m_ProgressBar); + m_itemArray.push_back(&m_Respawn); + m_itemArray.push_back(&m_Doomsday); + + + g_pCrosshair = &m_Crosshair; + g_pCompass = &m_Compass; + g_pObjectives = &m_Objectives; + g_pRadio = &m_Radio; + g_pDistance = &m_Distance; + + m_itemArray.push_back(&m_WpnChooser); + m_itemArray.push_back(&m_AmmoChooser); + + return CHUDMgr::Init(); +} diff --git a/Jack/ClientShellDLL/TO2HUDMgr.h b/Jack/ClientShellDLL/TO2HUDMgr.h new file mode 100644 index 00000000..f7c1e173 --- /dev/null +++ b/Jack/ClientShellDLL/TO2HUDMgr.h @@ -0,0 +1,73 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2HUDMgr.h +// +// PURPOSE : Definition of CTO2HUDMgr class +// +// CREATED : 07/17/01 +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TO2_HUDMGR_H +#define __TO2_HUDMGR_H + +#include "HUDMgr.h" +#include "HUDAmmo.h" +#include "HUDAir.h" +#include "HUDCrosshair.h" +#include "HUDCompass.h" +#include "HUDHiding.h" +#include "HUDCarrying.h" +#include "HUDHealth.h" +#include "HUDDamageDir.h" +#include "HUDChooser.h" +#include "HUDDistance.h" +#include "HUDObjectives.h" +#include "HUDRadio.h" +#include "HUDProgressBar.h" +#include "HUDRespawn.h" +#include "HUDDoomsday.h" + + +//****************************************************************************************** +//** HUD Manager +//****************************************************************************************** +class CTO2HUDMgr : public CHUDMgr +{ +public: + + CTO2HUDMgr(); + ~CTO2HUDMgr(); + + virtual LTBOOL Init(); + +protected: + + CHUDAmmo m_Ammo; + CHUDAir m_Air; + CHUDCrosshair m_Crosshair; + CHUDCompass m_Compass; + CHUDHiding m_Hiding; + CHUDObjectives m_Objectives; + CHUDHealth m_Health; + CHUDDamageDir m_DamageDir; + CHUDWpnChooser m_WpnChooser; + CHUDAmmoChooser m_AmmoChooser; + CHUDDistance m_Distance; + CHUDRadio m_Radio; + CHUDProgressBar m_ProgressBar; + CHUDRespawn m_Respawn; + CHUDDoomsday m_Doomsday; + CHUDBombTarget m_BombTarget; + +}; + + +extern CHUDCrosshair* g_pCrosshair; +extern CHUDCompass* g_pCompass; +extern CHUDObjectives* g_pObjectives; +extern CHUDRadio* g_pRadio; + +#endif diff --git a/Jack/ClientShellDLL/TO2InterfaceMgr.cpp b/Jack/ClientShellDLL/TO2InterfaceMgr.cpp new file mode 100644 index 00000000..cfc14391 --- /dev/null +++ b/Jack/ClientShellDLL/TO2InterfaceMgr.cpp @@ -0,0 +1,216 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TronInterfaceMgr.cpp +// +// PURPOSE : Manage all interface related functionality +// +// CREATED : 4/6/99 +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2InterfaceMgr.h" +#include "GameClientShell.h" + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2InterfaceMgr::CTO2InterfaceMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CTO2InterfaceMgr::CTO2InterfaceMgr() : CInterfaceMgr() +{ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2InterfaceMgr::~CTO2InterfaceMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CTO2InterfaceMgr::~CTO2InterfaceMgr() +{ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2InterfaceMgr::OnExitWorld() +// +// PURPOSE: Handle exiting a world +// +// ----------------------------------------------------------------------- // + +void CTO2InterfaceMgr::OnExitWorld() +{ + g_pMissionText->Clear(); + g_pChatInput->OnExitWorld(); + g_pSubtitles->Clear(); + + // Now handle the base class + CInterfaceMgr::OnExitWorld(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2InterfaceMgr::OnCommandOn() +// +// PURPOSE: Handle command on +// +// ----------------------------------------------------------------------- // +LTBOOL CTO2InterfaceMgr::OnCommandOn(int command) +{ + if (g_pChatInput->IsVisible()) return LTTRUE; + + // Take appropriate action + + if (g_pRadio->IsVisible()) + { + if (command >= COMMAND_ID_CHOOSE_1 && + command <= COMMAND_ID_CHOOSE_6 ) + { + uint8 nChoice = command - COMMAND_ID_CHOOSE_1; + g_pRadio->Choose(nChoice); + return LTTRUE; + } + else if (command >= COMMAND_ID_NEXT_WEAPON_1 && + command <= COMMAND_ID_NEXT_WEAPON_6 ) + { + return LTTRUE; + } + } + + switch (command) + { + case COMMAND_ID_MESSAGE : + case COMMAND_ID_TEAM_MESSAGE : + { + if (!IsTeamGameType() && (command == COMMAND_ID_TEAM_MESSAGE)) + break; + + if (m_eGameState == GS_PLAYING && !g_pPlayerMgr->IsSpectatorMode() && !FadingScreen()) + { + if (m_AmmoChooser.IsOpen()) + { + m_AmmoChooser.Close(); + } + if (m_WeaponChooser.IsOpen()) + { + m_WeaponChooser.Close(); + } + + g_pChatInput->Show(true, (command == COMMAND_ID_TEAM_MESSAGE) ); + g_pScores->Show(false); + } + + return LTTRUE; + } + break; + + case COMMAND_ID_RADIO : + { + if (m_eGameState == GS_PLAYING && (g_pGameClientShell->GetGameType() == eGameTypeCooperative || IsTeamGameType() ) ) + { + // [KLS 9/9/02] Made toggle and added sounds... + g_pRadio->Show(!g_pRadio->IsVisible()); + + if (g_pRadio->IsVisible()) + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\RadioOn.wav"); + } + else + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\RadioOff.wav"); + } + } + + return LTTRUE; + } + break; + + case COMMAND_ID_COMPASS : + { + if (m_eGameState == GS_PLAYING && !g_pPlayerMgr->IsSpectatorMode()) + { + g_pCompass->Toggle(); + + if (g_pCompass->GetDraw()) + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\CompassOn.wav"); + } + else + { + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\CompassOff.wav"); + } + + if( g_pGameClientShell->ShouldUseRadar() ) + { + g_pRadar->Toggle(); + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if( IsMultiplayerGame() ) + { + if (g_pGameClientShell->GetGameType() != eGameTypeDeathmatch) + { + pProfile->m_bMPRadar = g_pRadar->GetDraw( ); + } + } + else + { + pProfile->m_bSPRadar = g_pRadar->GetDraw( ); + } + + pProfile->Save(); + } + } + + return LTTRUE; + } + break; + + default : + { + return CInterfaceMgr::OnCommandOn(command); + } + break; + } + return LTFALSE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CInterfaceMgr::OnKeyDown() +// +// PURPOSE: Handle OnKeyDown messages +// +// ----------------------------------------------------------------------- // + +LTBOOL CTO2InterfaceMgr::OnKeyDown(int key, int rep) +{ + //handle stuff before default handling + if (g_pRadio->IsVisible() && m_eGameState == GS_PLAYING && key == VK_ESCAPE) + { + g_pRadio->Show(false); + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\RadioOff.wav"); + return LTTRUE; + } + + //default handling + if (CInterfaceMgr::OnKeyDown(key, rep)) + return LTTRUE; + + //handle stuff after default handling + // (nothing needed here yet) + + + + return LTFALSE; +} diff --git a/Jack/ClientShellDLL/TO2InterfaceMgr.h b/Jack/ClientShellDLL/TO2InterfaceMgr.h new file mode 100644 index 00000000..88f6edbd --- /dev/null +++ b/Jack/ClientShellDLL/TO2InterfaceMgr.h @@ -0,0 +1,46 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2InterfaceMgr.h +// +// PURPOSE : Manage all interface related functionality +// +// CREATED : 11/5/01 +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TO2INTERFACE_MGR_H__ +#define __TO2INTERFACE_MGR_H__ + +#include "InterfaceMgr.h" +#include "TO2HUDMgr.h" +#include "TO2ScreenMgr.h" +#include "TO2PlayerStats.h" +#include "TO2LayoutMgr.h" + +class CTO2InterfaceMgr : public CInterfaceMgr +{ +public: + CTO2InterfaceMgr(); + ~CTO2InterfaceMgr(); + + // Accessors + CHUDMgr* GetHUDMgr() { return &m_HUD;} + CScreenMgr* GetScreenMgr() { return &m_ScreenMgr;} + CPlayerStats* GetPlayerStats() { return &m_stats; } + + LTBOOL OnCommandOn(int command); + LTBOOL OnKeyDown(int key, int rep); + + void OnExitWorld(); + +private: + CTO2HUDMgr m_HUD; // Heads-Up Display + CTO2ScreenMgr m_ScreenMgr; + CTO2PlayerStats m_stats; // Player statistics (health, ammo, armor, etc.) + CTO2LayoutMgr m_TO2LayoutMgr; // same as g_pLayoutMgr +}; + + +#endif // __TO2INTERFACE_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TO2LayoutMgr.cpp b/Jack/ClientShellDLL/TO2LayoutMgr.cpp new file mode 100644 index 00000000..22c416d8 --- /dev/null +++ b/Jack/ClientShellDLL/TO2LayoutMgr.cpp @@ -0,0 +1,43 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2LayoutMgr.cpp +// +// PURPOSE : Attribute file manager for interface layout info +// TO2-specific functionality +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TO2LayoutMgr.h" + +CLayoutMgr* g_pLayoutMgr = LTNULL; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + + +CTO2LayoutMgr::CTO2LayoutMgr() : CLayoutMgr() +{ + g_pLayoutMgr = this; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTronLayoutMgr::Init() +// +// PURPOSE: Init mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CTO2LayoutMgr::Init(const char* szAttributeFile) +{ + if (!CLayoutMgr::Init(szAttributeFile)) + return LTFALSE; + + return LTTRUE; +} + + diff --git a/Jack/ClientShellDLL/TO2LayoutMgr.h b/Jack/ClientShellDLL/TO2LayoutMgr.h new file mode 100644 index 00000000..84036288 --- /dev/null +++ b/Jack/ClientShellDLL/TO2LayoutMgr.h @@ -0,0 +1,28 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2LayoutMgr.h +// +// PURPOSE : Attribute file manager for interface layout info +// TO2-specific items +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_TO2LAYOUTMGR_H_) +#define _TO2LAYOUTMGR_H_ + +#include "LayoutMgr.h" + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +class CTO2LayoutMgr : public CLayoutMgr +{ +public: + CTO2LayoutMgr(); + LTBOOL Init(const char* szAttributeFile=LO_DEFAULT_FILE); +}; + +#endif // _TO2LAYOUTMGR_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TO2PlayerMgr.cpp b/Jack/ClientShellDLL/TO2PlayerMgr.cpp new file mode 100644 index 00000000..cf89201b --- /dev/null +++ b/Jack/ClientShellDLL/TO2PlayerMgr.cpp @@ -0,0 +1,115 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerMgr.cpp +// +// PURPOSE : Implementation of class to handle managment of missions and worlds. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "TO2PlayerMgr.h" +#include "TO2HUDMgr.h" +#include "MsgIDs.h" +#include "GameClientShell.h" +#include "PlayerCamera.h" +#include "TargetMgr.h" +#include "WeaponMgr.h" + + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerMgr::CTO2PlayerMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CTO2PlayerMgr::CTO2PlayerMgr() : CPlayerMgr() +{ + m_nFlashlightID = WMGR_INVALID_ID; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerMgr::~CTO2PlayerMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CTO2PlayerMgr::~CTO2PlayerMgr() +{ +} + + +LTBOOL CTO2PlayerMgr::Init() +{ + const WEAPON* pWeapon = g_pWeaponMgr->GetWeapon("Keychain"); + m_nFlashlightID = pWeapon->nId; + return CPlayerMgr::Init(); +} + + +LTBOOL CTO2PlayerMgr::OnCommandOn(int command) +{ + // Make sure we're in the world... + + if (!IsPlayerInWorld()) return LTFALSE; + + // Take appropriate action + + switch (command) + { + case COMMAND_ID_FLASHLIGHT : + { + if (g_pPlayerStats->GetCurrentWeapon() == m_nFlashlightID) + LastWeapon(); + else + ChangeWeapon(m_nFlashlightID); + } break; + }; + + + return CPlayerMgr::OnCommandOn(command); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::OnEnterWorld() +// +// PURPOSE: Handle entering world +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerMgr::OnEnterWorld() +{ + CPlayerMgr::OnEnterWorld( ); + + // Check if they want radar on. + if( g_pGameClientShell->ShouldUseRadar( ) ) + { + CUserProfile *pProfile = g_pProfileMgr->GetCurrentProfile(); + + if( IsMultiplayerGame( ) ) + { + if (g_pGameClientShell->GetGameType() != eGameTypeDeathmatch) + { + g_pCompass->SetDraw( pProfile->m_bMPRadar ); + g_pRadar->SetDraw( pProfile->m_bMPRadar ); + } + } + else + { + g_pCompass->SetDraw( pProfile->m_bSPRadar ); + g_pRadar->SetDraw( pProfile->m_bSPRadar ); + } + } + +} diff --git a/Jack/ClientShellDLL/TO2PlayerMgr.h b/Jack/ClientShellDLL/TO2PlayerMgr.h new file mode 100644 index 00000000..5cdbb3c4 --- /dev/null +++ b/Jack/ClientShellDLL/TO2PlayerMgr.h @@ -0,0 +1,37 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : PlayerMgr.h +// +// PURPOSE : Definition of class to handle managment of player and camera. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TO2_PLAYER_MGR_H__ +#define __TO2_PLAYER_MGR_H__ + +#include "PlayerMgr.h" + + + +class CTO2PlayerMgr : public CPlayerMgr +{ +public: + CTO2PlayerMgr(); + virtual ~CTO2PlayerMgr(); + + virtual LTBOOL Init(); + + virtual LTBOOL OnCommandOn(int command); + + virtual void OnEnterWorld(); + +protected: + + int m_nFlashlightID; + + +}; + +#endif diff --git a/Jack/ClientShellDLL/TO2PlayerStats.cpp b/Jack/ClientShellDLL/TO2PlayerStats.cpp new file mode 100644 index 00000000..046cdb82 --- /dev/null +++ b/Jack/ClientShellDLL/TO2PlayerStats.cpp @@ -0,0 +1,1776 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2PlayerStats.cpp +// +// PURPOSE : Implementation of TO2PlayerStats class +// +// CREATED : 10/9/97 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include +#include "TO2PlayerStats.h" +#include "GameClientShell.h" +#include "MsgIDs.h" +#include "TO2HUDMgr.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "MissionMgr.h" +#include "KeyMgr.h" +#include "clientres.h" + +void ArmorFn(int argc, char **argv) +{ + if (!g_pPlayerStats || argc < 1) return; + g_pPlayerStats->UpdateArmor(atoi(argv[0])); +} +void MaxArmorFn(int argc, char **argv) +{ + if (!g_pPlayerStats || argc < 1) return; + g_pPlayerStats->UpdateMaxArmor(atoi(argv[0])); +} +void HealthFn(int argc, char **argv) +{ + if (!g_pPlayerStats || argc < 1) return; + g_pPlayerStats->UpdateHealth(atoi(argv[0])); +} +void MaxHealthFn(int argc, char **argv) +{ + if (!g_pPlayerStats || argc < 1) return; + g_pPlayerStats->UpdateMaxHealth(atoi(argv[0])); +} +void AirFn(int argc, char **argv) +{ + if (!g_pPlayerStats || argc < 1) return; + g_pPlayerStats->UpdateAir((float)atof(argv[0])/100.0f); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::CTO2PlayerStats() +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CTO2PlayerStats::CTO2PlayerStats() +{ + LTRect nullrect(0,0,0,0); + LTIntPt nullPt(0,0); + + m_pnAmmo = LTNULL; + m_pbHaveAmmo = LTNULL; + m_pbHaveWeapon = LTNULL; + m_pbCanUseWeapon = LTNULL; + m_pbCanUseAmmo = LTNULL; + m_pbHaveMod = LTNULL; + m_pbCanUseMod = LTNULL; + m_pbHaveGear = LTNULL; + m_pbCanUseGear = LTNULL; + m_nHealth = 0; + m_nDamage = 0; + m_nArmor = 0; + m_nMaxHealth = 0; + m_nMaxArmor = 0; + m_nCurrentWeapon = WMGR_INVALID_ID; + m_nCurrentAmmo = WMGR_INVALID_ID; + + m_bHiding = LTFALSE; + m_bHidden = LTFALSE; + + m_fAirPercent = 1.0f; + + m_bObjAdded = LTFALSE; + m_bObjRemoved = LTFALSE; + m_bObjCompleted = LTFALSE; + + m_nTotalSkillPoints = 0; + m_nAvailSkillPoints = 0; + + m_dwProgress = 0; + m_dwMaxProgress = 0; + + memset(m_nSkills,0,sizeof(m_nSkills)); + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::~CTO2PlayerStats() +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CTO2PlayerStats::~CTO2PlayerStats() +{ + Term(); + g_pPlayerStats = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Init() +// +// PURPOSE: Initialize +// +// ----------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::Init() +{ + if (!g_pLTClient) return LTFALSE; + + g_pLTClient->RegisterConsoleProgram("Armor", ArmorFn); + g_pLTClient->RegisterConsoleProgram("MaxArmor", MaxArmorFn); + g_pLTClient->RegisterConsoleProgram("Health", HealthFn); + g_pLTClient->RegisterConsoleProgram("MaxHealth", MaxHealthFn); + g_pLTClient->RegisterConsoleProgram("Air", AirFn); + + if (m_pnAmmo) + { + debug_deletea(m_pnAmmo); + m_pnAmmo = LTNULL; + } + + if (m_pbHaveAmmo) + { + debug_deletea(m_pbHaveAmmo); + m_pbHaveAmmo = LTNULL; + } + + if (m_pbCanUseAmmo) + { + debug_deletea(m_pbCanUseAmmo); + m_pbCanUseAmmo = LTNULL; + } + + int nNumAmmoIds = g_pWeaponMgr->GetNumAmmoIds(); + if (nNumAmmoIds > 0) + { + m_pnAmmo = debug_newa(uint32, nNumAmmoIds); + m_pbCanUseAmmo = debug_newa(LTBOOL, nNumAmmoIds); + m_pbHaveAmmo = debug_newa(LTBOOL, nNumAmmoIds); + memset(m_pnAmmo, 0, sizeof(uint32) * nNumAmmoIds); + memset(m_pbHaveAmmo, 0, sizeof(LTBOOL) * nNumAmmoIds); + memset(m_pbCanUseAmmo, 0, sizeof(LTBOOL) * nNumAmmoIds); + } + + if (m_pbHaveWeapon) + { + debug_deletea(m_pbHaveWeapon); + m_pbHaveWeapon = LTNULL; + } + + if (m_pbCanUseWeapon) + { + debug_deletea(m_pbCanUseWeapon); + m_pbCanUseWeapon = LTNULL; + } + + int nNumWeapons = g_pWeaponMgr->GetNumWeapons(); + if (nNumWeapons > 0) + { + m_pbHaveWeapon = debug_newa(LTBOOL, nNumWeapons); + memset(m_pbHaveWeapon, 0, sizeof(LTBOOL) * nNumWeapons); + + m_pbCanUseWeapon = debug_newa(LTBOOL, nNumWeapons); + memset(m_pbCanUseWeapon, 0, sizeof(LTBOOL) * nNumWeapons); + } + + if (m_pbHaveMod) + { + debug_deletea(m_pbHaveMod); + m_pbHaveMod = LTNULL; + } + + if (m_pbCanUseMod) + { + debug_deletea(m_pbCanUseMod); + m_pbCanUseMod = LTNULL; + } + + if (m_pbHaveGear) + { + debug_deletea(m_pbHaveGear); + m_pbHaveGear = LTNULL; + } + + if (m_pbCanUseGear) + { + debug_deletea(m_pbCanUseGear); + m_pbCanUseGear = LTNULL; + } + + int nNumMods = g_pWeaponMgr->GetNumModIds(); + if (nNumMods > 0) + { + m_pbHaveMod = debug_newa(LTBOOL, nNumMods); + memset(m_pbHaveMod, 0, sizeof(LTBOOL) * nNumMods); + + m_pbCanUseMod = debug_newa(LTBOOL, nNumMods); + memset(m_pbCanUseMod, 0, sizeof(LTBOOL) * nNumMods); + + } + + int nNumGear = g_pWeaponMgr->GetNumGearIds(); + if (nNumGear > 0) + { + m_pbHaveGear = debug_newa(LTBOOL, nNumGear); + memset(m_pbHaveGear, 0, sizeof(LTBOOL) * nNumGear); + + m_pbCanUseGear = debug_newa(LTBOOL, nNumGear); + memset(m_pbCanUseGear, 0, sizeof(LTBOOL) * nNumGear); + + } + + ResetSkills(); + ResetObjectives(); + ResetMissionStats(); + + g_pPlayerStats = this; + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Term() +// +// PURPOSE: Terminate the player stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::Term() +{ + if (!g_pLTClient) return; + + m_nHealth = 0; + m_nDamage = 0; + m_nArmor = 0; + m_nMaxHealth = 0; + m_nMaxArmor = 0; + + if (m_pnAmmo) + { + debug_deletea(m_pnAmmo); + m_pnAmmo = LTNULL; + } + + if (m_pbCanUseAmmo) + { + debug_deletea(m_pbCanUseAmmo); + m_pbCanUseAmmo = LTNULL; + } + + if (m_pbHaveAmmo) + { + debug_deletea(m_pbHaveAmmo); + m_pbHaveAmmo = LTNULL; + } + + if (m_pbHaveWeapon) + { + debug_deletea(m_pbHaveWeapon); + m_pbHaveWeapon = LTNULL; + } + + if (m_pbCanUseWeapon) + { + debug_deletea(m_pbCanUseWeapon); + m_pbCanUseWeapon = LTNULL; + } + + if (m_pbHaveMod) + { + debug_deletea(m_pbHaveMod); + m_pbHaveMod = LTNULL; + } + + if (m_pbCanUseMod) + { + debug_deletea(m_pbCanUseMod); + m_pbCanUseMod = LTNULL; + } + + if (m_pbHaveGear) + { + debug_deletea(m_pbHaveGear); + m_pbHaveGear = LTNULL; + } + + if (m_pbCanUseGear) + { + debug_deletea(m_pbCanUseGear); + m_pbCanUseGear = LTNULL; + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Update() +// +// PURPOSE: Handle regular updates +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::Update() +{ + if (m_bObjAdded) + { + g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\objadd.wav", SOUNDPRIORITY_MISC_MEDIUM); + g_pObjectives->Show(true); + } + else if (m_bObjCompleted) + { + g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\objcomplete.wav", SOUNDPRIORITY_MISC_MEDIUM); + g_pObjectives->Show(true); + } + else if (m_bObjRemoved) + { + g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\objremove.wav", SOUNDPRIORITY_MISC_MEDIUM); + g_pObjectives->Show(true); + } + + m_bObjAdded = LTFALSE; + m_bObjRemoved = LTFALSE; + m_bObjCompleted = LTFALSE; + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::OnEnterWorld() +// +// PURPOSE: Handle entering the world +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::OnEnterWorld(LTBOOL bRestoringGame) +{ + if (!g_pLTClient || !g_pGameClientShell) return; + + // find out what mode we are in and make sure that mode is set + + ResetStats(); + + if (!bRestoringGame) + { + // clear the values + + Clear(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::OnExitWorld() +// +// PURPOSE: Handle exiting the world +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::OnExitWorld() +{ + if (!g_pLTClient) return; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Clear() +// +// PURPOSE: Handle clearing the stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::Clear() +{ + UpdateHealth(0); + m_nDamage = 0; + UpdateArmor(0); + + // Get rid of any weapons, ammo, gear or mods.. + + ResetInventory(); + ResetSkills(); + ResetObjectives(); + ResetMissionStats(); + m_IntelList.Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::ResetStats() +// +// PURPOSE: Reset the stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::ResetStats() +{ + m_MissionStats.Init(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdatePlayerWeapon() +// +// PURPOSE: Update the weapon related stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdatePlayerWeapon(uint8 nWeaponId, uint8 nAmmoId, LTBOOL bForce) +{ + if (!g_pGameClientShell || !g_pWeaponMgr->IsValidWeaponId(nWeaponId)) return; + + if (!bForce) + { + if (m_nCurrentWeapon == nWeaponId && m_nCurrentAmmo == nAmmoId) return; + } + + m_nCurrentWeapon = nWeaponId; + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(m_nCurrentWeapon); + if (!pWeapon) return; + + if (nAmmoId != m_nCurrentAmmo) + { + m_nCurrentAmmo = nAmmoId; + g_pHUDMgr->QueueUpdate(kHUDAmmo); + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateHealth() +// +// PURPOSE: Update the health stat +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateHealth(uint32 nHealth) +{ + if (nHealth > m_nMaxHealth) + nHealth = m_nMaxHealth; + + if (m_nHealth == nHealth) return; + + if (nHealth < m_nHealth) + { + m_nDamage += (m_nHealth - nHealth); + } + + + // update the member variable + m_nHealth = nHealth; + g_pHUDMgr->QueueUpdate(kHUDHealth); + + + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateArmor() +// +// PURPOSE: Update the armor stat +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateArmor(uint32 nArmor) +{ + if (nArmor > m_nMaxArmor) + nArmor = m_nMaxArmor; + if (m_nArmor == nArmor) return; + + // update the member variable + m_nArmor = nArmor; + g_pHUDMgr->QueueUpdate(kHUDArmor); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateMaxHealth() +// +// PURPOSE: Update the health stat maximum +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateMaxHealth(uint32 nHealth) +{ + if (m_nMaxHealth == nHealth) return; + + // update the member variable + m_nMaxHealth = nHealth; + + //if we have more than our max... reduce + if (m_nHealth > m_nMaxHealth) + m_nHealth = m_nMaxHealth; + + g_pHUDMgr->QueueUpdate(kHUDHealth); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateMaxArmor() +// +// PURPOSE: Update the armor stat maximum +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateMaxArmor(uint32 nArmor) +{ + if (m_nMaxArmor == nArmor) return; + + // update the member variables + m_nMaxArmor = nArmor; + + //if we have more than our max... reduce + if (m_nArmor > m_nMaxArmor) + m_nArmor = m_nMaxArmor; + g_pHUDMgr->QueueUpdate(kHUDArmor); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateAmmo() +// +// PURPOSE: Update the ammo stat +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateAmmo(uint8 nWeaponId, uint8 nAmmoId, + uint32 nAmmo, LTBOOL bPickedup, + LTBOOL bDisplayMsg, bool bActivatingPickup) +{ + if (!g_pLTClient || !g_pWeaponMgr) return; + + if (bPickedup && g_pWeaponMgr->IsValidWeaponId(nWeaponId)) + { + if (m_pbHaveWeapon) + { + // [KLS 7/12/02] Always display the message if we pick up the weapon + // even if we already have it... + // if (!m_pbHaveWeapon[nWeaponId]) + { + if (bDisplayMsg) + { + g_pGameClientShell->HandleWeaponPickup(nWeaponId, true, bActivatingPickup); + } + } + + m_pbHaveWeapon[nWeaponId] = LTTRUE; + + if (m_pbCanUseWeapon) + { + m_pbCanUseWeapon[nWeaponId] = LTTRUE; + } + } + } + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponId); + + if (bPickedup && pWeapon && m_pbHaveWeapon[nWeaponId]) + { + for (int m = 0; m < pWeapon->nNumModIds; m++) + { + int nModId = pWeapon->aModIds[m]; + MOD const *pMod = g_pWeaponMgr->GetMod(nModId); + + if (pMod && pMod->bIntegrated) + { + if (m_pbHaveMod) + { + m_pbHaveMod[nModId] = LTTRUE; + if (m_pbCanUseMod) + m_pbCanUseMod[nModId] = LTTRUE; + } + } + } + } + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoId); + + LTBOOL bInfiniteAmmo = pWeapon ? pWeapon->bInfiniteAmmo : LTFALSE; + LTBOOL bDefaultAmmo = pWeapon ? pWeapon->nDefaultAmmoId == nAmmoId : LTFALSE; + int nEquipWeapon = WMGR_INVALID_ID; + + if (pAmmo )//&& (!bInfiniteAmmo || !bDefaultAmmo) ) + { + if (m_pnAmmo) + { + if (bPickedup) /*** BL 12/08/2000 Added to equip weapon when you are out of ammo and pick up ammo/weapon ******/ + { + // Check to see if we are out of ammo (minus gadgets, infinite ammo weapons like fisticuffs, barette, etc) + + LTBOOL bOutOfAmmo = LTTRUE; + int nWeaponBest = WMGR_INVALID_ID; + + for ( int32 iWeapon = g_pWeaponMgr->GetNumWeapons()-1 ; iWeapon >= 0 ; iWeapon-- ) + { + // There's an assumption that the ammo id + // is the same as the index, so I've fixed + // original code to do what it meant to do. + int32 nWeapon = iWeapon; + ASSERT ( nWeapon == g_pWeaponMgr->GetWeapon(nWeapon)->nId ); + + // Here's the original incorrect line. (Notice + // that GetWeaponId wants a CommandID.) + //int32 nWeapon = g_pWeaponMgr->GetWeaponId(iWeapon); + + if ( nWeapon != WMGR_INVALID_ID && m_pbHaveWeapon[nWeapon] ) + { + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeapon); + + if ( !pWeapon->bInfiniteAmmo && pWeapon->bShowChooser ) + { + for ( int32 iAmmo = 0 ; iAmmo < pWeapon->nNumAmmoIds ; iAmmo++ ) + { + if (pWeapon->aAmmoIds[iAmmo] == WMGR_INVALID_ID) + continue; + if ( (nWeaponBest == WMGR_INVALID_ID) && (pWeapon->aAmmoIds[iAmmo] == nAmmoId) ) + { + nWeaponBest = nWeapon; + } + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(pWeapon->aAmmoIds[iAmmo]); + + if ( pAmmo->eType == GADGET ) + { + } + else if ( m_pnAmmo[pWeapon->aAmmoIds[iAmmo]] > 0 ) + { + //g_pLTClient->CPrint("%s has %d rounds of %s", pWeapon->szName, m_pnAmmo[pWeapon->aAmmoTypes[iAmmo]], pAmmo->szName); + bOutOfAmmo = LTFALSE; + break; + } + else + { + //g_pLTClient->CPrint("%s is out of %s", pWeapon->szName, pAmmo->szName); + } + } + } + } + } + + if ( bOutOfAmmo ) + { + //g_pLTClient->CPrint("Out of ammo!"); + + if ( !pWeapon || nWeaponId == WMGR_INVALID_ID ) + { + // Picked up ammo -- equip the best gun for that can use the ammo + + nEquipWeapon = nWeaponBest; + } + else if( pWeapon && pWeapon->bShowChooser ) + { + // Picked up a gun -- equip that gun + + nEquipWeapon = nWeaponId; + } + } + else + { + //g_pLTClient->CPrint("Not out of ammo!"); + } + } /*** BL 12/08/2000 End changes ******/ + + uint32 maxAmmo = pAmmo->GetMaxAmount(LTNULL); + if (m_pnAmmo[nAmmoId] > maxAmmo) + { + m_pnAmmo[nAmmoId] = maxAmmo; + } + + if (nAmmo > maxAmmo) + { + nAmmo = maxAmmo; + } + + int taken = nAmmo - m_pnAmmo[nAmmoId]; + + m_pnAmmo[nAmmoId] = nAmmo; + + // [KLS 7/14/02] Display a message even if we didn't pick up anything... + if (bPickedup && bDisplayMsg) + { + // [KLS 7/12/02] If this ammo is associated with a weapon + // only display a message if the weapon doesn't use infinite ammo + if (!pWeapon || !(pWeapon->bInfiniteAmmo)) + { + bool bTookAmmo = bool(taken != 0); + g_pGameClientShell->HandleAmmoPickup(nAmmoId, taken, bTookAmmo, bActivatingPickup, nWeaponId); + } + } + + if (taken != 0) + { + if (m_pbHaveAmmo) + { + m_pbHaveAmmo[nAmmoId] = LTTRUE; + if (m_pbCanUseAmmo) + m_pbCanUseAmmo[nAmmoId] = LTTRUE; + } + } + } + } + + //force weapon change if we don't have a current weapon and the weapon matches our default + bool bForce = (!g_pPlayerMgr->GetCurrentClientWeapon() && + g_pPlayerMgr->GetClientWeaponMgr()->GetDefaultWeaponId() == nEquipWeapon); + if ( nEquipWeapon != WMGR_INVALID_ID && (bForce || GetConsoleBool("AutoWeaponSwitch",true)) ) /*** BL 12/08/2000 Added to change equip weapon when you are out of ammo and pick up a weapon ******/ + { + g_pPlayerMgr->ChangeWeapon( nEquipWeapon, nAmmoId ); + } /*** BL 12/08/2000 End changes ******/ + + if (m_nCurrentAmmo == nAmmoId) + { + g_pHUDMgr->QueueUpdate(kHUDAmmo); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateGear() +// +// PURPOSE: Update the gear stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateGear(uint8 nGearId) +{ + if (!g_pLTClient || !g_pWeaponMgr) return; + + if (g_pWeaponMgr->IsValidGearId(nGearId)) + { + LTBOOL bHadAirSupply = HaveAirSupply(); + if (m_pbHaveGear) + { + m_pbHaveGear[nGearId] = LTTRUE; + if (m_pbCanUseGear) + { + GEAR const *pGear = g_pWeaponMgr->GetGear(nGearId); + if (pGear && pGear->bExclusive) + m_pbCanUseGear[nGearId] = LTTRUE; + } + + } + + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateMod() +// +// PURPOSE: Update the mod stats +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateMod(uint8 nModId) +{ + if (g_pWeaponMgr->IsValidModId(nModId)) + { + if (m_pbHaveMod) + { + if (!m_pbHaveMod[nModId]) + { + m_pbHaveMod[nModId] = LTTRUE; + m_pbCanUseMod[nModId] = LTTRUE; + + // Make sure the player-view weapon is updated if + // this mod is used with the weapon... + + MOD const *pMod = g_pWeaponMgr->GetMod(nModId); + if (!pMod) return; + + IClientWeaponBase* pClientWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetCurrentClientWeapon(); + + if (pClientWeapon && pClientWeapon->GetWeaponId() == pMod->GetWeaponId()) + { + pClientWeapon->CreateMods(); + } + } + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateAir() +// +// PURPOSE: Update the air stat +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateAir(LTFLOAT fPercent) +{ + if (!g_pLTClient) return; + + if (fPercent > 1.0f) + fPercent = 1.0f; + if (fPercent < 0.0f) + fPercent = 0.0f; + + if (m_fAirPercent == fPercent) return; + + m_fAirPercent = fPercent; + g_pHUDMgr->QueueUpdate(kHUDAir); + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateObjectives() +// +// PURPOSE: Update the objectives +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateObjectives(uint8 nThing, uint8 nType, uint32 dwId) +{ + switch (nType) + { + case ITEM_ADD_ID: + { + uint8 nIndex; + if (m_CompletedObjectives.Have(dwId, nIndex)) + { + g_pLTClient->CPrint("objective %d already completed", dwId); + } + else + { + if (nThing == IC_OBJECTIVE_ID && m_Objectives.Add(dwId)) + { + g_pLTClient->CPrint("objective %d added", dwId); + m_bObjAdded = LTTRUE; + } + else if (nThing == IC_OPTION_ID && m_OptionalObjectives.Add(dwId)) + { + g_pLTClient->CPrint("optional objective %d added", dwId); + m_bObjAdded = LTTRUE; + } + else if (nThing == IC_PARAMETER_ID && m_Parameters.Add(dwId)) + { + g_pLTClient->CPrint("mission parameter %d added", dwId); + m_bObjAdded = LTTRUE; + } + } + } + break; + + case ITEM_REMOVE_ID: + { + m_bObjRemoved = m_Objectives.Remove(dwId); + m_bObjRemoved |= m_OptionalObjectives.Remove(dwId); + m_bObjRemoved |= m_Parameters.Remove(dwId); + m_bObjRemoved |= m_CompletedObjectives.Remove(dwId); + + if (m_bObjRemoved) + g_pLTClient->CPrint("objective %d removed", dwId); + + + } + break; + + case ITEM_COMPLETE_ID: + { + m_Objectives.Remove(dwId); + m_OptionalObjectives.Remove(dwId); + m_bObjCompleted = m_CompletedObjectives.Add(dwId); + g_pLTClient->CPrint("objective %d completed", dwId); + + } + break; + + case ITEM_CLEAR_ID: + { + if (m_Objectives.m_IDArray.size() || m_OptionalObjectives.m_IDArray.size() || + m_CompletedObjectives.m_IDArray.size() || m_Parameters.m_IDArray.size()) + m_bObjRemoved = LTTRUE; + + m_Objectives.Clear(); + m_OptionalObjectives.Clear(); + m_CompletedObjectives.Clear(); + m_Parameters.Clear(); + + g_pLTClient->CPrint("objectives cleared", dwId); + + } + break; + + default : + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateKeys() +// +// PURPOSE: Update the key item list +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateKeys(uint8 nType, uint16 nId) +{ + switch (nType) + { + case ITEM_ADD_ID: + { + if (g_pKeyMgr->IsValidKey(nId)) + { + m_Keys.Add(nId); + KEY* pKey = g_pKeyMgr->GetKey(nId); + g_pPickupMsgs->AddMessage(LoadTempString(pKey->nNameId),pKey->szImage); + g_pCarrying->AddKey( nId ); + } + } + break; + + case ITEM_REMOVE_ID: + { + if (g_pKeyMgr->IsValidKey(nId)) + { + m_Keys.Remove(nId); + g_pCarrying->RemoveKey( nId ); + } + } + break; + + case ITEM_CLEAR_ID: + { + m_Keys.Clear(); + g_pCarrying->ClearAllKeys( ); + } + break; + + default : + break; + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateIntel() +// +// PURPOSE: Update the intel item list +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateIntel(uint32 nTextId, uint8 nPopupId, LTBOOL bIsIntel) +{ + uint16 nIndex = m_IntelList.GetIndex(nTextId); + if (!m_IntelList.IsValid(nIndex)) + { + INTEL_ITEM* pItem = debug_new(INTEL_ITEM); + pItem->nTextId = nTextId; + pItem->nPopupId = nPopupId; + pItem->bIsIntel = bIsIntel; + pItem->nMissionNum = (uint8)g_pMissionMgr->GetCurrentMission(); + m_IntelList.Add(pItem); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::UpdateHiding() +// +// PURPOSE: Update the player hiding state +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::UpdateHiding(LTBOOL bIsHiding, LTBOOL bIsHidden, LTBOOL bCanthide, float fHideDuration) +{ + if( bIsHidden && !m_bHidden ) + { + g_pClientSoundMgr->PlaySoundLocal("interface\\snd\\playerhidden.wav", SOUNDPRIORITY_MISC_MEDIUM); + } + + m_bHiding = bIsHiding; + m_bHidden = bIsHidden; + m_bCantHide = bCanthide; + m_fHideDuration = fHideDuration; + g_pHUDMgr->QueueUpdate(kHUDHiding); +} + + +void CTO2PlayerStats::UpdateSkills(ILTMessage_Read *pMsg) +{ + m_nTotalSkillPoints = pMsg->Readuint32(); + m_nAvailSkillPoints = pMsg->Readuint32(); + + for (uint8 i = 0; i < kNumSkills; i++) + { + m_nSkills[i] = pMsg->Readuint8(); + } + +} + +void CTO2PlayerStats::UpdateMissionStats(ILTMessage_Read *pMsg) +{ + m_MissionStats.ReadData(pMsg); + +} + + +void CTO2PlayerStats::GainSkills(uint8 nRewardId, uint8 nBonusId, uint16 nAmount) +{ + return; + +// Skills disabled. +/* + + if (IsMultiplayerGame()) return; + + + //deal with bonus points here + if (nBonusId && nAmount) + { + m_nTotalSkillPoints += nAmount; + m_nAvailSkillPoints += nAmount; + + // Inform the user that they gained a reward... + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\reward.wav"); + return; + } + + int nCurrentMission = g_pMissionMgr->GetCurrentMission(); + + if (nCurrentMission < 0 || nCurrentMission >= g_pMissionButeMgr->GetNumMissions()) + { + if (!nAmount) + g_pLTClient->CPrint("CTO2PlayerStats::GainSkills Invalid current mission number (%d)", nCurrentMission); + else + { + m_nTotalSkillPoints += nAmount; + m_nAvailSkillPoints += nAmount; + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\reward.wav"); + } + return; + } + + MISSION *pMission = g_pMissionButeMgr->GetMission(nCurrentMission); + if (!pMission) + { + g_pLTClient->CPrint("CTO2PlayerStats::GainSkills Invalid mission (%d)", nCurrentMission); + return; + } + + if (nRewardId >= pMission->nNumRewards) + { + if (!nAmount) + g_pLTClient->CPrint("CTO2PlayerStats::GainSkills Invalid reward id (%d)", nRewardId); + else + { + m_nTotalSkillPoints += nAmount; + m_nAvailSkillPoints += nAmount; + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\reward.wav"); + } + return; + } + + uint32 nPoints = pMission->aRewards[nRewardId].nVal; + m_nTotalSkillPoints += nPoints; + m_nAvailSkillPoints += nPoints; + + // Inform the user that they gained a reward... + + g_pClientSoundMgr->PlayInterfaceSound("Interface\\Snd\\reward.wav"); +*/ +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::OnObjectivesDataMessage() +// +// PURPOSE: Override current objectives with new list from server +// +// ----------------------------------------------------------------------- // + +void CTO2PlayerStats::OnObjectivesDataMessage(ILTMessage_Read *pMsg) +{ + if (!pMsg) return; + + if (m_Objectives.m_IDArray.size() || m_CompletedObjectives.m_IDArray.size()) + m_bObjRemoved = LTTRUE; + m_Objectives.Clear(); + m_CompletedObjectives.Clear(); + + //read number of objectives + uint8 nNumObj = pMsg->Readuint8(); + + //read list of objectives + for (uint8 i = 0; i < nNumObj; i++) + { + uint32 dwId = pMsg->Readuint32(); + m_Objectives.Add(dwId); + } + + //read number of optional objectives + uint8 nNumOptObj = pMsg->Readuint8(); + + //read list of optional objectives + for (i = 0; i < nNumOptObj; i++) + { + uint32 dwId = pMsg->Readuint32(); + m_OptionalObjectives.Add(dwId); + } + + //read number of completed objectives + uint8 nNumCompObj = pMsg->Readuint8(); + + //read list of completed objectives + for (i = 0; i < nNumCompObj; i++) + { + uint32 dwId = pMsg->Readuint32(); + m_CompletedObjectives.Add(dwId); + } + + //read number of parameters + uint8 nNumParam = pMsg->Readuint8(); + + //read list of parameters + for (i = 0; i < nNumParam; i++) + { + uint32 dwId = pMsg->Readuint32(); + m_Parameters.Add(dwId); + } + + m_bObjAdded = (nNumObj + nNumOptObj + nNumCompObj + nNumParam) > 0; +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Save +// +// PURPOSE: Save the player stats info +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::Save(ILTMessage_Write *pMsg) +{ + if (!pMsg || !g_pWeaponMgr) return; + + m_Objectives.Save(pMsg); + m_OptionalObjectives.Save(pMsg); + m_CompletedObjectives.Save(pMsg); + m_Parameters.Save(pMsg); + m_Keys.Save(pMsg); + m_IntelList.Save(pMsg); + + pMsg->Writeuint32(m_nHealth); + pMsg->Writeuint32(m_nDamage); + pMsg->Writeuint32(m_nArmor); + pMsg->Writeuint32(m_nMaxHealth); + pMsg->Writeuint32(m_nMaxArmor); + + int nNumAmmoTypes = g_pWeaponMgr->GetNumAmmoIds(); + uint8 i; + for (i = 0; i < nNumAmmoTypes; i++) + { + pMsg->Writebool(m_pbCanUseAmmo[i] != LTFALSE); + pMsg->Writebool(m_pbHaveAmmo[i] != LTFALSE); + pMsg->Writeuint32(m_pnAmmo[i]); + } + + int nNumWeapons = g_pWeaponMgr->GetNumWeapons(); + for (i = 0; i < nNumWeapons; i++) + { + pMsg->Writebool(m_pbCanUseWeapon[i] != LTFALSE); + pMsg->Writebool(m_pbHaveWeapon[i] != LTFALSE); + } + + int nNumMods = g_pWeaponMgr->GetNumModIds(); + for (i = 0; i < nNumMods; i++) + { + pMsg->Writebool(m_pbCanUseMod[i] != LTFALSE); + pMsg->Writebool(m_pbHaveMod[i] != LTFALSE); + } + + int nNumGear = g_pWeaponMgr->GetNumGearIds(); + for (i = 0; i < nNumGear; i++) + { + pMsg->Writebool(m_pbCanUseGear[i] != LTFALSE); + pMsg->Writebool(m_pbHaveGear[i] != LTFALSE); + } + + pMsg->Writeuint8(m_nCurrentWeapon); + pMsg->Writeuint8(m_nCurrentAmmo); + pMsg->Writefloat(m_fAirPercent); + + pMsg->Writebool(m_bHiding != LTFALSE); + pMsg->Writebool(m_bHidden != LTFALSE); + + pMsg->Writeuint32(m_nTotalSkillPoints); + pMsg->Writeuint32(m_nAvailSkillPoints); + for (uint32 nCurSkill = 0; nCurSkill < kNumSkills; ++nCurSkill) + pMsg->Writeuint8(m_nSkills[nCurSkill]); + +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Load +// +// PURPOSE: Load the player stats info +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::Load(ILTMessage_Read *pMsg) +{ + if (!pMsg || !g_pWeaponMgr) return; + + m_Objectives.Load(pMsg); + m_OptionalObjectives.Load(pMsg); + m_CompletedObjectives.Load(pMsg); + m_Parameters.Load(pMsg); + m_Keys.Load(pMsg); + + // Add the keys to the hud. + IDList::IDArray::iterator iter = m_Keys.m_IDArray.begin( ); + for( ; iter != m_Keys.m_IDArray.end( ); iter++ ) + { + g_pCarrying->AddKey( *iter ); + } + + m_IntelList.Load(pMsg); + + m_nHealth = pMsg->Readuint32(); + m_nDamage = pMsg->Readuint32(); + m_nArmor = pMsg->Readuint32(); + m_nMaxHealth = pMsg->Readuint32(); + m_nMaxArmor = pMsg->Readuint32(); + + + uint8 i; + int nNumAmmoTypes = g_pWeaponMgr->GetNumAmmoIds(); + for (i = 0; i < nNumAmmoTypes; i++) + { + m_pbCanUseAmmo[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_pbHaveAmmo[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_pnAmmo[i] = pMsg->Readuint32(); + } + + int nNumWeapons = g_pWeaponMgr->GetNumWeapons(); + for ( i = 0; i < nNumWeapons; i++) + { + m_pbCanUseWeapon[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_pbHaveWeapon[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + } + + int nNumMods = g_pWeaponMgr->GetNumModIds(); + for ( i = 0; i < nNumMods; i++) + { + m_pbCanUseMod[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_pbHaveMod[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + } + + int nNumGear = g_pWeaponMgr->GetNumGearIds(); + for ( i = 0; i < nNumGear; i++) + { + m_pbCanUseGear[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_pbHaveGear[i] = pMsg->Readbool() ? LTTRUE : LTFALSE; + } + + m_nCurrentWeapon = pMsg->Readuint8(); + m_nCurrentAmmo = pMsg->Readuint8(); + m_fAirPercent = pMsg->Readfloat(); + + m_bHiding = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bHidden = pMsg->Readbool() ? LTTRUE : LTFALSE; + + m_nTotalSkillPoints = pMsg->Readuint32(); + m_nAvailSkillPoints = pMsg->Readuint32(); + for (uint32 nCurSkill = 0; nCurSkill < kNumSkills; ++nCurSkill) + m_nSkills[nCurSkill] = pMsg->Readuint8(); + + UpdatePlayerWeapon(m_nCurrentWeapon, m_nCurrentAmmo, LTTRUE); +} +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::GetMod +// +// PURPOSE: Get the id of thefirst mod for the current weapon +// of the given type +// +// --------------------------------------------------------------------------- // + +uint8 CTO2PlayerStats::GetMod(ModType eType, const WEAPON* pW/*=LTNULL*/) +{ + uint8 nModId = WMGR_INVALID_ID; + int nPriority = -1; + + // [KLS - 02/13/02] Updated to support checking for mods on weapons other than + // the current weapon... + WEAPON const *pWpn = (pW ? pW : g_pWeaponMgr->GetWeapon(m_nCurrentWeapon)); + + if (pWpn) + { + for (int i=0; i < pWpn->nNumModIds; i++) + { + if (HaveMod(pWpn->aModIds[i])) + { + MOD const *pMod = g_pWeaponMgr->GetMod(pWpn->aModIds[i]); + + if (pMod && pMod->eType == eType) + { + // Get the mod with the hightest priority... + + if (pMod->nPriority > nPriority) + { + nPriority = pMod->nPriority; + nModId = pWpn->aModIds[i]; + } + } + } + } + } + + + return nModId; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::GetAmmoCount +// +// PURPOSE: Get the ammo count for the passed in ammo id +// +// --------------------------------------------------------------------------- // + +uint32 CTO2PlayerStats::GetAmmoCount(uint8 nAmmoId) const +{ + if (!m_pnAmmo || !g_pWeaponMgr->IsValidAmmoId(nAmmoId)) return 0; + + return m_pnAmmo[nAmmoId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::HaveWeapon +// +// PURPOSE: Do we have the weapon associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::HaveWeapon(uint8 nWeaponId) const +{ + if (!m_pbHaveWeapon || !g_pWeaponMgr->IsValidWeaponId(nWeaponId)) return LTFALSE; + + return m_pbHaveWeapon[nWeaponId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::CanUseWeapon +// +// PURPOSE: Can we use the weapon associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::CanUseWeapon(uint8 nWeaponId) const +{ + if (!m_pbCanUseWeapon || !g_pWeaponMgr->IsValidWeaponId(nWeaponId) || !g_pWeaponMgr->IsPlayerWeapon(nWeaponId)) return LTFALSE; + + return m_pbCanUseWeapon[nWeaponId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::HaveMod +// +// PURPOSE: Do we have the mod associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::HaveMod(uint8 nModId) const +{ + if (!m_pbHaveMod || !g_pWeaponMgr->IsValidModId(nModId)) return LTFALSE; + + return m_pbHaveMod[nModId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::CanUseMod +// +// PURPOSE: Can we use the mod associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::CanUseMod(uint8 nModId) const +{ + if (!m_pbCanUseMod || !g_pWeaponMgr->IsValidModId(nModId)) return LTFALSE; + + return m_pbCanUseMod[nModId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::HaveGear +// +// PURPOSE: Do we have the Gear associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::HaveGear(uint8 nGearId) const +{ + if (!m_pbHaveGear || !g_pWeaponMgr->IsValidGearId(nGearId)) return LTFALSE; + + return m_pbHaveGear[nGearId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::CanUseGear +// +// PURPOSE: Can we use the Gear associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::CanUseGear(uint8 nGearId) const +{ + if (!m_pbCanUseGear || !g_pWeaponMgr->IsValidGearId(nGearId)) return LTFALSE; + + return m_pbCanUseGear[nGearId]; +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::CanUseAmmo +// +// PURPOSE: Can we use the ammo associated with the passed in id +// +// --------------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::CanUseAmmo(uint8 nAmmoId) const +{ + if (!m_pbCanUseAmmo || !g_pWeaponMgr->IsValidAmmoId(nAmmoId)) return LTFALSE; + + return m_pbCanUseAmmo[nAmmoId]; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::AddCanUseWeapon +// +// PURPOSE: Add a weapon to our can use list +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::AddCanUseWeapon(uint8 nWeaponId) +{ + if (!m_pbCanUseWeapon || !g_pWeaponMgr->IsValidWeaponId(nWeaponId) || !g_pWeaponMgr->IsPlayerWeapon(nWeaponId)) return; + + m_pbCanUseWeapon[nWeaponId] = LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::AddCanUseMod +// +// PURPOSE: Add a mod to our can use list +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::AddCanUseMod(uint8 nModId) +{ + if (!m_pbCanUseMod || !g_pWeaponMgr->IsValidModId(nModId)) return; + + m_pbCanUseMod[nModId] = LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::AddCanUseGear +// +// PURPOSE: Add a Gear to our can use list +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::AddCanUseGear(uint8 nGearId) +{ + if (!m_pbCanUseGear || !g_pWeaponMgr->IsValidGearId(nGearId)) return; + + m_pbCanUseGear[nGearId] = LTTRUE; +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::AddCanUseAmmo +// +// PURPOSE: Add the ammo to our can use list +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::AddCanUseAmmo(uint8 nAmmoId) +{ + if (!m_pbCanUseAmmo || !g_pWeaponMgr->IsValidAmmoId(nAmmoId)) return; + + m_pbCanUseAmmo[nAmmoId] = LTTRUE; +} + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Setup +// +// PURPOSE: Setup the stats +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::Setup( ) +{ + if (!m_pnAmmo || !m_pbHaveWeapon || !m_pbCanUseAmmo || !m_pbCanUseWeapon) return; + +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::ResetInventory +// +// PURPOSE: Reset all inventory items +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::ResetInventory() +{ + // Clear our data... + + g_pPlayerMgr->GetClientWeaponMgr()->ResetWeapons(); + + int nNumAmmoTypes = g_pWeaponMgr->GetNumAmmoIds(); + if (nNumAmmoTypes > 0) + { + memset(m_pnAmmo, 0, sizeof(uint32) * nNumAmmoTypes); + memset(m_pbHaveAmmo, 0, sizeof(LTBOOL) * nNumAmmoTypes); + memset(m_pbCanUseAmmo, 0, sizeof(LTBOOL) * nNumAmmoTypes); + } + + int nNumWeapons = g_pWeaponMgr->GetNumWeapons(); + if (nNumWeapons > 0) + { + memset(m_pbHaveWeapon, 0, sizeof(LTBOOL) * nNumWeapons); + memset(m_pbCanUseWeapon, 0, sizeof(LTBOOL) * nNumWeapons); + } + + int nNumMods = g_pWeaponMgr->GetNumModIds(); + if (nNumMods > 0) + { + memset(m_pbHaveMod, 0, sizeof(LTBOOL) * nNumMods); + memset(m_pbCanUseMod, 0, sizeof(LTBOOL) * nNumMods); + } + + int nNumGear = g_pWeaponMgr->GetNumGearIds(); + if (nNumGear > 0) + { + memset(m_pbHaveGear, 0, sizeof(LTBOOL) * nNumGear); + memset(m_pbCanUseGear, 0, sizeof(LTBOOL) * nNumGear); + } + + m_Keys.Clear(); + g_pCarrying->ClearAllKeys( ); +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::DropInventory +// +// PURPOSE: Removes all currently carried weapons and ammo, optionally +// removes gear and mods +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::DropInventory(LTBOOL bRemoveGear) +{ + // Clear our data... + + g_pPlayerMgr->GetClientWeaponMgr()->ResetWeapons(); + + int nNumAmmoTypes = g_pWeaponMgr->GetNumAmmoIds(); + if (nNumAmmoTypes > 0) + { + memset(m_pnAmmo, 0, sizeof(uint32) * nNumAmmoTypes); + memset(m_pbHaveAmmo, 0, sizeof(LTBOOL) * nNumAmmoTypes); + } + + int nNumWeapons = g_pWeaponMgr->GetNumWeapons(); + if (nNumWeapons > 0) + { + memset(m_pbHaveWeapon, 0, sizeof(LTBOOL) * nNumWeapons); + } + + if (bRemoveGear) + { + int nNumMods = g_pWeaponMgr->GetNumModIds(); + if (nNumMods > 0) + { + memset(m_pbHaveMod, 0, sizeof(LTBOOL) * nNumMods); + } + + int nNumGear = g_pWeaponMgr->GetNumGearIds(); + if (nNumGear > 0) + { + memset(m_pbHaveGear, 0, sizeof(LTBOOL) * nNumGear); + } + + m_Keys.Clear(); + g_pCarrying->ClearAllKeys( ); + } + +} + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Skills +// +// PURPOSE: Reset all skill data +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::ResetSkills() +{ + // Clear our data... + m_nTotalSkillPoints = 0; + m_nAvailSkillPoints = 0; + memset(m_nSkills, 0, sizeof(m_nSkills)); + + +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::Objectives +// +// PURPOSE: Reset all Objective data +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::ResetObjectives() +{ + // Clear our data... + m_Objectives.Clear(); + m_OptionalObjectives.Clear(); + m_CompletedObjectives.Clear(); + m_Parameters.Clear(); + + if (g_pHUDMgr) + { + g_pObjectives->Show(false); + g_pHUDMgr->QueueUpdate(kHUDObjectives); + } + + +} + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::RestMissionStats +// +// PURPOSE: Reset all mission data +// +// --------------------------------------------------------------------------- // + +void CTO2PlayerStats::ResetMissionStats() +{ + // Clear our data... + m_MissionStats.Init(); +} + +void CTO2PlayerStats::ClearMissionInfo() +{ + ResetMissionStats(); + ResetObjectives(); + m_nDamage = 0; + m_Keys.Clear(); + g_pCarrying->ClearAllKeys( ); + m_IntelList.Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTO2PlayerStats::HaveAirSupply +// +// PURPOSE: Returns true if current gear provides air supply +// +// ----------------------------------------------------------------------- // + +LTBOOL CTO2PlayerStats::HaveAirSupply() +{ + LTBOOL bAir = LTFALSE; + GEAR const *pGear = LTNULL; + + int numGear = g_pWeaponMgr->GetNumGearIds(); + for (int nGearId=0; nGearId < numGear && !bAir; nGearId++) + { + if (m_pbHaveGear[nGearId]) + { + pGear = g_pWeaponMgr->GetGear(nGearId); + if (pGear) + { + bAir = ( (pGear->eProtectionType == DT_CHOKE) && (pGear->fProtection >= 1.0f) ); + } + } + } + return bAir; +} + + +uint32 CTO2PlayerStats::GetCurrentAmmoCount() +{ + if (!m_pnAmmo || m_nCurrentAmmo < 0 || m_nCurrentAmmo >= g_pWeaponMgr->GetNumAmmoIds()) + return 0; + return m_pnAmmo[m_nCurrentAmmo]; +} + + + +//Skills and experience functions +const RANK* CTO2PlayerStats::GetRank() +{ + return g_pSkillsButeMgr->GetRank(m_nTotalSkillPoints); +} + +uint32 CTO2PlayerStats::GetCostToUpgrade(eSkill skill) +{ + uint8 nTgtLevel = m_nSkills[skill] + 1; + if (nTgtLevel < kNumSkills) + return g_pSkillsButeMgr->GetCostToUpgrade(skill,(eSkillLevel)nTgtLevel); + else + return -1; +} + + +void CTO2PlayerStats::SetObjectivesSeen() +{ + g_pObjectives->Show(false); +} + +float CTO2PlayerStats::GetSkillModifier(eSkill skl, uint8 nMod) +{ + return g_pSkillsButeMgr->GetModifier(skl, (eSkillLevel)m_nSkills[skl], nMod); +} + diff --git a/Jack/ClientShellDLL/TO2PlayerStats.h b/Jack/ClientShellDLL/TO2PlayerStats.h new file mode 100644 index 00000000..0e583a13 --- /dev/null +++ b/Jack/ClientShellDLL/TO2PlayerStats.h @@ -0,0 +1,208 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TO2PlayerStats.h +// +// PURPOSE : Definition of PlayerStats class +// +// CREATED : 10/9/97 +// +// (c) 1997-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TO2PLAYERSTATS_H +#define __TO2PLAYERSTATS_H + +#include "ltbasedefs.h" +#include "weaponmgr.h" +#include "overlays.h" +#include "IDList.h" +#include "IntelItemList.h" +#include "SkillsButeMgr.h" +#include "PlayerStats.h" +#include "SharedMission.h" + + +class CTO2PlayerStats : public CPlayerStats +{ +public: + + CTO2PlayerStats(); + ~CTO2PlayerStats(); + + IDList* GetObjectives() { return &m_Objectives; } + IDList* GetOptionalObjectives() { return &m_OptionalObjectives; } + IDList* GetCompletedObjectives() { return &m_CompletedObjectives; } + IDList* GetParameters() { return &m_Parameters; } + IDList* GetKeys() { return &m_Keys; } + + CIntelItemList* GetIntelList() { return &m_IntelList; } + + LTBOOL Init(); + void Term(); + void Update(); + + void OnEnterWorld(LTBOOL bRestoringGame=LTFALSE); + void OnExitWorld(); + + void UpdatePlayerWeapon(uint8 nWeaponId, uint8 nAmmoId, LTBOOL bForce=LTFALSE); + void ResetStats(); + + void Clear(); + void UpdateHealth(uint32 nHealth); + void UpdateArmor(uint32 nArmor); + void UpdateMaxHealth(uint32 nHealth); + void UpdateMaxArmor(uint32 nArmor); + void UpdateEnergy(uint32 nEnergy) {} + void UpdateMaxEnergy(uint32 nEnergy) {} + void UpdateProgress(uint32 nProgress) { m_dwProgress = (nProgress >= m_dwMaxProgress ? m_dwMaxProgress : nProgress); } + void UpdateMaxProgress(uint32 nMaxProgress) { m_dwMaxProgress = nMaxProgress; } + void UpdateAmmo(uint8 nWeaponId, uint8 nAmmoId, uint32 nAmmo, LTBOOL bPickedup=LTFALSE, LTBOOL bDisplayMsg=LTTRUE, bool bActivatingPickup=false); + void UpdateGear(uint8 nGearId); + void UpdateMod(uint8 nModId); + void UpdateAir(LTFLOAT nPercent); + void UpdateObjectives(uint8 nThing, uint8 nType, uint32 dwId); + void UpdateKeys(uint8 nType, uint16 dwId); + void UpdateIntel(uint32 nTextId, uint8 nPopupId, LTBOOL bIsIntel); + void UpdateHiding(LTBOOL bIsHiding, LTBOOL bIsHidden, LTBOOL bCantHide, float fHideDuration); + void UpdateSkills(ILTMessage_Read *pMsg); + void GainSkills(uint8 nRewardId, uint8 nBonusId, uint16 nAmount); + void UpdateMissionStats(ILTMessage_Read *pMsg); + + void ResetSkills(); //clears all skill data + void ResetObjectives(); //clears all objective data + void ResetMissionStats(); + + void ResetInventory(); //clears all inventory data + void DropInventory(LTBOOL bResetGear=LTTRUE); //drops are currently carried weapons and ammo + // also drops gear and mods if bResetGear is set + + void OnObjectivesDataMessage(ILTMessage_Read *pMsg); + + void ClearMissionInfo(); + int GetMissionDamage() {return m_nDamage;} + + void SetObjectivesSeen(); + + const MissionStats* GetMissionStats() const {return &m_MissionStats;} + + void Save(ILTMessage_Write *pMsg); + void Load(ILTMessage_Read *pMsg); + + uint8 GetCurWeapon() const { return m_nCurrentWeapon; } + + // [KLS - 02/13/02] Updated to support checking for mods on weapons other than + // the current weapon... + uint8 GetMod(ModType eType, const WEAPON* pW=LTNULL); + inline uint8 GetSilencer(const WEAPON* pW=LTNULL) { return GetMod(SILENCER, pW); } + inline uint8 GetScope(const WEAPON* pW=LTNULL) { return GetMod(SCOPE, pW); } + + inline LTBOOL CanBeSilenced() { return (GetSilencer() != WMGR_INVALID_ID); } + inline LTBOOL CanHaveScope() { return (GetScope() != WMGR_INVALID_ID); } + + + + uint32 GetAmmoCount(uint8 nAmmoId) const; + LTBOOL HaveWeapon(uint8 nWeaponId) const; + LTBOOL HaveMod(uint8 nModId) const; + LTBOOL HaveGear(uint8 nGearId) const; + + LTBOOL CanUseWeapon(uint8 nWeaponId) const; + LTBOOL CanUseAmmo(uint8 nAmmoId) const; + LTBOOL CanUseMod(uint8 nModId) const; + LTBOOL CanUseGear(uint8 nGearId) const; + + + void Setup( ); + + LTBOOL HaveAirSupply(); + + + uint32 GetHealth() { return m_nHealth;} // current health + uint32 GetMaxHealth() { return m_nMaxHealth;} // current maximum health + uint32 GetArmor() { return m_nArmor;} // current armor + uint32 GetMaxArmor() { return m_nMaxArmor;} // current maximum armor + uint32 GetEnergy() { return 0; } + uint32 GetMaxEnergy() { return 0; } + LTFLOAT GetAirPercent() { return m_fAirPercent;} + uint32 GetProgress() { return m_dwProgress; } + uint32 GetMaxProgress(){ return m_dwMaxProgress; } + + uint8 GetCurrentWeapon() { return m_nCurrentWeapon;} // current weapon + uint8 GetCurrentAmmo() { return m_nCurrentAmmo;} // current ammo + + uint32 GetCurrentAmmoCount(); + + LTBOOL IsHiding() {return m_bHiding;} + LTBOOL IsHidden() {return m_bHidden;} + LTBOOL CanHide() {return !m_bCantHide; } + float GetHideDuration() { return m_fHideDuration; } + + uint32 GetTotalSkillPoints() {return m_nTotalSkillPoints;} + uint32 GetAvailSkillPoints() {return m_nAvailSkillPoints;} + uint8 GetSkillLevel(eSkill skill) {return m_nSkills[skill]; } + + const RANK* GetRank(); + uint32 GetCostToUpgrade(eSkill skill); + float GetSkillModifier(eSkill skl, uint8 nMod); + +protected: + + void AddCanUseWeapon(uint8 nWeaponId); + void AddCanUseAmmo(uint8 nAmmoId); + void AddCanUseMod(uint8 nModId); + void AddCanUseGear(uint8 nGearId); + + +protected: + + uint32 m_nHealth; // current health + uint32 m_nArmor; // current armor + uint32 m_nMaxHealth; // current maximum health + uint32 m_nMaxArmor; // current maximum armor + LTFLOAT m_fAirPercent; + uint32* m_pnAmmo; // All ammo values + LTBOOL* m_pbHaveAmmo; // ammos that player had during mission + LTBOOL* m_pbHaveWeapon; // Weapon status + uint8 m_nCurrentWeapon; // current weapon + uint8 m_nCurrentAmmo; // current ammo + LTBOOL* m_pbHaveMod; // Mod status + LTBOOL* m_pbHaveGear; // Gear status + + uint32 m_nTotalSkillPoints; + uint32 m_nAvailSkillPoints; + uint8 m_nSkills[kNumSkills]; + + LTBOOL* m_pbCanUseAmmo; // Can we use this ammo + LTBOOL* m_pbCanUseWeapon; // Can we carry this Weapon + LTBOOL* m_pbCanUseMod; // Can we carry this Mod + LTBOOL* m_pbCanUseGear; // Can we carry this Gear + + int m_nDamage; // Damage taken during this mission + + LTBOOL m_bHidden; //player is hidden + LTBOOL m_bHiding; //player is trying to hide + LTBOOL m_bCantHide; //player is unable to hide + float m_fHideDuration; // how long it takes player to become hidden + + IDList m_Objectives; + IDList m_OptionalObjectives; + IDList m_CompletedObjectives; + IDList m_Parameters; + IDList m_Keys; + + CIntelItemList m_IntelList; + + + LTBOOL m_bObjAdded; + LTBOOL m_bObjRemoved; + LTBOOL m_bObjCompleted; + + MissionStats m_MissionStats; + + uint32 m_dwProgress; + uint32 m_dwMaxProgress; + +}; + +#endif // __TO2PLAYERSTATS_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/TO2ScreenMgr.cpp b/Jack/ClientShellDLL/TO2ScreenMgr.cpp new file mode 100644 index 00000000..571133f4 --- /dev/null +++ b/Jack/ClientShellDLL/TO2ScreenMgr.cpp @@ -0,0 +1,275 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMgr.cpp +// +// PURPOSE : Interface screen manager +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "stdafx.h" +#include "TO2ScreenMgr.h" + +//screens +#include "BaseScreen.h" +#include "ScreenMain.h" + +//under main +#include "ScreenSingle.h" +#include "ScreenMulti.h" +#include "ScreenOptions.h" +#include "ScreenProfile.h" + +//under single +#include "ScreenLoad.h" +#include "ScreenSave.h" + +//under multi +#include "ScreenPlayer.h" +#include "ScreenHost.h" +#include "ScreenJoin.h" +#include "ScreenPlayerTeam.h" + +//under options +#include "ScreenDisplay.h" +#include "ScreenAudio.h" +#include "ScreenControls.h" +#include "ScreenGame.h" +#include "ScreenPerformance.h" + +//under multi/host +#include "ScreenHostOptions.h" +#include "ScreenHostDMOptions.h" +#include "ScreenHostTDMOptions.h" +#include "ScreenHostDemolitionOptions.h" +#include "ScreenHostDDOptions.h" +#include "ScreenHostMission.h" +#include "ScreenHostLevels.h" +#include "ScreenHostWeapons.h" +#include "ScreenTeam.h" + +//under options/game +#include "ScreenCrosshair.h" + +//under options/controls +#include "ScreenMouse.h" +#include "ScreenKeyboard.h" +#include "ScreenJoystick.h" +#include "ScreenConfigure.h" + + +#include "ScreenFailure.h" +#include "ScreenEndMission.h" +#include "ScreenEndCoopMission.h" +#include "ScreenEndDMMission.h" +#include "ScreenPreload.h" +#include "ScreenPostload.h" + +#include "GameClientShell.h" +extern CGameClientShell* g_pGameClientShell; + + +static char s_aScreenName[SCREEN_ID_UNASSIGNED+1][32] = +{ +#define INCLUDE_AS_STRING +#include "ScreenEnum.h" +#undef INCLUDE_AS_STRING + +}; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CTO2ScreenMgr::CTO2ScreenMgr() +{ + m_eCurrentScreenID = SCREEN_ID_NONE; + m_eLastScreenID = SCREEN_ID_NONE; +} + +CTO2ScreenMgr::~CTO2ScreenMgr() +{ + +} + + +////////////////////////////////////////////////////////////////////// +// Function name : CTO2ScreenMgr::Init +// Description : +// Return type : LTBOOL +////////////////////////////////////////////////////////////////////// + +LTBOOL CTO2ScreenMgr::Init() +{ + //build screen array + m_screenArray.reserve(SCREEN_ID_UNASSIGNED); + + for (int nID = SCREEN_ID_MAIN; nID < SCREEN_ID_UNASSIGNED; ++nID) + { + AddScreen((eScreenID)nID); + } + + return CScreenMgr::Init(); +} + + +void CTO2ScreenMgr::SwitchToScreen(CBaseScreen *pNewScreen) +{ + + CScreenMgr::SwitchToScreen(pNewScreen); + + // Do any special case work for each screen + if (m_eCurrentScreenID == SCREEN_ID_MAIN) + { + m_nHistoryLen = 0; + m_eScreenHistory[0] = SCREEN_ID_NONE; + } + +} + + + + +void CTO2ScreenMgr::AddScreen(eScreenID screenID) +{ + CBaseScreen* pScreen = LTNULL; + switch (screenID) + { + case SCREEN_ID_MAIN: + pScreen = debug_new(CScreenMain); + break; + case SCREEN_ID_SINGLE: + pScreen = debug_new(CScreenSingle); + break; + case SCREEN_ID_MULTI: + pScreen = debug_new(CScreenMulti); + break; + case SCREEN_ID_OPTIONS: + pScreen = debug_new(CScreenOptions); + break; + case SCREEN_ID_PROFILE: + pScreen = debug_new(CScreenProfile); + break; + case SCREEN_ID_LOAD: + pScreen = debug_new(CScreenLoad); + break; + case SCREEN_ID_SAVE: + pScreen = debug_new(CScreenSave); + break; + case SCREEN_ID_HOST: + pScreen = debug_new(CScreenHost); + break; + case SCREEN_ID_HOST_OPTIONS: + pScreen = debug_new(CScreenHostOptions); + break; + case SCREEN_ID_HOST_DM_OPTIONS: + pScreen = debug_new(CScreenHostDMOptions); + break; + case SCREEN_ID_HOST_TDM_OPTIONS: + pScreen = debug_new(CScreenHostTDMOptions); + break; + case SCREEN_ID_HOST_DE_OPTIONS: + pScreen = debug_new(CScreenHostDemolitionOptions); + break; + case SCREEN_ID_HOST_DD_OPTIONS: + pScreen = debug_new(CScreenHostDDOptions); + break; + case SCREEN_ID_HOST_LEVELS: + pScreen = debug_new(CScreenHostLevels); + break; + case SCREEN_ID_HOST_WEAPONS: + pScreen = debug_new(CScreenHostWeapons); + break; + case SCREEN_ID_HOST_MISSION: + pScreen = debug_new(CScreenHostMission); + break; + case SCREEN_ID_TEAM: + pScreen = debug_new(CScreenTeam); + break; + case SCREEN_ID_JOIN: + pScreen = debug_new(CScreenJoin); + break; + case SCREEN_ID_PLAYER: + pScreen = debug_new(CScreenPlayer); + break; + case SCREEN_ID_PLAYER_TEAM: + pScreen = debug_new(CScreenPlayerTeam); + break; + case SCREEN_ID_AUDIO: + pScreen = debug_new(CScreenAudio); + break; + case SCREEN_ID_DISPLAY : + pScreen = debug_new(CScreenDisplay); + break; + case SCREEN_ID_GAME : + pScreen = debug_new(CScreenGame); + break; + case SCREEN_ID_PERFORMANCE : + pScreen = debug_new(CScreenPerformance); + break; + case SCREEN_ID_CROSSHAIR: + pScreen = debug_new(CScreenCrosshair); + break; + case SCREEN_ID_CONTROLS: + pScreen = debug_new(CScreenControls); + break; + case SCREEN_ID_MOUSE: + pScreen = debug_new(CScreenMouse); + break; + case SCREEN_ID_KEYBOARD: + pScreen = debug_new(CScreenKeyboard); + break; + case SCREEN_ID_JOYSTICK: + pScreen = debug_new(CScreenJoystick); + break; + case SCREEN_ID_CONFIGURE: + pScreen = debug_new(CScreenConfigure); + break; + case SCREEN_ID_FAILURE: + pScreen = debug_new(CScreenFailure); + break; + case SCREEN_ID_END_MISSION: + pScreen = debug_new(CScreenEndMission); + break; + case SCREEN_ID_END_COOP_MISSION: + pScreen = debug_new(CScreenEndCoopMission); + break; + case SCREEN_ID_END_DM_MISSION: + pScreen = debug_new(CScreenEndDMMission); + break; + case SCREEN_ID_PRELOAD: + pScreen = debug_new(CScreenPreload); + break; + case SCREEN_ID_POSTLOAD: + pScreen = debug_new(CScreenPostload); + break; + + } + + if (pScreen) + { + pScreen->Init(screenID); + CScreenMgr::AddScreen(pScreen); + } + +} + + +const char* CTO2ScreenMgr::GetScreenName(eScreenID id) +{ + return s_aScreenName[id]; +} + +// Returns a screen ID (uint16) based on a name +uint16 CTO2ScreenMgr::GetScreenIDFromName(char * pName) +{ + for (uint16 i=0; i < SCREEN_ID_UNASSIGNED; ++i) + { + if (!strcmpi(pName, s_aScreenName[i])) + return (i); + } + return 999; +} diff --git a/Jack/ClientShellDLL/TO2ScreenMgr.h b/Jack/ClientShellDLL/TO2ScreenMgr.h new file mode 100644 index 00000000..5a43cf7f --- /dev/null +++ b/Jack/ClientShellDLL/TO2ScreenMgr.h @@ -0,0 +1,34 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : ScreenMgr.h +// +// PURPOSE : Interface screen manager +// +// (c) 1999-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_TO2_SCREEN_MGR_H_) +#define _TO2_SCREEN_MGR_H_ + +#include "ScreenMgr.h" + +class CTO2ScreenMgr : public CScreenMgr +{ +public: + CTO2ScreenMgr(); + virtual ~CTO2ScreenMgr(); + virtual LTBOOL Init(); + virtual const char * GetScreenName(eScreenID id); + virtual uint16 GetScreenIDFromName(char * pName); + + +protected: + + void AddScreen(eScreenID screenID); + virtual void SwitchToScreen(CBaseScreen *pNewScreen); + +}; + +#endif // _SCREENMGR_H_ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TargetMgr.cpp b/Jack/ClientShellDLL/TargetMgr.cpp new file mode 100644 index 00000000..3314f09a --- /dev/null +++ b/Jack/ClientShellDLL/TargetMgr.cpp @@ -0,0 +1,1247 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TargetMgr.cpp +// +// PURPOSE : Implementation of class to handle tracking whjat the player is aimed at. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TargetMgr.h" +#include "PlayerMgr.h" +#include "CMoveMgr.h" +#include "SurfaceFunctions.h" +#include "GameClientShell.h" +#include "ClientServerShared.h" +#include "ClientButeMgr.h" +#include "BodyFX.h" +#include "CharacterFX.h" +#include "PickupItemFX.h" +#include "GadgetTargetFX.h" +#include "PlayerVehicleFX.h" +#include "VarTrack.h" +#include "clientres.h" +#include "ActivateObjectFX.h" +#include "Searcher.h" +#include "GadgetDisabler.h" +#include "VehicleMgr.h" +#include "ChassisPieceFX.h" +#include "ChassisFX.h" + +VarTrack g_vtActivationDistance; +VarTrack g_vtReviveDistance; +VarTrack g_vtTargetDistance; + +extern VarTrack g_vtCamZoom1MaxDist; + +static bool DoVectorPolyFilterFn(HPOLY hPoly, void *pUserData); +static bool ActivateFilterFn(HOBJECT hTest, void *pUserData); + +CActivationData g_adFallbackActivationObject; + +static bool IsUserFlagSet(HOBJECT hObj, uint32 dwTestFlags) +{ + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_User, dwFlags); + return !!(dwFlags & dwTestFlags); +} + +static void SetFallbackActivationObject(HOBJECT hObj, IntersectQuery* pQuery) +{ + if (!pQuery) + return; + + // Use the Query object to determine how far away this object is from the + // activation start point. It must be within the activation range for us + // to use it... + + LTVector vObjPos; + g_pLTClient->GetObjectPos(hObj, &vObjPos); + + LTVector vDir = (pQuery->m_From - vObjPos); + float fDist = vDir.Mag(); + + // Since fDist is the distance to the center of the object we need to account + // for the object's radius. This may give us some false positives since the + // object's using an axis-aligned bounding box, but a false positive is better + // than a negative ;). Since we can't get the object's dims here's a nice + // magic number for all you kiddies at home that are paying attention... + + fDist -= 35.0f; + + if (fDist > g_vtActivationDistance.GetFloat()) + return; + + + if (g_adFallbackActivationObject.m_hTarget) + { + // Don't set if my current target is activatable (doesn't matter + // if new one is activatable or not, we'll just keep the one we have)... + + if ( !IsUserFlagSet(g_adFallbackActivationObject.m_hTarget, + (USRFLG_CAN_ACTIVATE | USRFLG_CAN_SEARCH)) ) + { + g_adFallbackActivationObject.m_hTarget = hObj; + } + } + else + { + g_adFallbackActivationObject.m_hTarget = hObj; + } +} + +CTargetMgr::CTargetMgr() +{ + m_hTarget = NULL; + m_hLockedTarget = NULL; + m_fTargetRange = 10000.0f; + m_nTargetTeam = INVALID_TEAM; + m_szString[0] = 0; + m_szDebugString[0] = 0; + m_nString = 0; + + m_bSearchTarget = false; + m_bMoveTarget = false; + m_bCanActivate = false; + m_bFirstUpdate = true; + m_bDelayGadgetText = false; +} + + +CTargetMgr::~CTargetMgr() +{ +} + +void CTargetMgr::FirstUpdate() +{ + if (!g_vtActivationDistance.IsInitted()) + { + float f = g_pClientButeMgr->GetInterfaceAttributeFloat("ActivationDistance",100.0f); + g_vtActivationDistance.Init(g_pLTClient, "ActivationDistance", LTNULL, f); + } + + if (!g_vtReviveDistance.IsInitted()) + { + float f = g_pClientButeMgr->GetInterfaceAttributeFloat("ReviveDistance",200.0f); + g_vtReviveDistance.Init(g_pLTClient, "ReviveDistance", LTNULL, f); + } + + if( !g_vtTargetDistance.IsInitted() ) + { + float f = g_pClientButeMgr->GetInterfaceAttributeFloat("TargetDistance",1000.0f); + g_vtTargetDistance.Init(g_pLTClient, "TargetDistance", LTNULL, f); + } +} + + +void CTargetMgr::Update() +{ + + // Do any necessary initialization... + + if (m_bFirstUpdate) + { + FirstUpdate(); + m_bFirstUpdate = false; + } + + + if (m_hLockedTarget && m_hTarget == m_hLockedTarget) + { + //are we disabling a GadgetTarget? + if (g_pPlayerMgr->IsDisabling()) + { + // m_bDelayGadgetText is a hack to ensure a one-frame delay after the client thinks + // a gadget target has changed state so that the server objects can be updated + if (!m_bDelayGadgetText) + SetGadgetTarget( true ); + m_bDelayGadgetText = false; + return; + } + + //are we searching something? + if (g_pPlayerMgr->IsSearching()) + { + m_bSearchTarget = true; + SetTargetStringID(IDS_TARGET_SEARCHING); + + float fDistAway = 10000.0f; + CheckForIntersect(fDistAway); + + return; + } + } + + g_pPlayerStats->UpdateMaxProgress( 0 ); + g_pPlayerStats->UpdateProgress( 0 ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + + + // If we currently have a target, see if it is a body and if so remove the + // glow flag (it may be set again below)... + if (m_hTarget) + { + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(m_hTarget); + if (pBody) + { + g_pCommonLT->SetObjectFlags(m_hTarget, OFT_User, 0, USRFLG_GLOW); + } + } + + + // Start fresh + ClearTargetInfo(); + + + //see what we've looking at + float fDistAway = 10000.0f; + CheckForIntersect(fDistAway); + if (!m_hTarget) + { + //nothing to see here + return; + } + + m_fTargetRange = fDistAway; + + //if its a body's hitbox, check the body instead + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox(m_hTarget); + if (pBody) + { + m_hTarget = pBody->GetServerObj(); + m_ActivationData.m_hTarget = m_hTarget; + if (!m_hTarget) return; + } + + //if its a Character's hitbox and it is searchable, check the Character instead + CCharacterFX* pCharacterFX = g_pGameClientShell->GetSFXMgr()->GetCharacterFromHitBox(m_hTarget); + if (pCharacterFX) + { + m_hTarget = pCharacterFX->GetServerObj(); + m_ActivationData.m_hTarget = m_hTarget; + if (!m_hTarget) return; + } + + + + uint32 dwUserFlags = 0; + g_pCommonLT->GetObjectFlags(m_hTarget, OFT_User, dwUserFlags); + + // If we're on a vehicle (or if we are dead) all we care about is other players in a multiplayer game... + // Some vehicles (like the PlayerLure) let you activate, so we'll just check if the + // vehicle will let us show a crosshair to see if we're on a "true" vehicle or not... + + // It would be great if we didn't have to do all these checks, but such is life... + + bool bPlayersOnly = g_pPlayerMgr->IsPlayerDead() || (g_pPlayerMgr->GetMoveMgr()->GetVehicleMgr()->CanShowCrosshair() ? false : true); + + + if (!bPlayersOnly) + { + //special case handling for bodies + if (pBody || pCharacterFX) + { + bool bCanSearch = !!(dwUserFlags & USRFLG_CAN_SEARCH); + m_bCanActivate = false; + if (pBody) + { + if (pBody->CanBeRevived() && fDistAway <= g_vtReviveDistance.GetFloat() && IsRevivePlayerGameType( )) + { + // Get the client information of the body and us. + uint32 nId = pBody->GetClientId(); + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + + // Only allow us to revive people on the same team. For non-team games, + // the teamid will be set to the same invalid value anyway. + if( pCI && pLocalCI ) + { + if (pCI->nTeamID == pLocalCI->nTeamID) + { + m_nString = 0; + FormatString(IDS_TARGET_REVIVE, m_szString, ARRAY_LEN(m_szString), pCI->sName.c_str()); + + LTVector vObjPos, vDims; + g_pLTClient->GetObjectPos(pBody->GetServerObj(), &vObjPos); + g_pPhysicsLT->GetObjectDims(pBody->GetServerObj(), &vDims); + + // Players are non-solid to each other so you can revive right on top of them. + m_bCanActivate = true; //!CheckForCharacters(vObjPos, vDims, pBody->GetClientId()); + m_bMoveTarget = true; + m_ActivationData.m_nType = MID_ACTIVATE_REVIVE; + + // Make target glow, so it stands out more... + g_pCommonLT->SetObjectFlags(m_hTarget, OFT_User, USRFLG_GLOW, USRFLG_GLOW); + } + else + { + m_nString = 0; + m_bCanActivate = false; + m_bMoveTarget = false; + LTStrCpy(m_szString, pCI->sName.c_str(), ARRAY_LEN(m_szString)); + + } + } + } + else + { + m_bMoveTarget = (pBody->CanBeCarried() && g_pPlayerMgr->CanDropCarriedObject()); + } + + // If we can do anything with the body, make it glow so it stands out more. + if( m_bMoveTarget || bCanSearch ) + { + g_pCommonLT->SetObjectFlags(m_hTarget, OFT_User, USRFLG_GLOW, USRFLG_GLOW); + } + + // If we can't do anything to the target, clear the target. + if( !m_bSearchTarget && !m_bCanActivate && !m_bMoveTarget ) + { + ClearTargetInfo(); + return; + } + } + else if (pCharacterFX) + { + if( (pCharacterFX->m_cs.eCrosshairCharacterClass != BAD) && (pCharacterFX->CanWake()) && + (pCharacterFX->IsUnconscious() || (pCharacterFX->Slipped() && !pCharacterFX->m_cs.bIsPlayer)) ) + { + SetTargetStringID( IDS_TARGET_WAKEUP ); + + m_bCanActivate = true; + m_bMoveTarget = g_pPlayerMgr->CanDropCarriedObject() && pCharacterFX->CanBeCarried(); + + m_ActivationData.m_nType = MID_ACTIVATE_WAKEUP; + return; + } + + m_bMoveTarget = g_pPlayerMgr->CanDropCarriedObject() && pCharacterFX->CanBeCarried(); + } + else + { + m_bMoveTarget = false; + } + + if (bCanSearch && fDistAway <= g_vtActivationDistance.GetFloat()) + { + // we can search this body + m_bSearchTarget = true; + m_ActivationData.m_nType = MID_ACTIVATE_SEARCH; + SetTargetStringID(IDS_TARGET_SEARCH); + + uint8 nProgress = g_pPlayerMgr->GetSearcher()->GetMaxProgress(); + g_pPlayerStats->UpdateMaxProgress( nProgress ); + g_pPlayerStats->UpdateProgress( nProgress ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + + return; + } + } + else + { + float fGadgetDistance = g_vtActivationDistance.GetFloat(); + if( dwUserFlags & USRFLG_GADGET_CAMERA ) + { + fGadgetDistance = g_vtCamZoom1MaxDist.GetFloat(); + } + + // is this a gadget target + if (IsGadgetActivatable(m_hTarget) && (fDistAway <= fGadgetDistance)) + { + // looks like we can use a gadget on it... + + // m_bDelayGadgetText is a hack to ensure a one-frame delay after the client thinks + // a gadget target has changed state so that the server objects can be updated + if (!m_bDelayGadgetText) + SetGadgetTarget( false ); + m_bDelayGadgetText = false; + return; + } + } + } + + //are we aiming at a person? + if (dwUserFlags & USRFLG_CHARACTER) + { +// CCharacterFX* const pFX = (CCharacterFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_CHARACTER_ID, m_hTarget); + + // All we care about if we're on a vehicle (or if we are dead) is the Multiplayer check below... + + if (!bPlayersOnly) + { + //display debug info if we have any + if( pCharacterFX && pCharacterFX->GetInfoString() && *pCharacterFX->GetInfoString() ) + { + SAFE_STRCPY(m_szDebugString,pCharacterFX->GetInfoString()); + } + else + { + m_szDebugString[0] = NULL; + } + + // is this a person we can talk to? + if (dwUserFlags & USRFLG_CAN_ACTIVATE) + { + if (fDistAway <= g_vtActivationDistance.GetFloat()) + { + SetTargetStringID(IDS_TARGET_TALK); + return; + } + } + } + + // This is the only thing we care about if we're dead or on a vehicle...(we care + // if we're off a vehicle too) + + if (IsMultiplayerGame() && pCharacterFX && pCharacterFX->m_cs.bIsPlayer ) + { + uint32 nId = pCharacterFX->m_cs.nClientID; + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + + if (pCI) + { + m_nString = 0; + SAFE_STRCPY(m_szString,pCI->sName.c_str()); + m_bCanActivate = true; + + if (IsTeamGameType()) + { + m_nTargetTeam = pCI->nTeamID; + } + } + return; + } + + // All we care about if we're dead or on a vehicle is the Multiplayer check above... + + if (!bPlayersOnly) + { + if( (fDistAway <= g_vtTargetDistance.GetFloat()) && pCharacterFX ) + { + // If a nameid was specified for the model display the name... + + uint16 nNameId = g_pModelButeMgr->GetModelNameId( pCharacterFX->m_cs.eModelId ); + if( nNameId != (uint16)-1 ) + { + if( nNameId > 0 ) + { + SetTargetStringID( nNameId ); + return; + } + + // warn the player if we are pointing at a friend... + if( pCharacterFX->m_cs.eCrosshairCharacterClass != BAD ) + { + //Since Contract Jack has no friends, show nothing + //SetTargetStringID( IDS_TARGET_INNOCENT ); + SetTargetStringID( NULL ); + return; + } + } + } + } + } + + // All we care about if we're dead or on a vehicle is the above Multiplayer check... + if (bPlayersOnly) + { + // Didn't see another player in Multiplayer, so we have no target... + ClearTargetInfo(); + return; + } + + //is this a searchable object? + if (dwUserFlags & USRFLG_CAN_SEARCH && (fDistAway <= g_vtActivationDistance.GetFloat())) + { + m_bSearchTarget = true; + m_ActivationData.m_nType = MID_ACTIVATE_SEARCH; + SetTargetStringID(IDS_TARGET_SEARCH); + + uint8 nProgress = g_pPlayerMgr->GetSearcher()->GetMaxProgress(); + g_pPlayerStats->UpdateMaxProgress( nProgress ); + g_pPlayerStats->UpdateProgress( nProgress ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + + return; + + } + + // See if this object is part of the activate object list with it's own string ID's... + + if( fDistAway <= g_vtActivationDistance.GetFloat() ) + { + CActivateObjectHandler *pActivateObj = LTNULL; + CActivateObjectHandler::ActivateObjList::const_iterator iter = CActivateObjectHandler::GetActivateObjectList().begin(); + while( iter != CActivateObjectHandler::GetActivateObjectList().end() ) + { + pActivateObj = *iter; + + if( pActivateObj->GetHOBJECT() == m_hTarget ) + { + ACTIVATETYPE *pType = g_pActivateTypeMgr->GetActivateType( pActivateObj->m_nId ); + if( pType ) + { + // Set whether or not it's disabled and set the string based on the state... + + m_bCanActivate = !pActivateObj->m_bDisabled; + uint32 dwStringID = pType->dwStateID[pActivateObj->m_eState]; + + if( dwStringID != (uint32)-1 ) + { + SetTargetStringID( dwStringID ); + } + + return; + } + } + + ++iter; + } + } + + //can we pick up or activate it? + bool bCanActivate = !!( dwUserFlags & USRFLG_CAN_ACTIVATE ); + if( fDistAway <= g_vtActivationDistance.GetFloat()) + { + if( bCanActivate ) + { + //special case for bombs to defuse + CGadgetTargetFX* const pGTFX = (CGadgetTargetFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_GADGETTARGET_ID, m_hTarget); + if(pGTFX) + { + GadgetTargetType eGadgetType = pGTFX->GetType(); + if (eBombable == eGadgetType) + { + // Can only defuse a bomb that doesn't belong to your team... + + if( IsTeamGameType() ) + { + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return; + + if( pGTFX->GetTeamID() != INVALID_TEAM ) + { + if( pLocalCI->nTeamID == pGTFX->GetTeamID() ) + { + m_bCanActivate = false; + } + } + } + + SetTargetStringID(IDS_TARGET_DEFUSE); + return; + } + } + + //special case for vehicles + CPlayerVehicleFX* const pPVFX = (CPlayerVehicleFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_PLAYERVEHICLE_ID, m_hTarget); + if(pPVFX) + { + if (g_pPlayerMgr->GetMoveMgr()->IsDucking()) + { + bCanActivate = false; + } + } + + } + + ChassisFX *pChassisFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_CHASSIS_ID, m_hTarget )); + ChassisPieceFX *pChassisPieceFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_CHASSISPIECE_ID, m_hTarget )); + + if( bCanActivate ) + { + // Handle pickups and non-chassis stuff. We skip chassis stuff here because we'll handle them after this block. + CPickupItemFX* const pFX = (CPickupItemFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_PICKUPITEM_ID, m_hTarget); + if( pFX || ( !pChassisFX && !pChassisPieceFX )) + { + // If this is a pickupitem, then display any team association it has. + if( IsTeamGameType() && pFX ) + { + m_nTargetTeam = pFX->GetTeamId( ); + } + + // If we're looking at a pickup, use the take string, otherwise it's just something to interact with. + SetTargetStringID( pFX ? IDS_TARGET_TAKE : IDS_TARGET_USE); + return; + } + } + + // Are we looking at a chassis piece... + if( !g_pPlayerMgr->GetCarryingObject( )) + { + if( pChassisPieceFX ) + { + m_ActivationData.m_nType = MID_ACTIVATE_MOVE; + m_bMoveTarget = true; + m_bCanActivate = false; + + if( bCanActivate ) + { + ACTIVATETYPE *pType = g_pActivateTypeMgr->GetActivateType( pChassisPieceFX->GetActivateId( )); + if( pType ) + { + uint32 nStringId = pType->dwStateID[0]; + if( nStringId != (uint32)-1 ) + { + SetTargetStringID( nStringId ); + m_bCanActivate = true; + } + } + } + + return; + } + } + + // Are we looking at a chassis... + if( g_pPlayerMgr->GetCarryingChassisPiece( )) + { + if( pChassisFX && (fDistAway <= pChassisFX->GetDropZoneRadius( ))) + { + m_ActivationData.m_nType = MID_ACTIVATE_MOVE; + m_bMoveTarget = true; + m_bCanActivate = false; + + if( bCanActivate ) + { + ACTIVATETYPE *pType = g_pActivateTypeMgr->GetActivateType( pChassisFX->GetActivateId( )); + if( pType ) + { + uint32 nStringId = pType->dwStateID[0]; + if( nStringId != (uint32)-1 ) + { + SetTargetStringID( nStringId ); + m_bCanActivate = true; + } + } + } + + return; + } + } + } +} + + + + +// --------------------------------------------------------------------------- // +// +// ROUTINE: CPlayerMgr::CheckForIntersect() +// +// PURPOSE: See if there is an activation object directly in front of +// the camera. +// +// ----------------------------------------------------------------------- // + +void CTargetMgr::CheckForIntersect(float &fDistAway) +{ + m_hTarget = LTNULL; + m_ActivationData.Init(); + + uint32 dwUsrFlags = 0; + const float fMaxDist = 100000.0f; + + // Cast ray from the camera to see if there is an object to activate... + + LTRotation rRot; + LTVector vPos; + + HLOCALOBJ hCamera = g_pPlayerMgr->GetCamera(); + g_pLTClient->GetObjectPos(hCamera, &vPos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + m_ActivationData.m_vPos = vPos; + m_ActivationData.m_rRot = rRot; + + IntersectQuery IQuery; + IntersectInfo IInfo; + + IQuery.m_From = vPos; + IQuery.m_To = IQuery.m_From + (rRot.Forward() * fMaxDist); + + // NOTE the use of the CHECK_FROM_POINT_INSIDE_OBJECTS flag. This flag will + // make sure that any objects that m_From is inside are considered + IQuery.m_Flags = CHECK_FROM_POINT_INSIDE_OBJECTS | INTERSECT_HPOLY | INTERSECT_OBJECTS | IGNORE_NONSOLID; + + IQuery.m_FilterActualIntersectFn = ActivateFilterFn; + IQuery.m_pActualIntersectUserData = (void*)&IQuery; + IQuery.m_PolyFilterFn = DoVectorPolyFilterFn; + + // [KLS 8/3/02] - ActivateFilterFn may save an object to use that may not be + // the best activation choice (i.e., a fallback choice). However, if a + // better choice isn't found, the fallback choice should be used. That + // fallback choice is stored in g_adFallbackActivationObject so we clear + // it here... + g_adFallbackActivationObject.Init(); + + if (g_pLTClient->IntersectSegment(&IQuery, &IInfo)) + { + m_ActivationData.m_vIntersect = IInfo.m_Point; + + if (IsMainWorld(IInfo.m_hObject)) + { + if (IInfo.m_hPoly != INVALID_HPOLY) + { + SurfaceType eType = GetSurfaceType(IInfo.m_hPoly); + SURFACE *pSurf = g_pSurfaceMgr->GetSurface(eType); + + // See if the surface we tried to activate has an activation + // sound...If so, the user can activate it... + + if (pSurf && pSurf->szActivationSnd[0] && pSurf->fActivationSndRadius > 0) + { + m_hTarget = IInfo.m_hObject; + m_ActivationData.m_hTarget = m_hTarget; + m_ActivationData.m_nSurfaceType = eType; + } + } + } + else + { + LTVector vObjPos = m_ActivationData.m_vIntersect; + vObjPos -= vPos; + + if (vObjPos.Mag() <= fMaxDist) + { + m_hTarget = IInfo.m_hObject; + m_ActivationData.m_hTarget = m_hTarget; + } + } + + // Calculate how far away the object is... + + LTVector vDist = m_ActivationData.m_vIntersect - vPos; + fDistAway = vDist.Mag(); + } + + // [KLS 8/3/02] - Use the fallback object if we have one and we didn't + // find another object more suitable object... + + bool bCanUseFallback = (m_ActivationData.m_hTarget ? false : true); + if (!bCanUseFallback) + { + // We can still use the fallback object if it isn't the world or a + // world model... + + if (IsMainWorld(m_ActivationData.m_hTarget) || + OT_WORLDMODEL == GetObjectType(m_ActivationData.m_hTarget)) + { + bCanUseFallback = true; + } + } + + if ( bCanUseFallback && g_adFallbackActivationObject.m_hTarget ) + { + // Ok we hit the fallback object reset some of our target data + + LTVector vObjPos; + g_pLTClient->GetObjectPos(g_adFallbackActivationObject.m_hTarget, &vObjPos); + + m_ActivationData.m_vIntersect = vObjPos; + + vObjPos -= vPos; + + if (vObjPos.Mag() <= fMaxDist) + { + m_hTarget = g_adFallbackActivationObject.m_hTarget; + m_ActivationData.m_hTarget = m_hTarget; + } + + // Calculate how far away the object is... + + LTVector vDist = m_ActivationData.m_vIntersect - vPos; + fDistAway = vDist.Mag(); + } +} + + +static bool DoVectorPolyFilterFn(HPOLY hPoly, void *pUserData) +{ + // Make sure we hit a surface type we care about... + + SurfaceType eSurfType = GetSurfaceType(hPoly); + + if (eSurfType == ST_INVISIBLE) + { + return false; + } + + return true; +} + +static bool ActivateFilterFn(HOBJECT hTest, void *pUserData) +{ + // [KLS 6/26/02] - Make sure we filter out client related objects first... + + HOBJECT hClientHitBox = LTNULL; + CCharacterFX* pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(g_pLTClient->GetClientObject()); + if (pCharacter) + { + hClientHitBox = pCharacter->GetHitBox(); + } + + HOBJECT hFilterList[] = + { + g_pLTClient->GetClientObject(), + g_pPlayerMgr->GetMoveMgr()->GetObject(), + hClientHitBox, + LTNULL + }; + if (!ObjListFilterFn(hTest, (void*) hFilterList)) + { + return false; + } + + // Always keep gadget targets... + if (g_pPlayerMgr->GetTargetMgr()->IsGadgetActivatable(hTest)) + { + return true; + } + + // Always keep our locked target... + if (g_pPlayerMgr->GetTargetMgr()->GetLockedTarget() == hTest) + { + return true; + } + + // Look to see if it is a DoomsDayPiece. This should take precedence over characters and bodies... + + ChassisPieceFX *pChassisPieceFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_CHASSISPIECE_ID, hTest )); + if( pChassisPieceFX ) + { + // If the piece is planted on our teams base we no longer care about it... + + if( pChassisPieceFX->IsPlanted() && (pChassisPieceFX->GetTeam() != INVALID_TEAM) ) + { + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return false; + + if( pLocalCI->nTeamID == pChassisPieceFX->GetTeam() ) + { + return false; + } + } + + return true; + } + + ChassisFX *pChassisFX = dynamic_cast(g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_CHASSIS_ID, hTest )); + if( pChassisFX ) + { + // We only care about chassis for our own team. We are only looking to automatically drop + // the chassispiece on our team's chassis. + if( pChassisFX->GetTeam() != INVALID_TEAM ) + { + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return false; + + if( pLocalCI->nTeamID != pChassisFX->GetTeam() ) + { + return false; + } + } + + return true; + } + + + // If it's a body, ignore it (we only care about its hit box) + CBodyFX* pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFX(hTest); + if (pBody) + { + return false; + } + + // If it's a hitbox associated with a body we care. + pBody = g_pGameClientShell->GetSFXMgr()->GetBodyFromHitBox(hTest); + if (pBody) + { + + //[jrg 9/26/03] in contract jack we only care about bodies if we can revive them + if (pBody->CanBeRevived() && IsRevivePlayerGameType( )) + { + // Get the client information of the body and us. + uint32 nId = pBody->GetClientId(); + CClientInfoMgr* pCIMgr = g_pInterfaceMgr->GetClientInfoMgr(); + CLIENT_INFO* pCI = pCIMgr->GetClientByID(nId); + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + + // Only allow us to revive people on the same team. For non-team games, + // the teamid will be set to the same invalid value anyway. + if( pCI && pLocalCI ) + { + if (pCI->nTeamID == pLocalCI->nTeamID) + { + + // Save body for later since it may overlap a higher priority object + SetFallbackActivationObject(hTest, (IntersectQuery*)pUserData); + + } + } + + } + + return false; + } + + // If it's a Character and it has a hitbox, ignore it (we only care about its hit box) + pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFX(hTest); + if (pCharacter) + { + if (pCharacter->GetHitBox()) + { + return false; + } + + // Save character for later if unconscious since it may overlap a + // higher priority object + if (pCharacter->IsUnconscious()) + { + SetFallbackActivationObject(hTest, (IntersectQuery*)pUserData); + return false; + } + + return true; // "Solid" object so we're done + } + + // If it's a hitbox associated with a Character we care about it... + pCharacter = g_pGameClientShell->GetSFXMgr()->GetCharacterFromHitBox(hTest); + if (pCharacter) + { + if (pCharacter->IsUnconscious()) + { + // Save character for later since it may overlap a higher priority object + SetFallbackActivationObject(hTest, (IntersectQuery*)pUserData); + return false; + } + + return true; // "Solid" object so we're done + } + + // Ignore non-solid objects that can't be activated... + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_SOLID)) + { + // This object is most likely a pickup of some type and it should + // take priority over all the above objects types...however, since all + // we can test are its flags we have to filter out the above objects + // first (instead of testing for this type of object at the top of + // the function ;) + + return IsUserFlagSet(hTest, (USRFLG_CAN_ACTIVATE | USRFLG_CAN_SEARCH)); + } + + // Hit something solid, so we're done... + return true; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTargetMgr::IsGadgetActivatable() +// +// PURPOSE: Can the passed in object be activated with any gadget. +// +// ----------------------------------------------------------------------- // + +bool CTargetMgr::IsGadgetActivatable(HOBJECT hObj) +{ + if (!hObj) return false; + + uint32 dwUserFlags = 0; + g_pCommonLT->GetObjectFlags(hObj, OFT_User, dwUserFlags); + + bool bIsGadgetActivatable = !!(dwUserFlags & USRFLG_GADGET_CAN_DISABLE); + + return bIsGadgetActivatable; +} + +bool CTargetMgr::IsTargetGadgetActivatable() +{ + if (!m_hTarget) + return false; + if (!IsGadgetActivatable(m_hTarget) && !g_pPlayerMgr->IsDisabling()) + return false; + return m_bCanActivate; +} + + + +void CTargetMgr::SetTargetStringID(uint16 nID) +{ + m_nString = nID; + if (nID > 0) + LoadString(nID,m_szString,sizeof(m_szString)); + else + m_szString[0] = 0; +} + + +void CTargetMgr::SetGadgetTarget( bool bDisabling ) +{ + if (!m_hTarget) return; + + CGadgetTargetFX* const pFX = (CGadgetTargetFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_GADGETTARGET_ID, m_hTarget); + m_bCanActivate = false; + + if (!pFX) return; + + GadgetTargetType eGadgetType = pFX->GetType(); + + switch( eGadgetType ) + { + case eKeyPad: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_CODE_DECIPHERER) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_HACKINGKEYPAD : IDS_TARGET_HACKKEYPAD ); + break; + case eCardReader: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_CODE_DECIPHERER) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_HACKINGCARDREADER : IDS_TARGET_HACKCARDREADER ); + break; + case eCodedText: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_CODE_DECIPHERER) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_DECODING : IDS_TARGET_DECODE ); + break; + case eComboLock: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_WELDER) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_WELDING : IDS_TARGET_WELD ); + break; + case ePadLock: + case eDoorKnob: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_LOCK_PICK) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_PICKING : IDS_TARGET_PICK ); + break; + case eTelephone: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_EAVESDROPBUG) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_BUGGING : IDS_TARGET_BUG ); + break; + case ePhotographable: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_CAMERA) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_PHOTOGRAPHING : IDS_TARGET_PHOTO ); + break; + case eBombable: + m_bCanActivate = bDisabling || (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_TIME_BOMB) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_BOMBING : IDS_TARGET_BOMB ); + if (bDisabling && m_bCanActivate) + g_pLTClient->CPrint("disable text"); + + break; + case eInvisibleInk: + m_bCanActivate = (g_pPlayerMgr->GetGadgetFromDamageType(DT_GADGET_INK_REAGENT) != WMGR_INVALID_ID); + SetTargetStringID( bDisabling ? IDS_TARGET_INKING : IDS_TARGET_INK ); + break; + case eINVALID: + default: + SetTargetStringID(NULL); + break; + } + + + if( IsTeamGameType() ) + { + // Can only activate a gadget target that belongs to your team... + + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return; + + if( (pFX->GetTeamID() != INVALID_TEAM) && (pLocalCI->nTeamID != pFX->GetTeamID()) ) + { + // The bombable can only be defused by the other team... + + if( eGadgetType == eBombable && bDisabling ) + { + m_bCanActivate &= true; + } + else + { + m_bCanActivate = false; + } + } + } + + m_bCanActivate &= pFX->IsPowerOn(); + + // Cannot disable a gadget target when carrying a body... + + if( g_pPlayerMgr->IsCarryingHeavyObject() ) + { + m_bCanActivate = false; + } + + if( m_bCanActivate && GTInfoArray[eGadgetType].m_bShowTimeBar ) + { + uint8 nProgress = g_pPlayerMgr->GetGadgetDisabler()->GetMaxProgress(); + g_pPlayerStats->UpdateMaxProgress( nProgress ); + g_pPlayerStats->UpdateProgress( nProgress ); + g_pHUDMgr->QueueUpdate( kHUDProgressBar ); + } + +} + + +bool CTargetMgr::CheckForCharacters(LTVector vObjPos,LTVector vDims, uint8 nId) +{ + float fLeashLen = GetConsoleFloat("LeashLen",0.0f); + //give 'em some room + vDims.x += fLeashLen; + vDims.y += fLeashLen; + vDims.z += fLeashLen; + vDims *= 2.0f; + + CSpecialFXList* pList = g_pGameClientShell->GetSFXMgr()->GetFXList(SFX_CHARACTER_ID); + if (!pList) return false; + + int nNumChars = pList->GetSize(); + + LTVector vCharPos, vCharDims; + for (int i=0; i < nNumChars; i++) + { + if ((*pList)[i]) + { + CCharacterFX* pChar = (CCharacterFX*)(*pList)[i]; + + if (pChar->m_cs.bIsPlayer && pChar->m_cs.nClientID == nId) + continue; + + g_pLTClient->GetObjectPos(pChar->GetServerObj(), &vCharPos); + + if (vObjPos.x - vDims.x < vCharPos.x && vCharPos.x < vObjPos.x + vDims.x && + vObjPos.y - vDims.y < vCharPos.y && vCharPos.y < vObjPos.y + vDims.y && + vObjPos.z - vDims.z < vCharPos.z && vCharPos.z < vObjPos.z + vDims.z) + { + return true; + } + + } + } + + return false; +} + + +//returns the damage type of the gadget required to disable the current target +DamageType CTargetMgr::RequiredGadgetDamageType() +{ + if (!m_hTarget) return DT_INVALID; + + + //if can activate without gadget, then don't switch + uint32 dwUserFlags = 0; + g_pCommonLT->GetObjectFlags(m_hTarget, OFT_User, dwUserFlags); + if (dwUserFlags & USRFLG_CAN_ACTIVATE) + return DT_INVALID; + + + + CGadgetTargetFX* const pFX = (CGadgetTargetFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX(SFX_GADGETTARGET_ID, m_hTarget); + if (!pFX || !pFX->SwitchWeapons()) return DT_INVALID; + + DamageType eDamageType = DT_INVALID; + GadgetTargetType eGadgetType = pFX->GetType(); + switch( eGadgetType ) + { + case eKeyPad: + case eCardReader: + case eCodedText: + eDamageType = DT_GADGET_CODE_DECIPHERER; + break; + case eComboLock: + eDamageType = DT_GADGET_WELDER; + break; + case ePadLock: + case eDoorKnob: + eDamageType = DT_GADGET_LOCK_PICK; + break; + case eTelephone: + eDamageType = DT_GADGET_EAVESDROPBUG; + break; + case ePhotographable: + eDamageType = DT_GADGET_CAMERA; + break; + case eBombable: + eDamageType = DT_GADGET_TIME_BOMB; + break; + case eInvisibleInk: + eDamageType = DT_GADGET_INK_REAGENT; + break; + case eINVALID: + default: + eDamageType = DT_INVALID; + break; + } + + if( IsTeamGameType() ) + { + // Only switch to a gadget if the target belongs to our team... + + CLIENT_INFO *pLocalCI = g_pInterfaceMgr->GetClientInfoMgr()->GetLocalClient(); + if( !pLocalCI ) + return DT_INVALID; + + if( pFX->GetTeamID() != INVALID_TEAM ) + { + if( pLocalCI->nTeamID != pFX->GetTeamID() ) + { + eDamageType = DT_INVALID; + } + } + } + + return eDamageType; + +} + + +bool CTargetMgr::IsTargetInRange() +{ + if (!m_hTarget) return false; + + uint32 dwUserFlags; + g_pCommonLT->GetObjectFlags( m_hTarget, OFT_User, dwUserFlags ); + + if (m_ActivationData.m_nType == MID_ACTIVATE_REVIVE) + { + return (m_fTargetRange <= g_vtReviveDistance.GetFloat()); + } + else if( dwUserFlags & USRFLG_GADGET_CAMERA ) + { + return (m_fTargetRange <= g_vtCamZoom1MaxDist.GetFloat()); + } + + return (m_fTargetRange <= g_vtActivationDistance.GetFloat()); +} + + +void CTargetMgr::ClearTargetInfo() +{ + //clear our targeting info + SetTargetStringID(NULL); + m_hTarget = NULL; + m_fTargetRange = 10000.0f; + m_nTargetTeam = INVALID_TEAM; + m_szString[0] = 0; + m_szDebugString[0] = 0; + m_nString = 0; + + m_ActivationData.Init(); + + m_bSearchTarget = false; + m_bMoveTarget = false; + m_bCanActivate = true; + + if (!g_pDamageFXMgr->AllowWeapons( )) + m_bCanActivate = false; + +} diff --git a/Jack/ClientShellDLL/TargetMgr.h b/Jack/ClientShellDLL/TargetMgr.h new file mode 100644 index 00000000..0dcc5a8e --- /dev/null +++ b/Jack/ClientShellDLL/TargetMgr.h @@ -0,0 +1,92 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TargetMgr.h +// +// PURPOSE : Definition of class to handle tracking whjat the player is aimed at. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TARGET_MGR_H__ +#define __TARGET_MGR_H__ + +#include "ActivationData.h" +#include "DamageTypes.h" + + +const uint8 kMaxTargetStringLen = 64; +const uint16 kMaxDebugStringLen = 1024; + +class CTargetMgr +{ +public: + CTargetMgr(); + virtual ~CTargetMgr(); + + virtual void Update(); + + virtual HOBJECT GetTargetObject() const {return m_hTarget;} + virtual float GetTargetRange() const {return m_fTargetRange;} + virtual uint16 GetTargetStringID() const {return m_nString;} + virtual const char* GetTargetString() const {return &m_szString[0];} + virtual const char* GetDebugString() const {return &m_szDebugString[0];} + uint8 GetTargetTeam() const {return m_nTargetTeam;} + + //instersect info to be sent to server + virtual CActivationData GetActivationData() const {return m_ActivationData;} + + virtual bool IsSearchTarget() {return m_bSearchTarget;} + virtual bool IsMoveTarget() {return m_bMoveTarget;} + virtual bool CanActivateTarget() {return m_bCanActivate;} + virtual bool IsTargetInRange(); + + + + + virtual bool IsGadgetActivatable(HOBJECT hObj); + virtual bool IsTargetGadgetActivatable(); + + //returns the damage type of the gadget required to disable the current target + DamageType RequiredGadgetDamageType(); + + //make sure specified object is considered a valid target regardless of it's current flags + virtual void LockTarget(HOBJECT hTarget) { m_hLockedTarget = hTarget; m_bDelayGadgetText = true;} + virtual HOBJECT GetLockedTarget() const {return m_hLockedTarget;} + +protected: + + HOBJECT m_hTarget; + char m_szString[kMaxTargetStringLen]; + + void CheckForIntersect(float &fDistAway); + + void SetTargetStringID(uint16 nID); + void SetGadgetTarget( bool bDisabling ); + + + HOBJECT m_hLockedTarget; + float m_fTargetRange; + + uint8 m_nTargetTeam; + + char m_szDebugString[kMaxDebugStringLen]; + uint16 m_nString; + + bool m_bSearchTarget; + bool m_bMoveTarget; + bool m_bCanActivate; + bool m_bFirstUpdate; + bool m_bDelayGadgetText; + + //intersect info + CActivationData m_ActivationData; + + //check for character FX within an are around a point + bool CheckForCharacters(LTVector vObjPos,LTVector vDims, uint8 nId); + + void FirstUpdate(); + void ClearTargetInfo(); +}; + +#endif \ No newline at end of file diff --git a/Jack/ClientShellDLL/TextureFXMgr.cpp b/Jack/ClientShellDLL/TextureFXMgr.cpp new file mode 100644 index 00000000..1c5cb0f7 --- /dev/null +++ b/Jack/ClientShellDLL/TextureFXMgr.cpp @@ -0,0 +1,78 @@ +#include "stdafx.h" + +#include "TextureFXMgr.h" + +CTextureFXMgr::CTextureFXMgr() +{ +} + +CTextureFXMgr::~CTextureFXMgr() +{ +} + +void CTextureFXMgr::HandleSFXMsg(ILTMessage_Read *pMsg) +{ + //run through all the groups and grab their variables + for(uint32 nCurrStage = 0; nCurrStage < NUM_STAGES; nCurrStage++) + { + //read the change flags for this stage + uint32 nChangeFlags = pMsg->Readuint8(); + + //don't bother any more if no more changes + if(nChangeFlags == 0) + continue; + + //read in the ID of the variable group + uint32 nVarID = pMsg->Readuint32(); + + //now for each flag set, read in the variable and set it + for(uint32 nCurrVar = 0; nCurrVar < NUM_VARS; nCurrVar++) + { + //see if that flag is set + if((nChangeFlags & (1 << nCurrVar)) == 0) + continue; + + //ok, we need to read in this value and set it + float fVal = pMsg->Readfloat(); + + // Change it + if (!ChangeEffectVar(nVarID, nCurrVar, fVal)) + { + // If we couldn't change it, put it on the list for later processing + m_aWaitingVarList.push_front(SWaitingVar(nVarID, nCurrVar, fVal)); + } + } + } +} + +void CTextureFXMgr::Update() +{ + if (m_aWaitingVarList.empty()) + return; + + // Try to clear items out of our waiting list + TWaitingVarList::iterator iCurVar = m_aWaitingVarList.begin(); + while (iCurVar != m_aWaitingVarList.end()) + { + TWaitingVarList::iterator iNextVar = iCurVar; + ++iNextVar; + + if (ChangeEffectVar(iCurVar->m_nID, iCurVar->m_nVar, iCurVar->m_fVal)) + m_aWaitingVarList.erase(iCurVar); + + iCurVar = iNextVar; + } +} + + +bool CTextureFXMgr::ChangeEffectVar(uint32 nID, uint32 nVar, float fVal) +{ + // Tell the engine + if(g_pLTClient->SetTextureEffectVar(nID, nVar, fVal) == LT_NOTINWORLD) + { + //not in the world yet, return false to queue it up + return false; + } + + return true; +} diff --git a/Jack/ClientShellDLL/TextureFXMgr.h b/Jack/ClientShellDLL/TextureFXMgr.h new file mode 100644 index 00000000..378b69cf --- /dev/null +++ b/Jack/ClientShellDLL/TextureFXMgr.h @@ -0,0 +1,47 @@ +////////////////////////////////////////////////////////////////////////////// +// Texture FX manager header file + +#ifndef __TEXTUREFXMGR_H__ +#define __TEXTUREFXMGR_H__ + +#include +#include + +class CTextureFXMgr +{ +public: + + enum { NUM_STAGES = 2, + NUM_VARS = 6 + }; + + CTextureFXMgr(); + ~CTextureFXMgr(); + + void HandleSFXMsg(ILTMessage_Read *pMsg); + void Update(); + +private: + bool ChangeEffectVar(uint32 nID, uint32 nVar, float fVal); + + struct SWaitingVar + { + SWaitingVar() {} + SWaitingVar(uint32 nID, uint32 nVar, float fVal) : m_nID(nID), m_nVar(nVar), m_fVal(fVal) {} + SWaitingVar(const SWaitingVar &cOther) : m_nID(cOther.m_nID), m_nVar(cOther.m_nVar), m_fVal(cOther.m_fVal) {} + SWaitingVar &operator=(const SWaitingVar &cOther) { + m_nID = cOther.m_nID; + m_nVar = cOther.m_nVar; + m_fVal = cOther.m_fVal; + return *this; + } + uint32 m_nID; + uint32 m_nVar; + float m_fVal; + }; + + typedef std::list TWaitingVarList; + TWaitingVarList m_aWaitingVarList; +}; + +#endif //__LIGHTGROUPFX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TimedText.cpp b/Jack/ClientShellDLL/TimedText.cpp new file mode 100644 index 00000000..4c8345f0 --- /dev/null +++ b/Jack/ClientShellDLL/TimedText.cpp @@ -0,0 +1,597 @@ + +#include "stdafx.h" +#include "TimedText.h" +#include "GameClientShell.h" + +// uncomment the next line if you want to do some extra debugging +//#define TIMEDTEXT_DEBUG + +namespace +{ + float const ALPHA_OPAQUE = 255.0; // this stays here +}; + + +/// +// CTimedText::~CTimedText() +// +CTimedText::~CTimedText() +{ +} + + +/// +// CTimedText::CTimedText() +// +CTimedText::CTimedText() +{ + m_hTextDisplaySound = LTNULL; + + // initialize the internally used variables + InitInternalInfo(); +} + + +/// +// CTimedText::Init() +// +void CTimedText::Init( TIMED_TEXT_INIT_STRUCT const &initData ) +{ + // initialize the internally needed info + InitInternalInfo(); + + // + // extract the data from the initialization struct + // + + // Visual Characteristics + ASSERT( initData.text ); + m_text = initData.text; + m_color = ( initData.color & 0x00FFFFFF ); + + // get the text's position, cause we may change this + // as it scrolls + m_text->GetPosition( &m_posX, &m_posY ); + + // use dropped shadow? + if ( initData.useDroppedShadow ) + { + SETFLAG( m_flags, CTIMEDTEXTFLAG_USE_DROPPED_SHADOW ); + } + else + { + CLEARFLAG( m_flags, CTIMEDTEXTFLAG_USE_DROPPED_SHADOW ); + } + + if ( initData.clipRect ) + { + m_clipRect = *initData.clipRect; + SETFLAG( m_flags, CTIMEDTEXTFLAG_USE_CLIP_RECT ); + } + else + { + // clear the clip rect if we're not using it + m_clipRect.x = + m_clipRect.y = + m_clipRect.height = + m_clipRect.width = 0; + CLEARFLAG( m_flags, CTIMEDTEXTFLAG_USE_CLIP_RECT ); + } + + m_textLen = strlen( m_text->GetText() ); + m_numberOfLinesBeforeScroll = initData.numberOfLinesBeforeScroll; + + // Timing Information + m_initialDelay = initData.initialDelay; + ASSERT( m_initialDelay >= 0 ); + + m_characterDelay = initData.characterDelay; + ASSERT( m_characterDelay >= 0 ); + + m_lineDelay = initData.lineDelay; + ASSERT( m_lineDelay >= 0 ); + + m_scrollTime = initData.scrollTime; + ASSERT( m_scrollTime >= 0 ); + + m_completeDelay = initData.completeDelay; + ASSERT( m_completeDelay >= 0 ); + + m_fadeTime = initData.fadeTime; + ASSERT( m_fadeTime >= 0 ); + + + // + // Sound Information + // + + // get character complete sound name (if any) + if ( initData.textDisplaySound && + initData.textDisplaySound[ 0 ] != '\0' ) + { + strncpy( m_textDisplaySoundName, initData.textDisplaySound, TIMED_TEXT_SOUND_NAME_LENGTH ); + } + + // get scrolling sound name (if any) + if ( initData.scrollSound && + initData.scrollSound[ 0 ] != '\0' ) + { + strncpy( m_scrollSoundName, initData.scrollSound, TIMED_TEXT_SOUND_NAME_LENGTH ); + } + + #ifdef TIMEDTEXT_DEBUG + { + // make sure strings terminate + int i; + LTBOOL charEndFound = LTFALSE; + LTBOOL scrollEndFound = LTFALSE; + + for ( i = 0, + charEndFound = LTFALSE, + scrollEndFound = LTFALSE; + ( ( i < TIMED_TEXT_SOUND_NAME_LENGTH ) && + ( ( !charEndFound ) || + ( !scrollEndFound ) ) ); + ++i ) + { + if ( ( !charEndFound ) && ( m_textDisplaySoundName[ i ] == '\0' ) ) + { + charEndFound = LTTRUE; + } + if ( ( !scrollEndFound ) && ( m_scrollSoundName[ i ] == '\0' ) ) + { + scrollEndFound = LTTRUE; + } + } + + // assert if no end if found + ASSERT( charEndFound ); + ASSERT( scrollEndFound ); + } + #endif // TIMEDTEXT_DEBUG + + // now we're in the text writing phase + m_state = CTIMEDTEXT_INITIAL_DELAY; +} + + +/// +// CTimedText::Update() +// +void CTimedText::Update() +{ + // bail if we are not set up (current state == none), + // or if we are finished + // or if we are not running + if ( ( m_state == CTIMEDTEXT_NONE ) || + ( m_state == CTIMEDTEXT_FINISHED ) || + !TESTFLAG( m_flags, CTIMEDTEXTFLAG_RUNNING ) ) + { + return; + } + + // update the elapsed time + float currentUpdateTime; + currentUpdateTime = g_pLTClient->GetTime(); + m_timeElapsed += currentUpdateTime - m_prevUpdateTime; + m_prevUpdateTime = currentUpdateTime; + + // check if we're just waiting to start + if ( m_state == CTIMEDTEXT_INITIAL_DELAY ) + { + if ( m_timeElapsed < m_initialDelay ) + { + // still waiting, don't do anything + return; + } + + // no longer waiting, change to next state + m_state = CTIMEDTEXT_TIMING; + m_timeElapsed = m_timeElapsed - m_initialDelay; + } + + // determine how much text we've done so far + float processedTime; + if ( m_state == CTIMEDTEXT_TIMING ) + { + // the processed time is important for timing text + // because it determines what position we have reached + // in the text (how much text is revealed) + processedTime = ( m_charactersProcessed - m_nNewlinesProcessed ) * m_characterDelay; + + // Get the minimum of number of lines before scrolling + // or the number of lines we've processed. This will be + // the number of line delays to use. + float numberOfNonScrolls; + if ( m_linesProcessed > ( m_numberOfLinesBeforeScroll - 1 ) ) + { + numberOfNonScrolls = (float)( m_numberOfLinesBeforeScroll - 1 ); + } + else + { + numberOfNonScrolls = m_linesProcessed; + } + + // add the proper number of line delays to the processed time + processedTime += numberOfNonScrolls * m_lineDelay; + + // determine how many times we've scrolled so far + float numberOfScrolls; + numberOfScrolls = m_linesProcessed - (float)( m_numberOfLinesBeforeScroll - 1 ); + if ( numberOfScrolls > 0 ) + { + processedTime += numberOfScrolls * m_scrollTime; + } + } + else + { + // the other states are easier cause they are + // just straight timers and we don't have to know + // where we are in the text + processedTime = m_timeElapsed; + } + + // determine where we currently are in the text + int textPos; + textPos = m_charactersProcessed; + ASSERT( textPos <= m_textLen ); + + // + // bring our text up to date + // + + // while processed time is less than true elapsed time + while (processedTime <= m_timeElapsed ) + { + // *check state + if ( m_state == CTIMEDTEXT_TIMING ) + { + if ( TESTFLAG( m_flags, CTIMEDTEXTFLAG_SCROLLING ) ) + { + // + // the text is currently scrolling + // + + float timeLeft; + timeLeft = m_timeElapsed - m_scrollRefTime; + uint8 textHeight; + textHeight = m_text->GetCharScreenHeight(); + if ( timeLeft < m_scrollTime ) + { + // move text to proper position + m_posY = m_scrollRefPosY - ( textHeight * timeLeft / m_scrollTime ); + +#ifdef TIMED_TEXT_FADE_TOP_LINE + // fade top line by appropiate amount + for ( int ii = m_nLineFadeCharStart; ii < m_nLineFadeCharEnd; ++ii ) + { + g_pLTClient->GetDrawPrim()->SetALPHA( &m_text->GetPolys()[ ii ], ( uint8 ) ( ALPHA_OPAQUE - ALPHA_OPAQUE * timeLeft / m_scrollTime ) ); + } +#endif // TIMED_TEXT_FADE_TOP_LINE + + break; + } + else + { + // move text to the final position + m_posY = m_scrollRefPosY - textHeight; + + // increment the current time + processedTime = m_scrollRefTime + m_scrollTime; + + // update our line count + ++m_linesProcessed; + +#ifdef TIMED_TEXT_FADE_TOP_LINE + // fade line completely + for ( int ii = m_nLineFadeCharStart; ii < m_nLineFadeCharEnd; ++ii ) + { + g_pLTClient->GetDrawPrim()->SetALPHA( &m_text->GetPolys()[ ii ], 0 ); + } + + // the next line to fade starts where this one ended + m_nLineFadeCharStart = m_nLineFadeCharEnd; +#endif // TIMED_TEXT_FADE_TOP_LINE + + // reset our references + m_scrollRefPosY = 0; + m_scrollRefTime = 0; + + // remember the new line height + m_fLineYPos = m_text->GetPolys()[ textPos ].verts[ 0 ].y; + + // done scrolling + CLEARFLAG( m_flags, CTIMEDTEXTFLAG_SCROLLING ); + } + } + // if we are done displaying the text + else if ( textPos >= m_textLen ) + { + // reset time elapsed + m_timeElapsed -= processedTime; + processedTime = 0; + + if ( m_hTextDisplaySound != LTNULL ) + { + // kill the looping typing sound + g_pLTClient->SoundMgr()->KillSound( m_hTextDisplaySound ); + m_hTextDisplaySound = LTNULL; + } + + // switch current state to complete + m_state = CTIMEDTEXT_COMPLETE; + + ASSERT( m_timeElapsed >= 0 ); + } + // else if the text at the current position is a linefeed + else if ( ( m_text->GetPolys()[ textPos ].verts[ 0 ].y - m_fLineYPos ) > 0.5f ) + { + // The only way we know we have a new line is if the polygon + // has a different y value than the one before it. + + if ( m_linesProcessed >= ( m_numberOfLinesBeforeScroll - 1 ) ) + { + if ( !TESTFLAG( m_flags, CTIMEDTEXTFLAG_SCROLLING ) ) + { + // set up to scroll + SETFLAG( m_flags, CTIMEDTEXTFLAG_SCROLLING ); + m_scrollRefTime = processedTime; + m_scrollRefPosY = m_posY; + +#ifdef TIMED_TEXT_FADE_TOP_LINE + // to fade the top line of text, start from where + // the line starts and scan for end of line + for ( m_nLineFadeCharEnd = m_nLineFadeCharStart + 1; + ( ( m_text->GetPolys()[ m_nLineFadeCharEnd ].verts[ 0 ].y - m_text->GetPolys()[ m_nLineFadeCharStart ].verts[ 0 ].y ) < 0.5f ); + ++m_nLineFadeCharEnd ) + { + } +#endif // TIMED_TEXT_FADE_TOP_LINE + + if ( m_hTextDisplaySound != LTNULL ) + { + // kill the looping typing sound + g_pLTClient->SoundMgr()->KillSound( m_hTextDisplaySound ); + m_hTextDisplaySound = LTNULL; + } + + // play the scroll sound + if ( m_scrollSoundName[ 0 ] != '\0' ) + { + g_pClientSoundMgr->PlayInterfaceSound( m_scrollSoundName ); + } + } + } + else + { + // increment the current time + processedTime += m_lineDelay; + + // update our line count + ++m_linesProcessed; + + m_fLineYPos = m_text->GetPolys()[ textPos ].verts[ 0 ].y; + + if ( m_hTextDisplaySound != LTNULL ) + { + // kill the looping typing sound + g_pLTClient->SoundMgr()->KillSound( m_hTextDisplaySound ); + m_hTextDisplaySound = LTNULL; + } + } + + } + else if ( m_text->GetText()[ textPos ] == '\n' ) + { + // Ignore newlines completely. We want to keep track of them so + // we know where we are in the text, but we won't do any + // of the timing delay calculations with them. + ++m_charactersProcessed; + ++m_nNewlinesProcessed; + ++textPos; + } + // else if the text at the current position is printable + else + { + // play the sound + if ( ( m_hTextDisplaySound == LTNULL ) && + ( m_textDisplaySoundName[ 0 ] != '\0' ) ) + { + m_hTextDisplaySound = g_pClientSoundMgr->PlayInterfaceSound( m_textDisplaySoundName, ( PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT ) ); + } + + // update our character count + ++m_charactersProcessed; + ++textPos; + + // increment the current time + processedTime += m_characterDelay; + } + + } + // else if complete + else if ( m_state == CTIMEDTEXT_COMPLETE ) + { + // *check to switch to next state + // if current time greater than delay + if ( processedTime >= m_completeDelay ) + { + // reset time elapsed + m_timeElapsed -= processedTime; + processedTime = 0; + + // switch current state to fade + m_state = CTIMEDTEXT_FADING; + } + else + { + break; + } + } + // else if fading + else if ( m_state == CTIMEDTEXT_FADING ) + { + // *check to switch to next state + // if current time is greater than fade time + if ( processedTime >= m_fadeTime ) + { + // switch current state to finished + m_state = CTIMEDTEXT_FINISHED; + } + else + { + //TEMP: turn the text to black + break; + } + } + // else if finished + else + { + CLEARFLAG( m_flags, ( CTIMEDTEXTFLAG_RUNNING | CTIMEDTEXTFLAG_DISPLAY ) ); + + // DONE + break; + } + } + + #ifdef TIMEDTEXT_DEBUG + // put this here to make debugging easier + // if a lot of time is spent in the debugger + // in the update loop, we won't count that + // time against the timed text + m_prevUpdateTime = g_pLTClient->GetTime(); + #endif // TIMEDTEXT_DEBUG +} + +/// +// CTimedText::Render() +// +void CTimedText::Render() +{ + // bail if we are not set up (current state == none), + // or if we are finished + // or if we are not running + if ( ( m_state == CTIMEDTEXT_NONE ) || + ( m_state == CTIMEDTEXT_INITIAL_DELAY ) || + ( m_state == CTIMEDTEXT_FINISHED ) || + !TESTFLAG( m_flags, CTIMEDTEXTFLAG_DISPLAY ) ) + { + return; + } + + // if we are fading, setup the alpha + uint8 alpha; + alpha = ( uint8 ) ALPHA_OPAQUE; + + int startChar; + int endChar; + + startChar = 0; + endChar = 0; + + if ( m_state == CTIMEDTEXT_TIMING ) + { + endChar = m_charactersProcessed; + } + else if ( m_state == CTIMEDTEXT_COMPLETE ) + { + // just display everything like normal + startChar = 0; + endChar = m_textLen; + } + else if ( m_state == CTIMEDTEXT_FADING ) + { + // just display everything like normal + startChar = 0; + endChar = m_textLen; + + alpha = ( uint8 ) (ALPHA_OPAQUE - ALPHA_OPAQUE * ( m_timeElapsed / m_fadeTime )); + } + else + { + // we are in the wrong state and shouldn't be here + ASSERT( 0 ); + } + + // drop shadow if necessary + if ( TESTFLAG( m_flags, CTIMEDTEXTFLAG_USE_DROPPED_SHADOW ) ) + { + // change the text appearance to a drop shadow + m_text->SetColor( ( alpha << 24 ) | SETRGB( 0.0f, 0.0f, 0.0f ) ); + m_text->SetPosition( ( m_posX + 2 ), ( m_posY + 2 ) ); + + // show the amount of text we should reveal so far + if ( TESTFLAG( m_flags, CTIMEDTEXTFLAG_USE_CLIP_RECT ) ) + { + m_text->RenderClipped( &m_clipRect, startChar, endChar ); + } + else + { + m_text->Render( startChar, endChar ); + } + + // set the text back + m_text->SetColor( ( alpha << 24 ) | m_color ); + m_text->SetPosition( m_posX, m_posY ); + } + + // show the amount of text we should reveal so far + m_text->SetColor( ( alpha << 24 ) | m_color ); + if ( TESTFLAG( m_flags, CTIMEDTEXTFLAG_USE_CLIP_RECT ) ) + { + m_text->RenderClipped( &m_clipRect, startChar, endChar ); + } + else + { + m_text->Render( startChar, endChar ); + } +} + + +/// +// CTimedText::InitInternalInfo() +// +void CTimedText::InitInternalInfo() +{ + // current state + m_state = CTIMEDTEXT_NONE; + m_text = 0; + m_textLen = 0; + + // time tracking + m_timeElapsed = 0.0f; + m_uTime.m_timeElapseda = 0.0f; + m_prevUpdateTime = 0.0f; + + // character tracking (what we have seen to compute where we should be) + m_charactersProcessed = 0; + m_linesProcessed = 0; + m_nNewlinesProcessed = 0; + +#ifdef TIMED_TEXT_FADE_TOP_LINE + m_nLineFadeCharStart = 0; + m_nLineFadeCharEnd = 0; // noninclusive +#endif // TIMED_TEXT_FADE_TOP_LINE + + // clear all the flags + m_flags = 0; + + m_posX = 0; + m_posY = 0; + + // references needed for scrolling + m_scrollRefPosY = 0; + m_scrollRefTime = 0; + + // stub the sound names + m_textDisplaySoundName[ 0 ] = '\0'; + m_scrollSoundName[ 0 ] = '\0'; + + // sound handles + if ( m_hTextDisplaySound != LTNULL ) + { + // kill the looping typing sound + g_pLTClient->SoundMgr()->KillSound( m_hTextDisplaySound ); + m_hTextDisplaySound = LTNULL; + } +} diff --git a/Jack/ClientShellDLL/TimedText.h b/Jack/ClientShellDLL/TimedText.h new file mode 100644 index 00000000..3139a051 --- /dev/null +++ b/Jack/ClientShellDLL/TimedText.h @@ -0,0 +1,203 @@ + +#ifndef _TIMEDTEXT_H_INCLUDED_ +#define _TIMEDTEXT_H_INCLUDED_ + +#include "CUIPolyString.h" + +// When the text scrolls, the top line is "out of range" and should +// fade away. Unfortunately there is an obstacle with the way the +// text and dropped shadowns is handled which makes this difficult. +// If we made copies of the original text passed instead of referencing +// the original, fading would work OK. If want this (untested) ability +// uncomment the next line and fix the problem. :( +// #define TIMED_TEXT_FADE_TOP_LINE + +#define TIMED_TEXT_SOUND_NAME_LENGTH 64 + +typedef struct _TIMED_TEXT_INIT_STRUCT +{ + // + // Visual Characteristics + // + CUIPolyString *text; // string to display, formatted and ready to go + // NOTE: this class does NOT take ownership, + // therefore it must "stay alive" while this + // function needs it. + uint32 color; // the color of the font, note this poses as limitation + // that you can't have multi colored text, sorry! + LTBOOL useDroppedShadow; // display a dropped shadow? LTTRUE = yes + int numberOfLinesBeforeScroll; // number of lines to display before starting to scroll + // ex: if you want scrolling immediately after the first + // line is printed, you would specify 0. If you wanted + // 3 full lines to be printed to the screen before + // scrolling, you would specify 2. Think of it as + // "2 lines will be printed without scrolling and + // scrolling will start after the 3rd full line is + // printed + CUIRECT *clipRect; // rectangle to use to clip (NULL to ignore it) + + // + // Timing Information + // + float initialDelay; // time to wait before doing anything + float characterDelay; // time to pause after each new character is printed + float lineDelay; // time to pause after each line is completed + float scrollTime; // time to spend scrolling + float completeDelay; // time to wait after complete text is displayed + float fadeTime; // time to spend fading text to nothing + + // + // Sound + // + char textDisplaySound[ TIMED_TEXT_SOUND_NAME_LENGTH ]; // sound to play when new character displayed (1st char NULL, no sound for this event) + char scrollSound[ TIMED_TEXT_SOUND_NAME_LENGTH ]; // sound to play when scrolling text (1st char NULL, no sound for this event) + +} TIMED_TEXT_INIT_STRUCT; + + + +class CTimedText +{ +private: + // + // Private Defines + // + #define CTIMEDTEXTFLAG_USE_DROPPED_SHADOW ( 0x1 << 0 ) + #define CTIMEDTEXTFLAG_USE_CLIP_RECT ( 0x1 << 1 ) + #define CTIMEDTEXTFLAG_RUNNING ( 0x1 << 2 ) + #define CTIMEDTEXTFLAG_DISPLAY ( 0x1 << 3 ) + #define CTIMEDTEXTFLAG_SCROLLING ( 0x1 << 4 ) + #define CTIMEDTEXTFLAG_ALLFLAGS ( ( TIMEDTEXT_USE_DROPPED_SHADOW ) | \ + ( TIMEDTEXT_USE_CLIP_RECT ) | \ + ( TIMEDTEXT_RUNNING ) | \ + ( TIMEDTEXT_SCROLLING ) | \ + ( TIMEDTEXT_DISPLAY ) ) + + // testing or clearing or setting flag macros + #define TESTFLAG( _flag_base, _flag ) ( ( _flag_base ) & ( _flag ) ) + #define SETFLAG( _flag_base, _flag ) ( ( _flag_base ) |= ( _flag ) ) + #define CLEARFLAG( _flag_base, _flag ) ( ( _flag_base ) &= ( ~( _flag ) ) ) + + // uncomment the next line to add debugging information to the class + #define TIMEDTEXT_DEBUG + +public: + ~CTimedText(); + CTimedText(); + + void Init( TIMED_TEXT_INIT_STRUCT const &initData ); + + // control if we are updating + void Start() { SETFLAG( m_flags, CTIMEDTEXTFLAG_RUNNING ); m_prevUpdateTime = g_pLTClient->GetTime(); ASSERT( m_text ); m_fLineYPos = m_text->GetPolys()[ 0 ].verts[ 0 ].y; } + void Pause() { CLEARFLAG( m_flags, CTIMEDTEXTFLAG_RUNNING ); } + void Resume() { SETFLAG( m_flags, CTIMEDTEXTFLAG_RUNNING ); m_prevUpdateTime = g_pLTClient->GetTime(); } + + // control displaying the text + void Show() { SETFLAG( m_flags, CTIMEDTEXTFLAG_DISPLAY ); } + void Hide() { CLEARFLAG( m_flags, CTIMEDTEXTFLAG_DISPLAY ); } + + // other stuff + void Update(); + void Render(); + + void Clear() { InitInternalInfo(); } + + // want to make a change to the text? + CUIPolyString *GetString(); + +private: + // + // Private Enumerations + // + typedef enum _CTimedTextState + { + CTIMEDTEXT_NONE, // done nothing yet + CTIMEDTEXT_INITIAL_DELAY, // initial delay before doing anything + CTIMEDTEXT_TIMING, // still going through string + CTIMEDTEXT_COMPLETE, // done running, pausing before fade out + CTIMEDTEXT_FADING, // busy fading + CTIMEDTEXT_FINISHED, // finished fading, nothing to do + + CTIMEDTEXT_NUM_STATES // always last + + } CTimedTextState; + + + // + // Externally specified data + // + + // display + CUIPolyString *m_text; // string to display, formatted and ready to go + uint32 m_color; // color of the font + int m_numberOfLinesBeforeScroll;// number of lines to display before starting to scroll + CUIRECT m_clipRect; // rectangle to use to clip text (optional) + float m_fLineYPos; // last knonw y position of the text (detects linefeeds) + + // timing + float m_initialDelay; // time to wait before doing anything + float m_characterDelay; // time to pause after each new character is printed + float m_lineDelay; // time to pause after each line is completed + float m_scrollTime; // time to spend scrolling + float m_completeDelay; // time to wait after complete text is displayed + float m_fadeTime; // time to spend fading text to nothing + + // sound + char m_textDisplaySoundName[ TIMED_TEXT_SOUND_NAME_LENGTH ]; // sound to play as characters are being displayed + char m_scrollSoundName[ TIMED_TEXT_SOUND_NAME_LENGTH ]; // sound to play when scrolling text + + // + // Internal Info: + // + CTimedTextState m_state; // current state of the text display + + int m_flags; // see flags under 'private defines' above + int m_textLen; // length of the passed in text + + float m_posX; // screen position of the text + float m_posY; + + float m_scrollRefTime; // reference time to keep track of where in the scroll we are + float m_scrollRefPosY; // reference position to scroll text relative to + + // time tracking + float m_timeElapsed; // amount of time spent "running" text (relative) + // means different things depending on the state + // none, means nothing + // timing means time elapsed since we started timing + // complete means time elapsed since we were complete + // fading means time elapsed since we started fading + // finished, elapsed undefined + + union _m_uTime + { + float m_timeElapseda; // amount of time spent "running" text (relative) + float m_timeCompleted; // amount of time since the text was completed + } m_uTime; + float m_prevUpdateTime; // absolute time of previous update + // (-1 if no previous update yet) + + // character tracking (what we have seen to compute where we should be) + // NOTE: max of 65535 characters + uint16 m_charactersProcessed; // number of printable characters displayed so far + uint8 m_linesProcessed; // number of lines processed + uint8 m_nNewlinesProcessed; // number of newlines '\n' encountered in the text + + // sound handles + HLTSOUND m_hTextDisplaySound; // sound to play when new character displayed + +#ifdef TIMED_TEXT_FADE_TOP_LINE + // references for fading the top line + int m_nLineFadeCharStart = 0; + int m_nLineFadeCharEnd = 0; // noninclusive +#endif // TIMED_TEXT_FADE_TOP_LINE + + // + // Internal Interfaces + // + void InitInternalInfo(); +}; + + + +#endif //_TimedText_h_INCLUDED_ diff --git a/Jack/ClientShellDLL/TracerFX.cpp b/Jack/ClientShellDLL/TracerFX.cpp new file mode 100644 index 00000000..4b983c70 --- /dev/null +++ b/Jack/ClientShellDLL/TracerFX.cpp @@ -0,0 +1,212 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TracerFX.cpp +// +// PURPOSE : Tracer special FX - Implementation +// +// CREATED : 1/21/98 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "TracerFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "SFXMsgIds.h" +#include "GameClientShell.h" +#include "VarTrack.h" + +extern CGameClientShell* g_pGameClientShell; + +VarTrack g_cvarTracerSegments; +VarTrack g_cvarTracerLifetime; +VarTrack g_cvarTracerVelocity; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTracerFX::Init +// +// PURPOSE: Init the tracer fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CTracerFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + // Don't support server-side versions of this fx... + + return LTFALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTracerFX::Init +// +// PURPOSE: Init the tracer fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CTracerFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + TRCREATESTRUCT* pTR = (TRCREATESTRUCT*)psfxCreateStruct; + m_cs = *pTR; + + if (!m_cs.pTracerFX) return LTFALSE; + + m_vDir = m_cs.vEndPos - m_cs.vStartPos; + m_fDist = m_vDir.Mag(); + m_vDir.Normalize(); + + if (!g_cvarTracerSegments.IsInitted()) + { + g_cvarTracerSegments.Init(g_pLTClient, "TracerSegments", NULL, 1.0f); + } + + if (!g_cvarTracerLifetime.IsInitted()) + { + g_cvarTracerLifetime.Init(g_pLTClient, "TracerLifetime", NULL, 0.2f); + } + + if (!g_cvarTracerVelocity.IsInitted()) + { + g_cvarTracerVelocity.Init(g_pLTClient, "TracerVeloctity", NULL, -1.0f); + } + + if (g_cvarTracerVelocity.GetFloat() > 0.0f) + { + m_fVelocity = g_cvarTracerVelocity.GetFloat(); + } + else + { + m_fVelocity = m_cs.pTracerFX->fVelocity; + } + + + // Calculate life time... + + if (m_fVelocity > 0.0f) + { + m_fLifetime = m_fDist / m_fVelocity; + } + else + { + return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTracerFX::Update +// +// PURPOSE: Update the tracer +// +// ----------------------------------------------------------------------- // + +LTBOOL CTracerFX::Update() +{ + if (!m_pClientDE || !m_cs.pTracerFX) return LTFALSE; + + LTFLOAT fTime = m_pClientDE->GetTime(); + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + m_fStartTime = fTime; + + PLFXCREATESTRUCT pls; + + m_vTracerPos = m_cs.vStartPos + (m_vDir * g_pGameClientShell->GetFrameTime() * m_fVelocity); + + pls.pTexture = m_cs.pTracerFX->szTexture[0] ? m_cs.pTracerFX->szTexture : LTNULL; + pls.vStartPos = m_cs.vStartPos; + pls.vEndPos = m_vTracerPos; + pls.vInnerColorStart = m_cs.pTracerFX->vColor; + pls.vInnerColorEnd = m_cs.pTracerFX->vColor; + pls.vOuterColorStart = m_cs.pTracerFX->vColor; + pls.vOuterColorEnd = m_cs.pTracerFX->vColor; + pls.fAlphaStart = m_cs.pTracerFX->fInitialAlpha; + pls.fAlphaEnd = m_cs.pTracerFX->fFinalAlpha; + pls.fMinWidth = 0; + pls.fMaxWidth = m_cs.pTracerFX->fWidth; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fLifeTime = g_cvarTracerLifetime.GetFloat(); + //pls.fLifeTime = m_fLifetime; + pls.fAlphaLifeTime = pls.fLifeTime; + pls.fPerturb = 0.0f; + pls.bAdditive = LTTRUE; + pls.bNoZ = LTTRUE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.nNumSegments = (int)g_cvarTracerSegments.GetFloat(); + pls.bAlignUp = LTTRUE; + + if (!m_Tracer.Init(&pls) || !m_Tracer.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + } + else if (fTime > m_fStartTime + m_fLifetime) + { + return LTFALSE; + } + + + // Draw the tracer... + + m_Tracer.Update(); + + + // Update the tracer positions... + + if (m_Tracer.HasBeenDrawn()) + { + // Use trail technology, instead of moving the tracer... + + PLFXLINESTRUCT ls; + + ls.vStartPos = m_vTracerPos; + ls.vEndPos = m_vTracerPos + (m_vDir * g_pGameClientShell->GetFrameTime() * m_fVelocity); + + m_vTracerPos = ls.vEndPos; + + // Get the last vert position... + + PolyLineList* pLines = m_Tracer.GetLines(); + if (pLines->GetLength() > 0) + { + PolyLine** pLine = pLines->GetItem(TLIT_LAST); + if (pLine && *pLine) + { + PolyVertStruct** pVert = (*pLine)->list.GetItem(TLIT_LAST); + if (pVert && *pVert) + { + ls.vStartPos = m_Tracer.GetVertPos((*pVert)); + } + } + } + + ls.vInnerColorStart = m_cs.pTracerFX->vColor; + ls.vInnerColorEnd = m_cs.pTracerFX->vColor; + ls.vOuterColorStart = m_cs.pTracerFX->vColor; + ls.vOuterColorEnd = m_cs.pTracerFX->vColor; + ls.fAlphaStart = m_cs.pTracerFX->fInitialAlpha; + ls.fAlphaEnd = m_cs.pTracerFX->fFinalAlpha; + ls.fLifeTime = g_cvarTracerLifetime.GetFloat(); + //ls.fLifeTime = m_fLifetime - (g_pLTClient->GetTime() - m_fStartTime); + ls.fLifeTime = ls.fLifeTime < 0.0f ? 0.0f : ls.fLifeTime; + ls.fAlphaLifeTime = ls.fLifeTime; + + m_Tracer.AddLine(ls); + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/TracerFX.h b/Jack/ClientShellDLL/TracerFX.h new file mode 100644 index 00000000..a492c113 --- /dev/null +++ b/Jack/ClientShellDLL/TracerFX.h @@ -0,0 +1,71 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TracerFX.h +// +// PURPOSE : Tracer special fx class - Definition +// +// CREATED : 1/21/97 +// +// ----------------------------------------------------------------------- // + +#ifndef __TRACER_FX_H__ +#define __TRACER_FX_H__ + +#include "SpecialFX.h" +#include "PolyLineFX.h" +#include "FXButeMgr.h" + +struct TRCREATESTRUCT : public SFXCREATESTRUCT +{ + TRCREATESTRUCT(); + + LTVector vStartPos; + LTVector vEndPos; + TRACERFX* pTracerFX; +}; + +inline TRCREATESTRUCT::TRCREATESTRUCT() +{ + vStartPos.Init(); + vEndPos.Init(); + pTracerFX = LTNULL; +} + + +class CTracerFX : public CSpecialFX +{ + public : + + CTracerFX() : CSpecialFX() + { + m_bFirstUpdate = LTTRUE; + m_fStartTime = 0.0f; + m_fDist = 0.0f; + m_fLifetime = 0.0f; + m_fVelocity = 0.0f; + m_vDir.Init(0, 0, 0); + m_vTracerPos.Init(); + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_TRACER_ID; } + + protected : + + TRCREATESTRUCT m_cs; + + LTBOOL m_bFirstUpdate; + LTFLOAT m_fStartTime; + LTVector m_vDir; + LTFLOAT m_fDist; + LTFLOAT m_fLifetime; + LTFLOAT m_fVelocity; + LTVector m_vTracerPos; + + CPolyLineFX m_Tracer; +}; + +#endif // __TRACER_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/TransitionFXMgr.cpp b/Jack/ClientShellDLL/TransitionFXMgr.cpp new file mode 100644 index 00000000..3132ac7e --- /dev/null +++ b/Jack/ClientShellDLL/TransitionFXMgr.cpp @@ -0,0 +1,406 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TransitionFXMgr.cpp +// +// PURPOSE : Base management class for handling multiple transitions +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "ChainedFX.h" +#include "TransitionFXMgr.h" +#include "GameClientShell.h" +#include "LayoutMgr.h" + +/* + NOTES on the TransitionFXMgr + + The TransitionFXMgr is a class for managing the visual effects displayed + when changing from one menu screen to another. It acts as a wrapper + class for JimG's "ChainedFX" class, and as a supplement/replacement for + the interface to ChainedFX contained in the BaseScreen class. + + It is contained as a data member within the ScreenMgr class, which + handles initialization and termination for it. All other calls to the + TransitionFXMgr are done directly from the screen that uses it, through + calls embedded throughout the CBaseScreen class. In the interests of + minimizing (circular) dependencies, no header files #include the + declaration of the TransitionFXMgr, favoring forward declarations instead + and #including the header only within the CPP files. At the moment, the + only three files that make use of the header are BaseScreen.cpp, this + file (TransitionFXMgr.cpp) and ScreenMgr.cpp. + + The data handled by the TransitionFXMgr is contained within the BUTE file + "Layout.txt" in the form of entries of the "[Transition%d]" format. + + Access to the TransitionFXMgr is accomplished solely through a ScreenMgr + accessor function, GetTransitionFXMgr(). + +*/ + +// ----------------------------------------------------------------------- // +// Constructor and Destructor +// ----------------------------------------------------------------------- // +CTransitionFXMgr::CTransitionFXMgr() +{ + m_iCurrentScreen = 0; + m_iPreviousScreen = -1; + m_pCurrentChain = NULL; +} + +CTransitionFXMgr::~CTransitionFXMgr() +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::Init() +// +// Called from ScreenMgr. Load all the transitions from Layout.txt +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::Init() +{ + int iCurrentFrom = 0; + int iCurrentTo = 0; + m_bAllowLooping = true; + + ChainFXList * pChainFXList = LTNULL; + + // Iterate through all available transitionFX in layout.txt and add + // them all to m_TransitionFX + unsigned int nChainNum = 0; + INT_CHAINFX * pFX = g_pLayoutMgr->GetChainFX(nChainNum); + while (pFX) + { + // build the new ChainFX. + CChainedFX * pChainFX = debug_new(CChainedFX); + pChainFX->Init(pFX->szIntroName, pFX->szShortIntroName, pFX->szLoopName); + pChainFX->m_iFromScreen = pFX->iFromScreen; + pChainFX->m_iToScreen = pFX->iToScreen; + + // Where to add this new ChainFX? + // If it's the first, then create a new chainFXList + // It it's not, but doesn't match the last "from/to" pair, then create a new ChainFXList + // If it matches, then add it to the end of the current ChainFXList + + if (!pChainFXList) // first time through + { + // Create a new ChainFXList pChainFXList + pChainFXList = debug_new(ChainFXList); + + // Add the new ChainFXList to m_TransitionFX + m_TransitionFX.push_back(pChainFXList); + + // Add pChainFX to the list pChainFXList + pChainFXList->push_back(pChainFX); + + iCurrentFrom = pFX->iFromScreen; + iCurrentTo = pFX->iToScreen; + } + else if (pFX->iFromScreen != iCurrentFrom || pFX->iToScreen != iCurrentTo) + { + // Create a new ChainFXList pChainFXList + pChainFXList = debug_new(ChainFXList); + + // Add the new ChainFXList to m_TransitionFX + m_TransitionFX.push_back(pChainFXList); + + // Add pChainFX to the list pChainFXList + pChainFXList->push_back(pChainFX); + + iCurrentFrom = pFX->iFromScreen; + iCurrentTo = pFX->iToScreen; + } + else + { + // Add pChainFX to the list pChainFXList + pChainFXList->push_back(pChainFX); + } + + nChainNum++; + pFX = g_pLayoutMgr->GetChainFX(nChainNum); + } + while (pFX); +} + + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::Term() +// +// Called from ScreenMgr. +// iterate through m_TransitionFX and iterate through each chain, deleting. +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::Term() +{ + m_iCurrentScreen = 0; + + TransitionFXList::iterator iter = m_TransitionFX.begin(); + while (iter != m_TransitionFX.end()) + { + TermChain(*iter); + debug_delete(*iter); + iter++; + } + m_TransitionFX.clear(); +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::TermChain() +// +// Private helper function +// iterate through a single element of m_TransitionFX (a chain) and delete it +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::TermChain(ChainFXList * pChain) +{ + ChainFXList::iterator iter = pChain->begin(); + while (iter != pChain->end()) + { + debug_delete(*iter); + iter++; + } + pChain->clear(); +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::AddTransitionFX(pChainFX) +// +// Possibly unused call to have the individual folder request that its effects be added +// to the master array. If there is an effect already in the list that takes precedence +// then this ChainFX will be discarded. +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::AddTransitionFX(ChainFXList * pChainedFX) +{ + // Probably unused. I prefer AddTransitionFX(screen), the next function down + m_TransitionFX.push_back(pChainedFX); +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::AddTransitionFX(screen) +// +// Similar to the above call, potentially unused. Call by the individual +// folder to have the TransitionFXMgr actually sift through that screen's +// own layout data to find chained effects to add to the master array of +// chained effects. If there is an effect already in the list that takes +// precedence, then this ChainFX will be discarded +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::AddTransitionFX(int screen) +{ + // Andy, try to use this function, and remove it from BaseFolder + // It involves including the screen names so that this function + // can look for the right key. +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::CheckForBestTransition() +// +// Internal function for checking to see if this particular effect is a +// more suitable chainfx than the one currently referenced by m_pCurrentChain +// ----------------------------------------------------------------------- // +void CTransitionFXMgr::CheckForBestTransition(ChainFXList * pChainFX) +{ + // Quick discard case + // If we already have a perfect match, exit. + if (m_pCurrentChain) + { + CChainedFX * pCurrentFX = *(m_pCurrentChain->begin()); + if (pCurrentFX->m_iFromScreen == m_iPreviousScreen + && pCurrentFX->m_iToScreen == m_iCurrentScreen) + return; + } + + // Grab the first chainfx in this list + CChainedFX * pFX = *(pChainFX->begin()); + int iFromScreen = pFX->m_iFromScreen; + int iToScreen = pFX->m_iToScreen; + + // Second easy discard case + // if this From and To match, it's the new currentchain + if (iToScreen == m_iCurrentScreen && iFromScreen == m_iPreviousScreen) + { + m_pCurrentChain = pChainFX; + return; + } + + // If the "to" matches + if (iToScreen == m_iCurrentScreen) + { + // "From" does not match, as we know from the previous "if" statement. + // It can be 0, meaning that the "from" doesn't matter, or any other + // value, meaning that it's just not a match. + if (iFromScreen != 0) + return; + // We now know that this ChainedFX has the right "to" value, and is a + // general purpose intro to this screen. This takes precedence over + // anything except a perfect match, which we already tested for, so + // this ChainedFX is now our new "currentChain". + m_pCurrentChain = pChainFX; + return; + } + + // if the "from" matches (and not the "to") it's an "Outro" FX for the previous + // screen. "Outro FX" are only considered when there is no intro of any kind + // available. + if (iFromScreen == m_iPreviousScreen) + { + if (!m_pCurrentChain) + m_pCurrentChain = pChainFX; + return; + } + // if neither matches, exit +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::EnterScreen() +// +// Called by the ScreenMgr for bookkeeping. Sets "current" screen +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::EnterScreen(int screen) +{ + // If this assert fires, then a new screen is being entered before + // cleaning up the previous screen + ASSERT(m_pCurrentChain == NULL); + if (m_pCurrentChain) + return; + + m_iCurrentScreen = screen; + // look through all the ChainFX in m_TransitionFX to find the chainedFX + // with the highest priority. + TransitionFXList::iterator iter = m_TransitionFX.begin(); + while (iter != m_TransitionFX.end()) + { + CheckForBestTransition(*iter); + iter++; + } +} + +void CTransitionFXMgr::ClearScreenHistory() +{ + m_iPreviousScreen = -1; +} +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::HasTransitionFX() +// +// Simple test to see if the Start and Update functions need to be called. +// ----------------------------------------------------------------------- // + +LTBOOL CTransitionFXMgr::HasTransitionFX() +{ + return (m_pCurrentChain != NULL); +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::ExitScreen(int screen) +// +// Called by the ScreenMgr for bookkeeping. The arg is optional but worth +// checking. Moves screen/current to "previous". Note that a screen +// will already automatically remove all FX as part of its OnFocus(FALSE) +// functionality. +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::ExitScreen(int screen) +{ + if (screen != m_iCurrentScreen) + { + // If you get this assert, then somehow the ScreenMgr has lost track + // of which screen you are exiting. Non lethal + ASSERT(0); + } + m_iPreviousScreen = m_iCurrentScreen; + m_pCurrentChain = NULL; +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::StartTransitionFX() +// +// Called by BaseFolder::CreateInterfaceSFX. Initializes the appropriate +// ChainFX for each individual screen +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::StartTransitionFX(bool bVisited) +{ + if (!m_pCurrentChain) + return; + + ChainFXList::iterator iter = m_pCurrentChain->begin(); + + while (iter != m_pCurrentChain->end()) + { + (*iter)->SetLooping(m_bAllowLooping); + (*iter)->Start(bVisited); + iter++; + } +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::UpdateTransitionFX() +// +// Called by BaseFolder::UpdateInterfaceSFX. Updates the appropriate +// ChainFX for each individual screen +// ----------------------------------------------------------------------- // + +void CTransitionFXMgr::UpdateTransitionFX() +{ + if (!m_pCurrentChain) + return; + + ChainFXList::iterator iter = m_pCurrentChain->begin(); + while (iter != m_pCurrentChain->end()) + { + (*iter)->Update(); + iter++; + } +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::IsTransitionComplete() +// +// Optional check by a screen to see if all of the FX are looping. If so +// then a transition is considered "complete" +// ----------------------------------------------------------------------- // + +bool CTransitionFXMgr::IsTransitionComplete() +{ + if (!m_pCurrentChain) + return true; + + ChainFXList::iterator iter = m_pCurrentChain->begin(); + while (iter != m_pCurrentChain->end()) + { + if (!(*iter)->IsIntroDone()) + { + return false; + } + iter++; + } + + return true; +} + +// ----------------------------------------------------------------------- // +// CTransitionFXMgr::EndTransition() +// +// Optional method for killing all ChainFX on the screen at an arbitrary +// time such as when the screen wishes to handle its own drawing when the +// screen is up. +// ----------------------------------------------------------------------- // +void CTransitionFXMgr::EndTransition() +{ + if (!m_pCurrentChain) + return; + + ChainFXList::iterator iter = m_pCurrentChain->begin(); + while (iter != m_pCurrentChain->end()) + { + (*iter)->End(); + iter++; + } + m_pCurrentChain = LTNULL; +} diff --git a/Jack/ClientShellDLL/TransitionFXMgr.h b/Jack/ClientShellDLL/TransitionFXMgr.h new file mode 100644 index 00000000..2546919e --- /dev/null +++ b/Jack/ClientShellDLL/TransitionFXMgr.h @@ -0,0 +1,61 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TransitionFXMgr.h +// +// PURPOSE : Base management class for handling multiple transitions +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_TRANSITIONFXMGR_H) +#define _TRANSITIONFXMGR_H + +// *sigh* I didn't want to do this. +#include "ChainedFX.h" + +class CTransitionFXMgr +{ +public: + + CTransitionFXMgr(); + ~CTransitionFXMgr(); + + // Call from ScreenMgr + void Init(); // load all the transitions from Layout.txt + void Term(); // iterate through m_TransitionFX and iterate through each chain, deleting. + + void AddTransitionFX(ChainFXList * pChainedFX); + void AddTransitionFX(int screen); + + // Called by the BaseScreen::OnFocus(true/false) for bookkeeping + void EnterScreen(int screen); // set current + void ExitScreen(int screen); // arg is optional, but good for checking + void ClearScreenHistory(); + + // Called by the individual screen for maintenance + void StartTransitionFX(bool bVisited); + void UpdateTransitionFX(); + + LTBOOL HasTransitionFX(); + + bool IsTransitionComplete(); + void EndTransition(); + + void SetLooping(bool bAllowLooping) {m_bAllowLooping = bAllowLooping;} + +protected: + + void CheckForBestTransition(ChainFXList * pChainFX); + + void TermChain(ChainFXList * pChain); + + // Array of all the little arrays of ChainedFX + TransitionFXList m_TransitionFX; + ChainFXList * m_pCurrentChain; + int m_iPreviousScreen; + int m_iCurrentScreen; + bool m_bAllowLooping; +}; + +#endif // _TRANSITIONFXMGR_H \ No newline at end of file diff --git a/Jack/ClientShellDLL/TriggerFX.cpp b/Jack/ClientShellDLL/TriggerFX.cpp new file mode 100644 index 00000000..52e00309 --- /dev/null +++ b/Jack/ClientShellDLL/TriggerFX.cpp @@ -0,0 +1,461 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TriggerFX.h +// +// PURPOSE : Trigger special fx class - Definition +// +// CREATED : 5/6/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "CharacterFX.h" + #include "TriggerTypeMgr.h" + #include "TriggerFX.h" + #include "clientres.h" + + +#define TRIGFX_DIMS_MODEL "Models\\1x1_square.ltb" +#define TRIGFX_DIMS_SKIN "Models\\1x1_square.dtx" + +static bool TriggerDimsFilterFn( HOBJECT hTest, void *pUserData ) +{ + if( hTest == (HOBJECT)pUserData ) + return true; + + if( IsMainWorld( hTest ) || (GetObjectType( hTest ) == OT_WORLDMODEL) ) + return true; + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::CTriggerFX +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CTriggerFX::CTriggerFX( ) +: CSpecialFX (), + m_bWithinIndicatorRadius ( false ), + m_fDistPercent ( -1.0f ), + m_hDimsObject ( LTNULL ), + m_hIcon ( LTNULL ) +{ + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::~CTriggerFX +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CTriggerFX::~CTriggerFX() +{ + if( m_hDimsObject ) + g_pLTClient->RemoveObject( m_hDimsObject ); + m_hDimsObject = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CCharacterFX::Init +// +// PURPOSE: Init the trigger fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CTriggerFX::Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ) +{ + if( !hServObj ) return LTFALSE; + if( !CSpecialFX::Init( hServObj, pMsg )) return LTFALSE; + + m_cs.hServerObj = hServObj; + m_cs.Read( pMsg ); + + ObjectCreateStruct ocs; + + LTVector vPos; + g_pLTClient->GetObjectPos( m_hServerObject, &vPos ); + + ocs.m_Pos = vPos; + + SAFE_STRCPY( ocs.m_Filename, TRIGFX_DIMS_MODEL ); + SAFE_STRCPY( ocs.m_SkinName, TRIGFX_DIMS_SKIN ); + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_NOLIGHT | FLAG_GOTHRUWORLD; + + m_hDimsObject = g_pLTClient->CreateObject( &ocs ); + if( !m_hDimsObject ) + return LTFALSE; + + LTVector vDims = m_cs.vDims; + g_pPhysicsLT->SetObjectDims( m_hDimsObject, &vDims, 0 ); + + if( m_cs.nTriggerTypeId != TTMGR_INVALID_ID ) + { + TRIGGERTYPE *pType = g_pTriggerTypeMgr->GetTriggerType( m_cs.nTriggerTypeId ); + if( pType ) + { + m_hIcon = g_pInterfaceResMgr->GetTexture( pType->szIcon ); + } + } + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::Update +// +// PURPOSE: Update the fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CTriggerFX::Update() +{ + if( !m_hServerObject || m_bWantRemove || !m_hDimsObject ) return LTFALSE; + + CalcLocalClientDistance(); + + CheckPlayersWithinTrigger(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::OnServerMessage +// +// PURPOSE: Handle any messages from our server object... +// +// ----------------------------------------------------------------------- // + +LTBOOL CTriggerFX::OnServerMessage( ILTMessage_Read *pMsg ) +{ + if( !CSpecialFX::OnServerMessage( pMsg )) return LTFALSE; + + uint8 nMsgId = pMsg->Readuint8(); + + switch( nMsgId ) + { + case TRIGFX_ALLFX_MSG : + { + // Re-init our data... + + m_cs.Read( pMsg ); + } + break; + + case TRIGFX_LOCKED_MSG : + { + m_cs.bLocked = !!(pMsg->Readuint8()); + } + break; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::CalcLocalClientDistance +// +// PURPOSE: Calculates the distance to from the local player to the trigger... +// +// ----------------------------------------------------------------------- // + +void CTriggerFX::CalcLocalClientDistance() +{ + m_fDistPercent = -1.0f; + + // Don't do anything if the trigger is locked or our distances are too small.. + + if( m_cs.bLocked || (m_cs.fHUDAlwaysOnDist <= 0.0f && m_cs.fHUDLookAtDist <= 0.0f) ) + return; + + // See if the player is within the trigger... + + LTVector vTrigPos; + g_pLTClient->GetObjectPos( m_hServerObject, &vTrigPos ); + g_pLTClient->SetObjectPos( m_hDimsObject, &vTrigPos ); + + HLOCALOBJ hPlayerObj = g_pLTClient->GetClientObject(); + LTVector vPlayerPos, vPlayerDims; + + g_pLTClient->GetObjectPos( hPlayerObj, &vPlayerPos ); + + // Make sure we are within the display radius... + + float fMaxRadius = Max( m_cs.fHUDAlwaysOnDist, m_cs.fHUDLookAtDist ); + float fDistSqr = vTrigPos.DistSqr( vPlayerPos ); + bool bWithinLookAtDist = (fDistSqr < m_cs.fHUDLookAtDist * m_cs.fHUDLookAtDist); + bool bWithinAlwaysOnDist = (fDistSqr < m_cs.fHUDAlwaysOnDist * m_cs.fHUDAlwaysOnDist); + + if( !bWithinLookAtDist && !bWithinAlwaysOnDist ) + { + // We are not close enough... + + m_bWithinIndicatorRadius = false; + return; + } + + m_bWithinIndicatorRadius = true; + + g_pPhysicsLT->GetObjectDims( hPlayerObj, &vPlayerDims ); + + LTVector vTrigMin = vTrigPos - m_cs.vDims; + LTVector vTrigMax = vTrigPos + m_cs.vDims; + LTVector vPlayerMin = vPlayerPos - vPlayerDims; + LTVector vPlayerMax = vPlayerPos + vPlayerDims; + + // Check if we are within the height of the trigger... + + bool bWithinHeight =false; + if( vPlayerMax.y > vTrigMin.y && vPlayerMin.y < vTrigMax.y ) + bWithinHeight = true; + + // See if we are inside the trigger at all... + + if( bWithinHeight && (BoxesIntersect( vTrigMin, vTrigMax, vPlayerMin, vPlayerMax ) || bWithinAlwaysOnDist)) + { + m_fDistPercent = 1.0f; + } + else + { + // We are within the height of the trigger, show how far from it we are... + + float fMinDist = (vPlayerDims.x + vPlayerDims.z) * 0.5f; + float fMaxDist = 100000.0f; + + LTVector vDir; + + if( bWithinAlwaysOnDist ) + { + vDir = vTrigPos - vPlayerPos; + vDir.Normalize(); + } + else + { + LTRotation rRot; + g_pLTClient->GetObjectRotation( g_pPlayerMgr->GetCamera(), &rRot ); + + vDir = rRot.Forward(); + } + + IntersectQuery IQuery; + IntersectInfo IInfo; + + IQuery.m_From = vPlayerPos + (vDir * fMinDist); + IQuery.m_To = IQuery.m_From + (vDir * fMaxDist); + IQuery.m_Flags = INTERSECT_OBJECTS | INTERSECT_HPOLY | IGNORE_NONSOLID; + + // We need to recieve rayhits for this intersect call... + + g_pCommonLT->SetObjectFlags( m_hDimsObject, OFT_Flags, FLAG_RAYHIT, FLAG_RAYHIT ); + + if( g_pLTClient->IntersectSegment( &IQuery, &IInfo )) + { + if( IInfo.m_hObject == m_hDimsObject ) + { + IInfo.m_Point.y = vPlayerPos.y; + float fDist = vPlayerPos.Dist( IInfo.m_Point ); + m_fDistPercent = 1.0f - (fDist / fMaxRadius); + } + } + + // No more rayhits... + + g_pCommonLT->SetObjectFlags( m_hDimsObject, OFT_Flags, 0, FLAG_RAYHIT ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTriggerFX::CheckPlayersWithinTrigger +// +// PURPOSE: Checks to see which players are inside the trigger +// and sends transmissions accordingly... +// +// ----------------------------------------------------------------------- // + +void CTriggerFX::CheckPlayersWithinTrigger() +{ + if( m_cs.bLocked ) + return; + + // Get a list of all the characters... + + CSpecialFXList *pList = g_pGameClientShell->GetSFXMgr()->GetFXList( SFX_CHARACTER_ID ); + if( !pList ) + return; + + int nListSize = pList->GetSize(); + int nNumChars = pList->GetNumItems(); + int nNumFoundChars = 0; + int nNumPlayersFound = 0; + uint32 dwLocalId = 0; + + g_pLTClient->GetLocalClientID( &dwLocalId ); + + LTVector vTrigPos, vPlayerPos, vPlayerDims, vPlayerMin, vPlayerMax; + g_pLTClient->GetObjectPos( m_hServerObject, &vTrigPos ); + + // Setup the triggers box... + + LTVector vTrigMin = vTrigPos - m_cs.vDims; + LTVector vTrigMax = vTrigPos + m_cs.vDims; + + bool bLocalPlayerIn = false; + + m_lstPlayersNotInTrigger.clear(); + m_lstNewPlayersInTrigger.clear(); + + for( int i = 0; i < nListSize; ++i ) + { + // Try not to go through the entire list... + + if( nNumFoundChars == nNumChars ) + break; + + if( (*pList)[i] ) + { + CCharacterFX *pChar = (CCharacterFX*)(*pList)[i]; + if( !pChar ) + continue; + + // Found another char.. + ++nNumFoundChars; + + if( pChar->m_cs.bIsPlayer ) + { + ++nNumPlayersFound; + + HOBJECT hPlayer = pChar->GetServerObj(); + + g_pLTClient->GetObjectPos( hPlayer, &vPlayerPos ); + g_pPhysicsLT->GetObjectDims( hPlayer, &vPlayerDims ); + + vPlayerMin = vPlayerPos - vPlayerDims; + vPlayerMax = vPlayerPos + vPlayerDims; + + // Check the current list of players in the trigger for this player... + + CharFXList::iterator iter; + for( iter = m_lstCurPlayersInTrigger.begin(); iter != m_lstCurPlayersInTrigger.end(); ++iter ) + { + if( pChar == (*iter) ) + break; + } + + // Check if we are within the height of the trigger... + + bool bWithinHeight = false; + if( vPlayerMax.y > vTrigMin.y && vPlayerMin.y < vTrigMax.y ) + bWithinHeight = true; + + if( bWithinHeight && BoxesIntersect( vTrigMin, vTrigMax, vPlayerMin, vPlayerMax ) && !pChar->IsPlayerDead()) + { + if( dwLocalId == pChar->m_cs.nClientID ) + bLocalPlayerIn = true; + + // If it wasn't in the list add it... + + if( iter == m_lstCurPlayersInTrigger.end() ) + { + m_lstCurPlayersInTrigger.push_back( pChar ); + m_lstNewPlayersInTrigger.push_back( pChar ); + } + + } + else + { + if( iter != m_lstCurPlayersInTrigger.end() ) + m_lstCurPlayersInTrigger.erase( iter ); + + m_lstPlayersNotInTrigger.push_back( pChar ); + } + } + } + } + + if( (m_lstNewPlayersInTrigger.size() > 0) && (nNumPlayersFound > 1) ) + { + CClientInfoMgr *pInfoMgr = g_pInterfaceMgr->GetClientInfoMgr(); + if( !pInfoMgr ) + return; + + CString sTransmission, sMessage; + + if( bLocalPlayerIn ) + { + // Display a general transmission and messages for each player you are waiting for... + + int nPlayersNotInTrig = m_lstPlayersNotInTrigger.size(); + + if( m_cs.nPlayerInsideID != (uint32)-1 ) + { + g_pTransmission->Show( m_cs.nPlayerInsideID ); + } + else if( nPlayersNotInTrig > 1 ) + { + //sTransmission.Format( "You are waiting for %i players.", nPlayersNotInTrig ); + g_pTransmission->Show( FormatTempString(IDS_EXIT_PLAYER_WAITING,nPlayersNotInTrig) ); + } + else + { + //sTransmission.Format( "You are waiting for 1 player." ); + g_pTransmission->Show( FormatTempString(IDS_EXIT_PLAYER_WAITING_1) ); + } + + + CharFXList::iterator iter; + for( iter = m_lstPlayersNotInTrigger.begin(); iter != m_lstPlayersNotInTrigger.end(); ++iter ) + { + //sMessage.Format( "You are waiting for %s.", pInfoMgr->GetPlayerName( (*iter)->m_cs.nClientID )); + g_pChatMsgs->AddMessage( FormatTempString(IDS_EXIT_PLAYER_WAITING_NAME,pInfoMgr->GetPlayerName( (*iter)->m_cs.nClientID)) ); + } + } + else + { + // Display a general transmission and messages for each player waiting for you... + + int nPlayersInTrig = m_lstCurPlayersInTrigger.size(); + + if( m_cs.nPlayerOutsideID != (uint32)-1 ) + { + g_pTransmission->Show( m_cs.nPlayerOutsideID ); + } + else if( nPlayersInTrig > 1 ) + { +// sTransmission.Format( "%i players are waiting for you",nPlayersInTrig ); + g_pTransmission->Show( FormatTempString(IDS_EXIT_WAITING,nPlayersInTrig) ); + } + else + { +// sTransmission.Format( "1 player is waiting for you." ); + g_pTransmission->Show( FormatTempString(IDS_EXIT_WAITING_1) ); + } + + + CharFXList::iterator iter; + for( iter = m_lstCurPlayersInTrigger.begin(); iter != m_lstCurPlayersInTrigger.end(); ++iter ) + { + g_pChatMsgs->AddMessage( FormatTempString(IDS_EXIT_WAITING_NAME,pInfoMgr->GetPlayerName( (*iter)->m_cs.nClientID)) ); + } + } + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/TriggerFX.h b/Jack/ClientShellDLL/TriggerFX.h new file mode 100644 index 00000000..5b672119 --- /dev/null +++ b/Jack/ClientShellDLL/TriggerFX.h @@ -0,0 +1,64 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : TriggerFX.h +// +// PURPOSE : Trigger special fx class - Definition +// +// CREATED : 5/6/02 +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __TRIGGER_FX_H__ +#define __TRIGGER_FX_H__ + +// +// Includes... +// + + #include "SpecialFX.h" + + +class CTriggerFX : public CSpecialFX +{ + public: // Methods... + + CTriggerFX(); + ~CTriggerFX(); + + virtual LTBOOL Init( HLOCALOBJ hServObj, ILTMessage_Read *pMsg ); + virtual LTBOOL Update(); + virtual LTBOOL OnServerMessage( ILTMessage_Read *pMsg ); + + virtual uint32 GetSFXID() { return SFX_TRIGGER_ID; } + + virtual bool WithinIndicatorRadius() const { return m_bWithinIndicatorRadius; } + virtual float GetDistancePercentage() const { return m_fDistPercent; } + virtual HTEXTURE GetIcon() const { return m_hIcon; } + + + protected: // Methods... + + void CalcLocalClientDistance(); + void CheckPlayersWithinTrigger(); + + + protected: // Members... + + typedef std::vector CharFXList; + CharFXList m_lstCurPlayersInTrigger; + CharFXList m_lstNewPlayersInTrigger; + CharFXList m_lstPlayersNotInTrigger; + + TRIGGERCREATESTRUCT m_cs; + + bool m_bWithinIndicatorRadius; + float m_fDistPercent; + + HLOCALOBJ m_hDimsObject; + + HTEXTURE m_hIcon; +}; + +#endif //__TRIGGER_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/VKDefs.cpp b/Jack/ClientShellDLL/VKDefs.cpp new file mode 100644 index 00000000..bfbf3dfd --- /dev/null +++ b/Jack/ClientShellDLL/VKDefs.cpp @@ -0,0 +1,93 @@ +//---------------------------------------------------------- +// +// MODULE : VKDefs.cpp +// +// PURPOSE : Keyboard definitions and utilities (Windows-specific) +// +// CREATED : 12/29/97 +// +//---------------------------------------------------------- + +#include "stdafx.h" +#include "iltclient.h" + +char VKToASCII (int nKey) +{ + LTBOOL bShiftDown = !!(GetKeyState (VK_SHIFT) & 0x8000); + LTBOOL bCapsLockOn = !!(GetKeyState (VK_CAPITAL) & 0x01); + LTBOOL bNumLockOn = !!(GetKeyState (VK_NUMLOCK) & 0x01); + LTBOOL bUpperCase = (bCapsLockOn && !bShiftDown) || (!bCapsLockOn && bShiftDown); + + if (nKey >= 'A' && nKey <= 'Z' && !bUpperCase) + { + nKey += 32; + } + else if ((nKey >= 48 && nKey <= 57) && bShiftDown) + { + // we are not checking explicitly for some of + // the values included in the ranges above since + // because they are characters only derived with + // a shift combination, they should not ever be + // encountered + + switch (nKey) + { + case '0': nKey = ')'; break; + case '1': nKey = '!'; break; + case '2': nKey = '@'; break; + case '3': nKey = '#'; break; + case '4': nKey = '$'; break; + case '5': nKey = '%'; break; + case '6': nKey = '^'; break; + case '7': nKey = '&'; break; + case '8': nKey = '*'; break; + case '9': nKey = '('; break; + } + } + else if ((nKey >= 186 && nKey <= 191) || (nKey >= 219 && nKey <= 222)) + { + switch (nKey) + { + case 186: nKey = bShiftDown ? ':' : ';'; break; + case 187: nKey = bShiftDown ? '+' : '='; break; + case 188: nKey = bShiftDown ? '<' : ','; break; + case 189: nKey = bShiftDown ? '_' : '-'; break; + case 190: nKey = bShiftDown ? '>' : '.'; break; + case 191: nKey = bShiftDown ? '?' : '/'; break; + + case 219: nKey = bShiftDown ? '{' : '['; break; + case 220: nKey = bShiftDown ? '|' : '\\'; break; + case 221: nKey = bShiftDown ? '}' : ']'; break; + case 222: nKey = bShiftDown ? '\"' : '\''; break; + } + } + else if (nKey >= 96 && nKey <= 105 && bNumLockOn) + { + switch (nKey) + { + case VK_NUMPAD0: nKey = '0'; break; + case VK_NUMPAD1: nKey = '1'; break; + case VK_NUMPAD2: nKey = '2'; break; + case VK_NUMPAD3: nKey = '3'; break; + case VK_NUMPAD4: nKey = '4'; break; + case VK_NUMPAD5: nKey = '5'; break; + case VK_NUMPAD6: nKey = '6'; break; + case VK_NUMPAD7: nKey = '7'; break; + case VK_NUMPAD8: nKey = '8'; break; + case VK_NUMPAD9: nKey = '9'; break; + } + } + else if (nKey >= 106 && nKey <= 111) + { + switch (nKey) + { + case VK_MULTIPLY: nKey = '*'; break; + case VK_ADD: nKey = '+'; break; + case VK_SUBTRACT: nKey = '-'; break; + case VK_DECIMAL: nKey = '.'; break; + case VK_DIVIDE: nKey = '/'; break; + } + } + + return nKey; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/VKDefs.h b/Jack/ClientShellDLL/VKDefs.h new file mode 100644 index 00000000..3382ad69 --- /dev/null +++ b/Jack/ClientShellDLL/VKDefs.h @@ -0,0 +1,171 @@ +#ifndef __VK__DEFS__H__ +#define __VK__DEFS__H__ + +//---------------------------------------------------------- +// +// MODULE : VKDefs.h +// +// PURPOSE : Keyboard definitions and utilities (Windows-specific) +// +// CREATED : 6/27/97 7:26:40 PM +// +//---------------------------------------------------------- + +char VKToASCII (int nKey); + +#ifdef __PSX2 +#define DEFINE_WINDOWS_VIRTUAL_KEYS 1 +#endif + +#ifdef DEFINE_WINDOWS_VIRTUAL_KEYS + +#define VK_LBUTTON 1 +#define VK_RBUTTON 2 +#define VK_CANCEL 3 +#define VK_MBUTTON 4 + +#define VK_BACK 8 +#define VK_TAB 9 + +#define VK_CLEAR 12 +#define VK_RETURN 13 + +#define VK_SHIFT 16 +#define VK_CONTROL 17 +#define VK_MENU 18 +#define VK_PAUSE 19 +#define VK_CAPITAL 20 + + +#define VK_ESCAPE 27 + +#define VK_SPACE 32 +#define VK_PRIOR 33 +#define VK_NEXT 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 +#define VK_SELECT 41 +#define VK_PRINT 42 +#define VK_EXECUTE 43 +#define VK_SNAPSHOT 44 +#define VK_INSERT 45 +#define VK_DELETE 46 +#define VK_HELP 47 + +#define VK_LWIN 91 +#define VK_RWIN 92 +#define VK_APPS 93 + +#define VK_NUMPAD0 96 +#define VK_NUMPAD1 97 +#define VK_NUMPAD2 98 +#define VK_NUMPAD3 99 +#define VK_NUMPAD4 100 +#define VK_NUMPAD5 101 +#define VK_NUMPAD6 102 +#define VK_NUMPAD7 103 +#define VK_NUMPAD8 104 +#define VK_NUMPAD9 105 +#define VK_MULTIPLY 106 +#define VK_ADD 107 +#define VK_SEPARATOR 108 +#define VK_SUBTRACT 109 +#define VK_DECIMAL 110 +#define VK_DIVIDE 111 +#define VK_F1 112 +#define VK_F2 113 +#define VK_F3 114 +#define VK_F4 115 +#define VK_F5 116 +#define VK_F6 117 +#define VK_F7 118 +#define VK_F8 119 +#define VK_F9 120 +#define VK_F10 121 +#define VK_F11 122 +#define VK_F12 123 +#define VK_F13 124 +#define VK_F14 125 +#define VK_F15 126 +#define VK_F16 127 +#define VK_F17 128 +#define VK_F18 129 +#define VK_F19 130 +#define VK_F20 131 +#define VK_F21 132 +#define VK_F22 133 +#define VK_F23 134 +#define VK_F24 135 + +#define VK_NUMLOCK 144 +#define VK_SCROLL 145 + +#define VK_LSHIFT 160 +#define VK_RSHIFT 161 +#define VK_LCONTROL 162 +#define VK_RCONTROL 163 +#define VK_LMENU 164 +#define VK_RMENU 165 + +#define VK_PROCESSKEY 229 + +#define VK_ATTN 246 +#define VK_CRSEL 247 +#define VK_EXSEL 248 +#define VK_EREOF 249 +#define VK_PLAY 250 +#define VK_ZOOM 251 +#define VK_NONAME 252 +#define VK_PA1 253 +#define VK_OEM_CLEAR 254 + +#endif // DEFINE_WINDOWS_VIRTUAL_KEYS + + +#define VK_TILDE 192 + +#define VK_0 48 +#define VK_1 49 +#define VK_2 50 +#define VK_3 51 +#define VK_4 52 +#define VK_5 53 +#define VK_6 54 +#define VK_7 55 +#define VK_8 56 +#define VK_9 57 + +#define VK_A 65 +#define VK_B 66 +#define VK_C 67 +#define VK_D 68 +#define VK_E 69 +#define VK_F 70 +#define VK_G 71 +#define VK_H 72 +#define VK_I 73 +#define VK_J 74 +#define VK_K 75 +#define VK_L 76 +#define VK_M 77 +#define VK_N 78 +#define VK_O 79 +#define VK_P 80 +#define VK_Q 81 +#define VK_R 82 +#define VK_S 83 +#define VK_T 84 +#define VK_U 85 +#define VK_V 86 +#define VK_W 87 +#define VK_X 88 +#define VK_Y 89 +#define VK_Z 90 + + + +#endif // __VK__DEFS__H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/VarTrack.h b/Jack/ClientShellDLL/VarTrack.h new file mode 100644 index 00000000..0091d858 --- /dev/null +++ b/Jack/ClientShellDLL/VarTrack.h @@ -0,0 +1,133 @@ + +// Console variable tracker.. makes it easy to get and set the value of +// console variables. + +#ifndef __VarTrack_H__ +#define __VarTrack_H__ + + +#include +#include "iltclient.h" +#include "ILTStream.h" + +class VarTrack +{ + public: + + VarTrack() + { + m_hVar = LTNULL; + m_pClientDE = LTNULL; + m_pVarName = NULL; + } + + inline LTBOOL Init(ILTClient *pClientDE, char const* pVarName, char const* pStartVal, float fStartVal) + { + char tempStr[128], tempStr2[256]; + + m_pVarName = pVarName; + if(!pStartVal) + { + LTSNPrintF(tempStr, sizeof(tempStr), "%5f", fStartVal); + pStartVal = tempStr; + } + + m_hVar = pClientDE->GetConsoleVar(( char* )pVarName); + if(!m_hVar) + { + LTSNPrintF(tempStr2, sizeof(tempStr2), "\"%s\" \"%s\"", pVarName, pStartVal); + pClientDE->RunConsoleString(tempStr2); + + m_hVar = pClientDE->GetConsoleVar(( char* )pVarName); + if(!m_hVar) + { + return LTFALSE; + } + } + + m_pClientDE = pClientDE; + return LTTRUE; + } + + inline LTBOOL IsInitted() + { + return !!m_pClientDE; + } + + inline float GetFloat(float defVal=0.0f) + { + if(m_pClientDE && m_hVar) + return m_pClientDE->GetVarValueFloat(m_hVar); + else + return defVal; + } + + inline char const* GetStr(char const* pDefault="") + { + const char *pRet; + + if(m_pClientDE && m_hVar) + { + if(pRet = m_pClientDE->GetVarValueString(m_hVar)) + return pRet; + } + return pDefault; + } + + inline void SetFloat(float val) + { + char str[256]; + + if(!m_pClientDE || !m_pVarName) + return; + + LTSNPrintF(str, sizeof(str), "%s %f", m_pVarName, val); + m_pClientDE->RunConsoleString(str); + } + + inline void SetStr(char const* szVal) + { + char str[256]; + + if(!m_pClientDE || !m_pVarName) + return; + + LTSNPrintF(str, sizeof(str), "+%s \"%s\"", m_pVarName, szVal); + m_pClientDE->RunConsoleString(str); + } + + inline void WriteFloat(float val) + { + char str[256]; + + if(!m_pClientDE || !m_pVarName) + return; + + LTSNPrintF(str, sizeof(str), "+%s %f", m_pVarName, val); + m_pClientDE->RunConsoleString(str); + } + + inline void Load(ILTStream *pStream) + { + float val; + + (*pStream) >> val; + + SetFloat(val); + } + + inline void Save(ILTStream *pStream) + { + float val = GetFloat(); + (*pStream) << val; + } + +protected: + + HCONSOLEVAR m_hVar; + ILTClient *m_pClientDE; + char const *m_pVarName; +}; + + +#endif // __VarTrack_H__ diff --git a/Jack/ClientShellDLL/VehicleMgr.cpp b/Jack/ClientShellDLL/VehicleMgr.cpp new file mode 100644 index 00000000..7bf632b9 --- /dev/null +++ b/Jack/ClientShellDLL/VehicleMgr.cpp @@ -0,0 +1,4881 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VehicleMgr.cpp +// +// PURPOSE : Client side vehicle mgr - Implementation +// +// CREATED : 6/12/00 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "VehicleMgr.h" +#include "VarTrack.h" +#include "MsgIDs.h" +#include "CharacterFX.h" +#include "CMoveMgr.h" +#include "PlayerMgr.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "ClientSoundMgr.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" +#include "LTEulerAngles.h" +#include "JumpVolumeFX.h" +#include "PlayerLureFX.h" +#include "FXButeMgr.h" +#include "SurfaceFunctions.h" +#include "PlayerViewAttachmentMgr.h" +#include "VehicleButeMgr.h" + +#define ROUNDFLOAT(f) ((int)((f) + ((f) > 0 ? 0.5 : -0.5))) + +#define VEHICLE_SLIDE_TO_STOP_TIME 5.0f + +#define VEHICLE_GEAR_0 0 +#define VEHICLE_GEAR_1 1 +#define VEHICLE_GEAR_2 2 + +extern CMoveMgr* g_pMoveMgr; +extern VarTrack g_vtMaxVehicleHeadCant; + +// [KLS 6/29/02] - Added more vehicle debugging info... +#define VEHICLE_TRACK_GENERAL 1.0f +#define VEHICLE_TRACK_ANIMATION 2.0f +#define VEHICLE_TRACK_VERBOSE 3.0f + + +// Vehicle tweaking vars... + +static VarTrack s_vtVehicleInfoTrack; +static VarTrack s_vtVehicleVel; +static VarTrack s_vtVehicleAccel; +static VarTrack s_vtVehicleAccelTime; +static VarTrack s_vtVehicleMaxDecel; +static VarTrack s_vtVehicleDecelTime; +static VarTrack s_vtVehicleMaxBrake; +static VarTrack s_vtVehicleBrakeTime; +static VarTrack s_vtVehicleStoppedPercent; +static VarTrack s_vtVehicleMaxSpeedPercent; +static VarTrack s_vtVehicleAccelGearChange; +static VarTrack s_vtVehicleMinTurnAccel; +static VarTrack s_vtVehicleTurnRate; +static VarTrack s_vtVehicleTurnRateScale; +static VarTrack s_vtVehicleInitialTurnRate; +static VarTrack s_vtVehicleSurfaceSpeedUpPitch; +static VarTrack s_vtVehicleSurfaceSlowDownPitch; +static VarTrack s_vtVehicleStartMotionPitch; +static VarTrack s_vtVehicleStopMotionPitch; +static VarTrack s_vtVehicleBrakePitch; +static VarTrack s_vtVehicleDecelPitch; + + +// Bicycle... + +VarTrack g_vtBicycleInterBumpTimeRange; +VarTrack g_vtBicycleIntraBumpTimeRange; +VarTrack g_vtBicycleBumpHeightRange; +VarTrack g_vtBicycleBobRate; +VarTrack g_vtBicycleBobSwayAmplitude; +VarTrack g_vtBicycleBobRollAmplitude; +VarTrack g_vtBicycleModelOffset; + + +VarTrack g_vtVehicleImpactDamage; +VarTrack g_vtVehicleImpactDamageMin; +VarTrack g_vtVehicleImpactDamageMax; +VarTrack g_vtVehicleImpactDamageVelPercent; +VarTrack g_vtVehicleImpactPushVelPercent; +VarTrack g_vtVehicleImpactMinAngle; +VarTrack g_vtVehicleImpactMaxAdjustAngle; +VarTrack g_vtVehicleImpactPushAmount; +VarTrack g_vtVehicleImpactPushRadius; +VarTrack g_vtVehicleImpactPushDuration; +VarTrack g_vtVehicleImpactFXOffsetForward; +VarTrack g_vtVehicleImpactFXOffsetUp; +VarTrack g_vtVehicleImpactThreshold; + +VarTrack g_vtVehicleImpactAIDamageVelPercent; +VarTrack g_vtVehicleImpactAIMinDamage; +VarTrack g_vtVehicleImpactAIMaxDamage; +VarTrack g_vtVehicleImpactAIDoNormalCollision; + +VarTrack g_vtVehicleFallDamageMinHeight; +VarTrack g_vtVehicleFallDamageMaxHeight; + +VarTrack g_vtVehicleMouseMinYawBuffer; +VarTrack g_vtVehicleMouseMaxYawBuffer; + +VarTrack g_vtVehicleMaxHeadOffsetX; +VarTrack g_vtVehicleMaxHeadOffsetY; +VarTrack g_vtVehicleMaxHeadOffsetZ; + +VarTrack g_vtVehicleMaxHeadYaw; + +VarTrack g_vtVehicleSlideToStopTime; + +VarTrack g_vtVehicleCollisionInfo; + +VarTrack g_vtJumpVolumeWaveType; +VarTrack g_vtJumpVolumeMaxDirectionPercent; // Give 100% if at or above this max +VarTrack g_vtJumpVolumeMinDirectionPercent; // Give 0% if at or below this min +VarTrack g_vtJumpVolumeInfo; + +VarTrack g_vtVehicleContourPlayerViewModel; +VarTrack g_vtVehicleContourPoints; +VarTrack g_vtVehicleContourExtraDimsX; +VarTrack g_vtVehicleContourExtraDimsZ; +VarTrack g_vtVehicleCamContourExtraDimsX; +VarTrack g_vtVehicleCamContourExtraDimsZ; +VarTrack g_vtVehicleContourMaxRotation; +VarTrack g_vtVehicleCamContourMaxRotation; +VarTrack g_vtVehicleContourRate; +VarTrack g_vtVehicleContour; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ModelNodeControlFn +// +// PURPOSE: Node control callback +// +// ----------------------------------------------------------------------- // + +void ModelNodeControlFn(const NodeControlData& Data, void *pUserData) +{ + CVehicleMgr* pMgr = (CVehicleMgr*)pUserData; + _ASSERT(pMgr); + if (!pMgr) return; + + pMgr->HandleNodeControl(Data.m_hModel, Data.m_hNode, Data.m_pNodeTransform); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CVehicleMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CVehicleMgr::CVehicleMgr() +{ + m_hVehicleModel = LTNULL; + m_hVehicleAttachSocket = INVALID_MODEL_SOCKET; + + m_hVehicleStartSnd = LTNULL; + m_hVehicleAccelSnd = LTNULL; + m_hVehicleDecelSnd = LTNULL; + m_hVehicleImpactSnd = LTNULL; + m_hIdleSnd = LTNULL; + m_hBrakeSnd = LTNULL; + + m_vVehicleOffset.Init(); + m_vHeadOffset.Init(); + m_fHeadYaw = 0.0f; + + m_bVehicleTurning = LTFALSE; + m_nVehicleTurnDirection = 0; + + m_bVehicleStopped = LTTRUE; + m_bVehicleAtMaxSpeed = LTFALSE; + + m_fHandlebarRoll = 0.0f; + m_fContourRoll = 0.0f; + m_bTurned = false; + m_bHolsteredWeapon = false; + + m_vLastPlayerAngles.Init(); + m_vLastCameraAngles.Init(); + m_vLastVehiclePYR.Init(); + m_vVehiclePYR.Init(); + + m_pVehicle = LTNULL; + m_bHasWeapon = false; + + InitWorldData(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::~CVehicleMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CVehicleMgr::~CVehicleMgr() +{ + TermLevel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::Init +// +// PURPOSE: Initialize mgr +// +// ----------------------------------------------------------------------- // + +LTBOOL CVehicleMgr::Init() +{ + // Vehicle tweaking... + + s_vtVehicleInfoTrack.Init( g_pLTClient, "VehicleInfo", NULL, 0.0f ); + s_vtVehicleVel.Init( g_pLTClient, "VehicleVel", NULL, 0.0f ); + s_vtVehicleAccel.Init( g_pLTClient, "VehicleAccel", NULL, 0.0f ); + s_vtVehicleAccelTime.Init( g_pLTClient, "VehicleAccelTime", NULL, 0.0f ); + s_vtVehicleMaxDecel.Init( g_pLTClient, "VehicleDecelMax", NULL, 0.0f ); + s_vtVehicleDecelTime.Init( g_pLTClient, "VehicleDecelTime", NULL, 0.0f ); + s_vtVehicleMaxBrake.Init( g_pLTClient, "VehicleBrakeMax", NULL, 0.0 ); + s_vtVehicleBrakeTime.Init( g_pLTClient, "VehicleBrakeTime", NULL, 0.0 ); + s_vtVehicleMinTurnAccel.Init( g_pLTClient, "VehicleMinTurnAccel", NULL, 0.0f ); + s_vtVehicleStoppedPercent.Init( g_pLTClient, "VehicleStoppedPercent", NULL, 0.0 ); + s_vtVehicleMaxSpeedPercent.Init( g_pLTClient, "VehicleMaxSpeedPercent", NULL, 0.0 ); + s_vtVehicleAccelGearChange.Init( g_pLTClient, "VehicleAccelGearChange", NULL, 1.0 ); + s_vtVehicleTurnRate.Init( g_pLTClient, "VehicleTurnRate", NULL, 0.0f ); + s_vtVehicleTurnRateScale.Init( g_pLTClient, "VehicleTurnRateScale", NULL, 0.0f ); + s_vtVehicleInitialTurnRate.Init( g_pLTClient, "VehicleInitialTurnRate", NULL, 0.0f ); + s_vtVehicleSurfaceSpeedUpPitch.Init( g_pLTClient, "VehicleSurfaceSpeedUpPitch", NULL, 0.0f ); + s_vtVehicleSurfaceSlowDownPitch.Init( g_pLTClient, "VehicleSurfaceSlowDownPitch", NULL, 0.0f); + s_vtVehicleStartMotionPitch.Init( g_pLTClient, "VehicleStartMotionPitch", NULL, 0.0f ); + s_vtVehicleStopMotionPitch.Init( g_pLTClient, "VehicleStopMotionPitch", NULL, 0.0f); + s_vtVehicleBrakePitch.Init( g_pLTClient, "VehicleBrakePitch", NULL, 0.0f ); + s_vtVehicleDecelPitch.Init( g_pLTClient, "VehicleDecelPitch", NULL, 0.0f ); + + // Bicycle... + + g_vtBicycleInterBumpTimeRange.Init(g_pLTClient, "BicycleInterBumpTimeRange", "0.75 1.25", 0.0f ); + g_vtBicycleIntraBumpTimeRange.Init(g_pLTClient, "BicycleIntraBumpTimeRange", "0.05 0.15", 0.0f ); + g_vtBicycleBumpHeightRange.Init(g_pLTClient, "BicycleBumpHeightRange", "0 0", 0.0f ); + g_vtBicycleBobRate.Init(g_pLTClient, "BicycleBobRate", NULL, 2.5f ); + g_vtBicycleBobSwayAmplitude.Init(g_pLTClient, "BicycleBobSwayAmplitude", NULL, 2.0f ); + g_vtBicycleBobRollAmplitude.Init(g_pLTClient, "BicycleBobRollAmplitude", NULL, -0.25f ); + g_vtBicycleModelOffset.Init(g_pLTClient, "BicycleModelOffset", "0.0 -20.0 5.0", 0.0f ); + + + g_vtVehicleImpactDamage.Init(g_pLTClient, "VehicleImpactDamage", LTNULL, 0.0f); + g_vtVehicleImpactDamageMin.Init(g_pLTClient, "VehicleImpactDamageMin", LTNULL, 5.0f); + g_vtVehicleImpactDamageMax.Init(g_pLTClient, "VehicleImpactDamageMax", LTNULL, 100.0f); + g_vtVehicleImpactDamageVelPercent.Init(g_pLTClient, "VehicleImpactDamageVelPerent", LTNULL, 0.9f); + g_vtVehicleImpactPushVelPercent.Init(g_pLTClient, "VehicleImpactPushVelPerent", LTNULL, 0.0f); + g_vtVehicleImpactMinAngle.Init(g_pLTClient, "VehicleImpactMinAngle", LTNULL, 20.0f); + g_vtVehicleImpactMaxAdjustAngle.Init(g_pLTClient, "VehicleImpactMinAdjustAngle", LTNULL, 10.0f); + g_vtVehicleImpactPushAmount.Init(g_pLTClient, "VehicleImpactPushAmount", LTNULL, 400.0f); + g_vtVehicleImpactPushRadius.Init(g_pLTClient, "VehicleImpactPushRadius", LTNULL, 100.0f); + g_vtVehicleImpactPushDuration.Init(g_pLTClient, "VehicleImpactPushDuration", LTNULL, 0.25f); + + g_vtVehicleImpactFXOffsetForward.Init(g_pLTClient, "VehicleImpactFXOffsetForward", LTNULL, 0.0f); + g_vtVehicleImpactFXOffsetUp.Init(g_pLTClient, "VehicleImpactFXOffsetUp", LTNULL, 0.0f); + + g_vtVehicleImpactThreshold.Init(g_pLTClient, "VehicleImpactThreshold", LTNULL, 0.8f); + + g_vtVehicleImpactAIDamageVelPercent.Init(g_pLTClient, "VehicleImpactAIDamageVelPerent", LTNULL, 0.1f); + g_vtVehicleImpactAIMinDamage.Init(g_pLTClient, "VehicleImpactAIMinDamage", LTNULL, 1.0f); + g_vtVehicleImpactAIMaxDamage.Init(g_pLTClient, "VehicleImpactAIMaxDamage", LTNULL, 100.0f); + g_vtVehicleImpactAIDoNormalCollision.Init(g_pLTClient, "VehicleImpactAIDoNormalCollision", LTNULL, 1.0f); + + g_vtVehicleFallDamageMinHeight.Init(g_pLTClient, "VehicleFallDamageMinHeight", LTNULL, 400.0f); + g_vtVehicleFallDamageMaxHeight.Init(g_pLTClient, "VehicleFallDamageMaxHeight", LTNULL, 800.0f); + + + g_vtVehicleMouseMinYawBuffer.Init(g_pLTClient, "VehicleMouseMinYawBuffer", NULL, 2.0f); + g_vtVehicleMouseMaxYawBuffer.Init(g_pLTClient, "VehicleMouseMaxYawBuffer", NULL, 35.0f); + + g_vtVehicleMaxHeadOffsetX.Init(g_pLTClient, "VehicleHeadMaxOffsetX", NULL, 0.0f); + g_vtVehicleMaxHeadOffsetY.Init(g_pLTClient, "VehicleHeadMaxOffsetY", NULL, 0.0f); + g_vtVehicleMaxHeadOffsetZ.Init(g_pLTClient, "VehicleHeadMaxOffsetZ", NULL, 0.0f); + g_vtVehicleMaxHeadYaw.Init(g_pLTClient, "VehicleHeadMaxYaw", NULL, -1.0f); + + g_vtVehicleSlideToStopTime.Init( g_pLTClient, "VehicleSlideToStopTime", NULL, 5.0f ); + + g_vtVehicleCollisionInfo.Init(g_pLTClient, "VehicleCollisionInfo", LTNULL, 0.0f); + + g_vtJumpVolumeWaveType.Init( g_pLTClient, "JumpVolumeWaveType", LTNULL, 3.0f ); + g_vtJumpVolumeMaxDirectionPercent.Init( g_pLTClient, "JumpVolumeMaxDirectionPercent", LTNULL, 0.97f ); + g_vtJumpVolumeMinDirectionPercent.Init( g_pLTClient, "JumpVolumeMinDirectionPercent", LTNULL, 0.35f ); + g_vtJumpVolumeInfo.Init( g_pLTClient, "JumpVolumeInfo", LTNULL, 0.0f ); + + g_vtVehicleContourPlayerViewModel.Init( g_pLTClient, "VehicleContourPlayerViewModel", LTNULL, 1.0f ); + g_vtVehicleContourPoints.Init( g_pLTClient, "VehicleContourPoints", LTNULL, 2.0f ); + g_vtVehicleContourExtraDimsX.Init( g_pLTClient, "VehicleContourExtraDimsX", LTNULL, 24.0f ); + g_vtVehicleContourExtraDimsZ.Init( g_pLTClient, "VehicleContourExtraDimsZ", LTNULL, 32.0f ); + g_vtVehicleCamContourExtraDimsX.Init( g_pLTClient, "VehicleCamCountourExtraDimsX", LTNULL, 48.0f ); + g_vtVehicleCamContourExtraDimsZ.Init( g_pLTClient, "VehicleCamCountourExtraDimsZ", LTNULL, 64.0f ); + g_vtVehicleContourMaxRotation.Init( g_pLTClient, "VehicleContourMaxRotation", LTNULL, 65.0f ); + g_vtVehicleCamContourMaxRotation.Init( g_pLTClient, "VehicleCamContourMaxRotation", LTNULL, 3.5f ); + g_vtVehicleContourRate.Init( g_pLTClient, "VehicleContourRate", LTNULL, 0.5f ); + g_vtVehicleContour.Init( g_pLTClient, "VehicleContour", LTNULL, 1.0f ); + + m_VehicleModelOffsetMgr.Init(); + + // Init world specific data members... + + InitWorldData(); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::InitWorldData +// +// PURPOSE: Initialize our data members that are specific to the +// current world. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::InitWorldData() +{ + m_dwControlFlags = 0; + m_dwLastControlFlags = 0; + m_bLastBrake = false; + + m_fVehicleBaseMoveAccel = 0.0f; + + m_bVehicleStopped = LTTRUE; + m_bVehicleAtMaxSpeed = LTFALSE; + m_bVehicleTurning = LTFALSE; + m_nVehicleTurnDirection = 0; + + m_ePPhysicsModel = PPM_NORMAL; + + m_nCurGear = VEHICLE_GEAR_0; + m_nLastGear = VEHICLE_GEAR_0; + + m_hVehicleAttachSocket = INVALID_MODEL_SOCKET; + + m_bSetLastAngles = false; + + m_vVehiclePYR.Init(); + m_vLastVehiclePYR.Init(); + m_vLastPlayerAngles.Init(); + m_vLastCameraAngles.Init(); + + m_eSurface = ST_UNKNOWN; + m_eLastSurface = ST_UNKNOWN; + + m_fYawDiff = 0.0f; + m_fYawDelta = 0.0f; + m_eMouseTurnDirection = TD_CENTER; + m_bKeyboardTurning = LTFALSE; + + m_vHeadOffset.Init(); + m_fHandlebarRoll = 0.0f; + m_fHeadYaw = 0.0f; + + m_nPlayerLureId = 0; + m_bResetLure = false; + m_bResetLureFromSave = false; + m_hCurJumpVolume = NULL; + + m_bHaveJumpVolumeVel = LTFALSE; + m_fJumpVolumeVel = 0.0f; + m_bTurned = false; + m_bHolsteredWeapon = false; + + m_pVehicle = LTNULL; + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::OnEnterWorld +// +// PURPOSE: Handle entering the world +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::OnEnterWorld() +{ + InitWorldData(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::OnExitWorld +// +// PURPOSE: Handle exiting the world +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::OnExitWorld() +{ + // Turn off vehicle... + + SetNormalPhysicsModel(); + + // Clean up any level specific shiznit... + + TermLevel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::TermLevel +// +// PURPOSE: Terminate any level specific stuff +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::TermLevel() +{ + if (m_hVehicleModel) + { + g_pLTClient->RemoveObject(m_hVehicleModel); + m_hVehicleModel = LTNULL; + } + + KillAllVehicleSounds(); + + if (m_hVehicleImpactSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleImpactSnd); + m_hVehicleImpactSnd = LTNULL; + } + + m_hVehicleAttachSocket = INVALID_MODEL_SOCKET; + + // Remove any player-view attachments... + + if (g_pPVAttachmentMgr) + g_pPVAttachmentMgr->RemovePVAttachments(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateControlFlags +// +// PURPOSE: Update the control flags +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateControlFlags() +{ + // Clear control flags... + + m_dwLastControlFlags = m_dwControlFlags; + m_dwControlFlags = 0; + + if (!g_pMoveMgr->GetObject() || + !g_pInterfaceMgr->AllowCameraMovement()) return; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + UpdateVehicleControlFlags(); + break; + + case PPM_LURE : + UpdateLureControlFlags(); + break; + + case PPM_NORMAL: + default : + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleControlFlags +// +// PURPOSE: Update the vehicle physics model control flags +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleControlFlags() +{ + // Determine what commands are currently on... + + if (g_pLTClient->IsCommandOn(COMMAND_ID_RUN) ^ (g_pMoveMgr->RunLock() != LTFALSE)) + { + m_dwControlFlags |= BC_CFLG_RUN; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_JUMP)) + { + m_dwControlFlags |= BC_CFLG_JUMP; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_FORWARD)) + { + m_dwControlFlags |= BC_CFLG_FORWARD; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_REVERSE)) + { + m_dwControlFlags |= BC_CFLG_REVERSE; + m_dwControlFlags &= ~BC_CFLG_FORWARD; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_LEFT)) + { + m_dwControlFlags |= BC_CFLG_LEFT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_RIGHT)) + { + m_dwControlFlags |= BC_CFLG_RIGHT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE_RIGHT)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_RIGHT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_STRAFE_LEFT)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_LEFT; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_FIRING)) + { + m_dwControlFlags |= BC_CFLG_FIRING; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_ALT_FIRING)) + { + m_dwControlFlags |= BC_CFLG_ALT_FIRING; + } + + // Check for strafe left and strafe right. + if ((m_dwControlFlags & BC_CFLG_RIGHT) && (m_dwControlFlags & BC_CFLG_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_RIGHT; + } + + if ((m_dwControlFlags & BC_CFLG_LEFT) && (m_dwControlFlags & BC_CFLG_STRAFE)) + { + m_dwControlFlags |= BC_CFLG_STRAFE_LEFT; + } + + if ( (m_dwControlFlags & BC_CFLG_FORWARD) || + (m_dwControlFlags & BC_CFLG_REVERSE) || + (m_dwControlFlags & BC_CFLG_STRAFE_LEFT) || + (m_dwControlFlags & BC_CFLG_STRAFE_RIGHT) || + (m_dwControlFlags & BC_CFLG_JUMP)) + { + m_dwControlFlags |= BC_CFLG_MOVING; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateLureControlFlags +// +// PURPOSE: Update the Lure control flags +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateLureControlFlags() +{ + // Determine what commands are currently on... + + if (g_pLTClient->IsCommandOn(COMMAND_ID_FIRING)) + { + m_dwControlFlags |= BC_CFLG_FIRING; + } + + if (g_pLTClient->IsCommandOn(COMMAND_ID_ALT_FIRING)) + { + m_dwControlFlags |= BC_CFLG_ALT_FIRING; + } + + // Get the playerlurefx object. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( !pPlayerLureFX ) + { + // It may not be on the client yet. Keep polling for it. + return; + } + + // See if we need to reset the lure info. + if( m_bResetLure ) + { + if( m_bResetLureFromSave ) + { + pPlayerLureFX->Reset( m_ResetLureTransform ); + } + else + { + // Reset the lure. + pPlayerLureFX->Reset( ); + } + + // Reset the lure shake timer. + m_LureTimeToNextBump.Stop( ); + + // Make sure the weapon is set correctly. Need to keep calling this since + // we poll for the playerlurefx object. + EnableWeapon( pPlayerLureFX->GetAllowWeapon( ), true); + + // Don't need to reset anymore. + m_bResetLure = false; + } + else + { + // Make sure the weapon is set correctly. Need to keep calling this since + // we poll for the playerlurefx object. Also, since the enable state + // isn't counted up and down, something else, like a cinematic camera + // could have enabled weapons behind our back. + EnableWeapon( pPlayerLureFX->GetAllowWeapon( ), false); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateMotion +// +// PURPOSE: Update our motion +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateMotion() +{ + g_pMoveMgr->UpdateOnGround(); + + m_eLastSurface = m_eSurface; + m_eSurface = g_pMoveMgr->GetStandingOnSurface(); + + // See if we moved over a new surface... + + if (m_eLastSurface != m_eSurface) + { + LTFLOAT fLastMult = GetSurfaceVelMult(m_eLastSurface); + LTFLOAT fNewMult = GetSurfaceVelMult(m_eSurface); + + if (fLastMult < fNewMult) + { + // Speeding up... + + CameraDelta delta; + delta.Pitch.fVar = DEG2RAD( s_vtVehicleSurfaceSpeedUpPitch.GetFloat( )); + delta.Pitch.fTime1 = 0.25f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta(delta); + } + else if (fNewMult < fLastMult) + { + // Slowing down... + + CameraDelta delta; + delta.Pitch.fVar = DEG2RAD( s_vtVehicleSurfaceSlowDownPitch.GetFloat( )); + delta.Pitch.fTime1 = 0.25f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta(delta); + } + } + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + UpdateVehicleMotion(); + break; + + case PPM_LURE : + UpdateLureMotion( ); + break; + + case PPM_NORMAL: + default : + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateLureMotion +// +// PURPOSE: Update our lure motion +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateLureMotion() +{ + HOBJECT hObj = g_pMoveMgr->GetObject(); + if( !hObj ) + { + ASSERT( !"CVehicleMgr::UpdateLureMotion: Invalid client object." ); + return; + } + + LTVector vZero( 0.0f, 0.0f, 0.0f ); + + // Don't allow any acceleration or velocity. + g_pPhysicsLT->SetAcceleration( g_pMoveMgr->GetObject(), &vZero ); + g_pPhysicsLT->SetVelocity( g_pMoveMgr->GetObject(), &vZero ); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateGear +// +// PURPOSE: Update the appropriate vehicle gear +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateGear() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + UpdateVehicleGear(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateSound +// +// PURPOSE: Update our sounds +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateSound() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + UpdateVehicleSounds(); + break; + + case PPM_LURE : + case PPM_NORMAL: + default : + break; + } + + // See if the impact snd is done playing... + + if (m_hVehicleImpactSnd) + { + if (g_pLTClient->IsDone(m_hVehicleImpactSnd)) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleImpactSnd); + m_hVehicleImpactSnd = LTNULL; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleMotion +// +// PURPOSE: Update our motion when on a vehicle +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleMotion() +{ + HOBJECT hObj = g_pMoveMgr->GetObject(); + + LTFLOAT fTime = g_pLTClient->GetTime(); + + LTBOOL bHeadInLiquid = g_pMoveMgr->IsHeadInLiquid(); + LTBOOL bInLiquid = (bHeadInLiquid || g_pMoveMgr->IsBodyInLiquid()); + LTBOOL bFreeMovement = (g_pMoveMgr->IsFreeMovement() || + g_pMoveMgr->IsBodyOnLadder() || g_pPlayerMgr->IsSpectatorMode()); + + + // Normally we have gravity on, but the containers might turn it off. + + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, g_pPlayerMgr->IsSpectatorMode() ? 0 : FLAG_GRAVITY, FLAG_GRAVITY); + + + // Test to see if we are still within a JumpVolume... + + UpdateInJumpVolume(); + + + // Can't ride vehicles underwater, in spectator mode, or when dead... + + if (bHeadInLiquid || g_pPlayerMgr->IsSpectatorMode() || g_pPlayerMgr->IsPlayerDead()) + { + CAutoMessage cMsg; + cMsg.Writeuint8( MID_PLAYER_CLIENTMSG ); + cMsg.Writeuint8( CP_PHYSICSMODEL ); + cMsg.Writeuint8( PPM_NORMAL ); + cMsg.Writeuint8( VBMGR_INVALID_ID ); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + // The server won't notify us, so change models... + + SetPhysicsModel(PPM_NORMAL); + return; + } + + // Zero out the acceleration to start with... + + LTVector zeroVec; + zeroVec.Init(); + g_pPhysicsLT->SetAcceleration(hObj, &zeroVec); + + + // Set our current rotation... + + LTRotation rRot; + g_pPlayerMgr->GetPlayerRotation(rRot); + g_pLTClient->SetObjectRotation(hObj, &rRot); + + // Update our motion based on containers we are in... + + UpdateContainerMotion(); + + LTVector myVel = g_pMoveMgr->GetVelocity(); + + LTVector vAccel(0, 0, 0); + g_pPhysicsLT->GetAcceleration( hObj, &vAccel ); + + LTVector moveVel = myVel; + moveVel.y = 0; + + g_pLTClient->GetObjectRotation(hObj, &rRot); + LTVector vForward = rRot.Forward(); + + // Check if we're moving in our forward direction. + bool bMovingForward = ( vForward.Dot( myVel ) > 0.0f ); + + bool bForward = !!( m_dwControlFlags & BC_CFLG_FORWARD ); + bool bReverse = !!( m_dwControlFlags & BC_CFLG_REVERSE ); + bool bLastForward = !!(m_dwLastControlFlags & BC_CFLG_FORWARD); + bool bLastReverse = !!(m_dwLastControlFlags & BC_CFLG_REVERSE); + + // This case happens when we jump if the user stops pressing forward + // and we're in mid air...don't slow down! + if(( !bForward || !bReverse ) && !g_pMoveMgr->CanDoFootstep()) + { + bForward = bMovingForward; + bReverse = !bMovingForward; + } + + // Check the brake. Only allow braking if on ground. + bool bBrake = false; + if( g_pMoveMgr->CanDoFootstep( ) && !m_bVehicleStopped ) + { + if( bMovingForward && bReverse ) + bBrake = true; + else if( !bMovingForward && bForward ) + bBrake = true; + } + + // Check if vehicle isn't allowed to go in reverse. + if( !m_pVehicle->bHasReverse ) + { + bReverse = false; + } + + // Pitch vehicle if making change of acceleration. + if( !m_bVehicleStopped ) + { + // Check if they applied the brake. + if( bBrake ) + { + // Only do the brake pitching the first frame. + if( !m_bLastBrake ) + { + // Add a little camera movement to show the brake is applied... + CameraDelta delta; + // Make use pitch toward the direction we are moving. + delta.Pitch.fVar = (( bMovingForward ) ? 1.0f : -1.0f ) * DEG2RAD( s_vtVehicleBrakePitch.GetFloat( )); + delta.Pitch.fTime1 = 0.4f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta( delta ); + } + } + // Pitch us a little if they just let off the accelerator. + else if( !bForward && !bReverse ) + { + // Only pitch the first frame. If we just did a brake, ignore this. + if( !m_bLastBrake && ( bLastReverse || bLastForward )) + { + // Add a little camera movement to show the vehicle is slowing down... + CameraDelta delta; + // Make use pitch toward the direction we are moving. + delta.Pitch.fVar = (( bMovingForward ) ? 1.0f : -1.0f ) * DEG2RAD( s_vtVehicleDecelPitch.GetFloat( )); + delta.Pitch.fTime1 = 0.25f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta( delta ); + } + } + } + + // Determine the acceleration to use... + + LTFLOAT fMaxAccel = GetMaxAccelMag(GetSurfaceVelMult(m_eSurface)); + LTFLOAT fMaxVel = GetMaxVelMag(GetSurfaceVelMult(m_eSurface)); + + // If we have a velocity from a JumpVolume use that as the max... + + if( m_bHaveJumpVolumeVel ) + { + // [KLS 9/1/02] Changed how this calculations works... + // See if it is time to use our normal velocity...(on the + // ground and not in a jump volume)... + + if (g_pMoveMgr->CanDoFootstep() && !m_hCurJumpVolume) + { + m_fJumpVolumeVel = 0.0f; + m_bHaveJumpVolumeVel = LTFALSE; + } + else // Use the jump volume vel... + { + fMaxVel = m_fJumpVolumeVel; + } + } + + // Update our acceleration time if we're accelerating. + if( !bBrake && ( bForward || bReverse )) + { + LTFLOAT fAccelTime = GetAccelTime(); + + if (m_fAccelStart < 0.0f) + { + m_fAccelStart = fTime - (m_fVehicleBaseMoveAccel * fAccelTime / fMaxAccel); + } + + m_fVehicleBaseMoveAccel = fMaxAccel * (fTime - m_fAccelStart) / fAccelTime; + } + else + { + m_fAccelStart = -1.0f; + } + + if (m_bVehicleTurning && !bBrake) + { + if (m_fVehicleBaseMoveAccel < GetMinTurnAccel()) + { + m_fVehicleBaseMoveAccel = GetMinTurnAccel(); + } + } + + m_fVehicleBaseMoveAccel = m_fVehicleBaseMoveAccel > fMaxAccel ? fMaxAccel : m_fVehicleBaseMoveAccel; + + + // Limit velocity... + if (g_pMoveMgr->IsOnGround() && !g_pPlayerMgr->IsSpectatorMode()) + { + float fCurLen = moveVel.Mag(); + if (fCurLen > fMaxVel) + { + myVel *= (fMaxVel/fCurLen); + + g_pPhysicsLT->SetVelocity(hObj, &myVel); + } + } + else if (moveVel.Mag() > fMaxVel) + { + // Don't cap velocity in the y direction... + + moveVel.Normalize(); + moveVel *= fMaxVel; + + myVel.x = moveVel.x; + myVel.z = moveVel.z; + + g_pPhysicsLT->SetVelocity(hObj, &myVel); + } + + + LTFLOAT fMoveAccel = m_fVehicleBaseMoveAccel; + + if (!bInLiquid && !bFreeMovement) // Can only accelerate in x and z directions + { + vForward.y = 0.0; + vForward.Normalize(); + } + + + // If we aren't dead we can drive around + + if (!g_pPlayerMgr->IsPlayerDead()) + { + // Don't let us go backwards, slow us down... + if (( !bForward && !bReverse ) || bBrake) + { + // Make our momentum continue in the same direction. + vAccel += (( bMovingForward ) ? 1.0f : -1.0f ) * (vForward * fMoveAccel); + LTVector vAccelDir = vAccel; + LTFLOAT fAccelMag = vAccel.Mag(); + + if( fAccelMag ) + { + vAccelDir.Normalize(); + } + + + // Determine the acceleration to use... + + LTFLOAT fMaxDecel = GetMaxDecel(); + LTFLOAT fDecelTime = GetDecelTime(); + + if (bBrake) + { + fMaxDecel = GetMaxBrake(); + fDecelTime = GetBrakeTime(); + } + + if (m_fDecelStart < 0.0f) + { + m_fDecelStart = fTime; + } + + LTFLOAT fAccelAdjust = fMaxDecel * (fTime - m_fDecelStart) / fDecelTime; + fAccelAdjust = fAccelAdjust > fAccelMag ? fAccelMag : fAccelAdjust; + + vAccel -= vAccelDir * fAccelAdjust; + + if (vAccel.Mag() < 10.0f) + { + vAccel.Init(); + } + + m_fVehicleBaseMoveAccel = vAccel.Mag(); + } + else + { + // Accelerate. + vAccel += ( bReverse ? -1.0f : 1.0f ) * ( vForward * fMoveAccel ); + + m_fDecelStart = -1.0f; + } + } + + // Cap the acceleration... + + if (vAccel.Mag() > fMoveAccel) + { + vAccel.Normalize(); + vAccel *= fMoveAccel; + } + + g_pPhysicsLT->SetAcceleration(hObj, &vAccel); + + // Add any container currents to my velocity... + + LTVector vel = g_pMoveMgr->GetVelocity(); + vel += g_pMoveMgr->GetTotalCurrent(); + + g_pPhysicsLT->SetVelocity(hObj, &vel); + + + // If we're dead, we can't move... + + if (g_pPlayerMgr->IsPlayerDead() || !g_pPlayerMgr->IsPlayerMovementAllowed()) + { + g_pPhysicsLT->SetAcceleration(hObj, &zeroVec); + g_pPhysicsLT->SetVelocity(hObj, &zeroVec); + } + + // Update our frame brake information. + m_bLastBrake = bBrake; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetAccelTime +// +// PURPOSE: Get the current vehicle's accerlation time +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetAccelTime() const +{ + LTFLOAT fTime = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fTime = s_vtVehicleAccelTime.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return fTime; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetMinTurnAccel +// +// PURPOSE: Get the current vehicle's minimum turn acceleration +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetMinTurnAccel() const +{ + LTFLOAT fValue = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fValue = s_vtVehicleMinTurnAccel.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return fValue; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetMaxDecel +// +// PURPOSE: Get the current vehicle's maximum deceleration +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetMaxDecel() const +{ + LTFLOAT fValue = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fValue = s_vtVehicleMaxDecel.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + LTFLOAT fMoveMulti = g_pMoveMgr->GetMoveMultiplier(); + fValue *= fMoveMulti; + + return fValue; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetDecelTime +// +// PURPOSE: Get the current vehicle's deceleration time +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetDecelTime() const +{ + LTFLOAT fValue = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fValue = s_vtVehicleDecelTime.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return fValue; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetMaxBrake +// +// PURPOSE: Get the current vehicle's max break value +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetMaxBrake() const +{ + LTFLOAT fValue = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fValue = s_vtVehicleMaxBrake.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + LTFLOAT fMoveMulti = g_pMoveMgr->GetMoveMultiplier(); + fValue *= fMoveMulti; + + return fValue; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetBrakeTime +// +// PURPOSE: Get the current vehicle's break time +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetBrakeTime() const +{ + LTFLOAT fValue = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + fValue = s_vtVehicleBrakeTime.GetFloat(); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return fValue; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateFriction +// +// PURPOSE: Update fricton +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateFriction() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + UpdateVehicleFriction( g_vtVehicleSlideToStopTime.GetFloat( )); + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleFriction +// +// PURPOSE: Update vehicle fricton +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleFriction(LTFLOAT fSlideToStopTime) +{ + // Dampen our velocity so we don't slide around too much... + + uint32 dwTestFlags = BC_CFLG_MOVING | BC_CFLG_JUMP; + + LTVector vZero(0, 0, 0); + + if ( !(m_dwControlFlags & dwTestFlags) && g_pMoveMgr->IsOnGround() && + g_pMoveMgr->GetTotalCurrent() == vZero) + { + LTVector vCurVel = g_pMoveMgr->GetVelocity(); + + LTFLOAT fYVal = vCurVel.y; + vCurVel.y = 0.0f; + + LTVector vVel; + + if (vCurVel.Mag() > 5.0f) + { + LTVector vDir = vCurVel; + vDir.Normalize(); + + if (fSlideToStopTime < 0.0f) fSlideToStopTime = 0.1f; + + LTFLOAT fAdjust = g_pGameClientShell->GetFrameTime() * (GetMaxVelMag()/fSlideToStopTime); + + vVel = (vDir * fAdjust); + + if (vVel.MagSqr() < vCurVel.MagSqr()) + { + vVel = vCurVel - vVel; + } + else + { + vVel.Init(); + } + + vVel.y = fYVal; + } + else + { + vVel.Init(); + } + + g_pMoveMgr->SetVelocity(vVel); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::IsVehiclePhysics +// +// PURPOSE: Are we doing vehicle physics +// +// ----------------------------------------------------------------------- // + +LTBOOL CVehicleMgr::IsVehiclePhysics() +{ + return IsVehicleModel(m_ePPhysicsModel); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CanDismount +// +// PURPOSE: Are we allowed do get off the vehicle +// +// ----------------------------------------------------------------------- // + +LTBOOL CVehicleMgr::CanDismount() +{ + if( !IsVehiclePhysics() ) + return LTFALSE; + + return (m_ePPhysicsModel != PPM_LURE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::EnableWeapon +// +// PURPOSE: Enable/disables the weapon. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::EnableWeapon( bool bEnable, bool bToggleHolster /*= true*/ ) +{ + // Get our weapon. + CClientWeaponMgr *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase* pClientWeapon = pClientWeaponMgr->GetCurrentClientWeapon(); + if( !pClientWeapon || g_pPlayerMgr->IsCarryingHeavyObject() ) + return; + + // Enable the weapon... + if( bEnable ) + { + // We must enable the weapon before holstering it... + + if (!pClientWeaponMgr->WeaponsEnabled()) + { + pClientWeaponMgr->EnableWeapons(); + } + + + // Check if we have a holstered weapon. + if( m_bHolsteredWeapon && bToggleHolster ) + { + g_pPlayerMgr->ToggleHolster( false ); + m_bHolsteredWeapon = false; + } + } + // Disable the weapon. + else + { + if( !m_bHolsteredWeapon && bToggleHolster ) + { + // Can't holster melee weapon. (why i don't know BEP). + if (!pClientWeapon->IsMeleeWeapon()) + { + g_pPlayerMgr->ToggleHolster( false ); + m_bHolsteredWeapon = true; + } + } + + if (pClientWeaponMgr->WeaponsEnabled()) + { + pClientWeaponMgr->DisableWeapons(); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::PreSetPhysicsModel +// +// PURPOSE: Do any clean up from old model +// +// ----------------------------------------------------------------------- // + +LTBOOL CVehicleMgr::PreSetPhysicsModel( PlayerPhysicsModel eModel ) +{ + // Clear turning values... + + m_vHeadOffset.Init(); + m_fHandlebarRoll = 0.0f; + m_fHeadYaw = 0.0f; + m_fYawDiff = 0.0f; + m_fYawDelta = 0.0f; + m_fContourRoll = 0.0f; + m_bHasWeapon = false; + + HOBJECT hObj = g_pMoveMgr->GetObject(); + + LTBOOL bRet = LTTRUE; + + bool bTouchNotify; + + if (IsVehicleModel(eModel)) + { + switch (eModel) + { + case PPM_VEHICLE : + EnableWeapon( false ); + break; + + case PPM_LURE : + case PPM_NORMAL : + default : + break; + } + + // Needed for collision physics... + + bTouchNotify = true; + g_pPhysicsLT->SetForceIgnoreLimit(hObj, 0.0f); + } + else + { + bTouchNotify = false; + g_pPhysicsLT->SetForceIgnoreLimit(hObj, 1000.0f); + + // Turn off the vehicle... + + KillAllVehicleSounds(); + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + // We're getting off a vehicle so play it's shutdown sound... + + if( m_pVehicle ) + { + g_pClientSoundMgr->PlaySoundLocal( m_pVehicle->sTurnOffSnd.c_str(), SOUNDPRIORITY_PLAYER_HIGH, PLAYSOUND_CLIENT ); + } + + PlayVehicleAni("Deselect"); + + // Can't move until deselect is done... + g_pMoveMgr->AllowMovement(LTFALSE); + + // Can't shoot the vehicle weapon anymore... + + if( m_bHasWeapon ) + { + m_VehicleWeapon.SetDisable( true ); + m_VehicleWeapon.Deactivate(); + } + + // Wait to change modes... + bRet = LTFALSE; + } + break; + + case PPM_LURE : + { + // Enable the weapon. + EnableWeapon( true ); + } + break; + + default : + case PPM_NORMAL : + break; + } + + } + + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, bTouchNotify ? FLAG_TOUCH_NOTIFY : 0, FLAG_TOUCH_NOTIFY); + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::SetPhysicsModel +// +// PURPOSE: Set the physics model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SetPhysicsModel( PlayerPhysicsModel eModel, uint8 nModelId /*= (uint8)-1*/, LTBOOL bDoPreSet /*= LTTRUE*/ ) +{ + if (m_ePPhysicsModel == eModel) return; + + // Do clean up... + + if (bDoPreSet && !PreSetPhysicsModel(eModel)) return; + + m_ePPhysicsModel = eModel; + + // Cache our vehicle record for quick access... + + m_pVehicle = g_pVehicleButeMgr->GetVehicle( nModelId ); + + switch (eModel) + { + case PPM_VEHICLE : + { + if( !m_pVehicle ) + { + g_pLTClient->CPrint( "ERROR - Could not find vehicle record." ); + SetPhysicsModel( PPM_NORMAL ); + break; + } + + SetVehiclePhysicsModel(); + + if( s_vtVehicleInfoTrack.GetFloat()) + { + g_pLTClient->CPrint( "%s Physics Mode: ON", m_pVehicle->sName.c_str() ); + } + } + break; + + case PPM_LURE : + { + SetPlayerLurePhysicsModel( ); + } + break; + + default : + case PPM_NORMAL : + { + SetNormalPhysicsModel(); + + if( s_vtVehicleInfoTrack.GetFloat() ) + { + g_pLTClient->CPrint("Normal Physics Mode: ON"); + } + } + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::PlayVehicleAni +// +// PURPOSE: Change the vehicle's animation... +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::PlayVehicleAni(char* pAniName, LTBOOL bReset, LTBOOL bLoop) +{ + if (!m_hVehicleModel || !pAniName) return; + + LTBOOL bIsDone = LTFALSE; + if (!bReset && IsCurVehicleAni(pAniName, bIsDone)) + { + return; + } + + uint32 dwAnim = g_pLTClient->GetAnimIndex(m_hVehicleModel, pAniName); + + g_pLTClient->SetModelLooping(m_hVehicleModel, bLoop != LTFALSE); + g_pLTClient->SetModelAnimation(m_hVehicleModel, dwAnim); + + if (s_vtVehicleInfoTrack.GetFloat() == VEHICLE_TRACK_ANIMATION) + { + g_pLTClient->CPrint("Playing Ani( %s )", pAniName); + } + + if (bReset) + { + g_pLTClient->ResetModelAnimation(m_hVehicleModel); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::IsCurVehicleAni +// +// PURPOSE: See if this is the current vehicle animation +// +// ----------------------------------------------------------------------- // + +LTBOOL CVehicleMgr::IsCurVehicleAni(char* pAniName, LTBOOL & bIsDone) +{ + if (!m_hVehicleModel || !pAniName) return LTFALSE; + + // See if the current ani is done... + + uint32 dwState = g_pLTClient->GetModelPlaybackState(m_hVehicleModel); + bIsDone = (dwState & MS_PLAYDONE); + + uint32 dwTestAni = g_pLTClient->GetAnimIndex(m_hVehicleModel, pAniName); + uint32 dwAni = g_pLTClient->GetModelAnimation(m_hVehicleModel); + + return (dwTestAni == dwAni); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::SetVehiclePhysicsModel +// +// PURPOSE: Set the vehicle physics model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SetVehiclePhysicsModel( ) +{ + if( !m_pVehicle ) + return; + + if (!m_hVehicleStartSnd ) + { + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hVehicleStartSnd = g_pClientSoundMgr->PlaySoundLocal( m_pVehicle->sStartUpSnd.c_str(), SOUNDPRIORITY_PLAYER_HIGH, dwFlags ); + } + + CreateVehicleModel(); + + // Initialize the vehicle weapon if it has one... + + if( !m_pVehicle->sVehicleWeapon.empty() ) + { + const WEAPON *pVehicleWeapon = g_pWeaponMgr->GetWeapon( m_pVehicle->sVehicleWeapon.c_str() ); + if( pVehicleWeapon ) + { + // Initialize the vehicle weapon... + + m_VehicleWeapon.ResetWeapon( ); + m_VehicleWeapon.Init( *pVehicleWeapon ); + + // Activate the vehicle weapon model... + + m_VehicleWeapon.SetVehicleWeaponModel( m_hVehicleModel ); + + if( m_VehicleWeapon.Activate( )) + { + m_bHasWeapon = true; + + // Don't allow the player to shoot the vehicle weapon untill the select animation has finished... + + m_VehicleWeapon.SetDisable( true ); + } + } + } + + // Read all the values we want to set as console vars for ingame tweaking... + + s_vtVehicleVel.SetFloat( m_pVehicle->fVel ); + s_vtVehicleAccel.SetFloat( m_pVehicle->fAccel ); + s_vtVehicleAccelTime.SetFloat( m_pVehicle->fAccelTime ); + s_vtVehicleMaxDecel.SetFloat( m_pVehicle->fMaxDecel ); + s_vtVehicleDecelTime.SetFloat( m_pVehicle->fDecelTime ); + s_vtVehicleMaxBrake.SetFloat( m_pVehicle->fMaxBrake ); + s_vtVehicleBrakeTime.SetFloat( m_pVehicle->fBrakeTime ); + s_vtVehicleStoppedPercent.SetFloat( m_pVehicle->fStoppedPercent ); + s_vtVehicleMaxSpeedPercent.SetFloat( m_pVehicle->fMaxSpeedPercent ); + s_vtVehicleMinTurnAccel.SetFloat( m_pVehicle->fMinTurnAccel ); + s_vtVehicleTurnRate.SetFloat( m_pVehicle->fTurnRate ); + s_vtVehicleInitialTurnRate.SetFloat( m_pVehicle->fInitialTurnRate ); + s_vtVehicleSurfaceSpeedUpPitch.SetFloat( m_pVehicle->fSurfaceSpeedUpPitch ); + s_vtVehicleSurfaceSlowDownPitch.SetFloat( m_pVehicle->fSurfaceSlowDownPitch ); + s_vtVehicleStartMotionPitch.SetFloat( m_pVehicle->fStartMotionPitch ); + s_vtVehicleStopMotionPitch.SetFloat( m_pVehicle->fStopMotionPitch ); + s_vtVehicleBrakePitch.SetFloat( m_pVehicle->fBrakePitch ); + s_vtVehicleDecelPitch.SetFloat( m_pVehicle->fDecelPitch ); + + m_vVehicleOffset = m_pVehicle->vOffset; + + // Reset acceleration so we don't start off moving... + + m_fVehicleBaseMoveAccel = 0.0f; + + ShowVehicleModel(LTTRUE); + + PlayVehicleAni("Select"); + + // Can't move until select ani is done... + + g_pMoveMgr->AllowMovement(LTFALSE); + + m_bSetLastAngles = false; + m_vLastPlayerAngles.Init(); + m_vLastCameraAngles.Init(); + m_vLastVehiclePYR.Init(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::SetPlayerLurePhysicsModel +// +// PURPOSE: Set the playerlure physics model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SetPlayerLurePhysicsModel() +{ + // Get the playerlurefx for info. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( !pPlayerLureFX ) + { + return; + } + + // Do special setup for bicycle. + if( pPlayerLureFX->GetBicycle( )) + { + CreateVehicleModel(); + ShowVehicleModel(LTTRUE); + + if (!m_hVehicleAccelSnd) + { + KillAllVehicleSounds(); + + const char* pSound = GetAccelSnd(); + + if (pSound) + { + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT | PLAYSOUND_LOOP; + m_hVehicleAccelSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + } + + // Clear turning values... + + m_vHeadOffset.Init(); + m_fHandlebarRoll = 0.0f; + m_fHeadYaw = 0.0f; + m_fYawDiff = 0.0f; + m_fYawDelta = 0.0f; + + // No need for a vehicle weapon... + + m_VehicleWeapon.Deactivate(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::SetNormalPhysicsModel +// +// PURPOSE: Set the normal physics model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SetNormalPhysicsModel() +{ + if (m_hVehicleModel) + { + g_pLTClient->RemoveObject(m_hVehicleModel); + m_hVehicleModel = LTNULL; + } + + KillAllVehicleSounds(); + + // Clear turning values... + + m_vHeadOffset.Init(); + m_fHandlebarRoll = 0.0f; + m_fHeadYaw = 0.0f; + m_fYawDiff = 0.0f; + m_fYawDelta = 0.0f; + + // Remove player-view attachments + + g_pPVAttachmentMgr->RemovePVAttachments(); + + // No need for a vehicle weapon... + + m_VehicleWeapon.Deactivate(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CreateVehicleModel +// +// PURPOSE: Create the player-view vehicle model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::CreateVehicleModel() +{ + ObjectCreateStruct ocs; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_VISIBLE | FLAG_REALLYCLOSE; + ocs.m_Flags2 = FLAG2_FORCETRANSLUCENT | FLAG2_DYNAMICDIRLIGHT; + + if( !m_pVehicle ) + break; + + LTStrCpy( ocs.m_Filename, m_pVehicle->sPVModel.c_str(), ARRAY_LEN( ocs.m_Filename )); + + m_pVehicle->blrPVSkins.CopyList( 0, ocs.m_SkinNames[0], ARRAY_LEN( ocs.m_SkinNames[1] )); + m_pVehicle->blrPVRenderStyles.CopyList( 0, ocs.m_RenderStyleNames[0], ARRAY_LEN( ocs.m_RenderStyleNames[0] )); + + + if( (m_pVehicle->blrPVSkins.GetNumItems( )) && + (!_stricmp( m_pVehicle->blrPVSkins.GetItem( 0 ), "Hands" ) )) + { + // This looks for the special case where "Hands" is specified as the first + // player view skin. If it is, then we take the skin from the model bute + // instead of the weapon bute. + + CCharacterFX* pCharFX = g_pMoveMgr->GetCharacterFX(); + ModelId nModelID = ( pCharFX ) ? pCharFX->GetModelId() : static_cast< ModelId >( 0 ); + + LTStrCpy( ocs.m_SkinNames[ 0 ], g_pModelButeMgr->GetHandsSkinFilename( nModelID ), ARRAY_LEN( ocs.m_SkinNames[0] )); + } + + } + break; + + case PPM_LURE: + { + // NEED TO MOVE THESE INTO A BUTE FILE!!! + + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags = FLAG_VISIBLE; + ocs.m_Flags2 = FLAG2_DYNAMICDIRLIGHT; + + SAFE_STRCPY(ocs.m_Filename, "chars\\Models\\armtricycle.ltb"); + SAFE_STRCPY(ocs.m_SkinNames[0], "chars\\skins\\armstrong.dtx"); + SAFE_STRCPY(ocs.m_SkinNames[1], "chars\\skins\\armstronghead.dtx"); + SAFE_STRCPY(ocs.m_RenderStyleNames[0], "RS\\default.ltb"); + } + break; + + default : + return; + break; + } + + // Remove any old vehicle model. + if( m_hVehicleModel ) + { + g_pLTClient->RemoveObject( m_hVehicleModel ); + m_hVehicleModel = NULL; + } + + m_hVehicleModel = g_pLTClient->CreateObject(&ocs); + if (!m_hVehicleModel) return; + + // Set up node control... + // Do this AFTER we set the filename of the model since the node control is now per node. + // First remove any we may have previously set otherwise the matrix will be applied multiple times. + + g_pModelLT->RemoveNodeControlFn( m_hVehicleModel, ModelNodeControlFn, this ); + g_pModelLT->AddNodeControlFn(m_hVehicleModel, ModelNodeControlFn, this); + + + // Map all the nodes in our skeleton in the bute file to the nodes in the actual .ltb model file + + m_VehicleNode1.hNode = LTNULL; + m_VehicleNode2.hNode = LTNULL; + m_VehicleNode3.hNode = LTNULL; + + // Do post creation stuff. + switch( m_ePPhysicsModel ) + { + case PPM_VEHICLE : + { + g_pLTClient->SetModelLooping(m_hVehicleModel, LTFALSE); + + + int iNode = 0; + HMODELNODE hCurNode = INVALID_MODEL_NODE; + while (g_pLTClient->GetModelLT()->GetNextNode(m_hVehicleModel, hCurNode, hCurNode) == LT_OK) + { + char szName[64]; + *szName = 0; + g_pLTClient->GetModelLT()->GetNodeName(m_hVehicleModel, hCurNode, szName, sizeof(szName)); + + if (stricmp(szName, "Handlebars1") == 0) + { + m_VehicleNode1.hNode = hCurNode; + } + else if( stricmp( szName, "Speedometer1" ) == 0 ) + { + m_VehicleNode2.hNode = hCurNode; + } + } + + // Create any player-view attachments + + g_pPVAttachmentMgr->CreatePVAttachments( m_hVehicleModel ); + } + break; + + case PPM_LURE: + { + g_pLTClient->SetModelLooping( m_hVehicleModel, LTFALSE ); + } + break; + + default : + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateModels +// +// PURPOSE: Update the player-view models +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateModels() +{ + if (m_ePPhysicsModel != PPM_NORMAL) + { + UpdateVehicleModel(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleModel +// +// PURPOSE: Update the player-view vehicle model +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleModel() +{ + if (!m_hVehicleModel || (m_ePPhysicsModel != PPM_VEHICLE) ) + return; + + //See if we are paused, if so we need to pause the animation... + + bool bPaused = g_pGameClientShell->IsServerPaused(); + g_pLTClient->Common()->SetObjectFlags(m_hVehicleModel, OFT_Flags, bPaused ? FLAG_PAUSED : 0, FLAG_PAUSED); + + if (bPaused) return; + + // Update our camera offset mgr... + + m_VehicleModelOffsetMgr.Update(); + + uint32 dwVehicleFlags; + g_pCommonLT->GetObjectFlags(m_hVehicleModel, OFT_Flags, dwVehicleFlags); + + // See if we're just waiting for he deselect animation to finish... + + LTBOOL bIsDone = LTFALSE; + if (IsCurVehicleAni("Deselect", bIsDone)) + { + if (bIsDone) + { + // Okay to move now... + g_pMoveMgr->AllowMovement(LTTRUE); + + ShowVehicleModel(LTFALSE); + SetPhysicsModel(PPM_NORMAL, VBMGR_INVALID_ID, LTFALSE); + + // Enable the weapon... + EnableWeapon( true ); + + // Tell the server we want off...NOTE: In multiplayer we may want + // to call this in PreSetPhysicsModel() + g_pPlayerMgr->DoActivate(); + return; + } + } + + // If we're in specatator mode, or 3rd-person don't show the player-view + // vehicle model... + + if (g_pPlayerMgr->IsSpectatorMode() || !g_pPlayerMgr->IsFirstPerson()) + { + ShowVehicleModel(LTFALSE); + return; + } + + ShowVehicleModel(LTTRUE); + + LTRotation rRot; + + LTVector vPitchYawRollDelta = m_VehicleModelOffsetMgr.GetPitchYawRollDelta(); + + m_vVehiclePYR.x += vPitchYawRollDelta.x; + m_vVehiclePYR.y += vPitchYawRollDelta.y + m_fHeadYaw; + m_vVehiclePYR.z += vPitchYawRollDelta.z; + + rRot = LTRotation(m_vVehiclePYR.x, m_vVehiclePYR.y, m_vVehiclePYR.z); + + LTVector vNewPos = m_VehicleModelOffsetMgr.GetPosDelta(); + + vNewPos += rRot.Right() * (m_vVehicleOffset.x + m_vHeadOffset.x); + vNewPos += rRot.Up() * (m_vVehicleOffset.y + m_vHeadOffset.y); + vNewPos += rRot.Forward() * (m_vVehicleOffset.z + m_vHeadOffset.z); + + g_pLTClient->SetObjectPosAndRotation(m_hVehicleModel, &vNewPos, &rRot); + + // Reset the vehicle angles... + + m_vVehiclePYR.Init(); + + // Give player-view attachments an update... + + g_pPVAttachmentMgr->UpdatePVAttachments(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::ShowVehicleModel +// +// PURPOSE: Show/Hide the vehicle model (and attachments) +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::ShowVehicleModel(LTBOOL bShow) +{ + if (!m_hVehicleModel) return; + + if (bShow) + { + g_pCommonLT->SetObjectFlags(m_hVehicleModel, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + else + { + g_pCommonLT->SetObjectFlags(m_hVehicleModel, OFT_Flags, 0, FLAG_VISIBLE); + } + + g_pPVAttachmentMgr->ShowPVAttachments( !!(bShow) ); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetMaxVelMag +// +// PURPOSE: Get the max velocity for our current mode +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetMaxVelMag(LTFLOAT fMult) const +{ + LTFLOAT fMaxVel = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + fMaxVel = s_vtVehicleVel.GetFloat(); + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default: + break; + } + + fMaxVel *= fMult; + + LTFLOAT fMoveMulti = g_pMoveMgr->GetMoveMultiplier(); + +// Allow vehicles to be affected by runspeed. +// fMoveMulti = (fMoveMulti > 1.0f ? 1.0f : fMoveMulti); + + fMaxVel *= (g_pMoveMgr->IsBodyInLiquid() ? fMoveMulti/2.0f : fMoveMulti); + + return fMaxVel; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetMaxAccelMag +// +// PURPOSE: Get the max acceleration for our current mode +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetMaxAccelMag(LTFLOAT fMult) const +{ + LTFLOAT fMaxVel = 0.0f; + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + fMaxVel = s_vtVehicleAccel.GetFloat(); + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default: + break; + } + + fMaxVel *= fMult; + + fMaxVel *= g_pMoveMgr->GetMoveAccelMultiplier(); + + return fMaxVel; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetSurfaceVelMult +// +// PURPOSE: Get the velocity multiplier for the current surface +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetSurfaceVelMult(SurfaceType eSurf) const +{ + LTFLOAT fVelMultiplier = 1.0f; + + SURFACE* pSurface = g_pSurfaceMgr->GetSurface(eSurf); + + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( pSurface && m_pVehicle ) + { + SURFACE::VehicleType *pSurfaceVehicleType = pSurface->GetVehicleType( m_pVehicle->nSurfaceVehicleType ); + if( pSurfaceVehicleType ) + { + fVelMultiplier = pSurfaceVehicleType->fVelMult; + } + } + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default: + break; + } + + return fVelMultiplier; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleSounds +// +// PURPOSE: Update sounds while on the vehicle +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleSounds() +{ + // Update what gear the vehicle is in... + + UpdateGear(); + + // See if the start snd is done playing... + + if (m_hVehicleStartSnd) + { + if (g_pLTClient->IsDone(m_hVehicleStartSnd)) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleStartSnd); + m_hVehicleStartSnd = LTNULL; + } + } + + + + // See if we are going forward or backward... + bool bForward = !!( m_dwControlFlags & BC_CFLG_FORWARD ); + bool bReverse = !!( m_dwControlFlags & BC_CFLG_REVERSE ); + + // Check the brake. Only allow braking if on ground. + bool bBrake = false; + if( g_pMoveMgr->CanDoFootstep( ) && !m_bVehicleStopped ) + { + // Check if we're moving in our forward direction. + LTVector myVel = g_pMoveMgr->GetVelocity(); + LTRotation rRot; + g_pLTClient->GetObjectRotation(g_pMoveMgr->GetObject(), &rRot); + LTVector vForward = rRot.Forward(); + bool bMovingForward = ( vForward.Dot( myVel ) > 0.0f ); + + if( bMovingForward && bReverse ) + bBrake = true; + else if( !bMovingForward && bForward ) + bBrake = true; + } + + // Check if vehicle isn't allowed to go in reverse. + if( !m_pVehicle->bHasReverse ) + { + bReverse = false; + } + + LTBOOL bIsDone = LTFALSE; + LTBOOL bPlayAni = LTTRUE; + + if (IsCurVehicleAni("Select", bIsDone)) + { + if (bIsDone) + { + // Okay, we can move now... + g_pMoveMgr->AllowMovement(LTTRUE); + + if( m_bHasWeapon ) + { + // We can now shoot... + + m_VehicleWeapon.SetDisable( false ); + } + } + else // Can't do anything until this is done... + { + return; + } + } + else if (IsCurVehicleAni("Deselect", bIsDone)) + { + return; + } + + bIsDone = LTFALSE; + + // Play the appropriate sound, based on acceleration... + + if(( !bForward && !bReverse ) || bBrake ) + { + if (m_hVehicleAccelSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleAccelSnd); + m_hVehicleAccelSnd = LTNULL; + } + + // Play braking ani if necessary... + + bool bVehicleBreaking = (bBrake && !m_bVehicleStopped); + + if( m_bHasWeapon ) + { + m_VehicleWeapon.SetVehicleBrakeOn( bVehicleBreaking ); + } + + if( bVehicleBreaking ) + { + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni("BrakeOn", LTFALSE); + } + + if (!m_hBrakeSnd) + { + const char* pSound = GetBrakeSnd(); + + if (pSound) + { + uint32 dwFlags = PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hBrakeSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + + } + else + { + if (m_hBrakeSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hBrakeSnd); + m_hBrakeSnd = LTNULL; + } + } + + if (m_bVehicleStopped) + { + if (m_hVehicleDecelSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleDecelSnd); + m_hVehicleDecelSnd = LTNULL; + } + } + else if (!m_hVehicleDecelSnd) + { + const char* pSound = GetDecelSnd(); + + if (pSound) + { + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hVehicleDecelSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + } + else // Accelerating + { + // Make sure we're playing the accelerate sound... + + if (!m_hVehicleAccelSnd) + { + KillAllVehicleSounds(); + + const char* pSound = GetAccelSnd(); + + if (pSound) + { + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT | PLAYSOUND_LOOP; + m_hVehicleAccelSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + + if( m_bVehicleAtMaxSpeed ) + { + if( bPlayAni ) + { + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni( "FullSpeed", LTFALSE, LTTRUE ); + } + } + } + else + { + // Play accelleration ani if necessary... + + if (bPlayAni) + { + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni("Accelerate", LTFALSE); + } + } + } + } + + + // See if we are idle... + + if (!bForward && !bReverse) + { + if (m_bVehicleStopped ) + { + // If the vehicle has a weapon and it's curently firing, let the weapon handle the animation... + + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni("Idle_0", LTFALSE, LTTRUE); + } + + if (!m_hIdleSnd) + { + KillAllVehicleSounds(LTNULL); + + const char* pSound = GetIdleSnd(); + + if (pSound) + { + uint32 dwFlags = PLAYSOUND_LOOP | PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hIdleSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + } + else if( !bBrake ) + { + if (bPlayAni) + { + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni("Decelerate", LTFALSE); + } + } + } + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetIdleSnd +// +// PURPOSE: Get the appropriate idle sound... +// +// ----------------------------------------------------------------------- // + +const char* CVehicleMgr::GetIdleSnd() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( m_pVehicle ) + { + return m_pVehicle->sIdleSnd.c_str(); + } + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetAccelSnd +// +// PURPOSE: Get the appropriate acceleration sound... +// +// ----------------------------------------------------------------------- // + +const char* CVehicleMgr::GetAccelSnd() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( m_pVehicle ) + { + return m_pVehicle->sAccelSnd.c_str(); + } + } + break; + + case PPM_LURE : + return "Snd\\Vehicle\\bicycle\\accel.wav"; + break; + + case PPM_NORMAL: + default : + break; + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetDecelSnd +// +// PURPOSE: Get the appropriate deceleration sound... +// +// ----------------------------------------------------------------------- // + +const char* CVehicleMgr::GetDecelSnd() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( m_pVehicle ) + { + return m_pVehicle->sDecelSnd.c_str(); + } + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetBrakeSnd +// +// PURPOSE: Get the appropriate brake sound... +// +// ----------------------------------------------------------------------- // + +const char* CVehicleMgr::GetBrakeSnd() +{ + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( m_pVehicle ) + { + return m_pVehicle->sBrakeSnd.c_str(); + } + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + + return LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetImpactSnd +// +// PURPOSE: Get the appropriate impact sound... +// +// ----------------------------------------------------------------------- // + +const char* CVehicleMgr::GetImpactSnd(LTFLOAT fCurVelocityPercent, SURFACE* pSurface) +{ + if (!pSurface) return LTNULL; + + if (pSurface->eType == ST_FLESH) + { + if (GetRandom(0, 1) == 1) + { + return "Snd\\Vehicle\\vehiclehit1.wav"; + } + else + { + return "Snd\\Vehicle\\vehiclehit2.wav"; + } + } + else + { + switch (m_ePPhysicsModel) + { + case PPM_VEHICLE : + { + if( !m_pVehicle ) + break; + + if (fCurVelocityPercent > 0.1f && fCurVelocityPercent < 0.4f) + { + return m_pVehicle->sSlowImpactSnd.c_str(); + } + else if (fCurVelocityPercent < 0.7f) + { + return m_pVehicle->sMedImpactSnd.c_str(); + } + else + { + return m_pVehicle->sFastImpactSnd.c_str(); + } + } + break; + + case PPM_LURE : + break; + + case PPM_NORMAL: + default : + break; + } + } + + return LTNULL; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::KillAllVehicleSounds +// +// PURPOSE: Kill all the vehicle sounds +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::KillAllVehicleSounds(HLTSOUND hException) +{ + if (m_hVehicleStartSnd && hException != m_hVehicleStartSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleStartSnd); + m_hVehicleStartSnd = LTNULL; + } + + if (m_hVehicleAccelSnd && hException != m_hVehicleAccelSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleAccelSnd); + m_hVehicleAccelSnd = LTNULL; + } + + if (m_hVehicleDecelSnd && hException != m_hVehicleDecelSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hVehicleDecelSnd); + m_hVehicleDecelSnd = LTNULL; + } + + if (m_hIdleSnd && hException != m_hIdleSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hIdleSnd); + m_hIdleSnd = LTNULL; + } + + if (m_hBrakeSnd && hException != m_hBrakeSnd) + { + g_pLTClient->SoundMgr()->KillSound(m_hBrakeSnd); + m_hBrakeSnd = LTNULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::OnTouchNotify +// +// PURPOSE: Handle our object touching something... +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::OnTouchNotify(CollisionInfo *pInfo, float forceMag) +{ + if (!pInfo->m_hObject) return; + + // Cancel out the engine's velocity adjustment on touch. We'll handle that, thank you. + LTVector vOldVel = g_pMoveMgr->GetVelocity(); + g_pMoveMgr->SetVelocity(vOldVel - pInfo->m_vStopVel); + + // Filter out the player object + if (pInfo->m_hObject == g_pLTClient->GetClientObject()) return; + + // Test for a JumpVolume... + + uint16 nCode; + if( g_pLTClient->GetContainerCode( pInfo->m_hObject, &nCode) ) + { + if( nCode == CC_JUMP_VOLUME ) + { + if( HandleJumpVolumeTouch( pInfo->m_hObject )) + { + return; + } + } + } + + // All other objects must be solid for us to collide with them... + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(pInfo->m_hObject, OFT_Flags, dwFlags); + if (!(dwFlags & FLAG_SOLID)) + { + return; + } + + LTPlane cPolyPlane; + if (pInfo->m_hPoly != INVALID_HPOLY) + g_pLTClient->Common()->GetPolyPlane(pInfo->m_hPoly, &cPolyPlane); + else + { + cPolyPlane.m_Normal.Init(); + } + + LTVector vNormal = pInfo->m_Plane.m_Normal; + + // If flat enough, we can drive on it... + + if ((vNormal.y > 0.76f) || (cPolyPlane.m_Normal.y > 0.76f)) return; + + // Check initial stuff so we handle object collisions properly + + SurfaceType eType = ::GetSurfaceType(*pInfo); + SURFACE* pSurface = g_pSurfaceMgr->GetSurface(eType); + + LTBOOL bIsWorld = IsMainWorld(pInfo->m_hObject); + + if (g_vtVehicleCollisionInfo.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("***********************************"); + g_pLTClient->CPrint("MoveMgr Object Touch:"); + g_pLTClient->CPrint(" Stop Vel: %.2f, %.2f, %.2f", VEC_EXPAND(pInfo->m_vStopVel)); + g_pLTClient->CPrint(" (%s)", bIsWorld ? "WORLD" : "OBJECT"); + g_pLTClient->CPrint(" Normal: %.2f, %.2f, %.2f", VEC_EXPAND(vNormal)); + g_pLTClient->CPrint(" Object Type: %d", GetObjectType(pInfo->m_hObject)); + g_pLTClient->CPrint(" Surface Type: %s", pSurface ? pSurface->szName : "No surface"); + } + + vNormal.y = 0.0f; // Don't care about this anymore... + + + // Determine the current percentage of our max velocity we are + // currently moving... + + LTVector vVel = g_pMoveMgr->GetVelocity(); + vVel.y = 0.0f; + + LTFLOAT fVelPercent = GetVehicleMovementPercent(); + + if (g_vtVehicleCollisionInfo.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("Calculated Velocity Percent: %.2f", fVelPercent); + } + + + // Hit objects + + if (!bIsWorld && pInfo->m_hObject) + { + uint32 dwUserFlags = 0; + g_pCommonLT->GetObjectFlags(pInfo->m_hObject, OFT_User, dwUserFlags); + + if (dwUserFlags & USRFLG_CHARACTER) + { + if (fVelPercent > g_vtVehicleImpactAIDamageVelPercent.GetFloat()) + { + // Make sure we're pointing at the correct surface type... + + pSurface = g_pSurfaceMgr->GetSurface(ST_FLESH); + + if ( HandleCharacterTouch( pInfo->m_hObject ) ) + { + return; + } + } + } + } + + m_bWasTouched = true; + m_cLastTouchInfo = *pInfo; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::HandleCollision +// +// PURPOSE: Handle colliding with something +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::HandleCollision() +{ + LTVector vNormal = m_cLastTouchInfo.m_Plane.m_Normal; + + SurfaceType eType = ::GetSurfaceType(m_cLastTouchInfo); + SURFACE* pSurface = g_pSurfaceMgr->GetSurface(eType); + + LTBOOL bIsWorld = IsMainWorld(m_cLastTouchInfo.m_hObject); + + vNormal.y = 0.0f; // Don't care about this anymore... + + // Determine the current percentage of our max velocity we are + // currently moving... + + LTVector vVel = g_pMoveMgr->GetVelocity(); + vVel.y = 0.0f; + + LTFLOAT fVelPercent = GetVehicleMovementPercent(); + + // Get our forward vector... + + HOBJECT hObj = g_pMoveMgr->GetObject(); + + LTVector vU, vR, vF; + LTRotation rRot; + g_pLTClient->GetObjectRotation(hObj, &rRot); + vU = rRot.Up(); + vR = rRot.Right(); + vF = rRot.Forward(); + + vF.y = 0.0f; // Don't care about this... + + // Determine the direction to change our forward to... + // Determine the angle between our forward and the new direction... + + vNormal.Normalize(); + vF.Normalize(); + + // fAngle will be a value between -1 (left) and 1 (right)... + + LTFLOAT fAngle = VEC_DOT(vNormal, vR); + + if (fAngle > 0.0f) + { + fAngle = (MATH_PI/2.0f) * (1.0f - fAngle); + } + else + { + fAngle = (-MATH_PI/2.0f) * (1.0f + fAngle); + } + + if (g_vtVehicleCollisionInfo.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("Impact Angle: %.2f", RAD2DEG(fAngle)); + } + + LTFLOAT fImpactAngle = (LTFLOAT) fabs(fAngle); + + float fBiggestAngle = DEG2RAD(g_vtVehicleImpactMaxAdjustAngle.GetFloat()); + + if (fImpactAngle > fBiggestAngle) + { + fAngle = fAngle > 0.0f ? fBiggestAngle : -fBiggestAngle; + } + + // Add this angle to the yaw... + + LTFLOAT fYaw = g_pPlayerMgr->GetYaw(); + LTFLOAT fPlayerYaw = g_pPlayerMgr->GetPlayerYaw(); + + // Adjust the min impact angle based on our current velocity (the + // faster you go the more hitting stuff matters ;) + + float fMinImpactAngle = DEG2RAD(g_vtVehicleImpactMinAngle.GetFloat()); + fMinImpactAngle = fMinImpactAngle + + ((1.0f - ( fVelPercent * m_pVehicle->fImpactAngleSensitivity )) * (DEG2RAD(90.0f) - fMinImpactAngle)); + + // See if we hit hard enough to play a sound and do damage... + + if (fImpactAngle > fMinImpactAngle) + { + LTFLOAT fPushPercent = g_vtVehicleImpactPushVelPercent.GetFloat(); + if (fVelPercent < fPushPercent) return; + + // Create an impact fx... + + LTVector vObjPos, vPos; + g_pLTClient->GetObjectPos(hObj, &vObjPos); + + vPos = vObjPos; + + LTRotation rRot; + g_pLTClient->GetObjectRotation( hObj, &rRot ); + + // Play the FX closer to the supposed point of impact... + + vPos += (rRot.Forward() * 32.0f); + + // Play an fx based on the surface we hit... + + if( pSurface && m_pVehicle ) + { + SURFACE::VehicleType *pSurfaceVehicleType = pSurface->GetVehicleType( m_pVehicle->nSurfaceVehicleType ); + if( pSurfaceVehicleType && !pSurfaceVehicleType->sImpactFX.empty() ) + { + CLIENTFX_CREATESTRUCT fxCS( pSurfaceVehicleType->sImpactFX.c_str(), 0, vPos ); + fxCS.m_vTargetNorm = m_cLastTouchInfo.m_Plane.m_Normal; + + g_pClientFXMgr->CreateClientFX( NULL, fxCS, LTTRUE ); + } + } + + // Push us away from the impact...(keep y value the same so we + // don't get pushed up into the air) + + LTVector vDir = vVel; + vDir.Normalize(); + + float dot = VEC_DOT(vDir, m_cLastTouchInfo.m_Plane.m_Normal); + dot *= -2.0f; + + VEC_ADDSCALED(vDir, vDir, m_cLastTouchInfo.m_Plane.m_Normal, dot); + + float fOldY = vPos.y; + + // Old algorithm + // vPos += (vDir * -1.0f); + // New algorithm, push vehicle along mirrored vector from point of impact, + // the 32 accounts for the 32 added above so the pusher values don't need + // to be adjusted...Basically we're just using the object's position instead + // of the fx position + vPos = (vObjPos += (vDir * -32.0f)); + + vPos.y = fOldY; + + float fPushRadius = g_vtVehicleImpactPushRadius.GetFloat(); + float fPushAmount = g_vtVehicleImpactPushAmount.GetFloat() * fVelPercent; + float fStartDelay = 0.0f; + float fDuration = g_vtVehicleImpactPushDuration.GetFloat(); + g_pMoveMgr->AddPusher(vPos, fPushRadius, fStartDelay, fDuration, fPushAmount); + + + if (g_vtVehicleCollisionInfo.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("Pusher Pos: %.2f, %.2f, %.2f Amount: %.2f", VEC_EXPAND(vPos), fPushAmount); + } + + // Move handle bars down a bit...(head over)... + + CameraDelta delta; + delta.Pitch.fVar = DEG2RAD(3.0f); + delta.Pitch.fTime1 = 0.1f; + delta.Pitch.fTime2 = 0.3f; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta(delta); + + // Tilt steering wheel based on the surface we hit... + + LTFLOAT fOffset = DEG2RAD(g_vtVehicleMouseMinYawBuffer.GetFloat()); + LTFLOAT fMaxOffset = DEG2RAD(g_vtVehicleMouseMaxYawBuffer.GetFloat()); + LTFLOAT fYawPercent = (fImpactAngle / DEG2RAD(90.0f)); + m_fYawDiff = fYawPercent * fMaxOffset; + m_fYawDiff *= (fAngle > 0.0f ? 1.0f : -1.0f); + + if (m_fYawDiff < -fOffset) + { + m_eMouseTurnDirection = TD_LEFT; + } + else if (m_fYawDiff > fOffset) + { + m_eMouseTurnDirection = TD_RIGHT; + } + + // Clear velocity... + + LTVector vNewVel(0, 0, 0); + + LTFLOAT fAdjust = (1.0f - fYawPercent); + vNewVel = vVel * fAdjust; + g_pMoveMgr->SetVelocity(vNewVel); + m_fVehicleBaseMoveAccel *= fAdjust; + m_fAccelStart = -1.0f; + + // Reset the ani/sounds... + + if( !m_bHasWeapon || m_VehicleWeapon.GetState() != W_FIRING ) + { + PlayVehicleAni("Idle_0", LTFALSE, LTTRUE); + } + + KillAllVehicleSounds(LTNULL); + + + // Play an impact sound based on the surface we hit.. + + if (pSurface && !m_hVehicleImpactSnd) + { + const char* pSound = GetImpactSnd(fVelPercent, pSurface); + if (pSound) + { + uint32 dwFlags = PLAYSOUND_GETHANDLE | PLAYSOUND_CLIENT; + m_hVehicleImpactSnd = g_pClientSoundMgr->PlaySoundLocal(pSound, SOUNDPRIORITY_PLAYER_HIGH, dwFlags); + } + } + + // See if we hit hard enough to actually damage us... + + LTFLOAT fImpactVelPercent = g_vtVehicleImpactDamageVelPercent.GetFloat(); + if (fVelPercent > fImpactVelPercent) + { + // Okay, since we were going pretty damn fast, just determine + // the damage based on the angle we hit... + + float fRange = (MATH_PI/2.0f) - fMinImpactAngle; + if (fRange <= 0.0f) fRange = 0.01f; + + LTFLOAT fDamagePercent = 1.0f - (((MATH_PI/2.0f) - fImpactAngle) / fRange); + + // Send damage message to server... + + float fVehicleImpactDamageMin = g_vtVehicleImpactDamageMin.GetFloat(); + float fVehicleImpactDamageMax = g_vtVehicleImpactDamageMax.GetFloat(); + + float fDamageRange = fVehicleImpactDamageMax - fVehicleImpactDamageMin; + float fDamage = fVehicleImpactDamageMin + fDamageRange * fDamagePercent; + + if (g_vtVehicleImpactDamage.GetFloat()) + { + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_DAMAGE); + cMsg.Writeuint8(DT_STUN); + cMsg.Writefloat(0.0f); + cMsg.WriteLTVector(vNormal); + cMsg.Writeuint8(1); + cMsg.Writefloat(1.0f); + cMsg.WriteObject(g_pLTClient->GetClientObject()); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + } + + if (g_vtVehicleCollisionInfo.GetFloat() > 0.0f) + { + g_pLTClient->CPrint("Impact Damage: %.2f", fDamage); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetVehicleLightPosRot +// +// PURPOSE: Get the vehicle light pos/rot +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::GetVehicleLightPosRot(LTVector & vPos, LTRotation & rRot) +{ + vPos.Init(); + rRot.Init(); + + if (!m_hVehicleModel) return; + + // Get the vehicle light position/rotation + + HMODELSOCKET hSocket; + + if (g_pModelLT->GetSocket(m_hVehicleModel, "Light", hSocket) == LT_OK) + { + LTransform transform; + if (g_pModelLT->GetSocketTransform(m_hVehicleModel, hSocket, transform, LTFALSE) == LT_OK) + { + vPos = transform.m_Pos; + rRot = transform.m_Rot; + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + LTVector vCamPos; + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + g_pLTClient->GetObjectRotation(hCamera, &rRot); + + // Rotate down a bit... + rRot.Rotate(rRot.Right(), DEG2RAD(10.0f)); + + vPos += vCamPos; + } + } + else + { + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + g_pLTClient->GetObjectRotation(hCamera, &rRot); + g_pLTClient->GetObjectPos(hCamera, &vPos); + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::HandleNodeControl +// +// PURPOSE: Handle node control +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::HandleNodeControl(HOBJECT hObj, HMODELNODE hNode, LTMatrix *pGlobalMat) +{ + if (m_VehicleNode1.hNode && hNode == m_VehicleNode1.hNode) + { + *pGlobalMat = *pGlobalMat * m_VehicleNode1.matTransform; + } + else if (m_VehicleNode2.hNode && hNode == m_VehicleNode2.hNode) + { + *pGlobalMat = *pGlobalMat * m_VehicleNode2.matTransform; + } + else if (m_VehicleNode3.hNode && hNode == m_VehicleNode3.hNode) + { + *pGlobalMat = *pGlobalMat * m_VehicleNode3.matTransform; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CalculateBankingVehicleRotation() +// +// PURPOSE: Calculate the new player/camera rotation values for +// banking vehicles. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::CalculateBankingVehicleRotation(LTVector & vPlayerPYR, + LTVector & vPYR, LTFLOAT fYawDelta) +{ + if (s_vtVehicleInfoTrack.GetFloat() >= VEHICLE_TRACK_VERBOSE) + { + g_pLTClient->CPrint("VEHICLE VERBOSE INFO:"); + g_pLTClient->CPrint("Initial vPlayerPYR.y = %.2f", vPlayerPYR.y); + g_pLTClient->CPrint("Initial vPYR.y = %.2f", vPYR.y); + g_pLTClient->CPrint("Initial fYawDelta = %.2f", fYawDelta); + g_pLTClient->CPrint("Initial m_fYawDiff = %.2f", m_fYawDiff); + } + + // Don't allow pitch in camera angle. + vPYR.x = 0.0f; + + vPlayerPYR.x = 0.0f; + vPlayerPYR.z = vPYR.z; + + LTFLOAT fOffset = DEG2RAD(g_vtVehicleMouseMinYawBuffer.GetFloat()); + LTFLOAT fMaxOffset = DEG2RAD(g_vtVehicleMouseMaxYawBuffer.GetFloat()); + + LTFLOAT fAdjustedYawDelta = s_vtVehicleInitialTurnRate.GetFloat() * g_pGameClientShell->GetFrameTime();; + + + // If we're playing the select or deselect anis, don't allow us to turn... + + LTBOOL bIsDone = LTFALSE; + if (IsCurVehicleAni("Deselect", bIsDone) || IsCurVehicleAni("Select", bIsDone)) + { + fYawDelta = 0.0f; + m_bKeyboardTurning = LTFALSE; + m_dwControlFlags &= ~BC_CFLG_STRAFE_LEFT; + m_dwControlFlags &= ~BC_CFLG_LEFT; + m_dwControlFlags &= ~BC_CFLG_STRAFE_RIGHT; + m_dwControlFlags &= ~BC_CFLG_RIGHT; + } + + if (fYawDelta) + { + m_bKeyboardTurning = LTFALSE; + } + + // See if we are turning (using the keyboard)... + + if ((m_dwControlFlags & BC_CFLG_STRAFE_LEFT) || (m_dwControlFlags & BC_CFLG_LEFT)) + { + m_bKeyboardTurning = LTTRUE; + fYawDelta = -fAdjustedYawDelta; + } + else if ((m_dwControlFlags & BC_CFLG_STRAFE_RIGHT) || (m_dwControlFlags & BC_CFLG_RIGHT)) + { + m_bKeyboardTurning = LTTRUE; + fYawDelta = fAdjustedYawDelta; + } + else + { + // If we were turning with the keyboard automatically adjust back to + // center... + + if (m_bKeyboardTurning) + { + switch (m_eMouseTurnDirection) + { + case TD_LEFT : + { + fYawDelta = fAdjustedYawDelta; + } + break; + + case TD_RIGHT : + { + fYawDelta = -fAdjustedYawDelta; + } + break; + + default : + case TD_CENTER : + { + if (m_fYawDiff > 0.0f) + { + fYawDelta = -fAdjustedYawDelta; + } + else if (m_fYawDiff < -fOffset) + { + fYawDelta = fAdjustedYawDelta; + } + } + break; + } + } + } + + + // Use our last calculated yaw delta for the amount to turn + // (if it is greater than our min turn rate)... + + if (fYawDelta) + { + // [KLS 6/29/02] - If we're not turning with the keyboard, use the passed in + // yaw delta if it is less than the calcuated fAdjustedYawDelta... + + if (!m_bKeyboardTurning) + { + float fPosYawDelta = (float)fabs(fYawDelta); + fAdjustedYawDelta = ((fPosYawDelta < fAdjustedYawDelta) ? fPosYawDelta : fAdjustedYawDelta); + } + else if (m_fYawDelta > fAdjustedYawDelta) + { + fAdjustedYawDelta = m_fYawDelta; + } + + fAdjustedYawDelta = (fYawDelta > 0.0f ? fAdjustedYawDelta : -fAdjustedYawDelta); + + if (s_vtVehicleInfoTrack.GetFloat() >= VEHICLE_TRACK_VERBOSE) + { + g_pLTClient->CPrint("fAdjustedYawDelta = %.2f", fAdjustedYawDelta); + } + + m_fYawDiff += fAdjustedYawDelta; + } + + // Depending on the direction we are turning, cap our yaw difference (from center) + // and determine if the direciton we're turning changed... + + switch (m_eMouseTurnDirection) + { + case TD_LEFT : + { + if (m_fYawDiff < -fMaxOffset) + { + m_fYawDiff = -fMaxOffset; + } + else if (m_fYawDiff > -fOffset) + { + m_eMouseTurnDirection = TD_CENTER; + } + } + break; + + case TD_RIGHT : + { + if (m_fYawDiff > fMaxOffset) + { + m_fYawDiff = fMaxOffset; + } + else if (m_fYawDiff < fOffset) + { + m_eMouseTurnDirection = TD_CENTER; + } + } + break; + + default : + case TD_CENTER : + { + if (m_fYawDiff > fOffset) + { + m_eMouseTurnDirection = TD_RIGHT; + } + else if (m_fYawDiff < -fOffset) + { + m_eMouseTurnDirection = TD_LEFT; + } + } + break; + } + + // For now assume we aren't turning... + + m_nVehicleTurnDirection = 0; + m_bVehicleTurning = LTFALSE; + + + if (fYawDelta != 0.0f || m_eMouseTurnDirection != TD_CENTER) + { + m_bVehicleTurning = LTTRUE; + + if (m_eMouseTurnDirection != TD_CENTER) + { + m_nVehicleTurnDirection = (m_eMouseTurnDirection == TD_LEFT ? -1 : 1); + } + else if (fYawDelta != 0.0f) + { + m_nVehicleTurnDirection = (fYawDelta < 0.0f ? -1 : 1); + } + } + + // Calculate the player's yaw... + + if (m_bVehicleTurning) + { + LTFLOAT fTurnRate = s_vtVehicleTurnRate.GetFloat(); + + m_fYawDelta = fTurnRate * g_pGameClientShell->GetFrameTime(); + + // Scale how fast we turn based on how close to center the + // "steering wheel" is... + float fSteeringOffset = ( fMaxOffset == 0.0f ) ? 1.0f : fMaxOffset; + LTFLOAT fScale = (LTFLOAT)fabs(m_fYawDiff) / fSteeringOffset; + fScale = WaveFn_SlowOn(fScale); + + m_fYawDelta *= fScale; + + // Scale the rate based on use input... + + m_fYawDelta *= s_vtVehicleTurnRateScale.GetFloat(); + + if (s_vtVehicleInfoTrack.GetFloat() >= VEHICLE_TRACK_VERBOSE) + { + g_pLTClient->CPrint("Final m_fYawDelta = %.2f", m_fYawDelta); + } + + // Change direction of turn based on forward/backward motion. + float fDirMult = 1.0f; + if( m_bVehicleStopped ) + { + bool bReverse = !!( m_dwControlFlags & BC_CFLG_REVERSE ); + if( bReverse && m_pVehicle->bHasReverse ) + fDirMult = -1.0f; + } + else + { + LTVector myVel = g_pMoveMgr->GetVelocity(); + LTRotation rRot; + g_pLTClient->GetObjectRotation(g_pMoveMgr->GetObject(), &rRot); + LTVector vForward = rRot.Forward(); + bool bMovingForward = ( vForward.Dot( myVel ) > 0.0f ); + if( !bMovingForward ) + fDirMult = -1.0f; + } + + // Set the player's new yaw... + if (!m_bVehicleStopped) + { + vPlayerPYR.y += (m_fYawDelta * m_nVehicleTurnDirection * fDirMult); + } + } + + // Keep the camera and player pitch/yaw/roll in sync... + + vPYR.y = vPlayerPYR.y; + + if (s_vtVehicleInfoTrack.GetFloat() >= VEHICLE_TRACK_VERBOSE) + { + g_pLTClient->CPrint("Final vPlayerPYR.y = %.2f", vPlayerPYR.y); + g_pLTClient->CPrint("Final vPYR.y = %.2f", vPYR.y); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CalculateLureVehicleRotation() +// +// PURPOSE: Calculate the new player/camera rotation for lure. +// +// ----------------------------------------------------------------------- // + +// Limits the angle to a -PI to PI range. +static inline float LimitToPosNegPi( float fAngle ) +{ + // Copy the angle and make sure it's under 2 pi. + float fNewAngle = ( float )fmod( fAngle, MATH_CIRCLE ); + + if( fNewAngle > MATH_PI ) + fNewAngle = fNewAngle - MATH_CIRCLE; + else if( fNewAngle < -MATH_PI ) + fNewAngle = fNewAngle + MATH_CIRCLE; + + return fNewAngle; +} + + +void CVehicleMgr::CalculateLureVehicleRotation(LTVector& vPlayerPYR, + LTVector& vPYR, float fYawDelta, float fPitchDelta ) +{ + // Get the playerlurefx. It has all of the data about the lure. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( !pPlayerLureFX ) + { + ASSERT( !"CVehicleMgr::CalculateLureVehicleRotation: Missing PlayerLureFX." ); + return; + } + + // Get the client player object. + HOBJECT hObj = g_pMoveMgr->GetObject( ); + if( !hObj ) + { + ASSERT( !"CVehicleMgr::CalculateLureVehicleRotation: Missing client-side player object." ); + return; + } + + // Get the rotation of the client object, which has been set by MoveToLure. + // We need the rotation to calculate the euler angles for the restricted camera. + LTRotation rPlayerLureRot; + g_pLTClient->GetObjectRotation( hObj, &rPlayerLureRot ); + + // Set the player's euler angles. + EulerAngles eulerPlayerLure = Eul_FromQuat( rPlayerLureRot, EulOrdYXZr ); + vPlayerPYR.y = eulerPlayerLure.x; + vPlayerPYR.x = eulerPlayerLure.y; + vPlayerPYR.z = eulerPlayerLure.z; + + // Calculate the starting PRY before the delta's were applied. They are applied + // to vPYR before entering this function. + LTVector vStartingPYR( vPYR.x - fPitchDelta, vPYR.y - fYawDelta, vPYR.z ); + + // Copy the camera's PYR so we can restrict it before doing final calculations. + LTVector vRestrictedCameraPYR = vPYR; + + // Scale the yaw by how close we are to the poles. This helps avoid the gimbal lock. + vRestrictedCameraPYR.y = vStartingPYR.y + ( fYawDelta * ( MATH_HALFPI - ( float )fabs( vRestrictedCameraPYR.x )) / MATH_HALFPI ); + + // Check if the camera has restricted freedom. + if( pPlayerLureFX->GetCameraFreedom( ) != kPlayerLureCameraFreedomUnlimited ) + { + // Get the max pitch and yaw allowed for this lure. + float fPitchMax = 0.0f; + float fPitchMin = 0.0f; + float fYawMax = 0.0f; + float fYawMin = 0.0f; + switch( pPlayerLureFX->GetCameraFreedom( )) + { + case kPlayerLureCameraFreedomLimited: + // Convert the left/right/up/down angles to min/max's in radians. + pPlayerLureFX->GetLimitedRanges( fYawMin, fYawMax, fPitchMax, fPitchMin ); + + // Convert over to radians. Have to negate the values for pitch since it + // works opposite intuitive values. + fYawMin = ( fYawMin * MATH_PI ) / 180.0f; + fYawMax = ( fYawMax * MATH_PI ) / 180.0f; + fPitchMax = ( -fPitchMax * MATH_PI ) / 180.0f; + fPitchMin = ( -fPitchMin * MATH_PI ) / 180.0f; + break; + case kPlayerLureCameraFreedomNone: + default: + break; + } + + // Clamp the pitch and yaw. Don't allow roll, since the player can't control roll. + // Make sure the differences are between -PI and PI so they are usable. Otherwise + // we could think we have a large difference with say -PI and PI, which looks + // like a difference of 2PI, when it's actually zero. + LTVector vDiff = vRestrictedCameraPYR - vPlayerPYR; + vDiff.x = LimitToPosNegPi( vDiff.x ); + vDiff.x = Clamp( vDiff.x, fPitchMin, fPitchMax ); + vDiff.y = LimitToPosNegPi( vDiff.y ); + vDiff.y = Clamp( vDiff.y, fYawMin, fYawMax ); + + // Find the new change in pitch and yaw. + vRestrictedCameraPYR = vPlayerPYR + vDiff; + } + + // Create a rotation based on current camera orientation. Use the roll from the playerlure. + LTRotation rStartingCamera( vStartingPYR.x, vStartingPYR.y, vPlayerPYR.z ); + + // Restrict pitch so that we don't get gimbal lock at the poles. + static const float fRestrictedPitch = MATH_HALFPI * 0.85f; + vRestrictedCameraPYR.x = Clamp( vRestrictedCameraPYR.x, -fRestrictedPitch, fRestrictedPitch ); + + // Find the new pitch/yaw deltas using restricted camera PYR. + float fNewPitchDelta = vRestrictedCameraPYR.x - vStartingPYR.x; + float fNewYawDelta = vRestrictedCameraPYR.y - vStartingPYR.y; + + // Create a rotation based on user input. + LTRotation rCameraOffset( fNewPitchDelta, fNewYawDelta, 0.0f ); + + // Apply offsets to current camera space rather than global space. + LTRotation rFinalCamera = rStartingCamera * rCameraOffset; + + // Find the resulting euler angles. + EulerAngles eulerFinalCamera = Eul_FromQuat( rFinalCamera, EulOrdYXZr ); + vPYR.y = eulerFinalCamera.x; + vPYR.x = eulerFinalCamera.y; + vPYR.z = eulerFinalCamera.z; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CalculateVehicleRotation() +// +// PURPOSE: Calculate the new player/camera rotation. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::CalculateVehicleRotation(LTVector & vPlayerPYR, + LTVector & vPYR, float fYawDelta, float fPitchDelta ) +{ + // Do movement based on physics model. + switch( m_ePPhysicsModel ) + { + case PPM_VEHICLE : + CalculateBankingVehicleRotation( vPlayerPYR, vPYR, fYawDelta ); + CalculateVehicleContourRotation( vPlayerPYR, vPYR ); + break; + + case PPM_LURE: + CalculateLureVehicleRotation( vPlayerPYR, vPYR, fYawDelta, fPitchDelta ); + break; + + case PPM_NORMAL: + return; + break; + + default: + ASSERT( !"CVehicleMgr::MoveLocalSolidObject: Invalid physics model." ); + break; + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CalculateVehicleCameraDisplacment() +// +// PURPOSE: Allows vehicles to perterb the camera placement. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::CalculateVehicleCameraDisplacment( LTVector& vDisplacement ) +{ + // Do movement based on physics model. + switch( m_ePPhysicsModel ) + { + case PPM_LURE: + { + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( !pPlayerLureFX ) + { + ASSERT( !"CVehicleMgr::MoveToLure: Missing PlayerLureFX." ); + return; + } + + // Only do displacement stuff for bicycle. + if( !pPlayerLureFX->GetBicycle( )) + return; + + // Don't update the bob/sway if in spectator or 3rd person. + if( g_pPlayerMgr->IsSpectatorMode() || !g_pPlayerMgr->IsFirstPerson( )) + return; + + // Check if we're going over a bump. + if( !m_LureTimeOverBump.Stopped( )) + { + float fPeriod = MATH_PI / m_LureTimeOverBump.GetDuration( ); + float fDisplacement = m_fLureBumpHeight * ( float )sin( m_LureTimeOverBump.GetElapseTime( ) * fPeriod ); + + vDisplacement.y += fDisplacement; + } + // Check if it's time to go over another bump. + else if( m_LureTimeToNextBump.Stopped( )) + { + float fMin, fMax; + + sscanf( g_vtBicycleInterBumpTimeRange.GetStr( ), "%f %f", &fMin, &fMax ); + m_LureTimeToNextBump.Start( GetRandom( fMin, fMax )); + + sscanf( g_vtBicycleIntraBumpTimeRange.GetStr( ), "%f %f", &fMin, &fMax ); + m_LureTimeOverBump.Start( GetRandom( fMin, fMax )); + + sscanf( g_vtBicycleBumpHeightRange.GetStr( ), "%f %f", &fMin, &fMax ); + m_fLureBumpHeight = GetRandom( fMin, fMax ); + } + + // Adjust our parameterized bob. + m_fLureBobParameter += g_pGameClientShell->GetFrameTime( ) * g_vtBicycleBobRate.GetFloat( ); + + // Keep in range of 0 to 1.0. + m_fLureBobParameter = ( float )fmod( m_fLureBobParameter, 1.0f ); + + // Get the camera so we can add some roll. + HOBJECT hCamera = g_pPlayerMgr->GetCamera( ); + LTRotation rCameraRot; + g_pLTClient->GetObjectRotation( hCamera, &rCameraRot ); + + // Make our sway left/right always camera relative. + LTVector vBobSway = rCameraRot.Right( ); + vBobSway.y = 0.0f; + vBobSway.Normalize( ); + + // Get the amount to sway and add it to the displacement. + float fBobSway = ( float )sin( m_fLureBobParameter * MATH_CIRCLE ); + fBobSway *= g_vtBicycleBobSwayAmplitude.GetFloat( ); + vBobSway *= fBobSway; + vDisplacement += vBobSway; + + // Get the amount of roll and apply it to the camera's rotation. + float fBobRoll = ( float )sin( m_fLureBobParameter * MATH_CIRCLE ); + fBobRoll *= g_vtBicycleBobRollAmplitude.GetFloat( ) * MATH_PI / 180.0f; + LTRotation rBobRoll( 0.0f, 0.0f, fBobRoll ); + LTRotation rFinal = rCameraRot * rBobRoll; + g_pLTClient->SetObjectRotation( hCamera, &rFinal ); + + if( !m_hVehicleModel ) + { + ASSERT( !"CVehicleMgr::CalculateVehicleCameraDisplacment: Missing vehicle model." ); + return; + } + + LTVector vBicycleOffset; + sscanf( g_vtBicycleModelOffset.GetStr( ), "%f %f %f", &vBicycleOffset.x, &vBicycleOffset.y, + &vBicycleOffset.z ); + + // Offset the vehicle model based on the lure's transform. + LTVector vLurePos; + g_pLTClient->GetObjectPos( pPlayerLureFX->GetServerObj( ), &vLurePos ); + LTRotation rLureRot; + g_pLTClient->GetObjectRotation( pPlayerLureFX->GetServerObj( ), &rLureRot ); + LTMatrix matLureRot; + rLureRot.ConvertToMatrix( matLureRot ); + vBicycleOffset = matLureRot * vBicycleOffset; + LTVector vVehicleModelPos = vLurePos + vBicycleOffset; + g_pLTClient->SetObjectPos( m_hVehicleModel, &vVehicleModelPos ); + + // Add the bob roll into the vehicle model rotation. + LTRotation rVehicleModelRot = rLureRot * rBobRoll; + g_pLTClient->SetObjectRotation( m_hVehicleModel, &rVehicleModelRot ); + } + break; + + case PPM_NORMAL : + case PPM_VEHICLE : + return; + break; + + default: + ASSERT( !"CVehicleMgr::CalculateVehicleCameraDisplacment: Invalid physics model." ); + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::CalculateVehicleContourRotation +// +// PURPOSE: Calculate the rotation of the vehicle so it conforms to the ground normal +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::CalculateVehicleContourRotation( LTVector &vPlayerPYR, LTVector &vPYR ) +{ + if ( g_vtVehicleContour.GetFloat() < 1.0f ) + { + // Don't do vehicle contouring...Rest our roll values... + + vPlayerPYR.z = 0.0f; + m_fContourRoll = 0.0f; + return; + } + + // Just use the previous rotation if we are in the air from a jumpvolume... + + if( m_bHaveJumpVolumeVel && !g_pMoveMgr->IsOnGround() ) + { + vPlayerPYR = m_vLastPlayerAngles; + vPYR = m_vLastCameraAngles; + + return; + } + + + // We are assuming that while on a vehicle the only roll will come from the vehicle, + // so set the player roll to nothing. + + vPlayerPYR.z = 0.0f; + + // Get the new forward and right of the player... + + LTRotation rPlayerRot( vPlayerPYR.x, vPlayerPYR.y, vPlayerPYR.z ); + LTVector vPlayerF = rPlayerRot.Forward(); + + vPlayerF.y = 0.0f; + vPlayerF.Normalize(); + + LTVector vPlayerR = vPlayerF.Cross( LTVector( 0, 1, 0 )); + vPlayerR.Normalize(); + + + LTVector vNormal, vModelNormal; + + + // Depending on how many points we want get the appropriate values... + + if( g_vtVehicleContourPoints.GetFloat() < 2.0f ) + { + // Get the normal directly under us and use that to calculate our pitch and roll + // NOTE: Works well when the vehicle is covering a single normal but "snaps" to the + // new pitch and roll when moving from one normal to another. + + vNormal = g_pMoveMgr->GetGroundNormal(); + } + else + { + // Get the normals under the 4 corners of the vehicle and average them toghether + // to get the normal we should use. This helps smooth out the transition between + // two or more planes. + + HOBJECT hObj = g_pMoveMgr->GetObject(); + LTVector vDims, vPos; + + HOBJECT hFilter[] = { g_pLTClient->GetClientObject(), hObj, LTNULL }; + + g_pLTClient->GetObjectPos( hObj, &vPos ); + g_pPhysicsLT->GetObjectDims( hObj , &vDims ); + + LTVector vForward = vPlayerF * (vDims.z + g_vtVehicleContourExtraDimsZ.GetFloat()); + LTVector vRight = vPlayerR * (vDims.x + g_vtVehicleContourExtraDimsX.GetFloat()); + vModelNormal = GetContouringNormal( vPos, vDims, vForward, vRight, hFilter ); + + vForward = vPlayerF * (vDims.z + g_vtVehicleCamContourExtraDimsZ.GetFloat()); + vRight = vPlayerR * (vDims.x + g_vtVehicleCamContourExtraDimsX.GetFloat()); + vNormal = GetContouringNormal( vPos, vDims, vForward, vRight, hFilter ); + } + + // Calculate how much pitch and roll we should apply... + + float fPitchPercent, fModelPitchPercent; + float fRollPercent, fModelRollPercent; + float fAmount, fModelAmount; + + GetContouringInfo( vPlayerF, vNormal, fAmount, fPitchPercent, fRollPercent ); + GetContouringInfo( vPlayerF, vModelNormal, fModelAmount, fModelPitchPercent, fModelRollPercent ); + + // Save the roll we are applying so the canting can use it... + m_fContourRoll = ( m_pVehicle->bContourAffectsRoll ) ? fAmount * fRollPercent : 0.0f; + + vPlayerPYR.x += fAmount * fPitchPercent; + vPlayerPYR.z += m_fContourRoll; + + vPYR.x += vPlayerPYR.x; + vPYR.z += vPlayerPYR.z; + + if (g_vtVehicleContourPlayerViewModel.GetFloat()) + { + m_vVehiclePYR.x = (fModelAmount * fModelPitchPercent) - (fAmount * fPitchPercent); + m_vVehiclePYR.z = (fModelAmount * fModelRollPercent) - (fAmount * fRollPercent); + } + + // [KLS 6/29/02] - Interpolate our position over time (don't just snap there)... + + if (m_bSetLastAngles) + { + // Calculate how far to interpoldate based on the current frame time (delta) and + // the time to interpolate over the entire distance (VehicleContourRate). + // fInterpolationTime should always be a value between 0 and 1.0... + + float fInterpolationTime = LTCLAMP((g_pGameClientShell->GetFrameTime() / g_vtVehicleContourRate.GetFloat()), 0.0f, 1.0f); + + float fCameraYSave = vPYR.y; + float fPlayerYSave = vPlayerPYR.y; + float fVehicleYSave = m_vVehiclePYR.y; + + LTVector vInterpolated; + VEC_LERP(vInterpolated, m_vLastCameraAngles, vPYR, fInterpolationTime); + vPYR = vInterpolated; + vPYR.y = fCameraYSave; + + VEC_LERP(vInterpolated, m_vLastPlayerAngles, vPlayerPYR, fInterpolationTime); + vPlayerPYR = vInterpolated; + vPlayerPYR.y = fPlayerYSave; + + VEC_LERP(vInterpolated, m_vLastVehiclePYR, m_vVehiclePYR, fInterpolationTime); + m_vVehiclePYR = vInterpolated; + m_vVehiclePYR.y = fVehicleYSave; + } + + + // Clamp all the values + + float fClamp = g_vtVehicleContourMaxRotation.GetFloat(); + + vPlayerPYR.x = Clamp( vPlayerPYR.x, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + vPlayerPYR.z = Clamp( vPlayerPYR.z, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + vPYR.x = Clamp( vPYR.x, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + vPYR.z = Clamp( vPYR.z, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + + // These are relative to the camera so keep them small... + + fClamp = g_vtVehicleCamContourMaxRotation.GetFloat(); + + if (g_vtVehicleContourPlayerViewModel.GetFloat()) + { + m_vVehiclePYR.x = Clamp( m_vVehiclePYR.x, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + m_vVehiclePYR.z = Clamp( m_vVehiclePYR.z, MATH_DEGREES_TO_RADIANS( -fClamp ), MATH_DEGREES_TO_RADIANS( fClamp )); + } + + m_vLastPlayerAngles = vPlayerPYR; + m_vLastCameraAngles = vPYR; + m_vLastVehiclePYR = m_vVehiclePYR; + m_bSetLastAngles = true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleGear +// +// PURPOSE: Update the vehicle's current gear... +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleGear() +{ + LTVector myVel = g_pMoveMgr->GetVelocity(); + + // Print out info... + + + if( s_vtVehicleInfoTrack.GetFloat() == VEHICLE_TRACK_GENERAL ) + { + // How fast are we going anyway... + + LTVector vAccel; + g_pPhysicsLT->GetAcceleration(g_pMoveMgr->GetObject(), &vAccel); + + g_pLTClient->CPrint("Vel = %.2f", myVel.Mag()); + g_pLTClient->CPrint("Accel = %.2f", vAccel.Mag()); + g_pLTClient->CPrint("HandleBarRoll = %.2f", m_fHandlebarRoll); + } + + myVel.y = 0.0f; + + LTBOOL bUsingAccel = (LTBOOL) s_vtVehicleAccelGearChange.GetFloat(); + + LTFLOAT fMaxVal = bUsingAccel ? GetMaxAccelMag() : GetMaxVelMag(); + LTFLOAT fVal = bUsingAccel ? m_fVehicleBaseMoveAccel : myVel.Mag(); + + LTBOOL bWasStopped = m_bVehicleStopped; + + m_bVehicleStopped = LTFALSE; + if (fVal < fMaxVal * s_vtVehicleStoppedPercent.GetFloat()) + { + m_bVehicleStopped = LTTRUE; + + myVel.Init(); + g_pMoveMgr->SetVelocity(myVel); + } + + // Add a little movement to show we stopped... + + if (!bWasStopped && m_bVehicleStopped) + { + CameraDelta delta; + delta.Pitch.fVar = DEG2RAD( s_vtVehicleStopMotionPitch.GetFloat( )); + delta.Pitch.fTime1 = 0.4f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta(delta); + } + else if (bWasStopped && !m_bVehicleStopped) + { + // Show a little movement to show we started moving... + + CameraDelta delta; + + delta.Pitch.fVar = DEG2RAD( s_vtVehicleStartMotionPitch.GetFloat( )); + delta.Pitch.fTime1 = 0.25f; + delta.Pitch.fTime2 = 0.5; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + m_VehicleModelOffsetMgr.AddDelta(delta); + } + + m_bVehicleAtMaxSpeed = LTFALSE; + if (fVal > fMaxVal * s_vtVehicleMaxSpeedPercent.GetFloat()) + { + m_bVehicleAtMaxSpeed = LTTRUE; + } + + if( m_bHasWeapon ) + { + m_VehicleWeapon.SetVehicleAtFullSpeed( !!m_bVehicleAtMaxSpeed ); + } + + + m_nLastGear = m_nCurGear; + + m_nCurGear = VEHICLE_GEAR_0; + + // Update the handlebars... + + UpdateVehicleHandleBars(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateVehicleHandleBars +// +// PURPOSE: Update the vehicle handlebars +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateVehicleHandleBars() +{ + if (!m_hVehicleModel) return; + + // Reset all our nodes matrices + + m_VehicleNode1.matTransform.Identity(); + m_VehicleNode2.matTransform.Identity(); + m_VehicleNode3.matTransform.Identity(); + + // Do the rotation on the handle bar node + // + LTRotation rRot; + rRot.Init(); + LTVector vAxis(0.0f, 1.0f, 0.0f); + + // Negate the roll for some reason + rRot.Rotate(vAxis, -m_fHandlebarRoll); + + // Create a rotation matrix and apply it to the current offset matrix + + LTMatrix m1; + rRot.ConvertToMatrix(m1); + m_VehicleNode1.matTransform = m_VehicleNode1.matTransform * m1; + + + // Do the rotation on the speedometer node... + + LTFLOAT fMaxRot = MATH_DEGREES_TO_RADIANS(270.0f); + + // Calculate the speed dial rotation... + + LTVector vVel = g_pMoveMgr->GetVelocity(); + + LTFLOAT fMaxVel = GetMaxVelMag(); + LTFLOAT fCurVel = vVel.Mag() > fMaxVel ? fMaxVel : vVel.Mag(); + + LTFLOAT fPercent = 1.0f - ((fMaxVel - fCurVel) / fMaxVel); + + LTFLOAT fCurRot = fPercent*fMaxRot; + + rRot.Init(); + vAxis.Init(0.0f, 0.0f, 1.0f); + rRot.Rotate(vAxis, -fCurRot); + + // Create a rotation matrix and apply it to the current offset matrix + + rRot.ConvertToMatrix(m1); + m_VehicleNode2.matTransform = m_VehicleNode2.matTransform * m1; + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::AdjustRoll +// +// PURPOSE: Adjust the camera roll if necessary +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::AdjustCameraRoll(LTFLOAT & fRoll) +{ + // Only adjust if we are on a vehicle... + + if (m_ePPhysicsModel != PPM_NORMAL) + { + // Don't adjust camera when selecting/deselecting the vehicle... + + LTBOOL bIsDone = LTFALSE; + if (IsCurVehicleAni("Deselect", bIsDone) || IsCurVehicleAni("Select", bIsDone)) + { + return; + } + + LTFLOAT fMaxCant = DEG2RAD(g_vtMaxVehicleHeadCant.GetFloat()); + + LTFLOAT fMaxOffset = DEG2RAD(g_vtVehicleMouseMaxYawBuffer.GetFloat()); + LTFLOAT fYawDiff = (LTFLOAT)fabs(m_fYawDiff); + LTFLOAT fPercent = fYawDiff / fMaxOffset; + + if (m_fYawDiff > 0.0f) + { + fPercent = -fPercent; + } + + // Save off roll value for updating handlebars... + + m_fHandlebarRoll = fMaxCant * fPercent; + + + // Update head can't only when moving... + + if (!m_bVehicleStopped) + { + fRoll = m_fHandlebarRoll; + + // Move head left or right depending on amount we are turning... + + m_vHeadOffset.x = g_vtVehicleMaxHeadOffsetX.GetFloat() * fPercent; + m_vHeadOffset.y = g_vtVehicleMaxHeadOffsetY.GetFloat() * fPercent; + m_vHeadOffset.z = g_vtVehicleMaxHeadOffsetZ.GetFloat() * fPercent; + m_fHeadYaw = DEG2RAD(g_vtVehicleMaxHeadYaw.GetFloat() * fPercent); + } + } +} +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::MoveLocalSolidObject +// +// PURPOSE: Handle the moving of the object if we need to. +// +// ----------------------------------------------------------------------- // +bool CVehicleMgr::MoveLocalSolidObject( ) +{ + // Do movement based on physics model. + switch( m_ePPhysicsModel ) + { + // These guys don't handle movement. + case PPM_NORMAL : + case PPM_VEHICLE : + return false; + break; + + case PPM_LURE: + return MoveToLure( ); + break; + + default: + ASSERT( !"CVehicleMgr::MoveLocalSolidObject: Invalid physics model." ); + return false; + break; + } + + return false; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::MoveToLure +// +// PURPOSE: Handle the moving of the object if we need to. +// +// ----------------------------------------------------------------------- // +bool CVehicleMgr::MoveToLure( ) +{ + // Get the playerlurefx. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( !pPlayerLureFX ) + { + ASSERT( !"CVehicleMgr::MoveToLure: Missing PlayerLureFX." ); + return false; + } + + // Get the server lure object. + HOBJECT hServerObj = pPlayerLureFX->GetServerObj( ); + if( !hServerObj ) + { + ASSERT( !"CVehicleMgr::MoveToLure: Missing server-side player object." ); + return false; + } + + // Get the client player object. + HOBJECT hObj = g_pMoveMgr->GetObject( ); + if( !hObj ) + { + ASSERT( !"CVehicleMgr::MoveToLure: Missing client-side player object." ); + return false; + } + + // Our resulting pos and rotation. + LTVector vPos; + LTRotation rRot; + + // Apply offset if told to. + if( pPlayerLureFX->GetRetainOffsets( )) + { + // Get the playerlure's transform. + LTransform playerLureTransform; + g_pLTClient->GetObjectPos( hServerObj, &playerLureTransform.m_Pos ); + g_pLTClient->GetObjectRotation( hServerObj, &playerLureTransform.m_Rot ); + playerLureTransform.m_Scale.Init( 1.0f, 1.0f, 1.0f ); + + // Get the offset transform. + LTransform offsetTransform = pPlayerLureFX->GetOffsetTransform( ); + + // Find the offset position and rotation. + LTransform playerTransform; + ILTTransform *pTransformLT = g_pLTClient->GetTransformLT(); + pTransformLT->Multiply( playerTransform, playerLureTransform, offsetTransform ); + + // Stuff the result. + vPos = playerTransform.m_Pos; + rRot = playerTransform.m_Rot; + } + // Not retaining offsets. + else + { + // Get the playerlure's position. + g_pLTClient->GetObjectPos( hServerObj, &vPos ); + + // Get the playerlure's rotation. + g_pLTClient->GetObjectRotation( hServerObj, &rRot ); + } + + g_pPhysicsLT->MoveObject( hObj, &vPos, MOVEOBJECT_TELEPORT ); + g_pLTClient->SetObjectRotation( hObj, &rRot ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::GetVehicleMovementPercent +// +// PURPOSE: Calculate the percentage from our max velocity... +// +// ----------------------------------------------------------------------- // + +LTFLOAT CVehicleMgr::GetVehicleMovementPercent() const +{ + LTVector vVel = g_pMoveMgr->GetVelocity(); + vVel.y = 0.0f; + + LTFLOAT fMaxVel = GetMaxVelMag(); + LTFLOAT fCurVel = vVel.Mag() > fMaxVel ? fMaxVel : vVel.Mag(); + + if (fMaxVel > 0.0f) + { + return 1.0f - ((fMaxVel - fCurVel) / fMaxVel); + } + + return 0.0f; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::HandleJumpVolumeTouch +// +// PURPOSE: Handle hitting a JumpVolume... +// +// ----------------------------------------------------------------------- // + +bool CVehicleMgr::HandleJumpVolumeTouch( HOBJECT hJumpVolume ) +{ + if( !hJumpVolume ) return false; + + // We only want one JumpVolume to effect us at a time... + + if( m_hCurJumpVolume ) + return true; + + // Grab the SpecialFX associated with this object... + + CJumpVolumeFX *pFX = (CJumpVolumeFX*)g_pGameClientShell->GetSFXMgr()->FindSpecialFX( SFX_JUMPVOLUME_ID, hJumpVolume ); + if( pFX ) + { + + // Dont add the full velocity amount if we aren't at the max... + + LTRotation rRot; + g_pLTClient->GetObjectRotation( g_pMoveMgr->GetObject(), &rRot ); + + LTVector vF = rRot.Forward(); + vF.y = 0.0f; + vF.Normalize(); + + LTVector vDir = pFX->GetVelocity(); + vDir.y = 0.0f; + vDir.Normalize(); + + float fDot = rRot.Forward().Dot( vDir ); + + // Don't let the JumpVolume effct us if we're heading in the opposite direction... + + if( fDot <= 0.001f ) + return true; + + // Adjust the percentage based on the min and max values... + + float fDirMax = g_vtJumpVolumeMaxDirectionPercent.GetFloat(); + float fDirMin = g_vtJumpVolumeMinDirectionPercent.GetFloat(); + float fT = 0.0f; + + if( fDot >= fDirMax ) + { + // Give us full amount + fT = 1.0f; + } + else if( fDot <= fDirMin ) + { + // Don't let it affect us at all + return true; + } + else + { + fT = (fDot - fDirMin) / (1.0f - fDirMin); + } + + WaveType eType = (WaveType)(int)g_vtJumpVolumeWaveType.GetFloat(); + float fPercent = GetVehicleMovementPercent() * GetWaveFn(eType)(fT); + + if( g_vtJumpVolumeInfo.GetFloat() > 0.0f ) + { + g_pLTClient->CPrint( "Movement: %.4f Dot: %.4f T: %.4f Wave: %.3f", GetVehicleMovementPercent(), fDot, fT, GetWaveFn(eType)(fT) ); + g_pLTClient->CPrint( "Percent: %.4f", fPercent ); + } + + LTVector vJumpVolumeVel = g_pMoveMgr->GetVelocity() + (pFX->GetVelocity() * fPercent); + g_pMoveMgr->SetVelocity( vJumpVolumeVel ); + + m_fJumpVolumeVel = vJumpVolumeVel.Mag(); + + // The vehicle is now being affected by a JumpVolume... + + m_hCurJumpVolume = hJumpVolume; + m_bHaveJumpVolumeVel = LTTRUE; + + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::UpdateInJumpVolume +// +// PURPOSE: Detrimines if we are still within a JumpVolume... +// This is really only used so a JumpVolume doesn't keep +// adding it's velocity if we intersect it on multiple frames. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::UpdateInJumpVolume() +{ + // Make sure we are in a JumpVolume... + + if( !m_hCurJumpVolume ) + return; + + HOBJECT hObj = g_pMoveMgr->GetObject(); + + LTVector vJVPos, vObjPos, vJVDims, vObjDims; + LTVector vJVMin, vJVMax, vObjMin, vObjMax; + + g_pLTClient->GetObjectPos( m_hCurJumpVolume, &vJVPos ); + g_pLTClient->GetObjectPos( hObj, &vObjPos ); + + g_pPhysicsLT->GetObjectDims( m_hCurJumpVolume, &vJVDims ); + g_pPhysicsLT->GetObjectDims( hObj, &vObjDims ); + + // Setup the extents... + + vJVMin = vJVPos - vJVDims; + vJVMax = vJVPos + vJVDims; + vObjMin = vObjPos - vObjDims; + vObjMax = vObjPos + vObjDims; + + // If the boxes arent intersecting then we are no longer in the JumpVolume... + + if( !BoxesIntersect( vJVMin, vJVMax, vObjMin, vObjMax )) + m_hCurJumpVolume = LTNULL; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::HandleCharacterTouch +// +// PURPOSE: Handle hitting a characer... +// +// ----------------------------------------------------------------------- // + +bool CVehicleMgr::HandleCharacterTouch( HOBJECT hCharacter ) +{ + if( !hCharacter ) return false; + + LTFLOAT fVelPercent = GetVehicleMovementPercent(); + LTFLOAT fDamage = g_vtVehicleImpactAIMinDamage.GetFloat(); + LTFLOAT fMaxDamage = g_vtVehicleImpactAIMaxDamage.GetFloat(); + LTFLOAT fDamRange = fMaxDamage - fDamage; + + fDamage += (fDamRange * fVelPercent); + + LTVector vPos; + g_pLTClient->GetObjectPos(hCharacter, &vPos); + + // Get our forward vector... + + HOBJECT hObj = g_pMoveMgr->GetObject(); + LTRotation rRot; + g_pLTClient->GetObjectRotation(hObj, &rRot); + + CAutoMessage cMsg; + cMsg.Writeuint8(MID_PLAYER_CLIENTMSG); + cMsg.Writeuint8(CP_DAMAGE_VEHICLE_IMPACT); + cMsg.Writeuint8(DT_EXPLODE); + cMsg.Writefloat(fDamage); + cMsg.WriteLTVector(rRot.Forward()); + cMsg.WriteLTVector(vPos); + cMsg.Writeuint8(0); + cMsg.WriteObject(hCharacter); + g_pLTClient->SendToServer(cMsg.Read(), MESSAGE_GUARANTEED); + + if (fDamage > (g_vtVehicleImpactAIMaxDamage.GetFloat() * 0.75f)) + { + // Pop a little wheely... + + CameraDelta delta; + delta.Pitch.fVar = -DEG2RAD(5.0f); + delta.Pitch.fTime1 = 0.1f; + delta.Pitch.fTime2 = 0.3f; + delta.Pitch.eWave1 = Wave_SlowOff; + delta.Pitch.eWave2 = Wave_SlowOff; + g_pPlayerMgr->GetCameraOffsetMgr()->AddDelta(delta); + } + + // Should we continue processing the collision? + + if (!g_vtVehicleImpactAIDoNormalCollision.GetFloat()) + { + return true; + } + + return false; +} + + +LTBOOL CVehicleMgr::OnCommandOn(int command) +{ + return LTFALSE; +} + +LTBOOL CVehicleMgr::OnCommandOff(int command) +{ + return LTFALSE; +} + +void CVehicleMgr::AlignAngleToAxis(float &fAngle) +{ + // First make sure the yaw is in the 0 - 2pi range + if(fAngle < 0) + { + fAngle = fAngle + (((float)((int)(fAngle/MATH_CIRCLE))+1)*MATH_CIRCLE); + } + else if(fAngle > MATH_CIRCLE) + { + fAngle = fAngle - (((float)((int)(fAngle/MATH_CIRCLE))+1)*MATH_CIRCLE); + } + + // Now axis align it + if(fAngle <= (MATH_PI/4.0f)) // PI/4 + { + fAngle = 0; + } + else if(fAngle <= (MATH_PI*0.75f)) // 3PI/4 + { + fAngle = MATH_HALFPI; + } + else if(fAngle <= (MATH_PI*1.25)) // 5PI/4 + { + fAngle = MATH_PI; + } + else if(fAngle <= (MATH_PI*1.75)) // 7PI/4 + { + fAngle = MATH_HALFPI*3.0f; + } + else + { + fAngle = 0; + } + + /*********************** + Just in case, this code does the same thing as above but uses a forward + vector instead of an angle + + vF.y = 0; + LTVector vAxis(0.0f,0.0f,0.0f); + float fTheta; + + // Figure out which quadrant it's in + if(vF.x >= 0.0f && vF.z >= 0.0f) + { + vAxis.z = 1.0f; // 12 o'clock + fTheta = ltacosf(vF.Dot(vAxis)); + if(fTheta >= (MATH_HALFPI/2.0f)) + { + vMoveVel.x = 1.0f; // 3 o'clock + } + else + { + vMoveVel.z = 1.0f; // 12 o'clock + } + } + else if(vF.x >= 0.0f && vF.z <= 0.0f) + { + vAxis.x = 1.0f; // 3 o'clock + fTheta = ltacosf(vF.Dot(vAxis)); + if(fTheta >= (MATH_HALFPI/2.0f)) + { + vMoveVel.z = -1.0f; // 6 o'clock + } + else + { + vMoveVel.x = 1.0f; // 3 o'clock + } + } + else if(vF.x <= 0.0f && vF.z >= 0.0f) + { + vAxis.z = -1.0f; // 6 o'clock + fTheta = ltacosf(vF.Dot(vAxis)); + if(fTheta >= (MATH_HALFPI/2.0f)) + { + vMoveVel.x = -1.0f; // 9 o'clock + } + else + { + vMoveVel.z = -1.0f; // 6 o'clock + } + } + else // (vF.x <= 0.0f && vF.z <= 0.0f) + { + vAxis.x = -1.0f; // 9 o'clock + fTheta = ltacosf(vF.Dot(vAxis)); + if(fTheta >= (MATH_HALFPI/2.0f)) + { + vMoveVel.z = 1.0f; // 12 o'clock + } + else + { + vMoveVel.x = -1.0f; // 9 o'clock + } + } + ***********************/ +} + +void CVehicleMgr::UpdateContainerMotion() +{ + // Get the containerinfo from movemgr update the gravity and viscosity... + + g_pMoveMgr->UpdateContainerList(); + + uint32 nNumContainers = g_pMoveMgr->GetNumContainers(); + CContainerInfo *pInfo = LTNULL; + + for( uint32 i = 0; i < nNumContainers; ++i ) + { + pInfo = g_pMoveMgr->GetContainerInfo( i ); + if( !pInfo ) + continue; + + g_pMoveMgr->UpdateContainerViscosity( pInfo ); + g_pMoveMgr->UpdateContainerGravity( pInfo ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::MoveVehicleObject +// +// PURPOSE: Allows the vehicle to do some extra handeling of moving the object... +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::MoveVehicleObject( LTVector &vPos ) +{ + // Do movement based on physics model. + switch( m_ePPhysicsModel ) + { + case PPM_VEHICLE : + { + HOBJECT hObj = g_pMoveMgr->GetObject(); + + // Remember where we started + LTVector vStartPos; + g_pLTClient->GetObjectPos( hObj, &vStartPos ); + + // We haven't been touched yet... + m_bWasTouched = false; + + // First do movement normally to get collision information... + + g_pPhysicsLT->MoveObject( hObj, &vPos, 0 ); + + // If we didn't get touched, we're done + if (!m_bWasTouched) + break; + + // Check where we ended up + LTVector vResultPos; + g_pLTClient->GetObjectPos( hObj, &vResultPos ); + + // If we made it to our destination anyway, we're done + if( vResultPos == vPos ) + break; + + // If we didn't make it far enough toward the destination, it was a collision + LTVector vDesiredOfs = vPos - vStartPos; + LTVector vActualOfs = vResultPos - vStartPos; + + float fDesiredMag = vDesiredOfs.Mag(); + if ((vActualOfs.Dot(vDesiredOfs) / fDesiredMag) < (fDesiredMag * g_vtVehicleImpactThreshold.GetFloat())) + HandleCollision(); + } + break; + + case PPM_NORMAL: + case PPM_LURE: + { + // Simple movement call... + + g_pPhysicsLT->MoveObject( g_pMoveMgr->GetObject(), &vPos, 0 ); + } + break; + + default: + ASSERT( !"CVehicleMgr::MoveLocalSolidObject: Invalid physics model." ); + break; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::MoveVehicleObject +// +// PURPOSE: Allows the vehicle to do some extra handeling of moving the object... +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SetPlayerLureId( uint32 nPlayerLureId ) +{ + m_nPlayerLureId = nPlayerLureId; + m_bResetLure = true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::Save +// +// PURPOSE: Serialization +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState) +{ + // Saving this flag is fine since it doesn't deal with any actualy physics info + // and is needed so we know if we should holster the current weapon when the + // physics model gets reset... + + pMsg->Writebool( m_bHolsteredWeapon ); + + // If we are following a player lure we need to save the original offset transform... + if( m_ePPhysicsModel == PPM_LURE ) + { + // Get the playerlurefx object. + PlayerLureFX* pPlayerLureFX = PlayerLureFX::GetPlayerLureFX( m_nPlayerLureId ); + if( pPlayerLureFX ) + { + const LTransform &offset = pPlayerLureFX->GetOffsetTransform(); + + pMsg->Writebool( true ); + pMsg->WriteLTVector( offset.m_Pos ); + pMsg->WriteLTRotation( offset.m_Rot ); + pMsg->WriteLTVector( offset.m_Scale ); + } + else + { + pMsg->Writebool( false ); + } + } + else + { + pMsg->Writebool( false ); + } + +// IMPORTANT NOTE!!! +// Serialization of VehicleMgr is very bad, since the rest of the code assumes it's going +// to have to reset the state of the player physics model +/* + pMsg->Writeuint32(m_ePPhysicsModel); + + pMsg->Writefloat(m_fAccelStart); + pMsg->Writefloat(m_fDecelStart); + pMsg->Writeuint32(m_dwControlFlags); + pMsg->Writeuint32(m_dwLastControlFlags); + pMsg->Writefloat(m_fVehicleBaseMoveAccel); + + pMsg->Writeint32(m_nCurGear); + pMsg->Writeint32(m_nLastGear); + pMsg->Writebool(m_bTurned); + + pMsg->Writebool(m_bVehicleStopped != LTFALSE); + pMsg->Writebool(m_bVehicleAtMaxSpeed != LTFALSE); + pMsg->Writebool(m_bVehicleTurning != LTFALSE); + pMsg->Writeint32(m_nVehicleTurnDirection); + + pMsg->WriteLTVector(m_vVehiclePYR); + + pMsg->Writefloat(m_fContourRoll); + + pMsg->Writeuint32(m_eSurface); + pMsg->Writeuint32(m_eLastSurface); + + pMsg->Writefloat(m_fYawDiff); + pMsg->Writefloat(m_fYawDelta); + pMsg->Writefloat(m_fHandlebarRoll); + pMsg->Writefloat(m_fHeadYaw); + + pMsg->Writeuint32(m_nPlayerLureId); + + pMsg->Writebool(m_bHaveJumpVolumeVel != LTFALSE); + pMsg->Writefloat(m_fJumpVolumeVel); + + pMsg->Writebool(m_bSetLastAngles); + pMsg->WriteLTVector(m_vLastVehiclePYR); + pMsg->WriteLTVector(m_vLastPlayerAngles); + pMsg->WriteLTVector(m_vLastCameraAngles); +*/ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::Load +// +// PURPOSE: Serialization +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState) +{ + m_bHolsteredWeapon = pMsg->Readbool(); + + m_bResetLureFromSave = pMsg->Readbool(); + if( m_bResetLureFromSave ) + { + m_ResetLureTransform.m_Pos = pMsg->ReadLTVector(); + m_ResetLureTransform.m_Rot = pMsg->ReadLTRotation(); + m_ResetLureTransform.m_Scale = pMsg->ReadLTVector(); + } + +// IMPORTANT NOTE!!! +// Serialization of VehicleMgr is very bad, since the rest of the code assumes it's going +// to have to reset the state of the player physics model +/* + SetPhysicsModel((PlayerPhysicsModel)pMsg->Readuint32()); + + m_fAccelStart = pMsg->Readfloat(); + m_fDecelStart = pMsg->Readfloat(); + m_dwControlFlags = pMsg->Readuint32(); + m_dwLastControlFlags = pMsg->Readuint32(); + m_fVehicleBaseMoveAccel = pMsg->Readfloat(); + + m_nCurGear = pMsg->Readuint32(); + m_nLastGear = pMsg->Readuint32(); + m_bTurned = pMsg->Readbool(); + + m_bVehicleStopped = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bVehicleAtMaxSpeed = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_bVehicleTurning = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_nVehicleTurnDirection = pMsg->Readuint32(); + + m_vVehiclePYR = pMsg->ReadLTVector(); + + m_fContourRoll = pMsg->Readfloat(); + + m_eSurface = (SurfaceType)pMsg->Readuint32(); + m_eLastSurface = (SurfaceType)pMsg->Readuint32(); + + m_fYawDiff = pMsg->Readfloat(); + m_fYawDelta = pMsg->Readfloat(); + m_fHandlebarRoll = pMsg->Readfloat(); + m_fHeadYaw = pMsg->Readfloat(); + + m_nPlayerLureId = pMsg->Readuint32(); + + m_bHaveJumpVolumeVel = pMsg->Readbool() ? LTTRUE : LTFALSE; + m_fJumpVolumeVel = pMsg->Readfloat(); + + m_bSetLastAngles = pMsg->Readbool(); + m_vLastVehiclePYR = pMsg->ReadLTVector(); + m_vLastPlayerAngles = pMsg->ReadLTVector(); + m_vLastCameraAngles = pMsg->ReadLTVector(); +*/ +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleMgr::SaveVehicleInfo +// +// PURPOSE: Write the console variables to the vehicle bute file. +// +// ----------------------------------------------------------------------- // + +void CVehicleMgr::SaveVehicleInfo() +{ + switch( m_ePPhysicsModel ) + { + case PPM_VEHICLE : + { + if( !m_pVehicle ) + break; + + // Set the vehicle data to the console var data... + + m_pVehicle->fVel = s_vtVehicleVel.GetFloat( ); + m_pVehicle->fAccel = s_vtVehicleAccel.GetFloat( ); + m_pVehicle->fAccelTime = s_vtVehicleAccelTime.GetFloat( ); + m_pVehicle->fMaxDecel = s_vtVehicleMaxDecel.GetFloat( ); + m_pVehicle->fDecelTime = s_vtVehicleDecelTime.GetFloat( ); + m_pVehicle->fMaxBrake = s_vtVehicleMaxBrake.GetFloat( ); + m_pVehicle->fBrakeTime = s_vtVehicleBrakeTime.GetFloat( ); + m_pVehicle->fStoppedPercent = s_vtVehicleStoppedPercent.GetFloat( ); + m_pVehicle->fMaxSpeedPercent = s_vtVehicleMaxSpeedPercent.GetFloat( ); + m_pVehicle->fMinTurnAccel = s_vtVehicleMinTurnAccel.GetFloat( ); + m_pVehicle->fTurnRate = s_vtVehicleTurnRate.GetFloat( ); + m_pVehicle->fInitialTurnRate = s_vtVehicleInitialTurnRate.GetFloat( ); + m_pVehicle->fSurfaceSpeedUpPitch = s_vtVehicleSurfaceSpeedUpPitch.GetFloat( ); + m_pVehicle->fSurfaceSlowDownPitch = s_vtVehicleSurfaceSlowDownPitch.GetFloat( ); + m_pVehicle->fStartMotionPitch = s_vtVehicleStartMotionPitch.GetFloat( ); + m_pVehicle->fStopMotionPitch = s_vtVehicleStopMotionPitch.GetFloat( ); + m_pVehicle->fBrakePitch = s_vtVehicleBrakePitch.GetFloat( ); + m_pVehicle->fDecelPitch = s_vtVehicleDecelPitch.GetFloat( ); + + m_pVehicle->vOffset = m_vVehicleOffset; + + // Write the vehicle to the bute file... + + char szMsg[64] = {0}; + + if( g_pVehicleButeMgr->SaveToFile( m_pVehicle )) + { + LTSNPrintF( szMsg, ARRAY_LEN( szMsg ), "Saved vehicle %s", m_pVehicle->sName.c_str() ); + } + else + { + LTSNPrintF( szMsg, ARRAY_LEN( szMsg ), "ERROR Saving vehicle %s", m_pVehicle->sName.c_str() ); + } + + g_pChatMsgs->AddMessage( szMsg,kMsgCheatConfirm ); + } + break; + + case PPM_LURE : + case PPM_NORMAL: + default: + break; + } +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleMgr::UpdateWeaponModel() +// +// PURPOSE: Update the vehicle weapon +// +// ----------------------------------------------------------------------- // + +WeaponState CVehicleMgr::UpdateVehicleWeapon( LTRotation const &rRot, LTVector const &vPos, + bool bFire, FireType eFireType /* = FT_NORMAL_FIRE */ ) +{ + if( !m_bHasWeapon ) + return W_INACTIVE; + + // Update the vehicle weapon... + + m_VehicleWeapon.SetCameraInfo( rRot, vPos ); + WeaponState eWeaponState = m_VehicleWeapon.Update( bFire, eFireType ); + + return eWeaponState; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleMgr::OnModelKey() +// +// PURPOSE: Handle any model string keys... +// +// ----------------------------------------------------------------------- // + +bool CVehicleMgr::OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ) +{ + if( m_bHasWeapon ) + { + // Send to the vehicle weapon to handle... + + return m_VehicleWeapon.OnModelKey( hObj, pArgs ); + } + + return false; +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleMgr::CanShowCrosshair() +// +// PURPOSE: Decide if the vehicle should display the crosshair... +// +// ----------------------------------------------------------------------- // + +bool CVehicleMgr::CanShowCrosshair() const +{ + switch( m_ePPhysicsModel ) + { + case PPM_VEHICLE : + { + if( !m_pVehicle ) + return false; + + return m_pVehicle->bCanShowCrosshair; + } + break; + + case PPM_LURE : + case PPM_NORMAL : + default : + return true; + + } +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleMgr::AllowHeadBobCant() +// +// PURPOSE: Allow headbobmgr to adjust head bob and canting. +// +// ----------------------------------------------------------------------- // + +bool CVehicleMgr::AllowHeadBobCant() const +{ + switch( m_ePPhysicsModel ) + { + case PPM_LURE : + return false; + + case PPM_NORMAL : + default : + return true; + + } +} diff --git a/Jack/ClientShellDLL/VehicleMgr.h b/Jack/ClientShellDLL/VehicleMgr.h new file mode 100644 index 00000000..3ca61334 --- /dev/null +++ b/Jack/ClientShellDLL/VehicleMgr.h @@ -0,0 +1,280 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : CVehicleMgr.cpp +// +// PURPOSE : Client side vehicle movement mgr - Definition +// +// CREATED : 6/12/00 +// +// (c) 2000-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __VEHICLE_MGR_H__ +#define __VEHICLE_MGR_H__ + +#include "iltclient.h" +#include "SharedMovement.h" +#include "CameraOffsetMgr.h" +#include "Timer.h" +#include "SurfaceDefs.h" +#include "LTObjRef.h" +#include "VehicleWeapon.h" + +struct VEHICLE; + +struct VEHICLENODE +{ + VEHICLENODE() + { + hNode = INVALID_MODEL_NODE; + matTransform.Identity(); + } + + HMODELNODE hNode; + LTMatrix matTransform; +}; + +class CVehicleMgr +{ + public: + + CVehicleMgr(); + ~CVehicleMgr(); + + LTBOOL Init(); + + void UpdateModels(); + + LTFLOAT GetVehicleMovementPercent() const; + + void OnEnterWorld(); + void OnExitWorld(); + bool OnModelKey( HLOCALOBJ hObj, ArgList *pArgs ); + + void OnTouchNotify(CollisionInfo *pInfo, float forceMag); + + uint32 GetControlFlags() const { return m_dwControlFlags; } + + bool CanShowCrosshair() const; + LTBOOL IsVehiclePhysics(); + LTBOOL CanDismount(); + LTBOOL IsTurning() const { return (m_bVehicleTurning && !m_bVehicleStopped); } + int GetTurnDirection() const { return m_nVehicleTurnDirection; } + bool AllowHeadBobCant() const; + + PlayerPhysicsModel GetPhysicsModel() const { return m_ePPhysicsModel; } + + void CalculateVehicleRotation(LTVector & vPlayerPYR, LTVector & vPYR, float fYawDelta, float fPitchDelta ); + + // Allows vehicles to perterb the camera placement. + void CalculateVehicleCameraDisplacment( LTVector& vDisplacement ); + + void GetVehicleLightPosRot(LTVector & vPos, LTRotation & rRot); + void HandleNodeControl(HOBJECT hObj, HMODELNODE hNode, LTMatrix *pGlobalMat); + + void InitWorldData(); + + void UpdateControlFlags(); + void UpdateMotion(); + void UpdateFriction(); + void UpdateSound(); + + void TermLevel(); + + CCameraOffsetMgr* GetModelOffsetMgr() { return &m_VehicleModelOffsetMgr; } + + void SetPhysicsModel( PlayerPhysicsModel eModel, uint8 nModelId = (uint8)-1, LTBOOL bDoPreSet = LTTRUE ); + + void AdjustCameraRoll(LTFLOAT & fRoll); + + void SetPlayerLureId( uint32 nPlayerLureId ); + uint32 GetPlayerLureId( ) { return m_nPlayerLureId; } + + float GetVehicleContourRoll() const { return IsVehicleModel( m_ePPhysicsModel ) ? m_fContourRoll : 0.0f; } + + // Called by vehiclemgr. + bool MoveLocalSolidObject( ); + + // Command handling functions + LTBOOL OnCommandOn(int command); + LTBOOL OnCommandOff(int command); + void AlignAngleToAxis(float &fAngle); + void SnapLightCycleToXZGrid(LTVector &vNewPos, LTVector &vOldPos, uint32 nGridSize); + + void MoveVehicleObject( LTVector &vPos ); + + // Serialization + void Save(ILTMessage_Write *pMsg, SaveDataState eSaveDataState); + void Load(ILTMessage_Read *pMsg, SaveDataState eLoadDataState); + + // Is it safe to save? + bool CanSave() const { return m_bHaveJumpVolumeVel == LTFALSE; } + + LTFLOAT GetMaxVelMag(LTFLOAT fMult=1.0f) const; + LTFLOAT GetMaxAccelMag(LTFLOAT fMult=1.0f) const; + + void SaveVehicleInfo(); + + bool HasVehicleWeapon( ) const { return m_bHasWeapon; } + const CVehicleWeapon* GetVehicleWeapon() const { return &m_VehicleWeapon; } + + // Weapon update function + WeaponState UpdateVehicleWeapon( LTRotation const &rRot, LTVector const &vPos, + bool bFire, FireType eFireType = FT_NORMAL_FIRE ); + + protected: + + void UpdateGear(); + + const char* GetIdleSnd(); + const char* GetBrakeSnd(); + const char* GetAccelSnd(); + const char* GetDecelSnd(); + const char* GetImpactSnd(LTFLOAT fCurVelocityPercent, SURFACE* pSurface); + + LTFLOAT GetAccelTime() const; + LTFLOAT GetMinTurnAccel()const; + LTFLOAT GetMaxDecel() const; + LTFLOAT GetDecelTime() const; + LTFLOAT GetMaxBrake() const; + LTFLOAT GetBrakeTime()const; + + void UpdateVehicleMotion(); + void UpdateVehicleSounds(); + void UpdateVehicleControlFlags(); + void UpdateVehicleHandleBars(); + + void UpdateVehicleGear(); + + void UpdateLureControlFlags(); + void UpdateLureMotion(); + + void KillAllVehicleSounds(HLTSOUND hException=LTNULL); + + void PlayVehicleAni(char* pAniName, LTBOOL bReset=LTTRUE, LTBOOL bLoop=LTFALSE); + LTBOOL IsCurVehicleAni(char* pAniName, LTBOOL & bIsDone); + + LTBOOL PreSetPhysicsModel(PlayerPhysicsModel eModel); + + void SetVehiclePhysicsModel( ); + void SetPlayerLurePhysicsModel( ); + void SetNormalPhysicsModel( ); + + void CreateVehicleModel(); + void UpdateVehicleModel(); + void UpdateVehicleFriction(LTFLOAT fSlideToStopTime); + + void ShowVehicleModel(LTBOOL bShow=LTTRUE); + + LTFLOAT GetSurfaceVelMult(SurfaceType eType) const; + + void CalculateBankingVehicleRotation(LTVector & vPlayerPYR, LTVector & vPYR, LTFLOAT fYawDelta); + void CalculateLureVehicleRotation(LTVector& vPlayerPYR, LTVector& vPYR, float fYawDelta, float fPitchDelta ); + void CalculateVehicleContourRotation( LTVector &vPlayerPYR, LTVector &vPYR ); + void CalculateLightCycleRotation(LTVector & vPlayerPYR, LTVector & vPYR); + + bool MoveToLure( ); + bool MoveLightCycle(); + + bool HandleJumpVolumeTouch( HOBJECT hJumpVolume ); + bool HandleCharacterTouch( HOBJECT hCharacter ); + + void UpdateInJumpVolume(); + void EnableWeapon( bool bEnable, bool bToggleHolster = true ); + + void UpdateContainerMotion(); + + void HandleCollision(); + + protected : + + HOBJECT m_hVehicleModel; + LTFLOAT m_fAccelStart; + LTFLOAT m_fDecelStart; + + // Movement state. + uint32 m_dwControlFlags; + uint32 m_dwLastControlFlags; + bool m_bLastBrake; + + float m_fVehicleBaseMoveAccel; + + PlayerPhysicsModel m_ePPhysicsModel; + + HLTSOUND m_hVehicleStartSnd; + HLTSOUND m_hVehicleAccelSnd; + HLTSOUND m_hVehicleDecelSnd; + HLTSOUND m_hVehicleCruiseSnd; + HLTSOUND m_hVehicleImpactSnd; + HLTSOUND m_hIdleSnd; + HLTSOUND m_hBrakeSnd; + + VEHICLENODE m_VehicleNode1; + VEHICLENODE m_VehicleNode2; + VEHICLENODE m_VehicleNode3; + + HMODELSOCKET m_hVehicleAttachSocket; + + LTVector m_vVehicleOffset; + LTVector m_vHeadOffset; + + int m_nCurGear; + int m_nLastGear; + bool m_bTurned; + bool m_bHolsteredWeapon; + + LTBOOL m_bVehicleStopped; + LTBOOL m_bVehicleAtMaxSpeed; + LTBOOL m_bVehicleTurning; // Are we turning (vehicle mode) + int m_nVehicleTurnDirection; // Direction we are turning + + CCameraOffsetMgr m_VehicleModelOffsetMgr; // Adjust vehicle model orientation + + LTVector m_vVehiclePYR; + + float m_fContourRoll; + + SurfaceType m_eSurface; + SurfaceType m_eLastSurface; + + LTFLOAT m_fYawDiff; + LTFLOAT m_fYawDelta; + LTBOOL m_bKeyboardTurning; + LTFLOAT m_fHandlebarRoll; + LTFLOAT m_fHeadYaw; + + enum TurnDirection { TD_LEFT, TD_CENTER, TD_RIGHT }; + TurnDirection m_eMouseTurnDirection; + + uint32 m_nPlayerLureId; + CTimer m_LureTimeToNextBump; + CTimer m_LureTimeOverBump; + float m_fLureBumpHeight; + float m_fLureBobParameter; + + bool m_bResetLure; + bool m_bResetLureFromSave; + LTransform m_ResetLureTransform; + + LTObjRef m_hCurJumpVolume; + + LTBOOL m_bHaveJumpVolumeVel; + float m_fJumpVolumeVel; + + bool m_bSetLastAngles; + LTVector m_vLastVehiclePYR; + LTVector m_vLastPlayerAngles; + LTVector m_vLastCameraAngles; + + bool m_bWasTouched; + CollisionInfo m_cLastTouchInfo; + + VEHICLE *m_pVehicle; + + CVehicleWeapon m_VehicleWeapon; + bool m_bHasWeapon; +}; + + +#endif // __VEHICLE_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/VehicleWeapon.cpp b/Jack/ClientShellDLL/VehicleWeapon.cpp new file mode 100644 index 00000000..20727a29 --- /dev/null +++ b/Jack/ClientShellDLL/VehicleWeapon.cpp @@ -0,0 +1,501 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VehicleWeapon.cpp +// +// PURPOSE : VehicleWeapon implementation +// +// CREATED : 3/5/03 +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + + #include "stdafx.h" + #include "VehicleWeapon.h" + #include "PlayerViewAttachmentMgr.h" + +HMODELANIM const INVALID_ANI = ( static_cast< HMODELANIM >( -1 ) ); + +static const char *s_szIdleAnimationBasename = "Idle_"; +static const char *s_szPreFireAnimationName = "IdlePreFire"; +static const char *s_szPostFireAnimationName = "IdlePostFire"; +static const char *s_szFireAnimationName = "IdleFire"; +static const char *s_szFireAnimationBasename = "IdleFire"; +static const char *s_szFullSpeedFireAniName = "FullSpeedFire"; +static const char *s_szFullSpeedPostFireAniName = "FullSpeedPostFire"; +static const char *s_szFullSpeedPreFireAniName = "FullSpeedPreFire"; +static const char *s_szBrakeFireAniName = "BrakeFire"; +static const char *s_szBrakePostFireAniName = "BrakePostFire"; +static const char *s_szBrakePreFireAniName = "BrakePreFire"; + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::CVehicleWeapon +// +// PURPOSE: Constructor... +// +// ----------------------------------------------------------------------- // + +CVehicleWeapon::CVehicleWeapon( ) +: CClientWeapon ( ), + m_bVehicleAtFullSpeed ( false ), + m_nFullSpeedPreFireAni ( INVALID_ANI ), + m_nFullSpeedPostFireAni ( INVALID_ANI ), + m_bVehicleBrakeOn ( false ), + m_nBrakePreFireAni ( INVALID_ANI ), + m_nBrakePostFireAni ( INVALID_ANI ) +{ + int i = 0; + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + m_nFullSpeedFireAnis[i] = INVALID_ANI; + } + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + m_nBrakeFireAnis[i] = INVALID_ANI; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::~CVehicleWeapon +// +// PURPOSE: Destructor... +// +// ----------------------------------------------------------------------- // + +CVehicleWeapon::~CVehicleWeapon( ) +{ + Term(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::Activate() +// +// PURPOSE: Activate the vehicle weapon... +// +// ----------------------------------------------------------------------- // + +bool CVehicleWeapon::Activate() +{ + if( !m_pWeapon || !m_pAmmo ) return false; + + // reset any necessary data + ResetData(); + + // initialize the animations for this model + InitAnimations(); + + // create all client fx + CreatePVAttachClientFX(); + CreateMuzzleFlash(); + CreateOverheatFx( ); + + // Create Player-View attachments.. + + g_pPVAttachmentMgr->CreatePVAttachments( m_hObject ); + + SetState( W_IDLE ); + + return true; +} + + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleWeapon::Deactivate() +// +// PURPOSE: Put the vehicle weapon into an inactive state... +// +// ----------------------------------------------------------------------- // + +void CVehicleWeapon::Deactivate() +{ + // set the state to inactave + SetState( W_INACTIVE ); + + // turn off all keyframed ClientFX + for ( CLIENTFX_LINK_NODE* pNode = m_KeyframedClientFX.m_pNext; pNode != NULL; pNode = pNode->m_pNext ) + { + // turn off the effect + g_pClientFXMgr->ShutdownClientFX( &pNode->m_Link ); + } + + // destroy the list of keyframed ClientFX + m_KeyframedClientFX.DeleteList(); + + // remove player-view attachments + g_pPVAttachmentMgr->RemovePVAttachments(); + + // remove all client fx + RemoveMuzzleFlash(); + RemoveOverheatFx( ); + RemovePVAttachClientFX(); + + KillLoopSound(); +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleWeapon::SetVehicleWeaponModel() +// +// PURPOSE: Set the model to use for the vehicle weapon... +// +// ----------------------------------------------------------------------- // + +void CVehicleWeapon::SetVehicleWeaponModel( HOBJECT hObj ) +{ + m_hObject = hObj; + + // Make sure the model is can recieve model keys... + + g_pCommonLT->SetObjectFlags( m_hObject, OFT_Client, CF_NOTIFYMODELKEYS, CF_NOTIFYMODELKEYS ); +} + +// ----------------------------------------------------------------------- // +// +// FUNCTION: CVehicleWeapon::InitAnimations() +// +// PURPOSE: Set the animations... +// +// ----------------------------------------------------------------------- // + +void CVehicleWeapon::InitAnimations( bool bAllowSelectOverride /*= false*/ ) +{ + ASSERT( 0 != m_hObject ); + + m_nSelectAni = INVALID_ANI; + m_nDeselectAni = INVALID_ANI; + m_nReloadAni = INVALID_ANI; + + m_nAltSelectAni = INVALID_ANI; + m_nAltDeselectAni = INVALID_ANI; + m_nAltDeselect2Ani = INVALID_ANI; + m_nAltReloadAni = INVALID_ANI; + + m_nPreFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szPreFireAnimationName ); + m_nPostFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szPostFireAnimationName ); + m_nFullSpeedPreFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szFullSpeedPreFireAniName ); + m_nFullSpeedPostFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szFullSpeedPostFireAniName ); + m_nBrakePreFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szBrakePreFireAniName ); + m_nBrakePostFireAni = g_pLTClient->GetAnimIndex( m_hObject, s_szBrakePostFireAniName ); + + char buf[30]; + int i; + + for( i = 0; i < WM_MAX_IDLE_ANIS; ++i ) + { + sprintf( buf, "%s%d", s_szIdleAnimationBasename, i ); + m_nIdleAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if( i > 0 ) + { + sprintf( buf, "%s%d", s_szFireAnimationBasename, i ); + } + else + { + sprintf( buf, s_szFireAnimationName ); + } + + m_nFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if( i > 0 ) + { + sprintf( buf, "%s%d", s_szFullSpeedFireAniName, i ); + } + else + { + sprintf( buf, s_szFullSpeedFireAniName ); + } + + m_nFullSpeedFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if( i > 0 ) + { + sprintf( buf, "%s%d", s_szBrakeFireAniName, i ); + } + else + { + sprintf( buf, s_szBrakeFireAniName ); + } + + m_nBrakeFireAnis[ i ] = g_pLTClient->GetAnimIndex( m_hObject, buf ); + } + + for( i = 0; i < WM_MAX_ALTIDLE_ANIS; ++i ) + { + m_nAltIdleAnis[ i ] = INVALID_ANI; + } + + for( i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + m_nAltFireAnis[ i ] = INVALID_ANI; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::PlayFireAnimation() +// +// PURPOSE: Set model to firing animation. If the model has a PreFire animation +// we will play that first and then play the Fire animation. If the model +// has a PostFire animation we will play that as soon as the Fire ani is done. +// +// ----------------------------------------------------------------------- // + +bool CVehicleWeapon::PlayFireAnimation( bool bResetAni ) +{ + return CClientWeapon::PlayFireAnimation( bResetAni ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::IsPreFireAni +// +// PURPOSE: Is the passed in animation a pre-fire animation +// +// ----------------------------------------------------------------------- // + +bool CVehicleWeapon::IsPreFireAni( uint32 dwAni ) const +{ + if( INVALID_ANI == dwAni ) + { + return false; + } + + if( (dwAni == m_nPreFireAni) || (dwAni == m_nFullSpeedPreFireAni) || (dwAni == m_nBrakePreFireAni) ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::GetPreFireAni +// +// PURPOSE: Get the pre-fire animation +// +// ----------------------------------------------------------------------- // + +uint32 CVehicleWeapon::GetPreFireAni( ) const +{ + if( m_bVehicleBrakeOn ) + { + return m_nBrakePreFireAni; + } + else if( m_bVehicleAtFullSpeed ) + { + return m_nFullSpeedPreFireAni; + } + + return m_nPreFireAni; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::IsFireAni() +// +// PURPOSE: Is the passed in animation any one of the fire animations +// +// ----------------------------------------------------------------------- // + +bool CVehicleWeapon::IsFireAni( uint32 dwAni, bool bCheckNormalOnly /*= false*/) const +{ + if( INVALID_ANI == dwAni ) + { + return false; + } + + // First check normal fire anis... + + int i; + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if ( m_nFireAnis[ i ] == dwAni ) + { + return true; + } + } + + // Then FullSpeed fire anis... + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if( m_nFullSpeedFireAnis[ i ] == dwAni ) + { + return true; + } + } + + // Then Brake fire anis... + + for( i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + if( m_nBrakeFireAnis[ i ] == dwAni ) + { + return true; + } + } + + // Finially Alt fire anis... + + for( i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + if ( m_nAltFireAnis[ i ] == dwAni ) + { + return true; + } + } + + // We want to see if the animation is a PreFire ani or PostFire ani because + // they can be thought of as part of the entire Fire animation sequence. + if ( !bCheckNormalOnly && (IsPreFireAni( dwAni ) || IsPostFireAni( dwAni )) ) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::GetFireAni() +// +// PURPOSE: Get the fire animation based on the fire type +// +// ----------------------------------------------------------------------- // + +uint32 CVehicleWeapon::GetFireAni( FireType eFireType ) const +{ + int nNumValid = 0; + + if( ((eFireType == FT_ALT_FIRE) && CanUseAltFireAnis()) || + (m_bUsingAltFireAnis && (eFireType == FT_NORMAL_FIRE)) ) + { + uint32 dwValidAltFireAnis[ WM_MAX_ALTFIRE_ANIS ]; + + for( int i = 0; i < WM_MAX_ALTFIRE_ANIS; ++i ) + { + if( INVALID_ANI != m_nAltFireAnis[ i ] ) + { + dwValidAltFireAnis[ nNumValid ] = m_nAltFireAnis[ i ]; + ++nNumValid; + } + } + + if ( nNumValid > 0 ) + { + return dwValidAltFireAnis[ GetRandom( 0, (nNumValid - 1) ) ]; + } + } + else if( eFireType == FT_NORMAL_FIRE ) + { + uint32 dwValidFireAnis[ WM_MAX_FIRE_ANIS ]; + + for( int i = 0; i < WM_MAX_FIRE_ANIS; ++i ) + { + // If the vehicle's brake is on grab the brake fire anis otherwise try the + // fullspeed anis and the finially the normal idle fire anis... + + if( m_bVehicleBrakeOn ) + { + if( INVALID_ANI != m_nBrakeFireAnis[ i ] ) + { + dwValidFireAnis[ nNumValid ] = m_nBrakeFireAnis[ i ]; + ++nNumValid; + } + } + else if( m_bVehicleAtFullSpeed ) + { + if( INVALID_ANI != m_nFullSpeedFireAnis[ i ] ) + { + dwValidFireAnis[ nNumValid ] = m_nFullSpeedFireAnis[ i ]; + ++nNumValid; + } + } + else + { + if( INVALID_ANI != m_nFireAnis[ i ] ) + { + dwValidFireAnis[ nNumValid ] = m_nFireAnis[ i ]; + ++nNumValid; + } + } + } + + if ( nNumValid > 0 ) + { + return dwValidFireAnis[ GetRandom( 0, ( nNumValid - 1 ) ) ]; + } + } + + return INVALID_ANI; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::IsPostFireAni +// +// PURPOSE: Is the passed in animation a post-fire animation +// +// ----------------------------------------------------------------------- // + +bool CVehicleWeapon::IsPostFireAni( uint32 dwAni ) const +{ + if( INVALID_ANI == dwAni ) + { + return false; + } + + if( (dwAni == m_nPostFireAni) || (dwAni == m_nFullSpeedPostFireAni) || (dwAni == m_nBrakePostFireAni)) + { + return true; + } + + return false; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVehicleWeapon::GetPostFireAni +// +// PURPOSE: get the post-fire animation +// +// ----------------------------------------------------------------------- // + +uint32 CVehicleWeapon::GetPostFireAni() const +{ + if( m_bVehicleBrakeOn ) + { + return m_nBrakePostFireAni; + } + else if( m_bVehicleAtFullSpeed ) + { + return m_nFullSpeedPostFireAni; + } + + return m_nPostFireAni; +} diff --git a/Jack/ClientShellDLL/VehicleWeapon.h b/Jack/ClientShellDLL/VehicleWeapon.h new file mode 100644 index 00000000..57358dd3 --- /dev/null +++ b/Jack/ClientShellDLL/VehicleWeapon.h @@ -0,0 +1,85 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VehicleWeapon.h +// +// PURPOSE : The VehicleWeapon object +// +// CREATED : 3/5/03 +// +// (c) 2003 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __VEHICLE_WEAPON_H__ +#define __VEHICLE_WEAPON_H__ + +// +// Includes.. +// + + #include "ClientWeapon.h" + +class CVehicleWeapon : public CClientWeapon +{ + public : // Methods... + + CVehicleWeapon( ); + virtual ~CVehicleWeapon( ); + + virtual bool Activate( ); + virtual void Deactivate( ); + + virtual void InitAnimations( bool bAllowSelectOverride = false ); + + // These should not be implemented for Vehcile Weapons... + + virtual void ResetWeaponFilenames() {}; + virtual void UpdateBob( LTFLOAT fWidth, LTFLOAT fHeight ) {}; + virtual void Select() {}; + virtual bool Deselect( ClientWeaponCallBackFn cbFn, void *pData ) { return false; } + virtual void SetVisible( bool bVis = true ) {}; + virtual void SetDisable( bool bDisable = true ) { m_bDisabled = bDisable; } + + virtual void SetVehicleWeaponModel( HOBJECT hObj ); + + virtual void SetVehicleAtFullSpeed( bool bFullSpeed ) { m_bVehicleAtFullSpeed = bFullSpeed; } + virtual void SetVehicleBrakeOn( bool bBrake ) { m_bVehicleBrakeOn = bBrake; } + + protected : // Methods... + + virtual bool CreateWeaponModel() { return false; } + virtual void RemoveWeaponModel() { m_hObject = NULL; } + + virtual bool PlaySelectAnimation() { return false; } + virtual bool PlayDeselectAnimation() { return false; } + virtual bool PlayReloadAnimation() { return false; } + virtual bool PlayIdleAnimation() { return false; } + virtual bool PlayFireAnimation( bool bResetAni ); + + // pre fire animation + virtual bool IsPreFireAni( uint32 dwAni ) const; + virtual uint32 GetPreFireAni() const; + + // fire animation + virtual bool IsFireAni( uint32 dwAni , bool bCheckNormalOnly = false) const; + virtual uint32 GetFireAni( FireType eFireType=FT_NORMAL_FIRE ) const; + + // post fire + virtual bool IsPostFireAni( uint32 dwAni ) const; + virtual uint32 GetPostFireAni() const; + + + protected : // Members... + + bool m_bVehicleAtFullSpeed; + HMODELANIM m_nFullSpeedFireAnis[WM_MAX_FIRE_ANIS]; // Fire animations + HMODELANIM m_nFullSpeedPreFireAni; // Optional animation to play before the actual fire ani + HMODELANIM m_nFullSpeedPostFireAni; // Optional animation to play after the actual fire ani + + bool m_bVehicleBrakeOn; + HMODELANIM m_nBrakeFireAnis[WM_MAX_FIRE_ANIS]; // Fire animations + HMODELANIM m_nBrakePreFireAni; // Optional animation to play before the actual fire ani + HMODELANIM m_nBrakePostFireAni; // Optional animation to play after the actual fire ani +}; + +#endif // __VEHICLE_WEAPON_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/VisionModeMgr.cpp b/Jack/ClientShellDLL/VisionModeMgr.cpp new file mode 100644 index 00000000..2008a5a4 --- /dev/null +++ b/Jack/ClientShellDLL/VisionModeMgr.cpp @@ -0,0 +1,128 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VisionModeMgr.cpp +// +// PURPOSE : Manages the switching and updating of vision modes. +// +// CREATED : 8/13/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +// +// Includes... +// + +#include "stdafx.h" +#include "VisionModeMgr.h" +#include "PlayerMgr.h" + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVisionModeMgr::CVisionModeMgr +// +// PURPOSE: Constructor +// +// ----------------------------------------------------------------------- // + +CVisionModeMgr::CVisionModeMgr( ) +: m_eVisionMode ( eVM_OFF ), + m_eLastVisionMode ( eVM_OFF ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVisionModeMgr::~CVisionModeMgr +// +// PURPOSE: Destructor +// +// ----------------------------------------------------------------------- // + +CVisionModeMgr::~CVisionModeMgr( ) +{ + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVisionModeMgr::NextMode +// +// PURPOSE: Set the vision mode to be the next one +// +// ----------------------------------------------------------------------- // + +void CVisionModeMgr::NextMode( ) +{ + m_eVisionMode = (eVisionMode)(m_eVisionMode + 1); + + if( m_eVisionMode >= eVM_NUMVISIONMODES ) + m_eVisionMode = eVM_OFF; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVisionModeMgr::PrevMode +// +// PURPOSE: Set the vision mode to be the previous one +// +// ----------------------------------------------------------------------- // + +void CVisionModeMgr::PrevMode( ) +{ + m_eVisionMode = (eVisionMode)(m_eVisionMode - 1); + + if( m_eVisionMode < eVM_OFF ) + m_eVisionMode = (eVisionMode)(eVM_NUMVISIONMODES - 1); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CVisionModeMgr::Update +// +// PURPOSE: Update the current vision mode. +// +// ----------------------------------------------------------------------- // + +void CVisionModeMgr::Update( ) +{ + // Only Disable/Enable modes if there was a change + + if( m_eVisionMode == m_eLastVisionMode ) + return; + + // Disable the last vision mode + + switch( m_eLastVisionMode ) + { + case eVM_OFF : + break; + + case eVM_SPY : + g_pPlayerMgr->EndSpyVision(); + break; + }; + + // Enable the new vision mode + + switch( m_eVisionMode ) + { + case eVM_OFF : + break; + + case eVM_SPY : + g_pPlayerMgr->BeginSpyVision(); + break; + + }; + + m_eLastVisionMode = m_eVisionMode; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/VisionModeMgr.h b/Jack/ClientShellDLL/VisionModeMgr.h new file mode 100644 index 00000000..ec3e8093 --- /dev/null +++ b/Jack/ClientShellDLL/VisionModeMgr.h @@ -0,0 +1,43 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VisionModeMgr.h +// +// PURPOSE : Manages the switching and updating of vision modes. +// +// CREATED : 8/13/01 +// +// (c) 2001-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __VISION_MODE_MGR_H__ +#define __VISION_MODE_MGR_H__ + +enum eVisionMode +{ + eVM_OFF = 0, + eVM_SPY, + eVM_NUMVISIONMODES, +}; + +class CVisionModeMgr +{ + public: // Methods... + + CVisionModeMgr(); + ~CVisionModeMgr(); + + inline eVisionMode GetMode() const { return m_eVisionMode; } + + void NextMode(); + void PrevMode(); + + void Update(); + + private: // Members + + eVisionMode m_eVisionMode; + eVisionMode m_eLastVisionMode; +}; + +#endif // __VISION_MODE_MGR_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/VolumeBrushFX.h b/Jack/ClientShellDLL/VolumeBrushFX.h new file mode 100644 index 00000000..9c45d9f0 --- /dev/null +++ b/Jack/ClientShellDLL/VolumeBrushFX.h @@ -0,0 +1,184 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : VolumeBrushFX.h +// +// PURPOSE : VolumeBrush special fx class - Definition +// +// CREATED : 4/1/98 +// +// ----------------------------------------------------------------------- // + +#ifndef __VOLUME_BRUSH_FX_H__ +#define __VOLUME_BRUSH_FX_H__ + +#include "SpecialFX.h" +#include "ContainerCodes.h" +#include "SurfaceDefs.h" + +struct VBCREATESTRUCT : public SFXCREATESTRUCT +{ + VBCREATESTRUCT(); + + virtual void Read(ILTMessage_Read *pMsg); + + LTBOOL bFogEnable; + LTFLOAT fFogFarZ; + LTFLOAT fFogNearZ; + LTVector vFogColor; + LTVector vTintColor; + LTVector vLightAdd; + uint8 nSoundFilterId; + LTBOOL bCanPlayMoveSnds; + SurfaceType eSurfaceOverrideType; + + LTVector vCurrent; + float fGravity; + float fViscosity; + float fFriction; + PlayerPhysicsModel ePPhysicsModel; +}; + +inline VBCREATESTRUCT::VBCREATESTRUCT() +{ + bFogEnable = LTFALSE; + fFogFarZ = 0.0f; + fFogNearZ = 0.0f; + nSoundFilterId = 0; + bCanPlayMoveSnds = LTTRUE; + eSurfaceOverrideType = ST_UNKNOWN; + + vFogColor.Init(); + vTintColor.Init(); + vLightAdd.Init(); + + vCurrent.Init(); + fGravity = 0.0f; + fViscosity = 0.0f; + fFriction = 0.0f; + ePPhysicsModel = PPM_NORMAL; +} + +inline void VBCREATESTRUCT::Read(ILTMessage_Read *pMsg) +{ + bFogEnable = pMsg->Readbool(); + fFogFarZ = pMsg->Readfloat(); + fFogNearZ = pMsg->Readfloat(); + vFogColor = pMsg->ReadLTVector(); + vTintColor = pMsg->ReadLTVector(); + vLightAdd = pMsg->ReadLTVector(); + nSoundFilterId = pMsg->Readuint8(); + bCanPlayMoveSnds = pMsg->Readbool(); + eSurfaceOverrideType = (SurfaceType)pMsg->Readuint8(); + + vCurrent = pMsg->ReadLTVector(); + fGravity = pMsg->Readfloat(); + fViscosity = pMsg->Readfloat(); + fFriction = pMsg->Readfloat(); + ePPhysicsModel = (PlayerPhysicsModel)pMsg->Readuint8(); +} + +class CVolumeBrushFX : public CSpecialFX +{ + public : + + CVolumeBrushFX() : CSpecialFX() + { + m_vFogColor.Init(); + m_vTintColor.Init(255.0f, 255.0f, 255.0f); + m_vLightAdd.Init(); + + m_bFogEnable = LTFALSE; + m_fFogFarZ = 0.0f; + m_fFogNearZ = 0.0f; + m_nSoundFilterId = 0; + m_bCanPlayMoveSnds = LTTRUE; + m_eSurfaceOverrideType = ST_UNKNOWN; + } + + virtual LTBOOL Update() { return !m_bWantRemove; } + + LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct) + { + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + VBCREATESTRUCT* pVB = (VBCREATESTRUCT*)psfxCreateStruct; + + m_bFogEnable = pVB->bFogEnable; + m_fFogFarZ = pVB->fFogFarZ; + m_fFogNearZ = pVB->fFogNearZ; + m_vFogColor = pVB->vFogColor; + m_vTintColor = pVB->vTintColor; + m_vLightAdd = pVB->vLightAdd; + m_nSoundFilterId = pVB->nSoundFilterId; + m_bCanPlayMoveSnds = pVB->bCanPlayMoveSnds; + m_eSurfaceOverrideType = pVB->eSurfaceOverrideType; + + m_vCurrent = pVB->vCurrent; + m_fGravity = pVB->fGravity; + m_fViscosity = pVB->fViscosity; + m_fFriction = pVB->fFriction; + m_ePPhysicsModel = pVB->ePPhysicsModel; + + uint16 nCode; + g_pLTClient->GetContainerCode(m_hServerObject, &nCode); + m_eContainerCode = (ContainerCode)nCode; + + return LTTRUE; + } + + LTBOOL CreateObject(ILTClient* pClientDE) + { + if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE; + + // Special case for liquid volume brushes, set the FLAG_RAYHIT + // flag... + + if (m_hServerObject && IsLiquid(GetCode())) + { + g_pCommonLT->SetObjectFlags(m_hServerObject, OFT_Flags, FLAG_RAYHIT, FLAG_RAYHIT); + } + + return LTTRUE; + } + + LTBOOL IsFogEnable() const { return m_bFogEnable; } + LTVector GetFogColor() const { return m_vFogColor; } + LTFLOAT GetFogFarZ() const { return m_fFogFarZ; } + LTFLOAT GetFogNearZ() const { return m_fFogNearZ; } + LTVector GetTintColor() const { return m_vTintColor; } + LTVector GetLightAdd() const { return m_vLightAdd; } + uint8 GetSoundFilterId() const { return m_nSoundFilterId; } + LTBOOL CanPlayMovementSounds() const { return m_bCanPlayMoveSnds; } + SurfaceType GetSurfaceOverride() const { return m_eSurfaceOverrideType; } + + LTFLOAT GetGravity() const { return m_fGravity; } + LTFLOAT GetFriction() const { return m_fFriction; } + LTFLOAT GetViscosity() const { return m_fViscosity; } + ContainerCode GetCode() const { return m_eContainerCode; } + LTVector GetCurrent() const { return m_vCurrent; } + PlayerPhysicsModel GetPhysicsModel() const { return m_ePPhysicsModel; } + + virtual uint32 GetSFXID() { return SFX_VOLUMEBRUSH_ID; } + + protected : + + LTBOOL m_bFogEnable; + LTFLOAT m_fFogFarZ; + LTFLOAT m_fFogNearZ; + LTVector m_vFogColor; + LTVector m_vTintColor; + LTVector m_vLightAdd; + uint8 m_nSoundFilterId; + LTBOOL m_bCanPlayMoveSnds; + SurfaceType m_eSurfaceOverrideType; + + LTVector m_vCurrent; + float m_fGravity; + float m_fViscosity; + float m_fFriction; + PlayerPhysicsModel m_ePPhysicsModel; + + ContainerCode m_eContainerCode; +}; + +#endif // __VOLUME_BRUSH_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeaponChooser.cpp b/Jack/ClientShellDLL/WeaponChooser.cpp new file mode 100644 index 00000000..6e08d8ec --- /dev/null +++ b/Jack/ClientShellDLL/WeaponChooser.cpp @@ -0,0 +1,368 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : WeaponChooser.cpp +// +// PURPOSE : In-game popup for choosing weapons +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "WeaponChooser.h" +#include "InterfaceMgr.h" +#include "GameClientShell.h" +#include "WinUtil.h" +#include "SoundMgr.h" +#include "LayoutMgr.h" +#include "ClientWeaponBase.h" +#include "ClientWeaponMgr.h" + +extern CGameClientShell* g_pGameClientShell; + + +namespace +{ + const int kLastAmmo = 1; + const int kCurrWeapon = 1; + const int kCurrAmmo = 0; + const float kfDelayTime = 1.5f; + VarTrack g_vtChooserAutoSwitchTime; + VarTrack g_vtChooserAutoSwitchFreq; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CWeaponChooser::CWeaponChooser() +{ + m_nWeapon = -1; + m_nClass = 0; + m_bIsOpen = false; +} + +CWeaponChooser::~CWeaponChooser() +{ +} + +void CWeaponChooser::Init() +{ + g_vtChooserAutoSwitchTime.Init(g_pLTClient, "ChooserAutoSwitchTime", NULL, 0.175f); + g_vtChooserAutoSwitchFreq.Init(g_pLTClient, "ChooserAutoSwitchFreq", NULL, 0.1f); +} + +void CWeaponChooser::Term() +{ + if (m_bIsOpen) + Close(); +} + +bool CWeaponChooser::Open(uint8 nClass) +{ + if (m_bIsOpen && nClass == m_nClass) + return true; + + CClientWeaponMgr const *pClientWeaponMgr = g_pPlayerMgr->GetClientWeaponMgr(); + IClientWeaponBase const *pClientWeapon = pClientWeaponMgr->GetCurrentClientWeapon(); + if( !pClientWeapon ) + return false; + + if (!m_bIsOpen) + m_nWeapon = pClientWeapon->GetWeaponId(); + + uint8 nWeapon = m_nWeapon; + while( true ) + { + // Get the next weapon. + nWeapon = pClientWeaponMgr->GetNextWeaponId( nWeapon, nClass ); + WEAPON const* pWeapon = g_pWeaponMgr->GetWeapon( nWeapon ); + + // If we couldn't find a weapon, we can't go to a next one. + if( !pWeapon ) + { + // If we didn't find a weapon and we're staying within our + // current weapon's class, then just open the chooser. + if( g_pWeaponMgr->GetWeaponClass(m_nWeapon) == nClass ) + break; + + if (!m_bIsOpen) + m_nWeapon = -1; + g_pHUDMgr->QueueUpdate(kHUDChooser); + return false; + } + + if( pWeapon->bShowChooser ) + { + break; + } + } + + m_bIsOpen = true; + m_nClass = nClass; + + m_AutoCloseTimer.Start(kfDelayTime); + g_pHUDMgr->QueueUpdate(kHUDChooser); + return true; +} + +void CWeaponChooser::Close() +{ + if (!m_bIsOpen) + return; + + m_bIsOpen = false; + m_nClass = 0; + m_AutoCloseTimer.Stop(); + m_AutoSwitchTimer.Stop(); + m_NextWeaponKeyDownTimer.Stop(); + m_PrevWeaponKeyDownTimer.Stop(); + + if (g_pHUDMgr) + g_pHUDMgr->QueueUpdate(kHUDChooser); + +} + +void CWeaponChooser::NextWeapon(uint8 nClass) +{ + if (nClass > g_pWeaponMgr->GetNumWeaponClasses()) + nClass = m_nClass; + + uint8 nWeapon = m_nWeapon; + while( true ) + { + // get the next avail weapon + nWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetNextWeaponId( nWeapon, nClass ); + WEAPON const* pWeapon = g_pWeaponMgr->GetWeapon( nWeapon ); + + // If we couldn't find a weapon, or we wrapped around, we can't find a next one. + if( !pWeapon || nWeapon == m_nWeapon ) + return; + + if( pWeapon->bShowChooser ) + { + m_nWeapon = nWeapon; + break; + } + } + + g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect()); + + m_AutoCloseTimer.Start(kfDelayTime); + m_NextWeaponKeyDownTimer.Start(g_vtChooserAutoSwitchTime.GetFloat()); + g_pHUDMgr->QueueUpdate(kHUDChooser); + +} + +void CWeaponChooser::PrevWeapon() +{ + uint8 nWeapon = m_nWeapon; + while( true ) + { + // get the next avail weapon + nWeapon = g_pPlayerMgr->GetClientWeaponMgr()->GetPrevWeaponId( nWeapon, 0 ); + WEAPON const* pWeapon = g_pWeaponMgr->GetWeapon( nWeapon ); + + // If we couldn't find a weapon, or we wrapped around, we can't find a next one. + if( !pWeapon || nWeapon == m_nWeapon ) + return; + + if( pWeapon->bShowChooser ) + { + m_nWeapon = nWeapon; + break; + } + } + + g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect()); + + m_AutoCloseTimer.Start(kfDelayTime); + m_PrevWeaponKeyDownTimer.Start(g_vtChooserAutoSwitchTime.GetFloat()); + g_pHUDMgr->QueueUpdate(kHUDChooser); +} + +void CWeaponChooser::EndAutoSwitch(bool bNextWeaponKey) +{ + if (bNextWeaponKey) + m_NextWeaponKeyDownTimer.Stop(); + else + m_PrevWeaponKeyDownTimer.Stop(); + m_AutoSwitchTimer.Stop(); +} + +void CWeaponChooser::Update() +{ + // If Weapon chooser is being drawn, see if we want to change weapons... + if (!IsOpen()) return; + + + // See if we should close ourselves... + if (m_AutoCloseTimer.On() && m_AutoCloseTimer.Stopped()) + { + g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect()); + Close(); + } + else if (m_NextWeaponKeyDownTimer.On() && m_NextWeaponKeyDownTimer.Stopped()) + { + // See if we should switch to the next weapon... + if (m_AutoSwitchTimer.On()) + { + if (m_AutoSwitchTimer.Stopped()) + { + NextWeapon(-1); + g_pPlayerMgr->ChangeWeapon( GetCurrentSelection() ); + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + else + { + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + else if (m_PrevWeaponKeyDownTimer.On() && m_PrevWeaponKeyDownTimer.Stopped()) + { + if (m_PrevWeaponKeyDownTimer.On()) + { + if (m_AutoSwitchTimer.Stopped()) + { + PrevWeapon(); + g_pPlayerMgr->ChangeWeapon( GetCurrentSelection()); + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + else + { + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CAmmoChooser::CAmmoChooser() +{ + m_nAmmo = -1; + m_bIsOpen = false; + +} + +CAmmoChooser::~CAmmoChooser() +{ +} + +void CAmmoChooser::Init() +{ + +} + + +void CAmmoChooser::Term() +{ + if (m_bIsOpen) + Close(); +} + +bool CAmmoChooser::Open() +{ + // Don't allow the chooser to be opened if we're selecting/deselecting a + // weapon... + + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + + WeaponState eState = pClientWeapon->GetState(); + if (W_DESELECT == eState || W_SELECT == eState) return false; + + + if (m_bIsOpen) + return true; + + + m_nAmmo = pClientWeapon->GetAmmoId(); + + if (m_nAmmo == pClientWeapon->GetNextAvailableAmmo()) + { + m_nAmmo = -1; + m_bIsOpen = false; + return false; + } + m_bIsOpen = true; + + m_AutoCloseTimer.Start(kfDelayTime); + g_pHUDMgr->QueueUpdate(kHUDChooser); + return true; +} + +void CAmmoChooser::Close() +{ + if (!m_bIsOpen) + return; + m_bIsOpen = false; + m_AutoCloseTimer.Stop(); + m_AutoSwitchTimer.Stop(); + m_NextAmmoKeyDownTimer.Stop(); + if (g_pHUDMgr) + g_pHUDMgr->QueueUpdate(kHUDChooser); + +} + +void CAmmoChooser::NextAmmo() +{ + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( !pClientWeapon ) + { + return; + } + + m_nAmmo = pClientWeapon->GetNextAvailableAmmo(m_nAmmo); + + g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect()); + + m_AutoCloseTimer.Start(kfDelayTime); + m_NextAmmoKeyDownTimer.Start(g_vtChooserAutoSwitchTime.GetFloat()); + g_pHUDMgr->QueueUpdate(kHUDChooser); +} + +void CAmmoChooser::EndAutoSwitch() +{ + m_NextAmmoKeyDownTimer.Stop(); + m_AutoSwitchTimer.Stop(); +} + +void CAmmoChooser::Update() +{ + // If Weapon chooser is being drawn, see if we want to change weapons... + if (!IsOpen()) return; + + + // See if we should close ourselves... + + // See if we should switch to the next ammo type... + if (m_AutoCloseTimer.On() && m_AutoCloseTimer.Stopped()) + { + g_pClientSoundMgr->PlayInterfaceSound((char*)g_pInterfaceResMgr->GetSoundSelect()); + Close(); + } + else if (m_NextAmmoKeyDownTimer.On() && m_NextAmmoKeyDownTimer.Stopped()) + { + if (m_AutoSwitchTimer.On()) + { + if (m_AutoSwitchTimer.Stopped()) + { + NextAmmo(); + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + else + { + m_AutoSwitchTimer.Start(g_vtChooserAutoSwitchFreq.GetFloat()); + } + } + + + +} diff --git a/Jack/ClientShellDLL/WeaponChooser.h b/Jack/ClientShellDLL/WeaponChooser.h new file mode 100644 index 00000000..0be823bb --- /dev/null +++ b/Jack/ClientShellDLL/WeaponChooser.h @@ -0,0 +1,79 @@ +// WeaponChooser.h: interface for the CWeaponChooser class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(_WEAPONCHOOSER_H_) +#define _WEAPONCHOOSER_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "LTGUIMgr.h" +#include "Timer.h" + +class CWeaponChooser +{ +public: + CWeaponChooser(); + virtual ~CWeaponChooser(); + + void Init(); + void Term(); + + bool Open(uint8 nClass); + void Close(); + bool IsOpen() {return m_bIsOpen;} + + void NextWeapon(uint8 nClass); + void PrevWeapon(); + void EndAutoSwitch(bool bNextWeaponKey = true); + + void Update(); + + uint8 GetCurrentSelection() {return m_nWeapon;} + uint8 GetCurrentClass() {return m_nClass;} + +private: + + uint8 m_nWeapon; + uint8 m_nClass; + bool m_bIsOpen; + + CTimer m_NextWeaponKeyDownTimer; + CTimer m_PrevWeaponKeyDownTimer; + CTimer m_AutoSwitchTimer; + CTimer m_AutoCloseTimer; +}; + +class CAmmoChooser +{ +public: + CAmmoChooser(); + virtual ~CAmmoChooser(); + + void Init(); + void Term(); + + bool Open(); + void Close(); + bool IsOpen() {return m_bIsOpen;} + + void NextAmmo(); + void EndAutoSwitch(); + + void Update(); + + uint8 GetCurrentSelection() {return m_nAmmo;} + +private: + uint8 m_nAmmo; + bool m_bIsOpen; + + CTimer m_NextAmmoKeyDownTimer; + CTimer m_AutoSwitchTimer; + CTimer m_AutoCloseTimer; + +}; + +#endif // !defined(_WEAPONCHOOSER_H_) \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeaponFX.cpp b/Jack/ClientShellDLL/WeaponFX.cpp new file mode 100644 index 00000000..34e608f0 --- /dev/null +++ b/Jack/ClientShellDLL/WeaponFX.cpp @@ -0,0 +1,1521 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : WeaponFX.cpp +// +// PURPOSE : Weapon special FX - Implementation +// +// CREATED : 2/22/98 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "WeaponFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "WeaponFXTypes.h" +#include "GameClientShell.h" +#include "MarkSFX.h" +#include "ParticleShowerFX.h" +#include "DynamicLightFX.h" +#include "BulletTrailFX.h" +#include "MsgIDs.h" +#include "ShellCasingFX.h" +#include "ParticleExplosionFX.h" +#include "BaseScaleFX.h" +#include "DebrisFX.h" +#include "RandomSparksFX.h" +#include "iltphysics.h" +#include "MuzzleFlashFX.h" +#include "SurfaceFunctions.h" +#include "VarTrack.h" +#include "PolyDebrisFX.h" +#include "CharacterFX.h" +#include "CMoveMgr.h" +#include "ClientWeaponBase.h" +#include "ClientMultiplayerMgr.h" + +static uint32 s_nNumShells = 0; + +VarTrack g_cvarShowFirePath; +VarTrack g_cvarLightBeamColorDelta; +VarTrack g_cvarImpactPitchShift; +VarTrack g_cvarFlyByRadius; +VarTrack g_vtBloodSplatsMinNum; +VarTrack g_vtBloodSplatsMaxNum; +VarTrack g_vtBloodSplatsMinLifetime; +VarTrack g_vtBloodSplatsMaxLifetime; +VarTrack g_vtBloodSplatsMinScale; +VarTrack g_vtBloodSplatsMaxScale; +VarTrack g_vtBloodSplatsRange; +VarTrack g_vtBloodSplatsPerturb; +VarTrack g_vtBigBloodSizeScale; +VarTrack g_vtBigBloodLifeScale; +VarTrack g_vtCreatePolyDebris; +VarTrack g_vtWeaponFXMinImpactDot; +VarTrack g_vtWeaponFXMinFireDot; +VarTrack g_vtWeaponFXUseFOVPerformance; +VarTrack g_vtWeaponFXMaxFireDist; +VarTrack g_vtWeaponFXMaxImpactDist; +VarTrack g_vtWeaponFXMaxMultiImpactDist; +VarTrack g_vtMultiDing; + +LTBOOL g_bCanSeeImpactPos = LTTRUE; +LTBOOL g_bCanSeeFirePos = LTTRUE; +LTBOOL g_bDistantFirePos = LTFALSE; +LTBOOL g_bDistantImpactPos = LTFALSE; + +//Function to handle filtering of the intersect segment calls needed by the blood splats +bool BloodSplatFilterFn(HOBJECT hTest, void *pUserData) +{ + // Check for the object type. We only want to be blocked by world models + uint32 nObjType; + if(g_pLTClient->Common()->GetObjectType(hTest, &nObjType) != LT_OK) + return false; + + if(nObjType != OT_WORLDMODEL) + return false; + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::Init +// +// PURPOSE: Init the weapon fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeaponFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + WCREATESTRUCT w; + + w.hServerObj = hServObj; + w.hObjectHit = pMsg->ReadObject(); + w.hFiredFrom = pMsg->ReadObject(); + w.nWeaponId = pMsg->Readuint8(); + w.nAmmoId = pMsg->Readuint8(); + w.nSurfaceType = pMsg->Readuint8(); + w.wIgnoreFX = pMsg->Readuint16(); + w.nShooterId = pMsg->Readuint8(); + w.vFirePos = pMsg->ReadLTVector(); + w.vPos = pMsg->ReadLTVector(); + w.vSurfaceNormal = pMsg->ReadLTVector(); + w.eImpactType = static_cast< IMPACT_TYPE >( pMsg->Readuint8() ); + + // make sure the impact type is valid + ASSERT( ( 0 <= w.eImpactType ) && ( IMPACT_TYPE_COUNT > w.eImpactType ) ); + + return Init(&w); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::Init +// +// PURPOSE: Init the weapon fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeaponFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CSpecialFX::Init(psfxCreateStruct)) return LTFALSE; + + WCREATESTRUCT* pCS = (WCREATESTRUCT*)psfxCreateStruct; + + m_nWeaponId = pCS->nWeaponId; + m_nAmmoId = pCS->nAmmoId; + m_eSurfaceType = (SurfaceType)pCS->nSurfaceType; + m_wIgnoreFX = pCS->wIgnoreFX; + + m_hObjectHit = pCS->hObjectHit; + m_hFiredFrom = pCS->hFiredFrom; // LTNULL + m_vFirePos = pCS->vFirePos; + m_vPos = pCS->vPos; + m_vSurfaceNormal = pCS->vSurfaceNormal; + m_vSurfaceNormal.Normalize(); + + m_eCode = CC_NO_CONTAINER; + m_eFirePosCode = CC_NO_CONTAINER; + + m_pAmmo = g_pWeaponMgr->GetAmmo(m_nAmmoId); + if (!m_pAmmo) return LTFALSE; + + m_pWeapon = g_pWeaponMgr->GetWeapon(m_nWeaponId); + if (!m_pWeapon) return LTFALSE; + + m_fInstDamage = (LTFLOAT) m_pAmmo->nInstDamage; + m_fAreaDamage = (LTFLOAT) m_pAmmo->nAreaDamage; + + m_nShooterId = pCS->nShooterId; + m_bLocal = pCS->bLocal; + + // type of impact FX to play + m_eImpactType = pCS->eImpactType; + + if (!g_cvarShowFirePath.IsInitted()) + { + g_cvarShowFirePath.Init(g_pLTClient, "ShowFirePath", NULL, -1.0f); + } + + if (!g_cvarLightBeamColorDelta.IsInitted()) + { + g_cvarLightBeamColorDelta.Init(g_pLTClient, "LightBeamColorDelta", NULL, 50.0f); + } + + if (!g_cvarImpactPitchShift.IsInitted()) + { + g_cvarImpactPitchShift.Init(g_pLTClient, "PitchShiftImpact", NULL, -1.0f); + } + + if (!g_cvarFlyByRadius.IsInitted()) + { + g_cvarFlyByRadius.Init(g_pLTClient, "FlyByRadius", NULL, 600.0f); + } + + if (!g_vtBloodSplatsMinNum.IsInitted()) + { + g_vtBloodSplatsMinNum.Init(g_pLTClient, "BloodSplatsMinNum", NULL, 3.0f); + } + + if (!g_vtBloodSplatsMaxNum.IsInitted()) + { + g_vtBloodSplatsMaxNum.Init(g_pLTClient, "BloodSplatsMaxNum", NULL, 10.0f); + } + + if (!g_vtBloodSplatsMinLifetime.IsInitted()) + { + g_vtBloodSplatsMinLifetime.Init(g_pLTClient, "BloodSplatsMinLifetime", NULL, 5.0f); + } + + if (!g_vtBloodSplatsMaxLifetime.IsInitted()) + { + g_vtBloodSplatsMaxLifetime.Init(g_pLTClient, "BloodSplatsMaxLifetime", NULL, 10.0f); + } + + if (!g_vtBloodSplatsMinScale.IsInitted()) + { + g_vtBloodSplatsMinScale.Init(g_pLTClient, "BloodSplatsMinScale", NULL, 0.01f); + } + + if (!g_vtBloodSplatsMaxScale.IsInitted()) + { + g_vtBloodSplatsMaxScale.Init(g_pLTClient, "BloodSplatsMaxScale", NULL, 0.05f); + } + + if (!g_vtBloodSplatsRange.IsInitted()) + { + g_vtBloodSplatsRange.Init(g_pLTClient, "BloodSplatsRange", NULL, 500.0f); + } + + if (!g_vtBloodSplatsPerturb.IsInitted()) + { + g_vtBloodSplatsPerturb.Init(g_pLTClient, "BloodSplatsPerturb", NULL, 100.0f); + } + + if (!g_vtBigBloodSizeScale.IsInitted()) + { + g_vtBigBloodSizeScale.Init(g_pLTClient, "BigBloodSizeScale", NULL, 5.0f); + } + + if (!g_vtBigBloodLifeScale.IsInitted()) + { + g_vtBigBloodLifeScale.Init(g_pLTClient, "BigBloodLifeScale", NULL, 3.0f); + } + + if (!g_vtCreatePolyDebris.IsInitted()) + { + g_vtCreatePolyDebris.Init(g_pLTClient, "CreatePolyDebris", NULL, 1.0f); + } + + if (!g_vtWeaponFXMinFireDot.IsInitted()) + { + g_vtWeaponFXMinFireDot.Init(g_pLTClient, "WeaponFXMinFireDot", NULL, 0.6f); + } + + if (!g_vtWeaponFXMinImpactDot.IsInitted()) + { + g_vtWeaponFXMinImpactDot.Init(g_pLTClient, "WeaponFXMinImpactDot", NULL, 0.6f); + } + + if (!g_vtWeaponFXUseFOVPerformance.IsInitted()) + { + g_vtWeaponFXUseFOVPerformance.Init(g_pLTClient, "WeaponFXUseFOVPerformance", NULL, 1.0f); + } + + if (!g_vtWeaponFXMaxFireDist.IsInitted()) + { + g_vtWeaponFXMaxFireDist.Init(g_pLTClient, "WeaponFXMaxFireDist", NULL, 1000.0f); + } + + if (!g_vtWeaponFXMaxImpactDist.IsInitted()) + { + g_vtWeaponFXMaxImpactDist.Init(g_pLTClient, "WeaponFXMaxImpactDist", NULL, 1000.0f); + } + + if (!g_vtWeaponFXMaxMultiImpactDist.IsInitted()) + { + g_vtWeaponFXMaxMultiImpactDist.Init(g_pLTClient, "WeaponFXMaxMultiImpactDist", NULL, 300.0f); + } + + if (!g_vtMultiDing.IsInitted()) + { + g_vtMultiDing.Init(g_pLTClient, "WeaponFXMultiImpactDing", NULL, 1.0f); + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateObject +// +// PURPOSE: Create the various fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeaponFX::CreateObject(ILTClient* pClientDE) +{ + if (!CSpecialFX::CreateObject(pClientDE) || !g_pWeaponMgr) return LTFALSE; + + CGameSettings* pSettings = g_pInterfaceMgr->GetSettings(); + if (!pSettings) return LTFALSE; + + // Make sure the parent has updated their attachments. + g_pLTClient->ProcessAttachments( m_hFiredFrom ); + + // Set up our data members... + + // Set the local client id... + + uint32 dwId; + g_pLTClient->GetLocalClientID(&dwId); + m_nLocalId = (uint8)dwId; + + + m_nDetailLevel = pSettings->SpecialFXSetting(); + + // Fire pos may get tweaked a little... + + m_vFirePos = CalcFirePos(m_vFirePos); + + m_vDir = m_vPos - m_vFirePos; + m_fFireDistance = m_vDir.Length(); + m_vDir.Normalize(); + + m_rSurfaceRot = LTRotation(m_vSurfaceNormal, LTVector(0.0f, 1.0f, 0.0f)); + m_rDirRot = LTRotation(m_vDir, LTVector(0.0f, 1.0f, 0.0f)); + + SetupExitInfo(); + + + + // Calculate if the camera can see the fire position and the impact + // position... + + g_bCanSeeImpactPos = LTTRUE; + g_bCanSeeFirePos = LTTRUE; + g_bDistantImpactPos = LTFALSE; + g_bDistantFirePos = LTFALSE; + + if (g_vtWeaponFXUseFOVPerformance.GetFloat()) + { + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + LTVector vCameraPos, vF, vDir; + LTRotation rCameraRot; + g_pLTClient->GetObjectPos(hCamera, &vCameraPos); + g_pLTClient->GetObjectRotation(hCamera, &rCameraRot); + vF = rCameraRot.Forward(); + + vDir = m_vPos - vCameraPos; + LTFLOAT fImpactDist = vDir.Length(); + + if (fImpactDist > g_vtWeaponFXMaxImpactDist.GetFloat()) + { + g_bDistantImpactPos = LTTRUE; + } + + vDir.Normalize(); + + LTFLOAT fMul = vDir.Dot(vF); + g_bCanSeeImpactPos = (fMul < g_vtWeaponFXMinImpactDot.GetFloat() ? LTFALSE : LTTRUE); + + // In multiplayer we need to account for impacts that occur around + // our camera that we didn't cause (this is also an issue in single + // player, but due to the singler player gameplay dynamics it isn't + // as noticeable)... + + if (!g_bCanSeeImpactPos && IsMultiplayerGame()) + { + // Somebody else shot this...if the impact is close enough, we + // "saw" it... + if (m_nLocalId != m_nShooterId && fImpactDist <= g_vtWeaponFXMaxMultiImpactDist.GetFloat()) + { + g_bCanSeeImpactPos = LTTRUE; + } + } + + vDir = m_vFirePos - vCameraPos; + + if (vDir.Length() > g_vtWeaponFXMaxFireDist.GetFloat()) + { + g_bDistantFirePos = LTTRUE; + } + + vDir.Normalize(); + + fMul = vDir.Dot(vF); + g_bCanSeeFirePos = (fMul < g_vtWeaponFXMinFireDot.GetFloat() ? LTFALSE : LTTRUE); + } + + + + // Determine what container the sfx is in... + + HLOCALOBJ objList[1]; + LTVector vTestPos = m_vPos + m_vSurfaceNormal; // Test a little closer... + uint32 dwNum = ::GetPointContainers(vTestPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (g_pLTClient->GetContainerCode(objList[0], &dwCode)) + { + m_eCode = (ContainerCode)dwCode; + } + } + + // Determine if the fire point is in liquid + + vTestPos = m_vFirePos + m_vDir; // Test a little further in... + dwNum = ::GetPointContainers(vTestPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (g_pLTClient->GetContainerCode(objList[0], &dwCode)) + { + m_eFirePosCode = (ContainerCode)dwCode; + } + } + + + if (IsLiquid(m_eCode)) + { + m_wImpactFX = m_pAmmo->pUWImpactFX ? m_pAmmo->pUWImpactFX->nFlags : 0; + } + else + { + m_wImpactFX = m_pAmmo->pImpactFX ? m_pAmmo->pImpactFX->nFlags : 0; + } + + m_wFireFX = m_pAmmo->pFireFX ? m_pAmmo->pFireFX->nFlags : 0; + + // Assume alt-fire, silenced, and tracer...these will be cleared by + // IgnoreFX if not used... + + m_wFireFX |= WFX_ALTFIRESND | WFX_SILENCED | WFX_TRACER; + + // Assume impact ding, it will be cleared if not used... + + m_wImpactFX |= WFX_IMPACTDING; + + // Clear all the fire fx we want to ignore... + + m_wFireFX &= ~m_wIgnoreFX; + m_wImpactFX &= ~m_wIgnoreFX; + + + // See if this is a redundant weapon fx (i.e., this client shot the + // weapon so they've already seen this fx)... + + if ( g_pClientMultiplayerMgr->IsConnectedToRemoteServer( )) + { + if (m_pAmmo->eType != PROJECTILE) + { + if (!m_bLocal && m_nLocalId >= 0 && m_nLocalId == m_nShooterId) + { + if (m_wImpactFX & WFX_IMPACTDING) + { + if (g_vtMultiDing.GetFloat()) + { + PlayImpactDing(); + } + } + + return LTFALSE; + } + } + } + + + // Show the fire path...(debugging...) + + if (g_cvarShowFirePath.GetFloat() > 0) + { + PLFXCREATESTRUCT pls; + + pls.vStartPos = m_vFirePos; + pls.vEndPos = m_vPos; + pls.vInnerColorStart = LTVector(GetRandom(127.0f, 255.0f), GetRandom(127.0f, 255.0f), GetRandom(127.0f, 255.0f)); + pls.vInnerColorEnd = pls.vInnerColorStart; + pls.vOuterColorStart = LTVector(0, 0, 0); + pls.vOuterColorEnd = LTVector(0, 0, 0); + pls.fAlphaStart = 1.0f; + pls.fAlphaEnd = 1.0f; + pls.fMinWidth = 0; + pls.fMaxWidth = 10; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fLifeTime = 10.0f; + pls.fAlphaLifeTime = 10.0f; + pls.fPerturb = 0.0f; + pls.bAdditive = LTFALSE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.nNumSegments = 2; + + CSpecialFX* pFX = g_pGameClientShell->GetSFXMgr()->CreateSFX(SFX_POLYLINE_ID, &pls); + if (pFX) pFX->Update(); + } + + + // If the surface is the sky, don't create any impact related fx... + + if (m_eSurfaceType != ST_SKY || (m_wImpactFX & WFX_IMPACTONSKY)) + { + CreateWeaponImpactFX(); + + if (g_bCanSeeImpactPos) + { + if ((m_wImpactFX & WFX_MARK) && ShowsMark(m_eSurfaceType) && (LTBOOL)GetConsoleInt("MarkShow", 1)) + { + LTBOOL bCreateMark = LTTRUE; + if (g_bDistantImpactPos && m_nLocalId == m_nShooterId) + { + // Assume we'll see the mark if we're zoomed in ;) + bCreateMark = g_pPlayerMgr->IsZoomed(); + } + + if (bCreateMark) + { + CreateMark(m_vPos, m_vSurfaceNormal, m_rSurfaceRot, m_eSurfaceType); + } + } + + CreateSurfaceSpecificFX(); + } + + PlayImpactSound(); + } + + + if (IsBulletTrailWeapon()) + { + if (IsLiquid(m_eFirePosCode)) + { + if (m_nDetailLevel != RS_LOW) + { + CreateBulletTrail(m_vFirePos); + } + } + } + + + // No tracers under water... + + if ((LTBOOL)GetConsoleInt("Tracers", 1) && (m_wFireFX & WFX_TRACER) && !IsLiquid(m_eCode)) + { + CreateTracer(); + } + + CreateWeaponBeamFX(); + + if (g_bCanSeeFirePos) + { + CreateMuzzleFX(); + + if (!g_bDistantFirePos && (LTBOOL)GetConsoleInt("ShellCasings", 1) && (m_wFireFX & WFX_SHELL)) + { + CreateShell(); + } + + } + + if ((m_wFireFX & WFX_FIRESOUND) || (m_wFireFX & WFX_ALTFIRESND) || (m_wFireFX & WFX_SILENCED)) + { + PlayFireSound(); + } + + // Only do fly-by sounds for weapons that leave bullet trails...that + // we didn't fire ;) + + if (IsBulletTrailWeapon() && (m_nLocalId != m_nShooterId)) + { + PlayBulletFlyBySound(); + } + + + return LTFALSE; // Just delete me, I'm done :) +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::SetupExitInfo +// +// PURPOSE: Setup our exit info +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::SetupExitInfo() +{ + m_eExitSurface = ST_UNKNOWN; + m_vExitPos = m_vFirePos; + m_vExitNormal = m_vDir; + m_eExitCode = CC_NO_CONTAINER; + + if (m_nDetailLevel == RS_LOW) return; + + // Determine if there is an "exit" surface... + + IntersectQuery qInfo; + IntersectInfo iInfo; + + qInfo.m_From = m_vFirePos + m_vDir; + qInfo.m_To = m_vFirePos - m_vDir; + + qInfo.m_Flags = INTERSECT_OBJECTS | IGNORE_NONSOLID | INTERSECT_HPOLY; + + if (g_pLTClient->IntersectSegment(&qInfo, &iInfo)) + { + m_eExitSurface = GetSurfaceType(iInfo); + m_vExitNormal = iInfo.m_Plane.m_Normal; + m_vExitPos = iInfo.m_Point + m_vDir; + + // Determine what container the sfx is in... + + HLOCALOBJ objList[1]; + LTVector vTestPos = m_vExitPos + m_vExitNormal; // Test a little closer... + uint32 dwNum = ::GetPointContainers(vTestPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0 && objList[0]) + { + uint16 dwCode; + if (g_pLTClient->GetContainerCode(objList[0], &dwCode)) + { + m_eExitCode = (ContainerCode)dwCode; + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateExitDebris +// +// PURPOSE: Create any exit debris +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateExitDebris() +{ + // Create the surface specific exit fx... + + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(m_eExitSurface); + if (!pSurf || !pSurf->bCanShootThrough) return; + + if (IsLiquid(m_eExitCode)) + { + // Create underwater fx... + + CLIENTFX_CREATESTRUCT fxCS( pSurf->szUWExitFXName, 0, m_vPos ); + fxCS.m_vTargetNorm = m_vSurfaceNormal; + g_pClientFXMgr->CreateClientFX(NULL, fxCS, LTTRUE ); + } + else + { + // Create normal fx... + + CLIENTFX_CREATESTRUCT fxCS( pSurf->szExitFXName, 0, m_vPos ); + fxCS.m_vTargetNorm = m_vSurfaceNormal; + g_pClientFXMgr->CreateClientFX(NULL, fxCS, LTTRUE ); + } + + + // Determine if we should create a beam of light through the surface... + + // CreateLightBeamFX(pSurf); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateLightBeamFX +// +// PURPOSE: Create a light beam (if appropriate) +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateLightBeamFX(SURFACE* pSurf) +{ + if (!pSurf) return; + + LTVector vEnterColor, vExitColor; + if (g_pLTClient->GetPointShade(&m_vExitPos, &vExitColor) == LT_OK) + { + // Get the EnterColor value... + + LTVector vEnterPos = m_vExitPos - (m_vExitNormal * float(pSurf->nMaxShootThroughThickness + 1)); + + if (g_pLTClient->GetPointShade(&vEnterPos, &vEnterColor) == LT_OK) + { + // Calculate the difference in light value... + + LTFLOAT fMaxEnter = Max(vEnterColor.x, vEnterColor.y); + fMaxEnter = Max(fMaxEnter, vEnterColor.z); + + LTFLOAT fMaxExit = Max(vExitColor.x, vExitColor.y); + fMaxExit = Max(fMaxExit, vExitColor.z); + + if (fabs((double)(fMaxExit - fMaxEnter)) >= g_cvarLightBeamColorDelta.GetFloat()) + { + LTVector vStartPoint, vDir; + if (fMaxEnter > fMaxExit) + { + vStartPoint = m_vExitPos; + vDir = m_vDir; + } + else + { + vStartPoint = vEnterPos; + vDir = -m_vDir; + } + + PLFXCREATESTRUCT pls; + + pls.vStartPos = vStartPoint; + pls.vEndPos = vStartPoint + (vDir * GetRandom(100.0, 150.0f)); + pls.vInnerColorStart = LTVector(230, 230, 230); + pls.vInnerColorEnd = pls.vInnerColorStart; + pls.vOuterColorStart = LTVector(0, 0, 0); + pls.vOuterColorEnd = LTVector(0, 0, 0); + pls.fAlphaStart = 0.5f; + pls.fAlphaEnd = 0.0f; + pls.fMinWidth = 0; + pls.fMaxWidth = 10; + pls.fMinDistMult = 1.0f; + pls.fMaxDistMult = 1.0f; + pls.fLifeTime = 10.0f; + pls.fAlphaLifeTime = 10.0f; + pls.fPerturb = 0.0f; + pls.bAdditive = LTFALSE; + pls.nWidthStyle = PLWS_CONSTANT; + pls.nNumSegments = 1; + + CSpecialFX* pFX = g_pGameClientShell->GetSFXMgr()->CreateSFX(SFX_POLYLINE_ID, &pls); + if (pFX) pFX->Update(); + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateExitMark +// +// PURPOSE: Create any exit surface marks +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateExitMark() +{ + if (m_eExitSurface != ST_UNKNOWN && ShowsMark(m_eExitSurface)) + { + LTRotation rNormRot(m_vExitNormal, LTVector(0.0f, 1.0f, 0.0f)); + + CreateMark(m_vExitPos, m_vExitNormal, rNormRot, m_eExitSurface); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateMark +// +// PURPOSE: Create a mark fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateMark(const LTVector &vPos, const LTVector &vNorm, const LTRotation &rRot, + SurfaceType eType) +{ + IMPACTFX* pImpactFX = m_pAmmo->pImpactFX; + + if (IsLiquid(m_eCode)) + { + pImpactFX = m_pAmmo->pUWImpactFX; + } + + if (!pImpactFX) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + MARKCREATESTRUCT mark; + + mark.m_vPos = vPos; + mark.m_Rotation = rRot; + + // Randomly rotate the bullet hole... + + mark.m_Rotation.Rotate(vNorm, GetRandom(0.0f, MATH_CIRCLE)); + + mark.m_fScale = pImpactFX->fMarkScale; + mark.nAmmoId = m_nAmmoId; + mark.nSurfaceType = eType; + + psfxMgr->CreateSFX(SFX_MARK_ID, &mark); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateBulletTrail +// +// PURPOSE: Create a bullet trail fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateBulletTrail(const LTVector &vStartPos) +{ + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + LTVector vColor1, vColor2; + vColor1.Init(200.0f, 200.0f, 200.0f); + vColor2.Init(255.0f, 255.0f, 255.0f); + + BTCREATESTRUCT bt; + + bt.vStartPos = vStartPos; + bt.vDir = m_vDir; + bt.vColor1 = vColor1; + bt.vColor2 = vColor2; + bt.fLifeTime = 0.5f; + bt.fFadeTime = 0.3f; + bt.fRadius = 400.0f; + bt.fGravity = 0.0f; + bt.fNumParticles = (m_nDetailLevel == RS_MED) ? 15.0f : 30.0f; + + CSpecialFX* pFX = psfxMgr->CreateSFX(SFX_BULLETTRAIL_ID, &bt); + + // Let each bullet trail do its initial update... + + if (pFX) pFX->Update(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateTracer +// +// PURPOSE: Create a tracer fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateTracer() +{ + if (!m_pAmmo || !m_pAmmo->pTracerFX) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + if (m_nDetailLevel != RS_HIGH && GetRandom(1, 2) == 1) return; + + // Create tracer... + + if (m_fFireDistance > 100.0f) + { + TRCREATESTRUCT tracer; + + // Make tracer start in front of gun a little ways... + + tracer.vStartPos = m_vFirePos; // + (m_vDir * 25.0f); + tracer.vEndPos = m_vPos; + tracer.pTracerFX = m_pAmmo->pTracerFX; + + CSpecialFX* pFX = psfxMgr->CreateSFX(SFX_TRACER_ID, &tracer); + if (pFX) pFX->Update(); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateWeaponBeamFX() +// +// PURPOSE: Create the weapon beam fx... +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateWeaponBeamFX() +{ + // Do fire fx beam fx... + + if (m_pAmmo->pFireFX && m_pAmmo->pFireFX->szBeamFXName ) + { + CLIENTFX_CREATESTRUCT fxInit( m_pAmmo->pFireFX->szBeamFXName, 0, m_vFirePos ); + fxInit.m_bUseTargetData = true; + fxInit.m_vTargetPos = m_vPos; + g_pClientFXMgr->CreateClientFX( LTNULL, fxInit, LTTRUE ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateWeaponImpactFX() +// +// PURPOSE: Create weapon specific fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateWeaponImpactFX() +{ + // Only do impact fx if the client can see the impact position + // or the impact fx may last a little while... + + if (g_bCanSeeImpactPos || m_pAmmo->fProgDamage > 0.0f || m_pAmmo->nAreaDamage > 0) + { + IFXCS cs; + cs.eCode = m_eCode; + cs.eSurfType = m_eSurfaceType; + cs.rSurfRot = m_rSurfaceRot; + cs.vDir = m_vDir; + cs.vPos = m_vPos; + cs.vSurfNormal = m_vSurfaceNormal; + cs.fBlastRadius = (LTFLOAT) m_pAmmo->nAreaDamageRadius; + cs.fTintRange = (LTFLOAT) (m_pAmmo->nAreaDamageRadius * 5); + + //determine if the object we hit is a model + bool bHitMovable = false; + + if(m_hObjectHit) + { + //we hit an object, assume it is movable + bHitMovable = true; + + uint32 nType; + if(g_pLTClient->Common()->GetObjectType(m_hObjectHit, &nType) == LT_OK) + { + //we only want to hit non-movable world models + if(nType == OT_WORLDMODEL) + { + uint32 nUserFlags; + if(g_pLTClient->Common()->GetObjectFlags(m_hObjectHit, OFT_User, nUserFlags) == LT_OK) + { + //see if it is movable + if(!(nUserFlags & USRFLG_MOVEABLE)) + { + bHitMovable = false; + } + } + } + } + } + + + if(bHitMovable && m_pAmmo->pMoveableImpactOverrideFX) + { + // Create the model hit effect + g_pFXButeMgr->CreateImpactFX(m_pAmmo->pMoveableImpactOverrideFX, cs); + } + else if (IsLiquid(m_eCode)) + { + // Create underwater weapon fx... + g_pFXButeMgr->CreateImpactFX(m_pAmmo->pUWImpactFX, cs); + } + else if ( IMPACT_TYPE_RICOCHET == m_eImpactType ) + { + // Create a ricochet weapon fx... + ASSERT( 0 != m_pAmmo->pProjectileFX ); + IMPACTFX *pRicochetFX = + g_pFXButeMgr->GetImpactFX( + m_pAmmo->pProjectileFX->szRicochetFXName + ); + g_pFXButeMgr->CreateImpactFX(pRicochetFX, cs); + } + else if ( IMPACT_TYPE_BLOCKED == m_eImpactType ) + { + // Create a blocked weapon fx... + g_pFXButeMgr->CreateImpactFX(m_pAmmo->pBlockedFX, cs); + } + else if ( IMPACT_TYPE_IMPACT == m_eImpactType ) + { + // Create a ricochet weapon fx... + g_pFXButeMgr->CreateImpactFX(m_pAmmo->pImpactFX, cs); + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateSurfaceSpecificFX() +// +// PURPOSE: Create surface specific fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateSurfaceSpecificFX() +{ + CUserProfile* pProfile = g_pProfileMgr->GetCurrentProfile(); + if (!pProfile) return; + + // Only check for visibility if we actually have an object... + + if( m_hObjectHit ) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags( m_hObjectHit, OFT_Flags, dwFlags ); + + // Don't do surface fx on an invisible object... + + if( !(dwFlags & FLAG_VISIBLE) ) + return; + } + + if (m_eSurfaceType == ST_FLESH) + { + // Only do gore if specified... + + if (pProfile->m_bGore) + { + if ( m_pAmmo->eType == VECTOR && + (m_pAmmo->eInstDamageType == DT_BULLET || + m_pAmmo->eInstDamageType == DT_MELEE || + m_pAmmo->eInstDamageType == DT_SWORD) ) + { + CreateBloodSplatFX(); + } + } + } + + if ((m_wFireFX & WFX_EXITMARK) && ShowsMark(m_eExitSurface)) + { + CreateExitMark(); + } + + if (m_wFireFX & WFX_EXITDEBRIS) + { + CreateExitDebris(); + } + + if (!m_pAmmo->pImpactFX) return; + if (!m_pAmmo->pImpactFX->bDoSurfaceFX) return; + + + // Create the surface specific fx... + + SURFACE* pSurf = g_pSurfaceMgr->GetSurface(m_eSurfaceType); + if (pSurf) + { + if (IsLiquid(m_eCode)) + { + // Create underwater fx... + + CLIENTFX_CREATESTRUCT fxCS( pSurf->szUWImpactFXName, 0, m_vPos ); + fxCS.m_vTargetNorm = m_vSurfaceNormal; + g_pClientFXMgr->CreateClientFX(NULL, fxCS, LTTRUE ); + } + else + { + // Create normal fx... + + CLIENTFX_CREATESTRUCT fxCS( pSurf->szImpactFXName, 0, m_vPos ); + fxCS.m_vTargetNorm = m_vSurfaceNormal; + g_pClientFXMgr->CreateClientFX(NULL, fxCS, LTTRUE ); + } + } +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateMuzzleLight() +// +// PURPOSE: Create a muzzle light associated with this fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateMuzzleLight() +{ + // Check to see if we have the silencer... + + if (m_wFireFX & WFX_SILENCED) return; + + if (m_nLocalId != m_nShooterId || !g_pPlayerMgr->IsFirstPerson()) + { + MUZZLEFLASHCREATESTRUCT mf; + + mf.pWeapon = m_pWeapon; + mf.hParent = m_hFiredFrom; + mf.vPos = m_vFirePos; + mf.rRot = m_rDirRot; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + psfxMgr->CreateSFX(SFX_MUZZLEFLASH_ID, &mf); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::IsBulletTrailWeapon() +// +// PURPOSE: See if this weapon creates bullet trails in liquid +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeaponFX::IsBulletTrailWeapon() +{ + return (m_pAmmo->eInstDamageType == DT_BULLET); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::PlayImpactSound() +// +// PURPOSE: Play a surface impact sound if appropriate +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::PlayImpactSound() +{ + IMPACTFX* pImpactFX = m_pAmmo->pImpactFX; + + if (IsLiquid(m_eCode)) + { + pImpactFX = m_pAmmo->pUWImpactFX; + } + + if (!pImpactFX) return; + + + if (m_pAmmo->eType == VECTOR) + { + if ((m_nDetailLevel == RS_LOW) && GetRandom(1, 2) != 1) return; + else if ((m_nDetailLevel == RS_MED) && GetRandom(1, 3) == 1) return; + } + + char* pSnd = GetImpactSound(m_eSurfaceType, m_nAmmoId); + LTFLOAT fSndRadius = (LTFLOAT) pImpactFX->nSoundRadius; + + if( pSnd && pSnd[0] ) + { + uint32 dwFlags = 0; + float fPitchShift = 1.0f; + if (g_cvarImpactPitchShift.GetFloat() > 0.0f) + { + dwFlags |= PLAYSOUND_CTRL_PITCH; + } + + uint8 nVolume = IsLiquid(m_eCode) ? 50 : 100; + g_pClientSoundMgr->PlaySoundFromPos((LTVector)m_vPos, pSnd, fSndRadius, + SOUNDPRIORITY_MISC_LOW, dwFlags, nVolume, fPitchShift); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateMuzzleFX() +// +// PURPOSE: Create muzzle specific fx +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateMuzzleFX() +{ + // See who we are creating the effect for + if (m_nLocalId == m_nShooterId) + { + //This is the player we are creating the effect for, so we only need to create + //the ammo specific effects to give them feedback. So if it exists, create + //that effect + if( m_pAmmo->pFireFX && m_pAmmo->pFireFX->szFXName[0] ) + { + CLIENTFX_CREATESTRUCT fxcs( m_pAmmo->pFireFX->szFXName, 0, m_vFirePos ); + fxcs.m_vTargetNorm = m_vDir; + fxcs.m_hParent = m_hFiredFrom; + g_pClientFXMgr->CreateClientFX(NULL, fxcs, LTTRUE ); + } + } + else + { + //This is the AI shooting, we just need to create an effect as specified + //by the hand held position + if(m_pWeapon->szHHMuzzleFxName[0]) + { + CLIENTFX_CREATESTRUCT fxcs( m_pWeapon->szHHMuzzleFxName, 0, m_vFirePos ); + fxcs.m_vTargetNorm = m_vDir; + g_pClientFXMgr->CreateClientFX(NULL, fxcs, LTTRUE ); + } + } + +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateShell() +// +// PURPOSE: Create shell casing +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateShell() +{ + SHELLCREATESTRUCT sc; + sc.rRot = m_rDirRot; + sc.vStartPos = CalcBreachPos(m_vFirePos); + sc.nWeaponId = m_nWeaponId; + sc.nAmmoId = m_nAmmoId; + sc.b3rdPerson = LTTRUE; + + + // See if this is our local client who fired and if we're in first + // person... + + if (m_nLocalId == m_nShooterId && g_pPlayerMgr->IsFirstPerson()) + { + sc.b3rdPerson = LTFALSE; + + // Add on the player's velocity... + + HOBJECT hObj = g_pPlayerMgr->GetMoveMgr()->GetObject(); + if (hObj) + { + g_pPhysicsLT->GetVelocity(hObj, &sc.vStartVel); + } + } + + g_pGameClientShell->GetSFXMgr()->CreateSFX(SFX_SHELLCASING_ID, &sc); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CreateBloodSplatFX +// +// PURPOSE: Create the blood splats, etc. +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::CreateBloodSplatFX() +{ + CUserProfile* pProfile = g_pProfileMgr->GetCurrentProfile(); + if (!pProfile || !pProfile->m_bGore) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr) return; + + CSpecialFX* pFX = LTNULL; + + LTFLOAT fRange = g_vtBloodSplatsRange.GetFloat(); + + // See if we should make some blood splats... + + ClientIntersectQuery iQuery; + IntersectInfo iInfo; + + iQuery.m_From = m_vPos; + + LTVector vDir = m_vDir; + + // Create some blood splats... + + int nNumSplats = GetRandom((int)g_vtBloodSplatsMinNum.GetFloat(), (int)g_vtBloodSplatsMaxNum.GetFloat()); + + LTVector vU, vR; + vU = m_rDirRot.Up(); + vR = m_rDirRot.Right(); + + for (int i=0; i < nNumSplats; i++) + { + LTVector vDir = m_vDir; + + // Perturb direction after first splat... + + if (i > 0) + { + float fPerturb = g_vtBloodSplatsPerturb.GetFloat(); + + float fRPerturb = (GetRandom(-fPerturb, fPerturb))/1000.0f; + float fUPerturb = (GetRandom(-fPerturb, fPerturb))/1000.0f; + + vDir += (vR * fRPerturb); + vDir += (vU * fUPerturb); + } + + iQuery.m_To = vDir * fRange + m_vPos; + iQuery.m_Flags = IGNORE_NONSOLID | INTERSECT_HPOLY | INTERSECT_OBJECTS; + iQuery.m_FilterFn = BloodSplatFilterFn; + iQuery.m_pUserData = NULL; + + if (g_pLTClient->IntersectSegment(&iQuery, &iInfo) && IsMainWorld(iInfo.m_hObject)) + { + SurfaceType eType = GetSurfaceType(iInfo); + SURFACE* pSurface = g_pSurfaceMgr->GetSurface(eType); + + // Don't leave blood on surfaces that can't show marks... + if (!pSurface || !pSurface->bShowsMark) + { + return; + } + + //find the largest splat we can place and still have it fit onto the polygon + float fMaxRadius; + g_pLTClient->GetMaxRadiusInPoly(iInfo.m_hPoly, iInfo.m_Point, fMaxRadius); + + //only bother creating it if it is above some size + if(fMaxRadius > 0.1f) + { + LTBOOL bBigBlood = (LTBOOL)GetConsoleInt("BigBlood", 1); + + // Create a blood splat... + + BSCREATESTRUCT sc; + + sc.rRot = LTRotation(iInfo.m_Plane.m_Normal, LTVector(0.0f, 1.0f, 0.0f)); + + // Randomly rotate the blood splat + + sc.rRot.Rotate(iInfo.m_Plane.m_Normal, GetRandom(0.0f, MATH_CIRCLE)); + + LTVector vTemp = vDir * -2.0f; + sc.vPos = iInfo.m_Point + vTemp; // Off the wall a bit + sc.vVel.Init(0.0f, 0.0f, 0.0f); + + sc.vInitialScale.Init(1.0f, 1.0f, 1.0f); + sc.vInitialScale.x = GetRandom(g_vtBloodSplatsMinScale.GetFloat(), g_vtBloodSplatsMaxScale.GetFloat()); + + if (bBigBlood) sc.vInitialScale.x *= g_vtBigBloodSizeScale.GetFloat(); + + //clamp it to the maximum size + static const uint32 knBloodSize = 64; + sc.vInitialScale.x = LTMIN(sc.vInitialScale.x, fMaxRadius / knBloodSize); + + sc.vInitialScale.y = sc.vInitialScale.x; + sc.vFinalScale = sc.vInitialScale; + + sc.dwFlags = FLAG_VISIBLE | FLAG_ROTATEABLESPRITE | FLAG_NOLIGHT; + sc.fLifeTime = GetRandom(g_vtBloodSplatsMinLifetime.GetFloat(), g_vtBloodSplatsMaxLifetime.GetFloat()); + + if (bBigBlood) sc.fLifeTime *= g_vtBigBloodLifeScale.GetFloat(); + + sc.fInitialAlpha = 1.0f; + sc.fFinalAlpha = 0.0f; + sc.nType = OT_SPRITE; + sc.bMultiply = LTTRUE; + sc.bPausable = LTTRUE; + + char* pBloodFiles[] = + { + "FX\\Test\\Blood\\Spr\\BloodL1.spr", + "FX\\Test\\Blood\\Spr\\BloodL2.spr", + "FX\\Test\\Blood\\Spr\\BloodL3.spr", + "FX\\Test\\Blood\\Spr\\BloodL4.spr" + }; + + sc.pFilename = pBloodFiles[GetRandom(0,3)]; + + pFX = psfxMgr->CreateSFX(SFX_SCALE_ID, &sc); + if (pFX) pFX->Update(); + } + } + else if (i==0) + { + // Didn't hit anything straight back, do don't bother to + // do anymore... + + return; + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::PlayFireSound +// +// PURPOSE: Play the fire sound +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::PlayFireSound() +{ + if (m_nLocalId >= 0 && m_nLocalId == m_nShooterId) + { + return; // This client already heard the sound ;) + } + + PlayerSoundId eSoundId = PSI_FIRE; + + if (m_wFireFX & WFX_SILENCED) + { + eSoundId = PSI_SILENCED_FIRE; + } + else if (m_wFireFX & WFX_ALTFIRESND) + { + eSoundId = PSI_ALT_FIRE; + } + + ::PlayWeaponSound(m_pWeapon, m_vFirePos, eSoundId); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CalcFirePos +// +// PURPOSE: Calculate the fire position based on the FireFrom object +// +// ----------------------------------------------------------------------- // + +LTVector CWeaponFX::CalcFirePos(const LTVector &vFirePos) +{ + if (!m_hFiredFrom) return vFirePos; + + // See if this is our local client who fired, and if so + // only calculate fire position if we are in 3rd person... + + if (m_nLocalId == m_nShooterId) + { + if (g_pPlayerMgr->IsFirstPerson()) return vFirePos; + } + + LTVector vPos; + LTRotation rRot; + if (!GetAttachmentSocketTransform(m_hFiredFrom, "Flash", vPos, rRot)) + { + vPos = vFirePos; + } + + return vPos; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::CalcBreachPos +// +// PURPOSE: Calculate the breach position based on the FireFrom object +// +// ----------------------------------------------------------------------- // + +LTVector CWeaponFX::CalcBreachPos(const LTVector &vBreachPos) +{ + if (!m_hFiredFrom) return vBreachPos; + + // See if this is our local client who fired, and if so + // only calculate fire position if we are in 3rd person... + + LTVector vPos; + if (m_nLocalId == m_nShooterId && g_pPlayerMgr->IsFirstPerson()) + { + IClientWeaponBase *pClientWeapon = g_pPlayerMgr->GetCurrentClientWeapon(); + if ( pClientWeapon ) + { + pClientWeapon->GetShellEjectPos(&vPos); + return vPos; + } + } + + LTRotation rRot; + if (!GetAttachmentSocketTransform(m_hFiredFrom, "Breach", vPos, rRot)) + { + vPos = vBreachPos; + } + + return vPos; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::PlayBulletFlyBySound() +// +// PURPOSE: Play bullet fly by sound (if appropriate) +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::PlayBulletFlyBySound() +{ + if (!m_pWeapon || !m_pAmmo) return; + + if (m_pAmmo->eType != VECTOR) return; + + // Camera pos + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + LTVector vPos; + g_pLTClient->GetObjectPos(hCamera, &vPos); + + // We only play the flyby sound if we won't hear an impact... + + if (m_pAmmo->pImpactFX) + { + LTVector vDist = m_vPos - vPos; + if ( vDist.Length() < (0.75f * float(m_pAmmo->pImpactFX->nSoundRadius)) ) + return; + } + + + // See if the camera is close enough to the bullet path to hear the + // bullet... + + LTFLOAT fRadius = g_cvarFlyByRadius.GetFloat(); + + LTVector vDir = m_vDir; + + const LTVector vRelativePos = vPos - m_vFirePos; + const LTFLOAT fRayDist = vDir.Dot(vRelativePos); + LTVector vBulletDir = (vDir*fRayDist - vRelativePos); + + const LTFLOAT fDistSqr = vBulletDir.MagSqr(); + + if (fDistSqr < fRadius*fRadius) + { + // Play the fly by sound bute.... + + vPos += vBulletDir; + g_pClientSoundMgr->PlaySoundFromPos(vPos, "BulletFlyBy"); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeaponFX::PlayImpactDing() +// +// PURPOSE: Play a impact ding sound if appropriate +// +// ----------------------------------------------------------------------- // + +void CWeaponFX::PlayImpactDing() +{ + if (!IsMultiplayerGame()) return; + + CCharacterFX* pCharFX = g_pPlayerMgr->GetMoveMgr()->GetCharacterFX(); + if (pCharFX) + { + pCharFX->PlayDingSound(); + } +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeaponFX.h b/Jack/ClientShellDLL/WeaponFX.h new file mode 100644 index 00000000..61937a89 --- /dev/null +++ b/Jack/ClientShellDLL/WeaponFX.h @@ -0,0 +1,183 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : WeaponFX.h +// +// PURPOSE : Weapon special fx class - Definition +// +// CREATED : 2/22/98 +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __WEAPON_FX_H__ +#define __WEAPON_FX_H__ + +#include "SpecialFX.h" +#include "SurfaceMgr.h" +#include "WeaponMgr.h" +#include "TracerFX.h" +#include "SmokeFX.h" +#include "ContainerCodes.h" +#include "GameSettings.h" +#include "ImpactType.h" + +struct CScaleFX; + +struct WCREATESTRUCT : public SFXCREATESTRUCT +{ + WCREATESTRUCT(); + + HOBJECT hFiredFrom; + HOBJECT hObjectHit; + uint8 nWeaponId; + uint8 nAmmoId; + uint8 nSurfaceType; + uint16 wIgnoreFX; + LTVector vFirePos; + LTVector vPos; + LTVector vSurfaceNormal; + uint8 nShooterId; + LTBOOL bLocal; + IMPACT_TYPE eImpactType; +}; + +inline WCREATESTRUCT::WCREATESTRUCT() +{ + vFirePos.Init(); + vPos.Init(); + vSurfaceNormal.Init(); + hFiredFrom = LTNULL; + hObjectHit = LTNULL; + nWeaponId = 0; + nAmmoId = 0; + nSurfaceType = 0; + wIgnoreFX = 0; + bLocal = LTFALSE; + nShooterId = -1; +} + + +class CWeaponFX : public CSpecialFX +{ + public : + + CWeaponFX() : CSpecialFX() + { + m_hFiredFrom = LTNULL; + m_nWeaponId = WMGR_INVALID_ID; + m_nAmmoId = WMGR_INVALID_ID; + m_eSurfaceType = ST_UNKNOWN; + m_eExitSurface = ST_UNKNOWN; + m_wImpactFX = 0; + m_wFireFX = 0; + m_wIgnoreFX = 0; + m_fInstDamage = 0; + m_fAreaDamage = 0; + m_nShooterId = -1; + m_nLocalId = -1; + m_bLocal = LTFALSE; + + m_vFirePos.Init(); + m_vPos.Init(); + m_vDir.Init(); + m_vSurfaceNormal.Init(); + m_vExitPos.Init(); + m_vExitNormal.Init(); + + m_rSurfaceRot.Init(); + m_rDirRot.Init(); + + m_eExitCode = CC_NO_CONTAINER; + m_eCode = CC_NO_CONTAINER; + m_eFirePosCode = CC_NO_CONTAINER; + m_fFireDistance = 100.0f; + m_nDetailLevel = RS_HIGH; + + m_pWeapon = LTNULL; + m_pAmmo = LTNULL; + } + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + virtual LTBOOL Update() { return LTFALSE; } + + virtual uint32 GetSFXID() { return SFX_WEAPON_ID; } + + protected : + + HOBJECT m_hFiredFrom; // Who fired the weapon + HOBJECT m_hObjectHit; // The object we hit if any + int m_nWeaponId; // Id of weapon fired + int m_nAmmoId; // Type of ammo used + SurfaceType m_eSurfaceType; // Surface hit by bullet + SurfaceType m_eExitSurface; // Surface bullet is exiting + uint16 m_wFireFX; // Fire FX to create + uint16 m_wImpactFX; // Impact FX to create + uint16 m_wIgnoreFX; // Fire FX to ignore + LTFLOAT m_fInstDamage; // Instantaneous damage (vector) + LTFLOAT m_fAreaDamage; // Area damage (explosion) + LTVector m_vFirePos; // Position bullet was fired from + LTVector m_vPos; // Impact pos + LTVector m_vExitPos; // Bullet exit pos + LTVector m_vExitNormal; // Exit surface normal + + uint8 m_nDetailLevel; // Current detail level setting + + ContainerCode m_eCode; // Container effect is in + ContainerCode m_eFirePosCode; // Container fire pos is in + ContainerCode m_eExitCode; // Container exit pos is in + + LTFLOAT m_fFireDistance; // Distance from fire pos to pos + LTVector m_vDir; // Direction from fire pos to pos + LTVector m_vSurfaceNormal; // Normal of surface of impact + LTRotation m_rSurfaceRot; // Normal of surface (as rotation) + LTRotation m_rDirRot; // Rotation based on m_vDir + + uint8 m_nShooterId; // Client id of the shooter + uint8 m_nLocalId; // Local client id + LTBOOL m_bLocal; // Is this a local fx (only done on this client?) + + LTVector m_vLightColor; // Impact light color + + WEAPON const *m_pWeapon; // Weapon data + AMMO const *m_pAmmo; // Ammo data + + IMPACT_TYPE m_eImpactType; // type of impact FX to play + // NOTE: this can be overridden + // by other effects, such as + // "underwater" + + void SetupExitInfo(); + + void CreateExitMark(); + void CreateExitDebris(); + void CreateMark(const LTVector &vPos, const LTVector &vNorm, const LTRotation &rRot, SurfaceType eType); + void CreateTracer(); + void CreateBulletTrail(const LTVector &vStartPos); + + void CreateWeaponImpactFX(); + void CreateWeaponBeamFX(); + void CreateSurfaceSpecificFX(); + void CreateLightBeamFX(SURFACE* pSurf); + void CreateMuzzleFX(); + void CreateShell(); + void CreateMuzzleLight(); + void PlayImpactSound(); + void PlayFireSound(); + void PlayBulletFlyBySound(); + void PlayImpactDing(); + + void CreateLightFX(); + void CreateBloodSplatFX(); + void CreateLowVectorBloodFX(const LTVector & vVelMin, const LTVector & vVelMax, LTFLOAT fRange); + void CreateMedVectorBloodFX(const LTVector & vVelMin, const LTVector & vVelMax, LTFLOAT fRange); + + LTBOOL IsBulletTrailWeapon(); + + LTVector CalcFirePos(const LTVector &vFirePos); + LTVector CalcBreachPos(const LTVector &vBreachPos); +}; + +#endif // __WEAPON_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeaponStringDefs.h b/Jack/ClientShellDLL/WeaponStringDefs.h new file mode 100644 index 00000000..a8123239 --- /dev/null +++ b/Jack/ClientShellDLL/WeaponStringDefs.h @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------- +// +// MODULE : WeaponStringDefs.h +// +// PURPOSE : Utility functions to retrieve the strings associated with +// weapons and ammo +// +// (c) 2000-2001 Monolith Productions, Inc. All Rights Reserved +// +//------------------------------------------------------------------------- + +#ifndef __WEAPON_STRING_DEFS_H__ +#define __WEAPON_STRING_DEFS_H__ + +#include "clientres.h" +#include "WeaponMgr.h" + +#define WS_ERROR_STRING "Error" + +#include "iclientshell.h" + +inline char* GetWeaponString(uint8 nWeaponId) +{ + if (!g_pLTClient || !g_pWeaponMgr) return WS_ERROR_STRING; + + WEAPON const *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponId); + if (!pWeapon) return WS_ERROR_STRING; + + return pWeapon->szShortName; +} + +inline char* GetAmmoString(int nAmmoId) +{ + if (!g_pLTClient || !g_pWeaponMgr) return WS_ERROR_STRING; + + AMMO const *pAmmo = g_pWeaponMgr->GetAmmo(nAmmoId); + if (!pAmmo) return WS_ERROR_STRING; + + return pAmmo->szShortName; +} + +#endif // __WEAPON_STRING_DEFS_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeatherFX.cpp b/Jack/ClientShellDLL/WeatherFX.cpp new file mode 100644 index 00000000..27004b84 --- /dev/null +++ b/Jack/ClientShellDLL/WeatherFX.cpp @@ -0,0 +1,588 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : WeatherFX.cpp +// +// PURPOSE : Weather special FX - Implementation +// +// CREATED : 3/23/99 +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "WeatherFX.h" +#include "iltclient.h" +#include "ClientUtilities.h" +#include "ParticleSystemFX.h" +#include "SFXMgr.h" +#include "GameClientShell.h" +#include "iltphysics.h" +#include "ClientWeaponUtils.h" +#include "ClientButeMgr.h" +#include "GameButes.h" +#include "SurfaceFunctions.h" + +extern CClientButeMgr* g_pClientButeMgr; + +#define BASE_AREA (1000.0*1000.0*1000.0) // Base cube for particle/line density +#define MAX_SPLASH_VIEW_DIST 2000.0f // Max distance from camera to create splashes +#define RAIN_MIN_ALPHA_SCALE_DIST 4000.0f // Distance from camera for rain to be at min alpha +#define RAIN_FULL_ALPHA_SCALE_DIST 2000.0f // Distance from camera for rain to be normal alpha +#define RAIN_MIN_ALPHA 0.4f +#define RAIN_MAX_ALPHA 0.9f + + +static void HandleRemoveLine(void *pUserData, LSLineStruct* pLine); + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::Init +// +// PURPOSE: Init the weather fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeatherFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + if (!CVolumeBrushFX::Init(psfxCreateStruct) || !g_pClientButeMgr) return LTFALSE; + + WFXCREATESTRUCT* pWFX = (WFXCREATESTRUCT*)psfxCreateStruct; + + m_dwFlags = pWFX->dwFlags; + m_fViewDist = pWFX->fViewDist; + + //m_vRainVel.y = g_pClientButeMgr->GetWeatherAttributeFloat(WEATHER_BUTE_RAINVEL); + //m_vSnowVel.y = g_pClientButeMgr->GetWeatherAttributeFloat(WEATHER_BUTE_SNOWVEL); + + char* pBute = WEATHER_BUTE_RAINVELLIGHT; + if (m_dwFlags & WFLAG_NORMAL_RAIN) + { + pBute = WEATHER_BUTE_RAINVELNORMAL; + } + else if (m_dwFlags & WFLAG_HEAVY_RAIN) + { + pBute = WEATHER_BUTE_RAINVELHEAVY; + } + + m_vRainVel.y = g_pClientButeMgr->GetWeatherAttributeFloat(pBute); + + pBute = WEATHER_BUTE_SNOWVELLIGHT; + if (m_dwFlags & WFLAG_NORMAL_SNOW) + { + pBute = WEATHER_BUTE_SNOWVELNORMAL; + } + else if (m_dwFlags & WFLAG_HEAVY_SNOW) + { + pBute = WEATHER_BUTE_SNOWVELHEAVY; + } + + m_vSnowVel.y = g_pClientButeMgr->GetWeatherAttributeFloat(pBute); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::CreateObject +// +// PURPOSE: Create object(s) associated with weather fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeatherFX::CreateObject(ILTClient *pClientDE) +{ + if (!CVolumeBrushFX::CreateObject(pClientDE) || !g_pClientButeMgr) return LTFALSE; + + // Calculate the bottom of the brush. This is where all "splash" + // effects will be created...(yes this assumes the ground is flat). + + g_pLTClient->GetObjectPos(m_hServerObject, &m_vPos); + g_pPhysicsLT->GetObjectDims(m_hServerObject, &m_vDims); + + m_fFloorY = (m_vPos.y - m_vDims.y) + 1.0f; + m_fArea = (m_vDims.x*2.0f)*(m_vDims.y*2.0f)*(m_vDims.z*2.0f); + + + // Create the fx... + + if (m_dwFlags & WFLAG_SNOW) + { + if (!CreateSnow()) return LTFALSE; + } + + if (m_dwFlags & WFLAG_RAIN) + { + if (!CreateRain()) return LTFALSE; + } + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::CreateSnow +// +// PURPOSE: Create snow +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeatherFX::CreateSnow() +{ + // Create snow particle system(s)... + + if (!m_pClientDE || !m_hServerObject) return LTFALSE; + + LTVector vColor1(255, 255, 255), vColor2(255, 255, 255); + + // Calculate how long the particles should stay alive... + + double fVelY = double(m_vSnowVel.y); + LTFLOAT fLifetime = fabs(fVelY) > 0.01 ? (LTFLOAT) (m_vDims.y*2.0f / fabs(fVelY)) : 0.0f; + + char* pBute = WEATHER_BUTE_SNOWLIGHT; + if (m_dwFlags & WFLAG_NORMAL_SNOW) + { + pBute = WEATHER_BUTE_SNOWNORMAL; + } + else if (m_dwFlags & WFLAG_HEAVY_SNOW) + { + pBute = WEATHER_BUTE_SNOWHEAVY; + } + + LTFLOAT fFlakesPerSec = g_pClientButeMgr->GetWeatherAttributeFloat(pBute); + + // Adjust the number of flakes based on our area... + + fFlakesPerSec *= (LTFLOAT)(m_fArea / BASE_AREA); + + // Create all particles at the top of the brush... + + LTVector vPos, vDims; + vDims = m_vDims; + vPos = m_vPos; + + vPos.y += vDims.y; + vDims.y = 0.0f; + + + char szStr[128] = ""; + g_pClientButeMgr->GetWeatherAttributeString(WEATHER_BUTE_SNOWPARTICLE, szStr, sizeof(szStr)); + if (!szStr[0]) return LTFALSE; + + PSCREATESTRUCT ps; + + ps.fParticlesPerSecond = g_pClientButeMgr->GetWeatherAttributeFloat(pBute); + ps.fParticleRadius = g_pClientButeMgr->GetWeatherAttributeFloat(WEATHER_BUTE_SNOWPARTICLERAD); + ps.hServerObj = m_hServerObject; + ps.vPos = vPos; + ps.vColor1 = vColor1; + ps.vColor2 = vColor2; + ps.vMinVel = m_vSnowVel; + ps.vMaxVel = m_vSnowVel; + ps.dwFlags = 0; + ps.fBurstWait = 0.0f; + ps.vDims = vDims; + ps.fParticleLifetime = fLifetime; + ps.fGravity = 0.0f; + ps.fRotationVelocity = 0.0f; + ps.hstrTextureName = m_pClientDE->CreateString(szStr); + ps.fViewDist = m_fViewDist; + ps.bAdditive = LTTRUE; + + if (!m_Snow.Init(&ps) || !m_Snow.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + + m_Snow.Update(); + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_Snow.GetObject(), &r, &g, &b, &a); + m_pClientDE->SetObjectColor(m_Snow.GetObject(), r, g, b, 0.9f); + + return LTTRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::CreateRain +// +// PURPOSE: Create rain +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeatherFX::CreateRain() +{ + // Create rain line system(s)... + + if (!m_pClientDE || !m_hServerObject) return LTFALSE; + + LTVector vStartColor(.5f, .5f, .5f), vEndColor(.5f, .5f, .5f); + + // Calculate how long the lines should stay alive... + + double fVelY = double(m_vRainVel.y); + LTFLOAT fLifetime = fabs(fVelY) > 0.01 ? (LTFLOAT) (m_vDims.y*2.0f / fabs(fVelY)) : 0.0f; + + + char* pDropsBute = WEATHER_BUTE_RAINLIGHT; + + if (m_dwFlags & WFLAG_NORMAL_RAIN) + { + pDropsBute = WEATHER_BUTE_RAINNORMAL; + } + else if (m_dwFlags & WFLAG_HEAVY_RAIN) + { + pDropsBute = WEATHER_BUTE_RAINHEAVY; + } + + LTFLOAT fDropsPerSec = g_pClientButeMgr->GetWeatherAttributeFloat(pDropsBute); + + + // Adjust the number of drops based on our area... + + fDropsPerSec *= (LTFLOAT)(m_fArea / BASE_AREA); + + + // Create all lines at the top of the brush... + + LTVector vDims = m_vDims; + m_vRainPos = m_vPos; + + m_vRainPos.y += vDims.y; + vDims.y = 0.0f; + + LSCREATESTRUCT ls; + + ls.hServerObj = m_hServerObject; + ls.vPos = m_vRainPos; + ls.vStartColor = vStartColor; + ls.vEndColor = vEndColor; + ls.vMinVel = m_vRainVel; + ls.vMaxVel = m_vRainVel; + ls.fStartAlpha = 0.2f; + ls.fEndAlpha = 0.5f; + ls.fBurstWait = 0.001f; + ls.fBurstWaitMin = 1.0f; + ls.fBurstWaitMax = 1.0f; + ls.fLinesPerSecond = fDropsPerSec; + ls.fLineLength = 150.0f; + ls.vDims = vDims; + ls.fLineLifetime = fLifetime; + ls.fViewDist = m_fViewDist; + + if (!m_Rain.Init(&ls) || !m_Rain.CreateObject(m_pClientDE)) + { + return LTFALSE; + } + + m_Rain.Update(); + m_Rain.SetRemoveLineFn(HandleRemoveLine, (void*)this); + + return LTTRUE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::CreateSplashSprites +// +// PURPOSE: Create the sprites used when the rain impacts +// +// ----------------------------------------------------------------------- // + +void CWeatherFX::CreateSplashSprites() +{ + if (m_eSurfaceType == ST_UNKNOWN) return; + + // Setup the splash sprite... + + BSCREATESTRUCT sc; + + CString str; + LTFLOAT fLifetime = 0.0; + uint32 dwFlags = FLAG_NOLIGHT; + char szFilename[128] = ""; + + if (m_eSurfaceType == ST_LIQUID) + { + sc.rRot = LTRotation(LTVector(0.0f, 1.0f, 0.0f), LTVector(1.0f, 0.0f, 0.0f)); + + fLifetime = 1.0f; + dwFlags |= FLAG_ROTATEABLESPRITE; + + g_pClientButeMgr->GetWeatherAttributeString(WEATHER_BUTE_RAINRING,szFilename,sizeof(szFilename)); + if (!szFilename[0]) return; + + } + else // Not a liquid + { + fLifetime = 0.05f; + dwFlags |= FLAG_SPRITEBIAS; + + g_pClientButeMgr->GetWeatherAttributeString(WEATHER_BUTE_RAINSPLASH,szFilename,sizeof(szFilename)); + if (!szFilename[0]) return; + + } + + sc.vPos = m_vPos; + + sc.dwFlags = dwFlags; + sc.fLifeTime = fLifetime; + sc.fInitialAlpha = 1.0f; + sc.fFinalAlpha = 0.0f; + sc.pFilename = szFilename; + sc.nType = OT_SPRITE; + + LTFLOAT fStartScale, fEndScale; + + for (int i=0; i < NUM_SPLASH_SPRITES; i++) + { + if (m_eSurfaceType == ST_LIQUID) + { + fStartScale = GetRandom(0.05f, 0.1f); + fEndScale = GetRandom(0.2f, 0.3f); + } + else + { + fStartScale = GetRandom(0.1f, 0.30f); + fEndScale = GetRandom(0.2f, 0.35f); + } + + sc.vInitialScale.Init(fStartScale, fStartScale, 1.0f); + sc.vFinalScale.Init(fEndScale, fEndScale, 1.0f); + + if (!m_Splash[i].Init(&sc) || !m_Splash[i].CreateObject(m_pClientDE)) + { + break; + } + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: HandleRemoveLine +// +// PURPOSE: Handle a rain 'drop' being removed +// +// ----------------------------------------------------------------------- // + +void HandleRemoveLine(void *pUserData, LSLineStruct* pLine) +{ + if (!pUserData || !pLine) return; + + // Depending on the detail settings, create more or less splashes... + + //static int s_nNum = 0; + //if (++s_nNum % 2 == 0) + //{ + CWeatherFX* pWeather = (CWeatherFX*)pUserData; + pWeather->DoSplash(pLine); + //} +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::DoSplash +// +// PURPOSE: Handle a rain 'drop' splash +// +// ----------------------------------------------------------------------- // + +void CWeatherFX::DoSplash(LSLineStruct* pLine) +{ + if (!pLine || !pLine->hLTLine) return; + + CSFXMgr* psfxMgr = g_pGameClientShell->GetSFXMgr(); + if (!psfxMgr || !m_pClientDE || m_eSurfaceType == ST_UNKNOWN) return; + + + // Get the splash position... + + LTLine line; + m_pClientDE->GetLineInfo(pLine->hLTLine, &line); + LTVector vPos = m_vRainPos + ((line.m_Points[0].m_Pos + line.m_Points[1].m_Pos) / 2.0f); + vPos.y = m_fFloorY; + + + // Get the camera's position...If the camera is too far away from + // the sprite being added, don't add it :) + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return; + + LTVector vCamPos, vDist; + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + vDist = vCamPos - vPos; + + if (vDist.MagSqr() > (MAX_SPLASH_VIEW_DIST*MAX_SPLASH_VIEW_DIST)) + { + return; + } + + + // Show the sprite by moving one of the splash sprites to this position + // and showing it... + + HOBJECT hObj = LTNULL; + + for (int i=0; i < NUM_SPLASH_SPRITES; i++) + { + hObj = m_Splash[i].GetObject(); + + if (hObj) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_Flags, dwFlags); + if (!(dwFlags & FLAG_VISIBLE)) + { + g_pLTClient->SetObjectPos(hObj, &vPos); + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + m_Splash[i].Reset(); + break; + } + } + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CWeatherFX::Update +// +// PURPOSE: Update the weather fx +// +// ----------------------------------------------------------------------- // + +LTBOOL CWeatherFX::Update() +{ + // Make sure we're supposed to be here... + + if (m_bWantRemove || !m_hServerObject) return LTFALSE; + + + // Determine what type of surface this brush is on top of. + + if (m_bFirstUpdate) + { + m_bFirstUpdate = LTFALSE; + + ClientIntersectQuery iQuery; + ClientIntersectInfo iInfo; + + iQuery.m_Flags = INTERSECT_OBJECTS | INTERSECT_HPOLY | IGNORE_NONSOLID; + iQuery.m_From = m_vPos; + + iQuery.m_To = m_vPos; + iQuery.m_To.y = m_fFloorY - 100; + + if (m_pClientDE->IntersectSegment(&iQuery, &iInfo)) + { + m_eSurfaceType = GetSurfaceType(iInfo); + + // Create splash sprites if necessary... + + if (m_dwFlags & WFLAG_RAIN) + { + CreateSplashSprites(); + } + } + } + + + // Update Snow... + + if (m_dwFlags & WFLAG_SNOW) + { + HOBJECT hObj = m_Snow.GetObject(); + if (hObj) + { + bool bEnable = GetConsoleInt("EnableWeatherFX",1) != 0; + if (bEnable) + { + m_Snow.Update(); + } + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, bEnable ? FLAG_VISIBLE : 0, FLAG_VISIBLE); + } + } + + + // Update Rain... + + if (m_dwFlags & WFLAG_RAIN) + { + HOBJECT hObj = m_Rain.GetObject(); + if (hObj) + { + bool bEnable = GetConsoleInt("EnableWeatherFX",1) != 0; + if (bEnable) + { + m_Rain.Update(); + } + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, bEnable ? FLAG_VISIBLE : 0, FLAG_VISIBLE); + } + + // Get the camera's position...Make rain systems far away from the + // camera more transparent... + + HOBJECT hCamera = g_pPlayerMgr->GetCamera(); + if (!hCamera) return LTFALSE; + + LTVector vCamPos, vDist, vPos; + g_pLTClient->GetObjectPos(m_Rain.GetObject(), &vPos); + g_pLTClient->GetObjectPos(hCamera, &vCamPos); + vCamPos.y = vPos.y; // Only wory about X and Z + vDist = vCamPos - vPos; + + LTFLOAT fDistSqr = vDist.MagSqr(); + LTFLOAT fFullAlphaSqr = (RAIN_FULL_ALPHA_SCALE_DIST*RAIN_FULL_ALPHA_SCALE_DIST); + LTFLOAT fMinAlphaSqr = (RAIN_MIN_ALPHA_SCALE_DIST*RAIN_MIN_ALPHA_SCALE_DIST); + + LTFLOAT r, g, b, a; + m_pClientDE->GetObjectColor(m_Rain.GetObject(), &r, &g, &b, &a); + + if (fDistSqr <= fFullAlphaSqr) + { + a = RAIN_MAX_ALPHA; // Full alpha + } + else // Calculate new alpha + { + LTFLOAT fDistOffset = fDistSqr - fFullAlphaSqr; + LTFLOAT fTotalDist = fMinAlphaSqr - fFullAlphaSqr; + + a = RAIN_MAX_ALPHA - ((RAIN_MAX_ALPHA - RAIN_MIN_ALPHA) * (fDistOffset / fTotalDist)); + a = a < RAIN_MIN_ALPHA ? RAIN_MIN_ALPHA : a; + } + + m_pClientDE->SetObjectColor(m_Rain.GetObject(), r, g, b, a); + + // Update Splash fx... + + hObj = LTNULL; + + for (int i=0; i < NUM_SPLASH_SPRITES; i++) + { + hObj = m_Splash[i].GetObject(); + + if (hObj) + { + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hObj, OFT_Flags, dwFlags); + + if (dwFlags & FLAG_VISIBLE) + { + if (!m_Splash[i].Update()) + { + // If the sprite is done, hide it... + + g_pCommonLT->SetObjectFlags(hObj, OFT_Flags, 0, FLAG_VISIBLE); + } + } + } + } + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/WeatherFX.h b/Jack/ClientShellDLL/WeatherFX.h new file mode 100644 index 00000000..b42ba115 --- /dev/null +++ b/Jack/ClientShellDLL/WeatherFX.h @@ -0,0 +1,102 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : WeatherFX.h +// +// PURPOSE : Weather special fx class - Definition +// +// CREATED : 3/23/99 +// +// ----------------------------------------------------------------------- // + +#ifndef __WEATHER_FX_H__ +#define __WEATHER_FX_H__ + +#include "VolumeBrushFX.h" +#include "LineSystemFX.h" +#include "ParticleSystemFX.h" +#include "SurfaceMgr.h" +#include "BaseScaleFX.h" + +#define NUM_SPLASH_SPRITES 20 + + +struct WFXCREATESTRUCT : public VBCREATESTRUCT +{ + WFXCREATESTRUCT(); + + void Read(ILTMessage_Read *pMsg); + + uint32 dwFlags; + LTFLOAT fViewDist; +}; + +inline WFXCREATESTRUCT::WFXCREATESTRUCT() +{ + dwFlags = 0; + fViewDist = 0.0f; +} + + +inline void WFXCREATESTRUCT::Read(ILTMessage_Read *pMsg) +{ + VBCREATESTRUCT::Read(pMsg); + + dwFlags = pMsg->Readuint32(); + fViewDist = pMsg->Readfloat(); +} + +class CWeatherFX : public CVolumeBrushFX +{ + public : + + CWeatherFX() : CVolumeBrushFX() + { + m_bFirstUpdate = LTTRUE; + m_fArea = 1.0; + m_dwFlags = 0; + m_fFloorY = 0.0f; + m_eSurfaceType = ST_UNKNOWN; + m_fViewDist = 1000.0f; + + m_vRainVel.Init(); + m_vSnowVel.Init(); + m_vRainPos.Init(); + m_vPos.Init(); + m_vDims.Init(); + } + + virtual LTBOOL Update(); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL CreateObject(ILTClient* pClientDE); + + void DoSplash(LSLineStruct* pLine); + + virtual uint32 GetSFXID() { return SFX_WEATHER_ID; } + + protected : + + LTBOOL m_bFirstUpdate; + uint32 m_dwFlags; + LTFLOAT m_fFloorY; + LTFLOAT m_fViewDist; + double m_fArea; + + SurfaceType m_eSurfaceType; + + LTVector m_vRainVel; + LTVector m_vSnowVel; + LTVector m_vRainPos; + LTVector m_vPos; + LTVector m_vDims; + + CLineSystemFX m_Rain; + CParticleSystemFX m_Snow; + + CBaseScaleFX m_Splash[NUM_SPLASH_SPRITES]; + + LTBOOL CreateSnow(); + LTBOOL CreateRain(); + void CreateSplashSprites(); +}; + +#endif // __WEATHER_FX_H__ \ No newline at end of file diff --git a/Jack/ClientShellDLL/client_physics.cpp b/Jack/ClientShellDLL/client_physics.cpp new file mode 100644 index 00000000..1593054f --- /dev/null +++ b/Jack/ClientShellDLL/client_physics.cpp @@ -0,0 +1,218 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : client_physics.cpp +// +// PURPOSE : Client-side, intersect-segment based collision - Implementation +// +// CREATED : 1998 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" +#include "clientheaders.h" +#include "client_physics.h" +#include "ClientServerShared.h" +#include "ContainerCodes.h" +#include "GameClientShell.h" + +extern PhysicsState g_normalPhysicsState; +extern PhysicsState g_waterPhysicsState; + +static bool CP_NonSolidFilterFn(HOBJECT hTest, void *pUserData) +{ + // Ignore non-solid objects (even if ray-hit is true)... + + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_SOLID)) + { + return false; + } + + return true; +} + +static bool CP_NonSolidNonMovingFilterFn(HOBJECT hTest, void *pUserData) +{ + // Ignore non-solid objects (even if ray-hit is true)... + uint32 dwFlags; + g_pCommonLT->GetObjectFlags(hTest, OFT_Flags, dwFlags); + + if (!(dwFlags & FLAG_SOLID)) + { + return false; + } + + //alright, now determine if this is a world model + uint32 nType; + if(g_pCommonLT->GetObjectType(hTest, &nType) != LT_OK) + return false; + + if(nType != OT_WORLDMODEL) + return false; + + //alright, we have a world model, now only obey the ones that aren't moveable + uint32 nUserFlags; + if(g_pCommonLT->GetObjectFlags(hTest, OFT_User, nUserFlags) != LT_OK) + return false; + + //ignore moveable world models + if(nUserFlags & USRFLG_MOVEABLE) + return false; + + return true; +} + +void InitMovingObject(MovingObject *pObject, const LTVector &vPos, const LTVector &vVelocity) +{ + if (!pObject) return; + + pObject->Init(); + pObject->m_vPos = vPos; + pObject->m_vLastPos = vPos; + pObject->m_vVelocity = vVelocity; + + // Determine if we are in any containers (like liquid) that would + // affect physics... + + HLOCALOBJ objList[1]; + uint32 dwNum = ::GetPointContainers(pObject->m_vPos, objList, 1, ::GetLiquidFlags()); + + if (dwNum > 0) + { + pObject->m_dwPhysicsFlags |= MO_LIQUID; + } +} + + +void SetPhysicsStateTimeStep(PhysicsState *pState, float timeStep) +{ + pState->m_fTimeStep = timeStep; + pState->m_fTimeStepIntegral = timeStep*timeStep*0.5f; +} + + +LTBOOL UpdateMovingObject(PhysicsState *pUserState, MovingObject *pObject, LTVector &vNewPos) +{ + if (!pObject) return LTFALSE; + + PhysicsState* pState = pUserState ? pUserState : GetCurPhysicsState(pObject); + if (!pState) return LTFALSE; + + LTVector vTemp, velocityDelta, posDelta; + + if (pObject->m_dwPhysicsFlags & MO_RESTING) return LTFALSE; + + // Prevent tiny movements. + if (VEC_MAGSQR(pObject->m_vAcceleration) < 0.01f) + { + pObject->m_vAcceleration.Init(); + } + + if (VEC_MAGSQR(pObject->m_vVelocity) < 0.01f) + { + pObject->m_vVelocity.Init(); + } + + // velocityDelta = ( acceleration + accelDelta * 0.5 ) * dt; + vTemp.Init(); + if (!(pObject->m_dwPhysicsFlags & MO_NOGRAVITY)) + { + LTFLOAT fScale = 0.5f * pObject->m_fGravityScale; + VEC_MULSCALAR(vTemp, pState->m_vGravityAccel, fScale); + } + VEC_ADD(vTemp, vTemp, pObject->m_vAcceleration); + VEC_MULSCALAR(velocityDelta, vTemp, pState->m_fTimeStep); + + // Apply the velocity to the position (p = p + vt + 0.5a(t^2)). + VEC_MULSCALAR(posDelta, pObject->m_vAcceleration, pState->m_fTimeStepIntegral); + VEC_ADDSCALED(posDelta, posDelta, pObject->m_vVelocity, pState->m_fTimeStep); + + // Add the final velocity to the new velocity. + VEC_ADD(pObject->m_vVelocity, pObject->m_vVelocity, velocityDelta); + + VEC_ADD(vNewPos, pObject->m_vPos, posDelta); + + // Zero out the acceleration. + pObject->m_vAcceleration.Init(); + + return LTTRUE; +} + + +LTBOOL BounceMovingObject(PhysicsState *pUserState, MovingObject *pObject, + LTVector &vNewPos, ClientIntersectInfo* pInfo, + uint32 dwQueryFlags, bool bIgnoreMovingObjects, + LTBOOL & bBounceOnGround) +{ + if (!pObject || !pInfo) return LTFALSE; + + bBounceOnGround = LTFALSE; + + PhysicsState* pState = pUserState ? pUserState : GetCurPhysicsState(pObject); + if (!pState) return LTFALSE; + + IntersectQuery query; + float dot; + + // Only do an intersection test if the line is long enough (sometimes the + // intersection test will fail on really short lines). + + query.m_From = pObject->m_vPos; + query.m_To = vNewPos; + query.m_Flags = dwQueryFlags; + query.m_FilterFn = (bIgnoreMovingObjects) ? CP_NonSolidNonMovingFilterFn : CP_NonSolidFilterFn; + + if (g_pLTClient->IntersectSegment(&query, pInfo)) + { + // Move the dest point a little in front of the plane. + VEC_ADDSCALED(vNewPos, pInfo->m_Point, pInfo->m_Plane.m_Normal, 0.3f); + + // Reflect the velocity. + dot = VEC_DOT(pObject->m_vVelocity, pInfo->m_Plane.m_Normal); + dot *= -2.0f; + + VEC_ADDSCALED(pObject->m_vVelocity, pObject->m_vVelocity, pInfo->m_Plane.m_Normal, dot); + + // Dampen it. + VEC_MULSCALAR(pObject->m_vVelocity, pObject->m_vVelocity, pState->m_fVelocityDampen); + + const float c_fMinPixels = 15.0f; + LTFLOAT fDelta = g_pGameClientShell->GetFrameTime(); + + // This assumes we're updating at 1.0/fDelta fps and our minimum velocity + // is c_fMinPixels pixels per second + // (c_fMinPixels*c_fMinPixels/fDelta is the maximum magnitude). + + fDelta = fDelta > 0.5f ? 0.1f : (fDelta < 0.001f ? 0.001f : fDelta); + + LTFLOAT fMaxMag = ((c_fMinPixels*c_fMinPixels)/fDelta); + + bBounceOnGround = (pInfo->m_Plane.m_Normal.y > 0.6f); + + if (bBounceOnGround && (VEC_MAGSQR(pObject->m_vVelocity) < fMaxMag)) + { + pObject->m_dwPhysicsFlags |= MO_RESTING; + } + + return LTTRUE; + } + + return LTFALSE; +} + +// Based on the current position of the object, determine the physics state +// we should use... + +PhysicsState* GetCurPhysicsState(MovingObject *pObject) +{ + if (!pObject) return LTNULL; + + return ((pObject->m_dwPhysicsFlags & MO_LIQUID) ? &g_waterPhysicsState : &g_normalPhysicsState); +} + + + diff --git a/Jack/ClientShellDLL/client_physics.h b/Jack/ClientShellDLL/client_physics.h new file mode 100644 index 00000000..67fe9314 --- /dev/null +++ b/Jack/ClientShellDLL/client_physics.h @@ -0,0 +1,88 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : client_physics.h +// +// PURPOSE : Client-side, intersect-segment based collision - Declaration +// +// CREATED : 1998 +// +// (c) 1998-2000 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __CLIENT_PHYSICS_H__ +#define __CLIENT_PHYSICS_H__ + +#define MO_RESTING (1<<1) // Object is in a resting state. +#define MO_LIQUID (1<<2) // Object in water +#define MO_NOGRAVITY (1<<3) // Ignore gravity + +typedef struct MovingObject_t +{ + MovingObject_t() + { + Init(); + } + + void Init() + { + m_dwPhysicsFlags = 0; + m_vPos.Init(); + m_vLastPos.Init(); + m_vVelocity.Init(); + m_vAcceleration.Init(); + m_fGravityScale = 1.0f; + } + + // Internal stuff. + uint32 m_dwPhysicsFlags; // MO_ flags above. + LTVector m_vPos; + LTVector m_vLastPos; + LTVector m_vVelocity; + LTVector m_vAcceleration; + float m_fGravityScale; // Amount to scale gravity by (optional) +} MovingObject; + + +typedef struct PhysicsState_t +{ + PhysicsState_t() + { + m_fTimeStep = 0.0f; + m_fTimeStepIntegral = 0.0f; + m_fVelocityDampen = 0.0f; + m_vGravityAccel.Init(); + } + + float m_fTimeStep; // Time elapsed. Only set with SetPhysicsStateTimeStep. + float m_fTimeStepIntegral; // Used internally. + LTVector m_vGravityAccel; // A reasonable value is (0, -1000, 0). + float m_fVelocityDampen; // Velocity dampen when it hits something. +} PhysicsState; + + +void InitMovingObject(MovingObject *pObject, const LTVector &vPos, const LTVector &vVelocity); +void SetPhysicsStateTimeStep(PhysicsState *pState, float timeStep); + +// Updates velocity and acceleration. Fills in vNewPos with the new position +// vector. Returns LTFALSE if the object shouldn't move. + +LTBOOL UpdateMovingObject(PhysicsState *pState, MovingObject *pObject, LTVector &vNewPos); + +// Bounce the moving object off the world. If the object hits anything, it reflects +// the velocity vector, changes pNewPos, and scales the velocity by pState->m_VelocityDampen +// (if you want it to stop when it hits something, set it to 0). + +LTBOOL BounceMovingObject(PhysicsState *pState, MovingObject *pObject, + LTVector &vNewPos, ClientIntersectInfo* pInfo, uint32 dwQueryFlags, + bool bIgnoreMovingObjects, LTBOOL & bBounceOnGround); + +// Based on the current position of the object, determine the physics state +// we should to use + +PhysicsState* GetCurPhysicsState(MovingObject* pObject); + +#endif // __CLIENT_PHYSICS_H__ + + + diff --git a/Jack/ClientShellDLL/plasma.h b/Jack/ClientShellDLL/plasma.h new file mode 100644 index 00000000..b4d834fa --- /dev/null +++ b/Jack/ClientShellDLL/plasma.h @@ -0,0 +1,9 @@ + + + #include + #include "iclientshell.h" + #include "iltclient.h" + + void cs_PrecalculateData(ILTClient *pClientDE, HLOCALOBJ hPolyGrid); + void cs_RandomizePolyGrid(ILTClient *pClientDE, HLOCALOBJ hPolyGrid); + void cs_SetPolyGridPalette(ILTClient *pClientDE, HLOCALOBJ hPolyGrid); \ No newline at end of file diff --git a/Jack/ClientShellDLL/resource.h b/Jack/ClientShellDLL/resource.h new file mode 100644 index 00000000..9f3ad1e0 --- /dev/null +++ b/Jack/ClientShellDLL/resource.h @@ -0,0 +1,15 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by ClientShellDLL.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Jack/ClientShellDLL/sprinklesfx.cpp b/Jack/ClientShellDLL/sprinklesfx.cpp new file mode 100644 index 00000000..b297b0a6 --- /dev/null +++ b/Jack/ClientShellDLL/sprinklesfx.cpp @@ -0,0 +1,445 @@ + +#include "stdafx.h" +#include "SprinklesFX.h" +#include "FXButeMgr.h" +#include "ClientServerShared.h" +#include "commonutilities.h" +#include "GameClientShell.h" + +class ModelObjControl : public FXObjControl +{ +public: + + void DebugPrint(FXType *pType, FXObj *pObj) + { + } + + LTVector GetObjPos(FXType *pType, FXObj *pObj) + { + LTVector ret; + g_pLTClient->GetObjectPos(pObj->m_hModel, &ret); + return ret; + } + + void SetObjPos(FXType *pType, FXObj *pObj, const LTVector &pos) + { + g_pLTClient->SetObjectPos(pObj->m_hModel, const_cast(&pos)); + } + + void SetObjAlpha(FXObj *pObj, float alpha) + { + float r, g, b, a; + + g_pLTClient->GetObjectColor(pObj->m_hModel, &r, &g, &b, &a); + g_pLTClient->SetObjectColor(pObj->m_hModel, r, g, b, alpha); + } + + void SetObjColor(FXObj *pObj, const LTVector &color) + { + float r, g, b, a; + + g_pLTClient->GetObjectColor(pObj->m_hModel, &r, &g, &b, &a); + g_pLTClient->SetObjectColor(pObj->m_hModel, + color.x * MATH_ONE_OVER_255, + color.y * MATH_ONE_OVER_255, + color.z * MATH_ONE_OVER_255, + a); + } + + void ShowObj(FXObj *pObj) + { + g_pCommonLT->SetObjectFlags(pObj->m_hModel, OFT_Flags, FLAG_VISIBLE, FLAG_VISIBLE); + } + + void HideObj(FXObj *pObj) + { + g_pCommonLT->SetObjectFlags(pObj->m_hModel, OFT_Flags, 0, FLAG_VISIBLE); + } + +} g_ModelObjControl; + + +class ParticleObjControl : public FXObjControl +{ +public: + + void DebugPrint(FXType *pType, FXObj *pObj) + { + LTVector vParticlePos, vSystemPos; + g_pLTClient->GetObjectPos(pType->m_hObject, &vSystemPos); + LTVector vPos = vSystemPos + GetObjPos(pType, pObj); + + g_pLTClient->CPrint("World Pos: %.2f, %.2f, %.2f", vPos.x, vPos.y, vPos.z); + g_pLTClient->CPrint("Color: %.2f, %.2f, %.2f", pObj->m_pParticle->m_Color.x, + pObj->m_pParticle->m_Color.y, pObj->m_pParticle->m_Color.z); + g_pLTClient->CPrint("Alpha: %.2f", pObj->m_pParticle->m_Alpha); + } + + LTVector GetObjPos(FXType *pType, FXObj *pObj) + { + return pObj->m_pParticle->m_Pos; + } + + void SetObjPos(FXType *pType, FXObj *pObj, const LTVector &pos) + { + pObj->m_pParticle->m_Pos = pos; + } + + void SetObjColor(FXObj *pObj, const LTVector &color) + { + pObj->m_pParticle->m_Color = color; + } + + void SetObjAlpha(FXObj *pObj, float alpha) + { + pObj->m_pParticle->m_Alpha = alpha; + } + + void ShowObj(FXObj *pObj) + { + } + + void HideObj(FXObj *pObj) + { + pObj->m_pParticle->m_Alpha = 0.0f; + } + +} g_ParticleObjControl; + + + + +// -------------------------------------------------------------------------------- // +// FXType +// -------------------------------------------------------------------------------- // + +FXType::FXType() +{ + m_hObject = NULL; + m_pObjects = NULL; + m_nObjects = 0; + + dl_TieOff(&m_ActiveList); + dl_TieOff(&m_InactiveList); +} + + +FXType::~FXType() +{ + uint32 i; + + if(m_pObjects) + { + if(m_ObjType == FXObj_Model) + { + for(i=0; i < m_nObjects; i++) + { + g_pLTClient->RemoveObject(m_pObjects[i].m_hModel); + } + } + + debug_deletea(m_pObjects); + m_pObjects = NULL; + } + + if(m_hObject) + { + g_pLTClient->RemoveObject(m_hObject); + m_hObject = NULL; + } +} + + +// -------------------------------------------------------------------------------- // +// SprinklesFX +// -------------------------------------------------------------------------------- // + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CSteamFX::Init +// +// PURPOSE: Init the particle system fx +// +// ----------------------------------------------------------------------- // + +LTBOOL SprinklesFX::Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg) +{ + if (!CSpecialFX::Init(hServObj, pMsg)) return LTFALSE; + if (!pMsg) return LTFALSE; + + SPRINKLESCREATESTRUCT scs; + + scs.hServerObj = hServObj; + scs.Read(pMsg); + + LTBOOL result = Init(&scs); + for(uint32 i = 0; i < MAX_SPRINKLE_TYPES; i++) + { + if (scs.m_Types[i].m_hFilename) + { + g_pLTClient->FreeString(scs.m_Types[i].m_hFilename); + } + + if (scs.m_Types[i].m_hSkinName) + { + g_pLTClient->FreeString(scs.m_Types[i].m_hSkinName); + } + } + return result; +} + + +LTBOOL SprinklesFX::Init(SFXCREATESTRUCT* psfxCreateStruct) +{ + SPRINKLESCREATESTRUCT *pStruct; + uint32 i, j, count; + float particleSize; + FXType *pType; + ObjectCreateStruct ocs; + LTVector vZero, v255; + char tempFilename[256]; + FXObj *pFXObj; + + + if(!CSpecialFX::Init(psfxCreateStruct)) + return LTFALSE; + + uint32 dwWidth, dwHeight; + HSURFACE hScreen = g_pLTClient->GetScreenSurface(); + g_pLTClient->GetSurfaceDims(hScreen, &dwWidth, &dwHeight); + if (dwWidth < 1) return LTFALSE; + + LTVector vServObjPos; + g_pLTClient->GetObjectPos(m_hServerObject, &vServObjPos); + + pStruct = (SPRINKLESCREATESTRUCT*)psfxCreateStruct; + + if(pStruct->m_nTypes > MAX_SPRINKLE_TYPES) + { + g_pLTClient->CPrint("SprinklesFX::Init, too many FX types (%d)", pStruct->m_nTypes); + return LTFALSE; + } + + vZero.Init(); + v255.Init(255.0f, 255.0f, 255.0f); + + m_nFXTypes = pStruct->m_nTypes; + for(i=0; i < m_nFXTypes; i++) + { + pType = &m_FXTypes[i]; + SPRINKLETYPECREATESTRUCT *pConstruct = &(pStruct->m_Types[i]); + + ocs.Clear(); + ocs.m_Flags = FLAG_VISIBLE; + + const char *pTemp = g_pLTClient->GetStringData(pConstruct->m_hFilename); + strncpy(tempFilename,pTemp,ARRAY_LEN(tempFilename)); + + pTemp = g_pLTClient->GetStringData(pConstruct->m_hSkinName); + strncpy(ocs.m_SkinName,pTemp,ARRAY_LEN(ocs.m_SkinName)); + + strupr(tempFilename); + if(strstr(tempFilename, ".LTB")) + { + pType->m_ObjType = FXObj_Model; + pType->m_pControl = &g_ModelObjControl; + ocs.m_ObjectType = OT_MODEL; + ocs.m_Flags |= FLAG_NOLIGHT; + SAFE_STRCPY(ocs.m_Filename, tempFilename); + } + else + { + pType->m_ObjType = FXObj_Particle; + pType->m_pControl = &g_ParticleObjControl; + ocs.m_ObjectType = OT_PARTICLESYSTEM; + ocs.m_Flags |= FLAG_FOGDISABLE; // | FLAG_UPDATEUNSEEN; + ocs.m_Pos = vServObjPos; + } + + count = pConstruct->m_Count; + pType->m_Speed = pConstruct->m_Speed; + particleSize = pConstruct->m_Size; + particleSize /= ((LTFLOAT)dwWidth); + + pType->m_SpawnRadius = pConstruct->m_SpawnRadius; + pType->m_AnglesVel = pConstruct->m_AnglesVel; + + pType->m_ColorMin = pConstruct->m_ColorMin; + + pType->m_ColorMax = pConstruct->m_ColorMax; + + // Create the particle system? + if(pType->m_ObjType == FXObj_Particle) + { + pType->m_hObject = g_pLTClient->CreateObject(&ocs); + if(!pType->m_hObject) + continue; + + g_pLTClient->SetupParticleSystem(pType->m_hObject, tempFilename, + 0.0f, PS_DUMB, particleSize); + } + + // Create the objects. + pType->m_pObjects = debug_newa(FXObj, count); + if(pType->m_pObjects) + { + pType->m_nObjects = count; + + for(j=0; j < pType->m_nObjects; j++) + { + pFXObj = &pType->m_pObjects[j]; + + // Init stuff. + pFXObj->m_Velocity.Init(); + pFXObj->m_Link.m_pData = pFXObj; + dl_Insert(&pType->m_InactiveList, &pFXObj->m_Link); + + if(pType->m_ObjType == FXObj_Particle) + { + pFXObj->m_pParticle = g_pLTClient->AddParticle( + pType->m_hObject, &vZero, &vZero, &v255, 0.0f); + } + else + { + pFXObj->m_hModel = g_pLTClient->CreateObject(&ocs); + } + + if(pFXObj->IsValid()) + { + pType->m_pControl->HideObj(pFXObj); + } + } + } + } + + return LTTRUE; +} + + +LTBOOL SprinklesFX::Update() +{ + if( m_bWantRemove ) return LTFALSE; + + uint32 i; + FXType *pType; + FXObj *pFXObj; + LTLink *pCur, *pNext; + LTVector newColor; + HOBJECT hObj; + float frameTime, alphaVal; + + hObj = g_pLTClient->GetClientObject(); + if(!hObj) + return LTTRUE; + + LTVector playerPos, curPos; + g_pLTClient->GetObjectPos(hObj, &playerPos); + frameTime = g_pGameClientShell->GetFrameTime(); + + for(i=0; i < m_nFXTypes; i++) + { + pType = &m_FXTypes[i]; + + if(!pType->m_nObjects) + continue; + + // Spawn in objects that were outside. + for(pCur=pType->m_InactiveList.m_pNext; pCur != &pType->m_InactiveList; pCur=pNext) + { + pNext = pCur->m_pNext; + + if(GetRandom(0, 10) < 3) + continue; + + pFXObj = (FXObj*)pCur->m_pData; + if(!pFXObj->IsValid()) + continue; + + dl_Remove(pCur); + dl_Insert(&pType->m_ActiveList, pCur); + + // Give it a new position and velocity. + curPos.x = playerPos.x + GetRandom(-pType->m_SpawnRadius, pType->m_SpawnRadius); + curPos.y = playerPos.y + GetRandom(-pType->m_SpawnRadius, pType->m_SpawnRadius); + curPos.z = playerPos.z + GetRandom(-pType->m_SpawnRadius, pType->m_SpawnRadius); + + // Need to subtract off the particle system's position... + + if (pType->m_ObjType == FXObj_Particle) + { + LTVector vSystemPos; + g_pLTClient->GetObjectPos(pType->m_hObject, &vSystemPos); + + curPos -= vSystemPos; + } + + pType->m_pControl->SetObjPos(pType, pFXObj, curPos); + pType->m_pControl->ShowObj(pFXObj); + + pFXObj->m_Velocity.Init( + GetRandom(-pType->m_Speed, pType->m_Speed), + GetRandom(-pType->m_Speed, pType->m_Speed), + GetRandom(-pType->m_Speed, pType->m_Speed)); + + // Random starting angles. + pFXObj->m_Angles.x = GetRandom(0.0f, MATH_CIRCLE); + pFXObj->m_Angles.y = GetRandom(0.0f, MATH_CIRCLE); + pFXObj->m_Angles.z = GetRandom(0.0f, MATH_CIRCLE); + + // Get velocity. + pFXObj->m_AnglesVel.x = GetRandom(-pType->m_AnglesVel.x, pType->m_AnglesVel.x); + pFXObj->m_AnglesVel.y = GetRandom(-pType->m_AnglesVel.y, pType->m_AnglesVel.y); + pFXObj->m_AnglesVel.z = GetRandom(-pType->m_AnglesVel.z, pType->m_AnglesVel.z); + + // Get color. + newColor = pType->m_ColorMin + (pType->m_ColorMax - pType->m_ColorMin) * GetRandom(0.0f, 1.0f); + pType->m_pControl->SetObjColor(pFXObj, newColor); + } + + // Move each object along its velocity. + for(pCur=pType->m_ActiveList.m_pNext; pCur != &pType->m_ActiveList; pCur=pNext) + { + pNext = pCur->m_pNext; + + pFXObj = (FXObj*)pCur->m_pData; + if(!pFXObj->IsValid()) + continue; + + curPos = pType->m_pControl->GetObjPos(pType, pFXObj); + curPos += pFXObj->m_Velocity * frameTime; + pType->m_pControl->SetObjPos(pType, pFXObj, curPos); + + // Set its angles. + if(pType->m_ObjType == FXObj_Model) + { + pFXObj->m_Angles += pFXObj->m_AnglesVel * frameTime; + LTRotation rot(VEC_EXPAND(pFXObj->m_Angles)); + g_pLTClient->SetObjectRotation(pFXObj->m_hModel, &rot); + } + else if (pType->m_ObjType == FXObj_Particle) + { + // Add system pos back on to calculate alpha... + LTVector vSystemPos; + g_pLTClient->GetObjectPos(pType->m_hObject, &vSystemPos); + + curPos += vSystemPos; + } + + // Set its alpha. + alphaVal = 1.0f - ((curPos - playerPos).Length() / pType->m_SpawnRadius); + + if(alphaVal < 0.0f) + { + pType->m_pControl->HideObj(pFXObj); + dl_Remove(pCur); + dl_Insert(&pType->m_InactiveList, pCur); + } + else + { + pType->m_pControl->SetObjAlpha(pFXObj, alphaVal); + } + } + } + + return LTTRUE; +} \ No newline at end of file diff --git a/Jack/ClientShellDLL/sprinklesfx.h b/Jack/ClientShellDLL/sprinklesfx.h new file mode 100644 index 00000000..ae97333d --- /dev/null +++ b/Jack/ClientShellDLL/sprinklesfx.h @@ -0,0 +1,118 @@ + +#ifndef __SPRINKLESFX_H__ +#define __SPRINKLESFX_H__ + + +#include "SpecialFX.h" +#include "SharedFXStructs.h" + + + + class FXType; + + + typedef enum + { + FXObj_Particle, + FXObj_Model + } FXObjType; + + + class FXObj + { + public: + + BOOL IsValid() {return !!m_pParticle;} + + + public: + + union + { + LTParticle *m_pParticle; + HOBJECT m_hModel; + }; + + LTVector m_Angles; + LTVector m_AnglesVel; + + LTVector m_Velocity; + LTLink m_Link; + }; + + + // These abstract the differences between model and particle sprinkles. + class FXObjControl + { + public: + + virtual void DebugPrint(FXType *pType, FXObj *pObj)=0; + virtual LTVector GetObjPos(FXType *pType, FXObj *pObj)=0; + virtual void SetObjPos(FXType *pType, FXObj *pObj, const LTVector &pos)=0; + + virtual void SetObjAlpha(FXObj *pObj, float alpha)=0; + virtual void SetObjColor(FXObj *pObj, const LTVector &color)=0; + + virtual void ShowObj(FXObj *pObj)=0; + virtual void HideObj(FXObj *pObj)=0; + }; + + + class FXType + { + public: + + FXType(); + ~FXType(); + + + void AddFreeObj(FXObj *pObj); + FXObj* PopFreeObj(); + + + public: + + FXObjType m_ObjType; + FXObjControl *m_pControl; + + // Maximum angular velocity (goes from -X to X). + LTVector m_AnglesVel; + + float m_SpawnRadius; // Radius around the player they spawn in from. + float m_Speed; // How fast they travel. + + LTVector m_ColorMin; + LTVector m_ColorMax; + + // Particle system. + HOBJECT m_hObject; + + // Particles. + FXObj *m_pObjects; + uint32 m_nObjects; + + LTLink m_ActiveList; + LTLink m_InactiveList; + }; + + + class SprinklesFX : public CSpecialFX + { + public: + + virtual LTBOOL Init(HLOCALOBJ hServObj, ILTMessage_Read *pMsg); + virtual LTBOOL Init(SFXCREATESTRUCT* psfxCreateStruct); + virtual LTBOOL Update(); + + virtual uint32 GetSFXID() { return SFX_SPRINKLES_ID; } + + public: + + FXType m_FXTypes[MAX_SPRINKLE_TYPES]; + uint32 m_nFXTypes; + }; + + +#endif + + diff --git a/Jack/ClientShellDLL/stack.h b/Jack/ClientShellDLL/stack.h new file mode 100644 index 00000000..bc99a135 --- /dev/null +++ b/Jack/ClientShellDLL/stack.h @@ -0,0 +1,118 @@ +#ifndef __STACK_H +#define __STACK_H + +template +class CStack +{ +public: + + CStack (int bMemCopyable = 0, long nGrowBy = 128); + ~CStack(); + + int Push (T& item); // returns zero on failure, nonzero on success + int Pop (T& item); // returns nonzero if stack not empty, zero if stack is empty after pop + void Flush(); + +protected: + + int Grow(); + + T* m_pItems; + long m_nArraySize; + long m_nNextItem; + long m_nGrowBy; + int m_bMemCopyable; +}; + +template +CStack::CStack (int bMemCopyable, long nGrowBy) +{ + m_bMemCopyable = bMemCopyable; + m_nGrowBy = nGrowBy; + + m_pItems = NULL; + m_nArraySize = 0; + m_nNextItem = 0; +} + +template +CStack::~CStack() +{ + Flush(); +} + +template +int CStack::Push (T& item) +{ + if (m_nNextItem == m_nArraySize) + { + if (!Grow()) return 0; + } + + if (m_bMemCopyable) + { + memcpy (&m_pItems[m_nNextItem++], &item, sizeof(T)); + } + else + { + m_pItems[m_nNextItem++] = item; + } + + return 1; +} + +template +int CStack::Pop (T& item) +{ + if (m_nNextItem == 0) + { + return 0; + } + + if (m_bMemCopyable) + { + memcpy (&item, &m_pItems[--m_nNextItem], sizeof(T)); + } + else + { + item = m_pItems[--m_nNextItem]; + } + + return 1; +} + +template +void CStack::Flush() +{ + debug_deletea(m_pItems); + m_pItems = NULL; + m_nArraySize = 0; + m_nNextItem = 0; +} + +template +int CStack::Grow() +{ + T* pNewArray = debug_newa(T, m_nArraySize + m_nGrowBy); + if (!pNewArray) return 0; + + if (m_bMemCopyable) + { + memcpy (pNewArray, m_pItems, m_nNextItem * sizeof(T)); + } + else + { + for (long i = 0; i < m_nNextItem; i++) + { + pNewArray[i] = m_pItems[i]; + } + } + + debug_deletea(m_pItems); + m_pItems = pNewArray; + m_nArraySize += m_nGrowBy; + + return 1; +} + +#endif diff --git a/Jack/Launcher/AniButton.cpp b/Jack/Launcher/AniButton.cpp new file mode 100644 index 00000000..fa4fe3ee --- /dev/null +++ b/Jack/Launcher/AniButton.cpp @@ -0,0 +1,155 @@ +// AniButton.cpp : implementation file +// + +#include "stdafx.h" +#include "launcher.h" +#include "AniButton.h" +#include "dlgex.h" +#include "playsound.h" +#include "vfw.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CAniButton + +CAniButton::CAniButton() +: m_bPlaying ( FALSE ), + m_nAniID ( 0 ) +{ +} + +CAniButton::~CAniButton() +{ +} + + +void CAniButton::DoDataExchange(CDataExchange* pDX) +{ + CButton::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAvibtntestDlg) + DDX_Control(pDX, IDOK, m_AnimateCtrl); + //}}AFX_DATA_MAP + +} + +BEGIN_MESSAGE_MAP(CAniButton, CButton) + //{{AFX_MSG_MAP(CAniButton) + ON_WM_MOUSEMOVE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CAniButton message handlers + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTextCheckBox::AutoLoad +// +// PURPOSE: Open the .avi +// +// NOTES: Make sure LoadAvi is called before AutoLoad +// when adding an CAniButton to a dialog. +// +// ----------------------------------------------------------------------- // + +BOOL CAniButton::AutoLoad(UINT nID, CWnd* pParent) +{ + // first attach the CBitmapCheckButton to the dialog control + if (!SubclassDlgItem(nID, pParent)) + return FALSE; + + CRect Rect; + GetClientRect( Rect ); + + // Create the animated control and size the button to the avi + if( !::IsWindow( m_AnimateCtrl ) ) + { + m_AnimateCtrl.Create( WS_CHILD | WS_VISIBLE | ACS_TRANSPARENT, Rect, this, 0 ); + m_AnimateCtrl.Open( m_nAniID ); + m_AnimateCtrl.GetClientRect(Rect); + + SetWindowPos(NULL, 0, 0, Rect.Width()+2, Rect.Height()+2, + SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE); + + //Rect.OffsetRect(1,1); + + m_AnimateCtrl.MoveWindow(Rect); + } + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAniButton::DrawItem +// +// PURPOSE: Manualy draw the button +// +// ----------------------------------------------------------------------- // + +void CAniButton::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) +{ + // See if we have focus + CDialogEx *pParent = (CDialogEx*)GetParent(); + if( (pParent->GetFocusButton() == this) && (::IsWindow( m_AnimateCtrl )) ) + { + if( !m_bPlaying ) + { + m_AnimateCtrl.Play( 0, -1, 1 ); + m_bPlaying = TRUE; + } + } + else + { + m_bPlaying = FALSE; + } + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAniButton::OnMouseMove +// +// PURPOSE: Give us focus +// +// ----------------------------------------------------------------------- // + +void CAniButton::OnMouseMove( UINT nFlags, CPoint point ) +{ + // Let our parent know we have focus + CDialogEx *pParent = (CDialogEx*)GetParent(); + if( pParent->GetFocusButton() != this ) + { + pParent->SetFocusButton( this ); + + PlaySound(IDR_SELECT); + } + + CButton::OnMouseMove(nFlags, point); +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CAniButton::LoadAVI +// +// PURPOSE: Set the resource ID +// +// ----------------------------------------------------------------------- // + +void CAniButton::LoadAVI(UINT nAniID) +{ + m_nAniID = nAniID; +} + + diff --git a/Jack/Launcher/AniButton.h b/Jack/Launcher/AniButton.h new file mode 100644 index 00000000..b69839d8 --- /dev/null +++ b/Jack/Launcher/AniButton.h @@ -0,0 +1,57 @@ +#if !defined(AFX_ANIBUTTON_H__C8477D0C_24E5_4A69_96D5_D9803EFFA30E__INCLUDED_) +#define AFX_ANIBUTTON_H__C8477D0C_24E5_4A69_96D5_D9803EFFA30E__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// AniButton.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CAniButton window + +class CAniButton : public CButton +{ +// Construction +public: + CAniButton(); + +// Attributes +public: + UINT m_nAniID; // ResourceID of the .avi + +protected: + CAnimateCtrl m_AnimateCtrl; // Animation control + BOOL m_bPlaying; // Are we playing? + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAniButton) + public: + virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); + protected: + virtual void DoDataExchange(CDataExchange* pDX); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CAniButton(); + + void LoadAVI(UINT nAniID); + BOOL AutoLoad(UINT nID, CWnd* pParent); + + // Generated message map functions +protected: + //{{AFX_MSG(CAniButton) + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_ANIBUTTON_H__C8477D0C_24E5_4A69_96D5_D9803EFFA30E__INCLUDED_) diff --git a/Jack/Launcher/AnimDlg.cpp b/Jack/Launcher/AnimDlg.cpp new file mode 100644 index 00000000..307da135 --- /dev/null +++ b/Jack/Launcher/AnimDlg.cpp @@ -0,0 +1,193 @@ +/******************************************************************************* +; +; MODULE: ANIMDLG (.CPP) +; +; PURPOSE: Animating dilog box class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "AnimDlg.h" +#include "PlaySound.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#define ANIM_TIMER 100 + +///////////////////////////////////////////////////////////////////////////// +// CAnimDlg dialog + + +CAnimDlg::CAnimDlg(int IDD, CWnd* pParent) + : CDialogEx(IDD, pParent) +{ + //{{AFX_DATA_INIT(CAnimDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + + m_nLeft = 0; + m_nTop = 0; + m_bAnimating = TRUE; + m_nAnimDir = ANIM_RIGHT_DOWN; + m_dwAnimTime = 1000; + m_nSoundID = 0; +} + + +void CAnimDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAnimDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CAnimDlg, CDialogEx) + //{{AFX_MSG_MAP(CAnimDlg) + ON_WM_TIMER() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CAnimDlg message handlers + +BOOL CAnimDlg::OnInitDialog() +{ + // We're not calling CDialogEx::OnInitDialog() because we're going to resize the dialog + // from here anyway. + + // IMPORTANT: Just like for CDialogEx::OnInitDialog() SetBackGround() should have been + // called before we get here, because we'll need the dimensions of the background bitmap + // to calculate the final size of the dialog. In case you want to leave the dialog sizing + // to MFC, and stretching the background, just put the MFC dialog size in m_rcDlgSize instead of + // the background bitmap dimensions. + + // SetDialogPos() should have been called before we get here + + // Get background bitmap size + BITMAP bmpInfo; + m_Background.GetBitmap(&bmpInfo); + + SetWindowPos(NULL, m_nLeft, m_nTop, 0, 0, SWP_NOZORDER); + + // Store the final size of the dialog + m_rcDlgSize.SetRect(m_nLeft, m_nTop, m_nLeft+bmpInfo.bmWidth, m_nTop+bmpInfo.bmHeight); + + // Now we need to know in which direction we're going to animate the dialog to appear, + // so that all of it stays on screen, much like with popup menus. + + // Get screen dims + int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); + int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); + + BOOL bLeft = FALSE; + BOOL bUp = FALSE; + + // If we're off the screen even by a pixel, we're going in the opposite direction (right-down is default) + if(m_rcDlgSize.right > nScreenWidth) + bLeft = TRUE; + if(m_rcDlgSize.bottom > nScreenHeight) + bUp = TRUE; + + if(bLeft && bUp) + { + m_nAnimDir = ANIM_LEFT_UP; + } + else if(bLeft && !bUp) + { + m_nAnimDir = ANIM_LEFT_DOWN; + } + else if(!bLeft && bUp) + { + m_nAnimDir = ANIM_RIGHT_UP; + } + else// if(!bLeft && !bUp) + { + m_nAnimDir = ANIM_RIGHT_DOWN; + } + + // Set our start time + m_dwStartTime = timeGetTime(); + + // Set our animation timer + SetTimer(ANIM_TIMER, 0, NULL); + + // Play a sound + if(m_nSoundID != 0) + PlaySound(m_nSoundID); + + return TRUE; +} + +void CAnimDlg::OnTimer(UINT nIDEvent) +{ + if((nIDEvent == ANIM_TIMER) && m_bAnimating) + { + // Get current size of dialog + CRect rcDlg, rcNewDlg; + GetWindowRect(&rcDlg); + + // Figure out our deltas + DWORD dwDeltaTime = timeGetTime() - m_dwStartTime; + + // Check to see if we're done + if(dwDeltaTime >= m_dwAnimTime) + { + // We're done + rcNewDlg.left = rcDlg.left; + rcNewDlg.top = rcDlg.top; + rcNewDlg.right = rcNewDlg.left + m_rcDlgSize.Width() - 1; + rcNewDlg.bottom = rcNewDlg.top + m_rcDlgSize.Height() - 1; + m_bAnimating = FALSE; + } + else + { + // Calculate our deltas and move us + float fPercent = (float)dwDeltaTime / (float)m_dwAnimTime; + int nNewWidth = (int)((float)m_rcDlgSize.Width() * fPercent); + int nNewHeight = (int)((float)m_rcDlgSize.Height() * fPercent); + + // Make sure we actually need to resize + if((nNewWidth != rcDlg.Width()) || (nNewHeight != rcDlg.Height())) + { + switch(m_nAnimDir) + { + case ANIM_RIGHT_UP: + { + rcNewDlg.SetRect(0,0,0,0); + break; + } + case ANIM_LEFT_UP: + { + rcNewDlg.SetRect(0,0,0,0); + break; + } + case ANIM_LEFT_DOWN: + { + rcNewDlg.SetRect(0,0,0,0); + break; + } + case ANIM_RIGHT_DOWN: + default: + { + rcNewDlg.SetRect(rcDlg.left,rcDlg.top,rcDlg.left + nNewWidth,rcDlg.top + nNewHeight); + break; + } + } + } + } + + SetWindowPos(NULL, rcNewDlg.left, rcNewDlg.top, rcNewDlg.Width(), rcNewDlg.Height(), SWP_NOZORDER); + } + + CDialogEx::OnTimer(nIDEvent); +} diff --git a/Jack/Launcher/AnimDlg.h b/Jack/Launcher/AnimDlg.h new file mode 100644 index 00000000..ebb7b52e --- /dev/null +++ b/Jack/Launcher/AnimDlg.h @@ -0,0 +1,80 @@ +/******************************************************************************* +; +; MODULE: ANIMDLG (.H) +; +; PURPOSE: Animating dialog box class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_ANIMDLG_H__EC21F9C0_21CC_44A6_9460_16D645726576__INCLUDED_) +#define AFX_ANIMDLG_H__EC21F9C0_21CC_44A6_9460_16D645726576__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// AnimDlg.h : header file +// + +#include "DlgEx.h" + +#define ANIM_RIGHT_DOWN 0 +#define ANIM_RIGHT_UP 1 +#define ANIM_LEFT_DOWN 2 +#define ANIM_LEFT_UP 3 + +///////////////////////////////////////////////////////////////////////////// +// CAnimDlg dialog + +class CAnimDlg : public CDialogEx +{ +// Construction +public: + CAnimDlg(int IDD, CWnd* pParent = NULL); // standard constructor + void SetDialogPos(int nLeft, int nTop) { m_nLeft = nLeft; m_nTop = nTop; } + void SetAnimTime(DWORD dwTime) { m_dwAnimTime = dwTime; } + void SetAnimSound(UINT nID) { m_nSoundID = nID; } + +// Dialog Data + //{{AFX_DATA(CAnimDlg) + enum { IDD = 0 }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAnimDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CAnimDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnTimer(UINT nIDEvent); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + + DWORD m_dwAnimTime; // Time for animation to complete in milliseconds + DWORD m_dwStartTime; // When we started + int m_nLeft; // Current left position + int m_nTop; // Current top position + CRect m_rcDlgSize; // Size of dialog + BOOL m_bAnimating; // Are we animating? + int m_nAnimDir; // Animation direction + DWORD m_dwTimeDelay; // How often do we get updates? + UINT m_nSoundID; // Sound for when we init + +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_ANIMDLG_H__EC21F9C0_21CC_44A6_9460_16D645726576__INCLUDED_) diff --git a/Jack/Launcher/BitmapCheckButton.cpp b/Jack/Launcher/BitmapCheckButton.cpp new file mode 100644 index 00000000..efcba631 --- /dev/null +++ b/Jack/Launcher/BitmapCheckButton.cpp @@ -0,0 +1,259 @@ +/******************************************************************************* +; +; MODULE: BITMAPCHECKBUTTON (.CPP) +; +; PURPOSE: Bitmap check button class (derived from CButton) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + + +#include "stdafx.h" +#include "Launcher.h" +#include "BitmapCheckButton.h" +#include "DlgEx.h" +#include "Resource.h" +#include "PlaySound.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CBitmapCheckButton + +CBitmapCheckButton::CBitmapCheckButton() +{ + m_bChecked = FALSE; + m_HelpTextCtrl = NULL; +} + +CBitmapCheckButton::~CBitmapCheckButton() +{ +} + + +BEGIN_MESSAGE_MAP(CBitmapCheckButton, CButton) + //{{AFX_MSG_MAP(CBitmapCheckButton) + ON_WM_MOUSEMOVE() + ON_WM_LBUTTONDOWN() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::OnMouseMove +// +// PURPOSE: Mouse move handler +// +// ----------------------------------------------------------------------- // + +void CBitmapCheckButton::OnMouseMove(UINT nFlags, CPoint point) +{ + CDialogEx* pParent = (CDialogEx*)GetParent(); + if (pParent->GetFocusButton() != this) + { + // Change the help text + if (m_HelpTextCtrl != NULL) + { + CRect rcCtrl; + m_HelpTextCtrl->GetWindowRect(&rcCtrl); + pParent->ScreenToClient(&rcCtrl); + m_HelpTextCtrl->SetWindowText(m_csHelpText); + pParent->InvalidateRect(&rcCtrl); + } + + pParent->SetFocusButton(this); + if(!m_bChecked && (m_bmpFocus.m_hObject != NULL)) + PlaySound(IDR_SELECT); + } + + CButton::OnMouseMove(nFlags, point); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::DrawItem +// +// PURPOSE: Draws the button +// +// ----------------------------------------------------------------------- // + +void CBitmapCheckButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) +{ + CBitmap* pBitmapToDraw; + + // Figure out which image to draw + if(m_bChecked) + { + if((lpDrawItemStruct->itemState & ODS_DISABLED) && (m_bmpCheckedDisabled.m_hObject != NULL)) + pBitmapToDraw = &m_bmpCheckedDisabled; + else + pBitmapToDraw = &m_bmpChecked; + } + else + { + if((lpDrawItemStruct->itemState & ODS_DISABLED) && (m_bmpDisabled.m_hObject != NULL)) + { + pBitmapToDraw = &m_bmpDisabled; + } + else + { + // If we've got the focus, draw our focus + CDialogEx* pParent = (CDialogEx*)GetParent(); + if((pParent->GetFocusButton() == this) && (m_bmpFocus.m_hObject != NULL)) + { + pBitmapToDraw = &m_bmpFocus; + } + else + { + pBitmapToDraw = &m_bmpNormal; + } + } + } + + // Draw the button + CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); + CDC memDC; + memDC.CreateCompatibleDC(pDC); + CBitmap* pOld = memDC.SelectObject(pBitmapToDraw); + if (pOld == NULL) + return; // destructors will clean up + + BITMAP bmpInfo; + pBitmapToDraw->GetBitmap(&bmpInfo); + pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, 0,0, SRCCOPY); + + memDC.SelectObject(pOld); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::LoadBitmaps +// +// PURPOSE: Loads all the bitmap images +// +// ----------------------------------------------------------------------- // + +BOOL CBitmapCheckButton::LoadBitmaps(LPCTSTR lpszNormal, LPCTSTR lpszChecked, LPCTSTR lpszDisabled, + LPCTSTR lpszCheckedDisabled, LPCTSTR lpszFocus) +{ + // Lil' house cleanin + m_bmpNormal.DeleteObject(); + m_bmpChecked.DeleteObject(); + m_bmpDisabled.DeleteObject(); + m_bmpCheckedDisabled.DeleteObject(); + m_bmpFocus.DeleteObject(); + + // Load 'em up. + if (!m_bmpNormal.LoadBitmap(lpszNormal)) + { + TRACE("Failed to load bitmap for normal image.\n"); + return FALSE; + } + if (!m_bmpChecked.LoadBitmap(lpszChecked)) + { + TRACE("Failed to load bitmap for checked image.\n"); + return FALSE; + } + + BOOL bRet = TRUE; + + if (lpszDisabled != NULL) + { + if (!m_bmpDisabled.LoadBitmap(lpszDisabled)) + { + TRACE("Failed to load bitmap for disabled image.\n"); + bRet = FALSE; + } + } + + if (lpszCheckedDisabled != NULL) + { + if (!m_bmpCheckedDisabled.LoadBitmap(lpszCheckedDisabled)) + { + TRACE("Failed to load bitmap for checked disabled image.\n"); + bRet = FALSE; + } + } + + if (lpszFocus != NULL) + { + if (!m_bmpFocus.LoadBitmap(lpszFocus)) + { + TRACE("Failed to load bitmap for focus image.\n"); + bRet = FALSE; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::AutoLoad +// +// PURPOSE: Automatically loads the bitmaps from the resource file +// +// ----------------------------------------------------------------------- // + +BOOL CBitmapCheckButton::AutoLoad(UINT nID, CWnd* pParent) +{ + // first attach the CBitmapCheckButton to the dialog control + if (!SubclassDlgItem(nID, pParent)) + return FALSE; + + CString csButtonName; + GetWindowText(csButtonName); + ASSERT(!csButtonName.IsEmpty()); // must provide a title + + LoadBitmaps(csButtonName + _T("N"), csButtonName + _T("C"), + csButtonName + _T("X"), csButtonName + _T("CX"), csButtonName + _T("F")); + + // we need at least the primary images + if((m_bmpNormal.m_hObject == NULL) || (m_bmpChecked.m_hObject == NULL)) + return FALSE; + + // size to content + SizeToContent(); + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::SizeToContent +// +// PURPOSE: Sizes the button to the bitmap +// +// ----------------------------------------------------------------------- // + +void CBitmapCheckButton::SizeToContent() +{ + if(m_bmpChecked.m_hObject == NULL) + return; + + BITMAP bmpInfo; + m_bmpChecked.GetBitmap(&bmpInfo); + SetWindowPos(NULL, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SWP_NOZORDER|SWP_NOMOVE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::OnLButtonDown +// +// PURPOSE: Mouse button handler +// +// ----------------------------------------------------------------------- // + +void CBitmapCheckButton::OnLButtonDown(UINT nFlags, CPoint point) +{ + m_bChecked = !m_bChecked; + InvalidateRect(NULL); + PlaySound(IDR_BUTTONDOWN); + CButton::OnLButtonDown(nFlags, point); +} \ No newline at end of file diff --git a/Jack/Launcher/BitmapCheckButton.h b/Jack/Launcher/BitmapCheckButton.h new file mode 100644 index 00000000..3b5a51b9 --- /dev/null +++ b/Jack/Launcher/BitmapCheckButton.h @@ -0,0 +1,85 @@ +/******************************************************************************* +; +; MODULE: BITMAPCHECKBUTTON (.H) +; +; PURPOSE: Bitmap check button class (derived from CButton) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_BITMAPCHECKBUTTON_H__DA726A41_B58B_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_BITMAPCHECKBUTTON_H__DA726A41_B58B_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// BitmapCheckButton.h : header file +// + +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CBitmapCheckButton window + +class CBitmapCheckButton : public CButton +{ +// Construction +public: + CBitmapCheckButton(); + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CBitmapCheckButton) + public: + virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CBitmapCheckButton(); + void SetHelpTextCtrl(CStaticEx *ctrl, const char *szText) { m_HelpTextCtrl = ctrl; m_csHelpText = szText; } + + CBitmap m_bmpNormal; // Normal image + CBitmap m_bmpChecked; // Checked image + CBitmap m_bmpDisabled; // Disabled image + CBitmap m_bmpCheckedDisabled; // Checked/disabled image + CBitmap m_bmpFocus; // Focus image (for rollover) + + BOOL AutoLoad(UINT nID, CWnd* pParent); + BOOL LoadBitmaps(LPCTSTR lpszNormal, LPCTSTR lpszChecked, + LPCTSTR lpszDisabled = NULL, LPCTSTR lpszCheckedDisabled = NULL, + LPCTSTR lpszFocus = NULL); + + BOOL GetCheck() { return m_bChecked; } + void SetCheck(BOOL bCheck) { m_bChecked = bCheck; } + void SizeToContent(); + + // Generated message map functions +protected: + //{{AFX_MSG(CBitmapCheckButton) + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + //}}AFX_MSG + + BOOL m_bChecked; + CStaticEx *m_HelpTextCtrl; + CString m_csHelpText; + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_BITMAPCHECKBUTTON_H__DA726A41_B58B_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/ButtonEx.cpp b/Jack/Launcher/ButtonEx.cpp new file mode 100644 index 00000000..0fb19ab1 --- /dev/null +++ b/Jack/Launcher/ButtonEx.cpp @@ -0,0 +1,170 @@ +/******************************************************************************* +; +; MODULE: BUTTONEX (.CPP) +; +; PURPOSE: Extended button class (derived from CBitmapButton) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "ButtonEx.h" +#include "Resource.h" +#include "DlgEx.h" +#include "PlaySound.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CButtonEx + +CButtonEx::CButtonEx() +{ + m_HelpTextCtrl = NULL; + m_hCursor = NULL; +} + +CButtonEx::~CButtonEx() +{ +} + + +BEGIN_MESSAGE_MAP(CButtonEx, CBitmapButton) + //{{AFX_MSG_MAP(CButtonEx) + ON_WM_MOUSEMOVE() + ON_WM_LBUTTONDOWN() + ON_WM_SETCURSOR() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CButtonEx::OnMouseMove +// +// PURPOSE: Mouse move handler +// +// ----------------------------------------------------------------------- // + +void CButtonEx::OnMouseMove(UINT nFlags, CPoint point) +{ + CDialogEx* pParent = (CDialogEx*)GetParent(); + if (pParent->GetFocusButton() != this) + { + // Change the help text + if(m_HelpTextCtrl != NULL) + { + CRect rcCtrl; + m_HelpTextCtrl->GetWindowRect(&rcCtrl); + pParent->ScreenToClient(&rcCtrl); + m_HelpTextCtrl->SetWindowText(m_csHelpText); + pParent->InvalidateRect(&rcCtrl); + } + + pParent->SetFocusButton(this); + if(m_bitmapFocus.m_hObject != NULL) + PlaySound(IDR_SELECT); + + } + + CBitmapButton::OnMouseMove(nFlags, point); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CButtonEx::OnLButtonDown +// +// PURPOSE: Mouse button handler +// +// ----------------------------------------------------------------------- // + +void CButtonEx::OnLButtonDown(UINT nFlags, CPoint point) +{ + PlaySound(IDR_BUTTONDOWN); + + CBitmapButton::OnLButtonDown(nFlags, point); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CButtonEx::DrawItem +// +// PURPOSE: Draws the button +// +// ----------------------------------------------------------------------- // + +void CButtonEx::DrawItem(LPDRAWITEMSTRUCT lpDIS) +{ + ASSERT(lpDIS != NULL); + // must have at least the first bitmap loaded before calling DrawItem + ASSERT(m_bitmap.m_hObject != NULL); // required + + // use the main bitmap for up, the selected bitmap for down + CBitmap* pBitmap = &m_bitmap; + UINT state = lpDIS->itemState; + + // Check for selected + if ((state & ODS_SELECTED) && m_bitmapSel.m_hObject != NULL) + { + pBitmap = &m_bitmapSel; + } + else + { + // Check for focus + CDialogEx* pParent = (CDialogEx*)GetParent(); + if((pParent->GetFocusButton() == this) && (m_bitmapFocus.m_hObject != NULL)) + { + pBitmap = &m_bitmapFocus; // third image for focused + } + else + { + // Check for disabled + if ((state & ODS_DISABLED) && m_bitmapDisabled.m_hObject != NULL) + { + pBitmap = &m_bitmapDisabled; // last image for disabled + } + } + } + + // draw the whole button + CDC* pDC = CDC::FromHandle(lpDIS->hDC); + CDC memDC; + memDC.CreateCompatibleDC(pDC); + CBitmap* pOld = memDC.SelectObject(pBitmap); + if (pOld == NULL) + return; // destructors will clean up + + CRect rect; + rect.CopyRect(&lpDIS->rcItem); + pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), + &memDC, 0, 0, SRCCOPY); + memDC.SelectObject(pOld); + +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CButtonEx::OnSetCursor +// +// PURPOSE: Sets the cursor to our own when the cursor is over us +// +// ----------------------------------------------------------------------- // +BOOL CButtonEx::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) +{ + if( m_hCursor ) + { + ::SetCursor( m_hCursor ); + return TRUE; + } + + return CBitmapButton::OnSetCursor( pWnd, nHitTest, message ); +} + diff --git a/Jack/Launcher/ButtonEx.h b/Jack/Launcher/ButtonEx.h new file mode 100644 index 00000000..fb7ed545 --- /dev/null +++ b/Jack/Launcher/ButtonEx.h @@ -0,0 +1,71 @@ +/******************************************************************************* +; +; MODULE: BUTTONEX (.H) +; +; PURPOSE: Extended button class (derived from CBitmapButton) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_BUTTONEX_H__5DC081D4_42E2_41F1_839D_89EE9366D0FF__INCLUDED_) +#define AFX_BUTTONEX_H__5DC081D4_42E2_41F1_839D_89EE9366D0FF__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// ButtonEx.h : header file +// + +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CButtonEx window + +class CButtonEx : public CBitmapButton +{ +// Construction +public: + CButtonEx(); + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CButtonEx) + virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CButtonEx(); + + void SetHelpTextCtrl(CStaticEx *ctrl, const char *szText) { m_HelpTextCtrl = ctrl; m_csHelpText = szText; } + + void SetHCursor( HCURSOR hCursor ) { m_hCursor = hCursor; } + + // Generated message map functions +protected: + //{{AFX_MSG(CButtonEx) + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() + + CStaticEx *m_HelpTextCtrl; // Static text control (if any) linked to this button + CString m_csHelpText; // Text for the above control + + HCURSOR m_hCursor; // Cursor for this Button +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_BUTTONEX_H__5DC081D4_42E2_41F1_839D_89EE9366D0FF__INCLUDED_) diff --git a/Jack/Launcher/CustomizeDlg.cpp b/Jack/Launcher/CustomizeDlg.cpp new file mode 100644 index 00000000..f5cc26fd --- /dev/null +++ b/Jack/Launcher/CustomizeDlg.cpp @@ -0,0 +1,476 @@ +// CustomizeDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "launcher.h" +#include "CustomizeDlg.h" +#include "textcheckbox.h" +#include "IO.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +#define CD_CLOSE_X 419 +#define CD_CLOSE_Y 6 +#define CD_OK_X 115 +#define CD_OK_Y 387 +#define CD_CANCEL_X 227 +#define CD_CANCEL_Y 387 +#define CD_NEXT_X 313 +#define CD_NEXT_Y 340 +#define CD_PREVIOUS_X 27 +#define CD_PREVIOUS_Y 340 + +#define CD_COLUMN_1_X 28 +#define CD_ROW_Y_START 74 +#define CD_ROW_Y_OFFSET 21 // 20 + +//////////////////////////////////////////////////////////////////////////// +// CustomizeDlg dialog + + +CustomizeDlg::CustomizeDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(CustomizeDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CustomizeDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + + for( int i = 0; i < CD_MAX_MODS_PER_PAGE; ++i ) + { + m_apTextCheckBox[i] = NULL; + } +} + + +void CustomizeDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CustomizeDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CustomizeDlg, CMoveDialog) + //{{AFX_MSG_MAP(CustomizeDlg) + ON_BN_CLICKED(IDC_CD_CLOSE, OnClose) + ON_BN_CLICKED(IDC_CD_CANCEL, OnCancel) + ON_BN_CLICKED(IDC_CD_OK, OnOK) + ON_BN_CLICKED(IDC_CD_NEXT, OnNext) + ON_BN_CLICKED(IDC_CD_PREVIOUS, OnPrevious) + + ON_BN_CLICKED(IDC_CD_MOD_01, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_02, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_03, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_04, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_05, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_06, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_07, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_08, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_09, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_10, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_11, OnModButtonClicked) + ON_BN_CLICKED(IDC_CD_MOD_12, OnModButtonClicked) + + ON_WM_PAINT() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CustomizeDlg message handlers + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnClose +// +// PURPOSE: Close button handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnClose() +{ + OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnInitDialog +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CustomizeDlg::OnInitDialog() +{ + SetBackGround( IDB_CD_BACKGROUND ); + + CMoveDialog::OnInitDialog(); + + // Add the buttons to our dialog box... + + AddButton( IDC_CD_CLOSE, CD_CLOSE_X, CD_CLOSE_Y ); + AddButton( IDC_CD_OK, CD_OK_X, CD_OK_Y ); + AddButton( IDC_CD_CANCEL, CD_CANCEL_X, CD_CANCEL_Y ); + AddButton( IDC_CD_NEXT, CD_NEXT_X, CD_NEXT_Y ); + AddButton( IDC_CD_PREVIOUS, CD_PREVIOUS_X, CD_PREVIOUS_Y ); + + // Create the buttons for a 'page' of mods... + + static UINT aModID[CD_MAX_MODS_PER_PAGE] = { IDC_CD_MOD_01, IDC_CD_MOD_02, IDC_CD_MOD_03, IDC_CD_MOD_04, + IDC_CD_MOD_05, IDC_CD_MOD_06, IDC_CD_MOD_07, IDC_CD_MOD_08, + IDC_CD_MOD_09, IDC_CD_MOD_10, IDC_CD_MOD_11, IDC_CD_MOD_12 }; + + char szMod[64] = {0}; + for( int i = 0; i < CD_MAX_MODS_PER_PAGE; ++i ) + { + int iPosY = (CD_ROW_Y_START + (i * CD_ROW_Y_OFFSET)); + + sprintf( szMod, "CJ Modification %i", i); + m_apTextCheckBox[i] = (CTextCheckBox*)AddTextCheckBox( aModID[i], CD_COLUMN_1_X, iPosY, szMod ); + + if( !m_apTextCheckBox[i] ) + return false; + + m_apTextCheckBox[i]->ShowWindow( SW_HIDE ); + } + + // See if there was a previously selected mod... + + char szSelectedMod[256] = {0}; + DWORD bufSize = sizeof(szSelectedMod); + + if( theApp.m_RegMgr.GetField( FIELD_SELECTEDMOD, szSelectedMod, bufSize ) ) + { + if( szSelectedMod[0] ) + { + char szFile[MAX_PATH] = {0}; + sprintf( szFile, "%s\\%s", DIR_MODS, szSelectedMod ); + + CFileFind cFileFinder; + + BOOL bFound = cFileFinder.FindFile( szFile ); + if( bFound ) + { + cFileFinder.FindNextFile(); + + // Make sure it is actually a directory... + + if( !cFileFinder.IsDirectory() ) + bFound = false; + } + + // End the search... + + cFileFinder.Close(); + + // Only set the selected mod if it still exists... + + if( bFound ) + { + m_sSelectedMod = szSelectedMod; + } + } + } + + // Find all the mods we can chose and set the check box text to the name of the mod + // and set the button visible... + + BuildCustomList(); + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnCancel +// +// PURPOSE: Cancel button handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnCancel() +{ + CMoveDialog::OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnOK +// +// PURPOSE: Ok button handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnOK() +{ + // Write out the desired mod to the registry key... + + theApp.m_RegMgr.SetField( FIELD_SELECTEDMOD, const_cast(m_sSelectedMod.c_str()) ); + + CMoveDialog::OnOK(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnPaint +// +// PURPOSE: WM_PAINT handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + + // Do not call CMoveDialog::OnPaint() for painting messages +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::BuildCustomList +// +// PURPOSE: Builds the list of mods to choose from... +// +// ----------------------------------------------------------------------- // + +bool CustomizeDlg::BuildCustomList() +{ + if( !DirExist( DIR_MODS )) + { + theApp.MessageBox( IDS_NOCUSTOMDIR, IDS_GAME_NAME, MB_OK | MB_ICONEXCLAMATION ); + return false; + } + + // Start fresh... + + m_setMods.clear(); + + // Begin searching the mods directory for any subdirectories that we consider to be a mod... + + char szFiles[MAX_PATH] = {0}; + sprintf( szFiles, "%s\\*", DIR_MODS); + + CFileFind cFileFinder; + + BOOL bFound = cFileFinder.FindFile( szFiles ); + while( bFound ) + { + bFound = cFileFinder.FindNextFile(); + + // Ignore the 'dots' directories and all files... + + if( !cFileFinder.IsDirectory() || cFileFinder.IsDots() ) + continue; + + // Add the title, not the path, to the list of mod names... + + m_setMods.insert( std::string(cFileFinder.GetFileTitle()) ); + } + + // End the search... + + cFileFinder.Close(); + + // Set the text and visibility of the buttons... + + StringSet::const_iterator iter = m_setMods.begin(); + for( int i = 0; i < CD_MAX_MODS_PER_PAGE; ++i, ++iter ) + { + if( iter == m_setMods.end() ) + break; + + if( !m_apTextCheckBox[i] ) + return false; + + m_apTextCheckBox[i]->SetWindowText( (*iter).c_str() ); + m_apTextCheckBox[i]->ShowWindow( SW_NORMAL ); + m_apTextCheckBox[i]->SetCheck( FALSE ); + m_apTextCheckBox[i]->EnableWindow( (m_sSelectedMod.empty() ? TRUE : FALSE) ); + + if( *iter == m_sSelectedMod ) + { + m_apTextCheckBox[i]->SetCheck( TRUE ); + m_apTextCheckBox[i]->EnableWindow( TRUE ); + } + } + + // If there are more mods we need to enable the 'next' button... + // We are on the first page so no need to enable the 'prev' button... + + GetDlgItem( IDC_CD_NEXT )->EnableWindow( m_setMods.size() > CD_MAX_MODS_PER_PAGE ? TRUE : FALSE ); + GetDlgItem( IDC_CD_PREVIOUS )->EnableWindow( FALSE ); + + return true; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnNext +// +// PURPOSE: Next button handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnNext() +{ + // Get the name of the last mod from the current page... + + CString sModName; + m_apTextCheckBox[CD_MAX_MODS_PER_PAGE - 1]->GetWindowText( sModName ); + + StringSet::const_iterator iter = m_setMods.find( std::string(sModName) ); + + // Increment the iterator so we are on the next mod... + + ++iter; + + int nMods; + for( nMods = 0; nMods < CD_MAX_MODS_PER_PAGE; ++nMods, ++iter ) + { + if( iter == m_setMods.end() ) + break; + + if( !m_apTextCheckBox[nMods] ) + return; + + m_apTextCheckBox[nMods]->SetWindowText( (*iter).c_str() ); + m_apTextCheckBox[nMods]->ShowWindow( SW_NORMAL ); + m_apTextCheckBox[nMods]->SetCheck( FALSE ); + m_apTextCheckBox[nMods]->EnableWindow( (m_sSelectedMod.empty() ? TRUE : FALSE) ); + + if( *iter == m_sSelectedMod ) + { + m_apTextCheckBox[nMods]->SetCheck( TRUE ); + m_apTextCheckBox[nMods]->EnableWindow( TRUE ); + } + + // Force a re-draw... + + m_apTextCheckBox[nMods]->Invalidate( ); + } + + // If there are more mods we need to enable the 'next' button... + // We have gone to a new page so the 'prev' button needs to be enabled... + + BOOL bNext = ( (nMods >= CD_MAX_MODS_PER_PAGE) && (iter != m_setMods.end()) ); + GetDlgItem( IDC_CD_NEXT )->EnableWindow( bNext ); + + GetDlgItem( IDC_CD_PREVIOUS )->EnableWindow( TRUE ); + + // If we didn't fill out a whole page of mods then we need to hide the rest of the buttons... + + for( ; nMods < CD_MAX_MODS_PER_PAGE; ++nMods ) + { + m_apTextCheckBox[nMods]->ShowWindow( SW_HIDE ); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnPrevious +// +// PURPOSE: Previous button handler +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnPrevious() +{ + // Get the name of the first mod from the current page... + + CString sModName; + m_apTextCheckBox[0]->GetWindowText( sModName ); + + StringSet::const_iterator iter = m_setMods.find( std::string(sModName) ); + + // Increment the iterator so we are on the next mod... + + --iter; + + int nMods; + for( nMods = CD_MAX_MODS_PER_PAGE - 1; nMods > -1; --nMods, --iter ) + { + if( !m_apTextCheckBox[nMods] ) + return; + + m_apTextCheckBox[nMods]->SetWindowText( (*iter).c_str() ); + m_apTextCheckBox[nMods]->ShowWindow( SW_NORMAL ); + m_apTextCheckBox[nMods]->SetCheck( FALSE ); + m_apTextCheckBox[nMods]->EnableWindow( (m_sSelectedMod.empty() ? TRUE : FALSE) ); + + if( *iter == m_sSelectedMod ) + { + m_apTextCheckBox[nMods]->SetCheck( TRUE ); + m_apTextCheckBox[nMods]->EnableWindow( TRUE ); + } + + // Force a re-draw... + + m_apTextCheckBox[nMods]->Invalidate( ); + + if( iter == m_setMods.begin() ) + break; + } + + // If there are more mods we need to enable the 'next' button... + // We have gone to a new page so the 'prev' button needs to be enabled... + + GetDlgItem( IDC_CD_NEXT )->EnableWindow( TRUE ); + GetDlgItem( IDC_CD_PREVIOUS )->EnableWindow( (iter == m_setMods.begin() ? FALSE : TRUE) ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CustomizeDlg::OnModButtonClicked +// +// PURPOSE: One of the mod buttons has been clicked... +// +// ----------------------------------------------------------------------- // + +void CustomizeDlg::OnModButtonClicked() +{ + // Figure out which button was clicked and figure out if it was + // just selected or deselected... + + int nSelected = -1; + m_sSelectedMod.clear(); + + for( int i = 0; i < CD_MAX_MODS_PER_PAGE; ++i ) + { + if( !m_apTextCheckBox[i] ) + return; + + if( m_apTextCheckBox[i]->GetCheck() ) + { + nSelected = i; + + // Cache the selected mod... + + CString sModName; + m_apTextCheckBox[i]->GetWindowText( sModName ); + m_sSelectedMod = std::string( sModName ); + + break; + } + } + + // If none of the mods are selected be sure to enable them all. Otherwise + // disable them all but the selected one. + + for( i = 0; i < CD_MAX_MODS_PER_PAGE; ++i ) + { + if( !m_apTextCheckBox[i] ) + return; + + if( nSelected == i ) + continue; + + m_apTextCheckBox[i]->EnableWindow( (nSelected >= 0 ? FALSE : TRUE) ); + } +} \ No newline at end of file diff --git a/Jack/Launcher/CustomizeDlg.h b/Jack/Launcher/CustomizeDlg.h new file mode 100644 index 00000000..05a1ba05 --- /dev/null +++ b/Jack/Launcher/CustomizeDlg.h @@ -0,0 +1,72 @@ +#if !defined(AFX_CUSTOMIZEDLG_H__852445D9_2231_4694_8E1C_6B9BDBD6C089__INCLUDED_) +#define AFX_CUSTOMIZEDLG_H__852445D9_2231_4694_8E1C_6B9BDBD6C089__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// CustomizeDlg.h : header file +// + +#include "MoveDlg.h" +#include "EditEx.h" +#include "StaticEx.h" +#include "Utils.h" +#include +#include + +#define CD_MAX_MODS_PER_PAGE 12 + +class CTextCheckBox; +///////////////////////////////////////////////////////////////////////////// +// CustomizeDlg dialog + +class CustomizeDlg : public CMoveDialog +{ +// Construction +public: + CustomizeDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CustomizeDlg) + enum { IDD = IDD_CUSTOMIZE_DIALOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CustomizeDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + bool BuildCustomList(); + + CTextCheckBox *m_apTextCheckBox[CD_MAX_MODS_PER_PAGE]; + + typedef std::set StringSet; + StringSet m_setMods; + + std::string m_sSelectedMod; + + // Generated message map functions + //{{AFX_MSG(CustomizeDlg) + afx_msg void OnClose(); + virtual BOOL OnInitDialog(); + afx_msg void OnCancel(); + afx_msg void OnOK(); + afx_msg void OnNext(); + afx_msg void OnPrevious(); + afx_msg void OnPaint(); + afx_msg void OnModButtonClicked(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CUSTOMIZEDLG_H__852445D9_2231_4694_8E1C_6B9BDBD6C089__INCLUDED_) diff --git a/Jack/Launcher/DetailSettingsDlg.cpp b/Jack/Launcher/DetailSettingsDlg.cpp new file mode 100644 index 00000000..f3e813db --- /dev/null +++ b/Jack/Launcher/DetailSettingsDlg.cpp @@ -0,0 +1,184 @@ +/******************************************************************************* +; +; MODULE: DETAILSETTINGSDLG (.CPP) +; +; PURPOSE: Detail settings dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "DetailSettingsDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define DSD_CLOSE_X 435 +#define DSD_CLOSE_Y 6 +#define DSD_CANCEL_X 178 +#define DSD_CANCEL_Y 440 + +#define DSD_HIGHDETAIL_X 123 // Original = 123 +#define DSD_HIGHDETAIL_Y 168 +#define DSD_MEDIUMDETAIL_X DSD_HIGHDETAIL_X +#define DSD_MEDIUMDETAIL_Y 277 +#define DSD_LOWDETAIL_X DSD_HIGHDETAIL_X +#define DSD_LOWDETAIL_Y 386 + + +#define DSD_HEADERTEXT_Y 38 +#define DSD_HEADERTEXT_HEIGHT 58 +#define DSD_HIGHTEXT_Y 117 +#define DSD_HIGHTEXT_HEIGHT 49 +#define DSD_MEDIUMTEXT_Y 226 +#define DSD_MEDIUMTEXT_HEIGHT DSD_HIGHTEXT_HEIGHT +#define DSD_LOWTEXT_Y 336 +#define DSD_LOWTEXT_HEIGHT DSD_HIGHTEXT_HEIGHT + + +///////////////////////////////////////////////////////////////////////////// +// CDetailSettingsDlg dialog + + +CDetailSettingsDlg::CDetailSettingsDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(CDetailSettingsDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CDetailSettingsDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CDetailSettingsDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CDetailSettingsDlg) + DDX_Control(pDX, IDC_MEDIUMTEXT, m_MediumText); + DDX_Control(pDX, IDC_LOWTEXT, m_LowText); + DDX_Control(pDX, IDC_HIGHTEXT, m_HighText); + DDX_Control(pDX, IDC_HEADERTEXT, m_HeaderText); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CDetailSettingsDlg, CMoveDialog) + //{{AFX_MSG_MAP(CDetailSettingsDlg) + ON_BN_CLICKED(IDC_DSD_CLOSE, OnClose) + ON_BN_CLICKED(IDC_DSD_HIGH, OnHighDetail) + ON_BN_CLICKED(IDC_DSD_LOW, OnLowDetail) + ON_BN_CLICKED(IDC_DSD_MEDIUM, OnMediumDetail) + ON_WM_PAINT() + ON_BN_CLICKED(IDC_DSD_CANCEL, OnCancel) + ON_WM_CTLCOLOR() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CDetailSettingsDlg message handlers + +void CDetailSettingsDlg::OnCancel() +{ + CMoveDialog::OnCancel(); +} + +void CDetailSettingsDlg::OnClose() +{ + CMoveDialog::OnCancel(); +} + +void CDetailSettingsDlg::OnHighDetail() +{ + theApp.m_dwDetailSetting = DETAIL_HIGH; + OnOK(); +} + +void CDetailSettingsDlg::OnLowDetail() +{ + theApp.m_dwDetailSetting = DETAIL_LOW; + OnOK(); +} + +void CDetailSettingsDlg::OnMediumDetail() +{ + theApp.m_dwDetailSetting = DETAIL_MEDIUM; + OnOK(); +} + +BOOL CDetailSettingsDlg::OnInitDialog() +{ + SetBackGround(IDB_DSD_BACKGROUND); + + CMoveDialog::OnInitDialog(); + + // Here's where we define what buttons go in our dialog + AddButton(IDC_DSD_CLOSE,DSD_CLOSE_X,DSD_CLOSE_Y); + AddButton(IDC_DSD_HIGH,DSD_HIGHDETAIL_X,DSD_HIGHDETAIL_Y); + AddButton(IDC_DSD_MEDIUM,DSD_MEDIUMDETAIL_X,DSD_MEDIUMDETAIL_Y); + AddButton(IDC_DSD_LOW,DSD_LOWDETAIL_X,DSD_LOWDETAIL_Y); + AddButton(IDC_DSD_CANCEL,DSD_CANCEL_X,DSD_CANCEL_Y); + + CRect rcDlg; + GetWindowRect(&rcDlg); + + CString csText; + csText.LoadString(IDS_DETAIL_HEADER); + m_HeaderText.SetFontName("Arial Narrow"); + m_HeaderText.SetFontSize(13); + m_HeaderText.SetTextColor(RGB(0,0,0)); + m_HeaderText.SetWindowText(csText); + m_HeaderText.SetWindowPos(NULL,15,DSD_HEADERTEXT_Y,rcDlg.Width()-30,DSD_HEADERTEXT_HEIGHT,SWP_NOZORDER); + csText.LoadString(IDS_DETAIL_LOW); + m_LowText.SetFontName("Arial Narrow"); + m_LowText.SetFontSize(13); + m_LowText.SetTextColor(RGB(0,0,0)); + m_LowText.SetWindowText(csText); + m_LowText.SetWindowPos(NULL,15,DSD_LOWTEXT_Y,rcDlg.Width()-30,DSD_LOWTEXT_HEIGHT,SWP_NOZORDER); + csText.LoadString(IDS_DETAIL_MEDIUM); + m_MediumText.SetFontName("Arial Narrow"); + m_MediumText.SetFontSize(13); + m_MediumText.SetTextColor(RGB(0,0,0)); + m_MediumText.SetWindowText(csText); + m_MediumText.SetWindowPos(NULL,15,DSD_MEDIUMTEXT_Y,rcDlg.Width()-30,DSD_MEDIUMTEXT_HEIGHT,SWP_NOZORDER); + csText.LoadString(IDS_DETAIL_HIGH); + m_HighText.SetFontName("Arial Narrow"); + m_HighText.SetFontSize(13); + m_HighText.SetTextColor(RGB(0,0,0)); + m_HighText.SetWindowText(csText); + m_HighText.SetWindowPos(NULL,15,DSD_HIGHTEXT_Y,rcDlg.Width()-30,DSD_HIGHTEXT_HEIGHT,SWP_NOZORDER); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void CDetailSettingsDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + // Do not call CDialog::OnPaint() for painting messages +} + +HBRUSH CDetailSettingsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) +{ + switch(nCtlColor) + { + case CTLCOLOR_DLG: + case CTLCOLOR_BTN: + { + return (HBRUSH)GetStockObject(NULL_BRUSH); + } + default: + return CMoveDialog::OnCtlColor(pDC, pWnd, nCtlColor); + } +} diff --git a/Jack/Launcher/DetailSettingsDlg.h b/Jack/Launcher/DetailSettingsDlg.h new file mode 100644 index 00000000..1f620f1f --- /dev/null +++ b/Jack/Launcher/DetailSettingsDlg.h @@ -0,0 +1,71 @@ +/******************************************************************************* +; +; MODULE: DETAILSETTINGSDLG (.H) +; +; PURPOSE: Detail settings dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_DETAILSETTINGSDLG_H__ABB668E1_BC9E_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_DETAILSETTINGSDLG_H__ABB668E1_BC9E_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// DetailSettingsDlg.h : header file +// + +#include "MoveDlg.h" +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CDetailSettingsDlg dialog + +class CDetailSettingsDlg : public CMoveDialog +{ +// Construction +public: + CDetailSettingsDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CDetailSettingsDlg) + enum { IDD = IDD_DETAILSETTINGS_DIALOG }; + CStaticEx m_MediumText; + CStaticEx m_LowText; + CStaticEx m_HighText; + CStaticEx m_HeaderText; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CDetailSettingsDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CDetailSettingsDlg) + afx_msg void OnCancel(); + afx_msg void OnClose(); + afx_msg void OnHighDetail(); + afx_msg void OnLowDetail(); + afx_msg void OnMediumDetail(); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DETAILSETTINGSDLG_H__ABB668E1_BC9E_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/DisplayDlg.cpp b/Jack/Launcher/DisplayDlg.cpp new file mode 100644 index 00000000..aaff5779 --- /dev/null +++ b/Jack/Launcher/DisplayDlg.cpp @@ -0,0 +1,211 @@ +/******************************************************************************* +; +; MODULE: DISPLAYDLG (.CPP) +; +; PURPOSE: Display options dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "DisplayDlg.h" +#include "DisplayMgr.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define DD_CLOSE_X 577 +#define DD_CLOSE_Y 6 +#define DD_OK_X 194 +#define DD_OK_Y 349 +#define DD_CANCEL_X 306 +#define DD_CANCEL_Y 349 + +#define DD_RESOLUTION_LIST_X 16 +#define DD_RESOLUTION_LIST_Y 73 +#define DD_RESOLUTION_LIST_WIDTH 133 +#define DD_RESOLUTION_LIST_HEIGHT 248 +#define DD_RENDERER_LIST_X 181 +#define DD_RENDERER_LIST_Y 73 +#define DD_RENDERER_LIST_WIDTH 405 +#define DD_RENDERER_LIST_HEIGHT 106 +#define DD_DISPLAY_LIST_X 181 +#define DD_DISPLAY_LIST_Y 205 +#define DD_DISPLAY_LIST_WIDTH 405 +#define DD_DISPLAY_LIST_HEIGHT 106 + +CDisplayMgr* g_pDisplayMgr = NULL; + +///////////////////////////////////////////////////////////////////////////// +// CDisplayDlg dialog + + +CDisplayDlg::CDisplayDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(CDisplayDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CDisplayDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CDisplayDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CDisplayDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CDisplayDlg, CMoveDialog) + //{{AFX_MSG_MAP(CDisplayDlg) + ON_WM_CTLCOLOR() + ON_WM_PAINT() + ON_LBN_SELCHANGE(IDC_DISPLAY_LIST, OnSelchangeDisplayList) + ON_LBN_SELCHANGE(IDC_RENDERER_LIST, OnSelchangeRendererList) + ON_LBN_SELCHANGE(IDC_RESOLUTION_LIST, OnSelchangeResolutionList) + ON_BN_CLICKED(IDC_DD_OK, OnOK) + ON_BN_CLICKED(IDC_DD_CANCEL, OnCancel) + ON_BN_CLICKED(IDC_DD_CLOSE, OnClose) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CDisplayDlg message handlers + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayDlg::OnClose +// +// PURPOSE: Closes Display Dialog Box when the X in the corner is clicked +// +// ----------------------------------------------------------------------- // +void CDisplayDlg::OnClose() +{ + OnCancel(); +} + +BOOL CDisplayDlg::OnInitDialog() +{ + SetBackGround(IDB_DD_BACKGROUND); + + if (!g_pDisplayMgr) + { + g_pDisplayMgr = new CDisplayMgr(); + if (!g_pDisplayMgr->Init("", "display.cfg")) + { + OnDestroy(); + return TRUE; + } + } + + + CMoveDialog::OnInitDialog(); + + AddButton(IDC_DD_CLOSE,DD_CLOSE_X,DD_CLOSE_Y); + AddButton(IDC_DD_OK,DD_OK_X,DD_OK_Y); + AddButton(IDC_DD_CANCEL,DD_CANCEL_X,DD_CANCEL_Y); + + CWnd* pWnd = GetDlgItem(IDC_RENDERER_LIST); + if(pWnd) + { + //pWnd->SetFont(&theApp.m_Font); + pWnd->SetWindowPos(NULL,DD_RENDERER_LIST_X,DD_RENDERER_LIST_Y,DD_RENDERER_LIST_WIDTH,DD_RENDERER_LIST_HEIGHT,SWP_NOZORDER); + } + pWnd = GetDlgItem(IDC_DISPLAY_LIST); + if(pWnd) + { + //pWnd->SetFont(&theApp.m_Font); + pWnd->SetWindowPos(NULL,DD_DISPLAY_LIST_X,DD_DISPLAY_LIST_Y,DD_DISPLAY_LIST_WIDTH,DD_DISPLAY_LIST_HEIGHT,SWP_NOZORDER); + } + pWnd = GetDlgItem(IDC_RESOLUTION_LIST); + if(pWnd) + { + //pWnd->SetFont(&theApp.m_Font); + pWnd->SetWindowPos(NULL,DD_RESOLUTION_LIST_X,DD_RESOLUTION_LIST_Y,DD_RESOLUTION_LIST_WIDTH,DD_RESOLUTION_LIST_HEIGHT,SWP_NOZORDER); + } + + if (g_pDisplayMgr->GetNumRenderers() <= 0) + { + theApp.MessageBox( IDS_NORENS, IDS_GAME_NAME, MB_OK | MB_ICONSTOP ); + return(0); + } + + g_pDisplayMgr->FillListBoxes(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); + g_pDisplayMgr->UpdateListSelections(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); + + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +HBRUSH CDisplayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) +{ + switch(nCtlColor) + { + case CTLCOLOR_LISTBOX: + case CTLCOLOR_MSGBOX: + { + // Set color to green on black and return the background brush. + pDC->SetTextColor(crNormalText); + pDC->SetBkColor(RGB(0, 0, 0)); + return (HBRUSH)(theApp.m_BkBrush.GetSafeHandle()); + } + default: + return CMoveDialog::OnCtlColor(pDC, pWnd, nCtlColor); + } +} + +void CDisplayDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + + // Do not call CMoveDialog::OnPaint() for painting messages +} + +void CDisplayDlg::OnOK() +{ + if (g_pDisplayMgr) + { + g_pDisplayMgr->UpdateListSelections(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); + } + CMoveDialog::OnOK(); +} + +void CDisplayDlg::OnCancel() +{ + if (g_pDisplayMgr) + g_pDisplayMgr->SetCurrentRenderer((CRenderer*)NULL); + + CMoveDialog::OnCancel(); +} + +void CDisplayDlg::OnSelchangeDisplayList() +{ + g_pDisplayMgr->UpdateListSelections(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); +} + +void CDisplayDlg::OnSelchangeRendererList() +{ + g_pDisplayMgr->UpdateListSelections(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); +} + +void CDisplayDlg::OnSelchangeResolutionList() +{ + g_pDisplayMgr->UpdateListSelections(GetDlgItem(IDC_RENDERER_LIST)->GetSafeHwnd(), GetDlgItem(IDC_DISPLAY_LIST)->GetSafeHwnd(), GetDlgItem(IDC_RESOLUTION_LIST)->GetSafeHwnd()); +} diff --git a/Jack/Launcher/DisplayDlg.h b/Jack/Launcher/DisplayDlg.h new file mode 100644 index 00000000..49a65074 --- /dev/null +++ b/Jack/Launcher/DisplayDlg.h @@ -0,0 +1,68 @@ +/******************************************************************************* +; +; MODULE: DISPLAYDLG (.H) +; +; PURPOSE: Display options dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_DISPLAYDLG_H__4C8E4A2E_B705_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_DISPLAYDLG_H__4C8E4A2E_B705_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// DisplayDlg.h : header file +// + +#include "MoveDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// CDisplayDlg dialog + +class CDisplayDlg : public CMoveDialog +{ +// Construction +public: + CDisplayDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CDisplayDlg) + enum { IDD = IDD_DISPLAY_DIALOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CDisplayDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CDisplayDlg) + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg void OnOK(); + afx_msg void OnCancel(); + afx_msg void OnClose(); + afx_msg void OnSelchangeDisplayList(); + afx_msg void OnSelchangeRendererList(); + afx_msg void OnSelchangeResolutionList(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DISPLAYDLG_H__4C8E4A2E_B705_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/DisplayMgr.cpp b/Jack/Launcher/DisplayMgr.cpp new file mode 100644 index 00000000..d35a925f --- /dev/null +++ b/Jack/Launcher/DisplayMgr.cpp @@ -0,0 +1,1515 @@ +/**************************************************************************** +; +; MODULE: DISPLAYMGR (.CPP) +; +; PURPOSE: Display manager class (for movies, demos, etc.) +; +; HISTORY: 06/08/98 [blg] This file was created +; +; COMMENT: Copyright (c) 1998, Monolith Productions Inc. +; +****************************************************************************/ + + +// Includes... + +#include "StdAfx.h" +#include "DisplayMgr.h" +#include "io.h" + +#include "d3d8.h" + +// Dummy declaration for proper linking +IDirect3D8 * WINAPI Direct3DCreate8(UINT SDKVersion) { return 0; } +typedef IDirect3D8 *(WINAPI *TD3DCreateFn)(UINT SDKVersion); + +#define DX8_RENDERER_NAME "DX8 Renderer" + +// Functions... + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CResolution::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CResolution::Init(int nWidth, int nHeight, int nDepth) +{ + // Sanity checks... + + ASSERT(!IsValid()); + + + // Set simple members... + + m_nWidth = nWidth; + m_nHeight = nHeight; + m_nDepth = nDepth; + + + // Construct the name... + + m_sName.Format("%i x %i x %i", m_nWidth, m_nHeight, m_nDepth); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CResolution::GetListText +// +// PURPOSE: Formats a text string to be used for display purposes +// +// ----------------------------------------------------------------------- // + +CString CResolution::GetListText() +{ + // All done... + + return(GetName()); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CDisplay::Init(const char* sName, const char* sDesc, BOOL bHardware) +{ + // Sanity checks... + + ASSERT(!IsValid()); + + + // Set simple members... + + m_sName = sName; + m_sDesc = sDesc; + m_bHardware = bHardware; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CDisplay::Term() +{ + // Terminate all resolution objects... + + POSITION pos = m_collResolutions.GetHeadPosition(); + + while (pos) + { + CResolution* pResolution = (CResolution*)m_collResolutions.GetNext(pos); + ASSERT(pResolution); + if (pResolution) delete pResolution; + } + + m_collResolutions.RemoveAll(); + + + // Clear all members... + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::GetListText +// +// PURPOSE: Formats a text string to be used for display purposes +// +// ----------------------------------------------------------------------- // + +CString CDisplay::GetListText() +{ + // Build the text string... + + CString sDisplay; + + sDisplay.Format("%s (%s)", GetDescription(), GetName()); + + + // All done... + + return(sDisplay); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::GetSelectedListResolution +// +// PURPOSE: Gets the currently selected resolution from the given list +// box. +// +// ----------------------------------------------------------------------- // + +CResolution* CDisplay::GetSelectedListResolution(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(NULL); + + + // Get the current selection index... + + int index = SendMessage(hList, LB_GETCURSEL, 0, 0); + if (index == LB_ERR) return(NULL); + + + // Get the selected resolution from the index... + + LRESULT lResult = SendMessage(hList, LB_GETITEMDATA, index, 0); + if (lResult == LB_ERR) return(NULL); + + CResolution* pResolution = (CResolution*)lResult; + if (!pResolution) return(NULL); + + + // All done... + + return(pResolution); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::AddResolution +// +// PURPOSE: Adds a new resolution object +// +// ----------------------------------------------------------------------- // + +CResolution* CDisplay::AddResolution(int nWidth, int nHeight, int nDepth) +{ + // Create and init a new display object... + + CResolution* pResolution = new CResolution(); + + if (!pResolution->Init(nWidth, nHeight, nDepth)) + { + delete pResolution; + return(NULL); + } + + + // Add the new object to our list... + + m_collResolutions.AddTail(pResolution); + + + // All done... + + return(pResolution); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::FindResolution +// +// PURPOSE: Searches for a resolution with the given dimensions +// +// ----------------------------------------------------------------------- // + +CResolution* CDisplay::FindResolution(int nWidth, int nHeight, int nDepth) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Search for a resolution object with the given dimensions... + + POSITION pos = m_collResolutions.GetHeadPosition(); + + while (pos) + { + CResolution* pResolution = (CResolution*)m_collResolutions.GetNext(pos); + ASSERT(pResolution); + + if (pResolution->GetWidth() == nWidth && pResolution->GetHeight() == nHeight && pResolution->GetDepth() == nDepth) + { + return(pResolution); + } + } + + + // If we get here, we didn't find a match... + + return(NULL); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::SetCurrentResolution +// +// PURPOSE: Sets the current resolution for the display +// +// ----------------------------------------------------------------------- // + +BOOL CDisplay::SetCurrentResolution(int nWidth, int nHeight, int nDepth) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Find the requested resolution... + + CResolution* pResolution = FindResolution(nWidth, nHeight, nDepth); + if (!pResolution) return(FALSE); + + + // Set the current resolution... + + m_pCurResolution = pResolution; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::SelectCurrentListResolution +// +// PURPOSE: Select the current resolution in the given list box +// +// ----------------------------------------------------------------------- // + +BOOL CDisplay::SelectCurrentListResolution(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(FALSE); + if (!m_pCurResolution) return(FALSE); + + + // Search for this item in the list box... + + int nCount = SendMessage(hList, LB_GETCOUNT, 0, 0); + if (nCount <= 0) return(FALSE); + + for (int i = 0; i < nCount; i++) + { + LRESULT lRet = SendMessage(hList, LB_GETITEMDATA, i, 0); + if (lRet != LB_ERR) + { + CResolution* pResolution = (CResolution*)lRet; + + if (pResolution == m_pCurResolution) + { + SendMessage(hList, LB_SETCURSEL, i, 0); + return(TRUE); + } + } + } + + + // If we get here, we didn't fine this resolution in the list box... + + return(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplay::FillListBox +// +// PURPOSE: Fills the given list box with the current resolutions +// +// ----------------------------------------------------------------------- // + +BOOL CDisplay::FillListBox(HWND hList) +{ + // Sanity checks... + + if (!hList) return(FALSE); + + + // Clear the contents of the list box... + + SendMessage(hList, LB_RESETCONTENT, 0, 0); + + + // Insert each resolution... + + POSITION pos = m_collResolutions.GetHeadPosition(); + + while (pos) + { + CResolution* pResolution = (CResolution*)m_collResolutions.GetNext(pos); + ASSERT(pResolution); + + int iItem = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)(LPCSTR)pResolution->GetListText()); + + if (iItem != LB_ERR) + { + SendMessage(hList, LB_SETITEMDATA, iItem, (LPARAM)pResolution); + } + } + + + // Set the current selection if requested... + + if (!SelectCurrentListResolution(hList)) + { + SendMessage(hList, LB_SETCURSEL, 0, 0); + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CRenderer::Init(const char* sFile) +{ + // Load d3d8.dll + HMODULE hD3DDll = LoadLibrary("d3d8.dll"); + if (!hD3DDll) + return FALSE; + + TD3DCreateFn exp_Direct3DCreate8 = (TD3DCreateFn)GetProcAddress(hD3DDll, "Direct3DCreate8"); + if (!exp_Direct3DCreate8) + return FALSE; + + // Gimmie D3D, baby! + IDirect3D8 *pD3D = exp_Direct3DCreate8(D3D_SDK_VERSION); + if (!pD3D) + return FALSE; + + // Go through the adapters on the system + uint32 nAdapterCount = pD3D->GetAdapterCount(); + for (uint32 iAdapter = 0; iAdapter < nAdapterCount; ++iAdapter) + { + D3DADAPTER_IDENTIFIER8 AdapterInfo; // Fill in adapter info + pD3D->GetAdapterIdentifier(iAdapter,0,&AdapterInfo); + + // Enumerate all display modes on this adapter... + uint32 iNumAdapterModes = pD3D->GetAdapterModeCount(iAdapter); + + for (uint32 iMode = 0; iMode < iNumAdapterModes; iMode++) + { + D3DDISPLAYMODE d3dDisplayMode; // Get the display mode attributes + pD3D->EnumAdapterModes(iAdapter,iMode, &d3dDisplayMode); + + // Filter out low-resolution modes + if (d3dDisplayMode.Width < 640 || d3dDisplayMode.Height < 480) + continue; + + // Only allow 4x3 aspect ratio video modes + uint32 nTestWidth = (d3dDisplayMode.Height * 4 / 3); + if (nTestWidth != d3dDisplayMode.Width) + continue; + + // 32-bit display modes only + if (d3dDisplayMode.Format != D3DFMT_X8R8G8B8) + continue; + + RMode cMode; + + cMode.m_Width = d3dDisplayMode.Width; + cMode.m_Height = d3dDisplayMode.Height; + strcpy(cMode.m_InternalName, AdapterInfo.Driver); + strcpy(cMode.m_Description, AdapterInfo.Description); + // We're always hardware now.. This should really be removed... + cMode.m_bHWTnL = true; + + // Find the display adaptor + CDisplay *pDisplay = FindDisplay(&cMode); + if (!pDisplay) + pDisplay = AddDisplay(&cMode); + + // Add the resolution + if (pDisplay) + { + if (!pDisplay->FindResolution(cMode.m_Width, cMode.m_Height, 32)) + pDisplay->AddResolution(cMode.m_Width, cMode.m_Height, 32); + } + } + } + + // All done... + + pD3D->Release(); + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CRenderer::Term() +{ + // Terminate all resolution objects... + + POSITION pos = m_collDisplays.GetHeadPosition(); + + while (pos) + { + CDisplay* pDisplay = (CDisplay*)m_collDisplays.GetNext(pos); + ASSERT(pDisplay); + if (pDisplay) delete pDisplay; + } + + m_collDisplays.RemoveAll(); + + + // Clear all members... + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::GetListText +// +// PURPOSE: Formats a text string to be used for display purposes +// +// ----------------------------------------------------------------------- // + +CString CRenderer::GetListText() +{ + return DX8_RENDERER_NAME; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::GetSelectedListDisplay +// +// PURPOSE: Gets the currently selected display from the given list +// box. +// +// ----------------------------------------------------------------------- // + +CDisplay* CRenderer::GetSelectedListDisplay(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(NULL); + + + // Get the current selection index... + + int index = SendMessage(hList, LB_GETCURSEL, 0, 0); + if (index == LB_ERR) return(NULL); + + + // Get the selected resolution from the index... + + LRESULT lResult = SendMessage(hList, LB_GETITEMDATA, index, 0); + if (lResult == LB_ERR) return(NULL); + + CDisplay* pDisplay = (CDisplay*)lResult; + if (!pDisplay) return(NULL); + + + // All done... + + return(pDisplay); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::AddDisplay +// +// PURPOSE: Adds a new display object +// +// ----------------------------------------------------------------------- // + +CDisplay* CRenderer::AddDisplay(const char* sName, const char* sDesc, BOOL bHardware) +{ + // Sanity checks... + + if (!sName || !sName[0]) return(NULL); + if (!sDesc || !sDesc[0]) return(NULL); + + + // Create and init a new display object... + + CDisplay* pDisplay = new CDisplay(); + + if (!pDisplay->Init(sName, sDesc, bHardware)) + { + delete pDisplay; + return(NULL); + } + + + // Add the new object to our list... + + m_collDisplays.AddTail(pDisplay); + + + // All done... + + return(pDisplay); +} + +CDisplay* CRenderer::AddDisplay(RMode* pMode) +{ + // Sanity checks... + + if (!pMode) return(NULL); + + + // Let the main function do the real work... + + return(AddDisplay(pMode->m_InternalName, pMode->m_Description, pMode->m_bHWTnL)); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::FindDisplay +// +// PURPOSE: Searches for a display with the given dimensions +// +// ----------------------------------------------------------------------- // + +CDisplay* CRenderer::FindDisplay(const char* sName) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Search for a display object with the given dimensions... + + POSITION pos = m_collDisplays.GetHeadPosition(); + + while (pos) + { + CDisplay* pDisplay = (CDisplay*)m_collDisplays.GetNext(pos); + ASSERT(pDisplay); + + if (strcmp(pDisplay->GetName(), sName) == 0) + { + return(pDisplay); + } + } + + + // If we get here, we didn't find a match... + + return(NULL); +} + +CDisplay* CRenderer::FindDisplay(RMode* pMode) +{ + // Sanity checks... + + if (!pMode) return(NULL); + + + // Let the main function do the real work... + + return(FindDisplay(pMode->m_InternalName)); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::SetCurrentDisplay +// +// PURPOSE: Sets the current display for the display +// +// ----------------------------------------------------------------------- // + +BOOL CRenderer::SetCurrentDisplay(const char* sName) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Find the requested display... + + CDisplay* pDisplay = FindDisplay(sName); + if (!pDisplay) return(FALSE); + + + // Set the current display... + + m_pCurDisplay = pDisplay; + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::SelectCurrentListDisplay +// +// PURPOSE: Select the current display in the given list box +// +// ----------------------------------------------------------------------- // + +BOOL CRenderer::SelectCurrentListDisplay(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(FALSE); + if (!m_pCurDisplay) return(FALSE); + + + // Search for this item in the list box... + + int nCount = SendMessage(hList, LB_GETCOUNT, 0, 0); + if (nCount <= 0) return(FALSE); + + for (int i = 0; i < nCount; i++) + { + LRESULT lRet = SendMessage(hList, LB_GETITEMDATA, i, 0); + if (lRet != LB_ERR) + { + CDisplay* pDisplay = (CDisplay*)lRet; + + if (pDisplay == m_pCurDisplay) + { + SendMessage(hList, LB_SETCURSEL, i, 0); + return(TRUE); + } + } + } + + + // If we get here, we didn't fine this display in the list box... + + return(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CRenderer::FillListBox +// +// PURPOSE: Fills the given list box with the current displays +// +// ----------------------------------------------------------------------- // + +BOOL CRenderer::FillListBox(HWND hList) +{ + // Sanity checks... + + if (!hList) return(FALSE); + + + // Clear the contents of the list box... + + SendMessage(hList, LB_RESETCONTENT, 0, 0); + + + // Insert each display... + + POSITION pos = m_collDisplays.GetHeadPosition(); + + while (pos) + { + CDisplay* pDisplay = (CDisplay*)m_collDisplays.GetNext(pos); + ASSERT(pDisplay); + + int iItem = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)(LPCSTR)pDisplay->GetListText()); + + if (iItem != LB_ERR) + { + SendMessage(hList, LB_SETITEMDATA, iItem, (LPARAM)pDisplay); + } + } + + + // Set the current selection if requested... + + if (!SelectCurrentListDisplay(hList)) + { + int nCount = SendMessage(hList, LB_GETCOUNT, 0, 0); + + if (nCount > 0) + { + int nRet = SendMessage(hList, LB_SETCURSEL, nCount-1, 0); + + if (nRet == LB_ERR) + { + SendMessage(hList, LB_SETCURSEL, 0, 0); + } + } + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::Init +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::Init(const char* sDir, const char* sConfigFile) +{ + // Set simple members... + + m_sDir = sDir; + + + // Enumerate the display renderers... + + CWaitCursor wc; + + int count = EnumerateRenderers(sDir); + if (count < 0) return(FALSE); + + + // Set default parameters... + + SetDefaultParameters(); + + + // Read the config file... + + ReadConfigFile(sConfigFile); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::Term +// +// PURPOSE: Termination +// +// ----------------------------------------------------------------------- // + +void CDisplayMgr::Term() +{ + // Terminate all display objects... + + POSITION pos = m_collRenderers.GetHeadPosition(); + + while (pos) + { + CRenderer* pRenderer = (CRenderer*)m_collRenderers.GetNext(pos); + ASSERT(pRenderer); + if (pRenderer) delete pRenderer; + } + + m_collRenderers.RemoveAll(); + + + // Clear all members... + + Clear(); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::AddRenderer +// +// PURPOSE: Adds a new Renderer object +// +// ----------------------------------------------------------------------- // + +CRenderer* CDisplayMgr::AddRenderer(const char* sFile) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!sFile) return(NULL); + + + // Create and init a new Renderer object... + + CRenderer* pRenderer = new CRenderer(); + + if (!pRenderer->Init(sFile)) + { + delete pRenderer; + return(NULL); + } + + + // Add the new object to our list... + + m_collRenderers.AddTail(pRenderer); + + + // All done... + + return(pRenderer); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::FindRenderer +// +// PURPOSE: Finds a renderer object with the given filename +// +// ----------------------------------------------------------------------- // + +CRenderer* CDisplayMgr::FindRenderer(const char* sFile) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!sFile) return(NULL); + + + // Search all display objects... + + POSITION pos = m_collRenderers.GetHeadPosition(); + + while (pos) + { + CRenderer* pRenderer = (CRenderer*)m_collRenderers.GetNext(pos); + ASSERT(pRenderer); + if (pRenderer) + { + return(pRenderer); + } + } + + + // If we get here, we didn't find a match... + + return(NULL); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::FillListBox +// +// PURPOSE: Fills the given list box with the current displays +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::FillListBox(HWND hList) +{ + // Sanity checks... + + if (!hList) return(FALSE); + + + // Clear the contents of the list box... + + SendMessage(hList, LB_RESETCONTENT, 0, 0); + + + // Insert each display... + + POSITION pos = m_collRenderers.GetHeadPosition(); + + while (pos) + { + CRenderer* pRenderer = (CRenderer*)m_collRenderers.GetNext(pos); + ASSERT(pRenderer); + + int iItem = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)(LPCSTR)pRenderer->GetListText()); + + if (iItem != LB_ERR) + { + SendMessage(hList, LB_SETITEMDATA, iItem, (LPARAM)pRenderer); + } + } + + + // Set the selection if requested... + + if (!SelectCurrentListRenderer(hList)) + { + SendMessage(hList, LB_SETCURSEL, 0, 0); + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::SelectCurrentListRenderer +// +// PURPOSE: Select the current Renderer in the given list box +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::SelectCurrentListRenderer(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(FALSE); + if (!m_pCurRenderer) return(FALSE); + + + // Search for this item in the list box... + + int nCount = SendMessage(hList, LB_GETCOUNT, 0, 0); + if (nCount <= 0) return(FALSE); + + for (int i = 0; i < nCount; i++) + { + LRESULT lRet = SendMessage(hList, LB_GETITEMDATA, i, 0); + if (lRet != LB_ERR) + { + CRenderer* pRenderer = (CRenderer*)lRet; + + if (pRenderer == m_pCurRenderer) + { + SendMessage(hList, LB_SETCURSEL, i, 0); + return(TRUE); + } + } + } + + + // If we get here, we didn't fine this Renderer in the list box... + + return(FALSE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::GetSelectedListRenderer +// +// PURPOSE: Gets the currently selected renderer from the given list +// box. +// +// ----------------------------------------------------------------------- // + +CRenderer* CDisplayMgr::GetSelectedListRenderer(HWND hList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hList) return(NULL); + + + // Get the current selection index... + + int index = SendMessage(hList, LB_GETCURSEL, 0, 0); + if (index == LB_ERR) return(NULL); + + + // Get the selected Renderer from the index... + + LRESULT lResult = SendMessage(hList, LB_GETITEMDATA, index, 0); + if (lResult == LB_ERR) return(NULL); + + CRenderer* pRenderer = (CRenderer*)lResult; + if (!pRenderer) return(NULL); + + + // All done... + + return(pRenderer); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::EnumerateRenderers +// +// PURPOSE: Enumerates all renderers in the given directory +// +// ----------------------------------------------------------------------- // + +int CDisplayMgr::EnumerateRenderers(const char* sDir) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Enumerate each .REN file in the given directory... + + char sPath[256]; + _finddata_t fd; + + if (sDir && strlen(sDir) > 0) + { + int len = strlen(sDir); + if (sDir[len-1] != '\\') + { + sprintf(sPath, "%s\\lithtech.exe", sDir); + } + else + { + sprintf(sPath, "%slithtech.exe", sDir); + } + } + else + { + strcpy(sPath, "lithtech.exe"); + } + + int count = 0; + int handle = _findfirst(sPath, &fd); + BOOL bContinue = (handle != -1); + + while (bContinue) + { + CRenderer* pRenderer = AddRenderer(fd.name); + + if (pRenderer) + { + count++; + } + + if (_findnext(handle, &fd) == -1) bContinue = FALSE; + } + + + // All done... + + return(count); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::EnumerateRenderers +// +// PURPOSE: Enumerates all renderers in the given directory +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::ReadConfigFile(const char* sFile) +{ + // Sanity checks... + + ASSERT(IsValid()); + + + // Verify that the file exists... + + if (!sFile) return(FALSE); + + OFSTRUCT ofs; + HFILE hFile = OpenFile (sFile, &ofs, OF_EXIST); + if (hFile == HFILE_ERROR) return(FALSE); + + + // Open the file... + + char strBuff[512]; + FILE* pFile = fopen(sFile, "r"); + if (!pFile) return(FALSE); + + + // Declare some local variables we'll need... + + BOOL bFoundCardDesc = FALSE; + BOOL bFoundWidth = FALSE; + BOOL bFoundHeight = FALSE; + BOOL bFoundDepth = FALSE; + + char sCardDesc[128]; + char sWidth[64]; + char sHeight[64]; + char sDepth[64]; + + strcpy(sWidth, "640"); + strcpy(sHeight, "480"); + strcpy(sDepth, "16"); + + + // Scan for the parameters we are looking for... + + while (fgets(strBuff, 512, pFile)) + { + char* ptr = strBuff; + if (*ptr == '"') ptr++; + + if (strnicmp(ptr, "CardDesc", 8) == 0) + { + ptr += 8; + while (*ptr == '"' || *ptr == ' ') ptr++; + strcpy(sCardDesc, ptr); + + ptr = &sCardDesc[strlen(sCardDesc) - 1]; + while ((*ptr == '"' || *ptr == '\n') && ptr > sCardDesc) ptr--; + *(ptr + 1) = '\0'; + + bFoundCardDesc = TRUE; + } + else if (strnicmp(ptr, "ScreenWidth", 11) == 0) + { + ptr += 11; + while (*ptr == '"' || *ptr == ' ') ptr++; + strcpy(sWidth, ptr); + + ptr = &sWidth[strlen(sWidth) - 1]; + while ((*ptr == '"' || *ptr == '\n') && ptr > sWidth) ptr--; + *(ptr + 1) = '\0'; + + bFoundWidth = TRUE; + } + else if (strnicmp(ptr, "ScreenHeight", 12) == 0) + { + ptr += 12; + while (*ptr == '"' || *ptr == ' ') ptr++; + strcpy (sHeight, ptr); + + ptr = &sHeight[strlen(sHeight) - 1]; + while ((*ptr == '"' || *ptr == '\n') && ptr > sHeight) ptr--; + *(ptr + 1) = '\0'; + + bFoundHeight = TRUE; + } + else if (strnicmp(ptr, "BitDepth", 8) == 0) + { + ptr += 8; + while (*ptr == '"' || *ptr == ' ') ptr++; + strcpy (sDepth, ptr); + + ptr = &sDepth[strlen(sDepth) - 1]; + while ((*ptr == '"' || *ptr == '\n') && ptr > sDepth) ptr--; + *(ptr + 1) = '\0'; + + bFoundDepth = TRUE; + } + + if (bFoundCardDesc && bFoundWidth && bFoundHeight && bFoundDepth) break; + } + + + // Set the parameters that we found... + + m_pCurRenderer = FindRenderer(DX8_RENDERER_NAME); + + if (m_pCurRenderer) + { + CDisplay* pDisplay = LTNULL; + + if (bFoundCardDesc) + { + m_pCurRenderer->SetCurrentDisplay(sCardDesc); + pDisplay = m_pCurRenderer->GetCurrentDisplay(); + } + + if (!pDisplay) + pDisplay = m_pCurRenderer->GetFirstDisplay(); + + if (pDisplay) + { + pDisplay->SetCurrentResolution(atoi(sWidth), atoi(sHeight), atoi(sDepth)); + } + } + + + // Close the file... + + fclose(pFile); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::UpdateListSelections +// +// PURPOSE: Updates all list selections +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::UpdateListSelections(HWND hRenList, HWND hDisList, HWND hResList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hRenList) return(FALSE); + if (!hDisList) return(FALSE); + if (!hResList) return(FALSE); + + + // Update the selected renderer... + + BOOL bForce = FALSE; + + CRenderer* pOrgRen = GetCurrentRenderer(); + CRenderer* pListRen = GetSelectedListRenderer(hRenList); + + if (pOrgRen != pListRen) + { + SetCurrentRenderer(pListRen); + if (!SelectCurrentListRenderer(hRenList)) return(FALSE); + if (pListRen) pListRen->FillListBox(hDisList); + bForce = TRUE; + } + + CRenderer* pCurRen = pListRen; + if (!pCurRen) return(FALSE); + + + // Update the selected display... + + CDisplay* pOrgDis = pCurRen->GetCurrentDisplay(); + CDisplay* pListDis = pCurRen->GetSelectedListDisplay(hDisList); + + if (pOrgDis != pListDis || bForce) + { + pCurRen->SetCurrentDisplay(pListDis); + if (!pCurRen->SelectCurrentListDisplay(hDisList)) return(FALSE); + if (pListDis) pListDis->FillListBox(hResList); + bForce = TRUE; + } + + CDisplay* pCurDis = pListDis; + if (!pCurDis) return(FALSE); + + + // Update the selected resolution... + + CResolution* pOrgRes = pCurDis->GetCurrentResolution(); + CResolution* pListRes = pCurDis->GetSelectedListResolution(hResList); + + if (pOrgRes != pListRes || bForce) + { + pCurDis->SetCurrentResolution(pListRes); + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::FillListBoxes +// +// PURPOSE: Fills all list boxes with the renderer, display, and +// resolutions. +// +// ----------------------------------------------------------------------- // + +BOOL CDisplayMgr::FillListBoxes(HWND hRenList, HWND hDisList, HWND hResList) +{ + // Sanity checks... + + ASSERT(IsValid()); + if (!hRenList) return(FALSE); + if (!hDisList) return(FALSE); + if (!hResList) return(FALSE); + + + // Fill the renderer list... + + FillListBox(hRenList); + + CRenderer* pRenderer = GetSelectedListRenderer(hRenList); + if (!pRenderer) return(FALSE); + + + // Fill the display list... + + pRenderer->FillListBox(hDisList); + + CDisplay* pDisplay = pRenderer->GetSelectedListDisplay(hDisList); + if (!pDisplay) return(FALSE); + + + // Fill the resolution list... + + pDisplay->FillListBox(hResList); + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::GetDisplaySettingsString +// +// PURPOSE: Builds a display settings string for use on the command +// line. +// +// ----------------------------------------------------------------------- // + +CString CDisplayMgr::GetDisplaySettingsString() +{ + // Sanity checks... + + if (!m_pCurRenderer) return(""); + + + // Get the display name... + + CDisplay* pDisplay = m_pCurRenderer->GetCurrentDisplay(); + if (!pDisplay) return(""); + + CString sRenderer = pDisplay->GetDescription(); + if (sRenderer.IsEmpty()) return(""); + + CString sCardDesc = pDisplay->GetName(); + + + // Build the command-line info without the resolution... + + CString sCmdLine; + + sCmdLine += " ++CardDesc "; + sCmdLine += sCardDesc; + + sCmdLine += " ++Renderer "; + sCmdLine += "\""; + sCmdLine += sRenderer; + sCmdLine += "\""; + + + // Add the resolution settings if available.. + + CResolution* pRes = pDisplay->GetCurrentResolution(); + + if (pRes) + { + CString sRes; + sRes.Format(" +ScreenWidth %i +ScreenHeight %i +BitDepth %i", pRes->GetWidth(), pRes->GetHeight(), pRes->GetDepth()); + + sCmdLine += sRes; + } + + + // All done... + + return(sCmdLine); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDisplayMgr::SetDefaultParameters +// +// PURPOSE: Sets default parameters for everything +// +// ----------------------------------------------------------------------- // + +void CDisplayMgr::SetDefaultParameters() +{ + // Loop over each renderer... + + CRenderer* pRen = GetFirstRenderer(); + + while (pRen) + { + // Loop over each display... + + CDisplay* pDis = pRen->GetFirstDisplay(); + + while (pDis) + { + // If the display does not have a current resolution, set one... + + if (!pDis->GetCurrentResolution()) + { + // Set the default resolution based on hardware or software... + + CResolution* pRes = NULL; + + if (pDis->IsSoftware()) + { + pRes = pDis->FindResolution(320, 200, 16); + if (!pRes) pRes = pDis->FindResolution(320, 240, 16); + if (!pRes) pRes = pDis->FindResolution(512, 384, 16); + if (!pRes) pRes = pDis->FindResolution(640, 400, 16); + if (!pRes) pRes = pDis->FindResolution(640, 480, 16); + } + else + { + pRes = pDis->FindResolution(640, 480, 16); + if (!pRes) pRes = pDis->FindResolution(512, 384, 16); + if (!pRes) pRes = pDis->FindResolution(800, 600, 16); + } + + pDis->SetCurrentResolution(pRes); + } + + + // Get the next display... + + pDis = pRen->GetNextDisplay(); + } + + + // Get the next renderer... + + pRen = GetNextRenderer(); + } +} + + diff --git a/Jack/Launcher/DisplayMgr.h b/Jack/Launcher/DisplayMgr.h new file mode 100644 index 00000000..caebaaf9 --- /dev/null +++ b/Jack/Launcher/DisplayMgr.h @@ -0,0 +1,267 @@ +/**************************************************************************** +; +; MODULE: DISPLAYMGR (.H) +; +; PURPOSE: Display manager class (for renderes) +; +; HISTORY: 06/15/98 [blg] This file was created +; +; COMMENT: Copyright (c) 1998, Monolith Productions Inc. +; +****************************************************************************/ + + +#ifndef _DISPLAYMGR_H_ +#define _DISPLAYMGR_H_ + + +// Includes... + +#include "LTBaseDefs.h" + +// Typedefs... + +typedef RMode* (*LTF_GETSUPPORTEDMODES)(); +typedef void (*LTF_FREEMODELIST)(RMode *pHead); + + +// Classes... + +class CResolution +{ + // Member functions... + +public: + CResolution() { Clear(); } + ~CResolution() { Term(); } + + BOOL Init(int nWidth, int nHeight, int nDepth); + void Term(); + void Clear(); + + BOOL IsValid() { return(m_nWidth > 0 && m_nHeight > 0); } + + CString GetName() { return(m_sName); } + int GetWidth() { return(m_nWidth); } + int GetHeight() { return(m_nHeight); } + int GetDepth() { return(m_nDepth); } + CString GetListText(); + + + // Member variables... + +private: + int m_nWidth; + int m_nHeight; + int m_nDepth; + CString m_sName; +}; + +class CDisplay +{ + // Member functions... + +public: + CDisplay() { Clear(); } + ~CDisplay() { Term(); } + + BOOL Init(const char* sName, const char* sDesc, BOOL bHardware); + void Term(); + void Clear(); + + BOOL IsValid() { return(!m_sName.IsEmpty()); } + + CString GetName() { return(m_sName); } + CString GetDescription() { return(m_sDesc); } + CString GetListText(); + CResolution* GetSelectedListResolution(HWND hList); + CResolution* GetCurrentResolution() { return(m_pCurResolution); } + CResolution* GetFirstResolution(); + CResolution* GetNextResolution(); + + BOOL SetCurrentResolution(int nWidth, int nHeight, int nDepth); + void SetCurrentResolution(CResolution* pRes) { m_pCurResolution = pRes; } + + CResolution* AddResolution(int nWidth, int nHeight, int nDepth); + CResolution* FindResolution(int nWidth, int nHeight, int nDepth); + + BOOL FillListBox(HWND hList); + BOOL SelectCurrentListResolution(HWND hList); + + BOOL IsSoftware() { return(!IsHardware()); } + BOOL IsHardware() { return(m_bHardware); } + + + // Member variables... + +private: + CString m_sName; + CString m_sDesc; + BOOL m_bHardware; + CPtrList m_collResolutions; + CResolution* m_pCurResolution; + POSITION m_pos; +}; + +class CRenderer +{ + // Member functions... + +public: + CRenderer() { Clear(); } + ~CRenderer() { Term(); } + + BOOL Init(const char* sFile); + void Term(); + void Clear(); + + BOOL IsValid() { return true; } + + CString GetListText(); + CDisplay* GetCurrentDisplay() { return(m_pCurDisplay); } + CDisplay* GetSelectedListDisplay(HWND hList); + CDisplay* GetFirstDisplay(); + CDisplay* GetNextDisplay(); + + BOOL SetCurrentDisplay(const char* sName); + void SetCurrentDisplay(CDisplay* pDisplay) { m_pCurDisplay = pDisplay; } + + CDisplay* AddDisplay(const char* sName, const char* sDesc, BOOL bHardware); + CDisplay* AddDisplay(RMode* pMode); + CDisplay* FindDisplay(const char* sName); + CDisplay* FindDisplay(RMode* pMode); + + BOOL FillListBox(HWND hList); + BOOL SelectCurrentListDisplay(HWND hList); + + + // Member variables... + +private: + CPtrList m_collDisplays; + CDisplay* m_pCurDisplay; + POSITION m_pos; +}; + +class CDisplayMgr +{ + // Member functions... + +public: + CDisplayMgr() { Clear(); } + ~CDisplayMgr() { Term(); } + + BOOL Init(const char* sDir, const char* sConfigFile); + void Term(); + void Clear(); + + BOOL IsValid() { return(TRUE); } + + CRenderer* GetSelectedListRenderer(HWND hList); + CRenderer* GetCurrentRenderer() { return(m_pCurRenderer); } + CRenderer* GetFirstRenderer(); + CRenderer* GetNextRenderer(); + CString GetDisplaySettingsString(); + int GetNumRenderers() { return(m_collRenderers.GetCount()); } + + BOOL SetCurrentRenderer(const char* sFile); + void SetCurrentRenderer(CRenderer* pRen) { m_pCurRenderer = pRen; } + void SetDefaultParameters(); + + CRenderer* AddRenderer(const char* sFile); + CRenderer* FindRenderer(const char* sFile); + + BOOL FillListBox(HWND hList); + BOOL FillListBoxes(HWND hRenList, HWND hDisList, HWND hResList); + BOOL SelectCurrentListRenderer(HWND hList); + BOOL UpdateListSelections(HWND hRenList, HWND hDisList, HWND hResList); + +private: + int EnumerateRenderers(const char* sDir); + BOOL ReadConfigFile(const char* sFile); + + + // Member variables... + +private: + CString m_sDir; + CPtrList m_collRenderers; + CRenderer* m_pCurRenderer; + POSITION m_pos; +}; + + +// Inlines... + +inline void CResolution::Clear() +{ + m_nWidth = 0; + m_nHeight = 0; +} + +inline void CResolution::Term() +{ + Clear(); +} + +inline void CRenderer::Clear() +{ + m_pCurDisplay = NULL; +} + +inline void CDisplay::Clear() +{ + m_sName.Empty(); + m_bHardware = FALSE; + m_pCurResolution = NULL; +} + +inline void CDisplayMgr::Clear() +{ + m_pCurRenderer = NULL; +} + +inline CRenderer* CDisplayMgr::GetFirstRenderer() +{ + m_pos = m_collRenderers.GetHeadPosition(); + if (!m_pos) return(NULL); + return((CRenderer*)m_collRenderers.GetNext(m_pos)); +} + +inline CRenderer* CDisplayMgr::GetNextRenderer() +{ + if (!m_pos) return(NULL); + return((CRenderer*)m_collRenderers.GetNext(m_pos)); +} + +inline CDisplay* CRenderer::GetFirstDisplay() +{ + m_pos = m_collDisplays.GetHeadPosition(); + if (!m_pos) return(NULL); + return((CDisplay*)m_collDisplays.GetNext(m_pos)); +} + +inline CDisplay* CRenderer::GetNextDisplay() +{ + if (!m_pos) return(NULL); + return((CDisplay*)m_collDisplays.GetNext(m_pos)); +} + +inline CResolution* CDisplay::GetFirstResolution() +{ + m_pos = m_collResolutions.GetHeadPosition(); + if (!m_pos) return(NULL); + return((CResolution*)m_collResolutions.GetNext(m_pos)); +} + +inline CResolution* CDisplay::GetNextResolution() +{ + if (!m_pos) return(NULL); + return((CResolution*)m_collResolutions.GetNext(m_pos)); +} + + +// EOF... + +#endif + diff --git a/Jack/Launcher/DlgEx.cpp b/Jack/Launcher/DlgEx.cpp new file mode 100644 index 00000000..501790f7 --- /dev/null +++ b/Jack/Launcher/DlgEx.cpp @@ -0,0 +1,392 @@ +/******************************************************************************* +; +; MODULE: DLGEX (.CPP) +; +; PURPOSE: Extended dialog class (derived from CDialog) that has +; a bitmap as a background +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ +#include "stdafx.h" +#include "DlgEx.h" +#include "BitmapCheckButton.h" +#include "TextCheckBox.h" +#include "ButtonEx.h" +//#include "anibutton.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CDialogEx dialog + + +CDialogEx::CDialogEx(int IDD, CWnd* pParent) + : CDialog(IDD, pParent) +{ + //{{AFX_DATA_INIT(CDlgEx) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + m_pFocusButton = NULL; +} + + +void CDialogEx::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CDlgEx) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CDialogEx, CDialog) + //{{AFX_MSG_MAP(CDialogEx) + ON_WM_MOUSEMOVE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::OnInitDialog +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CDialogEx::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // IMPORTANT: SetBackGround() should have been called before we get here!! + // Call SetBackGround() to set the background bitmap before calling CDialogEx::OnInitDialog() + // from your implmentation of OnInitDialog. Check some dialog code in launchpad source to + // see how this is done. + + // Get background bitmap size + BITMAP bmpInfo; + m_Background.GetBitmap(&bmpInfo); + + // Resize the dialog to fit the bitmap and then center it + // NOTE: MFC Automatically resizes the dialog according to system font settings etc. + // on every system. If you use this code, you'll need to position each control in your dialog + // to make sure they will be visible after the following line of code resizes the dialog + // (see how this was done in the launchpaddlg OnInitDialog() code). + // In case you want to leave the dialog sizing to MFC, remove the following 2 lines of code, + // and then change the PaintBackGround() function and use a StretchBlt instead of the BitBlt, + // so that the background BMP gets stretched to fit the dialogsize. Get the window size + // using the GetClientRect() function. (The OnPaint() function in Blood2Dlg.cpp resizes the background + // automatically to fit the dialog, use this as an example). + + SetWindowPos(NULL, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SWP_NOZORDER|SWP_NOMOVE); + CenterWindow(); + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::SetBackGround +// +// PURPOSE: Sets the background image from a resource ID +// +// ----------------------------------------------------------------------- // + +BOOL CDialogEx::SetBackGround(int nID) +{ + // We could also use CBitmap::LoadBitmap but that has code that screws with the palette + + LPCTSTR lpszResourceName = (LPCTSTR)nID; + + HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), lpszResourceName, IMAGE_BITMAP, 0,0, LR_CREATEDIBSECTION); + + if (hBmp == NULL) return FALSE; + + m_Background.Attach(hBmp); + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::PaintBackground +// +// PURPOSE: Draws the background image +// +// IMPORTANT: This function should be called from your OnPaint() +// implementation BEFORE anything is painted on the dialog, +// to make sure the background gets drawn first. +// +// ----------------------------------------------------------------------- // + +void CDialogEx::PaintBackGround(CPaintDC * dc) +{ + BITMAP bmpInfo; + m_Background.GetBitmap(&bmpInfo); + + CDC dcTmp; + dcTmp.CreateCompatibleDC(dc); + dcTmp.SelectObject(&m_Background); + + // Draw bitmap regardless of dialog size. The OnInitDialog function will automatically + // resize the dialog to fit the Bitmap when loading, so everything should look good. + dc->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcTmp, 0,0, SRCCOPY); + + dcTmp.DeleteDC(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::FreeAllButtons +// +// PURPOSE: Frees the memory for the buttons +// +// ----------------------------------------------------------------------- // + +void CDialogEx::FreeAllButtons() +{ + CButton* pButton; + for(int i=0;iAutoLoad(nID,this)) + { + delete pButton; + return NULL; + } + + // Set the help text if applicable + if(pHelpText) + { + CString csHelpText; + if(dwHelpTextID) + csHelpText.LoadString(dwHelpTextID); + pButton->SetHelpTextCtrl(pHelpText,csHelpText); + } + + // Set a cursor for this button... if we want one + if( nCursorID ) + { + // We can use the standard Windows cursors or our own + if( (nCursorID >= (UINT)IDC_ARROW) && (nCursorID <= (UINT)IDC_HELP) ) + { + pButton->SetHCursor( AfxGetApp()->LoadStandardCursor( (char*)nCursorID ) ); + } + else + pButton->SetHCursor( AfxGetApp()->LoadCursor( nCursorID ) ); + } + + // Set the position + pButton->SetWindowPos(NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + + // Add us to our array + m_collButtons.Add(pButton); + + // All done! + return pButton; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::AddCheckBox +// +// PURPOSE: Adds a checkbox from a resource ID +// +// ----------------------------------------------------------------------- // + +CButton* CDialogEx::AddCheckBox(UINT nID, int x, int y, CStaticEx* pHelpText, DWORD dwHelpTextID) +{ + // Create the button + CBitmapCheckButton* pButton = new CBitmapCheckButton; + + // Load the bitmaps + if(!pButton->AutoLoad(nID,this)) + { + delete pButton; + return NULL; + } + + // Set the help text if applicable + if(pHelpText) + { + CString csHelpText; + if(dwHelpTextID) + csHelpText.LoadString(dwHelpTextID); + pButton->SetHelpTextCtrl(pHelpText,csHelpText); + } + + // Set the position + pButton->SetWindowPos(NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + + // Add us to our array + m_collButtons.Add(pButton); + + // All done! + return pButton; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::AddTextCheckBox +// +// PURPOSE: Adds a checkbox from a resource ID +// +// ----------------------------------------------------------------------- // + +CButton* CDialogEx::AddTextCheckBox(UINT nID, int x, int y, UINT nTextID, CStaticEx* pHelpText, DWORD dwHelpTextID ) +{ + CString strText; + if( nTextID ) + { + strText.LoadString( nTextID ); + } + + return AddTextCheckBox( nID, x, y, strText, pHelpText, dwHelpTextID ); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::AddTextCheckBox +// +// PURPOSE: Adds a checkbox from a resource ID +// +// ----------------------------------------------------------------------- // + +CButton* CDialogEx::AddTextCheckBox( UINT nID, int x, int y, const char *szText /* = NULL */, CStaticEx* pHelpText /* = NULL */, DWORD dwHelpTextID /* = 0 */ ) +{ + // Create the button + CTextCheckBox* pButton = new CTextCheckBox; + + if( szText ) + { + pButton->SetWindowText( szText ); + } + + // Load the buton + if(!pButton->AutoLoad(nID,this)) + { + delete pButton; + return NULL; + } + + // Set the help text if applicable + CString csHelpText; + if(dwHelpTextID) + csHelpText.LoadString(dwHelpTextID); + pButton->SetHelpTextCtrl(pHelpText,csHelpText); + + + // Force the button to draw itself + pButton->ModifyStyle( 0, BS_OWNERDRAW | BS_CHECKBOX, 0 ); + + // Set the position + pButton->SetWindowPos(NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + + // Add us to our array + m_collButtons.Add(pButton); + + // All done! + return pButton; +} + +/* +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::AddAniButton +// +// PURPOSE: Adds an Animated Button from a resource ID +// +// ----------------------------------------------------------------------- // + +CButton* CDialogEx::AddAniButton( UINT nID, int x, int y, UINT nAniID ) +{ + // Create the button + CAniButton *pButton = new CAniButton; + + // Set the .avi resource ID + pButton->LoadAVI( nAniID ); + + // Load the button + if( !pButton->AutoLoad( nID, this ) ) + { + delete pButton; + return NULL; + } + + // Add the button to our array + m_collButtons.Add( pButton ); + + // Set position + pButton->SetWindowPos( NULL, x, y, 0, 0, SWP_NOZORDER | SWP_NOSIZE ); + + return pButton; +} +*/ + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::OnMouseMove +// +// PURPOSE: Mouse move handler +// +// ----------------------------------------------------------------------- // + +void CDialogEx::OnMouseMove(UINT nFlags, CPoint point) +{ + SetFocusButton(NULL); + CDialog::OnMouseMove(nFlags, point); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CDialogEx::SetFocusButton +// +// PURPOSE: Sets the button that has the "Focus" +// +// ----------------------------------------------------------------------- // + +void CDialogEx::SetFocusButton(CButton* pButton) +{ + // Force a draw on the button that's losing focus + if(m_pFocusButton) + { + m_pFocusButton->InvalidateRect(NULL); + } + + m_pFocusButton = pButton; + + // Force a draw on the button that's gaining focus + if(m_pFocusButton) + { + m_pFocusButton->InvalidateRect(NULL); + } +} \ No newline at end of file diff --git a/Jack/Launcher/DlgEx.h b/Jack/Launcher/DlgEx.h new file mode 100644 index 00000000..2e684eb8 --- /dev/null +++ b/Jack/Launcher/DlgEx.h @@ -0,0 +1,85 @@ +/******************************************************************************* +; +; MODULE: DLGEX (.H) +; +; PURPOSE: Extended dialog class (derived from CDialog) that has +; a bitmap as a background +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_DLGEX_H__9EBE7C50_295C_4466_94B6_B2AC375EC962__INCLUDED_) +#define AFX_DLGEX_H__9EBE7C50_295C_4466_94B6_B2AC375EC962__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// DlgEx.h : header file +// + +#include "AfxTempl.h" + +typedef CArray CButtonArray; + +class CStaticEx; + +///////////////////////////////////////////////////////////////////////////// +// CDlgEx dialog + +class CDialogEx : public CDialog +{ +// Construction +public: + CDialogEx(int IDD, CWnd* pParent = NULL); // standard constructor + virtual ~CDialogEx() { FreeAllButtons(); } + BOOL SetBackGround(int nID); + void PaintBackGround(CPaintDC * dc); + void FreeAllButtons(); + + CButton* AddButton(UINT nID, int x, int y, UINT nCursorID = 0, CStaticEx* pHelpText = NULL, DWORD dwHelpTextID = 0); + CButton* AddCheckBox(UINT nID, int x, int y, CStaticEx* pHelpText = NULL, DWORD dwHelpTextID = 0); + + CButton* AddTextCheckBox(UINT nID, int x, int y, UINT nTextID = 0, CStaticEx* pHelpText = NULL, DWORD dwHelpTextID = 0); + CButton* AddTextCheckBox(UINT nID, int x, int y, const char *szText = NULL, CStaticEx* pHelpText = NULL, DWORD dwHelpTextID = 0); + +// CButton* AddAniButton( UINT nID, int x, int y, UINT nAniID ); + + void SetFocusButton(CButton* pButton); + CButton* GetFocusButton() { return m_pFocusButton; } + +// Dialog Data + //{{AFX_DATA(CDialogEx) + enum { IDD = 0 }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CDialogEx) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + //}}AFX_VIRTUAL + +// Implementation +protected: + + CButtonArray m_collButtons; // The list of buttons + CBitmap m_Background; // The background image + CButton* m_pFocusButton; // Which button has the focus? + + // Generated message map functions + //{{AFX_MSG(CDialogEx) + virtual BOOL OnInitDialog(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DLGEX_H__9EBE7C50_295C_4466_94B6_B2AC375EC962__INCLUDED_) diff --git a/Jack/Launcher/EditEx.cpp b/Jack/Launcher/EditEx.cpp new file mode 100644 index 00000000..a367d40f --- /dev/null +++ b/Jack/Launcher/EditEx.cpp @@ -0,0 +1,66 @@ +/******************************************************************************* +; +; MODULE: EDITEX (.CPP) +; +; PURPOSE: Extended Edit control class (derived from CEdit) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "EditEx.h" +#include "PlaySound.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CEditEx + +CEditEx::CEditEx() +{ +} + +CEditEx::~CEditEx() +{ +} + + +BEGIN_MESSAGE_MAP(CEditEx, CEdit) + //{{AFX_MSG_MAP(CEditEx) + ON_WM_CHAR() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CEditEx::OnChar +// +// PURPOSE: Character handler (to play a sound) +// +// ----------------------------------------------------------------------- // + +void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) +{ + if(nChar == VK_BACK) + { + PlaySound(IDR_TYPEBACK); + } + else + { + float randNum = (float)rand() / RAND_MAX; + float num = 0 + (3 - 0) * randNum; + if(num > 2.9f) + num = 2.0f; + PlaySound(IDR_TYPE+(int)num); + } + + CEdit::OnChar(nChar, nRepCnt, nFlags); +} diff --git a/Jack/Launcher/EditEx.h b/Jack/Launcher/EditEx.h new file mode 100644 index 00000000..86a67fc5 --- /dev/null +++ b/Jack/Launcher/EditEx.h @@ -0,0 +1,60 @@ +/******************************************************************************* +; +; MODULE: EDITEX (.H) +; +; PURPOSE: Extended Edit control class (derived from CEdit) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_EDITEX_H__4C8E4A22_B705_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_EDITEX_H__4C8E4A22_B705_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// EditEx.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CEditEx window + +class CEditEx : public CEdit +{ +// Construction +public: + CEditEx(); + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CEditEx) + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CEditEx(); + + // Generated message map functions +protected: + //{{AFX_MSG(CEditEx) + afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_EDITEX_H__4C8E4A22_B705_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/Launcher.cpp b/Jack/Launcher/Launcher.cpp new file mode 100644 index 00000000..0f77d875 --- /dev/null +++ b/Jack/Launcher/Launcher.cpp @@ -0,0 +1,720 @@ +/**************************************************************************** +; +; MODULE: Launcher (.cpp) +; +; PURPOSE: Launcher application main header file +; +; HISTORY: 11/16/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000-2002, Monolith Productions, Inc. +; +****************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "LauncherDlg.h" +#include "MessageBoxDlg.h" +#include "RezFind.h" +#include "Utils.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +COLORREF crHighlightText = RGB(255, 255, 0); +COLORREF crNormalText = RGB(192, 160, 32); + +///////////////////////////////////////////////////////////////////////////// +// CLauncherApp + +BEGIN_MESSAGE_MAP(CLauncherApp, CWinApp) + //{{AFX_MSG_MAP(CLauncherApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CLauncherApp construction + +CLauncherApp::CLauncherApp() +{ + m_bDisableSound = FALSE; + + m_bDisableMusic = FALSE; + m_bDisableMovies = FALSE; + m_bDisableJoysticks = FALSE; + m_bDisableTripleBuffering = FALSE; + m_bDisableHardwareCursor = FALSE; + m_bDisableHardwareSound = TRUE; + m_bDisableSoundFilters = TRUE; + m_bEnableScreenshots = FALSE; + m_bRestoreDefaults = FALSE; + m_bSaveCommands = FALSE; + m_dwNumLauncherRuns = 0; + m_bHasProfile = FALSE; + m_chDrive = 0; + m_dwLastRandom = 1; + m_bUseDisplaySettings = FALSE; + m_bUseDetailSettings = FALSE; + m_dwDetailSetting = DETAIL_MEDIUM; + m_bGoMultiHost = FALSE; + m_bGoMultiJoin = FALSE; + m_bGoGame = FALSE; + m_bGoMultiFind = FALSE; + m_bGoServer = FALSE; +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CLauncherApp object + +CLauncherApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CLauncherApp initialization + +BOOL CLauncherApp::InitInstance() +{ + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + + // Load some strings + m_csAppName.LoadString(IDS_GAME_NAME); + m_csAppName.LoadString(IDS_GAME_NAME); + m_csAppCD1Check.Format( "\\%s", LAUNCHER_EXE ); + m_csAppCD2Check = "\\DATA\\GAME2.REZ"; + m_csRezBase.LoadString(IDS_REZBASE); + m_csSetupExe.LoadString(IDS_SETUPEXE); + m_csServerExe.LoadString(IDS_SERVEREXE); + m_csLanguage.LoadString(IDS_LANGUAGE); + m_csAppVersion.LoadString(IDS_APPVERSION); + + // Check if we are already running... + + char sPath[128]; + char sName[128]; + char sExt[32]; + char sExe[128]; + GetModuleFileName(NULL, sPath, 125); + _splitpath(sPath, NULL, NULL, sName, sExt); + sprintf(sExe, "%s%s", sName, sExt); + if(ExistProcess(sExe, 2)) + { + return FALSE; + } + + char sDir[128] = { "" }; + GetCurrentDirectory(125, sDir); + if(strlen(sDir) > 3) strcat(sDir, "\\"); + + sprintf(sExe, "%sLITHTECH.EXE", sDir); + + if(ExistProcess(sExe, 1)) + { + return FALSE; + } + + // Set the CD-ROM root directory string... + BOOL bBogus; + m_csCDRoot.Format("%c:\\", CD_GetDriveLetterWithGame(bBogus)); + + // Load the registry settings + m_bInstalled = FALSE; + m_RegMgr.Init(); + if(OpenRegistryKey()) + { + char p[MAX_PATH]; + DWORD dwSize = sizeof(char) * MAX_PATH; + memset(p,0,dwSize); + if(m_RegMgr.GetField("InstallDir",p,dwSize) && p[0]) + { + // We're already installed + m_bInstalled = TRUE; + m_csInstallDir = p; + } + + memset(p,0,dwSize); + if(m_RegMgr.GetField("ProfileName",p,dwSize) && p[0]) + { + // We have already created a profile + m_bHasProfile = TRUE; + } + + m_dwLastRandom = GetRegistryDWord("Last Random"); + m_dwNumLauncherRuns = GetRegistryDWord("Num Launcher Runs"); + m_bDisableSound = GetRegistryBool("Disable Sound"); + m_bDisableMusic = GetRegistryBool("Disable Music"); + m_bDisableMovies = GetRegistryBool("Disable Movies"); + m_bDisableJoysticks = GetRegistryBool("Disable Joysticks"); + m_bDisableTripleBuffering = GetRegistryBool("Disable Triple Buffering"); + m_bDisableHardwareCursor = GetRegistryBool("Disable Hardware Cursor"); + m_bDisableHardwareSound = GetRegistryBool("Disable Hardware Sound"); + m_bDisableSoundFilters = GetRegistryBool("Disable Sound Filters"); + m_bEnableScreenshots = GetRegistryBool("Enable Screenshots"); + + // Check for a command string + m_bSaveCommands = GetRegistryBool("Save Commands"); + if(m_bSaveCommands) + { + dwSize = sizeof(char) * MAX_PATH; + memset(p,0,dwSize); + if(m_RegMgr.GetField("Commands",p,dwSize) && p[0]) + { + m_csCommands = p; + } + } + +#ifdef _FINAL + //change to the install directory to find stuff + if (m_bInstalled) + { + SetCurrentDirectory(m_csInstallDir); + } +#endif + + // Find rez files + FindRezFiles(CD_GetDriveLetterWithGame(bBogus),m_csRezBase); + + // Check for command line params + CString csCmdLine = m_lpCmdLine; + csCmdLine.MakeUpper(); + +/* + if(csCmdLine.Find("-GOMULTIHOST") != -1) + m_bGoMultiHost = TRUE; + if(csCmdLine.Find("-GOMULTIJOIN") != -1) + m_bGoMultiJoin = TRUE; + if(csCmdLine.Find("-GOMULTIFIND") != -1) + m_bGoMultiFind = TRUE; + if(csCmdLine.Find("-GOSERVER") != -1) + m_bGoServer = TRUE; + if(csCmdLine.Find("-GOGAME") != -1) + m_bGoGame = TRUE; + // Check for GameSpy command line params + if(csCmdLine.Find("CONNECT") != -1) + m_bGoMultiHost = TRUE; +*/ + if(csCmdLine.Find("+JOIN ") != -1) + m_bGoMultiJoin = TRUE; + + CString sModCommand = "+MOD "; + int nIndex = csCmdLine.Find( sModCommand ); + if( nIndex != -1 ) + { + CString sModName = csCmdLine.Right( csCmdLine.GetLength( ) - ( nIndex + sModCommand.GetLength( ))); + sModName.Trim( ); + int nEnd = sModName.Find( " " ); + if( nEnd == -1 ) + nEnd = sModName.GetLength( ); + sModName = sModName.Left( nEnd ); + theApp.m_RegMgr.SetField( FIELD_SELECTEDMOD, const_cast(( const char* )sModName ) ); + } + } + + // Make our custom brush and font + m_BkBrush.CreateSolidBrush((RGB(0,0,0))); + + LOGFONT lf; + memset(&lf,0,sizeof(LOGFONT)); + lf.lfHeight = 20; + strcpy(lf.lfFaceName,"Arial Narrow"); + m_Font.CreateFontIndirect(&lf); + + CLauncherDlg dlg; + m_pMainWnd = &dlg; + int nResponse = dlg.DoModal(); + + m_dwNumLauncherRuns++; + + // Write out some registry stuff + if(m_bInstalled) + { + m_RegMgr.SetField("Num Launcher Runs", m_dwNumLauncherRuns); + m_RegMgr.SetField("Last Random", m_dwLastRandom); + m_RegMgr.SetField("Disable Sound", m_bDisableSound); + m_RegMgr.SetField("Disable Music", m_bDisableMusic); + m_RegMgr.SetField("Disable Movies", m_bDisableMovies); + m_RegMgr.SetField("Disable Joysticks", m_bDisableJoysticks); + m_RegMgr.SetField("Disable Triple Buffering", m_bDisableTripleBuffering); + m_RegMgr.SetField("Disable Hardware Cursor", m_bDisableHardwareCursor); + m_RegMgr.SetField("Disable Hardware Sound", m_bDisableHardwareSound); + m_RegMgr.SetField("Disable Sound Filters", m_bDisableSoundFilters); + m_RegMgr.SetField("Enable Screenshots", m_bEnableScreenshots); + + // Set the language - done by the installer + //m_RegMgr.SetField("Language", (char *)(LPCTSTR)m_csLanguage); + } + + // Clean up + m_RegMgr.Term(); + m_BkBrush.DeleteObject(); + m_Font.DeleteObject(); + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::MessageBox +// +// PURPOSE: Graphical MessageBox function +// +// ----------------------------------------------------------------------- // +int CLauncherApp::MessageBox(const char *szText, const char *szCaption, DWORD dwType) +{ + CMessageBoxDlg dlg; + dlg.Init(szText,szCaption,dwType); + return dlg.DoModal(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::MessageBox +// +// PURPOSE: Graphical MessageBox function +// +// ----------------------------------------------------------------------- // +int CLauncherApp::MessageBox(UINT nIDText, UINT nIDCaption, DWORD dwType) +{ + // Load the text and caption strings from the resource file + CString csText,csCaption; + if(!csText.LoadString(nIDText)) + { + csText.Format("ERROR - Could not load string id: %d",nIDText); + MessageBox(csText,"ERROR"); + } + + if(!csCaption.LoadString(nIDCaption)) + { + csText.Format("ERROR - Could not load string id: %d",nIDCaption); + MessageBox(csText,"ERROR"); + } + + return MessageBox(csText,csCaption,dwType); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::GetRegistryBool +// +// PURPOSE: Gets a BOOL value from the registry under the +// key that's already open +// +// ----------------------------------------------------------------------- // +BOOL CLauncherApp::GetRegistryBool(char *szField,BOOL bDefault /* = FALSE */) +{ + DWORD dwResult; + if (m_RegMgr.GetField(szField,&dwResult)) + { + return (dwResult == 1); + } + + return bDefault; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::GetRegistryDWord +// +// PURPOSE: Gets a DWORD value from the registry under the +// key that's already open +// +// ----------------------------------------------------------------------- // +DWORD CLauncherApp::GetRegistryDWord(char *szField, DWORD dwDefault /* = 0 */) +{ + DWORD dwResult = 0; + if (m_RegMgr.GetField(szField,&dwResult)) + { + return dwResult; + } + return dwDefault; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_VerifyGame +// +// PURPOSE: Verifies that the correct CD is in the drive +// +// ----------------------------------------------------------------------- // +BOOL CLauncherApp::CD_VerifyGame() +{ + // Check if the game CD is already in the drive... + BOOL bDisc2 = FALSE; + { + CWaitCursor wc; + + bool bCDExists = !!CD_ExistGame(bDisc2); + if( bCDExists ) + { + return(TRUE); + } + } + + // Ask the user to insert the game CD... + BOOL bContinue = TRUE; + while(bContinue) + { + DWORD dwMsg; + if(bDisc2) + { + dwMsg = IDS_INSERTCD2; + } + else + { + dwMsg = IDS_INSERTCD; + } + + int nRet = MessageBox(dwMsg, IDS_GAME_NAME, MB_OKCANCEL | MB_ICONEXCLAMATION); + + if(nRet == IDOK) + { + CWaitCursor wc; + if(CD_ExistGame(bDisc2)) + { + return(TRUE); + } + } + else + { + return(FALSE); + } + } + + + // If we get here, we couldn't verify the CD... + return(FALSE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_ExistGame +// +// PURPOSE: Looks for the game CD +// +// ----------------------------------------------------------------------- // +BOOL CLauncherApp::CD_ExistGame(BOOL & bDisc2) +{ + // Use the new function to search across multiple drives... + char chDrive = CD_GetDriveLetterWithGame(bDisc2); + + // Update the rez files if necessary... + char* sGameRez = GetGameRezFile(); + + if(!sGameRez || sGameRez[0] == '\0') + { + FindRezFiles(chDrive,m_csRezBase); + } + + // If we get here, it's the game cd... + return(TRUE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_ExistFile +// +// PURPOSE: Determines if the given file exists +// +// ----------------------------------------------------------------------- // +BOOL CLauncherApp::CD_ExistFile(const char* sFile) +{ + if(!sFile) return(FALSE); + if(sFile[0] == '\0') return(FALSE); + + OFSTRUCT ofs; + + HFILE hFile = OpenFile(sFile, &ofs, OF_EXIST); + + return(hFile != HFILE_ERROR); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_GetDriveLetter +// +// PURPOSE: Gets a CD ROM drive letter +// +// ----------------------------------------------------------------------- // +char CLauncherApp::CD_GetDriveLetter() +{ + // Look for a registry override setting... + char sDir[256]; + char sDrive[32]; + DWORD bufsize = 30; + + sDrive[0] = '\0'; + if(m_RegMgr.GetField("CdRom Drive", sDrive, bufsize)) + { + if(sDrive[0] > 20) + { + char cdDrive = sDrive[0]; + sprintf(sDir, "%c:\\", cdDrive); + if(GetDriveType(sDir) == DRIVE_CDROM) return(cdDrive); + } + } + + // Try to find a CD ROM drive... + GetCurrentDirectory(255, sDir); + sDir[3] = '\0'; + + if(GetDriveType(sDir) == DRIVE_CDROM) + { + return(sDir[0]); + } + else + { + GetLogicalDriveStrings(255,sDir); + + char *pDir = sDir; + + while (*pDir) + { + if(GetDriveType(pDir) == DRIVE_CDROM) + { + return(*pDir); + } + + pDir++; + if (pDir) + pDir += 3; + } + } + + // If we get here, we didn't find one... + return(0); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_GetDriveLetterWithGame +// +// PURPOSE: Gets the CD ROM drive letter with the game on it +// +// ----------------------------------------------------------------------- // + +char CLauncherApp::CD_GetDriveLetterWithGame(BOOL & bDisc2) +{ + // Check if we've already found the cd-rom drive... + if(m_chDrive != 0) + { + return(m_chDrive); + } + + bDisc2 = FALSE; + + // Look for a registry override setting... + char sDrive[32]; + DWORD bufsize = 30; + + sDrive[0] = '\0'; + if(m_RegMgr.GetField("CdRom Drive", sDrive, bufsize)) + { + if(sDrive[0] > 20) + { + char chDrive = sDrive[0]; + + char cTest = CD_TestDriveLetterForGameDisc1(chDrive, bDisc2); + if(cTest) + { + return (cTest); + } + } + } + + // Try to find a CD ROM drive with the game EXE on it... + char sDir[256] = ""; + GetLogicalDriveStrings(255,sDir); + + char *pDir = sDir; + + while (*pDir) + { + if(GetDriveType(pDir) == DRIVE_CDROM) + { + char cTest = CD_TestDriveLetterForGameDisc1(*pDir, bDisc2); + if(cTest) + { + return (cTest); + } + } + + pDir++; + if (pDir) + pDir += 3; + } + + // If we get here, we didn't find one... + return(0); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_TestDriveLetterForGameDisc1 +// +// PURPOSE: Tests a potential CD ROM drive to see if it contains +// the game disc 1 +// +// ----------------------------------------------------------------------- // +char CLauncherApp::CD_TestDriveLetterForGameDisc1(char chDrive, BOOL & bDisc2) +{ + char sDir[256]; + sprintf(sDir, "%c:\\", chDrive); + if(GetDriveType(sDir) == DRIVE_CDROM) + { + char sBuf[256]; + sprintf(sBuf, "%c:%s", chDrive, m_csAppCD1Check); + + if(CD_ExistFile(sBuf)) + { + m_chDrive = chDrive; + return(chDrive); + } + } + + // Check and see if they left disk 2 in by mistake... + if(CD_TestDriveLetterForGameDisc2(chDrive)) + { + bDisc2 = TRUE; + } + + return (0); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::CD_TestDriveLetterForGameDisc2 +// +// PURPOSE: Tests a potential CD ROM drive to see if it contains +// the game disc 2 +// +// ----------------------------------------------------------------------- // +char CLauncherApp::CD_TestDriveLetterForGameDisc2(char chDrive) +{ + char sDir[256]; + sprintf(sDir, "%c:\\", chDrive); + if(GetDriveType(sDir) == DRIVE_CDROM) + { + char sBuf[256]; + sprintf(sBuf, "%c:%s", chDrive, m_csAppCD2Check); + + if(CD_ExistFile(sBuf)) + { + return(chDrive); + } + } + + return (0); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherApp::GetAdvancedOptionsCommandLineString() +// +// PURPOSE: Assembles the command line string based on the +// advanced options +// +// ----------------------------------------------------------------------- // +CString CLauncherApp::GetAdvancedOptionsCommandLineString() +{ + CString sAdv; + + if(m_bDisableMusic) + { + sAdv += " +DisableMusic 1"; + } + else + { + sAdv += " +DisableMusic 0"; + } + + if(m_bDisableSound) + { + sAdv += " +DisableSound 1"; + } + else + { + sAdv += " +DisableSound 0"; + } + + if(m_bDisableMovies) + { + sAdv += " +DisableMovies 1"; + } + + if(m_bDisableJoysticks) + { + sAdv += " +DisableJoystick 1"; + } + + if(m_bDisableTripleBuffering) + { + sAdv += " +DisableTripBuf 1"; + } + else + { + sAdv += " +DisableTripBuf 0"; + } + + if(m_bDisableHardwareCursor) + { + sAdv += " +DisableHardwareCursor 1"; + } + else + { + sAdv += " +DisableHardwareCursor 0"; + } + + + + if(m_bDisableHardwareSound) + { + sAdv += " +DisableHardwareSound 1"; + } + else + { + sAdv += " +DisableHardwareSound 0"; + } + + if(m_bDisableSoundFilters) + { + sAdv += " +DisableSoundFilters 1"; + } + else + { + sAdv += " +DisableSoundFilters 0"; + } + + if(m_bEnableScreenshots) + { + sAdv += " +lockablebackbuffer 1"; + } + else + { + sAdv += " +lockablebackbuffer 0"; + } + + + if(m_bRestoreDefaults) + { + sAdv += " +RestoreDefaults 1"; + } + + return(sAdv); +} + + +BOOL CLauncherApp::OpenRegistryKey() +{ + return(m_RegMgr.OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",(char*)GAME_NAME,(char *)(LPCTSTR)m_csAppVersion)); +} + diff --git a/Jack/Launcher/Launcher.h b/Jack/Launcher/Launcher.h new file mode 100644 index 00000000..526b2008 --- /dev/null +++ b/Jack/Launcher/Launcher.h @@ -0,0 +1,152 @@ +/******************************************************************************* +; +; MODULE: LAUNCHER (.H) +; +; PURPOSE: Launcher application main header file +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_LAUNCHER_H__1E6712C7_B0F3_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_LAUNCHER_H__1E6712C7_B0F3_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +// Includes +#include "resource.h" +#include "RegMgr32.h" + +// Defines +#define ACTION_HOSTGAME 100 +#define ACTION_JOINGAME 101 +#define ACTION_FINDINTERNETSERVERS 102 +#define ACTION_STANDALONESERVER 103 +#define ACTION_INSTALL 104 +#define ACTION_UNINSTALL 105 +#define ACTION_PLAY 106 + +#define DETAIL_LOW 0 +#define DETAIL_MEDIUM 1 +#define DETAIL_HIGH 2 + +//#define DIR_CUSTOM "Custom" +#define DIR_MODS "Custom\\Mods" +#define DIR_RESOURCES "Custom\\Resources" +#define FIELD_SELECTEDMOD "SelectedMod" + +///////////////////////////////////////////////////////////////////////////// +// CLauncherApp: +// See Launcher.cpp for the implementation of this class +// + +class CLauncherApp : public CWinApp +{ +public: + CLauncherApp(); + + // General variables + CRegMgr32 m_RegMgr; // Registry manager object + CBrush m_BkBrush; // Black background brush for edit and list boxes + CFont m_Font; // Font for edit and list boxes + char m_chDrive; // Which drive is the CDROM? + + BOOL m_bInstalled; // Is the game installed? + BOOL m_bRestoreDefaults; // Should all default settings be restored? + BOOL m_bSaveCommands; // Should the command-line commands be saved? + BOOL m_bUseDetailSettings; // Should the detail settings be used? + BOOL m_bUseDisplaySettings; // Should the display settings be used? + BOOL m_bDisableSound; // Disables sound + BOOL m_bDisableMusic; // Disables music + BOOL m_bDisableMovies; // Disables movies + BOOL m_bDisableJoysticks; // Disables Joysticks + BOOL m_bDisableTripleBuffering; // Disables triple buffering + BOOL m_bDisableHardwareCursor; // Disables the hardware cursor + BOOL m_bDisableHardwareSound; // Disables hardware 3D sound + BOOL m_bDisableSoundFilters; // Disables filtering of sounds in-game + BOOL m_bEnableScreenshots; // Enables in-game screenshots + + BOOL m_bGoMultiHost; // Jump right into a multiplayer host game + BOOL m_bGoMultiJoin; // Jump right into a multiplayer join game + BOOL m_bGoGame; // Jump right into a single player game + BOOL m_bGoMultiFind; // Jump right into find Internet servers + BOOL m_bGoServer; // Jump right into the stand-alone server + + BOOL m_bHasProfile; // Has user already created a profile + + DWORD m_dwNumLauncherRuns; // How many times the launcher has been run + DWORD m_dwLastRandom; // Last random value (for random splash screens) + DWORD m_dwDetailSetting; // Which detail level does the user want? + + CString m_csAppName; // Application name + CString m_csAppCD1Check; // "Please insert CD #1" + CString m_csAppCD2Check; // "Please insert CD #2" + CString m_csRezBase; // Base rez directory/file + CString m_csSetupExe; // Name of installer executable + CString m_csServerExe; // Name of stand-alone server executable + CString m_csLanguage; // Language (for language rez files) + CString m_csCDRoot; // Root CDRom drive + CString m_csCommands; // Command-line commands specified by the user + CString m_csInstallDir; // Directory where the game is installed + CString m_csAppVersion; // Application version + + // Graphical message box functions + int MessageBox(const char *szText, const char *szCaption, DWORD dwType = MB_OK); + int MessageBox(UINT nIDText, UINT nIDCaption, DWORD dwType = MB_OK); + + // Registry helpers + BOOL GetRegistryBool(char *szField,BOOL bDefault = FALSE); + DWORD GetRegistryDWord(char *szField, DWORD dwDefault = 0); + BOOL OpenRegistryKey(); + + // CD functions + BOOL CD_VerifyGame(); + BOOL CD_ExistGame(BOOL & bDisk2); + BOOL CD_ExistFile(const char* sFile); + char CD_GetDriveLetter(); + char CD_GetDriveLetterWithGame(BOOL & bDisk2); + char CD_TestDriveLetterForGameDisc1(char chDrive, BOOL & bDisk2); + char CD_TestDriveLetterForGameDisc2(char chDrive); + + // General functions + CString GetAdvancedOptionsCommandLineString(); + BOOL ReadConfigFile(const char* sFile); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CLauncherApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CLauncherApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +// Extern this guy so everyone can get access +extern CLauncherApp theApp; + +extern COLORREF crHighlightText; +extern COLORREF crNormalText; + + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_LAUNCHER_H__1E6712C7_B0F3_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/Launcher.vcproj b/Jack/Launcher/Launcher.vcproj new file mode 100644 index 00000000..deac2307 --- /dev/null +++ b/Jack/Launcher/Launcher.vcproj @@ -0,0 +1,2033 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jack/Launcher/Launcher.vcproj.vspscc b/Jack/Launcher/Launcher.vcproj.vspscc new file mode 100644 index 00000000..ac5f25b9 --- /dev/null +++ b/Jack/Launcher/Launcher.vcproj.vspscc @@ -0,0 +1,13 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "3" +"EXCLUDED_FILE0" = "..\\..\\libs\\built\\Release\\RegMgr32\\regmgr32.lib" +"EXCLUDED_FILE1" = "..\\..\\libs\\built\\Debug\\RegMgr32\\regmgr32.lib" +"EXCLUDED_FILE2" = "..\\..\\libs\\built\\Final\\RegMgr32\\regmgr32.lib" +"ORIGINAL_PROJECT_FILE_PATH" = "file:C:\\proj\\to2\\source\\Game\\Launcher\\Launcher.vcproj" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Jack/Launcher/LauncherDlg.cpp b/Jack/Launcher/LauncherDlg.cpp new file mode 100644 index 00000000..8a8ea598 --- /dev/null +++ b/Jack/Launcher/LauncherDlg.cpp @@ -0,0 +1,1230 @@ +/******************************************************************************* +; +; MODULE: LAUNCHERDLG (.CPP) +; +; PURPOSE: Launcher main dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000-2002, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "LauncherDlg.h" +//#include "MultiplayerDlg.h" +#include "OptionsDlg.h" +#include "DisplayDlg.h" +#include "DisplayMgr.h" +#include "RezFind.h" +#include "DetailSettingsDlg.h" +#include "ButtonEx.h" +#include "PlaySound.h" +#include +#include "Utils.h" +#include "CustomizeDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define LD_CLOSE_X 503 +#define LD_CLOSE_Y 6 +#define LD_MINIMIZE_X 487 +#define LD_MINIMIZE_Y 6 +#define LD_PLAY_X 413 +#define LD_PLAY_Y 25 +#define LD_SERVER_X 413 +#define LD_SERVER_Y 61 +#define LD_DISPLAY_X 413 +#define LD_DISPLAY_Y 97 +#define LD_OPTIONS_X 413 +#define LD_OPTIONS_Y 133 +#define LD_UNINSTALL_X 413 +#define LD_UNINSTALL_Y 169 +#define LD_QUIT_X 413 +#define LD_QUIT_Y 205 +#define LD_COMPANYWEB_X 242 +#define LD_COMPANYWEB_Y 205 +#define LD_LITHTECHWEB_X 334 +#define LD_LITHTECHWEB_Y 188 +#define LD_SIERRAWEB_X 10 +#define LD_SIERRAWEB_Y 205 + +#define LD_CUSTOMIZE_X 413 +#define LD_CUSTOMIZE_Y 61 + +//#define LD_ANIMAIN_X 43 +//#define LD_ANIMAIN_Y 82 +//#define LD_ANIBUTTONS_X 387 +//#define LD_ANIBUTTONS_Y 19 + +extern CDisplayMgr* g_pDisplayMgr; + +//this should match the value in ClientShell\ProfileMgr.h +const float kDefaultGamma = 1.04f; + + +///////////////////////////////////////////////////////////////////////////// +// CLauncherDlg dialog + +CLauncherDlg::CLauncherDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(CLauncherDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CLauncherDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CLauncherDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CLauncherDlg) +// DDX_Control(pDX, IDC_ANIMATE2, m_aniButtons); + //DDX_Control(pDX, IDC_ANIMATE, m_aniMain); + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CLauncherDlg, CMoveDialog) + //{{AFX_MSG_MAP(CLauncherDlg) + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_BN_CLICKED(IDC_CLOSE, OnClose) + ON_BN_CLICKED(IDC_MINIMIZE, OnMinimize) + ON_BN_CLICKED(IDC_PLAY, OnPlay) + ON_BN_CLICKED(IDC_OPTIONS, OnOptions) + ON_BN_CLICKED(IDC_DISPLAY, OnDisplay) + ON_BN_CLICKED(IDC_UNINSTALL, OnUninstall) + ON_BN_CLICKED(IDC_QUIT, OnQuit) + ON_WM_DESTROY() + ON_BN_CLICKED(IDC_PUBLISHERWEB, OnPublisherweb) + ON_BN_CLICKED(IDC_COMPANYWEB, OnCompanyWeb) + ON_BN_CLICKED(IDC_LITHTECHWEB, OnLithtechWeb) + ON_BN_CLICKED(IDC_SIERRAWEB, OnSierraWeb) + ON_BN_CLICKED(IDC_CUSTOM, OnCustomize) + //}}AFX_MSG_MAP + ON_WM_CTLCOLOR() +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnInitDialog +// +// PURPOSE: Where it all happens baby! +// +// ----------------------------------------------------------------------- // + +BOOL CLauncherDlg::OnInitDialog() +{ + //*************************************************** + // Do this BEFORE calling CMoveDialog::OnInitDialog() + // + SetBackGround(IDB_BACKGROUND); + + //*************************************************** + + CMoveDialog::OnInitDialog(); + + CenterWindow(); + + // Here's where we define what buttons go in our dialog + AddButton(IDC_CLOSE,LD_CLOSE_X,LD_CLOSE_Y); + AddButton(IDC_MINIMIZE,LD_MINIMIZE_X,LD_MINIMIZE_Y); +// AddButton(IDC_SERVER,LD_SERVER_X,LD_SERVER_Y); + AddButton(IDC_DISPLAY,LD_DISPLAY_X,LD_DISPLAY_Y); + AddButton(IDC_OPTIONS,LD_OPTIONS_X,LD_OPTIONS_Y); + AddButton(IDC_UNINSTALL,LD_UNINSTALL_X,LD_UNINSTALL_Y); + AddButton(IDC_QUIT,LD_QUIT_X,LD_QUIT_Y); + AddButton( IDC_COMPANYWEB, LD_COMPANYWEB_X, LD_COMPANYWEB_Y, IDC_WEBHAND ); +// AddButton( IDC_LITHTECHWEB, LD_LITHTECHWEB_X, LD_LITHTECHWEB_Y, IDC_WEBHAND ); + AddButton( IDC_SIERRAWEB, LD_SIERRAWEB_X, LD_SIERRAWEB_Y, IDC_WEBHAND ); + + // Check for the custom directory before creating this button... + + if( DirExist( DIR_MODS )) + { + char szFiles[MAX_PATH] = {0}; + sprintf( szFiles, "%s\\*", DIR_MODS); + + CFileFind cFileFinder; + + BOOL bModFound = false; + BOOL bDirFound = cFileFinder.FindFile( szFiles ); + while( bDirFound ) + { + bModFound = true; + bDirFound = cFileFinder.FindNextFile(); + + // Ignore the 'dots' directories and all files... + + if( !cFileFinder.IsDirectory() || cFileFinder.IsDots() ) + { + bModFound = false; + } + + if( bModFound ) + break; + } + + // End the search... + + cFileFinder.Close(); + + if( bModFound ) + AddButton( IDC_CUSTOM, LD_CUSTOMIZE_X, LD_CUSTOMIZE_Y ); + } + + // Figure out if we need to load the "Play" button or the "Install" button + if(theApp.m_bInstalled) + { + CWnd* pWnd = GetDlgItem(IDC_PLAY); + if(pWnd) + { + pWnd->SetWindowText("Play"); + } + + // Check for command-line params that automatically launch the game + if(theApp.m_bGoMultiHost) + { + if(LaunchGame(ACTION_HOSTGAME)) + { + EndDialog(ACTION_HOSTGAME); + return TRUE; + } + } + if(theApp.m_bGoMultiJoin) + { + if(LaunchGame(ACTION_JOINGAME)) + { + EndDialog(ACTION_JOINGAME); + return TRUE; + } + } + if(theApp.m_bGoMultiFind) + { + if(LaunchGame(ACTION_FINDINTERNETSERVERS)) + { + EndDialog(ACTION_FINDINTERNETSERVERS); + return TRUE; + } + } + if(theApp.m_bGoGame) + { + if(LaunchGame(ACTION_PLAY)) + { + EndDialog(ACTION_PLAY); + return TRUE; + } + } + if(theApp.m_bGoServer) + { + if(LaunchGame(ACTION_STANDALONESERVER)) + { + EndDialog(ACTION_STANDALONESERVER); + return TRUE; + } + } + } + else + { + //GetDlgItem(IDC_MULTIPLAYER)->EnableWindow(FALSE); +// GetDlgItem(IDC_SERVER)->EnableWindow(FALSE); + GetDlgItem(IDC_DISPLAY)->EnableWindow(FALSE); + GetDlgItem(IDC_OPTIONS)->EnableWindow(FALSE); + GetDlgItem(IDC_UNINSTALL)->EnableWindow(FALSE); + } + + // Make sure the play button is default. + SetDefID( IDC_PLAY ); + + // We add this guy last because the images loaded by this function are + // dependent on the text of the button -- which may have been altered above + AddButton(IDC_PLAY,LD_PLAY_X,LD_PLAY_Y); + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + // Set window title + SetWindowText(theApp.m_csAppName); + + // Set up our animation control +/* if(!m_aniMain.Open(IDR_AVI_LOGO1)) + { + MessageBox("AVI Open Error!"); + } + m_aniMain.SetWindowPos(NULL,LD_ANIMAIN_X,LD_ANIMAIN_Y,0,0,SWP_NOZORDER | SWP_NOSIZE); + m_aniMain.Play(0,-1,1); + if(!m_aniButtons.Open(IDR_AVI_BUTTONS)) + { + // Couldn't open the avi + theApp.MessageBox(IDS_CANTOPENAVI, IDS_GAME_NAME, MB_OK | MB_ICONSTOP); + } + m_aniButtons.SetWindowPos(NULL,LD_ANIBUTTONS_X,LD_ANIBUTTONS_Y,0,0,SWP_NOZORDER | SWP_NOSIZE); + m_aniButtons.Play(0,-1,-1); +*/ + + // Play the intro sound + PlaySound(IDR_INTRO); + + return TRUE; // return TRUE unless you set the focus to a control +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnPaint +// +// PURPOSE: WM_PAINT handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + //*************************************************** + // Call this BEFORE doing any painting on the dialog! + // + PaintBackGround(&dc); + //*************************************************** + + if (IsIconic()) + { + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CMoveDialog::OnPaint(); + } +} + +// The system calls this to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR CLauncherDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnClose +// +// PURPOSE: Close button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnClose() +{ + // Close us + OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnMinimize +// +// PURPOSE: Minimize button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnMinimize() +{ + // Minimize us + ShowWindow(SW_MINIMIZE); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnPlay +// +// PURPOSE: Play/Install button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnPlay() +{ + // Launch the game or the installer + if(theApp.m_bInstalled && !ExistProcess(theApp.m_csSetupExe, 2)) + { + if(theApp.CD_VerifyGame()) + { + if(LaunchGame(ACTION_PLAY)) + { + EndDialog(ACTION_PLAY); + } + } + } + else + { + +#ifndef _FINAL +#define SELFINSTALL +#endif // _FINAL + +#ifdef SELFINSTALL + + // In the debug version, don't actually launch the installer + // just set up the registry + CRegMgr32* pReg = &theApp.m_RegMgr; + if(!pReg->CreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",(char *)GAME_NAME,(char *)(LPCTSTR)theApp.m_csAppVersion)) + { + if(!pReg->OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",(char *)GAME_NAME,(char *)(LPCTSTR)theApp.m_csAppVersion)) + { + theApp.MessageBox( IDS_DEBUG_REGCREATEERROR, IDS_GAME_NAME, MB_OK | MB_ICONSTOP ); + return; + } + } + + // Get the current directory + char sDir[256]; + GetCurrentDirectory(255, sDir); + CString csDir = sDir; + if(csDir[csDir.GetLength()-1] != '\\') + { + csDir += '\\'; + } + + // Set the "InstallDir" field with the current directory just for shits... + if(pReg->SetField("InstallDir",(char *)(LPCTSTR)csDir)) + { + theApp.MessageBox( IDS_DEBUG_INSTALLSUCCESS, IDS_GAME_NAME, MB_OK | MB_ICONINFORMATION); + //GetDlgItem(IDC_SERVER)->EnableWindow(TRUE); + + GetDlgItem(IDC_DISPLAY)->EnableWindow(TRUE); + GetDlgItem(IDC_OPTIONS)->EnableWindow(TRUE); + GetDlgItem(IDC_UNINSTALL)->EnableWindow(TRUE); + + theApp.m_bInstalled = TRUE; + Invalidate(); + + // Swap the install button to say "Play" + CButtonEx* pWnd = (CButtonEx*)GetDlgItem(IDC_PLAY); + if(pWnd) + { + pWnd->LoadBitmaps("PlayU","PlayD","PlayF","PlayX"); + pWnd->Invalidate(); + } + } + else + { + theApp.MessageBox( IDS_DEBUG_REGCREATEERROR, IDS_GAME_NAME, MB_OK | MB_ICONSTOP ); + } + +#else // Retail install + + if(WinExec(theApp.m_csSetupExe,SW_SHOW) > 31) + { + // Just let it happen... +// EndDialog(ACTION_INSTALL); + + // Okay, they're installing so we're done. Force them to relaunch + // the launcher since they really shouldn't be playing the game from + // here anyway... :) + + OnQuit(); + } + else + { + // Couldn't find the setup exe + theApp.MessageBox(IDS_CANTLAUNCHSETUP, IDS_GAME_NAME, MB_OK | MB_ICONSTOP); + } +#endif + } +} + +/* +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnMultiplayer +// +// PURPOSE: Multiplayer button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnMultiplayer() +{ + // Get the button so we know where to position ourselves + CWnd* wnd = GetDlgItem(IDC_MULTIPLAYER); + + // Get coordinates + CRect rect; + wnd->GetWindowRect(&rect); + + CPoint point; + point.x = rect.right; + point.y = rect.top; + + // Bring up the multiplayer dialog + CMultiplayerDlg dlg; + dlg.SetDialogPos(point.x,point.y); + dlg.SetAnimTime(200); + dlg.SetAnimSound(IDR_ANIMDLG); + int nResponse = dlg.DoModal(); + switch(nResponse) + { + case ACTION_HOSTGAME: + case ACTION_JOINGAME: + case ACTION_FINDINTERNETSERVERS: + case ACTION_STANDALONESERVER: + { + // Launch the game + if(LaunchGame(nResponse)) + { + EndDialog(nResponse); + } + break; + } + } +} +*/ + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnOptions +// +// PURPOSE: Options button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnOptions() +{ + // See if we need to display the warning for dumbass users + if(!theApp.GetRegistryBool("OptionsWarning")) + { + if(theApp.MessageBox( IDS_OPTIONS_WARNING, IDS_GAME_NAME, MB_OKCANCEL | MB_ICONEXCLAMATION ) == IDCANCEL) + { + return; + } + + theApp.m_RegMgr.SetField("OptionsWarning",1); + } + + COptionsDlg dlg; + dlg.DoModal(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnDisplay +// +// PURPOSE: Display button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnDisplay() +{ + // See if we need to display the warning for complete retard users + if(!theApp.GetRegistryBool("DisplayWarning")) + { + if(theApp.MessageBox( IDS_DISPLAY_WARNING, IDS_GAME_NAME, MB_OKCANCEL | MB_ICONEXCLAMATION ) == IDCANCEL) + { + return; + } + + theApp.m_RegMgr.SetField("DisplayWarning",1); + } + + CDisplayDlg dlg; + if(dlg.DoModal() == IDOK) + { + theApp.m_bUseDisplaySettings = TRUE; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnUninstall +// +// PURPOSE: Uninstall button handler +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnUninstall() +{ + +#ifndef _FINAL + + // In a debug build, just remove the registry key + CRegMgr32* pReg = &theApp.m_RegMgr; + pReg->DeleteKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",(char*)GAME_NAME,(char *)(LPCTSTR)theApp.m_csAppVersion); + theApp.MessageBox( IDS_DEBUG_UNINSTALLSUCCESS, IDS_GAME_NAME, MB_OK | MB_ICONINFORMATION); + //GetDlgItem(IDC_MULTIPLAYER)->EnableWindow(FALSE); + //GetDlgItem(IDC_SERVER)->EnableWindow(FALSE); + GetDlgItem(IDC_DISPLAY)->EnableWindow(FALSE); + GetDlgItem(IDC_OPTIONS)->EnableWindow(FALSE); + GetDlgItem(IDC_UNINSTALL)->EnableWindow(FALSE); + theApp.m_bInstalled = FALSE; + Invalidate(); + + // Swap the play button to say "Install" + CButtonEx* pWnd = (CButtonEx*)GetDlgItem(IDC_PLAY); + if(pWnd) + { + pWnd->LoadBitmaps("InstallU","InstallD","InstallF","InstallX"); + pWnd->Invalidate(); + } + +#else + + // Make sure we use the install path so we can uninstall from anywhere... + + CRegMgr32* pReg = &theApp.m_RegMgr; + if(pReg->OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",( char* )GAME_NAME,(char *)(LPCTSTR)theApp.m_csAppVersion)) + { + // Get the installed directory + char sDir[256]; + unsigned long nSize = sizeof(sDir); + if(pReg->GetField("InstallDir",sDir,nSize)) + { + CString csParam = ( sDir[0] ? + CString(sDir) + CString("\\setup.exe") : + CString("setup.exe") ); + + // Launch the uninstaller and exit our app + STARTUPINFO si; + PROCESS_INFORMATION pi; + GetStartupInfo(&si); + if (CreateProcess(NULL, (char *)(LPCTSTR)csParam, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_PROCESS_GROUP, NULL, NULL, &si, &pi)) + { + EndDialog(ACTION_UNINSTALL); + return; + } + } + } + + // Couldn't uninstall the game... + + theApp.MessageBox(IDS_CANTUNINSTALL, IDS_GAME_NAME, MB_OK | MB_ICONSTOP); + +#endif +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnCompanyWeb +// +// PURPOSE: Bring the user to www.lith.com +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnCompanyWeb() +{ + CString sURL; + sURL.LoadString( IDS_COMPANYWEBPAGE ); + + if ((UINT)ShellExecute(NULL, NULL, sURL, NULL, NULL, SW_SHOWNORMAL) <= 32) + { + theApp.MessageBox(IDS_LAUNCHBROWSERERROR, IDS_GAME_NAME , MB_OK | MB_ICONEXCLAMATION); + } + +} + + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnPublisherweb +// +// PURPOSE: Bring the user to the publishers web page +// +// ----------------------------------------------------------------------- // +void CLauncherDlg::OnPublisherweb() +{ + CString sURL; + sURL.LoadString( IDS_PUBLISHERWEBPAGE ); + + if ((UINT)ShellExecute(NULL, NULL, sURL, NULL, NULL, SW_SHOWNORMAL) <= 32) + { + theApp.MessageBox(IDS_LAUNCHBROWSERERROR, IDS_GAME_NAME , MB_OK | MB_ICONEXCLAMATION); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnLithtechWeb +// +// PURPOSE: Bring the user to the lithtech web page +// +// ----------------------------------------------------------------------- // +void CLauncherDlg::OnLithtechWeb() +{ + CString sURL; + sURL.LoadString( IDS_LITHTECHWEBPAGE ); + + if ((UINT)ShellExecute(NULL, NULL, sURL, NULL, NULL, SW_SHOWNORMAL) <= 32) + { + theApp.MessageBox(IDS_LAUNCHBROWSERERROR, IDS_GAME_NAME , MB_OK | MB_ICONEXCLAMATION); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnSierraWeb +// +// PURPOSE: Bring the user to the other publishers web page +// +// ----------------------------------------------------------------------- // +void CLauncherDlg::OnSierraWeb() +{ + CString sURL; + sURL.LoadString( IDS_SIERRAWEBPAGE ); + + if ((UINT)ShellExecute(NULL, NULL, sURL, NULL, NULL, SW_SHOWNORMAL) <= 32) + { + theApp.MessageBox(IDS_LAUNCHBROWSERERROR, IDS_GAME_NAME , MB_OK | MB_ICONEXCLAMATION); + } +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnServer +// +// PURPOSE: Launches the dedicated server app +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnServer() +{ + if( LaunchGame( ACTION_STANDALONESERVER ) ) + { + EndDialog( ACTION_STANDALONESERVER ); + } +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnQuit +// +// PURPOSE: I'll give ya one big fat freakin guess. +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnQuit() +{ + OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnCommand +// +// PURPOSE: Command handler +// +// ----------------------------------------------------------------------- // + +BOOL CLauncherDlg::OnCommand(WPARAM wParam, LPARAM lParam) +{ +// if((LOWORD(wParam) == IDC_ANIMATE) && (HIWORD(wParam) == ACN_STOP)) +// { +// m_aniMain.Close(); +// m_aniMain.Open(IDR_AVI_LOGO2); +// m_aniMain.Play(0,-1,-1); +// } + return CMoveDialog::OnCommand(wParam, lParam); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnDestroy +// +// PURPOSE: Clean-up time... bitch. +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnDestroy() +{ + CMoveDialog::OnDestroy(); + if(g_pDisplayMgr) + { + delete g_pDisplayMgr; + g_pDisplayMgr = NULL; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::LaunchGame +// +// PURPOSE: This is the entire purpose of this godforsaken app. +// +// ----------------------------------------------------------------------- // + +BOOL CLauncherDlg::LaunchGame(DWORD dwAction) +{ + if(dwAction == ACTION_STANDALONESERVER) + { + if(WinExec(theApp.m_csServerExe,SW_SHOW) > 31) + { + // Just let it happen... + return TRUE; + } + else + { + theApp.MessageBox(IDS_CANTLAUNCHSERVER, IDS_GAME_NAME, MB_OK | MB_ICONSTOP); + return FALSE; + } + } + + // See if we need to bring up the detail settings dialog box + if((!theApp.m_bHasProfile) || (theApp.m_bRestoreDefaults)) + { + CDetailSettingsDlg dlg; + int nRet = dlg.DoModal(); + if(nRet == IDCANCEL) + { + return FALSE; + } + else + { + theApp.m_bUseDetailSettings = TRUE; + } + } + + char* sGameRez = GetGameRezFile(); + char* sSoundRez = GetSoundRezFile(); + + if (!sGameRez || sGameRez[0] == '\0') + { + theApp.MessageBox(IDS_CANTFINDREZFILE, IDS_GAME_NAME, MB_OK | MB_ICONSTOP); + return FALSE; + } + + // Get the install path from the registry... + + CRegMgr32* pReg = &theApp.m_RegMgr; + if(!pReg->OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE","Monolith Productions",( char* )GAME_NAME,(char *)(LPCTSTR)theApp.m_csAppVersion)) + { + theApp.MessageBox( IDS_CANTLAUNCHCLIENTEXE, IDS_GAME_NAME, MB_OK | MB_ICONSTOP ); + return FALSE; + } + + // Get the installed directory + char sDir[256]; + unsigned long nSize = sizeof(sDir); + if(!pReg->GetField("InstallDir",sDir,nSize)) + { + theApp.MessageBox( IDS_CANTLAUNCHCLIENTEXE, IDS_GAME_NAME, MB_OK | MB_ICONSTOP ); + return FALSE; + } + +#ifdef _FINAL + SetCurrentDirectory(sDir); +#endif + + CString sNewCmdLine; + + // Set the window title... + + sNewCmdLine += " -windowtitle \""; + sNewCmdLine += theApp.m_csAppName; + sNewCmdLine += "\""; + + // Set rez files... + + // In order to ensure propper use of user created .rez files that are content + // only, such as a map pack, specify the .rez files in the resources directory + // first. Then our retail game .rez files and finialy the .rez files for the + // selected mod, if one was specified. + + + // Add any user created .rez files found in the resources directory... + + char szFiles[MAX_PATH] = {0}; + sprintf( szFiles, "%s\\*.rez", DIR_RESOURCES); + + CFileFind cFileFinder; + + BOOL bFound = cFileFinder.FindFile( szFiles ); + while( bFound ) + { + bFound = cFileFinder.FindNextFile(); + + // Ignore all directories... + + if( cFileFinder.IsDirectory() || cFileFinder.IsDots() ) + continue; + + // Add the .rez file to the command line... + + sNewCmdLine += " -rez "; + sNewCmdLine += DIR_RESOURCES; + sNewCmdLine += "\\"; + sNewCmdLine += cFileFinder.GetFileName(); + } + + // End the search... + + cFileFinder.Close(); + + // Add our own retail game .rez files... + + sNewCmdLine += " -rez "; + sNewCmdLine += sGameRez; + + if (sSoundRez && sSoundRez[0] != '\0') + { + sNewCmdLine += " -rez "; + sNewCmdLine += sSoundRez; + } + + sNewCmdLine += " -rez "; // " -rez 2.rez" (Disk 2 rez file) + sNewCmdLine += theApp.m_csRezBase; + sNewCmdLine += "2.rez"; + + sNewCmdLine += " -rez "; // " -rez dll.rez" (DLL rez file) + sNewCmdLine += theApp.m_csRezBase; + sNewCmdLine += "dll.rez"; + + sNewCmdLine += " -rez "; // " -rez Sound.rez" (sound rez file) + sNewCmdLine += "Sound.rez"; + + sNewCmdLine += " -rez "; // " -rez l.rez" (language rez file) + sNewCmdLine += theApp.m_csRezBase; + sNewCmdLine += "l.rez"; + + sNewCmdLine += " -rez custom"; + + sNewCmdLine += " -rez "; // " -rez p.rez" (patch rez file) + sNewCmdLine += theApp.m_csRezBase; + sNewCmdLine += "p.rez"; + + sNewCmdLine += " -rez "; // " -rez p2.rez" (patch2 rez file) + sNewCmdLine += theApp.m_csRezBase; + sNewCmdLine += "p2.rez"; + + // Get the number of content addons installed. + DWORD nContentNum = 0; + if( pReg->GetField( "ContentNum", &nContentNum )) + { + char szCommandLineKey[256] = ""; + + // Loop through each one, adding the newer, higher numbered ones, to the end + // so they override the older ones. + for( DWORD i = 0; i < nContentNum; i++ ) + { + // Add any command line stuff added by an Update + char szCommandLine[256] = ""; + sprintf( szCommandLineKey, "ContentCommandLine%d", i ); + DWORD nBufSize = sizeof( szCommandLine ); + if( pReg->GetField( szCommandLineKey, szCommandLine, nBufSize ) && + szCommandLine[0] ) + { + sNewCmdLine += " "; + sNewCmdLine += szCommandLine; + } + } + } + + // Get the number of updates installed. Make sure to do this after the content + // addons so they override anything. + DWORD nUpdateNum = 0; + if( pReg->GetField( "UpdateNum", &nUpdateNum )) + { + char szCommandLineKey[256] = ""; + + // Loop through each one, adding the newer, higher numbered ones, to the end + // so they override the older ones. + for( DWORD i = 0; i < nUpdateNum; i++ ) + { + // Add any command line stuff added by an Update + char szCommandLine[256] = ""; + sprintf( szCommandLineKey, "UpdateCommandLine%d", i ); + DWORD nBufSize = sizeof( szCommandLine ); + if( pReg->GetField( szCommandLineKey, szCommandLine, nBufSize ) && + szCommandLine[0] ) + { + sNewCmdLine += " "; + sNewCmdLine += szCommandLine; + } + } + } + + // Now add all the .rez files associated with the selected mod, if we have one... + + char szSelectedMod[256] = {0}; + DWORD bufSize = sizeof(szSelectedMod); + + if( pReg->GetField( FIELD_SELECTEDMOD, szSelectedMod, bufSize )) + { + if( szSelectedMod[0] ) + { + char szModDir[MAX_PATH] = {0}; + sprintf( szModDir, "%s\\%s", DIR_MODS, szSelectedMod ); + + // Make sure the mod is still there... + + if( DirExist( szModDir )) + { + // Set the mod name... + + sNewCmdLine += " +mod "; + sNewCmdLine += szSelectedMod; + + // Search for all .rez files within the selected mod directory... + + sprintf( szFiles, "%s\\%s\\*.rez", DIR_MODS, szSelectedMod ); + + BOOL bFound = cFileFinder.FindFile( szFiles ); + while( bFound ) + { + bFound = cFileFinder.FindNextFile(); + + // Ignore all directories... + + if( cFileFinder.IsDirectory() || cFileFinder.IsDots() ) + continue; + + // Add the .rez file to the command line... + + sNewCmdLine += " -rez "; + sNewCmdLine += DIR_MODS; + sNewCmdLine += "\\"; + sNewCmdLine += szSelectedMod; + sNewCmdLine += "\\"; + sNewCmdLine += cFileFinder.GetFileName(); + } + + // End the search... + + cFileFinder.Close(); + } + else + { + pReg->SetField( FIELD_SELECTEDMOD, "" ); + } + } + } + + + // Set multiplayer stuff... + switch(dwAction) + { + case ACTION_PLAY: + { + sNewCmdLine += " +multiplayer 0"; + break; + } + case ACTION_HOSTGAME: + { + sNewCmdLine += " +multiplayer 1"; + break; + } + case ACTION_JOINGAME: + { + sNewCmdLine += " +multijoin 1"; + break; + } + case ACTION_FINDINTERNETSERVERS: + { + sNewCmdLine += " +multifind 1"; + break; + } + } + + + // Add the advanced options stuff as necessary... + + CString sAdv = theApp.GetAdvancedOptionsCommandLineString(); + + if (!sAdv.IsEmpty()) + { + sNewCmdLine += " "; + sNewCmdLine += sAdv; + } + + + // Add display settings to the command-line if requested... + + if (theApp.m_bUseDisplaySettings && g_pDisplayMgr) + { + CString sDisplay = g_pDisplayMgr->GetDisplaySettingsString(); + + if (!sDisplay.IsEmpty()) + { + sNewCmdLine += " "; + sNewCmdLine += sDisplay; + } + } + + + if (theApp.m_bRestoreDefaults) + { + char szGamma[8] = ""; + sprintf(szGamma,"%0.2f",kDefaultGamma); + sNewCmdLine += " +HardwareCursor 1"; + sNewCmdLine += " +VSyncOnFlip 1"; + sNewCmdLine += " +GammaR "; + sNewCmdLine += szGamma; + sNewCmdLine += " +GammaG "; + sNewCmdLine += szGamma; + sNewCmdLine += " +GammaB "; + sNewCmdLine += szGamma; + } + + + + // Add the 3D sound setting if necessary... + + /*CString sSnd = SndDlg_GetCommandLineParameters(); + + if (!sSnd.IsEmpty()) + { + sNewCmdLine += " "; + sNewCmdLine += sSnd; + }*/ + + + // Add any additional rez files... + + /*CString sAddRez = GetRezStringCommandLine(); + + if (!sAddRez.IsEmpty()) + { + sNewCmdLine += sAddRez; + }*/ + + + // Add the detail setting if necessary... + + if (theApp.m_bUseDetailSettings) + { + CString sDetail = ""; + + switch (theApp.m_dwDetailSetting) + { + case DETAIL_HIGH: + //high detail == low performance + sDetail = " +SetPerformanceLevel .DefaultLow"; + if (!theApp.m_bUseDisplaySettings) + { + sDetail += " +ScreenWidth 1024 +ScreenHeight 768 +BitDepth 32"; + } + break; + case DETAIL_MEDIUM: + //high detail == low performance + sDetail = " +SetPerformanceLevel .DefaultMid"; + if (!theApp.m_bUseDisplaySettings) + { + sDetail += " +ScreenWidth 800 +ScreenHeight 600 +BitDepth 32"; + } + break; + case DETAIL_LOW: + //high detail == low performance + sDetail = " +SetPerformanceLevel .DefaultHigh"; + if (!theApp.m_bUseDisplaySettings) + { + sDetail += " +ScreenWidth 640 +ScreenHeight 480 +BitDepth 32"; + } + break; + } + + + sNewCmdLine += sDetail; + } + + // Add the run/start specified command-line parameters... + + sNewCmdLine += " "; + sNewCmdLine += theApp.m_lpCmdLine; + + + // Add the user specified command-line parameters... + + sNewCmdLine += " "; + sNewCmdLine += theApp.m_csCommands; + + + // In debug builds, check if we should display the command line string... + + if (GetAsyncKeyState(VK_SHIFT) & 0x80000000) + { + int nRet = theApp.MessageBox(sNewCmdLine, "Command Line String", MB_OKCANCEL); + if (nRet == IDCANCEL) + return(FALSE); + } + + // Time to run + + STARTUPINFO si; + PROCESS_INFORMATION pi; + + GetStartupInfo(&si); + + //save it out to a file + FILE* fp = fopen("launchcmds.txt", "w"); + if ( !fp ) + { + theApp.MessageBox(IDS_CANTOPENCOMMANDFILE, IDS_GAME_NAME, MB_OK | MB_ICONEXCLAMATION); + return FALSE; + } + + fprintf(fp, sNewCmdLine); + fclose(fp); + + if (!CreateProcess(NULL, "lithtech.exe -cmdfile launchcmds.txt", NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_PROCESS_GROUP, NULL, NULL, &si, &pi)) + { + theApp.MessageBox(IDS_CANTLAUNCHCLIENTEXE, IDS_GAME_NAME, MB_OK | MB_ICONEXCLAMATION); + return(FALSE); + } + + return TRUE; +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CLauncherDlg::OnCustomize +// +// PURPOSE: Launch the customize dialog... +// +// ----------------------------------------------------------------------- // + +void CLauncherDlg::OnCustomize( ) +{ + if( !DirExist( DIR_MODS )) + { + theApp.MessageBox( IDS_NOCUSTOMDIR, IDS_GAME_NAME, MB_OK | MB_ICONEXCLAMATION ); + return; + } + + CustomizeDlg dlg; + dlg.DoModal(); +} +HBRUSH CLauncherDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) +{ + HBRUSH hbr = CMoveDialog::OnCtlColor(pDC, pWnd, nCtlColor); + + // Change dialog colors + pDC->SetBkColor( RGB(0, 0, 0)); + pDC->SetTextColor( RGB(255, 255, 255)); + + return hbr; +} diff --git a/Jack/Launcher/LauncherDlg.h b/Jack/Launcher/LauncherDlg.h new file mode 100644 index 00000000..040ba4bb --- /dev/null +++ b/Jack/Launcher/LauncherDlg.h @@ -0,0 +1,79 @@ +/******************************************************************************* +; +; MODULE: LAUNCHERDLG (.H) +; +; PURPOSE: Launcher main dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_LAUNCHERDLG_H__1E6712C9_B0F3_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_LAUNCHERDLG_H__1E6712C9_B0F3_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "MoveDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// CLauncherDlg dialog + +class CLauncherDlg : public CMoveDialog +{ +// Construction +public: + CLauncherDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CLauncherDlg) + enum { IDD = IDD_LAUNCHER_DIALOG }; +// CAnimateCtrl m_aniButtons; +// CAnimateCtrl m_aniMain; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CLauncherDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); + //}}AFX_VIRTUAL + +// Implementation +protected: + + HICON m_hIcon; + BOOL LaunchGame(DWORD dwAction); + // Generated message map functions + //{{AFX_MSG(CLauncherDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + afx_msg void OnClose(); + afx_msg void OnMinimize(); + afx_msg void OnPlay(); + afx_msg void OnMultiplayer(); + afx_msg void OnOptions(); + afx_msg void OnDisplay(); + afx_msg void OnUninstall(); + afx_msg void OnQuit(); + afx_msg void OnDestroy(); + afx_msg void OnCompanyWeb(); + afx_msg void OnServer(); + afx_msg void OnPublisherweb(); + afx_msg void OnLithtechWeb(); + afx_msg void OnSierraWeb(); + afx_msg void OnCustomize(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +public: + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_LAUNCHERDLG_H__1E6712C9_B0F3_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/MessageBoxDlg.cpp b/Jack/Launcher/MessageBoxDlg.cpp new file mode 100644 index 00000000..91d6c641 --- /dev/null +++ b/Jack/Launcher/MessageBoxDlg.cpp @@ -0,0 +1,217 @@ +/******************************************************************************* +; +; MODULE: MESSAGEBOXDLG (.CPP) +; +; PURPOSE: Message box dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "MessageBoxDlg.h" +#include "ButtonEx.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define MB_CLOSE_X 577 +#define MB_CLOSE_Y 6 + +#define MB_OK_X 189 +#define MB_OK_XCENTER 250 +#define MB_OK_Y 206 +#define MB_CANCEL_X 312 +#define MB_CANCEL_Y 206 + +#define MB_CAPTION_Y 18 +#define MB_TEXT_Y 65 +#define MB_ICON_X 6 +#define MB_ICON_Y 15 + + +///////////////////////////////////////////////////////////////////////////// +// CMessageBoxDlg dialog + + +CMessageBoxDlg::CMessageBoxDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(CMessageBoxDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CMessageBoxDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + m_dwStyle = MB_OK; +} + + +void CMessageBoxDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CMessageBoxDlg) + DDX_Control(pDX, IDC_TEXT, m_Text); + DDX_Control(pDX, IDC_CAPTION, m_Caption); + DDX_Control(pDX, IDC_MB_ICON, m_Icon); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CMessageBoxDlg, CMoveDialog) + //{{AFX_MSG_MAP(CMessageBoxDlg) + ON_BN_CLICKED(IDC_MB_OK, OnOk) + ON_BN_CLICKED(IDC_MB_CLOSE, OnClose) + ON_BN_CLICKED(IDC_MB_CANCEL, OnCancel) + ON_WM_PAINT() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMessageBoxDlg::OnCancel +// +// PURPOSE: Cancel button handler +// +// ----------------------------------------------------------------------- // + +void CMessageBoxDlg::OnCancel() +{ + CDialogEx::OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMessageBoxDlg::OnOk +// +// PURPOSE: OK button handler +// +// ----------------------------------------------------------------------- // + +void CMessageBoxDlg::OnOk() +{ + CDialogEx::OnOK(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMessageBoxDlg::OnClose +// +// PURPOSE: Close button handler +// +// ----------------------------------------------------------------------- // + +void CMessageBoxDlg::OnClose() +{ + CDialogEx::OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMessageBoxDlg::OnInitDialog +// +// PURPOSE: Cancel button handler +// +// ----------------------------------------------------------------------- // + +BOOL CMessageBoxDlg::OnInitDialog() +{ + SetBackGround(IDB_MB_BACKGROUND); + + CMoveDialog::OnInitDialog(); + + // Set up the text and caption + CRect rcDlg; + GetWindowRect(&rcDlg); + m_Caption.SetWindowText(m_csCaption); + m_Caption.SetWindowPos(NULL,0,MB_CAPTION_Y,rcDlg.Width(),rcDlg.Height()-MB_CAPTION_Y,SWP_NOZORDER); + m_Text.SetWindowText(m_csText); + m_Text.SetWindowPos(NULL,15,MB_TEXT_Y,rcDlg.Width()-30,rcDlg.Height()-MB_TEXT_Y,SWP_NOZORDER); + + m_Caption.SetTextColor(RGB(0,0,0)); + m_Caption.SetFontName("Arial Narrow"); + m_Caption.SetFontSize(20); + m_Caption.SetFontBold(TRUE); + m_Text.SetTextColor(RGB(0,0,0)); + + // Here's where we define what buttons go in our dialog + AddButton(IDC_MB_CLOSE,MB_CLOSE_X,MB_CLOSE_Y); + AddButton(IDC_MB_OK,MB_OK_X,MB_OK_Y); + AddButton(IDC_MB_CANCEL,MB_CANCEL_X,MB_CANCEL_Y); + + // Set the Icons pos + m_Icon.SetWindowPos( NULL, MB_ICON_X, MB_ICON_Y, 0, 0, SWP_NOZORDER | SWP_NOSIZE ); + + HBITMAP hIcon = NULL; + + // Figure out what ICON to draw + switch( m_dwStyle & MB_ICONMASK ) + { + case MB_ICONEXCLAMATION: + { + hIcon = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_WARNING) ); + } + break; + + case MB_ICONSTOP: + { + hIcon = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_ERROR) ); + } + break; + + case MB_ICONINFORMATION: + { + hIcon = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_INFORMATION) ); + } + break; + + default: + hIcon = NULL; + break; + + } + + // Draw the appropriate Icon, or nothing if NULL + m_Icon.SetBitmap( hIcon ); + + + if((m_dwStyle & MB_TYPEMASK) == MB_OK) + { + // Center the OK button and hide the cancel button + CWnd* pWnd = GetDlgItem(IDC_MB_OK); + if(pWnd) + pWnd->SetWindowPos(NULL,MB_OK_XCENTER,MB_OK_Y,0,0,SWP_NOZORDER | SWP_NOSIZE); + pWnd = GetDlgItem(IDC_MB_CANCEL); + if(pWnd) + pWnd->ShowWindow(SW_HIDE); + } + + CenterWindow(); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMessageBoxDlg::OnPaint +// +// PURPOSE: Paint handler +// +// ----------------------------------------------------------------------- // + +void CMessageBoxDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + + // Do not call CMoveDialog::OnPaint() for painting messages +} diff --git a/Jack/Launcher/MessageBoxDlg.h b/Jack/Launcher/MessageBoxDlg.h new file mode 100644 index 00000000..de4800ea --- /dev/null +++ b/Jack/Launcher/MessageBoxDlg.h @@ -0,0 +1,73 @@ +/******************************************************************************* +; +; MODULE: MESSAGEBOXDLG (.H) +; +; PURPOSE: Message box dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_MESSAGEBOXDLG_H__52E7EEB8_B979_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_MESSAGEBOXDLG_H__52E7EEB8_B979_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// MessageBoxDlg.h : header file +// + +#include "MoveDlg.h" +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CMessageBoxDlg dialog + +class CMessageBoxDlg : public CMoveDialog +{ +// Construction +public: + CMessageBoxDlg(CWnd* pParent = NULL); // standard constructor + void Init(const char *szText, const char *szCaption, DWORD dwStyle = MB_OK) + { m_csCaption = szCaption; m_csText = szText; m_dwStyle = dwStyle; } + +// Dialog Data + //{{AFX_DATA(CMessageBoxDlg) + enum { IDD = IDD_MESSAGEBOX }; + CStaticEx m_Text; + CStaticEx m_Caption; + CStaticEx m_Icon; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMessageBoxDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CMessageBoxDlg) + afx_msg void OnCancel(); + afx_msg void OnOk(); + afx_msg void OnClose(); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + + DWORD m_dwStyle; + CString m_csCaption; + CString m_csText; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MESSAGEBOXDLG_H__52E7EEB8_B979_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/MoveDlg.cpp b/Jack/Launcher/MoveDlg.cpp new file mode 100644 index 00000000..5c57c6a5 --- /dev/null +++ b/Jack/Launcher/MoveDlg.cpp @@ -0,0 +1,131 @@ +/******************************************************************************* +; +; MODULE: MOVEDLG (.CPP) +; +; PURPOSE: Moveable dialog class (Derived from CDialogEx) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "MoveDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CMoveDialog dialog + + +CMoveDialog::CMoveDialog(int IDD, CWnd* pParent) + : CDialogEx(IDD, pParent) +{ + //{{AFX_DATA_INIT(CMoveDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + + isMoving = FALSE; +} + + +void CMoveDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CMoveDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CMoveDialog, CDialogEx) + //{{AFX_MSG_MAP(CMoveDlg) + ON_WM_MOUSEMOVE() + ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONUP() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveDialog::OnLButtonDown +// +// PURPOSE: Mouse button handler +// +// ----------------------------------------------------------------------- // + +void CMoveDialog::OnLButtonDown(UINT nFlags, CPoint point) +{ + if (!isMoving) + { + // Store current mousepointer position + GetCursorPos(&m_MovePoint); + + // Capture all mouse input + SetCapture(); + + isMoving = TRUE; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveDialog::OnLButtonUp +// +// PURPOSE: Mouse button handler +// +// ----------------------------------------------------------------------- // + +void CMoveDialog::OnLButtonUp(UINT nFlags, CPoint point) +{ + if (isMoving) + { + // Store last mousepointer position + GetCursorPos(&m_MovePoint); + + // Release mouse + ReleaseCapture(); + + isMoving = FALSE; + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMoveDialog::OnMouseMove +// +// PURPOSE: Mouse move handler +// +// ----------------------------------------------------------------------- // + +void CMoveDialog::OnMouseMove(UINT nFlags, CPoint point) +{ + if (isMoving) + { + // Get current mousepointer position + CPoint npoint; + GetCursorPos(&npoint); + + if ((m_MovePoint.x != npoint.x) || (m_MovePoint.y != npoint.y)) + { + // Move the dialog according to the new pos of the mousepointer + CRect wrect; + GetWindowRect(&wrect); + + int divx = npoint.x - m_MovePoint.x; + int divy = npoint.y - m_MovePoint.y; + + SetWindowPos(NULL, wrect.left+divx, wrect.top+divy, 0, 0, SWP_NOZORDER|SWP_NOSIZE); + + // Store new mousepointer position + m_MovePoint = npoint; + } + } + + CDialogEx::OnMouseMove(nFlags, point); +} \ No newline at end of file diff --git a/Jack/Launcher/MoveDlg.h b/Jack/Launcher/MoveDlg.h new file mode 100644 index 00000000..5a3c87a4 --- /dev/null +++ b/Jack/Launcher/MoveDlg.h @@ -0,0 +1,66 @@ +/******************************************************************************* +; +; MODULE: MOVEDLG (.H) +; +; PURPOSE: Moveable dialog class (Derived from CDialogEx) +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_MOVEDLG_H__23ECD342_A318_496C_827C_FCF372B48EF8__INCLUDED_) +#define AFX_MOVEDLG_H__23ECD342_A318_496C_827C_FCF372B48EF8__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// MoveDlg.h : header file +// + +#include "DlgEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CMoveDlg dialog + +class CMoveDialog : public CDialogEx +{ +// Construction +public: + CMoveDialog(int IDD, CWnd* pParent = NULL); // standard constructor + + // Movewindow Statevars + BOOL isMoving; + CPoint m_MovePoint; + +// Dialog Data + //{{AFX_DATA(CMoveDialog) + enum { IDD = 0 }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMoveDialog) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CMoveDialog) + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnLButtonUp(UINT nFlags, CPoint point); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MOVEDLG_H__23ECD342_A318_496C_827C_FCF372B48EF8__INCLUDED_) diff --git a/Jack/Launcher/MultiplayerDlg.cpp b/Jack/Launcher/MultiplayerDlg.cpp new file mode 100644 index 00000000..07dbb341 --- /dev/null +++ b/Jack/Launcher/MultiplayerDlg.cpp @@ -0,0 +1,194 @@ +/******************************************************************************* +; +; MODULE: MULTIPLAYERDLG (.CPP) +; +; PURPOSE: Multiplayer dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "MultiplayerDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define MD_CLOSE_X 102 +#define MD_CLOSE_Y 1 + +#define MD_HOST_X 14 +#define MD_HOST_Y 21 +#define MD_JOIN_X 14 +#define MD_JOIN_Y 57 +#define MD_FIND_X 14 +#define MD_FIND_Y 93 +#define MD_SERVER_X 14 +#define MD_SERVER_Y 129 +#define MD_BACK_X 14 +#define MD_BACK_Y 165 + +//////////////////////////////////////////////////////////////////////////// +// MultiplayerDlg dialog + + +CMultiplayerDlg::CMultiplayerDlg(CWnd* pParent /*=NULL*/) + : CAnimDlg(CMultiplayerDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CMultiplayerDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT +} + + +void CMultiplayerDlg::DoDataExchange(CDataExchange* pDX) +{ + CAnimDlg::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CMultiplayerDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CMultiplayerDlg, CAnimDlg) + //{{AFX_MSG_MAP(CMultiplayerDlg) + ON_BN_CLICKED(IDC_MP_FIND, OnFind) + ON_BN_CLICKED(IDC_MP_HOST, OnHost) + ON_BN_CLICKED(IDC_MP_JOIN, OnJoin) + ON_BN_CLICKED(IDC_MP_SERVER, OnServer) + ON_WM_PAINT() + ON_BN_CLICKED(IDC_MP_BACK, OnMpBack) + ON_BN_CLICKED(IDC_MP_CLOSE, OnMpClose) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnFind +// +// PURPOSE: Find button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnFind() +{ + EndDialog(ACTION_FINDINTERNETSERVERS); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnHost +// +// PURPOSE: Host button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnHost() +{ + EndDialog(ACTION_HOSTGAME); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnJoin +// +// PURPOSE: Join button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnJoin() +{ + EndDialog(ACTION_JOINGAME); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnServer +// +// PURPOSE: Server button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnServer() +{ + EndDialog(ACTION_STANDALONESERVER); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnInitDialog +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL CMultiplayerDlg::OnInitDialog() +{ + SetBackGround(IDB_MD_BACKGROUND); + + CAnimDlg::OnInitDialog(); + + // Here's where we define what buttons go in our dialog + AddButton(IDC_MP_CLOSE,MD_CLOSE_X,MD_CLOSE_Y); + AddButton(IDC_MP_HOST,MD_HOST_X,MD_HOST_Y); + AddButton(IDC_MP_JOIN,MD_JOIN_X,MD_JOIN_Y); + AddButton(IDC_MP_FIND,MD_FIND_X,MD_FIND_Y); + AddButton(IDC_MP_SERVER,MD_SERVER_X,MD_SERVER_Y); + AddButton(IDC_MP_BACK,MD_BACK_X,MD_BACK_Y); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnPaint +// +// PURPOSE: WM_PAINT handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + + // Do not call CAnimDlg::OnPaint() for painting messages +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnMpBack +// +// PURPOSE: Back button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnMpBack() +{ + OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CMultiplayerDlg::OnMpClose +// +// PURPOSE: Close button handler +// +// ----------------------------------------------------------------------- // + +void CMultiplayerDlg::OnMpClose() +{ + OnCancel(); +} diff --git a/Jack/Launcher/MultiplayerDlg.h b/Jack/Launcher/MultiplayerDlg.h new file mode 100644 index 00000000..d908ecf7 --- /dev/null +++ b/Jack/Launcher/MultiplayerDlg.h @@ -0,0 +1,67 @@ +/******************************************************************************* +; +; MODULE: MULTIPLAYERDLG (.H) +; +; PURPOSE: Multiplayer dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_MULTIPLAYERDLG_H__126D5682_B3F2_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_MULTIPLAYERDLG_H__126D5682_B3F2_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// MultiplayerDlg.h : header file +// + +#include "AnimDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// MultiplayerDlg dialog + +class CMultiplayerDlg : public CAnimDlg +{ +// Construction +public: + CMultiplayerDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CMultiplayerDlg) + enum { IDD = IDD_MULTIPLAYER_DIALOG }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMultiplayerDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CMultiplayerDlg) + afx_msg void OnFind(); + afx_msg void OnHost(); + afx_msg void OnJoin(); + afx_msg void OnServer(); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg void OnMpBack(); + afx_msg void OnMpClose(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_MULTIPLAYERDLG_H__126D5682_B3F2_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/OptionsDlg.cpp b/Jack/Launcher/OptionsDlg.cpp new file mode 100644 index 00000000..01b26096 --- /dev/null +++ b/Jack/Launcher/OptionsDlg.cpp @@ -0,0 +1,349 @@ +/******************************************************************************* +; +; MODULE: OPTIONSDLG (.H) +; +; PURPOSE: Options dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#include "stdafx.h" +#include "Launcher.h" +#include "OptionsDlg.h" +#include "BitmapCheckButton.h" +#include "textcheckbox.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////// +// Button and image coordinates +///////////////////////////////////////////// + +#define OD_CLOSE_X 435 +#define OD_CLOSE_Y 6 + +#define OD_COLUMN_1_X 25 +#define OD_COLUMN_2_X 227 +#define OD_ROW_Y_START 67 +#define OD_ROW_Y_OFFSET 25 // 20 + +#define OD_DISABLESOUND_X OD_COLUMN_1_X +#define OD_DISABLESOUND_Y OD_ROW_Y_START +#define OD_DISABLEMUSIC_X OD_COLUMN_1_X +#define OD_DISABLEMUSIC_Y (OD_ROW_Y_START + OD_ROW_Y_OFFSET) +#define OD_DISABLEMOVIES_X OD_COLUMN_1_X +#define OD_DISABLEMOVIES_Y (OD_ROW_Y_START + 2*OD_ROW_Y_OFFSET) +#define OD_DISABLEHARDWARESOUND_X OD_COLUMN_1_X +#define OD_DISABLEHARDWARESOUND_Y (OD_ROW_Y_START + 3*OD_ROW_Y_OFFSET) +#define OD_DISABLETRIPLEBUFFERING_X OD_COLUMN_1_X +#define OD_DISABLETRIPLEBUFFERING_Y (OD_ROW_Y_START + 4*OD_ROW_Y_OFFSET) + +#define OD_DISABLEJOYSTICKS_X OD_COLUMN_2_X +#define OD_DISABLEJOYSTICKS_Y OD_ROW_Y_START +#define OD_DISABLEHARDWARECURSOR_X OD_COLUMN_2_X +#define OD_DISABLEHARDWARECURSOR_Y (OD_ROW_Y_START + OD_ROW_Y_OFFSET) +#define OD_DISABLESOUNDFILTERS_X OD_COLUMN_2_X +#define OD_DISABLESOUNDFILTERS_Y (OD_ROW_Y_START + 2*OD_ROW_Y_OFFSET) +#define OD_ENABLESCREENSHOTS_X OD_COLUMN_2_X +#define OD_ENABLESCREENSHOTS_Y (OD_ROW_Y_START + 3*OD_ROW_Y_OFFSET) + +#define OD_RESTOREDEFAULTSETTINGS_X OD_COLUMN_1_X +#define OD_RESTOREDEFAULTSETTINGS_Y 219 +#define OD_ALWAYSSPECIFY_X OD_COLUMN_1_X +#define OD_ALWAYSSPECIFY_Y 295 +#define OD_COMMANDLINE_X OD_COLUMN_1_X +#define OD_COMMANDLINE_Y 265 +#define OD_COMMANDLINE_WIDTH 405 +#define OD_COMMANDLINE_HEIGHT 23 + +#define OD_OK_X 123 +#define OD_OK_Y 435 +#define OD_CANCEL_X 235 +#define OD_CANCEL_Y 435 + +#define OD_HELPTEXT_Y 341 // 335 +#define OD_HELPTEXT_HEIGHT 80 + +///////////////////////////////////////////////////////////////////////////// +// COptionsDlg dialog + + +COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/) + : CMoveDialog(COptionsDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(COptionsDlg) + //}}AFX_DATA_INIT +} + + +void COptionsDlg::DoDataExchange(CDataExchange* pDX) +{ + CMoveDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(COptionsDlg) + DDX_Control(pDX, IDC_HELPTEXT, m_HelpText); + DDX_Control(pDX, IDC_COMMANDLINE, m_CommandLine); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(COptionsDlg, CMoveDialog) + //{{AFX_MSG_MAP(COptionsDlg) + ON_BN_CLICKED(IDC_OD_CLOSE, OnClose) + ON_WM_PAINT() + ON_WM_CTLCOLOR() + ON_BN_CLICKED(IDC_OD_CANCEL, OnCancel) + ON_BN_CLICKED(IDC_OD_OK, OnOK) + ON_WM_MOUSEMOVE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnClose +// +// PURPOSE: Close button handler +// +// ----------------------------------------------------------------------- // + +void COptionsDlg::OnClose() +{ + OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnInitDialog +// +// PURPOSE: Initialization +// +// ----------------------------------------------------------------------- // + +BOOL COptionsDlg::OnInitDialog() +{ + SetBackGround(IDB_OD_BACKGROUND); + + CMoveDialog::OnInitDialog(); + + CTextCheckBox *pCheckBox; + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLESOUND,OD_DISABLESOUND_X,OD_DISABLESOUND_Y, IDS_OD_DISABLESOUND, &m_HelpText,IDS_HELP_DISABLESOUND); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableSound); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLEMUSIC,OD_DISABLEMUSIC_X,OD_DISABLEMUSIC_Y, IDS_OD_DISABLEMUSIC, &m_HelpText,IDS_HELP_DISABLEMUSIC); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableMusic); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLEMOVIES,OD_DISABLEMOVIES_X,OD_DISABLEMOVIES_Y, IDS_OD_DISABLEMOVIES, &m_HelpText,IDS_HELP_DISABLEMOVIES); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableMovies); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLETRIPLEBUFFERING,OD_DISABLETRIPLEBUFFERING_X,OD_DISABLETRIPLEBUFFERING_Y, IDS_OD_DISABLETRIPLEBUFFERING, &m_HelpText,IDS_HELP_DISABLETRIPLEBUFFERING); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableTripleBuffering); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLEJOYSTICKS,OD_DISABLEJOYSTICKS_X,OD_DISABLEJOYSTICKS_Y, IDS_OD_DISABLEJOYSTICKS, &m_HelpText,IDS_HELP_DISABLEJOYSTICKS); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableJoysticks); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLEHARDWARECURSOR,OD_DISABLEHARDWARECURSOR_X,OD_DISABLEHARDWARECURSOR_Y, IDS_OD_DISABLEHARDWARECURSOR, &m_HelpText,IDS_HELP_DISABLEHARDWARECURSOR); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableHardwareCursor); + + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLEHARDWARESOUND,OD_DISABLEHARDWARESOUND_X,OD_DISABLEHARDWARESOUND_Y, IDS_OD_DISABLEHARDWARESOUND, &m_HelpText,IDS_HELP_DISABLEHARDWARESOUND); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableHardwareSound); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_DISABLESOUNDFILTERS,OD_DISABLESOUNDFILTERS_X,OD_DISABLESOUNDFILTERS_Y, IDS_OD_DISABLESOUNDFILTERS, &m_HelpText,IDS_HELP_DISABLESOUNDFILTERS); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bDisableSoundFilters); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_ENABLESCREENSHOTS,OD_ENABLESCREENSHOTS_X,OD_ENABLESCREENSHOTS_Y, IDS_OD_ENABLESCREENSHOTS, &m_HelpText,IDS_HELP_ENABLESCREENSHOTS); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bEnableScreenshots); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_RESTOREDEFAULTSETTINGS,OD_RESTOREDEFAULTSETTINGS_X,OD_RESTOREDEFAULTSETTINGS_Y, IDS_OD_RESTOREDEFAULTS, &m_HelpText,IDS_HELP_RESTOREDEFAULTS); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bRestoreDefaults); + + pCheckBox = (CTextCheckBox*)AddTextCheckBox(IDC_OD_ALWAYSSPECIFY,OD_ALWAYSSPECIFY_X,OD_ALWAYSSPECIFY_Y, IDS_OD_ALWAYSSPECIFY, &m_HelpText,IDS_HELP_ALWAYSSPECIFY); + if(pCheckBox) + pCheckBox->SetCheck(theApp.m_bSaveCommands); + + AddButton(IDC_OD_CLOSE,OD_CLOSE_X,OD_CLOSE_Y); + AddButton(IDC_OD_OK,OD_OK_X,OD_OK_Y); + AddButton(IDC_OD_CANCEL,OD_CANCEL_X,OD_CANCEL_Y); + + // Let's place and size the edit control appropriately + m_CommandLine.SetFont(&theApp.m_Font); + m_CommandLine.SetWindowPos(NULL,OD_COMMANDLINE_X,OD_COMMANDLINE_Y,OD_COMMANDLINE_WIDTH,OD_COMMANDLINE_HEIGHT,SWP_NOZORDER); + m_CommandLine.SetWindowText(theApp.m_csCommands); + + // Place and size the help text control + CRect rcDlg; + GetWindowRect(&rcDlg); + CString strDefault; + + // Set the no option selected text + strDefault.LoadString( IDS_HELP_DEFAULT ); + m_HelpText.SetWindowText( strDefault ); + + m_HelpText.SetWindowPos(NULL,15,OD_HELPTEXT_Y,rcDlg.Width()-30,OD_HELPTEXT_HEIGHT,SWP_NOZORDER); + m_HelpText.SetTextColor(RGB(0,0,0)); + //m_HelpText.SetFontName("Arial Narrow"); + //m_HelpText.SetFontSize(15); + m_HelpText.SetFontBold(TRUE); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnPaint +// +// PURPOSE: WM_PAINT handler +// +// ----------------------------------------------------------------------- // + +void COptionsDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + PaintBackGround(&dc); + + // Do not call CMoveDialog::OnPaint() for painting messages +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnCancel +// +// PURPOSE: Cancel button handler +// +// ----------------------------------------------------------------------- // + +void COptionsDlg::OnCancel() +{ + CMoveDialog::OnCancel(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnOK +// +// PURPOSE: OK button handler +// +// ----------------------------------------------------------------------- // + +void COptionsDlg::OnOK() +{ + // Save this sheeyot into the variablez + CTextCheckBox* pCheckBox; + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLESOUND); + theApp.m_bDisableSound = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLEMUSIC); + theApp.m_bDisableMusic = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLEMOVIES); + theApp.m_bDisableMovies = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLETRIPLEBUFFERING); + theApp.m_bDisableTripleBuffering = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLEJOYSTICKS); + theApp.m_bDisableJoysticks = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLEHARDWARECURSOR); + theApp.m_bDisableHardwareCursor = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLEHARDWARESOUND); + theApp.m_bDisableHardwareSound = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_DISABLESOUNDFILTERS); + theApp.m_bDisableSoundFilters = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_ENABLESCREENSHOTS); + theApp.m_bEnableScreenshots = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_RESTOREDEFAULTSETTINGS); + theApp.m_bRestoreDefaults = pCheckBox->GetCheck(); + + pCheckBox = (CTextCheckBox*)GetDlgItem(IDC_OD_ALWAYSSPECIFY); + theApp.m_bSaveCommands = pCheckBox->GetCheck(); + + m_CommandLine.GetWindowText(theApp.m_csCommands); + theApp.m_RegMgr.SetField("Save Commands",theApp.m_bSaveCommands); + if(theApp.m_bSaveCommands) + { + theApp.m_RegMgr.SetField("Commands",(char *)(LPCTSTR)theApp.m_csCommands); + } + + CMoveDialog::OnOK(); +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnCtlColor +// +// PURPOSE: WM_CTLCOLOR handler +// +// ----------------------------------------------------------------------- // + +HBRUSH COptionsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) +{ + switch(nCtlColor) + { + case CTLCOLOR_EDIT: + case CTLCOLOR_MSGBOX: + { + // Set color to green on black and return the background brush. + pDC->SetTextColor(crNormalText); + pDC->SetBkColor(RGB(0, 0, 0)); + return (HBRUSH)(theApp.m_BkBrush.GetSafeHandle()); + } + case CTLCOLOR_DLG: + case CTLCOLOR_BTN: + { + return (HBRUSH)GetStockObject(NULL_BRUSH); + } + default: + return CMoveDialog::OnCtlColor(pDC, pWnd, nCtlColor); + } +} + +// ----------------------------------------------------------------------- // +// +// ROUTINE: COptionsDlg::OnMouseMove +// +// PURPOSE: Mouse move handler +// +// ----------------------------------------------------------------------- // + +void COptionsDlg::OnMouseMove(UINT nFlags, CPoint point) +{ + if(m_pFocusButton != NULL) + { + CRect rcCtrl; + CString strDefault; + + // Set the no option selected text + strDefault.LoadString( IDS_HELP_DEFAULT ); + m_HelpText.SetWindowText( strDefault ); + + m_HelpText.GetWindowRect(&rcCtrl); + ScreenToClient(&rcCtrl); + InvalidateRect(&rcCtrl); + } + CMoveDialog::OnMouseMove(nFlags, point); +} + diff --git a/Jack/Launcher/OptionsDlg.h b/Jack/Launcher/OptionsDlg.h new file mode 100644 index 00000000..a25d9289 --- /dev/null +++ b/Jack/Launcher/OptionsDlg.h @@ -0,0 +1,71 @@ +/******************************************************************************* +; +; MODULE: OPTIONSDLG (.H) +; +; PURPOSE: Options dialog class +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#if !defined(AFX_OPTIONSDLG_H__126D568F_B3F2_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_OPTIONSDLG_H__126D568F_B3F2_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// OptionsDlg.h : header file +// + +#include "MoveDlg.h" +#include "EditEx.h" +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// COptionsDlg dialog + +class COptionsDlg : public CMoveDialog +{ +// Construction +public: + COptionsDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(COptionsDlg) + enum { IDD = IDD_OPTIONS_DIALOG }; + CStaticEx m_HelpText; + CEditEx m_CommandLine; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(COptionsDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(COptionsDlg) + afx_msg void OnClose(); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg void OnCancel(); + afx_msg void OnOK(); + afx_msg void OnCustomize(); + //afx_msg void OnHelp(); + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_OPTIONSDLG_H__126D568F_B3F2_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/PlaySound.h b/Jack/Launcher/PlaySound.h new file mode 100644 index 00000000..cdccc13d --- /dev/null +++ b/Jack/Launcher/PlaySound.h @@ -0,0 +1,54 @@ +// PlaySound.h : header file +// +/******************************************************************************* +; +; MODULE: PlaySound (.H) +; +; PURPOSE: Utility function to play a sound +; +; HISTORY: 11/15/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Inc. +; +********************************************************************************/ + +#ifndef _PLAYSOUND_H_ +#define _PLAYSOUND_H_ + +#include "mmsystem.h" +#pragma comment(lib, "winmm.lib") + +// ----------------------------------------------------------------------- // +// +// ROUTINE: PlaySound +// +// PURPOSE: Helper function to play a sound +// +// ----------------------------------------------------------------------- // +static void PlaySound(LPCTSTR lpszSound) +{ + HRSRC hRes; // resource handle to wave file + HGLOBAL hData; + BOOL bOk = FALSE; + if ((hRes = ::FindResource(AfxGetResourceHandle(), lpszSound, + _T("WAVE"))) != NULL && + (hData = ::LoadResource(AfxGetResourceHandle(), hRes)) != NULL) + { + // found the resource, play it + //bOk = sndPlaySound((LPCTSTR)::LockResource(hData), + // SND_MEMORY|SND_ASYNC|SND_NODEFAULT); + + bOk = PlaySound((LPCTSTR)::LockResource(hData), NULL, SND_MEMORY | SND_NODEFAULT | SND_ASYNC | SND_NOSTOP ); +/* if( !bOk ) + { + MessageBox(NULL, "PlaySound Failed!", "FAILED", MB_OK); + } +*/ + FreeResource(hData); + } +} + +inline static void PlaySound(UINT nIDS) + { PlaySound(MAKEINTRESOURCE(nIDS)); } + +#endif diff --git a/Jack/Launcher/RES/Lang/DE/Launcher.rc b/Jack/Launcher/RES/Lang/DE/Launcher.rc new file mode 100644 index 00000000..1c30cf80 --- /dev/null +++ b/Jack/Launcher/RES/Lang/DE/Launcher.rc @@ -0,0 +1,524 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\..\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +MINIMIZEU BITMAP "..\\..\\bmp\\MinimizeU.bmp" +MINIMIZED BITMAP "..\\..\\bmp\\MinimizeD.bmp" +CLOSEU BITMAP "..\\..\\bmp\\closeu.bmp" +CLOSED BITMAP "..\\..\\bmp\\closed.bmp" +IDB_BACKGROUND BITMAP "bmp\\MainAppBackground.bmp" +UNINSTALLU BITMAP "bmp\\UninstallU.bmp" +OPTIONSD BITMAP "bmp\\optionsd.bmp" +OPTIONSU BITMAP "bmp\\optionsu.bmp" +PLAYD BITMAP "bmp\\PlayD.bmp" +PLAYU BITMAP "bmp\\PlayU.bmp" +QUITD BITMAP "bmp\\QuitD.bmp" +QUITU BITMAP "bmp\\QuitU.bmp" +UNINSTALLD BITMAP "bmp\\UninstallD.bmp" +INSTALLU BITMAP "bmp\\InstallU.bmp" +INSTALLD BITMAP "bmp\\InstallD.bmp" +DISPLAYD BITMAP "bmp\\DisplayD.bmp" +DISPLAYU BITMAP "bmp\\DisplayU.bmp" +UNINSTALLX BITMAP "bmp\\UninstallX.bmp" +DISPLAYX BITMAP "bmp\\DisplayX.bmp" +OPTIONSX BITMAP "bmp\\OptionsX.bmp" +OKU BITMAP "bmp\\OKU.bmp" +CANCELU BITMAP "bmp\\CancelU.bmp" +OKD BITMAP "bmp\\OKD.bmp" +CANCELD BITMAP "bmp\\CancelD.bmp" +IDB_OD_BACKGROUND BITMAP "bmp\\OptionsBackground.bmp" +IDB_DD_BACKGROUND BITMAP "bmp\\DisplayBackground.bmp" +QUITF BITMAP "bmp\\QuitF.bmp" +CANCELF BITMAP "bmp\\CancelF.bmp" +OPTIONSF BITMAP "bmp\\OptionsF.bmp" +DISPLAYF BITMAP "bmp\\DisplayF.bmp" +INSTALLF BITMAP "bmp\\InstallF.bmp" +OKF BITMAP "bmp\\OkF.bmp" +UNINSTALLF BITMAP "bmp\\UninstallF.bmp" +PLAYF BITMAP "bmp\\PlayF.bmp" +IDB_MB_BACKGROUND BITMAP "..\\..\\bmp\\BoxBackground.bmp" +IDB_DSD_BACKGROUND BITMAP "bmp\\DetailSettingsBackground.bmp" +MEDIUMDETAILU BITMAP "bmp\\MediumDetailU.bmp" +HIGHDETAILF BITMAP "bmp\\HighDetailF.bmp" +HIGHDETAILU BITMAP "bmp\\HighDetailU.bmp" +LOWDETAILD BITMAP "bmp\\LowDetailD.bmp" +LOWDETAILF BITMAP "bmp\\LowDetailF.bmp" +LOWDETAILU BITMAP "bmp\\LowDetailU.bmp" +MEDIUMDETAILD BITMAP "bmp\\MediumDetailD.bmp" +MEDIUMDETAILF BITMAP "bmp\\MediumDetailF.bmp" +HIGHDETAILD BITMAP "bmp\\HighDetailD.bmp" +IDB_INFORMATION BITMAP "..\\..\\bmp\\Information.bmp" +IDB_ERROR BITMAP "..\\..\\bmp\\Error.bmp" +IDB_WARNING BITMAP "..\\..\\bmp\\Warning.bmp" +COMPANYWEBU BITMAP "bmp\\Company1WebU.bmp" +COMPANYWEBF BITMAP "bmp\\Company1WebF.bmp" +COMPANYWEBD BITMAP "bmp\\Company1WebD.bmp" +LITHTECHWEBU BITMAP "bmp\\Company2WebU.bmp" +LITHTECHWEBF BITMAP "bmp\\Company2WebF.bmp" +LITHTECHWEBD BITMAP "bmp\\Company2WebD.bmp" +CHECKBOXN BITMAP "..\\..\\bmp\\CheckBoxN.bmp" +CHECKBOXC BITMAP "..\\..\\bmp\\CheckBoxC.bmp" +CHECKBOXF BITMAP "..\\..\\bmp\\CheckBoxF.bmp" +PUBLISHERWEBU BITMAP "bmp\\Publisher1WebU.bmp" +PUBLISHERWEBD BITMAP "bmp\\Publisher1WebD.bmp" +PUBLISHERWEBF BITMAP "bmp\\Publisher1WebF.bmp" +SIERRAWEBU BITMAP "bmp\\Publisher2WebU.bmp" +SIERRAWEBD BITMAP "bmp\\Publisher2WebD.bmp" +SIERRAWEBF BITMAP "bmp\\Publisher2WebF.bmp" +IDB_DEMOBACKGROUND BITMAP "bmp\\DemoMainAppBackground.bmp" +IDB_CD_BACKGROUND BITMAP "bmp\\CustomBackground.bmp" +CUSTOMX BITMAP "bmp\\CustomX.bmp" +CUSTOMD BITMAP "bmp\\CustomD.bmp" +CUSTOMF BITMAP "bmp\\CustomF.bmp" +CUSTOMU BITMAP "bmp\\CustomU.bmp" +NEXTX BITMAP "bmp\\NextX.bmp" +NEXTD BITMAP "bmp\\NextD.bmp" +NEXTF BITMAP "bmp\\NextF.bmp" +NEXTU BITMAP "bmp\\NextU.bmp" +PREVIOUSX BITMAP "bmp\\PreviousX.bmp" +PREVIOUSD BITMAP "bmp\\PreviousD.bmp" +PREVIOUSF BITMAP "bmp\\PreviousF.bmp" +PREVIOUSU BITMAP "bmp\\PreviousU.bmp" + + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\..\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""..\\..\\Launcher.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON "..\\..\\Launcher.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_LAUNCHER_DIALOG DIALOGEX 0, 0, 600, 250 +STYLE DS_SETFONT | DS_3DLOOK | WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_APPWINDOW +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Minimize",IDC_MINIMIZE,"Button",BS_OWNERDRAW | + WS_TABSTOP,292,6,10,10 + CONTROL "Close",IDC_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP,302, + 6,10,10 + CONTROL "Display",IDC_DISPLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,98,50,14 + CONTROL "Quit",IDC_QUIT,"Button",BS_OWNERDRAW | WS_TABSTOP,243, + 154,50,14 + CONTROL "Options",IDC_OPTIONS,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,116,50,14 + CONTROL "Uninstall",IDC_UNINSTALL,"Button",BS_OWNERDRAW | + WS_TABSTOP,243,134,50,14 + CONTROL "Install",IDC_PLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,25,50,14 + CONTROL "CompanyWeb",IDC_COMPANYWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,222,213,62,18 + CONTROL "LithtechWeb",IDC_LITHTECHWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,301,213,62,18 + CONTROL "SierraWeb",IDC_SIERRAWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,12,213,85,23 + CONTROL "Custom",IDC_CUSTOM,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,44,50,14 +END + +IDD_OPTIONS_DIALOG DIALOG 0, 0, 205, 181 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_OD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "Sound deaktivieren",IDC_OD_DISABLESOUND,"Button", + BS_OWNERDRAW | WS_TABSTOP,19,15,50,16 + CONTROL "Musik deaktivieren",IDC_OD_DISABLEMUSIC,"Button", + BS_OWNERDRAW | WS_TABSTOP,19,32,50,13 + CONTROL "Filme deaktivieren",IDC_OD_DISABLEMOVIES,"Button", + BS_OWNERDRAW | WS_TABSTOP,19,46,50,13 + CONTROL "Triple-Buffer deaktivieren", + IDC_OD_DISABLETRIPLEBUFFERING,"Button",BS_OWNERDRAW | + WS_TABSTOP,111,17,50,15 + CONTROL "Joysticks deaktivieren",IDC_OD_DISABLEJOYSTICKS,"Button", + BS_OWNERDRAW | WS_TABSTOP,112,33,50,12 + CONTROL "Hardware-Cursor deaktivieren", + IDC_OD_DISABLEHARDWARECURSOR,"Button",BS_OWNERDRAW | + WS_TABSTOP,112,46,50,12 + CONTROL "Standard-Einstellungen wiederherstellen", + IDC_OD_RESTOREDEFAULTSETTINGS,"Button",BS_OWNERDRAW | + WS_TABSTOP,19,61,50,15 + CONTROL "Immer angeben",IDC_OD_ALWAYSSPECIFY,"Button", + BS_OWNERDRAW | WS_TABSTOP,28,122,50,10 + CONTROL "OK",IDC_OD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,12,161, + 50,14 + CONTROL "Cancel",IDC_OD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,69,161,50,14 + EDITTEXT IDC_COMMANDLINE,15,97,166,14,ES_AUTOHSCROLL | NOT + WS_BORDER + LTEXT "Was zur Hölle sehe ich mir hier eigentlich an?!", + IDC_HELPTEXT,20,140,162,8 + CONTROL "Sound-Hardware deaktivieren", + IDC_OD_DISABLEHARDWARESOUND,"Button",BS_OWNERDRAW | + WS_TABSTOP,112,60,50,13 + CONTROL "Soundfilter deaktivieren",IDC_OD_DISABLESOUNDFILTERS, + "Button",BS_OWNERDRAW | WS_TABSTOP,112,77,50,15 +END + +IDD_DISPLAY_DIALOG DIALOG 0, 0, 205, 153 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_DD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "OK",IDC_DD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,49,135, + 50,14 + CONTROL "Cancel",IDC_DD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,106,135,50,14 + LISTBOX IDC_RENDERER_LIST,15,23,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_DISPLAY_LIST,113,24,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_RESOLUTION_LIST,64,75,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP +END + +IDD_MESSAGEBOX DIALOGEX 0, 0, 276, 102 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Close",IDC_MB_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 261,4,10,10 + CONTROL "OK",IDC_MB_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,83,79, + 50,14 + CONTROL "Cancel",IDC_MB_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,141,79,50,14 + CTEXT "Caption",IDC_CAPTION,0,10,275,8 + LTEXT "Text",IDC_TEXT,0,35,275,31 + CONTROL 296,IDC_MB_ICON,"Static",SS_BITMAP,6,6,20,20, + WS_EX_TRANSPARENT +END + +IDD_DETAILSETTINGS_DIALOG DIALOG 0, 0, 133, 147 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "HighDetail",IDC_DSD_HIGH,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,90,50,14 + CONTROL "Cancel",IDC_DSD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,122,50,14 + CONTROL "MediumDetail",IDC_DSD_MEDIUM,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,63,50,14 + CONTROL "LowDetail",IDC_DSD_LOW,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,33,50,14 + CONTROL "Close",IDC_DSD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 119,3,10,10 + LTEXT "Static",IDC_HEADERTEXT,9,14,114,8 + LTEXT "Static",IDC_LOWTEXT,7,51,114,8 + LTEXT "Static",IDC_MEDIUMTEXT,5,77,114,8 + LTEXT "Static",IDC_HIGHTEXT,4,108,114,8 +END + +IDD_CUSTOMIZE_DIALOG DIALOG 0, 0, 210, 162 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "OK",IDC_CD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,46,145, + 50,14 + CONTROL "Cancel",IDC_CD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,99,145,50,14 + CONTROL "Close",IDC_CD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 195,5,10,10 + CONTROL "Mod01",IDC_CD_MOD_01,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,7,48,14 + CONTROL "Mod02",IDC_CD_MOD_02,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,26,48,14 + CONTROL "Mod03",IDC_CD_MOD_03,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,44,48,14 + CONTROL "Mod04",IDC_CD_MOD_04,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,63,48,14 + CONTROL "Mod05",IDC_CD_MOD_05,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,83,48,14 + CONTROL "Mod06",IDC_CD_MOD_06,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,102,48,14 + CONTROL "Mod07",IDC_CD_MOD_07,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,6,48,14 + CONTROL "Mod08",IDC_CD_MOD_08,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,25,48,14 + CONTROL "Mod09",IDC_CD_MOD_09,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,42,48,14 + CONTROL "Mod10",IDC_CD_MOD_10,"Button",BS_OWNERDRAW | WS_TABSTOP, + 112,62,48,14 + CONTROL "Previous",IDC_CD_PREVIOUS,"Button",BS_OWNERDRAW | + WS_TABSTOP,5,125,48,14 + CONTROL "Next",IDC_CD_NEXT,"Button",BS_OWNERDRAW | WS_TABSTOP, + 155,125,48,14 + CONTROL "Mod11",IDC_CD_MOD_11,"Button",BS_OWNERDRAW | WS_TABSTOP, + 111,82,48,14 + CONTROL "Mod12",IDC_CD_MOD_12,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,102,48,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Monolith Productions, Inc." + VALUE "FileDescription", "NO ONE LIVES FOREVER 2 - Launcher" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "Starter" + VALUE "LegalCopyright", "Copyright (C) 2002 Monolith Productions, Inc." + VALUE "OriginalFilename", "NOLF2.EXE" + VALUE "ProductName", "NO ONE LIVES FOREVER 2 - Starter-Anwendung" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_LAUNCHER_DIALOG, DIALOG + BEGIN + VERTGUIDE, 253 + END + + IDD_OPTIONS_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END + + IDD_DISPLAY_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// WAVE +// + +IDR_SELECT WAVE "..\\..\\snd\\Select.wav" +IDR_CLICK WAVE "..\\..\\snd\\Click.wav" +IDR_BUTTONDOWN WAVE "..\\..\\snd\\buttondown.wav" +IDR_TYPEBACK WAVE "..\\..\\snd\\TypeBack.wav" +IDR_INTRO WAVE "..\\..\\snd\\Intro.wav" +IDR_TYPE WAVE "..\\..\\snd\\type1.WAV" +IDR_TYPE2 WAVE "..\\..\\snd\\type2.WAV" +IDR_TYPE3 WAVE "..\\..\\snd\\type3.WAV" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_WEBHAND CURSOR "..\\..\\WebHand.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APPNAME "NO ONE LIVES FOREVER 2 " + IDS_DISPLAY_WARNING "Die auf Ihrem System zur Verfügung stehenden Anzeigeoptionen werden jetzt enumeriert. Dies kann je nach installierter Hardware einige Zeit dauern.\n\nWenn im Anzeige-Dialog nichts angezeigt wird, sollten Sie sicherstellen, dass DirectX richtig auf Ihrem System installiert ist." + IDS_OPTIONS_WARNING "ACHTUNG! Das Verändern der erweiterten Optionen kann je nach Ihrer Systemkonfiguration dazu führen, dass das Spiel schlechter (oder gar nicht mehr) läuft." + IDS_REZBASE "GAME" + IDS_SETUPEXE "SETUP.EXE" + IDS_SERVEREXE "NOLF2Svr.EXE" + IDS_LANGUAGE "English" + IDS_INSERTCD2 "Bitte nehmen Sie die NO ONE LIVES FOREVER 2-CD Nr. 2 aus dem Laufwerk und ersetzen Sie sie durch die NO ONE LIVES FOREVER 2-CD Nr. 1." + IDS_INSERTCD "Bitte legen Sie die NO ONE LIVES FOREVER 2-CD Nr. 1 ins Laufwerk." + IDS_CANTLAUNCHSETUP "FEHLER - Das Installationsprogramm konnte nicht gestartet werden. Bitte stellen Sie sicher, dass sich die NO ONE LIVES FOREVER 2-CD im Laufwerk befindet, und versuchen Sie es erneut." + IDS_NORENS "Keine Renderer gefunden. Dieses Problem tritt gewöhnlich auf, wenn DirectX nicht richtig installiert ist. Bitte stellen Sie sicher, dass DirectX installiert ist, und versuchen Sie es erneut." + IDS_HELP_DISABLESOUND "Hiermit schalten Sie alle Soundeffekte aus." +END + +STRINGTABLE +BEGIN + IDS_HELP_DISABLEMUSIC "Hiermit schalten Sie die Verwendung von DirectMusic aus. Einige Soundkarten können inkompatibel mit DirectMusic sein. Benutzen Sie diese Option nur zur Problembehebung." + IDS_HELP_DISABLEMOVIES "Hiermit verhindern Sie, dass die Logo- und Introfilme abgespielt werden." + IDS_HELP_DISABLEFOG "Hiermit schalten Sie alle atmosphärischen Nebel aus (aber nicht die Clipping-Nebel). Dies sollte keinen Einfluss auf die Leistung haben. Diese Option kann aber bei Karten nützlich sein, die Tabellennebel " + IDS_HELP_DISABLEJOYSTICKS + "Hiermit schalten Sie alle Joysticks und Gamepads aus. Verwenden Sie diese Option, wenn Ihr Joystick beim Spielstart Probleme verursacht." + IDS_HELP_DISABLETRIPLEBUFFERING + "Hiermit schalten Sie eine Funktion aus, die bei einigen Grafikkarten die Leistung verbessern kann, dafür aber mehr Speicher der Grafikkarte benötigt. Die meisten AGP-Grafikkarten profitieren davon, wenn diese Funktion eingeschaltet ist. Bei einigen PCI-Grafikkarten kann es dadurch aber zu Abstürzen kommen." + IDS_HELP_DISABLEHARDWARECURSOR + "Hiermit schalten Sie die Verwendung des Hardware-Cursors aus. Einige ältere Karten unterstützen keinen Hardware-Cursor." + IDS_HELP_RESTOREDEFAULTS + "Hiermit stellen Sie alle Konfigurationseinstellungen wieder auf die Original-Einstellungen zurück. Dazu gehören auch die Tastatur-Konfiguration, die Detailstufen und die Soundoptionen. Dies ist nützlich, wenn Sie Einstellungen verändert haben und alles wieder so haben möchten, wie es ursprünglich war. " + IDS_HELP_ALWAYSSPECIFY "Nur für erfahrene Benutzer." + IDS_CANTFINDREZFILE "FEHLER - Die Datei " + IDS_CANTLAUNCHCLIENTEXE "FEHLER – LITHTECH.EXE konnte nicht gestartet werden. Bitte stellen Sie sicher, dass NO ONE LIVES FOREVER 2 richtig installiert ist." + IDS_DETAIL_HEADER "Um NO ONE LIVES FOREVER 2 möglichst optimal spielen zu können, sollten Sie die Leistungseinstellung auswählen, die das Spiel zu Beginn verwenden soll. Sie können diese Einstellung später mit Hilfe der Menüs in NO ONE LIVES FOREVER 2 verändern." + IDS_DETAIL_LOW "Niedrigere Detailstufen bieten auf Kosten der visuellen Darstellung die beste Spielperformance. Erforderliche Systemvoraussetzungen: PIII 500 MHz, 128 MB RAM, 32 MB GeForce 1 oder ähnliche Grafikkarte." + IDS_DETAIL_MEDIUM "Mittlere Detailstufen bieten einen guten Kompromiss zwischen Spielleistung und visueller Qualität. Empfohlene Systemvoraussetzungen: PIII 1 GHz, 256 MB RAM, 64 MB GeForce 3 oder ähnliche Grafikkarte." + IDS_DETAIL_HIGH "Höhere Detailstufen bieten bessere optische Qualität, allerdings kann die Spielleistung bei langsameren Systemen darunter leiden. Empfohlene Systemvoraussetzungen: P4 2 GHz, 256 MB RAM, 128 MB GeForce 4 Ti oder ähnliche Grafikkarte." + IDS_CANTLAUNCHSERVER "FEHLER - Der Standalone-Server konnte nicht gestartet werden. Bitte stellen Sie sicher, dass NO ONE LIVES FOREVER 2 richtig auf Ihrem Computer installiert ist, und versuchen Sie es erneut." +END + +STRINGTABLE +BEGIN + IDS_DEBUG_INSTALLSUCCESS + "NO ONE LIVES FOREVER 2 wurde erfolgreich installiert!" + IDS_DEBUG_UNINSTALLSUCCESS + "NO ONE LIVES FOREVER 2 wurde erfolgreich deinstalliert!" + IDS_LAUNCHBROWSERERROR "FEHLER - Ein Webbrowser konnte nicht gestartet werden!" + IDS_HELP_DEFAULT "Schieben Sie Ihre Maus über eine Option, um Hilfe dazu zu erhalten." + IDS_HELP_DISABLEHARDWARESOUND + "Hiermit schalten Sie die Sound-Hardware-Unterstützung von DirectSound 3D aus." + IDS_HELP_DISABLESOUNDFILTERS + "Hiermit schalten Sie die Verwendung aller Soundfilter-Effekte im Spiel aus." + IDS_OD_DISABLEHARDWARESOUND "Hardware-Sound deaktivieren." + IDS_OD_DISABLESOUNDFILTERS "Soundfilter deaktivieren." + IDS_CANTOPENCOMMANDFILE "FEHLER - Die Datei " + IDS_LITHTECHWEBPAGE "http://www.lithtech.com" + IDS_SIERRAWEBPAGE "http://www.sierra.de" + IDS_NOCUSTOMDIR "ERROR - Unable to find any custom directories." +END + +STRINGTABLE +BEGIN + IDS_APPVERSION "1.0" + IDS_CANTUNINSTALL "FEHLER - Das Spiel konnte nicht deinstalliert werden. Falls NO ONE LIVES FOREVER 2 noch installiert ist, sollten Sie die Programme Hinzufügen/Entfernen anwenden. Um das Spiel erneut zu installieren, starten Sie das Programm SETUP.EXE auf der NO ONE LIVES FOREVER 2-CD Nr. 1." + IDS_COMPANYWEBPAGE "http://www.lith.com" + IDS_CANTOPENAVI "FEHLER - Eine " + IDS_PUBLISHERWEBPAGE "http://www.foxinteractive.com" + IDS_OD_DISABLESOUND "Sound deaktivieren." + IDS_OD_DISABLEMUSIC "Musik deaktivieren." + IDS_OD_DISABLEMOVIES "Filme deaktivieren." + IDS_APPNAME_DEMO "NO ONE LIVES FOREVER 2 (offizielles Demo)" + IDS_OD_DISABLEJOYSTICKS "Joysticks deaktivieren." + IDS_OD_DISABLETRIPLEBUFFERING "Triple-Buffer deaktivieren." + IDS_OD_DISABLEHARDWARECURSOR "Hardware-Cursor deaktivieren." + IDS_OD_RESTOREDEFAULTS "Standard-Einstellungen wiederherstellen." + IDS_OD_ALWAYSSPECIFY "Kommandozeilen-Parameter immer an das Spiel übergeben." + IDS_DEBUG_REGCREATEERROR + "FEHLER - Der NO ONE LIVES FOREVER 2-Registrierungsschlüssel konnte nicht angelegt werden!" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "..\..\Launcher.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/Launcher/RES/Lang/DE/bmp/CancelD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/CancelD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e3291b6218528c3e0ff82a8ed21524f6092e2bc4 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/CancelU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/CancelU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a31fadf4ed537265f525f55763f1ac3b31e3836e GIT binary patch literal 9056 zcmd^E|8rE;6_5XbKS*V>`|eA2_if(3eQ&b_@`V6KOG=S4LaSudN)5=DM3X=Y`2v_0 zFhE54s-#v0WF`sB*f=GLQ?O#9Kpb}mn6$iw|wGBCz zeI_zi3#BTIRi*G%3w5jH-zWK7C9O^JcO=`ef_ht0cZ-ZoD4#H5^8p&_$WieL02!4? zk$we!>e4fE#;Pz-Rl-**sjo}gK}r8WGP+%QuS@T9>HSGJ5LB;Z9GCPXlGZBx+l8{& zN-*zyB$#7q{}^y}nyJgqrEBYDwNB2cm9>|J)+z-)v>-Bo&&SC>jDAV)kpi8P)*>?M zs3cLFj*5Y(VjN#T=nia7*Xk{}wBHK-kYt>QgVJf2o-`vS2Y{H-jXopP2CLzFpBBCn zt9Nnr?Y}K%{lTqmatAiLjYgrr7fz>Bwp>aYa1sO(!Ob{jB^cn!_?4`n;iJ{J@S8EU z=91TV$*lvc&1puvq@T2*L>3Y(ku;(RR%keY%gV0(LMcHpVzY#eg!S$_IF$DAAzx^l z*VvLCY!=2*SJ2*|k_L+J7)S&$t9^9}|4!Ocx(b^B)cCE}{gWEiiLYi%XiN(p4!`Uo z`pMImz9UeiHXMGq)wfz(aqPgA671@o%P(lzuK_M4t3^gq8Dq4mk52sUU*XTjtzV+C zN8N%G$UoEc_O+Y0hM;w3;O`~BykzhHxCIj;C_oL$Bqf`;vT~H2nzff%1Olsn@t1!< zA6L+0+F{?GSacCn;u*wrS{(#5iN@UUa* zCW7`(HS#Rj0a%8$s9X3$P|%9(LwMcOh}X^s4a6u+=94Cvgf{bOIg$co<`aQMNyL2I zvTr~jfx(1WA@E3QVc(_gMN(mF>YUS|&wg)G!GQ@=n%trHZ3Q?2l-&V1oIi7b{h?TR zUG|v>XvTU=BG`dh)~Ape4W!Mk-B(G6M6rO=Tynr}hkXN92@JB&AY$^$UWvW3ep|0?roFE+=D|iLt><_t0bpa7-4ft?wK*}*v4gdj)3p%k_ z@kGpm|2$x`{qSFDB9_KPc7Se4gsWYI=?M(NH<|?^5mrW@q_qpBQYg;~ea+;Vho{eZ zzhKrOZ`McO4=cN?@RsWlZrELd2w>Wk?KGr(%d?1sTLuScLo;gdMDSUY5r8z-Aah`l zy&~iz#wlm|r9g*JR$3iiugfm#o?X;4Yu+(6=cqLDb7qu3>;O^-51ntZA}q73Sd`Nq zOx&_dAm9~eAf*{UcccwMvxAIVR)!sWLc$bJBCX%l6%WjN`fTXIV{#BbkRxva+vAG@C+e1$V`RV~G?>E#DZ^E`WCs=scK;bS zvSTl8UJkH;Z+}=U0s&D1gJU*Qz&jeKkFg^afo9>W0bI_X9!gtz`Kglg#bsX<{G=~E z6Tbly?HLGp4g>+(U1dO^@Nm&Nh?v6!qM%uj!r>@W+}|i_wgY7tz=pZT-mA{<*RQN%s!nyp(i%AV2b@=0=SWJ=0w&S z>2>g&q#$CY|0_-c2kv}{2vA19(2vT2eQEx+az>r2u$7MD<>$XDtG%(N;or~JTnjzW zCkJu-6`3+joJRGrOCSIgX9DwM9lNWr8Wl1Q5M;g09oU3Js&s9gqx#QuEc1i?x2Kj~ z0#?6%*_^lFlA6;qx)Nc;N)>>EK7huKo@_5A074@cE2>IJ8Q55z|DKb;fjcp7$EsHj z{t?Gh;RC&TY393pCIiHro352sUEi?7T))M97gT@%qEZiqFdYO4m98(l+XGsqSN%$URkyA+a0^jmwsc;FCEN!=#)DvoM6_Q@$QQH zdwFYx*(YZn^Mnqo6PvBWgv@OoeKU^Mqt1{47Y^ao>MQlz&BnLPSN58<8@`?K=s7*V z&+7L72Uw+L9`|H@pk^NoPTp%BCgi*UxLlhLQwy%bvfru>A5oB#oB+?yf9R;=2mGH m-k8ZSN>+ZosPfB47k@V8$zFf)Nl|$L$LX};jE6}|%6|aTKbOP+ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Company1WebD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Company1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..18afeccf3b1b7b8029bf67c61afa5029525a6ad7 GIT binary patch literal 3184 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Company2WebD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Company2WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..23b028a8dbef723c71fb6ba91cbfff23441b84d9 GIT binary patch literal 3252 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Company2WebF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Company2WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88108d5c184ba4ae4fc93a845eb03ab0d43bd841 GIT binary patch literal 3252 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

TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG zGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoT zlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EP zh$SE=WA$6L1PGK1$jNduBM1TeSoTlncno zax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE= zWA$6L1PGK1$jNduBM1TeSoTlncnoax)_c z5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L z1PGK1$jNduBM1TeSoTlncnoax)_c5Qrrp zCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1 z$jNduBM1TeSoTlncnoax)_c5QrrpCu8+n zwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNdu zBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&1 z3&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1 zTeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1

TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/CustomD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/CustomD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..390c83cf4cabb2a3842ea655887536fb1c5924c8 GIT binary patch literal 9056 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 S=_$4U`}XzU|9?L^bodWFQLnB5 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/CustomF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/CustomF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27167046617ffea967e5e47869e014a34e6452ac GIT binary patch literal 9056 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 I_aiFmJNV8L4*&oF literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/CustomX.bmp b/Jack/Launcher/RES/Lang/DE/bmp/CustomX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..97d1870e80c36c48057c0074ed900c570ad9845d GIT binary patch literal 9056 zcmd^_`&Sc36vyd5&>yT}XA`o!+3XS!D1xXxwWxShl!}6gAU-M*AD|QwpIGsQSQUF( zs-pFQP<-%^)2g+$R@*97DXm(MSYtgZ_Al@!f27~d)H&l4lE}ffC(W7cnatdox%1h3 z@6OC-T>5-xnD;XR*C>45_)7S`7DjNTpDVA2g&E)HpRy-CeWjwC&$5m_9=oPJKC7N6 zONlg>NO?q>6*@_tWz!3sBR9ln9UZ&&a?+khgW8@Ay42HG@(HTo^3w@hevKNxhe-2? zG@D4dM4Cw=vW#S(9!g1+GL2+6u9%&W{E?-!^Nq%*K5>~@b@!z2@kCGjj7amnh6GTs zC2CH2M5g%=y2`o4J_C1Ov}cI+siK6GDWud4-gs}&MYDnNtcq?uODVrfraX%AhY^a7o4rppuvWAj%89 zpcW9>Ehw7>b+4cu74#F~T64J860Ws|T*9Q91^u|7)d^}1ajYZK48y?e=`b)${skV_ z->kZO#+7$i)nZX86lJ%lt|DrU;QZV`q=Qde=qJ5Z(3%8iy`WYTxsbXfeABX|ojD_A zHFfWOn{%aAEirJZn}~K$&`~D z)aG1n(<_K}*lSLwLf@8nN-VFRG7Jp3{XXT(~uKQ`%2oJ8iBbK{_CR(~;*58`}2PlTCqUsDP;u{ZLkz zHD3jjqruSsprwazqB(2WTL%i0SC!owznNxiSd6m*IY&s`96#zn!rQfPj;yh{8oX=r z0Kp2HGnJ6>dDAgEuN8cUw+e=ZFGN=~R`Z2)%IGcNptMh>*nqLpTLiV%dw?*DXoZQ% zhewV(l9YVV9*tFc;3c~0zSEn6XoGT=OsptRHW6f4E54A5@vM-ilBnV(`zmBI1I9{g z6`Wv|Z$x;l=&fn3V^W)vQ;#XJjY1IH8B-vl(?PU>dNk4Sjy%)6FIJc`lR*Z41pDDx zA#kA|6#5(#@~k-|`QGpow~rS8D~?copB96 zChFKA2k=1%Acim{duM2r4w99rE41QS(atGqlcZ@}I;g48|Ic7%iv138?!qwwaD~5n zY+}W&^qlhw2MoMsFnI*865<98J3+ECk@3UI|Dbfq;h!h3CnN*2!kWR^ zAUZaPiW|wY~^Fz}-K*3+A4neZQ9Qg_QVHM1v zSg!Qeir0kIQd&Ac$Knm}u$;?0zAGxh_BpCjSH@?w-k;?<`z?x4hD`YNIDTw>^5qDO^!4T!)k)yNttx$h8sL%J8BN(-|^w;oZdK4Yy0y zc`B+r>#IEOlDltD_*xs$e#$ndiPSa@<)wBC!Bd z;*N(KFffDkw0ljy{q5tEuMoBm*~M}w6QR$d#!lX1$9-=`FH7O(NZ z#^91bH+Mga@BF~fJOX)Qw8Z^6E!f9{X4 zF)UMOHvXBp!!vj5gZWGExZm%Zv$!*N!L`sxIr&$!=KVM!`&`1*Hb?Ghaao6DXZIU^ J|N9XZ_80KgU3vfj literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/DemoMainAppBackground.bmp b/Jack/Launcher/RES/Lang/DE/bmp/DemoMainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7dc135fc68165f509627aed495782050b9d71ae GIT binary patch literal 386176 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%0AJTJkXbX8neYcnfUp|YxpUi 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 XQ2{DI1*kxx3gG+x+ut2%(BS_Ai6>ac literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/DisplayBackground.bmp b/Jack/Launcher/RES/Lang/DE/bmp/DisplayBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6008d493186f7cd806ee9634d3a6ac1e7de1eeea GIT binary patch literal 709256 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/DisplayF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/DisplayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d1a7069baf853bce2a928b83c1b5179ecce7a1ad GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/DisplayU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/DisplayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..238691688cf3dc3da11e0b3744f03141eb6baa6c GIT binary patch literal 9056 zcmds-dsGzH9mnb4{ZE^qJ9l8&S$1ba52O+*XoIu?#cEWFyaGOAcqpMkiwGvZ zl1O7ye4GM$PD)M%a;j;FGziK=JuwoC*jlxTcm!X^oZ1GX+wbgUe;rmSYmDcZ<=mZf z=icAFbAO-x{(duamzac9$;bH@fuoF1IzE2*{J>`%j{I-T4}E;JkLxeG@YeJ-*B3VZ zC-0vQx03Ve;JoVom{(7Sr8F{236oYZDThffc~3FFHLvP z3yv|(4=Ld<56me0D(%QUJ*f27J8>KTW}m&ENh_I@%cLwOWw3xW7Vt}EO7*59N=vn3 z(vI-XK6`Imd2edVorkiTQT(sO-w&p>-5+9g$&tA8vi+y;GikL`NB{*baXIBMGp~Em z(VWFh%kb@srX`~3MNvXoYJa}w+0rk^9CnvhZ0W7EPw%e&hZcajpAA0u+8GwOmPvU| zR;!pfpINpD*1dwYPLS&bYooUn&8hbUOBD;;i12X|TLfr`Bj4qpjjbQl3oN$ccJ^5< z00AmG|CAWG#tABqnF|HWZw2{)pnNQ-Z3d;opmZ9PF0U(aszXp)1*J)l>zH*Lla^@$ zGcAI^d^5WAxaREndL=}4$q`%9<1eolEyZGBp(ww>JNt~bP5yGJhD+Ybl!JnLbOcH#4T{&42Q&a;Y8&zl zvy^KI-?W&SGqv31ye+1l{04Wukigz@YtTy?n4T5rP zI3>*U)Pcg1Qqs-=6#Z4d*Z+9y9F9v<*FGj?A{gjP^$F@}q{Nwk6%=*h(!UAUW2+0!x`=7%>oBvv$sZ{VG1X%a49=?^u!dDyCcGUO zQt4+uicR9~k(isK1f%6w+?)!33=dEz_3 zC56_C5S6M=Q=^FLlcTrzBFnaXfwj4v($}r;f*4>-UHS^TV2LcG_nkMo&45#Y!aTSl z3gpD+K^;IJG!Kz<@qLNsn8x)rF7q%(^FE9*&}u-6Mq*F zT+i(KOf?E9T-Obb+bMC-Tf%p^$#XIp@Cv$69&F?e(&U^TN5PE=K4(RzycgFZ1$xE` zj=Q9V=Pr3SM1@Dw@d=F)b3Y7=+8;8d+8F$iE&xXdr6<6@J8}oBMK5`+x8$C>xx+2d zMac(KL0$U%LzBbIZ8)961`?v{VpV8?P(4PZ_nPDCzzd7ES76Q*BHx}I+c-70A!6qH z#^7e>GdZ`>j~cN~>&No2U^+$p|Fc3bVd2JTfm7rr>R>_z!l22~NOh!tK#TmT;d4pwUfNn1Ne@Gse<|P^VGof;iE_En%Zy zxd(Mu49b7hSeaJ}k?%a0+nv0mJ8ALh;2B3mJ6@2v4UVJZa)aY`O6w#7Fu=5AM(rdm zJp>9;H0nn|R|qZ)q2auO7Jk1YbeMt6z|a$qTsA`x@V>)rHOyQ9T;mfD&Mv*UF!St^ zoC{I2JN<+34)|@J8Mr&NNKoPz)nnlaMDMlUSsH?btZzq#hp6!!B>O=$f zv=TlQP0m*}+R>#JJTusuMe7dHQh+ip_w)JtuBW8^HGOs8{AFjY;YW30IJ&e*IasQG zdE6boB)9-GxW-*Zqg&pFF)!o-j~$FcMc>HHXdYBBt=r^e&##MKE;efSpyFbsbTIh? z(Xvk4c(JT~W^+GwnBy~ga@JhSU3(*H&Po4}cF&~+U-TN_b#U`wJ);M>+a$n(`5{zd zK3Pef_TiB@N-$#a$SUyV(cdOU{0bg~{DgJori~8K{%34YIXCo5g;^i)JsGe zSv`c6Gu7kHn7H-Iyn?>w4$c4lM2(_CqsK;uRmC{{p(l^9BF_ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/DisplayX.bmp b/Jack/Launcher/RES/Lang/DE/bmp/DisplayX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1e2eb1646901637b4f6a23835a01cc690b10f3aa GIT binary patch literal 9056 zcmd^F`&SfI9H)PvA554#yX?&D> zseJGVA3XH*G|RL?deD|uC(5;sX8qXdoF1n`Z~M&N`ZlgsyGEVdICtlK=icxA&iDJ7 z&-Xib?l3LAz!B#A8;4^wes26E{B8(iIP$+!H-?27zu*2Qul!=-s?YO|f4lsXOMb2F z%urU_$5U4I$7i)OrJP9%nUu$*`JvO~`BuHyF@9ZqR@;=-eOYZ65Hdh0zi?^9$*Z)n zRi902_`0a?Co@pReP2$me=9oWAto(iQa+P%nKX|@W*N$~2nII3l{}l>4S{ z^4$5-msiDV(%Nt4w0~dJ|MRa{UA&b3kk>WiQ6?4mhyMp_F5^Bu|>V83KU~)Cm$A?%tKtmpdm!2B&_>h@kDO!fJ&}P|sx6ZC@-T6cuj6QT7+Xh%Y*AshtNE$9aXtyNH)nSBkD<{AXErGsGM zg~!csrS1FfZjkEYrD?ST7PUfDN=4Z%sx?e)795Wm5a}U?&mY`ty;sn>1V_7|HZi%B zrzCPSyriF!G5^$$Al2~R`W**yh`lHr!7aEQZrdRY0o45L5 zgJ6J5E)yjb{7hlWgEw^=Pe%9P&odg%*z_8!2CPq!v*1Q z+B8r1mHK95DUKDmlrwVcg{ie~s4*J=m*i>^4N?VBrfR$11ej!?Q0K^7w({cS< z!=d2H1U_^yM5lZd*CGaTQ-L3ib(h)*QekNtF{?d3wLK|l7T*TKe5REqChr|TZC_IIZkr3M^x&500QxF&GMT)GfsnuQ^d z6FpoLI@g3%x1eHUs*uTxgfR`1ich3wJe@k{Dd*VzqK+5j0GRok4*Ac6^*bd$2>~d; zKB-YZQOgVhB`G@1vw#(n3sY!17tq6>cLW_QkQy)yDm1Q)6)AIU$2J1sinwk6jJmhe zbB<-?olKh4V~N5$;I*t7csS%Fht3=z!r=wPuan}XDJaO)2>}%zd^67iRyYNX2?wY_ zCN#_`&rOkWObnu7&EV(|?dwFvjTT<=N_NL5X<0|J3;JixJ!X$P6jT}#bKoig1^0M3 z+$)3tHH5}PMyFrhhB9vy1FhVy|9~PCnjExs% z$;hoAV~2Ulf)ja*2lAJAk|rOqM0W*FEyTiaocRdcg7GKN8x2@+7342r^-o;ocbj@I z(>g`R7K^=HluL!=NAQk=4Vkoi2lLzmOP8IU?|#iWrbpDV{S{~kRAD$=0Lo0N!0r5{ zCRMqA$iANg*gz1qT~x1m?brnd4u8DNE$(Q-bw==I84Z^cUQ)Z3m{Vxima0 zT|R;Z^JKiPQNk;p7_~prxknkb-PlZsS{*}p@_n0_weH=@HQu^L@7hMM zyYl^8r$4KW?m@LTQZj@QGj{f{UOEuzYExo%>hX=nWhWTA6|8)v9#6*ETR)gx=BZfa1;>z*fNo)l=Z^dr z)8{=G8f|v=vDA#Gl4l%DoY*pIOp_~Nd(7A!V={VdHSh4J9zjIHWu&_N-#@TSo!9wk z=2q{*O&=AMzvsStaKTbfZqaL@(Q*o3&06&G%$%diSw|)mKACdQ0JhT?3|#i1nNZ?F GSlBN`ER8Gx literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/HighDetailD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/HighDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6f3633b9b02e669cb4d2723e915e222cee1babd1 GIT binary patch literal 15536 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 R?2F#sB7beFr4T;f{{h7fV95Xg literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/HighDetailF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/HighDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fcfd2b88e8e5057ef263de33e995d93184e2c889 GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/HighDetailU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/HighDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ce3824b34aec6d0ab811d29801e66733adc56534 GIT binary patch literal 15536 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 HjT!U5-Vw^v literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/InstallD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/InstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..376541f0f6b7b67b69b9c615c74e749b82abd232 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/InstallF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/InstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9ea01fe20cc271de075e85f3a25ed25844a7eb4c GIT binary patch literal 9056 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 P8?{m80NVG<;c)yLjvw8M literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/LowDetailF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/LowDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..552cdc53191fc86a15704e29bc7fb35cbfdc4c5d GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/LowDetailU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/LowDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f3d408aec6f93c5eae2de67338ba240804042649 GIT binary patch literal 15536 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 VpK7$vwribNXaFwu(`nqe{{f_rcPIb= literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/MainAppBackground.bmp b/Jack/Launcher/RES/Lang/DE/bmp/MainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..660f91aafe324e99475302382a25a2100d77c89b GIT binary patch literal 386176 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 GwEqX?zd&68 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/MediumDetailF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/MediumDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f8ea56a9383a11ccf21bdeea3e97353f71f98243 GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/NextD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/NextD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa0f7bd81669b468717310f7c023db30ef1c0135 GIT binary patch literal 9056 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 W);Dy&OHw6{Ff`%pOa+zn>h*tw`ix)z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/NextF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/NextF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2788e76d73f00467a0772ac644d03b8486f6db5 GIT binary patch literal 9056 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 V)8fqBPYO<>oK82Kp_oKP{RNToZMFaa literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/NextX.bmp b/Jack/Launcher/RES/Lang/DE/bmp/NextX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7027f05e995800676cf2a4c3fa210e919d8c0477 GIT binary patch literal 9056 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 oc$|_AJEk+V!JE8{K_+djJ3c literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/OkF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/OkF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e376f64d3a4377c9231d3dfdbba491570388a9b2 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/OptionsBackground.bmp b/Jack/Launcher/RES/Lang/DE/bmp/OptionsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4ae70b12d11b87d95a8e059783007d24650efb7b GIT binary patch literal 656696 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/PlayD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/PlayD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..04c228b29a1b7101ff4971c3f685626ffa1caef5 GIT binary patch literal 9056 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 P(_h}XW&VFZ#*FzNWOdaz literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/PlayF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/PlayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f98df95ad235dd43498f18a20431ade91d15847f GIT binary patch literal 9056 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 YcN>%D5&4}OSN#0i+fV<$A00aU2O3r_J^%m! literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/PlayU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/PlayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4c1d239679c42268784baad825d282d2ff784b77 GIT binary patch literal 9056 zcmds-Yj6}*7RTe~{RT?N^zCG3deYO=J(+|@LI5L0%tCNCK?yHq4J?EN6Ch$9fUFV2 zQwgAwh1GymC4nl9B}uFWS0oAq@<2-@Y5=7qDxnMrmRrS^v3A>k&rOa!lLTf)mXb-` z>AG|J-qZK|`hRZUzLV691yY3fF9}BlpB#Lm@wq2rB#!)V*dHPyj8Fex(bxJ=CI92z zS=BwMPoEh*r;*8JOj^dId?q~+KE?3_a}^26+oCe-BMVO7x8=Lx2YQD!=|h!4LFF93 zF?GWi?rHm(w46x=Ov+=@VrE;&Y=33;1>sagX}(eH#u3q3Qujs{pBujK#-OB!z%>y*#QRLE3 zhS&R~B(VahNyVqd*p*&TMa)qu$o~+O1A_XVpfy|6R*TwZQQHG3A6e8vOCWvkd>aJS zDrmSNWVrHoAU8?3JNR;`k$?|9{O z%2x@YpqR7p{C~ZFADsAMh{O!V?f=1*37U4w5EyX9{!NrH;bW?=S={WwiT{_hHxHK2$l8 z4(~!%zY5Gd)z=wIajd|lT&(KT%FZccb^@1_P%A=Int7TEPE>qqI^FT_+$S##)D@;I zG-x>V{nVMA{4BS?2&AyMl22E^-gE7GFD!6UQg)FyTVL@F_lyczzUul9j5xxGj@-_h z;fSw(&Uu5tj{Q_8j~{L z8J)5}etfmn^R6iYg9e2$&`?o9;0S+ERyYei_=N*S@$NXaqv|rgQcys|PoV;_@jCpY z8Gw+e%meUqPOgHfa9pi;VKMd!9JxaB%j41-C!{qbO@7nrY4Wbgd7DsJAr|Bgj|E47 zGP6QZ$W1y6X_;?5i3&7$M}AD6(qU$W6y_cP6CS7~7b-cwZLG95L1|!8A(NIcb@ha) zhbCvdo05Lep76nMWQ7q@To^Wwg^!;L3AiX6glT3)cC!Z<@s%v7P!}@tj(W*$Ee&CJT2o)j`F7zVjT1u04JsTnM=n_JSg zxZZ+~r4It$cbKb&IZA*lYWl%xBwT2TIxSIfmVDwA#K{>3$*Ny1STneqMCT4sEuz=7j5Kg$pxLPp`?bI+)Q5(=dWpUKh89KIhb^hJAs zg&jxgOQYp!JLoBDbJI#cE47s=Z;SG?#>R`h>b@;Kc*jX!+?l`fYQd^&DGz-V6W2FFXf_iuz8m@(CFm2%=hVb#1^VRgCg%Wbv1H zcjkLC8Otw#)iW>XS@SQ*V_SSPkvj<#7u13o2^>%vDtvAaP*)%cTqrk3dh=`D>Z}ha zY)Ogke_?ydyP;PuOnIC3WPoc%RZm{gm379=?H*%0lm!4I1C9CKX=B}-;=r8UzQZm2v$H|$W;t`1jn4EY#j0)cD znw*J^amlrylr*_6anc(J6RT|*O_A#^Q|j@_Y7kalX!x~a`qs;{O1jrp=+GEa66lsa zeSJZ}#m5$(3y<<>&e@sSXVPahPn^;)>i*h<2{mIL*e^ePG^+ICy#fA4PXhbe*ovRK z|Jv;BSC?$Rv7+p!lIMDtuD+gEgePV=l-#GjTUhwbBa1#8KeyGHeUcTP8&PrP=KuQ< G5%CK$Z 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 BPj&zR literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/PreviousF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/PreviousF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f85d6f12527d0327483e92a604098ed23fa83de1 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/PreviousU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/PreviousU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f9ef8d65568fa96d24dcc24f537a518b05253d13 GIT binary patch literal 9056 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 Oev6QuIB-rz#{U7EnuwtQ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de44ca2fdec9f3fbb5b53b21b48cf6426eb38519 GIT binary patch literal 6296 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 bLdYaJL;@!e42qFW0Y7q;+5TdK literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Publisher1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..279befa58505345309c555c45133b3f36110e10f GIT binary patch literal 6296 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 a^_Te@t?;4qOBIZMqgDTR!*IDsU;hR0o)U)u literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/Publisher2WebU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/Publisher2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c9635db95fbedca54a415b3fbcb7cd9ac5fb200e GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/UninstallD.bmp b/Jack/Launcher/RES/Lang/DE/bmp/UninstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa1496a957fa230d57beab7bd1e3c30ebe28eb1a GIT binary patch literal 9056 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 AxBvhE literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/UninstallF.bmp b/Jack/Launcher/RES/Lang/DE/bmp/UninstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..84c7f05c84d4bca883f736dcbedb79960a7a0a2a GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/UninstallU.bmp b/Jack/Launcher/RES/Lang/DE/bmp/UninstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f8e3cba61cb910825553017391d7e4378efb1fb8 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/UninstallX.bmp b/Jack/Launcher/RES/Lang/DE/bmp/UninstallX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ed5d04581d41070f102d1c319a2e00592f99059e GIT binary patch literal 9056 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 K0Sf4P^!Q)F4`3<) literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/DE/bmp/optionsu.bmp b/Jack/Launcher/RES/Lang/DE/bmp/optionsu.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e0f3dcb9d32fd5f8e03f359e7e9fe68d8b7956b3 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/CustomBackground.psd b/Jack/Launcher/RES/Lang/EN/PSD/CustomBackground.psd new file mode 100644 index 0000000000000000000000000000000000000000..b853bc57220e5bab3cde11c675ee3424337a66a0 GIT binary patch literal 1898400 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≈iPN1e{6@u}KmHbsSC(1O1PQ3eKUVX5`NZ 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Μ*jp0XnlY31m661bGss0WQJAfps9l1kuN-3G*Wx`Jv>dHb{ADqy*5y`}WJxg(tz0%Y11wCb z_{$(8ot4dQaP(UyB+Z3l%fnYu#wJjLsfO|;pyo@fS73l(r(RGZ%;1EigtG5|q)2S} zIzf|`(t;#5zc9+>)7E_f7U_z0M&;^0nzo$IWn}2Rg}QUW2pJ8LBP#b+`&QUObz2DN6NwS+t7W6uJZ88mzsuC?qV6*7lKB$m zW3FpeSc)_Z%P3;iK{|Q8qZU+PnZcZN@K^CKGkeZE^k3sAB0G{_>B6~bL5;KQxq1Nq z9w1g{_@P>cwbP>D12J@sErHee&uq`afx)L4Fdt@ zm-hcztb&EQ0?F|W=0s4sHw^=ih-i@|4#$rwii1boI>>mTz`-TQFpMI8-sOl{05ZN| zHY*bcjGN|89-h=q-_xH3uH!SZDJ@L7OdXz9Ml7Nh$z?vX6K04H9WBE+EtUk?{5Asw z={;}f!eVh}(^G)<#*)#bs@ymVWS8&aX;-KcF-pwRA*RMt*kWy771)w9Y!}AUlARJL zfC%oAFKV~7Z;%`oNpd1rjmR~Ohjd#C@da8P;(7TmJqr01q&7@ z(C8na;M+DCXJMd)VMwwn(pzQ?$~KfFN$0r|MM!Vc<+iIr2tT`8FI{IhOE#j74&!d` z){fzO-i=)lX0Z?U`qhh2CefIBWuJDTW2jx$;xM+*!IGw3C}r^%MI7!*$R@Xk6|l^+ zNn`1-Dbxtd*k_ySHU)a1n5HasZIEPvBnf=C!kJFWe67_{}~To@&2a0ek7LQrv(l@$ny7WGY9hl9`tA3=8%>r%xhOt@ zCy5M8zP+?ZXc}-7?7=}Bi@_4xXUhCQ${`4Efan!^IdRw~O(LFAixgApQ?Z6k5iDon zNO4tVN_>_Qu7Hv>2jM9oiy`t5qAuui9dyL72x3&#@d)LKd@|(0aFO9EJmR#xBz0R< zMCL2n$hJ(q8rXvsWdeQ!Q{YUP(?@Gi6xfk!HBn`lERV?!Tm==Tw9UK>#Z_C=6lqBd z&Vi-70CL!vICq2uZmErq{(i?M?3}YL4=mr$LMd`AMD8F7*I2Fo&cp7eOI=_&exY}m zVhvwuA#Pndt}(v$WtMHgC(86vn*Y|jEzL=H@1a_B#t;cmOdy2ry}wVDbyVgr&S?hK zBccZ}5v0e%!HoIlv&lL z>)_mU$HghqjPrM?oE-imhsDN;noo1vrg#HxgZ_Dfub;f||tNymaw!tR5xD`V%|0 z?hb%PG{+L)okgHFj}A!5@PZ=){a8eRU)hXTLGTj#d8S$<(Se#m@|#cozbAD@h$2#n z9TjLRD?#dy?rAn}<0JB{M04GAQ!cT^sGUL&EIVhhMlX+?Xkn|Wlm){JnQ7+L#uT^* zcF6(R45G2K%)2ndO8Lf-I0#12J=mzRs*_(~2jL!1kpN>dL8${Uv}9Nn5Vme1p|ud5 zUtb_#;GmuJV1J`8Kr6GL7{YiIfW>lVzgGlTnAXxWwj|%&SHnTl;H+)UA~0B7mw7jP zAL>P;KbtPrE_3^d3!LrIq~*JGtus!03GEm6F~`Ql`j@^)mCl4=Oo+Uf9eykkc=P~u z?~5j3vunEp!Mj!Zud*(al?Ylq(z3nN#P&G2S(*3?H{MznDilxH#UexFLkm0EtYp$fjB!40IC8GxWpDFrixt!)R05WPawSk&KJ`@- z__b&v&1L-v*huCs$?%6bC8D#@x+Mj!VF{ODns&vb=bz_`X<`BVfls#c$CQonb!$;o zKu!^%X5toQwE<({Qu2TKug4>6pb`Fq$E z_YH>*qA~dKkCFCLm%rN~To-C!fJ>&m@+2j@&Y%=1{sJ|Cae{7SSG?Kb72pB=o1COd z&5TbU-OMBc6;gn34#Z@QKyX4;WBM?5Xk#glc@>HRbu)8@n$>wb5nHF=@su&dhqZuW zB*gV$iGtd&!Dvaj1`3XchD=*NDRyO0Cpd zQF@#|r&{4s(C3op9($~Cp0;v5yH;Fnr5L$%=@4f>zs1h#FQUTYv=Kq-_ul`$_r9Cm zi406VfYC({XB&!*(5gygNwmg#nm)g*LX4@=V0%%Ys}pZb{+~R5fdX=5$}nCaQ4L5; zpEgALME3@M2q(zrROdpD*2pHE6{##3CO)?Xs;bOFaj>w#BdY@pyq<|iFGbQ=9$3v| zhd)PuX5=B^95$sDvZDm2%HSzFzGx1F@v_Aw^8#>Zi`q$$_{m~oT%@fU$(&5ytLPbN z%XNLI5H@Z~ee53`m<=Upu2c%!_6H?shtDCjGl<(b+F%!nYjeN=kGi=2(han^*Qgh+ z;|Br*HTcC#hujnXjjw)*yB}x}LFx~&j#|$4O{Z>L2M{w+4&59K3F6>Z(pa}{M|%m9 zhiB3(F9H}Wz4d@Jxy7vYxwRieVKM1B5eNd2_yllJ91cYc>XaoU2=SQ{f}TbADdr6m zoWV+}Z{EpghK$TfsvtthjR@pJ%rZR#CJKGaml~y4cfsHCwbo;{d+9Cla z{!8fz?5)8%Hq2cYx3I>7M_w!)XRI+H65a6>*k88c8A&28G8_cM+-Ms{Ndn*~8( z9yzagI$9j>aW}AUxUYDS;nC~nDSK;{hkk>f@Ll=XiBqQaMdFWvY;fYI;kl6K&uB*%Q zK}yk+SXRzQYXP1-_E5GS^f})tF_EWjNJmj>yCwoHokMi8jSWB@Q!E+AJ4AC=1sGy% z6RxSOO-_)aG|2l~h%kerx9#Mmw}uW`?V-cz=!np#$@+2s;-W7+bZfenU*`h6bNn}M zTu(PLPRUldgIT$F;s=f_v(XqPmK7K<<4pBaQ2+YBf8%uvx4>M-V~-tDQD{Le+hlIa z8xNXA$oJWk3CY(ujY2I(MePHpGT?1*mT;4K{>qAZ_Jp12RPge*HA7EhMo5(;qwPMm z%fJzXNLI_t2t2Nr99^3Cob+8B=%D^34dauUT#WKOc!z9R$I>N{6fwv~MnA%bZzSTI z%TiL$ICFfQq|8>uYKmeqBT9fk4uTRb!zJAYrzq2$;9I(ESPvtv<*Vw^z$NOZ_1(xC zf#7};(}BUQTepug43$hcH9|VlMc0&GHaSqxu-T>7%Q{5DAThlgzPAQnUsnyBEWzUvO!%uK*D`l&n=I324qLHnCQ6nvenp40<^~SRc%@d zlOZhyFL>Zq;Q8{={ulI?_z}xQJ2pdwN^sMsatOfK48<}+R&|XaEsf^H)*U-u-Vyo& zbc2Uf*IGu)0j9Gp=Md#^OYutURpU~+(c*dR{ATN|8(|kf`9|ke9(I%s7mjdj1!?rx zzJkBlN{ZG+v{}`9MxR^O+_qkmfhtAnp$)Ng@O|P<<(Y-U5OmUXH5Iu!FoIQuin_h& zBvbRLtuh;!W!TmqCV{Y;$tEKl&Eh&3(b*${h$|cW4(;KKOcTv-;r{_?ry?*iCH$p9 zDo=e!v}BZRX{+|&A*N;JdmjxZA)Dv83Pl@TSIi)Yti*2&W9`@li-g1q9AUGK#RL(| zJPPzD2I_E?<@P^l5waoxHIM>MNZEYTsHooTqi%WU>WtvpV?jbv9txkEyr%gSu#Oum%wKT=^ za)K@-p?C;((MQru>N)%*n_ZnV`#JbQ1>xj(^m^<|&u@g{%9!Pca9&suLw!W^nH~{` zpa?#7@*S!)#@!==slZlwA*UpK`8QEKkTx|| z*rmmA0Z8RE31ZVOwH|~nTdJ^4jJE^lJIiH5`wygpBNcR#LWSO$>q;=P)YN9H;P>?# z`K`+BbgO#%R^#>O-Y7g$cTmcA4UXpEQDi!Z-~~ zGYUu{c0~Z2K>$lLhal2x07@ei7-`OP5Z(S8a===Xl9DH?EP@+c9GXPQJPYlnhrnX+ zVi(co<5}|T-4dwsowUe7H>M9luV}lRPhwXi#+q$FDRVH3;=5HLKEc5dHmd2J9OCAv z;m~kGjBkY)x0kwm?@N0uqz{Bx%_$AMgAs8~z+S4wltyvA9e=oW`_^p^m)AL`$w#_H z__}#3-6*Ics?dU$Di`*%AfKs$uY2jasrQ6`a@1cr^lQO(T#m&($I80SDdrMO%6=8_bN0SOrxLqTC(2VR5=NC4&}w+*RKYCH7B1i*RF9E}B|v_jNh z7GRD%D2bRC?%i1`yDDl`Gx_Q0>LT-sy5IA3^l& z9Xs5;clX|%ba%q-yP5@?+{7A~>&jK_apB;PfAj;X4VJf>=YkUsDgOu0b}%_EwGq1z zRiGbp`80{{_7b<%fP_G;2^1bl^g?y%1U&2MkgU&S#+441G&r3inWY>Dh;a=g(eOjJ8YpN6b%u~xigo|XWqC(MeZqbabl&-M)OPf&t)_2u@%kHo?%&}8<6Z2~a)%$& zo#Iw;bEJMjS58Lb!ci{If1mr=*x^fmQsz&tNFslFcW7%-9mK4R3eFG;hWMN*zmPpE z{*Zem7&!`1HYeilg+jHsMp7Xr`H6HGCzv{I7_fc^D+th?mKO0Ln9Qoc^ucpz3MVD# zIM1!YiQ^U#nkYI*qU5Ht`9m0?Usr=MQFBy=|*)Jb(*soXywQb&O4$Q=dB>YJ=Oh z|=t^>O zvD!G^ECX{<7o&6-ioz0^sjOW(EYf0)ks^bl_8w)FiXdf}GL32_znwi3{Q)FM2rr`I zaG1kR8giW$f|Xo(wAFA(!xz&2lA9u}N{c#pNBodH9RY@0HArTVoRTL&0Xj)TNnNb& zbPzD6m>ICGta}cv9ixG8dcB>*G=;fXDAsD>EiKp=&{^V=W;9UDwkc!YsHGyijqU^p zZYH&7ADz1cEMA`CG={zdhI5`Wco9MvNz_dOSmkzhx8*+eN%xC;lkVTU&jC$ZrT{yZ zGO4;M8+h@^PkxN0;sU4A5Ucf%qA7eoout^3_)sLj9!SoGw8IAvqJJig!I8&|tfU~` zQ<@6-y)lOvL|T=FtZ>@Yp=ouEH4Wh^&V;hlazk}a;rudLRL2bKdy9O!t0*&&Xy`u> zRb`tMpP4&P!o=M&roG~d(hjL*G<@gl;5hC*pcqndF&7FJxKT4?{R4vm${p67dO-O3RFprg!af!f6UT+ zQd;|XUXu7^tan4>{9C{A>uGI&9kz%s<-40N)=iz2#Ojy=$W zAh&%MLs%qC_(Y3jYy*)&=!O|*0y=6yM>*4_I>xqkUiK&mQ~W9(d_K3ve>z%g6yVYL zCvq_pttUW~BcNKWkWXm_Tn4V-V&$kM3|i$7EjAzmIhwh?9CBWZXN<=w)*72wO2{8I zjFCm*L1+Q_o#aY$w`y&0%Pi+H`X&y9Vit2q67Dg*lBGIuxH#g09m)!Bd!Lx6KL3x>+kz;gh-9XY7V4oD&pf^0iji5s1>-5n>K~Qe#qz zk#xYkRV_Jy-icqJCUD(R+S86D4pLYgDUL2tHj86GPF*;!4vMln!V++P=eCBx6jqq4>LzuC*GOE}r|@Psp#h(fmyXAh-s@`{uhbGs84fxgAu#3fUSL z17ip_K%@*!&So^#IXo4dBfNuhoEKg|V5R{F@pD+=c7&u1RTv;Mi_Km9sT=?|CsS#V z#nc}#;nE4c#2Q=)h$>I}c`hYmW|l?jBoRY4-Kf56yaP0UV7_Z*r$MBkh$|NFNI%h}cH&JoTGc|;KT#~W<5hyhsVEu}>;27;Uyl4p8( z<)jQ8f|&kGYw&^#$F5Sy&7`8X4!qD{U}TwoRk)0NRaCSCu=U0n58 z?z%wj0ffw8lD{$2*`FeczYMdOQGu)lQdXd4cK$^+!6hi>*tx;_D-R@?w2 zUZ4gBc=RxT-1+D+=6Ljw%cbdVac9JBS*l>DF24HT|AKT%LwvJj5A~Ce0v{hxYD?x@ z&S>0Va-SY+=+?Yhuv41K9f;tEt1dzdqN9N6VTcGhv#YuQ6DG)qq20-#0?7GYkz6hc zOQD~PIuL4WPR%03u~a@^$PTPMpbNuAu#MCqJ0!v;722@q%p^<5bK{#0i*|VNXx5c_ zPEA5(4rT)(yzsFO)@79=*%Jc=TBfZHca&@_HjFMeG+;Bs8a|{|Hf+i^yCZ7`8_T3^ zOKxh%&gipZl$da32EXh0u~%O`&FSxRvA{509c8PDpmpay2=X9*IO5Uc`1ac4*B+(E ztq=Lt!}OqnSw>QkP_JCOPC0V%i1!?S1YPx=nBM=w=l&Q0G*^Km%k^HJdDi{AoIkyE z@oel&g4K-QFj*;Q6}TSo%Tt8xU}KV!TA{-N5WDbef3GYC30G-$8*pMy zYjs|m8*49s_BbP8$_8@qiw*$FCa)~J`jA4^PGq{KcA;-VvjgHg+}v0cNmr;ZZ7-4W z+7pxljN329qOm-1-NQr{Kamb}p$~f&H`e%NI1wEUEV6$6@P>}~BmSwhdA{!A2mp1* z;MPIo)=uoBW^kYBmbwFq#BQ%noNL<2Ur0*+cRh|1SFEA&`dM z;?8F5IrcKqc8PaXZ7+5#FhStRSwKvz2ql{h3;a)UgQlNEx>hJkE}h7QbA%lOG-8f> zURzkf{m;fOBnnu>hKHXmPM_&0PS+5=6xuipQvwP#p?##ZqPlWrXl%~4Sbqyxr`|R@yZeMEiDQL)3&k7|C`<-my1v> z9jkB^bXJhL=OMFz5sH!0TZmwQ#zWlW;iLSuS+75SO`|-1{q@%#^IIfge7kE2kH1*I z@BZt*{EMH;sf193*~?HZ1iAHo;}`_5yIk*jK>Nb^GiT^ZDKT`*7;#LFSMd%tZd%n9 zV@?72MtrfE*%k* z<4zTn ziXj{RUlYZC z`s4rlLr)sWIMTrV^e4ID^B#VV#p?FM`sDZc?C`` za3wVYpGz-@MU``&SqGBxW@K2yUS_iPXjbED7tC~xP@#6kJBIx)L`l*Sth*_&i<8?) zB$VQc?reN-aRZihVp9`K--F6To{E9lHDj$f#E4Cn-W&0a&G{y-CiKDLZVt2bWt%H} z{u96JkM%N0C2+lk7_~KRFC?;%n(y8FO4{G4)|`vj$4{IXPgSUv)|&8gw3%QQ)7|m< zg)!jrLD~Bq%Ki?U@Hfr^; zwl9Jg8{GYq{ITJ_DjP5d*qS`J6_=Q3prT5LHHneRgNMnsj#C;Ir`k`SJsnMubfpVw zk#+|(FZOu&khlMF@p=t&q$ic9jVG1Y^Vh};^c0JvzIV95RdT;4ey&eYmwf+w-~JA2 zlRw2CHU&LzZo(C+1}PMlyfJm=a)o24+Dv^xj_qjEU(k)@TuzId{i?Q)b)mfB`P>#? zefKr$9{fTkx1^!oW~7L+Z#01@FdCMUpSa@^i9+~7f!@;hpZ<7G!iyU$A|fePw*BFh zSd7)UIL}s;bK`Khthq2Mtzo%k+E^#*01)m<y_7%p^3mWDi~i{A%OSgD~EsnHyGikKmO4V|BUK`ZXizKb_)WN z)yHqYhh3pKh1FqbODqqAg!k}J?8J}uY+Q?=i9m|Q=z>LvGY_oyCO>74+7uS(fS{$6 za0X%?^+Y`$J%Oj3&St{vInUkd!gb-1I%5-B9rH&<+5}1BZ|3ArXcd@sp$yb5)S&Y} zBr>&?T3D=s^nYb6vlweZNY?{CgldpgZyPrnmB#VRiT+Vp@VNciK;B;=sl^glDJQ}0 zu=0~9>0?nZeW>Ta_ttHLhN)s#v3s0O0eZ9H$iYgz!ktr)iRUkzyF@SQI<4d@QdgXf zU+}rEzTbM|>0>wYP=`dfP#pv9@=$xyq;2viWlbo5BwXkjYFC*< zL9I5w&TDUVXDdTgr>YPU%$OWN#x00QI!5UhBvEza)BO2wFPMN4aFnnH-?3J~I%gqG z^3W=m8I{sac@u(_F1ZBlRp@h^rKqchW?MG- zcJOb1j)^?oY>M^GZ!jzSg+KnxAJWb(4-}ObIk_QBmjw6^sR>fKrj6p%pb~Y<68A-s zX4OzO*udk7@m`z#ENqYo;XZBJi4WR-^T=JXhb4H(c*KrY@j5&v#x$q^8O3ZGqRgV6 zmlYwRME;|6Kolq9J!(ar;E1z28E8^U85s0erQSn=Wh=eSxm7Tob(H}md0*Xhy&o%7 z`i2Mamx0Qbe4v$UebR}odXljWFG34iuC->XeZD2%T5KzH9FJG+84<%WmhRj$K3+q^ zuoSBC9Fi*l9@R7SNpx=sW)vV#B9y)H1e?71<{NK4eIq>`|K?MS_4?D-u#E{YZQk3c z<*L`O9{#)kK|uRUQ02dV@4Mgm=GVUQr(a@j;4`dyqZ}zOoR^0=>5GJLSLr%(xiHSY zUA9JWAd1G=v`cFN>!8(8Fca3vZ1~|pYRpSkDvW@ql*X_(D|`oUMc=%L4u_7xGzH{t z4A6AxGJcB>EMAl~`yvOr?M;o+Yr;p@|gi!k%%Ly zzdj(D*x!&Z8K_eN@{0_M6@AzTpK`%-Y}e-gxt^H}W^DPv1;$6i>$+ z=%^hr5~&z9;|&O6caP?Be z&KI~Te80R`nGjp2sMsR9n~))>;l2vFDbFsEEb*ormIzcdYJ(zqxlFT|(#C7_G5#4p znCWu51-GFjT!4v$E>G&bBe#XCJO}id`d|D^hReHQEc{kkjiOEI0_!k(*p`p{9OPfO zHe>gzH+DA@z=%+wc|K5J2|u+4YKDxTj*&YN>iJXn6h8rbyyJp7Z0xpMDsH88PdH7! zyOpNlzE|=Con_??AAG7fJ(|YV1#3lQ4>osc=%xp)VU6^pc>2;CZ$8Ck-s0OE1~kJP zN!e>%R*m`$3KcT3U4Q>~fBQFoO+2GI`Tn1QIZ%)jnzGTkO`K+MAoaoL!K?=E^q@iD`IKu|%vxhEyYLZvDyJkuiiKTapal!ba{cDG z%Mi>vAmuh42F?HgJ1tb~+_p^`{V4i$w+?8OWf>es}VUt|(-0?2v3d(p@ z(3`?+0}tboig~j`D^}jKNfwv5Jf-ezNiA(9Mb(|2st~3LGk{xmn?s zTUWj|He}T6eGP(Em?9B|#%=M{=Pand6Sf(^9O4Y8T>6KaK2i+EJ&|H-1;FQ6SlT_F z962&F3&$gFMLK@+bX7HPabcoa@-^*%LMzCWM`mA7!1~UoZS8(VLc)0@8s-@PA5-T6US*xF`(2WqO0$jQb!N_-GovD?fYMt+ zNkS0_JwWJ$gd)A9(?ahE2r8%)8=_+!+n{3~MO2yyR+|0X=RWt0lD)tGcYp8tHa_=B zLKBj>*SFSs*Sp@e7UVpE(#8+ixTZyl>hH$jf<^Hr#E^9AsIWvr=n};exgHNYu`5T1 zDD{yd^H^?4GXwFLWgW7=T!~zt$-jk0!i2eWv-}=S^71u|fN89T)BvD2Bs^?*m`?Ag z2Kb1Wu1U0csUT@32F3hbH}7hTTniR1EHCGStTKNgfowh$%dAYHW)e7Bh?0Rv4!{52 zJ8!@B`fHT-&%XfYMHRDuFQD00ijq(`2C|4+(ssA2j*%D@`d$o6;eh@u4Ob_{@;>#X zg)rB;Av`{|A+1nX^2TaC6Pc5hHIi}p)lM)QLnulzhC*m-er~wM!K&mTg3IicRAoLtr3x|w|EsGc|0xWYVvy^B$ zP+SUgh25mq9Q%@;VE zBMxS!dRTcjB_xO|;h-L%2>lF^GK&oGNV!-^Z#{EXW& z%En#1-o1L|1r;aoOw6lNjk_b3v=f8)3#tpe!>IeadVu9n4+mIIEs*2r zVtD^F8eO(E^e@A;ql9K7dKKF8rKJ$|)2H7xQ$^-%ay;1{PjTgcT3At8UcLac;6R1| z2x_3|88ZxvO(`Ax(UA{7kng;4=+LV#{{00`e{t6c-+5pc)eK4o|XFVB@-$-8>`DNYu$(43q%VPrvYlqf=zZu3qb32v@>Xzgqgv zN?O4D!uC_CZG~Z|8ZS|tq}XU$TmqHmne39mA#G$$8{eq*lhbW)TuS=fu8AC7ueygZ?mKoLupX{E>cf1Q@2O(l5JuYMFclbIewrC(+yM@5;RjSMD$L7DRz% zFf!1_bgk41o>DsclOrE0ioGTGK)zzqJGdBHUBPBDq8JL6CABr|beD31evHJO1deDOIkG1i3NVan5*%ho ztaInCogGO-cfi%GB56=8QpaCDtY??Qs8PCf&50A?8Uxw{3j%P!AL2%7STP473t%}! zBx_O-;IV!>IS3#_<#j#9KVZ374DuwXnKBAY(UnLhFq4~?x{&NrUhXPV$}1|$E9%Ry zAehYuGUGAakFr zDn%i4MGS*ba_Atj$;Mt1$GYv=^Cq&34nk%Jc}q6BINl72!d#qm21KY z`A-2gWka-&K?73$gZm6`WU3a_+v6upE}2BjUR6x?%vt0Y`HymotB6)&6;~eO!WDfr*k?U%n&v!S7@)6{eyJ zBIGAIUJS~aL6baJ(5P2$F=*C>v1vtrSav|uj2kZ>0u5Y^56!p>j%GHNQjv)Zk#oEX zztXSBtgNUoOaN$eb2FgQtR*vb%BZ9G(T9is^^RD8*Is!El^Adum6%YQ@H9IfuoZZk zct`Je?yOnUrG8Ps6QV{fR;V_B%9}i%D@#5}P(b=Y)q}{20R-fuY-|Tzhg;~G=XDm) zjv1iS+<2B5EU-_rUo=QgwhuASsr5anvX51hW@C@-;Wl$fXp6L91BoUJ>uqcl>2Rye z+fB1gsJo+$P2_T5Oy@;>a*q$g-?>u)4klHelG8PQIllSbQV~z&z$qKT#&@6wuI)lV z1b~YakeT?vvXBM*H=smrdN;CBk375yDy>%rfK9E+frDVuQgmf%q$?J|nXWMi22#|> zr|1M1K%ilt`iewlN=0Q=d8Jn#0aLqq8FP4nO%5~7KUVy)ECVKZ13ay6CG#o@acGOR zz;_!I=Xz3+odiV=6SOQ#C$oG`F%D8-ARQW50Rz<#13ZF;41#=wD}j-4B(qO~>|iya zMLS+sOC+gy0I$5mRcyCUz)Uue;Y#u^Sx5n~dE9o3-iBp^dd5~`X_(D+m+^_?+J31F zWXD(IT1ehHjjF2+{js*;wnSa|54|sS0eH2Q@>2ziyW&7$`jOpuxx2+k{uqg?qOu-V z5NPweQm@M4#J2Ho$zT@o;$|V&y^#<#Eq-AI8UzEF!1f1)hTNt_G}^j2&T5{?qB%is zGiSh`0Tkv7N-vZHRbZgXimEEFGFo0yPF)&>_5?Ge%1+a!O*&~F1U2x^+y8v+HMB7x z21)x^Q6O@FVh=D2E7@XCisSm>`n|NAENvbK;>0X$Rp-a4HES@ zGNFj$(bwW-6z0|Bx$f!Nrd^fwc#TG+8Wn5=oQOb!-?HHvS7<`qSaLy@7te~}#ImOWy5*s7qQx9da4nP3OV9y}y< zm^O0YN>`0R&o^nJdIi&nbqaNm18#x8Fb%_Cri#jV)isqB#5ydMEPrr|*;J_0Mt^$j z*ijI}`|rK`4)y7weQuIo4_;)=6TfW*bZn+qkUhi6AqN ztK15A7QZ{820}F#MKOn^(n(M#RR}?rqgrYQEX|)^bfoaMdYkz)&JvTTJ9g{8wNWn4 zfXNkV;L9Kyv}V#I7-ay5T*76tmG{hN_$mZ6UC(WwZq{JQD~U()dS1+~*#^OQ?eUh} z+&D751k{Y9+(|dTQPxT5<;U0RIsIxrM_jX3GY*%ni{mf_GDUCdofrU{`^1AYk@Xc( z?-Zj$b`vtVr(RYzeVSFEjo@#{ISUq6DC<;JRM%Iz%7&Oi#VFtn_%?gCn;E(*@6?H7 zN0o9u_}4q{{1bej!LOt;S>r9Xnp`!gRxxv0O#9FP*=jsbrb#-cxLBg4A%k6EwwRpW zD3|he9$jI(k$i^eCZHgvX$RHFWkOAm=!wQ0oG8?}wwCc0|K_z<3bO6U$}PSYU&>Al z>E4=XkwODi+pSZqx+Le{{wq^lC@4crawPy~;%aYZ-b1R`2^fW+Uqf#sSY23nqyR4IXL`9ctY0hia%gk$PI zGn5U(dA%)Au}G#sHW6BF>QpLF;uwj>o0mx>BZgH~R#jIfszQ~n%C87lRd@?Cu@)RO zJ+)agN>80Ue(d9qJ|x``#@_g+5H)~W$1mWYA7Yf{Ug8*IM~E{(ZRq@f)HLIm27|&O z;egwUFpB{yF!h;Zh==5^sH_Wfq(Mf!?Faks>e1FaeMj zw=b3^r?G;ReOPV*s3ouvOeO&=#3k_*5E^Fe9Hy(*DZ=wb2eY~B zkRxZptn~#3NS%?PR*kyQ#iLPvPjDrE+3%2MpdJ(TESzRZ#;oJ2Le*ZCUm2ys2U%xX zs{pqFtIZm9>eJ)LkACto_W9SlZ;4(rud)7sI09)kfYsWXjfxxt;WqqJxedK+Xo7L0 zm1*eP$U^;yV7<_7&@520>Bi&LRmbjSA)5_R5yT^{dy_isNi4HNE*>i&=f+A94+J?o~cl*g!% zIhCk)*C{pV4X9xgg@48xD30X_yxiS$E_I6n2D&A3dG!SasCvklj)oclk880G8ZH%M z5fB`fb~&`ua!q>a@?5Ws-k8Xs+Tbko8w9nHqedHR5HkvA$~5F;@M!-M9`8u1wx5)e4@0n`E9!E3LArJqM%_SEBS&9UK^d$(^3 zZi{NFwKfQBWEc@S6O&i~AHqW97@+}3Hf)sF)AeXV6i?=vj!3u&Z`dit#CDFeg`qoA zNDFt|k+|Jf@)O>;BBHvLg&o=_@JowqP7#?hN!lcGy#6NEpx>{5%~3x2B85zww!Z=i zF$t$B6+cNb^`K@{d_ET8!RN!M=p0^AasKc&DMDoM{-Io$GAnkZtOOua(R4;BfW8K= z!5j%bBG6L$M8bD|PE)T%P-o0JllzxTGg8755#cSXQq#qX{T~b0!n?|o-#!NT6 z5neN2uf6h2Rdr3ZtI6QUYJN@XcNG~}WuY2ub7qY@ed^T76Ee#Ohly)21&7dbyg)Nr zjkSPWyAM^l>QMk1?VDOjY%u9esW_>C(ViLaIdmvfF)*KyY=K=Y`y z8s&T&m%uEtjXpRfigKTvLyue>PDgZ<%t<($85sZ;Am0O_MHP6MM=q0l38zWYIL1WHPAFAy1~7TC?dRFHWIi%z#uOl=RxcshOtYg;0{(2 zrgkW`g`Svl@Y`IzS=HK39BMuunoJD`b0ke>vz`br#s^NLfjX76b~f4RcD1Iy+OcY1 zmqcA#4urRBPuH0NJF7TDXq-|5{>JO%QF?}W^fSmQ0UE$z877lT^$8^n_9iYXdLZ=93$MR2qB_J&13bF`q zJ$bMc-hyIIny-!o8%sfUdy>gUZG*Ujbp)6NsK90?qFKv-YdW|UD1S_go({sXRODeYiHv|MN> zzG+Va;jN5<#soHK1*m8I@+<+is+!sw-WRzVR~@UVuELK9aH*IL#?3!7g7Eg~v7;YT z)qJ3;CTSXoP`S=y05>)u?Ys=!%rv!J$XY-@RYEtJMtNsUF}4Yco5BGMCHGb8@e2IB zP*2xgWrGTFFdU&D+c>5kf-wgVbfEGOY+#EF2wa*lLUgGDQc#)V$L_-EZ>13t4U_4t zXgzxv$@cA}$j4I>?c?eSz|N$jkOevG$>ytt!ChVcq$-g&eG>xAsFUR|dh4dR1TTQo z@C(&9zIp^W4ex|6J_RAIgS5|Nv3UExnzgP(i69O3@k6Yi?eMj!sNr4fA+4t~RWn1Pna*oQ37{=a2g0%$d`tK0SGiJMY;{lgl)Wm_I;d=>RZWV~KiC~sXDsL3X z>IEJ;63J8_F*PF}H{a}Fz&r&t2w$y}-{s2Aij28*c@)b?H<+ZqKfoV!?i1WYbcjh!^IYF&sQ~;R3 zw1eauWav*G;6SWV)H}3)gpo|Ot0AeOZ9oOk0iXh$M&tg-pwxMDLmLksMDwkGKiMUK z242sY!D>X?Ike^VG)h|RcZlkLm8{Swn)!dP^jbi7u zpuM9_tB>wyA`?KcV>`sO8EC~aU1X$Ka!4d zH`e#zl@L%R*mTtVug!CbZX=11Of<1AXsr*|I)K?+r_Q2xj$MU(yo} z%n-+H1*2(a%`8?gn(D9fuOcYB%4@}$$rd~+5v*lB(43r0$?_A;2Ml$WMv7+vatZ8{ z(99VrF4ZtPnGO`vK2>D_M(lJY0h7-Pv?i=EF`%CHolPYqkT6<{>183w1_LHd9u(A~ zI1uIm2AF{oi(<8laHASbaXRoAkj*Sa z3r;R1NU)58RD1133p6Xw(6Y%1=jOz%H()6Ssgtz`C`84y2@iC|ylku^IChMa z%IwlSvz+?&5^etsSjVGi#S`DKA+{0SAf1P7qnjsx1{D+zK&b}JISQn8sV=*M{`t;?N?mHm!!rr>d%^s`1xfeTijGojiH`D1d+lwtHtXqi2Wy z@sj8@ETh|68nO|;hB(>?HnU7k6}ki|LlLb_vvH8|hzg5o!~v;?;XPufgNl^+2CqZn z!8V{a#T8yG{3k?1U(RE*U3%5qrckWt6^LLKPm(_gGO!OR32FhHoURw9L&x?VflkaI zbyhg*V&x?XLm9*P`>yFi%F6#>T#6b?HgR+rI8YAQOz9?y;1QBD=sOeQTuy2?8V6E$ zs0$j^gTuIufi+`8q7^PE zRtjRY94dOMr6A3Bh-d?$Rn=D4)Gu<28!cM0Xfbb#$m`Vm)m015e)Hw$Ul8C%ciwta1AKf<6Q{PN_G?I)5*@6dQ97wcu%RjP|0JRze{9WJZ zP+8g90%F$u0H{$ek#-_Dcks+;9wAL!k&%XNf$l;7p%XT8qTXaA4b%4N(*{b%)KY`h zd4oMLM`FrZjZtD8Gl5XlDtGW0(7~cwY_nwXqQnxn*eyz}U0k!Mx@N(-vtNDn#TTD_ z_UXwJ#|5nsp`iev(;=W@`4AY1Ghe}X4+>Ebg>X}l>(!@`KpX=G zgY9JOsL`X`IDcXT@{jeb5v41}&G*aws?5sj>YCccwYbh=x3tlcWlNVVS{CN=*hj3vJBoC#DhVkE9aKw)+K1UGItH?+ZjY#e=HxwA0gY|;kqWe*q~Gg4WlQBW};THQ5&v5w@$$B8Ox`QLA*HtOG6@^T?XV| zD;v4Ia6#`|f+Y@GB1e=f9#ssGgVqrxDiIZeHC%`mPo)_Nkl-(lE?Qc*%q@*9Te{R+ z5?izwf2v*76KmAcUU=D@&qkU{boaZ-9uE7c$bqoYR|$2y0pdcD zO~2PK%~-)7*k_Vy6e|@ZJ@ZkOPnSU^Zf$&p2zK}l1V?tM`*LR~K$p-K5!_sJJ<3O} zXE?9G?{n*&q@w|YXpY)2E;Q*l4X8sSFq^J=Xl?+vtEy{i6yw~Iw57|I)zvMjt8+`! zmn>bnWEni#V*k8@(Bht8%`mnHbnmykz+jZz|=fM;@qTp#+r zYYx!@QxV7FV#)|Jq-e#y7z2U=dg52Sjv0Dh<$6j+VLkJ*S-e{cmZAOEBT9d)dt4Q9 z4-cht3cu~v1M;O?RK`I(&>i-Z53gIMxfAA+O>@KQ!6p63q8^Ebshqg@2)+??@zz94 zRdptwBgOhn?hYesK{eSBv?%F>^7!tIa^?GBZl|DyjaEUFicKg2+>w&T(xIa;VynYl z0qO=cK#^i7Z~}IUE?ri))T_%{#?QpQR%{$-+IH8 zA#y0nS14_%b|kT4keX&T>X20{>DOT>Fdn@M*-685Dv>6^%88Z}_XE8!gkzM28Nv^A zuZ;gm6VBr$?dEqguqBV;h3R<7@{(W_T(?16(5+*FT=146C($L#C}R@?bf+=UK;2|D zFU6Vn>=Ezj_Xzd$dSvp+_4)N*T=!JIkiHi7lFj_?VQ4q3lW9JsaMv~G5>Dg+<>WzP zjoLK;!&vSS2PkPom<7y63wpP6Jxy!R5(YPUtOR8!^cbv)s%~vfRwCMIIAQP*+bJ-b zmA%9|rr9ACW}0zOfdJ@8NI-=p_{`E}@w(75R~NyR+%kV@=%PC}`|LO1g)^Uhc1kso zJm}qb)N1&rIzTVNlj@8r_bRZA2@`|DRW2lIL8Yrw67YN0jA;R%4ZR@7RJ@N&Gjzz1 zL1?T*{V;I_H>dh2RV8fq?mX=3hXIfQcMSdLm0|k@x_LY&-aaa4Vy%@yY_Ai#G#D>y zs0j!_1mFS0E=TA(K zH>y^PMlgyfusx|1K4E&2O~7ryae{GfabyW8sIJlSWh++HEni+&w`@5-Evrkvc!50h z%@<#N=}!Bnroxn3e6vLK#_O*idP#Tz$2rKpz=!t-@^|qHn&n~jEauVJJD#I)EkTAr zJrB9Src}i^pf}a)Fzf@ULw{|c0pICGjEi8NY`spZ?v;zkGf|o|9TJ!*uDNH{-y=yHn?EZFsgaokP#Bjaz7r87)PCElmHvIe-lXsHFY zy5+9Ut?-wJR=VX;ELJz|!o~CFu$0&z{0K+-So+cTG)h84=+Hl2L56K=gvaOz?c2L& zHw4f<+f^TJSi5G;$`yc*MKv|*I?PwQ92F|bNQlNa~j1YyC)G?HpAT+ZSBen=Y^{ieeOcvoabD#z3mV_2!!q+_f9>|~v&f(`}$#s~n zQB|Ms3R3h_K_WkeI;;Q#HU#D)5HNcw^5Ik6(|X8a__0XbY>W>a*SEojkp#YE%pPA` zX(&z5Ur1Xllx9!jtt8x%7(zd(kywwlt_gS$wFY7ANUT~{PKf<4mUI>LL77kpO*eSh zFirSUA6f5#)~d>*IUw+uDG{pWQ{V-!&R?FgVkKVXRz_B=ThW1f`d=3sYH`aI&w2_ zk*RDFm1Q~Hc_r$N3`!-nis(lmw;~~#R}r4VJxS>*BUOe9;o(?nUb4-E!reO69!$@F z@aHO5RfFFxUhedewCKbUy=}Cy2$G;53Q(C zVoNHdgitzFHAhItzgkh(=GzJ{hzCRDBOr$$?qF6+RXELLs|3ApSXC=$DU+7Ex+cr( zR?228SMj!b)oOn9FQ$Kc;rut}u-X^y^c||4fO;Q(`2KrH6(svL{y|vp$tT!{{xCF= zT6*`w6Bz@sX64E{x8$#js;et1XsyphqN*8U^^fR~(;~MDS4zyYhO!&UO1TPM zFu@BSBb}$JXpufM(V0fI@&tzSt+9|CQ5T>Sdh>fWKvgSCc zyIwK=jJJH+RQch8`~+Wsi4aR-hA5QRyxfKgrDCYC5RU_2HcJ=X06gLj=I)MBc!u#C;D&=~IMLjUJDIK;k&n z%vl&nia7WNilrutmn|jQEnl%5>#SV0YW1p>Zgm6;`QK&Aug;2j_?&)tjJ}cjt?vCv z80bx_nk-iVB@RA*fLyib0Stt40SPeD1xD$OWUZysVGSfnx)9<|vC>HuE-}#3mD)%W zmK%b7^ZKOpg>dfe_3^Qj-#bKR{<-(I+I@!Ywu;2fa6A?{H7 zlAGRt|2@=;Z@l)}p;xRI{><~=rKv$TlVu{HVOjE$4?SRW(cUm^8BuP;0cOcjxCFp#OXb3`&y~{NG z6@p#&1jA}qD8|V!8uu)~2{DP+Hv$dg`ldoYQH*(gG6*g>6kkW}ULlJFsKU>SS)_y$ zz-9GBn1!r<6_M(ZkzmyE9jPBxw|X`uQ*WAa*1aHcy*0s*B!`^HND#p2BQr%=sXqm) z+KPmUTPqv&>u+->!&z<1SR*AYTM5)lW;saTys1s}?g1{cA-dfDWXglF5^e7P2u% zK%TM?1P~a{Tam8hBRj22to7Gj{rz{}T|6(02Q8Guc;p~=#6R2(PkQU^x9}t!2@YJ+ zEFC*jxuhhtbNlwKgt+yLpkS(H+F)1}a1QDvNu|X}m6G3UWvJ2NLJu+(t|Yxy|9-A- zxKHmam{!r@U;x=FTOf-!Vj3{Pp;A*)x>COfF(_$Rl%r@R#D(*jze$n3dL??Nv0H$; z@lLis{L;_6Gu#)i^819@2GKiewi52+E5%fw5$J+i7M71^gNLB2175~EHK9~ikh3^P zpfgzK-_gLbP)n0o65q7mSYu~g7_z}LZBoLwT#MhyTF8@ZaVUHvxvW#CE}e36I^>#b zVJvkkILSdu5-69kw332O1-dLvo?t9`dwAB;Wh>7IQ~jdK$MSys~OovoYM?;_H5rGnpL zL*}Ag=h&1b#JII+)uSaVLFq~LIP9{;@Br5*OSmCW5DPa%um}y(t~pTt>SJhG3buj* zlJ-_XFGxwugoc0zK1K=mxiir>1?51$ey)E6qR{pC`$Y&i?oP$QzBrguek$OfP+H+y zi5@Y$sym-9j-hNqp;MaB0=A-1q75EE@FW7i-SU!#_hQ65P04r+2qGkBDkivt&2W?5 z`PHQr36u~$w~K-A_}+8c=Wy|iD5z(N@`*haVDh3-=z(l8!ZZZj1VJUJii&EyYB6wp zc^!~$^=h})t#|9Z^`Q;nAHR3RK>vJ0iYH6dCi6q#GX8bNX{T)B9nf0err~gxbH9 zW?^*GUruyaKw(r4)oO90oZW=Tv9Bx(Sd4RKG&N=eFP_I*>dY8ef| z&t#UICXz3u6Zx9+uGxOO(85HfBA^a9s*JiF!Ltq)V0S_TZNxz2Km(o4pzwG@=q!yY zR;m)l!%Rsl!Qj=_E++WFJP6vYS-T!r+OTo`Mz_J=IPAyooxWBF{q*V2KBK*) zIfx@4exRxEH-y4pdRezu*fjR!pH zo(PA6P%kI+);BxIOO~AQqXCh^fdeiTh6faS101#rvulMI7$7}gDG?-rH<3BIN0p=0 zghi2xh43S4G!@lyC5;AhAqp!=EN<6_5dPyvzuKA3hz6n=Xkz#b^SG9cl1>EBlY+l9 zgi%ki5FAtHIYG9?1&QHBBR~>k$4#O{qC&!lW+6O5)lgjpy-KjFTfTD5>a}ZDlTg;L z-?(AJ#!VYHZR+>K_dk69?RVc{AI$UBm&7|9NuBhMP!22Hz5S+^Bfg4#$WR*0m&{?` zL(F&WVn%W+HwN(}vEs|2))%32E%z5(qi!wBePH#<*v`wcGH`e?t*?>(@N66jt!j{= z?hIMBw|K|yl%C-p0R_rrVyY6AVjq)K>eDDKsXU_EVYJ#W@O!0TSgj-o6E^!L`lpcc z2C!r;RLGQDVb&lkq3JjR_Y?i1VyIl7n1BUO14O*>5u~Xke$g;pl-P<#QA&3*>QLg6 zgxdJ9c&sR)K1y&ho~$G{V)v5P@oNL7js;^f{L0<(J0hQE0q`i3W|E`YTHwnU9Rd0$ znf8{f%gQEGbZMo9_&wx80CTWkRh63OOK~Vl*)?RQ^&4a{-Z0tbn|}P^2V4q^ojv;v z1nlPq0HqsJUtQz-&=Dx^UVX*A*z$RD6kUvDTkwJV$x+5gY}6#b06GeyS~OmaBGbE_ z&4w&DEyPOr>n4NH1A*jk;SU0dS-t+e-WV;_^bmO__<|Hw|BgvEn1Q&wOU?uU$Pncq z_#v9X^@+-xJQ-?0VWBybOvT3G_@K;zd~zO&LIR@epV?0_*0_&8RKEapN-gW0^z30u zdo;}va!F7&iQ`p+OB1)3$Jd4YG$YuE(X-pgP>cl<_?UoBFcQrIhh`r88m_czS7?HO zDGEZN6z@tlZ`m~pmY}{Jq6!MvQgtgH7RHDs6D%z3_~IqXPIW?jYu9bq;BE9a`CCGF zM`a}U-IW(FoI8K+8!1#w+{LKTF;Y~K8tbN6RjbL?_i5$+V~=r=kP{VbpjEAlbdVn7`Qt0{@5O=VxaNQfk1K2nj7z(+5`?|=0GUOft&Uinl(;IW{pN%rt$ zr|$Oac#kx^3G>K4={S>JX1_Brz$;8Oa}0EYvKh2Opu@)?C`30ff}y+t*@b`=@f=`6 z)Xdl@l%EZ8gg?=HlCK7hKh2?7dWt{|iE{M?&xw6f$oeh0u!?=S+QwdiV4VPa%{VW7 zy^X2^DdbFod}K3dTJ~PU5_N1%=oYO-eWx;)@Mq1yQN^RjfgwtaAeuF6?mPq!)m7EW z+(c=+Cc2ie=WU8@-m>}bEq8C3^wW<&Dmi_7?t&=TuW8#Nk%S{cBuS&`utfO*1z|t} z-8ZgeGcEh}?53F7DWMk&;OXAdzFnriB7hH~Xg+fk5E0rs!w`}yxkeBjg3q7?nlB50 z0Ew6gJ|klTia-Ug+CX8drS6S{9Y|P~nLtc%-mc&dA#E87lz@|%C*eB0W1WHYhUw_o z8x>F0O#q29$()hfIFUScxvGqddcVUR#~nvBoR~lug_+JWD=G zGbh42iDsEMH*2Q%rZ+cZ-v8ID*(S2*zQ9`CFHk{9xj@Q9nAD=4oPlh&`<0HybP|4(pZbBCH#3*Y-4d>>`;HZ?Y;Q=PoOA&7XF!S>gJ zc~b#;Nxw9NTjD)@|FjZS#Ms{_%(JzrT1v+_@ULq$`QQPMru^?jLBa+*<%Z_F-%E zZM&NprH$)W!x<6@(Zkf#R5C;(i)o>w$Ub4fiQ^|28B4kv zk!(%j7Xk$oK7FHoa2#$6kwuh8c<#Z1WT=RW;vP+?SQQANzQsz&zmQ}03+qC*PlgH) z9t5{LBsAC!aYG{ziEfxb)F0*#iHaHV2K$5fTZQs526F>~L^WJ~7Bspn2Wm%UltcT` zxQZq!fT8)=9Hj!-gwGs9)RkNxfWaP)=3$oqvk`}-YFfj_-g7?UH%G9bEx-Y|vq_?5 zCYej*Y+Kg<=b#Sg+Ks3P#e$bvX+?LJ8n{?B@Z?f@9e1e&#>*-Ria6Qww{P=*PW$1!=?3P1Cr=*m!G9rs5b$0ufLF=H^?7?ZH6=; z4AMf?n~qDkVUgiOk*xD2a6+mB!NdW?U$d9%6@`_`PXT1)@lfE(NRh+@s|_XG?zflT zm=_vVC-(9grt~L&&Xuk?ui?9(smat80jP~G(az6y;Zv54T2-1 zO^~(%w?KL56;?D94j!a?SHO+2fukWlqL;XEVI_p1x`VO+OT0(lBSpY(bYkQIKgSqL0Mm zA18Gs@_C7Si+bqm<64xvm`b+rhDIfp@rGZ6Oaxoe_vcOh6y67uD%~KeF2O}i<@&~y zzJQc|em0;+$x$>2t$jQz1-2q+ZAjT_1bPJIz-9-+p?9lR3&(M*`kTXA&B|iQrZ@c? z&tjXZ*X(L|CWs7T;ce_60J;+j0qzb~9bQbe7Bb7=%+C;7h$HFCqar5~YT|G1f(3LB ziG)xUG&ok{QyW3*oA2Iwx7+UD3i zkhkbt#9XND0h|+a;rcZW!jm3%0u&m|WIO#zJW8~=ax?)jnYsF<3#xvjVbgJKzAC==2eX?3gTAM zP)cHC)iBqyXmJ>7XQ7Ao7I{QMOomV0)U>I0)32CLTifi;le^`LTOo64TLr8j(GbUK zDH4Mgs5+PQ5ebIs)AMYB5iJ^W4%S#ElPv=|meJ?UT)l1shLhR0x$P-C?zwm8&e+dC z{sfW-%HIT($8vN-K#71vkr*FSB(tUFZFLeMG5+!Di;`8ir<)u^HwKHbM-o4=7~8gi zV%E2!`bN?$Fc0iteUzyy#N|$v<*X|bBr%vlSq{dj@t}b)M9O0Lmi2;ll8xqHwi(Zi z27Y(c!=hqwt~3%Jrl!IoWnFD(Q2TgzBg&2#0hu*ogd6FN2#s__-f&DhG~MWZsxK0l zd0C&RDsspSNZ{_-A~JFzwdnE^4T*&ar3r-09VE?WJ&+Jlam548^RqT2`Q76!hrUih@ZhV z)G1esB`g_lU0}oZN;N|Vrv;)Id7JCopm(2MG;T#Ys1n9bd^8ZS!_5q7h`liWukbn$ z{16N_%(7MyK!#m$_C9h{{m2kjYfOYJ8fMLApyVK?69}aJ{5#>Q=s=pul)zHJiMgaN zmU0Eupx-XjoGdsVn-G_wPSXKtCNK` z+U2WC?u@0Z29ta7h#CW>5{y<>DYH*AXR@HCyu2E65GKRW;kpf*Hs6h<$X7dd-h2Q3 z_tpM4Sxb2f1`4=wR+X{=L^!AuaPFcA|HZaWxtF9ce}CbH=bwA_>8C-678tdi0}|?< zZDcN1b*;g@mSZcX4r(gVmT^X9jxv`bqo$=hPVk!#-p^zaM17o>?t<0?$@YEaSp4fYBRz z!xYSfLY=p9FZ@pXi4Q)B9OmJN_bC*bt?u5k#Q_bkmf$%lq!pzr?j7>oO}ko=a55*? zMCqzYLd3#WKsrg7l*K@8toCw!LwynmBk&~BOmB)Zj7RGocOq*MGYg?^+>odo$_@96 zuKWi1)Y@Vh)p zLyUC`^4i6;q2e*9_S=?W82od zH#04@ehnA5nbFlKj${^!f%p}xyhLws@xWA@G8Q=AYOhA>l_ZU&b_sDX=sQK|xhHyO z;YqZ>jl>{GM!*=}z%;63PFxKi?iFQ#ulQ8O?8%Ie$>j5n;W-#xJZ7{j4#6R(jgX=Z zcu0a9*uZk5S&Jtj{|d8~%mpSSVPUHdp6v^1gBr=hR(^|g!x#7oe1->+kswL^degsk zprRgkx(>)L8xa+8r$DU4@pOxP$N<&EqGw>Wac>ZzRJ4-6SYKF+y{8fR<_cG+$RhH| zo7TI{89399d(4;I1L2>4az93JChyxO;-1J+7|5DfCr=)8AIAcT(%bIMKS5>y2nl>F zW7XP$$2k}UumD#ewLt6aHl}Pqvbn-7zbb(2m6Z@s!M;%GEjV;PIRge>S*m#SXejui z(C~CY3t32#zz=oB~;Jyl{J35pykcE~Rpq z?o~_LysC#i2=@e5a#+c?p`@j`*e)3E85Ixm@!`#uj2Q5xVlI{B{U0)N)kE zkGJz6Tz9h>{o>h(mq_=Dl41z@s*8z@wm_kWq&h z*ShNetTZI38cT(7vSosFDWEezg2Ri%HNZX$iV4O;5jh(0K3Fd%C*qxUykLai|61ZB zY@ler07eM$$(cqaM*qodMD3=?I#wUp%S1Ry<)IsP1v1eg06}PeD~yB287rW>F*7B) z9iqJh{b1JRAg>74S82Plf}hN!;1_S2;IcyKhW|s%V=aHuI7T!f|GV4}Zrjy*S-29^ zpkyJvz((|AFixvy$1@!4kN3v@r&-3*Uvf%83f>_5 zsSp4`iWyW1j1M8=z=s4Pvc*%hre%ewkDC)MeY9g1=^O-moNd<}z=+?J;2exT!a6r% z8~t_10+I<GCrlyy=pzby94i!tpeu|QtyLim-m6nRRat=>v5r?DLNqP}le#05 z#`Cg{LC8dA8sQHY$0RZjw$4-2y*z*dHBX zk&HKxbcP?Z{Q}0&W;32u(f;?rCF>c zcE(D6`<_8+k~=}$VkMDDu(mc0I*x^fDtTu~SE2sm(iK=~-8xtb+zD^GZ`W=))84(| zpMG>d#PBAliVN;s3P$?+OZWLm(*QEP%X$K=6sXJ?!7(Wepq$~uBwYd3zWe@r??s`> zvSVO5y7VW6UKYk>kq;brn45{4lyx1y`0O+(3bH~g+LWZk z-C{T5Ao4(=zNem~nliQm!u@`Dz@S0Afi2ato90hl&DGT`w=~=*m7oMNW$g9koMpO} zAzMY&SaFK_cPPH2z7yC2(*?>Fe?Sb!0Fu*COtBy+GO1x;H-KGnF~DIAdjiLM6Wt_# zVt7(XoTnl(VLa}}8sRaGEE19mAw`5+cnVx!*9(zox+q2gi7u{lrnF`1iCB8#Bm+Ly zf-^H(cBw_a9ud$Z{CPJv!JW*fE6k29D86Wvs0V=c03J=gE*KOsy7kC z(1ggqvE!K(ojTQ|wF{}EYM0c3{M5Nu5w#uv+Pw?+dT7tS{SAHqOMLhJ58tYfb^fgT zChse%-Y-s{IsNGg$v838C+a=E_wJjDgXnBg2ikNmhJvElzfa3`cfkjuwB4-LQ*^UP zSj*g!ztrMll?%n#TEY@Q514j|1ZfoW?2k0!$A|by2h6FbOFU#yp&<=%S@dS?CI8|umR)7yEF;&> zNLt?I+@-6hR96YzoI!=*bS+ukua*oRFxj8q2CH?n{-Y2({bKr$M8zR+VVWn<0)7#J zL`5)$Xh6J69AGjiK0xByyLaEd{mp+2Kn4{Rsq4HE>_GN2S~~$%A)B#7)KCWPEcber zIQAEwWm6cul6&lWxIjjCl)Sc!#kHaeRVQP0i))$r{e!lKA!-5x-eqBt+po542edX; zbx*2sxkcWv5U(k9Phnz^Ul=7%;ZVLhi{J{Vbk(_GA&aX)6==S(Id2mtP2>h7vfjzA zB%7=#;lSic+OgzK_#?R8l)eN|P>CK1HfJj$(&PkWG(vh7Kn%^ASUhx^nPTZEj>V=} z6QYOvhXH7ZuMpUv#c%f7E$&w2(k5iMNhJp15F!x50#qo< z!p*#j>lswR9EarvCC%U@q#>GGyr3}Sf*fvec+g;P&=v5Rfy03>R7nkC_H6@F^V5u9Qope?i;OtOsriD|I>Hegu7O*EDJOX) zuvFk(oJ32=q5ge25(+9N@GXIO1wygwIyeBtL<)r%-f!EJ{MFIAjnrG}HX1;rK1Vi) zw28^=Y3ejCSWwB}!O~?x8*B3xp+itcV4{Z~d34le#`b*B)R$}!?n1gw2?vj}Y5XJh zCEAQOR3QB<F(VW!*oTo`ao)F_zS5AnP{z&e(-nb2WJP(eW~23 zxHMc3l;>z_u_#u5WQ_D8E4iWJ!9x>>DQNeSu2O~S)J=3n{s_t|3xjT4L;P|AVUR)E z66(sb#FSQLh_RDi~AqBI5*?%TWPq22cdMAPQYZo}2m z%`B($Xv%i=hKYi6=D68c(;W^_VbWF;j15Yccv>{jNRQNo;04!73=PBF4NDAfC=!Xt zCul*)9P7rVnvEuTC8-K`Wm6JUQ}Iy{j5jrctz21}dSpBagurX1%%-R#Wto+@%*B3M z5?222uo4IZh#>?oFi1fxGpQJkwNNz-_lhotUVT#?vcs7!5$*z0C4zIcaloK_iQ9tB znkY+wD#X-M5`!y*+5;vqm!gR0LF zkL4-6X%{BiZfxy3y2ChA9c1m2+FIJfZs8RR=8~v_f{WKu!i&icqz<+wEq{4p!0s9D+T8dd>an;OOv$YT@plC&+ z6Y0oCM7js}?AiP9Bac0P;6SG8sqZe5j?SI;&Sjqkr(+#V1Lxz|{qPkJJ;)pny+p*E-2FA%nC6zvj9>@~DyVdt_cO$$YdQqukd9;= zs@SL^kzqf%kQ)&Ji6@4~w6hyX?ux=AN6>3xNXtP^j2-L7r>X2^+-0&?idC>qlWA-u zo*ukmFul8}sq~upGSpe)uhmW4(Mn6g5R_HWA(D+2_IAx( z(_+$rb@a}tHB+(GO-VlzE)QX?5Qa+_djW6^&brCovvoEnH=%ByM?FU6Twtwm*qw4#A%3&P#QkH}t6_&-D-0o}zA z;m$wne{aZBOi3SRaPdcz-YQ4&7oRO5CZA!#4wi9q1(XIJb79` zJoyk%j=u!olq|1;;ce=PkR8O{LnRh0J7we$MAM=NsXV683}&E*3JYAJ zeuz5u=4|)Lc>CNV{^Q{%4yM3eV7&_q&YhA*RH%RGQqq$vga0I;V7D0<&YO9=?8ePWj3@iq*MW-+ zRx(TsO7J4CNd}hdr`TAKmmY8!|I!sw+`|b<|}r6!nBgZbbtwvVH>= z_FM1948=&GJb<3Ft#~JmES)O~qNFYpXyd&W5%$!m4|dDZ>Je)!Rd@5c2dxGSJbMCDFbrW>dDz!iv))xNc4Q zG)76@*CdJiXQx9DPvF7JvvXEyv9|}WQ)vvJftp$bJSbz4=CX`{pJyp-=1ez(h^8Dy z(~%)nYdnIj{V_3kJu(&1QXN7!Dlsw&@))fiRg+>`bM&aFgvACDP9`TxW8~*)7|fgD z&-7>cv;A2O>1fWBj7p^ec5~CN;_)!Ek<%b20UJdShHhXwjV!8T{O$UlAPtd)x*ySA zlRa%%#v?o!l*M)=3UBjhiTK>|hHJ;SoGL4kP7cot8u%%+9GjBVd@k$VqS+ri00NDX z7UVQE7wtMA^6U)#WMaVrN-UC^nmi;m+zfLmNY0%PyNfhNF%s@+vp7O1Lg5W^+7kz# zd@8I6Nqjul?`v2L`51MvMu<-xKk$oV3n+$9Nraim4oH1#w6>$YIKHS>u9T7jzAaMXQgBDFG4A zyy7(LB^nY81NA4S2ed`$6hdP~4^Iv;${*xc>#7m~cMUB`$5cEYP_YFTm*n@c!^aWdJv@q|;#fDI)n77b}Zq0IHc zhiPi@>ci0k2~q4`r%tbV6YhjF!BA6>P)xCa&CPH#Q)Hak-kcD7_We0gI1(NPZoMa? zF3vl-)SH+>7K8B^(U5}8P@>>FE_JmjW4cP#m`sJj zByCZDW0U}Bnd?_f1?2=vW(~S2aBY}` zcK(QB*d}UX4sYO78ufwEr6gXro`%WxdxYUtWj*rf;|C5t_0%&FP@;Dss>J2Kj%qH! zooR9U)MsFLUx~=m%T9@Z58N_$N$(`v~L15;D1a{H^|$2va|9^?yk0 zzIaKEfFk|j1@mRC)pVQ*tITzC+}sqlsmz`0&GYA`sPx8Qe@#*(SgS0loFcqJ5n`^vRujvi@>6<( zIM|qpP`aaQf0gy`tsqta3`#9}_qsaGW%iqzUV^p=-SEqe0D00BS>6WZ9Yu$!jsO?>c9%9|0-LVn=^ji}j8)=JADY8Jty^6};Xp7BamV^y)r-vUk z8$JC@1Tl;|KMqMCQBRscDPk1&PHH`t(SaYZsu5L;uskD=FTMCIfe(10QdnUAfd}uu zkE3?mp)H`@ElsV^rmV|p3XjrIf}3gg+Px`R#w(~|r41P+C}AjXTw-jt`tC|eLUQ9E zhv@ib(yIbci0&)%!0zrYe@5EOS zSJ5OGMX}I4rzuqtgXIhIt|aJnr$5pa8(j{1>SaM$uukMw8;sNCUF9i)93Dmc{w4)H zM|z^2e{%|aZL_2g*}ztd?4a7Bfu;3-2;@6;mm3L6h_5gkp%f`nHB4?&H4K!{G^&xd ztMH>OTX*cZ5AJWz{=JVp@;H9<^wZD$5xEkD@VRs6NlbzfpPx}`I&p%DRNUwzclZyq z9X|$?4un_HH>TERGcDGt{B7R;56nn1bxjS^w zzANJ^Xb-ngigKla3vPd)SO z^WKHj^T70PzII>vU-UmCM>_S{r^inmWdc7bE@KQ8+2-pkSbF6ZrbM27hCcp5`d75C zq+YsL`ZDkygUCTyEI~WtSggk?7iYnpNil$iA*?cnOodRTY7I?{!T^m|jSSb|nfJ(p z5=Oy>O1w#asXrMK7BivJy(?`7>n6!ab2u@InRo&gE-YW@mB%cuE}ZWcG^Gfi$5)#< z3sRUB?G#!j9N?Cy1-zuGQ1RyfiFSw~KJz8=lX}BRz-QEw3M}c>6T~`)aj1xaet`lo zOZiGbPx>;~tRZ-wWY#1VwQ{@Ga)*M3QA3S8=>k+t~L zher+{hOHHlz*=l>WYU{a@2632vf4uO7#dfgbH+oE$FS9Yt<+{K>Szp$UlKeQk74S~ zpkO7xz+>>lLx0m7oHQ{;0Hiab=rl{!XB2@Y!_){y`Rcws6wES+{D`2$ zlYe{q+2^L7XKENx;Fn*2`4t4l7iT_~(#+aclCOU#ITQQKFxYEyFAOG#P7mZDECxXk z_hSFEl~dXuW5f9bL3OS~J0)3L)jPPCn;x2)n3AHGkSG}8$J;%wuoTz}Jj=!oT*+Sue_z41*s6*|WvbSVS5|oCVa_Sd|1aVs z4mN!%=PXqXh$sY6U@lsYAd0?y5l3g{t92!%ZKsZ2dlRj*@K2p#P4LjwK*i+aTwn=k zKnsNRn&XLs@^p9H-NLF1Jc%>0oJ3@1UpK?m7RQch-H~SY^{`+u5l8 zuU7he-0wqR9;Ok!gkb&ESCgF&=Hs4v!WR4NeQ?+PQdn%=s>ladi^f8h3A8a-#yAR| ze(F&2%XDvQs(h)mjNqrxH_4kAQ#Y44k3i_rfyX4_$&aEU^q~Ua4`^3>!UqWD$lDMq9_~29=T&jVFkuw4@U?{YAPMp$YNmYF=qw0uYa(1NhpEmOya`Tk{}R zJd&QEk^Ih1Yu41E0_p_{3lz|TO58nr_CNgC?#c=|2y|OP`{xIQsF?k3W)`-V=%-S>d( zl}_4~#iC7_i7Upnyl@tS6!EZ=B3_W-gQ%z6QG%sh3Ds+f!1*Nl84-LdQIdr^m`1Mb zG>y#En13hdnLTs1cEGc>+LgPC#+4P=sJa&54}V`%TUFz#voKqQ{FbaZ&&~Pcth;7R zn^rbeS&9`6I1z|1i6@X*6kLT5$%!D7WGYO!0OD6?cG6I;VD&{p6 z7#G_|-vgCQvlL|~%G|^)VI8-o{A$snrAK;VK7p9W(TMf|@t1!&=utrhvsQ&b3e8%L zri5Zq*7WIU)+u*|DVXbCyKd9wty`fbc0aIJMEij!o_vO&_x#`8H~!Z#t(*Ju%;)ZO z%BNat=8pSEJ19wg$efj~5kRy{yJQvA)3oa~!zfJ*Te!ItQ##W;Ra~5GPOF{J%xX{x%XEPZE4O ziOn%mxt3MAV*23Mb!-af>eQJfB-FY=f(q~i+buMUKWZ%Gm`bU;fa#h9fkUF)U4wsZ z-40Brk^-eac7Pa&tzLLB@)g+c%d5U1Ii30Z(^E!E5C!qCPmZ|5{`-G@?_Ew4BnP{3 zuje%iLVh~H5?fVLCd55)BTuDiReI2!3KR zJ@yiONybvSq<0TGj~F?nOueXS*T}1Qr#zBhu?9kbkMo#SDSY~xns{x4MXW0lyNIoD zXjgp`vP6MG(Zj-kDhhZCkjz^rSb(C?s;Po&*>MpVsWZa`bQi6KWjjvEP`Wy7JieM;$x&V)c>=9G4b#&y)aLTW3bZ}0v`Ot)J2PB zBe&FFlFqN#pNvPj>QJRu{$~^UqLV^As$e@oEi7EgP@jmt-UYwING4jMqUvZp;NM(H zMX#jlvJvvK|DnPAZx$k8oO(19^hN-98Pvpzc6I|>5l;ss8Zw}BIZ447X#*1$k`l02 zKuKt0caf-b8uXT^X3im`6Bm}KkP?`HH`+S{Pd(d5g|>vPtp*&(3yYlUH5ip0dw)@*yuUU1rzf~Q-O_=gWJpnuUWei-h8QM zs+6Sw=I{|r>UcAwBq?5Xf2y03D2s}(^GZV{*(f+w&<5|WEDX$;asx!3)<=ON%#DnH zfE^;%nHQ0q6z16Jnz2NiRTeJ+y?EFuN|6l*+>|)T^I>0H9*j4s%L4vqoB^RUW*Rhz zQINj9dtcWppFuc_c%1`kLS{1l9Q+oNKcS3}Ke=YVVkl=rr7T;zIR%3$Hzg_9Fh-a@+c;P59G%-PhbV~gzd~?s6~5yh6Bw(77!G$%QNTB#igoIR3HLe zCwUT)59vBCMRW0~zXAT9f8oWK{4d?-;nQc_XJL&~MPT^6qy8tF*g0%N+)dsxeeEka z)r%;~$WaH~fj_|@?b#E|aRV#hkJxBobyS^tiv*#H2-wff%_3~64khfVSIaIY>4?hw z(g?^wC2)$FtX_XM#V6cFvDP#Xw#c7JZUgc`78wjr1@YlbUah~_!;_+j8(9^9{qnkH zHe$XJ~4H{w_9LF*h zL33joy(oa6g*1UwY})DD~1A?=v5bOY8*7=cC8) zCjaBxQI2V&k5>ACA?R#q^!ND}V2}Q0Q&rN{a+cBxC%W}uh}EmyiWH^`n9|{LJnRm< z&Q)_rE94i%;j z&d4-bvUJJPx@Al=*J(xaa@NATI)7Q}5*xU4)qgQ}lB5?4O;^jgl=4jL!i67(a34XX zuHQ?;2G@0Ce>yaha9>jPf-1uLzb&<3j`B#G$|#~VM4(o%CnrkW5@Y$nEiks?j5Hh^ zXM7ZJZk|M6gUILFXLaZZe-v0N*NKew*EkY7mB5)mbeO6hT-OTo zDc&)5g~x&HgvViA1wYuHN64$-lgW)(M9Ho%OjVay7GpipaySsT@($)AS!%7-cP6;O zo8(Rab!;`m^Z_LkCkpGq$_7}E-r@Bk{dzzo3G3lbK{?fi7rYhk&gQA4hJi^!V-X|N z$)|q7ObJS-1b(Drv;G}nZnCsa4HA>%dMQVF33liRai)C5I$9dNdiU)w0}WgU z4cTY<4CZwfkezC!#$=wrx*GRU>H^6RJbvKGzge(*<&{J3boA6`Cr`PPLsaGBOsvKN zKYXBQ_b=@lCft#npdp^uI01w7LgbI^-LqE>s9oBT1#hHoyk_1st3&?@)`)1wBRyvp zC}4(vS7^F7jc7K-FAGhH<3;gOR~j#iVw)*$S~`W2S!b4;Z5<`?;OP|042EGFuQrBp z*{6-c%i!2>14q1d7 z$x8R`&^~qDlu%cLS%M{tUG0@Y@7-kSdYa*SP^QRAW#K7PU1xQ9TU*Iuh%B9L{E z;kHgQ)ch9+A`03>5`m-Kw33!_0iaSHFl!DWiD0& zv6Q&OM`#NS0k71we)EILs--9;*1}5w$ambkYxmy0`yK{99DMp&%BGiJ#-aRE*(f6z z^^m-eHFNHx@Q2h){pC(%C+$O3`-y-@#3MUBb@0i@AJ?3s&Kn7mYwQC{v6(_}&lXcy z{W4!wlUju0j;6^PQ(_cFpfBtcE-M8`ObJh&lHk8wcbR)2+F6aH8@2co@Tba=mADGX zB_@Am6sxR?uMV+`&8=~(6RZ3cHLtbj%F4!&S*j1KbHMi`*#77#wgWn*`Wc`%}5O2LTjt_;QX$f}q1Up^QN!T zWV+Y-8V3$O`L}1Eec?qs>ChqnWc)--i3r7!`!ICa`ydn37^{bA+@X%I&>Dm=f+B}< zJ#gUBeRz@S##mRoS^EGXjEF-##)>&S{z?d9$gz#PE5frJC(!+0Xm6TH5`JM7dVbTJ z0Q%IFRsWpARSC!|yE05wWgx8zEI!gAmbW?7BTpl)BgX02P-ZtXgjSL^qy0F^uy zb%6`PK@e$?=!)J`n=pWOqm_&xj4;u)(q__jH(_%inUxFCFY&{i_0!-zru6s@9^6Mx(82ZfT0;2SF<@_-o@`4V)J{dN~E4FLMtdxh|?WWb~5-y zZ3MivDumfl4NWmGuayQ%w2^E*gQMFeTX~Qm_vqtKh!cPI?|*;sl~@1q8gTmroY1k* zQSTEUuj%tX5suC}l0NpiSe=Aq;?bZ`vKGdUZK(QS#OYwHFzZ~dlkglx z88;(lOasx4)Du)mkP9jBc9Yd^H^dFYD(5kVRdCy%=P!&vvAW8LVSSQmgqr| zu!vVw+y4FUFTe8YYp?mo>{1R0-2bTc;UhY2&5W-s_73xHLgET`#+1{^ebP2;K8zwF z*zIx;(^6a9Mt|*JgdWiHk;d)y!eZ94Gv%z|a5+=FG-i~LSi2A=^UFN&gL>)y%rqf8 z1v|15U5ZeptGYsbT`d4#d(~{)E|7ms7CuF$)h?(F8{EdM_0$3zHp+-=iGeq*A^m~-Nv-|re7nJ7@*6sW|4D!0AnJ20IPg=-aV$>P6DEyA~v zs{S8S?*XTEd8Pe7bs95tOVn(V&1R$SX0y8~o7j@gZer9lH8Dm}qoP^G-jFW6mzjY9 zrUBC!>d@=V&>1=^pwdA=I;i=-?<(`$_x*ma^BeZRpBbuv&phXM&biKYu5(Tn{OrH{ z%fC`4`R{3Qx{?xi?70a`*u=AREz954iE(c%r7kYE5(?MaLKRK&u0H@EknpLjMe1hz z$rSkn^|03P(T4S|R!#_5=87v?x}4n9yk_nCAirWmZNVk|~ z3f(Rxl^A>RRghK6i~@ZTict0RFcTvWK9GIC&ARE@NS-={f)T6@@wTg$J#vbJTx{cl zk;hQ6fBsT&kM5F?`uF0xVXv8uR@er`zuRte+|Ro64tH1UPqd&Pibxw7e{r|J=MLhZ zMsDEpR4YA-vi{GE<~_^R574+}CoWb>xktb#E+hn&R*;=)>Sxb}eDF)Mm#KTC@U*sp`V4&h62EvPd;rELQizXni=09R6^;U*a zKJile^`o`hQ+4jkT7$u*bi)%-w#pGtZvNzdexn@fr*|4YSJH`wJggT_(~s?p-}{$O z$xfW!(*fA*@Bi=zeEbk>=g_LKj{SDsqzl+cIV$`tOIwSvlK-Vvx!)yE`W@m*8c#HD zDQekM3(9*=ca7|XgvuuE3L!!iGk7SR2djq|Y+l2n#moGPbYl~~v>}ISH9qJHx*cI# zYAe;!X1^(HylVp`?ON8w5%sj$h1L@!(Y)C+&6^nR70Q!{*|>4x@#x)QrIm5i{?!5{ zAgWes7^0r>LjNBU@}&09Fe(GWD-eMPmU!(|^h0)G`0Xs}C7lg)?{vgW*ol4p>=&o1 z7&F$7?_6jb3nx+rOk_vb#7V5`@GlCFx?na?B1w!z+Be9?oT z$*p=So;bA(YoUj&7YQpCV#UhUjaX~rrtTC>J9a=4;Zxg$_yFUZP=n!AYuTEKxy)WL zuoSrjKl)BJG}~1_m1$r1#KQ4oO%z7hAv>tmZtxgo39&D7EXno)y(Rh=wC~`@#pcm$ zqMCaCd6m03SPH`dMqUeVe2czW&$k53)wmT00Ru5)2zF!SiwFp;7*Fu?MX^FZvCE{A zNhO%Bq=Z4RiCnlKa~Ao+TaiKORjK$!3NJ`Vdqu*}mtT~RX)(~_iiUvpd@UIHHM$8y z?fyUF|BmgvEJs0vIkaJ2do^P}_>6Br59(TS*^e?RY^`K+@52e*Npa75}t44Ls3JlSPzIcow#zt&5OFBLb|oQb&U(VM*zf3WP^hc$WBADyS7J zS2Q-S-LPR(Y?t48?KbR$p)|g>2~*L^(75~>*L;U@uMr)wke)8(Q^f97;8~@Ui9*pD zO(2*;;8l@17*Gu-|Kg3{Fty#S9ccYPYd2XZ<1Y~9kP^UkUB)Dh1iJe5u zg4}6>0WNTJj^5igemcDm|KY~pv-nT35JTNwy0V$|;?}nA2nj#j` zCInVI`SjDm6_|{Y>Ma;qu73=IL>j{~5!*>2^^tnlQX?0W z$zmKYUk9%6&AutDzMXnkp^#YE03%yJvxb{hQC)?1NiV_PByoI-hQ_m5R@c54x*I*> z=*00YTDho-@(`FHf5Uu0n`{efHB*^AXgGt1j=f)seW>YsZ;EOz1CO_($N=w8-<}H9ICel55(g&WAespufGiSM+Xt9 z(-V(9CUWVksto>EL~vzoOIk&KD@ zBPvcPmV}}luu-k%VFRTw=zZ0y#x>0wHf-D!wx$HvxA~R?0nu$r)84?%T=S2a4IqIn zqt;TFV}TqkscB}0YeIO2Qb6?QEYL%C5_d98dyf*@7bVjA6P7d8Z28m zO~mY1djO5B5A`bj&ez}2#YbXc-#(&a-+`hCL&ESdB8=(?7zAes1Zq1J4(6xiunvzM z8KqN7{ZwC?VE39Y`OYNbBd-awQ7sz+q6^&L?%X0yqCKx<2I?RnB1~eX&x2ZqU=fj! z2+6?FVfPb`2@B%g&Y@qyM7m5rLIOs@!oLz)5{;MPfBnpb zoI36%iV5i$&o`VpEh-&}8?0<5)eBf&{E~mEs|r<$V%{zAbay^XH1SOMOCGIXH5dt? zXqTYXU&iO!zb=|d9FtkEpBvCwB^L-pR|m;s;{+02aVSYnnlc%K#maoCFN>9D%34dq z6ufZa%?3ma*bj&07tPY5crKM#GjfgUp%`ny*lF{~+j$+tQvcR|rMF?q2iH%}4fF27MP$Ms2u^MXu6*q6f zxiQy=T#j86Q@#iL1|1d*b(jO@%_GG zy4Idn@4!^3Lq(cb50*E{Y=v%&2FSD7W+$2f*Qntep~cr}eW>lBrblK#QgB{WZQv?o zzG~v42}R&S(wCni8|9UimsOw+E+?`2iXZSR_dwp{abfU<(oIF^ z-ZI+b=*+%$bsFxs(bWSAW_g+rzREFp@;i0tMLVP8x82@)8yC%g4BCKbqS*3x#5o(w z8M{00a^Q~k`b*ZBHP&1sB;u^w8b78GhD{wg_1b{mXMY z!ANU_yhg>$=2~G9BBb>i!6G#8>*^sm7A+yOnWr^xSifOoOKg+hoZiHA$NCL!U054i zlWD#&ijFwhvc+nPpe>s>SK9zl)K>Xv-@(na$Bfn$v;svf8ANWTzCA692#QGd0uVvv z;L#!x9)0)ZGu^wRFKY*Mq=J^twnqci%FEKS@={-(s4TDWl{po}>`FG&RQihVqRj@L08K!U9P%Po(&HMcssDa3 zzCGa+Ux^40^k)K(U4SJ&tEJVgr*sBC24W<)qSzeIg1!555X4|UK*`<2NqmnB>5j$P{-{9x8~w^{e;^vcc!?#syokL+{t-v+4QFwO6QzN z1@j*|)h-Oeou_;AeTlKJZ8PkBv2|J0vOw(NY#WL8_!#vHjr(c>I06SH*pIEG0>s&J&_6%j zU4mOgwqmOgsz3iic%dssLtsXbS4wLutKShlkGJu>kk8EAyz=Mh>%pK+Ce%+o}Rk67+bEkyklf=+;?t z34jyK_S@h5ih>QR`CqjAPsL3FC&kyl`=4^VmYb1xeqpDw9M>bS{M7w>M|=z3P}Jdn zQbu#7LGHy~-h17B{?}R|n#0Mo2MCZ4{@(u~&E|Mk4}?d5PO*m7h>>PC#4@1hH+%KH zN-L7Z$4;1l+0;{^iCjCo9!#D>o#uMv}J2%T?ZMBQkwo2AcRl9A}Ji= z7yr~+UD})gtB6WaY7985vMJ(#h5mV0h7BJAqesQon<5rBgDE1J7!N{}^v~j6q&O~@ zb$|Lw_ZU{oR*Za}7}+^OlCQr0n*0m}1_d?xi$OP0sp+JKQNG;NP?a_rFH>wRBQE}e zq0H%3)zho1kXuz%*VI&1vBnL<;egt5NCu{!1X4!4r#Q9#^ta(@bSm5cC9mkoCvSNC ziOALHT*_!*N~F5vCO{xH7Y8Kc^0yqOa});6bes=N5D+uKkoK|~EY;6tG=QVOJEN5L zt9;dHI!i%eZLaoUVC#R*AH{_b7$3Wv&?v*GA>3w3?L>FT!eeRc_dhewfjG)Bq~AA?-E-8G!7gXKsKW7>0aH^%{vy=#lao>I39470W3)+B!=O)YiD__O&(DwKXV46uMbH z?;xy6{;asWkky)$bt&TH6QYG9CP+Rmg@i*vV#5QKTd++@vyW#P#A+L}WJqt9JZdsWk*7v7F~V6sxEF!{L!^_C|Dj3^=KMz8a6l>HG_~k>Y9S zN=-yT04C9fTv1$;iftbdhNIC5ten4K$&$q@R<06#ym8~E&0AZxrOey>s<6_pNKk8& z;g-fYF_O1Hn8ZNkY(MM!*p27gNPeAPf(L{=reh^#HFl%O1(-+?h1Wqw@-R^pNKE|< zQ~4>L@~5A=g74)6PpB2B7+Aa1qa)=5;X=?PDhWU)H$g#?2K&xHn7whgsx;;Xl)ne+f0lxHpsmi^Pm0ZoMZ^uz6iY zFf^%jT<*_-nuQZas~DZ%l(SKTef`plBKG%fhDjc4f9dn z%!eppUUjCjoTWKmelv8Sif)@LreLxsSyi`*$&8o;a?`@cY8v{{^c*vgEKGem2}U8+ zL4G}-e1V3fz%-=04+8C3{`oR8?Z+Uj6%$OfoRZ4`R<9wAMa*S^C9-kvj;Zs zx4-!d~9cv`5TX{uCa~{ZqHc#2{le|McJS*ecc-ng;!=h868kZo#qW*|xVX&tAG@`O;-emM->7zKVnZrk~19Vkw%P0w%m2)zwvK4=a56 zcWnuVw4$(pS`>tCO8rJeW|ZIZG$=Mw_V!OZb2I91hPIybJrX=;{}3rYL`hO~ z8qE&}E^cJx$T521BDDw<0+9fcyy-JA7N)AJ#kWFz`&q03LvY7;_M@NqPjxlIDI7ec zp0i3$W!!j`nQC2IfP~5cJQ+UuudaW2Mv{Xk+R_|dQTdwxUG8tJock5Wpg3K9PwJQV zfHK`L(;Ob+CmGHVf%aoq(}Nwe;T;W#u&w!ijfc(JksD(R%iW^T8 zhfH!NrKz~qc2X=;$10ZkSyZ8HCYU$d%}MfT&2h8CtbD6iVBxB@iP@KZP4tfFN=!%l zX7Jzv{Re3Es8~3S5^;b?rla@v1VuPJGh^iv#<}~o+T8tG7g8JzO@B|8SVq!U>%F<= zfs_mw^;cX){;jAie2f#J5BlFb!lKTxJ*@SKu3LC4`*DRvvV-}wr|H&e7Hr~3-B=*$OgY4 z%#Y3W^Wt;oxLH5tji@7^;by!O(^!q6ZVAPmE>Oy*ffnhOAn+8@#^y^w7N!(zVYk9u>GNpiA5T&lxjaxzi@^$wjjQou|b zPFb{ACZpiCKK91VEnBwl2#a#yK^7_`Vy$??JlBvvcRufi0uKpermqXtH{)WJGsKPv zJ_?3Nsi?=7dRA`*S-y`2AOC6=B{$(w$|}b1T=yHF*81G1+37+37QK8t4U$05+s!Js zqk3CvQhfoysNti;9;41N6aok-EdztZX1JOh3YnP-h;#hhFfTs8!Ogpk#A}~(u^X?M zhm54h1IBedl`8mJba7efR~%QOw4!L@)$LIdq48R`nH&jVS?)kQ3_ajaMeCEfudUYHK6#p9r}lw%|&G zn;&nO?|5#z&JomC1hRMoY*Z85SKb=scQLmD{X|9`s~fDDuYP(jG)#n}nbrJrY$gVy z*{C?wn`1*p0?6;5&BJD@G_jdBYrTH6fUn3nf)}Jeq61-HUc1s7NNS3h5etpJCQoh# z;X`(w=jOYHJ3zRGn1plZ%@?Hu`wgW7($y{&7*xtjBTV#!>6KDl_U=V-3CjJ7LZs&S zt~#5JK(Nl7Du82#4<<1QSuQ11`MXxG3qTD2_P5+FPd*2zC~Nm#s)GEvHrk^Viig zS2Ta2=9K~c7;Np@b@XlMwQb8%K?Y8A^9YJ_!rXSGh}m<9K{H|hGqqXbB0yxmB3@qR zr+!@&33(zSA(SahfN-_Yww6sngdPvQu{XXhA`*+?We5(C zTuG5cXe?B7jUz@=%iyeFv8rRWzAj!r%gu>lt;_3* zxL>R_Ts)SrcAT3oz6o5cLA@%%Vcl#Rq6-$<=odcK+`QJWPj7_D+PW>yV)r=-Wq{c! zI4iQltd0Z~VGTfY9e^5`=%**A(H`-o-w_oey4dLS2y~d0XkY!k#l9lVl9MH7u7_Ui5Xe2+Ea1QR0<)IFSlW=WKB z8H_lL&&+xwjq$9dD`;c`@FDp(`pt=!ZQHLC?oxFVeac+=tgZ94p(asVRqbZnBHmHK z(7GTc#R`W258|QTimMpkG~NC+o?Ae^f4+cTD9%MdB;II4ap>Mf%yCqjMCe28TPFif zF#YT>Ksf=6Gt`glKoXk(+9eZDok~j$+!3nV5g~YOvk4OO2!^qRZc)3%WM;k@(9JCR zF09*prC^2gnKd;tWWB4zO_ADytd{_Rs4=0w(wpJ+juyZ{N|Nid+KBS$&uQ#OZ1j(0 zqb?yj+UoN^MoYD|_&o7@F6e0)`a}MY@rVED{-n*O0D71X!9$AlKX(Mqki4FL20^1a z+<#@BLx_f&$-SH)bpyCe&n}4nKXn<9Ycz6HzHo5}Q!NenDnIipvu0~N7V9lvf!>D( z={kBe1jcP!Gc)t3dw8bhV}zd=yilIlhHAcczIs;~%0pS0`n@S7QzWb*D1sQ(>xTw` z^0(?t(lz`|a}rjb>Aetz<+``BmZp=w0;)-w>_w!R6en!bc=O+)m?-5zw6#yb1Kc6b zTYX&`yO51$FsK~jIx1*5nnjCX*p`MRSxc7ygO@CI(52sHy ziV4ZH$Q17c8ivOm+e_tWkUsn)kUxJ>U*owPzy{W$8g(zHt)yWQ903xl?kAwFt6ZJ+ zHYA6(L{Or{O_apnA|50{jVo3uOp?hqY;M^E)OU5RHUXMj; z6`}k)XtKmv@x@DQDBMhZBtO7gNo%P2)V8ur0g_D1dysiH{*3Jqig&jiy8hV$t0#p# zECq)*?uamxrLlLUP%^A2A(okpr3N5gcwsuaL~mO1EDy1Agd%e3(#*2hQU}?V#%k0m zB)0{jAy80$(`;t?^m0?VU@|Z+&)6_MW8z4A_v&IVIVwv;wed(9(OyYmbeVNliD6l&mcYJX%EL}oEDI%8D-q+ zn{Oq>BKSUWbrEkz*CdgrSRa$&PNK3A-V%9bVG>8W&+fgkFGj@8Otdf8V^r{)zI<2A}vTZOA; zwoxIF{TXc)vK|e~x&-qPt)hG+%;!Y4834o&@Pof;JcxL=LIsH_yn0-XSFeK+*o|p} z`3u~l1U7O@W6Rv~EM19Rp$mMmrLd(mCvK%;5gsA%YqyI?$V!BOmX9qRqd>k2bK|{x zvBl^OaL`NHmW+u6S`OD<1zU73PhkBqhmjI8V7DZyxJO;L)MMRnM)!D*?e=@}&rhNN3;;qW+`FsmD--KR6Ud2>t4_HFSQRbR}ARb^%bx{SH>JK)OU z6X1@L7!1`$Qp~=e7>Wvjj3V;H#wzm1+`Ks^ojKjeXnbqPO#pEWdbTtxT<1b5~h5Uf()Y>HCH=}4qC%P zp$`QS%IGHKS=7wvY{IF|;^eLiE9MZ;Dk;+_;T-zVtX0yP~C^gc+BBbPYq+~0ig?s-#axW#~L7;tW z+M@rnOlCY4s28v}%g-i5HRRx2OO`BSX3j6q1OF;OtZrJ}=vQacxMi?(^=i8A%g}B5 zC3%ZA#3&M{zRuTNM`+}WQG5_|8Vd&it4(3u)%vzk4@u0nu#*H6cIyUplC53DbP4>4 zvg@e?2IOW0{RtUV%1*9&@Rjj^I)I_3g<~&dUi^BS*?5MbfYErq`KBr}6z`(KMTRE` zh?+)C4INGq?MLMZ?$d8Cp6E+%odQ&bIv|PH*4NF}4pE-gMHmj?7&+YfC@OB%as867Jc$B@H5;^YEiL_B^WSK%(asVQumV4Mv)yN#UYuUcc7PTlHvvP7C z60t32OPAnrxSXhg#?`(t)|_dIuWE9QVYRd_-(0?83BrlRv;oD8MCBXo8{``^_s}BP zk43^^cznpv&YBYLkN(bL#+$Fng8t!x+ua80Rzf9iC-Evv176R*3PiYyY-`D7EKfdDPV@iO zA!4pfbNt$?h{$dsR6<=*s13qq7!Ayi*8!tS+rY00CT7i@KhHOG;j;P6k;g{(gp?OC>{T$<|SSZ7n;Qo?;{m!swiIHNR&nYld>B|8Vzx+xD<{+O! z48fIkbbI#lZ?~r)6V=lf^}1kwN|MjPge+o=5&8m-DzD*)5sCYXuS~0AC=H$%oe0zc zp%N`5{lE&30O)T*feerj+ zZiPZkm74IQNJj(GfDv`A;b7IaM&^&dfk#+}s8d_e#!RLKX4?rTNs&9+KK?pi-fiY; z`g&+g*i5mhr8QHhng#esf}17w4NoIjMqhw}JvM8~Uehc*wPu}L8*BD!q%Lc8t8y{i zQmQzLH$Oi<$cBb+ibcvD227t$n0swa*OREx4vDp_%A9_x$A~Dgs!lq+s57E7q zLPj$S?zsYf1)S%TkguXS!;BqPhAdEfiBCmEQC3k#i}z-GW9XaeFSO|234>xt;R}%S z4;wi`M36>Kd|?;k>x>q$Fe!?-&ez9h&-L@Ok!I;>T}~vyZaLt7;3IQ{*^?k4_$+Ci z6r1czvL&Vm*kH^o)Q7M_ghxN|)*>P#PpQ=XV1A>sNbiDUdQ!z`36BwFG)|K(s}W_` zvm6v?{wv3-YjKYLrJRV5gE0O32td+nSMzhUd@TZy#7Clhm0YbJoB8>F*B}ODDbRN% zu&PmlGAlXPt<}eRW{TIb?82`JjiKolToHF$wp87Bdb!eIAUVb{~Dc zK#D2>J$nk4(bs{)FpTwTf*L0C5^5xz>IG~V&5FOkCczANz6%(HCzLPdRW98z!Y{-5 zH*)kU;H^6M?T4?i*@BH`6le0aAzu;ssE*+%kfeE=!Xs&6%2Zz-Dr2f+by`>A?a=F&Mr0W- z;n{058l;GwW8~l|<@FpbA_i1hBM^fidS9at>P@B+*7H3NptRHfjN7ekUV|GVR6?O- z+G$2hXxK#k8fqEJPVmWOl#&XQxuXFoG;A;%dcJ-CU9ck&-YIaz-X+}$|61v z89HQGR~}M~CQ?CJL0}RRGBf2n<)x_4xM@heGm|f#X2yJ}{ehIyjI+i-)!Lf1ijGStS6z+ugE@zAYLU_HOiuf2swQPV)0DIrEmEj>@GRA(Z;6`Lx8 z$JFi<#&wDK9rHA!xb)~D341%OIN9?p#_4oDgsvA5ix>zWg*S2OBfOpfxY)UZH))7b zkmd0=*j?7ECr_^L?fPiNBevad#r`tobxoYnTN@s7+T%A3`XJuU+Ri#5cFJBOOX_NTYcCc!%wLQ66#{ zWKiZ@zNod(Pe@Z$6BzyIZ;(VKx&VksgJt;9Y(~{@P8My{(LNnzYzM-kTWh!<)QB$m zO_q%I>UD=WQvwE@fP}XEzj^iGATj|uLupMD$PEp1v6;G})&&s%O~a6ok*+tDT@_29lg76d+a6je~@_0w+DH(l+Rh z+#2B-m869ama*cTDx!U#SU=zQ`u<8_vK#;2Kynyn8)R1V!{ThNV;(Oxd=%A2dDH17JT=>g0J-+XC(ue@S%;loGl>`pb${@e$ z(E~c}r4GsmZ79nS|6PKPk=aJ!Z{m#GuB}sOi+EH}=S3@@DLz`Q0_s4Lv=KMMYFSLU z>I6b-OLEi3O&i^YZ?9i#mRn6hrx=OlBJhu-41Yr{4VjF;mE=YYml8A;)37YCB=o_c zR+3wS2hsOov11=lrGGo#tEUH8h?Y{aQsEV2kz|U5)u*rP7f0a^3mo3b3=D(9;En`* zd<)WwihcwNE1WEgXB{USn?*<=5lrx;qA-ywG$rj+o>Amjh;dan)`$|a$Mq^^R;WSM zgQsQIq>!s_*ieAa@Xs>Rhy6#5a-;DjoNg>mrwKp#S5oDfANRGkB^_ASSS|7zoUuV> zD|LEPNWKXR%Ml^>N;d3{jnDr#$e0~T5RND!goZ^q_Urf0G8Ul&J&U?Y+8zWC2TLr- zC|ijmUbyIgFg{^#ZQ4MS`PYAMO>WuRvNh8ZW6cS(TWompjbT-MrL?w-ufa+}ANW^w z6?!D052)h;kg%G$d}Yw5BR!k4_zL`>#9(6C0M|bZfPr^?vlS!tsqH|0a35T#4`;Fz z|N8Nx$c+I7{eaEy0DF04aV8Izk84$D0$k{Zw-^7-TPi!@14yNL=rLE}1Xq-%#Z@wC z3dB<>O|SA$5vGT#v=Tz?Og}4)Z$aSs1v!k)BSVF|W1g@n%hJMzjbT`Oo&$jxY6kQq zBS(4`eYr7Nz?reM`{ivOTgApk%fGTPD|-)Frn>SG zN^op_v5PTs77a0$(Zl`v|C<31vz1Vj6yH2&O28s<+DbBzhy03y8E7xmK`3;ab6YlV z*@{SW>$Yuvdk22B?KE34UJDEN{rdR2HNH7Cc4amJTqEF1M*!P{>0qm#4SipBb zxD(YXSqplA#KlCyu#v+&3kVsR92pLrtS7LOT0~_99CC+2&;w{KOC|)1tr_S&z-=FAGVAm%z(Vv#)@Q3)H$*Hc;ob z|9~IBKnjOkrHu*fG$v@JRpD#(dgVr5=~WXJ#op`Cr)&Qpt!MNwBF^;TEeNX z&9WS@kG$jucC-W~%&zUx`rf}2XG5`K;lNzJ2KK8`XYxL#c^ml$G9$o=MBGt{kzno7 z*iLXUi|r_iUEX5j&n96#R7+~pO9(?gt0*U*O`lPN`P8nb!7+QDF?dwiqDF+rjKZ@d zL9G*`hR6(#;oxbNo5O}V#%r@lT;|~p)EFCk1*4^KN_HI$3oL`}teRB9U4V#DA|y1f zc2Q(Tc1xqhFmoziA1ZW z7U>COG9jt##>nMhB-Py|6A&_CN!WnKSMP_m4#}0}*q=IR@W3zFC7m^dL^Wh63kVCy zS3I`7bP|j9t@@D(&;X<+x!%A$7AjC?5hRC>AS(JIl~C|ilYB{>5*m+(>n*Q@Vf8am z7u1HjP#mk)+tSn&f>LnPEu06XX*ih<`$MCd-c-=f`JF5JqDQRG}-1 zO-x}N*n2QWnEZWWe;djWEF=ofAZG*W>7KzF%z^Nr1BJ?kcR=Ns`0!OtzA?$v=UU+* zV)OtaHt;4v4A$1Y_y}G(#U9x#HA48pkIo)Rm=`c~!|5i|rB~w+e*z23pKQhg_$yP1 zYm2ZPP7>hb((2y|XR*JBZYN(sB#3&N{+6YAfjR?rXCGr~m`Yap? zD7eLMyMFtQovdW#+wNUj3$=R}cP)1B+PPz=+a9(O9$WaM8%ShbY|$FU^opg+WH!8N zE;{4*Om%1|%`|-sRy0K!Yyl|+Rhb)0_}BBCK5hbm_dvUSoBX}e?*%(}?0&-TU%z-bM0hX_- z@wJ_ZB(N2%P|@Krbfa_^O`_`E~E7W^w<(AtN5T&v7J&UbdGNb-GZz5sBD~$OkC=3ImT@x654EN7mZ?uFjh6e(zmY<0UYm z+mVf@aY1Hti{Jd!4LF*WWr~BCj6ewVz-F^pWQeLPR9(Y?Tfq<76`&8`M^t%w)zKW}&23|H5&6 z&%Kd=CxGU8Gp-fEX`ltHfbW}a(GXTDjQBpKKOr57u*zk@!|B!?Q#4eWuOeTm3UHwU zA2R?7w-W+)=V{~GyYIdG{(JAe>)!Y8rp(Ly&d#lhtw77x=6Z7L8gjK$C@~yI;Gf8gr0+`Q`tE#MQ2R_*@;wOqbFG?f%|+p){VPf z$%tGup-}lqKb3y4y9r}>43a7Z@zCpXp1CiNt|ApIQ&(#DA+Oh+a7GJe<)O&Dmcd&MtJd03BzhQV7 z`9t+FuLAipo-vd{5rrrKtD4?8G*P{zE#CjF%2~U1W_Dlu?t9#yd;fiQitpije*UgJ zYUb)*wZfun@*40U*f~qhU;Ih1H35?K{c^}z z)|{Z-%1MHrfd)f@f6l?gsm;*7k2M*v5QHI;y)gRw3hk(fY|cZylo~UUq|J!GRBI8U zaVD`&o0!i5rSI6a%kK{Fy7$8Su|0loYTw>{d-wW13GC$FbMJ;-U*EZ%a|&D8J-Jy} zgUAV?FR-y3><+u3>8seBj<}T6wI<-1#xq^+%P3Y+N@Uw*VuGQYn4xo<6d9Kh{ZROi z{4Ap8uu5TZA!wnPVw;yQSVzO0nvuqa48yWJ+EFDbesgk3>*P?9((akb{Od$M)GSj< zo#dcY#;y{P&GhM+ssu6*R~Ke>B{-9=h<|*Ffl}gL?3bohDX&bG(g3k`1o5ev3y^_tiksQfj}zA>yw>T)zHRn7F=2x~u^ zC)iA8Lb=KcSxthZQa2?tIa}|vRQzs|h@$o~4wjk3_sTq(iSZJk!nc)aBNO2|_K8^( zO7(Mo%1$*pL{n%hvfgQG4sI(EMroNZ?}!(d@qdKkWxoj}1UAdYX0?zSbT6}6EW!NM zoVl6#1ps5Jd|YeEat1kRf(TuQD5XF)BZKUy_m}3qdTmyv>$C0yGvb$QI3k)n>VwNpeM%pApwI505;)7N1(0!P&y(Tp zUz(yIuPD!y1=NLIz!!!v!0@mE)wL2-`I+&0CL@@`oa@m@q!&cd zK8`GW)cRreK8z-txxHae0k)El?cBLT%dLG&SIT2{8>0K508{3ItY5MyZy~h|cuPHK zKQqY)Z!Hxm+hE+ZEcsb^MH%s`G*;HiEpV7B-gu=O-fDd-byIKPcPNp|kCHOP?ravRM>I{z2A1W)=$`UyE^2#!&&T?f}Oh)gEoGp}5GqaA5 zdL|kZKzTnm8!WF8EM{txYOO#GAzD?p@wK>2M(*jAkG-gkG?B+U&Dj8|undPc%v2q$ zZdA$DhT;9d0>SwHqB7)U*eu@H*ij*Sq9wE&c25uw{je;UPkQ3xZxg)GkRp}52?1(o z`p{BdAne}eV9apS1xLXE4wQdcMBKAyFU#UTOkgqpQH*a1&fYqm$uM90!0(B@=il$F z6}>xket{kT3XM1!QkEu?8QBbpRf;I1;<-SUW5TCSh69sThpHG8J}L4_!vHAjnUhDZ%*fqk(US5yDt(In1TfJJO1?7)>mcDo!N3Q9IbyPX z{{)Vvf2O?xBU}OH8(ieL2|rNUCdN>7S$DY_XJa}-^`RIIl!z2vHpmUPE6b_mdQW+5 zZ(<+kA3w_M$8rb!{@6!;|3As|@VR~a_Uz?813st2kUMr_I3+baj+AE0h2(O}m*p;p zlalG?H+aoz&EmMm_+Gy1vErBIsS26Lm#1aLin0!AKzE_@njdxyrX4Klw;#!m< zqXRP1ECA*UgJ80RDB{5Zvf2+waB{~?Bs!bQTO4RdI5#8K%uuwritzNh=D zThVGWa3Ap*R&F&luBF-n!jr@l7IzA+gWK`34^sHmer%OKu>atJLkBYlZrOie|9+WE z)-qeYXPdC`vaK?f$V1$Wsu@*ke5F=pEKSQ;3l{i>1S(>OzRFRI#cQfF6wnDOGGFDU zXKDBVxb3H76a?;HOzX_MD&`0S%9Q*ttSFpZK=f!W3jik{v z5x-`1MY)o7D5|J}75K!_W1QHC*5P?{-ee%M7wL=tt_ynf9J1)BK=8_k2F6Wgg8gJ5 zYbA_HtE4QNc!wrec+BMfrdL1_L?4nUNO1w(E_!fdL=9RL+@(Tz4~dIB#bv?$DU5Pp zzdINX#SVLYe}Fryx;prg`+z$Qd)mpRBFsS&+tS|j0;Z(`**C8Grl~I6kpX!h)gh-)mr6d#H)C$vNfg!LaO#Nl2t$@KO?7# zcYOK`jOS6qXUT{aI7vmk5|2yD)w0XW@H)aEaHbqb%Qx%sCQRoK@`uv6um1Xs!2j(A z*$xH~uqeynUd;P}#=wm8Zk8?=eLwe#Bo;Ka7JQ#sPTI3RifU5Ekj7$SeT_a7#0M%8 z6vMC>;ZTSqV7e^+oEe$IEQU|%$R7U+w ziQtBHNXT7QcNvlg8R9wk&qvOzcJN^9p~T@shy9^{I(!HZJBW92AorsW1sM03*>>%Y zPNtE=Hp#v4R_*J$!SDxW112w$hc(RC#3u=2?%d3r*zC-#G-Wj8ov%yIG0SYe zCZCRmFdUy%wf1`slLo$ZsK!O?Lk>swbJJ49w~9(vLC(Y3k|Z;nD_&Na!D{3`Ih}gR z<(4Mhv;+>TK!{UcOWmyXT>QTyUxS93Gk5k}W-<`vUW+96`6z!yekKtUjSb%?$3O>N zdfW^mgVZGg%2+9Z5BrsV>4wF0j%8>TT?JKU8Je`RurmuIG=U+`8#5LMGj3*5m~yjR zj99{RI#W=dD2TBPXhbvG_!vbpj1ndCdnpKveZ;^R@h=?6I(X>tp+iRwT{#>Mg~RSp z&f$ZKgnasa*Kj{gwU~LBZfg)q38#KT3R5*V`KB(bQGhW2A}6!drFfW`pF`NeUZ6%l zD@8qBKkG_;idQzXP7yMOz zrpX}D7MH-}bZYgC%@Z>%CK?QwN2Mt1;O8|!o;hLuw`e#51DCfEf)ULG%d}%BRWZid zyN|-^!w=p5aPV4;bNI+%eRq@(e#ZCaRyhX`96Z2JkL2tdYyHbjAw z0vN7a+ll&%me*=pvH%#2#Z2eo_`*e=#FYz+$XKT)oc!D*KQbGhAUbAdx%x1(mCj49 zSUg#-o?m3@^3^G0d_iw#Rds7szS0{LTb0vz-$5Pma^_jVA{FJXEE@;HI#Z{5?87(% z#70skav%^{$z!8yl)EsHK8ZAhV+>SZ&lCpZ$l;lIf1x=;oM@*=Kg{I!38AM*PzMh9L;i3$5{`x=?r7KJ$BrC1in;Ks!-o$Z zJcOCR8XtVcXv4^xuo6rNMKTgM?xzLBZEM%~rqCFmc*F8Id()V~O^~?!!Y>!F4aCn6 z=!mb8V_9y%w?umY?+HFvW`~*i^>f-xC4}a&6iq22A%m-7@HPaCLw*zBLIjm$*ei{s=8v|1K5m!d0XdRA(g3m{FB{9uN23AD$=5Qu#xLL{5 zyUgJ~jWU6;AKy-qP7IUk!#ngsqW+c1FX*-5O{#iU96ZF; zVt+VsB0T926w;FfCNF4}o_z(de(*UKk8Xns~Yd}gSWjH5JgK{kc zX_!~3NCUP2pt!0OP5!#tzh&TE3v4l!Mzx|j9}E?>-A$AP|K8sA3c-;pF9FK0D3a0G zl479~%{MHi4>Xl(c;RB|Y!d|e0|~n068XeX9QfiK31kfO-71j`6tn0G;Ro4?X%j^~ zieD2GZ`rn8c6yikDO;FNb`s9>hrfacaS8mmK8_y$`1tXU`H^4XR{lsJS0xY1?e+(m zi-X3{Q@iqZ0`s?ThcMi{Ikw4dNTbA|Z{nJKBl`$fv{Q+-9OjJ%ijB3$vDiYUq!%VM z_0F_(Y`&vvX8X=uw(ne-8|EZtD$13qNq zLvkP(!T{?urNm9iiiktlrySNji0LS&z)q{?Dlcm_&?q2S6?=>!>nHAF%2Re?si9Vl zk(XpA*d|*^L(qeF7e6FwP<7M@nvilLY9c;IkD|ptCX6Dqjn1HELm9$v`_W1DxRH|5 z0#b{I#!j9Y33h^z7l5JHv~`33mzC(aK7N94_QNr3C9@qndi1a|m+C7Fb=^ngHLxFv$}*K4i%hk3OCJ6T09?OTcQw{9 zztWT^W%eq%uyh~X^7c?sGMlE_7cH6Tu&;hJPgDRjX z8qK}@ruJI^6+3qt7pO4kKaB172V!{Fb%%}~i~I>=eSG4?alU>0@yQb>G9QQI*B(25 z7UnJ@ViFk|7B*yTpIVsHRqN%b(NqknVFuFX z8<-H3faxkT@|qYhJw_1Bf?mYYAo`Of*v!*jNowu*mnHc|{9{Ds{U_s*Nx2+-}W3r)`53xLxzBwkgi2-CmK+{GhxjDk4RYJAuE)q-CD5reQE;Xa>lq z-;jhvdQmUEFVPT{3NJ%MAO!_a%ZwQ*!5m_L0)XKc-m2E{Dn=}t$XpS?Aaf}s3J6*m zynjDt0QQlz-0|!aSnA}d6Q|q>e=>FIBqsA8`{OB`O@YxL>L@}(q|?v8Q(HkzNd%CWtEt>#=_IhBf;uV*lCYF@9W=cR1&>b*npmR#7~Qgoyi@6@ zU1qusdStXTVfGWecMgw>mzIY=edCcwAMMtSb+yW8G8$u9hTc)wYPbi@rtfoOGVxBQ$TBU0=RlO8gkXK z`SEdgEF4XP6oK>ZKmmp$NCM}r?((~1yOJC=+~Kz+1ws7AT+KtQUngAOx+c-w)ZE$> z({wvR*~F^VjM;Wxj>F-0ikLDXh1nv%_T1VxyN;8p`N?e(pk+Hh-JV-l#!d~`N4BfM@EX7kIxN)@g0Oq~~t zl!VE}qCYITf&D#rB#WSkqd^GARVC*uA|kG$_#%(-RT59)Y7sdy58bAD+MOSX@sI~bAPs*zwP3189~*Nm8nNc6C%y-FnXQ#t}WC_KuAQKiAH zoB1u~VTgwR%Svi#VI|1h$V$XRIQG5Q{Ew9|(y^nU!V@QPB7Z8J#6G9PC-Ku}tk#p^ zMEv9l55`aO2aou}@k0kGr$6!^=BRsVrs^o_aF;kJhz(r0Ws6Rt&`m+tyP+Nb^T^GB z`>r`OWs}w@qMOj*bXm1>71DG<0O3;92l;K8Tk02QFG2#m2>){P^XAfep+ciCjj^)8 z_RP9yc}69r@YJ-LWaOlhFp1}vA-YhUC1Divfmj9wj?^CGYxDXew|Wh?LIMryfFX>$N^p?`rZ}kllz^h}g$Z1# zwJ6EM5D8Eap=2h-Essu7dL;;elvIm=5>ti}e<*(Ge~hJOF-Q?YP}wWO^RT$@tMe$v z?;tgo;^494{zUTQ6DLn*P9;A%efpEk8GpL7e)5SvPkr*qsZ&6Z6Xdc^eNoCGU!Ew%O>;z#>*9oxP`cx)S;Yl%;~eIubfGo zJ&nm?XELX~!r{p*xgLMc9g82u!9bM^_5Z|}A6Hc~=c({8vY7aG;mBnIP zyrx!K+~x$tM`mM;kXS%6YX&-EtTnh8B*^N3v0|&-%DAfQ6qpg6%c3lrgAn+p(($vh zmAHU~M8WtBh^IiU3_35pUI`0hk*CmnDAo~>CdfQ~TW10J6 zip~SF{e)QIKR&>&_2{Mno~2W&k!P8q;GkYLiV!$Y&qP5mX9ys}+)8$m$dSOSk)&eM z;3SkKpi!ia=tkU>uk!kMq^xwnr3ipff})Y@1uo`=d9en+=x?uDs%|zkqn3rhr~9y0_M2hvZ#C^}BTwr=P^rAA#HeF*Y< z0AyDirX`mNcbJ}PF96pTfsLh#wOa!_m0X7-m11fcI5<`8osn z2&OO^R@=RM*G~M5!pv>=+d2^+w{6k=UICEJ8x4dcHmuv=*X5Ge)@z)54VDXdTb4@g zRm+*@%w;BG8R9=M2g(;=#JNZVxr(4;2yS|AB{GastCp`ZqZ#NUz$pp}s8PhmM?yV> zk$EFf*WwrC9Cdjk-h4zWoDs5nNQxia|G__!nL+Ugl?3usBuMY9Q21%P=v=o?G#w2PJQCf#801TJ)3jx?76dN&!0PY z-knRG=cniVS$`%)a3nB(;!dT+fPgqs=3nlRKS(q@5ZmuQ4Ex&ANU?Z`r8oqO7!gD1 zLxdH&Y*E1g5M;rdH*cgFhH%P53McV@X4OM;ys6niivSf@13TCj0UnyRh(A}AU(ly(iUA!DiR@?$$`V-VU%)G(BK z=(gC)AxTzgn&*fY>ESHnNKqh_yH?XxtA$kt;ZjbD%pq+hC_Mf00%RABjh471O7mOt zq2Z+&%oX@!x75Cr(>r$g9e#UktJ~I@ z5XmS6uC~4f6%_z-9g88{+R$_@IStUL)(c=!bu{WfAibY|BODcdF+vIbu4*+<)U|>; zr1Lr{Eu2wIFbw09oRF1Vn~@OX`qa=!*btZ>k|XH~4Z1puGSnk9&z3RzCj?rHh}Kw)imE^yM0|&T`LfRC6_&ba z!WnjFB{Y(dcpVM3Fe?e=Mv;;N#4l!lXo6bHuTD3S)z_}~8*e~I9dYuw+8$cPBr%-B zcnyNv$APjKSaI56Fn=x!BVnqGtry(+1V8iV0~XV_w9*>Vb02u*0q(un`|jO*$P_p$v~G%zneFX%plPHyYhfCK*@;{bq{JQIeOyi1 ztnr^nWTxJRuv)AV4A>zh6$)IMmCzd$T|$Rt2-YaKCgrlYwU~916UL6qz_yMaWxe+_ zb{NKt?T|1yd&nSKxB~|dXtf!w!TeMsKuq;v!y!XqDsq0K8@LY;6a7O!mcis?+O8gD zvFLsQov+@izHqTNdx1JtELcf^gW+4zWUbU%+WcnFeYy}~jF71P*9k~9H#;c@Gj$_8 z+_LY|Duy-$8wzotN~43a#YFF-p)ePU3+1mvD!YUY{mCRQcG{o0MhT0Mc<#c5i{~z! zKY#Jk#S0fNoc9;P`EVh2(Vfp=wb(h=1{ym88in$YgE5J*M~@sv*KsI$;NX5bY5v2c z$Pc&2y`K$oBvkHxH?u43OrV&`?1*jk+tT0>_$%L%O-8e|5PseDHp$X#l<`Wq51EX8 z9+FVazd>3Lj=~5hiuENhMqv@a5!fzcnQJtNu)`=3=`2v7O*mA;JL3FoZ3M|jgP49m z>KzR|`vL8xWdfpO1oG0L!9V`ZZ|$7Bve`oqseJBc2i@E5m%aE>gg!(7gX}FfMpYO* zRH0C!_D*#Xi%IJMk`Q8-P@oV32I(+2N;X{W-?bF;e)s%`fG&%2QOJgO`fPXi!d)E#} zzRM!hF(9!Gg$`M+rDbD_G8`~uom-P=Yy$0fRC5~1=_1evbUx67CGxYbnF-h;I~WsWSTz&?R{I3K>L2}33TKq$z>$` z91#1p|INS25&hv<>ZW?E)W2Wf75%V!It0ci-ju zNGm5)EwH&IvkAp8MSu!7sx}jN<9ti};yh-P<~Pilqd5v+*ICh$SgH9xC=a$E6%}R+ zFpg!7s~g!)PKU#35*6v6M%V{r^&8N?Z=b$2C9|1B=+l?a);`JTcdqn{^$)*J$>rFo z|NY42A_nAYIsMX0C=j(SuD3$vpvdD!(PL@5Of=C=&O_cwBTk8|A`?Z&84meeF6mgP z5spnZ5*#w5ivV-_iOR#tzbQM7L)jyFw>vGs(i_ut3aWVM6lZAYt}?EmH>!FKF;UA2uAPL4-{21Pzq%tKaFes&X3_aDn@ez~CFXXooppP=6C^A?Z+J zBNKu;Y5N27fsK@7c$uUL#Kmb9gm6`0GblzZmwkhLOzkYZXkpRfqFhX4f!cG@*!b;6 z%q4qCY;8`q!&Ei~9nD^V5V|YoW$mn%rYJjm=KOhgA&Hk=XuXuUeCd+E9BccQxP;C4 zm8{m~JSGKF5-0g91l7|Rn@YgkEKm!8NsnX>C!mQv;)2YF?IH)m$FQ11V-S1Szn8sR zBnd|I+rPeJE42Ws?iR^H2$44SCtWv+e7+{Y@B$PCh82Fo?RF{>2)!M$7YtaR>}10o!~?# zhhV^u5B{E;SPwt^i0}3TO6sSnsG+N9Nxv!yVy`GNsx+eojm4l65oy4aVKA`0LZY7@ zpHbzi6FgrGn$1M4SKk4uL&hQ=Mp=wfhLONHou}2YrhmYQCJ17}XmUKs#dNakZ`mC;gF}L-1j=KP3yH64?LIeqa#rL`iN>Qo+%^ zm$I_k?f7X#mWb__Qg|J`Y{f;0;#G`9FQ#QC7N4c3b$}7uGa$InN(O)k%me&XdYmn8 z^^E1C)f}ib9Vy~& zh$`6*xEKXQe<|zor&o5e~R5?yDOK&#ZH$mUbuwil-GndRnVPDVm!F5*s1ub z6RjU70H%?{Wr0m-ztK($2Xkb&5BJlc@%xe=kl6elPf0*hQuIixJ{C(ppidO>i;3#b0~f@k5e@<*#SnxbI%PO_v^p{ke?w$A=%KD@}Za%-8K^ zb2f+&o!O>2rt!$g*XX)oG0CMez~FBz87)CZ;L?ESXXf0I8LQvnj2) zBN?jg&IiDf2T|pJ#M5FeHM7=x9jF6PpTKU3DP?S~-g1aHMz%OhE^I>UBGq^0mZfb0z&9Zjg_ms(Ora@A~ z$YgtQv3(y=q8(6ljBF<80r(&~Vl;mth4X+DFNaTaKKt}Cw)*_D&;4f!Oy)n&*RSxk z%edU-%NX?XXZ}()!O|)Mf4&_a7crA0xbR6DRD%Ed6XE0daq^}**jZHHs=$%zAILt) zuTyh@#uV2@pi$*D0a9mu z#u6S!h7n;HqjhZy<@@zB``xVkg_}WVaJ2#JvElg@r1G|?o4zGmLG>#ZKyxWXeau&0 z{y8@M)vuz0TUDEiHf#v^e?~Thetgx=m-QC+IA{p`zPX%&q|`U1h8*eU(Pas>LEBko zv8H6Uo10~oSwn+kUNAw!C9^yU2%*y(Yl3QBn^?bLgWr^Zb@W?f+x^b3srN$jh4}ap zxlR6t@l;=<6;P4pAU)#eFZhdHu*K!e1Vfqav(NeAub+L^`nmsWj{TZneeOPuUG|^F zKJ}Lp7r`qR9Tl8Em&E+WC6nU9$>a%;i9eo=mJZJY^Bl>+W=9SmkudV$wRExxmbf4A zB$6PY)MBi9XKI&3#jYi9lO~o(ZS+F@$~16fvB<2OY~7e-AJABGx~W>iNEegnIAUZ1 z8pIFosNhHe*0(Ra^jYKd24PXrFs;R{udt^!uEn(O#rzkL`XZm#4=?gNED3$-g_j=W z8l>C~7zrq$Jp+nF1@h#RYN5$u0+FyIefm2Y;VnF2o^`2upL7%#a8`HTtH|OnBLl*tBs|*nB+%-!{B$2XW}C#UMl=u>9eU zuuo<&F~usY;jeB~b#@7pSt?Ul#7cbr^{;&T&*Ojn-2L^-&%5GnN^weZKo($&JT7y= zQ3RYjn+2owDl9hucF@glp-}mjW&IfA807#Ic zf=`{Qdh4yX>MRDCC~QJ4_<`j^?E?#?K;_*k=>!;W-iE~>uiu~y5cvTnBeyAr3p@h3 zB~_Z#Xp+^0-IukQbf&?ND0Bv4ic2&-R7R7B#lxWsAQELBT=va4YJXO-k4dE{5#`Q2e*kGCvcui_DOEOyJSx9~z8+_7n~by!UK7(y!^ zE2b%9)@W{7pG>DyS&Vf;BsFQ0F(yT`1%Vp{8465M_8I$YX*{DmdO|(Ni9E?5pJ_ia zo~;oIM1OG!ttk>Y;nDbYjSwMh*m!k`>cPB0QqkY~>je;ka^NGPn3#Y4rlYIWUw6kkIqkPbj z9xOshhl2q}sy@J0e+^agKCxNK?6=8nfB1v)F70*g72~(dUiuAO8+K9&?SH`tssMnv% zbORF(^3EtWs<0Hf!b0oCvLBxhR_`vlNrK_6JR^7=b|RrY@Sxd1gDKuF@S{mR1P=UA zjzuVp$>SRk`lhID04s@fpRyUiv4_EAeSfX&Kay=91i`~kijjEY=ILhviD+Jg^Y}NK zFAR~W0$M1Ab3tM%lL^=OhW^J31TDVz?)&0eTze>ek$0R&68h>(VXQE~ci-wq7c18~ zenOe)#EFw9PaHpfQhqwAV>`YGklJxgAj)?~NqyfM-z-re@@oi`+OPSCeL4Sy$VPxS z+yzQ)KIQ~PzQ62)ci%_1ui$^>&Bd@HB(c|7rn6K?WV2VJ|NH;?+0Xxtja2|fDbHZ` zA+GjLP45Qd)8s^wV*-2y6{Ae}1iD29~++)AyzecOapv; zQ~`XP^WF!N!2tY#4kWI^{J&m<@ZeSbmAc=(^lKK3>A$RE-{OnL3;*}?$abERw8dLJ z`$eC#du)u?U*Q%(^+?%d11)c_g$RIurQYfRC93T*?Kl?Lg5bAk7jX}V(%1@*Jc{RQ zcm&3L-<+327H>v~vx)Ar#=}FF8}*y-zeRyXGYG=#3(1JVMBcsdV0$;rhrFu?&Jf;% zA{s}Bpkn@5K)tvY`HJBIRWVbQAfpFd9MPU)4po2V9P$-R;tRBN#jA{8EJ28ay+~L~ zeoN0oK>cg_@BfJcdO^7jtcUQB%MQULNlP#y5m2W_20$Fsj#r-$OI4pbaY}wXd1C(L zUz|EQbL!;6$ElOYajnYn8c@j5%CS07BPI5{Vnoaq+t=VuMTvkxKhr;1{OM=nTp#^O z#HtpQtj7E2zV|+}F>k*O@*yTd9sj;c{A<$bOdn`ys1@ z^}xA!@ll?{HeHJiK~RY9{{}-Z_QGJ4UA#NN&UB)n*b9fkub9uJ;}vvSgtJwU{kKB&*;4&UpDR zX;x7)OCXdo2>(Jzs(w=Ky|$XKh>QAHpw7>iz!_sXf+7+~ z@$8RkJ_a>vu*UDc2bl%z_~ZZaCZr5ny4PQO1^NoSp|aS|p+24$VWX@x#m|^z|3_uD zQJyVUM$5?iw|E)x5Rl>d?`}bbUEKsj1>q$WvKOAISIJSh7`~-%(l=J4)aKnrq;4|M z@-QEKw}EFkH&g=zjhk*%g){*1&O7f~sLObfNzwTN5L+-D_>gxvVXT6JHXs;fJQ=cz zW{c8w$U60X`=l{;E~GC+qR@!cU)nQOyl3-#HB6#Hg|wbD1XQ%6q-@q-{(IACqNDoW z$;kPt5Ti``v`$1+U!d@ixG3ts z9ZjV&<9O{cKnQ<>eoPmf4}o04+bUmIeTlhhr8*OF)@Nrx9|lp;_^|E+`ZMoBUC9Os z{f(t?#IL{hGF9|T`hQ%gX3hYG&prDb9kU;^qUw-5Ga=lR>a|GTqUuUW(M2evt>SX( z_GPxNP9CLcmB;b)hGhc(Kz(8&eakXj>QP=+m3PZ{vhm>`$y4DJ#&8+(wp z(Y&Yr6?`E|S``Ujq)tXR@pJkra2qgkm`Si8#P6%G8n5ZE{|MQD(t4Pp95IyQ6H&ZL z3;H}^IbamA6LF3B24L6mtg2HdE2oSZ&b6VrCSR{>| zB+(r|sU4@#7B7Q){NJP+P+!njfDe$z7jRf#eeo6U3<#b37#ZpxV3SHdm!~x*FHGH3A*+#@XX_ z3WR)Td^abxG>Ng6f3V1Y&c$$NyJ;rWKVQtI6m`H4;JyCV)kJ_d;5@JzoIbOI3l$j1 z9-}=)NCbJ9D`zQ}X}AFDbF9NelgPZPY=L+7*p>_JYi;KZRp^RcyXx!3VnB_}n>O)~ zsysD^TRpTMgRNhO%^rMk-8zh-KY-aDSo$E(em}?)oe!?tCeB9HY?6zj-N7Y=3RYjYp2hgnLVRnFMcp)s!q>TuwNZ1jl^~aj{}V0Zr?3aRKHZy-+enLT{Ze{ z5+lFhU$me>Fhtr9Zw2@90dt?yzt-Qp0(?*DjLjgZWKHJ3L$%3jXW}C-1@idq{ypdy zS=oC-V>mIoO ze*J;D`*j|bUM6pWLn89S19vEE-MUu5{oT@$##*AY63NaEC5cnkqNnNghZMmfv&;0L zna~B;n>Z0ze}J%fSlGj-o|Z+6`g6;0Fa|~lia#fB8NaFq9O}P0U)&2*$@ad`MqCRA@50I#s4WTx^UWB0}Fp7^E_}F67lCo4~=KNDLXJ*cvK685ZjQn_7 zKXU?eotguE%%22ys44)zJX#@tErRQiQf&UuO9+QwNSpdgk*O+<>XVOz$gg8~5P&EI z$CbiJF*f+Bc+^Y3{%N7?n{ktd#bd_RPS`JBW6Yrh~faHwcR-U9TxJqi>4 zje1g{wOLVtyh%*_6Bww%pJXa+o$;XYfOdb?eLO_Wli%_t_`Ui)#=UiX$0v`v-)!7s z+;)x0K;cVBbl`nAZQ1%-3{D3DJ*Qi|A*(aW3JH%Sr$gop7Kt^QUV89b_{8lzxgoeWDhM z3UGg{a@3#(tNn(q3r3R0^w(da&XO4m(O*@Qtn@!Eg+!DgLFiunkC%f5fB))h^q*fc zqu$S1CkCCtYIJ082PIKWj!h8rL<&I2%OvErZ$h4zEM>P@I~Rcfsj(U${dV%KsTfG# z_>Vw6ff9r{V%q%=fXJc$?!_i|^HI6ma+iL$fy_;$Zk9XsyEhW>B;wt97p+TDmH5zx zM?n`vyn2)Yf&#m3!s`m>q%;A5_ac-o-~zJAgch(&gu5pd_)|7|0iClM>zGN=<*^J9 z1yWnYNw2)D6YA;+bY!SnkxD6j_7Abqhbq{?29c&DOX**pBdtnY=-Z>jD4?7`x)b^- zeP+pN!GFZL)AMJlX3xycE)hFnCUK;y(^$(mV>vxLbDrd?6BJ^ENZ1ZM(Bu%0;*ynb zHEEloLLet9Vj5)nCu^1Fin5QHC25JBg%+>9{4!${C~|&|Lt!n&V-W5nK~Wly zjtqhY^SrGoTyB_P#{-4*ky(!WgLVq6CU|vuBbn5+iFY(NRMyvsne_YdoBPCX?$z$D z+-2NpxnurL;|}9a{f^o@sjKd)k)D^n_J%v8=Y=ahD4K1dF%$-DRu~Yyl-uq12O?NW zARx?pfB&GM3GpPJ$WTUNpPCHfNJmS5aVZc&@)4k~a+d$ARVr+q>7lweD1ra*X7!tI zzp1~Yy}S55VBd!TKYZvDSfDTJgbMtcbie4E?^F+2KUxcEd;ECiQ(9cn1niF-6M4mtq0Ko6pZ`ydl%h}BIBOB?$$7m&X>0K z+}rP1i?9aLmXAC1wU#^XRJHJ(cgUZl78cf>l9`NTwkFlcCBP5ehGGW6eYrf`g;c_$ zQU}wA1oR2RB!UdZtz#$s-z-$V)$mF>kU@XR_?`C31uD{^Wg*my7U``w|LU!GOd3#C zQm}x0e)5TirIv^S3P+Mcs*X@cC0jXRoT>u8%`7^loCb?nu#!G|&fM&r`jnq$&McO{ zDt@KoOf@GdiS-k8!pl=T!%|g_)_!*k@PMl7yKjIFfBve1Do6ja8Zur~r?-Ff3DU(6 z-WT;7y~;oSQMg>9-pk-~XbV;-QvE*vEDhu%m}x&DZ&I-N5HPP$pl2){5fp}QHxbW9 zN^1E#u@djr$pg?^fp-+N4+{(j#A){}y_Xnw4`#aaE-_GL?cZRS+ti1&AXVR3e&hB# zq%|Upg;?pVI{_TFD+afj=?CDs1CB||B=B4)!G)NIm7r}|&j4y5;^9osJp24}FQQ-m zX`QN|e#QL9Z)#s+=8A-*zgmS18nD2YLi$$PTb8#iZ;LZgLt8M= z+DWhzxFEg8qYIoY*=8}wP8mwWhxEA`(@2YEO>51csZ+^{V5kd5pPMl#zfAtHa-wn! zRfpo7j$$a|n{&Pu1WEdnCZ(jPS~`?8x<0(|gAZW_-xf1rr~ed8PA3a@!cH`?o)dI; zgtnsz$5B8DtAv)9H`XBm{eG}GcH$-0ww51K^zNz`Nx2q?REj9cOlWF4 z7+*#sYGx*R7zisNRD+!u9+eHPd-VN_X;z6V0qhw2HDAUd-syn4DrnB%)Lwr2@P9I0Dg49^v`^Gbs4==#pHZ|Jz&z;+i!*^A*it<` z4X+NwQ}E&GXP$eOw!KuhW?C|3@PfSARxO05_|hAeKQJWn)*|XhX-}d0BvI=hEAfbRMnrq)oDcPU*3({p6n!}eiHVu z&s!`>1nE#NNpb>=6ZD|`Oy~gLM+amYK4KWM515zD036h7m*576ji;#FTALa#XaF@( z&~DkhdE=u3?<6DLzgYa}9)g{I$GK}!!{ar#-g?U|H{GJ&tlv~kKT*HYa)Wkb9UUt^ z^qcQfqCxi?ZxR+sXmz;0a(}-tedAb32qab03dlpg#GEgD ztilfZud6|K`frWj)d3zDyVE4zv6oeU6X~Vwr!n5Myl+53(2iwxfyBV%fQHH4<3PNmxO1qYe-hS#q$GTU;D-C}6HrI6yYmjh z-0f>`({DYW@OBH1qiiB(xuN>{8*b3Aue#wz?S{&Y>s3-xj%1dzvV_P?OPENSRie?Q zo@Mj|k&Hn63nAMaUpFE z7n;E`OQ4VxAu%I_UoDoEW)>ixZpiUt{6iNJ;wYOy;rBx%Vj7rq)m!}2M+gfkm)?H+ zkAL_h`ij?HrBDAGxCX)AqJw$r$d5@z`}fJDBus-~2GPF6Vn7D548lz+Bx=}Q#*V+H zK$7702#E;DO%}TEUXqZ0r@nUa?YG?~esgo>CgaAM8!$)Zdi}b^*I#?x^*3C1{dM!# zTW(k102HVqsa(Zv80}Fuss2Wa zB4G*)&J@1Yq*lQI6~fp2oMm3a9+ryEmo{%9%2m(JV;Vtvv$N-(t(ZV~Gc&U@Ri|d= z;A5qtMe9TZSpQZkBjFnu+LN}F@zG5m6V`AT$U7uwkPOnxU_JlBZXbEFn>$Sdc>w5DD4|3FNmW+mS!2=@TBs(`mU0R?Ms*Ka#t*#u9y z@rE02#1NJ1jBBf}yXLyewZ?V&we!~*cReUQT}*;NS`=l95=SW^noR}Z@D!Sah@;hd z>7pMy_l*w? zCPSFd=RlN~=wB`~nFN>~F^B{*>DCHMPk`7BguoLgD<|}0G^~z&cT9@a`xIhRLwK-E!hVxs-jO~okxTN6m_pVh zvlx`phc4g~ls?j@U@b9N4HkiZZ8QvrfP2^pTqyV`dUpP3`?f7x#1apyxb*;pfkZ8V zX2z|STeO?C8;u)kue<*G>*V;aF|Mw;_L{4&u3TfecK#aUTK(?J1x8E2QiG10NGjWz z(wDl_3Xq095Fjn@h)Bc&qOs|WO%_wYXmB)k;Bl@Co+0t8ysz4^kUAukmuqErAl=wS zq)?_j*zu?_Z%Qg*mfP}?n$H0aQR3)yb)>}6zCmz87eZ`cplXl~MAa$6RMlyK*W4@) zK=Pmzt>7P(`T0e26@IE<3=1%=YL+^6F*#p8PwS^?1)e^KI#%U>A?~D$s~v;O`%Vxb z4R-<2pMNf(tO|kkhu4Zh*eCQR;v$vsrOU@_G~|0qQJ%azgs7RGtW4;Xm1o3a&;(w$ z%R#v6N_a@EPJjk~ugub}o6l0e97VF?;w zS87*PU3ry$Wz|*k-PKn;V#X-QPqocQdO&8CNss~<(-^037X)#oQgAi}MNY%nC|s;q zHA&_|d#VtH1V|vUSOX$j8s88#tYG}(xo=7ue+Q9(Xd-o1U&$^W+4CYuOJ}A~G+VlO zhk{z#@kPQzlf|X2Q>$uxebz!YR~D(v*NIn%4Ng^-l19iQd@q@V;59#2EjXFLX5y~d z8CCu$i_{!FMhuijkU609#pl5Bn`K!EtvbQOZ-a-=W^;%dp#YwLRt2laB~~%OhQLG~ zfS0l|j8K8BK~dS+!JGBF>PZ>6#>S1LajJd-6@(0N>h{}jVF=@9gD_Q1kkSZJ+SLZu zsJZIOtFT7RRaabbrFMmJrR9qGD~u+|1ur>A zrl^5dYBE=&AkjaVN7}1eqMvxcXG>MT8#OBe$v@wv z_!t4daL+K|@4rWBPgNpTdG%#vk8Gj)=}#fcR30(&Ix`jn{Y9#JY2Sp9hahgmRcH$| zHVC@f^4FU;ZrDJ*xbFV@;l_Yg61i@@MJItQ!cQb~Xt;;vs<|s_E;o&_=JLv#Dltp- zn$?#-LOm~zvOyAw%*3evbqi8d3ILpMoEuBAjixx7a5X% z35&eU(5A$#v(ReMTW`L_rdi4l;{$UWFo)ELL?`^@bj8qWDj4Jp-xz#VV;5b4;29#BF}ql-BIFARUcedc?#BRI(nO`a z5#|MpFp8m&F9yL&KK=;J9_=-%`9G-4E^dNBe*VG>uwu;ND)N%p#q1_Di-=BvSyUlT zCoroM>R+g33i$uAY2$`R%v^$#P!`^fIdGAiZV+&F&9&E($?=dY@R7^$2+I|fH8rc( ztX^|^b?utftJkc#L*kZ#yXL4nD;S%au?M*Xdr0JhWHIegESjw}1i?}nB7>6>svguOZJXB6u!aOL3txt2;d{v|{9@KDN0t*yQJv2O-gg>4doeE3#z(;RDMMj@#=D8jj`IYMqjO8W?8NA zHGf&n>dRKIHrCyyU>4N}?y+O%PPKV}#ns&?mLRaD6-{5Q{8gVIW;+4pv(*g$S{w>>x`J ztY}u^6~=tEoHwCLTwxA3sO3wm%qquNgk#_^7z0?0LHP5+rSOGdfLa6!hOUf$Vv%%Y z@CyCU7syT!#95yq!(r9V2k>t1UV&3UaM8*99n(f4%wBMc!;b@Yr8Xbx?}ytG>JfRA z%I8$(jGs_>Y{w@y8XJE2@Opt)_uKBpjV_5?EO3S8a(&JG>blET zUwY|fm+6;U7QSjO`IU#nb(LJ^mmrNOA8EirFvkRB1ueWWxxqDT@E8$`40Sp9#^IFvspt* z?sJ405d_7THis3&2~KHPpd$9r@C_ZykVjOm2Lba3=lG+u$|j2xQ!IM7ifY@SN<>a@ z^nN0hjEqSU^2O($h)MoL&+u9kYzh^yTltdsWPH6?iDW3q zY4aYf6B1DRlG;Mnz#m8!M#VzmQ8mxGOME)1Ex`n07%>8wL|evp>X-alH%s>Uxuq(5 zNdBOJ5n&Cqu=Hup+Cy|2Le+o%xpY-zL(aQ07W?KOP{h9`75cA5je$LcT73MF>ZOo2 z`ukw#vy|rou3VBe;I2TtJB9Y$_~<_YtsYcK{B9x@{gIn*gcXrMMVtcTUa2eZs9L>7 zzwDgV;t?l9cd zl#srvK8NyUFq~bkq3$$gyLlsfjyM_ruXco zOESomaUq*cp)LbX_23p=u)COHJK3Aw$Ui^4e%(3(m06F2r6h6RV4C4-$=g6$eT}xd zPFdj6$|_^!qDxj?vU24mmuM?3msD2nM4@EHDCHBv>b5gR&Nf$<8l6MZ4wyowgcy)F z!ljY5Uy}FX!_p5HstVFwX*6XOyn<51C^K;{Nd2&ZSOF2m9Q>4pC3hCuvbEex=`2>L z#Vt%!>0qcisi>g}DdvbchR}p0Xce1IXohalbY17?Gb&pcl_knGu#_OJxmtL5$r^?- z1yy>@EKIKy=u4?P#No&q`giBS?J8(1yQ7#x`0#4NldN1;O6Zq=!_u{1Fi0$RpjA)1 ziqs8r$iuw(45=GfOHJ++RNK}p+{m`ALgW4w?(pFKaO;9;$=fuegb%s4MuL-uFKBBl ziwHrO0W$E64rIar7JXi$_#;nfONc}&K@hf7A!uS*sV}aN^?y(0jSG+&ZoiF2AQhfU3>^KHSL)nzk*#tautjrW)XTPh!LC?9l7ciggqVURq?JpWMq>mO!mO`J*HTSD z*0Lb$=W2H@!(kP(@!z)vfmRio;Wxljv(*s}Qr)M{XXvrtJ> zRYZjr;6e=I$cZxw8DRwT@C|;h!Yq1?ge0!KibqmXfUf3o0+SB`Hwl83=7`KKE|W0y zjokjP=?og5-9(R_WeFnFd)p)kUsDYY%DNY!YoB@Q$5Lza$`;KG!cZ}rNn?SapQ4Uz z(B6g#cJAD^Z42$CNB)WHuS{@z<1{m>|}rG@^D zxxk`MiffjjeIOy|9R>@@$n-A|qDb{1IuuFC2jM#)p@xwP6|(6B+6D@_9;clM)Y_^j zDD*+JVgLCdl&SX-fhgi60^M-qStlS1U;=Ovu*e|y8kbaw1Lzl7R-C%1`r?Z&`hPfj z!apiV)z!1IvPW2Qv#}SCBMZudipu@W;G*B3=Iq&Y`Y*z7NPFDuRRB|!LZ72Irzp&g z5jy>erKkfW2h)pYTLL8l z1l>gXg~gD-qhDcMZmjuRz^LHRl`BcQ5_h=l-1Ze0tg6_txPdvlpOr!VhU zary)w(l6u^r=L<2faQS&dP%f%k0VgvEw^W$V{A;=B^39+c}bLVf=D_3Hx;WS+^gJr zN>o{7^r=j-$VNpJBZU4MdeBFO>|>UNiP`y+5_@K0T<7O%B#4}*DwCT|sMk2>ze0k?gf!(E2#7tYAW_<>`k$@= zh{7l_ge2z={((@UW%s<Of18z4sdywvce}?Sm!7HsCC_6h7B@V+{sN)F z0Y8dJ5)gWWer+vR&fUnt|E59&QIEM%Zlx!T6m&Xd70iyNetdWgb2+o>;x)A z^|-Zp;V0FBn{=wMMO4MG6XvRNb>Qm46Xyx^D$WZj0b%z!8fKKu1d5=`!P?O0)9nfB)+5AnTN5_XS~370P6sUqGfr8{tla0aVp? zTPKGu5q<|Mjz=F^zutK8f85WR3(S#27mm&hHY&gq-!J8^uUy4NUn$T=yQoS6%*^s? z?z+DGA;ruIyy>!;0bT@!!H9^U(!>}7JcSk!9wq{aqaHi{$s&{}^kd?gj z*j@n4A9?aH+NS9#sj2$F@*Fc$R(^HNf+w2=%y754+7JEj#1tAi>X=nbkyDmxO48`% zunTg`I^bQq*g_mPR@7azoU6U!#B!tM0Z1M~2r)!y0euiX(jq_&$O#wAG;gS)$f47F z5XTTiRPRPwn?I9FO(9DWCGdrGZ1r)8skaN^bn(XjVvxqfZ zJjz%##P&U{K=VwhSr7?O;3cRghmLniF3n-d8S=mX7>Qa_};4 zAZmaals2T(`%OmLJb3B;6X2wmhG>asF1i>d2!6%Eo7Jq`Z-J45BFm~bpjynd223E| zSikeJt()Y2KlG1s@Tz|X!2|PoJrMHyg9pPKV0evCu7h2wS6sy1Hi#wK^12I`U$}hv zh4ag=VvP&|Meqx2K1rdnaEXvY4J$FF+{Y08sI>a`>_vb6xJf{p82%SBbS-c9=&$~R zBvB;HCUz9$_~F9zF3T9_L|uUjoZ^-Cl~hmK@v7s*?>Ptr#?;_pB$AK`=U@)xz)$Gs z8&bCNX`Z-2KsUZs=v^YZxB`EXM0&2|T{&>o5RgeJ5&6lP8^`Wt1=rR}cHl-?Sh!jv1X{#aE91_#` zrbd*lf)PbRp`9>JFxJjlixgs!bSC+nmnN|^Aq9Szfrawu1W~0< zG6ELOYyP&GIq9v4gy_@rWU;*ni)ESu9UM`d8da?;f?1R(4i_)ie13s)ISp~ld4HqV za>t3@63o?s%QcreNvHyoGb3{nRD>#^C4x>8fMj;i2 z(4{g}l(ET-)hT?wszOlFq$E`sWySpR%7r>#>&zNdB8h+#b;!WM3};*vJ`6fQ#S)$< zdR$~fv`^^6|5V176-mqmm)42G<8LDkHmgu6g%*@^GEy$9z2t^lzO67&Bn@7uU*fni zv+OkKPTg>U<(!u(3YHU`uT*n&iT8SyM3ou>3(S|HFXrs!LxmVX43}PNR3M|!GnBK6 zD${5Gk#?gggG6(|C=wW*sBVt7FzEEz4PX{ZBr~SVT^G=z%2G+Da@P-^U5gPU2Xj{xX2-i@n`E31T;6kf)-w0hObm6b~@#B^gtt$=bO zdewy-zh${*h8nx!T(68EH$4<3pbID`%#;-?sjMK7MMQM6(U7WCa5)K8NEsfE2bZge zPMlHs6hcxUB33})$yFzz!bhrxiBv>F&>uemWZ`OJhgp=_k_o}&5@1dcS{9k73~6te z7JwpF_kNLBg16+S|bu+a=8?=aCm`_5rq&@-DD$GRKNE=Gn3wO3jyZ(>!fdW zWi1G1^&0K6a|9=@1SLvIq^mqyz2d?PHFfB77g~rbSG&3NG772krvOBu07SDmLK!49 zu-fo1>J#CCRUITxohXPXp+yp?_D&Uz+Yc8j_LmttO~_vr)@3WJ_T3^ns&dw{tO?{o z21PZE((UYZ7w7`e77m^Wb5z9@F8nM|7nGkocnDxr*xFakv%^57O7Dm5aS_ z&n2OrC4?(vQVZcl7YPuzT;rdI7K;;?`C`H8GBm;!mrm^`pZ@7%)f1Fz2($?G^3t!6 z!ik3Z8H8}CuGl;+N|HYAcm{oFDCk24Ct$I)nZUwiDOyBz#VLkpl#BRHilJ+{;?`K%-=CTmn`D@vzFR@)y3|Hm& zIYMqRvWEB1%v2Kvw9|7)aRhpx0Tt?swm3>qY9NgmV-dPVZZ|N9s)+ktBawX`8itFn z>Lx*t(knFk9y&rs3_1gsaDw4fww&?x^(|kimJ{QNGN8k7B06a~b#ztq#$SBlxu<{3 zS~)dDC9Ux?C1@t8?m2Zo$+R89i&KYik*TTwCM4rMiepr#egn0U@Lj4lS|jnCbC+8# z(cD60(U)5|?plS=D;FBeFXqI#5Q{qUvsxXco|0KMWQJygi9r4z`tR7& zB7s~Y%R6t&5Vfj2<;W4d!fah2!2D|&c^1hn35{&ZdMY6lXJl%msHD8)KdI9Zq3&CDeDZecYfkNym2hY)Zf&u^$)lix;cEx(0ll-fp z+NDfDq4N0+pMLzOk3J;IzyK(|>oq2CenmF@DW@+R3Y0=*H>W?qmbjeE+#x3b`7-GnqhQIKZg-opS8YtB9aBGoDVZtbILHIBvz zF2xChVG6cW9LXAB(&%v!cIu~CCIGQcFg{JNsbxrmhP5O{?)@1t!6{WNosx8FLP(3c z_nLqkgXlA_!aaPX7@->E4k1RQ=jy|Rk#A=goe`DvnFZdFn(63W-+l-61s$QdFVV5# z0@wib{yNhe3QsBq&&?>WjLW0D{_l2|&X{k#jOc zrW2hj^ZY(%tuFIP$(vkpx%8i_3xC?Ek|1Ag2<7;Ft8b}j5J(I(IGA`MQxM^4Yba?H zGXZzO#C$JM6X-~LTiEqK%18z|l?{mm_!k7k$iOCxv{h3{aw_^wA$Q%P_~4*vD(%=V z3WG=1|FiUzgkoH~Rz-M0?m~BQ+ZBuv=&r3YRFt1r7-o^&bP!~PljdEx*bU|$`W&S{ znbee@fn6r2*kGezJx^NzQo|iKK-=E-4-+=bAMsZvp>?GY zi3ljo?!=|qN*Zz!FfP8h!bPrHe$gzs)4~fg7xVTi3G!@)RB=MKO;hU#ED;gFbHdL` z6G#+$0tFR8tN(E^^r3VA^Ayn{(rS_4a@w!Bcil7l>8Fdns0U~5ZG~v)G!lr0vmP)B(9!~_PaZ@f{z-niDdT1UWw_Wf+AjC=#@#BeMeCvDxZnUdI@9g zih6>1GR1NyWJj!85FtHE3PhF6mVo0pMN~g>kSCdhBG7)z-858EGxS%@3o5-FDaA#1 zEnPE;#P5qjq!BWVaMbvQ<5b?ywDiYHoF!OI21C?wlD-71oy7?g6R_EA$~IeMq%V$B zc&7!Zj3j8okKnV(Ur0zf&$B%;hBzrw&Rs}h5&%|nJRv9zho$sZpF)+I0<3Sv`^Eju!!=VGe**_A)16ZJNwqDt z-@PXoCqVaR@~2Yyp>_C>g+nY2RjG>_M70TC6kI?XjMOFXvq5e!Ijj0JN}cOKYt_-# z+^BLFz~HYpAbC^LL-Bd3wx#=s*2=i1PNr+5;?^icmPz_jEXT@=E0-)*QXjfvm5Yty z|Kc?J2Y93l-~}EK1vKX=hybal8Yh>PcB<4vSS8rY^mq~V;PD^4|DpEL4;1wJ;>*v4 zC#4;r#B7j9NNp=>%x~`WSwO%b-&y&&$j-Tk+|_S{t0RhXmM=>Pq=7PJq4JRvxFRlo+ErR@(Mkt&Qf3i^_&Wy0I#t97NF(pDRAbUIa?afw9HS)%C5i}g#4@>-l- z9ifyADrWAZr*%lGWl8$a0jorzDTK3h4)OTkvvzo)U?yy;aZ zZ({OY{&?*AJ8hrf{edUt=L4>WO9Gv=p z@@Ul_85~03s;K0jJoAi1%%4eS|MjofrU>QmioA6%?^MYP!v8>O7j5hJ8x$cMzE+8y z3V@gf{;#I^l@7NoJ(5LK6+Bfk`>Zrp)j@LCI4y+V#78oZVja#Fys9X8Nmw5)Dq}+n z_fn4atdC0<{pcOvr*$PTkm#wfzcgV**^0ox6d0e4o|9t;zF{zB$}zDpCnSKMYNZrl z`YL0nPO8~)9!<1N>3fWQ{};R41T;xHf~c2u1e~pTJ4r}V)+*NW?RR9R_k(lbh?R~& zy$bO41-Q6bT}i)H_+e43R+L`Pm_zqSCgKNu{tN|aHCm*j9H@oM32B3y^JUS0y}(sU zz=Wj)lyay4>v>j#MfIa=&%z`ceK@+D=h=Ju3RUYuF(nhchk0v{*^&vKN9;4RJ547V zeKIxL)gj}%aKdc&`e#|x!5S4=ccY+^OkLeXhF1rwFsY1Paisd1y47nq)Jt{lE8SKq ztXcx;rK`@9dy4*rCA-t;uvw0L$avyXVQJ7IEfDU~!ltvQ9(Tpt%_izQ@4QFIR1hB- z%;)0lL`-T`!AHDRq8xY9@+Id= zPmjP!H8o2PQhE%Pg%;u_IY`iwQay?Y-mIS#3xF2Gq#ptI=CBS)hyiub(j-*OAm~2N zAe%Hc7{i5&kqg?iOBC>1|3S#G^$#h}7wicKsY+Bet)uX#46+$l)LaS9*VV`r0f2VL zrG^~qW%HN*t2)amL7GheE3heXlR*QnrXYH{NWc80IWnlfdj8qNl=K7drGHebs77k` zFOf0IS(<~Jl74Ey+cfE_AsI!rEBXoY55zcnYMsleLMIo}giCUMayNg0mkYnhg`Cqw zd`+up0VYW{H%`dzN8{Vuq!LwC675hE!7H33^EQf7lnDAPZ`3W2TDw_tR^}vOwGu3J zG_R(RifSZq`(yuo3(}T{fu4$26tJZDT#?eL+j%Vn7xVoxQlN1?7t4GHb7z-noF~mY zIDpj_OGi^%(@tAkcY8a^t=657wb~jQb~Od#ervZs;&Nw)vNoF|(K}eq1-b+NP=BAx zhNv-Pj|Br%6jok*ibUw1Ft!e#(Ywx_b zVIUFk2lCl)Qq9R`5|LOqk}8hmQ=^l^2Xj6CWGd8?h`5qbo2@m(gBEc|uD8__%j6@mRLJABd0lM} zZ|d?UQt^<_)85|WjRmb9zs>9Icyy<&qs{L2N^`b5Xlv}~bavT%JsnnGm)+;+$@seh zk!bUl`!{cIY3=H8_-xi)jqN)&ZK-c;u=;x1oVJc0kFPgr>&^}5M{-EgJT7lI-#?s- z$J~M8g0rKmwaMDDE8JP{vDw2>pWEKq;SV}m8e6&=I|313OQ)m9W48tKnSqIca+V(M z*!bYY6Jkb>y<=OaCqCR4N%syFUDlq=M8V$GJ25uM11r0Sdkekca6TUB9UcgU;vr{u zoNCnNjE6hCxnw@joRo3KeR~HZ9&bDoOQn+;udmP-_jKF6{^6-HpYz~P_LnA}I(%?C z*A{g+>L0H6qChd=`yLZC_*If6| zV_h_!d|p|*?)P*B83*WT^F}TGO}IGdduuAc5-s`uHTg)DKa%x{M)+^>ynRGcH3I~(jjopss$oS-FDmFAVxpz7@^xQLh zB833gxHZ{ZE;t$*BhdD}xrj3okGmY1(ZRUg6?TQQ!9c*?5zh4aH$HgZ_D8R~bHk?X zHowQ|FJyW%K9{F7Tr9ip+ZOfplz2l?Pz4=r&>W#xAhvPn5X6Cw9-JW!6euYG7sLw9~K*ukp)Et@+!+k7!cr@d|GE^pf1)6v@P z3B~*!4XFH`o>1232{?N~wr+Q@YioUL$M)8Ez>XS%xDbg1;+bMB6Kc1G(^+q3ystbs zIur_I5(%Hf7Y~P6LT?LX;@u8sXLpM|7z}#dp?ugE=E_Dro=~JPIK$wIcr zj@`oEDF5(4DoYHC2T~IQkxVjd3-=G_^Mm~(lT$+pN4%H`*t@*N()hugy?g5eX~>Q7 zJyQkG$aJw#94q&Z?4C-wUHOp&yiqI~D+fEa?;@zeBo(rWPL>b z@7dRvu@i=Z$znFwwB4I<*@D@8+#T*Kx!lEMbR_KR9m@Hft&g?s*xcQ;Zfkc})2^;u z(QS*S(#V4Iv8~&4iCDH+EDjI2>l1Od5u`kAJzo1`I~}eq+q;rsmp7F0#|n{X|DnM` ze{XO9=wv46>59Z$9&Zl;zk6F#cO>d)Yi!%q9WJL`u~NBIF8jN45xd{h*=_f92Ldji zpG>v+fsRaX+>`3f#d~9|n|D0C&6N$gdbT~x+h?6U?Y3ypYHM!j3WOXzR+pa>3_9%{ zEnV%cU4?;I$lm7Zvf4x8E?!w{u@%z+N0TQI-kbA<(*b5XS{vQb6hW*slq-((#(P|m zk(@t~cKc{XN0NbVcPP+hZSL&yCarcK>dAq8*dNIj;vpEiLMm47Pk95eSjZR6k0-V? zcDvgfodth)F&T{X4;2d;uP2lr>mM3Rh6S1Xb~!xuc4v<-UFa_*0zs=|xPNkT;>Zz1 zsM$m?y(eW0kM8ex+kBBo+GDjkLaEmEP2R5jp21Qs*;`2T?KyN{v^+f8TZm`Ir$_B$ z&-MmGj{NS7D>WA1Rv!tpG$-IJ?Xsh44qou{&v9&AU^+!|Do}NI! z*1EIN-jf+l^tfmZwlwzy{H;x$j?O^J+t?B+4UYBq6=N}1d&8~{U!;`dl9UsPfp|LX zPnXlFbif^nWJdbDojviAy~WzHWrri#?o4C@kv#v6;lY94xIdGMg>r*QPc)w>jSTqh z`BK~V&cMzsHg|JtEM@hTP*P@-zDQwoboW5Kw+wsQ{m|ydZEbFrDkbviWO1OsP@?QA zPwgA*%_njBPg2aer(g`ME4i0zN(xvj`9_PmG-lDB58gq2J z+E+yX~o9ps$?CMtt5P<@L4=+ieY7@7Z9B#1g(}bBDLf9!eLITN;9i(V(@v zqiGCQoepFQ_8pytVkX_w?d$CF=Mwo| z#sRbGP#_%36{imFo*d=|H3M@RHa^zCR?wD?`ug<`ZQQnDOQYTCb=y3imSA5tYImn1 z?G8_?uXms~mCuB`n(M6rUN!0IvNu^%&YpB89_S3E%cWSLeM^I<$C?=&%J~DizQIyC zn@ncPNupFTn=M71u0%F3k6q$q*+jNf^0NEF=k4is@_gS=DUluAGnDAfCW<4YAx|mp z@g|eajovOtp_ERP;;tyyI1)}2hsA|TrFy#n@yKThDzlFLz8>@qrpNc z7jw4iScl5Wbe~IJs2+>JhZ33f5c{w zhtnC4cW`?D?s9Hou(74Z)$M>Q^+#Qfr2tM>T&lCCJOOz|6neaFU8Z1x3&3pH9Xdp_jK{^&j!0&yLu9F>rPjGcxY!^-W$pI zvU?Bg9f+l(E>C3lKyP2%=V@*Z$2uHok7Q?WcQhaE9S(HIQpHj}YPH3CBf(^$7)!*H z{*axcPZ3h~48#+mE>Nn~>S~i`qbT_{ZEfq=y0OdE;Y&wd_6~c%?R zZ!Vo1$cLy=^YJLII5aXeKEhvquzu6cTbgz~bZ=uUo63%`N^8#~2q>Q|P4sg^{Lx%~ z{NU8?>8U-5PPg3?2_*Vsj{2>S+9yYcN0O0Zug81j>D_z!(nEAY`U(fic7V=cXV1YG zsZ}TT9?H6tF}4xgT<-SnNTPSBbokkP{>i;V{nTonDuhE|vay0UacEyWS}3Oyxnee!Diorb;o-;k z4W)e@1kZr0+tp=jVZigzP1df4osT|ZZQIe4_Bgz*?xt>!Gch#i4J3NfBNP3Rd?Gbo z^hV>cK&QQ9OM}&GcW25BA(h4l$dExYYBZ87<;M0nJ*Xza@pv+qaN@sor~Cn5EaP^O zN39q=m-h!;PER1=bA|FgUpAZV<=^Pb_onj$eeuL#Igtzb$Hw!7kANqhEtNC4bRik? z1e5W>iELlq>Tg>A*gb0-n>OCPp?i2=d1xxpe`GKBYC1Kv*uO@~N1sJDTtYJe0oK;r)|+>4Ayi$=#)VAz$bp>FevKVvhM-zHoM8 zBoNJbyLU8f-n?;ROY>uGxzX{F$vx@pbU%fBJQNCcdZLlAGckJL`6r)v>d?VGxp1p> z=R>Vsjkd5a*yY=QaQ|Scu&+N>7}~pMXzGcv@@QWldk{v8rM}YSG%rXWe0-`e-Zxtcz*`68RJyOnC8*IV8K7U8kPIuX7bH)YZl=VAFB&A#?pCS(&IlO0TD3dQ`N~vI~KN+3gU-tBr`@E6sZ&Viym8D-tMXU7g({q0-2 zHb1zt&FizJhX;4(9BqzZTU)N&kMbZ_OoYSC^MtLtHg0ON`&{{c42E(w8FGdEEiDd* zw>*@kIP9T{VHhWtDWzTQPH?v`;4YTprIA>EkbcR*C!T#`?|})nO_V~ZcsLRW#i+fI zH|Mfmwk~Yhu+bXo+!h}uERRp*QvN_sTbC~sa3Yk=C)<7do;mcyzVh_GcvDx8vvX&+ ztWHAbJHkv%>=QJR>1dOUULz}VQKscf0MI5t8TYB$K(J2F`woS57_kS!DkO0hz^ zmwV$Jej@7*WYL295+RDUtjp2rkH?1}-!oZ^?r6n0ZClz?#dOq}9xV0^?B9Rq+7_4B z6CX@R`@KZ-6nG)sQ_tZJjCie08{8979%G2aO1VJTYaQO7OJ<=?g27CG-^hV|2gbt5 zcrqEcb>&M#5O$eDF&rC6XJgS!nkSrhhnlT{;bc=F?r?izsZ21Ibl3un+PIvZ?Jb@_ zJ@gd6uv^)V(C$oS0^U%p5G(e$2Gdry<>xZKKr-P82b#AvZdq6FYuv`Q8tU*dkmKlV z>ujrUOO9zP|BMudSoCqp2g}vBpPoiQce3g|qma-QHxNCpnM}`F!EFdS^Ce z4;3;2k2RR${2gvT6+xB~HH*q@A*2BMC}?)oje zdSZ@NdkSSxHkQluggx6H*%=D^BFVz=uqU?rz!NVX377WU+mg;$#uxN=r4pU>`GeC_ z2Ob|uj=%W$_)v2CnZ5j%CJIBm0aY%I3}&W(G2Nd|?>=xCI6IurxUD_0(fuQ(zD%M# zF0F%!eXI$X;-oj*mE)XpxBB^Ym zJhZnjnu+5Bu}s9n5sqhFh0&DL(V8eUYKkeXmJ^p-#91E?}?hSOeMV;=Ef%I@GJy3MEc&X!(;gGeX(;rR^ zl=Fpb|GtC!@(#N*D%m*T^rzD4fq2l{;`X<-xI;lI%0em=aU{deNSXyFnYhc-?azn9 z{$18^B7DlHIADEulI~vROW{SRUM|Y3Ql~2d8h{Lap1Z?hdD`C*TY8 zv?hllHfLA;u2>Gjb8z2Kyf`|2vG&MfdKQO$1Y zXe=MF=R)rNLtUlay+zPVsZ<`F=<{}kqk(jcY-DW>_b2SGR3x4$XH(28#vQiSU2Rrd zpmlp-s5mkZh>i?7xvln=_LfJt*gIh>a-FVVSCI0-+tu3b^t9~kZnedmcErmbUv9{| zv%_v}YK=`~d)#f?8wbihZ#HLbfs^TMZV0&o`}Y^e_LZ|C&(@~qt<9iwYtZ_bwSWI; zKIoemE7FBe_NU_LaFVV_WT2Gtd2IDN8n$d}@3e(-u+Tw&xHs41?6xNpy#w*?W^XE< z2|4`HK$vwMp|HCrSQ?nzJ32Pdmk&Y-#d`2ncNcfr74&RtwC-wfwtJI4x7X1b4_O=A zdqC|Cowjx#1$n42Q672Xr{j|o{YQ2e2PZS0P(0~&dmCFjU6YdogT-XAoGb$ZSFcmN?a@TQ z9n9xKnZYFgH(8Uz zbF?o!HaRgp;_pZn(gROSr~HMy6cj#CXJ?lqNdZ)>29iTDUs_l>JNi=g zFxCCusbV&ri-4Ojt}h06J5loN+|}LGw6#0svpQgp{OvnqFt4pUcG;Y*?r^T?>>bFK zVgrZv|K#zBsRM^VeACl8k2Rd`%QbYlJmY&y`Enti3wnkQ?VX<9JGtk_KN$}2+Oj`9 zxMv)W7kE7|=q(TD{dPx_V^3)(^vj-!kv&7HRIwZ{rJRvIWTXVeZf7t(+&7p-yjv>S zS|XEsv#z|?6SnmP9lnIKt7}IK`JVBiXk>6O8Yi_xf{FCN=wNR$I=t`j^w`K~+3yP{ z3R6!!{rJRWzu(~whr3*k9b23DZ_V@$(4r~DK=5t{xZTm?V{9PPH&J$X*&J4PD(La` z*m4K{Ka$?7NwVxt^7~LEpO!|m;cyfN7ytv+jTY5al~pN2%d554T7}jTsWVGBfktiW)0Rau&(ONh)0X_c0354)16QxI}^C4zgB;xos>A=mnJ99ogpt6x$gR0QlI!7QDBI{32e z2m_YtVp7pfVIWIvhtR`hGNx)Lr>FJ$;5fvOt|4%P{ZwsePKqFzWJ?X=NaTab&2`Wj zLb~(x7)OZ2WtTgdHMVMCpcmPO25U?R}C-g%SoFtrJ@YgZl}E&K6yKL0+eHVNM8 z{UKEu%c~N~N=-N4U9Zb@ta8a{b^G{fnScJnEP!Q1GWPsoJ2$wzh!oNfBVEF?9X>7} zo({Xi5)13N`A=_dA3S4>abHRjUlDz9kQo+~3tG$(dciKQh`^kh1WtsccT zhHg0A(`kPFdW8I%m}j(mA?)-x6l>&4x~lnGu(`;;QF5_wr;>^@i7TA0Jy z?2t}A%VFLn`NYHXLWe6T$K64@$IK3MdC2mCd-?Km$WPtInZ1~3qGBenz>2ioEGMS4 z+j(9#+rqqr%HxNl-E2`|wzV9{l=%;jqjLHDTtYB$pxp=K!{c3nOyu_-LFQ7)+1Om-apNvBrf2dB}!$}t3NzUiN;c89grRhR6x>y0{LGIU_| zX^A8WWc~+jjvt~+^5PPQVY%y9hJ~{f-}(Adv~+vEyIuPX*%>-M{wr)pk64N4X(p%w zO@NzHAYoUI3}=#-nLl7ecUjJ6&ahp-tQ(keq8N*nYkHwVo}SV%MkRcaa2&OGl+Pd6 zS+VnJ)u|?{%1y`HMX-B^Q>sM}0^Ms!)t|S~@?l!0G70BcwH;%(nM_?%w2)IK2bLg> z_aKiRA0Do6pRP-m${rpT)7a8zPMfapZ_}s>Am+Ic4(ZWqf4#$X(6J@Em=oLVEaax4 zQB`8CFZqh?K;m4i!(ffxv|{%CrsFS1#k`d0-aLF-KOw2o6L9(>ni zbp>B!+cNk*-R}HtoTO$oxgccPLbS+0WC^oC&BC$2k z%I{&Yr;(9lqs(xyPh|LBt3bNAY+O>ZF?;uZVox#omD=f7O*Qrg19;^UCu4q9{P}dY zTNrZS8}4MW*>2uF-2K}}?CE@u6lh^!t#4+l&!6--gDIH0q8q!FlIDY`J`^H{XfSnO%Omn1o+ zDe3ZZAQ}d#vQ%8Unq4I8yTk4KgTom3iDtHx?U$x*%OvWdz%S zmDBgTe0Hd&Rh$TIM$a?NW`|ud;D+rEWYZv-OqN*@YYM}3E}K_hwczinLR)jiAv5UJ zn@9QNM?X_dMR%;ezD@0D6sVTMyAZZ5h0v<$ZZ|0k^~xJbC}KbPrp_?+=AcVECVp!A zh+-(c#!2mx49B^pb~p>pKBkgj9?FcsVBa&;ys~r$#Ry5PFq$_?^(azAGtLexC~>-i z0c)HEb_^9gouyV_!0nS4d$6pYsm;CM)_NSZxu`uwHg^50Z1)`!cPUVffaQ#sg z27#r=&g|p6Rq^hxzkjz^hV22&990dY{Qmu?r@+^sB_y`!;oVl%<#lgUdnfH zZ|d2bI`%7)g&hnBRfg0yxp~^&-sQ#Z_xr#ScwGw>insZfLlykY+t*}?4gsDyrd*w9 z;tFnDEN~nvMzb`Z_h5@)=7VF8;Z~e zXWH%ys!RUtv?l=ruw~i<8d124>#GoTTvO7@YI(b#=1~&jiA395?~*0SL9f}w=`9rd zHG(+rb_u4(D)7xIQP6>ubR?jIX<~H<7M`;zbtQO3Nh(u$sh2lZN?l48ClsR?2Q^FY z5H^meEwLD-Qy}U|inNiJjH(pEOI8**V}$7~&M2Z$B_?#cB%jS(64Z~Zr4}9wQ&K^I z;UvMTj#1q`e>l8*y1l!dDV)%z16aDo`qPKQYPFOgWdvB3beM-)xv>JUXD9Zw)B3Rk@zHTdx_2}Z-GJ(NU&*4+_k zfxz>o(<(2ptpYenN6Vy3nS#UJ79=F^XboSM6ky`L1Hh^*66tNjhx%+i`@M+QzthxL^7LUSD@T8w2ymz-p!7%*9GjzA!(yuYSa2~x z2%0y&MhVC^%NFC@c-@0x{b@FtO!mvkvRcisc{5^`IRTFAMp}%E+0-&q7e~AD_I`1= z{r#P(MY-+F5skV1{4{a0+-NrV82+n7HBT=SrLSrX!3&n!uHkONr2ppaMW1|m6^%lZ zGZTt5?I7||tsf~v-|?&Y!|kXTdnbLx3k8-(bwZ@JYV9sHz)VfB7pM53v&<;Qn|V5) zYIbFF98dr{#Zl~TZdpEHCQXk5XtGAWPwiooHLci!n;4A^7RojDHG&d5=aeo&mp}cw z^IKRJH7G!sVMnw~DqubY#_}~JQ_|3}O`!+ltH+Q~Fq+M)dS}2;P*o$DCoJv+qCxZZ z0L+r)XILC>CTW2?(b-0=jV0DL;JHrW?%@C0Z6~{sIQz1e++^j#SHht2g?R6(Ci*zl z*2QtRcG-a$RiVxY`w4V&H?#D}0~xaci!+KHgL%a)*5Du&v%~730WXZ)Sg#$(K*C@M zeL3Df!t#y%!pD0wU%merGsdW#&9Aq+C1<&fiZ0Oh3CtIe*fyU?MnlF$hHTbFeC=Ufhzy@0u}-)E4q4BDb61=aL!0z^%Baav=^dd)H*K9GE;KZl!k zcPC3}#HgW_%vQMsAQl15>s`E}(KyJgmfo8s*K?ME$`S#)IZa1&u zYBnoZv$D$JdDIA;s4OVdBz;=LSw=QsL7EBS#xe=j*IDai;Fo3WYKpE?qD+$mGBiP$ zw6zg@v-$dZdvnNi)}MGBp=lWN3|L-m#_S{Km zIV!`q`%OyYk3T~i%cAE3U%?^5W-l(-@#7?(Ph?6`Y>hL`$Ls1?xw08&u>Pq+#Oh0D`i%d%qsV7*~<(MPM z!8-5%+rO`;YnZ?jOUzuA8%hR?w+E#idND3_%E@)pF>GA|Psx#-fie%69kS==kcxeS zm2h~vs8cK^JP86`mWd~vE-CPZ%}K6kFdi)5>zF#hDZSQE;A*F+>H75-uj?=5f?;8i zO7swWteaHR+&3s1OMz$hJGC=H6=l|dj)DnKHQ=R`n^m@Z+{Q2h>!XBw*_P=holf)E z$Mm8}R_w%+c=aRNwZoDr=yCBRGGKre~L*=_-mY#R0fTQY6BQ)_dP1Dd6O(HDUfN+MC`^z{8B z=9bA8b*|v0Bu=pnkSsD3GZ(DK8uCIY;w`ZhP!_;KRT;O>VKXyKPSm||s(Y!>#$X7^ z$=5-ehL+A#ppZyb!eK+Q0$1Wh)v~1lwp}<(EC)59d3JVMYy7&S(Q58?Wlpf5BquoW zmlj1^8HP5E>7Un0EwVu&tqSN(2kxn@YZYy)C+W5=Y_tQgNW zH@np&Ny03)MJ}3e*TAWcJo4`8`QfRY9wf~Xd20~|CIL}S6*WmU1}ze$RThjkOXN+S zG<1=a%pi9}5qQZakrc(b9tjc-JG@z%3FbNNe?sopB>)3koF8ruw;w(~lx}f%v$@`m zmbvX~CT=iMQ*1#!ni3S#a0&>P0R2gZvx*4AQsNc!b?F?XCYrFucApe`Lr+)ZfTt-X z0zsc6zPr3%#-nu+j@E`j5skV=>v0m9uFudsC&HIf#X*zk%dr>ktI-emv;-V2$-sju zapuW+ zJ9CmU-#*{nPV?tKR!X@l(opv24i(=x2GZhrY>lT=C}|-U4$idjcA6>>#G>Dhce_G1 zl_ujKa#xW{>_C&aoJ5X+9<3p}ojPh5F0huwEag8SV<*jt)B)&p0cZQ5kDCKXfxcP&%v?6}itaCS0Y(da(co z`tebg3{xM7)8%Lt3$zgtO&ppGEzx?oS8fp6Vzn-I|8`SCg0_GH63MkoU?zlMGFn)g zopLQpp#`+U7AP$7*|#+kZN0-@gm)FZEk`lH)>2r4y3EuG#Ttd2noT{`0r#!CMG99N z`iIJZf>H_k$o9bx! z@GxKQZx3l4S3B7s`GFM22mtugJ6y3bMc%^8QI3#ZiC8aOtSCweEo{G<;BLfqj=aoqWuI-wsAWqmL5@ln#h9j-EgnDZ zz|I)L;?F3ki(@E}Rl{WS-yyO*y@aVLqWw zzDrk!Oaev6NdToyKOD!S6v+YwZ+oY&r*1SJRa5X&DKH0v4fC|H30kbPRxzEtf4>~f z=f%iU0>Z6&G8_+lZu{N+&CHT~nC1A2JRdOQJmvcgBQlrVcDu>To84kQDj*&<#ggJi zK{AclUT>(ueNha-E5zx|e7~Fe;KxFXk>g}?v)bG&aI3ZjB4xf*0qWY}>ae{#RF)l7 zkNE2L&l5*+f?|C=M+U`T9;RtnEi|%RVo5k<$J4@#3g1iDpGN7*aiws^yO6XL6MyaY zW^Bm{tkt}<)!n~eXKJ?tkQGdX4h2|-q$P-&sVLJ7xd0sE;dg_9jzZPeXum>F(998t zZVQPuM&Yr-Bl_cnh@7Y#xI4|xL!8G9eDivoa;Ky=9BLddAVJXN`9PNd(h1a%AJ!Ex zss9j-irB$$!47)^6|;)nJb!ia^{)_T{PN^tpggxE39c|eIgYIcqYWx5me+Bc z$;#aGM_H8P5VnpyRlK6hd@@#;XucZz>iA}V`~6>5S*#dt42OmGM-Yld-kV0kK+7}y zXVbp4+r&of4&dR!29zWvM)&X#l%@_8zz|_rs7~pEfWnn73MD7yW;WY}Lu}byqz^f` z)_LG1n@uIvSYXYX!r4C4$2mwnk|YM{&0%$aGkX58wW%R9lnPJwZk{z}{g*MF zLO|W!R$wv})0yua(V*q^7{dkplq%W4-NU4pL*_t!Z~txwxIasa$QWV7H;xjns8yo!LRTm1l6XguJe*CI*tr}Og5&Ft@t-JMprn$GP7-L0tN?xBoN2c zMLrn?)poKp0JQLGoB_DwA?Nso9eWIS>~(htw3iM}u2`H&s5(u(u??CNfSfbu-$oOY z?ek)*O*5jC<^YZ_e)W?d{piPUJ6AvXRqeEXb=AiW)|_(GD`Yq-XXg}zg#N3Or0Vb% z#j2sytU*TfW14a__qO!RCK&@;NMv;~4|!7)2+>@uF<9EB4t6{6;>|o-fKfwifNJ&- zXqY@d-o@_b`T6;ATTE71Akfw)C@@B$DE3~Scbn?&{ow{p8P8Dqi9YE~g@$yqVLg8z z$SZxIjz{CWeH579XuqFCqP|#8Ld~C|-yWyY-1VZ+AC1#=^I@0D0*?5G9z8rDz%`w{ ze;#@1YBCxpvq*4K+qUKOdTQf3wu;<5UWkSl5y9nntJCom-SajlAs-x4dX8~f)OkQ0 zyC-RZ!1hkNT4uw>64;(8LhSWSnr^mO zgK724gp$>;Fg57U-SaR1`KLes*|)W~b;L63m;HXb_69it5f~XHyt59;G;ywiBnza2Z1Qj%Zyta6;r$~V5);Kj$W*CrK7#FM+u+4T1~?xSg>meq$?SHw ze_WV4ew^E7yuU{#TlaPM0Rh_AAO#hxHcM zIpc6FCkX&W(R34^w-Ed22z+0|ziSd*x$$+k@!gxRU!M1gdZ)$#PBgLGs0_eSSVwfP z{`xmxeEs4SN0?^);>~w2>ZlP=+BDG`;EqC63{dA^|K<&Oj2>F~ZsQa9+E1{5QY2OH z4?34GzI=6FH?s6_jXaSv#Nk!sX|eg%G_PKL3&WHMrV(}ufXKa*ON1Cjg+@Lqaiy*` zSxy}nIjzOS52&*i*?@r-2K`P9D+_wjwn$vNm^!eCivk1{!sR?dmPUu*jg~YovMR)u z!q}A*1WsZFhgDHNfm-0@YO%?SKr$d_rrG4_`wx!~kGTBB5mZQ7i23M|(^qlFu0)5vniGe4N))C$^-V)bCE61XczJEe%qZ2SXb2m%)S2>J$3#yn%$o7vFLi=+AgbgINQ4n^2)I zLzx&}io<5};-UtZp>@`)efz50M;}15N1{=sdnHb$o25)55{4}&59af+PP9YL1--gR)Xx%rQolmE;X&eCXt43kD1QTHSE{M>`6#8HoppI@cr_8}G z(2Pbh>;3)0DpyG0L)38;QBTESxt$?MY>xd6esj_6i)Cg&k(h)fTp5T83*eY{$st~*+rLvS%gN1%+g@q zsrCw_OPI!iog2vKH7;nJojU!#IUZv$cbpVXqU&a;Q?T;fz+UM4GHZMGYN9W>X+lO#fN2nmg$1unsP?B#`!y`R(gEOEr;rg*?={VtcQf1B7aLN;F5nAsx#DI|mT>?CbBE zXxK1ikXE(24iAilRE1V3gBiSHJ>|%jLFu&}zK>%Qt0{QF>(uL?y+Oo86YcWo0V2&G z2l;5eKu!+#`wB#}$6j{H{(0BpqDcZq(}KMxLqYKofF>h6=_D(d5X!^pE~2`-XZg46 zp(4Ppn5&29`-gaToc3~srG+2{x`{`Hz%>zW3gKt!r=!$^N;z3Qt>R>~yLNRU}bPvo_0@`{fq8$gC6^uYWWA`k%i1`Om(( z0)Zoj~5nxfj`iY3Nh=jHfK?)EzL&7J751`s~ zdwI7-9ovi-vs^5nas63>xm))0Brp<8Xs8i^WGCY@RN|-W*)=`^7`;I4^8h#&u(WM~ zQrykMc=})eupI9~a~9(Z)07lLiN>8!8_41`&aJjQ8e7;zXBA@C0Z$~e(#$L8ySk^= zn}|Od80lHnqFWbz$0FP4WswPmJvkZFduVY{C2n}xg%B!2#F8mH4iemjj7Y0$l=Db4 zHO?z^12A-VAew_3fS%GcyxageOtle}BS9JXu|bn;hs#FEb`e=@m{1UInRff?+vY`m zI5f25Qr5ZZyu~>NDO!g?y1iCwH_lpg^Q_;x>?uCcF$i+y>wA|1fCo3Fg_{a5Yn|4& zKRxTA*@dIA#y2?3Kf;k{8~OO8$;Ks`M?}Qqk6HSdb+)>bbA6? ze^MoZ8BA93_Aehd<2(kDKHtrAtla*16`NM5xx-#5Xn8!gB@cCpyXPCgr=&64?(s}C z-6s@;*o6gRi=-qx{bwE26e0BO7ct_SboVU^gh2JuSZ5eah8WbL)!a;c9F#|s1okz| z^AW(xaqP>yJKDl_@Tbs9v{h;<9Bx%Ymabiw!T_;$2-Tf)LPz{2jk{`&phgBpjO834 zHp39?8_|9Jo9}-8qpvOmNHlVvCA!_-8^*I+zi#2QB69TAtA+yOCbh+3t3PZsI&}iM z<5nAu(XY<>BGWh%*z<-uaqN)>jz^&14#>-I-wY{$kEjl*VE;!ZsJ8F^{_p?KzkSm> zA4*s+!aQ_*mSo(!xwn|ENBvrt9kyTdCF0Mz$xA$j4@z2$_p9^nn{x{2WfDT;6R2ac z2wI&G`n#gFutI3@`e{PSPC9Z8IB;O*vHDGJX3*`H=oZu1E-M>pInUf=UW8Rqd9WZ= zIl)a+r5RMm9-lNSuxsKS&k!|Fr*Sb^0MZKt2I)u3M$&42onecf=A%`H`>G^<^#1*N z`G_Xlo14XW8P(6~B;0G1Ea(v`Px|=f#(oaoQzkpi01ZS(WS;2(BLFUH-dC2FFZ0pl z_QNa~Ul;D^cJ0bK_~LzOg41pD!|;?!c?mdXf|2@8wfu{_#zB z01gPJ!=aMkNaUEWUw!k7(=KsrV?&=#XDBhR#Jg$h>O!^^a7E2uo%9LPA$vscvQxic zc`j-_9`3Jx9LZ^tdHqsz70nx-U*QXwPyKii8!9Wl`O&Zb z{>N{q(;BBioU+j_Lo!#=ZO&l1A5c64bFtln(JC4+`{iSA*M+)VjM=WjTn;50_Vlqm z?a0$AN~b2%a)e&6VYu7gKTqd)mBM~n00UZDdC;GJe7KE34VE6)843zcRZg&+B;^!p zSZw3$V+8Yks5(Vrl;c_A;PaP(+vB)x=YUezkp+s~Qow{~g_|vl`5Xmu)ikwiU(yUU zxqev0qjw*k4i68z1y8X<(L*(qSyZWu_BF-G%f!OLkB}2eQFw|`#csVxK&|K|FhCVx zx$D&kRVND8fZ2K(Lfa}Ac6jqCs|gZG_@4 z-!|yZ+wV@kdR=E)FY0f8@#V`mmo;kGupAz9sVo7RY@fcyp&ZeW9>HQv`6@w zROo;#uu;mU)@rf5_6TE@7(Gnk^e-a|baV(=e~Oci?E?V6PEE9qcvKS{AMJ+0css&* zVRTGutB5Rxvu%vn9xqKZjNY!=8Tx5{Y_S;69i^C9RyLoR4lcCKv-v7Z6F@ayiJ-Y6 z;noqQxaGg@=QoeI`erqn<=R;rsS8W0z?+EN$-~sAJ9~WIW@{>g~SzGKP<;N9GBTQ{yP*wNHL~+U;Cjwcoxz$6HrxoSk(IyH#t7 z2Gba{t{Ap;bxzbz1>F{FjW<94c~?Dey?&`Ey$dlk(ds}qTGn_R$uh(9eu+;AIHCfG z`s$40kbq?=1v=7@5lB%Jx>$*3%kdJYouk1-lB_*L4;Me1c&Ji1{o<_%;bBF~fkqc`mFvQC6t1o+&>&Fy` z7m5>FXLP}}PA`$o>FOA9aMl1lu}`ywiAtSz`|H6`^sRMqi|0 zf}#W_skt)i#%S761cr0~h(r_2{G(ZbCQe=I51Z0xvak%>*@M>vsmm5K?Qr{k9ip#nyam6vc>b6bv;F=48ud(>1pvlC863*Aj$ZPju-%afTrYuE3Zm0- zP-YWWkJ2k^F$fF-ES{PvO-4O``Pb|@GZ zulca3luH#fSYK8koEk)vfAYM`ck5*L?Q4cRul1n=F}k(b#|F#Sfw;l(Bzvz;DDn76nUah5k{-}B ziN`@jQ3_5}G;X{@nS+8@j$JKxnU7^J14@9hPs#`L$Z=?|!d|3m^I5=avcj~`F-P#& zZrX1oY=sATRl~*K8a?l#SUJ_WE`NIO+z^>B3|VJ6vBYdQIa)X z_#KeDa;!+8vlv7Uk!wST zNf@mDRQ2uc^M13R&vuc&-7WTG3++0*H3HL!9JhkD5daJ@aROgaOdOl&Wb*hqQ>3Vx zrM@W5Kdu5J-D=c!6&JpuSMITM70+bp=qdD9o*UhaA|&iE*UYx13%Zm9zNI4zE?Q`v zL>eTY7Dx)1sm(`)uBCw;PM4c(aMd0TJJdh_>yLkm3f{}BFFP!Sz+*@^*a6B@P?vZ4 zs&{#rXp-M)v@x)>+JLgY{OY@A`{Ja9JP;v`Co!BQsv|oxf;z+IHyxSPW6)<%*e#Rn zX>z}Zz$N-9)S+1#n5;F%GN;f8#;zp1SC+?m^Ct|$YGVFs8Pb(h7FF_hQN4W ze|x3M*xvNfcOT|Af1OwF3TrV*ibP~_O{`Wxh9mhX)EFyIlIhm!^Fq3tl>q{iaOYJdH({BV z$!a$n2j~oTfJ0i&2b}U`=}Zz z@Dc{%0EjBBB_*0;EfdO#L=v)z0$)&Mtdb}$BTq&l3R=>cbL8I8pR7o-K4dvq#e1{_W1E)=v(9hiV(M2a7( zDvPo|hmo?|&0-7MZ8F7Ol&jtC_ka9!gMgds;y#D<$mywhKx(lSfsQJtNA)GP*dcX6 zvI8#mpmmyJvxPq44q7EItA()72vAv6v*8@%J4)|W5 zP0+1bM5vImg}#B+%vNv`KyV!)k66^v;)MP^rqAF|!dUlr|FF&RiQ+mrh$bxVfekVfF@1exncEM$JYS7Rv()79 zn%Gr}_5(&`ByfYO?W)ybu|VPaW^*_!m&=>k{D*)0JoU#_8pC4_eH_})Pbf^dMK#Mj zlw}{kPEGf|eFdc3_JG=H{Y%dAC!arHWH%9=Lg6$e9uEY5@K~~z$@jsWNqoQ4>xnjR zZyx75X-ujgK23ER8Omxp|M(yO@xwH#{`;RpAG~LkfsV!lbJ&bl^TH1tJmhq+-oWoy z*rDt?+1wG$qiY~^6@;o&Ou~Q>L^n-!AnOL8NYh_mhd8n7qS7a#@F)N4e>q{_{`iZZ zoNyF!_|dvBD1^mNhwYP>Z!WsW7A3&V-!m9OjazSd2+%t2bS);lF5^R+S zloow|NH=;mwsG5K`%X1263lpbOTi0fH}|^=8?O(<$Qet@+$GRA7Eo+R?qIur@>Ps7y zU^Weag%`PMHqJFd`1*oVnJ$~TPPr(?fr>>C#6hI$**Gw4D_P&q_ka3tF$rq1!+HUP zZ~V_gL-TaR!Z99*TKeX9k9qXp|6kmL;QZhJE;geeA4fO>74wG&wEIX6 z+S3q(jJW|z%LPN4+Zf$_@wIr!MxLrmQse!BW?y!k#=LL4?N8Rq*uGFOKt+rE2H`Lj48`BZ`SMnC)R$u?W+tx@0R>uF~|7s^g1POq!BW9?^kO zA|cz!3lv0Zypzb<0xegCUNoNXcH7ECCKZH@JweA@j^V08k>s(B?x=3y;T14LBE|YN z-&{NBv=iNgwWpI&4!qMs{|cPV03qFF&gaX?^~3#rkz{)ji={@s8RT@om@}RBK)CuA z0R)Y>Vh}zyP~}|2=3wxuk6KxZFSql%zx?6jqBva75&X%l?eFpaqjBkep#`@GjiU6_ z@y3fN&am)nEM^^r10vDp7%$M#F8TS>$9?hd?+JT7eK!V_j@UAa)f1dts_gLoclRYk zy&;E|%H){-?dW0Yn~~F&kd-`b!O6^nETW9v8l?iZfK7Zn(LBh>L8=Z(SeTjsO5lsL zFaGf#fBwsFzIbufL$Fpu91IFh16A35j%mC+LlhHj_DBJq4XMFUYMRnnr`Nyw?rX{- z`4CN_iU7D6adFVpA{xtL6dYrQT+R&>wXn*ic9V!qheV4AO5tUD4!m7S@a~e5!(1Vf za)E9mvfr$sRp`is=_dAZ=mrA*!r7>tA8vDKK}bjSc{f0n5YB73CKU&}SQ89QWEj^% z58?Lyr7$?Kx+;qC&FcA@AsHHUakzZ{!=FB0KYw`0?eS)!aQm@wo!&zkB`Wr{8_?4SR&}kBtrO%l@&M0ee>c&R*7u zew`$`S8wVqNcuQQVK8X%rj3f9hBHYpW1)NB&I*K^{6eR?EM_M_I7mN>3c#|O3x zs~3Y8NeX1|s+En#cRK}hn!eUb{sv1RLw7H9m zGgJ?CeMM{|=F)G!{PkC-zy7~~RfagrYyUIy*F?Fn0O)+!xav}hgsTEjipy~Q*Dre_ zk3#e2RmV$^&_ioiVk$I=z;lmmDa$p`Q>ec($fwxW3|s^u*tYGcUi{Jskj$qB*c9>3W1_DR7C6k)0H2iX9Bxpm?Xd!KIoYhj6&SKI ziqvjPlo@}Cs{>+D0Dwpsw+|&M*PfnkKCT@p1lTuzU(L4bd8(M#g=%-C^@G(GX$=Yf zRdr;lRV-ho)Dci0HoaMBEyj|w)ohLRgzbMrK&?h^gMdmtb9$YP53BxgQ=lbcYf@FNU z>a=;Y9STq+j-?BfNI>I9eQs49RS-N6h*PAV#`lLcejcF#kRFnldLfuAXb7-lIOC}4 zwkCU3OAH(?rRfZFq5%#Yh7i^~QR8K(BZoEcfIv`_*=|$mm5;_91zr#qD>tepDTYnO z(j_aMZEhbS_ib;XPfntQd2^1+3rMh|>$}}{TwcGsKimK!Mom?*IsASzUG6`8zr!XR zj3wP2xz-Cuzghk z%=W-=QAEZd8TaCg{(O?-s?iXzu`V@FPcP2S&Mxa6HqFV?ma0fD*QZPwW4sYbsNrqE zmLN>C$T(K)V?!sp#$pu3Zd&F5(HKnhXkZ#%_FEjHw^)48VS?&T@Cb@F8Zhjxf5<(U}rg^TlR&^B8-(?dRV=_zEpA z*Gr_Ya6MTSnZY7CLK_VpwH=9pDuEUeja48j-m%!niP16)bBLmv_QTU^GZwtuXS=j! zPdAI{ZUISy31D*t2&ziD@SVl_%S5q5w56MVv92nt76)}`VwE|;SgM2a6GW` zg%#y!fhY0!;C_H@j_XUdSVj&WbFO~;SgTF5kRXw)RO~<{{ncpuG=mf$#K=gAF)9v@ zpOIJkWMy#}#XUs0y~XqW*6WLWzgtHwOzZOGoXl~r$B^dbc$}LG0-d~hJaq^RS_{E% z0in=_FdZ>DQm3>N9;rr@s-V!Ch2BOS9k@m}Mz3iUVmEVq5hOD~bQ$vUwE60S0o(?> z1!Gpa**I7Rgm7U~cy)VdhC!1Ax_bTjZd638!!lQBz%RH~j{>u6WW|35dHl?mgaFqw zPH&$81z19O{a86Nf4wBJFxlS)0f|+|5iJ5!CrjIonPA&gFMM{pA-Iw6;Lm3~?^`P}&o4 zpdcz#(An_1(a~?FhY9#;{gj&|llEZe;ldT9e4WxDJY27an+5~q(#PnwXOod>Rhy63 z72*N274BJpO`VP7$@O;Qb_I*+F@r(3)oQe9l>rVSpcEBOT{2QEIVmj28$99z0162a z34so-fT8=fvr~Ikf`z%ojX9o$*23PP&uY?8m`tHO6o}MTv95F7-f1hM2)=nm(~;ey z5w^zMKFV$6Rz;}a4Auiy$NEiRz*PNowRn6yzGhmt1tYWB?Bm866d%iY@zL0zux!s+ z`qq4fyN4{!KogHY>>z|_~W58QEX0!TQnk5U;g&Z+i#jE)m3pz69=#xX9#<= zn4KSgH;&&9LF6XNW zZibo4MzPz0Z_F_H;X~Wbmp)1a3>cFX*(dOF9IuH$(RmdR2o?c)^I{c!9%v~>ajt|C z3Q2Jd$t2E6Tx3uM`Tq0M7H2?YAz21w_yqu*#Fj+(~bw7Bz+vHN>wZ@-s=TCpwXT=g1+@SV#yLHXOyPMnJz4OnV zr-kJdIf4X_AE!5W8_Z=A$Kke`)}Yx zr+{n~-YH8LqzATtgi4SQGK|sfWcTjf{b(hgG;t-50|fQAzkd1MYYHQ(h%0w8v|pfy zCv~z73V$3Un$7a%eKwkdlc(|tz#6=CkL$KEL$boeqk>jx;s598&6*rX(=*GTGq+=7 z(|s{Btu`&CDyd49duC*89v;4u&V2(&00cmQBtQTJz8qjUARXo%IT_3Y|u!Mn0cfR82JZvK7} ztJndT23gh+Emf+PiXlkUYVottwqY)twNQ)23qZt~h-xljzHmPh4_M%NO$cDi9v&69 zz8dRwhx4p8c)Qy0I3uYW^2T(EWy8hR!wTvHQZ@~trNbvX*lc94SU1utLXrsfT{JT z4me(^v4z^xQW&lRi8<(u2yn0)j> zR7l28PXtzQ&gSR4?fU*5fezBGQu}TaZ_GDiigR*?3X`0Qm#A#id9LEN@?8tFUI*$D zqwH&}t6c~f$&1F+uPA5VJUu`Bb+Q%zCRHi9x_5o!cUi44_UF9PYYNVw@3-E*q4TZR z^2+;_4c4xti(#7`P#?ag?KP>;b}Y44*GsvgQ4!BB1f{jTn)M(@Z8uo=nl785azY<4 zUzqs7m)c!wvH~3(4ccWTOKl*dsP%`nlw8=R59m>ayirkkTbaIHo&3Q}vkp4|St1HBj6Op_1-PTx<*SMvr1TmIMN1nlX!TI$}-O4ZO(6)5rr znXnk&Gsa^zNbuv~@Ol^e{mC$F*OVsw2#A=~yxbrV$!xZ)Rp#Z`&6_rS;brKKFVPBg zczJotn{B@I^LzekpIe2=?WWT-OJ1vUzZ=c^-f$G^TBCLIY4P~4vs!2fian~Qrqtxx zlX5!#W7N#VBB>Hb>CX0F-_LG7v2vbKEj0$)6_Y2*CYx~?QgkWx<+Dt(An(WA9%m6l zb&y;z@~BDj<+}+Ho`zQyG$|>I+05D5%P%i#iB}1C-eM$hGYPk2+ncsby4;>QxSf`S z<;}xq!X)1wy!|+;8C=gftYP>Vulh|m*lbqY4r|^-NjGq+MMb?y&wV z0k`QO=8kKPS+C>TZRkp+JbIj@SgPQ=E0cY!hIFMUN-qeIlSwa11c-U~`i%hRxkliaSNB1+Sgyi!%ah}d7IP?MUrYI9ZrCxrcOS`zghbD3OJ?TdtP-ZnPRNm8V9zg!XK_-Nq9|o9a+wM(T~c1K!I^s05DWOXyWI`r+k%k>f*gnq5 zN}?)~;&EK0c3?nSkaeDlJHJCGJaoOVE{&J)(t^>{Ar+X*b0XIH^O!+itwbV{|!VeKq;{=c~~JyRKfnKXsa$7I`5tRSmhy8|=9gk!TsmoZ_g_ zSo$<-%Xwnp3Cru<{_)0l*|-pls=EMouoY`2>fL zY7~GjMFCqV5^Q|FmnwXGGM(2n_Sw7j+7@77SB1+$0toM)=C>4Se%bR(Q|pXbIyJ-s zuMSgpdl_R~dR=+*uc$hj^~v>gHhQ=px7x$z=;qJ6@cz~_c$YIZpWpv~|6@>Sjfy14;O1JO1|8achJ#0x#_yw z@VE|b?cyLQa3^XkAw!i?-LQu74sc{OCn!Kf!;jO; zyR8FTVETM6TlnuDV{&v z_smIj@oMSfKKkF##8g4?!1^1a+1|We2VI3tjUQsX;5=V3@>Ra!U}8<3s{qyf zhEWqy9OUVRv&>F8uyeMN& zF7PPQP4C81FqqlZpg?!D*_gs6dcP8or0b zh<-)Q3+Z?vma{`Gr>|yPk%#j+FYu;sXe>Y0&}+pFW3nE!dVecUjjU4M2iGRFts9W;Z~t9)}XYp4%DP1g70 za{d0@myO_1o{EyAE$tT&2&Fk68-^v+Lxa)ac-?`e0~Dg|(Y+>* z!l{(v_~0Jprw1#o(}&glXJ28VO|IJx=rr>j5~!!_NMMStH@Xqy}u z*2D4jV11?4fCI4!Y~ZA`g)Hy2VmWi1O-Hot^@m?Z&gRBvLnNloDlMym7KI;Uqd)7& zPhTMy8*Xs_`*mZn zy;?Zc-kyzvx>41ccm_3h@$P;z_36A$Hk(zbKo9D-9=6@d!&Tc-8vU?;^{~1_dsHD7 zN3n0mYN!>2vn>lz{4rPWSRRCpCNMLUJBBQY6*-$W8>KAZ<6qv2Cw6U z?a}sf&~z+ZxJvHi$Ok9g=l5Db?rBu#H~Mijn>#!>eevxVUw-rC@GO-8Pyx6VP-9ti z%?u)RuhuA0EbY)__YA4AL55uK_jGnJdiL4jX~AU{FknG9`tWfRR*7jnzi2i%$29wW ztj3crnyg@`ojiL*l&es|La{%sgX!ImRZHm-+(}X8g-(VF;$=lHR=EZvNT}9l@Du{X zbtQhiY?vg;Zqn?&y@9+x#F!PfEkp1j3m(Ab}~>R?Tu%#jtPd-J$s!>fBW6#XxWM6 zX>}}q{_tVjdoWz+kf5|rL61-v0Ucmc`)6*>GwW-SP$&pc(KC5 z^?p%@G8Ed*yPtLrYaqyJmR-}Jl7XO>T(p29X9I0=IeGhG3vhWD`uBHZ2E|CWwW^0> zkZAE}H{3KDiy)pJy}Jd)6l}T$r9GhMv!YRd{b}E&?-??*Gq1alGE%L~(=bse)RCC+ zNe-i>no082)wGJ{Hup3*O%PktI#kK($Sq!+D+b(8kW2m=7jXXk>9^l~^-s^A9=$wC zo*rG~m3T~P0Fjw^kw{j~0utY8A{a)l)#R3AmJ=X8o}Fg|i4~%x`k}krz!zQx zMO=Ef*W2X?wgLoqDr7JpniK2Wzx#)0Cy{tGNn<^Mn)xCE=OCTV#j^QR$=}-z>FMam zEL;m@x1&Wm_mdqTCZj>TN+u>IiF%!_GgCOb*XehrERWvYJV1$pyH94ertTp!Nl+1l z)LAh*^#ODaUr!42Ssh5|$srRP@-6-8s2*&mX92fkfCk6d-n*FXZi7R zINxs3JeR{oU{rhan{GL4hGCz5raSfhao@$Fq#E`5@4mW+O~v!-wu;?a{{#=4BQMQ=oEEGOJb!`xTvu)S9o($Z^_h zrsL*zyPbE(KmGD%xV&CWR{+3fpSw?g_1E8=#4?FQESibLQ|EC86>_#{B!pCwxA1nV z6`8Q|3qjQ}2r4uH-)!$L_gICT-XuW z>-5{RG=2uCxjf&!8C;dib{tGhIeKw&oTCM<3bR%3^23{fZS!7f){@bDwm=O9hbn&K z5w__)G?@#DVT$$sp4cioH5|7Mi)@g|#0SL+hugZKmsrzGr#J5(aEud_xZDJKs^FN^ z*$TxfcG{Xv@o_&Z9fDRi?5R&cxr0V{))`z)z_~P_FLpq&&mhFW=lwD5;&dz5)=dYH zl8fPVdF2;fpFc^}TxMOgsp3(w#=bz+jd@-1Nu%ZnG4=bs842ZyQ#g6`{OiN7UY=#L zN3ULvrlbId;Au$(;JagZ$0_TyM0{C zXB7P4JxDS=l387{>a_07%YxFM-(HVacT^fyFt_$C5uB{+KHQ*eI+o&ntv!22tf8iR zb#(#I$8GW`;<}H-pD_3obd~P*s@bEiSkB zZ`#-vyjrtsQTqY6IRVjX?4hhYHJc7$Zk^yO|F(8m^`UIgU2N(0!~N&CcS{+5KU=DbB0AopZN6NwT7 z%In!Gw+L%K4m~N4*ue)?&0E0LyH@Y<-E}y;dG~O0Imej{_=$&Wi?U!MVNl`@jAo9(ko&ay~=tv>*yqz1-jxuR}BTkQ1a%(=ez@bZIoM{59Q{(p28k zD(A$uV*v9E2fj1@{Lxf)?+2!SpsmWA-b)s-DtTepl z!X5nkzyImYn_b%n1jjQ8VU1cQ>bLT_`Q!+?)k#FjRsIQuoLaBpg%VhpLo5UDa(xB- znLP@qH1K;-?xZ+#s!8^xR87k=2W50Z)h`e)CNX-5Qxpic!InzXo`BT9%N*< zX!yWlSW$EWCudlDK1S1TP!r6A6_nUg%<9aph^vXh0kHa68_&kVT z|6|e(dC=Vd$2=<3isX7N)K#Nqg-Dh^?ue;U+Y?H58BKx7QhqdQPmy_OWnlF@FnbdM zm9tRz@!-X`-$(aToowQm7Jtd6PQ=>)%Q?wmjt&qiblU1(J|(b_L8$|6tJL*m*y(Vu z$)9t4l?$e| z`FVZ?_3h24hn`FSRTWf@H2EB!$!^P#PF|lxGNc>j8lC|mOQl&nEB=LV$4kd3%Kc_h z1j?^hg$PsDqA%oib!gAs zX^T#J^6)juuW;R6J$fxQY7#M|UfDL%>OTD!!Vv~kE2Rs42tJjp>`otsJO(v|e>j9X zI4Wf9m(!}5eR*d00S>ABgA0vNOP5t4t0-cXCqgN65oI!<$-1K!^A#bgH<+^tdocFi z-c0;TDSFdhXfQD!HVv6bc1`X*RO1>cfO_|8hzPkxk@CBzU;g@8IfnwcLcvWcs%F(? zEMRx9-fR}m-ciq>kk!29VNJ*>>BCG~A8VqLKae1sDAZh~Y`$7NE(z7RHwt?Vm@B|G z_YCvF9@fG^s9b3oh&rm&*PsY-A|>bAF*OI`A%-ZQ5L!!mUcTFqZZBFM#o>KVUjz(8Cn7N^cwHmEPj&rpp$$?J22p zQm<<)SW~Zl`1I<12|oDQax*B8sp5)Qvt!yrqhKw%)xL9GM_gFG$=M2L%I3^ctC+?pa?!X$}2 z@Id`~&B^Bv^`eIzPOa(<{!}()#SAip{$Pq^3|DO3Ta6e+DXGl&-#&YG9#d)kLKLEW zMU;*uUKz8CIsDjCxy@F1)(6#7d2fGgB0p$%P}wq+bo}}Kw!+(8Et3X?*{u^p;MT9F z(<$?MYGO<>Bm`WTK=KLV_a#XwpF}fRLSu+K4*p&X}405 z`XykmYGu4Ym@?_pTUso;K7E}ExE!UD&%#Qt7YfXL7{*YgLLAW?!)@ZSDArV!6GXQ; z-AzKK|AUswY>5612UbSqMo>@dYb1Jo(tMj$HC?pcJ%(nZ5CemdDfmD<$6>xG3L)17 zp4<}o99iOXf#;bbfe0Pn?^W_nzlH$MxsZ#ekm-E2vu@Xl1w+a1WtSpb=L#}HM*03= zwf30~P_(5Zf04*X*<6>?ne6F{e7$D#kT+o5@GGjGm8RXQ`sCYZucK#27m;sY97Xc* z4HFkuB`zx2RKeot?GT*Lobv|9%2HCN@11I^AgUFT{A#Y=4WW&mzg9&j zR(kTA(|qLM-~jG|+YfquhBL6nD+5nP!jWgAXz%^!m;Pk4zPSr5p^SOHo!0#Jr2iLt zUfWM0CM2C9@xU+@mq1R%EyWV)!$QMZ?Z$y|{KG%|m~Qu*U>$w#NnW{NVIC2LQgmw^ix`aZLdnHi9nmdPcg89zHf~O6Jqp%rB(p=btl8x@M;bGqRq5q zJq;l)aO1FTRs=2#>vF;!`G)B9(1kI^Uw}^4l1YEfL`0k z90gC48tJKAhPxk_Sk=WFC_;|Vn{(-S@X@dzmRf<8-O!TDN(Kg3h9qqXVm^^tyX6w+ zZ`8H3)T!c{XRnU1W2>jh(8-lO#=YGz9?hoZV#%jj+{Qph&Q-|gQ)2Y>aZ;5_W+GKJ zUli&^A<4Qws7R?CwAxfb5(>DB=RXDJB?gO%+ic1a?e@{{jg=Rfd&Aj`poCRvQPgr@ zKb6ERM2$p7^5#f*(aNjUMyt!a%QT?!c`m#BHn@}N?d{M?o)pGgH+3FPVgIxMWP`%A ztR6yD2S~D0w%Lt$Y;M*1&#fT>?a9>b7QXLNx9U8sT+AfC!1h%tIIO=lg=(fAtMa}7q#;o{Y3Ibzt z>`dBaK?(xcZ^GXK^8F2q3d{TG^f)5tU!AH#L8k#aoVA7LN4a7`<|;I=ReF|TTLunW3f@@ni*ifv_ELW% zbo5t07@8`dN6(cWEjBV41OS??$1A;mvmbyonw4nx&1^b!2iEiv!^MKz&Y;!tvN^J< zi65UIK0TyrzkWaPW8$38m`a-}AZwNx`tM z?|S_XSj$o)C{cAonvuc)mSbK%o>f_m!SMD3^ouBnhmh+qx~*=;#82wG*=V&Po*UTX z$!514Qfh%)I>T_bPf|8uZHS7g84be$7d^k;GE1uEtq?_srj|tp`poFtL3>ZOGSi7B zHq$}aVp9nXC{d~kleyPt-ty^}kC!(i6X#;5H|R7M9#*_^x$hugQ2@Pb!t9c*w5=tFIw(Whf9Neg&6FbhOx&Gu!!U?!-p`1#U zo_zU3I(3vTo}U~YAHR;AlV>H>Z>w07kBe=}XPfw`QA{YBr5<~8Hu z`)|Ja@#XOu{E1H=-ri3ax7!x10us#u&oHi%wE62;hI}=1#M44JsSJk@v&R;l70*ZN z)nDGvG2#Mny*SNq1>srMP!kzZcV(R}bZ^wf^@r%E7g)8R-`DNij~Hou|IO`c6LzM{ z)y=0}pK1op8>&1U7dZ@4DyeX11rcYs!3nu@DqXZo8<@x*=h-hTgoz zsN0+^Cn(B%ID>s#;#^8eX&el1KK|#%+<-pm^jC{!y8NME0dg;Ka{zo+Xtf)FovLAT zRLf;95T%vlS#uw1gm9k~+U@Ce%c0MRhMR`(e7Wr~?yrCo;8uAND@a;7ein(Bf=7u)M=X7n>jOJd^whDhChiRLyj$?z}TO-GA>Ks8P`IeK!M zlK-zS3*S78M=x^q_2;)YcLOxHT>==Os2OqNYk=NPniAYfgFPdy($~q>!>7wWzZ(l! zPB_{Q{dwu|A=fHAM+~J1G?U|CzMM@L$%QM8K`|~VAl~Nvwyox}2EXcbp;i>t_P8@z zP?GJ^sBO=&f6lMw!TQf@6u^_q#q9F^_4?uQc0PK0zjDg$p_40mrDjebPgSlWAu)Us zdaf2P%?Fmk*AW&(sA(qOvr<8jl4h^9nf2GCBsQedonCi0wISEnKpgTxl3;&9Yl-)qnrZ=ZGMrBnperG_=rGhF#V=+#}@$L^lCFI zsg1-Bao>zZqS1r%hC7)Txriqt&UEh@Zk3ZUNEz+x<^1N7w0PC9x)WL@9YksCb=d4T z*jRXF{Fu>Kzj}K5^dy}~2wWRJJ(6>SzFKC!17EjgzfL)GH|30Jl;tJOa24(1`-stL zBUi2|?P=2)jwjQ=onsd=iHqx~L;abSaKI%6{ehk_t%B5?IwiHgSpWRXo5w3R2#2@V z4W&P5_6OH@L5IHdtkLePDtv4zRaTwDyR24>3UDoS%8c?wxUGW@&xT&Ng-W;VH#M#z zX=L{6%XYs%Ubk{_sa0!l?#Ooa$8XlEy+q<{_a(DOnb_%6od*kZ9&Q5Dl8Od3b z<7z#fHL5f|5GqA8guVnyKXvXK{E7?YN^&4|YQY@KDqhyzV;em5VC9w(4KVS~Q`*x? zq>)naeDb<*c6=r*&R>v zYHHGzrbR|^`14nxt}iIUj`LUZcV#I#Vk__IyBG_gd<~QDMzR! zp){P52?ekL{hSx1<4rdphbu}^%}R@H80-deaDN?y-BBYcz{3W6%b-j(Y5WcQct6|Q zb+tBci009M)pJKP1Y%RE6Ky|aY^z7prtU&pC!0?^1rUn2`=DQjM>Um`E zyK8P1c+>{7j-gTMu8!_L?yd)o;O4GP7#FK|`(J;W-@nDANA$VHOH}v9eKOLbU@cmx zIJm?}hv%7O^t4D`P$?AXU*?h}RY~QFOt@4jE`s_Sn$34NEu_G4dA?qgTSIzTu!oRK zJ3U9v$U&WuiJFcjm^-Djk%Je9tg}T?EPLcKj5;LDwuQinKaO^V(rB-)76=Z-7bl8I zg0$T!YcKz~ES4AR&Gp0Wa>4fSW;R1- zJRf?b{PFy%5E`@b@4q=pCaN{yfrOn$-Pr;#0d9sGi|-n1+*~slu6MoP*uuoK_ z5R+Q@;sD`Px8G{Jle=+Qt(J2VvC8RX-Q7Jd7C+sX*r`&d=O-oT(lx8yil0LQ%+s5L z{$+U^|02~~Jpvx!6iQKmXGLhpX}d!BOZ9&|Btw)t~`= zb|x*zkGkMh2Zl*je70NOzx~6*$M?O4>#I&T2rB;jE$ACa`cqI7VMFz{Jvg`3Led_v z33F$rF;R=T$n(Q^PAeBu=aEDvRVbGgg7jpwh$3V~#C?IXoIRk?ZQs zw#^mg_?5kw4}lhp!`9*fC(NSbm~_M1;ec?g7) z<7}?_<__wkv8Nvb3|l#!DX#=+k)FLd;4b9taLULA2L868a`9A0z_!3 z(3;h)xtdN#UZ20bpyb4_F@7H5Yp#{0VkvnP$;vsBrfXc@^kFh*vF4IL#0j))A}#Zf zvH6XHGSs#=OP_haQcR?x07hgzg(|`&#y1(wy}uswm-l*<+x>K7^;#=R8^_p&x7qK7%qHsy6LtS^z-Xx_vW^X zBxkmfJ!_RWI9R+VE9H5zgHVZfEW0zdFi;z ze!nZEMagjs=LPVF!0UVSI)5*-SvBr|`TRf~o(ji=xYO!C|HaI!g`%8~{U%n$%TW=YKBAJ9TKh2WH2a;{+sLM+e1W425`DAoA zBi}3yDr8f!z1ssle?82+nVqtPQopwC*q38uS!=~+_Rd>-ij^JZ&F$s@$Dys}GOHMLM79t^_lX8td(Z{w--G zN@2DJnsB|{ViRBO=BU+Hx05;?5042+zREta2Hf6e(lDN4V6TRn(ok|TtiOIs&GO|e z%Fq>E-9SOU?(!<+&Gq^3&E+XN;LibI471$2|n00DX-OOc_?vh>cc!@OkE9Tbm(Y;VV_{_!fsZE z;=}Gdi(5IBKn~?Qz}7Y0WOe{60xURLXx@^tT(L$I&p18E`-|%ji_Vx*V3V3@G^sUH z+NY2Iew}&pI`69GNhL?$i|4WBZ^61jMl(haGgKT7$CDH~XNaF074w(%)a;lc+DRw}YOVPb+qL_Xz_|&D*`Xf*?EeGvphq?ZH*2 z13`Au>r6K{yUk)X49M2nb&Vhv;R#k23jU?K9}rSweOQ&ACZKM+0Z=oSp$E8*7KMJs z-&1%5ODEeL-oD*_`gDHJN@@8YDcmH}f| znx-5p6eRwI1yDWVz$)`7%oNOuMyCrKl$oO$4`;9eT*0#1&`i_$d`T3!mzZrXWHla0 zg-8V!2xCMisPWlg?Cw!?2CFyh`-Vwo2StrP8jO0RfXd!#dHr_dlTw2CYs!s=IDCKq zp?`c_H0Y}gK-7X7Z3o@vdUwO>#tmB|c80gt;Bm|SpfzEVa!WKAwJ7@<%Z0wu2n0rm zMkVp>Z;tAltJTe$D_x;d3qXGYO_^7<35>bgjF-eSS&Ra&?~Gb%?DsFhxPt;KnDsgV z5E>zLWQeaKuk5Ve-S-MV{_kg1Q3~H~7B|hKNUmuX***6Rs;;X$Sb@QKPGj8f;BOuD z#|VPE>zk|9h;S?HPmP>}AWF3!eMmD`V5ejg8?UQ*Ny@!A$e`a1e1AeALt-Dv3P~`A z%RW~~&>GG4_VMRWKmFluj{H1vr1xs)PhSHZ(2XvubB4sD0b6X`B_&ubdF<{Mmaby) zEQd)QT|J@Hg51WHE@w+(v0|WG%9Amym>}h9l$j;hFY#}z=%Q3aFiP}>^R(=la1Eg@ z18G(?rKC%c2#TUcVW{s)PR9;C9(7!%Z18crZG~|>)RW!6e3&m6_dol z(SR;0%>+di3&d^TE(W8UO)GERtwE=dnqySi9Pnf(wH7#wjStF7QVAQ9%trJwqbQtB z9Z0+N;{Ffs&{1%_2i3ZG&p4og?Yz~V@r%#Yw;@4(PDc6k!M6uLd{gKbZDfWdfOqpC!_YIXyHMlN6%GCn*{_g>?m zNl0dT{qb=P=eAT%Wx{bUY&GJ7l*Q7_fNR#D)EN)bBw^A(FfLb@lhFeBWj-SY5?P(+ zfNCnmbV`M8%L<)UQ;8mC1i-%z zOz4X&zt}G5rT*~4l?`cq{<@F!H#h=tr+LlAMBI$(eIbkdY#(6yg>Y zulUusuTEY*JAeJvcPFPu8D)>uLaH{MO&z@wZo8D5d!9_ls$G#dzCdAu84TyIM)J0L z^I@}@?jep93k)*73ccGgx;u8U#{vTAVQaIoi<9-yH_y&;HHIS|?5)YDS)XB2{P^xh zKXhgURaA$OoS@A3QU5uxbxddFF9D4598PPHmKWS}BO`N;7nbQI(FVXSgy^9IF*KbwDWU1QU zLAegZa(i`4s!d8Dseiv`0?=7 z;j6Rg(HFn_=6ApT;)K^Sb*EstU>TCEjN9zRtE>#CR~B!zHdO@2blnDwfEMr7*$`*} zsDBnWww%(Hh`JbB!#6j#i(wdsRR(;WPJ6bMFP?vKROX~3(Vg+a&S3NNo88@~U-Exb zo{{E@CXNdEgKV?YW{(e5O6D|3qtP0-4bR!^hIY-zF%VvbRg8shYp}eUaNUK}>Xq}A z#&o-04tsUZc}xKe7DKX7tVl`m^cZG6@k%CMy zTP)Wy84k`S9a7QY2@82b5^`+&U*}3-%u{F5h~z!9r^HDWM{%LxS|u5zuiu|H)gqBy z8hqo2weBz1SA0dQ-sa=|lCx}YItGk7X3&Nyu2hNRudoAW7{*GWCCF#SfD11x^xWC$ ztEY$O$ET;SUK2YzpS6a>e-WL z&%Zf*o=T=G{IheEdvz+ph#3AB}Xjpqq({(%v-D;_}M9O(@en zbsZ>E!}-;0v#6mQ?A|VVkFy#pNe({Cy^W_&{~{F!Z{E}g3sUk9@(`rdx7+PvqDFv4 z|M0`p!_(uVL?);Dh*g8_`;Rw+56MvQI=T=|yo6yw7^=bz0gxo8m=f~{%UKMwNnKYP#Dvar zVwL=IO~~uHi*%+SoE{t}g({qEz(@PqUn$F*wQ1$)y*qsRLW%)8ADFU6cDm7RWBV9x zu9=BjU1zdf+%+W|+sI0E_?A}G>=*$+#>E-3SnUWc-H9zTBd?3-7S zlaqvm;s#6L4&vshx8A*Dbajn;Rz%`(HMWq{^wQEDslR?j$8G zlcsj)hwF}5+jQUnsxf5c3i)&%m36f~Ws6oRxRruFYzn7&3z`evhg>9f5~+6^r7~b5 zcCspBld|D8Tf@b&t-`dkUcB%;n76omF+5wm+$?UQ*dp?cQl^L zbSqWcowe)Oyyk6M!zk?SVj6NRU5`F&uQq5h#2{2q18`G8i%F#)N>Xc#`-of0$iMmg zzT-7i%hOY(bl#3#q|Wo=tFMtE5(!|wQng!Z^6V%h)#342>bP@pn9oFuiY>==>P=@;i*f;ZOYzlm> zsKD{qGW}+TAHBxyJFC`P;OA!Dpx-2A(y^#SX=Kj*S}c``C6e(x)8QiOC#ySJEGL}3 z>Y5;3L{jNQ>iD}@{^+~!<1oKLe^%<8+PhW;mI91%SnPo>ygoh4mWx`$5Q@~FvxRbj zoKq%|IzKHYe>jxRUsdWth59?x-_uf{mivq4y2FD40w`dViUy>}u>D#=wOjMKzuIjl zZM#$p13quM->gn|AAXq_b=Ts-Ajm=vUzq1}C^5KNFz)2?!bjzw{^4)``sr`~`gdRa z`1+jI(fXm1rVR7$db+x~?eQjbCCtR4VdX2{`0bF*6c6YMZ5PzvZCP_}W^COv$f@0Y za9>N<`{PvIvNkOxYcv6LYi2$o@K&+wb^JIDlw|qF#j)J=gp;H)dOr|z7SCYDeMUN( z6bOGJ3uxEEVY@w_R;rf|EnrZ?R%2g8!{$@3f{L~{a<-ZwM(61mM4ru$oL_K-XDWqK zUegD-^idC3%AjVt!n6 zt28c3=~N~MvZV;l;4cQo)Q=52dGaJqgdSKFY8{_4N})pt+7_~I*! z#n~29bN-x<@2;1_p=JH?-oX3^o=jHDl*F4=ERcM7_-63sb~=Me=VoIFJoRyPmaqPl zdzL+lW~>Fqp0Hi2OgP&%ZGrXcVq`HTo%X4Y!N*I=%{o$c$fT1|wSA?`ofaVuaR(+ z~vZ5d5i|ygtm32CfTUkC<`QRj$(T5Rk|ANhcb4% zUe4r&ikvQJg{N6DPOL49EkO{`-|!OWzf&`V98hObI*7gg;=ljxfB)v?%kTg8%U36n z{MBW+*xr7;`*_o0@%i(gV4orhiD9ft|c%5+Qa~-fJ+ktBqHBKs>Ry$JJ^A&QucOqppmWgi z)A(pqBz%*}0;JAVO4j6fZjYJg8Lj4ILljj+0GyAVp3l(HRCrLXu}AXnbi||yLM+Lt zIhi^o&idlui>O|}_9Wy|@p9M#_E`3?ieN$OBQ+n+=fLY)#5`LKg|%|oZSr2BPv6_z zx6z`9@`dK&S~EGZbsa$h!L%Et*$ftYVVM^Z?~GE+ufC7QUYrAC%>kD3F^2)BhgKwH z60AW)`WHNn%8H`!snW_Zfmh!?!^QAGAN2SU6RPlg*Iib%?FP=KOfd}uzgo_uPGWND z^!Ur~2_Y+y^K4NO37}LU7sxyx{ARDEkvLqooho=4o)7F%q#`YT+!v-4Om3EoRSV^) zBIV<3ba3J5nYcW1+gBFK61HP3VMWEpjbuqst5WGa_1$tLkx!qPa;`MIefQ=TJnC%o z3BTjb=a08r@Pw&Uwe1G-%YzrOl%(d0`*NsBuUyBeLMx2Wn-+V8T$;VcAZYWG2#E;S zD;zk717N5nU?7dDRlvA8vA0a1@_Y{fS4xPO=gs`ewLqsP>@OjDj?GiXE1sFf5w833Z=xMB z{v*I%C!5i-tf@PAY2d?JH75S6nNt-YCWG;&@*(C*&A@IC8*+8{o*ix*3bMxLORa>p zf`EB8Z`)Py*13E(ua}69L!rdm(4wUw(^{?iMvPY7nViW9_Wj-U)#v-^=;o(~x#2&2 zf|}V13~_KZAF1S<%w$Gl8DsF5cgy9)hUZ*OibqN|6Uv;~YZ7l-*|Lc}o*$GB@wGy2 zw6pC}6!JP^RF(LA^O=R?OKmKZ$VFeDp9l=ZQt_AnblSNjcma=XRi)Z9>B-gAAS)}o zInjjSavu7lp^uLN@3D#p#Huh%Hue3GJOjIr6-;Hn(<`&LEv9oo>|q%OnEf=svlhW0 z4)~gk8?y}&gLMrA>SH4HX8bs>P@}Wbi9A%mNyw{IEs5kQ`8BYLG?F;B@US2YNFJxN zd>#42NIukxP^%crRglhswc?R&%33Z?|5 z38mrIEN%OoK=+UzA~lt@lhu6O&-{mLeYVql8^f03Ip)mF*I3o;F$)kFg=7|KriUw- z>f63sRN@p#uLJbT`Ej~%kr!WH5I+@TF*F>rt3?ls>~>rO&QhlA)63`7>3X=h*$fCv zpc2T(7=o6m)58Abn~puXq$OkE-XM#RZe}=IEo8ItES~#Z#iPBJBVDEgFz$d0GAoSr zd&~WBuGN~OZsT!Hxg7uqOW%D*UK$QOD7Y*ftJ#=I_O^jOHI)?ciTJ= z3uY-s)QGwj2_>`6{IcBOLn388I+c@$>&>Jq^7n)*lg>Q-ryu_DsSu4FeGh1{MCFxx zbEDH4%`O+??R?FHBGrN(FY*k?3b_mnH*U_`JTeAe^5~d`7(m#VJMAVltW5zfaC5jmv-gC~6N#>PK zP0k~y+N>#j9OaThilkbm5?za(ji#n+2MStGbgK!! ziZG1*i5kmha#&V#O8mrWi)R&H+-Y@Elg78(37PZtwJ#Q}Y7I!8mXsliE@z!aqnxV3 zyibrEz*bjsgNn!9i?>3Sfe;@I1so8PP(zMq;hklZC%J}G8)6xZHA4tj{2^MY=%PS%7BUyqtKrITZo zGnSNStfp=U>lgg;(Ex^Q-^%`$+NZFo74I`!8EK zZ*v1nONLi2O-BL&Pj!5qmm>fX2y>T)O2#9j)vEHJH9rxrBas*=DURa0F_C z08v%m88vUQsGJP$s+oe7Iw=Yz!N{C)M0jx&JPsG{IR!L_L@BnHmn+Xs$1%L;Oqaz6 zoh-=T7>+>aFwlexViLoHt;Sl$8TXvg%}ka&TlB~K3CoGaXoa5w6llW;d$2CIfiI60!3L8ci=U$IlMc4-=C8xs)mEAlq^{d%Wu@{qqpzhYmI65a-{>vua~@! z_f*%pTfr$jdXZsG5e80$`BvTlq^uKn*Ja#V-+levKmOmpkDSI{9~_;D>XamIi`_kE zc^YoB(bI2}$9xE-65V;)Jeu3-RnjG)ROg0e{UsCG@6?rO6a?5sa(KNo&d%U3EG|cS zK8M?&$D&jg`Aqp-cSSLU$w15)v6mO|-+mbm+9Q&Q&2|Ux*wv~V4gg@-r4la}UPoGq zAaIpdXPFTQxALGzo7PpW@dNmjg|qm$s8;c}g@b@jVAXR=g01E29?i^}YpSKRp}tbf z$=unG(foyBwc4!?uKLp)?-Zkr4whU!{AA|39R?MqoVJjTj!e}K+`;1`&qN+LM2Y$h zjw)@dEG28)BlJv~`?L&8)QEn6%FgJ52!@i+kYcGoIuva3GbhigW1DBSQ5#-Qsgjcy zS}uC+*?J28&b3>s5X*sXhHeALbj6gyhqv!`)P!uy%uyhzs?Gz|mv(LP{@?C=r!2ty z47;3KLO9)-WE=qy|3NfnOm-NcGQ7#gGXi;>qpx2+fANq1&$DFw{N#k)+)vPY)o+b^lBIq z>ot$VJjh0d0aB7CFYqtcI=rs(!-5vAt>9Zc;a!}+jMJ=(yz?D;B zq0orD7V7zvSFamorPt<ZoCO_?-fDGAzfWgG9Zxzsc({|}TZVRWCUSCjt zwpwzP?js0~nZw*?|Mus+@?_srE6(cvI%F7jbb@R+5kCF-Z-4jt;2?W)N?M{WTS}>3 zR}9+)eClvdvxP_DL@Yeo){`|7HzI*rmHg5WMI-U+XQ4E!mq@?8_{d$c~82NgYok_zg zbYjv+-R0!&yE{xx!*=WP?i$c=e}fkcSGUPRhfZ9jtgAI8$HFtH(}MzWyN&XZ0Wl`ShR9b*;AldCtz6y$<#(hwrzG$QFkDGPRz|N2A5EyW*K2&KbR{rE<}sS&UU0 z?^N2JxbouHDQ1fbl=#r)PM+4g-`(IqTU}2Zm7)zvu-nHFdU1YkR5__L`MQ`@dP#$q z_Qm(NN#+aZe#33<&4+g*-Rh1Sou@xd8pG7ERm(Nldxue5uKFW9x#bfxO^~GqX}Vr{ z?G-J^o#7Uh9e?6%aF1~aZZYU+oQG$37dhvSEU%r1@U%dPN>&@`u>TYv!+ij~>+FH|* zO9?TF3%SmJZq{m@Hq)+AC^ATcV!=|JahAL;2ycOkqh*~A6X6NBt>H(stDYgdCBvT!?2T@t(qT;f;5e z*N<@0a@Gl@N-&}rKo6(0L@Sm`g567-^V@N6Cp(AYct&-xE|J4BYUP?zmVFu_dO?5+ z5%B{p*HLGfOFgWCtpSwd`ORP7kx;tY-hcQLbh!`L$gaG=&o}GGH6QGPtr0SLR#Kx- zZnVHab~PzIf1GeCb_!Wrs$r=kn#XpDcIY9fkVc^bhJLwev06p(RRUk!iDt+V*!ZiF zZ;e|0@BdTk(m9MC;U88i{#_&ISqXJPy^CR3J!)LeJIQ>>)tjR9A?>g(X4-mL+f`M9 zB**RoF>tc&46ZIFo@Q+aR-hY^S`}5WD&nWVer>fAP==Y-jn?hAhVdwxzn$N2gYI@S z9}cEN4qw)<{pEIz>8V^+sySmEG2Bpu2V^EuhCo@u}h}tVMWyx_F#e$ zP^bEc7C_MW?u{1T{PWwd-hci6_I7%Gdv*6cpJA(qD|ygdUG%B?U|y=$Ygu;@7qS;y zB42$yxq5%zkH$TXC0((INbDv~dv;DM6i&PbOka%}Wzn?iV6dp;R(U=t6S0PiCbjA| zw3GG2)6B%Klr|^g@&0M^$E7y9xS*k6IGCN@FAA&(5If54|rE4p!3-xNf)1-gf z^QaZVWAxRV$buQ}>C3C_!y3$roi7V?9{M^UUL-j1WtzrrgS_Jz#DgH zJF=85Ofn(&5NI98$62aSW^_K$?HHR0clJcl=i%r1V#c6h1mTBQs@5cw(isZ_)NwizxBi-9Z3(+~^r ze7x9B8WkyV6}4Ivg2iM+lB@^OW3;mCF5sd8mWLkXmWVg(Dvi7X)L6a6<%t_|L}^yL z^Kflqnjf`C51aMd+tl(#+hz$|s8onIPmd$tsGh)%5LM@SB~edmo#m*v8KN#s=a%UD zV%+1l4KvB-?qDZ&Xcp_VJh5PR8Z~3IS^>Z_-1E1?=6%~~BQ;kLE#1^_0J1ez&k%*0 zYM31ij6QtCU71`s4p}M`1dY3q6^*1b(d28$`-Ai#Qpt$AILp)7N5I^}$UOoS0qm~< zhP&4x=~XCX99sR@tqnnsHB(-1>DkW@%SSYH`GMcEEA?p5;Zbbw8jZtos)xhbh1?fRQvLrT_H)=HcP?&9{G? zQnudg*1!1Zi+oLUETa=Qd$!TNxQb1wSWFj~Uv!*$LDCQ~bZ~ee(E9Sh?rPf^AzzRI zY;1a4qUWs-%>l+uigVL9L2tL|z0FP1I^6!vH{q znS@yHmn3^21=hKxlsM=3%8@L1`;>|q&#s6{{nmom|}689HQ~#=CW4 zCj>{^1q$7=O9kvaT%`ww#ig3!iB3|NilyXwQ9Q_73bBa>iwy$K(C7xV;&LD^fjS1Q zj&dAco?qVMVxD5KhLqRwmFK_MKOi-1QF0|$ab3}w;+vfmM#vxzcWo9T%Y8=p-UXrZ zo9(dOoNqThjd3fqiu)O*F<}9?VEJw3F~Z7mT-(n{2x>G5-M+zl_H=XAqx(VM`#fK( z)d~f-1BPud?DVkRv{m!+o@EjR9z#6obuD62rb&%`p{*PC?omtHV8S)CZ&esih;Vz| z`FzAWvg4S7)|x;ZYV|sh2~0z0Ho)4~^hVSZC6Ki>Ncr?-F1$KmG80j%M=jBmeH1x_ z=lg}6y&4au>v#8$Up1?6B{H?j7hfKHcBD7@n`Jv>W4ig~!@Aixr8pY<2^VbCi~z9c zfB}`FOFK-AHcgh?1BcuG;@#I@UvHmi7HW}>Ur@b1Y;ZJLmI1SZ^cG(yD)-!^1GI~a zRNMELlwpD}ujNKQ@KiYK{L3g@ZV?EvFv8E4eP!s9R z{Tf2&WMX7%iMS_P7;+AN^-;!PFN2Rw1%-+ysw}bcpri#EXFAdIpgf(5J{r@*cQ+rg z)P*MuyG1DEZREQVW`qdQfn^v@Jf)D?d;a_9gwNvs{nOWX_Ye1UmVtg$3ZPNRh_ez8 z#+wT+p3CW`Z?ikU+6>q0kq3}alj*lG#hMd`lhqcK4@nT;Uv}G5Xruq!y$@ zplDP*@~weEk9oMRRE6U23WJH!y6E2CwXNv(-P=EZgVp#!+h=<|0S9Yliz}eR3 z%c2n`TPDeT%bS02`JNv6?)l@*B*D+Jgk6id24&sIW=-ep(6b7HiUG=Mz!Pmnq7#dS zI(a2ZBV*l}nI*Zja}OrV8N7R%3tb()V3Uv~!Gj@(!sVO!@M=bMB!zxEzqx(5S+JxF zlaoWysGQ2^zis6o|KW4FTG7QEuXQHNFyMXeBFatM5hRb?F$SxcYiDQs=8xc&>HOf! zAgNllo*B=Iz&*)=H(1$v$@u(XUEKfTv%mkP*hm)NKHbhCpHF+pq}s{vUl*%I3JW7s zYCT?W?m#-G7tjzR!q--R-INe7A*o0jybjyax_95sq9*xCt3FPrUvDCXCDvd&W=X^W zFiJ$7-^duw8dBaFV}$}#=1FYedjtb<5Durb1@}9cgqr z7cld+dzgmim*2mA_hE=ksT#F<>{ZOPcl+a|QEiUz|NP(Hn>x_AbZ2R4QmAr>6@r~d z%7jBbEk3NdQm5hvPRh*>-?Q_*dW#EPpUpYzyHvh%T2v0jR#>elmCV^0oI?w)N8hI= zl?1#{62P1I4I!ABI+IkJ2hrqRK+wdj>N-R|T+dkjz;Gn9+wS-pel0KHUGR5%c|Pbx z9oNhpzdTlDH|#?Q$^Y&JFw9oqPTGi_D2QI&rSl4ex$hn2Sn)^w(GEdCDc)tzBDK+L zNHA2i7*WYr%7u*5N(q=%q_ z6&egeqvHp652(hEvxMNRty#+NUyy87?DtPeGzO3KrVG8@auF6u-71uc#UqMZ5Vs!G9 zdRc3lP5j8s#1#rfvS-O~h!5RGVa5XK>r~^JaaFSUjH+mC+wi{F0y)6bT(aNw$d9jc_Mpr{?~9ST@@WBl(SIUIc6 z^Fd8ufrHs3OnDX<>D=(=cEBOq^aPusmwSkrd+}w??LPkblA06x#+-WH8WKK( zK0aOF-+lFeeLa7Fdvgwa6JGj}q20xIfbu2 zlu!ce2;+OdY2rwc3_e7MiUtQ16vfw=pwh zOx~07{LS?IeD!pD4o{i=X`wjeq3(md#DOQ+K3c+AU3+mLLdNZ}ZpcRS5XT$w+9-7; z>eev@^e%3<+xzQQA-DhKQR&&CnXTtDMNpbCwY0eFB4Wtx^HK5jQK2RiQ(l3Ki4r$3 zB{!lX=kv@?E!ofg>7GX^axXr3WZM(>299eSo14;{%5(cg_hH+O|(= zGW>zS!|`QA%w*}1@aYnI^=2}O3uPoZLv2mlw~JjE7-FiTO}BxSFt{eu>x*0HQFrn9 zZrY9N8TqJa6f5LO4qhLBVe^xbXf>wY4nGX~`B{PIjm3=tg0Y*ndDD-EGg=nsz^*R0 ztwG#|O+Vs7i#BhX^-N8+PyX&7e*Q`R*-uZOfAsOEKmP=w98(p>%0%23pbm9olW~;L zRsxhM+QETy_*y!KN$9Y}?7~+Er`ITMKYqBMH3nVLfVv*)%wjj9dwxk zDvEW5>K#~>fKR`AcT2mmWxHzL=-*B`XAz+i!Ae)QQh%8#ewiPvLiu&Jk(LU6M@?zb zi<(~6v=JNv604M@JU-pDk@#Qy?pf~i=O4W)=^%EznBXI}Y|HGmltW?Y8?*qQ7X4<( zXm5EgpFfXx`~2ZgKmPdF|NZ~`K)Y{WZqoN&601cuj&?8k*aEu0%PB^k$@NHT-Yg?4 zp5IKInn;m-(@^qqd(cn}XRtos*v-c|qnF*#4~{j3dW%+q#W!TRip6RNEg(jU(<=^o z%LtEvF@0RLyqa1sSC#77{)>}OKR((g^p-2qDmWS7z(5UgrJN~9wn45|<6GP5&#vE* z-0dts+@Ue|hh%c6={RMu&ejxz08*gKg-`$ePd@tDPd=@l{{Ex=7cX0ofN;mQf+9sS zl!^3c2T&x=fyb$&?M$=^MJGTkkIEH~PrzlZ#d4Wx|Ngs&>orgV>bH=KL$jVM<5R8^ zWNofCj_e92zxY|kX+3_ReQbFR&n7*;<$UDQ*_hrxPUF(+dN!QYSZ&ti($Q`|={18R zkd1m?vMKq|b-*6daea?(N((L(BjD!tyFcEowQQmM@<0CLq0^kSC^6arPO%s3t%h2Y z*YjXJYuf%`Hk^3eK|<4E`PbWGmVE!=Pygwg_e&&yz|BIo^!oE-x7~E(aW|wUv4c!V zPPFA}Wu>zk2s**+qJfEzVlieqn>Gg12H`SWG&&ck7=hV~Du$0;OyLkp0KBlgBC5pd z6D=&*ISVx~<`chh{s?E6>>*!{%3dLJ`uxBUk6soJIB?KJe3UxZS(FMV(e7b*H9+NTQ?66~Q5Y4;0tNSZ*NwGH| zM=l%WdalH9_K*AUs5My- zWj+j3^;>b#T8)_WZZ}?d`IOR_PDdVJ`*njqNKcD&ifl__(#aY$xRNVQL>CsiJ zRnO?1h|Q`J(n}YtZm5Vu6Pa(JBdr^dVf!S`8;YOMUTh!j6}Y2UKK2q7``c?BUDu$*=brXEs0FM}-_jpqq^!hT-Jme17}Q z&A1!vmxASmgOw?Nx^rXTE3KNwDWMZF-e4@NWowlZvPYPIePYBODG5X${m0UfC&^ zPm4HAuP5wmsfb3XVr8j`I~3qI-#p#1Aks6(T=EbHCY>D>k)mVL+-kk1^#;?(j9&hx z(MK*=(P;;uvpsC_2lWsRcFi6Jw$;25B;_-EI%*^!vPM{fOZ&z0!D->_^ox%^&Ej*V z`<7JV-@+u=A^8c7!NjzpX0Zx|d)q<`REGfiCoVBBh&L@F-Q!?-o|aCmu3PUqAN}L6 zp4FfI=Jj#z;Mvdr!%zP0X{^<%`Mglc#&Ol^TzoT395;{&wYm*mQ3VGjIjLvqA(|50 zz{^5iIXHP!1?b)rk1Y~8v|WXvT{d|k)dEF7J*d}nFF%*X7q1F9T(7oC>9{v$-5L$Y z&G+xyt(!S*+u5o=|9;uU^(iIIvKS{c4r%zzRf%|TgOBXsv{F{*?0YgLJ@@L>7yAMv zj;1>{1%9ei3h)eihSB-zRm&)4qn-TLu%qt9HgY%^`!kRPxtyw!KKDBhe|$If;_hJG z63-4Y-RM*~st{4Yc-k7QQ9t!4lBI&wwdK*O$rxrfDJ%B=u4tPjfi%K>IYyD8l8AReh+hd$7K%k6RG;EPoYZi2H`UrOp{>H zjpM=f^-i~wsSWB4C#=1tV%^;xZ=FOgR|`3XLkU}wYL$=n&SYjpN34}c!3zv}hdI3& z^XGb(7y93vvFdbCDW}`18vuy+^RAV*eg36M(<=9etubL2l8p0995X}0CZiSG6#1nb z4A)VuP<>Ht6QkL|qw951(ZOAqAecco!)8N>OCnv}bu!}?CQ>6xwoBr*9cVR?t)Ys{ z8rKd9{etM|cq(!~aky+r zS!Z$A@hWBDFB;~62pF>^Qh-$`*YXMuYON;d&5?0(uwRZ=?%u0E9Apnl$Sli|*;@3) zoD%XIy1C^1mS8=QZ_08t1)*?KQ*U~4w`o(OVzZFyjaWhuQfys5(XF%hy946O5ZfJU ztw!W2Y`OI8)$1=$L0Mzc@&@bK=4MJ%yf?znft#DyO9*Vna71>(yGRVw(SWQPif1(^ zF#2KHu=tN4WYI?rZSm*~30W8G9*GHhG|BREzmaPo7=0_BE4_Xx^#G*6nd5>^R^JUf zM6oo@&Y#pxpZ$7FN(QXCp>^7eAI}#TgJgkJdvya)X7j+FP%oX8=w=yAXA74YCBG6N zlhF)y!MqgCG;!MsyEX>Eak~#a2sidFoC(us9PQHKkqZ*lNZvnfF{asawOCWM<+*&! zt?_TGNc{e7+Ip3ct5PCcsdima#+>` z@GYKU!Q&9?rAi5qgh0VBCy~<{+cjA^5oVrRIQjgyCwX!NP}#%AcDR#&u@GbE?(~){ z-23hIuw0>P9BcfvqYXU4tp=@tZnZGLV@56~o{w(ccKrI!iixV`U;O^F?hp5y-p2Xz z&IY6@sEV>O6F6o;3a(tx=m;HX?t%&==79`2t3iDA+U zwF;{!##C9T9=|-TxglIV-DsXKzyZ$}6Ea5B$>C^_m}8TU2aUJ^0MjKmKr^cE4iYzH zDQp#d`ge(SE!!yf-FW(T!L`R_>(yqPv}ks2F(94(A#b5>&Im8}#w z6-#BCgdXi=_|CZvxpaR>HGCSm(($vsnsOpFr{vB@aIfGgA~SbUSbAh)bln%rUf*|U zR0&^y+Mia{a@hlTOBRs79wF4Uzxwdic|$sQE{o4U{@K6zcj224Z|0yp_FrqMuU86O zEgEjK!-XDeiq2UJJGLDqqb^q$-NNIqr~RfTL?Ixkb|W6!C&kk&Ct=70YFAb8 zL+w?CdQC)K&O%%2dkP`K@cL<@^9DSOZhxq_jX zxb7BY?t#eQTakGJj}PnR;`7rp7~dcmc~S7QLv8O3DdFyt5>=a&lD49+4zpR7nmto996fpnp%V+EX~?k+(ev z$Iuz^(h+Le_EB0$eDjVqN~JoPN>th2bTlJypw;0)b*A*7Z*Ny4V(^Ixp9cgHm^Fi>0bi&gF%ejzblp(*@{{LsSYITF5AGm1HNG0oD%P z>RB`&q$9LQJukYLGy!AG2Ri$LKX1y%67|YZxH~~k*=)v^9EPe?HI;IyhHA=&&8+5- zNX%lbbbM4E_EFtR#n+#m72}m7?EhLo#2%l6*-FN)XxEE1sajUWjLh64aLjv325@>uu1M9Ib-&F6ieZo$XZ8|%U0KNU$Y zc3R+_P(Q*hq_Y%VA?yqj;pHz+<(#DCP1-AIKaG`OPQI_o#n^465%b5%Sp^)8YK(iB zU`cO+KQw4xrb3 z!qI#?>MpNn0ZMoX6AB*&Y#aNS_K10rm@ShZCYDLj2;rt_3LuAeELdh?`1lQr2H^Yj zdUWt%6lD^y<#?NRLNRw()5wa*=4iU>zf%f`5{8`3egbXa!KS`0)U&uk7Nw-pNlKWGg# zwyw9`T1jNr%t%NnjUeV(J%L;()yhJp#7%gj&_aeGf>}^!YZS}m$~YuKI+WoCv`2JX z4HM`O-8P}5me1GLsO7Nt>>M{t{enx$q$(-^09 zwkUjQd(GDQ+xO!JmR{0D{`TpzBe2BL3~1&3^ZULPccbD-QK=ssomLr2%QcddMjRC6 zPS022vqWfJUYh`U91Phzypj~5Ab1k(hqhJYwG@`~G|PK2{ot|grD#BCPdXzVx;2Ui<=X7_!<)NzQ?zPo^eWY|px4umqjAA(nI-_*>dP}Aoo3cqVx$W6 zs$?HqqY0-Nn7g0d{tBGZR{}Z`3$pxOeK)x2UgACrR?skCUlz4HxD3I+PqS@hjr6n zI6j}W>}oBf%rKeEIVTB(a$@4<6N(HByKgmkTu9K71tQM3N}z8*WHF9TlB`8)q8-E1 zm5wqmKKX#?NU!&uGF)CKQ^lXb%Rh;<>wo#{ zecMkb4JP6=f!@l~?-9fxAy^Bu zt1KMEm%GaCI?o*{0=1`T%DA8$$G2xsy-F4V(o!Oai{*sd04#}4`py3_vk-ZE16>=o zYsL20kZ2>L-JQqs(Tf))xn9nf3OelJv{uqZJ&7|V;%i1#ZP}pF6Anz~&p8zxc6>2b zq+3d=@t|_>?D?6f02r=v|Mm^K4_%`6z2#dFm0>{Sk$u!+LNCRTKo%HjHZ2BW zoMCK~&eRxFgAbLHNPCnpbhXD*ipVUIx#X)ATMLrm82=QGwHT}`GogI=?4){h_~H*$ zUoX)IPXP&Ei! z+`!CJH?bgQxzLnJ{V2`g?8QM*j=O?Ca|oe+lgH`j=L+mt8^|=1RdBr1Qc$r zn#%D>xmMN7&kkRlpwG%JtwhO8Y>R{}T%y6PX!L#=FR$0zX`lsGspg%p95gS{fan)M z#k0l3Gbfc~1BQ+7@b9B~H3l)ux1%Kckz0_YI`uJ9)$W7yA}|c~nQgsg2Wop7NM|_; zr_rI*;^`@CLOw^I%0pZ50dP=QHumdzDda?8t+;~t+0iWDu|;q?j?*X9+*R1%0uaM7 zVnMnMP|0^$?miB~e$!3I+@D%`IbHW@a?J?iQF8iuE^LZ5^1wxEuZcc`=#an$cx+so zK$fa1;qtf{B6gHd_g?YJS&BhQx9%R*oiv=XZMyizC1Ghcr6Ji)LZx6~?U1UHP%3~Dli6z~gt2*frblNEc5&c5yA!%R12LWyt`l%k=N z;V$Otc>soNO-)PX<>nC#$>}gujha-=#bh{ zP>LF;lo;*AQmtNKsV%51+GR-J2&r~BVI?>0{4FD_=FIH`*_}IJJD!kE7OPnv4#N?u zP9)f~i1cUTR1f!MteJJ2zj%OQ0SU1c)Tpas8y^k^Jd^Z`g$a;Z-W)0z=w27qzcIME zT#cEx{CLrICO|@`%WkpU#g=pcCy@L1-WT;s+1hom&ANKSs(>2i2gr~j)H}n#9+AS# z9h7swJ>_M`kjHq5S!Xo#L(Fn0{GIbvq$+9C3v?C|df5>3SO$CyD6_s%J1y1<9i6%tEX z1ENZ~F6=g0!HXPsJF9PpgL54ImIv5GkxF(CVG2QD)kDVQ@R$KdPN2Em-SaUI&*zH; z$+V!;EPifw9ct&xhk|tQStgMV509#?505+`73y&Kt2D{$RRsP#zpdsouMfo+A6F{J z`TSYFUa33SeJB&?MPUm+JYqS=gNMN~+JxDHElF}#^iIzF-36%p?Abo2F$oGT45g~f zY_U1Nf7}Efjqq5sL8mT87tLo?mNyJC&?zi9U&lI1$hfyPC@f zcblfHI+hmE)LJ!1jplOJb_6u+UD8=g&iP1mf4iD5hDq<@uG^I}@xm^MHK2{kU^V8- zmWJl<{W965Ua0&&JT%9|G$z1IN3GdFD=1Nr?)U=miP=an^X}?MVQ!r6 z|KrCwfRv|a`_GTELet5;&SOYkva5{hWv^+M+%AUR3f=+GZD+aTeN8RaFb9$OXpk)9 z#iEkPYWEu$Oqu3|f>Eu8gRnRL>=WX)fsow^Jm?{bDO665&0!iT9Av{xrt*o{TJtoq z-rj5{fZVYYj^`Jfet$M}WTlellhbQ;1ZSwi4Kwh0;@xBl=e)&Za{BR!WozAwHth7& zRPP^KSuvqVY&wi)Jw5;V=l;~TByn*yT-}l7?Y0@JdudIY2Pb)YN2({HndOSX%>+C~ z%bUZ(N|%6Py>V2LW!a88F@=x4h6ZvAMb7)1Y{d6zf>9g4ZxhQe0N2KB(P|Kd83n2+=k^YM@sq#* zyMyEXZ2c%tOua}~Bh3bh7sDe{jh?$#U}IBK0MXD$^ZEsS$GFi0>JLDr@~ zh|+nwdz4aRCv*2FMEXqF*=^b);!q-*X$v8de;|~R88#xvVZw6B4I+%nHfnLuSd5K$ z<`+JDUOYMGW-=qT$4&-L2xK0!9cqH$?WB9BpmiCDFh-xRN24iKJaS12CcC{7{xt4C zI|iQ%Nl>x)c?Hn~H~p^G!p2{L*Rlzw1-SK)d`=ooyL!^r^vvtu|I@F2_RF9CZ@+$d zNM2;`#o6iWvyyh!>rxP7ZE@BPGZw9%NBKCnsD> zaN5@kXEof3RDfjaHL0E{2sL9z^{`v9%2VBJX;lEMAcT0Y`Sw|rJGhQoJmZL`4B0%GauEm z@u)o>&HD^MG`~j{-2q^BC>_>-S@Q3yl^Yak!T6+6k(^@MWPcC#3h}^)Kt&ou?>f0J z_k`0doeL?U*5;CLQaal8n*e>MnH0jYlsDt~C1eQzkc^^<&8kZY#yb*uf~S~ThEZoX zo~n=pnvD)d5GpXw@(x`_VqTgwWb#c$^04F{qIcng64dqcFJA6{S*#rX;mhNf#oEbn zv2d6v3YhqMY{8(}b`VwrI<|F9FV@w{X{jv9_3Uw3LZ0q4tl;*7iXmJdj?drI^Vm-4 z^eP>nu#qXK)^6K{Kulzp6Fjs*8@78_$=Pu>^Qr)lgu=aE3Cg|EHcQ9*X99sgRB>kY ze6DC#j`nM%ldPs^X@IaC#Avj6cpq4@`eU4Cu<=T-xL!&j?AgZu^Zzoi@-#WaWrw6p zpNJYflr)`ny1Z-~sHCiaz5T-4R=7ccrX7seOSjBdk5Im>F^zfSPHYlAw;?tHJ?+q< zHH^np2XT8Rw}mCTd!-(upVu1wz_e(x#h^*poT#o+lU0pWczu+b)L0#4mD36x8NTY1 z$e;oqalz%U4qR~Fr5V+5Qi!O8JK2t)1L;Wr;KW;_S^8x71qR4M^txom{zs2h#ZCQW8D zZW6R4TFB)d`n}bH&tjO>AboSI)f!YG6R+(zEuK$FYH%%2ZEyXwTHmXqqmW8v&`nQ8FVp&}D(uANH2 zWjiL|^kyI`EH@2{D+;2*hmSCNbDvfhTcl|UX} z%u~Ge{i~@HjJsOs=qjr+7!@#!s}*i)hRXS4;r6_^ZjB$tR`Yy0Twly5!+yUf?;XR^ zZFb_cp;&|4=2^`IcG*jK=Y?TSf{jDY4^L|5u&PSPRYcQ+1|IS@1p*Qe2(-7}q@|pG z^yR@(rXD*~eWa~o-p=O;Y$0$M)zGS(?w5Z5o4O+%9Oa}6*VQ8Qpm>aaWDE7|NnP1L zD3!_t+W5(oi~3G*qN^+SWkK1i=@}7=g+x0Ix#E`7m@Hy_Y&sj_gzJafr#IWTU(uVfMJdHsV=;G7rK@nx-f-Dv^XsLJ>5|Fg zNWq^=*D@#^Hil$efV{dD872(yIW*zA1m!1hI1IetD?{c&%dF{8)tZRwwTk3$_OfFD zvX2JSLB#QSWyG5gv+;(qthU=qb~%)86T$~BEkdIcK5(j*~v#Uf!_RZ;tM6hNB>P^Ubc3XB#x$o;N6@ zX|AqnR9Fn!zFC$GF_(c1C zfagh?>(tj`^4dSnoE8h56C$?n4kUByn2ckN8O5t3gquQ+X1m!#tL62dX#N^D*>w;Q zT9W>l-KWj2-)KW*sPXlJ=EHc|;3ePe2};W4((u|$HJAz;i%mq|t8X)qHFwFh2-Ie5Nq zmQ_t~=|p7hEa6jW;=QL7)`-fy?VvBJ26m^g*9N-j$n~m7+!tRdrGe?6mm=WTAz_MM z%Wm8e7`1aJx$tJ*7>;`L?Za0ObWF^~^BMVqhX~5;X$^ENMa3aFXAlLS4 z;{bu5k~BO_qrrlX=>ViM-*C#KiP4F#k812bScb9+!~qE&5Q7Sac^x8gHg|aT>{&iv zIDP%%%VUuvrP-XtibWqL?P_Hh=&q$nv#a4|BIRn6^Vw!S?}06{{Ojxa=59T2kLQhK zG@uI1m$5^MOgnWm98O48a0PCY`_`Hr+cwPAWj{8kszHCWt0k_5qFARgNlKyLZ5wL=8r%Q~42yL%(_ntUBNGN(E1w!;~U7`;FAL_2+kWy^cehR4c zHm*BfR2=9ZOcKxwdVH!xNMoZ#aiq*9*c;>^8W!XVmEY z?d8pRyV;qoFQ@bSr^_vqgckb8HKHH-U_A)u2~_FDz`MBvkLFdfDz-&)F~tFhgZW|( zVTIRT+w$o?Zl)u6IQaN7IaO$F`t9Wuge|*v)?NIY)u1EiLs`fd^Lto4jyDXT|*j_C^tSA|;d4i;u+~s_J1^>FiLZ5q00tTq1vq-NL zD(yuNpl;f;%}F9phPoyiTF{m=?5US?x14+N`Dv~$*2HSAF66LF3kT(f%-7y_`wgL@ zRI`vP;KQb!6sHj;V`=#AauWLt7yThvouU>Qm0DHRXkTPJb3IoR>L~1R>YD*fdeh^Q zTsu(mKRqlP4g=K5NnZ9uXquNz{(~)uz8i0D#L|>(s0<&!F za5UA52QN-2sl#UGSzzcX5$Q7q@M=NK(=6Jj*veygk-aWof9|uzA{Ud(caz%>*Q*J9 z3jVa|czk!|S(YLfYPg(T&zTJ714C=x4nQ`<$;{NyG<%!NJ1%w2PIDJbxu3P!k77l2 za#FlwQ?;DliU6Ry>3V^b$x&EMuPG}qlyrcm#x{gbe1^gJEK|xUo)u!~&@{G65vV)` zn1(3J^nQ7u568V|yy|Y2#_Kc2Ej~@b0&Wj86l*0hBMWtDdO6nd>gsiGwA`$=ZQW}w zFFU=ak2VZJ)KIyYZ?0&&HjE<0COM^=@zkm;YsFUrzn|TwUJrd%ER*%qJLEXv85pS1 ziQnB)Hsw=%wah;h^T(MuGCh14E(RL|ib)_H{_e}nS?R^| zPe09wbkf;Akajv^2!MsjZm-$xGVei_C5+9`tB{1T8gH&BlSzR4sUSU#nqEJBRTgM& zA`7cFrmhQ+DhW)U6riq7sH%!63=$YLtYn!^v17upCfR!TZuRipo5gao!EEr=U(<3% z5K9bxqaNqVXny&Sy50rKAl(I{PV4IFV#M;T8LAy1Vw48q4V?99zA?P+FeZE3n{{`{ z0!GGEJKfh9NL}4U2*n*$Qq~(PY3iX_JwvHzbRF&i#G+D(u5%Q1$xD&yHB^8g*F- zCY|^aWsulEaXJ%xAfzJ=UCNV9wIZFKNi;?}uA+e>6LnJzTp|0(e|Yiw)8`-m`k=yL zH@=xPTOeY2N=GBkc$W;Ls-d`d;bCZ2LoNfFOXiDiLRvjx^bouTbRfV?$Y&-SCt|yp5EmA z;xD&B&>5Y-yAQNvzTTVw{-D5Zm2_LlBI9YLbHS4 z=Zj{f8}!^R33AbAySGz8<@^!W9$x>Ha;C%i)sR@5Qdh#xbQU{s#U*7jUZYwn@p}A*3SE&xBphx+8tpjhilMF@4wy7*K6SLk#FjbC8x8d>*1R%R2$=# z0l`nwkurD|3T1&FqFEZsrDVLT@2qoWZ#I>>Tq+BNMHQvnNK^0EHLt`LC*N`c8!AJ>)q@1g948il#8^%xm)jt#uj!ND`ZTIv=ngQ@kU`fCGtv$H#Yo#-MAwuT)q2~*G zIQS?`kTJxtCm{S!okAmGO;A;%)@IvV{`DI=JKGnR>0~gtdbgZTzI$rJF^rqj$Ghq6 zgdk9~`QfszEGP5tzwP9O*5v%nW#}&EEvPuvFQ1j#z0rC^O$ytjU6in?A6M{-<#et( z1l;&hHlWuq`FPxX)cq50G(V@(R;g5LvTjGi-jog-S1V|sX1Uq1aOPT;s0r9zX_nc9$X)A*o_mb-@BU;Fd#KvO62uuJY3VtHph$N3x6J_m@9n8$e79IO`r z=ekWwWB38pisdpIAlm@zqu7J4q>G6IWLtYp|gM!dofs9b&_fVB3u z-xP++dh;$E{4VSE!Sd}t z|M>p){^7$nZ!QNLdJ#P6_>^kKj=(iV+%*TGTvqb9y+EJZ*=*scoIgIx?eD#Qxi2Us zqLOC**)Knmo$}Fs7BV!&_d}o(!^Nt<+-Nqui{9-wUq4>meeuNqm$>q|K&lUYHLYPrO;>>2{h#t_#}*iAoe?v1l6!4H?I24n|GUC2u-vM zN#nxfQ;&B4uu$FEj(u);t~tArP7ahNd4nw6zl6*CI6BQ!b|51f#x1v&KiDg1s}bDa z$9Xv>#l^VUi&CTzr#*tP(xJqK0F6utTsBg4ImleybRgsf02h1R2NtM5{U3fZTj~Ox z72tg*AelysZ@-`4JYCUI_Vjr5cs+AlsOHQ5DAnO*=J32QFhgk7p(o4fB$vq-)Y7M~ z1=5FHva`i%_N=O8Klq zH*arm$KKl?f4IN9XQziPrCzC>z5McvvLXe2Ozoo?)e7Nax9Jx0%x#uXE()PfKx_AI z#Watz8?Xt*REMYgXT0ffs^Tfw`{Kpx!#aRj?%i4?QzuMH1sWq;q~weq04+d_a6&X} z3!LFWchusID%#Y4_{*#N{-jsMIJ?`s3=MU$fwR@#%)GPb)m9*4;9Ka$QXX`I>u_^| zkA8Bd@z$RQ{^dEk^5nn1OWHTxCfz7*b2`+dsGg^ujQzM+V_9nWz2R^>;<9e$j*IoZ zeYM$kh2Q?`JV{tkpB=@YFE2-s-f6W2#*?gX&aXZ^Ts4!;-8s0(XoOf;VbJ9eV5sM* zuu7&~!UEOCn4LXw6hq6M9BcKHS1(^4XZQC${nZ~{WmVxU3seJpX=~7>3FPSPC`xUP zkM*~2pWac9ve?|--CudxQqYRVx0}#g4A(P0;b?jHxS%jZA5Z84F6WfWQPp+#4zW@U zE}!N@u*O8$2is0_-c{#+{5o|Bh5c>&<~Pm#*A@Ed+}UMUcKTgIZk`7oP!^W{7>ArO&lAgy1haWxxXVowLSLPZi_3C9_CkxQCe*v{$YTcz5WJdS0p zbaV`7625*Kn~LROlJAco@LjFE()fqlS)Zdgpb_H#_sG`i`ruMR;}yAfSQa>wuo8sg zX)*t7|MM^G7?}C<-_#oIAy^!NsBd?Ee~Dveg66-5KO01=ht)Y>n#+aeY-W;{1V%lF z%84|=8oXR=P3Tr*wL2}H`KECEy!toNdFAl=-to!DzdNp+eDdr?j+!y0eptc=i%(jq zMqP}x{posh@$|!o`Cu|zJ$@UW%0yV+FcF5^A9h8B#Ivri&Tk*yP9o@@v3vINv(FVb z`_X5(E1Bo|u*74 zP|MYaU%m(P2p0)7uBjT zRM!}O+}85x&wu{&w{QRDzyIHVX-}>O!x{V~181`y_C_~1>x&=%^LJ0*{`pUT{L5d? z$6*c9)IvYX8{@I?I-AMCBc<0c9ADqQzq{yy$8`#yWSZ=Fbugc}DTH0Bqo6I#f$O8ZsV)^{9@0MU=Db_PZQ3tQsIR2uTDf75e zXN6VVj4?N^yHF-=wNSAOCr5%(9zU!BP&-<)+i)CA$h$v>tr)Eq7FJZodBq6*{$%I& zWqG5`|38l2Y{`)`J=46NG1GLL^)lTvQmZ6YNma$FVv$K^GM9*q75l#U4tIyU!vS{y z4#&O*wm|HWE14uqwMo`ekH+R`j^+mDM&?1ENo6!LGXik`|L=R>=ec=%!FZ9SODPfE z!*2*u#ZQkT5Ut@_R)Q(xMfk)Mn$&Rf`L0s)UtEP`uqobY`zDtT5R7^C)r)h$qNTV-0mgEZFH(iqKP!x- z9Dps3bgLgf{rTU1_xADAn<;bEPFwiJO`$}V-t~N<5^-e0^_9O-^|FEOH7_s5byl@8Yf>KMAKR8;q>$Mur_&;Y z%Ism}B%40?@@K#L>n~pXwLk7G!lcyMw=+tGe90Ssf*CjsMjeO==F8P~HeBAX z7E@OiQ|6|lJb!UsJWqfhk$pK)N)rnQg;-5TEnO4OlOFG_y+S?1NA~P_Er5nS9wsx# zXF?azZ9nWUD&=t6oZc;ft(Z82?1n>!l8qF49;Z6JfeMEz;0K`4jV9ZWF7ZNsW!?GP zD-YLsJLomXMDAhwh-_P-D=`z^y{Vlh^&!yrs#LInry0SdPYad`l^12~q!A_dkqk<$ z<>N@Bm`HjvTduH@8-(->nB(n->XnL?$W-_cr7sVqM2biXHJEkX z2s<|b^Dlq(^2=8z!n=_dI4N4iyr!*^?1$~~z~_dnQ55MfCRhJB=1b~3vITAX{daG> zMQJvC`S1VhVOma{9D$HB)$C~&*c5h!`oVM1q*AWd%fxuENNOTQbECGq5ObYbV5H*S zY7|ZuH=BN4Qd}byd-2=+aIAw3?o>e+g_#q#|L}*l*uH<`ffw3xj2&NG|938h2^iNZIZPbfa-wYagX!&J$fCv_ z&Kf?^9WU(O{(t{(QzK|sIXo7LE)Va*5)Ntn@a*dd8MA6;T*WDtpFjnt20(})Z1ZU2 z*2e}hE0%M|FJtl8*-85N`SFW0UdF9PIA|MugtJLlA&Tjg;qup{#QCcOFsWmv8%0)0 zb*m_mR!|!4N+FAsoLLNBZ0aE;Fl`k&!t`1RSy-;J7q%vI1mtMS<0=ToqZz`48r5U+ z>`DQxaC7@@Gm|~m%JKBUSFc{Cr45jAUb1#x@`)@8rRl(&zyGulUFy%UU+c@uamSVO zVH2`)Yqi_12bviB`+xTrCr;t%^Y}@&Ax5*%9Z0zx#j2kj=3hyMY9>z5SrR}jD-}}v zy^Wb@PI^9I^)WLYus;B>u?AKSK06K7Dz96}^*qJwZy!7>W?R&?(zX25Mt**X% zzn-+3iU!lLvdDpvHgPeBFC>5Okv_q67AFSqZ7rEevkQot0+km7J)p;W0gC6(dPz6Zf8bsm>zxnxvQIabRI=V1hp8{@{;Vv6cC zDVrDhdX+ev^rtg4zKJ+&*Rzvo&Rh0)kh|6N3Dh}Td3oqID;IRq2g7MSPnr=}_T3Fp zKJ)Y+e*5$cn0>n{S5ANO@BSj5eVWN5aw*moO>JlX`!>5|-kYdthN^H%ElNwseZ zA_o?F4Wzs3!00OaGjq-Yifd>H% ziytI=2jrV_we+$ef)oJlV#+UH6f019)Wn&fu$4z?RTUY@=ha#p$0mC+kUkD3XT|Cc zb-sO>$T2jfwV8IixCeA2LJJLIP#HOTu|REI=PFwh3VQB55{aF>h;j5)5i}}9QYzI_ zo&q(^@6ouF+uIcE0#QBqlJZH8-fALiEyJqE^}CioRl}hkJve1WGw1R`kDIe_rr_{= z58c_L`HTPZS6{q5O~o=1WfA@9fBgGcTI6q*iAAJr+9@UFs_=C}5se6$uh{ED!k~c@ zOL9IZEY|K4p2@f#euadh;^{G%8$u$pD~RIvMX`*(uwqaLleLfE4j=qt@aa3(yV(4G z(?|XZm}Y{$WmD&BfAK$L}N`2DE>a%`t*UF0Kc*vmUe$}d~ z&d{y~H8afRn}~SI(^=uXP|n5qxp=OSJWBx7uFXeRZy#?jAnsFI5yf088Bb;-nF_&e zHCu)?08_8ZCk{rhyj-drDG7znYeRpp@A9RJ~-Ib8dLS^u&z~m#=AdvK z*EqV9pRHt$%6{_PuPbItKFcH`6)PtZUF2jA+qhE^F==SIM#~_tfhZWpdfvNQ|L*%i zYVoK4XIF1e-#jjM*H`QDaOC^zIU>P7Zb5ia>)y^Pl8!igcfFYnrVW#7a2|C1{B9&R zH^A=PYPh?)xqrBn%A<}l&EtsxK9xwnj2N4`MK?DrWf-;g2w@bCP%T!LLBNvH^nz*m~aU;cYQO_1& zM7O*fb757AtAbm1YzQ?%y#a#8aJT`pQ!fSN&v6JRjd-&`oIGXlSC zsq?ifv^RlXK06kTg09CcCnlYzifj0#-hw>LtZ8(^6+t zXw04P?tfelH>2?OcKP9l8#WzVC47VNdi#g>o59#}R%7wWadW5}LAQ@7mIV&z{LW;& zSj@>SIkq4V!;c?7emkZ6!rssv_K7X|TC6zd0zqmrSFx)X^UXEtw@TR_jK-_2md>A* zkX?c)E08$?lfy$X5A%Tl2U9xM(FB}e+Sizr7;a29uSQWR!AXme&AEQWrXHQyqrvyg2yMr7GC zZnK~hIb|&GmKAv2T1NEieelKQ!*4QBb^M22F;Jk=fb?6WFtaryiA)FHh65 z?;5j5ulE)%uwI?M`S9`MMWcmPjaGX=d{_|%h|4)j-A8^SHUE1wwby#q!b93u_cT2_~8CDKxfC|R zkTWB&Shp*#8dNi-!v8#biKl{=jK6rE&N{u`bW%f@4Bp5kR&%#mG;AwB_%OH807IR% zlLu!ipe z=|;YjCydC*+ZZk9HKM6EeKYqTd3a`a?c%}10iPqz5IN5~ z3`M;Fb7nbnp3YVfQS*YRX(mgp3VH9Jl&o#v=S?WuSeQ9R#m z)+r4M637E4B}ycbO(rq`r5i$8)e2ez*)0~m+^>KB+gw%fC)L`w|9AuPyS{t84tQzU zbx)0*N6%B3!=T=gg=i8|k_zS+pmzXPo$bPtNT;66?MkT>kLG1I>t9nZ_BcA1T;>GVuQ~qAvvDtN_TZx=gLs#o`!X( zZi~3^L`o}0X*#yiJ#&G>`XLii&LvZX@S9zX)%ZtgRGE39LBR98MD?6wb*-36Cg|lj zH66A}wNy+bhwJ-dM{DBqIY|dLJkykIyqcL7h_Wn=r z&;u@L;HUy8bDk)IV=d-kO%_WQqgFffO01-w|HJd+Xsm3A0-eHMr`6kDUq4(9D_Ba6 zI3FfXXKYjWAW7s-K~R%4c7@)JX9z^rg8d`~w%Xy-FTVKVbuf`wQ}5gD3udB})Q-+o&r|YLI;v%+Qhv9^OKkFw|N3y* z?##OS=AS)k>T^cmQ_MlFuzK@Pi(Y@Q7ji>YV+8=Hk?e|NKDq<_Vyu4a2dc-~n zB@u>#x?;44ci&%!g(7byig(`N?OjvQEUVbOzigJ$%#ZeY+aFE4UF;VXlG>0y zAzAo=D)Ke1Nq3)!!}Hl-jsw*PDj>)fiJS+OXRo1=&*cINQqLd(5AB>!PyFl8fAOooenKMr3=)vjp7p29zG;VDZYCr+ zts>{`qE2P%JZ{t#rG@}>?-VOaJk#34#Ta}_-M6LG^RJIipS^l{DkM%)uQRE9rR^v+ zQroE`(-Mq2=^@VPVm8a?iO3GmBgP=ASjqCk-Q9OOD;@qc@PU|+gy2TY*;n$gORI&( zcMq&48~y(7?FE{V<`r^-*>1D-tAn;1@Hi^E|D#t8>+^>P@fYU0e!kemtBcEEa5d{* z5P4h4akVB&HLth6SZ&{4&+AIVvkG>%EKrxx`@KrDy?A^KA)HtkA8WEH`EpB%Q9w8R%0CN-C#6{a^n5KYV`p%`d-v zav}l2j_0&&1lwv=*_%`=Rd6U;mNt!Ov_PK2QZ(7c9DVUOzs}}Sf>7P&gF4+_f4k+9 zNISdRM9rNjCemV_EKw5p%m^s)q+V^BMYXr?-u?c=dP>hpZ#4?XuURjholvQg6z)Pw zR@S_3#S@>s;y*2xMRv=yw=fi#Ca0_tk~i1dzkLKdWTH*~1}3a6#Z#J?7n@~syxjDA zgZYOE=!60HJ>n45M;Vc;KE_~gb?Oy%o}U&2%Bg;bKSl(0&b?&N5%SF59VV5{&wu&rzy0Yy{HLFu zKyo_)%t2pH7fVppSO}HHw94Vkvr5v-6W!YvcPMR1W#muFlc;BM1sV)iTqP%~A8#+N z?}o!!$1)4?EJa*)%~_WFpgRn9W*izq%k&`2zPX-lAGbsZv9Hl_&e7cyvI_oF)eF>E z)*B+=JUdONS>t2`#cKeAj%0F~yhQJVV>-WFStEBz$D9dSBOc+lsk)`S|A6_d^6pI| zxcUBee*Nt&J#@Z_d;gRfez@N zs@0`{gUPiAMhPl+Yv1;-(T{~%;Bin@`Cc#^kL*JP#j~^Mc?LQ&4Jv};d)*&H9)1$8 zhRT6MQAu_f>nZT|Icp73wAA_t1u_WoNYTn-*f#?=k3d_ao)v!*%fz1l_VmRe;LJ=i zmra#YiVG+~%JEI`t>oz?`I^~ssx3dM!_{9KKk z<|sVET_-7#QDkNRLRM0TR?n%kUk0ApfsYRY#nt19agTH$_2FJ%78Q2p2qn45sTB~z zjPldZjzyU9T$qZPbQM@SCOed3dumtNpHMYouPNsY@$4|lw5HMPw<-k)8T70>a*1oL znj%N!;lHZY*a1=Hf$pjN&*doTms&l;M_21#a$)HEHN%~4dRA6)rt7{?Y=?{6F$FoN zuV<>=n-4d)>+bNwyXGjEeAsq4o9jyVZdg>$&dlr?^UriL_3D)IFJ}x9;|Y(bO1rMs z!_jnnb3?qx)u@z9G?+S&_8mQc`q|gTMloZVjSrt_{gle(0?}+(!E@g-liAc^go(Zh z(7ip_-mGRoHZi#nw2~R5n9}0TRk1K@D70F&Y)LL;IM}~>Ss!X>myli2-sLf&?tA>e zm%=`!ltIwuXHb)m4jJ%yT@scA*g%uO?dK7Y%OWX&Eu_ndZ}PwhfXVi&zy3OwktBcX zW>e0nA>fBg#9l2j~T+%-7zE3n#1 zL{EzcrxJ85n62>48V2l0{=+2KMUz4!6?++)i9`Igsj=Ix2eYc8%sHm2T6|6o_(hX7A ztC=Y@-H|+ zf7mh39kxvIAg;$Fg}l&xvxEZ>^f6vHDn(N)oE%4wOM}Z1hhEJ>+$>RR0qa?-DWzN) zCpzPF+o@|Yo$YyU>ZQ9&_<|H$e(8`<%G_s zh@WPG%TdMb;2mar)e1wj!gYlTKaQ=l!xt}K|Kx9e_SG*xdlhAmN>uBQKQ_Up^DW0% z5i6G%-!K(`3C3xNoy{H_Ez?<23{ndm*fYtqB=>C98!6xxMr3P4zSW8b~D&B4R z^XtWQ*t?$5IZG7NMI{d`!qTM@Gh#Zb%^pn5qdcgvM%$x3iSnGuux)pMrSoLdGRmSs zF4CmNq~-(`Ypa3R(7_WlTC+jbauktVlg^_9_(0WxBvp50*z%@8g3D22S>Y(%3f)YK z<43woMaI`e!<1tweX@3jUOa9$`0XaoUw?CS^tV5YzxdDp<$12sBpLsH>uJ0c%R&TT zYBo~>?A&sTM4DQyOhi=?NIJPairb+NrwHe-Gx=ol{P3&aeD%$XZ`h;*`>^s++!(5U zdDXo6;lr*?z01A-egze8G&2ioy^`SyqBL-<*V($)NOa^gds~YtAOVg}y16x!Q1 z*{^W0x?WtpYwjLK)nc-_6`nnVDL~Yy?=mTko|`0#+kqC9ngc{sHqBrFfQ^dEy_dlD z#Z6aFs`c?0Y4mW`Ute~bwqRE|!58@$mpSEt!&-NHcPkQIncVX1FvNzvP0EqPaINC^Kr>X8q(u6OR1V@~9xzU~ z$%Bi`T|P>Ef`}$x*}70;j>{=aW2-G^$bN)fQq#Gkqo+?r@$o0!!%fJ4`%h;LN z@_mvW?PjX+?s_nJxbre>vM0Myw{2yPpGQ@*aGH}vuF4?PELjrb#l13Gp|w?x<*}0y zKPwz2t;@SMj>Mby!SvIXY4^qDy357_`SpA|TTVQGTK)NRzbFx|U9WEknK;>8ODuHX z-c8+lYrOH*EpqAA<<;x3186(U9rg9Rw$Bmy zUi#OsC^A4Z9f+|5!Pd!V6)A1%9GRL-U|4CW6~_fRQP$yPRHKRW^Z1ir|LV!t5v0l) zi#aeE##H>}c^a~;?vr`#`oUG(?vzq^&l)hX$>9TCA~cjP+kA`QRFsH-MxX!u>sQgk z7-15aaf@1B?T(c8vYk06=F19)OmF--jPf`<;XEr22>LaN zcU&AVwuqmWcaOjSmzlA<4?B-Pez=;Uml|EHCbimdxtMOI)G6#no48F0yBD(~3&SBt zu9{C-+mepOTd!#JhN{_{jYqxFbh#V_b>Q{k_{Klu#Dj?uMGM(~1mw{9CBKs8wo7C` zis-A1IF5)Il(u+n2moCu(5xqtOnO6id!r`zdCtcWt%)-2sbG}kbiOV$h-zZlR6t@^ znYUBqI&F$1w#UoR?SLU@#L#l>6fp|EmGxD zw&AH&DP4*kX>uejQzYgrr#qca(>RJEwWr8nPq)1`jwCHpG+SmSnaIW9J0?NrQvEu8 z9gWJ}Nr$Nd-N*J^`RdEElQoEl6xjY$dlb-$l8UMUS46EOhyuAfAe#n*UANg9U4?ON z1dpqG(<`c$l&altRu^|et2J6)-p;0%pRR_3U`C^+TRJEhI`I~O54I4CuuSB;%g|;y z?X9m?^ZNQtRAkC(M;XjY|dHZ)Dbbv)iu1+@PceY=vr{P?kBxBywC!%veq&_fgqfMalUTxb#)! zbmS~0rV=M7QdGuPN$KorsPreidMmB2Zg~d70TBQ6*Z`YPr`^4C50$DMO%<&m2t(DQ zif`mKRL4y|Qw74eiHxBh<<(>sa4S@9M^yNCVen(}agP5ws(Xy4N>Ip{<=JH@JT{Z#!L-t=9i@zlRiPk_Fs68(@5~?yrn}4i zOum{gllLvnet$82xY~9)7n9A~x0l0*M^~6WOk0a?s;Dwd_aW{d{Sp!)k+iFiz4^P% z!&{~{xAzmsexVxJLU?sI^-Y^dn|5Ai_r%<|8V2i#QVl0{2+^l*68Fi7y`EnSeUlK4 zos)g8Uxq3q&S~o*qhVUZ8qym~9E+zU$Z!#`JGocF(UyKf1*TSGc41a>{+!QKCh_{P z%#@mnJMdlL0s^e=*%*ZgrVlg`6|=USOQw9xlbQ$`^_UBGgv)i?-(`EoK_-!-y}cW=1Wt-Oe?Ld&g|&!0zGF&q>353M&pJZ}3qt}Yvj z6?DcUL%aC)!^o*vgFdwHDq<;j*fR@uwSG0FLebhH>vX;K)RrBaw5TTJV6RP>(nI%d z)|qRVt<9!c9e2F}<1{7%O+%(525P{CH{5jEt^S7AcaJy$L6_^HA+$!dvy20EiL$rM z)i9a{!%r8W9647w4;0ysYnsl#+aUO12LryUY)3nenoDNV&reeoovR8zaNfX7OfEmY5T;+1zz{;52={mZ5Nst7mm$yCLal?>yTJrzSs%7^EA~_hJ53EV zjGc?|km9zZCanN0J`-UrA3Z)fjihlGYnBV9Znwd=)?I_!=lGP4Wtl*CfuNyy>R)o` zU*9w;W_vh!bKe?{7gRr{{nZC6!}nHK^hhz6I65W#Ia-XWlZWeZAHYpO*0mqZuLc+2 zzuRqgD-R_EVCt||pEJTTJLN3*=SFiyRxg}^r!eKySJVUG?Ya!9d{eue@b{&*i>du# z#Y_`mErS_EBW1Nic?~>xv)41L7^i)w$#2a<9kRHe37N^9e@O|y5T_=q3UZ4*Ki;Zz z?BFRyR)IcVwU9?q-=DS}6wM*eTLx~UfnKkiN1n&(y>4APKO*H*)r1VK zW05P5f+eP1Q!0!I>>hI#u_zF&F_DDmMqFTMj{92yi^51KrMaDml*TzD}1YJxXw%pV3N9)xL` z;ZR%Bnk_#6xOD7>3vgR0W|`@XCP8Db4R6UQpL9FwhDzJx7m4wObw3AFHJc(Az>kOH zeLk-!OhY@UK6$NNfDZsq+X|O`f|MAXkkJ^m40o}75}VPW*Xqu1F1l?cM_98CE7_J1 zXw_sOA%n~L^ai2btgA(3nD?H^T)ARvvB>LRMnSvNC>{56zj!7Z(Ei9El`s~fYUYDd zw#2AJCY*R8%>?E(9y;Vs*z8C04>vVd5Oi{;RvBR|N~Ch}6RAUZ=op81PaO2KDTyK}S=h<(Blj-Vq zw0twhp57bPakiiEGUo1|IH}J$2_#>B{*&Ua-(K!koMMaylxMqBH-@uCb$z?P>jndC za?Ox?^ZmEq&OE!2g$@ufS**`StYcTR30R)?3^>H#`s3T{vByo68ndMC&uRp0Nf@!~E^+4WWPbG~lry=ojRrf;&<*Q3 zqOj@1r-8e;8rby?F$8BA>O@59P+_vKQu$Z1mE%e0cC?@WhjWDlijZSSF3~PYkt-&l zl8#8c#28lv_~*!dkysp$s$wyiRhbm9muR4MEtfFrs__`fj(~h!0f?QeTTnDkpU3s? zYS6jB$XvOYfg8`O4DDUdt<#}1#pF@;@{?J;`!L-geyMp&5EB)tI$d|1&SV5BWVk|{ zG#GaY5>%i3*RNk3mBrUzA9$=y&wm{=-R<|An_J$5Z{LT0w`zLB(Re$bfEqDL(=jz~ z?YX*uA&@O$_z*SkxQM`%DHx6lA6mu`Zq?m(zPx$=hFz=6$Ff|NOT+Ea6N0c)OO8Uk zEfrO}gw9J8T+SxRINM~P+l)XWnN-GJtbEa1Z}uu&Y$Q4UIm>P~gLZE}?h_DQ+U2ZC z)uIU4m*IHkST;qSv8JxoTAl8uY1nEeOH|&Z+lffx`H5mjKl}L^X@#a&$jF?diicnS_C+jN zg2c(b%=Xx`l$krX25#QQLZKX0rsXuh#zMNp<`S5tv34`A1c0F$Qj4TOU^5b-P zQQJG+uoZ|9`Z~c_cmas}9Grk{g{#}`?cFGxPUfrayF2>P7BLUGX%}is`(>7R9aI6? zs5gukzj`jor8vYo;wUIz9mL2~`zO$K==AEGbO1l?!+@sG*{DUs9I0hl zu+?fgQAj3CE*m18dbYvrH5!8!Q@d#>Mo?IJl8BCuorXo@=k9)e-7(wjbm;FHHy0%j>8p(oeDOoUcg21FF>pZrPh4?ce^YVqzWb;J{GZ(|@D4e}I>j=HT$ubXqPmq9*B5LG$1#sNsSqBNMA z;Ev}#sbQVST{LWVqGVwtT5S7yXSp^S)5YcW)XS;v;`;LD&7yn#k$x3xCXU-8LW)$8 znEH5o-Gh8PXR<1nlPB?$SHeDWV{^+NEVwOIyR-ZE3r?qOe-m=k=YN`62jvs<7FXuXu`AZf4AMFVg?;2*7|73DoFa;sp>Fn z*9Y&6Ga4+}j3Fr9>H7LpPrrEkn5gx8<8wT1`h_}l;UpZ@UOrw=0|mUEWXs6bSR zmzf_9r|)*|_OG*ADC?WYT`9q*CXpAWBZF4sNiWSs5QTEA_a2_4~;E$iKE zzOE-D&~1M4cS6-PY&t-EgZkJkYPWwJRA}8X3#A@Kfv>JCmtIHFj5^KgRO)eF$BS<($5EK9>cdX`Lp^sgp!=0Ew9Ap2T*HM?f-u zf{co-1{PdErm6E|0hQ$552Xu2LPT3p*1OeGLA9E8HjBz{_68)qoPU0du_U7JS5n#Bo8P2ZMdx0 z@lvdBM+%z`T5kk@Vp#_0fnAj_5A;c!EhBgwev72} zy8+x3(#S;WD;`j5t)MtLrBxL?hj$N1VHWarM5`St7Gf@)$W-OLgR+Z;p%^>Pmb01Q zay}%tT(40!bj4UQqjco_#c;NK+%`V#73tFuxQ|m8BWH56*4(h-9j#}V7d)Vd0$8}X zBP%V|;mC8*&dJ2;jv{LgJY6BPxW8R&uIB6QsAVWQd%3-R(_%O>oCkF-Bg3h4x${&| zS7ijDhHz3vEzig&2(V>0!IM|}EopFBj~7T=<+*ZeX7rYAq$wwh?Aovy~2p1N zD*2Oie|hz|jz>GBGXz*qlbKyxjaLtkyUz0cVxr3J9{hWaLIel4a zR#_dJY9cq;^qZr;tI4_t?6+9&tlzF@jk0<9AQ$v!KmYuTZ=M|64Di?zVvQ5>pZ#xt z`M>@HfFr=4v&YL0fEP$jRSor5*vcK{72F&d{@Cd<#(NK(i=n$T?iiceT_SEW=8a)R znqID}sWSCR&=?d9804}3LJ(SIXUR$x->BTMkRfD2V;l>7mFI3FpscS5JU(##f^7&x z`eR35Y zkN)yW_j+}|`=`lKxUk#f+gAPhcGIf%XV)JeuI|3QY1yke0BBdww+Bpj@^Q6!L5;Pe zC75;-?4nkB1~nUTC!Sh{S2eeg?!Vo9_~-9t^UZp~imCMC>@0HpcfW}sFLJltdgb8w z=l|iS|9fJhkVZ$Cy9|3F<8Lh41Ze0s0M7%o7|rDhImWEDHs2T^^EGSSLp;+5vrb@3 zEhP2c$PtW+l+6-615PVwq$(JoB=S<;?g5CUbg7Ewz&v}F0#HPTYq9LXb*TXj@Y*&f zDr`jEu~U*rHgYRf29us7a93^(ER;ZOQY-ZTJ+0QHr7Ob{uA}v8NJWh>I30#CWZ4ip zsB`OJUv0f8GBkH>{?+~fdr4D=2x%Dkv?Z4sSdz8o770&lpbVNXj+6Q9gxD?JfZ^Le|FF4wyd0~BQ*7*(wvaxJ!4D7Zgavc8UTrx# zVfuZY^zhf8*)+`G-Yj(QO=zz!>goPJe|Q*NF2;ZQ;p6?yLuj=J9a1T1^eoNof!64F z-HR?i$9zMzn_eb$9HV|Cd7;gQPQ=T0d@PMV++S|j+bd8*y4SfI6<>ezC_!_|o{T zaB@9CdRq)UvXdcGC8B0fj`OHsKwPoPMGj~b3It}jsNxfb>83#mK2IhJonWs;TVCRN zuff{wH2If}e5JB@H{hY!8F<_}R23?HSeHP`@ya0QV+V9D*hM>#0kwUW7`j=v+k_n9 zO2mbeb}d&hxZVy;Uc4ksdpI;e|Mno)6{{7t=7PjGYR^Ghf;U6S$@2_yBKzfvIzEM61J*^DC&si#GUl_bjOeg zOfbK>^NP(uFk~Fnw3XW3YSwCP2W0uizkk1JP5%6+w}Sv1n_uBN z-)>fm;0KxkI9+5C$(YiV$!hF*8HMJcO<=4GX}e>al)x_U%-6?Xe*KG|eDn0F=?|*Z zB#N(}{r2kwgnQ=TMIXlk)vKC6Y=fNM>oi!_8?;i@#t`;Oi5F%M2QvxuR^4keFx{iX z3ILgTdr_Q|lL?F_e3XbZ(adS}TJ?q!%dx}Fmu!%@B|zT-x=SKd#O$`a^^lJnxi~!8 zv;7#X7k0k;S6;jvGqc3_L8kB@SFpb##w%x3xVzBleVZV$Ml%IoQH{`1U93=uV$Bpk zOlaw-QneSGSx92OYFj*1OBujPW;UXEHX?(R$ETp2$P^*WdPXsW{HS90KpNBnDOn0; zO}?)kmrP$8+jy6Zo2v7mM+c6g>z&&M0T=?680W0l9l!a_suzX zGE=9m>(Wb3r$j{pYU-(l`tI$jS~vZ+`RS>8qFLHcJoahRMjQ z6B)K0A4A+0J<@*l$(S3krmK3POtI3f`LiJ^bQjcz0v?d29gR|UXJ*jQE|wh9E0E)5 zaJ)=6vqjn>JR8f!bnWW>#rAqN^672t8(wPq1kOWa=+PxYdef!|;XAghczs}(1IIu& zww}6$SVTov;q2X0ayc$4sG$3M1_h{0Ks0keVxB7D-V0gwHZ1T&#yliq zO~0bJg%n4s6#k=}oIVmUE_Cxp&z`10XI8QIZr`l9RdxIGu~9BIH&cJqkZCD}4}aV- z2zICIizY!$eKDWD|G)oqd4GNT?%i|uQ^&EIN*1m0+A1aT@z>UxHX{5Y$?EhLL%m!z z9FNyQS*w81I4yXx3TbF@Gr^2eN;9k~aDD4zgiSv!Te+7{zWVauSwzebQJIqKl1V+% zdsGy(q#gE@FvJ@g z@m=ruMIxqpqiuiC;32c8{Bm$|_oyZufKXFNRgdS0?|1@O6#A(JR*7suoG-NXY-`gh zp5bUu+(Cr(cePtHmls2Nuew=JZKq5%p3cY}8F)eEsZ6ru;uk6*=-rx_&FhK7?nO>B)a z=YBA(>f>p(!taro7I}BhRRgWS8VCrpi@-iEa)y#4H0&vb0H6!Ubr;%lAy-Nlar!Ey z^JJMPtRxkzRb#%JU)~Pct^$qTOBIbqZ~b_4H*;&OQ+J`=n$Ndy7a`)A+GH^>i*j2{ zrX)DtR#=0|iY#o=#l%V2EhWJ~6IpRM0s~-5&M?l(d8R(PLI4(mM6DlKgR2V$H;GIn zV}au_YE{{kXfNVhq;bHWJd-9SU$D^6FrL@Q1JVmC7~Md?2P{xU>JRi(E+-MC7hh#>b_x$=zZ`bsG!SF&eCFTmDEGJ)7^chs4!F0QZPt*vh_Z^jV1Bz3S|hPU6( z%kG1d?=4o~%NKwA{TuzWlku<)FhLC0yPiOwFFCor7}r6+GMMKRqBW|CViO$kBGBwP_7 z#t@gunc8OBfZ0n2|JrkB$fNcpWAF}kKmfczbi7VyP|*XQoJ7;&G;f5}l5Lh!D#b(& zV{vV8Nqc1)HpU+L(%$Z329e9L`yW2G#;b9s+fvF}y*F91gKhO&6Y!}VjQC#`iv=s> zFm-;_v-i#mL2OxPNarL*l8k=omhjFh<&KjCz$k(-SmuLfwHbbP+Z~(;s+Oy*?ZcDf zVt4J^Z4jU^F@gP>$%7-C#By)RQ<}rV`hN!eWUeh}#{KfS=6eVa*zb{43L8l7bS)E0 zP&ZQ2C9W?~We5xi0BKG%2wGCs5+GO@EnjhmyPICPUXHK7yTq5awf54C{`O&stx6KB zt4}vuvvM_l@pYSSb(I`&>*M2Sy`inw(dyfQ*91%@;DbrPnW9%Et{!HiNi$@5TlHun z8)bV`<3$hG2Cz~kTPmD^_|GIy5+~1(4*=Pkft5)TEkYL5aO!#?nbqNgw^@ie{N=4$ zfX9<^d3)NhYcp4>Nz}(=htdmqP>5KKP7_Tu3*buFW0pl;K`CVrro1SJ%!twldX zzSdq`^vTmP*1VqeyL)%r#c;@$yihDuRCl-$Tc7%~nNJ-Y1U@>vad6?5D4Y4|` zD`mB%ohFGr?f*1#g&na>)D1+0TCTw(Th1pdGoF+kK^t|&*O6Q`>|Nh9PQO0Y>XjHR zW1y_C>oh~y$8`wh1lJ?DOU;Ix?F>cPK=kA!4umqSb>G;(@#`JBG#%fnTZb>d4PK`r zF;G~|=r?4~bx+Ks3Joazm4el^*tkP16>Ia=Vlo&9sLBQ(?^kxvqlAe=d{}3Ij|=W@ zyR+j5`TBU)M29;;*ja2YH=+f`jC)6BG`(q?Ow9Ah+3FLGc}#-U1%$jAD%w zT%Z&32O|&5MmBkLT=Y4{?lbdVMQQg&Lph!m^M)~Zg|iuv^{Xd|8=-LS zRM0nS>Y`E763KRhWHFj=95-UK-suG)j~_H!HLiivo(rQuLSJO3&8`DqvbSj4j%dzl zMQ8;nCAXP{>RIRF-F4WSj)`ILqvDM+-aLH&-4Aas$CMp_K-<~4=3Q-S8SbF6cQvoZ zGi0075{@P^);a~Ab`xS!qcrgw4sM983G~WI6OIOd_q|+fk3>K!w@bo`VO_p`@N1z8MPQ zc@zq1s3<>!R!51uXefkG>_0C><-z#+d6RhSVkmUrcFjx*Pm=IcH6-}5d^%PKo2FC$%3i2aH!%Paf^i(L4jt27V0+wPWEOzAr!NTeEKy0DudApy+ERLe2j+l z<=LxasnYZIu}wl5@E;k`TcT7p&g99dp0FxM(_P{qfazy{{Fk`;mC8f#?a7%=`7>`KHNSI zX5I3MwX|B3-G{*WZf!$??Pd*1gufJZNdF>8Y8mN9)?6O zfOZ$mR;#ub23%H7kBI=^Z8x`L!lRSx%^D9d|)#L7=LF!L-a`;~>LSy{1(!@0((qu*yl!$R9)&jia;uFB2&= zT~{}Rc3+R4@DVGV2?JzJT#7P@PBRa#p(J)4y4r?6TJKGIZIAI3o%uBImCk5C=oX_8 zd8>`lYIi>pqIIEg`a%>BkCW|{66@Ui@)+sWq&FeMzq;r(V7IycW*SbH*Ps6UFSCA2 z-Tc$XmQb5N>;~W8F_JQ@pq=L94hVJ^=!AUS5Ui9YE0MKvS0W2q1e2+st zD^d2;)R)AwGjh?XQmakdsz@Tcls-&HfBQV`W9BdlgI&YvB2O~wCQZs=hiJcE6Ou`7 zHfzf%8>hLk+V1wCb6)t=zKA?3dwO=ddCSm$)@Zl=b}>KbHtG_$R5ls2P$Holxa}D; zRpsyV0nv)9K%> zX0tWzBgbjY>$CeF{B`Rj3Cij1kH33Q#S5*{)XPLssLkg!cM{afz4zPl@o_SnJwF}| z%On`2)ko{`{pxbtA2t2e<-@A3&`>zFe?T zwajsq>V2wFD zI;71YwdfXa+j+IKczpi=WVULlQeYR^oD>CF5K_-y3t`U=ZZW6TxWB-0z*0^!vXqiU zoU&TMzWH=HySkdwrgxj}@*-F=8w2DENX4aUp&8BjZbh`k;0fT#iDaE{BVR^Rjmxf3 z?;xSiiIXNAAWJ8C-Cd&tNU9m9si- zETqVzfNi*~cY5LU^4*(3u${I>Mx_~WH$qvPNgW&%<0q-}r!Nu-lRNNY)toKw-lBNZ z&(E8)-EJ|b&e0#=taI7yfz%vb!nRsg%Ov*KJ;0j1hA5<}U@hwnZ?bzFx_sV>#(aA< z^D1c~fa7`i;c*tsSG%jb_jiQVuO?m9TX*^d`n=rvX$I^Jaim74Qbq@coX>DbVjCE~ zsyY-_$B9Lt#kcFNkpDNEO+5Q1TCgjT1J%h!94T)V)qnHTR%LuSZQ@Y|6G<+QdbpxV zptcQE8@2IrOs)}jydN|t3l}e%z(7oga!TRD&{0okiQW0*V3uU;QbnLx84$t8;{F=2UA?h~kVS|v?S3tTOl!r3v=90?}AfXt-y zQkBwL`m|V4F`Zb_v#%oxArXNOP(s!Ul##%yc;p=W^HIw!Yhax;$n_4cF{c8uxX0QF zSR&R8rEqd0V!P(pSaW*w<=dv^b7c0`k4@}kS>D!J$3`pl&1Z)+dcvDQqqF}0@ zpx(~&J;xu`D36!nqZH3xrwz-Hvl#nw@fTW9lf1aRs0@aq!Im4}tDrcdeq&_NXBq~vZ}s?Dj@wCRcDdY5GflU< zAgv{7opa=7G#b~IWRt8amQSCFg!e!I5eS3ufj}UDfcHqG&n(9x*<^Q*(acCoccXjI z#%O-_EV7E3K*aaG@AK@v@w3MOTrgpCo1YmwI|MnL<=yAU%f*Pq3p#PiJ`GET2SZ?B zr`n+uYN)9Kq-h=Z6;Z9GH*D{vV^a1cad5;+ztLdMyfY*)!fJpu#6X)PnU*_22jehN zlnGsXRK`gDgILA7V-5Am&Gj6eM9mg+ga?YbEC6UrW|v|$x~t)p>G-9R=yY;l{r>6s z)AV-cm{2UrhdGni!rVGYdp9VPH`jeDkX1e%{Om(g`3t`aQUZkFWY`P3BO|Xn<99@?5oWVcpcb-a#iKg(jYHYGzB!`+2rY2){*qb z$LrhMi$QcVAI(P&g|5U&sr&fzoFYOGG#YjFE~og-rysBSJvrX?CC~wMKBQ`Ez0yS; z_g{lni3$}MjRd}$s9b8X$~&*5pT0VZC(63lYck@ry*3Z521T#qEH6nZagc>HvI~JU zO`h^1Y!yJEz+>lIBAlqb{lg2a>*LG&pD){WeZCp1Mpw}{6a2bw;(9`Ndp9@3sZZH3X!}>I zdZUkws$PQU-|T&iRyU;rW~yK$ByFvrcDuEz>aADQ5n!Q==i8ep)(KvAQ$yWeIhE92 z>^!S*UxClrWFv(iUE;M{wPqI=tKsYeHS4s7(MCHJb5pt73XAAh+(C#*?G-9Z^b(T2yy8UpDo zaT^Tn=_>c&W+B5XUd=Yia*EpCcV~x(i8}QK0i2@UR_?&@yh)CHtF|NV2XkKBn^ zEq@sq`eJ4em7b|bi^=_rvCrn0cas*h0n53*96N4ZFxb&<{m`#^xn8tc z_xlZJd3~!q`7&h!$E`2}^V)+&uhHl+u&P)W6DR?_#WrAl4%}2y*JI-IZ(^r8hS%hX z+Z?6{PE>byHRd$fn0mutHtH%;8@63i)iTY%ATsZ=t?xhvAbKI$QZ~?hvTuxXx7*p}4b*?HHQxp{89#n~4K5<7^x0VnyddYz zOqKXhy_8PJIosswW}{s>Jpby8H)#c+J#mt}Ox)2Fuq7j1EvHZO#Ca`#tc|8js;685 zZ=U1`mNUAbz<581g6?sTR>wn5?&ymh-ih-WU3r4Ioa%Z%+?jDG73Kf&cQ9Zjlk&P; zz>~`UjOJm7)o&}<9Z7LSEic~9C#*!}&1Sis&qwBXvv^!k1OIeKirn7ZueJ-e`XJuA zPT84-=LeZ&N@&?#-JX#-#$0fa)M5zAGy(SSRQRxBmXB-DTm{K(%x zC!-$220rWwVo@BDNvB0D(D6GX6!ff#s@WRRLU`wFhXHvj1H}6&}{+aDCEyilDT+XN*x_xYY+!Ne*Vi}-hI5L zH+V63!?}@Fdm61D3on(+LDH_(qgx&k>?JXL7$|Udwp#^z4xXb|C!(5XP{U$ZZ|3r; z(|qjZ%N?UPclNeG+vd&dg93H0YUVVT**`lwmTV)QHB@2^Vl?qfm9p%Rauyr)W+hJR z!C`(xxe$V&?!cP>(-8o@Y-(j^icH;{4D`A`-~r9_+^Od3O6~8z0L-DXpq)oz?x51D z7vWJk1JxWMN$)JK(O0yt{&+{3%9-j#WwshPi2p9XfB)(I``gFQKi>}q?|-@CD$!NU z`O*=hQLo$c#bh3FwCS@xS+SYL0vn?cug@im`b$i6pfmY>YYBnnKctm@+&Wp*ExFhqCAEe@>n-IzQ z*n6()6qw1;hbPfp?|1;U-IZmw5v96@6s`zAD{hu#GHN z%GJYP|N6hZj3*K>?4BJIe*Itnr*Gr&OeR)fJpA(O@3Og6Dqe)TifBHUk|gwU+^twC zW7n>B78siNr4YhGkGBgkP{Orvz|?m142ogPAX9T|ERjXeN@qE=i7(_nZA_~jO*k*J z!`l(ka)g90Cz~ZY?8WTiD(dQr?bAMEx$a+g$-Ft-JBQ1wAO7_}K0mhgkC%fFf4K+l zF_{8sUThzOY(Wesy#*JHO%${k4-BhScRDGRZK*&mDN-9a(OUj!49kV*mq(0{ysNt# z)Y^=xqluDh=sgI_x@(IZ2I`F=(>7bi`QE~Pc+uqz$+ip8JIAhOg*$5AVw{Fb#?g{x z7bF)dWlod;=W7MgXt`#sNE%=503ig1ht5W?Kx@ud9K11-w+#`D6JDOoACWz}U7rX> z|6;e3?6y@HD6C}k$z&Eux~yh8_cznwd>WF3>;`R|v)wK=X~z;3X(#70=yDZho)MMA z-~D?3?eWuZ|LU99zj^+*|Lxh)+gR*0kw~O=^3d~>qc=yfyv#6M$sZo<8nxLtJASE{ zrF1vE3}+AP%_hVx+HqQexoey&RbWBTF6;D5f4MB>>q#2V6d6K)I)#Hnx1dOW8A?W< z_*W{cdAh5=im(r`h!ylRw_GOl`o0CEI9#~4iP4&G(P#lG)G9Etk@ zE$#WT&%v5PrO(a*i>%>Ss_koPO8L4m#j3{sH<(#_Z%ebN^mM<(F1}P0i5)lb!Y-7Ljb3%!Jllx zcvhaiaZdjJi?9C6e|dU%^xH4az+-35;>Snvbf#3#7XS&S0E|{So2!_c17ED96qGhu znM!y_DNRQ;&jpz}u08JT1|#5)2oee9Kx@o8P&|?f7LuHQF=0e#lEZYdCak89W|L&gw@b&?SD$^o8M`3zpx${OSFNZO^L2_x2=L zrRjOu2c5&zjsA(*pw=6-(@P3JRC44W|@nY_nmQ&f0%&{WA6tQ~7b zF77@1@_$S2{r;=BLOu27+h<3qQln1pGF>X9ax5+hcATEz<*U;%GNAx?xI(z#hgYL$ zI(5}lmdZ~yc8o`DGPe|tn)uc0f;)Dy2%5uAqUuzSla*j97J6&Hk=^ab-q06kKG_>V zUu{dL5=We9F^!-tT;lt8krx5rzf4tnjzrFvr|MQ1Wmy4c1 zUd=C;*aLJVzTuP+bWw2yDu{Wt4Hi=uQ^olC-T{->bWwF1Ru29)}fV^@#F~{O)s+3byl)BH{(usK>EFQ?rvcj<;k^! zl1t<}s?_xb@%Zn)d6CQ?ofU(il75RSl>a;k5yetA7duD;3t+-ZCu`^UB}57JLy`w* z-#Y*l93Wjzh>c4(J7gHaHy0Qu*D@TQ``KgGXN&pl(vFq4n=l|rF4a`n>b2O5qxk-Q z4tyGuhQf2U9+T~Oxth%<^Nk;uFJ@yfd5p~Jb!SQ~cXB)I44Dm&9#`XcKm79NfBoaf zPq&yxKmPMy{yfQ*4Au<|f23wl-p2TJp1*jJ687H2`nQN8TSK>;jUOTo)Un|j?Zu!j zXt;t=4g9C5lmL-N6qg9^keeP*DK7aa?8LG{CDX3dxMsK7ev62mu=nMwCtv?Q{`$>s zw30sFdk!GU3lgXhVO}5g ztZ2ew?eRZ8iy5JKe(>yVC3lebdKJjl+uKfE1p*>6AZ)x%nuNXZkDMp9`Q7cqX0qxl zWtklzi#A_jE^Zjb6KmVHFcGWylf&fM2}AsRF_(!a)5T&96~OT^T3x`WFiGiU70U>w zRqlM?nVvMXR{8PP9m$dmI{FB?BUC24cp>R!3| zgyBmiEXJvmv$xNWk}sa763_n-6ASIpa&v!ob2;;z`iXPZ3}Gb{6YkKFDll=^UUxDh zc|U#ZMenBI00&e0ul>F@`sY9Qg;vOenM!aGs}K*&P9%j|J@#F4_Wj5A4_C`6vV~N( zs6@Q`iUPVry^$!@VH;r^@D@WJx2_Bq0eCGqM@rbbBX>;tg!=g_>ek?=0P>;Zr7e3D zqjFT=f1cg#Wnpk&jC!RwA&~O6Rx6yH=hB?VIoGSLmfse|JXvk-%^ku8wm%9oiumR& zH1{mMJheI8-dx?RuYTG_ZgwvL>(9iZOHHR#@JR+xgv>xkF^xRAVY`&^Dk*bv`|j#? zy}Z0=5*+rIX6&Q;ZN@Q=)Ddnnct?B|+ zE;rOOAoop~`^{=x=dfF+J>b=ITCq+sun%q7@)|^#8&rU7$sFCRp;{e%`;Sl40DibW zNbu^E7RmwHub-U7-(Wniq@N$Z`66*x8+ELkKYhNQ54_rWWwrGtjzSs>8c-Zn-+a|^ zh|t>B@;W4?Dvu|mSvC_!NzIvCon2Zm6l{SW!)6)wx7XL}&4-)1(VI?}cRyUOT3W4? zDw(};pu=u8AoPq}CUsU&*iNPo-X@@9QfcJPsMm6gxa*RbIXG@m_Rz~9@Ij5)VJGNd7u;zvafdtZ}FDgi! z3L6zOBHg3(IKNYHmP*ZKkdDO!qttL*60yN-9dw5Ms4~CY++HjRkRkli;+4*DGMSJs z)-0@W>M2kuWwI~@N1ByM2X>@Rq6=!DE@p_7k?^I+!N#mWsyXebgxM@CGxLXDw5(wimuZdQS>BTyS}V$#7UO z(AK#Gd)<)YN3{{?r5C3~ln1mfTU`H(4ZCXhEJRxItW-^%C(Z;;w~WiNI&tB3K=9|D zs6Y1_#MKw?w%uKf5zOc`!rf^KHD7A2$iPa8%=Y`sk$RFgIc&O%F7IpxpG*_f!D`YU zPl*xvz9uQ&_VV$8Y*xXW&9?XVms=0o(9KWl{)hvnKbg_R5f#twVl(e`b)30P>?q`- z8ac!A{ixS6nhk3$w$KE!)D#gPmjub3M^fO_v}iepP}m>P^l(Y})81i&BIYNd zYTBh-ifg087nunXkk$@aq@G%}Fz&Es;G`3^;K#RygUEmfimu1$PkNKp&8H9Z%f7e0 z=ra-2`y29#lSoaM%)VRh-AtAn69)*wa7BdlO6iM|FT248NG>9&Eye|=)!n_oTh4IA zqf(Rn#beU#(B%}BNR6jF%>6o!gC|J0LmOk2v=42t^Nn{^Qt2zqZ3Ga=khK0fF!NP=fiUSO{^=$$T~m z^^%w>^=C~yawQ}#ycNj*4K=A9A(K*#RH^0l$2w_lS7p`CxDo#SWZ9AMjMpWwio}3p z&?L}Wt!B$*mya74N)RgqbDI?AgGs+xt?YA}EQuoA4#GgUEK15@cm zZgl`joYehz?dxRWC(DrmeqN{LWtyw5$#gcFX^C`IV-VMDN4&9zm+*PGIAheXz^c6c zHaQKG3B3yf*y<1c>D`*WnXK{QuM{(xe3278oSbIcN+m&D;k~TSMuh^D!wyX>R&Tv7 zd8%?svQ-?2b!Lj9IcU~E+JFmMb|()cxV`bi%FWg&J+wky2}d)&vsP!!Ac)3n9*ZhG zIVjn%3ga}g)7PDbE z3&*|P7;-!r2L1IFbgb1fT3lT$7t`&K;o6k8JHG|jM?=h0-oypDSxtKU+2p~EOtu6n zzo=0dl=xE|J?OcvoFmw50AH1@A+;*m9*u@wZ`9``V>VH7#L71hg+_q?7Q72Prpa{Z z_kGig7%Bs=H)Nw%$DG?U6ak5WXbwXbVl2bsgToa>^{bZz|U7J|Ondi>iXfcEwDUg_E|0@QZ`aB8~Q9kRV7BClu_jeo1s8V`n- ztL;pSJ_G%m_1W)6L-b%&?Xq}M?^!q zqs1)RM3wOU^=dpGM4mdDL?ihmuaRQbR9bZrEqZ*u$hR;N;lfjO%lX2|3;(v2($HBotJs|wlN)_=bU7Tj zB9oLScp#hK5+vh{1m*2?z& zbge7Hb%1|Drl_P=6M46kiK2dgz3L_MN6(X7{pblOMm3M0$R_nYx$MXGmoPm>ozc*p zOtj1?h$F%$V>>NREqu5+F_XjzWoDTX3M@kTp-L$2qJ0Ro|YOdvErWwH%}3v!V`tIpTI?Ky`O@LWCvSOD>V^mDzS#bVV&r9Ep`Pfp4xZ}{xkz3pY!%_ui^wgilu%3Y=i zGdloN&v*GuYE-f^t&R1hoCn8ID^;OTSBrUYKg`{S)4TWDw>c9=$WOGlM&sECT+euQ z4X&!Sc(`2#U>J)pGUv~pe)G*6;4wUhr*n=OHDU{f%Y~99F*S5*cl=+i2HJ5YRW(%y zoJzu<4TIQ>*o$j5Oq~0#V0EW|wUUA!{|Ngeaus zg4nFl`NVddR=D?;Chza3C-#qCt4k5L2+C&7G?>XuE$>X0^NvVfk1S$$zT={+N+I{^ z)p<#ZGtq7;S&x~HCX~zZv|3KZVig&ncsZw1g0P(R)|2Y#0<;p!CWxyzf258CtlZs> zw1dbQU5?g>!l}#*$eF2jk=hH)WKlZ%;z+l%XXmjJrYrmQM$WYR;dBjyr;kn*3ZPz{ zZV2uf4cw({xdubIDi^ce0bH*t`IodZcI3)ws-ZFJVNKJ&y|x?Crc&I^6IA%1jn-l@ zHZX_DOuVY*(glw+1uw&WNe1O5=#>O4u-4cQhue>XFMppr`mS!38-t7WbV2dl@VoP{ zmY2Ju5u@yy7SFBpFP^{phv#PLTn#K3tTZil*gTLw0jx0g;UJr8cpntLD$)rbZ3sEM zoOfJG1aYQ}FDgNtyF0-Nxc}i#Z2<{X*kbH|M&6)6uiN&lR-e`xW=G9d zgyRYT{Bk}k=+)@{mw)L%dX@pg$5@ADCDzyoMg-ZN%%)3ni%k?(QDL;_FIMZJ#+3j8fNZqc z6p{X_R1Vr!Vn1Em|L%DIyr?jhYgz*r?HW31$i+PUcC1Z}$OqnXh4Q|5oYtIZ4(zIh z1dMRh4i%in)M0`uWDTA@cqJ5{WU_*C@e{+e$ioN0{vu2zTf~mto#3jG)*@T%r1aYwUG~Qe~w9vsWjHiS7#dPH77!3y8v>M5iMDgHd?)W5Q zwVQzx+`ac@IdKe0t=+7QdXhU?f*UVo%0LJN3m>g6Cf`)sx}3;W&-RXw>PAWTUH0bz zyTn1u288W3Yu&%!ue zv#opvFNr#y4O+Z!nfZtbLQoax1xcpYA!Xd(O@F${Mr9Vs)_@VONznSGR{j?o`hIAyuM8#Wkke z_PpqQlo7z>nNkH$JZXcP)`sD&r(PvxA)`#F3PCIfELk}I`ei~6nprRmS$JW7FXSVY zNC}DO6)_zyo{YZfBG_A z$Wn=#O)uPINlZ3H%?ck4bwKQQc|UhpRFfOZ>+@NA@bDqvHL;qLh-cH|!aV3qSn3w) z4G9_q;B}g5E>kb7=^;K$!%AciS0R9E=HDD8h4Z($^lp5pbC9coGYNY9L*N2ozrT8Z z(9oVfOJ&O0!{dFJfEeVoe5!>Zuz-dUG^A>I4pXO^2!E$W7>1;Nn@SHnuo@?Z&a728 zJIx%yHCqPzWH&^&k5!0;Dm#QM2;A{-a{J@w0VV6PWAa0D6>41Ny5U&7T^+Mvyz5ts zdoNy}A$B~C?H#o0%z%rX!5PLg{4tl7cBgkP#du?gMYc(A-54cf^RX~L#dcOKSiAui{S8r4L0@5Pt< zMOGJ`*7aufAz+@bC2Cfwkju9mR66-mtEG{<;5)2ViZZLKI*Vi+*x-y9r!d|Z zisslNZK=B>7Fp%!CZkwwc1`>-}haFq(hfR2N>JBE|`Q8z(!`z zUY_j~q{naeV>vDg%K5MU=A?AAM{WN<`R4XC6v_p}GV-p>%4)+`eDH*N55L~u{M8BF zf8M#>$d}L6$#foK*yxWvD)ptJb+x>mfK*q_1_=AI2$Cz8A$^4wOU3!3_jsex5Ep@s zoxD0Yc>c60y?q_e(?r3Y)fs~_9eD-^(q^lFaUB7Cr|p4|$HQ|T`|eo^{j5Vfg4c)K zob@l<%4o7Ce*>Pa(y=(6d45^;sJKuO2KvEzX!k4vB$UpDx?Xwt z?U(5qxA)jN07Rie=+7cg59zP!lixF;S!;FGK{D1h{a|nO%*lfP! zb+V2me;6UOdcsKzE<%4b3G`;SrNr~+XO%2M77fs(R!lXTr~6!jO6PShHi^v9Z+^f3 z^29RVyeXa@<8WW~8piDU>TwJNyv_Dj@yA1kE@&v+P~7$ThS#zxcG( zx}ENo*Ss9lQfF5}%xK)=8lA1S7FRtqF*sDUx;>vY(~K%DXLY+AUM*y^#aay_BCs68 zso1V2lRc8^RZF2kWcU`%mqyxY6`f9fuN)fZ;yg+xvITtZrP!-y&%R9j@}BEN%M1Jl zl;-T&=@GrZ!=uB){K>&tiI#RJT5O2EG`Az3r$zzb8;ox@9vF+uyc4L6??9_nrvD8P z{c=7lnex(2VBAY)8snaHnAED-l6d8aQt=d4#T9_UF@aOB_W~Z2$FXvwV8aJ)d7TeWLR*_JW{q-7f zPFsF7OM_?^|sk2yKX%)F0SHaRpL@*N1h% z91pt~s0SeMA)yO?FVc99m=&?jp9nYAxeZQU{$9B36w|5t)XdAFQx@C9N#?j#$q@4> zo*f_W7rTwx_WxefHIr~mwAxp9*OUGz;Le&tkQ4=G&}*1IQa^fYG+eaJrdR5r&~Neg5hIDRMARY0}<{xi)J0RHeU~=R%yUk5^3O(6tmhQL+6eL%8ND^ z8fSd3Z4F;Z)z{dFYJ_i7sS@sCWxZ)HyD}w;{;V}!YWyq;=lR^hv){&w?Z?O2IFuY0 zLQpA{6wBZK{`u+NK?c%r1%q9aX*loRg4XBbvt#;^FyBq5Yqd&M0t>;naHkJNt4lbp z2``6-8P=4YE3-SQrd53es-q0tHidRcBe$z*+h3NwR`%$;JRSrl2a#RrqUWMyI6y)*;rI2U9S>9 ziXZRg>y1V|*`#;cinMH@LZkq`t(Ze)R#m$lJfgD18e6HBwVhv#az?VjJCe+=Owt>9 zRzuS%O_;`f%-5z_r>GbLS0lJm{P6$&C6u1Nd6ggX-Uik)!oF$uJY#plX3&qv&PO>} zI+DfQvwD+ZJmEssiniNfi?XyTHodT^lYKV%r<-OAa8`}P5UN2>JwK@6Y}M=0Qc1B; zuU7_LS#}%@O7+3*tidw7z3OfL=}%o7_O`0^qn4kw)^j>SOuq4X!a5&LhaEUj-A_So zaVB4Hrtj8+EA~XX2zD5aK{HciS8~Hnj_vmR-7o*~&!6#BYMd`^CV=ecF4AxPk({Xl z+0)HZy6Ja3$WF}2J(Fd;NC$zji)D5?9%V(G6WzM4<{7CMQ{}U)&YDPR^Et#lF=&Zm z=B&&jQD&WIyiPJ67TJRtU6?IiXMJO(Yk|AdW00d9bX0jbiFS9m^gGN7x~r5ea;A~mEmVmY)swf;wI@2q0^Rh@(W8{h2~1hJ6c>t=!b)Him}g)OLA4lx4ZuYxvYN@I z_|EgXlzOw}f++9pk3+kellWy;sw`~@gK7)!GzD!E0mvFK78O@xbJ1I@;Z#!dff&f0 zHcb(x5UM-i1tQuXv;UdJ;%5TzCUM05qX=!}lD`imCX24-Ix-OJGiK0UTx%;96 zdVxKzWIQibQ}n*t(*bGV7Uv-;s|`JW zu$}TYb>@z=eEH-wl@o(@o5%lld%+%oMLF?O1C{8ee=#v=rww)i<>~D$E7_pyQx)}S z1rvA!D&BI~BK7GhTZ$-^Xpk~uB6+;a43$#V^id-3089xrec7+2&W_H$%7KzTtqmJT zB|h~?J8ZW*fCp01mJbM37E#|R*%Z84J*hy=G;V?YfoIO=(Qx_j3CXj?OrccrhC^S6 zheG^H|AKZ2vNOjei?Klq!;ypxq5D#vs*dstU++P#2%P^So5^c!p1-)P)1_^DTMv>|ECX2p5*-~Yj%`~FZqs#a2X0tG8gP#U~UJ#kG zGFt=tR}MlSKPjyoxO@^a-pt;Mk+GL9Zy6Ngw9Y*z{c&iNfeFmr+jqHekd6c&u*ar_dq8Tx0pIsf26i2 zzMcc{_0Z3HuT^aIPZE(kyej z?O(fDb_LAv_A*tFgVb|5-0r?1e$TA~v)58*6>erwByR7BFgFB+5$I$j^#{}U6>pIF z^7pSwELXbo%ZE!s9)>qu(~8{1>%*{bkFP^+is0dvH=ll(Fnz^YnLP!i?sX=eXyWmq zlj4nGpS^N}(-`SuS&Sc5)N~q~T;(*+T)Aq|P!#j0-<*nxvsC8bZAmZeOQTjP$MeiE zaMmZEV^GqSHo64(lU6Rq&eF+b;uL64Cda!-0~SOslFY#nT~4`SV3(PU)gx&Uu5Slqr>7bV zf{ub}q9QmfhB_uQ?V`okxN=^urOD$F-!_C;F&sDzpWGQMu(Hqwve^b-(pz1Eg7rG{ zPmdToAMdU^U?V-Pzg^w*P7E}gJRO}xR@Q?Cc$bwH1Gmtu(b**j=Ib@q>6XaEWLMEu zo1maj&6L@wNF+koew%FQIlmO%?qvgQzfdiTo#7@LUf$5zX^X74a9D0w-+X0_+J&zZ zb`Lz;az4MfdpB|W7Z2}mhvTK@lJFq8&f3cyc%{y8el_e5TA`IcBii2}cz{1`)LCD3 zx&O<3%%O0|1N;MUKr)x(rr{?RUaf+)2h`=smzjk1)AqVc=_E`2tkD@S zdWg1$P(yf05;J3fS1e#vq+TS(ic#&f4sXu9T!m}!AL;zz^TV&-Rt3JxF>)_l#aYGR zMafmn(%#$nN$lXbn6Y|h{-l^pR_!joE*t>flBCaYz*y|+!_B3cW136IMJW_i`(Xq+ zg-faFl6|ga3P68keN3t#0Xik0NWMLL`!ZD&?Utra8KP2M6n2LhMOTaQqq^B1xt!Gv zT6*qmz1n{Ge7B|7)D&&A*Cn|24}?%7;g35m z|3NTvsHu<3!r<=5k2m+%3(!3u|MHpA0Ix8S zGMf(1x}4qa5rxR-PSQD6!@w0vug`NyI-#1_d5ES1CX~76>*vX%8W2XsB{t5#v~1Ju z7vpDa!-@q_j-Qr{lG)62ljoxl4B45?#%O6dM>P@rReQ@8jD0SVb)dF*Ow6#7Dpy%= z@ij95FXPFTa-@ZJ*I6-B$YoATW%}fGjn7Q0oRAne?;Huhvl<8@xx zT$HS4vj@Fc5)l02_9<%`eNLMwHa|+COv0!$ez%5DqtRg`HPIkFNDE^*HMmt`6jrm@ z9(hUvww@9$FUD85+xt(K1nd*oSG@Ho1zgD^zS$hc`WHGlEAvRJ{JwYG!g(tg66+ z!OhZ53`BFqPN*rf4MRt^Vl{+TO{;T|CI>b^hetkbf(KBp7t=M+mqaqpkI$+RTG+B2 zbX%>6LFX>7&Zmr|RjO3Xa)Onx94TgA@JGH@%}_7(yPTuBfe_l=5n!OIhqBZngQ4C2 z{BB$+N@iO;tyGic>cb4F>yfO??MfxtKn0k$q0PVq$>kuYa+B0irBy2Ar}PE_3&?}W zCuO;WYQ%uS?DQ?93bBJ6ocAW1XDErL*G!#Pnk2ThGVuX9yz`IWyf}f~Z>G;2E;U|r z)COV9+G=vSxmZqv$?E!XzWc3#n=^Ja8ID998te=aM;>ivX7M}>h;A{w=i#nrPbI*$ zVaT~CY%`qB7TU8}u0ekd+a~Q>GC4J9D`saN0T$O#OnXIHV~f(DNYIpULSY`otwf7t zwi+$K-0N)D5EjFGhfNRXYjt@M(8R`59{}1CEt()5uTN^Ik*5D?LM-ukJixRqB!yzp z2>44il(MGsd2g2D3>Mm!XsaSxoYmZHQ6la8o<18{deEOwdw7PU%faKHXM8m;-s67i zMgH{R&wp9*BK-9e7Do6!IYrg`?jX#?v+(Nj#q8c*?1H-n3~Y&3o@YiaVgH$cM_w@~Ih&XV>P^ai>=NtYkb=I%qZBL$Y2+3fV+13JMSVk1 z0eiVBi#Zq=$vVsZ#T~eXs!fif;xO?boxaiq{Q5_;3ccI?!kZVfIlLJTkN zhH`5?38yQ#0t|OR3m1!JXFVIurn3ofNryT$dg&ruT0{+CYMAXLp1k?;$UvPC&6nfZ zhfwG)rpxOO?=}|;gOjf9SMo%_huy`x&3&+4JvvBpQdNd<>I#J5QXE2XMpVNf@Fx+O z(x%x~IMO*@A(h}sBs-l@^XI)OZBp5Sn$aQYT31^0hsU9o%XJCdF<(*IZ8`%Cm8&8e z$iNm=Tc>9vXR>v^*}WczP1z3KPg=w2?BhyyX5Vjv;d*)faCy1Bzv}qQZn0?2vESI% z$^3Nw#TKHN?utMZ`xfB|1mU9Z8fQ62s&c`kZVGL;;*{Xzfm%%Gk;?Cq^ddyXckk%$HCQt z@`13fYgYL@#s|_EU5zATIBrv|aT(#z##VBmrmgm9>x(2|Ndymq3ip!Xcs7R1KcFW& zfuh*!+d=3s36fba(su6mA|@hYwUkU&3TX_&!xi!dwqdH$ayX;BP10e)lQ_G3_`Ia< z+8IRKYX%(_Uw2GWycEsl&_{N@=y#OFo0L+`G?)a}>qV(n)hkHOlbT)Us3J6U*&?N@ngmT8bJ#@}+orQ%ATx+FS@|G}AZzlcE|Md9qVZjSIpK16Xqhx107}DC9 zUJliRZ%TGB&J}FdG0c0LWmxw+w_~$(OpS;SS^Dt#>&nvKJIk*BX$>B3z2>yYrFYw+ zN=PoQHoBl&o~`qD$>iLK+EmT%h}m=jt-y@zbBDP>UT9#kcgoZeIMNtY!VIwNJU?9q z6Q+r-gS&By-;LX!b+D4ya5fj5?MR&30u^!D=z^boAEcluDNYl23*rq92@SzT;1?uUxzB8M3#y ze+-%=%JGYIBgyFmSZ2eGmnzm0C$SfM+4OON&=^4`hko6`c`X1UXDbAtf-zUS@mMMO zpMI{!&Q2-R2E%FJaz?A`O*|EWj zvbm9oXhuWoJ6TqK+UfpjN-OWh8okIK_dAyV{&M{3V!r+1%7%pm-(WVR_Q-W*J{wlw z@^PTKkjgm&gTH4jBebP>Nz1<4PgZnPCy6%+Lw3aDZ+@3f{XzY>m`%r{lIF~}1mO_l zIeo2b=F79@;Vz29>4Yp@pICZX5i@zmHX35Dqt)|O_?BM!tXRqy7#9GkVx!6wao3?G zmIZE!^n3^Q7ws=k8Le4IL_7fcQps|KftX-<>B6QBAy1N*KZPs@zU9GwO*{807l_boI!TaXNvVj(C?v|VGPoy zt-@aywGp=O53}J-G(-J$F>5*hw)!qNgqXLSPGJ`eeSy#^N>F_E^e=Sq1Dp=n2Z@C` zwi#qg1cfaTvu?hg-;bZ1i*hj*UXCVHDz)r=7w;!`Km6t0G+OtmzC;c1j6oYs=CDC8 zgi#*dNZ?Kk13&^MpC3rMSNq4W&kpy>JS?qow|ZW$DwXU>j#dzACUeF;!y_6un=jr~ z-fFd@a=n&%l_6l=?)uOk!pJ)3L!4xuTW?G5WdH+obX;4-T$y$KMuwhAGUYb-O1QS%i=$L!kQ5V zL=or&@;@X~CC4@3vc7oB0IFC$iSg`)o1-?Sm#4p1$|({V3V)}CQ40sM$V6psk0;|< z2CXtS+76h@7kQ9ngYNKR98?eA@|4k}l2XZ;gLm&fEJs_+ZpqTl&87pWRZ5_TsPZ#k zQ8_vwSCnj-<_q7bLe+3MOB(1M+r)*Dh9~xm<8{57V-ZRvLlnA~lm6VU)>wF&gv-d? zl(U&etqMc}>?nwimg{t*pyQs#-09U8|7F-4@ZareHXw=V<#s*6!(`VhJu=O~^5$Ru z{J4GhFEcar-R)}e13XI*7d2*e&%gQA|N1w7_cV5tC^b7EvLP|jFlVz_Bl&L4BBB}+ z-oOTL;a*QWInM(Yv-{&_v3tKIA&i+yP1(~iPitr`o#_qAVG7w)I%HBunS8yDzptUN z|1LK21;5Y3R%Z>z4#IAf&dqkESd5?4#@*&W{kf5pHa|Q(u7^#t|I@#aG@CBqxVD${ zeEVbIEnZ7yw83E}QAosM#r)C1ex`-ah=>}UG%2CfW9F^%S~g{zz*^qBc6b5x5#0{f z6IMiUEQdkG81e&Z<>KxThr2bn^4;_O<7ZEv9UautztZgV^6qLix*iH;q+qCun7p#v ztuY`$g$&@1p)1ow_2vC!fEp>B zdUcCCoMS;c5w(_4K^q5F4Hy*_T-|M@4{F`sSaPP(!@Kv7gZ|ua`18&D@^(m@QLid0 z7`x%k&F$Tv9($B9-S$jvE$%-3&<6%wh@XA&vXK7ftH1vBLDK53mSK-Yk z!&`TFWl<^x)y>8!5i5#Ky?pTWfQ&${BF-AZC z>a`eZ`7)VKwU#H&DA2?N!y?g%(s#OZTBbxPFic~#E=&CeZYI&}>RBV>(kE<(o;SR{ zu`NJqn(N*7I{v6}Rt7^wYQxl#Q51tAIys1~f~JJ(;c;UvivIBO{`=dD>q+|X)=TF)k1rWp>PQGl(HQ7>(7do8rB zHF|?UxT?iU4o2%vF|XQ{HuSdE@qWVW8*(mDID7tGTGR%&Ao-eS5VCIO%Zq67uRlNj zU;p;geEDJBQGNcd08xS4c1Gsj)7WuAs0yibRZQp4Q_1Il`0ckvIk}%W`|f3`U`}Lt zHlyidPn+djdw{Nsf(}6lrPiv79e=R9^*||`JiNQTyV+pIff`jI5%uiJa~?DCuYUF9 zAo={SlHadi|LU8w^qb$EaGlHW_mAfrI<;-Z9Ps{c5_)PmXpqQulvSRndbvVos#HuT zPm|g1ty-w$9IhQQpQgpKtK<&Pi&As;r$Fn?PYvEvrWy1_z41!aSrpUx;6bFs7eY=NmZZ+&$I_dNV#Z$p7TU+JZ?9WRpyTQ z^J5T_CVAF2Ej&D+s8LioWQJMF{bICrHBm zGypwx{V?CW`|#o2)i00EV6a?X%-hlS!?u6>$B%3F#zwR7?Ah5MOuR1Fc_XTT?~Y&o z?#-*Gul5i3j!x25+gCWXu&wR%?L1#vIhweMoYkIO)DG*uJ5aLuvjmmWyW6{W57(F7 zFsPiQjMTG#c$-gUiZ8x;`{K!yumAB|>7tV$BpcRY<(G-+l}PB-fqNN9r_^o_siNNn zy}4tAvmA(+3xKWlvZ;E$RBlfV%82x2o0SSN5yH}tRa%|FWZ7=GeHhh5tR~m=j=GDR zM+`5~U>?X-G|(IbDphYVz5H}Dv=?{tv0mvpC{Az~W2P)5&eEhxq&5Q>u63M_G~CB% z5#6h4jrTL!`)01EX5@yXq>okGfndP?tvTuA?4xNn*bbz_RL`U7Z9!tt)w9<^r;#xF z*B$CPUU$Cs<$jCLWKH$^%j>b@_g&k_pQ!_DZ8y?Ri3|}oCzZi3$=Lm%rHxt%;`yg zJC9)A4RKn{JL%uV+~U*!93^FYekXDkDP zT8o`=&0k(!cgz=-*H;M1J9cv(4)rWY-lY#LYVVQW9i9>w09-We#ec$pUcz5m2v3 zu)uDYfAv+lRnZoUc5A$LC#z|zG^SZk7J<~{bPBK@086PPBu)ftvZHf&OfC7YQ!^-5 zq;jz}qe*hHnlp?cjM5%%rW4NA?;qCVNK3abt_j^}7k~Qm_U4Z_wsU>e)%inPtIKYy zH~YNUgOegxUp-4TN=dzPkSjd>-Sgw4gSY#+Qo((^AHolTY`|VHo1ku*Z`wl)kCVC0 zt~g#!lc7J&hmnEoII`ji)q{G}I{U{bzxwOHJ$Uikm(R~~L?pg__3}k&db1r}JWwcR z-)cySbp6}WDD?TYGN+}TF<&XQ^WzTa?B?)x3qKX5 zA9e^4UmELh3@qg`g;YkrPhQ8K0H}Ih&>9*yI{v*)CmfMX>0Z3Q8aPOKjAnPghBV1mnc&XDyuLnOzNHi^PUPf-sTBy#$ud*Y-@IaN6zM2~%=}PJN zDc=9-aXa62Sl1)1;rKMPoe%%I-f6$DW>atcd59mN%ZF8DYk&gQ4(D5jRI#UL5ZcH6 zaSMP{wT|bYgndj*}cxQGLtCA#bIn2}%?(d-&RRD(%|W|M1`aeNjl(&c54ESJJU$ItFRI zAG)(`SHV6RAfr%dEu><}L?&MLgbJ)lId={qDA;xQxx3&oqQnM7vI*s9Wt`XCXYXDrsLfH_;QukCWm)pba62sUay%e1v3s!wq6zWVu_O4q~CxaVg#2z zj)M8ee=n5(ZFBqJ8Ix_dwYa~Z38Be0rt#%>#c!S+RSGBPzW(xyC;WI&bBp$B6S&>6 zS!-?Zc&R0l1LK~Dyh~}XL~n0w$n+v(ZHbpnJ+Y# z#z0^oewR8`CGvUh`}eyps}MhXbNT|=$N9^oR*1F=SK+{$;1%Cw!(82%7_3_SQw)*H z2Ry`dxRgIT30}sqM`I5KtC5SR)9JE>8Paa)K9_=4j`RQv?;=e-cq;jnKr&)IMDCly zdJQo?o4-o7j*o~+RiC=W7oBnZ?0KN#O>`34wQ9Dm>4wtK{b|qHyuUr>*=zW80aj3z zX6t$yfJPvRxrFu*x3_mSG(^i++c(KuJ*?o7^t6CeY zsBnlechps6)h6Q6XkEyy>F15u-b{w1_QnVa(VljdlV~cQN(p3Y>YVmlSN1J? znPx!%6jR};ji`|D)?(h#R&Lc;jb``jDM7GeK6Vli^pT}g;WUPw^BR?|{%;;4*N2d7d+C;()f0N0}&dQ8aK_6dj|?WI&~87!90M zLKnpdOyHzqFy@MNB!1d*Yl@19QH%v@szCTY z)1Uw;#4cXEJdNcOIE?wy(p&=5BKM{v7Li(~%CGE^X^Ph&o^QKgg~Umx#D`OL>(mN+ z0InPxgzu)P-KbdS2rqV~exte^W{`A`24Z*9SB1{92Z`}W_$fuQiHno3gVTMVSGEy< zp1WRa2K||?(W>OCxd=GKh6@=o-}URmO} z^Z3xV#A2(Qqi~}Nfp7BhFMjb=D0mru`8M$Es~0Chh$R{7f?!9@@$JFKHfb@^%4RM@ z!L;4e`oM^|p^NEepL=yJdmf6u`KR9$3PMnBpGLwo7s2wCrTpcfOrktqu>&re@Xv zY=iU>8fqaCS^g#YocTT4QH(><749piD*rdFHbR{!O1 z-2Hq52waB%s$kq%44Otg9ym#z1;TI7&aTSoOL~K-=c+lzB~V+;_VvceBn4;Q=iZu( zT%0lJ-`?OomdlN>+-H(dO9#a-ev^C)Z%k|?zlo=DN5|j9@IGO16dDZ8)vn$xzdk?9 z$NlC@;&{#%v#QpVTU?mI_!oGx%B{XytWk?8$x_#5>2#URj_&E2pM=$3J{#jZ z19G`5WuE`z&%aEgG_DmmrNTxts;I)tzqzsotK03ANxm-?HR>N?sZl9)TqRbWfY#!U z&ixqSE5_`i)D>cps|$lCH<-AqAlFe6DA{Zzn@h_BGC=rl>ctwYv{a^PO@@j&0e%V4 zX#_&i*glQj$q3RyCK(9-_Nrb<1gQ2=7i){;Ad_h2hW0UwVDe__uG>jcT{Ns7n>%bN@5XHz zhC}*1scWml42ll^D08=Q>LlEw+XSF>W6tU6(_w7etv&Y~}*QSsZ zi6kQwPcka4ra-j8b3S)u30x&a;6&Nr#hY(()WCt_%~_Y5YM-q~$G35B)QGVdGgrnw zC3NrZH`572=U^=G`k5qMzDbD1dam5>h^8%uD&Xh3(_xo(N4snGb-3ear?H0C=|Ynm zT<<=9@*60js{{&<2QpSqREP;|Yi-{huRBJAKy1}Ov&)S#fg#lKeGMGKcBittO`fG% z(^hG74ab55yyiP-OJhpztHjl-6U?Q=Fll0g?qi>}p7p9ApsnQ?q;`Wu%4$)Op|3=O zmttR0`E6bApEmQ=H9uv-t{EYJ@yn~W-GKks)bh{X#I@i*{q*#Hi>)W06m;PtR89t9 zglOJ~{sMJar06n$l?pOHev&an;3R8~46zD%2)RU%F5hTfQKe{|{^X04nM~G(3S6ZI z&K!wdW15`nS+Z$OJLu$9hMH(n#AgNCGpfCwTh_q$26nrTbu^O-mM2CUh27}pV3(9S zI~EL1=P}BI>XC#ns#YuDU+CRkPkoz%CRB?_hiY`)YAT*pC?;q?Bk)Aq zX^jsPzekTtwBx@sXT@g`tUA?{F=2l%mvU7aW-ZhYW~<|vMn|CMl@5!Vu-valR)7ET zrX?6IKsj$QnP4ks$(Agc73frh-MgC)H*GPT=sDr5@oH>9*sb(Cqy6e}bB&2cH`-r5 zd#(PzkHOu$787ET;{#m$5>&;PVO|rbk$57;H&d+Wi*2vw9EPRDQRy?}7NhfyZ>y<{ z;?z>H=3uR)JG1%2`-gYe%TX~U)dddE<>*^w+>ItGhK&(5$?tb2_Tpv}CmAZXeKFPR zC9)}n^vgt} zInuz;g0Uy>l*vnqNog={f(b^83YEcbf(d@2(T)f%KndCtKLGf}0e=9~uSxbIN^ti3r&WZ-21lmzKo z2q#K1qE{lVt`uvq;8*s!H+v_Ps;PSFtKX;Q<1IqLx>Bfh+Hq;6)ilfpQoUFKC2r8q_@*D*Vdf;w5Q#@9FVk;58TLr4S;NF2}VMgC}22`6kR5lcscjafBXl&#xY zRi6<|R5hbJaQdZ0E)dGs3k*|f2=EqfFm+>zpE}R@4iU_XuFv0%WTl*Iu!%_pigh6! zZ<(={kjf`u=z}iIk+q4Fq|Z`Y4ZNh&WkPN_{n_&*T}HADgxE<===~o12#D-)-VfF2 zufG2M&tDNb&cq?fMcAb^Im z)gMke-J7TV^|F-|uoiNiSU2Tkog-cI&|VCZdPuv$canW$dAGV5pL zb((cqbXQ}#o5`e1bDU?7N-%G7Feba3_iIJ$uox9uJ~ZQ*J6}vkDkVEE@m#cPiI85? z7ai?(r`1xKc6;#NPFF+G#MwoZW;LSj3J)WeapbwVm(fS=`PAggyfUVTsXLQM_Q~Z4 z#=M4YC4%gWvR83A8%bt`a^NJEE@7QK4a6=^lW#L^p>g_GKmF>efR|u6+2gR*KG06Rbg#Vu?v-c6q;^OxLQ^8TI72 zWYrzJJi_dC)A#O1I`Eo#@Zw>l(w&!Lkwmu1C|6Q!L*ZNchI(=ccyhHA7i?#Li2j$q z{`;>pAkT_$NvL#~n!^w)o}joyh`nsu3Wt)mN52xhhE2trWS{l;y{pgqeX*?D6k%kM zkmKu@g{WuI?;87-n7$! zd);=sAka%i+K!Eiie{vzcUCLeUJ$A=oo>7W5m-qtzI*?;%Vrx?xEYNXtsbcnp}k#_ zZ_H~??*@)WT(ZcZr{3%g=R-cvuGJ5`Ow-gANeb~h-|TAuzWV-f;He?xT!Z{sFim=? z>#u&8CSU*N=dXntZqJH7p7sWa#>D7ZLP!TPY#t>HC_o8RQOuphtXZ`@c4~6Ay`DRR z(NsmEC9LOlF_tv!mp^Y5AuA<9!A$v?bmK2Ryqi>8vtggD29Z`?bg0|_=>Z}lC&^32 zSlNO;l=(>SzD( z4}bN){Kubu@ynn6?ce_N=f8|H>|$fjN4-=ek|PvyL}-Z?$ZG1J@tdCipRCqqD~JRbmR#Vf(se~q~KU}94oAz-|?12?^>>9BR($+>a0H>G_9Na_H?U>9K`Ip-0pL3T2A$eo#eAz zq1H+$qnb#Q^3feSbmqY1jVKGXWF-xC0wQu-ZVbUnWKLiyR~j8TW{yZPHRG?|8jIOt zwVL!e0#_q^;L4S5tu{D3)qeXbAemwcY`-%>ceS0&#OP3JeDdl;pdrVwL3t@LZHH*_e}@zW;T+^y!rLd z{{F?wpZ(;o|M&mnZ~pVwzyHOrfBn0E{POI@Kc2Dap!Q3Pq)exx(<&EfLd=*k!LGju z$SRq)5I9=kYjkFiW(l<-i~hE)bx@E=Y%X=nv6%xXj%&z{YuSBIsk^3pRNyhMLuHR0 zE@5A`*mF^mqTm`E%AyT2TT z)4KL`{QbmnYZsIg9nalfZ}-(aWQ`mGB%c3<`!s!__Vo5>;_(#kDZM%0fPvbAGnyqz z2vE))Y_{x=uiqV(j;PJHo>GfiGnXTbR7%qQsT9QNu)*vr6%b@8adL{!&c6CpbaGQI zbizqXOBX6NyGeqGUUCtt#CR2MjgtZvrL$Z6i9kwC5*x2SHGn-t7amHBM< z-N9D8F+TL(eD`oYn)SfL$pr9nC2h2M`nFfsvecb1Hg|$*P(kh91P^J%;|D~ zo~YZNsrCIGGBC1Uo#D*pY%)To&gn(+r_;^GZx5BI^Whc{_~XvsuaJm{4IVA@cmcvE z5{<4yIT&47HP^U*fBRu0cIQpt*xG1++lZAjVw~uop2?Y%2;6MbO2*T{4Dee$eNlq> z40U_yHtQWOOq`ff2sp9A#A$hmz=X`vVX8D*OxGse`Z3RMw(|A>Mvd3Fy1;hPB>W0i zJsAlQ253}>Q`Sk2()Z7t{?pIC`0{P0CU;v6J}RXQyd7lL9A|J0rO1WiDv1XZ&tDOj zr>Z`-2P^Rk&}pSrk7z`}V_K`puL?+ZfwL~&%b6!j*c9R4<^v~hLRUG~YUON+cPOhC zLv&6rY(wvlog+6opKGo^e;80V>etc~u-OX1y*xi>^aAP2W5A@14#sTgQl=dC zqSqPY%GG*y zS%B#jjp0;C#={l=>BmK=*b!~ZAPOrV8*qw|yUej1b{30+PWE5Yub0E|97JNAtaYjG zI9>2!CAODfcr%dNut`DVM^M-lyQ}^&+gV0>K)5EJ6uVuxw~CI17Df`EG2S&LS&77+ ze|>&do9@&Ug9T{TRJBik_ls{}V3In_HW|7a@Fy{mXHTPPT)mlCoQ7O3a~YLbvk(qZ z7jvU8xzm4+kNE=te&R}r!G&P5; z$y`;|Tbj0fna7)DaqyW~G|#%tROmdMr1L6C6;o=n5liQ6$}uPu z)GDsvh@ms~7_X-Hf1F!}TVN6Zc*iB}zwH+24)!Cf~ z^_OgkB*Y6^ubdRw|K!TG$)7$?OJu{M=}@(XgH&>dmRiQj7tOzKvKH zXYNI%@O7k8=5uJ22qw@?%|~jv5Y>HK#jHh*3rNoSS8raW71e$C%SKjQ zMyKR&D=10W>2J3~e@WDHxEN1In~9yq#;JRlL^Srt3{P~unJDnwYbBEn+h|YiViWmf zQvon`B0sEb%0$do3&w1vSI9=-!kOEp0Y+?kWzzv#Z6hBJ20}4FcT2lotNW^u#yIM{Ly`GQDzM`0m9es2` zik;_r+hH{Yz`Af6QE$gMK-5CwGL|PH06EL@tk6X!9Lbb;D=5Reo6k>kk6DX0G*czw zVKCju?zf;)#5q>xxa48U%atiovxveU&;MGA1^@naiaEEXB0f?1TXN|#?PW-2$#kLK zVd)G6!73G%BeKAhE6KE2vyDQ&2}jpuXO)g5Bu)rI1-FwU1Uk{>Rye2~_;pH&Z+0Ce3vgeLTZ-^Dm zITS??+!BAd`C(BFwK~9o#JW3cSFuF33mKS6kP&hPqO|V%Fuz?{QaaOAyuJkXVWrQA~?GC@8m{y}Am- zj5()A9l{Q?0UZ{#wc3vi^WA~WY)i^y1?BuF&n_+trlc)aL)^#vwck9tJ^CY)1N%T% zYlL2JKTq{~$If59idUsX3fX2QgU2Y6)|66H5w$Ko<-@0U`|aW5qff@R3MKnUPwLJ^ zbkb4-(6Z|;r8@C<<9|?QESg99tvb&y*w{tC%OVZ~cQy3RK zj%{)_A-fOq3wI+|+d80@?VwtY@r|MUU5h-(X)N1KQSFUZQ5-u(LO*U?-iiQx*oe?F}bYoJa>o4dR1;rg(~c2+=4p?3Q1!Nbge znpUCH4%cttySh7Z1?)J5wjKg>NSA^AWDc@7qM_h$(7(mq!X1g06B_^ zK20B>&w_K;t#jb#PVq@Qr7ckrmG;1+3|gzfO1r-uyuUrBCs+Hm(2Vqo?PE<-5hu#fDV}TJ<_m(R-$|TJ4&IVXC!EDwWL~ZDCS05BkM2 zz`0~fW%hR*S?LL7;cl`X$DvrVhFh(?nixvqjGC=b2WMTOms*!HgxGY}k%_dBKR?e< z!l#nfe> z!m6l7v&UYxWkVTbq4qYb`DFjyzdVdRJY$d@mm`z0<8+Q{YuNLhhBV%4)^IV*qq*jT z>>Ef*>sNmlZ$^?*{xld&#Rz+``W1U-l>}EYh0ND6VYjukK}U?oA=41qLzg|D`EC|U zuz^f?bF*J>Vf@{F|In#4N{-DpgXuDrs3MEdXtgF(br;P_qc?7*fAi+_>o>_l_$rpF znX1Yul!K!H>ZLK*KCZ??MiupBHlZxWi=o(BU9WwkKk{}D@1H*R8?Mq>P5EEkD@eZLs*ri;x4|6{sjEJhl( z*j&W$Goa}tl1#W35kblT*YBPHKP!;x04XzHax*owc*$Kw=J znAUa_r9WEs8w(pu++;Z3?jIc0yZ-k_mpc49>1cVt=pq;7;p}EAU&sVuQ|7b!PmaH z8h;#fr76fAwtKujEq~){PA{JmI-9W=y{fGI@zyb2&uZlAv)#?aP&)$Q8Qq-7=_cgi}8j@_1E0*A2Btz15Pg*}MD4OWmGZs4zf@#d1mOhez^ z->$cP;(5R%R2L!*>KN9HjanVRrcOb2cG#|Vw+s7rCmYk*aC1A|{PT}D6UR6E-Tox? zy3pUEYi#F(g@K#vK}eM1k+Zmvj3#2@SUCIY%U^!O=lnF1=W4(bdEl09*e{;Bh4}t{FSdoTk@Enq${oxw5O-JFloVX0VEn9p}x)8#Pbq*Mm z*zBeIRXi0ugMBI%B}*%XPhMW8$TFZnb|-CnF*7ofAyu-K>8kJS#*6)g0ZzXTPvqgl z3=3HD_vgJI9>?U3dTsumO4a?i(&#Rg&I#vGzt-J>oz0Zv+LRKVY|O^@p1JMzH@7tS zWK3`cFclKi!+befYKe6y^~?3J4NjXo+cB9Y>3(%ht!N1<=W(#{^nZU^D$(NUMEy<*)nK^;Ko?{aq!^K%fJ$@cd zRsHo*>E{iXOFG^uCUyBzf5Z@+ms#3qGw&^zaffx7#<|nwa|w|Hq%deDUUG5zq%^v}(>wIZ*2;&7!%FdzOZ)letn z4tU~ko?R5w{;I|(i_LcWEXGO|%32^-3v+&yDp(YK$ADz$;xWrYRVo*?!TrPB9nJ4P z92&*JO~oCg3dz?|bL#N|>MhJviemWuyPNsYD!x3=mw`2m*rvr|iOc4|UQctnGkExR z+PfJq?-pa8Z$b<9FWw^zqUE<`YWRM=vREO&VYNdA7Ab^Oz%^X0BpMTay`4`7+g%$8 zr#c-1m)4XtK+z-nU)KvYDN&_-JekjzPy0@VFEfOZ8e*Stn(;;JLxQhbd z+U>W?rN8qsmJkb;S%hvJ(BJ$hYKOCPPyB9O`)U!gZ}IDdO7hbREZ!%h^M2F*jx5+Oz&Z4p{t-Wk!~I&W#o(w zo84gBZEo)l8#!DMDoIYBIYCLi#VG=CTW=LB?M|A`D7L=_BYUJIXu<>P4|M%(tJ&+Y zq88P$x1)Oq4+obngBP+4u|x&kaV=pEhASnD#KEYFZQ5Y*N}7ZU7Wfp8TmrvkGNZg! z!A%sZMyG))3xpeEnRaF8<2&K`E9G9#ygY$TKHlvn z?qa?e&{=eb21cYvzT5M0%esZ4r}y`5q=E2?Od34>0hjl5K6eRbOG?KWv6kzZbIvqx z|I;^>Zl7^lLrPA&bW<5;VzM^X#L3k$bdrguBRM20N=03$MYOW4ra0eMZ$D1$`Q0D? z{prK)kmp%mUVrNLW}s`j51*BsipXqm`1IjH$>XW}(Z!cmt6#is46o;~eGgDG8~7|u zA=sF9=8kgn@!+xHWmzPZL?#KrGedlPULLKe8@4OpDk*^1OX|SvOt!XCl29P6@9)>1 z)DR#@(-iNwnX?k&Roi@^c{ryt4YtIooDk2&A{E4vme2$O*1*Mc_A*f;!V41wn;0;- zWBG?v9y}L)yz>|Y;0^(w5U&dI)$?1pn>(_`E$OE!6xeD><3Vs>@5C~PfKENwdh2F^fX(!Xt8Tg zCoUuL3NP9Oz1dPe9p@Xv#K+pfNpoya7V($QUKb7Ft5=b)Q(h;d&Rt89Xc*p1Nk(;H zp6v(I{le5ehT-Fx>0Q&dAnIWOIUS6PhR4F6yUy?`*}J)IcgXNnMco=c-Z-2yU1zkO z`{P@F#bY7Lf3HqaV9ge|&Zx8HvC%dv09yPdS&iZL;q$1(;@zxuNd##idbk)8C~JU& zDwR7_%?g^%qA8m4KA6Ga?|x$b_<2^(WK+-L3Nuw4QyyG=V9g4I#TmEBeqIB=S^ z6&;)R|NVW(q_a8G(^Xo`9cR$*j>k>hZ%UPJ4LmNfQOwJeyM@WlB@w7NizP1uVi-A7 zVY@8alsfRav`4nzrBQ>ZtSzziZr8LHP-8~8c~N3gRXL8f)DWksN!P{RS&(JY7#08a zW`EdNwOZX#(uFEc$`qV=H4&-}Z#>2(K*o#FSIBrvu()+VTE)ztxoyf6EcSYGErsjC(`RQO4`} z&0*TxUVD0yA^VXZ+nWz(o87~dpKLskioX`-vk{nrk-PJRHz7Quor*%<-7i9wEONl* z+TUcDoJ(M*YLFzC#K!1$4&CR~H({eM#^iLc$){S(G=BJzu2-zys5K3QWk=B;zs+bk zARnE6O>mrS1qe42&kd)h_Ht($?cr*+9Jw?lX7k%`@7lX>@A{tG$cC~)8lH1g#0$`B z7Zh)P|J_2S9NoJfh^4$ct!rR13{!Cy-~y8|=rg>%Baxi7a@#dnWi?10mZuhFB$9F_ z7%RjgqV9G!`?bY&#|gH5fgO&=YW> zusZ#|@9FLNrpwK`tqYOY70MAc7L^)6t66V)vzgV*fwvg@pjEjLlTRY)wp@9m9RX!) z#I1Y&^v8F;yO^|DrTD<4A8+Qfd5`3p^!AiIUE3ec25bPx43~PdsoZkm@g=!d9~qR@ zilxS?^@6VRsZ8d=nL&dFl^fV)X=!H{+*$6cjj!vo3HNDqj#F&@T<;#nUw9uGNLtwC+Y&;O-tb`@D zcyXTHd~PMp1;wPA>f9by{Zyt$TbSqV9+n0(eUkYamBey11+PUGQWqi5TKML8+paaN z2A`@5zBVdB9`OQhK_;xWa*0@YE-s5y>KMGbj6@rS+6Xl_m( z*L3-N{oVJE*LSyv4ZEH;548EsQ)_tBwVmDGgLORv7$UUn zH!lN42;rkuhld`tWEjMGsFnG;`Zka&Nu!Rt#6F;zb34m-F;=OyrBa>LY_6Pxg(gq$ zrD!blCVT&xfB0ZI6Ut3n>F@Tlrt|(?4;Jop(AU_Y8I+g_QSiJ}fEiZH@w3-CXXxob z*gJT`%IUz%QmZUp2AQ~8?tEzX29t5S7|SKf^8rUVZ1Sg~e#x(H;#WTfcF9}~GQPfA zs^fht+cxsarlwo7kx?li(rm!830L~wbhdc7y_rBqV&T^xkNZt?b^rO(1GupLYPG)| z4Eh9BlWEz#y&Lrh!<&Eo0Y3V8>%+3{3|;^B{kM<%?G4A8JqJ~}yxpKMZefKe!oX)~ z%hfLuq~w+^q%PS!`t6PjNTn%Ca{9$pwnWy|($R4esCnGgGbq!_xl~^1@q4PM*%(<* z755B|cDG3pHCJ@U*68l~i2qhk&uZnXL>AHB`O7ybSv^K~lXvfK?ms-$wS9z0EDA|cyIOeXpq8s-&9%{e{PgGV-G-rbr`%UGbGX?)eLSo`zI$Bu`;K8-=KStpG3b^U z{35TT;1K+~U&lxt@Wv?Rv278sYe1x7$Q62i-hA2=`*&=Y5>V4-uyUlbBvvc>Kox~j zy$Op~kQ36#pv$Cm*)<%!DfaB)FW-+;#b};>eHJP^%}_F$Dnr4t;R01AA3ok(KkWDK z56gb5GoK6|e|(2_dc#q@lheqy_%k|zI`b-lU3SIpT6P2Z&PX{In4uI-0vTg61KS01 zUNbJ<`uoF2pK*s;ITL#6(!CXDEG%_bH#h8K*O2ph<-O zk~OuIyey+ct)vCZ7?};lD93`qN-a}_#x68#B-k-+@c);~Qt~2pC|{$x8FYtbu}#-4Jtxe{07jt>ulgq}neWIko+bW|*JC~o&#S<U0Dg>Vuk3vJW!ObyWA#@Me6N83cIDg*qzk5)M)9*;3V|L>6)-h%SrP|`3 zQlQ#ox<3&9u0#7P%Ch_=nv!pr2d%If;@-TS+l zcYMUD&TxJG^l9sGL8vw7Mr_UpZMwB6%vD;cijb_fI4rP)_Pbr-G73NCGSx_F$J)I? zIeB=iDXYeG?2YsWq>XSfSDZ-AedMxS-yZB_Diyve>(yjwvYE`*aEu&SY&CiWI3daq zU|Y&|Ph7_&2|3yJs?b8k8mol5w%LpahCocZiF1@~e%=PR z(Dv^hzki%<-e1qhweCVZd+|2Tqo>d6!1r94X_vP;e0%@+{l~|<_dmS9e)k^O;>U;i zz_+Us=mUvzSI>=;u$2}Z=9U~OlDrQcST{0tDmyleg=?NtJT;H1b zP1s$X8!M}n@T4i#l-9TC&oU|H0o$mNpskOFle=kcuxqno?pI2ljmJ>0UmptRWp%Nh z?7#olC#lsRTh`ro|MIWjZ+lRq$Gwgk$WpEz-yaqZ+HubMjY!^we&iCUFVwrJSh9=- z>}=KUsc6fboBMYk-@o7A_uG4){60CmhS`)x0JA&0{jHl!aQo2JVySz(pH9~6#biMB zBa=*IS;3Lup}^Jes+vC}JrWCs;(0?<=)izXCFp@64X$JxsA(Y{q_SDe66>KxP1}>a zxT56}IU)1*&G}hc#r08_v&r_Lt>J+Ou{^W}_T+lpg&~1_a|{#)ny!wOQia)~wO8#b z%4b70vvF%MU3XzrJ+$@R&4RJ3M_l%#P$?;@(_6p0?>9>Yy)#-a-aUNxZ{Gt(xcm0c zf4sllk!+*oktgqG_zkf;vppe}E4KRix8W=Zp=>;jwz3qtNWut3vs<+$tpZOGCttEX zYqW4Nr>O+?$KCqU$+D$|%v21eH3`F>nyy)s`>iI>{c&#o^zHkHlCc>Pmng=KA6l6$ z_2?OGieziO;vDw>{LhJEo5QC+{Na!P{fGCn(c$*}yJhjJ$PwV_Y008aRx!+UH5Y_i zuiq>-8pDt84^F*1XQrLD*l{0Ju>Gyw!_8q}cr)iJ-=DC-ZfaLwMdM{-Y#vswmr@Z#4a~u^4X0EU1NW*C#CNx7!cWaD6TQc--1sRY_pDDueBq;@*Y zpssps?IrN=611rbO!5jEyQUocgMw-61SA9JanYW8xX?X>RgjRp)q2+7J#DrN&=ry~ zb+yS(gL9n>2+Q}^VnFRe#7Q!L$u|{k>)lq)bRWL|@UCB0cAXlZpWf(rl7&7X z6^q5HrWVs&+7Xmt;v#t@)67Vx19TtraKCSQ*5u~y{c6!or~@+ZW8WCAQE$^SzJ20x z)@~O_R(nHT>xu+(ooo2%B6QqHIa7k_PkR{YWVK;4NTr)sJWWcc7njj|HD4A|d>~s+ zE=fv?jZ6niIt&)NmWq^s)I;4W7)>Wad5wc^B>nPqxVITX!PRjs@Sh^f_W8r7`{i^r zzg~>TZmoASWPu-z3*-IHzyhh;O-72vC?;t>j~%^GDl~@2`TMx5FwUq}@a{NHy-pk! zwB=|3Xx+9u$DLKjo?qYIFghS5)$(1D)Zgsz^kK`#Q0RrRDne9!6tEM!Y1@EIn3Wjug_DrLA4aW75;&xtPBZ*)0%`WyOu+Ltmgv- z7*cg8N!q9xFBEf~q3!zv%Rt)X@J&vZWu2by&7hcx*N3h*G-QvYzTN8W$x5+?8G;Eg z`iQGEZvc{!#$kWpD(>C;cbmT6-(HW^+VJ7AXABlCI<#Gsk;B>U+k@|0O&lEAB2DB@Fq2obKJ-(}Q2i z;(o7O24tG+g)2HS#jb+sA$WFm6>PX%}U>hs^xC^$Z4r$&CT&+v)r3ZCq_A(s%rZ2*eG*+2a=<-i;3={&*bXlG)sMjf9G^J z9=7E|bB-CNn#~{n=lxZU2dCTi^wEkAR!ADT@BVzdAaZ24;07cET-qXarv=zz$sCYz z%U73(3T76`k5Zigd@+8N5fb5yYL?*Q0~qWKmOBQHH}kf^K?{Rfr(8rgq;cNwsCas- z3}V)QeA+ghr8B6WUZe^E>WVpf1YnUf#jz2M;hqeoPtQ{10H8*c$)#Uh0TYR?+*62Q@sPaxQYABnc*g79duULiCzqKNTNb}bTVF?Ep!65DqUtr0<;z!Ru_`tr^d}BZ*IHIy z-43B7C2}|aGH{veTMfPI)!_qGq^A%2kAJyUQdI|=8jP7Tt<3TE)1B9|I@f!vag{gR zW`ob6hbP_XNkS}$f~6#QPB|KjWaZ{?zWeZW|8PIW(YM_; zU`)Is1Y}ojjv%E8{~W`pwtM`EC@Se1v+?!g<77T@HY?tFP+9tO8278s3xp|Ve|58E zsbCf{Loq;8aSPbih`cxgRs(CY-oC!h=h4Jzc{F=Wj#lsn?0D&4(^-w z#RYSZtLApmQ8AnpG(~YIi~YNiU#kqq{poySTb@|%Pp4k?*|T6ge3^_UB}(!DVp?ol zN|o_$r8FF!Fsp6fA2zdr818tr#Mg=b?uWbeHLX zBjqWtolL-e&o!Ywrc*RN#9SpGX1m24CzHuC9@2ZeDKe}H32~iQxKPQQr<#m<9O64O zuj5R1PpeTjy?8h5aHh&LDOMb3G;xO@g>--*&B5V@_dFc$;m9!^J5F~QDiA3pP~(&f zjTXKnMLzx~Pe4|Mh-MkKjq#$uTI|?J16pNLT!5GHL z)s63V8b*O{jXK+Ty^7pv?|=NupZ~a(tM=ZPT}qKHf4Xqf%C&q}OcLavfzT#DL%Y73 z%m_Jgz0-v;9Cv+SiJFVMpxeNDk#DXR-+!(PU5oaYmWk#I7!kk?uv|5JkGD(TsLQz? zEH4t!Et-rMx$Jp>F2z+KjhUO9e6~~*BJ%b7yZb2%7_N*q*AX$AFzwKJxdJ4lLAbv^ z=psmFQxOjb&dG>IzX3<%m?E!7@PA}i%E0&Y=s+W>81X4;#MMUjbT~wlDV8&QJ-w-p zwKS24rt0KKBPqsfX`m2v5Q^b5_VLUaU^ZOuCreK6F6p04-7bb+oa)@qhwf1U(w{BY z_oKpPV}m21SsYkh8KB$xFk__9qxWV_=ZC|vH=1{-_@h?oxQU!n?V5_%Y!Jc$xW^6U zGFdNxYX*$tfX#ED$_VAov`s6*@+WtD(}4o&Zf_S307w-ET_k}=O2&;~BWxbCDwTAK zKyCO~A`B+gTZ|Tq+wXpS+PoX`wTu)TB6i)MLL&%k!)8P@8`X3Y`-j4hk=jly$4kNO zvz9ig@q@{%`QIJ3yKleU_Io4t%X+c_9Mm7dkhIq~+{+X{3+m5n0KD5<~QFPA;wXdO<0RVHq}I!4T(>GPR268xPTE#xK6_% z#-}++uK*jW6a+Ht)~?Y*_txD}I zT}-##nIG7{I20v-n&7K0sUCL>1fSZd-|ilZdvcn_T-hdPnkOxI@a^$x1~5o23jN8* z7%YcEyzVY{)9-$`88r$?ZAyueG)F=IG!2#vZ!j=3xx)?Vvogy-0s=xb6fTIS53~n| zVJyXU!FM+|!}0x(pT562tV}3FG6&^OEmJ5+fVC)hq)WMYsM6|PUq3<#@mH*FCN~`% zT}X$|f{C7+PM(~mz*skdbLIuaF*GAkhP1r-^-T2!v-OlL(`v0YtC8l&vN5YRn-%zi ziXD4tx0vAb_R~6sioH`h)+_SKeEK|4Qrg^9O4)`XQcbMaS``dMDF%)?>RHJbFBE$< z=jp6Bk6$X!-_Y9-HW9QD2KMhlsXr!DJ-VK>i7Irg_BmzAYOT=(iB!Nc2>{Q-@+!5L z_fOkCJF*Tn|5jz-jvp2Seir5WXgT6m*lyX!M!eZHz^5OU6N|&AX5zGg!=#i?Gpmn$ zWCi*D0|RcSc5&(0iq(_z#u&P`pf}=W>eAIhcWSrnHhIVPXjmzBy9?GCYEKqSmqXLS zpuV`ZtmR_WR)PB+=>w=E*hZy~hN-6FuMUg3b|#MWD}+CZByIU>F_s2qOKGahn3CI9 zDOs-Dhufhyny#Nd{P72t=4&HLCdSLlxNMjtx0ARRE+V{=zL*tKw`~ zDs?h%qLjqWe}93-u1eD`mrfVu(L~J@+=1ilCsLr)v%TGRy4ihr@Jvn7D%?O-PbF?$ zF1NB@Tq0TgZ2}P;L1h+0Gp}0oZAK!Ej%ffrM9@~@p~Kv{%0oVlkfqV!6Icp<8FP0Z zwkuDLoZ@83L<@m8m#j!q7m0i_4e+(pVxRKx$AA9rFdouUj(j7f%RIc>M4}k-j}S3z z2Bus!Y*xhBo?C6{G7-O$wd;pLF<;NWJ`t%QqUXh0q~#B*mLT^qQttP6P=yVCdxT&b zJixa_Z-CWFjT}FI0;2_Yj1hs3XRfGeW zcmYN#UDavxK;GTXm5hB?e=Us-XHty6_-!^T3Ul)m}I zcxp1%(MyPnaN#=5+1-!4;?41=&mT6u(P2NV;qbBQP^2OBbGd9HF^`M=Lppa9bCNeB=O{^9 zSI_3~9nxpEQ^6GKt7u($eR>rPhko_zH{s9~i_4mvt8L%i?f371op_mFoiz(bG~D{8 zCn}>QIeF^zO(4H&4-Rfd5DM8qf@^k%ENEI>@71f+DYZmaAMVtMJn5mIbWs|q=uRX9Ltt{%L~ z;=J@)nQkW-X?MHK%44lTf4k9#bcvni-OYZpo8SE9wrASYIlc8Umh)nJ;0(q?hVrQ7 zb)_L?8XbV|Y_~*CBXUbTGS6}aId>Iif#o=vK#mnczN~6Ij2f+~=5W*YA3i=k?nZq} z%%Pp64%N2s)AkmJUFKDx7K$T}@#_*PV_( zBzPivx|kEk$Ze`^whn50u(ISfqc(rFTFgcjK0l^CVXqdKzrAZ68G=$%NxTh~#bmsc zP}R!J(U(U0s%ZB8cG{o0o9mIe1W2rU8+Ezs=&Og@UU~E5XWTq>WFIZL>fUYqW&>Fi zSQ5%{FlFzbSd%Ywq3Li651<~+mEv4&-lls1GeonPq?@2nOx4R8g$kiy-|pZ2;c>n& zGx@>eQ1A7r`SHBC-7iY1iTdjI!D#$dBu=O}6?~ZotgZEUHBvuT6)HGDj4-3;agVc0 zB_bkxpEU@=RS+5LQ+8Jwb(*^bFgDVD4FH}9X; zv-Nnq;dhA+80ca{uU1Wrf%O`PUG6V(IQGro{_@M`7ca5)CN8fMsJc!1dFeN~o=fBj z3zcn=MXjcDu(af&CTMN3yM6bEzx-h)y@Y>XsuqpOP>Tf<*|%>~32D$Tne1tab+V^2 z^=e7)FCQmHJycPPa3~9csaQHP9;G77Ma3Om?}%(Xu57ABs@jp@)l_XW6gh^2^Z7*h zJR;YOiJ4W%;qO+CE_Dz#isH>~{J8V>-|2K@HePb^ZpNcx)qmxC%?;<$l`eH<$x=I| zxYQdY@waELqWMI5bnlC!+w1$KRm@bv@mMTya#5-00x@oSuuFpR%S;m7vs4TRj;m+4Sau3bf$5-5;Mbv{T8pQ){) zCM;t{BKc9xr;p$|re~0sb?jIX&@H$+gmmWYtFOO##?}hQHM`7oHk2xr{MD3#46TIW zpwu;wYNhe+emOggSb$u+qN~G^fS`)-qS{yT(3?^bsaSda^Pm0Zi~ooI1^;B2dacJpmCkx_5YdiqBH3zj|@4B?&mHTQvq< zc}Tjvj-*X*-u(2&QmWA!lWz_b71TcsBa6)(!vaQ0GjjO|i?L>24KU&+a8TB6f)ox1 z;LY>p26i=E2fs8V8jx_rZe_H5`#PkWaCElki~fK=kFu2C;9Ku{-h81-rE0%XMLB3Z7|onS{(12~UcY{+;fI9q1WVx5WOg%~8&4nH zeX_luD!|f&((&M;uLlMKt#XKV6hhp1S|?_ByEG!h$QI z?z$ZX%=R{s*gGzROP@SVfqzmLV2ga+)|FO0hh|8QsO1Z2XKFsUn%O82#t5YioI0G@ zudiQTFNS>wv*wdG1nxO;Rf}csplGI{Y0EZOAnec?5r!=13{D_~Lu$z;$`YB$VV|z03 z91=+hRAw8TfQtL($&=&3aO4Q#n5%W*p!5fqH)rQRfI0B`=F%lQi&ua7>tBB?#eJ+` zLSMrC0m)r;DrkCx9n7YtCRkIGmKd~hxXFkW+CA*xFwumL@e~#@S%oks7yv6*W^s;E zouNm~uWw#odF=s4LW3D7mBj5G4E|IXX$s3$zz~R}aO%YqRR;!85^$cyhtBR|5G<3x zl_V>C3kXn>!i>F!fCEtmWF7|-00kJ zHun$O{klH7c{}&*u#Mxt=Xf2(9G%a4=M&TDK;3Sxrsmnw2i>i9T%-@bKU`mb@Wr$B z^;r7hdagj$87!kcc$0t-mGJxU;F2nW;a9J@z5ewpr7n-(PP!hcdJZA0ZXi?%OauLy z8NL|x!uDt|GZLE#v{}lm8falRMqsFO_bEJ+hsJ`oob9r95ZsI z%8&f=+9UnNpb`Uxs*sD|D-5(472QsHN=4G!6XdH}cG#JWuU}oQE+^XT<=Y$2zyA0C zoKJo*^_N(Op!Ag|{lKl2bQQRRHVApVKY~C!(2(Af{IfohqiZCuV7v$t02s?^1EdWO zf$F9%*BG2s8ib&pU!YFy23^o-0!^HpV}TTOEdt@PMUS7&&~dHhF$+IAp@32?m+>Bh zwoU@15XH$>i9%1c!djjo)=BENY1G2GwN=Yj36RJuMPOrj3l`wq{&RTDkSd&v4X0Y> zDC{DS_FHN>T}&f5;9Kng(-Lf^vFAXei?vmlwbkL(^u_Cd<5|kI99V;}*C+z0MrEU0 z+fTk;Pgb*!x9&bH0*%_EVgg4gMq4PUqmYqrkx5!LC3j&x?sVtZv-2}t;EDdi8%!nx z0Pkd$!54jaK4@`z=-BMu4kMkWDTc2SB6eoW zUU@SEC*NS=8rk~~jaOZm`;clW=UFV{%Y|}`^f2Xx-^UXzgV=fZ58tJw5Ryw&wpIWv#Ug`-oQgLJz$-9PDsMk!OGz$=E& zg{)z_hUfzgk|Jdy&58fTo@qSvnjU8@CT{2Arf0jnaW?4xaD8#+i4v}F9CpjuY`&@r z3BZp}z&Aj89taBp2FzTwkShSS#b_o*4~0rScUXW(30SgQ&vYtPji%XZixV>$Mnx3; zwBq!;r4wJq+xjSi(I1-Z&C2e25>|CvB%u(()L)=dm?G9$uqGvW{`1?F4GO5@`@PA_ z%Vh_TFT8)gx&QF~lc#IjyV-B*Bj7l#uDGPQgpSrpc@fMu;CK$K0&4hf*V3%np`lwb!|{b5gP(GWOV)0e2J4Q+cm9L>&q z{yuvqC<2w0&mZNPhH2ft7W4R@8c@5LW)ocN za*hyERa8Z=3)Nw&X&pa_lT8l54rY5l58Wt0hJ{=*zW(`>NS@G<-NWjGz@DlIu6j+^ zOGUvnQL$mWW|x1z#pva3^LpYj>G? zF`hCPd>)HKV5;Ok6XCmk9EGnIro5a7xO9W##DI#Tbud>~SsC;98X*^1mlgwyQQ2I* zRHhXQ9}k9QWCugeD#8r_ny2K~aP=TRZ(I|Zep^Y7p~P;9qKrB)V%7rt1+NRc&BRA zt>LzjJzihS>D3IC-2LwB?>7$;g~G;z@Ai*2*1nG6WVyV$8F^=L@{G=gFvbS{aO7*j z)YB9i5;e_q;PPw_hC@8^{h;IdM_ZI9HJ}$l^$(+o3JXAk!U0!AXQEUGxi0)IfXo&Q zGhEnt4Gwtx60v@?+pp&3xHvnLNTYJ7WfKh&Y5!U}#%LA1{t$G}-X?AEo!ltFT zm2?V?B)~wcCERFIa5?0Gn1N7;iKoS45y?9^ZB7dv@nN9sXhn zd}&RGh7qwHaA#sA5dhq8Bggl*vmDvtn~|sAd~k1jJ&|m7Uti46{K0Ld-|G&~A({-r zjw)C-7ODzPTO7;qv^tr0EkNIOPp{I9j;A_ngrk=>{jV!L>A=8}S%txrkIEz(CYEV9>}PMW*ri-1wz-)) z+21&T=c}4X-Cj={RUC={{h&cQx+VF;5YB_iA~B@gouRtMH5(QT=uT&VHe8CS?XIn} zBWPU{rA9omm9DF+SJz!k99_UI+s#1^9`yR;CKk%6^ZBp zi8lhaj#_7AwFuxvp4vOOC3>vKA*lVyLbQbbW z&9MTgcWrxxjDCRCW=J8DBB%uLy_|r{e-r6m0NJQqfidFPw;&wsml9A9g`z5&^{%%j%^ z(C%`vxV#z$tl;%7M;KKSC5*-DDq;o@CksFb8)a>&m$5CDX*lCMEYn@yI{!=<*XBR| z`PHJ=)8s+V8(mBXrlbarYFLx=tGQ4%E&DoTx`hLf=(q-h{#v{ODlcH>prpjhYJjmU zYGcXoA8)}7zgsqix`NUis$66R{wioe%heL5;dDKXy9u^r9In|on|Y4L>fBKYUGEX{ z3N^Q!+CDbIniR5pGmVc~m0B)GV?^VTBOCXJ=VW^9wQf1ysz1e@>!xSiz)*~M0awFF zhY-!?F_iHV(jblo&9?zfFvDiCV!M1X3cSV4Gxhe=Mnlnb1Z}<=Bk4Rj?+`6?=tF@; z2j=z$LcvIJGlRRCz{yF!z7KV5l)%KQVFv^lH4s1NkQt0L>psqfe}WV9GPNPn6J=^+SC!9!|h6Q+qvlF&%g&1hjgi+m2;)(1zhqlk)}am?hw;q)NIq8X@N2n|6zdwT**sK3yx+8D19=6Hzp!ba?vg zt2^(1{N470NDxU(&-?w3KSY~)dUK#pPK2%Cv)pESB$&c4OALw`;3fQ+&5=R%b&k~LA) zYx~UkIIm}u)u=naC}sFwchC{aG&U}lWCvX)QBePoE)fozf?FR=WizpfXw)oURiwulR z{1_~Cz+91S%oZz{>Yz_X<0Yd94Bm?@#cQT5mrpX_`Gbmbw7I|Yebz(H5m5ai!GXxs zS92*e^iCNagAFRDY0$6IB({L~x>z7|EfDG%|JYTqqL7;>`UUeOJqBx7wjqF0dBU$J znz0<>ZRnkLhX5Uo7a?+cRcxPYg#nVBvo3UUWUfi0_kmHMs2CD%_xMvXIvTsSXgG_B zgt#7K0Ca!5+Y_;{%B!=w_!GY^t zzI@?BzeWJnhV>8dNPwNtK>Nq{wvO_+wrxCrx^YY`mc#M&wIfUx{i}1K=Ktvj@4~GR zWE+86wE++%I-IjU=H5s;#dDK4gFcQ^I<}OWJ?;z6fULhfzy3c53ffjAlZb$nEu4Ju z;L(GJds)p1R((EO;icw$RozdDy#P*Jrh%R#Y7fX>qp$@(gl##~saA+aBN+nwR^*#n zt#pY7uOJeMV$r^J1T9$-yw_BTt^<9G6D718;1)?W!NHH4I?3Ri3Dv^M`fj4AbUcWt zaK6pJfI9Ke1i_JvqxR!8Ur#~i)%9eMVbDu!5~d;hJo2ht`|xhDar*G9Q#z9c^0O(} zozd#NZ<3{W@pK)Xg+kHkx>&VSwS$koK_okI0MX5`CpL^=dWJnB8LOCxA|Qd+V=6*Z zC{`P2s}DUkUBCFj$0IsVsw#dn5MieCb#M*AjA22hgwI0qTn-6{>mR!eAeGkY&BY}} z{ybz{zad<|3HoCzm@YuxZP9h4BdAiMt~0UiXp>DJMIxt-c(i)7wb=r14qqqV?auz< z$TveJow>a3PHX@`2_I*ewv%s)0t|Mo}{-;L=f4mNo$M59DT{ zSvfjL04R+Xe~aUs`H9Gq0{Ix3sm5uR|>6)1g)NEs`Y#oftwNuf-j9$B5xP&pC;G7 z{P>g2l7nLf?{t^rHp~x3IUap>U}_}kwPi&n=t5%cNhDI20Y(JwbEH)YDui=2Ad$l9 zU@~pPQIaDXbv|*LZm3v&r}x>_j3t}75?G)~spG;>4LUnv1hpELH+4+J_=#RA9DU!M z4u@~Fgf@Tq<~2=CO?v>G;lR!NFS~=k{IRRB3XA$%H4Rj_$VHzfOYxI~llXB7L~z`j z!quR6^|D=#8=Y4MGc{^4g%>maVs# z;sG?h04nE7@SGt?p08K4g)}JQ$!IQfymJb6-qvPh_pn+#trW_b9swMW*wyWSAh^}6 z0OYEuj!>;Lng&;fXf82pHM(}8?D#yr7!z6OCu|?r&U%h^pnubWA!d1mVQIM|HyU_n zqDs`lU1~5iOJxST&0-UEb;i_K)1F;*VefGLPHXKjgAlqG$hUuKjZWvW=^n0hqt_ea z_U+$VlR?Pt4i~FYJ3tB=oCcyE2iL2XZI+NasUy8{oTPbGrDKU`Uye`&Nk@hT>cTObAlrP={zbCTm^uv zNTaCZ*DXexTJwVwmIF$FCy$k=!@-u@DC38H`_ zs7v4|13A~C2}P2SrLr7LK*p=3m^c^ILB`3k9)HnxdH3SHZ#Uoupd8E9@hH}HyKUjc zAR;qPGrFx~+nP;rK1b9T*Kt~+@5&SbYqjNhokfS^{cfMklVmkhFyRjb>n;|l>TEse z^p>mZsnxwgKu;S3lB>93x93P$e&C=?N>nO}5>plDnfM9noY_Y?1M7YTz%yPGFhL=k z#k4-P;81HLI9O>0U9HMEv}ybviW7WV}SnNC}vR3Mkqk$|ZvH-VtItX9dv$;+|@>52-o3Y!X zDJ&egwoDevnFJbXIMbO#J((bI4z?+_L~_7yt$rGX%GrPatJCRB{wt{Sz{%jRiA;A1 zZDNc(p(T=Vx|bl`sAS;0Au1<(8=3$5Pv4ncE$>$UeGyn48#Ox}!pn3x>kGu_#mL}K zk}e{;VP}lEr0k9-7Vpi*J$ICS;Hhbb|7P#P*gI~fw&Ep0%^vPNO_qti-MySF2BP}1 zt#us@oTJldA|WmY7(24HCs7*9C0yoZiMDw3tI~x`HhBy_nK z72G2gT`a|`v13^lP_(i}n9(j##JBMow-EVe@O9O^5I-mQ-vx@)rINO|>Yyzy`+hJi zJV`|&d)f>J77q%hdO3qUYNaJY@XM1FRBE8{TmWex3%bgTU;Xi?o3ocU(b{Cx#e+eh z>g>n@OPoVz&RI=WiX&_8nQiD8Dw2()?;mYMvRq#q&1QdY-0xju8Yi{Sjbi!oMrSbR zfBRRMt+maacslan(?{!j zr`ucGTRR7l2cO;FOE#c|L^mg1t!04ghYB6(VpO%UIjlje#-qqHn2Z6MZip@~`m6qA z;F>B~-#N93J4=)xjQ0U;P<6qSs24nmk0kh9#TL22o|9bOk z*>AHdOztL)&@BrDW*3$zS*gItCL<=pw-~hx&-CSOSC%|HLvk>L5=gH6) zxmts;^_om3Im7HuviBR67+&kShMc2Z83b`$wg591;5X!fSAzk7)L$<|fSnbL9bWw9 z$D7qqxeXa#tbFv>m2|E>8;%&oS6y$eR9NHkg@6b~v)m(-N{tNKvlp*c$4AQx z&%nyN!K^0#_W!9h2i8;9S)6xRMH$cMKsTbf1t}CjcKyqK$7r^Wt7@ZU>9iyiGF3sz zKKSZcLaN4$1xCZ>uxF}Zi`IpF`)55<0u>|E4xMcXszTw;z7=H}4)os#j{}x3)8>SPbZ0v_G)yfe9v+t2hcp z#=vlK7b=Q3sL=>!h%W`ICavsVKA4`5`fbE^9KaP2a3;i_g`vvg#lW#}Z80FkBpJNd z=2sy>Yl0}`OxsCVQyXxO;GJ3K zWWJiMXjmC&=+x!m@_zfnq|-&==XRUfUi>t!XB414esZu(mOA6X^3B!R+0|7r{^ONa z*rER8h3A8&-$!BUPk%j1Oq4F4Oq=H07xPfmy!m{2Gc`P~ikQ}*?OV`%<#X|e8%KEv z9C+;RH(2^enYm&Wy`XfFgPtdc!W;ugJYGQ|CetF8MgoQ9OxSfn`QShhCgRRwm}&4W zsALvbZOGS%e1XgFt{)d!7{Q+1+dO#iWc~5R?(W_19)I)Er@#Nr2RnPwB6Po~8>LUM zkbu{roQG-%qT;#_wtN!tf(&>+Mpv!LNW#h*>ftQ7A};>S14EWueAj1$TCUP4!QunS zCs~C?h2PY4Z=&$%;N@x9&EdZgJegCxk(UdLj}9b>W)3AW|4v?WeKQf z{1f;%L!3OR!A$ow(DsG)tUp-I(bBP`0H5QYPw73t)Hx7Nk;%-Uq9X7+WYL2JD>de51ZfJeH3~2 zJW3Y8wZ^;)Z30dJSAfW;VtdCWM^9k*6~`-=(``kf@zQA)Yb_fjE?8)w?>9@S?-X|N{SUQS&| z3AB2$g?F-qeG7?uH^oAcytGKiz}T0QCgah?>o+fN3`nRfeeAc8e$P;j-^ z%enLCUL;}#0~L&YfMZ+vB!1?QLNcm|2QVPyLz^AV5o)4D)gRcB)GW665Go936zFWO zEWP-D|J3{Or<-Xw98Fys9W#NyyyEED*|J}3POfIdJ|+iluGPC5hx2)N48}B;z&Pa@ zPG6-$OnTelWP;%pkSDt-AE25;l%HzgJ9;;rr+NK)md!SNQPky0xj~h4UyWed*{`A>evYgr4%A~Nhtk;1ogC9M6k}k%!GE=jr(eZoVXR{zjKvHIMY52yhL15X^R7OrHvKn1ua zvhbcKw;I6yp?yXM=Qop{k5n08zd2@LD-|BX(uUcw&)b?U3YY-%+S&5_=A{FPG9zP` zr_r3NyS4-)6jKM63c70C(pbSFNKj$DcEFXJP*@cJy)2y)3N#P6P*A?Z_2+E1ikq(q zTWk(roDwje4P}IxM7`z@he3EVpDagcfY(y`|(4d*ah?NCC3$rGJQyi(GV;5-;&{e1xc`?T_B&^XG@eg|w zkjEX|1b}e>;vJPC2q{=NgrKE>F5x^S3$wy4}CNal1Dw+aU61Q#{}T9KvmXu((`I7Yc-6 zu5b(bHRMiT!eH0Zg0qW$dxpi`B)~q^?%|*f+LsFw6lr8z!3>81ZF0V#iU4lqYn<73 zn+?z4KoSPjH0)1i^YLgNwwutPtL_{~tz5B04n5MF4K$pU(s)M-P0X26JMrjlE}hKn z@5E1{(cQIspMLQBJ0E$7n;>tHHo9LP)Q+L zhted0aZnN63%nJQ*!94HQ$`Pm^naQ<9xQD5y|Nr440+*P^#;KDmjuzDA>e>Hui_Xj zq+M}m7+zh?&`9=q*+rBMzV~D_MKvq6_~v$wL9T#Cy(AcfT};{wX~d)IJYA{Fp;>I| zDBcn_i7#hQ#U2)O0Dd;C#tBO?!hwNmrbyBTPcvl^6PamP#Yb%VYJ_WQ6XiT)cH#EJ zez02NsTgMlfr^!UCf@Nh7hpOXf72>KmO!~7l+kLu!m1w{^l;FFMvFm!rzNupv(U6R zSYFSkLKVCz)v93u;F^}M@ty;gS2r|g=fk$`1xVKShaP0Q3M!c?LdEBEG;NPo*Due} z&cr(l!@DYxK~-19*~0Lr=hvA2ETF6z;U#1m-p^+&O)(8_s&LL~CPPJ5sU#adm8EJK zn$K@Oc(S#2_p^hz>rm0KvMIA89l?UzrSynpmWzil_K>vch6%bh{y;g9DS# z`nG^AN`b~^&IE)EbgqMwy(b%A--X30{@wjQeD&btPY#amfBVsI-v8p!le=F(E|pG- zBvQTTa@I14^59D_8z2ZI3yn&no-LL3(*n>N#Y6@|C}@b_A+wNd^$`b8F+4(ix(q~e z^APR6!2*pVNGJq2AuvD3cM*-6GKqukKuG0bo>c;$~14Hev?b8^ANdNNe4QcJ4$8tj*F=*n~B8C zw*#z=t#ATHcnQok#tYrsOF}INdRY}xi(IB+4Tr;-L0cBrC}91X+kBR&)D)ryFX&|C z1+|C;KV&VncUVAKFbkVpp;k=iGxsuK1BS(T8QTHKaMd%P3VTW`yrgrrRBm`ZSO(KK z*RNk7W!1m@qa*cA%4ju5YB-w-529y5OEUC2%ImO$t152}J^Uj3u(IF$+$}V+QEO#g z{KYxS)zn5=i=X7QVTi4?W7L>-TLpp|*3}x(sw0@ZcISESc=NkE|NOqlSy z>VwbjKf3$vW+flX<+G)9ywS=f(r~jTF)tS}3p$|L^ zBt3*M^8w7GU84n9T7$>)bG9%HL=<^m(*T5Rm0L76nt<7f%?7f2bQbp&TNZId9{`+> z{{BtZUam}pq%e4vJ7Z)SDHC&C)ed;1X>XIo_=j^XZO&hGD)3ckDo2b3vhFV4OrM4uX)dWS>Q8ZtSMpMsD3Wx9vHKoESx_TrM+?oxxZ4*rWjz8}z z4*pO8e?_p*?*I5^xvEL8#`8h#sXCWi=u_xd2!9HD+x2E0lci1vkwUmFiyg!`W#ve*K1nue0SkF>d~VAThnZWH$Hjh%bnA3VBy_q|{K z;ok2K(v`%~gLgi9=baC~eE4`9?6K4MNhBqK6H|bLFqg7TXR3&l)U-o&F3h1+W(;9R+lC)V`VqP?F@~?m?;)Pm)l+ z7xUA<3b6#)z{c(ry%|6xi=YtED)@Qlv#AbFHJMI)zn9+Me)@PTf3#Il1aAzAhoO7p zk&O#G*XuH37!E^Bn^<@mnp-iS*QdkF+>^uL>Xr2QMqACMQl&(7FhbjBMAdchF%=!` zO;HlPUN;a#DVSYM&sM?sHJUrp=mn6>V~;Gws16H#Zlg1t!&8GieOr+catBJ8h}Y7O zzgpXS^6c9$|M1nv?|<;#uVbc>-MROVzx(jLPaiyazMF#B4jChYYhgc;$>*XeJeU!a z;22pc#p9@eI<*99;qc+4sIYEr0|0cXdt7H|wCBpEO{RLEUq-BzJUu=+kCeqaY`s5x~#P~Th$qPHd@FK*}U zs9CpdiJ^+ew-|b3)Ef_H%lQH`Fid2?;zL`s1lc8aiO#JDV*=W@sw!x})CtTg05#50 zz5*!2=KA`xom8RHqHY07$s_q{n8XRL9!FPwM(8V_=izFdnJ8S!jl5ht*n3t~=;Px| zzFH@MVGyzWE2sdJiY)dce7zhldS?cHZjt>~mLIEaIqdJ{1mogm;VV{+1IA|BI&y{u z9l=(wiyJ?%=_irnIyz;*!Zu%-)$%6WeV z4h+x@UAE==d+)vf`TM{5-6tR3t?hpE)$e}s&ikKkZEvhc09?zV=0w(; zAbd6Gc#^4{lx(Gj+y;p)=k46RT)tHXS`KKE0_UP zwIE7VJ=cUs4OdIL+Qc%Gs;3X*6owY%7BJIw{5&ukS9lIKLJqu2-2nK$ypL=o7W!f? zYYYrU(R1*OUf(8#(985`S zwPLf9g{TM?Y9@y)2y)le%+c->45+D0zLjoZJl=hCX5bJL*@W=)Ogfcaw2#_B4@p$S zlv<{nJ3iqxQw_iA+hdbJvKa0^*1 z`V+TKseskunmQfLB^mjg3Ig)E>FGM5(F%TisGOH1E3JEroC>$05qUP!pT?Ra})sa{{{_(OW3sSD2al~mHch&ie zu8l0f46%;t(N3W~?(+%nr^`{_(|v>XMqMupU4^b!%B-l=8-_l;#ODS#sh|Jj^~IU* zpCRzO9QWo|Z*Rtn*DnGXL@2@b#sKXo2I?*4Y=Ph!+mF}3`ux$x1BCcK{q5iV-8&zC z@K1-;Pu{P)tNv2@&EqoIYgphC(3#aQ72rDTTC!?D*Jh|mE3y1 z|Lub(_wPRX_Vdp_{>A_CtIt0BN22lGJD(mWPB-p+bMHASJn40icdU+Sv=9)B>}Knx z7TYhD4vP)hS1p)N1R6073geFkUFQpxVAi*=R{;EtDI>frI!Ft6s9O|Bb1*i|zK*1W z8d%`mqXAJv;{JHg&ia^*{s2$ZBDuyLP zvuCS5y`NQWNo!j`X5dlNR_yLT%AHhzR3UeG7#Rwu?XemwLU)f?h9Z^XC4c5C5{vvL ze$si!Z4`8+iLBuJiWbgBI!H>;mKHfanq&d=2<)j@k#8Tvm;x+)rnz=^V+Rz${hd=x zt5vxMvOOBF5c6dlY7M2PR_%!8_hN)SsK((d29-cf9N1(9J456!Ck|nque>ZX^Tqh? z`gi-OS^mndU9LvMc6&PThu0Uw*$|B`UGuK4SMz0G%yVr$YK&nY zgg0h>DIV>W@;h5k9&A4R`tIkS{o#u{cRqjjmw)&B&p+6F_{BfJ`|ZZg(@%c)?pJHa zmU>hUxSPenW_sCS4+g2 zG(vI8?L*`ilgy+0RMsIPZ|n7f#_t~Tfm;HW8-gs`8Q9KbqQU+~DXK?3->$z}!jQu9 z?Te`{Q2EnHw2?a2u4fJhT!8|>s94GgYO5t;L99*0qB`mLp+a(j-qg8gk7yU_8wnn} ziBc3br`rY$qHvhZr}mCAJ3E>3UX)dljn*`gL)Z{CQTS*C#0PrCTs`fbD++Cl0u#7^ zy`%W)T2>rit#G}6^Yc$D!bUbe{&1^Oh#X~`c(*hSU{!pKQGhJ;R^!gqa0FhS4j4s0 z?18C|0cId|Mi;Nn#HMfTIJ2PG#a* zXdW2KkPCbO;RSkp7XuGl9suBNN$kow>Gs>zef_paCzB?`K8PcdKpI-;Vi@g9FzJcv zDV}kRvj}An6@9tX?r9uerWKJ9%6LK2ya9m}viy*7+Z`*sX~Wj3iTTa4swWrm^)fmT<;O3Q{Y${3#p(8v692GnSfLGCx#qJ7?cirjO$QhT? zl#J-f$OAQI*`XhOR^*#BG{C{)8c+R#`EuTK*mUv)aE<7}W-PY;EF}*67JkSE4kt`L ze$aC5t|13B*@FT? z&d+e@?zkTC*;>W9ytsM&b_oQJmLLz_IVdw{Jnv?ezs zrrxL(36L`wgvY846lOq@5;CR30-kM>KYy`=K}IvU8?cT6%AD zKe~UCPsjGZKd3UOtXp0m#LKQ+IevBwS(?DJwpEDkZKL2$h^}Ad<}h055}!=eN!y!Q z2a%&qQREE6)k?A5jeJx3fheQ2>_GA?hZCS`EV`cEjkM1H`*nLTzCwv>JX#HW5ngr) zMIIDI9KVY}qz|at+M~l}^W^!RcRqaY!#{lS>xYPjeE#*F2lw9l`u$)3?caa+4(8GbZ9jVQ_`Am&Upy_r3di7{gY>wG3m*~xZVydkTyGZ2R2KFH4j2KF1IN*IgV|7M zLH~h>CPtUN>!}98AEH4l2wW{hOS1VKU?q8a=C#Uu%Ch4zBCcAFJM@8R(4dmW&!Q*+ z0}IUs=tGkshz|%z@N|`Fv5v2hIMsm3l0aV?k959Js8ukh1S?4%jmG<@0(zRWA)etK zwRW--t8gZMiWri+zR4;#@5It>y0{A&!G+C zG=sFPrq~xfY4T#$v2hq&olj>yo;9@!*p--@Q;p2yCx@{bb^86ccYps6|NQyqfAddw zH^2Yn-QR!m(R=TG{L#n%{P+LkAAbMYH;+#aA3nVI<)e+~-#_~7(`Vj5L+?SWwP;YV zki|gWvP#jlQZC7I_1o|jYjruKv{if!)a>@=_S)_axY6Byzu!}lSkyhS%8CRkurZ9H zS~Load|1m%nxX2JRjx8L*tpF#l%{X=fz zx6-6zq9G0lJdJ6is3JNdS|igMkZHBDUzLb*d)QrB`rAJ{I%ffp8M?@Q7u%~C)DXoy z7%SChaMomU$M^2u{pVl3clXOrfAi^suipR7Z-4j6JMVw=!Eb)`&b#m3IWDErv5oJ) zdi?zH+SXU^Y$0#pSRHgC48d|0aNx>S07UaJEf(q&>>r}Z3i!UN5~oNy2ka%N$S9FE zNX4ID`Arq1YH*=+5}sEIJ7P4XD8}ii1f{zw_{5px3I!%MFXKjt*=RYDRGmPpHO&bo z;*KRE%P*RSYm4D4AK@ba4Zj_FvB&Ep6#GlTWNMZFcS6N5-3`5W4mJ?lUo&`jk+7|?q&AlM>QpviX;f=84FEt zG{DiHyy^l9?2?C(bR&04j04YwTuG%HRs1k8;jt%O%K+gMNJg_!iKm*tgNuWiq<7x@ zUvq*1KwoP}I=IT`^%{UGP;77BuGDOB0~uV5+5*Pp#b`t3fVd2eGG!u|;L@n8=(YG!0-LNF z2(K+XyD|1D4R5fzGc*X+dHCk)q;8^DOyYWp=M*Lcd@e2b{rZ<%mUCKKwym2>a6(iM z`VxT>Tx`3rT@#%yksuL!RjM4mpKibFw*ZVPIGz?z0F*LS0M|2B4l{e2CW!pW*6Hcd zVJb`30mvP;FaErIyM%^h2sgLWyrn^Nbm{PD0~oYOZ1(^$YtDl4&p98$tBGV18Wgi0 z7$1pba&rs6=6D{HK`du-Wje<%Y(ekNrzR&%Zn8OX?)e}r;~@qoV~Q}~CG5_yYZJRO zAYGhNBx}QQ4=`!dz4-5c)$7;SCRwRbI5Hdj=oM9l8z-JlrVbx(MJx4e>hRgO_dmV! z$=6>#{`THipL}@dqusnaB*V_)%CB|54YK#sESRc-41=|=3Ui9 zCCz5CU}2NIh0edADkBvFA_-`lpdEAu4%SdWu$;MNLT_TfrvaM>Fm07;DY)sIKpB=% zC9`CHjToW4w(z-qOabwbRgydip8w*wg`w&UZ&o} z1{m=*hR(z?CwtpZ4{^)NXy+X{Oo^-I<@L?#Pj4(^`Lh_$CbnwI&X?bB?i{7!2hVml znZ=8)Xbqt6x61FfgFm?s-D<|{?@Zpq`PDcJTxe_>GoiTg|m;9 zk^;^@CiKS{d1i|$86yX{X*S`Q5z$w}&MPM|Cu@;(ktj1JL$bp`2Z$trB){Bu!d%T)n|9tMPdYWf$R$3L3&F)9(_}=bUPuCuNe}L0c zjVeUQZvB{7I+!0GC3^4=YaI;^X`iHp@h#iKD{70phNicp<)-$VQ((`}T{cM~U?I zb6|pVg@#RLP(?3V0mg|*6(TvDNr|%A)kbGbVdJQKruY~XlJ!!odh4N}b4{^5I=i@> z4<<7^xR{;44un=C8i~MzrIG&72th)XDDYNq=VyZ6h$IdV<6Dm-tsH_Wg9QN5*jeWw z$iT~jtm_!}iA_XNIU80xqLDcUyBL=>5RV;!gVV!N1X73;1Qqf9BPQT5$tBJSz;q4z^pABD5Nl)jq zpqMoCKqzfK+uS^9J$XU^TgqxQ07VsSwyHbwdBB6RZg5tcmQ}iiSAc8V!SeddlbaQ` zV$N5uLM#})E@QpLXU=9Btl9(~FUU|SDLr3IVDFtvBEXp1OdOYR98a%hAe|6wxm2pe zQX~g=^~b-xx3-n1(7{TdCJG!bo$&A0O4#AMw$Q|h0rf@f`H``RpRm32_N2=cV<-Fj z;1hJZR#O(S7`j+k-gxZ$GboM0F9)TmoNTc0;gEtJS{=7oM^QrS`bC_^i-oQW9xrkx zZun*_VQL7%1SwWCO{HA)LlN{FR5J~n2Pw#zXwnIVI#tE54J#6gF0!zE!n)k({4tQ> zhVL(@j!mCzvHa$Kq#8nbK0xeI#4)i!oSf9U%6CojAX*_odsTssr@2NG);DeHRqB{d z5Xn3h}iaMu5ni9Q<(o z@~4{-IO}2nZYv~T#L1Jjjm>mLY(3hKmcV1i8Ycuu5EoY*ocgScE@@T9Y!Q`EvD3lI z@x|F#rAU$>aU1UIh|rRnbNQ#A2a%nOJZwuYn6E*b6GI=o?F35Y6$=pOlXAsYSgU!` zFb#<Q8?^tS2rM~>W^byf775r*eYw~Qg1=>Z6UJ~IgsWF9rd zTpDk*A_NV|9LN!^Cef;vb5WdiD}YSEXx6IR?QB71B%bAwCaEC14i-70Ddj|&YvdK^ zPdWPJ)UliJUxj8cvsnC#$?Qfn&BLsGc5@bLM4~D+W1p@WQfec=y-vEKiS<{V)JV+R zM6>No|Aau0jQU5ZT!=MnJjQZyZLaT}CQ>tC)T~fDy8yJJSv3Jf;PK0ER&%Z85Y-em zF!Y%=nPmMJtpb!zMd%gqDOIz(d&dbRf13`!^?0vbI;qg^E4$%=uMRhq1)CsU!+5+vT9&ibz38!V@zu0f%KQEqvdd_*H@5YGU_Mo{n_fxQZNSdrJt!>UB6!N^wZ?o z=7(+f>}+1`FJ>@})rZ_3ulDVu-J_!hSBh+Hz>|X7bM!eA?mjv!rZYr-|D?p3_+F|K z`23OtxDMHnv50eYYqAI>Uc#SKG)<=FO#5yJB@pe+%NIXiL)d%s>SrjmdzK$chfmTc zc$+s*i#psmmHhwD(R(dBlBVZ+_n~7c6niTaVn~e9-dp65oIQr!(`LHME>p|E`%EA$ z()&y#GJymV-rMC(Rdsbw&-55lTM9);S0LSh&U6iW!C(ZBIGj}r3z`4_eee4`PC(Fr zkDxK-VaI?JK4x2xgmREzT_lO(`6Z;lnG%ALb=BvEj!c+%&FZ)p#0`O_h+^?DeFQJL z?Fp&X+|M*kW8P6nWTu+PVEVNS;Z2p{&~ zhx3b?_d%O8)W- zVgq{jc({lg)0R`c%%;+n+{G_`nW$E!^l3pzeqL6W|BrQA4|*5x;F+DxCNp#iVZf3- zPYr_xE=zN>y~f)IRev)W1i(?WuJ)VnpPwx2yMO(mJNPjUe*b^}UqAk^Yv@6*_}~4f zFIrf6S0rrb@Wu%b!FyyV+RIUY2uAICwqDI6U9(x5JbjzUr;bjEVy0Y!j&Y4vKMw~7 zq_~~}=ao`8xrml6Y|d?~Hv-jg6%Y1n*B(roc$?t&kh`M;PJrzOPDf< za;rZIM5EK+A>&~=iYUY%?x3984|}8K)#l@>?hi+bhTn1s@Xqx#2B$N^Kz`EmC5Y86 zbJ1@@HW_&h5$sweLXXcQD7;s^{$?Lf_V8CV=yK*%;J^Ih*DrxscdM^5Iq6|Rl+m{6 z8I%}+@}JK=T;8#|9&~&GGUjZhlt0UU{!cGYvOHbBJTAQXt<>7_uV2*q zQMc2(zMf!8GaTUM-0Js-ts3Bny`T}_?*_;%Aw_EXT|In!L_lS`pG(t4k|A`5|#sW-kR3{kE{+6+lSTFq!-pGN)Uh=1 zkxhUCPvMOXU^xDXA_+!1Qi)K%-T? zNe9{7C5}ci*BpdM?L!C=3Rq6V{)oDN5lUa=Jbe6ZVQ^i=8>`VA&OxX&eN+t*14aJk zth0cu1cy45ND)EkIxO$pt_(>;UYJA#c7Jzu)rALmy!-B7HXf?L8ek&41~=q#Ig67H zAdkUxA=c_GI;TQ25V3KYE=kvChSB z-w~BJzk8F+C*PhI?8$O!j{E)n5Q(k+u6z5zX9*soM%21Ds~_G^aWpsmNSpul`TD~X zvP1dDjX|5t87LC-^Qs@)mEh}`Kcdl(X9VdtaUn6DQ3*wir1?f}9FVPfE+ z(cNgzuBW$mnlau(OkF*3<`6CIm$-1@^=n~3h5GE+#V*PLb4iHE>Q1V)vULR8mj6tr~}R*ghBDW7Um<6&}l zHHamtCw}wGfByS7X}018y1je+D zAAk7a&reT3{&2IcZ+<_Ty6W;@7cRx%#Q?;?>Ccl=5eg0Ht{fWybO*Kl<+9UV_q;Jo zwJ4rV7mvFkMnerQuQusiv6N=GTIQ0-9bKkQPcN{&sH<>>>6BY91Ko0Yp?8KO2>;s4 zq1{9)GXl&u#{CE53OpMCtS}HkvP|fgA-qO}2Ej)w#GEHWY#*EuV3ztepDj>QBCSSK z)P=7*jBcU5fv>8DOfJ-mo2ad~Aj|RcC{P2-Iq+J2%vnu)xkkonzckARt{q|B=uak{ zXdVr&Z+m`sx82=Eb`u-_UMr4(xqo-2n~3v<_`hnmddSiCx=l-CphYc;6$HoSP(K`= zUVYAX9uSF!@osdp-+kz(PcBG*GM`*enu^1`%y0y{N3KDivfJ43BGplnz`Zsvs+2LG zH8xLcK;FQZ@CIPAD#w%=bFb2d$S{WMj20~{$!f#*4-yXN|6`r*-Fe&~gz5HS zj~Y*m)zt(KnBmo*kVEeEW@9(rFFxG|&4I2K^1)yU%P|6#!0CeqfikU4=8J_?p)3Fc z&p=d;3jG)V&F{njL?;vhhS&r4_fPA_^q|M>_cl*EOXF%xisF8YSq)%MFwxF90~BY{+CbJqj2;v&|nbr4B2@1ixbiji~by&SUq19 zuuMnxu+v-J;$ni?f7q}bon>Xba5SL1OoF#{YzRT_fFkhX{PnSkHpa=sJZNfiI?1x=GVvVFYq%cbTw$P%05y_{^Cpj56XxEq*wyMp zjY?)pdea;K6i^lfHDiQr?Rq9%y?A$C!Of9#yFIiOU(-;}qdDnPDAGA7!&PXxl26HD z^FSQ_;dU^*dv4p^`|C!q?ycVMH(23?yZvCfTK%xos6xsYXf1f`ww6Quwfh!JIStLw zgv?PM77ouw-HfTC;3v`-U;M)*k1?*EATI#uU=pAnZ&-t?ryswcJFBf#^)Tq^em{o`^!da6_aCqS@&|w*Hz8&ALAyOe zk*(T=+lD2xxqMl791QirmwZ}AP2@9RAtOYoDgydMQ?*Jq4-{6XuTfMXi?wN<%vZJK zS@!(s>{Sv(78+N^#taR{J^*>$cDIEInJ)OFnF-Ax1K%z*k;SsCQFXX^JQvb92h@hJ zA>w|WjWKu$7X1C<;Jqh&k55ntgmrAj%?2a(9s6JMmjSHHRb@YnmhKU#(M3U-I@9XPiSaFG~C8uhD_yb7fO<6vP`hS9*sXeFPG}!T=-4;_mkJBDf>6h>P=DK z?Z3NT-_GLo`wdfakyI#s^JNaWKwrakvsj514z$Hg&HMDjho7GNYsjI;Temvg-`woF z(cOoSlj!$9&HD&vAwm05?;;#E3P> zDpXEnQD2ssx~HJH>NO495+vk!R8S`nQ)|1bm?Z#{ZN-YK6cRcxq>hZOg8>{ml3Sv6 z^}SlE)UqTriGs{jvO*Z@`AX%B|LNziTKl=hQ~vD(T-wXWt%l1=l{K2NCG_qd9-gPj zUct0-^Jz0Q1+#dO6dHX5``1GZ-C=vwozT;A0`#pW!qTkG6pE5Zr?fy2tkGz*y?q~i z>;FY&Mjx;5?{9BDe0Q~e`feAjK44$2syvb_vze$)E&apo@CF_y=IF9e;h3X0By!ct zs&)3Ny|!xSr{5+)y==;jLVbFkWbKq?GwhMBmi*Q2PBY9K&kSZu_B?$yL+m7ZeGyDvie)adehplIdDgs=ts$78Im$u&=uQvbOGOIk+EB(;#5dVK*=Ok6hs7a z9KK{5r9!zPpr~c|SaS_VXrp(f)amE%2v7ahubJdO{QJMVbih-buRly6z!>iCwyTKH z+Xfpio6X(x)6I8(yc<{9?c@CMYJoIgl5Ga#J`g{RF7lY87WSUDOcmvZ(Zy+_gCaA^ zomwuTk0fgotsX!AN&cJvB};c6e^|BP?)%t~{`cSCE#vn;T}J_?{t|{@%_-6>jy0an zyhW-VoMwhsNPorM)$QYB+*q%=UH$YIl>weY zvf+m!s!B0vfV~iw*J%qPVf11j`*4hrJYeY$V;m8Ix`hvrjh`OS6EygGE%6S<&T1)p zT2Z8EHJ=1F0y}W{Kx1DjN(x&km2)L*qoMxt#<<|O!SxVLLuOJH6#y3wJA0Aj93gR( zCks_RaFFq6s954vYg~jra5K<(-cj(j5qSd54bhQh8G&=KI6>%P8G=D%N|m6G|W9&yRoj*TRb^CyCl!_(MuBcb3&yIP7 z$lMfzYQywu0H#vZ$SRIA+6RrE%@@HbRxJ#=0b%hi0W*{&PPecw zqM6k|ZUcTP9DY#6*O2-!n@*z_EAZXZ9DVWgH{X8tn}7WE%gYpgGv2sa$Ptpy@V+h3 z96Uag5RN9xmx;??{L`1IY9eu&IH9-8?eo4{sz$Thb|ROmfq2;M!auXQSwH^%@ornp zeOUCDw-H7LLiY{QzK{`uEmze^-n*Fv7YOkX|vZsb~QF`uvN&0!lJAElhm(dc=+%grXBX?hXr?^a!h z^BM3i0p#$oiG00~`1&m;ko?rp6lbs>u!QCL;K2$!h)Ip*RU~vQ>@I|SHGFfzRXm@F22#QC4_CC&U3bo0Tp6Y zIOHIUH0jHoJx7lvVfV)m;Q5BbI{fn3q{D#i@|@iSF9|m}tSQyN=DIzhSQm9p9bfOE z$ZCeeopkbsDV@FjW2xv}}!eI?6<(bQ`aw0%Cw}40*O&wRvE@)6P zfJ|n(+#kCoO0nweXDB5AFud9L_5>l`bt7CocT(sryAY0a zi>WdQ-dcOP-=G1zUhX2Ms<6ouq?TS(>X~2t?5vo2Tf|gqjqSCC7k<5N9SkS7yKPoE z?pOa<8gAwbq%3cC;~)gW*#p_Mp-yJPajA%jtoQWehhgu-cen2s7J{BF$O{aoWz|&` z^cfq`rZ8@JSe0DgKI38X;ScXca{X!4Fe)`ImoA?tBtLk(9=ZXRt1D1wO|Ye?n#7kA z6}~a;vKnBC9h1tJRqO}a5?M|b1TH6WZi}diG-%_P9=dd@QaXBjeuhjfgX)4Qn@D4r zXet7WS(S-Gw43xp1RdjX8|QKSM_R7d=-wl%3Un>l%CLFpAQI33;wT_y!gK~Gs|clR zDNU7==YpAeOE+pv?l=GL-~G>DCj@Yvs5(=38G;pHjD$Z$rq3?*R-3;}q))%jw>ob7 zdfDqPbfVFnY`_}swc}+Q-SE!z_%}!CVzk|@0?~6oquG4F#*9@AzyERJw7}7Js@@IG z%pk9dh61eC%@zm&*=?Z^4wKhGOgq{xSMzm@xG`>Csc%k_r)QbhFaP7;d~uP?{q;|q z<-DmJT+@i|@%T#&&ia=z{F z9zXv6dh;|cU8<-cdQrYA`YlYjnUhBXa%x(m=&op#JhQVbLYZ` z;TXUPVSj;MV~xN;Ih8Kr;|J3upE~{avPL*^kuF`HYuoCVpS>*9D43rhp%BR9Dn-z_ zH)qAf*~Qmi*vlHuK*@@MgjEZ%9yC9#oQ%?XjJ(C67~Pbxqd)%T+oPkhwLrfEJW_ZR zZY^$nAA1P1buq7-TJb23nr59>K_r0I&h}>=+@Xgy3l1V5wsfP{3|A1o46nvY>GG(O zE=yGElW?Tkl_f`(OR+GyA63ncXdImIB8el$S6Z zIkN8uCfY<=HFXYRJKCbKxBX$;6k#+%TGXyf!Eo#;sQyHPHk4gE#caL z3>I~s%3Wk=hE^CtMEF|F=W-00$F-i9r|@l*WeJrTe7*#P3ROk`r;yj8>#)BFfjvpM%0QtdvaVU9jB?HT0PPi8mjYBWvfQVRX@Z9e_g z3vq-msD02+@O8e9Nk}U zol4}(HXsHU;)uBA|9!W-D}V=y&4AW~^0SyN1a>&pe~$?K}=SG9t7#fHiUhai?}2rw;BTd&|5;U z2dq+m?Wx^xd^ZAB3g{-NXc3xk4*IkC0x!<}bhaCB_vjrJJ@5GISAX-lYY1(e#5(<9 zqgE;u1mw{R2C_Og^9e!_S;!egNW*ZouwdFk+BwGJO~%WWMg&j}K=7DuV+O34xV_(n zE&wfekGIqD5-P`P32lTh^(`AkP4EY-0I~pZs145teDJhPm7vcl<%-N@7GGTK{2XW8 z)5v@Q8tg=x$mL48Ouj-^X_jY^yDYvdF-=@CWdaXPfNK!t!J`kaFpORa3NlQmMun4M zgW<%g<#Cw6*LfD1EU4`{F#L^nYd)L%pjaTC#R0|3@>0E6g879krt?I)s#29gDwR(c ziMKybyKHA>B&pO{DO+M{_1sAbAr9Pm&M$ZdOP{HmCZk!~=-;)N>4#69^ocf_bvbX- zXU`cA-p0)5$7Mzu&26J+xkCT@t{o!_5&59$fT-;I-C+yC?FLfK=%|l|@X>l0`4y@L z2$5`&Z!4783rM}c9DSH*=tKE145LLeSt5}$eSXA@4(Wp3e!m)Um$G{D_T{fCKs$J7 zIK+2%T>3y6;tfZXqWylo!hiG43OE8+AH=lVH}ZtpK%t(dQ75t)P|;FfqWiP@_+5BO zuq5oG3#0eZ!SMCw{SKU+t5)-Vx18Hz8wN?ey&o-tHomOJ_=i9J^~ay8eBoRbpmfL- zlDv-qq2hIr1qk7%YBWiTKFiU3DpSc4ObKG~a;}_7Rr7MlB?}lIpa||MOc{nj#Niem#1>BJbs3fD5BMV>bU%ICeR$eE-L=9|z3TRM_t%f(#rwNB zxcUCW?x&AT@r(vYlVuq|&|{|=N{uL9E_$w3wYx52=!VW0Dpaz}CX(NV^M`_j)s@)H?MMuQt|B(1>ZgO<(p!y205u`!@Ec)&raW-0xAjqJ#h3Ikxmy; zcL5<1(s3Vc0pfd_kYwc{gH?|UdbA@ zL@FG%t+wur5U%4dUZiONLp0Z_19=}__wAr(%1wLgeH_~ znjP3;9Y_^e;#CYN6qPtDaH&@>Uc7tzyO$?y;i!QBoPM6E7 z7VC^0r7h9fqEL{iWUg^wBoFA<>J18oA3m-Y^OX_BXprlJ|M!3Ep?-pZfvHmj#^rjt zyD8L{s70@wcdaMqP1P9(d>ejDNT#`Zu`Kph!wAng-$&=Y6#`jssD#7wynbxiO0k47 z^w}A~#^d?T9A1|FYOw?)C|dpa(=6&VN3Ge8j9O9$gGLaq=G*6fDQ)SgBz|dvYZNH1 z*xB{z+7#8yvAXDBAA^O{#XCVvU-H7sH%OhdgDzHVEf(otuSiH4!Wjb_rY98m2x63p_sGP zs$6%ZnJ$eALQBe6YDJLiM7l`Qq96gi#OKLMIRo@SHGTB;>mnx?PtKvA#6uZM(348~ zG?9WZWIPD^T_b`!nyJzhnfv7nv2Gh2ifY%_o9nCRYq-n$obRC<+PnMn(qBI>6jqWt z{$-)r*DG|%ooOhZb(w;Tzi%Q2H10uE6`?hTI#Bnf>*JpbS1_CJ?7{O} z4Ph&x3smx}loE`m;~3n5KW`fEQLO1}i@rVP-Zi`ZO@vXObSy$h!ws(HUbXB9`19k@ zH6n_azbo92al!$CVZFgsVyTd&SI5{pAC&^}^zSpSfZ^o)`Elq1>cr$SR4MOj1Pmxe zZ8{9_G4$^5S|BhtkQkVUVjEyEWb_|<;|EVO(&-&Z-Tu|?F{5R}2es#40(e*GP70U@Tr{&DbG)qs6a_2vTmPdqgNtXIqBLaA0E znQ{#!W6W%9G;IbkWIhg1_72P8xk_gUs>Y$315hSHmvx0mCyNx9J3l{7ogF23)bCPo z(O;gw%l+Fxy^cLZ$J9GWSvep8);+^JKLzc~o!#%+vzxX%z3R+=3`DExbtes>=bK+MQftUkpLEMWYKgAEE{<1O@;~L&(xLa`tX7 zf<8Ptpw@#!T@mTAs@QQkwpN#5NGawK-YbK;O7e<`G;zT{)(=l-K|>F)Rw61yo~)*lXSoP#dB(Gn8HUJK3$I?Eq&QA* zgOR;PyN3$o+ia4ew%LL8R$le&`Re_q=81-|xqh zuA1f4R7sZ=Fv;PhXxdg2M3co$fM(vlLC>U4Z<70-{-pVdG_QD+s9kHtH9nOm-2;5MkW9Gg5war0(N=WGa5ZE zAz;zopN9@B&WEU(9I`b6My$HjFwE|{KiF)?NLaTz^Zo7nHIh|!3*(e@1^sNd0iqT| zp`+et4loqLTM+fSfIU4f;X{<*&=p{>EKyj`7xU+DFAKSfr~m^fL)gV}8mgAM^3^xIJ%8J(SDt)~4z@3laPSkuS=aAJ#`G$bc`M-Fru^x$qdBed{CTQd zBDMXFVwyhdgn}l#`tlzW4Gk&vs-8Zp)$-UkXFj@7`Xo?w-)%Yc;Xpe*Ey@SZD&p7lr&; z0!Eoe%rbrh%Hqigg->|sYBZI>StR!+i+KwcCRqMrO_{H7WU_E{hN%FJa3~hQJoX<9 z46Y={*Q0fZk{1CCQdJhASBBu~q^MRXryt{)pqfTg2Jw?aun*P<%vLcWuT|6EzIv6c zsnaH^kmPB?=_0LPiJ?zi1W7>$?FxR);ib)zd+Vg`RMx7k0Yg?ep7+<7z4JER!^rZuZx-o(ls`o%Y~0s3R|Q! zgAk$N>8&sU?vBu#9O1B`sNG=`WqpawOWUz*bZ2WRsY1N0v^)xKT4bQ>FdOQ~xW=pH zaOgTwzscDEijL$$rrutMBALwPGj6}x1sbZqWr}XL?8>s0eP`ymAh0d0PDe+!Pz zdg2fBME){`lO~b@fR=#Ah(ew2qD_adSrbEW&yq}|jypJxz${%Z;SH8}`xV({%edYv zjwaM_LdjA!io{n?AFMjj2ys5hoRGiHBygWa_fKE91t?r=hs|idyaAZK)!svE6wV)?_pANYaNyxnpO3+4hf-R`0iss*mJ6`T&BkI4&RO7K z352$k4q<2qksm^ey@%@vK0_PCviA5(ZfaqXF(09edu#XEmdsZUf=C|9As85L;Lfd>8{b>3OkaB$H{tmH|njf z9v_}3Yo(!CCZ-t4qf9AZDba{GdZsT)hlE?JX*RbXX3pV5p~^W@#}%tl@e$ z=+Kx1i8P?(v`{KntEz-`eH`PgjL877$<=~{kg!PCze&Y}-&k!9mJr?VBM0oWmMcsxy3 z*vz{^JnH)cD5b8ZGmvI{pgG=e5QU1ESKjq-@&SXbmTThH=78op8OA;AVWfCt$v~hx zSddIG&;dmm_c)kF>T<6SGY~78^%Ax+K+UNR!tVCOdY9tUh=C&l1$Lf27-Q4HRLVp) zhv&^`**PFwbCrC$O5-6LHKOLYZ+G8cH$5z35zSs~A6n-q-ZFKatUuiLnm7QH#96kM zK^F;J{&BC?Mq~Tnqm&ikI;S1f#^zUh^q*TP1&|r4w*YGxsPFy1{NZ-KxOx8Wsqd@) zZn502hBs3m+FD0s-zBQKlVqVJ0r~|28IGl_4^A-p&JfOJX@ace3jzXJ&>X%_qOUQ; z+YY%@fI~5f)atCNvkedXZO@?ziqRyJ;%rs00WGM@hGiWhqVpJRaeRd`DD)K1ipVup z5!M;3bokHV=xzF9mCO~318pm$a5q7lBme?ssDcjZAJjsZO0j>~SZH(h;PVILLF8u1<>yN)KvGF1mV7V9F^ zRIC9KId*r{uq=zpKw{Wv;NPbLxX#sx5|aGYgNPQXPmJm_UmsC$!nC`pJDo(`b{!`0 zH?NX~y1(Nv@1hEcbRr|80Ow(?+Ov#ROB<@xdiQbFnJp)5DS(Zr%#h4rCP(w3UAU;K z7C^7SSzt8hq72rvMw?9^>e4}fb2IDhx4WzR9p33AI5U&=#AvK`;q=pwA3yx?@#Dvt z5Kj7&>FRDa+Jc&CI$RYMHS*x+ER{huBJ!zXJ}VdsI!}qCbRku#;!RgAK_p(zrZbgZ z4C;hxVb!n0mdx{Y0r!$Rq{@=jv(%1d`9_uG42QieyO{4ETp@MU0{g$~id97Eu@b4K zCAFAATF1qp6W331Id3&+7GiW8*v=F{HP|>%7pzK~kk*-ae#yW+suGRg>{$w7r2ua@ zQ}ntWR2IF11usbz&Gr4Kn|OpExu!#YZO~Nyv@$~HdE=vu<^|*LUMUDV+dS=pquU;D~Rak%>Z;M1Y(X z8I=N-%<$Q_S}+9Qf0po_c9tUk;W%5pzZo`uKchh);Ku z-Oc*p`uPr!aazFbrIgO%+01c7GM&7@_aRB(S(!V_!R1-4Fcq>wm|U@3&J`;J=P4YG zNfWvlu!*~dxLBY`aJ^^9!txg7i0+^fG*1tiMc3+mNWXQKuv4aY)w3H zLcqzdSg!6&hs(QxhF~5A)Q?P6GeXy+5t0>DN^jz-kWC)~vM$Rub+}$D=ODm(J~jz$ zlPD=se=yaEM7H8g=ex}`=huB+neJn;%melc7ZhNfB09O#tmt(V} zcQp)Q^Ld#euu{shWPvGX-x5P6PmY|gorP^|w;(;RW^5F7rRm6;9QJV5x735M0to0* zmQz7$wnwXe$Bm%v*<7!Yx+6;B2tV3n0XUzLr}?w9_>WK9tM~IBnu!rOK@fHKcQ+sR zo9$}-RAS!36_A4l_WW)YN5A{ zzw2;_4~-iH<*HJypx^@ianu`zst#Z-Iw+D;qrnGei6RC#sOGasqKK?esqq|fV4K$s zyH=!|UI^lNuWjlm69f4U5Bs6QTujtpwCat3*THBl{RRX*0{0m(DHxmu4xT#fmlz6; z_1ecK9=k^w|Qb|>1x?$8ny5MLAbPGd`23^cX zB#hq?ZpTQ?pW>5h`U5k^uVI#>l$M6IeK!3HRYQYUDJ&CA2flQhX$WI@yo)emXyaLxtKTs>HM zi82U$eRO{iC5H`swOMWMp`Fsr25?0c8sGCqIimp#+Zn++IqM;Y*TYB){WN&$4K$p{ zx?zUH$PRmL%W-(oYnqyf?+Kuit){B$kOezbsZz2>V<#|+NRx6CKzDY#NwfdBu$@T1 zOdk&RBtSq-!QbARI(n^5SN)w0JzmW__U! zL##IFG-K>)=ivpr?Dxi4*6y|sKUwV1WNMjop*k20o4SW)ezS!d&T=>%jPbRE?u;`8 zM$l{LrDm@qS9$&d>c|2KUj=Flz%RJKW2iy|sWFEtbhU`9Y7I$rz7Ea|Hr$P%+bkFH z76f|S?@b^9G%#BiM31M!ZOh7W`>9#Gzz(_22^?Q3BDv)TCWoCZ7IS8RwTvukUSG&d zNTb&)WyXROuA_2jx$6qh%CnJ$6Bf7wZS6dnx=2%rEK{f;rOjwn5v4z5gdDRjWkqNQ z+mi^=I784U=!v7#F`nZto%#Ii;>~N|G~Sh);GDts)@)44Z!X1F!r@$= zej+i5oo!i#j|h zRH;DJn_aXRE!9C?SUjYt83s-ei#|Ti@P{lDl-U|Cv*@&DbzfY$H(Wd-V_;}EV_dj5pxmyYsnV#s(~uw zY}=bHcp9|30oGA&H0p0R#^qspiFavJgU)2x1>jbv-@M~+YLdF+=^7~5e%RCz()29g zb9ILk0aQknrELm=g0a7Nle)rU&e*RUhfy6F;-*|$-p?^y0yqwb?R4T@3O$SK#m7%GAhlbuX|7io z`f^q$%g*o_tF+|DSNqXy!gl`fell8brlZ)dX7E&0u-igiR`)>`h?bqGOBnoFqQuuu zj*}Nj{6ZZ|4Q+(ejrzrLHhIcN<9K}?Ll25q7#2H-NQsn$cL$(&S)xRtfQ);G*Xdi? z%OWGXZZKT+4Sg6u--hG8ggr~0Nql|wGMz2+7UFVRUJJ*wE<(51=U8$pwhSnl>~>dc zj}I9yiuob)BY&4);0fP~eJjn)Kn%Zk{xOS~8V zl0r}5U6|7)Xm^nF$I^o}&<((netWHhbIm5AW~iz3Fl5($k~UY;i}Miv1_{rPHgsp(+mYk0HXV?q)cWPo**lDcAf9p+rMbLY-E~x7NL*rR zTRcvkrt)$uSEbfr&E=wN#iTQ^Ua26(H3A70n5Xq-*hVQ;V0nh1FvX{MWCkr{279hy z#27(@VLWf4rULz$NGa&^3!X{lkI#S|u7SAW+A5JXwe^Do*0Jh=MFKOHVl&{}LKrTw zB1#o-YSvV{(-q-m23%|~*i4$fktr}#j!Yj_L@8n5leNszu%W3fSomB`t)5dYC)a!$ z`=Y3bZA+_cQ0B!^OO(NA!yu>?EuZhNhP~~~ny>iF zBlU4mv!?ey-gg!aIv$`GZkfCS+W;x_S1UBkI>_aiwUmJFid(Hhd?VmB-@AG4Wf`cI zL}|Zjg?{IXwxywrjLTi)pJ~Ef>;N95jJgfG}eIeuQ)~?b|qm zlIh{8dTn?*h0m&;~?o6`^vihBA~hzPTD|c%6Dz*Elw! z5!(d*v{Ix)5GTsns?u&0z16tW>u@BF{h7-&JDNuB07+pmwE?j6 zG)XY@3WM&Vnj~Q$bOP9pYEm8R{6e9a$yQQ2s>yyGdmNo&WlF$zpiruoOTCAiS!eU{ zdEa(%8fuQl*FRjXpDhcIDc-VB=0J^{JjL)qk3%~ibfzm1CUDX3LEYGUp363>VAJi= zFt_g;*6bP&`?}YWQ9I;|dLJTuc%5teUVDEhzUpFb#Fj3z|ZdW-x z2O73Q^LQ1AW!!{mILPsv;7nXSu&$Glo+at5cC|JeA>P)!O3S)v)S=xel|^#+X$&#o zdeR2*EmGcIitDj{{~f@1S9*dKKYsz?lu{B~pZ@|J|GLm@`aqq=GqlEH*WLZ0&*5r| z0|jo^&ScsP)y{S(cSaQ*RyyDGqzb4uUC)CyCfwq-IESjs>#EgC>iE1;tO*qi6EIpu zVWjvjLnmG)Fa$^6Uy}1epyPQxn0S64@#di00>YA0Bo>TWNK|A^$A`cbix}xrRU{@j z6feeCbH{E9m@(q}1?W63mXCKhXds0a^W8xsRtj~w&WjA9?N-z7>;We-!^qa~d;|g$ z8)7HyNma5APnCc_84#~$ldj2ETAPQqyIRb84y$69M7&KTvt(W2G1L!cO$kHAK7{8A zo)aq^P27VOR1?77lv6pjE>PL?i}Mmso6R~{6?HI>P1^ssnW6lCwc$a(!l?&y4Zb2H zLV=+lj^cQJr?4b9x*qcKEbwa_ym~wYbZoxRe~6CQC1zFz*BF8(%GP@}lV_OjZZuf$ zhNIiPP0~E3Dd5o1&{rUCBT!uVOQNG3)x6qi4zFFvp3L4j?4s{#OrPTRW?~S~9S$}o z9p1UciCOU1m|z7HPnisTn)scq#B0Q`HPEms*tMni!B2U z(NwmUPNu3D4@WqHkLDxTsfSZYse@*xXE$7=kV_hutx^>v$Z18C@GQhhhd?46*H58h zhMn1b5_=lWyP_~2dvx@4zgv$2ze)~odfUZp5z2@_n;o^nv82el%jGSa_EU*zUp3<0 zdfWGU6G$L+PWBiI3#7Qc+ByhDTc*&&zY$lYLnSenBg>hBP(<9dA1Mx4go+IgV^dYv zA8?HtL$HafdDk(6LP@C`fdr;65+Eq~)M4}K1_;1PK<#v8cmnbE&<#}Yi!|;`l4^=o zs+LE04@0aM$Jt9f-vO(W>#he7EAoJqTK=Tk!u-6m8~^|$x4?8U5G$!bLQHre=dSN| zs||w1AvnsR$Ps1ypY)eobld_k1DqGfygX^oe2m-1JwXD(t|Cdz`;X6eO{yXo!3bOO zej9=b8&Y~)N=m`?s6i)E`OE4Vb$B|#U9yZDR<|>{+K+*)#o|vf=qkDtr?keLS-^fV zWlErO(BL|UP*3Z6(~q%10JcsyOi8nV@rRZP8|yk%=CHdWF*V0a{vf6TNfw_cvj4m& z0SO@j8CMs8i<7LVDGJRNx^8wfxxczv`2f32qb3dXQI>Z)%gN!ghWQ12SA*$%HQ!Eq zvp&%74(htVKwt_JD!!o&9b?p910M;iIIh7Yrtkz?0Kag6MwLjpUKQsheBb-aIEW#% zp3b_#cnQ|ChB_}QU688RF$?C<@PaVKuo@k|_`6yG{y-Q;jiBd|OjGB0NyW%VrxBy( z%lYJG0#B?$3YaC&>V_g(nOFdd#8Czc+^b1@`hYo}MQ6(tp$cag6r>$hc6|54LerbQ zNsy-Z@blH-@c6DD z!Y9&!Sp~p3M7=_jrc%V^<=HnDJ~%&G>_(G#*&UB|*CQyyHIO1yyC1TRO>`*jb2Suy z=~^Bmexxn&qy^}|VFPaKbFAC)brjK@danF$6u8i=)yoGXI-+ENp_@iEmqTn0=&~va zPqEPQ!SpL1URMO3ppc}t@Ee{?5XEoL%R z7?NxqMq3}b&pKJRa07wbv1mX{xQC->(mRS zRF2VemkRE&qUGQQf+daGgMrvj3b#M~xmT?AzsK64D?qe)mVBKhDb~z>Q`=u-habf_ zx1Y&fkStU5AKp8#&qM#nDb>tt>Zp<<+6@B~V&;gb{q~4S*+s(S)bX%()elW~mWE#?|7!B(Pwk3`) zA^(=BwNb=iM6kpAt?59os+egb%Gz&7FsP#Hf!n!bBJP0%AOVhfqKZh>7~ke{2FW&7 zs0l5d^akjnF_#rR;0h4vYQbg;iZ+IYfhzfn4hVd%SANTS?Zp~&`+(I&d(?>fjqZV) z(QVmiYP4aY7N8q+oW<)v@b0Q16pQ5i=fCK7l{z=USt zf45t;1SH;d!s~eyQY9kW@Es&N^RgGx4 zxxHIq!iZ|P+4nA;pO$Iq<425MeJrX4C71ak=XYe@;j_s~_3WZVQ3wOGl3z(yMDnbF zN0uw2YYFSx0Uo{Ru$dR-60&?)xs(VU>oy}C4?6HO2Ek_5!sH4vJIqAEMU1gQRZK-i z@R7>%GT9Bl%V{kqhmYEUlds)f;yj5gDjpMc3ZaY|#&Jx!Si=pyfT%POVt9V)YJf{l z6V*g{jKdCw$o9a~{O#|@H9SKiC!V4jBVjPqwqb2;NSqi>C!yLHwMEZRfM9`a7uF3B z!b7K}+m6i1n9>?txE}HkN{~f9Qb;#ibVLNeFrG(|8ZUrw z6p46tb2u1PZH!(6pC`d!s&jgG9QCaBX#a5zoc;3JZFD;Ewh#5Gp=#w`(KwCha`|Z`thVbZq32r|5>o@#{wZH97Z#I+FdM@E{ zBI3FW&I^TXEE@ble+X5BthX@s3Y#6^s93U6tYGph6D9O{lnSC*EFzx*LMob##5~TX zm>28Izg%tRwiCDPcpne?%KkuI+#zfsw>G{08lZomqzB#6(p7tlgF~qc8#V$6 z9XPqc(+S6+s~SpO(^*-;DS5Q*NJXgUn%F*)OG9FtW|jXkg%VOFL>h z2SgB#2MxM{%22V^FwmN5bv6Tu2Mh__y$V@l5QpreR|aoa6Q|kz;%aVi*6eP;W>|dn zd7>U5HwyyB;_B*V{f9rf>MBO|?S9?_>~D;CJ_n-O!ZvHCzk_{;x%@Ws?jn)5*i^lV zK3xo~_SbpL~9F_V$cK@y0hyVKtVRbjv`Mt!`Apv zT5K!2&lP#q5WpdJ6t2vQH6ehmwZO9y608oMSAD#8z(Piz9{qF!6Ng-e78D(;ez3e9 zQ)F5wd0qAD;qwii$92@YAv$(LMl!oL-xBJy(yj)zhI(zUI@jZ8f$+ka$ zGN^4gMhnx&sMH#dLHrY|1)*9*roGu1b){OK#yNZB`&t2f9o%_Mef;VBj~itAM5F)< zMGgf#{42nDY+9acVi4t;1dby;yWh3J!YY#`PDYN+2{{QLTKXJXpsy z%^~{IiaqqraEfKsaD*7(%{Bs(U(BAp{Pm0D)0eMt_?AH84^aPM?QX2;P)c|TK5(xS z_fYRr9QOTjy2t%A_ z9H3Va_f2oF$Kd|1Asd1*MJIA3i$S{sm_vZA*0_t(!g{rT+ANmimBosP$BxE>=HzbE zo{a%*)&n$}bwIWc8~^!Yi@W0>-^0wgi+UN zHhBx8P6t0H+8($g@-~LfSV43BFxfx# zL5k3d7jMou{L787jYvczgt^(=d>>=x2@uvUMk5e&N<5vroknMdnPfMp+T_s*B2kQl zN1TRv5}3|m0Cbv->sa6br%$6QGs4~M``-6??p1}VkS>T&xPsx`tV2$y zg4K3>&qhMj?Zdp*oo#_5jn_{Pi@P1Bvf+3<*-XIOd8Pu{pl+DF2vuNePP^3F^xDy6 zX_-BifCgN3yQ>s0h04W?A2PXo!Qdoowb28Ri{t?g1R?qU%@41V ziS!wj&}!E$YYqlfJ}!Qxpi%S-CX2x=h^Th(ff!Mk?eeAQu$2mTKdj9G0b_5T|!>tKFjsTZCT0@9v z$H=z!>;1z6!C`^gvXVE)(+^Ld|MGE0W+h(Cor-EV)CFv8qn^He|1OcNg9t*qv6#(Q zq#U}d=llI;)t^(%B+%39FL#euSL?|Pw&>RHEY^!P^H}KgsMFwVluELg1F%Jb#J~xa z%~z`phmBK>1}$+f*3S45^5w$}1xQz;l&@*6;UL)W+5X3gxQat1zAS3_Ea zumn|Rsx}a!IxZrX3KCpGV`zg?tP{+c3MAu zx!X=57=L|6Q%_@7b{{ldqG~hMyEjF z9dKGQ^=egX6co@X3WAR@f3p~4jpG$xr&H%@OYY7_&$GOyUS!0+N}I^*xe-rnSAsqQ zQuLAbgW{V6ljzYYYG*Rk7mM{Tzy3_1(kUvrm+#+IR?nNd5U8ay^tDX>xR|5ZAw%^gD(AZ9uZ5ndDWz%4^wDo8l#@E{g zgPs|Cy54O1?fT)DyG6%8DHJg&RGwlu9ei6Q->N4&mdb)GumP>Il5wn zV>aY+tzKdnB@iO-ndtR2`tr5b=dV}GX+Qq>`~lz1NUw7IRn6rx=si4Xk{`L{L^^SCT4Mb# z2-)K|38mY!?GPC8WE{#_(x#fzy8NLi@?)1Zc|4vDdKT>q+p8SCy-cPhv#A`i`rLFb z$r&4rgn9kMT}@UybRk(wvbr2~JtwfVxTRMO-H7aBK3RYGYJVnVKK0e*Wp|Dvmz!pznoaKXKe<4b&{B8+xn9 z@$!DkF<62-O7xGb86D6TLT;y7y2R!}T72Gi?(b`zRlq|1 z>C+t+Uai}=(?U(j<$U+75m=>6md@{Y-#Ny+zc099zh&48Phh(}eY~E{u0L;E4YgN! zix0MtJSBN^dU}3(Q8&>uEP01g1TN=^4-Nb4#GgrEN`PC8;e4}1c2aJ5I49q{rI+g* zp6JkPl|;d5C|HlK7SJpiM25&^^l2AKMyDSucAxV+k0(GiLkJ@n%$rr;W9-`7etOt` znQPmhzCF%@kGI{c?day?z9o*n{Ov1TbO5qnzWw}QvDEJ_KR$n6Go!Yn)nu`}dtP@_ zZ?dIKo^Z^RQ|)Aj$aCMtmFlqKGL6ZI>uRxT+B!ZSCTUK`sQZ1nP$7scdMnQDrT48B z*P+37+Fd;FMsT%)KIk_T=he!E)+?8+iOcUA=J>{_W{c<2n1RfCKC!I(Nze;Ak#<(M z8$J~Y;NNaEjva>Zobe_jvO5ap`7BLO6}Wlv^bBhrasu|{j@Z zp_h75m^VK?nNAO={?&fG09W1;`#~XRL=Necx_XpB*Qv+|CkeRJ6|{hENWvC7F3u(0 zD4eh=EWABWr!EWmZ02pUEVVl=iBz$W$p?d>M#J^ud!?r_>(*lwCBwE;%w@{#C0`wv zKsD$>q3jLK!$q;I_T1&V6$Zrm0m#F7T}9KYDYxwoi_B)@I7{LtGC37%9GKB;6jToz z>LOgmJz7C)*BoQ!+kg1$FL$xxZeWT068Ap*<(H@Xy9LwlhcAEq=jVQ_XB*CZ$K6D0 zS?SYMt(xO6v|`@MlDIc$b8n83k1yx^Ff};-1*MTZzolxMgtIs!ad(I|{3aj5FLEW(Eyz4Aysilu$+(4 z7~BEdwx2%W#vC#}hWfr5-Q2Hs``BWbX(HAsTo#DMtU|>B%cDt-ba=)sT$Mc;kg}ni z$jJqH~SGM_O>3llg$ng^S6&{u%}x1^p{T`|J$eg$De=wdfngrAOHO2Q{Th^^5H=X zR~x-tE2UDII!|?L$spZvX|9`k;zwb$Kb*uE+;Ebi8kWve6L4*I_e~R>wapkGSHSja zx7pu~>S6!-Z$JOjhb2^Pit(i0IY&(`m1%xK>+wG#{c?$#h+w6Xyw<=}UptnQj7a)=XclmGkZGZaT874cf~*2&Qo;T`+O( z^HEtXS65#@S*@`ifBb*{5-o2BW%>T|%@`-&0L1{HUarVWx}sQ;77yC(wteVaPAb7) z|LKAJQ}v=6Pu8|2r_YOpqqi@FOHwv48nE$N)+;aRM&5j2ci66>AiO-xT*=d#*p$Q&eBcCVwb zj2t{Z2EjD2eamQB&BNh|;|L5p8VYwGe*Nj;>wn$#$8A25i{;P%_vh8dU+oe9UZbPt zzLu4Cvtol;bEQ<#qLJ6gOD+!yUq#5$6ipug-msrn_~=JmA$fvY^{R&w&SP+3ZR}Yh67mex-Fv;xHfza)yP$(}R_JGM~F%x<$P;v;U9 z9XoWdc>E1r`Qm~=L$O$vWyAC|4)B`Jmz1P7vZeL*_F+bmq$o-LjO02%+b+@?d43h^ z@y+aDy+C8o4R!;G{JAW)drK^hOj5Q(zt8e?wpi*81J7}1eGek~>p%axk47_EE=U&^ zvv&O?=knuW1AQny2OkzaX5&T}5X3K)Aqf})pYoAq&X&REcF6WhG7)S6ws-aOqz`#n za=J#d+kgJ2yZ!AFm?B0H)!`%6kxF<^=QE-Mj$sy~K%6vX?rhgeVYF?y@ zrS|jvX!i5t;(BgZEBSD>gtQ3Nrdq6co=76KEU3ELnhoM@zkfe5-9i~aT1_{Upl>Or z-E+p+m3ANYZLe*K*~>%ajb(B}7AiU*S$vAN!%&+-3O?J_0>r4Q0n~}MNSHd?JKraZ z-?liEmnC~~t(}ymYTcKl*$6T999F>e>ShQ2u_vhj!v@n^TEWkor%}B7_RwFfcOS3D zBd1;z3{F$i7;oc(8la;&!+3HPH-#GC3MD94=hMfpz1Ct0AH7A+T&WtG6}xH;;sj47 z1qU4oy2aKWe!RcBiJZyJ+ESRY@(C!HT2oAmR)0!r6jh0;BgvILXRz@5@DROWGhL?v z*|r-(wx-x^!|G3FTbG+}?A5DMBb66rBP;p@POxPVc%<0DDnYR{+cz^Wq3mb!IpOlW zP{Iit2vvr??YdTfah9vBer=RFm_=B-@T){uA9jyVJl)ac{Pj*Rn|^o9djNGLv`M6#AR&zLgM zOqI;0w}^RxHycTFUq8E42Ueyw4cBWpgb(+0{rHYfCR&wvkkWg&x552cT#Ohi^hkyG zCbvQ2bbsAf-w8^Yvx!sd*qLe}Q%Gu);ga24xQcqKJqy_rs?U9H-G*GMG#NvR(c+s~P5w3Os&AqVb4iu&Wg-%Q*I_umhp)zKt( zxxD(k##7t%8p$f=zFBlb6nwiFuWoPYnqv^Vzk0r9J7;7Ce@)dvajy<}ArBORB;>+T zySMs!8{J*)H@9(b(Q%n|H;C5F2H9k|4`RBBohd2xI*(s!&rn5-0J)ITaci7)07P@I z0Cxpj=`f38LK1eHFrXt#k?bxHdl{_YVgAuHdIJwc2`>@V%;e9Do%NM26myE#HJgCj zn^k++>g;=>s}<{Xvvtn2dVl+{88eA*U})2ux~Flv!Lz32X`VImCTXrRXAK*^TUMHUW)t+}TyT7uur0~V&UycipP!bY2#*HUz%g7{(_fSF`7<9#=j7 ztv5rr)4gJ%{k)5Mi#@aM&tJdYZs%dI)!)rsSNAq|>j-FV*a9Qa4Zs>*ecN0;eR^1q zI}oSY#EiPMP)=Sz-g0_;t#q25{HCJT2)S7!duVUzn%9*m{sF6{j%*8+CQIS5SGP#k zAjpLX%hNN$#q0DqY};h}a%n-V6r>74sE}zUBW6loPVRLc8oS%8=j*u!Tdbj8EeN%u zLT*xGN6#vjpt9HRPp+4y+XuHo{f1wPm?vpNS&eTf&kuqF%5=<3Lun#bXnDf`s$TiL z;L}tu;v|Lr2BEH^u;+9d6@3S|;L1a)P{B_vHc@ks9XfEj$kg_)KmGjtcsIEH|GKC6 zn1*)`Xt`icOQtirxoSE4y_>)MeUXP+Ub52{G{o!GjyIc9=$|eN4-5SNxDvlbBv_ z*2DQ~xVhTRy8D}HJi7b9KcGKZ^&M$CpG92jR^0)SKGR^(8N#u@p0(}az-0>Kv^KkF z8aD)?h;Wr&G7r?E8M5l4CM6#qSv?0Fv(BieRGZC^wb)ZPcY$HHWi*?>AzZOYwXNs( zT;WJwhpdm>o}NL*PN%VIbf~vk2N?Az&`~}en&FPh1*fUXVg?>8&E0IO=Gt|gMTF>% z5GxoxXYezWqOn1R(~WEe;Ct>8i~;cyng5zf!J_Q~ipo`BcY9FV*_hM>6xy7~-=7GC z%0yA)i(a&QmZMr;L&cI(hgDkjXFXGLn;EjpO?1D|msxW{S6h7j(CO}n&h@I@QaM^f zIB8SHG)Jq6Tg)7!0vC*)NQPZDY|os;JxJ?hTsvW(yiJQ$7`R-SpH`PB4Kj>nCs^_2 zV1zsCB4}HYGG{b5+CJdY8||;2KRy5Q;p1QCY+UBopZA(S8}28#=1B^zNOv#7#fR&# z-L=UL;LV!O0eI4`zaJ{z7-)B}82dJd2_R9^B|MaXzk=;ACc4IzhXn20oZQ5lOL4so zC<&0nw)8SxONlLXT*)lsW(slrutlYCVina^&#OZ!WI|p|Q1elhuvNKuZ*6qhlpv@u zMfO{g$k#`8yPeS25e^LpQhh7GR~wZ0|>L< zW}Q^z0n(Of#rwk23_4-!`E+?tq{7pRC1S{@H6cZ|MdCWUvDS##rBtPchuHKH|V zt+ItXwhH5rJOe}SE*n!i6DF>iMy^f}6jptB5O^_|^>68&Rc7$-1#mWy(4Y`TGne_r z&6R9(45Ea9)+nECXh1S7x9QmcrAXp`UZGcy0*8R2-PKjo=q%`lO!pt}sePu(Op-8l z2^dxo4y(xJt6XkP0lpYjFq68tB#*a4#iG0%bvs!5`w_c1tI@$b+@BEh0tpG) zx5Wdr)xrep`=;CT;J$!#)mCtip1-VzV(sW6!`qX+J{Qt1eQ}-NM%jq?LP@sO zRqN=Dfqnc>I9Tk$vqe}uPCF=Lp20b&r zpoEDeQDOYxG@C-PkZ));L1#J3pQ;Ak$;>ERz#5`Q`H|N@m9&oT4~FZm925Qv2R1#6 z%4JT+;#b5%rDO%37Gsz&z^PD2DQeW4uMBZ8*)4j@Ro{{ZTF!4NbPeIMmkZ1y>W)^f z7aAb5YzYr2u!Riuvi-;mS0hFd!^k9Z%};hQUrg@5Jgz(QD<8m4y)IYtMlXPP`RU$r zwrh+^@#=aoyIReb^Zt+~?fvJklf$kV?p6Ql@#%5BCe=P$-OQv~_x3~Iiy^7S=*)OL zF!g7F!ykN4tppQI*Cn-}*qiZ)nd$TO{QASkJpwnU<9Th2!#ayzy51ZwW!ZCC99NnE zB@CHZ4jyJlEfkmlH!GQ3q6pikmds;);Un&8pwuiX0aWWQ^LmF9BSDo80YOn@&?Cxj zuNMS>vUJ*ewJID(A9*z2Fw=CbV#6tso{XlUQ@KbJ@ToN=0B!;21;$xiQ}GVis7t~Y z^?1giTyK&^{*llmM}*re2W|v#+uqccDc3Op(7oNdMdEBW9>t*tss+T=9Ya3!&)}g2|*-;A>K;dnzB)a8n z>G;wbt|z_qI9lF-6!N*hjlgZdV~7_MS8&}*rBD($3uO4Hvh5+vKvx?#T?nU4RyY_2v~GnY^jO+$@)=AJaxQV? z;##QcK?n0kStR?UOUbM*;FQKcMlo~hB5pE``iazIy-NiL$%9!jR0wS)a2(X|4ozu& z2zjUj2`!98G3dIOdQ5N8uE#`&rp(94q>+vR9l+EaEq9T(Lx3YD?69wLMUcNC0lQlL zvPj1cb86uN6o%02mXam0CKT%+;%vx-(oHO1X@U zcsFDa4*(LHw&DF;_niIxhVGSjv*kuw$^(yYl%($d<90$;SuG{2SPHU+m8o7-H zcLN=7xr*8#j~HpG+=!VrR^ZR)i_Ltd03FFD4o+j4lXr`2*K9pme*NDMyQtap=I8(Z zx36D5eEhWTLm--9@fm6T{p9v$bv;kKB@eOjBT$Q zPQ$h-loY*%{dTt-tOs4t+U@qt|DQDS6+-qwl zj2pY(Gb{&H14CUHW+V#24lO&VRXs`K;Ykp|@4M{*lrvbyMzh-BIUDL~tx6M^_^eXK zx=;r6*6o7~3P?~}-fG1~eK~XecuNz2Oh(J1@ziK4YPCkz%B0FPXl-ty9#(+2C%FU= z>H@JFuQTX%Hdo6CtJ669zRF-qF0-CY^@n5Hsr4F^_@-TxoFNsCv_qcI<4YYgOrt@G znUoe;+pIBItmh)LP>nJ9e3(pGEd) zy5-Cn@|S4wRd#T)gSThbKMFivYeQQeaVDKk2A$#aCJefveVI&MREoIBOZBcn=JR?z zhk+p`UtA{3JkV+QUxIdR8;I|iO_d!NsJKOAP*K=@QalN`*tLB(Xb}dX8H%Yv7SIz^ zw64~`dJ7y!=eXNbn-ul0*`VQ@mW*#-9zTI({6KE3KU%G+-*0DN8iCS`tiea_vyFn; zhB9gsY`1;6$-y)j!}9@|fGh&n?ik1q&68!V*_n*n6MnZLH3eP8Ar*B(I}OyFh=#yo z7oH*IM$Ig|JPwn;>dk`H&H~5A5 zY$Bo_9Q`)SN%kTTg3APwtyUb)`!p({C$(0?PDgrQ&-;qSNi4|^0HchravK^p0SDClrr8|=yT zPSiKE+kMlU#N&SNFyEFye^YAcbv(o&r79-97Khtl-fe)b*BnIJy;eTgP^IjfSLe*0 zsuA zH!IP^H<^|>VgW{iq6g&CL|OrWyfg}D6ePg%H!OnnC~$PS34peWo3zvMY{)?>*mkk1 z^k(b$@GJG`EcI#Wbx7m4?Ch%x9eomIW~Abri|e)YQKguMmKhIKbAOG#leYjUaBuSz zx4UX@VU)`2ncI>J{*vo-ugf96-?f&j76GAr=<9vDYxW0t+j*oNE{y zyzynx`D9((^wku9P+Ko?pDNd({}VTps!g@UPlJ@UE%y4o5$JiPDGT&hc=wv?X*gP6 zLn|hRasTUwbvT;4al3qc^7&g3j`~(STkZ#D84(jcv2~w>8|MkSPLn=9qBUMZr=zi( z=2#I9bY_UWJ7uJx70TxP2>e!f4Rfo}oo+D$L#kyS{qnmv4Tf!X#==AaA!_k>sf!9* z;$-FWtx!D8HKM1@zHd!zsC@W#R90XdrkdG?1?AqgC%aJ#bhoJ)HS}DA+-a@SuyCi5 zJ>V(CrHzk#wVEqymeqof5n383W0u4!ZC=X-f6XH+LeQd`u2L*i1>#t%?KbYr8Txpw zhUJ;0X$GN|OBXTI=?&O*oi^qQE)#|#XN!!l<*IZ0>!?^S6-q_GZMc%$n$A4AR2p6P z!P1(`>HUrb(`5N&ZR~?+88M3DEGVT*B&&0Ij}iCneOx7-Po1Z5DM#%Zo-2HW9N!JY zQ^?#nl%!=#=kFoV!Dd4)lv{wG4Ng#la;4J-%!uou)3!qV#GNs`<BUE31Ux3_IcYI(t9N{e9 z#tK_U#!8}CZybC^gwEg$QKoP@B=Bo?&|A+vKHD(F!2+8QK%E2YXgeY!Vmqsa3Bbn^ z@+IPyN~XeluI1^?2W_JY~gmIfT{F5GpNBSEf>$Zf%XlxDC|eFzWKiwsfQA9?it+{^NA|w3OY)=b<-dZ-@OM zowkV@2X>{354p>ggEPUQN9agZ*uyg(?(;Fdp?3HWhcc`iF{Izeo)_9*qlv>wQjlsVP7B2Xxed)3Z72T2{q>XG zdwTl%Flw)#cZ*Ro$H+y?NPSmtoL>}+`NUZ=Bb19L@5`ku!EVXwu>5DQ#wd<;r>*gK ztw>EyoKSTTMuPOCHR6Ns>B8VW)Nc=|J%x)VzjXspU+&I-1!%m|#q&o-xS!N2`Q29FbgHF8P4(}p!@O*pyIMN(&c4Ol0 z*YowEYZz<^+du(;x#=&i#vHz4zte2?$ApKPuzHFaYY6s*oeKx7Nq^ntXpc)XU6RCd zxmM%0&1RfGZBszIiqyMT{F=B%+Kz;gbG^i&&8lhdJqs&DBcDpyjxE4E4byG|vc)jJXVl^hntZ zlbX`&o>es=#D}rLcTn>}%+#tOo81{Z`8r``(`ybkfY?2k(gx@eYTW{ViZ)MfS%g$m zC3D;z4~K2yx-cDPO&ii?3^wg3F}em))HU1yDiEtAhMsE=xvY?nm;NLQnH zd~>&b{Ca=)VNJ<)!5!J;XzoJ?2kSO)g-SLroMp>L*>kpoQnB7CrsNJs@{lZe9)|tp z`^!YBKHc==M*Du=!L-aFFvt9waIkQ3Qm&{|cr>#`t4SI~wm^o@nKTVhUC)~`j=RX?4a}JQ%Z7EfdpJD=gyDMGKV(oc5HFhEEmpxJiC0KE~Od*&>h}cmcr2AsSy9^ zG|no4o_u?nM21;N>7!A{;#Sv0Nxs~-_`O?MP*oBEr4C3%a?r6Z4eYj^uc{R&vHcdE zqr_kxCSHdf1N0cShDOPq-HaTp#VkRn)qw~D#=!>F^6e%$Nd(mqJ(_ltOEVm)z>e-8 zCj=0Q$yr>->8sIS!`fH&Cm4cnZ~JJ!I;4M1xnAzfJ5`pdK5z^|N==2;G?Kj8)j$8& zFZ(d$y+!C(Z8ht1(=(w*_M+08cYpZdI3t|={!*5lX7Vg2i4AUB-3WGMA=}7TwM@3; zdBe^8w%eX@HL0APa)PC7=(2cEAJ<%uKXzH;F~CN&t37?%Jw9&OkS=c~edtOnymVGC znFoPZVKS=9MsKoOZT7K$^y1ygk4c`W6v*Os=FQu4d0>b}SJgDbEW6)*0 z@{f+s&oh})cO)16ai5MPs*}mX?SQsJwUhuIcA7NCokj=Y4hPjsmYCjULU{9CZFbex z7M`{0bcAy_&mI*W*Ox1kEdq|tnhg?cS<@tQ;y5~y7pHxwoEhv%xI9IHq`*LRX{$vo zn?MhWFQ{Uc-L8J&V5H z^tLyH@p=R~k{N^7f%F!3wD)I;v*VZf?C*Y`fHm#$*2*e8rVvlT)2wF;X?@_!Qmehb z+pi#DRD{gwcdyTnEHw|`)HwJmL2+XJGAzDoquq4&@$vT4$E)FZH}BI3+W$1}51A>P zWYs$Dk6Iy}C>RVH0FE8K$&_;^RiwV`krm+cE;ETj7Q+6UciEbx(*Hf&9W>xjc0?_| zK~uRVi*+5gx1l6ThEmKG>xgC=1`sfqdIj65vG~SyVe$$%V85HxaEIPSc`_WglHyOT zKb~JUqf%{twXp2z8hYY*6^8JTt!x_pABnGYvd&K87R1?U5@SKd8alN`B~8?|!C|v= z)9Q(2y#}m(gRxnZhddZOzMN4A5UW~;cwmuk2m-fNS3TBC5!YQ0%VpQ_1G~jovzX`Q z4#=O8m><#bGufs3bgB0DS06sd@$(Zso5^az9F`^s?*>HIRhNG3bQiWFclmf9yA;5g zSB5uJ!^gmLc~PXB7&qVjhgZkh<3IfPyJJ!6ZTlUw$Kl5^M_8CpKr!aWSf|!3(gL9n zwR2v z3H*a}>xjjii@}5HE}6%Woe0CnI)o_;Ojb)sUqzxs`jEo zL%ba_V}dD9;`#m~?#k(M3X+4xUpoMMqBeONb0JVrl?*nU#b7bHd0u>bpvN|zELR^U z09xy(FaG@dS3>3J)$2e1a4emFU#Odoe{+ZQmb^g=4@4sG-q$Yy0APR>B3R=$;_~17Wn#R-HCBf>De5?Z>(uoNX6PRzbMjan~CoJaR zSyYLu`Bp%~0Y-`4X6K7Bxz*zgMLWMzEH;WwqoPr*!jglr?bFp}9|p_y=;5!Ai@~r- zgk3mE6i#1d#q7mdF0a8bYCS(N-cdxvOk(Evogj$IyI~WOK@rt38SBGk#tbQqRdV&j zKb)HRi`?07|Lt#nc$GM?wpuW;XRy~vrmiM!-5Mb_Y6C4+PUR8#k5WokE;DkG2_!1J zP4gu4>Ni=>z_tq*lqo!qR^pZUa^}3G^{2i_j}3~h%AtXvujV5|aPbwfu0(6r2z6H6 z{3cL9t><(pymHYd)5nphR1wHn)f$(_sdTE+6;9t@y#9Boe)Txt9PA_eY7(qFWOMe! zsv_P5!cnSJR=c!k8o&9Wkxrc@FOSlpR`jsPLZYP&mu1`5HR`DG5@OUab`!lZ=qdfD zSzRaM_HaLqM*HP}lbEnmch}s0W3u3D&@V4ytL1C>AR6Fe~sgz&;-D!<$WiqD_!UdApQ-LKUHDdk6 zcV_~;!-kZ4_vioepMLYh`I{GKqTL#hnd^2bmTi`fzh&V;X?->DI?_q`d0Hw|>KvbG zTNst*WQKwE^6l^b&C7hb)f^D+tBXRO9)=|v!ck5Rr*SjO+?yN%J5{DW%DJwlK<-oDwC6=icgc9ZEOABs!aKl|7J{^hF+MGKz1 z_~Hh-eLO1YpP;& z>iOf7%k(j3wPR+G{Kq!y&}_B<#kdu=R9CJh-<)TX7kVfO61bZhC=9TLTbloyk5~Jv zo9BQ2%k_RdnX)pTtnZ#T*SqU+*FSXBMUj+Y_2Tp$V?>!JcL!}RG1s!7m2#JtDQRe2me0!$JA36k zpVY#_%YXOpUX{acXTK9O^OtG8Ts-^Z(Ir1USop)9 z5=2y`WUt@Gz9IRtzLaZoBI}3rN_V}SO&Rr$Z-*{!-6-UFlc!a{<6i-}7vKg~G8qN| zoPOB%#Vi%;%nli#*o8v+{p&YByf3H@@-c1=1`zss8EQsoke%r$_0(^F`-cm|gS+6i z^lTHU5Y9+&)=|9vctdmW%jXXeCY>n8qyVFNwH%YpVD`wk_;xoY#IS!{lBnsjOS7y( zCY=HnlTQ?7WZyQc4elhB(_H$y-@m%Nyh!pkYWnpA3|-tQG=XLTw-}}_E+k+tir{)n zGLpZK_muflo(JKGc0~aM+-qz($A#MYAOG$|`1}9mw}1cgP3}*ByeM$LHeo0>s~Up! zx*pURpwgM)c&9mJRr|ezw<#D$-HD$|`9wg{k=3XL& zYk)~?NlT5v^8*utWsHnIagr>i(xsY1+kjzYW=}GT z!p)c>pWYqn^m`0f%~n}9dZr&!@@-l6fW5s@E*1)n(NH7h%oI`WgoYeOQZw*|b6W_4 z>{+21_NiJsmz7|89SGq30$_CW?c?K@53GA{e){F>&b0|QG4m-|Vw%fU((Dj3%5ix~ zoMcHP9T;6EMR)Q=mw5}!Q<|Va*AAiE-9LZ%umEvj&!@wY)t)S;Trvtj9%b;RTcU7S zZR?zvCM%q^Wgh>{h<*Kt3QbTKno z*C<19=S(yNT}nh!%FX}sxmT5k%S|8af@;)F{3ZT}|L0q0_3MZI!{@82&@&aG$mO#t zGZ%7uK6&VF@b>uVn5zdxs8aGYRhBr+ov8~bB2qNyg;YBBH|yuy4Ovqk)>Ye9x`XZ{ z&}*e!-i+!3lL~Maz8To{;SlR}`b4;>5Z5&UaMp5(eD>t@{Pjh>HM?HTcI!2ZOLA!W z6S)I$-d^{38@o+d1O^-1c9$|^+ik}|bQPAX1qsoKC<^|;l5WjD?ni{MqHsCguYi08 z^uqt~>(`$@Jw89*kiBf_#bnCZEqyalu>nxPFa^bF^JU6c^h%mGKdo1o9PE*+B}pX} z;{%#oK0G{OnD=y;_ibPT<)Vm(co0RiU1;jSyPKsSPl9>VV{!4~$KuiJKmSkv=C?2Y z^xd2P{QDO_oLz_z8H)n>4A>uqre$fFN?DJQ_Xy^?njw ztwUcIA%3Wq~igs|*45*M;pI;wHCD4r!bI?9OG%-;Pd?sXRToO{h^ z1}n48c7Q7b)vEqnt8~K(J-$9n7YW;e*o!3f^6%dZCl$lg=3Cq8S1+^g6N$@gsubfEF?I% zSdJN0UdvtLcZRn9dCx}IAULT#Gh}!$t?*Xq6J*l7IGG!*j@+>C>j@Ta=po?VGKm#vV7B1iX@bb;u1YE{? z2|L>%)Ir^!sdpipP(yHq)PKZGMrkcKR~8F=aM#4d%4ZZ*On*2uJ?XNVJAGe6>b$tp zOYyQB>SxESY$|zss1({UZwjk_bGM1_#-(0(k%1R$h(hvI*7yRjQ&|K=xJkmr6Sfs_ z$7a_)C25~sFZTeFLQLU+bE2i(EV%PBQkB%)>vOnaWDA|EYwCD*C6$6Xj$-QS=Wcv8 z4qUpeL#G<;`@t0^(f!SaHFBeg^-~e-`X37eDen%W16mBzp{6!OCTu2u^6us;q9a0b zAR?QFOQL^A`FuN@%&u;LBzL;eVC>X1i;o9+IMePUXtSX=Q2Hf%SI!9OT%(e?D6!>} zAz%(W#5c!wv$uR$TG6D9ZPhGEiE|r%dawd|-(TMktyZ7BaXLjfsym5h_VSZ;%mP@8nh5T76#T7zG zzWdQ6r&G@1=B`yRJozQk#dLz)z+LpQuyrCEmnIV{uk35@US#ZTP|2NLWJShh#@IcM zZ-S|v$dg6r45v#?B<+grueEucXp3%I-HaqUxQ-cB(-xsx90`hf4%h!ktEoTDXBWs<0l20tU8$TW)C9PXDQ zMe29~84+goWIhf^uR|ImsK&#Ns7!%ztW#2q(cgad*nd;sdXs5wueaOjVpgg(-v0i_ zWcK1TlPRit{`fcVB)k9$-Ry%2GG8%7XJA>&tNZop?rEmuZq#`2ar7!y%J~9pMbSbi zb*au|7`gd$wr=(}x9dqKd4!nVXy%&`klsuZ$P1yT17x%N{0!14`V#S=!J94GI=UDVK$qTdKs>%DAc5%j9mV*yrK}LI>;| zRHz1q7x06L#*1a_%tzfgnr;`goGG_aIec} zWa1z8h~yq2yl_iOt#kEwdwn(OyJk2ZwENqu(RhH2=z2E@WWi~k*24bmYB^u|qe>(9 zrx&l2jRJ3q^2KrK?Z212>Ul!J=WPLd0VofwwmaYPIN7Y9C-nx>H7@l{jsGi0@3dC0 zWX|fnAeuB%i9B2Pnmhe+8~AbgBv-PSrPm6K`rDyss|`q|qjC8Zp9s0%j&wL4xmveH zXv`Yl%ww8;S)QcNzs3ZBsD9fK!8dT7Efgc=eC5ZN8IXKJsq!|_bX_6sMsjU6Ue0Dw z(Aj*R8u0)K-`p^vyocRgf4+B+FKqk%)5Hfz?MMvXpqz}UjDwA0O+$G-h)Hp3>h2p+ zKDA=`(_MS;0SK9@1CjLFs8I`X!{e8mhi5XaUw`Qq4SrWM z&;+N0H9l-6>LdpfOHgxoQw9^t?{9fFj1jUo#79h000(7vhYxwQi8wh`gk*zMM*nux5!2rt zUA%b99T4AhD)aqO^}O7z^87joi;Y5x_66gA{y?KOSdhswC?(IcTIoDP0Y6`Yi&qsY z`80u-xlwQU!qI7op2<0QX2N`KqcN% zx!Wz)8(<0tIreBak;RY(hc{VH$PNUZ0U1UP3Tm)J9PKGQg(YUl0G$Bp@36FVN1OYd zUAKgGr@scd5<*$(`Au0N_F%fT20Oc^l(y#W>CM$<{djjfZH=EE9`1Jc)9#FrGbAHI zWkF{=hg8EgH)!Q(^eH&4{LK5eD#(Lq9@H;OtTu2ri>XY&|BC=IM)jv%J*TzPV(r5A zAt=fC;22in>*i}GdXsK-$w4@ZSG$`}AFt<8ZvtAPO}LL>WKC{c=73-XDcFJd_SK*M zkYMs%W*!L@tDXeZm`PC;mmKIUq@`-v+$k5i+YbkFcKh=C^LOvF$9aUb*^4ZDjZ#Cc zPVSZ5@u}j~^0{)Ee|px70Yg!$WBHsY)l!XSC10xpE1YzvE4^(ej!yD^QoFfbEuYu4 z169VoO{~4*^_LMQ_=b@`e@}$j?t<|qfE>)!(|Uv694ZU5vKtzspsv${$i5)=t*cY{WHJMqh!ydhXaTt&~ zH4!9dWqCZIq@%$THf&i0v+1})9RyRoT&&`1Ch7{UZ!%-5tVUcF?auYIO2Du!IL}wT zHiG)7&D_54!mTqKc<;=@WuoD_tL?Itx>UAfL$dTtqQY5~0A``A`~7~O-9?&9P`U6! zYSG3@rA3}aE+nw(92@g9h8(@wezw@|mIEbkSlY6~j)duOcQnNI6bD_<_^qg462*c; z(ISf31RW^*T0MK7EGH}UM_DVFm7_N=US_IrHHUHY&5KvZFaG2AnQSImO&y(-ate-0 z9xcT(tOg&qQswwEp8z#t(-Ue3vKWb0a~ zM#O*)XS26n>1kDX|MH?}29o=HwS>(m*V^EDWX5{!X3?0-by0MR{B+23>UZ_>_4HUYZttbahL;kYZrh^zGR# zr9(x|os?v7{d_Lva#bu}7LYl!b1uL5&u1@x|A%+Sr++#vrB4%CgXBxzoM@>k3sLeN ztiKA>*4;5K&tPq_GdVlWl+P~&b|r!!4F@_%r&LvH(jODbAjbNYR1(<0S-uQu5UHxw z!7h|Lrs7H3z#YfSHdn+hc|Q<8lW8cOrQ4;Np=Qo=|1!8wuEvO`W-zs9puc(|qloB+ z(>D7qCsx%?=|IDzNXNGn$zshi>fNboM1GYc$oTGKkCmH^5HXl+!5Z_{dao^d%EfuQ zEc!$K^h0PZ^KKaPXAsYFsn>{VGL?!_dUr%&sm`W$X6E^(N*0x3t(`ngr!@1EcT==y_(`sBwE_;@e z;1M-Mc-Qamw()3n1tRCV>(JAg4>DQejjCHtC2CC|K8eXawEr z!+C7Cn79}RmMW=iRWw@FWHEu;NV_=w@u+f=DqJ{sUGl;ObNqxjNy(hnS(A+@Mvce2 zs|kEVlelzE3AW3_^+DvV){Px*7c>g9s$tu8nUKVMWCZh=oE^bKMB}D4-S*wuv5HDY za}e56YI9l>(kVi%(`)Sq9lOvbUEAgm*r@iFew8e*P1P)q|7ZBPmyI>W8B;j_{!JQ+ z5U0(fEb&^{nhhPG00XU;Z;I*D((&o5-@Pm3%G5jgC}!14f=r*@I5HyK1o-=Sx9fv( z?9KP&*TY7xD`iUgl3cxHN<(~7EVfIpUSH-jnTy)jZS~^CpK3-TTPbz5iXV$_5-qo6 zY}cJ|(ruZY{l}j^^xXR^U<^BcINL!Ol(^YrMpA?~g{hv%BzBK;X!^s|01Mi~T^|jj zrIoR8&BKB9B5ANmH0ky#^=Q}22#9b<5%*fvT)5a>ef#SgioI0HR`^yn7|b}7Y4zY{ z)F6M$vo>Om+%aXk-fecY?O+gDdDeueF3(@T{_(&3hl{s=Hd=*RrqS=rCp{T$rpofI z7g6S3TTq<7g-8xQ7`DeBb*%&%KlVpYMp7#KCZ| z-R~Cecr)ws0QE+v{pe(!U`R^4LoSSX80)DVObSey*`as6-pO1&zr&Md`QuWR6UdUdj>B0S+_qziVo}TT? z5c}Si6eV(g{p$;f6u#k{(#{6ykiZlgg@#i{84xwG|N?I{ufk1jw?6RQF`;o z65AmD(+Y&M2G^5jqa~D^*WVPAZPp?)!UiYs8shA!M^|}x|9?Kg_JB71(}0uB!^eO7 zu$#>GO9B`Z_Y@x1yW(ZMP~MckWXfnsl4HJIGh#hF9rt^(dJp&e-CV!4$Gr@u5cxcB z{xA>-Ww2FF2V7?tk3ZdQ_{s!!r4Bk_gnXW$$L4=Nw8A@()VCPs#xyK|{N~H;^AQZ? z>d#Np84#S@uzbJy_T}%syy-SSyI|b)z0JcDev13P&S6!4@zw82es_WoW@bxn zSN50dQ0qC3$}het7qm)AOGG&vs*YH10V<0kqh7df_>)-C4B*iW!Sg(Q|JSuMdA@%J zX2_Vead}ZJQZ3I-)^9gBCRAWl;;V1VN?j4-hoo_OD8#8%bRYK={K-_@P3J%Tc(*^U z{&n&7b@CB7ST@^i2b8IXF@s&xYJPXl^4lM|s*SrI2F&8PS$}%i-yIydgzq+am-B5v zSadrdPB=UFF$3G2L8<2kn@`^#r#(tLF3<|IhdP79A2N~UzrA+{z~vX4O->6wNo;Gm zT>`e^8}{zqVgsXNI#LzCuQsv2I{jLa7Yc#k1&ypp2H|CY_xSnC@sXqDlK%Ydj!_I_ z`UEgb&Nb@sZchI6`SIy+2f=L2Q9Q5^d9KIdJYS@A1IRv&b9xb0;BD#bPO$Dmf!Tq( zOO0ZUom$VtUX`u~@np8h+!HZ!^mMm5CJq_nUZdVpZf}#jpYWn#IXz9Q&+EMi=phGK zQx$0EtV0^^uS&09USE}X;RKC(KGFfP5x44e<5m+_eLjCkPjOfyfGL1Y{t%O342P6C zJxh7@$E%y7pbRrzmYP*ntji+01`b3Fa+-~rh9Y=)*kqPA+|9SQqf&c6oE(05cv`Ke zUmE|*t6I2S($mkM-q~mRT9x${f~tD$x=JQ52rL{R>7=&?Z28 zTjcK2O>M!dTsG<&p;geYzI0O+^tK{&P<}(N--NYmBQR*YQn_?`tNYsxQ?w`SJYRnJ za$xQLoB#ZxLvLugORVVK=tU!>j>%Q2+0ul@INpasjOTe^tna!A;T{$r9-nuk<1?LW zCM>HFua+RlS3DPZhHkbLN+t_e<5e?XKpc(7A%L&(>~Q<%pFTc8aM;qTPT56H_wP5o zw$>YF5#nbq{T~n8+Yc01=%x3j<93V*B#4x2!Et!(ELOMc-U80z>TtJS%-DrKd;wwC zV?maGoRBl2J;&iKjYqH!ZVwYq=7V?;_Cl%*zN$p~$JH$NxNJ&#AVMIcLGbjL8mu=5 z$?|rN>BXp%9X6@i_{r^H`SkhY#A_^p`hWg#zsRS& zVCy>3Ts$(9`C`93zMFI9Tu*!3jo-RG9v`+n&2{+sCbKc}IggB1GMV1prKC|&G2gBY zfj#G8Hy&CM3U#sWhXy@_Ir_FSDGNGJLxx0Jqe*??{T=a*LC>wwXUF$nzTDFAN?jDn+2`kd#%Huzo^R=4jlB5^ zSs88t8WY%$OfD2Mib!kzp^tOIZd^1ReXM;`QmF-b+R!l9ce@Yo2hRG#59sc0pPlLZ zhr7|Nml977{1*9gEZT^8HO+_I(g7(3ywYf%-CVtXUE%&8$5W2zqB4Z+GhT0xpZ~3& zd=CR@IJwKGZ!bHAqR2=B27%Qm)YV48A2<%rd2QTnmg+SsKGW5wFQJ*kBMc_DBdY~! zhIYy9c-(WG_wwgM7WYOc&fQ?S8sk9r@ycwsJp(Tuaiz`K9HOs5cDM-&Ipr#t{q z9^HLEv;wqkw@W58lgaZZ3`hIbu(!L%OB^8@ALfTOjKw~!lyP7U`2nr6ySw{$@SGTo z&Yj-2H~9f6_KiS4gk(FP*31Xc4d$2ibkav^U{tQ<_49xDizs!>9@!3C*7DQ)H6Uk1 z%^7PETXizN#^X`GiuFb}ogD6&0ss9#^me>jfBxwM9%xfi%vxvr{g<`S4$XF(5+<2F zH}2>A?F<4#Kmwfep;d2%?Q&)P-w!>8sF9=??Nku&vt!TBs@7cpq zuvw@3@0qt)bGDX)$uMITG#ZaQBZP;+y?ipu7te71R+vzprfR+$gjqgK{OQ;nt`1L| z>2CM@ZqE5>#pac>=y>?F!6JXy?q}<#`>-=#x!rVkms-)3EBdE}6wb$E%s6-N{`UFv zCz|z;bH|ev6py&B3RpmG?~ilJH%9;=PZCQ!*V@AY=GR#jE^o=lQCdGOM|9cn;23IetG&v%B0ez9`%nL=S*ew-q^eMBk`k(1o!8rC z)-ecJ6v^^htuX60MTuR)FxCVnba^J%IjIIs#3Uve3R4y#1t}WTkdPS@hk2Wg4%{cp z<=NfhcEvHUO=EPqAcsl?0EX1aV`C>!(HP&M-Cd^usx5CbbE;L-AC2){F&ZAU`fH~~ z)Lv;j@RI#`f^RfUdVPEy*}2GV6pYoW(AjZ%NTU`6;70`b`~biMz-gbY`n%7|)u!L< znANu>xlI(oE4;1~W}n#qAp#}?-$N;enuJGJce0vo2VD(IpL})s-FGibxo2o9Q(jW+ zr)|rC?=OgsMZY^+P1h7$QfgHL23Fe{Rm0e@qwE>pe5q`*!tM4J#}qFnEwAnn04I+H zqYL5H2B|S3j3xxrEDKO;m30)KFw9)NC7Pykexp(|=tqGsLEq_`BouUn+^u8NJq+lx}I+H#n4$gEmac;}7& zoSU%LZqtRZ`wXC6r=`!wkamO`_0K>on6gY;5Jj)#`5Nhxc12=AS?5n=E(}mSUvXrh zEH=Z2_>j6PRz~GUabnJ7y>yj#B)z{+a{TFaqWKaFwmCA+-@Lp&`_*r*%I#4v)>@Prd#)i<^33#F$LmGPi-ax&7pc}sIgY#ET@q4&{z zX4Y{#Uoaw$7BD|%w67PVm}8_1_+Ez>!-gTwZE?8mc1hvm+Afe@y=rtlg!0W=4GoAo z@|147Mt+8;tYA{VWMe6pU)2Z;H6-L+4XND}ix)RM2imZ)p({`m(bal?Js*=J5o!Ll z?fG`%BS+|`4&X}B(ryx`W{O_ifqlVK+tOrq8;Y9<#TJBMi&+-nu#_gUE_6<9G3Z&7 z6r{Zu5pUe~HEVRL#Go6Jz3DwGC1NG(DIHLDs6ECxJbs;$W}KVjwh~4Su@Jr+o`QDA z_xt;ysu7U~Y?GrJ=?>&FuODx}c@O zeH`yree@_TlSIFz%E55yp1pk0D1Py|T8@ zlQAMJJf&4@$dXrSI+=0ROFSc{67&H~!trjkI&f&147#W?!wBtBvnml&CA6j?LY2eSi)au?g=502G*%$^oNxj1|S{A3yB@i(w4-o z57xqXmH_v-(&`1R{_=*!TtP^(4!u~|)7vzBbxu`|d2+g#v@cJvazsXA$JTF3s(p1W zGn+(32Dhmj&Yu??A%>IHzCUqwUL&4o_!O0kO>h_;k?csD4y}pLaFS2mcHYzRk}#E# zi56H4lBCNQBC{D4KU0wRz;c`wt(?|S}< zmVj2}HCdD0SVLFUPyiRS%N^6)M|@r#>ca}uSgLQ`;e<-;(5E7_>Jh+Hbrb`BWbtM7 zWU<^3^sp%dgf$QwSWtqxCeQm3gmoIvC-zjw9c;q4<(4H>^vr6G_}&rDr5&wX{W%{I z$DB;&YqRR|(f}!rCpK|)z1qxKHO?QO#_1H*ZFCoj&iWy3H9LMV=FQo5`@$>uBk7T# zzLx+-2EoHmb1_7-w?3@o&5t8Avx9xF9j&QW_Ciq@&48e$8IcP5{# zZyMb$X#g)Zo8#3C&50FT9PwiIc;o$+;+tM?-n1_+B}NV1PWiirX8Tc|Dz($-bCSr* z_i?`CP&d`NJzZ5TYr2d~)VjltD7EB(uge{G6e~WG+F-(Q#^_PWk1f@8Nab|Ui%nWpq4N4n3@eHs zn;u0;&0EYzWP9Q+W)Rke!+>^MM@-V%h2UJhRrFHX>x)LlYbXif(BLr|+daH@qxPF( ztAQARQ)ADEqB!m)bLbA6eFpHv0F5UU8}y|;y(W(O_#JQ}UR{K_5pHHXI(~zvhvf=D zG$d1i{iD^tcI-V@T}rr%Fi3#|sM1wAfCLBQlWwU4((-;*t_3)LpY>N~?SUu{=(uP> zzpM5pD9O7vsBCf$qpn4tbhEvDeWTY3fBa5C+33aPI$L#nkdF!#H{5ZDXwILK1-j}v z3+Tuywh=o~#Y`tFzb+Bx4d4pU*mIMyeAzrfGgOH^IEF_Ms-y)69GRnW##rTc$(y__ zI+{=@)9q=r4MDiPC^b)|b;dwe*K4AcjC3%-rG|1%5jU{APOEVChE=Bl`rWK6J zre@i zCcV+>an1i0v&+ijHLZ5SfZC{_Kt74sZgc(uFXScp^aMKt3?-Icef_OY|B`es&tIA; z!~4bYIC0Iv*w$4t!d^6A!Ke2OMX&}l^KQ$Nrd6u4YGlf|UYVHbKK=FR^&cMZ@_ZpF zw1@keHiLwj_P2{N2ZnYB)UqFHa(BLGADPMh&BJ;)o19%n695S(q;k;H^>NI$+Yi{Q z)7xK=*kW)ps{T^+tJQOH*kQ_vEKDdhT2ZeBDQ3C4X^ad%VXN}|Fz*jR^F&10=O>a_ zy&DNC{!o^~t`@;#TUrtYhEdO{3)J7aZbP&S3F#4iN|TJ`%M$HKr^P}A5@Z`utROUQ zcuH2TbxZcrfzy#u)i|fz$xA7ysu9*oXo0ps$+}5y&nY)dpA7N{$X?Cq2f9s9P^hDk zn4icxu7$Nr61H?#nx!Mtx(ug=t4kc*x*8nu*X7^0Y&`0}K~$8i&pL|&1O|9ZH)Tirb+ zS{$AZ(>!b2RN=GU{iis5*iUBZKzLDdU}lcs@EcA~>L8IdJU3oVe1ay)_Au(%?d0o! zIK&7*|sOhhBU> zwkUx|)Pp>vdL0sFt{9J5#h>VeKm`$53=IO{V1q!<@ao4|t8my8eDS>c@{f{y^WsdN?GlDyqmReceD%z~9g}3{O{+ajLHx_Nr_@xj z`R#?IasR5nvEHpGnOGk8tT9Q4iNC%Zfn-^I-kITKGBPIL({=xsKW}r4kaiE~diH@Yai{g$X)ysyF%tf1Q%b$M!vPL2dnIkLq zmf9O*dd$TuCT^oKfj_HLyfDJWoEHZ2&;IoA;r$^s8YW41kSd!{6I&fW!;G>XbeG># zvij>h{mU)xy2&((4v(O^hl42$@ZHWAFdapaTH_1WthcRZ%e;E==CW+IWgE3C#5Tj^ zRF{Fcw`I0N!w?#DZ)DsvM$b}eEj0QF_Q0nyhaEK#tGwNnb)C4@5(V@)Jbb@Rg zh9sBi)l7F{qg84aE7zB#wCSmEK->oX<8suGxzh!*8FYQ63yvK#%RLuFt5~^uQIl>& zOYKzKw?|L`(Pm&JRDbgIyLGmnP5F6{O33ru0|?2-=Y8It%^J-#pKU`)U-X3Q3vcIk zVtN$wQ6DO?J)$PrZV_DHH_kH-QfBa*USV9c{GAUiDJzPJl zOewd4$vBPDm7W_?iy04<54~N#{elnz?j5UOpq(4?3KsqV^uatlnJ<0*z?z30Kr)W3 zm>bu_yP4gY&)wlJftYTc-pZyH(6|x=TCI)quU}nMYWk_k4kSUhiTOJ)G+v8?BUyVKP<`Eaom_~X4 zQp6FPLg}(#jyk2@9F_KR!{NZyMgHxn2O0J-D79}tAD{2jyN96IY{}KLX0sw#_Jzfe z4tdU;-P)(6f6pE6>25fkEs%i&d)=`&W0#iBNI%YoB$$^m)Fuw-((E~uG+?VScefj9 zG~^kE{b>3ANCNLoDW5sQxj4uOha@Q4dER~XRny{mK7+<@T)b}g#u+HNGPlFU#t=#` zw4KY@+z+QCr)x^<=K=dQhl|#5FBTS})B5dlC^y@7Y_~$D zXfP1UXHpW&Zc2-}O#=E9Y9ghR54eSI2zc#29~QWiR(R?lEZE#i2%OlxZockWqS+`( zLEde_3&HJzg<0)dmoIO+T@y{)eAcp8_fLQQ-pij_wXkKnirOl>PVr52*x;I&y3;=& z7rD3jbU+>(14+(7<}u;F{rh3si*`?+KI{*hJaecrE>3bmlt3pi8*&v?DQHYX*5>GO zZ+rG?B8!6u0v$o8Y0Z1}^!>bD9Imdu7KQ-1_;sXS<+VA@(d5t^PvOqk13%f$yr6Hp zR5X*>jJcfFNrw4}8|1M8qe&c0PE4?9x_q3Wriegfa(#z(Z% z1Af~U$)}&7lsboN7|2LDNT^^*YoJKSnW16V+JDZwZZV;Nh-z*sEXZ!hbghQJSB!&4cFt_Dq z%_k>XWRt(WpFXa$*-*JSKX1kl&(F7R-97&BWv*&IcS1!)z!Pu5WTll?reX%LC=28H4;VX*3#@>UfujohxpN!N^v4hdj<2B^Kl$43hM_|T0vH|5s_ z#^FNHx|C**+)G=V)zCE5U=n(8AtTlErr=M^cJaD$RS?CNH=?lH3+WxTWkCwVbeU)k zoBKsX>b6`@wOx|ZgQFzHSK(18z_56r8#0>|@2 zJS%(qxS&RrVyS2v?RKB#SOfq!inRu@(;@J6cu&jJUT)X>rCC26*x%hn#&85fYV2#& zd?{~F8NUOg*+b??JB7<{N~c&N58VZOK`R_54K~e(zez3@L}3DP$QCLQulXM%?DlhErEUNsOa8qVip>vB$bS`+tvwX1X7_(+e<7~G`4^4Fl~=# zr*z4~fvwv9@Hn4M*DIbN9d8(&S4DxP1@M<{PnXgIbj1DU_VZs>TvXV|&ks!cPL*%2 zu+tT7ZLO-_r{}zrP|<8NZj6c9_e2N68VM{{RNZ(!;dI6DU{t^CENM3P!O%%6XNypg zrJ(?pRJhS_WjB1b)G6l&j^64LGJZ0`zdB zknz=ri}(r!xYf|%IeJ#(Ts8>Z2W@KrNCj>~4-TbqQ91ef0KAn;8mI^OkI-+2%OCD} zqO)5x)JEt^L663!q1@Chmd#70a#^^pR0P#02X&ZQ>;PLZTi}htRZ?nTlUU657Z3OS zs^}%@3Gy8>&5)M+PTS`(&M6y3Q#NQ{GZnUU;kwGez-qRa$JpX{3+s0~pM8%*F_~=d zws5#=9schXBh>63j?QeH>tZyR-adR<48Q-|8WtnCs&Gve#csnVa9d3K0^5+p_=)2d z(ws$C2(pWR_~IG{I?CJK%?{gpBu?D=TAi_1m`v2I;1v*2`=n83shvMru1_n$Bd4;5Z0k z;YO6CA`$hT9Nq)fVhZ#w+(-W0{3=7e>8aC8P*QMv2$TT+DTes}e|{h^^6n!CRnqBzQ)h>#=^`~it;+DqGCnPXeD~?|hcEA+r+SjV z{+U7umO380XP)_!A%m)Jh=Xh$2(urKi&FtHWQjbKuFLIt3VLKhg|gAGV`DZaECVz! z&p@s^*_TIu{o!3ylT60d*&R} zyp3uNBUsOV+t7`MQeA#4|Nb6SeBq{dMG&4juC?Ql;^vX@)`dY5n zv~rLUpQmnA`Q2NEc@bsjb)ZNUDeiZ%O5+1l!12N!V4VZW-=6Y>Ni)kuI5_B55u~rF zmPAsmSST`_NCyMg#48&0P4UfZk({hg^&ecaJDiTGn`JP(#SZdz2wtS7r5J08x%Y4lN9u7EsyUydsDBQAm&H9pj`a4jwrg2LY&Sn*t z^R(@=At0cDH_mC@oLy7JbnEBp96X4sal{LUAA{c)bX$*X1q?ZrMn8t6B1D^2Pp?Vz z=LZ;T&wj5(jf3}`BW26zn{HNTx+ph0Zq$^>U)cePepFcdnV>-l@-p35+0jf=f^zm|o#2(jx z2M8o^gb`VMS_$($i2S5grq4T@Eg6c?zaeMWm2J7+OG7uvhug=)@%=H9tu;ylA8&nr zI!lZRS1E!ky{WIbwo%a@&!&l!CQ4`cVZ$&WpObCUD=jF=UGQp6H}iC27(<{g^9`nx z6xO~bSDMvt8>~gUF3)smeX3G#ut`Y1`aSz9Y<6{P6C3n2S-m4EAF%SQ>B9`5EA#HR zZl=MedHb@WcPdq}Dmp~@Wf_c4*i{>sUvm=+{Z*82Bw2rhIoNE*LS+SVIe`#VTve;L9)GFXZ;|?MxtZEqC}&%rDnNk zBPB7&8Hkr4%MDS7W6>5>&F$2x#rA32J`DMbG!@U%t9oE{Pb;_4*c>Ag?9}{N?XaGk zfcokRY8=pq(Xx5E0#i!!9ZEm(apr(%575^;-QL|4;*6GHmy2it%;q77sgB*9pn(UG zNpJ_`F084pF}!2|%|80K^~h(IOs=5X_M004^Rb1!Yl z)90sqOo+>FN=k%ZBCpntJ>F1Eb5*>1_3L0l=tQoai4>TOfB?X8&*@l=#>?GZ*lx(c zl5fg_u3Jc>7W58BbN&a5&8Or3-EKm$OY4tVU;t6{8?tQbzxk7Dp5koqT7is(DA#+0 zG3P*2vIQ&#A}g~^QjsAfa0u0i)U*YD^qSy@9Fo~t*9yQ3B*)DjF{K!eDeEUjb>tRr z_?EUcm)(s=Mnwhj$hys=@DRejL^M7cjfP^iRg)n6*``n}izX014GI}nQPMnDfX?m1&| zxQDLH#`hNZ`Ptck4aNQ6{_?Oz`%TF`jxc$$J++YujAx_8atxZzcL$?%xw>EXr{G8M zRfQ2t`;H$kANEt7*KAS7vNbl<=2@$Ya8C8Qv*)K=S32gDR(7Lu_4?YfMN&v3U5xW= z#DR-AnaxsT{`~HN-JT=1nTxofDaSEbfw%16=a#o9B5J&B20i4BQCtwd(CgYs}^o5rxh~CX#9v$yOhr`r`xwRY$9AhygHUKrW94R6Pj&NaD%KXdoPy=|WCJ~Rxn-N$!x zM&{k}wL0vxoo_d9$~Y!mj{LZKyxNVd8nbrc`bJP*6|iW#s-I~s{uKd2pHk%t-m~fY z=>R^k`<>umWpulJ7+rx-=ln;X)Y8mSfoMfKcG7&ip_T<$zpEQ@U@0kHcvN5^Lm__u z!-2!8BfB33Qbh}Z>6TRhDV{+fi)OLq1g)~s^V?$e`eozmx~A0Lz7`yBJZuncbd`2n zv^`j37+CzSr#G5Xx!#iN#ZtXexGB>uDO9WwgrO~cdwo+Zd|U5=dJ)aP>RmeV33&nnS3m)Axx~G(C%v-x)rx zlL%0)Yb8;J-JTr|{!O>_LYPzfXS>y8gXTy#;XFLtGqxpFE%CwVZJ$o14S(RD)%<+% z@ynpaplPu>-rlZTL0qX#Gs0qAN%~8=B$(GmkeHn)TOE#6d05JW@y<`Igu4xt#I9KI zQRXsOYL>6+eWU4$dQBi*Bh~AI=e{Ufme^(}m;kfk5QRp8E$s<**Y@x7V7%T>(mCM) z062%PeKLZE{M>m8+DemXqQ)6J;jfT~q$bw8IGn>`Y+T^Z>rpd=w`mHNqnJ)Z;I))2 z$^EeCMb^uQFzOJ>0jU{)Ofjk|p6f>I?b*w3e(}$L_~uu?Jk#OZPSEsJs&&PX#SXk& zmzjYn0HH>o^ROsPqVP(pLwR3qKZL$t!YPq14cZ|jF#&-Ub@@ra8&nCYAnqjmU( zp0XJacZ2x{v;6k!3NH7IML8v@xQKh5$X>;;`jQV&-X8V^wX`D8!q z`%^vx-=1S59#4)lSCRSSEQLT(g-C{jlT47e6T^9U(A)i}sRw|b=lzH0Dd^8xK7mw` z2BA_gDYWA0>clz0O%C;}r-5W8%g>+hj!zGV1y{J$GTQ(apkz>`X3I}ok%g9iS!CI7 z@Ne315(cBM-4VC?UM`}otBES6o>$ku7*?<1!AFj<#8*Erp?6glV3&;z&g&ZEkR#UE?av^Q8 zCP=zNWr>(jwGuup#|MN_16~i|+*Ei;nR+lqvNju|Bk3XMAlSp6A&&MZo5L*XZw@tq z$vt~`vKgFphM9N$+cUlP_FS^3gX?-Q#Xra^y51}+F0Vh1<|B(HJ2b`KAPZV&Z^ZOr z63>C`Tco{>XfwAvX@V)QFtX}3hjP?lnW`J0ZQ<_+jMK-t&StYq%X}IGB*a|lOi|33B z|5am(3d`;F!E&^4+O<_i-NkCCRND-^`d|K^|FLJ)k6Os@eUT3O2@PaW97MdhGm0ohYn%OA*u}oWgzs) zdPZbf98w;o!sUx^USIxBNkpk@%UZJn;Eqiqn<4@au5a|CmQ=eIbxCe;0cMHrSauyT z#VijNhb5J#dU2A7FDj-|Ru~%+UO`4qnb3s>F_~|-1D=#AgeteIH=JW05)92XkBSB4LU+qMTRIj$#yi8Jlh|J}j z7U%8cVSB$Fgy2yoF#yOOr}IuntTyCY({{N=wrgB0y7^{5#B)9hS1kM8yjKn5pjDG^ zu1YFNKduS*DM*QuMy!CF|Ng`AFqz%*7&pM}ngQi7ZUKaud(LppGm8r{)@{C;EXg{j zWqU_OJmLqM;gQEePNcCKFQ^@#$rQ~NmLDn|Efxv+z^B(l+`x1gNz;bzhjLTbm2#-$okQ_?$ilH)WPOqG~BEcQs6Wkt+qL zYSpmoH%;UTkl7^P&_KCjDwH}NTT;aIlVlOfT*wX+`o8|C)6LxRZQpebjBTU&PWRUp~yD$v%s+we3n`@x~Huk`LrqI%uzr1fi!5;8$|f zeu4?@ue&_ak>KfEXSo0MTpVZAk7m(;UJuX=ZrCsl23#8$XzHDoP=$(wRD8=fA8e=I zA2I^AnAG_Ub>Ync5kEOzfg%qb#h%Ri1cSOkqvg4_a@{D^F3-=;8?wUnx=?qa(x@$Z z=k;ubf;}Omfy+*4z{=naygyFaF)=UD=R+lm!sIaUGvq5?vx(lP(@koiKgPUw`gm>MohS>3k9`F;-5|F5n?OpAU8;-$O`I{`DfC{fL)x}0 zi(EtHhL_fgOc7$aqntN`JC~JM9oMltns(jsjNM#QPPYSeXJe%nreK@Kxa%dkmG)iklE?q+3670LW-QdF z??*6*oNSGum@h!usndWrXpKxx&_|Y=y3iyEH@wTR(GvPlb(iKET5bo_GYCEm(31`8 zOGkHo4&-y%VASf_@VOCQ1Q<*X<>_LjMESEWbkx_vkhQ$nvLUoz3pbZ4)HWV?TAK

O2`n0(?s87M=1yjq55&$1;$YYloA)UTgfD!=8!R#L56c+^(m~9Sl(Fx9imol`BE?(SX1|muAbjQjBPX(Dhdo zftHl`3IP{!H&~#iGNM#*6u59`-{6gXcY%x7{-odb)>m z)?LIiXNdOVYPyxsQ8;9 zfg6mw2?=AWa)blAY2LYNpDgT#$*)|knC9q2Lx^!Hy6sw5leB*hDY|&gy4aTL4fO4! z&e^wLzx?`lzxnNNzq=?jZLQuA1dNs_oHrZnkk*ix6-*uFN?C>igpuaWRkJAvGZ2kK z`9`ccai>+IA0493n*`hn5H|Vv`0Q~EzeyP}eh(Kj|Kt)LBt6gRRF%`wcGTU!TfKWq z8ZF4LS;~crOR!@jE@D=Cb3MFgbeHAp?Sgo)tqNgJ((@IWP~T$)sZn^GTOGh@>&V70kl&pZHcl^O_21?=KVda*%(Muq^l7S{b zK;(hVm7~*VPUiKE;zdnqs?L2nu(MSWjS@(d{`}xfH}gOV-;~`}*|@Ax`qW+9+0PRLvMG za!%`OHtmHG3*#VL_nD`io}3*eVFTKmCH`teOo)~Mw!`IN0U$8))A{}5d>G`LCDT0q z&G9bLIrN;ME7kh@-Rii3Gq*Z5z$KHDkAL@U2=gCPVQjGHd^g7p$EJ642#H=>h?x6$ zut*f_Hzb7n;Cbh;Kl9ytUWcP>m_|mnS?vys;f^G8XMH;{m4Pqn;UMF&+HX^JveMndbV`@k^B7?@II&H7wp@uG<|c%t>4)z>9S^JJmO?gWA8HSp-kXICVtj78 zr*d;Xnx29~97^1G+nlxXh1ayk_M>qHNI1w|n2g z&>e7~1mA*-;Vowq?u96}G!zlO%exTG3+m3BViJ@k#qB#DL+Ik`uYUGVU;Xx6E<+w~ z77HZNs)ceLwx4CU#qwoMGEjEBx=?I4kL84V+nL*a5~o$r#728B9Ug5qHnG8>mOq37OQvyvL{BTTsLCfN&8oPy3ubF{Y9( z7<81=z47CIL2EXTgWpHTofZVEeu)HaXoJb1hwBMA0Q3=5<&B7bBg`?gPsaDb$yS{7)n$6a8G@Iv}yTGRS z8FmzmJzD)d`*Zeo|NkB5u)H!@7au>Zh!ZX!Ki;k$KK%8k&+mw=Q~OH8ASA{y3EK*V z2Ab$?uI%#|Oc4i?Y`@t)uejR>*8Q@#f0%U>3nID5mYYOO*m!wflEKH0fS+s*vpIPb zP&m^;JC5F7&5pLm;Map_{|vsqH#!kaMu*I$%O1FD*Tb^|1QnMhZOA_J9Bvk~;V&dqg$`jc)tmFj7Sj*FwuDk8R| z^Rjzt!3o^=9nN}hi=~TVfpXoe8`1T!5x@EUtFQjsA1^O{f77>hy$2$PoyOIhrrMHa zv7*-AoL$u}URN)zbbdQ*RduOe!n9ox>#sZ0jGbUU?0e2|7FwgUesf)xLtl`a5n<%W zs|ci1!C>WmpJS(SRX+W#m3ZR!@9s0+{OkKQiV!!Tgwl;E&C$8N`pyO)dSwr0YAs3= zkgA#=5l}&YEu3{e%p1|aA2K!BEkp0IYH&pRH!I zBWPBKvY|`0t8ZVhT88c*360Xl>tY>XeFISeB`~>MksGgm^Na85Ekq!lgs5zTjQ-n7 zOKu7h(5L3j>p#7|xC8^XKvL?s4N@Z5U99Sv=a=5RD)ChrawlXz2%3an)yexyjPB${ zth?DXwE#wXb7Gb4tC~#amH8qle|VHoE>{C+z2jx5vqs}$O-@CZC`!5In$)>ea`II% z+dsWG=TCQ{jzbA+_6d}TZV{X#U+MvFHL`s9{QW25_oNG=j)hcu`uxDfEqj9b{o`Ki zEvMhVM>)`v3HQwrYe&cq+aYVS@dCwakdCTv%%PurxRZGdz%_!KO)YFZNGZWn1q^1i zxfzYA-eClmw{6nTgeQ`WHn(YZcz&G3Bht80y6d)RnQWgw?QmEn zDKaguUtbjk=B5>``Sz?{FN$ipCRA#5sVLBo8dfiei3G$JyKre+mv7#_E|ev`C9#^Q zf%}xirrRBDamj?to>h)jI8Jm|`2DYc|Eloq^paDiq|!P8zvMZ%*Rj!lJq`z zEOWZ+_2%$cI+dF%Y@^lJ7@Bh^av@iH8y; za8^t^y~X_`M|2cg`e?p~wL*a)0A|=f{@dR^fBHCLuQ_xHJRXj>W3JinKK}IMm)mZ( zn0HrcdC9P8>oiLWJzuGSq9}H6~h7 zkpyRWoR1#fpWN-t!zz+)2*&Xlpb%N9ujXO)?UVzy^Hu;2ebF*d7f{%Vnuxv53b46TyvZ|LQ#OgcjN7yQfdP zTVfQ%o7eE>NyLSdyBQ@)ZW-hL_QNwn+$qzn>9{{-yfB%q9zK8m>tCMk@7ANm=l}lG zGvGc&Ruh!M9298f-#3o{t@ZwobVQ z{)geich^9nOBLz>G?&YE`?4xZP9!&4=D;Jq>Uyn4yLx`}_Kz=0CiPv2lUk_^$Crv6 zT&u}M7n^VO1W^*r;CdC1WZ~PYp}1Dts8#igUtfwSbA|o!9&}b`jfPR2nL+*_1JzQEA4iDApwHBytb3P1G!H9@}4uw`rpZfo1#j{`ioP z;_WTR0D(_InDIR7S_<^VIDH~aj&3FA4+AIqVLKR1_{G0ptsfuu_w()l{J)>}6SY!1 z;VIA?S^I(5`}zNB?MSs@WhdI0$EU6}9qnupF);J%#=w`a&R*X@p|+w<5-G0V=Bf}m zywBil8(kZSJfGatZW)XVcAtocXd4gYa`HL!{CNlq9*c)xM}?2zrL1h3h{XyurWm2>1sM(%x3dNM+w{K zE%A&61{zQaStj{XvnhJ&SO1$j8#t zF9tfF^2iyS8XTM3kOd?6Zg=qhNa||CyRV;bvkU?{M8)I%B&Bu#oK61y$91~unlOX8 z)tcA`2U`6b@pkAn+gy)4Ed^VYjaY<(w=pDE^hR&!{NcjW&ac20g*}eiVbUStk#MHv zTj#a|r%=$?HoIgfY_+2B1>kgr7LKxS&OCg*V!TH`y4&@%WER9sxTMq4xsr3i=yJjI z0r4v2ELtaf8Ji8rU7}7FYB`NeAs)4gT=1*4;&+V0b_Bz z>P5k9Ue<5U>UK}4ddkK^OMDnPixlL>2Xp`}`Mc5e2Exw)Ibh!;G@wz`ELpwc< zN#f<666pGNxrjJZTfo%w!#159=NOWvtNp{&4T<2#f>X6tzUFQ2yA0K3!@@+-Mn zk5vf<bjaI5&TXa3ZV({%btB;&K?erI z8|ZfV##Gu-pwpC44AMO8teMq(*pkO!pOP=~6RKjF4d+aCPi3R~P3#PItIfdO!v^TU z1EYU=bIEFn4FW?G;aW7EzTb~-=(a;+pyjT0m`Apiv8mXaa{bNgum9;!7iiK3UYnXn zTPrd!P`)nf>=0GC{I;M21`o+(-_(RsrCF9Ou~y?2d2@c%)RodzN4qM!bI(j!Ydfa; z`lfO5r?(R6Io7X`It-5}Z>#g-XFvbnfBv>|i8@UL02K!VLsf&jnUBCOEnU=9vHAu_ z9?Vg85lD|HlFrBL$)B#id98$ar=x}f(5)pwZFhXVTs{+UozaZmKV>ztW7E)!=zXW$ z%YxZqaeuejoPY^!2KU~0iupL_mO$+>oUF$L@nD$bpo>yo_@suQOAz-QPNySohjBM+ofPB^z)|(jn^v(c>kl*{j`AaHR`9# zP+0CxC`Atgi=TAU#8Jl74rDlh<`xS9-@HP=G}asKBszcdhyUZdVm(Woh~1B*b)Bo= z&-bm`mFAuFZPnktuGQ;qy(CmGtEC&muU+1hs8kl}mDj&{S*TYF1{d9d-|QeeAS|PO z_qFPR+^U~no!1OtaUOSSHdU|w+i!pV&u8t68p%Bf+6`*s9qF3vj z@OU3p6=vLqaHg}-t)9z`v!?FiNd;t6QyiuW?dvxRU>8f#%H7TS{wberAV$>3GXhP! zAWv%Z&riq1#5EAB&}r>}3&&u;g3LUkc+1L%i`Vk5Zw2YV8f6m-MizA{f*#ydMyvbB zec$baoNQN-tR@ax0uP0hr9i3IRv9~gle!Gkdc6oNOoK`qWtM;fl8&9 zoscVO`uuU9&G>`af*@gs7&#W$`#VG+VMkld^Y5BM9T|%tD|ngSUMIJi8?IR?oPnuV z#QaW?&fn6*sgiY5pIGJt&>J+x^hlm3srQQO_uNy z9*m-*3$Ommw?yfhktINX@pU;?i`;XVN1C0>%ci6q=?zsz_xXT2J&^@CJghF(GiJsy zz=!*xH`>i2mH&T^-m6)X z^*pcqB{QMRQN-L(BIQT|5O8e!?(KJZU+KN8tgOt+^4@RX_Bap#A&?4s?6_u-{)DYy}zBbs|iNLn^BLQ75*146$%PGasIGMZEv;+Vm21GxqZYN z%x;K>D1?{pXg$&8(GBdo<#A2`l;q~&{eth{U#X5Icfv2b1wEZ^!YI_bj#NC)U1rFo z>T)0HTYzbLi-Lrf~J` zw<36^(|4ZNxHe*PQwoMwzz!{0sS7eN0$WtUi5aGP_O>qPPdN+oh^Llk2%PDf)VPkg z#0?Ro`P#2TJKb17p=Z;URLh@z^;Yur_8>3#=*SEFK5CT{Su12qh4YhwVuX5~%|*zl zWzg>i6e`A3#7v`6JVphzyWKj~Xxu{YZkVzixqXaJn3FK3jZ?`>7awl97e~_a#!))` z<;aDW!*-rA3`s~r`9LI+a5Nb@VlwWH(@<%)(s(pYfj`R@;0piyZ$Z>gZ`Q5pjDg~K z$7l)cCAoCs!y&G;BL;De@CZx{A&yQ9B!{b4*FWs|(#IZ z1eagw@CY?&dtWgkYzw(+vr4QraukbjVO43c4XKywbY2(N0}>n+Bd5N^I~+8%Hks!PuB?x_Q2^03)Q z;{*8}AK*3p;L&^r&YDNB(=(7DP+j8X8RC*>*f)68Uir%@4^Rn8o445C&&l+2edi=b z(8mK}&|{W1Km^5qi{ngBDn*YU79Tgu{s_fg+jo=YjbGe7wR-m}1_m5KAouh_4)%^U zBnw7rj=OU>{=^=43X+cbOxdPmg&T`^igQM6n{DzXLvoIO4!y^YTeWvd=XS1_MWLzv z=NI3-y2`rXJKBk$gy5tBd@oe<=zGmaaC1|S+Rb7VOZIcSkHnk43voP_i~3nK zoO6tMoI(y6Pe5eI?0iX*EUE=o-o^*o*087~NI5g0J9QFf;t=7mk z=eGdbsM)u>tHT&6823ciVdESqF7{oo&tiViPB>h*v~=uQU0(Xr)ppQCm#j6^|N7nU zzIpNdd8PKY#`-g|!bTSTH~0B+gCk<*nwN80=OC&A+=b5i;_U?xm+Ph?f`^;|-%e~9 z8my&zYUTRtYpJG(y*BU?`ZVRdZq#c!M;ta(HFwC;PbSV~h7%^udPE$o*HR;nNKosc z!ZsC*yo~p(en9qFkgwjn=}i@rgC8Xl!#rY1qp0BqJ)+K(6j8Hx26GG?&iL^02^SJj zAz~gH4z5l}&=KPhi7|GvY_nUM{q$jXe^`w={kz-5THQZzggS zfwb4Lu%1DCvN?*&8qbmjA1Gg!LV|PcX#RM=*?;86-GL_Bv*Sns6xYm^iw*qY$LB9o zE5}4>6py=$+Xu6m?uT-682ep4`O}|&_-XU-m(A?QNo%_r&Bj2$q$Vnu`?O&Uh6t}& z98dNUgNzXt?zUkW(g5w?h>%X$?=0AhB|vxDrhSB4PI|td;6wd@5tIJ|CGe6WqtbXIHz-mRSQ3E*3S1GOOL_TmLma@f)T>OV;SAqfEPNA6$S&b!Wqj)N{ zrJ8EWvgo#tb#$KUtl7BMn!YN!y$J{c>IlBa>y+gm=uDtW9`0~59AiK~_F&1Q-XY^` zQ-L)3Lrb}A4w^6ZLNBpN)iyn{nsoJf^4MOt8;2pL46Q!h6W~>h{_1|ml4ZUfPq8%w zT-gPtzR-6~DF`$PP_tzAZ&$M=wWf5q-tK`!fBF6A{qAAyxy#!}cGnGi5SAJ4;QF2& zyIw%vJdBQcjw&*QC%8{K=TD*g>C@A!KZe6ph!PF~)H`iFu(YRGvB|8|sm{pdDu9*` zcZbC+)^|TI!7LDsoZfx;{Ntb3v!DOCag1O!jr!=oqM1LwS?@P(KBWOalWJ!N9~@pP zmtroajs=#fOAs$!->iVUExIFq)dPY#)J12m;VnNN+kJzO`{ua&yMO!d-)6pk`|jI} z>=lb=+M-jrwzvey^{b0q7TbhnR4P@V+8!n0lKAQbY^+{yij^X-ZgdHitCM#%+bF}s zE;mEinykNJUCt5hfBwUYn;cuO)#|7J`9J@#>d*hzpVMS|ocHqQ0Y84TgX=X)`Y=?HLTq=ukZJ31 zO-pC48V*Ot%!a-F$TS}l&2je#yH;*U-jKa#v_WtdBwQBj;6s1=Z~x}f&VKdoyMk|I zt5O?#p&$y4yea3ih~o^+#g|fec^!OmDpzWl$<}K{;2-=?R?iu_KBZT0W!uS=9jS)S z84noy48v(&sEmi(HV78#YK$sen0zENJ0a-0(s@?q{9E$JHp|N@mE!T#YUHcB=g>k4 zF{m*iZ{#c*F`Iy*cTK7hs!pL!tInnl)9r9e&O_5Dv@o+gkXLNac>B@((} zu|yt8(k`{@4GzfFAch{@26f(+Zv!1Ii=$>~%m))ATUWZ_Az%eAOmsb4kyhE;2drD`Rcal*?>!{KmLzB;;r832ho@8~|u z!zNdM$_O3Yzm3HqvRMQ{dG9&QH&$HQo1bBAGBW|EmUq^dGqOz%H@dRlDnS_1#x&QOmjnsn7> z!Hpffn`HOM!z4gQd-zBWEb&$XP*L=S&0!>a?1y5KBTYQN&&)oa;>Z> zN$PFyo__lI$HU-XKUab2f0};Wji&cIA28Sy8RxF6iY3k`AvJ6(m}y?fnY&&UG{1Q%7>spoORN>MbR)=Q+2ArdQGi1O zs1?<+0pfbfQL15=VPQc&O9MF0-3ha8OL5r_2rVy4qwT}zRe1QJCt3L3(X0;_$EzRu zP;P?VRbYCZ%~);6!@G~S8|GhQRU}T3yQnmIi9+OZ@oSvC;FVp?N~OBNL&E0Jiak<2 z4)~*BvU~X9(=UJc;XZ9o4_#|`^M2;Iz1xW_lRPnMg&uY_vg@u2?lJKLQhwtvkKn_o z-$&iemtX$$?r7F5W*K#&Yt|()a$`+Gv7+CS*t6)sbF0kR)8rKCO#)U;pY?x#F|j`IQs7LakZh z_n4Pe$%tkchqD!ahFZSn7HS<>NSRa80z6lR;$^PDD7Z!ANf98|M1m$<;|G}`)_~)g z4u&ieCM~Hdlk)KOIwKU=W@-o+HGQ>Wl+r&6s1-MD(grXUq~sP&mV=pY zuuREH%?^M3BR)=hG`3o+-L{XIpdB>{EmHN6m~5=M+6OffVAEs7vG+vq0BAU2C2jH} z41(qMcI?jRca-{{rv}S%t=aH*kBej!@w4N$Rm5mHAPg;Do(Sy?9K*X=9C6W8>pqw5 z$pRlFzx11sU2m5^0(i*8sPPcwbUuhd0(g>e`RcUv=GXbEIq-GaXf|j&aap935t3c5 zl_<6wWzi5VGJTD+cU7G$N3FuIHPt1_j@vyRgXBsm)@8LhxL}SleAJ>4dT?ykdFNp& zQfW>$S(5oZxP@(uCf;a9kh493DReO#DDG?^8glxTQ6 z_q%i8a!jO5jm5z<6`PKTVaB&Wx9uO+TIaAh5;!_4O;uZt;ZQPOo0IzixHBH?@Vw~l z_04pB`|y7A@Zg5Z^{ffc-*-JHT}+k;P80B&)Po*w z?q=W(QeZcWVdH4B9(A2s$-pT(kMOM+dW?3%0qAD-r=LIF|FlO-F!dVqFQeIdHBWTs zc3}85`}T)~YYI$*&VB+IT3|oZ3aNpjNSWQPogzPBpO6hF zqaE5|41a(=v!V$opX?2@WAx&tI-NQq+)b7B8?{}@v=Q%h!`-|SM4_l9sOhIJHZ_PF zny$$NRY3fv2oy}LcWye}+&wMFOBCx|KH6RJ^hz^?h+ydMc14(O{Q!~nFtC+on9SBc zEXNQEKQ2fE1kCvYg+jAk)*SJ&&}tjx7{CVb#xd)e#_H3t1<36eAbLVIx+~Z9jvOq2 zdA0#)9)_w|&6yqaGQ%E2$97^`?bR>aV)XI7uJBZ_we|Z}vYb8chDSQ5ir7pujbwCL ziAOCca=>?z*d>FOwj^V|gjIGw@7yiia6V6Gw*~$GUS{C1&Gi~Bqli67#e0|}+lRi} z>mIB0frm*iA}NnS)@5642-mN_F9Utr9&SQO6CJa7ohjyl*p%z)U{F6R;MQ$P#VU+6 z7Z4hEGPzv0B`}MFzM@(Uf#gHYr@j(W&jS+-L7a{T$Aw}wFOl7oHU7g0bv3wiOlDQn zILgQ^rO&e34AC$p`+-ps;Ox0vLiI`oiIqdj5BE2Gum-%wCC26!nJZ1U3DO2QUyR|x zu~?h+2ZM)CAMQ4^&)al#7{+nX7R9q1;eh4ufBF2wHeNn%CzCw{KgxWZh9ZBx`t;+i ze-st37pjKk5174T48lTQ7P1Wv*esS}z1-*wHI=}-OELvI7~Fggrg9|= znrqe&(8p>)Q9$K*f{G#8PVW9PEzzZ(yZs-2Kad@!F1z&|(F_H=LgV>sD!+I4Y354R zln5Fv?-jQ}9%M|cZrkJPv+J!s@QcWG{`-Hgmsiv+WXC}OpZZd=pWprfL-}YUiFq~v zuSyZnw#gX`5t#$2(BTG*n0WXFRv4w+MOm!nFS7E)GVEg&06nLtA?M&WMg!7N8lu9v zmadCkFDa}~E$vE1Xhe*^)$hYu1*@#lgcpQN9z+kT(I%jz7KJcXB&gN6I?KPgM1Ek} zh6LWCzdy8vya>0|YaFF9)ka-CCIanXyrStb+pmVU%o~6~lOz;0Z!iL=+or)6>7?J5 ztMTo7vgCFnINbML)@&u2VU^vh41fG-yL?jI>3Z3l-pq#&Q`BL$9fS1r()GP^04=&GGrB)WMFB)PmB+dvvrR9zL zo+8_V$7KNvmtZwbS@J0twXsp(-Y*aPIUUQ2)hd^&C7F6F2&2IS!wXyYYPjy0qooRO zyT(B;2};>gRa47V{(#B0ueT=8d^Eo|4~IcSd1^3q1~)fdgxrU_&wKH84n8K;hze=R zAeb^ShoNfmJ@?4~1*+xt=ls#alp>n%w|$`wIqc)dkcRRyRP*^7Zf(F^p3oV%gj3)_ z>nhH`jdPlO>^3Iv|Cz=pw=^-{0O!|Uzqz_PZ;lyUVQEt8baDxwO>Q=09y-ze0SXLb zPNrr$p&X(Cqks8-{=c4iZ`VjQr$LX)NoRGpJVq$(HfL5Vg}Ved3Iy0Ms|Ni8(hs)km?{fv*8;Z>6FdaR&J9AZx&2mm z`}tuVW4&OVO==z8Q1JLT?hIBb=k%eZs-;@-Sz)BLM^?1TK+%Ejl^9=_Ovi|^(Hl87!--#6 z!`tEd!-uE&-awKD#aI=JZy0`F8fsBxObK+-i42V;N&he%Ey=sj7lYM9I$X$RwbU7s zX$`#9fBP)7R?r1}0!9P+F{GjUNA@G{H&9g_rGS^`cFY-RGat=SSGD4f1t61?`rtl2 zlPwfAHoZu4S*F_}N6cv_$epB1OJUa#YlT81>h~hdNiAPBxmSC&HW@d^)%@u!?)I@$ zVrBtj4N`mXI9q%;QtXF`Pqn0`2~~%DN~=RIACsk17vVl|0Kzp)MYw((JV-LK7>?p9 zH0Uuk!QI`*b!Rmuz`}E_A!FHoaNv^>Vqz91tG$&Q9JaQ*016t$Oa7+h59CG&S;9zm znmPGXs_hmG3u0@qB^FB$h`Vez8q(_uGsD09NM*aT-LDY)4DRnBx~Z9yYy-LGDejBV zqWKJj41nNrJ-5}t`$ev`*bL|y@hHNVE0J`m)PYLH{Pn1YCajqgD$gEyp~F7re3H)u zbEwCeXK(Z8e_!eszbP8L=YyNOXs{xiFkE7Y8bwu)l4kUDfA@Zljj;N0?eILXT1pD@ z&FH3_{=$eH3dhp~AQmDkM>xN%G(t{CNX}4%Ask_xL}TJY0EvL-t-xg>HDv+9uxgsE z)D$?i@}$yl7PZTXr2`D$34(6GB#&&MPlT1CFM3TLOd+7K?qE-jc!kia=W9~DS&a@q z?tQD5v}72fR9xuKK$!J3o}B`&7;7}pDxJfqB$EsfSOVidtJi4sF`afuIM9T;xj9OZ z32b9cWL*B?sclsFPm>;jKOrd-;beW=9u2w^-|Q}+aY4Z~t-*3~UHEV>s?$$FuD1av zEEessy<4UD`-r%35M6VWKWUc(^NxtEZllJt7+wS6i zG^I>6X}QzeJrPxRgi}JjtdcN$dEP8lB^{P`%vr=WJEPgL?q@d}tA_z#AI<fUJL`R=Oq3K6^MZBn3y-)fgx6#`fOCDxV{;JjXs7IB2Lr9Y;}7y+l|8c z01IL;@>o~H{Drl*-H=2e>M6^$oH2^^Trf6b`Ebv=M26bvq z(bWuVjenYr@A*@v=DU;E_4Z-g|K*`u%~_bM6PXfDFVwGe0Gj!$YFRu^hK$a`9SDEK z*WLQCV=O;!HJJ83lqcqz5SWOfUDkV^FdRw^CUHFQ$nA>!Ce7V_WYNGbH^8}Fv&yYL z|NiTjwNkcBj57TEc|Bf2=v2Kewe2xK*WhWQ=&kwFay6GK`NbdSJiV|GAW1`FO#5~* z^GLJ9`6jglJ2}SPie;_Ot?(UIGpcSZrXklis9EVsrc9@!E-Gb) zlOQUfa5!1D z?RI;>oX0Y0Pb&hcrg*)Y^o168Y;eSh-IPqBAzX=b>s`kA@@Wz24ImTX;Yj<+S}Yz{7R$)sbQRJPmob9*eU=+WHj_WeM~1}zF2M`9`={F|^aKt0CK$dFqpQNZa@2E? zNu-$HHUodi27~DNr$5h=n-LiFvOeCuU*X5JH`v(v3^?E#`1WXbM-&%~s3Ox%x6Be> zh7=rrNg?0Y>I}O?261&a8sz4tUh#FUStl#0fS*UMt}0TUpsL9HuxS=EB{6qI+sO3p zA$Oau-b&D4I<;y=)pL3T4v#fxyq(fuKu*mn6-X;fHA_!7vm<+o$(mZppPA0v2CCWZ z2qUfl@~BoQ=T2U|q39%L%XOtvY2?oNC)TSC{=b4G)k^|Si<>!+%2vXQz7IbNps*fXz zh2iv9`~L1Pe@=>>VWqlzzk~-7_~J?3krlZft%lHQ0NBiKCY*F0f4mtE2T%Y&TqvT> z@hs~5jY=3+sY;K!R_XdGb6ylO7WZTk?o505{=UU~jU9R478H}3mfQDQqw(Rx=XGZ{ zQm7kyiw`)?TFcKYXg2o`sc1m0A1+oVKzfo1T+}&ywgb2;=rb{iGOcE5#78oUSmM`g z8{q@T4+EcU)afWZFHO3^$+EJ+@$Y{g@S(cRsmex_XKZ<>RQ>;P4KBv_qn%*9+ zdrog3vC7Pk?&dcOORg4c6%7tnqm!C%qo015YowH?``x;`*&M^l%lR*V+}!^utn?Rx zg|W!{^7CQ#epIZc+vVedJZVtR2vUx8;ADuw^qg83M~1c_{rH!EdYaEU@UxOL{9%{3 zFcjOeP3DbGq$8E{XJ>Cq?XY}OpgcWb(YvKxJ0^J3O=Si6g&q$#Pvh064?BFz6!+*C z^_PcPWJQ1?yUzG#jFP)&s;x<{64a5IfwJV~)M-TlojHR{%>1XlH7C13FeQ7U@;TtJ z;j^j7E!vw*M!Y&vM@m$cU0W)?`X)b$D|lIpWiw<_Rii`h;b6`ebW-7#PzwkV9F6Ya zDiv2OXfYXwSxN z`;2;5HGgj3#-ruX;O>A57M|s^?%6d68<^;tzLIAPS-P0EL5~+9d>3K@ah`> z%O02Y=%RYNpWNSd9U)&3+a{V~*VU-Dm703A8I9Dck+P{yh8lHO_8?eHxEx7&y+`{d z0YM5#zoMuo_2s;FRb_jpsp*=8)sAZp*tllJ=1I6-jlcYI^ZDb`?ZPTKcdK3>+WIkI zpAMj!AW~TN@GEws+3;u=tCzti5GkX_*sSLB<}{wYKaAb`A6LFv12s;z(gT#1Xc?)u zPHXyf-C(=ZW4qiABfKZYZ=V-IRhR3>zMWYtR?3J%VY{*R$hPSPn zS9JpX!?xP+0#^U509-7#MZ`T~OKt2oM_#q?`gQi~LXrz-*>J?iAnr@mE?nETR>{_A zB^0BZq!nnKdO*u%Dwi2O5P++3cV(b0S3?e**DU%l!ig_i~Fc6gLO zq?1FhVceqVJIrJ0B;Q&E?^@d_^CFvEVh0Z%*$7MRtQWQu5ch+RVNcfaa^8j#!2IQy z|B&p!416ouLl``!^sQ)g^G}D_k#@Tr{S_sq6Gur7kE5I4f4NOnAzrP!ZCFMrvsFH> zOsxi+c)AvhIPCh&)?9%?xd?v>W<|DMzE-z~Pd^V^+q(`_-&*E`7`Qo_x5!N%akk>K zw+4{G(R4EExSUF3vRd@VzI%7}u2Oh=T_|0gm#S0(L`hVbpoV(Y;XG|fM%a=(a}xBg$6aTfiD=nb{a{!BB8rN zrO~tK#>@D$`;N0qrsRZBM z9~SKB9$PhQv~63(|AKTb94!+MbhTwdcz*o(X8XrtB4SW)AqlLyN_F+7(w%ZvU9769- zo3W)Dx?W6<{*iwQhpLc$%q(n7K;R5M?9$2OzU$#0iPGI8AC{vLI_bT?yE_1s>i4?K zJ*5FKtg9#Y$Tkk4(hftJrV=QWYAs9%9$qv?tId7SJplH)HkU&c<#Mk-+3$z=eBiE0 zwTla&tav3uJy$_eEe*HLXD6lFyEoUTufG5O#hc4K;>bKCPeMeYQ1$g(LpK7$sTTtt z&=SL#nztQ>0ROq~cxFp_dwz*(ad2!iwkAKojXKU*Ut~g;&9%cKX*5gW=Cy)>aq;$| zkmom9%@vxQRA_*~@X>`rMYoz&g*XZETVCddAbJzm9nVcoAFdDcmPD=+QRNr6WBY(@I=-7&1*^Z9T1w^nuP)0p z-IVEWwmU2iKhA_wriM$pl>O~9tG7C|TMtjmzSA4cSGW6zAGfRnoBc5Q;pf{f}5M64JeM+oP%A?@mzUwH=f(xx|^#^zC5m% zt%$>rL|q+?%eEiyKlcYr;HBDp&?f=OTEZmdpScDPMlqXPPkbrx1NWyf4mdkW%wUaa zsL`DRrUc+?6yLqBimGP_aL%Tqww6DC_VqVk{r2QEdy#MCuZyBtDzM76!f|kZel%bm zFHELK6FJ5HIUQ~~DJfE|`0n!R4X|gzIGUh#x&W!^J#FI#7#-4~&`>`=EtePt5EjG# z3cmlxZ!QX@a;Aihsmux`pUWOW+vQ@t`nG~cL6Ax{RY3?%mXg1peA2lYY366{x%K!LA46ef2OgK^d`- z4>W($iKe))QERYqlPT==lKpv8YaH~W!SL{@E2@16Ya|&{ z6zQ0imJ13(R9-b4=wpH_^LgBByvPWYitOuxb7UyWo5#mH0xbkpsO-gnSBi2FMv>Q< z&A1@26t=IPzbr_mMufY&xkryudj6Ydzk2)Z^}FkQp`0%?45d`$bXjx8L7~P#v1x*R z^?l^Zy-03xjCNbhr68MC=FLv7nbPlnO>}8^ zuETXxW)|i6b|ZOM(*fw+9s0|Mp^K!gRAnV(Y8~(TyXy+Xy%;XG!CeoH^kCPsw zW!C94@#N=0X&(jq0N&*7bmTQ9YqJXFOc@me`Arc^JCDG{oE1fHIOZT@28#{>WlpgG zqK4443<4{<7~f8|<8;!IZR7hQC}Y0QTi$@=MPchL_Yse7Ai@-}G^nORA)6I^*fFMI zEZurgy}Zgc_^R?j7%mS39q7i(-<^C#5=YKlo?JHdT3*vjLaibrzNh-Fpaj-j1FtZk zG{Bn**JZ20p~7Zo*onx81CCk$bW7-$lvCPPd3qgd5c7vEUC!2g1C{e|Q+o0J-+YHc z5-8!>wXAXnsb(+euH02F3N=tC^M|ERsR z-nX-W$?j@v_CGJ_jLyr~aLpJtNcqdE1YD{YqZ=a(u(^La*e_o^ySlh46ic~R7qTR_ z38E)T`Q^3Gky5MYFSBRQE&%oIxART6QnLIwU8HhAkhf`cTrfll9RU9AG_GZ9z_Ued z2WNSunZ@Ec;1|I_EYMD~z14{6vFtBeuoSxs@H(uOW}?*VAJy`beW;4P8K|?x?UuIC zgsG!RM+u_@NG&erxjaI9<@sx)2QM>l)di42dO>yoDba^NYU8hSjZDE3$qZU1OE*)h z3x#W9o4CpJ@ZE=Lk&B@>of6^|?Mj&m9*zS+o-SCHc9eP>vq4Kz z0|x9pxy6{T?@-$IIfBVm9}*hc$+j7_MKGCZM`z-38DadvBo|tR zD6*JtI>S_J2BcvSJfmvYu&z^XXf_JvynTaI%=}~^uu)V{$>Hz-mliQ#naFxZIgh(W2iHy%ki~)hIwnKIzZE-JceEQdx&sNVU8527hc$xIlKlEjJ$H6e1XSD_ z#Le|oI4`C(zY0mdm!EQnrsS(ew zpVgQlkzZ3$k5nVOP}Xcv-*TS88O7YIimvnMn-OkjPgqiiofsr$#{^BkkrOKHr3_?@%BI zsIJtjl1OzA)UK^g?gt4fpC~MpBe&|EpVa=#KNNT$ z=B{3xU0+?lImI^B{O&@R=vfW#wnI05zk*BgxCaW+^(ECJPv_19=t;A+SjLbuc%WuJ zBB!T960J^T3Kr`>9+3T{4{ z;-d6C%WS8iA#<-5HN(>!+RLh;aF^~*@LY%dL-baPeQdOZ8-bFSx|Q^zc}ohbCBiW7 z#7!vYa;bSlSW{Gi4Y$~L#yy!pUW52OC^|JUvrQ#iz5*UY1=mMdN)?i?I;8-OA68+w zbMTSJ?YOi5`NJ^qNuIXGkVPX?KP(*{mGz4A@sUPoK$?Z=J+nJSefIsk@4xxBLb#ag zE{7FXyx>)Yg2FK5e&7*=<2!Hp@~d-#H^^lC?4_-~;WIVUYmBLpcp=n3%B&;`{h%U-i01KHwbVA-rdT5Xl@lv&G(gt@vypL)YQ zO?$h4{pZ-|BPu{=-0}J9`Y0_7rPfU+g9Qv{-D!a+^;<$N|MfR--cj?3L2NK_X%k*B z0?C(ncFD<8*aU`08p&!KZ;zP?^!2V0MWvHWI8AKWElZy0I^R`E6BNu4w1Qinn8{}J z{aE7?sBwX9`Ax8fnWn}`N_=~o&1UMR$yY-2x^Z$^V&0_x?$_VEEtPn4TwJ|<^ERu= z1S+a|nHIe7yXlOF8hGv)dNe1y&T5t!+K>k|;}ZM5yI93xpKgi_^INeeYi)`w{~oGdn>hy3Dpm3Bb&EnSKGAWn}N zA$kIQOsb;QfQ3Iz3l8ni^EZn=L6|5p3xy_jb63q4k@75qQkj{EDoYiL6C}c$nh0+{ zqWhQj81$erA}6W`m~n(U7;L*%i<4kEX1+woABs#(qA62vP{$cUIEoh!t0AZalQ9WieunymNjlS=uuh1Oc^EF-g4HRVeExYhy*PP3^aG;Ij->sF(t<%`*B z{aEA6U7R+gd?Eklo4lc!J@m5GQ*McE?M-zMTjuj`UtiZ@i&oxUUuT${WZ#|I%7tR{ zQtrX_=<#T-UKjZ<2qZUFKXrmZqp4XFFql=hm)O14$;)P6%-bXLDsRL=vn7B3_gNKk zU#3$^#0UcUbA+d6S^Bi}q49(}3eV3HIi<6TB_IQXd^ng_eR zT}SbZUksCiv_s3A>=cy=15inOgk`aRbbW>P@d6w(;IqfKyM*G? zoXfXo*}R~hW;Ao>>8N!WIaC2JC@R4n_-~EL8d6nUZN7f(tV-J9{V|Dpow5A{$7L0-)=l`a@Xq`VlszR%UoZ81~ zSrciG)0_Hm>r5Un;kYDBGDwYQgJ56}@7rCH>X8@XzCk%5Ee_$L+j;yI-l|oawH|> zAwrCrz&KqRc76NxAf8)grvt|dJF-ACo#Fm49VJ5)am`|Pz1{7GUR_u@l){EuyYB%cHSATc4H~#i-i^cMrZ_myFX;2k( z`b3AL&F?>q;`I_CD`)z}ZVF)xUiN;pT!r3xo{U%;7ic_WpMU@C)yZ{6b4E}1H`{c4 z*zho7`_}5Vz<+SXX2&(4;;UCdH>$OF2C9SIfeKaH332sxllk3*R~QDrB8PXiE^?|4^%Z9of58!}zyus(Yk&|q;tKs%0k=!)}XlQp^AjN)f z|K(p->hcqM#xC=6KJ9&b z{CHTb{p3J!*b8RMptaoJjk@#gh=Hx!W9pG;xy!49{D1yV{PtBLo2%H%&$obvnenhF zB0lHi7!~QHqSBp@V_R?aIPVMjH~IAQA0MYZw4LN`I>TeXu8r;jVjNSEBJ5_rGYz@H zTVA2eDck5x64UO?cMq${gfNyqxX03yCWBRX`=xBnXUq4GKP-aKs8E69t45dzkuD#7 z1qmxhp1PG(7+#qjQeLqm6$(UGyh_t))R^6mmiy^oJG1dQZ{FX|*0<~Q@RtKY z8Q}N(_jj|w)9unnwBzK;PT7Ux3q3+%D`Uj{ZY$EW&3VrfN>$>sgt&AU9E;3&D{pi| zf*X@1(Y{qev@PE9?GOYGBZQ5bB6K{VoXekISNQ^p%4N~6oxV|;h1_@Fc;dy&mmDA| zp7b#tB>)zve+yE(dt}}AG?UJ&h0GVpU_}ZtzdB_e_U7d5<%w?gCe@dMmp%7qZIHzY z%^yaey@xH$EuMf-Wzfa0rk!}PSgt!^-w#%6_D0pp^}GKBAMc`ADBz#oe7N1s7x0l_ zL6J5Y584;C?mnq@7Va@mZCGtZz54pxK>yP2T2g-=aR7x?=FJkisV+`?Pj0m5T9&pU zFQbuBwzzI|*CcJ0H@AQK)5i~6fV{)I8&`tPp2VBIAK`Kt*>R7yQ-!}R&`E}v8oWE; znMLk@B4Ks4QBOOD-)3dvlR$1q2DXPnRrPml)#mHl5%BWVqccArB2<7zJV>-;w7hxz z!_D1~cay^t(5*ma9@6y3Vp_W76=EqD*Cs7?Kt5Ww#K@&yRbd%f1Pw?B2;6L`8qq@n zd^3zz5135c-U4<9`v&SStmzeIw|*s?t#RTxKRF{9!f7*meRA^r@4w5q_(ZcO-xNVp zIzD#wh82q zmY`4@)l)!8PxrTvH{6dQ+hVqi@tB*fAz}kMMI>djZ~p7c=cku~TCfr`-QNyLQ$}EA z=>T$JR~!0ZB4R@cnnY6+R^*zP6a7$hx=hR~3 zIL9z&Y-n6Nh_V&bR+|VVrdTQ5u6t}4c4JT|t+q2EA$T(gl847G&j&viqCb9_-FabfEbfg)Bc!QM2(+Wsgpe{TqK~t@sx`~itCw%iE}3}OYLdg}hGsRW0$0^t z2r?v!NXn5T#5P>{?yX>;L3iAm^7e0~;pJ~$w+>yoZ&k<_zd2K?&bCwM{^MMH0-_r2<9smY}&R@ zf`Oz4xkm+do1u*6PW}A#$!T-31FaoG7gu3J>qmaRyyT z1x(N*m{Nc)qx}bZAHZB@N6jLoD?a0lp{}04d3`3U#aAb%msBy>H6>Hqbc=dm9`jAG zb(_Mx0X@4}Z%wBMxL$Fs9@oRivE+7o=!A)C!s0m!{obFwe_Xb-?q-Z` zKI~GS)8s}4wyN0ZuQ@R*g;Mr1_by*8SCOO@Gg(O8_#HqHo?TU;xqxOH*mSb0#j}fm z0es-KReo8jN;MYeux{nW&CNXIb*d3uyvozpQu9}S->v5LK_CAz%PV&@V^_;OPlL-p z-0c^$u10CTQqRA-?vCoue)YfqomkXw_jkaoO2r^lWa!AaJXvR353|m098Xq}Io}U@ zo9RTew9Xa-V5dLZw*pHm3+vS(sVm%Ksu$;HIiB9KR5-2i11J7|m$Enn9mo3K1M`ZS z#^v)=KMfD<_-;KNH%m>z)lx>#aH_MWn_2{UZDz~&KmTw?m2pSXFEyOSzy1rvp}HW| zuPdi#okfeNO}{t)z_o+p%$3zY=A_egFQ$Al-F_H=GwE9OI*(`;9?XmxvJLrZa6<)< z-s{57FvSRmGaD+g5Pt&0-AthA5Bl+RqehPl6Hx5<{yjP|DvzGqsn(5XvRe0bWxApg z(!#r0hh#y$nH%SPV)<4{^ZX`U?Q9Ku4#6w-Z48*I*^_HjV+z!}Ffjyb-j%l}HO&mt zgnXk2Qc@7$8sew14C>Ds1u;u4)GH8uOSyWZNrpuiTdOe{cSSyWzwt1+BCNx=SN)sA z9_yjlR4k|T)v2OY-+lkxYsyJ>(VO=9h>^&q)>6#%xLn{M(5>4~pEg4_Nw#VoX=uZg zNHb!C(U4e#id!Y!Y}&kYl3w-u97SBn<)KzC*0`9Vf*rz*GdeAIKB^0b6EDI5flo|$ zNLSL%FqH~LOMLO&`Bg<0EtlekBO>(bRIL5YlCibC;_5vZwzP*&7*DFDbWzsBhP%SB zhyjb2Uz8HE2SB>Q#R!>pGUMENH>OqKwFRzbtV4k)C^a^+!DPPs7@oH&!H@Bi=t28b{KX+DYcwB z8XDEVs6IaaVVn8wiyR>Rfd-&UYPF#7Q(0lK3MZMG z8TEE}66VtpK;G41w?2y98Fivm*6KBnwYAPA(ZQS&!v7xz3361a68Z7a#hNax-x2alcpT3w3Q zeh@TY{`$;WE~g;j1c=_8^pCimIeQ0pHf*^`-Hmy%AbM(ZXoJ ziFG`%;@$rJ&tE?ObT>y0lX<7d#>rPNrE-z&*Lay~s@?B75`Z$G*0S0tQPqtxX*bSU z1yF+^#-RujBRx-K(k2_akO$bNdpvCzFdI#g{3KUKunVN}=)TL~GMRT#ldhq4K1y6r zX*JX)ko2RT)U>8CVqm6{4F61`VS~YVvr-E9XOza~4~PRs09sou)h+8gLZoNsuvtQq zLKR7A)Odgc1svXNlZyMWS>NndV2o|G&02CiB!JOc?Ey)$AQ4owGpnYftI#%4uS3AckDO%1^ER|hWl<<{t>e1L(5cFex z&Gk;1}~m@Ik|5 zdieCX8kp6(Tqycfr6M;|YZhDVyzmEghZfU=u6-V_dT$YlSQoL@g(y|}c3MCa*u!`() z0<&q={`xr_A3vB4Ak+^RmPn+fKX0cK6*G6dX!CZDW(ahwyPNi7p zS4*5I^i#W5DpNgZRM;aZb-Ca3gG}kj)WHii3Z3$GCPx;RXEY`~FPV+F?OGF5yMe6> z`~X*X3zMjyN&Nos;r?bnp{dQBQpl9G=CfyPzoJH+N7prZkc*~`gofUANB;WTlZ)5S z&)$9eJd?dd2?S&r4$lJ6pX0$xpUt`>0!Q5??A&PFNd~?Fy?kj}gapl77%lj>Ip+tP z#0;^T^}A}k0l@L5f&jWt&fRTJw`X6!EeLJB?si}fkNGEzHXlBI`E(;c_m@4EQOLD8 z=`Ma)Oi5z%Zs9`OVz1E;T=~?RA2zB1^d?SiS8WY>(LjEp$OA2o^zKE?8t%4(#H0?$ z?~wC|XNwh+DX~Q&U#T#VXy&UyE$iQ{2IwdlDWz?o7I>J*MGupDttp)qNxL1_c+E;3 zaDB7E!qBiLT*M4b@_qE!aRUKA1|ng|t_#n2jQyujYg94Qu|7NQ z;);0mhztvoP|AlP8qsX6wSesuax~!ZRV&oECBvA(w1L441Px4UTQO<8Cal7N<+WP-Fde0rn((~N%W)5&Lz=)zm z8JcFZyV<6ErHu@4_KxknH?hNeo3^rSJ5nMg2uE`;Kjup2Lgo@?1qBEYD6(0V8L{{G zz3=m^HJak|S)fv}ZJaVzhf#2Fvx*lV9^b5I{lSPq>S_d`_1>$G`k%=NIO6(j=_d3cRw+VkzTj@A6$@TnL4BJqD(9^Jbaxte+wBP2xqop zFej;^Bi+RdH6!)6+b~H%1kz%Sar9mfFxw-xYjjFN&Z~&MhecW1;v8eRR8;_Rfc`YV z1@}jZ#5yGIN}(mkR2>wb|DO>~P4>6EoyfRVUM2K#dh2P+nn8KI3Rm}p z48v4y)GHU&cAe;Qg|hKQ`SR2#dcDUVx^>*HiC#6r?(k-Fv*H*t8r|Fui44H8DS{)k zdKxLn8D|qGNVQ}$1QU}s_1^OPb?}ZKccJmU0Efo7^5u7zXUB}=Xr$_JLy)x~f4&(u z6Sw^AL4-r|F05>8CAlHZGUft2Gp9+LckO8G|=)S2ukq8_@q&Me*+b{(5H< zcrBfsT~tYQ5py+Z%NzOir|<8^tLr;T?GqI6c7Ffnc9&7U87*7#fBZ+J?Dl4BJYC&xomyR& zs%_L5XvuWm4hZ~s)ww*Z3xG~pAUk72CfU9$*cGFMo7_EKFS27wXTF%MSM$f)oXuu5 zAi+4Jm6OC-q^X>AWbjW#zWc~scRFz-w@dLq=kW2kc=kWZZi$o5OPyacFVg5Ur4O3zneL2cSMnZp1$1f*6ZPH=mf~T6+ySv z0K{8?y>z?l8$tg%eDMmnJr!dwTk!K|4Fdjj3MzB_ct2*WJs&{tfDf0AbLblZTG#w<$k¨>)pTqIO_HI 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ßUh1R>VuyG90ftnSG_0;T`1ENW@jzwYl0ZYA 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

UF(jwpnDI{$YB5x4fNSy|+lP^yf*;?zfjF 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%0A~Mmeng zVf-cmrx-#Ri6$f7HZOniBECUjT_kDy)n&88Ei3k-kz9GAqh58#fVLC6>mnKRO z*64F)-YjSB=_8Dlm7w`d2%*MvqyQ+u=u0^{(s+%_6WP_q=%HaeesKmh4lM+^uF-Y9 z-_b3F0xa>2az=C9OOBq+auyQ2dA+w-#tgDR;`%r0b*yYYtBU3O${xS?_0!sA-|j;_ z0G%%7>!Y8yFF>S^-Nq0pT;oi?elCE^nbXTyF6~->U;%au7KE26Z4Klk3v)2Q6V2lF z(HX1gWhshSDz#_1-@7;;9I=PwrEL?iJogPA-!!sG3+(5xoLe2n)4;nu4&&NPI4sv6-t-ti`tjm{TP_T$>%J2gL<$)!QtP39V5m%>9C+Ld?(+(h#9>d)_nF1W zGlsZ0FRNfOO2 z!YIKr>luS$Na}n#Sr5{+SS&00X3Vy%k+nR$zFi#dwjXZIPIGuHJ8~mtgwVJBf&b>6 zdv(F`#83II$fYlAAN{LAy1khMXklEVG2qQXL>do#5MV^Ym`1ZW1En}Q4-kgPIU;mt4@SD&8THo`pX}8+N=P3)#yozO_C_Sh0 z@hEd_0PW%-l0w{W{S@(!k2GHph0bC*| z21Mf#j&Mxnu?nTzrjsWU;%OQIyr{<3x3a&c`?D5J?5MNtX#LW9`G% zLu@ndC5Ihqb(NPQKKe3JIRF!Emj;>~EEDCVrRo?~2<{w@v1T+TF360mHLy+WTV0Hi zOe(nSdLSUCOLH{--u*8#HBRE{VZ#vpD2?^@q%6`%h3lN`Q)@OpyWG5^JO1=S6?%OW zg)-OHS>=m;Ew54>;fes|BO+dYI6OY)iPF+1pqMz6Gqq9opAbnfD(2Sc+Zv(hvLJ{-;{S4Dnj5wkz+f1~e@&aBQMxfJpePoPAi;Wm$KuZ*08Q`%MPr9I7R`(H*z0UJK75M~*bIbVi>nx+MPzH5?_T1E+27QWuUc3?}*fnu97&4i`8O=8t4Lx@-!1uhnJA$$@%}Wx~%OeL_7V3-;>k z#yYQ^n;II1WfaS8xAn?8Pz7K z%a54`k;LO*aP+|#!I3;Qyxn7q#tyWu0pk3pQ z8V}>!2P)L!VO_{Zxmw;o+VVnga9;>$9EJ-5)4LhkcF3h*H^EUO{-Y8BihDhcs>zJe zCvmPc_EGzC6AMV&m&E(InZYHUPjc1|XVv1kI6vEFL&?yrOu-0DFcubH7ijSrW7^p7qS%|5=aL{D$LfaleIR2>@=Iz&B%+ zkfD+Q$jXs*0U(;FW?0-1$n4|uW@D6y*6prbtb#WaejKB7xSBC_VD|HgRqkBBB7Rjz zEtlYG;(DYQ^pYDw4+t9DArj>cJC}v5|e^-D3 zryG+NbEZ=%WH8C;iKfuh8E6GD_}WNT26a-Smd{3nr?*^}N-NbEy7jCZdjxkr}5uFDK+_|5#It@Ox5ZkaRIbvHz>*|mZ#>Kx?j&R zRD~w5NDLrX(qszRAGA-Nru>o-2N95B<1-MhFWN(_w15{KewEBwM38DQsHy|bt10J? zYP#9p%u$tYct&O3`7i%o3Nm*z#S_{iteev-T5o-x^!e?+I_?2jNaAa;`VQxO!>6J! zTYBlB%>o|XmfdmhCTT#ywWIcq5YrJ6F;Z>4{qpRjj;a}4yQ#_NFJHar7*2}MoxhJk9lXo#X~NY?QV#|A zj%ba5#$6?WhV}|$WRUOHPWEFC&ew$s*gJpKBe_0E4z;g<;CXqzO?vhr z6sTXx&FeAl57smRS6s{I6gi#3S4y(Q0iWrcef5rg7w$Tcz|nO@ECD#PVH z|LSjlH^{5Y-`Kft)cFDPlZH7q+|0@)n}DcTZ}1*dYYj7Q+h>lbaE8F!nZsKm2p zq$py$8)Wo?WN$ig^0jmQ^2NogM*X}Mvd~=+C36TO%H+g?hr5!h9U)}PoXx@YTB-$q z?eX27Z0BaHUDPw}Qbd`-XhLg=BQx$_$r!*Wb&Hcj(r%~AJi$6fl(XBp3T|AjkjL+T zrg_|INSD1}9tang4ERkSc{oW_Uq2J}+Eu$t<%O|S*R1Ajfg;r(HXI@s&JM!vVn}P9 zb(EtL?;`}ZHEzdw`1Wcw#})Gm3AKDB}AVXh0_0zRhEA8PII`mLu=o;B~3F57{BfBp~K7RAQA?Ak|fPHRsQy>%Q=9 zD`NC=9;I->1 z@wlbWHdEcG=3?Xe`MG!u`GZ4FcsL2C06yHJw2h*W3!+pu&!4#_%}Xc`rIy|2T{-m= z;oF9$H_onV0F)d0&CR$LO|vPa;3=aF@1>L0SHO=I-W4!Rha9X z56Sin&e}HT8xlxSwBIWIaM8NP*Xi-_VxPr{4%|%NP$;$+@8`0Yt#`+Nk|a=|7__`p zV7vR->hS&#^MCkX&Yt{QVjz;TDx-rr#KEx0M$HkQbM~o%cG-O${Py|jZ_b!QO*UkT zDj=dLX~F{QFH6P179qkSWjoqgJiAsO2+W!2d$5j6QEC}7I0fPS60TlW8nugB?RUR` zaxHpgsVdx9z46uA$z{)z1s*y@I@zO77!EqBE%jeO3t{I^Z9DWx(w+jMnZq(AZVca*X-(e<-OiJ%>lYW--DYb9Wu?XPNJVWh#JhsqHFoH5El1si zHqls}qGk?9=R_3&3yfgN&!R3FRhGa=T`ykrZV14n30-U$rO<2H(V?JvF-&q7p^d1J zB zA+Mz(sxLm3jx_9O?pnIks@Zza+}$3WT~Y@i%Hk%yGvzo}rP^8oisw2fl38P9#mRU! z`Q|@7zp6<>{bF!noib0LOfz>Q;0pqU?_Iaodzz)~^MTX2;3-Ohkmk9=QX1nCcX1D) zv`sM;yqW1IF(lMhSHJ9%f_h}O04z8sv1ri*##M*5b;^w(6fa&V!>_t+$$s}=3P;V{ zK@(3yNI47u$ZGPUoaOhl=NXNGJz-(Q2t#L~* z<8fQ;p8T!>qOCbl+NUQcBeQ2^i6ab2IshgG$nPy2F)fN<+zIJ*H3UkBq{!vYJPp$^ zM^#&y+&vadEgLQD$oQLR$?KUr6gn4AUxK*r!aLB%m*0}U(TQq=IgwBLTLdb#i$0<* zZ61!Gmaii|73qv~?{vAoTlukpZcL=Hneh`OH{c)cHta!|c@Y{SLBO7G7ti0OmhtTG zo;>UL^|O|^aJytQu}EQGaNK_<6~&|W*^_3{|KiCR-sh{!)`dWM9b+$xc2WbqA@2li ziF02AcExhR3sr?RUy{;gWA0VuSf`4D#ayh?C7;0(R*=gR=VDGfj;d<^Iy(h3?(!dJ zfyiJpU0|=9W2NUgfH5IS10u$#}Wf)@0<9t%Yp{vE{5|U^M^xAZp+%`mo;--XTht< z4bd7kI;~f~`s!Q^^-iNX8iu=Nb#ptPdVRqX&YX!g?p?Uc2_7xA*_vdVIiQo2=|>1q zcXcR7rrWwEtEm(3(h>-1C*NIOJo)Cki_0^L3{f;wzG;oxN8;D?qb=sbwK~0-AH8_P zPV-7E3Ol}gLolgY9XZ7or74Vd0r3C}W2(iTFqVL$Qm#DinwH*J5+}Yz2M65`E&7v- zw%R`F_o7j!j>uuy9FPz?a=ZAl>$>p$Hz$Vs-BVIg&RA%j>yiq2t#K85x+RmMqsj}T z3NMSK(8a(F4;_x-9ifVV3KQdtbREn7JOp0qPh4}@$B&h*LOm2M-m5N2c7-$H?dMM* zHz$%ZBOC(U9cDsBAs)}d9>{-7-P}^PY1P_o z2q84`YeN0%x;Jb$V+P2Sv9a3?9Gx>}%XrdaSWZsMQuXVBa(RAn<$9FTMlxj%%A{0l zK~qy{i3y;RRV4o{XGcX4`)?4K%>Ux)&DK}c#(e2qJT#kX zmz-G2tGN;G?jBb2;%K808z+}nFP^1dy)K#=K^B^-D|UpjdStq4+<3Q?&nWdmLk{9z zO{_hA-i_LIr`J=@u23aRyi&SOXIldEje4t}1FR8wiHqPsf-aw>g!+sj<0PJzdDuLtq}g@-sT0%yPtPho{R|EXE7bxG?QiV3NQVy{?j*4 z+wV-SR4z-zAMSLN@=!G&R&EOWnSr0ONjtLE6ukL19%^ux$TwL~!m+S%0ZO=JjDM*quBZzWn~{6LWBS+0v&Wme16EF3@UG z5z|um>JPs8$8Wkri7>+ToKcgtbV zDbvL?;U6777iRG8MMwO)sSj#;1kV+4yoKXr-fGeZLo1b&g6kes^I(~i&$ zJA#(!cRDW{7hheTef#y(;b0s~yg3lbp~(jwRGUdb+F2 zbj``~c&zDZtLyhFwR#dOe87h(h)u|blnh{$G3nVJg1oyc}KD!vS zHR#LTrnzLYs`iBet$gNrg3%c=P=~N>n6Ja}HE!Bi!qdigqa1qQn=I}KGVY|v$wPbh1c-13u zp#?Ze$T!(b8g5|>&21>!pclf&yLgwYL2NA!*>-OyMSAhFJF36O+|mc@>ip={ z-u1OK{QB3=fTfKL+|U=Jp>WLE>g+yBPBX`{HdHa!qqV1qoDGkJ0@bpD1VAW!8U}id zP9tx>cY&17wtC+MZ58<1?Pp~?V=PqeNh|;9|N6YigsYZvOGk(b3`u#*Tg(j;uyVeN zN3x%I=zk)Jshz?3mtA#|L)yrB%glM_|(2@D7ViYF)N! zueh(s;|nRa$9f^2BJ+YPjUfSFnIT!zi4PE&BMe(eWSxNr1k@4}o)YPDS-|MYSk%z+ zXUY{Z8IM3M99H?_9vog8IREzl{XZN1tEW$ghc(54@rX~f5iGdh$DrUKr5B5%nvlu3 z)cDoWz1*WbTc>Q^EQ)bPzZ@b3P2AEY-Q{N^wiaEys5J~5^4vJOM9;D!05fR<%jsprT|9 z_3in1`RJ*9hM}mmQLr*1#Ah_@%VgGIZ<0+2wQ;cBSBzxweFSIBcAnR7|u(|HH zJJbD!u{6#wa{#;C)M~%HKz`2mCBoN?kaAo0K&y+g&Kx$# zY4@l|LJWYgiH7WmON3zSKRnz%vNW6W@DpCv$f=pURiZ?R_cKqVj~-7*Vf?VOv%)UZ z$^G0t`Vnt($xLN`vjzMq-#=&;PVQ}9?56@+rpOfr?Adt-Ywf-gd$d0?Lfk}9iUcAh z_hVX*re*l}&pH%Rr6FtbF6pLZ651Cn4dJp$DwYE-wgZy=7vM=00vsNf9$KB7cL^`G z5hdsm37#Yf5^WWnwlvZM`FaZ+cB~C$7RrZxH9ozT9D!iou+{Gl#&*2eU|5|k_P~u6 zxuSQmsf=E9SpSPq8Sz%$L}*LuHQt(Sv&#G=g_Ola9!HWOHrp-YB0Q`z zRmDF{D(A9K(~AW?DSJz8paTevd|RT{oa60qNQ{H{Kao$bzlYMc8A2a%b|gHRah|KsDjypH-$E{GL_j~Q?4?o@~Mz+1(Xt!s7`>QWsa2~7q#g<8z&%|a5 z|3;7I%SkZXJNm;t&@9Tns~r|3z);jir?D)^ItkQ(`y5CllIC|Y1PyMIAl-~%trbx6 zx99trKk8&VFayr=K5IX{qWc4Asv|^7x9i_d8Pz$K!N5yy$koHtg4t57J@4*QJ_=@L zSA^VrP`^($Oyh--Kb`C%21^9}IU;X&iNup3n^>>`h_dh&H&xQEv=c|y7q41_zAUsb zTS_Cx;5gxsS!TFQb)!v!6;)iGU5s<7qnhr+TH{d|b)OH(=Xo)i!ffVQBV~IJTwy`C?{D*Hk67Z%B%sjU;P$&iLAV2`%E;D2D zZtij$lz7(PKZa(G8;aQP(Vk2cDk&Y%Px6(v-tgByR$>*if z5PZTbA<@A4!#Gd1YjXpXpkNCeV@({qU}5CyIgJE5qW|~1de>thuUeC>Qy(lR(N4R9 zeOF|uM7@e7|11u+iJH>IOUZw^#|JvH>>gQVo)V3EvwkdNG>1ZCtd8{l^~mY+q6WYW zj864n8!qR{vmqy)U8pdQ1WGEQurtm6IHGJ&#iBO_-9?p<`vvg_oluPnE@`$Yg4Kjn zQ^HXI@7F#i<<5Fmr+pPI-rwDBSJ3Jl7ZUq8-YgE@H}Z0#_0+<=Y*Mp?XxV=ZT8cUK zWFQ2r8X|3AWguONk}@qSB&{@QtXi;Cb$hnKZM49J8O+z2bak!o(mF>>fA{(`M3#@c zJz%KmlKd30=f(UN7#};oJm)s+bL~qei)|!PaNjSuC=GQ^_j!Kwn;V&R?J+wen&oE} zO=08;`DQVR34`q)iz5tww<`dC(&CKatU5-xF5M)3`ZAbKqDtvZvDKoXn4;R99o%3sD<&MfZV!jG(&~#zrb^`z zW_`>GqBe*&GY6QAq>*1UhZ>8=8jEvIt=G@Hb-HpI=P*C&Q^P@;0o+obRSC<44uEkXU8E<2=;*v8Z&QKC| zU($y=>__U&1B@p6i*`fv#o?~utD4a0)ta35xTFa@8ZO68yo^TqC-W{XJT0D9|EL|B_ZVfjv8%e0*3}B}mz5fv3@9Y5*)gx)xU@6G1E4j$YLH+@n&W z+=(vkc1=sz2UbNfnB7IjkvyL$-ecGgX5FrHSV9M-SSqzI2Pe%SP`iVMY!{3z$N~>A zh7#{SJ8fNFoxJK`oVR)xLc5I`o|#Ar*6`+N5S{SFeE4+7*8CVlM_SD<+I|G5N<8zp zg{ETL?b|Wlsh!ma> z7>1s-+U{n`2;^J3D@MN7h}LWsUN#_~54+6nCrX?BeYKjdN+KQ+8nflyYO&tmSION9 zSYlbk+X-+8qFKS&iQ;dk?vkf}w3G+hbh+f=M4PT3+`Hn%U;;83VgN(|0wdTi!=QZo z;g+wEZ_oiH!0Z%D=OVt}1~kAKD-3PQa&y8ztbX%+N#QG@9J~2k$csZ&xWj9?H>mDj z&)S{z_QUJVj$d37-~4nR9AypVat-Dt1rf<)SFX40bp`7pgtSRKlKXIxn4EgoJ0G{o zDiXV_ddI_-K#yu+T_{Y`Fs^91t)AqI0aopy>ja8EOu`)Wc0!fDR$|lCG zTt2_*Bjl}H%vD?mP3Y?Nn}>O}hwTcZR%mBykb)i?Md8Ky*co5SVf(bzQ$SXu={SZW zfj)I~2pZ~GQ#yk_=LnW}Bd}gf(OVagj`&?m;}n%MK0mNVLEkCyO7v7k9EHh6bF$*2 z3)Y&m(UjD3x0h~txj>kw4um4;kg)Y2v1YJT$HIr>!d?`aOpBD6X>!vLpwZSC2X-9pE|RYZ5*wkUyAz z93PnZVT)#ZXSPQg>DV)d8$)0HLm1fp|jGiQsN z&3*?z4R&u9yV0l*`^9iMh{aj=d`RI8GhCkI0GRp8K!cxu>_!=uNY{;ExY#h6r|Lt3 z9g3~b<}}Lu4ZY>@zauwoIy9oI>xFmw$BNC!EnrAWdoNMX3~ zU82cFatTqmJekV_AVm0>y@In>xOR;Q8tdKtX6iBWYcs z8yr_<+mMFYprbP*Zq@3^bb*JrM*_6i@{$W?hqx_ep;N9n9Wod~ou{xj+u;xA8@DWY zqG-oBPosMbp}=GnasIWxefisqkYOKz$656u>7z`}s{M-0IL4c-nmNn179P1imSNxo15t`T^{ zMzGxYgR^r!Vulii!TRv&-P;W=RVLQ-3v~(_95mSn%J5$3b~&Q#1n;V_oR^PfPn&*N za~8;}1=BC2UB--qv$cN!oao+_V)gFBo%`~%aV}2U(v-ZG&0ZGo=i8l#{mBne{;f-J95WJlhW~%SA3I=i?21LCH&vu$a$>7yU~@g4toSdE$laF z(P~!e{5G=y1!+cRm3s?YC6>8hG@uw^p$^xNOEcWxEoXs~gG3E+^Xf;S&}{p5%H~(7 zaLh#jRy;Bia}#dna>lShX-x3bF8G*`ji+@Jz=gnEBM*f>qzGPjW5j7908dyrJP?|v zXHPELLbuN{@Zt4m)Wa6`B~ElHEyffY0|<;TyN5SPQ?s0U!KP$4=4GP~WK7)|QNW-bAj5^0C>N%U|9uks|4sksQjlmfYxBvR5vsD>#zj=XVQn5QUUl+dfj$a+3!SA1S3J$cSK4 z`ajIBV(ztKu$}Kp{p2e~Si8Q!oS3cjG6P4xoW><+o2Clmh?#iv|v;7|4SRAb6S@OOY&_m46)o! z??3K$jx_ztzZ$JpLlK~`ZA;fF*EgF$&$d(h>>@(2Jm0N0#pxCH7jURb_5RaOpa1xO z{vpBhN8;p&boSddij3Lu#%U-6LyZc7yGyK}UaE`(N@hIn!y>pt&h}=bcLWpf>4K-n zfMW7ug-p`iggxWxi;z zCIft;NTg5(j(FMGMr~V{VAdw=T}znQGIVbV1CgcAr?6W`$0>2^S|XixbXCtQczHA0 z##}ISqWw&~<3$Cr*KuZ5c>89?ypq2=!z{RLhP%3LKaouOoIP}zewbp$1#5HvZ||b{ z{IEw6L@*ZzFRmki)t(7DU$XFd^*XH{-2lQ#ii4{B69op}8HhYNW}3f7>J>b!jq8qE zOe#RPA($O4xq1Isgvh7gzojSx#M*6k`3zEC<}{|(>n2AVj}SimAgi2))AiB~fri|0 zeTA|SQZV=B@~8d$u~_UL?haL${P(*rYe}}^=Z{c8_DsfxfCz(pf4khgnd6=DEe7M<>ufxnhA3SeJw3s^{an9Tl_rzW$9e zd^se+`m7C9FG@W|;mI`V)-`EJj$SSF_yIQ+@uc3#H7@|(my_jcR^-*3ZX_VMiY34V zbd-%9lZ29)(xTbTa=JBlZx?A4^BD7L-@0$EYV}%;_LK&#qCYqSClv%NpRqDv7u6VF z>K0yd)=Y|QiY!hsCJe7eh6n|EGMn3r-T%+gdv!~4o@sV}Ll@F$&05nv-96JyvOy9+ z0VsRCN$(=VdmoWLGSb_V$CW_=1Ob}y8fj^CA?aE_PCNUeFPaMktIo-c_`dgjp1on^ zvrRX;J%&Kg>N;KEe{)F|)BX1Q`{5Q$y4W2*J?(Y_W72mhT!mRAyt=i-T3bD$s2Iit z{qZ=0XdH2VvV#2czNe!x+}>?x#xd@yiKxNSKYl+P-akG*{O}B^?Sp;Ek7-PU)#IA( zfG(Y}Sq>zG)r!<^yO>kyS?Z)GntW{fo(^`1RlM#;(sYXS&5@I#;XZzzm{6ghz)YMC_UK?dxALP~w*s zo>vD0sq81sINypBzta}`uw&#u9$BF$3zK7JpT_rNjFWb1E{0Qb?50P+ST3h5hFVT z!-+1pzW`tW@4xGsZG&5iYd5N8jkRU&8^L(H?x{Wd+P-(+v0hz0u6m-svqTAM4X~yO zUTuvZ;%aWj6O9FT;neOmMN3N7QQ9a{lDTbGoYt>{q&(j*bIdC(5$ZB|MaOo#Oc~fe z4hJcJ5z2Bl<%fCh9J8B8C9G?ZhZi}Nc&p8J14P#2fJ6CvGq9o|)xTKF5EE`U z+n=5}AxJ*3wBGvt&;MaXcY}@5WwV=>uD-i8y!rO&ZanQHkU=o99r>fg*gVdmTBGfp z^crloham1l?h0~0k7cnu*;{{_A(`!m195SQpLDvlVL z87G*5S3RRM(tIVGfA~L!qQex)!OGq}b^mnluV+D;O;W8lI;vF_)iGHRQ>s_dXeCzQ zDwNfNExcc&A#>Ia3#HO^MK((H)34)^`t}=XO6d~?-|5TiV3u&!i2HfZr$6s<&SV#h zh$!wLy6n*!N9)XDq+A9~u#fpm^BftQBL#_7hr6xa-RwPXSTa7y4}*SxsTa|La#S+Y zfmG!>KQawX5CC6Gk@)R*%}K4I0KU3k5 zA##2r6P92L!XD)?OKa5Gz~wUs)MZQN<{wV)S<@w;m_h&4P#h~lU7-*HFDz~O+4SJP z`u4&Z!`o0owOj(OwR_(0C)Rn$!~?X7k$iq${PfGGes4$k*h1IsCQAk?D7!D;Hftv9 zIaTD*2-HZqdi%|pJ0Q%g6bXa&*Q&&FIkksReA@FBByv}-g7YHE+LBNM5`d;!>`dN& zV2Y0M!0Xd}#uiy4p8?G5_3vL@mB0B{*FS7t{o~hV;o|oN!*Ni{TB+m0$6B-Fq(q>(dKzHl4vm4?N>;F8C=lk5Ot-_f$ERGKLKE^jJ~MH$PiGAUr-GMg_Wdo%|yk^71nh;@WL)_B|=PT}${ z`i$V$85x=l-CFkOIxxtkD$uw)!u6PLXZt0DPr%(=?1mk8@c7?XC~!FG_Yv4& zOJluUy}j*0qzO-gpB55Dv1P)famM>tw;jRjtNJXFBO|i4T|4B#em|tv_y}QhPCw@E&;)@7wyNJ@u;L?5Tqe ztUuX5bWI9ucqx+k?&;GqiU+#pNldK~%96l~0@l?U3q+w+scN1n5W{0TVpDh3SeQ!22wRtWZN37OlH8PxR)_0^+A{zRQcsQh5S#r+{ zb(%o$-V~d*EmQ)l;&kpp$)fJYlwK+bLU$8?eHnJ9v-(Bp%8%6JqkZ#%sVHT=>3X%F zso&{$z3SI`P!rm3FPnwJ%dg)2_HWD&>+k>iU;opOA7CES9+YGi72^}-6^f>Ec7W0+73d`}9_1IAH<@nmk-6&`{9a<6-|jn@O;127I9 z^ZRw**10Nx)ALpzKEIzpA12Skj+m@ul;bwy-RrB)c>nnRtg?OHRag(rysJqR&E_cbH#)kbs8Wz{@f7^=Pvef-h#ZjMEcf6euyTUU4$a4hROMG{%^F9(P4Da< zzIgMifBWxVy{RyNh8V{z+QSGpop6udWIjz3jABuSlA|fdY;-7Q2jnkz`#2+@=CMhf zNM)A{$1ss^@S;Ch#&Gg*mv?wJ)9K*($-~B(x%J7%wO!_+u>SM^{>z8E`6Qoi0M9c3 za=h$6{Xd_k!}aRJZrfe_al-A1=urQtmnAwvQ|(|>)r&7q<#6b0jM3&Yl+)||?MoDi9d9!p|qbd}Sm8Z`)D-E{vP4tLW&Lt&o3_=qz0fVNS%qNl4- zyMi5TI^=Y~5iIW!Mr2cX8`I25=p5cbs0p<3C>8)IH>;D3yP{?{EAaGWv!VCtApmu7 z^0f74axY$gch+RWEq4PWvY7S3((}f%G+F=f`JNV{FEm-y9sx?E%gOS0)p($Ki!>Pc za-`M_FWmg~*&RJ^=ZB9Umq${Nt{mn~q%4+57gYn&oyAw_{eVy|qO9Q%5hFfZ4;e0g zPjA(2YW<+Qna>hfJ8J3e1-({=U$`2lgAae{ssMq$slh}r1gKqlz3z9+mfgOQ^658! z|1JHrj&-FxsV~dLss;&dJ{|A1szym3@;3-#+?N*ur7_!gFgUM+>uTFcNxwAS{o_Br zVN$p3*c@b(MnMhy!~5q&WP+NGymqlvxNNK+AMZTV?8C3L`N2^8X1ROx?KG+3uu+AM zk?Pe(tz54-0J85k^ZN&m-*zLIVX^5xt_e=zu4`Rhzx%p+b}CnI_~Nh(Hz}?VTaB!x++FrtUyVjNeF-rCe&9meOKhN64H=nRf|HEsE$7hpd;*`2DhDjqdX!+a>K!iLp!NlP@pwRj4P9cKVy*8l++bI{ru~#EdI8DmsKP zqnh-UK4=a`3=&Il>O1v9mgC?hTeMxR_v7)l_PPbx!6laHn@X&;yxE!xZeti-y}N2R z%C(D9GhF46di%xGs4%;R)Xp3K!+Gc4X8XrFGji4Ya5z9p@mMtBtt(g7O|q9xXcD&s#0t0z(4qYzpT`fDc>v@JRFa zEEc9zI9GSi_ZiXVc4vM6{ZrV6Uc;I$MbOg;)Z#z=>atZrCWhFPaA>5M4qFi_ErLmc zBwHMw_SrEhRA*LyWL#x*ttb5E!rTWvYfu|xJ2>Hsch%sC5mReSNCkqAqO0^wIE5?` zhTs{a0qJht$R z={%HzkKB0a>gJmsjHtLTzdXM+`zn%=hdw7Xz6c%=)5c8f#r>Woba=$e#qw`XDO((^QiUL6@ zRybLhsL8%G=vlu%S>(%E=;HxS2K%A$n48^zeP5Ce<_x3eFhSKNX|zGD36VyyBy(w zLQvqFtRIIOD`hHCnI_*bh=f%H^Uh1qTF@onEXW}|R3sg{qA z#LWigx)Go=K1}*<6vknmcPY;nhp&V&ZjBhCY zJr`uYg30~kb_NQ%(U6C07I`=Rl|1j@fq;2 z*>09D#fY%S@z}T~0G3mmu1NJtyL$Rhm+1iDOE$>;>x#WHUjOFm`vcm003Utx{7S5z z6xlz$-5<=g1`f=EdWb|j0CRBtu14|lvUhg>?*k37PL>P?blnW<_+63do9 zp0HNU_UIAXitCJpZzey6S5nM`suJHl{kI>7;IHW=5}^CMn!?wf%o9Ke)L&wiJx0jktqq38+yhkb#f8I+kt=Lc+pkH`VL!u9NiQe70NBj%JPDnd}ib&Y72W^UVbw zAExp#oA)G@GxV@2V1yp8iCk=S@q`oY8C{ zOn!SIAdI3V$=VSX&g4tlP!T{Rq??y+H`gjEu4kn_;w`Y!~4g-{5Vz{)InE9<+h^84TpC}f5VH|ZCx}eE=IQAS@NQ0oibeFph$Ql+=^UP zV1R>-tTE21mFm!Yn*9tXz!We?JY-1JKE5`$PLr6;uIanfIGSW;~EsJ+10HPjLR-5@r*H!Tovk$*3i6=E;x4|;z0@? zhl&Lx51iN4Kb^@jgm|JF1bIngp$RdRdc6(Cpl>z5JwJU>P+X=Td^Aa_VOp57;0Lx& zSKQ%d9E>J}rAb+f4xX$od8$dC)^2FUBys-!`Y5gPCi*~Ixe)p{w8ntL){H{ukn0zz2)6vIWGGgmRFM3qTZ>Uk{ZaF zP|UT0)-LVB%5|}PR>>CA%YR?DZ{Kx&L^!bSrB-K4>?Smfp6=jv!hCEsdrO4Y>&J;) zrvny%U+U6`iSilI669$d4JoF%jq)JQ-si#NTC1O)1E+lSt{W#em5a*~!~p=e(55h_ z`mFCA3i9>ZU=l)ACYQ7Ow4Xl^P2hkeS;P5&b#K#?#QH_Wm6)3+X}cn}l|@XoRBlx0 zm#>pv;eYve=jRRiM#YcHK3;GU0K4bxJEve&w7fqzAKU{$Z0&D!aUi^6HWX3f&e zfAx32fAjX`o3~eF>)E?&y2()Pc-e)V>q|lQ;m<3j)hv|RZ@2r?w6{p%vQUbW0chLg z2MEgW!XdVvdagKiV>C23Of^6VMq zkkF%*KUn-UufBfws=%7#*a_iN)N?Tlz}4tjRqmWe2N4FEs@@VxU!6IFQhC_X^m@F= zBDydDIRpD)=j!wnJFkA70;xq`b5*YYrnO14_Yjrb?XmfzdPw((b1^Ss?^@=N5B zr^wg0O$bGZokiK@uRLV9C6neQZ!+i&O@~3TUH-;-*zwP3g>VRNHmJQmjTlnQma_rm zte)Z+rM3`>LU;dz_id>a_Ovq98!W87DQ($ewV03Kn>A=*nW7v4IOMs{H9BlNcYV9k z9wn;P>9Q0WKvLcw7G~+vdi(2+Q*ZNUl1haaXG;HW+rt^kpn`tXeys3)NkKC7x>HnS zcosa6yeyRXA%=@BH6D0KqQqxTX`ExIqL#zOoVM_)?;aI8twN)H{?$MK^X1K#U;N|0 z{x`q9byGYmE7f;(kh&3ZSqIW5^rC@-v2Oe4r-ucb>+4I?R~n@X%7i2OD$1u| z&;u>)CqzCc*ho|GoPE%*$Wy0WwbT12vj^*}p_P8EaVC>bc zTAP-r))wA=SM+8FU&|?$4l;84db8G`3CqZWJeJ3Cp-?n?&;R9nKKQoz&sQH93tQ(m zA{fPVx!pZt@1}freC0H1nt#Y%!08~kAM-K~6tCY$ut3yeM9>(MY`}u5j6xwZez*{ZGX4)<+@S1fIL=xcPgOce*5?5*+CWub#*;s=My7sl(^iH z!eCMcYbf;tj!tM&`~ZyR`v>}7be@{#ZgH2huAcqN1ddSw83yfwfl^pF7tL0sP|@9s zw-;aj`t?PN0geP0e>~tG!+e;tnOC=BSr*?<#E z8tVO=0w1p?Amp*dbog-KS~5)g%-5yfeU~H%jzL7NDH(7lV00H#57^Ax%4T7e|KXnm zA{g3POM1=jVKtx5fBq?xt7J)*fJf=PaJy}2<%V6T4FRvrEt(@3tN<5pW?dpF;8(q7 zrBGs^_xMAq*=3|qXb`1BRc2vt&li)s{cd;I*%#7q`^0Rh7ucC5J-lBALbyyQw0RNJ z_@34RaiH`7aFKTjgp=@TlN$ai^XC%~xs?W88*-es)-2uUlZZ6vQ~V1ouM z%uL1$x{K#cga@^Mzsuu0fD@a3_AVU7CdyZ@yO1v0Xs5;_bxILe;WD_G zWRDvnCLY0Hd%LDUHk@rYPbupfLnlmSU`23^qxUroN$O0VCR89?t4S2HP`BJ}Y+Blv zf2($~`NM~4k0QWuvD~kZO&H|6L%WsB*F=B0t!?fmVms*f!gK(@Kt~~9DMtJ1LKr_k zaqac{N{MScB1A-ul{$cXP|k;^-Tm_EqtB(JkNYl=dWYST3r#;%bjh@+1`Pv4XY`Uc!8 zXTE0jXC(9FV3?$<=jR`KA|nn7{U#t;zkOM5I4b+2-K-nLfE|af;c|!V5RrrK*`+Ts zzQ;(1P}QN{5CJoE$2b*+UbLDH+$)ATu;X|JCe`ZeZ_ZE6J^qinHM@95RGf`TC!;(} zMIidT5_vEz=`92I0AfKB4r^ld&2?MBZcGS0A*YNjp0jD~R#aMIy(H6=&$qL{{2FT3QmU|-;)NOtui{I8ge=?+&(9~N6e&fwht446i?N*c6kdf{_F8kRM z&V6^(Z(rPAT+3>({V8wCApN_bU*UaI4iD}gP*_G_t@GhzdRTO;mqM_7SWTB1LS#iB z@PcZPdzmU{r%iHcsZ~_48ATZATJMYxC@oa5jx_c9W349Eo7_(M!w+ZyI2kL1E|+7j z5`s#qX!Us-*k*23ODcgJyDb^alX%69M(O@3%9_6i^6WG$l4v}+gb(Zd|`o1v>0mH6}iC=N^lAZ8GT0t*IauXIcDv0S?; ziA{etdpux-2NS=^xY)tdWmC}|AZcNN&2WGlActj7n;Dp6DIQH64z9{T)uhyE~g1|&hcttwaSoN6JVYMumi8>oF)c)xhT&e3ai zKsqvgnr?fhsD(MOe~8r*Z%|@ufqWs4*SzUc2Yti1H+k6immgNGmz9X=`4Vk(fBQUg z8|Z<$He(#CR;iVQ@x05RO`Gf%$`#`svb<_{8enY&VpVb}p|(*{i^SJ3b+1NxhXpauH?C*{IcnIO`LCPZT% zBL4v5G1=`QarSiaj22`z({H~!DpWPGrh-gS#D;>LkzUkMRz95E(Y~ELK21oD^8+Al z4K;Bt676eA47Z8b_AjON@toF}t-8>5h=YLfaq8@xR{-FK^9~8h1(lbHQ?8ce)PpTh zQ!@_$VC6>XJn1jGOQ{|Ea5s0E(!OOR5U_po^$2lG!x*hsQwX%GgFyzaWviTkXCfsU z4FRCl#mPtJ&}_XQj|W4}@KsG{IKnpt^|q?EikI(hYXOQt1|+7p==eVCV$dN}&S)9& z)ah$rr*XKGuyttc=665dC2lq>Tr{I4yNhUn73PM)-j1It;-_KMp?iixxc;_bw(2#w zTMm~_ic6tCx?^EhM_6Oyd*JEQY%^SNIS0wU&31%cak$78t(6ZXI3pw96mCv0U;gfr zva;QFSSWOH0+5`KiCDXwq38P_rixf@pa1Hl-s*%F>d}0*di?bGK-kvl0R<(xWFbc% z^+_I$Fc6n-FHc#xt7l&kFw>L>c3;(pBDZuv3S4e`2) z4Y{+v^97w93og_9=cr{9Ntv$qbH~o_pK;Y-cjDvDM-kDCgNzpgiWz%N*RM9zalm*8 z|6%fwKu6)#z5HZ;b6JM+29pOHC!}BKPpg@~UlE&`bzzxX#o)hgAdR(wg+}~Zr0u6! zmzDmYTc^OPU0jN&8XU14&BRNo`o-743feZzHW z1hHDCnC*ed?13y)3Ir_YYMJSjDV$QejH&EuhR(?-R>M&q9s4IOy?u6Cvy55{5BI?F zFlUeI^82CvZ3|_h8f_ZUijnmgk#+O!$kqhNSes?q**?(Na4cJ?T)lkRLQ(H@Y_q#g z%+Q3yn08k{8#bT+LiVC|YZ4OSMxPz8+q>C%m2n@}r+e;V^Q={X(7@B8*IUn=%fBgF zH&shKFIA9mhwe>5M93TIEzuBIH1_G#!|Rv;=@aE-)a|8IhSrnBzj`gG4xq~AeoMl3 zyV!kxj+<&dJrX^^6;a6OJZw6=Yy17#VLHj^c#DQmxiFypw4eyUX2`l3KfQr3g*JaVmyg^pslnQ3i*gbRqbecMHv(RTq4#IxOE#AvPg)$h*rzUue$yYK(-7}+AZ zwszs-`j&onP^;aX)zx6gLxdrTG3sll?@qK~4&!gInb91>uf8xOxm*!N`Xxck`cI4l zti5-ie)##v$GiK7>EY0Bqtx0QBy%?%-z_$K%u!KW>+F{(5C_$pXeDXauQ2Q+P`9n-%DGvcDVgTQ+ z_X&l?zdrK1aORoXk{s!5+%*Rawn2CwV}1U#91=O{r~md z)irD6_yyXn#_=YzlMfwzz7%l3nIwb&E|w+qT3 z>>(`ZP(>hDaX$_BYt;oWGML4K&)?J8gvXjM@1zTT@qRJKzI9d~rj0RY`ao#jHjGBG zQqtz?yRTk+@k%HZ-W4$835tNlk60JM>oFB+*SWbMt9M+@4EGOntN(Pjzkk0O9dVkB zubZc@0k%h<*6>;>?%-f)%C%(eif+E11Mzuu0>>F;ciC6RD57OBeC$qpX6@>?clH@d%3;>uool2K+CBU9%dYl0JRPHB&nM_uu-T9!TsN$aE!9F-JdcBd*DM zp%!J!KI`n+NNl#wC91=OL~xRIEmT>f1@^l(Wk1FVCcF^tu&fR(8u0FVyC=hxj;6Ck zo@LlY((%f5S}O0NyZN6!XQR<9;8g)y&>Lc4=bY$~VfM&)TdpDXCU(==u2DoY&Jk~J z2w{DF?bfNhZkeZQhz83M*rTea?X|HESr9s<%0%VNL{u$Qfxb2mxn zVYTp&|MTB{`{LV|3Z@HO@Fq!M=G<_7^2`~=W(rq31zMo_mfy+utKFWw9foy`ovj*C z1~N57B6XyYu+Zr{NP%>srs*P&M1OF3R-#z8)lRf9G9B@o+)XusUNy`uYdWB(Y{`s&3GIn~S8q;Ss zZXST}%WrFpj(RtmpKL$&UC^YnPNbCTLbr9*qbp@(tRUN@ScMv3$%M;PR z_&0z1=KenO^F2A)Y(D5BHk+{#Ua#SlYDUXeT4dKOTOaQ;`mOe$mv#PqxaoBtN#5zUJ8sp*S6Dsa~^a7ZojB<#CF8$*QcQ`p4Heg9ND!k+i5~J7)eSn zPfHD{P-&JGeo3R<`(?8Dv~KeUFK&YPQ-I2K8(#5#!6~2p%cR zt8uGXJh6Tt$xHe$O;tjzPCnc-1XIgRqf1?~2TVd}Lx}5Gl?0}PQIts@w-jPh?Xt|v zy#P?Z*wmV(CNtr>6+tIYGr(6PmkV3BGaMadKS{4Qa&BtP>+|Ai5d}dyAe;;uo+55H z@eqF{gY|u{rFM~|E$7RT-=$jK*ZK$e5>7AzZe)doMYq~<)_ zRetju`%_0gyCR3r04p#%kh`eXub*b@OUeR_Uk+y7rbut=f$wMtDf;N}oXj;hthVHW z-8S5Iz0qn#1NfM)PEP*y3$Zh3-4@8SlAx7MhWnL*6$aIlTL_y9ZHt<06hXE+3##>A z2b{jjSaS2w(Ys`#cl&uzKDoTE_cyZIVd!LSp4!(8kCegs>3%H`r$~MnIFO?3lW){u z+^rSWe0uyoYmwbL)yDofkXQGML}yzi0<4r7bXTtu`Kxcr>16i)PjHVZeDynAP433y zyAL^N^Dg|J?QY&Te3R}DFrI-C@l9pUG(g?gi+wJ;XcTHhE?d`^O}jhr>n5#n=c-(I z{dGa1+N$xl(sY$oB<62AH>pKYbIp;5w=*n%!d!0DxNr(3z4m1#3zGekS@cJgstld_ z`~|XYV$@3o1GdFswm;xn$yH7*dm<08P*?_r%0;wj_DDd_*cO|CWe`V9zW$&8*T1_Um8soa*}2dPSED?Z_WwD5Q4LjEyoS-JYGS+7K9!wX zg%$c}{jhrM1>^C2%`WG|oWo4oPOI|6cDniDm!Fon1q*fBwP{k5Mt%dr1#{XoY6srU zjo1o0UcOl~M78C-Un!O~E8b-J*Vox4two(_YMztj;=DdZqF{wq5Jy0`l8bJt`&B~Du?sgE(10K z_#=7D=l5&4aG;Y{+urQchNl3ia?YlUl|-lwaAtqmeRY{UJa<^)CG4yF(~tW|w>6(i zEz6tLrd>EYEfuc5_+3#{DT*8I>iH?l>ScC(ri_ew*DFlbVn{W2nO-|0(L#vut?3)^0_kF9|Bcoz~RpN zY?N(!XjxP~cQD20j;`3S5qPUd22KL4S}0<7U|LO_;7I65Zrm}k5Vvt&!(ko{b!qhc zaNJe{8%d3FOH)l1B)Q)g%Fg2Bv@=2DfMv0CU6Q(7KY#tEJleplnfN7D8>22IaYCs! z-ap(Y;pFgX7E~d#?}jecj!}fpJ-c55h5@zHR96#4B8!8mVaTa$xqlo{v^DB+-p9XV zj&fgq_uct*sa&a3Qz!6z*OzY3uFspz3;S+6XTvodJk0s0qv?aFKtTgqu zVA+PztP&qdW#NeJ8STlWi)Y`QSzYPYY}^JBnP1WW%b%zkHF>k?ILg&J??hsxt)@Uq z?)=5Y`H5^Y7@GP{r)PCX)2BT;MF)eBgX#`GLl2(h;^UfzxNvh)5i4gR3nziukAK;U zMt48V6hW$);}Dxdcg|`OAWXm$N7IbU(-x>WOT50imH>vaXNGs)8)fsbWzmrX7j)aa zy%OOv$z^>sBG_Mh*T@iGby6B9JWC}NFuM!R5o;+rO5h;-9WGhBlgXEL)VV#=1*!!9 ztDi_}#Mc@*ZOtN>*Qnayb?D9UfrFFWEEmhI(#x+%QgMZ&S+Ayp=TR_&6oLAXZq+F4 z?4Lnu(6KSfr{pq0=2UEZxX9P!Yi7N&90tb_W*WOzXTRGV?m)zN0Z|4`Lz^gdwx9PA zgg>QpguZn!lV+Wct@^(D?!<&>hEi?Z&AhhgtNrDD5RIr=H^5x!)!SOT8T)13X)})X zJz1|SR0o1l+z^e*7ll6bx?9hgiuwof+6@UA?-@UHUkr5dS%8J&WuP&9%5D=LV3|Imw$7=G(SmXHSfN)=M^L7RdzkysVd-iNeMq83b3 zM}oW5RZBVtpB7(@m~fUOHZQBaWAUgzN~o{aU3)B54#kRkniCLzu>jyX5U-9Gop z&OxW;h}wsEM0luy%#5BLe}1uW(gw)L6%pJ;2p{D7mEe%pzl2sAc4uV$>8wWWQmZVk zhO#QRYr?rR=Eym2{`POayM~nny-bs{Ozm&TjVVS1)Lz=JFDlKVF$+nYiZK80 zrVLoxh&CF);&81+QKQ1lG8shl&(xG~o+pa^k%vNdyWVWlVx=1jD|6O1K)uyGUhOuY=d1u4VK8_9K0MUV!JB$6)CbBr3+xnVbmx( zlYBcwQ(vnH6-R54HC3v_&$~=iJKKE<4|DP~Y>z%|f$@=3^&Huu$1q7D6FPiELLWPs zZ*ei9IB5(CVufvkqR7atN-hLpLsjMK$s1Fvv}$&zqZ%;}NcMt6a?VcAh1i43otk1( zMl@tuw{Oo%C3g5Wsll{|pe0a=~E-)NQ z2PEQGU~0#UX}-JLKRhOeT#F52lpEXJKK}HHF!#%+ zhXjwC=n0K_(<3E!`M1Asnz&hzDJgzDAyrQaoHs{U{PMMYmlwhPsh^aI_x4hf@)M~X2 z`XFkx<_RU6ytUhs11%!8N!#@X9nKM*U~7S=i0Qn?VkLA$wr=b{noU^l;O78ES&`YO zUEeg|0t$rb;q4P7JAbXP9~Kz`3HY|Sxg)#e_F_{pSTDeD$e;vSKW3;`EYf_bBjP?@ z+%4wY>4(2k)2&_IViD-Uel7&S7-qHzw=WBj~ZJ+1d2?hYF^lfYLd8#iMASiF=u zkhJM^3TI!5fi=j+NeeNn33p2r=}MTfcJgaEdR#WI(@#&4rj*KzG0xbEhlJjokRTX$e?l!D5Ng7zgXl7OwNnL=XW+nUXl}lIF(YvjTleIv=rYO|^RC z?bFz4=z*Y2oa;$aItd5j4S|-P>{}&Vesp9pI@)I8t5>(x%A0~&@d*UrCOWE7+Rc8A zoocFz%FWqDy;93G_qll9R5$yC3|YGwj04dCI53B9iafFnJDjT-!yn&Kvcs6UEL%|5 zGs-W&(?(H6#W;Ut+tV@N1R&`lXKMUp$E9=_YxaC*WKP9{qMcM)gHE#!gC-dEYA?iMJ4H67uldS zjhjni#erNYf|?L(@9K`C;_3MI)E%d>>Y(dT{H$GvAUHxeD!1*(+ebB5mMkmODrf+z zy3@SAsp-hd8C^hy8{UnT@ndFm?k75L8#Ciz@%4C_@kg`XC=vB zjC4L5QSa`LAD$l?!2!*auh!E4;5QEY_fK?}O1Bod#Krgj{eMdvaQVRrefsl$XKIy!rOlHA#F9=%^naA|qr0 zFwPds?Nkc31mMcwy?6`9_%HwW!!L&@RjPwOK2fLlx6##Qxwl>T?P#8lgJ2F51Lw+- znUxQH??&w#aLz`D;LVrvxLc`uqdV~QX@55KD#Fn(g>Ru|U$$bGMf7%tl{c16ty%W+ zj-qK7&5!@(bB67zL*qcC?Zk*Hg+PjOeVF)qvx%W0Qu$)WlUb{1SLh|l|pApcw4Qv+e-GsJPd?ugnmYy`e3tU@dNI_lXTJ? zhF!Jh9~LXuXr_UFmX2S3QLGv#zoNc1e)_p*uVQc1XuP|uU!O@(k^eBZW7_P@Ac6Oj zdghCTSheT7?RUk-+3arj{`--U&#hKx(;sckZ=|?c@#vKGZoX}4h9IOQz=`8=N%A|9l%|Z^+r?U|LA-@{K|^_WK0WXkV2nZ5OO^0LQiI$*Zu8+_ zvSG_X+V6R8)tj}d4z-#wz<4+#hlK2ael#ILdVs3v5*5fgSQ&a0Rb?M-E4J7P)zlD8 zNiPbS$50H0r`SiQ4zu1UpR}W(UN8f~l^H&>-TE_h}Ngl6Fpa?`lRTNm7FsX2P^zkVS#JCA?;Z;8CSf4a}TlQMVdhKWH_(I%UDjO&>J1CIi@^&MLR zeTU*Hc6NUp-~W$wi$NJfA0ypo?GtbF{Bb$G`_X&TWcC+U_0jP0VH??t-G0|GLgBLJ z?iS4VvV;q$k8{(t45NB}U8Xb0Q{CLDQj%1@ysmQ1 zL{&ynilPP6X@ax(!D!s;t!nYxax4DcrEG@{U5v;JF&7--2?ip{xVU?aP_dz48UdeO z)eYo5-2^NIYMd>6bc3Vftk>HO1flBDmYl|Lgh%5+G-$#j7mWOcs3nOcYl1y#=YQ})RkzBMP3%j5EIxI(`=wU`t>=5?8@IRVwQs2q z*?A}mV)d$cTX4b3c!^pElTp_0C(%4>Ml+!dSABW+`6-=vlFdsT-a|{VX7`wWF5HjJ zFup8u-DKi|cU_d)kewqKh8-g#U;*$IH z9o^KjIhYVrAWa9VpN%mI9)7L0Qa8tXg$xo}&%>u>%ow~uG~b5vk6UuLv)pxt>xYLU2Ytx;1AaF3gn*rI z@_6@1oiL!Mwz_}MCD-qWN;by|VR6zJ8ljK9!xvk;C&q)(!y~Mqf)<$9t%{pD*$1sm zgJ<9fS4EMKL3~X5b1s%ZrW)=1FlV`5xKStu_on%hLT+e_&f;Oep-}SU|MzDGgpA)* zN9rvR99*!E;9T%ppA zJ7hsxt)^r6$zYkM(=OPWrlr+la&xZP>-Z!7)_wk9s64iR{linb{J6f0uFlI>Xe%MmqK$%>#8?XSBT$qk4AE=+Z*U_N8X1e77&Q^>&R9jKvX|KZQBwp|#0&x&_< zGsZYn>bg_-9{tWbbKuj?rsJ-k4OhGS2S;8lwDkG#5wfJa+)*=yOWg^yPERh>yx9YC z1fOzEW^>8q6kbt>iwQk{*uHgM(h*5cW{QEkBG~K{uNhmz$}_2uao4ATq|>RF8j;0h zZbkoKHi`oGatJ3mYwQIzeM@r zVfFmWPP>-Y^g7$^MqNY#HhbP++q35@U%%qVhq~6N4tY3FCazI~Q-?QTIZ??^G^l%~ zz4c~>Z46PO@ziN0dbwB!J-6C^B!)|3dBClI{PFW@m`_PW7Ea1Hm7AMug*gpe1U>br z>s1Pk>S?Q7qAu#`g2B2^1F)ymE>Eti=-fn~(~L;7z0=2b&0!t#Gr?pf96JjCKST?l zf3}h^*MJ?G00j(2JgSf)6?HIIk7p>ZNadSPqwqe7xI( zNbc_MC}IHw?oZ(kuYTH)3h7Pu&(HG($3=)cu(OZOMm#1&M(j2{HYymPR0yQfLJ z%8Ao#x0op?JWIO=Lh>Cq$wsLxoqTt4BYP$-T)~iTD=5pcpE5LTwCW&x3lUrJ^$c4> zzg5b1_1dWTT~ldP0p@>xpAB*E=8L;W$fAZom_MATug(*vSSZ}IT;7H>xve~^*R|5y zlk?LC9BYYCTIjU}#=MS%HW(o9a2S;ewF-JdhzcxPNIo*zky*T0qQJtA<9~z*TBmhE z8r}5?4fx7cGvu%dl{4@Ay4_uT*i0&=+4B&hpT)Se=R|gjk29mFzg&-COV39jw>l{O zru5w!xm?r z--XIX8`|xF@~^1PQXRbBj^}D*2CW+O!09UStAcILzyIUUKd;H$ecGVA;!WM-I#AFa zoC{49a6{7>?s2xlXecTKMZf>harO@*ue(ffm#^=(PMs_-pykQ;A4LAR+)HDrA~YNH z#9grgYkTmtnGsa3U;DS`r2@l>-dH&y!_<&seziECsjO+FT-7UazMU-@Nw#cJ8-?Xs z`~1u_zxkT&+2rGZwa9EX>~1sth+$~8^*9k;vb}`vP_C-BA{GTlY4Z8FdV5>0Rf{c9 zNZ4@P+S3zN$_{#I-R{lsq86^NP{h+4V#p0Ga|xFK4*qLRsu@ z{pzce(6su?5q!xIx!UA@(tM}Rvf=4}38JTE>x#k`1|(Zi?xXgbEneew8pL$g^An{QQW=JbJdprnFI+uWnKReN)CQ?6dVzPbGFyNg=m>i_5Hy_y_J(=@w( zKqD{68}6>z?9A+R*K~EstV*338i9b;${jA@fNKe@5eSu$qOz)5P4|rL*sjsmXvPcP z@!#=a=VIDLc|GxKqo^wu5FUtH}_>!vs*Z-?_)dN)bpvg=XF3#IE9B~TetB5C^ z?+<8G6Tw6@!!y1QwhvXaWp>J_J7jsb?#gnOn@_J>DE3fWg0gY~%FLF#Ci4gnXEPnX z`@?LxO^{XqI9|M;Bcq!wr}UN=iQPxo9Zh*d9u#8+nsi;I=P1@*)eeR-v!5(=9Zb2B zJLIlrGh?{B`*6LUhS3gf3L!aLDV1cY8Bka#cf8H}IgO50U-kP0spq5qbUVT2MlWIf z$A5W9gnY`u=0+vo6#c(m=PA+i!OWHJ-;*)dI+S+;0CXhjdFfOx)7bQh9j84spjK)OBq3TclRIgX^gjV5+@t|qGQ#|hm!E_Mh9|D z|Izj^X2|^3opC6%TBVjb#2hx^DIanOoX?o@UaC`{#!io87{{?*P)<>gacqQMjGOu- zLRvJdC;^qSuV0rzlwkX5S~Q&zkOyO!eAH$^)`K3+|M)~Y?1kA)*vL+B4{1V0WZc^8 z5>xG)J>~H8>$;?XI=~X9)4WzXskOVzpgCOYWce88Xja!;zWeEBWZU+V{9`C{^w}l& z5(aG*x;q_}z!^Wzj3_~@H`)MJ=FvN#vMh1n;s2(%Vrx0e&9!Sm($JL;cTrDOO5C>8 zDrdg|R@%X2b3K~$j-_Q-vRq&e9CA$*rmRk&nNUkf2*P%XRl&V~7;*<1?rwkj=*!Ve zJ8#gi%C|an_UkPpldt4XQ>n)64}bfETAD5FWM=1!g;G4LwY=7q5F3qVsuggC4f@Qm znb1$>YC1P?2G*7fX?Nr~Gd`8GTe=VWK_ZcAsG+7IcxxH0=S^youey-GZM~;dwV_kV z0W$(Wr;&gaWK$FXI}X8(**%8j;Ac2sI#wtBP0Cxp-)@FlA=PEzq&V$zTNlHA9cBd$ z16Btzg4kdG_-O_6C^T}^rmSS53eO18=wR)UF*I#GE`OR|)#YlG5iVS}b*i zi!^>qM8(iO9}@MK$B}Kt2>9mUC((|O8~xsOnd1lx1#BSV<$x;_Gj_$cv%8r}dFw%W-UwA|R4*Mr z?=;%@?alG6hfA#9;{30+2Lpyk-G;$8yxUv(&FXl{4v@{$e9#)+{J~*t;6J>(pZ5LL zI%<_$j?qR0g9|h(2sONg=&)M;C(K%_Sfo8Ke|tpONf!rJX8`}N!4t!W%gsYlEhB^Q z1x(EDctRE*I+f$momlT~Xt_38q>TYg1|4NAm%8!z>}!U~-@Ck&ES1VU8wsm*SQhjH zgXS2;kZuV#K##^fkp&eArbnF;PgiL5S|&^}uJ`Nr z_xtPn{VaB`e)~$UOSHE}3pHD|xodLJkIgF0AM|{(1oF$`X4U8JHPmxYUQjW02Rt(T zF1;d;i}ij%Fn7Ax+{|!e*>JEp@N_l)`_#(Fq;z`oU-pwlpp`;u5FKKRdSsYeNDMgC^X-8FjMda+a!dcd3D=X=0gg=(d{SadRN&kHvQ0x;fC+3Mg;;L>^y^3~oF1Q_0Md1Nj%lt2-AjeGF`02ggK1;r^jP8h zIa*fA!eBFWWMfY-jyfy%24}o=CEKBN1e|8*7K;ZcNyz89p#S9qBP}k^kR)n?<*E31 z7Bh7>4elbLq(Rm6O3?)4lcya1AcW20Xr^^Xw>MUK_Vb6$SZ^kNlN>388K99pS#TYH zf=AvC?jN^XcKL+bHA&8q7(-evD9wxNEKq0*3)Q+{xB<%oHCWF^ozh@SeEWWa?zJB5 zneO=`Dmwmhw_bHSzibM}wYG58K*^@%&YqUSL?ZM`_KUv0f%_5@S4Rb84Umk+HKlEI zYZTj51kLph0d=vX&Nsej%?WHlIg0p;BH(scgX=$T_?FiwPw=R#q^nhXbAJc@(}mvZLvL&baGY$?=pofqTN;N z?a@QrnLONon)b{2cCL<3jg52q*4o?MR^ubJyColdjTY&KcDNy~Sie~zkyA-h~> z6rK0zGAKs&=M!CagK0TEaK-5y`~)a?x$G= zJToz%0Pc!9a5j#^E{+p|J`N$2etZ{oI)Gv)`q%U8Yq`9is1q!#bU&y=tB|gU_FC-rtPeR=Fa1 z)6sgwRa(|ooatF+iT%P;wUf)9l#6EtD~j1$9p-DDwgNC$6*~t$388T_8Jet26cJGH z0a8UiX3$~3F1ApT3sNw((icY+liFcGMx7tap{_l~e;jGuRj<9b8f7w1>TJJ=t#-|Q z7dkvCJfp|@a<t@fk2Ae6^Xq!3(@=cpKqk55n6r6 zrBLIFy?}&u!ce^`N_IGz1*niKErUi6+S=937WMAMn_7q9 zm~TnW=;N}KmB;jiJg6h4n5Qc6aQmm*I>a#*rJcs1e|FC|kM2Gm!k80!G7QACXZ7iD z=DE{NlD`~mmNVc?EV}05Y`ut}-uTJ&$IpMhExrB9{p;tYT_Ov^CDn9sSJTjU3NOEZ zflcQsl`gk{kCUg^{yO6)$B~+Vk<}%QM`@I;f>X}aC9|RV+qhz`K7Ri2;g$^psZ2Ih z0*H!cu9h0#FP8jOVA#JQ36hBKl~lqU3UKz!eIn5vf^LGLZ>*nRRhpUemdQ(D9%Dw?Oa}7J<18^)TS2YGRN+u= zglat<^ec1KO_Wb={|MjmQua3O!-44!8xz?sfug!oc=4-)p+*7;e zvjgsO z6al#^qvLGn8|lMrU8g2L?p2~SP@{mreYZOanpc@zW;U(#xFs(`Y-E7BC`T>5X#236 z-Y(64$eYpJ&U&Z~flLZ{ZP-f7mBR7!Y?;m6MHY4-2V67NZ9&19RWCw1m$*Q^eFCG;6enCbi8C*4pj#ctKt<-TW0V6O9v&4gf z%DEug&(wD44yR+h2&|Dy%mNs_t31ao!5LtXZs|fpGHz}c>$!(o2TEOES>C9U#v;4E zT?Xr+#%LiR@2s;kEDrqE;km5SfnUy`uFD=Fj%JYp>=$upP!0AiiSQ#YA zgX(3E3y{{jI^~7~KKyzcFqBLV|MUE%F||04Xm#$e$YIHYvf9AA8|eXO7s9{G$IXY2 z0fEXUL!-rF=>#F{&}d|+wQBlx(HMHg`kNztJ)OPt>QU%TH+P=kttaw;hO-sRwQy~t z;ac2&e)#2mg0DGVx}({GWD;jIvOp8E>4Iuw=`h~D>}n@zv>G}p%e#50Jr7MlZ6gT) z)|gGk8u&HXKYCQasm80M@}e9Jaj1=x;%~ngd`fTxD)6We8e1aDO2ynn)5x7YP7gHJ z^Z)$M&#LaytqT6Yz5D6$?q+d&JDlvU3fx>x!L@~W+HXs^p1T8nFvh`c5*~Knym-fK z&xKbM9xa7MZ_C#5<($|M4kK39Bz)k)uurL}>2c|tEDjA}s&~=#!_am_V;RRkzq>%iukl{Xol4FZqlhk+h9%Z>hF$=epj3uF9; zpSJf&saosJ*PE4{cCHr#k##pnAw8fX$f3Ai@$kpxD=gpo^Yt9S)P%-RvOKsb*p3cl zklH?g14V9J+AEe=6f9JhZS&={bo^~`KlOQ4Qk#$yG-+1(ylCDGlLdMuUYWJ;{~DE7nD8;<(@ag?m~lW<~W z%fRCV>RH_@_*Sj{Bf57iLv{gC*u;+Y0l^eqQR5*4JaR<0+v~A> zRcy9EOmFrfA49!yd0H;zJK3kXxnCr>N;DG!C{cef0zY$V8n296;rz7ZCiRr>(oHPbRZNG^zaAq$y}PQRptk}-_|P&NogScz3{!mc#K1&Cc$ zX6V}&GrbSAS3q6a_suKZqLC~KOisO&44j!)gM4#~u@?jju%K=ZH`NuUE`;y3tWhxK*?BRMqx(O%_FkXZH?35e_~oG!kdRv%p`gWvDx2 zD|f_kuf-#;kZm?{=fxIRu7O$>3Ka2KUaezfy)p9)1zR2KMxBw9WAch!&BDHXbqbPe z7D}cWdyRCRDwyATR$vINRhl6!kKv5vI>oEUxu}u$MhffSuab3yG?L?NCnFEn!}WUk z@dLmTQ8(i$gD2sDUL_moLOsK*ZoAONUCnZE+gEaeK8j66?2jDH8}hVkw0O$-%ErPz zref3}s8y|QN74~mlRI|+cW^~8ay>op_VJI@F3&m%hl6_R#gn64LpRO*(OI>Tz5KR3 zdG~p@-%qS04NPT%@dw3Gz(0|NtA=(^>9WDpIvl2f<>Tj=&i&x%SvR4qV+01ya=B9M zLVE2>22%0#QPVRNiW-AKqXfVpUfbCou{eH>W{~LC&9a=*H+y3+m9tU3tQj@c5ldMk z6y?5B%9N^=a!VGZTHesh=^O*@R$D?PY4y-hwmJQo0((2ot5&IE)wytRuom<~Pa%`0 zkh?T!{Hf54yk_R2_Tb>9FaXms#YNdY?-c9qtO*Ov9T4XnAjX?72i&A&xdna~9oGLO z5l7Wyl#nB#ojB2SyM#>xt8lg4>?kjhd`h-If4X6;sc^jGbhMkfjSjqq>A{gqncfLl zp`9Q);o;b>NPg)u{XAcKnn8|0udI=J{pG9tWxLf|{(J+A-agJA z=At1ZWR!8H*d)iz1MOfx>58)0UmrAgP7+R>TFzL-QmG|rf@uitLZQ^fOlAm$?9r7) zBETIpX|QwUF`HR>02qUHmL(&~j!yh8(Ek0Mz*13eqhfGcP1&rMl%d-Z8rhSgC=!F0 z#cC>z#^>w`7^PBcb`+q-tYB(XIRbP(3IWA@foNN;t=EcxMwK>f!G=q&j6@tOVPzf^ zj-E)1wyLA=YZOyW)xZDrFib|1q1s2n`|iQp+#~FnvTj(;!0YhW?}=6Nza8i(bLgmbMm4I_)_aXcIoGs?YzSFgv|qlt zsFhO}Vq|s?8^&tA=TPeIAtNDReqdNgRH!t%w>*ZtfG)I&`&v4wg{vFBAcA#oiDz&7 zVL_dlp(PH?Na;OrZ`~vI+-`5y*Pr_JyLpdoI=s2*{V%`V4(<0-B$R>kZB&A7BOw3|o-Ltfi;(?Yl`^FsIw8t}-y~LbvJ< z7oHg${NF1Q2aBm!y{st_$2Nn&2uTKwuq@9~ozSaIi^q|ooAoAZtY^RaSAy7k{B_9n z#6N)b^404{T5)8Mq1|L`CG{`HIByeT_7<*TOFF_$RX z{b013&wc81li@JdeeP{-MirEINSwL823C;+Sf%O67++ihj>FOV=BJMz?{=t6?v}~C zTg*SdKuFs67IVK_e0yvN-tuN~7(@jh_R7hHfwV<7n%&G*zEkh$LPcoS>dg*$3FsP< zTzr0-$`?+WlY|%?#4Bzn+%0*3sPqR&g&gKFk)!fJf`m$raJMvgQ0ukuZp|jUKbmmw zkVPl1HFqy_m&?&)&0vSUvd|t1xn8^7XN)jd&E`RsX(<^CHo=>zHhRAj zT5LEYez^Qi`~7$Ut1#Fu2S7?^ecl^GKbfuOz9f$NRfqZy-0t;lVj-M2##UX$rYCCW z1wZn9KCb``3$^h$nykJ0AZFhlCtlB?x883myzw%;xcbdTBP-lK-n~P^Fj`Be9bYHg zJs7WhVyiW1=7jky1QxR%m9Cz>PJjQqjE?khi5(Ro{k&fn($AiJ`OR_ayL0#X83{9D z!RX1Udd??XP=NEhy9t?n0C#F(c0Cx;8VT~P(ENCd@0;EW)E^F)pNg}hJCx%UPAj?=u@FxRsh-5JJ z>BH2gFLNaf#S9gFAd)~@-OWPdfC)p2^cATRuYL6D)tf`}$d`J%HHp;6Rj|CddH?xt zx1jFbH3T`dBnHPidD*V@{v%Me0izkN#G7fn`RTv?_20=C_KhYEoRA&U$DRk$m`%4ko;O+&mGBx>`TtBKhP`!79B^gH=#?K-GZxxAD6&EqxD1a ztedcX6|)V5E&u_NiJYx!qYr<4_-K8fAz+_t92!m-QLpDCxFc>8u3jybIX^wGm0qa3 zq&JrYo`AROX-9tluYZ6!-4A4c6fL#^k4Jk(0V82um%Av)%a3+bg^iO8w_`Fs5NwA2 zVl{g|(?9$qiRJS`UZ1PM>C2D={Orovz_?jA6Vg)MTZrgGXhS)>WYRpaI||qga7xTX>ibNI0)s zV7Fij#;{RnRer2Qnq);h5{W=grtcS>rf#cM!gRBtUb2izs?=)Xk#+|_82#agdr#Z{ zZRr!7A6ccz&;1{=Grv$YJQOjmWp4+9%b}Q#pS##ReEjg2KmPS6K%?Lqx|Qr`8VtAG zmOZJ^Y^G~QU!&weAQxG%gYv;8_Y=g!yDi~8-$^hJA3u| zO?f)?gXL0f3|Hg(T{~s{^3aTYNOlI}z?Ln;PUME% zR(dMG7t5Y6dF>aojRU-cHz+4^YupzHu=DEG%2lORtPs-ThsSl%CCTZ*mrYnfz-UeQ zq7|C`e4%3+wRBnP(mo*#(rnb)lkNQd_2IA;>H#gMzS+LwmPh!M+h`400$s5Qo#TWM z(dj?e<-)UXO9p2J2B9)mEWlL(bau6QLGY#07++s+_lUO(|M=BKwwgc5P$C}nTDUOp z9kJVfomS~&MRvTiFkiu}q-U+P&LsOQlaqqi;bR{}6Ih<`jhx1=%Qz;G9%`r3+0!)z<{YpyW>TO(A(_<sV0#G2>RTc#@kYUHTTl&4v@D_VU}8&kJ3MB7M#iy>gx-zS^>b zHvH%DoYuV8hHV@+$}NKrnpZ#X-R^j`w~&;!$YQKvgezT1jV7Hoj^{)8$J{%W{OjM< zmh;8WR?1l3J=~Yen27y(=#T7-|1O#Q=`*P%9*i)nPYRM*peqWSa!T?FI??9 z-@)L}vkVqmys8LzjHJ`mO(e8AH;dyt;dMnJK(CiBMWZ!nrO%J*(h%~bF=!n)CP;tL z!Ze$7I6B6Fc>vo@v8mxuPz(v8F6VetBeRb27=scWI&juZUb&XEsya=gk3#C{h}eM?OS9Xj7#I=@UH!t3j(RuZnR z@>O>JUC}ZLXs;me5i1!@q*qtSF>(6`lyt(zO-WN-5F; ztMA_lc(B|*+&3=Hu7F2%{p&=K=+yKW0WYtCiT?b!TQ2r@tH6xhV0N>2F{?JKp_)H= zMGLXhJOg~u3oDgntY8-nwMzKT&l3O?>D*lwb!Sj1ibt1vg?wtGUab3*9<*q#lHImr ze^TRB8#uwb+w`=H(*EME=m|f(;n=w61?=6B&k#Bmt~=6k96>FR=jQZrNLR?zXmk=jRmzn7h|r1zq^j)ViR=!1 z8U_F}!Jr4@saV!}VxbZR;oLL_xr-)-NH2)D1f>jrKaULiIziuX@T)kQ1zVB9QDoIJ zjEEYV*tj~*^moly3QsXq(6)BClTBh^3bp7CF6L}z_bKag-7g7l> zBSPVELB31s`5eL*F~@7HPE=o>zJL??$OKX^_+~k^uzVP-Hk?KwdH@j zN0)S&AMjUDM{`3-HEG1IcjL_mzMa>16Gj{epSO{20bQ`VZ^WNweD3(b0nIOu_b@Hn z-bM@eVW&|OIjZ?GY7nO*r7Q1ta#3D4Pc?a1%5<8=)_9kQ=GcbFY#@eeA!yRZ!-G(b znSdGeJEaPnB|3>h2ZtVm0)cnB%A2cCN&tO1s--TKJ1*pHB_5((G-qp%$4svqBrW_W zAdHg55K$DhNH}DQZwuCX6nYS*Xu?t}<}9Jr+peuwF-8q%dQRw*9I5pqqJFWERTLu`orG+pL85jb9(L! zF>tpwd0e{M@#TQYlZ(@BVRZB;f?bDR&Y5Pu@btW@{r1hrNv=5>wC&ODy+hi9+Tl8g zHp{z>X@4BqBhcIRN~v5e4t5g+Hm>$8YYA|?+pG^1>Ss2}H!=V^%`MoE(T*ioQ#)wUd_HEM-g;W{*ZAW5V_$mpwpW@ z8O4@JHvs*rm_Ak6xwvv~$a8uJd_A0Pw)pGpK87~#pjJBD+BZ=0484c)!lkaePf&E)nGBFOFa%PW%btaznP zOLwLf%q)ElepqwSD8l==+5Y@XAP;VR zW4M{^R|+>OO4s24Y63Hwsg&&iC-XM77hw5j^7EHAsd?U5cCS$aV1=?Z*+A}^Y{KF4 z+T-8-__s-lbwruoq1FQ;s(v<5pqL=mN z$5%5U3=k!9s?GrUlpzV`yFV6+OOPZ08PKzsAdBbNBe+ z{f?(2??F`BAwU8}nNCMH3t)ylTodRYHoFl~?^aHz)-YUJ%H*f*ejYd?tqtA_u2xli z>h=cNGN+ZjEa(hJG5Tt;RFPL7uAy+P6NFHx>>}B^-}NcnNBxK;E#dXyNC}NH;O_mq z<`Xcqs7pI)&>Soh>e9UC!jRPm^b#))WXfySN8X4mc^J3e{Q3!FGifu;UCsy$Bw9M< zOp~PE#ZF<(lw8NSzFqF8c@s5hp>EEAq?AfMYqGzczIwK~rj(XH0oHJ))qPWLzCp(kmVZLeDk+2eaa8^U4t?dyWRG;3^z=8iE=NWan9 z?`EQ3t*c_U&0^@#dsOYkC!AY|R+9z1_1IBMLW8GIts<+}Gepnz4YUCFGj@nVXdo zT^mPzK6g2sK7q_%hn;_Fn+($iZT=S`OTEuFSyd{+trFeL9b_VH6zh5 zTQ^cJ<}c}}SbcNW3Kh}i+NBd0|y%D#>*^eMR_ta7QT(Xw&&*RzPVvTrx} z$z()+LRGv6TD_?G9aGN5x2uXo20+p_pY~(=nSEfO)ofi0SAP5AWubYVtDwGYousc$ zzJ2=ot0#>HSm!?EgjOX}5}4NUs&vR87EaoTAX`vuWu5|Ed*X_IL}r6@PF`p;yCE2Q zHyaI2V1rTE1)UEWyIyE%VnsyuLs=^FHRZ6qS{Pl1e^KwUZL(gDAkk~R<&bq+6dJ>T zrN0%9z-aO5D)Fh|VM5yv4f(AJ^Kx@dIJArznK$2XM{i_1@#ee8nyJ09g_Cn8WYn3{5&M{jquX^qm#S9I3zPqQw*2+6$L1E6zQ+%R zMc|}P6l*DE-L-(n@W7G*E!NBYybi_$24~O0TpAR z>iX7vy>`1@N-gM91vvrV(5^6jnNFN-q+wUCWm-H$LZzbD@{JJ^qj$Vm*}Xxk z4PDaLl0Qz*QWHQ-IEVE*sZt13wBSuE_Nx{}lg=uT=WEZ48W8u`s6gaGg%lB!h%Kpd zbkW)Wk5B&lk2kXjUW~(lcqNI1yX$!6!&G6ogMQguzqc;R!EQDpy|ctl)kE~u)nF88 zHTM8k@E|pI>um8(>r{uzr&VdtuJRW6w0QAlC*K;6P%;wv;s6qo^Q036!D{RR6K5c? zdKU|F5F64IE0w*43@8+MJbCaUn7ozFy}u^TlEy)83i!Qzb&-Dc-IH&B|Ign%yUaC; zFN;Nd=Glzc#w5l}%jy${XqTFu+?(?4P)V%ncTa0&frmaOsZy6bA;yAYt|}9pky{Xe z85_F@e1RF%&*=~>_Pj6rA(cEE@mDpPAX*LLe#>7jQ5m76U5pcUT8k;n6Ft^QnQFtE zcgqoP-)1V?tn}|z6MVe@_7tOSI`}i)_BFApsk%w1V5zNwfkVzcG5%W9Qrkku*33?&sFz=exSVf;ughD!$%TBL?D zxN6=;1I8}g-6zRm&uV)O6ZZ~-;_+e(+k=Za4>yG!uPEz%P~9CBXnj|eybZ(SE z{-=>})$eN@vnSIS( z3l|(*=IiCy?@e!av_0F+&R_y>87HJmfS8&`JRCBTAI4+gqNyWnUL>Ehxk^*pjih8x z=T+gh&1SU&v$}Fttrj>_c%25~KwcV0KYab<$yeVO(oes8@xymNJUPuaEmYFDoCTpM zurkw0Q5Pvwwep74GX*q>Gpw+>>zcop&0^ZBZrUv z4vMYOEaGIEU|d}S?Bu8DGRhn{(4r9k!0ln$(OcclDMTEsJs$b4-4=+9aR&crG^71H zTJ0Y8I6ntAyqR<;}9XknFh<*I?EC|`FizvA9DRi6S(3+Y>f9rb7+XWzj zWW)*yke}X=dH>Ul1#!yrX8?Vv)k$5HIUCd50mM|zUKO0AR}h4j?|bc*r8gKzO9qo< zrMJF5R9pK|qV(wfpqM5e#Gyim0Sxe^7oe%H4QXR*&c?X7ntV13?brPse0r71AP6=~ zl^Q2$31TL(5NBa=j1XFbX-}|x@I_>-6&vVs32fXXrW^an=P{(Q1r_w{hGUPGQSh|2LF>P;BB z_Qs%%`-5TzmQKxb0TewlcG83=$NR%Q-KxK)|E_}OJl5}e)P#2IQU^DPL*#?gqcD%AZ5A805Suei(Im%R0FSQvg0|vewFy`LXc>(b%DnPqm=Dwtb z1}0j5Zjs+7v;LxNi{;dhzj>MZ{sa+Ac3J0&rD{qK50fo6iOiB5GTJy; zd_L1{w$hb?WjB#(!rEm;z(H%YUl`%d;=p3u-A<--lS0NKq|#uOhcTZ}9vXorLKI{p zl30vAeWeRR+GH{tk9~Ul(;3IJ8SUkHcynuYYMvJ?oY}^#i#o}{kr~e2D%9z4;)R<0 z5SIMy=UKfkY9lra|5F%c)AKrrfh{_6igo8_`vc)Zgh*^uRv*XyY`cV>R=#W*;JN1` zx1K2<5`r#QU-lZ)_YYPbFe?K|M=N)Pi;7B(Yf$aS#+cL40ANqORP8F2YU`w?=6EAX zcKM=?!}IXE@H$O;*uBxnhkaqQ?q%2wDXVAQ-mg}f_MUJ-`Rl=5I3R=N-|dzg{q>7h zhx?c?UQYM$v!Y=fk^b&&ep$uq**ZvHmGU{>h%@+EKv*lSACHt)n{(NLsbZR9hjl-A z0gQEB5hD9(j!EJ1@Bhp5qi?ujc4}{a^Ys_Mdvct~)pV)WIBaPm7m`)}a9(eqv>py& ztr)J9D!H3TlH4TmV{f=ojQMotHElR4yh?{ZCoVSxr+rfL_kq8g_@>SB8cVMo4SNbY zTp;|4)U9$Rob|gf)DAA`QgPuG&hSk=eyz5*wJK+}O@W^SEQ{6EF(?JywJANU`vb@7P zs%E=hsQc>Ws{$(Z^zrMrKYaD|@4x7vkSM(RyDz`_=6Slni?`Rs=?)!V_bf`+VyQ;g zjNtMp-!A6_`^qb!Ff~)5#oAK0(wqn@si;074qRLrxR>wPm3r^%jn@1PUMj zypfgp0xMf9%|BVT*X^AS1@Y%enlCv1c>Kva*FriL+PJXpOK0|%83d~(ObfF zNETFVj8-;%**QSIVyXFPmagwd)_7w}6X(M|UTl_b6yac=M4>E43tG9hWJiY8L~I-T zY^1xr6EH&U(&dvM-hA`BZ+`ghjaPZ|@~i*+<+m@J%|@l;A;ET40I+hm1@f_0ca(H} z7$~StJ$UK8I;z+ja^D_f4x2CKYN#OBR1q`V1hsoT8$>8;F@Lp;)w8S)HAUny!dJ?m z8)WdBC7%ECv_&YI4If-)h%4w;!7Ckx_(QH|v$*f}3N4~LPBdbzdQV_v)+w%+@ot%f z{&G%Ji9%+8KDsBkHzOS7uD6BYuR7cx5Hm9upOF$YAiFGF!RxdW18=+q&m#8e=_YVJ zI`w?&`HQoLR;kerp1a2SFOLZnZW$`Mw9!sTO)Ey_W_xW=qnV25+=yqzt5hrhJh=^)?uw?yVmRo&{bIb=m#)5ASod@0TdL!r zsh{8OgZ9z0D+Q?<2?lTvZ7GhfZv)&N_9~>jvLK;7UT%o8xOK@ks6W|Z983fOm^@|$ z@J|=@>`A7PfAPbUZ@&EMo8N!&%|HD1$;)qFb7>)%(1GQ~`qbx9S8D+Yq-9b+Wyc~j zuIlAV`~en6cc`Cy&VgI;{~UicT+M;mM`6V21Fp0v@avo;3PyNuVDSf(5cF#Fj0}rQ zr_?yhrqXuMxZrI>khMXgzS#}OJ~;g0a>K8Hn;c^@>MVMdE#viUdy@cW-l3DQ8^fQV z&c_GcUp%F9?D$$4&{YgxzFacxa@848X%EOnx5*{m8d+g>J>Mtxd;#Sp_B0*pjn9O! z(vj$y@waO5+Bb*(0XnV?T*AyqWLqHIkO_%Udr26O?y8o# zAx)raJB$%@DslO;V5xyI&o^X@amUJs-at`{AW1>{ z1z#d~_WIVVF}-v?{~4-2GC2|<7(SEr!_9R4{sBTX|5CPKMi)^YJ3&=J78#Z=3vb`# z+r{+p(^p^r{ojB6?CI~M;mfCK%@WE*#89lBRQ60=24$;3z1-*uHH}gIRVjT1U62r9 z+((X^V3yJ>m0fm?*#6D+?RH3ADU2<01|r#+yPu(t&E^xh2V9hTvH|=>MyI7U+W`|9&g+~Z=jrN%x#V9hiNjS*1O~RJA-7d;1uR_NS(Cn z;!GoCx|Y)ALb=N11w1JU;Ze`~^l>u`SK|W~YUYM|?T9xH0_SE?)JW-+g`iaj$Bq-j zPI_%PNL?98^V3W4$6ue#5|7`(>EQnEcCjLJJD%u`UZ;EgVG<*koEgU@>9Tlrd3;$y z=ScfhYPyrVY0+LT)*yVznE<6+uV{Dc!Nb4&3~_@tbjS2NPGYI;Rzu~N>vssUsijQq z^s=1KRSRb)FMj(^U!9(Oxm-N`@zf3+;ppNdLkYW^LfygYBJP)q2igP63QvY)W`a7PdX6LPuZ`p&1O+n(49tO&)&UOR_(E__Wcc)8+edMdsH> zWYy@$lhqRb;CR{3ALTo$UHZ09el~v;ZKlkpHOH}mwr#aY z&c0KwK(oqw?#X4_o!3ryqD7M_2yzJsh+I-(!oAwu=N;-!EDU@tU0F|9|g!|=4- z2IWqogi4OD6tczQ`AOFH2$Yas6_PIot2-yIe+!^hu23JPyWMy{Q9exKRo~bhs^0&`t`HtPcJH^)^twr2xcp` zz5G?ywMs3|vncC_mWohhw4@eLZ!@wsx&-Y^GNl8AqCf2yzx?5TM1fOdWYKa!3=Kw~ zew}nqP7r{YwBt3cQ;mln(yBEkpE|SJR)?{)Dg*Y$|VKXkCZA=EWR-Awx>hNgX2^O|4%{%Uc%VrD=6^%v)|q3ea? z%PJKuATeZNh5(2oLK6;~ui-4XM8{lV_vyyl(e1;-r}xpx6CGf|Dj9mKJH6hixbKNW z_v@T*0frTEGNg~n22fa@>xL*(0xYJqQ8cl&SdnMhBTdD93JBr>urgYv@=2-dQU8AT zmr14O-%MJ~L${@qJ}sIu8)HX-$MflN)JG{5&gpzr{hRIn{&DRu*F2vL$RkR_bmiU8 zfjkatW5Nl8P`BUvFP^t(0l)t0pK8_Lzj%|q{OTxk^vxIFeEsr=|MVaK%jYH` zwp1%4W4CHd;)=qRsB;-7N7w4d0q0$#(Lv9^5eR#Ti(q5kQ)|b?_Q4M?(}|OsmJAYL zJA@=Dnp1p`=(F^~+ZSS_1MuQ8TFKW`CN$F_hu50ikq7a}1Fk?z#xVflc{a#aUXurZ z0Wv;!xLk4Gm>u{5D{tjrHu`iv`#^UllfG)QYau6Z>y?z`%DJY?;hA5*J=%m)czd0Q z6fulLOeMsk#~W8soVyjt2uKK8MCOAPR|#4eJPvzI>v^$Sk895>)0Muv!8G5vs3~H0 zw7281a&=i~mKrKA#B)ZQzF0Ed#8&~Dwo}hiZR1cP34?0-^!ROwo$zET^zUz$+$_4M z7fr#7Z-?iX>6d7~dwt)o7cY+6dhl;RX&1?OaXoUN^o#%vOSLyAo!!5`gDP}O+t77p zkt=z3Q**VZbry2=>Ek$;Md>mnjwed_<<~#{@Z$9B+f2QbetZ1v5H?A{PVZcDlrtjo*{)wZcf$8&uE(wsS$XeBusA{@CAd;Sv^^- z(CVbWI=*;*CK?|;S_XTv@%75@Z_r#-VpPR=BjV zt7NnmuYTHtxaXN^Q-&RpGf^Za2f*-*o48YW(Z3ldYX9zW*z3U)o#+yKzo98-#8xKD zNou^|k`kH|91{Z}TP=}w1*xSqms7RaHqG&LJyPVJ++jszi_UhpKQ990pFZqD$63t# z)l3y8(hb&--P|g1@N;Pu&pQPL4v84glulI(RJ|j+&Jag5BaPAt7tuzmWwujiqAw#p zGO7JFQ5b11Z%3H;W^gl;7eum2_XGC^`M`-AWbG>kR@%HymQWszR{-mCJ_SLiRzxn2y zAAkJui@*Cn{_gu1sdBG-ar*k@c`1LDdhz|M8MY?kSg7q3#;yJ8#bu!%1O`e7z=DJ! zfIHmy4C2X>#&-GW?b-3k+k8VEb2J+ZPst)&$KizqR=9`;8EuD)3eOh+{iMM%Gp->r9XPJ7@G8~}Q(OvmP zzH6nv4u4tfG-JgZvNKtAcw1jq&1?VFrNPX&ev!!?D+?ciRS;@IQ|Q7aUpo$wcpBAU z`c`V$7tY#)b}1Z(TigEWvo0ZN+U)l$V4c;`L)H!5R$WpB>6E~oX-Q{i=ihwyBAY(@ z{@La6x4--HtM7mR?GN97`P(nQ{PKq`Kmj#({5+M-kZ$>1)>(}>)=-%3^CMyj$ds`k zgX9+4be1hwr!5NTk}(XN{()3ZH_PXjc^DL&Qt#dm1!qZ)+DF@#ZisaV9c(5fHJF$k z$%ziU^=6KS#z28Rqp?H>UyuhA-~;U0&RN03m`Cd}=0qBqw$pHDzNYdi7;34Pj`BK< z;Ur4hwCs&QxvVj$Uk-_Zwh-4nUW=-Yzc!a@ENpi*XDeImfnwONhCZQMn8T_b5gJ1& z-L4rm4UjTW@lbW@(L+mruX= z_U-xQRrdJp(QCWm^UCs|fW?YAUlx*NBpIVbkM6tAW%2=vN1jESnKC03>D zhTOT)nI%J`g?AJ4x>y%f0`D+LYU@u-0g#UlQ9hW4NV*_i46Trr0~KT{HMOR{8Mpt- zbKgD6EggNgL}7|;L@O~yqzR;y$|c1~+E>ua5~l@`bQw;EkS8`$V>t5XhG|96Hwj{@ z+(9fR-D)F$QI*A(rbqT>A6<{{{6?HPdnJc==PSR>? z_6~MWFDJCmE-LTu;bydjPNvY6%M9tjeW^g}^rEu!NR_Www4Jse^JVvbJlb2`KBRV6 ztm-3I(HD1)-&cp*hm9Rpj`N|9x3ZBgo4f!1H=}rS=krn@9Oz4f&1crI#jA3&B^KYp zRKSu^I(q){yC0vtetCI*^x~T@zyJE>)#(qv`~Jl-4mlW;eTz+(oqtoTr(s(da+&Vs zFoLHOm_D|~sfCnH4@T>iAuzAJ4?Fre87-!~suNPk^%lkWeJl(Xwm@T(eP6d;YN^sd zEC_w*MP(@P@@#3&Wm=@{Ej|0w+75}50>f{rU1g|-jK`fZVscn z7i=bIi>%lhOxMT~Yx!CsolezNy(KUI`Y^dE_it_P$^>(AXu#0`y&?4j)ucMe?1K#OV#{!`(IPeHRZc~e3Dcbu%x%dZcFmFFgYtfm zHHx?-)CQe%o(@#qxiI)IM`vtfW~q1-NI z%4|$-htha`gR_hLbiXkAb-QsJM;#0f)`2J4Wt^{1CZj~iUPwdWF?9ow|spoK(@=!dF3-D+N}4Z zOmRab#DdrlghAK4Rkz;)Y7+af0msr{LJDrOoU>M)Hq+MU_@WVeApD1TP%LiJZ9>~L zWEG^E4YhTYdh_bsbxP%0ww1clmI*UprKIRQzRym|baOE2z}CW!;RyY1TVLITwPF^W zw#)dWFUG6k!!Kd?&H41!o$a@qQJ|OFNI_RRN4)Xw@#FhFgd2bSZhQOF$WY|m6)reu z>MU>ZJ%X01tVl%ID(P0D;n`xd1hOs$VodH~w%{>CB6vj6%?#IQ1XwKz zCa6gtCSbyK0NLQw?nOWU%cq@-ZiqO?dSC<~9ZxR}H&biEtcR#QjGNexR6h!WD*5dS z#iKe0oR;(}W$nn&XdRC^tnlj_jx@z-l7O#1Ju6aHS?&M0IeOlqXMI2n?f&a8#dHUU z2d`@64j@XJncUZ<_3f~^ zWITI#e>du=O+zo3Z9Y8RTq+YGxyaOd5H)cmMvO-?g$bx?|zPy@dz!a1FeG@2L}3K*AzJqM!13XLb~W0m-C&wkWyas>W~tFijJrR5 z7ocD9d&|wwcLbHk<6$~FcqM>;-#qk9529VTeYc^oPFQsQ^kLq~u(YmGb@VeMSh2#2 z3~l@=b8lf?Oo7W+Uw&=`-yR=V314-=&;}tF1i0H5{FHHi9f4%W{<^e;qHXjoZUaz}|h7!CI`DpfVWZj&j!0(P6xWItsz zoe}+cdjIiuL(YuVUmahziLURS_Y-vA?ktu5?)4}WPL$Jct#Q=vW|N?|rCL7D zSONd}zXeW6L~8@)U^IT@izw$t|FcD^0gEAj1)l@^@>x-dUH0p{U$ z(pfv>@kRWg)bQ$Abm`y-?>Z_golfA!`*Hq4iUTH@>wn6$amN|Jc@HWi)ZDsC&lTVB z&3O9o{%JW{6W}Mg39oq_sD2m6%g65?7n!C%zF*CkGqho=n@9>_F?Wc1S*r)UM|N*{ zC~C;p0u%b$8O@HcPqBhya5q#OB9s&(SxrFc?ebC~?L|J9gfRH!Ims_5N5y87*-kj8 z2T8iw=HTUon|&zJ&`+oL_v_JkwYtASd8|9*j!Lqy=QnFDPOKc^pb57}T>uh@bFF3o zs+Sd>j<1=5TreVrozP4l(Nr`_rR47Z(bI>ms6ScH68->umC3O07I8nD>}IR`>3r&y zD&U>Sw0C(Z`UVC&kLVXBxBk=3?T2BF7dcvBH5up%`HN`w2!ngw3+B_rTTPdk+3)_# zZIsFadKdzQ?b&w!ac@P-`^QnfbhCe)E8=GtP)A_82IJ?2#tFfP zXQaLH2T$7u8`%Wq60YIiY(9(Si~dtHuZGl&R1PBKxGmE*ONBD6eXH%d@W$S*dRS~}C8>JqA%4(XkF8n<{i1oV7 z;z*LA*aVa}09tlzqJ^Q~1~8ZsQm`DpD1L9upYz=WvHg4!^5`c|%T}4DYhu!jM((GI z9cA?RFHcwMVjAkQ#qcr0%$Dx(_6GMV%L8=VDz&ISdT}Vc@ z0Y3>DDW!2h*-UUq1~JB>X_%I3+0)ETZy3_r%jYSH**kJmSUGwQ0B_PiH>=xCxgd=1 z7ODNT^Y)LAbD_P_%;MjbKi%xU8(xPmzI?i^Or34=HYQ` zceh;w)EFPeb>B5xHYa{u;0@vNfBmU9{HfRZ@&Eomet17Ksj%1or@wnSK!Xf^o!gSf zw@=lfzDhcqdk;kVh$Y^@(`|ZT<`h^@GVg^#7Ru^e0x5{E={gz8S zo~*1NQ`Da?C|xM&xZ^9_10#pUtRE&6HGti5A}g0@B0j7yF;sR`pp-j^7$8^z1-gotiop}XX^KxQZb_7q~~kS*RN_gjKg;2ym9<_xcT0G{h|r6CmX`aB)Zb=vMeJYI~#ID zxLtwRc-r>bhwE07^hdgTcQfTOGraz+`(vxT{y36AhrWH@4_kHN=zsa5_zsG?b(pT< zZi2=iwNRlG0PGIu{H;j2WwBe9+Fb5bH*SO0cNC8>zbn~TNI6wxX0%o$ihkq8j{o=oJmN6Ogw~vKqSqumk!h zS)vJ&esI4Yg5L}J#rF@(8Mu-GmxFOXn?LSSqja(RINolT%Nx|1!z}1o)w+4RGzgwI zWGU?Ru<~p=V$10<w8qsR|Ko3s+Ur98)l2{5b|~xp%~q7VgUO!CqT8|% z0d;6y_TKH-kbA>GN1x(Xi`UiK??0?r7{JXa!**qXCjOjn!&z_#LcJ9r7Yc=c+_a$~@>$i81puczpQX6;; zxSVd}cX~sHqNAYZZO0rI2N2rBK5U_h*noWApEyF@PG^eScSHN)y3uS8AbSlqyl&kw9mV2`#>cr8&aX#k|3G@ zp+V$9$Y+!E@iGTj}>py(;ZN2k&SNmLBt4*){@bO^E zXqFsHPwA;91IPdKGrq6MdYp`g?#;S6kE`bm)&%Eeiw#u$$k3gkB4T!Ex75-}@@|4f zOjaU3@L3{(lnrr`;q!dOM!`=KjAv4(R_z>!BOH z`BmOmB6eb4G#--Wbz^V`qhFYqoH_nnB+cHl@7=9F#<@By;G7vVHnR=kk{7a-Ub{n zX4C!CdIBwV@op7E`>@Z?b)4+I<^8CgG4-U7)lbsde0BTwVKhvZea*?r#E>CDZh8bB z3GW5_2cl#9MGFGgb~|V}qv?qMWuKP-W|--4vbM!mQ$wb@THh|x+_7zDkAwd5X3vOr z4ZWNvTc>T;&g+&Swb-h4WqKgr{;n22jWWhSSlxIe53i0c1fSH`G}dcM{&z=0U7?@h z312s`mH8uLQH9p@K0VeF9tM|JJfr;l^Rem^VHl`_Vz=wJNi z)J&Z32RXCH@|Os!U?I>T{6aH|tH1z;y$jA((?wCYuow_Ju2H|r7qxby>bcT@eGn?7 z^=3EER!b(!3t#Ju4^){$95rkSI@!_10IXdH`6)Y2u++eEvP=(XT_5&`G^Y*pT?Aj4 zbM`yB+6Dj>kY6p!%fn`QFx%cn)(B+k7WuSKxR0;!&BW~~!g$3^B&Mq|ym`ML@gnIj z@9!+&Xw3R9sE1wrjl>}`#%bybMiTB*LXyfc}|LA_~DV67}qNfy`re(V6>DXBjws*eK1%*ciQlc5=YBlTOq90suUc^Fpi$*J6m;9LJK7I zdKtm4Xp^{U&}0Za=nrm}6?4?nPx*l-pMJb4e$oBwPq)L)sW@>fZN0^-3e?j9<=NI6f}j|f>ClyJZ)ctAxyf!FAkAx(OZsfnGm_b|Gw{yc`RZ}DqDaG$dNA$rxOMF`0MStRdzy zu3ntUmhK0-%pzhwoMdk955Ia{Z%K`^_wIe@N6G$achI>Ls@=c`;fVV$^I~HNl)qLq zw_d}$wic;b;^*d$?td8CfmUu7o882`I1L(A_bz+c8X0WDKbQbHs($_S!^bi27o%V&eJ%N(p7rkW)5CWkZ~yx9Jx7D2?oO4;*$GR1 zb&2DIEVx#y9suQu8D`rZsvK06NbDs>{%zEfl#CkJCp8@%8C3dWsZo(7Q}c(-vQ#bB z%R0)9w6_=!QKT*g%hkNk?VJarPUw2qL7T+OgK2{)N`6Fm!N$LGFf4JLoAjM7gn)wq z$nR~pqmKMW%pM=e6gHKrNIJ5k#x7(ZiJ^FAR>wcTOLgVVDfNxb-EMEzd^PJyjpG*$ zqrx7X{OIaEM%PF!Db2?622|I8N#bbxVFrajp`E*XKxy};kr5P?hU4Me@AyTs=NmFh zvKoa7b9s$Xa!ID|(7S!;`R>&p-jHiuO!q(E-h5Jz>;n|;emUYD|8PGEqUDsb_91#?{ zGcumuB_?u5?lKj^gR4{-Jc4IMan+mqf*oqgA=)KS7KaR4Z&Z{H zvAkgFA>tABSG#F9612^91`I0mn>nvLoWw3i-~s96jEiOb_7}5MR;o&$fNJKqYKO`k zZ0D0-{rXk18A!#vdwZXS$^2<0t1kFuxOjSlmDAlFa;}1erTuZ6K*+ErZJ>T6@3feCA zKP>cXCT6)gl zeuTE$LKZ8FlzJSG3~HeyN06&IWTgGJ6VkseT~?JwU97Y%U9MN8t6JdOvd~gd8JBP(D7_aD|N|$gBmUQ5vPIAJ+eWGsl`#BE=gclF{ie{3Wr=@nC?Xm`W)wA zw&Q{UR17<1(4BYv@y5uIs&sm71&E#NjOl0i>afpJ#-b9Mu=UYw&at>GqI%)$oEY1` z{e4^b{NMlmg|o%-NxC;JEG-~H;knX&%1Z+vAd6n=hQ zX6@a_rSH#DVwfXu`G`>ypEF8~N~dNh)$>h|Z$v^7}Gw%faRBN_*yww&y~ z+s&D%!!MDlwe;yR_D3d7ipsSj$W}|buIqw79d_GF+DGEU=|(=kR1bZ_BC$2$qE*jn z_`&Rewi&)Mc$~C5Kx^ER@?J;(A)DwjUbxmQk(C1DYENPJO>Vc? zl^lei=*BPs>219RDjQWuOcZX&mVFM4+g2*)wbSEb{-Vf9b2?7%b_C{J21=B`dtM)U z>v+Bxwab;fTK`Xf^X28`$%~8YqwH?}{NrDoGhhe%Opq=waUQGejPQYd{PV|;tIARL z{V)4ii`T{#BAkJ5F81q?itp`B!iPR6zc}}X1NeUZ&Fzp9gXXEP>O`3r>2R6V{^3_g z)zjl^yZBXo{=@#;;?q6Ul;zSaR;XgO)77#MUb;rk3_F}rdUbf-eg6A$I2%siC1peJ z4VrEzcbyaLs`GsD>zC3YtNW%Nxg8|K=!NzxIR#4hK1*(%tSWq|mn%Fd z{ch*fE2=Z`yYIe#=qF4?$94OdSeNrHgcBqQvMG|r4hhTKEyIdPZM4I-U-|tX%U2b`hR`=1 z<=V@F0~!UkN<)&)bVolp+jI_=u}e9_>Uc=DinZ8Fern~q*ov?++KQ@pla6F}3E;GK z;AZF+Mm|PGu2ot@BgI!*GQZCj3tK%%GpO^SrRZ3U0_?xTLr3v>PQ_#J-7}8&Z@>8L zZ-4j27sXQT02Ama)*QgU8TY%$p9b^C0KUn3H&?&-rktlF>L->)|?I$MCfrK_@B zZ(+@wM(t=Yq0ckW;${9K%;z>gJXD+b!HPwT_{DevQI)L_a-men1B>+3sNEPW;R>)y zwCJp{fhI1rQI5#iTGGkulH45^zkFSGqpNYPFJbaIaENgxMkxqf*jU5ysXU0x|RF(_os?0YbN<9 zTe>`I@!$+vj6fj@Yf5CA715C_IIp2+)GrO9P?Vx-1}11hivz^%6vg^LsRFtUXpuCa zp6nKxka!2mUtg<{1nRX7vWviVftX`{woD_*FoO7qc9_`$uXa?sT(xNTGqXb!dMTz)O6OJXD+e)(?LeSX4AN5rC!JYX~2*n9OB zxCvs%I}-Pwo|?toPs^@X6}(!Vg^xezf5(VKyIE3U_&0?kEkl-4fIiJZTswpyQct+b zYsq#!^klKvu#GZ3@6L5z;IY!IN$i$$s&a`oJy&NVs01BS7!170m-7O25*BXwgy>uK zhYX=f)nEuCQP+R}G(F%Hw5oD=kQ(^dE$pD+5hJFslbg45Fuh$+?@eUfugYm`*jxBbGqaX3wDFrwKJpWv=UY1a z`q!^cFM`E-ohgFXCy~-*@4Kw9Be3NqVL9#cxil`HP=Ej!4VrdH1jY_Vsw3^ps!zKj&}$=fC;& zn=7=0q9B@6!J8^1zMDU1_dQ8ROq!BhZrri2QK z2Fkt+M~BL3YDYm;$;d<(9j(}uh0wmvg&_iL)~-ddSyrPKK6|xWzS1= zDXKF2=jh_J!03a{87h;WQ}VfXSao1dt>)`j{SS66jB5yzd}J-Q8D$IOLZQbQ4ns?< z8h)sXfqC}3lcQHTW4_Cz)3X9bv`444de?Wk+4M(`&vUEKyD_AeO}-)QEi#=rz7>pD zN!!9B!rZ_ecarURop#p)y_74`xa&F1i;KVg$3|bQabwBg(W>ySe6OoUy=qX{|6gbS z-GBUDbeF^2hk}%V6K$+eSw9lEDB@^YzC+|FjLb7NcTaj6tS7JPw@M z9;Ol+I`H*$e>cy&Su(?b#P2iFEV0ypR6ees=4;Ig9j0`(?~Fg)BX=4;)KzZumYl5o zQaE<_J>han1_XyW=m0x)JiAzJ=F4D^-DXvX01|7>D!m8NCSLlk4=a#YE#{a(=-S;0 zcNpjhoZmK!zF#BIW7rs8LjX+u;o|}{OT9PLB-`rm#z7WH<)(pwjR{Z2ZhsRL%`RXb zKCrsyZU%UK4b@H$%?zSa0Zw*+f-cFYyeggZ@a&owoja=`t4iSdm_9nCe6gZsLAlYa zHXFGsU~QL5{j0C!Axsy&X^-?;qe*EBhRFJs;W6ruK3)MkWeR-oIb1 zZr`nNIS#sG42euF%coOn$#tbsHJnR81;kZ>#N9uyV-|1%*exF^GDs;MkEUd`6^G+) zA~p-)bm^cvuT2rGybsZ8i1-iU!4?g#@vj6p5&dZQEv;xkM`Nv)bgW@WU ztZ_1vg_uUY`wvrm=t(_iMyIEWs@b{C4rie*1wHrb{P{VopB2aeOZBRzmR`Jx`WKaf z^0$9*I%0R%k8DRQwd~X&8N{Mba!r$fA%9T10 zCi|%I?g6|E(ID~L*RopwHm_c=F%HL^1ZVqq+gXqFrbR418u2xpKP=kW9P!hK_v2(Y zyW8Jx`xw2g==zMkkN^6&%6LQwDFzXbB{OmGklj8lYF1!C#+B>M)nRmN*lX zk!?2usLk}IZ!r_AN1Z~ONUIDSWipH+?C(Phnn&?Vr_)}4`gw%%hmOSTIbQuGfxNMM zTue~1R(_O(o)sLs{y)V#|wM zOIJi?v5ZU^c%|z?<{p9=Lqb28-@w)AIWKB44Y^m?0VseuUT6Lc^io<~WtpkdUFGN~KC0PjgLnW3!2Lw*$R_ z!!uc-q$>;1`XWs|IfqG?LNJVN6Po}-Fv@f`vT*VE%gdJPxz$RVrHPisroLPhdh|&Ke7ozxvZt4f2?5CEf>3b8vRX|N<(hTpWbDI#K9iO+ zaH{#QW`8aJ$s9?5%FDsJD^<~eC_zgbaMSaPNBL$ubO>WMJm5+9aE_)7qo6tY8ZMV+ z9=54aQ8#N91LguqC6UY?dadR2^DTwg>Fp-r0w^!(e7?T@cCxo6e?EC_QOChtiL(|fx>KzUkxmV zI9=X;{BcFNmPkulzsiXz?av!fg-{V&A(*JW}Jw5Z3cqkIqll?Kgu=rIo+^fB)-%uO2gYC{EX!m#VL$ z`B`(l8Z2%*XX9VuKh<0oe<7&{%5N1EVez6g3O~bY>P(!!%uVAuYIJu7tw&vNmbwsFsQxTc_~=@^3zJzP3h=0YmG)7VO`r+h{A%1j6G3w`=ni_PCZ0#PSKiwJaCjK zE)%B)Lf>^jJK5+Gy9u_b)zmh!L;u#)>mH9fODTfd1Lz6pSA?fzI)vzWVKf@uzN~}2 zYuOVIwi#`X$Y`nn*;rj0ZKWj3QuXD9=&04x92^+CE_py$XtJ3wTx`}zynX3cXNjK7 zd9zelN|Zl4Cz^|6GJ-KPUC(z@<_CU`b+vrKM|+OMm%C;Lz{iSnJxT;fQWFBqPa#h)@%yJYxVpeju0r5 z*344m3(`%8Qe1NhzOnvwkaU+}j|b4V=7bKz=zd|Bim7`c+KQDpvXJ|-@H}lBxpO7D z-{Mmm)UU6<{HB=u=DNM>RemQzBIu=y_wNVX)mloWtO;eGJ%ZzuZJK3ty{7NqBT^oW z2E9e!1aZrfeRp@C^zZaq?OQ}-n%!}XwVvMMMv)hwRh2N%# zhEUUas_88yx&bx27%scG!A8B&WC*dqYO`L-+AXm~pV|sU9wmmV8HjgLoH$fFJ!jBw zqVBd-Yv{2=jy#c?LEsE#9D+@%08X=1lB__k)-dGc8<@za~b`m;0hOr4iP%Aa{$i*{kMYKYVdipYB#;fha>-WH=_*Hyi= zZD*TzAE_e%@sS3+g-N*I6J$l8_j03-mE+23qi3ry!k z#^=z}xWY4kLuN$Uy+39;n6d3wiR-jbh6aQlZC>+|X~z)|LC0&eT9>N2Dh;PTSk92< zFtv;Uez)IX*5Tae8nqPt;k38da*Jxg(kAIY zO|gd#7uT&%cVjpTVYN}rNAK^+3~RxzviN}&P^VVUo&ND33QVlzsxTzG83e~~kmmZb z-5I6!$VGjD*U_-JZV(!#st)tadLX;!1HMpUgKgkwsA*p5kbvqcyXRx5#*t6_vbBHXQUV78V%nSt;GzVW@vQ4X!tZH zIUDkaQ*80#%YQuWaRIG~?Z!73bj%&M=7ttO8K&ZL4wxzmg6+@mKRx0$#gjYljc(el z8K0o;elz59wfS+?s#OPXhwS*3{>^H1`+hhcB}^zS`J(03|MW&P0s@CgyIvM-Ui?-v z?22JH*zAX4hnfu2AAYwCg5$;Fpz$Eu0u+juYQR*4HN$wR4+gf^>y=&JjGamBq#@Ao zSe3%D`T9uf4nh4my~)#<)uHnKUx6rgnwBrLTi^ciKb-|_7nh;7LH$@JGZkpZ7j3IMX{*KiP!R(?-XiT2*Q~IEmpVQa4>>|YPLa?HN1$Sgw>}gO7_YL#0KzZ*Qf|5 zr((InAQDbAkM2$uX0SSem1f(tBy(3~c;=!ju{j7C5%VBh?*^<8b%=r>t3g`Ps2-@R?qWtyZxny{`H2>thOs zI|eo$dn7Fkn{7TclRFT*AT6&yY@RjyUbat27TwZdoWv zQR>mb8}`G9&1yfA@UPt5#l;gTSvd9l(fQdi1AK}>AtJ{M_p-v4a#VTUzPPBDf)QVg zeBvFw{N~lm&wu^dg>`&-`0CnzfBm)}Zk|BNYJPfPInud@hS_X9-7AgJ920QbIHz+& z)#i3L_1tM+?^K%Ad?h1P?31XSq;A6X&Y}KmQsSDVNTsIZ6^nZ7fDMB?E+U029DQEv ziHz#Zh-#UEoSxwXh$}q8(+y1y(!_+OY^_-@GbHK_^ys1A(j}MzrM#k|0gR$V2GeV_ zH0lA>(p4>&6Vw!|Z3dX;?Jik4qNPd^L`@)+-J zKSLzjw~Equ@w_GcHjO*j=4N(TGKc${@o;;Ou!oX08-5yc!#*sGl1!d$zg+T>xY>JA z5~p>Evb+xSr9U3cClchyx6dPFs>3Ol?*vOC#J$}ILw~o|a@BfGs5DxYyaH=XtCwUN zJlhC_Df!nW`Ksd*ELq3zHO|#+nuXHuuEO;U@4=!YdYn=g4XtZAiSZKrWBbJy=Z(VE zOUM5EuZ?#3tfCCh&eC=+hn~UXpV#ZbY;0EAtL1i`QLN|z3nX%{a^0O^%Pm}^5+8%9 z>rh6yxlf0hZ#W(mele%A7*b6LwRF@%o_=mH8>RDK{@eGw5-eF4YicYJ#$mttG8fGD zcawosGtD;KFH+PB!B$vvY19LX%~2Hyt*%QxU~NW+2-2DAX?^2bu^JNB`9iIbe^Yi? zH|bT2z86b_immh7Ekl4cW7EK{#meq>MKEN{l693#KE1u2QwLv67-O5jSHOJtfzUK7 z;`K?62SYYx83IHv>W^Ec(&zzd>m(Kb6i~Z^A;eBs8Lr_65K>#t7B1nB`GcpEaqhUm z_6~{(2)f>Mtd}h;?qhTo{2T(6!gK6fU4pd3&L+C7c8q*QfE32;$;kQ+i>z|3nY+m0 zq#Oi%Qp-g?yNU{x6~ng8;X1fqGsI60O|H@GuJhVXogj+q;`zdqACx*FUv*Us4KKD!!si4%TiM}est8To$c72ZD*<9s$Uahqg z#=JJeHST&0bnJRnFgg&^+&*|YZvRoz8(?j9<5jQ49l2i4Lo~0SVePsosqK0)k>yH7 zG2swtjb^b7unrHCpwKjXh=|K{p!_nP{^Xb|%Xa+h3O-pL$UPLwcAE zqEB0FXH%?A?H~!dv2c|;tpzaY=kKSwQnQ8(StjJ&2z27k(ynTBIpE4C`-k-+oy@be zH?W$Wx*SAKJQ;=@lI?b@(dxK%%MRKRD8$sON*$=N!+~ZF`+nfoiiPX1Uwm_1YE6sh zq9l~Ain%=gNH+j_$qo@ADyi7b{l{6z>$jFq$#b>MMq@TA9TZ>ZUl(nT=@MFzz)@vl z5*;y_FM9O`_@(7;5Y89{-`}v5&?sjvw?k1IEkL6^-`+gj-t4<2yO)q5UB(ga25oBpEw)qqIsqfpa@A&)1Uuw^M&@m~M&@?A=6Pm8zGm5~iacK(&Epv7 z>NM;PG1OT@6Z#sB0N(M0hPJuwAK2w2Av-b@0>BCQn$_0zS%a}%8!J3A`Z-d?hM?s0 zZmW8JS;~pwbP+=RHhYv6@ym2qn<*i+*w!jnB`%S3q&TVHU&5%x(oCZ0taL)?@M!@Q zqGLCje4S0g3>T$A(3(C)bacE}pWfJF)CS3&`F`b?!q9X{0n)277ix|L;7cRfNs2#n?*UT1DMO!?%Xx0po zlX3-Z0+{4)D$_9h@Ho?hEKSPnMECPBsD^*BPc8hWr8noOnoOia2!{D#w2 zPfiw!+iSPX-qU{IkRo|wsQE@8nd$TZv-14G?ep`#B|Pl2*>bp?+^ijzM=Dg5M!70! zwB-yD?W!(mbO&Uya#j|^!(vNOB#CJo^Ho8T98RQ~p!rdZHoY671)Uh}NRYTj01#K9 zD7Y=jA7;SkTFP0~JPg`2WbUHdC14ow*LC=}lu8k8f#0~m*yYYg^Vm({qiU{FL4*6}e__ zKO2eXSFe;Qd;+In5)#tD+#i^sA#MKYjStIZIKEkAH_tcw+xKtxIP)4u$3{knh}$ha zU3e8!q`Z!ij#l@(c?{VYcf)j|^%9MEEey0w`ZBP@m=9eIZOP+oM5}5~=a+f@Flm-WE-Hy#C;$;@ zm+K9&RnDDW3r^1{RcZ}bxA%Timsvxxi8SFr`5tY8Y(5z~$~3Ktz9@D&%t6HtKL`uq z4Wjmv(askH1EZs2V2U$cwS}@x)!Bn#ZxU-&(P$UWtDztF`ba$ZS?dj*zhU6IUf6>S zDY=v3!WYAYnDo&#a-sl1MBwP;`7D5fVHXY#{i6Gi->+Do7=u~bg|rqt@f4fCeRy!o z;z_%|c{-pD(2iSVj!-vGXZXJEKd`G$J4AF)k9A^x05R4rW)}Q_QXo!OSc93w`Z@0O!B)TW`zg?g%8n*K!tlAt|X zH*K$Gb{AaU@R}K2>}HZoxZ90`S`~(sP?e3K57`b2BVQBXFCl=@g0zC#YfpE#toz=W zZ1tUV@$g}WKybC3jpmG2I$Kym6ydu!R$C26yug?kQ)uWlu0*l<7x$=8C-?$YxTS=! ze5;pLCs})fTo+Z1Xg3r?Mx-gF33?9LsV**?Dox)VvTM%gpw$@!*sg4K0!wa9$0R-~ zDxES{th3@38!fv@1X^Z2GDxoS0{bc_?yHL74nw8gggcSO&6BbyxHXS21mj#$=Sb(j zZSYU&j0}O;bUTV0ZMohcf(Zw57L%ja#|ump+#{?}nr?R6+Yh_lBmFa3ZM7h{xJmgE zGD+H-Q`vv}01I|WJFbmaF70O^7^z5QfSdRPOjCN0Tp-2+y!6Rr#!HImFNlj&tv723 zP|`_?`q@x7^Mr_UtOYj%%}DI?Viz+7ZwXb%mqko)t*a9~p_(2lf;!x^tJXW*B?^aG5o8F1QbSLoudXH}ZVm11DwQ_M@Y|ins z^q1u8#@*G;4aH@k{Im7H?TryDLX{GF)4oLK~(*?ZPQ4NI#pv%f02mfK8}+G)F3 z$8yfkehcXQ0UWQBNu}ylv+ZY0mkp!YrsmUkzWMem$vi1~thQY^=H}%~WEm9L;3rQpHx@1jcJBpK;g|Fvvv48ONBKZ!twGc%jvYm-*!T9UOP4NvZ=EEtWiW)dv{o^9auEpX zX7cVM>3=)!0#jMjPOIqgS$&xY>I!%qPe`xVtz>_BKj2n59`@`qS`Z@!4(|X);PBW< zIjwhUzL~FSA#X&vR`Iwe(0))wLXyq1qiXrmWPGr>>!*&KWfS%~I1DurQHM$rye0}Q z0&&o4yZG44mt~0sVl-S0EO-M74xCm?>vre1RsHtz<@I&GiC#w4PS9~e#36*OhqfFX zu!qdaJ87#kA~bQRptq%FCtEJ$VoiXbwgXd(BSylQG;nfMT0UW_cL)`1SST zkrlBnV#7S`gjfy-m;zx-^izJi$vA9Lh&ppjmz}|S=s~= zyB)RSUa8y?-xw?T4`*|7Gu~{*#%Y3}u%{a{My_oZ8YkbJ92c&e2YswtcD5v4n1aR@jU}J~9{^QXA{2y#2!Y)1FuJFcJDQ>GIfl zKfDsM-G{A{2&Z;OR$P)*=GeEIEfTU|5*&8+^7U&ef<2Tka^T?b<1RmbKRPQlbJykS zV(bAZc#J5kBon&Fy}SrEqB9=ZvptxTjLJ)`kh{KY1VD@sd5?#?PooAx$JvnYhAVze zSHWR&XyF2_NcDzXFVr2=Je*1C-n5yaJS@20aEnsJrlyt4jVjSMBQUwq%I=ET7!Rds zg7+0M7tJh;fl^qymQR2CWyu)t@!d%|wMNp%N5sUmz@nbJ%Q%KK%`M$rOH{NlQVkwn zN!(F#7Y%2e76a5AzLmT1)Vf&CH@!&BF{8lvbEt*KOa;T1+!ik&kX<-YU;UO(I8z?m z3~VEZTGpTy_v(NABZg*0h+xYrPBhrlj^cA%jr#{6(`?;`N=avP%uoPB1UKF8YS3u0 zvK_J&1ct=1#8(upQLMg^<1lqJ-YFdwEREG~pXYLgi_7jEh3p|D2B%#?HQn#7-mfQn zp>Ft6v1Pmv{hAcl-(Zb0M_oJZMk7RXG}>>VAUg5870TL(;o3&m=J#!-zeHe)^C)?y z5+2RpI+9sWM^>Zz_PaSq=*^HEs3D%8Rr6SMP6XOEOqqh=}=iw(LSy3uGh ztAef>zECk~sV-@5j`5%n_+k6w9xP;mCMnIb(Bjg`5ul-6zp1ohl6>BX{wtvZH(jVw z1XC^P>*s}UPRmNmLC|6rzpaaGIjPQ(*}~G-W$_CZH6kd;)jDm6ER5tz$t2Bhm1_YX zHevo@%wuS{6pk7~T|)m_yr|IaQ?FpDZz6W@oYffsv6Ob18WxZ9GJ`+qS{X{!!dazw zT&osdd|mTs!`D^S3bGsVB)b3ZpS~O4hd`x50$84w23(7f`fx~~n4NMaK3MBV(^(hR zIMHMk(yqbY^{Tbsd5F9{Nn@5AK)1WDN%@>q9DeL$*P1}RHx;AuhgafysO%qOqcv}Q zm9PBzk2>7GOELNF-vMkUY1W}ro@U&Jh^*8nzsxoClANK~q8OuT>NV_PP<69v{Nd+c z9(NC!KCy(J>&|#?Y(Ly=7ahPhDWQ;)H>cH-VASh){M-}+w_Fgc>UoXPbwM>`D|f?x<-ig64W2zmtp_$ zMk6(B_2L=|s7$>O=`e5{B&Ja4 ztnd8RkVd{$hcGHMkMf0b6KuH>dBH4H>1~Y?LMB`-hrlpf?4kI*W9>C_WgWUuvs9_H zLVqwJs!-R{*zMZ$|LxP${dWK1NiB(hl8mxK)Qq4UU@{}&=0K0NGapUw*$yC8v^9+z zGedjBE?#%G7KmCZNbUKzO z=DTv|J`4C(ZPrlQsM)l{;@R2R)f-kS`D<}n==qW#*P2GXR&Nhou@|}icsWUY#(VT| zV>Z5S)ZszW>iZ3YR)|ku)d_lPuZLN4Q29}ic>8-aFGiyncO#q>OBsJ=vyRFaMPyOYO*<`Z@rcnSp~sQXYxLZ1vEmrf$g}Wm+lIx< zH}2YiTWQ~~AKu<3DEts+W3Zj*SFGZ^Hm`2_@=ABw!~A?!)TAB@zX4ls-kF|{Dnw}2 zzAn0uR^xGGabxODS)zhjel0U9-D^WkVdg?(o_Bsy@0nXO96 zM$e5hBH#`dA-QFqYO^60WwPId9*L-eYE~2@Hq6;}CYrHFpusbXCB@BltIZtlra21T zhUHaGt2Cbn+_|WI>blwP_IpDnnnA`B(zV4iIx=m;B|pzK_M!4~+3f^^5cJTIQ5J3$sx3Yn9rzEC z0sAyS80a{1+pHBzMOyVHog-#<0%?Mf2cTrCxeAjSZ|t|B%=NlR5Lt&NBc@o5Tv=2{ z>#oz}jiq;kvNOUrwd%5`R;sPIT@V^q1%ud7N2TIEA<5S1+0JQwZZ}2dDVJ})_*!Y; z*ok^(bn`I=N^2!Io@MCC5N|gR_YSlX*n5yG1W=P)Dm=HD!loHym|Ul6>Gzj*G9M3Y zmN&7hci=CNcwluXw{(_pn`xKD{bqsj>jByU(1TQ~1rR+6PHJR?yQk;zd&w9_jpL*9 zqm$21@}-J(^@kevRu{s$s%T$pgOX++l|J1`{YC%qZfN9=zYva_r6v`=0jrR2%GKYz zl&-5l!`#^*_q94mN@tyqHv_M(P2z4ZbEmtvb5rfFLMaZLwW>Vg`Fi)3G4S2(Bn`98 zz(KZ?wrkg1>@Z)OwxBbeZZ=f4piZrh-Q=(`0+%s1Dq0GNxQF{>)F)ab6Q^Z|-|<^A z?;_U~%PN@Ai31Dq66lC-)a6jkF~bKAaaM!ceBL&>P9AE2DW@7&YTA>i&QHX?_(RDI zX7fao+XbnvBM8f^Xhe+N(g7|(*sN75wYnuqGzJIj-AE}pvF{v}moX~p^5s{*c~NKr zBp^jKw3hv1y%CTd^Ym;G`XXCmxbPO~K1CvXE18_ma1EEwH4h{PClq(lJ3EddYr=yG zq1rfB77X7<2-WaV!f?6a(AG)^gYva4bC!(4jz@vOkN3~hsVt(yA(LpYyWV!mvB8on$)-Gc?xMWrFx)zW8qE@jTht6o(bZ;mMt zY5@?Zw0t4@^6~ZU7PT1oMYnBsyMx&*7V<|e6(er|IME$F?AXxn*SKanz3$zrO8~xq zxFDjoq6kb$fNdNHG6b-WFyX}5>Z~Ao4!I6-4(C$bQ6>6pLw6EDqF~qKeW(r~My=lta=$w_&f;3RPz~!ib5Dp(Tqp zqcRY)h7M-HZMn>E8)X6ObmQ8Zr|z&zECpv9ev-sEy&~xL;$_#rvhQ{og=Fp)nwTqB z4%>YE%SAFxprU4zNmn>8aXeKBhQo|f%2#b3rT^xhnlEt^ATfppti_z++gX;3NTfRs zo3Yj7mRbN=umRu<3$t+~H*g_9Ed3rQi^tq#64ywD+c zd!?l`saO;$D8I%xseDo7Sp+J-ef5W;-6)o|ffbO@8S`srSFPqNnyAAj1RJI0E6r%P zpiiid#_dL~sb4c}M{_H4Z>&{KUsVm*Im(xB`Y;}c*><_;w86nly5%C(_;56yu`)+y z(|cO7+CZ|^W1}si1`_KMm13pAdDm`9npLaY)6srXy%w^Yo^Y)UJefI)-x?s9jEONX z2Jb($#BnIK1NdA*8!>pOwsdWi*d$DokG_}1S3xQIq~LvlVyptgM++ia5v8xGBSo0E&fH@Gbp z#g=FuWQ|Q%*We>L)`0zbl(Z>ag={Qnkh{zlIk17e0b$fzj69K5_k0;ugZH<+tgVjv zt)$xu_$8WMn>WM|-DKt3++r_gnz{2MP+}q4IZ5w~S-F!~KuR}}+J{34UV&^FhG8k_pznIBX8HZnG6LvP2m8R6gj=y2TmIW z{D!m!X%dQYv1Fn1F%kdgH|=ReGc3um7@g zD%v{kcr9R=+yyGFex%fLCr7WFqz1ldR>7TYyAo&+(1b9d48uh1w1@%9-(|YFw8ci@ zO|B$XYr%Zb>&|ZvZbJ_PYSMeytcHGwzm9DUMB1VxciMSHp8sdo??frssA)MT(uB&TP3 zy41JHv)h;16#hD+7rTvNfdJ!kH#W7^xInN)eoiW8#bL@LKZie=X|6jzo1MZ z-Zi|jb*DpY%rlO*{GeRyiISX$Y0S4+ljQ^WbtmS%rnNk#tH*TA-)Q^h%|}vq_gXnYR5k?r9yV7p>V^N+d1N)?+}lGNskZqPp37e_LX?#p^Bb3eFnTqat8WE@-Rh z``4@_^g51OX|}JLDyRBzHks4b2@8NZWLol^_{8@4Y0aN)oG8Og6mR>Sg~|Eoo!+3W z^y}&5oCD|@{1dPvePA>G{nxL1R-4utVZ)t6l?1`DVZO~Df8KztpYbQiPt)D=Jx&>B z5<*9?&d+TbF&(kUNKIDbx&QKYx;@RrcOUh1NFKHkj-t7_YwPL z$PGcJ`#TOQVz=QNcM*PGr`Cs}MAr@{$P_a0VHdC0Bj~*RioiX>b%j9Pt`lugC?@!> z8)d!lSfu<*DJjE_2U3^lyml`d?YnnZLbu!V__@=54=x1JC!2<3uXT03ehQg*_Ip~o z+Rr93(qLJ{Im|p@pf*}(co`kcRi`t9hIsh8;|K1U+uh)*AJ2iP&wqVf*yTPs&-|B9 zdR^?uZ5JOa{Yam*k0SE!P$QwV$}dFw)n9~8wQQse0y!P9a!TM#sHQG7!o}%(BvtsG zh;+)R1@HBNwn%?PN_dS2JdH8e)jVLs;Y}h1iC9q0Spv@u;xxQ+!qV^K}c$0ZR z9iQ0k>qkL(aj@`+6pvt7c4;{v~`8oa=Txv)LN22V>N@o zb^e|4;bhFVJ0z&#D17*8G6}=CYM=vR;9^M`6*SSrliam$+Qu|aPuxh=zKn9$Z?(8$ zL8($z&XwkLmn<@-Ujco3akOKJ2U_kZn+XWPfuJR3aL8FTH2dO*n{%{nK`tV4m1<)+ zPR05tx0B761#8rintfUFCX6HNz(gn48!A-*lymGm9GVv2KksSs7f)Y!oVsKDYU+Ak zx1Jszzih|DzNqujgxF&-U5ZnqP34O%2dI0Y+Gz78?Dc!yPW5Bc(Aq7qBN09r+h^or zC|0Zw@I1)3LibiSsD^D|ge`Zk81-(4FZ68yTxPRp^QU6PND3lYOXNAsEQ}*#O>UQJ z9liONH`VtygKF!iw**7^?udf`H&L6aJg>#u_ zZpoA^_Ccp+Woq=W$hP-OXaRd13&9lnF*u)LJO*;$C!Y_C`KO0)vDt^+~ADv@UI^yaHNpjogcAFpn?dRQ? zyS$*X`XRbNX~vC#XELz{#xw5M<^FA{-T?d0a(%hb>VtlhQXTRs)Vn;mTHO|+Q=;ob zT}H9fRwXEczTym9?Yf#VSfh7aO*ZSN6Z11kGucc%e*f+Bg0{AU=QLU_Umj+&rKj8!akG~iCfB7#R zX4oMi;z%2&nz5LVMh_1{%YuJc?XYUWIE78UZ0bsB6sPjtx(Iqt`QEa4ll zC?=ZcRSoL&u$bG;Qtj^g`~aXpdrm_)24;^NInkRCO|EXl7H=D{F327|%ZyDe^9`2# zdcifnGQa?7*u!pj{&3jf!boY|vhCfUoQQtgmz;t`)Z z;G`!HusRoX!Decyt&HM;Ps788RwL-O<0SKe?ykn*4mO+Ra-C)vr`vDdSs)*~+Ptq% zh z!~kA=%=F#1V$D6);m3RQhyA)T5-)CUDidJrr54QR4cXgXD5-7%z zPJtDbUN+u;nd?+Er5h_xE!J5S^aoUg!2@j$PaDLUU|Zz#UTwAe_&-VzICV+v@JXhK zS%{$e75VOCqeh!c!Do_MX069NfxGPDZ*g!B>JKLC!Y?MwaKpZyGTc!WV9}$oTB&p} zcJ%X@1fMy%-_M_t));v~WIb$6IJNWBOs%^2Ur)!ircSocpFZz+-2kY%-#yM*b=vtJ z$MnlD57Tx@RC`@QV8!~hOt6})zs%`M1`B>A=6W~5kL*ro+0^0M=sCX9Hd%Ldh6B2S zbH69v{b@R;`Hz>~h4P%wll03r{8%T@@@PFZgD&P+rWY7}Dpw&Zf-RLaSXBnm>MM2v`+gUsih~RWJ*; zshIB5myE`Z8RfI7JYXaZHTu)b!mJP2e=eUL`}x=Jr!D>#-Q2zW`mayP$kkMbN?O{z_i+=#|=Fg4{! zY4Svy5^mgm-r2)^GR-L`7y~$eMv^afbL2gyw)mV5HEMP?t2qaiameflQjyF0+B|#2 z3pOz4Y;<_;+xz}(49>;KtZr8)JL#}kYd7QP$}%-! zdI~lLSgCV&H6R;|AU&g=l+Bj=wg7H8LA@nZd5*I5|K{Vf&6W|Ms|9y?lRKxRZbV>&utSSOwC{lS)P(YT2M8 zipXKL(Pm5ApH?X+x7urAdcv)gk3CXm3>*v~F&=YF^i2kB^TH7O%%vvF&0?`RrcKY^ z{p+v)@pTn1it~5La`8pZ42?s9l3?DN;>y0uAo}%1fgb%}NCZAF?3kHZl7hZ-+;hy; zG$u>h#)77NTU=u9Q8u$Lxw;aJ^Q4|A&t~Pl=uv>LhP7MD?A#2>gWXy(qC_`gqqbT{n9J zGt8C#`Swe8xI&Evjthp)9mMh}H2qO>{4$5~U=Y6Sce@4^pbOD{4r~}f7GS)Fe5RN~`ZRS?$Nlh;!j~aiP{C-iD8u6T@Z0y<=jYuF74Koc zMl_We&f%mnkl)cpb2JD$7!Wb@bk?S}zI&^cKpuI1*- zZ!i08*n4wnxZSG1woC8ysM{)6J@_45E$nf>n@ttcKu^zzR)72Lug{j)cxC_m?bCFm zsy%_>2TKpL9;HM986@DZ5$JQ<{dRr(sXBzs#WN;%G804H*axw6LAS4bSK(HnSz2e% zCyoroP}As+Oy`G35(0{#b0w$I&Hn=v6Rn%AJidLoUMFwQ>B(Ni$jgZ>jI7M#lVP(JSTH%MMgY{pMdzx?YrW&~q$VCZ@#yIj4g>hg6(&;bLe=J;Pu6IU=psHxz_ zAbY@k2-A#%2(PHsslZ1?a8QGbwJhRBE8&T2xRJr};^p7(k+Klnn`~C9llv*W1%o^^ z21+X+9ZY~#ffYbXBcu^XdWa$3X~SGo8Q9zPQ>I6gcpyitd&vAai>LchFL_T1iZ(vSTn|QVDg+-J{ z274GY(N*yJcC&-1kdcJB*mIZ7XMUK>W{al{4=Aa5`R1-#SBEkkDpniKwuv{Z-;ZDf zZ1(dBno)28t{wSmx``qEP4>efRVq^iVODO*Ii|2K^P8dFE^a1#>M}S@qyKoe3R`=g11M`td{dKdsoIZaC z&^tpA!TvMg6h@4Px|7nQ<<8bW$lOu5K8z+`o=%UsyZ%H82fQ{rTpsIloon`LUo3$j zve<#-AB?#GnYlm$^)Y2H%48@pm!DWBcYG2=8b*XRH>pCaSXcTim=29JH%ko+6y@gPsM|kb6hYR?pX4 zxAj(QP?M(om4LPkSKAY4zxrjlJs9mLrOP%|*!FcdF0hZyCM2@Bqs*3Gn^Kt68BL;L z9K%vi$j3PLa(()oON`?z@oF^R!) z5v@e#xQRL~@oHV4QmN^}n8~82yrl22&KJ>SdCbH4c=b4PcDTbspIPt%Ns&2nbqcn2 z!OOs60b5Lt>A>QOy3Km!>L_w_#}|Zr8OsTi3i2C?2ECp5m$?3Z)P!UiGSs(tAg1An zD1)Qjc83EX;nb%3i7ToZ=_fHh+y)mrPe+KuEnKGU3bAus%r9>{ z0Zr%gmf4$<24fwuIc>uHupz#$*z7zY%bSWG&&JJu#6OtxsrFZF%TZH)d|N3?3d5>| z=ISz4vgfDAN4u|e>Pnt39t+W>+t|9O1PPTZZp#z~J>2sN^Amr*031aHZCL5JE0{)t zy1BofLpI_*p*Es?s3iAG@BZ=m@#`GZdV*-&)Z=tJt=_~ZWMg9sykdr2mp41Cswj5G zv5Xfr0zd$2g1VH<@ANE@MzPH={eWE9h&P$X<$(k$pe+VZlv1MgX)Zz+(M31x3N_A8MjGp9i?tlP2d8-h3_<)%nC3 zO^Zc(EiM6mj5fo!Okgy2t8@-wCWcfT7uzI|d}63$*XsBFzO~^DqcU9?tGb|sg#~fa z4F=4mah0izl6y+0b0~O|lR)>T)5w9+0EpVESBWSy*81(2U1}$jk?C#jzZ`(&f>GSh zH+%j{bH2}_=FT_Bxs-Ui{Qmv(B$9Xqz;1u}w#${&vyw%k5@DdWIHrr9X13lo*S4U} zj>+<0fByOBUE%VMo1}wk-^}Cpw{ozUd&HgBd|~<$56{hF!g)nLBg)i>OI1Vyh?{Po z_TV{Y7bmCFd_UnBXDhsQ?ZbZ99t54bG;sJUkDd-R{;7I}#y}vc7H+nBbUcDMaY0ctC|VnA1?Y>?Di8ND9f+U zL!=jE5N_M(-R3CdU_4TO_nrHHXZ|~L6t$#oV5JEpz+ghR2bopr2rXiCfWmT4+jP~N z^_xpc1UF1PkLoM!0$^PcT|j%X1bPCnj-5%N(-n~;_yg;SBgwu)2m-q4gy#@UvSj6w z&?t_(%_^4rqzcBsm!1J`P`QitD>_!#Ot&o0xg=_XU^+1rZT>i3fBu)>UXIwTS&`;c zpW@{09~AUaIbqfD&tn-i>9W||e}43_W{`z5!!b1-u2G@g(nFeeBa=)sIjQ9enlE87 zKbam59tR;$RICmLnUdxqyAI1bK(|z9#SO?E7c*oEQW;-e)jJk$}&5{cA zp#tNVn6w+sGTB~iJ%UW2og{K)Z45NzxI#c+e4Ewfij1-6P4N(5DOVc+4eO8+tX}P= zLsLj+RA|j~-Rakj$Cv4JMKjpM7QzfO#e>0rdQa%|Mj4HbU!R{I@`wM=ePzY706Za_ znt-{NQyey?ILBaD{z0Tafb6|ms#mbH>k5PE5&r;M3*u#rTkRGF*4qk%M@UowNBddi zZWqXIoe-o6X(AAPM~rX4fY^a%`5dSZk6o&(46at^zXILiI7sJ}6g+%1Ge(JFOj$wM zb0ohm4a0mSjOUB^|eq;-9^?IyDq_|2JA zs#MEr>gif!*6V^J*5zdN1p>3LoAcGLUu<(0YwHR0lSMl0C}`__x8nkSZ`FC#m{m3I zR?Ann8eCbnX+tmPX-2_VchYl&T57fd%=bo2!93>Gme2g3bH6un(TgpD`5Xlsy|DWt z;Q_eWZ=QFD&j||9j9XYsih~Vqdj2w?$n!x0w?C!U(&@tO$=TEs=b^Iw0LFHfv3iB- z65~N*0W${QzgR7oXzrdKh?zrji_9M{Xy&oIi5&IowrKP4P5so0ChF>$@mCK zqu+}%Pwd(VNgPhF<<{{?6J!@Y{&wUyrH#P8%rfr9q7cp(pzru1+OA5Ad#JQU1qm3n zT_ZG`0uOu&2VOLpjG~7nnQBnpeJK#?Cc59tTLj*w0&pL~k~k&(r8!$ckI9MzKl{!dvW)n`A1{I)!wgwCh&_0VjjxBTpxi zgn}BtH?%PbN=?235kvSWDq?NAN$7@fpLHqY&&FiaSaY$;wv;!zoJ!exyj&j$ap#-{_A& zOc%K%H7J}4B3rl^PT}U$Jr^OsL0jILBd|tdQ=-%CNo?9Bt)n=~bjb|Hj03Jb3L zrrs9XC3xO|349j)JU{mZ3+elV3z*3rxtzKA%M^2DVdGVlE>2IU{p#V<(`g<067QU~ za&u9-aZzyVv&kM=p(6KWKFmEz8HRoArll6U6Y<7j&VPLw7Ov132#%iSB zl&dXK^-an?WVP7Q5~S-GslqVVBgLh2x8fiGAQ{2he#@rBA1|j~|F-Ol)Tl|lduH!W zCi5xW_GpmyYt%iNnRM>DQkU%s-AEg{vkZOY{52mbq-)f38H^KHK&H%DrB+q>gao(C zq|?EA8lmh!3l1e%Iz=)UQ*0L zbuh779O}-CxRD99?zY@EwH97^U)MqRaj2&e$qH|i;Ae{#J136#LecbsN3@weeS2D@ z$4`hnI1xEo*G}Sjn02qiv!yB!`PvK{iU?~n;Na`*)+wK&cC z-SF`npDSDkfi?ChV;MBv;xRMa$;K5 z2<(~XXpZH&eR9*mYja>@#v;A~Fj%FM{@S0u+DLMV?Yi zW`Sc_S(twP{D}dobN{cu&hy2~mPtPU&OB#jH~Id36YuXAbV$Yg<#9WoB*eYanI>5w zp)UTJ#XOsjNuYUd-RDo=e)<0C`P)}Qz0`XG;_eRMG@VRtpvUIf7s)a= z>X>OhU$0KbDJxEQyx;NzQ(Wr%Ur;+%aV(4&D1fshrwcg2jk^~{zrYuPHEKzi* zBF>H{bdjv)*#l52HkJ&qHGMfxs2Lje(rHssf&>I{xvP+vzD_%Wi%b$Pc#V*l z2{}}me!s*b__oh#%TUDnO+y(<{AV!V^t{?F#b+c`E8ySQeA-3Hb|lUb^YP02`Fl(kkv|Rg4Qq%S3=*L{?3M-oO_kyB zw)MW=vn(xSYG{m?ODg}91Jog$@=U+E;=uN84cjf2wgajHDNG5VP_Z4Hg$c9Izde2X z=RIlMFaP$-Go5{T**|Y9mqFnotw7NYSpZQDv7Y&AexJ_1yiDEV zEGXY@?|*(e%$bUYvxn`&w{NGP33YJ4m>jrFWw5n*oK1OjoT(5=L=PAENXjpex<+R2 z54s9@V7iDISld39H7FkAY+E=FY-&(-r+(5E?HNn$b9r?bZb|%|=?j@ZJ3_>YdCEMs zRraosKG-Onc3B)6{42b06Gf5|aM+=fWP2?9h#ydq;tv#Y#Y@3=F^-Vfi~yp+c6!rO zm66`Qx~Wi*8D&KaHZF}U%|DA*!Y`j@$^2!vTCA52a#W$iV7pgqBG1r9*)AGRmLt>g zrPm)Cfcbhohnj*DmOryG~et za29gMCA8-q10-Eb16EW3ZV7d`^QBZC5vy5KmW@q0UNiz z-yZM3e1ATDdD-%00Kx+IZ3d{atJHmN0>oN4+h{OaOg?EWx;zco(+&rcgV_AAUD8XTl{7?!bwG1eWRWTw{L_Z5PS}j2)t%)G|e3G^Y zD&)}d2JGvCcfoQqqIaA#H*ksQq%7p5A#F~4!!asF%iojl!CHOs@%plZTn5dtPj(zW z$%NDC5J>Pqn~*;1*9C@!)P!J)^OAKv##N-JTCE0GX)gWbq}b6g-oV<$L+WqkKARJu zL$1!9P7r7DTIZQWICJysp7Cdpi|Uu>f+(zqT$>Ef~I*h#8Zepd;1ncJg^UJp{SlB;*-hci2<<}>mz7s&&D8Q%oO@}*F zq>E5Q`4YfEN(=3-DvU5NFDNqjG3OQ(**KrU=sbU3@~;s+rK-mUat>f_JrD+P3@D-% z+^l$I^*ZKA)AD(I#ATFgeRnzKMbB}}>cc-KT0K6tYSH@p39%7F3oAlC1MKadU)(l! z!LP-(m2+L9Wk+BIh>9eXN>Qo~P1l;m15MD7j4YN5+HGPW5{%+}800a(h+$7KKr<2L zj8tv&^GpeKaNw9C{KJg>u*Rs(fD}Gxm`)wgzaz0L#wfMfle-Ou*MBV6yIhdYi1$)E z!yTgbk9I>Ioa%MlZW4j7WMewjAJ z?fUB%geO@0sA;WN!Q_8_TOA%x`*j4>)^@xUXD_j5R7BKj`~u>922GvI(Ct--J*+@M~mraluz!cz1up|?1 zZYG(eHm}vRNxf9}0Kr+}`KClN!f1Ycf7c(V7EESGPUnfyHT-6$r;l1y5!xRSd!A92 zD4z>pCA=wdpq^u2{2w{R#LTJ;@Uk4u#v}lWWJdMEr0yK2z1RcIMRZTdn3Cz@Uwpvr&er-em zv+E+Hb_8Fj$(#+fmXhI)nkqGB(DAfLk6(`Pk2nc)dNq@K3ar=*6Nu#s=|uZ%uP<*^OIP2&Z zax_xd357|Y8ehT%p?_B)3)-nEoA1GO_3jSbK&L;!joFiIxqE#bZS1ZNz|Nh3`O35T z*M+hm!V?JEB$Q-0eU{~PdfC{{wx_7YD2>u?<5rvCL9}9xJ&5b^j>QxX+QCxYG^D5l zpP0`Bkp@5rBb-v+w9^gQodurf7wDc6O$?{N1GDWG_$fT$%z2noZltqyT|Vv%tJtrn zoAc^chgOa8n%wJb)w})kO}E9|J6xu2tauAP_WaPn{J{|;nkDCD6PWnduf^>B(5`Pakrwy6mhxL3L1ocsiJrEJJwJ z`OvY?K>aXY-G_}@zedZs-BCSTAnxXCda^2paSrzzGC0(|qA=5^+|jY(Ors!Y`j$FO zDOluz|K5hI5)-bgeZ^I;%M$Svoh1skMxLcJm79+SoVCk?M0JR#NL{3?XR*WbL@#lm z8B8$FKI`zDgq|KAcLdjW$1pn1`vC1@aBoAcKcs9HGoQ`P_J9Ftx}b##royA+)U5Cb zm_R>RZ{qPB$?SrKT!sVrh`-#nRbCP)^Zs$fJe;z^8Z$U0oSS+qR|oZXf9wU-D_Ru1 zWfQ)+oPTkv@fZVT+EHn7C?eUGSvq8Rx9-UIk3T;b-uC-pnu=xC(4HLf44^GEGW344 zE6Ac;ErI56rb{QC1~i6KKh4g!UXW7>8eBeV1$A>?p`^GG=iyvWmM@=o5R z;iwr>z@$NpY}?+im&ZiZSCA+%b+f+$i|0ifvRtbb5xQc`avsq&l{2A-+<`>DE)4J9 zOF=s13u1eHX*%9TQ054+b`kvza@83HMzsbwpU2X=PDzg8KJr)jalFT_Y} zVP$Jh`aBF#Lm~rDtd_AGJEr-ugq9)ZOL`7%GQ~m%pKZSWb_lo2f?@4FI2$4v8xG^+ z-6oX;nix)Bw8<{4z{3;D;5(g7Kd+QN)uQ^xi;@(F>3Kt!dVD?3j8Kvm!{ivZZ@Zc} z{r_X>+I}z6lP^48w9LsI$#=9D{){ zum=g+ISyPnb}H+A3U;y%BAX3$k~2Et&)_q~!J!<78Y&Mzp1piMVCrSR#2_-pxe7_e zGh27wc&d|1vxi{4=DYdf)9K;+LppxgoKveSF5zRBA9W-4k!x6(z|+(?Mi8 z#BsfvY{sy3Tp2J@SCr<n(Zm}ln0p5fH%mw$eLg_gH%s_f1<%iB7U zG_9mq&an2n$yokFx!r=+exrdjps38vj`HOaE{bGT`V5TS)y7x(jCkV}L~djTEFRc{ zh`EQ2zQqpX{SW?V0P<05_FH#2EciCkbw;6UPt-0cXG@E@7e&nTV;&y8-W-oZ{v}D&5pZ8`A6maUgXl>@|6K!sry(EO4Hs)!-Jq z!fglq6@yw2wgY3CN~t|!k7R>JY_}t+X;43*b4>v}w=I$GgBP`~IyUGFY3IKCa93eL z8s_a=19GRt?`D`B_6bsPlbSfC*Q!48d%+%-I#eJN-gCVoU;ZdecaFB_RjHfRw~o!j zbEt}9?Hc_C-MBLiC$JPv9Z7wv^PJ*=C}Aw5Nv;mDhZ2;5cE{qtI-d?rD^FOtF)Swb z3cWahP|crgciLG(wp-*qeU48HJh|i=UDN8eC&r`l`@)U+%SM zxk00D;twT%w*$cmu!g?tY(FWUkGn6Q57~G_83g#)cMKq6?3TqC-;<{b&1%;ME2Y@l z&4(t-GJJ|5%shWs>XF1uHQj8!|M0OzAc!;uB3Od7^k$}jv{l(X^F6ShVk93m`lbrF zyv1$vbT+U!i%abF?|Xq#wQ zg4u>NVY7xCfTDd_Lh|~Q%GO;~ZPXO6ZDOCAI40Vr5F&Sxh1E-FsgV~SwJ09PRUdb_?3JJR$_Dk7I7tdMc4=7sadH2B zZ3Un&Fn?t+rxE7wzdbFmX#@jd``coug%L14CKzfLzrnW`mO0~Ztb)2XC9q;Jt|xs~xvS9!b|+zAe$YSszI+va^9Fea)$-iWR_58@{B&xU0Y?vr zM9^n6#DY`d^`D!6bK+*yb84{QJUT8(fGDPn^QhOgGx_e_Yu3kpSM~+`6YxtQX!b;% zBMh%JD)AiJH`!SPqbrl*oT)GfUC<|EFrOF15lH7T*~-{n_c5m{z<6tTSF`nU>?QvEn7!;dJ;Sa9|;@!pTAO7^Z{nPJ0+_t*n z>fTqP)nvW0@`c)Gg|$TO2dWC3o{NFHi2H(-?eK8Q@%ZvGUURC&Piag}6D4FNDvj2L zb#|RTKF!!0#N(th42*8s0k-4BJXn=xz#U`Y1fV7BUDaJ2lIg>Q*c4#7c)UnEHrz&J zU3_n)n+CLB%RsRPmyH^Q>+0?jF%Lo-(gbn`LZ9vwzivG=v_TJrxW#pVVg+;pe>st= z<+5{t%^{rOgWcNYkAH7IDr%*rDUeAFXPI(}RVcg;t}a9!CfYQuRk^z7QwWKb^S!2B z@2TXA*h**V$iQO-$~x%b?(4};+-m3DKfk-}yH>G_oWhS*EakXnfWG1Q=cOyI!wv*t z4pTH&(N*v$a;1?&nAzon3IFb_P=$rUa-Yo-v6u5)%rTS^z8a=YF-as$I%IY=Qy`(F z^8NAyk~q7E`DEew>vjJ4S9Xg|n-_WI)rZRaKV3CH{`A9}H%KSj{r!<(mW^&#heCfX zE5`lTxk_QT$7v89?###8vslgmda1R4DxC?--B-W=;r*4sv!Ph~-S{O7vL$nfd?Zq6 zWxuHFv3h~0o~XDu&AMH4Fiu0bG}~cC6K>tPx7qJz-0-k{@<(+@^VaU#TE-NpPAx=b z7MEaX7dft`cC_B$h%RDa;!B?u#WJ?yMLv!YxLR!?p5s&s_{&uK5MH(NCDBo7EZ%;+ zd;P!GW{sb&+y2tm5JneZFzxhwaT+MS*6XWUT@H05rvKxW))i21T-8#!1Y?GZ3!DE= znO_cfX^fLMLeTCMp-}gX`e+y3wH3sL+r&*zr#&-OVCn`#0H`)9f9U>oYcm}>4r?-| z7`e%C72-bEd0I+<<6=)DbL|njQV+Z6Eb=fj*VL{gwOj5&R}us!DX_FO1rWa`FBk0J zp(bq5IXpjkAUH=)PY}Vu9&C0xp)wF}S2d~nvBs{B>vX)}Lyiv$a^v;yuIU~kkwySY z3>UT&0_FxSlWh2*G`M?pCrO?1#XtT2_di{~{_#rmXU~oUjB&lcKki&}l??#)0Gfox z@V@bB4w^7{NG%6xy6&G&vcmQF?o|i8VsQVoox%(iRa!IpsQs=k$Fo#zbm_9P><7C8 zK$%r1+S6@*wumP1Z!AZ-xoX#M5S|*8L2}d=1zR@FWt86z7M-qqb$M5-p7*|rfAzoo z*SD{(MbSBFZ-4oBkhEftu!>{WkX6+#O2QzIy0v=k`fhmhUvFyw!vdufpI}YX-V|Xd zfMx>{VcKm{z@wShFSP_46F1(CRdG1L>SD^lumawpN@xm%eWP6|H7_d6ykXSyVx-Sy z(~IEVm9AadzOC-<<>loS59J)hFe4v6PueK7yfgn_sNb}qd^&~3pjxv=teJ4f(GK({ zkMveo$G?7EE!n6SY><-m3Ek0@FO(=U1fHk#*F2iHfCanCCy4)y9Y6l?zF+&}haYbP z*Iz{G5^r+9eAT!5TH|&1^4(Qyl$q~-`pd^b@A6848|x?OW@D?{hZXxy7m^Mwq~e$F zlUTZxeqKq8HV`X#G-6#h_rW&YwVSUlBtyQ|5vQOA2%{w_S%YaRydD>TdT-E)#+-Vc zFrJ?_Tu$e+&7oLsm5!o`a_{opPkg;mtuu^g_=?5bW=q&@w~eJ;7OrYq8@kP9`C5$| zul~#b_I?1GahZLbf1~)hA{lO)&5zA8X2Vw7JAbz}3*r)Y2Umt| zl65&5Q;wTxig0~#@#9;1iR_-_Ksa0!WOJ4-h z@hhMryY|LA9+tBrko#Ct;4e9LO&%ahqW7Rk^w>5 zMu%5-1BUo`+^$M3!2qTij%xMtU>3HmrG+vF^k2S<6gaUiaq2kn1gZS0Gs*|;84En7 zl#}sVtcM$lGdxxIb1dJY7wSM_5Q?SI;{(vk)T;3SrS z3sOf@&l)v;eM*B8ejg&*(}`phCuor3Ns=x1TQ;b$(Ph0@(VPI#0DT;aGl=+GH%W?Uz5o#RV!C*K715%DmOfS z#Pi;|{JuSyZ3yKqh`}A4?6eI>3Wy)O;RgmC^H8aE%Q)+!so~N@p-*}dYlq5jFein+~m$PZ`?UX{9{sho8@YSe~&qdwbKpym|fKUfs5O z)!+U78)!8tYM#5xA;d7=c1ll??k-0Yy${9C4iSskm=8%htX8}G?<>)vZo?BnDfDW~ zT8{v~cf4-D$Z5}#C3F@rJi+0$-nx%Rv(n&X5tYFQvX|#d>3#iwz7cib6x)aK^{u7K zA`2-y^ zzE3-ohhIOve0kWT`6IbR7rR>@u5!8erZ(){u@DMjqgeuO3f8Z9w7~?=d}d{wi0OQC z>98WY0T2ncM1v@bY#=cd4smDhLP@-SO0*&4_e{IEjtX{mmiFex8+7je+aKOmVS!!V z)@p;^h#$YF&|YPAHDowBye*9+hBQ_KaV?w$o75c$Dl`kk%lZ7rdY|=%-cmKk>J5Zi z@3wW*87Z2gR3*wA6sX^S6odP{A$KYzFKeqvyhc|4TEVzD&F{Z&d@U_#KipMnJx!|I zbsA{kJlv{W*`(5~gctYfL(k$XIMDpYyLXmeZt$aZhkMFMW=?^o-*+>Q6u=pAfcxl*<)BIbX9PFY>#IQkGFm# z7O+`trbK6^;Aqw}f>9teRdpQ)n)Np0{WrnB(qXof?oWTC73lC=6| z!{!ew=k|HV>W34#_P@enVc*Ix62Qi+HUX=%K|HBXeaMuN9A!T#U1PpAp z>qx7W6+)x5p1b81HB&bbI-?PRQ*rLYl5JORZh@Gz1(GtFPOV=8F+}gbSG|7Qa(Xo; zUqhn}T@20Y@S>rcfTUX8%G)+xjA014OK<98^QxUqt!&x3bP9rOeTtsN7UKdE$ss8D72U&;=_;I9 zJ5m-7+Vxfgx>EVi?lQE& zufXXh0_!NSh4Iyamab_$v-g1#ifodwzevMf0?=-X_JYb>Y?yAYi_zipl6Sg?GRc>n zP748y<;8$mdmA{^^>jM*Wm$L5u^ z#ovWgU6w8{H4dzcQA2d}o}3YWX7+sE1=`CgBU1+3vW1Av5(I9B8dGx4={_OcP6G{5 z^SXI;VP&w&*r^U#;K`y%LIAhNg9lod+t)~s2jz7xn#Y1A9l1W^Tt9OtyBob%{j6y~ zzgh;ItWfoeouN`~83dD0&s(z_t%)D5IjuEX*72_|E_ZCOqfZBJ)UH7hgM`u$co#pF zJ72h5Z}2NI-NtssrrpzJ$>pMB!Zmzmbru(Z{x!Jt_#;UkE7pC}h^dg8!T>xx0Y*hEBMf7cV*(O!@m z7yn~`R!S`2ic0fM&!K#xZV$HFhs1L`n4W$qSf%kHsDQNEWIcu#IxJdR^?jWoVKZtr z#she@1m8qto56(5D@52(HDmH5WLTVdTtE}eJW^K6co_3&xg(Ls7jj^YMnvzWo}izX zF7#nlA|K-R6O0?0ExN#*K;bpUgg9dy${ai#4hj0S?{MehWBizZ+8>I^mv7%6<}?oW zJ3iI+X!GUhbOe60qj=7(q|vs>Cxc*uiZ|XoKCI`~0Evbw#H(0sVxyy-1Vn;2$8bof zcETti8R>d|Q&R(phmnD{HfQi z+*MQy=x2x1CCV2sF3x$;>CxaA1Oku`s2qw*UcNd zFjeq&V`$X&^dSOgr-$>I0zV)4!XhX(2J*F)rye3suC^{nni{Q&IUA3d(z34C+mL~* zAd;o+_caL4x}qmD&E98G0)lgl>Z3ngq1|40-kI&mLLG8)_GrRL1Q~lW|dya z&72GmirId5MT|6>?iU`4vgV&Yw)z5Y8%gBXTk45+2KoTe6NN~w^s-y{M!ws{gT6iS zR1$bXok!x79ojKP9F0UT-4lc&em8_7ZovG|9P+7V^T)ru^G&)0m{9oAjePi7OByoc zzBtZ(y-yOf)o_v`vu6NYIhPQ+&t?o+wDhVg-{k4~F0G=OryYXo9_45}*;{h2|MJQDVK&&F4jDkgMY16+;^{jdMy~OO06sC zsatn~N=F&gAkqp1uDXEQu@J$8<*)V>u2zOr?+2H?&0)3uzU^at%SN;f=Vt%-bAjM} z7!DexzQE14VC4nIK9}APhT^Nngt?Z)m6|b1jCNP)e7I}f)kZdf@?pJ1 zb)YOTUiN&YRg#%S*yBPDc8N;T`E@Hle#&CMGO%%tcNiQ+TD;vD6;omn%FJ7LUp8Z} zbz24rJ=B#_TMP`rJ*e#-caS@kIB${PqXG^|J)MDWP@FqGnS;yOAsjE4OrfdC(!FE{ zI%G`gP<*$+mhs$aL*pONQC9K63(I3mc+_(`wSRG?G?Ez3y)!Ld^WuEd;ZAuCVg@@<8* zts>FwkVT1>^BA^*VJFLd)O=fJX2=?8ydmX!wwg!jaNyF82BiU62lV{uaKFfMr(aTg zYE&}vwv<{Kx@xxWX?mXm{M3WZHq_~tq{J2N!$04z5Vj6(S|mdL)Q|!efOc!>0Naw8FmLev-FximoMvldm)~voy)tM4=B2n>vw8O54wL<62K|K$5e!N zH;jjf#IcA3GaI3b6MtJn6abi06+yn@r{*)}K#gN0;h!}J(tb)%|jesf~nIkaXKMDD$ck!Ww?Xxh19{Q%YX zQD+l(rCwF8t~ef|2Ht*K4`t}BR|QgIdu zWhr9$r|nrCr#GsA!#}N}?Sw4Bp&;-y#u|q;{jf^?>4B-0kFm{}x-GBy(c9Yo5jKB^ z`gredaM}&Ys7)uk<7$&+dtWnyiCPxSEkWtJq!8aQEIi+`(Z?r59!*!yD9$(UTH@W6 zJsydWiRd^2SW;>wi>VHvMzP&#ery{qY-Ni=f>xv9h~c(Jk*Z&5Fm_g4qjpCj!5R!! z&uojXUf*%euNQ+`)f|*bhBLSsL}Q@kaAhbCF|s|!yC*;#7sqLIeT#oDoMW#5umX%M z2YE_pVvP3@Jr4o`ThgmdN?2F~kiyW%A;mQi9T3$Jh}`ptv<-V23{@ca$Nu6qRN1cJU8(%h07||Ap_umYPWC7A8v13+Rf$rs!H?hQa^e^?fs2b zeA=Q;xP8}we4etE%*XqEjxyLIhBQ!8Xu8GJZZV9p1J(r{V<^-#wpjxGvuHUzPy9Id z0ppl1(j+~-+^?)VG@k)?VV7&mB%M7G_BMuj9zRS1vohL4bfknRbb`6nE_M7koChE- z$Hk{pPexA$1fqUfL1+;!gp0RTL(Nt*x2;iEGn?hhyP+c3J)w5lqKI0cvUF*68y$`F z_TbGhRr+1VyFGOPc0ug`CnZr+yXFT6^6Tm?rohyz#a61^-Zl{o*N6Z4MQ^?PQFVEL z$#dvSx%j#idoA;@k8*w(BRGEk_GGI&=wFM%V~s**r4HK&n^HQu9c=Vcv$}qq@?oP0 zc*gb5t=XA0ROvd?Nia75R5EosW@@KDlqOF(B?|Aj;g+mdF8JOTkH5?%Etb2rE^+b! z=QHMfo@noqP8V+k%Po_y6l731e3W5FSTp5Y$t2Sx-n_ZK`|>%9beJ##1*ofZ^E*?Cac% zM#kbaP5tg)`i0u*4gCIZL5=6?Nvk9;c#}lws6zyBT($fgI2%#rji_{6pqjQ zQC+?%#XG}1qR9Sj7q5=_`0*1vDtCjko1%9Z_6DQWfSen7xpEhzwb$3re%+@!P1urp zAV%47p3DB6w0xGf--w(OryvfPGmVdKnQ%5w+(7T*h|G@Ay%JdxF0VWMIjBugVITk7 zvMd&3lLfH@3II(Z$h|0A&pp2A_aI`05xO%$9ai4I|MP_|*Q=!;U$@L){E!=1lvqpv zI4OdHH{8zS2s0+y$i>`_oCq)3ARjLPVlYX~!}TLGM<6f|n!rf#(qb%?B8<<8cdaNl zmz2%(G+9IJ-JbTl$FCbsP4RBK%xdt3UB%rb-UxY+(QoRhDNv$M(`bwxln>DJX}8qs zY(TrO{^5s`uKSM|O2wM0TuBpzx^Q%iw`Em~FtlwAeL0qyE~+Ss$78F0{r>-F?@gQI zxY8`mnr~wk6iHyPL_|h-guBys_;%fKeTDDN*cn&?AU1*k_nqP*rA8 zeL{}x+u5u4FF!qda6Ez31Va1wXpNpjhI4rLK7`5#_fX!w_!{u;J>=d(uYG5Zt0x?H zPwwMa{>u+IB)~SpObND-XV3Qb-oP>UJC^kCm_5U}^4*80Z@^4%L8aR7Xx5B2d+AKw22gZiJp{rcyB0tox*?p=u6-W-o7 z`ww5EeT%#*c%Q%&`TE`KuP+TrkDra|=>+BS_y6@TpI>9<1j6cQYj|<~^|v2iBg$f0 z?>_kO0}NAVP!ZqWMc(Aw4_}=fefQ!1I|L8FxAFSj@d!K0(^o${hemZeKiWAxo*q4V zx_$KI{xMz!q--v>=wO2Q;ddXfx6Wsnek}IR-hT-n@yoX_Fn0r2a{uK|pI;u#&tE@% z`|dov{pJjn{a5H?zWh()wRrmQ!}HU7ckh4m!@jrp33OKRMWc46GU0QqPc0@a*xM$9wlL_MSk%iJ=hqA~R6s?%oAn z4#4fB``>-}>QA691M_n7@T(7iRzmT5zVr4IvUG88`RR|}KYaB018i;=y8sCS?J}Mr zGJ6}n&-*VA@4x%{(*+*XJ6KeoeEj^wkAMH?cQ1ZIiw;@X2=+pL?6Zf!w|stc_5hr? zFMmMpEdn1Ny+9cJ8~9^@6#e|CuRd;{yoNIH^D`i8pS=I4AK|`zyI;) zWnD?;iSZe8z=p8x$jBp_i!eEa#`-BY*;?;<*Gs~+rrLdeON@N~X-@&0`8?BU|* z`HL^Vynlq~t=;2G4@Rf2#?z+=U%!j76A&Wb!j!xNALGlj>Ehe(z^I%I?jw)p z-Mv?^^FKN+A0Fi+^iZB4n{{06Y-56e%LsZ46%<_ui`}zV51&1G{PE{kyCW!%Ap(8~ zB*EFsPoJPpn122F=Rf`Qr$2sp@bFyYW4O`JUc5b?pZxU5xP5_o^4_!O$mtmmUO)N% z>Ei8=a7vwg`#o}SaD#-6_r(d4oG&g8?!LlT?fq*==-&JQaooMd>sPz?Up#(ucQOWh z8tu&mvQ_schv#U>{QRFlsDlaOF_^p0@$LZ|a5CM&D~Lwm*~ROhzkmPo&FAMkN3UPs zKf@Ugf(<;Ovv_!Tuz30%)L^fU!9#fd;{ChlPac2x`tuL}`MWQlo(z$E^23u0h!)S?fA`Hd*c?vK#J@mP04!-o`wu_=>FZA)pCB6N;OyDr5QvtO$3Ok__WaGa zUw`!pZ{xS$|LNiYmC^b61#m_0PM?4Cr$0h7aA#+B0j>G=-Z^5=XM6Jr>@mREKe{`9 z`qP*1o;`Z`5kT-uRt>}@i>GJ^KLx$z{Pka6;|qBB@y!7;8*s&er2@_H6WDq_po8+m z=VuqFn7=-L`+t7-=?IMv*n}_Umy?CFv&CS(yZ`+7?t>>F)*sF8>`wOfMzF^$&L7;# zPGGi%P2u#}L!glM9wPbvn@>Od%j2*A`R5t}Cqoju!meg5od{^+as4?x0$3GMUOXOI8>FF*eL9Z#=t=G!L!{x0Oc^Aesd2Nybs_1_w)@oMhMG#bZ`64`MdAo4MHHo%hR(j-#`>` z2IcpwA3i*P`{5JlKHvZG&)>g)@cAGA@)68^T-zSL{LBCP)3^WdU!YjsdkW}`2md1_g{VY_y2tF{?A`uQcB-Heo3=O zced}IKfD~*AtgJX)LSP{FCL#f1ep)^-1+qGJ%qFT%YVksjN$_UJdYMrq`!mOjvg9B z{`ZfbK{kd%djAwgjkmAwU0eX;1YX3mlgAH_(Zu}{T%V(Fz(j&O<2@z>Z;{%LXZjqd z{S(m2@11|Z|MT+kgRj1QeRA;@Dj-BKy}p0+26X91XjUUl26_p^SU-4#Vg<_dw@^_- z$`8-N;ftduNRvIqYz{tHRM+S4fLVvo>-F;&IMdOuc=vE;xcm7>6gdzgqFnwnPRYgW z;`<+7J$?=w`nx}V`}4QRmi_a$KmFws9@*Rb<=ux*zy0y`r+@xGeu9b_SERrE^BG>z%K~9HvAAqF$5^DH+Z|=>;pa0vBPws(( zd3N#g+2c>+U@6Z!O`O6ho4c+QnEFFbQk%p7!RP^a zoQDseoFYBq$%B^&Cm2k2?>`wYo;`iAd;88qWM(bC{OW)IYIpAev=d$Rxf8EC_3PebZ! zkKbV6`1bQRk56~OI)fh*`W9f|5pRgD18AS0&ylQoX`=e-=^>hQFQ5MKVsQEj0q&nM zGyeITZ$1NWiU`MhaL&B^^6d6DTD)IkH+_T~`N7%#aDXV$7jGXz>2@D{fKNaC{5Af- zM~7$6zj=N4;afD|0GWRA zJb+Aa4_|YbJs>=N^$(9GxS%2<10H%nBF~<@`{4ry?igk4!Xtq+^~K%64!%Qg-adZ% z?Z@+j2ak7ZpYDG=FVA1zeGK^CB{%!ShbPA$-amZ!3d5|EQ)F*Fx;Q=A-G7VV=Eo0q zM>`;`ef6JU@wvCRw|nuYcMo<7Bo5yP;rJM+)#o4n`14oKcg+(}Il(x7a&LU`>Fw_A zGhAKYJ-m1g*)gmrh`2bJ40mR zV;rD&u_kG~^ec<$-O?ATVCE_NnUgv$ zaY)E>R$+*Qnr;wVB=VAxXnLAv;rBJd%=1Fu>@r0$yNI08NH@a3AjL2lWpSWsjxxCF z>(~ip8k&6Ir$o^fgcP|NSVAl{8@ryGZSemX6iWhUY@(ofkji- zH)YFHMZ;rwU)4rsw-?ehh=}W2J}oAZpG21C1S5yl{kqn}LF@)eV!GRf^|Qx^|<#okwLNq!x8w!1qL3qQ)kJPy5qTSSA@8~8DH z(9$LbXDT}HWtQCSdYWkkh81{m5M_z)P(O+YvGSu@Y_;TQI4=gF#2J=ms-|btl-hxz zT=jKig&9pkBV9xx@x!^>Ph287x|_P`zUJm(HuvJ#9@Ul~>(sAtR+$=}1$8Y-OWQTG zsHCZ58wMqzH7=xNZj2W@0!iG=qNZdLoP{7u0tC>aK>5odv8>YGVw zi;)qynkuWZMEu+nZ8g_Pl6tzXCc{|sQiB9EIB-|dRTvail>3%S4i7}jvyx%KI#iERn%B1N`vV$R zuH=s6n%ah5_JxY}V~2NLr%UEZP>;>RkZ)ToDPGxnxMcrYP`BKU;0e8UfYT*U^}SS4H{s(bx!MpI!@?pDmpZsSmhy^ zm*X)GGNNWJ$8A}Y4zIDioSh}<;ZE_;ZYAkX6a_MgLakRqRMV8wl&ZELyXC}j2nnlV zYg3mT%c4ZKu}$JG983&VEfd=hTm5*kn^|6Jsa84JlP7`O?L`(X@MaUOENn{igp7%L z)z{(K7Vp>83Vc&!wO(fybmOt?O17s}G{LE3=fS+M%BD`Eyh?&_G@(&g=WH^VR-=4A z*xs!Nu16KiWn69DpDCJ?SZ+N_@=-m%Hz0~Ni&EDNush3v$)cvQe7mQoj&=Dwv9o$f z5js|)8^q9D%`F|zHAI2&IMdQ;IxffCX}RJ1A)$$nyJdIu{FYV|(`3VerBNzdRb-O5 z%)?+PTa>qSMsY~si`}a7e7Po~=Ie>;#sSyO3sctmmT@C4Y?nHY%Buc!k(pY3`M050 zeI35r(nZ)8{2`x+pJ`==MRvdsIZ-u9u1)g@~a{f z_57-@!%BI>RMf5%J4vBML(P>1%Jf_#vW#gMNB%rFGO8vsCx|Cir8KoMDo58F=!T!y z!*XQu1c&GV-v+UEY&|bs%g7Uo%V<^%$9W#cPUYheb8xJhc0g3ekp;48wQ*Ombd4I- z!jI%IwYF6EcuZ{Bbd)$}%rbFPO;jq^9Sw-7J7ri{hGFT_ViaueT1t~~ELzf1Dq9pb$k#%a{T_?7x%CbhM zvn=(neO3k;Wu_o_T0f3d6#3L3l-i0B#s*KkaIkGlxG)Khq;6+4snqtmJkAnVV%2({ zUG;U)N_D-+H#Ucv7VHiaGYXB+a17q?ZLx|1!w)RoEwZ3YYfrG^xFQl4CRP$=d{&jV zsw?dvHx0a5!T=o|S072*z@-rxm3rY(4_}V7Bq>^J{+2H*uF<`RK0~hy9*XhksIg?9r%jk$EI1viR)BDPfN=|Nt3O_kW9Io&o)D2MWt?-qjgHq zLa66Ep(3heqhFpszqkHBR3>HSCwsGqZ)u7n?L{NGUrj>U$ecDG#;&zTEBmUiqa2t$ zwZ^T{Ce9#o_enukFx?tWt7?cY}(mMR|(F_0FTnbmO0z0 zZLPmy82?daf;~F(T-6bIiy^MJ#uqkg*)1hAv19P5TC897b&P|igz9fYwozP@7&z}u zEh;O|P-V0N%uUPkH}lY>Q^p4*Jr%@E=;e`74ID=g9H$({NfZZNl9%;(XXlRBvj%n+ z0Kd$Km0#^G^kF_C@$s}A56g5b3cYZ%)l!&0OoLuDP|#GfZuw%E{!*tFy3rlIZ)*w$m=b|RYcYcZQZ2k8z{IT8(cS{V)v@AqYPLr^fg0tT@u()s>EB;rmuO0 z>$tT?Jb%-7heOLR?O7REj1)w?HTKNQf>JQ-Ejy*ukPLeJcDWTKd9BIbY$$ngk4d6I z9Ot21B(9l{=GnN2>LLhZPn1PgUTyXiZRo^ku-=N$*7>DQ-HK^z_=4;Ey27Kc^w-Kn zG)8$eCFtvlEyr>UE>F0go4X{ZysFyL5)I_}RbNMDlg-Gme1W8fk5_Ls4Fz2U*52Fn z$6gTIQEcBHdR|_P18VhyX=v8BqcqqMl#N^C%#JP7_AA(@Mkx3;3qy;y2MXPB%$b;@ zVc@53Xxm;M{MClz|^>x&Ab1U>5UEJGg$|ym4DEiUm+zmG9 zR+>0D`f2qj%A;|#6??9emyVTX!`tB|#<`oRSzPRFh1KwOxwC`$Rgi4iVChuFzUA$h zgUqv&f#cD@w!)zA6I!GxI@?>BZ3In?={w!OsZ(bOW*Yu4l?ls=P8IxCnMf*~ZkJ_F zc*Bk2i1o8rBT`4FreZoMQ_=79S=YVl>lo+uCTfRnZ@nAz*Xu~(2Gnx>fsFy61&KzS z_(h%;N$mt%o)ru{;^_Wht1L%(k`7Fqt97|s>=F7Xj8OWU0o9!ece;nQKuHA9T5j;v0o~a4v(Jr-&7`nmrW;yC90B_ znPik00^1CH)(J_m2y6U(gHpWm>nK>U(_`D*wf-U3;ki&2`<^SgL79@xu>H}Eke%-e2aQXf?pqhfMbIQFeyL27Y~|O=B>K0?gb^80GchR@R|Ydj zWK}|B(~~TGJ@Tu*jtHa2uF&o`g*BepWcg+&2hIjAqbd5`n{-HUSMg#Dj!1bM!mA2n zt5FtJ+xtmXr^C%~xOHbx2FWD%(umGvT#M4sazmn!*bs0p+Ej{7=a#t>Wz@1rkJE`6 zV;&``UfNxwLjEq}oy7HujUuv&QC>$h4k;>=Zu^%BnuN;4?xBvo+}VIvMA4J?nB{sOgE3sPQ1rocB*9@YOu^{_V-U zoRwL4aZ0n?o?sFYSCys5hZDo|+)M%C5%XVj%Ndp`(Zs%rmb=})HP+%tiJVXrFAp_6 z+`+|1msho|qZiS#KQ)OKrkFSuGYmI|E-zhHChI-rmkFAs^Z#0zB)V(4ko5H8knG!v z=CN-lH`6>t!Ft8lL8R2`a*FZ?zV9?uPSmV*bNvq*B|hCUb!DW7<0vK1PvpPW^WZg& zcCx)`lEy|>)X8XIn1L3KaWTaSH`YDdP(*j*ARvY3$y*AWFw4hx?aIKg*wGX`?rE4A zwp)>iN@%01az1hs!8DvH?z38vdAt#-{maVap!M4X?YGJV6SP!&P_6`-mf1l-J@hJG zrwk4K$iC|9@SIE)G+u16tCU}M6rEk-I;<2&`lid?Qlm z;dO%NayzQ?d&8b($*#Gnsve<%<*1s(a>{l#2yf@QvtgTUcZ?yHUHO4)>l+@9GaQ&? z(+DEnm3TGCZLj2SIq6vyI%$#WeZMFz{nyH*!~DAmTJG_apn(pNN6-=`UA>rvj)Grp zUG;TzoLtsyTvGchA?c;2)?XIbH6=(?-SJ7VK5tu_P+rKJ1QLM|qbuBA)3i>*G(uM_ z2Gz&x-PUwH(fh1yVJp5Ibx3lTOug9CwLYm<*Y==0-wG;ktHouua z&qyfBJ&xg2uPbjcvM9?PZ7Wt4CF=1v6AhQh(rj%JnQUel5Svgv2DhsybMdhD#^a#` z1)|P9?5#P}qy02B0(&DOjA|^54MngqMyZU=tt<=_iKTMv-f}%lG961%6xz3VXJ$F| zz^1(dLdh($snKt>ba_P;pyv5&Wg`4_g670TgDy6~WX)H{+YU7+dR1ULcGcJM#h_mI zk5*ZM?TOH&d8{5mWV7i-vRH=8Z&3KN2)Z4nT%c=eq?(o} zCp|uOy)9HHa;ch?(`Uq4kQ+o(tje)Tu;pwDEeN^{D^7Sha&FTN&9?+R&f1Jiv!Avr zwD3@Zx;iV0Y`fhvhY9~%WnyWVp!G39GaL%PN09rbj^Bz9BXR;vrL%}!^>uWTps}}m zP1#Uy37Xr#72u0bXzf@mb8OUcZbp#8`P8`4GnHMkn^32f-I>}G=(|aFGDx6RL~&oh zLO{23#~yDfo12#DE1DGzqb;~TpbUsM>n$9J=BmEYPzl)6*P<}tspNTo|;pZ3Tw1XH1(>lLys6m zY-kEPUM;@7ty9l}T#Xn4?{~%JfVw`{Kfef#M>1nbQxTs&dZFRm%1Sr^IE#h@6RjDd zW6szkm2VsCp3bDZ7KFwg%v+xJhY4{~v8vol7fIrBgxb;Gc4j8dx=i|EsKppsxv|9Q zJ{g(Kt|fSJ>I(lxm zsWPrDsFK7JRaGR(ko(7>B{%h6W1gBq+dAE?nMEr~^xb9zKh?m8@(IUN8Jf`F?4*7H zRb;L#ggCHIthHfnghdVk6r40(w${H5Po!0(@f8UB2pBSskqwM|;-_q9l6UI}tyN9Yl$SqY=nrCBmvIt{o~64!hEb3IWY5xDB> zAQ`{nvz8%qUB~K6lt{L%m~XcIo7Uu}U^_P7+np67N9YbAVeKh-vOTQgFfL?sUPZbQ z?+j`^E#i{C5RQnvpk7s^DtC};u21-G;O+(KAXqGh)9szX5sZ;KExhiUrgXLfQAuqG zN`{HpvyIGf2fP$(GIW@}V+3tMV=kx0*dGeN3x|;7Ny#*EBh!MQeQ?su@2wb|wED>r z`f6BR^>uiKsf0RFWNTg5I5bWI-;=M^Q)~4JS*}wkj*aPfG)x4i>rW+D%93FfCWE?6 z<~!xwaOx3)Ja$uUtva-xXvCANvw3)gj=Jh{4`24e$;`^9mJgodPL|JbZ?e&8XL`yl z^H{aajCG1FLDL0Ojr#Fnr>BUK0y`sQbgUOQuZt>UahH|JJTOec4=F_lAPy>$M%r=Q zemAnjfz8N?*eng)rRPi*Ss+f`Zbg-KikIA5a|4$G;< z>K$1d`Zv+;UU3FC#=(M&RzxJP5>|H=ICj!dBK)$XMk?-KN(}|9>O(E}NT;F8=Zcdq(6gn6cG5NE3_Ul_u6tU6YWeM?xgN@~aPFsf4D&9S{X{xF$} z#dtQHEK1um22tie&s<=|lY39oLh^UCJZcV#{N8qiOmkRS_XlMdRQB9X<3tX_@ivMO z6?e{FUzKhJ^d>3>cH=gBdQPAS3U=6TCoyd)z`mXYlCvx)7Hj@mnN+pCqqT-(%ZUsw zttBE`ncv<|8+=^zGEsT|s;|Q@hSb)0S2I}JHzJ-=FQa~H4=qU}WKg-@)R!>MPsH6K z+>S;uAoKGu+O~@<9F5X!SdX*EPtrt650b@pJedv4y}|L$bbB}$E{-t1*9T#R{%YwA zO2*Jb&+gsQHVDggS7j+M?!+6LRB^O!FROK4kzI<5XIfUl` z*Jmg3%LUQdIq`xcUe)saMlw)D@2an(hCeDXWKVWv}dYqoNGk z{A}dthY2l<9c3^oi*%fmaJSkGyvaC=>F#6)SD$p}a5yQ)IXp9tXZu6Qm}fbWhzCPf z5{<&lcXWru(I2!;Jh5J1wut5t)EByJ$b3uo3|Z}ZDX~mlQdFg*rpB^F`a!7F!Gw~) zN<8Y?ejX=ft;pkUG?cX;1#YBfBXnu6`Z`jV(`rMLIlKqb`phDbdCQ?Ld0mw#N7?1v zQ0gh?w4Y~b6-OszfLgqsKxH!>9@bgV#JKOWvswZJKOhZ{^sH4Vnla!TT=tM6w z#R)G9k%0#Hog>;7tme44M5-S0zyJ_W(eh@WQv@|Y+fTA9S(ngHK)0R6RY+!X0(Wwt zq^3cwd1#0Fo`IbsR9O3i%#3k!0)^$OuY(wjJW@)^D>!kQpw#GAzV3R4#YJ|Gdnf1* zE0KR{G9_OfCiziWOSG=wpi7eEU>MA{VP*}TXb&=ED@pJw2YKf1hQZ<@t0!}39Karc z@}Y=a*tB#=wYUHU{$z8TZhC2MwwUwrExKWEvqa>0Z|3mpViAjlUJ&_t8t1 zrgbq+@^lW3m{#+VTa2;|r$&Lt78zNlpp()8qxLaeT5t-cu8GTi4AR?e^bI-*>ackH!p zM)DD(MUKg>6Db!UFx$G9Mm77H~-% zJK>G=bb8Jzdgu;2PUPjI#Ew(Dgx#@lJ7v<6f(ba8M3GFRHiC4pA5UN*o&=MBX?~ zV>2p85Y}Y96~S@ytnkIC(7f$pyt6+VWiEBi6sC=cUk6cu_M*Dr z#R47R!;3UBqJlbhmDi3Mh9Tas^gkqyaVn62X6BZI)kovW?#@NJO;clH3FUy!kM_6c z#WBQhG*C5XJ4i`$JZfqoY3o_n@xYAS2-(dzyahR{27f=GIi93VOc_odUp1n{#7yzm z$^>I6!L*0ZW@tG*5ja!G93)J`>8sukWwB7@X0wxvTK z)?ybH*8h+=Cg^@R1f0dm2hPJNd>)w5c4n;Ei=-l6c|0Eb>D1MY02~0oTPmR&cwK{J zxB8l_#kUlh1H>rz*0w7@)%1$+eZs09*A>%1NGIOjWozk|%4E`UR*lN)NOIo^iuLyu zRIKL-v#yw0SCV|~$T!`qz7A(wk)a>;%~@_!)iZrN5R4=yKy&)!k|{@3?LQ=r;f|UF z?;~0b2V)xSF*qa3*i6Th?J|jG!|h2HmmZ0#k-aTwmCQQ2ep`-ib-R#S_GL|s_p{hS zv6!Z!TaXnyP#n)&GEaz@rP1G1CM$F`uWl;NlA!jJwT~EDZr`&|f4GjgzMS`B11Nzj zzK$T%^;wyQ%D7VHRaH0GDipP;!jZO(TZurZrB-W>+q5R_|DHIO@0BT={#g5<89{;^ zFb9cQ9iQ%-0nCzBJw4bi;B*U<=SOtU>V}1z5A>m-2|CM4w^&Kv7++|RI6AWJS}+0` zNuUxpyP4hl+sfqNebQ9zuGep5!WT{xo%7lhy?C0EJX%Xn(KC=0Q&Ak)jTJ!B<>JWWX%QqtdUT8s)d0nBU zF=mAa;bmn)4;Q=3>lU-J(lGo6CwxIA+Lsw^um-tK7`R_hoR)#-_OALms20fggp~k% z4fj}A?3wGSL@yLG;H?x~YPYzN`i#n>&11U$#LM%4BaUfa5cvul#0ST-on&PBqu>KL zI~ELgqbwg)VO5#voldrO6p_8j(JU`B%cQCS3Lvi%$6x_J^3gQ)0>f)V$}AC-`s)X37+)2s5y#E zpSSnNtPHt+K!0&4uj6C&8F2q>Lic=?#!2cHe?uI@d}}X)!@J1$cjhA}Tckr{@Zul} z(10y=cI(;%St-h6vm86gB%7gAmyLlSa8%`%ZTcH60`aN|))9>(STB7=Ur}gsJ!1K& zyo65%awf}x(Ug^bPhGj@1dZo87t6R1wR?^i@>QG+$e{m?otWl1BC63jE5g+TE;d5J$q^b{F2RL>ItmWW7gHa zvb^UvnxuD4Z>`xQl>;P+?|BxK()LwfM=xBLoT%=F162|vwr#mL#2&ZCz@gme9kFee z4W<9lp&Vr1FT^ptVqnZUG%qhBQOEIc_NznrQJ(+mP0(4&a!1jlGi({H}p$~@|w}?fcpQdLz!_8Wy{h3 z&7lmNMU+-{SrrQU=6~x@p4Z32G#`!p@;8SvNS$zzJFJ26Rp7B3$x46lTe-+Haumc~ z#_F6~#^7nIjLO+ouhZrFs4|Sk&Ha0%(P{=-D>FrYL| z#jf@`(HlTJI;P}DE~qn z%c{v=9m;7{XCoSplkL1n(z=AY%KOcsY#IiqsRr>ah(&l)7EVUiitYbeE*^k#?MW>O zqHs`}U`pi0STwCiq@Lch0tLyQ#8;aciTZeL6mWrwBT4E&VxPVxLzCg#jkcn+y6fEzE8lD}%u4TX9LoJ38|ceb?|R)=CPN=2I#iaw5yvJ~He2ir z%X$*zLvLD5J-EknCkkzc0#swT9XI@$z80!-4iBxUJ3lgFaHA#j)FqHH8}CaVFj zDc3B|Lu}7d&uXoUx{&X_wa&S3 z3KLcVl|YoG#5d4v3DQ(X>HwT^#PK4#uh2mbin+ADEj2}!TQc!(a<^F7L%AqusSj(o zuL)wO zLlDP&#n(DfX)lYC)WLDqWjVjo)!`7xnntbnmQ4*-EU?HGOS5?o zSwvQ7z)l5NLugt$n&I=h&QBg9aZHE7ZkWnzDEDC+c7cC$4Bbux73N9clo&>n*X_oV z2#Ap)hqoL>P7|bG;a3Ks1@s@o8m$(1X4jZzqg|jIca!aRmK^Q|!)vPzqa`!zmJ}?B zYKOn69ThFwXB+*UtGk2gL|fArQT~@%Au*wGEj{UgaY%N49&M++lzr18ccRq5cP`l}dev zy%v`8s+pRu=Ac|uZUGXxrA1+xN7dBe``r$wHdg>?Y2A#h=31xAE;SVGdSBH|sn_YW zS8q~o1rJr}t!juIz@L829AEWyNR7s_)atBVYYc~trV9>0XU$q}aIVGm+PU9qOMN!Y zSa58!7|PU;H|)KE=+WiwGB@=H6Il9h5IY`F&0Uo74Qu?|?3Y?A0QP90Bfh0VaEBYm zqaLH^eZ}!D5_c^dr=xg_6=enGqN!|9%eUAB9ijs4(12T$=8CJaOI@ig7|rgwLE22v z!^y0Q9j#+CHz(9kp+>*f?(vc!H*PvSx$5hnjmFwdt<5Yo)>du+ajSE^7Q57^YrWtG z-b#<@v8&rIttkRGv)ITB{$wyzjBGNUoD`MOcKn5hpvQ4222ZTki$q!Eyj$? zIo(_I*)XH&f}|YZGJ^ncRVnBzsw66X{rIw6INUNCvLcH^lV3Bh`a0}Jqjz0swwtSs#){9Zu}jyx z*Tc5bXbhQXsS$DJu#<`sHb-!ysLWK3f%nY1_l=$ZfzrE}5F1Vd$|4 z)?9!%9KD;!jaFZ7tT>8`v%9^v95U^$Zpn<|5xv#4d(G93)$O6Oyz1)^*I+~JGRw<~ zer?^j`31MM-ftW<{N@)j3h;(1(2=h4ecf26fjd`27aWE|-Ce9QO2Bxrv6C`}>Zv#y zDXc#Ci~ve+u#yDVbGbzHi*9)Gl}OKXd0JOv5Umn41^j@rlhP1TE}C?cvvoV~C8t_5 zz6ILF#R?n)A&`-lwq8fmDc*wy1(2_8j`l&yXxzZ z)J`}wr1hIZu(r}@FnY7#8c`#royK*$V=6b+k(1iXi&o=d=1=O0YHQ7`@`!B_wbQrt zG-4#vv=KUGX*J)!8Q7T8BjMGL3MekTdk`0&4v?%XdHKLERZp{6BSM1JFbfq)>=eQ+ z467sGP32qgOu-iouwCECsb$KgW7cC?kEA5xx*b(r=LEcaI%9Wwc30r}-i=0Uig8GT z6Q$-=Ux&^%xh(0)`qCQPxW;?J^OgHiO@wKnEd!kP`luD~*DUob`oNJH*M zs}o4fN<-+jn5(`H`9`x5(Cb~#Zm)hJDCJ6HxpBR*&O2-DwZ`>bB!ww!y+~{eAq&fm zjdP30?XFj>DrX2D17x0Ie?h9|t|DtvGJ-JN8j0}h)2??gvT1xUEtJ?q7(|_#QyV*L zn5A|xD2LAN__AE=3+@K=s?q5dljsioA-&X+tx)Od*n$Ug=$TFI2>eZX8PAU8aXzl# zVFC!M@+g?h7T0Ld){1=9*U@dT-B4h8f#FqVwP7{->`JTOmj|leXyCT9TE4r^MiPU> zMocbdknD(JN7vi^ney+Es(V%(wUgI##<2Hg+1Cf1_{SoMieP^lFOtzNrO{4pTCq6K zyrZHhykZiRQ{xufVxQ^U; z%2#`FIy5t?9}hM&{jywaN@L_sY;M3dcN>}2$k19nib6Hv-Kk1!PiA^}@6Awd5~eGz zx2!e`s38X3O;zYOd%QelY<=~rufu65M%%Yprm@bsyuBKlOU=f(YOG&orL0Tr7mWtD z5*VUGju+*EYT+d}z-YOXzamvZ0)$040#X&n8jp#UF!%tq9V$f_UQJ}`^a^StPC3aF zSDBuZ{VYTS4z{_i(@lc&7Ug12x`}TYkS|758yUUbol1^YCu*pQ`X$XLvfF-u?yRiD z*1FQ;+PczO+YeU_!Nl9#LkwY~an;vByCUEAO`I}5OU(6UP2)S3+?Lj~&W$hDJpD$4 z?_c-Rp5adKP0lOXv3m}Xste>%$Ns=iR-rk~b34!g)0K28c_l~RnUat2t2iyxZLV^m z4{&l?N-=Wc>oNzQ6`|yL*}k|9Wk{gn0=2#wBJ*M7xJcAZbRG-|#@0mF=m$J#x#b{Y ze4ykj+Z(xBEl7t|5;M8p(V#3~bY<04=@(ah9X45I@sHH#OQP6_%tn8SDZXfcuXEW`gLwyO(MSMXgd{fjjjx*vK7`kO)@{0IX2V)#|eD5Z$Or6$pcI805)G}@MsNo z^+UEE!#d6r>UV))HEi(ATy1g~AlY;Gf89^1DhR!zTBHL>8`7gSy z-tvuW*Kag>>+Kso+fp^oL}IJLQgC%unbhDJ`88sw+DJh{dZ0_9L_?&eLMoAn{p9?_ z_wyjltv#pM>mB86z$w^x(JW6B&9$~qsX2T+*tJF7i8k5Ga?w(66EiDuV!Nq7j_$<+k1O2L)pQFeN@HeS^>yfw=o8s6bYrVG2E}{ZY^@*GsPL6?= zYFp0PK>}1g*hy7l?dBEb4_4%nY^Q7%Mb>g%``WP*)8N>j=k z^76_O)kT5t_m*4o+Uj*CP`Ndh<9Pt5h`~1H3v6+L)cUUu84?c!KgaC$;eJeaiLont zIwTz-)dX1%l_Y^cI1B1RsK&aZ&)RmL4a#O73eG$lHKs31VVF7AmbJ0zX!d2fm~N^Y zlYvB%dW`!L*Bo&*k#wYjB2P(jMl!G3Ozy!95CRh#t7bSrdFtdIqC1>XdezslwBx~W z6?Gc|<>ao`v~!a&xfOC<euA(~OBa{M`<;10_1(;gTs4ckXc+7ih_g>SlJ5?x$soCzYWnmA|DbVHLfaS5Y-QrJ7-pKoWq4XsSF^{b6bodCANLiHFsBS5q2>v|~y;V^UJ=rVn;rF7( z;P9%i!|)LiO>vQQR|S`9$nJ2a6{9(v)?F1EfyifkSA<}|Pz+mgc&RJ&Oo5ZyH&wfx zV^Xm*tdza(dR!TlDM6HXfWbk0WBcq2uQyC4eQ5+dJy{_xTQk+rP*k0SLlY5NadJuH zJ#r)wz*Z$%9czW$K@M_PG(AgKSHK|CS@alO(Nqx&Ag&uWk@Y|au}<<&6)id6F&b>T z*!I<+=0{h39cC=jiBVFFD3H%!F`aPdEEFdy+h=-YH4eKarXGk95TO+ok(kMLqzdRH zx)$L5Ld298X8mmp5J3*>a56E`=Z!RAAMj#&q;7&8Cm+p@ID3$@^@KV=^ zO~I*lJ>OF|{Rhg*0Ulb6||a!|sf($A7*duN<_SMcSU#oOg7OOC1f|WQ@B4 z1=!w0txPin z{0)&P3DO++y)LPgbhogt`Z|1%Yo(af+J&ZR$4eywRum&_M{ooymWo$JhcknWq_(kY ztoJ3hOGOCq38KxUfzln?RLn{qz$wqK4erG9XJU_8+-r2f@@rRn>-IpAPL9?yWV+UF zgn&nucf6fNnc6}X%zSOO8EySiF3wze6Uo&{`sqO8m^$bI8@NV#9m$Mi)d;jm)6r00 z^&(d5nfR6o)-LjULo%IsE3>^9N)}wY<5IG)a&^VNU>o zh{!+$fW(dhS25R`S|p7m%l6prZcp#;yziVoXXebu`O$M{Npj2Gwx_@Ii+ql(BUL1m zB;tAQ`?~Tps4M(r!n8d>5ia#Lyxs5>hF@_^skO+NSgQB!sb;XbHg7M8Y5TVOG#t2C zV%eK|uM8+Rc}8D;O`4D7*@yPjqaeR8Hu)kh335GNlV)2MrNGFUVZ+xS*Nn#ZO)V0* z2R>aFO})a$FRq93E_XuRBMZ}xP~{s>sepz%K|Id1oXm+M!;8p{P&Yl?y)RgM+d}p6 zdpO{*FHTN*-igT0a%pPD;)0K;H$lEQdoiwkZ4ml=7MZvv zjz;#j@W-gSrC#W?!CR88V`qEDT~~n#(ZadXcq}4)8+#p%LXTn!gw#&g#B4Qu(UgGn z!Y3~rJcg>PC|s4Q$N*r4tTSXV!03*lS1|;k;e3%g0ol3}GqPJ6`h|jjxd_540y}Ua z>&3C3V;)2V#l)e?)(mn?%7Bsj*Ar1-@~vPCC}xrV(!76ha%%F4Z$6jbf3|d#GA?`z z*StWA#+grt6$!?k>z6lrRU1kCa(%JBd9lm9yDxLacc}ww6-F>r!-lbFnJ!kvCfdk{ zZN~1&>#$y$WfXfL<*puTEG8XlG9)YGY!*b`d<{!EzZ*L1FE@@t-B} zQuU{_aI@&x&(W^3ailW<0Yxm@nahjNDEzETQWjMute#CU*3g4_A>%QU$<^I+Ydp!U z3u_*))S=9mql7iZir_U3cRRO+wCaA5vwe0_*6#a9=4I9TF$(Kklt$z-aI%T}a0nlh zm~6UQmUCPeV;}@`(35$&t?5E~%!HPy@fj)~nYmBqaA$dj5hp&Y-?^h)Cmx;UK1K<@ zA!NU_Z@W0skNq5s7BgwtQ6U)$R5=Y~OY@C??*a5C-=)^eRWQAHHIL3izL?ME?sFt$ zv>DelY!guquw>a*>a^YU{_wERZr?Jmxwn$^W_6P9LhsvN8u%uQ+Al>e%)1L%=hsSX zYg|CxR5al0Xzn-^b|jK(ps#$S5qp+$KK^9dQhaeDaChwI2ov{oyNA!Vs50Z93R0HpuCF&ylC3%LawWIM&*#gN z7w5Q#b3K@jwdGVdg3T=GMs3?qa(Z%_{jw<6iIJ?Eo$&KrdjdrEyV37z-sN?sBWJaa z1D(KoG%LLpGSwy}O~6(~3VO$(q7a=`G{Ds|OayC4lR@tgfFc=t`nSIZ_ns%rOlzKT zNU*-j@$X3JFie@Rf9|O4yy&d6!Y9Xmj;dZdc%;cQ1uWyg`n;^+a0eDHMQ*rB;#;}A z7*Ai$UKxk6xiI|E^5WIR`D~HXl{%^R^-H5_tQS>Yt@C$-1SG8F@|zQ)#!8{m(FhE} zi)1N{Tt;n19T;`8E^i-{aK*0WRZ;%KBR((lY<K>^80h1~9(gJoj{O`;fuM1hxNw6-vJ;iqWj<`xsKwPq zeJd-5s`>0(e?IG$WHC21^cRt6A0Ct(quh}+*6r+CfV{A)$Gw}YAn>oGCq(*0l`O{p4F3kmbAk++L7w%Qhitj zYAJN-())f@tdOLVPs*iU;oPckQra)k!z8=yR-=7 z?Y47cXhnaUZnNU{V_C_Pf{UCmF%VYz8vYQ8Sy;@?^E3rO_PEcXBB$GghuuQ-{?p=L zAchmBegM&mh&(qB{FQYv*IH@<))2X zHHvo=J|^77o`0LBUF-kb*KQbUdtX+1gZKFhdh>F%zKU>NtOXE)^G9mkRPncXg2hI| z7ppQs&NADjaUnfYPuhCB!-PQi@Ff-7%%K8(9V^8BgeXJihYsknV?T%T-Nw84*y*xy z$9TKt6CoVo+KfU`!{QrFU-=8$OYs^AB$_7eub<7%&SBa0qF}CT;oCHLf1B?6q}|^2 z*{ky;3^YHvi07U&j!>HNqPC8QeJGX_HIu_44rO>MyV09I<<%B#f-F*OAB)6jF&+#9 z;F$}Ad<2!U!Ke>p-O0k$*QmwjwQ0VMn-!01mPWps0nws>`a6ygb}g1)J|T zn{DlRVon`nv=Gr^insM7A93a$ z;?em_k0DT+&jq*3Ha00(fkSwAKOSEYC>KoE?CgS^N7D9Df5Wx&?Zm7;h9HkuVHxdv z*ssff{u}(5=VSaHl;}XRmCt8_pg#xaIksRr#9fEC7@{WVt2SOAu0q=>FE!W6gNnJ9s4=58b7S2 zpXL2z4gj&c5s4o9y16L0IZDeC(@-UF?BxEIIMP}A(++|bt)(qzJ(hKL4g21H>_BpF*zX3DA3geJ4 zm{?b(iz!5Aw;7RvQ{j3KrZrPW(<+v<6(T$kaP`&HQx0%S94P_j=W(o)V?RgLtcUy- z&Z$-c-zg^s#I>5}?=QINi0YPooz9H)&HSzHh+9Mk;G)JmHjI)ji8K^CD9wglK-vIb zbt@-{PSO>ix4K?@+*`W9wIB)(?%2ld)QWE%GYOm$z$zPNGtYVL%eLjvhIk)I=M@{s+Kiu=mTAD`LeDqV5hT}21$X#kMHNg3Xc68^FRzu z(Un=6(8*?hQUMh{SPK9YW-PUDUA$Y-SDoDl2PH9csf*CZr?8CDqEuq2TvN40Hn^3i^HQ#qqhxqfZpaGDj{0MM)>ocs z|MFowPj@OQ?xQ$XkxlqZXJ#+`h+<&oZ(YpRtfp9c9lS1*!&YCto?p85|57|%7jL#% z{yL08(ty?C`>scVs;-i78=9jb8K;Fegihm%n-J>BV!@|C3MQvCE90@XZWUMfl1jRDxfp6&wLskLP~=)eH>f;x@?gc-<3hWD*~1&cd4kdX5=h!aJa| zkNX@_xJr*`dIk7S zPV1Zg0xEK~E<6EZgcBt#e*tiB>=}X>s@8+F!+kb#>ASZk6iPH4xF_tJP0D2uXKL6U z`#D^w-1E;neAJ=4l<-vgX*LBcclkh&p%H{DeU9WPr~3I`gs9rAgy`X&x)mUl1q-NE z`tJT+<)5_WgfezRTM|%p_jNRe!HO8}p=~@O>-g#8l-a3kRMVhxn4d_^chL~K3NLBv z-Ts4Pqt023#C{cGd%A^wD+S?lDnZfLCrc-nC>i_-rRkd9q!^$z2fnIg6 zWt}~Q4*l(K5;(@0t))hul46}~JCAzi)F0_(I$}J>_n2A++X;XGQf5TUNXpI(4=Hkf z89xDbD~gBGeO=@$ZrB!D?H8IGY*~qtfRQ0+*LPs|7T|z#a3eKDi5_FuPnLh!z9?&a z&=yC24rJ+Pak^Q-Nwpg! z^A>10ay`Bov@m2l(Ud+^XHX4#3*nx$Z^x?~A*%bHcRb$YRcG_k|E@h%m0!gQ^B~WO z|F%S~60L+|KL=c7Pwykey7Ry^*UZ(5ha?dDJWzCLo6Y`=kCwS~PomOIK>&bt+~@ax zxssT~_IX=3L8t498O!KQO?S4g-^^GqJDkI$@AV)7qW7EVvm^<8 zW;51wC9Kx#U5FkKiR!q?y(L`C#_0kQxv9s2L?sil|7Z@0_q_i@9}!9fjA_V^z5@yQZZ*4m;)G zdv{@^>QL2Jb@qA0T>s!D@wA@68UZLT=SYEA%gIEGR)rCP8 zB`lEWabY*Y6smJoMvwg*(?Xrx-<`ODhlnU0FB(adR7g85=O6H$h7GO2&Pjxy%_IAP zJ`{po)Q5e%rKG0S#{qDnI5mSNK~@-;9H=Bs6chvL`ltxx*!_O@``P2*-PD-nL`WMn zC<)wM%<}6pFIClq^a>?aJ)dhmhho4>!Ob=`{AILUy6tv!D$M%tD}&`iMB_9@lbw=G zRBc^{1C>(?1Q59Cht~Ix{Ty&fU)(=O(U8aEP=aEEeMD4B1iHi2>~aGwi&=9g5e0CU zd-%qZD7~$*X-vw*8`cW183wb2GWV;j8A_sxxjM&^*bdZgjet-6_;pYfbhW`VP>khs zVxjZligg)XcT#R1+Uu)W4+oYeWC>+8L1*3c(nz9w6D0Ng#4FzaE_)>pHX0-#>0rPr z(oBf1$OuimTA%}eE?P7)kNq4$Hg~NPAFg3C);rX*RmiX#3{6AMtXD{qN`3Low`usj z0}a5=D$=lNK`BykQkh-P*FK91 zu2T_bcl+zOIMA}+4nn{ux8k|22a>L%(Tq6QYo`pK0Y>^T$B-4E*o*S ztO)K#S*^C{x}n)Gf;NpX&buvTv+hXkKA5?RKa#UmAEr%R;RPVrJ)bS0*ImODpC8h& zeBZ7Oy&Nh$i6*xQ<*2JmW;JV6ot;o&x9NGVp;H7N6`~sB^8f5Df%TWFDMoQAWCU%N zbINF1zWh?@rEOhki*JI$rSJwG`8jB1oT5_^0wD#6iY=)9MCSXu8~K84UzjnA4ef5< zteH7mbp&mUy0}?&d75=Wa6mFD$`5@Pluh1>-va6?{CX$i*9lBCXaOewRvfU!d(1a3$J=x(*iF9?;kp(JpId4+a}u}TWWU_1 zg4f$8+|&(T@Ozjb`~L9IRcQb-w$9VYB9ke7eL8cO@xqYG_5jF1G>$F*9GjH1R-B$hP zw;vyh`f+Ge)y0Rn%nK(?hZUA$ms>d{Pj9M7%iL#hIy^hQvcz@hc#wI{rbUF^B|g^+ zWwTdKL6%YAD>Y)p+U6n$F^ z)!nLFwe4{8wgRU1@<1;H{`+&yCfhOv`;rVs_yck>y8Q9}KM=w%QgiZqa2ALc6 zB1siSIGi1^rVG?n zd$ko*ks<-(O4fPN_O7#;Wh=-3H&b7G)tVA;=8pRuCD;8v^c@}V1N&l6&^Jt-G_aEy zOz`h3A24}abH5Rbx+=Ro`$z{-6z2ZFKaoz1KN4Gl52z&P+$Z@07jzcH9?3(3OF|ve zpsidq#ET@y*W*u4hYn5$3=ys^fAK0)Q<7??;hG-80KhzSPGA=cX*;teva-&+rl4gh zc<4hx4uEI}_aQzxQhc}mqch(`aT}%xeH`~WXgGJ)ZYvBI-#DWrMa;Lp;7LgIEUxj~ z>4(*6Cclj4ti2jrfaxKBolN^*EdfFOiP-Y&6R~AMUp^6AK!D?js;VOB@ivTb zeW)|m9d7^VbO^8Guy+#fjp!S?>|Wcs8`(PUBFwn3n%ruFhB}|MnS~cGVAPFgVWcY` zrV!ANVz7C9!RX6m=GLh+QHB)tv7ZCYU-@9%t+5H*?$2~^Z6h)AZ+pERGr0b=6>A$B2sLv!27;+B~FbMb2*Z%0kmp;3k}Cl2x=(-1dK*KkG% zgmGuF5RG*5dSyA?v7aNsqs$%d{wcRUmKRS9PupMS4_hme^@GSinCcG}I*Z>p()n`T z)%|+d?{YB6I>=V3AVLjYzDdfQGLG8nzkG(hQXXG$l33P z*jbQbyL9SfKSx%3&TV`?t7yHR`x%S$3+k)15n;-zZcqHk#csFW^?U59ntFRv-6EQt z_((|(cvh9@p%1+>jrMEuqDSeqC|Fqtem<$>AKRI9wnvEo_TFIUSlI(_p8& zE+Tq;Sx699-x#@UR^ke7NPV-+Qrme1~DxXr`ojh)i<9#r*+pS z$9|4jwwQVQi>g3j##Uz(H+~`jpK^btFcGT>YkLZZLt0}(Uc_a;ezzBxf6Mu}bHX7l z)>tLst@5xgE%K|hlhoO%PsElf2%Fix0PU=fh*VZy8aW*1m)5z58i3(c#?PG&>Jn?> z)TfX6lNg}pW;~hOF^X{%+=mE#^5&(JnJWje^y$yH&mU$^kHM}kt4+k*)WR-0_(O70j;Ngb~&PVp8k3c#(>BE=ybRuauuSU z0Q^!&;Vla@0Md|mP7R_GtfkC|z+$h$qRLm;p2V#m`OebPv9v7j!6P{Ka|jfoP?X$ekYN};3~nMF(sSEE)L=5;nt)DN0276qwHV?GF?eVS>4NT((LOr z&U)n9ejv6Ssu<;}HAfs0+b~2=J9DNI4Lkj%-H=86i`Pm1GpEBPgDs6Ny+of`r83KH za{n}1s-yAzo9&dHg&mpN&Vs4t;vYJsSidRe7jERw0Q&XcgTZv{=U_J=^YcPR`#KgL zSW~ew!y-qs6m?&`t%UG=K<7IFXq6aQ{H0{o+-v2mgmfUnLS`|UJ}voi+bH3z8WxP*{7u@lz^Aj3KI4769usaQVr%) zzUlfMIDm`<&2LItXXoXYo9^C?9JBhP(}B-lXH`sy6$K(ou3b3K48Z2waI-YOOEFUS z#Jh*PR~KY{dU_Jd6W#nw*ka+#{ox#O9TAq@2nxcX;AoAIjR7Qj}z=Dr`G^w|FA9AgYgYolLs| z%GI>%qQv#LHvu3y+V=gvZVHUSKRF#PbuYL=8acd5>C=5M^1~vqDX#nXny^6CE&%Ik zjcoP#i;Hk^ad9z?7gKg($M^;%Krw?F0<}){vcU&8Wx%K(`8n*!;~%vd?i@`O93~Gd z(@!ixSw^F6r@K}x=d5_bYoMer(xO0drtY@;VLf!H$MEkE6EXs4bMy|p(Gr3GY z|5)p~qlqcc6QO)*O(2`r2h86@%L9r9u*@(^FIRn?ssw^oDWh9Hxp?&hv1KV!kJGrS z5B2S^l4ZpY{@qZZEZmA7I)QvEiqs0O%t=E6X$*W3eFMPJepCC%z4|SF+;UT9S0cI!F8#C1>HN|c+fsQ^&9_(cI?A`q_i~iK?8G~B z9A~QgtxF-6uSORObE%~-y;CzjJ+ZWxF8t+1EV-Ac;RZ%yx@@W)>I%mtU!Eb=F9r@yP6HhGL3X7*C!JAEm=D5z=Jm4jGoO(>O=}ceX zmJy!3c>Ic9wtCBrR;CTu9K&bn`*-L_O z-0Q%y{`Z4DjqyDClq6tiISYGiBNXm=E#w0vGG`YP-*c)L`gC8pvy=I03_ho6J16gT z#g}$)j&EbVELNEQE==vbvX1>6WCg?A+_n;2;DSx?C!`ZL=Gah&cR)cWS5U*X>>f0jrVRNw?&Y12wM7?Of*Nu>0=B^)nIIG{_ zLlni0ctXC`X*B3bH=m7{W#D=zAY`AM8>f_=P0wDwut9@7$@s$2Ux-Zi;i*sXfW~#1 z%cDO>5k?qIqgS|Ne@Z&ZV>Rf+bztrzxBRpglWvG+U7iyxr+`w%LuoOzSR3wS zEV3e@Y8L>F>MV8Ln5`mG`vAgm+i_pV*HCx7hWq7tSz_tc0g5x@-<+B0{+U~ibZ-{w zF8Vq+D5Xx0NXAOiX%VA05fMDNB^00;wLa@ zgv%%_#mM%8Aoz2nlW#^Gtd@kg4Kf0%m3V~RLdpu#c+IjDCi<8`N$C0JWE2SJ2?Id# ztH@0>@>-;CJ|zjHE6}bRD#ufX?>@tJW28GTH8MUMt5+}Q&psz=K3>c|*Jl37^lUa7 zh59nY2Y_ygk#Sd%x<(R(B*%V^zeqZXRT;*qBP13LqT8 z#|bfPQ6+X%*iZyMWl0tI3B%P${@F=5cIFqvRxd4YW}XE*pd;`L_t%Ln$8e56C7nEuhn(i_9WVeq zUT1%nbn-WUm2?7+Bu_dS0Z<%kx-*>v;-KmjP*tW7qJxt>nvakqc%zCg$!JP#L`3Z5 zk=IJbZ?3PRI@G2iVpi=HbF^zR`-L{w|J#Y{e-52zWNXvu;Ft_Im&Y^QP22+bfSf$X%JYi%t&}M+~zQhRn}ISN=wholA>Xe^(je^B&|dx zwW!2Lm4EriB*7cFU%q%s5~zV*UJA!@O6Gw*xA^?IYthE^7vq-~mT~TVZ92mM;qJc^ zTaNo2In)=QNGJBGXCy#djeKw6K>%OL6!H!i7ZM+zl*rM54evG^kWSV}`h#@xdG$nW zdD5C|hM50IY+*7}lHMBI+IVM+VD4s3E}Lx~->T&TFPpM2i>D+({ieLm{x%cMn>T+Y zNsu-J{o=KSs=GEd5dYerJVJ&vajmg|SbK?Z-H*hUh#&hoS~$smBAtXo{zN*_1nr2o z0x&c2vD!rt^68lmFx?os2i!2EMX|bIr%gK&k0aBxbQ5t#tq$A*ZmO(y;~gUWZVbgh zAnT?o``ZSgk0pQ(l=|`erzF8$gCxQK@&B77_}|`(+i0#zgj)k_U{)vf0&Ym`x@MCw zFx@ReVj#A(Ih2P-eh!2R{}but4?mJlCNc|aO~$m$NOiblWP79q?6xfr$3TT7~07-h&sVCGj&}q z(e7?CD*|C0@8XC-raSd8m?glV$Q->%TICGSr7mAPh?E*NLI!zW6tog9FY_e3NSV3X z{g;yjn?ry&I+6stGFPEJvd0%utT!+uTU-OZa}oSNY)K?N_H%^eSp?Eas%Rw848PT$ zuu-m4Z+=EPamXSoHDUsLLR2mnwqX^S0X;pRFePGHCe@)VlUxx;G1CR*FO76d%hGX# zuQpl=|H;%*t9Z3ggja3*UriDed079DB9%mq?&q3P!<@QQOeKS!-cFJC@Sr(%U6dspTS z;sGkO5UfEFqsEfUvX@yu_7cnW@*HTfwp(XjgVk?LQ#`Bwlq49v@-XBP`JYP?-1gV8 zxNbfr39{B7ZYP~ED7!#>*)|t1QfjTXzV)ZXmZLq#&qyaTJJRuUW+0OfwJFzdOgTT0 zPAp$XLdM3V?T}?rrRGqK+e%MTv#jw*)0RMBDSUt7DTo8TfoEEK6oGLS!b46`hWyg? zi*IhpD<{eDI%2GjDZ{5E!7nsOa@{u=;`}^G@Fqz%4ZYf}o@%t8k_7ZBCrs1PXLi6_ z_Kex`+{X20moFC(WP{kEANx5L;AH$rI?y>QF>#9!5ACm;sxRlZCzXh%=1S|q$%MMxURLY{D zHi7DzKFp5&927Msh^2lao%osWB68Y>`8ELMG59V7>BMf6Z~{y*3%V657aojBJWfct zXH_-S^*zwYLLV14D0M4qFhT^gOL}aS4J3M5M`*R~p#Opw&k+ zFa_KwbR6&4&p~5eWesyP0K#S}waq_6I!XIdd_c~>*sq(ePU@6UTh)Ri1DxJvbs4Rc zX6eQ`)n+b9Ay=vJJt&+-tgGCL79e~gWqP;mYQezV08E@z%^_iz2(ABxBteQKfn0}I zF$RT}fBAZpe{{Slo_$r7!|};<3lustJh#FLg3p*XVDxm{=SZ+}plg6_9Ey88M$Alq zBAuk0pGYUTKo)hHv~+jVKgxBF8$f{v*>D|ZU0nfEmgYI7OVf^UGoQ@x2~DVqkSm7F z70;rEACVoQZhE-Af3l&c1->*T0Tr88e<4YLaRMHaC_bD6mskrdn7y<08*gE(qvWP} z($@uMU{=Imj={x$Yg_ZT_vlF;_c^j8_q)ct0c5cdr9g*Ufbm%ICy$0-;)|1RLCC2y z)m8Osn+!?WHU&&LO9p&x+W=EWb0jO^$7%xIG4v{~G7)LZ4Ege{J24}>rJ-M_)ooV- z`@kCLR{SJDGda5kPxU`02`>C7E3QM!wOtlc%POKp#1(su)Vmu$h!~Gna)lC#^2!Y? z*^xv32h-yZs0AJQIm$z-9(eR2L242Dl)SF1Gy$p+ETg9nTPkD=6Ce&{m&9>7 zq;B5o244-^CdqG5kxV(SXf_WbZ@%VP4hFTCh}bGj*LLteT~NwFu{sybm94`QHz(vx zoCVim_~d^1d6M9zNYD;I=x4bgrt$i9#9sRd!#Qyj7g3tgrod&>x1C&yn?qkxCs@n$ z7NyH$KgZ?*MB-g8%1dP-=dBM7L^- z$p3!x0fpc%Q8-6aQbNtMN3y#Xo?*m^&+2#XDA$QcXL*oS>iam}>dp|m0yoj9x>`j) zxnCyr_VR}$!Eo(Noh!(zuzDe>r;9Mb-UZl#CB7Vc9*PiSeTvWzak4n}N%i8@+t!6w z^vKVlc)qLhEqw4H4() z-R&mNK76fsp$-L?sT`_#QB+`^V>PJw!r(n_`t^)<_|{#pT8=A>MB^A+v8!uImal(u zzYLbhen=9;(jmI;YOmwy`t=oB>0u;-*j*q1k_S3IWpQN;g%cBRY6rn?&c5NK_mBM? z)|vBw&{?0NwwR)KIHZ1DW$3BX6nvctoO2Aju4*>QH{_Hls->v|qYGoV-v+gtjDK>!+<_f& zeFaFw^WVLR+Arb=B17$xgewPIOekKMZvm|2aw5OuMrgpt93@MFdnKP2sDz+DedOn` z?W7&Kt0Cv5pv|gSSGhu1${jWZQKd5_z4G9=P2w~TYfhq~wQze#p<(j7We!u0-8=m&pxKFiakXj_p{GBiK$92A1%67F2csk9u{g* zSC6Z>ziGUoz{?m#Td(Ez_fo5!U!`JY_?kBg1AUy>AUhVMvYpc*Pe zZr31n49Q4ECXs&^x|L^`((2*8j;9VN$(TIsCV!G7$ghx&bRpio46*P3DM`@1>42D@ z_A7i)Z)DNIOU`)djB|%!yc2tnp=(c%)@WfJ`8lSTf`7xsdu)>21Wj!SY5+h^12>1| zsE@EBMh~Zit~lC8)?`SgSsAuaY7zy+3MOI@bZ)+D%l^>jb@#9e$}U+q)y;>p!W$X* zA`IdN!b)EQl{c{pD9!7tsj~2T_>&|7)XLoR7nkyiTZVV({+J}_uCK3H;V7FVc^?#& zW8p~}=GTX1oEi|=n=B%kgyeH_?B|#k&EYqR_>cp%A$^8tO-$VwGsfMP@uv&rV_RT^ zvJqA(xXV#cr{JP#7w^9mmXP&mUQnek$c zzPn9AAE6WwK{3wNj{O{ZDEi(jS3q%AnbT~M+o(9qH}>NV@zc5~4_#G?w9E`vVm|66 zK+AQh0+qbZ-P$aZGQvO5t13e!!&t zVx9ezB>1Ad{*)w0hzIPPM=uSiLw`&XT#KtK6*`Q=_bFZ~s#iO6tl~<+q{d0k*8{L; z=(}UdcI@XcUzsKKwry6XaS`SXuJ1)zC5*N8!c{P*9Hl3hGx(LWa0XsIrIWw^k7qbjlNACm;F z!oM0x0%+3xOWO}2f>~xAk_5KvV;EaDVPK)tN==A*XF-prRgrVFL!<&T0xav4EDibg z_SnziPNq)2K2!s>Ozy6CS*N zN)p%smQblT#*o|z(o4+U#g(WAzyft((DY9D<{6+cz6ybyL-VA>4o%2{u~@yuDEGL} zv6u^aw@!E8J8=xt$;`?!fo)zgc`=k4e(4i2%ik6Fj=Jen%bQQY1u%RTdvpDL^nKVX^_-L8umt)P#u-sRVMZ&zY_Z7+8#e8 z3Er4s+yl1qDM^q^?%F)QLf+B0;Y~||sUNT^b?^r%;$p=CxTaslaNsD_u(FxljX z`=#L-Lw>gKQ+(K=AzY*eecy$_Gs=+xN7BZ}qom@Y|9^D{$z4mL!1buD(Wh z=f@;L>?8y;354UY9(}^rdobzvbVopg0CXie^;Yj!DrmUxSLw>6&W5 zTdgQ*1920=)>tg~6wUwS2@*jk*1lDi%1JR@l1fxU#1%7axU%4mR!Zx zd9_+3k)A97^N=bSRoJ>XLtql+A`hm-%dDsNv7aMe;!*Hd-*%f`gF1uPx9eOqcnA%k zw;GXUn9QJ7_%co3=CYMtNsFeeItbeO6_>rDQ;&9HCW2)gVF5bLhsUSXk6rPz-2Gl22S`NSI9ZeRg9~$9{=DH0&8ob#qo0xl-s@Eb=3EklzVG~yBoHc7mxbAV3mm9} z2wtc8*q@d7_YOg}hx5=wA(I{ZIjl@MrZCBUD%$E|dA7z^owu;NLlJK^j(9i*ssL)J zEedd~ZJ=EN`w`$k_SB%OniMe}G1G$SV%G?FFz(?_#k2>1)37TrRBV_)lQf032n_T} z=JtQnIDi`T293bS>Dap>|7 z+m{7eIut{n*uSe$`&q5k8;Ijm^#)0TYb-tS+krccqE}Vyeo7L^{OXH3yzuS9Iv5L4 zW;{f=M|Sun5rv?2)$Ut)?B^J}E^{7})xte=v7JQJ=zTdX_M>?-g-B?;E->5j-P`YK7#+3`Kam`Aqzl({Y9 zB0|)jTPufecEz?YuH$PIKU$No!W5u8D=9~C^wPf3E%dmZL!?uNxQv61YcT2QhG zXl1_$XjZIwBNO-7&k@ah=2(E}qAS6}1Qk&qdqyQJZO2cMF*F0HQJb>3TMyXfCV43n zG4xrG<|-v7mY2HDg9_hLa_o1ZxFMMXK6%y4CY90WS=Co}_cz_bUQxK@d5?$Me(sLU53Q=aD);DXWojUOnGJoPJZ#={wPbb{e4C2l^(7#8;`+&@JO5Xv4Ny#K*%11Y zIbw)e(m|#pT>aS3;V&f~7R^pB?GpQr(sq0jJm<=}?bsXzI)|(po>$vmtr%YCyj#@I^Ol+-i$P$2RC1KqAgl zd?N;Bk>J-RIrL!|g+Z9t>PoG)-+obTcfjk4U zCkEno%WNOt$_N+EBR>Zg2S{wwUM&J>~x8r@b$b?xnX)Ij~e3pw7#=5mG!T1uM0iho^y*IB~faG&pofF>c*21|yg z8hVi`WJbgT+>l9LEKw@4nR_V&3$i!sE`PHt(EVW7nA}|2VJ<4p%9J6p?0RvygwAuq zeJ}QdBzSl0HOc}&?a0p&)veMCi4;JZ6NFB|lFtDYUvl0vL>UWLydRnsKJofW$`Dq# zvm)S=MZ-Y?L>nEDhz0&KHVn7kES7x9wi4KuI0>spgJ$e7Fnvgn-IW1E!?=b7>5f(r$JyU)ymf#+Xwg4JAx8tOC zQZAWXHw-E!-w*Oj=e1zwRUaW)2^BK<%U5@A416+UpulAoLbg1c2hBco7YW9&G!CIw zN2CPEkYhiGYCesa&z9pkJb)r5hp@=J@z%L#T^OvQ}u?)ZVj1VfKzmP>`7@kx=wA zmh7&;o6VOKueh>pGoZF^Ut;ohg$}H5*Ie_MLcHVZszPEQ9;-W*kyr3=f$5USFoIlb zQ%{X!KgXYpn8B|Kd_R2xaGEVABUurBiWf|%n{{Jl4@n?)1uIw#^>_h?S%e0g!NV#~ zJIW@-|LiT{n69djRpjW_m5ovq+v%j7zf(qOTcd^XAmJQX^w1NzT6&Rc20*J^=8*ZmreU4moQ~~i4q1nD_#94am=lE&F z{QVE3@>v|K1knK2-RVS!!c(8rLhlZnjylP&0hMaR7 z5{a_Q6t-8DB2JE)NS0_SXSBfnT$9@ism_bJk-NzqB zOal3Q7$$7OZV;%$>#MFuc?El0zXE{qyH%0CWL2w@Bc+W1zcr8(r z+7os_xrQ36CrAX%RY%Lr|Bz4qeogElo;w8wekv}%d!YFkRu7LY{7cnD$#kQzYWxBh z`!uY&>sGj_5MQcMR{9nGYfq_wHdqpW?fWj02$k;zEy(8hV|*HwAN4tY7%{unkE8P3 zF!n4;Hwe(M4in5R2HiEHiU=}N2O<4L=8oNGOS4TRN>i&_p4-7L^&S}o2ckg98$VMF zfIMl8{qHft<_4DdB*2sA`RrfJ$mNeg&;^MtWx6X|uHjYm7XgJQ72CFJX z19~fxI{yF2d$VS_kuy#62b^Rk$vR6!C;}_7A2{IdIDlh0*pWbNinEc;H9J#MmRd`x zth%OW%(|`TVs6IfU(XvPQ&Lse%pVAu>7q)ilAOT^z`yT(pU0o*i~ch;lw~5jc5R5s z5`6KSJP9~LmV{+FLX}@f<)?d&-M<+zkCm&(!j~(0wPI71z0}>(Z3;x6a3i6qNPE1a zO7DXKtfQP`)mTarf{13i!`CD)2;NGuUCjD{-h1;ekO-|BEM|wbSiG*z^kM*c)w2@P z^c{hwwJ?`f^PCsg$oG8fYu_mvab|>*bUbpEu&TbfQO)nmgoqxDEUG@ca;%vRwWxm_ zm3N6121P`xqB-?*-2ZLFtfE=NYG@_d7|; z02mxFE2lb!vma*~Ifs$V#8(^1RB*3iBp>mf3-TE>*hE}s$;JGeM7*5Gc!VEE<&*DO zs*Qkiv_AE7i1?QgGrfRih<2v@w4n)l8J3La;3_Ryo6{PcvINs~tm92Hm8}bWL_$;F zPUr^@a`1mViLA@(X1nLS#G`eaMOg?m2kwAPQFa3!x~qJ$z5mnD)^4-L@^QND8(XK2 z93wP)6W$ilxZ|%v9f~a<=#a5S6rlhkl5-4+@>&FLmlEH8sjo6iH67>6sJtK!g!CjV z&`CM*b8w89=T799I#7XB{9RB^)62q)9va9w#G5IIWAIX(Hzo5WX1v$~2C<+|LmBWN znO^_tZIslU0sB}`3*cOY<(w+S{OkbIaqvJ$u4hP3{a0Js1kotk^)PU-%~WD-;K)h* zAiC|V`d5l=5XUndwEww+L^KkR95}kBYnrf6gd$(O3XG)}D63U^9F;SZCdxc5f*KIC z(>@0**Uk)~7oztON=$zrlq*79B%89m8`}L(QPQ<(pS;JeDIOL!<5ZXL_9-9_scX_M zE{X=mY(Ix4p8Js;ggU@;K3WBsz^)AsDX#NGa)9wO<0(dtpiMnn3p3OJd>S~I+@hr} zfd&Boqio?bN<)uBP*;^vmd9~l=8WH1@s&-MacrnBS1wvVUTDDSJnPps_Mazy4g+r> zgezGTAeR{CVf^B#mH4@pYs{P!aT(4_=h)eLy!+B0brQN(hJuEfjD`*$L4(xO9-4x-g%sQMF7N($}uk5jN_@FL#T@j%{3Ktn3gYr5U+NhgK}wP{WT~D z?@(E$O@;Dm-FP)agprMS?HJH9eg9Nq{));CY#g9xq~uVzskm79%;c$`rA3Nf4*pRl zHssjS^uxuHC$R;8C&uSxeBcXHlp(G=g1RxYJgS8w2IQS^Z$g??_@Tc|5DEg6kk+l| z>$U@o3!b~nD}8Bs3DOD2QF%S=PW>E?biRVuPc{Q8$-5wF@mkT^0)v>ZLAj2K6qi2_ zp>a&p1l`$+@1xC@w-~lrSawu04{`)J@D$^~ydmreDqs|8l-lc}CGM2$-LzKAojbR7 z9f)MO!{i~>TDRDGI)M@7)I&JV3%}=}ZE8rdh}IMx-|pqL)+jU0xf< z|CE{9Ea&Rda7%_^eUubkb?WDEw2O0=uF_m58h=v31Av1swDDv4*PtB2j}gN9(8jq~ z0VWbW9&hWQtg_g5&6m>~dF)~z@x>_jNv5Nl$dN2X!N#!@-qQFmR>&LUq4 zXLIfzZ4-8hpW#9z6>dZ)ehzK9_$F$f(^Msj5_!}Ri}4tg+x!xgd%a=Q!fv7r!{!R> zqfkTk<`KjWd`+2Usy~LN*oW>tLIel|VrO|sgWUCgj{#rDo7CQ_k@A@7)h3 zO{2GEP{fw!1)je6;W?Mp$k_@kP_UaM-28P+)y5Vm3YsyoeU-!Owr_ zTv6~UJuuhvT2npxSB2X!*kiA?^qa z-N-YpBuV1UpAppexBoa`c#~~dx%+Llbg7gmXSMMyUzuR$Qs3Q+2yaVO-HL7+vVF|k z^h2;fpH*K4D=^K8t|KGh2he`H*iuK#lK?eOLFL))sO;3e=cXyO<{jau@g&c*Xx3ltWpA*mWHxfs8f3IL^L(fK-E( z(zKSk{@=3q>=LoX3AB1xJDW<(f%&_-{Dz1#&G;64f7Ml-+CWD{U>Q}8{T;XvV_Od3 z#082vciqVtRLIcb&*A~)o{=V@W96;BtoqvLKRhM{X6~`yy-wn`=nakIA4vGbiEeG) zk78k=uxFn7IbwpJQz*oZnPMfueCC2*<$~V$x1ij3=iB$Shf4%*7Zlt1GOaMmHmv&F z_5b|Fxp>sh(_YT^fi?XwdEA5pS(8^1RaX4W!ds^nLVu-(KBx>GY1Y%jt{it&Yez&6 z99>r2ku(INT_~6t(GBe?%{|}3B_tI2u4U5}p)N3eCp>{IQz(j&WIPW-qw5WHYdOHz z8d{a7evZ@)eK!Cb!&A(%RhG^S5L^#wieG|qefGw&TS{TWbpn`(66pESTZ^?BjoI$3ky-bT^^$v$kb z7RV`_`Z)x)@SGCGBHGfg;ig{7RxFvgUXcD6l)Kv(YkR5KLz=lW71M$^$!6IdyMNGT zKj!Bi%lb%edwdH8#(IG2WaWsM-BDDhk@r{```zJ>3O+z`nh$i*=rEcgA;O zJC_4vzGUdbLNw_!Ujs%5pmd~~QFDiBV0-^=;@SSdSH}2{mUQ^-vdCRXB&qEJMX{VJ zo?1%y9MHg1KSzR_Mv?o9qAv`0#i8uLp7@1ahKde6RfNy+4x^ogzsvo(VFsyB5IXHg z+VpxUb(0dMD{>|<7o4B#y6lr zdXD}|agI&o0)7Bhq8JrbjkW-bvkL=2&AW$9$z04IJk{5WTw+hwpi#J(0yGrx*#j+? zq{-PVE&$v7PgE{$4KTD6-vSQ@s2 z7?sndhVW*?)%xyyXq@5Wl=EgJ_`zdGh@fopxTqt|*yEC5nz0Y)lvQ>c42C@*sDP0+Fw5}KSt-v?BM41-2 zfcB4P=nRQdKL;mOg>3}O<%L6*@+IDNG-Z|S%#}(&tDZ_0j0O6L@;u>9IVCEZYxM(| zR)Ldl)dG3eGtoJRkB!6X?tXHR9*9cVK!IeaA~S!(%FZE?C1TgE%PCJ_9i(7cO~p`+ z3cE@QtekeK1Sv>>yJQ^tV!M^4R0C;1I#vSWk0W57a`IG$t~pKVJkY|jfD?i@z6`j4 zg8*g$kI1Q?gF5V~BQJQZ&d<+HcSe~cE4qJ$h=rF9-~@uXg2|1QRj?diWV>yU-92>m z+l?PgJ2TDiAn@CB=jp!ibTl{U9-kby9=YIv0eRs@b#R~L!ihdw&6q*gnT*DacYVk8DwSoWXp~tD>i` zDIf#+whruH1^M(An=dDV3Icw+m@((dDls`nrChp7w#lUl)PPrV6CoU!?AYw_(FrH) z&<0!M`1cDD)tyx%^Oh0Nk~nl8>&Sap1q8J z(-xb`AzeR>B*;`NpeMb*TGOh}*!Je@O^`W5%!zBPyd)|E= zR8`>|P$j`8E9C?%g5Uiv#ApGtIehO$#)wtF50%PE*tlNemiSzbYr`6{nNoTXMLHMj zL!7rwRciM?F#rjx`>q{=BtP|YH0x22b?+=^%h|=^f@~LPrkTDvOKT5^VrXiNS-(qP zSZ!;5mzUMLy1OfQU2)jLAI>5%7xA08Xz?PH#)S{o0C4qP%IvPK(!QwfCxK0t0SA3b zIp3jTXTpiQ1h&ZV^*CYa_FYrnpQV!()!c*LzP8FAUA6T8kn+iJC1+_MS>^E63aiMm zu2dV6n4-);>-_NAP8vLo!Eq^ kGRAqHn!icNRRq*&WguBwpX+ny8O+SmXCY9LdM+{_oP|S^bNzZa?G$8QGzune$0{ZFuMdAg30NTjKr zvv5TYM>5u+^uBO>G!Zz&21UMsqzo)2fPPQ>964hH2;>lcE#^zj#jPT75iHbOxOK9q z!OV1d8Iy0$_S3sVDvJA|7~<^hPyhORYiS!41NI9u9#fAWc0*Gp_3Psx)&pjxD#m)d zwzY<;eckPv1K2AFEoUS*jc=6uGyi8RV=0#eb3yd<&} z@&r`_FF=w6apgD+^6_00SsXS`AL!;}0C_M0OQ$;ZbAbQtnF+VcY&nzMmKYp$HuI%u zNsi1@%8Cd-Y1)}|U+~x4qxwB7rzu(t@S1}rCO`fa%RX8P$uy>exbXTlBZ1thHd9_Bh~lO$?3iOmui zUv;REZ8!DYqCM2;yr#tIcmC$V^7_;;6p{x%NIvk-f&O^n=RmKXha0}g3PW`O!_8`R zWE{ITr&c7QkAddn?~;oq7V&&0~r&n?@@S&FBh;;y>Z2LYYS`GNI4=au>l z_emDwUB*Y%t8-?P1?rGrD4E455z8htMQh7;^#0RHZez6jgP|2BDb(T z(n8;?HjYEBxWb^6`L-ALZ&`J?1NBI*cI*8VTVbeDQ=2O>a^+r%3f0OIxSiWrCTgqI zIfkPeNP>oj0ereHyUAj&!QTx2`G~PIBWYoO7b`NE50X$)FJZMQJlBgme(L8in7Le4ym_BoUMMg- z5W_LR@{1%FKVpn|TqnPoF5Ui}4-HC%n(w`)*yl5GD^otZBeVfG_Tfs|RYr}+h> zk6GxjW&FnQltmsA^%7|~RwBUT_+@FE)W1B(hq%-vNi`e^CApe79Qgs3nOR@N_|HqD z<6NAN<;np=2fDk!4e?W-Q8Z)=5XnisR-?(DVO{CPV@!4YH#ZdgXrJ~u43p(|;^E-T z=u__BX>N8$Ed)v{#Az7F4^4pI+?b$8HSU6-CF78EagbiV7#h=3RHOWGaOKD~RM)Ml z)dKBfp~rW&kq|2f)Iq}az>P5IhNN2fSC0AZ%bBOmC3^gSMX=1fsp z&=7Jl_YfRn?3)leW=?|AA%$QEAIDG_X4zSWydB;$9YVPhR4{+YE>s}Hg=bjAc0)*1 z(+@muQ|+hs&(u7Ik0tR%-X=;KXPFVCnzW*trs<0GjiZw0!f=DQplDjr!)csc;A33VmZfA6U?|nqo=j$)96~I%8A= z{g#suf6X8GbEy(zZYQugU}~D~Hz)zTPp(i^Hnn%3?rltec)Ho(MlMi4j9yr>p*ZjW z_~>CYE+{-!lWQ)h0#Gf-QIZE{(+1karg$MLzeB)_ z215vbhyK#n3vFn5tgm~K(u6eE-i#%Da+V8BDS{RoK?i%=RTA0(J-S3M} zo{R|B4oY*8u3MD2Krz!}tTI=@cEmUj&4Joai-Bz0n=pKJ4Q7bG0_7F`Ju@qxo}c(l?Rp!cHU;<_D#ZQ6yMaBU6MPzBGbN=LM8)H$ zaGv-fH=z*gKtU~v&j>MYWu8`QMg=KOpqmze0D<|^snGrRVT%`zswhb2J^M~H!ZN|I z0$&gv^doM7cy@baSY=T>cn;Oxzaea701M>9Q25!0&ITC(U4UzRLqSHaVu>W4`f%#! zpll%p0R02SpK1B0x$J9V1u%6BuQh17Epbr0QH<0{t3T`s|IjJ`e7Kpfm+(C#O@oO* z!Sv&jKJ3?~5#xT4g2}k-K#c$`f-uXqgu_Bp2ek->KdkZtA1|4ndl|UN3wX>G&pz@e0_Ta3U(Vkw*~EbGajU|3aO8CJAhqotl@ zK8L0Q467^;U#AGhsk=YZc24~qDWa*%r%6uy zvn!uSmpQlA{+~B#o0s9;7(^BDG&-GN>Rcm=Y_Pl6sT*;J@aA0-71-mza+c)y;+!ezH{BlGJOpVD3RZwH>gM8aV>ktO`$=!!Xh7~KF`wjM&LE8gC z=wwOqoBZO)uwn`7jR8LHA6+BM;Fu%W8}GKa*l^XhZ=qH0gnZi@QSXGOevUNKEG0Q0 zTsrg1NctwKyxevCO$O4?Hs^iA5mO%WuKjVlBGjS)D;!wA=j-Np&-`Q$nE8pH!$*Cpn0I8w zvbrQ!M&P5~kDskD99V({Gj@sZncZkG<4~|CQf{)d3E%Y3sv6V^mvOL@3#WZ@_($Nyv*xZ)wFnnAb=ClkgBhfOANzO-FqvPN9sp`O1yoHkj5%Z z)g_BOyr>YHsCZ+IFJN{65|`LVAkO{WP@xmPh6^jtlX^^&UAP0oik`c+jPZe{q*?k!&!R-}0-c~BR8#8}DuRomZSt5PRygPZ|v(O%%lG{d3>M$&1Y!{|$0%7JTy zOrC0rxiV9{GonF`(rH;ik+W8;l(qO?g45|`;X|xMd5j=;MePU2N^IQ#rL01{qVvr% zcEB_*N)tr06oR*wchI;UdWeF0EC7*=rRtfYv;$oU^KtO68p z@Yew+1(RNOL~R zR8xEaeJyzz_Q@^=IV9weYzEbsV^Nr*egWio=uo=JQ&?Nx3-XXM_{l{U7y^y*pnmc$ zK&Z}vae%&_V0!0oW&UFn4rtsUc~|yTb8(fJ%|8!TQ2xgZD_!x?08k`+%^h2=lV{ug zk`*Id+Z7PMEl>l=XL#YMp96sDva`)1hfrt3eEd)XZTdHvs@l|7itbt(djA$ekOw)3 z0Jp31a@c@JhVWV|bf3qGTRrTIlEdvGfKW-9DNLGm)bGXu?9^IRJxrbqW~8z(c)`pI z`;jKYkX@aT`rV)Fi*S#H^Z&}QLTI_P{9rEQ^~M26&Yk~ySbeRwU6D_Gh|zGQ#084Ov!Ps?Inz|`mMYBgzEK`v z%K2XzR!&eSFISn3{1Egm*qQiL9H=Fl|XI|>t$l-r+$trPd|fg*psB;<392y z6^MWA;lIdK)kqRwWvcY=WU30Ol1&eSwI6sd1O4S1Kbt#LZv2-yoMuVBkHhM1KL%!6 z9!H{7ury6usOhaFb2yLaB;dHSzU#L6_&-W8&2=ko;H8g60zm}GFJM@)ta|aL)leQ^ zt`_}1OriU^dBq^hHn$35%(oaOdM;?_#I!#M>YVyHyxm-;QRuAF*XyATO#U8yR#qNm zsth#MtbtDop5nq+$}I{#UuCLW_oqCuJPT_GvO=vG^D{lopI#JQl+pEJ?CyuI!PW|& z9rjjbjW0Mr*TgQ4THT001%~6wK~*>V2+-UlWHnqY9n5FM8#mdJV_h}`5G*!pE z-2Qyb4&3$;2D8lg9Ah?#X<{7g@W6@xvKP-!{T#o^Ut(-oAo#eS#wOB5rTbYAS`Fli zkN3!Olub4kZX6soh;9co{Y9pFh1xMhVs#!;7oPeTE@e*zr2$``(ngq;6%#tju92wpyu=uYq z85`Gi*Ev!B!x|aj0EN?j_$*WXwihC8q7e9_+)pzJ6<6&E#TN0+e_#fheedpv^|Nf#y}tSN8OgX-Ie z8kQojw}Q3P7`}T=H+52dm8rf~3b9^SWsX004p%Y{E~|iEs+f=aj#nl=bD$FFp)wN? zuORdot;e{)OAU)QLL>1oz=4x`8kUIol4sor8=VyFO9G;+(X}phg0fgl_w$Qz9qZS^ zv!<^x=3w}T=zDIYJMPdJkVs)(Le6#C=WxJus4x@hdWx`2;NhpjP7koGnv=0A0F(eM@n z6&O)G_J>9XO%>BKt3e16qnp^U4U1D`#3v||dMC*1Ae4VcwD!ff1dZ_qK6n=u${5D$ z63*l(LPm zUt-J)^F}iPn3p+be@7S$YIg_w)X(8C;}Oj8idxtq3W9f+V_Rn5wn3BV+w_}e%|%oO z8J9>4nJNGbKFHOOsq*8vZidC;nmclNR3;s_4otO-c7GAgROIwc8u&meK?w<8JaFP= z>R|c;K=SVBqzkL2$O}ow+{axN5efn&SgOag)&bMi;E@EG8HI}RyDk1QIgrzTjWN&X zs`@ItAv1>G*$7$J%(W8v)X$NH#aqy-oWfEyJ4jG02Zy1BI6BNBT`<%h54x;JZa?5( zWvYg^9#%t(GdDwA4|@RX;QPv?G&*(@r2G#q32TH2w3i4XDdIpQL;(H;D(UJ^rw@&0&s!T;r#7_%(t3Sii} zfr}=I^0_#|3s3zVY4m;!cdq$QprsJ#6hx5h>#hO$pJ053NR=pY!xQf24(~EwWvb7b zJ>55piREL&JXtltW$(tpauXa~-O-(%&W>zW>-j&-J#8V|GhSX_ z0Ym|B`kXy{h8LdpIg;w3NS;#rhc$^c88W1>*fcqAfed$iZ2r>*=G-C1H|B3L)o0^y zCElN_ijKH9)PjwVVw)(N5^M+f9v<@q6FFQ!paz(-bu=V10R~y}7qkF83)0=*HFdhw z@USezcQKge3_%`o7h&jzo5hM#cO^`ekQq>)FYZ6ZzG@20>s_D(omb{D#;p16wegDj zM4*mRy*s#=s(^9dX-V0ToWjI@=oOOrcj zrb3$Itd2}`AB(NfkZBWpgrxcMYTe0r?q-o4{E*Bua<&*#wt?K`MoND5ImT@NgC5>6 zZ?VM26YNfM>gVVvqM${L43kfbw_vBHdp{8&g~%3vJYU@zNXEHGnW}O5S*98k-qquG zb1>nU#0$bUT|4czBP^gGG3K~QFgU2WQ$kl=;rSS=6*lD{wQSr@ zooz-={Tx3vc(|d(l;fWbsL^(__0bUqE;_8o*#GR#*rq^0Htt!HtiH-rCC7T^TBu*R z#kgw^!)AME61X@T#gsOxHgy`1W*PD4)JHU+ssY>CJC|(u-x%}iU$fHr-S){ z3r$B9T(cW|p<}_y+gkwaO4bEFadbmPAuoZG3?MXke}0KEqrvsc5N)sfXo=PIJ3N_+~d`4!x#T^y(UUz3YIn$CO@w|5i{>Bay#) zX+i8#9%IbSml(5l6B^gS4G`Ph^Xnw*vr|8Z8X^_$xoDJ&Xqos*6(@t6{0B1C|7L|w z^mLS|a;*hh#U+^KthRw{R1gQGF}4nh|J#^ts(cuuI@d2A61Q&PB;!z%`*&qjm8xb2 zrsdGgL`39Kj_n|aewEALGcwa@3<@YV{CdRpBeP-)%buUMv`B6p)h;`z52GnUhy zB10uXnp&?n@`v%%&!I*r3Ws3J2gO3Kup`{Qer3A>3F+QCCmvwl>`q5!DVRW2Uwv))DY>7^tRF3MT=mH~t;cB&HZV zk|V?wE;!kln6KY(zs^B&1f(pnk3Xe(wvg+a+we<_`96$qh6*UxP$(MuUI@1a)ua5b zKJ|0x2V4Q+OVN$imtBi-{11H1!UnRpep^SRG!St+U`%Gmo^K@J_hIXh)Ul}O z6k11RQd8~Fx+@ES$DPJJTB%Vhu;W$oOGIRD?mGknfYPzL|G)V<3Gq9@TiF@PNqfLTR*Y#~nI~u-8fm~^f zeghQqsh?xzaYK$frm+F*5Jk~}ic*e#M@}Apk*WTxEv-SvVI``{tZ04LfjVpw zVpC#@01af|Br7PB-T@z3R*+G-S)=(`E2^0K?9Ce^#B-F45wJyf8?dQ-h*rhzkH`6X zcMbJ86PFK|uiut`ov$;)-$%NE&q$+RV$7s^`D&k-4D$j=1SR`JYC~m!P_0`RCw>ll zhN9a{)dD1?KvWpvszJdt!;+DU5u-VKtsiBoFOtPg?wM#jc(J#2!CXan)g& z+)5Eb8%Jf*o1`W1VYT3m$)6)4c>YnXO5vl1n{`C}-1>9t)~!)ttsHl#t5*57@29Hu z5A`)iA>ps{_1Z^8I!PSB9sM{85M#a`m)CVR7<}ZG>6kKUo$#F-Lmh&O&}p9o<$f(& zICxdj>^zOCW&XxSpfN|cEdhkcGwc~;s*$ZIpJl4eWZGyy(d$xQjm?WvXGhRqZAj`}p3$W3-~%5)pq=I-Zr^O|VW^ z6K7CW2MDRU4pzt%thgd6{Rn1OR8xzLy+#{0QU9_zPi{WX*D=HWxAXNF64qb8!J^;s zh@-^CfH5z>&I3s8d>*>!J!-0~x~2%IK_7nuh`G7rc-EfwIk>$1K!@7HiU=Sol}5>? zwbK#NP|V4V7sDU}@&E~W`ZHvzmuHZ%Jczt;?Rz?hP@t*w6irDs!zWLjH9o1Gm3Ed*QosN}~%doWU zoDO}G1wlf-#F$a`G5u>O)+;u7mrxn(Jwg#(KlO8@%v(>n;C`s7_NDB2!^V!ln6k}G zbkOTyC-_&H>W|O9V@*FKb=C7ngvlY+WkyU?uRI15RSM?=u?&OgPGg59@t}eX5hh4T zogyM~)~u1MEQ6G-{C0gI~FcZ3bjjr7OmyqK)FR z7O+b?d1{KBk=hLNg{2%;^R`;-2h^nx`l+8It*UCk_bBw|Gi@a+X6Byv%30%R1E+lJ ztB>{g)v2@ zO_s(p7=7g3-n93|8mKNh4lfH`cLW1<}7-LQg zC8)IPe6p7P;}snp^Km~r^>YCCzU4uN$Jt_OES|4yO2E=+Rb9 z#DaPCSnFW=Cm5pHVfSzqnRZ;=VM8eC<3V|J-DnD3PRNtuH4Q`${LX)oTnRV%>p_e; z*7ZzO>ps@j1^nkB-j&@`KSvun9Sev@G1fF@XS(AN>@(c zt!xD9-lR~K)q$7O%vDXvT=C4hcP5Yot77%&@6nlzQ#91QJaZD1-Z0(nkApWri_o4! zLX5;bzik%ZbN5rXLFd2*ZqA{=L)Nvgv0HQB+iDi}YA8S{?`xH`aFgOV2 zrJctmjSj9oMy<}7`%SjT<1VhjkYfau?^L+g`FdIWk1I5$U@jI!W_zJ!GK97?aM}=SzdkVRpQup_FNs%* zlN{q7N5{NB)u;lL_vdLDP^(^hu>})7cFFp}On|3rpr?Na6&+9x!~P(aZP(yMwJ$LW zfKw?!MC2-KZo;6A{(ipx_<6oA@QdEM-i^F6JWspQ0^11)vgu*LZv~6!=NR)VJSl+< zXgkKTVt5Qr{T$uL82IUjD?!81h9B%=slRlsShp2|Vq&Zys6EVm45riQC9HXfZW?v#A$Z*)+ zwHxdl+;{5kIxp8v)%-GFM{ADgbr(pN0KcH^ew!gWfMT@#CB_`Gtem#PfI3fASKXS`Nj70Cth^TJX@r8w#7gcfm z`y0gQ@?^x9w?59-lN+Z-LnoZiaYaQUF1gR6(Fq)Hg%~p&T8@A)i0LSg20lK(w1a9&^ccmaIwY@l-arLDK&I8moP8efmS9YUtlJ;Yo=E&T|^;L!Jtaj-AaRu?B)OS!$rR7d_cn#B^SVkc`z5@;s@M$?!7M-|FRB$iHL{`M-BmG;J-hK?dFEQrMwam!!i^HaUz@vcY5VW#W zKSz{dHxDhqxXZJes}+$|Zd1#LWz(kTXO=p191AXZc&96DgtJd~xe?vPX)^feJh z+{dsdQD44t5!=rab8>#JGZ>566af~1HaTyrx~puY@4$-B#O3OLHv%Vm?fV@fBA0IN z&a^miP&J3H1GA)+%6!bo>9u$687~bspAqdvcw6@&#(T1lwz4T)jAX031B8VLhgI7R z4^I6Y1%}Tycc7^)cxvjYtZG6jAylZX`I|s-RTX4T5K@ywi;G2;P3=ACM!e7TRP_6x zFyk#ju@2!J9d5_7pmc;~`5O+FD^lncDl~K|`}TEXq@~5&uu2xMt24bAOq;p7Fun`; zrB?c;s_D>7_>!vsN`WFE=Qrq>>$Xtm3pe25P1$EaJ?P-|+{8}mqsfKZ7jz*JiH_J# z01Qt1962Z%ggLz847q?NQ3JaSTXc$B<8p7t@zEJ?gYOV}d2dL4SGxJnB_INYaK)qG zP1b1&Fc6v-m34wZRKT18_Bnt9@cxs>MGCTYxxT-n#*l_S8?Z5ctGmGBz9@V2-NZc8 zE{k@ln39TBbVg)TA{>&4)y>VT_49c-|IW+proAq^E?zh&Wci5aAnoYc0pLq~-fU2y zwH-WrPx~B0%_5Ad^9-WtD-*AmE*O~I#L>&}ommWqgRDzD!%M3`Uo|cEc?7pj=#@sg zL21&6RLK5&#+e8gBz$_?MSZmw@zBE{X)fr~W<6m?4T{49U5du_{)eHh-5M#N zXo!+aMN=d%@NHuyUUQ=(2u;qQ?8Kb)rDQCS|5@#Nw=Bw5_dG$(n`@fHx~Us*t5NT3 zfwnmLbBHhkUjF!y)MQIDbq#j-bclB$JZ@SFrTEfZB$?*PK?ABW-S6SAj_WeI9RJy~ z<49ZO7BmAHnpwhJ8IlyH^$(rM=jpl=`LrM3$%V1o%lJZF#JVY z*W+d!GO8{MzyMQX;W7y8u%u+RA8wt65m>P3_$dXD6_nk?OXr~?8pVHO4Ju7Le0P=h zJ~_6H^*w&1<3Q}7+6704d)=4jJ?jMyqz*^w4kXPH@aPLPC{v=Q0frH^t_0v zb{e6z<7f$9du+|ZH4nEx>B z$JC^fJ54_7S#t0@%<)v~t_{&57{ol#c$HF6uy={JHc>?$ z^r{qn6Gs^V6&rnKSat47(XRWjah{AkixRwAMaEA&hp4lDDbTLU^t=1RGmp5Y;<35XiV&cs{#b!M^>bvP;Oc%$@F@xWq9GY> zNFYUt*I`-K_|w8Q4UQdy75FZO5Hcok;j$*3RRc;LuI(^2!Y;qyK1QQG(uiZlYYnC3 z?a+e8(Kuw^@PfLO)qZ=ZQb?JO zQ1cSYq;rCtRS()u@EO}lPW>D!^CiMjLU*P*?b^^zfXwA! zb*`}j22>utKE@U@e(B&xiSb5Rkp*nKa+>HKoGOauD&u71`Vel0sw*s}q+2Jls|t;d za>R9Wf8QMlAJ*$Kd#Jq2?hSnthWih3F#dLUqQ;S|N)(hRV+(Ivfjw^g<|&QSDZmrb z6FVf^WACEMrL4$MNEfCKz9(^_aIW>3CZ(vwM(l{~JoR(<^4XyZ3@K``AQr-j5k&TC z8|J{autgK$LSd6ng;cpw*wu<}s4p#%T^6Oj!U`T(daWFJGi~yrWqcEs_U;W0lcOi1 zd%`PC|Fjn$efI9~5J&f2B9YXOP_lHI-RsR%a0^RK8tD!QD(KQ7UV@M$hVXEdIhLIX zwtJlF$kfT}5Ws>I%mR1$`vzHb&$4v@cArw>` zPh}nhDJw<6(F2W+_Qa|(Fw@zAHfYeQF;^|*+VP?r{N+wO4^RCZ?7XkQJGE#Q9w^#;E zgh?zC+cYGShAm5s5EqH6kU>qi!lfqU$S)XCd&F7U-weC(;^$L8N6e?H=@VWXpva|o z3e~&)VH4uLK0+sdJJ$G+aXAOP?+Z2s#kj=yD>fxYWNLa{vZ(2@g}z^N|7{s}?L9OD zU0ZFCOn>O_MY2WsCO&kVQqZEm!~0I2S7P0TcG{WVV4ATXxh5qh3ss%6u>TlpL?;zg zSvoA%ZfH3@mK?y>OVpDy9kM09IigpO;jPaFTJO`TpQB651iSsA)mE1j+l*nH)>AJ( zd_*j+ZJG{%4jWkGb!M{|D)S>Y#R&g~O$qFN6Yg4s=PcRzF;*I6l#BcW^woJgY@x&1 zO>YPGfNyD5rFYwH8g^3#2ioz1nH6MshdYS};szwh2ou;43lOLS8a))p-IQNh>r9pm z--qPPb&s#i;E{g-Vn7VRLm7c#2ii|&F2nfL&#@;a8qc;h&K8+rizBeS8U4N5u1YfYwOP5qM=h?rpfz2ZjJs;S--ajC?MY<>q^Jd}2yCeA9}L*p!}tlsox=%4yIQv7-bE-@1)XEI92Srqm~RLYA~I$~40 z2<3~47By9NhbyDCkZt^mP1$2*Nuecj!L{D-L<+_9;0piHH$^{n(@^DYIZiD!abRN) z_wBYjtRsAML;C3nEP3CuUiS<&*A!F1(vC1(1s9z|2SUbzLU;D0hnWe(k{nWkFK|-j zmrLkd_L%D30}g?gwFt-rK)nQ^LGKlDr+Hyph2aEQfJ}402VDn|fb4O@tId)r&6chNc>yvc8V{ zYWrRf+J{aUeY#Ja*HD)6&$uOB3tPPD#6W2mAuKuN5&q|SA^!i83~Jp>1S_d+_dn%) zz4o#4B4BNoAS$Px$DQ%i&vBpGaTXw?0n@zq#PD6@`!K^dW zY^*Kt2mKYBV)}Kv9?Sc;03?HEg&tNpzV1dKmHWfTH>!iF?NPllKIP(j+%*AH`5rvM zN?F{Xc0(VVCgN|xxI&ZJhB4G6iKGkHTX!oti>nli3{W}ZcAE=OL_MCax$28y@Zm22 zHoXj@yADj)hJrQk-<|q7I{Y?fG^JRrOX*$Q7JCg_L7k&3p8DvaS-hVR`HRx+}c! zKS$p;jD0_?OMIQOI;tDrvlpP%*AW&F$200 zWz}8cuG`eg3R=i^P}D7Q0ui>q%G053V297Qo7ZLAB#5>O@0`ANURh!Q+9P^cn=Lx9 zSyN<)skZr8C8Iz~x$Gz-8t6xQ0-DQemB9I!q6C{@*;$vkC5k*}Ai=yF%=z5Tr$akt zmPSGkuhb}hfg_O;=hV+pw-DWCqPx5Y4C)2Sw&C2ou( zC}Kjszo=6l_%~%mO`volSdK6-Wui$;>NY+rtHk%+aym)`2!L7Xn@E;oUG5xVT{8#7G8a%xo` z`*{^N1I#%BI*vZFqD_IC2k|?_=wqeeI)H;Kb|}+fgGP>i#~VUyBH6Xsn=Kdw zhF~hpk|Gn392(N8pQEo!{C1@oUP2&ow^5plo6I-C#-Thd+ZO&5jB%>ev;uf>ns|6K z6lJ{MnHUFb!|pA^xNU<689<+N9?iq;QU|Wgu74=2xA*OD>AbA&k24{LD2Lqr_+LKF ztg4D#;8de-%h5#7`u6t5w|E$S9(%_X5Q6EJxNe92OEy=Er-wRBs?ZHP6zH~Tw372M zZt=}#Ue}^e3&7`wxu<>(w1#yt#F$S9rs~PdeYz?@2mqGa>rwswf=y9e8`$f-fdMdE zZ;zUkMlHu3hBSxq?g3c9BzD3`io7eahY+Pio^f9`>*4TeM3Zu#!4fz<+kJM>5{!mPuSpk%n-Z)35p z@(N>tX6*ad+2$!Y?2xpJ4DhWO_Vf;}?C_q|UbVvta)aT{wEzwx#)zB+tMwmVc>@aq zH5)_kSWWMt1ueQJ!#*pF_0X3lX3f)bDiEUjY}TQhqVBDzq{!A3@p{;9JgYsx zXhnR)I>vpsepJ%2fR0QvO^b$J78C`xAGAv9cKa~ychkB}ZbegKsQv$v_h!wJV^_B3 z5AX;E$tHbD$4tz`bO0WV#EbxZlDl(=3dYnKN-1?yLzPLTy4UPhn_l{<&HACu`mKL$ zFGi%KlvJ|&13VuxU&5HN=?B?R#lZ`ejDKs^Kq;qc90mpugT=bo#U?JS|+vIhbYyO!o4+u zcPj$R2BHKi)@fklG8G*$g3BHdbH7Py7d}f%eOSi(J6Gpe%?P%uB}jP0s_J8}!-GvR zq9*8ZDfOeY1<=iLr`Q`AQy{~e&V@<`v5#S&t5u|^CpKyq=c>$!KOK*SgY69UhHrkNCw&jLoDytT=) zbYwX+`7AZiGQa9Y&=MIh&o_K}M z#BUdJngb1qFdo>t(3#*(4H@NfTlq={?fE_k@C_Lrow4LNlI80BZkxltcieT*E>K7f z%2buO@$mXNP6a0+Fk_?)-1W1Jl{y5AkGyLJ^L$@e-928oePrkxdss(Jj9+B4F|IIY z4~DL)D;txcH&84`nd3Bwd-U5OG>fJO_~|qs0*F{)$nFlXg=sPUp8*{`KEr+6($qzAGbP(N;b*Zi0q{_Feo15Ephc&N>Yf!dI zrToG5D*rz}sJZ6t-@XI0co!NU+tsS9aa5+ICv7*2+v1Yotb|0XLdHw7J#^rWU)%OS z>rC*DhH@DRE|SYalrxrUPjJ1NUSgGPONCKSj=hdmJO!6pzlNrX)+BqK#W!Z!fC&ef zA6zsyt{dG{i9W}Qwz6)3Kblir+t=HNl@p3Q!RHT zymK(PCRwOxilALif#?`~I1#KXB*1>{Q*Sdm8-6YFa9&E7EB(1MQS4=vZV2YO$_%m+ zTdZ=C3*e)xsAL$PdPZYyckFeP9zlY%8_A@wBRqPS1q^Nq@#F9YLen_&(#(53Kq*tN z02AcnP2zN~(;~i>_3Nuu>18e=i`uT)EYa}Y)V7)Jdz~JTuB%iS7$AQY+SIUa(PE~r zizdFo$lDaCK58Ck*!yStp$ppJxle8MD8F&BLc@~NkX-s>XJSyReV38il>+28`2vQq zMaVFI?VC}kYC(Y5G@W~M>~(bX<~Bi6xN?7(YG^??H2v@c+{M@Qw#X58on_rJtjlHm* z(GWh`RLuJ#AqbAWj#cFW@uoA}go*h{m+E3qT_hxXSOB_^Xk;)-RYjeH?Rg8|at~#U z74^4Gv#cO5c5tqC&0T%yhbS-U*51~)bX65AMa8V8q#bS4W4Gx48vCUID9*1)8JCr~;7(b=*vjR6{jnCl_w z@b`rb_UP-V1!chrbMXcLR$NG8qA7f6tXxE}Do7D?X;fn|kMSrT+Tiwei^ktCo7dgz z^(yT*>vdBn>+irk?!#yW;O%x*Ik{)tfC2Kn(Uf9}@hVQ<41*X%FDx>h4w z3@!`}39z10C!rljaI)t){+PzpyD~+AK;YzYl$ZCxvSyS5SkSn72cWB=>i z`a@$7Q{fGa+`akL%FGby=_iWve5hH;0T&-jyEJc~ex0628^n|+1vZZL7R!wxkkseS zWWwoRHfXLT{iQSc$KZi~Tb~vc5?+qI4&cUIM%49hB;KDIqGGxeXY!3nNkngv=eD$x zRa%fA-fMsE=K=U%9?E-Q95TB^(ABcHo!CrPxR~OETUnuJ>q>C_CWcWf)NXYlXV2gL z3w&=_7W<%qgz#sTHaO=br7Fg#NPt}ix$M~f2KQML>A8}f82oc*@@Dqq2JOer1RJz} z2p;%d!O|o`Y|N3@0jG;0o02jUE~#`5H>q$YE(A48t(!o&GSXJbw40k0M`ezVWB6IM zYVzTsZGm?1-PdVXeH=KDTLb6DFyOk2T_2b^LDctUp8%QaUwh6xSYe6fweYQb)^&*E z3C@-`d0*L^yojGo=NEj%RBE?iJ8xD64 z_u90q+~Nhz#jE&v)uCz(*@RhWnLKGP$M?{k-^OitJCn>L1)1y`r~&o*#-NZh26e>J zThFPyIy2DaN74n4)Ii>uEPmRVeBGdB4vl5uZ-NK9u zt0|hcFmE%s)KX45%}rb)8)tS)G;&j7LF_>F7{6}QGQfv*zgi6{6o{7i9XIxANO`bq z5T%+D*03M!YhCuRMrrMv+cJrDSdT${yaGQ<1^Q3db;={yeCzsM?@_LXP_j%tYV)(1 zrCk^@)I5LgOyoar(EN;;(8VHn0FBXV4+rG>3tGoN_By^GX`U_xS>P0C(n7&XA+os% zQ%&g*=1@~8ncxxTG(o`L_`ZrGF6`^C#4+|S#Iam|&q+lP-l99v8pCOQo>kz7vWcm? ztq)_?t$!oWAn3B;o0GKEe@(B=$d&PNc23qfd@*k^!b1xhSc0Mm^Eu}Xx%6Xa;+oi? z@z|i*K84>S2Fu05kNOfk@KdzT5!bQEit$A!wDVnoeP?$WJdTjU zfjIVxbM!lM2jbYQ{Mp7^L*Grx_kTki+gHA~y47!hkB@Zl#fJ12t`8^!(wpuU2cmP8 z(#rL^!<2)*8B}Ehx{f&RAuEusTHKHe1O8S==J2nnAn46{dhugtl2Pi+61>YuXz?X@;450^*z0gIb8`P`YHGgAI6$_;su9_LgQT&T`VN_ZwjpjasQB#!22zA) z6rs^CK^(KJzYxdz!i{r2n&DNfTJdJ(2Vn5rzE6>`)Q5ij>>>%3Aa8Yw9M3#~URDH$ zxsLM^{wh}h+{G0HTQ(9W5=3H!6+1HWFP+H_iJpe@99DqPvXoK;4`6R;R20DjW7_1V zaqM+iDXS|ZU>$*^k($>Q4c)&((un-GpA-8R8f&W?1;2gFLX(|aHgE!n$Pqwd}*@fYG)7JKjA@zB``;vw(> zxMo<6`PcA7x^jv6U{t0FXoiwpI+Y^Q`zk zI%H2sdR!4CWg$?qY+$q^7!ej{A7ZgkmC4uO0Z0Uny$(`J7m?uFn#lMr4<|4D zjFA?tLuPF1i`!Vyf#e|IUMrkumq;y;ROF^ZhZ*^HJeN)Od25XKLme@22>GF!Z}K2@ zTnO6x_tU=y5Aa6P9(x^O?dXX`bj_Vurij5wjJ)?RNSg1-Io$oJZEt`x&Sjs8Hfo@j z`2fRz-!=K}Z;4~=TlagDgj)M)mpoyjZUo|Yzu}Vg)~z;f^mhMrD61{*O&%ugET>;N z?+n)|1;4(Pk$VmzIiI~cX6UAU%@wqeE0kK0Qq=F!NFpFFA55WV+ zUWZtR4yI+6q%doTlQF5pIu|nl&ioEr`eqHIZ{Irp`X7m7k6(ym?{@bzxN9hDMM^xM zYvHrS`xl!y5303C{c7Jf-F=d0UAKSRVHOU{sVi6u%^adrA^|btTt$`u?q7Nb1*{Q4E%yrx`~s=+1J@FN8a&V~QfLs6?zf*{WqkxI zFmAn_S7f=CB&$7|5CeBkjyKe+n4SX0DO|tCOwW&XS;rfeSv-ej#XybavFe`#crQ3# zJCnBa4(4oFxd>1fi%un)TSh+y4xk-sdZrYZwm^A1l_wBwDTFh4)zi(LE zN$k>lW-3|DrRq-z1i#gx}V4;z>yQYBYFXVR7{;tcQ{JjeFt zQS(47VMoIF=}Yjys~kz5$Tv9dIy(5Ha$5^EBnBDM;2Vdnc{`IdSYR z4%e$Pqj&2Au0F-#?XYfE6+AP3=tTo$%-f2nB!nR=PnSuF@Lr!}={M#LJ~565{M-x) z`U{ZBHEE`Wwq`IP0*)L@MS9`FDD3lR4rrox@tTs@1wSe9qAJUqPS;jUI%wvf{u(@R zh7Xa-9WR=smb z(?+#Ltftic)fz8T&1$hm2fO|`7ScwD-010)on)0G98;C&TRIk-674rm4+XY;O zG`1peC&zl>*wo!6USi$bcylC3Wd3*UFTn#xUI)P7+EQ;Q@~g^d3QCRTR+9iRIAZEm zxOam7aFIqI9JZ0#w|VvSOdRW4IOy`fA&%Wch75u-9_6?ygS#Yt_*{1Doxh4<4?z0> z_f>+Pi&VLL^q=Al!(gnrDO z`$_qy@w;gIAQ9pIq3UpT@w>LXTiz|JuuTdO#~y!59Gj=n$6vl(t?srTimqPefRn*= zRl;yE{5+P;*Y(VL@|2=T)^TQRQpc!%lPpId?b3<@wslg=WGH3`qureIdT&0e81 zIR`)4Dt4-ZQC~W937Ll4LMJX0x|hH1Jq_;jwSYjUBd;T^4DH~JnUYjX)=YgzoDefk zY6=}j*=_-;(XrdDHr*Dxs=8Y5%R{M@0a%O})3jMXG}Z7HvVdpe*n2QjKWx4gbSnvl zg`bAiGWRm%ox|=}2a6`3squACSxZ6wHuljj+&mn1-!QIq<>#Sqx_y1_@iRmzFEWQ) zeBOX#e2nQ?IV&u@V=L*j>$s(7Wav`=ngv_my@k7h=uM^=WORgYiHR10EG$&NewWGnw6B%}zJJ>0H?M$$ik{uU%pxDmK z?0I|QHKt=~f+AvRS=^TrIrcgz$R(NMQLiv*W3+f02{KXbm8ZUqU@ZoE{+|=aWGhMr zz*&Gx_P|R!bzF2u3I}N)gM&I=p`#Eq&=s)(ijAZrz2d@qS!S{?J;1`)$rnbjM^=H8P(f z2N8J3U5CHdHRwkpXIpvH2pwcO%66U+pgAM*%#@>s`A>;spyKB7A5z*5{ffr-EY8R# zbBfh^-{k3b*ssC44N2NAy}fL!P(w}rD7xc1fPj&wc0rdI!k62pnKf35Y5VAcvuei(xO5n)rh)c`bHbtVZT0^@u zEL&(3#oXv3nIjCak_mN1P_66LXA=@f>j6imdRI{KwEkFLWGkNoe zd}?@1$d5|-r9Z{wymMsjvnQ2s+tL{W&6e#H(y`Zp1% z1DZcFX)Z*?*w@d}2Mo>&m;Qt}=53R5;UlgQ8Rj{TRjqIzAJ%=YTWTC{hhdX+neSTl zuL@G79ny|g8cL3xig_}AMVa4 zE_-n?vZIkGzoaVVHP-CMkn1FI@RH)R1Xi6p_ByB;Yaitc#G+=wJ4^SrL1+-G))AfI z7T{6`^{XOc4GCi&Cy3TzRsEGXW`;4ct%W#y^KN^{mu|F-{~eqi7lylKSuNY7Z5_-` z*Lw?1B)5LrR!!+T)UZJTlnmnA0^mmxhNfX`hjU1oRf2Z^o}&s0@MAQok<#JhbYk<9 z$z#q-T(Sc8e;%kAMU!&0a+=nGN)Pj z`MTU(WjPunYfPnXNU6mzi=qS ztkEpL62}l8SiRj4)g9^`$SP&MLO1XihjLK{JM*s3L9%aXhp~9JfyKbrN>42)tgF-{ zJ7khw8}Yjo+ZBf@?A%cUXc^}$^z4NL@JqSPXebLR$4(4hKfjMgQ^LKlW@B$@h=3$X zTSx&Zb6t3#O$-f9TC{;NY7HjA`qy{4^o%*}u5P~LU# z5Sq1IM$L~7Wso}IBKHLw>#H~vuJa4N|FK<^SS^jSuoNsYXfp7$4b~7nms>C*k1oR= zoj!gfquDezXQiV^7s%{^rxH46PE?A|n(&kkjQb-iF{)wHuBvtBlp|HmI4%AdN;SBLU<-{Jz~?~)obo`jI0r#c+smEL@D zD4Pz>IIxv`(a_xZr2UoR>M?TdpWDUvo~No%czAR7lSrIi3|p3&35BH_qj9?(jin3X zUoI}sPF3QWqcq?(@sy^bS=a|44soC+X>sgz7_lMPJUfx>7h~Rs=Smu1PO=xTbZ!1q zhw@xg>kT4Vl~lG?+kWZ)>nHsu4(0W}emZ1uOl`|;-ZxkqZX%DSc}U`o1qi(+h@!*{ zj$0uiCnDb%!dVnu>B`lYcF|4Dn=W)>CiwPJPPQ*}B)%AoExIQ!88Vw>+9F9t=jXym z){5E4GZ@pHw}g!?ZWZ}O*4b|rEJcpH4$rbRtQ@ASG#|}%ea1|fg`l0zSoVVZi9?y^ zgxET7xs#69*Fyvn9XiV&iDT=w+&&zJrd!9=5N_H{2={p9r-|oN!0K(!Fy%Sos~$EExyYH%*Be=u88qBuQBrUvTqwfgBK5vHlqK$T zCduOwxl}!sN8pBrqz_~#eSV7@6+t|6@N9}#f)=7(l+6O6fyiZ+l|>^-#8+MkoUe@ii_41{%U#YEqcfhL@F%nB zDIe%_+fl?z##Xrc4b*kAs{{+>*z0&TQpA~fqH>J%t~#GwB1%3mM#h5E!l`71jGQkt zSrkVL?|d|6l~|&J4I+Gfmk%_e35a768+vJ5_FY2mKIaI+VeC^1+>{Bz8G>*D^8mca zex{w}_^k`sn2%*~gb>0dBd{<{3Dlsr@AygS8Nl|ktnTnLPk3XT@uL$fTQHLg{p>>I zMk86CzA9_=Op&?dLekDn3dM&Yq4#C9W3OXmeb2Hi!(5!q$O$_?S5$R@56=u82`NY|1pU)PEp=~wuZapD5~#|rjr2A8Zn8uw7 z{Nl_PU$K&TIkIOOJ8{+cOfeSHsrgjTC@+lo!?D*f8a`hNV{Il2CugHTG_V>}h^2@g zFMv>PQVk!B8M5jo6%x)gU=?;Y5kfxkEc#xO`)Ed>3W4Y~$o4}HYa23^LL|o{;?v_q zZNUOV2G(+2K>ZI;D^+<`c#$;PrBgV8>7!lLuKHIX%0rR~O+cxE9Q(+faaW~Zq; z9WNN+Y^0kfykR*iw^+R9eW+>Xmqa57ULJAVHiyVZ~zu# z_k1JDT%?V_V!Q#W#j9224%?9f;ot2-UZ z^Jk1Ym+dJtvB{i`Ih@RfvM?7Od%C8!0X6!IIVY*IHahhsa_n``(P(^X&e^lk_~I21 zx0cAwgfpIwx%d^H%8=!R%Y8sQione>v#VNq-w(Q7t~cxVb!*T4=pjVV<0?_&@7>w2 zbN!*>hM4Yv9}8z%asR*zNlA+bQi#&biDST3)tJ`}Rnd9t-E+Grg;nY$&eRT!hL9`^ z)w1@+Ak}f!<;>;J8J$CbL64W}Ogy(ZHW0)hP|esE&oPiy1RR>u*g5t(ywQj|k*D+N zDee1oncWZDqfD@Mz!-`EBC=#@}5GveDCd@v(5##Jh4`p zmiGex|Lx{ZGG7)z=Ok1zwPK0nsrR;XSbO(4B}o?m24Y0AY`Qn9L_S^0@n#<4aTKp% zA6FgIDzWrHtodw#B4FDCZsOYv;NkKT-;=}Qd__{fmy(lR98vL`eSc199_!|>J$9xhouX2Z-r z6s&E8298DwtItO}hSD3XBsmBJF;}9RN#6f=g??LUo334fXq96q5XDqjH@1Ry(V;h@ zXL%Kue=w)n6|j#KS>>94K*Duq1fS@cYD#0dlti9o`8gufq|4CJV4T+U+2m{zoiq7J zH7DG$*P$AVWU$rAsT_|lMkCgm*5W7~Wppt*@fME$YJ!|puBvCF@5*T1tqsqdmTgEp zmlzA)vx<~e9mhlHlxubpe;Rw((j(zDN^2-C!jBLaf9R2{tA!0N6?J;-by&hwEOSn?&c?#%g%rvs!(zmb&g#WWLm9pCMeGc)$s>(E|JM=?ENLT`TgQr4S`(fR0PG?DzV@M3gwhomrl%%#d)P6SwP zJe*rZn=@g3seeN77$Ebk@CB(_1-fRc`4Yl#cd4jhNSW}>(xcg%O|54R!XUcB*?4%f zCS~E(eKYv4v*&h^mxF8QRnrf*Y;O7Rhj4|fxrxqMcm?-b5;{}75u{V?9G{&a;e5Qn zhY294A)#S%X5wf>XBXPB*TIYgCXoe6W+j8Y9JwQ2xR~+0)*IGngxk(#^ZOGaRaqo9 zVso*DWJggJmNn<=es;-bbadQpZ+-qc3BSY)*DNT%A3N{AuLXG9{+&hUjB`l*%X6{@7 z)DVmAsUh=IPSQ54XI&n99sWqS=aDC{qlp+u-euyPO-HMCG$~252We?@~E?@kMc`sPOHj`O~7hHG(%(C3gz&4ZsExhY2G9ri6>ZcE zIq_XnfzOIi@~WACehpgJXNh6L-GN?`M`~(nLQoujzh*uS5lsY5+jICdeK=MC%c``mzCnw^> z$Ww{)%|i=ZW1zvQ>?WN>^D@dbQAkX{apEZ8ZOBqxt#_>jVDq&Jk5+$Yy%o9@tm6`) z5d#FP?SW?&nCrJOl0EM}Q)r*b*LKnI+9rBkMji1gF>n@qU}%C~i4y351x&882x&UP z(xcM#|FiwqwQsXX3LpyW+jCWYkdD2M&^T2bRyGuWWC^34BFsj-^pcrz=dWIzyc%(n z`76$I4O4WG*s2Q@TwOyW9e74jhZw3kQjm}y7?3nK5vi$@Rv`+XfBQa)s<^1!d%wQt zo+=?0b-Z{nEH831aQ7dmGyJl@^AyWZZ-nP|(KTKZr>x_36xRVDY1Vx-XBUK6dSFFX z#Bk4cIu)tdK@qLek69mzb2!6i9@NhpCcf`KaLJN|PgqpIZC3>Di zAY8^>Ew?Mnx3+VyD*I+yC9=Oum!r*Z8hI#v_tw3>@lEf!T`X>l>vgY^yj$VEBuXE z;srTTB;nOGC6k>f1oKj}bW7o)&zO0xdFKBKnIK6(Ck7(Ybsi7liv;IQ*OEb}>~WCk(s9x3Tq1 z;N~+@Q<{e^7?X_?+oHmz$<&Ta*GpXk=^-^(coAlKuHV}4KOB1<+IP>44!=^TbADVV z9HLX8%YOySBQu|l+Gw-^CiToPJ<&44&U6tj0A?|=iSraEp@%T~hlYyQMDJ9oft7fv z0R*o}!e>*VZ4@7TUcSER!^+)_HYWHuCy$(A&IY$=N`KjT}D{LwbL#y92ldQEV+khzV z1A~M3#`&k0Avfe}UR?rDPcBFxbZk4=x?z!Ia1f!D<GCT{C^T-ejPpztlOl-f zfa;yvlwnMVsg#+^f^KF?V&v(T=h!;&?7*`ZK{?Knp+3~GICqH@N8R?=>j>(s6@|#h z2?fl*y~y6L>V=HwMbRB@iq;GUC*3q;A+S}S^99#sL3O7>@pcxOT-x|)Za?RpD`_G+ zd=RnItTnmzkI9oY4)kDa+Q?^!D7W}PhUE}>ZtH5klIVUQOkqop0$MK;ycAZY{1M^_=><8sxmwbq7zo|!o}DSeT)kxmO&s7Ag6vSJ{ioewe+%gk){k{ z4vca5uougd?EieFUA&o3>tep`#PI2(Sor30nPc4*>%jJwWs*f#c2++wY+QmC6 zU3;X;(|vBJLX(&p>s~u6^?!QIAXx^o45B9uh-T0Pm>avu3eBK;8BqL@bJ(Sp4`UU$lTtfw_n=D zZJ^yCxjHZY2}^4Ad{fR4_RQ-!j>~Lw;{UHtX7yjQr;^%!-Mu6-u~MozZtVEKOO6YsvRXo&2A zFYTf%mU#W5J&f)$%@z%pmsJN=zS)9M#Bhg@$H|J8YMvt*j=OP*p6u?Pa=$q=i2C?V zFgx}-tT$>Wkaz$pBgta6AK~+~J|ZVp1cr4`rp7GL~boOQe(|+{y^4r{uD(LRDw;1nHxD^F`vZl-OR_)b|M)w8x{9DFdRkvD@fxx9O&%;u>w zQCM$?cSR;lL%+@k7oVxU+2|EQtM2*C-=?FY(w`oEBQ2MYj$LK6kR06yC)?E@cJ^cF zxvRE{3Ks362ZUe-dU8;#E5b*HFMASOn?5Wbsk{x@1V2@hywLQkxB4^_U4t;0iBZC@ zTz4y|ht_k%W3R&}ITI$=dYdR`gSD8Pv(DHKc$Q)HS5U}s zOu%v2Cc+$`L`74^7tN+K`-g3Mc;g%Oy%Hw-VU%rb<8v2DILVym1I?&>H$m$BGN$Va z4XB>b8hjm2pV?G(Xm|_sl}TGD_H1mabMk2eh$U`Wiop45)8T?((bWo z1oKlz;{Mc4jhTA!AMZxY*0;L`jJGEJ<%2+;(kWcT<>=#1*SC0}+U0V1PdUUSZ7(ym zUxR(-dYPsTH$bx3FJ?~ZTE%Ugq;U}CWy5Mg7=eVHw7+VT{#{H9)6u7WnJQV}|tlwW5t6=N_@;QG#pyV2mCM|8kG+nv5;RQ6a+}Shxhb;X3pVkuaGp z&X{v)H)4OS(x-q*cQfSLM|q zDt%bZnX&kaX$6;OB@X^YC|Uy*a;uS@+ar4TO@4vTyvaVrWPRx4g|(bv^fGfg?2w&y zQ{$>CD1G7OffWqFCS@He+GqGIZ?R}>5ZoBqZw*P?GIj9P@ z)vjZr^)guoeK?72$%%e%Yo#H{k%AqI2#yDh%Iw(d0E8j!pOQe0Q#drD-s$k)&?dCN zNT+cS2WPR<1!F3T5hI9PfqAV*5+kvo0`dIw(Yk-yg-L#2m7TNs^o#$5$x5)nwY^Yc zcOV6R{O(s-9jA2UZ++`GFZx4rec z)jhBFAAw+=$T~>%7o<_A_Lm+F#^G~02+vc`rREjm8^HZ`v8-wWnX%qaf8K1!=ytI zLT8z75-*Pox0*NAdV>i8HIbK;uTzas_;nN;{fQe(QMPM=E<5%*VpFe;$@^A}YJG;s zEt^xSQC;;(3{{l3=fuI}RU^S?K%r=wH{ZWtF2_jOH5`i-Ir~jwJspy57dGp=E~+LikTBlfs7q%) z3+`2LqC!UpJX14Vf2vDe}GOXLx!`p%n< z&kP@e(u}2nS~Q+azzXc`yZhN};v#ZE*5y{s-LVs?ChTu$JKxOZ^1Ti6cxe~TwnO@L z@gKj%ubG|Udr-gw=?`YWP#69=WS(OSCSoiLp}z_`7FJg@%**nMzJ^jmNNi+cVXosA z#7?WU>uD64>Ok%G@;sW-67+z8MsWcsn#XT;6B$8;04hEIMZ$a!_1Cf2kyiL+)g6;{ za~1$%eMLjjHbt4w19_Sh1*V~rFwsN9jH;*IB((hkVMT?vilh{*zwTk{#nrohb@y1+ zG)R+wy_a)t>Lj06gbQ4mBa4i}3K!`9!ha)MEL#{hJI`Gg*H{X<8|hYH1}L^?yFQXw zheF2`B2}BzjV!H1dk?0yA4_!;`(aZ;!h-;=u3Q+g2Aom=m4I(%o+rA;UPoCk`|N zpoPvT834T%#r*wN5h>aN$J*&L72T=g9W*(#v;x2?HSv+OdSymU6CgIk0FlS=bcA$P zoklixEJ=?(!p`;Bl`?fYx(ki6iYla`_e59+LRC(XPNxczn*fLJ-Lq7&j=c`nqJ5pW zMVf?UzS@pTpu&5F2S9=G6ZN3uX@y^vxwm$4gqcf~+a}(^k(1;_O#4!o<3gbWa8^lI z9VEq;W1c(G`I5T%X6AePDA^H!kV>Vhi5)f8A-Z6TXo$5qviHTx9kA@E-e;FxX~^n# z4{J8r#9@B#cwX$NZg8eCs$e<<12c22W45N$xnQ)&b%_F`)t6W7wXXh4{@gC^*J*ZT zJGNVc)nb~u;aX)?hW6T)r+qj}a-+AkTBmzENb8&r7C;Jy7bGpbnX+wSCC=P@e(ZH5 z#m4xI2v1XW{J>_gTk@bLj?;(JtZ|6aqUqE65O<1Dnk$guhma0vPYLpNo2uLHqD9^H z0ew4QVZQkUf`()*hz8R)UHN7O})8+1Izb;daQEq zo3-fWnK+aVj!c(C;MZ|^0D-I#WM=k}0Yf=ISZU@hI~N<7(8QWEHyA+AF~bXk7U=Bb zt|OwE`+4FgjvbH^E=CiowKKyb54b%<6)oCGJ8xnK1e8}p6nG@vCV{v1)Xw+PVjbvN zx2cAQUV8yWKQ-t7HU!~w65Qq>Vl|<6Q zkG&2ZQSRAEi&q`IOJR^iW|A%d%M~76XlSS##3BpjXh6jAmfEn|43u`rojOnu$}Aqy zDqVa3wlqggF(AR*j+^F)NU#GsB=u)|`O3gRJh% z(in$7XiDbNyR5v;%g&9S zEJ?I-o6N13RhPm^MQ1aenQvnzTd9F!IZ~t~g&%oUyyGC<$?&%f0v00Zl8R5Ayd7ff zXpX%OWQ!XQotgL`usY!X`Lk+e+KC3|@yvI&Du;Qd#oRF>kyq#c_viC+JwU@6U@n7r z)n1LN^ugB155EeLG488eB4vr2FT-_f5JO&=Q?W>v2M{2NQkP5J#J`jb zsK|qB?-{UL5?o5RRh|ujq$+T=PdMFL`vpt_QVOA6*Mi-fg993X8_7XR^yukkDE!;{ zw5af+&5yheqE-%~79jZ+WD$sW#WRPc0&%Z{P)C>hg)P=+FLhHrO+tBT{A-7Es&u}^ z9IOtgY;{?_TAFq$CXWXM%bDl{K4j2qbQV96nEeG#_)Dej+s7Vx{f+4Ry&Rs%Ar zHhtt9JRFXJ=b?uwz*}Wys|JPn^X4Kh&C-i8 z4>C0GcLj8na3vgj9mpbkevV?l9b2-z^mQ(O2ratJte6O@TyHOfsgOnb$SL#$1OTLt zo58(V3=t-=UDlMJ*Np4H%O7ZJ=qE|`@9PND8||*@6GWfw9l$um%igp*Tz^72YdHf5 zo;aQskly4-*WPVRez{^H_4pEM4#jq2ry&!ZMW+Z-vIh51giRfmB9_QY;IQ zhT#56E!*+CybHVDl+9zW<7Kra3E*rOGAB~zU}uuK!Unl0aGOjy=~ZF+cs%4$Ug0!ZdUJJtq}Gm^*p0c&pi+&$G%NI|`$&W^t(_*)=KD zncc=3&Rt$g;$2zYROyN1>*me~y+t)gY6PIXK>!tqBFyKUGvty3Zb;~NuDOO3IioP^ zPy=A)Dnbe*d|cR#_%W<=WlD~{jzu1i?(asrWk4cIW_%sFaTG)CB(U#rreQ-%v2&vK zOV&{z$U{#3NwwR0YvNX)4DI*IA`NAmc*(RZXs5zK z0+J2}tTag}ZS&M6p;1wI;K#IqBlFnnuu@i6Mkca`-I>_Jo*mmhc7wJoMT~L|CF%c9 z-kbhNj$K)v{hhXladqzW$JMygxjPqI!pwY;yT_8q9VwMmHMLJy^)zN0g9c_WfA}1a zj8J7(N$UD;5(G)9gb>&1k9_yubAG4P)t`P_2fw!w1MpyWb+FyV^;0zLkbkX5d3}WZ z6aWqXG%5);O92>IQvWWB%U2Ws4wRxQE(WqcWM?l8yG&2=xOw+@8+T7hf4D#9Ir8LA zS!?NjnVdsTifrt)>lE(*qy8Xc$O=&Mc<&|+WC3k79DzcL!h*Z65E(JLR8dF`fF0ST z*P&z*=gL`3TnnISB#T>CV5{HOk`8+hS$B!jVrry>AC3J?`5Ppnrm-# zZuY+a1Z7m%J{|UczioH<-;r+;`$Jy9R^aMijb2tJ2F86Ks{UAg_;7l7emQ=<-9Bt? zIvAS)7I@rQwvS7Rs08B4kWvL$sclQCJfvx1bq`(k8mZmX z$M3lDhjpM^^#73}?+|Xw3$LTthEDB+CmpfAr(G>Th5ccQgI3{$8o?AEWUh zD!+dI=A|F*;Vll|wxOIoeib7R)@{`GYf*8`2I`Iscu=iqxtZz8k)A$A z=~D%Bxq%ryCID@iax>KHTNOdCXNWGb>553+Hgx{MCKc zW#j!TZt58i{5_H&4~M4@`=R!cjIC#NXhwpVT(2cZi&dknEEj+rNaGUC&zvaAd%!-7 zmE}VHkw(rT=0KZnO*cTY0{`y zWL}_w)8805G#7YE@#&S9n;fzCe<-c8t~>MHwthxW_;NpTp&=A zo*$m?qVBNkj>Egt{Gvm6&w6}oXN5bM%1BF#RG`{6DLPq9DZ`kZ#DK*t< zKx_#!`)i|$4q3N1)1>@^~%ye-3;wrt4Vw3j^97?I^ zkxA!U*nx>|AFQlIgQ;AWn5W^uZ!~noN z>}}ub)Y7sg4O&@S9uv^AD&)`ydGrK`w*NlBo1@0J^!$oZly}Dd>u&r8X8}x)@~;c=@COYL)Gx%A$tPlq znk-+5Eg-;Ukg8Ulf50&e(LRh#x_^54W2QrJ8wUrw$XqUYn`rxMt93$4M=z2ZthsH? zt-np|>8>&H@ccA!Vkrpq%0p5J=tnWwJYJqA%R+L-x+E||=HsQ;0q1Y|!FYGZCh-1| z*1@$6bIyA?fL@*d(1q{W;eRsUmX9BdM0@{XJmBh*?xA(<4sQJH@64<|H6GYx|Bl#V zW1E4Uei)+tZ>w&o+V}hKYXIZFWIE)ZG96++tDl}i(}!$4f`~mYJwtJJg8CAXY?lAE zhvTS}V_@{bQm~;H5d(Cbj$v~Ugk`p>=G)S4$CGLAFTIWeSDAO{{p-y9u4i8vo|dPz zAMVYt96#jkx1{=K6Q0GN?9%@JydMweXl*EKUpS5ePHDz30K&nlSEPx(SLW0Z8hrdHG91DI-1e7Ut&fYlJP8iO&aQK;#KuF z59)N-KSo~YV7EIy93HW&+K%_n!waOzg$I@75qH%RKJ;#%H(L_no@-!3~gTaT7Edq+RK8yNXqQTZdvBD&lXSDC{yIQ+I(q zi)7OFKHjmTu{a!*bL_sVEB}DS8bfuX^RB$~I&gbQ-y>1=DfBbF+W9pmW<_h=*TD|L zH(+&|0vFg}=#O9RPRDF}c>eKg^;L741%A4HSEPH`fdM|*HMsh_aGE~^chP5JOJHWl z!+FT^EbL7Mken<7Dh>_g#>BSxQ>MfA*eFP+yY0f{b~7Y=vP~W{3uwm6h4{MvDydjmfyM0T}jR{4&#_+F(swd&$T4H5g#bNG!-!3}ajZ?n4Ma z`F3eHKc;RC zQ%yGZ>W3#V{mP-azx&v2$KnCX3U3{Mbad!7_8_F}4*YLVcTe}KbAYbxXJX6K5W`$` z&LD@xHVo3!J&~$H!A@VZwvifNT^H>yG95N4($W&mEp*B3E7IQ=?_WntW5~-t-HRz5 z>?6^#)wJ5O|FVaQ^`}l|ozRm2`t`m6gXz-iNS{IG&$=>v9OK*tYbvft(6w-u!tRS> zmFKPp==?qhG|s?nL`t5z>Tnls3*$Kj(73DqYm@Je$75MOhY4b+J`r2CIDSLBJ9N#i zNSggQekR@?5Nba-I>|=m5Be_tWv0XR1|xVj1`VJnmf?4aIrPna)w&N&=#GEitaEzY zFPwBqT(x8V+vpn4KSbz1AZce;qtXUVaOrha17aU`eeFPOYSXSCX#3jq9vnTD0O%MA zdJA{Yq!}083x=oRv-V@xfBmxks~BmX?{~e{|Brn+)_&UIj*AoYiP(}Nss(GpVy|K45U(NBQBg8_$QQAC8!^Jl4IES2=Q7O~0sKf1)6^AXFpulI(7OcmM}5 zjr{H3^vT#T{r7kK_fBY&;g6XPnS9+0aTJ-MpEt#=gUmAnu=!nZr;*>)7^%DY*B{=k z*hpTlsi35EGR>`AwPo+fK(2!X-zgAUTLjf9mtIHiRrU{LT{&f&ee2`VAp9Y6J3FsQ z(gVYoZRdT7>{E<+!mI=-XYl$5-1yH={pgit-bY$BVB6t2-7B#LQhk`~%6i`+a<$&? z!@}|IpM5}bl>2WU$8Co(_@_*Vjqdt4P$LI7b@JK|hF;M5R)Ti_y^@=tYIlJ3?2P6# zTd;x3vaA@ZVoF&tzMv6M%%FxKT4z{p@#0QWVAL$Z}MSzF|lSDFICru8G{Z}~3s6D)ws2D9}3bQtTZKtO9*hA)}Gu6`!AXl3nYNj!{C z_CxmMy*qX=3-9s+;so0JysJ(Bh6vlpFNx_DO_Ld$)Y)#}JPvbH7D6k7mQj#f z7bEhfNQXzjs)%MOGV7|&>OEp85@q7^Oni2ACrAy%XhA6*UwR!%%~}9;DD}~^EojrA zxN<@%DUESkM7uykz$0QH3J)gpD6sq@1imvx5Tl*eBVZf*gWCN}Y;o_(8ZYN|+imN+ zzZ%Ca+~{`z96jER9(1qX4nOYlu5WJg@W$VG^hT67UVh(KZa8N5H}V*^_o?T$Fn?Kv zOWU?B>fX*t5G+4%tV%ScUb<@%uPIYmI>;~Y;xe-iUToUWVANfD9ZW$i~Y42ZMe*9om<#KNDMO#Vz};?%qA!?;a1| zp8D~8E_XvWZp*<-!Z6UYR13EF4X7-;T&(Y6!L-bvdsPy=y&K>h*Rx&gXFYhFdK@XD zq^syM0&4N`hlJv}%HxO7G}hmSiYqIn{_sf$jlk zUq%qeUHhi_zdu=GjQi-Tk|2f4Ik$KVqHx#UA$%YTiNp$?YYz)ud>kB!lGic#oW!!J zZ}ckDET6&GSns8$q^d9nb%k z9^c|63gbpBL_g|Dc+`u%Eb&_JJ1zx6HpLk0B&9`qxv)Tkq?$~%^+n$39&+jnT+lMT zY|D$UqYFZerr|4mNPkT_Y2)gsM~;o;zDPHcKSet6erif5fU~Y`BP^$YQpTmUJMOSH zd?@3*>58O!@PS6PHC;EPQy7gNfN+^*JJ<0oqC2jU{W9-+EWP%C;z-#~G^rma&cNxe z6zI`xDkVJI+G1T(tCdC(yXUFcl{`<_CvxR0cV*gkVB5uhcj0v$k<2;9;eRBZcm)zP z0xb;soU>ft_x}{>lztEI?xTWAETU5P8~JwjPQ8Xwc9MiPCTB9hSch`{-|{fYsI z+MCcRl;}FI-+odOluizJ-Epwp%J7^Cwi}#oFO`U=`D(S4C$p%Mc~zPzl1GWO#BqVH z1$Y7IX3iP!hG-n2M2U(^uj9{>PU5N$;@Zy5DwZr4_WeEPIe&(90&Pgy)JfL?;RrrX zfMHA3V@HJzh3_S4(Znhu0mmvM7WW%Z_q+gF2>^B(h2rVMLZPungydw z7KB+M<)26=U;k;+NtQSv#Ny!S%E2P9O3lk4{lI3zZ!_?$U5y7nb>j(b^Mxi@{vEbN$b1=1|W;i&7UNl{KH=) zoghatEB0jwKyj?-wkQMQP>nU9s%Zrg9Wu#7nS+wxZPo3ICaDt(5)rHTn2l8#zrDQ) z$3PJS$gFlZsjb{b(v>3XZz#u`A(F4&_?dK~1f1ym=8A;5E1{bMu^i76n2f^Ewk7rnW9s=J zowR?EbTYu)8b_1=?=<~GS zS40EyuSe=5!jJ^VvKX$Pr@d1ad}Y^qmgbRL$tb50LOXF(L;1a@-F6;bjZa zhX$ZSl6dhquS$Yym`PC(b=YVj#Bc zT0|aRcpVTG{s+>@KYu2j2&L~Q0oKAzi^v-T>NeLvl4F25=^@EURNtnYK{-V5Mqa1s@ z`vvL5j?|`CA_DA5RJEmQ8D`fQh^Nnlw94bMFNUYSFWM@ytCTpP{MDguDoxFY__QT` z?!6{;j8%M6t0)_GyZ@|`plgHiXC=YDAH%I=sV1VAcWjm!cT^6d?)WpYrASVfUdLzB z3H)cUDk}ZIjL0`}+`3B>orFY%YAzsNdjhYxEoBC_9=%`AYcW4z$iDB}E#v`J zU_w{}BgTj&muYFufp-hjaoZMXvEBaMxLd4#X|t-A+~HG;q6r9 zhBsQm$;k-$x&axmsXyFh(C_H@tC1WgJKr?Gw*uWf@-y@bpjl@F)7Gc$%V=ZGIi!br zc)S0iB&fE9vdP=qFG_-Mj@@uRmAn3S7>oY1k{~fQWhlMzowCc3BEXwgkk{-=AQ)aFLjl#YNOV zro(U?$M--Z=Q`h6pwykrqY*^NK8FV@E8M2U3%NQFX}{~-=CA9th_>mY?3Rbm*)N&$ z_N<@k+g~UNy8XXX5@4Mb*nu15t_ngxm3Vpq|Dze-2SD1}jziSgQ!c%Z(#}Afj^e(y zll8AiC&@F?nO3RG0&g@ zuHQ9dAD$}3)D0$4Bqyp7t}@^|nA>WsSFIVUAbdh)`tE)|<|&vPfQd)L_NhoW5Uu|i zB|!}(L3s{tVhjpRZ*$GH-`TE+yKgnL$oNck6BIfUFlHb?_>5@-Mo*VrM}d_?at7GO zPSCew#GLA{q?7vY3+V(6WH;8uE_rx9d@RogbO0SLvcWlM_TvCZS>3itq7f@ZXD zLq|y!LRXA1SKLJnFN_|d#HpWN-oK`y*Bw5ZWdtgAGW;1O0mccqBqew``%Yx4STMWv z`K_xO=dgI*zQ))2#3w`KX*{_2UstC()w>ga z$YWfs$`ec|mD}GTB|EgE|B>qPx3C3Wcpd#yU46*HZwsgv5uehI<4_ksHG*aI`m#;( za)%_wXuQKv{4v=Vaoitkr`_pBb~@f~i}o27$vVr1q>=s5mCsqzf#9-L_eAu5##zgOs_qN;p{k!yRdGO zZHH#lv+TCapPvqWV*BT^eu3%o((AZ;hUzo{^lxa7hhyCzaKsuw<-!tVH{|uDN#3-! z+dUlO?Nbf@pVuH#^Sh7mR^3DL|9JN;48h;Sa1N(riD;fjD7(kpHH^6M((!ADYxT%Y zq}FeS>i2PcuiMAi$yuWnCTzx$6e7&aoP-GS$cq z==4V^+2gCLrenzu7>UL)wqiH8Wu#qy$$mMSdGoW9ATI4l*B#|L4sWk-;7Sj|+>ad< z0+80%@s>r)802;wxuWI!4|4ib79G4xufwG64-lOlYS zl6oe#(e1$2q5CoAr6JJ$2`ytss_ij(1&D z^|lxtDi;~IMO??hm_=c?GtoWNh++HzTF7l!XG&}~$7<+W2yW7$i^e)5NcR8|$ML`K z)WI*)<59|dV{TUs14bl3A2<29cQ;xfMW3@@ew#u37T(;1v;X(_MM>cI^=*x$hahnB z+|z*jj9t4qT0S%)Sr`u1J4@CvAi!(d0hRl*>#&T>n(gkJ1E`7V^9}(uV;rTm4}LDZ ztcYsB+THO!B#0|^s|ewK7QHVqRXLO&&E&pvAU4(xNTJTh;o~VjJa64&hsPL(_wFvU zeqSo1{f9a~8J^;Dfv@w01+rsz`!=^dg(un{l?0_97BCo`%)9>jt3N6U24soEq1HbI z8RXJn$|vU{2y&72p?O9AAR8vS8|C&Hh|kNeLopo%FcSc)PGNCCuv-YQBN~EXhbVVM zHN>xGE%3`A>l} zxCSZB19Gop(FP?MlZOZ4S4x8R2I@!$!MmFP`~ELVg8kb)5cA^UgctQ)+3k@_o@Twx zw|0v0PV6EKU3tA)!-aL>b%>aP|CHt5V3Xt&aB3r<1_0#RcUq(z9YU;#;lt?>R~+7l zrf@98rVncKzXL*N*!SC%@kp=k4(PZ9m{317Cze+%ZafPXU#; zFgrw=kHdCog4^S-lmv)Y&RkF3lsB1axEtrQl3;&(dy{r{Wkp4M@Vmh_ag#>!>jy2a z4FuSeG>n=OA)msf*CBS>r@txkZ(D#iN-xD-6H~V|HTeB~n!PrZA9o!_D0jKp=b4ki zpqTX^e1KZU=iDtlKSrR(GnnOveG@l#=nYy2fX?$+B1;Tdg#>50aJ_c^kiVx@Qw!w&1 z`l2NGO@I4INl-*Cuyby*F%TX4SxIo4-`rGzoo2}U%$HT74-bT|;-Ny4S{Ak0`3US8 z{O(w?U3wj4Mf$|O-!*+5cR{;F``-0Kk*2#*bt)vMJ~jO?Ha>6x^>Dz2HHEsg>bBb~ z8juqI*zeqjJ?=RvQMXmOkB?3GuN^j8)jn7m4saiJTe#(T=nw79?M_ZU zD+zWL{;#1VKuo%~vAh65Fj}*RlE8923}gFk;G6KYCImsfl7GN$HE%PxL&^%w2(YZ{ zNHfZ>UM{^3M-c7y{4^XBlVo=6Ic12SQBwNu*3`Q(_xEOTI#gkPs;lOVsae;ATcE99 zka1a`At3?0SnZDLDToSM`%D{yea^44$hMvJG8v) z(loBV!YKE$>rmyqe0Q!Nes9Myl1?PEX>x4y3Sn{V75vf{xzv8$;T!dQs4=fAi|vr^ zt2}*;D=xc!EOLSzmwk;PtUW|d2J}=~8E8b(VmBah5VP6+Ai0$tS@<7A=wM+Y&)}9s zf0@5KzbXlg-n@EM5{!NvN82cVRT88(aU2B19)43BO<1L_YkDNWvm>!N`bpOVH5%-W zxw}iFqKUq4F1?OD*A^JeeX|RF+Z{9uC$9qJaZlur_jnf;wWZ$wc$a2bf7}+kUDR%0 z`qy^xjJRT_g!Upsp0)J>qk_??AgQys2}nD`SdIuSJ0{wFrjLW58?LPxQEfpD`>dCU zI_mc~P5#(tH@Pm{TKub$;4J~;9>7dZ7ISNIP||z5+LbryoGn?vyvdTiwH9bh~uyxeZ|(hNYe3=hX^zXKv#;jd-~>7 z`Pdc4{WV`Cq(3A`-!T+*M}PMxCfd zLq6nrJfwzY{832|#k=kX`!ZMvUX=t!bc+@!!Ohf35_k-ZGjNc2Kf~{+0-DD8`stKs zJI1JYyGyU*zxH8eR3I*&CTLvF7F zAr`69(`}v?MA?|l0qD!HV}?mNjhE zBdR!Au(RaS>*%z#Mnq1P3~9Y8c?Ma0p-MUIoI2}k30PZ)=Uj2pSraFoENPKjF|tZ= zvRqDdhBa{>?WUKPzU9FSU>H_T{K$f~c&sOQ$;PH2b3R-J@wG(++cY#y+RzItv@E_- zWM*{(6{Enf7m~)WC40uWqLTU4%oYuU0Qw>jv*>JIQrHzQ5`L;VdAe3YRWw4M=An}{ zWs6|xI$~aw70DDPJhPBW!6NxgUStlnmOV>XbXhaC6+grRLop_A5k*}mJ}U{1 z(1?<;oYFWPwvEXt#$-{U>YAYzF2*;wuW&0NG-uO-RZ}C0HX(xK-((h9@nNBoMI$}kph=rn&CqB6o4HJUsa;0a5zO*8EUB~F-38avSP$khxy@8rw6(cr$$Vl-Z#1H6 zDknSF%)*pajpbN;1$D*I7xL1av$`d#;Cl`sD-p$lNTB1Xg(bw1?ChAya>*AQDgKD<+UALs{T`OeuvSJ3iw|(^}g&hPCai1*6(Q+%IPUi!qESEu_G} z4w9Iv3=o+lF`7K1bwvV^g8=ow83{2$L)^cpYl(&Fi$SSk4V(2?diiYDk`Kam&-eZCn;GKn+A#;tMg z#IYS<)>49Rq{z}z)TahBF`Ff;hTw4^EZ1@4F;o~4WWQ_0^BsXJ6FpQEPUGg1#WOa( z#-9qA3yi?66jro&UE)?N$?z#T(Wu$X%?v&;Db9B-b)DleQq+WvwH3`saVl}^ z(3H&;f9Z9YA~nG+m5;N@Tov@?jFFd(9GDWj#4S_~92Of}!3NVm=DpBzMHvK*Fd<7X zfm}w9I<~Df-4IqR%}Fa+W;9*#VHxHeq>q_F zD~&BGZs1&d1t+Kro}pGePxJ*9XT)74`f{bRjw+ZoJxe`iK~o|_>Ar|}y2hiutU7x+ z^(UI_4rdPZC%6*&!5TMT!)|mUI_<7MLl(TL_k`pmS`` zkY!PIu`sMDJ5vnZn9+-+#4$QrN=b@TX!j8i?;?CWgXluv_%X4dwc7oTe`7GKB`q6( z{)r1c^;sb!o?ze7*U}=fraaARGH$&dv5jU$tpL*jsgCgSh%QH<<{Wi?h@*_gU6ojf z%$6l5&?r8>^g2{$%JVFK(NkH`=Z3d7xS2Lt8j8&=bK6ja+|+#{cr7tV62~iw%Q{GF z+??S-OAh>ur)7r~l9{xaVr$CM62% z70ohwU3=HcwHT)=>2GvF^mxkD*1SuYwFD}e#2XI3Pyt78t%WMl3uVn#E^t>OMbSAS z!h)JPReI@l*fFhufg{+xOReKjU16+3L`@M?o1KNW%Y#iUDS@YF7_TrY@=ui25>FNg z0LpYNff0F1CX$Tz;UaWAO{A0QI?*&+O&m5eRYNg@zhLKG-Q zTvKTr#Ft)&9*7GBt?=fJJzs1Rl@YWn%MerxxEnsv{yZ&cri=uW24%u0xVU6 zl&*r5$9+?x!*n_Ir3vo^rtNbo!;GfD+s=yh9ZOZS!elfnj13Tz@DiqHK}9T{q7`1X zh-``sFIn*o;ok^=0QSHA=kNbxXA)UbaDQ}Zie)un=a%#$N|YJr$<$O;MY$DI_0sDI z0%pPo8YgLzZHRVe@fznDP8#csYAUikH(1`#)Hzo2@m&2Om=~q&d0di85hK}p78tKY zzc(Vkyz*Qta~F2Q$PxL+XU<>I*|=xjtT)!%O`N!{s!7+eylM){-b{ErNKw>XPE;{g zAUro?u2`=4)18T9lP*$t9izU9rfC$LtSMHc7FgCuYr$E?)TP&vtCKgxS~F{25On6+ zQ$(HfV0IIER`#%Ckgwz`Tc^30(sDXXSk_xjLx)Ri{c3K=!sce75#>}nJ;ACXkBJg0$!K1P%jWr7dta=V#bXDeyJ@>64JeCkt!n9=yt-=Q<% zSmD>5N$e%Q!_X4Ns_W%MwJ|?pI2|J)iDfv!l-83=uOrnaj6(!*Eus&=5nP%GA|kvR zD4LR7E5s00&I^`T4hwa-y5KZ>B3F)jeXTBMSF$Z(b}rzJ7{>m!u?Z3k3es?)hjV;e z6U{IQiCjf+k?fGVvTfo3V)%w(Ebb`svXmS{VCJf-O0RvYgHCX<{{y$u*NYhtt6w@3 zM#w#*afudklp?D<<=X3oXo*H3OtHD-XNF3*mtIG}^13TZWR69iqU+u)@EDa5Wer!w z8xwuMp>vy!3hiNP=`ykxG%hP~0hMQSc9Hvn!_ge(t614yTerj!tVJcUTlY z;|qbs*AcsHPJ(P%Vlka3mtIHibJyG(8bix@w4ySbo!7Ran$c>$lA+k}J>QHH10BDF zDLHTYSFFI2Sh+S6^BQ;k`DAVyq3*i@+5_HOR*uZMV686ZW)*qD)PNF1!zNh8y;f2z zqUl$vWL_`OG&qYj_D+al5|pdJSt=sVyZNazp(fZ#|DrR2Is{`KnPu0oZHXztpN%3C zWrbL`sg|<9ABes5I?~OQT}&H_^$_}OGKqps((H=>0>v>|zOwV!kB$_}x2(B)2sR>pQsSG=|&#rK?A2W}2A z4rK(6jad@iFl`R%8(X8%N7B4N<96gr>*)faI5x{Ot{`6vm?>}){v}_pSKP){b$+t; zoJ?RsTU|&P_dsqXk@Qn%;`r3hor&>poe4FiW;Ex&-gxU$Uh_J?UW&?$*Njzk>2-(< z4j?n5@EqBtxuhp9c=J47wZ1JO^ey3RSHqm#la=(wq;)$iNusF$yt!}@gtWR5BWO7A z`MfePH<+=!gr&cxEZ3~IqUedJtTu}9W{J<_6^+%_Lc*4qwXY!C@aYLzmwyv3B}-6! z5q3s9&=66kDe9-rCT_r6iWY}7B?)ZDEEs`$@F+k+1?JN0;3#c97w|hj zrFcqV7}dZvaw%TR*QO^)LMdE>QX_x7W54wCdF0{3na0<)C2stU5+=eMnZ-g`)~{JT zW)x0jX^rj_nsDq?Sx}g*_vOl7X|!w!f}|>eWHKwkU`+LmVd(rS$)pW~?PSAZmS^h{ zuB0OU+L=63pEqbL^ptpeXF6*P)2!YKHgJY(_~-$`a)@ zMb8-CayT^QOFl?ho6}8O(*jo(ocP901KouDZG(FXALtvSODFUj#u5~aNhR6f#U;xu zmg^hM=CAbyyPy}8nrXbrdlClT!j;Bw68mOF(+gaNL}txsxu|9MH~%qIRNK+ll${pF zm(JwZ8??Y!WeR1v4A1Iog~e6Z;v_CuGs30UG1Z;b@@n;FF{e~z5z0Jvw^LjlaJw*V z#a|p|*n9*Ti_L{7TqDH>DjikZD2UvhGd$TOB}ch4O?9}%@=B#?OO`EpwVu(DAPLj? zgw`mkdzHay9&1i$z&*toznCv5YR0@#I91VIZ>j~vh?U5k&4?=DGAc&__3O^$%La`z zb!zVEGJ~7coU4U}r&UkjFa`*FzV+UlhF?p3^TpvS)WbtM;V>MRHIT12f zbImTqnPt-g_hvO;E*EbW(nO-Q!Zy+y&6$VFS_*7gT+Ap+Tv7A6rT?)r`LaP1IfYva z5DU!|kxY_`6X=Nd)dduK7hVTdm6ZRE!n<*TT|1*M>1$cKg3eUnyI{(c1gPO_cFJBs zDr0LYt|xOf^RabS@C7rqm}K97anbd?Z%INj^DyI>n14`ZXa%+(T?8C`+~L^GJF zL1^fguV*v76lu6a*tufRi5bVzJf)C)WtOofFQ+SJiWY;o@2X<_kk)uVq|u1e$&}VZIm1>y?5vCJT)j z_)-@6sasWisVT8w??Vf%g-R`AllXcQ=yDrz$`#MMGEK842C8U6F!xa$O_Fhxu@x4y zAec-{LEt21&9M@8WSVYG*CpW<6A*cYn@t_4sbB#}dz$*(nGg~0Te4>L<#MIT20qtx zCh-&nEzgqT4P`}NdL6RQQ9XVj_=(I}e$85js&kGe%oil(b8oWp7|PECS&{|JP%Kqp z^;<8F00lGF2w>3I<(iq#Ic<3~y)@wcn>W`}MzXjyXIfZL8iBXJzJ|tBS3bE&DHBlTa^Y;GJ1)X<}%oa2!fk&6zhKKOma#@c%3ZJg2=17%!m`OqcHmtMyN?HvuF%L4bCIkQ--R*Thgx`kzJhJj2WO(}{$L>ARjwoi8y zG^t2?A&)=+TpDPs&P3WChz zRlX;bJH;Pv`9V#XIV)d!9cr+o$dX|fi;2olrxLf2M4Eda>l7KN*SL3z0=L{@CsgVP z8l^>UohF2M(Q<)cBn(}1H&_$X%GB@ZM2>IlIJZ=0y^t}No=QH9PdJBm#8O`oDj_^SUsWmE0g9#M zfLcqbm)M3IrJf#zL8Dly?U`zY>3Vz=-^;pAS;tx#6<3)v)cHLwD>?5aygXE`r(;QI zE0PbT7bXu4> z<>gZ<8$CM@n#7Zg$d(VBb@p-Dsi9osjkQHl=oswSyid@R8UY7eNaloYrI{93;)SOv z5Q;c7#Ze2kbtxjtly(EZoQm=KgtC^D#z-=)8m@0GUgrV2vtFp^Oh}e65FR)`N}4Rq zLy1-`2%hKE?|E7EUkGng;-%L?bumNJ>p9LyEX-OHq8K73cp^e(0#)lM4nbch(ipkL zMo7hF0%%bTUk+hK;eDXAS!L{=OhU2I#8Rn5F@{us|IJ;ayOj^ic%-%>@Te=-PIE|p z3=^&1bUCLCZ=%dt>MDf<9Sbam79r-C#QN(+h~^`0f@_c^&pvl1rm^a@Wm^ae_L8I}_g|)_hf(dV%gmwGF2f zxM?cd-bbG2)Q~du1%|8_UWaGc7*eX%QsB|Fr88V2&?jh8vz`fDl&n=CjHpTJajPAX zh*qt_2qc`$SP7Ays9Kpi#AveC#Va$Zg2YX18qQbvLIQT}C;DP4YE@>KMhy43ELRQJ9`9MV-4VMwf-kn${7l&I2rwB{U}({Q33GL;Ej>wLf)4E`F? zu%FNc62nOR>QPtJH*82P7@p?ftfJ;(gnP11nKVtmb|%6M8)n`%c^~sPvC?7g>u}jw zc&cFij;3mpHE0)pgUhai z+RWHOfyM{dqxDzSQf0+*%;iLuik~)c>oA4@JOQH_{9?)^)Z(npWXk$z8*H)&LrzHX&Y$!64dZBuU#}zz zYDa@(7zdlp!hyTox%4`uB!gd6Q!I`9kWi+uw0X=e`xI27uv4slY5#7W`{jNvPPP#k z#8H6APTL9U9MU;U3*rdDgI3}3rmF?k^FGrwcC{+u2p1rZGl&`mQiaLSPybTlB@36L zIpV!Z)jBcfI+H#8Lke2M8x9v@h5w{7rX<{RYAiJJ-$$Q169V0AvFDd8t2mU1#lIy_ zUjJ4iQ{T7Ra^YG5_HCD5hZcxTgI>+k^W%yQWYE9lg>RS|$SYo$y`phE02fj>;vzjn zG>20X$`o0Pc!}kZFmjz}&?2NztI>9?#>aFA&6djH=tzR@DJxN3LEQR!>(%usrm9c| z6w~Qj2qO7~G@jqCW>*Y#rHGOs7cRw4C%L0eb8Mf#+EFSx6KpTh`;hsRxQqxd2SpXl zs+3tnm@6My#-T7RXZP}@*Fl0(9n>|`=w2c@K5gopAjC6AV%nH-obyN;tK9iZDLj{sBq^{N~ zG5o7Hs|{4+)B++&$|2ku4=GY9KC*Y(dYv}{upbmoDf$gowQ%`?dEDdxhrqm75FsPr zCM1nk%@IN_EiI)>uS2j3A;XHog2ng$C-2>wEr<>aK2e z0}a3+2q8#{qCA#H3Q3+BdGCnX6As(qn|-nWga5Ff1VM_@P%{c&y2uCw11I+CthI7| z-}k=H+l6#hF?ke?T}l7jTKGF8g)54Szd;;JkHrK-w;V?AaUO*KPsL3gi5-X(A|&?r z&He35Oh0O3PtQ(Ui+Zq?9cuZ{uB+6!%Jkvcvno-xI3;rkbI_Ac^a_tb(Vr@f+9Vl1 zRwiwpdU?JIv-ECJDcr>F6Rs}NoeYsfPz#cHa^S>V_BtZJOUp_*d2OU8EQL#`&Vywy ziT4M9RDkDzQTcHE%1LBg#ap=Lr+3XUCOkEbWiw%G{>NMCV{<{W9Co)CvZxhGDydi74 zhTIyy%k!@=eeZD^XRn6dPy2J<%5oPYEzO9k@0wK?2?j=0n|2vzv+3ywGd^nz?enD= zeRqgF0Y0wq9G44lzYovZ&`uvKle5T0a$r6hnn|(O{&|&&|6$dH9+^TnO7&$2f9t~6 zkv;}KEs;FfZ>}m}VsUM!!vObA9r@^$7jVfk}q zGKx~{kAiZ;GsL9*sq@X#2ZYVS)iog|V*rA6>FdbGD8Abqs_QO@Ey{RIGhuiR9qtth z(V|;K;VoA}5$(la6UX`&_}Kb?-ERa470(G{XE8i|{wl7!n`Oq!x1=ILE>kcQl~QKn0N*wMKgsZ6LZQGsxDe z|4ZUnBZ@YwW~sMw0n%yh9@b^B0;h`LWDju`@f-h6n^?1gP7qDBOkh}7!it6N2k6ghImOwTEe zly>Rs;O!W^-4HnN<9?2d^jy|KsCJ&JF}3>eibgT_z)ryv1**Im54%4T$AXj#h@qAB z`4L+i4b{Q>W=Sy5(BFwk<0#r%;{q~1$b?JIavqpI8X`nEVxnJ_Y3Qo)s+WaIO9Xjg z={Z&CsJGY?Qpn1IW5BvQ^8_hxh0tqDG(s=(Q{dZ)r!%MY;!+%sO&A2Wf9dP6B3Zr@ zlpEGMC9lN&(TbX&s`8HxW$3waqvKO8((*ocBI2i;^+&`puu11Cq6g62%rmka@`;@O z{Sj8!+!Tj18f7{Ibym}oP0+Ry+c_q6W#m#fY--9Yado(!!!&ZTrgM!fv10+BKp@{) zRy%Nl+#KLs=fW~Ieu?p!_{~jnh)g{fdR3>I+lkoC5iRS?xi5Piq8I5=d5LM{xiyL} z2S+qf0cnaY@KX+D!l~zGI(;IJO)~E9XHd3nJakJ{b$izkKRA?|*6;NfoYi?;Cqq+}}Jz8RWorBvo@DGvzNF$_|Ealy@opPpN!0cc}_3uCQ)g-BB)jr!;vU6!T6R zhol+bc2)CVI+W-7+!Q62 zt&a|6Hx^PBC7Tj%5%~dpHaf$azb_Y``EA=K*QR9bl`HB-VQbt^bR=&%_kknT zz=g1IOo*>L_8=PBjIyQd`MV1(8AXmP=(5*g-=y3lsKpFaXEwZOs}v!_2eLpJ~@;j{)d4ZK?VqY z5t-iSD|`o-A6vQj0_ijDc`r0@ogZv0IJSeqL#lKqBJXLxnFIv3NE-vZ_%d2i+y+{j zB1CD11f89$i=A=l>j>@{_p=4O2$K_}uh`*PvH`sCqeJ=L`RGu#^*pJMt5cDM#y7cFrsuPxOjhPAr;mzBJDnll~!;I+3i@Df7X!U3ZgFHsD(ldef z^3vDg&k-BXgPn-yib*ei2_YB;sc^GA{n?=$hsQfeUkmJ6D7RB_KH=pk ziN~&%0mb(&MyFM#etqy0Kv_1>2yJ8%?17-pu*+#_ZFzzGST0`GUNV&`wT|BiD`#X~ z()`xB9x>b4L7n94MFT+C*j7)TsQI87VlA|aqgKfz9fG%hcj@cM^1`rm`dv0hS-9ED zxkUu*0gF%lj~vRrH)i6-77vECqY;-ipocyY$6y7v3#6icU(S1SSq}Nf(1tRPka?&o zUv_F=MVK>&clSsO$VVoFzl>AcTy3BKA=M9=b5~*uS z*oKGs4z`FV3d_U)e&1OITGls)y!3U%hK@}~*iNt+nD~APlb4gG=^jLPu$>*-5@e_Lw0YZv6dT)_syiB`5Kxhk6c1~2c7&Fg z-em#ia&I=gOJ4^s9hb)^O-+7H?vRjypW1xCH1t(kLVuOI#DXj7bEZ2%>;>V z;KJ7-%HLDQS$w`x#PPZJT#qi!_RI#VkHkSZ5zKs-vLyD?N|9c~-KAbJAa)^uz>r8B z1u{7=cH>Y#K0zun`13361oF<}JsC#`>{`4sLH?OZw0RfbYF9_8XSsz@hN zP_q)mvI4)JKA&(J&`4c)Z3~nCf59u9@u;Y*L=#N81gIF!+;8?G;_x*eFMS>2)o*Eg zNzL2tg9QdU+czWLN>b;$hYgral>l35bU%B8T@k*4ysm@SSrq^mi&o_Y9#?3#namGk zL95)>Lba4hIZzQ8jwU>yWKB*Q7J+DGqByioG2TSNt-LsDca)2U^{jvH7dRZtJ-coD zG*N1_9lorI$GD-kgp38SGZosl%Vjm=D zacTg@Mm&rI62-O`)b#@PN66SBR1!RkZMs)mxkx9sL1gJYAG^=?c&wL~b7O0_P#)>tY;}U-~+>*B*0t9;ELw6mlaPIe}@XralVV zptLrrvSqq7`=STqU$*+IY42tA;pN*e_eUkN`b|TS*yIZT^FaK166aDZ#0j_wrth$N za~9+g)Z;no*+&lMDXA<GjY-vO<)uf{C`MC7n0E zP(i1VZR!XM*bDdR?Te(Wu;jrop=?^+KmF3j@2Bn1X5$$^CD&;B6)!hI}gf zqz+6>&#)t&yApToM(rqVr?Pinr~2rVvvs|3j?-I!9!d<~^xU=l&|MMpY>h&T;iV`c zRN9|f`F!Q0(0x6)^mQQ2E*}bBiZ(|mw^U9=umFO&uMj)cWa`rFhiV5^R9%<1jqaVUn4 z$dy?1rjZd-mgoCKwx3-Wp`TSLe5=G)RFL_6#9!jABljhQsi<;FarM0hl(AS8TXx{O=s$toW@ah1#|HEH_x@o zzkdAyVIT^_%pyV8Qwt&iM-UFlkt(#*hAUujKlS07ZH)lV`0b_1Yf@eMI<`(6XlTZ< z+m__LxV5~f3vLqb4>VW2H~%U$q%lmJAvLblef)u~z?|v305kdlse0>h_fOuPgyY?N zdf^SC`mbXl>+I%G+!W(|5)`M^!}h;q!MQFA@A)Akm~&HH5&IY>Uz3O)zHGxTr2qZ7 zR4&cDjL;nASIM3;zts&|K~M|_O?Mz%TXbBFt%FFHNu!#)@O5xim3;Oo$TX;YDIa#8 zW4~^{drV z@>8zP8R5Al6bM@Q)VP+3PAlY8;0xa#Baq~HyK-OjI%@V0%Fu0E<+jmm&)g!!nTo?M zdG)w3jrrbjSf=u{Bg@>NJ7D?@1V15Fn~tVw8Pa`oK&tY0Y_6N%m|;<7hMvqe6Mo!T zviIVSI9>ndmA%G@*Rx6n)6Y>9d@L6McE-t-ysj%^k%5t&-yGaYdx6Ho2#7$AE1rJl zm#|#B2rV-WTv`Aez`WYG{m9SrGQaS3(6M2{u-*Lzw`oGBR2l&hvy2t^t8ZgH%r)*rifN~LJXq;ak$RtR;A=KlWoyap-JB&iYOs*$z$~cH}J71-< z+6Kh*YWtd*n<6OR`tl>q;mckJaVKz8nRs|izP9a9oNi1Ngwy4YsoZ_1 z24CqLQZ+sWaoyDexmfjPf{ocBOfJoB%4@^H&2yujVbYsNQP1M@qvqC~80*?sndPHx zJ11e<{_I1|6qD54tz1;m^XK(CkZ!LAmu|V+FeYJ|p@mseHCx+Fz#hok!!+*MUmH_6^gsE72+O%K|YP2kCaD|M(9b&20eT!hvvm9EsWBD2r6G zERD1MrhQ{G)qbN~HmPN3w##r=7scaQh7Ea-)~aPU;yvnbwEw{4BTnHcwT8WP#&_dG zm1TL88XwC=cZvgCKRZPakkMlHrZxRAK?RaKZm@NHZEjz+BG){;KfDg}+T>$}?G11w?)Q`x!iKxLdyjk?mApt51bT?6V z(yQV&mF^p^8ex<36iw5A`Ow%(DWAM#^QJxI`dP>u(}nGa!FeCWdbPXRO=VRNRg%Tm zzESB$ml@uvcawT~K}}JD%r(g?MZWeHq5n?WUlNI3I3FyA+!;`jddygY^+p2gNjSKZh= z1p0v!x!X%-6#Tiu873q?g#>EU%#1M?1hUP<*(w=f>(;td$E;^!2ib-;!;@d3}h4uOlP~bIelYgTkbJ!aLF5 zA4Jv?*}y5w=3M1=P&yzNA~*T?(hP0(+xFP|#8nT=Y*B5JWu$1xDvz57a%M~X1Fa#H zSi)H8eAD92^cfPbg+Zqv0U|BjavmFJ_ofcR&u$iP(jMbA(w2JCWj?4Vgf3Sl7KJI0 zBq`HO>3M-Wvt-tpgvDEO)L!iPV(Zf(v8&bIU-~*^A=FJ=#|mB;TmVKGhxfDdNEM09 z3Iv~6w<@H??_}|GYJS=n{6Mvob|Oq|qbOUz4t&F{l;_Q3+%C8xoBuR)hPru8d1Ak0 z=qSaImSp=OIo9eSnG&Z=WHLNNUFjAeu{ox%0nk-TsfS1;>D46WJ}?yf5hbh%4I)hw zo+{eArqE*QMH178k_Ia-o;qL8m%ff@tao-0$%MRUmuE9P4x?oc3~&ubjZ~IU0)<6~ zntM*9F_lx zE1U)29h+qOB@is^Zsow&T5xRiT zRn?jf3wsiej=1Rw?Cfb~yWBuBSOC@-axp>sGjb9%05 zpe(H9ygVKLG|EV6`C(&nNl~+I_#eLEx->Hqc@X|l`fqPY9;?eKtqLwk3^B&z?o_%{ zw8q9ti}jIm@%j-q3iHYj4q2I4YgF0zR6a7v7$GVAV?B#Mb6mOo$*+DGk3H$7`P$r<&^!IX2eT zg55D=whcFS(0IF#uG-1qPNc5YB$&dPIt|E>-I6g?4^+${8KmiqpquJuZH6drpOXPf zxk$)LeJzvwv1xh(=)CQFaWG)$pb-#|mxh|Q^h25f0(C_aGdCC@=Y*wd+GI)uNAUAbz_LX1+#fi#OPAM=L+OtI$ zj5zqot9$YpbexKWRXvI|vTs&9O-_xS+$K4;VQ zseE_>4ncL{LfUO)$=jJ8Q3w&lvAi-(0$9oss=7#rEs_C7;!L#*Ay0JXE`1%-sh|}@ zd=zI`T$5Kb#dZgg8s9LTZW=tt-1Y~qqKF2#xy~=KDvObjNIM*hThtpkOvetLfGNH6 zK~zBEZrQyj=)0MH1J$o+PY;$|XGGd#ungiR@Xov7Ro^}9>gU%J5rqSdfuKv)X*itv zNQW0Glb^tp7_8E<)Vhw~n~DdyT7?D z_IH)L-ix$5--@Jnt=$$2TAl3Xg=$mtg~(~DWy!wwsvb%?9aqXlO#wR2u6qI^kcniL z3QZRgKpEWAfG2XE`Y`P*%`_v->VDWBG8wgGeHKHeM_n$ub2*gWrLV)5O57ieWDT9J z5U}8aY}uk7v`ue8SDU>h^oes-xeDYWwx+Gi7MsTZe%NGn;`eWa{*Z;cEh}spzj$=h z*W89~U-jZ~vPiJ^#s0J(AIMV)*`Ym@B=h|t zbGp7fchzV*PU&*HtkW1p0PjGfFjd>b@p>Nkn0K(g(k3%kscnG6#a)jBWX|B~@yfikLwAtl`ZVHi6~P zU2Roh*}wR07J0OdMBQP}iv8r5$hVxKoL0;Q%p_$a_ILP+3@)>my$-0HrV5+3h!D;F z3+S=Br;DAaz=+$-wbqzHKjJ3gooT5eQscX~`P8cXp%d$?QP}g0f2wbX_-4qf+kBU% zPabl>(iIRHiZZH!-x5Jbd(daR3 zs*6@QckfrAXl2bA?Rz_Sp9jBeL}&ifqV{~G41xB*>{FzCDHq+#UI+1fL9`Zb#6yE| zQ+adgrGXK+3>uR?h&if5+{l~!o^ck|Lz8KTz95@HJp&}AJ%5>sbXxoRb>bf0zi#n8 zineg{sII%n0^w-TNf2Evo5WIV)^IBGF}Lig>KDqzhsqzDWO#)XAuWwvN5rpJ&&g4x z_fEO1(smt>t;o?QpPTzyRDl_H|1EKctvexb2ic6=%BE^AeI0DQY`E!CuSWag6rD|y znDPvpOQGT6itz*Pr$SQ@8lh@%tm?tdkS%m(2uo#Fb+_K`H3S(4ey&cw$artQ=osRs%R}3>)%pD5cLfcB z^bsc;!Dp^axz9wg_P;&}+ZHzlD)pAK6xF2m8JN(YJ#}3%jH&f`7Q9%BUx2p<%ZW3j ziNP_|Yf_P45D#K%ChC@<@ccq`HysUk0(K1tDJ|3Kt~(8FlwJBd3fHDR^ZMYAM*s@G z-GFg7Nbj^kC_16F;-B+$C)&k?Jz`B3hhNh>B^NFXaK_Lzd($|N$L2If<8nK~YoTc) zBFd6YmmaDR7ePuO&d%g+OVedSPDx{-UA5z!wUmojUKh95cX{2~ry*H9du@S25}X^w zWfS+3j}_ueWIf5lYi9Mi7b{J9 zt`*fbGJTEb=tZt!197iqiiSg+Ueob3b~!`k%<*LZCTb6ds#0P->`x0FQ+Ny9PH|=7 z)CzalkYR{3?ZS|}$+gfmcSLBTtt#7waxvvXlr<|k6UA*F7M{M6ti%j!rT>;Xy(B}4 z++5HTR_QIV|NAbjtKvkbM}^9u@gwB^+($#KE`A;1lsRQ#KT#DjmVg{yVtR3US~iF^ zw8=ejQKhht5?{KVMpdqA65~mz60cqgt^FLmRaN<=yBn9?wEpSqEaL-VgbmyyR{wa_MH44IX)09A+=Gg|vh&FZLTf~%s-Oo*LMGZS+l_IW`1&#NMs8R}gdUGP z3YG9;oO9#;l>zlCb0Xgi(aKg!ier_eLO59m0oCG4e(Dm5@qAKg@i6aBchyidL;u@*i*CA`KB1l=-jAVk>?Ipm ziS*91VBVY>o~BiCn&mMvz3l4wbLPW<=8~)g;J8fTI^?z1)1e96UCgOm*;u}^t?gP> zl1z$Nt*a?Vn}GTd;cdphl26u!uLJM?+T6WJtRYp?(}BEBMabsu8-e_{Jv^oFu+1HA z^)~>L@1 z*lFS<&_5jF|4`R$<>FPOJO`vllmkchDdwB zm$fo$2^oeG&JrfcjVS!!($^tuIZf@*HDwlBuRo`q8pH!#F4NPhA${TPV@Cq#dl{X( zHVC6UvGp=BQa38QSRvohP`9DWpUy&Gs;RGPo4K;#b^#X~U;}o9l;?vqjZi#3@d7Tu zW=Yu*5obILpRFIu#p~%bmYqoPy9PT80hc^Cx&j`?jB7N0C=00RR9Vqv4WzK-5fcEX%# zxABz3m@_(jY{fL&_WjP^JCvvhO%_$S>?k* z9=U^FN8{tIsKzuQ#X1^7lG2Dq67jT>6HED7tyn|WwpY@~zkDeQx_5GyI+?lhQqO%! zK0YBNDO0l9}@QKd~<{uGM9F7Y_*a)pYiVf`@~v-5?%t0-h+j91O4Y&8wd10g=|4Yds6%=fzb# zSm)pS9zuj2dao3nhh>o`O5WtaJNsuc|*(3t=E zg|7oqM`-QOB9VZQZQmj6G{-9L;y>j(&eWjMXHb{BG15Km{M*eJ~rQghVa5vB@19d?yBD6EcKbG(oeMkgRrt zYNs5me2z99`H%gI^p2B7%@S&*U3T1b3e+OX_NFB?$W_XG13cQP61Rln1(&{#3=zNl zqS2wZ*~nh(G^2E|-Q4lAg3OwiiX2FE{V(`M0&o8ZAt`gG>l;U)ueE~POP(9&vj)2d zNol%^Rg#J`vG0-zuYr+eSv(P>)=v_^>k7;+j)Di@q8agXMxaej7}|xegL@<}Tg}gM z-PH{hm}rpqRyfb(fCTdvL?+0rn#r8DqY$RWkS{nwH1zkPbbBHXh z4yLu8@)C^Fh@^8Otj3VmgE`;@Dci)fvD*1fcHG%yvt0N(#0`0w$O^fW;B>n6a>L#8 zzR3^?C!-#aKv(o&SjCiUvAn%0qn-(1vi2D+8e#6cX)r)9X5o92!*glG+eO^dwVO5H z*qdm1(7mC%2$FU10WDF(j10!G1d*VX5#Hg|aekQF*F|T}sT&jfsPHF148fh=6x^g^ z~tyA306!S-hr>7}nj+}?=smt06TR}M_t$}-xi#6}m% zhe`KustjuetuT74jEwHmC=3bjktlDbG6`$bT%%XIv#XkYxv#~89zIMwj48!p z(379ldooMP&eOmJczs>zS{W@>ado}X(=;l{4KRW9_GA|8lb^L z!h0p}NOBOv`7CeqbdB2AbK_~u_%s)nEc zQrykfq4JALA?g97I^p2SF?HptsIKhNCTMUF=4~a@Iv5#98hWR;wqCe@L^|T${AsrF zSaIG~E;0by$&<1Lz;cK=L_o|VZ7)+;P8Yt8WTb=5HzeR_a%qZ8T~^S?=8{?M<#EuQ z0aoe(26-ag$F|ARpm-S8W$C8UJusUmDi=LSnA>mbVL!?7=x|tKigm-9bd|Ar{m!o| ze`t#|B{W-0%q%a3|2)>yA-;P4S<@20to8_wODnJPidw?SdqyG*Q+m)=LI1^XJ5e6R zc0W!cq^pwArQ9eU#8iM>CO4+ow6mAK4%O3Ffj?%|vC#U-BdjRoO%%Gp47VS!3C-wt zPm%l}iQG8bP32PQ702SRQ+ev-9c1#jb^|}eR9u}1`XfV3R1dL-j=-Hp#0I27z!e+g z!I5}&^fe)=)!c@=@O7|G<(HW_5$HKi6_0v^QAxU*Q)AQ-`aOW-1Uc!2}Io-vfp?gD)lBNH>Y=z(V4VadCBFERXb+4x8pR< z-7#x!!3vVt>FMQh^60fIm40?@=~)E);TBm(;#nzWDA`s{Xm(ZVS834?__*?Zil$v0 z(1Ih#?(|AbUx^Ui!he|&P|Nw!*HJ9WY%<@qs2@E&9;pV{hwT!GUsYm9OU86=_ml&u zb)dZgy%}~b{jquM+I_o=+okQw^i&7h@>=~ODWKrKJ*O`bP;vKt_YIeoqa1cJd2xF` z6!nrz&?6MvQ9)^tgfQ{-luN$a= zpFQVqZ~Dga(|CLBI?uSqM0CXCBDz8i1mq?6WAdxZery2lf@khri>QcQb=dh`=ykt~ zx#*g6%z5oMy(#`lCfWEklW&GA7rqYhu=<|oZlansGVW_H4lA`oUJ)JYeCfI^k29oK z9Vg{l&SJgUb>!z3S$B{ajt|M)^!0Mz#<~l*ueGMKI4{|k-@ZK;-R;;!a>?#h-!x9& zE=yC%=x$&T6&9fb3Y{FeoX6*beUSmA2EGJvo-vYvB?qnKH;ECVG9kj3&d)<`-=F9t zNpj4L#0&dI|7sORfmXmZ$S%0>b%eWf61hwju`=obAr4d+!L-Od!3|}-qi?z-1cj%S z^;lmvS<%T-cUE#Cp*D=w)ZQNVV?~Z2nJh_isFq_>ELmS% zk&6T*=k#5s!!JH&IuP^fK5OG==6*65N_I&|O>Z$_v9KMuMrh0PSXYhd+| z-3>y#y=sSVr3|wf$d5&n^}^RNFkx){tg$0W(Y80ZL?~6|@ttc#;j(kHp6P;iGlb5o zDz5TdXP%nQAD%vuPCU>%g%?^UGd>+^Xk+OtQw2@ls{_B8atlq{?V+T7npeC9|2os* zd9ZYr(yutlk!e`U=tt>F-;nIpuwzTc)-ZWX#$VbLYeO(72)d@7LhmSshdldlrnt$f zTIKT6*Ma+6j(9|ks3F?%b!-P|ZMK15A=UAoTBj@>dY$j_;@4H5tH*E$ZZUZMuN&zE zf&V9Bi?$;n4h&qiy7*M3!%e2<`jH3V;Owr_lM2vv^H-S;mGlR6Sfa?al9o8Z5ndu$9l zU4c;3pNSdvR!QnMYJ5m~a!^n!zUGmM{;8_(`z0)i&-p{79loJ12!4{-;(>InLc6G) zR>ijExqhGc!|nYKnGRv?smVY;uEobIZD(IS534IFle^5qch?0+*|SBL)eq^h@>b=@ zhg!wEJG{xG*t!c9JwLG$F;Vm}BFeVC_;myX0h({lp>DiPVZ$yVpfz-)O?!w86qcJhvxQc#)*kbb@e?0%f- z5CFr;e|EllmdOIuR^;bM>~v%Y*1HUMWAklW20Lq>!)VW$Z$gE^8XZfdCnBZg8&b7^ zyFYb!hSf-mp zUrpVF7&6JQT#RkjM|Dy|Y)O-U*8YOnVq{Y?Pw_3CpWpr08oYDgi0irP=8FdZR z<=;`O4aM=T6HEydtHi>Hn9D95<^vdNMWs0IIZu~jp4Ve{1FJuSH$Co&n9mw6H*HYW zPFhTb-3Bw7w;zZtXnY)%IsKG#>qP?xsQUDB=Z-(hbhxhdg8az%O2zr9$4a0byG%bq z9r)ENk&&0Hjv=*AW$IP$W2QtHce-*UhcQB6153sP6_ieVRb zqgUf=idLf|m@$s)K2PQq3shf~&8eQ2dR|UXcf!ktrJ~Q--Db&LmPK5HZ%B((qI$e_ zTU-A`Y>Dy_^Hhivp!Q7&*>Pfr&wDO5@KwIcbXZO&hj64acfyKVQ^=)#mAmfoF0#<< zQMOWV1axUltQ?X|SD%qK-sUVVLao{_&fQx~Bl-S@1j@@^M})QUP$;eG(;jq`pq+`Q z$>uKkZ7uvAl0vG&<&+h?*3g^d6hwO(;hd60ZmTmgCDXxHBAEG=~?Lme^P)==*$_j-v zTC8N5$J=79-D4Kpa3?j4DbuR~Z|#MzBcG8kDdc9zLyx@0hJ>C=8tfDQUE@fb>?$uy zx_IAe^(nl4d#gtkjzsCA>VD~mIf)xh-48?jI?LabLDG=Q@R8VJFD2l*e1UhCWr@Fb z&8mw8raAC`d1~Cwvm|=OA2J=>toF&`2nx?}hd$`{A-bV<8WQ3D>I`u!0Vk)2W>W06 ze_mzcf546hARQJ=slM#&?9$hfJ_bH5kv!P17}KBy0-{cbAqx|Rxjs78%=b=2g2$pv zE&OX(WB5&@-^cnnpVqFfe>atE$RSP-L@)&AM`BA#KxD~~85Vg%L+3vF+~#(JB;6nB zpBm!i-yqZbbEX5MkEAq!v_O~?@^uDEK3S?YJXT43`u&LZa(@(*8{`L0+MhbEOCQn{ zOC>OLF&UuF9Gct}<%{paF>}HYaN8b4UkUDlpY<5rwy03AcO?t{y}OzG=$) zWAg>~|Nceai2lFq$~NA)p4YXb4$-Rs_M# zUuHUlSF$N{RhBB_#n(L1(GlmOs?EYbeE8P`f)fpiBnlJ2OS-}^%+efZ%2s>_4 zsS5Mb*U?3#I`?|1a}0K<90TVF8221SxfR4gWJaw4Qi>K__XO-}t@_<<(|7&)a!!49 z$ZDgi^0xL2!2U+I5nButHjWkfL(>m&4+S^s|6z{zrAQyf{4>MTE!8}q=JJWMYBc)yX zI(RzGj+1 zh%LUA?n?^3p)L;RsW;qgt$EhfE@?=pM-LKTJ6op1QXW9MQ7QocprZA$HpJ6;rGqP~EE%TAs!dwFj zh{Yz(N18aW-+TQ9XLTME)(}zt&q;dqEau?uuAt-s0*Co50Uc!Ya*=Hm*BQb6udK{T8bYD(SMd{1n7QRcR)V2WkoK=ex8 zg>hFp!Er=+m(u@~%2#vC&60ngg&6bhL_uh5fuik{-a(6=!_w@oFBg)^L1@Wr))^!1tDo`+)s7QF=gt2V0rg}Bh|o# zuoOJouRHc28rckJVcGL{7g{nxBe?W+xJTfqz=^CRtm4UxQ8WHPI!UXLTdO{VJxWvT z0e_Qp5;+eqw6py;vbUk?{cLtR4j7diZk~7)4ePFuLeqj=gTt_17^a!>|2-qyi-90q&&&s3mC87 zGkIjN%@33w6(}E)S1Cj4(GCWAjACVEdOM{TzmC%JN;fRB^Z*y<$E1@kYxiaz26d%@ zcWi%(bfUj1GmrGJG9v+G&icN%X^+){4^NRU79*$eYm7TY8rfmsXm~0o@0q+V0(m7l zo}Yb}{qlS;Wj1m}wvOKjD`#X~()`xB9x>b4;hA$pLj!=&mnc1L3CtX`Vl6ag(hH4? zqK)p6zh3w{nn;)ZPm)f!bk>0rC1gNyG)Cc1kxstQ*ne>zRYlG}W7*7Voenu$u1U%q zv=WSR?!Ux)&@YEnk5L(=~`}N9#F_P3O2k$CEQiq=Uw!Ps$MzH(Hc>hn zZ)hlwr3!7EUltiD&aMLqy|~%`B(df4*6|mllfu_C%`HJ>ID3dh@=$Siara0N|8CMr zQA#Oo@y9pq{v1N6xAe3rk5$b;EX5O0Y>}TR2|T(qy&7uLT#r+~%rENa1Yh}eAOr0> zMJ~X#RguZ!+WwW}=o%A`I6e|=D98yUZkH%D{N!PH`|wl5mJ3|Rk4Yz*)w-_Xr-Wnx zO&MzobYL&>1(;nHdqo}p9i$TwMhWb=|Lc|Zb!ADDmnE>(7E^gncRQ}0haO6T7bpp? zpI6m&+cxS&R=oQ6N`h?W&6>o~v*$%9wbsBVkPf{_*n|XW3;XA8ICXyUlf;%wT*pAx z?I+TSMM{pW^%zrI6ByW>Ha`tcn7{?}kTPA&4M+izKg%J7bfTR;5?eIQ(~MC2L~Oyh zpC{_UzB}13X?<#TRu`(83+KpIl5v0S`OT&z80WTXem#}XpU?k+k{~;suU=bD3DrY0 z8Bw0a8#s4FO2DIlfE-Wb55$&BU&jt@=?|onJwz(0d40Q&+&N2aBB=u+$cbF=V=rv; zP=+DN;#&%1ksAA>)_*W4=}gnGrBOLn10|wFH+O27M@kT99#n_8Z1+`o1E9=+A1T$- zrX+aWlm!3Vf2t(-&HME8fMg{QAT~6Cy_g(A1xOazvIh+JHvdFy3Cc@f2WQ^DBc1%q zccc@<6mFC{GAi5Fg5beL6WRArx>Ds;m^w{oFSjI(^KiHOM_-WAuylE8AlqtO!?SJn zv?OnJz~dYTe(lD3Q>ORR->)S2pTAQQ+>>stB`Hh?;WSa1+MKRlVth|*;U*Pa`Z@|9 zSmzI<6Q&J8|Lz}uOgd3n9+pzeHG^Ry_K&I1p&F$!hpG|9SlfCciBdqvO`qps%g-gb zQ{G3QrmTtk4P%ftECMU4QrYNB7R<-LTS@TzXUJSPB>_#^h@m$1M-)42B$0m@Wt_U- z6I+V>($`VyA4w-^=|@E&hc|}KggA6|haX5MXe|=E8$d@v@RWH|>aL^m+RpIRXezC? zp_#e?Q5;fm71Bm)~xW=MU{DqRB zDad~LDJ8+<6o+8szEcvk?(;{hm7K03FFKs?qLD6GbT|JovE_2t@gvfS?tz1=qNro? zwAk6MXg`roLNB7#jUGA4x}*r^4)YDpM6W8ftSw|TRykVLIDkCox8C5|H zUZ8jj_58(-_{eO|B;9~<_@pGz^;%ZxeVP4~lHjxFSLXLhf~zvPvM7ck6DvVU7NM~D zn_jRB^RWLbV#`IY!vekdiFBf8y>4 zvn433&0C5$&hd^u8m_w8Fj~%%rG|XlLED|;6CC^TQ}#>b+&!WsX#PVb0pm)tkx?|; zDVoeE%a)8BdrBEj0M8E$;OZpRU-mkBzO`8rsigq6`eV{b<=*Gc-AB?1$Z@OLhh1GA znm7zHav$}sn$~@nbWhuWYAK;bB2P5rG2AK*{E8T36#~eXlemxVyw3;a%yi9_3MS*( zt{FE;#(%CPXcMl+mQ3tJRA-rzs6=vmfA1(0=4+Q4zDul&Br5dM*OA4lNl}sZk!6uY z{F9`UYN~>B+#b4J)7FWTCFsnX9f-g=YF@Qn zLgMe-G|UM%xbSsUvXbGNV$hGI*HIfL4CnnNN9Xv7bW(KfP^#8DoYr%I8jjmW0oLX| zgF026_H9WFoMQffz{a<=NNxApB&)qJ-XV}Au)26a!_kcU+sw;L@&^;<%4j*R`sAmT z1Th6r!koEOSI?B|5Q$AE?}4zNRh7p&&xS1X1Chy4*JLi=xrX-i0M!1n*U`X_pGWI9 zMYWbS2vf^)m%4_EsBTN0~QWrw!uNV#ERLdZ%S4CpTK zP!TFf1dde^bMqJr;y4d!OGJ$+{LXVBo!zYp5``lEUzT$ zY}^{LbYgTc+4%uLK!~WuOPV6|Yon&S>f^f-- zY6?IWbd{gi$O_8PCB-L0xBS%P_kB@Z`Z{*UYMkS`>N=2OLteJkIQA7SnVPdUO_45Q z)^NP}(E05#T^K|*YwVp)Fd5gmYft0rE+1bPQSV5l>RwynzcINKMvzjaypQ#f5!Y;CBkAYNZMaN2krF+@SMGbIvU^U$w<8i4RNj!7si@ zqQNdNd>xjMuj+d0i@2kiHs@Iz_dE-yXbLFD0pxEB{sVx%0(MGE_>EQe10=aoX4ssT z^910wygd{}T&T2PBiJe#0S+Z&%alOLzRx`sSHftuG0AkYiZ6W~ z%=7jloyHs@V}P-E;3Uc#HqA$RjFsv$08*SYx=SFEuk?YlM$@?HL@$Gbx3GV4rLLykjySfcU3 zd#}*RDf4#jJ`cWWjNbYEoa{-THw1z7W{(;+tIOxP3bYNW^SzRwqPNH2@tJ!**e^aQ z3Cj5T`gtm)2V#N`%~0aFLRndqY`(0V<2lsw7QI!Z?Fk~i>~#?QW+Z)Et?MC_eG&R@ zUo|$bq7{AH$Eb$?m%KM$k|ep$?H<5muh=UhJUqN&@7OXEnOO^}det;$5w-!1BnTKO z^77ghO_IqZlifdLdUlL-Ua!F!G!GZg?u2cCH;YPgJg+8l#S!qW`xd7()YK+|2H@F`TM^p{hRG|1L=Y zM=8tVXsu%qy9`UeCJ8XirL8q?xCl>edvAkTsdt_^^M|9P%$ya=MC^u7{Wn0t_EzWeV_!>XXH#A}542W+qL>hNL(p9`m4#VXN4>;Fw=I`j4oyr@O_muL9ToqVmrS3gUp}H5K69xk6b5y z97eXW9Z>mk>b|FdEaldOT<*sT*SMTM*)3@hyiJUAAwFbkH^0-=6Tl~0%IYmy-Sk|byf?mwF_pD3GzKP3qWfzdTCIGWb0 zl@0KH`{IIzIm5#CGFgqON7zKAR0ghm9cI}cH?PHp+%AB_Ca)%j<1u=Ed1M38jP;%h zd0I|GP!3DQ)rczELtBhnKUMA!bb8JCfEVsKCIU2w>EW+1?qt6^nC{1PM!B+W>V8=NpLY1ZPeYpwn3`n;Ag<(AFK!;<~A84DbwSTJ{)Z zGoTT7b96uM($mnM(<j`t4T#JJMuwpJTcHj-3}!XtpLcz3SGdGCx} zKj)Gd>>gl)WllDFd0)r;-t%Hyl=bw%qMTa#IhTbb=};s^L+jmw2K|yGXzp_Fk|Bse z;`mKwUy=medFASsS*~hxiCHp|{(X47`? z_h_imMu8XtD2*PM(6lPhefp-+Q+x(g&*wELLBv?rms8te>P1&9* z=HoYBx1?kVs?taL7tsVYG0-;&bZw%Z~N0Yub1C%-AUb}LPm~lJ^XaO?4zF`5jAmwF*TlB zv)@b?vY?4Nz~Jk2Fm;~xcS8j@Qh!Yn7&n(Bf!}uHkm%PWL030rc89m~hAJ~$avck) z$$kZ@pQ~8!YCV_LZ$CN;d2445{k5;-B|bCL61B(hEU0|F^V6*Eys1ccY(eW1^8b84 zhg`-_qx|jxea1bZ407Y>iuK$Vzyx#ar}HHqW5X{djAJSz3LyMaX6YgFxz2l#r9E)l;UPVZ#0bKDE9^LK`}Q~v_dg73oyY);eeYa! z#g$ZHloxD~F6YbKIv4h^UG#86Qa^{W92P+lyj*($B!XJ%X*We^BT8W;ZGKmlahuuh zUy}r3Ml<2I2)!>!0;;XaZ4P;L3gS!A)tX{x^q!yA6XG(E5$^(ZZjaBz4N;kQ@^BL7XBcnU%`4tio8uB=*9M)?^mvOP)^5;|g@gwpWm70QrVB4cucFOB4awGv_sk) zD<;|f1h7$m`)pRQS(7i22zsha4irWf%&*pWCXL8jb*F~H^u8ns%Ghq++z!K0nu#V! za2ukv%jRE-K8&7?DDc_U67H)z{X~81(5||#wf&B<-?gtJr70S`AM59RkXm`{9(L;h z^T?WaSQa=b_+lIUS>*eyD$RD62Th!F+T*9r@Malr8B)%6Xv~hOLB& z9cCK4N2Hp#oZK&v2<|WSC|e3QM%)@h&eL^hIxmWDz9tF$Lwh$?#CTxIza|OVySr{m zXLtKO(;Rlg3MKv8rLAN8?7Gf6DU)NnE3bVWZkhY8a?|IkS~e`<`-Y1kTnZ0d6(iEg zTw}K;0m%0XdNFRf)5uT&l>lifNwPcRja34}vYh9wj?TfmY9M_KSXui{m0(5=iC$3R zNhoI6O)O5ebsVA7feeV9{n6{nZtdR`X+4^+NrJMtyItNSa(ue;$FE5Ol0)yeWc~>B zlOqkHrf8@`pA)N2v#xexn6NM7wXegf2|hhm{hamp4~XX_hewP=yLs2GF4+LM($Btt zBnMQ?*Goq?gR6fX7b)*K{wqLpcr1C>Z(-;@;Xm53rRm9CrQ9iT21Isr7<0mp3-;Ai zd_Nj>t6-M9zLR{@1gc&3Z{`ZBVD*|L7&1-HMCz%#yF(`Onk0bJ`^$qAIy>p_@tL(3 zhHGxsGfBsy*J@pk&&ToF*MX^ArJvff72o$E&pb90+{-^_`?6ZXOMW;R&xz27CWLuQ z@}_Bzx|(8}BxzXm0UxAYmGFq_=VzzC=S1=74yOcBOBU=`BYO0L<~)>hB-5k|9q|og z1@Q7%aVpOnU;`HHea8;rQk%C}}dN` z_GAXOIW}ZB)_^$J)pFLH{vd;wIXh+5`|uEvnLI8!oA69Sp-~ zpYdGLdiGFz#ctnS)S&e`3=u4xyJ_d0?)8YTmwe=xB!S71b{^V5f6R_0T`n56Z4z>U zRpM0c^;$d}b#(RXFk|VvcHOYikF&;MgAqqblY7=Vg(Wr`o@TpJ%!j&)WT6N-mTEsq zo0=T2KwVVA=g2|Ak%-4Gt=_iE;69_{ik4;#78 z!np|L(&XGhu;*|+(&*E6`J7`TrG7jYTk0D1dfyaF_oDKOdHQfdFt;XC2_(Xva7cI~ z9(njW#}Q5;Q`PPbS%ls0)2^R)E&RX!Zwm$r_Kl`Tp!+e6{-4RF4QqLYMoN&`!>;97 zj_JC~mup{#o}@@*JOWzn%1~9DuJg#OUF%nU1f}Rc^3Id&)&U%RMSNpC?3HSEX>U(5 zZqC%Gd^h0M84KrlY&%|ouI=PK6u2ez^pA(X-T6&&uCsa@xdw4?2-*o95NQ!1q4D-8 zij-ClDAu^RL)}x$TY?1CL*}XKN3Jz>6S;9)BCMNgPPY(~;YMbv5(WA>zM}c(`*0kS zW`FJLNC#rR9hC||9DaxqSGI6Z*&VhkzxmVbr4OiZ);42sf>1N}jVaT@+SRFSqG|XF zi7-qv-k#IA_PaALy*h8>d290TA6}5V>S^$bwk~XwjSSCJE&b3KK}OW(5n1avx6G8v zY-;cF+vFCD@>AW6qq-Y1oDy>x=t;GA4Qhfi7<z1R>DSqj~ZilCrE9WMwXv`UHX%wDWwS;2xf#>NMlpa`?!%3sfRXnb5(G6ra z_hborGJYCTfB3wZC?yNkVcOw~%m5)>?u*1AdSC+~q(rp!BTl<(Uq?5*j+jZ88b0Z% z%-ux{g*Dw_M6IcE&&kBi^@CZ z3!FD@PvBKJ{73{JZ3!AuG%pfhXxYZ3 z8ULsJx7rv?(=fbm<-#Xg7?n$1s-ZD1nysr}%J3bblFcrhC^jWh(2_)Kd%uXp3%84M zqDbSrGTjZv{zWvinMLa20LIwD>7!F-f9>n|X~g`)mr=P@rn)j=QjbsY+qJ~8Fs7nE zOk-x}KV%7jaAG*5>Y`bW8QcxuQn{=W8AcZ|xeWP^3?sKnYWNC?i0Iyx$M<6Xjfmm> z|I-wbD__bsRvn>@)Xgi|q-|F3tvY?=?h-{-PDQ+a!{<16oJH#$VCyu$9dhMw8~$DK zp8849=Dp+bJmxODs+_mizK+)svloT$zKqJ<%pFmo7UWJ1YL2E9;l7K}=+Hm)_e|8( z2m-eWLYMJ&pMbWKY0lA-N^4`;)JwTqI(5}q$*Rvz7f3|Ws!s04;MY6xr>8o89P!bE z7wGclhbM=_X3r49$Zq*)W^w4%oA`mCYMY>$BvjJg)xXl1RzwwJ9pL@QY$A-$QR+`) z-ubS-m3pPL`E^u&#q0PoVh+47qw={o?fW8<48v6kFW#7(OwTL9L>l3CH)|BDY4Wt# z;hAX8R<@5|$kMa&KJ;Y}RlV<)I^5NVUD(G#|K}V?guUcJ*@o?4i+=%=JN>p!Izt9c zUY%RvI~VSXncPW$goP-K8zz6Lv%S$e>gRG8)7#yxJzl7xB@g>HqVPN=6lK%CiGrf! z0+hb31D5jI*YWi4M$B95S$q;`!(F?4By{gZQ?cLTtf1Bk45jO{Gzfmv9Hw2?FrcX$ z)9^VDl#h{Ow;N}gf%iav!+Tcl(<>xGbd6O6@z9#T*@RV{$+6l&9*$iT`UXunBRLDU zu(x-UVR_KA%h>cTBLS>1In%v5H++UUA&G;~R4(|=K*U_Ey^hK!E=BX9D(7*3?d$mV z=OgBcl$&AgI*a^o2$UnA9Ydc~ML?KvIV?zGIkr>plOyvwbc}t8oVX+>^TdH=*yf6P z!7`95cKmZwoyZB0=jqRBZ0@se{6hi+bTMdxfC#B~v$#0p%E&Ct(r|c^#GS@+#pER%P{k?du?r@pZ(U8A>C6^UV+Y zSf?_CqM&UfFT<8QkC|ft8_XhM3cCcEQO8_D8EKjQo1DH~r+;F$dlT>+0!LZMB zng3)Oy!EaHab}pJhFYFRUq0YwxAF8`Gj!vc7Qxzeo~4y5n08G{+|M?|R7UTBU+R znF-sp5{I!l0M`0-RPJf)65~{k!?mxY%eP#}0{{4|ysZ99P>#O;lv_awH|{VD=kJGd z==4&4XjNRF+$axW5}(eJQD@9gBMsG^8yA5iespuTn{)v48PgN z`pKx=X}iqaAA{p~?dyo^L#GO%(x}Z1l5ej;IT{lL<=*B5JF3G^LAia~zsQL`#j|qO zI!SDQe*~QiXGaek*v0i*U8SqHtVy~j+h!v{5^-3hK_N|M?{y01?4Xik|Ar`dTtlxn z&Rrk?a+K*>)^8@gc(``nym9p}qL3bXQ6+E!Lv}s{-De$oZf#+K7?2PM&ZPG1sGND< z!-hHH+SlP1I2qtJw#v!4x+3vSP|o-df^zH9)UzCbGrTX$-MGxBdYqJ2cC$3oLpVh1 zA!uk3)IF8ckGPN`*%@H|WZgkk=GUe5cTdW7hW1U-v;Um6>Ch!9M-o@+Hk;<6{6$<4 z2ta&C6?*I!{c1j@xRcyU@!T7&s|db=dIa_;l@?`s8I{M~%gQ_W+SgG5S7lR}Ow#c@ zyY=nqH7J+<`=A_A?)?meW!xuW#tre>V*wx!&_A3Lu9cd`qmzXOHxk(~26CevHkVPB zCUvuWIH#u~(y1eVjKbbvvq?jToh;AafNK_sfKJ^|(F@}nFUl~_=cOMt%XpO4dWUa2 z=9VRYb8lq7h(^*wv1tcxWkr0BY@QjFtFGII`P$ckYFwCUgs)EuLyopSzXs*>&x3MV zPT{Qn9MKDC8#UG|u9xfm z>OFh}uo)MwU&p#jdi|8)C}&=N8x@(a3NIoQlbr9q>3XC>*0fhCK7Q?W17#J&l`@RI_s0fo=Y-pVGOKp?i zhZe%!9hrSRx~BH}$sz*DaL!Ff#YJG%DZn3^#AC=IlJm)0-8%?h`;%p;9eslfd7i;u z(+p+L_t2cRjjeFzFml(vX>;Tul?+0Lw4WcviQ3Rkn^5lq zG31Vt%}@ycZyrFg%3WsKid#ZWU0L_}=he3PVyAAp^o!U(VX5C9umc8xLGw{~x?wL= zb?5o6x3u@i#3iddqUJ2e_@(aVx^yoLjJO0 zscbsvqGYPbwW4QDbjS(RuR%GF!-3_ONf+lv^SJqBc{)VL9ttvHRLj4vqZh58>PRQ`E*+l#ezE+F z_oiU}T3J@vEPj+eXhpD!0CUx^Ye}uYFCM(hc-66AndU|8$ui}mOhcSIWlI7Cs5!8^ zdKgf$s=&Car>^qi`R2en}|_b*j?%52V+*S!vl0lXBiJ+n&oqE^S5R0BBgz zU*%({k+mprlKb_%2Pgnj6^JJmIi9Tt|L7G6nnU)bB)yo?G<6Qt+<_0`xQ`FA2%Iu- zrt091xdR4jVe>gEe0-q32yIN`UxIRZdkBMb zV~403V-6Xyq)V<+-ym}S@_&d_yrW96isC^9`)?;l1wog1j%76t(p0ljrzmub(4|Nm zXG5|4V)wY$9qJt;3~jzgj+33jA!VSNAmL4zg%e%|g$&f3yOKfq4Fn30?)vF1A#!i9 zOd^&s?O7n)*7PzLfLh`MCzdN;N8z}p$g<0u&c(}TqV>bpp^(*l3Cc}f^uWu>3yDxU zoDZY0D$MylU|wpMfB24u7JUNs(GXMTfm=1W$)Lv{MFel8Hvaxx9QbxZVIab2ha>2t zH`Ago;c%YI)DLXs`f;L^M{usMQldMtH%PY#fSU8Jq&r(tDxb7){`8MVI5wf^yd;Op zYKkT@9(E*8`o&&A3|{#?H9giy!y-Ke@a zoiEpjXHtxmcQR(_vCdHYI8i&K+$k1y^GuSX9l7QwBiXvbd;j-_@%$s60xqlJE{m`< z%>AG`-~ghN^|h}fjcpR$^s>2TM@bc#zDTujht%_u*Pz@oUu>M#hP1=8or0)To=l6^ zPEmdo%6AaV+pUbKSRvU#`soK8GD9zl%b4j|A3CXH0bNOlR2L2$NLkL+7zgu^g6(8` z^2#*Vt;#Kfb4Q9;%Se?vhr>3fe#xs(#3;%5-iNE5K|-=E>dFa6RSI`4ZOyv7 z_H|^;Ig2TZ3R4^oXu+WjhivMVhEJuK8eni@C+2rz zDXry{#o2tw0*tt^&!FAJ5ZUE~eTYW}m?A1P=6diso_h6+4uJTvx^oRjzcS59_EdrG zl?o|#O}k1KFbQ+C1N#<2Cp|DjkO#}5uO<{=!>$7}CuP-keV;6UCwlrO*S?M*;MUwc0g4=_Irtb)f-?%ma5M0 zeRpyRw+qxv%kZ1cZgY`;IBC<~j!Jk2><3t)ag(~T>!YyqmR(w0`#KymIl!f@54mF+ zk@jRLV2g($cY?f`tEM43RVv45#%*atecr<2@H96M`!d=eML9e?K#Gf;u?}sEm~gP& z$6fBe6?`$fI-eJ=Bci;?@jS>eJ*IhP%RpDUkM1^2KJKyT+j@{RyLyfhcAy#!yNWxP zDC_u#sySA85C@&(z8=dUFB+k22c}>^Ot~Kssv)aiqZg~Y_H{&tHSpxZ+8|0`Waw$~ z*-s+j$78y#yyZI2%Q)u!%UdBHt8kj6=e5iIcZ=7*=Y;_PC-+{#d=Olk>w*jY`X-&wPykVEpmBqCBD6d;14JASTG#l5gkND`8k^aPC^8KhZb z7k3QGVPRS<+i692(3#7o9u6-Rkh!P{$uz{31>O(`=ps3Nm_mW)jRQCr8qY-QGVX{4KtoBu8!v5 zH=V9_laET0?`2}8ejGpc4nmdi0~IU+(LM+a<;vHQwmcELHnt41p{9`RbxhOc zBh4zaN(i&Ap>_XWiC~>=fv$6s>)Mpd3^=np3DQowJo%U$fB*&n7(7v+-fg5aPv|$= z^@$Q}s_b8t76Pi`sR<*_r;8O94nHmhPwcnfuH8{cLU%*%4RGti={J$+l7F7Fy%!1w z;?P56@3MM|5d6O7fk=PV zh4|va0(r);@ilncjUBn8JE7T+|x06${TVdBJk7^9P+Zg_CuUfRITu zwz0uBXW#B9!lAd)wnYijiVTr3jW2Y#LC@Z%{m5H(YIocI99XsQ$o1c{V2msyGi$b1 zMJBwasoT0Hl*N^CA|nT@I(K7p9_9=W{P^0}feDlRxEBy5HH4Fxrj?t7(yVzY3N8D* zDs6B@LOgHxJGc%{bGPK#!yo?dKbgWYi@mRe9kq%=XrKW8mB?lz^^-z?VM$kr4c&y| z&;6uH74Qw50^`iUhD(ZcNK#W7UM4jC0h8+1aVD-}>D4v-3l>c-e zr6Ot_6Xlf^h6e^Rq#VUa8Yi+Ot~&4d2Pqq9OKhzOaB+%_h0`HkDh7V6Y}$|hAzPj| z@&HdqOcH3XcpNk?U;nFKhk#`*+Prz;5NR~*{sIQiR#$RQMTj`@Q!Dvy74GygEZ|y4 zD(IH!unnL8^(Cn~_C--s`XVYeGKj+QGsd*+GB5v^vm*^-Hz@1+`0{+PlPywGZPFn^ zP96iBotebEH}h~3VsN68&;j+4qJ)_}=kD`6D_Fxkh+_~0F=)b-iBE#`(W|ukc;K?l z(LmCwgbi{q@IblpbrhChFrvtw@q16rxS00uk7nh^7;vj0sYqTdqbHX81I+Np-FkQ) zd$75~%Rh`B>55RkCu9|5oC{2cFE2tz!Djbf_{L=E>IVo_KC=xSF`@_){RW!CSIus0W z4@l~T;WW>ieGyj)hp;4{YeY^azUS-6*(2u2kTC+)$zIZCtP{&~49jdJTT%c4O#7T* z$;7~Y#``fK@}n4+myH|0Ev;c=9~1?)5h$0Z>A*~oVSW2%>F?iaw`mgn^p;o{rb({E zKA>j4_I02eewKaj18`5%$Nc3|vI11(8&W$7U`7fvMOSbU%pp=t>tiUI5vUdKz7dX2 zNNSwcGcaawE}q+=M)QdN9pt>Dy-va6yxX#4s-R zBfjqv^9~X&{;g2dsj#{#;}@c;ZbGM@?c7&4+C%a4eXC!=1dsbvl_K4PbFDgi**S?N+U&Lnp z$YGkF|6I2jxAsL*M{3b<%6Wdtx&SuBZ`8E-=IJ4&X)~gJ|20z8zG41}&NG!R2Lzv* zh_LufBR+6K8D&aB%fsA=;x&#;*Ad-l+xG@>#}P%2;Upl9F(Ju|jlTYE#@$u>H1IU< zo*KW~*E3CloF55$*=cS!WG+#Cwl~{S-pU)uK7r}wdBneaP5)6``#K6ZDP$8TzCsf` zsukTZ8u>JyQJhxFlIXzLPxy8|?5IGkD6Ugpn$GyQJ$97LNxD57r7j4C+bQmNff(^; z2O>)Rupsd0^Nq~|-#1(?L`r2wmBmm^S-u&*Sb1*VPM7mWW|fB+yU{f0+_Sge9R!pr zpyt{uT+neDwLAW9=tFPPW^0(;#s$e_hU@_*R?ax;1AeaSUWclnIC3&C?V#}Dj_a$B ziWH6{oL0)fZnoGb`h?MTS(n{$;#4;~VWZ}~>HcY(vp4Jff$ZNw_ncYtM#ZMVLLU=9-KSg|7Px!>S6hDex2X z{n-lo)Mqx1nZ>Q%As_&1E;(5SIZby+*VK3HkJrAAi#icFRV$0W65VeM-dd$tAiseQ zb8OZ4mQ27orXnByuyeETXTe<{7F2B3+{^RZ=|v2D5Oku-=F6OCfW}ZPiCVaAfSZFm z!*VSPvLVnTp<(9$}$7lxG;#Da^ALW<%LB##tkfuwhr z7&F?B+uE`Mge;y^F%woXT>CmoZ6x9S%nv!d`0RnNMZAgs_qQS%R+3jau!mV%9m0UR zL3$ef@W*|G#ux`m=`P5u`|vPWMBcb95y`-eCxa~DF?5}|Xv$m{^_aJN@-o|Y?IU@| zsR=TK+VCMSSBpoxg<&;+VOWt^M|bsehE*CqD%;IP_sJGBV1hz-z%fomz8zyn+STI+osF&U zXY*&IfO-ht)jobWbf~6#$+gWK0V%ev4}469gOvpb-ApGhwd^9msydNOopal=O;8*_ z24PrLQ}nb?X8;fl9d!tw&98B*z_1Ea2xXBa=10>+Ylf+Ls=MQ^BF0>rH+;i6=w|1| zN*6c2_I31??^(mg%n!vSohC{hNIy$9sq^sIWPQ&DHR|h5y*)9Q4q)@8F{;QizyH&@ zrq1sj6^X{dCn{WZTw%^Z0F>1z%;xAbA8;XVmL=)$G5`RQHu4?40-*K${iwJm5ezHg zYBC$nHiC?VVbzaua*VkExiG8(e#jijBRrP_gNX#SWX^>5_oag6j+>UIBF~4!FyI-ornSK@V$e;M->t08ZEl$AE zP1Xw|GGjqd8|pD7Rs37LH@(I_ZoAL}5T1mIUxn{#Bk9K_%0HIIBbc{=lExB}UKTN9 zISjaJ*G6H&&Zj;I9;Iv---g zDu2eXY9E`#s~gE+RVVHaP$d7TQ84$3af_8p`Cy4R7Mj*hiqKIz&DICbKL zMGmQ-fFeciNr%TrKd4i_5{X}W&>ZfST@TGXG)rndQT(VF*J> zVxL<_&{MJudmy-x*`#sUzXgId5rNz9^*Cl1h7~s!{y6N*|Ab+c6jsXr#v@7xW8i!+ z`d<+usE7t|R5dFj7-pSizzeT@9rpL*x@;O_7{XKbD+!-dm4A_`UTiw+%D3^tC=OlU z#oU;xtlv60oCX=xqZ{c+W;<0Ta{X9^4=UPmYsqN!0y@fvJx^AUj}kElkZRkB+wa5b z+aeuZowWzHE0R`L9iIOSCIRRJ{~^OlczpkaQR>w9Y{-R=FLt8dNc_l#8_h}9RYS|< z;o8?x?z7#_6}l49dE~dhBjQ`-f03ygJ@*c7>{(`78c~)XjIN-Y*tFAOU)Tr)hQ}2Y z5t*Fv{e#z}+0eFdJ(|>jDpod-T$-GB?NIkiOnC>x@-`R@VJHv3Z<={jwn(OL|2)$* z_zxLYxglHIPlVOik()~H8Skx#L19$ADL8B_bt$t8ywJV&bpZVnD3Q59Y=77V?b`&Z z0xYq=$W%k_9njxI5m)RWSlg{PLlcN58B8-maRxjH zzuQ`=8|10_P^|oIx+eEI_t{=dtAGpR>f?ppC^KiePyQo@m2=rWi6IV=W5@79EPC&I zc^9X5v+OFq>^wtWk#yI-4x0orw^p3?miJ@qAAAY|ee_kPYJ_%OE5Y5|ikJyc| z->LEcTpVBh_~Cu0-{hwP{wej#UD(g}S)Yj+t(`)GV^Ogxr@h z#_AR~#1Ohv)qaHhK*d~@hfkvV4fimfc>JSe04q1ZqDF?>o)~kGdThyjU&ev_-HMmx z%GdF`iIh0|1P~5uS0|>LZEn_y|0kCE)nnRDm^F4?pyOpM0Uje$?Y_uVQ8*yTse~xBj)4CQPahNP`ec753RFx{`9h=C~G_f^&uZpLE%%xzndl=Pm zfK^rwdop?#nJ!TC+57xfy#Mtaw-3s@&8$1!cvgIgF`Ha+m^Tef0$o53Tw`(V>-c?F zY|}a&hViJm@?a(&$c9Wmo=)#Hq5=RT*G&`@-ywjzAXBohGF352RSaoBdZP-P&ItH2 ze5NnpJ2z0*Z-gAzOec+<(bxOqt=~DI~qV9pC*y=FcUqJqMEZ(r#x0{z3Z9 z=TL$$~-Dh zluAw%8ydr6&iQP4G0-&fSp|_k)%h?F@xwXVYi^0Y$W$LJRV=$kr%91WPVhx&&ac<> zAOcVfN=nE!mx2g#m8w*M&*k|jiSm1KTr+KGkDJ%dc>*vlA9bs%I$ZW%_inhvjg4M2 zLx{S;eEG-#ew}1lQ0u6)}o2kIiIYA%0V& zhU;O5%!iVQgm+b+fFL#Dcc%d4I4-J-O!eE=M$J%B)rysNx4j!EW~LRb^LJUe=1t+% zB}y^=8mO~6@VWctpknZ?rY+|K`i4!q3$#!>c9Vytt$W`ZRyATOmsN+Noa*xqOu+A! zAj$_A%w_0({2F6^6WS>^TC{;mtn}$Rrh6ih*S!uaj@wg~wL^zeaf#n9*(S>#Fm+K4 z=?^m*DHjcKfsWDRvescn{VG#+oz@5y1S-ejK7_E;&WRUDflHp6e^ZACVI-uP$I=Vj zlw(ZBZT_$|QGEGaX$Ebf#Z+}&WD9x88RuxMW+;!GGPSOX%aP^+HQ$@{^AP>eK{89}ytlM~6I_e{H-k%h`1!)sqhB;ETRe2mnyMcl|P_V#^M(Bc4e>tQ8sh6tY{ zFFzxbf03y|zXtHfy{?hl#(j;i6J?U*)?qB6xE^WY2xn_DGX_hI4J5Pqh{|->YVTq~ zmhf(jxaX-!1{ET?Jmh@0>Rk6+`6pSf&v{n*&ob{lydlLO&O)EEv?kyBCC2QyK0G=p zsz;w^1-85hc;U6LgSfWehk5v)suCQHzsb6HOA~vhu zb0K#aob@O1jaFvIf{^1>Gt3 zYBvezAX}jI@Hx3|>ctSrORI7sJZA$e;BD8Yd{6W2`(|_$PFF;Zgj#q58(I! zL;_xT?d#~($2mRu!Jp5$lKhUhL3wPawgF3w-V@m>?hKjL#_k?lz*m{7I6su*B>{}$ zBR1{>2uC}>DFk2(Inupb`HySug?8MA!Oq{S=y$Ez+kd~R9o#X`@&h}-Ek<@^YIGIt zoPNtgVvhU;vrdU5%E^8}zt7p);w3x|aeH{9_)~9O(149JgT!bzX#j|1_#m?9ov*Ha z9qs(w$R`>7`a#wXp3Hrsw-JS0l4k*~8+!b?6&{q8ruJWCs^b1ErXPur`zGDx0DG&` zjFsY9SD*T5{@6+;b|Ki~avYlnZk~iDQ_%gd1=Um=4CF)#vH=&`vP%{I|=l{BRS&K0$@58uqac2;TxwtcOzI+#%Dm(~D%XQa@51*LGg@Hu^%R+|&o1>6P zT%YmGk;B4b9OukmrzbSIb4kd&RCHWrPaPu;pv?PqRJR0m%F?_r&FN3}ZOq8LVY`iLy68Xu zsptCFRdB_DFQgf_gSa!$ZKhoFB2#rPCMq{BfEK@i`A-<8WEJ>~p`%HR?+8a=-i8F( zA{#VH+YpXIS|3MMF6WwFe^TM-v|NMPY2Tm5E-ml!DECfXRP=1KD%VsMZ%8GKG{xvj zoGV`sY5#3Uwy`^ow=cCNp=Gj_nHE;3cwh^e~BR0qRnni9q;kMy#&yJlI=nj@nck>z$_quuDyOj2Wr zjH({|XwKwJNv?51hns2#q^Gez9os&x?=IJvwd(FlzbLl=WI(kiLU7E&cV;$Q5{|C7 z?IVz7m;O$y-rSUB3=Y-|e@Xd~cO^RB+NYp!?d$maffPn9*`+4QRz{&Zp|k&(^{B)7vQTHRDq39-q%NMI!Fh9Oeh7>h@OV zITf(i7&8S~)n6i5yx4uH9oN1NCIC_4b24+A)@H6cb=B!Vm8m{W7ny2Rtr;^pBL9Vv zhE~qNyiz`4<=FXc>zxu94;VpGW;CQI_0pteQabN-(AIG@>e%xbyaqTUgTzg>&mJZC z<#~v2W8R?woxS|#rnvinSN_eXmJ*PQ&C2jIH{Nh2&tGHAHt2v`zP~LTt%M-t%y9m? z*I`5qT+jo`uxp(*wT5n-!|p$jss1y4mr_Yg#y#@3_{H`{i1tNnb=pV8lOa zb!_1~ z9EeFFnye$LsY&!25kdM=ISu#66@w)5v&q}be7!EbyV5gBsn+#PUeFn(2~JV#CPkpufyEK0xZ?&_y_6bA%YqJL+7?W)&HYRHO4+4(S&5` zGw&*V;|=bU+Kne0l2H*&YqHN?l}YHYCW(Jlo>Qmu;{!J8OS0}#P3;Mt6IJ~Z5vjuh zgjWIX>h&QCAdC=ZHKP1t((Ta@ib9YeJz7B887?s6Ddxu%6 zvcE6FwC={K=QL0aKbNWgZ;o+Ppsw3o4&<~&r`#|08q~{C_`Gtpb8dZKPc_k7FXTBbPnXf;8nXl(R&DYbADY&J%Qi;Po zG3NBPJvRqF#p>p6Cy!0?Qiqw6qFv(R+SgHvgwL?rOGlk_u7(NMkxV$jSB*T@dF4I- zBvbug0&&l!Lo`&(Qd>Nzwp#)7FOChdRu$Atb1urH_k3g7k)YS8HzFcS)8i~tKfDvw z?ov&aUTJR_&Q!<|^|tzk`Fgu#Mco!}oL@0BTDQN<*8#D-E1CO|#K~{1ON_aG5LB>& z{D!k_z}xo|uZ^V>=4wAA~mDBOoH_YPlWs%7tX zU6x&j>9b1H0jCBVnNUquQOk=mX?iTCAd6Bm0gg#TglokrN!?Rpq~sKf$$_QvTWM4+ zLshmoW5W+m2Q{a6Vsl}>zWjB*zGe|1W(_ys1{l*VG3NTCcRSTbIwMt-&<;x&Vr)iQ zni((W>s|+OZMz2@rId-wwrY*$*@$?Ttty3LQ$%0x9W?0pi%j*@j~*#j5&-w*{SM>p z!;EQ;%PD2Wk9(9!`dv#`qp%#MQ@3)fp5Yo15s|sUyvCMKxjeL*Se$Bcz%%F7m^{>- zYL8tsefar&9rD=j?lQug@|bp9F<)ZLB{_rocJ$3yNk~~G?Yd4_D-T-6KG(gDG(j;| zwUqRm0%cqs#^aQ!R_!DWfW&OMV!X&y3-QM1$1QJ4b-WV*_q%$7$5uEPtE zsBu`MA*^+i6A}6KEVx>%kU3H%w#ENcSXn-S5B&G@^$g!%dnFrg(UNfyItKo>t@9*QPsFv8l+eZ$K zBHK?g)yHoj6RZ6>ujh05B7=BnN7OeF9EJd3m`TbTrxJ=PC+LE7h@s~|ZP4U>riL&- z#W<>|)E_A)gOO0WUw@jfUwUtN<8@5+>Eyk}n2W+Gmm74HmRO!ecuaz~ zE2{PDUI$kROG@ycnBj#`ZYMGMY%3c;lh@NQoNF-BM`WsI7#kEi<_{wTov@c$g~jnB zLLHDr@8xH07`wCeF3R;DP)n9pc2p&C(8iGwXFfxC9*wUNk^E~!WRAETd7ZDnZ3@oy zJ`&~Hw3A!&mSIk8g*O&ug&3p2C*0Z=-@_)*>CKlIvwicXD(A&B7$P}+Zp#D~&vmbZ z9S&OJ(2rqkV*B%GHwi!QW96X=7@R+CnGAo}K*+)6wCpPXu19;b$f(T}`$#)5>QTN8 z_PK`+OT10*yOud0$pKRrw)9iYAw`#vr=%am`VtYTzC=Vy`}Xoi{W@R&pX-}_95up( zKkn-{3HMhF?u`p$p6_i(<{(koE&pF;uQ6t;?BCRPy+5R(9H_bb`r6kK7Li-$a2c86 zKyADP+Mroy(ItB5&)z?Dk$w7JN|=shajZT-=8%<-ad;?4uK?&UJW2RF3^^-4_+9>3 z@toz-SoF2G=v}yOd75pd(ZHWB`%6TmNDxh4A|k;Z!pQE+eEs)Y{i3PbHmsPhzvqO1 z*)5Z8O( zDUJJlF7mo8VSWfkd^u0s;xdYLI(3PNG%b4ayW5}7*N?CBb@;Aj6=EJVZpZ=w3*j73T!ksL`gbp7GR@K28^v*-+^&_my&qEV}4S z3w*dbBX`pS6ILQ3+-|CrFd6wcjfZ)`TA&$H`sC$!XY>a>wO<%x|dB?eu**P zzNxqrX_21!u|9g&z7BY*WR)I7ZMQ|_84&&i0*F=;3l3gos$LNVWx`NX+q+RU92fXb zH7OanwA4O;!9+JPb5%3qKWWQ&r@_;yHjFiD#}il7pgr;J&g}&NV7y(z#l9F|FA)(p zk*=SjQw>0>EK8vEpsW6;`TFd>%{^#3_zKbZM)O_W-Ql5Q)AJf*CW~Hn^9cVgKvX$g z`#M6~AZd6qF&I~M0Z5exRqP{KBvJOe? z>>G-~A;0E-7g(`-!P9v)gfSy#dW{j+a0@f-=vomGd1p+&7V(#eh+&g+WFO3P-HZIQ zydmmSf+lZQ=Ib-~dG5wmSTIhVh7V2k&=0Hc(m8P4rJuy}o+cPx*f;~Fsd@)AiYU2d#0==t?o_PON*^ z%)*`c|2`V|3T2ROkf>|B+8kVhz*o9*HwM4ni9bEn@z;om27C-CIU;!Hrgow9Qow2r zWIblSXHozlo^G=#x@+6-^XN;A`AuZqG=8ABLEZ--A$1FH;_BA{WTh(HtUuOjEQIF4 zTGK@<>YDZxnNrL4cylVSI9{_Rp?ujmm^7zD!L^i2M3FZo$P8j|t{p{zXv%Q){;s1o zDbrPPMa|PzZo2G;u*(A+g6&|7e@O}=BKkEVBB-nzmdw2y&*O*T_AYTPC@w8hbds)~ zhzYY^)VsrU*ylC2pj6dZ5z|RmxdXSMoSO5 zbjpL4vbx7)j_fbQpJe@J6ION39Ar7@LDNFm4d!0Q_Z&aExp53LyN!vO-+HMX557Rs zQY7V@MR%7N^Np2aeZ5H&_a+3}nJbV@_&@S%Uq{PpOEzKAlbB1xsj*ABW<=aF?OPwR zL0dMMTt23Tu7=~SrL>YyLk1HyvDLFqN4>gKqy{Ri>tSMU=jZl()=AUjNbN4KL=&ym zxE(W>m}vmN+C&2blD93P`DR^|G zn`waf3xr*$A2x4Zw%6Oq1=~pp{mR!d(=c4>xz`0&s}MGIS@4z`6Ga|CIbBY0JVpza z)!D$c{-A~|SXAjV_-r0|Qu>{3`ozu|t8QpnW@Y5b{YfKcJOdsWN<>G(+4s|k1pPMNP;yld~h95IEeV%m@^X%MZPmYhj zv;7AoRZXOWf#P`3WF99S{{oHlL1ka!LS+fV6Ga&<5i_c7zmr8W#<$5ObL`|Gk{5yE z^XCOxihkFA#ZEo9XgSf=jU5df#uNEQw)0J@-57&J~fQt zUt)3mgW2gIBl!mMhCQdStKdWOh`~sV_xH(J$u(_1ENyV9=1@_tab{DjQaj99<>0hk zoJAido6dpX&q~+5ht~ovt)44i zN0u9rjaj81+kx`9K`XjO#a#wO=uu$o!Y zU*-T4-&ZKR;d9%RC;{%fd7421hP(X*E`XZQj+OgOGwzTP_EoYhiwlOe(KVkUr&Ppq zv|zz=7GadI&w7QLGiYz}CZK_gd+BK}Ot^4VNFFMYP#+*Eo&jNr09_^4yT>g1CbxCB zhOG{|ApvTQg%F?>-{KkjxgUk`VKMYH)MXZ^;XUuZu1}qPA#$rq#RRpN<4QzUS;7ki zYVMeDvTgd%%1#&`$)6QyQKTV!acCoG;Pgp+?d$ly-j93UJ7{WP+$4S3n=s>RX$q~W zj$6cz^XYSL){Z<60u+5x{TRlW0UjQZ_4Vlee33CW^Md_YxO;9SvNarm^7N(D1&zD8 zE{T&L09-9yyo*0ZOGj{^%_IN&ara);(%V5dqBa6vEV6m`U2d~}f|{dg1_&uHTcAsU z*4TCC+xOH2IH_{B6x3cD-St@-1=qfgeR3QPZ;X<$N_h)XCo~MxNHq_wqIV42PRZPa zaeet>Wjs-bv~<#oBI3yVjNz%YB^%ZI2?14iuOIG`kG z+C%xr;FEIadllu~YhTA(SSR#ttO>X&@J{@zdP1UrK5WJY&bBhxsp$8u=qtzsdj5G&DZzI(OOI{QvG-P&yRC)FL@>iH_e@#>#)qQhFANI5aPMlG+4T)l6)hGcDM*!qw7;xN^!YK7W&yBcLCsPc&$N2}vDmNu zQr0_{v$*O^u~Nc=NbW&TZ`E2+6UwXyEXz9DG^ zVTTnzFYfN_rzLrTRY~fyAE2&fFxL`DkJGi8J@M;nKSzO`uqcwSa}XcuKBBd0o!Bdw z(J-!KyOG|IwPLC2UOr<}Oq>GtzhhIN2ByQY52Fr|u>#=SdMy!OoULi@yLMk#gq1I8 zc3OFJPt%?U9@WPRaXCfOaj}hYj@$)fP}mv5vhZ06oiwH5ed0!OJI7(|N(UE5RUKm` z0YYKrtW;DK=D~z&YfE!s`%T5{eSPic*ws)vr91SdrdT$Pw{Du+Ry=&F`gS01u_y~X zJk7o#s>Aycn?j%QGd2a6csDtxDJ&hPXkSI5u5fI~XMfG=aUu%KAL`2xU7m)z?uv)Q zA$RgAXHbya#e_6u{Xi3f76@Sg5M*uBlEj9d4_47E8NnZue`ZD$H6<_#opzSjJB+>{ zr6TKH%wH)la=cWEChKcI$7AewIa$+Qw`Wdn`$IFbXYxNj=ULSIdR29%{t^vqk*!hy z>-ckQN^YB#sl2RCHmP~`&Qofodnv1jZt}`yoVz7U)61BgF4Li}qWWPPXRD~;D8~-n zY1}`B@Hpqp51@~wz8AJl19PB;zEaRPrr7|lTyxt9g|ut!pz{_{Q2+f?T}H08FRBo; zZPNGgF0!xv9FsE=Toss>{CaBy5!>Xfi1IQT>yS*U(&Og)9f@RRek>@7e5w72O*wZG zYzl33N~EJ12`Gy2hytDpMbU$cIku17GFCIAz-7tH!QBwZhNXl(d}cbjxi` zts=J{>qgJ(-Gd#O2fWPv)U7kg5Z!(SI$ov2G#=f8kD9@Q(Dd6g|_zBjTDwnX?tNJJh{e&K3Is#AB<(_9pXEkY0l3LCUWc8yf6{MyfP z#tqdvs!yBULicw;-Yl^h%hKv|CCxEvlx2`(CYQ^CF3Ji_-PeD{rubPqvV0yyzc)iR z&9LNxj)n6$w|fM5$V$p52paQI&bSQV&`lq2Ol=blTyGjC}4~EY3iYCP*f)~Wo)@wh7a7Pc&7eK(?1V8MRgx1-bTBa^9w)Mo*M5!#uWz#D7zM5oox-|2 zXt9B_%8q+F@jOPcY6WkXkR@>y)FsXOI(S>M&I90LQ+0Sbng&WdQ`GsG0`DZ|Bd^Bk zVed2Ct2FiKrMqIC?ed?z{(oQukQ*f0o{lNIrevfPlsfRwj{n`y zk>h9BW25}go4VrF`YbK6H5=-PKC8_ticJ1dFIz&x@lb?WM=CDkxsjR$=1y(Y^ z(x8XDBw(hVz^2R+Wh9ag+%jVg_n&F@COajby2eG$(@7Z&);hY$$}~#};J9;*DoznedVB?`sd9$A6~4PVCS_%POV(tW z)N`Ic1p?yMGRN(!tC*&Xt;kGbOV}Y(^J_oH+f!2UZJT3Ci!fh1LGho3W}3zIzK;8) z>B)}DzIjoLPUdqX;@quUR5~#+M=hK9SmX!7KBK@nSOCLCk!+Ju2suUE4sI8zm+ZbR z>UU4I;iBVTo{^_Exr++Kh{hr)Gt%Vg{sVko1m!p+MPk7!38M3hwJfGWzW#psVmkIsVK5gz$-hgX4 zt@(r}FZ0nf2X4dHm>}ko*z6=9LO1j+%vg1hLt3$-Vi56~2~F$vMKD&vA4qGq4?IQ^ z=)48Zsv9l4$hW5|uB_nN&r#7`Q>6yWUeVK#0je9D5AZSB2~mZ{W9xxU0b$fMYurFM7N1HIj!B5c}q#VWD+^`d^0qBSNWlSuoD* zpUSf84sL*lY8>`~6SrQtY7rR0Lb|9YA?WtJ#1*r+ZbD8O4-C8qf^?XoG19pWO_euP zkj0y%ei0v@d7aBSyAQK3ABhc#V!MR#I5%Ns>)Kpq>k>=ivAQXC9jerqxja2GkFcd3 z9Vg!Nl>OIw?dOR1dQ>GFg0ZmCO96_`tg{xhLP376?xQ4V z?wb3i=jBep0XEa_MJH4cpH_$gfFifdkd0Kk<@C7JdYL%MxoW4hI6S$+AYYwbve+%- za_#5HM`^?z2B|lVZrqa^A7-~?L8f&xCBd4-2Crw_)=`ax+Y|4X;`}}h4^t9GJ8Rqp z)SHnr?M!uul%OB0X7E$jeW}8rX)SMPNdnm)D>tjjwnzETCG2S9xvT@>BteSTyh6Sh z)ytbQxCtR3J^$ms{rz8eCUYH)Uws5CK;n7$+MNIqtcm91*HqI~#*cEBUi&%5k@TZ6 z^P?Epp8jsskEgir{dE`3E~~};Sa8LSH!?79 z`>x)1M)TmtbNMgd`h(@{U*5ByelF~H_siOKX%^irvGs5i&Ak%vAf?PZABR^zLvPjG zThBlK$DK*rlut7RP)2#*jkIY_H!Ik<%Voq?4}`zxjO)Vx!+GC ziU}|7*)hbo@h#v~e-YWinO4v1Ep=-B-6g-(i#WW0b3ZUT#c+B*?4KT=D<#HeUe~+5 z%Z#Wwzl8hYkT&mj?GA5VPQj8SKsZeE-Mx0Vw<0vf>Xrbz;XTL2&4Mrf2b~GZfIsg{ zmVO;tlJA9wWlu>-VG1ywFcOOJ8jy))E7yLGU52^145bZxpQP2wtVVKJ0Bj^#vfd?S zAz?O-=56bpr!oa0*C_G1P4DhfQ@f3uh}n6_jW{jCU2#w5M_leEBZtW`H7j`_WjS}K zsMbTh>*A*31!VZfFqRr6HcupVu$3kOHro1BtU`tH{=fMa<~Ys%V`t)qhrW2|%53rl zxv&5_8{3ezEJoObc$ER4JCE0XjuDZ4CnKUwYk1UouZ_K%Zn5u_if=0V{v!A9@6)jF zc6A;b^_uzn69s6DQQ0^QP&?p_jb*#?)N(n+x82$rF%HO++1DwP^{kQj%X=(v@N%J) z-7sl)aYY_~DV8?vyr(H#lh1u>OsPWveF>?>5`=U7+?hnj4|TAB6Clx?ac=08W`|8X-;HI{3`L4(jcjsE!~PyYz+NS&1*r&A2B5ls^ONPoN`I-s-?|18%CjRh_fj~>% zV{zlX85p(!LME#2xoxEqNt2agm>_NRqT~)WKzi!~&eHWV!zL0*H|AGoBor-$F%TCe z>5z^#J@8BM=bgz)9v&Tk>|u{CurEJ1qCEJ~=vTbgr?9y8a}=K9x`C!Bnz+-o8;K{1 z-FvU6&${nf&BWdzkDp?+GN7zFc~{TL(6^Vo?s3NDr+F;L>Qv@M)%d7y8u(>&6hTNZ zc0WY6YT&|Xyuj_k_%7V6Q6!D|@ttk?_YIym#qQgE=uS;)5Qzklyok!(=gy=Z#E+dx z@yE_YV9j*=VXJsAr`RTlz&0fSk*u)hYd?o{c>!Ibz%=2ZDRz|3?~{P5c4(p~Pgfsn zICJtoPIhl9CvT=xxk3*k_K*18$w}|!jD~~H=WW5GmrgcgR+5RFq@O#J&l@x&HauVXxik5Xg9pyN z&%W!*&ykupOjCVN=t7FijcV@P)>4sP)olnTae&$30cI~G58CV##`8w+dy7r_HCu}0esul*cq z-dg6Zbz|rvO^hiH*xjm>4pbLalMKcOjm^inhhS64@UHK2R61#PzeRWI1oGamCm$|7 z2tVI2Z&SyqW1vcwtvPcTg{rPNxMQC-8C=$TmE!n)gG0p7L0Ey3$7+@2U9VaK>nVn|%8PUzo|ab_AfMx?-iJT}GdP1fpDVn-vHSLCk>i3?9B0R89AHvmb~iU2pu@N5OvB)5RNWKQlg8D6U`cpw5n_&IpsGg{}`&k+y4c;*MfPXv>y4OcPE zp`ZQ&Sf7$DB<20UiY~(ISAPx zU=N*820*VM|H8rxN!!|j2l6@u*?i^akey;1f=?Gn8nwN*30nLMB#jWC-i5)}fszLo zvo7s%miZyyuXOuXh9B;a#Icf3T`qE|luwc4gpPd=TuC`dK4r!IXBSB()hINA{lfF~ zu;v*3;5G4mhls=^BI0eSsQ53Vv_#Zcc;i=^3QB^`*^o5WUmmzwq`#kt zW6M~4lZxXM6a!8HfVkv%3S)i)-aK#R0QLN_Ts4@(^R(XcQ z*msO3-zq5?i{<}0nz2vOb&TkOx{B=cK!#yV%#wIticW?9KG+oay zlr&J)$TuSSXGj_$&KE3IirBSbCbGG^?AEgEXY;R#V_%o@LzGPeFzUCh4oa1eT=rBp zLwY_BBWBiP);xxALWQDgNXnK4V8IBuMNbp-Cq&MmXGp#c!Q$;cu8K84g!w&^gYGOA?Vj2etUlGbC!glt_PHo zilK!c>%v>~YAhYocCb5&`h#Lfhy>`^6PYL}v}=&au}x=^LvrPnK9(UdNOjgEe-%7% z?dQ;U1a>gd)J^RW64Q`{LHi?;=7&7pq0~7RyU8{?<0sl2js17q;w|besvKZwEqCUAkwD@965sLpMnRzD?bMhT=_Y~)8Z0>q4SO`q4roI z*DvKCGpE|5E&n!g?E5i!+@FirZ@^4>vr?yGO^Ua>{QLj%IQ z%eoZNF*@w)W$pXR^zP}xbiF@379x)K<$S2~IU5?0;)F|7!@H5njVW%O$T~9qVLusY z+A?a2l*kEq&_>A{D%;& zrfA%>Hp76XZKqL0&?jWk0}(m?yxQsifjG889NV>J@vwgcZ=S5@aqU(D>tev-;po}J znj5Oj&Jc@=1^0Ly-X-_YmG44kxQ1*qrz`=c#J1<*8>uLpwQdM(608DO5q|q)XEHi- zI+4thg91gZ)i!lA`p!Z0Pg(k}e+(YD@^h4_8K438w2;ZCcpsTwQt1szwh-r?ca2pP z*8h<>_B_;OTRxr7rCTm}g_H+Su}qzOw*9v8$)h*hQjH<4=D`>gF8>_KRc@Gv<${rT z^Qb53jW-E{Ob#DsmC)r31uz$t<2YMq5^8LigQf}w(AM%y7@qk=v19aUSpU->g9ons z9KNsGJNr;;X0mkTZ_tmA0-|kV*K&A@A+8Rh%-?&W5#778dhBMeT*tZp3*y-0kHj&? zb|`w}F-;ymmhH56kW`w6W4m4K&dg(aDCb+$!`?e4XnZJ-?BATt)RQNx3yBeYNDblO zhdwabBV=%KeP*m>5OU>*TF$rIKV@NLJoqvzO0hWpehVIGjfUj=>pn;5rTJU^!^Ky% zmlxr(>IaYGJ?^bm*xzNqUttN1YTGf#_C_nPW1{w@C!$ElW19SM$DOYS{D%2X6p)4_P&*dB>$Yq*k1g)<_S(-8t$X~UWTRyM538s` zvk916KJTCsO;1VvY&QR7ABNL=T`KS9c?4N?K0x^&F9)P^bv7>ZvHKI^*n7}#o@JeI zgolXZiZY$Y=*;Bj_y6~aOBR=6^}@X=E_qq$xx4@6|J*@qxbZ>oCh+7@8HsyEM7rm83dj;i{f5JUz>^z!LHS=y~DZW9@W@v#%0svO!>C5Ax! z=9PE?Pq4kD_bGL?>|9bODYq2o4IooLG_EL1w%kr7VvM!xtiwVy9Z(aL>wC*%j|&SJnY*t&*i{Cs3@kcOVp~> zlYKqy4qco2eEBL@qeHc`U=p`BsYk=@jdhP|To{NX3B~qp9@3nOU~XQ?vOhe8U_S(J zDgB0*))YUO$H{$l3DE*ahm62i%H3=|d_>5V?M~6PpChb~;hq&mjm5Y10exfg$iZj^ z?yoE1u1E?O6c>MkIF=mp@iL!^esG?rUbz39pQ=!-AW|N7yWL~`cz(h3BS+rp$!aQ5 z^(N^JO7@F8VmoeAwZFL`w%QcOc=BNmI)N3w;xWj(W2w-a#Qo>aq#@3OaB@(|&KZ@$ zDYD<;>Jsfy6Bz_G58kH*C+51(0RS~AN@-=4mK?DZ&c3|#hB?R1KLVs;WeAMwZxY9B zf^XOSG7O9O2yFHEsXjzq0ydDy+rz`5pWAmr=20I7&HHAM;>{Z+s6s70ql!h4Y{oa` zUFA0J74e>k;=X|N`LmHW6@+t`J#@8Mz z$d#WXn*abvj(c+mVJxqdxz6F zeeL0?c9*URiZw!7n#S(Z){81)42-hU%_2&tE%`4D-!!@M#heeW-G`0xWRY|HTg0((X{+k@V@dNk6Tu@2I0Hr0J;AXiX|7!$0+P&;ogc$5 zOnXpJtlMNO>53ZJK7=EYzF@#}FJ3ztK^F>wIp9l*;CW(Zs0y zp>_4+*9e=1ttwm-ERYDbJ_(ux`hkNGI-cYoTMeElzbGLV$Q5VGSZis-Gw%O23!UB z({ugW&(Vg3ymV@z77VGy6nWMmH^l?Vw>ly3p&m9`a}bRu+IPB_E@k)U#IaiB4T$SN zZGss{r?EbfK5ckb8O~kbM;+*?u=~$bv@1mNG-L-ZL-<()cN&I4u;;}Kj>%Z~dC(ZN z^F}CPT7kAZsmjOCok{%R>#xx2@Y;#67M>wOxw!c177+zrPEgCl%qa<_a_#5f>*#&l z5IFGTeu<0pQdFKVS4UQuT3vWWgP1yCr{IY^S)7Lb`bXlJmr#IcN>N>&v9&Q!?Va!E z7)K*S`KavLyr~olkl~34K`N+A&-PIhK3PUO`qd!uZ8_X_K`xU5L7rbYR_R;vBld&@ zva)Asu?xh75QjtUd!9-9)^(r52!rC2pxrQ*F@6<~ z2P3S#vdlg^l%eMmQjSkGPm0IP3hQ=PFMmQD1DkXyLuLT=iCE5{IOU_&eRY5pHr4t5 zf<~FiK$TXEWWoBw#VUumDzz+7HItt5R^0CICK7$g*lBHzgye{%o>3s*nHO`**VcPD z*O@SMg@1{_9`SdlcpvI&Ce*S@6uT9XogrFQ*>hj_IYhSwPC2noUYIe6Z+c7AVGe1E zSKvQ#D32qw!14GKacm5t?r{QT+eCdkmu0)NHDcs{awyl0+o^B4t23hM`;b`2IgXOZ z={y@GVQWLa{>A-W={UvvMpj?|H9|YwT8(YhoISInXv%kAJ&|I;JuemYoP7pa_|D# z+PS5tzF-MQWIRWKRT4vb7InWS$Nrb2zHDwZA)<%@duYpzrcAKlC~ zA--#Q2hqr;v@J!)e|E0KgUFBtUH3W6Q$ig7kn#I*&vC1czIn^=_@jv|J zP<|cOA05iC@3X#5A4#t#Un7KG9O;wTmxt zqG@RovoHI#&3xV}TVbfikV;QzuU~DyR4Fn69%jf)UQGG+i&hP$*9V6%l4>eQd%gB^ zxKqfB=fFQHXR{Bp$0QCu1t zkRHYNN{}mZ8n@cJF`z6HXoNDb33fnGr`Y9`q%s^*&$f2)wsPXJkcn~lUKklG>w@7o zDV;2@0&-ueqiO~K!i3OrBsY*>G)*kIQgYSGfUtV+quXBlInpfG43&A8$yMfW_HwES zk9WY}xBgEY%C0k{;$(^^%~%=45y1NI#4%Wb%?zoi+ZEG}T$X+IIkch3LS!D2tVS{; z`NhbgSfSnkCP^`@C{1kv`7}Sbi+(#0WfccZQ~fB`_*HTXg>sqa$eY(I0!gH*NMULY z<~!ITj>riS6y{@V#im1wySEvb_<0GPj}w{Y1Ud?^ou3`bhOz-q zG|?F`VyvQ-UipwsKNH8G-ju}}H%(U`i0BL=7aLyIb{4ewF!ZF1tC-aBX($ra5@-HZ z)5P=>jOLALu*}bOuR|;cs6#T>Q_!a(LAEMKnYNdZW@EckRZF220xB|);$dvg4&M;t zr_}TKhEAGu?dRa5WApd|T?xJ;cZh&KH!=BnDd?+|nE5Jwi3uf1p>o6)(7Gt#2t*p5 z+f!bkWpvY6DFRksZJ&CFFH))N+|pznsV)PvNJ=8JBG0!8L4xM!2MRmkmN77!X?@K%h?~ zjs%&U#PfZA^Vt?U|NR8&8mvb}X~c?P%Oya?aOZx%6Cszc{(SA{5U;;u z>=h`^RuASF=uB4+`6>k}KRs-~WU6@BO2fy=>CKYx4dit#yv{NQxR^IG%kj8EvrU6+ zKje(cO~sdU5f?ojfo3Vf0ZLY9q+t<=R>YD^TNlGA6n5!EVYAXMYQ{}>@8&ohiyd#< z_S;0O(X{xoMjqpa+7dw|fSr+YZ`u^ADZef@FQkC(;jvT`$?4k9vHeyX)HXt#_Cl+4 zpKFY_MbA>6>_RW8GYBuV{h{C2bqSHmlMl1WEZk7s=jL%&E{lkL+^j-fvXB=4OR7s- z2SW><{kz?(-Xmdg|7 z4`wUA-$4#+_1w1|l{-5WVh)g-hkU?!$oRTg$7I)jj_tF@9-as3+AM|akU@^8n~AOt zf-xwgO}gwLnd@ENf$=XI^>y4iX|;d(_|5JhMOuBR2@)gv*8Rd0za7P;5HoQCc8uxU zFF#y}sU{`z5_Y^t7Uroy8no_~Lyc2>yS0lqS<~l3F0wk^r+4#Qne9>u%q6t6P&nKF0 z1Sj4vFKI@mq_eOm?z*#?y_U_>m%&5EuxvOmC7*o}4XXJ6o^Y-Tayy`##|n9MXUA$^ z99YWft2EtUPpp+?@_Ny$nm5aL!bp!dgkEPhQIl~DOX*GPx~~(n9wtbJkJ44J(H2#} zZ;zgp95ib@s#sXG`T{lQn?i^aTM%*g;-^i3Kf5{u}+Hk78vGZosR7$O(RG*D(W%W9T?0YcHAxH=`P=B@xFKF?6qhIbX)^oH#jb)xnOqy{##QDHJ zW*xh|l6)7pkr#czDW-m4xZ-^H7oi}HVcQI;aiQsr+qaS}qBD(+5_^r?U z`-?!@4D(V#bEI3wJMR2O)ffdqG3*u9f^cmxan-g7B2y-XZt}{{L8%(>yH7)=K;=vL zW#>6|%U0csnIg~}kjD&`W;t{22BEgi$C!$VcW3iQq-wAsRSB&IsamSyiw9OtbyoQ4 z2SY#pu&4>qk;ydJy8s1baW0|ehFNRWzV`9h&-vCaD&~dqh!1R0p6)`zwQBL9to_L@ z4{qotl+G#PxdjvmM)>r&hK^3l=T_hkzCFfg!H4$R&r$LIpbXu%Rdy3j=0p`CE_57b z!KcTDY0S@#%Q6X$D_Q0m(*fOOA@~zgwQd=j7CzHA3#2Ol8Jp|o?{q&eQcaB~lMO%a zte|tEmN;Ga^lB~<;`Ou)yz!SP3O=`s06U}jHn^)wVv&K7T|VsXQF)8TL-UA0j!K?> z>K3qE+Yl`?16)P`T)=$VxA&2Mo{#yJpM!}F8-}g+>+QPstwJg+l=%onCSM*$8p2l~ z4!dF8ovM#mOj+FXJ$eSI8mFU2P-74bCFzfp9n9gFkPH6@*DU=U!pfv!aV9W63yXX( z`zphEX+ zT1*XMdb$0X*_$FL-{$fI!{O^b2XQBGRM~hqNt}qMiGQ@!4X(1ip*Y>xDhR91EM3~W zR`#w`H>7HG^rEV*dUCO<%>*0qhOoKRw=J&;2RF;KW`aqtA4D~YFAj=bwPL6$SEh!G zw(S!8N%M=ZE4G-V=5Fnx4Dau&r6=89_BPXUyJk(oHbe2#xU9Fao6JHmk8!EHzny;7 zgP4m{@DTi$^5;Bg*M1IE5~i!^j#-LUiXU>sXk4UQN&oq8Of&K`-GRyY1iLXiZRY`Kq{m1=#KdW?pt+2f! zZ8de^f>(Zy*fmu)8l=l9#JP=PW|gq*8@43__bQXj?UA}6c{d?Fc#1cR`8gy&NrP_3 z@*!}_s7V6*1Eq#vXFNq+cVC`rQ%dQQm#m+feWqSSaMEqqei)p0VWgJpX&sBQ>dQEd z?p&=@wKmn9V`sCH*?K!jq=`??%be)b7YZHpoyt#UH3t zg$dPekkyW5J&rL49oUt6kzu^(&pquUMC}D^AZfh6stP;r4 zp`yY`1D4d6ctM#EOVw%XurGp8=NpSb-H%W^21VT$9-e?Yu;u8zesS&R&|WQ7XDCMh zMc~3Vw`3}#h_hfN#DujH@3ya{?|)Z*Cc3BPEe{_c%qs;IJr)Mlsxu zzn=6e^Y2oxniXSJ!c>*?n_ao-k2A})c5tntyiAV^IpYMcxMg`cmteanEszVL9e@64`X=w&_Sn1FmQV9!&~1`sBpJv`hspyvvmyR7 zqal=7LR*-8GvZFw2@&b@JPWXwb4M=SoDsNMd?lFkr>SQ)SEL+RqUV)oOZS5R(^e^KAO(elX0Q1+K=bkLZ8z|9(-mhWdcwWP4Z4plAHf7b;%$-O)4zEl zC3FFytE?0i7WOEfEph4y?Ccn3+f*PaECBk=lbHWsHeau(plY!ktm4B*LDjjeWmU%r zK>{ati-wh#bLsrMFeNpccJY1X-rnUvSDvQ8Q-^}})Yg#(N4F1>DEElXa+OTL{wQS^ zvGwBiB`wg!52kdlU3Bf|z@sP{a=)#N9Gg{4XChI{Ws@JrTX+#{epk`rRZ#*YbQZT} z#>^EBl!29;kEg|7jWRMYT));SQsks+?$_T_E={aNo`ib{+>a-c$EspX%A5j;CB|@A zkA*#kOQbD~Sf6PZ@19{p-eptU{?kWR%?oTY2+Wy--8DlxUWF4%KJ2S?ZKPJV3yIVn z(F+Ao$$atg-^gRS@^c)1qqe0hi%r%`Z8*+pE3KBsvBU!9S*Z(DO1Ra)-wT^tQ_M^Q zOrp#XC!=T+eVlU@+ID23Xa1#MJxTHH2{D@_QD;|^o*U_DNDg5-k;f|uHg-nYJf6UC zo|7c>+oHZ~?c$BSM7PCKR@uAS%M2t|nvHXZ`8|XI*DJ#$x9o^ayU-zd`-$&tJ?x)T zzZhbn^ndWhwVy-2cV<=kgH+io;G^mI;O(db%O-GjY;Bgoh6oasRPeiTy>_v7tSE{r>X9Ma1#7AfsF+0}Yu##IJ682l_hHoB zlL1P*NXSZc7sQW4U3VJLdDC?wugB2AAiyIp4K;1y`V0dEUZH&wI_WTO9iP|BIO(k?0z&~bX#5fFh) zBsHY3+lT-P?~wsKk@NJ2Noy#&9%5E^{brvAVMEqu-luBVW}>|mec@dDIm|$c$GsLW zzSZUe7Mz#PThxQH=`EOQ^KJ=sjYUuphiRaNE!QK_S<8F8&PsI-|$cXz<`lW3)(x2kBq+L|v-j{HeiCC(;98HHs z2808ueEO8e8b78a0;obv*~S#M*L@B<(#5=@Jq$?Z z`^VI3yW-N8gKk-cO?6o%5sCo5fm*HEMCRfrHF=tF;j_IsoqA>|^ohShv|)?ru&hzm zow-auetH%k@vxG-EM6ZgvX?~YCr7n+>!v97>?N~kXzHOUelaIf&SM@CXrI=68U5Nb zET*fC^bGS?ze_`hv5}}+>{*c;|A2hU>Wgu~T)<8;sKxF9KaoZ;d)?=N%Bf4gZt@V( z+R&`9VW9ey8liJ1-vFJzKB%BK)RYYq1^fsSbnLV{)c^!l~P57s}rjJg2R-Usp zN#2QU@r(RuR4qC4N}8Zq4bot$5@SZA3QXydUz&Kj&&Rg?hYw*~jqM3D0dzY|c_D)y z&7`|%g!S;%0u-&NxT9TXwRf5KLoHhUpJ%z_S4tCT5A-fU%9l{+UiUeO=kvlPw?iHp zjGNM#3McV2&t}mW??BAa9pXmbE8j}RkRzV#bl9$yVi)_dYb1b`=cJZlnhdS68wzfq4I@J^( zWb$YgYne35aA-t^KKW8VR-*LusQuU2?zicLz#U|=ax3bxzV>tQ>ZSduO`Hnti0r)Tcs`5E`LsaILD|sZVDnGlZqGt9n?@yQt_MLC@R6r{Djt7~P|P zz`L&pO#;3lNvJztI*3zNXUe>oqNzo;t|V{5@`1Og@$X3d_s$?uDT&S~<^-?3`RPX0F+Gg0&&}k~6)E4%w=GNjWPWPero3F<{zJ|{ zAbG~gM(~*(B-Arur2N-+!ZgK6L#5u(mZF+e-hc`H#k;o6`ynyDNWHgn{wwhIU^#Jy z)DbwQYKcqo3!+|(^+?~+=Z>4p_S7_crmAL`=}4)b|{*TT?7 zgtR4_F5Qf`W#}>@r)03uEXrX@8`{NNr;VDshpcMMV;|3sximl_3C<0p zqK>+NUn|6y$a=uHLe=>Yj>OxolIxwBF03t~?2ZS>S>?5#BU9<+gJW>q%FOZ$Cz6VE zY$L2pWcmuv(FtwM1ma!=2^tP@e9y#FTQio*spSOShp^f2%TkJEzdO!MOyMn1o#M*E zspYTOkYR|k?ZS|}$+gfmw?t^8tty(Db}^wKO6!H3iTs@TxuY&5E3v~`n7<`f7m%SO zu&XDSUY$8|f8QomnID<-NMC9UenhalbYUOKt3QW7rdE-g@8}9yOF#}UFuhnEBOAmT z%4i=cRB7zP*bVGfp(~daiSZ;YzL;&1}>>-xv_7O6UOrArnoTu0xc>u6l@_feK3t(c_Uv zA!9y_Q>Hz>YEZ9ID|B@qt!z0ri21Jk99cU;x*f!LR+Ktu(w97DY|8edCRwxWYHV)2 zT3+SLZh3b^2p3eIN4L0;pE`$PxEy7YKTYfLq3rXz?|%1aFip3Ucc^EG_hacCIq?Qo zBE9n>*f%GdqbOyRq*;VaFTK6LXFm*RE=~&oj`Qd*eO4(Q6B^H6BW~r=#PXGHW7o0_ z$fStmvgpBJ5>W3WyiNI^fZwbuKL_6ZrG9uD8+{_jcY7y_B_W&V4+8mbvwxR-!Zx=* zs~-R)KL&>B`%sH&$Mbr=m0`%+RqywTUfE0Lt+Ecqa@-<8_3D`!5SJ)EJHY-%h_&D5 z#ZF=?hW=p@|A)G6YZq@r=~y5=!o-X7x$hNu4k?2#V0UWBEu!^w@hP_uvit&7w*-haV3)r)$jT)Lx_ee%}XMOFZu?0^nbHV!dfwbWZ?+wz^rvwLSEm#zr(HcGEDx`-o zAjHU;iq)MlPC@7t4a)}c#XERJyQZ7ohoMu(9smFyqh^zOWJ#?B2;y(#O`~PZhHp8` zO199q)=_Tl;(r$?pcSf-5Yyv=ZT`2whQJ2S60TCaR^(H>7kFc*w~*`pBM zBaZ9f)g&ivTCl4=M_EkD`vPv2&F)GAGUWmEGs^md=ojjU`C#};EoIgwssjjsH(^SZ zb2P>g=8P5}TRu*v`M9%8Z(ck$61A;2XJK~b4lN>5*Dk~Ssf8+Jvs7jZOFX)-0r@<~EOG>MVD)g&l zXKy~d97xi2pF_HV_7!fom^Qy4^9^BW$qzky9pi+ZQ9oA%XQY<4fO^Cf5QI}E^}*H$ z*Ugd%Wn#PQ>uK;ruQ5|mez%ud8W};er(Y~g#8Pz-TA`(Rk^vB$IX7}$sYye%Zb}yx z@<0uG7Y@&7Q4UE=ignogB&89JB%*O4CzkfJT(E{LO(z2_`{qUDOz(mLc7wnvmvF&qv z2I)9YyCd%<#^@_3?vR#{%Dn^!$nJtD0Y+qm(f`}{WQ zjmz&{2O+|W-YY@pVHo6zGWeMqTPH?DQ%JiSlMru!d90MM$(?vW*`~Bh0I1CZseKGgiX> z*F9va7&xn}3f!jfsMFZ6@w?G$02O?K_rY$M7814O#wNE+@SPZpb;uBQUVHT}fMm7y zvKce5@)_E6 zvR0wDnaEzuB&BsQ?aXr0oXnaRNe(2s{2q3sBm<3W2kH{xgByD)$7nic~& zT}LAw@&S%ti?z!K@9h+>Ni-)#6Xjj_%_y)d=LBjc5^?)Ss2*7i@Z-wQk;ux@BMmq_ zVvS9V1KuhNl9ehkH7x4@*i;xRbLzOV3CSgAyb9#wR<+ue)|XxS0#Dp>ngAyGm@#ep z$G2c19qW)aL0y{%TU&W|XAiHHuf%G-2ia)a1PE4f+UKk^kE>%oJ{x2^emx~=gNqLB z&9T7aQLs?~H<2{Hd1y$0JXHBuSbH3ml(b&XN1Ot<_9K5}N_g$(Q1jL@W81=%6Aa>G z!Myov8I%=F_^M3?<128(%O3V48X0YRtYq2m!UW?Q4pq~uhW!P`n3ko8`^_-7tWT45 zh_MOSa{vv6y+_m#o4Q&Pk2^pR@+~|NOQ+BwD7hj;E}Njx<$YC<`dVokodr`p#&d`) zjTWZ0neY(|laQoyBCH0V(SzRO1u2?XH?i8eb$VD$vRSVD9O6V?CbB|m5}ZzFC)4a5 z-)8*T8QY(cC)a)saXyLR2MUtSl>?KuG_+E@+G)B{L$#KDtc>dItZ-kOC;&|ok0a~UL+H?WY@)K+d|J%9I%bi_XWVKVVp zao?6UG62)c;-Ue-vX8h#K+Gd;FA`WzSALFoV1msL#N%qR8H$W;nls0y$Silk;r}P^ z&AKH=t}D%YH_R84!C`;_xR@^hpThl4yfIfWGntEHswj!#5?NBURBClSbobxr-`pQ= zL?k1nq{P*a?bKRaRLtgZGuSz2?{ANWH^NFi!XVG2|FUa!9+gkyZoBR0%0DujCn^^` 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

ek(dMopy>E+rLK7$Wa?J>_XreZz^(J@xj{O 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%0DP4<3h0YGtR) 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 Rr%ykA;l~#r-~aPp{|#}sBv}9e literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/DetailSettingsBackground.psd b/Jack/Launcher/RES/Lang/EN/PSD/DetailSettingsBackground.psd new file mode 100644 index 0000000000000000000000000000000000000000..6bceb6fcba8ba4d06b05b29e569f915e8c9e6bc6 GIT binary patch literal 3247144 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%0DhvYsnxoO5+m#qN2h5$;tLERt16 zLiez$RBS96O(FSMK%R9lL@%paCEWbNfsh@oY8A`f7pkiTvrGLr*<_)3TQw?nXEAU? z@V9DVi!R?An#)xS<+q1W8+5vWxnK`6(2(2ZPzkr~+8u)D>|7dd@rX;7_%cZ zMD~}Rlwbo6m`rus&Rr;T!!DShn!l3}8}h+~iN!l@Avj_4RhV(HjFN2F4Fm3P2r~pX zYys5cqa3$kKMc5eHY$B|!;aWOm2B8^HmdZ{T(JjKvioc{;=E9uu_daANqcP2w~g_~ zR;Yxu2OY(>M!96Gl9;h}-~PrqWe?^Gi$1FTW`F2@*+UNtPn@a2Ot%nRvj=n8+G->o zf^+s@k}&p#>V3sQ{j+5%LGwUW@ovesW*Ll#tG0O(&DwI6aQn;BAW%8$p(~QHR;XCf zWl6|Nm2h{lG-#Dd7`^$DWUSSA)yj*Kpa;>m&aDgrV)_b6$U`b&$~I}x!zy9a`f|xw zkEn#ft1kG0_?)DL1?lCfTU6z#Yf^>u$>00TLvn!!lq&&Nu2Hf9=QZ=Z<5kh3XZZ1k z3Jc(tzggIZvXAF^$E;#RxNWy?nd(uMpxa&M`|g%5sO`1iELT0I5`OdAcfMfP7@)%@ zyf}G<>T#7Y`NeM~;I%ek^Z1pjCse}t&EH7CYiz=XajR5Ms)TVH&Pl+lZNmE7SF4@^ zo2>s@0$ybk*53Z0>S@5&{#OEi74gSCq*{yg*Z)TXeg*Fz|FCKu^0(nD3HW8?fAS-$ z^(f!wFD2lYQ2yVnQEdQyUi?A=e$ghpru&=f8Ibq2&n4iMHrej!iI1r^sbq=McYh{< zQEn58QXW@5s}fR*K9PW5unG4MenPbw%ya+0CE(xNgjJ)SRBZv@t@@V){5&W$WCRaAUN0^>h6;i20%sa^#aJoJGC{41O6J61FIp?`k5*VK%h0!ml-b5)E zpOAomVw1fzJ?$mc4wWoz`b)+jC3; z<74D9FMXS8uS%Al_gskt#)mf9qrXYsuCk#Vzj^ds35+u~VcEpjRr^%J#ASyi;D1ML z%)jkTbSlYin_qlL0^@y~Z0BFb>`)z4$;SL;=i3q(r){zwf4Oa!>M+vy%Z~jL7$_6U9#fq`&+%Bx+E*oTY_^Ce&0~{~t3FaiB#$*exm5yZk1b;TtV!vo zRA*HY>62!ye?bBVM(EbXIU^E3P<@JC*bzC4w{DTZdczjE@vpxdmiVFSOJEKA-Cs9u zl)&0%i`=p(@Aizds;^a%8Mo&x+OkdpYpboruC?>?#t%;XTyMTWjVle1&14b`ji% z`o=R?BlW1=o95oTX^*pbf#{e7AJXL5+ZNAx>Jm1D$o}h!8t8LN6d!G5z!dLgY zkn3@@33tcCe|ln9aq&Fc4k|&AVNF7OWx=1H-&+h$ev3#GWLOi3dp7-L`5VO^#2_9v z5O=Sg_ZZ&HQw-){6WY@Yp4weZs`$;I?zM>av=5r3cikAYg=>9MlXR_-+Me}`*I~fe zMU)_(HSqR6zv`(SUOZ{X8hFL8KlTVJj;9yYu_nA-8&*GyF>R`~dc11F-239g>vk4< z87JuQCg-xZHf?xiw--66W6hEGzVXc3*YY=mWxLHp7km)V#HgU zpWR-=#jXLjnv3?{9j|Pc?SC6GO_JS!SG^Jl!XBIK;QnHVZE=GR^$MV~{Vfje*?shM z$$=#eJJZV%!D(x8=pUbb{NblxFKft;CiMz|di(eXAAY^0J{Ou)Hr8d^BKIGD?~8Mk zZoMuvh~cy?3GO_D$$rX~s+qivue@0(vGNAfkl^O}IJ)lnsBmt5+*^0(PfXo+Y%N}0 z{nrQnGH>p|!kWTpi#g}6d(10dmFVra9kIo1zR$GcskN)`opDfKqi>me&*V{q2mNZ& ztj!XG8n&ahmcKZ<83MvX$CeZL_Xgw|2q*WhN&i98g_VITKLQYlN=j74#m|?*J#K5UIq!jGzfVorqbgTL4NQoO8@2gSiA0avqVApbK+)iVyH(#~ zdQe=PRSN3_D(3gI=iHW@up7y>NWe_6{=;53r6^$x;`@7q@u1ZVh&p-DUV+v0*F-F8bBkdRPp(3eHtnVyp5$~RIPFa5eGQ;HU~ zPgHOwL=5QDce*rQ0jf8RbMB^k+X6XwS|;$*4>H+RMk=+md4 zBzF?$&jfG8#l@>Q=SLzpas3^A1fwM9mqHr#{rmRqHy}=xuwQkBBqa{H?$cK+p$%#k#VsD`uBD8k@Yo7O7Bs4=JQ5W^=17I_N8lWA7@|L$oZ1G z;fPJPxo}u*UuW-weX4*L)u(UoVOB}C^Nua@)#cMC3^>rYx^Ihq@tG55ESJ<~*V3%K z;yXv!qp07kbuYa1s{gkguCVuCe1NapJa9Vty)*A0tgYQ?h(K3m#Uj4+^8glpI~`71 z;wjWP7kC$Z3e{gN*f9^^-8+~;IPup7hI#nzGGNs=tsQOq3tRO~E0urR72o39`eJo1 ztqc~|diTd_Uiylwc)e@B#Sn3wG+k*eaxzx-YWRBNe)Z&>)=3AJtiBcB1aq(H7V&(a z-1pM|#Zd7&0Bf6R1v0IAPC%JxEjz7C77zP%ulS}TYuyI}#{(voD;2B0X+3qUXT7)7 zs&Cp`;HO^oO{=JTqZD*ZFy%cKYwq1^uf_lFT66!Wx*GsIDmktHPR9RutTA`5#}52Y z#{>I@(yDJ-GfqeR(p%~6VygY|b|^0X2I3i!H!w{Ra5^Zuzb749_1yuIdn0QtoUkuA zIuGAHM}@;Luy;M{zR$E54moSzS$udNzIzS}*-UoO`Od2;B#S z1=|Ost=9^59K@<`{G9csA!1R77>{)S+G5woBWUwR^9%^MpjcwYr z?a=;M0Ok?}>(Zh_+qUwKox3hUC%`GW&|Y5KRwi%X-X4IwR3UVhJKG8!x-0_f33+t; z4()Hcsa=Qm#{*E8DP*17A(>8H7XsBTceZ!7leO>E{zL%gaz#W}dE54^%X}b~%2|6y z2U(ZS?N3S}c5Ex}N?jF4<&mAbc2#r?L|UPU?A)$hXRgMM%A?wM?b^9>hf@J*tpq9C zx9ymrHPxt+YLh;~FC*||q=Wrx!esmVIF>*U~x0jp!5{(Ul|t5~UHe*|+Pm_|F8$*Bc96vCEbrvO>ZHm@>?n=ZzOx6b zqh^RU1gwE8N+%Z4r9)RQTIV7EmnQMfm0%-9cTZxyemhMo zNsEZ?imooSBl4&Y$%QipNK&>%_imlLb@SHeDAWHbq-x69EwXEmo^JMtY9D8vJ*Z(;wZuU_3m=8ft&c=eiJbqeG+aBmM~kKVmlHxh

L_9AO|bGKcAJ|9G5sD+;$c)v0P_az7|s88tQ+TEza=^K$wHSm-(vqQrgx@L zA{vHOXo^%%jHu5AsdfNT-M#>HcteXygO_g?w}oZ2xyq11rY&v)Q_yMD)1^epw3KK# zU_x8LV3Op-~2rTM`+;88bL6TnNXQlt)?pmoK2f)thR1-+r!SA0B84}-TGlK zZ+ym&7FI<&ckJB34Y|62wZUd!+F(~Va3KH{3)v6{P8MP~e_lQMFGgOo8OcIm0E;u7 z(^6BWdJ0!DDk8@^b;8L{$nY~~!_#EPc$^y>#^jm26idYua%1^LJi1hqGLA3k-w`x=Dkx^xa6Do622iNQ1E0f~0)@`OgLu>mT)Ts<0; zWAbSSI7O;qQWOoOz@<46=BmJm`#Mt}@UM{H1f`KA;ql3FHAzi2)|Y;vbA|-bYKeZp zci0p5hCOcY4g2@)*|Qh8h^yVZckbK;OmK}YKQ!4ei6&4&386{G z;>P`H0dw2DxxO+~1SH-tGsWIC&fumgTz*Q`WVV6$ZvsBz8x>eq8;C8*9?*M|PxbgP zrgZGrHBgD6d5~f#MJD7RD^Gt+*H&s&!;m6GLirB_lc*pJUJV*?q?U{MkQ;C_oSw&4 zMGP9xAEa>6$qX6dsEN^t{Kzy=xmW7H`r7MufLe!---NSk9RHzti2Y}QV@yS?WKex- zg`^unDSZ3t4p~Nr9gyHlab3ww(}4pk5_*fcCaj&II+HcS7yIp)Zhzuy<__51RB zi}&o_vuD@NUAuPfaANIS0#~?)l~!KqX^$GbN$F*S5VvXymF(kn(C}G6q|6EYxH822y&%Q>lR$A*RVT zNsvE~W;!mDPlV&Z_bie@#yH>4Ws*T+mRuqJAe=aDqO3>rYi8nQD^?1pb@We#;(WqM zJkRg`ArZt);QRHqcmIL?`w#FlzaXsqo{Qro4}yyejghC;l&ps4uUv^>xMWGR z*e%TA#9?mYDt!g}2*0bP7HcNT8v_(O)}8{fDV&m?lGdqrPD@AMIJ#!G?@VC(PW6QF zb$YxqB9ly87BuPxI%)KK&c2ZRh7G4X(ppD1IIXM(eJCV`6hJ710oAErAJ?xS5e`wG zidgp`rK6k%JExwjd|=*4qln<}=rXL9mZL*a#Bt3L@=|hqR z)kn2w2&o{VC*r+RM@IaeLq}3urx-UI&JcdvcgkqSjg^!UkVZTVc1jE+)Cp2vfQH^! zGY$S9C^5UA>*r@BuP^m0Z;(8p)(JrgkaiGEgpAvx5c-?_`wkq~e~=IRX&+b#wtai| z?pEbee+5uCZ=Uf_b`EV=m`cDof4TeD8!1Y# z=~VkPPP60@cX9y6*$5AMwPE#;dn851Oc>w%gd!0S{%uIA;md4& zB+NLW`zp)3boh*hIJ{fWE}atpQ^7JzwC!BJjvc_sodGAGJ$Kk@~i6oAi0VsceI; zm_))*T3oR_EW42dI7^mtk0CZMn&Y{1An^0<>=AW3~68n)8+$C2ulFE!Lgzyf~H3#!2;w( z0u7-*(+A8vh|DPD_)Fz-0)&@-+VJJyyv%w(f%ckhu!6Vi z{Hkq=Gimqp1T){VB*}_c5fo1F@6I{F)5Sat<_wLYeEJPpNaPpw^81nvajEcSNC>2% z;At5)EGwEr?oUH7{FI+-G(3wV7L`=4gkVs)loCY*tqtD39T=c}6fL*E@E}MXI(+c3 zJLnH(4<7`P#K(4bMr)8 zu_BH)5Od!Z8%+eYnZQ;?y40af(R-jnSDgl6TBpXLvM}i%IG&{HMo(=GH7yZDUZJLT zi=~s$hC%dE8JL8XtecVP1r$0yIjC13&BvIQ_2QMvCF3&lZ7?Haq=~Yh=CyM~Txvjh zc=0DMHEj6u%dD$aJrigg%QE(k!&ZlT@ND`fwH8{!9Xnuv5kq zgfwPT{q!3FPjd_o^++CrHPsb(ymw36Q2|#HLxqN0b2il_1Mn%;)??Ax7Ts= zf4r5$#&%eo;#QL%;q$T-({I7q+Z*-poimCm2T>=ax@Bbdaovgq75NY!iR+o>f9!4i zt&v0Elr2x2T48ww!LJsd&N9h^0rya(NqA4>TgH%-wM|yl;Oaygu51D{gRq4<9KYDH3Q1 z!YOshrOJqyt7yKcV|@Gl3OFCg8pFPEZ;0ps`ce+f&?ZBC0Tjuw3o!Yv z7={%~fYYst$+*slnTbRXi^i*DLf@}0w1dW@TpU#%+|gtHp7Std!~cPjMp~eRc$=U^ zK15^RbmL!80;GL=VTA_|5k&rQI0QaN!;#cc11oN5H<+mrOR|B3eyyPy$fscKTpC8y6@(M%0kK-O>`w5oCdSLpM^D@ z6hOL^^g(_5*3IzK3a4TLo=SYVZ%QUGdZ9yOE)7@(aC^?WXnDq9TH*dV4aulUeL`=Z zUk=fQo&_>SaXt`aaNx-8@l~pO*O>HF%t;5MZQVi8^~@>QdiDNqEne5=^_Qq)?C%CG zR#5(dbZBAqAz_6D8rFeAm_(K6A_Yu&Q1vN|MB%%q38j3G3=czMK*59(_fAajV1o4^rgRmrC~8l5kXMZE8+8~xEnNil;XFOo=bUf-+q5EbKu~iL-FCv zk)ubC#K-*6`ugOE-VYx+a`-S5X8Pfx1)Lj8u0)v^<|HSg=ggfGSB5#+ipq*v6=cZoznkU0b29@AK)hYM;U^a` z!I%hGT4#$yg&gHarYT;2NFjxbuB(6ldbl!}MN_jd4B%Pg#p2ir#+)0vp>pe8l|+T# zezF4yWGr6bui|cL9IA1Ts3#lO{c}J2{{iE+Tc{!z_y{mK2hx*dLIGw3-yBeIdz{?{ zmqM3I6ZO%vxQ8WNl}m4Ns{wd4fT4DI7|b(9I}t|aq}z@gf3v_+`kS8Uft5rS32+hX zLH^2|7>X>VKO{d$y|N!A3s!iLuqrwVI!BKkJ$|(MSo-);Ad8O0N4?VFp#p^-f6nbo z?Iplql{><=G-T0l4O>#1H`OD^Hj)q5uEp)4A+xGjw9M<&%2Kx^jqnjKib#oN6tg){ zN5Gm(h#`W^4uBQSa^I)aU1#Bp_*|wIFdRg{H($F^FDF?%bzG0b%X?Nk=7pLevB-?k3y8rXj>{?ImG$68c zm1+`M1{5092PP3h=b4!(2^O`6WLQ`UCz%{cygHK9lQP&FX9;W+Ya_l9*Y8JseLPau zIuKGMKqNuQ$YVt=CWeX8BtP|Ut|L`3hs&r*f=u-_zEYR028<>d5+8O+ZF2i-A2!7!VEzxFm(S^We zt^kkkrkHDbIjX|@G6&O7qbNGAg3T|iL#IYxoxF+idkEwWc9@o0Cf;Fws%el7_0)mF zRY%ADu$GSG;Mj-}NE@E(62u4x^e>eu*w7-ZIEhNUsMdGJLy9Hab;`*G-HEdzob>5f zYPM+lT=<-64(JZ4ueyY%fB6ic{aUx*zVvcKZTNfT)z`T`uqGR-fmRRJ#BS>p!(cOp z#3cs45^7y{cubETkWhy9d@<@Gu=%9aH3Yi#h>>VC*bS*SlzNMxp%L4-vEwBXhRL;1 zHKrN05dWHc+k6uWmyrp@;_*0{044c}=<<90{xYcGp+m}h!sl4^@!YZF$4{I%=1&xz zJbs+dLCzgb9XaX`6Js#M10=<;H>ENL>^sxwz8WvzY$PAU6rh3H+O=y|6K6DLZlzyQ zkNmh|neOiu0a>!hNJx6&{DppgF?DT$j&siixj?iPsMVe|lk=R#oQe1r^B0{HpJgVnjmC}Xn!nV+MyVYgI&wG( zz+86>cytIk6hSCOO!jkRKV3^SIG|9bA%9GR3?^8vvG$*72SGvsjRR7#2(4v_pqmsd zdR$2xJN@n~65&2rI}O(1!$BZ={d zJDimQ0^`V9e7RkIC)sdEwB2nDn`<#hv3v+pTm*|55uo%Y!3tltq+kdLw%{d87BLLN zIOP$AGsHh<)x(@rl+86IHm?O(mD&>Y#EcN;M~9i`$@-10T(k>yT>S@jtmW#NZO+ zc(LJ2FB4&jOjXl;kra&@%DV>H5Ljxve3yFK7=$+xHw>*FzAg50$dWZ6$8*FN>Cr4x zSWys_Zy3Q;Z4|0943~CNVh&|1P2=fjmSMZ7sIbB%Q<`5^iVQCYVbUU_0`3gE!``s3 zL_!9^b(rV^w&TbAad#pku>8rQQzuWII0=6IRybaAOlTfEcI5D(BmS_+BFabc0qKi- zcatAIkyb4BfoBRT<2GibT){uq%I!-#y=skLAtdVwsekH-B6rT5?5iblm;j8wwBYlH?Unp&Y9GI{Nt6VK>LG7Mj3xI$KT zZH|PP)~A6++75yF)z%RN5A9bS16KWe76;s3r4%0PAZU+KwF|^{S12BK0 z0FZ#{bpDh(ndUQpGJu#qaw=;?B!pk#c97n>1cEQ|1Eq0S*b#PS88UC%?6!F90d9S? z!L2JrOhL24>!$n|udKBSPb1CQQcgo~cA^*tDRT#WpHNdZtN0fRnYp(Stfr|2gLcSC zg#(viCGrMMm)PMz3~RJoy^C4g+LLvX-MVy*QCmB8wAp(O9NKcmwsmM#*t#Vn+!n3A z$lDpMR(z@>K%D9W!`5w3DvBQ09k@@E6a91lPk<@Nv|T-^V#)mlOuibc`y#|@@Pc)! zS+JIX03)`NleKbdY4e*=_n~5h5h+pouhWQXZhS@oX6{CGxNrZJQ8BV1+)#`IR~i$P zWoCMp3`E>ypEsqGRs^oKHp*inD%Minel;)zqIPM-C&Q`e zv^yDtT6DtIkjA=@MzQ?;a7=RS-aWhVb?nOQ*twlan%|m{_~ACX4TUgAQsvrp@tUwY zjbkca6)pEGa_|xKE5Edmie_se{QMu-NtQV#8Gn!VA;{S0Aq&+vx5(?kr7+@&QhiB` zNm_((1h&gq<>~|@tkY3KItvsS6SmRe9cg~HHiF`#gP8t{?3X(9?7yfjFB23U5U5Kn zTm8SspRnuPRn4AzPVMu{cAt0<;Mb+su36=%cLh{B4oIxPp+l8hx^&S} zRXAwKd^a~;Q3>0xtKl@3)2Xlz)pe+)pd;XP5*6#8 zjO%Ov7DGGnQ^nW&fRTY|llL7WQNpg75n!yNXxV#={tBO049=qrq+|HHf$i+gxXGvw!NTMD!D^U1k@mlC({s+{OQ!0)A=(IFom<> zOzP}8cgCF#q|4}(%AC4vceKti{uX!v`XS2P{`~<~2{GBD4#4k7ZQqgK7Vv#Uco0f( z6>QpoPlvCeYF%B*oPup7(MAgZt&A6kg<*b}`;T+DcNDb|Cc^q0s+x)#hbOG4VG&>v zBT)vqM@-O3iEe3&FwW`YIFgNmGd&o`3dwz6=)3{zAaqEiiEn%prw%y0po0f`v%_&Z zh!8hUGe8NCKB=2kRol1$7rOrv3ciVpb}{GMns0&@mJSs*Dj}?su|G5)+DJP_l*yVv zUK}!r6s`_z7|n>)vY$|o>7B(FEiGDJREX(Vp!S?pRQzKFa0xG&tu4q_najqgqu~V! zVY*^bR?B*6nzG}^PM&n9GDO*_{F(IGGiUtSsOBSm2F&=CP-}1!NTHPEN&X5+^(bJ| z30Rl~dI31;o_Kc}nb>14h_}{C0*n{~HHXI_TIbgnu9ZjvXny5iuUbwofUA3{Y$2pb zJN74EH;#P1C&=(*90kT5apKq>_95jQYbdfs!#&ySP4nC-;^6RYZ3!z%6qO3|bJM2H znre@ZaM5u&)*yXa%;og#!f3>-i&J=PX31%l%;$~MT+zuzF!0A`p5;!g7hZVDzx*Gx z)UVM|BUdq!{y-MQ&y&ok){GG}h#@6n(m*EzFu1)^q92+XHr$O!^L%m8Yz$_-v2~C- z1Qz))sbaJ;90^P@d72$n{u8m4fMtx){MGc(>o;ye_%IL0F3X7;TcXT|W3^B?j*|{g zQOO9ZqSI$U>+HF+XZ^X zgyLBoiJr#DOe#K0Pe(&WY|nt`J}Vg@A}9~&Q@O6TxYctkAFpN$t?`JO`zFPTD^?n@ zG|V^BhI{RatNrn(06=xJ(~fLvv~#JAQlB;okEpDLC;sWFrxWO4BWPGOYjz{2Tp#>R zf=&0l)bwd;)4Fliu2~yEJdqM?bRPwz4x-gTDIf?{!VbEaBt(Cv;Ox0Gz;!Nv zzVIBl3A^gE;dH&Tr%#;$In_0>O*M4KGJuD+6&+3;KA1m{hL|P+R{%F*{Khyf>?{&+ zTemZy@tZSSC~SVCrzN1MDNC+Kl1wdI;g{aFgkYlyP&HG(CfD!`oIFw-)m+~+dL*}; zK_JPH$cw$1oS;*6>73J&F&#N5Y@-4uKXkK#ro z$4?m+mVXp~{K&&Zn{Ij(_vdD;=U-^ZRGR#Vn6JB=E!Yr3bj>!yF&&RgVvVUAh{?8< z0H$utj|`(qM&qbtBOZx;JRE95q|uQ)E>tlGVT``>v;6E(iQ#M>bzxy$^aeOJcP?>) zQiW`z+gyiGlU${#^FHYQL8M?RlF&MFGCmcodgac5)4B8RTn6>kp^iIz>h+>#8L(f)!I1JNn0Eg1$3`GHtfQ zR7-e$!FgjCM&s~Vh9;QB7uwy_;1f=EX>}iq{Mh7YJD%Tj$u>r|E3jH7`rz(|9@bsq zR?vhO*^y4oA`HCVN)%#SSdJ7zgjrLq9*r|xNhu>;4-T9Q5Jlu@$Cxm-jIY^}qP$`V z+>@foeo8Hr4=ZCjgUcf9%8E+HEc537yDFKTX^<5$fou~Yws{*Z+74yM1T#?&$OqXG z(EO<^!2?e`8_pG-KX(?aE}XyM&!>URUnteDh_$nX+}X1LdiK0OQ%JJ3j=-O+MZ_h_ zBn2)U$-zp9Uw<$hNbRR?YJy!r_pJ^btNxC{ojg7uNJHl~*M~_m2f#9E5aQ5U!7=Gy zAW711&*N+$#Z4yt8O%C$F3^$guVN}p|mT{~p8Sf?(SZ6kAlH z(i>GGwa!Z~Sh&zHPNO>d<EikG`3wGHk^P!qU2x~3v;KT^&Ywx2hOeA>ckOtMLqgdg-Iu^`~o;#l?S>>8Ph-O`f9I#rq@Ofkuh?K`BAL42#aN{%#OO`EbypEXV&lNOZ?b6VW` zK6`3YT1@NSDSaEOFZOx;^bWtnlF)bGe)kz}gH+f-BOxV>XJC=IKwf!8BQzl<5{Wv} zq$!;_%M07L?}$NOfZ16tYpU^rGj5@lu}5R9NQj@{(C^cn3vpN^!i-`SGb{o~jlMF> zA-yb2FJ81bEcpQf-wL8_6?y17VhAD#Sble1)F(qsO0n8%^s8Idot*(PD`iTHpv3#d zi@f^_sf!of#i|Q85N#@PDsoU3Xp15)KILcvP8=_QQo<$;ws5czW@6lgUT|-;&+Uz9 z1>#*PO#;HU$3YD7dNXZ+><2(bZ8L=nK7zQVE=@g}s+!b&t<7XI4S&R;GZ>|~KSK|z zXu4RuL;Jc2i8>FieKXCPGzBmBDH}4WU?2MT!+VZ>TSafbC5Ya9n^lqpy5v{){Jt5n z$6HI+Q(S@$Vvj!dC^yuh9Vdu21Tl*-j8Jt)9QM}R>`QhUMbMx>HGE=>|?X=$=t9idl*rv(UOw`|){W^=`q#N`{Ydjo|&@L_vG; zrDTAHQv7GpkN52&aOj5x7OAkaF5f`VPfTrtKuOkp+GYsHcn&7}iCOJG(zXwh;I!!i zi7Rftn+-|C^CHb-9>W(7kyryQNud-bW|d4@<7U6LuGr%4U3(N-JoZTXvUikGgiain zVg&$a&-inN7FriB8cY{2Ub=Mg!i7uv>5>OKK1h)6f)hnKdydj~CY&xZ5_u8HMio18!ly0VKBs<+_PKHRoc+NfhMXwZHnex$J6R#6 z+ZlAZi2Fm~AGwA}H*B~+#Bao0THzmlG0B2-)Bgi2xT0Z2Oi{NQt1lDvfGOIQHaaE= zPekniDmXnU5U6Ov)Po5sa>BG3)A6y-{1$NliNIBa%B-|tJWF9wfkqp&&KW2oXUoI7 z(ha;8n|2~0=KQ=8+s;gtE$-@>D1XlA5hJ+$ z6>Sk#kCjauXt{f>JqhpzyQ>G5Xxn8zA+X>UB)@`p$a@5oV=FxND6X&J5}4$Eb8ZeP zd>tdsYfPUV7Y{`b`A1%O)W~9z1kv>+G6Ik&Nkup=<3Xo(||0X;o31me8AkiICS(w8q@){mDi<}cN`eCf*NOEqtoFI^zC z;tLsA$hr7@4%SGEoi{}!8L^#&cbX&u2R-5s6&^mK;5x8hX4MEMYuHn|dk<%0cI<%p zkQ0%PH>MO{|Fvc{!WHrdr=wXNG1m?QvhG9sStd?ItdiM|KW82(#_`Kl|qO+Z?AC0oPRa*8tSiq_`yev z8cMKYI$eVpo_w23zyH4Mij7egEyB<}bZK_4UfO}DQ(nWgCs-#Qkfdmou|JRpxsmPL z88c_P@9HvVN32(^LOLb9uq;K4pbFVCM6p`6I;?5Hu!^2piBN42@r9Ap@4cCFA~jK6 zvnd|D%tkW&*{o3r3$F`+<}QazB}CYjOP8-);YWWty5cVvg5G6*>vEo~SerZvi4>V6 z*v_7d&qSvJv$o6$@}fTh>pWV7W(;y9MJ$kt>;svDuttY!ylXdN7PMpQ-)}>d!ArMc z{aWNJ_=Z)ng-9QjGB#?ZDRIV0_S+1#;app6p!LxGw?rBF5R%dIuUm)}e%_d5XcS(l zkiGDndR2`g#E32bntwHoQ=5AmvAXF%%Wrw(v)^+K=kL=H!SL`y)<{DTpMLt8n!b!1 znM}?XLHrQl;D_A9iDK1GYy*K&$CDAO7`B+NL+jKhOweGg6wwzUQ8FU^mz$O1KAXxk zN}{nsMo$g{72_zi&3?@-325?B{Uyk#`PPWhCLPYnM0E^@hw`H6c}$CZfs`0ujEFFI zx$p{LUA}Vls=t!DbTz(Gcv*1qJI+d3xR5;$3E?mJ^Ikk30XZhx;*+W4z?D^ZCUe%2 zYp{<%Rt)=cdzsJdLb}oh3BS1*jd;WQHFVJ{{qldeGiQ*(irE!R%)Vts)nr{WA#KWL zEvj2|U0v05kqQ~BeA(PLEot(3BQB-+NSEXJcS}V7V10tfzfnR+y~53^y0?rg8-IJV zt_r6yM$6EZk9xPCe*5^tk67>ZC`aY2ONb?d@vcC-NHk4Z`k;tkmU8@#SzOTrRi@Hdn7)@mDjKuU-bT za5Z)1s^h;zDr1)@bQdnU3pCn_GPK9PQa4~9$XAdLn8z_RtP{sh5YCX$>O-{;lO7Qt zd1L@?r?ji>_u66UjZ8x6JJ#UF;$YL_r2XPs{f-Tp)24nSEm$6cVMEFXu}P(OuilKt zbi)L9KxuT@EJ#DtvPka7`+$8YZx?gNG_Vm@Z@AY2A(j0d#~^+i|E8$nZ(eSQUicC> z1x7E$4Y~7?U-2G2>>qhdNs-W!M1^Aq%&2qnn_YSU=ybH z_ zbs=XYN`!eND`#n!8Mr{|d$A4^Pa@}4wFSQU7fpU4+4r+gxI-1W;+=Qiep`q^HC})1 zH7-)sRda;Z%fA7z-!ufXmtJbv5K#P!!1iMCOI-W?5?6G-)bLLVHoE3ST$Fc*kdzn< zUsSB2h;&S!nHa9~8|ujX_LoA2zTx-aj)E%w#Xk_q?g7oaE=~ow;tyz(FNw~R z0zvHZ<*UTn)oa(Pt~v1Hhj1lz^-2tWIZ7IZ?HUmW86n)xmYCG9Zu;z*YE9LcyD3K= z<9}4+K?t(;qg$bU?B(32=GT7Po$z~FXD~yc(wfZ0NNrl}On&61KrX+XI3E8Zi~Hb; zWJfW@&RvKyrk4rp;IwO_vg`NFzisywbMxfu;nfs37XPmHZ+|DW8UoZy4PSiW1^;68 z3!Y1*OLP}FA|gM$_>`gb*pnjn&uStKTJl-Rvh$`{;tVZjnyuQjH-STEmzhCxLKkA6 z@I+|+H>AaBQV(Z-r$vjtqJ#kBzz9ikA$2P(O+ya-irNYBkmf$xtlO zqV{pJ50YrghNO*?1puYQs2B^xSRrM}kczL=zI^4{m1|e8U9GyNAFujr7lG??HS8mQ z3EE*@0C9OPrhXNmb*L4~pDH399@CimxNNGXQ5`xUAwS3AK?tG*j=Q8tacpp%B5LKb zWisqQ4l65YyQa^WI(5oK1dZf6i9xLWLd+nbI(5`tfUR1zG){PvU8(TV2POq_Co%a? zG|rU|J{IA1vIX>f^OWhv{kA}zZO%y0%35yQ8?`vMLISu|q!*=II#RxGJYRxFVOQ8I>Ul42%b&grq6!B4NPy9h{t71(@9e>7TtVR{jM zq@^tPXJ7m(350%a5!sJki|iLRmy-T?SV@2a$M0q0fk!bMu9HxB%|(*3g#b@1I2x{) z>}S#9uGYCi0P)Tn?}QTpbS-~13+bSe@u&P{{`AEx5*6hBe0(m@gJn-Mbpa#|rcWNn zouxAt@?WJXR(^jmBBBlnBKP{Ozk&;HT(_S2^U5UaEo7Y-at5o>vAs=Fp&Bz{6gf{; z08(C$uDb1;l-G(X)wIcHjS66Z^jPmA`n|=qrUJ;ndK*+vRDv`|PJ7`+7&-Fab71l; zZ}GFyGyd6t%}rLf=xP7#t0X*Syr-XGbV;dF4E_EU*aaEyZJYsOfsLC;*OlgEo&d;u zKO|kq1!7Y|El`mQBXNix{Lm@zfyEn{Es|$HGeHtb*;LpNH_tL0x5MB zw8FLMYSoo8)vAj$Vx&ma4k9qo5YG{k@foK<8b*R*kqc2yT*M5>{Glh!b4A<7nI(OQ3b7Yp|*87A8>wR=} z-H}XbdX0NDe;@xQBbfXP#Le@Ho9EoK@iXD+=&AhE;i>Sne=7SlebqA=&Aj}R4?d-t z7oqf$Jlm2nj01jP91y=$ixzF#wCxB=qJSvx<>iCLCKO3rkzpXQPfZ7LG|}>Ni=hyz zN07ewy8f3n7q;j0P;N6V@Rn`qZ9BI4oo-j*ZfM^=h#xU@2o>m9PEz1W%6-A0j(JJUNY3qfbeoB9mURbI-Ei)A<8BN-e zONbx74O0f;eZ6|4U8oZtu0EJKB&1IYlMETAt%H-F7t#5q(Um-u!LJOf-P*dA>F~0U z>g7e+zU_wXI};huIw@2@-VYseAXOv>6oI5hDo3iLlZ`Ki%PHvFm4eF_G$0azlCP>& zT~%%G`svEGLj708l_!`omuQLo#hi3`dS_Is_+0kvdB_8gmrQ69=YF`Rc_rXEtjmf27Zog!3ssX-^$qxkY@nXL{i=uaq}V2ygq%H8EYbf z!>~mQGF}r((uY43O59tg3!wi1y`!Q1t!OwT&OKlJ969dS!1VMp0w{j+CV+X|-ZX-= zxv_rZiKjFgkzyf~u7?xE;m@Yve!%Gm=y@|VCcz|nE=jN^=YbNkE$bOz4P-omY1Zt@ zin;ig=jW`0TFUv471@=XxuPKXbt!DnkOj6BGPiQuqaD!>1rtq_n4LRV$ly_yr=$LO zA=ysJPIN)D#&b2AEY+qEW@kV-V#rr#5|9e2614Kya#pNJhF%=K`bwbvO7z3{VtgJ~ zhiOjd04kiWbw&)5@~0uCN>r8!C4;Vg5AEHDGPpx9fzu{&awb`X6F4!%st~)I!PqgO z<2azCD&ghjj&(%9Hf`YI;KWU=AAeY%ruUt2~>_e_uR8!glJRdMSeioQA1!(8QQjVVTr~U+W8%`4&?jDOC@Jt2HBqWecxpc7_%a^R zq%!GZAW*`nhB`5HxHhzo_Y(^lRwPB=t~GR>aw&5)^(hTs9xCBo&Liqh39?pjvF0i+xe z74mU)33%ldSIULgN)u8cdI6}_5cFV;@-;Fb6|Rg7D8R(c$*gitm5>3G(=Iya;t!U} zc%y9*m~QX_Z~i4zA^{6`HrzF#;xne}X2l7dCBj34f2MC=?#1aUkplB)i!ZPUQkXvd z@crAUOK<%d_2`W^fa>?ZGvW<ONWSSpH6(2iFK|gr{&g|qI zJYNrO;lg>kB)Gsu6(_VJn1ZWH!yT%s9pDt?fe4&HOq9Y^rLI*us9%A4D*gf(UCK&} zzw8)yF)BHqxuE$!5tTZ1#xscY$DhS*Pj%8!KczkJ+0K$gm=5idiW6jG~m+*#WO}L8sFMR%Mq2vGX? zQ(R6>6-`o+B&(zK4Ja>{(l-*6Bp_K&E0TwOiF3Z_vBn+zvNY_@uL`SkkOz+4IpsU{ zvifaUFSVa0?2h&XBnZZ_oL!(WaCX5T<9x!&;~3Gf$E11M(dum0d#Qj|`w}m?S30Z8 z2%x;713-CSod&BopRUSVy^8p+;aa#FLC#H`5HpXYV$ej@LU=biK`1flca*5W`4+k- zYn~21B1a8Tw1=*inedj)+O>kBuJb7fvv`|kiH&QrXzeVHrUCu>k?_9ig!+Josl^w~ zFfW;Qj#TtxsSXq+=?&ryFFY?&N3whRDbm~%Pd@G+t4(@)l)y1e1j~cz2OfOTKahIx zA@^YX&~L0LSs*3ttdj289)DbM^GN(~cqsEAaKsPz z`wJhq@BRlKy#Imw^AAK1HWUe$?H#U=7zCL}q2*DBWL$!;PF8e-_As$U&hOB6PhXq*e>-bUBz85D-ysXd&5%)k>M3UrZl zt_mBD_82DV(`t&O6a-#V^wvaLg#*N-uY7fsci<7lo)4Fg$a3lGJkW^gRaKQ<@0ehC zSFTiDNnO5DjUKCx7OxWnV1GuPk@N-*?P)9(4m^C2v_`-n-eEaIWY8>w^Fc@q3l?CS zpnLsxI-@5ea+*7FLQ7MpE}f}4>V=x=mUD92`|rGcD>;pxm3m_o?nQc4k+-KI1y4TV zAFpkg5GfBm_~1hT5#Jx~OW%L*{qcR_et%#7{_xC8n&|=w25C9UOcKW_A)ap$wvbw$vw$29?mzefD)`(J@`S$;uHW*Yf#TK%}b4WT`w+69LH8 zs#x^Z@AAt`zz6CB`iDW_!>p!&z#a% zU-}tD8udU#TK9-3V?oi_bjBu&vCwFEG&pcMSKV0@eyjU7jz!d=psdMicOcW)0!k>S zJlOH*IB!ZR;VgG_z|QADhiGv;QysN9?lguIrVzp);A+qWB6XQGmAVS?s;(jcC?2$; zG4T=S^99v0KgEC%LDN!I^r?l^e7#@wR~ZFftwkSe^HhV`^q5s}ni{EHXNGMkZ+0;>%{Ft47=z ztnTK|;g2`J@tP?)j2DOtp#dCEkg4EXkA#Q)gP8|_!{1+Y-@W(pe$PGk`n&x-(cPEs z3D5q?qJrL2B7wwfsRZx7Zzu5^Tld+TsYB=FcE)}jq8dC@%_n=iLBsBeQ&d#giX~|S zx`hG?hDNR70;iQ|4s^y%2kVod2zxl>#IQOdCZfZRv!q^0%3KXP2oP`yB}vL%rVL!m zs+ECU`KnYkfk7<9!lj50)pj8h#riow!m8c1G=E++Ibzla%SO&Y@Rn6YNYK(q6+HvVOx*~%lHGMkW=6HzLNOmsCSFV!Yu>-Uiajl7FtEScb z`A@gfzS#JHs$oD_egX)UasP1ikb59~|9$tldo%akea}7lyTe`X?$lj(`@2$i>$7|A z{#}xz5I=33k7htgmr0U>7&91WZr2XR)vX(vO&=4d(QJ$to2sT_F4@yk6c!*+VxfT$ zt-&`!4J#P8mTprS--$^;o=DH?EA8UZo)ARU@2uCY$mdVF6M zQOymJIGcoe4z=y9_bA%d60F|>XSxr%{;s6^46I}qWwz3081*!&3Wus5Iv;Lj8DH(*u ztFKbV>H0}j2r}fUC!TneLl}<)(o~uxcgo zmnGo=A~qVZR-esrIm3f9X*dt}I*2dlr8%@4j>IIZtW8V>hj^7LxWs1_40olLLW9oG zTEw^tdYezhc?S}y*j-kLI1&}mROPcqw&H3BZsBUq$~n~|vI?RehbTeu4Cm=q&g=M8 zEgDJ$HL)z6!7rxmKXAYT#c#iZa;_c)C#1<|H4JOoG)CP7%BZ13v8pO#ebto)g;w7R zhz2;g4-hm1v(X<~=lJ3a&r5@O@~J1DcrQ`H;jiwz zQ}1{9U#0Hkhv-iKtA~>+!g!TxUNhlN$_OWI>1@Gt(sU_+QIc#W@$dyn_SR<`Zz?!(t}B0vV=3$@3?x)K8{?^SUxa z{-O_+epYPrZrrRGBu_nKdW^^~+A~V{p53(ebR|M%-5P9o1H|?>9U~VK-7z@1juGrNZH@^Pr?|)Cf*zkoH(8i!v%3O~<>M0-v#EB}0BRrzJ ztMAPGDgon;U&VK%1WWpk+kf>t`gsM)?^Q^2CdTI1A7VuX5Cms9ue>3egDO%$gnb|Q z4Wy6J(gO(MSaQrohoo16$Qll9DsNqvZWy^?TwTd5aB3>F<$^7N)8^tv&VRiZhnhZc7+LmESxh3Rg81ECSH=eIJ=3= zBGV}}i!P*jb7)p0q<=}vH1PlQ+N;0+T~bR3657HifP)Zu_(74Yd+)oCN=}5_NsRo8 zh=}ft@5tPK$L)7qy*+!!?YG}?$5YB%Mt75=?yO*Z{{!%#mVk#c7a~i7N56i_C=Elf zIzw!5YC*oAt??NVBBO_KUB9*t9ic6xw}rCQ5x*<7oA`*xThW2ombzh=IhLlxdK~sA z9I1;Vedc~k>UvCsP^GOO^eWp48V)p+ydpk=i}+l1g|ncK^%h zcE?BlmzmptdHe05;p0ZL=spOKH{W{8HV-g(7VqT%l1z$HQ;_-l^|yqj8&U`ld>vY^ zLU>R}v=;Gt>*3el2po13k$^xT+z#w1%16m9q{CR09d|()$7eRtyD&sE}Xd**Y z_)~SY69jYC5o|cD+S!Zlw(CxU0)dN3=4wtG$(UUe6w{_acGa5?DKAIclJtl@%IZ0t zImb`vJpN2fyc&LA|F^#pz54a9kxJB#OCj-e9QWRT@4a4yTnOCx|1tHZ(UP6jm0&7U z17dI+m%DA3t5)@L*Xq^1x_@-HG9_h70%VLCOko*}&^+b*<`?sLw$prH(tZv z`et+{w?<4c`Q7#+*#@pe*a?2}5Hb~wj8PNv{qOxf9m%(#S^gdRb8z@@X#52g4jc)2 z3?Z_hnuBg!8$n`$FN2tS7z+WhSOzK>o(3sk;OtL7^USXhgZ1#kV1Q9I9w36`_i!NZ z_#m(@-oTYLJ=ad$cF&0u(XWrtfxz_y zdu*9v@q#3H_n56 z8bsB9?|Y=G(1x79rLoxm_Fv(M{|a^Je?o2yoCi^hmo7$H3d%;S33lE^drshrrK$n$ z3W#@>Xy0d^{&#>@k3>cM50R;$kNn<;!HQ6#LY@M~y?-3Nj+^d#&-mVV+(!>0I)mfK z$0zoVA38BUzJKBqPvbPGYMe(EpFh~4NADwAXd@{!P~udH_9bU-58Tx{k-kxX4$2pU z;g}Zr{1^W83n=3MiRKTe6{OE%U{mBlANY06>u@9+KNp?}(o9tR!8 zx*_5DNR{rw|!82eyN=w*Pv+Q(nTaYUUuip!fv z2!`#yafJ9q@LoUv6?mHt3OFSz09_E5|M)R<=TWMfoLR!~u1`khFV-g(&y7VJ&g6X9O{dV*n^x#l6#y@@+xZMca((WkCA$;@wNKdqK zIdVdO`OmO)?eiEUrgMN)54j4Z8_Xd-%B6U)SnoI67_?yurGJn|5@ zb;7i$+YqCO5Bb0mN>2ND3;XXmgj&6S&*a3L$FJXg_^!L}+Q0kI@$ub{A^g)GJaW$x zsZQaK_}fVBrS(7{shUmFwkzE?EPDjf^ZBV1K$_}GT{IY zjj!*c`9q!9e;YDUR3MPHqDF9vWvRP>-34ks*czw7S1@49>MuG{Xu^DZ32U3X7TfAq{* zOoYtQwtm8{H~}gOBy12d1)302F3L1KMxa74>pP`u(M^D?#e%Fqj&`S_D$r^QVnA*s z??2SQ@!!7dz(zEc0>8WW4~OCEp}EjQ7{sQ{FF>smoWKpJv>$a5dyoJRau7m}JQE=! z9KtmC6a4lj9Lx9!r6gSWC?8Qv0d#d8k6_A&05=hWC2@r27T->3=!bOsUxhL_`G=1{ zW5==tvgv(wN)Ub}5;V}(y#l)S#pgavy*9qG1u+9@sP0xBoPaE%sY5kLCU69^v**s8 zhP?FTzr*#9j^GcX+y8qX{xI4HD$P;v@LsfU_Z>zC8sBsCiQ^|u9KUw=_^!#F6Z{z8 zbt_KcPW*C&y1DV}WZ}_>sHHZF&f3>8KQZ2E$G`1#%wK zrcGMHbK@0|CQERYq$K2^{qJI1MDzwoctc7?Bllx!9IoRC_FsdHgfw&=Y3MrA&>PV9 z_O8Eydw!7fqX&R!BmO^+vQcyZ<1rEu4g$phwBi2sBj65^iw>HI33x(M5Q+WRM~h7o z`VXfIEN-FZ8cWc=K`H2K7%W6ZhJFDf3Uv?UL!pv<0elBYs2;3Bf$Ny?HlUF!F$H9x zcs!z@;17Zf`&*B}nffVYAT)85fj;!%8;<~007n2^1Xwgd?Va3x6Fq?OorjM7{LaI7 z-FfH#jnE_g!vz_sdKs+jA(nh9>=_1ZK|WAX*uo4h{QDb-JvN>Gd*U}p9-nFzfT@u~ zAEBR4QA{^RjG<554tD_6U}(|U)&chKmVd+@eD&2mbP7m72bxjj_XZb1#$gynPza_S z!<%qAPWEn%sxQ^wn^B0z`#+h!fiaHcHhKgo1@r?+>rH4%C=s~%k?;yA1YQGCr=Y(& z{=r8n@58S34S+RV{Qvsbz(M32j<`Pz+EUQrNF|a9(-cs_5p)YyVRURDGeE^c0G~zL z2MT)f$;W>kK}Y!|k?3OpK_5Z+1&cw6XZ*g&dnfPtb%0UAp~sJ-=u+OnWyftlcIUD2 zok#HBcaD$k-HF&wm#HKA^!+MCAIS&h7vvJ6Z$}e=Vf%nyBJbQK7!>d=w-;Z=*ch=( zaNPgdm&hqch!o-fZxO3R+$-IBw5YVm=({w}%`0Y3i{0^a0K-MGI@jEvW8w=P(k_C8M z+DyR2Wg8V4>UOC}mmXaKoIGdYSbXY<$A6h0Jp+EcODD6;>3|5cEu`p&#W_A#I#I#N@ zMD*jIOdt(Ska_kXV$-D8jU$K%i)(u~?c?_EA=gm2ar5^lVA8MSJs{kZh!jU>wnt*o zo434ijqE$)*H4l{G{v6iGsw00Pd@}*fxzSDe+NDty7*Dx33y_9`TzYq#$cn1j~1CY z?+ACo{oz1_ph1)p#Gr!)nQHDc2>h>;o!~(v8?dTqj}dsZ#_z|)f8YLliIC3o-h*_4LB8 zMFF4Esl*ncD+W6;T~!_hJi746^GNhjo+nZQgx&YBQ5nTHVkL;%z6pc@+F_8Wq)?}4N}}SQhE^W2}iBDG0smQld=tQr?LcB zbs?Wd&?&>uz{TdF20i2r(y^LqR8wZklYO1dsfF5AOQ$6S(Nd3EJ%6c@rg= z*N+~?T^}EPEMn#e-emLB1W$%Sxk4r=2RQ}_9*q_p6;Hkg; ztpfo%(hlGi#7bUhY@Y>~zxwPIc$+rXsi$fJ%OlK~vJ#^(6P{cqFoU~|tNqyjf}8>& zCkk_vQz**RO;H(rFW3bN^BCZL|E@#GSlpRkeI2C;wrx}erJ@sDeTcN<3pe- zP+uvVBfn6--}_~fbm)IXfv0f;as#{$rwz*KLsLe28hBFwk>E&6gJ}uboP05uAowBz zKka7eeiMu&6d6X^KqN6k8khq4#ktwDXHL@ne(c{+;3NGE1P_?c4+28I6?kCy2{8OV zQu!Fz^M~~id{pfFFjSLbB;TNp=LmUHBA66*N(k$^x7SV5$;LqqZ#x`c?K&viO?j8GMaw}SR}7MHA|67N!rV$%U7>H zKLzUK(Id?m0_B(gBD&}_7xPuLs#rr50Y$R5PUxD0#GL%_2sv8`Ba($;|Fy|$7;8tY z$qI2RDUzN6@4X8_$1ikj zBw7B;r~@7S=;Kiyr)4gHji8vLdrmROJ^!;WMf@@)7>F)cA~OZ8(SfxU#S><6bW7X; zceVs7GosFrV1D(+JqKpQJwL#V(7h1z$$kIBy-^xJ=u`n$t{vMudK<1d-SMMiivAt9 zVnZ1v@p0*c;AxP>p|SueIyARgN2iL?8M#>ze0-A~#v&5F!0Z!QgKLf~Ltt@w&A&RW zoX}RtLiF8t(PDct7Sl8Zd~nF(=ux9}MPL>wi-U`&YkvKJa`^>_W5oN1Sn!#e=4pbH2aZoiS7*`k?MT+z-WR)nLKRS8%e~OSwgwUxo zjVR+OGj>aa&rj?jsq9lr8ex=U*N^VqF~*Nar#&cT5&|btkO2p)h;g0xFwg-}F2N^? zE|F~r@(FbK&(YX&L=xkIlXMc{@vp)fJncfM6*_Rv(MUP1_M#hp=tp}PC?bIu)GzY* z&VsPoHM+Iag zdIs%mM3s%-{5Oyrr#47}CSx$mloSf$$$Xx<5@dg$eU`bO?0Q6%7fUKsnM(7_pMkDG+2K6CG_dL|00< z90ip~8GJY%xID_}$TLwr1tCcg5vKryC$2gQD)`7qFrki!2>PGC2FQY|iF0@p&TOiL zz~q!*UPEfRbsA-m_LJ!efFh3W{jGEo_>0$&b`ba|?Br3IT>IBiDJ6*hI{b~1rubR} zVc^>u|KoqaPvjrI2TBGIW;*i#QtYqb{XH;jp)ZQE`Zn3M`jlZj&ju~59`G^b5JFa; zvXN0%fACY&O8U`{BEfv{cS*Op|7IYV``)vE?>h)59tTRKmS`N+(Zk2?xMM#G`n5X_ zA+Nl@j7v|WkWu|4fJhVoc^3OHvE(Ogm~bn528<@Q~M_KEzB(mHKr-T(2eP*f?_w5$op1r-#oX*k_(Tz7&l0NTXCBg6b8$}70=Zz9xh zq8U9zv7Q{pk9|r$h&v)p00!hGelIfDfdwNblA6(9iQ@fJVDo6)gf=T>qSs{79dF>XILgbeSo<~{z#|Z8r1P`R|J37850&%~(#x1E zK)B`m_~*fkg^1I9G2wI?8o?DOrS|W?`>pRpnjm#UK#QPWzVt;{;mAY%B8+fwU19Sy zIZ2wh<5l=W6JwlN2beTsBL^*}DziCoI=Naiu{UMAB8#Fu*vEx~+{6@@Q zdF78_m8Jp;ch#4_@|S3YARG`({QBQT%dW`1GhG&f=lm*d)Ti9OA2D2eKYa(0TNqix z>wo?A!^i^rzqke~4nYriK#977EDk3qdZ2yem_tOj(Cr2cLRW?m7B?6w@RKFGL-L3r$V^TOt`h8F7qJ)IWsYi1@CkH+m1{bHtr) zIc4)h$SmWdhY;?YBZR(p$K>c;h&V2JL~UV9G^KGMmMG*mygHG4ie}khGn@)cNaTMy z{&VbUp+ruZ#h#3TEq<37Ef1BhO^HML|O~#d<0t6yJOup+Rh}zwtJR z6A{>h3LcRxufK&D|2ewr`v~@{_^}^_ooB& z#n=_r^ZX3|*Pz;|O@Kq?dmsAlcfR%QZz9Wp0f_jnuVC`#i>RibL-c7wLF5owMfBU) z66ev(4bVEGPjnaV{QS&$KpCW&$KDOr<)KgBxbvu{AN;`hcYY07<_5ugFQ`V!>>wK{ zvHuzyTB~oc|Gb-_lSYPE0`Sn z6n1T6DGq(NstT-5lV{B~M$ZVs9O&Di7N;Itz;zNezJL*cKPPHE+Ib$WPyvSdI(S`R z7>Ifih=C94cC6N;43Dc%?q(zqxXs@NpfN>}*Jy}rjO@I39e*CNjxO`hsBYql)207j zbm4z7xrvhe;R#WWZ%KW(lLrBX0Rjgmo=_=};UQ~8)+o#bd;(0&TLv|Pj*z#BUH@wu z$v{oThD0Rz&k~5CflVyZjzlG@sqk+Sxmza32LcUIY34jR44!=aw@6bWit&L5q6|;S zo#-yy_6Wuhbl*QQiL(6l2*cb;HysFa50S=q;q(tp_t1N2{ZUD$_A_9YwRLPTk2u_D zsQG1b1b!X_7X=zd8`zjZ;v&i5e%}c6`0w9|EJIL{l#A&U-=QeZ7>R(v=?#pJBMU$@ znvg*T0vt6tznI=@K$lmMzYmT71{ay4O_}}1HAd_sci=vJ%~9(Qq64Lxo zc}`>^ZZUZ{rojbZA-frNY7k(FR8!&-uhK2vT#tf_`3jmo!t@?(Xo&n92rkVXQE>m) z#~*tbdNr7HYKy1|g=qk8zbKQxFA|GLxIkz0O8|*ejgFED5s9F?@HRNLh?EL4 z3{3Wa37KMQYC^KW6-F}zqsCLn6cl2}azFhkVjNj4ktia0;>P_&h_O}%CYfmd?v>BH z2w|E`0h?$%`&|MkP~;*P8PT;EkAy`Avym|KJ^j=Z?;wlJCm)O^B`_y((?>8L@vBop z>wY2oaTfuhAIgd zONkV?_kn%9~Hkio5?FBy=-QH)PpVC(3iKGk>MHu@+-g!WsP>T4* zH^$$3JLTdi6;m%s+cRm++jNoDRNO)NBYyBrpzXakZ>IR*2E*cV?dM<+zYkydw1cF+ zk<{kfDBThRyMOIp0kPm%s9nc}#j;HRYW%}LhLk`}<5XS%@%=Y&Xa5(>mQ3XZ;z=TK zfssUvTnz`{Nv5l+P}mU3h?YWOix4%Xgm*syA24`tKx*U!3{-#k!{ZN5J}`Oz7zP%Y zukYKx7hE94GU{Wl-*p}O@!p*`-F4^9fDicQY~%g3_ZO@Ps3$ataBFSvT%?v9N*PeZ zXW*ZkdW8r@eEC2tqcr=qh#HCN8M&tu^M*!- zAx<s1BlmPC-^?U~q8$=uG4=D}29UV)gQ$nhQPa=3H*d|<0xOIte8jtQF`g(h3 zhq7w~6)3h*|4oDkDF|o>QNqv-Mhx~rf(24Q2^)X^ZPVCBeF+u~9RP*N>({6m0Vtb9 z_wshUVQRgjUx_N68nAvuub-a(G`Q1JhW`NqOVgdy`BAq`z2AecVVnTIw<&*0ogcgo z-^9WpEDeoH7kZFLCU}K#0c0?gF8V$j$PG-+M*2+T&Mm@gl}aoxMzssT;D3Aymbb`y zNN=9HZBifMwVM3SEi_$29rr#Ok+)O%idc^0ckSJMTV(ZtDzNt%ie;2O!9`EqQvkCROOT_W=a4=z@(Ow`iY37S^m9@AB#=e?{~{a=SXgrM z>EC$ji658$y! zA*7Ze%9-2Hv@TM&Ohx}?z$$WR65&kBAzu7{#@gY7h8bxyT26+#1YC8n{%`8y2hTGl zK|#IIQUnaEM3Z@VxNls)`QS>TVW1m{fJL+rnqnl-FX3_j0_7dO0RlM2WyHKI`T<&8 z{L`Cp8S#Csf5N=-_dZCzeX2iXKcgZ~4v;^kT?piTiX0%jC$*2kNZ?f)IS+XysKIRa5n>j)6r>Fq>8 zqP8|-Ex-CTn(6(HTWJ;iSS?J>u;bT zJq$0>PY}>UxSSwu@XYb!(D+XdxJpWxU?~Agai{-fJP!klj(_sN4VVO>4-cK3R-*d}-??F)S8RNb}ZAFK5GZN`NC*DQ(6#f@1+1-E-8_SU|PA=a= zEDd}}2ZTFG*iiPOkGtZvPes(PeeLg%G9!o&8_f6Uu_I%mS0#LeZkO5OzB5}`{}R_iVz0WftJ=l#dLt~eGIaZuz@jLa4~d2m*&XNE6fl z5!j@>i9rKgO+xfgk-qSS>B!*tFMsJqFsb~2_Zolu=7?%U&;A407%7(1!A&YZM}W5> z(j5lLNUmM-PoVyQ7>A#FjLR9NPF%<-T%!2V-TXXWIq{3Qkk|Ifd=07S047m2pS(u9 zA16Qh7n=NA^{mt;fCl-(35hKsI;1F9;U`>L6;?T6d5L! zETXYs89`TtOui&mxNWSAJ|-3%%m_pW!0L)!OHr|?slhB4_hY3X5ytp+8YJ^ zok7jz7+&o+lw?|U+HDXHJm=Si+DOY-ZC{YBhMSi|*W?Nf*vR{V*_bKz)>cN_8{LMZ zD!Siltq;SNSFPJ+slr!Ht5Wv5J^RWFu;X}HQB0g$&KGS>Ru@hs^^Kjj?3mc^VO3?P zi%+1-0@kUkwVEAjT>8nAiKWLMdEny@F0@TalzdmUqB+^BS<%&sUGMw$V6C^(QDnbT zV7wt_Y5ml)rg2KOb!nri%`Hondf)bj7u!KUbS(VrOK{(Iypm|yO3AFSmX^=Q6@1Xb zD0;Oxr&s-oZYvy<=h?&)C$qe18;ZaslO{KRO(+-ADN!!Q7Gv4PlvEL7>0*g1az$()=IW~#2madS7e0HT8LH(@ zEtTb*mRC{uY_=$6rJ5$FS-%CFyV;eDl~&ygT2&o{hEyzO^GPWXDw^z+)3uRqcHqmC z%g=n`^upPg#HZjPIe$LGEG8?=G83Cg7S%!`np}M5)HozS#QwxT{&LhHJhsp*E>c~wfwq*r4t#EU8qV4A*b5NyXg$>2$L;j zOF7w2FBDV}?^Cx|x&h2Qo=}h*y-wW`lxDz*Hm}H9W9YJi+iqHt8&--&??TsUtc*6+ z2d-fYvS%oUYj?Kvcv(2Fv_;PMi%iVE6zH|OyZh|=b`7Uj_wA|^`id%Bxy4*@xw5i0 zu=Vcx+SZ2Gefh=BN+97H$E{iz6c-jNpzUj3g{c?@TdWQ`MuAmX)s-cwkW#Bn@tH?H zb^ht!{rFQS&*w#s5rb;2DzIFmR}a}wozsMpkN-3~i|WXfG_NsiD!I(uVme-4NQyz} zi~<9uU8`?AyR+Ka-C7xJ)O_33cmq7LY6$to^UGrz0xw4!+GZ#;tj~h|}ZV2RsN<}iNb-k)2^Qz@6bnJ+88DyX=!8pkP>pwmU{nk_Y6v;wzOz`3cshJUzZyU0O? zWRKdFs-@=DR?qi4t^V42*DM`qzWb}a81Qsxp<-LZd_e=>s_x>%x!Krs|BPX*{ZwV(s|xw^Rnw3 zWwqI0%XLfZt8A_72~7NKV&+tC>CrQ}?9zPJtC#bd?Z6i7>u1h;rta43^ zU~`EQUpPBkWKW;ZS}MycRZ$NrTI*sbXw_=1!CKYhvK5`>_!1I+?%YzYq7@U1iTRuw zI;`FZ8(}Esyh=gj(zybclO$FUQK?QnoT}Cg&aQbzO^=_NdEy-FDs1W86ZrO7x|Gao zawfmLkd>5TDZ`40pv)9fv1~G)4cfX=NO0LqK~b~#%33U6cckJHC#hSWpgIy}JK~FF z%|;SybiI1NW|Y`U-xE!zEI^E|SW>R6NZHJCI?G#`f&lkq+gHVk8yE^0y1>@Mmd#7L zt_YgHVxC^im6MB1Am-|pTxoUdL6zqef7t2{EtQbDFkj>fNv0$?L91a(a;Dg8t*wo& zUWEzOHDzbh&Z~o+Ryi+JDh`*)6cs!E_!6J>H#-f_ss(0q^WyFx>6oxO= zWToh@R#|&!oSUmiv1QXYOM+E*f~wnU?XLTZS&kV4b8&9Dz%Ru4axP!0)P!7n(5#t4 z3D2rkwJMqxj8@v&rQ*`k+2qq_GMK-U*oCK(W%$88E50Nt4rc0eoeOrjI$CS{`Q)=NDRH|n3#mQ&`af= zM!2@gJae9}=d+q#%#{sC<7;8hQ_BTgmYQMJtq6P_?e)2*&gU1-eDbM$MK=X)ImKrS ziW69;7i4oFXL70Lw$p)X(y@`vm~%PJZU;=c>bInL+SGWZ#H*^~NY$V)lMd=tr<4=Y zSJUF+cnEd%B(JacvdTR~%~xw*$5d*<9zrxyzhU(Rz}Om4bb zp=?)@MJ_JX+BMs+s@dhajD)Y6l(L1TjLnpssv)HnCv50a^7H~%%2YdDPn5i7rxCiA zRShj=Nu3>PzWi2oA z*<#Re%!a{gxW*OLtoP^%H5$GF^!59nh$B6e4cB$Tezy_scGosrnjAC~k&DF@tvXok zuK`sS(q%2+*9TlCo}G);M;qOCceJ8<{jKLecfklQT-g&6Gr(QcV=d?6MRhcYn*kz$u(FPzQ#To(WTuAGZ!OQw;TW&K`vHsSM?s^D(zZnbq=W4X#|yVf)WZh2YNQ$>fP z>dfafU#s<`oNm_}zLv=wwTf&7b=@>9Q7ItwHd4xF+c1?ZP--T_Cg`(KX!%Z_Nu>aO;Jpx^U? zwr`m#>-hyn6pWhZcx_)nkLnv5o?^G(UFqX5KQedn_f9X(Klb3F?%Hl2tF$)PfPj3r zF>2w4h??iGTv%V-Sl=|$t*4LYl#DSOC!J zq)QiGL9aU6y6BcI9ovZWY&n^$n6+->%1gfg>{hqsn(;^HBz*8i6B9*VwX!@g6ofIM z?n~uF$r-HIy>e3fG?vr^wkPpj~g&4O9h~Y#8w7#ce|iLfiD}u5Jf`R_*mJZFe0Zh2$x* zIX0V*VZih0lbP(o?9)$X5;G--EAnh^DaSEpx5Gbz#?Qo4{jy^!Gx zdhS>>CPZ5VJKGKK88Ezx2;z87tY z*H%`$)@ZX{>$C<}*A%DIX-MtoKhqoh@n_bWEmM(;n+s2(OTOXb_VXL zCrW~$3qmTPD7sfcGHB!yENWOXvB;L4PC@gH%EKRcc#%c}EeCN(;*tzE2Y&KQQK<$& z3q1tCc#hLsO+ziri#^Wt-_^uw1oY!!pH zwz<9yeZ?_q!&M}3C5bnrYxzZ~v^+nXEX*fzPkrK%r)QXKij@mR9&e77(L}8@16v6C zn}e|F+JP-=md+Q7i!-yuUJJCboPw;SE;$YnzU{(Ly6{D2klsw2I1@gWb08*3Z*g7k$;>rJEC&ZO}% z>9(2?`)+Q2rm~_b)n*tr97D)5vWEFSE9j>uUzd0x+U_eUF+2S;cnLz z85EL+SM_bwfvZv(Qav2ch1esboSIEvk6|vJH5`TS4gLBnVSVfG*ibX!`x@Znd=wdL8qgNXan`D5y z1*u$b7>&N}cc7PCxct)Pt=$o}O*9nSP%Dz6qxXWn*>ibpT{!*JGZ`g)&gda6uZ%of zluC)Lphygivc8oRwqLw>c{|+LHkPs_COw-Iwe1G=c0&)G8tx6#yX=-F7hX`oRM4!sY%wkxM(@(*T3wro z<8TtElXl(F7^hQjws&?u{y>c7IiurfEgsq223~MVa|mv`&u5mNDvvaLjG>}8JW1s< zy&cbTL7m8QwbktJZto6N%djjXpYa)wQaFPdKkC%NeO>ElEbP%;|Pj z)~#Y*!l(_)q?0jDngczBKPY6d9U;lsRf$*hK(CkBj+4Q*e6K1=Y6fqgMr4%-Uvp&cCp+zI&-} zt-Nw+rE6`xxP_mo8FcXtsIbxRR5w1q(Q=&C-7A2zJ-=Gcl=Q()ztOCk;b^6;3K_9&CxZ)}(t_KceJG9#>Qo&+ti(=pVbigcSj_Tq zc9N^RD;?ePl}aPt#An8ipvHA zn<>W4VBu78_Uv+o0Uj_>AQk6_9Evj}q^aHoGePP=#78s4HvBZeBdC=i{mSmfXltOmwQ60+6>}w) z^&K52Qsn0|Ts|+AQw&>@1gR9ax|KYWotxJ^5T2dwu2COsT)n!}wgj!=v24`=$d=Lk zR2!QY*H^l&c5i36+8kZFu)ewGdn-d^)&6K@{rMfM*9bp*vANat8&(QC$x|*S^>*x{ zbLHiiS47b)&&;#sGFP=%w_DvX{xr{3Rz@pYJTDg1pspnf)sb-~=M~S!^{~o`Bq1cz z{xCGzGcj4yeW~Cn<(+P}v0AGGy)+u(VASNZswO!)s!=Acw#))+SBz@t+L%`~iuw3_ zB9oWm=cR7F-rm8k zNp7^)wg$s?)0aUB=_S0?au#=)mAP|^nfV1K$y-91FQyG8vzROawJ)UeNdXPH5{$zB z<z%bKrx;eb%rC~%?AltpQ@84&6#@ieEyp(O5KY;0ji8G^*xd+Z)84$S z7yMe_u%{Nhg+C~CKmGDfztvyg{@fR;jF2iY1Fyjp^vA{MuO)q~w z21;(0u@ejPbD~&eoS@cpf;K2yCWgx30WZ2NGia*Awb4djOj&``zPw?Jflm#E0Mwbz z7A-Vj0X$5rUDK&CGv^*(%wz;sv>I@kdt$}O7x*GR)4enoYoOLwu`65^wLmJzGio`T zU7A}u6|)j)!{X$Iu{@JzGHh+A*DP1coibgeQq>Ykwy+e7r7@h;>;eVUWX)TcE#!;5 zp>fGZH~aw}U6KMV{{=DHWRHa51_Hb4DB zPr}!hMYXfJ0*)8(y4~T!o-Y=POU2E`Ea;cbQGc^*+x5_B*i5Af8!3`vj**>Sv*W_N z+i2utm9;IG^?6Rsm*k>gGTH1*4D}x4Lt3TN(F~N9iflUVL8oSEz3nR-!~P%?1=S4J zFF${2wAK=fWmV0x#hEip__u1dI(-o1?It%@;FeTjqpP-rF4p ziU?XP3`{Vv$r2Lg^1{;M5=TYRK#4q)7QnSiCi~d>u&)=Sf}mTdN}Q4hk;95E)RO=) zN8%9XQw6W8xmt2zHqU`YKoxO%LI3$pTM&$Ln#m{7sVJ3lTHu*@R;l`(c7FcU*|Q4^ zX=>tITOhdM{giZYPGXs_|n;fguC>MA_$cJipSwJU)}n zmFs19H*~@xz8(4WsdGtnaB(!)?No#;t6=+-$TNIycD|^mN=;p^)*)@ib4I;ahj{1L zI~MLsp}GR*IFXJei@nXhkYQNIoPByW!*!0h+S@(xp~7ymBQ3VPb&0ciNkmy8Swz1HZ|E<}D_uIeGEL=U#gD za)nsn z1ViliWr>p-`0VLvtB{OH({_2I@kyoiU z`$~9qXxeqR)xixfmW?%=Q;k~Y$$17GEVM!e-yf@2E3zsmhM$k0TLM&7%Q4o}(#u7j z&nNPVsW0Duf6Y-eSJ%BJ&C%+)f@}|JzM1FiVN*lL~LPkAzLXH z94%GgbGa;L{?oA%o53#0nOT5gAz?RF4OoheKQ_y0ir!z}8QH~LJY(4Se_`T^%kV5) zC^}6?E<;UeV8SkJsYWLVYj(QGnZvNxGcvJ-*##9{j_V;=nH8%l=FXlicxaVykWd_D zuT}3~8r2%>c0n?lot35;wATjC`m;c(S~goQBp3PS=hoce#cmh~IVi`HZm8?4ovvBo zG|VaI(ps5sZ@_tU>Egw$oy%JxldoO8IOuwsTqw!i(S@DBZ8{+HOb~~K*2>1#Iz9*O zX@ZG9F~;<&rEXPiHo5r}Z;QGCigPfkIwR~&YxG`RjoZUkqaX4G%1CV|FlB{{Ka)+( zGhP)vu;F-EZ3KZ8;`F8GeRsXz32N1RK9evOADp`R1&f|p}j^VUg_~|RUT1uXN z;!H807nhz&dywO@xx{i=(l_`&IGxp{Dnx43aBQCSRfWx&!vPfLQm5h9gHEvUq*Tq$ zE`q0>DJaFIvkO3_xcFv;QA8Z%;>@|lO0TIf=`wv|u$ZjqR*lK2LLyT|{g+g;fmg$) zm$S0l0HLcHikfF?O|RkWvZd88KwuAC)vvW`s)0ID!?`vcer9%YHZQ2XXRmhjE;_$Z zKKtmBApnnzZez&(iPzA?U&CXzTZS~oUyPtm!HJwf7%7t=T8*TSiUU**d zY7hkjlQTWDshOP~oNC>5Kb7H3E9|em@Z1Z}U&iXFZ8se}4@zRy2P0AS@Ue-Zqd5|6 z4g!?Oq(AIp7e>GDaa!PUN!hl1zm9H-pPfx}s+yCSyce3X-tb4en>$xGjiQR5QBN1; zz{7-6)y(F_#6mItRJ`2;>H>Ay3|+_$j1XL1ulF{a-KOW4V@0K2lXWJO;G9w>76)zW z_?^zM*6?JpSd7mu%{{sdeOD^SWRuGj)5(P;qE9~ZfK(9`LrW=Zf$p{(NfTKU#I`18 zDo2$0#niMZ-Q1;Q4IQ^tSGP8{cN974%hoTtBwqfr3it^3fMTln|ki_0_s(cfgB74RRGo2 z*}lBCvs-WMytv_LWmb`^VxHC6r!x}#GiOfbLhKM=i!|kGxE-@>dW`|#SfkYoy-GMDOU^R6Tspb51oT$rQuEpD`9vaHOfn*L z^E_8pU@3|7unq>k7SA%!oFzWNLo4zFAzu%baJw1gXL+quZnQiAHBE_UbwJc*uF(p* zu&Db1rj0DW)eJzq)WQZZMm5+0M&Z<^Ujc9D*LyuP2iK1v2O6$Lg_qy}1Cn4QLv8L} z`Sj+qmv?q|dSa;@D>#sJ)zR~x-dtH3@}M#tq$LI7p&SnMu;D>Q(0!)VyMq78<;!c; z_U6_m7K(LhPQ~bMY;Jbc658~obBY(*>E)THlGY&P_2yu6dv&NWob88U$Sj=0j*avJ zifxIv-9~S{RrQ*iqh4p_x$V`YW>`wGseFDp#xn86#kAOHdX5-N zbIWH_`Q`X>Qa4K3bS`PTv2%;1b{oAim(MJpOPO*ktodt+M(bH=Wp-yrjxO z2a_4D#DXIN=kK`dFKl4Gpkj;I$N&kY83a%pA=P2eNwm<*cl(zCn6Ubq$dt#k9CWw_h_@ui(LczuEAEklw_)i?2$O+TzQ zTW-^=>KgQwwY5tdjp3(19XhqZb^}{gz1rx)YFN_M%v{!~H5?|j@N`zO^m0*D!|m;Q zxm0F@Mg?rk$!BH+DVNHZ-D1YV+?&@5-42{L?RNXZm5YORs22*n%$3*_TM@)uKJnB{ zHY=(n#wkC!T$Jqw&~3LNRokxKX>m%Zh;D1pvOT?6@_ZJolI`JNF>9WQbkeJ^NP!t4ZT!gRIS*&;FV2u5M|lwZeaiY#!ex^i!wL%%pNp&$+E?rBw0rxr*+%HdgDqV#YS?X8+<&tI@Vj zr9`V*W>~CFaHZw>SR$WBPn~6E&LYsYn%Zcu_Je*`)|+~%1S>!x02JHpYnlx+ldQN7 zI9av65$KsErlNTo)I_(fGGMMz*Rpvoem<{o;N{Og7Jmei#XJ}w^sudhkQ3qgC>J$b z#$-xRHS|h33E?YQ%z?pJTAEvkr;B;8s;5EiLnFSrdvW8!Y6EsYCusIBt&O&Z zHkVd2i+01Zg>))4cQ$78X(hwN(pEW>O=r@Q@W>1#1h!nk-jZ_BujFN2gxj*j@6#iG_~p*CRo?n z@WOT&bWvaP;4yrdnEPF=+VU{+WnS2-51$q0o_;j$)tnYS0U(q$SYGE7u>BOk-^61X z4Qqx2h1_0}rl~l_z?MWKY(v-6TO$u{izM$fySp7&)D#nFjma&{YbwZx92-ydp{DKb z3Vh%erK;xlR{WjarldnYZNg&Ou=VU5U#~fmq_9S<0lE#}4Xo5hJ&>R;ys&fe^6q-S z={0-3aHSVE>(D&rvp`fD80uW%>^!iHphAMI_*v5va$tRpk&<)lF!W4WRFpg?6mscY zwE~ApOm0Cp>yNh9wl`}EV|T1lR+iD`sgS%>U6hJBQRO`7mWGIb$qG}_fh+BvCa_7h zrl_IM7&;eQDDkCo`gEc`s=4jZ6gb&1nVcDh#SCl!9G`(hFP+cAx)V#pANs^oCm;C0 z{U7_(oP^RSG#G`zx*13KHacXj>lSwbji;Qe?}b>l#`Mq(`f*FFrcMCr+P9 z@ilukX?CibAr;wJYAG+X^m7P2fwN55R{$b(W@d(IU+Q@Mj*#a?T`sBZ23PXTGFoL} zA-UPITic_$4J zuMgJnLPssDG4x@yS2LwjhF2N99xUxp8tqWY8+D~(sJg<#Pg%;9 zR4ns=*dbVU9aOQcGCaW3%tD?)hsT4!tJSzuC50EE3s*XIQHJoK*;c%wWJ_XlIa4mp zpT(N42Om1Q@TAZvGLT65LIyR~^qbwft>z0z1y&^$pFfwCIDt{YqoBi+RA?#T>Pl_> z(wYY$aG~Xwo{kBHr9#lHdp5cknb$nS>kJ3O&GlM11h4O~{s_1+2M?0pv*DI{_Ss&b z7^PD)Wrbf}DsHSBa=8>=iY1u>o+GpmRZkjDQ)5+5EEmLV z&hZ9At;7`>NfLUO8XKE_*z49-pS|+JOV1CzmFG8Bu728*94HIuTv^_1`z*+)vepT0 z!^E3}R?O$TOPf2R0RGu_8xA43H${9{r;q{?&%)B_)w0X6d>LBuD)2%PB2*A06ijEhIsb8tn!MW!^CKMMkO!R8tvZd_WDZ4_p3Ee=SpsWZ3H_N`H|Nz zU%7ZW>~8Y1!Li!Fb1GSoauO%=lA2!5VQG~Hp-to13Y$|EF2`4#y1{XmR> zG7qrBR>F#peomg6+_yp)40Nu)xxKmb=@%}BW@C4Ib!)9Ptn0R1!52)V03|3{$d|>6 zYBWGt!swqXmb8Y8X34i2{ZVKT)l|r8Z9SFak{L^pJcljhMHdeGI>vX07lvMI)Tp*b zs+!L(F31JN^WBPR7Yl5OgDxd;>7{H+@T}@av-J|9RR*-oITlzUOD^kf*h29@x6CJ8 zg-N3P>y;`j1F@xKzL-nJ@~Yv&E2)VBHcRtP6%Ku_B*K9bO@%;65HeX7^gXJy&}itK zg4DkRTAM4(EziYiJ9Vy9QWR-1Yr=3M@>N60hTVJ$?&P9kGKEC4C}EMzaOYwNHZm1F zY`ewignAymYrqPUd$tHB{`;$}nqPL-IncQeT7nYUjC)&0%L9T7VefiiQaW|MR07=bA&VA%6aK@1$H zzuh-Q-2|x*-9K&gR%*5lUCOhqvfReDIbFy=d=y#i4Po8-#wuU~K0M}wqg6_xMoTYP zGqxnPh8HjPhZ{Saf#)^X1-oTCyysy6!0zti6B}L3J7|)ncToiDLl0laf}pv$;I41g z_@M4$K*97lp}E_uDuxcvXele0e0DT2kx|4DT-e4+2j4~<{r@Dr*LGuPp5^&C^8hn_ z)ib?Tb#<0WQ<74tl!;In1{ov>@6GYvTO5l6?*W3I;iQz(Rd<=`zM9Kf$IoU+KfZ=nC;@Tu*h1(4#b{MN* zecQ(!6~~^zkb>OLpaRhtS?kdh&wHsaHjF-AFbNH!OgCCJlzg@47{y?+$r0^#yCC)_ zL#^59RxVEe@gKhY=DZ4rMjL@soC?nq_COOx%>pc+fRk^K**+GaqGJRIrFGXI1;Yr= z0ts(>y`@HWe>BV{&`(8>IcT(>M5);&`4VlUlkvNEi{WgR4h_lc+F4V?#si<*ZhL!} z8iI>uIldytg_v;`u`P(fMAARIO)^PW=FyHMbbDYYDy?zq#3GhUsPZ`093#V@tBUbagd@2gP0N zCy}4cmEK^1BjKDLO;V?yx=ytEIE*A;f~FSNZB*e{qa+q5Jgh&K56g+n zKzFB@iH~|r!#A%65p&*CIvs^!IXDO^EbFNPgmfIyVLK%Wn$*AV57WRxb3u2SZ5h3a zS;?K8KK}}K#&1tA+Y&|u^(LzugDBao1_Hss*??<>?iKlU$dU@%E#(?5+MD0q3<9!B z)MXf8np)(d_n(X$4OdRG!O6zy_}$UD4+deS$OILeG`hg2VE{OeDSN{;5EYB7phm@m#BqmlKS2?;>N_%D zAP32KBvJj@a^%XR!|wWrzbxZG((C{m7SbJJP|UN=q|ddLB*yL6LdA=#s$TkA?TTX;3MAS3Rk(>^kZU$tP`}_o8|m%b zmtX$<-+uM>;^pVhN+k>nDs@OVq7dT=9laAuIZk4F<%$zBs2&83E1tf_N@=`9iwh&9 z2jwg)gAB&15l+>E(hLh zKO2M|x)&$J&PJ0#lI*sl!+v>t7(Tw=m_&!_2&p4Fhew54{bfW(7@%&iGiWj;-I{GJ zUL(cT2+aldDOtG2b`PCif-wjDd%LGC#QkxU_O;PwwZGep53q_T>#Ld0rWjNC@el(~ zkD_9@_f1;RcTXeV)TZ~3AKu;EP90+uG%kCr1JNy!JJ;6+uNmItX}`W*DE>O}CL!Zz z4E7anA4auFq^hhS@|Gn+KPGAujIG$SBBe@;qg0*UJ$T^GrC=w+MnLW7`% zm4g_9I~L;{H#Gx?VvbyQs|$K*`?Nr#CLu~Bab{{H!$ERRFgqi30+(K2E}76cfef>s+HEZ{O_?AZ0va(%)_MoC#MJ4r|(Rcb>RZ+wy2Qy4m$T z-5Kt7<36v>7h_*>C*a$o8cl4c@4LfM6s_NHBauUiuc`gJI~ceo(|3G9suj=R6W}2u!wB!9-lHl=b}q^hM~cl3N#eddwz)E| zrS9k|G;pW)z17NroXev*NE*qWF`Q5PhQaB9V@5%k#nCMEb&YA~>s4eF`>XA{cTZU7 zK7Pcgdpa6g8bk3ohhmHEwyKxaPSsl8qSHGp#>0s3;uFBJ;Gu0KuC5oM;P>6Yh2cw9Mb;EKZ?~EcW~=KDKit8#r%VR%yRmU~ z?fZVC?7MBXAK5gQCd`|nWI$H|)+8$AiC!x}mf;Tu%b1d5t(V%Nt9r@i8Z8!%tk~!@ ztw`-q1Q(-IMR$n%1;W%2(j*m*YFJq79ir1xENp8v!Q_b^4M|6@!X_z6%Q{0bLc83; z%aOQ_($F%+=(Y6TrEGQCSk=``0u@Dq@D62srP=9q2wqlL4B|`W(?*yPhz0L3tY2wdHMFVLvt+r$Mw!dsnRT;HF4$)Cq86Z-5LZ(1n$V= z1b>O*k5@1nUrlXKD_xemGW6=Q7|lm`4|}cD$9e|)2CNz!jZ=t@AwcsHFAhKa;c>Ot z?(UZJB#ump7u&FZ!n;<;w>ylCUCv;(m~0NNhAPP5a3``tw~+l|T-g7=`wZDB7*b^S zj}tu4!~Mf%cDVoX$9MPGkmvvl!BZvM$q;Kl(}Z4}ry%FUL}3&-Q8>Nc?(XNhiXZ2C z5$tZ^371>N(s2tODYVmmbzbaAEc%(lYJCNHAguMyU>tFtn=6i2g6f&FlG^6sfTe|h zY=fM+&z1>FM32Y&kv^CX3~Ucw6sZvK3O%M*Ym~~WhXty^>&2RF4LUx8(}l z%5N|a!(di={ks>R|KiJ&7oSxl+fe!gU##cz=O-_ExkQ$RqWaJZX|Ss zUb8}BoYShE3d4YfvPv#O4VwIr?_yA~KMT<V}vB^9pqL;b68M_pvDPr`sPsB(4aT`4*es zbd^C-dESe|sl!lGHaNS`l5BrS5muq;8KT{9)CK8A#oIUo;E$a#t+(e(z|>(x#OL++HSO#OmES>EeH zP}HBSgIpE1k2=S;6#Tb(w;`6FH_EThp1;nux}|!NfjCjeZ6i|xGjSSeSObNgp=_gvia)JWPzdM8Y2x+Csw^FD8}^pVoZr zdc;MwSH=R(_geJ;t1QfmHfd;^>BPc{I8C9Tg1MZ9$x^F#S*K8@9q))VsSD?S)=eO9Zhc5-DnB))mUprOBD1qI6*jJLZo=F6B&bn<+s zQn|b=V#`pyXck|bG+N*RRGK{yRT>3;JXtTq9xP$FauRPg8*#D!Ce8)^i5bay~ zWaC;X-<8=KwtSk>IAhFYGMP>S4+6hz=nodq1Q@OjMQC5=TF@|HI=YFiK?3~(Nhv*Q zwY!}ggC!jJ80y#(9}Jg+(aewlyTF3y=C6Nz_xKR$vwfhlHrkarU_@loyhY_;PT$%l*53>z)ph~2c!AalbZ#}!nCkf z4@A6(JT4Ctvt4W#;@QZ8^B$`N8)l6VnpSA^c}t)nYgx~IIF_(HL2#bjYSr_FON`9D z)>*w?6MRVhZl4l7BzPdIXgwRu{w4zF1E!|@3qlPild!9f{LrRUfmg~cUT8GfHr;~N zs@(2YXs98vT4iYRH1~ajgr>IsJ)o_*T8dJ+(yncON<4n|^ zU8YsUpH-y(D2=vDnBusm3g84wvsAa(;6N%m7g1PO@jq)eFD@GdmPH^s#D;?9oop_l zbn&CWGZPK|yz(W9+Ns`Z>7x-EbIXdbNwn=4I0Yj~G~9)*E7GQ8P8UZztN2a9!8if) z)!p64!*w>@3;KAD`4x$Ic)Ci_sG61=ddvF*1f&BwT?}J?gfZ)IJimVb{^y_WulB3K z;?uwW`4KiumSXz@+yf>S2=?Wd1#j&ztxARK$>{#$bUCxY>@Z+SR7DGQltH%$5iJE( zkozzo$#j2#xthWdFc?~}nVGCgG;1AI<}g!6kH#oS4$=olEd$1HnAX9mCv_{(^6``k zIti@Jn%f^I{`Jtr@q&H6NQ0z8!&ZUwp_YGpdZ}%fckhN;FY{;}zqfYJqOPskC9LVF_LzLJnye4zzO+0$)6TRRLi` z7ooH&mQ?J(XpE{rh0>_@3GGNnZ5bxLrp2~UHqnZN7raEg`TPtP6NNVi#~mQt{DGGY zXLI=EknhWND@{7z=(TbUgXxb$XfzG1_e4xkTo|BxeLU$sn$s~T_b1yv(bztU-_iT5 z3+;-&ynDR83#P|zFOg`H^8!dW@u+kW6JbXf{7l?v7&(|yj+YP1ARKOQp6+Lh+w0Bs zeEYxt@B95!!YEP!5yEh^eL{tw{jIzVS)NmPU35o5I*TGGLX)x0`lC5F6_+d)an&3YBW38EjE~oOb1-~&DWjh|M=|}pFb-= zvV#}`bb%GcE>=p-mPX|&&03MCp(1Y8nGRpL@U?QDsZv2t99w8c4QzTysH@)Qa&KR} zY2h^!`A)Br7fq&#sK;zMnR_B#gF}VsQGENH4c&3rRIUF|1vT=u-~9baw?ShJIz*Y% zx1I5Nw%V@27{s8X{kmCygJ%$xLk~|4zAP067Wvt4c(_Fb&_X!DgWU`cA0K-F*(7U= zn+H=GXiB(q+X9Jy41 z{YgVhPs;{by=+-VuLdrQ*p=wh({`x|ii<2ToqPj>P#!}pkuU=4kEt+F?kyMy3)~hc* zyJ&*!!jL%Q%MAJ-?x<)Ry7;7f= zA3|6;3S5!3ha0RN+zDnS$}-X=2B}K$($z|W@4?oNL3KUXRbju0f`**Hs1ZXWMl%*9 zHXR?@w{GLj*ROv6%V(DyMl@oJ?lv0DGs-cmzptWN;Tf`UQkJl|iA=szZFS1!dZ`QF zakU0w^vOkwr^*)`oh!>@%N#1u@o?nZb}#?ptV2Nf2y{q>^?zT7s_oU^{oQ~4+p}t} zBjCL76W?;_9%bLmocUxmY!w@Hr}l;&!2Yc2tiYoAAcXm7x6C!pas;H8p^q6KM;yT- zpgO_yS0EKXgK6>VVcZj~XlQHLz(F&Q({Fs3Vs5tpTTG!Fw5UacS!{>1)X&n)!3t6q zLnKWNbT2z{e4>7eTNCei46AuG3DWT#B0Z0z;C?hrIIU(^F|O!IGF-;Us}k7ZyLYR_ zJxI2P!+f;pmo7>@Y_9=XQ2RihwD8M~+yr`0u~(m~r7@pUq=bchIX8n}XHH-^)hu{NtOh zLpZ>lcREstlE~8EoP7V~d82!zv4N*k?+DZhe>15TE=5yX%ri|O8(^+&o6709IrH4Y=6~bOHTHvH?I|2Qk+h%fG=P+af5lF$uxiV%dh_K z*Js3ekx?+5GC`N=Q3c^Tp>W){36{cgvDU<*mDjNB7mwVoOL;LL(G7{pcLWpb=_5Vu zsHc^rdQl|BKDb~Vf4jMToXqel`K>603}|5_UTgB z7MQ4gG;g-^Wh)J}!Dt#<`20o4?NM%<2}G%@z5x}xAwd%!r*^zZXEOlgvPoo^uApdg zcy%`qhEMMw_IG#NIZMzT-T@j)PqWAdeNEDmL1>`x>xv;ENi0Fhe4|w9Vp`D%u>h4I z%UvypK%Gc91E#BmkJ;8>j_1yxuspdwj664S5D4R?!{O71?Etm9-t0iR6O3WQBvkaC zUTo5YA=FP_RBH`^Z$qI>617|<-o=s{sbue@RPWZy&ahHFJMXk$s>+q=Zn;-))?kXy zzb%vXx35m0y(v-Em!-2WzkPj{FA|-yVX^2-MFEn@+W8w4<*UOJ zurgvgRvkD%L>`y)Zh_$gNM-0#`^hvFm~`X%gHeKw%XGcm9qy<20ills*oY4&b5NjQ za1pe`WL&XZd~mV*Z z0irKN1~@OjS0>r?uy)21Xw%cB$8j?DYL*qt9R3WZST=-aQ@oclxKEY}fsa5{vfByz zD065rS})wn)%BnEAjn`7-~o|=ft}~{x~^)c5M4Tuy^fM}_B2v;Xo#iGvu~S*?FIxC zF9gF?FUXXsp6B7sX{cy%P-{Rvv5Vrl4x~=4_WaE^uNuXC;p7CP(oUs$e#voYgNQCi zUC=^>h2joh2&u`)a|4KQ0c%5_f+(}CC2HcxFpaAuc#)hA z6(wYniY?N10Md@cQ9TO+k^UGx|8VMo#Hk9cPDL0F=RUeH282*Ewu3JCGFAQl^ti9eH?rGZgw)lhxIFKHmbcqyVvPhPIVLd9aw^!s6k7 zj*ez+fAenTgI6}%K)*MC{1B(p-Rei&Fz2vroWZS+=Szf;z?SMaZA(4)d$ zqGP_Z(JIS>5$vZnCt#h}W3ABSz~Yi)s4PrC-=N+K4~xKuumsr57kQG`Oqo^b4yRqd zVf{3d@-oz5Em6Yoq;GcBZ3rb0@Q0-;@poVU_UktWSXKg_QG_~{-?uy7YzZs*(|ukRm!c$mR{2g%)FBnePwQLr4s*9L}( z?=An7wam@qZoQjLw|#fBo$p2l=sK)1gr*TbZV9vz2pF)$@mxvLQ8tm``2JHY3H@vu zxx6s@u=KQOqY#^Akh+qZ*+=Fop2>lwMwq{{%JP?z=~-%{ZP=M7LN z;RZ=2DVzd&WU~EKRU*&yCyRC5F4Q`mI`OOD{`xZ@c=LsC>oftwqfeIUHsC41<>gPB z`FyAdZoOPX!&0q5l=bbiSC!i3X%&8;t}q%0*enrs(Gp?Q=~TY2i?kX*eTE6Uq4%1K z*lNOX2_A*q(FYnjtDdg0N@&jpEO;l7Q?s@P?GC1s4&NbZSmjt2EjQ*&6rDfCb*Whz zP=;MsQmh!;u86fk^g*KlRu0zj(FjG1oWQHNoX%#D&stzegy6!2w(e;p-BTeG!Dz^0 zwTH*u{mpJM7(Lt%?A^m7wju9t51Fx=SyNLOtq%M3ZXLjd>}O#Fj1t~9TyU(?fs6<1 zZ)YG=rZc&}+wPzC1JLlYO#sj$B&JroSc9HgfNG7mZCe)MbEcfs&6XRc=`JJ6-wZT| z4}SXN)BD-sue0naHRj_m4S56- z!sT{4^1uwXAcr)pA?hkCoNW$|n+U6X3Ej@O|MXve@!6MOy?p+CgMQmm{E*DyP_4Af z=NA_*E^7pMlw_-dF0y)gQS27~;kPgFmY$T`ZMaq`bO+!-=2(YfXRlmIP67VLU}RPNC5j zqc9xVf=V+sZ4K5}*c(8r+=qzpNTcG~gS7|84i}7fU@D^r9FAu;CTOwT)**`F3AQ84 zG+=)gCB)b3`37pY@dR0v%kA|KfBblW!Ogaj=dc=DO*!#;N?`P%jv7pk)0e=YJH%y= zZZm;{S*Olds^AH~|L{127RR6)UY`>%asUGwf;M=Ok=+YbAxVi;qurK9H=E@kvFOEz zsUM63!_E$m_fJ31MjwBeN}M){HQ&I@d18+Cn?1Y@43-H%&P7)n5B_o~#nlt^4Rwr- zoNue%;tJr$&CCfS%k(s`jDvKjO4i~D^qnNqE$p53U;pp_=d;s)`u3aOylF|5dR|!v zoq{NmbD?+2qHd}NE zwr1J~LdxV?8cs7)LL~s>I!qn`uY%$P{vOq$P}HzGnjUUB)fkr05kM4}jms{tU_+|) zVF^}A0!v5`l9I%NxdQkyCEDF>5`3bFlf%%2Mh>hO>#*soLqp%Z-zLd&G@M2{gV)5& zBG3;gnG&EIlucXC_VYP_>+AJ?zgR2|)7g*z{AuEjvM9ig*>_R2=S~T9xM?N#kqXJW22rH$uC9DktST?Hx_$pQ|HpqmrQiPgo8O!= z1bq1YRjLs%i=TIDr?1a08%K%~#LcfN_B*waBbC!Pg+i`{?-hf+da;Pz?^pa5@B~UuMy93=vD3gu? zBV@p|X;PF>GR>r>4yY@(Qy5PQjt_5^FUjdR)Yx7Rw#q2O@gEz4*ki;x)Ev(*;PUwX zSI>U=hG`VrFkcIT+{Cs^tH3o-$Td0@#Ljbc$L%*7ZyQ2|ELH3IVjfEk>+%wuFotd9 zg(LdLRv||S;ZoI94yJw$z=(7#w5K~PtZ10&WK}RFBaun6LzM7EN;*l1fJfA^C=uZ8 zWH|yuYP^&1+Co|`bItx}w%u+r9iCJuY|Jqja|xQO3?RuPjqW(zz{AU-hlGpuVYa@q zz_jD-kTxgdVFG!l0saa$n;uNMi-b)U*!+a|AH=2Gx#C^#6@pMB%Nfo4 zL5zc6q0#F|3?vdYhH^X=bjeR2KkU-~@vdvGCQl=X(qUT$SUp7LlEwRXf4CiBsMldY zsSJRQ$zCLPdRSp998?0|TzvBn z|M11{zW?TBp$TKH0y`KcIAx%+TMSixeE};bX!dXcUUZ0dN2ut+MZMW7yn0R;J=O zT%PEC8i4|ZGAXp1W&$Ln+s7;b$BRAQJ^bO*pZ@ykCU(c$zLZ`)&TV^eJ*H5qbog!) z_u6wOzBPLfOroU ztAG@`O&WALaDnUf3Md$>#cHP*R<~Siao*@~wMqzQXRs^%q=UJTteaU9ISkR@p*@K- zQ8bm;&;RM~fAQw*vsd4IPaj42M`A-Q-#U^RaA%cH3oVrX<&Iiy+u-9|ye@THrCzsD zI4e~#(nlqQ#-PgTCJ;YmYaF7-0(;+#Q<$6FR3#cTdMAi*;C|+%E^EgO>zOuIy=c68 zJ+9X*RO2D2VpsvN8tPmSW`SCUbO?>#6twZ#G>s5`fGZWRsSV2oj#6i`1!Rb(RVdwY zP+QvI-H#6_I=3-Yz9uJucxj2~|2Mie+M{kkL*U{}UZb#mKt|Qo)o$$*B?u^b-OvqS zL{{-3cE4s)rpEA0^CExB471hsXmMpt9~T1q5QJbtyU8_xkE?az+%@3mQf$Y}#(I_X z$H3l{=9ys5hS;q@S}9?338o`v%}`Vfz)_BY2nMzw*^dqQloaf%NgmK)a7q};plhsg z#C{BRcPlBlTJ*uA2?Slo>e)8{Gz#Oz!#s>2e;ghFJ2jL2-D-dP@NWO`;FRiet;s+$ z8pKWmM{xY|cbW%hKGDXdh<6?xeFn3@einK7q(p0f094zdIrwtoX@&?4Q5yE;MwJ&S zcY)}Dfaf4U>}uC{10dHP9u6N?mf%C!H+q*%H>+7B=~t<2)`iubQR7Jk4*q3!)Ktqj zzI36^0UtIw%#|u-i1Bi|!g)fszVBjM4Q>MmB%eOHibwlptFs<}|8dk)QXJl+zBzv! z`(cLe3@AtEjN0W6{suqeROi_x^7_nTVBd{IT6smRT7EnjpfZG%2mBXgP zVIpyaE)aYdGk)N6v+Otp!Set+MdT=Kt5alWeGmZ2P7hr#2Idk70cL>BI56GDcqc2N zhT>9~OwlK5&|zaCgfovn5uNW|7ks0?B4&d#U<<|*&t9M z;B#ohQ|fKk5!gEGW@86iV7f$YKCOWw(P2JSa7m@9N7QMXGRANf^ck3{B9OtVfXZF( zGh9_9ZVb?eepogAhZ})SH!F!9AJEm0?smf&s0eJGBnX-^{L>1=kp!cu4eCfF4t>wS zM=%2n9suO+SaW96c)TxDe+kdXbdoX6E@fF-I;?Al%v)Z0$Q9v0yVY=gWe}L{Aj1WS zjDj=n5?53#W-RL;*YFD@?fr8*rYz4NLp2{zLrbP;X5))#=`En_Xw)%7%H zXugFDz1z^{!+u~#g9Jh}3LQNNOr3nI%D{Sy!v_o#pgW;QkdzK9a*ou);4+zF=i;P^ z?XP02&@>}Cj&;~NN*`Hs@MDfvXo%V2em(WEBOu!vMGC+{7#3_@1E>{oVged*`~K-> zJxP)XRz0{F`C7TxJ+ESSx%=ynAAhJ_B8ZB4_pn@#I45!G2C0~n^?b6O zW28ZOSaW$Ws$}~=XLZFH4CUbdgWnT}h^ScLiql}LqH14#i?4FO_wttv3t9Qx=qI4S z_we{2A7GOpzGQ=AWbaTp`NM}|aT5F89-Nhu>B&8JIov!V)BiB?xUnm69^x4%*AEZ{ z7@U7~pIN~X{8qPyp>n87SraDRld3G2~w_~@SfA!h#zPTioIbbv0oZw>89zq8SMTHD? zHg?@$^y|@n4E?lv&Wyuxt-W;+xB{22HPE^a;?_VIP2?u*<_CP)7s| z*(zR~o6`ZbFxN=TaSTuko9z~@2pw)b!Q>%@r8Wyxm1#83t9_!&RthB9H=88P*67=Z zi3#5-kLfps^MF=yes|Ge%5Jor-`^i!Go?|*BC}FyA#n!aV-YVthz$}=H?4(h%$CR= zG8hdc9=B8P03SlK=%TYjs`O`X`i~$JJ>E=`HMnF8Bi-*Kdie3??uTpfvg7D&e{4|p z91_YMSirUc04|hCWDgNfyoQCLErgR~8sn`LJFRZhzIpIvf4VSxxnk3RrWz`B2Hs18 zI9B_R*MlRWTt@E`dVKfC{XhrUob)#!A`{DVK@Q`Qby`%oZ*n0vZ;RM6cDw%W;f}0O&mPx-b?&^yUOIcpjh>1Dq=WLLo@DCg|N< z4?zZ*m+U@0Y)}Kj3rSPx`(?$tf1HNUjA>w~<3z;g@TxUYU@D2$MvNATgg74PUWCao z0}i}c_zT!0Fa*X^{Bd}42k?BnyH1^MuBL;WUF@Ru1;z-le(aY4acBD5J{CV}{~?sU z(PA1wf=R=Qsk+|7%{mc6r#kv{J$v|h7pDsZ+yMK!+1UF2>2UprCpTw3%nd6|U?jNz zFge_;(U%DfgS47zyVhbDxY-x*qbwe;l6XF#ihM|GH}9Xu&Nzl6KHoGWh-@X+8VqbG zJ#hWQR04;PrVX#h+oz}7;gUbCAd<&|1ogY$zkcr-Vj}CwP}_2*KuVs&}N#V!YW* zaaV>A@L@@}ojeW;yyl{5AW0TMOT45qNC@h%a`Aky(#4rAdu*ZD0z@1WQPzZ*&pVF9 zT`ce{8w9Xfgd7!9nP;40pq^Ee`}q>b8I-ynZcL*K{kXfG;u}xF6jQL;qFqB3k;Xxi zc%fhbV=;2;Vl2x;NGag?oG!PA$GJ0!5m!KRfOB~1{8sBpk_cP1jO?^zWq7xH-B@_0 z7p1$+C;?DFWaH7zlQFnb^u<4C+F`xgE>m-IH3E)fJ^=723n%;SDr`>wQm!G!&cFQb;`QH`{ok zMiM*z{VhD-oZO@y=NhnfJ+9;Ru>*?1*VHT<7TQ2%WQFTBx&q%h&$lUmwHZesN3E7f z-Lp+>g6I;LV7@SP0AK2du*tUJ!C^tWUoD1LpSD2nxf-TP2m~BGjZEHB&#_lPcWM-Ga97mUgh&=wQ`F* zj=3$=A_8L|Lr8dZOKP)3ne5bS=jSgz&&#D(C3E6qB(NWPt4y;-z6dY3 zB_>y+UVFB``3Nz|?_S=&8^{9Ma};Yx_{iq54GuOot9=7&-cpYfkg0ar;cWQaN8|Be zyxX#22uK9DO)m>(ChOxUFttADO1&oHamt+@kGwk?+DFNQR|-byDFo!uq<0Ajh;jHj zI*pp`DtRO!4fwXjMU%>oZ4e;a##qH|t^%CgfTYWYTuhf5bKFR;Ne^^g%T&^|gh zC{-cIc2$`V&0qq{ARvzru?1)|d6wWHg|n7`d{e;iHapbY^Ddwj9(YHoqa8hD?OHis z1v?UA`ywhU0#=ajdzGd#2?nL^cC2%^i#kr~(^JRKy&<-pzWP zasKTPzI)4)30ed)uPScLe8c(i;~J0&2{CcQWH7}E1%r;e*?E(h$uefg@T2kdzx`3w zLcOaD@2-|pwcdP__p-iO?BW=mjj_HOe)_Z-++f!gDe=g#mp=4Dor>h4l^3w*F6Az1 zWXw?pb6Kdqz0}AiWZ)&$imv{!cT8+tAdEzb-t4kOR z^6X@Y3?D{l0lIVvumwecjgR+|0UsZl&K(^4*t75p?4v{mXnvnHQ_}f1ts>4=>yU}=XbDjD9)E?}A-g?(pmVmn)Q}fC7zy3?o z^0RJl_p}1DPZR3T5d9{rd<4<5j|bYG9wuN4+xlMJl}<}8xu`y@NnaZ{Xn&VBgWJb##}42kfU_}y1W02*N&#R$*>0b@#mZ6 zN#eV$fpYA3jNUlK67px3tJjhUhAxy>r zmgX{5E1aI6wtc65TJBVpNgR%@GLjuahmj0qbXI{HkGJ>P{PAgva0L|v`*hSFE;3;5 zfGq8+!`*N`Fj5sJ{IKiOoYifM&|yjl`UYgbO8FpAd|HYy(xT2|bFZ;`Mehv2szwtq zq$L2hOossia)K57x>E1rWqTU7TRozX>oC>VxtfH%= zt0S`o@u4V}6+Im#hngzdI!<@3{*FSVZ@VbPy&QyGbO07puV zHU)^N_inU4tPHRPj<*t`w7a+(d90vA_(FZZ?%j=s`$d3u670;rMyZ^@wZLn`1rj4X z0eE9P#gm)sNF2J=YMPAJEqXLa$Ybq_kvz-`>0~<@?^lz9&yx3%?1)FaG^{ za(Fi>6E|1Whx^o^s#VI8tKFmYUuQd&7G(kJFLcEI@_yll6gD-Ehr|oi^SscM@P-2u zD{^QBV9n1ln*~T0C=D?HT)ji^!yKY33xcZSie|N*eEP%HyC)3nxr%zT#NKbb5 zP#ISwa#1piY~d*4MC=i1x?CwEDS$MX&T8%f&e3`P?Cpz_E>X=@-Rzh{G~@~J7Yv)J zT(%*kBGN~Y7!kk1G~3l;tI*Iqw!w+`piIXBKST~AO?%h@h~0&AWMColx!J}|ud`Tw zEI=c?&!Q(}0nU8`fq9)6S(u_fzT4}zZAJ?6B_=;_S9eQ{Xcr%ieC_n*S1)b1@~UYk zW1YGAFkD<`v~vA$w>>N({<7&W-BNs*dTyZVL1U*!k}3?_VH`33F&w8E&Ry zk5d3&afp2WqDfXz{h{$hW)M#xW26c&Vn6CuRS-w8^hZ7hjDs%P$k{6Ppc7wYrXaNo z)DfzJ2FV@llJNEpJD$bko!wDJ+rH8Lt?_Q-kC!kuC>HJ(CAj=YzxZV%v?>iW&g1)CJO0CAHND!7)h=?_2IY#ozTGC#@@fMK9*uoX-*BcYu>lq$ zWWkOiOjnz!Aw@?v4x$?w4iisTHm48Q%aH@m>u|Z8dlcwFv467)hc}zPO6jo|Z*JxX z#2)dG#lhIO#cIfRz3~bQQRK&L9@;MD7SA(c#H@Rn&WRfR_i0X+nn(VpL%X;JW%eUYE?z7Lo{O0v}r363) zz^wo^(j8N*Aqd@)^&X6+0i5iXK=mS3EgmTp$7&sz-s4!cSM7m2*5AuGB#4OKWzk3>1&u;$v!XiBQB0&1nWd@PaAJ*vf z(=o_~Aj9|iTe@)ijBn>I)usi!es-iF3lw?qBJeY|RVTpY7%j(80v%Svgv#}omWp+Zn~sj`by)iQ z59`4!$Ti{Wn0|VCTG^-!d6ccdbZxI@o5c*ne)xSmi!JDnfXhih+H_Pz3Zb$xxIXfz zFJS(GMi%HLaMB_(wN57U8FDZ6&B2t2uss7T<+5)c&8@RYy%>e*Lc{?ivP&tJYS zl*^?i(L$_^%oOq^M0(hg+CjLmuQ2H62yr(GU-$aW4w5M8#Z4~f%_DKICL+Tv0Ygs-cRSBcHwgWv`u&SQ-JufKRm`yxhmbF zlEYOn-5~8DeHg1XIYbH+Rr}`mdECT`yf|!b?{@cpTnfE9X|xNC+KUT!w7rd^r>8}t zMcH(Y6t2gq0?Lr584n+}2G&3zr>UCEf=UJiHDMwau!Guw9j=G>Pb&bIQ_s0RWEd19 zWSf;NWDG)DJlLj7U7xze>fqrDC?B-)fc~c z{@t4wXXUqV@=dB(pmacFhE^_DXOXD`VwMU>d|)GB7~xtrx*U-%0rBzdqShv`LL?Z+ zGiOWih39S;S$bEy)ocK^0toJ~kb(JN57poOw|{(gmMdPC;aD#rnmL~X=b&0`6za{l zgmX+cginVE8%hE?hr^ZIld%Fw=-F#bY@lz6N5h+s*H1sr(bqFf;k=o91BDFS zw%dn0FnMP0*6C!mLd-MmObG`F{cXLrxafV^)B|-zU4Cy7qBZ3n_ch!@#ws>TOf`0P|B3$?T z&%XK1%in+V?d!Mam*@BzyTxK1BWyefa7|+)49A88x{rE9AM2QxsZf{#Do2#-4BtAg z=tP8C(f-~HlmzC0_`N~OYOEmy2u6fvkE z>s_JLu9R^LuSRSa6IOg7i0VjO9uC0U)nR?aDl|A73Mw$UK$leD4DE$?D@T!ItVK4D z6A&_mRvV#BEM=>2e|KI*J_D$^INz-?xGL*@5ttbIGJkg3fD4>ykLS_)={C_c+$*+R zzHHW8u%RGB75T;kq)i{8$!JIfv7^LCVk>FL$hg&2XoEydd=RmM;#O&MJ*;U)qy6Iz zGR7g4ST9|!(lSKY*;-u*>9n#2t+SkAP?SJ}J{<4gYuVfI4wiH}o;;c#|oUW~{F(}X<+Y_R|oIRVnL0JF|+8=odr9gd$}Pk`l#7Hebp z!v>>|Ri}9LJt4Y24;mZ8`6)Ks7#OaupB@i7eyPigT%lMv|N3>iL3_*9CKg(+OBTpI zVyApoDxWvaV0wSMK@Zr~LE)bGJ(+1SbxPy$2Miv{GYT>^fESK3V89Yi3q%w9RDBfT zTSPj&kgG(C;eXuincS>V$On%=l8Kt0;9sCaU<8_W-|G|a)=I=V!V$-0Qa z4XRfQ72MbCvuBVs$eg7xQviKT8%Gh^eZ*Lm5$h8uVxi1+Noc^ufq`8Rfr&TfJ8*a! z>HR`3zW)CElb4^J*GuKszxuy^-Kd{74W?MfFtl9iA?*=JjAL_WiAV^c%iS(`i#pc; z3J!Or3Vg2+eg}hCEKA2+YfM?Lm*m(Ba{`VrfopX%|ZBz->vUS4k#P& zF8Z8ybN%uDFeAb5$Cj^Af)ke`C!2p|BsxP!FrcQZ@-s|wkRw2z>)wADTme0O= z*+mjps8@y~?$sHEzL3`~duk?s{p(M+x7)r05FE}V1lBM#q<(V;olgToHwB6)Qo^s$ zYA}k7T&Ok{<{*{<@3Pwf{){~eP-(#LU7{y#h%6kvn6zWPH3eaodP&

JOhL^LKaKr7E)#~FLS`G|G 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%0AJzl%U9s1PtJ^Wx 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 z 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 DN-fa_zneZ0Gw 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

_AbYPriJ_ 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%0AI05)U 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

OH9Neet&@2Q%&EWZk4C2EuEzS+dYcOtM zWBa~^;>>Iyt-J}B1@cob&`^8-&ws3LznRU~bTxDC(28z<_f7M7^CIcKhZS-CGYOt$ zbrh}rcusk)$~H=_j@#XQj7|StCFjQz$CnWi9z)xGL;@kG<2M|SZw?GCU)RAqF*45= z^)J1`FsHmCM;Fey2)7p;zKb=$&)p7!PvnQY*N>a^=Js&+X8o|(T<`1K$L3{gH0^JH z1K8!J1L3Ib=Hcy6CwP)4(c0HJaN9xaJRot>u$Htiu<2W@XRa!^PDn>KWR~B(o7XFd1q#zFrrWL zH8%Z|N=`uP_r=NrwkR^jUTbrhHiE4jBM})7R^8*XW$;2Q3?&7rXdozv@0b7Ug}?fo+|pNKK+> z`S61TPlFB(a_C6#yq-0$mg++A-{sY$12`yueIi-|?IWY1kF?ZuVQo#sS!b#8qdDar zQf;4a8~Z|}S1D#nJg znms!N61$X4sUYo}c*7wN12>)$Xy z|5)wr+Ig1;%akwf-yDUM)x)bV37+L){;=6^F#S+0_XpIqXXw9eSF`2zotc~8-nAS3 zzZKe>I(?kwKEwsJ>=>2l$5i_keRhCk@3DdW^qevc1Qt^IKU8uK>VKYrW;f@h$PwI} zNgYgH9$DRA*3rc0ZooggxqH0C3`$<I1n;mRuAD(=50IhSL@1Hfv}?FjO3Ko1}Ct z`P;)gWa!==6Fhj}zS_(dn>92kYb1E=q|>{*?sgA1%XNOef{-N50gVOc5SC03f6Bs% zD8-K}N7%wj!;^n!PI;)#@Og9F8e-kgN>0`!Za#3LUvn6CWTbFBUqh)2xZ2lsz}_Z$ z7b^XWMGiTM9-;n%5i1eYFBc?bQ3rMp!wTE&i@V+Y7ADk6hY@cELB>SvP!8BGD!*>) zT~@u^d`j?`(yRBkE2Kv@i zXr0$_;#!@^~} zXMr-Sg|612V?xucY4X<(Z+35QZ?~_y$ed5SW*`4AS6ke?1K=%Pl)J82`9GK7iB^j^ zm|e$8@f!<6o+%o!UNkKXsPURka&YhcsX1lih2$P^ylgZOgy%knAwDWOqtFo8P(zyl z&awJM+}-bYzn-oaN#`S2g^2pkC3qnI1FNUB<3B=!jBRzXwDUQ3>>ePu2m$)AE+g0BcVb(>kvm z(~-`BZ056q*U-nRQFSjoH#xNVZubV}rX`5*q}Sb6e(`--eHSB0iI~8q%w6s06FkRS zH|TV)jBtkzw;ACtwX^~CXn~RRVL8Syj-S7Fa>MvCr<}OUKT%+VNT$IBOK%!~RC3M` zw@)9keXA9%&V$4t!^;;f-P3jGZHuiwsJj=n?wA-)v3dTyGM~FH2F{j_b_?Q96+sNv z?Qb{NRkOI=?^?fJ;JYL|6zLAWr?mQ0(ICb6vk4x@PLJ6m;72_mb%CJ3%#@!2o;|zv z;d$7a)-9T}UM@Q@45!O*`4VOpnr zi8gRP>@HkGK8JG3)f{i*Vu*EK^1(y;`g=5GA+fl9c|Z_yHwUct-J7M~yc7x)E{~k* z)n6g#T0G2toZw;i0iDF;(hkx{!>$vukzySjy`BSVhc?~(>E-E(^G!FzI2c^X9$F2j>+tgcit~-F|8jkpwD_$9yXinqA*;mS??cT1fa@qBPi+C7(|M>uDr%c|0Thb zLh$DpkJZSE$u^gp)X5P-76a1-2ni_!G!)K`_ICqgnAZ^!^dbVX_y(nCm{W$!nOr~3 zDI4k8laiB|OoV_M-#@-ek0(y~D^1>ci`0S)9XIl}(yG&SKx&UGRgTz%?7^I=BAw*f z@O^cQ+4bwah@;89-Q!N^FPE@E&blpHF31b4|6FYIVB6eXzj;{~Ak#vJ>3mJ_zz(p_ zk?aHt!4~p%Fh_0OZ3BeEt+^Z7S%P1H`v#FMtC(otm<7gO9nih9#e9T0<-&G3_p6eV zlR}Q7D9NLS{Y|AVR1-fy5*=fm@MA~l*SKtUx{eyrq0~o-FJdmhB|5k47|qsQhnvtf zxIpo4;nzs2Rk^=f-QR(|3*79>->>1Q!wk^&=I#ZoE%Uf~0PE-^!81?VrcUkrA&oFJ z6$|JJ8q`x)FvT!PWy-r3?2X&av7hteTRhf`xrI^-*_o|U z+~a~~eec{PUHi2w==eJ{({?Z^ZXgsryqaN5=wpIs3mG6L!~do$NPg}L8h%io3Cs6H zF69+8XL`7e$W}t#Ee$eJMXW=ypOlbd1SuZEW3f0 z*3?61WjrZ4Il~%>I_8wMi9IS&uazhoo@M|_7mkAJv^ljwfsa+#yW)NA&xF%;bWpKZ zrl5Y>=-1MuxsY+3RC7;`(G5lN?Ne89k#Dyct$4G#`9W83*;w=CB7}|rf!VKJ!6WkL zRU&-s3L^2$(H?p13c7qVlt^65Gsx6CE+stRT&8|$h-D=r>?h5Xg-BW_+V^^@N!(9sG4J(i;QksrNgN vPnCNi0=slMfK8DyQ!#2xEXGmRxtvP#KDpj%4@rz9FVuijUKb6g%#+(TlS&pwIS6==J*Wz&Qn)# z0o!C*Tj_ceMJ4VG^YR7&yX@QVK6V8UtM{L}f`5r;i|rgPl~rXdH=tJv^06x@2pjsT zE2#7+yFXAcDn9fCqwg9#Kd~8QW4Bd_ug6iz>9vkhr9;J(l8SJ`$QX{M+!R!e-QcdzHS`;)Gq_5NSt?fQD>YL$*5wZq&n+0(8dYg&U|O-)G^ zJ&jl*d!9-Ou!q~Ya_g_)5IQP3MYj;5CF?k#r4meQYJ@x<6J^PnHN`~ySwB!b5KQRK z>Rp%G^xK3l{A_i)j#UE<7&dxEy9o7qCiF)bG)fTNG9nzRF3oCy>0_ieOk)5aVrWsV z?65pQwo~j^i_P8Rbq9g==L8SBHS>J4x1?2HT#nsB7NwJ}pg0i(W@ySBPw|Xpu>`9M zG#&-e?S>Y6Yd$GC?^Qb0l|&3Z86*OlpK^r5i+x^Vgd*togweQQrc5A?Fld0Ade6d0 zlx=pW>&RP2!$uDY<+*~tjX%POKW*Gn29mC@4_Zzk2t_L-vIY(l4otKiJ;W~1TE_?+5;YD2Ch5@Q0}wDj+(#IM?v_=U z2{{rxkXxpk=6;UEE%2Qmkw4>*BNQ+`xJKhMSEVykyvd{ zVTc&Ane)=L5Vz1rL`a#A0RC@+7Lr}Gu&#i9P$xhP<1i-8c7qm-i;0i#-p*F58(eQ; zSTE7uM&rZ7($Y3lL+3N{$MMIayYgrt6M+ok0FL1C1?3DwAG1O~V*0QhLJa@gqmq-5 zrIeY!c7`y!>7&93D8XbrV(O^EK#513BoA>*nzIBg^pF)|7*7@uxPmPnKOH7ZzOLg6 z5wCN|P65GAAZMSNi?Robu8|^^hiWb6I%l{M`T}PvVrXJcAjeoBtlm&VZ*FVMsHS** zW803KG6Z@J@CPS9U}hVZd9jqMgCT(L8<=M5APp-^p`yctjz^lUB*dsMYm7-Am7K)R z@8O?>@U$~UwOJJ=3dD&l2T!{1+EU-Kh>^^5Bpp;k1~G>T4PPiPsor5(L1SMzr|Zar z6clW1^p>g1=P*x$RKwQ*)5Vqq_>;IjqJwkzgP@pSBLq?~&O-9P-vxtu@t8R28iKyT zd{^$*`9T@;V@!>&A3{$pQ3b3!WC`W2h31cC@)-*?e4-HJfaK8UO=x1XA$lao7-NDk z;AI;Ure>%j+e1Ydn$7)C2swv?Jj@8i0^Tc+;%QG~4Ss}4R_n$f6~K()?g1oA2I%wa zI)KBPW$JOGf8$Ev6WW$kfLLP|h0mx;8$GsA<;l|HLu)b_LOVBUu@Ps$@%)|%ep~3} z4r5W-V;-~Ka{hJ?D6?m6)^FAM%&P&w=u(KnZl|&+WcUjW3Xx2uk<5sSi{Rs6LJ}i^ zb%rECq&}(Qt0N;`l#Z1cn&%`@W|2UAx>+KCM3osq%n94(Gq z0RMCy3Kp2L&xEs=W-RwMs5e7jAv*P*&k*4lN#LdhxMV{7OwxAB#V7*)cCAb>^e^Zk)b3i*T} zrZh`yeUTtSoI)ZWa8p_gfqR3;STF;ZXN7W1viR)v87r$vrq7MAaPw_F{}*|(|w-`|$}Jl7iq%mNL04$vG6 z?;8~G!7$(0Fu@4z9mq{WVF}a6#C>IJUQ&V^R-}{%ZI113Q_UuDWSVDmPP`-}YNVVE zJ*wwg=RsC6BVJ% zX;&bK30Y`E%J4QN0QIz?D+Dgy2Zk7ks;cp!$iWqXzn!K~w$1ShoZ6KO9HAdCOqhaa z==J3Ae}V~}oSW_GIxr?vLPjd$p?DE=bu_~?RwgC@{@zmU3YhJB^H3H4T)s~c)m zcto=$gZKdSR;*xGL;&}gFykRX6+f!*zcdV2AO)IiSNL@B?cNnMhalpYgl?a4^ARBt z+@`N(YLAe~5k%%qr@&GzFuX=g1f$@X0RRy;=Lu(|AZrL7hNNb5220A~97^p35luxw zK`4z&w`@Duwd(2|>CLa}K%ML&(T=vepneXh&3YcT$Eo~0Jiuy!*fn&F^TW#;XwjG8 z`hpLwZv&J)w~gVLRx*1E`^f@gz8G0~Z%yYJ&!W~8YNeKcrdu;7^@7ofVGr{*s1*(%9n?pRE)w}9+9k!boV0@l?heffUXY={|HGGYF4Qk0M9lLQlB)W5ZT;@bJU1pLH#UL@G zrDGef$5KDvQiWU4;DtrwC`DWNFhT#|$}U79SDzi$%DKmf!BbIV7Ig=6y*e25v^4 z4LFCyByGT{jx(nGNY3#M@^e&cx5{r^cHoqd}U}55^u9`i2!geRBQM` zeYJq)4d7S-{c!l3F@cxFTja4%*YRKFFCP-pjec8edtkkEA3o5TS5NS%J6?3|DtmBJ8Kb#XU=bzKBJ&YHUjBQ^ttw zpY@TBCeG%#2-6NM1}IiJvLdUz`s+Gs;{wyt=&#~O_{f+65(Bo!P6p(0YffH% zq@_1Y%yl84+q`@q2O)@NV9qS*XhCIsiF$;>(NR3T&Du#tgBoZep#R(TjCA3)xS! z^!cjjP*Q9ft26<*2EygAbTjkbi|$)=pd{XhQ3?E|O%(sXjDcav_Jc{wUW9mw3OXLC z*oDxak|r|-VM>G7eKZ-H#LS>^4+yoc=(XDzA@l4Q0otxh->!kdDp6+6W)PdJ<~BAk zYk_Gp*N9fimR7Jw!5kPF>-~j&i8JGL9bx=Z@=O2x3u8uHXSu<(7&@Kb;VAt~OTTy1 z=7xK*8^Jk`F{?e;<1uVL>hwi+_rebl@`8R2ZZbame|Tw+JK2XEo*@f@RW^~88!D>k z0l=93XrlOnKMQGxH~8e#t+$LZteZgR(aw=nw}UE#Tf?KvO3)Rr@E6FM zK@p-lm5uIBi5Hm{m#YjuAEP=RSYOvsR`(*FOyMWS3_M}zDFHN)A=B)7}|_X3?`Zj)mXup4%hV~##Tdo%c=&mfF1^3zzT3c(}e5Bu}2679*BHN z&@7K}@&RhX2;hrlM@lSh%y5nLc9hHSR9za=N7&Do_0Yl%myvA>mOz7F53B_sNtPA~}t zI0lb7L(ZH#yXomVLb0wdZJ2gHGG@G_#hxRYb(L>nFlvP)E{d0C0a`kMA!YiK_je@+ zKHjpxB|lw!qG7I%G)xTAexza6WS2k_oj@*Wc}LJxm@BG-bdV4*`i%D-o=>5H5^I#U zaBDG~({)H3YHJVz4%`In{WENdFfe92cJ zUO3KedZ3^#D$&WASFH>`M%c~DAUp}t!V_Z#tT5ya{0yo?=ohwICvKH*UT4Y^EuCgxPRzmoS@*Xbeq6M2 zke0xNV6g5icX`9xua#vyjPS6HY?s1e8Y?!*WuYukXqid8fzDYplOR#c4tKHsM!_T+ zP&2wDfvphE?^{Uc5@Z~aGJ2w6Vw~COf^mQto9Dv{;5jpIjS|Tu5KO0B$cEkAf&>wT z5dGbsuH$K=zp5^;o&3m{3ERcvT^6f=e&Sj04%okl$Q;O@}?eZY$H_NUHlTk#71|oVlfR3IObyX#&Mi^ zh?ic=C|Pd0|Lb~^?GF(op8I<=*PdvYa+OVS#de*_DLflv_68?LBtlbS0h5aH^4~BU z2eF8WzT@%0`m_%1X`@HhI0KF30YIPa+if!UGz55#v~+kvZPXQ>Xz4o%#-PZaEZ+2j zxAWlr2)a28SgB)dIx9t{j>oG7>!%h_3qcfORpbn3Rp_kgi@1H_kAW{M{*d5OptVCR zN>si8+IGuY_#J4Ne~1)$akq$@*Y`K26$OXjBMq~9qG95u;ZeF>6!I? zjspx|j!rpUhg)Ey2i#*ZZ|A>UZ{iSe03G+fEV4mMUt;Eab)=<(e48xLcP=a|neNSS zTLmxOh3O&9t{Dup4F*l);L?0vP|~&N%$Q+?+9qp9bV5n0sO5D9`U#lp69TmkD2~md zsnImwz~%XshKZ45upltESTw*w{E&u;5wfsTR8v6$KlWhBKzy%)Ky2grmoW02tix|L zdFGu55Ac*c<~x7aY*Ho0+(`OFOUDQ;Xz2&Il;7Rk)nRzMrM9CGLd8zGZ5_)7(SNh% z1QU=RKsr6$q0|E8%(GwT1I=L*Z9)tmw2|WTP{OwbZoExO{0{_C(2y?c80PHt6Ajb- zM8jMaatPWuuAEUM;qL*^-d7qXCP24>?Yn#xqT&{75dxy!>~Vv{q77B&*L5H$1y+qN zw3xo$fw%F(yLkj15ImbFT6zsy`ipH>+3}0l)~qF}YoJ&jFxoM*4hIkG2sRBgIOp0#Nf+h!)i(iXk z!i%UP4B&7Rq{JhAVN7xEW~7&|a>Rq|2WMADaC1jB(1~FC0NIlBn27hfBH49xK8q#9 zUY8LM`A)P-R0%?_Pc+P$YJqrw#O+N~$!6~PI5EIVbP%$+%1+mD)xtmPGd&N1fy<3) z))3SA*?#?nmi~6L-7fL#xwfpEZ-@?^I=Xrt$&bIO7RU%KR$hF~6L0=)VlXzn`m3n= zLpHG;5=GNBvP5S+qMV{~%u4Ak_PuL7;c#z3a08mIavc?@{N22w!5~4|2M}2>#EN(l z>}nco!o+l4exYIdRc3W*@n&5vf478_HU@gt6c(5fh9#yfPS+82fWSuG4La>*vxz|y zDd$jGE!bEa>y`NYa9OKPYUp8b_n0>{G zx%C>eeJ%fyhFJmkti>6erO|IcC=gh5NSmfbH3yF#5LFze?&&(Vz+DIKi$AqZmn;sc z1)ArgURIa_Fd;?u0lLoRticsGouhbO6ig8i--0lP7)`!@Rd2hx8|w2;9nG#g0>r0U zIy2cZCDV>7Y0Ql}=0_Yu$vJ#mbJRe=c%Nf#bq1-_|3KiZsK5)!O&J#5s<3Gz0}a!o zQ3^xgxBC7_!~Bh&ET9qcXQi^}h`W0BX6=o-64>+zT|!(s;aO(N#q@L?4~3gw>BS9n zgWY1WH0@@Y)Yl-!ZNT(xLV#dpfKuj%r4K;f%4cw>Gh3G{)^||6zpvp7$R^Dn?oz^Q zJOafPBSAF}{VP$0kzHQ$1BK+#=#0DkZU)2zlI%t5REM-nmv9m0zLnjh%U^)#1{x-d zlhat~xdwT~XBsAzt)b@J?sI;1GrPu18v`|uvA2u&%Rn;fhgWjoMjzPIb>Lm8BX3c* z*y!_Yf61<0agJPW)m9z?Etu{pTcJq3@ zC&qDz*ErtRPPRsSMaOt3{A;?ybF=`%xbH7;iD*Gn$0D*=6qJ%lvaHQ#S<5H*^uUd*!H%ecOw2s5Cy zwU1k?TXQ*{Sw{({7A-`9(l?GwFeHt1mN+g z=A13qSpdOcSRN|W*s^v5%t&NmxBd`zx2Nk!!|S*J{yCZLyQEw_r(Y!vYpu9Fs!B?I1qG-Yf2AsK6)E6cak7aHbQHRop<=4Kwg)HGm`q2^R9iA4et z7qU4F**M(V1_4di!{utBW~b{wkSNFN$;_7NMT&o^9jmG{M_nWhCb%E0(YMT^3d+D8 ze!-mNrxLB2k&xQ%kg^SimQUPWGfFDOB z9o|@kfvRLHKIi|qk(m*_el~d23Hu{$kC9@hhl_)U*M%}2r_wTs6i;M3hG6bVI&@hi;x!cs5n^1E$ zus5&i&ooRour0?yzF`h7iFbaoj%Oj9H~U@BrR@hl~P75A4k=5X4r0*AlfhanvpK2$S{0$ErZJGsHUvOfmoi5aX{t z*arkuAp^sG2NB#Ks5!Ub2)TC+vY$|MIyI!>05~<`6Acs3``GU`O5KFY{&XF;Gr&bM z>k>p6rLfSMj|^Zb(b)#w4${XA2u=WGX9XV^xFjoghohY@OE&+F1vAZ9_ssRoRq%^{QAjKc(gb4by*8bE1voA^=}}qG772(m|3utM6fA*3Hv(?DA+^ zT9-iIizcELt7#0oVgex85+y?$9LzG5q8DCXiXRy>kOQOl4q7_gE$X$LK_ImGzJ)$c z0<8>PNeFNcRlfRYiE;$-dldph(*fs1Ch@@jD%#0C;PEk@{i4uuxBQPWX6i+7x(-AS z!wbkg4O^YYC0L(91#Cc`vwK%A@cD)-k}g|?b~w$B?ByN^YM_chO9w{IwzA)SADP}` zHOq}P2HSA|z_5Y4*>~d)|My2r)IASpbR`;~axv&0o{Dym-iu3T^=M<3^gqa$>5dV~ zFY6H3x1o}tt0UR*k)0P;n_U@BY3BY$N@_4~IvNdCCB9a1MUTq2kciZA{SNLlRNUOV z7o`GA@^%M)s;dFx1cb)7euvNh>R;@w_GF2&&PH>^`?VNgRO$z!9YvE-i}!l_YPZ38zKN2#|BJiS$5`si{RjqmcG?Cm7;gCs-yH#rH7Eg20s^@ zU*V>XqVN-AW-a=Uk6XA!w4y=o3{{$=LT|bLVu^yc_mM1+e8NcUPl|T_6Bsk6>xk}- zZptEdx%LV%L=^v_VIBpQ9>YZCLuYWju?2;KNRa!&vw4iLMK7nTmlUF+@$@reX1m*e zwnX7NakNA&U!Pc_Vy7KEF=m{f7VTWm&OpqBXlMUP%?auy$TVnl)$zZRF>|^OF3jv3 z2Uya6HM^X3H$|yR_}rVt(qlkN$8?$170hgICyVm-$e3Aq<|_`mndWa8Ge2*M`pTH8 z|3qEIVnS6xOP@ULy%Ue!Exk8(0__NtG& z#O&5yzu^DytD~+41!XX1z+Oo-3@!Z}W9Is1_G3%bDP!h`q8-;F{!?`-(}3)fwOaD%*asA`~+hL z1Dsz(JO62nnbURrm;bWm&t!E?xX(zg|BGQ@J>$pjfU08j`UeEjlSTklx>Nnkx#uZ? zMh!?O#7my(Br{)$WJ&!oAgE<8S<0ID(WpiR_O!b|5l>#3-s_ zO?ra?Gt};S^FQ~V$pRxNjBvV+c+!`rMUU?Hr-L5F$rsq;sGevKh|z@T_vmpf_}`B0 zzVSfG@g$m(ws596q=`}NAmNdvHZ*T+NYa^t!Gl(gWJ)qCM5oQ3^+xod8ztrB5ukgw-GdCjLau~iWLnoeQV&JZ zRP+LYJO%mVus5JcdcvrJ%t8~zlTyQrFJ>vieN$GZSY^y&EQ$l*iOh8#(+d`lJ~!77 zv?-wq9LsP5%4i~kfAo-K(a7UTz0WiFD4(u_MNr+aF7YeW1Wn|6tc=!?8Ts_U7A7N> z8ju7R$!g-U%h8!_AQ z-HtU!#}-hvLxvl(3a^b_ZJ^_WDtN{?L`?aN*Jygo3%r;%ro{-dtf?wz5`9#mRFlx9 zDJ2OQ4Pfz?=UB>MdzLYjd`Z4p~atxGCRb7 z9lxMV(R9&zPx1j}Oh}nELYCDO^fY5uVROUISk$~J&oo%ccP)IsF=x+;fu(7>CQ2gm z{UvWm{GcEB)MTn_#)u(JG^rHB5bbb?e=IS8$-Cb}WR#XuRC5JSl_*iP=~2Rt#1NVd zjwSk7z`1Z?lJrQXd$BoTd6uOqjvphlak>s>%wwJlzZMsYQ2p81uqobE4Ur|M3_p=D ziqK!wec8v?3jbVMoiHLhaL@YQRE&q5Ao8ANIz!y$lsr13Q7udMS!5;!A(UaAQWaWt zrD05KhD`L`!GOX?P9Vj>h$NKhgm>|jH>loV62$_tJ332|U^Z%^t;(Yj{){w|aU#Ze zMeIUDkvC*TQJ%>>rE)B%$OBHFPz+B?B6GS9u1|$y3A>>eJ`+S)Q6-Ke@#QB+0|sB{ zk;@Fjfa48CVKj|rI7K29XM_!Dz(*5Gm@4?lO=wqDb-y1XEcc z1QUXQ-H@=55#_lNK?y>SAgJ+ZNX*g7PFSN)$TJG1KS2jXH5V00FcfNN48(zj#y!oG z>_k$)!(e@L{0kXTGi-#cB*|hR<7bEEk2qb&FM701j1^r_Q4&*Z6vTM-45U%ICv#_K z6J|6z3#~Jw>9Gz)TN<8EBI7;_+eq6JTn7fA`h2$isY$Uq|yq~MN`#aRFR-n z%&bxL=occ*opX||nPbcy2`XbdrZLH;$?$X?eYEn3DJ46<@cDC1z+YJ9*^DDtQjGofGzpimgd5Y#v#?wqDMN;7m{CwO* zn2cG5V)13w@q^&ghkX+nX;FD*(J6Dfj;Tzr!_j~^U7u)UQh0_beU4NmmK~q2gJcDXnvg83igMTYRSmxvk>zD46?-IdYGV!{ zR&C-oxTH;>j}2K0R7L!yOni?+O2zLow1 zDfICPGWruh^9Uwrd z87ODX4o4~vXb!Z}sm>y4i?cd$M(|%?KV@(u(`0U}U?viPJl%kO!^CZt!&8Q>2(ua} z%#bEH4X$n7GZ>8Tc-U+hB19YWrbiD57MHNuK-ExmGZKa%YSq-B=f;jUnNq!mA}!*| z<6_eypCPZHGG`+CMb9qu0SyuerH;m@>!7GHJR$hh@pjLku^s7#=%{@|?TL2-8e<|7 zt;^Iva8-P@c+huj)M9xGUpb%45@kZEo2E$_zog_RNJ1lMz58=pT zUGx0h;P^9KdL;Z#(P%t3lF3-YRI5e&;&dGvD_p>3Et%sq9?}z%qo6-cG5JE!`hY|b zK*IUJG1vukMj1|27=?Mv1u3&>PHAB?>U45^d#h$KVHb=HL|`XI z=n|7A!;?hSMu8c5QGiS3h`@cDC<}`NTcMIM>)uD(7Ay`~wFLYvJgv{O6H-OCjyk9r zrxIdvrJHhW5}+9h-ub!ds-o{|7!n2NK(fFfKUs%om=5+TK^-&pc&rdKCE~V52y0@9 z>@+JC`j%0%x@R6@=bF5|p*D!y=W=3qy|%#r4pVvk0L+f*%)#jP4G z03DfZUc{)nNDSSG2*)-};u>uceTg7^h2TXn>$5%HaPt5@HjYT$&+;dhnG0BD@?62#PF(HH0nvIc5g{DxlQO7;7EC@F5k9nQJD^6e$8Kbc!>)K#65$Q8=LLI}rc;Ir41-LXuaShBw@X09p zpB%m`@`cWledZTx@Oka0j9?lw2m5 zvQ%c{ZmRHdYx;s-1X^#zh60H9G~1((KXd3#8FoCv_ZfF*UiU>(@JJ3GVp;c0O<>UF zCUswv88e)YQc)uKsKtY@C-4m2(_k&u##7BZoAAIw@IG(4HI2`+5!nNdW~Zt!?vE*T z;Qn`tb--^7MD-T~9Qnd4e4(MxMh0~iMR+q`n7H{#r|TFqeGSnAfvAKjhX-|E#Hq{- zWKJI90`9<12)eaWCl6bJym?pVkrIrt6*#xqefIQCqiPuGDn-0&RD8i6ImO(~~GPDB-- zKYaDh27(51fDMe$KyS+fuZJFO@EX2)xjE5jwh8I8Gt5F;XMI{kSQ+91E$S00=k_oR zhD+}-U@sySc!|?fD zZ)`bJNtZ+&I4M`1f;ORP902c7plh}IOnJsUXuZfO$Ul0l{8K=niYFJTwod0I3~1YIaX*|3d3;&JfeF5 zM)>%r>-gB{vS7-B=ILkt#>Pt!?`%zD@P-+1;*flX4?B!BC+n~bFYnm1$&eLMG8mhj zK;n|#*9Br?;^8g^yux5oaV&~cUdE-CpG5wI(G26PzxOCrV@VBTHKfo#(`rQ(7%a`R zc+z8raXc|7JHiHy$9P}B6d}68Y{BD-L`67*9cF@SOYi9dYn#JC2=N)uOyR3HBz)xv z!7^K&5SfXD;*=udI1u_m_6&PE&iHeQLahX)h2dDakS39Ix(=z;%n$?z9>fYx8Yw*i zEAhqMxYs*7vwLbckvaSi-aG~_`7j62e5y=IS{P-24)JyOz`vI*R0G)0PxBJy&7BDxaii1^Fl#K!B;)EMrX z#|R;&%LvvX&S+6Rn-I0b)BKr&9$x?B1@`*$1-2V13f`6Y42_2tZ%j#EpA!N%1v5wH z?PokojQvQ%*$BBf&tKr*FY^5FhQ7V@ zE5jD`DUT{AQ5wJeJp-8kFGBBXw@#gC(j&}G&`HbI-R?{D1*vJbx#y(qTPr&S8undv zx&TU?Tz$ItgC>fKv4IK8n^(+Z5gLOM_jAgt&?jDe*41`=ZD1|uV*^`AqvEqGk~DU_ zss(sz{DHy9t9e{g&v(0CzusO4eV2}{R}?pk5zv8MDY1y9A6}k=OHQ18#ce&scB=*h zb4Lf)JLQ^Key7%*bYiWd^=*>icyDG87HBm_k5v&$Zm!I`OSx-pMXhMWQgR-Lef2vB zi;lJ_s8?8%gmT%%12Aqi-=(@4x7`cYm1~!i+W(-0xGnIA^ zk#%-sD^W>z1{>913$3Nf)N?dTQ-;m;6X0ua+3P;iAY)c1eJ`+KL# z-~@=CGS43K>SP;WoZUn%&0!mGCEtS|@V1ackJwljn1Z!^*oj^osC)AUV{mt8WJ5JLV2e59=KkwO%Y z6B_8*l%lFLpfx-J9vitfut6${EHUxU;7Su|X4XpkAd+jKwjd0WE-t3FXX#kVm@zk& zU!?IkT%N7~rN?m41L5V5u44Rf#-=!qZuE zCXH293<3V>mRp3Og&-d$$I$h6eOe~t4iNRX@KNvr9}T))>y~9C1AAX-*j_$%OVea8 z4Q$GpJS{gJU6mjgz4t|^oNppJeVGNpX3i6IXq9KDpvzw9Syw;=(d9Y3YkJqfu)_PI z^_xPLwi(O7P~Y8JB=a!*CHRQ60cckZgk(k$-bx^~Co7^YGLbA|ap9Zw-9xfw7e~#u zqHK{0xLu+w;a}a9PIw6)6)*77snGjG0cpu>FHnW%RP(P5Y{DZR=tkx-bx76p*mL6= zxRG%f#pNapy26jZ*-Ctp&R~R|6=(3qFV8_I9T%p_=Zza?Rngk4yG1bIZKi0)R*Z>( z?>u)jrO5>mD_ECj4ZXgb^?|vzMS-v3>Qks@R)G6%XBlYjIjU-Y0ydl#SQ^W`Pw-Kh zmlj?sT^9#;n(!P?^V3)XMg@s@ZD2Fo(QHjSShT#QE3!)Av&!;FUb8?8+Uh#-6Q=|* zqA8n0UHY=Uy>_b0b5y1l#zKp9QR;tqjB@ojW@l_{r0IK_8Krwk4$CR=fD>&xq$o_w zw80Fp_XA9o+Dv%ktbcVYEHL+^DxCJ&iF~zmWoy=%Cp|jEMtYy%BkT{c!^rp^Q~hnC znC37jKy0e%$QWP7TG~!-@zMLd$wKLlEDw(2?gK5S>(FV3c2wWg8_LfZ2Uf|xgR3+M zn~JkuoTIP=+Z)AkEL+?zVdUKJ1W}HG8SwGy`iw}mU=dg_(PX*`)0{QP?cdpgNRlKo zFu8Dcg zEhyhPI9@*ZYzemLj~u5zZuzV7d>6XmSEUEtf*(BKrSc5cYHQ*8d=A7)Y}s^UZTPI) zxMiW5lADqPJp#F8#ckl(Q_)IBr_VafK_CfoI=_; zZ0&2)>e#{gT?ZUdi6H`6U_+evG>~Z&q=_Xj&JkM&d(U$xl)y1$&co6`DkK`F$jGfE z7_pBu1&&N03{TWNrK-MO3d@+1Xh!*WEl1=(-v7g5c*|Z>gA}ws39%Zj?LZB(bWAii z17QCZK3bU$pvi_BdO{I4t7nz9qb8iGqd!J$t+K)OT!)7p_>>&iFn=6OCpDZnxxHhl zn@@%@^if&SbAZ%vAJT>Am*;vKo2qpd9qrSR{VE)vp|bhyo79ZDu)y?5 z(BJw&z`7;6JcpHKzO>Cu2lVCHSs_nSC~qKu^sWx@#P*nPW*?vasIXVnBM(9pRG31E zz8$S*5Xw8AiHR-6w?C&k{h@On)fg8}>X!i!<6685w_Y=Rf{*fy2{%w2Rdl_%zJ*~Z zRMUV6HR)5!gulI2yoy;rwId&c6SwMJ0hgij>bFvu(`SxFm%& zz%mf?PeMH{?p-M$EwHy#HJeqF;DZ9l*sbtU<7=4*4$V%(lugS+Eo~)?Y)4pxF*Jge zZj*I8RY~y~q{$0q*{VN1D9Rt-Si+>emuz%;-Xr-?l`*qc(A8isSsb#$zBor+tXnpd zmlU#F(2WkB!DE`h|1#nt=mO{jnh_Yx!CEd;=~*tN2mG$_-4ynh?cqFu4KaOY2+rP$zn?I}ZEB2|AsRJ}%Zks3 z!AIsv4V93Yz!&u{u7e1ERt!VJ=0Z=h)Y2V*xX|dTE7Fm#gI5c3%VYV+BxYIX&hYfHz!|$=nkju}eOA87& zU3hiGEeBIHWL}4}6p+J&d)SHL%{>+IO>0fxo~PQv>UMB3<`hr=Lg5Q7dIagsbI?m$ zc)mSC5rY;H@ieU+L)vMIHz=%xp)^Xi#hfrT81ifk2jRR}L6cbQbEjQiXxT zhBXux>(&sM&Sr-Ee2&Cri2c*wMSPuMlJyA-nzvwjxzXN9X=9Pc_Y=>#JrD=jRCcEx zav9Pykm39RA4kuwg6xfW{`vz5%iU0+nLbR02)kzfktZ*yMY%s3EQL+R(|ryKs`#&t+Jv36s@M<&wW zFD`wHO#4VUm*?mbfsX5&C!P?N?6wiR+C=^E+zNNXDAm%hbud-GxyKeYOo!3H;~66b zZZ@~z(qbu_+s73D)>0fvrz*xNt;p0J&}#{OoE?$9IcqKetLEn_&7KmPDlgPN;UZB? zMU!>I6I=(H7shEUnYSYG{6Xk`Shba0$Ax;xxGBvR&sCe&R=CzK9RJyGg!j9_h2PX! zQ3rH&agKgBEU-Ek7aF4oe4%(6t0zq_ip*gpvaNYZd_~qP+7z^RO=!ebSajSDF0Vss zTTnboU$ycM^H<^Be)l#v#z&&xx=>`_Kkz{>9e+1=VF-IY6lJ z&O+7#x*NF>gnN1@}}Qn&u05RYI_#!9=a*guAc5*}r*IE~Jzldx`$%+BE|&!1Wfa9Xnh!vj$l znZ1iuL#V&}-#_1m(bSA28si4BJn-6dijIdrsakP7jWl+a8fmKP8`MNwIu^LB#b{@n zSW1(g?Im5XS{7$^KHRn`i%}lKrlyGum$?h)Z)GAXa0Z*cs>V^2Lz7jfihxAPSI4`t>*xam}U@Jf)_*=Dczt$i{;~2 zff3PssE&Z^U*$YvUIu?8i6m5?J8T~V&xZxK6t<=}w4sB>y48gZCL+UQM_N!N%J<%NHE1HLQF|ir z&i|CsCEUjjM9#hnDH1LOFO~M6`%2V~DNIIFUEuc*rcD>h|Ey4$4AT3Rvmqk{Cu!r8zq_tLUC~pqrjd*XQujYQj>CC@2|KNLr9_kakN@@oZxO709oQu$5h3peQ_SD` zT44LYp3EL;gIA*OaKlw>K2uVhcxDBxN1}$fPJLDZO<^#8?C;DXx6*OtUxO;8sbpy^ zr4zZcqdh;E(Fji!N}nGyN~hlCIa;d<5`#npUMC3Krpfi=Yo-#!w6PU!>U{$brSh3^ zIFVwDGglWkm(53SsNAs-o4xT(!uOY3{huE@*vM`FKot2MoYnn#5{QdI26Dg49lw%x zt{&d(hM0vSX8|M1Xd8qU*TTd+Q8?*&0I=k6ce%op7z}-Z8HyEwFVo?>e6{W%^<^7{ zWl{QRnXTiyq+DK{;|=|8C&I}w=wevsa+xHRswsx0`K*-uWXFWwHX#?O-8QlL7}XD{ z(9WmoJrOR@B;T%s4WGJOJlz+5Rhh-pxt(rm+F<&uj;GMf97T6L?y{xR(kE#`JI|4} zqOlZUhi zuh)H6j||qgBKfgZS(#T|Ti)DwuA(PwW15s*jpNbU`hMk>yoW*mrWRIR1W^vl|MDF1 z)QD`Sd(vl5hzqhd>Z(#`gW7_2^rp7RvBh8<%WcPZ!o1N$PzqOL{3YkY@l2Z?;rfb6 zH$eCzj}LV_4XS$kp0CVmTDpFAJT0CkSeNlaE8zf)uO#QJuXvbOv=n5weqve=bFmwv zZ2oh31KJhBDipV1^ml;qn}e0KSCzDIqud zJV0951BxkUUGE!Vm@1cg8KOS2KuQ8IRc>p`;~exTiL|*|P5zQaH>y{ysxscy;$2%=P8@qtWU2f)xJs_m zX}N+9;3X05UtDY_IHqL;l025E0IK_jr@32wP(=9q%X6e!xZZ`swHig*qpKn#qAk&K zPld%N6H~Emt{UmG2e)I__C2at$Rz@0kgNhzxK6_>zH59IX?f88UxZ0y{0b4xEFZRA zq}#mnh)NPIgDF*xw8}maX<~*4Ls~{KfV06(h{v}SF%gx%Lpu#Z8B2Q0YN>)NL}L8T zER8})NoGvUF?jjXi2aX?ZbkUmql%FG%X1iTL3FDe>G!#>0oSY;Rw9MNMCXyRW0Pz# zdDP+a0K@5_;s&no=}Bzr5r!-4yJW#AydC1u#wB_;W|eDM~^R#(ar=h6M-RsZCJ| z1PM@iLN36$_e-Q-v98z{A`?CyMLAB!ZWeHYTvK66^|JI{Lf z)tBd3xgaB4kXk?Rs_XE)BGfnz{1A*(bW_(u>wXL8EHcfImVczRv)IalV3{5B9G$h{ zY901dIO2vS14CMkLVw?g$kektxbVN>w2Yv=ubh@o=h)rjTMHKi z8Wc-yRoC>0O_+n7dg#Qu#`xfjXlP)`bAbqP3q?1fD2ywPV{$nP^euMz?5s#-`(X@i zyY9o{?Om=XhCD1$e2jDtJ(6q9Tem@TwEW{ri?0=wQ0s_m-F;w;SXx}o18q8mlrNr+ zD;3|>Cf{P>GN4989HXjtqu|9)qJVKQgJ1sxEE+g1NySQi3@*>XTwIvEDX|BkH+5}T z|_UJ)R{zwceAS$5uf%@!TO{h%7*A!Z}6f~Q$e zn}7zzwK|%Lw56RrCwBgCwZCc) zr$9~AI2(ELXo#loX~2C3jh)wamO$7;`>Jt~%?tsMzh(WtL6_wbo581GQ=IldjM7vQ z`oP=G(lh0tffAC~;P27lz?GTZn(q|4k;;=khSS^)2)}?y7{{~@zZP@CSKv0ed#1by(A6n zs4PH5W!gCA!-eFVn&(vs@G5nSa?b2?w;(@5`BD(h(SOG{8P+(YhW_Z8#5Ik{P3G&5 zSnSU_WVj+#1m7DGM1PypQo^$Sd=4@G!#4woDp@~P)f-lJlyaq8Py+(@%c(6p-T^kw zx>cpHVpj2Rmeh3@29p`zZ93G*C55Qqh)HxsbX6 zNJ8t9{mBz~AxsSMcd5D3uEK=WLaz1r2BbKTJ?+d~l?0|&wwmy5y-pN{j=#Za0nffT zhrwoZ6yf2W9RYg)S4K0$d04c$*31{dos5wA@QF;|e<^5ZO zUZ8@M2)oW#P4sS`rEY;sAMJjYx*?>@BmarWweK04_}9b&+SLnri0_U^B5#s$6UYrr zQ{UCt-%DhhE)v1@RxyUao+V7BGEBbO`~6aGUY4Z+t@ zvLdR^dv>ju>0h3sfqnuQ+LGDPCz?;j*+IInF6xm+1}FF;>}!MNB7^{c)fdkdXC5 z8w6B{eEu;Z{|Qo*Ygp`I0Z&IKRG`Eybkauhr#nVV&Hi03-tXagvGA0#-{t&F_3WC{ zee82gNB**lPnyHY1IsMaQAhl`GC$$wfdN;e%auWqHs5W*bYAmIm4KW z0T7$&N~J|tSMXG7R#j}Y@Y>37oEv|5Bc483BNW|Lh6fh4!#gugi0)kMBBzP!5+d)zlxMEU%}HR-&}=B z^8PIejpy%$J0TcIonV9%l(-+h3LGHm(^6laqehnxt;di4BjI_Tu{OuDHDOdV69hmk zb6*D0k%T5#oH$kZ&bICFTyJ2aiZ=(A~6ev0VI!t zqArWJpAgv74_B*Dko)~ysl~Y!+vFp7`h}qdhCR&ul6Q}4*YMlvMXRh}X7}7!yU8u_ z2fR2(J>B~FOTapt5SBxJCS(S_$|^kHPdmtokj}A7s1byur4?5ZxpmKMH*bI?+R2{56?t^@@|N|b62SF44PWwlyGzu_(5A@}PEV3TB%7`d!y_7A&Amel2~5R23atlW z{uOKlpata-Bt6dCoh6&3l0xSTjGgV-Ogv~;9ts=2Q~NFl#Vst`G(Li-xh#Y5Scucl zF?@BajgkjD4Wm;Lg*ZusZNb(a8;M`f5tey2h0f^uW@!=0=`@MvaGOUth5>G+cfX5W z2zg;1tE!8!7a3098kk-n7on5(!|y(N)KHHVw(X|X=BlJOc#*ml($wRoaO1q!MPA9C zRvWAJsgR1q{=?Pn4hBi}z;F)j3aSVE3MU#}qu)?miNJdSPia-q8Dj#_*=fTsAvO7q zmM}cB-SYxz1tyBu%X36aYizx|V6df=&l*Q}Z1iEFyUpf5>ZtdB{OB!HOWn1~8HjLZ z&(d=j@_(~>3o~T(sDV7bB947}dm?l6qts2Fw@L|yQ(!D$BHn@+S=B>*NS&Hb3PZ}% zKREW0z{af2?Ck>!Ff@pm7T_46_>Rhluc_u0KTLMBuO(MDafKOewLlx^N1iXT1{fH@ zXaXO1%rEYo8me&8S5`pM(86 z+*TEK6{!oQSK6?A9SLxa3C2^q8q}yM*-SO|o>d!36n&Dr~o(I%%$7X4@`P=!gO29XSgx%`&6cj|Sdix-Eda_#@d))X zev!HfW0ksz05Qqxsll8<+EhGPnna9GPF~E_@j`GTnq%Km%cC zScQEm^JF}LO^fE6HrT`1q6bdHARyq7w<*t5J}H4&|HU~r4MZshpG_&-`f%K_Tw=rF zOT#rP);D7kj-K6>YdW?P`05>|Kb1>s81%dwQE{54YFjT;;YAt1refMkw@TgeK~%|$ z)XmAaAGzU0#152D>cl>58S$#YFAog~pM#+fe*l`cOGI?ML#&{_T)|Tm{OQ$A#>4b6aPV)KX8O_c9G_R%b9 zo4A6Qxmr-TUb^@`Hy}bK*X#Z$(ZQPaZSHpR%0U;dyFKW#s?hDi>EAi! zTpWAaj~bhYYsA}l9$%j0_y~)2({32;nwc#an`+kIn{*D{ZldLsN!VsyUb9dLv|cGw z6}@~}IX%3>`k4uhW+ubCCDR@B?IBbm)!P=jl0e3wE`*YTMTJn1y6DNiIVH<{74VL6=d^*TBi>%;b{?F|7g{}H>l>C zo#nKyk>&EI?-&_|3@qZ+BJLc@^@<^{M6S&uoJt}WP7*@|VBB}Y@uUXpa zAHmZR?cgHK5J9D8fKR3M`x~^bZ#VJP709iJY&ntF^70&UcHpay-OUOGviFd@dZvlT znqdw#(Txtt!|*at5!m?$6c2?5Z>v6J#ZOXk6fbU(?zxK$_#l16R{|?t~~ep>JmIPESzB!=&Kw_Zg#pfICJjV{H4bdG%X4IubBupT)Pu-&_u?&s<#^(ICAxaR4UB0N7n7F)FtQ6x48e|h zfqDn%18BiJtoM9G`m8 z$%>)KtllyLu?4&u+inF|Hyib zcYVB$k5V)^`S3^jpY+u0InrLf^rBz#P$t)S%N$o8!e?)pTNYwq%5kfxKlDD_?7pmC z1q}8beKDgGaKL1H82qHC4&$u8D{y#fo9v(%|9&ZT>vF0Fp3V(AWkQkD3>#2@Ny>N_ zE>9t^h=ojQBWOXD8;#n zQl_iv0dw*&WqB6PfB7VJd$905J0w+3<@OVF5SR%@#SxzX_6=U?3y=yK+iYyi;yrJ! zLoK^PMsVkfTXYgZrCqb^2d@3c-@^B&Z}SJYfnAVNKdLXAP#*#$Dzgv2v+%OfmH0pi?@vCvi7t!IggGR3I^`g z+blP8Gbl1lWx%HEXM`B`?oMjF#;fRfyhRzeJ*Q`;UM?D|Z;z|g4MH#-#@a`tHOAW_ zn^`X7?Ncc=qkyeK1b0NM1F#}Wa%N4yTSgNRIk?u~!^QO$&FKoBj=%(#jE1#w+iYR( zT=vv&2aj0p&*wNI)_UzlBaFC|ZuOQi+z0d|F!Ld^tOIu;+aXLKP1{^Y{Fu;ccYPh( z%WVm>q`|M!X-^C=7%bgldLK2O7+UIkYibUa!s( zvhXuRCxgYtyHlv~0s0ww`>X3K*DqU8&GEWH--HemWXcIyzEt^n$Q%4^e(k9*&+)kz zB{n+L;{Su;GXw}&7gvoKe_-H_s-i^PQ@Q|}yl#fcOOyjfVf9f#tBM#95_7`hOI4#g zHypG09V|H5AFlT^p{z*VPS)K~sGNr7+j;Yg^dajm&N%jjKjtYN{xmh=Qn5AiB>)1I8@$jHHj%x!oQ@hBaL zaxCp5JST9bLj*cMIsU;F50lUkPF+o@5rc)kfTz~TEe2k(p9vo~tyIA_LJ1-AhFXrA zBukHtygUcBEv}wkdQnpcIv+$2V-&2V5!;jD$;;-FPqHDF7^* zOlULkG!*xn4?L~xUa4i=pj75J^wc@lGT4P1Si{kD1D?iZ43L?!4X9ndGw4%b z9an&fo(p%eZeM!p!(~tXa*oiup1r<@<48CDGH^Q`^IH!O!ls(C$JD$jS?3{`Lwbm* zDClKIW;Q}YI=h-!ym$*K_mvWq3sxKGDHvjYIjSe>!tbkSeNywC=I077a2 zBy{}<7R8gEG~rWi9SXc~^AWy7nBQRMxPqr?!%DUwRhC^n)OoLi3#eT68hV1yJ@u4s zmXejx=W}?PgFq~>O%%lL>%gt)lRG^@Hp1SBz;hoW8-v>skyIhwI)gA&JS$p3|LUpq zeX`>J4U@fEFvb;4Mx0O-s;uAYcs^u4cD1qfB6V{B7f}W%>}G|7AyZuIrMLxGf$!HL zk8 zL*ZSa;0t4&wF_hcoDq;v?a6_(QYiffSPXswN=)P7_UaKtOVL51GWvDMXwNYKCOgVc z;HkHb+uOXlb%PQnO*k{pKuR9zsb{2?BOic&m7MI$bFeovAyEn#lz%aBrL+5^r2EHWPPc5_>t8ztUmw&u-1V-_-b z95~;>q{67Vf>PjP`!W=9i_iu92x%xg?z({V<(x5{EF8PK(!85j@YIXGtLqKdmkt07 z0{ zYd%)Xy0R|Mq3e|{a5aH+uGvQT>Mf(8S#Xi-pzb{5Co>^7L*pK8xzD1V#5@Fjx$wFL zV}W>u`H<1({w)JN=25O<;P}_T7r{ZVDzN&&C|=V-yZKHv7`~!f>7}YbjV&bCaA;R< zY}M8hsQx^2 zE-*fSz^?+1UD&<%afh2NgL$Ch(2y2&t?0tH7^$+&szMwu^=e=(5MWl}arBXQ z=5gUd%zd=7v`13M*f zDBQrx)m!F&r1_yyf;%WJu&?`}-GQw6*pRSxJt0pjj%Pno@EsA&LgR<|hOO!=eWGFI zjNxXQO-|UYW{;?7@rTN62|OD$1{iCe`8{s{9aq-4C^zDw9m|QW(%8MM=yrQM(7jMo zVPM9tzR}^WVvM>eYPJqaIQjybG@Us2o#N-3jr|fl6%)kz@*Lc(R#<@}#GO-ktGCRb zYqVXqK{6cQr;Lm7RM3~eZ%W1^LaHFSgN0`r)N{AM5QE1BfCZ7B5J;zkC8%N6J#WnS5M^fWA7^#B;C=AXa~vc6o=A>0xZq{;|2SRVV=lDNI3 zvGvkZLF^HtV7`{(Z~&3sc8DzqLKteF&jJ3c4{!1QMQPow1NWB8vPIWet^fuL0jHkc z)&WZXlYc(<0;R#7{}#6yyf~P$640j5DH`?XgOLByDN29|-1?2JKHV6-t(Lp-64@5U zYz3?KvgSVE6u!!CVC6W?NeIs3gX+Jm=)V87q7xribWNc_C|LH$C(s3&DxO3EUi|oc zvT-k5{1&is&SBkMoCEJ=p_WAjanGEl$aVhE^=%aquV7~3nxWh$Xh2h<^#_F%b zt{F2s>Q{F3MGieXW1R9`tFRKTX#AZ)0h7Wp*2TRVNX5qn17-ycTM3a8M=M*!5!=TX z7LPH_fRew8*#3G&muNbiRn>r^3wJI7SM}CCP+AWn$S==<8oJq9NtwOb_TSlF1V4oI za_^no%4UMLvImGw%aM&sj6GQkm7#a%kZyTr#{G`35ndp4jqK1O_d&5FX6gQf*&$Y` z-6=6jHTuAynxL-oV{CcxTZ0#@Vn&1C5(s(4`?BkI<#&$v>M_QW44j|52sWO|nxIui1Gtv-i%Q@QJS=6?caY z)G96oIX(!=tX?$^J3LJ*+dtF(zaK?ax;V)s$Ca1uH&Y^iPCd(Lj zqI^LXB?1ew8(s^@Uy{rjJB3XxyRYJr%oNZhzd%~o87`8-YVcNyZgNDOc;EZWWMh+( z$?WnRb&muo(=-e;igA0|@~{AU(@u*7Yt3Ree5mF7xS5Nn-`WWn?krXY-QPP(Mul!$8b8KIkG%gQj|VIWcPlMW0Tc*o%-5NAEsCffq0S7+7Q^~dY z2mIh7(~DFM1i`_0F$4+id2dXA#^hz6SSa?f2Em)x&{KxvV5*UK*lD6uPClQ5!N6~7 zEvxq#&NVg!Z{l%MYxGz;KR;JfKXeFqxjwyJT`v80UmOv9RF4n=O1!@2mFG6X{Lhim z0!&{9-PrN}Y*#XZQXYtBYjzdP4xR1#ZiHRqLBnW$uOn8*D==I8Ss-_3V}@k4r8NQx z^nnxw4zsaWrt-XVmq+CK)JNBB`p`ub73rw+(96;5Vmo+ojxGR_Ux))44I3wQSS?9i z9qWi6l>m1>{p~4B7o?w7u_s^@_p>wObothT&Pt!$bWzYB@#lmO`iYES|0d`LUIGS0 z_^FQDafsFcoM{UO8{;+LD~Er5QLtz#RxJb}74^#62i=)ifORU(e-5u8Pn7srF_Rch z=;GBiw=phQ?{K~^;KNDPvV?JYjx|(Ca(%zwGI--Tj-POyPq~vH4tGUImea#+G~CvM zM1(PoNYLeD2)bU?BKnpt#VLd7ggp$~($8cB@k&NmgKnBVmfx65^JJ3z(pO*Ki58u3 z$HvFDaLDNgmsuYNxH{C7YKi%{Q&u8w52`kOV7Cdo#;|nO*d+uMfsfw=-5m%2!WwcN zEg*P+2IZ15{qs32jKvs-%HW~L6Qw{89wv2R5q5f4M^%5AZcoX0yV~L7sIrva)ZJC( zGd}x@_XgvcDRZ{ZidmU<{#!BvQp=a1o9z%i>n5&Uy2P41fBZ@^yNt~M2&Sm}j;IHM zjbwapM+6CAA&{5&FYPTiD(i4+Tzk zc@7w5{w@G$ES4F>A#idA&`3gC-Bw=LKaNXJL@pKnyjytm7=7EmJRB8QUryCo`2jWa z0nc69G{^{HcYY-!XgGlU8g%o^8gzpUG7V}>4k+3^OZU|jC;2|K*o=$gh+U+t+8Ip= zV(WO8ydT-#8}2LCOCdXDUv`5{p?PqdcB<|W@ zPOIWEZ^{WT5a1KN+_zXl_i5+DL1N+y%zZELzX*t7!8PrbjG#;1^er%(1^nwG=tjwV zs|;f^ULafG^etb4)>MX}s5-AfYYNTgOVFCv;cYfsgJ*&gAv6K;Dda@PAxfOsyx+(bA$K`n_x1PHcMXK4a`E-($ja| z67@RQGvS^!q3PJk)`J;8-Zcw`lHiES3mIWG)8f%Hl~?vZyb(4MpM!45`}+S2T64Iq zXm%2NcW5&h&g|0=O8U*i5jf~mHk8Jo%}|Y^J+c|%F3zE|6)ssVZm5P#}_gJ%X`XTS)=QO z{l7fne2QB)?A5xDZMGf12CW&t30lK!g`hPDYYj;n|j>*~upde>DnZNA_eT77!!(LFumZd~uk91GuP{HC_c zBiZD~`vlkZNyTgEuT4zP(50Z@cChry`}#1h(NJc8$Rn0`7`I0Ao?s~cYw0CS zXj~8JraQ2akd5}|bHtV5ZlHBzggK6AlMAgj41&kNRuZK5v(cWaYYSg(y8v{x(1=PgS2xzO; zfy5T%T8A8q!Ib?hxdI>&Eund_Xl9a63-$R2mOpXd{2H`ovZx*-(UI!KiyjjyQCG?7 zNwIq%Zk*11Pw{}}&~cnzqoJC9bkdnUr=9-(9n!RyY$#+vC1Gi(vmE3C>`5-q;mPY_ zoD0^z>7m10jtQ!%UGb-X|3~(AxV(BuJRUGNmfzHe`=WlofDA{5vO~OEDfCpt5l-iM z=Rb9;OJ8K3Z&Swn2a-5iI>NwwAtNB0`WUnZ#ldT*DhDVe;|_g0mJU_bv^zg0t&$uz zpld(C45Xs2FdPyMb-%5-P9mllgo3guWnr;^WzC` zUW|@q#y(}rw|F2|(Hk%!O=EORd>hKoLp++29CDWzSd|X5=5`;6tZ_tsvF}!${Wcau5y4%<+P7u}W08Fr443EV$=v9YkkDvnb=8_{<68P# zKmD&?VVjoJGmspk+}NJUT5R^MoTqMJB_--7Y3@ zcVc2|8i*s15eQmi8C^3+tYTmj!lRi7c-!q42;|--B$UUNv-w9$U9fq?Gk~PR13sv!V%)>mT)=lK1_m_@4gmmG!#|h z8CbKenz0`-_q`(A4Rx*u9z`oE??(g^-pw@x8Y?*b?RnOBA<1L$-eSa$FXKp~pji(Ob2*TuT zR?eD^^HoFHYDzn%!HVy{$%2~<+l9~P*d&|&78P`hGFSj+Lr`kAPkSgMph>gmGFAt1~67v+?lxj2?HT~4km=N>G#dIn7`@DzEjX)Y?aMHX6WI7AU zT!<{ZA#kI5Y}Oc_#95kUTz1&7x#&R+;XaVVHnr6`AsR|2!ThxB2)nD+iZcK?WAuRg zw5mVvc%0-_$|G`ljxQEwS~slNbK-d62){1Rqvr59f!Lxmtuwbe?qP+uc>1>_LRHVM zo64c7aFAD`K{a<1oLd|dccZn#s(2#M@7=jr-Vy0UDpQ0H9$$Vy& zm=?I>h-qmX*mSxTqITx^ttX(XDKum-?dAupt^Rh!IZE#u0tmk87w1@2V=DMyWbHTF z%^Q=~LqYvd_AGmpUAueJqzB?FpU(|7-`(#>$_d93OwR+FnPR=32RskB|b$lJuTle?`gy}f-V0}ryfov48tV8#ArKAT^d#V6D8{_Q= zc%A;FNkO1+*2gZY9k!UN{ifnD-BNM>`v*UB7fdmzf1l4WMySS^;$Ul^Otw@+F8Z_^ zd~G=6cf0zq1-&2!i@2(6%R8Y@xiRf1soU|U*bK|WHxDs`_@?+;Gt?n#EC_J;7Xh~ub3!)~C!tW&=&iv0TyboTHI60!^_@XgYuEaBaSrOnHkcl~E^Qa_-H}Zbu~g9&Y@C(jmr!o7 zqsCq}E7Q6+Pi&uJquqAb@dR5X+iqL>JqS^4FdPilfic(QX)m*FZD8h#2t7z|ZX`RK zuCBh|(pp8RsoRfQpTj||5v4_h==t9G6;QB_#fzi!eG%q`{AX7Eh#Xl-u(>`qvG~tV!E!xGB?RAiieY%xx3c8L4iV z>Joqm&t7?cggcQpH&HT|bj2_-vD1-|+wm5LexILRa z3Nxt3Lp~Lijz84WY^rUwNdT7u?;0COx>(Y6%VImDfghOgW5S?kz>Ve>0@7YsGdmgK zT*-|b4kSZ)25Vi04+zXrDfqP|zOXCd9HJ$GZn%1Ut~ku2LSp9$ z@M6AD%dCXyK#co!%A~tV0N-(a0m@Cu#Z}=MgY;MR1Vf|9-U83KonWF`)+fo9$mzoTj>))`}y`B3@%Gk+*z42lnP}uy1>top0LQU?4*{ z8Oo1!$v{pS4%0r1epNHba)ZZ;+86&R1DajD`bqiidW1QBu^~~O-M(+9iML3+jqbs z2mij$H#Mxgwc-%B`%-asq|L&PMc`muo`Wo+Ix*>La%hGOWnOj~%iAr8OhMKZ5~ zIrY6Ca?;5$q z{*h=q9yCAcWrvwkWqO=RXh@x|)<{m-pZ^ou^s7$Uh>e#?<)z|~97B9m~4!$R#+xx9-kVuWm(%y`m@S0Iyyn zIV5n({N86%L6~|VI*dZZs^O9#6LJ==qmv6aLt?g;xHkLw@TpdN-~1d8 z&2|%Bm^foyYjTXK|-gm0tr*I~hK;E}8wSJw4^u2a68R6bW6F%rnV+8dXeR?U#b%ZqblU+fA3 z(ws<%jH}fam8cX*uibO9%%&3ld5YclipsQLywlF+ByXyRS<6nw!Efoz#g5FWNq+4Xt``FP4gP- zl^cGW;SM`Yd(-jSlv_)E8!Ugx;2HL*&SkU9V6~dpp6YGjx0WYY9f_F*H@t>A>6qxq zTvOq>6+iyxI%Se$$g*W>`&4mAjps!a*z&I=YPKt|_{8q=9JY#pkNzJM35eH{&_+cW zN1`AwYYH>8S8YOn!1Yc0SE0>~J7~~2<=n^lc=sCy&$}jAUKu=1gWN~1axgB)b zQ})1F0?V$RP8{Lfk!lT@tLY99@!%vPbF8e*3pN+w^{!YPTn_gaSHg-96^Sm5>0ossL>&`wYcsAqrg4R&pky+Nj z$sy%hrUCzLpK=nlk$^eNi31qU-~2d|vuw`S(PsUNr1i!VM8ab&%S~Var$@mqJJ~Oo zFh|i=L7wr#c0#BDw``MxiL zz|Lg9=u|`yytKmjTR!EW>l5?jQ?7m($*C&UJwkDlw!rf`GUsBsq@LTPscB#6x~)h3-KkMDRYI)%@TSdojMJv^aLC5Cxf?_UJm!oc zd9^WuPp?kG8JrDPpg2lAf7 z^K}3oFtP2{IuXpx+fYOAY{T(OTdp+4aC5j%g4Gagc`d(rk6IM#0mr2Ba2ZLKy@ec3K}8oCnoPRKI={K|rlZ##p5mO^myMR=B=oj6F#C20UAT`Kml@Zqn(SpI7h@!6t*&e&|zP@=WMR%3aXyC)xC0 zjpTefain)ccuGFQ4PYxP_(Lr8z~}1#r^TKT)IcPhOJQCp(S>KIDHD-Qv|~Qw1D~r6 zWU%sPJ5Y@tZyy%NVOTAj%{B%BST$dK=r#6o>Sq-^k3nnFr#x|!NfLDeE5lDi zV>V2VD`e9~QH!6A=(%u5(DbLJcD@c0Xc*vh1f)6eMnO-D z@Cs$*i}Z@arOuZn3XDTeJVdb?$t&mH&x8zKR==7KD<07PW^+vx-WmnZ>aQqxh$5Cj zYqli*K$}Ysq# zg4VkXNb`eb6=FMR@M|Sovad7hW~0gzvkO>;UKHDOqvXJvBVO8INVkMlg7Kh zs^GE8(t7eKL;TU}lzi*g#5~Hl270=INoV1cZ2H-!%sA&$Bqve9-2Ajqo;Z%<)S_S? zB_U2Q?T{2YL!7T;PiB{SkO64}y@Yh|~wy11> z)rf@L4+ATVY6LjJ7z`8B^1P17zhEl7{%>Dw+(HNGjc9(3Ue-*6c-;2?$DgPU4)HW+ z0LNgqGI`uvmWLSV^_haF-_6U3K|?xjj}r>$?E#U?G|vwtoxI+UTl*hd^R7v67pODV zcW`HdmZ%7^`j)KIG-pQkJ)iPFJo}Wn{zd|L@p&X?CFXzH;&wc;M*y6WT}=`Yo%401 zm%_c&tpEJ}Wo!hry#BMQ?zr7j`KjYgjvobKFLlJ@(p13b5;??@?GP56~f~T4D z`?>4qMb$N{0a^nQZq>fqE*FbphN-t^q&!Fw#b!aAIKi9cXe6j@lF75)ZXq*^zvfdG z^w5E*R4Q(zr$|l&(XW2ZEp@AA-BwXO(eEIqMd#}v3X9Lp0i&6zFRY8p5!ZlyDaaZI z7Gi5I6c-Xas9BH7xg@$Z7i#v z7V{F2U0=uWEAmcTh9RUlXYAtDP+YrqcAx#UPnlE}!PwjH{*kYm=Y@}wtgAO3Gy8uY^YQ_WI^rpDzpLz{g!{eju~fU>(^J+MPkybq!V|@ zG~zFm&psoxv3=bJG1*j+cc>_S~O-O|N~FB2^8!H<?r|y4>`d@hRIUpYnm*De*Y&KqRMv-(mBwAJ0!5q9}kL;T@4&$Mbarg-i3Qsu;0L_7%*_pfWW)?a7WZoJlG*lYDkwC24exU%g0MwM zxVY)#09yP>!LyrCPffTqe|jniCqE>TW%yEz2HqDPMmF{k5_8DX$ypeI0?K!hoQBwa z!T2&#Z9*yW$zFe0b10ET>CM3F6BRNWFbPCfb#%UtV6`Z`7kF(f*a3#kDg5W2jJ z260h}T~~n4Q7PH(BYcw(!(}8Vcpq|1@hJ!NGaq(55)Chou+ zt7M~{uj2|Seamd(X`^2l8ipmP(>2-)z9Km40VJQtsUYs{0<?v@IKzVRw3n&+G!+a9?!chNRFI#Oyb9!A;3Ps!KKMH;qDzIEi!o6O{w{1C;r9L0c`uFJWMiuqzQ7w3F8l zq?@hMD4<Y0HPv`M`9h#OVFXcwhEIRiu?O%PSKwaUZBuHI1X$hXDf?Prw zi;(6rk}E)bWu4w+-H^Y2^*9w=jjx`jf`3fLX<0jYbSsfRbpmekG!?XNPE$etcDa4o z7GXl*FaV$PVKbz-@o>b6OqG$G!Qh!Arg=pa3-BmhaF|jG;J$nuA6^ll4u;wwW3MAs zoqTw1Q?So*pFghy>-yzsqbJM}$fv^4CPT>Sa1$FrJRlf^&gE`u7f%m%vlTS-fi1i} zmh{kf$AVJjY%2Kicj!i!lVQ%lqW$YFy2bOUpgV+URMN z=2p|ft8mbRHr$3$v{1XkTO{cnwGbfroSi*07Iq~cxALVkCB`=dMKE97=n_2Em^jYYQTOnDKw%l?g*gSZ?PWTMd%#zomh_Mv82m{D zw3N&~sBOqU_-~1NPn&Jiw{5a2@gYjV=t;q|$gfE$??5oO388H~=$cTB$Eje#F=IJ+ zK6w@Rq4*iWta`Xs83L$U?8rz?0UGT6BslY-dlE4gjEv@yg~%{4`RD;}r znpC4fa2?D&T1RK=NH5XrstxydOWo3*!YtZx|5D%q=13zNa69x40$7}BpSUVM2%Z*_ zd9rs~FB?#);Q3YvdZuqy7WDoO=a2Om;Ly+^S#Qg&$qf+^M?JPW@J zV6(G0!o%s9o)EcHGGb&P)Ugp7aX&YN0PwwH5|i&C`VjIF`P$OY9hupM93V>uFCPgo zJzodit}8ZrrwL%6u%9qvN1KH`2LKTBzRH%_Rfrezb&Pj}!*WSQKmo5l+|>hNt&rK` z2onK~XW#FzHM2tyn)8JGNpM0EVF)@5XdtJJTqnQZ;k@E==jXx}&B6GmQzR#u8)E&9 zL~3}x;PwDYA5%3KEnYhIJ>mi-y98Vf9qrvhT1$Di+61KxF=FTIc+p=NJhJ|(4P%D{ z*l<7cw~?Qipb+8S+yG)rp$;n+tQ&9OIh(;!nG~?axB(!8iV){J!CEc-iW+QPn{+gS zo{&F_8!B^2xdd%g@l&aMKLNOPu-3dXtjkdXik?3Z$w^qUOR8DH7D7@c9~vKrVq>91 zCr5x6zmXS=MKKw!IzA0vD4s?igb>rI!aZLHApvN!tsAhP&p`HVz@aw@L2+j z!OKhz2=J>Dj6~S%K%a9khxrm1HYvV|ST3veO?wC8gZkE-uOkl?Ow}}-VY>maqi85b z+9fL>Z(KeJ82EK4&6~aaqG%NJCFB(F%uVEvEiBTv6(Xhi-UtJQrc>x0imBfB6`OyZ zZ@|Su!nZe0Q@Q@E8(%oI*`C)i5>Sy}$c_H1l6?X#naGSNV1&RotMuU!XA|bc;~TI! z8O%L|$+IYrV)~u%-nkg!u!b~mYT|*n>o4EF+z=VKo?fYKiLkgY)(z<|oTe0O6p~_8 z_0$AIpy1CXS%}Ar4Ukpx;z2Rw&}B&~rg%c_$wNJDay+q$7MUB1uWI1`;NK3Nx{O7= z>`an+ud)pUXHlH51E_yeTBA^Rly?1HKr!7a)At zO4Q5k|0C2fCP9KKc1r~>^6TL9+qQa@n+Kkc1zCqwiW6`uzSli*F)&9gdgQj)pN<~Q zWk=#4m0#hjksYop7P-~$liL&A8rycRNh2hH*~lX<0>TF_Z(}W zsz&%K3@L8HnTQtt&U+AnBqfktc!cV$z>Go5bB9At^w&CjbR|B@Q;LI>XH8b7!Xwg* zt z61kx1JsW*kbOW#%J`S7Anh|YW;iQLtdWjV76$Tm$6JG?3p(5^)A7(U66cl_)uHN@D zG!7zMl8oz~Ek=|x64|eWvRD~bo~t5jqZPj=8U^llo?f{FiUg>cQryA?k_>Usb*5Oz zUuTmNC1Ws?zb1e`<+D<2TsrjKx15=^1rGq-N?H+)Fwxa+a@B>s^;!+PS0 zS0gYpHGo~Uz2RP5a#8pOj{!N<^2OIS#0AN7m7mxV#92tYv^*O)l5Rm}3VQ=-8K^(q z6=0?z0+Fuvt0PG$y9baUajHZ0bv*L6cqWW^coh37G9aZ)?s>L&q)2S?K$DEA;KD*K zs(?OSeZ}YR@!s&G%73dleIKwD-nL^XCi1NFK0e&^xRUvn7p6@F#s0Pe6`0^+H|qgLunJ-Cd~x_1X)@5`tRk`fF}pBAGTS7 zwkZu!P<|5o=^$cshha*(+96)`kpHm?^eRBNSlaH$dz3DSBczqV*GTt{@10i-jiCIV zc)56_WWCFcm>B7fUnkapPq~UQ8+sDDcCSqKhU8ZtB|9{LtKc#@Uk8FSHhQmHj@k4r zV{Fb$9Y`yk_PidkBGbY9(G~98lFrsR*)q%3#=ps4^+$ zO$J_X>ph55sGuO>gduY<6jX?=##K;>N()$+J+LU9>Y6HpeVj$mhUGpbe~p=7ubE3L zSmq{xbOe?A-4XyQmk6{QSuR%lSoH@dMH{`jg3fiej>nCjky%rJ{6z~F>PQdACEy*h z)F`^zR<`fNq83{n-R`1=bAlGol(#jV`wyQcq@CQV@m&lxZfS3a$;ry&0+M<2<)uR`Zb|RN#{>F-x2tY6c?9!EGHh03LJ@|q7r%3Ll3#N8OuT|# z4kkL|X`Se_6b*HLYZG`nlebvEc)_jwbYMNMLvHk1+CUMnZpZhd6|4thy?L5Kj2rZw z>4-v0&!9Wwhk{{nyd&M5Ya94aFi8XzMO^J2>ZjjOoT52t;xQ!S!_Xn2zuw&V_&Fn*ju8R!0zy2xXU+SO2h$CwG%jP=M{u=RZ)j*ql-{DXj*U}E0B zbg8*iGjDue>^F8m`efw<*AY2Bq&c9lqE=;Ak#Syz=<^@L)2ZH0i=rgpi=ybB1yu=$ z5V&B{r%ads1?Cf;I|O7iIRuI0O)k8hye4uiGVobD8MJk4l)cbudYI=4R~VAWC<69fai|pV=3k*T6#u9n!volq9)_KFiB_Ox!I`RZ8LI6 zQ=@W~O8jk^|2y9h7|#zpqA>i}sa56*IPCa+3Th^k-I}NezO7i!2yF7!L|#(=NB9xZ z%ZE-+mYk8{*2SAr*0bu6e0EppC2)&`we&~#8q=re++Poo37gxGJ9%I|uOkW`xU)d| z`^1=`Y@s+RAn3LS7--M5bg$lvH#fZg8Xq(VhD%@sJJ*|Jk5>#5IR<=iAWHi`HEj=e z@FVu6z@fJ*Y<%9Qvsk`4ET6?T#C__L*TfcouvKp--o5e&b;WR-+g>?z(RPp>0Qcm z{*jixGL*UYvfnc#po|f{YbdOX5&(eNf{R%XR#J@-%*3&x1gdVMKzCd%b!EYAJcycV zkBfvj$N_~kER;y8IhQDFbVA6r`z18YG`VkaP15MVbk8`1vLP_$;M(i{7%Xwwc(hd8Y&g zfzH+k?CnQ1%+)uIg z(1J{nC&rAGOvz9)dm-a`Tc!i04tP@rdna0YH~eM6aW0D+kL$c3WzaVmS+`}OVICG7 z9^_BD14owv6WBJGN3?SHUXo}9QIB7a?ySX!4MjY2T{J-CoITMnmya||@kqnuyowdF zTOfdv6_{c$u5`MKd`~cV*TDBFv`BGQ%NfgDeI+0I=XG$cMV+4(mnX)IZ=1+5cw}kv zb)bCSg1VHTh9_Ej^ySST7izSj^yXl74gNzx6=>3M9(dhzal3?&E>fyk5i3O4@Jz52bd?!-i1jjGh(a1dIVWW8~&$S09z6<@ARR5-v& znljtlSRtR3m?O#0(R$cF{VM=NU_NjS@l-w0Fq!#_T%mMLy@Eu}!QBP&ROAv;j;a?d zZjlodSC?-6`g|Q%Z1i^|-YvCQGG@x%YKv`-ZW@uW=>(J|7W=pE6D^&(TNU4YbTt*Y z%?Dj?e1dT4bhW~@cx4!b(qwU|?Q)(@izX2upH-qM@LBjH4IUXR4H(jj`mhiybo{x6 z&y(NX;+6Qfx7e(Ea*oO1#enxn!)zLcYjl|wVNG*3XXxkTf-onMF1fhA{YL;$2;cqo z?tC2=a-%;2zJL-3W2SER#M_h44&o0F-6F%=13=(JOJCyxh-m5TzY@`H?KABPK?1Rz z;Uh|OG)v~-KclCT7kxUZDm-V6r z{M9U*dg?q4_e&gD$YOdfA17M+K$XwfF=-4t71v&{itIa@Cz=)8bO+%dun0aq#da}i*{M0;wTu{VUJZrAtxfJ4a^4b!0C`0HT z5ejMXFG(_0Es@GTDv9Al!wjBjm_8244e`K{N-0F5>@y9sMb3lT6uwmeDvjAMyL{I_ z+y-gSS9rD#vT9?QjXPbvsJn}~``BOV*%k=3B}JSph==9_+^J<$UMa#yQizuOGcGU?9Ok;M)H zZ*25bcPL@|%Bj~#O7Nk7qNSU=N}8}%hTSLPaO_fXv$U)0b#d7DX1||Axj>O9Q1@98 zV-#p>s?KkaYYI}c0fkJ^BwX5ks_3nD=d7xD(@ClX;RR%Nqkrc*mN?~59y^hDp_&Z^ zeyuhPvP}zw^%D(~S24lRO38dfz@VMlI+$Uic@w1K{nhz8hAHv~PD5*~R>{IAl*6w4 zXc}l1KGM=}$MtSa=cZJR=}z>o4!r%ZQ~U1oahCaZD?htc#hX9zkcDFN-!%xlR8tHp z5Od-D=9h`L=ewmUmOTQ6;-Dk01q~B4Ps?8>+J+G#+gZXSWUMge&-oNEBJdg^sT5e;4?V9duy7trn!+tL|Ia*s*!x<$o=-C=Sn?U|) z#C*tJXqT3yk5zXp`_9V#i~}g354V~@5!)6YqIbOpI>}v$_V#irp^JS-!z3<*LIsZ6 zAHFsXFKVgyEW^W5Y)fnykhk-7>^ng8;hR5p-Bi3-B>Xiu$TjGhNm}|MfOQvP5XZ!( zcC|r7m%q%#LrU((qw@=ZWJon^*ZrkODYl~V8 z9GPYiqQqDT!*b@p~#T}k#n3bq+&@YTrF4`?*&9qvT)=e61lSS=d-0M~v zTA6Rf`8t5nx!n~6>1MpH!q3PS_C>dd7bWbX9+oRn!t66?$`Ckhc`h<%>(dKM{{2ty zM;k%!4Gg38Vab+7u?z&Xm@{(QRUSSj;i$|aR;2kJbGXU@U16KJY;m}l0QcxM)MV-G z2Y5R_N5k|$3oK+b=Tvmd@>|FnRI}@C>~_UrhB9G?*V_Cs`t^Li4ljFWq~ieo@ZlGT z&puPIu5ysHbWF89%yaSZzbjxRqc#mVT^UD;yOg80_~ZTY2z;Zxol~xwScu?L3wIY0 zrii_-F$|p$aEQKJ?t%8!Wd@*X%*u3CPaw;wac)4UUbXu5(fWBBX1DL6!gUHLY4y}h zVu;Z@SIH9PuO2sa?-9cx8veSN@6Xp!=hs(l+&PzQ^vIyL3Z@xif?~nslw&8yU$wccvQ;^B9i1W_xEfZ>U=68K z#9!RpW7?UbA!$Pd+tJ;;rttV#8s=sS-=Ks*NJxW(b{Zc>(8mB7LLx+wuC+_knUi5> zf=GB?2OJp!nu(}nqi@=hev9LTV+76oc9o^;junS;mKhZG1 zi{|_u4f9XXFdfEyDZ^H-Gf@34a#cA5z-pJPrAm%+ekjm*Kd)mnd{3Klvyu=#SPWSN zVG?=?wGEq>{4lMAbwv(-Ycw+r5hkL|vS0pXIYCxf*FmHIIGBsDIPUC;_X_vZ$WIh86-0f?K_;39^Aip8IhymQXqfb;LX90~bdoK3peile36^~4c(7e9!RI4FYX12A3fA5yCA z%DDMM4_0BQu6L`&ZIMR1BMk8wzu1x!%k%1h_R{WQ*+)JSMxiqN!M%+03PU(K(@@r5 z0uO2w=lw$mOggsG6czoF7|mH4Am_{A1>ua zPba9$$!p8d-f?P+Be6gVk}hS*?1jgXn&1wk2SzON6~ZQ3dHK@j7d9J2=URwl!v~l{ zJ*yW4#2Ud3vdTB=VZ*TIefqFzX*!BG2W(@I>YUBPB!kS7`|IY3hWRO)ldG3cjsHl) z3a@`>FZ>G)a|^U|1SYs) z!~+SxnjUn2a2D$J}H?$M}ej0Z1Q#7YbSY+suUnFUmtCw8LG0e+p<_~C?bO+?qTXsw0 zbA$7B0LLfDo{c`*S(n`EPPBAvZ5eD9>TRE~ct^wv?gtyC2cx#u*NeWT<+y%$ z$BEja>H4cFQN+jNZ@=x?Qi*9N;q;nI9sL0q3CY-_Y@!_U$Zq(4G$*FT1^r9+w(>d| z%{f!!ZWzu!(J&*^arox#&(9Gv>e2nrZSLbc}Qk7?in`vmh!a% z&yinbM)ad-&RZmQHc;VSMss>C4QTfh4YMZ2&eszz&Lj&zoUh|<46o7xZiRc{Ru`6P zL>f%X7*hu`R3h3mFl>y>Xlnr0W**xH27Hfb^9O~qUmJusE}CKe(H%57_P2i}|Nhq8@}=lX-?_c_``n0Ec_6lM~3j4hIIQEha8oa>Zb7g4mNU_Pcq@m2p$vymF&g5)Zd zF`Ii1+F{oLjUkStN1@aD|HYUYm_?th!%E5aiwin*$P-{SGuvic#>hHR+mY{4axBT2 z1oKP9Q@V{yB11bsOXogC%<0#^qd|E?l!sUsN=;|QO;wcvzIgjTA5)_4=}pVr-j`_m zVX&VE?WiV7BDMKEpk0m4B`419|0`o=p3c`{?Cuh}(VRUB_LQ||q-_JYU5NdPtG82; z_-^Q-60QaIZYO(i`Vzk7`#3T~;@EHRd+SR6A=4$X z2;qMh>ZVZ>#b>tR(G_x6n!Pof2FA>m1G;MN|4bE?PiSL<)?t{udzlfop;@-f#k+}u z8viJEJ^PdrwK5og+&$*@{y1nS)nffWfH7mAuLEQON}@%Mb%pFp7`m#CP&56CD>$RQ z-NITCa7k^(jXI8k*`}GCY^}w6%PPVr#teF%<7TYUoTPA$+B94bRaDCEG4SIMf1p* z8GbTo=RbfkbG{Dhr{dbyrQ+!7vZ&^;1SnAx6kWIqd;-b+?eSA^)mu@o zOQI=$nlbYeDN*N)nZFUVbBgB7Wi)5Sq+B7W^zUNKY|huAivjD8S(=x`i9ocM^5O+= ze@$zFm|wTr7>jH1?H5CZfaS!P@nFZfoBQ;q88e6Acw}nz{gkLP#!S?;CG$qE4X2|faUlqNpgz4)Js|DWLLK0jZpJ$HWiPQI(UKjf&}RfC5n0xI zBs3_t`fxX(qTx~w#F1O2CM_veV43-HNye;#@{c<)b42;KG8);X^leZkBG)J4(>nT- zhn#D}tguft?)>-#OdM&*&r|B>phl)n9a{ZbdGYTGxL$-brgOfIQGr;xr(;iiwQ$u- zLLRVHpdXg{4175%xAw1{UP-^eZzG)vV7Iiy$d;v8EsqKwdVdH7fcL3YU~} zao0esX4rpR!rvo3X6A~Proinpa;(?z;ptl=cRAok<>rJBHzyxGa1oma3h`N<*dsQq zx#980Ku9%RWM;O?CxGS7iWr4=6`4jUoicvL9bv3=&sSC~17aT^$7#dYzeAP$CsGUhwUc_spP+S?nF~s&I zfv$>W*NT3DVEr=obpHZT?fE+J>-zvPDIWsV-&SU$@&Wx<*d%MBT2r))RJXVpOS)M| zJE%K*8YdjcYKQubAX`(qTw=z9iEhIKCgS^UO{}$n(-z-dC?h2$7)6y`p9M<7#0o{UD@oglt`9Sa~*z!C;)oaZbK6vQ8%ef!O5HbCJw4=CNaw zY>`QC;+`-PUnL}wbPv>AuFZ!O@|Ws9sR0fb*?_NgSV7>81LlHehWs0ul!?nurF%x2 zBR6=`H65mii-h+BfO<+Le_;OE11pDfLwVLlYTjHph=6%bZ12Kx?F-MfLJ#HN^E#MK z$@l}dU8YbT_d?zxAg%$Lbwg8pWw15C253el;2d?B&L*snirOf4ukmK+Y2I{nrt)Cy z0`TADue8j&LxIzykxeBn4uFK}^+| zPO!%+D#NyBBTzGNzccAM+V9Z^l=A!;`C(dBv-}a_uVc~3hGGFUcFr;01`IT8HPD?! z!9zteT^nA~xMUl*G|;U02U&@K-H_@HnHcv5OiX%3)5j+3GyVwEg+{1`9T+1sEkHpy zgsfGUQ4>U0F=}t*u@pBYvYk=cdgtrl%|vj*{Y|TFpTCYaWfpFD5;-%7+cntHqf!L^ zc#s+MwhBncS)kXdC%l=b^CwV963vK?w$d3*Z&_C`Kq9+@DvfN{0drYe2;Wjvhcmf% zxC;5OXpUi&%zUlo2I{SBoQjH-uUW_b7F-mX*BT+$P6no-ybS1Uk=BjD-vj21VLvsQ zQoEOK)V|>2UpYIH*`L>8F`(Bkw4l83gTM$7uA1alGRfyAZY6Bf1h+KoY!LRS^c*!e zOi6xJ6Z-Go7621IHa-h>Sxnnxw4wkw!u9v!+cqMT8VNH>o`uXfhWB5%T24-*s)@v5 zlxPj?3;d&@VglbM1d!@(atke+Bb;r4CL3nKmH_~NVmyWH31KiN7rBPjH@h3T*{$_THwJl4d#I9`ZC<9_4LeTXA zG5~7Yb8=kKJQ;z3&&$2b*p2f$tgNI?nqh#V4szKnoH`?|+OZjtVrJt? z2m*_cRT2lS3C+5juGo7B-1JLE)zWWQ_Qq#CbQg(tyecAEbipFLL>(KJtclr?dcF=) zGOqmO(!ESQm63)jKK>wZVVB5Ys97k2Tqp=8whTNcwqopq+SzPq_!OET5uE~zFpQY~ zJl2I$6!Wij?4&^GL{Zh~>l@#+g|cDq=qj zbvD_6UX2t|(OgY;4H%1bXd#bOrWS;d5gem*-@0qNTwWtNVx)}C1_2r#9y|2HF-Zct zEp-6}z)9uAYP#lAM4rc?L0}6Foh)6`9Vj7OY|+9nXCsS~z96cJI3@xaDz^<~8P_CL z7?#BH&177y!YkdFG*3hqo$fEMplERQBSQ)}L8Bz+>qwF9gmqI!rh97}2yhi6Od=8A zVCps0*3)^asOcn=TlTi_qLT9<2D0RDG)QlG9V3UZ!6wLDzQ7}8XJTST9z&aG*c@n? z332n1)SD<(F&~BlQ%IIY_`4X|#9IydoKg{jneRI?{z$b7$sUS0B01k=ZLw7M7(P7G z3$NU^)i^`a1z^1z_zlLP03E#M=MGiE^E#+yVj8e~942YO@HrKZWvXXvfJSAYJ}42f za6vd&q8kv1)6_&iuoi7`Xq3CVEZ^}NsFvfaZ~>FRCoU(>XYl$Mvw2UTY_pxM7{x>$ ztqo^Pu6a(l0n&p9>KACM;v<(!zRcp~ODvjnugF}UJKV6;aOg9{KmGcji>Ms(3l9?) z|C(mYephjv0pXpL_f5F+h8x5F3g-^k8WfRZ*T-8oJo+Gw za)TB(p~4<}YnF89>)=Ejv$E|-y~k*dg^M$=?yyu*eGyc-iq++Qw?*6pa|bHERbq?E z)Mj`?&~2yyVr-TkmlW;*DpuGe(Y$8in;adyc`D*a^s>~@zCz6_Y=oL=B@c5{fATQ~ zI!~CkM(8|OkPbQkqTb+Gn_0>!2oTFpn2!FBssjX%FP#z@6ny@_U1HLAsl>wO0tjl! zW4Nrw^L11S65G%QLBp^#jC)E<5p))=Ky}?4V^8ePeM!P2AtLbnY9+z>O-apg#UHr4 zhwS5Q5$tPjks4NEVt8kE@9PLI`BM>LQmHa5*Jq4@R=r07DjlgzPy-+crcLHJ0~K4* zaw{JX`cM)8gp`V(hh%WHJf)caSJg~JHTIm~>P2SjW6K+Wubb$eV!Gt9EbP0exps1##N97b%WBQsp!`H~Un81;<;GaT;X~$v z>Z>a9bnpZLt$c!=O7@Ha;eQ&$uGtaX@bSX}Rnc*sbKLNy(nnAfe6t+X?BgAQzJ-ab zP3y?E;EoW_F$;~zA);)QKfW~~-a&noqbBiYdm&SBA=rUV?ptaUg&;aKgG24&a1TJl zgLT6PP&G<>U+Aa!?u@;m=SoU&yjHTW*XQdX)}wpK(1Ci~d{SfNVy-&5ngdm6J>;F8 z=R28aDUR>(j-<7(gB3FK^;Q$RLkScP4zxx`MrEMm5>$nXxo;A$Ve4;ot_n24&_ENX z!3ZdBJYz%sjZIv$qncfUe@+D~#%P5bd_XN6TMU#bi;=>_H$6oUL7&XXkReium5(Xq9jfa<}CxApJ-N$;9Pgs_rsTAvkatN#BZ67jPC}QDzA0 zDNqbqz-rG0Y@*NuLyDW>eTsB?OllK}m)9Z#0hrsqygynkHJNC(pz6X1Q#Audn+s3u zB>H`FzK&vydvvh;lwf8OOdo(w$Orsq%$uJ0ViK?B7z{JLOTGZ8zWEZL1h(vD%`}9( zTPx&Qa43|iOr6pu&ou%K29}J<_O++d`52J#((0tuz}9eRDft!3c}S`8v=n0xy*3 zjInu7Xmbvn*HnvrQtf^t<}YzRBqf|15FL9jz&u91 zrEVGYA+o8om2lwqaAyk0BbINSz;RPx-sGORa-|wwq_&LmE_3dF0Nn}4P) zLa-=BZ2l3^QV-?UL{wuruK0*=Wb(!Ywh48DR-LCkERy5!X=av~*Y#s$MguI<7FcXNb z^uAJ32e^`auYhf<4pk0G#Q4>a!8Y+CG9JXXA)xd(bDJW?^G4ud+>?trN!A2c@!yml*YgbH z13-=qI$kXxkxIA=SIjp7Q(cQ89C#gxr{SFnB~B0V1HEMWqaq$?NNKps&I;IjfV_@$ zR6v<~EMODp`qDF|U0vxJEq69;Dnt~{2pqVTb9bQVCaDiFi+c0o;(Q%(1QA76Dp*vF z_)^+8*wdpsA^x?bBO}BmYi_xIP=>F6qoZe{{Y|5b(ZHaD z){>e5Z~%BX3P7K6gyy+W6(q`oo~hp7W9||-R?iFAEf?s>F|gFYDwE#}QAosBQ|UtL zhWN^?oZc^fOa6!6t%EDUsVvv1=LI5D_KEmkM zQ&=gMPzx(ZoUvH)QxvofC}1HL(1Xb(r->*?!s`K78I<^%WEOZv008a91^Q0|@Va^t z1@ZYhvXzUI5#RH4WJ*M_;unnLrXcG}_BxR146AVsx+pK1IMA<%JH;9rwZo8o-|)bu z5#h`9IPC&7jG@L0EjaKbr0#)K>QC(>=6m4bZ_nCCgh9g2_4or!^5_GzYn5&XBJxzg zYItLL+7wz!s>W==D^Is$xH=X)gRP@EFzsciSTy$mc`*Ho&({&iuUIgv;A|l!(A3>4 zRF{oq#QWdMC=G798vQd$6O@gXr(3r(7tWIBAu|W+Ih+*`cG>G`yqcKXO5}joT-hQA z;lRnF{nPEE$hF8RVS1!uuc0r-jJ&;Ho(fpH5bzKI0x_usV0LM=YIg(51S~3hi_M^f z-fc{8UNtP^B80u5b2mO)2Mso?tFDuz7ijdzlD6HnNL6Lh%-?p9L+o&25>b$1Ny7kG zs%A!fkhf**!Dhf#3h@x`ujpn(mOR^}!-VyUG>#g?qLXzwnM&VlAJL1e>^j$VCcK#2 zNUUX!$R)eYtGH`U1uVn=CR8Wp$8<;JNNf|UH*Lrkp72;7?o28jDcsKx?KwCJr(;i(@UFdaWyO0gv09~ zZ|IuwaTF+H9MU15+D8Y07q~elj zY(t)5I1g;kzH~xHWE7O9+c561wR{1h@O&M#9OY@v$3Keq*W4Djb4;e6Bx>;HBV`Wy zrfTt^m=I5FfRI_8pc{g>&R^w4*k>rXUagsEvbXu3?rxMMHOOhM?26GJ{K>fF2Y+fG z(G2#`%h|Z3m1D}ol_Gbes<2QSWHF@#d6I0}m>Etd(n#xK6!X2CF*H-Tu5!R}0-&Yt z;OXP$ut!-#$AOWauY*e+{W?A|D$IHGJmU^so0Thci9^6O^#h&PZ1PL!b+Qmxq>wZh z-y)`Jh;TskKu0Tc%HOh6%NtH$>0QJShiNDN2y7<_;o&|LhEMGy39;-)<}^UaT?T7O zD3*kNz<;%dz(d*1VH2$=Nhpd!PRGC*OsW4Y|P{6oQ;ytuH%a@PG z**YxOV9Lf8GSbH(WgT4(59tILQ(ph0{02>1eC-o=AIlGBe~pi${392DYIKobB9u+| zm4Bcc$YfF03+8NdUGG=0I6Q*_2zrH~=ih4|fhEBR%O?+U4naM56RJ6~vI&ll*syS$ zQWHUN0^X?eZX=7P8g)83)&ZK16m-W0D&>O1HIY&em7r^%ufrw`f+-uJR|Ku-JBPu0 zt0EaSVtQ)?c;!2;5fe&905;A7;|R@Ub@=UV7p*wFlwb&TeVG5PBcqm*%;3O?nc9eI zQ(}#XE%l*Xwakfv3cBP}R% z8FTz;qGHO&Fy2$UX~@_fX;`p(p_2LVYx?Wmk{5%+-VCWZLS8BP{I(2~1LM4X#QzZ) ztksrQc*s{Y$@s#Ak~g{rG@QE@(Rz%h5SKdU0?xiUOJ^(JoE-tJQ*knhcH^T9L8Hrs zIE*aF&gbiZHD@0Z)3$X-=PHbgMBdGiZ+SU0aurH7jwN?1n<*jAdxHsvTcDJ%hIdQV zU2*2}0FpT*{_DLMD3cTpD6Da=TJuoH29$ftMl<|f`>0GT#r5Uvla3pcRYXhNjXEC3O#@647Q_Hj>$mRY0av5mo~g?R*`2R-lnH zI+tl6E@Iw?kcfN0QveD8MG&Nt^M`Ju?YC^}f=Fa`KBh|;em?YS38CpNRm_GH|EoV^ zGog}Pc8p`-5xS;c=8UE`CIe$;mQU>?#GEiD6c?|5!S_U3p2xdL3Fi#Pab)7$jvTWf zomqqDjOgE>oBZmxHiK6l2}Z|qSe5L^HPL)o8?wEHTmjVcb)b=FgypcOUCTHyC=l3J z{7W8RN-xN6jYvw9kS-hr89Z+d&Ssv){#pw#Q`6P z22%(KDKjiBie>w#bYWCN(cU{~g6pPCc~v}aywGOZFp!@=uY-D*DI0DKsxa7e3tL$h6@LX`&ibOC~i{U?ZI z`^e+I)1q6V@hZ5QAeq9>2cU~xmnp@&wVs zpCDEnqy?VUf|>*eAHr<-RcFiKA0MSLZbW zNs@@=a+WhKd|C%`B01i78l_fp_%lOHkH%4b9vqGt^z)K&uxgF9Otq9DauFgN#80Bw zQZ}*Y4f088Rye48--IY)Ff(TxbGYTvg@->}nYdfM(pUMoEb~U5u+)r-se^3vR~4c` zZj02h^B_?EkdLEM=J9c$>fwb8Ck{?)ddEYYiRvBh6-%lZLK8DDvsWrq{$(|wL-V{2 z`kgt-cI`9N7-&+R3IU}B`9@P{k$F~CM|JEs5hXct3AS-@kMP2-2!3gK=y}EQcBn8! z6R_l^9g>ZZ%G$161frcFl=0b_QaFR$GNch6@Ch)PHZbYzCx_G-w6GC{e#&@zE|TBiR8p z04Ex!n#8m1|H5C${h47dXeNdt2BcscSp+>0!JUF}D7CNDdV|M|LNIL-F;0&Ofjg&M zhQtQRoz5(*9&J_9UJ5=7wa}PCS1`kIMDy=629%rUckAFHDXb4)dgOXVVZ^im?3tQj z9rIU2R|WvQg2L&D(*h0*)uhvJTZ!yOeAH1ob67Hu-;2YqzL0aysWZct1|Y9y(0nyA z#HX1&uE2cJ>W+gY%tMAJ3Jn+batdbyV=E04&Q_jRwTsJ5Q^JdRd7$J(J5@*mp#xWt zJ!yaI@+z@-ex`Nr<}hP}2ew>pMkwdNc%H3;f2~TIH}~XOtexHn0=2JYTWXPj} z)I+?_;|(`+D{fjNuUG69Q0EB8=EV>d8hfCSc*CJv&LBL4ut+iX01-4QN}u%hpgJo+ z_HH8GX?zC!CINkqm(k*~L8ArT1=~45vWP@MXgn`J@a36Ack@0`4mMOQ%=zSNith6y z(Jg)*bi#RG@Z)+oI{6CD*Wr{+pLr3!T5h10d=j{>hpI{tBfU6gx9p=XePU4QHndx0 zED4uhUy({67Ukfai2|PAjiMWQG#zjHI@1-pZau~ZJLJSvGR&)<= zmmOk2j+#*eX4Y2f*TirB<*OsDX4ns${|KSz6Q%zVnA0B42a*p5!{F86h3jV<#eIjfZKKys(d$e_G@kcTZL(5_h;s^yqZJc%84^g z>z5L?Dc*j0yy;xHtV8HG;0h=LAOmX+Awb-%1A}B$!Yyq}*E)E%Si`tW%58*X8NL7# z*EQZU>7lJ1Yn>_mpfdaMEvv37)T;8~qe+;#Wdtgu<(V{K^dU<}yM49})*VYI58Ij) zGTjSpEOTb$R{p^4oH&dC*_x&{Jh5^P3k;PlfaclAqs?Jzf=`f#s0pr-r->B=9l^#Z zY+DzEns=1#GlYSbi9&@j&8`I#qubyLi`+Lf{Dc}L5(8Jx>5qXkMJtLo?etM%9c$2Q z&^EKPapW9&yzN3;G|Dz@I~{i>BQQP&V3cR;$kDn*p_YX$Qb8Ekw%X$=w3fe1MnAs~ zv^H}YOK2bkI0B?Xk;4Vy1wTAH4dp^3k;9D9`F})Eaz_1i)#l>gf;&WENc~w0-r7)MXWm`G!7`5bo_0u zxQuBEh6L{j4u`$VmBTn+hdr9pxjFOomC7=nl+-(;DQK)GxXfsf>S4Ds10=m2A0w;@!I<^?Daf>!$b-d}(2rwMrH*+mbmP3xQechOXpB zVih1o07NRPtGNIrlYB?=cF8~zqXQ#Vz9;TXa!GPE(vu)df}EF0euEg&sd=zk`mqR9 zWdNymdO^^b$#z1Q6H6^)$>&WkEnyrTlA^rc+6TT^)!Ry=c8X7Y(( zS+q5G$J6=2x5^!8Oqwk{6C_(Dmtv&I=j$LhR8*4+uYyatHp#+AlIMBvm?+S8r0Gc5 z80ud`?!Bl5#4yPAQ9m16Vz^O<+gp ze9|ODGWfv4jqVrTN(Dy3s0^!+~(-i@Qf*f7WxXi8lzyuzbt{p@uSPdaB4z6 zMY1f>?|ehLDTm;W(ycIW5A;qJ6KmqIM-rX*IU7)%qq%VvrjO)m=Y8DCa@ zu^oUoeNEP(MNdlxG$75p z0NoH3m5Mll=>?^yZWr7HXhorAg3q(^lT~7~hqs)_!u4?RzVyj1$yLXdAZbb z^d&Pe{(F$As$1bMFv1;ITKd6DzTcSqVI-Ex_%25=X?i;86mAxK!No8zy1QgFi+6_J z9GCt8Jv)^j65SAO()hmR^+TgTc&IX+uS04<_@mvLnnMRbKx@@aXqS2DcG-Axd~05a zc#SWHJ%Stc<3E_Cc&_P<$>bwGla4l#X7%}U$U08~z7bki34%0vhhgBG?A+5FyxH_We~|Twt`CrzMv3am-ug8S{h{ZA_7}- ze?kRI3(Js4M(J`1md#VwxU?=z!Wu;lv&DXeB@emx`8qynK@zcM ztK>aLyGGF*fbh-^bZ-%=Y(`2=xh4vQOt!C}rgOQ2cg;WYc!YH!YZJ~GE<-3h1GD|| zB_|Jwk&N^!E~UJM^4#X>67T*`hR4idu94%%IOT_%l-C`RZE0)mz%FHS$u%z@o2S`j z6cY*HQbvm%lXkY9rRlkN*1X2s)B!)v*h>A1?G){ZQ!Wg6$ za0)=_(teXw5yy!v$N7p%c^=VLU=xtF&WgW?3Dr%DP-h@}>u!U$+_d}53Bj6~s+{~X zT=ZSfo_?b)be3;`JmAmKuD@ic)%CeYXR{n#7tH`4*;DiMio`BBJ{Quo((ykSE!jh) zrbWcBz{Q?4Efig7TF%zNtPk-5S`ZrQNCR}Ki$(9fuoEs(cNr50m%;}B2$fp06yr?0Q+WwofD$U;B|NcIn4(wdJ$&r$|Wv`q+C1MI0#Mw4gG z2Cf9}vHvR!zB*PO^eXMwNn^LO$#sw zR{OjTrr2_mKns#fa}yrTWEX4p?@}jDki0Yb=E;IZOaqVuo@b43o+#d&I!^Xi*f!XE zbN)6pz~1=90BRhG4Vfu{PKU^2@Chwd#UP3+MxBVNDaHz#3F6jx+P26kUk00ufWDL{ zL`|iuq%dE<)Lp2}Ux#7~?Rdc21fWjvWglohvmhE#nK${pWQ+mxKL> zTKQ%)0cPN=f#E{uU%; zEe5oE<5vvp`7lv12RdCjhX6T{eD4V7ahixPAzkCDnHhMJR;;U)PizrgS_iCj==Pk% zvU!@sUUu1_J4NzG!YEHie5kdb(X^beV;Mwr?P%vUwL>IaKcPck@O``@a2hufcHS7E zA!=!Qv=L!WBup`gWG^tmU!;s55G!y;4*I~p(UU3d`V1a?{yHwO88M!8$zHUKdGG-G z;8H=hl%b14WJ-Gh?`x940#FwlNJ5Dx^AqU+kgKJD2W2I@N|}z_g&0?X+jDHjfBH{r zTDc@9N;|CgL*c^-Oo+=F!)Neny;@butfAtAI8$liP;N zjDr~r;J;b$@HSkj@c~kW5$Pp$G=vK2h%UgWpb&brx-lBY$Eq;E!Ix4M*|^wt?*Y|^ zxs+W6EwlU(SvLeg$P}X9bE`K`qfEYXc9oyhv?R{?Iz;z}Z})OXL3on89kxPxsT{J+$_S&t>>ndg_S zWyW^wabiEQ$BDhpp3GfUm9?n2$)YGxkkpdU%Rrdvc3(`x4H~uwHVng-4cLYO`+}Fg z@D0BLzXHF4z5+30-+0s#)4%6rR%H}LQUdyFvLSX=Rxa^Iyz#ux@?W9~;%cKDgX3k$ z#&<|I1=X#)r@9F$o5`_QRn?ttpPz*r5_p?sWM~t`Gi#2}W1SMJzN-iOirj)i7B4T2 zviQp}En8#*@7IA1!T#K0_Igh|H&P3Ys5C?EtH)EykJ%wL`3+|`M;JIiy#n{j1As_5 z#u~Bl={0?jtgc~IOG{nFcjXn;jW$2f!U@%lDUN3a7zGEvYRWDo`xhZ-j%wfZtli+5a4*MZ=Bv-aA*7UH=o#Pgs4tV*W<{h<;z zK9cn?_dvtrqvTRfbHyR^BYTr+ep>36lsS6=jYpp08|aZ4P~8MkcSm)z=>O2E_pl;R z@2GC%{1DU_c&I(4h+_2vz;B3Z!6is0at>Xa(Y~g6s_it`FOeZ5hb(z~CIN{XIO6$m zk7@C-t;j&OOxFP_VuR~r1xA8~E;W<7X4H&3>M|rJjiA2t1)#4W2Wb^_rU$ktE;Y}` zXXa_wLn*Zx%`nggH$uowE>)qr(M7wZx@i*hpr@26-$f${xbrM$IH_!=rMBQ4wnNt+D; zcDjxwP#>_ZlGub#2?K%?hlK{GC4k^&0tI-?FxWTfC;~PLVe**l%ML)%@-4Wy1YLv6 zLt;F0V2vubR5u7eFn)o0_9mo>3KkD)n7eBPkH|=COz3K``5`k_8S|NFKQ-T{twyAZ zGBBJ8?=GpfG*9Q6h65dZ9Sxb6ba>~Xa`nO+f#@P(FKHZ1`36tUksi!s9pq@4Z*{9L z63?}l#B+1qWME4Q3#z6VF4SsM9UqM>SlvZVP+kWF6XDtk?ur+Kk}lM-G% zY*BrFQ?a)VWhQ`Pz8V#rhasTRc;(|+cE1ix5n?Gnzmj+k&AN(0=I~6@R76c2ud4A} zkCUAmfXstR4Y?mfh=KDA1stKe(Mv-ZZX8WydCg)c*bW0+hOeH}oDv=YEq)&&5#UYs zX~dAf$M{ak_aN+{a&4Im(vW@-(r1z8>7EfbmBlHA&5LVuy#zHZxC*w2-Ch>je&tBw zH(3Wx6q1FJX#8G^!H4%%NxS(}W0s{Dh*%0=vqK6N}*j zgr`)O27yEWW8_Pvc}h^77b!IT4 zt937%r(xO@;l5T*e;y3XR|KLz@!cpMK?qjVX_X|f~zDoEgE}O4xWIEqT@!B zj>ugzF3EXSNPul1BPzCc0K=8*D{4KSSicqm155R2;`!>xp5pLM0S(?!-Kg$(*$Idm zx+re1d9jt{H9}eglpP0>1F0|GaM0iZv7@gFgcM4T!6rj5I4~T3^`UuM`RU9%t(D!6 zc~PMw1}o;1+<{pqtRMx?hJ2>3R%}&H)@`MdwWVIOQX9E2uezGZ^(Xrvny& zLZk8oF9yPD@y){eDMv12HJONU-5_^*r__bpdZ?5dv)W zX>A@-d(%czrWM!~XnanrU@){IoBPfzJTy;nl>td_VwXyxgaR@UU3DjN1lt626O13g z#DJfktiu~Sb%}&z4g|nbEATPQGbs#=b=I#@%tOD?N14o!6_P{U>a2#Eq2uch`94*u7IF4xR`a$lFe3Aqh@+e4QW!KTeax>$Eq zH<;6!2s8oTpgTiOYr4E(S>+j|(Xh__?ORUBAu*%?Qrgo|1xaZj^$X$swt1QfF_G9G z6MG@P{opAycqK+kn+HZwrodvQmsvk1fhSG zqq>aokPs7H-QgX_P$Y#D&S1g8G(+49DT2XoTFS$Bl>UsaJybUqBBRbA+NgpJ7i~3Q zD^`YLh(mhX|MEPB=S4+fp)+q+hMUG~8M+#9+!=V>Hc#<6i*oM-MOf0KO6lKEoh(N> zTsymBmovn%vF2mq4%c$Bj?QZZ+X^O@gJz_^fRiW}h_;NMb1c;m9UU76lAlA$1bIYS z1Vm<$>x(QUKKr-98|sV8gjL)XFq*Ji5z*Z2a^0 zH?(GvtLIJd($1#f*(bmQDxw(IK=X7Umg*xSO%HH2F_qQ3O?-7;2t=2ofAI>L%!}1Jw;c0L=l4N=TA4pwLX#@ujn}-Eq)dtN@|&4C;6N zsDcC#Ll9SHfq5m((;O8R&NW7F`JB;RaEx{peIzf>RMq!AWcKVh3eMvIyo&eQ~iaXog&_h8-N=B&@Wb$U02|= zZJ5&WZSxd3BO#df$niR5ub|~f^V#k3w99ujESNG6XS{Fo9GAGsI#!R!ld3kcNul7; z0iS`Gs?P(Ej%_Do=tRz~9BK|Q=uvBdo_7qFJS+*b602O7Ha&-}MJLT>oU+8kPN;5* z+Wy^3s@t<|62DG$Q-dn5kaMq4AEZA6|LX#XsZ})80ws(&>ag49DSoOkfG-sF0Oaw8 z0!3Cf&jYNQzi%w+7|^JR(F68+_H-Tf$+eFzKP@L_cbP>+O>(B2VCVh3aN`RTRo|pv z(wS3&WsGtxC4d*4TKV^^pf3RFCV1ol@S@)iuGoXnIRZL@>Q-HRCDm-pR5#}rUqW?TBFO6#|9ia{F+BhaE|#+WH9S`x2T|l2a13^M zix2_2Yo2DhS%PdiK;stk=8cGQG)9sFSRzpUMN@E6P1cd*^QfMgEoM7ebaK#^!SsWk zKLvLIKo)&+1Uy0GgV9`(R)NSsjjoA0K|hsSpV^6(@2Oc$s#{u~W-C~3sBYnT&GhOA zU!=Ne=>`6NU8{lENRE9QS{SHIS6RJv)-qF7%lSfc>B?BL%l;%QRj>c(^o z%fGg);8#ZbI!Yp{UDVXT%tlLu%xJ}lJcZL`ySMLzD#xtq+^r%!F(pJ!5r?i z2w&#ZXo^Wr{dk&F%R1oLAXlVY6pa4d!)?awUTVuoWpegHY?UdMD7f1VjCa@fkoXq@ zgV7R3-~c*CJm3c4gBG;Z2#zMaY2Fa%wfbMYq`I9k%nX)6mgJNu3Eb#qi>k_|hS&`Z zfOjf_Z3RsMd{y=iuN5s&iZE@4m&a8v%~KU6a(T^h6sEem&#AZM)Nh7+2!oS#Kph<_ z7G9aN0Q+vCtiL1U^-2a;SZ$$L;n}KPO2N&og=P*JMi~zT22x+#OJ$U8P)?#=(jvWz z-Wy$ZjHqv^ZZGp_RMUDeF`;LodKM^2qj*Rhgb5~L`mRTLe{L0bmr?!(~91NG-B z6x^b1M#1em40Lor_?o%FhTiBwy=1%+mJqq!L7?2zj!bz6l48zQU$`Yy@00%ZF z+6pny0aBnz&K1$+N z4Dfb*(~JFfWr=Q8Q0BTuQXV$0!#JAguAPtIQzWHVi)QXYFi z@ko&O8m|KSfof4MU20&Wp)>pAuPIwrYj#kUz- zS|kh-8S}{Cs(DJmZGrq~ko&WMjYAdU?4vN@;n3o4WT3`;6tNb1{|sz4A{H4x#v%fY zgl_%pmg=_EE>D?fihx~&G|3XpnaVYqte4SRsy&uI68dwdE<+z=t9FBp!KtIqU_Bk0 zr*1Nnvaax$r$4B*Szv|4j%?=5QTX~|PK`mvt6X#uQ5B+%0y&T|%*%qCLMNi41?+5@ z9)qZof}O?$YI(7*V)-Z1Ux>eiErXHB+}M4QM%xWZukyX~msB@4J5@dTjcP$kDE+f@ zG>|arWh4zUd{{%gR?kmj6{lV*3iT1Ecas?lX3#WGAJB^D>>%v9h!8|dd#sTl7>K5o z$!vw>OK!C5V!94DDax0*=p1@E)85w#ZWCe4zN4tn|-ihK|DY>Xzg6js+!AudPJg@Wa5k@VR zat`QxJvWV^vPdXsp3ZVg0k8nXC;)+E$ZmsS6bL_WmZvPp3G?~!l1%r09Sg*q%8NrT z>dm28vh}3krmPS$Hu8ypVZhy?bwQZtjf%-y3~Q4*_N98U1Ce~LUMw?1@Iogn(2rXh zI!b=og6dE)#D(fM_;_=jG+a3&V`Im5aK}*neixMDF;dD-?dk@jDVTwV{PEQ4ZPVv1<*KU4cudvp#f{0oI zEXaYJR&W$?lS&#$qzD;`gL*;UnENxh@zOk{=8ECi;!WhBgZTViny>Pp==a+YSiPq& zbLxEKP1o@<7folt1o$FpsJ` zxDb7%J#MM>;~o+!E`3t1h!PXx%yrnl3w7qKt#R^1F1f&bejRid8B`{dF@G#-I-I=6 zLmWD0z~I@Mi$I|?Pv?OGx$qS^wX7q{@}1eNoH@=Qi26`) zd&AsI!S)N0#mRU#jV=GdJ=R%Lz93=*U}%qMEYNTP@FQe^V@6)@Bg#Y6v6yKCmPFgK z0Z%F8@k-r6rMGuSWo#8rMThwYpq>ku~fs;bpPYVjtXK9|M3p7N? zC({S;`Wd3G#NW~TJ{W|8e@D1qwmg&sMzYhhsYL3nb85=N{pU4z~q(pId z=uD8vhM)|!_yU3%ObQPY8Sv3eB=y7t*fs)$vMh+Ngj$p@VgWVdzA99=Q}G(+on|0G z$wUj5*bHGzxs;xQvZ?bNN}}F%B%ef@(?j!gMt69ITuD$EbUaWbOZTl}JcQwXms6KQ zCib*!F`KS~?qo89&qLSwzTkdmsXW-!VPfdXtK1qe8lX*2jBcpw_-wCSL_9lv9e^@WJ}0MB5Uh@hu%C8X`BnRIAG zqa_YbXsY>kdD}dtduOf!+WW~x$nc2y<1Y4AK&K?9ZgxPDf_VUpd`AQPejO&a60u+L z4gNyGjeaTfRpM!z=wjXJ0f!2B>R11upem+V7g_+k8aSvW-m;hKDVPIZj2#9ODrUbW z15$>hYKD(0^bthkw$GSJk?ys`1`}236bj8?=G~TvZ!qNLzyhJQvO=I+f*sZux6M=A zew1cBAATY!6PF=f?l~!ZA$Sk)<*r7?Jy{0~0N{i)w58zAq~N~QmO(ihdYzFX-N01F zV@!*`A$g%^SMNjcCykT$7=Sj0l$O&?tedVAu z3<3|uPe`P*89?93I+#9#WZ@V=xtFT`@}MnaE?1yuiQLSbXkCs0BiJ`Q zu=>dIvUqdQ81p5-NPC4zvF6PL0gh00xZt2*T2FtfBn2jyae;;a1*Bok_M{sL(eZvA zI>=$(d@#=eg|~Xpmif`Df%Qx8rs1VVaTAdT#?F?jX~2lgY{&Zpd`WF~+Z=8N=d86N z0C*c$h9X{IZOB9eEY`YR2=J6gOM+OG!J8_5J9KXl@QTzT*GM4gBia>IXqt%BotCjg zlnkmHymrjtO?xo8Tn7O40_o<=B+Wo5UbzH=9iZ-k%6M`d&tK{60f3 zKyHT$lP{ZsFPR%?>@!VaU(+_!%OY28ytZ;Zy8_mS{@ipOq$nazfkt<4ghp|t=s#;v zs8hAK5h+nJ74!@+CkBKr1b;ZAz{IW)HZYJt7yVEG84e0-#4T7vzqleVj1pvH7?eYu zKFf)OB) z`U3yrJ>k3RggcS&(l9qrEdaQabqI7O+}nu{03)SiPNoHv3H~Lz@lbv z{jNo4O?A)RQ!N+&Zo{;Yf}_;q^WO*m__G!qavB4oUUKv%!6kwuM37($Y}5Wg2C@xzD?jj@A`1TBQS5gp=?np*b&bOrMX5Rjd!lVW9P)22ez zrftvcbh?fM10w>e4bvLSU0ORhMYSn;5JVEjD~P1R{{W^H3G5u8Z=tat|;{F zK>-kq#J3EiY5YEOAkU^gg3@CQ000_fIip||1wX231QUT{g*CA8auo<<28}Tq?Fyg| z_9fNG>mxdZ23DsG%4ski?|DK*W61Yy4`#&ert1LCS!`VTX;*#y0}AmHfunM8o)X0v z+S=F+5?QjP=`E8c@{19@9JjM!MvchqPzq3W-aPMt0W3>9d=mUscUlrl5+sPAgBDv& z!#6S(-PJr&W4By8aIV>r91t+PY|be(nZpcW!vuf46nR_L#V~rw*^{#4rO!Z?ke zuc?FuP9899&L3!u^&NYZ9G6;ASKsu}Nxd7<#gN4bzyUoB&Sh{1*(!$}2q5dpN_d_3 z>p)4)N{=0H*~G{7b2yX(f$35HHc|sXoE&n*BBriO59i(N!S3=)&q&hKOD4j~w^{c5`a5 zB{-lA^!vh^G%CHa9emwM^|8REG|Lmq9mHzfPqqc@z=GXPN`n($J6#7|NUNjMwk~lF z8i2zRV;R46nGs|oI&<0H54Ji=>CU!Xb1;{uj1rONNH{zw*f@I$!whxlDp`pZoh}uI z5oGJ0K6LO+Mx}m6Rxd_30ypLO2BE@ZAZKGunkbx7{zJn!fZgEF3nU*jJO-99RE8gl zC?kh<*hWuFjuJ479bF0_{SeC`KOxi;_eGgN)1RyZqlK(PRDH;rajAsQTLl49wE0uB z2+)PXjmBO+hnXfKO<4yc17B!>hya@3rL2C+{BV75W^fio)k z_sCY6BCw&PD#@Zq7c8K~Y7pH{1+5NtPK*>Rlb1{QKQt$yHHUm1ecdV5~W!~ zYmr`cV_Q{%Z%~cMO1)Eh+;TOvj3L$ngRzON0!Db<=;p7sK*%e#8Y6B3Dy^lB#a&pU z%*hCYtj?6Y!_>(2;`af&0qhggYNkmLQD~x)xwIV|O~i~&_rdAYLmCmHH_VWi7O8+{ z2pjb4CF`85qk?l~t}wqrjIF0Z4E-t$Rw>h@gm}a;(+{N1DzH&>r*MD7fFQ=V;L1vx zmE2)MW7tCT$6@3p7=d67aNwoU4K-xIDvCPKO0sa!=`ajL#2wT*dAKX&+t!VrOPL5J z5k4VxgO=&272qx>rOL>>(q zgqWH5UWx4llYwaI0f#tVvYjD#M6kcfyEv+*>(Bt_u7w%BYM?|XTpJ{C7ir#bKmo2O zqjAvCpyYlq9AXqzBwgffD#?#e1282n_5--0Ku)3wGyx;LG`i_4=a^>(nV#1#Odq`k z-U&YoW(g#FzzjibBcfxS`Qgf|7(x0n8S3e~W##U@F_4~%+k(#_p1}S9KC>$jOA0&0 zZ^m3Bt`Zjg>;!b~{W=sx&^JLvJ&IyAR2}MaayVxkP$6(O$J%GOj_JA8erR!XCE|AI= znbs3O%Z{e1RPZ(RkezPS@(Pg;cIz&I;Dg{V-s!b$;^;hxb`>d~-R&Bz9K&?WO}<}; zh1X)iOayV2kwC;`>*P5mK!vNpk^b58IXv_+3;k z*^>;7IrEqa*-*f2WXRqdqO-i&MecCYG+RNU$J2G-Q5WMsF)TSlV2OwAYV?)wbnZ+? z+-;l9Fj=%hG>1bpr+C11Sk+O^sWbwyN7>Ej1ae7^kiwdM1x7%k5qC7D-@ayaql(c@ zj9*2E)h8@B)MMd3Ac#sd-0h}DYiPBidzD$q^WEyu5k{g0c}diseQHwM!W(LpMnh8- zedoq&@EQ4Z9nxSz1OSE^Ma~ji&IM4E7WAs>ux(?DIV!F(!a~3XUhH@v#E!Xp#&w~- zR%U|}tUEgXi00|#Ef~R|mxSyWb?yQE&j>51Y1=XWdHX;H{^Le#2G$8YMu7kH#>joi zL70BWS^#Vf;ri0rCPv|lg>47IHE?x`qK99kLy5Pb{&*RK zpXoZFrSpCwoJN5Y%{Sdygn}wz0C~C18Qqa|pqFJmW}pD)B?s}7o{uAjYj%-eJVs}Z z&ER4!0}oJ8Pbfoi3lMgOO`Wu;Uy0ET`wK=&ZCb15rP11{GH%H_k2O`PesNg1}d4Pfk3GJ9d-h8`wy z3v4pZ0$~?~?)uK?#%>ZW!n-qC;~*Wh`V9f~epjO~jMBcrvzx4g*9ozT7_)*HvuT8YTs+0VPKJwB zUs&;GpLataP}t@owB!#|w*`(XJI*Q7N z&x)!$ctc@Z4~(&?$;X^B#>j2D4k`vP00@eg*dT~ghsnSTbN9da>!(rLbt&D9>_ogf zPN-`1_2x(|##h8!gdxdKES;~xss%>0Fxa^#-&~ov7q-zgg1knEnqcs*I z!wyu`lAw>GnRS%a+Qk`)>_VES2FN;v)R5{@#Tsf;LUjwbrIjtO_MW(>K z%blPlFu?9K00ZZA%qjWlx+e!wMD`;b(X^n<$_GFlEpn61lF0#%YFY@Pd4=1Do1tK| znyzC3CKM@#<}AfU!E^>RUV`L-<^IbbWB}8PvA{n2BLp1C(_5O7iu zy3d3C9_=urhkps@aoJbRnh*t=7pY68I1cE4jMk9nr?7B{A1jJSO-H9gRX5u(%^^6_ z+k{*0Rn%Dgc!piz&>+>4wWC--ryR@g4r#C8rj7?m?Dle%qfK;4FNny+h|#b z4e$nRx%;9yUuzoL`UtE>%N0Tp)F=_wDuVtOGVrKA$0D_|YF#^}VgY^$e`H`XC2Y|Y zKOmMy+zZ0v7qpoOjEcYYyt*vA_41fR4R5FxEhPd0O$#L+jJ!~fr|YOuv$;5C#zS$7 z^iYBnrwdjg-<SvmO^8u8?;47*RH_*@A(-A%u|e= zAEYQkBx79|{pi)Kkc_}h4|z>4K7(*Ho35j)t0Y^}S3!@F6VjvEDtyQ|$RBhlCxvs1 z{Eh$;A>NvnU?eg+{J=!1l^c>~2=O@G3mzS$0Pk*JZd={SH;A~P94V%29rY6Mas&`D zFCY=+wSbraLwi(|#k0NG8pdXe*&rz=O*M4$*l#$cru(kih*_u-`E}o|fuP-UD>dK|bfGx?e}%FvU;e*owue1I9taG=M#L^&1bIMv|xqW(sD^#**_Ay#g z^@ajIe`AR<7r8jmbeUeEuS5b7AntB&jxBfFyaQ>PcPqSjfptm#hbPX{zx)?ZfSPmu zfML2{2PdSC=q;|pFzA^5BVu!QZ9081PXY|~LLA2keW;IW8O#bOSt2^kHL z%7|T$SipfqfO|$ulBN>KQ&0-Y3h5E)?~G?v{uL+A!x(@sRHW%T4j{G}I6BeKR0qxt zvM6Z>q2w2p3y%^qTGg$#-L_!p?cJ{K`)Cbe=k$%^ktl7ei)K-V^}W8I|1|)`s zOv#z(Z~*t47DDax#6dfMX}N#<16Z~XNPup^cz5flF)9ErD+B$Jb3;`cA2~1^pfd_D z51Faq}eMj;^v~6VI``rYqF~I(KuU+|%B-f^uB!-{91)Agh!BL_O*|6W|7nrU$Sq z=TOGsZ*3?I5LquVnewTo!R%e3(Z;4DjpfG}G=p@RXfgY-Lu#R7ZAI57lM^RKErAnf zd%k0bh|%bD9rx!3#5wfsY8S!uP@fST=-jBxTdAfquZirqZj5#0KSJRQ<#l=+WR6`I zz=yZy`=^vUvkdr3)U6(X(t-d1`5IXPs41OL_1k$}m9Cb)fv`3HIJ9g?^q)KiiGZxV z1=0w6M4+|-Tmlh{WA~Bb(y#?pkCPHU*TvO!Jvnh=;c?4}(*ky(OEg_ay|Com5b*_a zIy$IolFuAkOOy=`F9E$K(m}mQ)CdnSx{BL4D7?JI(iVI$qK*h6aP%_w0?}{GteHiB zISI;i_qMJCwNJjBYw-cXm&pVxetDO+SpB)yCnz2dJJI?T{VPCurBwDtl1 z=7vtC##`03j1#9P4!Y8}C(g15KNF?1={k_wRgGKm1+<5-m{Dc`6#&qp-e6lZx=<#< z`AnU(sH#pG)xq50$Y?j7imn*Z9nk@N{L(7Qa`J5CnZX=F;-UJUhXuOYLOH6CJgo~ez2b;&_vJqOoHcH~nOzPk z2xE1vEam{ZT+VrBt9g+!_!}bxMpGW}!e_&gQZJE=@V(^&AGNnP0(G5ZT0y^+&J&Gk zh8}p$fV&2-Nqxw0kY&)>A2$4nF)5z_2=ZE_mJ^3%pFJ_15h_bUMG7fwx{eW{GY*zt zULYHzjXC8F{b=-lNh#s=&4W=xc8ePa_86r`8Yd=Q7dD-tj5IAE*@9^COJmN6Q#_T2 z9<96z$|~x|e!EQk1=P+@3gsPeh*sDW(VW={o$>+n^Nx^Bp>oJ(NQq7JR5K$QGc|a}l(R z(TM?J3_=;Y>l2Vj?6@%49nNay#gE(svb)|zySYbWopG1D z3QqvfJZ3J%se$~o4YorpIg_t|O-rRhq`s9cl1k-p;&3%sa&p#jYx{1x4tJa%SYw+l zU26h30!7?=m{eX%bbv3pJtN0v;J|2uT4t@h#Cl-mLRc0L*?-?^}~kF++-cqg9PWB2+t1J zoY9-6gN<>0QNs7GuxTT+H_u6ynA}m*sJQ&X*5M#oNZTUv=Cr1SXh0$fnnkxr-RK@+ zG&rX(Xfu5e%m+)xdD^pJ&m@>!0`v}%fXo~j27;ev&WLPZ%Tu0ID)%Q2Z9;(`*$6<> z>GxOVbREUn+O;uAD{nQ!W%P)nnKwrW(!*C71cd<|D3=r18CG$u;gr%?Q|WmkVDYvh)7@= ziVX=b6m101A~r-PZ|2U^c~LA-WkKO10bST?t=0cxLHzFdzb5TJ)V?a~#R7Lg2o+nru=GP45nedA4q5(`??cHtX^=R1L zA$ZUbL)>gn?iP&OD!T+(7*@rePBeKA1IpJy5JZuxoXsHk%`@gof1IamGq6{7a^ie& zN)dedhnAdCHC+cp5Ev>LTUZ$VSh1egpb`5;7x#m3r34^C; z-fyxAf`<+zFb%!v^7GIf2M}DwR!7j{Im#5r%#vRRK?GTh6d5hB1~FabkMfj_lI(5^ zPdVS8e!-HHCjT++E(j(~*1=GC2|t1pmMH=(Dcr6Z=O}|(!V|`bTv6uY=Ef`!k!KQ@ zawv@s8sv}qLA%8~W$=&L5*W=2 z5Uc$_mk>;I(K+FD%OKFbnV0YUA%aJ##+ou@i_a?nmv$`)sE+Qk^iHNA2-+TGpvXhu zG%0$Ze*#bWl_h7L)R+*+z$x;QcxRqPNivnfd@E#4}9K!JN`u5w8)v zlJjz9tEjg&wWhrJgiC{#w706u205bO{qo(DKS1yt3xcO1F-GwhElWdk4<%1>Xt!$CCAx>kO#4Fx1a8#}$1a_wDpbW!14k2KQ1f{zKzr}ni zW%g)ToUNM6BV19e_S|>euj#1_SGvqtdAG}Gog03-6a>%l7Z5yWcL*MS8q`^u!yrrC z=$%^-#Du4eJmpKC^5&0Pa*EuKIjq3L#h8T(-JX7YCiw_M^65G#l%V`!ZA7C+9pQno z)!`E`_eWkArLwfjv@uw*3f5#VkKcSdC^y*o5=hi7O3~KS6SvGe>>|Df!2_4@%XrEV zu{o(tqd&WYO@FN==i$Ub^B%Jo3Yja;8$0m?SGg$`%EDua^jsG6Ke#E25-*iSR z1A|K@ZKGFiyO5az$Ub5JR_*#>zm&=k!I=;*%*1>83>I37b2V6(uR`#^V|c|=-X3_$ zq8^F<3vfRIoUVfm0U57bgEVv) zkQWY0Z&p;yOmn)eBbdDtbSs3+Lb8d~2R6gZATaB|l#CNPU$0N`Js-xeMes6^RCSVX5po7qB0e_xncd%)oF<)ZIxkB#JEjVLuPaFq_D?%_Ls$PhrG<{xBp3`+8 zh+QQIgEXB1J5A95*zG)PV7R;ihnp1`Lnrq|Akczi13OF?#HA(G(aWGPh}Jy-s+~RM7fC7QlbCENlR$}kSJcgoB zjA3y(s`o2jdDt<-1i`Zdq>>_NiDTzz)_<3li?dn z4iUq9e|Xxk@4k+wtU!+Pt-8j4;-w`gas1hjxwj&O%?X2H#14#8FkOe6byU!F+AkKy z%7m-FSY)WCuj%8VV!{v~SrO@SA$Mtz-HO)_WC;X)AaoMVxKTzVU{@v~w+NmASCMU# zm)^2)&wF6hY2Eev(q#)r10Z4Ll=>oUjHc20Wpj@6;Pxwc%J7R7u)VN z(VfWc@OYP5!9_fPcpONvn1|i3qj8ov;<(`~SZndzLD%CNjU$kaW2dy0Hg2dY-|0Fmm>O@Y$)W_xh+5*V>mK-84v1BJidI8+Li!8GEr1jeg-nx_c6`RE z5}uTn`OvUWtr8Qwyxi9`_`eFl(}f^m$q>V92jvogFDdNBO?1|n+)MnqZ+Xh;Gq0et zbI(&={k3x3pri%!e3z-!oh9d3^yO)Ay!MJ6#AC`fl09(r({ z{cbdu>van2u0~FFoewJ#5^K=i>kMupof2Z|El>IT@RYlMrJb3)xO4!|50;$M6K8b% zxACaKWhnx?-1^gX03lEljA7mD0ZR>PHx^Ic)*6WGF*3}b#_#;1u5o3GJG#@6w%u&% z$EWxvr=yf|fE!@B{7sK|{+YbUuOWC8yoLY+pTKLy0ZouZ=sKSgA2*1bQku!w40g)K z^ESCsAgWx8vObXeCTzb4Px-vVCI>{?`qq+D+5Fvm(-Y_UD9%&pl+uc8r|Y2Mk+GAR+#Az{G?DKZ11&YE%pMXk$%+ooQk*ZF-~uijeK)ICkA1#ph0LUWI4$n`HY{M!8;bwoECGtUkmSzAL%Lg2%e@(sk-26@UWF;589b& zNkzZKGe=Ies<=qP>IaBRii6KXo(uR}SQ+Jd2~!33w}`vl@|5X^g2F-Jgec3MeleOm z-87Is6{DLcfZ`CA;BY9X>p*~xhtQ{MWbA0ZqNa(va1@CSPDv9Sp&~{+#Yh7tO@U5? z=s$%g>|}rzv?x^V8!Dq>1htM>b0pLm?WzV)U#*G<9yv~%u``f z(`VyV;>K_s)A9vU_sWv<$1;~;tip&0F`BI18#%BMZHv<=H7t-XFr1)72vqm$@Xzzv zEYFvxF>Is_)@e5T3DO=Cbx8E4DsnevxxUg0ygcuxg5akEL<1~_^;}CyOI=w5Cjh}y z)kV}+9co-(F%@($O;gO>kC0pFN(2?ev|Jfz#e*|}rbF`zEC-DYxLEL%ckhydi=8&- zZw4sE?HqONSW66n9nmHN0WphFMT&cSJpA4FQ+ z0+_j-3If5tp9(S`1>o<%-HpSp69f-aQJHPuPX$k8DhP%KFvgsRa- z+V#pP(!Wa}Q-)|r)8o9eWatM73Gj_G{E%b}-A zlp0Z16b(adx(=pg{!WkFjQ;MFg+|;~Arc7p~w$Pe%hOELX2V z7%AJcyQ!eRy_*VtAX7mgbG}IaY|#+6oZG43)4Qo4Z6q$vVPsQa%Z0c(j5Wo1qHzTCP zEAuLOiQtKxeWRKTGLQ>J^2cDWOLV@S3W|&ebtU;1y$yBt6jj)k~U3sE|V@v5@+qU%Nz3zV#|z8ZivhA~|SvhnCU6gFrN{ejT_ z6G`L-x-&X2tOIYF+SKGR;q*rh7=S!vzhGT)PBROHKbUfMiy(N4JZSyX4QU-bd8a=} z{?JusoXUAE+S1G*cua&q5d`J)+aHibkbp|eBX(fP$u&mnk%xjQ5mR<0di;bgt9${= zX&<89M93+2ok<_wa_A#-i|0PS~ zI|;84Quu?sSy)jk%Fhp$oFHVC<@@-cF&0EhgwLlw_ZR~R z=2pwnA`cEzP4STDai}89P9ZCTMpok|L3-3{uX0hzjjG1t-l1 z?j5K6a*?w_dw#i+IidK2*IT-HwYVDehz!L_MP-c&}-yH zk_Q}uHM0ol!RSRuQ=q9J4P5Vv^=Isvg%aNJTuj1n~5VBsWiJ>l21Gx9bO+d-GB|@ zv%b@j7U%HPSIZG}JLG#Movy>l-TB;*K>yP{@?Fx$;}Kat`aRGWPvRE*`zf{GNyF=f zhFpwnzVua>|0@j@ZhB>w_Q?(dU~kDQmYHi?*^#6&Wdulxg(My~xpL+S4&l^$C@<4F z8&E^UmK)87sD$%DY5>HEiJ^F!vZaJ-P0%M=N#Il=wXs!k7-lpK5}-`!YxnQuezQc( z8~rMvwbOOL1VkE00{xa85lWB*TMGt05^Ukh${y+HU670wHh^yaDf4rUWHb7ni(DdN z{#qF|_U0if$h?OXy1w<4pk}~vMNUI2u{%}Mrxkm)y_6HTP<{l6jXmX@(P@(qeLFL> zkZ+R(NMz^HAytOfIlqw1P~JF2-=SLypsD={oL`-GmJy(=HTPZ_Tz8oW3u_8Hfh8wb&X!Akmg+3^*k9MH9^lx}NvQcGGvba#P zLyWSK=Hx`!Uc~5coo;ia>p?vAv4uYl@|ug23O|MEI)-_kb3m#R=nIJGEQwYnXEYl@ znCEfOtzGxc_{!TL{K)5k!w5f#jZQU=`@?=E&LtF%e_=`-(jb=-r+7R-B)7YVNFO5xD{_DexW44!-cp`@PIJ7 zM4Ji7JI@2d^jBcNG`b)Hvn0vv0p?K`$??X;^~c3XKUm3tyve2VaVgPRX}2<%;t#M( zZ_r3ZFvrdRf_$5rQ#panUS1RF5^FsL`(aK%^(KxVoG>I@ zT!LI49k_q^fWMK+4Ao=MrCci=2Nr;`Oim|B#(r|OqAn)8UbY^uB>&}G_%FZ+ey&g7 zL*gN#mO+7_=2JTJ=-Jg*^FhtOA5YiO&fh@Zi$I^Q>o=Z@`8x@*$OOV~sWWHL8z47P z19SJyk>tVAJV!3NW)p>6L>9MGu-}d+)o~rLK&4m1v!q+YdxHp(0#S%?p==2R+%XUD z1n!Sbxhm3Lgvda7M9M7d5%8t_iI<$eawBmTXS&0$g@~!FeSIVmdjxaZ@U85Pq0pQ~ zG+oC+&r1pP56YzcPnW=R2%=)`OyUNm8=@`)I9fkUHAI3kzz1k5pDs% z6uR;i*iYEr27MlcVWD`aV7TNMLqL$}Jv;Z}AxjEY=Emt^XP`?We$?{V(EMV<@PRAC zZJakGEtC_xf?};Obq1243ufq{GMKx!7%H|(*5G02%@@;kfi`te>r4volv~f*4=-;`kV7koEP+W`sleAl32G_9Pb6M~Qa?T2 zK@yi+Rb>R#^0x*;pK;3b z9zlNM_(o({i1jcf*%ly^ke9Ine7Sv$J0KcjoN)mAiAREu-7HU&8113fh!_s{7>^@m zDcf@U44`r+frfQRZGLObDQ6@5-*=nG@%x6@Z+fWt5giOHyOD1t-o%KH!DlK~dSl{g z(;YW$4b*wE4hi(Atj^Jn*f%fGm>J1Y@cK>N0$DE2&a@y?wGiSlOf#@QZm$ zY!WV-X_9*JLt0nC2KYJEy1e0_i_vpZTv7F*T%v0xU&vEKoshOX?lr$e)JQ?n?(qIV zKg3V~)FpQzGaa(L`s5zo({oMWhwpuD_-ERm2wm3X4;6>N4e1C_PXT!9=0)k;E(-=LmGvqM;h zq$2d9d5@%zhoe31Ug?MQ&*(mymk^?q>V#q#Z1r>Pf@cW_TyLw;MLt$#lIntK_j?gC5X*}4V6u5gd?ky zMl~_Bq|2 zzZvRU!5HOL23)Q%fh_`FrKbiEJMdT{Z$} zK5{wbQLs4%sTW4==%?t~E&qEGA{tfKgm0ZkiV->^V%cbioyh6O=U0uELwsEGl*|>S z-b%T;)M>xuCfaHRFG+9L#VYH&VLk6^~dH{#199Z}3 zfQmoMvJ@rhgT@T)GTxgVS1pBr_^!TEO9y%6ra$9e1B6nkuq6KS&JwMv(`5>9Hbn%L z7)LS7BQZ2yOb!4x-(gJ|2O1AWA?cI%%C_3A>~1C2dGP9$ayBq$=5C-RtU$eC`$s+b z2tjkRbl}(01f)SPev)?2$j@J!$`19Rchr2<`nDWc_v;v})%kAbH7_-0(i}D|1rsSM zEKnXA9Vy0M{3r_3TKPHK=y1ksYEeskB%wJ$5bo5|$%?q`oLa&&<6*#xf+Hd;k%YkD zIq?Uzij^gUWxlSe*$(h({!k6G+S2wrLraVq7{xQJMBYcw<%okN=wMb>A*blMZ53c4 z4;6n5zk|>4{W?k7WUV9<=mpYMA^C zQNt`4>o{3eQ_tY?LxqIh8vl*roEEpzRPWxfw_mFw)mGi4aYF8J5_Yz{y}Df(VL{wkRaKa@b75{AnC?V zMM`vuSrD!CrK{j+O3p88n0ifNou2|T=Eq`Ia<7Jow=-oL-QbAMH>d{Z9KRsqw(pjJ zeZ2M@nmD*Gr~dAA9TMoznhc3;ZYqalR~OtcwmD)GabF?fpGNqozApS3QW4RiQxjWQ2y4 z{EFkJar9q3h4IY$ci?kVd>qs;DMY2vqUJ6!Ll7q(`V|mLWTe8=?%C0HlroIP}P{fb}aMO*`5h9JWyJx>0#=tJuFlFG39E z@H|BLCk?Oe)G&AK21chClCqmPdZ9?L4R}lF-96%_12_)Wv*|k02dLWR>7tz5be4PY z0^HXMM{IOa9Dm?cf}eb=mX7j0LrSYuuh2X2^b1ow&Dh=uBost7c|s;Bu$rD5$#~dw zi0HP6xKKwKXw|AVXf^Ko7SE@uCSR6zC9O1lr(eBN!^AREP=wXecFGf8gnKni8xL!; z1sJd`Ep6O2VzEa=1p)2YMKWDSJlaSkyAkSrv&^|@FQq38&WZ!!UM+p=`f9rqqQY*? zoZE>-C4pALnWj-na>eQ*rx1#MR}XoDx*AwPmTyWRt= z$Oa>kiYg>(nASuMlOrh8>RN_QDC6I&VWRq_*W_KC08WK4HnP)xIX0J%!l?6;={nHv z@FdU=W$Ddl{pLA}8f<;Cw^wTEC#yr~+(|TR_MDL`jCoDeizJ|%b-RY@Lv1ja9R8e8 zbh=~Z#a040HFKa3fnA-mUQjB+`y4p+0NgOSJlv6k8fLPl4IZ3RlCuBaWiqa>NzP(> zQ0&M3OEpX`f_e%46>g>UGr_;qs$Z^;SN(F{PS=ruo(c%K&ALpj1;ShSyYn7ExOl0S zt}Nxn1rs1u;r<*1(+UWF3ucI>YP2SS2V>V-rAh`pAb$ke6{u6p2~_h_~fT z$&@P-GwoI5r3gt2bb*`$NE98`AStd#F+^5SfbBXmC3F-BdoR^6!MsDZV;rV?8%i)2 zD58xra$*$Mszf?=#b?pl7ofNj{~LL!7^E{BFq9>QmVA=yVyy_(E3_|toM%UbGN@80n&|ME z8KV$bpe7b=>l$@gu+V50C?zV2=+kj!w`!QQE5wxhqKe|{s-SKL%1W|hS>3wo>Uz44 zxMHd~@6PI`j^kk#GK=Gv6UXk<(iI&^h^_20#HJo9r$2s+f9;Xx0hPxEBhB=K9hcT9 z)p9Sd*p6ceby{*M{D?q7vjHi-Qf@Mu+QR!9llnC0TK&JE9Y{W3a~M);kdG+oHJT>e z1{3DPZtx0YyjR1dRFF=&^Zj=?=v<`t0QT9XLkFX6<4u8Y_We3`Ws}XUv!9IBB3g_D z@c4Slen!6(BlfRQ!>pBhBi5WEQbf_32l+l%H*wsn)FYTE49d)}47C3FSMRQgK4?-{<>@o#33gQo<&D>qnebdzyoN%-y87`kofR6t4kKf{r zcA_zDD0ez;Uft5!N}FBUpR=c=b;K9ypb}UiTT7=Z)9{}sWr}&M2AoKJ^!OL#vzkJ*qD?`1t2~vu$ocuB%hS+D4_Tx*qKfiut&`Du zOyVrn9eB5l4d)LJOX!z!PSBfXB&Zo?8>`z^{c1JLmiHEC=m^!Wyaol*G9(lOL#!7; zgy2TNHcGPQ&9J?guA@vZnfjMA3G_p<=u}=CmOw6t`heKHJr}w z)G(*koFo|xv^pA9CbcB8rbuFv=8=%vM&qNnkLW#yKwi-)28hcg5Sz(5%6wgC$=rzv z^y4DNJ)~9SKJz7*vO>nP7U*wHRo$;m_IP{0WKi&_4x>d z8(juW#XP;TG9)kuUgpG&_kd9+>*zJSqY(6haMC`=J-TV6`_euo3KNuhMu&j_Los^J zI?}SdBv|{M|6)z{0rovGNZoz^DUavjLsntIeFx=+un1#Epcy=N()k@}l{_J`4vpb3 zcf~J21Mqyg*jqKsduvWK5!KPrFHfAHDiCYOg9k@g`Zg<>pj#t_31+E1nG+hd43d%C z%7f`T5KP6Pr(tle)@0{k<9IN4&q&Bge29!AE0LESb3Jw-*}>ZhYF&X@)>U(rdCvKH zt(Z$dLL)MDx{s7SI3|(q+HGM1D9~HJL=BVQ^oMGg^rHi` z1QqmaY%-Dv!6=l^*5GN}I>Rq=vJM3OjTyzh1bTO70%_(133R6>K`{*r^&Ocku9WtA>eq1yY&Y|oTpG^cK6l!$Vq&(t{l1Vtf%v1rz2;DJC>#-o?8Dg>yIgSsWzz3Ho z(qh_fashXMRz(7K9P1Fo zlfT58bC0GYZGVxqd~uexg(yhAZ_8@96^1-l7P(ggK&m{m- zjyty+GZ;KU%ps8-QU|-PV@E09rVA%7QS7mVW#%-dZ(X9uynm+J2y7#!Nw+)ZHG=(R z-5Tu>alkMueaZZQoA^)Bn8}yvbRBNB%I0V%gW6=AMTbWgB9WYa4}TzM=9v+gB|cET zq@2idq~I~pphTHGf19)CBIaJu9w&idxWYZhi{|l%w=PlFidTzo?^D>+fDT?7?I7_X z{WcW%-6y!Ea_9a@8Z*N%U59ybjdFV;{-~4&61)vuB3J{q=sYEZ1{ zz=*&Kknex0#!NU}hxYgigTfUTZqra;hsk?HeZ&o#>8RT6Yc1Wa~5(y(eofdJ647tSZW4?1F6ZE z8Z$DzHtEgqSelGH?{rNA@8A-(W1RPPc#N%z7k`D(4oV(;8-%1UT62QS_!Bi|ChI6) zG@HF!3h!6)?SNv5Yd-)tsK@XE0+B#0KDeyp56rWJ+{qxF|BHD(0JNn&^B z62(~Jc;XV3GT6A)m|5eg9gPsOoijFttVE1{sU3HQ|+Ga&-xuZ(tB!h3prjNURzcTz$?Y7WB?+CBYxB0PDS_orygOxJPrXGb3% z{r%DZboAdI{SQa~`O$xK^j{tQcl`I?90f<;`Vap9{%6+pe;xfFNB{TH|914z(f@w* ze;)n%=zlr#|ASxGw|HWI$MgCxkN(G_e>nOt_}_ocv-|ra@Bcaa_Wt9Wn@>OZ{OD-^ z+fQ!xH=q3O=;&Ac>F7VQKKktDHy>K^x1;^{p1__qi3Iga#VhP^w0T{qa(im z-yQwGM}Jm+_Pd*JesIK>+Wp zK9Jw2esuF$Y5nF#u7OoP`zHVIV}8Y_H^2VnjJ{j(2lZhrOb+3$|# zpWb|UbY$J!Jd>|I;+sD$k3Ql{jy|~g>~mHtck7${`~E*ZdiL237k2o``pchiRNmbD z=H^2#T~|`ZGQ2yo11^nAH!#d zKOP=3^e4d@rB+ zxBPxSdGpDKAMiv!<0pLh?Oz=oaf5$<_}w4z_rqP_>TaHWyOf*!>2HrLF6*NYKm7RS zH}bU~@GE}v@8#kA=JOBvA;03fc@}a3{EBCM1wZzPWqgBg=6A~ty#14WFJCEF@n_bj zzrXn=kInkWn{WU6aFc(3bo9YL-hAuu>(WXYCnN#%%& zkQa^Qk~gVrSrui@h-DTDAa?*HfPC-y`|ks|RI$6O6dj=%xdO<{m+#$s?z!ild(ZjL zd3m2z8f^d6bw89K?Dm3ceWCy`#J9P0>SJ2y{497z(7V9;5t~QsDcN1?@>u zrTggLC@DQtOZqE054@`P^qGNXoW7tfL~2A#RWcV@#6@&~6+?t9W{LB0c@jBr z)(osTC__ZakH1izj|W|U()u{>`tDl;?r1Zyk{>6Tp0C$=je)LH^(CFRs%<8I0H&c= zo*bGZafIVoB_GkUQF)Z2vPbF`{DM^?DP5=ak1ZAwUwh?%Tfk^le(JcsPZ=AH$bdES zxq!{YaIEqmZ6||TS2QM`##`;S>vun8yhKr&L1hi~ecLK&caxe^R{NlvL+|{R)s=s0 z-XAcl{MMN2ZtG91pMU@Q_bvn1Dh#qD+-LA*=K>Z+?zsUpmJyBlaKIQvhvinbETB_^ zANxPFKD0es=UKLoK4!@)fPhs=Atu5Y?B0ii5T@9NXr(NyUjDebgw6FT8pG|BFD9HFnS%AwxS?tC-e|eD$cg z)zx3PA68e7ff?8tvY_IF6_oych%oUyFam?-eb|0#E%R0p1jJ&|Z;f_wNm#wz54Di9 zlCb#k4j;qDQj3~sm9jFq)Uo0&cEvT6%OHa&WRluti?zfT#&L^e|BFSKlbkDp&*c4f z)JPWGv!Yr?o?BI{4Q8K}X^c80Ne@^Rm9oz5V?>Ug!;i5;e1SW7lqHqDr28ZII>t&; z@MDA!faAHIvw&K;TEw2)T(yt!W} zLlU>j#>79wA{d`wsOz#y2*7+p1)mw2BdT`eLL|S?Kxmcy*lu@?vGxX123YEfdW?{a zs@-<_{INS1VlsEUGf13@Q_#k$o5h}U6(7s&Nf`|V%GuTkYc4tjx9wW+sm=RyLrqcH zmv$BbNqWEv+;_)RJ8r4QK<34bQ-gOH^UU(_ghX9FWHf^o*5+eF)FTaJsM}n6jr~S3 zaPP3+A5qjy$&X+NlR8GtwX2KN;(ge9k2J;^vq#&Ax}T9xs%Y}Lxbc%T6PcaErrL98 zWb%UyY$ZH%RYZqo;uuu%BMo`KRm@q7+4BV^UB0tX3C`J8DTTg})gFTp$C3|XP&q0! z^ZbjC0TrH%`>l~uqanYGDM;yd-locOd&J#ODQ=9XP8oS=VuK9mHrCx@vf&bIeUV&C z=&e_kOYMHEJ;^Hf1ul#zSHeg2kYNvU!FOMdHY12)S4y~Fut0e8jpEhq_yIEFMP~5E zd~CZTK4yVT!o)|26hT_dG^;Z27Jl&&6L-kgb6!-E*m@2TBt>BcwUV6w)V%*Qph0!@ z+@9~v{J(cIFIOx564W)O9yrR#{z9yqwCOTnEW5KV2v1+>%Ne#hR{O9|>48;!0Ctw~M(Cb*G*f_cCNE%E~jaMZmeie4j zN~45b17KIon&;~OBIqh31T+{!titz&B0TunjKRlll1K`s&iYi&{;&}y$<~O(t-cqtgvrbvHR>hxd8$&qXItZV~t-aPVYn8Rg+Q|D}^S9kPYBdr%c*Vl}JpCu>?_d96 z$RL%rT!&Y$`OK3`1Dd3rq3@R4KlFWo>o%`EuV-o1=r^StQ`(`_a0zPjtv@|z=nj}q z$JDi7qH7PGAFd_3qN+BAsSl+4Id&?=ve1Gxp>!dT+>Va5&!+^FL)n#4TTgXMCk!I=cP}Tc1@3l>AyHXTw7&yJj|t6Z@{RNOMiyT z*@nK?lNW91yKT6TVygf8o;PIy0;YYBhp)F`rM>G?+gIBW4e>iHE2)M9KN<^tii$_cqv)_K z4!1o_t#@c0d9m_%^Tp#cnNFKo+5=B1sImGPUY>HCGd=jya5^j*wKiO~pX+MnMOn@5 z$1j!7n%S)Kk6tNj`Y}}Y84~x(iT3b{A(~pp^^w0>ji zJjWnm&JLS?*(C2ckL6L>G}rUyNT#(L$$2LF1r41QWfzCTtFL49m$MmjBsy{eUac*? zVnT?JS5&4{b5@M0QL=XC8uoU$fXBb*3OJ01XWlh)yvb!|sEmmOGwca?LXwFVZGEa8 zT~{^kJmOe}z+=<9no0k2+JD6B%U`ipe~*h^MHYXqzI}IG6#bLv&%b~D2O)!0l)22S z*L-4yqbw9raM95D{-N&!e7AY!c|D7&M!zYAaplvY)Nl#D^Q}LMVWrf7`D7*G*nWww zJ#>D!mguUy$_-N=h~jcWtLOQ7U45DIFh@=lT*S3!rX;xN`LW0GtCUsl>y$sE9j})9 z@9~i2oQ|LI>B+_Wp5vTe>W}#EkAA`Xz-uU^jBH+};B$@edMGRsV%#I)H;t(wEH2gZ zL!Stn64=eC zM-vZ=QlhC(J6b^d(ViHE2)M@|3$CCMTRz>BJFy|>YG>B z>l0oVWjr24OD}K{pE^Ha>JMMX)_;wjFDhIFK@Ie92karHRQOMM{WCh&^Zm;E@4WJ+ z&8p)mrzV6qLBK`GHjk{mfyLi3-wiH`f{RccZ@9ok(Tu70f`+F&;G$nZLsJ4=^ebpc zVZlYvcv4K1D0e6gbjyhVF>o@hP{Gc0{q_w?PH6W%;fQ(Ap=PP#d~ zAnSV)s#?A!AYD;sUr-z{$1k*fcxJtz=xMxGmEl%JQB*ui9z}4`^R|bn;h%Hv<&{VL z3{Qt-G;JmXI3fxz(&}e;0b@kLMeqzRGJWzSqt=GYf{VUZR`LKBJuja%vsvZAMK6^# z{TM0>E{b~PM04J5NX|3SFKFnjD1(c5slJZUU(ROCk?61 zu(!hnJpMgb09+LH%)4feH@VCVl`)ZEJew_=5|B)^XzSBE=b3Jo@4Ehiw612N|D5(8 z@%r*ttkvM6MPyL!@q?w`wf@lh>(*c62TXsR*MDsNP5%C>IrMdHo~nzvlH1dHn)n)=#Y8wtmn0W9zT*_lJztUtyH~8lQh`#__LMf5cDFKH%qCC#|{G7Z zv;6};%gXy4K3%^)2Ys&fz-M#rsjt_c^mTFfhU@eD0|C3h4mbsFp;O=lY`@E~RoKsK zu)rzg-jl$9zbC+P!13#4`wFO2P~a8}2Hb)^N>SUN54e8Em*n2LVxPaDu(+hO)G2X` z-4d(RE*nu=Qe0G6SWr+{#096!EpBLkx<#*DMa+Y?5Qhd3Kn@vM0^At);^cSaPKmz5M32K>G>Hvqi> zJEbGXPMk7r`n0K&CrzF*ZN|)5vt~?Z`~I=~pt6E1YzZ}Ex-+d{`V5}*WX~AOb@ro~ z$Y#1DN3nhQIG&(1z%~k#r%q!x+^Ou_GCn_!ZP>IgG<%Fpm^{s$Rto8flb}6owmrw0 zJ9W-%NKTtJb;{(4@HcM!_z4rnu@PWNVF0Fb)NuX>%7YS+aQHg8B2`SiE%k zisefezcFvtw8;}EPM$vJjU~&LEnVU)@-1HKEVGx6TfSn&^2KZMoi#Hm*REHg zO&iv(UJ3upm(jzyGp9}E8PdxuH@KUYZCF=Xxpu?mZ9A%}cI>Fyxog+X9ox2S-n4o1 z#&xS<6jCde^VmK1Kq(HuUyrp6$(8b;`8C`29ynODXV=bMdunQr9IidEch|NJYnClu zvSQt~JqK!Q5ANT$ckh0u#@g@fow)ztp+hyhx2##RVE!9RSFcxdJ9q7_c6OIl@7Y&# z@X*1Uy}PUO+egyP$`y;|&z-+`^`@PBSM0CZx2L*#Z_S}2M~~9P;UmY69X)*LzyYWo z*t>Jvrj47nY}>YV<7)OF9#vA{7ki6*{vw`6uwvVRll2X!PaZpZELh(Z4mH%BI9#)P z>-x&In|2;NQQy>9f66)O2B)7qaqQ@kqbGu=>rU40-neS%(v|DC?>Tt*==wWaQz4`*v<#vuw$-HCw7{PpmjqcPdDc#&C0UsImU^>4v6| zKIZERVgVQ?|yJ8Cjd9yr+?KYJz`4mG!&y>Q{&nP}+r ziQ2tYTes~#R2PY#JKGv4J>g$3hPtk*L!?C?vDp#)Fu=C)_hUREXi__|~l(wFU zpFMXj-Wm-%p^9)M(%cxVt=_VBb>-&j!*!vR(O64MYy8~Bwzi9BTbjdEJ9DPBrRB`| zOKq3V#hU71y`iD**uE{xd2VBo-0E21 zF?e|Yp1p@oMK4^rdimlxCqCs&OQh-asbF0LZ5swxuiaJ?jGSw`;#_mDI#+yGuQ}Hz zU%S$F;rzLC7cRA3zH}~HcWBq<4U9rCd}ihOi*1*$-nf0|Zu^b4v$05|C4TPwg$oz2 z+_-b^?yW25TVt`-GiPEAM|M@tpEME$^cXBCshGZW>yhS5H{089UcY{`{ocJhx8U$h zv@v+((BYHebJuR&x^d-_b72bSn(9uT2-b(1L#Ge#+PHf4`khBY=dRtp>)i9*y~7V1 z?l^ZR-?@F`+SRMqZro~bzjgIo=-A%vTej~x+Sqbo<>hNPZr^>o)yNXzyHqN>z6Omfwl{=Q~NhAnmW3qV3@(uF*BBJI~u**{^pza?%cWe_B(IC zd7HxL&O{o5Cr&oDUcPmw{pQs+=i-hFahN`K^mq_$J-&Zi<%*RXb{~&ix<#FL-hS)N zdw1{Nd-E+0?zZ2$dGl5~-|pVH*nDE&j%`&nC&OpkR$aS!``$b6|L{jY?6`Y1-rU$2 zj%mQJwZHxTkAC!nckbT2e(m~=>sQV;9@@HWhIG)EV~|Jq3Ji-!n%i!_`IhtMl472#byX|c)jdgYPp=j&b zi&t*F+3~>-fAH?T+c$4GH_NY{4-frJrckivY?%lrL zcJciAv#pV)#-`}GD>rUlZ#y49b0!{d37y~{XXAG|v9^7-hggFClut~wBmoV_&r%Fr0Ud+++WaNY4^C+Zr*(K8pW z+`P-U-9y9dYvq^EH6PoxX5OSx#Rbo~<0(=b_MM7dylP)BzH#&B^(z<8o^e{2#G0EL z8k^5tXlr9^!=Z3K*VdM3Q;gaI_UTHFv5thWYpyOYpQDNBWIkrb=El-U`+|zO)DE&Q&hjDrMdCc zi4!MT#7-Wm*}Y>MRs|z6S6gtd-n!?|v6C!*^{4BcQ!`FCqWN*HGmWQNkWL({-M3@I z>J_WjR~_mN$W+&`6j|evg4^^#M zFr}gt74#Uy&P|xLbi=Mg$4}XH?&*U1)2B`xbB?mcAE`Z5d*t}Z;K^gPHGB7BAP%zJ zZ`rW6a?Psci{?z5G;!+eMXNS!t=he3@4o%}_U+xXXWzji$AfisEYk<~@2%dwt7_ZE zHOtuhaK(n5HAhZNJ8>LCa3WZDI(Y10^>!@gmTfzB?lz|9uzkcm>>e3;^w<$}XT{vf zqf3WGIMEj_0DY@DpxLFzGCI-HEY+c->`Ah<}F+8ZSHobs%+baRSRcM7&$!1W%!sS zBgRdgyJ*E~r_x=+PyE*MTJ5Y^%oCjP0M=HnUa@q^;wAVtE0!&m$1!~xPfXHAuIx5F zW7eFx^B34Wb$mWM(k@%Mrcwf4vS`749(ys1ovwNCz_d9F>BPh}t8gAx&>ILYd1KyO z9&$Z@{(=S08wCp&LEc%$6M|N*TD4*cTYFWMnJJvJD)9VDcoG9o_?|}<>NxYQdHK2S zJeya+{CPb6+nHX4%QlMxSPjJV(6YPmLFNc>O!p@jc@)yMm{$&}StX)`ETvDcuDcPxIbbeF-mwKFyLn$WM z!-%bzc&9=rl*dnp(*rUJog$~$DX{?trKMuTG{`A~4~l>joGtgmtW#Rd z5e3Rh2TBAaZ19CsUR(yeC^YI&>t8m$b0`_$2x_)UMw@xS zH1HsENlCugC*(XZgnr%PXT!*spG;x&{DGnprXhIrIrL>SJby9ha zC9W`gM%tqWN4pjNF=K(l159AHlM@nlN4g{I@*?(V8a=wA!Wr!wHQF6j3Rni7mz0ed zIQ zjUQUhrc8HcS~HyK)(jgU%;E(Qo~(=7*>bWo#hIF)Rsvk+JiACbGYbqJc38yRiKSXV zS$8H*o?=gPr@B)n1AfP`Ng>bPWD9cxh7J6lH7h^cnG+B~26VHaP8jd7HkAO7N0bx+ z+Z{q=tleci^p=N`FIn`42Vn&t7h&FH7(9T?31`XVrOR|>2_IOQMe}CxER0FhX3cwJ zp#uPRm$-}lTys|VDU@Fp5L9+%yK}|~FwbDC>{)XcEL;qPUc7kGqKbvU)5+tdvFjW-#_rgo-^JIdIsxS4R$SKe(@I z!}0}l=De|d{r2kpHGuVf`wyym?Lpx6;iE@sk%QVpHPuyHB`;*KddZy06@m~JY=dGa z$-O)Uf;@5b=R|EspGZ#cWz$0di92?11A~;hV8n^r-B~J#?d@}V8^=Ui@YrY+u7b2@ew7!eLdTF+g$AV5)f{NV0wo3`vccq$SX#AtyrQT5QbX?5kYRh#z( zW0$VqbZ(8l0jRxnsjcl2wPVp}%x;}#s=!OQu@1OYdopiOrgPX~ke?2#~-cm2v0 zl{)}>cRPOY!3XbmynPSUTXOrxm5b-jo;!c>>7~&Z&&Ok-`ntNt$l1%c-|F~*^F!Yc zI+owP5<9+oW92$9NMp;ni@@~ud%(~em(DadH8mTce(~}R0PdX|ZRc9;mJyMLqt)vd zPOT^{fZ>zAg0gY5R_;8}as?cD^ZJcjckbP5r_r;m&Gp9*)*L+E1PE`xb^YpPcm@O4 zoji#KH8%whY_D9teBG`SXKuas`2@xOwB+ z<@0BvVDfX9Z@u;Yhd=%KZ~fM9ez?5j=9%E0&FeQ-9juF4}biV58uCgrM2la5tbG-=IX6C-~Z8vKYIV|JK%coV!Y|d zjv>r!)q0#G@~d|M=0pwNeOGN0dqKXZPM!+IuPE$r?XtA?48w4^_Qj+$3Oe6pTYRM@4Vx@JMyhNH^e#O7U%Yz3GKJ&HX!xfg|=(A-|YAyrGM); ze`EXGS0hJvZCbx&&#|WXB}p8{fBYNowO@+X6MAVNB5~pJje8v*5RiBmJbeQ_J=c7E zH!&T-X{%g}&swqLXynpO#509p!kc%A=b*|)G3%S-mv1PZbKW_({A^38j+uSnVC|v( zRqL0{pR-`)w%TyposJ*==!5q_>$eG!+`Du0>LoDqm8-xFS$s>o4o;=;e^3ZnUE`ogLO#}y( zOJ|!;>@ix-GAPE!&RDwTVEvgk#kr7@H?Tl>;$n5DLoMgqE~D~JbWtoCZa7)He~*CV zj*Z&+e$J8&drw9$68*Y;F8NPQCEmh-Me$+Lgdupnte5gV7jpxrdb|_hU#oQ)^vQ&hQ-rO z@Tc5gP+Bo<;kxQ$jj=QK*-7V+aZ4mbJf*Rr?&NVoACVS#uXj$lr>7G$-EYDIo7b;g zIBV+U>GM}^-G8DnN)Ry?aYExG#01X7nnR&*gg|2~5{AfWr*0haPvW4&SP_BNwlim1 z!Yk`)cdlQ)c**K5`;OIzSuk7Z)Wr+&=DNdsckZZ?)ngt}I@ZG4%gXFDl{W-ycdc8* zgNRtWO*~`L+!dSm96mv~p!hVzgU62^agK&$vJM;~h%5BZny*;%o~q63*MhN^@{p|Y z><|6Ms?EDg!?hUi+5^>FRxg-3My8TvOi}sR zX$w|v+_Br)Q%nqjAVT$Sd*_N>0RC+XLsVDq+94CWb=&r>o7SybX55?UJdkBHo3}1l zwq^rYwr+7YFWa)6n8hBV8-&jH>{aN2z`pS|Hp9g(?<*e276LgNN3C7Ha5jPdIg8h9 z+ObPfi)ApnS8fG?{iVwU=GQ8^;CVXRXdQoN(9Z}1G9MGB9sSxsPK;Tvx#j6f!4^!(Y=CXO3Belok#ujJw?XQf3$1*-{` z;58Nyc2LxzaN(jQIGy&gk!pMC8$<4tZvt*>QR%30lV>~+In19w&x9M;wO|gLD$X;( zf*IBQqS$4{9$ou~<} zD_%Pe_7vk*kH&x3?$bOrhlaW6%qkHB3ZhJQCb}jb;hQ#naK=c5BW6yUtsU^fx zI%4$L=b;FNA>0Xm@>Pz)5#vbJ;hU4Z^1>0NB}FEI2=)MU*cI;R0wIqH`H2><0@EFP zRDmKC3P2FW7;TTrvp?(za0rNHWW`uWk0&8WR?V4EqzDBujHe1xB^Ce}ZISUHFbA&8x z2)SUa0EIzzmI+wofp>0sDQAk5L1fnfAZ3yN)rdvjL@Z1)*KY$--NHT-tswn66r*qq zG_?XQz|9c6DE0D90gZq2eK6zK6wFXysLKR2`q6+_)A!G;E??dn z@b#O3#uF=nnK{hGvmx0SRCy~Mp!nm5ULx0J;} zK?W}b@tUmt(*pAC1Uty)_Y;yMMn>?Y*c2zg@hemI3BqS{UZm`qj-$zWk0rRs194uC zTf8o1uP{lW$?21=_fxl@c!ilyPH{l#dgnW2>%H3+hO+g}^dgeyEO$g1#t^QUIG%L; z>$3GF&$IQ;NN1GGX8VL?NyHOso-(U-e=d%m-vV*WgqV3PFX#!s3)ho`75F8wY^ zdfj62Qj&hl<_+uCt|Nm^9AVSCHAKMY%$ha#MUsBvH4j28)d z-K>BmUc7YWx~;qMYsk&-bM}tkCn$|qg;z0u9$|;gJNNFdS@xaM^J4C$^n3$3c;LZl za^;PuPaZkAZ|9b;r{}kPEj_=4Bt_-Ab!*qI-?Fpj=&1%W^YSt48_170ojz8xlMMcn z<&|6a)Sft1x9mHm=EdBL)VxW+$D%+kz!TtDX`>ylrsik9nwnp;V#S&b#EiCYui9IC z5+8Z+>_q(d%U7?GZLB-AbK{y-YquyVAC0*!OTSA}UiZ)tZh4-RCr{Yc23Way{qp(N zi0&HLSN(EQe%sfR@@rPD*|5D@iLwJnPK8>}5qAJW-@J9_O@Pf?x7%XD{oB^BBO`w* zeCGVc<=-tM?{PPrk#Dm=l3;rbJY57oYuk)QC5jQpy#TdNP+N9G-` z3$>Ebgt7L!Z@%;12fy*-AOEQ1_W6cGRhu?$HQD&f*Oq^`Z2S;&&$IDwz5O<*xC2Oj z8^3P*{-Y;Paic_2>?}#z8|0DSeEYp0e)!X${p=?n+`ZT+ z?zZngK_>p%%@yA<6Q407JCuo!w6&9jf4Ad3LNs^CYo8_CN>rx)rA++9Z)D<^ud6zE zf|%L7rsh_1$RJ4WVYv6s4}SEMpZ@g2_uJ3c*KFIcVY}|gxP0yAERVf!orM>ByIy4B zZ`>uM@DBG0+`TE`fdL8G{n9l28%rv8aJP!nSVX``VAZ)a1 zaBl_66`Af|o`Ih+ciD#BhmM^%ar`)W^rlb~;QR!4u{04mY>kD22ez$QvT#Y|c4CRm zk%;?U^Y7wsgzhs_{(bkM6Ls}YgWFg}BgdGnhmRaN>>R2&{7Vw>lV>adQ17d$*$>^XA=Udp&n`bNgRw0!jV$#v)q{@ zxg$}xBu<$$k^K7nP(LVlLCEC+uyj@?RmuR=i>E+4i^}a~9kAE4* z284B$OSb{1h29mX*e)q29S>^tV5?JZm07%l_aA$oJ=X7zcbr-0$xq`E}k!GhlV1H~*Q-?|G5B?iTqO`yT4Pj-R^!lpRuC>nHC2 z#5H~Xk1ji7T0ef}^F#N4p#JOL|9f=uL-*zPf5Hy)-+YOpN)3OiCD9ZIYB6s#;-9+w ze9ih_;E0f%(F#IxE+IK|hoAW>BnS7d`+Z36*Qp&{Ln{j*I3z#d{u@`}w?B6OFIR!H zKXU(1SHY|oD~(nhtu(_cjy^TRzyA61N;JG8=~FAf>povzDRlko-&IfT4u6WiRup}T zPqm*wkMh=^p+(OO-`GvQd#ej}(=~R}HFk5g)nvWLFN=PMUxfXx_51vC?6-L2)laRz z%==&E>>rx*zhnI-zdgEcHCs!uv@ctoKflN8txNRfKe7IE>ps7D`@8&>>TmJ)_pHCe zxxdYszr&foVg09k`&;z&GPl_LMX{T!tP_mcPx-yrAMil3|A>+KIV1RcJf!Ro_|@3Y z8MBYL_9L#{v)*Jk#TC|gelO+*I^2$qL6#eSe%!&2lRJ2h2&eL>#=m8mv0Z*c+M!np z^OLgpMd~M%VjuD{_ATyk@4KJyjkBNfTV7sn2fw7f-$yAPBf%w}K;qo*cXqTt~>G*_wxr2AG!}7xGw+pBkQ5<@_YgJ)6Y2XJaQkp zuFEGso_^%IzDEzAy6$I=JNUVu;tm&mpS$_b=nM~zD*VKylIw>W&3w-5k^LCv9tWuV zklm7LfV!4>4H^%@bxS^VA9W?!qAcko%9Cse_2rkD^n*m_V|w$rE17mOY!sC8{aM=1 zu$4~6$&P-Q>Uu0@A3l2Y__5pR4s`hw$&`~WNF};D-TdQn8hh~h=k7zQr`(h;nQ*!a z5^Q|*$jRC{H#;(uPN!1IWTMM`>^^?%bQZwg=R9smuF4z8_hHw=TyI~ZyQ`xjiMl zeO&JC$>s9d!Y?y_mh9?82$@_@cX?lTSLc&l57bks{`7=Y5;EPry`7JO?f zY}!Qv`Wcz)vIl!2%LYP;T&}CLGn4JkIY~EHmQAPnpxx7#rdx%S$mSAGazZYV$R(3K z$y_GYoBN9ErU(6Lepo$aKZ#G^;4$Ejp@j$MIJ4mokQTarz5r80?ZqT5N2%}7oVO{a3%^i!mr%H*?l zrXZ2bW)pVSO^wWEQn_@puaD+vg)vQcvC&b+&6XzVohtVv9d#?&-PN69=rf2D(qi06 zxj8q50;G6GP1Z>iW+XD?P}-C0dfJnI{JF=}0=P@}LL!mLu-z8j$RtzQB!|gNI+sf% zySYN+=n|YUVotgu1BaQOY&w^LG5P~*2%d(0-DqD?GK0S4ayBiOXVOW;(b?UZ=z^_e z#!mY(*?h{$S}D4iagw8HC7FdrGMh}Ka;cn+ta=#3;?Fw2qK9mEmYGUl*-k5yN%8W+4OnbfAOpdZ};D?cZ z^X{a_sN+zo~Q~MB&v=mvR9Sn<2&Wvm2z*bthdUlIcv3ZFm~XD$BH|q!|fB zl7@A(H9bOz|vocnOY_c!&h`BEy z=DKBK30*@u&4`qF+?Yw{B>nIxvRbpJOa7FES=dP?a+w^oG&3bx#*~5SL#pT<|G5k+ zHQ3Q(YQ8oI%%l@TTv10|MgsbiR8hmP&?1kg5_p0suCogpf*oT-pc+YfES-X^h042` z0u}}IHaStckYV+q7COT)BUb+N=}E}R9I9=4nPLFwNIFwsm~m3$B`~-(@Cv?n@eZ9c>az!Dsw-1 z;C717B(s(0nZS%Mle9DC%s9v}?UL!7ot~Vdu^v`6B*p@sNIaDwG=Li2!h}{>qkmXx zR;ZE4lS#l(Qz`@6mWq$pQXx)rQZAH+2C^)f7P4?NWulhpO+7@r1m|6M+~@9BtRuOk zX1}-Ov2|j~&H8CemR_?GPVZqjc|c_E7loZ5z?68HY6Zdax!foJ3I%yhEr;1gLUh~nc}eRis( z58{u$e3(iMx?>Y8SeUuao~|z5aJc$lq>y%Sznt8NEPfNilgV{IMbD9zlPpJ=PoAXc zOV5)h`5w1(Y)@CO@wNIG#iumWn@i>4C2JLT;3+=-BK^q81-{B=zp``IV>^deYCe5Z z9&|7}nf1A=^RfIu_tQ^#d-S-|?Q#=|FY<{QIFVWWsIN4j3C?!9j~_im`i~Q6O0GEj zh$$-=v0CBW=XmaT?}3N7s(v`cJICpT0wD?9Y-h+3$Hf*swMZ=5ExiB9 zr|xH;fexVCi^J{zj7NXryK(fX`-xBh2!n?nS)a(Er_oP92|^;wK_5?-MLo_WE&_ZJ# zrE-aMcTPmbwpPeGylzH>I^FmZC=boz>Vd}OYK_HPk>8N& z&LC-dTi~vgpOXN5j^*@;V;@;Iq*!d?#~;?Y0?Aye~SI!^1JB z*?bruKc517%V$-en2>5y^Mv|xxT$Zag(SdFsdP6%0mLEhKgSi-DY^>Z_?hayTzXtA>4l8AjWltm zY0Fl-I0B<29uX3Mlx3Ud>?qVdNx*^@bqY+0H|;s}E(P2qU{3^r@4{`8e^0^_Vi5vh zTyWkeLRCH}+!#LPD}yc=N-xk*AuuD10=Ht4bt+XN2bZ3uGCaK@WnB2=Q>|P;NEAXG zA}hYmpp3qCt9esFfQ6wK*pQgZP!(iO%bBFW2N%1uc;t*Us_A>A01OD(lt2=rJR#69 z9ft`gJqfhsdA6HL9j6C zXEAcXOXm}VpW(!D55Rzcqql{uOXg`Xj z00$!gT6Pq>@%nCtRA_p(8qw@eC7vjhCPW6i!fkMmvLQ7fnKXhqolF-G>&_UhqeNFI z3qN#J(+J$pdWE)TM|o_TZb5`;P;8_?lnWd0787noU+54*L_d-F1|u{?sLqKAI3XmN zHo+t<^u$C{T|Iqtg+3Stp-%JC5d{@k5c!hvDIk;25a$x+*OWtj(E#S}vo300yCg{U8Z5)0OJ$>PvTbi4_M13k1c%sJuGvys)xJ;fF0y%g7g4;CtK9j-7U{&B(4ArXM2eGQr=D(&J-Pi zG{88G!_-C8#pDl0CkYEk9Wd57ejPj}OK1_lQ{M3th32tcPkiYoTJ@&)CHf$NE7<$Q zAYoivax9PK;dOP{-EMD@@(k&8CzY7Otepw@#2|Cw`4K63m3)EI-rjP&RS==;e#J$} z(tT>PSmUEQIscQM&V0|fF5$@`qVOpQT+aCe8gmICWU^m9&dC`j6i`SNq6~IoG#yYdf)1we))OvX zsoP27?NQeQ&*S_O*TcybJ>oi!|Fc9XSf59%&}HC$L7H<)ZW$L|Nwgu*5BPQaI<3cp zoxaCF9bm-cksk0DYeWa`gWkY2JX;%};r0XmLHJ-M@Q(%3DOT)2K?k-meP9x6pK$W? zhmR;Dg2W0;NZ=tjT|~%@;r6;ZZ!%>-H|z}g#()aHKT}7Dk#yxJmXebq$BSpeno?j+6C@aL3pqn{LAOoht^bEWKo2+42zvGm z!B0IT$d<(;Jdp1oU_tyqw^y*eD`yq?`wVc3zs{n_X6*bv=lk0$e!XD>e(_|&1Auz; z;nn=}Q>z=u&YtZ$ZNCI!x;h)O#@G*jhQr=4~C zi0e)sN;|tuWL#4KF-s&-0F$SFZQi-i%RA>E5M48Y0#+{aQHg#cf&p)G`l*P!@U0Wh zx>xRb!a32G=3!l5igT^@KCgNQaPQxncrciUklau%9?Rg-;%n z%HR>@WG^2RQSC1MR_SKlN#nY+htkb}Y0M=MJqNxPEKhcKa{Ow#dBjWU<}OT;->j%3 zRSL6)O(M43na>nHVGZw;sRA3bly;YVmvpo4CA8g{Cf$r9WZWA0!Z;}S3Jly+d26qx zn`t1Gd!qb2e##@(^&XOtzD%!tqtUpF#1i^?`<^Pz%tHSi(#&FJIL+)ieqO#rfdy2k zoB!9PnPeONA6#qBj@pRa0TR0C%~6!VjO88Ic7M+h>LF5Zoc+Mk|=r}c7r8S_Q@i;FpU86*gR_oGa=Tub69fMp>lJX<`( zU!GX@cqkr9EMxO0s3rOR#y=N40&B^Kd^N9J1`9MIXN)LCF|H0SqY{Ha*OalyxaGK? z%J_Zzyt3})z|arnm8mH}H_muq!8qV3VvCB*%Olzr%HTf=rb~xvj`?L`Yd65Gr2ql zEFnOlky4z34`M}dRV;X}nIL^en&j}18T8~Mas69onRQd1>yGfU%#u68$92;!1dzeA z2fZ*i-lf_EN`f&!cd&}Z0J%v$S(XH2=@*zsJqG*Z9Dn;n zv&UTNLod-xe-#$O90_RqUXx@l_ma%8B~=l~LMt^)Vkcbzqx4GSEY0GOwETBSGK-rD z!%1djB;d#&BLq9d)r^h^XnA?&Ij`oK`xHeI=p=XvG{xagD&v|NZ^js6tfZbW!9pp? z@Y^Subq~1fmU>BML=6h3Yanr?l_kJiphzzg_)%9me2k7=Q2SH9x>h>|&I}BboCf6jydlf51HrBUHDx2RNJx?kFF?A;kv+HT! zFUTr`O&&f@KI$>Ia*>aj_80~3>w1Fs(xZF_*=G-Ar`_JC5YkOB-!`j^iL^>OTraDf zBjcL0zH+hyujZ4dyqr&VKL@UI_u(TJ9o>V-4KGQ%%a~_I)@K8*56}BC zVD(ofl?hRy2LUCO9VLswh{B2eyuO)Oe&!Z@BJ8M)q5G*%7}6!X%nhkRjn*&DEvKw* zT6sCQoVS3b9ho7_DBSoWy_~SV0wd~vS*4i&JN*R7yOp|xM}fa*9=-AV+&cY7++O@g z+)({<^Eij!FROmL91RfD`+mCxcTNBxd`(CyF5DPzlzwMS}5s$hzr-0`XdSkN9h7i@Je$Rj?z$3R4=4*VM*>k%mazX`IAo zOE}!p5NW&+x)zCC3&nyB!IoeH>@`?Hr^P+*wm9K}V1%FTIuU=cHtvMza?IZtkFeQc zq%js8q^V#q;?xub*`O}sMtt!`CsxoHX$aRlaXUIX4*iBmBpz&xg+lRA$O#sP;*pwo zP@r%@FdjS{3^j!t!>1$cWEf_rv4&`4tToyaX=FPuHsXqgqpk4J7>$O*c64mGr6u0l z6l#e##v0?|zCJn-DsPR%!mZScgrfENaCu8ZJQfTE8(Y|*(G8czBCVlTXt%KOm(}XT zri3C84Tob*kx+fOC0rkectc|dCIvR$=wKhi`f!Y`5kpOpCZ52+W`vPuc0+FoM?!47 z7=lzwbJU6W*d@HhZXOp2hvB{@7NQ2E!|X~H8*H9Jaklu2#t*Mk3%= z*lK|y)M9pI2EX7A$0E(q*47Z^^{pWSEuQ{xArkM9JN-tmCRiVBim?G%n8zW&6Hji4 zG)JfvjQgLbZV$JHRxPx8`a%G^@NOR0-E?0G)_P|AUmTWHdC^p5KLQdFfUO}ly zjQU~(8PG+@aV$zuW%o6HR8B8L{D?l%(V-j4Yna9;g6W8uf-`DTTXfWMWz%JiY*>O)XSm|TN+m(6 zaovejz=j%ShdXqI|HvH4jZ-=a5y*%qqz9)|6TeQR6d~yJg`i=rJQ!gI5sex}oakbG z(tZBK8g#q{`4SUh2~4eU#c2+pYq5O9Pg8>to;_w>C8{ZwBZJYx7(*3{j8LE9%+#cq z+g!n+*MP@YBrNe1Hn+6K+Jcf;VO1o;rv5zsD-uwV!N?dx1iF$xr{IIxDY;d6{F=cC zYnM|7O}ykI7DvT2ZK~2j%omB-%`P0rXs*C$7|;6R*rxn|STOQJObkUNz-m_|ZYEa+ z8<_TLL4uOt&5*~K)&&wYh5hj4#0n*O7|_=iCo++FtM3w-1_4fuXf({Gb$w%mrAwOZ z8iF$Qjtcr0LB!4h4CSMvbzTF+{)AB}7x@@#q{o~g&xor(=$?_d6Ja!{!yhbZgvO`~ zrXR5ut(M5fLCQV}a}0G+I!FyPN3ww!1zp5y!RZJoiz%&Mz`2vZlqi15RtSW*<G-&|hp{TxuL$PRM3p}%2OVy$2 zG>=iQ#5z)>T$DANfe06wwLM1TZq%=4q9dfD%}g9I!$6Ip`)0L-5`XbXu+j`>u;xOv zg~9Yi7(zEv07Dw9X)NZ$e`YMHt<|(edhJ9CLgD%l#iqlUnFtcR291775Nyn8%9UXb zu&`Ptnx|>eVC4}1BE-Z%pytI+#+WWQTCR~mHDefbBRV%YF5b{2D^5ew5$PffP<9FD zSRXm13C5q4EsXAKJlPbwp`pG>-!u|V*p18z$zDQ&k<@fYz_=F?xdb{BX`TTs30c*t zL_w@G-&p$56xIY^a|<(vZyFAdy^i9@1=+=Li_@%?E)7btfKo7 z_-KvdP(>O;IHW;#u?ff72PlFM74f_~Ln9(TsFhhhhlz=wi7Ok(127m z(pvAd4n_)^*mtHCI}26$Lkw)Ft)oM?KNrDQDA-WXn8#V8Lp*~s#QGNUL)U2-CAUtj z;0VU?H|=;?O(Y%)24k_t#$diN5R9D1pPYbqiYpll260Yd`WjvXE@g4NzNO`SOE~UC z1NAMDcu(V4wo7g}f4)UzITMSw#j!;^kRsR-jMRpL7x24-$qRm3bAm2@as}k@zTx7tpn}kV1<^tk z>cHU=lz=2dG#F2)y{f^u3)HYWfU6w?LCZi81j99dM-|@&0WVgS6Zgd{?W&>IBHx9S=ALot9m)BT@Xrw z0*QdMh|}ih)2;>4p=(Y@!4T*KP69aXT5x1dFfQGwsj=H|d4f*?q`pX7Ht5z2f?2Id zg@C4Xx(Zc{2zNR)g&fq@#s@;uHx{_Inr9y39I$N54HnB42LlG3#&HI5f-u2nnr>i5 z&}K^>v}qf(>4wW%8iFydF&AQXqnR5KKd96R54IFgvGIa1Xdrf&j)aPWu|}2wP_eHu z=r)#uQzJDsk=kIR6DebD;i`eSHdr(ObOhN3nC`)Rs6^9GFcejHU~*KvG2F`15N6+O z;ZP?$GRpE_KeR$MHG)B-t&NRQn^j{Bq{596U5q!>hcMA`CzcPF@QkU323A&T7Z^0k z#E!b5QZ0%s92B&}7^wJUfG0+T#VAsb9S{&@xfQC+15pE!cvO&=i_v-~?9>+nP7z3u zF?NB0EN3zW7@2TWb5of8x`A()wXjxt51n$tiB87Ua=@}Kvw@{*;@M?ko~4Jybwfps zU`=qM6AlRd*)0K?EGIG{#3o%4KzL)6z(A}OW73LuTLJlSBo0zz<21|wi++R$Ab?*1 z(rl?scZ?fITcC3ma?D{A^P_PV+eLUUp%$*-9k|iyFd=i|c|DPEyj8{$A3&~4v%xyC zv9jvIi}Ls6d{H`&c^u!2Pk>=CX%;f=+{!liK>gvDiK@mTEWNI5HVF1%(iDIDUwI(PxbnP}0Wnoy-J^2e}sCPf=urgMa0QDcln(0(#{vvX z)Dw|Kw8mcush<)BW5apcp)eidmB(!nb`VEslpQM*JF3Rlk>ZhJNJ|XoqXBt5IH$ zDRoh7ns1zl;;I5b%n@>eJttD``IM$i#EFc=8AI#5+A43*9a9$sV@EAcxUm8wV0mlE z0*C;^Bdw|+F%r)uM3T`_rfF%XlpzM#b)pkIE>RJ*(HkcmSf->OmYnD_KyDFzrS0aY zLYk)cJ|SA4IQ2y%f@7nZv+{J2fP^3k`Dulinmi<$g@TAjqBi5~va+zcS2@IHt7^k7 zcC5&7At2+2eLGr0XvUL?KvO`RInff;M<&D&0Mp3dHjNl)tRcqh^`M;Th6K;Ja?XvE z(Pcy{dB%Jiwt0AMhAR=&MKcvNd0w1FhY&83p#RKC)=l;!i^sj-jA$F&4Wb97N~UNF z!l#=wgS#GKQD_lR;tX?8svjeifVvFxhh~=V*{oa_!)+pH1+5+ql!;wa_^s!(`3~(n2nV~f-Admy_ucaO)z~Mr!L;;%O_4Uy+ z>I=L}GLnZ%Nkw=QkC;U*3nB`SvVjmT5D8*yWjrys6*wyq+Jr64_(%YfzM7UayuLga zgZMZvL6=!zCe~gm!60)3xnUoiFb^mp@~_&8iOLG`UCsfB6eAkaKn01NOPm43qzT@< zB!)Af4$?S(dI*TtFS#M~i;yq?SrU*f+^!<{KOuHNmUbEY&lrVGY?v;g3^FCS2oN+L z2px_P6>N>;Ps6!MDKu)ho+EtX4`HSiZD^dEXW@BDS0F^T0Njo{2k;I7+_mO~!M9Fp zk(L1DXV%cz3|J*r0N0F(;TjI*PJ-oOXq>_U;g)(iPp}PJO)(lOKy$Pr7AO=$OoNH7 z@TJ`{Qe8ya@s?m)RR=zs6P(^Cc?<)8o}JVjYd|0fC4`&kH2WJO4cG&`sR`l6rg{P= zc=jQ=;DG=7P*Y6)?u2lw1gXkYZDRda1fa=@jK`5|P^<&IA6KTuxWdy~al zmRxWQH{hMbiU|q`VpM@*h;xuiVjYhc2rEPZ^1KR6U+hMp5>X8FhNj|nBU!Py6&z1{ z>SX-z(U$sXG>&^6R-qyy1LV14Pa6XY7dWKPMuh8Wk=zpQyJh`1mbyfPr}^k;p&Wp=Qci$ zJE5^p8}Gx6)Cz6}37TRKeSAqQt~V6i5z7B}mF>ltzhAieC0q?(l7sIWX9Mx~t6y0- z8{Ttg!&j7BSO0HZJQCObvUq*O<8bw@F>N{d>vogs4o(EwcF)w}Xn0gqTMp4Xe^sK| zryF;4iCoV%o_U;*_MMNTXAQpFQ5(Q zZMZlJB%XcdUU|z*Ui^VQ9+Z({~ld zmQeq9-wR`-mN6z#<6_^U9MEfz3S&PbO1KGQcRCX2H=b!?-J-8iLU$3^@59eP8Wf{z zBhqyHT?Mh5Rq6MF*eFWTr^tngt(xNZ#nQv<0L@DtVV0!EYDDe84Ft z9clvC(zZ5m4G00TNlN)6L&hjH0F3YVBiA2p5=b+ENa7;HFtEhHrB_&R;uPWqGJ8fE zIiSImhAIA0S|ELpi2!<0y!1kTYiQ@8khL`GiFwFc5G?}9P#FAE{Vz#HGJ;Z6(+H`$ zc~PFg3yKtw+LTQVGD&CEh>b#=O@B%pMnV;am=bLR`ODAm9I|ej)rPDE3uAi85b;SM z_wzypJds{Ya}YW*XwOLNO^N$$1Bhw;6KAhaws6#%8AOH$|=geOz~t2T7XIYZIT1WIH#~AA#{rzl>*^ ze(*&8f31);8%psMHt}?NDwg#*vPox_rCDORUXb#{FCe4$EaO8v_#+YPGpk3eLTaM} z@1q|K3WFnm1nQqMHq8X^jS3oj_?=_b(xiK_YK079uA;V#?~wVC;+yYOD3jQLV|k2` zp+C)(Ncc`#A+R5>1iuJ5ww+)&=ub0LbZto|@+U<%4a3TYMnsa(d48gAZwgmS!=A?U zl#Y>fkpMNG zVjjwH%$ju!WD&nnGa3yS6Q-B%O~Ir&hah;Y;IuUCnKn4x)+*fEI0B?MRD!dP0X&;J z#u1SuZc1U#ivxn7(h~_P>#MEjL1dMOq%#=m$_s; z1bU2s2O~p#7uyfRop{5buMt%V0?fUpx%$5+rO~9v3`oma$WPx7NcUMF*0+d3v)pUY zrJeTz(jRNk&VvDI76f*5;vW_f8rIfHP^52T#uAhY7+ImS$^pp1QZ*HWZBo3Eq941(I!8NZfP!2GMlFV}#yVCkaTxxMZ-oex)Fuue1;UgsW( zoASA1Wz1$}NpNy|wzR&%FY6>=ue(bg&Ndr2Zwg(ZEi;8G<^4&Te{zG5C+wsri5#Ct z^)uxoE3+AeZLoPkxiK44Eq~TdX4mC9g6p(^hxl$bW+&_GNAlZ^+2P&w7uMugMOi(W z9VwLH-d+FB?>w2^SXsF-yD6oeFa*c)@sORN)OYjb=4?#d=xD}?do*d|boTy3WtB2k zZq9D3u3VQKP0`AlH0#{DBztDe$gwwKT{)T2ktdFB@by>D($EBk7;zK~n-LT<%w(WEz2ANycEz29@`pkh2*D@=?aR6#P%6 zLF7CgKXZfrGFL17qKNZB{x3~D{(Go>&`v-R1NGk47ACf^e)>+36R;mZ2wXp?eyYxeZG8SSQ{ zcaP6)C@XTT;Zsb*@iBy^Kp^r^&O%sG4)4s)-=uJ%^QIA;iufJS(#q_*e4QONWUwO5 z7Fytsa`fcv_=wS=Pq!FJ$Yw*TW~7f#sr2b}8CYI3Wt9W()@962$MWlK<@W5t^_8aQ zO!;trm^5?G4Zm#fv9yP^4p3vqYe>lHyy_pwj+cAgFGZ#|) zi}aT!-OoqCzo#rWQ=xoYGmK5EgdWKBRu;OY+?qXqT^Orr#D?U&tvpNPZ<42(1={`r z*i(2%UUXfGyeZT9BrRMYOSfO(6GfcmBMrxET>l&`X=dRW8N+65l@$(IeD3-oY41%O zGtf+oh%(rj=M1dmATMi|Hg2*p?g;YW5lv}EROHza!z5+W;x#%=wCDJE zz0tWY+I75gw^ggG^|`QmbTYe%VihHfRO9{b@%bZ2a19l`c260*w~wDZR940}XD8zo zv<|7b$-}*?pq)hpADtdIwH#l+t9-ycK9&NGkt8ck@lYGZff;${Qz*|C}#z|DevbHk?dC#8WbHZN*papI(UjR$+!&}(Lx2wR3IAr z2K7OD>o!qHD?1C|DQ; z3DRn6B(?Iae1vNe90;I0>(A4-dpf%*Yy|-fb2Wm9#ElG^J+~_9q|_s}NdgZpxT4Sn z_^?0n#T6c}!Fng675LN?EkUyn+*7iRB)SQh;lpkIDCFfx6Pa>mRN6pJ=3(`OiGZuW zas~w&rH+I`fFses0wimMP$Rk-a*p&lYDJ#>eNI{+NmfxTBBU?eoVks(es+cy8jBo5 zZZJ#@dT0u!nIeoE-76{(fFNnm<=?(8ADW@&xePK@tWd_yHyU6ddI$snWMjBb$R==Q z{63j&k(rH_r+|&q_49%pkW5btMrqSC%ij&Q6YbA{(MYl}$iOGEqHGS)9u!PxptRZg z`PH`cb0nK7FWy(yBED}T{928_aclNIh)3EfdWBvcLGs7Tg6p8ol{?B)Kr_+EC#x%f zNa_L%ECU9}e_rOE+RjTWN&fFjn{LQH+KrQ&O>y-7P^MR!I%aZR2#MhUB2d^l3Y(n? z=|*=S39@KN8I=tdV4ek?F#69O%X66!Q5{Dun^EgsCR#bZ!?8?j(ucbZoVpJZDB$j~ z=oQ$6dsq&o?qgAi0Q2vnRg6F6Efm5ZsgF-Bjsk{~_!#xu6bp0GRMG6u-IOFW3rcS^ z5m(mGG)b?l-kQB|L`Bd8Aei1UNf0J~8*;n}o?v=cp%_3zi`k)40kBN!hNKphxkAZn zx1NpTBJ+kk)zBnA8-zToEuO*C9gr7QfxL_d!pk;yoL;v}Ug zO8ZPn=P$;QoESC;vFT!7fG-!ix9|Qvi6xN1($om39u90_A z$;qk|dk%rJO!hNyAYBCziYz`aFcWgQ!0ZS)DbMpA>Zf@pEWv6-Ep{FAC{&FcKi{Ch zM)C*<6fC*40>xguiAW%oi2vD(P{DN?=eA_+GG=u1!gWl_2Kugv0kE`&usjcCH|hZ% z`VIK{oU*e1tIE06^|dc4zk~I;zV?L$B>4tH5?JkVTmyHHm#zaS1c=NIZ=qEHEdnQ= zATxx0y!PAl;jyj!Id)hYBauYmH$VVbyU{2hDeG}fb{M`@rj0njK>yI{Itm{%9%<7k zZCItD_}R&CHRZk=n;U4}*kg_U14O;hs@F!|Hgfc=NRfi?WHpPh6p;tx@)AAT2v7{v z_ubQhjhZA~Tjbjty&@XXSyEP`;#y%zN%wSBuS>wYqOrQAv@EplH`tI&#SVb&BATfMO}~o}Koye8J!P!+7tu6pw=z zeuRG}&f+fKyl<6T1mDgl**^aCZW8v)kZTuk|9?Ek$OjF+FaFknozQc2Nih=Xwa7~s8@sfOR$la7Y z5d+_V%s9xV())$o7sMs9NdT4G+jQ+r5E#VwOz!Jq|@RwlILet+)wmR zX?@${H+bi0Op<+x*Sxjhm!|mnNJ-9lk?mYavGPP3@g?PRXXVXDLVo!wO>F0fb5!~M zV3|_4)Hg4GrYuR&M2h1?&WDPVB0=^K6(>{vU~w{$^X5wzn&R5om=`zinG`3jX$MaR zP6kq5_vdatux;yPK->A1G}5ECta*C*{(CGkZ0l>M?f&QawA~`ryq0F{n!eBb-=?3} zBAvZoi==7ONiA*L+L?Nge%pbY=aP3B{dpT@NZLHo7b&A9j5#%b?q11lKiZsaJEf$y zJ?%(HO_F=wlD1^w!@CX1&C8cwd=3)?r3&Bt3h$qteU-oeWOj`kkQc9S{1~)igB$N> zUxq4V{zPty9DM_sAagA9E;3c9Ufy9ue#INctCg^GN^et333JMj5`_j@`PoY8JI%B9 zdCN;}sX{{!%I!Hn2pvl5w%q$q=X5@o_AQ5el{QI>CC8jcza+Vvmq>4+{cB>X2Vs z$=B9(UqMJc@~h0qgL1WPNn6LMA~Pg2BR57#-O`SBcG~aq>|9eqTi5;E^VIT=-=XQP zpnx~mCFQiQukzm3HK)8*Ezf_a!T0K#*ZvjdymS+aoTr-CCvBBfQsuB?~v^+<$ZQ7PwT1tF#+IicA?*yf`_01*Kysmja?$^<_;XWLl=M&18I_Bf_ zV14(WzZrMV({tM#dFQg{ZZjS-cJull{5&5INiT>}ZpD;w`7C27@A7+_Pq?rB-r6>; zyq0I}_}x-|_klcZ9c>y%JbKik9<>|+_5-a zx;tAs=6C?*A5y}x^5y0nkaf0PT&L8-#=FU1R-hccF>7{5uY8#U zM#fD|YzJ%>@vYE0cHAwq(T=@w${{I_ct6WQCF}q^cjK7)n{CX;($+OnPs*7Wvgt$`$PS!ye50bVi~>U>8>#PQ zU6!oW%~-KHmd)FY20IRy*~xdrg3)FO>EbGn*>^`1;scsld>&Xrij+?@U|R- z!e(claL$bUA}6vm31rQl>y`oXu0r03KTru_nE8?cF+q{rlx zIpLih@DCMpHr(W;ljl~X;mSIFlo7t8T#y!0TQkn`n;a<9eElLTg_I38l1f6_(L7|! zXPZyHUL+~s=*p9F4vB1qYKECj+3Op0pv`|a*3?fz*$z)#H}1&J;&z32<#Yx=bMCbdlV&WX>mN^Y?jLam*nC>_1*7 z&rL>8W`cG!6LUv-M!xb*`oJ_SA3>6|7>Z!hLB-PkrU>~!J7gXhRt5HB-y#)Wzs;!_ z?byg60n0L!r)>U}ad?nx{zzF~bq^6qlq-d7++lTdQn-(!p~Dd#yYV#W|j_b)Jq4E%itVcR_O zAg#W~A#z9r<3;jz*g3>Pe!aj!7x&7c5^0Kz8uPS4Tb5GDu17Q(=|!&2*eKx#1NyJ&Q!8Ax&eRmaOdTmcs@fC`f2$NkJJj z!Vcx3NWNxz$S1;9#z7{H69HO|5vG#e(IXa#IhD0K$9MK^oFDYmN+aTfEH=2WwARiHq z5Ae&@4z+H-|lzBz3I;*s3V`5sHk_zjUkqCL^SaJ7YPeL=^)X!oi}T$$`)hH&+v0q;ujl!0?-W~I{I(c@uiFT`(@LbpZ{NDB$QE7wMt2)xq>EO_$KJh>Q`#keeJ;7=zFEcER=X@tdZU(XR($do^w zGG#HZi+Nqpz@upZef!sypI81n<-g^wzyF*&jQ?xp?dmcYT)`%Pj#w}*d7eJm;NG3)@*P*Z{H2MI9lJhLCsvucRFVO*Y`Cg-ehaSOzw}8+v4Q9K9Wnpa=kMxWC8mz z`+wwSwzK-BX;X6$+3iYb;qaiEC;#R3c_GtZi+IU_1%_X+npvkq2 z(%|D8)H-G{{=9O2{KIxoxyu=9kn8Nma`PUSc%3_v8={t1H>AXiP^V1oZRL4xDwdlQ z*JPp(XKZ77g1eE9xvP#X4o|m~FxzPIKD#P62(ELh+&Z^0aWnEdcgwLu;bY8(%UE%p zpxgtw!5!kW@eOtjad8}9Xa=_~kB_;(S*pH3)lIuT-;k#4QsD+o?o*O$A!S9(5*zCfS4F-f=3d_s|Tim|$n46-x z4f^={2|F`nM7T?tohY+0jk(FDL+LT}f8+DYzgC`Db?Km7Yqx%0uKr|_mriDP*Pm#n zMp=QkWV-JtA0-W}D4R=~I}jm8q2Uv`_=-PGw$o;(lw^NaQbMY->5d6mKS%Grm+6xR zF{$g#>>VE~LWNQ$E6E@Wxzp2?T^MqKqNL`oUul`L_Ic%t%G2)kmSPxSHmK2A+D3uR z_2z9wLeOjl`A9Pb@<(V!CREC627^D)MU$)j%N398NR#WUNJ}r=*@v65t~Zo@UAW`q z2y#4Gk%Zj-`T@vkoy7b(yA)Gq{6rcE=N`g~(ELsA@+K1(b{?+FU6;?T2>~C;t%gh} zLhoU|CJjHzJT?2j;A=QdI@x4?mICR5j2U@p|{vz05tw98j(DchvzTgDeF|~#omuB%MMV@1a7laH!qLt6zM9_(vN6)g=5S_c^ zo^4Wm0%{c2fbh;8v#)x#v`PlqV=S9BMfV6;5XCQ>8kapB~ zydf9;yss5Zk_7q08zSIBixJ)s=?PLm2=gnHBdV`eLQQ2)3#Q>$aLyyp0YlSVX3RiI z3K2F<>K1A|&ETJ0=Ru>w+05I5gEORX9~|)bHadrEctx!8T4fBHR3DJ6&GnmdMK&@_ z?$nWEhJ%vgbz8x+D` zLuj2%pi!cTK_R1!lS^(y-HE+az`=kr?0>t2JY_q3`#t1)ik}o2Q<*}4*?Cz zZnfXj=us|Hmz&i|!L8hlsG+PovuAHU2tL?R%5Xt6WWB4L7dWwY@gDH_C?p{InxiD> zYokyfz#VAW54ggT%_jX7NecHg#c|KIjL`{WbVKk46d-SnvVZoT?iYH7xNkE3%_Jac zFjbmF&orYeY8uiMQN9l;#Dojwy#BQUMvD*<1a7h#*CeJwNvvh<0ggez|y8NK*bt9=69H!XgwSgtX-1CwL0l zlH|NTtNf1gG`a|jQp_O~I!H&PylC>-`g3Qh*d23^@fd3VGjOB`0Wm*C;@sH4;jl_- z;b2j=%i;$>*)?T-aE>kR8T^uG+*I1=T~~xIW}c|?hTYM@&(5`|a4pgro29ko>IGq~d-VD#3H<74lT_nHgi8+bR zjxjZF$kb<*Vq2pFZ{E`YcU238hGz$U?Km$h2-Bq{)K;hZSh)+!GZ?fGa6XPzi%P= z*ZYOuwZ&^O1`8T^&u9So_vGT=Vgwc=@U1!m*JkqXe{TLR-WTJrpoaxNEabpK4lLxr zLJlnCz(NizEabpK4*Y4A19-5WSDxebqVi{y4=CTRe3*aV#lJtR{6%h;dsX>a z_UZjM%HL4_rt&k&k@B~=ZSLpUhxlLe+s`O}fgEr7w{+v|->={MG=DOG|MjK$Z}&gV zf0Ot7zqa4z-yclVet!6uzenC*;`R5JetGF1EdA=zKRo;Q)_gaXe(kJv50`L1<)far z&mP_8dCp%wEBE1ENX|!<*yj4Rd%yi!)2_Fs{Pm^3Lka&2um6#L{e51)c=m5z?}P92 z{PXvDEf1z?KR=ve{`;eQ_)E0%&FSC#eO|(Y?`^Jjyzi%PKmBj?=vR3C1Ntp9_rEh^ z@|x$Lr=P#ipTE=lyGbkMyt!8oQ^vb3?U5~eh)Z_3sd38dkMr+7w|!7~f5W-YEdBW5 ztDnBczvE9Yy*^Ps^~%p(zzhAt3 z-n??{hn~2|lgl6b(DR4ST;t#W`pgC82VQ&qhn_euk3ak=R_$I>eo;Ap|JeuHXa7j~ z{On@>K-%}upDVL3{{9oc{O*4`{r#D8m)Gp=bGJXwl+(9Qa_9HiQuF4Yf3Cfv@Q;*V zf9T4>U!`yVh~;&+srAmA^Zcu3t@UcfmPF-f-r%=z0S#q`;d^j-;w^#aqd<8KhLK73%~rZbUA5n8I#Q=kl{D(w#8p-+V`*X2gT(3 z|L|-&?zQfZbpfLy)5>(VSIIT^rSk1DuV57U@sOOBMm1AFp?{()8JBL-t_SXzW3Sb_ zxsy>S?JW&s4rQC;ji%S}n6=B%7w6J9>5qaHQM z=3`yjsH{J#C3F6f?eTxyOB|a57(c8b17w>mb>Y)IpwD^M>W+D}*u z59@!;YaJgon}5WFyvO%E-e=Cox#sb$EI^ai-^+U+g(n~H+Q&z><-NZLQkd}ZuYnYy z`Y;Fne0vAvA1XJ_HaXwB7E-RDdN}PPKi$NdepMSCT+8oXp>fLfdi@Esb2? zuG4ZqD?>l+h3>@M4AgQjEBDgO^wMfv*J)86?9_YHq6p$7-KneEiBFUNAPS;18mGzR zN|IKEo<)%x1W__9;%V&rc^bP#?&hOtnuKAJdc6bnN~s5)KXoF4%{+x3NH)X z?L4uZEbyYxjZELuGvBlQNgB{L(@)}P5F2ihCU#JnQ4xBETRC}TI)0w$X`1*!p+>PE zSXor=C50bWYL;FJt;(qms%pO~$W+voGCa+8_lNPQimNgWl1W(%{j8u*S(!(ZET3K} z>)|LGC5hvBUXUl@B#!+!4$LTW(mEVQVU*>8I=E8nf#VL1z_Cm^Vrgz3TX|3?et%ec zK^b^S8iWHkvJ%(zf>9j!&d~5aS|pJgn?ci)(u{M@8u*i_3RKO>V(Ya2Zbp)hS;khZ znT2Ne%%mG9d!ChB@m>{-!n8Gp4%)e_3(M%$`G%KzmgfzkQ5D5$v|o7jApP;q*vYG& z(HZU(MU_W>8s|IJu*&0cJ(`TmX_f|M6;^w`lNV-{?OfX%)}!HGoTiZ-B~_ATWl`=7 zU&-8PGIWxIG^n$P5wNSkbq?}ZW6h6()Q>#NiV|1tIhAINeJkul*SsLebmqazy`IXi zr5OgX?^y02i2T?y&A5o&tf(!wjQk*(n&Zkd)Ot9u(>Mxa)tgjKl*ap6FjdQ+()N-O zG-L1VSM{(;qq@v@>Vt7r#8sB%MX^`qUN%bV{UE6_tw^uFvNs-0hP%bE92R9>MoE@L z*|fTv*=|{A-qbboJgVZvVP2g0Antq8kNXt-qViLPcA9>ho@QBG@A|N3mO;O%oqM{MUSjM5>-8$M z;msjq;FZI4$BV->G$x4}Cw}Q$R=Gd%lBC#+k}G=rsxisxE2iJe14nb>@}apjEdtBWZ1qO`J2OAF&5E})pq36pvh6&X$TDn=+_Vyi63r+yd&d0b8nue>(7 z<^(|;*4wI~!5wy-A+fTwj?Fw#y*grGCXTrq1(s)ody|8)Y6PB0807k>)MB-tMu^kE z)US*>w(1*R?L~>_>t>Sqi0i`XBfIO+%X}xkYFLH3l@{J4%?jV0gnfR z-6$@Qn*MMY1b$q3=BT#n@RCm(hp*{ouJ@~9u#*;59PPxqkp*c!@UkRvHM$LbA&K&8 z>}!sh6k%Kr$5vvPeqK)=n#(#b4Lx#`(hjXn%a6@TWM_`$g1X%cOZ;7NzAl3*Astqg<3}>Lj^tq)u3l(>#mdxx%$YA4Wx`BXs;Q4=gL! z!@M7;rsruTI>SejCME+k3{5Sm0;s5K+p#~+oH*A`9;LQz4E&%>cgrA&HJc8mDMVSjZh#mGE-}61No9?$_6JEh9OaYg zB;8AWf9QIlosZLDVnC?QqzH2_iet#dLy9HP#U#rjXMC{VPG#eMe7_Q%hC{;%j9?QX zA9#)vy2gRuw;?PMW(d*~}D9YWitjEcfVQP9mk?z*9QQAqh zSCl2{d$rluvM`+Hs0$xW?;D2g z2W|ufN3Q02`M^!B%8kNNVC_0_Zlohmbw(8g7gdP1B=@V>GZ?2Nc9KCD#u2I&3cDIx z(FlNsPA^g3MUf0MKPl?nQR1h?L27A*7gk9=%E}n5cV$w!!B0eW;tfhS1Q|?5yY>Fw z4q1vJQZDz35|Xw9!`Ff;Y%K zmOzkYI^NrPh%I%^vinY^THBuHpk(zt^j@`5oiT&yYgL|?X&eR#!&HFAOw{V8zc1vO zC01EX#)GSMJ>Ge(*a3@-0&4P#>9j7=T?0@V+ioz7^PpeXMpUJCQbX-=h={aOJBtm! zOgv^e$YEV?1n-5+hMQzS0NYCqV5|?^37}$HkfGUvA`f$D&b1sXNuzwHgik!cQ0#+` zELbK)r^zMlIj89?{$P=t(@|N*=*H0qNyae5aeCkn{3-BQraF(S;ovGiPOpNr zbAK4QWfhGPpObP=wbC>Lkx%k6REHzOj|0umjVKNfsyTuvbLd=D0(3_qlwZ4+Ah$&5 zBP@M75|_xxA_NjljsbDYHY*b6h*k;$p9MlQhktL(h!kzEuF=3p+qTIkl_3 zk~@Lx`OJc~H!6ooF)a44ULEbWbGh2WSku;Aw6GQ1mW2#)tkSio4iCa43QvQM4;o{B z>O9g#-dlmGTE(sldsTsj*c}IZaeR=a*>2@)@g74RrMsgNUSJwB4{R1?m951gR8Tqa zRwQ7}jN<$t4LhS@Mqd$D1|lG}41w}l6-{7CB%G@5RRh2872d#fEwZSeF2TK5Qe8y_ zXvlwmKV^(_&rJf52QsmA3O@xWhrU<)&K{adge<5i4MwGtO``F1;znhR&EnOJ7A(O>$oir_4iKB3_eX8rpsy_zhyC34hpFw^=+(UUDXazm(v{3mgV47;C#5GLYB>r^ zK)4@k&`1SZp=v+OOnbjfQ`A%%f&#%75#)FE%6|DU^s#*dF&;P`aw4)J(qLeEj!7X2 z76r&Uw^d}0?-^Uc$oDb?T;xp49aucRmc-SFrUpeP%Y^BH71KHcRs#FuJVpi8(ZupA zw4CSHK5E#BJ>Ov>vT1gZ_+}oIg~J?l{lrBf48py@L3dSA;tUhd$*+aIc#s#{PSmqK zBU2A^$DHi@pz%1e2K~a!5vB3eML{9OM!*6mVwPgdgOOn76dnkY#P>?mtrE;lCyiq( znU+~K3=fLf8uNwL& zSJ5FZ0(H4{kR*x!nyw7=9Ii9(^-Q$fpTbW|S?|B}|vaE@rtsK;;@t zk~?&)P;fYX2V7NJgrPRnoX~Oo>S|f+PRfI8p`M`?;pLyIlQQ*!WSCexSy1lnPQAD& zld>31M+I;)&0agmcVj1qqs2sbVFAOobptte;QCn{cvJupL67>8&Aj4U0l~*< zJQU#L51k@6;+-I`G4mhh%S~%rw>@j4$Ra&)%|T{s`nIl_zMU6F7;iboW>5}vFWgp9 z2O^7ha@Y08MUA0ngK$ltdu*4<-j&H%93(Lobw0*>0uU%)0p=H4zK3Owzr%3@*K`8g zwd~QS7aix|;jt~#cIa3ia2rm?VUb%P zv2a>~zOyLE)glV;z(v7s8Wj*ont|7>v^I-mknUyUYMhtThp^8}+GQ(@MwS{~%Y7~M zGtF{0`|iLGy?i@#``RFkd=ux2W(Rsyg;|mzpll44KTWaI$Do568{sTn(<(9E};%1Vdb z-oQ0fb)ZL%8Es(@h{AR}&12T0td}FjfqPiPnY(WfnCdLr^Id-!Mh=(+v%?DLe;Swl zBDH+f9MU(P&^Avz1LXmRW(f?&aRW8&?vE$gC`d-hA^w5DaB%yD{9)2yFyzi=clqS&?9GF8ARmqSf9*Pj`S8fA-km4c6W;w}*XMFkn zt&Dw1>vr>0uhc77F##M8MQnA`d=v2z>$rpvWS>e6J1#Kq!3uei6sP%Ljoi!|20EG& zFUq9yvYpXhHhF!&$e7S#e}BZFV4LIi!^4o&*|5m*v|u6FhJ|?@;vvWw0-%ta6p5il zvFrDki*90AX=!`l3h*r*9@s7dU&R5`d8M#2)KsAAK?H-Q1ArLAA#0QBH7pKt+$qqb<;)wt;#b{C;jA>yOCN9{AhxwH6LAFy2!}66W z7_BO@@lJ*9fnN)UT|LILkdNweh;i!`DONV{$U$6r&?BURP;zl!n-Z!%NLeE_JwJ+Qs?B9C^R(= zs8N)pI!G2aJt#r4_>8lM`0~fPKenCt-C*#_$mnLa+V_I)_U4wmy`A}%iL28qCbp&f z*du|E9u`kgAxP>lz@R<1=gG-#tg&7_0Fep_5Fo@)zb`3ifDH7yud-`MdKs_=4Shu z2el_i66^sTe>hMp8fK`q>R^cc@M7CDeJ9i>aaT_){6Uwjd{2Dsz5!H8lO!~fPB@C) zz;{D>vNcKdZk|AtmKnm}zE+f>yMu{d?4T(ygp#72%b?{;>$2);x^0UH=s5k(mTq(h zTiR%IQ`b|^F=9K@@dz16-@wA7;<^Tdfypr)Ru$T@$VX#boWq^HDZbZq^g1s0A)vOf z;{!ZpjG$kgMlU8A@mxLJcMXDbM~RdtagmTLyq7>G9#CeN#6$P+rS*uH*SJ~ zX&PqQgG0k!$1!`Zql4h%&_=m9?!=EXE5*Z^6nb1j?T!t~>Ef_f4P;73-?I!GHaWxQj$Ha6@*&+>I^bE9iSAdLWZh9}uJ`eEiWh;F7~B_>%tq3fBER@FGl z;|VzB>dv^D)YqoW>==TM^I?h$4XQK4NcT$QQDzg1vILlTh8-Sg1F#P?ZDDSfxgX_@ z0pa?(X4n>REbR7o_JS>S5PNu9nZ;e)(Uz5pf7Z%!9MRZ!X+N-26lQ7FmtSlS^)wJ5j zr8laRiWx=SBeO$nWNe-?Mb_DF)-%e`M2H09@l3I(O2-GS<|voQaIp7r!-S{TPcSwM}(f9k_jU;B*GPR5U!!^CWXE!yiKZ zSjY}xtAe?z$0MvFBq)6lew=?K!m*K8fIN)! zxXw^P;O{E0V<79!Y55ePloWhF^5fIu$B4Zk$ALI8+AYAQ&@DzZlTa7qmM`O0#(wgX_`LA_IX)Vz)6+NqTF>nC zI_74k>%GK^RXq;T#HIvG2;gR^@ybsD?nW6RbTZ6FX_g+m8t3C;52aWP@r2gn6o-5e zIg^}jdRQR3BhbV02rqQ2SMV#-kRV#FdexP?KE@=D5`W(eFzBPg(C{naf9|N|XsZvr zjx}BDb!>FVRuba==^<1>UgH>VUu0p!`n9e5s!1TaYpZStlh5iBs_3D#Y%A1AvUrIpNML0n}1gTe4H6BIHr~N^?X~)rJ1F+KBL{8dxe+HpHwV6(Od>{g8(ldSRA)Eyo_57104>-fU&)LI2^_Q>1$W8$?GuNBN$eT zlVfL^gN86yaLW>SMW_P{shY6x8f_w?x{3Zb#F3}2uKbrVeklq5^0G% zbs$dhz{YYyaT=F5S>oVOww3x*TstvF0e(Fs);6lYPt;ovw1JlN2X?O)WVUW<9aFQn z23>8?M_KxqXrx!IamEPb?$mT~`!a4o9dod$It~O$@YGis_Z}92(+4!$s;!?|&n5n# zGP^`qV7NS(#dxWZ4@Eu3PRoYVF>75wZFK~b;^}WfIw5f^=ol}DIp{lyPv9XBvIrp$ zy_W=v=t(dcFat!dF)Cc&>VRhYcBI>Z+Eo)^WnYamwKv#)8Ed&?>z3ZPfp(#JiNHfL zFh+SuWXazlkl;te2pvmIYBMzZ$d;bvc2vtzHN8Zs;vXBBc0df#Gk2`P&e>f4M=e|8 zw!%ok{x!GzuAyye{hr$2-i#xSfisY3#BL(5lMLe0Hw*AdHlmNG;m7?n$-w{xcKvW? zLO^g2RTBv;LW>cL!aH9?=_oU-7|#I!y;~X(wz-AMscge=jX3KOCMa>LfY+ha+(bB` zRWy)nFwk_cH7wojY8q=)`u%M!bW~RGSOdee%zPRU6k~A)b*Y-Edwtxa2ms9(4EmTc zT}Rj5Q~lqeW+aXY6ZO&BS~u)NQ-pT_DFV3nfBcWqmA|B>i#S{#~3J|=G7MjtGSbgOZ9*eDkqw1#9Wg4%1u{0?CY?bvy{_Sfs+DOd;6%j*1c)M(kszc3Z?s#~#OU!+ z6seICTFi^#Fuihkuv?|@OPa8zD$F2f)`t)xW=V;-o>~7ua6Ol zo#_URBgKH0auWCWNb+GfYL2isX;cU>Fn#B#g%7(DnH=d59O`;Mtu zJ^q-xc^~ex6q3^o>z^XI`+QS_Og$NuW9lleWbw<7!8zbht z+x6mpcWcYo?CFE8EwKmk!eK_N^b!kX1`=v5iSn`HDeP=P?9`17c4cCA2iT*j*AGnB zj|aF^EP}o+fNpEx>suWIXW#H4i^R9|9+9#<%JV*+h}1E3Js#kOfdeshY<*z#!R!Iv zsMIxkUX24Z$1bUSS*aE|<#@C|#2a>q0gD&d+Z)+LYlt_oD5xZG62&!y&bV;L1I@=DdO0~75D^Wz33C>uEh99SQc zV!jidNHG!lTa1f5*||dK(N@9gtjF<7Y<<=PMJbu_41sh63+SqC_596kX3>IfFeGjI zf#N4bjMWL@da?@YvMRu>UoAuDwk4d>|Y z06Qpfv2Sc$_q!&`VWyf^`r8DT~SuWWR#{Q#-xt; z$!em%=@4}ezGXa6Iy!OC0j@cOQSv@qYqsmx6>-=SlWgdn8sDaw&Y*|v)cQF3HPdo> z9b9|nsi!!1&2_yOfzokv>3!6al+ufao%%qtR2Rew_>SZ$-T>5z_-zLfku(?IZ)|wu z)MoXAmz;X%M=73y5s_jd*to+mDjc6Rc7k1#0ILsYMn#CIAW9*q121We(Ngfvq8DWC zK;Mirz2hcs=;Bz#lq7u0$|lla+jyWFL?bxCch#-L>-YMD!ONFj@ySG?b825OH7&IU zm+;YgCSf4F4o)ygcl6Q0pu5GY1gq2Si0=n~Z%TvkjYT?v3d_cu9~r@3+6`G@GcL}2 zK4;4*@eO<;n%FuvVqojJzGZrLzqb_xJ(7pD+3?&CCp0{Ui!J2D;S{V*i{ZL>xt+4kyJ zJhSvPMg;2x`8j0q3eoN{h84|<@xmq;xU7RR@mS-%Vv#370f4T7)0Ajs3`0sseAi$J zTTgfUy=|se4K$Wac`S^wVylM->Jq|$HI}-CIl0vXU87F=Ha@RGr>?sOx&hlN$9am@ z9>7vs5B!wmR)trPC{KY3dq~0t*48I3!_i^R+BVZy2T`vVZNjNuf1q|tlOQ1xp{mZt zSCZYN@@$I9cZn?+ambo5)|=$v=&W=)Sjp6-K{=GF`TY5eX14r^|(s_Gd3)%FW!9?X<%>od2a1iHS3fP zrjweLNgfz;2jvjr!bx5Uv}>uiQ&~d!Zr#*Rh2=2rGF-uoq6#-f%0sB1@ zTx$@1VNp|;B?Abhvd&p6Oh<}XbGm&GxMOOOF3Xj$oCkzUVmc9dm%_4e2RZa%o9ciN zcdqtXj$qn@4oV-7jE6%xumdchq=V-=*74u4W;|pBa;)Id^i4}+doTCV$D@Gm_l#~l zFkk-Byc=w?NZP47o@(eIkR%;N^}bic6Dz(-3|OhB|Rk$ek$D-<)Vcs?`L& zCEV}Yj8ZV%wcV;_<)IGJ#+ivIrFAq#b9XxWfnRi^JV}u3xI&0$$~ve?+?S|);HatF zVFgGRtRER#ABS9uV-Jqh!Dk*;u&!&^F1pdN!%oNSm;<%n-|7rdWyV&=8f2Q+*{ZQs zJ9rIiJr_xl;YKdiXlTp2&gkGT6UW^PN8VsaRL)MlG9o@>n15qzNKaT>K%g97OgScu zz2^txp+5=0enm)R#|}^J{{#!d3HQ5tQ1#F@vCgU;Sj-D*NOmVvS=W;Utc0K=m=$`$ z+6l97YD6y#LqM^65uFV!x~J9;_=e?xuLmq6bqxbS+ZiO-SiO$c%k6NWPMmD8g;;@ zD}5u#`k=_2Oc&@wI1gW5w9gcTZpI2-G>ctDglFR`pMh*6R)Xc%Mj5ebR8Hm_!wk-} zww-gh>Q3WnWfyyHKSF{Mg27J2VFIxC!u_a=dzyv(7C|ne9S)Am0gK5@hc#IkDcEgB z*1?T#p<4rARl8jW`S10**0$>OcefJ!(yXx~n3Rn1Tj2B2QoH~Jr+nMn_0v6MY`}=; zph4D8#SUw$2pxFz1OW>YPJVWlg!7B2C)E*%#7xy3k3!V#K*CPKDMm@IKC zi>rQxEY5~rpVhs)`?C0qfC=8zGEa#_Y1#Lgxcu{~MCKVGOFU#fE~~e4*p78MVKu~! z&!Pd`f2_O2MF8Ys9i#54r`EdJ>F6WZ@&U9s+kHJAV#xLEOzUoS4S#^?l6A5emq~~O z>=Qy^_eHL59b_?H9+nynSj3XdqL1S`FmM%MLeO*xnAn($J$yZEeqpUw#sbkGzCtFJ zNKG-gScgMM7%9$tr2yUd)cFs!3=5NJC@VOToUD)ySQ?W$EMX?-#`^zy3 z^DMnfSQR5h#XGIrzzA!r<795P);s1_uYeNW?tYACmbE!mqM}J~cw$lz&_vdJC~_&71N2zPu8i6SDlFuSO;&}vhje%v*6TFZ) zM!mm{Q+(5i^q2Gg%Z6(0z>|@&A8cL*s(RBxOAhkMPR_cBR>uC7)+Di6#0F50(#hrj z?2|wE(kHgM-5-AWlb`s(TwG?`gMj#kEbE8rSYd@9i@;#;3Klj_9s4x+OSt3bf8loejtEvsiWhfr%T11#(Wh7pvfjopHiq z7b}P@(`N}rg{v?C!vlihERW@0hN^W{oCl6>o5T%5U?@ryNIy`w;-tq0lP-wCt<(;R zvokQGJ_!Z{m(Z_RBPz>gvk4XoetdVJ#>K&a<-<8Ei6hI#hDlg3>4EwYG&t=>E)Xu# zqMaJ0u{*@QfI-Gy1#gTkj4wT7wLD9>SPPc`!*GM=sh{p=7M_LuDILKBQUq4O#vV+r z6b}r}E!FL6zRemu8(>ek_>xZuUdKg*cc2q%stexi*5&QZ?U!HfI+ri6uV4PeCpUuqA08x( zS~|*EbqJArB#)q5zFQG zM=T5v8ImhR?eWCmg?0~29f>2}%)LNOTo!t>gvIag1=PfH3Ra9@%wi}Is5DI6TS3nX zd$?FN6H`Fb5hVtz>`h``eIm`WN?g_0E7S2irq$C-7I-;cryF!TTJ@?a#)KbFSw*83pPm|iw2KqXuk`FE;m4AtXvs7i?Ivu+DA4B4 zIFEKt^Zz&^HkJ>4%y0{zPvBomtumTsei*XlZXaZXZ+M>X^dOJ$ zA(W}z6y#gfuJRhvFN$HHL7IA$6d=6NNr;p|0d1vs-tMWC!2B~TIUi%AJ1idMb+F(B z#X);%T#c-AtMmq%+l{i3Bn{7-(&-ELoxW#d@W7e-M)J8~U`Sp%&3zpk2Lf#)AIUq* z81>4lf>Y?`DlZKk_1R{TZa@Hl&<0yky!Ek#*vyTcH9_MS(J~DA>fWy{6XCrh5 zo&h$Y(3Scr19&>!_}dw>;-HW!Bv+DhnZ8cw;_&gNWiY)r5Lv_Tc$ zkCVl*FV2txqbqg;c${j#$>3b&QHJvLN4?Wh_7XVr^u=_W-Y8M=C;u z_h~Yk;4h6d>SXX{g7OXqaysjdx zgN*mWu!j+GNHaa^0R|e0r8$0$Tn=6B)%PW8ouOpJZo_S{aqj)Pa{2>j*B^TD;nBti zA3U#|=SEJ#i#uf^gf&q3i4~zXtfLAI6EXqe(*(9gg4suvrsbEoQN>XTfi{IS7#GEi zojIL1@nSb#V8P{#k99Sr3-o@#a}@NGatOw}5{?ohwdA7Ct#DWvfvK~)*}=XXVnzuu zu|hFv8Zs*+f()Ho0XXpXo;zRTvaxZMM*dK4!F+9@+Efc{fOfXWVBM(pY3(wig* zbK(T?FNX+nEsRvDr@=kO>}>t6?9iJSlUl zX^Fa1e(=Ki`!C#o;milmoYjU8bLl>802SHI{&$QlK;qR&})coDsf>x4>`U1iXw z(_Gn+;_f5s$6t#=B-nzBi?=2P-ne2`2Iz`~Xe7#KrTZ{yWyf36QkCu|AQ)vHYnO*8 zIuIl$9*u#D7LtZ6kKs}bsJ*zxOQdU)j3zNLM;4_Zu;ma0rZ1Qo{*VRgrSj>yF*TXL zs{>l@O(}4ItF=Ld$;8iR#Uj=DAc#nY&Al9asM6zjgu<299+e5F7rjZ48{s8*KA&Gt zQoGVHfi#H=V2yCnq#8s6Nv(>CTw3PtD!2ooPJp-$CrE{1ls%0yFisR?0^);cd=QWt zdRq%#OB79bnONfK8g63bO|GFj))01gh*Aa!#@5cRhrouTA^sT6wV-lw<_-ptPp_i( zq8J`JZ{h~|z|}`AwGzaCW-qxPHqL8nr#Bxsd*CxqP&3sZ!=Kj(ti_xO8(0jYsi!tP2rS`@IlQ_qt39pfr}7BNj5ihN$G9&u~|!fT}CNLN1zvossU@cE=)hUPRPN@D3 ze%7&v+Ca&`XLWQ10~s1fvQghsjz<0%KNRM{t4bfR{K6`N(e@-$9z1t$?d*eR9yPqb6k64FOntW1WH`RiYSg1d=)^}*sxQs05e!Xb8`LBufvdG ziSRhcUNz{_9a1VHH>TwBZD-})Z6iQ}Xyp1e5PS}Oqgz3(bXB!04V6CcvftCGez9VT zC8Px)v|#OyN)&+IV#O)oD@KU@vDe}v3t`F()58~UY4Bm->1;m0p16_6gad%LIP6Yn z5RQ>%0ja-*UJe*P^o3cCDnEmU!!1U&1jwv8c&ZhJWsXo9MTRO21ww!cl!-=ho~%`v zO?je1_Khfv8qpY-Xna&t_)^zvoy$@;L7ojzuhFoF7;$K@hJiY;e(6#WU4eb-%Pk4o zG}gYa85<6q((`SiYt2<zt+yxo*vZF+Q_*fiq~w{NeK&rMqe$LTc?og*SeD2-Q4Wqk^y+9?R8nl!1D%XFVGN}+BXve5TREv3fx=JNnWtTbk5d_e3&40 zYf3weE`~nTslbc$F(Lw#a&TJ_D#*;vstMP>aKV5oAYBc0753TAL#*I&4F-(=P^O%L zYXJZ8z}*3hgsvq*^^J@>_&(G{Bm}IYcf)zpt78v`HsQ@Vh%0O<8Tlhv>k$MfC^=G6 zXiv>mWFtUnv`JV==A{ld> z@mxcnblnn01JuzP4a6l-V$)$MlrMHGgM+@i4R8UC#qZgDgVqq6YbJgqhW zHYKQWgtMrc@s_3}m;@B51y-+o!a0>X#)L&86p|RuV$I1YlaVrWM)AHpJWS$fwDI#H zbQ9lc6CD?Cojxt;8vOyFyQZtM+#BkHAs{HqA2bH+3rI_4$aQbKz9xNKx0m^=MTt#$ zEL`}tYm^)W8Om4gULsF`oHQS|dY!S^dAJQHOufm#s+Q4O2j%)rISu|UslI1z6G z#Q_wcMjKio5jCV7Q;YZ@5Xs12bGTC^4&svLG;+c8b+oW*b-kW54d=cY%VYc1Mtn5lNp+l$s-kn>nO;F8FyA zf@7j+Y#Bk2D@Z_Pcc8`2Qb81<0#VPObc%;?YmPWzM;2Po zEt@w;z6#C0PVo>@#>)Zbuf#8fb^tOJ)|^0rl{2&CS{#@t+Nj+YgawqknOa!eBcud; z9vyWRoI11>0W3mH3MuBYQRsGIM>+mN5)-T?p02>nIXzS<0pOs76ZnqWWdf=<@X0AE4btlub6y*b2AcaeEqyk_f1$2xkr$V5K z#Z}_2BBJYP+k(O$B$G>xF<8=@!rx4>@WL!HeaI zM4bbBqOYU&=1$b98Q65R(qJs8;N+1yII*c)g8(@bGFh{cpm=ScLJ(^;jfsZ_W3d@% zMO)($aG!rOJa^z-Eud^1Jb2JDDJ3K@*|5y+j93q~|2~fqKp!P|ZMVae!zL z?%>uSs?@;3kmDHP%v|%*W#jaWY|IA_RO*<-mI##FQ$~1jvP+yV-h7+rg?tOnnsA{KO>s1xc*Gi6#Ni-R4D)Ha z#F9tS48lO(EeIMIE+mMLq0~h@A*0Cwi8nd^QCZ-s5b+BRYRUjY~Wv@a*+LM=Bwl!$&zgKf=JFl%p7EB6sY}ptunug#OSrG>bw}T(TVV zczi8eWsN#2v==V5kcN&&gR0BNqCWC6c@3Qf#v>?-9PeqA7cSjv>AZ?Up+E|BIjSZ= zARu}+7U$UBFy$dT81DwkQ}9ViyZkP-%S9~84CI7iG0o~-9BQZsu;zLIoxr_4#qy{V ziiik?lE?~Rb8hkKqQ`YITVQyi@u{|YxuGnJFf_aB5D3_|OFh+A&L;2|fe5Y!lx>)= zT8JP=@zr|>0O1!WT$?1g2+ujc4&|nV+|8isfvK@7MhKlThUri{szm16xX_{K+BIIAz6Rr9$GaFDbeLgMV2~VB z=HXhSfa2EGVt_NE24DaoZop+X^oM(#eu_k=l(+$q*;V_p9-}X-vnQJA?vf3Zg%g5u zu!ti+@g>8gM2m~Czyn0*T-Jga0h`-*^!YR;R3Sk}ib@!kCnB+FEEOM@9ce7};&d>s zN;wkt! zfFZ0v7D92Mst_Imfrz>&()19_pS`Qf>MHmFTz^U>yA9X(N_{&}yN}NVTN8}6VsUX0 zD!>Y7m3Z8|?%)FL{KS+&%JHnb0ec5^3RMB0KI?`b>FIsW-6WPOSdPgY1q=S@EuHf#WiMGtLOlpW?*a4EBPbfd?E|Pt3)~K=(0cZ6ZkGJ5qr%i zGb)@GY@WO>iw)ldUm*w-B9% zdzB);TDvIP(3M5qAbhmEeV>RElw~?s1xtZ*FQ?vhK`8pgBb@E%@&Y7N@W7T-8a3}a6Y&Sd@S6w0q$Ss-XM$f+fZ@oSut0KM%w&lN-QF5BGOjI z8pIJSjVq^N zi}cOdz-zcI)aP8}6o(EQ6x7SbGQF~XP#cbf9$uJU!Otk)#c@H3)FReL-U!3Y7e3%@fV2hGJgTKa{bZB+yi<PDTFm?8q{8eFg)MR(!VD;yL`jxIY!OGqsfe*%Fpc!cxzFW|+mDDBzr+Jd z)y@G(R!hx?;SYwmD&0^rYbB<>$N+NS?}7Ua@(9j%#lO5N1LPGVuNa~QgNaBbq>@^O z4o+M0XniD%X3o3k`x1qtXU>!rQP~NYkrO~L&P7!NoYX- z?!+t&UiAt_2CD#*|JQ065@TBHd)8F>UeU(gMa<)PPC3|?2>WwSM#HQAUFnwSLp ziJ>?{xHQ}l!lLJ7U3F-9$}WFm1Y^za@c_c)2I?F z113O61V)RBg>#E;T-5m$ZHuFZX`d*EfU4R=T4_^A@X!H-O+L(}b=)aJ&`OMp>S_a{ z+1wyMfV6;7baB8t^fh^Dv%yHF0LJ59~z%aG`pJgoLC}J|`+h zUo!&4Oumj!vmzIE429Ux=5R!?=qSKU@p`#Px#8J54z)Qlyn>d7{($z|L;b?}N#zcI z^+TT9Sex{?VIkpAj$C!+|1`Uo6Cgu?M7^8Y-iIXIy}RLBh;($RR41oa*ODGo~ z1rsVx8uDm3A0fyK1aQzp^q5Gc!U@+J{i`d3r)1GZ+>J!aaDD2a5kr$CN#bLvvj=1Z z`G5^WnaeWbUB_(7gK!b5FPXQVk}}F8+Wi#(q*Id9E#vD99f9`z;A=EZZ}(7&EC$W*}c@vi%B&Ko7lgYW7jRV%jJGi72ZUP2xZ6u5w&TP z=Yve6TykY`T62d{#uH>n>ua(xFs~4-z%@q}LP*J<=>P_x0c5ep6@DEebVDFNV54w^ z#YGg@engHF1}6GL(TtO(N;0Z5B^1U8rpUuf8>b&04#!iuixCAXBgD1x64?yx2C86? zsbEA7iiJ2dtj8`n8=|}^x$zyL*lCSMHO zH=qTt%qo?+a7W}DB&hqm6s{915cxIe zq5yzuBh(QTgY?IVgZC!tH|1{J07e7K`Y1p+UiHO@3PCol}^oiPf2G6Q62uwm5Q*c1!^1h!1i zINBtJQ+_nTNv(D-)?KLt41}}t;%K`e)HVdetdi~wLbVoJUoMA50AJ>oLt@>?aOSsC zOc932?K+Sxgl6aoXhKP2fP$vBW^d7`T_m7*D!l7Rp2_n8`0!+YZi+02cPSzK9?*@+ zpj8yHFnpmjEe38*>4&05l&aV2sup#tLGybkv$u^S1upsRu~alox; zRDtVQ(W*9Ix>Ot@NmzLAfsE&|D!`UJ-8<((sQbh@A2M3kNh9@5h5^#j{KOcZCdqOHK!3f49as)R>TIgG7sy8{f zi*Qm3h@Qo}=#ugthhy@bMPevLC3K-kr|@x8qd*|G4C}JXNy`G=9|HlArrwLF*=+nz zfQf;-a^8kdm=JpMK6+WEi0H_Ij9_gmR1)hVA7l-)5FY`dtOq#5QJi3|gp?$BD0JP& z2p9|LF9@g+`DN6*4Tly&VRaO2i^Gi1wSE~ZxRNzWY{Yyqn{Q1g*_;yt;KO#ydNMUc)f>w z53Lo6l~8FmdM#{W0ReL|B19B2%bEy1%tFOr#!WM78fFZHS>b^0)U0bbnIful$*US1 zOSv!e^LX*Tts!B;_zj_f#R9E>01Yh91ujOw2fPd2RI!mEtY4Mt)X>1hs$h2?5`fLM zPfVI=psn%EB^7g*JEtE__Tx<~g-I|c^%2HIA@qYahew2*K9^7ie7=4_ya3MU$uz384WalAGCc8Jodj#!{jA_qO!tX;0 z=n==E9rMT#W=v~k04;k1{g6TGt{&qfJK8D2Ma+olI<;dtK zq!%QC$jA4MgiDNiyutgHNgm1ZIWAxtE_y+F<)w+xd69VNwLnMskYxpENt3rjrbAp$ zu_f@HMara`@|@qLBljT9gn%a@iNg7bmzUuYAT~6qoG%;V?yw;zTeId-K)rCf>*umal`--;eRM8AIs>ZKsvvL3Oh*J3HJe4wJ0OsFNuy{D zOH(Z)ZvnCaL}H07NV=JGL7~1Lz=6iZnwY1#CLZERo^0ApW5#&_kpKQXEtbZiyXP?*dY}4U2}s7D+@D z-Zqr1S?C;CnM}uLW*ggB(1$rg+7SXO~ zEI74=UzZf8OhzzM##m`UlmQ>unIQ8VvGk$*RLJvcfpAeCm6csL8e<|5_F!h>(m?M` z)qp#dJ`kCdENKK)2e8EfAx4+q%i>7?dhWx`3QHd5lC9SYw(zQUK%& z1WaIh4iloTa0*1C6M@Sfj3Z3KCV^@A=P7u^L5e3EA5sNtBb33^3goBI5fpnP=;6SB z4fvJ4QW}T6W^!(+#E3#kg8q=o8p|nZ0JhLkVckKSYawsLEd#=zig={g@A&#Ap$!JBx-Hk2Q>}FdxzqW70$o6+tmr6HarHcH1-8a6KTw3r0K^ie(yn zP$Ng0l>jGP8L!3>k(mue!0w~~AiT6fT0`Rn=!4B(ORhw7UuiF=cDoMIp;(eBf-kCj8a1) zc9G;EJZS_D_J;&7fd7+oL_j6gnxT>qwj9!(q4FRSA;;syMF=>Kz^?#E4snl>%HD@d z;Nnb$V`CqT5grJM0~rhkvPgr_uY_nT4k`LeyAsLrlH@hKLo*T`DRpHDNj(PH&_Stq z7i2mC7nD<-X%}U}#l*^_9mLhm>;dfbWKZT~hWHYvB;GGUcb78KF~LL+e_G!O?;(~|y*+VatK6?`w@p?!Ug ziir>hOmhSuQv4G92ao5C-HI~=OAB61gQA6O5=Vk*b1Ui(N>{Ne(VxV=TwNWRA8Vzs z#%qtPRiigKR5t+@iX$^@1XM$Is@h`D`!BjWK9%Yv%GG#zy?0xIH0!rsJrO<~Qkk=;i6gesIa%&Y)S0jVQ$FeO(H ztjy9lc#~c)AZr?U(_aN=c`8tXd5KO)LmU8_2`=tYM^cxtcZmUJGRa_o7K=bsh+X{H z6icYu%V65zETOYODsETQt}>-Ri@WuYtMfVWWK(#1a&8hqzfk_}?{F_eWB`5%o(08~ zM3^ZwIJ677Gg!)ykfY1w%3b+~(J&HX1;{~C5tS{WX+k^u>Ib32g)L#L4*LPVYl}a9vae@-59;9yocIS?LMPkwLsy#9^$QZ#qOgsV>{Ss3&IwT+y z>K`J*uDUPNb(pw%Ud@=$^s0Nw`Qm^5G%44A_0`9`r@rz<)%1Vm8*TgNAMQKD@n8N0 ziLJl(wcp{D({FzDt1o`_tN-b-dijO_`d2T#^wqEa^>pv07hZVrtN-U?oD0A8!e74l z;!7_+oqYVuZTnw7%Iq!U#jm~e;tT)r6JSc0UU=~!p|eQ)ndr;RVk$KFpu{`mbOe{-qaRdf_WCzVwnP)M?^~DJP_fQV!`4Y(85wAdLsn zZUSsM7y;;-kge1=_=h5**hSE-0sVsam%cTfkBOHh;g==oAFCsij97rPlJ_>vsowdo z+)cZU5o?MUZCe+Y&cIhS5(U-Rv9{O7N<|Kh97v#+$@`|Uj|dij<1 zdmjCHe&wTn@}cjvulcpm{Oqdzp69af@t$IS?Qh_d+~e;rCb@NK)m~ev^~>K#)4iAf zxqZ#A*1?xvX@B@dNT%E&m7k)ETq+nhbLAYVv4DfGlSkMftwFI8<)O+wEApiqfK?IC z$p{9GR@Rua&BtJ-A?z*Zo)^8Vp~59GO;m$9DYwMb(E0jqFDMZE>w3JX5CdqK#tlj# zZ52FddJUYg!zcz!6?Cec0aQG+{Zuhj$2@qpSHhTy$_a5qVBE(CO~GYIU9LIcHwb;N z^i-tCEIpMdCc>tKij4*lZ~%-zgbR-y3)Y2V4{3Wq4q#kt3b_<$*CLR#yi~`4k`u(1 z$m%cezAH2IP+8?^s5R3eS*Xp__qN-1__llhZQI`P)~~g{__mL=?Qfho{omU!Y()Q| z{i7S+l6|B7H#fW&4CEKumwOw(+_s;HzTSSOzZ$&f{_B6P{k=C|fAk;Qr+P)(?)3VD zjpP5=eslPqFSTEPF#qND+i!d8JASYI=6(I&X#Yq1$o1Eq`Ma0@zTJJx?dtEg-)h^p z9#wyC)p|dB+okr;Zhz0W+Hd6VeX{+BW8OE~Pj!hv`M~vWPb|GB66`eGYxpd2qcU)g zZ6T4tLzE-h2q3kp>@mws3%YfFZdk zHozZHtuavqX;y61CgbYF%$Et$36h7iI=@n_UNOs34O6<4q&mWCUyrSZw|H&m!OyjS z&d}~w>ipmBSALS=wqJVw+TK^%pYQxw(za^nHZL4M*Z$>--|@ZmwQZ}t()ky^*M4Hv zx#s!y`D>PKd(C${udUm5)ahJk+Z#8((Ei1$^8@^c&K-Z*e!P9Yb7-gi&9*(=dC#P6 zA8*^Aew+Pt`}^&G?>yfA`Zc?4YhBwp%`YEqTjiC`!*2~$LXhG2Hbo|KS7K<7PKg?0 zXpeCm(=Q^CQapW_qbDmtmd%Z*#!-qK7syK_giInyrF05~BMf{2!}SzP*(@H>acc$! zGsX;2TaK~j5trk51JsoComB1w3nJ&nd7l~%N9VnyaETOH)dJT-X`(yC$AGYL zF%S!CCryBWz-uyp7(~cGkW#TzeLz&uF_x3RMg$;Li-xcr*`*WF*(OvFK+@1aLrd;q zlS*@lW^=o?lL)x7fs+t!qJIN*@Wwpcy8hJPv|sG}blV=} zSw7n7{FJ_NP3M+xw|`K7==rw2y>pbN`H$Prbgt!nUEsIy!}_5-*3PEy3UX4ACay*+_wL&{@Guf;B}yb!3D*5Bd$PWz^wzu ziMWR(?^K=Rbyu5m%3hgCem5;#h?N6`@EXwF!g{PK%S7$t=Jf)Vg4@kwa)H z^bP|dg>{g#mbe%yR{Utxvvxd#?svl)cEu?$N$5&A3R zUDU4@5*QIJW2Rx%LqNbvs`zeT3VZ|vkc_+wu4JRV>GE~B(O+M`a6uYwY@9pW8{NN| zJpY~cx}WPf?LT$cK!-ZN`_fllNZ;_T|Ci15+Vkj4zTW;{&;MTAezS9doABwX;@11? zL!D3lbNkwF8EyN&bvm1Du+yEdz0&^6mq(rJ+AnSJueY?nGvf<%zn7o z`_FHlKew?V4c6DsKHS}W|Jn6*qrb7SIU*lrkl25 z*4KLj^}@rwkus1>`Jq#z2Tz2_rTqEox11lV|SiBef;FH)5njU zJay{$u~R3HpE!N;o_mg*IKDb|>H|9vNqyl?IF$;0oz`@Q$Q z|MaO7rysa{A>MlVot@@qJ9_NIsbk0PzU$=4JC0^AwtrmLpJ?0jY@#oV_tv@byX_Bs z#QS91PV2otZ2yph5gYX@?cqO{`Q^W>>kof&aM#7Q{q5)fNBe)=)9L&{`?t^k&Yyhx zNZampe$;uYZLj0K{KfNs+y1rs+Rpj*$-CP2`3KwaMZS9H^X<2Os`Klds`s?txQV^~ zwe}8v^M21r<+j^yzV)_4?|kPi2M!&&^@ew>4*k%u!4cJ8!-9;KAG8efc%M_ws9e{@E`)_qpHt!skEt^k+W(+~=Qt zE_j)zC{EBDJO6w8sm_$QaNWfnj=Q)0V*9OC=SQDxf1%Ss98dZ4zRq=TdrPPDT>HgW zI|4MwZJ31COUFVu#YCqmtwbwlV!6)0_ z>~#LyEA5Yey(70@enaQ)+V;a$P% z`)5A;@1Ob1ul?q)f9CVgefHU>pMB=pXPCZm(*{7d-=9$kt{oJ$9J@fRZ zKKJx9pZ?71nKwT5nWvun>{HKw`qNK6`P`FV`1~_pc<#9`eCD&CTR!*cr=Nc6$tRzE z>gi{n|NK+WeeszmKR;jY>`nJ~FYfF<^2qMi&ZX_e_GEu=`=dM4?fr|(y{(}My{-MnclMvS_~_pDBac1u*#7RN{oM(0loZTpBQXgZzSsabwR|BW`KK5Cbz zum4i}Nw)FJfAswC&~|p*_Vb+|dAe<%d~N4H^XKmRbld)_`%Qk!>yO-i*IiiNX@Vn> z$Y<9Gx6O_1W|PZGj98%ooG{o+OoD@8BzlVZig-wfN0I}-HWg9AYYkk8UW`7uJxqvn zN2nJv?Gxd1s!^QO#GUVK(~%%YCsiJjBt|oaKoW}{UZMnhIPy2TeATWPqbLSg5arEx zC&>#XgJ^RI9T#Ksl7g}}hk%FpA2R)oJWF6plnX1jP5&3j5ei3#pOJw|Yv4$LTfVwm z3)-J!usu2tt zC=~&fc3yd$q}O!rdA9u%QIqyN?|z|ezx4H1{Of;dKhb$D8&mGwhWO{#+rQ{^$Zgl- z@3cSpr}5W#@;xyJZvd${w*?U!1< z_}itHGwnyYBq(6a2Y9YTIx8)UofhxBe+5yS-CL;2{(aC_)gM z&SNrd#HbJo4$w>baaws}LamOk@n zsWCyh!TT8NJrNKSa(|DQ*O=H62C70WU?k97gIoeJ0n?MKhKw~Br-BB9_+CsRc;FDD zRJm}*FcC4vL?*_g5;bIYvoYy!Ze)(3pFIa!6>U#!FR(l??q*HQH>C5oFJic7RiO1l zVFxlmY!QtS_EbyH5T_@M`=w|b&Ct0jDz+F#n|g(@14njwGhS)ySw0p0r9>?^iW<*+ zuKiZ0^WY!0pA%=`dpn1#-(R)Yf9ZL)+_&3{owxj~I71KnX7a}rtsNP}iT?dfU#R~d zu}A$sX@B9`&$s`LFW?lm_VK@2wQu=xN2YX5t>e(d_Lm{izm~R03lfY4%M7L6ars%-MCn0)R z!{jB04T^zU=m8Z?NhV^7QIWbM6zK?9-R6oS=f2DPFmM%Rl;tG#X_B|)G6d{=r$bkA zXXl28Wr{?9c-QG0-*D>2&RY%ZEuGsDw|6?{tRyQJr#si{B3(W9zteg5t>F!wy9wj$ zbRHorhE8U``9SAQr6*qXYdh~OV!PYv zJp8`S8dLr{ojWY|!s*lRy1vu-VcYpm=Z&{`5PwFQk*!O$P6{O`3u&P%?GQ7_XsDsg z$o{DvbT4+Y2foU#gB5p!Ufrjej671b+#jU7W9b8=!}75Y1H8IHTGy6Bx&an*#W@5a25QdKbunlfNwE;g0k<-^4_-+ds2uGC zMax*nx_A*$L3uWbOW3U8G;lTxea#xl;)1%*i3m$Gi?}_ql8AKY?QB}9%Aj%GU)qQ{ zm{Y|8>`Rk@onn#Zn1vf56*;{E)?BGg@qA%*!&?jl=oIKylf#|YF;wM-&aK)8J5B3a zH?2C?AG-4n$+@O;#0YubBvVK8#i7n2;uRfb^1ydGZ#o(N%g%{Ba&GCoH@vI!I(83} zdd&~Ke%1MrTL*!8pmQ^_kUKiBpUtj)Q!={shR$)H?%%q<)6p5)nqAvDc1!2sp<}(R zbARO-_kI7W^O_q~?f&m{&fbaYh>=ye3xpfLD8NaPP9YjL*0D^uWV_NUGCpM@#>kW$ zd^`))gxP1^?6k^QX!EGc}20cCA*8rJ4UumcgMQT%4 zdQv6=nP$Y(T~Qz3aCslXK}PtX7*!a-2XorfQHEt84YCz^1b~P#;V);DM7p4pT@GMW z5lDM4=CRl`P`I|wLA zBrx(HN_S8_gMWO{wZB}RWQ5!g~&A%5@LYhf0q~pY<`3QdnCU@F9)lnlkzUT zP$nz}u@b%xtTd6oQCD3NjLon}Nd;39ycH8E4TuWVa!lt1d1tOO!bj$7rB}a86dvee z(Q%8s8D=$MNmQw5Ylx!^i|7Pi%Tnk2&y^Ab~yq1nZGifuodY=?aU2gH|z zHsp4s%R$1pCUio?Vln4$fEiL)(TzdFoDVD@12LK%`WzKM&>h8cyjtEC%V8T1i3jPM0*!R@Q*z%&^ZX$7SVH_bw!u;XqZ zxE-vLpf&(!pH-!%4YEr}VcuY-F&=pwAe@~b2g2Wqp^pi>MO4i2EadSLZV)L3H7Jxg z!3kV$Hl%LqFql^J#tJD8MA9*JhlfN}FJwD#smMqQTx9GBM9k2(RGK7aS^5Sx57s?? zIN=`_a%EOG6DWv37kOaQnP<$QbfKD16o_Dk+Fib?-ByTw$lxlmg-|DG=zKg!iX7-~ zHXP3};~bPB{9-6UB1Wi;NKFI#oFKqsfI8k@HUX(uxTKhIi$IA&2awlf$p|3_$zdA8 z1A}M~Dlg!C#>cZLAQgRSt>g?uYto|)g(smZiWFVjK(C9~nv7Crk+FJS_4$ya+D{17 z(DkhayN3(`Td*}(T<5R9Qnxw`nIm3FS61NdhPmWy8V=Xb#Ed$jOrMX98KsvJ;ofGx zdx%>&bumBD^aA%1`hW!$D>4nj%-;0W4<(Wjb)Z=1}T?UG@Ji#o0@7L}}^jY7AO z&cwPT0hHXyOq@o<4mqBfIZU-DwD8ENk`EOy;A|-XYQCJ9>Mmq(Vxnw+>T=?9{gIy@ zU|!_}HWg;65evXZpshqwfp27t`jI5x(Tu8B^Jh(I&J_~5CK6|q5D0|MGUXyhf#!NO zd7h-RCFa;-)WX6Y6{Hd%Mdc-65>7`NWGkan#r!iXo+LQ|tf1bO?p4Cb$z}y~M|%wU zAO;zdWy2354rj-e;>S{WD=cLc-D2tpQ_29e(IfLg*5;v3eJ?5Mf^qWPI0|BM%4U2$ zMAr%&o(h3=h_egdUk@`4Q!=JiYD}12?KBv#u68P;j>4*Bi?AWMYRmh`el;+oGw1qP z6&1!yVm-vA$BwiTUL2dA@F1M@9A(U$W3v#}7w$@=%b=f6h$~jc%$DIHP-$)z<+R$~ znm|6!E>=a2S_S(OOJag+z$b49frE$d5kXX1GX|G;AYw6y#}rX#cuv`k)WO)DsQKcW zU5o#SQEZb@IwNXO?Os9(G{Wzin~cgK=3z*6pcy<{W|rv}t6*Sf>juXS9B!2r^z}t1 zid`2>x5@WD${!UY0>vC}w3sm!VTEcee?9PSN8uB)*FTs$8gAGR|W!udX^{#brwV zFMW{5tFq4L^HiQI2pW;5k?AmLG7@~qS4jzY6DKqef%IV%@n|;@D~)4}O|>xvi_*w! z4aUT?QM2tl;>`%en#_}GcV~ZVJek7{`J^;DKqRObV2soyW`CIkGglAwVvZ$BjTutF ziVcQl&|g>8Az3R-2B^6uJrfcgy-Gl;Y~UKuggYn#GSWYV@|Rc_^ff#(gk>5(6`6m= zIh;KDmf44l1XyV*th*T4!iqbK$%nKDS+ay}V-6+szt9L*A)2L$y9LQ*F$g%AU>P($ zZMlPf|vzb)xaLe9g;0_5s zR6wj7&TgVo7(;XUUH;IOGZuTBh1A3vXRGi5#$l3jQ)`qA1-UJgd0tMDH% z*{XMl#|DVZ*%i3@OU%MFO2mJqZjThi<%Izv&YZCVT%-6M*e%ooW&xC*woYDNTcb=~^6;@;F`x79)VzAWVjNhB)L&1f?1v9EXCPCF3eX^eqv?m|vZ3 zj-;H%9uI^CB7%yA!~Ts4Qz;q6Xk(lXbLM8E&U3R&UnSc1ry1*MaYCDw9u9b_$54B z2Y+>qH4#r;$0UgnZ;Q?|K)_7IpRAw=W{_JY5IqvOV`eJR<%;3zoH8QUh;Pog8kzAs zSDmrAR~VD%<_v_u)Ebh#&v+S+NlZyulE1;U*GQW%lOU?`baQgh$BO_SY$*t;L7&<8 zW-%Tk#;i&X;JT{HVmw{$%y>Ud$#_Z;7nLF!=ek0ONG7-w%$#*}k2fh|f_;o(WjsYH zO>_=J1OecX_?^=%MP}r1k*=~$+arUTkwqBh7*m0Xw1H-CRMSqfewd3?E#%NtJm|Mk zRgn3`@kXB$Gy7RsODocYbIMAQ8a7Q4pJQlcFg6a&<%C*16yPFN0CyNgWzJAdWM}AQ z387_-GqZmisC|<;s!WgtF=AXZ2PGITYE6V~Q@_t{95HRuB92}GT?DNl;)%Q>$P9x} z8qQ!8!)$EgmQZdGYO{Vp4=NVSYZt^)Q`brrMe~G9xCF zqQ)Bu^}tR6@pLeY(#63h*)t|nh+c<#Nt`9X(_F0MMNQOgFeQLiq-eX}HC`_PCL@^7 z#RwRpeDwjMZ9?^E#Y9?5>=qSjDG_E)T(qZeD25mXiysadMZz2`vaD-7NTqGp2vrp0 z2}7r{WWbYXjYLd5LSV*EfnISg1>f~=sDuKW2w}2CvGtIt=1xI5k_N#JSWeQ6GQ^aj zs!}WQ77>%1KC6)ifWn-90+j@o08Ts3UI0J_W zRW)Iz;D!mgGp&CkoE=f10?9)BlSLAiW?P?d->2K&)!tTWcRY#4Xbvs|2~ek~;drOp zc|NTvCc<5(OP~y%)7s9-xf*&F|t{hXMo~;LOc=Z2s0EVip_97QA84sV$Cu*N&;K4;1N@R z{4kifjA{?{>d_0RTe*lCslpaD40AdlY@X^l24^D_h*e2jCdRxF!2l)$kj7HLU5EmY zdxrihqA$igq+2Sn3mQpPB1n%Ul>=mWl6Rm*V(t?19!ApQli>?7WtjTaslh{>#sN_$ zS6X#0SqjE|8eSAvij^|p0ZRfZEzV+|lf`Yz5LL^ZWEL4uxWQ&(f)uurXe+v+(77TL zCb@5)M&|=r!~;!|LRYw?(oBQa%7eJOcC=2@o@DomlWBHkO7bZD<#;`cot`z>S|1 z+=hfV!pPR?1WchzWFi2fdQcv=B_rM<4MRNm%)lqB5E8=96y|EfJu!I+l!da1tCYGU zmBq**h2R?Uz1cebAX?Z`q~+5%8lzhkt^W4Xm(wkhAE>zCIuRCbiqvdN^~l;3NrN29 zY<4Cp<6{R426*)|swf8Zg7}#-UR)9?_&t)CBmpNX!myC+Lu!sts_HR9Nn?|LU~>v6 z85RYpA1lqRS^H+8+c3>;ANMfNoPjYy?2r8>hrm`vmMHph8t-%j5oMBN8j=re5!@NZ zQ;Wd1ya`C5zj~hfj1W_8Qud4j59-(oCVY=H+i9|kZt)Rm0Z!ZjF9<{WMG9P??P#P~`HI$VDCtjy*QJ4M%>6mJ!$l>%bD- zSbqcUH!Fbhot#oxCe$tHb=3#$B?m9506+wpaIVH_Mv5dGffy?i0C?>xttvT${6 zmLFTM7>uY)#`xChl0)WQhCy&>O`TpjQ> z=n>}6U^Iw0;kg(s1Lqt)9~gDW!{-l#<9trwwii328A3&%behGL^D}6_YhD%17iR-k z9(%`3Msh8(>HRJ2TCpMmb2x4#4gyXd(T_4>!Cm9L6K@~5f;sNkMmU;-vEJm+uw~Jw zy2qC_#PrV07`ySTMoJ!+7ID?!=^Rs@)2Cil`M{?H)-slWmxUj8vNdHs6LD45(up5& z%YZ~vSzcs$SyW{$AQ&KbI1x4l8<5)yGL}Fh+uS`z(jn+<8fTpA6j~MZL(uRtcb}Nz z<|h#O0*X!qsCKC`A<0wAt}LreIq9_}zU99Kssl8wqTr~$)?2%5&5Dqa%Rkcj3Mc?yj`CP8MGhp)s~BCxkyIJItzcygtW(lT@fnK(Dd4d6IB!cx%iv zbcQ=*4XVIrDl%w1X^lx0=I9Gt)I@3_K@Xb(Awk#>d8!3_c9Yf%V!apDWCB5P`Bh$b zx$u!yqRXLcc%0#i=*TgNRpW9zpMsPl)n(c}HZ=^k*>uV&C}S`sr9q5L7jIHHqnRLz z@sAM~I8iuwkx=7oBC<)0*d)dSDJSSghHMgTA)Z`sXEOAon>=z;b%F zJWM@lo$Qq1G(Bsm7zF`VxhD}?Fc%LOq1H=NjXp4B5cfqa60*dysYx;l*j@^G&;cQ$ zJO>#J3}{9qPcVrX*(sN2T-D_`CVNlJO|Kac5IEQJ%eeA^;8s!2Im*mYKvF&l={6h` zC^{U{T^MU7J{q=O%+SqR1I`L8V2LWE!oH z%?r$YJZca!n5PN#_GD6AwJj5aE`jn2;6)rZiOWP2${>QhnW;_wBCRVKG8{I%n(M`DFPkT!CZxyZUMVt9YZ@OR>lq|u`M-3z15^&@c_6YDJ!X7!ACrDeT7@zI@gmW zf9WYbog@T8h^cb{A~WXE4M*sNG5B}I@DA!_5opc;M=^@akC`yZ@#%7okiMl?%Yl~F zB{Afn_EYLB64@=1$>IB%iB@u?SWF}X0cBainsM}3%aT@`LG<%6lPcryNxYRaVQ>Za zB`$ehCdF(jn2OvkZ5`Oh98fXRIdc;6vcU8}1|eW5QWzYGbXankGRkug(VH+Em7Gp1 zcIgDsI2#Ig5m{b+gHiGoA*Ftwm}nC4_#hdXd?H73O^Ca)SjiWgeWVf?vH(*M<2W_u zEocemd{LH>n!v@yG7&Cj>RcvW7Il;1Ew9QerOy@6hnrjk$C$y0YMBHzBHisR*5%eb z!YPTEnOX`HGX%ROmgE4FLT?jJTTn)#kdF-z6V+ZKv$q&nZ~IeG^cr@yErydb%~{}_ z9J+)QYbq=b!MIGPIoFd$*Q*GHH!q0r`$F77{xqcH0j#jenle{p^>SX5pN!+R%ht*n zsFms}Sp%q93NxbvK8OXedTAc7n{(s~pH#-b6HI#wz zfTr0j9Bs>tC$L!lWNJ+qLbuaWc+R@zXGYge+3L7Y;9&TcRjhWbmc|NG? z5I(Vv5DXG(OQA`0LujA|$Uy~g%F+X*)uQHEa;}iG{;IVpltIv_fW-hiN82W26=!;0 z73M^E!|5ovKd{wB+$7o3L+gNjRg4;jC5eY~e9FZPZx7F&Bq?B9UZw5V3MncG2VAZk zPc93E{LPV#4pRk&8Pzx$C1A(moi4o(9iWVF% zFe7wd6ua@5HH=Xf!4OeHIGm`^M#xa381DO*m>unIljaG5q5>IPTNP{vF-ACS-osfeH&qh>$C0Kwub6V5RGTqn{vT6jGdB?C45p5}ES?*B=K9#?|q;(bur6XwJx# z2MM7c<5VSv5I{WDQPV0w5h_)w>PUFGIP`hZ3@2t{CU_vh^W^`65nv?7bhGk*oQ*6g zi$Vr0&xB$Ek7qL4gS2(lW+7u~5aG~3T2TI6BVc_zRbm{Xg3Jt9TV_^UOsAY8+T;O( zol&e&*@ul+k1ONqTo1Bvh*RYZ5s9kkiwGl;INY&~aX2y^z^g(n(Yql1U4DGtA!bF5 znhFlxB_auaA@PDSc#9YghCZTr6~3gv1-eGtQ2Uhzb)mA_Dv}lY!$Jd@M$|DhTb;nW zNa|so8*U&RU}jxcCleI(aY9@!Rg+E`IPm*n)HP9~;jED!%P@=25cq23Xbu><2{%g! z4v|1`jUIo>hMvX(L%^~yJE9kXi2)q7OTs{HWok|dG9n>Vq#C< zow+*O54#p>Ny|)jqJck5vw_8=AybQn`)HA>wJ8bb8Z&LAVZy_u^<-#GhPX?3HaV>U z3`Areq9_1dvC(nU8<|FbJ3uB2sAgSl%;Kg)W`xbeRvhF z^aAKpept+}UPdPKw>4#xuvpBx!d-aIUwD9UV+5)+;(5JG@*eR^@_MXy(Y}BgQDAN{ zj!lGu4oBd7I8aG;VYDva&ms#;X8`G|q2qD_)WhsfG42j!dBTY>B&&n*df=v88J9@% zBMUU&Df$jIeuVN)oGnqZa$gS?%2Cgaf&4Nff^QXG2*T}g&@fsJ-~yEk6%Zi43Ej%v z6OD)me3xWF!jzi=PWR$LJfl=n5k`?@K@{bscw~}sto0IO(`9s_4V!Pw*F;JRSu~Q& zJR3?>4XF?)KZQRTH3k|LOT|`hl}Munl24t@^_h}gJ2bO_Mgd}6A)+@g_asWn``4Xr zz|c;(u|dWUB@-i#d^l9o3aRvnfixrxkc>i|PDVC-C3jnrDHH=J9{2_>fp3I7fV}gy zTxXTuR8j&{7FL%C?~i06KPO9GX7-*DD)QPC}7O}*ff{Y!MlC?F!a46Ou zsCyZcjAk|nx(Hk%tiN2$e$HgtB5z<<0c^)nOveZQDn5xA5=8thnjFCZGgN`5g~pO{ za*G=^7z9&tlR$Tjgo*Abk`! z5Pi)R!t374@3Kz`%ZyA@Qxly@T+IIySU24g1E7W}Y8eui31-3$4_h5H~M+%E8|+wJLqqCn3dnghXm#e8$(VIm%|)*#p4n-k! zvxJloszHGUao`Xl&D0r6d-4>6f)?_s{*si6K3ltz%4pah_IS=z5(sHAsL)JM-1NH`F-WbqPe2h+}sG$&m!$s_KaUZ{wX+#+Dy0*wU;GJsXsn{M1+1PaZ$%!6ge zGY=Y#2;d(lCc(9DSA#o{>Xdc2M5yxsYW$jfEzv^KaZ!9QVJE48fN2jf7Vz_MljV$BKnuY6Lgya=b92j!JS2^Q zYveeRm5grI|^NCgZGQKsCpV5p!OxJJ0IsF|tfF276j^1f7cWx(0&^~OPWQ|{U$ z5xK_PAZF1NzSjtxGWR$N#Q01o$bg_kx-EKERCu)~^@o(IA`TcjgVTZ$GStdB6+_fm zB)yP)pS_W>%~=ZSB|bX=2nH-7()nO1l5#<(IcdI%$#S)#yDz{b+Dh!kTP)i*;w=-btR52DEA0S&lZD3CmPlbaA;m-Q%O zP$+CfbXZ7qaG140<7 zOM)E6xF8-3wH8bOJStgh3Wp%_KuuDBD!567MIMx%52EoIHEY-eY*Tr|9Il~8;y)k} zW>_;*HA#*hkZpj-z=#6X-x#wh5w;;S;h6(`NGTIUPz&-Xxjree{wL*i=<>VtH{FEP zcxl8?bwn9mVyhVNh60xX8$$QZ`&{`e=O78Bz{xxjF=+e$Ezj@ruww)SV~}HG zG>asVjT69tWDEocmz_8iG)Wx5%xJpra`toX+4p_l_j_-5&x}SGQ;DnMg0fw~25B}) zcvC7>sn{>e7dARKpI>+TMW-Z$&XJm2U0JPmZTcBWE~ z;H2bp-B3Rn+Y&zNEl%}sv)XQD9unBdo~keKWby1(M9QuZb?zJ35@BylvGfh~(CI6d z-*{^VR0w7ham*v;3`&7Wx~Akx(>aOec>lciD$g*_4xC{AGH5VCY(WQNKo~GD>Lsol zgJ7!{iIhX0AozycM*Fv@6O=@$;!=dSqCpW@d;deGaHeU6Cd{FZCFS?v<`LO2y+%8l zP((wO!~!k`3F1@f+tYO9aG;=FP^eS(zlf;UoOTWohT?|BarI&=kNd62ka8~VW5w8m zVKc?q#qvE%#7pO)9=o`o!qHCOGr$hCU@oHsqXp7<=^`!I#bF;;ZoR_I{23J`sXxNU zp!KLYjTO|T`s<*FmVGY7W*tU5fGL*Pv3laQpKEg8wB*OJ#HiWK0_Dp@7Oc;n0G82- zL0aq0cBeHMLYWB6F!c@URj6^D7W93LlVSKAuv{2{8p;z?KZ7h~D_b?OXdBTdiUv7# zjl_E!Vh6t|FiVN`GLtL@AE}5Mr+D`1&bWO4@)EVUi7ftLkh#o6D9_OT&p_>TUtAB< z6;_CWLCjLa@q;2b#RaO$I2kX~l% zku!2#LF18L8wYQXlB*`CBUhsRdHO7$iMJ%rF0G3s3uot_u616!$cDu;=r{^QB7Ig= zWh178mcYEhTmjcmp+Ld18xA2lUiPBhNsc!@l4OJ)-xP;0AC~fXxt0LRGdbm_Z5!j{VZ9VfRqy};RojfGxj-k)a`#Dm~$B34UXCOVaP zty2!5a?B5^CF18Ap1A#AdW=Nn3u7NC6b`}^3#U-r2)YsdgkqHhg~B{2a#03C!!OvN zm5KBgm@)h~Ad>X`GBjXkM6x!)%&eq1Ndd$pANVY7i!4*kRe!8OALs>ZVjoAU48gG?E8} z^AouY{dP1%8XKuse;d@?=cJqnno4o&dyXoBD4ZV z(PwnL0-Lx@v3+>yLMS+ai=w%)oxuj#Lmn#$a7X6;Wxai$ac@5FI?kUY<@@1TCeQ8_ zD}pbW^J>JkKoK?v5U@PYkFsjx8MOW%_JS;N zw9^lC5ex?`T9>=8d^!Wl>r-i##_B`1of?aR>5Hq&NJ-u+zV_gi2S3OE?BbQ+)s()dTrmxcc$-auDr1YN{Eq_bNQsg2C&AAO znpYgg0?*XmaDr3K8F?gKy;ds~<#OtiS1O-kLx^oN46UJFQjet>su1S|cUYxFUPdzu z5vkM;;z#MkDfw5TjVtewYDI8RRwC~Qg~{4kO)Rrk1eYyvTPU?&%Tyy&bg?MT9>nqt z_0lL@_s`E0(qxsZ0A}7*>`ye9OJw7Azc>%joy4CAgU9TrilsJP$|t9v^F(>Xp8&FG zqgH^rbTkT_*mN(k>hpU+>JU~jpU!uxsf!1h_&JKL0zwKs^Gl0iP08GztXgK!g&2u8 zwRXq!%g`-&#b6VlHz2vO8K5)vgcfAt5DaUKkW4GoH{lBz%<2lkgG7ZK%WB@liS|Jx z=yTh11#Bjh5A+L>Wb!rsT=Mi~B>w4F8MR9}XDXpr&R)6y$}1MxwEisXO6Rdb6TGbV zDq7sh7D6>Z3;rqy^d%EKtpV?VdhjBLSgJT2%TL+w@X$*_DMf5`YI)kUdt7p;0@7(| zM5E=Si8CrUrJp?}Q#zQwi;rGU}5uSK~ zv}NkjE*CnLDIE*XSAQ4dVG~P6_{o@QpT+G>T(Dg{zlcQ6?C+ju66euZ?w`H-S|)j} zEwgK8+FVEB!U0i-1ouVYSvjfnaA3SifqB5?Hz{IV!K<ecv!I%eNgNP|Gp;>mHW!!7km8rI_vN-FbNNO9y7_*2;>z_Mf;ialnhypU7TNJ9$chibe1m9 ze<4$fzY>jJWFJJ6{?P2h^j*5^G`P5#bMStT#RjGGLMy=yP20xj4;h*G-(?)pG!(lg z6`825*>Q);sSjYeoqQmADw09CPB&QHt)LPeA9!K$jC@q#8}mWB2s+#0*qBeS&F+ z)`iX&c!_~G5;o18;h?-)Z1#iceKMJvnsU+eQhpmSp+Se3<~KSzng(l1rt%l}MW&0~ zGM}iS1uojIuE?x@w2ow(ONy=WW@Y^Bs!Cf0TcHx*f$Vzh3g5A@HcxoCJF)E zh=Xg|cy6W4rh{Bk|4~Rrm_PQy`j&jCSLgVNgzCe@ct}>$mjpb`hCSqf4!M#{=~TGO z{|qjP3~OfV;_(ga7ugU3Jc1;F?_Ot!Nxunij-BP@Fk- z>E1aHKDGoMD6rUW#sp?=5z8k2doI;wTY(LTnF$xr=V4j-fVw6|Mo2LtP2qX@^ZQJ< zQ%P)-%U%_W3^}V}SxXv>!uRKm`)s0UC7MC1=XM>UwCblYJ4(O|>~ShHyjL{$s42=7 zbW*Z}0>PnSY3>Q6NjzHEbpl+yqqNI>3(#C8&z19z0$Ntw4Jy_tff!*Xf|zEtLeJf^-C06;LjO z={%9(pY>z1(Fpo$AWa1Md{{ISFv_Eb-9nHVTsDlxI9CVnMPwiwc}W*?b*3q^kQ|9b zFVBj}i+jcu*7a<17-T<_j4@=@EUWX+YJ;e|S;~MDS>C`y37A%|X0;1qhc*+OBP`nI zumTzS@`8h~7d#ThdC3N?eeH5t?o9U@lxy_ymU_h5HfnmlX&i#-<4J}^hv2r=K`E=q zwp4#z)y1lf3Kq)Om@!Qm-!1qBSjZ4|4dVxfih%p5{$!f^#n81>Iv%w{!9M}D4b87q z#8-pyCm35MlaY(~Yp+V=sm!N;F?ELDc79olo~ad*^%gCF(n#?bT#oQ%RL7;WxPI3ODI9^f=K5 zph{R-kK#fcORb^{MQo>|>0n;RX(3z{a}@;QdO zqY%$uST*c(`zf$Bw>~6ko!z$2XA)o71GN-YJ(WIEPNy5N6WCV1+yT-R@o=!dr{zrN z3Q5T%*PT_U(I4&wj$^f5;Nhy1v1!9pHTLQ&q)xR~7ihDFnHdWYJxg|~D8N~*oKZ>S z6AwT(SC{eEtZswj@kvb8%vNC}tW*F(si6Gr4v-TeP7PbHVOn2V40IYZ$yoM5rV?YW zm?}(2JK0LfWna5(KA2T}5NHFg3(6t?D1=o)AWmGlV|rxAO7yc9J1kX4Pe_=d8|5~` zZ|Vu%&P)=IEO_A|B_z(gFg90#P|%R%W#--(*T@^@00jjZORf$Pmb8PT1dhQ+I8cN~ zLTMv3fZ~hSJ!Q%J%D`BH$~}`d6+T}FLN|)m zLW{f&7gPXA?x)X~Pg|K%8+#;)p6TEfIf7uZm+z(8o-Q^Anx*2PL9?Gck|VBEG4f7! zsOM_Lm(az#<~ZQCl9My8YOv2$uM;1)0SfU%%*pqVfCV{a1F8AfI`RA5v0-@t3o8i) z(qaHmOmVstOaRaB$1h*K#GB}q;q+PYA#{+|gmQPezjVLS z&Ici?b0q70q!*!V^+VxGPK_TU zxMT^5$cO8Lj@aj&i&#Mv`&D#kP*)F=Q~ zPH>Kfzh(W5!)bsLSe|8rR!Fl}TRUa}R8dkLnF#m%^5HRq1Ph!rX=wac*nYH(&HC~PJb0=k4s2lE*aGvMS?j+gf$gU^8H zq|5d<_|i{=NvdR2@ZE^wEk@`FTslky)ZV4meY>i#32@gvT`;CxSShVUg6}JkOm1S$ zdl5;o|G`7?GAjtO>PTRrMk@dgNV|fjhc5a&eUzVg+Fe=zJ$Dx>%`@}Q=DG%bHvYc| zD8T9JF8AHV6vcl_=E6LZmSEKkbpboyPQ-3{?v($DRL0APln6snf$G^+zbTK(qvd-A zDNFO0&njscYPkl=vxfNIz`y!rim$*968m9_Z*babw0jU*h)aFZuC~FW6T)RFBkW@A zG8HCKDm=BaFHPCD4K{$GO37qm7k(`xw?D(8Q?*#xG}JFSa6I`F>7CdvJSNNgB$y)D zPjOV6%%#Ekky`75w6A87JB-KTTA=KHQvi?^#$W}^1rr8WVnC!;$2IEl?lwWJLP0z{ z1(R(M+98hrlY9~A2-Zjq{P-H9Bh)LGwE;q>qegA%QkPgPoHF-Zh)+pJCgw+bONk#+ zj4(OBOmO39$AMn86_UHxgf3LrK{Szrm4`Y_!4FP+`Y3<)>7$IR?H`2RRoU3+&r9d_ za!iX67;z0e&_o=Rfq+8>oU)A)!>JSwy@4PPJ0R4VPURm}$c0x5d$iC}B@!IbJwpso zcEp3gZa3UW*#)Zs5p|?odJ9u1cLpzuvp`0LFS&!bX-hO}PzqOK0kV{8(QlITG7&zv zLHNeLWybCyZ}Ot;Zcd~@$H6uO?i&NQR6&OreJx!cENLgT$-m$SrIXUOmA-UY7%jl6 zv8e(-sCo|y7vxJEX<{GP&_ZiP@9ba+mhgJt>8%jHF#OuWOuG_-E_rnd z$o-m0BDOI9gUBmR`dWJu($(Cvh^x>=i2L5IlR9pL+T%UrjODyu5fNZhlR8 zn*u~5EcS-Um}(n6go?8zT-z?E`d% zINHmjQ&ORZnLRv!WI>qwm4bD4yBa++?1_~hyoOq)sKN4(&jP*>d|rv3={5s)R&8Ns z8o$YVTCy6uC7_?|%R>kl;Em|yE-t4JY<$7{P)$iIrK|N0MK+KvdV1OhsIu1TY2YMR za)Xf-5~&i>0qTogD1T~A^;FtRO8-jciP$O*TjZ`s z)P;Bz5n_p`lz|pgUDy(ph7*kw>30cDtgUNyQ=2gI#%;hFTk#94_7Me9lq zk#m4_5HN#`Fbd95yxGFxVBtcXN8&kzw$7Y;KEyK2Ok#YZlMIQUE3GJRF%}v@onFRqI>(3iTpRo;S{SmQg53 z*^JQyN1e>MJ+&u;iD0Z%3+A_%v8f3{ikDkT`K(AFOy^wEFG8z=mf{px8nu;x>B1*l zS`jkzo~bCxjIFpvNf8}h&4vn5Xn|9R146K@r~o0lTfAV{1&V{+$$X*(_PaXGvJ;&o z1yX4mpfPwOy&|(Nfxv4lR|WCJ0H%wFs%wh!29_}GVdkoeA%7X>^kKgh3YnwdP^q&X zv?$K71?k!QU|nn$sHECK3UMe-48zL6BblArApufgn8>PSP2Kau3YhR>2-~Itk4-_E z%xr)@m00ewYN!bDPnW4MhJ7r>;Z-yihc>76D!uBn?(!Lcmm+iImX~*Nze&r9$CSn4C#8lWGJ}SciIJm>o&_#H z7Fhw_gWeDVx><-d+jOZLERu3uetpJ*0_(wRh_}qmv1rU{wdbgNiU#kxem$%RP~SBC zOh=kifj2!2tv~4=3_2xWjh#0IIOUt10DKH*8RDZb&Q%DDHkGbnv%fl!3smU&@ll7$dz`4KR$p8gq?E>MFQjZEt zMmy_8K_x1dqu8-FA8Rep7PvsY0aKE`b0*eN>j>W}!aNsaWm(+1d@K*QVI<}5kf5v^ zkB{ZsoNb1rO=3lzs_Y6f7QciUSe}NM{49$Y~hPa%qWy)kqgmWK5#o zz_YlC=qV~a+(MtxK+y}6^|*sv6@~^nRDxTQtQ}}njJKobDHo#K6!9+5&Y)HZo(PS? zN9fQw0{c8c0MJ8=Uy=cY!lpQf1SCnKbmydD>H#(Pp-QaEl>~i~He$aI9NOSwAx^E- zLPM?Q<_1&X#z($>F+)`r@&P^_K~Y22wg$B*Iz2pmMqEp6t)j~6vmL@ff0H{CiQq3P zF*&{P!s-yMk6kHtHv`;!t7*$wALI46R;qjfTGIlzYpEv+){@4Gsr)AZEl#cY61?P1 zw#}CUbFiTKlTr-}PTB8OEQ{w?t#ph~U0Aelx)S!YSNt=}&x5hWD9%S2)eMhbNfks( zvMF!@*d;iisBFflg^hm4>Yig`4JpvL6ldI{Xb9LS)rwzaB0zy=`8g*{R(% z2dGMyEl^)g;4QGhW}aS22xjK?*%&4cT>>|e^kXyFx;v=w9o41`6X1lfm{e<8E~F^d z@v7pUcD(TJU7_4U-=xLmO45-sHCo*BpiqOlOdY zXbP0ZR6rWkzBu=V9^a%pm`M+V3XfvB_N*tVKRuV$D47vA`<18|W7@BFv~nNBL&8p& z35UUax8E92dO~qh=OyB1;O4Qwme3{h-qXT>`Xx+<&wo*H%~fPvvjo~L8H@ZtR`sam z&Tq5oZwlbGE4h_Uy0=+72GtBk!_s>=Qi1hpoDP`>)RHx7@`W_GqErl#19aPq!HTj@ zGe8FET5K1;4V|D?VKD%ZS#pLrxHqB^g)aP&5ter)T*#m^YxIcsU}KlFe@vZOM%xA% zf?DCc$>b?;UcqLDWktv*a!WWW3}!RNV98>KuCA41Shc&3^$Ir?&#|Uq30@3&laiNj zq}LYQeuFlukYa+POhsvt!c#5N5Iq{yIi0zege}nd4dx5UNUyKxF$=&5#)CIZB8gXa zMD2QX{l5}6)R?f0Fm$gst9{y;&kNzDdPJCe*skg`azL6ZV63f;z{8`&qv4VlYGDfR z*FbF|^h<0*E1-c=NPa28oI7r<+Jcx5VTr zGCvvOrcV!$_X>JwjxzulOof({XW~w2EX;{T?xfY!(#RcX6*6FvTIW>y%kIT4pS&7` z9)U7#HPs0%Qs{J54`JaBNNsb4=at4SY+VL7>qdXT3%22JXjXiqr*UfZ^{_P>&R*c~ ziRI_GF?^spaEDH3y+}OU6vX(54U)hrUYZQZN=hor>6Six*bueFDmU3#HVOi^%RM&j zP#7~fB{6UKlRbs20vC;eatm)NS+w77@(VZ5x{@sYNe4MgkC|tma*U2O1T0vE0jL=( zDl0Y9;oU(9cLrMFN}lG+7oVQX=paDiYGeaS97L~1;gq+!iiALb$gXIy=6AG0j8WQ% zIM`+d(&UIRoq}pMxV)Clp|Ug&%!D!oVyxI8zi}U(zciQxvtVUgA|z zJ}eZ*7A#M-A5d+FL*|vnc!?&0&hArk0TGm9wPUv;=voD4_EcZqvKUdRQq2ud#pjBL z>iNl)fTGpol>Rq{HsjA>+sQ0 zH>vY})fkxJhk2moR2w3Np5j0$59))fsM0?}Q79DQQ&Yrb*zNT`%Waf$GpQ->Hc>iR z@8NDh-<|yA1uAjCEPW_yud<^u19k=xXvuKSU&6wHIPA?zXDSzG-I_^O*bS}(hsUrZ z;;s;GamMWLl|{!;Xh>0@oT{hR>Q&m+27V}Yz5djz)ERag-R{^Nc0wUTA>xdsT7@7) zV_De+=W0Vt6C!)rsLxR?PT}07`y@W`+XriSyKH5OVgONNBkb zQ5jvxDqmp1`HyO<_;To(y$iYO{RgJSI?=H2;7W8er}ht2NcM%{uVEo5O6m1fb({oz zw|P|`1%1%e({p+M>9Y(xTZ_vw6G8fFTbTyuus;`6PYa#AZ9`YAU$SF~T9Kj#*vjj! zOZ7#N#~zJ?kd!21UAJC|nD1SwqW`ou$Bh7i!mJ>&HXw@ia#Sg)Q!|M11Ocd3lU7lx z)az=`UAln?DmJ}J>5&4Vw&V%sp!_v|Bz9^jBh@NQ{0%#)bfz88jd0(d6bM2&8l<_D z^cegkoOKl_(RWxhz=@b=8SnbrdlYei#yo#}L&C94x(QXT2c1%BI5oAUM&wG6mg7za zW#qv1aQ=x{iXkLw^+^fZK9>O%@|2OR@JVrNz{zrTv!UYi;Q|yID5F%3wUv}Xg$|Kk zC**>iNKe*V<0ZQ%Xj)gam=w>B3i)Q(7HhyeDF@m>hEUZB*C>6&e4PYbUxWOFOhO@x zhApG$XV3B(Rv=p-Eo8(i(T9ACwuB9ag*md;&9<)GTMpy^Z^a`LfNiIy&q38sRVWDg zWg&G!ZqQ9-HhG^|dLbV%bW##!tFcJAl|ysPGi5S}!z1iYe)QunzWiM;-o5Z$AA9M= zk9_pIUw-lBmtT7Mr5C>Q6CZo=<&VAi;^~DS_{a+{z4);g{N<$={pE#^zWBn6FTM2g zCtiBN-+c7NmtOwJOE3C^k9_py7fvtzr!Rch3m<>+rH_8pSNPAz{N=@$UwY{yA9?BJ zm;FmW!aw^NfAI3%$N%t0{d?d4v5$W2!yof?FTD8iPkj8NzWn1KJH7lzKKins^5V-M z^^Gr{UiyZYPcQwU@A}B;<AU>+kG%ZylaKJy$G^uXaTzbX;3{7D zN#`_B=xofbT7_0myPvaHA)|;dy0f&q`UHOk87umCG;1 zG)FDuRDj(e?qJs7IGme_5jbAj+8|1fNlEenm3BYzPYNtBi9dbtVr?bg)JYMfQrVz*rFR`cCvGu!NEtMz_&oF12Nu2%fZwwu{{z7PMuJsj6_zj?b}P1d{BX0e#e z9&bjw`FgQG4p;M0Yr5X_wui}JH(9Q>yV=~8ERVyR`C_sT%AklPh3xrl<9z;%j1c@u zWj8rk4N9%dAE(_(kXg2H&*91RkR?F~S3y`ud)bIyQ8zQwxgzVSS&|!zSKWd9Y)D5J z(Gmmx%4WIWvK?Sk8d0WM#%oaXfPR$ zrkmmId_A0AuV;(RVm7;;U2i6jr>n)#-QKNto84kL8}F`XtNCWf&~CZ+MazDFvDxew z$Jt=H9J8OB>{r9lYTDjkZ?E_J>GWnh->w$Z@pLhJ+9WY@7HY?i|grbF@0-2-cH_HFRsV4 z(X{X94c61aeCfG+MaF~ic)A+i%(m0Te(3a=oHZG#Bzo*#cmNpn84@Xo;?-`zPP8tu ze4rqe%)M-IVufJagj855U=CxAMcW;oDUg7+W;Jx0VARprBB*tOK(a|PDUz-*$uJ^U3tE zozLdW>Dpo2>~{O(VYggvhWo>Oxx8L&4wJ=dvDi!p+v(DASue-??RdFf%pWgCS{{#^!(zYeuNRZ~>aR^F+v#|+p6pNKd&}W;wcKs?%bVeJ z;#tn;>(OB`d%VyT%S^Jqu1F;(?Sv6gvksh&)LU8%JIu|nvmo`+^71T0lNzr}_=4&r zA4hIrV^r7u2FyjhMs*0#-U_?VP&c7E7eVf(WyWZ!eE87fz>yv4gbl)V_V!U#-o|YxL$8pv)O1acFv~r#ms?RZMUm~|1G!E)o8X@ zZzr4GWVG8Xj??AsaK0YTm*eT$gW9Y&`@Xxqd1JMD^Lo1)doGKW;JjRH*Ng3Py*f;1 z3kP++a?lqKoynW+SWMjsy3^(UcDtU&%fn`K^ZIVP-iZ>6 zq7s#H#frSXrs`f%}PrcjjxwkG% z$BY8x*HY`0|70;$S6KyawT^-^4R}`v#*vZDpm@!j98?hmIlq6tS*;d-awGR`-7i6r zM}q%t-S^dayWTF=>&}PYqa(lg?puG80r6>-pFBKXqJhXNxJ%QW3z%Sa}~G zj)DqE@DZ=j-yq!|Iw*{Hy0L}j2;Y^@2RhibOB!^Gm+U+sd{U;s+316 zBLiR11}w=FxQaIiKs~@!Uz-tRp^ew{GungaN+0y_EPz1Y2>gR_5$ajabdxZqCudr7 z7fb83v;&HKpTeX9@`1LcsJ2O9po8-&P#7g4-2~-o8>gv09c03SHtSGLL|>MKCSAtx z0c!ZvN*S`AZm&1IS670pY&HqcXRH$13}$YdJoluMSuAF(R@Snv$tyepV zdb^VnIm(V4v%S*isKlBs)|&<2SU-2Y8&4k1_lMbR+i#3TX3xxNJ{)%Y&1$_I`t;tO z<@RQ`QDoh~bL^u@k!5NZPU6V z(5qFa?PSKn$h*(nb3z%|eaD zz9!Get`|09O_Iz6u^?dkLIt{qEohJL3hI^S3J^U1Lb+=LNjXf?1ft+*Z@i6$l9uo^ z(ZYouTk2p!hQX5m(d}}6*hRK`CvQC)Pgd)RdT=Ub&c~aBb2yr)T;2WIY}}vCR@2pX zHV|Ij%XK)hOZL3m5MUQ7*hjaM!F<1*g-3bV9Ok>Dv$@?%gx`JGP3E5E@>X(Gn>wPK z4ij|SS9*{J%f9| zWzt`8Nuc&sW!PnGTTUn1p*4`6NVXTQV8z;mb{j)LM@|Wim|>8=Dpdn|{jBu)OHV^A zDivXKyTbxI-m8{_)owAa?@70|+QB&EhEC0x5w%G4N)>*ITAsw#5bDV7E!v)jh ziB#wTGBerD6^*m;Vtmkf^c6ggkof0DuO&b?c%e*sbTd=4hFo_o-D)nD3Z#{T;!k&z z$^N*V@06zd(8)MG$K`T=*lJMr`?R-Ww>>U)hyCPmqtcSKC;R1iHyEr3D*<*Ff`enX zoA(dL?szv|$-IuW683tt*!x|w?QFMmAs*%A$fOoFK-nLW!G;&O*4*use*tgBQ8oKZ z3R`K8I?uxFy}c@T8k zow34m=dx5EVXA8gS&E6+m}q%!Y=Ikgm3dGaA($3eJb?eug~vh$?J{v)cPj%C7ZdwR)&lUahA4$>2!f-O$rQFD?Rb8^Z*Q zNbRH@HeFzEY7Pa2(gY<9_EY=AG%I!|Yo&b3icqqSOeVEVM$Y&^oLx zHa@vsd9A1J*I+jrE~ba^^~AlAuM`k^5^XxKC=V7qpt4xbhPoHoPJ5`t+^ZYsi#Kn^ z+v#Mz9q*3Uqup}1Ts+zEUFpvfUjd zf}7oG_2ZLaD71QwWW$2HIzr83h7iQmgUU4g&D77Gq@fxh9G-kuPO7c%#qc5O%0Pz< zB|=!UlWNr@wpo`X9L0qY&^+Z&)Kl@k_aw}16SeW!+!ayREL!dI+_Ai%|ImQh+k`oHrlZZql{=!j4ritSsUd`C6a+p!2gLF zjIia2YhiqwC|@B%5o6$|NkOhu{?u}DoF6{Eo=t~~-gr1xTF#aWHNJGC`y6JrrW$Gp3x9lFku39H zFZ~Im(NF}z?J$Pd9NY^2ZsaN%O4yU8BUN5H;sdcp6&H9Vc@wi+adQ+8*C>R3YZw(I4@ z?||7k)YEbAu;{Nh^TT3sn6GXFXt5rx^sn1>PySx^$2WT~jej1F)lCxWQb9hSP6x|v zD@<7tfML+M^1w{p7f}mi33m${!r-QqG(`=&U$BZU49D>y{l>`@2X zTF<^dU@wX|z=%YnpVC%xAHaM>vF#B!Sx^ss?pQ*F!elU!;mMlM1!+VJhxVQfYqG?E zajZH-eE1*nD`?aw1}21Fpb3!kFhip-;TVTe1{JhYfc7}W+7iMBM)KvGX%0_^CmLMZ z!bVoZfVT64kHh=?jkEdeH199R{h^9GHI=TmHym-weBnfLFsqvkp@u`#gm_#*~{@ZK7!ffhGIMVG&2V%iU|s zpXR=%!IcYyaXmOe4SUgAa{W0w$#ywoVxA)kcXes?r5ffVW?}rebSC}e)ic5TXPA#k zkKG7LqO8ee!Z2uWS16t%+9zS^<0^+o-p?W`a){L^btpFwgX{2Lqi_IYycz`Y!^V+M z7(r;~*-dNK=j zgrK59`?G7vth=QtV+$q&$H~cg5m%dQv;DG^F4NS zmBOgnG-9mU6^*B!VLl&!+K>#o1Mbk4Ra2NTVrPh&@b@zMS={)xQ!Ec4H3W^Fv%nj1 z7GvtMK+riN$)&b(qpq5aJIW`2b}QsA_Wlc{7g?9DC}`H3!@ALCuD z`9m7PP6M7&_&t@r6U%}z@Kn=}OH*!`KsBo$=BaBkA277wB2_tMejG(~z?Fjz@r6kS zQV87Ej(N)}0J9K|3JjR+T^n_zYE2Yrml5M618DU|g37w2V`$?a5_($Izv-93Lj zY0d*SKr0%DtE$Bbqh%w@Xe1Mfdeo^}tcyF3=_WTM(;y6OR#4Y4kTbYTRg1|%JqV;% zO;oC%8n14q`{{an&>X;S#y9JcPEKLrHm`OMR|9D4crn=O?N<+d;q7uUT*_kWF+fKx z1YQWxIH-NId$<_wLEci{BXf^!f6_k&0BJFimh z2MmqE1`fyCux621wa!oFZ-e?2i$6SjxPz5$k4FuHJO+&$ZnrX$M+<9L-;e7xL#*@ixz1{&5AHjT&2A4ZYc{bbu;6V>zV6qnq zz!U57U%&3|4}b@)?{fA?t-C&gaS!{~=jCQCVbxOett%skhyZG8Qs-*~lkMr!a_I`^ z;)I4G?0Vcw8~lgu7MdJ^YMqZV#m*q&5aq3RC;3o)Myl-bLmpQizP|# ztPk;fuJox=av!(3EwUcK6e@HX(led1J!Ai_U1<#as-K`-VJ|^@8}?~YS>XnXB%5go z>9Em^m3x*vyYwN$f*ROGJ5sgeqsBor9ZxuqpVXBn@r{zLBYZ2L{?y$E^Qc0oAG zNsagIW_x>dN?_{x%B}NsfC1?^C*wCB|MGaMq6}wJmk0%2@2@oz4#?PSv( z!P`db{b;z_9yX7c$|S9!#?$eZMvtDLXKC`ezh0X@kH5#U2IeV(R+GhSsB=9Y$NPuN zS!hX)T_DYXOW|MmTN1yfosv`Gf$3Sh|Le!G2)In*%k2#(WD z=5c}2Zy~9`1>0oTHlXFhj7&nq4;2X6@SYmg+FGK}wm{QCTDrubO${sNi=rHKm`Ksc2xSg%t>Ret&`pDpWIRIH9r)-y50I9m424DnhfV!;>{R}9r{ zJZgBYvbgAfMW0D7D^Oz1(i}lG*n}VvZ?=4;mp~4yl{w_)YaKh=#5X(T;3L>K(DqGu z+*cqZO-|(pO^0Ud>GjR_T4Gyzde9Yk*?xNSXt&?)x00R~{Wws;YCtyY$$X>S1;mq#SNI`dl8L(BM&ev~@huh_3H(lHgZ$goEEpP5_cJtkQb^ZF`Xw>%5Hy|yD-IG1+ zP%|={9gO5|Ze7TBb3K(pFax2XS;Kq@irAj+yxk7o?O_L5Thd69#a8*G9G1TnI)*fA zM!nt*RCf&vjTpV@{j07=l8B)dqMI~J-Q=L33qU)WIl4;8fmIdh?o|2a=gy`4>O~6b zkpUbaiA=7g5n?Qp58MK8zzDM!Os?z+c1o(!u)}S47d{wpDJn}BX{ynj+5<7V>irRA z&TObvI=yxykp{g7Oi#E`_;8pLV?Dmr{`+>@tpdj2(eaU;j^fs%>kxFqF#3)4>Ke}O z#owM5KQtfw%3=UVT?{r_NMEq>58~iKBRHN7rt=X1b!E7%+?}2le|k9?tOD3GYXJGi z-W$ct;gOEiX>z9gY^M;&1F?nQtOurT+x2j^Y>(EXDf-ArdfgvZdsEJ~$GCs|`t5Es zJ(|2M*Ulj97l&m46!fMoA?u#Js(XqxBYIluvt*1kK}5Mz>5sCCK^e6V z_q;FT->Lvz0%hj_o@SUpDf8dF z-d*3|i>#K9fT|jQ&A55*Zsu7UcY)s*p+s6v_2=Ww&D__{HnWL*=}^skPzF_I02JnG zR}IUwKcDRWl!KJ!;sgx)Zf7;^C|Q7V7J`s~op8$rl_Y;|Mo+X;$5sBg#c~TN zU16&y=sfR}XepGem;=_cy;Lj4%Bcsvo;B?fjsFqrZfwIIIv*_}cB~foa}|3%M$tjS zhm8oiV*AFZ=$0R?Ka%@^J>VP6YU99JZQ&f!boQ*}Sfd`Pme6|L{a4*n|hWJWUh^L!o?Us5Tjm2R*PX zW`QyETf5I39aO1tadU*-`#tN)+K?J^WEF@Ij{?(RyBW@RJwD+e(_kv47e`-YAc5B$ z=(XY!j=DPs@RYnP^wTE3r$Gse-q~RfYD%vKuY+h{y#-~#-J&>1IJ|wO90t)gZSxdM zqi%ygVpG4`u<`c)dzSVU5Wv*MNIIRM_=s*|$qVr7S#}zhE*c1$VU^8JTD}5Jlkm1P4@}=wuJy$1!n+<~q3{CrKan)}y70v$8dN;aWe*0zx zfE@}}@RR_)uD*Y6w7)ZnLmbOe|pz4xesc>#}?(MedbUU^>rg-rp`({n5e1O;NNlCIcJJW?c_+cT@wL zNiO@|FRur5>J4dqhLz{13ns(KQh_y`A0EP_nvAT5fYMV6U3 zyOdZ=^QUe83wSox3M$`9cjUQz*=*4jgjRT)+T{-Cgla7sD4Ad=rB%0MEM0A1HL01~ zs>RT?Es-_}vFPFSVHP1Xt8f$Nxk`V`laf*hUa!5&5VA2x?4>~bu4+ZThf$9f&{59( zFf7)TMD986^@XT)SQ(SiYN34;1A(XDyqV4tI$(H@{DTd&+Kz_G%ekl*aJIni+Q_bJ z6obR{!>N2V96=h;2iEXd{|HmKg|i`tEpKo16cC^5;nvaG3JEF}crR?+Bk?+g$2#cG z6ud)>$%k(U7dydUn=%6*Ocvf2#hHgTJ8VqEdNS#g53Py9_AwcAA=BGYAViu(2Y0Jx z2#=UiAaltxLkb{N92(0IH4UUWWnbOX;63rmq!0r^C(;HsOZV!mrNSDjf0)=hHo0u2 z_-C6-#7kozdr4ik%nHAm2U(y6X1n3`<^$pUB4R+r6r7ay?Q zp(APe1r-V3!vGWFle@BR4ZNpJ!blxq#M7%bsVUh`^I`_xI3>U=(2rz7`hlIdQ|Vi* zEtgZDT%VTTAb?KR4+F?P!wK0e#|RjBkQlF_vv>BUyA?8*M%?LxtzuNJAvcST(nogn zMV{92dN&-0B6xC~_s0X(i`mKib{S3)vgY++I32Hsv;E;<$aciOIvyP?q^`Zu$WOs- z0Ia=%QP*sX=&(c-xgCyBXd(E=Fr}O#+o^v56DXHQU$Q>Tn#ODnEZ9Hr$4-ksKS68> z7xHKX1IK#QfZ2or;HeIDD7g&0By8xZ{%Bjk@KW3)>jn?^OpV%MjY!lLy)Fq*xrv<; z%{=gDODAp;0$mxF%YC-8L5IQ0WW6?o%al4z5^&F}Q#L5XrTKPQX9-KkCY328&PZ6K z05aH1WZ{&m4or}3$)o0b$UtNBuB^==>`ZKwe6)IO1{Wk)0dy~@b_MGzUt)DD+Ak(d zSkGgLAsq_c7V-Wc7ByFk@12ac*K>&3^tNvTHC~_>c;{s=J^lK)>rW<&?bp}$B{!Yn z^>%c;?XPzOEg^Cp1OWZ+_OR-04nWwUY4ZUaIS{Q(rJ#GTy~BE8vauK&xj5-q1GCNT zdcJameE(whhnD-(>NLwtz&T3MgV=lcAC87=T3YavQ@EV&u)IV8ziasV8dNpukH)Vr zz{aX%pBGb8*@UvNnjLS4-3b3nLoE_nVLuM)RW9qaEiZVEr{af|JH*zS=|=ym(TJ5k zWHpk{)PJdLv__ddgKV4Gm#$u|wJgNYx=fM1}LON~$4Ukl(0-e{^+L~$%Bemf<9#dq+UW6Tzm61=%Tl?8}P8Kra*ig_(S>0$B zjQ~&UlmbXSA+{M!D^(0D*GK8}`dWq2f2;|Z1vF<4PYtlqdh*be%A{m52CiQpMx&lV zqM5a#_|atES5l23>!aQEF&ypBIFU$sUtfH~>S8LTDuNf2iTB3~g1cah9bOW6g6cKY zUZ$OMgi9&-_mW)Bmv|JU#@=K^ma=py{gT*nNQcbv4msl@VP;%A>8uiBlC_W{ku)~C(Lo;slX7facd?64eNqZrxBNmr6~ z^s|5VGmn2yYV9x7(u$0SdZP;}kHEO@&!_DPRlJ*%}FJ2v_&q z)S!MG#6T@N9f%Bz(c(5RtCg&yWB4rtEDh*2h=p9e0SD2`>^%^7<0^Jp;N4!NQQfR@IkF*i zH5oLg1M5c8lzwqWwce3{4%Qj!9k|k>B6FHqq zIhxqpr!DlgSll2Bg}-<(c&m=p0s;h# zNe}J65OuG+6hlmnQ62=6gM4t?D&m7 z2(@UwTOS_De)ET$*&{<2bh5dvlj#9!J6(@^v$s@S0q#{HjW_sQzcRsJf8?{twhrZ! zE71)L@{7+-(fCc@6V}OXQHpYvc8`orHrKj34`dGTCqE4O6{TKys+?$XRTYw9JCSs{ zb3CeEgvEJ_BvZSP_)^obcu$0+(Y1HSH#Kai*XtM{RFIszXY`PtdwMP}5-nu8%3z`> zu4_CxjjM9ASLZ;0Z>6O6QMkv2-MAz#R6%k7H>OuG&^9HQ2qPdX;XPM&h&cv{~N z(?V3B$u*|I&hbObYwOp7fRl3E%ygiEG~MmZ6rY_j z@-z-@sFigx%WnmhkB6^IrBi`e^SRwS%C=HgM&4Mlrs1I80Qs*T&w6;$AVxesoKBOn z{=-98p*4Nd-HvfgfW}}v#QV;2{cF=&{fvo90@*IApC*E5fUN9*j?nxlq|KRFU$Pz60EDVmne$#pZeWu%wl@3XHlOOsKYQVm8;mvjil=tXg&o# zj2=sj^dZ!`SdtW8svy^={rnf-|J3K-`O>?e z`@(y^^WEQg`|tmjFZt4MeevD!tzY=!7rx{Nzx&P?!Y}y37ryil-+SkCzjb=|kN<vO;P{^{NS>`SiWOK<K|2Wz9|nGdp2b9wfg@(P(b~z@QYwR!4aY z(01P)BwwW=Ej$}{{YOuqWHx@v{d`Op&p$gg9+HCuH~=K9ca;k*5+SG{LaalU$)xg^ z3FbkRK@tO&OZJ!wdmd{PDB08nq7r>2VI^NV6~D_HAnCK({q$?03KX+1p3g zzH@hcc-Y)Ne)O5wZ{K+14<6n<`qqcH`~B_uxOqH%^!V}d@YmnEet3Lid;6=u{P5xH zkKTCwtze(AF}H=o@+eDiqx)!qJ=Zr*z9_1E9{ z%;Ps+KkN+A9z6_~akHpVE{v16OvVHviedUoOb?70I%yRTE!{F7y1Gn8cw*WZir*`? zbaW0#o-76-SDRP~+X@UyS``X(DVox8%$GjhF%w9JUXX0gx0Vt#kEI|#@%(bvRfZm` zR<)Y51Jp6t@+uLNE+=S2YlAXEZV=+iXL>rt$W{Ec8e6K1Y)>F(8O!r`fY1k<3;hxI z0LXbI6XY}~bLlF(6tWOpQiW|g-sXZA%Mj&<3;i16{s|$n4kFtsCa;Ph?enx9VD8%};qW|Pd6!De3t%4E( zjCgLH3TCgy>9QE1MCw+A3&Mryyz1pZLZs*w5)j5YDM`diI|oJ(K?sAsPbM9~TQ-xR z!Emo+nYnO9d?$9Mf%KtC?iqK*>|iOFa+Oh|+(SH2btV(!AnMbBHOc&>ue61}6c{f* ztzn<(IOiJ0WV?{U>QMhUfQd#mMUyy|GUlvT`D(PuZ4y{6P$odG`p0_Ivii&_A2dgAyS-4@PzT(Lg29chDT)gl#j3^o`5NnB&ktW zFj1}W?jYrASAsyaVsb>lii~Yx=mS_iOc#Q!UkXSank)lDQ+4cXLP>gdn>9t6%c=!? zPu;K(+_1Qs&7K$H84o4N9hu4tI2H0n!HND~7$(5EsRB`Ppvb{=G_Yp`N!`ED7Ic7Q zDXqAVn6~bLXZPoV#Az;jk*g(sq1-L>o4nkDTZ6A^qCVo|eox1OswCB%uh;H%X4=Li6i!*Pu53n9!Xk$p4BYna2I7|0)j*a)nKHUNm`M{bAj$c=ZUpnsJ!FT zL@{Bf4Kynw)8jYuHZp4k*;yhR1P=s=ps;mrR1j9b$s3c6ynp6J;deym75%-{M6}0Y zgHtmg&jz^_UJ#fy`AZTD!OJU#DT7Ku%WISidPW1H1y!0d$p*7a9dZlu?XIg7%&GE? zkwUzjKuM)(a}hJVs9d@d!##{tZ(uqR!@yD$81j}eB}x~U)hbtE(ug^0P}ZXgSls3y zR~4t z>mPhdhm}Bu3@)(k!JOhkvok5!kbDk@<7o^N7iC|!=bjGMXrDeS`B;TD0VhiRQ z3R`2(URnuC7AzRDU>7tywR*3Jwa}#CSvU_1Y1Ix_6{RgNCxtkZ9g`d}lQR!#R%{6? z3FdcL`IuYTD#IJ^rMnMXz#O8X;V+a}UAc!I_Mvb|A9SlpD`UCHDe<9X=0WU~{pkyl z(%~k$ZVpjI&jqc-ZQPp=f-+6Ni#f)wP)SE{TrBe2t~nmoz^f!s0FcE&iL28O;fNZg zD@@YC(WIMims%K)xx!^o(F|AO0aR>LpsE#8beFk$Ure>~F%2_iwy=C^+9yaT@U%krq*?zadz zQQs!Kn9FxTeeFVN(j}!NE}#{sM@9R$FhGKr)mGiK1eE*SvrMFd4sKApOG1Bc1fkIs;l?;W=a7zKL3h?7liSvA zq`(8Nm)BRa7GXVCH~R@-ByGInG$Aol4wA$OOnU+F%lrVia{+A(q%6Y9nuTgdPP1gg zOp48siFf?UCb$wB%w#dN!)PmMr77(_pxo(hS%rY|2O;%K+zeaAf%Q!i3$79ZX)wM* z_|_!o;J_cX(a1`S{AfLSCXGHmSv)0p@YUzAVF%W z0bXQ?LFuJzIz=0rjG}7{qSU0$XwMPTEB^5yARWo~ESyK_y{YN5XZQ3bKyJTAYA)eF zs+F+HwU}W=w%UW*O{jPxOi`sNWLhai<+6nanu5)8a4XL}%lKXV(QO!4^Rf8H5ED20d*P*Q&efi=v%srcH371Q!m* zO`eEMPm%E@7iIsimS~P6F{O<6K_--GI-Dy_s>AHs2WMfN1{pz$=t)sQGv{%iOunUL zUsR@DPboNz`LNl7l?leDn-d6uy^a!y*gwPXY(8=()IE{4j|byBcM6a3n@p0*xl{SW zb-x(T!I0l?%Zjm_7?9GQVOno`-+1_H`v*;xJNAgT523@ukxg z^nAkZc@=GreV;VoE1auf>dEHW%pNTYk| zWY9Y9OH%j4u7BtU!%~y&8jueIoT4 z)SY7f6{Q5!twP%*E>UUI1MM`xAOUeAaD6I$qc?)lw|WIJ(;Tm1Jzw$1_theOkjtQZ zMwOoiT@aCDtW-G1tMv+8MG|ZzW$dsiCN`^U)P5019Hf86!=w2`)1gGnIjjc;?qAoh z7Oqud`n<55oNcDnnw92v_$U-mlLa6&FVT~ni6avnb5ui|D+pMV%#jyNIEt>M;!5Za zwyF7e?_G0<*+Fj2s%1IUHT-z%;*z>lX%m7*;GcWufn8}wLv^WPyR0h+v7H3Od+|#z z)syA{INA_SqZd(dnq=F~6~^`UAXVwKf+W4UZ;yeT39!Saa50+*i$>LFQ0z0l`h!%4 zm3p?55mwvHo}6Vcs&dYnU*lCLupkrh6lF$eeK@)UNP(N1;UL-=BrPdr$=s?l;g5kn zX$T7nxN>5>njP~s##{(_!7x?dQ-{qfO#1VyYCQ5$g+zfAmf%K(G8s!V;+0n%MFM0e z`bh9zD}QoLEjQ|34&0x1gYO`Xt~j_-E8i%zF9q&llyv5}gt z(_~0n{t0qTlzuSF89rb^88O9>ksUeTP@m;mjbsF4H5~Y&-4EwNwM^1k+wkpA1n4r) zbDTdNi+}q3)z_?war|jRdn#QH97#xGe%MGxFQIMaR3dj@kV{FY^`4{PXH#}dOl)d( z7@47VnXhJ}@kuL&A`d=SX`2mLN^z`)Rcii0kDe4(Io{||C~mfs`D9`mV|GWyN$*B< zI2F&*Dx(@K_$lXteq!h;20h!?#eBP$or%L1jO7VOmBB`3nK>(7x`rJ9#HnF|MY9GUYxSuUxK?T!kcUqOw25m6vT7=M< zqm&S{EOl*Y9QRuPjVp&3)b6&S{eBoBQ}F7z9vamogp&XR;tkiQ9=nLo@M$xl}^;# z1-^bh>qRc#t6l``uhq%dyDcL83j9*B9eOq152a^XTOWSsyZhIlmt&`2`0cNJ^>;q_o!_XY&hxQ%zWS99zWR@EJEh(4e(=@P@BYUh z+%|vrgWvn$tN+UzqkQbwzWTxM{Pgd9<+tB241fJ!-F@xXT~YSEuYC1`um00th2EBa z_kaK3*E9+L>sNp0D-|oDzxl!M{j+>Ing2Uq`Q0~))!hew8v^nVzjpU;-l?bSo3H=Q zkAL;IKe$Qc!>M5#9!!CRZv3Kjj_ZI8fEst8LV#yvj%0PvQE!pm$W7HR7nhM}zP=_0 zkgC!^0&w%2Xitlg40Yz%{YvsI7iDzI5<0xa#9M6-m#HRN+Ttob%0|T~ns`JC2{o!s z3H!-D>7e3~=7&>_A`l10O)`*WxF@t)-Z%pi+m*EF%5VF1MoHzx{)|Z~C%s@c;ey zci-~sC7zu3zve4Hllr^=?(PpYZ~xuhhyHdU`A<%Fr@L?beCl8N+OLSszT!jwC|kKb z-F@hHE7`pt^)IppqhCAS{ZZXovz9W>Hq#8+*hYF07%IFQBpJ7ky|#1L>3sm{JKE(1u>tLd>L7NcNr zLyufO$QE9UC-2KvvPZT;G1yR1<)v?9XA}5t003;JXeQH4)>US~pqzB7Y=8_COXJ>L zN^#ljY^0WjXyse%#Aw~{53wSWy{A%EwROgwdQ8J;{nEomQ8Xh|lSEBI!YP&tdzB)} zvVGWKR#Rv>u!OV&e))VZl#FSF4jQQ(QB-(}DcG0q{-3+MkN@Wn@9sYJBiVQF{?1SQ z^SfU=J3l-7Z$JLe?|%8?AI;v~?O*9!|KE52*WEvU@n;AB>h51wzRyFAd@(Vj@9jQ_sUu>K1xN)jg+A5v>*;^ z+H{`#c1CYgi=y^dr99_^_4%Rvi&#NoosPz&9KlmPColqmyGf%K_6-B8d@71JY6=u0 z$yn7E29PQkbbhcY%-MmPEy-@_)RqhvMJx)Hhv^lEyn5aDan*zx+{R1Q8V(Tc3KXJ^ z?Xhk^fyz{>znSO>zl5@`@^3Y7Mf1!P+!(|7K_g=79YK%y;z)%`VzGZDa@RNCDL&+{9QjV<-H+B+|Azk* ziM+FTC-U2iANx+^&x{uT@-XtQk-z_hHy-(J)-Sr3hBi+{&+EZ=wB@!`RHQt`P(8s!RYpXz4+|6BOms~ zQ`si>DQaG+KCXv!V>0abNnPp_voot4z)Q%Y*Y9#mDX%cMh-YV$^NCVF9TgIs0_fE@ zn}QbrV___jSk2dB+wH7UE?G=zoNVa8Itxy-$mOmxQzvUBmEe9A6yH3G zN*8&R&2?~uIWmlgsl?7fP9%*x7Lyeav;@;{=7#;?Qr#)^2O~2F@ADdzQ5{c;I=D(G z=ZT63o0I7bLzR!NIJ06(T996_cr*F@^;e_G`0LAw`0KB}aBg+&Tp|B=7T@^LV)15V z@TdOmCl_CP%v1Xtqfh;f`8j*#-pHe05C7xSzq|P2xy9l=cmC_ef4C*`m(N!oj6{Cg za~=KoPo!GdaPH+dpO+Aw zSX;?uR#UIM@Y1V^mE~8Sd-41mD=Vw97glp`F0vahoGGoIdFA|S;*A#*iI-nqTY3D% zGpC+9{p{(blTV&H@xRazcmF3ritPeZ~uPLyCv#M`^nOee|vG; z--|>XsY~y%aqP~oM2i398^7}#NACEU?=0SJ6X#0NuP^@7JMa9L#kU@Nk4x_F77PEE z|MREW$eZ6?EEa!h__K?}(Z~lYzq9yzk^kx2iwAx*68X2^dfdwR<{#x2i?zrjzq9!I zEeDHViG1v@FTQx!Vo_ZD)}8Mx{+~$X(e&B(7?*EYweCXc$?tkck`|dyT;0Hf=zrT0i z;r%Cm=&t)8{Llk_-vjsEbI;xP+;iXk_uhZcUH9E{--AE={`)_0Px$Be`B8rBJ@3Eg z!Tav{;k)m;@4{U;fv{@!#7%;#i!HE_|l>@Y9RMzj){0E&iZ#OJsNPpWk_B z{#*a_1-EA;@_f}<9r@M8|NYKyFBYBmI~>39{%F2)m^I!bR&wl>%U-6$m|AjAn@yoyXl`o$Cg)e>n%U}5X z*Z$U5zxFd<`RdPo^_PC(%U?RUf+3BbgE%+C7-3#9+rYRAyt?38fD?O-{Tc{Ds9F5d zHpc6Rd*8pcPIrK&w~dJ&*qU=*LVNGyC2?VXdA~p19595LQe$77j{|>&@RDgu=wS_{40yaH(&GDB9UMG_Ttaq zb>}}^6eFtATQ(!VxcJq`E%l%KrLWe$y7;5-L_YFYL}O_Diiw1DLHSG>#xZ8i1{XaA zeb*SLDwbOH(3deM5CXMq-sC0SLpSR+R_cw6#!mOugn|U0oMsj*#A>@-=&V;lSIv_x z#083p(XEP`HDprU_9SEi?CLoh2*W+7+EcUaR7LiUZBPODTQd314l1+|Mq)^_%bfZ@=&1-ub!3pDcd;Oyq-qu=ugaUwZuH z$wz;0@e`3FpL2tq`HjUN{pvfv{vVuee|Pb_?|HcX2cGedgfs8>Q-9^rj|YQ1|K-0% zZh!Ar7XLI7dGx8r9={x3*TY`Yt^V+*BkwxAGxMUmGBWvh-joA)Epp56`>)X-U;Kit zzZe}qSp2i_QvcaI@BB`vpnh-haOBl*EfyyupY=nIU-{PJ9}NEX;z&2|sLOTjHb{Q(D+NH9(Tw+Q|uXxsb(RfXH!5U2kp`lf79LDN>0qmnTw_<&GLR zO5-qn%omcI^C}p-v7}iPQ9$KN{||h`vPt*GI`U>RTB)s^k1-k>5F+x3m&9k(Hw3E5 zX)RnG#j7C)rG3MU?*8j<&+sMKZ6t-FHu=|oYO$z9j{NX(HG4z@@w@Me9KH1I#See| zt;OPz$Wy&T66q;hm@el+sv_msA_%7b?f7a#q@zj|wAGaQz$*;jWx@>`3Q$ll^_ zMO>`=@A+d}J@UTeUt9d_M;E_-Tcmz<@mrBd?kE1$;o{Hz!Td<%PrSYVLx4m%y_(1+ zSE6ZPyn#olRY|Xk4=k{jq*yo&Q_)i=MRy|FA9+B*VeMb-g;^a(;j>-zcj?6 z+bo6+Nz)}*l@xhnBPt%AP_Dft>c0jt^OW;@qN zu$XGTo@w~3EdbAVral4~7ScbI&hC}cY^YQa*%hGr` zyh%Uo5l)!3bJGCyOq#V!rxs0@*O?I9=>G1${`SVi7{WrUfS0a(-^O49CT(F;tMCvb{K7HgN|NZ&K%ioT?`$TXN zT~U~pYq_mP;ZC>Tk=&z^I}Bj{a^%C=N+j~i+5W8E7_B^g`lEN+;^*tH`gybbhax|? zU3oO}T;4sHs2q=cym5cz7D*WGcSjznNA55Z_+TV5pC(S8e(cU8kt4~5AN`Sc;aN+& ziYMYFW)&G!(2NMnd>A@c>)AL;LsU*}E-Hy#q!pi`YW;qC{MLA_R*i?DzI*JNXO{rR zEQpmcLr8@TBL7kAuyVehn=`@)v~1iDfVnvmc8nZhcxrF#4@Db2EQK0QTD@E7?r8W5 zn@G5E&X5qAY@$#}x-5ae)nLpa|F+**Dx^0z+x-E8D8crie@)#O9LW6S^qO0IVmjqY z!_bhxgVeyo)yO*aMxo!$EmL~@H=5Lg*WaFxh7?gRtQK0lSCZBCQY5mHDke)uB9ElJ z!dv34QOVnTI_a&92Gt{xGarc@$)zieXe9D_>*aT;N}i2W`cHU!Z}2UsJRZ3v41Pzg ze(2?o=kJQ#pUSQMkCE?-zaELK9f9Id^-5rl|h76#BR?isA0Hd*$U-j^F zRax`dOfHwqi;fFCDQ>q0*sc0f&{TE%!!gNkr34Y+Tt01e`wSlo{KpHm_29$OX=U1b zW7B=M3xbUb`S@$)!Coh0A~d=|a=S4d1a(&Patcbq(WO*7)qz7g|A4rsQq5XCI_S-Y zhA6XvY^BAKXiV&5WT0 zmMkO+K_l_X`Jj_!_Z0H4P)p1*QU;mX;4X^Um zZ=_@5V;Y&#TB;mk`?~lqXf!xY)I`R^_8~kqmu}03<0S+w6a)ur09&om-Bg6udrS296|C*`z-BaG zM&WImD|wqC`p)PwM9p<2SFNuH;^xRP8w?*}%k9>NP^tFj`pxgMfEtiqi_1rjdtpRY zl5{GKLIHkX_aU<@8LY-9vluW|~ z+-|3`LQ5F0NC(Sf{D|TUyttK8f4RFEO(&dPb8{UOfg};8r(j?d20iRQ%vmweq4@wM zQ_jwS>_Bp5wb&h2M&mFT;?fhSESQX*tvRGJLDHc7#+1QSM@?;FpNlu}!&t-{70nS4!RG-ew{b!vF|`h*~?tq1eFI`ohU7Nl%6Ana!o}ws4CA#bQ`Hto}v5 z8NDg6nitKIxoWWNSB2nm0J@vJR6`Od;R8d4ZcfAR@@Zi3ASlBXnm#Dkh3X}ECNm$a2-efW;tOjDRw4pe` zx|uH8AU?AR zjMdVKa7jU>TJIDDJFHkKMx{cIiY|04eSi*F8%{jteZdB_`>PiiC8j;qL|>cY~*SwqNn!qr3vq|%6>neN8L^) z^J_d1OTFs6;SJ@&_t1G+M%W_T1}O-$r8wz=98(+}iiL@IYFpMQDODTcV%O4fL`*9q zAIeayot!C7iM20XFK(FRHGfzM+43$`k1ji0B#GFFr^sHso7TVp4)pXQvjM_R#S&)4 zF*5-_$+mOzi0uMM&WB+1>%E5SW{bOGnKtgIv;0ykjk&saR7VxCtAn2fm5gz ztF2C{yNeTKUY}db3-6QYh30_$&moSzL%xQpJ*hhxme>Na&p;{SCS=-&Z0bPjn6hyA z=#JLggGNUHNTWXrW@K%9t=WLOH|5Bc9RclT?nbS8BeEAX5PkW4R6>^9t~6AwS#-E$ z4#84&)=O80n-Gm*A63S}8Vx!dSEk5X$uveqmluB3ZG|eOzIU_~3y0bJ61hwsQQG_k zQEqHFmX-Fys#L8PkEhaP(VB5a*>g;sZX#B9Ubnyilpc2wc8{G9ie ziYKzf6Im8;N(5g0y~Ii-$-KgkvL3mDn^WSFTQ7-6#D(qG_b!KbdjFRbhv?qg1b)r#=@itZIrD28@=CF%=&N<6o$i1asIs9w+HDn@iDbDxH;qOWz#Z;|FR}yoYrsE12Br43r5FTf1`1&~{tE2{1U0yEEVMdr|nTq2*STCal`5Agx zhO#;DigS~bjNPH16ZCjp6+Vx(ZVpw&*5h3W;eb{-ZQ~($mNJFIwssG#Y&J-OT)Kg> z=jVcH+>`j!3JN_U13q*8dUM|2Zlu6-<@)BJn(|BHF1Mgd;K)EtFcCDH#H2{a`Lbya zdDu8Xf)#r_mPRc~XMCM(T1^`U>A5^wP>FFZ_MhwDi?Mf_i4Z863`7sWe9bqRw!lNV42T~HZIl@7tN!y)oyKAqDxHbf%|aqNrNiF@2L!J3tdM( zwL+M{^c7#6Gnz(S%6dJTvU3Cc6drls*c&htxDUN`T^+7o4@oQ!+RD)35d*1GhSgy& z8`UEt(1ws1!#_N`V2;PQvILzuti2mHO6XG08R<1Gqu6|f%XG#pm#{1oFXpnzQ2wM6 zXk7f)hNz6RB#bB!71?_g-C=>amMj*d%AI^NkxK|?6&L017N8J6?Pf(^C$8sL3RVLLjpBSG;^=6Du`l88q-ykrxsP5@RCMCU=^?DX!*RDmA zdF(Sss;ywdBf|$6HorMp$zWhA9f{9cz6oxc;xd~^$|u(TWmYY=W;{m|b(njY0~?QG zhEQyV`BN7rp->7}!*Y{-@hIE201R4W5n#D}@!p6gE z>y0|?;k=gzpl1`4SwEfc^CJkMYK~7YdnL0LC$qVx2E#eV9T8-mE!be?%3=A3oObkR zxpp+yT1{4~NzpWTNafX9ZaJMy0=IIhZY@aK^uYLMly|aSYB;VH{7$E4uSE?wp}BSd z*F>ST>RqlafzaZzPM7;Z5fNAKEX#Py=9^fFU}vZrdy-ftKs3RxADG-~gv`tCdM(*) zIqW9WVP3|uK6BnxbI^^I%PX0bid~)JDnN~3>YXQ(&lApAQBVUxij>sDOs=&;D3ali z8&75G(MonD1aC{W9e1(~*(OEa31X&k9ASY3Bbx0f(r_^rYdL)k?koA#WTlqtt_!}Y zx0a};So5u$!F1xKeCk{nnJ7EMS9aC#xz;W9;R(?FLeG?>JeU%W_sa=%=wg=N`^}7- z-EoL#YSt2(Y6BO=67_OvIw7nGBG~B=;L*3-k;8%l!xg=aVa#Aml0b3Q7jsCsFKt$> zrsQAcW{?^OqnI$W@f4z&T(VJ1rCQNKDqTnEOQq1zv-!Um`0!Zb^=UqJSi61L3OeO3 z6DNHXavus&#g!U@P7&t|vJ|nkox0r6+4i{nz3YBw3G&pG(zG`i%GECn*y z{fssTwHxfy`|yq$kR!(#JeyvgK!C1@T;CC@Xq|TazL*ltslgjovtLs`VHUn?wQ6 zINwgk5LVTa3=SR3Id57eVj4u-ZgkfzttlpXcGu?HLAk4y9*pxThEFn${Az!g3ethC zO0-BzDzX5HsH@a5YNCq6o^&Fw?aboRx9h7I>2d_HlVvmjzdeJz%c7e$`D}>1N39)@ z^@fbG5Yym7>i0As-kNLyA6#=m7N7;)qO=J-VV-1(0%y5gD;t$UY+QmSkJ*!JIdYMM zgI~_1JJ_DJk~iX8Za@Y7F`b5o)y%CH=aVKaz@S}a%ZsXor%&+EAC5ZslR_=a=$)lJ zCMNl2tv#K&b&Pn_K-~aHx!E+C?AXB`t|mhjW)*sGcWHJ_rX;o^$tkxT6T)0&b&bP4 zT*(Q`?1xC!Ce4j47^Npv5i`tZ81%xcPzMux-2Gkt*d4WX<7~@42i!o+~$oEz`?< z+^|e|N)D@7i8GxK8p)djB`57}e==!~E+KE0`bEpA--R`qSQBVs;F?-@I@^PMY1WRZ zM&ZO+CJ&mFuAVnM`4q`0Es4ZtV6^K6bXN+oY-JwK8U9Og7*@&Uffr-0TBDy} z>7}ww*Jp~xbX5sy`smNA5kn+mHkGSo%KY|J49uykEN04oCfA`r3Fi%H&ubD^_BBK*C z@T%5qkaTkd#|%PkeXv58aYCcEWS@mOBE7ALT+dHhmBfnd@}_y?AlKNUMOrJYSf@rN zJ?AuwKAOKodSLHem^3@Pvm5X7mFq|BIxKyC-0Dc{Xyn%OpSc)M1+#nn=%gsnd}l}` z+!fhf+t_Kk=-du+xJ;;Zdu$`ra}-TU*-XjWVdEh!b)jZj5ae)PEzieQIj_k?&=6{f zSt8N7fXxf}ak2VdaUr^6WKfkU{jS9TQz{(tcS(T=rcU5my0=Fq9!7zXg!W{}Q4yF5 zH*hN!Gkl$p;;oj1&0E*ABOEyiYjdxwT2X7=vW+~2U? zvgy7odFxU9)r8Gl-+{#qd1MzExz;-y)Y9tKDZtSq?RMdvc|!&T6k_Ihoj|Qn$BZ^K z&BSCc#a7Kf)C2_+Q(|ENNV#nAaz_dZ(khH_yBR11GCRe4ZKDohgEfD*`R9Qyv(0=~ z<>P8>G`f6U+5?X{^ebGKEB$Uh6zw%OCh1W(RW2>ZY^InE+Ar?_B-ISV4qkv+igyue z2DeSIF&>eIQ7=7IXaw&(9y3#d0iFtNGF1bw6plPlH#c0*C8Jy%&9Ib5EkLz}beN~5b6MC}nsmmjR>El|T97EsK`n}R!g zOF?@^b0X`L`2|}c2Vt|gJ}5QwE34*=YYKs3?ee;U!FYm}I$WKJ9GdcY5>NoY?WR{b zc2!ZgRO9i%oE|+#KEIX7FISSk-bC?{7LK7`GxZj=iL z6{AKE4RN!*HMC2qm^m{lpPTdAaMzYmEe)LR%-20p2APR`7g$V3RL!>f>f~_LH=I9U z5yz4uI^QoanO7MHWwbb34iKhU=;*YW1U2CvAeSFhmQ@@oDUDGYq~WBe76!;up6S_x z)1r5Y?^CN}+7pNd%_NBiMfb3r$;3@O6Kfrfj-_f=QmRsE0`2oDX5+n~gf!kd(dZ2y z&l{zWBL$e!&n=s>E1|R#sm#nyPpzfunV4TY+}H^4IckCNfL^)O-7IE84-nW17D`NS z0?g#8UK;eUR0^rwMspPrjS+@8a8>{kTs+qD#d@(4(%T&$l9n24^FngPb}c1IvDN#* z|H;$@>Q3v#K`0QJ)bPO*95zE)33Cs2E)Gs@k!ZGJZ&Rt%4KA>xSFvU;fn`%yoK#4d zy>_nrQKG2u)C>xqee{zjW8LLbEwLQN*>XmCyw6w+~|ZD z6|NPB+1Hc@deU%}UZlNpFZSIiFzU{VF9JQ+O{%{F&d0$M^k^Z$cNN7HV?bj?jwAt- zCFr4}!u5{@;;rkFGySb#uENP*Z`jSYvr)Hkrx?vvfU=I$@W*_46$q6GWXj;EVGt61 zGk1f5b>m&COo9+Ju8e1QLDIphW4q{#Bu{;FEnbnY)kaDON{-5F=7M~W*Xt=lK)a(< zq`~EYlCKAk8uyN^;D#o-j!SsgO;N=oL^-7J<}m=$UkLs#NtG6~IE6sn$Z8Y@VP1bNtx z4elPGqg>y;NPZ0%7W7(gkLnhQEOVHSqNGzS0!f^$0zhKsZpD0Oy(hqTBj|N)&qOL! z9uCx2XkCd{TQ@{hH{NA1Cs2a3fa8+Wwk_hoizS(>mB$g?>J&wWnj0 z{5vFTqWjW#SY>R?kV4H3jR*=3JF>GnE+4hFBHkXC3Rs`Q7YQwQ8Avm0S^Ip049@PYSdQ*^*H+K z)r^oT{wQUB)DC>3mk_f;z^0dp#rS!3s}pPh4og~Ed_VEDCJbhZ_m^-x@ zW0UTlWGca(Akog>bYH4BGzz#}HXYQr7>(tdd>+EAJpU%UgivD`;u&P>HUbku%8VO? znYm7`Bu*CPQpGu9FIRO8Q>z+GfclG3Er0Oll7*lPXAF?85Gi-G4I-iY=Hm54s#$37 zcVH&^e%=W1cp`UqDe_Wa4Wv>A?S+KW5??gltVM?tEt~Dl)ikZS77TODCO}bb=EWO)a2)hO{uQJ0JHY`?$hF(K4Fu){1gK44`R|D^* zm}VFU@vaWCarJ00O$nagyl%>aY-7tksh<>yZ75(C!b@Pg1D&-SW7K!bNzHb9&>sz$ z%va3#+@?f3z2;%=FZ5a~{Xrrmo-N6@$?BeQ_G%seIBT&9qs@_zEqJw>U0p_(gF>2o z*kleq4c!_!U?CB3Vke+Z^QLzh9$|MnCeNz_y;X1NNd0bqrRaaw)T-*U&N@lr% z#;ZAe7K5)d=X7e_*9Jwf!0We*eq`HeDm`Ddso15;}@?GX3Zmku3k-+o` z$tOJ{3V*>DQtN{B3uIfqm)+DZC;R$3|H~4|ao#;?WXr;+%YVF)G6=(gN#-c|Z72Ci zAWe;%f(37)UX3#8$)`M#go?J6x*@x&U2iW75MxtwXLczcpDyKhkKa=exXPO5cyO zVFnqdM$KNj1V=hG6pUthf&FUT$I09KffmDo;!*Fdec(%AWxi(}|4 zsvm>YxrE}K!KxFTBp|`0+DYX1NsiVY@PEixdQ3jrHW`u}N_M&Y-O_27ID4RG8wkW7 zXLYsAIs@?_tO`|)uK_+n^@QbzuVGr02?kBDDyh{b{3#mMYID&!qgL~+p?)DvHP__f z=M{5>XzUKLiy+(BxVpd9%tW5m3KmD+o1~wPdcf&H_vShDo3ZI|ygf5n;5CsSBvSRL znmPAo@_Yesv0QMX;@Yco^_Cl;lwYf4-*jg;d#fs=Xro&MwfB&2W`kii$>xFMJ`uP%)WDGqq;M8B zYyCz(-zcrM`pv;x4M+tGCn$gyp`;GhxL%~ORn(IUjaf3*9;nzYIHi|!t83y-N8t8X zI)@2$ZO-2)Sj9a~&4M20Khq$ISCZ+jCh$nK%GE{be625tF8bVH0GU~ zf%TPmvd0~Iy`5@yDH*7EOWD`otQZh$rYo&rEjL?dU8y_oK(CZjbA$?ar3M|^482;V zm{%?sHU&|X;}^K)AgVCotM!H^=^#u~Yr8`g-qw0o8e5&_M)y4{$RhelG?sADqLX(H z)v&5NZXV6zc#xWGvVCbv08^^STf^HZWz7K{dmIog@mg-J->)RL>QTNljY_t`crJ9y zE!VY|PZd?9?QV7W5A}5DrSagpIhy-EI84nqV^$pU7<@{b->faWPKH5+9w@P}W7Pi& z=SL0&crG)bI6nZxT7?~m3jPe?H-4WDNWm@pT(49xbG(+C4f6BH6oZXMZrDvt=XF)9 zC{YHO~iEcNEggkeRMJjXFAU_r|;IUcW8HasxQ&NVtd5SE$7DW_rQp28b5@}QCA3p1QNjxfX9kb*p8^RzmQEeT7wId?yRmO zNoRFiE#Fzsl1vXKURgN@4DezRHDVi<5-FRSL}L>iQ%dpNC|aCopwY#2VD3RK_nZ2* zb{9j8=aMB9h&9(PbTi!yDta@ZWk%5D<{ZRDFB3fQ!h|l>jso<}^#bn?u3Jw!#ZzOI zw4dDcRy-~i?}2A7^lb=Cu!^)M3`Q}1P05Yvcj}EzY5-SWHG>TXWXh-51K}sahgrLo z()C7SWs?bo0t}A@@&yLTWtUUEwc^s4r6dlHYr`C`5-)ByRjoli!a&!jz@y^46D-r1 zfatK4AV!cDWP5*9>dZ*IZoV%E8|y-0^ZYbx zD8fFsS`?y_FBHsRJb)Gq0ZrE#uewn!L9_|3#v?|U?Y=MB?#@fCNshw6G|=^C+lNa# z={Lokar*|R;0Lbn%aZ*1QFjVSz*anLd`~;L@stnSi@{0#{Gd10 zptW=RTaDSwkXjZ@kqvJ!T0@+0j@6BX@^DLZIJWrfnoIB*0(oXdB*YzFfGrJI^uO2eSf_;>NjtyeG2l-`rY;UV1FV{iw&)>(_e328VhY|4ACnr z!{+enFnE_LGE2l$P^n;FgRte&#HJ}=nS)W8=WRJ5^|u};&&nJS#hIyjbxi{t!hHwL z!*s^f9jM*oB?l~|7wT;FS@`;2kBo*Q2aKuqtGV5=BTCAJ7?{R>uL$TRbqx+W#{3FK zr@5UjmqIZex>+Zdl?=Pmo%7Z0DmC&O-INkRmmms9le^pTd{h@T0PNgr^ZUXy94E`@ zwjYA6d|cJpRx#a*tvQ82R_3C%jbU>^G39H(3Nfh1LvCEvW`EpnMfKlCHSj!@g2}R7 z8eCwzk~uR5wEbdgdu&U)v^;~-emBpzDlGpc*KdF=T1by zTy;?!wc_Rgyj32^%5wbW3bS7Ozkip-4*p7WJRkAiLTR7Qh{47qp#jW#`*0J#sob0I zgaNfyz*)w2P7B{n*MTB#fzF0V*f6>)Vh%PtZ|34AA9PL5Cfyuqt}o^$b>dS17eHJ| z@Fpm$*_ac46kB<0TvWg2HN1|Asw1U1HY{W=SjcY-vpgKV3Hzoa)SZMYt#_}b+06!L zNdA0!4tlv!x5!8`lZ~^%LC*-Mt@&V43{|hbN}GkZrH)M$Lu8mf8RgRZ{(zRL0|5cY z8pNgQEE5Acrf$6uFRYZ-(z+kO!(n4lI*LkYi;y^*iP-HGa-7AkET-^aD@+0 z%0%6=oeMS&akoAMut=wXS(_;@RZ5C*7b76HUrMv~E{VR$2F4bY zn$E0T9JmWq=Zc6}qrB|h^aDDp<_A&MS>xTbFHP|cYKK$)P-gI>&7F-vo8Tj(L*~q5 zg_nx`&5iBeKzYLn4FOJlQF6BSvg=JFjy*IbVg>U9#qVf2tsc}3rtpESHrX)E497R6 zP);2aP1RbQ9?N7G_43>a>z`s?RFT|42%#<6v$T9yrp?) zB+{j5sh2_H$X2&eVHGG4@meD`istl-o@v?*h9iQ&U(a&OZggS)(#*=dt7>LmGFhC6 zkQ>LBnp?;0`Z3iQ2heT+7_OJs^vM8aXR9Yez?X~}4;$=emT=UOW8Aeu$Sfq@(!L44 zWEjtrwUq2yCuIjJ+X?Q!i6D3D$c<1N^g&37A2+?ra_#E4BQ~-#k^3UDac4g40Kj{J z=Fnrc*Py@9a?cxh((T&o9P|_;_`dAu^P4ChNQYspsNYp|t~KpO>JG&GLaH)`7L|9q z*cwy!Xcny>(JHU$r(J+!#T zmS){jH=o?08elr?*k@1?yzFv5n#Md+>AFO_o!N{j_0$o511h-ldg)VdUfSrZP!+h% zp|r1!`DARu+&kO!iA^^X({=L<}? z3^iP#I3EC>8Xfc#^Trh6+U;jXU64Z)0tRSoxqB2_>lzg^B@Wo2*idPgqUH;g z`hF?v;2@tu*742>qNx880M3N*B$bALlxO#y^Ma&iE7P2u&E$ASBf*oiN1D#Em6`@i zI#>F$Z7c7vbSm&KhtqDb%pM8ZC}lT?L@h;BwV+i{4fR9q92O?PuQCjSF+#=H>m_;c)v-vTiwKhE-iCerDGH`lCCD=iAt=NjcH{{d4s4hcU70r74$Vn!9+FJ z+-=zP?!4e#Yc>|nKSz=U06Y))Poj(~ng@<8&qu>G`$k{vT-5yfP@z%REJD%)u`V6% z@M?Dg{E#4J_(hxwb1rfhpcv@koDBK_a)$#IWW9O54f9Tf0vorE7u1Bh8k6R7lXBb_ zNnqEy)~|n&SZTGklwSk0R8ek&;8(mupa-Fsgf^~_ZtpjJ6O=XGghs$9O9^X?Ln3Kos}(#2EP3FJ8a7>}cu?!$gb@XCa?kad1FM2;Jt(d% zHrcMPR(dc~F9||n#DFVhyyd=Qu}#c^&IPXZ`VzfKG|Za02Kp20-bxR@-H{9c_g)%+ z9E;TnZ?dLq3B!^=c7lsTkVwMZo}H;u3Dp2_G2tCpO=0?pV20oE_mROHa2iw!_CA$q zZ8_yeZ5&qL)y`D#y|b~@QZl1A$L7NmZ5LEz<`gFDDtb$(-d``r>LghX@W7%XC~(SH zEdCqA>bRZVml5V^ej8>2s*sr)t!P?46TA5mDZc6VI%2(`& zKVRKrD|UM)S$Hqd2Dm4_F2A;&d``9!(|pX!DRWdIlGm z7^@s_gJw$}kVdoB&SqOO=D46cn#Hkp4b^eX+S*A-h5uvu7#VpHPWu`n)&wpB8RxIw z7zFp$K#zulg|ScF;9@D?a~6qL1{bysc?&Z^hHTeEp@t4+(BB4jSO6Wt5ZLw|Pbv*p z&wxnZ$YfS+|Lgnm#(fDYru9>>wx&DoUFm7<*#xEIu=Y^B_Qt4`Unj4rR`+$VURI(I zk5lLW?d0Ji7m`kc1SLOW1yKJI~}!acrA@N zz7@zrTWx9;h9llt7&8FyTa_*=VmdM)Jj$%WK}$muq6XlcW~_EcuoBP*`bqhnI!=;5 z=iK8EY>{JIgdWmcQ@#X5rW2dew7_(7h3!Vy1eD`aF87`)(wPD|$mDqgVBZMfGm^C^ zHt@b<)y5hWuIS23S^=2#rdcU%ZUI6242rwJD?4``pSQlE@;-Izs) znHxgNGuc=yHB|%L4B>@}QqHoODV||JNS>t!78Y;(&mr!JOAhnX2wl2JJY z6)aiy*T4s=*px1(OhRfnFi}i4n;CL{qdvTtfE4JTDx*H5aLKgD*aZh}eV{Qd>j-Qj zFFv^4caX#JB*9ySEf2rC+4CMTq9FqWG68yZWGkw`x3ub>3bhKe_;QYMm{>iK0n`Y4 z!wHEfovfn?X)=Pd3gih9bv@D9V1b-T9Jm5dCg?BjLA(c8-BO=cZme(8;|Q*f~Gf#<~awwgjkEfO~AgQkTmQFEa)enQa*q zrAZs*Ms<-_uH6E%15DvAxntBm$2~%`d&C}RH!*IGle!lNcy)pu*6;Tr<9NNnIC;d% zL&MT-wx^l#rV&;)euZ@4#=h)duYI)h^)Y~iyTi`3wF$Bf;g#0EZQ!0RZ8VYxu(Tdx z0sSOWKp4y^QuOy+1Fk*3M6Z`w*=%IIt&xEfsLs(gp~?{ntOAld%pEDD zR2zw6V~*fe$_)vKs1!gp&P?UM_yN?^z9u_JIdZWzZ@(z?t0^5rEfsEXB1YFIPKebX z{B5zt9i-+Ym~lLFuqn&Kur!kHGTRCMV*Hq2uP1k!`Bb+k1kg>}XT;0t1?OBj16%vx;D=0Lt_6<_s>PrLt5*_6dW0v2 zNM;I>>aEhY{3T7(yp_Dzrwu5w5xA-L$>}MEtr!;I=D}>(86mE2hV%}bt4Q+0D>`-A zK(9FiV9AW|VYKuv!N%@H&lv6^i4grl?E)a%P1q3@RmmA$ll1f)Da}r87+??}ytZ4_ zoq!JEf~Si0d5!}^3aXXBxPfGA%e+o6RHZWHXcZPh4oIXz_1}oJt}&g=JaWWrd%W!ugfN1O~rE?F4QXFyT_5PR$_@={dswum*vqY_FL6OX~SZz z=GG~iREUmZC~6|NS*InFUPQi;i4Fx{DZCU9t_uUCMx8_-VnH=*Pt_(VL=ruaMiqR6 zx?p6BTNV<&+%R^pm0GWn!0U?x>cw!uK~X?7a`i!z&e)w~M_nHHt@yYl89g|P5JOZ; z@iKRMxRUENncoa&Si&&IHfuFv$xFfvs$-(X>+iCCeP1G0OF(kT=V#;6ur=Sb2Hfn_ zTTL3srjRNk666UDH#dXSuxo4+*i*&zUU{OShC2&}p&RuqYOU@JgADU(H0V#9{aCak zY&gLrHo8ORdl8>A=1^8+)>Pk62|`9~P#%()xl*~vqf()&1+*ztMF|1YZnR)6*qmwn zya5G{zlGWm##Ehk9}l}ZV9`OLlvk*xg9TC1s)Y?0yQVQ%h(#LJ#GoBzJVgPIGg#A< zFNz!HU!YUPnjkkI_jD%4>So|}HUvWXuE2woyIIf|LLcL3B4RYv%~m?j z1prS?!rLg9BDjW2c>B27f$rqSu9jkUg$o-tSvBuR^^;~)eo|zVaf=~H0BsYKW)cfE zAo$GEHMXfZM+0)pVv;5uX(!w1(PM|@IcX=w-5-|!{Ecv>|3;{sa^?UH5yle&=`+l) zHE$Y&5#29aw)PBxr`OL9C!sJc^@rks>z?S{l6 zWqQ9)F=^UdsRGjLxi_Ok_#n0{3#ZhuP(gIJ=49m-6=fqG8G;8fGiXmIaWNX(I!_Z;5*?2n7YhH5{z0qMtnP|6w)xd$_VDt zXeC?#3jPUbJ#;I229x^mEBKw5x*)kg;FNA7Bn)V5SLv3)J@z`QsWL@TfaJ_ci)jB$Z+8RWi9PECZNeIk!|D!Tbl3-2NAQF;`71UrZ%i}uZaanEe$yG-aYYJX-WZIe zSxEkcWT=*qgb}D6qAPVCMOWzp3gTOWj~E%gz>9u+5PBC2>Y8@2JBQN*;+F141=Jbt zK~L0`!E0|YYzqr!rms|st*AZIadVAYYgTYG(9SkWO6*gdhpq-m-_N!?5^{QYVW{0a+&aR(m5VdGXhAn`KY zZ0>*uR>|01hRdMeLHFspob~!-^<-(G0xgg1CmMhdn&N*cRVRXToJlCqE>|1~c!+bP zkxP(vD%C=JJaWrPL>IV`N90P7Z#&ilBQ{`8N(*B&s&6&Vcw+3RfzB~62T>L8@qX=> z4oi);B;RU(6dsNa$;fLz(p5`um7G(eUZ|D#bo(d@OyCt#mVB^P65}TO9h# z{aVnx)C?$Flc09(GF{6~&|g-RKh+EQIFo}mI8MzpC3pG4yzaK@>xdlYzQUg|0=D&YKs%Kvdy{WFIl-Kt`Tv)aIH!VPaKAX(<-=AR3fIsK_kp`nDS0!~M3ICcM-DX!2edNjZp=4k zy~%8VKEi!2N8t;~XiQxM(kY=)X#OxCPeb-G_lyiKt5HQ7>_(xn-sBt7G-8<3lj_t1 zT-6a>WC?ndJS*H>{EvyLK%c-BbfaKQm=Dx9=nLLrNc*d1@xikN;W_o9^_xCEn|8ZlcGCr2ld0@Vh?1($wD_&n0z1-ZDvgz%4f5#(gVEq*7qtD>3ihd7 z8aF)3&#)?`vww5tvoXx5TU`QRn!%WGso4XLQdF<^HE6lz+{z2w%TO1^XR(=3(`~UD zAC9`4V@rhQ#hX~~5*u5}c?L|z%-%>CM}Y&p9Z+9$z`G7dd_4qdXD*DA(Ee(*J@@^H z1{(dK1`Yx;^}GPc^-btTnDOCSFh&Ehl2L_8rI82Os-D}K8+2{c9dn|Rr0Zgtk4U3K z^!q4U`v(Rep{Q|#4n%+6;fz%I#+k%AZ#)7d`6E2wud zp&{~WN#zGYP$2#Iz%gSWK|1_sB&ByNF77MCSRj5l*vqHw5 zMQvhO3@RU-b$3E=0d7Lli|dsY7RFA|5EojmUU1Z@e^@_hV(=&3lb{9f!?Erjr6(^H z;xx=YFIX-VLMkTZjbj^AFH?vwWsyd*F|FIkZJ}mGXP9#&VzXD^7l=QrM-oYl8RKJ> zl2#g>h%mFxP9oJwlj+_leO|oYUG}>D&6a#2fqdoa8*8a(f+<6#6pfpYi!aDhd!=74 z&EpFBrVDU5ZcLqwz47|6$tVoRustp%s)v;i=d*HH*|#B~dy4=pt#MJ@ccNW>L#~eF zQY}F-FE+i3=+FtK54aQnU2ll1K)%?a6agBWTa~k2ql8L^zozpbU_GES$9AJRLKgu9 z50cVzqwQv<+@Ht<$m>h&TU`HqEX9>!pqSNa+Uzb*m0+NfBZu_!gZb(z?W=;xX*hC^ zVkR5fhg7Ay_S%pFoQh%xR|`!b>?n=$pb`mY6xmksH5&9F>&1DM!UU4&K(3{7+s7!1 zf#Dfcz6~MNoQQI%Y<87e5;I!08^mrP4_~WrSp9Rw8Y0C~G@Tqs%<311814NbCn$~* z`lNCpp3c6p%JaEHL6EVVofC;zMp6U6o>F(c9UW}Fv07<&uh%})>+e#?`=q{>jji%K zNUv67uhA9v8OU}Eh218~{(58e#WgL37cc-PI1yPwqimM@%+!MI9{sWW_C+84MB-1Pb8rC<&G`+;-aKXgjmqEM|2@%}FJ< z34}K^5KKkDWVBdMp$7HJw?cBwX-bS&3M_TF3}YT-%ySR<3Up+Uqmt-U#|Tt?a2`nKu4 zh>S^jy&6xoyVHimp(t zC`NUA;MDjvXqz=du(pY$@2a~_L^2(j~-H?#N*?h=)p8kJxl zaWNTFF*W*|H(M2$*QH-ScmDj+>$zCmgGCjC6&sCT>SZhSOEYPD)0um#SstpS3e1%0 zoy78mXzWhDoxrRCCZ^V9WD8~phOHz`Kr-hTM^U^CO`D`}_Xo>FjUVXJTwm~9b6!m7 z^D`SY$d194d4aZwMvSPT(jrD($tVyRBUZ2r^?VH^YEvW+MOd{vlp-C>9mow@JK{K? zS}^BHtmMkEwL~Jt0VGg$8kzkbvelftLw!se-6-Ox8gG^I^MGV)=n8~Y$+me0(5syp zlz3PwcCrW=O*sLnjK+ReghyIV-CL$KYF=yUSqsV@Tg zGE-lPDannV1oP0H_R^W>vvBTwZZJhI=kZrb?KfUune7j! z{MEVJaNPuOluIL-DxGeu-0PIrr%l#|6@#NNnJmq!%TZ zI~oj{hA#rqnd-$~f8*t|XP#Sm?%8KgpF9(P?##ItpMT}mr59g#`tfsTpI$oq%;{&B z9v4z}^06n*z5ev6XHTB|__Ir=Uwr=bsZ-Cr@%l4QJpIxOXJ0w{%uBBfZo;q{-nMan+oq6)qnU|kAckb-zr5B!g{kbPjKL7l=B_HMK zm!Es-*_X~exAemK=N^CYxzlH!f9b`SPMlV$Ku$ne&l;^KX%k7x#Q@u+m8F0$Bx~0>uujX_AYe)QPk@uPR% zaqQOPe$BCC{^gGxz2n$zKK8NWe&_MnpZ&+b&y4nCG&Clv-srX){;uNplnnY(e2Q z$*baf-dpd|G8WQN5t=LI)N0RaDDnvtj9X@H;ZErr18Wb%ggYxBA$YySz$W({?C&2O zJhZ*LyLD;4xwXH4_2BX+fAs3b%llhbws$T}cCJi!HU=B}yW8{m_QkFJOBc5-T{)x9PT;AWma$#eA`{0vT_7C>gFYay6 z4z|Zv_x5~@t2^8C%UjcnJKOsguIy}Gyz=(tOMAPQW>*e&!>=D-yfE{L1g358UD&>~ zwV7xk_H~96tYV~cu2-&^RK4(KGT+Mt?NMO0gerxR6v zb`T59Pi#X2*4$dowAi`M!M%`hagW)vhM=L>)5`wr%{DN-Xf?q`E_puw+MBC|)SDm< z>J_M2zWhp5tLDOJcM}8>-PZan5OlMYGB_A$19Rchd8LtF(|~J%+S-rBmnvA(r?S$;0;KKHSWVs8wd*Lr!ytH-UvWU71S3hz2((ca1D{o!7`spkCS9V3k zU7Q_U-rpHvV~-}I;m-cW?djg-i&yq8?(ObcHW%l+Z*5+_;8!19z2sj9KXCQ(1#flZ z;KFqCQb@Yn+SvZ?Zh2#JWp{gL|E*8#?OfQOZM?m+IiGJ$cMh&zy>$7~g-er99&GyX z(~Zr~>|Ea7-`ls`w*BOdO_vGaatKhWwKsHSX3K@KA!@Ih#`z6Ql~C*|HVm-|G%HKj zEY`;ORmxwQ4;3T`q%bf+LU+zAr{jgy)fmEKAr>>3D#Sf~j}q~@)LxO^j{bJjuB@LA zE^fKZn~7K>9gVIgjqj72{dlAN#)~UaN`A!TCg_WM5%}D>Z@JX!o5MHqvFK~yms~2L zj7bfn@qDI{B*_jWO6Ww{hDOLi>_m(9Q>f;9Tgg%^`sRM=!Hw-JS9j;rt=;`g8?&A5 zxAwO74lZB3wC~Am?Acm-TNgL>ugrSu+ZVPruU@?P_Qn0H+j~1($OOec&394Xtm)D32^(D+M&D@5<-aE!jRQM`!L!gv-XE`236^USE%ENG{ ztED064CM6zB7$?5Wzx;%Yc>kxs%F7;jNlW|)#bHl>9tmOIT<^9`uw@&cuI2u*w0hC zDIII|k)EScm8h{($*dVl#LtH?k2n~#nrfYYYa?Oa#SfmpOCxZ1IB#Qt0+}_Hn~m5W zzm|6C{+-JgF7ExM$@c!mt?|y@{=s~2_wZu+t&2Om8(aGqE_y`k^9{EAjiBPdda!?G-xlAVPWJaVb}sK+ynOk>d~_YRAL1eAzlNG&;D+H6QRU7RYN`LXN^gS7EPqDm&?Uk1{ z!_|7~_4BW-tYuz})>cnH_uSc6Up@Egn=7mbkpi=o^|s@?&N{cyYA3tp9=1SA`$C`j z+W*JZn+D5uo_Bto8I3q9PaH{>*?k6*|+Y~ zr}zDC07y!*Q#0{cmPXtlk{|(69*>=*;yCeSCf1UP<8r0uOI&d!RhFwFS-10h0n7)u zY)K?=*YlqDeV^z5{1-^_;RbY=Bv1k?U8W+2$RL_FlreOZf;Y}kBpm4_nMB(6_a}o< z>q!efwcQ?egPtFBJ6v_cfQ--4q}v}2-M(8lJDwMG*kF^{fJfcx4v6|3bU67YTRU5W z?qoce?kx9*4~<7G(P%uM&bGE^y@B6qu@zgL{*0BkG`@VFi*GQUje^Nmzcbid23l*f zx9d-W@w~I>bNtSR+@)NVW~UQa!$Eu5ePza1?Xx$#9KD>;(L2(&^GTaVjvq|nq0hev&H(7ns<4jfL*V85jW z{a(PW#B1K|O}T;w!;ar`ETiR7+^`7aE|(<>ISK}ypxYge#zVh99S_H2d(@kd(&`WU zBks`gh%M;3Uf&(I12&M!W!Gu@qoCL6b|=%IKXQ7*$#~8N8_axe%E^4m*Bx&M6IPJ7 zU^wom?S3!`dV{TDuiKxCYO2%iQI^g27VYl9<0>8Y?CpseOy)tSM~T%oI$hHn1v5ho zs2En|GYNRFKml|epjmjv6J{lx*U@D%>0|B)w}mBJ<)5U+5rH;>SQ{0L9t5Q~6$Y?o zvl(o`N!CI-3T-3XW~>2HgmyE@?kDFlLg{P9%LkawfbHxfp)- z#O8D7!e`E$f8p$f_2|agl#-2MG?_=<1g;5Rl*k>>SdEOKd~TBgp_JV~4DkRYN(Lev z`@+ozY5`nPnDDtIb7G7apb57yb5zy%m$@JZ-GD#vDKfC{6W9n8IO8B-T}wt2=5FpaTT`i;f?7nhr`8UEAU6XvDu#R+Bi> zkNKjV{Xw`l==3Ffb0F;m1V zENGgsbt6UHfz1}){&2vkP7!i41j}dEpke~krK74-C^QiHGc5u%7NmYeBoKWPuu=%K z!P~i*@qqMzdjOcID3fJ^hb%1b@2GtYlffLGswqMoqA@Z6@`-rl%=1r!Gi9o@s4@Qfr57XuI2u~bUiYkU9Ocx#V%z<42~3MC+5C=p2pqc40QGB{n; zHM4c6hy>5OROG@YzHu4+$xKr&Hbn~Gvm58v<4hXBTnXutL}Da869gFc-8mUXVkx`1 znOqk}Nw~OT?4I3#k6QPYd_&aRlyVpj6_|rE0Y)*TOBU2P4vrCX?er0LMxR5HLZaRF z{FdM50Hv-UjJONCgP!lu@D2Ozps(xW(XcxkiXMSA9(K7R-LCI1Mu9iq;m>xKlf~A8 zQ0(E1hGxVUVpp-w!@;D-Uo8g#*Kf;eJFHOG>kRz1*O@J7M8>n(*+FajoBi%+*zzU; zC-0P|ci3?Q8lU<63g@*mnvMI5VRtfer@NHPgBg8lZ2^$ED8sRYy zLJL`vIYc~-#1>c^0U<;i4bN=QLx7{G1j#2=(}58ywtvUIEE$!2Bo+_DNi0KZVvL}~ zAAy^^l(#7>erqy7iSvrqT zIYCHFVXwk;X3>*I8t#@na1=>k3787w`ZlHo?!N5Jg8q>4S=u$T?xBSg1A0 zI~8hUWR6U2i_tXf>0d~9HQRSAC7v4iEyIi}qU#W;b}(+ALV14exn!glzIHLBWy3~p6-O*Ct3>5$nkL58HzXGq5>WI9n0`r?V+{k zPkY@-zdxKz#TE(r?r1V$-%J-1zcpq-$eo{0gKod$_`}X{Fark|28-#C2S3Ka$ZK`m zgZrIcXH4_B*P-pC9P0V@cutK3fU!lT!=bx1nM`@RdY$QFwBIKczO&zZCb%@3&8fi# z+^~y<-(e{`UDxvm3z%~-*trP7tA(>{5+NZ5eefZ%OQcq0XI3jw84Yzh8;@j?YeWdN zssvHdkAldsSXc^@q96h{@FR)Gg!f{Z^Nj14n>WKG16w<=pLjVOOEcR0dp0niq4Ld=h?+`gI9K09HIE=}7(qi&VY93C7kN_|iH9E~yyAY*g z!W6pz39*1Y4%!?bRi1XKs58LGJH+*&1A*UL`qGx|4g7Q6z*~;H6MzAm1?*5PvN%JQ za^mqXZFe&2bg5L`U^?pet@+d*?3k|2I{1Fi9#ga~#(+Nk{u~fSY)%TG{pqiY%?se* z_J{oz<*(fV7wFFRgO7974ZHI}pSMSMU8g_xt^S15vI8pQ_eXQigx1b>&);r)gAsqx z@6rl^{!zw?mkt<$5_`nDEoW_B2;Mp_<;yfaqh8CIcHPm!rtM&F@%#aN=&ma@>d;II z)0`}xkr*pL6fH#b#zxtRV}_bsqZ(=Ep{rp3Oqn6%ZD}&RP#9pq&OhU30N)`F6M~bD z(GfVGU&Y7j0S~GZUdtkcr+an zb@^fV!$T~&zzYw$<+$i@7G+ zmbTB|(2vaK^Ii60|JCUd>_xyblj*qEpASbgd=A%aFkMVrKAV~<^b*jiKbX%&59Ikf z!C>L~t;M9~Cs-_c-n7NFJq6e6Pp9L4w+Eg#9d`PI(e{XfZ3=9+~fhk zk}ETLh-Ogx2x8eW&YaK&rm$c06}!+wE4jXK^U^L2QP=xWKQI`EYyE>Tt4x zu>zMarn8{sx&6WRaJe;Ww?SNi@p}7%Ukh`{Rz-NfE|nes=qx9=G!B_)b2O=_fDT*WIWhzZPs19Y#Bky z(DFECVLqXZBVH#*cuZ;&iwc-9!k`GRV0<>#5M-2bITFk_-1y=Ubg=O$0h>YKN6F4{ znM$OhnUXC=q`VWt44EazsZXTb;`n--v2~kGP=kDjr-_5FdM1{HI~sw_L|~}t1+Itv zHmz@wkm?vL;@Ae`%ne|JOpRs~hQFzz{mteK*Ct2PEWr1nW`(FqNFW#i#C?XkO=DmC zR14Ll)oBE};RkZQadf`JO8g@)0JP&+T=g`bvA^8u&i1GqN1b+y(s4POjQd`FFtmH4 zfw){*%WhljUXQaA(2r7yYqjeSy{dz)ZXB#U6(ONB*oc=u9TODZ|-xGFmL>+Z^f3*=V#i z^vwx{QLnqWH0sZ<%yvM3+MQX?>-DyS{o)biQUsid5iJRJMOLx~ghMkC!ORr0-%Wi? z9?Bq_uk^_j0@(_jS@;M{pE6}?&VA|2m<%zoZz$}>A|wmK3U9iRvCBESiyO(CTb^lk z-Ei*I9q<~}G8q0?hK;dgK{|IaDIpUu!A1IQsp2#ewPYfkBY<4Wo{Oat7qHGjqyq~j z$&!YNQdET`&()oZ?cxXTKv<|7%v6Y+sC!bywj8NtH6SCfDP8-`x~1h)qik()4|=x01myD=ivh*&ac#BRpnA+R9GAJ4$2-xsTE096 zb!hdek!}rDCX?=hl^$_~&$nirpx}n)V5BW}3EMz4DNH4}15;frm;0l?`Xr}3?R$p@( z8NU`T$1LP+8_|RmBjt1h>MP0vUM1{4aPZFR*legs;dRrl8%5bLb;pA?Pv%sk5i}|e z!8PqJ1U22M8*anP=mYcqEne}3zb$$*di4P%i0Kc&Tqq}6v?xrpfLgdtSwY9|Ob33C z_N~>K`ZNtKD+rtx;5nsk|6995BbcFo>2(}$+GiFzUQjzNccBLWj&EL@79*Gu-@Zq83o6HGa6W4e-qHnbv~}2xcm7Ce73zb>eX_r;=&}1CnN-_L4?4C7U_NEY$OQ%vN6E;jgmM;8X363?`km0g0vJ|PT}srP{#xar@OMj z@BxMnYH|8Xi2C(4a-ZRN6ICR`JWC_j##K!8nNkX=C)KS~H(5*~?Q(GFHG_DBVmca= z+LjJSn~EuSr`1-$Qm`4omk4u9(lMJG-cZA=xrvYxVuNt^Ls{CxXp=hbm-ii zu^4EgUdMVk(9((wPDAZ!cmbI6xFr^14B!=KDxq%$^Rm?7Wo3ruQ1ZzdilR( zhRLja}=$Mbt50n|;mK+^MK>^$x)hE6*Wqv2=O zXt-d3M?G&c1J<3)w#I;}Tf6ht&Sk+LnTm%FWGKi8EF$<3m|?da(0G=60!;uv_eOJY za!!Yq*SXYn*{tJ!e+S57z_bmxe>U5h4YrpPrZa=(d@<-QZmuO~FmF>Z+3rDHphwyA z#A(Ux2EC(#gxOTV|n@(LN~Zb zQ<9R|ya*0w@Wx^Gn=;!}pb82|!vZ)e8=fXx4k1F!*Y3c5&^y5;M}I+IC@hV0Zaou= zLne1M*z_7U5?}^rU&4D5$+py>vE=TfhoyCDWFsvHZDOic_p(WZI2QBjd?Uu84n?A= zI^DL-0IKca7t_M}2VEH54_v%2fX`f-JtjIh#!Aj;n@gt;g2UAY+C64=%zS^^rHt)x z>~S9rw&*$mg{I#SYy{Kd@2309$LBoTF@VE>uR~or+}eiNF`e%2F2TV^ds|?>lL4UM zxD#yCKn8xVWdv;?TP|eJ8u?3xnGjTZ-C4)jnu4-gqrqO+TMXtjtlN{Rn5wb+xGqHz zMXv)wFrnVz0OmFp|H3go=i3Yhi}7$Y?^84ihA-X(DEDBnV{L`x539ozbR8k`EnB2# z!qsYwO!O6NWYVdsY#G?~VTugX7u7Y2YoZU-42mMnF>%15~;RXV?3l} zzAE(hJJzxawC_nS+2mZRy-&-9SOHM-M>h&WOip!}Fp0ng} zd!sGj@A-7Rmmq#+3<0Z5O1RGIB;?GFwb(A*P+h z((6D6n!MbzXY<7l&zgr#`#Gff>#}o3y>Id+^!j5Uy*@Lu5zs_1_P2LH#oO)9bnf@& z%$;}a1%!ppxW5hfKAnge$#9Dv76=wBmTyRX%t9_M@m5W|5nra|QshqBfbJAta5#UgTKB*4%0pXc|7>z=l;AL2}Oj0#HnF=!|MJtg-_{pW{x;i!uM38Ir zI=XAtP0!M5owh4W=_5T@0prq`$;6-wNXCmjh1A2kO?H?|^hY}s6O4VkG!cRa#DKBg zTTCWopxX+z%uD{E0g&Sz>hB&L85dC25vy3(P06Zm`rDr8J&}W>nGg8l-ZLdX9xEw ze=r|k-kI|`erIRS_vM3z!^x~oS;B*cw@gk6ZVH(KQhM~<5U=-3pFon2kQ_9R2Z)-C z(a0KY3&0qfqMC}shH#!BvV`aoSOZPiTa>va6wt6=%PDBxG>@^&N1nhuXG%RT~vTL2BxFo0PPwiHCM2g5&bHO7>G`DDMY8JZ;;V2 zEyb>bf*R!`uFNEb<7%$rSYVQsV|pmAWka)DdGe;Q{{PBo9@twxqk3TJ0lNjZqIg)M zlx0*onJ(I5CI-Md2FB)*P8fe}Ew*0W+PcI`FdK_|b-BB}wcw-s^X&vR>Xj^-FvWEd-r>}|U;d06lqxpDM!q+0 zG{`bahA_%}5QKEF=MQJFBD?J#=aU%cPJ5lLWx&Bp{ZBIvqmFqNpv{PabxUBWm-Z%$ z-Q^Vg1$=HX-PzvZ!ki5*zcS~J?Ya!K*m1jDo}yl9fuTYWfld$r@p5Xn1ru^)gCMb% zoi0qGj}LZ%3#fXQ^Wk!@*BbTr2di;elurT+oG$lv7`aj13Q%@uGMo$Ge*hZ9E$!Jo z5aVFUZ!+8&@WKEY?Q|jH5T{Iehr2oi9c+z(!>S zRe{z?@CGlV^aNMWBC~_Xm9ubA!VoKqAxxoQ7I1PYwF13vH>+*35wuiAWl`_AFENip z_ELkehqFXJ+pKMFY{Uwh<J7*$2r37bI=lMv=?4!jQvUE(A~ z2$kGOZXj1eJwzSFFT^#e;DgUuPi$|C6r+3_&nRB7FHdK)?Zu~N+x&OGHwZ*iID}IW zEVhC4LW}+B$GC+STzL>7_xtOk<>f7ASi7Unk~QS+8jT^vE|xpnTU=(_J7P4(K&##B zv?jZ39B4VtV1S=rhw=6>=t4jlU7Gg?8u$_|NUt@9Dcc*z`&*1u7=BHefx<@MP7Eds zF_InuGK{ASnpDwAy6%hunL!FK4wT$&PKoX%=F`ljA@q$HrNW+uq_i*rQ4#86UI|QH z-EZ6tLJp4-5-i$uz@S2*+0qhG{LXR;$r#d_5Z_`Eg%K0XJ;;it@YoSBJXvrGz)iIo zgOyr~VO9*`r%u&Vms+L6nM%ds9H{(2 ztb&R0BcbUK*E7-=p%^d5pPMWx@Y#bj|5TyOm%80Kwc(tjjJt5LJsk%A{@_JO>$6LH zz(c(eSo!vRD2UE5mA9tz-K_;ftQq&!Qnd4|8bDysngZ<2JM~t-El4Dt?xY7JdfFbq zt{n~cJ0A@eEXr(lG+?4UplYJ?5MvpRcpsX=n2`uGm~Ae=p?KB0R&N`CVKC!JnIY4j;b_Z7>cyD}F(iYg2ssXBZk$RYPET};Abd?v26Vy6-4wt$ zluDXAGHH-&Pax#|`iF!i$qvr5=(Qw(2k|@ha93cS^`DccxFqph_NJMrM4adz5nkT#& za#XlA1&Tdppfya;VCpJbi@q3yK*!e`yBlh34wD)o6s7ycQyG1|580;Q9t5L7uit4Q zHDF~KWiXXwk$IAwuP!hGM3C9b3+}t|-u7hn%6z;(J;xp=;_#k-m z?Irt_I~EYWJ6wYDF))E{z2w#41b6v(up&lfoDz)9DRhJBHZoPLdN5}cl`Kx1!Wst{ zuLy{P>ksX}B-v6D9Kg^UdY6P2>2xVYC}p*jtd;uKjQ znUJT2S~Rd7@=17dJBq25W6< zBgg2H71nH%k0E?}2zIQHYHVMgT%HUZ2gnrm#*%V&iG1MFd!vt?6PxIn(dV-EQE(SZ)a@c)T|p?=B`+ z5Vwq%`=c`*&||>+%dcK?eSS#fNsPg^QMs_`nR9l(Gr%<#dL7mqz-vt#&bLV1l%mOo zCq}yzxFvdn0w{SVBaEX~xhJ`gOyZ<#I$5X%$i%9Np@Ce+2n=&YmN-YY2Q(2dB9i^E zMsM2&Q)vP7qUkVG$XhRiSmyHCHB4qkxPT+rmyF8TY zh!}z^O$(m_Brh1x31{EfdI=Ua)Us05KqPFLo+S-n)L|5B}hTA6&oj!HpZ&uHWD*?!Wu7 zx8A+>-iO!TdH?#=zkByH*WbJT-aCAi_kVEp?YH?R@4YWR=?6c!e*OI$?|~5QjEiX zByT{K2yTOeks*vD6Aoh>wg!yAn3xH#L`NzDl$cLKzM`MG>9-*HQlx2-xd(H|!P^8J zfVZ+hr$ZAe;~%AZw+`3~w{i7oE*HmM8AE|w1LiU}-#g+X(iyFYV1Im#=K^%)W7HYx~m9m94G4-T7qq5}o8? zXKQ%n^7ih|_TJWV@6tEFb!BhwTi<-;^3E$)uIy0A?k<+QD5bDE?)wT-`=Kj zh1j>Xx8!eL{??UOUVimkSFS8~cW8eu?QU;xjbHf}v-xG9pvm?tJIkHD#q!Ff<<{QI zmli!vzAEGp&P+=Cd{%Vhxh5&8HE|$9bI!2ea>R}nBeZDDp+AK;903D1sTi0Q5h{Sp zDpe$+NqIobm+;pk$`nfodO^vdtH;aA^>|NejeG+cv~AUIyGZ{lYU-M0qq8T?l8kwhjc_KwB7tL)V?@CgSqJMt zhs9%PK7zYMEu{qz+OU$vArQP3a}g4O#XJhWDF{!|AUckh7_otve_&5V=ytuiuY7{+ zW1G?uFXKYW4}g90Yw36l1sFbNq+mcg#pez6Gl9-n7|AX0fVg5Mb){xV9S2c=h0&Of z?gS}4cDyz&VU^oT==iO*jGawjr%P>%wL~mh;)_dAM)V3M|BXTf-`WZdPtDSmY$Qu6 z7pJZ8MB}Wk%h@z&ghb2^LvT#;%jIY)BRfJ+#((zpPviB1&phl{u1lEr*!BZ^;P@lr zk@j;ZOBKU|d!H1$0kZr?k z?l+EBSqo1Vomr)U%ax%z7KVzsQY=Y)Gh_xGXxc?Ghnp^*0Ys}9ut9P7MLX&@aa2+a zB0I8ppp#*M?6F{AO9`p8B#4KYf?|cs8O1mQ5jc_?Yzw&As4q|^gSDoy&ZKBXAz-57 zfy-FUH+({U00#=Pk|mG*ZPbCF1$+UDTwFyQ6ZK<$EsJoS?f^F-D2{?gj=>xu znS?3nkZTOBs^wBh{hG3a#7i_Sm{!n+aKA!Dw6I*by_C02V3HSjg)=#9lCZPQrp`y= zqSL_LLc^Cg9Ebfw#yV2>OqiWZR%td*q?rij6=v&E1VyCCRgx;RIdX7_7!5bI+>S;YRQUWpVc`?(MyJ#`n~HD&@386+@&EHl_K;-VH_>GWmfB{7_D zR#nfd2|(M$#C9;HE{7>$xJOT8jzFNDz)mg7{bS)hCIpAsP=fW;(W!+nu7`;AL}|SbSiksfzp#OB_fpYU{TqFu7lCM_>tLI zw6rwP*p~8{xSAnd1PZBhTze*wNUBu8JkjF9H?VD~LFVO7vOHc9coddH2#yVY?2xmF ze>IPj5f5yBY{3iIVenkBsN%q;9DyFlAz3f4>MhVoj1AGhC8-Q~Gpaf8W5z*7p0p7> z>%i8?n4$P&g(3Ee7(dQbo=+Z>M%;X?2In+yUW4+E0=)za1a`g-4+>lWRtU%?{=PK; zIy`xa^Ch;D2GkJMjl8DX74ksx+>_{#Z3UZB9uekR3Vs4cU{ls&WkLoz%tl<4MZ$)d zIl?l~6bpkpW}bKSmbnOo6d+QSRyMhrNo>RuF^s`z)hbMmoGi z4N%rB7%LP2<*a_IXR&oEtEOt%phk@7FuQ2@frc6t3RGZ{XpSRIj$1gF7Z|jw(6ZvO zC{czr=%<*aWB3F7DavlHypn}4IN$_4`kMi!m5i%F7cCZfEPl0OV%o@|!D4EbRK@_d zqH8dFMPebsQlM}|Oi(;9&cLP?nLnIWjCx?TswN)5IH2?7nN|slexe2>^fpM*weGMT z&p-&kbCI6`Q)%o@4a^!Ej@{(!!e!O0VR5UhsSp^EuBSO4N*42KMp9YG%TV4-=9UgF z2HZ**OyCn&VwjB=5$8J|hNef>Wr`@pJMGo;Vnj-2Ezb!RN+z7l#*=Zph#<%l2gemw z#GM55nL)E`8tf>n1q-S$G{>w50~xZ-3ux3ZG$&3JzYtehbgEckTb{?!sTbpPyb4?s zjJwJHaa%;*gbT6>BrlPkg&`*i%v_ILyCk%8x!_X5i%6~+uQ`#F>_6aKE-4{Ms&YNy zHiTURDK?}g3)3r}ToTtnp;;2sHD+vz?<-ZziA{^Z8(!;LCV?*&Grz2Y2Xj^$D8!Fo zJBZ0>gFdeb)d8ms)pe+~#d}DE4hG}G@_g>*Nb=Nen+{JWSeXxGl)+0$EU9fILD!?TO zog7O8e9o9$#@3VEU9g)AG1tWWh=ijYKZdMkqnKgws+Hn7W+XJlsIQ}l4JGC*Uy|@e zFH!XwHfz{4yjB(tJ+}BJ5j5DNFgj;ML##-wQLAVcPXDVauE5wi;xPjW0v9oD$dL=> z5I;6}yj(ZbTg0itpC=Q7Q7oWtR<2^<%2b{!h@-8PCkiB^P=g3C!fOEnqgKN@31_18qj*!d%RbSzbNfEq-YbZ1{;Z^-qiUv zk$OGMRH}HJQSeW1Rk4Lck|1cbEZK|M+=ZxcT-{Huq>uA?P%|e>w7Y3K*;0Bx_X6fs z0E?U}^t7a5@iLL~M{Niu1hFMo(RI?4@RNguq!X;sq*9kT6r&RtTHsWpnnL8pG=}Z5-}n^uC!J5-CR>n~5XT16ZK^(HDn^+y-&DY4 zVj;LtQ3#N2Y_V}jHxg~TiZY9ttqjQ!ZaHqD{HIW$gpb6MSrQb`GMDo-?sbMo!dO~L zXno8F^VtlWREX2bFCk`}Tr3-2I@bNPheTnJrtwjvBG~EY_p^^BHdu2;Qh=;XA%w7s zOmdBd<9Z^ul5?LEhgnn&HkM3glR+_%EB+@X$!&2vZcEgQyi(HnN&#O=N&eu+zsuM9 z$&Uw(@BZjRy;S<$zg(^U=K;Qyqd)tzY(szJC)b&D6OH`iAO6`7|KxYE{g&VV(T{%o zlOO)@`VW5cCPbNj`L&_0HBbvCTh=$@C z){A;I3dKq`bk*=3apKY$R4BVRfMqFBHgAjD58m3B81{OD63&Tg2ConHPy45<-FUFB^$-7U^~s-(6!rDhUz8mGe_j3e1b=2Ty84E^Sgl-s8nh&Jg#lS3&ZSz18KJVBD>`ppK_>?tP!SF(p-~*< z!n6V_PhreW^W?Z{P30=XDF^j+o`gk*NKarc$kdukaU;Q3WOJo67FN-iScicd==^+4 z3suk&Q9)DHkVX%?AB!vYEzbJjCr{Cc>P@c677KuVhhjSo#Ey&>8XDMxSC%k-6t5k$ z)0;Rm=QsASKm-)xG>28L7tYD-e*HljV0LoTrfI}o3%WP~tX$BIN)(p@wk7R}p#riZ zlLY<{Kc9#NSmOy`g9qdyBKyc6f$&U|N@Z_p33i5p=Zc7=BeL7}NXFyFsA21`-%J}N zJW#f8Lp`@QWAs8ajR9xcg{H0`o?eUtyZs}c=E4T?l}){n{n9KHv<_(IM(9~dsN&(DfdJV2I`@= z+Qgy>gQ#-RK+K(pk%!JA8J-G+1WHgbxXUoDOr(<8YBbVFhvN_fo2n-sH+fo35e_Xl zH|%E6D7HhB*&LLWj|$YJ~FIy0s51p#s*(45efPcXx8_C8|&o?;2>e*t`@~ z3^8bdgk~p3=13uiM;wR;hYDe^l+4&T&}3qXCFZ?FybDQ6;I}~!LV`Mu$NYW>-56S= zB5QCxaMHyGpI;8@CA+8!`=9)mNTQZaYFw$Tp3tZoP;%fZW2$JkApTqRrp*Rud)BQ! zMbT!%Q=~Ytea9Tp^~* z)%nIm0bsvG8A16+?%B=cw>(WvlV4N7Pi$-vz(pTY#e^F(iMoYvN;tD-;a*N~XcOp*|ujch;-AAGGcqJL82HK67!C zU?yr0kR0vx)ygz~=Py_9hQ7L5eg5=nH4cT2mLqqC?)}@kqB zyVUQmR-tc-&v^BpXI^|N@<*%R3ElPFZ1vM;Z}539ytVp^Q0RYHy&t+u_#O)TWL~op zMLxb3S<*kSLZksna|RWFaPc}$CRAK5%NvmWs7kB2@{-R(k_KdVQ8qA6OKgfcHtq*l zL)oTBbU8ycOjt43E#)>+n=yc@WE#*`EjN7*C;A7DG=k_LL$Mk-)k5zlV7lp4zozJ{ zW5a?HVH<5!Xs~s0Xytqmc@@aQbC7%m+D)P{rC$Z-QZ7nNAj(hTY|7jT0V0iX28;+e ziewocp+E_mRKTTzZD79&hQ@^`BIp>-Q=k_!asH2qBvog|T608v6K^-PM?%BMRwh0u zRY+{cqLD0-(Ik##be+pc9V#@|IQMg|n*(Zm{IeC;@`BrI`D?fK2#f{MqUgFNaF2pN2ST4~72lCqMe3@@rrC|5&qMJ_{J~m#fR6PiMcwzwZ8g^+lC| z++VI<3H?UnC#!3}JYIbmdi=)f--JT{Cx3P~9XN;$b4`gvm_|BDDdrC}K|iaAVwfHW zpG_=`O0jS{9tEMO$%zaQF84msgO15b#{(6%yObLE&~ql%$AK|mkeB5$2g?z*^O^WY zYCVx4(1%(Yvm+70S2Ac_fOYFCeJS7@V3EbmRclf*P}6XlQJipI$-EAN)?je?fu7J7 ziTGfA@0#&Q-TI35UAD!&i+>IG9`;S{^QjjheC0VZSKF&k@$bN`j4R-;uChSJo5EKWwlC$zRm|m zLk^$!)gP{QLch9NB|;B0fsg1`FC>tIh0ne8)VX-=rDo*Gi}5oT&YWLAd-39Ce0?LF zxbXao&prLz>C=PyJrBrYWIHV(^Y9yz`C+^NUT zu08$S+KW#=aq{dxI(vF;?Zh*`c;f7nPaQwLcJ_snr%s)G^0B9$IQ`TUCyqaP>e;6s zKl%8vM;?9nk(0;2e(dSTo;Y>v)Tt*Pd-UY#lTST%>iH9=Pal8mq2s5|Y@B}R^z$c9 zJbwDAlc%40=7qHQ|MAZrd-TDF9(nBXXHSZ+cI-3;wNF0z_!B3ec*dq@gee5eo zzxGh|r}!s`1NENJhpX>~+|}w6pBS;QU%dObR)4i0`ql5QUJZpP+o)x~7W!(HIwOkm;Kl<6~?t4D-H!C;v(rWck=qT!v%88Rt;kSGI@l%gJ{^%no9)I}Q zBafVX;?WZiKJxIfQ%4_v^ugmNj(+)}V-J1#>kmHg`01}cdHmRkN1i$T=*i>9pFDB= z)FY1`fB4yxU*gYB9@~HXi4%`LeDuu8uRrnBspF3vefZR)4?cYC*w?=P&|_bH^2)h~YjzWW|Hc<4*_AHM&{{SSQMz6UM(f8T+_hYlXN_s9eH9l7_w!9!m-{J{MO58rp+y$25;_}rm; z?>_v+d+tAc=)QZuc;w*y_Z@oR@R1`24jn%5<-?!l^N*|@ypIp%>wWF;JqHgRyzk(_ zdk-JD=ko^+e(v+1J8;i|&wu{Fq0b%sXP@WCyZ`W!`wrdvz@huUaOD1j4}Rs)7w$WJ z?~$*5=?h=H18NQ4_*ehx+i$)0ovYt_?YrN8qj4b@WJ%UtG@|_BwEcIH~#Hv zb(+74h1%i+UjkeyUw!MXt8ab(`&Zw-diDEnz4^NT+8gg&d-LsUuYd22tM9-0#_O+r z@3n9L&Ue21+V6e)wSW1$zw>*qedjxGzWM#P-g^73@4xxhJ8!@F_SM(lz53t0`TaMp zzRtgY|E+i5e*5Y>@4WZ@w_dw?^_}m%_QvaPeCPMR{pR<6@9Nbz_~+N(c;g*D=zG8O zd*6HW>UXcc{uVYpSRCMrw%kGOF_`Vl7e3xfIK05k+nvJt@gcQB+QLT?x_cj=LT_ua zz{^KaNPN4GGtd}T36vdS2{abwLI{0?_aPq*rE3b8dAN8L?fn9~QLLF@tM~0*8~2Nr zV4Xqc!iW#@I{Np;*o3k)IfM(*09MKb4`CCvbQ0Jb{E2|q4F&VC zx~frBp+aSNP9I9T@b}29cv98UEN{}w56BtbZC1xntu^Yt-G|at<&XMr}P`lJB+a4S@l9DW47|@!x zGlKt9_g~nIWm4&QCWnd{aP_s-{}l>7{Xea)ievSm&@uTB_gBC2KfZH0^vmL`{mfLH zq+gFkq<{B!tB?F>`KuxGXRBZPhLRPZ@N0jw`j?^5r+@wG>bvIZuR@{!mNon{PTvyL zEpQopWMSr3Yd%v72?3d6)*M~@A`HXMpE(naoME;dK8O1n#Y`c`vSF6NWSoZrMWEgg zWYDbPLT3+T*Wi&Syuh#}{AVa1iJF9Fi>F?$0{JToqF&el5(7VP6d)u)@MpFtaJ{Ok zt{NXlc~iy{N`cZsfaY>Aad}x(Nbkz?;x`;p+JmKzLe$Iz>KL72>#1&zk<<5l>hwLK&lC#39y$te5(=F!BpP1p@t=kM z!Bgi>|19)tUoL0A7W#A|b};nI)l6#RpM;LRz}KiB{kzb|?;=eDAhTK1$R<(fvwa~$ zLoHu%$}Xvu0Njc2W+WUw`}{dZy6bVec&H{t_#IM~NH_X7u$M9rDK_LNNAYE&jue8z zqHEQyP6{dv!f+aMOyNi>Z;%+0XPd(?pc|#rM{q<6k3i*cw~^`W33F@K6SUx%Vm1&D z*4i*}A**5DffZ4{iOXlvq|2;e@5zj^QlpYiMPc@17tV0GNK|1WhE$lcg>#?X5BB<>15OmtJ_p3uEVLmyY9ds)M~$*MA;DTp8$fqKfm0oYX~-QEH7=2b1@8WaOS zzIf(hrlEw-W6U(x3yAvaHC!1P7r^c!T+;MaM^`Y_qk|wC#R1Ro?8>MI`Y5JGgntmO zMT9qkhGNd84TXRM!-9<$DM%TuXp-m>tLs)p^BH$n8st>cr7$u__SS?M1Ru9fPJ4-L zN4&!^h61DoVy`on1HEBC73tq)GsY94D}r;wP>>-uKB;+_00ciZK+>f(fU~0Ntfzt(I_|D9|MHdGHF5TamK?C8!vX zheUV5gu!A!jH}_4qpN<~y!SQ?7pDbEW`cycH*be3>OO|BWd2q(AS4FMV1eQkvKquC)24~UG`65BLaIQy z_qL88P zG^@RVrVKFIA9{aJoW@)4Z8S zPzBkdKqxyi-TBw%-#*xUj8zdz) ztEMGF1*?!{Xl<|$Z!t#6~xPjLm2x2BSCEy97akWC5o#YZ`u#s7*QfXFEb zAp|-C{6aX`GQext-7w18PUR95G+t5$)Xm76P4Z$9ATi&mDjX?I#$HTNVc;-ummwr! zYL|;duoq$#phHO!i2 z>$YpEU5_2h3>Jk#K2BL*sbzhNZfcSY4-NfwzUEM2awbtbFz5(#>BDJ2U6z5SjpY}_ z<|gD8*4+xy`k=@wlbe!fU#_}_0}la4KABD;)sixam!a6N7ZNptHxy!4iphw>7lyJ1 zxxv7R4UD(CjyJubir73;RY`JU;4qPbTG0XK=FrKu7_5<;lB`y22^J@g7q;WUb`U%> zglt4YWC*09Fa`6K%h6370y9}8cKg!3ob!xAo4B=7U5RvB#a1#@dyG?6o0J_Yt7cta zv%_^aQo-DH3J0XBSvoi?$_`sY6^G@KwGrtR1h{Iz|f+(sF7 zTLW_ZR@IuL56oi;Q&3=Ll~lZ7*7NjJ$5cct@h%P+S;@*d>zMNpaJnMJR`T0=4ik zWd>mYX2Z{cE6MzUlZk}TFcw@Sq*aMBv=N~cYi+o2TrEw|Y)1~v+LfL|G$r_U5egc{RjSW6gJ}lyLeRrVNKILt z+E9q&WY3h_(EoFlT+q+f$(e7erCJN0B1X>~$eiNPG0??%v{XtCY!!RPBr!|TicKa5 z3DZL6#I=CmA8CDDqq1GAy8I}#L2OB81El22Yqcyc*z-1tY*?pa(aXH0!nhkgE|I;p zdWU4V?8fu_!0C4EIgu@qD_EvKYEkqt?-bwsj%}GD*sCLCyu+6LY6224oGD2RoS86dopltGcD2`X+r$NL<|zJNkPgwo4JKmnj|kcVmwP7*tjx7@*Zj5`3=A=`o5 zY&BU-LW+E;>F71Wc3YNRu0qqxLmTJkB=SmDl>tpAI5iWRCZlEDg*&HPUI(>?Xwge) zs7ghx7K1qxW%>k-Bb6#76U8Kx8uZINO)dtwD0#v9fJO-g!NMgeRq)yCjWV;|YVl~i zT;7Z?*}#NT@K`XehUS2^BqQOD2T~3%phg4*b4+Vj0Y`AnjbaJ6RJ zZeTIl)@0k^?bTsv8-f?lZvyd{$k5X%Y>ct~i)JGEG_61Ox3tk&a+hfdm>er8Nj1#E zNMz0@SSv-wHA$;Gl@u`)biGC0qS;+TArUuqvd4AkQ8>R8ZSL`U>^$k1a4>b6OW?!X?;I)K&{uN4W3|ycDhGS|YL;Z`KS` zN~YIzQCI}vu**KhYy&|XFBNrC6V3(_8PYndqw^w%dZSfgnPPCsEDREvJlaKI*g7I2)72{?YWd+cr%~L;?~ZcC}=- z9k+>8HnYhTs(e&q^}8kSS9ueEBHS8wb!BnzT;UDgO$Zi4^9NREcjZx%PR1csJKW(R?QBb6&7Ub^Fm<(?yoDVNZaseHbkOUF~ib&P{eDF%0T{X*Koj2i}N zrR+dRg&zT3LNZiKF1jxEL9%4R9+fm&KuZ(p>ew$U9=8R>I4U6(%5p=uEzDpckYFr~ zq7!r}{>bm`l+55}b|0v`dSZgJpM`cy~e3rJitYvFFIk0vmlVFAoL6>PY@z5l=n)LvrKr5TnS&MqvZBk1@ zspWB?bs!SCn2c=Th)t|B35RhCa0Nf*)XmDS<`>hjGm%)%o!b!AjG9zLE0^qcTtcGhujn<;2 zHd;f>@r8_*B7vfk5j=it;#^`|agO37(a?E989RCa)VSl7CnaxJH`fE_*YSkF- z6Ci2O$;(1NRM7!)fSTwUh_Ou~NyVu`opO>A7!8}QUo7Qcj&QYo3XH>Tfn?F<=I z#dtMRQj6-WeVcrB`-pWcUSCU#BtiQ#xpRpM3Egyk$%uNPGC13y$UnD!rXiU2Kw=Pp zDVqUEu*~D&bcH_;m!pS$K!qL@%Ocak&kv~*tYZ_i1CVW{Z4C@21NB(REAXV77NjW8 zs-=8+NW3z?HJm{FptJ^crpDVj>NPo()@d z{Gh3|p$!|odfSk4DaTG0VK*vzu43tVJaAZ%K|vc|Xe+K?EnL*Fl{0AX3`1+%*e!CF zqPH@@q-a+#*z*N9if})oM|2B2SlTI<5ts{J#hYYly+)yeqfr@CVtO5&=@$2Hsotw4 zOUUxF`E)V|)C_7PUnuxsP*HhAttos1_^m`J_rCHmG*UuFSV>ixYw=H9^eQAfH$zAz zaF4v{n59%yQHdrUwNW%EPP%e}$6c?356k2^< zUv?{mu?ppnq&=&O0O1X8abWpGGn1U=X=^9yi`pu^o^}Ve|~m zPbtF;V%R-!$2KZF9{e3^DZ)z?HAbtOICCZqAY08wQ{ia3u(7dzE}G(?G?#%Mrotxe9z04e0E75#5LVzYwLn--)y z11O6LG?xN54M9^j-_6xKIPkLdvYaofg*X7KX~aBsBMJSgNG3{?yRg_5I{#|ZZ`;It zFj}rdTdk@}62&A~3MNL`oUdLeWv~Xbi8BW|0OMyYR5L1R%gC9;RkA1noNsHIqYSr&pOUasWSTj(>^7BHB zkOH@!%3O>PcNdK_I1DF~ajZb%2_R(6wu$azl9kT$$Us18&X9Ge$QGq&1hOZ^BV|3q zRZB4(m;H+mR86FIu~=|Ni4YS6{9-24NLJOTAImZv*KhhWiKuGDVfrK$O_Ny-GepS! zErNCBa3ss9nbDMHl^Jc~aR3}HTUu80;d5FJ3~R2l9y&EIQ>qt?HvGmW>RZXuK^XB% zK~fEmkpw9=1!!SaYuH0;GgfW*aI}lyE8tGzXQh#1_$6hc890~7UQrJg5JQ`u$DKh* zCMo!+iUEv30maf#w@5mk32dmElr+o+!v+b+Q8d;njV*r1r0KvHP})T9kPlpKqDEul zYU194^O>@S{uQ3VOXV&O^g^(&G7#;Mdxsb}lhRtuXcPH{*=XY`ZV1GxuRHKI3LvNg+(TTi1&S#`@U{?A-rmhn$8C&F}1W!N@dM4)sTL!%fpD1I)+5U!VBHxI6>JOc#dJLsevrb zwd!py|4z^u215)2}LVFJ_DXm2U{a6 zP);Y#g4mr;@z9d&7QTrZ8R!JDwvXCIosTr%?5bFVY81yzhj5D~$&tlu*g?=i@l9vf zsxI5rcGPW;W_Yw58lhzo=8GgUOdT34x?tJqNYZbOim()SY=`_$wuVdG(P_RfLp@-pgA5uN=a7T5)}u%I zb6cUh#e#~3gVkm;7qG4OhViJ4hR^OgcKgxK^_o7J)zE7IHd4pK)(|c1x3J(Dj>kX@ zr393K;|McD+a0hgtARvdWy|g0;3;b3HNo?Yb&kIxQ@z-(34|hM(H+qgQ!n6oPR7JJgL4H(j5#z+N*7Sf+@id&!3W$DtCGg85iK#8cMR^lV$0Eh$3>J4fH7*m*kJFQ}$ zdK*C$7ERoMURmQYaQ%>_L8FU3KD1ljfP4Y!I(Et2fmE>(trdlURv!=tVpTa_sl?gt zR$z-DBj*v}?PPVyK!>DeMCI7}$rY1X_tSwf8E0vQiH`6%u;PBR&rr7IG%X|Qal_X9 zCRTHbr?$3*iCsIII>hXhEV{u~V+y9E9Waz;F2J&{$%9j%He=^YF~`GtP=Qb-?Xu1+)Dpm@uQ4l@ij z-)51?4L2#l`JlondlCWzG}SndnT{9PJuvyeoLp+638My9BqUdkRaK=Je8BEpr;H4l z6mWY%q;%^{3dn1(DXpc~2>MY5q$x+Un!_|2hJUZicr_jhwCoOO0u2*6!7px{bBEanHG0EuL8qpriB$-c zZWzC6C9&8?jmBOTqZp!-a(mv?n!4k&kE7wY9c|~8OXH(CRdnnL6cw+;#MkLgKu@8d zD0Vpeaa(XWamiy^>H36^2Y^akRQyx|L5M9I)AWZ5k-BHqTZSwa^~_66xk{+HypooM zWbUPqO_EDN0e zvY0aX3e9xg%GlYQX7n&PMU_}gz$#x=yq3+RkMGP584uOE)KM}4fpPRBqk3)xhV^k6 zDqKKJzPK&(#1-*~5NX=&mj3Oi#V)Li*sr;vDq`Ymx)rIz)W1LMQMypIK#J<|nm(5P zBQu9Jq^UP<< zH4!-n)J{C+Ez(;G7^tC>!Q^lCeT-Yc6%ojdVhUEiK6IM_U?u7(Q)GL@15%|CbolTK zC8E_!P?R+cceHSpt6LN5a^^@#8gl&EnOwpEZ&H)pW~bIFRJup}T+CeRIi8OmCvUZt z1w03DB#tF1p&Q}5MCsud<43X`OfVY?I)Y#@LUjq008{Jtwa+i#&+rPJ67ngc-3v@9 zRp$QZ89S4gFO!+9@T_253TKyzbSjrK(elV;mXSb=>Q(4m_OE0#y8WRaun#CT3nLb< zWeSn_M2NQv%pWVgF6-4YgNr^hQ!qR6nM8CWM==F&7%RHiR$4X5MD$iBbi*Ugi=7Y4 zh6068ha@5P%g8Ib3_Qv?}#US*&nZG*>|#dvi=yAzKkF zQU}UIyC*i{v_U+oMZL;6vf1#0R;wq4{g%hf1+5LySYg;3lHP)#ZU!aC1ft0XVc^HG zt`Y|H4kQmF1L=qYmd1(`mZbm_D_t-c6X>>Lk%I@+5xOR&QWxb%^|AH^{2d3%40gMU zE{df5<_H*MA;Iw8avDb^QuMeKVhkFiDAq87rUw8nEEc)bYN-|Q_p1^z>y4Q_xBa$N z$#ULSX8L~#MJ(2hQ}6z->ukDeODFCJadAqa9OaP5x1VYf-oRwu8h=qT98zU z-YTAqHvnfr>eAcjlh8E{0t&tcv0Hj)J)|n`c47nx6umlbB1*clVSK#F;x zj1$UAENG-!z^_U$24HTjkimnUE~&&fnCMAKPhq&g*GCf$(x>YeZh%2Rb#me)IheNO z9-(C@NO}wQUL(R(8EOpjmgP}Br%?%G%x~1@bKH|{4_SPi9M}b_6H}<@N_u@VVmPY; zYQwr;<-Mv`uu%K#fouevA^IOMB(>qhrJ0Hs+q|=w86BjUEMZ_qb(roTQLE@#h0aRV zWQ?%|Fo68md6YsDH)=DUYw?%l8by~?3I#;j!lX^waA4^|l4FD{S zQmfZsOEzMTUN1r{=xG79EH^tdp>AtFx7k$KdNmlp5S@33=c)HAKfRYfeU}KYp?Mcu zxj{*~6t1$F^wsI*q|U{pa#BB{*~1$4-+bu7mh>>;UqT&|#nwaEJgv9rfd7U33CB=nx#{n6+%rR?-~a zK*#9|>plq_P^cKz#^)Y2D@#{ek7nDC!hTF7Y4k|g2>Z1ddCAfz=94K>9#vci{Q><< z*`&*fi&Vr4aY|fs0Q{l~s|!9F&r*y?GZiiZ4!9WR0bvb*iY>8giB(yUzgYH!=r?6S z&87+Yt;xe0EuM&z;GZ$CELbvS4!@4|iuHFrCMNOPnlV>Ke;IU&8uE0*FQW+I53hqD zs%;{~4HHhAYJ1%Ou#WBXp2gB*1e99hGMT+dTpS;NePSIyKRwB7>9g#)aCu380`iQX z6GJ1HbeV`D1ZhlAbQ>TM-6Z7|C=_TK&XC~`-vPs_a<4o;vFfn!a9Yfm?Ch7u2!hS z>vc#+8dbGSDkoPfh?k+)uyruXn-1@b*XT9|!OTat?)Jmshx^MOM?a_oy_^-5{PE@S zvsB{b#mTdaXU~t%l4sA8nPmPXUCHHzJenMO?J@y1j5B~@Kxrw9RgVO37V}(kzSl)o z6R@SA3}UOpW`*yaHkfvFf;X{C5tt3 z>vaX!0cIfsZEYE964F^{)%-XfPhSX~h3lP1uif=f%r<>yLNIX3?6MgW4nR4^-3d?} zh6||E(Qw9BKC5`a)AXqGKo{nzAb)d;^ucmRS{&P%^cvxS(2)GKfRx@@E29vWSy&>Gd4c z4&#Qm;#}!Oi}$t9)%)6q9cn=@K0W~GZ2Xc zwz7Oh!$Qvc3G!oE3iP}DHeg^21(9hRP)jw+W z>Z}|2zmD%WA>R-)^@!>SS2QoJ!!ZUW0MkKJ!F|L6fYToHJfQ&*U=bJoL(@#1K3nEj~MRJ5wbMmq(X@U zh=>7hM#^1f<$_3Ri=wh7sg)#xwwSW8|wtB4of}}kv;Q+}8dORRfnOu#s zsZtV^STo!Lf8(fiZmD*;n$lx1Oc_IlQjDdPjcT}_sHH~Gu8fGBi?fSs1Inuwn4m_H zF27vu^;^{1?2qG988r*#bIh$pv4DDC^%mS36*Z%1_GOtlf}%1WFNnpEGy;dOU(p5T zs-|%+IkgMU8w`H1PNYIrM`mfOsKJli`0=VuC>~8*C|EtrOh!4+h=QJT5Cihi>Voc> zDPr(wTWevt=0;5ffxu5uNsgzz52@PR)SWW#I{Jpx>5DV*+h>;-FV0R=&(DufF0Z~5 zj*nlSDW!Zqd6v1zve9XnVNimPWEfE9&~Q>Zu(t#_=*RnKGzWH@2_kh4^gPz?bYk3u zHtBe6m{v9Bm_?~xmq4(WerOKRoYb`{la;Dm4sy5+gmRY`gw>9by2_gp!N!Ku;KV=* zScW=V5YrZ|aEYFtC2%2zqRoJG_-JWtDN`&zKQrC9u_E6XEC_=h*jECkHF}KV>4okM z>BY-d+%;k6*Z=9jBiiH9`zImWu}65aZL*8O9k!9mbM}^5(bIQ=g>RvMC`mc;(9n3I zbfAN(Rk=WQgjt+d&}3{3F>%0F4DN^&3}_jvF2#`pMk7bEb{^;xRacfKi%oz1>ReZn zw5vzM4#R@xY=FEss0E^&FRNJ@v6X0Lp!srctGxIaz8s225jGKQb9M4w4`YmwT!NA^nU^p{>}UQ5+F)lKR-*Vxzpz- z$El;!ljFqs^CK~JoJ(GuK7DcY&GBX8?Ag_KiCiXOJnG+BP^{Hr9Nvd$g&~2{N2|bx zKW~c^-0a=>DbOxcS(~ksL<1n^ z6UnO!zEQ(YE4aZZe@dF99EovNNLaJT9|QTisHYNFf+b_c#AXdH$y8XE5do!W!sR&v z-YFatjzCU5qVlSRZu>*kI+EyovdTCjk-0ceoquzA@**L>yh!FwF2xs#mnSd2I=*~% z^!(&fPDu$C)JdbH*;$z|Nh9PzZ^OEHzI zltah_Pc5wqf|fI|vxk@-MY>h5fr6hs;T04g;(>7V7UJzXr+2*@x<9R=tM6Y+rj*ZL zDi@NRxJq0epTB&0^87e=d6r0BCWP-U<;2Oi=ci|v7wLqW&!jTve0sTT{wjxXv_-cX zJN*bLb*rdVpk7M`A&Zt^aRl)If#;8hX}Ey^V?L_?3ols3Y%t+q`^$aA35&EPFZ z>QqrVK^IJAT<$tCe9I#WfOo1Z)dDvL(RV$zg(VfQfP{wNhsH-7h9!?zAeQIzlC>${ zdSUeuY9=;7o^o{U%zjBnj-O2$<2rUjid!V~nrtcDftsX2;Ugd<&O*ZQ0$Lxf6K9~FN>zZ z44Q@j3pridCEj|yNu|=O!WBZ~iK>BF>IY@4A!v!y#5pREt3>i;;_~t=b^J1Uoa7z7 z;6J5byi_u$IW}SiRmd7LvS>AzmE*#k=??RA_KYOE5=Y;jXEW!gFU0K8^Yhb}x$KKPvUZI{drc*nt(wXRmnSEM zK_}=l)sz|Xv+QaNou*K3M@9DF{8GRH2mx3eBE4<8UAhU@h`fMJk5=}v`iCWMqFU7n zO-!gVFRrbltL36cq*{`2ayE?Ic}A5iOUT27Q$Ov^v3m+^+0f6z)Do+CqkX zact|B(kPo#P<46afKNLC3U+F(qU4ZWk3bB*An4ROqEJpit2_)EPCGQ%kMqa*u)TA1 z9_*fNdIZ64Pl}j-^A-pkn0>Kv#djfR^v_MS&RZfaS>Pl0Ze$m2bfnFu?BBzs>$=))4)hbc}_qC!j z2`rRH42oM=nt(x~7a0frdaKPUx;^T(8D%5=`Qg@zrvLptg*+q~W!d6$M@vgBS=VD_1xZp(Iwa}tdY?GScZyz*{=B& zM6*_Xj7G)js}5}>nan~BQHIW@Q+*dOyHU|mV$Wd+NCE|>tgtL%P#Sglx400w%AqaP zY%7;my)?s?q{>p1TxL-xQl^QyraEnF_#6QQt4-xJt;wes*|c@9mH1vvGz#JnnX%lO1GXka5f_q%74MJj4%316oE)D|FKX9*! zZ7okQN0Kf@>B^U-73CUoIO2Wm(5p}S@fF6M&*$n5Ie86LQBwd!v)t?rq2Q%+WJECF z?DkkK&m6SBKqm_sgJG3mrqZdbk~rs=6H;G9OK?OgtB`-G`Yd?BZIfytNwtz}=5m;d zEOcEw#Zt~w`kd|Y45VqbR+LQeZfddm45#XcXDpdZl9o;+C9{||MX8={HuYqxkcls7 zS-3b+%*(_Gu~~)R-R2c%XALU}-VQTriIFc#I-DYooWHC#Fxg{XB;-$Ea=`c(m~;mR zW4nznmr@-&DZQG>_X*`wZ-udQ30F^pRt8sdtI9!)HN$6^sUe8V8w>|UKC7ScYPdfc?)Yi#cTzEklPhULwE;W+P1S(yOK(hjbJQ# z-oWo7`pedvx*B5UyplB;Iw(;dP=N6JSuCDa#1oXZv==sQf1xsBO$j)60P(K#<=gSr}+ZnTwO!gE`<) zS*49gYsC2AjkHW&OmcopOm+##is>grY3b>jg1kvm8$4!uBaB*CG$)0X>xP{6AAXkz z5ydMhC4-dBR%OW A_0)|0&&Tmj)ssAw;7y94?}aa7Tmi4mpI;zp#cfR2h057sP? zX_k?;30;bSX#VEpV!2~yS*;^=Bqyfl8O#t#WOVvC@L4KiwM6dC!m^HelNmEnD)>mL z%xLqOzl+clB#ZyDp{N3kS|M}EfGE$iFK47iSrJQoCUk&eKFI(9Hw~dT6{H!tG#XC6 zyi>Y6x|n`dZM2oXnM@R<3ptL&p7f_v^~ukNjALDuE?z(Aa@A z2CQ#z-BCQzFh$OSE0TIR2QQ=;b@&ekUPPzMd;!~T32ivdGE5G(_O3XR^iod4`LN zDFx7zLhRD4q_x;4&s<$azFuV}TVv-V#r_I5p~#Jx_%}v9lq3;-7}nJ|vK>;ggVd2p zYpaWTgug571VKa#%;cS8Um&re<5u%!Dg!geEF9<_5=INhlA)$GL8msz3z_o^5Xd0& z%_Pp3vMeSOW-=vH7^0s!*JzPtRb$iYF=*Qz4AK48FHHCzZn&vLM>L0YtQFXAFD+SA_5N89>)~ zH)x(Dph)a>J5fn&H9FJKBUHH{b5vIgl3X_GwsOf#S<714OhzvwRTbklCH;f=lsPU^ zX-!ThYnoKBav}tA@CkI=Ao$$$c}`Hd;o!v~l3F&cf$#Vc2YA$7E{Cy==7T!60HiIR z7G4<4R>+mmOIj#*O{0`As1l8jZLzo4c~=3sib_n*q@R4nZ_6 z->ARx>;BN6bea?J*0}<3$R2i>n&HiAP&SXzR} z1WAa`V!HL(>$+9g3bXsoWJ5gd2j3;^maM2((eHs{QbgC4s+5E1FJib<7RJ4p$<}!- zWzGNvZH;LTakDa#X44z*=2SW2 zC1Ash0mWd4acg0AYgL6WQ7V$A!{**jv`tCo6hz8mlyS8)5GlB9*K}rBScDOkkom$9 z%9qBu(-ryp7~rAr>NWHnjQS+0EDi|Dz(c`TDu!NCAx0-lA6{S-kafp+98VtVsa#2s?dwU?DjxF$ap(ip&}w3$)^AF)f4)nCx()~*iu zhlr2#Y$2`=HABl}RWvZ2$JSryu!GE&tTkkMy2Qx^R%PAFooSaZx$n)hOR-QmijA5i zQ^3Zr^i{$qxJNY|x`8HIu7~cNo=D2p-E{0GXG2>~B%9=ClXs@G1{j9;&_4Vw4I>x3 zJnDL*lv9mSp9{W@j<=33SrF4ya;Ad54f`*fdMdjNc4hVfjIbfYAap>hB4U1`gXBMS z*2Oy14hUly{2d}ckXeB?YR7u&sMcd3M!q!KxhZbhO2`0$=}R2^LXXL1X>`gW!d9u6 zbL|G(cqU{3Ie8NBA+ewV1&PC_X=N{v_{5%RED>lO#axT&wiiOmzxI@RY zjE>(57)aI0NRablUMg!9-z5Iik0*7F_7tuZz6ExHg*FAKFJ=%$YkU~_9S(cMX`EyBt>5QQODVrsD~_x-cE-?qO#L&da+l(kWsRpmoE14 z127Z4I;}KC1V$a=+e>f=2Onl|Sz0=c;iaCK{)Sq<{HX@of+{r(v zb{_dW96rx7Sqm|fv=LJCOm*xO zoEWs;J={bqHu#&!!(tp5gQGzt17e^la|0CGuh*ZVm4(m;{=JxB(tI< zU}mxztAQ=qx5my9Vo-iiIur0#)pCG|Kg)=Ny$UkUvNh^KTQyt_H8p{|ZndDP5WD!y z-IAiaHKKmZpXNS)`hHfR=vp~#8bS{*9WYHoA#jSzijaJi#Vi+e%-%&v$0`)OXS`uR zJY&^VQA{}wmnHs6j@lNx!J5aJX*=VHIcx@nvlp2;x5}IE(;_U`7LPD@R zeMZc7jqOprs3w5`E@HhpY)>96dK`WeqI1}R{D|w~i9vcx>LYvlZZ+hfhee}noM0S? z8X_IqNt$Lzv*7OP%LnhVl4&)rHkT~?w5LB7b zI+cJ^K~lj{R}EV^w0j8=pMLQxs^n(VShjhXJD)+lHuicf?hTqsq)OXR|g1BQjIL8W96jDkr< zTg^v#+iV=M&v$r}9hw)?q+!pni|5E@Ss?IKdG)BQz=6O|RmmxJZW=Za1Xs03NI9sz zwmX$p&YNOugi6&4v4sKO zsGu9fF$D}Mm$jV%UACTXnyqeTS4V_$YlDM%vhMdbqwMXxP7?klDA#3rQ6#rA@Y!w$`ja*{1P!?UU zLfZ4FBEY%gD`cfoLcY#X!?58})}IXqZK$7ME)fGau+}sfgE7C-Eg5lS6at>5>c{pDWW9-$#Y31PyvWLIbiI$89}kbZm`R#|4_diA}= zbQlEvJ{XB^ry30kNXGC;;*GV`sBE`;aV#@G2|p$h3rR+sz|i1AM6XvinF9#wRk2;| z{KyG(oxxGiDpflUZ!27_w&4xb9@~4rl1W-sg8^~L>$k|Nt@LZMT*Qf2HKr{@@@#hK z)O2^(DSn76Fv?7QRHy;${vkqGB5G1OmrB&^3#xiM19}be8#@HT1MM8M7=B7qMlD86 zn+K|pydf)_!#rB@K{qq@H$p@%E!`gCnpLfac17%2o;Q(F8j@iQ#9@2ISf?KH8y2)a zk!LYWmnx^j+@hG5iz4?*CC&k^2~ zvzX}n3z9|cVidL9qNuiv1R`z|y!T|%Syb4=^qm1GN3D^Gb(Wa%YD!3PLUBd62f8_8@Q#~3Sj&#X*Z=A_RAZ!iK&8@NbjiL-O`EcZ;k zOXCENv8Sd`_%m-aSR!*zu6hmCaqHtdGbTm#Z3i-5t^imT|{{Fqx-q$__{2KznUg&4^M&M9Y z@i?bAsMrCE8Bv8{$(@NhI4%;ngH18b6Wf4&f;>%kL=unkMvh@sr9$)BTQt;UTDN<%sO+5hTed*P-{w(BBhh*Be40Y1YaCY zEmT=eP9blHJ^?O=VJ>$R*>>rtsPVFCQZ`TYjNpwY)77Ge8oTF%TFdE97YH|B7zs;L zzaL7;Mjy0Yp~cWAk3f+hq}9|ylFo`go$a7g$vSqq2h^tM`;ge!U6~o#o)vmU-a_$0 z%J6)@ENYjv%6uZJ0J^Bx$!o?wTsEALum(&_a!K$T06`2AGOSFVFt9?0H4OoeY`?20 zxGXDGfP6)%is311hlL}%yB^jA1BMCPa@5x44uCk0EKEi*P-g_5L|%g8CF(33m#Fql~Cu=#13RrD~bfHVP_3bPzkC7MP?>qNn_a4FTna5p-o ze}O)L!U9-R99Ld_#8rTLM}Gb?nLN(DJkBT3kHjy!L|86vM4EVr=8D(OqRVM_ipl2} z0?HUcw^Me7zIBQl1=)t*^+{M_9@~mLM-S4I76ITNbRc^ zIsNFWb8tNUflC3+_bbQ=gpF1I05q~b>1GpRvMOfNnM+gkr%mwc*f3!eutrhxYRzNG z6Pu#4v7*NEcguc)dNzqxWL!vv1H5n5%#G%b&y$oKE%Pr<+@>m;PqPK`y4 z*UXdVTX-~eA%(uoVrYmU3cfU6xdvt|k$s&Z*lvard{Bp4O>{aFAD%*ue?hO(G~~w0 z8I)oD1H?o=&dQ`@h4cXUUO?cG&VeG-R&ppX?T|S*v;~H)Xxy-X6*aDjQvN)dIDVQr z`!16%4!S-0@OGIrc$Ny)~X|Hv8WH5 zG4n3YEgU4$jD6a}5q){V#q5a|p7_16J;)P4NnkLoC;nqJWhiEA4_e;4;C}uW; z79Z#)O*$GcL$cU8;Bkc6dekSAw=~8!Sd0INUKex!oH34+Bq(gZ2QQ1)eh+N^}^ujM9cyD38Ll#6pMDk(Cys zrLv`})am)2X$=_UGrQ*LM6FFAIJc_a6D!wZK?%t}X^O66AkB?eO^_kb&&IKScHMj| z{GoCB?CQm@U;LY2KYMZX)h~bX>+`3-Al2-fr$=WeU;gULlVAPq-~9Y<|LQ;d{g=wgmgufA{q-|KY{S(=UJd^|!zL@~fw3$HzxcpML$##q(dkc>3)5w_kqqqU_V(aD@~2 z!dc6DkrJ25J`nJRgLl(nr5}qZs)Gnt3LeV#A2Q8=$m2Yge+hk%`mg|?k_-aq;MmU= zEe@Li?k}c&RD@RPo}$F?h3Ob>uOta|O%55BnSjj5u*J8mWV>u60s9X}f(1R0VPcLnXM5e*EdDpFH{Wv%mQKqmMuN*^`g{ z`0-z9AN|QkpM3J<$tRya`Si)hpM3oBryo7}?9)&A|MCC(?6W7Ie*DRw{^@5Q|M~y+ z*^@6m`{?7(pM3H8lb?O|r{=(C?a`RucgKKi3iKl$tn{{5#<_?@3T`Ql&m$9=>v zc=E|7pU1!NXP^GnC!fZDHvj3<&%gNbAO7s~Cm(1UsR^6@8s_Gf?c=@b5$FaGS4 zCqLsK`Pm=;{>dMF`tjpO-+l7YM_+vLXMgquzxC%o<1g~Xlh1y}-{bGP)r-?aN-TQ) z{g^c;z;xmnW$IB9huh#l@}`U$uMYOd0hz-<@+dFFc{KHUuTxR{4Ku-ZS#Fpp%v|2Q zNp(8ucRQW7(I4W7M0kvz7j-{;V?-)Vwuba1fr!nnGvY~XH`LtJV^Ckr>Zg()v82M*DE|$ z18inc>@YZ$pqem6`afo~D4L%RhSOOP%m%$N(erTz1=cgU>-Bw_K5#_ z8}+@;X0f?m@PCtVv*p)3tassJy$EMfI2iT@!_DTf=tkSsa=zPiZ$|5zQSbGtw^*$2 zHmlqHdc6!9UgS+?<0+8#sz39?*Eg@;-ES82SNAvT_04p#8TV^*=i>4rRSPk3&X@=Z zhAC^L^%5gad_>c>NnbWFj=Ioi3yvRvUOLiQsDj}~j0ZPwR2(nM{APn0w*$aJv~V79)QYc(Y+gXDQR2Z0GyiYre?s z&Gl$Fp6|EQ(HzB(H(oDp@0K^O?{}M5Z{Hja_xsss)Md-f3>P;NX-wUKw*rp|SPEc` z=v0s|)>+@lG}3naM>0{+XK{Vx`a!b_-^VOsk%ksTv;zS;ogrT)9>N&N3t~e>rNz7; z=Y>rHeoQnyFKj2d;>wtpU!UzQ?U56&1`pn7|*9(|CTh0{(QPw zO%C4&QLtQ0M`1XeT@x<2+|T;`?LHa@q#P~}!}%gyOx*Qgvkf0sqgSu@_nZB4a#(Um zOnrB--0g3-%fqX?ht2)X!^7?NZs<)njhasf4_n0vVweM|h71T#zxmUCQJt>fr zRoD;034=uf9l01ri_wq-V<39%R@84-g3WmLFmFU5YxH&qQl-BR+F{*i+A;~o)8HTH zoyBBxzuDeTr?0=iSvTF~^A7+6!o%Kgy&}LUVy1kq5s7$@tn@JSj-_EC_==zpi z_u+ar2}zwitghFqVX)fXt~T>9nvQ16XuF6;tKN39ngyH5=*`>B&0)#;JliZM(*e1d z%hhIc{h!|*-d%5Z53lYIhn_o{d4Rt;S7OS3n*@09t%j821G3AY=t(aGYQZN<@89&; za@DhJakL}Cm&)}C)&|k+*lEtkVc4vuwhAE-DrSBK_Ni{eaz!RP*#3P2jLYiJ$IHof`>zK> zA2|JT5q15L%w$Lbg9vg=%Z>bLxY}1;83GhFWv zuWk-+A8zmO)^~TW4tIyBUFd{Uf5Dp5Cyo?ku%s>L>xK%I*2+mjCWnQU;(*}wax-X+-I?DSta^YqE5+QEUI)!W z1f znMvp5oZgatgg(AFM5E@R#V1!NJ!k{51kuwZN3P4Sz+{2?isJ)&2V(^7Z)Th6X8IR^ zj3@qJIV5Ut*bB*6_4*@172JL_yW4Jd_uQtB{tr&N6NbEJonXG0^qmfJ8?M2Cc-ZJ} z7xb2|@2+oOZGQJUI=sGKtTy4$-)y#bcbnyy3wgJHwFOtWzXymD^7c$8!7B3lvmMf> zK^Xq``*1=?`2F4;?kCgDVmY7g?|*v}ZSH1+?qa)fZdbzr|7|#*&aNMLTbKL0@UVFO z_AuWcZrJJwXKuSdnytOLxUX1nSw%0Be`+#)|D0a5pfj89}_bOmly-Y}XiTXNA06PRNA> zex{5io}@}XZZ=C}^F(+ASrAznSE>+!BE{XPz=>%v;i%vYV!Va<83!&6X5nuZzn}lx z{iNF;jYvN1LEZ0-`+>il&!*jOKN?ME%QyEUUPS)aVD>mo%tzDTtor+K)EzII<9@R= zSx)=ccRhnDEypIcK`4Hvw!>WdQTa&8HUUGVd{?OEq^i|?GLl| z_aYy&)kWqSfG+>Fh>bLrluClzDd-p%Ag||Lm}9U#OWLw#KGy%&0LrxP4(Lh9 zdq?e&6LaU6X+r6uUYmu(`)~4pc>hg4R(`<8Yc3&5p(u$b&X1q9tk~dubLj@m{JF1`Z1g{^=-ND3hVnV!jO&LMz##E#kyNBA~Et zZZ(Wnm%p6-AI1a1l*4z2@pv{37p=(<9l|IY0MHzdaaf0wR=ByD1rviE7we{Qv$)%Ft$s5e%ss>^)@V5DN6~ou`r+-Hw|toQuMgwRDvbW`_3Pig+TOl>HJ{8T*ZUyg z{&byYI02UUF!r7Pq~(k{p6@R1!rkqvv)nGD+2$}FT<>=~&fvSvVLlyC@7>`ry4^kO z?rta3WjJD5@AA&y9#-qS`|oeJ4>y!Nqr?4rHxD-d_^?}S*Xw(|?y^sE!=MVm$6|9| zs?!U)hR`T=@hMt*aYSF)SXZ)kqJxF$D1lb)jDN|)UxM-i)ko27&N%K(Q<=ppB@g@q zv2>ivtcLxVfoNpdK0vbh@r#l_xGn2gmMN+T@-P|gAxmJJ#GEpyI|#@{^wk-uNw|Z= zbA(S1NJWZg;Eg?1q5vn@!jqu6%xi?Rb88y%`=JZs)^j zIN0+=&X&6a=fHn?x4V1294-&jXgFRRHnZ2a_6Of3dp?HWF)xWwA`)MDy&&(_K|c^ofS*;=G;E1FQUazwtZ=bq zE13(ukjuK{1cBfJB<>b_^kpu}5~D6_;A*%;OXUBMXzh`2XIHx5Vw&W%kd4xkijBVt z=abRsPa_DL?r6QngW@2~F; z*L*+I?WXO$+3u$|Z+MF)(e8J@dwac`?%xb=9{6@|=9AE`*LaeR8A&|5|L<=m)0-ic_h_?Q&DZPw!(lU6^~sECR+c{DF2$fJDj7T>$Wmc9 z-S~tUR2*{KI(%N(JMn_@UP@V^Xk;_gh+3Uc4JOoO{)OQjVpM2eaX=C%Jd%H6@DcDi zU{D}qVoVa-YGw+~Pe|vF-k-4@Lj3B6hPH)aFA?g$xBs|MCjGc9=4()9WR$~knAfB9 zt5Uw8WD@MA5ouXjiJ5H|r9PmSX4C5p=E$s7yPYWzn`4pXjYbU)*)oj({QyO<_E`Jp z6*hpmR*SEa*~<^(?$9kRSF^j_;AS>NjNR>r^L`YB-7%dU=?%ehz~TA&w{O3H72jq1 zSJ(6H{eCSRRX#L?o|F;KP{@d^0-Og@qHgDf;ukY74*Xu1W{HQnE&N{v6Y`~Kkp8qR*Vez;xnSZsE?yZgffdV%h2*XNp@M$DI9 zU9S(f>)*VdN2BOrvAQ0w53jfF(VNC4$+Jf9isq@pf`CY; zI%+|q-PJ%K5QJ3_m~WyBK*ffZ{0N#@S$>((lA;#y2J^Y=UB4do%%+d7&tk3aGUn!} zW{HFwh+R{N#Q{Mc3LF++E$2hhx{t-GhMyPPEBSIz9mty@1;MsE*(*kgL_opgseo8a zSB96Vt1}Tk1QKYv|6U1FbyiCsqm)9TRA+=RB9b29%vD& zwOq6D^JvZ`71B#~@IFSf#cnoO1nzLUh^EWIxIYM|!_jEa>JRAgZ?CtvuWx4KdwTO5 z+5`}$>+N{*YTgd1Bfo#Re{+AmW3uz^;rjKv>*X?<-q8)-ynDNzjC?Ox&hMh}!zREE zO+L$XzFPK|uiLBnU^eyWY=i!=J$k*Jzj?=1xV^o5dw=jf#*35n3bJ(AZ;TG>C|cg# zN6~J!9Qd1IwCr<%^1sb`>-9A+OZLp z?T%axnSt|t(R@_21`xX%JYiKwHO)8)`9e9CJOc_BUL?Sy&7iT4_;T*%`}@1={lLH9|K{x>>`#WvSu_g9_-w=Z=3U>vy&Dt4 z*B%2dZTgf{(Td)kpL4&NuXnHS_IEqR9Q{K8SciyKrPGCuDHP&v>Sr|{`BUBU2x;Z& zE7axkzDpRBQPUEsBeRgn5j%+Fa#S;sT*53x`59pLWoT3K5E-L(h9ljoAkuA>JF-JW zG*exG02p40gNfdMmoMHQu{E=am;re#uY3G!H2z41EuoIEA|(C*r42Gzy&~FbMpLf@ zX5MWp?4)^;U~|Oj4*W5X&HuBtUILX>(s=G{b}cscV4`QSJflK@wvm;J5|id^0tZq4 zujb?Nk^^dS7>)h@JeZHeY1ADqN5OO)E@ojEjTYB~{<_~^hdlImx9jD6v7Rp$lkRLk zSijovUWRNA7`V?l-In{`yr!z$JzTGO$?o3XzIwOW3@e+ryY<_f{px0R{rxr!=39>G z<$M{;qv(1*Sg)slIh*v}ycY7EEbN_A1`O4;e3Ak`+2e* zM1HN+2TwX0#^>&2GDPz;9Q330_04Lth2Q3E9Pl7EdR+#u#P;=OKGPQ#%a{{Nfi5#v z;bgUnLnL=brrAuTkI;)1K%C(7Y?k`O{S-ir8Pz%}Oc?bfC^CL;)R0+`k;>RbcStyg ze@IRcp))NHcl(Dlmc+SHdF$OC7;@Kx8puKY)Pf*yRCq?>UJ?3F~w1raK(NYrePDuruve2b11p%;!pvu~}Fm+Mz!e}I~3Hkq$xlj-EJT?fnEWbAhRZop74ie~Yx zz+Dvwcp@x7hJcq9MRp4jordC7A~L!S)1CB@SvlJwtfiWgj(FyCxeAL)!wzT&Yb3S? zy&*A*@$3dkFFZOJ=q2dk_{|2R=Db&}1wmm90wXGEolf&ZXg=f<{`7p)O~qAD1))|J zc4k3rNQi70oaS7Wxsn0~%ZB$@M@9)0pQLCfp5Mwc${|08TbCx&GQ2JuPJE{ZeW*r^ zZcQD+jjD+4Ziclwb{YORK$GJC?)m$}_MeAsD!<9~-RgE0Egom}PCvreG1zVyse>|G zkG&{ha?qy^ny-7|>oo^gzulbSn#!zS+5VZ?3PG zOr*Uf8;@`{+RWLh?Ps^qezh7;C%c=7hlNY{7uVan+wCp??S3~Nw4>qmY<xP`LYwpa&jK*f+-fW`DV)FJjU?Me~tv9R3n=ixGXga)pSa@zU8xNyh&44Fi=xVws zLXyJo6f_8rQaDaEc-N$4unhz<+GCNKE>b=o5jD+%3A%E{28|ZSbXPpT&$6{n40wMa zG2-a-0jCLSl9AoCKJ**pA(%m9fQq}^;#Yp~UIOUjs?1@2t7&qfiLyC=UTSD*1?4rm zH$akx*U9IwSAn^*47bF<7m$e)wv8@oTD#}CS-|@R!m&WZV0y9Bka)ACWfQSxHSn9+ z8g4OsVT|!eWVFjd?%(;n{fY*#JG`X};2v8{R^vIhnv^qPH(<^^Y*a2+l^@sX5)A7sAruCk(h^fE1wrF zVx&5n?dNxg$#ge+bvs$Emv`%%aQ*7lZnn5vv{z%o2=8_`j21Yu`M#Jm4Wg(!W4F0j ztQOI*yB_i5Mc=>Tf}}N>E%&?a%`{pBgWujvgTZXEn2i@5Nmt{NBOdw0IVn9SwhX1) z^(;ZZ&4PsE$Dvzkz&6R#HZ+bzz&Z6i$P^N4K;~oUYq>#}#*isZrd7ew)ap;b-Q=@i zyVVLwCmq~!47L5Hq&MorUgLxBvI1j|c8DE{Cc_`(w`*SEb3`B5h6jMW01OOZE1UR? zO3{$LVgtZ6%l%GCW(wcXNp7}Fo>Njs!0@1=!^G8d@R0F^W4lxgB?hIixVBXG>v()f zn^pdOG+3_JF#vV5Tu(=LgJ`ju(uRkd)nc=wvh76EV7%u;98Gr}f9lWQxL!Y4(pW4f z^U;LeMc|Cqyq)78ui9|8`>%&Bx9f1WTTOV=7zC~F=Qs2Y{eEw@8m+u&HlJ^|%hh&s zea(J(JGoh`!`W)L+3ydN)?~4rt>4{D77WxU;oXModdBXXDr~!$Oh+Ty-e|xJ!(%sD zFZ$Cd>H`X%-FClRJnXsMr{Vuc-J5<%a-C;>*#Jn2l5H81+w#$PG-I6cIi8U`vIt2W zveA`$L`Gyp?pb?PR#sN!R+*KVmHWPLRh6}LSFczI5X90T8%==Nn*=FYmbJh~e*r(} z^LQ}h(M}Ro{zX+c$OcNc9y096h z!MIS0YL;hml)NrLX}z@p`WA*Ew3Nx4=N=?<23@=sT8Au@q+4u#21rAmL5h{Vvrq*-rO z+Jl|lQJzB1;cmLr#dF;4RC}e#4jxdgOTu8M+P!?~x%U2KI3mF?*gL#@cyxe6GP$`| z+(7976@y~9v(s%5?Ob8gxwge-7c+3s9FMjKgM&eDI3}5N?Vy_dl?r_JkVE z?Y&laIBNC_)&6L^gQW)v(QORat>M!B(f$EJ&yAhY&d!9?aHHD4+Ft_t0TDgfntXb3 zC6L}wmtb#MSw{mg74>aWGX(EhBv~sHp`+#?ve(HR)4(8`o3U`If!0$L)=tP;Q}9MZ z?UgPUN%0ojnN7ssP!m~Mm<7zZo{i3FlI)wg2eCekhiEvUiGRVO8=DPA*McRYN^*!G zn^8}pG8DdF7#}0ZJ5eMM0KOQaatI6-qp4g=Mdp){X&4`opxundQq^V{N{?t_Ik<&< z_1Y4Kn-pG*BEMDW;7}Kc$HV^XWZ@e`n?K~ zL$OfD?HrF<@B?hsG$~c+#Rs*{&i3?_s+r4prwA;LKd2d87jYo%vtem}8ZoFOS^oLi5 z#4f$=?&V$+|999clcj5S@MPQc?0wQ8yCs>zGe)}6RIjti;)~%N7 ztvmuO%K+Rka2qSj5iIN?btp-ov#_ymP}d&}CVvy|(`^2bI3R;sT(VjN@d})i+EwTVaXuI1S4JS7Sq_n%wU#^m|D>n89mC==(c&uIG zz}619x@^CXbDOK~_X3;coi;YH+o+5S#oob{`pY-!gWjM$+#NSbqwjVHhh0(vm)ecy z<*O~WWq|ZF*w1VaCj(Yw>fuWb_BQHl#tk{HUup~stu}UJr(Yg)ceeWnhkLs_hdaGX z`@?)7hQx6JhSwe&(kMkOQhgBdfU}^F6Xid1NiKU0^3I7q70dI0ivK94Dp_Z;mIC0icQwCAO_> zn|i4%LSK+AWMZq8HE6>}K^(&a&mt&{$UBtw6^yH67D#tv&~yVl!jw?WFa zs7cI`Y3sIIU6!wW<+$@t2kE)B%!E?Kd_v>n9`5X3nY?%~+HUTSZtjhnJN zcmJT*?pKBfLxM!Kg=<&0Y2bEezumzhBY%TuP~IFJ?(J;1i`%=ET&~?7@Apb&;^OLP zZwHv(;SqSFA`(gYO0&_bH$pf#p!nxji=g+D(HV+<>Ar%dcAhULI;AL2A}f+ff(3Oo zzFpMnwu@AF;6>u6Y^GreCRT@5B$W*$3z{r;Asrv_9e8&lYd#1mHiBK~@E-7ES7Oo4 znUzK0weVb_&JfL^o}&@mXQ1E+M_`4RL0L0}e2NBT-z?)Qf%QDUA=L2RP9{ujZXIJU9gtj z@#yHF(WzC)O*D#)HdFFzlhLSCYwZn3KogpyT4_+vmTv5IHB4o@I_y^nkg&Q1U_||c zD}&B6H}l>wVx>ZYV6`Ik7=puX}u@&lTwx+$*<3n5mK~6qa$uDN%#}PMZ zBMyFwLih;0npAIsg@T!Qvp54KHmn38%0kwom2?a?zG$M>M2uk_mv<%oB0iK_WoXvEY#5zycA~T z&gh_DEp)r%UcS-CDD zK~GzF`($ED;OvK(ECjbpo}!f58DAhi;|iu$oGb9lWO4o2cg&O{Drg|iLD`as zj*@WL!v9rG&vnpHgXgBuL%3sZAzxn4qGym#fk+5Z7P&UP8izr@-uzuM*laj&AB`^` z?BCoO_AV2$127oYiy8`+aBsNqig$z#Fsq+nPKg6u~BbKb~-G^RTPz5&FuD|zqfa(5yzh;z0PFYpX~JqS1&io zPE;yPw#jyhLfl6EQZ9-3L1kkyNbhw!{Z_NrJ*28L&%Ru&ywhy<89T%7c73v4>qi637zO?@@HD7CQ0hUFXJtOI?3)HJ3H2kS)j7(ySdIed_0)sZwU2Dke<&(kVivDBDq2G z6#ynQO5x4bipK5*$-!29u?;r{l?JQi@;8I9Mi$!nBFL^3=~w`v2n{W*lS#}yNlaGh z{%W_~y-MglywX3sw6lY4Z5K+%?I@w=aEHwMPNTlR4UT5QvI>B*JZP3`#G7@Xn7v_# zJQ@~q$QH_k-t6u@2Vj}BEP;DY8x^BA%O=GQ#0UM}V0Wj_!Z)A>wb|TePo~(L?Cl+b zxZUj+`+Mx5^+wgopuJD-9>8X{Ro?`Xx7Y8r>%=#GvO3_%`@@4v2YaOF5B6FpH5Utm zE}*4Ge~@nM9$vlPVv*PdGKKR`Eq7%tQik9I6~}~UcERb`fQEpYvPiUmzTomI*l=K! zTVk$?RACJ2Z%U_7?MyBftKqFWxik0!)d=&A;}E0(Ploj&yjG4ANOEpq3TZ3=g$`LXwE`i~ z>Kb=-B^?1<274=2DeJJ5g3>A%I@?JwIqf21x)6TAPsviS6s$DLxu*bo^mdw~@?gI; z+1!C8px-z-)iIfvc1*rZBq!ck=yG4AE~Chdq*Q? zHW0hr10X!D(XiUz>C}NDbi1YYh^4dD8TGWx!w6^h=5x*d=q<3WqcWGfMky>0uY6LbINam8T*)1%uw!$!VLzuD{Lmqw}T_Gr= z5Eo7q*MbYAW7lDwD6-EL%jH&@H5fA4zSp*|z%f#;jB@%~q?;<^H<6_$OB9_C#$y%u zgE9~1@a97SkaKW9;Aau3Lh!k~Lj7_UU0Ec2w~CrfSP?$a*8WaXCRhYSxOZlS!~pMBLotYR3`znjcMH4C_2V6?b=p)dEDOJ+g&^W z9@6JIY!Ca}<1X-H;(~6g*CBO!{R+ESmk%#*Q>2rvU8a1fj^;2tI^7=Noxx9gzo6t&704*dIy(Zcy_1RJ$#1!&*6A5 zs13*6&h7!5;)C93o2cZ*{_XxIBs@rGd*k)&Y8V(7Y7Cj+G+W7)MHl?I2+geo*x5%6 zAO>||LWDAaax0i+VPb*|1@ftQu)&@LCC@Vp5R$;aO+_tvZ1$tr%?8j#_}bVaeZxeh zI4u1crULe9q6_pLkqC(-iqF>~TQD-g51&{GRI8D-2K3&m85kee;&J$mLNKYpg@p(t zL2wR97r3R?B30^)7eLq*tI#uz0op-N{`0_0}72a+i>^Mku@zxUo-Z@u?E*ZT1Lci(>Vop-P*783 z(8{ooAgFKzWy_1DErZUwrxUE7x|9ws!`-#sQ6r!O5{+P{8%GQ_YpD5oP6(XCwD(@>i?t{(L-m-@Nf_13lLj;??0 z>6@2F?)~l2H4^Fv2iGniv9&UsbZ&MgR}QZ4^`CzFCW!Qd!^vo8xV_)(UAwyfwWF(- zFI~r0Jp1&ESFb;N?Qrkf)7P){Csz&u#*VIEzr5Ss+&r%Qt9Gv03a=JYTbW!tmt4v1 zSHc^Cz^Y3s4;r46iq$sZ}`KsKi^@&|m}dvO*AAr|SE`y=W*sAux{yRsg$0>A&9DiqAv}?0syI?X48y zs##rzMI{k{HUOSu;Lz;8p^hGjqta2JhOSnM4vM4fW{K=CBWtCahd3v*zCcE}Sk1?> z^&XJN`Ve69X0=ry%!zMSYS1EQn@CBpngjjHgb$UpW zV(`@#kjdVR6o%VGqLD&nJ`tLAb~nKyC7@ScM^O{sJv@uPN3LB$*)$dJ71kVq7t*Kh0 zR}Z&49FZtkq>I3QvM56KYMJ#?Grx;;MHs2pP@b&odLq;rzK6O+g`)si6L{ z5hGr#Hha}habp)Eaw;Y^i<)Q%>5cU@>haNbT!rzB?fCS1qY+&jt<6%30hwmC4mH=p ztYcwGo_53i%uWQni+I1Bu|u&&w1?d>GJS2&iFVy)hprkY7LS@iXJzp5`eZ0`si47GhN<- z1Z%mx38%yo`}(V_mrz(Pk6?I%2`P%qTOtRm=@xEf1f?i)aS#Np2V5Il(M9-$b4jqa zFj$aXq*KQRnM%3O9%Z{sargW}sSe_E ztJHw5Gu4F8IS^-G7Ut0GvNsGC0V-$gFrXy>VE}`m_MzagiPyEf(P5p=Yw8BDueD2= z%C8*hKz*A7k)+u!a?SdqfpPijXwN`GWmM}=o^+;~Hxq1&wUmB@#36I#ARP3b={vXd+svCVNdv z6g9LJ{v$yca?$9t4{DTfRQrf^z*f)aaatOIVjLQ8c5_P23S>|!idjBHxIn%_Ot(Tw z4I3rkF7wSg^2;D=*lvoVl!OEgOlP@78A3C771sjpz{dPaKn#-4CdGomq6?8H2^HZm zL5GOikImJ&&G5oX01mhCf*Yv@Qf@gU2*JI=<%hyp3S!>EgBXzzi9Q6IkDWluNH^7Cj;)nevvrI{7T&_8Wgo(4iy^N+0EP21Y3cBC zWO^C=}z#WzSNpOleyfS%>MdCAAg`+Bf@`JPxDWod zMv9xYo5Xvb8One@PCcrj3Y+Z`X9u?%D!_M()GL=k=o|8`Rdzy)<HUW;FUvHVQw|sXWxJsi&!l6t6_L^DT!qB8}R*l7+(oM zKnRZ>LbEXRdX+}M1QTU$b-k2p6&Kf*;U-&5=8mKPGN`G}2V;2>Wg(b;{KVi}8_S6# zRj3p$YV{y2=>&Jnv*P*;)XC8a@>ft^t#ehFo!P)gk|Y$Io{i4HHqMsx`q~y`+OafY zBOFf4>!@EwQJvpR6+;i^eZl})k#C>YfRM1KA|;P3^9DLPWY2jbtBpi}{YjJ^3abD> zHdk{)N_|n5O2EzvL($4&)|Ev5YAuum`Bfq4NYY+SHm6x@b@~mw1Lo9LxnAlt%IpJ{ z3&Tzv`vd<3OKzl?gGqA*pAYuR{MMR3kX|L_n=Gafxo9++=?K<6SL(CNQ7tC&nOt$J zg+7EgIK3PiY(z^L0woMFLYd^V6Udn2XOuzgN1)M&K{=jHF4yuJ+hlTKz5yR2wdbKw z89A@aiYM9nb+i`{M93pmzL}n0%k>sEsl8c?p_j0Byn$9grU9QY06MCow4EX?YTp9B zjOZ!}mbLP*203vGKv{t)vN4Aca9C4n$&)BpgJu|~0}KHZo@DCkQii&YSQ4Qjx`z$0 z<=NcYf`}4KWPM`*6ViG(3w?Diu|_q(X)Xcg&{PmjD^_CE>E_qskqUH;Kw8%#wNu8k zOe&IHe{j77u%j`6`w3l8gI%DRuyU_O3nW-KSOk&f4y6L=8V%b_ucO4W)ky^Mt(C15 z>PL(jHc0G{h;E?&I~^^x2{zcH)9`0`wxKAo4+W`+DRsx~Lbs%e+NW~8dURt2-qhr8 zu@0`m?w!k)AzsfnGZC*FWVPlbWHY^1rJ(6 zs}afo(}YsdLNFQi%_nQQ5ScE7QP!z8PDTsqQk#<2NNORvo>^Qf2I9F@Xpx!(x$}Wa zb91eEjjhpCVNi_)64}ba3M6xQMlQrkpgzl$8yUoqQQ3;X($5YO#RR2tB9K~Jm_^6~ zU2rIh(P7M0hSgLZ(MN<67=zt1)bm)cVxd)xE>p}3>;vE$vYt_xeZs*&un>>V`*W)c zBD~Q{^cd9SEX9=DX225Haa)1AMPo})cCM@?W>;{Cudx|vSv3&+MwC11skPum8wfN&*1EB z09Worf*6}D{M?0RWy7n^MO@RUTIAx5ed>sF$yz>)))SO%(HK0OJP$xLiyP3@hQZBK zT%F&b#YuR0D~(_==A}Tty0%d(Zst2F*zl3aF7`5!(n7Q+m)Sa9&4=>Pm}K%muX#MN z|AN*H5yXop2E~odV)C?!qWcRuzZ2>|Q?mV(!kmQjvhb26jC@0o|xGvdK(Jb2+ z>l!F04uN+a`7|7TwoLPzTZJ`dQO*|}l-Om=51!iuTbZRPA!1v01!e; zjY?rK+AE1U$IL2PVo*s{#_4$ti@&)%7c4Y4D3vJ`!38fn0xPrrS=`l)Uq)lgvZ3M@yS)|gRb}#EsEdhxG3^;AddktHERV%5fHOP zt(v1SCL-M13QeN;SerVw3^gLCLHK)=VOq8MuQG5(N#+18tHtNIgTJD z1|I1tLPJ~}kWT2S1e%3pB0I`KxRZ`#QGqBlwO!rhmNrReLV?9lOr%~by3)%+p}wBU zBXhrz0W%33DjcQ7vM=?=2I}1CSca91j0?Ma-k3LQVEZPSndH_!R#`@$cCS! zEOv(q0;-AFg^9&;I6^q-r?eND3MA)^R=!MZkO>jLQKiW;44F_K*2)B44axNo$~ujV zCUBQtEoMT{Srn?p?if>BjIo`WDDHx7Yp3CGr~zXdbf8Jf1d6FJT)Oy77}#ZxV=cVm z)4aNNX$CixDdG2pw#t}cc)rot4)_ysH&o>~x*N@Sskn3jZZIF_btsgxrUSt3MhhStDEAtsQ@Ku*eb9dN|0m`13H zuww>lKO~@QiPg>6JO~=J3Zdl!n#&9wFbce^JyI!UQGlpvQe*uA%uYw zZD|Xpiw*;5W*ypQ)SmGItY`8#ngHZ5+z6=I4)O0PyQsA_LL@sL-Z*D>o!&Y;a zWiN-|ZjlNn?pb5lL+T|;;1EidJNX#=Zjk&FWI*P|et1L^l-VqF*s!Tlvs)}tyQ;zY zTj;}uv*i*X`VOjeNf@Ly%T-9PtC;{|d-c-N+E$RQHFSXM8%w?@GVY<(nZ-FxH{@(L^g3j2AkpB7J_GF zmSAEH#I=xpeG{>a8~~2_X{x3{hOVp?+GQ%7i0l)|bg>1Jb(Ky31S?%E&-Pt=3-}ZF ziJEC7H3xid70Sou2;L2qYct+e=N$ag(8J-{)CUE^++2(j(^w8Nm}DELFBMt?!(S!S zkPpl*;$g6hmB_*(3u$Ch#HGY>SSs|uE^gJ>I|XAxf+B-rRU9d1INaHDj?4itX2&sx zBpi)|6aoQvJP)#XpTRn>&Bt((qbpIk`a$Z_GWaYa0XE0TkCnG74RptnMb>WynquTL9KX#(;cM1g(ocxlME*imQnf z6k}_4Z!sT@hT?_Q)y?d1)UQ`imfb8?GBKVQ&gTleR9j%87;z9ggOk_oAzX{F327H#NNUX*XR)&%SwUBVAMUYu!BNL?%a#2vU#I`o0 z$?QFR?06FIrKwh#~F%|QRkf$Ndu6xvGUcN#y-YC@!U>G#W_(l- zvxSe2#|Cwc%h2P2IHJgs3hvF&(rPdc@^>RuVrh#Z9~LWMlV;M{#c(R@@<->~)Bfe) ztbYZi(F_@$5TxJXt<|~dMfNMv2qDLW!Uitm1}LI(iS!&h)A{Ui~(gd-YDjPCei;*(0zm-n2iFZU`UK5%8;V2WoxZQj?{K^X#p9HB2j#{fp9M+ zr{R2sxH5`tj3!R7=xjDunx$gB46D~NBtc7>>`An-8Jzddg;6?RUx5Lh98uC2hY6F- z5OAMc=%^$i#ZHi-sV3N;$mE~^Lo{Y1F&`HeU_kQ)LYt!!GMy-Gl41=|qaN6+u>OmUO;p#kfF!yVXQe{Q3%pgB z$d=u&E!Kk#mgMjnRqByC$V~PnP#b{4D+R$$DT2QBXE?XEwvuHMR!l3@aVaIBeg}dA zbbvK7kqA|0`E)oHp=e#B76Lj{*`R2slxcOE&2*oqmPNI$+16x8*#ihut=P;oAOk_j zicOXpn88*784vP^o0&PpzT+ikZ?4h;1=dWYP(PmqAD=8yrC5gYZ8Oy>MAD>K!(sRr zGqb@_9r;LDs4|7%av+eM9b^;hg+>HAQ)n`mJ;_Bf6JYfhR*8L))F8CqK;wLqH7%Ko zX^hwqnXp%gY}G8FhHzoSix)Y&l!cua1Tc$6UV}QNGJQ1KDGyDcW(#Ew9K*6DD|K?(XN^gidL(l`pN^9iXHgizq@bH7`N&%M9^<{L+ zhReIegSY_N{_)kad| zCD#D@*S`LZS6+YfrQ0vP_RZU`y?W>MTet3f=j}T{2Ht$<+uwfU_U&7@ z-n{+Boe$o8;nuB}Uc2?pS6=znt#9(?%dfoj^%q}y`_3EZzxBqQS8ly>>(%F9d+W}( z?%aCgTerV?>zVeopSwG*d~oZPSHAx2H@^Pd%eU{m{OW7BZ{7adJI~+x=C|&=!KuG> z>($%ee&h9T-M;hs>->8C_Di>J-G1}!w_knX&6i(&_0FqbfAM9m`Z~?L_0mf(+ue|*7?H9iB z%$-+WyM5=4ThHIQ_0p}^?%a9(HLia9TW`E^`}JF#{hjZ;^(NQnL4E)0&w-2h*4OXc zdG+?KS8l)d!ppCmfA^JFUi!u@n*YYDuf5KdUwY}tbL_j6aTT!H50+WvTu^f@1PW%X!h0u@B7 z-h?z_D}Ajx?m-mWELH*QL^9RFVeJqwLlU0f>ZDfb*ZSAS-CDld&S@Jf{RVUdwMm~% zM#^oA#cKP!R@;NRU>jnk5marBYA)uRcRlRNj~)THJ8laVz|7fnwUZzBvgKhp)!*l2 zxOo#;rW)n;0i|Dk_*c7O8yD*BD5FS2|3#`|Sx;iQVcLC~><2k`7YkKJ|;k;!z&F z;`Qpr&bZvB*uPUhU#=Eg{f!L7gyRZ49TTu{Fup^Znj< z(C&@LgAP@Jd)4}g&sqn);>P%D^*Od4@}ujM_LWw@!Iih3c_H1}omBdhN)uoVRTzbt zg@=wXb$jwOY;f&Hu>{Zav-RrkaA$A7H6E60+rXhlB0*;L@aVwOqS0 zIjGkU28}eElirtSskPnN&JC!8+c_LmoAh$8@qE92I63HEd#*dkw+^7!NrKS3 zw%2~)g=?2O{qu+Hw=~DKy((M*c}h9whMw2>~es!l>DA((heKn{x zIc|TcpF141Chcu1HAj%s{d{G6w^wCrSmQQs1NLs#SG=CNhh6!f z48L(iDMp(>Ip0dN+kXYd>o($)g`17casOWr+wCjWaUB+=?P{a3GrByi9vnh>({EEi z+O7%@0x$um49=HRfb(T(P&kw*-o{8 z)Br)#kGEUb%IRTtbkyx14Muqgc6i3e?cX>YHz)htCDo6Iv<9+Cvf)k2uV5WGywN`o zIY@20$<(V?YkX<1RbQF&KYVQWcdzeOtIcHTU<}1e<65VDkm%puxYnA0+squo5Hjw! zYvW;WfBS$L*KfhxJ~$i=D%AasuhklZPO{y&^32gT)r41j=ZF0o&LcMHh-^-DdD7Wky4pqf3gec6K2z$ z@d0%clX1Nd17G{b73!2Q@<;p4RQ>#*(tti?Z=2fvUj3Et95ve0z6HZWuY7Rh%4jQ5 zqjUSL44}3rXv!7a&2}Ho6h`)-Pni`wp8a~U30}B0XpfmjkdzPU(C+TFY^8r~a)S(0 zt3FQE&QqEC?ed7{&id8`fll9b$47l2 ztb@_swWCa-)$BIP?{Bj_*IJb46`yNwvD|9*u|8t1Q3u2v;p#_|Mv=QsC&&2;{kYp6G5^bO z9^^{jtWSEC_>dCnqw!?#{FU+1!BLZGsS#wf^WA=WV^MtQ2>a#9(deL5pR{tt-A3`n zdhxjZ)jE?nbNPVz0k!{xnqK~bL8x7d*N=)@#pY;S9W(~x_|x0K{%`gV8vP1naD#Du za&#U)rhf%#@MgPMY8=9Ek}Rwm)Q8>k?;bpNX;QBj8@0-$mcIi3S(QOlVI);2gM4ql zynFdDSM9<{UN7gXodYTkFc8P}^Q>hz+pXuQSU>2OH)=;3OHTjF$@Z_ZMPFwfqqgC^KeWO{mRI zYAa2y)~puC8;wS?I!RJ9lP&abbh}i=+^iVY>nkcr$&eR~}rsc2uRL zlM>zYlS{}3bl?Yi;acNzHKjf7fMeyMSMEG>)X(lT@~KI=P)%ccz{~V9?fyoi80%cl z7wi2h8r>_!zPw%xb<{xpcTQ#_r|Y%?T^Uq&>nvDi5E>TkLG~ zu5PEIcKbuGeCc4=om=$G`qtdji|S0!x3Dl5GOR92UUg=A-aoq-hbGShC=2v&VkP8R zKrq9lEG~nlWFy-@A6Xo(FRsiu(9k07d43J3zHhLEU^eNW`ik52rLX)Oz3KN1!m<8KCYR}g(P9-1Hj^mYoswdg?KYDzi|7_Mzef6me zzx#V%`aR3<|Bh__>X+>%y}@kPUz{>enMJ`WnnfG3G@{vRko9`OW7mJ>qAaMgY_*E^ zix<8+#Z^UzB%e1~1-*K~Ww+|hT9b_&=~AX2`m`5~PwI{T`m4YH<=^?eFF*O^-}-$& z|9;v0)vx@%>4GwK(RAV8=&fcw3OpvWXtJ6_{Y6o=*~^!PXiYNNXRLxK zpEnroqTZ<5#S0dT`GPoQ)SK+`L;UUk%n)|!A)&76A@9lkdm-`kg@Lcl&-Z7!!zjbghr`DP+FR#(Pj~xx*8RKvbK0v~*WTvm1H0}E=azq?`-L_??|(sePWNBw z{!9M<72SE=f1~>~-LLcW1V6u_ds4Tf>*#LiUe$d=cTM+CJ z>3&o9t3Us9?$6JCboz7u_s_o4-uttA-}rNWYp>7#|I>R%{pqLg{_#2O@3YU(&hh{B zulCJ1IpTlg_gm-w_}mZp`;YGZ+&}J5?ww8h?oWUI@mFV`{OPAHK0D^Y?`!S*^K*Z4 z+EVRv?HWJ*`RR9m`q$5&<+GnXc+Y2_-r}s^<0@~^nz#7>!+Ss4r`rE#&+n&a`srWy zTXX-p-+%qtZ~W|Q?eF`q|BS!2pFjSY_wJwLKjruR^V~n<+3T}^f517lC-wubruEz( z&|`nd|7Yj@>5=~_*SY^4?WhNjy#LPGyAOV*9d&=~-9N*_e}DG4&%S>6QK#=dFiXn1 z|2ID+jw=1kdH!4e)@JT6o$HY_(EhvIKG)pTwK`9?`MLY_x&AMnYdj4Z13!10=f0$S zr15mKH`V6n!>PyIh4PnlpW~gW|N4>P{gm53Z#2K8drW)tu}{-*r|&(gz1Khe+F$7Y zOdGv|XU%Ds$N_VdK!%t4m-L>$+$A5qF$Vt)vZ%-b1?f#cO zKIWKDbdMHKPQpLYowMBKyFU#7_|v2Q{9aQY*7|>^(>?z8C+9wT{1csS^mklC_qQjH z7IiwyPiPO98y%m}D*pW|o$kgzoan;5dYl%YSc){EsC{z6JGACytr@yR0}-KE*wzD{?SW)z>K8Gap2;Ju&d9=&^Va`*V`*I(;sg!b@$ zczp8M$2=p8)*Rhy|Muh;{5tJ>XN|WU>mK11=PPQDj_3Ml_-Bqh_wf_|$GwLAV*`VR z(F>1pg~xC3gt_xaKR!9R@i+H+g@^M5Z+~=rLi@B2?tT8(x-Wcma`N$$+&+DH$FyU)#b5j(!{O62>2BO_?`H=;?W7kz(S6}@ zPWTb6)rJGDSANM-u zC%Q*0eom;J;g9e2^pn+QNp1u4Ph7hlGKcp*kOj5?RcA?_metL#KJ8j@lwUd*3gOvvv{z>sM=E>P9G{eFE$WJXWZ90AaoKx#Zi|#IM!seX4 z%Yb0mex8%jwENTb-mLwPH0$n`qkY%^6ANSd-kkpFZ2gt9$4&P!zIbG3x2QEwvwt*?$8hgNy2rJt`q>7a zO(<^mk-KMIaW+MHXqLY{dE^Q0y-z163&d-u&zFP#LC05qZdQKrY*x}^{xkb=uO&|$ zYxiLJ`_mKXEDveO{fVeO*znoIzc&%J2~ATh+MA!wz`xNw7QTD;D$vb zo%Y+qX5!;?8_$#PpFMrQc8?sZ`@fXGWR@Q>UHhw0F2!ZJE#>l-9|k`%_YzwXDUDfBXp#j!`z!4%gP}hfT{z zwQ0#mPtY>$OdOyc#4>XK_=k*sTErT7?uVL*XYu5q(2hGjFI@<-P4ZKzCnX5 zKhmtkKk$$-#k2-n{+ZeM#ZPA=Cg)LYyyICs{?U(4K7Uu60NTMg4L>&#X-e@QG^42b z6Ccx-5x;+?r~E(G{Q?j9Gb=e)}efO z>f$_#mA|V!(;J_hJa+fV;t8Gj=_xc@`oP?K`qUwN;@|5&(w$he<@^b5U-Q|X_><3m z^~~{n;OPHK7-9F_$`iOVaw*1O?s=_Vf6{BXw|#i7AvP$1W_?s1%usc zvsnGIU^Dpzn_W>2ZmZyxoi<4|sVWz;dMrN0XqMa#gWE2cZEl0CNRm~xxn?AXMRb!E zSr7~kgLBd0m~px+cDK{*Y`SGxns(Xz9>wcaY|6CD=`!0@$tKzqRrJa7^n&7`Ar4VA z7)&OMDq7q&N#qMA*=|uhR*%i0I8~e8wCXe3EP~hM5Cy^JmrMqWOR;!Grz99XK0)-z zvT73*y+t(27Lk_Qc*uT>?N~t~*&=vkhs~xK6}yEe!1J+B>5*$Tc!An1?ip}O!RJX_Dlm&;PI$e%wyWOg|Y|a^rMP(ESzImUjI6QMUnOn6<4x1>^ z8-B+EE%7+b;=C-l6wz&WT0N2|&Un`yWV$S5#3aEYAq_oc@fu8vlF_DDf~wu>Ho06@ z28Tg!6eYJouu6j2Y|~4Upa@p0!z&3s2WNGNR@pvhTJSS;=H?87{aE@JvcWpzwa5-- zLACh}o|Iup@%ao^!_2J1?R3~Bugl@}HT^Edrpk8J>6~*qEDB>|)@pO923ee6^gEqy z@0?v#U9!TX7U^Kw@0gcO7MH_hoe?cARdgwCtJiL`xz`*9Zp1DsHinTb(3NhziMy5z zYRI989+S&s6Frh%Z?f53B$B{Z}xR)@!C^(u-@lnlCzMT)dXcoGfU7n|4$LtlEoO_yDUrv#s23#B z=@c36ayaD|>_*99ax6$*Vaj8ZWP@b(2ATDOmuv&o^l4a_~SPnj`GG(uSQ7*x@$@&wdbk5zIo zE7du(8ngOb{&|zlFz@j&Azgl-+u?9Gr@byoQtd9c+vjlGy-q=K$S!4h&MTt}Zt;6$ zy`Wl{qO!v&&$#V!H0={4gQOai8LQJ`n3nB|NfEruNjEuI?M6hKRTLT2deNpg`fO&= z7xx%dSu&~)**?8UZda5YdXl_G2RC9DWusyMx)*AoHJS+f<=G9VsJ@ziHx+YIE^O3 zVwXk5VOLFxmBH(lF~>HG#c5Z)cGd3G1~t88Gc!&7M$x^?Xx2 zOKzKi$4~xOaEQ}J{j6pY_2T?ebHQvBEp)oghFx+P1ijv^NJgJ*Fa+lel7TOItu}`p z&33!Pid9k!2A|*Tr+uPHT4iP$45}o(6U8W<$rX-ReYoh+r!+l+f|?9bSo~GcW#232v1 z+=)^47)(q^J-&dMwa_Kueb{Ftv)RKxHnV|8Xq{#(+8N(=qfHUG5u@=~Ji%xSCWr6d zjmTcVj|?yV9&JZL&#x zO0)>9`HTbOlI?x^DOis(RYQJa>%YH>L zxJ-iTcc`jIK;_Y5w+l{@;bc~Ep;WWYWHs8S?W$}RYzEb2Y1(b9kRH)#wQ_wfFzdn^ zsb0k(7+3@)v)wM^Wtb(FN|W8<6D5f$Id70$devt#*nO-~k_`_@RDJjEG_Q~AItP49Aqhkew z*TS6~d(KTO$1^i#yCS(|NpphmIk*$EV321qz1)e>Wwj_GT{bPd1wnRbwswX=At@de zn{KkXaFXm2H^Qj*F;@h?i03F-=8Y^uQ;unj&gq><9t(47TJ&O}?J7?jpHF2ul2t64 zWku1O9g@kSsDhihC)n7GlpS8r1AS>W3gShJ%V@r6H(LCTsVPOYghai`jPt}+pbrbn zT(Dt<*h3TS2D;>eZGi!5b2>yn25V~0;qrKw>>fdprbX<(g-h5K`^=Oe+f>1-%qmWC z%I!7S9NLDP=x|9kD<(-jvDYn%i+N$DVFn{t$CAiyMz@XoaAQI(vQv>{46tl5%Pz_7 za`|O9?jap)6fohE=vr_ZY}jr*TRL4a+Azunw_uxgn#?ZA5>-rsO%-jbYM5uq*Z!ED z@yePWVFq^dnQqs?R6$f`^pPTpF-4FI9 zkIpE#1XYksBG$m<63la)9XI53r54;cl}h2AEa1ijVxlv$lOGnHI2_KR6JBZ`Zx z`W`l6r8(7Z7G*F0+MI%5ky#NuirsC{iyUcVGSWA0lf_^V1aH$W=@&e9mzA+<))NoW zV;0;=)ou0TkYKL$<{%E3-sWK!Rxn8zvlvdcb=hq&7+Fb-CdIbmz^-8Q@%VYzR=ZE) zQAxN#He6-vl4|B*V_sx@YOlkf_=K57mUfkROSJxiK~(1~R$28Pt0&HkOIVVnfMmg} zGVSJ_m_^4l6W#8`M<8|)Jc`1dNRm;oDJHX>Ct$P~mU zxqQO3ou!R+$GYyHvYTvP*=S@O%Wi#?0cQ~xU7Cw-Vj$aX%c_Z%$W{kqSKzxIn_D6l z!iBV`X7iG2p-W^ef~W{?yTR_X%q{vY(pg_BXVE1tmEDO0BU&-;M#2$HA!D8;j?NT4 z2D56uXtUxzTP}zmdPgx}f&462tSvzm%j6(>bA0t!{B710#pm_0dTVQw#K;jOpI=-s zT4=GwXm%K66AlH=sL^PUX53f+v(M^qnXIaS17x*Hib0&0EW~Sg&sGo10zr%3Zt!^Z zW}Crc)Vqvv)nfE56W$rD#$&@pmkHNOl;;F`pD4`ZmK{8F2alRKSQaE%wQ9E|3l<+? zE=#%1%omtb3JVg^rp-v-yB(?{=2n@Q9?|YM$g-%)Hph&A8Ux~XV2~82ogjKvT*9wn z#U||4?nH|xj|~^}wpr$!)o*pUP55@)2!6KRK-UOPJQ$W64`_(#h|{3zUDE`>+=$Vo zk0}cuIGe#&5%!QjL0}*<@l)8B9jklGGGb zRnfvq1#|~bkmbXm&S7%(ENzNOws@8kZlY^q6$4fV?^aU%CX;m$^T*oGS%?k6Z+O4omwWwam+bYgLBhs zcgciCF3I4t>78>6bNGl}tD?FHK_yJR5)R1A40{Ei$Lz!=m<`%s(i`;7WgF49g3rMs zLzKb2NFJko#^$l=rxjH(N!IC5X4*(thDYHLjCOo|yU$>-EaN#kh&7p)HX>|o1Udz2 z)}zQqm&*do1yhM{Eli76JC@jD$AJ{AK72Z$Dn`t>O?c3a{fgy+*=!Y_qVo-k)o{^c zFoMx*L z_e!x7aIy~B9IGyy+pf3GIBXsR_iezK8q7u-@13?b$$q#ME13e5>M)x~gb;VxtzNx; z9&`;hb$)pXfDK1s3mLt{Y;G$Z>c%r9G$VYPk(_jV?KH|5Dw}F>*{o)-Y%)xf zS}cmU*Uw8uH3M#URf(CC@R@5_iI&IKC}*O3F$Zp25d!j$8gxMoCpMy97_aoS;2jHJw*MmMw2D_cyn*jyGh z@I3@GiqGIA?w)07(eC7ddHEINSD8q&7>8NAO>YrgMyu^96Uhdf=$KMuVkJSuKniZ6 z7BjA}7TwsLxD+<)#S2!OciQ2UR1B!F=9RF%g5tE;9SSfjmPp)vfp|vm@~bwxY}5>` zk+_X+!}PiSxu9BQ8HGE>y6M^uwNjqs> zU}In#wA`74akxk)DGC9C+2}U0CR;GAMqVgpBd(0y?ic7`fv)5L3^KkVK@{C(RV?!s zy~Ii;2XJ6mIB?#*f<&Ig&KDKuluAEa2semOybiDHfv)_rg;hs2`z}sTn;FM87G#s& z?S0Cu$7kh9m@M)lDGct&Mt?ZmtVoP$p1;*ae-k!16{o{&^T-~HW6>iDBx)qzw98?j z--!*ZcDIP*#v&WMh(VH))&#if@GW|y10w#p__tzJoQ z(oCuLs10j=?#gJC^}MjLjO)o!(61&JxfEr|K$^(paY+k?X)k`J)ov#lYndgZhy5}t zu4DO^6%s`ZNUutS>Gt^@I`6UPmspnsuU%BNfZ^Dc5M;mIWp*riMUl>yJlu)VitjAp z#S`?AEn)Sfn=k=J6I04ghKKY6izHsOYB9<5sNSeJ^|FzqrO|2;Rg2R`G8>d3$!dHY z)fn;1J_0|xK{PoWveBwei55x1i&Du1$cuVCHkOq4ykW*;V7Qa=z*C={(Q96uo@Iq$ zGHYiDF{d8P`dl!6<)S1`+4TX{IAu3m^d_d;Q&Xz`qDwLxymn#=w|;7h7|L;KIW^bZ zAp#>L2jG^CQznU%60@lut8t3R-6?SmS#?nV@^3uCK$0l7M0GXbF4;(NCv{YtS^Ru(@gS9Hk&QShJRvma}%o7G|gyI-8@g5mGrs8skppq6TgOli#t(g zSftHb)ZiwcKz4<}OODG$hEjD1F4Mf*CTby~lhx2prjmp(-agM%HCxT%3`uIMRawC0 zvY2pexDkw!*=Xke38YlTyE;dvj#WY+2O=1kyauykGMEkj(&(HQwao`T*#N96rgO^X zV>TJdj+k8fdBvnBnPDa2er)=692w#@(=1U7Nqt5JsSL;2ycEyeSoy1F?Y7OPDN(w} zta(aL&*=?|h6`qs-DH}wnJ@|fG%;8##ROE$28q-K&w&&pk)Zw9@!Mp%NYb)gM=ITy^EIaS>uwROVL{g+^ zkN`;x1`7cZ00)=_+brFE&vMVX`@Z)&8!%XCLY8F3h-FDl+Z8L8L=jv-N~9<$PHe?Y z#Y?<>pd3+ac>zc&uGl6Ol_OV)$tNo&Dj!S;_vZKS9(_QH5->BE?!M=|@B3e#|MNVr zsdFFYvYaVE`Rx2BP&(nrLtpc)0;v#)PioWH#qD>C)6Cn zXdA;Fq24YW=mHm$wgWe4PvlK&(-KXT=tUI07Ge%WkTE6(BCX!A-t3Hub`5rH6oA^= zF%uHqhdxVD)&^Mxss-GC2J}t0tV8Q~Da)Hnd2uT%>qV`%mE>iTR4r#>$F!@PNeSxKowTd%C3tnK zHGqV)j4n`oLCqt%cTlVb7beQK@dT-NWRBH^0r_(a*z5{u1_Esfp_!-&>N?D_pGW(e zXi-}4ujO^4m!=9$U!_b^b`0L1Wn*=6EPIxx{&Ue(^#E=ZM@ki4>q(E9-qb1T0a2f;!_l-mzxd zkFU#dWiQY6ue4X$dyEClA&T^JuW09*ie^VeuPQb#IeL<`>In9`Q+-QE3?7(7wj#+k zV%(Mw@~YCu-|c$p<}8te2RD&|=Z@DhyRcEk(a!Q@D`{;d8=L6bsmPhNlf2qjzza$s zI0;Os>4*buaCH;P9w%yQU$^>$aogZwT#7&=nFNa6iZ;#`(dMeYR>k{j$`hlGw2_ww z(>fHzBVt#@Z6b{Z)A^k<;Hs1$Sy~RY=vMxsrTEi zN28WaYqfbNgWW5Q>m7UFbNAoKDz#O1QdBDjMX5Mc?V5-R4S~gJG}@h`Qwi7Wf=Gu- z9?1dX9CEfW zj-Q(Nq@5{zi*7O#?DTu$Up=0qZ!f3!!~IfoSio*{oKw%zPTRTAR4dy_s&(@YSLwZu zr3BNg5AoPXb@R}!Tx53*+BaA7W5+9b@q88twuuYy8|Qv=GplV@H;c_lo+d(GnwU## zBs(+Rj_2zYSDtGMrycQgJnm1F-pkzpuNRijJ7|^wI_P1&Q5!*&0ahj!S%1}dj}2V! zq|p2_1Hgi~JFnfVMZ1h4utzWzuPMHO3)Rw?4%+u7EEzzeW{H<&UQ?76#<~63r0nmgHha!q`-x|+m4k_5 zXlFQ@K;~P`ot=)}excRXMQIuats1Pb=+$YfLwwws;f0DJfGQf^(Sc5=O2!C5%0HSF(91~cQJVS6^~j)t9uY2L_(GCF_)>;8JvfK1{vYA+1L%K{>h zYHkHbIo?CcJP?mzS6jKfp42+?Ox)i^1olJYLH?j@MFd1Ynpo zq?^_1W;MOEnIx-?>vca*$N>JBW%cXTX__pvJf_gPe_)QrLoKZa=tgm9X-DJcbUcBw zX@}GWa#EqelP!{Jqg{6EIj{tro>!BtcGqhy@&_Ax7$nW%sB0A(!&WMK$!_{g3pRoc zXfc!vMJiOn`Loiy^I!Z^kCYXQKJ81tzE^9kI#1}=>naOtD2j{Fsd1rT3t>=*>yS!t zpXzJa$>v42tQF&-Ch1UxHXcYAlW7-CLZ0+YAk|58EOm$>;&2-hr5{zn5b9{rFjoLh zhN5xyvw;lMFdE#&qJgq^b9L>IB&gL?c>{UU#DnCXYB2Q6s??=k2>DPX(o%f(B*xW1 z*v_D_Cpy~;3I)0(*|Aloma=Nhn|P8W1Cvu9DJWt|pht^5*)ERP@+WR4OH~+|5S(X2 z`MOoz+Nx&h=BCvcguy9z=A%mq_qY+x8a-t@Z% z3uu@}+SY@1QftBdw5Q1^-gaIMEVH)CPjG?+vwan!#5+bQR>yN%)n62jIEu?nBA>v z101V3_5!l1c%79x?^a@UiqW!X+yr+l+Ll{~hhNdD&#nxEa#W^bQmPsE0*p!RYDj`0 zq;@Kjrf=!gXb)$OUwLmGims|^6{Q@G5!Fi5mjCaS`>i;W&CwhASy@lTn$_xA3h;~P zh_O#v!`B*GQ%TBtdm%=unw2Z#ReF1)uK4x?vgW|>ALT~{7HeDSuCjNco!NU(o_zTH zj+v8_DW{{GXc`^Lc73|nf#3_1KZ1lNQC9B3pxR9+ zyQxuq0Kx(47pSiX8k98E@;Y7jVE&&P^GC&iZ!7A zzP>1u)DMkv&Jbk??=r>qB>5_RPtwkkO*7H|A7=|=tD5xvm9oB-CsxCm?xot0yzEwM z-8``YHTbY^!K97{5Tg&x{m|UOpV!a`CLpfGzMtuHWV4a?0K4?}I?aKvD*H%S1dPBw zp(j&?=IAi>Mi-t|E2rCpx^3fVvf@*H3pEvSYX)S$_T zzG*aTCXwbwbybL`lxV zkfLTD3TXz;+l-W`d{F_&C2|ii8aK|&uWf+WvH>Iu0jt~U2dT`m!jxk!G8H8;9*klS zqmjfp)Kg<5cE*dk2loCwEACxpB?Gj!t4%n10+$FHL$ZjUrxbw*af;4y11N9C{<1j}}3djP(9KH5PaQlk-EBP}ZkKzvApRB8?j zamG#nH{sSn3>4A25p*huA(`rMR*GM0kp9?y%4@~I$gqvOF`3ux>f;B&%1GpeIF?oG ziV7JFJvC{j{?4{)7E8)S!?8mF_O-nm0&x&8>=WNxQ)A!9lhm+Du`YCzz`@pzvN>CI zzprt#h`qU%X?5#7(Aj`P5K}NA&Y6;I_S&*^QpG43XgZ*p=6~p%h%dFO96oJNCf#9w zt6mHzqOb&$l!F6+27CdjW7MqI5Hg%fu&r6K@))P3ZH!Gt9CJ&_e^||Hn19|Fy6m85 z=BQsUQ~g8K(~%YHf|pW7f|Iw+t?NX_sq>Wr(!HMS`#fL@a)m2A9!WG!XA`k6{xs2< z=fF)BZ{O#GDs=MMY>4S;ZKaF(*x);p@Gx8Ej5{r7dLCl-bv50YXpGnE5(& zx_*JztmhU3Y<0jY`vCkd?Kglwwxcpf4niLCB&+=Uae~0zcKD>9zLC5SRcJcLG&@2i znr}LmS+a3n1VD&VKP2@mfeQ7i!gjf(sO_n%mCEM2+A-ZY7E5O|o9~Zw$Sp+8yg8V7 zkSneH#xR}gw-9OY3Dl$A-R)cl)*VdCUb?xJIUO>s+EbwbfjE$`YD41-RdFkEBv6M( zBa^)$*tp}|inbCUOf4&X$2gy|qIjjiOEnr&u2XA!3kO{<<1y#gNiYcz^u$O(0H%Vq zgGt~orf3KgZN>o6L9e=v$>v}4-Mz~baiY`T11bvnY5ky{ULR%)bMHR17wiVr-dorf z2wDr-*T(|k=%3mGPqC_PYKirpboIvZ$a!6qf!<^~fW_Q=5crv#Bhki#C={YaI?AE7 z?0a+QdDfE}-XCRQ_R|^=*vCGLv?_8Zdfxk zfSA^@zq&*_Ot2?fB7>tn+-?+usQi(E%A~CKqGl+y$KO}eQ4jZ%^c@Wp9ZU?X`bP6E zJt~d zwOn(Tr5Nm)CbKb1^?;q>7*b%SJxWKdMbX_q9P}3ljd|M!9L-7`2HSI(r9ZjESIuU+ zxFp&N*)GfVX~el1C>s}=Kxg|ew`{4SMvC7w_jtK_rR=t-;e z42a93`M_e-74gg&UfM1Nl&2nuD4ua^Rzlyha6}dpq0wM7v`T|&FS6AJwD+PCIxEKB2STkjSI4k|PT#-;DJ(W@&751tx8KO3t zYMQ0VYieTs^{@#h0$q=SmDBL^#87S=oIBDOZ1V4j4#_`8(OyY=%1We0=M$piH8{zs zA3DP+Fz3<)D<}b|#dwsO<+Vm*F<#?0nY3?Hjz+X@4Tq@0A(6ng8LZN0wHDAjn-ZSW z?X>smL*$VG>Z9T(n1T)zFrbmexeYEXNXJA7A;|hoZAYzYC)dY7o?yHVd~?*8jeTNGcT)Jb=^mWUBaI`JfzO%Mk4 z>P@^SJ&vzw>~V-|R%~u`H#YLkOBS!w*w}4Xt4f^O#N>1?=b?h6Ws)Hz=E*dGtYTH) zGXKS~Gq(d{II}o3}Sojq%;I)lA5(wRmC0}Wh3SJ5-PY&H+o=LUL4m}b9D zjh@CS)DuQjZ6mtkJl9}R_>#u!G0gN1J&kkdj|HaamhJOGy<3d2cOpmX5Jrs@IBlXi z4L~N7`UL5`jyqUiK&fyKATa50+B$62P#w$&bdInNtOpZ*A5!xZ%_ejdp4FMRb~{(w ztp!NcTstU0A#p+Tizh**G5YiOp_ocM$gNsiD3ULvZoa@tz=sW0AY)Y9mzQR=2sG$J=%P*|T}rdDYQ58rw=akVy3M89F2=g$KrBV* z+L^ageAuYJ>OJh^n1Y0=0>qBsWMrVNOcVWnU{H}-ypJR9QzX+48vB4E3gR|{6-k?K zty{cRe(NRSuCZjnZKx#BR#46qhk7$o9=?dmh!7U`I^RR?C~% z-H{0f#di9ass_t#?x~fiKM9&@r*A&qdhG1|CdpnZQ7lXsD=A zo@G~L?bee$wnjZKQOGuvZ-aJWJhr%HlD_4t3;K zZ*s2hh$CL#d%>4St)YWt=9JVFNR3K*m`Z~B{!T#J)PsfE0A$xbn47zqsVD=o-p58L zBc0i}Gw;xt)H~C0DbAbn&9O)gSK8x+ooo}sVcXaG2wyvWB_3YrzD~m`Qv&H5=^8A! zkJbys2Msd^1-vCM-pCE)@+#oUK9wRf{g@GMoXe_Q;%v%Bh=^K>Bq=Q<>X8nBi!iDqoa^uowyWFgHG_vTn-pyvBL#lQ*lbsn9h-3+4 z3J*`St=4Wf5f zox<0V8<6y^(mSK8EJ#yoBN@Rj$aSK)v-Q*TaA#5Au9&=!G^qjJ{jj=B^HS$EPzY*G8{n{kF{29<^oP9;d4FsIaO8`tf6M$a*`js`+H ze9Uo7rl`|us!;8v<~vYFy+=k$Ap$6Mfsh!=+A6e?T2%|54hWL`6|}iDAKD88DaH9v zMp@f8)je^9H#1?Q9MyStHJeX9u~FN+w2`J8V4w}nQ>&cLuoJd8ngy~K)1M&4U<#23 zp|{kGt&>Zeen7Q%4XHusDce&xS0@P-j>>r`c`Ww;+a~=oV@8_bPidDjBvfU!;xb~D z{v(-ePn_vx!$b?1fO4X(ZWUx)rj#H`yT<8Swmmh@OZF}_7nx9Hl?@vOfbl2Q5jNk;H!ZcW+Q8g^`$NAj=Qx@y4?OS!J}Rb z5^`PWKp?tBFQW7?QEGE@6PL)RDDqg`^}3E}qc%3$u;yw;WjZ1jsIfFhLau~PD}r=1 zp%GIEn~a)|3AZX*G(uH|1Z^A5dV6D7b_)JVm+vvkB!FmWdXP_hd2^Mo(~sf-n^YWlMwzBIZH1~eJ+!;!SI0X>;F3J!p>2#vRQ3nSB z&petU4?5d#*KBS~bM$({UO<*$W0@45g^`N%5s(2Sz>_#8Jx^jFh+=F9Cx$@AWNF9_ z0H4kIKs|iCmN&=Gn|W37(aHD7i#9H1=bzYm(s|svbZNDDkcqHOTO^Huj3*7Nk=#iO1Q~9pQ*a4J0uH03=Ovh3mMyB8?~?5Uz+MZWoTnk zO(|2#pF_MBG@TksZk<@5Y#9frws1-c26^U2b2cxnuRuDf;fu%9@5=<~$u#@yGA%6iMqCNFnVve#yi{~w7^;P>y z-pBLtBq?s^-VCz`pWU&ZDaxu`bPRekgPsP z{SPr8_W%_2H+PmB@WFJ@sM=rEix)2W-;Gq5L(A5@3Xw(b zG#$zj0}>b4ww@d$ zy-Kkg+uX}pc`7|Pxkh5$jNl4nT;J%_^T&<s8X|x_9&1o(JP!udHWqcS z(}!T7lc)Qr@u5P2Vd#sSt$ax1H`*UA9c;SRoaU@-6i9qsRNE$$(A2H7iz+JPW6c^u zsy(B#_8k7E!g#lFFRI(H4K4E^@J!rJZ`0;|v6rANyVeno zdWClnFiLB-ShG7>%4_}IkvI#$F(yRR5v1j6vLnTEvxJ91mn3O8wf7zf4jda-A*g{4 zS~^TaBNgW{wTs^dKZs*_tBL8+gsukBF|{T8`;hV0z_7JBZ@Z30Y8GEq>Z4TQ72`CKTY2$eQLm*l15bQ)mw|; zXEdtK;Q1XdRR@@>?-F#H zvJ0nWVaC}QZg1C{7zNvu6SW-3iIbBnkJKXhNa3R$#h(EvA+&29yipKT*qZ?EReg+#iIZ2|~U5#vq>9adQ{0{&|b=G!J}7Oh-R!}vVX zTHapT;PrfbME4S)Oz9F!0WtYxNg~7XPH#d!K@(qkrf3VrOY$^Mjn=iDsL^*M( zUZ)sXOd9j8B(QBm_x>t*INGJ+D#8N|Eds#fkv^IwfE9^lF}hSJP-vD zfcBgqUkM_Y$c+d)>CEuekwFdY<)bAzX4z)WV$xjh1O#hNL4GZbm~g`ds0GJu<-T2v z>NxNh3DI*L2BkZ`E(+n$4&xURMM1f95Klt8?*vj*f~ttFfD4 zAGjt&AFt)jmJ(7@RVzqq5}hIUmd15+tBR$#HLoRzcS*59$%QQ!mD6TfgS0{DfZX-& z_8k0xJY?=BpsFFYOGWW?jP;6gv{e|hdjA9_I0fpQ+60Bv91{CCNr$5cL6+81?`FE& zA2g}w=`yhM?QdN5tV&N4{d{}Xc(Ne5wX+d%>0;^RgFo0?Fxmk?Z0FlHD>O%CgpdW( zaULbYS^7qHf?-9v9hFhc@62Szr6Y@gfVXsrm;)@*0FJr%#5>cq_2r`A;y_`FXO!3` zhJ+htBfZc9c<^`-qk&)&==jG)&Sk?61Z@~pDrjlV_Z{X*UQjs513rksLZO`}PiWTr z6VxqRA3&`<8VrV|>DqQUuQWW!j#^d$5KTwwh-#v3&FVy05nsrCcYsy7h@Bu4PE9$h z$4hzU_*g<&5UrgCr?{c&xAhRUMAp38D*y&DE23>PP9h^wR+yjQDd^X8n%-inGozQv zMj9w>Zp_(|r?lSGsMRWf8vcSqI7+(%EGx%605fr4&?yd%OiNBL|r(*>6aWPRzX^2cy@W5c9!fH7YYgM#b zFb|R%TzM5l;8Lv-gx|nB^K_j)7m^I>mC>lC1BEnT`fF`tepagdpVF<8zgSJQWpF;_ zW7@~d0C2J{A=F|!(l5rl@YU&zXh@GXtlK;$Y8_q-2qPM0<2Yses&T7I5%JfrY8Ec!`X%i|g!FW4>rKZ} z3W|-cFjAvko79&^A&3hpC#{gy$&o=C6ULwFk@A1G*ak3RKJd!6-q0N@k&Jb$~`k z0R{_+xOCN8H=h96D~d_`^d}HbLtc#`3S68i8;zM2kT<+(VgVV@40Bi-sE4qr17fqh z&@v(-Ya6945lN$WLXkl4;KB8&BQ>Us5E~(Yl~sDJJ$!!9N9f;y1rIEVu=$~5 zH&Wo56|<36e<5~a;tdjs*Yi@Yk!R^RoPArC4%q;i?9=Se;3YV@EwqYG3YKNX9 zjKIu$HE1-wRs0;hDv)1<-Zs^88VzPS-lhx6yGG?b-WF)S(Wcq70xct@>9flNoeNVM zvy|W-lqgHMknb1!Ph?$gzkq3y! z_tB7(suUv!sJ_QAfQT~-4=`L3eGt*70gd-OSoBdS`qWv0=-AMpPt5Ebe@zb(P>%vh zMSnP6q=3Qjra+HV4JkX6=0T?(PMZ1X#++mY6fg?8K|D#i-$eJ2b;l;M4kk9{UcI+Fqe^VmXW|(o&PT9v z5~Z)ryCSi(hfJXD64v(ebZ(A_DGztFQ92lFXUp0moBSBr*D|SgyIaGlLCit;?@y+L zqW~%8Pdl6)3_KUCSPo4*ozkSa6l@VNk-)s3M5R+C&PNukdVNjDWW@NTo8h8&l|JYk zUY+3?hEtaW*!QD0Q?rOVu&;5_T2gwlAsaXKnGsvPJ^{u#k(!Q32)Lb*K@UasWs%M- zyr7|aQ_QN5iG$N=I{H!7!A?|8>3CN5cK5-D@}YyI;(gRW`GNt zuKVgac^{xwX=fQtzPd~Wf)gha-YjE3dYmue4ozu(Sxk4vW;ip7Y{SQ-8j}>9*m96m z=~-e9iTY7&(jBSVyV;fjTtP}2GCO+tgw$eY*I&Ix=rTw)`}55Pb@$$)=uc5x6yu=>nyBo;{STuN^>uHq zZ1osK!iUZF6lKOyp&N3)NSjBBHb1zqkVHqy-5!Ec1Zp|m;NoaXxG?bV4aN(je!d)8 z|2Yu+HOWS}ha2LDrbEVc(yTFT*a%X!g82}zlvPn4cAZp(5gJ>5808u_F|cGX+JfWn zbR9I*$Dz$th>U8qwkd{xtpi~TZAaM4U;>U?{pFmdaIP|wE_<^jO-x=Jiwz_6#9fC~ zMh-%(zfOlFd@)2*wb#w;EQx1YP*$|Sf;-~(P$nCGw2{xB3KuObNh2dOdmd)u5Mv0R zFO>7D2W!LZkjW2D4ZgtqIA5N;*FE*Mp^FK2V(23(+k`k`+%UVksz?$K9v%?3@5TAIgV7)h1K7z!9 zl{joAjqMsVJ4O!5eJ)^88;x)w0K`H{CnNwegOUm1$s8=qUZzCF*$rdh;M5|IDD_o` zFza3cs~G7E)3(WLyHm3Rh!a8wq+eEL`*b=d+IFl`lBaka<7b6gy{BEoewZ`qG%6Mi zVi;q;t%~=n{LEI4EN?uB!ju@;L=0bXiaQ<1C-MT-VQaUXSTWFCL8{Ui!STBjU`L;! zNNyMtvc7Z>Mkw@minw9#O|?&JB$=5iDKV%JpH*sVi!D&Ay;aLMYs+MFqgLB&sD!S- zlzMG=5DI~&g&44i0hlAUMNymBXsGD3+V+)d%;{LR>fWBQ|ldt@qpnH#0Ao39(~j!BrKO&npYVB z5uVecw-=szt(FI2q|!8s>Og}LmG@TZ51>}Xl;mnWh#BsG9ZMY|jV|OT4T!_1nn!=G280Av4%&)Z+z~g$AtGUiBX!9(zGq64DL* zsd=p0jb1T_qTqnHuimVEZpPR!Vk)bKawfl7!K!Wqd=}W!dKFYvlRz%nufVy%vTBxQ z2jgWBZ;IS}#3robV28zQk_@K3?he<5-C4}er+vP7(}iLBh)EX6$u_0)By*fmxieX5 z4gO*hjhCVp1(Qs5;@qfb@FS7|YB`ERqFD?28V+0fSjU>@&2j98 zQ#vDjHFm?M5FW(7?iItaw$o42XH1o+1J#7;*cf8Oa>CCjQZW`=#BNj^us|5cx%LTx z#YHeKTT?vnPQj*(1aG#i)xwVtq$*!y9zneJjGdW*BBWyWfQ=&~5-m=-^w^+5YTz`b zY2iQIU>RX6M@!cn?l-~MB6u1uY2(p#ZogT!SW4aFMGPkt`t_aug zB+6_BmVOp!XL))dJGTpcD+sN4=Y5tV8_wJ-H9r5rib!-hL$F^!3AQ?m#gRm>4-BGIk# zx7#moim`mDP|`L9NY$+B=ZJHT;nFg57r17-xl?6V56;7VQ zD;{14&&c@|^M?CM-d#m}iq>fSz&)d$ltWgnJ_Cy{^DGI83X^s<5>q3c6VeP>al|N=;uJ{XDk8@EHcTy{!T>qL>BH<})bgtQ>q{aBPeMXjAB_$e2k)AB&USGc zV01brWQm=nv{6`zy<_76v#$hJfN!oUXDXxH zDLZdkOHNY_SF`&&WtZ4acpJCAv1!FfbGJFG8x)Ju9b)LkVVIRh7p45~jT*Oii_ySqUiC$|fFROI{EI8W)SlWx;XdYG(lYY2!zj(uB!3b$oB`%T& zqXDsW2y_(r`FwBKn_9<20l}?++2qwO8pZRY2Dc_&BYI~g6C$TGNbfHwfsZ`hv*;v( zpOOn~27oAPP}`UpN$XQQKihJZy$udf>mIfjfB>hjoJ>8hwUi>;%q;P&cTx=??7Rj= zKo|@vtVAqFbP7soIdHO!(JJBlus^u5%eQTesXh3gKR2NY*Aql0mOO7Mz7 zTOx!wVb_d5J&0@>%i&3|jN?i0G3_?5Dc)69`=}mR*{_q)5E-~izYq|pl_Rzz`$6Zn zHjdBbhi+m841LX9D0~d%ZCi_`<_zo4TDD4dZQz7%_!hK${)pnQS1<2M`hUy%%%nl%yTz2gAiR`U(~goFZ5Y?N|ZKAxRcoYE~FA z!;|~mR0Lw-e4u=lv^B=utVt}FCOy2Gc2W=0s|ju<3e07gU@Teg!;;3M8R8+*$gCF+ z!p(2+f(KziE(TH`@wl;VSsiLb@W(WICOWJbQyqZuxbhxKV9p8Z(coJ~WG8wFg8XoEphBa8{G`j#w;O>xWexq9TT#Hx1d<-3BxP z_yvv_lW18iB&-Ei9nd?e**skR*WgQ)YML#^b6Wt6i|{kpf95X&EMV$5OpK__%w27v z?A#eBJ=w@;Nn}ZS5UP|ZTw%28-(|jIHG89L%`209sn8Wl*f7=GB6z#CYTtgnOR7jY zt~2%^buI);2dG&jVJU_7XDVP89>IhWizsch9o*>z%q~m^F(#rzg5MrwE}R)uZ3SF@ z6I;JIie4;A?0e4&(r#gzn4^R;2x?J9Dc-EY)XaZ!QFg0#(a~Y$K_!a&lWzCxb8ZZK z3}6P^i|yxotK#9|K`pp=24zyYJ+^s$zKOTOgbosg!=HA>$#hgSrW^*j9hwI&je&>l zEAWFTXP6vDyC}586t2l5CG1(_IK;qq8q*f60%r`Cf|A#pk}N2{%fZk^A6aiyuJVV7 zUP9I4Z^1bw3Wv&sHwSbmEkKdHyyIQPReBxnwat2Kc06;qXKq z3|SFy)Qj5x@LURegP^euW*`pFTn@*@e3|#d+>hA^RR9HCh%G|YC`D4_rrC_{JwQy2 z*qdsfU3X|O&o&?E;8t;m-Q2q9GFqm)o0~(XX>5b#Z1b1R;gxE23wziU#3UinA{RTe zZrC@@wnupK`gPzmw6?m%;l$6casM~R)QEGX8CId8WlHKb(K!zl;D@#aJ8X^=x>5LE za6niz1OiQo6Hd~~a~-B{!osw+TXz=-g-2piO=4`FGw$E0(0~M#>4a+?cdi(X*cIrU zCR@-KOrJ5(4w?jN;R)!hX0vCc8vVkd{A^$%`*d?De@6W=@=A}MM3dpaL`agOj!e(` z7%U+~3JHPU2j)q*ua}z%XDHrXyORs#kOOAH{#T)=bH}*DAqW#NB^P4}C_`540mJk( zW z$JlXgy6icESM1p%{%}#>*o?xg1bSI9YyQ6%{33phl~)YQHT;Vy(jna5F)$wFJJ$e#MFaWJ8!@&T`+fs!ofM>GM z!nYV>yBn1W@%%AD^yaPr-IX2<3OVK|4_KIZKDDS$8J?lB;u`K^p~iCqXO$D4^)>zs z!vQrlfB|N0JPWFvH5W@doWXABNu0h&6mkCqzL60VXi8}Jg=(AW&hc8_dAyd*>cpJV zkltybodMvtjGFPBdl39Zw=eO0WP58wOXMGL7$focTA>kMOI( zl`~@IuPMpJoeEu|VpBLq42pQ!-g68(lhLYml4rOG2ccmwU``f(IV>%CN-cNu@*e0Q zvP0b8&3-nLyqzgk7Q1G6NY?FD>+MyzqdS9=a+Q8?P@7B$CitKRX>+7@x>@?%9ACCC z@V<6q)U?0T3vOwd{q1kOM5gk3wP#z0<@VQK{o3EfNNE1kuYc{A!C&=neB+<0 z^1l2k#OlX>YrX!~XBbZZ+}FPL>Z^W|WP%4d8%kb`=gx& z(ecgk<%7q^68TC=xwt$NZm>}O>O1TIrrGH59jxsm6;wEkAF zR{zcQKVw4J%$|FF{npn;@A7wG^Zxw}_I3XK_U&Z)+PB)>=U@9%7X|KhzWVxl@~T^UCv1Knf@vS7|N zS~i!XJ=t6|C<3QRyUNQd7=Ck?Eek#KNor>jp-Mj7V-&n72 zf8W1b|NLz~y1! zJzKu_)9bI?`rar0Wc{}<4A<-bI-=|OKUse>{qQU6|8TbZH`lMd?|t`wb^S-@l3!c@ z=k;HE@2yY%@przx{`hSlF8;~-+w1jh52YVptv~w7lh3bz=l%!2z5eFjLtkG1$?5JN ztbfUOn&j{O00K3pMsVsmpD3%risY^68PHgFh6U-e2`5bFIIaVjmoiX`ziqf(G!(PD zO^rox6_ujw^4sM_yjM-1Vy%PyoKA=HG#}~fdp$NKEJN7nYuR);0rVa?BlV2kGcsTO zjpm5~Xbp5xQqV?s(`{m?!{PLyy*IM^kx=JNro^NJ%skM))eZzt0M>FxS8r4bY!4Pq z$cZ5yb9o}Zo##Lj0cF&7_L7;*2bHncTtv}YlBEK)y6JX(IvD5!aPf{8GQXJ-buhrK zqMo>PW~g%i$+gQyAN|7mUsYVIJgxjc>#u#t<(#j4<(7-DtUpotbM5tdyK<-d-M+N` z*KzUk+g`k7z214f@;zT&|Lm&reP3CBE&bcHLyd4Xf+*eV2Z9{jXM)clv|M zhhJU)O?T%$^jFru=DO?3z1P<3pKyilZTT11zwTzsA6@^-EgxU62e(v8|M`*idii=~ zbQ`-qb0*qXxvpNVLWS@yoeO0&_<;IEx>UlXF74^h5$5VC@|UKSp&$NAYubkJ8x{wG z(Je;Z@u5PVQ+L@rctKry5@Ej$K2GzS9kE`n3)Xw}?{mmgp9o=@x9;~@%n@q<#VvTjga6J= zyDz@{&Gp}lOQ-MgE`O?0xxct{OXUNvt$*jmzwvk1>ob)HrSIQd|8nJ)=iI97ul?$a zKl7;<`eT*be`LM>nabZ-|8ZGfefG)UTmRd)Ro?x>7UZ43x&Bh+mi=$9zg~I! zYya0zuYbLA_;1#KeZ4+ax$hsWzjjaD&YXUA{fv7?|K|FyR(@;!t#?%3-F$I=>&5l@ zS6=+tFFZ@|upHF76YMi$uPcaqp`$ga3up)#1iAu0!1{u@`{{m8 z(AyQT#ukO%662MR*$yAHKGvUGMrhPKZPX+NmgZlScf-pFrtRT2tfI9&B(m&6-iZ6~ z7$Mx@$%RG&XSnwAu4sZu?KYRqpA6g`GOy47pV=3n{MeJI6jbD*%m>p z(PO%`krfxW8ejhI`qocWuCKon7q~u9`HkQI`m4|V!2SQlVS4v@H+g(>{U5*b)%E)S zsLZ9oUzkp$ynlahvz01sNA~#t&!h;c>PbTXQk44 zZGGsT^cO3SeQW*UUtE9Xi|cF7^p`7@^Y!Mr_>R+`+Pr|>cs^lrxmmAXN-l;L5*iVe zadl(s!uTTaektZ#uuk$A9xuW8-4K488*<^u==XQc>p;lr}am zBAJP}_00>##j}r|d$_pZpJyLA^Z12Rr_Me4@FO2N_vq;}kDPh<)akQlPoFw-=Je@v zXU?2^`0OJOKXUr<)#;0mKY8xabB~>Ua^vEu$DTZQ_VF{P&OUMG%-OS#o`2%ub5EXs z^z_5$&OZF;lMkPM{QP5&pE-T%(RAa~qvsz#d!~8*+#`=ZeEx}ZXZ?UjAAS7Ev!~BI zocNh%&-kOWXU?8EeeSVSr_Vil>G8AY9`zG0Jo?C~$IqR9C+ECeCiRO>(oPM&pmjm{p$K(y!hhJ3S^a^UjK_&x44w}&;3`8A78Kk@{1q; z-SzKQDwm)!udg?Lx9&gx@ry71^v`u3cwxQ%^{@Qr^*=scsr=6RkG}H1{>xwa$l5u2 zckzYw`c~`m`(OE^^*0-DuME~-IPVhQ!}Zml^4%-{!}{AlSosH{>ci`Aeb8C|L%U?X z{%e(YYsHFlFRlOMi!c7wzkdGx_dN92=?|Ye^T$Qx9DH$OEU(Jb3op!)H!E z@W6wo&OUJVk<$-9^3X%4JjX}Qc!<-d9=ve+%;|^y@9ak&eB|MeoH_I0gXhnDcNM-sYf4s{M;iCoH=vip1be9|E_ya-g(zu_uhB%#K}8P-g(Cz z_uX^Pi97GS`^24ZoV@?UT_;Z5eZoIap18|D?!5ElUH9JYFW-6psgoz~^^3diy7P^@ z*LPO#Ufp%_?t4CT&(U8wal)_fz5C?dC-1uRzI#sGb&p>>a_^ldPu}_9-6!t8=fpkt z-sNYUxZ~tKC+@xb?z`^3)6esb?!M;^UvkI&cinyW>g2obzUR&pcbz#zg~Iwr`F$=G2;}y`#bBu^rw{%{)q#2 zSMA@g|80D;vz2Egy2>q|_08QN|CRG!7Nsly_v`CB{zGN7{;eOV{PBAI^%Irv_?i>V zfAqyq=D)rE&DSgA=RWbNpZmlweBo1{`1zmzxtCx1#AiS8Gr#l;Fa7f8U;50aKl{?p zzx0V;{L&{s^O;Y5>XR>h`qQ8KE+LV{&Syw`3s-<)Zh8^ zOP_t|bD#Rs7eD)pFTebYFMaxR`OBaD?8~2i>7~!T^qF7y+h6$f=l{;U zD+fD!2bcHf%k6{3bTQq#y!_bibbD`SzBipOX4eX z_AWnr`Nq|qD^DF?%{`9#k)90VsIoR{N<^0C;)BT;fAH2Q2T-FoEiy!(!Des*R-GARhe{20OD=LxyRQX_Uy&hKH{^#EJ zzJI*_!&^W6bL;hAiF&3|Ijv-Qmx6Rxd9*$(-}j1d|0Cn!n>+~lFuI3qoZM$>Wg zYbeHude?AR8k=hCjoe|Xv;jP0o7Au^jj9-E zcRa~oI>>Ia0B&9~p@x!vqrt3}HCbK!yrpvHmm=0hNqYCII`eO?y`ma|GVpRzt#RX@gJ?%{C3~qZIy?TB6(JH{N45X)pu7u9$$X(57z(f+p6DK z|6t|!)~~F6^LrPSKU)8jcT_6(Ns>RYexdS#r(@T=TMGTd-_zIM|L}L$@A_@Ts``~7 z^MRyQtaQKpOy?$Ku$d#>5mK_o5R)9pW~4FW6oo7kWBO3Y0Z#FGNY{%|`Oy(im43O? z%+CX?fG+HAM^m)I8XO;^r-5s75Ny>!iDAqvAf2F?7&4n1=>XEPt1;H)+u<*@e8TN% zm0iGo%UjD?^f_o|gAjOyewVB)n_bRm?}otf=EP8vSp=Ox^D<$r(PdPg;G8_&1FTx( zU@+Seo&_(ciDGJx7z(QUAvUa@k>Ajn7H@=<;RE%5j--fZc)Ud2Up8+hJZ%~`Yf zQUt}ve?wFh10SiJTKxKIee$bc{+Y@CM9$i1)l&Gj$d@=Ngz9yL2le(L{Rt#ALQ=PRP}-xq+t;6y+6+8^9k`G@Q0?uzez zS`HjnZu#Kt;_jE%t;$2A-%*&}-u`QUvRc3Ow>K(}e|J6oRi0AC++83<5N6{Im=oZb z5Z}B-v*-L7!;IKuWpi(?yRG4#xH5<4r8ZemSJ4@HL2(TzO9&X1xnK7XHI#^o9(;SM zkw>#MI3?(451!u+0Z+jXU3FN)WtbT2vHuD(h3jIS2fIiQ!%3T+0KK?d$mU%5+M~;8 zftDAyc``F$;%-f!K8aq4k5VDJSPz5Esg%qPo{o{!V!kHqV+*A(H@~Z zEK#{8#<1aOJJ~T(E74QYt^!Ccr#GAY_HjTp(B)m-+cbOJ#6hifdl!|A-SVNz2QDQF z%U<=d^1dIa-dDM;Xx&!%K`}z%sBi60PgmZX^j$37tADq0=49jjl?R~3mCD)nxk`ol zja?a__D&h|*0g-wKeF^)mAl%V+biALtq)Y*GpIY8op)C58glZTDO~gYE=kH2T|?aM9Mgk* zUqo{w;SuX8cav|kI|y@?_J=~csxu#qX9fXBFFFPuE_oy?3zyb%LaCgQ>AAisg_e#O z>jV7D%WlOo(g;sdhZEVKHC-1+tTT4W8<_znh|f13iNv)*_#sjxYeSkYUUx&LJ3j3x zlmUAWcbls=iy!tqVO9Y$Fr`P0W1o=j*(I$5jY)5$t-vR&9S|NF$+MM+%c+)>F>fkO zi&RmrH-?NSHFV2*^TEnHF_CYt+*NE;DysJO2UnGoCqMjyS?iX{!)1R{2sPxHjPI?|?-b@Rw)5e^q(kotN_DMCA@-h99iFb1=B& zJ-y`4dn%_|d8N{QqEeyhZRqD8e1GN1q*2^nIb(-E{$vtp%Eua7nZO$bfh1^gC}{U<^+RMYILTf{;qzX zae$tr(;Ob+3 zfw}^7Z_GwS+6L)|C=aggY^4*y%d`|q5@zkeN$_{jq0c@V4&2@kwFBl`_(W5}sKD^C z@QL_20KE0N$z)XR9~@ns;fq025HVv|0|A#5vr7%-2%9%<-$*Q`eg=h|8A8P&GaN?k zCjL0$?)YvjV-xfzy-6=!<_+eO0x4CH`A1M^LTrN@tEh3?O&q%>=OmaH#d57&U=47; zbIoRNj=Tdo3uXb~I97yDJQ&cSPVggwFJKU13WEpv&bo_X*^8UA)K-m43=+{phu7>c zFv9VZq(*dv1I@;=U&Z@0aJCU-b1d^do1&YnxXE!$g;QacIL_&SNuir`rO@&^O@=_P z0KipaG?%%s(wN!JlMCzY9=Gn!sFiHhJ8YSxrQVVpbDO8Ys{RrB7>3}cq{IEI*MX_`HXHT!N<{=RK?3tmE?-OM!&;aSIsV}g#V^=sIjG$p zhcl2%?T#MAY>0XX^D)nn96U&4vW*l{OrJM33lkI+qIzdl+=5^WC2Eqm1xN;*Q7ij# z8A7<8a02(6o{inKBGYi}( z3<9q8Aa7fdq=yu6;ER$ff0Qkb0&ZMQ+$hy)RngHDJ)ZC`QaHx2Cp%qnK4V44EK*_K2C0JY(b1i9LkQDo=T zZgeE+Qf*gM5r1fS+09uED=l&ww+LYc7*(%0# zt%8oqV%s_1FO~b_a9mgZbAFsqViI9++Q;5HA}kKEMU1%d>eKFmEj0@5m>e__lw4|x zeQEG+15%qbW*jqmGv}t?J*15!psE|Zc%4&q1iwgan?vlyxvPkW6wlRZ4L1!p$&!ZE zm>@ht)S_i4lgEQbiy|e&5`>@zRT>$}f+GTeq&fIvR#^Eg-IW0Mu~KYI%Q9qF;If{n z(uXw6c_jD1Qi956eMDD+U?wtzT|pmqLld(#ydXxDyfSo!F&|_mF?MKZSO%jZVJy9l z8LOS!**>COhsMS*3={Bx$TsNFV?(}y@jL1v!!&<@dLFmDBCVn8Fl(@aS_hqoUjE1x z-D}gAh9j;Agnv1H8J{*M;a<>_ASWHX@xJ4id@q_Yli1<@F(k1;^eS#ZQOfA9J+t%cG> z0Pq;xC1T#}PCLH`U%N+*#=M=5e^_s6{zQ)>SOd&K?*cPoB^iKGzAA=y#dSA1v7AA* z;ffUWH`!9YR3WPdLg`Kul`e4NlE%)Uo4IMaUo3JSKgaQPd^5i01k7l5o9^cc=bopR zF0UNBdMT7SlZ9L08P*2(hLm*bS}DFVMPif|)iExvNHcCdo$sQ9xk7w!Dz7f|v)o8H zI_$(foXh1HMQF6>IEhRk)mVD52zISQ^(Z0@YZ!B;SR+)ILWKtUzm1ol$?t9TJjRAhlv&^Oa=g*ZC4dyD!M*w~tpWQn{>NGjn4_k)=sF-rVWqYH&gy;4Mf?i<4$U_fo#N@flfah9VWzOS$BN%Lf@bGv$cfF zuw#uXU*y>8PMhiF`i2V+Ku?S17?^??!d<*Iagj}s86=w_o|g(lcBRtg%U14LzG`P@ z+FVE3i*}RE8lX8YOl$@tU^K*HeKDFo;a~Od*Xnu&8fwPAOXHmyUlbxapn#pmA zIX2qmiwSQuhAr9?&!IVik_`_@i6{M$d-5U+Voqk`-PTndM%Le7w6>2hwsikm%67yx zsg34hwqOUST#pH5xX_@40O;!YaB6F{zfIWRW3EgNDn=6sXc5CyA}(8=v46FEeTsS& zn1;6Bo-_yL<#G1Rf|h3_xVr0tw*reN>Z-WkrseiW)o>bh!}V^0wXK|*7-*AH(kMB` zlbaK&n}REDu&|)8;DHhmzN!doWWyxweOYl9_c~$nPcnSCv1`jn;aC7Mx(rJ?GLX1& z7b!F@+0g_HTYF(F-er10uQZxcWBE42$$U!Rig3h)06Zx;(o*)%7>y>7vM4$DS-P4t z>;wCHXi5~^ZHH8S)tgOt^On6E>My)i3(qiekf+b89{LBJx;Zk1MK~0DyR}8rB{%eT zXy1ldt?RCL9*%~tIwLif+3DRaTSZ3aNQNc zsNLll+ru}(biR%(w^{7sh~b(Haj_8VwXs$+I4+%X)#4}ItBN|KFl{Qk6YVRJj_ZWG z(``alw);Jz3xwT4egEo?H?tsk=q?6(o_>fmHyOi<8*_Cb+H5#v=vdRnPgMDK0H@== zNq{$+w#uzEyG{9Ui!kM*9dWkXz1jsLaVq(>liY>n}%bI5+pgN*6lTqnJRx|BT^Ux%JrQ*!00 z{Y7^$_tm0_+dx1%AcVN^tuc2bf;FWWp|uJp6Y-7!Im};u1l@k{1VngPPzdRu{q8wc z&b!)jiLeDv1Oj3$&{Aht#(E130Xva>hNKHYJbsXcw}Yz!;Gmcc)yEP2)x$**DH>P% zlgaT?-gO*d-Hw}Xve}p@QG+ozZ4kdhq*v|BqI>S^yZF^gHOWrdL1HW-X!GMPx^Rqv zzVIh;@rP~aHWVVW0T64pGvxg>8%z*cN1Z6DwGxfyR9(p_^GcU|r*2} zeG4)$H#K8~x@5aW@y%1IU+hq;*JpBJ@IQKoZurK~*Q+@xKvse$-P@Rk(glY7Ik}vR z?WiKHjLUpfM=ldWi`LoUb$J!S)fJim%*zsN%Iy-Gj`S_Z=rlY?*mNqFp|nCMYoNSf zs7+H(K;6Tdgi#TTEle*PsNp7%a9(hQ@vvVMJ1!7fx-T*sBUe#j%*E9aovJLLG?Ow| zh|Ks-^kp(s)5#~H@5hHVO*rq5aRgmD#bcRKRqb#{T~yUhy2r=^m<9Ry zaT<;I5jF&1UQ;YaGy*-zMy{0B`m7>(DAIPlz(GYH=T*8l8}GrD9|lfrF#Jm(*SF0I z2Gk?eIaL(9gkb}dmDl{NratYJ!<|E{P#0IBYj~T8=F?hhu4BfyFqHyd#!Yr*4+qwI zdBh$IVS!5RMU9UA!qAz>=cU&TFj2jw9vBYGahnfl-vym? zVag!t!A7|`qi1h-eu%_?LPvM)jOc0jXG%n_S&Ckqo}lA48n0zEChbwYm=o||?5)~w z-zmDs=km|A=Cvx4XI|YSo29EUrV%e%4gOqQhHGhYrLjq-AVE&cqnlP1&jneD(U}=e z&Iyaj=13%KbTwIO0awrRWz;>`I{|ySq)2?jw5B9u8^%pTQ73fpWId558)dOcp@iw~ zVoKve=3tr>7kjT*GRw)vH`bCe0;!ulr|uz)s8~SL8s4Z?HAakHyrFoZCWUB&MeY(5 zm0Hdg)Ygt>+N_6|B?p18df$)iz2G#WcinyAx*ir8B>qBJE%CJ+IXHx8vWJKMx04!MYz1zo((&^(~l=P?F)EO*>6>H?+|f0Mg| z?y#}bxLL*ih2t1Iq4(`fI-7(|g}Vz_K)CR}HQMdTC4;SIYbV{%?z8Zm_s8(0q<5{B z40kzJQ~BjN-A6O0gdBjd+zD!p>~g!=uEQhJ%=;YhYJVf=6!+_FyXVeP zbv>UaiN1q;i+wt{OH5L&4j0RAT+tr)KoYJthjK$OrJC8aaBq{MtI=M>gBYf%eLdw^ z&jK-#Wu+xeqHWu-mPa>|a0rX*XxKjtWUE@RGEHNO33QId1m`pziHV&jv8%))xb}cI z+qTM~Wh>l99I|47Pbj z&Rny&yAxJ|yjjyanRuh`p0oBM8-Fa>>(5AYljTB13N^HIJL5xE30wi;H>zGIz(@5? zkIYcWl8&DQgp2;BoC$XL9Lb)2J}7bzvdh&Vt}YEOzU?#Wpbj8>h8>y?55X zj-xrLja-X@2Z?P<;^VNxMD#1)qeffRa~C2vW*|2&DK1c~?Zq{RJ4-_uOgc}p7z4dH zQM*8E{IT@FZEHx<^SBJVb8}L8b1m6tw#sWZu1l@isg8DdBgS3ggJscsrgT%-BF(mz zgV9(q>OMbr%}S}!&G8MRxZs9> z_C)u>+w~n=@HOQ(TaQ)qN4W)4GdHW%J}7v2!~WxxYv9=B@u#TPb<^FzgqSk9)T^01 zy(69~D59xxi~U?JOeTAER3+=Lgqw`&WoVYBDQm?In@%%@pmD=1uL=41wOK&*ykw6p(@t2=FuEYHrvK0|S} zM6#>9XShfjjySZ;#k4}A#L#pVmP{Z4WFq&w=Dm4yPXM)c^+L{&5(V4xD?1$e0-B|l zX_9h;UikB=QT`oN(TZZkOm|lm3dpU%1(U%$J zZd8-tV)N2-?iz*#n%nN!!4H=!eHuC9C1+&sphgfdeL2B;vBjBep3YTpHj)Z zQawzAujHX*Z4p!*Z>v!B9P#E?x}u4Pn*S_poA_mAP*xRY*H&{)2Um!h;B(%|!A!$m zT1zp)5WHP;Cx^$C0EWS(UCTMf9al1)rf-+AomNKj&I{>SW5o#3l;+G%gz#vHhC(~b zorpsddM3mD*rz}JNcUE&Fd_jJ{Lh${!`O?s0oe0zG?xYr+zvnegUbO|^) zJx?wN3FAZC?1`O^&sJJbi|f=vTwTHoWKf&}lHOcNpIHd7O@GB+4h_gtiB%E7?$H>9 ziYqPzHr6A42aQ@7hvB8s2;0LRW0-!2DYVrSr*!5B%UPs}NeNG;q3 zL9l@k-IwI+OQU{`@?>-oV5pcFXyWkgb7_zOlbb-moGn9fzBH}1M9!zAGnyO~%q~Ol zm1w=qLPwgE;}0%mFatg6dF|ezM>XEUIsc*vqkXLR?ps-7_ESaBN2iSI1rz ziyclLeQ?-%c#ED#49)c!o4}}wDL1RZV@wf z2MMT|*ST_u3R`1)F_>D0)6p5na7j+mb)o(+6>uTvLPA`L4wUc;YateIIa&xofdpYn z^7tYnTq+3k7n zFsAZDwas1o8-_RRV!Ou=@0YY2@8HoHwo=1PxD*0L2F$&eWOE04GR`ugCOo|1X#tJq zOK@giD&Lv)#Qf5I_CMK&tEBp$K-MQGkUN>-pDLM2712P@4*IDrP>di=&v<0q(yLqg z6v&Jjdi-NzRI0Y_FhBk>t>B>TxH!BVV^?`#!s5kBY_Sc5P+&8PfUj=pFZoxS&W7vZ^!V{a7kLg>H;fA}hs%qlR@`%D&7%iUD`&ka zlHvU$q5GKIWlI(tQA*Lp3o|{-tLbs;^|LHqKT9cXqF>Nf#xO{<Ol+3nx;eg}E!A}P-6mO8r6**@Lv?;bg_mPK(!gk)4MA*$x)_W* z$dkuOm(NhYf5k4x8YPTN9Y$P;_wMNfWkZ6LLJIrA_60^2YLf4KF6hhxof&Mak~=OL0_cobjQ7Z(yG{?WOI8aQ7Zajw|R{>(Rs%17XO_1xU;0 zfm!Wwtnzq9?952`?>$OvfdNN7#_++g;3ujfS4AT}3=c>4FcUmD zv|XD(EnG}FijI;X=jf!u_8d{g>;EW7D+nr_p+)+zvKWoQ!nUWYqFG62biT@CW+2cL z92tMTbMalB{6!L|q+giXA$>2j*H zYLN{&h~iUR3Vg=Cg)pTsqCbTMs=JOjw}?dAJa5?L??X#HeRYxF%Z#%mH@KJv|6&ee za3Qw2w8pK=+%m6Vsl?*U*oN9Ossqj;YM{ROx?{LKtdn~TaeS?dvEIJF1RUln^A6J* z@V88?-;XN^8&$dEO!Yf{`&k}doIXN7$q$1C%pTOG+tQ;l2q`X<3>nvs0Y?W%OJ~iE zemDYxX>(I0ni}h}|^0fxTxXgxlkV2QIf7t)ScVe==}zPUM)b!F{^ zHRq#qn}c|#I@BtQc59?%Mp3{C3AS6w)%gd0cAD21K%!rT9wY|i z7pgbjcKu$G!~40gL4>%sT+quRXgLqzFx(!+Vp!O+>Dehz#)VMi#u_9SB9NX;CWv@J zC^rrdC;P~i^bW`SOjZu-Q4(e|J}gYgKF@0FK^;>kIAZLmJ3A)C1q;II+^NYp&dVh~ zv{06Cb9Jjln77g;qVOYx;mgBWmyMteAdJV9S}fpFdpS)i85$^r%pBCzxLQ_z_y9PB zSbhc9GQh7F+YEtJH`<#q_UlN)r5`S2HGc<|2RgTR^Ir6XKOn>DSuSsFYcc^7=2U?O z%E*wsjyRX=-|T6{pK0u$fM7}}7E>I}N002c2nS^7qG^8M>55AXa{D%>!I&2cT7$!i zSR~TDM$h1oNvpQ3HO^mT!l$5AF z3Uy|_WpDrj?^3mT!PJ4kc*gSQ7=*FA(QpG>_uQ!rFu}mEA8d6(qqgCQIb&n~YGfTD z46$q>YnvIH8jF>xh48SUTvz%XX-klyg(!XU5QL0BL$#o;G;Zjd+oJhElt3b<_MQK- zoBP(Y96pSNWad5mP7K^0opr3VGb(eZtnk${m`wXtdO+M|BOdr8Z!h4**m})`VF*I{ z%umJ>#QHoN&lGV?P?SWV*f<_YExv*GnY9s+sM9$xGpCXm-}Wp_jxE>LIB8}fG~_St zO`Hrq#7yikMF+M<^CM%(!sqw!z%f+$UyOtsb68t1(4?dp9F^|meju#`Q?}@sl&toR zm`5>JzycPju_5SK^J1`L zFM@{1{6bibZw1jXTj^XP#7mhjq(xn%BgAdT)<%m6)39*eLf+@Tt)K#S0r<{vJS5t7 z=eHD!-i|hs!U-1($(oadYK!Oa-Ps?i2z`DXY`{zSq47vu3Ff7X3b_p0Vf(FTdHGPX z3*WO&`{1(m=z~nOjB#uGAl8H6Q95&{-ZyWa(txQab}DpzI?Q?YYlQ{{C_WsldYQ6S ziR0X220Mx2vu>UoU<}C(K69`-MM%OMg!+^v7afW-yQD(65+ys zI9u4Ec})7Fmunv`RIKDIG470=-A>RUpgtV0I^5u)CdvpEF=K{Ur`{;o#Z|F0;#`1- z0m4K(XGn7%!@XCXzv4wY8RTWS>|cxw-KBGdSTe?p=*LcNL#X&Cbx7zc1zuNTm})AB z7t)6D38MNv0rmbupwS{CLp4uX;pIn1duL?ZEQD9v7fJ0s-xc6G_Cz?=++}q4N3JCn z4)WFktFd$OX}uEy@IV9e+V2Hv$YH~A#l6ti;8uol&Fg2`d);30&M=@k={{^d91S0O z`GbIjXAphRfoGyFR%j@NgGAjwi`~A$gHA4dDr0n4%sScK;D5pDK^mKw$BC#&@#Kxs z^Lj08sZttS=XKA=Ilsx+pB&z4)Dvr!j9FW;Dai3c=V$7`L{|K?)8qW4AZ(-p3%7O^ z0N<369W>wysl}E!hg_>?Vojl@*cH6oYN-+Y#$V5*E`p-Zj&x%AV$={SL0y*i{@y0# z;$0;;zZX;=Fp$?EFFNU6|JCr?`T+!=P`ZL^#U(%9ZPjVqUx@xDFp=ZV4IaNT2fZM@ zzYwjA@uX|kG6Th_IaFWW>CySA$&?A`T~3BnX?NDq{3b~FN1Ca9ECVRRB?Cq z>$Y)NE|jb#F&p{X$G?9(Wu6`Wzi#itiv^O!sLf1GEW!_SM2p6mJfc^)JNji=e}EHw z?!R&GIMvuRqE0awM1+}w?pd2TP!|-UodXrqa023Iml8IOp4brOA;~g3XdyAsVg}wktU5OY86L;F=gJdI|L)+9eRxESW z4n?!jzVS{OhVewCC^U9BZdE!fHCt?K)564sjC*&--_T^L(nd_^VhvL()UXrcX+0ej z2EPUS4o(j>1kr<(aUOifF>LX~vOq<0T*+G@793@7-~qR88xYiHm&N!0t;9d1o-z>d zw%eX#o+Ib>^GJDNGJ^Kfswk#Rp+bJmgV8)F3paKRFTBn7u^@pMB>+n=ajb~2W6=$u zXz>^D3H2|xk?I+0GgZU~8`X!_0Ut1k^s-1V!C%G?5#%wUA00kC?Mz6L+WM2jk#`Qh zD`24LRYCI+@PMkpnr02>P2?hV+MnabNneT(6b++MDBlV3ku6Uwb0b{bl4w}+Q{D#- z2QRKf{=}_HkO!lMHsbbvkT{wP;hcrHu`3BMA2Q=ggdZF$rHKMsKsT!Iw$n8@!l>A0 z^!p3ZAWz8jz$+jEq4(^94XN8H0E0~tvq>q;vWMqz)9^bCFtls2C8130$zc34Tp)Pj z4~E4bfrt7Hix0G?zMH&$mT#o%VYNQ&KeXHtZJqZ?CpcNgQ+(folPKB+Q$yy2&x69` z3@?gin3z9^bzY&bFaE@+a3Wkv&SvVuQcPBYzTp;_9>j{!6Pz90y~fG#%lM(wy$$R{ zJu*ZZkR<$;7al}w`xPu%2s%9A_Zc1l;96cR#}>x3*Ap)V)5GIJ%<$%z1gVDYijPfH zqx%Q~;}rwDBdr9%pW3lAX15(>kn13zruX+s^?JXK;tbWUIrcewKHk^e2h8L~Eahxh zVowGHI=i@2+jz^vpxFTp`iR05SIOIB%0Z+TWCWg;sIcA{>d7c7ROQy6vL1CEF={d5 zvTgPsg;AlDqK^YMFhQmoYG*(sYkiQp*+F`6ZXMzWdr^W7k-Eja(0~Dehdn>;@ga?P zfhOkdc@tp2|2n{G#L=kKRr-0`m1z7a;lX$grU?1SJx1$`mSA~)(78B37{9!{GuFp7 z5ncmH)W4!(czH!|#5qsUtY1QkR0;7u!ld=KvI$7tH@_FQh)VnOKMB)ipC6Ol`U};F zDP^n~Rn(kVxg5b&8U?x9k9T4b)B&cz!GAO4CSo5o=8dE@0wG3m=rZ(bjtE+n1_VNd zNNx5PZyM`VNmXz_`N5=7fN1YTk5~OyM?a6Qb2PfUF!&4z(RCP#_!n!?;IIueHeN|U zi5b5-S#6{DJ+|E0)wvEN6N2&qYPO+RF#O{`>>9^=m4ss9^q6l!`&;3-elMgnX(tjj zxCo&0Rfu+vN40O`N)+Ki9`n;ppsTcKCtOt$Nu>v{25DJOSrom>zfy5or#frZ|rM&Lhb>g&$~0^he_q_7oMln!63< z@g+>0ZAiFOUdb)@CYQ0&(B2bC+)c#RQZL4EGIoNV-ikWP8o1clKY((6|zaj|$snC|AN9 z&_*?rIJpK(1Sik*UFqXc1%t&h0tmc|u+FXDv7Sa@aWVe-_+2MPOQh@xGC@2_<-a-* zLwXc%0hy)?fysEcl?Uy14TVSUSQ6BCWH?#f!uO$mJv|VVO?!IGw}t)GPXkdoPkyMm{_UuLie_ z|FNO4(CZHQhROkNu;y1LIUD83#z8{wI3LijC}^}8uU%C%^QIPr-68S5n0ir6@)V35%v1(u2;!ESYe*J? zV^3c0AyTEl6cJ%yZc)BUENogSEn2Oy{^~vX>If7Ji_$!iBv4h3ehyH2r&uajf>QNK z>u3!c?O+2Dwxj65Ok=-bKof?aG4pqXdEKK0WFfYGb1ZLO2Uyh&6wIE#hrxzE$zqP7 z!u_B5?VXz+yE@e>wpv-;QS=goo%L-SKQzxRPWxwp% zWy*d#+*QoJ@2|vc2;}BU#6Iuin=66K#y|n}U8RH7s$LL1k`71?oD0hH5PKHu%>bNe z%B~beH`t;V)~%v$ixysV7ZSdDuS62ckfxJMuBX4cGNxn%{462#e!{J|Aqayf+L|i`1bM$B040 zzCC+{d&BraigS4iVtr5~;BFdegyRViQL}PNJ%2tu?L2x!vwm!M4FO5$PtyXEcrd?T zpkXg@e~R$PY|%T_Pkr?>JW^|J;J{X|%M?XtrC z(XOB2<^u~PYjX}W&++n{@cxh{|;?Z}47%3iNHjd>9s4+GGBWvsl&SN^v9y3fN zyn8MvavHalqqDh`$Xnq24~}2f$4h0LlqR|&1t4|7t6_&qd99m*05*)Qn0nUVw?SI^Jixiu zn#gj&b2czSsz=bEZZehdctn-Bkb&$6dbiJuV<@~33s7w|JgTTa&TRpW5r>}n}=*--fU(DI-v#L)E3l}v&OCT*7})S3xYDd3d}sJjpU^YPqt0Vfv79;1PQ;+d2< zFVQ~Z9X3QoddA2S6Fv`U1%L#cpYa&+)gBZx6H)|`&$Z!`21(GB_$gtPptZSp8;Je4 z-)}$sKtzzW{2gaTx$j_Wqa+3b-QeOXRJdzme- z+F9DRNmUXSUttM7o;a={E>O*Rob`xPEPypTyA8D%jj@qjh?tdyxNkv#>RV0i1y0Up z@%Hi@wnu1?9+py_eA7AvdQew~>k7h{At4ze1rg4Q{qGu44SWQ2TBBhY9IN{7l~{g+ zWO6~iuSOlmh42MEnx;raQkm1&;b3xqC7^W=Ag5G1G3ZpCIF)jlD{-U(nZ-@GXrX*Y^clUMBIU)?KZZw#Me~gyT zl_qBkSK{FfqZPF^I8ciq z7W5rH^|32FyQtycLz>5;=QJ~Ax@w-nzQaD^U0K`C^HgZ-j67Xbog5g*aV z%+H)$SfA>pg*Z9x9!_LceF9tswCfK9WWVs1xt=M8SzHJ)jW$b(6tYa!s9)-RV;uYH z;#XRe|1YX?!4(OfBALkL-KI4G5aRP13tpj2ASh)w=Aqs_pabQq=P_jlc2 zKvJ{V@0C9}xjd9e4DdZmWCt4shKz1BK_>%LLM|&Yz}Es$%G|T`MxKNO<}=vh#B`;7VBTb1Lto-CvXo@?h^ zP>uygIDsosBgT~kV#l5B&6NnC{B+PWSbU6=U?MobomS|*Trn^oC@ZtZNCXo>fQ=2? zwp|qW7h<=i3yJs2k>kVStq)@f@$Q71q2VT`jb6cEj&sVrear|F-x)SL3$#<41!Jla z0Y!gnd>yOAWVE+u(BQe?S{P(v4U3AgvE+s&yzQo{(`VnTOF!w&s`aQie47eENijUG>Q3r@A&rkau!p^nC_vz zD^b)k(`;ts6L!0lb6bD5kMRbRvk# zPI6G0PsWVD&MXo@Be+nwS%d8)&EZb5a1*DZch9MK%|tjAV?FOn5VZ@r>;0;IeQFwQ z`_whGQOF1@&Yj?>Z^*VhL%_N_3uC6|uKvzGW@4cgAy&9rhCa1V10Qxd8pqe?^39ez zWxsRLdWaXPcf4O@CCuoIO?mH5D~ZtBRbVbW9t+K)ipZ8n2dw1KJv)G355QQ+%`(Yx z*TqN85#WV$M7!4*MhslLpFE!^^za!F?lVCRiat5E$v8i2><9C zI%&lz{AXz1CL{b``*#%j=BS+fT$KU1LlAYS;v^&<^sCpDn=)6I2vUIvMG#TlWzCgW z+JPYh7={>~M@nnr-(CyEBA=2fSORW0pb#u?t_2`(tc*77d-)em3LPw zU?Am|;^DQ%k3B;<0kgr+Q%8H1#3&oEP@Pmk=BRJ-<==UUhI#En04S|OxF7YcB!q8j zKa71H84He2{z>3*O7ad%FNKs*j%J1a`RpvrKJNPeItr!xo-9IckXO9w@D|npb1P$u zu?`Is=0%D|aN45_-~A(L}ua9OAh!F9tm^9N+SMukQ{L;bYw_o9~b z323G`FUo)Ob5t@33=>WdCQ<`OR5xC~u@QNQD4Y==#^8E5>1UV-w5GSijOUSC*6ro@ zlAS!(8R;9r3MyP|8Fy2tH>yI+(lI*mk==p`8*A@`Vkj43fQBY~;-n8j=n`9rRvvB2 zi8S%;Srg&cc5^{?@T;H#a^V@hetPS~pU-tb5~NLnlB6_-P-f{8NJY~0;gkTb#GLBf z3#iG{tc&Yxgj`A3!eMTaB@`1qVi2G*d|<=^vamer2_Ovf`U?xTE*&=fz6JizylNdGYLJatAibU9b%yKkNC$aQIUU}zK?P32oxQrOigM@Iv&_zge1@JM!w}0L!2YhF5KrVk*2)NVz6= zOXLksINK#bxx?E5RC&&4mF&v^KN{)Vc0N1jP4Yv()Zwe5)WCz|{S42rX|1 zaq|d-C#n}=@519n%8V=V>b$-Zl}Kz*l!RYj$*4{2B!*PM78-Ho!!}|X>QWGC^WrSk zY7%5Y2NddIyyD58S$N?HyZu3|_DB&~xrP{Mc~6`e*Qa6A3PYJ<#$yT+;sQ5>+TJ74 zeT4bJs7qF5q}kuZi{*y;?50xQm5aA|KF&8nw=x-`YYG=HjNas|m1uWqc(4gXUC+pJ zQ$qkN&ZBL$sP)29aa?Teqf`gQAdw7p6*WdIi}Ing9f6RFFSej6d~{`}cDHflFmH_X z@;@Vt^k*t6qIS)`QX{k%2Hq+>$v@Vmg=yYJOGABe@wFLpw>2#gu+=}-w*xc8LpRH+ zXT6Hyw+MSc;mO{>FcS~=^pOE%MnGhurf%!=QRrVz@7XTUiPr6aCCC(@LuK37Ll4FN{gN0y z@FIyP_&%{R*z=3W+nyHgHJY6mDjUZDEv|$V#+4XLP-q315#DotzA`DjILSN_!Y5uq zFake_V&u)E{EOEu$+=Z{VNnb1G5WBdt*a^&Z@~XjHtUR2TZX9NgKF$JK)3cVAqj{4Ol%n$v!Ld}CA~r3M3j4loaJK@ z?wboSWe=$XHZpFu6HenTiN~=!qYqO9(-`;hS@FSSK@rNzTxZym51{5`ybSuZM<36a zT_~ShKw4ah>D8Mnp+<^=l0D0@awT$zZJ3uxCBhen7VoHctdkPI>FI>Pw<2r|c~mOQ zbhUXQ_0WCDVFY6_?jRjS_?o7Zl;qERD;zp3vi1g2n<3`u-2pcG09B$+u`kP!WQ0t55-xIswON-Z?yi z7liR80h(v2Pys9S_+_?^^30lFCvXHlhH#lOsHFIK@U|L)JGGga}^b>yxCp)}s zZ@qsxrZ|>ynVD$Z_#8wi49k@;Qxbu|eT5#F;`II^V)v`p-?8vn&uSx+SqZFA=WyrO zSJ7^OD%59VLno&J@Z*f*72X$a~I&7sPv}2_IH09P|Vp~FY$3lf8f>0LK&5&513((iSZ?;ZuxxgcS4kzBq`wO8h zhzp_K@%mbk%W$+yVh$E(K1j1~|62?bJW>}DSBqik4&5_14P#lDyBz3=0$N?6;tKPI zc*DX!)-Bb5kXX77Dm{g>UQ`lPGIaXSTu3eWp4*g17i~xvwnF#LQjw{HF)p+#B7h4L zFf29}G!oIiK9cXhj;;?g@xeRjlS$USJ6;&ZtVW2EG~Q+#58J<{W+m#69%T0N*viaH z{6f1=-P{P?dT#9wpnqVVd2-kLy|bxs=uH$&SOZMMivF^}4a8KvoPhe`QH#xkU%|)Vu_#RCcfA8;xfc3<;c8q7lp#v# zQ{pZ~Q$PS}U_vfDLS$W6;!fXRiC53i`0n(NM$T9xhmDrd(H}itmtA4y`-VlwjVkfSoXT>aR+{RG#_Y4vW1!!;lYroZEajMRRpm^24tfdq%j`*<&cir zbkx$zIFJ|Pc@!(Y`OyR+ZloHvDR82R4t2uN2KCd{Ex60|#ex@dFcQ*{bpo0SKRL`P zKuBS}8lJ=U`;Dyx~*DKPjG<3<_tVIs86aO4_H2GE{D$-5C1ySY^6w0&6sR}g#-wgxb z9ih(BsB!}X+#CMd0jHz|Cbn+@$67wd{X*^i0AD)tu+avbNsI39SvA3*jU>n~)B$rQ z6mX&lO!cxk?ba9=Ah}DmjaraOPD=F(cz6!(iFocQ2q?^tf+Ir4lCs}70`xXb&TqXR z58-FNREyn5#sf9u=tz5lHT559iqUp#pCf&X~- z-S^*l=YcPI@XovMJ$UdN@rCcd@Ba_pedob@-}2w@_#I#J?XTZ^_3o?p{`tEP-hbC$ zefQl5zwU3m_x^kLzp_;7!F%ud^}FAC-?w`3-rf7J-h0PyJb34w_rLxAw|w2VzV+UF zU%&h6{YMY{Zv3tIQ{Vc*`~HSsz4MMQ@-5%>?+1SVd+&bxHy`-QcU-`?e8nHA{CbSU ze!qSExE|3=i^M^cM7#!Jlgv4<^3Odg5$)b^ilq+ShMi1-f?g1G29l&clWZ2P;+o_t z#(E*VFpf?P-r8`~dy@kv(mU|xOupgx5PGPF@grN|ly-F3J{)MAJQJia15iIeWzT*@ ze`;elph73P2vA6}F{YuygWE_WqMClt@ETt!p5$ssavMrGK50kqIi`GgOoa9FgYj== z$*d?k>*T{_GpSxy<$PYw=K1)4doucHnHEWw#LppDkupnap-Yv)ay= zRdYRin);e`UDoMc@~3&T9hR$QIbY>T>F<<0LX?yH$E(Gn$?{oKzns_0P1bCyWx3id{Ls~|spd_-nCFRaUl;SD`gE19XWPZ*s%Vl)lGm$b z|G3PzSzWESMVZcL^Ih^`Gf$fmPA!81M6eLnLPu!w26w&Rh~MUD0I8OKxz|W9=);O! zuu{jK8r_bPIK1{cz3CA+0Q91?620!r2$Hk{EEPbiI-%E5O{f&6+R*;nc4@ImEN3^; z3kG+~CXd!6*Bu7E)6oijd$v~oe%d28GTW*?FQq*Nx*Heq@Y@@rXvc)o=mF0Ln8)wU6vfDM=-6ox`nye{i$!MCV z&z?2Kye{*q@$HkV+PA5;&2(AM@|(@FS|v{wPttndOzLJcyY>yLdU>->nym+0PiCvK z*cZEb`RO`e=l^a~-B@>*raVWob(56M(ubPYc~;~_mE7cuyu2wCCU+OVpPV9K6~RJa z{sCq{CPZmq;jJj4J3dlf$JpTb?3X#4!3-fbISKAD<)`MR49SBBK6O@xn3-8Y!@u%yL`GSnuVL*l-KK|nC01Z zJ}HWHzTRw~?l#$URcD#4fz>2!_PbeK)m2j@vobID&1U(y+Ln8NtzNB`^UdwmdNW_l z7kQEImoK-g#k!eY*Y&nqFP8JP+U%CstD8l#EVF9)zs~Yak>pLfwT^I^70Y>i`HQ@W zZ|$Gys?0uF>Z}wV5&Z%P)?Nh~U=*#2Jf>$Me!lD%4kuq-bKTCXK#9=@EajsNJtHAS zc*7;R_^g=IvOB(#te0n$klp*Ngh; zdQn_2GLLXy&9>idb~p9BXeN`g-aM=4n=A2kzMm(HMZH-yn0RM@{q=L3S~DV+S;1C9EfizFj_w$}5~Y)6TID zn4qmvB@xf4H&HcIMz|Q5y5j{v0?7n|XBrUTSH$YDxTQFjd=bet{rtbUU>W?q^(;@u zsA`&TFOr}T@O(SVogcFSx@EPSae%=Bim!HjI8y=*#%a{qCJo^oA45rf&jgwV{$k># z6EIPcYExqoHIkYXhJf|JK+SByB&qWqcVk}PI*j#dy=wB<{+TSway^^XWwu!^%X+?8 zIIPud-i-74YFsQG*JU+Zmd%xCo7Zz`GxPMDrWy}-H_!ikUOtOh-6Ux>UzAB+)cJI` zpI6N+pFj5Fiek4cuC5%qx?az>Ps`crW^?_xE;sdfTxW|-S*@4LRbDNVe7?-L``x0c zSIw-P*Xx@_xn4WpsrZ`An_|D;uGdXd)Kw}0TOw-7s8jl(O=$8W{mw|8@`i?>VLv|) zRSx-H(qiUkhFkVu8Q)N4}VUs8I|FcE4Sk-@8@0BLayvY3DW6C@_ zCCWM}7e!GnY+)_)ta4-*i^;N@uJ@DiqHOB6h zq+aDqk<~NEo<5n&Ypca>>(}a?VzIm4Zv4H~YTL}j*u{ET?&GMX%f)gtpEo=CH7lCs ze9`Rc#22Rd^J=@Vs$DTDld>v``8u0z_e+n@5AX%^#cEbxtwr3`vs|^$UePnsdIX^& zXb4_kvm3o9nCsG!JPX0KM~RsbT$I6}2**zSn^xHTG#xR$0Ax%CJhU-U^*ac{vr>0p zh{FL|vop0|6>AAC_RX{Wy*K?xu&{JKyz3<4P)(fUol{%bK4U;|cg7@NR1FFMR0I!@ zppsCfla3~5$#9UuEF%#ZgHtqxf0z|B7pHqEHOS4_WnoGaoBa&Nw9G_^XTP^<%JuSg zwO*=mW|?9pS25;pcT=qP$xK+y7B=cGiW$Phh51do z-EMC3TBRed&+GbX6$^V8#kMMbxRz4uZ8@IR9(uD_X3g3n;Q4H^NoSkQyl|M~K(FRc zD6<^1m}n^)@hR?E2(+C1q8Uj+5l;sRSTrG*i}673cl~R^IgJv|e%!82SwJqk|6**e zySF{H)1u@({hiKaiejzqRi2xt;W|%iQ9$hOh$w?wn1mi7O zqQFkb)Aw{3+vTg~uhz;{%aG@d{3g52b171-nwHv;rSMqICA)lHT(9S|)ECV}&^QP4 z)n=aMxieZ?om}`U>#O~8*9gO!oxGkF^ZBgIvQ?5co6T%DX|}b;aI;!2b`G*SRY$V+ z0jg%VE0^0{y4mg3Sb3Q`jhnpKWwivbn3XfhaJ`*RuAZc&-z=KiE@)-Xwk}tza_;k& z-jHU!SvTeLGEz}gtg+QASO|C!5}x;*V{G$vf1A>tL4>dd%b9Gck{(^R*A=IuA+Earu95g39a=@A6b1q zua@gsxv8|F)8%ej6tlv!TqK_Ejap2pyKdGCC6Zb#-OiH7Q+x`%Rz4&KrT7$)+mtlH zW`@T)r?{LZD~2U9-&t?^TjBHFTUP*6(_}l5Cm4#rKccm}qd&CU02=3bqkSLqzz72Y zg>EVWqX8Pn(%!szmTzQwA9Nm(9W&YmtziKT!pRYS6fySDJ{=T)N{qq9oQ$cLp!{KS zv%KW{2|$nq)W(;W>gzVUQ=AWIryogsWa|YwF}v0%1Y(%1BsjCN3>JId{a#aVi_Jf^ zbUtYkt@duV)>>Red*V%Z^6F;R+!e3NSC+~bk-3_3?r|-yvuV0o%r}d1@#OisEUuR` z3GvBnUknGsI;obEys6fLZoS#gt{3%gDI-@|l5MWHg(JUO)gM0bEN^Pv=;BrL+xw>4 z=oHJc$(tK>)plGY`=u^uy}WDQRoVD_&-NgvLRf}Gm3PIztgB7)6kd_RAk^V%N;4_qiW48ux5Rn7XbL=x*XQ!zygrv7d|(eEc?GpH1`qty zFw&gJN`sb}n}L)P##Y#LKISif$-f920g4E`;Vk7R8F6*lIUgr1Vkab|;UZrUJq>L_ zCbgUlfg056oUev>LRx09<3F2wSgXD`nw66#QyzL=_4T%ySJ_nI((qWGuQL5fRjqTl zLNQO)Mf_PEF%mXn)mDji?xKWED)lKDzuoh}ypO|sl9 z>m<3p+EuG%wMdfL%FEa2ugX#f)I6~g#$??%9b$J+s4(6O0}>?#rDSN)?ZpDPtBlO* zM@PSHyo`F4xMk@PGBT19n;+VJdkDYo{C+Gou(3$n2_?rr8mUTsd)SQ#+0Rz}i?$3v+^dcUl3DL{~!NG8bbB6F0npMN{Kqg{50?d!uhR(P` z?zk9Rc5=b*@3fy+<} zuANjJ`&CkwytXD)?!YDv(<<4`B+croxLZD&M1h+OrkWM)pJuZt>izTUMZVoE@_fCl zCdo{7^0=Bnigv5zdb9ud@%Co5)n}}4cfzX*blx~|iYw*Ju3l;_=iB+>Sy}Gp`{#v< z`(|4R(c4-Vyq+aXr;Ozu=ep#dyR5KTzf-5{HxtM@L7@YV07tkU~2 zZG8J#DiAaY2Phx7Qtb1{K*HJD^v1HR%fsxfmm32qd-{{uLZ_xhSu{eDN6`eN01I?R zQ{;jmxb>CH!7oQo>dgy=bDTFOa)DW%p)eE!;0!vXt{dqxt&4>wF<&p# zvDwKOo zY@R+_&v)1Bbbh_8$GMU=yIGE}i~4#dh^|-btKBMapXF^+Y@E97eUl@~Zku$q2f0^z zo#oBa+1%_K<@1Zj)A?>y&Gt>%B-@pa#k&XN_pkJ2I$x^V7V(##Opz+Wg`L?K-iUS2 zAa&cWkvFI3qx=YxmSbRn!=jEwYdSCVAS{QqnwPE8T3Iu|)5FDlFwzhxA}waHnu+@< zPy936y(zk6vh>W%J$gt{{0*bvU%n2pOtDP&=+}-J6g$A}Fpr@M^fQkr)JINKP|)y& zlgV9tgz%jSzDXblh%2$u(FR10GzPV5E6)-g7#-R|eh3AiC0ZdUnbB7Q1x)=FT7rxtU5=*gE*gL>)P zPXq*|lmSZpxT@;KX1l!tMlG^gvz|{?W;2m}RwN(Q)5R)XZ04)wU2-s6CEHq{T`yh8 z)AZ;y7a=yqL&`MOQ9Yn4Y17SAM<>&@KnBh0jt)B*Ik7UKJw=BLP|cnYlu+PX$x8<# zji33^gE?+XCZu)@p~G~~S;chO<(E>SN96BJb@=sZ}UL6}7E;6vK6nW7~x zc+j1b@1{GY=PeLb(_LxQ1>07PD-BlP#Oo z&IztRS+yc2V*m8cac{eW40{>d^^D^c?3NB=xj}(P*9*lkAGlpKHJTzNv zE#*1ORRWmfLpYtFdw7{n_~RlCdY0C#8Xpp6wN;ptw-G#uLlAXQ&zJ&&Ymp;+_dAT_ zx1?YwG*JsdUr`c+e2gxo$zkg56XS{Er&&X5?v`Thk?AOI6s(levEGOlU1Q2ohk+Bf zGi|Qo4jt_DJF^d$v&HRtyWd1_ww$javh!`dScq#2^9ncAhTGI9?X1 z$(1swN|xJ7y#Z&~?{A)5uO^E+udY3n5>_`f1DPZx1ZTJ1uXb{r!shBaky%%TgSFgm z=FN67-z{dhPPDgW)yy|lTFjc&=E?}|dA*(Q0TPQ$sGkZH^LXTv%jbT&{S#d89$$W)^Dr zWqw8bJWaKb_B?R6K*;J%5>7T@0>)Bv#A$HKCmJx9q`bTh7ZslUDaz$rXzbASSG5HX3rUGDLs7_F>Ew|8y9?qdRcyqcXHXz+QY;U zMSD9{!)7Q7iPeaJkPzvIgKr2pV$09(DDTVl?R>LcZvdkk;2VUkSw3E^uGg#OW+C9# z)nbweZ?oK#u&jRgga23xbjlljfkUv7p{}5O&tKlxw6pxlY&{U~(#c}0Q1YOkl)GlR zSF0?wBKtB~?A`mS)`6_o*NgeKn0^4#DVvQ>aW<_rk?Y0dC&l(@)nt#0?R7baS`@o| zRy;0?^^>&_D^nV5r5`Qw#a+`f%xv;#?&5o!l+(D?VZ?|Yjvp#D`A@G?ywT%|1DGT!RA=eh3+XcemfEQ9& zs`Qw3F`-s2gKf-4-+Gqe&Y2z`gt~yKHUHYy;6O)1gQLN@!tPGxY&@u;<|Bm%^X!&6q4nJaCtB%8VVc(%iazMR^zmq|InpgY3 zTHWl$yqyumN^7~@=hu%Ho0S7JpY6oU#N64$a=pl!XG%;1tSYHi&Q{Ybugc{{@%i`~ znIN-#NV_tg&3nT-O>qR^w#(^evRhAwrTA(jDT7`c9XA^Vv#xQs&BqUC3qwpNurc(k zR-c%R17M5U)AFjUSM$9|_;$Z8mPNV0*+B~H#{uN(b;Rl|G-7_Z%JaCAtLsf%$jjAG z+a+)fCnsq}poM!W+FIqq+6#}0oxy3prhvMqW24caDFv~nE#6MMtls0Dx8aIeOLuyY z-p~l?UWTX1aY~4E$qyIv)wClC>5h5E-!1NX1ILo#iM?Un71Vb?8~b_NiLsRrF%d=c zaT3!n$P`h#x-{rM+&1{hhk$r8GD5+4umzi=Lr_ZYmoD3HKO7B>XcIg_Z>oM5dnlQh zY@^tH7o5_pf4E)4)8c%sul--V+%=DP(ZYjxW|* z&E4X6ixe$nm^Q_Bg()z|S7~uIuf`B|eWz%jC7Zk5KYj7xvwb$(n}0WJvzBVVM@7jn zN+j%NdAEMB*>4ulR|Dm$NMwgnI=UPF4))LBd^bWxWmsZ@@AmXBKJuJnh(bE>+X&y` z5Qq;lo=zq@8BrA-(_{;2=>6b0n@<~Iowkef4=7MMGu@p(IAaySTFjyBzP<2(YTIbh zN=ncVKA7Hw&vzK+j*r^0)q+roNd#=s6csIuf)N+e!VlROxQC(woI2r67WkvhYLo#y zBd{IExU1uVNpueaKTIj*4Ph<5Vl>$Q-FYso{?c4`dA*szS3a#)8xMBBf3aWhOenPE zpUgl(`3%+vh}~4h|Gu6=f6{yol}8L(?-uF$rnuRz)SV{HWja~SrlVQqoFv9z5?z(u zY>F|Y*V9=^hFcl7*1RrPzyTAJ`c@Dw=Ucy(mPJ~nnRpc@74j7R8dq2$xa%t)Rhi?Vx%BgwA;Sf~Bg zqJ1=^>ci`yV?-J!mcdK6$zEU8n}py>LqQeb&A0r5c@wZ;H0)%_B}>ba>K0G>5-T(? zpsrO%Z-v-sU}3igUSV-h-GB73KwGs4uzj44%{mAXf(&*sN-%I0)=)zoO2#jUwNDs? zm`G1?Im!Ka)(qgV0S~OF+cCd*8yznv2>RWy*a0p21avpwb@7jrzmTietJDLFZaaeA zYA1E-1q>Ywyp*o_OhD6v&f^S%+_NdhpRh#%`xvfbY;es16Fn|#;ImRIWvAt=kI*31=}Rs^s#olX=s zpaPVlKfC(#t7@6W^WSZfYMvQ9YjvIQ6p_Gt^d!-c!tl%M97hUUPH>u_4&RM_UU0f3 zfc`f35;Z5$T#zKkp(x>1K>4S52qx>rJPjdKpP+;MLrv*1JB-9D!E0`7TxQsKqhZlG zwXBLEl+huru^;mWD)`mc?Ik%UPIa3X&%Y*oQVz?u9y_3?Wsw!yiF9sW7E^LQCB35- zX%x*3G%$P-&O3LA2$J9sFII)h zNF|!Ds`(O2C|9x6I(PKBNv)e-UG276d1Y+r1bY#TysHA9znG*~w<~RAxwVu$nHZvu zMw4Ru*xWl`UDXM2&o>3dfAsk2(rA0V*1jz4R@A>3N&Ckv+j^;%#ZBrngZO7p%Fy6a z?MqC(f;!VeS=3S#5yWjO6J%Wy9#(gpHF)_Bj~}V(jWcYK3LT4~1coEv#Q-YiOsXL5 zx?<6Kj@T}jj^#73GhfKi--))r)PCE`kOAW(`dNKno4uNm8Bb5bEv%eYaJ%hWAD&t6 znlMmtTBY`WpJ>lu1f9h%>A=+74E)aq_41OGO?>zFpu|=?kXME5*ce(a)$xW5$E5D` zyEP;=d$_0u>jkx8_heYZ~u5+P7z14JH|Ag>8#b{__&3t>WN+<|su8$t#B=!!(vgp>f0xPjw_g3&d5+IJN7D z%8vG$-P=W>>g3u!IY~5_;lG^69wSF<(6Via&DmQqmifxTqZTPphuJ)K>_tjfhuc6@ zC0TmURIdHg>C_l9(l;O{QlloOh4t?}3xUAtsNstcQGPsu?C}u^PzdXbGQ)rjjR<|q zG7RmI(s*$4y+(DC-4<9_H!xEC9bwdd^g=>J&xlb8#Iw3WINdHJ&z0W-4W!E_SR7bZ zhS7_;0b=7k?6PdLUKm#ASx{GJ!e%Na&Xek<)|w_L9cgLqZ_KzV*5zIavjx6x;lVJ( z<@|avO{zlYk3R`=+J2a%2m-Tevxf*Rb(5+lS-==acAe$brkKpv`PR@|UdUWWT>&Ah zr!w~^P2%-dsD!;|i+okB9SZz<2D50GH4R`2HlgA>VPHT z@yYyR?5Rrc?cX)2Z<^aYSzm3IPn+U-zF6&&YN~EUQ}!ISaW~tEOnRkz!>)wFRM)#? z|5Wps34R*A=nO#$=E){p(>$rm)RYVV2hA4W0CR3xU29@gY9h@~P z-9Ioo3-(7@WTsx=#A-IZ{y(k_#xWVLYcmkTkmz*F`fm2Gs{HvP+ooxfl`kFZtVA43 zA+lIWdAc;Nd-_pXwbeZgy1CXM=P*S6#}FGkft34b$zfi7ah{A@ladd4>--<66sfTO z(EF_>K|cn_vXVGCP?ZEri;N(;3;%)p82hi!4)0Fhr$XRpxgc(mkZe{yt<$I>EB>vw(^QDa^I1>TMhQPFyh0q|tL1)v%QHwOI` z3Z=U^UtMjDNSgWD4DYe4&UvyPsze2x(dfSV;BeYD%};Ou2mFH>;$ z_F0+_jWE)5Q%#opHQH?Tvc?lw-PJ#*Tv5i(H~1oTo(9|2+#}7aJsQtSe%|0aBc+SZ zMO0@-V%N_myH6A7Zt|BaLpmtcO1AW+W?g`zdh>Fbw4vqU3mQHuT)YF*q3xk*OuztO z9<$BU38HJaH8YPguSCsLd7|Zs#Yc>&j&0vP{-9b~vl?!Zz7l$1y|?86xO^vv{m$W# z?G9M9L64lgapTV4ls=u(7Hn~qT$Kj_$i@nJY18C{sU0sGnnx}+AuUo3OOqN9MXR<) zu*ctF#s}gz=Z-Y>8bh?}z?`@~aEE{1DDT99RqbFID+y=t} z(XE2R?vkrb5Xbiw{?&a*1+_0_!gTZK{=`<9e~ap+!K;+Mx*L zW%&$|d6zqclT|eh(yOs$GEV17iApKy!thg7l3-n#Yv$!`zDClS;lyhi>cvM-$^~#LIAryUg{;F?nA2mD z0A-@p1gcOnH+HsF$O0^{CVleyBAqrI z^UkgaWtLurs1>8V+g2^(G>0uhY(kq(!>MAhH&s7Z_ToYtS`*5+jL{OT!Tq~`{)acz z1lcY0be;-PPTD*{6mi3<41R!#8eK_Q=?Jz#0}|zAGY@G!GhV8ZAZPNQx#14DPX6(9 zgTs}Hc;#ck88n~^AskWeIycibS_1wgB%#hmbErDtVfIAYynXCzJdY8h5mN=!)SjJ^h=)rxI6xL>g46ei`h0`BI`EySF&~yX}S3KHJm!uRk@86 zmE_|0vVBK@VYMF7cn}QAhly`K;O?ANt6{$L3*F;pizYXj8J}n{L8LRLK9~ihrBH9^ zOu`d*$dNR*FOdc@#SU|@w+SMT>}eH=M=1|b95Q<+_|=(v5V-cwri$Qj`Z7L-1vA81 zK@P%9Sgtm@qPw$HIAn$9uVF)llF&abx+jH&42;0THH`Xo&{|ErRM^pkF;uC8R*_Gk zv6MbHiHSx9KusmIYEi|E(xe0}O3kyV(E;$sNk_^|(~e6*aWFT)2h!~4lt6pk=W_RC zuPPGgZsv+gUrY#86=M>Iae1>_;GD0k?Iz%Zvc#=ZGZ}k)qOH7DOh@msMmzB?R5APv zHkg*i(OoR^=O&U@O0QYES?3fg+s)+T>ofuXDAKB0jbvn#l$%*rKTev(f0|#8iTt@L z&_t8w(72jGSpAMvVF8Awo8-+}9U8^3a(!*@a~NFJSfuCROpDZBPe5&^ha@O5gi`ry z=i4WPl64~|GyYmJ}V)KCB*#oSVRKLPkZv};9_<&OYdKjw0r zUHzxeKl}2xzWC}VUwr=APrv&7Z~yC$KmYPapMCk$&%gZqCtv>Tt1s_9Prvx=v(JC} z(=R^z;%7hk^7F5L^0S})_(wnb@~a>H_{;dJFF*gAzy9K9pMUYQuYUH$7yr+H{pzPb z`uwL~eEwg*{M#RY_SNT~eg2c5eD$-ReDTF+KmF;Ce*Dv~e*B+5|JyG<_X9uw?Cy*I z;j^E8@!5}m{N>+#_BUVM{^%!v{n?Lx_Qg*=`^jhj`KSNozkL4LXFvPvuRj0kOF!+) zFTVWoPyhDIFZ}QGFTVQOSN`zFfAjgzzWjeb|LiAU{EhGLqki_~U;9A*_2pmxQI@nm9<9a1kgJ;XReG6Gd5?9asNvh#LJ(m5baPz&>XJ2|fSq!^5amjhxh zha>0C*uy8%ews~Vp7Yjaupvzg1j6v+C~&ndQ^qs`GR;y9)u0<#5g>+92P#Zb(tW|z z$;qYuWS2LXZeKim{K-cjK7Rh;vrj($@Y5eWfBEvs^XJcAe){sspZovw5B=)N6My{j zqYrPM{NU3kFP`7rTz&lf`uh2^$1gv9{_N9_KYsb)9^d?jA3p!+*^4JnZl1ijzIyiJ`KKR0|MbsazIgHS?!~L;zj*WHlN(=t z`{McY$B+N&)5p&rzr1?>fBpLppT2nU(Z_%OgJ&;3dH(T7Km72;M<4#+(~n+0|L~Jf z{_F=oeDU-LS1R_@hwzfx=-R+?Ga5y){ z>QRcH81}=|?}a6A>w?(AAI6`A0E}i9l>|GM*(QX+Jo&;hWWsHP^pniXVQsn%=avw3 zatollGZ@aQCW#43U!xC7L#pc0+8~qgbgl-?;dp@|ajFsI+to0=8ROg+w3=aa@ z2wPxmG01~A=9EZOk*5-KPr{P~4x%Er!AisAf@m374;YYBMzFSp1AArM5IG;B*t+Yz zy7+zO7*NYF@dK~O0v*O|x}?`mbbQHIG9 zzLma;I;(4OrYk8xF~^)NF0W1u)z2Y1@*!R_*s>iLLfD~&bhCw69VNosUH3aiBgD_v zpOS8fqHK_@c0gUb7kRgie-&9-KLV2x5{DOeqd#R3?je&mBAPI9u)CerNtm=B#U8ec zGS+OK)tUbmp*z{|?R;r6d|(xvm<}pu5_rJTmPYdtM;Yf0RtVF#ymEArd*J;<2i!V( zbU3|t7V*JdZ8!mh_8YYs7zq;e#Nmu7Vsj_MtCm^q_(jOHghV0d1;LoL?&X{AedjNk z+cGB!D>Ab8!SN~GznYmLOVF1L_;h40!l0DTJpu;HTs@b8P8dyI*tE=qh`pRW!K(cu zMsHY)M(0*$*gk~lf37_<5S}96%$e9KC{z_JeNss0ubtAGnj=Jc8Pxya<=>ma#u)tq z6*+iKP?@-r)6|vlBCu|fD*{5ZK7y$mA(hfziUbaT=(KI-O!(+S9#81|p5NX1Z@L+- zL2&c3vWtUX+cSip4)FmT*kEX}`3J+KlTDD_!rX$S&K)sb;%pHqRxc3F(Rh+W;P$v! z=r4j-TaVsm6|kE1bw(}TV#N7F4dUem16?kg{s$Ov9_=YB5kai*Ad` zHNhDi&)xK~opNA&D~&kKVjhL+z&!#dh82*xI$ts5K+kf@28hMNpV$zF{)>KXR}`57 zq2aLIOKe?WkRm#`SyH@(>pbFODloysPVRhQyGpa|%af9NXcwh3B8oWCDgdY{EjWkXiF){5M*Z%6bZLEKPC0`o8^h{_?P?kOE# ztM~QsFW@^WNq$KLLiq2T-?e`sOH8HtLjH->p5aerTL$bJ_Zd&mK{~6MBlKbq@_0CH zIAmPf?dw6k)sn4K0fpmBrvAV#52r+eQmm5s8=;Z2PbrBH^i0@asvHV=W#rc&* z%iYBvdw10W_ttu37LW_?tRg>0oQOpgN<{h!jkV=f?&)3Upr0cKQrY8!AvT4>KUWck zLTH4pN!svN^Rq7bq3|9a(WJigg}w8t2gJG>##-dq=PGLV$C>3F6FiLn|4Qg;L|kJ$ zWn8diEF8EvTIYfh_Y{7m_*bsPFyi%vXx(G|XY}2G7RC`g2Vzx$eNo>crKF)t`!2-l z#_(3B5ogmwSRT7Mj#%eTQ14u=g*A)@D8#&&_Bt039<;@aRyjE0h8!O5EKx6G6Qfli ze{XszHJ-BoRVgcm+g*$;3mB5|>FDqbJ=Zqh_eo4F{{+zzpY@TE^`E?%+TD$olV88C1@I0C^hA5Nv7Uq|j5Vjp8Rl=Sf6_4< z?IhY=15-D^yD&_(V@i6-KOC>QZ?XmTO@s6_Ff(AQ9Nx(av)KF5Vqh{-&)+}pBf5Lb zDW;)|lS9IZsylKaD!}fj|2=RQtZI;F;jG2wP1%Qte0p?lX$sC0i`mQ5yR%o9`6Nx; z4UeyNz7jUnp!X40JrizCid9Kc4q)(LX-nvl1093P&~KspM9K}>SD&%8ZS}Eu+-n)8 z!wj2^L*PNmM+8e#PO~wuIRYc|>9MA?7}yeNl@UT@dw9@+h-1B;_oikR16OkL`dn^b z!#-*w7FyOD9YXcPCt00DE$?knsD$Vzh;65D6)Wx-- zQwNzL==zd_uZVKVU2@NeCCrfk!PY$E#!ooKDPityfK>Z*ZmG?Ph;9brQz{6e3Xk3_ zkVlTdIGK9ry5Y<5A4!S|yNe)0!m_&X{(gJ%;!Mrv42a*`Gwc;Z5&41Z!9Bq$CUh`p!m zZLo8G4PFH|wHIKz$bV<=S2CPkLy{LLi#mtH^1)}y=j;P5zC zQT7uUVA#}Ma80x-l9ipG!Ai%G3F==480X3s_eQBeDJ{W!)c1UKgk0{Z;r`vbyz6}L zRB>p5T`wh3IT|LudMZi@yKIe^7u|cV{iA^jD7e{vPBysf{30_8e~SogFVz|-{C`y4 zX|&zvbsqK;i%2YLA^=hn34)|3al$-L_nvv4=kbof1;9arWjia3Z7DZ)6GfH>iHtlb zqO}|)acwtQNfSGXL${V=H%%N)Zr5rfJ6dVlnohqcuGmkac>ewE3#46GqCf&T_nh+>XtrX7(EuF+3|T*hUwFxoBXE)dR$c&QWDQBfG48i@pyDRg zhLhkRYEt%w*hZln=`pB7n3g=af`3N%gh^@{u)4==B+iGkp_Sa>5&-G(FXG2gKWoHX z(yY*r1g^ef9wF}}k%bay7csN;79w0RC^v?c@RNG=l#(g9z{H$E-vHwcSfG*-61d{o zQRIxmcNCrI+hY7d;Kp@`YhiZ98S%x6i8V3t$;2TY1nsuX5C=wguB-01lUw(4dTTFN zYIXBp%VV*p5@^&hf~(grWg708kj(5$mJl)(M#23vYAUWA8;~8X7nI1c=c_fLyYW&+ z%()HA+Q$g4d1-wt<|r%Ed4t%N3eHl0V%gK}ypr}0=q)8ZNvy`fb)*>(Ex}kUIuA7) z5oe18+IPljSR3a?lyV@5Ot_2!(N{5*vDaJ5!urE@&Qy9MV&+bx>(`@=EnIC64Nx8G zZnQa#W%<3JMq1eXkm-$Cq!Q`3k+?S~!2D6~N zXso2(F^#x3-_8NZV&ac`3i48UcBZh~=!^$9Sj+=3tKe%0|9McdIDg{23Ro5^sZdbAjlhBAemd-P3{Y(>OYfzAM&9){2`_znFUz%+ zl`E^7eex~C6AgXnF#zGZqoX;Sj=?R0VU4w_A%vhtk&6;8TNX0c*^Gfa0R6*|ZW-RS zu>r?wurZUz9H8n@I$2xqxkq4l_Ft=h=%m*AW9PB>?$X{wE7?iqo!Spl|0hr`tF0J@ z;mG0e8~iz@+6Q$Qj*APD7)tA+GonK=7u61`LTG8SlUa&54PvzT!bnohT#w!~ofRJ? zlu#JrkD*YUKj+DC8~kX{lypaBH1K%$%LshAH6$qso`kgL{$j?qlbF|AIS)^J!PS+9(1^mvXl zgQjI=sO0yJqluxr_AcA*=d(t(ns!lKiLp%hkU{Q($%O2#A$iV}p+-1-cOnIl+?6Yr zFH>Z7K=^j~Oj;}}S|Ze$F@?(%RtbE%fNm#295ZWtx9?xbUNucjPjuV~GBnld@J1)w zl<>un4c@C&oLmuxD0ouJNJM ziHVDqzDemQ6@-PQHi1>k*Hy^Nf*eI(Qm!~kB+o?;S;;`mD%n#)>AD!^!xXr7^iGZ7 zaWyD~MFDAQhFYsJ3s2{Pi$U_)?QBcCjp7pkRfVrIFgK!+9rV-Yxj43_p~XsQ<%yb% zOKZ*zOht-}(~^T{avs=p%gTvRKC}>y6P3cUn+q-IBd0|0HVj}xlWM@B7|`@Y@cm)d zq9ERlQdwJ;nqhRyB-&(s8OkA^|B$LINh~ZXc3(^<_r|FV7D~1REWaZqF@(fW?OF_0 z*WR38q41ykjW^zSsZ#&)Yk!YHNq^#x4{+E=x8X0zir z{?|9YP%QV?c7F4%S^IOp_UiJrGr#v`NLTHR zS6+VsN$j^?d*zidF~9u!AO5R~5n;dh+Uq}3ZGYnRpRX0W|KvN#fBJjl%J7q~E?+tS z+AFX9kZWXCEe(H>H=|-n16^+s#PDzIf)i#AE@>kTk`51BxEqRb7T@SSCpIf~W}-6D zMy#ZZ!fy>)c~m{}n20iZaT!Kc=rp%`v;ZBgI&z!44%FEbmk%LGeo$H@84XlBSJS=~ zN|BvF-^AClxjycWw{k4tDyHNaM5E|1(|l>PRZcszkva7d(63Znjg^SE47)~5fN!zZ zB2u1|FDD#G1L*c%-X0S~mT8%LUsbs>v_C{swb66S&zVGi8zvZ>BiWR-$UH`1s`Qc^quGeb$XT8-QMeoUXmdOWj)cW5@lHaV= zznc8D#^{^hOWyTrvGaBB!^{+y*`szM(qBHj(HNCEPc-Q z+-0fIzd60uVwNeMK-L)9eh+VuRW@u}+f>FOr)TVX@7V>;t=}616et@9JJBAPT!L#8 zt=`@__DM~cku$Tmkb`^_^0OE$P5!*ln}l3oKj=;(Cww@@sW4DC2CMc88Y(%%Tsn3y z16?Dk%v(BEAO-wJv&ubu9RWHu;j{s5-q~E>z8c}$u4MpV`YWq2?cYfLG)eAz;x8r1 zJN6sNzfb3^`3|K>8e_t6W# znXKRYFOs)@{E;8^r}=-F{F{D%*?ZUi16SZZM-|@9FbhKmbwGy45kyF94@xRCAu@-~ z1{Wm?Ag9@-@zu#pKAEdzr~aJQlDRMS={vqmv=#W^0F?=4e>wvn!>E*79Hkh0fJ21A6RMT!X&Kff#Wu zAgCAuT&rKVS4ndAU?WLNsluOrr*T)3jNVQqNou;2DvVC`$kn?IR+JN3k`B*_o$ zOFjDSmv27wnIzfwcIpFe(6FxCdsE#sbjC%>7P#iD3z-IuJ=s+Uh)_1Vvz<|5JO}`<(p2 zRX!J9hl!@nc7i9XWnv<>HZJXO12@dgRFIOUI8KJ%0M+vD2r|o<4i>colD$B&&ldFu4>qsPylKYjMpiPLA#UO9g9_uzPaeIJKXT+s z{@D35Cr+MT9;+TZar(%Si|5arJAU-+v2&-+ojHE=#L2U#j~zd8?AVzLXT7aYd+OM+ z6Gu*-Id%5Tne%6lpFeTz=#!_9pFHx!6GxAqIC|?IK6UFJ9(m%(u_MQhK7RDc$DjDv zv15gKVNr;yE*>$f2uQ&sYhQ)e(gPXIn^@)=w zQ{M61OUF(gdGg3pPaHk^gbbC9`VodGp9}+dE&_@o;ZE%iN~LO z;>lxAJ@tfLIsH`m#Hpu_o_YM(Q%@d0a{Q^2$DcfM;@E?S4?Xzs;X{WWe(=zt2M#@W z_`!!BIP~zL2M!;4;DHApc<|u|A3A*Kkp~|J_eIQ=(&_jOs zfy0L%JpAaR4<0)F@WYQjbojxCKk~?j;Y03w=;4PR zeCQ(&ANKG2A9(2Dj~sr`M;`v(q2!^vAAI=G{SQ8H_~8fcKfFAYJow&2Uiiqv4?cM4 z{trL&;PU>vKYZx$0}tHVu*R(od*Nrl^x_M@{L&Zx#^3mvpZ#lJ{K6MX|8?@_L#cn{ zGMxHn$ydk8KY23sx#a(R{`t>+A^Yf;lJC6ya+3VbM^mYPmHgumxK+=yV?UnyrDbx@ ztF`iLF4^-x`IC=7ZhTDkmG32ozWMAvHt|QE|A{YbKYBb#{_y4hnEY|`?$mDV>Zkw5 ze|`E(ZdmF}IZ0kfeIxnbUw%DF)<4WLzV@MSCod;IwU#7zrM8o#m*VYGA9*SH%c*~v zd@K2-)bAw!$}RnyU;WkR-1g5r|I=UpE8Vp(|NJk!@THet`r^<0>C1on zg%`f`i$C|m-+JjQU-|NvUwrX}zxfNxFTUp&{??a&?n_^K;Y&aFOF#dmlVAC{FaE-d zUwY|_zxcJE{>smP@he|_@r5s6yMZD%9#4XU+^0ZG`(^q^sLq6GR)ca%*k<`nAn# zRV_zb*MqdO^L+o>jqBLaiylpi#iWZQD9{`YJ7bEZPq*5`=bj#GFxl)8Tx<7C_|zD` zxoF>7Br&PRb?4))bpEmF&vuYPR*C-cH{4A5tHCDf!0B$;aQF`t9WJzn!}Kw~~L5 zN`1@5rLx~mKJXR$_xV))$Nqlu;{Ff4mHa5zM}NKOzf$`S9Ng#0|A{~9CdrA^O`bBf z?|0(Im#L42A52w0mn7S%|Ln!C*V$BRoc!ARemhCNo%ds@)PM8c!1F<>RDZexJ*sm7xk zh1Sln-LK6JG7&KPwOc6J!yoFYd%59|40oV%k zy=^Dgfg~7`+SAn=)$HIcnjtYGY)d4kZYl=;z206!04h_}{`_c)@PbVY)S&T5xkV~r zxJR*X@U=dhX#MZ>fzMH~>=e`7a&wT)@VekG2*W^^X=x=*ZlX7;Wz)BA-}dc2YfnJN zxsY$p!xr*iO5XbYm;bvz@^BA+G5NFP_l~9>`s3thQs2+?eC*#PUrg=$dh+Y3)BhrQ z^BXV!{+}>y|1|m5{*Si*V{$X~Sdt7=2Tnfv_+v`j!z3AeFLnR>|8DZHQ>n*}J@)ut zj_o>WlRnV;)zw z8Z4sAK_7Lm+tmNrHw$#!ZjE+(iiiV*nDIDUrj;v~z*sQ^NqnQwJ5~RP<{K=S821+C z4T!$%EVM3cE22F4aMPY?^uYl^2z&WBFdn){S`lnsZf2BdTcLX0Q4!U971+6Ql$Lz- zreKQFudAtRDniW-UrJ{YmGea69mW_pZRTw*Zw{!cO?&|*2)%fUD&4+Wb&cVFp_1Po zT!?OyMLmvb$8@+0wKtRBe0M6IVCmgIDl_ZtPYu4Cy#M#BNis=&M5w=CiwdR z)Wn_nJr8#+we3!REpKUmDU9DqDRkkrx0C&ERemXXC6&tkaq{_n{fIsfKiM9wH~wXk zyewaNCL+&$smFiKYc9N${2+rZfcb6v{7cE79$Kb89M?Vh!$YY{zZJ*e%A3izzwuV` zR^_Ar!`sQb--7ySFmauh*(W>}GVj1}98Xnh>jn-=*ltcC4GO*r<(}qnvDqoKrn0BW zypvHsl;xY*IT|Q{fH`R?AQ)j0>GGuuCtjz_0q8S=S2J6$I=7=0-P&67b+WBV&Ha3o zbEJUMV-qka#viU_R%Ng1?IOugc7*%GK(kXrW6W1Nhi?oKb5p%q+R-VjriqZ}wUs&w znH9z8riqNurAo61VXn!D$}G(Xo}1*5U=Sm2v*Dh+bq`fsU~yn_1L1vBq2DmI@4f^7 z*@N@EzqK!Q&!@hdJo3vQPm)uqW39K6o1aU*bARf+AIiH7_x{A6CCPVQNbXMkl->I* zrbXjx$)BcDt11Ou$@%^_3cnXtGyjsn@oJdT$M@BCZqx?%ctjnGgyl8mZ6p&>^LcNPPDnZKx0SGKPK0D#|FBN){p zs>SZM_L&&N&`Fz=!Xik)$7WB+*YbcdQ!h*nQrk(7)SD*Bb-IR$ko;$3AcCeqqlai8Mz<(0|ZWI^66}&@cpSnSIYVG zsnq4d@nz~=Clunpn|kC>-*fIYFQ!s$e|1D}@sqN)lcmyKAFHKOC#vVZoBF^L*s8s3 zDutI)Sg+>~a)0}BkEQODfW0sEk$g3kx=@*I^bCQ%SUP*~Zl6%UkVQqT|lqv2{J<&asdN;X*_T8zE)>8KZ!yXjw&R4FKF5bH@wJ%dW@OJ9VK1r3fhpaTM zkLnN#m+Atf7b(3F6&}q!IFlgh6B}beFczoshEiT@Xsm@%H6vr?3DxK)Q@Az5iolaJ z-tH(cj?t*l0oLGOaF$6E8{V*Z679NtqaCm|S#)l7PA;e0;Y zanQ}L6nmX)T2puDHXY;0t=+3Q7&-daB9@ix>T0QS(nC#~6m(bW@!aK9>fPDSsBZU8 z*p=qS#2=r0G_?WwbBm4Bg+`(q;EBg@p;_naN{kEPyiV8yvqYQ6fQR5t&3>VancuGF#OU8y5D56$~i zAG(x!NICIB>U}COSKhx&-Sz$p`SM+M?;u^f9Jmv^p^c^iNz0T&$vp(#6aYJ*(9U=r z(ij?RQ=>Mgi&F!*yby#-ROB{bkAdU=igXIo zWiwJM?__t}9|Cr8Mx=6m$JK0pnr+-rEQDk|5yiLaRi&H@X6kf%8X}btv^US9l$nkG z&4Bk!hVMKs4D-Hi4Yz(KY(i&96z^vOlzaw zHul5JRkSmYAs{={CG0T&65g2VW9y=vgAp>I5}=pOu>r6Oboy z4sp!LzbJv^2899%7SfdYzHl1*h5$BvJv+PM$OT}pD5@xw?V@cVg}N5--Yyv~;^#5V zHW%Kxpr3PSzLbI3c%~%*JB5lU8^LZvjj52!FN^1u2k`|v#-uo73a7$;W&DB2Lmz^l zB}Oc+n>NeCZWTC%2HF`7Hg?yG4smmoF-e^5GUQn21QnyFd*I0I(7Dej=e07~`2P4S z28ycL@6DzRuFfzsyN(eHEu#`oD@vgmCq&I!ofY3`Nc&RF5d$igA{L7AwlUMf(1$&j*9MQdw-ga{hpH*ltq(UEZo17y;*h1Ls{4pY}Vh7t+pLSw0_O(a$Ol6YM?$ zTV2KGO7}=SAypb%UoEXMk?+(BCgKj&e1Wl=?G2%{U8=;gzIHj+p49p#iFpa}F%DO2 zeXcfAELPXUcmjG1N2TV-2;f*qQC-4WQ=>qUC}cJCNd=2l+f zHy4c@r9>)pce04nY2~qu?sHEn^y70qLYypf^hGJ3Adbz^M#06pxdsMIQ6kT0yo^_J zba1L{j!Ra+BP@r)S){^QL7~rOC>b+KBa=wDpBWRiDj|>({#863w0FsW$cAWiaSwDi>5akRZ222l{(y1NmlZ;F^;h zci*TxHu_L7ilr(8P)VQd`Ii>yeNR%MEe0LkhV2o(hI6;!apQ59R^c15m&-8~vn zGzOdCSeu&KR=;TqZ?>doOfd$k-H)O1qEw#AjB`Y|cD{d=7L9^Wjj95ViXoUYVHSNu z_bGBH2hb-XNYW-#m`*ujF53THKq4m@pUuV;YooDPOwMaBt%QgG2B*5XsJF{F#gIPg zHn*9_`9dpWoNth`kx_YqStpzC&V>$0r1g@+ETdX~cB1BO)98mp zBT%GGJe%4G%el-w>G{C&_32@ew5XU2JYT^bg}S^G>i@RQ6`+(qtd)AX9BFLtz>6ro z!B)Cb?YUxFR2O)nJ@+Zf6x*YFXK?ipxsVsYuzoY0#ybz{z$ch6qE{ z+Gv0E^Gmy;*TF-qqmy?;S3HDT?pWH6pTs?w@m$f_X1-Mr0gMHn+Yfikdj%o&&akI& zdG*T0%U4_~ip}F;8byPBk7w<+@iG~mvN{k(olb9z-69N_?$BrwDAeXiOe~v&?bNvi zy2FtS(ghqX?m-bX=7UW2_|b6<={YwDo5{s-<}7*FkSC!cMuN0jO;eVMLd*#F`-(NV zM}i}@X<;23g><1?Q@?d%tb(oM4iSd=ieyZ(Wtx*f)DvTTjCJb~=~WX_pBG%XmZg|( znCp(9F166^HZ#Gq?(9x>nt9djSP7|c;k#G~bv?=)RzmVtCAbhP!I17U{=ry_CJc^+ z0l<9|wg6Qsf&P&;rk+X?!BVkn)trzqb8I#AQfYZK03dyz-IHaI8=HR%DY%kH0!b+q`j;oHiTrsxN782#uEaGfz%+6 zy=De`BE}2024GMf&W))=Lu^4zZ9Ipz;n2@H7QI8$c6~0Enh2XhnlN~tX3DY`K|7=F zGr*N1Ev{!tH`;E7+s!G1H)ZJ=MLgjT@`mZ4%xihXx^rm za_xwxirl<|pPuNZ@EX-bB*ogSnrZii$UYn=2Dl)RNfTvM818i@3)38#n#M?14Kz-W zF<9g+x7l6mgeV}*jQYBExJgj|`C5egqG`>nhV)otQnzbM2!q|)%iCjK^#=<`(isdn zT5!d8N;mNl1VS+r(x(Jh4QQNhqrPXgltlbzZWAUCOe&L>ic64v^ErcD%uYtitD(G% zY{<4F8c7BGwJBNbjIWh}TlJ!#SuF0>jM(y@dLgA8LcbD%J2T@xYmQaT!aj&@p6)Ob zql{KPlS?ILzEbB}JsY!WG+nU(4ln|Pf#(9Vs!kF!u|ruAg&_pDJg-Q>TIa$nUD~Xw6 z70T6+q_~nm9)!mn^^G9CF{J`8sRftnQn&b>%xdrw&F*$BL|nBEGRC+#EgzaKt|BbQ zfOw$3fPY>c#>7@R8+MAgD!B0>5^73hqzL(bZ*pgcstlD5uQ6L(v0&abU3j6h>vrZ6gVItuQ%E$LeYtLDGU1xLs7Z26i6}JRSxqr$scFmU^y0LPT!U z!8OHe%L$C#(F#gZzF!YDU+w2u!XssG$qSWcxmK6RGozXB;6dp1(QgDyk*9Ej9_}9J zhhBJ>a%h#1$h0kS>0)X+x}@C3it%h>1&P&EPB_*;G8(^Ewvi~$smX>s4p&N z02h~;B%2g|fbEFDJ?>JhL^=r;6*ns0o032~2mnEhD2HfmCFC{23ktW$n6`2#7(FV& z_4+uvx7726tpcn}T+`J|6Q?N*L}3*b5A+=Qu6hXTS8B+lyFGRlAQ-|p1Yy}P=o^g=Yz30 z1<(R%s6b~6DGQ}JomChK58y;eTv#Rlj;N4Lb(Yv^VE}t5#HGJ1*B&|1AsP{zE^jFB zg2Bw3t~9q;-Bx=_38rS|oqQ+|YLslD-XQvx!(&GKd`YenR!>eHj6ih!=>D6d_K_0N z7NsE#<(rJO>?AXWzzo3 z+2rJPZPxmzao_Q(%;7zS>@tSgyWXIXs)37K(17&O+J7uQflj=n__kopSfBHO&C zML-~<90up4xRC>PVHL{>Y$MWqM6Z?~X{u}}%&P=3hNSy@zj)#k*CtopHH9f3U9Url zeHTB*{`a>AyrtUCfU7O(J`yyF33c|^x>mmx;(7iEoa;HeI?$0hLYSrkARwC{7$fwY zg>0~`=))X}wnOn#!?iWb9zZPy72+eNwRf*Up`sTH1Qw^ucI;oj}rfa+Gcy3y$ppa8aeup@_P#j;}ycX zsA)Y5k(!`3+DG9Y#ROEYbE|0EzaF z&_IhCQb#3>+@~An-DFOX;YZ)<1 zX~SO1=CuI^NUt3sms>>fvC9ARoHUT3vp!I}5c=TAtjF6ds`Xo8ERMAYnQQOlP>vee z4q`G3!D2)G%!fvdL|Wd`ak}1FHCjz~0I^A5poRt}4bM_}(HGI2@2cL50LNdnmogN7@knjAE=Jk9Q70%_=L!G9Q1%t>cdiH z0uHosWGm6}%akl+sKP5AIq*9mtE0oVy2DI=Yg0t6E(_PS-5ms7k(c)pWTlO)He_hM zn+?8NyYyIIvgbw7$n09VmJRtc9M_#RDMQvS{Hf&M$q^vwVR1)Z#K>EcZ~)+uwUAt& zz3%BsE^DbRhE9!dL1V+&U_#hzz<~~$Y_(r7d&;BG$%uvQ*Ao!8gexi%=(w}-b)?9JO5N$? z?bURxQQwG!e`qu7gt1I* zhQ(Ljdh0sE21k|NRXEb#W>ZaC4No5{5g9~}V-yMt-HhYFQk6@E-dMma%o_@a9Cxp% zm?_5f=Y~|KMj@1;KZ#|wPuK{^uvJk;fDf^dQa#h0X3}iF`z=gWK%j0wH3xVXh*fUf zFNkPBV6+=Y-MxOQbXg_5NVxhF^K?N2MY`Y!XQGUeZ$OuEp%GR$&_1qbS$>NXOo+M4@%r z%xtm4qsAY4<}uDEC!Nr&K#I~BsAx2iH9{UMz1{4f1Ff74Xxj_ty=CY=ZK7f5Ky~rC z64Nrr;PE{H{*Jxuqics~1z?R)sEkCC{fJx<_t(aT(%TE)1O=vFy3q|UTk2D6(jDo* z3}o&@fOnxerq70WQP?fF*R+k0cGE{r*fwJAzzZ@o6!^#ZYzaF{iAdUK^TXsuPa8g| zUUZ%$U|?=W`;B@-$+#mCyuPb8A=+kZy`FC4ctmmrTou(QE=CY1sKa~~y&7SI*Z)9m;+e_&zx@_IM z8Pp3Hamn1z3`JH~rCFUyR-;prM++H_>MpJe52B!;l-P*Yf30NYVOh)z6la5i$Zrg; zctPT*Ia4Id#fTS8R}{hJI%9FRHa7-SHEQa)z&x7Ka{_CmJjDO%Nd#CpK$!i_`fMC< zz5KMyT{Y^vmC+58Qw2Ess(~?Pw#hpIlhL!m=28{>2pA3zFv44 zsH6DBUl8=*4-pbbd*}q#Pd6xMLaYdrss^{$`6GhDOAs?*erQ3J{UzcQql-w#O)NN^ zf)^D!Q&FS|bJWHyEJ^%}8@V(&io-G+X~Wc*Te>6k>6tayGRXUKfQy=rrE7&* z6>VV^2V~VAbj9$9EHQ@^OPy^#PN`>SxT-HZQlnVrbiKwlGM1gjNR zlt}x^L}r8%I%{G-+FIZ{o@b=MtfNIAwx?I{L%=aZzd~_Eb||)M51bR}0tS>SfCTRS z?YT*&&YK#imE@PXPhx#@Em|@A+^dvhQ%nq7lQ{9;Fiy#BvDA1*30YN+lM|+egVppD zidEi}Sr_XQ?WBODX#|GKUQ^bLoTX)sPDWiT9)_rgatJZx7HgO7tZ~APC=Yk)z5KAW zV*LD|k`cKU3=#kcO2LCfrntb3H%Ju0#)2zy=Uzr-3)Z}n216;56QbuD)yaL`@@hI; zQX7&^s4Eqx^^7pmRJBNav6AnaL77PxWzNyXM)O?hteC}(*sFM1fX?}X-fkTf zty#+)bvzgraaiuHF>&%9S|fHd6e8k)6Hm|wfr=*TBDFjd!!nS)Ag<*BULiKD5hA1y zaa(d0=x6L@6&wL=(r#`MInGhAO-8y}-XQc$A71W_oy7t&p(;uR1QN(#lN|_D#>AI;pBPE>J-6F?!yeKC zDq5TM^16^oN?K#|4e1V07*f63znzjie#>8K6Hy#XrwLL!R`fj60Byh17}s3Q$Y7V{ zu>zqCXF&JL{qAV+$&CV!ga*rdk=P_WNQC~>lXcDaXbfPoX`V0eQLanBn`v!?yNdZS3|~`M zFX+JSD33-3&9zlt%2vp6WT47J?hyQ3m^LtdL>*gJ;Y3m&MGK80NoQA$J~t}Duy8Q; zrrT6WK!?{?tZK$>qV>^i0L3jLcyA7r5<+_xT3)W!aAb-UqoCN$n6*Mc#uW-KgD1m3 z@vQY+7G4n?5|~^dGO8itex|ihD{v|}o1%N3g|qs;Jj`HNfXvw|I9*riPIE(J9kRGL{c2C zL8w+?8$^Ju-wH;-yY(_)LXl< zm(u9jp#+pCmHWUA_AnF`kGe?&>fIX96vEwCB^cb)@f-jWEywaI>>AU)kpu<8oBG>A zpT>pYpj;Df7_Eee2%JUU8S`eN_`$fLUZ5KD9IaYscia)uMV*S3C-%i<%^RhO;}-5V z7%Yl6&8~;)`{`B=a7Uf1xlw9J1jWrPQG}zQMxpS{p!#K=hi4YCZa`P4cOvL4!Uycs z#rO3jNq6|m6=-iI=Jb@DL}sCozmRFHT$$9a)Y~e8fLNuy73gVam01Xl84)$73CJ87 zaTr&mZL$ZGu8ail=Q=A6GSE9xG0ka^mOxH49$JLe%8?d`65YDJtn}7zz-Qxb_*ssG zQQo^xdm<~0jXi_a!=bFWlpSH~5pkx}q7p`@U(cxbBbtO4UWA0M=1Its#Ryb~E7Lkp zv^EC(DHJHWh+(`z715mY$3dEO2EB@mqDDnnwB@tA^9jz7`Cf=8VieAvj0Y0{o(MF9 zLP=ESdNt9pBPyhvDoCQkQZv>Z`^8E|}6%#;hI3 zj0xVG2}hix!sr95;jcYuQ>&g9vPC zNTZ__x;>SbLYp$$uhawznJe0+5%;wFKf-m2?qM1^d1uJJ0qe!=(^-Zjq;1Q;Q#>Us zqhb#)LE8|7%DDr`p-rPsZHg~A6ObAbUc_q%X7wANT9DCkXQgg*mXHp4R(UBP$Ff;Q zQV-RPk{Izy5*Ag(d-J-O<*HN^+UFXV64qb|A^>)Mb;D?{Xq!Ez_=7A%?xUwzXG{ZVGI!?F{tOVORq+rX~2*3*lvjk_olt8FXKeav-NHBNlV%BP7u?O zztlKt^a+5J?oH6N#A&74wjtj2S?Cc(sbgxAaH-JPKzyqAW~R+nWkBdQ9qvPmPL3qM z`vOA3QXk|#I)jmLub^^vM6?94YfR;~boPUD+->&;wPk50a1{?R2)g!}|F)2f($7$g z$CdDhp_geP00g>V!hEDNYCsMEpV1v>>KjZ^J~P^Z?-U%XM#wa@^%@IBI8WJj)E~-Q zJ^A1ak5B@csalB-tu6AjZ+lbLsyb3u4M0UfJ_gPiIuX>uTi5d8TY=BT)hmtliOTIt zrM=2Mu_?I=tDRQ5xU8+S(HQl@Cpt)k1VWIgoL>)x9)1w1PIy$K`BXHZmzf|Q!m8SC zE)#$UH>va|(nk&=v=}4)^w<>5dfV*=#TslHpa?!({G-9C1EB`07;?fvDNsoI1$U}ipmp6cXm?jT5&>R2iyA=mB3n0irfDpOLQZXNlAePiLSX{n z{}BNTwnM`>zq@X|nwSHPbNU)hKnqd=h^?nofbvI=ZV#3QCsumsHE4N+>rA>357&h| zvYK_OP%%=&zLW)`Cff)afOyaap0cecEI*%QV<8RgI;vSrI<-YPIu?xwl#S*q-y*vT z(amgk>GT0UAqSpFjFkgf3Gd>@t`DO7%k)R}pbGf|&O(B6hlw>%nGJ-{l#Q8CH{!3$ zc@tuS0TYU01%vA_lmQ!Jwz@E=&>(LwJ`S#n9c?tBv*p}eXuz&;m{GR{N!it41at$n zjdGJT5o+O6a{a;dM&FQwU5_I~+=w!=`?h<1-A>Y&V$i5L0#erp-eRmw8$<}$mc*zq z(IOE(94g~`i~Y03ZF}G8X(`uBXWvyFov=_xbuNeaGUma{qonM(Nv6vi&?_Iir-^4ghZ*YhW%|blya@)YOTfz_{!oKaug%q zwN#m}1@?}aNWM`AUopKwv#vg!sli1lGxC!R+HI9;A=Ye^DHNH+n8jjSW;pafAner-d%7m~OZNIFN8KXj%i*y41Ac zy@9>q;i3UhS5~laG3^|4<4SnanKWP}a$MyiR#EYnk+DfiD4nTA#&)>^iWURvfBou) zbe2L-NQDss9h5q70f#gOka$m(>*<~l1Bi#C16OnVJyknSv5{*{96EPBD6$piCdkEl z`mI(48T^Pny=*+x9;41WNh-;Wfg-nOj%fH|+!p zNP-HcQp7>;rJLTT*_t84veBMtT@%2N)C0I8!7_~MDF5UGvgt7Xv=>Un= zaeK-+6S-TP9p0GS4D(!^2Q3oUr48d}aiC&q;b3RtH4I>_i8uj3_fXs!`A`h)257t9 zrn|+∈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 lK4jw8NkNk4*@1LOYWU24*m3Kb!k^eK5diPH6 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

69QkyJ&{E4Gg9~jX%rPuZ_bC^MKJlAIZ6D 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 z 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

-53?M2e6*6IR;WfK|Rd{vJ<01K?n|{TeDBtH!T5qqw6?$7R9uQm9 zpShI1CO~im9ozX3shgKn;}yEMZCqZE`ThGx`2mgn^V?eHo6>C(TzDVGxmjI41QK%Y z{6`9-Jd-<)o6Tu}{;+St?L5a&w-hqf1gYUv7*I{>Ir)%7>-Np?ZsXt!9Vk&$`?>K+ zvry>4PGDQr<_Jhv$HT$;UN?)Q5|WZht~;wx<5WBej$?aR6Y;8(p|p{?n*RDL_NQ8_ z1lp`&W|81wLS(0k0-SZ4MU_M~`wC=Jy3f2M-3G_wlbEWRt-?qotpJ4b<}W#SfSm~M zYS?-Q)4D_$Xf+md>GG>$D=m95Ut6(vqDrZhU%u(T+O&KSXalYb%At5EgjGf$R$Oyr zdPHMo_alp)H`E?5!7uauo;#4awaXUo3HrykQnl zILQ#XT0~gV7LF1)4IdFu5s!q^Ml^u-7q5Gs$h%}A*-L#? zthn3W3sVzaU`2&5_JQGzqO~?)b0Z`bKvMY+x3Z~8rqsqBNp@m7SYk&I34GN_e(339 zbD&u&4tgy8nIu`_N);pT+=!#DMtl!l{Jy^o+}7b_jjI~yxw>86V_z*fsGNH=%m4A2B8dk%M>JG`en(UVpJA|5chFW=$#Q>c_RhbO?I9BLHe)J0MTP zP~J3>D%?d$gP~kCr3NaLMTVqWy$Ms8=7q7|FXB?LiurkEC~j3Br`i$#H#Jg>G|2r* zE`46_4kvem2De?sn|LzytwXjnqE$$CQv4U}bMCysRxC{D zQ!XT>tz^W)0?C|Bl6w=$ymTNu6fd)apsbDr7HYHta6sC%X?o~(pZAaQH{N%b1fX~B zLaTpk{@FivpwGtti9i9KOW#-iNj)zRfXLi7kECU@>PKB5?RS)|j(+R&;&fEVa!Be%^I`z~q6>vQJ z6URFjUU*DdG)iP9(5G0cec99C{A6d4;Q6ar6dvQTxE3h8-xL6{!WgW8xnRQJN(_k9 z>bOP|(cUJAZ77I`r(mK6;T>Z6zdJ92jzC6g;3xJN9iiL0@5~T7Ej4aS_qxP-?Ya2E zh4_?wWYT`Lx0C@Q#|V@2`>e2zVFu{cIUu=vP545E2GK+gRvvX)L{0t;Kje?!Kgx{S z{#Ep@%EsPw+qk34F)c=5#5M3hvl&nZ0uF0%&NfO6tI~Gp4Fq}6fN*DeZvMVPE?z0@ z(b_PUt7*49w&B3_mZf}#rF;SS>FEz#>hDO?Ew zWFtS|-{j0ICdJ@}@eRFYk@iq@d7ZjjP-*x$P&44Z$#=`wbcm^!h30I}J88)N1wW{e zb8M6J6`Hou8mtR|7f`scFR`SVePBb|T3dQ&3(IB+ulJqa3fnhEpa8tM5^FAj zN=`8CN*KCS)hQtNKPa_Q9)z|=2N&r|k$sGp>4+YV%|W@I%$(6C)-D7KGe;p>DZb#S z$$X&98ro}S7;AU+Mk;IajQ3le3>a{+ZzYLdLqv~E#oEa}nU@6%6|@LG%%Ok${#kyV zm%(|T_$p(5&4rr-L@$KBF&R^Bqld6}Cc>q5dG7v6@GZM7L<{JcL;(rq(qP$sISSbs zF8-f<~DGGRnXjME6Z9CXmM(tiVWD8@_7cMj*(~|t$YlSL9_70 z%e^78ZHFGSM;01$OLi|tmmvgHNYH&+OMqaCapOH7;lpcAsBQ9AuQkbQ zN%1Pt0x2Uz-wp}*e6A_gz(!|e92PU|tHt<&94k7eLh)Uk9OHamL6HfAhCp}`2Ti4) zrE5`b;$JdAz|Yk>GDgI!P%ZJV;9%uKx)W@K;C=a~N_U9P1_Gw6rtlF0=0Xf4@-GIr zyeMOHnqnAT|LC-QCALP~ z-`8c~flY95dXtUYX}ZVh|V%~vl`%M>+O9?rAC7b0SU>6vab zu(S36Gt>CZxu+%TNMi!}IekS80Ry}dqe|j_{fgoX-iK<+T8Ve;h$9=w7CpT{0jjJe zJq=EBt1?@VkT@zK9iYB+Liy9_tEUQHQvO#?o+MRqsL-vuV~0ctr$)hUeF+A3Azp=a z*g)9rhw6D%;(eW|VXk?1hu$*;CCa07;79DPc^Cp&2Te*FQEMwCp?HDqVHHY$lo<%2 zbu@zg)P;BzNv4UYl)(;D6+q|5-3hw4UQ~=0>@wU(Kp7^WrQSGYfw)yJyjXaVy=`!z z7?hkL&Kw{e1k4~KM!^-1H)l8;EZi37k$4W#)>$>GCe!p78UM|*{Kfa{^7($0%6%<3 z#@psLmO79EF zi9*53W{D=a7!~j6)ZPsyB6q73*|_)VwFyFA)LUNptVm!?XI=6yLaTz7;uH{#QYB!z zh|zYe*fR8EVVJ@?_*9M`c^1pg?~e< zE18f`T(k?)v-g2qY!g&c?I4FZ6eoFNP2iD}o!cQBQec>!Rm+-x;fK{Q;q4((ooXUD zZPKh}1Nu~Axy!1dI>f)wM5f%WPo;;rm+EE=;~?K$e6qQSeaUk`}@7f!>^ zLbAWM@fPOM`m^rApi}a7q`Ym7@86D}-b zIgoff2frnS9ZUJx8GyFH1?ml$lH$TL105{K*djgF8?y5P85)Bp~wZ|@3Jk!9IgE`+XteLviRNJs?^Vjn6e4# znQQqw{FOrfx$;lj`MO)1PL-F=?0V5YZ;WKG(27^yKg+M*@3Gc5ab1pN&XAKkkR%y_ z(76PIDh6^?;)T8d>^ka;$7Zj;&k`Cq(isE#^d&lJ7G-zI43xVcqY(YWt~6-xz^x>EJD*^ zoBom7yf|q4UGTXT-JC)+(wfLe+vZEb z9IR>n9I1u{&*k4#EZfgZgF>27T?p;_u0%R*NxWwBV=%U!!ue>Tn&Htaslv3RoCg`h0cdzK9uQqZ^*XVRp22vC%2#S_IOP$3X@+&kxim%}+^LI=1+GN(6D z`342EW);XOvgh$G)5X{}0lb6W$STKg^GEOq6$`SMZO)bXTW7*dB-9kjlVJQJ@VOn< zA~;VEVyG3ZMEf19wTMpo5=dHAF1yaDtt$^>4XV5A%sbtK5-#Ov5{95_jD9F zRg|~Q0s1B{E>}`WHo4K_o`*vX>N2P3&wzCN8jAEq5i8>+sgS)AXi}Abnbj01jk$pI zxP1xsiyq&kJF=$d;liU>?tJJ;y6@K|8Ktb^{*-^R7_vAB1|;`k9uk@`6Apv<@pLfb z^n~K1&dX-Zz|CWUEzu>5=F`G}`W=`SpTAIW%~hPZW(mAoiiG??R`n=x=P#4`n*w<4 z8g8YP?rqkNK{X?X*zq1qDp;S!>5zFqEnB0$*hqsbPQ?&8KsQ|sRunnS3>joh*lzze zbb?xiFaVI*u!aP@_fkoPF8onAmUksCWH#FLCd_-Vv76<8q|R)jZG#L!t#IC4?m0NG zU^Bxq@k1f(ilridmW96@xDj7nl4Dr4yN>k=H?^N*O~Vqr7|u;jUcQlETZ93JH>xeg z1V@>Q(&7lu4@^V!Xi(=u@kL|>^7)MbhFo$oRrHtzU# zmJvhuZofU{o%yj5UVg%ad4lb#K4S-@xdO&gZ3GXG6OV?=xzLFzyk7&gN%AkDhE_lW zrI7qo2AoW2TysEt;85BKsZt%$ayznMp&Giev&v@?#AN&Qo)!W=Z5970_D!E2Anz6Q z&@5*FFqjH0rz+!}(^$-j?c6!i)W*Uc7}Sbjk)v!GDz@hzcvk#vPvf~a)x&mpID3KP6FZ+X#_&OP5FTA9 zdy(Y0DTwhAdn|!fygV6@m6TM(=|mqsZ0y?hDmU3$HVOi^J9{YYP#B9iC24Q?JDozQ zCP`za+`^m6)#=+!e&Ob2S5oFbX(5;SG0X5%j`6XEfJJT?fLa8jvQjf0?+!w^H86-P zd4FDh_I_QaW&w$-kqszu5WO0;=PKzc5&{DvTG4vP?-;}$qqMQ(V4F!HU|7`{)l{<) z0^2l)5?~N93`GVpBsK_e-etDbYKZEnbniDbQJ!QeRM4S<-CHYt>7>&Ud!kT(yp$xg zSX~R+mlKf-r_F412|l+IOR(Jt2yG|j^U;_(^lG_0M=jDzyeiIzwc3)v^11Uns_j^0 zUTKV%R5pBe-;)cNpwv0In=A3P3TF0NUp^p=XtlZK##8aRGEqIhyAn{edYrRelwXm0 zsiqy4aRPN~hWb(|;G{-i-d9zk*WAYIs_;?n%n{;H)V-PY6o96jpnx=bG~1Fm)wmqE zLi2^{NCWDvH04wP2KA5jv4&!8t45lVk?UyJAz;_bwZtOhm1NU&5aU(z=l!79`_=c) z(pIXPQvV=e4(iWvel@a|&xNU#)E*FWT5#n+6*Iq7oQ^F%KI$fQ-mi{iGyE_Qw3#15 zq|j3=DCI$SR!S-TiyVcb2w$5b=0e-+eRj5S$}Q&Cg52!Vx$Xpa1Nv^|=Mt#Ifm!-c z++LlI$_&^UL}1{Av;MLK2lioaR-xER+>SdYS)mPXMdD*%}FC`7EW{Gb*_G{nj-xYC(pnlRZbr+kif zeGTVk-RI!5fBRrPZx_XfH6So^Pealh1Egg0JUw>YL{wE#@ch2ZXkk+&9Bn&$bnE> z@(y!Q{+d5BJ2jMX)GAE;Ls7F_9A+vD+_!fHf~_14(p<{%7`YPGx(bx(J1iRD#LTma zcl{409C3igB7rA!#<4QI8C4! zWy*_MwI6D+9=wxtAO$jns>`@W>0{5=Nx=0r$nVG`9I|-W%8~x?EI(icP79=kqW#M5 z!@fmZA`XLKj;(cns4MrD13AE3nWO`N+NtkzaP?Ca+JyYFI65IW=%!9K=RULaS~Y3t zq$Dc0)5+$bg63Ei%w!OUM>t;n{*ONU;@3X={?lLk;pd-y@`Hc!#b;l9@%a~@fBLJx z@x#x)_~B=tJ%9Q;pM3iHXFvSZ-#-7$-#-1pXPN`BH-rj_Uu-<#28jjIdsgbc2U}hPhkB$2QB3c2hlj$d$Q_RmeCcFfO zFp2?7OJ1!nLOOWAC_g+%{BlXwcX%*iOkq=HCa$r-%9Wd9nxhu7D!^_KcQ9*Y6IV9& z2plhMZJ3f{QnGviCc-|EMHL)Ti7s1Gy&H@>Q&7NLHb(bU{wYjdbLih(FSqmU`eE_r zuwNd3cGw)mo$c3y|L5BK&!@E@x8>%v7qGTJY_{9OVYAww_S=m-v-MVR+Hrq)+`L`S z#iIGs&1$_|9xtQi!{u<0Tz0%3FZ<1UI$w>S-dvC8<7%;UK*1eA*nh*ZAM_!{c!q(Qe1X>UcSvcDvQ)yVK&bl?L}XKWrC+_3<=0 zKdfe#)&6k4Y__gs|2TiW-K~z{42oD%E8o58-EBXR5hASA>E;YpgK{hL#|3v1WLB=d zuy~3SWJwT$xXw5G&cN!2o3KS0q1z5Z*t_fB$}i zrLpTT1slb>)>Be#k7f>ZLPSRllGoUrBMt>EZQ)M11A2CA9&TE8J&kPV-^Q#jqLqv| z+W<6G-T*KaT1uJ*5wtJC4M zee?SDd4GA7*mr!oY_5LYdAEC7Uv}%C9hc|T&yKsNidQ8sxf>g2-aW66ejQR|T6hxW!IIt6~OS&2qq=vZ{1t(SrwoM#`ts3Sq z)>vvdl9>Vt7;09d(*&a~mV}_>1VOUN2`h43VUl4$eyk)h`<`qbuMSb{bI=1D7IywI zvNplwCkxPWDeWi<>|o> zKJ5=%Z^Pp7`uuo)EA#Mrp3H3or}Oo1KV7cR$KTs}Wv=JHe)D*FxE#OT@172q^X0VI zKR%uwcGvy%xLa)x|JQnTUN2Y2)%AJ#Vn1IW_LtLj|9ZY&d6wJlaq+O*e7DmSJDHsN zx+0aFV<$#L{Vs4i*&S#xXqfwLi+$G3yN{z91Xaeg*#=P&_ z)7$8QHf$q}XiqdugC&wL-z{8;KI}tEN=tTyrWq)uAgtT!ZPsC65`z`V2BdFX8~(?g z$F}=^w_I%OjK|~ou-PoO_Rh_EyW3chhx7UH;Q#mM^IMaZ4bzo8%MGe}o<&}df!jSW~x2MBl_fJpGzO(yfQt<`SJRCO< zZ(cu~kB;fpet&*ESn1+LR~wt^?zsK=_1`}p&zs#^V5uFz$2fQ&-!8%hBtpeo{5M$l zM+b%R6~1e#LR>GCaC2chlhK3W@(cB~kuKniWhOFPKHnY853S}xWn|zB+JGf_0;NoU z2Gj#wO|= zkPoyiMKvXXfey~Ajlw7i=_Z`3DNgfKKFEv(DeF*8?7o5tO}dQX18Vs3K^byfpPx>G zR}VH>r`al=&r&6Hnr+-R=iIwWX1CkOSsflW)6?T};^syqKlYt&a~+57z4Ge7+nH7YFtE;z$%HyRgiz zN}oq1)_Qk5?S#hqxyQ?L_3ifhu-Tlay``PmGqai>9xm6@;kcjs^xmHR`SsOWDFaLw!C{x84P0lIU=NV68-N4I=u!{vULW?|KfhO>#$|*PzSW$&5w9 zcW+XK-6%cl<;6k-&oBrUynhFyQS6MJ7?ytYEctC>+sMY!Mf)lJT8G8HCeO%j5{g)p zBr`!Q2-v=@0^NfO+T$xhy$VtRBKt4OT?!=SFiR7Nf~9@(HX2G2;c2367kX?*hY&Ih zmg?`H_uGd{@_e=OWcIEO$CY|;?a16NPY>4NVx@9*_cxp6bhA0E59iIy_Uc|9W5w=e z^PXda-Kk)|eY2Wvulr3r%7@d#_VQ?Lp05tVfAVlyZ9U8V8;7IX)Dk^CK3Sj+Iy>g& z?_ce+N@723@$mfkchs^^&-6n-j<^KE0N$GOI*?pfh*@TxR_Rmjr5; zTJy1R+h!pVi9XTg7W`<#Z)o2HL{h{>v5E+b0#n_y7*v5|c zs^t*3ThHiw3PZ9~!5n-e37No~#tOE6j-E=YkwmfoEib3ioKlg73)fBE*Ixx33sAN+ zp$@g&aG1!msev(iK{YLED$2U%zdmi`J;$kYJZ|GSlnT9CuTIgAIBQU@*Mhg=a(>)h9|lev#O7exUAEJQ$MN#A zJUDqRYbET{X?OLzoVJ_G#f5m3t4Be#umR5ghzt~7;97IH=jx|;E0(I+U(U8wkf`%v zn|%?i55t8f-U;|?J_x>GV=x_XgvXB7JpyGhiKS}clHv{tqU%hjXv(wjX}88|AFazq zcY&#{ArvWQ$HqjfN@ELdSgH7`u|P1biFg42!=HkO2HNcfj_grkb-}p9Ma!_rSlnP= z@>x`7*jc`Xy>pArTo|J0P_{nuJlWzX92<#>BI z&xTix;mMvnIe%ww-oJUWIv=$Xm;Ixj=ljRs^vHJ}=gE8IL3?vnm+jJ)JM+n|SC8#_ z**_n@-+X<(%+?M8JA;==zPR6{>^klahqr3w!(n}0%^n%N8+sD-;vxXIF-*XS+)jp} zbb-C8ITR2|6O=UAPv`HkJ1Aj~BfdU2{;0~H6EA5t>da4ZN|uv1X|+j#h%J>Eb~3v7 zs9~`(TU}v>0`y?5?;qs{m-Sj-Wdk3|8vz)1kTG&iLOVt~lY6;hcN7$JZHJp;Txcq>H`ZJ0HB( zYxiq*+01wAhvn1Cy>VVCAoL{KbXidzEO<*5zS@;hH%uV-%`caem?m_B^>wD-b1UXKqCmf33u>-qE_Utg{d ztJpOoZCyhl!F}PE9oLio+vDbPK3pD-`^WwA(Mxrn+AP*fvFK|p(%aQhWqWyW5WK!T zAO3JPk3wtG%k>D{)e&kQGlVcx50`29o2j2W$wM_D9GQG1C+)#+V)!t16`;e05+STV z$`3jYw#}F&9LI&&&^+be=;kw1?@7#Uvz_JA+!ayREL!dI(XveNf9Sz%s!%q>l0g@` zX|mz~-WFCN+w<4j+(fBaK~*GE(6f-5BDs_L}!fBm8`S{zL<-sAjf7k+wHp~5Val(C$nXRdY8iL?Yt}Bvd_2-R$ zj5HcW5Zn%9xm+7tHodlZnJ#hH5(ASSu+keXE5mkEvJXhdvK6cuBiHZ~)?1hjaK$SR zHXByK(&=gocm88(`>UJ#@`x1`>uSMs{XyR_A92`t28?QE17Bb>)*Ub90S+2-xH z_p`}ruLs#*^?>l0<@9iX3F$g)W9n7CoyBQs9FP0;%F(*mUpCX-;_-2Rc$lo!qr2&8 z)}PO23onQb@ciB7;baSa0yrGD%i{qY7$@uTc>PvI``6mWr_)c4r_z`-{(tplLK|HAm6Unv;BDx zQ&t3E7&NXtFjM!%)WTT8-NJ@2xM}1}QA7I$YstPq4-;o1B#x4HDED~vjmMT)|QO@mtrgmFDMLk+rUExG<&oaC@sG%>F*g)7~YzO-XLViqQkOJ_38l|C5ef53c9 zdT1j!iHat362_o?*y4DOXrF_rFWV9xWk1_dkwZwM)S=Qq46frZqi_IYrX7a(p*Zph zLlfvznVe5d_SD$|d8i&0!tb~-Ve-)YS3jK{FUMclJ|E|>PJOyw{&ZL`FGt(hiIe4K zc?SQS_6p3`Gj-zI*~T*hxBzaBnz-5i_30@VG&%^cVl-xaD{&>HN7WMJyHGrS%KW3+^W_P2Kxx7Bd zS!fGi?Owm}>Ku2QMBaLI1^!P=jnP_T&t7J6sM+$qieTj)|XVIT?iGfD}^$k(BT~ zadfTPqTM%QY}1Nn@*gmtAHBzXX5*Q3XkyhoW{kZvc1`$u6a6e>d^@T)XOJ3(#@1Qz zMy$oOdMpT92)bCctUAoU+7YOsLbbi40Cbhyj2}dkP>0Yz6!w6tP6^w_2P@Zqd>pu= zpV_g_s+Ij__TXGn(LY38xLdBDSKn`bVg9^J>dW^g61} z2MZ<&p4E2`C#}hTu|2r=uj829Yb#Ics?~C&eDY^+Y`MFuzo7JX*8Nusn&au=!N)k+ zI`^x2RL+;pqqgV@3)Tkh&#RqE)vn-s9ygoa;%67T`s$>;^sj2`kt=z3AwJU-72&!0 zk7O5X{*Xqn(}1TOexDn^ie(`fc&+KjrD^s|p!)59C{x#DJ}|UMk!n2`{}4rVCY6H^ zal#}6DFkjyV?H1S5Edd)K>!oowNXdD!`1F%(8q`j(UoVILP@WmxNC|`9_C|8!y7)j zd--~fIS<$Xt!^BysnFY`TDrf$tf({=ELRfVFqno?q+Ab{o$=Ie6!!p_fE0n z5}>0N0xtwK4r)JL-tHDxkhdf6TXT=|bTxep0B^B;cyr!AE&zqIiGI*qVI`jcHm3(j z!|w60`>p+YbFxIw9_D_w*i5Dm*Td>@{jHh@CTlddUOUG3>*wv)PS?v}37|Uf7vDat zpY%2AtIKJ1e4`(78E}f9?1EI`gtNJZx`r_~uPL)hp~NVFlU}7Qq|rpzKpZ07YP@hm z!`55;cpfyw6&@9u<*{d_ddwE@qvvGE)pIz?USmcnQ6aeI2z2ZQfcVrNkrYJ8`HoL2GX*-epP2unx<(tWNyeYK4) zll72qpaDappumw>8#0URVQ}}{{AH+5z5cH@Z!fUY^W&oi!8rzvo1f24B#*|{W)r*a z7whxPgS#G{&Rcu#Y4v8gf_fkKPDo;WW5>(lu90C>>)?l<46b&ro=+=uH=w#|MgOKPe4)|IhCL;y84>B=>N z$xd`>l|oB$aaKbST8|e6ga1&s@Z<=pbu}dvyNHOxl(#$L1Q@x>h4chNvn!sd*Q-J2 z3XSO)OOoH&6yo<$>C@)qz8p$h6g_|`R2vJV7dk~fLw`4H_2yI6PdHc5C1`I$Pm9V5 zH&7%|rez(6y?(kmA@UsahYW!q_g+-wvB#;B3QrOa428;`NYPrx>+AlmJG?pnH^-|T z^7%Xl;V36H-fvFlH;+~cOkH1jww@kfKswIV@~^)8FUz%xGS;Ln5ej;|K4~W2zP)ZH zMo#lLtJ8P^Z(AI%i}~UFaQbeqOwt-^JS}g>=%Xj-S(s%inm)E!Z{rnAF{czqtZ|)ynuXh2yzkTq)l~Nag{(rqL4=|pO3$>H;#^pIYp^tI>EnV02&b|I>y6r|%I}}$2eBTZVtawIUQ8p#@v`q1nb!&t zi(ph-F;utZqUW_LH zZBNQwK&h}0o%lUb~x~z9^=C7m3dU9@FUSGDC?cwPs506G| zZ+!#Og1ving&k@}Hk$_{xz}%8$ocfNc7$LCLPN`j`3@*%d%E-CFtXc2gRCv-<=A4Y zeDW5{zl)BcfSS?mj)Us1Vc`*@H@zv1J(6r1tq|R$-x%j+(@FsCZ07hX=b-GvVZF2!XjQQ#Ua zsXd6%ZSRj==9WUOHJS{2*#hW2Fg@Fi!bifKJ=WtpTz~6wJ}Y1h9xWfI)1!Us+o#xc zV;KEc$HNnx-HU&I-u>=&_J8kYaMa!Gq=oba2mfLpe9#CkH?#G20YE(%ZYy`!&%1xV zU(F5y_H24UzNPm@G4t@Pj?`+hru=NH5Xb|uh2I=!rfuire6t@ej*B(=$ine@eK=fA zIfowO^}C9{qP_54*;j|?n+xBdrV7KGAx(CW` z0X+SfKq>Qo`gD1EjW2T8e+yLA_-n?^doLT$(zpx!zKarRzt*2GPp`MWc5~XSoR=2W zb^>KkWd@+IRl90f*3<3gy4pQm4;L%*YL=-qRj2F@HUb2MYb-!`(iZz@F*9)kEErL4 zrkgcZitTwdx0hp<_+6WAjMW}Z${&o+y;n*qc>3iEFy82Aw@-2@q9P$V7%T_Izqnb= z*1B5ql)z+^8+fVthgv#>t-r*3DvU?~wmSqot#Kod@E(8|f@7WBkB zb=j7WTW=1K(iOIPg3-r0iA14n#VoK1^-`yvZsuQ2CS=+T9{&r`-Pnc`bUt20;#djz zD=oSnqv){k5hKE`nBEu_o%oUbk=+OE0pDQLSq5iyfOE*x*|T=W8ud78WzGC6$KJQl zSfit}f_1&#n@|GSP8xyp!|SsK&n|0-?|B}gxrmAfhwFgtb=uG4pLR;1@7~y}ork6- zb8U$~QBs0^Aoa)n43*?tPwwE(Z@2%mTs{h`~PH>6`yMJCO4Cc1- zi=oY`jRlX|cy(V_8ybX{oJiS=h#w)pt4j`JH{=_j}L1xBK>XTiq?m z3z$p>h7?py%>c&QC6<{GCYcZdGZq%9NfnUHq$V&-GQ>=kmwV>(b~k@?iYjAE=iYmM z%lp31^L@U{`LUdEkZA~&(u<=n3Xs5S4)j|45{|k%2k>-w5%lvWUeTZgp?7IEhMMwg z!Rufe*y%%AaJM)PG7cXUmBS#~9yL#`J|A`EBlh&GU5dB=;#txwAb_chk#vT^@e$pG z$P4i6Sq{5I7hMF+AZ4RTtJG4GOM>P=e@UD~7RO^u-!;z8Y>!mq*u1*9u z8wL>=n)GQI)o%zDE#0+uetzln-#dE-06Vi;!BYbGdgj=U(f)Z8Doam^bJku9Dzzgj zJhyZRo144t;RKuDVC%&8-qkSb*z_@vWYa@G2e`GAHGL+QFb9iIx36_MeZ>)ZK}iLs z^Q?9z=XTFb<`+%e6h&u^$-su&+anM2{Jt94O!D-^`{nh3PCe^b-^R-G+ifPZtMNRxKlxlQxSX6FNwr<7Z7|CeAJ=7SsI2K>h-r4Ov0+&3s30Ixl;D zzJkySZ_}VLl$_9NrvfDt45hRh4UMH+gJO@HIaMu&F11A7B!tkz>ccETW>(>5H_FY) zrc6psA$YxXmto7s9HC2r_!ZkVxrZr_7SPcsybl&@O5*Izpk?#RBhzje8_sr|?*(lWhg>3}f=jv$l)#Hh*o(Huzv` z*W02v^U$_0o;490J4vs7X-yQikI9$|SzMk6LZnG_NVn>R?GZByWbW`RumT7bhsHAO zng-I6vWqJkylYvR9AY5oOxnO^`Ef_IRFI+iA6rz%CYSw4ezv(proKtiL=e+x=XxVd zg&XdaH~LF+m~=A896|3ntGc6L>J1DetCB(cBQfVAe89nwk0kL6DiXej0Vc$!TqL&! z-g71qq>eD+>9u;?l&I6Zn1MIW39tn8W0{a&qj@{1e-GJmBYOYd!ReR{bZhTQ0NJ;3 zLe8GvM8Lp<#CQ#zy|uSEe+HRLBX0GEdj$d1khK;o?O@wteiY{e24ysq2E#$RltY0PA>a)U|yM(cv_r z$mQ7_g%*OpAEuNGWIOc_U;^cG-$(W?ZugAYELgCA;Ex^beq;-=C0xkWISd@@Q3FN^ z1He-q=upZ9cu7#`ss4Cd!0;kzk{yGG6;q=@kP+E+?Oq86RBqz1&NC1E+1H7igg{qj zjmAW*Z17oV$bo2ODh1tx?Ooj4HQCtRG;*=hu?Du!Uf$a|V+r~B z-R zCHuaZn#v}Wg)`gxmuI7-{7XYE7Fj_b2lZ++blSuVp5sC7Ey^8cYrTATQtWoq^*515 z%9(md*+@oNT8C_#+1HDoZTAUccwI(pZ)J|-5MV8b!ZxrO5eG)Jxzl>NJG;?czVkX7 zJ8JE1>mtp?Yyb{qi15r09@NrNywi?`n_|X`)h*MP5Rh&`h7^U6VHdJ+$wx7CNt$dU z9w8q$fCfma(1gxwYpJHXvt)a=fyb0QBVI%t63NK>om&^S|Nhpl6LHf}&`LS;lxEQg z@L(@e0I4VJZAQ~d6~oHCeaGpgODc@X)0%+ofadJLQv+6S#iq;(R_f zNHnun6kpxinJB3?A?x$=m-fTb{=5~5l=to3*qQjkk*WyZ-P-d0ctLO%jIqN@0#8uA zhT6-ta|hwl5xoD*`26R_n1GX?$G_aM@dkn}!q2wr*aqe8Z}q*Y%!V}9(LwD!r9k4L z=P}!N`ZejLn26ZW#L_i#bCv80woQu(6#X-M=|X(O;H%2~?8(hDgW=HofM!GWNf|jd z2&3Go$%RVyCVkY`)=rI_X>$FrT)F-ztIcgb<(q`fAsO8?syUf8dM)#>^=z1ZjR!&G zPs692uQs!YL%&2^9eFOXqgaZC~0ybKxw;TVR+w^`70Ef%W#U?Pk!KAXtEA z@7PbnZFVpH5dIfv2*kFtef7fG%NMscXIpc;Nl@SU3ur=sg3-b_1q?)~upM3s*ur9a z4+(1qSNGi1pne_1KrOnM+8K7|yO#sATFE-!5C2Y~44*x_`|P>tmoCD3w6k6V-}3zD zuR{BEG~q(_w-xglQdI*=1gg3P7(|nJ;fqF!GfNkG4Ps$eZ@|Iyva|x??iSODs_ga} zkLq4q$`OT7ackOJOv$AJqslg2RjVLESAoPR_*JiL1W$Or!orvl&{KA_z-6_$xbb1=Wh`+PP5it9#s9vd#ND$`ZaF4H*STrm4oICt@Z8>}cEXcX zW*TkJ?3KKrl4x;N6_P=n$U5CRp10ybI8R8jpoPSjS_I)e6O!(T?oMuMP^fo07$97bth*cZ zkWXG;m+@>LS*|(VQWSSI9>Z?2(HnOp5a3%WseKjcaY6f6U`EMfl}3dcwA5}=fFo|z z2X#&j%Tpo+^#Nz_#L6uG=4RuE{D{H)@lPaVEk+ zsEURH)1q>dCO4Vy6rlMW_%M2i82Lk}b+IHlytF{BJ;$ax+z#6wTeJ4v`V>RdBW$u4 zKt$?qp8eH>7vJ*YtIxmu(u>c%{NiiB`{n0e`0~N?cRu&xOV7Rh%F8dl`0`6HyztV? zFFgO!i!Z(Mg8z8&m6yK!o4@|jOTY0OFTM2Ki$3w{YX>j<@bfSD`4?aN?U$eX&F7zg z@%i6*>9wys|LVbu-~HTIUVY`cm%shuTfXv}&%gY_Z@m0Fe&B@{UwGl*rSE&;6@T$7 z&%gNGt1tgo&%N;4i(h%=B|rJ%m!JRb-|~^ye(Tj2!;il5>MO7L#V@|_O85h>yz<)b zzVyOZe(T`HxBbrZ&p-FdYhQlVzk2b-mtOm=ul(lA2QPm3HP`Xl^Z$4<*h;3k>_@V1 zF|%Nu=o%)2{4eliAn6$XaynBSwl;Y26<3T-isrr%;Wy8s)?^`?oeO4ZOH_HV{H~`` z<0$}xQ;=94*D2SN1HQtkN^jO1bJ7Z+Gi1h z3Sx`3$O?t1lE?}V;tZ0Vid>>&s$P(>#(`2yT_7s)SF){Cng_MFdjlN$A~^eLp&!Ld zvZYI%-a+HdSoXv5nafX|UtVeKU%qPhS9l zKYiu$-sNX5U4Hh$`7eF(^3_Xz^8Egli)SxCef9ItTz>Z1Z(Uhlee;#e7cN}h+dupC z;_A~+?_d0dFI>8^|LnQTzw)IkSDv~0>@#2Z;^iyPUVi4;pL^O@d-j>Dm!Eq2bI*SM z=f3#VQ(ruL<#YS{zjFS<&pq{pFFfk znEn#e10#k{TGKrygv9i<(0!sQ#4s;Pu=?vz} zgzuOMq(Co7w&Yu)1kGbT*iYOn?kX1ev1(OYWg4KN!IoEvnRFw|BU&3&u;m6Lu1aC7 zQ%n{!r`lqv;-#^TTx6`w-zh>LY%cUi(gPsp%|fu#;LN3~9C64(aEYqt@|l4YybxyB z3Gkz`d(qEdGqDQn>UIjFfnu5V+`yB|fvFB?mk7#vP$p8R8QzBU1@bW+M>AhcYyTVU1ugm3b-K zIz7`Bke~4yu@z$dlIUN%5=DHoLRC;_fRQQhMIr3fINd46D3QArhO?^DPp@s`abcrdKgiJ7ZK<~!+i4Wuv4a?iLcO@pOiDmUld z#u)KH)tSq(gXk=#WRjJwiP9GOQWd;>y@tKv<6Q36a)WAw)uH~e0JGgz#FIE38FO}8 zay16*HW@5eITN6BCesJmx5Sf!(A&C^MdO;*fn=KxfClKn*gRp`25@Sih-JG$c2G(3 z6f+!v?rC|Yiv~!fUR>rkgL|vdiz7P2jzHQBXQUuuS2bVr>{2T0aD2k;RodY~M3PDH zgz?+L#zFjsM?`xnN7x~rg((REQEkfZVC70H!5~^OIcH$S#xrMX_ zpX#AL;^S2$#Yru6nue5;?o7Jz@U8Q0Dg_>%?ZxOu348mEc4X2fhUL`7X`0oAG^t6a zJ}jgs6UZ#rSP}K5gWhL0K~8d}N{Mh{W?*^lE+cWoKJ>}X+|6T2E6=l4;vDXxNG2di zY)}nGYK0t$G@c7|7dp?ZJ+AW3EV8vMO&e&|iOi4R%-hJUA8cotY%n~qK?H}b4Woh} z{bp~>Hga{{iz4rc&nxc zrUfmYGP$m>OC53_^6jpx6wIkA-MK=%kwr=6X%kNyUNjS~#BdKI)f<@4rZKP-1%|v0 zOo@6t(P~K*W{p@TgCdWrVsV>;6q{DR*VfOn&GS1wpbfYS;3X4`sYMDTODnQGb?VeZ z$@Fks8~LjIj*P*AwH9@UtRAa~{6kLZtQn|~Aq93Y-Ql><8*Wu8ByYlDA$9W|vTd)wwf?d!Xwmah*)~yOvyZ~S+ONZ63p+g@-eqcErB=QOLrf(fH}lN!+&sMb>$v<&_m&p zu8mqblCg5~Ap53VVJ&@7`e@uvX>l`MH;1U9=Ym!;6!+$XpiI;6T3N6wRMHaMtkvXg zw=EAc@D>Xc0Ay`im+EvEj;K+(!XzIOO-7YLy^rx&t|o$uX1Ed$ph-=Es#cBoE=%=} zFSPP$4Kru9AU-wivq`jg`D+!`31#2G^i~K6r4Ns+a7cI+%t>nXQ-fx(h|DJrvfmXI zHc~|;EJxEqlwMCX=7Yhc&&Y}UHsi%|Wd!OQRO?$KR!a5-wBr1{Mt=(fWO&)?cT7t_ zxi>w_Y!q?`+3_1d7Sna>nNQKMUmulf)7F^vOE#mpwih6QKzghcW=vkc){I{g`g1oJ zjYfpXXk#E{JFHW)+8R33h-`#Oi8(Uy&J-!ZmC#@&!qB0htsF^H-h05g)7>J4fbs_; z^#pDPRdHZ_v&4d{gpD)=Um<*J5_E9jkM?{{661U%k7-3t(oA_!s3;Y2Sc8{|oikjC zX@M)LECkC6(IDvHaTG|9T55n78)8s;y_Ao5L$gtIjlq^LrdsGnh{_Fu2A+bwMo23! z-{AQiy3vlT=IfP2g5kY#qBg~rXBNc0!n*{LA0Cw7$(Bc!9jyye0u@0p8H5E@r(kf?Td>r z&V!5~Mf{|=pqcZyPbS}vWFKnquICgS#(dapA<6{f)6EHl!0}KC#Oz<-cd3$Gx7A&< zwa0RdLs21)SY8~ky8TdR&`(!mu(LCfeyQ1kbpQbxIU@xVCapmVh7fj>?D^)k}YP|x*WLAu%6FVry?9J*LwO`T_2k94O zc=WD$I@Fmt2YF!N{*C-;+qFtepBKc*rCwgG+3fv*ufhQ}R|P`L5d)=9MzEI z3I^6JbDRq%95q+cbR~QT2i$zT_pUkY*}-m&)Upxk8hN}O`;xj;X%jY$z(4oQ1G|z& zLv^WPOLP>3*iJUYl}y4*b**^-j&^OQsdx&U=CB=#a*Lc-gEXZso;>-xG4@-9nDR6TO z5=6Vx9FbCq&8<2U{utt|3Mf}?^Qey;|yk?1= zD`hGZzQTsCwjWb_CmP!nL8ZYG&A?twtA&xigVQo;f4~7sXBef|x+9i}b%YuZGA~ft z2JC%|a8^MhL z>h>dEbUu~gs3YY{&((CpoY<~@zvM= z&2Ohs=!kc3xk6 zHIx0vU;9c%@5XdE%9MDOaSgWlDd&QJV(2NRW9sW#WiT#n+lL9{mD*9ND2vZqlLsL& zRu+@KR%@^6Ow?|cLR3#_rdZfo9Kz(=EG?N0*`$K{A?YD8&M&tojadDlwXB>FjyXe2 z(v)%l#$RK5on7=pKp<#~ZG;!VmFVW?GSs~eRwO4&fxV1*27_!RC(-mnEalYdHdzMy z=r&1-5mBCzr%Fy$O0XVooIQOoEbkgQNVurvaw|aD>z2!TB~Q-=oJe~?QXvd3RUUKX zOrIKw)s_0Hbi-Zegx%EFF@dtLFkH^v0DXSo`W`FSZS~1hpN$`sZmGjv72$t$uzb^{ za{CVtmf!ig!p=9A-?^9h+ixxZ{=XZRTEDUUvwUT_JU?HnyuSR(@Yj6u*ISKWKUm)K zYMj$aZ{zFVT7K7GG{=qK_{K8!tA6y^mVf!(zfLInmF42kilskXzF@OPS&|H5R2{U5 zY!e$ZX%<_Xjd-GFXAh-cIOJ6iVHDHMW;NV`o#hSzGR<(Kbbghj0<51c5pag@zS*NnFv6mbcxzv2Ufu!3hMW*=DLZjAhBVI|go2Rms zgvz^JgoamoGgS*vz$rJ!{AZZa7zOmD#i!lLA2KKP#Bmp*ISm9Gen~DwAt7p;F{|KS zW5Zr>!PgY&q6mw&U2zjMC)i{T>p>DU(c3bTKxsr+F0bDDOUwVfJo~QC{?*_9-^;ys{A8w{%Pp6m zednr=mVET98|xyFk8hm)^W_&e*5CgV|Htw#m;cj`eXRV-@&|tJ9Y6Nx%U^is`*TL@ zCHs}V%gu(?*4xa>H3g$8gAEc;mNmmlLn%~(>C(x2D3S!*)D_e!mZ9K@x*XN8Oyq=z z6d-#wLQ%dfW&q{CEe@y}@EAu$t~DJhu=s407YdemBAKdm_UQkk7Skh$wt$JjqLwVM zV@|I&bL-`lWLp`~#5#5e4HM=ZjH^%D)0&r34oW6?TnRZdDn>c^Id1a7wj(b9rVZ~x`3vxa72g}bbUyYqxzP4PRjJ-b@U%UEuA3YR4`i{?!+ke;vEK^!oCro{7DExy-~qpco8$KTwC(Rz=$El0pT`&8=}bajE&t z$u(`=D0fhKOx23xR4fnYy*eL7=bU0zI9;xqSz z?QjmvagV+r;UJBTn~jDSnwt%1DXukhb}VCj4AJPx#9FC(DwA7vbompdCi`F$MrD{L zPPR=Tzd-{~n^J{BFV|6~g|u=$s*VQCm~06h7`76smi^YC_`R_;5U;gFKeEOG{e;JFdKI4fT`?_a*Y56Z> zvGS$m^4+n&`KznT--^Al{L*sy{@71vQkh>{{$H`!&w83C@A&%ipN-D`;uk*oiOV zV_|jsJh1MX6&vaxoY=6IYm_W6ofVj4(vR}HXRy!M^~zFGF#=8qUd+-EX6orsghH>; z6y1V!uE~^&$XD2pQzX-v4EucwnEJ#>&HE1brEdWNbeX7>S9x9}a`VX($x=VFAv-t? z=c{iuDnDN8$$(SiXj&bd=Bygecnl1#CJ5S(?9Sk{Bg zAwn8jbxBycsDnDps9`)zCwI?Bl4=~q2(Iv<6;OXO8uo*Eb*IoDjEo{Y*=q<#bv!9* z>?)zkr!^jIO=fe%Rrb14&WdRvLR!S)&7AZHjz9d-hwneJ^5_Hif8@RsC-1xei_79@ z`Nx0#7Z1F;ycm1)a`{W6`Tq1>@BV}3e(ZZ6`P_1Ot4;R1Vy`bR#NPJkmpti{%U`&A zxqNlGzP0?HW3dmPc;Nnju{*0laD_5;PLxUJbL^ik3IVE!}s0u(1%VueDaY8?|bN>2Oqfi_yhNT4GId+s}N&wckj4KlsR_58djvPMnpO)>|_a6GHy?M0!i*LqmdE4QamY<8g>Cta2zw75?XP5u$GIsxS z%YPh;-G2Mg+ipF2^zh+3?zru}hmRb-(+}T%?2h-}b-Vw6`>`X3j@)+p?YAC%|KU4t zJ9^ANJaX*zJB}Q={n*iiW8eSoTaVp-=dq)QkNMoeZ9nwh!-sD@a_H70w;u8R?>Ktf zZ3jnw?C9<9f8YC#9=i3tNA5ay_`SCsI(p3SKX&xayN)jIxYHkfkH38E@a;$MJa+8% zyN(_?dgR!h#}4}vhYue*e8g|Q_0ZAV-gEd+_|=DRKjM4db@ZrD-~PVakKJ|Wu|tOs z-*)J>!?)db`_Vi6+e5ecz>z!eau1LCdqYbyKm)J-5M_B(6RR)dEeo1AxDqh za>t#%{2jNulH;!Aj`!UjuH@*UL$@9BH4h&<R0)zhu(YWj-!X( zpA+Dz0W_5Xt254-JW&#{=?rs^1^jNL}g_|$Tlj&1yl@}KfU=rbQF;?3gPY=%g(Dsx-0iSONWj)Y37fgrF zyo>3?*~P`Z{%mW&Ic9e4I>v$M!kXl%3s=57SO;A=cd+-s{+EUqFLBAll;1wRwX-$Z z+TS0x$J;JsXR>>FJegm;vh8OsE;x2k#7u3G`xnm)X4fC(4WzZzA&nl5nzeW_S|jo3 zEMI@O2X)?#sY?C%Z!Ev#sn367dE5W;4`RP#QT@p8E|-7sN6Y13y(9K7mLH1!;qni{ zQ%%M05S?`O8_PHSo{xQV`TbwltcC~r_;UG=4r1R^^g{gp@(bS)`v>1#j=n;iDZ~j5 zX55ewI~45I0dHji?^>hQL<(^P0!YKJ!%z}54Nt1pHPvB!7AzR~u1V6+Hx`pgVT9tG zvV3NYrp-Be+JUaAPgRPw`l2tAPJRR?+M>yNx`&)Zccrx~L*%nPtEh|-`hJq6{ zit7$D!?*ERdL5fN=4309fkQNXhc2%sNx@|*o>+DEB#Y<8ZS~a4X||NvjX)a+o`jvv z?x0awU$3=Cqe(N9y6MT)CW|59P?`xFZus3(%U6H+d;Y`n*4Q-ErT^5EYy9fBmf!#H ze(n7+Yi&37?#9=?y?px{Termi=HGo#M^cShvLA}wogc-2?OV(5{)=C`BNqFA)ihsg zmDIF99s9!a>vzU}@SUFF2mj;p?03W-|K>9B`3|HCu&$uyCS=GCn$r@(GV`r=zKHgx z2rw4OhO|bNsWKZ#XMo6@qB^M{DpbbZYP`~xP``mYYvPde9OD7^Wz6;?D%oIZnngTm z)|1Tv0`Yj*z=@$CYxN-WR(Xd{gX! zS^b-_!QBC&HgJny%VaPnOeJgGV2)t$6NdF6&9Yw0Oh&oTD~d79g-N8@pq{HbA*CM5 zKr58jPUVZMYw?gWDIGAbtq#9W!x9;SSwLf17R2Y{NDRk3Q<1vzE zSNu5LOn+2hxKZjSB$|20!STj?h6z>vriFB$G`~BnPfasSU#;Avv0aF2FkfUyrP4Rn zii_r~N*t*qPL(G@mBo^pMk<{RC-a5W)}jjKZmeh@B^VIFvIoFhM#9PT#`^bWYNJwH zeIm|>Y(S^TLS9gxN#GFXCdRdJX_Tmjn3VPnueuvg&TJ;QainCXHrd-(TBG&Y2gjwi z#MTQR4v*)MC)c_6Te0u|kq3ME#+zdgJdtR==i9NjzjL+GxaEhdle=P%ls*-UtyMdz zM*hBU#lHK8?-7}Ki--4)QR_3YSSorTb_>9)dMXzC^eu0SePa6w5ATyUDdVkDYsxpl zB){EB77Lj*+aS7U3rp6j!_>fKfEzbj#rZZKMl+;Xq(l9D;AgMJ&dX*HEy%H z9A<5Q-foOmk@5hdMYO42sX5PQ8igHpU-%4BGPKDRFs6-$-KfT1|7Z4%jWx@Y-V3kt zcfhLsVFz|mOiRW}BoigZ7Fo2>thmd37*JR1xdi&dhD_UN!>b_viYHOEevEd%HD0e( z6M+EW5WD8@C9E+Ao@L??5+s8mz^HXld7>UITuGpCYe8LsnG+_B%wh0gZ|p-GjUGlr z4S%iPEp&HvfrTxE-2@j&08TDhsHB{fMiA9t;vp-y-&rYSwzk^+0Wv9Z_n?1G2^rkV z{N~KMBYa|#d|Fb~cD4+E zDhkOk{$H=Ri;31~r?pWO6e)MIE@W)rwd*Clj~O|_CQU8DR2uRegP%Yz!?Wq~Ixuv* zHY^@FD2OLbV2#k2R7C4*QIv4ha{flu>$L~{Y(>fuvRS{7ZCDY_-F)7;l=El6^w40m zGt;D?6B;)PpcZmIt3~V}!!&1O>!96p$fZ)*^{Aael&ENW4_)=pK5sSV-2z&(D^LBV3g>z4WLuoUVif6bhqzrT>hfO1xA zxtt+pwisW-4!{J1Y7=pH$D_!20-Dh38GspmG`90=9z|4@QlHC4Q7SKVE-MLQJ>Gp?XV&O^&Xu$J)*6Q|Mcfp%ms7-@|OQ)4>pBdu?Fl-QsRLCbjT^^k2WXmB? z_@;&eW?IclI4Fr#mv3#uha>?90(PHHH*1NFL2o`Zewh!XGS$YL7j^-Sb}*w=mRXH_ zg@(X8-JS*yy`rh3jhw-+S$jEa9~7!m6Cz@Z57E+V+0klgJDm~{n7uU$B#vE*+-83U z@8g9KC_F{X0uLY^%$cKu>N>(FZ6J_L_RX9X1%55q3bmsj7<#7cuq(+~PD)dev=L}7 z_>$s8=E4BiS~DP0tCmik>a{1R(fIn|3-L-?Y-ZwuXByekdb%6}|GJnn2sqeK-WP*q zs}lGcW!ji`zD9e55PFR-sU%)YkJih(a5-ErdGn3>Ze!S~yH)BZTS*v$)!S(aRp$Q~ z4M9Z(HI5wYR1>Kg$AAL1sN6Svlc>k!OLK?P~>tfVwZ4Tg?g_*c>*yLY1ZH&BwFN zdO@^kTh?gE)*;Elap~3iPthHfGD2t?&gOPIol}yqY>_LL#}yLd7Z`P`rT(ez)N9AZL?yABzJIhl`k1_TQ-FRR7wureBl5fgu(K!VY3xVIjt z3PMJq*v||*vqEBRwcLr9;$~D4 z4^%qbcAOWPc^ez` zdcUx_N^)00e}#H34H3jj3gnDo?V$R795;G1$Tk<76=oa3>|cR`1p*asa$yPazCG1> zrMEo^W+;;;P5|QP({_J**1u_8QUD;CqS&be%+|#Y_f6KqlEK(S z`ps3?vu{npE8XZ#CWFFSpcLDJ6Qu5lR0xNLM`o7;6yHp$lB{$y7E3uHBuPTb+VSi`s#L&d&}F$LkiBmhv&*crezLW}WTII0{qTX) zQySY&J)JaYD$BeE_=+HN`x^COjd?qnp4`DEULUjIE}>Ci?*Pml7cOK{FN`~Urx7U# zqmrLlZ0Jk`>aG`)7|wY!C2PkfI$+6`NtQRN9U)nzk}JvQgB8+1es8nvRmQiV`wUl7 z$Z-UZK%m}w2P7Vc#-tMQy9#YxBP-&Z3=YX!EA~8JmKw^qFW%Z4jC* zqc>14QP548&HNRhgK1|nuL`8AjkjLORkUQ$waG20N>O9ptqseg4%C&~0nG!i9B3K!6Vf+_#T6I7$00!!}lkrpvxiQJ3 z+3?n@h}hc8mnK}(DtrBW9_c%k%CB=zEcL33h9?w->(G#Sjqpr%j4@DcO9`R}38>gT zvw!7sJO!o8CW{8RQIsiTDq`tGZVRO zB?TGRr*(*c4L!5WZbG@!@uaD9+yFrW3szkyOiNwYw_*5cTx6Psm{E5SQg2V$)Kt!N zGWi62jN7GRz6lI}~thOK)r?H7l`lI!{*gsidW^i-^yyX}}IR7KAWp;)Y zhJuVYkdgQh85^Rh+K@U%GQ2^$qiK84=!gz!^hd$QtZl6|8-V$y1iG>#pLk-UVCrEeF;u&G>CF6Wf~D%bm#GZ5fE&X;l8qN@H0W&Z&(OS5nUYG9i+&L4>AuW{oA@hO?{sq< zA7`yZzBAXWpr_!0-n1@@8;Mg-oLbFBX~@=mmLw4B6jZ2@K{)k!rPx#S)jG3Icfdtd z+0Y)HZWWrzRJpz|)>dX>PmozTG0Meay4IseiQ7#x2?Y%L6;5M_owGDteuSQt(z~kC z%f$uw2xl!@vAqY=W@IA2Lwn1LHu9`^KH13_CHg%<$=6lyb7$*DNG_Hh*F(Su;L2{B z2$8ikExft4f(U8zK?)Mn4P-yR7kcBI#Kcxm=pR}4!Hnw7MSrJ}hSZhoTZ3xaA4xde zf}(+!10BLdL~RNuBa`6hrg7wcV+RQ)?umFNGGxrUoLojt8z%Bm9-*kj@)mE<@$bP{ zJI!Q>qD-MQW|W{ZbquRj%lhH5+?DDI?s+yZ+79rbGL}ajB4>xgQ1oXaEoF1Gb^dgF z(jQDZwa(^rYugFlF6aC7k#+Jrhu-yPS-KAEu&TEe782F9Y-pVjMn^3-G0SxcnNoY^ zEbR&oZk7fEEv9-P&MQQToomcSXqTq8fEnnR%0>opFP$ppGmg4UNU8-=bV>*1A8ybD zMjM8rkq4P5df(Gosu+rpe0r6nfn6*xho_n*UOsz$BW>jdR4Ux^z8N{pCXgt4)6lJY zj_75;I!gK8h>S>;GOP}Jxefg@>TQUpF(1Ux3$}VJFH3-%gW3;*Nl9et5x}qMHHt4* z`BP^Neo4}@+N4}6lt1aD=``oIArd4N3JVJqN5)`9XIP-TrHaK314^8;i)gi(f>0zhw--FtgRr>>}L1#oyB-Cs%@+{Gl+q&EzhD_Wl|l7xIYKJ65fJxze0{q4;89K zuTNnzDe1Mmua5%r+O>^T9&gQ-YAIOoX!HS{&2LRsv$&f|M{r2Xm0-0gE_2Bg6j=M0 zUGuUv6A?AlLG;tS+qfIEl44NI*}Bk~RP))@nwJ^hFA(_rh^s-^$mno|fKQ!Ptra#6 zxJO{Xc1sDKa=g|{bf}@MC6-v!1~d?C1-<3cKO|pjdcv?7gR-g9nGF^(aXcqbIHlPpUL+*8H6}C+oy-Unq5y2=v>p0VJjn= zh``PjEU z$W$;x?V7z79pQvp+Xh?{qSC5&`Mm`8i^Doo?guSJLcMcJI$SQ_#Ak#?L);jf#Ipgg z2~Pho=2j!5Wp<~vRJUcbo6LrJ>B#!bMOV#1aaJy`X45Kmb&8_^+{F$&Phg)Xx$#Cp z4Im*j*u!kpS|u^ba@I|xv-OQiZZ$-9%fuabat)~{MXn11s<9*Cgrp{#?G1F}Vm#im z`7sV3Yb7?jq$q4e<*%08-_qt=51?`3-dIvX| zHJJ>8;+hMyNjNVpR;{MYVC7~IDF=(0FurjYHnLHwQA?*=8-;YHjvSayBe3W4-xrwl zCRO!WK7CO8v0*DHoV)Cw^igPnxMWdnGDNFCsDD;M6hfe_#*GVF6J|C}FL*$`HC`k5 zDMfgw>SnhA#mt6g6oE?Hh-fXsTdfG~Rq!wMg;rS5tjz?MtFGe`lT1th)opNuN=q8O&;D3rCW zA=bG(Kqe>3+$?&ttx-`wqA+NcCmtnCY6T<-_YIM`cFf)usySszO}*=UwzW0%`P7gw zdiOav?KHZCmCOjTbO9_n2eli#)ztNMxjFHmItuK1Cbv2210ZmmV1gyZe;FvjhL_VQ zxTw4lrU3bP^|W#u^VxFGQJbPfix={LTq2AH!;6l$ulhVF{e)O{T<;vTj|FrdG1nXJ zOu{j%3TFR)H$Q7)Pz%GpZ~J*K?i8mth)8-ufGT|)R`y(e7YY%#Hq0EMC48O~p`k1) zu50whfsL)lfY>Ap7|Qu}CXV{5mSl}+TaG+wm53n`RlF%)x3sR9;%oPR(deb zr&&cwL-MD67;bOFRwa5#ODeJeiKwg8F>0cU&7SBYukFlX;kWB+xa<-L@S3GN0LI;e zyu+fKF$8VYyndC!fFKx(jD|U43n%zn^WmvUCGf>H7X$@b&}|x>z%b@!mMrk3i(0u2 z`NbwFh-Sz?QOlNF33?t<^zLA1-b&pFez^h1_Qw<+ZdNl|D=sEYDuO|~%Fq|D3&WpO zqCXsU5HZDJmhnVOd6Z7V&suvncj}n_sDZixkaDtVG8wspJseHuEhVcb7xZPhb!n71 zj^@IAdJGPu%Gx?_e7KT(gXkY13bR^2A@Wvh&3MroD{hWigI9toO#xnZd#EOCR?npUm{t0`fDr1J27x=X+q;8rQ<8Dr32yZ(McnnO8vK&6F z@;%B~<59UWY#D0i6Xs}QS0emmCC+RyXrykAqMWq5{mG;`x`63f>KDC6{cb?5+a1zQ zR9*w@PG@J3FU{L=)hL`e#~wnH($({ZJD)b9qC%1N42*WXfbL2m(5=k*0x!#0U>K4>W1 zfZE!7&18mz884ajSG8t=WSS#5W&n`&!3tfL3ys=}brwd9l)7$mJ&)*_T$Os>G>RNV zjcqEX^}?$6)BvStpJwhyEtt#*SbB16Y4oysFYNvRPCT~mzKIvGc5>0I**oH zC$-7)5<%9Qfg%K%d<9B_t7g9v7J;9914hQ2(E z2_XsX$&eQ#Fcog#R4isWLK$#+Tap%UUCZz07JJF4;y}Byoq%oV8NvVu>9;{BDP@7U zc5AO)$b;*Wiww@8795srnox-nQ91$F&%zS}=EeQZq2SrrYjH;y4=_AceF00g1Ogt6 ziqhrsgu=52+Xv1C&#SIvm#{C|#?`<{Q0PomT2FSjGIZB|n}dk>RahVzq*ARR|EQYf zdsXjXxm4CO!US_}UNupi=u1=0^-HsOxj)Qvor^Htg+g$#?{*iIZxX9-f(oWyNh8jB zwlJG?cA9&e-nU$)FNNOwC^&1vpssJj;-fsWii~6Hoy{<^Y!_w#N4K=wg?Hu+85B^s zo8u{ITcM6dZJ?TsOKpm;nSZDW3Z|)K#sH9V+2G}!X(&jmFhT@py%1ROwDPshI)n|@ z{O#uV0A1!=`JBqf(b#Bou~^#!w>k7H{F*EMZax(4H3le|Q8!&Kor+sbaSOCx-UUdi z8HOE{0kag(BGe2{n_^=;A}XVMx~tF#u6x{RX3Q42F|-L>4ZPCG_CVceIE_*p{2$G* zphO4Jr)o)rrhw@b>dqmh9@0t?%Yu|x)@IP;R7_F5l}4k@d3CkX)eB)qg+M$;>{p|z7LXlYmg=Es0ElJn`y!0B0K@$jcL2b7x5cd66JF>Gj zbcU+7LFtr3%!X`gmrvIx>aS9>SgZ!9KzC)VW-<~P_GWV(rAB?EMlw}O(~hO{;Dd5% z4FMr6R&}F9Ij9)+NN9+g?d_peO8?B$QTg0l)P|=m8P(Fj?#{N|9c8VV%y)ss0tBnM zR$rYQw)%$s2P|S+Qbgzb1@`nRFJCC^3uih?7^eavqS@`RkG~~M1$Ir)`J#&Sk7h>CZ5Uljz-6;YF1LJ(su&wjeo^v z4P~ow<=NP{;Q)H0^s%J?Q~J>{HgA2OO6>x)8a z)p9MRh`81Jo&bsk9-7FtDn?J>H>u%+n>cKSCKKi!j9_e>+9IKD#om@uscRMSn7D-0q5iW33~J*!FLtK zv}ZtLMUD&tlO^b(t-|q-A>yg)lC%BoV9O!{KyTR1wR0Oz<4$oSR{_e}PQ%Asyb6S* z1TtlC)G!Fycrv;{%)0R`RVG0~no!0w%Ao&X^08C2M-sL^xt^#<=4#`u10_f0b#pC$CUaMC4*|l^|?@bP2 zWfl7Q4Xr(+beX|J8YluXjfc040UCa&xuFq3!DdIlR!8xp^H#)LgPLU(U~@eg47m$~ z5t>8|YPiU0iDFG$)FJ{ z9F*Q`h9@jeO0y%@4WYcl4gskQyUFszZ)>34$;UH;SBf|Td7%WLSlOZJ3|Eq73giZw zdHS}>F=uKs&S2d+$&P}QE!ocBbY7}AGzxfL79G^LxDn4cIYfk6dHzX83!%m^#52g$ zZ3HHSd>SVR8+4sqNf0e2riydKn67FYu2|dv=GL&dq2&**UQ!fv;VcC*74qhewn3OQ zu9dno-7K{CIxrJ`KUW2KJbApc6qPBk2GVJR_Ciu=iAI`e);5L{Et}=d4>hB?4hZ;3*N8^^nTqv;(hph-Vbwt9Rc6S;hQ;d8&}%3L2ACvh zFikAuYT&&TGpyzy-qk@ap&ku(E5R+COHO%^Yiv6w^^?N14F$|XxDf1gptDwEoK#Oa zso6$k8V%UfSIqdFrgS~M=0Wtmz1C`fkVN#+lC*6VKysh%aMoFmPgr!0d~HgzYHsZm zDjgKkG>T)h`qz%GwU{Vne z0Lw|T5=c|yreMLFs8=`G`{dK^NK!@HO5ads)vmXf1=%2jGxOG9D;M{7a`B|<$N``D zM6QrT>(R@*IKZSr2M2)71Z>A!Un?iOy;bHj9u@u~iXD~ zXG%YWvtb4qrbf+PrUXZNXed(6>lL*|s$?gviHJ%DU7%D;cI|k@R&^~!ifc#$9+IjY>Q}9~SFVKd#L%dO>bsB(Tc1ti-SiyasBmmB#k3 zD1o7~tbPbm=MYMC25WY7>VPDBYdev@Cv#eRz&Rpc>9GfCTVzObje#fo?b1nyIAft^ z8wkW%XKk&_bOZ4qycMb%mjONs+|Sgt%P=j<25To+mAq>c{xm^rwYltkRITQ!p?)EU zHEMGI^N9ILG)@n(iy+&Wy1Ku$Y@lziVsYd>NkZ%mH#jrs-aLnXGCmuQcjhJwTq^Q| zWV*hgW{#drJy8H$oGRGS@(n2_zG$q{@fOIge_m_?r4F96!i} zVZ$Z@ZeG36$IJ_Lu;x-l?KfhJE{%o6+4|gCOX%MbWgDZgIHJ?YGD_SRHJ8;x!e)ZRn7nGc4!6oUv}{nX^w&0AED(6l?^9=D@b2fj{ht%O|imG=^cQA!-vbs9c#EoRI6-e1>mxHhPH6qImr&ptTs?gZfV! zxF`o^>B=I!Fsc5+orQpz*xGR9ENapyU6m$)H3oJ>DZND1h`AdKppxg4k$ zlB-l{hj=%;j8naw3qW(Ihxn~ECZ)w@2#U-Hs#nUWM{ks^RfntG7>K=l1H=9400~EZ z1eo>qvDgCga(xWB#b%_wNV_Zpy%vn-$P1t_P_fn+r|WZ!u-tlg+rZYB zp$STYKzQh-R$nK%GDcgOfG)+DN3C2O57Lt@L6%L~VM-NAZFn1{oH?Lvk8OlkycVtZ`<3K&eS@P-qmpZ| ztP9<8%W>`D6G#;a!CM{9MLivQX*{@YtLD59-c*aNxHk@Y3_hjJZ`MvZPKH6U9w@P} zW3qq>&q$^QcrJ6GIP(C*T7?~m3jPe?H-4WF=*GSFQLj`mbJXiAc6{?|~85G=2a~lZDt}fObX-`ikJ^2HO$R_Px1uqcu1? z>CWpql1xswMLQRQE>oGo#3L(5zyJ>xQ6s+TRibKBlW1&$_ev=djW&uC4K%u#4$L{o zAAd{V*6w16aclAl1!B#$1KmtFi;CV1Xqgdoxw!yw5uXJ2yfC3lw>L~C%=H5A53XBJ z*~Qaim9*d7^iE3#AWz38c2gk8tj#o((cbcl!pe$j%>s#Pa z@$9jTirhqWSV|BhNH1i2Z&d2cDZg$$F9(}baWZ;TNz)&tQNl=kuORD7S!vU>=yN~3q zT<3&F+p&PThoOU}pA@8%uMWw7%y-&tn<$cOy4QzPNI;fJ5nS=ZP$q6atBe7&o8=LqOBD$E$8sOAu{Ztnr9St=)H#?e3z~nnV-^rh$$( z%RU_1DSs($CpQ5Q1po-dRrZ$XJm5#RxKS@mH}y540Il=}rM9XhRN!0(05ndIR3ttg znMj%-$q*bS+3xG_d&YZOWr_6x+g&ZT8##Q)J*9EZPt!>|=E!p*-9Y9gd;?RC5VFLm2F*U1p&tifAj@Lk^9h&xtDzbISboB%?g3l|7yMqCD;6 zyz<-dAQS<>G?gn*Vcl#hn*oV{Tb-iizA_V@<3+xP6gWN8D0=Wf-F0Qe7st%b6}8*_ zV0Q;cw2|@_8BTQ#CSg_Peu3F2)S-}-Cs_(jXx-Ffh4nck2RfptX|=|Zl9@M!(H7Lu zrlz+HW_=Y_Z2_jGi?unaNK9>7^}T6v)NkHY`xGRh^}Ex>U~eLci-E1n=}+4i#^RnD zL-Y!-VRLwC7+g;knI%#xs8sN}LD+I=V$&3`%)zK^_qOej`dhb?+hqhqv1e*t9n%1Z zaNa@lFr6`V2Wt03$p#DQg*toty!iTGw~U4&0>)JP)#&ut79}4;fJ|erR|ND@z^X=q z@Ew`s?vp;UPHuT>{HSj!@ zg2}Q~8vJ9sGCi{fwEbdwXKYD3wA_QzUN_GHE4=1byTy-HGwc^$Qyj31Z*|Pmbg?X?2Up~uX2Y;nGUW~YSp|sEDq+#QcxB)i5eYlCg zRPHTy!+=^VU@wb;ZBezGsRKov0-a4^vSD;bt{gQxPeuuo54t9MlWvY;*M&Jr?f8Vj z1rS#Xya~!`HWq{*#a1307uBzM4X zMzxOP8fQN}2ld>jTVz3*%_Vr|pl5{L)_kxiz^YeYqs_wGQpYBXA#6;ajB@FDAJH;( zARypagSd2^*2^sgxAq4n{z1zm#DLUJ{y< z3ydu&HJw?xIB*uI&J_{yM){Oy(+}vZnjb`2XR3G8x-`W%s2$FjNtwZqwstoIZGzQ| z4w;RQH@sBrZ*A`M2Fe?rY6x)Zi;}&ymzy??IL@Fc5i6JYCT+a^_} zndKd)6pGX_8|hk$M`W4oqF!FuVf|Cgiz<>k2qCoPn?VNJl@q2nD(5nKx`sukiR6U6 zfz+H~lT!icY4p@S%ml0<-Oq%yJcqB9mb{mVfsGrFpo zc}a7zBSLO$Uute0v*X89V;n%c0bsaZUe_lBly5fPu5bhYVDLAsB9U2Kh+b2Nw6k7$+G^wTcDF%w#=T7vGw$SWC#do@Ye?O%B9Y!RIgIa%Z#Kz7f6 zcs^3pl@R<%?l zJ$Ce#(;CL~!frb6eOlZ0g^%q+mIO!s;%0{?6Ap)PU=*%^1DHYb%6D$wW*j7-=QnvR{ zc(rCd;Ad&xEp_v$U8(_g#kPH36-pD$j24#%UZv|0?RMsKcGfdn_zkGwC$5)1_2z}m zz6w==+Z@UX+gwb>Cd|Eq&O5?XMGs>u!I1?v^oONSHkxbYsfBq^`d;qvSgpE{>OuXd ziiYzA4qb*Cj!>Kr0L~;>EZ3QY6&JZ=2=vqW;bl~Dyj2>N`_?q69SgHw%j)(O7NR+|r)^^9yue3=}ljai3=u4?( zCk`T16Y#LSkbaF&0$iW4!MCa#gMM<+m?2y{{miHf5^O>=0gWxAk78@8Q882Eoehc& zm3C<(=(Fp4rJRj}d_^0Ccv*k|Bbgw zdYXy)H>{T5ef?Rca&6`>qupoc?Xm2lZLQZ}a;+RX=p_dEE~m+KNgfa?hTbXBsIAUs z8z?*Qq~`3U9$*D z55&4mIK!*m3GhSql;Ia~D$Kdad4OV|hjTLM2gn@`RFD$q{x-}z5eh8aI$lr{>S|0H zMU!&Eg(R_S9qZRGBwkvpt>o9iELD`-Aovvw5$HkaC83RD@V3`lVNY`;+5^*Y%$$h4EfoQ7qhlF>9Syp;BwN#nW?9PT8zxK znw?Th+5$86U{hKjj>khB-oS=bpb~&&o#5;*?YxRUP`WdPuA`v6$A#ibzz8J3Pwece zbRF$hMRJ2u16C;ExS2+#vVxqFAQ|aNi+mZp` zo=XFe<7KtOo2=lu!X*Hw^6O!Sm3$}#-n^MFTu_4sEf#l-(w@vNjWMl$e%cD$j zi4Y)W-V{zwI5=Urd2m9z~4ilcz^ z$^6mgA!qaqE-*3Hc;^PqmLwsKW~-gcwWQPWPq#G-a_t(b6zj`ePKqKMb06MffC^Fnih|xd4uV zW`gW=)UM&RG#2<)AP;S|sZ|(`cxGYD0KjJq%G8*S3&9k|9JUvqb+zjD`ic&(enJJ!OKS-V}QieyGTJOs^(b>t{UDD@D zq{DoUDya<#2Nf(?&h5Yls@SwHr%Xa>I51I6Hk(;;f1^IUn1B@MpDLq1i*cE@$k+uN zZhfFJE$av@A`d?J5&#y4CX>F`^*@1Tq17wPh=+z_+yO?h3UEtLAdV zLrfqa$N*}Dyc@P^ z1YU1&U>>pZ(6Dry?OArbWrUSW?2``MSeO0lwa@?0)td)NdfxYa6I&vsP*EtF1QrVr zBmwNb03lK&0W9~P*;!l*EcTe0zVG`!-tM>i?SAj~?f30-W_EFqw5lYj$SP9>Glt}?~$e4gF)AM27p61y`!J^j4T^Zb6_-}j)M zFLeP(aCb2J)gh3rh`r?bXB%)&X9wlT2rR7$u>k!fqyRCPqe!8@$2H*Y#}{rk<6FaW zoYm?ua0061Xp>Q83sbpLMg`VIU;|kNNN$<@Y&uG{5zdrV2wvHwgn$T@0+0=7CgnfD z1yEC4G}%JRkqqvz`WgIYD!9K=ONkpC5hK?poDiOVVTKD^oP(4(3CuVgbYN5FB=KlO zxXaj1;4h3HQ@v8esHCEe4Do^7v@KkFae9GsPF2k$ieIao4dXT+RfPr`W- z<+uf`%W8YeG^HJB%D7J;pKGb!CVs_8K@S860DRDGtxtN!Vrm>0vY!_r8Sb9Xqwb& z#BHGs$Y3Mzz*=tyQ#XvphIxMqnVPL#DO6S zsuhND1CmW!#&WWtR4Ni~SK>iP0uoW7@^6T=?lPTo4fK%j#CjEJ?n<53IoM}}HtL%V>wUF$gXre;oCj7$B8PNc2H0Pz|%EigFYp2|W;vD)0@|1xB`T%S1L9 zHw?R%C$&^W0#9EoP%jJ@I4IH(jkx+ilQ!6$$c`Gg=~qMDDw*oSQ3NqWAsfo!a}Tb> z^%_YH#Tgc67{fNJmV*(G7=%I>(c-an?V#KEl8(u4KlrEPNty-cP3H>-6)?$vD#2zkiop_v|BP~KP=h~Y&arK z*ytQGpM&@uXAZ^Fm|&{UPzi(#wLwloV#bw<9X(VksA>Xj5>-){=xJ^=;W$`PX#7|K z3LL%*YJ(V4)qA`>*v$fq77C>lg=$P#5M_93!3G$+#$d1@7AY6P?OH(CP$9>HaZFRb z$_$u;r3p>V_Jw;|3u-D{6UYsad+IV{b>aTZqziIfAx?n@QqIi+eL?gw98HKAnd&C; zbw!Tow%_J*&w@u3ma^*z`P%-A2~?5(}YbiZea)_K-;if ziNHb?2tLm0G`7(Yjt0mrGZ8fDkaiOFCVFh~c*?a%fpE{7rA%yV= zf#@@sU(>wN7DM=QEX|^Tx2=D@8BY+4Wh%JGIQ&dXlA-eO-7h@_Sob4^KwRn)(_-Gy3 z0{K!X#;BBmK0Q}u#3v)LbWY(mi%HP|9}o+LauO>Zs?iFrQh@IWCxEGQxJv?~77rr6 zmGkKs7+oG0MB;~VNTiTy$w2F(TcKxQQZIf4ekV*_Ai03RQMz>?VSvUqDBa?4k6F$_ zG>4){Kyu7UL-96HWW9nyzt+kWI2;&|%t5fC-Pct3Q$J>ZM#cu-G9fKcz*GHv}eE`o9ctQ>ND{NjYGntt; zYEkIz51g@eu1KPr2kj2I7-R;6WKb7fR10oVd&WY{HHuXw&CP&zwwy%{ zRd0t2SYwDHK&UIg=4nd=z|QB9r(dYTd<`}T+a0R$m)@$i3&8=VLzb( z5OFK~O|~Etxx<+R1)9qh4g`1z=SVpjM%qcKCfef;w;WmOM0cbha)ps^bF2$StiYTo zEf}Mr`ljaT%8VUppp*EU15st3Vtv^!bu2Y%WB`Za=?>!on_2n}ysPVzrD3Nc(fz2OS${IoH3ioT8=B3DhvMLL;YXj4@gbe*(*Q3pZ~cRR&6 zVsNmkrg02$5x_53TBaQ7MkwE4d1XbKB%fI{1=Uu_{89{^%D>EBEeFUz72#FP9iUk% zrDPJ|jvv*iLNVmyB{?EPkHX2!P=+Bm{VrB2Kx#=oka9Gi2qm;wgyD4u7zhNpbsDKY zg^1j5kp3XFW6TEFKO8SAA;}^vBoi-GU?>Q!EwrXiix~`W2vvAG(t?k4#<#$C=ZTc!8z;*vn}Y&6uJn7dEBmrc!dmtsZCm>o$YR`5P{B?Pe50p zWuoE3(JU`i6%~owgOmH_Ei98H!GZrex!A%}mN@6s+#dvThL^VE;Q zox9}ud`b$2@-3-6K$2ZUb6Jf;1xmy!QlpPKu%h6xFB99$=!?X}R9)nPVyOZ(qz>Gk z=d&TrSwJo5rr6~r1SOe-AT{I1BeJtk%;ZQ+7OCPAg6k^&(pv-E|Os_1i*9Pw<%Fu?`s zbUBtt$235}dJ@-JeiO=RkZvYHsr0r;p=UIW84wRPlwoGt+`S~FiU}yrUc3};76lws zi>b|UFdV!Q1vTto!YR^gc0jWOp!1wE8F(|)enJlniy!Qe^-Q)1d%;V(PScAUYpQzR zp!xo73E%=z4%o7l>6rMi6(y25Xog#Wy8-g`6sC!U8Hxlts7Y`@^KxUL4wR;>w4smS zK9@w{3zSjra}khh2^s~>AIyhOgVbc)GvaVr8CAr9-B4)sD)@#}7%`~mN$J!DTvaCo ziARu+63+^5E^LtzQvrPfu0S^u#)K(BeFJ@gwUJ7)(m*r@D?K6P(_!pJg_E7o_VcX3 zJ|)D48y?D!R3P88^QkmA&>Tmrx}?JmM4j6?&#=H*_C1}%9rx%Cq6Wl$F@O_;hc zXDS-5<5H(V_zsc}QH+r&gV>lyIfVfeV`f%FjH7@9SRJ6gN*nJwIO07K!5w!x5zziZ zp{DZtAsQ&Rgc?`~$f)Ouj_eIVH^ht&t_8+uK&;59#H5mu2eMUqZq8hxYwH`#iLzv5 zXL9(6lI%q2PKP!Pk! z2KM`~;wsYE2bp;8dUV=xEK+NuvY7IS_BDBJZP-1!ryonuE^*;B&Kb{_<}m z%yI4D7fza7OT1Bf$7rwx-HR}EZpsi~QLa%(^>Wvq1efl1JBc#|3tBUACQFd%2LF>e zeOB#q|5mY}5>*9tDby^Hj>kjI#4saNK5*8#6ND#l1tdMw%Wq+8%qc2@Mso#+qmKFq z>nEBR_>Kgoc^-3oIuJAu1-y8;)(5dhv8rpId%yH~`CfO~Y_x_|!ib3S z%N4HgL<3<=8S>dci1|2q1_{(&u~)Ndh(f-?1t@jPeNM(^wt@4+W&YVz zf&^FW+aRH{iU3%&#u1yY$hN)bR~ z=2p2xgHb|0j=v`7fxvoz&N#Nql@4?ffZ%q7+}%K}63?|{;sH|hCG1-y3#nifSB5sl zEUhM+oy(I-P*BMshqO{{b$c7_D+Lp$VTXGZW->#25y4cVy=F)OoC?JbTun5AU`H`1 z4^$$;j3QCZTt$N}WW8`+iEILrsDoUS=gmHbq9_=iLgiZ~z8WW@WHgc3MlA_5nrc^w z-GDs!wbIMNuVji4DK-PKNSk=ARz`x+-jZ;F!cl@gDVGk#64$qJfUct;h_jnHC&Ixv zZsqv(WE;I&psiis&et0EYM=hSwIm*1F6|_O+xQ*CwhO_l=!#ny$TrexvjSzmSKfYk zhn9i`Xags3B4Q8?Wi!{pOikGCLDr4HF%t-S0e2)Z{KXjpL=uCIM3g=c7@keb8t{D- z%YfJ=X4h+F74=k@dHXhI|BwxMjD+0F8S~j7^fpx<9i!8?BEO0 z!0|=i;+BlJ+hGs{6u{!6M6evkZKswC)Z#ZQnFL)?Mb0OOfba|rNU=h|#AvY;g&Ne% zJp_`=oF!0!Wd;x1JJ;t4BEtBrb6+lBy#m+ zy4yy~23cI-^7JkE2~zK;0+r}i9T6l-*m5}1C&4mX@0TL+W@Veo@c#7jz7Za)n7sOW z^x8`|1Gu(TB3QXzPuF@1=U*2gKf6ChER+Oc1k5%=^c$B^qS(`!-jkLg=X!-uwAM)U zIp!-dHpN}54RC7GJ*kJO8(_bEksw~~jw((gGz$#~1eCC)6L*hm%1;O%A$pFVJ9?CLkEaft#U33SeA$${p zKThCawLHiI?WQh;#)yfMK&feBxK>~raW%Ah5oVG=K1Gc(wAo3>;A|9KqFSLCrP~8e z4c&#t5wK8HLIdUpwPBl-JA(hovrFnA8io{RVeD#3Xgq*I2xvGF;?bQTo^d%mq7m(( zokCs=dxYUR|BADZAPuCXYyf=(R1LV$Rn8}R8IW^478xQ0uf=a9;4^TSP{~oFBG`wx z7zt7_m0QCHtqPde#ooAb?b_xW$zX^N7OEInF{5#>naGzsh3LJ$!o5|=NmNp4%#_hP zk>Mvowd<)`7-kJ%VzfuPHkl2=u$9PJKr+rT97W+}(6kZl!u^3|B8?x=C3AgJ>MCj` zOrIYg6hU?vTrn@8EkYwE%+;%iQMck0h!`X0VHeW#5lF(a!n(;5bIl!!A|04pkQ-?2 z5XS+k33HzCRx%gd35TONfC#EiIc_&0TdBx9sE^S`moxBF8E<7%sz9=7=+X$QA~oh2 zfL^tDJBx=Ur5qC$3MjN$Vi1}^$Sb^T>G_zTiX2`sK4pgkPUd^^WYBEQLr0_6)nJ%v3!80=ngGtkPW!3iQ; z$;{5y4$i7kQJ^=fVH2WAdWg)L18<9<3#oU1N^-v^fqBTC_R7YK1oj|cY4;(Q4q zq}zq{i<>WyV|M2GQ&-+Nf9~R$GtXVzTz~n+^>gPgUw`Amsq?SAbm_HA7hZX7^YX^4 zmoL1$v2khRmCdu~Hr8K!>CAI4tS>J-#W!tSSif-L+_@LegkD)c|N8ZfOY7$^UpjZ{ z)Qe{~*Dr5uT)A*weRboNvm5IdzP)*6WT)DjY(zVMkynK0mqH`|+s^idz#T?fF zMjjDJY|f;G>Uz|X;DLv~a^Rsy5AsL6;K2h2 z?*6C)kE|YB9ejwF{L&)_5AaSNJ8N7WtM zH^u*tUDFwj7uMwM$ptKA_`TAr!rN3q8${>PuPYGSd%+Rrp27=IJl?7T-;skSw#lX8!^iM#Dg|4%|IcH zja=kf=<1E_bo2%g2kI42vsCW20IeDqMy(M>AknDy6hY8Upp=1w5rRnw2@6gx9ynBL z;q4&wX(S17W9z86yKq7vNumO4V0Brm$J91gX*#?U=%r3-raRJ9P1iJk(9_KEM0dT} zh!1nLt628X_Xjgw^_Ze|3~S`*BckRU(-Pm{dYa>tS?5gVzGoWlcsic!kL|HZcATq> zeB0>2#_q@+$*^6$Z~5-naxK&3v2j&%I`kcW^l0Mo&*%#i-(gh;Bd0&~MD(3D(0^&> z2J+a{4SPDb498XmGh?W#THhE=CZ6v(p1c?hdGr0j@Rs50wq^6U>Adn_$Yla>DFG-I zYXiD6X3Oa=L)2y=2Ip5WRYb8%vB3}SAdqyM2@-VY_{~@- zy}ccT@R$w;8BC=^eENKp5TCQPEpp$Xzdf)kOV@;pTQYtl94yBIf$a$6`^c~rD(9}h zycIyn4>7p{^o4s7@Hyu`k4v#Ml&+_OfvdnT$!M4|CMpF&sdzbpBwLUuK__x-Xb3qF zJE2AMDyZh0S|l3`+_1C92l{wos(sD0y#Z;4Q%kc(zU$e1G6RdPWohof9xKhB?r6h_ z>&{$zLgt~?HO;}$vj&boa&I}VYK_LOJsW$LYwF`Je@<@2Ghn{O{ zmN~Lbdtmx~({iSq0prnV>U`E2Pwm}BZ@$!9GuL9lbjMM5@xJa`3NK0);z$|tkFG2I zo^87RST!7TwBK`fyXHXc{=n8%&G8Ib)hxHK_!uw)lOnkR!@H;ZEMQ7ZdB*q$mm)G_ zWT=8-E$}lVJH#0Cc->Iz@UX__1bh0X5NJ#JpL|a!QH`m8x|-aGfm~N9JKIjsb!BEzT;ZI zA?voQbq&iNsg}8PV^h~K2b%4;d_+BUfGs~qnbKq*-6BPj5BEskdd=jQDAR^8UrFQS$zWlH6l{{NX zXo~ba;q-F56n*2`)vcZQ>w)6-`sK@)UVr_{>o>Nr9)uK_$oFa--zBVb)74s}k!!*h zh|<2G&%6prey0i@CJL0mO6RGFAu@=j4P^}7q~MJ+6xj)wQ6`b{Nz1d{!A2K8wLEkT z-Bfi$VaXC{YiwVL2l>n+%~+C?eET(&bLP{ zOXQ9w{&>C^o3=U_uoVZIHD=|zEneQ@;@3WuvV-grIm@{QMCe|_iL zrR3F1l;2ygz46K`uipgi!ciMBcdH7H+XOFTew(QiMgx2s4#jV7A@;nPDZ`P7#K0$+ z*#Ob9iE|Qr89JK?v_cVE3Cp!WrrypRcP+&>J}Vn`j}ud04qCcp>fA~^=7#BW1=)_K zn!TT}PWY_eFZB-qMIN8a_WeX~O#p*jloek9C zveSmDtDBl(c)o7AJ=5_<6E>JVR=Fv?$&A+>Ep(3+*m>#P_RDYVy#D&NSFc{b8Qi)WYa~M$ zO{S4IfosASC2|KewnfHJI=413&*hNG&MZkq#Vu4==cFZJARQ?a_v*j{?q-JvKz2Apyu zj!%{E9;wP?ZgDp1&Uoy4?uejW3QF6ZIK&FG15MMiWNB_qT-COQ+Q>Cco`GJ6BV2QC zaTN}p;E6G3jx(Lkb=5UTouS8L)9Vcl)8Nb=@uJ$&-Z5=UH4JyU*tdHW&W1gq^4eE5 zV?6G96HT?9o;~Q=p5n=XU4r>5Sj-gh4Hh)c*t!~{?!aaXZ+|#oRHq0z8G@w~n@}-< z>Egj=FGCzFMq2DwmaRQ(bM?e(tVmc z(PnGvn!$<6$~jz~Q+BdEV8d}h>#D+8PQ5hesW59}!zO5%VoPNclNfD!vx(YtoPlZY z?Mw*Af!-2ry}HFRF>7x!KA>!58KN^F20I?fwg4a8kp=t6N3E@r(#)H6`#iFD~e1P zUU~`EmYBel5hWtYVDyC#L;|O)N~<$?P(*^~T`X{Y8{fDD{$!m_En62Ud@pTXyBTKE z0Om?aS5f3g(lbGTVc)$`gOQj^Zf{3#3Zo=kTrqY}Zox;bsEu@0)Z3JD7!GBagE9d| zG1M-0p~i7=xXiWVC)gPlha`o>aHyyQb;toqU2nVGg@$daJsLj88tPWNJ#rmm?1&zL zHFgZH$iAVfQ&(3eyZqVi%$v@qq+~l|8XA`uVpp-wj_sNJ)y&qpeh1xQj}rGb$>dGW>z+FvSyRXG+`hj@xonT=Q_VeY zbyIh~Zw;pw*Z9bCT#cte9r~^KGIm^O@X-4fu}sNAw~v6TG6{*nJb>II%)a4ka+2ba zk=SI5bxMdvJFtPUs1Y9XAheJrnL~u*NNj<%5fDPOY2ld-dI)e7EJE^$mD|9G1zCMy zU*@DjIuHu)z)8$QYGRDg2!|7at8Z*=ap(hD2=QSTdLk)aIpRk!v61eB&M)fG1SY*et6+&M?-BKJBv^wV>7;`y70h zN=ss}rUs{^;W!puifHDoK3VIAJ)(dlZoOxX>B#vqvulp~GtX7M+gzE`x#x0fdK{?Z zspopM@k6Q@YiWMfpYn(H&@@z?&)N|eu07S%f$2;rcbu`87^tIn?5_8A-*pY2WOj3? z5vktM9DSdC=-P@mo0?-y2SwOtGjlr+bxwJo=Vqi?zBkgH>ChgT#$ZOvtB%`{7P2vn zDuGqGcrw5P%gQ6UOn@{C_7}#7NG9U=CF44aEH!+p+D`U`qT2vGz==)pGbu#Tkx=@e zVkL4;*ePbpb<$6T+8CK5Q`>AX4tx5S#n0A<4=g2~8u%^4jLV|y5UF-BZ_)DvNa$c* z8@&lQ-bE)?Bab*Ai*VTIAid{`+gXj|Y_3ISK8c!Ek7QHZL4bQ)3`A}L+!TUXgaftk zI_5$xr3dg!Fe)Utp!kh(x5M>E`8cHCFm*m>GdTse=&Q-tk~)shOW#;h6gYpvw#}K zB8%g&l%B%B4Evs|8C0r$-FGdkJMm?Ex6_wd2URuY5k>2C1n6T~6F?ZTIVpga{+Gn& z1#swFjy0hCl{IhyW4zQq&sFCb6WikHY4`g*YovB9kJC~E6;dsC!kIAGU6|@(sMs!l zVHvbSpnsIH;-LeEpu~1rx7m2e1Hn_rrF@&l$2A8%-{`wjnYM$y#pe&;Lw8*$Q->yE znC2w$jKo+0qG%@2u5RUfVa!mYn^Yt9G;|g0pD8nhye&?K7YYLm*!kbM8Nhc4!-U|Z zV{`=0C)k0pFlr#|+z^xANANy(uZ*o#ajU8>Npl1+4Mwh((5Ip1LDj&Nv?8nNn~Zr{ z{_NYowP*T zGF15+`jPQuvd3Pu-tlK(F9MeF{E=x*9G8Z#$2F__Q-7ecsi{J50iCM$WFmSXMcviy zXoJwxk*=h1|?{JEx2r>5c$xVC+8J9I81Q1yKOXfsl+D9m5DU+ zRE{&Cltfg*CKI*|WDL4;I5ET{g^=S3L3NGe5*mFf*Hpqcav7;7Ww3R5u#D|wb8W%V zD>7z{+}yg3?`OW$90J4}pt-DLog}g*8AmJ^oh+td5y^LfaWyUdyPZ6Mq_`2L@ z{uYJ`f;EaD3#W4=FQ9tup`q?zdr)z5DkB8)LrY&D-Lh<}OrOoiH1fUSbl+8n?%19! zd~jD?R}B>iO;Zf3XY^V?s%pQlDgBu&4+nY0Cp_;JL$SgTdeIn%+$JhIet@~_(GUPivO?vpMCqhxUqXF1V1cr7Ly{}-uP3xN_q&ftP zIJCt$a|_rYQKlJ%;ooVZ{Y|E%zD$m0Cj;MyniZldA%S275ce7C)}>|Zivv`XU9GCO zB~`Dbt1nD;S&3g&bU-_f#g*COGgfE2#(1B)(ba|nO2?V&jVz^NJF@B8;&NpzjiK1R z3TG#vAEgr4s-ZfH(X%On!FWA)GG>J0TI@#Eo{fCw8eM0_5Dc(yS%&Jq zZUP7cQE0k4p@H!Y_M*w5z>z=JY|Zm{Qk=2xxzpKX!I3^2yYAdkJ069RX-sdq*5u9c zF6hrt8=H!0F7##g1ac_?&cuk81iLINSq8$PnFwHJ3fb?jJ|+!ikjRC_}iEaF|n^U*o|387K9bvbt7Y!b9867qIb7E)9Q-Udr)`4V^mIH_|uhS zj3qP0H*Q3W$OJmzBG#~2=v5=-Xk;fv0C_R_Mkp4!j&%+q9atz)mUM?G#io$t_1nFI z+{X{T2VtQiQrL-{s3^sP-0jsWO0P>ZRL3N!gXl~C)?&gA0NNaRmQACtQv)&r^Xb~} z)-3~-8f8A`9#mv?2FRx{76Xdk=h_+$LG_qt^!m)T6rPD;cc9irpbi6z8tL9p#q*3Q zEA4WGPv&FJacBBHf8c}d&|T>LPFFRZo(t^L_XI|0i8H~UOo4(`a6MNY&p`tKn`kf@ zy!f-}=(gqFnoTTc=9#Rt<%}q&#Ep#X-gh*In z9Hk_j(;%Nhm5u2frSKm%sWOpl!hOo2)?qXcuLXr+A_8RzW4ts)5Az8)3n(24dK1yp zxIJK--H2CPvdV}2AS)KK5&@()LJW!O@B?s#OeI>KPOsUuTD@vQE$`$*UF2UwVg zcuuKn{b0|L^fCGuQ|l?d#Vm9*rFNR_`P`%~gGq1(CKyab-<}y`^=;3d42Io)d!T7u zUVgyw&0{lQ1mp7KO}bl9IYyK2jBN>KKLbtD0pi`aJZEnP=G;WMoV6%fo+U{h!UxVdoFmbpEfIWh$>1k6hXu$+8$6QvN|D=bkq z>vT)oxz;xH6WI93M=@!p{-_X-gE>{POfVp6290#1mQr)5^gX5Pkw|i1bNStSwGSab zxanX50rk1lY}Z@;Y_zWE1Dbq%l-@{0uk8dBv|jN@q#Q}_Y=={CT*nf7nLi7Wh%~rt zQzc!giK(UDBK^2o;<8lOnQ(T%WE<#enCYlIXq9fU(P{Q_J-hbxeIEG9%X51SU`_vE z*_x~XnEMPFxxfJ8C>a@*P|gC%%sAiZ;M;v-V_97GrZKR@!8bPK`L3h9X?5Mv(tH-^ zL1mwdGxpYEZ)$-r(2mS~c98EWfPg#=r~U;k zP-ea}wORHtPZxmQXvERY7f!CYi(T=VqhqH5OJ6- zK%M9J77nnOkTlEC!C-ta(?$3PDvNMz6GAkCFPN#Bo8*gxw0w}B0pId`sw~w&6dDz| zfgd*gXoF~7RIK1XMqzQ87KEyv4`%hWja|z`T;W(Pgm@xQNY$)#;^mF19vF2 z9a%7D1dz$9y;KkD}AOWJrxbTx8Ed`fTxH~Y^F#*EqE-x{BfT4q0oW2sGer1!~XE@$O z71dy##gS{{Dkl2OVhpJ#)oroTVKIrcOTnRUNyH;$iqpcZxsH$$VuNt^1i=`9%)mjH`K*w+UGbm#=bUCKwep0b>?}~F=PJe1dPa;vcRsXcw=B)Z#*9Xs?PT& zgWcPLKjMoI9mr6S5m-d-YkXRCaEz6D?t)9l0>R;G1MMC$J7&J`89Lf}#FZ~$`~i+|x5pYUUBdpdI5 ziAB*U7`}KDpxlGOj5J+b z#Wm3f%>;^~RZ8Ae}7;tOF--W+?FuUC-VLBjB$K^e{neB2m1 zb2b#6`##4nQ;at~idqAtoHBAuVKScjv=F{Fohcf0Anz?x9#5vbeAax}w4V;mpTW*? z&F}LhnAQkL&thig0!`>6b+HR7J{)TPL^UVOopsS(ctYNY9v=dh?DVI#$OA0f>DnPh803hPysQ4h7Dh>i;!cVtTB)}=4xmp z9#jM|aS5klTL`fzwopM(J;&0r(!;$2kytg?=;k8BQBBfus6wAqf%<^(OhAlMCQR@$ zELtY1t#&lF!urL&)c8-4&z_yBDf$k?!n!CALalprrlE+ zpg2=c_o*xg0|p*`uRj{P6R-qu_P@iVn)&y1*6I5i>;zaQno;m3y8u6`U<8TMMYsDp zjfTboGBNST-k8ow!1W%tFlDwksO~nwMqP{^!!?YB;4hm|NkGL|E6ppKT6UTxMSvegA#dS?; z$%8a`(^&t1!=32zTxC=bEN!z}U@M9bOO&#VDm{NX6f-dZ))6o^AF0RqYd)R7GoRn$ zAsCOuy*k@l%%^;{HCcE}Lev3ur|plR{lFxEwl~t5ce_J}GRkD4$&WEKet5)~@-hp-&P^b1W1f=9ZN3NChhG}vL(r9rtydZSp&4B3?k^>NbU zY8AS&Vkv<<1TdSdC5$vs8j>+Xm=4|_3>-UpBUO`NY1A8;cE3@-kKujhUL9Llwr!Vqm#cOEyS7EQ-gXAbjItnU&fhYA#fx)m*2C>lgc(G6*BS zN+F3RtkLfyyu+z^nSZRW=L#~yMt(MKG{`b?k}%5r76_@muR3E`k;c&Ed=lea-_+(a zor9P9pJp6J9rG+e8<&E0F0j;F``&bK=7Yb0&rSW^#V!}-*uMStgge&gGtgqk?QwaE zdSw8H3PA)qfeysWsXY`-NLL0yVl6cTCei2ZJ>UYWp4r5i?VAJFTH32oUX)J)3-o9E zyNukZZUrd2>p2qv{M(>G+|r6{f*9*FeiLWc=79k++BG2J5T{Iehr2oi9c+z(!xLFH<6@)ssgQ(;0<0z=?Si$L}mw%E7iq82}7(ThA^2-Cxeqq zZlJd-a=kPp8=(~|G+ERK?n}($kiC>4?BOhtPS(rYTU((_tJ^CJf1jGl?t2MC&|EPD zNkA$!+HJyS(8EN8Ia?3j2Zb(ik|KnvR*h~US3*5R9mOxiHQB%ipR=CW-T^5_=^>s` zJYc`=kH?GY7sm_!(=u&cG=&bF0)4sw(p#G@{a@!6nsVhqgj`xT-P!FqGps#Vo3V!6 zUG4}{>~yxfm~)vecExCnf!5H}2HqYU2Ug#_!2FMIT*o| zHAi7<&Pavfm(L6oHUf8|?oGu=+6817`BR!y(Mk6EV+v#jDLgn(au=Ku#x3U4%%vgp zxr|a_PeW3gb^uWk>SJCBOkG-59|s|aM+pfQZ8~63CQ~1@B0>DlQVo(Zikm`wi$xSh zOfdH#D|Up(j)39Gf@=WWlqw-YSIgnVYrz7|FFr-x0;#bLj7ysJSS$?ZpvfD`*URB{gBv{$ z9|*rP++t)#GZ3=1A`asu>ShW`H`BrRkxtsmp%_m`PkJ*7eD)yCKUFC6CBv9d z8%{XNxC^HX-_g~jeFf6`_|`t~km-VzFD8y4I>S_+`;)!-lp)rb`)VfIc~%V|P#^dJ zdlRiPu!e#}q8XkEBibL@uxnjsseMMDvMA&63px{Jo2rS00} zj(F6JuDJkUu*cl*klTl>ngav$ye-D8kQtcEI81vScP=CK;>?5?l0Z|090xNuP9+hi zC%Q!tzPeHabiv8JBY<%zl{9x`(jeDJQ=JsBhAcJtB&%2)bpb!KIIM??6fWgf8|$ES zp@X4-+zcjf#?nMM)m8a{wakjNPenIC%?w(@#s@xx zpU1>m&`<#J8FhLp2;O8dW50680>T^443v+733Tfjj|L}rpRWfiVpPT{!PuNaSN9jl zRI%#8oKaM=IBg1R9ALaGAP%lSwExATT#SMPNbPFdAfctWo{JGmS;|GZ8l#aKf{t#j z&?2_4UT!KJz9NoJ1iVUewhiG6Y_*X@yMx{zj~;v|A6QD^(ZUT|REBs?weZhG-kOYs ztHWLa%`M5rBDov7W)+EJ9MD*>9Lge$Q=|g*(YBE~)(Aw}l`vT)uy-@UJF3u;I+dhS z2Zw5KEMT*M7h@YE0b%i(FFof@Q59_aV+I<40AQ~!khuniJu*g%y@fy71=1cFyKh;; zp{z2Y2E-otbbRiD8W?}g6Eqp)*_yMo`w(`<5c#GE5TNZ*6w}jk*9t6%1DNU>ZrEVXdCSg6 zu%ZjniH}}^hUYFoz##!bMX~K#@0jG`pi?B?gGdtmXR&rhY>XL7Z-~zvKmZRppJQ2s zxeiDqqPv8CiHcKXeUQVG>~$GPgZtyn0yUjx0q^pBkq-}a2xPQU?{}$o+j0W)T9Gs< zKbZ6l;sk#-A_8d$Vdyr92G79Qf=5)6p-p11Ep+Ax_e&D)0rO=A|gl|tR+X7=viG)sy;Mz@pYN*zuBcIC0zYC;O zT!>N@KyI`EDez}YKh{(I+02CP>YzrMEpRCTfws9f2yX!Fcj`HEJ++wa`!tGr3%NsPf3s9f0e%sGvJVB;DKy$KT9w-H z%YcdTo#rw~~%|Cqq-S=1TUit9jPd<77{X6fy_rbgGz4znyKfd$Phws1l?wt?s zy!X*3AN=_J_dopT&ii-X|Ixc2{qZLs-}%!!fArt}=-u}}`1sBTAAS7sCm(%q=c7OQ zlaGIL=cA85`sn>TAMuLI_kR74-h2OpPu_p`!#h9voA(~O^TC}D-sM$3{K=1g{9}H| z2Oo-W`pHl3-1+dM4}axHAAIu1A1yyV^2tv=`RJ1m`I#Tw`SJVj{ox0nyvu96`~F8i z`RL_dk07!;i)L`|!OFKKkU3 z@BF?_1ta{ZtKbDNXK*{A{Apyvuph}AXch@>gM*PEj3cqLgK^jPE(TJLeLd6u76M3JdW#&k% z+U@i@=;GUq#d*dsSfd(KJY40lG!$KKOZENPo;sb~`rh|%P50iO?k?Qf0>R$m*8ar1 z{pMnK{JmTA#jV{p=kxu&iMMx)PI9_Cciz0c*xOy~&u9C$zW;+a_xFGB{kL!LzWwH# zyA-l})7jo=vY71cPq{(&XZ!oJiGOQ8ncRMRcYp8pbUxo(>`!ms-skJTe`|mL&4udi zzWw&zTZ`M@8{c~8)|LUT^A-%`Ym zW&^Zn%%Q)CHyi;2GN~At6%i_c%qo^8qN(w;m@nb4N0cd+5cGn@9$h_NR(*x%q+Cr` zkwMGd%6+$qqxaS_xrJ#>M~Y*ZTbF_;>zdhq70<4K@MhV@hpkpwX0O!=EJ=jvIR&{A zED1Ed*1^~VX+NeTQS6+^3E_@MN0Cl+IMds`K2uBv0cd8ct&UV2j*5ALhbYYPz~+)q z7VvS#`MFta$i($zn&lV<&5#huM&t3O7{d(_Ye;fpvq1Mq)WAgaA?cy$17Sc(AoUFi zOWJzB!_%Lkm#Uzz=@u~#Q&i-g=_audoOKllDovn%tYH`eHfwFM_DOHX!yy!4_?VG`0qGQ< zH`LDrI%8o}8-NFd8{KHTQI?8Y4^e-C(O4VZ2~v9Ocx7C|3ip-J;d^Ttx*EYwm)aI< ziBK@dix;7cv8YYQ|yXq?rRS~3nAQ6y%EAvh-a`Ft>z zsP%-PjDMExNAY^WXC8Je*Cot*Z2N&daQqSRNXyjuTtQMGpTYV?t=5+a4rdI{X66`% z@SVpqw$SZT$`@O0RBo8plM+~y75Gq;0ySCc)R)y4O00!a6P;P1ip!PM>~%3zOyxpR z;+r8ew1KAkNak?U#WR3t6$v&d4!>we)jEz!4T;E(Bp&Ew7$AGhNZ3+BD$NPvA*P^M z;c`YX&Oii?+=QSw3K}^EbA)6PrqqU9BehDcR1B$Kz1BnGC7KpY zD`-QwU!fv)v0S*nl=n?wqStwZ6De$xu(M6Zt_8xP)4<)Lg)i?;81@et>qy-bJM3Jt zN|R|K%|tM-Fk25IC?Z9!5N$G>BL|0wLGd`UXi~c)DmgY5>G5ne#QIoJX0iXN6atyT zGPOoXPoGWmfB{7_@mzs)FNL9!~$GT#GS#&c`xB{tJ zIC^KLL9@_na0=8iq}bQm-5wt+Ly9ntO9Z$wfRk`T&2Wpe&A`(L*39E@PuzGx#R3@j ziY9@3X!wcD2xe-@7KIs;U$iw4JjC-SAT<(5;EWTCDzFeJi8%5R&r-?-u?0;6$dn`z zIZU>6GnJP(so;n(n-t?K&RaSM4BauQhsfWSK-h_-VpN1Y9J7fWp1?SFi-h1>nJc1WHyhAI+IvQr@6K#{%2I zL;>g?r9mbe43aQQy;4hF-$7HD4^yosf$qgWIYLCp5hfTQkxy{)F)$;woOP=Mt7C-3 z`HGh{2Ngg*)^%9u6!4M*r6*xZL@43G(qs?zdl=1&x6H<(rKN$!wv_M0)ePw(P)LR2 zTImpp)GTH&PwaBxOW3xQA@g!4brl{Fcof|pAviMlagUru{Hysm8S%j8#}+(;9R{B( z7F8VBlq1jsIV3CjRb>D=iLoL2wM04oIK5`W(^03DvZ#Q73iNdqd0>ZZ2Y zlndm6q`4>2A9`7+Wj zG3&3QU@8_!-$D^u2l@ljr<1~cmeDLD9Uda`t$S!JsF+2MSy06dkZ*NitWW^tlkIyw zi`=HNsyDkbs1YMN%r2^`-a?HE1xoLbXpSRIid#6978rEDLCcEAVv#beNPr<>k8gf&)&#qrV$qT1fO;&_%OZJ{Gl9=wRB&p}}Idy2U&Ou!VLDX0J#rL|6(G zj))102gVuL)FShTvx-pu_{8NH zX5&S~`HqKSMvSI|=49c0J#b z*il#uW}3p#9J3w_WXLwppi#rnoH$YZLi&xVR>BIqt0)|u?QEEiw*l7#<8HEl`U4_w zb~3dNkbIH!EDSkGVCH({+9jc#%LSJb9z=4@c+82UWd8x@a!Cn6QirxzOt3^uH?M3XGj29y5?2a1m=c9Jx>q@neI> z%XLG&MVu=9c`_jw#RBRkYb7jPnaXnoakS;qM1dq4)F46|PSBRr=M--cx&wnjn6zcl ztO_Uu_Zcz;Bjqk2A~!ztRpJbPhZ0Sw(Ktt%P*_CoM=(pb!;_0;G`FNk6VBJ=F7zoB zbHdt)%lwz6OO+y;|9Gq|q6Il{#lge;iOt0pC19gvL-8ix93d5aHzam6aujC7L*Yyf zv5Gg3KWs6(ndDT5^+_<#$S|n98$E2-6|W2qrTJT#{?>s z9i~#*`;3AE_o~=TBuWr8T9)LEWa@fQIIb?EtK#SRKB$@A4DD{5PBs@`re4Lo3Sg0Q zg`So)EFLCu{-_PXgdn!03hg#&O8CjaLTVGNQKwR`)g<~PfiZ}ylUgkoB22H?Z_{a3 zsTD{b=}UNIw^_EfMYs{q1uG#;7&2UY8Gyh>7jI#-O59c~TQf9e1r8uIPHgTaDPBp42L~cxD*dEL37pXt#d@3^8f;@ycHjr*pQYlk0%B=B21xzLu zf(sRe0NKV}HV)}VqHS-Y%wlF+gJcM|9Jf&Z$z&+u1EFY=1O>Fr`817th2fDfmM%tG z7UqNLWP(j9#OdUh5Hn6LmJBZ)>welpqA*C)_zY4J?DW&iq$7FC9gRU@-Wq8LbJ|C5sB#d~Xs+Y?4dKg#92zxovX{2zS!GsHmCpS{ZsT`vCgU;gZ;|Kbl4Y~KIouYUHkOZb#V};yIf=WC9{6c zHNoycXPBwVw1{%K2-Ow$crnp~DgjKw|G+nq6(P!*l(L&OIYhX7JukPI+g7@*HY!D) zI>@gyB55A;TtpWE|&vUw6QQXgVHaWtZdtBYtT zuHkmJT?#_6s!8ppr1r##OJ`7^?BW2f6(jl1eR2C&@2w?x2C>{Q2s4 z1((nH_kXkc(jVo!tCd$O{(QCSN2C9A^?NEVG_zlTk)F zzg(`K{JYJn^p~p-V%};+LI_10zc!&(4d!FjFn4MNVnmbOTxj#)W!l7`gDFBGB{Pb1 zTzFRC79E0X1U2thEWdU>oft2JrX@Zx!_W_`qVZ>=!)#Ec%q9_G#=JFpba#B zDxQT+z!6bEQ`8Vf54j(QE4D4h`oJfb=tJ9eZpi_kKkgk3xmQK&$Yi0~0(wyLMSLH{ zQwQtxF3imFjXNv|0d+XNVTs#?V=}p{e2e~4y?)dk)EgTtzYnZFpmFbybo8i-vM~*tX9Ftp39X!UH!a&@&~KcPGz+UeEECJ z)q%jH<<HDjnA3SKUR`YV^uUCJ6d%5-a%a;S%Y9$8(Upci}{hurEDoM z7@$XcFeDXC_(SEh5?by^h&Xf>Nm801NPq+diK`6H%1A7lECmDA_)ZvJV7;k`kDEBH zy2yqWlp8iPU=+Kd&S(zC%IAe+bE8XBSZa~UE4RB#P>Cj3O^umUO~TxrSoAO|5p9m8XO zKXh))EMkF8s2&*UVuQ~w2lJ9mRD%3Z{7WEGPDWeYsH~ols7f$$pep03C=cNMcPn+7 z4KP%?_u7!t_ttV}J8^AW5=nd5+cP|_OjoPVtX<3*tJU{EyY^eFRp$9mSDCesSO0c( zW9=WVK6rNRMz8xvtN(eq_Sqk<{_Gnpbo3W%fBW(DYW2&tqwlQ#+54*>u3c@cR^he9 z>Mz&U(ABdqsKxm$@fX53fi9eO@^0{vAdiA?v4;{t0_uX;)MTSK@%19=7YvAmKs5hU zwp0}0FS&B$T3n*eE9YxcrQc~OCL24u9o&lLGTH60glBOy!wuZT1ViMa3m0UzBj{O; z!6CSX2%SQduyMSe!N<(A-(P*YwstDCTG^e|pRc{Z^KfYGqt&}>zeX}2 z<-O=3;Vq%HrpCwCB1!lMPKfj$an7I&2rgE~(MS`M%lsBxKZ?>4ro6=S5TpUuT~rNB z(<0kqjE(sL&QNkkA-SBH8Xl~8>*i8hvF#8zRWuG}+sxNh4ky|Njx=)U;6kw)7}dh= zCtteWEB#KR%{o@QFd}4WhzJd`E(Wcf4FVG^X+^U|h;Qi3db}17lOh zPUsKmgA+hRpiu149 z4eOE2Frt-74~k_X+o50}Nn$jCV~KW~%c$uz=&LdA=UngDl=#?ZH~L*gzrU6n_x9w~ z?Qrt7trYIIVWv=M5R+#|ohgd7d~5ahGOHi`!_|C!^%u{rooVFCf4zEZ z?aP%vWG&;rSbg&cwOH!I)ql@-{do1)CvWhlU;Dk)&)3%e)#~=zSGw&QVTyv>%Y3s) zGE6ldr6g1BmY|^(L{UtygWo1rM!C>VJRAh6DAythpj_^MA_#jOjyyhDVZTesfge4G zV`ZdEHUqsRmpYh^u%Azaw_-OV5rTcFsWCkgVSG7>76y2?(xg8Hgab6{a)p)aln&H3 z9BULQ99%V?3qfy?xCKE`XpcqOHEeV6E)3rQ-T+kvpu<%zM#w-y0Jw=LnP{V05<@sp zA}q;yD)0or#WsyEN4Qmj0?wR*Qojnujw>WX1jb!R!)ZyriGc`q>P6zwBQT$M%xFL( zi9m1%-~0ga7zB^C^CUL4)m|6=O_LOi#Vf+L?_%6DxC$GUvuxfAyz7Tm|LTfA`MH`Y+cuUOBVATHRcG^voZx z{(7ym`rkSodwl-T$&G)`H~v>w{@>Mn?VGFB`ft3m`XAQT?tUSztm~J~oIby?@#4A7 z*Dh>aJp0{mo!NXty}AB7=QmHEJAL;2ne*o_UgDq2=UzDV{I{R~oo{~oyJucHfAQRz zv!^bcxv=r-E9)1}UOap5%=wEKF1)aQ{@iQl&z|2n9e(XQFTL{O#q$@>oWF49+=ca1 z-#vByI~&iv@WSQOm%jVLx$~zlY@9v2aqjZD%P-?NyY>3>>zglMIDK`Kf4y?~;`yt; zdUbts^W2NSym)ov(%G|{S6@AU;Q}vv>EimOi|5X6TzKj7ne%5(J^$V3oQ)!@E6w_RP797tZr;*3ZATe)jBz7j9nu#>MsZ3;c@b z&z<`2nRBeg>2Gho@Z58or#D_WwQ>2pZtme_EUbK)4=?%3Kx-(IbLZ|#SxKlsJkXAhqIzgO|K-%$SJ>Of}ggVp}p zw^pm;YY!heas24fLx+zXKk>}*lgneDIdSCJ(Zk1&J$K~rp%W*M9)I%Cp~EK+A3O5o zvEzro_T=HGzWUUYj~_evwWp6CIez%rlSfV*JNC@+VX}k3W6<kgX z9pa5XdGyfZ$G`r>$>T?l9s2r-BPWj?efs!`6Nir;Km6OrzsmQY*gSHKFXi=q=lByx zjvhI7-QG%*u6#6ZKVFb-bYe_H581e)he>K+3nm}t-kr>+y7zpCu?i9dM;1f4BNKKl$i?`VSn( z|I6xk*EpBg*0Rn5S-&Nua?oP1OoCd6D%SiQL?=|{dnP=(y`^1);Y3q0)O)fatY~$F zTQHp6soouLRCG-c-DHqepXfoSJzXkPK6Y6xO-*vPuTph?6F!5$Hf26gr z3Bg(b$2e`yi1qBL+puBBvMhbWbdwKU3jX}N;RAf&aE9ywsxsgE|9`*l`o&*h!vBKYQ8Jp4tzRxKHpF18 zh5QUv7m0kR*fGL?anqn(dipPjBf3JK@{}+lLK(OG@i$1(*1OeuNu&Z&r*(tEhz!5m zXWu11<%=)*i@rqH_Vmk_7hnGDtH1o} zpr)<@euF|$^ExVs5KGF6*$OWz6gty0&2v>jTON}VKrUTJ8ch_~LD5VwjWUd}ZYa}m z2`cYGa!{Grg06z7h8c}4?5%)U1kOtYIevXHQ`rYROXO5d1`2!=#R2@91d%hD*&`h= z0Ejpshg;MP0a!UU}H|8^t|DMTm#2XyUFGzXg2Q>Cw?_dIY^aIU#_JImWU0 z&dAGv9On~3C6J^-4{FYrDB5?~a?a^x6$3&~ z9W+U3{Gk^Gv=^1->-0aveB%=fRiJ92L}6>HxA1i~EEnk;fvtogMMc<|_?8hj3N4^b zMlsntkc%|(sq$wYz-`24^dB1(G{T`7xV%Gj<00{Y@;aC z3%)>F9SeM}^g7QOJ^gVq_bD_(Qc97P4cE@CypJBT8(b5cIthBY%F-V=^8h?$_Z8Ona*!XcMkstOeet1w@E%H9xo zl||2L)}cAzL4qkF443c*K2YMQGT$Tro?DP?|yVL#(?nto!`S^edo?UFZh|m#{Or2d*_!wI!p?MFYr&A;NRZ)N2d1O zJHJDBqyNWuzI}G*jvDiieCH!tuYkkD291Jfkr9w**3W^uBC72>0B;^rpU5By^!V)P z%t(vLDXC01wS%KCiHT%{D?r*svt-kkU0sl<$J#(IN(Y*;S_Ib@K#zhlqWObnE&980 zGq~20B^31y@(NzLsS_HN+fe5sC3PEAJzRH?Qc}rk0$+~jEk_oF7&oD$-J{r%;BZo* zKxo0&6F51r8{QfGDx5}f7+C;WOg%Am&W^7iiRpME`DDjqIbf6(R6ds z+?M!|U%sozhJs2jnhaR6vdNK`uCM22wSgZ*bZfz0FUx!Xki zf8$ssf6+%3lDAYsaMY$t5x7{gz0=hKZ^6#1dR%*eQIP1MJ0!fZRf19Q)pMirY4Up! z`T;lsL7%TLQ#qOQ!s1)QW&^?pGEf$K+|CIfibCSY*R+rmIqFir!5Ql^cLKh9vTtucaGasLxn#xqu?A_YdI*rKg zlHUO05pZ9F^!F{wYY2=M2x11w=ZFI!qU_IWR#1{c!NJp})PWttr5hQxt!2%f0DMWX zOIbNWc*D6?C(C8U6$wyPy3;9vG+_Odak^9xjtrF53IZRmDElL2w<_oCAa z97t^Ns4t)_s?30tg4cw?tXAkIuxxlx20FhkTFd~TEwL&BpXdHThsxj<dgPL1Mv@BNri-g1_X72LPP3AZh~U zndw9@`TSAq&bsJQT2-CI+rdTR*-oiR%A=+gje-$M8R$r|!`JYLv^7gu>-o?L1NPRE zpLi>clax_}VBePz)!(t%SE;c7&W%BGl%vpP!k9SBFPj4pZS8jDn-s$EQN|U zE~&Q`%|IqfQyP5QVgI!lVcOR!3o3RPtMa7YTTGJWG$7ga83K@~YHLtdY#oaVOKg;fMX9Os$!O8G zcG0V|i9$KdrdvEET)Ut98*EW;3?LtWvoBhzXi9`uAU8;T3(GtfIQ|19`EUMcv%47s%c5r>Dgd z`5{?}RCY4ltXU5HNl%*=0j4kzbD(U*IS3_TA2^v9lqTeFQI8hUW4OS9;>H_8)p!-(~T>U^9Pa7TeUz9;6ceUh%nGV zR+T-k88S0u7eX6GJ*w7j<0rxym#vy?gZAGFtlg!VP%@vFUc4rx2;P|knNu7s2Bx?b z%T!?jsFKa7(y=rP78G(&FD*PyTnmK#QPsyanl0jJ$&bPU#48CiKt*o07n?+2zt~X6 zMs6zkys#|+TsLA|`g-GJOD&u^I^YM^H`2Z+mav?*>95xeeXyP4FMsQ`)M#}KI@->e z%xONaLi_lX)1a*u%LPA8U~-jU{h}G1*|Ugid;kf={mKnii$zFMFTI|OeFFHV1SaKi z5pDN|siL+i>LnW)k!bWk)9=m6EFldG=kbW8c!Ug+F$z^7N(R)f)a0@7BjIJDoN0Wp zI;4St#h~NyR+5c|wVQ#57Nods-S{iC1i{j_c%Egl3m7CsBYozA1%Q78I7BgmB;G`x z@{Z6k?f@c(79GOoHs{Nvp{Nh@u8wKiUAGHALZfG+8RzGu?+0H3W({SfW>UbW42ZN&)sq{Z_UWN zUHnSNwEX}3E=jm&c!zT)^KrQ@)e{vUpTkW&te7>4rv&SdQA?70i9pV=G6ua}5iPmp zc2{+S1Ia=<(^R}Oao8+7y&xI(S-vre$eW9OeWEhkCH#4TT&eBizZDeRBrOT`Y@Wur; z(u$-o>X>bX@2bd%OsbMD(CDCG<#p?pO?MA_gxu5=kJo6Uh<$Mv+~bLKN;M_|%$iM; z{g>406Q6c=84f<{*64~%_UnSg-@baYk|b{+Ig_7DAa~ z&D-$TAmGD*MrwwJ)UA62VbDuNV(=;2G^X(PXUfnq$HN1vHvJ6U-JBexqUbiY((nJxS)`xoG*KvGPLbtx~I0B06n2eDlEd{7=f@3rgOqd5-uH-J~dvl zvf(=k>R#w=o0cIFY;C(0`jjV-eqedg1e$zuZeU-2oK9uRPnMEea!^38gP_w z*KASb0}!vvdrHy(*%b`>rn4qv7lBBnOD7WaC(x^}## zcs-bM$vh?m5KI!+qh<^h9!4DI&|GvsvGd8?&E95d(4ItV3r^#>iQYJ~-i$t)GFD|v zRzj?+TwMr$YDLy?1PObGc{D}VGePF%rlrhMl<|AJVN=Yh|Ef7Am>Kv^i}ea6PE#U7 zV+j)!d)ILiB}ucXSg}(EYfCgtQ)5ffrU`t=77+eA3pfA};tUHwlL3n*{?>j?%ddpq zMY8E}FT>4pja~ycL@29RW|Fq^$;`)krrnrQCf=W_-Yhpw!-z;b0;;Zc#%srI68ep) zYFP5Ij3v%!MiL^P0Hl?z!K+#ob^e+)A)f=s2?s(~FR1#!*~52MBdvwxPw2k!+a;}z zfE+}}QSHZa1EPko7C9HoxM&c?1c#wiRMMI=n$$`8D3LOVg;n%rR6QDb$OH#6 zLZ&&2$a&i($=*6{S4sMlG;C36Cs{?qat`c^9CS5uLU5e!41i}I7^e7CN?C62{w_n(=p zy?$lJd~!hSg`q%Pqt1n*rW>02)+X736jXl0ob^TGFLP!|^t5~&7#-+CcGc;KIBYtd zsW+4vzzf2ZwXY|;xOa7=nfNPTbZ`16zVpoy%ZAD?FZx92Gt5V~SbE0DJm<`=l6}Mn zsGQidfG~DUGKgPLtKvitx-#Qo#=!yvz-fzAjmU_Y)nZ+y>n9}R3lA+r0z)OdJ7H_$ zT;jFj93@5~t@(tE-a2mu8rJz}KXeji%_&!Zj4&>aB%&uk($JFo!aNkz069QSYz_3< z$Cmtna~UytP(Ph7*GROob-eDt?P|tEMxdlY87WpLp51DTT6-8I8+;mrunV$nyKp)6 zo4QBQ1^p7%EpI6Xk8gG!akJuXjJmR3?~1nXkxjCIad~6i02X8_rfxm9lQMv%r%l3F z@ZN)xvw>TRN_3!bY4F(3!z$tSCKa%7kavcGny@KQ5E8A>VEX)?dw_-}XjomBVbZB8 z>Ng-3d7X{PaM4GI)Ug#m#zt9q&0=-KzPDT$6i~TxH1$fie7<=jy?S%Rb}f%@TTNAP ze#1IZ0_wTh`qXJT2(FG(hWwM^Q7UBiKw_wW8Jht}$jjs4T#9fWF2@zw0RcNGc|}b} zm>)hRB*zU&2f*6JroEcO2_%xYa`>e47D?2qjkP{|Lbo!%HHtvOpsJL)v(g>X{3^44 z&g9r}u7ji(vdXp&oXOFK+hnS{ijIJu7dGnpU0!X_49_o;%{;WUZlStp8;jZs+S(=n zhi~M{scr_FV%bN|Sw*JYob_%#uQm&^7CB2XTg}0wSXW5b>xD9kWXs~6)~O}T z*Al#nC#kJ2QYRqJ$S0AQU8jcB;@PG2ptJaQT=WP?>!m?MC2&tR?ix><6(zj{%4Did=ylEMVSlpDcj4ws zZ5`iym4V8Dn=$3Rb;crOam-zGtm>+Erbx7I6At3IXHqhliK77$??HW&6J zP8twTA?@c{fQu_VtUHynSZyhl2}7J#2EIhREyU=7_XNqyKfkE4++@>eVRE$)T^QM% zXczrUN~48BnD7_I1;52^5hyb>^-2BmJfMkH*nYxdW%EuXC3@IYCI*)lfLT^KPthCl zWK?dsqnEPUaT8-l>Knc2a2_<(N?km=>$v$gUJ@m6xeET9GeQGP5-?)7!U*?n0WC z-qv-;_sNyZj+&=*C85F?Q)g|E^27ZV4k}x zBtNOEcBDg&Pl@8y+|7b2sDffM#8;Eo$Cczp10eV3xSv?wK3UFGOV2at`- znKqf}&S*3|nW@~c@TAfRAz~Ic;mD%R8r&Q7wFDH;mY`~W!}2A2*=liZbE$+ShdjDH zs*Q8f@JN1znW%_w=U4Cx#n^CbaH-N%x3+A&F%TQT_U*z%HN}~2WPxPfT#}56mvsRb zf;9yFo5xs8hWGSQ5)DP4Cn8P;&3sxmnsvI2x$Ef)0lxzIB<9~lTJ%Nd@I z63=2dnU-BPQZ*`Py=20P*I$P-iJt1B zgMA9!rh%)0Kt$QUrd2naOif5;sHv*;;WY_301nUE%B*_SoNb4`n(OQWliJGg5@)_a z-I!y&4ci)ok+2l})TkJ#kK&~OEsUyk@uVF~QQD)>cEMM`oy5<|A_e&s8Z!gMC7xHT zgAPvUX0_tZU?d9*LR19-BTzu`)iAe&HGv7dP;scvn-sDk1acIMb;)8&*fCW)$OMWF zeLIu`M>$qB=+=hl7GlqeJ@l^OURVh3z47)Otc zD3Qf!I7i39@Xcmd#5Z+Z@7j!7oMzLn*1IbqJ16FB=I9YWh!u&!m`XxQp7 zburSno69+H9c6z83Sx)=w-Dwt3{?DPSiLeb#UV}CEtj@y!`xr9Zt^5^8Ja6N9YoM1 zac(#`lLb4{Z+jZkE&fvs98jD2bOlx4Yy{NC!soT6SKoHiMcz?ZO>_-ujm+@`Yse1X zTY}&L$3+^37LZ85afFqjuGVm633&)mw%iUShN2p$35I8UbNq^+dcvzo0)+^o+hZwa zUcm6mZ{CTdvjBd75lgaVX3V)dCo(=$8efxV+yV>y63fcFzG&JF-ONR`Dc*K6htx>| z6;GUzRCgdzygo9yBl2)O866MK#z)fhaHgNq3q`{E3`kIy^>~izC@ko3f~>V0KkexO zD|wS06ww?LOI8bTFRZha5jPMLn!@}EJ4-K|MFMe~nxhBSu?L}dYT zw5>P70a}KNvZ@UaCfA=ylHx~m|3$~>a#OLC1F7IfU_>+#De;kU0EqUoG-E~}U<&8& zyzrOI+vuS1XJQ3xLW9QunH{7-*5Zxty`ouDF2Gy|m&_f=6uV=!Vh}LWHC-T1%<;-3 z4!au>EP{xfM})T%>JmVQnr0;Bc={<7Q=$9Wz(B?!t#HuM97m>jmoEWji!yht-GUo7 z>2iGL3{SQ3f+8x&)iUxH!i zvl=3k8}1??Xanoe0WwXQzwc_3gd-oJcd@@#~Lz<5g^#+P^dxP~DL{gbf5|x%c zC)vfgM~xUv8%7=KCt84!1b4bVIej51Iro_*8piKI^Ke$fVGXF`rfzyiwwN`>g6X3sSfma16Prb~KN#NGYk1?lTFjdOX=Urr%bGq>YmnmMZ(^_>rNVo$Aw>Hd3X*^pP|f zoTv{+gU?U2gVWQ;LnUndaJ@)Y)`W>B3YGlFr1{c*60$h~0+A20T0opxcb_PL@$&H`N6SEANBe?>hlH14k;ac?a*t2Mww(gN`}2Hr9qGd`l8!hzX$bb*(8pkUqXMuLmAVTIMK~c0kel2vpCF09Y@YPzeRZ;fvLB zMpqG!2z{n)8~lrH0TtapTHL7tac~X**Jj46d; zwHDd#$ub;0v$V8O08jx(8*p31mcuW{zM2tF!n z1pt5{S}lA{cL=q?v{c%8!~Q(93SC1ZWJVobDM`~q&4bT|iHw|s$W9FA1=TGs?rEaQ z2;?u89kwl!6;a1+MFiF?-BkICR3+vpTZTR20f|`zOFn!zpjSO0LfOD>#|r0ErgOnu z4vvJRVanenRKSqlddNl;NSb~|7 zu_MkTdK)>48F+i4=z^_u62(UJ7Sg!U(B%c^1KHp*_{^yhf?q~n(EJ)&6bZJ z45-mirx0za>Z~g1MJPwy75URuinm$Bs!*&*CeoaUhk7ArqG}L_s&B@?k$KjviejPk z%c22uL2E-VR^Kl+RJS0gyCNdTCP5PhVco%>IRWnTIWZpAn3y95SQaZzSV#d7D^s$7 z2~1COD8VDqk!Vdur55E!e4Bhk_)ba03}(B?lw~S@r?d+~NC4hDWwsYkp~s~lGSGmc zpkXA#T#;_!K;&M=L9ycZi)ol`&Ox5*u6Cjc=RNrq41~lLx$&Do?Kc=6ECzp?Ki9iT zm+Toh!9+T7o%?jH56_4fP{(K1@Mt6{y25THknxPvEMmIM8hsMFruB+}FQaqIoIl$z z6}NMdKSG3FiWfNyn$~9{;A00SA^=H*g#sspnh-QHE#OwA6@yf6!yRM59tAokXd5vp z)hU1re0?n8-JpgSwSg^(IwFFKtz@yJAcnJQ#cY^%G4E9xVW95dfjk79J^CLqNRrJ(#WE#` zZQfa|j3rV`NEia6=Ab)B)FN}Dv03SciY?Y91Camo45g65jhYKwi(is!7`-nNAXT3| zwuv{KjU@9n_~FDNeI*NuMFvZ@1xHVP;tCeVidmMM9ZaY#o;>kjDm*h@ ztqBl)GN+p-T}E%-%QxR8l53*8{bITfloRP}G9H~B9)5l>-rtjkve&xO_)Hm`45W!_ z13NG^gF=zbOq4p(Pr_soC$_>OKWE+KtHIGLu*P{qyBAF$7aHd~GuQV}bNinx4D@fB%yM zXaB+B!OR#vo*YRhC+sKWo$+(xV&swz=@&wf27+RGq!F=AGG38`LX<|i0sP@R0IUiZ zb0!6tOW-$g;zK7JEP*UR^clk||EX)yWt6qP26$JaxMR11uu}nD9Rl;Ak~G=KctvUX z%VwUz?!{Lj5Ai%gfNsNk+63uY$C9&iM{}-enq- z8s>S6bszmJP%>7LKs1|p0J!x6aIYk)4GCj}oI(^U7hA9*9z+7{<|5f$WWtm_QD;2rR?n56)>mL(7qwGD5{Uz*K~KLPyca7mcU2U`TSZbT}T*5UZM{xabgR(1*9D zsTy<&OEE*>6}nm}C9Jok8fhCF69ff-I@ZMJ{1e}8y-@bKXN@%;z;j|Yz*490`m!6=%}q#2qVcI}XM8sH2PF^Fgh z<+!1~8)BYIu4`IkH7i&O#voW7m=(Tv)?n5-HzFd#4|MKElUOqHDp6EITXKgIb>^!4 z!9I7cZo`^NRANpwOARJxRp$(6a*q5)+)kG%$+WVq(VU4(6c&IGra6D2L@L9!t!7~Z z{~A?f%%r}f$_b_QriSGJkC277HY73$=`2yz{5TCyUr#g(*E^41-8Lv@^A1di0Gtpm z8<22Kj-%L4NW=kLK%I_;Q(XB_?X=$ciR?5OOVF32@*x_AdR(#_nPVaPEEyaUM%ktr z1gZEyns@P386loThZE=*;;DCYV~>p?L^S0^J?REIcP&^Il28h@W6VzlIT>`JbNPe7 z1rA+u6}w)E+TlEFo^r0tch}#{K4;(XmvE@A8B8^KqN(cV2lqdJ{OIw+$M+8(oa`O! zjSo%lWHdx@HB|`p2D;&XgMSTSg1{t^7zoHYC1MCho=klbS8j{nBkO~cr6$@)JmY-h zWM#%=9f7{`q;A)>K@(hF_Vn2FgepWLRaP|3lyo<;l>*vPb(BsFi3D3?$k!973{9?b z&fKCK`j|K(304+}*CUOLDR#XQ2}pG0qygy}go!uAF>&J>8o3(*QW}NCL50~~EI(`X zN$BU(ApZ4YkwQ1}Kl853iM^p?>K4@zR%l+@l4FdF089tDhVKXhfYTo9Ja!ze3#c3K zd=Y7$HzO--U^k#B0V-4;Pv|(#Fc+a2I(%XSCaO^rnkDN;CK@A#(_`Q}(wY)`4{(o- z5YmW~3MCFHL;$#BWqLMIU75-jO@}5)0)>|CGOo(LS(K}?Uw6Aj)?>u$m*;O`cnB^t zCz7Qz!=9c!I2`QXKRP=+Iz0P)_W6T-`C+6#JRQ<7I-VLs6;luR$Hf*g!4fbTUkiJ9 z>9$L5N*_X(K0PQ`GC~plVl2xr1c>jIO$;C_)WD!qW&VV9BWJ)*KW?pROH~Pmwk%cL zH3&*>=AcNiPxg{Mnnd{!%|)3=s*cPJ8xC(M_12RtrC1K1)ouJeYWA3fS4ck4B<4<8>69~|u;oSc0w z?e9N&tOc{#;PLo)0;7}J{VE_F$+C!;L&M4F0B=d!U?=!zGzVS{g2Sqepj85n=__ffkiQXgiPdm5#cd#kEiVYvjx{`+*$S=3R+({PAO#GG zoOR`q!zvuG(?bHgA`$J1h>i{|ji-$L@WErd5{nh(#)N_Z^bmX{VOL|v@DGp8X2UKX zI$~?W!*Blbx}n$Ow)v$VcI=ig*_z^FvJPvc@|?XP6g_(+0TS z4p@+1t&#Vxl9jB^LVcnlwvwGOQNEnpIxjwMuae=B`VR!%XjmAF)3{@tiu2VQtl&*} zFGT~H!c#wk<)&P9jQK6@)1-kI5%DEJ#a?(D{U%5;T20;|!mvot!j*@C3DAu@l0})9*nb@HPhP$Gzh_)jC)ii&xUgA(3x;xB~H}0BJUo_c=OIvt{9whQ1>f6Y>Zs5f7iR=u|D%Gt3m^ z!P7I4%`tDH`WBWK!B9e};c0crG171Z5k`UP17NH&;L5DHgH)&u zz|g@2cF@UXT^|!5rQIt3c)})(6Ne$z(_}Yra9ILZ2X!1n+gq*5hrkGmY=WC)Ld8%tL(I=A z0BiiQ1epr!uvlAIM{Rw@%!ezMO&g!974&&JbSEOkR#;$Fb;9uo?($p;T*ARQ{o5RyH$x-oP;;tqv$=0CD=zr1->Es9j?N(ZRzX?w{P>dvI`~4wX{~>VXv) z-bCez1f7<#$)TXkkr9jM5#i7X&9}{JheSFO%rj#wY3PQbsLC|fk_A&L+Gp@Q)BKjk zpu%f&o4h7Jme1Ye3C7|Y`sd-yBx<=vTJ8Hhr|i{G2gd5M(ruQ@k>RSGd1fffcyY$s z*|d%o^&#s*ye9u#WVm2dj~x_8a5hM+V-+Dg;t)JLoF+g{rbw=y_Zti-k;{sLE0!w( zMy2o1Y8MK9pLqMqE34}twOZsh0hc#zGGWR6@G{DQp7 zz{6DcpgJzq5kc3sJ5tEOV&^jmwl*~>Ef7e9kL>ZZ;7hT!SeYVZB28_iOOi3QaIyE8 z9%Z)GCPTpwPk2U#58Xi6d0oM-b9$$3U%jEC<8NL|P|637v|~j*Jv%+wKYH}&;KBa% zD0rHfiYX|$K8d*G> zEXFBzLxx)<^oHta+<}H-kikbgh$uqB@ItOWnjtY`8xlc}!_(nF^{0GGo+4?XF=P{% z99xp27RV&1B^jrOr$?wj&Q1r9PESrA5BDDp_6NM9$NZe9qgkwxp% zi7Ezj&>iq|c*cY_pxCtuWaE(G)P*@Av)wSiPVpnKkJKs1c3UIxV4Tr>!nrG~em&0_ z>TkjqL=tDpyn&6B#yFE`IBfv1tV@V)W(+$MwAc7)M4D+hr=)~W-jqP_pd|b;d*0@X zt|^Xl`_X|GooT46i6A4$n(KN3^+0L_5U%TQR#m5=vUW`B;^69fKpw$h;{z<2dWi&d zahj3D%HfS}hYU;3Z5ea0$hgd!mO+W7`@MNf83qN>jKcOW(uoDvyT_8#Nz@W@eMNht>cufg>hV zf+tOUETQ3yry%*HR&w+dyB#1B5fg+bq~SN;W&O>2DNRoI{P<{Mk4_)$-#^{^>}WDR zI(#Tk_8uG^KAKJ*&XBbm5bcRhD_cAqOD6{h?s~pjf@-RO{E%JQrp%?V-udw0{G+4> zAOwIoM0%T7E!zY%A}?Uxu*%-X-wL>ilDO<`OsFa^u4kgF<)TNV8Ynn9Gi!P@))mK* zW+cMtGEl9~)PguIrS*^76~0B|?gP@6#_+|$)~$?CHV=u^<&h(Kx?G`PXV&tSlHz&< zVx$X_o0=jDf*p0atsJ$vj3l2>2&n15#u4@jgDl#RBFt7HL! z^o=_fdRc`b;cL;RGIkbCGGqk`hi3sX7=JXXOVlumQ-ovL7%RrfU}$J#*_Rzd#pdeH z_%v}w?{OD+voNP$u+R*W5bY7FDQO}hXhkNCqJ<#ejw{}kCEsZ(M`7*RVWdqr7dVsz z?DW=qIi4Qv9S_EarpSZG2aoO_P97dhdnb?1#s`m29$IH3b%HogB*SG6We<}fEtT_& zqUKXC$>hu{nDG3%aGvmCMKZ|15_T5HWKp-aMFvZ~No!;T$lwsOk#5TEVEVSdgw=O5 zk++MFl^vfMA0ZgVojI9csePuOO>DL-KtIRf$uMaF!52^P1nLa30u70raw;5#XNHz{ zzJt#Ky~^pssYzWXyrp>6BE`jht?3|vZny;~F0eEa1&Lnde6>uA8Y;TpE^44`q@P^! zbG+EwP(3f>MULg4A5Sq%`gkgOFEYYIFX|<>w*~3^B}xo-IFP!dSvjFD5X~-vT#=y$ z`b7gtVlm-Q$S5^zNwdd~r?cb9=?sD0`>4M8ja1TV=mBGX*6Cr?^Z;-{*PT9Tbs{Flg-plE1^!VU#NSBCoI+#9? zkA{yPx@Y?5Khg%Wf2f{}Z`HF$9QXsfwrZzP6m+UR;tF|42E>B2V}vJV8~J}#j9q_* zVHNWw@@2$2FdC~cUa!G-gsGGidcH356WRT2e=RwE(dsPT3H&%06ZlV=lBFAi&rQjN zo+ZW*9SV9B3R7^B*f_X&ixZD!F`#n811dh791Z}+T77^}L>Ix(x<>t51(J74tchi9 zlDVmn>H>|72Eeg&^vhn-MTlmd^c;;!xztP6ND7&y1W|?w)2aXE3hYKlM~OWL5Rm!_ zOj&&>V^G?*{99azT;-%KB%U)J>CFhRWuQZfQpzlw^vUFyYvRk=z~@Lhu%2s&BSSqr zo{W^^qocvu1YO3+%gvFy2lVNh`V8KTC>iXG(MW{y>FPuRSHU4#d9s7JjXh?E!o^MH z;yKC)^bfUH<*k*j-kh=7o9}W0S-JmMlBToM(fBk!43NhT1LdKLWMncpI#sn1x#^is z&?DmmjW!daj3ktW9l=EmGpJe6sdyb#C}qHwhJ425twHXSEUumWs)K`QSA>0cx8<*L z!|7?j0mRDCqf-W?1$ti@Q}}F7WLM=c&u1ew)>A_15zIwOOc8q1>t z%`hEXM~0}gmB!FyBz&itYRubq5hCK0ai)&a5S7~r$_wbG}QZO3HGRDm1d9h4uXfQ zZ7MAkB?(k}I>l7vpzGo(R;G=%^kEK7)yXEGK}1c922K3MaJeD@{WG^-9r+swfl&oCPy5UN^vyCLtOWo>(W z=taW;#R%5*qFHw>qQ6O+n|hC#^Gr2VvO($bAOZ-#p9Ar%Bc5QiWxeoN``u^@O-XF- z1#zt;HrM250Is9U6{)_Af?A3}ntzWoV>}7T`}Q3QL70bOkPw3yh+=&(5ac%l2m@oF za&aE3bhI90#kvkokY@Z@hiGpSl5`q$DxV5Hp zW9mqQDp6Ub&SNECu{_}BUq8W?%8&H6q!QC|fPRv&sPRZT1;lW?ktI!(4FXSdJn?5o zV=gXG3PMj@;nIvohOo(ltLwesmW%9#`Phi_7d9NBBO(mThj-)t5Qa8D??#gb*0lsT*ZZ^V3^VS^e63-^k z!ea|;g;EJKXz`fiNRiC?e5iQR*+|E^%y7swjZ)s#6&4@Qfwwn#SBY`Qbpi2{U!c`V zR%FK!rMCD5_fb=zl1DOwdL-{!td4PCr$|L0p3y>NS`T}#z;1a?N2i{*f|sxY`IMT8 zDP$EnH~_KuBokFaDpdHYGM2|j&<^zBYNwB8_EZs(@`zdt_7S{ed;qk|m{anNY@LL_ zh^>j(7{&4WR}+_jYnKSzcDeL)hG&#ZPVcSEx{GncU=b!I2CS8(La&~$=@lqxp(#2m z{aKfGo9<$sUl49RbqR!AV24Sp<|-kjhh!P#?v|!1I=H&m*+b3PQsPOAwY6cev2`#_ zRAXl|oS5>^K(2Z?v+Z5*NOruz-p~N@1Db*|0Xb4FW90HlU_sUiZ;*!`BeIZ|ATmJ` z(m_lYKX2M9CR^d^r_V2*(@p!AZUcu4fGnLd7C+j&)fe=FQ&+K8VCl%IXlE)|xtZZ%=O8M-P^PMIE zkIWdN7`$Gr7IvG&8egK~Q>6oQ@154RqH+o%WwAnB?EoTf1-oW~VPO$QR6^kkM<`z! z=T0m0^#S0a?^Ll`JL6ldA>=U*Px6K%+xv!XV3Sat$F8B2u6-Vc{wNU^z#3 z2QHP|riTbJX|tnT5z|{Yr0bBAuD*$){u$+|B#jaHG_r^KszdBDfcjf4xwYdB|0TL3 z8&49`p0{&M5%<0Q_(XQyJz>T-QiOleUX&#z1v zX-H6K@=OVhsI%$*>;zJm)tBT-;ah+UbZ5MoI44lfV?^*bY@5DGu)=I28Gr@aYygj9 zjmN4xIT)TzP^_NqDZ55|)S~zj^^l{m+nJ=0=y2M3BfR?VSerD>$Y0_I024hsjB*)) z(VXt~V1?E7?E)^x7>$s;!0vK8SeSTY8wOpq=~FZl7PkoKg=J%bpVuP3Ve}}Hbnpl+ zA-cnZf=~m4p;RGxBq4?H1s@Z}Oek8c<{fut0a(`f82){loyqef;H6pkR|KLIJhw>? z11nOfpz2{nN?0x$q4=w+%CEqRFh)TqCk`Iwb-(IzD|^bdi$O zsYv__Ngq?~jZEVpaqjshJtvtprsL9>XvaGF2ir}oGC$)5Tg7VzaF8g{NjVvz=Bovp zEUI&q>a|udQF}vm7Doy?19TW;10JP<12uFkC(hnzKF27-LCEWa*nU<}W26%BI2<8u zz>5MxM!}vF=bHjm;Hnagy;vPGrlb zr8QstI=!XrM2H38Gx@VHH8{5#iq<){WXo4oquCMY6JNNCZFF;iLQtQgQ_IM(ApZp& z7lRvVHK3`GMlc#&S21ZbHY-6%VRFL{1vX`aaT19Mk{M~IWM;yQCB&AzEY8b4#Gw43 zY$n88#o-DQ{{)BwUIiIv=xi56ty-0VnwqxVDs~N>#4bMbD$vX-q36ebgZupEH&}sY z8sW&cqy=6&!ZfLbz$vb3(%@E=CtT1Xbr&HWR4DPDf?+^B<0QH)56hCv5`QH}Z2>o! zG@O}UdA@_(%P|WrPWkmHR3rmcN9K(A3pJI7 z=n>#VnVoT0f*@d;IR{&0yFv&{ippk@!-FyC6XHUcj;S_dvp~o#BdPR=fpZGrO0F7* zerHZKf?G2~j<94R5jNTFO<_!+Vu{RK0%aNLwG(ALA+RXpsx1;_YM}g$7At~{LHAH= zxQ3156QKwfO5C;dHNHhQ4!x7rQF@xB$_mh;GPuw%yK5e)S0d?V%)JqO!|~hYve&O3YOPksJJ1D ziXgR6-k)vx3#r2Ts|COkzzyP1r0-BEUj`ZP>b-GaXa27!NP*0hkW1KBU<5w=%B*4DU7Rc(7 z+7->S{p@H@%%v^gbEK?gQ1RBles7}DFvs78_Q$Qx$Nr;b`Qj$ zz-Lsfi8o37x57z`3o)UT7%h~;)~iwVyp1GsuJ{U}R08Dd95sLqC#rdWy{<|9B<2z^ zaE7%e0|o=XG949h$PjL%gt)FToNPE&g0$MMKXp*5^t=d??SI$h)!mH5`Ii1 z7K(~C0np%BMz0sz-~f_-=GXE3>zu%kLeR81 zHIm=p5NHncreHDrl(vdmjFPs7s6yI?oXHgPXwVVe4D4_9h+GQO+u)kjoy<6+^lZkP z$S6&cp$No*y#m%rd;UPzSWY`f&-SvvQCC2cP8p!F(hyY+wzDfHY584d74?u)Ev#M zDPUC;G5w#NLom8 zMbVVeV6;bO{_vD9j-{4VSwkHnZzp|%xE#P-?kJk=M)y$TO-58~9++dPIls7kdYz!g zUUWpQP0g|;gqtsnTBXZw*(-x=Nwl3?0Q$@jDDs08xzW>e=67ti>v=ROy>LOOjo)=7 zvB6#0W7WHI7d~&He5{Olz90F&inAa(5#y%WcWlv25CMGqIx{N>&i((9C zJfjNCokP=5?+E)Hqu_F!p-b`=qbi1{iPyV(Ui)m5NER6;u;r+&!#M$Q99fu*M938~ z{dmIz)ush}?lFaKj8+--rGyMI@iRWZ9qNq0lfFx$cquyT&jY4?8#%EviGpbW5o?FQ zY@A#;4~W$#-pw}7crV$dOl&`TMRhldGz7ZLX%PS`Ve^+ERP<&S5otnXDw*X(RibGG zTBipV!X-$F;m+p4ub~fMupq2Sbd|@qxC&73s1F_u2K&=T`?FK@BjQC@Xv)Qn$P!PY zxz^MZbUF3hA3QjgP{v56H}vM+Rew>bSd_2Q$?37vU*+){Jvf(Ab$wp#)B!2|NF}*A zB_Ze{aE3Cqp4r#*IsMqGr{s8c>xu!I?^jY!5jMu%D?%gFi*|A<4`O*T8lTvDcbOBf zjt!G+0%#O%rY8*~k1$0|grcYNfvd?5C7x2)o7t5KT*D`?8stu+FSRi#qbYO>ZVh#> zUUazJ#A=?aezjeOq7EBz8HNL@Ry$PJo2Lu(in`A5I}L*|2pn@GX_c96I}J6F-@KP^ znh$K~B&5`30#VcCGpc;uTicX|=*t{HLj+OeOXHQxFk{K^b(Z8+V@B|GN@_K|=^#El zg$DnEUM08G>}k0U$@(V{6ZtrlN#OMC0Qg>rz@e7|MX0AuQDAyKI5=qwfUaoVuz>jn z*F-Qo8l3Lm8$bShJaT6lf*5o(v8jlAg4%St7s$GvjcmmZwW+@>X;a-2 zxgShVNHOyOS~@~ES<=yXS&9SafX9){*1cs-Xy7>xaB{~dGMQOt-G(%w; zKr_UC)vj)fqyXNUctxX#^x2n02qaVwz*3*2F%T;M1%@tG=$q?vg zMX8^c+PChvti$_f4}bLVKmXDFhkHN#{`Y=#bnkmKnSFY1@A1LMKlu3I2Y>hn|LPBa z|KI%a#}7Wf|MA~_`j78_^2zu9-KT%DcX03ir=NfF{d>3juYdIE0~*%u9o!!reSYuL zPxrp}XFoW2c>n$D^6|mo;Qsf%|AYM>?H@n9|HB{N`$x^kLYs z-*AOf^}<;Ty~v0QvQG$jR^r`sp!9`^B3|#vO2I=}e+x8&M4s|C{66V}%!e)km2?o0 z4vzioy5O)`k^75j9~GfJp0RrmPS41yMK_8RRCvzb8e?Io=G>4Qg~kLr_acKk7{9Bm zu#?b42)`|xv?(fpFQ8+%y#}MHl5@yFW)fsZgDt*gZPLO>670X(N)G9PfQeJ8oV`s) z@e<~w1X2&ZZira{LfH6|4?p_g{SRN?eeZ)0-+k}B_rLr8yYIjM-re^<_?-{mdH22V z-hJmcZvTn#&UfB<@4dTs-+TY=`*+`c@7;Ibf9LK8@4wIg7XRym5AMGI?t8!an;*RU z+yDH7yB~e<&buGp{piEH-~Hh32fy>q2j9K>!3XcW^Xu=w_rXW}`}gniC*QsM(Ld#{ zdxwAE?tAZjDE{0J-v9mg-WPv2|LOe?Kl=K={K1EJ-~H(Q4?cYF-S>X$x4!fKUH&^C z{nmSTzsrB+yT9>wcmLk|@7})i`FroY^U+7Y^;;kDM}PQTevyyve(+s>k3VYT^IAo=g^!4rqju&GLO6xWZZGs=J1y`eq*MfTBiB4|N*x zSgo;{kz$9zDInDZ6zN}HUF~*H4%Zv1(Nij9xX8{e+Zq6_J z_4$GfLT<9O?((u`ulsSgc=qyIbhCYRvA+5DFQ5FypJ!KJd~y5ZfA#$8;_BJri<|x$ z^O#-LTmH{4cFSh|{QCKiulb*g{`m|3nO{8nqQ8E2-Cync^=7f&Jb(V`y4}5adh_Iq z=k1r%SpBxX99uwykh>&F2DrM%3?HctFx#!WnY+)R&NS}4fZbkIco(Z8! z3_oH#a`UbNXZ;k!Bgg4da5=5~>+b@1DgMi`Ok@eO=U8jpuM;!gZHMx>~jH3=E!5XurDj#D)8ED2e4ViR#{FUg>F zjbaiIlO3lT*hwVP$vD>0R1`cdQ1pDqMADJE@ULH8?JlqS^Na1~Vs){jpkY~DTr7!K zB8aGNFLr#vtijyOKW}!+4K#YO++^Kqk*&9vFE5+jtDDV}<@x0oUtV1P`|Br7 zfBEXG=jYeg+itsRt~PTMQl`ClK_%bKdiM;U;(U93b#wmwtE;OopIm-*b9J@p&v)m~ zo^Jc?ix=0+#pdRwzqoq!^rySaFD{?{Y8{K?A~m)j>Oewy=V z*I)hQ=F6Y|^o!>|`-?w+_3EcDueRG3mKzKgHxgA$?TWVoj|s69gf*g5LB5zm->EFp zUj214(P{~Cy;pUsJSN}A_OVEl7DTlJ1v>K$UnU+x5y(r#hK@=LykOe&xjIv)>dyLsCb?NIqq0BX^AixcVv?Yg4nmB3a6Khp6m9~_TVb7Wa#Z#AAuj;~MAFcScc zHj^2S;n$wQ&LM#ik$=uUvB$;bM<2i1#eznEtfA|?#@><8{WLyJh|?#FREwj=P&wSJl+26=P!Ty z{N>HXs~Zl9%dT4AeDU(D7dNkd_LE;c|LK>%_{CQ*ezIvUpJz$O22Zw1xe{Rxbdu|` zD4Q91{O5DLQz@l(h}vkcP@pMrYlQJ$lJ&s^pv_BWP>wY3BCtbPNgr@K7tXbO*(`p7 zlnHf>OY-vEMkE<*lp)8V5vZrh6XosqQsjCd6#|O{&Jhh3An7CoDcUH|#uMPn0Y8^2 zPyO;_GMeQvh7Q1La#Jl%QYx2-*Y>SEqiP-{ww&jybbyPOxKEQ*ojD?aI08sQ=!~o& z-S*)k@%}5CA1|Kv%T<2?utVyoqHIqpvxHOr z3-rRTGhs6EE{XTfrvXSdWcWqiOx2iWQnWn9VJ262Z#OX*kgWn`krO0WMO)Kzdw2I^7!&(Fx=l=jK^Zba0I~L%qsz9ze)Z(_|`;d zlM|H5gQ6$25U2%bmc4&fpvzU>poD= zNRv_#f$i2ccC9tM#!X7xL5xeP(AGBZxR#he0w52jU!sqT4XGe!kdqRQ6g^)|Y+t&t z86nb(ONn)8b9HkgRN7gCbRTT?sGoyHV^srassc?glc*?^HDz(F+)Sl)AXL=+()3ds zl~iMg$_}=FiPYkJ^mjU*H5mMcs!71Y~3FXj-1ceY^7Z) z5MZgus-SeNHc0$3Qzc2;YS+|fw0~aIomoI zxct7~9WQLB>l|pk(Rg<{KHQ%z=DqoRcRU}P&2&q*r7mqwi9j}rezYFKh;?%*nHB*c zcM-e^C@Gkaq6%lIQH{}R%`B6Y5mfH$6ib@nt#Tp?l{U2*+Fswp!ph=+*!6r>sdXBT zR8xHs@Ma;qxe_mfW+D8s-i-ZRo<#-<4rvi=U=moI2|>uAktvFm=vFpyX(fH}=?gr= z^Xs9l4QhO=Ymv2QI;jupPa|qi6LoS`1=%1}p&^^je9#{*c$ywb$MvE-$KYkd0tgm;nvd+a*MMl(f8>p}p@WijxUiqv~C*5{i-GnHs-j}r&ejU(z0*;sR~5=!9r&>_;_!T#dZz28yMB~?VV>XtnvJ$*&d^; zy|KL&&R-0tFXCrfPwhOlnv-y|rDAlR2#+8OVk3+zb=w3*in}oaC#FJ$qkuDr@)qW2 z9Jp*S(+_n&asTUX{ozFSyWJY0y!QA?zc=#D(e7;8vwCB%()4Es>I?gRzuPgSfiIgZ zy8DCK!X4Rr^XYgp=#B>a&rbTI{%AHGE8S6dPWTXYs#e=#p#n^Hi{vBhXo7+)txaQ1 zfL~gt87`K0sA~Ya{EZ!Kq^p-gx$QL^x%9vAHrDHZm7mSeTYCqLq7^e{I2Eg7N~@Clb#v$MM`uMx3CfB!GV)mX3Lu z*02;X5EJWkA0XM>yinmgo|a`S%Pgu0@<>wJLzX}{i8`fHt|K7dL0`QdsuJ!H;y%Ks z2c%+yakdFdWV6_IYCA!c5z|Orm0AerM7YlDYv30$@i?A5rsPPh4gnid260OSUa{8# zHTthvxOS`tS=ydWl6PxnDPp}punCA!?Y1tML)Btc#In*f8z!g>zc=ffUDFwluGn2q zkvpta%MK&O-&>4k`vaRxIXmp~H1nsEL1(w;P6nE4xnm-=&A!Ewrl;n!N*5RVQSCE^ zShEM_tgrX_J<0ZsmOVV|>w}>`aHfQMPy2dX^Cga8&~e9meQmryb2U>_M_fq98;+R= zzIJ&y-}5wYY@1rAJMKGsvrcE8r*K$HcRhh^8`8o8L>DTSR84_-<-*iL<1NvuCj}}m zaVs9qE<ltuz%ztjQO<*A!ETP+G9IUK+OWl2g^Mjavi?jwy}8jK zCkO-=An`_4WM9@mS&}G+W8i9dh~~)uA;?-F-!4;VgNvz>(?T{%EtIYNw(eSn@#{pc zD-EO98yqN$ZliAzUMHERsIuLgj#crthf4P2pfL zvZn`(BFh}U@WSC_XpauG={{F?>RP%~E-{=vr)y2dY#~K5o236%)f7uN6xo_i#?!&) z{6R->oNCtT?=L!o>0;3Dvm4#Js#2I$`?{mIo!PwS>@Qg3^sn>=Bi9&slq4QsynJBU zQ;n6k(I5J5uQ%Es_f=meGpbtfB*I;?N_8i)jwb|JD(t4IM2JD5PHtO^^M$<=FDTYkATksg8~^7V3O!oQ&XtlMmnFk zHOICH@hc}{Xj>@ulAQiY=2z2sqL1@CTO}wnVU)u`nAcJ0;oMd_vVM`?G$O6kMu?hi z8>K#=mugiIRTr6cG}By96PuGF#T$(p95PQ2{ol%BG^XJM830Z%{my$#d`7!z;VNvuw0GaR&>F>qvFS^9iaSKlkE3 zTmIRV%QI&>?H^tqOcuTAq&Hx|8=^CCTB7ZYyxyMOs+4qHH8s<641yt!M)$bBZVhos z7?t{H*xR4^+!p=eaK0GtqZep9Lz%~{ZBk#_o%F`D-qk(VG|c_3Kk4+wdxNGimf2Ie zi^H+k9ZZIU1FPT72@}Gs(YvB~D$pPx(y5GEFwtzsKp+r=mENYli7o&Y8(Q*ZXkz*B zx%JqkotVN1=Df$-Qdt+1RS8{Rine-#GB;B-O(fhv^qO=m4hZs4;L!N0)$b&&OIWN* z_<6Ctk}n6$6hJJl6|@VhD^Kshhd=_&?qAG7s?Ii;H_3>t zam79v5o$pUgJ)ZNQ**QLVZ%oP_u=Gj>sYi8qCEvchZR5 zL-DOL-kvg{3?O!6@PwmrRMV7`u)if!zhf~ZoL`enwj8$FF{#4pt|9s(*Jc=)g3g}P zIx<3v>{~nmN8>Ja&*vw@@pQW1Ey}^Lvn)waM?=%vo$T%Qrt{I{@^Czwn{9V@u)9B* z&!_$Iu-Dt240`+SaN?^n${y98@>*js_a~My?S~v_tOgfn?v57o$w-wJqpOEwUA8pO zF%6}I&sKN)mt|=-?-0V*>;NvUN-U{NpS?TBIqJK;;of{SA5!L!#|mH_B3dJ@HgwGG zbg-NHCnX8_Q#mCN(#oSRT@L3*ZNiumrP#&Qh^DFw5CFp~aWLksYkB(C6kAGG5i=lMpt@tDBgwAfc68fpYo4Ll9lh)5x@mMLs@#+1 zp3Y4_pY=Sq+jF~JtL==`-fo|9sna>2;O;WJd84a)tSX25lOBU?emL8`-0y3J{^789 zI34*@XL4nrEAD`4+H*a{HO+~u_ImdJ;#lIrWzFm_{84{AP!z52PiH;%VAtw)>vg%~ zIfmxCvrpVhO~sT-H5ojqp#}4)=5$=yfT)65A&_64e(P z%a{{#N<2(ig_$*#)sWmJ)~nUkwPo~TX%Hv)JgYgGxSuqru|%>35t~8D3IJc;oD}gUMa0j?jIJ?c3L?W^=M`=DwVjmDk0#o7*Bc26c zvlCidrGOjz9aGhjo=4*WsWft< zrZB2zUB{rfKJcxU&XTL+3}$_Qes#Kk*?0Ty(4URR3fSP5F&Xy!D|Ge#D?O<={ zjRyiXSVifujM0a#K3@3tV1Ji8W$t!HgYM8{nS3~q9kC&6eMcwDLRJha{HCf_tGez^ z9Z%MnRXe7m(8sAtsyUc+9V)wc{x`w>pztlm!A>IhhW;0=5w-}gfxvXaX|POEtZT8I z0Dg2S0;CD+26}hsvQz_TR|+TJJ@P?{w|9)2DUNppe?@Ns^{^jE+ckhiSOSb@R2B-7cz@XmvQR>@m8&Y3~`9q}Vjx zy=Py%Jmn(JrjBIwM|O)lqC)dxyg#P^$7dY$r?O*DT+5|6+wuq89{Q|f+oK`fs_}5a zOi>FKu}0T!czxZ}HLWx7S_JGV9j~|BkyO+~j^+A}Wn1GxPw|FUr_q+$3PnBBbb_Y> z&#EB66JY@|1iY*$vTKOwVklliL`FAZx|2TQxF%iQyun*|z`iHyRAutZ|3 zB5K4a2DKX`z3}K@py!~6<2O@{sw);tijwYtz%X;MR;zj^G#~N_pT1RXtOl!|0z$0~ z*qP~_N(hk+h11POl)6#`3|0o-V;LDGP<)c2>p}fC97Z`LZQ|BtlbK2gZ91IzP7~}y zW5no|q8i+&!cMcjPFo$j41Wh`a_3(N(r7&RWxdJD&zj8rnPYa3oN`Mx@pY(!0VQ=% zX1$JJDpU?+) z(t=0FLwAh6OHXa&%*>JRcWi4oHMv=M2!ClZn9l|?emWX<)TXIToZf`C3QH#2Y3t0e zJ)W6ehmB3QG3}dH*E*ajRHQVg*Y}U6C-s_PYm@!1&@i2jW)4dUcoKUuNLMopU$>x~V-`)R_lK*L~q$*e)*-5@QSh_zG&zgZ@R zTMSY-5omJdAI3z2qT;ir<4|$vbkPVnpD$lJM=cYUB7E;?ViEm znOAmsK(aM)ywPwlwau=gK0CD))#-MfPPY|`M}s9tQ1S_KQp9>-8Cq+WHwgNzrb9S> z>g-l3uuZnuHdK~(0OypqK&FsT12P{&U#+3E*%(r#S+5mvG}UAa+|AYo*zRb7q>~nI zIf~j+H59LuHL-HXwJgBcV>?6-B^HK1$lFy{@HwInY{COTUH}FLuvLcmj6yaM7P1up z*EIKAxiD4uN}S~8Oirlhq6RQLsOT_p4^^ zuh$CzsC}>w>y_x;^&#d2)VH$}6@8K+RA zwj9r+FfG@VZu z6BZ=H%OfFA(g7(3LaNiZGoC)!gs?Q1ZVeypc;gA1p2NP^?++;rYqGQF>>&LBL{GJ*S=o++ zEBUiK&|4x&G7!s|OC>x*aL>|3MP!Fgn!_@^PR3Xu1}T-YskTPeQwC}$u+}o%XwY62 zQJ};tnAH;DZ={Jtw$>3dChM7vAdCIw#72+ciw53e8EbA$d9+^TYS|h$XvBSho z2``JuF9r^dbb(wh_0L%u8qOm_$_1V|{aQzI+#VagHmeGkElJ0>Y}>IVb`C;IW!dR_ z27G{;5=5zj7k8CTzxVve8F=!M{RacT$<>}3=rv|DMe%#X@nF!?{c&&joYiDyV%WZI zQY@NH9Ajh=Mk025w(ocY{ct|=xJte^o$}Qm%WQ^4d%Aa`nPL~RO!qP zD_N6k>AH^8_6*xYEQGdz9Wk;KW|vO0_YFu+Ny5i0SyYWC0W2W|ZcK3bNGQz=yNwT} zh;$YjdmdkZG+O+ZuutpFDf@sbX>mnaLGg;56Yna0C0H7e=h}6)`}w+4ft3B5)y3OgkGLJkS68$mW~A-7eGgjY6LfpWXF^C>IL6x>L)faB7GjFMFe zs4WDQg_K{bnW-#iJSX`J*ossFwbz{^U4-wG}P?6}4)iVg@U}k4k%i?p;F{k6s z!MHQ9Rrs@P*r(G&Z#bLSs!2shW;v*$`5BG|g4OrOeSb6`bf2TP`Xj$*m0-& zf`R3zM$hcK2YuNbTb-#acYV|$8b{G*Hn&vWMFnI}m}WIiG7QVJdM!G01145&I@_Ji z1_O668CkmG%*DVM7^|5Iq6jIqQ7mp&%a<@!WT>Bn8Zf{EOIcBj$5)820K&6OMK)4Y z(6TmD_zdf$YZi#AsYRQa4ahL8N`vqa?A>Vz;14FNz?WX!UXzGIq-h4eJKLQC-@jCb3$78DTd-IP?LpgDsuqnHdfvTUXfod~$zB&mMecyq9*|!ny=a& zS}R1luwOySj32RHA=oFi&EU<%&ykvvVR}Ztg4w7@8gPCmoBUTn8`;uL&9-=Eb!XGA zMd`rnb_bod&PWhSRneaGC!^`m>N%q1IBg_9V#gG`o~3);;h{@O+j@R3Q?V1Ykt=z- zmszn|>;sKHy1KgKu()l=V>?_D`zCXurAdBEuqV6f%ZI9KyJmOb>y*(4mOHg53Cv7Q zpYIv8Wsvk}^fS%w(B+AYAHJ>8+fZr7b$OlB*19djWZvjIqHFbg&SW|o^rwA$HtsgV zSt5>G5MFH>(j-M~V?ZSS2M9wXOjKNu>WIyU_$i75>`s=`S;Tq~q9%=O6O$REk%okF zGfWfDD|TCgrfCxb{Hy{UtxNdj3e|k50aqm4*jebCxA&K~1B1|L!3MybpNzzw5ew-w$=s!I_f-#-ul*6vjhSYbt$Ii$d0# zm}9-W=<(X?cs+gKT^{+mKOglhZ|n`m6Wes8?xf2mk!)dQug3xQ zI%BiLf{gkND+96QO-KEnDf9+XqhXr<*lvsLi)C-rN2WJjpf?hTNNP&DW~f@61r93y zjhKLXznEFW^vmUI1!?C^q0nh(I1}|{DoIdKW4WFX__hTc9;_l+r<5vCg4wHs6)D%l z#a0lD-Kyj~eh2POI&ldgMLueQ!@FZ08_8x$Ymsf_wQ#OTXUH^2&j|qcRS+DhG*pN+ zk~Pc3rvy^=k{E|J7LG;$Q8nGxRsy*~s)V?Y8>iS61AYYI(V)6(WrO5W>=!i(#0`88 zE9v5P@@BL^wDzz3(P%(RaWwI)gSqK-M^`<^9rkRoZnM{O?KZoBZqvIw?o$oj>$1)@ z!MU8@CY^~ z!C+mqcev-tow@BDk5mh-rR95ziPljhY7?5EnGDIV4Lz@;7^AL-G(q>2wyW0Lha)S{ zRGM$Z>)Ig?$tbM@t)<{w4Emv0^C2T1(GtWwzmkWFz=%YO5FV;{z@M zkkiac&FwmToaH>n$O6BN5k3u96Za-sD9FSmVGSfURDw9RkYq-xWTEk83W`n`Ly{%$ zT0FNC0yJ1L!uNTzXM>5qN)`6iR2cdIUw(3ZK3kpi3_oHk_Ad)RsP-Hcw|$B zTI{k)VN~|Li6gfx%eR}F!>W+VtKX3d7Ta)oUQC2q*HAFW0R-wej_OWXhITs>7LsFM z);y#IcJSbJsKj)Yfzhc+a~j0Nbk(Jf*42hBRdoh#TT{A+ll{HPbZ;IMhsJDybjeZm z-fW_Y9uLC~UYeR}cJ{`GXQ;AZvgGL~ZIs$}vp&A+sLUoVp;7z&X19wx+T`WImb6Ec zr9YdG*#YEX_5&u1!**$6N?BjK6wa-kkCr1(N8roUS^Cj;tcvLf#gO81RVD>4Nq9Yk zy;eOSUXc9`bu2+;wM}9GW-b}f8RmHum4!;&NCKazm#|O9V<9Yci8~$9(e2gHR=5yq zvZavmiZE>9f60}N z4jF22Zdx|M9UEIsFsiX{47Txb5b=~3K=~_K?*b{75W0p5MhS{V1KHEd@e6Vnt#xVG2(bJIn zfYpN{Ph_(Yy0nU367(a`>IU{L9!FvFdK6)qgoP*&hEiFrkWZUVu2;ptgiGcTF*7@r za0dG)S~s?&sca*a+zbLeMIp6OO0%47x3Ngxnqxn6Ywfd6lld1Z(UC65I2Vq}L=FNk zjKnAsVYSOe*9iXxsMiL1zLq8)jU0($p5iM4OfX8RQcMcyUO*0Nxos0R22O(*wfs^P zYGli73MjkElw%Qu5;U}vq>|Wph&`EP{ibQrFX2@d|0j22bZH4`&iWJlCcBrEy*BzYspHdXdF4pkj= z2rB7 z1bE8QnHKqip%~h5WR$h#hD=mp7W6mPDN;L&+k%{`snpKk2PEU^RRUv@Nu)NYoJEk- z=%y|r9-T(VvxCZm$71*LbGqYAUwR%1W`EK3cB$vtg`zCz zhSl+nGL=ZCj-kEVg)Kva%E+5|&`fSNuj zHN{Bg>2S6h*(nP^7B$uO2uLjAPC{s#4cOWwI%cb;Qmce~b1)igPmqT=oQGc5>G>A& zWA+7>VRtB<9_-S^nos9FOgeRCj(tcaa~O_}Wh35khhuYhP(w@W4k?P#1k*+}(a`*n z!iv^pYv?FP?r&I#;%l-Yc7~?x4XmzPuXgBz=&G!7L1wPb+8MzX<)Ti9i{h&_x6M4= z6uSbF1I#W4`UK0{zkK;w!=B7vc($)w)2sA9yT0oxUEk^qCN#xe+v~9_IUHYiN#-CvF47pP(N$W>()M}yxCG5b!gTft1IU6dEG&Zzz-|Ru77`OM6yQ_2s76l$ z%k$b6KoSVtIBKb5(~qK?ji8I|t5&0Y!$8FxR{1$n0ezax7T1oQ2!$lf=ZSO;A`^W0 zLL@B9>4XN}J647Gn8@Ye8^s~1!NMX0l1*@fNEg^riL{K*cngJ{AZH4a)l85W3m=d@ zRgO4lBHU5W2FTgEWgw#W7jJy{z3=JYegEALKK$^558nIkjqiQ%{SV%J`~7#`edoL1 zz46|=-~0ZDfAqooH*S1*AizW4UK-+AN4_rCMNzy1Cn-}vCh2OqqB z{oS{&zw_M>zWc%V|M=}UUw`F0@4okg55N1tAKv)(+wZ>f?%VIY_wIMzeE0R&Uw!wT zx8HvAE#BtFzx(!U-@5+YH{SpLyYGGP#vlIiJNgGV-g*E1x8HvMyL{G%Ke+METkpR2 z?YBO7_dD;s_5Qo>eDC|;dHenM-+TK8hxpzHH-7NH{^1}0(T(qa_=oR*@5cK#{_uP6 ze)xwUe*cgD?c48s_~Cco`7SU2-~Q;DO7?9{g`CIG+p5w#;K5XAW@1El(Arm{2nE)o zWC~=0P@q_H^`Fw|g<%xmD3!w4Uy;pK<9HvjJQs=^=K#beh{(tsrHC_80{p+M!#3_91dAWM)c?l*e9t{#10vi?)1QM^nw!Gc00TN8M>xIqMRfdY~gP;-d@5{Z;jlNMd|hL%t8C|87|_CHeyy2-XvQ4}#E-U<{oJZ?l>cp}|f z4D`M|p6~AIqcJ9_@oYBT-yJg&r=wnf++WOa6D+*Nw_jvTID1zP5zLJ|ql>C$$nxUg z#h2%=><<>bzH4jygUMim;%e%OWGd=s?Ec_g)?tE zjmCko|J>r>YgaDMy=TTfZ=ZttWU@bB&|2vZJC{4d-O0hoxpL()iuB2J==Hn3v2O40 zjlZ_oo6ioIE1tdb;@-it`_s|>m4kg}xI0A{>m3}-2Ue+cB>kq@(2Z2ARjySVW}_Hs zjHOgQ98MP7Bvu2g+zzt3x3HSTGh54IB8)pEno4S!atwwWPP|AykP%=&zl0583leiA zBvCRaCUULK7)yau6cbW}O{j|N`_5i8NKXLfnQ#QLJ4pXzr|FT z#DznVRBKsYttgw!m)l-}XauIzCY@v|J7i&G!1h97pjsNUo4JjAn-F7S$rC_*+BiPQ z7h??n+_hw}l_kQ3j2fbYGkCx%=}jZIBLbey=M_al5dt}`NHo<8MS7DxO~t)Mh8eOJ+(h|`EHUNl)RZt6 z<%)1IM42R-Y-$7tB)pEM z$cnuh-XKF_RU#%R-E=#GQ56e_Lv<|zj&moK+bNjrPxOvYbOBlpf*pW7VISYPa0Z?( zCof>e=ipRFQb}0>a){|Mk4pe-8Tja|T&jpQAXp)>1XE&%zJ847B?!xq2jLA8Qihnf zLIbL4jb&w;q$p}}0D_X?^Z8n48@_O(h}IT@1yy)Rc67(Ex!*Z1@ju750Q!*W2wE|N zxF?b_N)#vB65;T2v!x=uLw&?vlbr?s)UpENL|rJMh^ZA2Mb>NBBy%yMbm3vDXo}i$ z6EZm=>G;@ysfZ3eN>jw#y}8v^QGC|g8o17~4$nE9qc00Nv>v*cLW=;(nRyt|5`r*< zL7;sw9O|sPLirBQ>1L2_0DaADSF3{({DV%dr4);FA_6P~sD#xrXQ_aW6kiJ@ty({q z!3at3Tob5^ZHI8HUc4A$dk&_fP}8?bBT0)@SkkrRHn{|>`8ML0KzyV{z11Z`JYaJo zUW7WAFHkONHAF?y3uz5Th}MD*it=cZk_}7>7=-OR*RgcBB4P9$O*B@(bBZ8f@a;i3uEUSyw^4LK4=f^DVK-C8 zu~ZY;G-lfdE+A0f=v|r$5~Fg2$`CI=6w{Te1eLO>DQR#Dq`HdL5w#1EP%CtHG+7ai z@(vS{o=oSqGNo7yg92@I(sZApNmOpPkPDIri)@V&d)L5yseuqeT2#&DWRqBqmL!xN z4aWpQ#%;(AiDp2HyR?l1jVMr((m@Png~Hmo?JPKvVm6u!sDT(7Y1qO1-K9W;4|w`j)7t1XE z;&>jnL-EZR0Xe9_lMN1sJpcg^_}Cej)LaTGm%mipCdQun0npt*mH=8Ov$h#sV}*nq zj;wUzNg);^FyWHqK!2yWBp^G>xBcz^`qny@rvo=$G#2!*a5du`5n^FxW*qi7Kw?S2 z=!kp}HJ3w2xl;|QP}JFJ(}YQYEfkZ;4&sQB%0Qc#D;sUqfN}@CN@+wBZN+!czbcft zd3IBHZ!$u;p^wV<1*$^bZ1e8ucH=F0w?w`2F$8@B?~2h06~uO_qvsUa=I$x#osJAM z6?3_TpyE&j}Rk8wqhbO}}SpyrZgwCVr4P*@L0-`Z={oF5PRBpy3v68n{ z!mt`7<>kmE%3UDn8zd53IdT;?Vs(eU0V9^MSp2IgxVcy&X?`QVPo`KaAqa@Gq6cV} z09U97$&OBJBA zLMV!C*UuM;ze>c5D8D2&9Yu~eh|SRzqvL3-4j5B4QEhiLkv^c<>UMI>Kkz4b!wybB2_nW}@Y zZWI!@0dCe3AcvNtWLohgCY^3GkxNV98j-Xn(#lQZS+$(5C+~b-BG?HC;45rhNQ2$t zFrjiMGA#vWzio$`FDoK)9YMny3X+&ye(vP@jXpo!%BAO@vcQw;C*=*3G z3-o7A+E7^R<53(jZOb=XRyzo_FE?y8laIhnE&dkI!31>gMqLEF-qfqdZxfNC?A!c7C}=1I8J4@SCsBL)^pXOp`bmh@6W-={TNZn<(cT&PQ15g>D{jLs8Q z0{W~WYE{CJN!dz6>8FE)nV>Be!sW!)Izb-ff`cd~hp{1b<+4iXBf$yWgO&(-p4m%i z8A2w6nHAXw!Zl(&Gmw2!(Qvet%WSSRVq42_qj$Jspvid@W4EoMC01FsB6rJVcR+SV z5{0#RG7{ZF+71zi*?6arYsVw?Be{^e(ZC5A>mMa%GGDpnQ@Bm4K&BxoN zWHVYGrp&S+Qeu!LkmDd21y(;0MoaYsi-BwnV>~FsFer4c`!lP#s;Y_sHmu4TxQceP zDq&wWoVw6ZT-{cpT3eKHUD7;**{dN}?xdqkHg)*iEnUiAJiC!Tze=h_Bd3k=5jToT zGey=D$hJ%t4kzaW5zTfUTx|;7Jm%_Vo+B>8;gz(gkiCdOUryu|q15b@q2UveE!fp` zdn;p~7HOTvn(-zWlWG&`HK!;0%N$*oK)hVR74oGc5X@w1rV5GE&m@Cr3lyTT^QeLW z$)jWrCA?S=3rQrdJ7>z7I_-;OAj-)B@K%XWW1&yWv{|aP5{#n8rKsDc%h+_mhBqNe z!we~e)>yQcSrbSu)@h;qTn&$@H7ukrLXazfz0I)uWhB&LQl|>NJfWUis+>0%X)UD% zWV1w!XDN==Yy(Um5zU0Af;5Me(LG08j&8IX*l>}4B7A3Lw&_uriy5hQjf(EXbpyaa zQ`U+8QWXW$2m&Fp)Nl%;(T)^0&aK7B5(6bA`IXH;i(d+DL|b|ut4vEk7aTelj;yb& zvs}$bJ0OXmndde*9RP^cA}zXlT&U6QmC%y|H)vN`is`fy!eM!%Nb(luH!fU;csi8F zh?sPx#a)ENte}{T{7Nwrr8E;W$*!Wj+(dSmCBq@rk^)bvR!xPiUNZ{}G!s1+6uR1l zhE{3T8RG;}GQkr)#nzA|4oWBTRKj|zSg3mqfIF3RofL?c9&~k!wP290#lze2>@t3> zOvJ8(P)}By#N6krXeObd!YCDrTL2xC8-!#w%MeQokoBZ+N@rGXIe?eitT@=q-JvU3 z53w1^uTYd_-oZhDn}{wv58Gv}zD=SBVMLI5>-zELc8Mt&pXiSr7(j+sq0K2L&0E+X0hQ4GZNIEM3-2Ot7H~ z=Mt&NrC?QOw%1sOG9*?m#cLwdFr05Pw!X#54nv?9FWYz5m=yTMLmhb@{OPoRq;OrTr^PD;BDIbtmv z05u7Atb+C<0$M4=O4&^mG-MTm<&DzPif)rHLr|d_xTX>S1{hCCVt9iPxO85XQUGCK zqV3cmU39pC){wOo8WDdN~UWyl5b4CD5u?wUAsABuJ;ffxUy^ z6^7@Hr%4R!B+5&YZ;AJ@pSEE%jmSC>|7F@^776>vE5odd!iQ7;)b4)LPcX=dTO0r_W>0nCklcsdA_DYZH@Y!p1ZLL2XDAm=y8 zhfCGPHX`~CsdPmMQYBFadM#JOgzc&AokT54YmFRWHNSHyLyUVowzj_f zBklq)2IRIl_i$MP9+O+GXq*<-*LejM>kR)@7cYHU>ohxrY_bG#OQ}YUz%wdKkXXaH zV9TB?5th+Fz_GcCYZ_%}B+)WO98T=)3&o0Hpk$5F^e^zF%Qk7>nKk53d{5F$)8!51 zb1{&Qp){)-oNH?rV^43up9T-d(nfV#Y;zk~ET-88FqoprqOTlJpy8LPG&IBO+pI9? zVioF8WPwH&mswJ>aM)?tXcub=y;C$M6ey}BR^^CdhT%@nIlY0vn2uwXNH`7>C zVx@Z5b5x0B*^(etvz##&pAooJH8fG&ae$rCNtBSt#3EE%v65A*;SdKvJ_VVyYFl9u zLo+X~!{IKt1e-MBh=vi%pn8h06SE64HNjGr5Nb42nHUz3Gb;r3u5D(wR>>Tt3sj*Q z)vAE{jc>02Er-+2gbU9XiYKy=Vw7x2n#5whEF>z4beW5bZEU$ne=xBbM#_+b9-jqN zUjlQGhi6HOL@Z0NGDr&2LQ-*qO{PF2lcW%8Q6O5fwNj>7zpan`A8)OFr~=YNE^a5b zaw%3b;9q%RGJRAgTZ#IP#!jMA6&i3_irfh`vLgwou;4Yf@B$JbUswTqZP9#V;^U~< zxZh0h6`D?s0Js`jdN|3|jMYxHOcpsRDKnX7t0jvS9eBy5b!h8IdQtCHaz+i2UlSk+ z$r}+i)Szk;;HyoR7t~l$@Ui8Mlna?Qc!u>0J17W~xpqAWyHzp`SO@UuTck~Ha#Rf@ zD!D?{qR!fA!lY-4qsekB

C=k76aqCZGUw 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/DisplayBackground.psd b/Jack/Launcher/RES/Lang/EN/PSD/DisplayBackground.psd new file mode 100644 index 0000000000000000000000000000000000000000..128765841c269b2c5d85260355b37e43f993e166 GIT binary patch literal 1219308 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

    xhCoFS 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 z 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

    Rg{-yjCKqtZ9+ciNdKm_NG&P{9qQlo2++jY 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/MainAppBackground.psd b/Jack/Launcher/RES/Lang/EN/PSD/MainAppBackground.psd new file mode 100644 index 0000000000000000000000000000000000000000..a629fc59ae10cd467848b5ad55071de011d55563 GIT binary patch literal 1767232 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

    mue$@8NmyrT4(BU-vHypYs># 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

    ~>CuvRj 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≈8@KyK(41=*aOJGx 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%0DGNYbG$1e#vJ;*zG*@^w*i+#o2 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�T%bY-}P>5uoA0!QS!F-p2mP;m*#% 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∋riKemglNugA)=pfWw4SO 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

    ;|v(MgNI@+Z8 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Ξ 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

    88sk?VHO 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�%4&z}t*0Nca&;$!WhW{lv1ns5=C2D|54 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ܻ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%0Am#ZS$7RJp)^Ys@>IFz3HgD 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�&dYOfM+ZeJ<~YfD?v>XoyJY^l_3 z#1?Cn#YU$TNyiJ#S}fW~9jp$+C;ZvG@?BI>ia(}yT?1vCGc`+@Wg(dwMl3kxfyzf+kAiOgo}&l%)U)N4-cDT6PP_OyutQ#4TfGB? z-AcF7sMj|-GZ#_0Ew*zY#Pkp6PF`A{e|_(A`T6zxRyvDdJ)T_Yz5ed{-0@y#X$AY> zeT{4*pA7zu9>jL_3cIn}XTl?mw=Sto=Ca9rJ~0dYBOZ?}*WdxhI#Yy6A9{STM0iCo z$fdx+1j+$W#jv^$;0j~x&QZBzc_Wt(@P;A3Or}^ZmCNm=YPXcZ z_j18xDq2oPJmqjYiZMeh2|AX8K^YDCOe&Yh6%NJRQH#&-kC>Hqo73YE$`__pMxoYV zv=Dk5);_wK*D0Dw)f`3&JgZ#DBlW4kS+Y4SHjIU%5K|#=7qVAG;tH6|X+(-qr-3C$ z2quI9nnU%9{d`uhI0)eesH-R+e%jDM-Go@{ix?S7}bh+V*P zB@LSA|Cil6lG(s>Son^r0i${jfj#LF8Tk>Jj5(qa$vqC;(PgwC% zC^IY;b>eLZ*TyIU_6Ezyfv`sjrJPC4;wcoFMy;Ong>nXY+#gH^BQd=_mc*5a2QV8o z8TEdCz>Y@;brCisW+kSV(}5M+j%}e>b+PiqAKu=az4Go`|Mivkm(0Xg{#d*KY)XP< zw&0LAoAi3S-xO$rPf@lBEdv08;^$*{-npxVDZNUKETDkqMt)2Q(J=e+Q zEB#y-T*pN$`dgg_7+$EmYMDyEd)Lu@oq7kP|89L1KiBS-y89Znl{;=dgwhP_+-3X* z;Cpu(Wg<-p{`DDLBDN7z}zB z+*805iKU_`pez7g9Kd=THRaUrD9)i-kw%G>7O7AUC?Fel78RGqmT-_Cqfx;(CIvbe zCNIP;BhznWm??)lU;-pbqyfQ1Jv25mj@-?uQ79+yn1kAUl>u|$$cg3L%JO2Zykl3f z-CwD7Iyk86m@%#N^PR?83zxFj#onRW?G-y1xMXnyw0g^}&hFKf?sBhD>9mTKEvt<_ zZu-LVYPR0P=59;7+FV>lhgNP9sq2q=^6Is>^TK3@#)27*&M;`~T-cWR0=tyM6A8hw zR|e9pqFZW}+6jSNER{-xVySq7G9!jHQlL^zj?7PC-9-!o#?SWGk`^RmCwiTd(X32W znx#@@rIX8;;*n@B?oS1DL;x2n?8l(pi;PT(%z*7(Fc|W>Jm%36is0g}{_j((nnd94 zpRB+6##`^awRvS@vvcWp;0vV_eLl~470=Saog=SpDP^6mn)f6 zseq+zu7@0~rPWNjmMLVGcPuuyZ{Jd^r>fo6W-E%pO%EWQW-JYUb+cS<^n{&O-sH-p z3Vp#Wy%flj$@vy(?rA%iR{f zmJObPT4p0i-74mFQu5IkfhEIIsepM#1w1-P7gL8Jrl$_GCxHWF%%QCv86;t8;2KX| zTh`#w-*flV?$OUSRwoN7Sgq4SSjXzlY^_tMRkxu&-?qBErID)!5|r>?AN|m^M;|zI z8-}ve6PT?jk$c2qp(T^>VQt3N9{RPaU9P}X-f9wxu)9TvCX>oWD4b9uErmUKUc$LT zA!t0lgypQ{eJWX?TC2u)1ZF3}svN&7FN3>$QFAz@zh*(6**K;Vs4Iek) zw_tGZS(qGKxbNTp_w8>Vt-4F^dHUbqymWcv(q`w%AOH1h&wb}(Pn@~Mre+DS5j}n* zk{+iNp$JAj4tFFOil;N-h~MK);5-k;vgKwfw^GiMr zU82NhWY%CQnF|}jKAqQKF=qn~jZmM2)efLuwLqekb7$t!Zy-t*Xv;CM&A1ZUC@|ry z=@F3v>7q1b4`72gLlewEBaKZ1LK~>#u&iOHPcqvN-f-u>X0zXEudNk3I~SL?Hn#3) z)jD{)7pj2xWA)l^b*pQu#a6pgTdVYXx$bheR^QU=bXJ#p2y4M420;z@cO%>Bwy?6V zwwBuU?t5yL?tz_!Y&i5cPe1+YkICGik3iXuXtE87lAOdv+DWU( zXu_2z|HA%Ot&>ZniXmPwETRl>QORRSLyV;%+7Q^{4i-1PxKwiDUQw5}Z7KMwg`ml! z&sOt^TsdZN`|tu$D?|o|LMNvmVJnS3kIm|JIh4bb1J$4W?ybweJhdXr_3wS|+u!){ z8}Dpv;@rP-=_mj6fv1q`d#I(5j*IZFG2Ns>Sn-0v70kFjxk7+&`2zW*&lisR!^v1S zm`KF?IPp5w-nQj(WpVHJUFBG_(`zp_yUXQ#BjKplYTa@nRgtcAn~jt|g8r=>%{Sr! z{|sAicBvIAu`T4)3I-WWyw>0s#0YH!YE?wH!}Ui=%*En1Up9$5FA#A?Tw;~Qr{dy7 z2v~I-7HVIN=z+WANmx+CaFlanGl;xJYyozI3^r|i0bm3`apAKaM;HkMT-0#}qDaO^ zHh{wh8F>gouFR1=d)8{jP6d^CcPB&~{pPNvM!DTuZgvY;++skprP(euwpTOz+RN3( z;r?Q0WwEtu4Yx?QxU-gP0spoWksZBuYokMNpk~BN0xyd#nU%(BZ|hRT8N3dHxu)tg z!vaj18?w}FbW1HKn@6mH)4|^muA((Jt0hXacS~HaQYe&CsSN!$Xr@}J2u5ZKRf_Tt zC?yeCArwllAxAlA(lCX^6@bfhN{P8c-jb2H+nJ6>vW0Y}l#CQ2giR#XvQ!3%*32gu zbX~yfa{GfOfDx@{U;3~Aee2zOft82t*lPRSBEw1@yErEx+w>Fs5z zKtO;gdK&vVAm8RmHxxVG!LS&HQ-mGkV@Th3f7cDW+W}uZ5iG_F z<#09>NbicoV-asY=5wVY*=#tQiDOoo^g2+&B#Ny>E>}#a%c)o@;dADK4!^e&sQ41` zL_C~`CL#%6Dw#>gas`jKn2348y_7e29scl_n}Nx^LfJ9^BylsOGqR&~wMC67twgRA zON|Dr6extKMGCh&3LPwM#4?4HD~9$8t6eN{z;VD7jWS&8paHBd;-=z% z+btiYPB|a?>Mve=?sLz)ue|fA^XE_9b?=(bnce!~&wu{Ycij2V2R{0xm;d9G`o@30 z@A+?i;md32q*84M62WhKZ*hi5;jqEzz7h@iBgJM5@5OR;b?aiW+(gWhPyhoit{H=?H9_Jrw}7};Dn}w$V*@@7 ztQe0)g%*)Mh4hPQ#w?VuNRWW@at2f&ScWE`ibU4|_|_!YD!2v2dn>S%YK=YzVY6#> zKD<8B2H}D_Z3e#?YE<_I5wPg3W`jvfxCxufWg0VaF1yWYu=uVY2G^3^8~`7Yc*sr4eukU$Yea%bJmrZbGQx<008$1_ zdLYC`Z77H10S14i0=EX-k`fge043xgnTWzSI8~}p$*BT~$6NPHm2l}=^d3*4UX2j; zWZY?xVxE!?1ge!%8pd`{IG=MJaccBFL&)!(7-jSN4?J`F*vCHp^fO<*>((dEedfjW z*M9V^Z$0zOKYrt%KX?4o&pmhc6F>a+e?R}PpZ@NDyz-lu9zdZmmr_$G=g%gmDBJ*a z8|gv{r$MT=HJ3sN;_89@`Nmo~h@L8)-nze-EG?#2c5mO_tXH$OMO2NMbR5;>7;eXK z3dZ?&DEo(4&S0@t^cqYiwcAX%+&W{_XSF0_aswU*qeCBzfH0P@*a%P1PB`Ncuijy@ z7rYK1I5TP;;Ub7oNW~KArXf?v1*1cJkx;}T z1qy=-F;^^gCZnNnwOKQ9tu~3S9M_o2A+I}KjcF2ThbCApYK-MlJ{c}%qM=eTw~&mZ zwzE4HD2fH|dmnw^>F>P$lNUDreaBb7{Z9`({PkD<>-X=x_S(yT|MJgX`lo+=dB^Uf z@4sR1=fD5jfB)OBUijXf8D}xqPIOvW}GMnUW1Orp=+7DFd^LxXbFarfNl4!w6T* z=7@*Ev;bKMz(JkWMmV)HPc9tL+5>@*hm9Me~02A{3?B}-^`nlIU-hyeR_dHq*6&x!%L(x8LpEQ6c_nbsx>szQ!F(0 zQU-~mwc+QKx=6_F!h={etD%BUn7#QxNTE*Tqk4O>UJgggg;*k$iCY7?T)I##6}{P1 zE*UaP1)1UwR#V>s9Q(yY8Kfd-+A-hFN8NJA)0`)E5sVc4Z=-!iivVQ)7#ZALU6oo=Z?d>I=v>m zOMBPgTxsvzy?bXpmQ8?g+~}d(O?nDT35R<)RBFc%moPWr_tAl$Q?A@-T z5vHy-TrT=34s<+5j(I2;=4P?m!X{j=)k(k%!U|jp_#lkMVnF7kz!>0&6iVb0BZ5NY zFc{+T+X9SZ(Uu^)V8lyQ6UyInrge-D3>z+TsDc+PD?ft!tK(n{Bvf2z3>ltTi2vZvAWo-3_{!H01z>*{a z&T2P+1$!!}HQU`@ODNzqX>A%~AmZ?KR&wDO21B7*GwOAvoHAo988I2G=2X;|N;|MC zgJfuaVg^qNG9e%*;DDM0@AN3_#&eT&Dg0+F`XF4Bn_R{?aD#N9V&-U|7Y+|hlB3pv zzd=^~<+?EDkZljJuxbb-1+;rWUJXykw0aUJtHL;sd~U9y0x$tlDvcWXWobwOcz{BT z`wYJ$g(4=rR;3#|D19)QHk%=tZLc9_q3!fIH4aBO*{zpLc3%lcTiylfPdJrJZYCqa zM2ayyI4RC;dE&EQ`N0pr@!!Au^Oei*zI_?fugib>pa1yz%isC^AHMU2Utjt2bN9aQ zTW|g12S57N8=ISd`r|uq{qbo9I#UEqVZB1kW~!B54TFJ3Az$ttxZ&olYx{56y>HJh z(4m*0?npOR0S(`=b+OmzLAF;c=d#)2P_v*L#=L%z;wlQRPJarl!p^wlPS zV(@9&ObWX%nTvV@(Nwh)_Ge;AjPiz`^i2 zM}rdxNgl{Eq%k4vr3nNx;L)E>sQ|V`M>;~J-oO9Ajk|Vk2ab2=O$Sy>jjh}9 z{p~xtOUT)+E|ICa1xo!A<urX;L^b1m+~2iBaST&`CT7>JU8RSS$ioi}qt+@cK2OT|2?x?v&tjoQBYfHTFA- zVuS&$E7PV&po$VX7YZ#5k5V}zto4EsrDS?&L7Y9bJM=b1OW6HobmE?jkBWhWLyQu`z1h3; z&aZy{+t>cB$^*`MFKbmg5lHvjzY<;|D2BZYEo@X)ba$0-y}To)(< zmt9)DVR;pUvOT-DFR$Ks!=7FH7q@QNy?^)Ga(DOE{+6A)_pa7^TiOLAUw2pgmnix1 zlob1oLAoMRX)L8F6d&E?HG3Tqt7>SJGBh$U&Q-X*MoTVjcLjanOgxGgjLVu!IfM8h zzb|UT1C#Q*6L3p~Oo9!Wnkj_#aSA?I6mM6jiZDKdj*bus==(V%4P6}gWm=h4van8J4Z;x!iitu+zB{aH zg+is$#p7eh=^7suIBVUoP(FHzqMa8jqFUq9)@{p`a;cF`MJ>@ZHYp>i}F z564Q8a5@uW8LS!$?32T6Q>1$H{U7=6PksjV)Rilj-r7`byz}}SKl%N;n{WL2_h0+? z`XB!Nhu{0v=Ekr7{N^7n|M`F4S0$4c*S@*zz<_YRU+8pUo>|@9-@5yT-Fw&i+t&8q zbYSoD+TQk-T4zVUg<5Od4ZC;l+J)ErQe$bkx2h&*q8#OjYPnPOB~w9Ls(?1aYMl&d z4Ss@(6Tv}Rd$sn6!{P=kE^M`X(%C}IPdM?(C{*c`FO)Y~qS>0;pUydAc^!jkCZq@< z2Ge42b4WlUa>j?Cphl)JeV)eWA&8PxsM3)}#3z$JnABl}_KrfD28A3Am7?CEo0aXfMI#JPu$KXT^2^Jh=p|K#~IC(b=~ z?&u{Nkxc9)I}wg>(0xxp4f!#~!?R_V_2y-*@4`XC688 z_=6{p-GA)(1IKQo?EUMY{+hJHLq!PIH@Pup))G+E}KT8IR(N&s+=bfjKdwoRsm+JPV8On_xhN9g?u4{FXT2S>k%dBkxo`F zWwa$?!E&*X%d-3dw+!KOGkiVK-+Sv5|MzSE`ReB7OYdHKb93>^`sJ5?_ovN2{r2rk z|NI~C{^FNEersd%_b+e0`^PJ9Xs~*A;#RYbGa}_!6gUpBC)k!DyIx_h%Imgj%rN9 zUh4nj>OH`ttkU=YH@)}X%cM#J0U4Ga9y6~bz1>Q5~yw7=_`~KY3ss6W#YWJAp{K`r+J)GOC zJ*}3>rc`&d*EQ7^XH+zGwo`I4N@=XNeB8b$&FM)IS;f=KD9tS!Fl#`)h z-gqwsM8x<BSH20A3NRQ|MfMy}4f`}%L-ne67`^HTV z?ASdww`G3I_PKR)n>WnwncKdwcm3Rk-8zGh+q7fTy7lvGcWxXP5VXG*JpS$mZ_M&1 zH%2?d?Vy&-Oiu`lh)GP!Z1DJrU^-)C;*c{9v1mkSYII;+a4go^KQAK!fKJzRBoLDz z3XD%KFU{>LDN%@dtzt%J7Y+7>?#BEU2A|s4LGw+n?Ct4lrF7us*wEY^-C9)~iK8DkCU;pOYrC&e(!}0T#U#@?C>x;$PORs9zeRKScd~T)jfnZ|3W) z1A2LTgD>9r5%C-ay{fo`Ca+Jxnc?ad6^vI^^ld`u>J?j7+0s?j*40|k)m@t&TSKeB z*~%y`?r5*iE$b@H%So@UEYGj2EFxuP!!n;o26qNcRUrAmUH+6OG_ok8Lfin_2!`k%+ujESI}AK`Z`Z?P>*nXSZkyjcw|@QhIjrGkZ1A}U z=C^O#v2}j$md$G)-nMqf?rpp0=XPw}zH95YxosOaZ{5E8Aec#l@{prOkAKv`&kMFO2{QFNo-FoTOIT#UI=<;A(L0pM=wM-~d z>C|XX>vbx%&MNQI>idmWli48aHz2gYZZv7dMl(-oP&1O9^)Ujxe3%f}&}ec|)Ey+1 zBhc67cS7jmO`>#k^O!JJ*A+J9#{}21I$7XO)K%l+34}G?KR~YL*HzS)Cn8cS7X;@> zqz8vWKLa_OpELXzDKqZ=2p9zb&=>fAR}cUAV82jzcW0a&5aeO76M;??h<+-D)o7!@ zC2O(IOiYao4i61kOsm(7k4#REPp+GuoE{%vJ#C+zo*Eh-9$7X%yJd7_+05+vQQOq` z(D1U6Wvj;~W|vKm*{4?z+b5=ND^{7CUHA@Sjmz=lSKCFi821K^ngmp`sW&ZxZ(pTzj|SnMP}XBC#2mEr9g z9}-mq%te9|L7SRe-H=Dlt*Xo@gk8TCg3;W{;>?2BvZfM`b{e%w#K!fU*4bQB6-KQH z16V9HH8ZokNj10jiE|&nbnB<3wBK%j@bOouS^swP*7s-L`1r_Y*Z%Lf+c!V`?e`zP z`SJUUR2TP_QeM&>BHzWc-Yj7n2P|@pNvks%2h0Y&OlMT+`t>$rzd@l;s_X*>^N^vZ zw;-~He24f0l?Sy;MWu-)35W%S*!nlDZDCV&6;;UYZ0o2`tRv!0IYXYG}x==`4cU%Ds_O-zsADw$@iR zvbt--J4*19^^S|r&abXitUI!B?$x({x%2B%7Oo;oiyz(m_=lhWeD&H(S3lWvZRf?e zUit35OIL4xbM=SC?_PZ%(KQVCbu>z{UE@oX9EI69AXi!pER99eZ#L;wIIk5(tKDW% zNF;rO{c59$&no*9i|LP>v6oL(M@tnc#Qz5z%*na6*=<|~hfb@lqc&#vxMb9Jc6T(^ zg(j8f&YlcwhzGIA-KT%1R&lKL^R)k z$f!_XG&q*L!UKXm0|MO;2pI{lBj^^`3eJ{^(lj=u;q^$RGB%T=(bDJwp`1S;mCA+a z-AklWg$A+*fr2ZPDEc%)u1v0G4Jfso0hPR;E8!Z1Vxb6`N?P#ZopvRykhM-BkV+*+ z5rxU+@DYAY#r&h~|F>sJ^-TrNj4}lOz{Ci=8}KB+dnIBDl9UX)LPlq6s*lUhM5{ZX z-Y!H+l!p)D1K*i(7`jmo>thy$0qKmst8aH=kYk=ik5l=-t1a zyMAo==<+9@yLxGM?(a9=`FiQrg?W{mmpkF-ixaLWr&yvHuxgoo2J~dCLq;=VBnOAo z3bA;=tXHa8LX)rV&ILF=t+=@{3-Cg5;9G!?9mWp~gbh;YJ(+Vj^ zOBZUST!F|a#ir!LhA!o5L<$8OT@u}Z7}X?QrBw7G358GB3z%wZcOQ)_!fg&RccDn2 zPzz~hJC&uyK%LKRtFFE8O}Ym-udS#^C=7{+Li7Y2wxLm2U-0>$goEB3S|~Jp@-g_y zB!&M%M7ug!nm*}KF`h1A8EGZ%HTm&mM8t&!+{s4%94R#@j9gsMtrUnTRry&#-svbQ zJY%9`Q+v2Qy&Y}5uIjE@WLPW`q0wN$lPa2IW9v>He)Y$jPO;OUOR~kKf8F`x_dou1 z^~0Aw{Or<|BhR0atlzoqvGad79(v{C=f5re`RQ|8!AHe@K-Y!{Y*6dvI;%{tl^V>$ zCY5E-WF8#WaJ5PuG+}C`aZqEl4EJ%$3yZjh0j)+{;6h5cO?W4;IU=!?QHfQq_xFr! zK)Z)Qp>yb6?M2Ovan!EP)?Nmqmrm*EtSGN&@9C+9bUlrnQwTVFQUtOZocT_{em=OJ z0wEd=nWHA=Qb322d|52~mhB^V@ZrgK<_?yph| z$PH93GHhtEjL+9<=^Pb<4Z=xNMfH7|+r6#@gO%Y0?OqfhBLM-yi(xUaAvwXl(a@VC z^#=@B^jy(PB4>yFi)eQBBHVE+4-0m6NlvS6_KZymNRC7xl23XvDJ>^3G{`l!wxw4t zlrY-MYjHl|n}>f~MFF3S-fJ(vr=3D4vKNVPkEoD<==}61@x;u5r(eBx&GGA!Q`nTg zc;`PqE&cxEzyJLE%g;T2{+-juc0IXWK0mnq$os=n=U%@4;x1dp}z0DP+In_-~&E+H{FrlaF z9~=oiFR`*`6=MMefM`oKx#=2S02*68boB$&XZkR^OA&>JXND3y^wj~f7#Q_AuF z0VDhoJT6<=+dXW6?ph*XP&HO5Qvea0T&U6W<;npx0fa)WPy$tx(zbFfkH?^!I4p^R zsTNR`?7t8;QYDuI?V3eKRcgB#m_JZyTxx0c{Y`uig5OpZ9a;#k7NSIPPGhX*G#W=B z#w%_yHpr<w=v5P=Jx$KxdCE zgK-{-jI^@<5Fz*rLa|f9;j+tHAuFI$TL|w(BEly+FeEZ7r;b0n@quTqUU~o9KmT** z*MI+KN&e@rzkIytxcSG;>n~qE`0$kjI}dN#!Zu8-ed@KD^(U`={=q-Lym4-CRkA$V z`DP0)%I3%{LnB79733D9ddOt8$u-7-!QnxR6*L}}&Zsu_q><{CoV-$@QPf$V?CP4C zidV9$M^f0gM7moNIYI93XO;;zQwX*|W2IPg%DKus;hsNSIm)4@4wpd$KQC(Y@ zm5*+AWONj~)i|GVGYa+g4+skhjKQw};fI!bC@2D8c(}UwA)(E~KM?P0{19dwA7}Fl zUba7ouyM;6_;Ebx>yGyYT%G)i<2|8d(Gf7MVd)$Wm2v|p19GIu`;4lUeTb$O4!pkT zaQ}KQRdD=IhwC(D0yd(jL?Wn^;54)Ax$G|3P*yUz0>Ein>uc^`j_&n=OMoeFh`HmR z22)8`WF*WbNEiStAr1iE6ckvEV4G)Tl1p-{%Q8YxcgEs_i17=`B)7P{FkdHq5g;Pi zaB;hY{naHVuc%$xT~&kNvw)1e2*4_H@iL*dbaNJaUApU?uB%9V^kF5aCd(|_*X?}& z;s+o7_T$p`|8k%i{EPI5OFvzEY4Q5sAAW7u-fM?eY%-7ZWGVN*cy#5a3*UeI#i!S= zKJ&7<2Nd;CMICI&zcK;#jCp>U{xNhl~nxr|3?pmh=Lf0b9|ckAZP{;VQi zD&hozj|zoN2rx;QB%C2CS%AbKSFx@!kDQr~@kv*EImnL@a0G*~k13eH3z8oqQd5F( zr}GK=gYXDQjYW9MpF}8ZV?-$f%70<6v&mo6+E9kSA`$5w7#>E-cbZ1WH_V^E@aB6z z|NQT7fBRxAb6y^1*(T=Zb%c>5uCJ}@XK7QTO9!Z&ycX}hSP00Q!J2Fk+l?Se~nm~C{~ zjGEJ}!uF!dBpiohuY4cY@TOF>-*HxdeHF{ZzBL7qG_1DETfxO zUUhu3X8Gz~z<+Ky99%754SSG@Z$aAZD~=mHhL|s7cGGBW_fO!;yK5=4)KS=oNQ^)< zD10M0Qosle42=y33NSt)yE-$kFaz<+#W`hVwbUFa$+D9Cf5US@9wsR-knljG+o_5L zOwR=)Ef>#_--zHO0iTWdbGCpb5YXCal)OpjWxyLDDM=Lx#m$Xc^}_b2o_^;C$9LcS z{LBA+d-LD7e*5;7udY0FZu3_=_svc(R|)&-JJnH1ZG)#)FF$|t#%pUYUitEaQxPYu zhjxB%_a!`Mj!Ud+rQU3^>4)sf;mN5%%aB>A;4u5p)G%07C4~hIZIxx!-JPWn4Fi2V#8e)Br#;>a2>L-xi(spOLX; zlLiqNrpytxUb-A7Cg)MdXTZ1co^tHvE8cayF4a8lT(mvnCmoM4;p3YYD5s}oD3e9+ zINp>YMgB?0$1rn(?I?fD;b4fzZ8Y)wj>}w~phrm8bC3`CKWj+U-9_bU)xDjWiSdXo z#?cF^4(0M4ltsq*2 z1o-&`1bT%erUfD?Ef5I`pd0yl2gL@5he7y_^~NR!>k!u*xE=BTyldN2+6OITI<0Cu zY+PzB9|pZ4<|W6%*N!)+mmSN+LhM?h@eRkOuN_xl)n3Wj=5SoyyFw_S_ej{i4##nx zh6`8c-dR{THA2p1$0fd`Pe5m5{e^uDFkP0@%9`#6zgFK}Pyx3#I6foA7w|PFZ40$h zKrp~f2vi7*t7W&PB&6nKWfV4IgoGRrNCxp*Ev`)c8E=g=?=OhZQfZG=FY4q9I9&oZ zhsW-&X&ZEYHl2F;#dqHR;;lWqHovpkf1LH_kx$`sQ?(!=UOGGfGVu@6xR#4#zKxyLUP7VzK(a{B8#Y+woB6rWE z>OzlSh=h-jG|G z^2*3r0L~U<|BOoF3nHvsX&E;5sn`;^L?+>}T7|d<3}CWBc*n!zi!+(e|cfw!PDQ}e(k%X;<9zK7PY>yvaVgsEeqZ9x6xN${rlF_SI@oq z_`%iwlpJZ_HW4sXgiFhWRWmd;IXg8xGB#>8*@ukitz!L#2l|FI4h$$_DJp}Sqm{{( zX1h$-kQEyp;g=lc8{^E4`w<7LH`x=lr5oOBsM2a(@;a+aYG|~s=Ju*07_<@K8;kr^ zSlokRQd8hO1r`V#<*;y4xDV)CP=JI)`vf7L+$lsyggkJ=UbvDXcm$t_Ux;GEfX#?2 z=OxD*XmrWmaJ(l*@!7w^;lR2vxp)I^P--0xIhF-H1fGy@ej0p>oWm@>9JS08-6HwM z@ocvUE@~!E?r6dv1Ktnx1fA^cFdyIO z?EI*p=#q*wU@lU?gN0HqJ3XUefCX7eMMGzMeqqG>Xl_;sq}C}TMZ#{A%S3!0tgc*| zjE3rs@Pea0x}4HMs>o}i4KG{&_zPEYpZM|S_xmpnJuq}9?;*VV!qRNB>^!R!yAd&_~A%4OO;QK%{xPn3u5}t?~M{0Unenn;|bC@M{#Z7I-(Zg#_ zAAJ3@ufMwa?Q^d$Keb%A{Pdyk&rT=!7ql0YF@U(OYpftipM7}h;uAX$y|i`f!Oc8x zau}n1w9NMok>nE0ADWz;7@QcK92p#3Zq|<3t@dHP#4y~iwTnwUP!PKp^HgF>yme4* z*YbrDgI2BAiUus|!BK5m5b`LH|AsOKM3fRr`fbFMyZSYyE#j#3M;j*u8n3Rd^7Q8V zA~G!3*~QRxBcY2FAC(x1G=S*XNbi84q|AiG(13(UPp|NBUxd4cU~=UF2MhYk9xl$d zk8}M-`wfE}slefQtXE61IUElPjyNs|`Ma=w7c~6m9XGhbgN_%4+J_e%5oeV<_PwS@ zxeC~ndX|6Qaf3g=|KzqK<{OO=#mo>*$Y4k>I&SEhd<&Z|>FH@~y$_rSy0_&Tno7gM zGs>W*Uqn8I57J7#kuB|9I@nfY65>llMTMOO1#DU=mtTU+mpqE70ckJE&MM_55mj7X zMsGx%xS=D5a2-3d_rqax52iU?8}9VUKY^s2lP~j_MRGwEGaArLo>_ z>6)ogvt>wUHrpoG%mThYKH_}W_1o-btIfcrCZ=ZQH@3?Mtw!^JCc!W{F>b*6jhd9I zfxbSCQmz}2p(}++HM%lb$jETFQcPa3knUON9i`(9h%>j0*40`_uB-&!wh)o0Nu>Bh zgd-=%#;1md2L;E*F9yKc9T64i5#;CT9)L?V65;&)eQ^i%g+Rg?poI)**PoC?GH%xK zxom8$^g(h}BnID!*ocY6jFOa;0+Beo+QevYgQcOm3Fw8~{GjVZ3>j8$A*87-Z6diw z->>A#)O-md?L;ePvWbi&w~)l**yNe#EEU<=71aLO(Z^3cvG4l(KmGI4i?U4<6S+;o zV+Yq%g}eKtWS8fX@`|CFr5szOlh_}a8yvRx2*iFdK@77j&x@%0d}E`hTgQNHYQi`= zG&p1*U$xw>GwChrKC=ZkM6f*EqGJFy$Gpxf7}*x6ev@eEq% z{!Y}p;sDAFC(>%ck*KaM$g4usNM3b$UO`D=Ru;K1JtZ<8T}P)r!7qfA32c50uKGyC z@J3WBqPGGeKf>wc^nu*{?ia$xIx?#4A z944XEN%b5Na&52NaYTK*hDGnTqBb?I!h*tkMMuebi2DuJ@~9PSxsJ{gHZ|7W@0{Or z2$w}ig(XI2MPi!cpNKSO^h~44`ANkYiP5ACz*vB7!e-277H2vU%=D7X>;`%bMw##y zxPFcTqdB#vhs)4eRT_oXU{KWdS_Yu}kce6+eCfd%DUrl=4=HIXPj1?^NnDzc+t@}I zZC=e4Ikefpypw8vJoQz%hnzQk6Z>=sl=X^RCNiIgVUDk_a^dTc{uS_-ndiO_Jy zL{G6NQFG&!HA!BsHMUjjXK=4F4vh@02B=6Xv)GJkt;r(M8C80Nc~EB`G3mK-E5AQg zuha?nw$ZWS0hLfFv98fb&6@r}%tea;CkgjME*jb?-Y6&06^-_e{DX*ajVdb7OG*Hh z9f3g|6;(~8)g{Q(F3l`+Mtx*vr^LiXTI06q+7`Fd18A zTt2PpR`6I98jYi~a#+${xk>88gMiepk@6=^78zY3Q7d}|a;Xrus>XVv{I5NFZ)9CY z?ntjKXe0TC#Y$3K=oZmpr#6{jR-w$Kp{Y zB}az3rZjg|6+vHLTUU!Cx2!a`AU8iHF$O@7SOh$!AQd(=JRzP0t0S~y!ASK6q!b)+ zKeTL|+th`Cb<;s8herpsCZSx~!;)&5CKXd5mC{5em0AN09#>D-7#U146OshBOe&=d zf!<-lPJt3u*xk+JD)np%TRO4~Ur{l6LZMpDROt8&HfGyUH*ml%P|!;2@1xk8?j5~J z%+eHjXLcZ|I5sRbE!aOOtgNb`x2Lj`-rPm$YA(u1EhMK@>L!j836!7)l@d}DoxD%4SK0Ksp)rkY(3)n} zDKNISN>%*+(a{lkyL4o7d~9rHnN6*zMhs~LL|o2gMHn@_g@y(=W8G5_TLYbC7@i%%F+Cwa zah|_-x9yLFa%OZ$WnfA9RDp>j!t@fb6)IP$P>6+EC0owa>*-uIo3GG_q=4;wakRiuOz z7o^AKMBpY87miDBGp(ze*30S6@8VQsmI5b?7vbonZL%d}F*l&Nu!b$}ZEeggC@Lrj z{)~u?E8(f_L)HK#5<&PSI9r!7&NR_La<{#P7fbiGw26#%TzL~qv=BR@Q|3V zQEJDg$Htcru@(9OeDKDW*#}JhodvmR2@&`W@KS{z_D>we=%oTP?siuIT+v$F*wt2z z1Q+D^l!MrVScM!25t2wTuxY0RM~4Ob#{iNVfgT--EB|1?SkZ6w^}}l#m^3t2(TV#R z8+F8{WwJ$dSpOJ0A)6xW0}_G-@`6y?C#8$6LXJSM5USv>U<(w$EnsxTq$`|fEA$B6 zx`+B1LJo^5Ht;!ju^kvm^D%n>g`#&*N>$RR5G50Wzs}#5yK7n+nG^086z>y=j%r|F zbxTEBPWT_WdYhV=upCzA=7xSo#6Fb5sCQ}0+D?^!xzJ-{(jj!ReYE`|7c@&Te+Wec;-vwwIf}W2x}@%3r$37 zp?%FtsNH5qCs(bRT|Q&CTE!B*&1}@s_y+yRhbEsc%M z74X^>IuYr~pzLJFMFTLkw{rQoW^iP9 z+3e)(@c6hvV^?VU)qO(ofKhKBvJCZ`Y?^+{h$&0fCAJ%kCbewDHZ)-~Ob=--D{P~7 z%lHUiF>Gk9%gIg*M8nM$Pv18<3E8!9HA3108G~C#7a%RAot-5hpyp;4fzKR`OgVRtVA$ypMe5@A9mJZ0GFmOXBF$}(4OX_cR8+T> z*Y{8wyBM8Kt@ZWHE|~ABt*vdHFqCzJy4VO@b6XP(Zx}gtb^!|6P|;G?#_DY20E0kj zVs;?&5g5O2!~oW-dMXAuO*QvZFiH2;GMy9@go7eF#M?K$iA0qohJ|L7ckndz=s;$Z z7UOV{Nl2$O*5>7uP*T1zQo6vuJKOh)H9c7|$~Bw8JY_S>*RB*a95NDQ}7NSJf{fpZ4s7D&i0-xJDF8@rGUmvLc55%h7D<%L-l*$8++ zoJ(n5X+F8MqNuR2EFYR*_`l(72Fe>j=D-&e=QNcS<|0HkH>apLx2mYBI=3t@r<9tH zf1iv%b%a5cmS<)46js&~9e-_3%H0JmNr`gC7lt63Z6Yd`@?F~Spd!MF#+5bLAEUwa!2C(A?8AHd%b`fMl+~3%U&# zFV98qXtcV^<2>_@TspFf5{0mAnBfxLk~95q2o|`zBB9R5r*+lp70Xs_TsgIDd|W@g zY?;kEU>P*3*;2K3$Rc2?EH;hJJ~V6@Bx^1GV{2^va;zmu^YTBx@fx83N0W_=V zn7GjJSO`L5gT2F}qJl9m!B`q$;vG)&MmIbEy^o|IlTl1_HrlOqM?Xf ze;00nq+T*MS9xhxM-?2_1of{~?Y_6Fxd_bk^@*yjCPl|2$9EQGb~$h$as$|9k_<%{z;>%PDvjtAhL7RO*XJ%1&*)(0R+-Nchbq2G*JT*9?XBj1(5|wGvHa2QO zQdes$=vZN4&Ku3I1kz3cfDQ*%%E#>wqLkEBUsqaMQD0eETS_hgFRd7fV;O1jvGEA3 zkBbcpi;V|@C>Wu{QITPR0L45MYxQbF07%$f_zO7Z()(Ba&5Efz%BwBU%Bjf9Dl5uc1c4;Cz79zzoF3`#)So zaanDCURDjb1YLLumfepLx%VC|iOY}i1Cb0!DukexwU)%>)uly8#Ki*k8y6j$2n10^ zVM|X{GhQM&xxlOD7uB{^l$5d4+=Jq>(lFg6{JtS#y86^JD{(dL)5(Xa72P1&%QQ-6 zxleLKRx7B5u{W32yO+jv?_9h5*PB;p!QM)H+-tVw`PM zI2DMf>2bt5#@7URkSaWq8^AJHB#Kc(diuc25aB~zw{~{r2!b|7?9*$&W3^9@51P~x zBx^Bf$WSv6>Md|U33~-O{UaKQP&;MEt)+i>a@efwGiZcblgerv9~qEI3=(#GR$^il zuyHOZki1;H{o|Zzm5b2n;OIzbt@}?^ZbfMkIky7Dj-ulHjPxu-1jNQ-vJxAejPRXc zuUO2(qGH1W{CxsEaTkR{0=f|VHP%Cka?fCUZ`4sordB8VBFq;_O{9#V0%Z-kAT}mC zBN2ESc;GStX25H^qO>fNoRgE6pPySHP)IuS%U%9X#Dtd6xe5++)C`KeqfSFKvPYG!?{QN|}jK0R;ti0H`P^PIk3{1!rQfy3oToeGY4LnLk zW;!V&HGPpBSlC|M-cXpF3Q(Lkmisy!oZhK88XMq8u52jHg!8vrRELd-xF6@Z?#lk} zpKuS2pr72e=Iq61p4tE4qsJDuZP?V5oRgnT4urkl6W3p7^D#84&Ykd0C{|W_y1>Rp z@=izw7rEHoBfh*aIU>Nz4_VSHXIC$u85is1v21K`)FSI?Z>A`$T((F($mCcc z8y_*}Xjy|3R-JL!HaRmgZWXBY`q3dhi`&aaduga&BIn8V(zcA`M9huwn|rwWBsEug z{*0ops=lhEwjMB&@+#z9;Vzn+dp96EHa00HFwA*4ACuUpHu4Hhgz9b8W|Ov)mWX{Kn_Tcrq6VRCZFx0i6x_kpGzo*LmYG@NrgE6S5jhO(m8*%te8Fh(x$y3qO}DUDs_nMskwqvJC;;AbYsMn`7`^)}1;H8Z0&rG$%qosKQj*sTKs_bHkz}wWS&9p9{-x|A9BJkAy zLnP%T5WUqgC9#y*byD5Q3rEksbK%h)YtF5z$&3q+02lj4TW2XOJE(F*P~OUSXScU4h~GsEKVg%&fv%ER!$9B4}_yK^ul_GOk6V(`&4KGSi?^JAlr;Rc9JBDpVN5=q>VcXxs6G@dxk^i}wB* z1KX-v^#AIb>+5P3D?AE|a*Oga7W2TeNy7{S;RWc}$3}(3`GrITy8D7cfww0D4bk#< zoBiL%_a0BVu_!e^J}#%MtEPz-o!+TtXM_Z26`~sT4Nl0(Y}If89!*b8FDqWm4o?kD zsIEX7Ig3jvuWd{ZOCY62LKNri67JMA1bMsuKty;Xrx&zII~utM+c);bN!QW^N9`d{WrQ~;e}&6 z8+J!t?2RiPy>Mc5`Ru9{vr|^v$jq`8%V$=tUb!6oBdc5mm!Gyz z%~g+D^cs^%Z6BS;8CLac25fS(MPh0qn5(5PHm&6h>7gK9Ha`UNzJ~#?GP$pGpgyX=)2ev2QH6%SQEG%wf z&kM^QJ^aG;ufO~G)32^R`Rdvh=Q-+*=NVR(i=uwX)xAI=sPxAS9fBw?7r*!bYzuGy zGS!ARKDyy}$1*fIvuxS0ZDeX-bapwO>GTvzb3HOxkWuN}79`}=ZqYS^W9 zMzKsN)>zF(F?{hbJ&5fVFmJSD7TK_pDUSgyzn4Atn=IEckkZ3WB!3H+ZJ}g61!u5Zhrs1?Hl2RhM#qQ z;{)^X!tdL@dE552>*uy?oZAY6{MPxo2e)mVpWimOZu`T#HtgF;@ct^^@AaxXl$C)o zF->x25l1CgSp;D|V70_V2Y~vKmY3Bg=@3^GaZ7M3BWEJ}FeTg@m9-mYnUMTqa^m(m z0jrURA9BJ=%WFEjsMTc^MTy1f5Ox2DNL|(87FAfBotUmZ{oK|AFTVZym;d81;_5qtrnyr(eo2kY9%&6Dcl*S=B z!q-i5-Jl&^d%elbk)p9A=qqr;J?v{D)}^$rrl|xWp-q)Ytg0xfEWw}w#dA(h#$q~v zKdC9{(MciUXuIOl6&VauRTxATp5B-b<3YH&{F7+fyk>3(Oy|2cE^J$v-?HbCP3v~< z-oAOu*14^4EpNpyZQs6S-{$pm5A58vdFw;lwryCqZR7Tb@bme(Eejjxc5K_UxGmv9 zc%8RxTiCdH^Txdk3lD7CwQb*q`G?l-*t>r1{G9$iH25AbTxzEyny;GGP{0}JH`}{> zqtK&7k_W4zg~9BqYL|4^NVPEQrlq9>6QTZYzu*A>oQQSxaP{=|_D{$zC@9OzPKgNi z%r8J=9bRuN7-^)^FTK6TN*5@09zJ&Ztt&6R{@xouz4`9>5640f`Vq|h=3_ERla%RQkw9&qDV%%=A zYI}P6v>LrpV;Zy#nk**MXto6d1-)20WDqC?wqf8YRIsT_lsb*xVm1vZz-3WuG%9X9 zHrjXiTihWk>l-U-DoYz0>r2aP>naK=iVJYB%+AL&K0O7nt;9rfcuYi0On5x9&V8Xr z^TCzO7ipc&$q*{|?})C=_Vt^0%x&BCz{ahB1MJwddHurfg$J-#=C^GIKVtjF9dnx( z)?pVN*uDvCI=5lN#cO6W=E|3eIOt6G&+@1(>Jhac7p@iL>{yv zoQ`L)sO6CG4T-xLa)X85$<@KBY8^0XxGX-9&m6hT&*fX91jV_3b$u03Ie^Pnf{s(3 zlV3>AAg3dL80b=GN(Ho!36ThHj5x6D3l8(%gxX&;>(7{}PcHZ!_x{o;7p*y!+}&1&5^)zJG)pvO8rvToVbvaxL|Eta7%Wn0C471O=YELv;5L_Z zRivog(+(rW6XvSl>32HHRk z7!Poj>h;nkU4};52m8{H+At`WbFhy6L&m;dxz%YU*YF!UabZvhC8CV4(eDnas;vg9 zu(GBaJomy<91J;NXeZ%zl$HpPY)V3OY*Ji!Xl!Umm~RO1EC@An^Kv%%J=~Y@>2%hH z&bL>;ZAi`O(Q+w#k%HO_S&~Gc(g|1!K2u--`&UF^oApegTxdf?2A>WLEt5`JiOHl~ zs-$)udK#FvSY1zlqx z$Mi6YI@_Y7>q~=Ts`v&izb!r{iIhRYBryZw5w+wP?@L4|S_Sw}xx1D;*wV$KklTja zaB7iDZe{wFDG&Ve#p|y>vwi=C*Z%g(na7@e@5bN1d+|NX;q3$K2A*UTG2IKfIR2s0Io(p*FeN!MCO#=ODLKIj{>m=OjC1_}hnG|SjpGZ5A3xUze%{@b z8dFh^g$D`nruB?km@8a<^Od5@^VoIE`@U*7Z`x>r$w2E$%nO@nh=CySvGrC|X3kr-W z>yZvJb!yCl;}(H+KE?6Y_hL5V5kR9w+ONiPOH%B~);Sj}LnLF?!nSRk0*vUTl1bF$~J&QQ zAAS7P$x|m!;QKS@o_YS-2j@?oxp?uV=bl-5X6ae4=gyyb;_=sR?Z+w%84VgLVmAaT z<^LnkF|e2>Ih`dHv$){8VMj=izQLsSXuE6=c5x~8Zi+xd5txKb!-R$*Vlw4i2AxKe z(kap|s#s`bq1g-8J4?vnvyrX+zy9{UPrsn2nOs_EVw6_|7o_+i_B}9@Z8Mj*iL#NU z=0p&rCBOxlkyapT^>q1^_&1z<=-|4zWmnzB<~etPx2ylhj?S_NH&@+pF2nXEwo4NI z#P#>zJ@w(&FF$kg#Lk8DhfiKR|JuSwo3|~m?zM?YVL1D1v;QFc5iVXp6=VTviBJE3 zh&Xo=;S)(JsZPRR5865vgi?KGn|ZL`Fyw!S@K0Ly^qD6fJ$CHT6Z_>szd6^z>vy8r zbMM~{9y@UC;sEW{;T z4x3Nw5=y&P_wx;0I#ooWNhLx$i(TDzzvwNz+ah7m=oPWSR7PVwuoMwF1u!*c8~G81=57B25^RPF)Kt{gix|Nfpe+u0-iomG)Ik4WS{anc9-NA$@W zqLAz84AhFt=yLJ%Y+pXgjD-D<2$T&DsDRP}i^n*I8)zWw^w|@~j~zaGjM~;>ka<=g__f=eKNoXwUw`M~ zlOvO~MaJQM5E-42k`Nc&ZKtNDW@TpO$9zWIak=B_?~a|}rlqCY{_R7J94_|upsYAyO+MZv%eGd~d#)=>; zi5tpVUl(8BumVAO5IPfo5c!E|-XW=LP9NHo6^?e8Tc=*H(LtDD=rh`2GUuH+b?nIT zRlaq;2X_>rkJ$T;+gH|T7c7Z8j;s00+aEdm%>G9X96WUH_17+6IDhq%Pp+Ii z_{i}W&+Om(#D`aoJn_`aU*G!Z%F{a^e)^*iUfaKE!$VKJ_QCl*uig6Q>udBA{mpyl~5Q;E~AIba>`lM8X!Wu>3T^Ig+YJdwj=D} zUd6*O3Q|N&gny6I;SS{8z-nA#DLE`w4;!VAn8sExY1kb-92!@F(5a^OYNGnDV(8v# z$npQKYUDCRwCH>RUm{XU_=fKAxWtI)u-LLpBw=M%)fFdalhSMBKfC*WSc3c}WRZXe z5>L}FMg186u3r$F#97vbZ29%=sN2pJad~m+DiIhb+49l{Cyg8a`O&qD2QR*TYUhfB zZ?1WIX6w`a<11vDfzGo1HsSB#9hp~G3(zGlmEdHB1iSiZwmxLj$VE1%u)N)lP50RxHPNV_vOt?hbH%XZrTlIh;3;xGm2N`TAG1d&5Yg#Wv9h(k z{C-V)?~oI8QUyKj4ZI#Exf0n3$R1KL6B8q0)I#o4DuAJ(VF^jG$aG6j3H{=~?|IPF zu&>aXjd1Y^4v{^z+#e-5%sWUnaE-fuBmGb3QTO!HFEvD5`-a^go?kWa!3WP@e)Z|g zFCW>k>-A;NUEDn{QZhR7ocqet<2JPKF6pH72&dcj?mjE@^D#Vm_PN(Cy|AGn3QHRU z*pFN$muZa>v5)8K7au?Q=!r+VRIAtpc^TQ}Jx7`N58cE|O9Kcl$oykzshe1{v~;}< zjGHY>OJ~}5EG@n3>-Ox@(%zb9mX=OpZ}u%Nd3>MUWi z9{p-x;T)i-n#V&zB66CI*n_t{MH~Qb8D}q!!^-- zYmy*FuRQkpBRCY5{ic3%52c&hEj2Od3?z~vK9k4o6X^v43PmjFgAs5umDL05=PKnD zxa+%RkmSEDkif2sV-E(k!&DCPebD#o;jaiCW zys?h9u>m8C(oLtck%i3UN!4N`E{U)*JyaP?9I~5^Z?sIl0q?R$^`AJNHFOIVpE;i4 zf_-sF%ArG%zm};raTWZYL5h&WLyRiUVUdE(hrC;kdXg)yslRVSyVnG0NH3wZQQKLx zmTD@urJK&@44rm^BkPAf<)G?XU)~g z9=^eTzP)>T?w!|!9wpK&lvgq{BJcZaFIOZ_xpnU0sr^6PI=1b*b6A5qN)qMoA8_3lg(b17;CQ}CF&FJXU6QF9ok57f`$ zgwxff6dxACZ@S>mQv=G6GzYRg3+O64x@dS|o)oF2nOLu)V@+SyfhMz(yc@ zxVFGhG!UdjrnKB*WFs3ujR1D-tVF@5&g^i&CB=k?1x1Dl4bibmU7A`6{se?07OB7{ z2BxX7m~gpX7VYd56X=R9Z7(Fwx%EnxY2|4-$#ShWL70>j6|G23Mo-ewI-OWHE*?qS zj}J~qHTopknQ*!*{diQ%g6rv4)z-TgAv>EzxSu|J>P~NB!i_li?Y%C} zCpgD09yt|H`2XBM5T8A}^7N7~G3eQ&2g3-W?DUpzHV}P~Ltl3YBhwZmb1=@C44~;T zq!$~s1w&xdr(~nP*U+*;tvN@dMRNSQlI-LZtc+icZ*2VBq|u?Gc|+xFq@ZPHCnNKz zq}Y(0oMp-%nv7Ewb6zggAs>|%vtcM@88b7Blj1(jupOP5(l->oUwLd|e4`6io&97y)Rsy!fNB{Y$rwIQ6^lIqnIl=f%x?#X5rMbzv`y z7;@&uS|>t$vyvd@K6~)&XK!Ngv&XkE1(zJ!xN)t6FX25+O%OFdZ9cQwj$Sg$##Cd) zOa@P_HoHJyU^3(ul%^*S9}S+q(gAeR(z^b+0|y>#Y@C3i)#Hb03h5C!d_`kph9N8E zMB|AxqYlOLN{ez+2K3L%2Cd`Bk}O2^8ftP;=XEq^aQmQJ_0zk|dp8 z%r_`v6{u{Hnb-|9ovwX&NrEUA%KSD>?qQW-O|Gi5?qVq$cRATj}2 zxm_7tTP}S_Wldvtbn9U}crimDFnr_FL?21*YtBe5_2`+t;@Gd#`p>-e^q1eS{`%{S zUzgXcos?Y_6CWPn!1{}z+1FVPbVvcV7?e%a;s>`5Kfe0&o$Du;6o+`CLxW^;sYatz z8q-rb+9SL7?no78mW&)bVcs-lOk8wgX%BR$`*Vu2PbBIn>MWz{A5^>9LiF zwNb}yiMTeZ$$K_D-S#269y!M+h`#vAxOJ`v zQT=2T!Q6EZ*Ts0;)JWkSZ)O( zI^icK$g>R|Ry!mxI?%-*?bwc8VrMmf)>pDJ$l8~ysreBb`#2}9J@R08>EH{O?%le$ z|A&L$t(vyHOe>ENM1{K}8iYXd9~Xz#bZ_D&5e}S)M~@Ete)7Qeo4@a_j(4+1yhA{O zL@Y}KW1LFQ?z45@o`r%0RSGg5>t^L4j*b8oE0cScvV?_q`;(%wi5iMJhH009QF@ZV zT6xo#*ho>!7y~KlFyVG-1zcZ0Q`D@E-t=93YyZ_bM6ZL_Pec(1(aWHVA|B(3a!N zXgg^5=%Gc1Yy&E;>IanOZG1XYwq4IDlw_cYQ&i>iLb_I~O9#>Q{6a%Mkh z+;7PIt?`7Ze=)3~6(tn~ne?_I1#d3R>DNESU`|i&S6Eb9I3ybhGifsUr)a@Kp_(ezg1$A@m5ggISqiav@E6_h6 z+DNU63PEUcXt);)7h47w8x_#B&B_P1;+1o0N!6rCYk$t6zGDqCFqI3we{`yD z?72%fuK&Ds@wOkf&HlO}Pv;lq+uaE>9>WI73P^_r{&XNvEVC!E`qt?ackZ4)`pXZC zM++U`6eGO&Vu47j*U80lJI2_Lm3qe~vMB1g`??dIFo)t_`IkdE9 z@z!s?*}bNG@Uo*DrcN9)W!vU0$B%4Sv;FMavb;$bfBS0VhA&pkov`xU)$L379Ne|@ z>xPNTR(-i~DAnUZO zD9FNw|%xS9oZ&SQHtk=JmAYIQhmYyxko; zfl#M=Cl}{Pz9%aApu)BtD_js15)tMX6ye;82@(lB;2=Q#BMVrP>D@{f_rw*JUj){U z98O)aOUxm96t6yfa(>nMBd0F^es1=jAI`2^Ie1KpuOt$MFVK;82!kQWcSNimOLBYH z55NC%H)nyB{ zx^o{QbI7p1gx3&w-6}_WxRnj-$0E9dYuG(z$gmU+(PL2m!rlYDak+Ee;6WiDr`T0@ z4;=XU*`2-Hx1IXq)YeU3&HZBUsqbb^TkzSEANGE^YVDry)-Bm|_Q8{@dlt_7`oQmZ zFW%_Asr@z^>ZpX!QTUM=KyT)PPPwQu`IdWv}qO}*l#uV#Q-7vPI#FSymOzSrs z#6PG!lb(((qE@HNt;$a=A5u8wR(m67@c@%XTX~|rG4f)KmS&<^ghD~f8XE^?mX+u; zupQNA;fw%DYufa(3@gKGaeq_3DP^FPPw@V;ANhWMk)96VDwBqW#Kd*=ap)2Ox`U`b zeAII9ZtLk67#8K}?uej18{5vPo6*g~!|geSV0c_uP*jk=HyoJVVD=y@9ODtgiKJ6g zz$4NrqWsB?s1NjFnMmy=0*BX3UbJq>k4yTkUa|N5v0dZW@4Nfe7kT-HP@cD27rGz2 zGM^KPy@LIIy7kMY6DO}6_-)dZEL|658DJbDAxx@NB#K2M?D1_q{i8*yWKg%1jj40=MyY~j%pnXJFP)XcAL?>}?)=>GMackkc6dE=UOD`!rdGjGO%wY&CjT)t}kx-~1l zSh!%p$}Qi0`_;-d8#iy+v}gaGANGB>bH~;VU#?iSV$J4nws1DDS+;ETy0w;-FMm~=oN_=jlgaWFX5f$ zGNVF*!bAJGG}Cb!TrRo>Nqr>B)}nVvoV<2PJJ()=aOgH7AnXhOuRbdnFm27z)90@* zo&3{|GyBdg{bJ~)C0~`#ED8+i?oJ1iu{tAA&Dnpe+qgG}zrV5P`wg>aq!wv`GtU60iTDcR44nOXrV%#S}=Hc)$Fuzdh6fSD8l;r@c@Cn<<6cXKW*Q(bN~LG zo4@*M?V1%!XO5pdaq_CI+cz$nGyjX_D-oYGy{3Ngx{X`EUbSNN^406V{pRb<+u;EJ za{1E53zw`}@9^ciFPAM_xM1<}_Dpv-GBM1GT9G z#$@E=6%}XX8H?9j8hO*J=apyXnYCIl3g)KkzzcvHOX!xYbR%}V=o+0i3)_$MbVC}* zq=$?uFVmX_XXYnMwEs<|#^8=TyxR>@e+xVyS-?w6W!^ZR19{#*;?vURWAO5T=Ke)SFXF3Fr>w=sff0|c97~r+& z#O0G4kFWc3!a!|$h>LCK?mazSy%PAmcs^=MMn^c{aLq0#E>W3MSY9(O+IqM~+lk|z z-MJ1c=8vlv&m8#a$iAK5e6x4orp3$l?b!a!%9RV3?K!-6!o+qLma`|W!UqCYq9+i_f!IeXG`Nqs5lQF-< zR4^bt1!u>)(&0mJ)>%Hdv}|O_)U|6yn@3JXbvUgyBew$M#Ar&P*}T~^CeHbM`hvx?Cofnw zYwGeXYu0SquyMnZIrG--{^7fA+qZ7py!NY2o0m^sYQN*ljo)lox@6Ucy;U6g#B=6| z!NtQfP%bs2APoojNMS2XPt}1~Kf`1$8bvOxzZPKYC-|DM4*++Kp7-Tk}TdvtQ_ z-I>|5E0=BS(!&dmOK%@9?>>DnyEuSM&#|kQw?}tBHy=MsPn4tV+}oe^#yU{ot?bgx z5%o-wAOs31KPiAhF%P67DX)AQg$M97*>UsQ@S zeNjHCYG-TT)63n? z4n@wp_vr57=IrDi5Z22cM_Ke)CmX~;tRCFwL>JH@Sj(ETQELfccI#&R{Z$HqUg)E` z>6a)d-gfCh%ggU?&sq8F^_#a2?cX#$_2lfe1LT3uu8wSuUAHbxL?F7bvzv=6!S(v; z@Rv6)-#ECdPUQ{48wdM7+JSW|HtqT*zzZeE0{d8c+xYhJrfZb@`&fFqAb`lTcQ4-n zPy=+7#PYQPQzdAXf>64&7YPy?i;t(brzi9a2`{eh$R|dPM}+UuoQ}@UZg%%zd)jaj zw20hdF4tniLLaf&Z79wP_FNm9-G)VAgqT46#0st}<1EzWVW(#2AdN-9DxB*gO)L?W0hQjt^%I#@9Z zd?)a=N*P{|Bq`O%ZZ$~K5(LR{2}*hFC%U-~rj}?X(*}WSEVe_puFh^`^`gk?T0Xq%dYsBZ*fzIue)#j}9W(SBt5%g4g$6p?acw*K zczhrd!BYp?lTM^<+>xiJetmxDFd2QU#ial0u-PMbRA>`xoL5k=p-ho@(EklpqM zD^RcQU`+wze)q23EIn;e;0T)L1D>bA9*BfRzHN`5UAuX7Md4&n5P+E<*pD+a3eT$$<@qdJHlPiTM*-L6XC!g{Ck# z3C1HVLS-4ez>v^L3LIRP77#10h997g?4hBDLSQz540{bHE@l&0rjv(l0a5Lew zjAh%&8Hrn9o$iEU6ZmqVtDZQzpgJE;V>&sa_6f(vv9lXU>rra7D}v#i9J)KgMbt6a zSWF+sr+DH@qR1S={B4kz$>M^EG-&+08-xUOU^c&OpOhAsyXo5XE9;hhvE}nMmw!8R zb$@;8z?ml|4C>yqlOqbN1a@yC`f}V|JK2+NK|egY_vk(K?9noHoSUEbtH{{~DBP_+e8_o+oXs$+&Zmym2YG)6c-xid> zcmm>-&X5o*tHs^|B1@Xl+TOv@{yyrXu-I^CBHpwGZD+TlT$ddv0gwy=O~kN5ZV)2Y zF)5)G8)gLBh0UPNqjrK*pp*v&h-2Ervl3z=gJVF)6B`l{9h(pu92p0?tb~N{0F*qA zjtPp>^^HItV{mw1eo!DPC5NIeGg4ARBSO$m2)qsp3k^knad;?L#8B=4?gMmbWMpvc zCu2@#ogX7GTF`CCfrZNtxm#@OT#k$aJ3A~{;L_oO(HdjH*_MTgq7zEUI(F&|iWr)w zxhu%Mtu_P(nS10ToL#$s)tSYz!xV|7f$QY%oxGjVGO>;D+j@UnZ2XAD7asmLebeX1 z)~-8t{PeM%%VvvB(+4X&y*=R4=;_n-0})7e@#w-OUECIIJo^51``ZU6R;d($ZXl@j zj}D7fjb3}=_i~rcU~KHv))~bZ+MQ`eDvJxzsofbw;HbfYFDGYb7mEvtJhwJyb|=tq zcXDcXq?{;6rak8Eb~^i<{>!ys18&QGfL#I3e3^(lg)#aTBx80MNf>hA{j-2{j193t zJ4XAq(NzEnq3R_nadcpyBq{`PxUuMtsL-HTUKr3035<+Rz}zQ{iwp=&2u4P50v{>f zp%IY@iRhCMIsr8n(V-|ofq@o|ufWLQK)e_kijou&sCf@2EfCws21k9eCfFVQWMS~| z;Ury22%)2ho@CQgxed4?xU{p@mWzrIwro2)Oa^SM#x{6{WOV?G6`Tt;y^q6-Q|Ryz zA)HJO90VL&Tg>#Nouh5%uF=f0SG(YH^_$sxPV8r%w)4uC`Cl)%wQbL#wTHhuva~i_ z(yw+D6zFghq(i=7A7IB?!!pKN6irvKQ&Dz&qx90_}iojbY)90hm*<^!w_REvjL91EBL zTDkOLI-UIY5bmn?%y(pWri~4_0U`277d1V(V+y1L=-D{1#|#MKW<2;*YLeT5A;R|< zbW{c%6iv1>3ATlW_%C!ZMymw_7#xdi7%cc?XoCaRN>m2HSf&3@huOedMkqi`(p?-} zF`0naj)l>}W}*6JNGHj6&ol&4`QebVt90DzKfawgYT(&Z2R9C!J!8@2nPHIuL$Z5# zx!Mw>tDiH_BVED+Z98+F3X{IvfB(vF^Cy{=sTyf)AD^C%aI&}sB!)J0Z?&cDC>sYF z64+rt4}aTjEGQg>K8LAgv1QoWwA)fP1XgrfWx4G(6fkS$P+T+_%Y+4SZ}dcjZ!F~$ zqIupxsZk7sB-!>*bBt3CvNa(Z$ey7IcpVle&FDn|LQD*w5d5fx*qmXXK)(Z#k%&cV zg-OI>wzCL)7R}Cw&|nMdXE598QH6cO-)d(wgmoV&Z|Fg6_<*k+^wojGaR_nl9#;M5 zQU_!6Hxd`|kOjvV4$tE^%-i0yt#yt)P)&;sD`?^V z-*)XaYJ_U7SRxPU(bXE~?dai?&uxPI1P240gAV3=K%6BF0+&N!@oeX`BYA_(YGYF@ zg588Fm=;zmorXi_;Sg4kFv!}l|9K1EB|8+!q0L>IyTTT%Jut%Y6c0M6SumAztO$8d zMWx@52+=FqJA}GJN^iLE;Y>R|mvI}u2@6^XrMKrY zohbVtSI@jX`zzbmCOP!fmw!EeOqNsP=x+~xJ}G0(n9{*Udk{~(_K|)8hf`p$QRqZhJ>Bd4T^d<%tvqNY%T4EK2D$-IP0rf8PPm#(Uh`$gD9tDLjCm7 zC8hZp{W9W2(o8{nJSjA)nj$l9-kVhBoe6Hgqzgngf(=1aNd3wgwgOfg9_}=<_%GgPH4c4!}@(4XKVxqpm`t?rFm_2jS z$G5+q&X`(HOr3bJ!TR<7AY<0TpqlTr-Qn*4 zkGDjnQFshuMnp!^9Y1&|}QPSohEUEO#iva>wBgLEO3XpDl`PWm6c+EwGn3>}Cwv z7TCE6HN-u?x89SY=W-HLyLG#arb44X-MAe$rmQ#rFG(ZY&`ivdSWG$C^UzYirJWzF zt^ajb+#5H=%|G3=?G8@Gi1tt5b*wN^^o=^^9T=^!09)CAv0k8|hpe|m%mcH9fyhAI zZ1q2qx1w?X>V}VZ;&QR*aWP%lSwY2V4c4J1^a#cJ0O=3nhI2818Es@MkfaThmH*uF z|Fy0|X`)p;k)HuA7#1I3QTFm{9oE&^Y`cB z(<~fYy5sO+SgmPgqkFFf^DI7*mZY7uqi;`}*7O-RV>z(-boc*Id)toNVuiqsut}zG zi3PI>rIKiU#!P8lBX*K^NCw;X4Jwb@**w6MX>0q!hH!X7z9m6RfdVI;I=g!`b>X_Z zbn5NyV9R`r)wbRCFZyy8l%CV^PEMOuXe^zWVVC{WVgJ#f4mqPb1mnVq4V|J})mxG^ zq;w@&Mnr4u}RWX(IjOkg76QoDNEjd!CJIn^LP43D79{0 z^zsYVf+hQAc6vs>C+!^q^6M6Uwd?nnZ(7=$+U#3izqq+)-I59YC0_O~NQTY8H+bv( zZ5zX20Q8!+W^me0zDSzq&XY4cdOUC46wi|nxvPOOpPm+$4%sIK46*F1n*de*OriLA4d0B35 zYo1MR=A`vbBT#>>EsvdJu3lK(rHy0;&(6uUa!s}K+3nbz9elBK_nxNRmOZT9o3Eed&`YI`I`ZAiJz5ea{uNOBA%+;$tsGU^0oZ_m_SATo_-up{uM|FQiGS$@Ko$vNgyUA}JFSNku zI`Lq~n>~)ZHs4)I;{ttvhPDBe#|13~?2g&HV`xDIVC-A0Qwq;vYG#zV{SSP(`Gz+GcG1 z)s@W2kweC}S95E|m8Zp*t+vMy8I+|R58lbq^Ind%z|%FMD5|io({%bHrd8=@O(K_u z^{=mOt7eX^`*|r8*YU%IR|NUx&)g?4YJNHerx@w|sNxyf3Ran*J=Ce`$u19ZtQ;w>(SptE+5t2YW7nclx&0SZ1tGL z15M48&4V|)*fw)xrrvL+xQ&nAr;x(BoOX(R)yZ{|;(>)?Rd$_J__m2+jo^N+c+yO< zp8ay+xr7FLR^qxAiWmy@(zt=w_q52FNwcX<;XuFObb$d&aHb=IhpE4eM zkz{!DC{#iSZmFWzQ>bP8zvObV&XlxP(!MA*3r;E9NpbjO=GFyC)6o9)tb&rEsKLy< zJ+ZD7&)+J^VQJ&>pe;Z=y5Iu@Q#cfjm|Khg*}SS9KF~usvtnci8D>t=-2 zoH8^YGBr0_D54A^*6{Y=3Tp3y)Ov`x+aZ6%tXkz$y!39?(6S!w5Uuh?FUaY0JM{^6 zg*(qYB}m)L^Jp=dZhv0r{5wIan=&D!%a!>Mvg{$q!lu6N0U=jCb|K&YhkzX}W2=DB zK6($u<$BJNKZS&;gG4LaDb{TE5Y>DH&b!AIR58uh8NZ6ew|9VimeqoISb~ z7yr?_1+vZm#R;+{we^8){(p^tY@EyUpOLtXF`}*Sb+DCOm!r2Wlx*AOkV zV+-pYNh&F5F=yRTk};^c?`v%ESHE%~t^IbNC>e%~<*M?kit6e~Q)(yFRaDl`m{~Pp zY+XY`4LIg%sv4$Dshc`!{Dg*ab#>L%W2xw2)4o!W$Ma{prEXKqN$1Z0E5wfuJ|mV z>z|=s4d^zJt_!5M0A2p*#NB{yBNtMQ6m0dape%r>~_lGFbXzx8LNIq zQJ3OqtuUjfM`Y5&;)P@)?@~L(DZ?T$L$Lvqz?U@79qr@bUS0+GCS0=lK-&|H_n7I< z?Xi7Akej#JwZYzLr!8#!r7dkH8Dr4{P{!JyY_OTb|LE7rf$w^OMc?7XB$9h|Hya+4 zsOJ6_jQBPz(e1>2A~~;iY&H0&D$2)>pHhnqlKL4{3o8KHv}u(!HFecv$4{JC2c+w& zYH0{7fnGgQr$$Yws2e}IwyLJCuClVBre?ypiqWGhCt4~ykFFdwrnbC%&Y0@Dadnd` z8%CMspQ4LD&i)v4&CpL~VOl-ZigjK&b6Fd*8s3C zP8OZUOtHX%H{*0@e7ZNan`f z+;{gj4^v12Q$Yt~hk*H4^0v2xXmnZ-s6xl!V7?8Is~sz z+GU~ae-QslQLV`g#(+Fb1I)v*KRvWOv3dGOD1*^uvhZhII|T5>ztmuMWqdz{1N^EV z1p&V)=ek?*+kS-e5-G-xte1$A**}K~6xSR@gb63+Z6tHo?~c&IkiYV=C4k2P8!W3H zmZWDCXJ>-cK0U9nv>aj5`F^mZP`|Q@eV~wK? ze=C~w-}%BL?Udsj+rB&=_y_%2@`53>ay}K#6y3ytZBHa~b<NQ2Rq|+GA zlwgr!yzGO=3H?jy$>O(&iAv~jm)0}}!)1~f0dpU=N$|VPz+hCR&^@-48^yQ8+wel6 zuYu($^pe=70ixQ!VxV8HjcEXsdtv7zdgS+h&YkRJlxvz)?k#R8*=#Mx9cxwul@A>V!m< z&?Gg@>MXAyeoi0+CEDNs`GF3Y|ui zq)|#GGMQ8o9!?-D@Za8wsCKy9+G#vp7mHv35hL5IPN;#J&oBrNN7t)fV~{`VP1Z`+ zwNl)slEJV5?neT;nBn>KVtB0^bTBsurUdIs!=Us=p!m#}!4QoZj4}Oeh3qEOQo~@> z%Z}sbh@0fR707{H7CYXHEjy6$5Iugk-_R|IDSb!gN5yI#1) z{Z>8{(w!=6B-n-TTx(zUgg%D7&BB%)z7rZeBHNN#s8ws^$nO_PbVgaOkuNpM_$rM+ zAy-HQh)Yw56E(R=B1utb6p5KesVq?_5C{blg&d*d1l$RMQx$&#j+Sg3^#M}sO=rly1}F;>ifOxx z{i_T4xp*%gyt+rdHBQB)zx4oeImU@V<1nap$=c*aP{j*_Q+S&I73NBEu;B|V;HRdm zA3!1b4BH0bZTzPnKpd1;i?>~{X~7aQ|0=>LNbT$HK(XP4D^MJM!{3Tx;L~E*Rh%4lOKF<&OkNL0uLDXAhwj@qD2R4e&1Ws*h!Zgi1IoSMv684Y+%D+K|bOemB{ zM0&ki$~Q_xa)DSYQVHa-;UPru-#YklNW(o%pXT73!xokHhc(K0A+z9kj$9Of5QDF} z$S@0&;}2|yIf7GwaN(G?1M#bI)loa3)Sy}h^Ycp2!Xr087*BZvLe*;_hB52#tcs^$&_sbHgVw~45N4#MB?*KQu_#ZW zQt*|D2{}oi9!bnpi1;RcvR07IQ)pG0dWF)UG|Cc$IRwFe^izLQWeVKxn zX%J~sv@#h^=tXLj#ABJWf)#k^BG)r9bt zfa%gl6!l=#;G9N^YD!@6>qbGDi93XM6Etr;Zx7zJ3<$d3tp|cLe{z1tAo-N)AwlLn zkFo+-^V|*q_O|q8FxFoMZ8tgWVJ86C|6VZaN!eXp``ZTSAi3`fbnq?o&m|=_SIbY5 zNfZOqGzpsA1ex3-(DT#uA_?O8jCwJscJ!J|`WrMu9$S}X<3d2wfvBEQ5e3bO*vyw(YY~@kv0%JG2#bC_fhTRZEC9A84UZW!drN0C=l$` zL|Zn;7n4A6-i>Z3Md0f5jv!61qOCA4{uS79Qr>oD*qvF83zzP&2Z}4tf~kPzcK=?Z z0$QkQH#A!hi0Farm6|yqS*cVB5;SQtUYU}Yp-L1ZQADFuNca-ILZ8!S7Ut_ThAgu= zCsUQ8RBDy#BD1+5k(XmOm&%ege3Q9QW|FIg0wKS+KR;1#5GaxblJsPqT%?eM#Sl?{ z595z8zDE$$YzeG7$61D9JW(QV$`yO3i}*FqQ!?^)VsbT>!=WH<#IhqS*k5|2pvPl5&5=Ru!hRL5{cx)Onn7;mSWQ_zq3I`RV(=^@{Y~I(;)y&5GU-eiVM!fUtddLAa-){d(`4xt z`Xr@94g*Ci7AR$kRJ9oukx^UGoFzyzo23$Af1@NtTWBseo6`~%xn^@RFS)>+m#ir5 zpJkM&QWSEb&?rw6YP4#;Ql6BIGJ=txf-gU=&p25FmOX2do&X9dF6j&W z-J%*i0DC$14IgrnXf2@JJzIPdP`>m7e8nZB;2&U|?2H9wh;bY)Ul!eOFkW(e7r{sw zRP-11;WLSx-cYk2yORqOvBe|?k`+>@Cigq6I~nF7v~~2mH;|llp)-(-x+emX>u%el za%`tlQvoHfT~0&kes>6<+_?_$Tco(q@o_GOw&$ZUK(d~?=mw4CoIJ_=7nEuJQVj~Z zQff4aO=_hIi?v)J)G7o>)HLvs^Jz946?%i&oGr;Vn?*upie9S$s3m}sFV8>%qTFQ8 zR~S zAlQY!3-j`-XhY{m4!fRr25?Rp&fgC>uQ>t23d3Xov<@pxCB5xqPRKG&g?gWLXVj>W zI^Vkgi^Y4OdF+QyuJa|=0NiUH+)K26F2}n|<;!919CHPhJNCnGNv1ycevU=wkL5to zzi~W%M_W>8EWKZgf#t=C3`Sb3Cob&$APiWBJ}6j@jOt7-ogOU9W%Z}3=_ zL1ijfBNi_2||%!OpZb<(~7h* zQL;d(6qsZJnFLd%pist#-eE-N=uKEyk`;weOR+vlfciFOJ%)CHRwPiin|td;d;wn} z6G)N;i6V(WDi8?_2B91ayG&vd#zqhc|D}sfuxo~;*8sck6YA1oF0$Ww`%Ko+-sYzG z5dwH29LAHelQZ69wbrC$t^kOW0V1nja1uBS1BfmQrC4~GS(6iB!LYwzL^o)k;JM}Q z@Qb+HZH~COjJ85g#gMfrm^-*{)C>l9k%%7Um4MOa%^bkE{0I{;uD;d@04||M; zr9f)rDOIv0QL;p76vzaLN}gJgE8y$-x}p|ypA0Eh6unTGtW1O^7HXB*=AtBpT98Rk zoI;sQY?6x&ITl4{tW83Z0AZhED5XxJ62$$>GtqIP6G=x_z&VIPO;(GS0?w7mBm2>M zbdJTZ$$kSkpM;MW!U5?}%19|M!G`WNKWWfRIJ;>KdrwP(hS{{iLqh~lS3joFSB>XE zIoaa~lc|DUen!MEjXH?GH;6*xbd2HcB64*8UjXz0Xb?Q-is_-=Uf4$SpAo+Auv;P7 z+ZVTB$!Nurf#N1U2j(!E(Jan)W@=fgDW6tP9StEwi8Wz%h+#@auu( zpc1+|DSfbrH!_Ij7jQ$~BL$S!`Sbx0Hr^*xhKwRjB1*4;NG35!BQ=QxDLg|Z&zxk? z^Tm9l*_@YdOie+=PYP64B#;OtI?U|mi?EI z9FS3sEAIO9D<=SF+OF)|kV^Y2Uid>M*{~eCTka>7C*w7CdloT+za0;r^khuo!`sHX z!Kl^2B}_iwJ(rO@7K_n!v(Y1(X~zn_Z;goF-f`#Xz!K9Gh}Cg_6C5X%o{=9 z?OtdzK@Pdo2f%ngOs4AYm6o`_rLszO&WPFV_Iwa=5-9wQU zI?Sq-NjB&&VMThmXEUZvcC(nN8Cwte+b({6qy;a`U@~V!p93-*8D5hH!0_Ro>I!kw zlP6%p+=noyY98$i*;Hs63uxF^x`=a2aTR+Z5*t%7(XxIfDotAf+pLkV2uJ7>gBZ{J(Noo$_ zAd~Z93YXb+(XICsXJ1d!^~=xc(}TIB>ulh`-DQUWuFC2^0n$3C8*|ZQ*aOTNgC=6X z&N|DPIQ}~R<`WT9a6G}f&I;K4w3Wh9L(4p*hmtcIun8qLgBSAKvly9Vza|$TVSXD+ z&yr`(Hs%8!&bF;Ayy*8*j|+NS%fErgZ-sx-X8n=}G&;rt14#FkYB(DdvO!9|C`GH( zm`uu4lSHOeV*@DG=+&uOv9Ji}q!gR;jG9!1s>qzLl*?dcW@%(Rqe!GMDl|HyA|*Ku zyKL-plt!3MdcK?=`bnSunF?DmHYp~PH~-jW%b#&~ZeKp~g`7(=N%v8^&)>ZB=bv|e zKf9y98=a;mx;hl*ys=322x%$ZY9Q?lw7GY*B}wW zW*#9GC?rX0O`4Hkn5)rBq#9*fTCQ3t6KVyC8YxdxC=y7OMk8uSXbrqvjmD6Iq!_6| zQJBP6D+Jm!)LB$y@)bHYk~fTn8iR_b69p0Bf6r`xuh#U@5x_$VII=LDkVoR?>cmBI z2*5*zvVG@vH%a3q@)W}pf1VcbyVLZP^7$DKA`uvemNOtBxqp*Y z!i=n(6uwa>k!OhnaK=gC1Cgl}3KK6`!&6{&p%;~uq9h4?mpL%&wK?z`8EOm)jSOi= zS|Q)47AQ?Qh1xV@Mxqkw(kYmb^}6Kp0m>p3U#&_M#Qr}CBU-JB?*wlq-EY<}JhE6L z)gUvo4f8D>y-V+u+Hg>c)!%B+(9zPr(p@^Br7Pr#d>4%#^>{JxEx}H-`1(;Y2t4ze z<4YuOGk#l&PG{^~%EA)DxlxVPHxw>Pvf;7^y^fR^2Ip%;nd(Ho35ipDF~~lINgBQ( zou`w)F~Jup^)h9ODGA;+Whx*L8fD3RrACpY7YUMt8UbL*NY!ffQl&^MOjhf_yo6Om zmNwid*C+E-CMBOAOoaTW9!I`Kpc*YYY#N*xGh470GY|#_f0dP35*qsf78t=eM?6N; z7oMlL#>!V-kg?=JFl3y0o)bxlAY;RQXUN!_@et=HOy=psBDIy%?Lbzlyq1>M91LlI3oiIIYF@KFh5&cECAdiYcMDEyXuACjNRK{dY+y| zD5)68TluUDe*V5*zTV(>^NN6Ik)SvYj-VO3QB*WE82P9nA;Ffwn2^8- zAD@7T5Fc;vAm4yK^aa7*KE6HyzQF-O0YRY5_6hMpojxGq?}IA>{Bij6&t%QGP{cS<`EP~|eho|TSpEZq}-+aqmfA*n0(e=Z~R|MnWDrkBk6$#0O zw>*gaMn6bC;7u<`UczYa3CZ&xdJvtiE_Zf)Y}d z-#$TsK^FA5Z*VZk%L9D_!hKO?#@9D6z{fu#G{8GB5I?>kunrCW?~MvAH$7Ql{|n{+ zfFEm_M5{jFgdNJ?4u|SV2=4s*9L5`xOU${$B0?z~-I0zLD__C5`|%(N(QD5;vim>t zf#}8$(LjYUpK%EXf}Gl4?1&!EffHGM!~=paxs0;{X7KyQ5C}f#N#LV@g^zVu7!mZ4 zLm(*KA!rcu1D;x}NeFajz?Wog+*`(Jf=TpzF$|xvbuU5Wy`)bTd;Xq^Px5Lme~Sah z1MjDQ_Uo-4Xp;1`6iwnDB))=MZvJ5w5!jlC>vpd~5;Nn6|+ z`6?RpQ4?r%uz^K1W5fmOX;;{2xt1FcRIB?SPIB8gI7FB6N#JKj@AY1w9uK#LwT->-_kaZ2S&?KNQPC z@U0POMleMf(TtFLQi51<%mM$6eIAKs#Jx>MGrm2sXB%Fce%0>r|8EBUc~&6kAg9Nq z4K1Oyr|85aH0Xmh-U01kY}yBIAWk~vM%cZi{b@^nq#HBoX>T;c_u6PQBl|T0zav-n z+80!vU!&YTnfcHQ%`mh_;P}<~*D*t$(Sa$t=c51FkdJ}vwBkZXU}E zO`dgwgXUDc?TqF`Kk6%O3B)^mZjYv2P4OU)A3J7j9RjsRRaA~Euc#V7ssdp{h#4v$ z)liP-<0hkS+vqV>71L+ePOh!5udS}EsU0=JQq!Zd7B#J>&#S7fKryHC+Pd0`%9{F0 zRK=*Stgp6Ia_g(cRMu8j_WzVK`f)|+fSOiDmlk+^m5kE2~hoq^-hf{HRfgc&->%K6d(;QRTJmb*>H7s8%}PT_pn45D-{3dqG779f(%ZP*YJ}Ik~!WDq`5GYscc%dc3Q;s=wkB zN6_CBM2BFs{XkEjm^PX3J5HGxJmK5g<9y_`c z1xqR_s?fvbwPR{&3C7lq8Z&!Z)%2={ItW}nb9~i=+Pbj_=B^uu=)B6Bs><5Ym7^=i z*VT-!sIIK2sconlT{V7e&8UisQHX!6sUBBdgTAe*DN{v%ia65Yzc_J;WUShQ^$HuTFc$}pyurlyz%^vf}&4(p$qmYJ4T zSe!Pbtf;i8D9>1sW;Bf&l$K|-r21u!EE-yB9$pIawc-L}y0IuLH^rDY+L#Jf=)!bk zUcbVev^-0xLqSen!GP3MqcKe!{jVS|`;Qa9wfpE9WlQ0QTWOk67nsnkkIBBMltFC7G2GC|09DS>aTUj3z4rxkg$6@rgRQt)nNwl z(?Pr%{~?nWk;-v4rHK;-GM-2;5Tqx_B}%1*ujCnJDg*3#9IFX5YQ9OIDi8@Z#+(wp zLBv<-i`0nPq|)H5SE04=$=I;aPfp=ab`Jw~ z57Hd*0~-KK8V(@vx49!hren-Pf$0f~cGR|FD?`rt4O0zA-0V$|`xavYs{WOp09Rb0 zgQ>|Mwm>G`QxQb>0);WL<`=|XkU5kaM31JF0L}6A7=rlx7y3P&Z%(pmad}Rfnx7y_ zF!7}c3AqvzKS9rzW%D&ci85Ko7faN9iH@(6!C9LjR+|b1M!0-*=_VY8B@6j7EuTN% z$WKfHpQTzU5R3Uzi5@<6O%6)18j`XS6QzBzpZl+%vxwG@h7W9AguX#$`lks}V#cN? zD_UMGqv(FD>sR36I>Ch0`OjU6?stbm>eZVZv0`?*w*slK*&EuwA-Akg!oywrA?|>O z!5HNMR4mc?&SqR&_0$gH_kZjM@w?nH!iV%by{vxuqr+2r5Dx?E6%V!11}A8E2}!~n zT|yFHi(?qRK%?O!ZcH!2!9QPIB$8$G_}KZ$4bnU#yk#1JP9&5HBvM2Kh!sL~HA2Zm zPyvmeuP~MIMTHuXF-fWCMTPx$phN_{LB%Nsex5;Yy3bok7eMiGk_H6yV?>D~@0DO& z#SV{g?mGx2Z`!ls`U4!%k?iX==t6yy>J2Jg?WN9~J$vQ~H5d?VJAnT--0gy^JuY9_ zbmN^I5X}7%$0g+F=b$>=-tQAZO#L(#m(||#q#>a6#U>*!Lz-YpNK+!X$S5;t5(IPv zjUj`dP$CBqv~0XIqXsqar3ht`%2HEAauvcrN1i9a=At(hR@=kZQnn}O5;b->8NYWWgYuI+Tf%UldWqM1b1ZoF&%Rf!~El^U5T#< zme2Dvd+%m1o1VQ?ehe@bc7hu8zEcUmUevohsL1-GB*F6ZZt>#w?j9a&JO2jCZnOHX zIl5kgu-2{nyn53AL1}i**6$Hl&5ft}5JWEvJ*lTP_r>ng>4O)ucXwfYE3F#(f+5NT zQ(}TVftMvn(CZS0rY9uAjUzA__%aj5hlrjt`24gCWIDrPs=(=`Os-Z+#7SC#RHcDh z@Nupwmq?@ntwteFm*p$_%Vg;Wg%YP3GM@B*;PTP1B$!X29W*BN%+Rs4y|$W^zY~N9 zL4>Q*w9S)xRj#ug=boWKLo+W|Blj-?MmISiQSYR&UHYbdmsIeE!|K!VFzDluP)M-ku-rpH1@{wY1xKZWRR)+yi(s{Vk+?|#`ef<6AhkN4%gW+5l0 zn2O_BFy6_}uCpL6|AiVoKk1yU&HEKm_XQ#S-_6xU)pwIWpNvnuLJRL=(3_iVKLn-+ zK3p8M*3)C39tiOA;3ezgPLOY`7V=HHqwfv9PO#Vq_pUk&9_BAjcK$@iT14S|*Ye*f?LX-G1ea__mP-E*FE4n$wW z%B011SFw?W=$8S#U2D}fdKzW2Di4~BE9CeltMN3dYtc-<++-}R1d61z#EC>`tZdg_`yu11+@)D!NuA*)(qQ#jOSbd_gwuiCxw10RLa8-v2*6d-5xhQC@|@0jo;xGP+fXyymtw8mkO~*|E-%3 zw_}f!e_t>Re`i0!JU*5~g)e*v&Czf)M)1xBMz@RctvvUYuRPx(s% zNHXPQD-7kvKPPT40Y#pFgD8?_yKAn6Emo+C6*4)>E3o}CxvZEn#|lV^Nh@QqSpbx+ zb)%kwIYu?BZ1z+cWorDf6sTnuxX8o9Y1KLT*9An$ z?V$~y2UAd5gL8^5aykJ&4nZcUxe2ii8ebzT;mc$lKj@jdj|q&neKERD$TaVZ2Q6X_ zo;yMuuQ?+DEj+&?_3@rh0zt{m2=ERiMb!ytMK3)BBaGxVXrk|mNbT^;(sYf z0=lpuPdUs^Ei0AP*L$ihHfOuV>IR(AZPWvWV@FSV5UvWtRv~RA3Z18hHF`ZU@Yb6= zPCZ-VLMexnRay-ed0OsOLXI0Ax>N8e1>!LBtuBGX$hRVCL*N~TM|67J1`UId`;c!4 z^Hu$Q-?^g)_x`%+-Dm%{;qK9U#x{iCbN|!Nz4z_Ty$22-yYSmfHnimzxh@~vKX}l0 z-`So2ItT$-nWVK_&Yd`XVDHZF z-h1Jx`|kDLH+pZ_hI^lQ{{8QN-FxuJnIrEtMB$t!A3d>e@Sxv;L+2K~cY5EsgTnm- z>u^feu|o&W(YyZCwC^xJRMH@f^EiO!_8=oQ z2mDyo=$Ti=0@CO~5dsXIsnV@)Z1mJyk#Nr&oe|q4*41mDRv1P{yGz&dj(@ zjbDjY^ZqJt#J!*|F(r4i1AVzDAg9TOiHiq_Ne`hxW1uLdvFFb(z5nH=ErZ)bc5L6W z`Ku3K`P;fycRZS(3xzeS2YdZi^sPt?TD0a|uWp$D;+t-`QX!{3yMJsw&n}@)jlWv(;4mTfou;OxjW2I{H^Hg#hzSS$$ zr9+;O8lzGN%w2T}uqBpZPkfV351+xIWSyQStrc_xcFzdBJS(*tWm1_u=Xyu*G6a{W z8JWL9ib|4vk4I0r_zw3B3Nv#VK>G6qkPUY^VL;G8q$naNK=e1}63{~dA(tYB!2!a@ zvHB2?3+NQJ!^PqnB180{xT40f zA3mWDz-pNr;w39ZUuYJaRIv_~sZ=ACo7fW8L_Y1rZSHDRYM7*mTQ5bYC@fAA1wkW2 z4sUNl(9UwodjR{O_BaQaAeY;r)tAq;DeG0EY!spkR&BYNm8mVPLeEkqlHAM2+7(K( z6W2|t)(D({$--7>WlEI{HC?P6*sx+RJIz?O+zv#PwOolxnOcict3^;kYgbDOuHwS4 zT`$N@t``Rozu4Wi>2HPzbrk+N0pw^%Km%Sua-9(S>(CJ$@Tsa!Zbg+y|d zbFQSEz#m+Q3!9+~6E6@KglNY|TZBB2l_Lc`&O`Va(r}48gwxDsG|cmjh@UofN<>sB zf+eExa5P~X-_NafPm{^0u~jSV8l?{0A~R?dxRPs}a#kmW<-u~z3MI@gI)$?q8C#>q zwbsU>PDUk11(!#o#etGAnp{m@|`oW+Iq z_@D+E8vZosZ*XlmLqrbDX=V!(4d_ikcvx8Iq-a0oRLo$Am_9Qyl;1*Jjm=XBq=3p% z3@Cv{2?ql_q=JGsxeRKo8evK$@WL{H(QuEGDWt$zq7|%^1@J_nQc34(E!D>2g-xv7 zq;+5yc2-%6k~C;0g{eZLGE1|s2~3XL$>IOf*4&|R2S5iwSGO_l-XZ{daT=Zz@DYkx z@&|^~8AKl82Sn2`pWQDiBs4HMIwC70VA51-dK?DL4-g7TezVK%HWo^YHJMq`VrgEU zWOgx|la(*YD$bG>X60t(6lZ3siX?_&Nmh1oPIitYD=S;g;_)0wVXh=wmSf5(&`R@7 zSpXIQXCP4&<`v0vX6NS=6-p$kg8bYpFx-SY#aClf_Y2u{&*xd~^%*p>K z#yS1OOu^rMf~O}NDsm^IUv6MzpfKDai;f(Zo8Xds^ejz|Pmj-(Bznc=>B$Mnak**Y zq|Ah**feomJU{_Ou_RS^AVfW{Nf~5*@Nb{Sy@Zvw~yM>^9I} z^yB|p1$wdIQ%E+*u3y4C5;K8dBe+yUw26g?qkv{7pw$TQHiWYoVt!!~Q6Ul{h|YJm z-o0u`y(ud!P+2-XGJ?h|1%&1+m>Xiz5f!LOMzr;ReKH+0Oc+s>K7rfsNqod*B0A0t ze*n^)exRwcbb-U;v>X!S5gfoTObTc$2nu0WKY3q^$CMN!S-J5-kN^*d6DLkr5@&hHxiz8v@#cmcwu_|k+qE%R!$3Gsys?r3$ueMtriC^ao!{GAKi#|NUH5&m`twgX8I0pfV+f+zs~1d;Kx60&Cc&8mH%yWV{B zDqB%@Vu~U@I1qA?-n4L0Rb^IW0Cx(oC$}wW>uO!r(T0?9`;v}sbc|Wk+O}?4TSw38 zWj!l9(FUb;-BT@XEiJvBogF>hNVqP&ucvKof7hCo=%KQve|1X>^0}=&t6P?$yGLtB zXGcd{`_lF$eQVpg+FFsi?`dLm|1H)z$GAftkKJ+T3z9n6Muy`(L@a2(bOc2AVUU_| zre16?BPb369fGDu=*O6I%gS=r;B+bS(sK$D3JYcsuf;^<-M=K3dYW=_c7Q2guoemC zwvKjm9qC)rwyJY!TYn4E?Cl+^*8phHg?w`B-4C^Pb+)eSMW(sC9a;AKkwss%V)?Sx zzV6;Ncl2~DX$5TnK0vm)t*8Bt*0#}hZ=3&WNN1Vd zCeKfu9)_bA2Kr4ZkMV=k5GdkU>Hy=ex^eN6_O4d6L+f9?6sOzT*4K9T`qtK#6)Tr^ zp$AJ}+v?>loh#dy_AG7hY`Opb*0z-ob#*Q8?Q37&hORDs{dYcl|B_|>t*uKtk$`Vo z+Sw028EFq#Lhsc&M|BMtU%nwy_7B@lgnk+DL-s4!w?Ow!CC95%@j zn7MLp(_#$$L<+sqF}K#~m^;4?BS4)_N3{n71{W+{=^8a)HEe(@C>w{rDG??zDPR;w1{>o3IS$37J4NTWGKrjQCT#_mJ+z_GS+HG22zC|6etlwbW#EL*umy!W?j8(jBk&$ zcGG5kd5c?BhfgBqe9)Hp)o>nYmtm41tH(V|X^~@>fXM?#jo_+Wp+vNy65Z%? zuiGfy{tnO{@SXE!p>)GYGQqWUlJtED$Wjp$&@dD}?Ggt`zQ?#7WC$XRLmLKNyh5?x zw2b1}ie^QyC|VqaEus%3B;9`!*x5HUa`KcA3aZV0Ii=8%3N@B$rFLqNQSCy)z0y`{uff1ewHEy|q@!#ARfJ-S zlSSrL_<>4nK|#)S+a<|7JkFeaN`V$lEy!tCWao&H;cn0me5-gbU?9-2Fvq+jXE(QZLXY1d@}ts<_*7tlkvj}an}%C6`j7_-RFYhOUjgD#zTqO8^tO-NzOxP! zwNzNW#%7ySTJc2m^5sy-l$UR3|1E=ZlEXtC9mKDRTWNu zfgNcDL^)(;nbd%Lw^uf%WY|$8Ho@%$lIv2aIluDm9ocX6MkKF`M3Qd%)Ha%SK`>hU zin>Ws&>VxKLlJ(0TR>C-AOYts@WGQa1n9PosR)y!qA^6935bda2?)h>62FL9MW3vd zPB*g{y+t&Fx9&GyrMaK^2=D$miFG}SpTWln)0pNu4F&u40a7$Y+{Wi26l0|$!rA90yql%E=SJ=6v0BOdXrjLK8Uh@og_Fa3C7C`Zh~bnM?Ug9N z@0rdXYL18k=D?%mkzn7zLPALs9Uu?H3%(e{CWQMp%EShR;+7a1 z)8&0%{dLJ4G_aV2H%G}WSYmwtynn;H0h>XINN2g*tk9xy4G<4*qd_XSAZs3YGr}&& zEZc1;EE54!VM3n0X+a56M+iNu3^tnr@PZkL+aUT6w3XWJsg@ytfp8g=fn1T7bKMm( zhc59Pc7WuZG#?+JKm{u_A?N6liYN1h#-KzE;+sL}L9bvBwi<{`Vu~<$Y9upTnH%Hd z=NmjJ$Om1M{d|JcivK)0ZTqoZpZ*Db2fJ@7<~(O`gwRJwyQZYnkl+N~ntU7%Qd2SJ zY&5bqmjY$+I+Xla5qPh+=^aR4K%$YYSTzT^4m~zkPv8QNqr!wgH6Vf54CRR|JMFvC zQ>E0%8a?$Cifu&LQz=!b)CxIdqM+cK{f~12=`RZXQ3`|1G(-Xd;1z_^xk5$Yl<^;a z@gi7*g^o)B>4zXZibsfFAOU0+`Rf5u22J%xm|Q_ncqo(D?XI)17#l^+?5JWPCO=ol zxVG=w_FjMI-A_Due>qB!aKV9!^%w1BK8IBB%9n$3A(lcKX@u8C0uT)P!r^r5w2HDa zR&Cdq>~^h5HP2J!k``n8C068vY`52gWa!WZtztnTE0hN^u4Sq^Pkl|T-s&=at)gxMGO5{&8L0|Z&!$~P-t*Dl91w$!9)=MFxd;l8@*u!0nSGc^q7exQ zMH4I$0a2U{k~qlmP4XS_T{r%VvuwDJ2* zFRkc%?9G>+Xb2McBH-#D%lP~5WxjwMk~ku!j|w}`pWMZfak4C^HnA3repUf3RH8?C z6`RAXP$U*AsnXY^L5**fRaYw0muN|j^k)3Yszs_yi;f@;YWJ}a1VIqD93-jpl({Iv ziC8m&pei{lP0zosjEoMRJS5%@k~+omuACq_PPo2cr?|kA0)_U##>o*Bkq*TZ>1Q5z zOvEE4f~K!{Ua%k}f@!$1HDgkIP&mEJD~w_Mi=ByqH~#spw;yg__LqOZ_i%L#wb~)mH7n&hixd6sEGSj=SagAD6`f(dbn?U@Bv^DoAa;Ov0UE*4!r$;a zvEMMB%4;5kNtqD1$xLjmx(E}JaSYHYF{s!zr1(2mJoM}fOK;im?ZyX6!Z9)qGz#~D zIwKl!4jw)WA8--0p`bX=KS^aRmE|&-(;(MaT_!zB(U3m18m%s{MMDWV#a(I9)yx_7 z2%ReZkY{R>UIl7cTNF}@4GEv7O0Zj*71j&1K_-Jmk^-8S+RP|5`5Ea~o5Nh84dv_k zs1H&M&@~VuYEXQ>SBC@Vo2IJ$CH^6 zoR{dQU;fm$ANJj};q#aJ+37*JERp5~yZz3b#;dmDQ^@|{9U+t_Cuq>@YACBFS6Znv z+6}rYI}5%rT1?c{r5wFmYK--$MrBLD6!iq{aJnlh+-T+k6J)%ZWvwQ(A84ot-;~#w zWh@eU2D!`xke5*=GpW=DC0m?x{SD(RB3NiIPl+X1SL#eSFs|;fN{TWOV^F}2_Kivr zjMuEXfeDaHe3-DX%S@DTW*j5m@aJ7G%&WZd>E{;aM<4`3`o{-fze8gTQ)&SWcXgX8 zS6Nw|Nk;{<<4q%>4Q*zn8hTTqKocrWL%B;SEyJNVs<1cPc+*I?r-^GC=^XS-uP#-~ zKmnUxZ=ACLIA?STLmL~tT8{oye*o=pF-4LDvMzMRm_e2lhfD{^pD`YwAEDB)ST0yV z16Szq@ig)-pfp7ojyyKiUlc!`2{TU(8(^ZRCd(UVl(pRRO|LvFZNalkQv8GXX*c*R zzu%cJv2_YR3iS)o2#^d2`qs7{GsLJxRs?v(Ej)03y3|ekqc{5 zvBL@1Kio}1iG3%ZC- zbZ{K>1k`GqVN8u~xLKidO6+yO?u|EY9P%W>pw^g;QY-urG;Jgo%#QY2Ean<(0j9XF zY2$>uF_DDi)^LK3cN~)fD!|N>&q=6D-MP$&_y;-VIeB>YyG z*Ls!GLM<5WpvC`a!8qZCbDE7SHsUsT5n75AJ~oRs(Bxu}@gNrh*981bzB=gwA_#wq zyw}Bb-{-I2WJ7}K`7tx{Bbhu4<|9rmc;LRLzj=M}e6u7zAxAtT!kTLf%x+`kYT~T?(aE{Yu z7|!t(-vZDjPK^1aE}))}3h*)*hv09VA{l|QBX5;nLZMVlvVtYq1uKDR(b&j{V2baQ zyjUhA5fL~17u@>xtMBf5{+60VT*H0SUN2+lQb_!43LFfQ}U`Xy&8*#E*aM{<+%69Hf#r2AlLKre4$PhP3qwPG>B7jd zB=6J`FOH*SD zZVzz7urJ~&UgvP-v=AcrDP)x4fG6=nNI8e;*=bXKXJk+Dot9DPT>9uU&;0GaIx(X6 zL1Kk+gb}gR7~u})JQ#&sx-kS2#>*;sM~tH&{kWTBX;l1-vsCl{(Y;WKR;_wlDS9U; zQ8A&iTF|{!uU4syrD}s5O-O-L)?3Zm5-WysTTLc(p1HPrpiZs9+j4u8D$VaQO6mO>pB>CaFcC==-F8W&x8ltP#)Y5IzLfpLK~T7Wq)g?wS*f%ILipi8n3%$8xIa71xT1(ZU+isp;Wy(rUm^^)Yw7@q-%uJuQodH}M zd%Yky34x@0HTSkx0eU>n4V0i;FngmGvjB9m>B`@yR4FlJ=)U*a=U)8h-`7;D^CJ;v2yxy!#cvz44>wDC zBN9G3T>4ycSVt*V{$J~x;5l+TM!91pRvkb%io3*+w@MH#QmkBr1`NWxz@$?;I8;{p7zH4QT%u!ic-rANQ70DLQmK(}%TE`T*OGB!nY@C(qQ)=cc7!%00-VYaX>jfcMgYp( z&lLCu`$vdkq|PM|tiLJOR#{`erA-nUk(ZU1qtG=hZC!Kc`js1&*Oi)!XN2HF7ry3M zli`z@TOsVE#Jqr7c{#H2)F2WPK9Y`wq~ib-dC~Ho?!M)H?LBK(0l3l8)xNB&t+%(c zXKicex)rVcJ?*`{J+0k$bmMPrE4!B5-L+=jn*P3LRxKaxOYT^S^iK**Bu0ana5OKxryGJbg1WXPNzUbQZwY&(izgl z;tbYTCN3tB^*)?1VQoZ}%fv#U z2IVHk{0kzZ(LG7CaOI!wte0x5s$ETs*lD6!=w+0yt*)=O&8aDaGoL-h9|23mJeir( zaRUbw4<(v(&Zj9N!+jQ!np*7=$3pk;WU$}fvUKTPy+G`AF6(UT=tLiko|SED*0uC? zw5+?RR$dwXImujSZq1NJrapya31C(Y_1-pgv%HFc+(H zdDq&f)^_!;YFV+q=ccN>tH9B5GLV&`Y{w-C-$`P9@;dPCisLaffrsGI!>1TbrV|GE zApsPW6@p=wY|F}r?kE+@?9Q?|i!!nmsl1+C9xRb=3>p^$pIt=E~ao#^$oy z<~tf(wRM;z)QEl)^DCQgYHX}*Xsm8>)z#KFRiY6^Lrq1stIknb<*af!E8P{f4GSt8 zn)#yC>gq*H>l)_NIc~beqi3(D2%$jE!Mi;%?toEPZ2)pWGI0VnMJe!|l3ARP805<& zgh$0?m)zd7ZgGB8fx&31nJ0^8nCRr>nTdrOjZ#uvFuO1#(nk;&mmV8L!X7mF!ggQ66lp3viy}itW=`0q9#agDf zmMBf7+7fwg!F5qxV2H7li=e|1M4EY>NS9tx`Nu(pq5#R{+{!y1t?s-nmGMiLI&Qh8 zbCK9TQ=>83YqAiC5knb9 z_^3VUVqnD32bZo~BElYWMDW;F*2>k0M#^#dQ|dLq54bQw1{Y?t#idoMv?>#-!BFXC z#{>`^`bp}was`5#tW;ysDilbv>M-{Q!8!^~Sk&m#Q6jH%SlXO?CtL`*OY~!%r3FQQ4k?FMW<|PT($7-%^!UBx61gbQTg*1DyD|SNYyH%Avqjm z^PQBCG(A2sCp{r8dkRALh}~0!lG^QD1{a*e*IE2F!toe-sN=)X`VDs<=ntfyp*3jS zHzdJbS>w=Z02V4E><>kraIi+eek^*IMu(7!LZ?w`^jZ`8PixIq6Y|Vv)^2B6i@H?p zLjQG*4sAh`ZBaVUR&3VYv;<&DA5I0~ml z5+ts=ZSkDNt~cNNY{x4@N1jqM2~`q*flsbNWsoNW2aIq^#EdDErXfPq z7~(4s{D6xM4XbB_hnbUjL+}JK8B{OMA62>FdTy_trUt9bs#6uuMLP|x+Gtgxkp>VT z=(JnH;v`YlpjM#sL=|gA&jr0fuP$@zls28#UhM`t3?r^|C047!sw+`wjU}ZDgAOG& z1Qbx3ln8ROvkP;sHl4fb3WyHjXnzAsjxndf^{1FPK}>ejO>@^+RJT3*;)Lo(50t91 zgxEdhfN-FToK-rPO{y`wv|6Z$;NcY1L@ur=N3e^v zxh;sqTVz_RqG8nITW;5=tra7vuq$;~20eildL(8H0LnE1C{tZpsnnKuJ%L7<5~)ng z2dF_wTT`XNs?%GoUZWr2Ql%72oPfsg4We?mos(0@-`>gW4{|I{-83jq$&(-`FgWzK zmCcL#tg{RI?)&PQZ96Yr8oO{8Lhnq_jHywmfE^V?W5{_Rf!;w+VMI)@f2bd4Ie!EZ zsMk4;n<8T9=P!)HGemfMyg!q~1VodDhwmrZNHePIa6rgJzI_{zwaCIpH@W@c3980VMfg-H}k@|Ugt`RDU!LH|`QHsB9% z6Pz`6P2J;J7hM&2-$i!=*qvmDu|Nk8IOz@HBxVlpfUBq^B0CAbIhrxCmh z4O~>$%x^HDMBJ!$*?@%dKYR>(Qq2b1Vbq@G4(353804ZvJ$Q6V$(O6Mvi9<@A4)4+iS` zLXbdDzu<7Z9!&EiGlUJ&+mZQ3;zbArKro1Kh#biP=MRbmK?tJDsHgR8c5Yn17=*R(kN8-CXV| zGk`*PhSi2-r3Q2VSf$Bs(H3J)-9%ITE2^DK#EQ5p$t74bq=A~_Qu_t?aL0)00?Y0$f?jAd~`}5X-AwnO_;H6jqC;|tM>NM@UzQ8w#{6)AyGLty?5!3}@$$k_xhIoRIkQLwoKwVOpRX3JZ zRIum^tyQ94&7uJ{Dl0KB0I5n!Rl~Fc6<2T9v*08^XXW4xVwh?*&_77qDKzLi(B!FR zt39PgytdAbh8;$&(ya9={Vfn2ec}JW2a{*aUnJ=kh zYeOM?nN?+0fi7}LlB*8QCp@JMmf~tpgG!FEhn|K;q%$3A6|2H?jqDtc9`sN(d2BjG z4QhesxD6$+MqZge`cdn&#aUTQ-XHExzk_4YT1w!9p=4;Ih*R1HQp5qL!bK+o!je*z zH`aRQl{;9K&6+wrIJ$jaO-mgT*C;0Oje=4DqmbbFdB-gVQr}=35)>g5@EcD8$R#30 z^q`3F=3pD53**aONqDnD%t5oHVixz5)mx1=Sw)$~Ms56&vQ}9ERuNVx%7#1{ZdsL@ ztpgGWWw-TcNr99$#!jH376Z*dDeC6|UQwgOxEz)zyiB9k!I#qN6$*HqsMMZlQOoNS z$$sb(B7o>33>uARU<5lk?1>j0Y8YYWP0w#XFyOs}i5};^zpJWn<}`7GzG;peN&PY4 z$wDRZeyAJb(wn$=q7xw$B#47J4U7a>1#hvRL7oaE;m#ko0gfb;J)s9kzQ{Ku6GjY4 zL03vj9ANYf6;3;EsIN68KIUQYqk)N-F1t z9!CF;I=Qya>zQ6v+-}pBSEw+Rr;*j0F*_99x?!1FG_IRyTFm=SsGvN^(St%d=$b+6 z+Qb}V0({E)9(?!6`BCrSSn#E-eX@kfky#1aOtgaV3L=?MJP|k+C{c!qAsq=ipi>9F zg9Nlu$P4JPA9*CYsly#65dvx8VSqGHu|TBad2}n`pU+!Uy$gsqG$%m4GLl5xoGZOn zLC6p43gI@Qos$YqGG|y=)LBDM=s*IeR82T2Cx(qx$n|!RphCK=rt+3jnG)2Km+DQZ zpH)M<8f697^yC<42slo#t8i$b9Q+{4#K@cALI#OKL{m~Vx4eB|c=YmE@Y(Z&KbH81 z2qKb_BhhU@5Dq;Fy$K;={1YOG)#-W!AtIdt0K^#4QxxO}CmP+XVM6fE{56RZzn~6c ze#uq)b<-)nqfw2(piQhkYZf9Ev6BQDKtdJlwa0H=Ck;p$JjN9C1 zB#C?i$plec`AoJ zv+9gyY~NI3*5Q7n#pM*%L9c}_@Yt$Z>#%21leQG%fv0PM3aYXhF;gkL)L_sXN-+`^ zsB^X$PUJ+*@c40$z@I4=XgGvbZiWgB@k?NJomE!%Jzu@{&V}KzFz?vt*&SbO z>Mgndj@ZDdGq77>AoV&N&mwK+VgV%FlwZepU%DYtsssBT;QT7wATZAXa|>|#92T9k zq%e;lG95apzlht~?U;g4(_&X>&02IoFgZs(aph)<35rgIhI?wI3eEXo0Sp?wy4F+g zc1soIaHAuuv@)xq$zv`t=)etdoi*-JPeenBTyNAEaY@#y6yPD`#{MwcQ9?c*-E6#w ziTFW+0o>qhA~ZD_?#;;Fgas8<=gym_F;p~`KYD!3J2VzHeBtcQjjK!3CG}H%XRB!X z26&$C`QT#6&t?RNp!UG!boKQi0CpG&1qlP537G%2&NL2UuHCG!4f(%LINsQVL=wzh$(J* zi%ze$V1yacrP>M%s<7F0)r)dMR| zw4swlC)Tq}g!Rb>>zs*NQ`@s2A3w8u@7W=Y78>)0jh+1Tr&oGh@iEh)n8Mpq=;_qn zbPJzNhqi-bjlGczK{}AUBZ~QhkwB|caHdELfK0;(q;c>e&WHdRc7SPaTy&dOR*tF? zrM+CHw^SEpvU;5p?JRXDqrvbW9l`;64enohlg5Z?6*hxGYci-6n8YS8 zF)PeEH4Sh>r$V__YsbhSlf`6IDfFPl1b2jucWdR6o>&}VT7QR*;)o$414k|m*@p{E zwvd^A=T9H~d0wVLd&j0DXHTC$cV>7HGsP|(`)$*A+df{uwl*#1hDn$RWJB(d5Gh2F zbHoy$G#&w`k)}m=cc@8<%#dAx_5m-DZ;t2{!KvtOi%Lb1f~~miu38MV0W(-NTB`{Y zIWTrpiFP3v7^yUCGkdvGE6{sVnnA`pGcNNtH-qxAvdiOEf`RZ zg@#~Cy8$UXFb`&fasE2a#YL6#0BKhhiW28Yf2w3}*&6LP}M^Qe0#r{e31a z{do7O5Bsa66+KV?bn4>3(8yTy=*7byz5DvdPd;*QYi@G%bYCW*r8d;d@U%FO7o$oE zsABFq4|*VAi0Kd%UcZDdlI-^E|_8^#~tFHxH z0WHcF(OsDw#%UL@ZmW zEyX-X{HE5swQQx%qSnnTg=$4V84KnenHA+~*2JQW33kVVA#i%5R;y8}tripJu1hTn z1LBSa*?E7Q?kb^D8EicOHggD)LT)bVY&e1EsF5aOa{E91<15IorzwhBqtG0j>PG_y9^bZvr*RWdOY?v;mroFkB5f z-k)Hq|#h-ZmgyhIm!U9}}Azo;-rE-6wKC=2tX4oN|NoFck!?Itud8s)H>mE>f9_iU3WSttiYdLa$p@PF6v_UZR#rXBQRa7ZuFTE0p9H z$)$x_Rd%*wwnUPn%e}T0-na%KM;L1p@rn#i1#)EA3PlpWfr})C``oqh$hkr9*o%th zRWjWaCM@36{N&b)=f3>qyLbM*W%moWR_4u^b^G5})f;XAKF90~XQm`a2eV+5L1bjm z6_D%-`X|xbk}pPvgfs=GWKpz34h@llLep3Y4;SJt?9~;DEd zEz;Xqyr*H^D={u1O@lL^z)YY-+BGc zirb$5>*Ejiuf0*FurGZ6_19kQTlMf`PrbHz)4HUEAFg`u?dM*s1g{k9(m|IwH!2w( z2H+KJMJNX(zr+MYq$GqP+7U#MWR5TBADn;}NH@M~0!6AxjL8Gwh*GXfiBAzHOHu*; zNf1j?QZVHMb1srolf{zcbP2Fg1kOoGOay`=6KEWa&XC}dgp8Cpae^34HN?p&7?>dj zln3yXIJ{X3CWNHs0_qc=1|*6&^_uwnc-@W<6-waZ2pVt~hwTt1F7(1vWq?umL{F_> z{kQdZKKJ62FTS^;=b1-e{r1p~Z$EhN#ecl{-Y2iDdFk!f?|tEm4|c!z`IB$|=bPOh zF9(_}gayBJt;|8@VHg|S%8=q9uNFF1guM#F;d8;qr(co#=7B!|evcbyunJyBK@2b# zutN}_7+rQ8MuKEurU;#TMoKpA5x^r$a#CtSmLwx9AtOCKDJd~IIWb8Bo=Q#6&ICdQ zmJ~Ek!38~kBQux%a1m^>%lEcViDPHc5 zdK8c0ggI6F4KAIs*zm&c^}T=o*Pc!P-m>ZYw?2G-{R8i8*}DJC_MPAVbMuz3-}(Hf z8*l7hb<55F*tl)$*T4R}=dO6rV)}I9j7Jk<0A+(vP%mmIP?8^f_ouVK)`=~lKX9?Z zA1ES>7%()6W z>F6n_L~-Z*C`oADx;r0xX3y_Ge)`*ieZTzj^B1o?{o?D}Pwf8B#tjd=`O&wJ^xnDn z;hXDje{kdOOMA9nIC=be1;#LjL^HOWF#eRUZiw5D4{1-qFgP8JvG8Fy+d(LX5tv#0 zhIk(+Ko!D-1f;dm`swzDMdFE9cQM|?9xQ|H4dZ4EF{3Bp<@*^yAP7OfPz3dR1ceF( zGp6LUEPMN3J5Fu=de_l&7fv2Kuz%n0+qWJ1;fpWc*z))TZ|(l=?FU}i{L4pAuKD1{ zOT&jxj-5I2Vl2go0;ePg;*voXtK0EzATa#`nGiwIQ8y#(hX$hZW$swz0q7D^`NP-^ zo(&_!w`}6V+XH!pqkg;!qranGrd zv7w7Y-r?b~vC+$y4<6jS`{y06{CfG=_n&_J)}h}<&mP2P$BqnN8auQYK~g_|CU9y3 zR^U%$qb(u-hvf}mOSr($iUA7Y0w3T+gx0ZY{026mP%5Wv5isLz6obJ1MJO3O1Mh-Y zjtWA+b2tHd1P@#*Kv$6-@HH|24FQ(Z%n0@dXDAfGNFon0EIyv@p4+k0sBn~rho_b_ zv_1T{S9bh}8I#z`&{)>U*u@Jwf7tu$_FZEacWry_-CqxEIeBd0@`W>Fr!HL{`pTVz z9Wkzj)$rCs#nI$~(shhnPHLh)pS!L#^gY3*bJ{X@FyxuJ_&dk z!N$P6cqv83@GxG*{d4U$$MpnvlSD{ujM$L$HRYJd$;58y^kG8rKJ@uKtxw=lz~Gta zz-X{`bgJCediRr`eEaj!%ifWp%L8Mv-qDLYPJMUa{Mhm1zrX#L-}is@$$Q(!hWDO3 zdwAgF{%(CV*hKw`J`v{?Fnb!WWhpdFAuhxQxr2pwF(#Zud{z}8D3>MoZdl&d*$o^>XGhnv_BBhE^sZUD zs-vy1uV=}Io=yNoy6+Zz0-?JvD; zYdRiZ*?rfNWvv}8m_pOUxc?C8rSf6U&~X<|VjY|V98}!4nCUnd(qq^a^cv4dL}}tE z6yk{ZyXqyVpvi(LWRZfVrexRMxb%^){<-Z3@6gcYLGQp=mUsB@(3b~}jvd{5^2~c% z&i(Z3r^g1o$A22Vcyw^rM{8UlmGUWv3PfOHoDP3K_pM;2;i!2uku?1d9#Y@`mOB6TJ}aU)p+mdO_ERZ9R8B+tI!n6zy*7Z=0jLI+SOeO%c*0O+^=Cq8PF-LN1m`I8v@39x(~`KSmdm zmElVeFHgza2Y$==*;@orBY`n~L|r9)oD02Zh=pS|B%BYtCqpupuQx zcO)UfRj$$$5_18ZiWmi_@JS@coxu9KTe~r*rfb>KwvPT~;7?4p>A(XkSM)9KUfMclGr3t-;)!&hDPI z_jLEHM*pRb_T_U*3YpngSoBINi_0xTyeMfT;)3cTxbK{g0kuP#&5LR?uqEx41b+;; z3xDK8!8z2=ZyF<@Mqc4@vr=Xc-x#K+(7+dncqIyO8yh~P}(;mcoc*)ux4dEc(f zd$u0_@Z(K8_nkZR%@5~~9zXcz2Ytu{r{>7~`N}g=JUB0oEF`|v$BlS*fHN$dWZ?7B z@{uFw5Gg4v12~xTpgm{Gpz%mgjnmUz-rU##{F2+{a@?}8wz96Swsu~1V?$lzZO!fl z7_?JU+ql4U>$2Lq=Ek`TYurtZm6eUIy5@@N=DBqh-x4b{z!6_s_B zb8lJDfX=>iT&@cIrz@6RrRTV%AW8ywL*EFJI^ojcn#jo)@d-kH#JJFNfi!1l?gxrpD1jWSS*n>+`a1gH-3Ek0A|3Cfj^T+$4;O7bn~{Mv16ZXKd|>7 zA8vc`=Wh=lJ-6e>6Q}p@`2E0JYDSPeGd~=Rj}L+lp>hBal3=9ds8Cu6q5;AZ+2B=* zPGWgnEhHYm6LGFYQ_f=2+2CC$rieEgfk&=z)XmkI)Rf;*v5i%LP#^+oLHI{)M9@QP zF{;pV$ZSE0j^1iBA}DCZ*j|gw3=ECVth0Ev@d}mBhZ$dqF?~i$Q2oa$3$r;Dp{qQ1AoCI`$&r;ZHg*9=vnfp z7|u=PXnPD#;17w~P1iVUJ%Fp|4JMUBQ;sgUCM5V#^kvdfMp_Su973^rn?aA_WK^T- zO(n=u*%U6D(XKLSoCul#z@l|pG-kEZqAas07n;#6!{I`6R}5$+DcMMtqMa=P#ku`B1a6E~q45)z2Np#Fy{LqNqp_V&mkz5!2#B$@zvR2M!)z7}Y|@ivl4c>UmC~^5Lip zP|AEpfxA~@AeP>Upfm!NGHn^lmRK!ni_BPthQVkhV$@p@v9y@=7^iDNG|phhd?_pH zwQUv)NUfEZX=G@d<3N9XL_M`yBSLrKQD6Pgr5)n-1 zEc+=w5Kr=h|A`&B7T&a3Y=hi9;u5k0#HE58;GjiCMubPl=M}pb_doOK#)EqRNg`-So z&?{(S0b7jjQV3>Z^p4)9Q0nD&vlk7<&{y89$H--^&5CY47L&>1)GCZhvs|WEDa+9E zKyOn!I0zo#M^>asOz7BTXI1D;4Om(MFa-aLnA97DiYajs69^&bTu_=!1H}qR!*KpK*frojG~@n~_7?&u;zp)i)km|L#M7diu`0%5Ur6 z@aCue_q@2}mmiMo+41_rxl>Fb2x|nOBpm}~PJx;v3Q#NHKTwo>4eq09HHXL;;$i$9 zYl4`=^gxFb+SQ9|H_wq#jm{c3+7}sXJPkUn%YxjT9V&l;_(ycay^+tY`< z`%fMsyL0f!zJDJ3`t^~ozTWWa+6O;-r2Ed6He34KCpSLRzwX@wn}7c0hmT%zmfA8stD&^l<~Yz!IT2gNQ?C+LVIIR1km5vq=t?pXPYmO0KwBtu%&SL72NURs0ex1?jW7Y-VblRR7El4Su%}k525L@NZY3fbWoU*! z9RsW61Vyu8MvGBR&10lmlUdE?vjtZ(8RH%jWm~9}pU6aMN0?2l_%v1rqY2**JmKR* zS6(i}ECNjh!kAIU<`Xh0VpeKOrb51`XU%IbzW4EwqZjv_-G1@HdGCQk`<~vk@&4ma ze)Fei?^*uroy!)ZN#hO1uJ!+X=-GcA{Cd+n8@K%Dy=P{uYx&}_d@!_6v-WK8ouSML|e6lA*pxl&Yxl)aqm`L10*mMT6wO72U-`8})zz zRbVwaofM{es0ySdmmWcwY;%*zP9X^>9MAkXIFK+ z_Uq<<^?dlz*3X^@y|2FS_P4C?SnTt0TRn;V3ddgfaC8piuJg>TEzui*CDSWiMr_-xtnkbsR9OX@kd@S9xR<4ZXi*7Txzqp`Sm5lK zlv<0+RO@LlS&SODrvbnMK=O#Cj-7l=#(ADU+S*qN5Gv>BE@zk0RcWwG`!}G6w^=+TeGFg4} zy4D#;M)`wxIhuiIh)S^TU^LL_SB}#utVCoH53f z;I=R&B64P0Vtis=uJw*JeGh&6`p=tA>^Z!3_XnT+^@G=*`+e^}KkZ)F^6cL?*qa+9 zGWTNl6y1w=yzt)JAAR!k#}D1t_eF1jC#@j6MV^3r_(^!~@F_{m@C81iFz#V|kw=86 z6SN%>h&YXSZji&c=h)r$W=J1)Y{e8s;MEKOzt-YAa5qK+30*0Akd%OAMm%8DVxm$= z6K0QK$_U|jDqtjLsg2ZxNDov~g$W%N)E3wP9lS&|$1F_0CKEkwL7^O=^~qBjZ@5HV z`H6)XBpw;eQWgj}C2#hf5*_dWdb)7$>FbIY;K-@p9M`Uf6={P)xE z?|QO2zh}iwbLOdw6_)z)yohz5wY>NKcPpR!^3{)@d1Pt8>{vs|VpT9--U6CX@QtWL z7Y8B>1=|mEB1thv{*pd`+!Dt@AR#popyK8{JL-4;bT9J&wn5daGV(xFt4O$FuwvzX*X>H4eJ ziK}Gt8Ai1?wMxOdg|B-6d_f?koSxq4}&5MRSV!}y0Svn27!Ix+9yynlK?+c9G>}T#eZL@1k3bheES4%K{OHpNkHj>$>1yWO0-5gIX*XYU3 zs%qtOh^ejwZ5frN%7P5lRmC(8^W)4i^259bLl~4ZSkBKls&P(FEe&G;j1HMOBO=XY z%qYx|scu~I#OfCw`u9&ex9{Bf+I!2NU)8wm;YSX=)Eys|ZOonR%9j)p{ubdDgpZh+^fdu0KsCaalx!M8Vpb{9@kCK zQcc67K zGvAULi_sM~q%C}X!<}pI>s|k7^SZLyn?;ku3)L;i?g1FRg@zEZ8LMUyNY zQ000TnSZw)WUTV)$2=Kz=LPU`x5PsUpQHXjJ<&;Mb zw&%Bh@abC9hB@X&O?Fe)vfgZ8CQeqEnplvL5SwFvd|ugX+mpSr(zIe}nlQj8yP_Il z`qCdCX`aLp;u1w}I709a7@zk#Psvo+CfG49UB)&4;aUU>kP|z=1fmrlAhj}i=^U>| z+=S{Q{Tz?3+$h7XL#xFuymN+wp z2@RFj%#IZ?*f-|LmDFt$&OCeuaOEk=;}WmH!jppI8h^uI8~`topN)_s zA`;X>E2!M*1lUKd)mZdin_Ho^l$0s;<$Ba3>f~s{XW$y$mK!XX3vN=W5WOie8&#;w zLt%nk>#kL*QKDA?Oc~fpS7y^|(DKKO@xWyWiD9rNT6E@JQ^hoHq^NBcDZCRT5`!ronTC7KWyCb zEMB(+Cn6g!&kyQsW6?GtC!@E&iCgEv-7}W$I<{@fx~z)1zn<nPD?1YWnZh)pgx=o3)h!up9v09c-8xz+_U$;N?*PK}a)9l+>-359Qrr7R zM)vBLzHsZdg~Mi!dzhWLq&*^F!Rt_71(zNrnkE{G3g+=$byV1qE8Cg0vqLmjoW~JE zdp$J-7jtZ*E3YCYx>P*+geCF`L#E7{`cZ)op>Va7k~{|@dPK*>#$qZFPgNY1Ec6xz zBea|lLC}NYiRkCq5ZM+-5#oTLaB-wxm?$tZ*ca)`L;*hd3&H*G(6G3mfJoepiVuy5 z^l9+t^zjJ{itpwT*T+NbYG*~-e}xD{yW-#~4mGbdh!J#|$n()n!lslLRM#j>mCoHIxkrOGzI+RG`MYm*}-lJBtW4VpsP_UB*_&HQ6s{^4zt*1h(%nHDmOY zb#s<)_^n-JuP()jZM9`!@>iEvL!@{vU&+_SjC8#^rEhO9B&n1^(5zMlN;tiik>SCQ zp3QrW=BTBRE*I*^0tpgZj3R~7TRJCHua5CEH*rA}CtFK65!%_939R53W@Sa44lPXu zh+JfDX=`EOWGgUru(GtUv#@rwurx7qurhT;HYy7n8q}bAY3gAxljS7Ov9q;6Trzmjc=BmyH_;N+V_mr@NrBC{~3YL7AnPp@Dcxi9xj3 z(L`WlX<}?mbBsCLSsBw@T!{4q&&oOrk(D)#bmd{?WM>CIJUG=^2?TICG_!U=@GJy^ zYGZ9}1y4J;b-G#@H@bDg0})Rg>`Xk7+ROQyvwSMYQMH;HD4`qSU?0XU8b=RZq83Yh ztDy5paii7F!oz?=dNF_4$QkMctcdS0XW6A;Q+tn`zHH;NIpa1>-H~A^r)NFD!xUC4 zeQM-^ILI5%Z%KSOmbo}3z2wiQ=fi(ZVwIa4EE>LAXenL89EFiN8y=82+&E*AL^ zJ5y7Eu^ke~SxC$hj0ILm(`M;tL461<%n<9!f~Ki!gY0K6$Y17Q23JGi%GB7@(ZRyR z%*NK*+{VTnPOauhY1YE6(*b$hoGfh|ye-Vl?7vZ>t3YBUh$KmsGaAT^4G|YTq^Dj) z$;i?~U4|$WF(ZhTrg-kyVY`0YwRY8jwBOeqIJ~yQ&_y#dL^@o#R>mfJ+>b<$B9b2b zXbv6Jx=kx>M|rlc8Ar>S=pY|1gD{uWvX0y34J(9Vg07IesMD~M=mM!E&8~QjtC=2e zL0sUm%VB<~huf3XeD#j9ZFpelfl!$){PL=Ab@v=WIPTXYHmbE4ThWAkxDl zT4X1K1{C!8Z-_eEE5d;Al(igXSlSwxEm>U!tXnw)EhXq;Y>v_4H%G$p?}N zc_F274K8U_-*yfGEv0wrrBtX4wC4lz)KM8vYSe|E(y-!Tpf}t+^7?Y3tS(wHZN%oh z9a*auF5577_Ouy(#ws2}>vt*$O(hZ`n<-tJ?H>+4XTsvSB9iE1!)Pq<~-L#c5 zQloHWUZJzJ4G47TEJY)3TTzLop}UO=LG`!&eS=^CikzpID0*S*H#gIx21Rp6M$#ja)f-)S8iI#zuOEDll}=13%m-g_pA;kMOjN`?go1 z?oS#lRVDBbd6ulErA=!MC0S+eE2vJeYeTMJ8aha=SPfmIV7}Wwo{SQ88K7r~RWx21 zngVjEuqdHx1-+$o3{FlQSvhHkjr3KByN!mWmUzUt_)Z&gR%IQ}T(f9K<^)g6R@yoU z0{{yTW|{ACPBgwEjD*(Se>0 zA`?J4-6-e<9~ZtT`q9l|IuAf8)iyY6WlcWf0uo~*U7~8LsViqUd}iOl>$V&`e*MYA zE$dJ2+BVQ#S6!BxuyGYvQwa&YWn|QC2hM4WfIWS0m<5A3l7< z*okTB<3>-IG-c|9F%!~fP8l(ELi+ghaT#ey1BO6IbEl6RnLZkkq~J&d$GP;h-zJTj zJRx;hS~}9ejT}EFZQSVbW5=eYPnkG!%5Sqr&7IXu=^Gslq~4d*AqESF$LBr+wPmqR zL#$Ep3+4|WmN63pNJrSKw6SB;$BmmjaqMqtqteG@WYAHL88$3^*aT!ZgGZbB*pX=y z5LzsK!juW=Bh$xIkGEknfwB>k$ITs)K4sV>con9NO=xypX&AQ?AD8rz=th>$m-?bo zdR8MH`za764$;)WDIry&>xgNHF;Cysx4Sqhao&=p8w(ER9Xyp+w(sCBTwt2fKe~gB zhO#OOvo+k!-xC!jOB+LFxK;Bsz!h*#jh&+wnmi<9;rboV2i}&BoWU+{obh2v@W&fH ze(IPpudbaEIu3~G z(lxnr``$@i`X?rJN>1*WjL=uJdL(u49T(RnDWPkpo_&&H5~mG}=@HZQm*m*E9w{lE zdZrBQ(Y0r%v_62@DYRXSjO0cQXHnSg7&{N)>v;(Gg6Jl2KZFM{9@el9fhZfwD;XFW z>T8=~5a5`sIDM{d((c?PGpElRnwfL(%JD6`&R;lq=jPetBSv>|^=YL+(|@qp_Uga@ zPf1T*oiC@TY-K}T>!}B)Jl83@=e)g3dZ&cR--i5K0dq?kc_`%$RTKv?3CRcs6fN?A zpAfx_?&aqf6z+@AKR*5l#Vro?@Jo#L4h#{shsNZOL~2kZg@fHgX-pMQVQ`o@Ee^Ys_G+7SEC3V~(=4ycZVB_Id#M-K--;sdul z(c$+L1-j8jCJ<+g-CLvorUn}|Wlf`J+`X{3V9U&tA^L$eT>>0A4i|h$LszH*B9FVjK!B{RYxlV$0xT?aV3H~&ClF%H)5Z?rN-b=y z5XjXQ;;EGly#``|`yXb87WR(zcD51=Ek`Fa1Sz$)vbJo4yGQ2cW~PER7G`x85(^nf zZpgK3`zhl>zdDF|^`{DOUO6*w_c=;!Yr?CT}=p^4%h zgQCX9MSJ@M#RbA@5!ya5s?%V^O$hRd7rV##xg(BPcto79NQ?vaaIsf_(6xp4%jat- zpqA9N5!mCs2l~KYs}L51MxU4OJUyzllB}Mu378u(4Jgy&>HAJTbaThnBg;o^npaSe zzvt+|(}(V57LQ#wb$FVctqLWRYIc7T6>4_ksS30aZ4HQnzamWQ0!v35ePubs8KUWP z5V}T=S3^z`YrE^^#rN;tzEynZ?%fCX?mvF~=>FZ}8`p1KyL$6Z@y%NgN}t@j`{2&q zr*}_WkQ8a$xOwC9`N9j=Zr^)w@9No0x9{G$b&I*h6wBTzzH#IB)59*+#Jhb=TokZ| zJAna7K0Yvm;+CkFUx3I<9EH$aLa{F#-2D6ku=?O#D2#^{B64t#U&3fIci8jbJQxB1 zLR=K|^l=XiclY#k4+)IJHPoOOWWw`7RzSpKYw~h!3|qv<9%ReHs{p(Q)R=>$Cp=y? zZYSYR3>zwYHT*X6vVvrZbug|E*AvU=rvkQN^zy7*SGN^kS+sO+=GN@JYu293xwqx~ z^py)zd-{5{GJplb*5yy?r$Q9Xtc{crnG`_?fKZ~KV_>YW1cL@%!Pgh)HFA$khzn`g zS{dguSAh0Eh-mfmljkp?6VR2>A{(~3Go?be6_~`MY1^N5)51&3*aPQIOD-S9v zADlRJ;LwpnM~)O6I(Xn{Vd43Q56&Mve&x!gbEg&0o;i2++?kU{4&SQG#6fM34$)Cz z2s+~F7ZTROh>Bn(NpNa`DOHT{Z;0Cx7>N)) z@QXuAEU!=`$Z{7V6Of-juC)3gS)z}~&(W>b;7 zXJ>9&w>2v}d-u+)%sr>hp4ywecdugZj_iH8*}HP{)}P8!23C8;#D)oxXb;zyn~bnx zuXrDy1UMCjh9j+qr(a-LuxC_)cL40LVX1xHy=a2_@E$^3`1Xu~9X1##2}AwG2%_g6 z6zTp;VnAYmuV*Oil{j$r@v>{%e9qIzI;n*Z`yC;Rp%Bv$QCL^?Sg-PQ?&No;?90pBw>K*@b9erp-MQPh?=QSx zQGP8iFK1`YuFRZW8`rJdup?{N-aUH`ojZBtP+nG!V*b9I{fGDODac>CZ-aadY2CX| zN5mWS0y*^w7K+2ET{kquCjuD{gyBJ7;^k+b%{^*i-BLmfFuukf*m5nSyDjq z$L_7WB4vV4FnE@aXRxp<&b=dj-4WC(1{bP*TpgU6qfj(l$8uJnB8enj-5QyzZ3#B@C~AN#%Q+?<`ee$BgkyJ(z}iy%yhU0qxF;^;|vzbmrZ zK|BR=>Hj>Wtp(4nq<0=MdcM3qFf7+9aY^($$n*hgNAO`uAf~IB-Gr|ZHfrs@wcRE@ zICpXH;yov~E*`)9XvUUd(=+>z7@cU23;fjUL6HZg*2$Sqr5_ed9SX99*FJsi+C4kG z9ZQ3lO`0-paEN@+M2^C#-8%=F>$Xa#>weZf{6Z@aY$+0Uruk# zsIj9aj_Pehh#Qodw2ZXwI?$%Ojvqh7C^A0MkS_XVw|3`jI`Q~&_Lq7oXZQZrag38M3YH*^S)E!-uTP%Um<2+t{4z*`p@SU6ej>{o%Qa zzm8dPK66;w?&C*p<>|p6A+mim+&8_2?twkQ)5E(9l{FyJE>olqDZi;Po&o;XJB z>Jx@DVn2@<59(ru{Ec13p)@O9LRg?b0{tNZg-GllAolT&4+(^Sh9p=PY5T;Xu5giR z^7z)3PKz_NOt{uzULcHeWWe$Hyyq}F@aXL-df+P~qo@+QZU`UV)v}|8DdWl}Fta?o z+{E?UckbV_sjnSO5`VBj$$QTmpEi6*A6t(wI~^@GRZACpO?Z5FVwgeo#LVJ7!-SLR z40AUy*qyzAVfF?sW0>pmoC6HA)^k6@WGNETOTzG8S_cl_3~@${wd~67ixagvovgey zjBmcLaz|U-j&s{ucGTMKe&r&feC+YPL7;1#fUA{T@G%>Gq-G9ZI10u?f-faKsY|Ba*S&5u5-S1ARP0{3888pMrvrFuHpfj&p(hkl>W= z9b<&SKDZO&17|B_mh{0fZF_iE1qX+D1|s?a?lXAdyecXoARt79#3bH0hrygQo$EIW zdZ0Zl32e1A6&{BtBZql80rgmwnj!0859P`#8_zlB4mS?peOgFxKrBZx%sd`Xkg#S3b%L;H`e%i4Kq_5Ah6R&8B2VR%gE;I=M0Qt1u?IbT^rP38?z;u60jtM>0Zm@{jj zvk|WGXqwEKlaW4ZL|kh-U$L&1hMK0My?~pSYLZ`@|F*A$JA1uxRm(?N{dz(&kq&A%g3tbP2mpPd4!?dEAD0 z-zp$7rz-~%5|%0;b{9(m2pLm)=VU6IBv+muVoONdq5B@rQj{a1l~V{wznynwy&R?k z!8RfgW5m--BscVW> z%$_=7+z>Mh1Y~Tbt);GN;%J6cGIUaABI*mVu3$bykqHcQ(MX+5<}u7Fj^{I`)Q^|V zFu$=9-!oV3iSq5`qc{Mwcai$4JQjyMu!MnSYopn_-Qhz_QEHv)?+0vVbPoBCseQC~ba}v6a zYabQtY@~s?kVnFJ%0KWA$<|faWa!yb1t)gyTCrlTeYjm!UZtgj9s zOaB~sh+z(baZ%|>pS|MZ*5XA(E>Y1`K!WdfB6>G(U8^u9v!A=y5uG*dECz}C5 zK3>o_a3<_d{kOo`Jv|{O#RpUGM|WXQxRNGgE+FiC;&pf!*uTg>GT9RfZm72x+zLXY zK&)_n7$EW&hdJ3a-zR8{9RbCWI;-LmGPHXfTtc^p0aq5Zit0Snjt%J*XKy@RT*#2# zB#>pxYP24FyB}6ETdf=J3Sq;@-B_U-ZYHlEJZ|xlPTuRUJ-vMV;^7OovzMoj?ckm2 zjH6X8{h-TFC8IvC2i41d0PgRA?XP7OM7-luL_hyEfJ`lAv35iSa0u|g5~ zCaF`1hd45V`liMO`-DY+!9;<(M8&y>g4svJVWtqm8FAKUUxvUxX}A9;v=N3F~fjsmt1Owdq%5ptK3FiPHJc(O7$uAmoL zSaOh#xDeAQZKC%=X<(T!x?5d zA3gOo+h{T}9_vSvS^3M&%b=JzubC zTh7M$W9E1B_px)gv(~_U9!iT~jl?JNh03tn6y4czE@#JutLIj9u~bAJH|j>KVK{Bp zlztXwc8+a@K0YEVHFXswIS6aA7Z{11z20MnNg`+Ohbe&x~jU@p9*BR7w_l73)LVQX%b53VPA zK1a*0{3?S^$X+USAibVHEb2)}pThj3xr)}r>)J3vGA{4GxrI(uT*ny1)WT&vNNkbf zzz}%3Bkq_GH?-Y5M}~*_V}9WA4(ISbqxymWcn5SuAWLr%BAJR~1L5Qv8P+8Tu4dvW zOiyT(Pe3qKM?YaCF0lGXi7|ivh*;T_wzXMa!yMrt3)_TB0$?H%96He`eh?V&2;rx2 z2~~!V?DohkhcG*GsygAvM+XMs<`Z_(K&Cfa?8 zae)GRV;x0UItf>Li{~BDVk?m;XZPe>EjpNcbbVTa4fUj^D_?_^Jinibk&Sa(4=<1i z2TfHK6&OM}%B9RIJ02$F0^78hVR93D>$QH!Fda$Q8>Y&&-6!U)kaS>}ms%Uos1QP5 zjib{8C5N-=dEuq=S=r}qo!c~d{ek_5&+ZzXy5;7+#S16RFUT*racS?)!w+(YcAI8C)&g@LZxv5LD*G!nWC2!B29he|N$3F2vej>jB zFAsm1rC=`(K|(rD?-00^BnNoHX4Msexw|I!?Fl8*9x4nR9s^S zTlgi*SK!OZKtGpbaaEP=r{7y|CY_XUW&tr55;gyc+cphJ%H6!<=$SnuH*POjw6M#7 zAR`ZJH5Kd{h=Ct~s<()`N}LPVZY?~NoxeMG*e{6&xNWo_Pfud=fA zoTCr#?cbi0wM((^YW~Wc8`twT?s~Kv(_+%Cdm`=%!(+-f zssnYLLeN5AF+$b}J^gXTDK1hR*98HM+ei7k3;jFPcX#X>V6k z+O~7iQbDE_qSEE$nfBbzwnW~xl9M-XTsWDRf9%9T*tT|Mu2{Tk&C>NbM^EkBx+6Cm zHpLC=*KOT%V1LezU3>HM_Z~ZW^7M%VM-Lb5*|mKK9_`<+n4h(ITUK_~&h0y{ZdR-z zfqi=>MEQt>&xU)h}@349yCX!PTpXW zlIk@$sRzQT9fihF0s8NP#Xypiqakge##1wZtgIqm)$`Dc{vUvK3!N0@-icm;{ig0Z zwCC8QUaJ@6t;iXdmU3*$f*xbzOwDvP)F4f;6mT%1YB)`<$GzK=(0z5xMo9g^Zb0~7tj{9L`7 ziICc7{Sl-F$MKZ8!g@;&!GHuXcLXB-D(hYxPnfk(i@M8k6DvrL^& zK)Jbc$Nt_3{K7Tx2wpp7MX%|(hc6e*9+Px*`p)!0iB|fc^#IS7e?@dyW(FEVw;#=% zyk*9uK5-tNt>rm#$|}nIKhQi*A7l(nkW$jc!^2Ih>GWYrWqDa?X<2#6gWDG`UOjvA z(4oR}1)H~=J$Ce9R_>>kTII?HW%7XJ}P8~martrY7J(up@xq0ix_3M|;6`neJ zs$jRmvC|jNoH}^m#EHw53#*Aw$1d$7L!(pTaN)xbo|pk)e!=iYjRcvFO70*M2PelM zX{$IaE-oT8z85UK2-hDJhw!*w-mv-#y(K=zICVf+aSgouLAge$x!vTaY zU*AbQbJv#D+jmbG(=EtOUsguf00HLgk*$;>n-7mrh1M39Mv4eCL02`zQ|_jR7f+o& zeeu%iL;Lsb%h|bkQ}*GVo7Zn$vug4D)oYio-Li7ty6wvs?%2O8D>rA)o=vM)XP-Dj z&wC2?X6??~w{6}Qg+n`Y^7n1tyfg3Y6katk>zEoF7T&=dX%9rfFvHT@0ihrb(6If) zVNtP&HHuiYo{|7=xQ9nnK%I~m78MRNc)h0?j&+5w@_M5#@a%8yG*BZGE zh`FvIVJn#>WL>=V=dt76C+|OBc)nmy`sVl*W75L>Y!uX0kmXfI88m`n8Pc1`wi138wSo^^C5Q5bBJ1ZUb5uWyOGrh>eJyrQB4UjgYsEo5b6`Ev5I zJcKpmfP2t|!R5=!z(G<@UY;)}i}VT#3i8M#%7?|DFVAD~6%}Rp^743rNI)!w8e*7~ z+Obb)2v8Ip1g~mb9`N!GKzvqlC>CpIm_(=<9tz7~P(%c>B>8#<`*|R8ffr)^TLGKC zI3V)x;0e?U6XM({Y4-N^L4@4k034!)!*&>iz^+c#%|d@8d8UJAXs&iDN=k_@sP9J% zkX~)0F)$eRb6}L_gko{IGV+>g9;eF0xNAYo+U6>onfT7yd+}BArmG{yA3S~T+_v>g z`upvhu(+epL`hWvjy5Wa2-_rUC<7-8rD^M@6dpRWer}SJmMV`YBdcTQ9n!f=-yXcX za9AoOuHAY@$Gh3uwRIA@I=H$yz$)$H;^W!Y-QCmK4&K7{_F{i;dk0@IB!6EA7x)Jw zVXmFTUf#~p(b>_#(ZQ*mgT%3weOqUH2X{9IM?7$Lc6WC0^l|aGbM&;ecXqRCHbyrN zpN5+PUBm{ZXpkm012Lpq_dcHTpHo``7hdt$eOYjc6U9b7rvSXkQHTbLRn919k9}ZW+pmrPK;0!G;KC)EN&~ZWVaA(a2S$4nsVgEK?72WyAhuXNdhL z(q`>|D7RL=Gf$p4Ju@R?-mu9>j^v!#G*FzJmiue6mcEiahpV6mbC`e)ahJ=I*Ij@4 z>dhA)9$rhgH&H+&J-()%sY{#i#DN*nccd#oM&#ydZ0uwqF>Tw%#@tk3V=XX8$V>}_ z*c8BH!U9ge0wdElW>(e$8*dx9QM3`5Q-4@<#2+<=+pCGhlrgD?0~c^%YKpY5KnnGS z6&SYxHt^oE`Mz=E{5McddVz|P5-bB6mxL|_dZ`_h9RdYQUbCF2BdHxulVm`4sGy>t zs_Qn3RX(DQw3)JOpow|R$bvh^hb$VEJ#S8CR$lJ9X`@_%hIR4MX{CXaCk<^NK_cH8 zIY4B`&f8O2_DAW>t)uO2^+7$9wG4E1P20u|o9Nbn13Pyo3u9v!OfI~@O{kNviM6dM zen@lL!hgiU%+$!l#?;Kl($2xkR${7QZfkF1Y=Qu+SPt+HH!;Py>r8d&g21}KZ|YHE zVrB-%6XQ0>flDmElF;b+E(TAxH)*3F&$+)lSu}+k`WV2X~0yzbEVW_%Xw0j2UlXZPG19 z*H9H&l7bEb)0oKWX><7;`AE098*d&zFtTT`gR8x@Kubdzf+SZ~O<&bd{=2;>z)tXf zh;B%@vNBv4vtZD&k=Hcsx@C~8X;3U&!&vqyJ`up2aL<%&)*@e>A)c6Dg&>u;<} zF`#Cs{+{UZ)Ib0@M*6KMuFC&?k%d6|6LA}D{?7FSmIquhhdHp(d4wi3Y z?_i*eMAk}1BCB)~B${@ku6ZI>$*C-*sU z96@RyI53V9CpI!*+c-M6b#WIZ_MX=}#L>;aeR_}h5YL#TQKKgGPwCbnrgL;#FW(ps zS63I8c77gzI%tCuyC=r>9XdXJ(x4bfuR&1JeA>BwaA0{l7dvF&?}GzZrm4Zs)23xe z|2|CPPNh#dv>Q`rWJv!$&LGnz(^x5ytZ7FlHx~Ru`g`iA$tfAqzjrAllKeU;GDG_J zHj?6!{=IGd{Q2$w4QwFB$(k3B$Yn?tx@P^WUT}^fqINamStcfJud1r8;+FJCO0q%zA6ZP7f-xk zcd`sf8j9ivle|FJ?Vd#vVU2Xwi%B`|-dKKsO?k;PhV(@bER&DcF|Qd`rZqTS4PKw| zg;wOY{W-&~m~9DlvC~_I(+iD$Vm>gO7(yPtWyn;>@dNO=8ydc4B8t9SjQ+CqXV(Ji zxzBBpPh|}04H>EoV4v#3?qiw!k$HvCVFOVAX(>a(Aji7i!`ro%(2>4wX;))Qxo;V6 zF8l#bqhOvT#;L!({EKD)sUsdMy~3B>f1;T#ADEYjPG$>L<7o*)e9=wU2Y9*kJFU2( zl{EBc2gbRLkkO@R1X1Y8R&>6wc_<|e%A9@55DPfr*uQ5g88W^R{9=51l`yOie!%wE zgYbIGuyU z#rzjoCsBYt6<}}SgbN=yrf<>rpuS0b_a-8jc}3}--4P!~Lq zPBlK`;qAl_>1x8~W=Rlvj?c!4=VFsvitB;xqcmJgacL8rz#q%Pt^1hL0xu3)PVwg0n4 zUpAsIrVXyRCvDBeBvNCwMeuieLWcjSfJg;~N^~g5+JZLEmW{8|gVi%4zE;^#G;fAT2xnF%<;&AMLxW*2?0*%UM@Y-~2`J|QpuWvf(-ut2G1F(QZ%cRctkMtsS^XMeBN&S*8D zvDK|;^ns z3v^>WekH7`iHg77 z%s0$E2F;vAGmBa@Q}(}UW&xU6`M+<*49$do)y$wDlA7;mga6(du!Z*fLhw~Pp+9Wr zAl85xd|d25e4u)58Wzpdf3G3?mkfCgdx7mMutdr&${_n()c;{i`Y5&qN_c`)L9ej> zx+Ru#5lVb-A+Rh?zGBFqFv|~VZi-}lU)BM^$UsMKs#2RnoYdw})dLS(j0*Mw$7@(i z->z*m(FaXkf|bOz041n;Pc0aen?yR`CKV51F(6Jr@&oXT4%CzqlPxu+thL1Mqr2Nf zs#z?Ck;8F0nAuQlBdBAXeuTJEYYMPH$VfC550?wehz~Go(ESP<3j4;;X3=%pyAwng z&%NKCz&V8$=~PwB*{!9ePAx_e5v!j(seQt|ofr{8Ek?`U-XJRT4C`7Wf?3XkFJZUwTs9QbS$K15o@|VP->Z0zKA8Z ztR*knosxpT3GwO)Rt4;?f_3$f=L)Uh3}G2p@&P0}31i@`fNf9B`a~coMwu z0zAFi7fxElxdtnRPT6pLIcbmCvcDo>&}J_f%18#JuwNU%LX9wdD1}OTJ%FN#l9maW zR{$g(@F0K!L)ZEN)(~`c2%Y$A^$d2`U{JEDXuBEGZVCyD(Cpa*gr9`q!-~ULNCH%E z#VR~1q@IBk+Gs!<2WYTSvFxwa0UE0Yog`CHx)IzRLX6Qqz>(qi7}5(Rhc*Hu1Mwh; zn(3wj#&EoG{(vu3uEZJy-ZK#5wk4o7jes&x?-Gg+{0wM39u%M&9T}AmDcY*U^otbE z0(7bRi!Lo{ghVTzZV4$353*5lG$3SC8y!HAE2!T9Y3_dxsUPqJ)<`S?=;q%5#In2w z2vncKTKF4~(1j}i;0Qpc@!93S?h-2A0RT4uI*3oNe*tIj#sUc$E!s?llbe zIK%-uU@B>0GXG>qP5oqP!_rAb-B0iI8@7F8Lzm#OKpPRDV@F#yG8*wv(y&1Op!?uh zV;g=o4Cf$-D4tiqN58R+E9ht(N_=kP!hR_gXl&tnV+&@0L;Kb=jL8ixkoTxw*w}y= z4dj9T~~BEhE8rPv_u=4ScNU!>W&I2FU4XpoisN`~rVzY~XgiZNrE#CDoYZ z76<|jkS@v}f~T|qfaYRK6R~|+PbeE}K?uG9N2%P8d)okx74fN-VIQ{q6SXTqdjB3g z0C<3&S-u0bs(%976LjvKTRp&y|0lpbuVq+eD={NM{{*x`Kznl>(5UqNw-FZsHvEqO z3VXt^3J}%e?{_H*TyN!vzYmBdt_Nq|{I?+iz;Xau{4W5l`&a9}007q0V}<2NN+sBmz{ACQvmmCzFWpPN5XZWC4KnzX5>C-shwebK^WvnT}%53jiGd4FFUN$ZZLLY5^30E$ruS?D3^R`2Q?1 zwP4r{^T0AIzYjBA3lJ=R6`oKSj?@?q#oGQ#9aSKH0OJ`vkf6rQrJBt^hK{2eYJUq5 zgQ;)9UqfICQXVm^*#hWMpFyyA;Sed%4VLXesNKVn``vPS{a^G0u{H&rUz9NH4-23I zLN7vBW+J37FYd)7hU|gj*bi{Jy(L`Bm`e-=G_Q^T3D3V2@(_?wkhU0yO1bl>78|e# zdTrDzfEhdoRki`lU>LBEL$77q&s#(ufYi;zE>W*-M`XW*1o9;iKJz1jcjO+FThphO zL?6{1p9c})YkWQpBCZ?05MU4DSA!~kr$IWu{__bnO#Fk`Sb`ZZ{sODB@#JjtlVVb% zM4)?oo{5IfADKsfzWu)0=qFx&;^jZtGq|$NWJv#T)=iknP22D152VogiIAT-02}m?_rhQAh0iJ}3|cr0Z~XiDBZK^(!NDa2 z7Ya#-n=;xi#Ru`skyn6&=qz`E_}XaL>o%p6fHEy(eq!A zfLw1Z%143CSB)uBh$}Cl%E`z2TNP{TtO)OFjZQw4wTj+Q3)rhc}!O)ql}6 zJC~$>ctbXz>WSv6MeixX|GLwtxdB~0f&WMe!VSD(Z*aoUIT*SVeu$*iPyA~jm{yhu z)sb{rRa%b%0YVx-@Qn2z0RaZs#?smtd_zzEGZ;t$(KsSbQFl^=AEN)L57PRRfY62L z38vw{0D$&RAnK@eG0=4|ss2Ch1eah*rhY>FqJ?kXz+H_?*XUo4BZsh6MaDN;?yvt- zWZ-8zl=b|dA-O->$sh;dCrz2jrItAVn-5R5B==J2Uoe2~l3aFoG6@XLsjOwIr=^si zTM{en5=Zo1n*T+OGa!wWvK!MefXseN=D#kU3u?ZwvGg~T{fol5X(y$@svzp@5?X~N z`T;Tjx*jFhC(t!YDp8O50r~!3wOm!Q@ay)PNcINRB05#ysmIDqt!pu`CNlf}hsEn# zqV03}*dLddfcs)bFdRBDjYJrH>I69E_j<(3O>N}&s6yHCXR3?Hsm7qc3x6~elKT|W z1c{dHjuV2#&8`#8r~vAySg~ zb-fcdw z@XK6QDz+_WQfe+;whO-t3>$%JIdynRyW7O$q`ECj1bvG>HkOE3PWaAB&8?%#9F~3V z7sElf8vBBc)$r|mpnxAbu3QRgp>Z96ehUg1#Xe@0x zh?)8>oK#>q_B+}RcJ78od4;ODnBQ-!V__@=3tNbnja;^c&IjJBdg9|7E~uyKi3TeA zErhFtMHwWkC>GJPztwfP;NPmy$5^>eRL4dm+=U3K{Vkl!gzY3UM&f8RieO;)zoO+X z`rCW+CxD--PJ^BCf3EH|`cB|3ev@VM{}28rm&qsA0UQD~VEHORs4uPrfhZBsv4(s^ zBsU4`J@R_JZYpveiKf^*IYkv!RV8^ucYjL|nUKSi$RL>l2Z3Xe+ZD-RWaaAkJjAcW zqpGH=MTpSPmQmDfWom9_q@yCoMYudfiI-JSQPWUYRiqhyXx?glzV*H&W+w5Q9*K#pSE%nIIQp8$(S+1Oukwm)SB(+QwFnuJvwm zZCxEKT5BrsFrd%lyn)z!TzMU9QBwaQgSv&g8mq}6^ri$gRRK&x;OH9~72)q@p{pc= zeG4b{1r>4{SxJDsHPwtJjEto z!=znQ&!J;R^iTA)(pBP15Xe(m*IJaEnlWpx? z(Ecs6`h_}~80cuJDV*Aw2?gk1-ztfDt0FGj7?>-9)ZajW?W&f&4 zzxL{y(mveB2?@sA2Bi$2zw^|Md$-T-UO1v_LR?~Ur_NpbjGCWSc&DV|+4E-=Pp|Vw5lH2Ex z7VO)bw{z{>v4i>znYd_c!TI8n7q2QyZl2n+eeWzCP&jGH!mR(czN>a&s`C3vX`})<(SFh2=U&Ax;AH3=$;MLYjY9zIa zHLoixN}iUYA2qe8318tFc6CinU2T00Q(O1Lo++@n%8ig}YCpbFsI94f{j#BX{H(`6 z3I6>EQ}WWeY+VhsC#wAC|p%^%@Ar zkgKZks_utt7d=ok^69&1|Me#o&+49kdci!`swjC-boS_>W9M!@DlIF0^7!%7vWn+; zRrg%s`@8A}vQjD-xObkq{lt}((8+_wL6l zxz+#yQb7GX|3LfUr*L5huu@6f3$ zUMY9))~##T?-B1J8mwPIv$chTYg>sM)9$0YPCGYOM{5%UEe-9~7LIQ1+B(|V+Bv$q z;T6+P@?C~Znlwv(`BxH8iC&k|V%Pru=#SHYBDOSu(-&LU#_^Dh`QJ;H6^=0CqtJp6wf8;1}S zwjT3$rKz7skP{vv6w>5K#iy%HFOEW3;>akdXlg?gpmNc*rdP*kwlO&sT~iw;XM3rz z!)6sVy*-Wf!mw4ja;k=Q$eYnIKDeEkwgO#fA6az>=3m}avXB@Bt# znwmbSy_cD`l05AW@?r91KFKnW^&lTUYpQmRm`G(pHBD^spffN&f>@_X|=YncXn;(9o{2j-GOr#PwrYUBth)n z*44@0%FNUZv7GJgC3dp5mL__td@k!nQ}qkP4C7X9Wi1SePww2M$DoXr`IqlMx^-&% zoZ-E@bnetKJ_4y*!lL8q;^kt(d>o9`k$b4JMRh&4tZHkgkS?hcrq7x^chUMi=kAq1 zdvg8Awk2~Vv*e~t9GyCN$cV8M>L>Cij2qe`+{I9t*P{MK^q!~G$~kht)Ro(F_wL=3 ze*_Xm<;!Oeub#-y%iRN#xN-H0RqMCxsL$l@*s@}3zhG-kS$1;=E)feBhp%lD`pewy zM=o5yaigf{*1eJ!ud7~`KfHbY>h+=<*Dn>GIC}i_xr_Ce_!kQc)=x-s)tBeAgrI~> za>m}>r|&p@`*B%Cxui_1q7ux!>g983vV@AVl1KND2m5i|Q~s0tm-o!;<<(m83jp$L zSxuYBk!z0KE_*4dVqPnPGu1%gsIGeb>J`KTnOBuBoKFHquN)+%(%BdFI0~&ido3uq zRZ#^_{0UNol%t-cQWr#|=AxIeCpd~mzWtXTz5AlN_VE{7yJfKk#ye=miTjl`kN&dM zXBh+**ILTW>A$y)HNI^gYC*HqLPeHWl9!6Fs(_)Fl?|M{u7%XoAT+k@mvOV)QVluc zdD+v)kDip2m*ex{qbH@{;gT1;%2!mBl8TA_Tdd#3QhRdDb-ckewcdG@Nh_RX8x>KAv9F75AYq(}queNF1G$xp~9JZP{So2M-@Bymr6*C7{$+Rop6A&{Nn-p~Z@k!f23t2k)zV5fO9YSedX5u7w$cKT~k~A^6BMWQO=+T2K`+gr1Beb`+b#QiZva_zcmy=&h29il?_vZ=cr9 z%NPr*<@RyK8uaKoW9R9smkzH_PjWZW(a_M+(E-s?Q^OZMeFI}#|DH2;oVtGd=B1vEb8qg38GZaMH033-5;;SVOR5L+`3frf_7Q{UZQFM+ zKWp{00g+AyO1u^{i~^8RGxbg$K7HQY3H|U|k@tyR2d<#Okx?;niyJ(7{-SwPhIb8d zYONxJ#0sD15*1lo1syBzm@d6~Bn7(|tI0y+(*Qx#Fl`r}(yLF8j^Uox1}aGO)m-T! z5=QcrbW9!Gy*yp54b?$TYiN9Sc?~05H&1U57b_zzD7`I+`$ej?^Ayx{TD3OR(^Q7m zUIiFjzKWK-ViP-BoG~Y}~QwbdRvW_(UYG&nmjZCw+>D}HhndY6Q7yG_uns=LC<->CD z71O-e^zx9DXR1-2Y2U~*&A~I-tOrd+ju8C@TL+k>p`(;pjvv&)+gw`_G1gg+n#vs| zt=QDa0h@+_iDPi@$*VGVZCNy`qnCxQDz%_IZYp`47*SNK8?>=?a&6}m(KBQHfpeEm z=PntUt) zjil)X$1dI}efhew^v;DtnTyAC^f1CUYFQpkMBQA}W6FktvsWcIG;bC^D18AvxU&4= zjnmol1_YR?@>-NXMVG09LEEJ98;%w|Dy^s}FRyqGJ-$W}wDIZ9BddmnTBylzGj_|_hcBw%OBqXb<%3ge zhlQAb)e&@D+bL=4?yIG*K{cUwK0Li{_;*Ul>A0lK%quFdl9qb;`0VB}k=7bA>}DjK zqB#wQ%|*tjQgmbogJEV##XS#ZTCN;mOPDI&jHP7{%-I8~O8k2n`iD zEtdZ&EKr`BMM&z(BVf(Y7OP%MUa?-o+`&}Izp5xcvTUH3^2z26bBbs}X>2X*GIjgu z;-}y$6{Sy~mXwy)KU1hEe|qc4%G6*w5zQ4&5)HPTmUYO0xtYhW+`dzM^V+40m#*EY zyCr|~`q{ii1Eur!MRCA4aEcr_W8Ln8!w2(s@7%F-_Z~^U;=cU+Jv&!S=KosWa!yt)Ii6J!NF~AX^=*yOzb(sXS+B=M$CEt8eda z$q8`@Nhy*p3Z1)j>6{epXKx4!*o^Vxpj;eTWgUTSTTgES53z1{AB7%^;CmT~;$_)N!dV39RNTiD7m!CAL4OL3$Clm(` zPeI$PU2uHI4pF{#tw2|rAruj=RAG?NPDwK?@xc3Bn!Zc524oUz>^HRA#_#e<+U8z~ zgVLu?8quv`75v%Mt(zniK;;xwF-h8*s)|T}qy*JM`kgPwZ+H&!kuY!~MNLCTl3a>y81|h1#!XFthKJTZfiVu zcC;~VrK6)Su*7pmn>L2JItBtu2NySCK!;(AvQJ$+yKm``5K5bx;oc_UScNJERvy7| z9aEBGgS}jx+RZJ zGq6khgp__GGiJ=3k~XMoV*5_?`|P<3S7jZ)`LyE6rJWfG_FA&+<{lT5h(^6-%8Knd zdvG@-OcW&R6fAS*zek5n>#;v(W&tJQK zrSQ=1ZCiI0oVs+q2;XzIZ=>IfBsY|A-Fx!v)vMBL*;5i7wdGoL`VR2|3lLCE=hUso zW#wg$?_9rl{?d(mPwDsKD`!uiy>jPqX<5m`+gHw?yL9ux)ADkBzk2@sW%|8BQm*u@ z@^#hgvTM7ibod&y30tZIt))5;r23c7U|V}y_MA%iFQ1h>d;qEXrR23HES@mAmA|0R zo4(gqDN|-t^L@xt-6*9&H+9~}G&58>B_+DKlH3?RK@%?=*zv{c)m50zO z>^WbmIN?-VYI3C}SeQYp*-{;XX?jM@vG3o=*M1MuU8!CLGyd;~?mVxC)wT|{*Sgx* zu*3fGgDQ6j8aMRpz3{;8XVp@>uLKR0LVNqOp~iP6PM#yL@785j-nG(K;MshtSW=AD zLgAw7VqL8)RW|9PI_P2i*WX=OV6IyBabq`~zE|-|Qmp{|mzI>m8Y{J;eynCu=BNf3 zz+~mKva)i>6O?1tzmk9b|Fn0VVNqS}cIXH*1B}u^+JI3oA}U=_>|zU6L01;H|vEFEm1?eD2Fo}sFf>K607Ho7YFn!M4wFhMe{r=o1f4=8te(*4}=bU}| z+527ZTI=n2TK35^P){=j5Xtt7OwKH6e2%2V^T&0Z^2*wW&t!nAsBK6qfOd?YFIvek z`l#+cr@HY;Gd{m~`sB&87tb0#ePBtSC|~6~d)?v8+m*HTwUvJt~bf)Zfw6w|1MiF8M{(mR(R(RFHAuSaQ;#GgtEpf632Ey>$6nX4chD zUxw%vBQ49;ZFb~$ds7Y{OxUtIEI2g!n;i*#ubdjjtq;h-e4ljV#K)@(+~!1K=i#oDe1dpg-M6$v^lP@DH*9IC1)L zpzH7F#Uw#c)7P3$5()t5P)8e6Yc-YHzF!JxOadDj7@3-x8X3@$myjn2DrxO1`p8=7 zo7xUT<>z4}ldOTN;1XK5ikx3qg)O2oth%}er7lqu;7?yehh^#LF?n{t?8zR;m*{9x z8d7yBNmQVkst})nXsIYXxi!5ENNpWD#nfUTDnJZC7c&g;2{6_`s}U0xM6KJnE^_|( z&#esgDW*1-0jQ;;%iuFL=sG9@u7K>-(mVm*fevY6VP$P)X>Mj}YGz?Mc(4`16EhPd zV{^94l%?M!o;ZCxVO`Kf7Y7?FYilbDQ)5Fz6LU*zp^df`NzmXx6+pi_S@=UAXyGuz z)yvzVK5+ZU~i6AtfN*dd_jGq-45*E5-(Y%1U3j&vbp0hMKaQ>Vb{&Rw2 zcAm^GuBzkwk$PxLbZGF>Wy?YW1Ca5XJ%7nEVfcWMz**y*Z9vxS2mBbSYS4`xJZ6Qh z+a8~ouzUNK&6~IG*cC^`kJ%Hu_1mw%+VK7U^T;+fgW~sR`pKl-yO7L}-?4e!+O->y zjog>CZ(kB(+3jD4OdoACP{tYkfY&x4xI|59w&&b0cc1tDK%4^L(k1gzj$J%3QlENN%8H!{w^)6pepUl?-t*>S@i4evifJ8U3>xe zP4k2McT4V;b2t^Hw}1Vm==b7#oT_T7ie6n+@mJp29iihL25GCxJ8wjwtv0}L=%f|# zmu^)*X=!V1en!|}&w+Eb+O<4?^01-4@$vJHw><)pSjc6QvQm48_6)d(70=N zpS|Ua#A1<9C=d!oB8gZk(iZahJib6EmWU};iC82NGGt2#_&gq8h>v0kT`cTwsmw|Y z8*7b|t=O?HlBo6*q7LR&w{t~eN+JUh#Y69 z*S{Mk$zx4gb@)bICr?aCr2c*-(sjh_ovi`=Qm40jxcKdH%i)BAyWlDZc z2UjeC!e1<=VJ#ZgmP)k5Rpa9_Qs`1gB;a;|oYBn_h$t})e-gCvB)TGAXI;U6*eweHy_T*ExBhsm zq3s=)$Lj`dv%TZh+a4ayHIL%z;<9x#KYaq$z}s%BM-3N}NAYPq30KO)-U_6AUGBS< z`?>og#@T*!s?5Q^GX~O|oL1cMqNB5;<>`akn%W0XTRT9CpxUk4T3d6)J9zl$k%LKl z6ZY=gf8ZdMg5p3aItP>XY>JreX3Nr2c5A{GI&xC9NixmVXX2y@zV0KPhB>)-_)eTO(a+as>{u`NQBDpvHf+aHp1$LJyuG}A z{3cDFXMmGRfanwKR8vw;32)+BytzupMk_WN2(= zh1&BDY+D-}3~OdaAc(Py%u$fu*2db}mM#0q+RDn>ma-GGrFPo3))vMrI(n54HnMS6 zT}y|dPq7&K43Z4eW$Lq72Kssu<^X)x($v%%Kxb0=>UvD3o&m+uGSFi(@KKMiucgPN z%h(C>OjZ@iWI?$=X`xQNI;Ezm4)zB6kYFl6Q*I`((HB+kfMkP`;a#@1}p_yGeQ9EAM;decyWql+S|l zS@@^V!g+97!?eLwA_A;xj8F;&dVREGZ@yqpE5W&~7EFP}r$!@YD@7v>ArhpLNXUB`?8)7ES3`00UP?mCt6%gx*$<02+I8e{u%Pnx^5 z(Ztoj)WLO9Ku}1?;(%#>zT>CNUKA1*7P2I8(W1p5)Gk}G`n%){1*J8$Wrb(HTjXZ- zkuTL~xP6!m9UBnw?aui4*iCC9!j`Yv@O@k&*t4li zj+!`RptgcP&pp~0!Y_qH|Es;HFQ=zpId?QEAu;9j&*|CO8P~2{x_tFodPY`G!EdFt zPdj0w*znuwZ{~~u5l(&>_h2=o!5lpLi?0q`xmi+CQToS??DWj*zuhSZcdzVjY3aSP z3PRO`-urbApZE4@$>kk^t`;Eb$?b~JhpP6VArn@_U;eZ9X$xeywUuS?uzU&~E^IQN zKYsyIVOv|r%Qsy-p-9-%TA7&;Dzl)F_fbZuvO1>Db2gkTs%d%K-P85Dy#?}M!gu7V zgWTE$-lG(BM}5LPm56yA)w#*beQm&Y?B9tx!_sYW?B$ZDAg+ppd~P>bub^Q{#1fHE z#w!Ikw6pg5fnKJh;<_Nc!lElIF^kjM1J*1yA_C=AEO|po2%)sIHveER6IF2~_Oy{3~Vp`?7OQ(;+sO;yEZnZ$n9FDj*=?j;|~VqqzGr$VWi(go4AxBHJ)Av{yI zY!wh)B@%Mz60rb(bdiwT0dDMnJPfi&`*W*WyTH>0ffU@}KE9|b7^Q?Ss)|;sTjxzP zCkLmIkVX~v)SR3O@6fo^I}cksi4SIb8$2~-#L&)ms!bIPQR)@zeRIomP($N;siBIU z5NAwF*9DtTUB6QWo+qoeno|M(XEperwN)I>{p#8}NxeaDYemK1`DeB)aw9}!#Xf9s zQ*VS^&Tqm5Kaev$Jv_&b zpGer5W4*n7#`#eb3_djb`gpnwG1u?sgLfAem}**dmWidcorF!dvw^&d|E`1p+jftNeHu&$zU+`z{*rH027m@C)Q_vXw%n&Wwg4& zi@M~!-aMni!l)J~)*^c$e@YlBSeW zXc-ElL^G9hUFBT&pU!oa_mJ`)Qr<(oXF&NZ?4YH=YNfhQpOqzxeJPn|Wqn_3POo-E ziyF{t?IO34%$1pE4uCb85z03ZA?Aa=wepBJn|svB*cJmx=?b~KWQ{B^ehJa4 zCf&$(q|cP;Q+%9liMM2{f|#=&`=ccjtU`w(fhLs)S&B&AP(zDu#CG)$j$R!dJl)mK zkgg3;i%inWlkK~(Z!a2YhD7&*0GY(cI@(&q{F%hc6rIKpGsO&Zrh$pQ+w7=q$%m4* zM$B|&o3Nmxft;0u(qaYzY#pLs{UFB`_4WKf=4MI6tCkS2T9_IRWDPPlLrgu`5<#>z zk^YDWJ6p4zJZDGmK9ioCb}BYvhKG~Atu@50@Lg39x*8HAR#PJu@fsEPZQvoz4}m&; zpk=R;)z#T?h{I>YN4a}?dbqi|c|fW<*2~kw-NOTVs0A^5e!NjqUYvVsd*r;Sem>sN zy1KZGmg!y%WV+X3j-Siy-^>gUjYAgvKC|_R7Kn{7jM*;ZX9tErt@_3Ei4!Kzgr!kP zaM0qQ;AP?AVWF^^4qh4(zG`FQ`NHytPZ~k!XbVe5Cq?~UKFam~ueRqM9wjEmp1D|Y7|qGCmGv3pNkeB!}V zSBol|+B=);i*wE&gQjfno*i4i+p;ZoHzctvnIv}2SL-)zS|7D=yc2>2h0Q#sO?3sUDGe0J9cpYp_3P`re~z3UQJEQ%E^V^E$v!bT1Hl0(ce{1I^IF}T37lTWN|r} zX_tRGf8pYlYf#6sdeyNfPMBH`pVS)AbIbO+^JQ^^)FFf9roX z&l_cim{M^w21Fr?2>HE2mLLsOj|PAS2w*AvNui5Ha4$m~q!Jq1h<28=k^idD&{8}` zcjtpY&TR_#qYuK~%I9MVCOl%gIiT z^mFKUvoyiKQrpmR#=29#KYAkoenI5ARPW9i0hhoxA@AMG_V&&<(7no#6R3ODu$Y3# zmM-SMX)3F?q%Seh8;QtFz=xWd%NL5FkABnI)Y$Oo zdB+PiO-IX%=j2X*_NczPrvCAZwvM(Z)wlDmUQWx0 zwPJN$V-qpgCCjvT!WQr815_aCQ|L0J=3*w!2pWGrL+&$*sbIep=nq-_wt7 z3iM_Z|9!>n1j@F9^Y-Xf_uJOSd%tF~jb9?A#TX5WjQF`Za4dY>VH2=wQNk(Sb9k&X~6}B4*9HP1|=TB<$H4yDK62 z(2)4Wk(2@>0>{?VNpz=y}o z{d)iTYgbS2SvkYSY7oJWm<-G)FbB~yV6jkR3^SKrA9Yw{P)rSA_zb2@^ULh7`PC$v zUnCyn!s8}VyCCV#%(fZ#>w}o^4}3h=`|i6n=#JI^4q{Z8p$n48R%8?)&Y5%n(>6QznMM lS$#h=B40yxC!?=LIg?jLwaTbg8P$FmMU?M@|6lKe{{^<7?b84N literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/MainAppBackgroundbuttons.psd b/Jack/Launcher/RES/Lang/EN/PSD/MainAppBackgroundbuttons.psd new file mode 100644 index 0000000000000000000000000000000000000000..e10d05dd5c0961dafe536e3244f4d460378bd589 GIT binary patch literal 373959 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 z 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%0D~()AGs9hj6jvqzZPU zlr)LzTBVe=3EyaEkXl++s@7Je6{=r1FTaLZBb97yrmZym9^_`xStBn&;YY2!2AF-4 z%4NXXciZ0~7D+b2NB^c=2eUH>pw?eW6(F}7Rw+};Lm6ipTc!02d06X4)lN5B1xb`U z+gS3T$Fi(EB(Ys=tk>Yes(dYzYPQdJn}2rt{quHdgJJ*s7r%S@&o+`3_fJp%sY59B zcQH!=PiAG>!?bY_*?Dj7GwXX z`;gzQw&8O14kDcIW~fU1v(tZwZoOSEwaV#I`)b>1H_Fs3rbskyG%qyBs+rWrbvAb{ zH_5qVZNpsemZ|D*gWxQqUDEaK^VGI}2jtxB!}|Z~yT5gM`VWfb$A5PETUOzZPQUG} zwRrsRw|jLeQ*)g(U+$JWYiY~Pr8rTu<0B7py!|dU+K&ScK2OMBhUIpvW$c@2kTESB(s_1rscGl*HjoLH!^7u`9`y9 zU9`+P>V_fw6MJnEoP}&>lOT~KV~(sx-bf}Z{aR-0QseG_Bv13Tb*giAzy0y){J%Lc zyg=}Ulg+@=Unp#}Q9&CuqsY1ofHiU(`A=z;)|yju(&r;W;FDW!Z?jOg96PiATAt@n z>(B$ULe8*+nz2QRK(l=5_P;;<*T2>)7Bb08hy7MEi>@+N$#*?1cQ&0#W^9*vZlK&V zlMOP;Xw4g)#u{~6TOd`rYkhJwyuFdlXI;y!ST=Z>)NIjoj?NpI^}T$#+HB>kcI#Kp zPKEpXPqzvPe2g?Nb}pGKoiDRrWb9(jPG$3)gfe+vfn3hYLM&a{-r6voi-lT>miC=J zTB3C>?p{vTY!aomrz2UR!PTD{k zSaJ$Bt1>IE_Qa`cjh?OeT)%Ov6C z@{YT4DU+(R*%jCvxQ8ol3Q51!yn4Yh$Z00inK~!U70|U7Hj|h$TBSk-eSE8(uR)%X z{%AO1|H^{3^I-30vyQ0Mo66;Sx^5;$js?j~ zn%R`)1+SIetd+|pceZrct9;?i`K0kzJM39x8mv;oN)cYIbdF9o)?+Jzrdmos(?f<~ z#bb7gZl0OQO3I)<6cSGmEEfA>E*z2K5s9z)R|9@YqG3@)if9;>hoS5J0;wo|Ajc?o z6_S>m^^2($zZPB6I&fkE)a!E~=7rUT@l~j4p!59F>hjF^;_B-3WH2~839~&vwHilV zv%EMlKE5zDHamwtW@35L?V{%l=~j*o>G zKb|f57w0Ay7b$_ALR9aco}60=EHC^0vtw}J3yTvg$z>l{d=km}#5mOX^f+R9-}JQ4 zW8r6~$7f~`=SCvq0_Nr>m%^QRcwu~8o}Ze6f9F{9(-TVpq&2fs<8up? z(guPnb7Rx~NkRm_Km;=FoAZY_;FK2uERkB6nBq7fcEI}_I(dSD>FKFi9|;H_dY|#x zrOEk)&K2-xf2-fy-=`PhjpN?#$%8lOIFH3AEdXvD^l#GY_x0PjS>w`$k8ht39o)Nx zanv>J@URu42|&NUyWj8icJI-o9>K^ywb0uK_n?&z?p(WZ>-fBysvcrfMPrk#YdH1o zADx^$=s)lAW$Xa4MBAsA^DVmZ+&u0ddWWKSI1MVU_qORVas3WvEytMm;hlElsJFAT zd+TiXD?7Vb6>n`l*`trZ@txh9+iq0)Y`VI$_3>_X8&6bvT-@63Z_yZx?h^aGdnf%P z3}KJ@`?v1&=^xtP-`VNy+`y)=ckNnl|KOXuTPL^f+}fp1?zq2y<79iccel689qsQQ zVZ(fU>*V?lnpZ|Emv5B{9a35dO6t|^ZYF=Z-Ef;ODvbs&R;{|pwv&fXu57TMRx(t( zuUBo?#?s_&CfjayFS+X-RMKwxiGFEpr9MY-o z%%@dd4HfK&5(?6}OoXJWsCwE`Oj|aENZbsGVOILWpaAD<973z zL{w9aNKjVnP&8mgV{t(!nnAf87L;HgA*~w?KF)=8IrK%cN1uf(+;{z*%3aTVH0>)XT zfNI1Grm9(*t%U4^tm{fzk?C#_u_H~{&X^l&pkPT{1uUGs^^h~sbEM6x;L9oqmRFF)nZp|3wR6?*|Xljh1O^7s*aLk^v zu50b6p4Q`{P*TKTBrFKBWXnoiHdAy=i)+!DIe8#cSWjtMT=eT%C9t6d^7NSyMN8LI zS&#+QEdR(2)snh}&2G66Pir)%NHmdVhXQ5S?J6l`p{Q z4Iw619Cckws%J3Bja!&)$r&}8uwhlAQY@wUXJ(f>nJX>2XC$IFo>zL&RLvOHT1-D9 zENY6HNw{vohIw_1V%Bvda&XO-(?-K>xo$S3BJN2AQgyeQQoCzKTaKsIXfS9;vq9ZR z2wD^q0%?A3v6ID0NR4U{+X_1gEzb0cia|pa^_XG_Fi@^*tEPogNXGO+3TkQ7&^a9x zTULnX0ijXHt*LezEd~v{qlT$)acLE>u5fRvAd~F;Z02Ix`dIzT$+%j>1twzXV)#t` zM3}KnO{(e~JuMm;ZYNQ8i*d=2BH2vcEpx&=Y$XGTD~BfPXX@Vw2aO=pfFi7jns?BN zW))eEOG^tYlC@XHl);dw5>JVmCOV3!$UGRap$J?v<5V^s9&k!+a7$q`CPLP^CIePC zBvJd=9Wb#y6G&pqDKUh~ghqj)Wd);5K1FtdOFsXr)_Ow|BX&TGD={f0Yc`_pkQPX& z6;UvSWb-3;Bp>0yn!#X73vmw(Lo2z>n3@m^-g62nO4x~pt@4@r6{bi~64{us#SxP# zsq*=SxRr0}Aw>_!PC7(WaYqu<0c$tl#w?Q>HrsWpIXjci=#exxLU0t6ldelBRC8S= z;e`2VND|GGeWw5QL_t*}YETXuQ3X>sB^!5$+59V$3s$QbjZ3m%mMuYM^$~+kDEV3t zAXVVa$h&Sv*AphI1%I^?tQFzn58QDTt7Ilsg{x-x(-hT-s>nbAJXFVwDVKU#*&wk# zG2nFS2_X;-W)r*`aErRhDik#^qtm0gD9`!K3aeIB&~w}bg+ob|u`$wRenTI1s(i}C zNRGh4MVU+>%WhDVVystMJgo@2u`snbH_=(k7o&o#I06Zzw5sq(NQ9cnxTeTfg&E2k zYB^a!uKmzmEb*k17<9ZVdD~!Iu#k7?nxJOX zU{n@$MRYLkvrJUO z*hx8BB9$sD<7#bWM9hjUR z!vbbud~jrfzfO-$PEGm7&L)g4FyxzXW);lW|w;DC?s&W(?aPx{Uc509Oj zn#N+rJI&9Ik~a0bVRM@O)&nfOT_e)Y=L zt!sO@TyN3beit|8{`Ku1Ko%6cwS9Aoe;?iH;7YUo1L8C?Rs#yedFxlZ_yoK zcjx}o{$Xzq<83UXd%LuF>+c`$@1E?R?SB5Gzqfn1ySoQh% z@6(px8fMkUM??_22mM_PVRtZ|J=p2dCIQdX{!ah;wS(;*b*TIOgZ(3XRCjm#2ODw1 zIjd7cY?A3_($0FP>}0O2Q3jaJHd@(B8_jML)0cYIcD65MtM*yuT;Xc-a+lONluWBm zvbkBTr0wdCoq<|xP#V-}pl&(qeyLur*4H!mFJ{9FGt-}xUvaYGkf;PCQxtRlsH|yc zf)=oqxWx+zRuT1t;FuXv3hH*bZCa8LH=BtNsjQ$7%!@)-5!rDJNy)R7uxlA`9s5QJy85Q+&FA~%t~UlG}4|JKXFAf{EtP$;sz#F~EvjwK*Q{1^Rtz#j{i zlm3`sfGPx0*9Bq)Qvyy3;ijaN0(fH33?Wjr*@1LAr3E9R906yB)gV_+_#kmdx+$p6 zh9EU`$;O~6Fh4W@iRn6aARqBN{;US%wiQeFiymIK@`Aq|3VmX8n@pcW`?32a2NKO!_b9 z{2`Wm(IJ>}7&OUyVuFy(CyX$ArV6N{=YvM;HbacWb?!m{ZbfA|A|n2a=9HSYrYJc} z)qoaCAi_z0rs8fX{=k|4rvr*9#LoPm*|6(p?oTz+XTq0&CkaUm0v~0;Xq~yAZ6*`S z58R(FNru%pbAPs);*2sM|7ombqx|^_%HV{kgpv`EswlHE{hVdG5m5{XN<^vYrr&R9 zAGv=eMHJ%JfWZ<;Ya#wa_cKjh{(<|Me6aA5``MHbls|U=x(SM2BU-I$1xw9?3OGb2 zGBq`AnJp(GhylN4`!#{lPZQKujA+Ach+@%&2@VDML&PUiMu+9*;#$f9PN$Mt@LNUG zOyE#JRNQLQwHspmWA~N32^dV8p^Tg`>4`l**(qGi)}sNzUoH6q3VaaX;p#=kA{ye5 zp_CZ(P&G$VY|Tn5R@h*;;&EBwj64YuqZ$dUmoK^%RVcb1>N5p&!^vK~g9<)vyOcIU+b$Q?+!+Ou25@(t*GQiLem_9~CmL ziI=5HhMHfhmK?RBU>h6857)1`F|&U$!UM?o{hAc=3mmZ&5oGRP5&&u_oRpY%#nzA9 zS87=!B}9tE8@!R6Idmotc~Oa!cP)kvVZO~kh73z^Z9&!vDRp^netyDy*wF=lh<1Ns z5SuZMmkx@44_by8x40q-e4A+1sDA7&w=`LhFwM|JnO~*|VFjL_C{ z)F9*H)&wk-8L}YHOF=Z(PDW(Ew8DB2blF}9JDA%B7;TmLbohvXYOBP(P_F_RY=;f5cuyH zF+DgjKi$DG(#aAxi2>aYL*Xa*QXPUOH$z11f_4ZnQD?hrMS*zDg$!WU#htv0ys%9E zpZj4s_9lS$afjRFA;uKiya*u(2h~44HTTM;wHzx2F^xaRA3{L(UaWA?79{;tlOj?4M!DG>8mLrU}$1M49-nWf6=wU?{dZ#SYgC7 z;WPe1?acjL!xRF*!P>{}&*pgovdQ26YA%%3LPfV>ibZ0T4C}=}l>k}HGeTktK3w4B zVIdQary_x1Tu2J>$l26ivhx{5&2>zv7XDcH3LAi-q1BsJaQ&@CcJ8eq(qjL zG=Q*KP~*B#P(&##LIMdv!Y2Qj@He&ekwsW!V3l|~VN29RA{5cNIVr}b0GJP0HdO9r`(hN5 z7bq&JVS;->Xar-iAk1awY6d$SHLk_NStZEa_x1oafWm{&4Sh&Z2nD226v+oQ9lB5o z3MDHj>V(7mN+K3aaxx+B&z<=3WD^2OFtRNW{RnzAY;*G=pKq#j#d4c*En=2JRz#vT zCXF#8Ay)lJHYh}KC-WXXRVmDFfxqgaP?lNBO$@uyf5St$5rrQ{E?@SG&`*L>350X9 z)UE_#Xj3dL9-Q+{4wOx|3d#;={J?MwU*r%&5@rI&?U>AQK?-3)c9Fo2Wmyabhf(npIcG_i}4wtIY`|{ z8Ru$nZeSXBE zb3oa_fiW=iz|ipM)X>1d?DWtOfOv4iH#jm2xE=5f_~u@n1clE4Zhhl}V?#qD0PKOG zX`k;eC(+DIjSfx@PW#TC4d*9EheikHCx%C+helqV7#N0{bYi+g*f26RJ32ly zyf`>9I5;*pIykU6H99mfJUu|5Ffcf9?$yy@&Na%3h6jg6h6Yj7&rS_Ya=D{3GkkMm z*t?&xMc=E#90AnMVSIyQvm;Yu!^;C>Bcnfw*vS?44z{oLdjR0wojwf{cJ6NX9$f47 zkLe(C1Iv?x?FYZK)!W)S+28LU9|C3fo*wt^-8t}DPtpY7HeCcLyF9+VwFhCn-QVx` zd%JtPJ2&t34tm>Q|Knyf*S!aN?)7)!vTyG6Zqe!E4oy5j!nf}dEF1uqx8HcNeXzg% z-~{-m$h@;f1LVmD;b7od$e6nNB5}>8w}D zRcEufSdiWA?p@9_@|AXhO{%a_%{DijY`3?KxyfF4y}MqlRgtaVyqvA#In}t*wlf8r z%9~6+k85C#)zRrn3lo!_?JMc1Bn1Vn)Cp)pC}CHE;0)eip+TK?#cMDSiF@?7C|mUH zWoZaU3@a;!Vj{d&GK_Dko@7m+37G{P4fB@}d=q!BtV1$teu{2sR$G&e3iw&}8x{B=l`k34v>BzW2ZX3(L^(((=RtI^tCms%mPeYG zYyiDurmS*M3CVO5mI5COpZAzWS|8}*S?F_Int(0pRJKYIHq1vNrrGkRY`PR@EHNx* zwWzAcS&C(Tr^h2gMb*M`G-lZ3>7Z2LC%M0Hk^AaeU?O%KF(C$GtlwwiC(?f>d>s5- zh%sCuMb@domog0ON%2lL7E4(1lqm~=bV?GekROgGL~jR*>1~$Bpr|Brpg!^zF)JeY ziri0tQSd1sw zRX`BzlLY!aK0iJCp2LRqXc*8A95wYRcJOI&P=a&MZupFY(1y7kpF_Xr$o1ivz1 zEc3`b;~9_K-{9~df*dEPx@p_nnE@1R-r=ASm|XM^r>~SUVzey8 zQ?ZfsmXj03Y%CZt?6?Zc29z~4!{++xNiI3>=+ScPWA`)Ju=m1HBpR*<(MSkaXb~a)9GqF z>XE5G&OY+^%!DNKphF?@K#_XRmI7&RrxE7J=8v*hts%ot+ z90w^Zk{_xZoSB{Ll#2*+61w`I6ORpiH4uz&Sy6y@Rp&`s^qnC2q4JFWJn@KARVs$V z7Wa^M66BC-Bpw+)ay~}2BkA0y?zvolns|K0y^zo9q)`8J;_(OW=POE^8LQ=a*}l|D zT2%QLf)(CU0bm|ymXeS)~^Ux2EkDpd6O7J=v(rp!fsi&EHswmPsZ&La-T z*wOFRSI&E%U|AMc!^=y!rYx>ZuUHpEh~vp&kT8&UY;b;LaOB(|=y`c`U<$>{xiQ}m zr1;qIQgry-6tH?0etc-`Z0O6rfr;61!14U>)Vbl2;d6sS;~x)y9soQ%I6XZydN%g6 zBNH3}|M_stHw>U37#klM(G5O6*Gkkb#WO(r0@Wk-Y$Ov%&za8;N`QeFqaQpmxXMSS*-0;Pa`U1nR3t$A>rR<#v4U7KpijuzT&GcS3Kxd)xaD zu5aHt-aR=v-adSt?qB`hjf0&x4(>jut|xHWJ-kLIy@NZu2ge5| zaN&13-lNAyFZu_sd*FYK^y8KOaqq#+{=wtjorB(9e}_(JCx=Imwr<_nI(oDXPN%Qs z^W#1;m?t~iM>n6`zSFz=Yj=)7?Qq*ihsOs%?`u%pG!v!kFg@%KZqSSQo9`Y!zrKA! z1K`)9k&bnBYj5x236P%_m6*H0%pc$A-F>iiv%hugt=`@-f|uagnz_m21im)qaHMg&2-WO|cAtRLL_rF#c=Zf#wEbbO(>;3HAAw(GVrE$LEw zlBF)Cf&)oPfm#sH@2z`auyUb3rLBxY%-*vLIIM122*(L)s&X9Od@Vg z=O1b?E$JzcWuoGVBRq%`&67UW3{|zL^A;sNgWa`iB&B#tNe1Va<~puiH|c>QD$ zL*0ZKiw1QGNY1<3$vfqYf(l(ud$`_PXSqBLNUy7QB+4=vq60%jRpKPZm4p!o?j;1v z5(HgN$u@F<2n~nnMjXqAc4f{LL@wmep5=1<> zm<)1K;6kAoj8aXA1z(}PMh;u3x zIW6NE-f9BfODRWEl4tH0G*JSOA&@A;ur-~K5mgQ2O#2)mNQxb0 z^5?qEaujil8FM<2JhGZ9{}5`PltSqv_oqsUAGn{hIY2HZ+WZ`gaW!@3e!isWX}6@< z)gQXAIJOi;?;;am2oHhbO}0&)>S~w90=H}8! zDm+}v-)ow|Ct>pJGxt^0ueMvzfhKuTMGlgb!odh}5c!n2f7-v;;mrWhfxsc!m6%6m z*V*m>Q&~v{h9OC41I;yPZ7`WAf`Xzt47d>rg;Co`n&a{>E0J^4G0w^-3==37K|>}; zaZ6Xw7)}(=rwavvq`M-)H0cqJR8 zqnmC?D7h((?^g5h`banv%9-?eodHvq36E3w$}|)!4uel0Z3PQ%0C6}0!CnqBP<9o* z+)dSWf61+fgQ(QpdINBkk!i5aXEmYasvJDrbj@g}40+nh$C6CMGx77}@S}=R&gO7!_R%m z@TWPZ-Ye;d9Od;SRYbrHqdTM43t3Ddw6H1#Gx3<>vHd6_7z4}817yuino*1fLp%&# zwutvkxHre6Fqs_i`qiLPJ#&Ad=-)M!9KFUlv!G%t$I!zH7{bi7Pqhh+;HF_gK^vdS zn^Yy_L1&L4&ub)z!Ymk{&L;s@m4^}KB-w!M#UWYLSB0QzagsvdTG_dj5+$xLm{Q}= ziyp(FiBy?&n#FuZpt*X`2*HuYnVdN#LZkwr$)HP#P$m}&iD?goGq&7lMu;`s3KTRm zP={8xLvoY}TbKD?n;uR)cXU0f9w8Cw#W$;SQ?Fd;*r|vZB$ZQj91cSBMjeriP5^l~gRI#!^TXiT4FR9veTmxoe^P zC~sLIC85A%$FoSLa@g$gOvB^^Wg5swCFW8rqRLpM49UdOJgy??h*G$C)d<9SI|!3--Hv16hxe8DY%Jz6b6nIC z=q|Nrf}J2Ngmf^WhD=P=ky`3Vz<_E>0a>G=W_YA9C<=iqORXA_Cxp39qAdJsgmqDkM>KRTW-O+}>A;6XESOA$5>eSx zmXWJO)@7kpitBML98xEQd7-fRu!3HQ>o+2b5l0n+u1|veM|meDA`w;d@>)?LkYYyU z0{$e-2o_LrG=OL7h&SUDm4%eeSD}$T2@R-gS+eNGX>z{^zvle&fCJYeAXcLpBc$eZ z!we^q3wrKPjku(X;O+jZ4PZg2XydpSJU5>7$mj22hD21CBZ z)gawR!xWjW_1`vB3r3$Oz;$B9O`1b5p2d(4&li*#`zE z(W}f(jgI+7#wG@*Cq_mF#v$Ox=0||oqaLOP69c9vIM@t=8U6vdADQMPx$qdulu_UK z*yzO2uy1S(EeisZ(ecq?-{_=o0&L6~#?GAs7*7)hpjq+plcA}xf#IQHxbWf8F_bF9 z#1Me_0S-2X4rY9w7-Mh(+&+w){j1U0f#LDtDO54u1);Y0K1}FfjE;;C&0y0$G&MOn zGIDNo^xTM#oAvDALGWA`!2uUG0--<3Nx=5w1O!~bxuG!%SveQkh3Ruc+K))5QCo__P$QH^Zqw(96qG=dLJ!&ubKbvH(;xKC&wq8<=#Ei z@dpPt_j+f$$-_H4`!^r=P@dn}-aol_ctFpg6M8`3KJFhK+&O;AIZo)Ibae9Q;P~X` z!A>8g{k@|HH@9x?_m1y>tG|1j;~)0!^jgtyr&hgkh;rrN+Fq}J=Nh+x)}_x6Zd|{4 zbol6Ccl-X0-kk?G@9h&D(C+-k;mtihee={JW6<^?(@)ol0ThD*COtktSc=Mqhks3^DX0{=z*zLij>+KI+x zZ>J0kw7LwcEU-H3imdU*E4nB9revF-T{TRN1=2u7sEY{zZZr|q&y*p$;%Y2J7NQRn znqpZ>W#TC-=tms`ewD*hb1UU+#RXrgv3NKX$&rzagSwy;;!zLM&<_n6se&$9h2Vl6 zQsYT>X)}bZ*9ylYS>AULr;^np2^^xNv@UHVpjR_CxxX{{XM@P>r{=@8sbZ_D8N-!M}A*3^;;#qDfe_?&o zq34SgG}WXGBx!YKcK&Y{GU;fH4i7Ajf*)p{6%d_?YK9~=XeG`RRz9SYDmp~PG@!8c zcpTw4sYLYO^e#@r9jYcGZ7;3>0UPXIafoAXT*k`_fhgQD2W5&t-@h?}Zxcw|@<1O%Ng z{0zO6r>1>hX=KZJcx$cf)}xB8v(>5qt}ms5&_G9zqt>+q2tAY3!3cWTsGxvpW&{-# z?`N`t;QbeGvdGHjXIre{I+TDmrB!K`( zc8o~Y%NT^zFjSYwhR~_H6icZwP_ru88UvD$3Z5*!Bp1j4U{_Stbe!kFiJZii0Yo}; znoUW!p>^wVN;~py9WVrR*MMk2wN(<6jE7{AZbHI9;ZUbg%hzc60y$SX=z zuORG6L>c*ogqPiq2+-52@=#|-sq&DN0XeLssdEL2w1+@L{Wiu!b6q?CdS{9 ziCyfN3Y0Cxp#^1~=N{!vBMG%U>7QS~ITL(ATv5x$5f35#-Beqb<+ zOca$sv;Z+XotCr||JKDyyyaFu1@c7KL{;D~)VAJ`N>NlU!PQB1>E|=gN=b*%dLD$hUbNF zB^YGrqqL?{rIfTZ6`uL|LdGhfKK7oo9bf{QN`XvA#G7AbJ>*q$0C3A%hO>UP#41$M zVlhVEwJ-4ano2=!eB}Pkmf>lFGM?y3VZtGJsNirR1@Uv6&y}(X>UJoxu*47pl!)e; zze14t>B!Lv9D9_oPqn=Xn^(DlB2^CVbTvmp(k=3HeqzVcj4PBc|BK?0Xf(O8SgOdR ziwX0n#dx+(#LnaL`@XB!TY-$ zv3SHkUo+&87mgNkJpT;KLy)PH54SjYImW>=7y#m^vG|vA*(}ITRwBB3W)`SlNTww< zr^4t&gCsv+EgQO$O$BYX*LmL zW#pa~<|aFpVm^@rV2z7~xl^_jO*Av0;v~&>*_>1&{NUvLRA;U3P}G48Q-$WR;zBsA3Z&tP9THkd z4_V~y(0`k0uSp<#PXUmwO35JG5~{hlQxZg+dL_w(x=6*n8cSjYFE~<_G%bV_%a6y% zC#da`2&<^{iVLO^3b2`>gdz%&^;k@dd%3%;p{2Z_9i}VF%ESecHlh4MLzLgQ9KmKSdUj6w`98fZYu!_%Ig8XhwsJ%A(J= zLe=EV^1_U7Wo9B5bZcL;+e9vvbgA9okx`$T%Zip7w|30 z3k$@Ug19IF`4{K?c(%~yJS)!>qst3&r;w3HhZbSBz2>E3GgBidN|1I>cu;+Oco5oo zbbNYjYqhnrw7ML=0HjGvpH z85oF+%q|MQkXGh~2B*e{1|~f@%fieALYN7-YeX%>KN?deCOslOFfl(fWJ~rkt~=UT}1cd8v&woZX`H!zOkW^sp-klDMa^PTrvEUafJ^F4*jKk zp|R1C*`=SP+B@4Py&JEe>^<0~*mQUI@jdE24{sbCAN8rvynC{La{S=V?%k8)>&Hho z@iRPzetvxKXz#cWI}Vfu;U6D7xwU`$WUF^@jDTj3;?|@7^~1x1<2yI@?mT(p+T({| z|MsPWTZh*V@9dr&om@Y8>*-GK<^w)`3~zpLczAqtbo<8PlY?s%u-^0zx!>y@_f8O{ zfb7RGTsa{NaC~y-Q%*F*gsVE=qAkQsfX_&7% zwKdFV%Nv;nt%&LGiB&H?1bF*Gtv_s++;tmHJ>RU+A|~U!emT?5G%r=M*xb_lr+T^F z?9>jr9J8jcPN4yyb(;ia4SU+QWkJ~VV;>2T zB*YEHEAV!5tP+PP_cl>f%2ec$q|!n0scp{*j3`FaVUu*N8#5@ z|0M^(Y*^IUEC5;(F0}K12L}t189^R_6c-fA)L@npR4T&yCN*6;6MxD;8uQggt|DWC z=5CZIbpT;_<#=l4Blp!N*oTnd!wB9W1dkKC^~!6bmE9MC0j!ly-v3ZUoJVmM9v42l+_GPGREi+Ct~5+h7e z1@3a@6SI&e7NI|0ti$v2b_F{D@L2xESao^ed8>kWHD9(=_yH zt^tPOXbIFe<%|%Qh>0a|G>RJuY*GL?$K!^G^{_+?8)Or=@~TQzw@SRE%QMsSyw(=g z8UT;~uf6X8i|XpyJu^d_0t~%LM^r#y0Ff#VpnwSWiVBFa8zs>srf9^5T~VX4#6+VJ z3&@B98jT?uyYwcC(tDRabLPJLKrAWW_uc#7|M{Q$Tpu4~v(Mh^?6b>SYp?aLy~Xa> zJNrQVkMW0?#_q=hC;ChdfpQ1zd@w#@dMGr0%uwjJQ@lZa3Ob*FN`UebkM|!v&)pBF zqv1x9aXus_Y&^UVKE8-u#@Pe%5Y5m4Pv427{YJZcW8;f>SI@EjG!|OmXS3X32nV16 zdL)KmF5CxUK)*wQ$AyzbFGTnz6m0|vdf-^(+3tXl!Ndj|Wk9fZ5G;A)#eQ(O+hYF_ zGGP)LiVpQ32Y}8re~51c#(GT!Vmt&P6Cj3R_XM690S06*;N}s9J<4oQ$BOX8<6vN< zJ;Z(?vpvBqg1ku>a!@F`3Nqavez0*OTL;dh(CM>f9$^>&;Kn>*dj-g6w8zXjfe6PK zPxcs-5w1HP0~3l-LA(PAvmHMf?|@5;K-kefUq8Po;{!*LLjk?L#{tg)qk}j6B4c1Z z2z9ZwjhYaGkVj$}9qr~jZ`|lWtXRMoJVK{?x#3}VK6z1;o4t-zE60cY^^Mo@rw)XO^<25p?<7c|Ce3a*?PvnXn6C}NJVdM3;o4WCO8;98?$?-2Wk%!Q&j zJ`mQNAQ%K@PQVrg#}yC}g9LP75<3lOCeq&HWFB%axu=c?4DntVa~PZmWMm%BE^wac zH5eOfh&@lZP!UNSg!2Q%-o75<`4ineL&Cutg2n;D?hpF{cXDJjdKcHy6>c!Ly<#jSHRuI4Yp5V3}lp6oekY5+3bKu&m%iFrLx=3c>E~ zq5e`2MO>r{ZY}e)hF}Nuje)Y_1;C!de1{CuOfjPH;hyq!aj+d`JTrRM!k|EcV;#$! z6#=skAp6(>p~1Ls+e14z2pkiKtHWvT;~6m89o8r>IOuH9C?5zkzZoPz+hgivH!>K2 zX~GQw$ZJqwFnB5u@h&18TbGEa2~%8g$&kpy#lgkZ0ZiW6d6XwkUGa1xn09-69Ft`4 z;Ddqo^8p^o*%?ro;j}#u;C3fR2S*3dNC(={*nWhQy#u0Dfq2KMk8Vy5o}-*`4uhwi zy_4%O7xAo6Uwf#`mR8nQLv5_h?T16VwHh+i&K~A=Sg$QD0Fp5WK7FXU-N<1uV?zr! z2kw0E5c9zRej`HEoVJi#Dp;5U$}Y3ivbHd{w6YisOSu(6tlQXF5A#qGySkW}iH6XY zBdlz#EzNCh%&lSG9s+YX0P0ZSZHJhfT3R9Q)!f#b#EV*)TN54J8b)_BV!@{^2y0wB9^vuqEWW5U7=j`Pj!Ulz4$ajQr2GuUpuL%ol`FS zyH96JsOX+{>LkjizbT*7P5S6>dJ4r)q9y70k1D4rSv&ir2%p2j=ZNr!n5mQg4>i%} zEHUcHDN4u`CN=Sq1HX{R`u8>QRcte+3O=a+o&P~aijodAn3EGp<=_wTzkeH3DF!_g zhj*eA|I=EaoGzsM2aSwZjO;&podShP65U5B2;+Rj^)H%7)W1%ZzCEp(W%kZQkEA8+NGb-4QB*;dF*97Dd=f*OBmUdDT|t#&j*uB_ zMp}SL_Sfmml#yW8#tjtt%M7ldDh8&V5R;c(PRg;w|1fEp!em;eE)|2Rlg?z4euyq2 zc}THOGF;S*lqO%!JYZNC*ceMpvSaX*!<0t>a0xP9M0mgwlL}&n`bp$T$m4-o7l$WI zYbX)JXi;2_di@QjB7568aZJ0>PSTvnVyX~=21!;9_yTDro{$%(7gPD9Lq!k&O^3c& z?#Tlq*G&EER3oJ%iesdc^!0+4Vy=)pFe#-;M5ILvr4)A{^_p%Iv#43+WK1Bcm;^=x z(>GlPUWy#T9Z7*Ulm_afYcO|M^xk#_tSn)A{|XzZ)=04kdtl{ElD_6HZ&g$P za}q+5vLqs+(15Z+oZ0Jl)>CYe*z6@G2l;O1|Em9ZO23)h|7og)Qe&}|1lofTDs8H# zuA;!|q*Pf7%6xSVElr_7MUl;tQpzm0B3DgIS6^zNq_3l?%2i~O!Bl4}su~P&g$>2a z-c*yzVRcjLECsHHfdw{$R>s-_B{qwuR6t)<*9?c6%3M`OxHt?k(dH|%TBue^lcm7Z zvk}i+vT8*{u#1_7iUONWqlOSfw9FlSfGg-+$BB%R)~D#Tuw%O)*y|wA_~^8L7u&RxSt+n-)Au1b^9xv0i$KeOa%(8HmZ#p$x=`?^I3Z6W>IBj z@%`kJ2lwpUwqebJDTrs9xopGX#5)D$)fI(zE*#wW<+_cr+qZAqb@<$^yo!cqx`o$N z^YqrY%f;rZ{iMbaQsQOb-YTxHEiZWROWM^dmoJ>y^~H+CtG?dV^18_b0`0a9upWiDQRs zlLz-5I+JoY=Xqs)b4znwS;3QgcOPWrr_h>$AG1#`>D7O1jFj>}f`N>XmDEvY%DdHMX?2wKmmNmX?&fEU&7rswgk7tZ8U& zll_H~fT8r^(e&r_EiKKmCV8`W^?~XB=L&o^qTTg46q%FOz@)n)u#=44< z!u-OL%DToTbRa&dxdo4;f0=7|qri03qW!7arPVdk+P*q@txk3M^PGFX{Cw+v-iwOL ziqe-a%POmD@kme`2_+H*Q7B{elI?ON}3y=!S#5>M@qS-tX;&4#@<)}Fn+`}Fqi*|BNu(plpJL+7r<@yJ_& zyIj9{`))j9?cMVimZZkw@N@>d222f`7akrF5!pLmFEV28j8NYZFtND@PMZscFli#W z$`g;&A|oPjrRQ7Bu?5^$k*{qs1n26}uJVz+ZhAPv+R?_sNJmT8WQe0HFvkFMIl8#w zk$fcm4ufu{l)&~?HFd!DyA9P1^mVn=!CH}{XJ}-gM{Bcn_3_|snb1TjvN#G#$|`MK z1u$VnFm5FUB^4fzt3oTwk*mnCW>yo`NYSh&hTF?oayG@OMY{37NzN5fa+VDApHRgV zpT*`VDy#H2BZGPdVaHM8t843m)f2gvNj-=B;i#zVTjCZTdq!BXS=rd1(P*boK}Bdh z91e(CQvyZ~*5#8A>}5&WGFBz@dNW8I(B|?r1~~*qeiF0!s}<9{2J5Qw$mfWWdGhQ<{_Xgkt3Q}Gch0OSI0j-HVH_WzK4zqqQVH2db+Z+6k!RknQnS@egi011|T z&0YWHNArW7jnx!UuNJLTR2}3LvUKy&c*&J3$tgD>5$YRiN;1<^E=!WJWKJDFa_omQ z=Va%(=gu72yg0x{TbW%))loxO9Imcy(6U|eHy>u_=H}$&7nj#HH8)h16l7;+=j3KT zzMKBbuXpZ0l0D`=x|{aH`k5|+5Q3>l&nuyoRd6n}?Q-HiPJ@$18bku7S(!Es0Oc8d_uwcc;LOY4CEYRo2qi z%4?~6_Uq9VzC>y=t?o$5g;! zI>z;N<+{eYvb?*g7tj27HbHVZ>HO)Fr_LsV{a(Lu>u%Pwss_|sDj zr%<?Z?6xiI*W!rFP2jxy4jla{^T4XXabs@PHAGntD;(5l^1FI%_*xT6Qs$9|VVMA~(zq6~G`>1i@U!C|Rzr4D- ztl&=kmIyC1OawBWT`*VN!(%Vp$$Wg{hp%S3S?FnL>FDW!DQIXQVPI%vX6F|bd+v62 zLEhtE;&(0$wAJCVYf)3k=IS|2Tz%mD70Joig?>Y{d9*UEVhr}92(HZK^3@IP$A7rz z?A7Zj7msgQ8X_`MRRoV96_qqBy=Sl9x@Xt=#mE*Y_OYelnpzwsbyL^LA8y2TTANmf z2Z~J8mDn|;0!x9fH_UtDyan@T1~{8(D6`urEif7_%aOrh3l`$42TvO#b!841S1q$s z(6e;Fd1@{;#+qPDt&|3oe=SoxR~$&?Jj_%FNrt6?|NjJgV3 zbsa-vlR^4gs@Nj1s=%8BV6{qIzJSkDR^&i%2*AZvcziyOtBevA;I2^r*)k5B&B6?l zvnZq?W>{s!(8js}L6bQk6bh*9cZEVBmGftzP()-Ot2r23D%Ga zY}PXf8bcyzl$0S1j2#(aux`Z+Z);tF61aZ}A*<@i)Wn|$P@WIAo=M&EC|8$nu z5PcyJUGah{p-f3vXc}4B;XvF``;rvG=1Sjsg#W~u zbHbxm#vD(5^6X{N{iK6y=ZAXP7^*3;Us5k9b8OTM?Zh*ef4O=4&fN!3U48JZs;;u= zuH@L(kHUOybg_{trCvfHDe(2}#zw6>c;-^_m8)sD9u-wIG}TuWJ^cCn!L_s8O)))5 zIWSF4Yw`R|C)4g_(z)7sh0iPMpr_YYmE_(@+_Thwuuu`@O38HK8;zK`?&L2yFDk05 ztE#GNv7cxafOnMT-8}YD&=3tJrXZiCsBY!I{9sy6S$&hNnFDPQS~kD6x%Sy_Csw0a zKRq5xNy~QP7iaF3)U|Xo478>G`Rx-Q2U-uj5Dn86&D?w`v!V%H1bT7Fo$pt_^;AXA zIc(eIoT_H#X~WBVr`LwqXeqHtV|m#8InCOdlwH~Xw6Xlj#f>vWdffh}EM@KCQ`W~n zENy6!g3I@zbxl>dDSPI781p%pR;8FAiW)-#qmSN%D1kQH+(b9Bny`J6H}e{+3vV7? z?o0SQDX9&m*2H7p=J-2>W#F3C6=h}R6;-ktesxt@{>`J&0i*-V(9v3K6&;(vrMu4m zno&?xn3whV(c`RKX+AG6``+dK%b9*=ih-VyC}er;_m|RcTu-@l;oOBw$#ja~YD!A- zg(K_ddJ?`;hIydPR#G={8aMybt@{q_-?e4K`VE`6?c62X$=$K(lgP1ldYA{Km?qH| zjE9d34O_72g9uzEJauLmJ&!*ZHzCiQFxuW29H10aPXpSBnx47c2%LiChO^-8Mb5n= zl%4D>4b-7QltPix#0=)CYa3uS8|mw4L&?%Nkm@VxX$$$x^ev{iENElQI_44uQH~wD zoG6KkSj8`3dL+uBjMK)Jvz}9VSh)}0Q4z0V0m|^Kl}aJPlPI33iUrnArBbT>$}700 zIv*?Q6?F|f3o8oRu)UMW)>5A^rw*zKG-yT*J7ord`m62hu!MU2CuDE56zsvnHay*E_L8 z4+1e2fe@Xft1T4pxI9&;hD@5P!tKw8{>_B}LzBn?Ep-9dIY}Fs4E3D8X5ZeO-MM0ml?p-~!Dv+$vPU;mEjL}v%8s;7_8OJe93h=^F_desMKo(9K>mjli zc?L|HIeR+5HzLOoql2f;4x2H-AGmc_lAag2jO?i7?1{eJq3iFR7b{RA2HGGOki zbz8P={%RG@P7YhN`s=ORwtTfRa@xdck*mJiymjN+<@2UZ4O{%lhS+VJK3@?&ecBw7 z-mxq0*u`J-%Bo8rU)V6!UPqbTNp(=;2lUQON8*!`FP%NQd*jzz_MJE{LHfv!b)T=> zapdeJNy3lc#I9erW&aNsB$pFUAKL!)dXm0;6>>O58NvQC9_x?4-QF>dc9zdOQDRWmVbwCLAiPY@jzT3ka7_QYkC zwM3(9s3|Xb4y~$zZqkP30bAv&I+Fi7Eo)XI%(nGiii~a>*00;rZ7QuG#8@4eG&EwO zEGhJ8Zqqvx1HwYbe)1PT-YKqbq+9st z&x-O2SV0&oMsEv?Fn zK0c6iC##^SAnV?Zg9xU=Pq7O zyKy7!(vOFB@7n*}`K#A|PL*6Z8-FoLa{di70yRh!O^cBe7Jacj?!dlnUw$}$Zp6}0 zHf(!s_878jXY9uH>teR;J#cXE*3XwmMJ`?)vui)DZH-yCE@o@&#y6bu6{QFJu%?+K z0Dm7WS}+%w?UC-{;AuGArFT9XCJ;J&@Z8zB3vK$Gs6~sSW&^9|F?!teh=mKI<{)?4 ztgtsMyq(fzL47l@vWFh(>1sdN#K_oU7+4@<4w1PIc5%W{rj8>#aO$Fqt)+>v`7n_i zKyt8}3@5t$YbnwOp$2?#)dd1IO+6#1vj)1_ z+B$^856CBC5QkO^HI`9p6*vQy6gg}sS}yy$_+^h4z_zfC zC4}WkXkcLjoVN|JrYo}hSTgDrY*MYDsDO=~f+DRT`RUM?T<Z@Y5jflf_w?ez+TaP(=0x^Jal>bYj&?K$P=MJq>97?Ade-it^FRJNcE>gx zS&nlMH*DHU$Bx(%^VO#xMXy=E=M*fsRd7e&PCUA6^CmbfVsSGNF0qG&cjvC1J9k09 z{Q9HtaW3Xsz$tW5T~PcuTx~0lDJwRA`%|JM>EhWRPo6pxe<6{+WSMa8^ob*fkNuc* zEAvHNYkPBL!QHgPbLSJ1B#H4Sj~+gJ{Pcw+X|mu-a^jh9zFs&^Gzg9lh9ohsxJ>+T z=TFz~WoBnRd2sj6@An=)$)vLeXFR%_e)GmJcb*iLH?(*6bhcDI%X#$RQAT!l=EFO` z{CwlryN|PT^XObbUT)^^S5It+5L;`ju)C;kD7zf4&ag2b#GXyhE3K}rsVXNP&kF1X zYb>iPN}oS1Dt=K>-`dgBC++QOt*?T6xvB=6g%`y|PoI}o*7Vl#t4f}v9Qt^IqXFzY z-5@y%_M$;9Q`a89nP1)Vs66j4tgpMX9gh1~ zc+?K(b7NEMtIobIL1%kI$=#ne%yu(|dxOx_W%jiZTQ5E;Z|&}rO8a_ydwP5O`eagh zpGt3ccUN~$uT&BKQ}!+zZK>X0U5(f%$1FQ=t+1g> zO3URvbg#S*RA~AYs&vWuvhK#BYx|e@S^@mg|2}2S!G25PQuFIOr7{3|rBVu|Db$k7 zl%?cz`lPaMkm{v-@Iq4m`T?dso2ieToW-d5+b?BQw)N0bc3)37-O1_3u+SjI>+9)k zhhyngS5F@;rSKy|ZkLST*VRy%_Es|n!H8k(I^(O8=}&9hI=i}F0Wwfm-_+XCg+A<} zJNX!f`l_;0cuHDd(H$HNOc&ivb;&yAU1(j8yqn+IR-JQY&%)6b16^SRAF>{-7`qeh zKCP^8sIM-2R*+xttgNOU4j;PCw6>=51xyV0ALSI6RoB$OOj`p#5OI9f)YjEEG|-I{ zwzK^D>Sy;aY$Z+#(!*Vp7h74w+-=&L0}1IF`PgpW|Mhz6_4EhXuvF&f!FiYU_|EmD zb7wDJ{q-RhL&lSg?EJ!~MftheS=qVy1#}?|k2}90=l<2BpHFu+226z^O1ug~eP*xO zeezQ3_0*)Z-yJ$|=tR6E_4>8cE6JBHCtWyoc;}{=*tiqtk}fADUQCpvT>JTYN^(+? zB>8G8okm}ir}0yh&mY~iFwjn)neVW|9S80J!=Y|LGoqF(UxIrC#svmX4qLEv`Le|yM9l}!n~F$bPoKakbE6hS zMTAF0Enc=_+2RG*o<@DJa1p(jT0$@8Em{yhEnuXzo`CR=4$xFkAqG{~QT}6azNW~| z#?Hyz2PbIy`jFT%H)lI*b8{*G1X&RkCw zmd!2*2{*DQ)zCAxu*P+ACI-4XdWNQm#j&dcp)Q=vnz}{^(6KN#GqbQ_9+}~` z4a5RTt>ieD*KClUrU2B4MGBe@|YtWj?8tQ7QNUC=WmDSY*jHjjpq7znAct&VtHhkhVM@a!*64aGJlu{fSo0w5) zB0Nz-0d6Y=1zNFNNsiw{e!c=clGtf`VE63-GEGM8!$^0tdf~2WeP>(y-tGV1?f>5G z{~BHJ-tGV1?f>5G|K9EY-tGV1?f>5G|K9EY-tGV1?f>5G|K9EY-tGV1?f;J5Q5^|Jynub<5(Ain1GoP#5V*eY4rBv@rjA&zW-*|wjFWDe@eW3`O?L6XXDRbOuQsXPP_H6psWGm zd{1v3|74;AjN&B3z!ecQCN7hr_ny1?AT#sfZ`Up-CZ*iEp8>o5lSdC9K7Nu(%=Ex7 zHg|M)wU#}I-!RK{5RCLBlm&6J+C%(4h>gEpP*x3CT0zzm#733@mxi!QCf){cwfe@E z_O9N(-j15Aq-_xl1ewHvz@5c2aGbd2=#Bj9)>j?v&2`m)#}Qvfrve;N?eJ;H;mQya zZ;?#eRiAfd_W~btcryAcE2tWeoE;PYpbSo?zTWQ6SMW^1r6QBc`g$2(5d1m~1u1*` zy&t3w98(Aln!iJmUDE-N7Krx2EhUw;&@$o#YA8tE*Y7nVg%L-jZZUe{-jw`?E*UNF zrW@WWBUECOGHN8;*mrSUT47^1%Ak-OKB8W^l;*<;)lY7qD4#+1k)m)y$zN*23@rcxw8K{hXAk^xuYEggcz=j*hmBnN6|bc#I~mJR zXcpvUXTn#L2VYG=ZgzG~UO}O(NTWYDGxJ{RcVEsNNt}M9t~mx%-!5>`rehbbT)R$O zG;qlzNUp*qlX^u0mrP0;eO+@PJ1ObHiP&Yq4hF!>lUXzZ9y$UE{Cw-4{Ra;0hrea( zmaRMX64%S_9SAtv8}}v~?%Z|Dr+Hevp7+EbJTefVz9mbSE?Kl7avlQP7A+&rm-!Kq z3l=VZlN}i~KP=SS#!yv}Su$p1ed}4+x#BW5oG=YXiibPyKJq7?6x`#68x?3jjX$z| zMtL|5F%mNIaJ2}fC@RX}_K+#Ch_8fF z>Qj{BPg+3^&xl-+4QEI-n5Y!~k8b!sdf^l42FQW_zYOjBZr8H`k< z8DL2vmDTUrQl`26pv2vG=1fLmDE*x6VO(jtc>JcD!fyY$1Q zbH}+_>IhWeQeyxqT}+#L;78XPK${SW$x~4#;i*J=(gI3VswP!6Qq#~MJaWR~b-VZP z`f6c_tChYcymkPi5aB9Sg~&zhE*Bt`ey~h0)x*Rk5$K6ApeKV2bhI?J^$a0pO^hK{ z$!Ub9QWHlrD?5(~OE-U)cqQRj%);^RcDT$3&=f?jy#-UzA)#yrx|$@atB>lXd?B(0 zTE_i26jw*wx;b>Xvm35J9O*jJ9Y7NtF6r*(?hdc&^yOPlUVD&n_sX%a7flWH9pwe2 zij$KIgIdvGP%AdJ_Dq0-p$6nL9PZRC5LeZ+auQF#(Wc?ECXMs=8yf=9aQNJ?*z-l(+8K2ZeG1?VN@hQD^qZ{;%fj)a8PjQC??)giLp(y~uig;5J$A!qE0-)<_VJe+x5jSS6ti&)!JvS>ZQimqcE`SB=Wk@b ztZS$$x|@9J5IoS^x8NXeTzRxPQCg2qs*)f`ms_b zuqnCOnRJFc(gnxE z0&R7<92q6UoPnk?)c+3@3qtr&HSZ~cb%Ah4fG$EuEou=WRt*3`T|;v_&?kL89jy%n zf>2jmg@}gIe$0zjKj!7>v*$%mQomg@Nkl*`Kx+_CxWLGH%4f%+SP)Q4TXQ`sLkXcF zF_k(xJG(lG?4&#Roeby%QW*LJ9(HPUw6_78@izX2Zsb)LrT_5xRA)m-D?(m_;9DSL z2k^@a(tm*G_)jW?)=2 zt^Jq8rR3KU%n1wlm_C+N)=Be-meRu@PLM~*J6_{o_`RJCMK`{U9&b0$vjVoV*07+J zhi?`)K^=iE0=P;Se)DPaeXpP%0k;CQ3e+8ffuU)E3{acw%exo(S~G($L!^|7j_vr5 zkNsNG(gTf#fNSXf#^^$0!C$>yZH;wx4J|;gFuD`4I2;sv3nC+scDKB|d*)8QQuDI-X-P$W3xOAP_sIH${nVwv z&U9gv2Cy@No>w(_X@^#gA5H?)2yGX{>J1NBbAr$Y)Tjs8BrPmmfxM_b*q-_LFeA7zOsR$vOKAe{R!JoJ+j zw_mjM^!9YL)K^zlkeOOuQk0ip^rEu1zP2>)&eikr38@JB$tx^=Nx~aRnYso9e3U)I z*%q(yHLA5WzIG|`+^M7Ad~@{2gsW*O2`6@bzGCt6PXUAZ=E#XN7cN~&IFGQwD{0r$ zB=IK>A3Xd9bR)TR{>1K2=la^}1EDhUS{$dzZi8yJh31t=nQZez|(( z$~Eg^_w3)d?Te+eLITH6owsoL%8%E6y?NWVEgNGtZQH&7VBF4_&sKf-4*q82+NCpm zhYuq0c!c~+G980II&!nHs`~i@$)WYjBf`SwMc|~1P~Zb+L@ZjmWd4jGFPxnNpiE$J z=#-grBO<`X=R_=Ax_s$^u*qQ0Z$ojyrUbYTgBGX2>IL-~ST94zE|0sCQC$2aJ|l-)4l*<{wHiVqwq0>rv-?O0Al%i6+o_!XjLLDcF(>CH zv3o##IzVeyK9QTx+_--?_4}ClV?|b`*lU`a80qWk8W=-ew6-+S*Hjaz;%o;UU46(+ zGYC$|O#;iYG%?is3q(gqf)~3%+mYKdAw zLL4>mN2E6ZqqLeLcFC%03}Q#^UBr$OLF{1b-UZ4yhl!7Km}Y;paYyWzizm8SYV(x( zphocfp*aYs1o8$kk^r(&iqd|C^snF@qLOwn)HupQV+Zl%@DFeel^a1fu{)SB%^qN9 z|A6kaLFkYWa7|;I5xBI-!_i8g7zUCdN^z_dPpD^NiEB!Xvtb`9!dgPSrbaCwozI28-gb6srmrWC}<3uE-D?>(W;vDDoqnxEYY;;6MS1+RkFCS@K`BVAqfoL{iu~K=g?-;hN-s0x`{EzbsD`!SEp&V5+IiUD+1y}ZbOD@g%B1FsTb;Mfq|`HaLCO@Bjo(=f1`!`E*_7v zYm{BTivzza@u+l-vg>zo;CCe+m99~C{VoptuEe9#HOj8v#ev_IcvQMZ+4Z|P@VgR^ zO4lg6eisLRSK|Lvx?tb2S%u_HFa^zq&4(gZBi2u}8R=fC7EcELtWVmap(C@HvkvzT@E7q8sRxc(^&o6YEEGk5y zK#Ur92Wu`1QgiZZvl&v9Bb7#psU}KF z$tg9JgBY7-kxpj44TZ_9xrfG&n2C^X&DhkcR^yFS$pQAXCYi2KQZF5hFOlj)@kSHP z(=@ZynkFUQ>0h2)p&$C5s@F7H-|4EBDC=zTgfs`8S|ye1%G7x}yfKEAV^7BcJOP&@ z{gRzN1h=D7t7&Z>26E77RWOapn_3%@XY8y}g1wN2;r(uLt6q~SZ<1@pdO0bb;>~H6 zTN975Bqk6NlijFfyIYr6mZRY~W#uo$EB(juf>@Y2(yAmda<@z{u$+lPkonYCVF^ZE~%Cgydy5 z@bKh!Nt9_CwMILHx#KPPQ!{TyAPZHXX(GIK)@zyzTlG4*O)yB@7&QdxHt1N1Mh}6y z4SpAzxbD{EbiW)=kWmb)p1O~IBZBKp$BrfM_CB}~W)YEqkTL=(YPuibW2h+sRx%JMt`>wn09(VV>#6ZhsE&-qm_{+jGg#vp=9B2Nj^@pbBv5J3pno8k{8*@*oxOvjlk=Fn zFjx$aWKc|&E%IK9VaH%G?U?qC4o>#0vEhgu&$9EH5Ne-NES@;6<>4@g`<{K{>`!x?@m%SpuP;k=k(1v1WT8*`^E}zCjmz{=lMnE}kze_A(WZl~XRl`X zzVO!K&;Go*``oqVpKm$z?Js4Dwntw4`--iHzq=ltDNxRS^rg2~ZadO*V?4!Vf?7M8 zCPxSRNSXw%&+pk>-b`>=cYKnQU3iQISq zL@b*uo5hdP%fGov!mm@{J4k~0I5n03ExV&{*Q-_eDqAd zbpD*U#||3KjXm?z`mK)&SZ{m&JaFa1i@sk?v&)>2@-n|8YW>}p4~slLXuSS<+uJ|q zUSGYbwf1?+IbO?W9+{9e;hV9H;H20{ZG%1du{taf0(q? zUXuCXLt_$H%r#$aEos-U+RHxOrTOKrt2&M?eEE6BJ;&a=@3VWiecpMgs&C+s`m4Qm z?>_#}b~8kGXCtdYZqTnpkdk-FM}4KeY5mMqj%w`1}Lik1w5I zweA1uk=5VNef7|uUoO1cl=9}gRr$Pp@!#&=rn>Rv&z?OACrY+;jeRbZ)iBH9qaRj! zJm~f9PWBHUY64yFajDqbu39i-Q-0zvcW;hhy>YI0o~ry%gh%M%KvhU<<0CIW{%z=m zV4s?*tR?BaFITL7`?1$OOR3!DUllA!;&9$L_ViEHAFk{e_{_MsYtf4jb*^;X8{Tu~ zxd-iEtTFF<=cUs8Uv?bb=pFy~!3FQ7Jl(YV@4maPu3NEisj?(`Q^1MxXAWd}n=bcf z%{nQ#;mCaGsm*iezI*5!x8&YQ`-8imfBR|ure~*SK78qG-rQAhF+RI{T<58IGp|0+ z>W+SJ(%$RRE6YV*@gn!m8+qVuxe%-7jS<6wH0-xt$kY)+-bhZ81R~T)N~*&3xmH)9I^klzE!odn@!) zA74#Uk5|IU@`XP#J~q4_67jKkp~e}whMbFHs?|NLC^-Rz66 zpZUk5tqC(0ezr8}N>0kjGLJ9cWZc+u)Ti*kp>b31eJzA_-RsegPThFp2k&@wtyVU5 zPK|i}=r8lk$7qe|MXL)w?$D_ebq|#SwW*;bn2@lkBB~ByJuV#`!o-Z4_-|6Msc0&g z;u3_G8PGHYDTYseKE*-6iE?C2pnaue4ofjyDSJ98MM)TLH^cP|KWiFHS{R}9)P?AJ zEhFq^_>o6d^pu5={VJ~QxN32cclt@|aCVW+eaDUt=2Br?Zg?CwDlRmN9U2+Ojg597;b%88SkV+WIgD zag%b%591F_v*pQnolP-b9}7MW{z%C(x=hOcagx@a=7QZN(t=GIZKIj;C#f%4v-puY z@^87uq{9D9W?fA(x~#4N1IIEg_RlJJJl~UDc#$x5m@&4NVQ2q3>#4v%>mrPve)W3I3b)Coo03mWbZH zxPI+t;gKDwH`PHBIfWBWIh`i*;`AQDV&N1KLh3xZ;rE+4<(Ma)BiFJ+X$mb|BJ$`+ z<$+6c&{?z;o5CcTj<<41EuN#L-v>EFubl3HLl*r1Ee^HP9QuXk(ANJFhr<3Php-O( zHymP-_&<_ESWSLG%K}9`fv1e3Wr#)AVifL>A>1KDteim(5#hA|{W2tJ)z_oL(Hu~; zgBL8)Q^=17a;+)P@hROee4N>r-4Dc@3>wuw9umo^+tNoHyqB50aQWNfxf z(<({UoFR$nU#7O{Hdw0q_H@8pc(Xnw>#eydN++9r8#VcAJ?Zl#?l(|#6BPnBYKFpW z)C`3I^N7?)+OY7ltT-tWCV7gqsd?my_flJ2Di%QmmffUHCC^r+T1gm8!jxL9RMS;W zX;LPOXb^qN6RTx6;faHAomN?LlQk8CaEZEAYk{|`lZo6}e;_1%2q9#(4MNy#^5kio zN{2UKX;4K^%lb(=}I5LEhiOS6% zN!i${#$dhfCXCLmy0h#WrJ9sZMybKlX_HsyS_^&H9MwdjP+|tN!Bm!90sk%+syH;8 zMBYZEwSdk>sz`b`E>byC%*{&Dx#+PK2`oS6x^=Y1BKU^K(781VGLx8wiyrgH*lU@Q zklbXD9?V11TW20bQ8{Ar*@{VLy>p;|pR zAg6<^yZTvbOKSYDukqFqf-RFbYvno}F>2A=867P~M~meD@@N608=J`Y=x9NY*rTHb z^qg%xv5YbQ?a{)DZ&33S@w99JFwuyM8aZ=_D-=Y(qpu1UBOEGsX@EQBd4j$RMN(bLU1LYZat zPPmfVO{e%BTwxaG(%j(9DXpWZluHyN>5>)4Ee{(!IdwiAlN@1rQiP%R;-cp~P@3&| zWWo#!5DDvT6KWP!NaYe34ZUUEGQ{gw$dkc`!1{+g*($z-Y~rFFVL3`R<_x?QM3 zZIj-%Bp_iDN6I13lqP+OEiR?W5|`4HM(QwTRugftrHl1qy-Y8rsAP&AAJ1loSm7$E z9$VyTfJ~*=Xss_~X3h39ndute?ayW>CL&LfSSwa)#m#jktyqlExza6uCjdwhR^ZKa zrFC)~fUu-2(rTLFf>OzKRzOaxPOnm^q+R2FX=5=`;pq?q21SCNbY5(h=m37Px>PDA^&uq?pFR}mP*AE^Cs(7(me#2h zRuxLff?CoMG$d?GLf-jMwOW$iMpDHfB$Q}htqNz@>fl9C*4dKesgz=3chOm^ojwS# zs+K~vjAmJeN=c`)g2@n|0mYgovAUqOQ9@3)S*mR#DP5(NOX=|dh4XYcv1L)>wpOF} zH4tq>)Nda2S*ut{>ox(@SXy1HMOn2X9{H`XA^fsJ1S*+kc9C2w1tO9^Eb?aJLTz)M zxapR-0!^w`E^e^ZKSQNf(_15~>WbE{D6dScZUs{;y3eBjVk1J~jN%4|$8aNPJ!sLI zV5_D9S{3^){uK@)1h&hjGBHZ3)fq5AS~+JyMFXr{rW25%)J8AXf~18}Yki$XZip11 z^#^sZg{<2Y@u1vW$s7cXb_59EXh--z*%5x*h!SQUQOFEFyGfz3b`knjSJ-6heWi7p z*#u^LCt-S!pjAA18>aIK;6GCgLs0!D4Q10TNOy1MrYS)vsL#bRjbVmG}YF2{5Oir+(HOQjC z+A8$y?{`(p#vL-GT3LQOg(b#nFV!!(v#X&M=sj)i3FQpqUTM3_pZBJ>z*quw&{_+1sZ4r(F8B#0KrVGzr7 z0E0A{qtQ3gh$QonsoUVp3yDI8NxN;zM;a)^vRl>KY_=w&%giSet}1pUmmLvh6%^ZW zVU41TrF&Ks7N5VV%l^+M6_$EnX$_KZ%7m>xx6L1D9bi)#gOiA1kP%-((lnX|l}#)M zH}6<9!|=|Hi90=0y@k0$#ClkIv{;i4R)EGLl97vC7G_yipTlEAtvE>v(h9?4!-khQ zSiiy0u*%WkkP^90(~22o`k+O{x|}YB3BPUB+F`eVh9ZcN6z4_giic z_agTf?se_}*T6M$O=gDK-t251YaVBIHM^OoniI@Injj)4#5h##M^#aCsb$pL>?v$_ zt`m0*cPw`t_g?MLCrekb_1%OJUd5Q=!Aya|ejR{#%H`|67P6tcd8oSSK$)FUFddj3t&u zI20|<2EN6%h^XO^q1?X7<#cdRfgaTg>o}2=QClR83jfz^kwkh1g=R!KC_vBBqECq_ zHKbrL@sP#rEfaw|vEg7KC6fCe7;$blE!~`TV4n2<)WT!2*Nhr?ZW?B+vn0zb;14qF zSQ}wvyN=b;X_>9iPMVPfeb{8iGW{KCo|1w7Le8)?Ky#AKWSQteda4d#DHTK!y-G%? zY{1Z`2$b|I`U6j7N>4fyJ)ouz zBbbWoh|v!3v9PFN*+M?MWC4V8qoN|P8WT5Lmaa$>6&({Bi!>^oo~(9w8e7*vTr`&( z27EWIo$&Wy{fTuc+A}(GSQM{LC2hds5(d;@ZUhR(>?JKH*J912Gl|u<)qUAW&_Q0` zGPmJ@V~yaU4!gAE)NHB*+$Gwn37hjvF%RJVG2FyFm>U%X=KULPM*k`|qhiCuqekXt zC^sesjc}9E!?_s~gZ1)%%1v71x5BH49S!)TnANHh8H4pRL})N#NZW=Jj~j`UjGV^` z9w7&&Bx(qkwGfC8@C-IAal?-OMmaFbfl&^Oa$uALqZ}CJz$gbsIWWqBQ4Wl9V3Y%+ z92n)mCPu_d$^;cg#-fuMH zP(=T?CbRv(ksaH1?)q}~m|Z(It@&{2t1rKB5LrxSr*8+$=I?eP&bWJX7j+!zuXGu9 zJMG%BapkfXmOOUEgb(pJ{&2x;KE8d&t^sQr=9R9lf!)r#wyl2i(M6AZhZN@PCr##) z+jbguZ=kVIR}4Voxc$o)7A*Mmy4k^e?nl!PJ9Zd$ueU}IAlhN;M~mmr`wF}`^5ey> zZM#gnZ*(~vxnMB&Ug$P-IUK)e4cT`S*tvl&hf^2L=3mb3GjusyLtR}UnYz-~W!mkq zbHnQo&3&)m{-?v=9o@2%Afvtp-wa1gUDP>ifN{iNFjK!6yQm9*{IU;G2(W(HXTj48 zJoei^o!8d>gZ-JKr*~`tO}(JF&&)FH>pInEw!@?AO23(PuB+=DpkM?Z%wL9N-`V+m zYiqapAoIY+?KBa;^qQIHyLxdy*L4Jm4PEH+`p~(zK_FVzXPtldQfx_)JFKgAV zaM-+Uko31b}96|7S*Etg@4tIv(JS64F*MJ_`cM%EBeGQD~&t2(7 z+yxrr^)B;nyY2tfHofSua@C6U7L3P@W^)&{&wvz!{Cz+|BR$teNI4G71l(;p&NxC! zId{bXnHWU3^Al~uT!&9Se!tU#&PtWhOj$xB;RDkM?kfZzniiM`@$L9nQ#Z%qi@(3Q zYRB%~*SjbK(ipCwQWv{=(Nv&z7?YL|6a)n583s`;zooIEzFxJe-bpE~6;)T)EJIiAH#=QF@%N?% zrCcIjQ){eYiC;ekB}la94+lPZsIh*H%3k-UkM?~Jor%F{GSsj;RI4YghTZVV=o}1L zGpSgp;A|XA%EVWMW+CK_|LkKDV%_P~Q;_ez-cE-PpPu)~Ll4jC)H&jOZn;SF)Q7#D z{hdzB=Qcg{%F?Gh8an09GEqrJd|YBt+w%TSL#OlFN7PTh{OX_E3gTBsI!8ptB%~zG z%wM?H&}r;+{%H36S6+KzPH|kw>VUgA0YM>=GZSK?qBS2GJ58NqKGOf`wWSM-V?qJ~ zzT}t#oPxOF(NPg$%8yK)X5ejG^va)=N!);d^&CnHy|#6Lb5{T-C^$4Mh|{>X6KNb5 z>z;nHJR&fl)0(0WXdHusIDY;MIy)UZmn$E6q9!6>jWzZ<$00Dl&o5(nr$c8)+as;< zfvc@C*En|metvpXzh-uOPDsEtjsySQ%jUE1W*9gQ(l4wb`wRkGGQe?Y`NC}OUJ_&A zI9o#;4ox9S2;lhp&Pe^xeu<<-8VN+yJgC;od=rOSVhu3(m(c~gjU4J-K)PcPg#fEN z#)1R1`1#E6dD331sLu`x_yr`Qb6$?&v_RqF!PyFhyM)780_axy!R)r={Dos5;P30> z(_kkS2@?ZRb~k$btDLjAFX8Z^Y%g4jzO>BDB5mvXIy?2{gOWqP=3r8NU&rcu)Vru>siFTOJlprVfjt> zj$viwXK_J<6e^ZO#TXDr2#!H^8r>2OAwUY81e{@#GWZ1llC4m&TWyH^r%&gw($Z6c zfyhb;6ptk|5+*Q+VBJbEq4j{1#zZRUM^NP?#0FpGP?r&Xc`NGh1?Map10)Wk3HTXj zG1xGckdl_Pyo<)NQRIuN*$JY;g9(F|fVC~0mfKK(V_%R~%iwH+PNj3k?ap!eJ~SwK>~j z;Mhqam&5B~Cq?#mQIoBFBZm=#V(i|{uwo)oKizBklMWwd1_uNN02Pxj%{ap`OR1P% z`u-DRd1)=hfmfQ_^h7p;O!q%(C{Rbn^j}F zLSMR5Q*n30)HDkkGnUqvS+3#gV(*0h2~PJ-O`retvkMz*J1dytJ^bHD&isX7t9++U9FlOR3{nO7srcMu->bBZ-jGG7B4<9rL3~-rfoM4*ZJke*t z3(vNtbEdkjbai&~^zsP|YxdKRS8>^H>s%=TbmhiAR|gL-AK&R-Q%n=g z6C7NW3+Lzgc&xR?_PRQ`PxbO*vnNfM;5gyFxH%7&`navJMqWo&_SC6v6DK%K@Ti|t z7woZmFa|VDojQ4f{luvHhJ>kCT^+KPT{53p7He>I5PWJ4*~b#t;sI9&#iwTT{>A0;SGETAM z@JfR{ka0iy@C&YIa9`}21todO)gMYy;SarZDa(H&`j&zw8cE$u?v#sNcutm&+b^zE zEOf(S*B4A18OyQ|6u2&ilH5=3j7u+|%Vo6zn&tl~5-e^5wigy}JcGDpG`6d*EH`&| zH&%2?!ZboXl%y-=Z$KQO*B{wwbcG@kwx$?-UubR(Ta$W#fpfFVgrwr z5NH!iXe2~n4?((-AVSLl0j*1CzeWzL6DGSr2Y7&vWl)gI z5DSLhLIg|T>c1ZfvJLFo56QsOih^#Z$##>VDm<^aG8U7%oKYBD?F5j=;We=nAonuV zV`G-lmEn(4?3Tselu|Qk@cZp2dU{Wr>VDaknI(ul<7yUA{=M}5M_M8nt`i+5Oqs@J zd%C>`>h0V;+$T?9PMGL!VpHz#0|HrxsFQ9u37yBo-R(mF9RPGk_cKjkOqpu(V7R+| z;%Xw9k(=~r=ENx;CU+ycx(N(Hg30LU#tDpxlLy>Cry)%D$HFkB}M zK=CjqPIg^^SC+f$OOo7i^zMfA3JnlZ`baTtrRdU0O7s^2M(ILnFkLX zFzsg^ICwK`K0qPNIC#LgpK;)z(V7B5Q@8mL>+sPN-w8h7p9J)((YT-TmG zd-oscK78cp(IZC=A3`yQ4j(Zcy&K_fuI&u8?iLcII zHJf{XJT(~p>CCCqC;`heQh_~PBiUVyT@HKp9XNFK_zxJxjOR=zsh@k;458!_B^miBojir<(6_z{Z`7;+WB=(Uz!w60?zWWi-@4mT)1Q&k< z^2--*3?T065afp2%rsWy$6)d^pP{}nATjI4nKR#zA&B6=c!m&o9zg;=XFAXLjud$D z2FA!6w_+YX93_QjzC(^SHA3O0Q7{Kg5|CQ;4{a4?j2ayV&`U$X~PF**d?Y=vC z@-z%wj@Qq9b>hTVr+&r&eC3;yC!rVYuOB;naNiz6vHh*~9%I+td-m<`K791}iL>9H zIdS}$3EBi*_X>(3L%_tZzWo**_1Mv)#{ec_^jgyihvUbN5baGUcG!8Vamd_d-ZOq5 zQ8vg1O$Gf$)Ys2PjYsfbQyw!Pg;DR21C-b?#1fd}k;B~wNXP#bqY^=Aw{QP}gWaY> zj@?kc`)M`Yd#Dc_ZL?>$x6f|VH_JvaZ0(Sn6%&;8>ZazF7ENQlgqJy@jjKP>6xD0J`XY@{eF#sA zj)_mn$So``%FjwmjE#;R*#u?`paOe?O!U zRajak;FlKWW@TjM74gahWu*l<8R;20g{6G(I6pfB@M1pFloZ&)<>i$^sp`)rqvH`N zKLbSs7;m!`4senKgTv#}^7ulDOfD4*EBL&!N|7a8URqLGE)+{;(%PyrUMb*Gq^YeE z@JJe|T&_^msWpGG77&L525vDq8aOEdL7}m!`Q_qAHeECRu<1d$R3cS8+eN|;$iy{b z*#iXrp;9UqOO>y58I5N?Y>`Q<;jcgG(CYs>1V1V;+!Q&$aSRNJOw1{hEFUo1Uwg7q z-T29X(c#*Y>IU_b*9=Dcubb5B#?6TPdbTCN`exqjS1c$qtt1b%Od2?j0fC`0X~m*v z`;4q>59;6OGumByK&v~}Z)AO@*MA1+G5WzgJLlCQcnrhslpri1C~Rg{ne z0`4njKi6kuUYkAthLQ2sd=t>Wu;94K$XLE~2p+I-h}9Bi*?^$%gxt!xMk8}&$9lMI zwm*;H(vFoTBPhU~ac#ZP$aww(Kwns}9|=}|0MzSO9>0LN?L$%b4>4i(195OfVqWFb zMx(idT3|pz*71&x1;9n)UfDrNTZ#e*_({`J#tWpdmB$T6#_?OQ-n3^DtU(cpxs{78 zG#ZVRh1!wOURyvHah#yt{-gl~SkY!!+hx$W*-vvbK3gEahQ!y71N;8=3kD;#^cHea z8soxQ+*TmOTDg3ChiMKhm6k3*(1HhpwocMWfuXUpN@_nu^Ss&mCNRE=%!IAXm2=i)u zdD}5C^JV>m-yrrM8qJ)q2aK$D_4=1hMhB}B7#MB_?dLcL28G3?7gfqWM8)s=;nh01 zRIYpu-Q-1JZTS>fKWRQ{GTOb+*f@K$5!HOWP9az7R~e0Vo9C<5F95YwhxOlL7d3Du zLA6B2XB1V`$`?N~S5{kHURGX(Zhb{LLxFB8K}pX%(}Mn9Q4Wouc>3uUnN%#1%48PR z8xjaN!f-=sKWwIf+{pO!yb^(_a*O~vDk~dmNl?*SX{<1pPblN_O8J7y%Bsq;lKkA9 zydr+Nsd5|?8?+eISawQmXb`m22W@30C;CK=S)EH+U6B$M${WXKI5gH*dC?qt@6yXe`c5qM-8Ne=w z8A8X0g-1k$6Id`nbhs~cOh^z08qTlUkYTM4Fa?@}m_USQfHCk&&_JNc`aT%fi#YSY zvNs!i`~3!d&-xjBulkw(C${IQu!qFLzFdxJjTD!ds>SrC1e2I5OlAa_)|A2~QfUqG zF!4!(mHHOj^EM@`PNk|hHaOMSNlQksLGP$ES52rE)e@1EibaB)_z}&~13o6-UhCE8 zWAr80ef|*BShVHLX!zayf=9Min_#6fxcAeS(Y?=&TxRzv9-izO0b#L;$w~2%!M zuV1len_v)Qx_f#W*k(_dx;&?nfSrfC2LVx@Fm72uCJztKscg2_bYP87%g)QqNQ?-W z?&&_VE!;?~ah~kyGkoEYfPcc|#iYYd2!j?&*vA`|J4^UpA8){?O^1_$!wCwXnciyp z?w+-?;zDLjb#rwc!JKYzO>%ShoHm0K90nl`4G!@4;{=9S!ti1E1q4H4!?<9ZpMQ`A zPQn}#j*N#V;{7 z3X`*_xWwd?r1;p#u&{`j_#~uBxEW4OP0PqFe$dq8xIQ;23`MvZZ!_%=xaPWfPV?i& zBxmI2=jY{Qq$MS$q-9ycsfh`RsTnzW`FYvUBABDm@FC%Xf}+y0`90@**5@UK`B@4W z?jaa(%>%$UBsMjt>HU*E2j7?H=jP@W%vnLgvizK^oO~I9|D`A|Cnv9P;fkJ~oqwq$ z3eOV$tGJ@_;q#<`WV!&uEuMn`S4TI`=>btGxl0Cm>`&?VJpNw?dK^w_F(K2QGW6K* zBzp7%#OLceW2VK5I@-kKw#S&na2u=Cn8t}tllJtSKmU5oJEqNyk2{R#nTu*( zH=Sqhu6YfHkJIlM&oesy3}{E)Y9x5=&%pi8>zfY)_s2tV_YZMD^aC?^7@asYXp6Pc2K5@=6vMpajd4jax>i*6wn zWibwS;r7}bqWLl@ypSLTW0|iJ z@|X)ntNPB{oocGy1UaDoVG>y|T6@<3^v$5}qMt~ncTjX%{`>tscKh=rIo&dl==f0O?-^8%#ZR5AgY-4~*#b%|!+Ih1JW9J>x#8(q8B)<~%-sk6}A3k&;;1`3%4`FW5bLQ`0^FzHFaI>a3^;CjEC`&4gEDAs*x>1ioYS=b-~Ep;``oa&vDl$e+V z_^h;)gxKh)n3+kb=}1IFq0%s5usz%iM28Ras1Uw-Or7o*6c%ZU9upB3jF|wfP&_v7!_fRc8b94h=7p>?_uT$$8c_-?=(+0=)e&?GVoPG&w6?La!divv@d(QH->>L zoV&3v1deAotufp1@it9&o&hH{nR)p78vX2jyuCb$S{=!sL%7Pq2FibhgpcVJgNO1pC-5PY*XYGK}8t0x|+h+(p3PJ^%^3;xPb+5HfhU8))Ye zLVfOV6OG_1>T~Nyp0h}JmCkGO`2V5Xhz++<40e*HVj@%vE07o$?-sXFnRVinkIhXp zVFB`>9r=@c&Gx&1&E@8b301;c ztmd(_uMt*@YNYa|-BTCYBdQA)1+WOWVAy0-TA)|N(< zLV`8BtZvz9vJrJm-%cT)C#aeG^s8?g-|Ag%qOZQ?#<$32SU&mhZ@=@wN1v@&x$^T* z{`v0mzdiqOgQBipvj@gtllktxjpaOk)xy`_|Llt|SFJLw?q6fDUdGjZYmBRnYs_mW zcdp;GZRc*deztF3zjoD%58imHvA(`(dmp`-byqoG(DKqhSFR#SnVsv_8#Yku4eM}i za9F=?UFW)W>x~=C>+RQd+JfeFV@YtshK(CHZP~v21bjA} zx^>&O?K^hwJq6d&)jc~mZ|GdRX3eS<|9G;k{lPP4?8>|PO1VJ$)=E^-X)Va!xOv+S z`0JSP*8$;n5+1j6`?jrHwgSFu*UlZ=Z^E4jd@HacjU92fW7OH?CW2TI00( zi+3OEnET#Uv!nSyr9kwT&ryUMHlVEExMlmUE|^eZ%H6$l=dRtv1BWndp3GfcdrW)p zLwG3M5;pE*!L|#RzO{%>!y1Pb%O0Hj&|$Mf@5|*Ci~qUGw8pe{T<1E1f6wus4CcO{ zj=*f|wC@!5HXyv$v}fAhBLv=q^5E1tbIEMJ-g9v8UR(J5;qGpDVVth+-GxeYu0=H* zR(B!zkKJhM<4snerI*n1MkyhJ9Mtwuw}=dlW-*%j&z?TyM2#z zlODl3-`#y4(5v)=dE@Y{s8)aS(qm8Tw|hq@diFEZ8sl0AFnH^(z1QKdxNxWs_wNs3 z^DxtJ=qP+lXOF_YU_5o~8r&pg&#sLqBZ#tF@#deNS>y1yNc`FtYt|Un+7o%-eFT1z z?+^cIy2kkV6oOwL{vOVR8|2O~!o9>eMI0%oj$KBA@8L#Z{rLSgbO^@JLy#NRn%CHU z`QD#je&3;`RPJ7M#R($1Ve|Igdw+r(>Egiy2Y&z~2+l*OD+B`EWu56h0vD#;xq}A}Ux$!> z+ucp~tvx%pfJj-)b6Lmw!P7AA3O2d7(^tz=FH_zTUqNevnh>M5lqe z8-6tA`GZ&CWjcM}z@dw%`_&WsP5T(#DBSMi(E|sdf*h`N?bx!xihtFLZQWaX9D3hu z(Leu*t@Ezmv~|bsJ^PNGJOY&fJp_09&$KVzeDa=yL}ToNrrCG$Bs%v zqXXN9jfPE(jT=ns%^S=cuWahyXxzlyxB>5s4G8vaG;d&HP%y4>Uj5}4J1$%}c9z~2 zz3;&VkG=TLr(Xh#xzoJPu-?258~D~;#-KBRu({I&SnoPUC#{QDtz6xG;X=<>WULy~ zx9hPb&pi9a2cLZjm3$q&^YmJ3%_X9jR6c;=bsUwZAW_dmz5 z$ok^Tt*1>FnBSempgCZ6KJ)3Hm%jGWOK*Mn>Dtd&E56)x+IWF+l-@$^eD&z(FTeQG zvd=ee>)g)R^Of-e^T_FIWEZt#?|1vwtlF~wNas<9ufF^C{5RiYT7bPOUO31S3tNoE z@kAya5?Er$ZompyW5^$IJXOI$!^58dj;Cx)JKQntm`wIjKcUKt^zqux9*?;m_AX); zi4Bro)ALkM&^xLfmur(f*|247pE{21HO&Y10sOB)Fp+wBnb^!^ExoteZteUuHrqIr z^6F=syn3xyAKQreqRH!?X_y3uV>+EUGctrTW15$d%}klUmTbIce$>D=O|`?^(tC!< zn>oYB$KY%BG0iaFd>Zj?#JlZj@*VF7V}43@L2*%DdVF{gv5|n1X$|yVZRd}q*t*2_ zp5aT|!TkLL0u8|oVkcw-1Q~*{ubP7?GGJ67wwVS3L`QnSITaid8Zk4iKp+y=RuyN= z48xv9Vt!#ylhXUV8Efl7>9iSOk;&Hq8%kj_i8947qryW?Axt=*Ofh~4hX74@R7^~C zWH=Wn0jI-&b72sPiH%E0&o6%xKBDf5yrhUAOwWC0%z!C}>@S6qnC~@p>U3{EKcjDw z9}HTsrliiAm7bb76Q8$^Pqu{PVz35DOtq{>VxnUblG8|%qbMqJ_F(`=d4g(dxVWgetg1#V5sNB##l^gG8ZN5fTf$P902TF( zFTv1%SX`18jUo)b_I_Z$4pN&u)e}`P_@?-Af}@gh%W4*HgwJW?Txo5sSoX|r67G=H z2x}xA1pZICxTZ!de|a~2QUBCPYHi_<+MBg7)uVt?x&WiEgTEhaW9c8-J;C;5`}F%d z`Ui&1%;eQBBd(|?8tNN9BCe>%>s9rS6Iaw3b$xvUaYdbJwFFpSKiEpVTfmr3NFMOD z^A89Le$rmW#!?UjJNo$tN2U~1KTTW^bG3gXuBeXYmZNY*eX7-d3g}V#!Tg4HY1#0g zTllfyR8`yMve`3$*3pj>5;Kb@K22Ovt;7}eSu5OI%xkR=!4>u9LvTx6dwxE=6O6Zr zd&7o@(8CD{Vdrb1&%rMsbY^z>pWupWr{)`wl69=TeLj%U z$XB!z(q2J11pK(^6~^-jGgcgfE9%&-XrVb+K#S%8y`eL+1Pd)h!V_a5cO$S zBWSljZa@K6v~){@+Q8Jz6jqcMdj?t=%#6+COKDHkF(BX9Mm$lk+(Io1V_f(Kx6hx2 zCu+r8+uKdEY3GqmK*3!_&X1gb*L*?}QIztws;mMW!6E(l< zhgTF*{IAx}pqKm^ST!F5>&Hz;;EH;_p`mpXTv3M~Rmh}r?U!&xZF;D_9wo# z(T`g`Z?1$KDsY_dGsD*(wsUk?e>?0Xz@CJe&aoI6h*Ky!=1QzN#w9um|7S$p%$aeP zy$TUAu_R2OrWpH3xV8K-#5nu;bBpIMs$WFL1?RPDUw>>R@F!{;jmUv2FoimYV9z~= zL&mPlA%@`b#23XSF!-o~>2P20_(0kOsn znDF#7`d{G;_?xWngK@oxy9)zJKt%4GXP;ZxLZ5lK>!Zf-u*jIGP?YnfX|l^!n7x>A(-_%K#H8gq zdD4CKi3rxjNiMENx9x}?>p`3{ets6~naP#uG6`Fiv6K1!DMq&&uwwOEuRdfT*EkP0 z?PM9W;W4J%PfkoQCr% z(#(uOIGhe+LX}hW0Q^qtauP#P1UN#uq6GR#37CW`3`}9Wz|RsKm3Y%josg88Vewce z$IpyUo|R?F_0394N+6qna)>88EjfX>t8?=5^79Kz`19a*T9=y`>O&Xc-~tONPNpy> zqD3g+&vS9}oDmeAoYnXq{7dgi^K!Ct^V>hC!_Z?{xl#gusUSBCcJ2kA_w?*|sXRB^ z7Jj)_P(l1owgL=O>|H&kdbv-e?t`-u=p9|$;nYdWeu}uAh_~rw;&y5&DK2TD-A=rc zl2Y33B(em??UGe57=mzMik&;A=l4^SEaW=7xO#dA$7QrzolTO8$7~@%`38&IsiNW) z+U>M~1c=*7cnd~1%+ROUO?IUj?BwD$)i*3D*Wz}nCT^#t)$PRXR4s?w=?OXQc2aJF zYv?KB7_n6ql(~BP`g^imfTw@T-7aoy|HxD^@#4HD`iE%~<747bStufIk=^iR!0Yr6 zcs1tGUMJ-$B%r-c|9EW^?R6T8x_=7GBOus^)R-U!2cyzxr;|veG%N%?n-Bml8ux1= zkj7Yu0tmR-w2;w33VUr6oKBl=#ftx7$cEL;3*@Q^xu6j~91FE0p*^jni`Ycae%x$W zIJV;!v{Pf^!>w!>3vT*_C+E>#r%hnMmqOxoA`YUV)S@uP;oZ0`MTqs0D~^V7t%Y&dhqz;&*x+-bT>802l~s;V1+XmVnRXIt6|~25d-1g zVWC`1Mk1r4u-PR5D`c{eMJfV?1`g)TV7t3O6FRy~&(k$W(dU8ghf@c~;0C5RK-*58 zHUl#TXFsw!_QGV(=Zc>LPV-`h=4<- z%@lH&$YHW4+k3jF8{sStn0Zb$c{xw@#6dGRGJIX0Y9KBrocx>WX>@lW&M5@@JX!8; zE*J_OT|5GL4=rk%N=7s1i7wv0{{Glqfg(&U4j6iX1tYE5^$J{lCO2eqb2YfwTO#@} z@R=bh9==J9k381yO`ld8GjR$gRlz|sJP14c(J*K6yo#d6xOn&_$sT-kQ3IPk#N;?> zY9P)!`g^aQ?(EHpmprt1!JL^>$bly3iBr5o0)wJb^GiBQoyui%9$D0u8a-4X- zt9L|BrKq#UL8h+D_M39Y2b})%qfw(de-8(in(yF`S~~bQisyC?404CM11=LI=p7st z9L@X3aA4_6cknkSRZodf?R{*3mdJCpH0 zCihbH9sCWIluW#ct(5DAJZ4^tdu)gB`q4(lWt!n{C3FD9`M_9-JbIQ zD4x-tbZ0XD$K<|)Rg!vGPr7}T@Y^9nd%$ncb$iPHqj*Mp(jU_o?yQtyy*f+UaKofuP-bum6l{=7Vry;CFPYhg510`zNSJ{SzI`aub3G>nDkfJqH>{B$xD(7@&)BGnYf~~RxYekDTNXN zFzMAz4Y@piK}ptQv*OFEh1D5SX^D_uTvMJ_P~3*^du8*4JfW(jTr3j_^Yb$+^J*s) z@G3KlYs>lh6;-tbc@4E`SxQq?ez~YBH=`gkvrHsvlU7yDs#3|ST15Ps$}~l5qe4_H zEi9B4&QH&hRtTl#HKKfF0k6J%R$7jxT2@?En9oz<$f-~)sK`k|ZAzqqS=mBCX|T`j+?f|pZMA>~U2MWwYOp|Dg|&Cg2b*XGts zvWk@@sd8N<&L|XSw$zG6l_jE9S)E#1C9Nt@H&$a8a8U`qw^g1$UnFmk@oHol!la^d zQC?AXle(;2B9Tkx)rhdov`SE2CgSH*I=)C>CRdbH2{L(=qWTh^yc*{h)bezJN+jSVRF|YlXY&wK$ydm$ zi&8XYWs)4ZQqWK+D5(`>O8Er^`MG%|`LiAp@(U76XNBt}CE3ZP4`~%?vy*BiMQw>9 zxv;suS|sMxSC-U?N~^1?^x`VHTFFxubmU5E1P}A$8&xGW_&*nF1;xC=YFYd&Rby3s zDZZZ4TwN@lD{GX_%B?KRE#nvPp3@1V%UYsy%gT6J>8;Ju`m*fQ#yVb2dVyS`Z>X!O zktp&?bjq5N(i)wru1F%URaHHcJFmQ;qq4eAE-A?DkQNH6%Cb_c1#Q)0RdrjdsX0e)(o8{Jxv;uAFQTrQKl4dJY`vsXSX``8H>hf}1*z4VTtS{((x4DZ8tN6bI=w>6 zE3a#4sI6|56vnF_;y+nbUY%F>aEtJPYI#M0AoI~brB^pKm&!DyRUO)n7O_ktlJTVJ z*-~LynXt03s4Ttcv2uQsvQew6u2+_nsY}IqnmN2uVN+iHfXD=c|{e{;@T{HGD%t?lJOh)`NaZ3 zy+TmYRGljn38gu0is}}Tx<;p|YY~b_&gzCnnXF!^mOlQtM3O6+BW}~yG-~SQZ4D3U zHQIWWsA}DDP)oEnab%Hv18n3jrTAHPpRV5TwR#sP(>vLz7l*sB!gfh7>Ijco2 zD1JavA(!j(>(vUmSS{sO>*TtsN==irrm{_=SBk2|x{mrrg<4u9LvQ9+HV8`9O%i@? zS(UD(R#MX_lvI_Mlncbt1RbAWQC^c@Q<7JmRwT%OKvD=bk(ZvosB)HECRK_=5Ay5F zMKYzDS6R_mH%G~DZIcVDrJ`0{i>OrDSS@W3SLYR^RSF73EhT)Jyi!)gFH*|#1tNSj zPM|KTE|mr(3PqJgJVio9btylqmM@!IDJv|I&aA1PSCXd8s+%j8%~jOpR@TYEBvVbq z?E0!^okA@a32NHpO2|fSMP+%FR3c~-R<|vbD%H(p>MBu5seo4|7Yel1x?m${K2Z(%96{VG8X{}Z*YF9}Fe|fK?LX=S{iLfX`@`9==Nqx0KR9`Qb*3T6wr4@2<)4Z%w`8>^njC_od zs?;)Jg`~cQCz9}#s_F`5d8$H^lq)Qjij>7QC6HoCZj-2_j?b@>2rIeTXP2I^_xRR^^nopO~MoKxL7MfN`p>@3T}sBNTIxEd}>n&NzVty>nI0-Cw= z;GL~F$*{#;)a~cr9F7kUUpEg?0YZG{3BqKyVf$k{ETXhklZ>dLCseoDj!v6iR8a%Pr-QkSIG41ZXga(p8(mHVj8eUWGdXOX5Tff5$HS zT~#$lmI#ek5Vu*MWY)wB$u4^|U`D;T*YGl9E?A%nbc%Dk+kJnzM}%T{RT ziPzY3ZJTHTpm?GtHNgE0xheDDl*Yu%(&D!7*eBm0)As~q>}zvjwZz-TVM$WzxtOJP zk;efI{$Zp5(QtH%bcIN=y$YPzg#YCxf_YmhrG(t%~zyeR3444juDKKehvQ;eEGQXhLBPF7$#P!*lGbOoZ^0tqf zvSC54dgOVpC*d`Jt=^`GQ-1EIl$6`h2_Bka>hFJ!q}EwynU(K+cp(M`BUFmwAPSZz zSv2vPX&Xop*UFWgEX87Ksx%Qqd43-z+XU7wE4-#vKkg3}s*ab-XWamdDtnh&NwQD% zLQNg^{qU-&7ePMv0Y5CuwYWF4P<{5w7RsQNo@qe&!C zce?bbDR%vO^piS14o4e1t9F~h3rTHWBB-fEivW>qFm?u2nq?%1gCM7I)|y3_e2#bR zr@P&AVI*vqbav#hv6ktRBR^6`R|7xx?9s<~G(v{pUK$>~B;7v9bDZ+)rjKIvC8z+a z!MY+orm#7{PN&60GLkqBFbPjX8Xn`%^IxU;)1fF0udkMOVPrAG-OfkXqX|?{qlGda zP2M>obr)i;b6PH!mmCKG&Ml75+PU?4(Z=xQ1qB6uiQB+39iuuVFf8<_!*`1Ki6UFQ+vq>EJ) zRvwn785X4VvL{?-T>YzC0g+eJOx!JB{_8f)+U(_AJXgo3ILaReI5OGDR7RY*8s*i< zosULgFq%(%Z)P?Q3}U`-qA>t1Ij6h92>Y7kPwfAJJ0;-)7;hTBty|x zj&b_+4&_79r@K8mp>mstceTp2a8cr`)#$PtEfr_ETAIpqG*afNr&IF&p?M6Q6dMlp z*5UaNfA<0emw!Lmdp$X-7>klCFeqJaPnaGM+51%+*9)+Eu2C)Vc2><_D(!cEs$w zsA{sxRF%T1@;*rd3F@~tHV5qSB+nbCKbG4E_gNl}!dEBQI&!|vbD#EX^lB^Xk))1= zwFuMKrqhwM~8r=6TBHcTsEVOX&d9<|&`p3kj`Ai?n0nW=K4xh}&n2_y7rI`zmzr7%f7lDR`d<51=<;IHL>E zfDCC8UOR?yPw4YfBB*_p%% zELHxgXVnLbz6ZEtg`K%#30nBu%8OXyD7+k;w}KZbjxg6oxuG^H4~m=VL$})uRD;(< zUsp_SW@E0S9(gIxiCX9%|*bqQSP!eLYUaeQ}VCBP~igCy_h|{ob?ee}J&S zXAfT%#;pUTZjsKbg6|2Ba4H-0TSMS$OXiKi^OJOuq6IK}HOU+40jkFtE_uZy$TX)= z(F*$Cq=i8qzf4eOzRR;96q=-ZI3z{MQpA^^9D82Ras=&jamATNHd?`KLR|(>ABq7y zDWP)gNN(P*Q%B7Du&5DfO9cN#@ueUUR@K%KhkxFDiWVUJogEaTAWcO6GqT(7V(hbz zdhl>gsAb9>^<&52B^Sp_L5A&p;V6MDn@i88OgG3Z=#>vP|1fw~v-jb})&Z8W7BDD( zn$-W()SAENRvqImJ0<<(3k6iQ;}LLRlv?b=Rd-te>Z!O2<_}odwqS4v(qwuxIDd|o zk|Fbn;mC-9_-gDd9`0v#iIPN{=Gn|}tQF{O7NH9(+w|!ocgKd8HaR~$F*)}Rb zQIJ_X0xDCuQZx&bI<&O}K1b2FI6Z?6mKW6!CNU06q8pB3!^{zHsVLhbx35(~QaEX@ zz9j7@Wc=A~ZU@elZ98+2*?aH&{6y{Bd1Tuet^7VLyUq@M+_%^ssE=$K zNB>UxZCEgj|JzZ*vLwh@k~5yDSH`;;Y%T%kXw&RxW5v!hb?F)&lRVg4Oo87Yd~Xed zFWG}qcWO$nj?3f2?3CG0AM-T4h+9Auq=j50- zXBl3@Jp|p$)Le6=zBB}~Pw%QyUL|4A_87jQcR5?I)bNv3(%W)WG3&!4we#lqioCjv z8x>oDpZ!OmG=)9vv%%1@sCSr@BTeg}jvs$%_lnUeTV5WZ{}1s6pojOe5!t%CsH zi^|cJOt)~;1|WpbZGSNq<_qdO4n~3^qIbFb{yw`5Nq2nMme-32xuTaYv0$5P-$&R6 z@gMIlUMzDNA8+BUh+bfljS>5n6L-`&1)gm^MstXcYCFtYG7(}7Qcu0FiywB|EE0htHY=-hQX*8YoMhUp-zow%)HEeH-y z$VYxgBg;=J44+c9*b{a8 za!1nUll}4Gi8XOl=Ks}`R*5S=|KdQzz}G~|=TYjVfkk=xqIrVA_64Vsn27QIbs1?^ z(mv78b6!0?3hzxTc>>ND1PsN6hvF0VMSvotSz)gHe;IlNUV7T=^ZqEKqgAOc5wXKyMazF)~TL3&Wvsy~h}) z1t2MGc0>R8u5w0jkc3hA7y!~E>BFaJ9edz1Sa)q>`w7EA97NPeEtPpO1-S;a;}FeT zOcyfPSFQy0jQAiq9J!cj80*A29CbR_ zxN0#Ge~y*@Y79(&RwVk-{%2dzLKyl24y+bl7_=>`!_h^#QoKGPTzDV`epUuW+M!QU z0)SJ!r3x{v6>Dmm2h!c+dd0M3V2ky0;zhR=$^+Tdhx>W7lIz?aVP@r)<=rQN6FfTg zK7n0sTXgjoCm#DoiX@F%6qjXOrkab2{o?}?_ureGvPo_KCrlh7Y^?Da zY#>WA;Fc6!DGu8Hta!1(dtWjB36-jIDoDs0?>m!o+JMQ~_W=1Qhy3Rceb6_zNw@o&FzmjIft%qw=e8~qHfn`$z9?{|1wj9rM!p zu_kAGVh2!yy6hAO_dT4QhbETX$jAi&OwQquee;)0P7wB4j`AO8a&C{eNu07XsqEp1 zPfc4KUYgv-z27%t+g9(6>Cb=h$#dEKnaR1`=b7u>{y3BK)a-LqJZDi?Zw)hx!DDTL z+_4Ym`y;M~uG}?GhkoC6+uP?Kn4Gjty~q!uA7^szS%=%FmNGG%JgXThnzZpGGsR`Cl+K#`YQgU?lMx{Ih zo}p)^rQ84B2WG8-{$vG4m01TTvc!LpUyUYo)>d&Z@nU}dCTRy7tKbV~T zr@3F?hWrrWU;V$bq<&k*{kOZ{CI87irmzR5QOe5Z4s3~{8$ek4Q%ef%|HP6Cgdb^1 z{i^}wb1$f}1}-lGxDwSFjRzQ4w|~4ef6tQY|6oa(`~|xZ_xKT(6v#JO%z)l|NowXm ztsIvm0R<3u0ORZLSyGP{AeT2wDshR!tT@*K=Er|#NuAQR0ZWR3C3UG9Cr#oS%NfgE z+qJ4UDizx%pur>`%68ZN1xu=;U`f3mbvHGV5bQ^E-l~>Pe{V@ePl*jzL$Q!0?Qptm z_uIZ#CPWIRb6?})kXi2dlXX)hgPEls$7hEvXZD-o3y{C=XBNyveULH})ezLkAKp^~-qLDciFQ&|S@m#xY|s6> zp=u6?xUDOQIRJt82~xsPMqN(XPO+3NyO!J{iL(YpsT)Z8sb*P)ir&P9LhUbBlXZ_Wf5OY3Ct&624$O+f zKDLT1YOOBGx|(`emyHevE-H*g6mW4^x%C&kUXpC5P}>S3o~jzC>ItcBzB)5-IKbe? zS$%T81XmR~Fc-GO-4HibaAKDV0x=}Kq~Kq|O@%qodH9?a7>CC1ebTwi0g`XS7gO^V z?D&S{o&vNt0ksVwZy(yRaSyC0@ko(wk7<c)(jzC9D@|;w4oYY_iqJ;y-PL=NMoPQpETl|pFT!D!g<_tO7Yy2n{Hx=vZt9ejG$zh#@8p4LY2Q&PuDf_n;D~?C6HcdnyI~NtVzj^|n(#8j&Yh zd0Qp`hVerxOW=8=2863r>727evLrNgs z(^qv1Sx*K5kSK!CjxcuEr@t!a>AgX62WSg{cqh(1IoB06ms8(wA^Q^gMHnFxx!B_E z0^&r#;}h7qQrZ+WNOLPZS%yp0HYoy#Ji;=MU;=Itm&-C>X7MOWRZ74kJJ~@A*^u0? zw~(O|~ z_O2xJ4V{L9UNx{?8J1G+)^@DhPE|y~wu9uO-BCc3Sk2(_$BNQ@tEVRjl3Des402>R ziX}_78x)`lz&j~=k!cocTIdi|a}a2cKFbqdg)J*IFuaV|T)|Xbus=bL@~!k!%c;J& z_pi;Qide-hz&Z=`@=U{1MrdqoA-o$0RgmkJ)yf^c6q~(%gZ*uxpw}h>|7hnwcxtI_i5BB%_$*5a3SiJWWAG*lNPi7IyX% z_#?tBxK9@*2jwJhai=p}iR0;A=k+Huin7}_i-IDy*HTVPwudambJp#>V}UGz z&Lz=3;szv0*o*->`LO|pOKigq3UAyc1I-F1nyx+&|498F&TjyqLmhnp zExta(-!w6#Py;jX;;;k!{s<{Zw9iCC(H0;{I0TMn3JymYn-W#B(jYPg8A9{#4{aR< zHLT8b<%B9&<3n}?MUOOT64A5)V>a%{`F{HxABG-MgP@oBCrA!AFp)0Lih@uWXNY}l za6F9}=!pQm4aWx86+>!--jTq{F87b6U$gv&2%p_`bSNRLKr`?0DL21UFp`Se&J!@J z*2%G6QfskKBk*a`S3S7o7KBRVEpXSE)z5o8Jhb+%1bYghlih{J&oZ&IeqO{!)fMd( zaupC@Aifo#hOqz=aRb~@_ML)3JSn>ioAOSv709J2kS9q%Ov#(1EL|@KT=n(7%{rF9 zXU)f)F$jt$$9;AT59uoRb&~%E*^RC0slJ8jssYPLRM4~r`UF@ST-e?Z{W9@l%m(TY^zKOirX~q@xJhX3r&e6-}={@?MDdqSvzU|v56gU6d+GVV%P3jQz^mYkR}d@7-H^es*EH!^Fl2G?hMlsyZqm%Ka;Po9zG$`B z3f(}6Gqq_`n)D5YD7;U$t>EOQZ&(2c{RwMi1AgW-3xZx3-ktpzr@1MeKHCF7skTkr zLRF%BWL=-dZ`cWbd3Z1mwT&kV>&S+6R9Wls_Z*}dQnDlRC04qY1D0jVs-GH&u+mBo zeiYRVwimQ3a+*+IHv8v$nx{d(O+GuLqJ9jUZP(<$4l?x4E0sks!)CK{BP) z687N226q~u6GPMQIEW)ur-m>yYVQw4+_kOd4GCEh8KuHDGe60)mptjyfd$YFX$HK_ zkWxhONN@sM9WbkbiVTVwK;{W;&X8h{^S4zMzI%ZfL_yK_9OM9?mnp7wIvo2H3Po)P z$A92j_M*!ClN&!~brHh;y>9_WK%K)E;PrU>)L_$=jL?*W{n2mWYyq8uK{h;gNb6GQ z5t)_;>|!v#=O6&dmh$`r4A_>8{;noxF-k*&hx8`g7=MJn4*IS*0{)5K7Po^Tr496> z$YMeAdFgI|mW=k2wjgRZkXTgBhCr7C2Q*H>lvQF+2M+SCXG_J36pMKL3G8JE$iNei z{Pvdkw-=~G)C9U0AZ_KqLw&f3E{Ts#p6^4$(!DHeZA*Eu+u*1aZA)$B@(@M{;GvMi zF0N62LaH(#ejfX+XX0O0EH;)M%HTt7oqll`0O+4U z2KU*ai(enBgfiis(ufi>bwDjc&`0fH2%l6n^ z)gMgy0xpr7wkNQDV%zr}q;pWR5-;H#$A#|Y25qY9VK+eH6|O%4>FKZq{jbbmfhR$w zC=u!k8Rctl>nBej-vjPw2KY{yKPlL@d3t`_O4boD9%%XnwAPBsFdghoqa2tQs9)q@ z;X@nb^{GpCK?qK5wJUP&>muxHG=yWsD!P=Dsbx>at^7&pvj&B z2k%dId%*!ZGZ(+*)&jIH9r0uBla!o2^m2$9m^HgRFT=Px9^lQ|;!^IausDI?1sk8G z@~TUktskYJnaF}&*sxW52K}4v>#dQvXP`Qlod-O0$_o~7w`o?+uhoHRr}9Hd3=17^;Bf32!cf030)i7u(+WF++gT=-v{FQpDaWaiPX zDP%LKAtVc=EPl!RT?F}a?Y053kSf{h>9DVNO>&Z&BY1`oGh;5qwPnEOkZ(e|lcQ8t zK)~yysgu2alX0X2iUF^>U2U=H4^TUR%_q;CHkM;3kAYfo=T*6#+}pvS5s()O{&wi9 z^m2$AXAhoX?}NIXfH{NW;DFa6u?k3tP?9BD`67r_8aP&U@M!VIWpI`_C}m+yjv2PY z&KajUgGv{2oXqm`LhD0+l{G$u1R}U(<96Q~#hYh%sY4b}K=CyRb1<9?HAWyBLHd_xkf67EvpcJ+nSkA+<;wxzuDO?vR{oSFX z=J%dq1&2%sXtzNnWS$|aM<%K_d!;Crnzq0{Se_#F*BhA@ph9 z2uC;I)UI>DDgCa-7AHNR@Q=?GioXs1v#6|)?OPdosGK~Tb0DRGH<70W1Sdd<0={B4 z=RrJuv0xXt<|Bin7(Af-2ZsuzA95ECbwG-v0a>vN+q7h+HW>pWTf9Qa; zo}~mBVWePU9?J&V`{d5fTAAJ2Ysh4K>_v_UQ20HzfM)&iP>ISY1pG{s(kXp26`{uV zzV@p+i#^-8KE4+ZedrGRG%OLyRayY3heiMnEGwlgiSKqzANG##S%%}J1q&UjXWahn zP&xkLPRaI-huv?=%Jz=m^j?f1hsW-IR`NC#Q+d=HlTa`Mcw)%81LYW$6#(-s zvlIjL+SDO{4gYYcK;p$W0lg%UFM^c}M_}mrK3vl!^}Q({{(19xxbQq5421wX9iZv1 zZLBO8V?P@y`Xsg?^eZ{74u|WTL{{&Zzh1r7FYEyH{68Kl!#%Pd8^?njXAFHJsM%&s zfo;ufC+B}Xw&yR(JR8LP78}PeA&zC3B^;Up>cNlK`R$Q)5^t|O z86-UN$3vw{Uu~<$1e7!ga=kg0rP7_frV|DG%TGokjWScghr%_~aFG|ewr(r_`nj5Mp)~f^3&@+se|h1qUE>2#IhXx)E!K@QyYMK9fbcOw{)7um_nT0F_=B`2H06yk=U#eQI^N zp1G?n1SIDJv$mf=yShCfTm$&_OCst)49iZ@Z$Zch&B&*+YE&Jxbr|C%2q>%-iBE40 zLH41O0S+(P=BGLr*Gbs1Lo6Es)U-0x5<5G~B}mGnq_yro)=(SlANLkSLZTW%UKH|r zupC|qkTXBBve>p*y@&0Jncj*JxFK9cO9CB&Y=DG*6xI*{Gl0pp+)vrh7 z@6UQ#Jf26{SNAZ7Aq{lkMR!^63o z7qFjaKBa!18%b`a%nbtl7*mMIUqR%YK#myT$g+8b`XXpQhP>S|j*-!I@{_JOlom*C z2LR;5B_4@S4Je6gsZ^$WX<&IXZEg zEE~SO0vreF-#o32)$T64GP};0mhf1syE|yEvak)>$5B-9Y4REtT@tV)Dm*JNtC$Xu zY67C4g3$4FfCyZo|1^h~ZW!KX2r*%5bc!zvku!3==e07bpZ=y<(hfxD zmm{v9?{+>H^~=Z;R~Q61>Xv(;*VvTMzJ?FQi?)wleqce<1$vO-hvo<_ffGcD!4wGU zLjuY1CAHgSbsn`r=<|ydk4N|WceiO)J`BYWWgmX>cfT}v6F99F%#G;HQNKHObs079 zSdd`1_42yhSBJf+v_u|QcV>4W$oN^3`^@Q)9)vVAuG1dnbqum_6$=7YM#57;pHE5g zbZVRW^m_XEMFba}Wfv~wJOY8)c+Zk*OAr6!Ma7+!#RfYeX+p^0Av0dl$hb*JY%hx5zE@!bdNfBXODU$qVQifdqLEvMghk zNzsC#N5v@~u;GUQ;Bi4*+BQBEG9o})_5OlT>p`=xjd8xX+Ct`ElC}E7tt|$&Cfjyd z@f=7mu^Qe(<`x-Ql*s~Rl@qx;_|Qm(R<j`o07s9w2aAx2b+ULLC)quZQ~s z5&B^p(Z@4!e3;oGvu{AeDPk!8WZs+xDuqHE$s!ZZD@uv>mbr~1@aUmLZMu*{Fz2eq zl?l)HzXRVzoS$H~!Re)ryuQ(s#-&w%#C8RV+y3$BO_IQkBEI-F1APMN`RU#e6Xtl5 z&oZEAC4tN>xbfh>LA)Ctz2`fgswhj7*g&1GtdRK$7WucpEp)09(l!M2T)4UmyGquA zdjIggBV)WbVX#LB0~ElFEFM4c*AbM{bcLPU2rgaB31n_z@JH$>rJ|K^%@>9X$>3jN z>)K`j!~QK!Icok5(~|z$-~U^h2J|OWx&Hplp&$Pz|3CYA*w_)3<#=_q=8@04=Ji|% zvW>SfKvq)0J{5gfPFY}isq10O;Dyj2W}i&C_1Y0NL2(t;66E=YyPhu#6G2I0&d<5| zM9WOk6Nut^nkcfHQ0C|3#cawOn1`%@Mz2pZN%z8x12ilNHk^i~*@@ViIA5YiU>3nq! zHw$l+oR=KzI?K(CeC4t^XUx|Q+|j8jNaVW!nsK%cEpFk86Xy%n)giQ|Uh4_gz-o4- ziCu<{x^ZuABJnhXnvVyq4ts^?JoB$6Q>vo1w3u&vLzZ-3H`i0k<#@Kax`DR1r8-2B zR?8Q#`4ZVRIZ4@=;~RZFh_xmOQ(RR-rOBa)PJzqKByBp6U7&_dXsB%j4L3mq{IeE3 zct}tebm6hX_fd5C%7QI2alHZdX$jbX$7v^gNoGq5&pd@+O%ay8=jrOkgx);lO{lrb zGeg_JwO}_lygt9!z=s8zE$k_$dYhHtAx;7ELr%7>dY++biYw0K8)$B>bog0CRotw& za1IW;$jj5o?M@V)`Ki8PP{3b>v1C?88i|HB2XP==%PzO!Hd!!zoBCpmO=;>5@|u%2 zYf4OUT7bVi1IrvQL{67x0QYVdi<{+Qc7S`+X8L?otJl*Be*|RKP7qo3V>fWh(6n5& zv{ul3^`NA08<45s)6I#C1M5W_myr4n0$W|oxV7$$uc4U`a)u`d!pdmuluc&}f1}82 z;bUrz?CoeRuNTuvT{~zqn`BrtCTa*1qY~R8(R>a%k>Yre0$n*SD6(I#pKR%@m=MZd zO}F07T9&30LF+7+YS6~nIw%E&P6I0brv2x_?3;69CSpE~iT6vQR zcQb?R%0sFl*$xGTQ*&5lwE<(3+^EE0b=vHzb=L~-Dv388OS!89y;h-AD|pgMRbUbg zokC3y@_K!#otn1h-VC0a3OUqoaBMl*MpJno|n*dnz*)*NOC7Fui=t{e~f@)g4(vW9NX3*YR z9vm44q%1+;4mKgaHsVq3N;M1sZn|M{32o4Fj0ft9OEPa?gH76KVN z=8>EDQ@pp`7KdvqCIJq=)y81Vlu#7Gj^ehU;V&#lfe{wABh|XfE^mpyHJ0SXVzb`( z3Kwgth~Y2B>$hu@jqwI@0va-pj#!W5za8H>MLFfBP3=Mq!_?9MK>;?fBv%KjOF>`b z>_iXtyaJD16^2WVag-k{&kZ$4kD`ykTi^pn|fd z{q$edf_bI;Q?{Y1a5Gls)N)}UfC^ZY<6w3Ji1&$~ijf}DxIm>nb!86P`-zP#=p1<= z)S+A+e&)kci_hs{dUXv2`Ux)!hOaJVeM#VU)kvM#*7REE8KP@f=OihS)0Jj!q^VOV&6Pop0^v&a3X+lIOO#aQJ*pI<4(bguVO&Q+BX2jA zf$GbGcl4+-E{X}ylvwfK&N6M2sp~suAuSX`=b%WhWd6*p`1;(;1Y5A@{Awnl-I@on z#B*#9Q~p-hUQ|xcU16*r35N5k!ALY?Mcf#w%*8%RW)n@FY?x-j*K_9@!8&-~7Pryn ziotOOynFDuX*Z6kO|;Td5MKMrRilF$;kiGj@bO2nU{n*wmOM+wJ?M+N3Kef+>BN;m zZj^54>tHs8W0bHfNl>mLZv&_OT%QQ?+5|`=@%7l%VZ)r<$jj9xKD&@rbMN?xgSQw> z$!}rfgttWwl}V+|{Qc#iI6=j`2pE#9S=4pEe$?)TiD7dl)Xdok%#=lG&L@qqQLi@g zM!J!_E0mAD&DcL&b9!W=1n@mV@s=uUG1t6_;Q>DpuUsMIrpEj&Cq(AZ{T5=_J5{Uz z=p$c5N@9=oftuxP#w=cKOb6~HP1dq=rFfjGn{*WU*Xjz!5^Q9%!fCwmAqsEP(xsfH zTiW%^bU;mlvi^$4n@>W;72qQK6cCSZAn!^MxM&bGB2VImXpVi&4wJsT7QBt^80u!d z-H+E-iZg}mrJ-4!v5;H@1DtFc=FrVcAPTA@i9w8+cfBf#C~s6|u)xo?rudO-LM{$p zbKnn}@DHGE2ia}M4m1#;Ug><~iTY}}o=nEq(R`e_>+9N8bvIefml{W)K@3q0nAj2c zE>jx}M&+CQNVf1KssFdcBJ^-c%i#h^DE>KvmZ(c*G;_W;2E> zQfH%^_nXOb;VxEFYm*C{egn_Jg^(hMJ|IRIp~eFThGd+e!B`o%e?ErkPBCa5Jl$)C z>+`a2!8oQsxi)oIj9`ZVe^>vZyYlV0^qa$I1}~QO$^^PR<<|WhuKQC(&6}=WYR=;&n^d}M!4zb!cD%wuE*>ti{bqId1XUp*jMjK65qfs_5#v>mTl8LwER77W*7EadDG?42XZ4ZL$ z9nS!BnLz=_AQq--Fq{1E?SwZb1=zZ4O_@nNsn-jCx8~|d+lz}04^W4p>k&V`x*0u< zobiaiV%|u;u?Lx3&cP>fY`I!X>-m&B@$METyT|~N#V(wwlEVk`nxCqhdr{?trEi+o z5-&|D=a7loeKX^4O}_I@i1jEA2>DB694|)2C{QM&Q7m}cXsR2F>m-_vUR^m1o!Rnw zOj0Z>qIffz$P$JHt}3!&!5!)pZXeb-!v+Q^%bGWLP3^cQXdhsvuMEo-=t^F*(T1)^ z`PE1mjq}OKwny*rXk>0CT~r(CO3dd zVPNVt4;L>_Cde7j_L?oNBx8Cbs~cy7<(t{{RQ6T)zS+&SCMy$VUrM6ZCjOPq`x2<0 z>zLb!Y&^0@v)One@!s*kPw&`xKJ#>Qqn+p1<;Ms> zmxBU_3iw3)BpHpHI?nD@acMP z@rG-m;M$*tvRN3SZH5aB(~5}s?~gi|0yUmkqY*c~`F7-wC(9f7gN3Kfuf$b`WDo+b z-t-2w+yDr4@p8R%m!|5;o7Locc73y+I_t$`4fOEZhxmSZlTW>9at8xO9DnkEGWRCG zvSj&vA8o^+V0dW(GNA=+*c)q^5$8n2iRr{V&pBt_DeryrtGSC!Ru5EnsYz3!+YoHn z5CquXSb_ns{m+Sy{$vf^)!o&lGR1{~S`@0@yEil948PxZ`e7L0p1rJoT=RTP=X%uh zPWZ=X>6>2chgRYd*(u7!&6FJhvt;FoOb`3*L5^Xc24O9IC6!+Z&obLrj}cyszEKCe zelR~dh{8+DBtm18{O2TS9fV;SMz|8z->jw}a#jW}Iv`vpNkpNlF-tf%lV+QxTi?sF zrzGsNv515Bg_iM9dA3w4di{KG^E3^06FU#2=gKET-`RdI=IFmLYy)iGvP@+NW%3n< z!jtc;T6BR^hK}KVJVsgJoByV6@1g?t@Adr5rp@p?vTuYhms9M!k`L9m%ht>_mq{h2 zLsYm&v)T^Z$ynlxog3-on!Yf|HRA{~rp|cfi@=<{h%Y6oPfIs>kn;bUL|s?GLd=ex z1TP+n_Y4t8H`GFm(h-hwj3*LrdM%eKC}V%9%(O5c#yZu_W$sMNv_&FU_ol_YvO4vv zm(&P`4oWNZn?o4bRxD+n8%|$XsZ*e4c(%)>He@TrELAuQNBWNKd|rmb&T`Lmk5)Db zWA3yOOtq^o6>x{p=d)RkmLm*jH7c~v*K65~l&#E_6_{(1MxGyb>VeC- zwo)3*G|;vb9@pJJUG?UUD$qJ=+#rTm$(=cEm1U>OGtJ`mldbzAk)|nfV{FYsY07Yv zDtA1`q;)W@b*Qt^s2w9JU8`;<^G2&UcKLH62rX;%&itcl|35CXmEOIHvR=Ka!6M9c z+1zeJ7t7RJqJFt2EqT!rTxsqk5Qb81zGAn6^-r_T&TsIq}bXV<0ymZaWqMTvvBzYi`zFMZ#m*)Ly|G#tcy)}&)K>k*>?|&$W7(1T& ze#kR2FLy+ z!)_~sPk*$M;vmfZ3q#*V;fIe#N#fbAM3I||Kdx4reL1CSTJ>d@xFV)RHPgUEp`TH~ zdi6UqI2eUez6EAuX+sGfwafYqaxV#tPh)_!)t^2XV2fMFyctcGj;6}2vZxPDoczIb!l(`q?Sb zPe$phA+MZu8r5rXyPzE+dmYE2o8<8&9U$uR{Ff_2*sxHO(6fjlG}4bb#=_VP#H#+Y zm7h(6LxP)AnQjnIKG)YFydICv@Fc2()#S$6IJ{UL5|=QIvbY;m6J{~NRiJlOed#UK zE}1j=_$qUfI2(tyvT_1yh1C#Jj+^_}t4Nv~0C79o*7tcOjHcMmhuCyt|8kby7*IkD z$^ClORqC=>67$Fl<#x27cIIX}yVRSO^q#Cg1uyN{k>w?|j7!HVa|Wy6#ub!ffh}yS zGOb*{XL{*=kFdxF+M%4^0lu{Wgz_S&K+N5Q|Y`i>L~kWeSdKR z)tgCTWfu2TRC%#`GR2t_D%q#grr@eFZ+^a#hQXywy<$3M@^)}v-1fJdY_q@L&V~_% zu9-B3GC6XiGzwg&Or7QAfKoPQx-sdcKJXI|-N0Ar=*lIwoTCw>p6!meai>cs3Cz3q z%rus#n)9Y~gJga$MU~t4DKF`Gdnn?_j6JTv>wdEv&1dvtTT>FRdG5U9K(Ywxv}nw% z;M5L;7N*?#507+WCCN;__GY;hMmi{6`(a|deQnC=qqwMtA#DBQH3R1G%Rep3nV%mI zr7zOz>}Mv$iWf@-O3S0qtxGiK&+A;czEb9xO9OB}6&Yux?&;OAY>^(uZV7R@)ofH>Ev1-wCcw zA+^7krjy#P2rfe8nR|Kr!RoFJi;b@$8|GliaMxvCGEe5~hYb1LCk^^ZDzQ=;{#m+IZ~Z=@Do|ujc24 z8J2@6JKrsi*;6BAU2GFEcHXf)1p8x|;W9Or(G}vumq#-t1bz1=PJ%Y4ST?vHEZ+?y zFSWVY=(CzasJV(S&^cfeRp|8N`>W*$Cv&(}v7B=(Cza)*zwIMYujjJC$&@0ynz~2m)i5mxjpOu}X`zZ+-3o z&X?wH@%l8QZy6eqrb;@cl`KEmsOHmLJgBtq%)XA(qAFZZ*B*y>-uTZVGt44~t>T)! z8C-yN%gWr}DZlX$WSK?sD)n|*7n!dd4uX^MZ$C83-E3JUh0p{ca}sIWKU1Rk*=G%c zsQy|J%!4lQYfjb`8K9W!3nPg@?A%B=TeG-WiMAFHdcTOtD*9b z?q6+LwxjTR8Cu!8;)XCZjit`f#i1WNQ!#v1r z#tvj1w9b`Bs95%z&Z%m;`3FBSpLXip2UVBp3KaN~>v*@+Exg3HP@Iwb6~+1dyC}{ZH5i0cT`A5n zD7MqvkHeu4*Asq8Fv}~&x$MKbO8$c>PV-BOGYp70$jv4yI?-&hZ%~}-@0H@LCxbH< zH2(iP#d$?0523;rkqzT{+I%O)`TQFc=Up{izCXpeV=~TsJHmYLkb)L>eP|xu%YO8o z6z94g_En#JUy5@%ZuWZJx5cq)8HiM+#|iwub}9WSm&bkk@wZW&I2|BR$L~jR&buSc z<8+Q1XLFP9nG$q(HkMW}s(ExaZT+~fe)!|}A8P{Re}m%O?Fa6br|(B`9>#SUw9ngQ zJsg7wMzm<=xV7B_YN@>6ZIF1Qui6eXKF4oToMZ~1a_hez#km`1y?!-kp*z!;5T4qE zk)nydI}ea^#Hp5fl!U>c!(mf>gW~LB4TUGaAH|8lJ$(B=qxKkS!xh1kjk2v9vAr9b zs5^L@l;H!R?ezfKz{Aeh6lYrwn?9=Z%lD!zMUCHHy|Q%xc6=<0cDew&aAx4%h9iSJ2B{mVl$RzZFx zILe$Cqv^Ji#Y@}u-Qjl#DR26kkfNnd;?jw}2O%|BT~|#*VCk~7sw5~J8*^8_K)j=Oegm;r|fWXnW|vP|yt=}=p; zfB(x?Dpci77gY#pznzd;ip#wEWcI??nXROZ{309!ar%;wBDXVkb*ejp@5c`9@z6EZ zwk(i2yc&oe|FV^mMe8!Lp(Z=~+X<W?7GW~LaoaTQ?yTXDQUWQq*v^Qhn}l`iH5cro1lA$g+9RHhpt{Y1CXRtX*zeLoC{ zR>NYOA3;~Dc_``%C5ldRGD2(GPaUKvpe_$tXxudBd?@aDF=2gj&YtZZ0}(|M}y#+z=x zG9&W-S%0d;w$800SO)A^&^3bYMtKZvxvnl&46m#qisIWvI3%9aQjQOa- znEH2<>%{)V#K4`^>Co2is{e-6s9kcB!oD@O6c7n+MthVY=pmiI$ckN_Yt;;emJ(rB`24Pu^ASy0HgC#gG zO1W8@FcyXnVg`g<)&(`}Wh2@fCwFu#8;8$QG2r4+Mout|fepY`hSm@vdlC<8Sj9{O z@b51)G#(wV4njZe`XX0Kd>6+laX`D5Vh2`kRlw)FS+~cMeU=dk2-lNG-HqlO~V+Cm9WMl3+e$*IjToZVAN58Zy;At1&TTbG;Dv>N{zrOX=eOyFO1Iy zFb+os^L1Y$Aaj5<@b-|UOk#MJdeNvYW)sCo4WkHlC?y};F4_Lu8_CE5(t?{(hkd8GmEPu29v`GRvp&?n)$j`9fUoX-luoRFxi9VP6)ibQxB_ z#%ZPy4s)#IIJ)xKZkm=&Ajm;5y>jGZicw7agfyw=icCFa;VWp1S`FK{ENwG??g7zLPA_J?xc-m zC9PnQb)Ib+3(%rWYEE5_Of#5yK4lq|NR#Sl;=dKOTO%lmLx<3YxB`FU2Y@P+2`2H9 zZ2C7+jzgopUEN>ix60N=pv6m|LS7x|9Y>gA_|%<)O(9-VI1NtCf%>AHN%Vgxs9r+ zksvC$1E2sxN}5YJ)4L2!*RhMTQgC^5GAFS&orJDz9g-hMk2kEZ(9_afGIws%6v5Gc zr>avkY~sx^*CoxM6M8-jLb)IeB4`>eO7Hx>lQockwC<{M8v2|Azbe6067GKJYR+PI zFqZZDeI3-VPOv}~-((S%)~fV5uj>=n)|{T(#48XF*EXm9n566LM65$-J`_Wkd^|VR z*ktEjmQ}SnX_=Wxc>=iM2rH{9$x4J*LoM>PF(%9pXdy?K;Nv%Q;KErWTf@~C1;fwM zs>sx)a7CZab38*tCc0HdTM_O29E9yU!nPy%!!;Lech}qUr z#IM`&2SZXOmvH1hj(BhrD&F8(dRV2HJkv& z4$RtctoSZM=TeS{h=+x`K{}bR7JX=4sElIz7<|o zFoi2-&Rg00Iz8rf;-S-f9v4}^Io+25j`ZKC@b?Ijc)Lh5{D&8{_XUEHH<|C^v1zAZ zTR@bj_9MEt`dGh|`MI^~vR6Cg^-O-bVeHfG6s&8jz=wJQLJod3$hG&2ZGm%K*ala= zwOp1a(mq}gFNl_7l3o#vM8=^i?&6`pw=#zWh@hk#Er;zemE!<17M=R{mMZ6vyNvVm zsz=0SS0u?jbdR8w8oKgdX2Cj;Rv~ttP(7GS#!26nVQkwY(R(AZ?J9}Np+(vFkZW<% z2nG(Eix_h&_gmVynyk>bbv_+iV67KBn_*}>94=1-2^5tHLRrr*>v9gL*n+}u!r|h@ z$i5Ok(i)=q1~jZG8uGY@vO4v_wqwW#wN|-(FGDcAd&pE<>Ud7(Q(kYUJ`aX-6x5x| ztgo?UxrQOrOYi4om}n_2&++WM40q&&ZrveocyqDy>IvO4sj1j%`UF+5Uy{S0hp5jm zMlj7_TGwjvzZk;Obr^Z;?YrW?*2s@Qt9ON0bMmRT$(BJ&$9NUmI&s5dw&UG}az&@C z!9n}c{(x2#_WYh)->S;nmZ1I}`jTQwN@|T=84u$&yq^!z{d&Ah+T;wt%tag@hNQWw zu?}VUi>c`P_O>>Bg!T$Wy_HWF5xRDX2n#`j<7~kcr#?Dx`1Ft`w*>a>^MYun1hLIj z)Jc21$DMa{$aC0aWsy1L4WnAzSWN2)X<>6N%xPO$Pp@ToP?gWAs~O-7+$iZjgi2F$ z#Y$S35?z|rnL9kXhSv4Rs@#kPGnNp_Yy5WuV_za4h91^j`^SuXu5*@#9wft8GQ>>- zk$O1T(OPNR1IN|%rIq$|I$)aU#S?FDbd$G*l9=OzA|a!M!z~-<`-L?8>Ok$3qotyP zN|pWa^*);Q*F8v&2a1#a*&vq#v}JTHp-QRqyoHwcVM0cCTO`MkyQvJNyS?9IR$*{s z@$r2@aA83v#ayL#1Gev?55io2y^qxGWO{^>zN`OHQVx{}Uc-N`A|e8U1oh4rJ;>jN z_uYM7I!yl_Rnq05SQalifN<0OkZCqQ{9vl~%*+`VPRJ^Pcq%FWfn;0$?IBC8`@&)$ z-JxZP+NU5cmz^2O>j)@=9wap-J;+6u+h^NItj9KxLyJ%=8>{S94*K7cZL%G=9}x;M z&F@pz&Iskoyv25halEN++wjm%)Dq>UncoZfWZM^hS1}bR=m~{O6+K8Gs@u6Rie^h_ zXoC7e=u?*&G5vu3IEtsVek!u7GO}kokL&E%J#^z{I8yRCDJKS}FpW=^GqDHNz#8;6#r7w; z|9qR>XYCvBM(0y`1N2G|rd27$_?qp>&z|X=o4Fq2OVX+Y8A1>YSaa?ZBdaIrbr71x z`rNlDRXJ=ijh(lpYB^B?r^y@PHPLaclF>wY(7a+^26fAH=y!b+uG)FWq~RB5D>?#d zz?|vvqL&UKMwS^(9lSWAQp|5vcpT%B>4$pEVGlb1#;V))S-3?+zUwH-5=3Z@N@IU> z;2ActNHmF)**;OC-`)1bj_M{O-dr)~D)A2&v|GwU3@Zj#e#m^mw!UbO`8vZMAiZkn z=BLx4EW1-O*&EJ!=IIu`3aBN#Fj?al8AC_eb~Y1h3HZa1-=CbkK8Ee-k839_6|&Y# z5Yw@-pmZggexJ7c_0~-pU$Nf}+0b`azja_T=EJm382bmko^zg;s$$yD)x%8FKsKT3w1$J6F*X>xnX|@$aE$q$f_UL+xil%tzg9ZPK>PlrJT?kW%10UJ2O;xv(|2_RCi({Lyz zfy1%bS1`!p_^<9%8KL4j=g}8E$S@=s-iwqeX|FnoIt0n@#~2f>GHDTQMcMip>a@0u zrMXVTe6yKT`wPwxEn-tvkdOqwr{$*f5#bcT9)XV3MD@}a^)i{&k(9gWiyj2QPF3B$ zHFke$#GYsT^NSy;#NDFrFQc{<$ULmd@Q;+0`woTeSDax%JsJeg+>KMjQ!Bx18oe3% z!Loo!a<9b9_&`lDCb!ofgk?E1H!b|((fo@i>T4!hPtv|%_}T!Zf%0R+U8JAk5y|Y_l@^vagpX< zb7nK}Xg^-1V_<`+V-XD38;WfOVv7bmFXP|h3@bb{D9`-94(g{6{bY+r36O0mhu(it z*-u~eAYw#(6U6IL{P4K4+WQNJ)J%xuXw_93A(hKHzPg9H&2&dO`MaDUJTH<-GkALB zv?W9q=m`jD0JaEz)q^ziLlViGd|LmQQGU(-H!A#mvAet9y;SnBpN1V_zQysV*Fbew z6I;e(&&n5%gO{LFLj8a@EG)bWwp^TvSq@tfQR|k;gtL=ESPnM_b$MT0E-^U_l+GNT z-Pe~2s_`lT;HI7DW*YJfT2M@EVMUUOlFaqoT5(j+G@=}-gSM@w8nJZS`JwixM5AEe zTvWLg^Sx~r=h3^ov8s5<>V4$Vh<RjP!rp7P1Ef%zWx3r3Ts3J|zWZ4><3 z#5O;0&6B?3E64eH7q+KBu4x#{VaZJIrw_E1K`1{JlHdZfz>2o_!Y#sBbt5z~{)D~1syMa84Uo1vzoNw?^$Vj_` ze#JXEyoMo+s`c!)mr|e&;$UD;{`yk!;IAyN!q5UP^K|gCx}wofUCZXksCU2IuU)-+ z+lSyf=X81T^BsePc~`4-xN0oB>i2<;AKPjH{B73NcuA0W1a*yC{MVOCTGiSvw`Cp6 zBp9y)LpiI0Dwfvy5ITpyeD+ympvGC~-Q&309X1jf5_(|}*uYt(>E5@jY#lIN6ZvFA zE;l1hwX71Rw=LheRBpoHGCE<`gz@CU>h$eW%lQ)FJ(fYxy?R&Iw)qxIL93a;$OAlSmNjFZy27inO&-2;nD zSmjSX`BEU+yeGwWRNGHWffJ8S5$ViYmEG!RciB0yWo=r0TiM|f&J7dnBGKNaM$Q1BK7dGv_^$;=%K4pC#7qc$zwN13R|f zzY$JrGw0XnAAA{H@0yF#qnN-kYp4ZlcpOrrADHK9Tf({OBb5W-=?P4sdvDrB`JKT} zrQdYMiqOmwvL#`fLbzbw!D~@Pjio32r)V}JE1u#yca|{38Uf^Tl}9EY+LoG2IWi}i zOGERw5oB%-Nn{F3X4u6xgWZS5(b&HgE&QB+<9e|;vbq^QxuIS)wk1Gg$_ z8tH6<7ptFfWoO*C%5nu zJT4;*@|~XmX=yg_7Ul1t6pkYEmoHc569wF+fc@IuBXpi$M~37$CZ|oeubD{R&uLLQ%tsTUc9gdFK-j;2Qf6#NV8=F(HGMdlG zj?bhb%X^BL8lSAhhabH*-!v)S|4ddNpgFUpOk>=23tF<8J}_*UUYqX|Ck>+LX;SqC z)%uxNB2^}hthL(2u3Ex{A70n^r?yDINpmR=hrVRs@UEEdSKVGW)dSfG+DTQ|0APwT z&v!$q2tFasW%q1J>!fl%W->vZ7ffjnFXjp_1A0ch9_hz4?HZv_t;BM0R@>)4sEv$B z)B5>VwXZ*Xh|FX*rb;1^9+sSDz3`~|On+(7{;O<$1^`18)r3B)iq6BauQ{=r*1jM) zvurrWz_hlzf@B>6g)7^f^VRCb0fTNc5}CBk@@GH!SHD0NC5w{}SQz0-iZ^2w1;NaO zSS)F4RqzOk^+wrKDAzre&u!KP36pEmOMFaJjycYvNx|)#6Vw98P5|dVCm8>{jaMcrX0xoml-#;V(Onf)7<*<*v!&47 zO3uK{2+um+1Ivt?q)F8KjSeofQ*?&#`R?{f>oRQCd8AAD$!zxq4e1G77I7A7hGQDJ zB5}D;JT#xO)H`k3+EcE;oA;&WmeRk2y@t4B2;m01+4DHtRsa3N-}d*Mv)Y?%=2QgK z00ojnEB?X3aJTPi6t`3&0YTj)WPbR|=TSYGrecSOTy=+nON8Sy#C?W>7tL+z_%VH} zhkx+)#q+Zjp9rd|kL4wAb-q5mxnry>q-@YEak~xGZtaTw<84|p;bwnk%0|!kfA;f5 z)uySdSA2;eVd^!OfEd9g4reoYxUSJ$1(rcOT5QH=Ra%Zq2qt7+vKJ~FAGPv8x4p1Q zg0SsEmtz+YZaUw(vgHPhxG^TfxTm_s?KeC-Iv6B{P;SdF4I?zS(Ss0K=44SRMKaEq zR?eiKFi~21jzO$m{$gM>eF7P6aqdO18k|7ITnKB}JHjMYp1$u|o8b{y8p8@Ft|wu6 z(guof%Qv1AhT`?}73de%sW|Ssbt(FW{weSAePxciFuLKfG%N(S89al>^p>_dLl+a( zXRNP^TN3^)o7oiOvpXFJZ4!JTxurG^JRP9_Xt3RA(WSy3n-sxyRAJk7W|FamS}=oR zFuvsI!MOdf%ty_(5gSszqOz;{&7{q4vkjcP`xtU*Q+eATPCA@A8ws#$Bn7cAmQR@~ z9NP-?SDM?TYC;vKD(zaWg>uYkvaGv{73@vpd54B5-go5owN^P?*`S^86l60^hh4JD z5{giJ`PrN{ReF`&S|(Y7p^0OPwUxRKebyJ6Thx_66aeEiC$=rNA2sFE4M*$d%9nWRj^axK#LAJLK^MvF*LQu5iG{jl-XWUD1Fu3qVf|3 zuRjc2T00%3ZBA+cuwDH3m~r&<2bX_O%F&k@L*JHl^!qY}9{=F_r@!CNz5evy_jA5~ zy3v<^^8XJ%=iygR^KvnmIT09v48w6ru9|ZONC%CFZY3gSBli1cA!V~{2rMWx#zFoN z_C8bl9wHKYWQsB9+%OQ*W?HtbBkV7DrJ`MdmUZ?T5+J;bvjjNPxH`OYo#>SIICv|P zqTg;6{Z;6}i2*IQnV$qI^lcSF&z90$WLC~l85u4eT*yr-EnEP$gCfRs6T^6Pbxw`~ zh678r7aXR-ad0lU-MUDk0WZnSmAtGqq^OUl2477$Oz>LBK`cvJO}*}f=Sdy?!ZGlR z5B4zldBEs+Y%_~=B<@MlKb2Pua0Q{4%KQS-u2dIAc3c3$-p{6UXba$H%u0EnbQ+&= z|2l*OMY{;@(gfQd604ThoPTDDwjB4cxX$FncO?Sg&M%~AS#Fm{Zh}0-v4+}J|Ioui zMkoQDDO|n!w7y$!@~L{~Ru(4G(!LAtICf1OThYn0tFU`nX2|p+VQreB3mG7jJ#6C| z&v5Tcu1<74I!*ef$?81h>J1y;CtAVx+YWqm$$f<h+?hgFj(;z**p7QPv2}mp23|F?fjh>R+O~b) z#ljkz`vCug*Q!#+(!WansgW$(_tbMFKO%Ql7p@P};Z2w~=FrIpBkf9Zq4DP*w6m)M z5(3sy0KO9*!ngizGyW(s&a-OQU8F7Psj9_|I=O{(v?@?mkW+UtMG~SS_me-}Hml~@ zO2;fAa|^~nUwD|jnA5j8PbAQ;dtskZj%4wiS2E4pyYa8|51Qh`xLLER#e=?D^aQu) zK8WD92b3A04_^F$KW3sZDy>zsjf@}X#;L?7Ea#?3e1V^D;*qY=@IYAKRNmoy1>f4D z(B2_)jN2d7KO&?|OwR}ZF0Sy!iuXP-ooSZoU`vmq)Inh7}wlr}lBH{LCILM$^H3m~5+ z)3dlCr39VTG*yEi%$8Div7XvGuk#Pyk4u7-m<0ikmM4ex%OkM@RSewChg+xfsl#~` zr=%1hbP!uqk7UO5W%?rWa+-PRr71$T1O3$V#wCh_e3=SVna@}%fZy!~(1i&RO@MuF zM+i#`y2H=#?ADe^?gA(#r@O8#wmR^^=kxA@ecJM(&h0=+tfG*2TIzuJBVR`*X*V@l zoEG>rpToj#>W!Ioy5SMDi@!hL!J(B()9XGIG<>b6v^+l9|H#w5Ce_~*f zBW~CzN}Z`8C=OO6arss0lQbvM-^4joBw~+{%$;|(fedN0%~61d*)~fm5F9VE>?rbX z$RxP%eR8y*uJl6J<2&`3pu04~w_f>9)EL3d+CkHCr{vn0|Ap~>#*_q49M;GMv&ft3 zkdh{Gt-ub@?<`d%(G*vAo>!wqu%?Ft#^vgqBw>ovwFTuu(X}n_01KvGTrVwAsz8hv z5_r;PZP_2JG zq~*9y+a|X-%75}#Tfdb_XI_EwyLy(_pB$&E#kJSnmRtlmES|$qzh5EsU&G& z)NIQt3hP_qjGQo9UW$m!@;lm4$MS`(EL2(+4)YPtWUcW?nX=HAfyjke`1(dnnY&H_ zd38gT*W)M)mdCgwd5z7!H3Ni>#GTpQMthYD5m*8h`N?D&1cjik2!)G9efDU_YRl09|dUcf_<9f}7#jsk{K?`f1$)4M>3^;oou-GFfs0@OnRR)yKl zB*=@_+pg-uOg4#)EwhQNo0x2ksr!o|?fY)9NrmY8Jc+~k)$?bQ?+x7daj>*$d-srj z;Kv(5WQv+ESp70_fSBfT@F2C`be&3tN&i)E%Q5)--nPfOZF zN&%;tI~-Mv3t_nD$;nIPAVlem{qTz)sv* z!RLg$G;#h|L*MI-(xpf`nwp|rVROo?2zz@}?8|v{+cnnJ3{VJ6u1skZGbUE;KyIzd z|6%4;k<|4DaXiFME%P8ayhsqsnCpE_Qj&FfWxjn782w5LPNiPGF)R_qX1AcNsvl4$ zH0@k01>DU(zYaWKr>#W+mRac3J6@8S>F}ygA5yREvuhA=E!}$4bnB$;$yJQ_k1gW( z)sK(P3Z)XpNGxW~K^l9`qR#O(+HT_XMhyFzcvYS`hA%Fw;VWmIAq%9!h@ipCPfN~KooTWvd zK=?J~wg_fY;OoQ*8GJ}4MCCErW#9#8TcQ$cN3mTZ-qo9xQgFb&W3 z3bk@T5K}`2r70@YaR^v438oQ#IumU{GKttfBy$3d7pf@X;}G?nB(}AG79|aQ|8gi^5%WF+XPx?G4OTm{9vzRMs)ghKE{OIsw}n@C4`>;a1{e z%(bA6P4{8z?}HA>S)y+ckdfLNY4Ye0j1U>45-?gaVXhuzTSiGASbj;p2FzmuJfp$7 z=CK4(ijwAH3<_q=7>$)jDealZ-Xvy06qVR-%Mr1n1sd!=tdXYjT-7ZVDg^8*BvODpJm z%ks>XOT((PDD=lW4AU3eKF-;_L$(ZQwwD{V(f~HA&sL4G%Ir(O%0&CR0KKVek@^;# zgtCP9)+M~nb!9VBgpdb3v8QxPCo(0K4Rsartw zR*B`6Kp^>RcdVYe{*+lU1l#p*li71nt2^f!addC3#(wqF<7zd*e%>yozP0^adCnDo z+@8Eh-1#gS7oMpCSOH-U6^?q~u~Z|y39YtC;$!rp_=Fs&B`E}p-RM|^|7k*{_eI2! z5se}v;^@ayejE%F-L=16s*!vNvAT%CVpteR`Yk%+?R1!-z4a&^)_``0TGy%V{NpwU{;C{{^E-~t^s z)LgNJt?Av`PL5vbn)Q3VY5RbBFj{8uFBo!Y07_f4QoE6>)Tpo!ZYU zBf9TaSg_y8taBX8u_<|^n9bF*TYGefhZ)#x^h5=MMxA4L;SPOI(*ULQ6VoT@V^!yQnuwO^Ehi!VT?67hZz* zdKSmA#N_UZ`KP3NU>p$ywz%PBmY(Xpcv>1y9v`g>MIJsLvv9eFhe)oh*aKlRSA=Is zC$8LmLh<$m-0<`T+^}{=!*NOFvU6#3G&t^6F|U8f!5tDRP-M~7e#Qa;;hTQNRsH;D)gsL>SL@>gR5t_yfQm=+=oi zN`gR+o2nXQN-~D|{!aKc5k~-{NqSj*j`d~bcq>3r@{Oz&SsK=gPY;wqy-ZMoho4AF zug6!c4-pQJKYft7MVJsw2>`ydNyc!@=5A-DBXyBXt?b79c+X)Ml2OrWX1cBp1c8x3 zWW+0r%_vsBw#hi+GV^d45%Ku{*qQ=@aU)zgt=~C+V7(K6R6whn2_MZ%5FQ1IwKd%~Yf>XomjE`DU>CMZy|OKT zWo#PbhNuUVsB9NpI)BSwyfMxHd&BWxY9#WBshzu1^2)dZ4xEXSFltt!Fz()%H*{u6 zN+^NXWu^m2ff&Y$8Bf5?&Vv`LBN<1gvAU~PH>R`ZD(=eN zLm!L4kT7pR33kfsW1Wbf=RpUMG)i5_WDvxbN)ih>;r_V2W*qsOotd>fBZ`WRBL-*< zVTeR|p|9VGe=N;_0?%AYWo~f;JSW9-?7ZkaRYP?w9E!jE;NAD zdb8}_$^Q(T-%O4lkLrc@ju#Ud`wsCtgmfc_LIIHbB4}xL+z6ADG&C{O&=lr5lCH;Gk$q}v`{x3Hcy1u+kZO_!@&?VLKqC@mWhh-*=0NyBq&B6JA<;=Q|8 zX2PO)T&^TJ%@1r@Q;lgw?rj5$NYXFsU;)YMWN@_?g^I^WSy>`t1QcM}@iEcAb ztK+|31;$5^+BJSRQNDd&)UkKiLUK}}Tuw%N!1Xykz(l*TqLRrlun7@vZ6c0H8DcS1 z932j~h7=?)k$ow;QGoY&#Pr(lll>*l@X!BzWr-VM-aH!KF>pV4GP0^=+!7+Tfb^ji zQ!F~|ZB}&xP$&W?S7fJA3LG+6AJ809fDF!BESuLp)SzQ7$e$9lG!DwBkE8mbSpDcN z$Z52(%$wO%IP~&dCQf+{y-NFzxY%w_Ia?i81~4Z(JFQw6AZb3K**3#hIH!5iH@~?X4d3JfoYI3m5)@*Dr3Wd!g1e)>Y^H~w{iT}C=fHB zNtZe$6(KbAHR8y<*5a%7r>lT$TS3`pB_>h)lTF^>LMV?VulX8!M=peQI zu|8FT+_=zd0c$9^F0mPvV zje_7}*Ti78U!+fD;=wGPn_(4&@;0|*TJIlNjzvCNne8k0q6Z@Fcj#NxbJ?(JZz5ql z_K|HkixCkrc#SxUxXYnXiJRnRvP4TZ>tM9|Qby|ye-jJQf$aFl^UACFZk$Cj+e=)D z^rNp0GV#Az-d`wBW6C+fssw0ARA?=xIC?V3Mi12yG>v)s*)`$_Tqnp9&O7&6Cdqea z$PNPnrqLjyl5%x4h|~s^1e20nt5(02$ku5TauY81IS4BU1e9EBi9vJ3LNhDd9}zz~ zksxL8<~@_Ge5zt6x=K2lm-rBek}wORNS95<70buFro&wqroAD)2bBk_a=g~zTnXYr zUMdOtrVcHhI7cRUxxBf%MjSO)r-tmsm>OYYy9L2E#>mF_C9>yc^~hy2L37BdCM0nx7L1hT>5< zb*;9sD0i+HA1^^vznF$;@Ih+3;?sjjh&U>aEg^jDW1nV9;b^lQ)0+k73G-bMH@dc& zKYVQDS1Z$#{VatQe`dZ`_`|qqqp*~IBBejGyg44c@H%zHLGc8X<{`zcd(H*PB~Q{F zHx2JLB`lBc0?L0aIxO?ed#jl%dh0+;C^PMXd%1?hBy#P!W{8cgTslI?4XGrQ3&J3} z?y7w!{=2!{3CRfV0qa$oQkT~@zk&A)vf!Gp;a9jLZdM}Zv9`W(Q~2!@^>(mopTLyT zR3t4x??zv0Dp$4e=?^*fr}QWo{_N{ITC0}|Hl49hfc(1F2f~5poU-Bh>G$fCTt-h941m~)&mwU zXLXag5Ia*~Ir~6ND0!=+k}>uX1jU413M~BQ=SM`Sp@^Fa%|}llZxm7Fx`Ypsaww_X zC3#C}VRPvLu6rMWM}ur8Iq8{+OT?n_#0T^VwziribZ#{4d}Jb?ZWuA-IIFxfhrW8c zG8Aq!?xg9_*$Hb++iIik`ghKMBDp`18_|d8h;&G8APF?=20^b+tbqKSLXklTjF?Gm z)dHQBOEJBu9(jsnE3~Dfo2K)Z(1|6wx+aGT+Ly|JJ*=5Xp|a zt3v=WmDv?OISi>mEJEJYfs-D=~bIs2kW0LSgcZc7b2{t zSJWe()eZ5epuSIOd&uyVzHTG1R(b0Y4ynX}UVz_JRh|W%PPirUMvDemIfLOb&9F}d zL=zGy!(PwvDsCkasos_ZG;5Fv8I_hrw;Svxm~OYx7(F+DjhlaZM?R`0FuU25O9w1M z6ecqlx<{WZis@pW(ayvlxY+c!sZP+#g&!MneLM|h6S-O*?(n9TBPLQ`UDMf6U$L9bxS5RCx5le1ZX4LmHD{s8Sxml}#crlA;?b2P zmYBpURjvD5?B-Rx64-uHyhto95ZA{0Z)Z0TB>#)oMBrBZc#O5^!K!OPAxkgF2#Sq8 z>mPD&ugkaqlf4!#zr}7=)+Kz5Y-Oz1OGJ3Ux3Qb~(=ocvN*S)~X6=!G{obFLccYwZ z873s`d9a&E3TK8cCEw0&VzeU?(y5<)C%fq_2JVk5yIEV&(mnqOpERT~xrAS{n;VxX zh5s;i)A$v;>A5pJmzg*K44^Pyv77&qOSmg>cYlBEX5ATPH@oHEjoq9lWuLDuG~|Sp z^|#=q@8s^fh_O)v77nQ?Nx&+ zxXzaP7a`J1OyFEnt|nb?{np6_s7g_CMi zyH50>jX(VG_5cF^TkIzO_b7ky{n*VRXFbM8?X}I`*EHFP71(wT(>+K{Zc&kTck8YL zxNJD!e$8$s1Y*R^0$KJw*iB6L{(RrS828lEv1>=3@7&68Sy%6hKaM*#gpcj1#6+BZ zgWUu__T#E^zBjw+y!;;=e<1IB>&MDUZQDAT&6YN*za#ung&ryLmCFrih1OT>=5<2F zSh!7j`Cja%)D$c~_07YlVi{1la|aPO`DGjBuMI5XA(gYs7@AN^@+7}xH+`qMyUon* z`?8yT7R5trMK@}Ll8yiupE%ENX`{dy;CX(X)Q%kY|!2ErIt3B2JVO_QXAQn}sCw-{PV$ z5Pr!;DN>I;#w-2%xu~ckh@X@Icukj0T<^+il+dE*G`2!Ydbb!Lt_!laprD zsb2J3T-1*A0l26fE~*Ghi5RIw^j2{Z1v0s|QNE;XQV|pw9P+nuQNiV<`TE9=DyMBU ziA#q)4O;va7ggar)olC}W%WE=`}DdVlGI+i^*|j|J^QkavhDZ;Nz0(*Z|9v9)4#-TN*Q?n;}TSAgB5X?F0CG=YcZIl(lE%f3Rem3%#-PFRc&U_eDlZDsaGD#^S zs>M3LIc=Ok=;hbuWyq+dFH40UAmne}egr8Hq&*T~RrMhJK@|XIffXg2 zl!*0|Z4on7=6MNTF7YG_;cM%lG+uNU5W?M8E5mN!q3Behc;3bTN)R zCn_`!PCFzq9xjI*dJ?*dIt7%VdWUNxf}f@x02Zxm=<=^UuU7oY)l)7iv=cNFcG|3{ zriy~$2tH6MQCOraMU`s=Sq?NNWrQ0>qYX?}{qrq_yyn)(`mj+W8Q#ycd> zs-wZ;>&6a)dc=~7!x-@B?X{dxS=$G}XtY`|z6L*8xu_S=SqX7S+l{z>`$;5Z@oB4lr_mR12i&37} z;S~9hzP; z!}h;{5)BWPTSPWtuWrb78BhUg;M5yV&r7rO%=bV5Xy)FW-fZvbzs0a@snEs8WK2y{J6e4aRL&7zc0yvWXt zp#N1Xh4GNK-}paw#!m+T44Tz}gfSKd3#A}5MqR2<<)mhtcI${HW*h;LRUW^R>q}YM zt(?sf;Aid4i1VY>>6kNz0>&07@atB}q4)B`OYnN@e@y=ioR7+g3@(%dfI0~grWbrc zQHbIyKDu&^b1V0mKw?QwAg~hES46Z!x#z^g;1m+KJ7anR623cN`!fce zF9bm7Di1YW0+?tk>{W7E;O7ndPDM@NzSCW;G$2&p7)HI*857NP;K2wQlK~S>= z_J+m+JfdLquepscZ%)m!p+TjRVX;suMRW^mj_;V1(XRvs`st$STEP7NrE| zA&{T43=^sEB#`iZf$-RM<44+6qbay%7?uWD+#v9$`Hv}S+kxok;#VIoP`A|>46^e#KJr5?;KLvljw!BpsTL~RQ#2BH@Y9V8QT zFw&D2cX1QMpA25i8<{yt)5(6a zbe+w_5DNrwYX)$n3@f?is7^t>Qwk1ZeaND2yk~`YIBQHClG#X%G2@=CLsm_OIYl7C z8+QbXA9dcyYrqUlf^xF^a0t`5Dwu^u2D;@@+r%5<*<&|V7AD^`A<#?;?$ZOec5OT7 zqBw9H@u4U~k0hWn5FOWvn*~9p7z(dPY9cbF6MI4-V!OtOmyOCnd0o?>^)L&`G}>BG zvSr|q&<={Hdzo@WmCVtUErLWg7E{z1!jz{4h^!X)=HZDus_J%g8Z+jX z)NW>QHTZgPx4Lefq|nWpDQLcx)!nnCuo=-X`&Ri|75-2;4fAdO-@@JlJg)1$6CGBO zRJT=Z@5*Ko2@)&-0Zi|`_qkK<^ci3XfCPy)7)+l5Ws~xbJsC`&rrjvI~4@gEQyed;0mGU*Q8c-_!`x z2s(lx0RV}Mvkg5Vu!!NWrQtNftPY|PO)N#g1fD4j?hH`NQius7&*(Ss_1H*YWF+t} zRzk-j#2JIa5B!G+HbQKsJ!;a3By1hvLOhAv4f68i2nHYA5kTZ32xHMfFTG2F?r6~& z)mAHPP-J#Z%m`~nDc7ykh2$WR$v_J=$X!b4AetpOlNc29;iiJc0w`0EH$rSmg)vnI zw^@-*h{xb5IOsD#F&UMLketu-0G;eJgBl8zGpoj+Fv6)qZVXApdWW2+& z%I4RYjBr#HNE8}y05$aaiwN6jmB1VYxkZ5?hvvyLJuWF&;8GbBZeTj>H}Gsw4}kBK zP48{N6RJ%v2);wd9p|M6bPbb&&(#u`OcB?1y7aIW1gJwHFnO#n<&?k!2|Ep-aK)x5 zOKD+i#Y&)pgsfv>tQvG?#Bw#zIYN(z%mYr33_8Hwb!f{PjTmDr@T_bd7Q=EKnt%)w z6*gW&v_PbI1!s*IiFh=~m03?3m`2c&G)yIq zzF}sdTLs_`QxrgzU}ey2Ct8%m;DSCDU&rMrg#t)qDHT?L$gu|z6|~4*cC0ID3Lt?4l7Fl z)geA;v`VEg3fQy;C`p^yfb&I&kpX@v!hwbIcm0U%v4RodUX^}Rj?Mt&NRwMGuh-*5 z75-7b+k-^0JORgnYmkYI_zidliv@lp66}iLx(dNIq7`1iR#i-=(?eqji+n^l(Ni$j z8P%$gOw0zQ7`}{7AyAn(+Ep!5$CjGjzY`D2@X6lX~?sdud!%tF%WgdI#}W<#Q~E9 zijg4eVh_S$DF_$>DvcI^6;;TGC4ik@gPbFPOpbx&5h;KcHfx*~4R(JfJIrv!Y(PBoU1$@;h3#j$?x_cb|GH~ZBf1xx-?3ukOzwy zD^n=}RM2OHwSb%uLivQys3A`bfe@`+2uL+ti}>*32C5RV4qYGsmDvcwIdYs~o3U*& zfYof3f`9>D5u#a-_aJm&ry+pA0S>WE9zC3}AUnzDMchEffbXQz$V^rXsmDFKaU=n$ zDX{`zZkZI68yrJ5dEv_-IUzG+IRQ;h1xEmH1cVf^NPM-$;FgLwF_l;5VgZ&d zWCLMhHAt}suw{_S1j-_Y*&X-*Impja5J({jz&3*`MFI^VSFxqA28QI6 z1*Q*JcVOEfQjm5zPm2LZ$bokPi>sHxS6gajqDSeE+bz%n1Y|>OFzSKof@Enpf>?pd zhhr^F+FS*sy%B)``LkYc;78%WAQF3dA}7F{QnQ4MFX*}yD?F&tNJ=Np7}p+K8< zG?RS21hyGAhl#7wa8!Iv6eA_`G`@3Wosv zHV713onjWx41q38V@f5*rUqmq3J@R90|Eg@8RX0CS|(zPs8R5HAVm82IvGr9Yr9wI4m^IKt*ONjU;Lj=_~q8w`+P)Pf;X zrQ~UaZ2HVlYgZ{kb~evr(5VTvDX7qLq&|b7#jFO++`@%XD#y--MWhR=>%BPrhpjKr zvs#he*}xov41_BRHZ=xA2pnMV!q!9xxPO8{jWrkM9B`lh<(Z*XqXbJE5d@<_Vmu;& z@{g7eN+XtF^d6*H!;G%&L0B+@Lv+C7eQc)|R^b8Ih21=iuN8q%X=C47+8x)H$%+J&aH1POhz6chuaQBL#M zjM#`s0jR?c8~_;%eO$m#^=inF>+Cv=5?UP>BQL3eIjvP0;c09vOH|302kdYMWNGC_ z(D5+w0NnR@QbAlE5oov#3zZfuLIf5r&0oW+3{#i@P7+=FSIhEiq z$Yf%SBswt1l!VoWh^0V+t_-;tc~r?)10dk0Cl%BGKdC@4SO67e9N7PXzvhILf)tLg z2-){R;13GvSc+?vCYzWk%#u)w(0VYoLyZvSN*Z7o+lDTVJ4Zk#3RerU0L$C2PAX<0 zqRxCdaH+rNujwRy^irJN@P$~~_SYMjI&dKXh?HUnD-E7B!73>lZoq*pnvY!;)56~N zh(Rq8${|TEiYi%1tw#X)tCI?1-x|bRMOxUdnL<`TLgZQ@7chCOLYW%J84m&R8xqVF zvB9shH}?^2uA1+a*1N^^Ku()2ZlOd99Wp@5ASfhMM8PdXiDCWll}UvwQcAe6y;X`? zGLQwa!&lNPb)Yr8P-n9Bb>vKd?D7$Hl|nwp2_Ji`F4+8fl^JfI^*R*^jIP?r$4Xxa z&Y{*6l>qOAARR}fGks-J0U9G>!SkqqSmDZ`aG(M)5oklAzU6eiq@e@oIkKDbO}JTn0d!V9xgYNkzu>@&!ID84YHf zi^CyJCgQ++PoZKljVF8SximP^+zyj1BiqrVff5Z=q7h<}v+LE?`dm;MPzuqQ#Hd%c zKrJvrzStoHzMhLJ;M3mF^rWKKfpm$Ou~`k#FAy{kNEA01nncbJm)RF-K={(bVOoPw zDlu}vDTUIm(F5gZGzkG)%WCs5IaXo4nArdUI2Kq93T~8Zl`#1TQm=7Y5cGmg8`gRV z`-3hH@Dfm{GBJ=eA{)UqdsLbTeDKikAyEn$Q!8}Pu@nF#jDSBgV8(K>nX5!B5jzpY zHzg_#AYBH&fU4iYgzGJ!k*Y2ZTVPeN)E*sHB^+R+EI_+~Rn2FvvTFhKW*e=1ow&gX za3qA3-~bENPBV#e#yN=CC_?}YBZ`dA^CChZ<*#bD0B?pZihv6(aXwQ|KLmZvCV)(3YREbQcwmE63te2{20XD- zBo{aE_yz%Jys+9{+xsymqxH-q2A*CAg1bWNXwva4z_>I0$E@{k0*WmNv~oQz*oCoK zYMG{~!2p&UBD^puG4u3Bj@p6%5zmC!Ao2kv5zdVqr4bgUejF~cl>oW>pw(=X)i*d& zHbjouZ1^Imu{?2z>Y3f?CT5ddrUM<7EsZ(MMsy&F+#17FY0$&U+Ah^QBu0e`>s|N{ z1e9#?Moxp+!CYl|#Tr(F6vQtCVhvs~E7GiMkivki-fdNA1xAZX0oejlX&~zjUPKc} z4jK`*ojf^0O~Av-y%rtc4xeWp&lqzfx~JrwfQuzkHX%Rge`nLvBrseIX}G+sOlggoet3Y>rBYof(uCm=3sdx7f@$@zc2sIB1o{QWJfM zF#t^~08IwP!GlFQ1c*4MRw%5ir4F`CrFZa^S~w_(SXP8)# z8{~ulEM-XkLGh5MgBx_Cf~# zhZe#Cc_SKb3lI*1T5KlxX+ps6XyhTd8BC@YoGbJv9TMofky*mniwMo3>m z3IGH=J#oatLSVxnFw6y$c8D^c;L|v@F2i( zyjA`V8gC2VzcsuqE{K=K3bobPjQJm$W)g#vc~BOG0eBd2Ll{pY(1Z&q7cV=E{7HT&rXvQi1W6X3;5F94M1$8kG>m62OT{U!YNGJbpf z%9clr_4SJSCB`aa9r58RweG|ERmQgGDJsEWJpVrR{__-r5&JFm%tAebp`a)QgE5B} zk-^RdYC%E2^g{+CK~X#L`oi-J#zy?4Vyld&@Z)*LAVtxyBg+j8q+ek?iKGg~52+u< zaD^4dhMg33bA|E5+N(&gN-^HYtH>4q+<23s>YrbsHoT9lki+j@MKXqBmD)InzX`mI zd!1WlJWb#SeIs)W21O07GM>Rz=o?(1?+y2{%2S8*1s_GIla{F%iU)pd{7FRy#V_$`B4w{`u7 zjhi-Y-n41s#$Roq)>G?N8IKrGty{lg(-T{^J^9p=+qQ1`=O?Jmn>TITuznp~WY4Ty zzj5={r=R=!3opL-_2-{`X60$>8S3dRPd&NyiA{8pRmQVO@x+tQz4)!~?AW<;`zzo2 z#_G$f-`Mu@OD}xw*(bMb+CV4SjucOQ?VH=H4j!&MTytRWp53qR-i>cNzx}NjpL^z-pEqo-cnevqfOdIF(Pz_&_1>k9;f&=Zics=xih zQ%`JI_Y7m*#x2i&s|uoV-pG-b*438hTaTUS=;~~1A`QYr+h2SNIqhPs-?Z)P-#I8W zcp}Zmj<Z>yuZS^>(}l{X7x9< zBCD>RWF}wiE9QDnL~N3p@BBW|+S3Viu3%GhYwOXr<0slXI@;Ts!%i)4|0`eHwsAe< z*~jIyr$K6T`a&!OK-Kndu2mhnF5L>YJ@@jrcOR&& zqnk=K-Bxz(+PUM~|K{bdJ-r2GNjE1t(X%gn^A$9>9p8E7-+b#EFTecKOE12N7WdRv zR2&0oo7bUe!7MF;Qb$AZlFh+N7UAbi_6QO{nK(~;nUTJTd7Y!r5--` z_@ke`k9XkCSE!92FMjsL;%a5{;-?Qk|NN8BS08Nt{Nv@1KK%G+k5fEH{fK(7^u@22 z7ZxjviwnySAFM8IdAPLn$-=|W79XtOGS5;sKlpg*i+}!n2}vr83!knmt^V?f%IBXg zefsgjFIJI)qMrU}@nL0g`SazqOcuUe+Fbc;>GP#8mR6`I8PrYc!Dq;NX?baNadm0^ z!qUR(;*$%NW#q81OyQyMDAd+3mX|7vOUsqY(rSfTdUA1T5q~W$FE9N1vlVI=qwqep zy!iR@^3q~uX$k+K6C%ypFN?qa>;bN_jX{0z;IqmXc#z8K(q`Q4(ozM#ZCI}0k`=~U zJ{0xv^QB+nLGX4u1)bgFzZNPFE6X3_ZdR!$9zIxJ`V?ta7pcmV_&<{2(U%tKY?jwb zj{5pn^1%fb*KTOFvULF|7nf0s3_LpS=M(yGJk;V=ItBeyOO@X)Zd^<890Tc=7Z(%^dyREv9kQd;zxAp z(Rch{dEwJvE-s*|sYPmeW$CHP=eVU$7eD*-XFoy}p^~2XXyKE^Pb+ki4U5YQ%d05p z&7UtUFFyR}WBQTkG|zwVi^We+L5r0y&>BAdfA#s&L)~AJDf#CwS(Aj~*=G{y#${Aror#;YR8KMSb)L3FtPv?PtIE z_`!pZe?d_{qgH?Vh}yW;p6T9&%zuO~@WCQ_*>7+=jKU&%+J}#qADbCpN8j3ko<#Sh zoooH+@x;CZuhM_h{f++G&UgjA>;;T6=w-iRtQ3BU+_n}7Ni0UhViL)(2&zC2Ax{;E zm^Kvi6aE+xYFp7#ZIqTGHo%vpK=-_-3lf5egaWZ}I6%g{D-p^|MYa&I3y%?~mlekI z1&P)l3P(tPB!VBIMvrGTw5`$aAqamcM$k#VBheC3UkJH`qY-~75Q<`Y4f)7GBpf2z z3I!AxMSRmwM1uHFBp41w0`vroD+VLsXxP6RTSp+xHVF~(;T3!aABEN<87>rwhC|Uv z)K3toyH(=Ja0t^4QiMX0@M`GUaFEU=gj`~=RxO=olOz<2L;|ak4QumKcw;CW3I|t0 zTf(@faO+w=RP4n7?h*4A{Y7U+|Ax=i@cKYwcok2zg;5{~PZ+6B4b2HbHbohy32qS{e-7#48@W6htCiCP-H~DmH?=eQR~KR^{K0g|N~>;|T|R ze!BRh!C=H62sB0`AruT+4n@2aBRsw^+LoWBFNz}bhr^y|Yz3=y%nQV}SQJf@el~(` zoWv$HV>HbbwCtye0zo(IwU!-fTh*=*RBWAuc!bGo+vAQv#0nD0Kcgpn`MWNHZuaz(=eTX@gSTX%2YedpGlySMM%zjOQk zt@+z;e{cTXYuE3;@%sGr3zMT)-n{Yp{o8L`f9K7s^RLanHGlUSuJq>Hmu}v?Jpay> ztJhz@`o_IKzH{fjckcel{FOWR-o1bK^}Bz4ADLdCzjOQUTeseN>-zl7JGbZGx<7yW z?%Usg=k9HM-2KT9-+FKUwcGdR@7^dJ>$`IG+STvgeB-ru=C99RoyUE>`PQA+Z{NFg z^UaI5-+SZD`MdMC?!R;A?%Vgj|HHR$zA^vK?Ypnty8YJO+c&OVzjf=4+w(VWzj+;Z zHUH-P{CDr&|K9EUx98_?-2chF`Fpo7-TA?H-#qKGOij$aadvj<^yG!fvvcF8FU*{s zJ$tcyac*R4?DWjpnKN^*&0V}WdGYF{tCwGYk@xYc95Hh6uuySEU}XS2n0a%`xp zr#n+<&y~}eY;H22$Q4WF+(7Z<$i(FMsqxXFp;9qFT__Fa;$8hSiFCRrmr5pz6DPC% z<)MM{sfoeCWWG35Ecd4eMlz+*(pWngaGmXYYr3;5(NQ>&E#`8?-eSCMsMymvoKNTT zgV|&zmnmRPUmh5no;)=&G&nv`9w-;jmb<&!vwit&p|3MvOk^|ZQfaI_J~Wgsm9t}s z$>CBO_m&;ZmC7v8cOu`@Q7EFwdb07Zc&3!;8ytOYcy40){J9Hr(^syY z8lIiP9%3ws5-Jt@Cy?jZ$(h0a^6+r3T*di?#i4RbM{hBo zE0&YFLT|RCyR9!#%%;+rI7&Q;TOOR4ym9I6AKaOlJNMe9i&rjRyfAlq@WQ$L)Ij-U z`D8Xf+&5k-7fXW!^p;~Ro-P(kMfw_vM6!{v7+#wi%M2IVisjznWW3yy9qJsywxir# zhEBNY-e`%?Ci`>KEn!e`Fl5Bf9oDa{mqq2S3jmcp1V*g4dh1)K?kWLQ| z<$8+6T)Af;UmPf9lIiY__&}50rapgqrazs?_V-m;dhipZqyR{n?HApHdHJXC_O7rQB$Ftbb@Ao6e3E(z#+^K2sb^ z=F+L2&aTd`6GLH(&p2`6++d#PI>dQa6GCMg^94P1WrM`3_c{G7{m*d?%sKG=gn=fWM68WKWp-H2c%nr?- zjc2=)>8?U|v7E`L%f+#dco*s%*GQkpXHuso#_xVfefh(8-+LF?|EE8#Pz$)^2X9(33lkLgoT(QuR$d=L>6jZV=i%XT#>2!Yt3d`ugv)OVXo$M-Rvzeij>Ape< zsj~gWYtc6 z%4Q117Q$wj92p&H@5m)FSdA3X^2W-^a=v>c-_$>p&ZYZP{r#EI%YTOIc<+1Pd-qG~ zw}1M#xCFhJ{Ij{&#)>@yQ~6{OZ8sB-T^&jfo=T_ViOvpG{zzY6E|)0uA0gcKq3Nmq zmhMz8(Vj`C2g)g2tB@?_x;n~ql5#GUE1$Z21KIxI{(UTC|NDFY4@LdsyYErde>r_^ z>Pw3H_uv1o6m{q3?VnShOBMj@-IY%y;yuZ(e6ft8 z!UJV<`N65V@BW6a1=RTWu0EiC@#Y)X@JO%EfWE07Jxm+%t zJXOw3q&hO4VVl)(>GhMTe0=bYa#t1wm})B|lNbe1*?sZ8Tvu-%V_RwZ%;|gdQ1bbY z-@HEe8|v>aUb}FcqW-wlKU&Tei-Q=c;^}mzFOKmkUM}|IB88Lv7~6YO<({z8;h4QJ z+>u3~3jzHef3<54U^J2K zD5gK#JsmG)%DM8;NZ-)tsq^Q?PmhmI^-oMsj!n*tO`aVa?kn|WdWzZZ zo`C^0macevU$HG&OlI+>1m-6^Pr6&>wv1eOcN$|yB2h$h?#E3e%H<+Dd3Q%Xok+)f zi$eqX^5AeTGd?w5nn@+bv%@oE<Nc3il<9(&v$RHlBP#De( z4rYc&26Fk4!T$VUe=*&SVJaKPz@1CS+tS%=B2`GHv#FlK*`7rI+^JNHm+&~w4Gxr( z7_j=rGTBjj*oGB+ym{^M#)DNV;nxTS}$o28#VBOQo5y0&2T^u%|8E zp3V*?;~0sMcQ%c3O6M`oWy?qV3Pa`bvR6mAOQ*^So7L@dG&+K&d z?K8RH;o0Q36AqtM8}J3m#^YqPvAMCay^-|#OzMb5X}2_+ju@RT59#u|eQqxdKzwd{ zpvk0dj0CK{jMqX~PMwNLL_z@shUIFF*en1HPz2Ei4$kkOlmv?sBivIYa4msMFno>x zSXBV3ss}Vv1Qn!O7Q|B^I3Nb<9sC}d5G)TsAo(yb5d(k@qX~`HW*a>QJ_wr+=NP44 z4B#E;BQTqSP!v43<=}4vE~QpW)zHBNMHgNT8d!9LaR3V}oDgyjOK=gfTp<(#@hy?^ zaHIz>DtHHJplBjA>j7YpTWu%Ib$kh1F6U_g*oUD7%%map4t0DvP9Y6utpzY6a4SJl z;S0fB0pU=uk>dl{FVHWAB51gYr7AqS2!gkK0G^-%1aO@Rwq9~0e0_yL6=BJAcJj=~ z)a>l^_~g{g`1sVwB)(r989zTYhzRNFnW@34OEZ&aXUAqIhp%9XIeX^J+jBE>bLX+< zyf`s2eQIQ4Y+`b9`ohH2>6uxqrDo4e%v`=QaeZWL4vW6g!tw6G@yX%yXU0!m86TM* zoR}D!862OPICXjO4F0+}I5IIhI)47mGc#8%oO$!q;OW_`vu6iq|LFY8nQ3&ysnZiv zbWa(dm>8Xy9i5n&y>$M})XdzOGxu&x-Iy4hIXylzOqyE;hek&)&5RCSnV6Uw!Mr*# zGI3`3?8U(| z?WwNbWGdd987d6)_Y_a|m5S(veLa~>rhwIPf1$T0(V0JyNSsKvpNMyL_NMxKbA>{> zkUx>^iI>KEQhmM0%Oiaeql`CpbU0~o`D`J-8~!}aN33?EC!qJoyk63G!fSCMVi1T1 znp;nFv>ZKltocYVK(_mujzW|toOHNcMz_swCR+mp8Hxsct;d@pCcC#e=nE0SW_Rd_ zugM})iE=H|UC?@m#;B)tfdVn0G;hkjU64n&R){f8axu{3ivE;e<0-X z5|J*_8;lU{h~Mfw*5o$%$RILsJ9JvPDAAj2F~Z|cn<8xVK*ZBja&j9;V zquCuILPy$)Eve3~WN#|fSty-|^`1By&&7SgVA$vL9czvTV!`79Umy}8f_`7fXY&{c zrkU+>R$ecwtQ(B_bZT#|w{Y!a=yBP2HU%=`&X*y5d+d zp=NXG-mcdELO9+SiAJM#_<=Q(0UsGb;gQZ3qr>U;dR$(&&EcS-8tlP%r@z&wiyZN^ zp;GML7E`O$WIbXF*=*sUjtqr7W}-KlNxbz@rBeC%*`dDS=}P5~`im$3@1?&_X2Q{^ zuMH*dX(F9OEb2A|NO!;%@sQ!L+fCX{rifM~Xeg#rQ4iq^JEA$gA?yh@o4gKtAfWf! z96^`G=LtD&M>6TmT|_bQ@nC-7wVRd7jnUD6zw}>vy4%A|QSY%(YakYJJKe1w!tM2u z7{7s@aof#MHrF?)MH*hbP;9juNtZDYGueENWWWxfPjdiRG>_BK?6LYCon7s{lb=)` z-Z}rhO65OK-TsqG<@(%ztUMU(IesM490?r zm#{ZeIAMcXklUoUx&slX%WEfXO&-0&?X6W9-PZ|wKe-2BR#y_N*rsaM_F`NxEYZhd~Oil$J(w}Dt~wJ{JC>~Sy_DV)~A(+2rqv)P>eUlLZ%~aX0rqOdd4FWv(6Ut zxLWX3@aeSKYyppn^k{@4(ZKZ4-mo`n?~FN{aSg;DU1Y?WYtjWs=+S#T{$L>1ey>vb z$+>eE&V5j+ymN<+U;n&P8B29Hd;P@G7L${Nj$O>_@cN)pULRc!#O_P+j#;7ZzVzwW5gG7x|~jeAmJH~H<~cC zS&nwMbR__lsj^pNP)o#qp*=D5je(VNMj z-yMkgtj9>b&Z$$$xTQk;7@@a@0xeEkjP#gEi_>mHhw+8&ZW|)E7=9bud(V8l)&(m+ zx^VJ8SN?8j_~bj4O7XbA*=Y?ohDdl!IFF$fS)C@Q%|?0yq#yl~IPTOtjcV|iOC#<6 zfURvjW_F`Bx%7UU(_PLtb@rXK0+?wUa@S3bHvI+lM>`APm{VX9KO90|6D z+(BBN@xl)JE5lIb&b^c>|cZlw%HaAHk zIO zln){UvnzlT&<3rzD?c8DK#R{|ZEiJtA|VG!nlSjn<1Q32lFpbXW4mKa{?#&#J zw;$_lJbt3H4Zea$6Gx9AuIhrRmf02!J0o7gX$pq*1V$2f)MIyHDteV2XD179B$&R<@j=NkD(i4lB$rfL*(b?GSc90I6 z(`1Lgx!diHk^%Rz7P2uG47K}@#E57t;`6sOg@R2H4E#>?H@lm_cc-58VnFoT-8eb$ zCLA_zSBnXP2^vZM*fD?%NgEo1w*|9Q#MSC|T0QQd%WJ~$j>g=Gw~~CaT9RsLoH(1g==RZ=+(QUx{xy*XoTFWSk~Hp)FTooRbsQ! z1VEoeq-_O#msTPXa5ORy4dE*+fS81cr_-3VHZRQYta?4L=b(6VjAE9MZxh)BDky<~ z#tkoGfkq9UoxudcJy?d)fQBy?bRIX>9z0mfs$O%rnLp`&4zo5R3-%v-tgI#}6SPOhFq)rK6SW^u_ zWFV(&8YB(O`U9NWz17tRtLpYwAF8RVKTrcINL}55>iYc+4g2f%*YRp<57dAtS$FWT zKwuZ_Jy=_f8{-`2-~sA5IE$~XW8xjP%maWz3l4%wQd3)7cWD11T$I(&z~?s9)z=@a z-MjBVZSA20`}Wq<)*m|5fEzn-u!c(~#G$>Iel&0zYY)`1>NDANF;k3ZPxfWwsoqpP zk?P9lli8D<2;g*E6^pS695d(dlpN&2|kHdsAca?o?M#Z+EsUl}~3zJNgP8nNcjM z;@$D`Ot!a}N{w}QW{TterLOXPDU(md5iH2i`^&BbHo);@5icNSmQ5AVsA&^WEb}F$!vKPyUE_{K&rbdelk_) z!lo4O?xLS9gE!!2d*g|CDvsTMU$U4=W>P0#JDDm05kH!3cGcB{J&o~j1S`at!{-Mq z#YtkhXFlF!@nZnRv>9l{V%LfFN5JV1xPvwMBN(VvuV@`i0 z>L5wiqCf%2c2nz$Ao+jhoH{e+Bp#@*z=aP#9E3 zNI1beK}VCP1!kb~;EAPy#3b0lLV-Z;&`M<>5h_e(h+&9eYp*jabl8g;WO~8jhT5>P zK*C}~U=+v{z`jZiA|5dCV)!axM+$F9nOLpWs&p!y*`NVA1kODQk(gA2b_Sgn5#%}` zT%eE(Wzfur-8SR}po!(Rfn=!!|3suv@Hn-#4yOk!2tc{b3LX%lVjFZ{c`8VQfrcW5 za1dVz%^8^rJSI5X>Ww-HI=%=NYY-L&(;3PcfEa0&YLU_kIS{Q-q*3r8vj-}hTEPdW z5tN9!+HlaXh_i@>ju!Mu=Jd+?amCAWb}tFd9z3`r{mP<}$5 zMQ&DOzswhj#R3R&09T6v+zKBjIo#zG^b6bhHO3j!*mKK4*tS^qd{r5 zhroKXhN5s4A;0R_C)K&+(k?1yWsV?hrB1gIisl*iLZ z6ndUkB0{WUZQut^SPSBqO{+r2^hb!$_=!;1qBW3VzY-K-5O&N86S&%_G@B9(T2N4N zw{i)h6$p{=jOoj8lDJ-w`uGKpaZ~LpPoZT}h-gI(ZVFNC$fzJS%7fppn>c-t9D5 zjIMClWe$XW*d{qO(D6fV=r5p&0Jp8clq8aCK⁢G>~)>q0oU5KX7nA)++%SEI^

    sQ5%#ov|A(suxAih!Xi&_VB@J)^NltkIv~WcpsCCi z(bixpr5>%5&*y7tAr%fLxD#2kPp2}%=NWd35)&d+A{cLn!SNEpbre2ODzro&?%!&% z7`)-I!-{k25H6}!%47n$&}8OGltPfBfn8UNQQ-K1#1edZWsr@-08+dEpr5c}?p28u zA^|#QBYt48%GKyCpi2-3PWW@*}%}vjP`4G;30gts6}a0fl26q1Qxml^zh@b zgd|XG5YJI)WB^KwM08g;c%a4>cFK7GlJoiCf$6lkfEWsAv>r65R}vL2Bvb0t$QIT; z$lhmkhC`$gO_@}-sgu+g>S)&h!O=6KA3o7_ILS#ZD zQs@L&O7YNe1PT?Xf*1kdlqTfuYdGB6ZkEc3mUbOijeY|45E)S8Alo4ZLD!K9&Ol<& z4fIBI52Max*1^IOa+4a&VYq*A{Ulm=>|%J35g4CkJR_=Bu0XR@iqYj2QprAEZQ$5( z85k%i8Izr_FlvQT5isW<1o4yxNU2ywGO+?`C=v{?dKsoEBgDFBb|ZW()zJG;g2OL^ zoVEt>RCrSwbv!0iA_x>f+RF%cRV74HRA3eZHH%(~ zkqMd0prXlDL1F{)&QRKrD@YWD)5zz+|DvwNZq-340p1|cAA^~jUS@)`kyHfBRK5sm zZ>UH(v)F`fe*zIL)DkISb@n9 zhj;j(xb|Q}y`n}^10g#$O-&Y-&?g0NYmX_Rl9cV+`qSa|DpYRs%myu?b~r+-|pSp z_io>{tLpIX{kyC7?5(Q8_gz&xckM%F2dj3{f9%>>wfn%~!*+4ij;dXIYW7y`*|&37 zO;uG54PeE4_Ux+JQ(d#Kde0tQpz76Et9I=_P_=viex$%FJNH*@-?eks_Wiqd?Wx+k zch|1!efz3*@7#{es&?+%wfAsU)s7wessM!DTU#qXw0+m!UHkX%sHSgcf7Ky6Ei$Rv zvwQE(gEjjP?%ZEpy?ghod-lA#y9STCxBAe5DqMHho*j6GJ^Oa=*p3_8g}blXyJOdG ZT>sUbRr{*zaj93U_8)k4=idF*{~r;my5s-= literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/OptionsBackground.psd b/Jack/Launcher/RES/Lang/EN/PSD/OptionsBackground.psd new file mode 100644 index 0000000000000000000000000000000000000000..74e424699df984ae613e1e0d4dfff2b22cf85fad GIT binary patch literal 2119978 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ëyp^!j+H$W2~|HcJFT2f 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ƏY;zx>Pp^UvRQ&c_no7hxVc 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 z zCiwQh{xt5Y`NKZ>=^l8gM#ZAs-$lvh^_? zb{#T2wtLjs?lV)o;UnQtQEY$_iPnm|p5RVdyNPSF+)=jbAC8P{{E#Zt2k`)}`24aFS=a@z`WTw(8c#T*Pe1eNA+!43>43O$p!2BAnjJzaBM!HU z;V>o`)Jx6I%Wie|ur%fTr@Q$5PdD?s zU;g{s14xkDPe0^Qb{&&uG5S?~9rmJ|11+=s{T=tndZ+yK+?YAVrrGHEwZ{d)Y^Ify z$M<&$k~A{g8`NSzn$v)sP#0*3zMe_1zJGz>XL*d4_%vEkKyuU>2bj*#1^J>DMYd9| zNUqaWvOM9)4jgibe7yGc^O~32qF76BJ$vFfYd>7f zXAkdh4)?dO?{05zbEg@-8I^zgcQ4tMKvT=!+=e$~Stp*ndjI3={d~4|i0%*^G0Tg%}9@I$7E6hhW4u+%hKu1F__Rww?j@0_01+nw@xJ|BSL>urBfZXU8lKJtg! ze04oj+f_k6*F~h!RHsZR+x=<_8Sumb$J%yN&ZJRjfN&TR0M-Vs1^~HQWm}sjJ%OIN zm5>AO^hGZXcK9MXmyN3`%Wt8h8_7P_=+rvc3Yu&-CfRtmv#jEI)!1`rE1REw*^F1* z?`=ybOm)022t2})QLW@acnX$7!5$W#vGnUpePQHz{Z2R}!qGMshuaJt*o34?r!@Z4 z;{@^1G2TzF@|aRiLshjFZ?}Pgd&Ckuotok_deJTp$!Q?IG3!HHoCJej@q2OV4~1HX ztP$9k(rM4{*%otCnHbSAtqJzrn`Jn=op=nwi*hT5JCurCYnXn_7q(D!jT3>^-6~2C z6B_HA?e1{B%5SHaUC*q3^ZREnnkh%aSZ_q*$Da;&*VDz!LYQ}*E5p?18ML}5{VJSS z&ZI<8wzI&hbR{^0@b0VR4u1MWLIFmuC)tROR=tU}a+BgAMVB`-Uw@nvpUX$i_5Iyp zGwbqx5L@8Gy12iaN9^CgXbvK?XN-B<(rq+($FQMKl1S~0th3WDP(>@anF?5s82cBS zWBKI8^oL1ry`=Y|zdg7u+|`NAbC-TIvJ1OAL>A`F7l*ZrmYe0o=nymp;riVVZ&%0F z)=)zHL%6TUZ%k@_|Geps<QyWH)}P@TLKgcrk9Jh_jxIMzhwf)nbvTg=1wQ54iPCQ~YA0juLj+)~2?yzjfWDKqhK zjuL)z_vXj@eb_9YUP6}cHBK&s4(Uk${ik%kxqrQmd_v` ztNS~;AO__&cNIz)T>JryJ^V)0%V#&QX_mCgJ!Aj+aUJMQ!ef|jU*AneP?J$H?WR$R zqfT@-KC%mljm1K{iaOX7N6}E=Qmg{$BCe~G>qZ0$t;)0t7m#(wellZy*y}Z4p46ql zu3nf7JW&LW`tJWb={VZ*ZsCDQBEQY~Sz|1~Q^cXBp-Ikaw_rgShont{#b(5Aug6c) zggwc}oYU1srC3uG^rp^gGorD~$x14N^-w$QTGxxI`PuXP)#BZUj|uzL9161&j1X+H zX|bY!onqe}k2x@^wJuBHaj$p*ib5GrNmi(n;RP{DqfI3qfGf`4Z@wxp>VjK2lo|@O zpAf+d;23D2`(^C*)RaZ4>TodhCl-g8P3}Uv0@z`BO84S?;G*3<`sZ2nKYE&17KYi! zKhIkPEJseafnR1kzWlmC{NehSyExqc^lm;098U<@i^kVHfVE(rU$iTqJ3oE8+h?n7 zH0tYXn1EQ?WMl0OfCXs)q#hnQN^oG#a#DAeS(9KOOxCvxXUx)u$T|-zBE!pIv$2-! zvWcx78DvM`hR${#aVy(EE3&!H^XfC|S4YXzSuHU=y5RUn4dzi-mu)`892k0+-P#K^ z@$6~axHXn*67XY;eSihQ5HtxdgS~1qWe17^6fTR13M3LPFxj#dL2u$2x0vz_#8+Ql z9dmH$@;JYuWHm##bae);7f6{d=GpKlnhKcFKmPD|y_g0#39#zoVt2JxyFVIRWSbDW zU@WV&;)Rb%uZh=k6fP&{orXQAwu+YnGLp<78KN-w!N0=qPN5>ir?y+iU{H#5r? z?U`2XgAdRilTyonxSOw+h#wq6S7<>KBQ!jB<#)?f`Qc&B?;{AOYFW{fcNr_A_<(|l zCFso$n+zt2ua9x_)P zbeWuiNl+nQ8>4jYG`DN5^6Elb`rOGnM<#8x(8imH3{USe13^#1nPp<1bsh+GI9vvG zXQ&@tcNVPbkYq==0+#o>Z^Scp$Z;o7>F}Fn4sw z6A+x#+pbQVaQ)3I3bH|77{*<4qdNg#b_q(`@wLz2N2m$<>fr$D+c}C&mL! z4VFc}A4{6hP`l4gu9|JpV1YIm9%qu_aXi*67uxWIwdzT|2mV)PspZ2`;fF8~xRNkO zh!vT-7Ip)90)UWe2rzSrf3@JL~o^h4JB{kP}kv;XPkTcCE>nZyn{Rax`S zpFA7z5nkW?e6Z@$Y(14!)`lD62+B8S%DHR?C~~GYp#PCg4Tr=1BnbyCJy@#A2kw|1 z#zXKU6#AH42g5EjcS@DB4L`(ix622HH`nbue*ZcF+u4rnatA0M`XG z-(WMHz1ew#Qg6EA8`>;z-W$kmJQvJlXyNGgVhLkX;tUVs&$QWI8zedgDoqIzIM*6tqKeIVYcmO2!6*!~cayc(={VRwxs*0~-hEC^4EgAa~Qd zd{HfzJ7|0LyDW@AH$mz@wu_F>Rx)9-F?30) zM2f6&FRk>|u_v+Z2ZpTpiIpEFCW5Z+#eet~z{rHZCi;+}y5J&udR~<*f_TZ@?5Z_d z{^2zQGN8f6o~eP}Y{;^iY#^i88N}j@$uk9n>=dd4Y#n=Ze=mOi+p-1Q0?HSYz-$=} zuy6%_+uWu)pSc-s1m~zg?}?ji(5*bDRd1O9jAaM0Aw^B0u3|xPtclU)VvwcCR-^I6 z0LW1s`go0up9||SGM#3~l(}s`BvT-D? zHVA@D%+Y~OJD08(y-LqY9|^L#X!x0^t^Q4l8ySdZqdG*O$jYFJ|f{6q1JG zD^2`)+i^T$}tSGhc+Tc<@QUxu~yMyeo>S!;d}+OxQ*4E!XO|&C$#+SmPTY0 zjPY1a{_xf+%7b$6fBZFn@ey4S0DHP`Y$s`+JE4rF+ysTDLWx;y9`Z@*w#D5R^!;q2 z&o=YB**MN0_lv`dh4Ainlg-o6_hYvM0;%+>S}H-X3sqyDgH)!|ah#ns8lHwV%IpCg zSMhNv+{R6f7YxhUn>N19?gmPv_!sOoNkDr zqfuA7s)wJDJ>W=2HDGj5C?lgi@=sY^+dj-yXhIGqu$Wx{^xr8PH4ZLzjIyg+13*x% zVv;y*wkq}D-J3uB;eiK0zTDZI0fw4`Q1#$t4NQKXp8>$)to&&%baHg>CR_!2^A zINzqY+($7jG>zX=zf`U1v@1z^b%xNk0~IpK7@i6zKZBodVj1)gN5jcFPT7wpUavmX z#sBhawiA|R2kVL4zK|kC$Tqe+rD6vh+)Ve2v1adoyaQ1*n(GaqauXz<`Spi4?;f#l zefa4G({aWFnxpYmt#PGq zyLS&C7{W2c%E%UPZs^1ML>Rj=>{}CO08(Y>1M4FLBk^3(i@5KK0cc*+1Ax}k01aXu z4_ujBAau0i??3m&$Ln;t)_9^G(Uzd2ActTRI_||tl+UMryp56eFjLZo;iy)36`}W~l!|RR zpzRp@9`~s_Vzti547a@N%Y*4GyW2-&RYG|*S=eLMd!T30dv-ag}%b z^zAQqzBkEoLylJWKP2!dCTr3Ii@V(~oxDXgvf zO0V{-&#nsPXW#$t-<^K;;#dFqdFiZLDb|}!ZU}XuRw|xe)p}%MO0WBLAjsYef;t8{-f#~4vXz!AJ1>l z-i{X2I3UbSzgPe-Fki}3Ui@`2z>Wx9l4;nX~oIu z{CdLae!yuO9yz|DalA6?Ui-Js`}@7$f!1xO_JB%A@IEDyJ;dNe+Kr%(A1qUwG~lkLx^}-0!^Vi%PN703rg6cs8YtDKG!=ZOd8eGJ9m6 zs*>za!68xGfGxQp#!XU(_wqKZ$u39#|~Dweyzh%x{ve%LuOwOIO%||LMXM# z{UMboum+?Eh%W24$hl27W4YtTRnPzJ?_NBwR=Uj&(HACm$vOq@K3XB?WLULX%_FG| ztI?jo{fO;+LM$Al3nggLXr6Q>FrO{eA(7%+8s>!T`tH*jT#``#?upcISk`LU?OMa> zKi)7(VtS$Uh2x(e3l-G8s}3@+>znLYfI3pD{CkrAxS#o@5R;0aM2rVY;qShA+3Z|g z^`=v)d2(9kKFeU2%L%jRvj%BmgwVRe3Sb0CSQkes%0v8)T(jx^>oj#unNDAtnM$;< zJA&bgHJ3s~t>8rY-Oc{BbKcyn$K%@wqMy;_!BKftZWoJ#z-gNZqF-G$l$3K>MqFpL z_b$c#f_OG_#AE+xor99Po%o#l!t`M|dHm^*fBv^$e*EciHOqeZ%Rl{j*j zq#eV-@#rV>41@|2^!qK@gNQO}F)uj%{KYq4KSA3iW6o(7&tKN*8lu^a)=M=+O0{Q1 z!leUfpUp?J5NZu?TD(-F&c*09b`wjm z$yGN?g&OZcj-|Cmi*2aXX%`BmdasTo9V$N2dUAT?aAi(-SjnR6w+U)z8nmN^xTF&{ zUc9@Xr~-^(ZWOwNh>c5?d|656?Q-$lgbeOwA16)ZvT)r;TC>t9oRpf+ziZZBeAm>w z6qlFR*97KZ;hv9fz()mkkGk-&@>~vBb{%^!I1!BinW)DecpX5~x~I*GS?g7U`iYsF^?`Ofvk0>(h~VM0N*w zkIj_$(Ab;>98K-Y(-u`=xDUKguzw9@@c8xi@a$QOLvOt)2zu*xuL#4&h-GldA|ss;_JiPNi4D8ITYmO9mMPM-a?awcbud*A&~w__!RdIVbb8 zmpr#x!*=`p$%*9lZ5T5QnDscam`wsCv}l-Jw2UNF+n2{j*BB>XZ!mCN}c5uoeI!Rg^P@qb4TY>T`uL9ijlf{e=csQDs`_Dv zwBD74@opPaH-VH6mv0&zFE}(q#2l;e9!~CUG&wA>>o=v8?->G#-)^UJ@L#w(P_ zWIT>Uq_fQ!^bC49XOSeJqwo{%chiv+<>r7oWI_THhE7ItR7%z>B$<5BNqVI-UZ#h4 zZ}Z(Gcz9gqtoq~SG+A&FD7UR?(4W2E>brYpisg$d*+&RH}_W0%ve?KJ(SbLOM zHwS=ND9tJWK*l{6>W~t9a+f~0lji?;|MlNCcadf^mBsaSRIc&xwjiSQ>jTza*&y$o9uYLl0?$rDeVp0ND|fPk=oK>Ua^b76He`6g zs*B^3AXhuHt<_gazE^>aYE&Cnww@lv=O#<`ILz0UJp+CPV}qXsdye&C%8brXb@Gw} zrC%c#>PNHt!`EZVK*( z(m(mCvW8u2GMWy8*(_W>Y+`=h%nPs|kZ|t`^#*!kfT7JM5gbQu43@KcT>rW|6Du(27R&29xwY z8U{|}BW7~WBxlgqZq}(0kBBj6hVIgfoWg=!LMWovLu{=kef(J(5Gdi%i^G5aJi!34+J+` zfFQBlUS+cJ$-IMtuygo1wQq_t-_pkO_Fd3yT-5D|ObL_GnU}}(H8HYb))f^mpH8mP zoy*CO3xBoX$Ci>9S*@A))cPD4hwZA)gxm8LbYw9W6uMw)sVGM&gAhac*_I0+{5DJdElEhFvtbRFk;oK1L<YAvu5 z^kSj~pSsv=+gZ9?;`e5~%^NCmE`IZOg5~STDE&c$DSv=sV!0WiP7l`0X-LEz3q5cq zt%0zBhpN=6B~xR}Ty;68i0U)kn5ELSJkJwxuozMWb5ZJv*n{(!g^ z_0418Nun13VghipXjwkZddWKGS`}Tcy*NLquohYZCmTu^C+FuK_~iz>Xu_Y-(t*D& z^WF5jgLT+eBr7xPRV{NtN|A+t=;|+WZTvB6agYP?-@G{Q$naDtSH>Ov+N>mhx;L~O zfK(7tvkaA9so}NCaXd-4`*~ZudRn3+3aF5>7gROJCSb{W>+;2RZsp5#wF)Px3n&_rLUjuz0k^;DE=<-B$@K8!-Rd1C$RlOWvqf{YT6j8C z?fEtsX6kp}(E^~C*)54~x_}Uf!Ytr#$N`V#KWKKBA`76sf$ad=m@j7&gT#B7k$PwM z>FvhswH!)ydaLl&-~6@_PR@SA>q#tgSsM;&3fAOJMkJXUG-5*44NTW)wrf>#!z^Qm zpps@Y-2tOIHLub~lHgQPaYvPPteHYt9FE8VW1u8uMj0u&TVq9P5L~C^1lW~3f1}LS zHN-?u)EHzc*)Ortas#@sB6RX#eiPz`trVK|i<%!=08`K>2UGk$`as{T{C<;sHQ%T> zVJInbVUgSo0UF25=7U$IXjo)|JTSY0*5ab?cPqHC%y2bjWD&R9K8i#CQV^1{O@fj6Cc?BzvPm)k~mfO{s&|epZ&Sc9hgbi7*`{G4OPzu#nL+)Q$U?MH4 z-!C^!7~aJm({fL!Vc^Kj(Qa?|05R!vzbgX#0D$Lq&vC$b#K(9!w!J*khhsK-sH|OX zCteq1G*y9v`;G3-i`?*hfKODrMpg(ZYp(Dt2=O3ixgi~TN9~d2X}nYgXI>r zy-PqF(WukM9yf^BakjeqH2cjzluo{qJxXWWWjdkVDm&vv*sUR{h#ZrG{I?vtY%GX#^PCN(+VHF`2tMvaXHB65Q(Zp+YhhejAVYa+yuj4Zi&dfEtZ zYb)okE()Ljs)hWIAs$c^4h?)|D6{Ct01_GVXsOy!r%k*`7EapW`P!JXU2*dIr(YuO zE~7yc*J1}wt${0s_`T>Zx7$7H1&B(bKX-d}15!x1koLh8I(+>2*5PEbcGdlYDc@$}f5=-cAU zrwxF+1w!^xt5)L`&F^Ho6%+`+dwg+Kb-`B{i7!%XamHlh2+O3-vy42BcL} zGB$<*f!c&<$&6o-_?a3GxT}7-F}$cEec#RrrskWNKL9sMr%`9p%nCLT~$j$$J)*R@X0X7-Bu_R#a83l z?@q*-S#NfvV6o!jd%K$ZRp!#M%0;S5i}L(=`{KM}Q-CtPySKguccF}M&g#t**;yXk z{-|9OMpC_J$4W;Vl%5HIiy89qi8~vZ9W(S{iiTr4q-=XEGgCV>YK(T-@)(_?hUoGN zkQ)>7k95~n*O)!LnNpM~Rdun^#VLWkd2F)GeD(G7dc6t^PPXOJH=@@Y^sLMtQ)@Hn z*m1|IAVC+Ee5|b=?+#Npz;G~-ykt7tafck?IPMYn@q92}k1=QRJBfszgO}m>L^yuQ1EXS26bpIrpao_jUOjO>WjyQlN)Qv=8*>@a+R|`{;>GSLJioZak?M$*Myt)Doo<)n z67dvXo>#@vi)It@TU+52(CTq_3k{ix8fU%s({EnL+LN#AZMk<+ zJ6EPK;OoZPgq1MiZ){kEl0cPcAY@2D0_t3NeIquTDpWJ9k^Dz1LGBFQK3q-Wqs6K=M5g}-y&-puOm7) z{Z_LtkF&{}ckg#&ex|0*EtXZTeEE63dpwe=ZbA|>ez(7WJ9iBdTx=+8Td?mQ-yHy+ z)&?z*Dw><{(B4riK%TC`Go zXu3PBmQNX|nl5grUL6uH6q1rXUv1d850Cz_s~4wd-+$|9rziFPC{lYsKAD>tKwd)# z!zll56B@UG7kL|b^`dz7?YGrY<;p^%by;lohS_*NY{FfPbO+B}J0joKcReDC1{ss_ zP&)p&+dWooqQjXa?)TJpALX9wb=^beEl`HrJQsVODnaw@@>*L z{@`hu9n_#BTix7waoVdlv+a6(g!zyASUAl7_n-f&Bs?kf%GJI!koy-^nHLazR>q{q z+h~sjV~-6TyA8&PGS3K;6fxU&sl|UNeXbE*f5NeFd1aw^LKlDB?77bi{uqUDp>^ci zCx}L8H#-}-(d6jsm_(z_%c7iMM@en+scj|(Cjan`(YqAg<52z8Z~hhvfUXE_Zl&8S zAowldMDjrBtQX5U9U$MIr}Ogv@K=`|C7F#0?Qkt(yg!b{Izz}zyeK02m~0ngb(lt4 zkw9^`4o;3V(<)t339~boDS)(vmUX4A5 z_Bfne!<$YNSuShi;b(vS<#)B$T74+F^i|*Q@jp0gM?)7F>YUJ8GV89Ys8(B}#UT+? zxExe|Mw_Kp!OY~ihqu>@#~nH{OR)0EBqZ17c1a5`^@en=#a_9=u_@qAXJcX&#vCD} zsasWd8Hsyp8>o33jb>R4AZWoH3Bluf z=8%I!zo~Pk7nte*HaOzs=_p~a;F82KNsYA*-Usb4t}und>$99`XBEBQZmR$1{)=bo z&6II)MeHf;yJecox3=vV_%`Fq#5?SnUT%yjqS;hm{bvBTn+0<;>~M zGU*(kuHGpWD|~Y_gg3_X4o>L)aWJ5pjpkQ>`$eVE^_W<^dfH~cWf7~+mbdZldYm0s zBzPzihR~w~f2nR~>(18$H%WySHNNGHq<=Oz>1BMl$aH+$z~7-b!v@fnAw-B|UaMjz zZuJJ##YlW8#tf1?;{#$VK4WC-_;T+t*~}N<6eC9(K-5w+q1rBYBGjs^tY$`pI!@_C ztT176srJjl`HNSd{r1<5^$&NrnVG#+hND*dRpI1|lV`vC&F7VJlkaz4{861^VFd&uXgvqn4ohxFqE-3Ab)AN_jNEB}V+cnfc(QJVc-tAYw3u1VY4Tdpe z*B-|MBk8vRcqNRw49$~BZc8QGmga)DkiF4SFbZZ4XXdseg z9}YSa({Nd%9&FZ~NE!j$0THH|D*iXtBfO}_zNG^Gr-!fho4DVdsbwCn$GendhB@B_ z1o&`HRnF?o({FxVYPpY(*~D*aCi2E+vCwIL@vE=-6%zsMv@ZY)c~Odaqdo-NMYNcs zDce&Eiu3@9DWi0y(S!D9_lCsV42Lgvnp*mLYf6Yj=VHThmT-Xk%Xj?_sck0$8}GgU zuMhLETPP2}67ehmV(MC4-etw0nKI+3ZhIzk5lG3rehXhVFl{ARnRZ(&U(+BU>@^|& z7&aTuo(W@p~z8IAT;vrp8!soBN=CJ&jd zNG%6$Nr}giVW5eT;9kN2r@Rr**l4l12r-cfy{i%*qwL2;`Z_g7oB4WSZ+_g(V;0X^ ztKRN=pr5FML&>t$JRc}IVUFTS;p8cXn7(i+gZQ$hN~zMIO+hq^8L`GPFAc4BljOFd z4XNxxDmki6>Qq=&j;!beSlJ37Px~FFT)TDR;1gYCJ}urwNqb)y-mNA#36(brwIbFKIX0nb+H3qoJ^35Oq<(H2;y{tI4 zJ!agZNydHkTWiwCl10vu(z(II5_USMMAxKD4E&QH6+AF-EmDU+?QA0ZX4{)5LX))y zQ-9S+j)hSo+Ju0Gsys$O4FqJ{A*zm~$ zPCmIO#lgt$6PrE)*lefSz1>xN?atz6e|wlZJha)X1S7Nj`=X(@TULm_73j){PjT7g zAD3V2&AHez)@vdti&bD=av1k9Tv@o;eV}ntu=2g1?|0Yx`@0ypnXlLD-k_)wzI{nC z(Jfaf&kn^ZfD;Rvf2~FSnl@<|9QR}@4CD+=SHICoLeYx}a%-smN@sX-`oms1Sp!7m zp`#IT2hV5P{%X$^L+g|+hYtk57Dn{;;AK0!dR{g8XgThTdHZCE#*UO4yJ48NhMUmP zw}V-f9P3hQ%UbN;yqmeKjE5-ws7=88R)~=>|K=Aa_OSuTeQmejlB62Bs^wL_KW|~f z_4&SdqPI?s4l&XZf79OEtqypUq5Vw;?%8ryte8?g+--O&_pcAAA5Ci!z<2K#$q`tf z#D~2964X@S`5A>IAqn-6&Jq>&n9Ax9nK-%RUcYwy@HhBTRW)|w^v8>JVxhKu%x2Pf zf>UA;*)tPwdNTB0~8t7XxZUk+yNq$^xp~V6kT)C24(SId@?+_RmV9 z)x4|@s~6>B70df-x11e;g#-sDV?M>QH|#ubu#e;e1q>iLc;!L~J4dfml2aE_JEME9 z31fVVs^!vYHYt)asc$#wdAZjMYHH}6jLO+ro#vpwAu{XOBA-e{2RG}n^TSRMxQ;5- zw46QE13$3QXl{0ApZ)s9d67;OeVF}rw~c6MaYgF&_1R*!3RkHd;H0p+#73_V@pcZL zG+`?<9JGagpEfQMOuQ_3Jsqwg0QUz3KuGjJtG0(-O)O)i-(acJ?b{WA_)7hoK^6=u z>V8zD`JPS}Q{SJg`Tyyw+t*7Y+GWd7isu0zA}%Y@NM!}eJ4nrVe=Y9cvUE21ayOgY zJ40*4X_fg$Fdl0d$Y@ic4j)_;d$mdx01Q=l7RfGT;(nKjLBj1_7P?)b(ho;g((ixv zWnzimbo1~4OP6m*3?LYgsqW<7?0zI*Ut_<-2q7NHt@QPR?#+5B6<_G>XJpU6{Orpo zbz?ML?-rTs-0o-;VkIG0j2W$$Jw*M!1FgUgbD3FAc{Ger~s zvh`y9<#{>=jUJ|;@pZz>u~q3OCbTG&ZtQ{s_R+k!x)lXe;Bx0Xvzz-VM~7~^I{ozi zCWIe!yVYKo{^7H)UUqo}N2|NL{g&`ImuoKL#~H7ctPORu=6I#qv;D&Za3#`mCb9Hm zXIy3+N_3>%93NRKz`GzBvmLRhw_d0&ZgC$oN~7#E0>@Lg_sid$GNDuuHP+2escQ1; zo8nTJsn_)iLUs$oTlUhKu5TZ`rbZQ|J#?nG=6QDQlV$_64*#!PD4dsTrFNszE<3vHav4NF9;D;NS^>5xLBmNWX?i7RnqaxX z+k+MKJ8}PPz&rrE8lh{xpS?kb8nxdL$=i(w)4R;<^>GC%X42`RUMN;MFKm%&kMt<* znN!c?$YL=L_BRVG*=Qpd_bL58i=HCUO`}-@q|6Au3rmqfrqlr6MZ>fQC7o3fL9@kS zayP2!k)RA~r!6VkEG9|H`T#>MA&?O7qzCqZPsSK^+1t0vNsgrrE$42n=8OHOuA5bV z^Q&(fgVtc2?_s{?j->e+)+Ih9rsD)^e21jHhwf>)fA>R%Vk8=gJXsn5vZnlxr3UGs zD9vUgiYrI_AYex*=0g;umeyCxZJwxzI$21I^=A#M%cZG&DS5()GLOW5VD~-VAid_( zFFLp1>YY|P6<`yvTGIFa*w zb)ahC<@?(meF7TvJ|m-$F1C@5I5#W~#G$-!L~nJ#pJsy^VimiqePndI^kssC6H&@g z(Hac|E@TL6zk7!1tdBtUt$|LlQLR&RsJ&=8*cXp%YPxvzQfim2i_;>%@puZGN4k6} z(C(9&Xt%X^GxC@G`d0X5?r!%6xLvS7!x=)*C|*k1+j4el!{|gkVTZd$P-T-Kw9 zpKrtMTU+xPWm(!{zfJ0|+F~K;y--|M)C07od8*?$75 zUhg-n?SkAKo#&DHG666>xUDPpaC^2b@II`pY43IK&9auUjRvjh~l3_KK ztywdoM$KRkv&0cq7p`8GzdIM@PPuXQ|8w-FO|F}1dgd>gm>4_4;|Y7*i>s?zRZ^9t zqocEBp4^lB27(|!tOP(}AxIG5zBBi;YOO9uSGWDa4u77%HW&L#M@5%PI?5!0_kEuG zzAgxtfFuI5$&yiG*?#^ub4D?tk^|gQzNiyK;-!f2q2CGD<1q;uXSmwGzuj2{Nao;H zcnhdDUMqiqEiHhU-c~RP23_4=7?oPS)>LUno##*Az)I_erZJ;sSELCC?a@>L@Z`?f z=_PG@&{I(_S-`W_?>^kF_j@X-%$A}}%Jvk|745GVmk0axRe_6f<)S9>#)Wex(sphK z!^Qn(#gKT_yIF*UM@P|i%F1^=3WAg4W_yt$T%5tG#7!Ix6ReknJ4@}QR(o6O)vKfv zz%N7jKeQ+*iNE`B6UZzL9Zyqakae+nV$Vm+VsR%lYUb_(BWU{Atya4e&(X^D0Ab!Z z71H^ES-oV&FxuUxkhX3L8d=H!Q2o&^2n%Wa}AH5>ZPKygztb&!L%cw zvewi}5zMeqZ7S!-c{y(w6S*VDA&0* zbJiRV%kpFe4H@iYw`YwoceYyiUtNUf)$82#+l*o<7k$6VguhPMX(3#X4MJDlQ$5{bqDE+%yJyYnpysJvN8jlI0 z*-fZIGzT$3>2=lR@WZH>s~LSV+Qm9JeKL%{yh~Hw+$qI#ZX)3@?GJYQ?nRYnYwQ*> zp60+vo^@K`e4XylThZ&?-Q3OqNiiA5;))(q<@ASw%J3IMC?i%BcRN@E2W+_tB@J|a zpjSA3Bkg9@>8n|y_0@CLIl68X^lYhvO0is|aNZCkdi0H~Y;$}bL1Bg(%-`2!)UNXI z?KO<4O}#*6T8Ct5H-fp7jyuL^M2dPiWSFQ{)$s%*P@|Ns6N#oge){HZHKvA$&R;?NbK;K*fZ_tVo@ zq(wbwT?o)=@#j2@t=#w5Vh)2rqnqlj4`W0h28Owqs;O1bLd}Qmi=fKf=TL2G~+O2 zEGH9a^@GU3q(;#Y;0ktHhuK9q;XF=Glp7(-Tq(oh;}C^twff8HIB}^+5W}1t8mqjA zbY2P^%*mAx)Aee%30fvq9=32@GJ}Y$;2~4c6)wf@gfclI(aE^q$I^^;z+?hJ>RYtf zy|<}@vr~n7Xye*4tjXALDUtFHY7QfILO^Fa4orhZ|NhU@ZW!GDkXHC`zykl}m#NY$ z{N|gcNZ|w5Rk4wT^NCO>V~!|Si*MdsomRDWlA0|`4JY$t^z`ssSuhyWI~-WE-xm_96Nj!?gxvu3R)7+ zX;{5zytwO1iWK|p$7y1IVj?4;y5b!Uy&j3pRL4U;F8T;t%vdbSfXHwe{cNAm(a zW2`PY&-Jt}Y8mWGc!YJCXc)7KcD&p7r0Z)hjr11!*CgF-)w2ETbb>dE8VBAM#2qaFpY*W&=X<8g4L6n8P{|9>h+t~)v5LD=z8|+l(iNErdcSt)6`H)Rq`l>-fR#x$Z5LdA+fUQ zj%ayep$JpWS>aviacd&jAZUG;=939xzXbr0P`$y`y*d> zhI@d>oF)OBOw(vg_S_6{ccGg$S*YVG_D8`_H>Leb>BU^j4hlZ-C5bA}%5-x}Q{D{2^dib47b+A>p#FO2%&g}-P)k#k#r*f2 zfmN^^`4Dv164l-1%9V zU?8#vme3cMEnZ&jycvL9ZgISclA&(%_nVV3$5Gsg==NyI$NA(TnQ!lb{`uYix%;jd z$Log~ZcS=YwjlXv3QRYhMDaSp07_Me!o&#tzVRLdCjPthg+1P zlZXp!IJ%2>AAh+|dW%7HyB)SJat)d?{xGE@L0nd977JL=bqLQrr}Xm75MGlP%3Pi` ztOoQ~FMoJq8+` zoxOlo+G6|?7Tdpcb`grrx`^nwHZx&5=zMRZLbuys4p=q9){rXku`V1dE z9elkao9yh-ng(hW8m$`MfY*hMna<}U#ep;?RRLxPpB{PKy`J8UKG~^ng50f}J7Xq?|GQPX(ue0p~^CTFDBv_7f*=q*S5De_$!~NqV zUZ|G^jL~G)x*;D-V%-b`pg*9=B_w8BhlQNhwtC&Vj5-KZbiCNlC^g}N&z?7?TcuGh z*93bMi9+uN9G~0Z^$9D4fH(i{0Ays*1pLbm9UHa7ewy{*$+4AeS3t8MkEE&XYBt2i z;c`A105^spl!W~$kHBAlzFpq`CDHtjvt7)7{PZzJU?q!M@$IW`{_Ai5a8k`BFLyg_(9XQo!;)aj-ppzfs(t<9#rcU;_>E>=PqwS^U=>uV zNE+DNVCJ9~cF^ZK4q+#mW}eCyg#dMv^)~wlX2zbcb1$K}WU{9$S)Qr#-iFvD3t!G64$6)8 zq*F1uiFftVfmT+8!09;B)) ziUU#)p`oJnbqh+t;c;ub>os63L8kku9=|>M?)7En)%lA*s$Tu|b7_M00fz6ZuaDFL zn+}@u)Qz|eC`3@&4#yvWZh?(X&|}htjaq^yg7eA{0O)xmx6-M4>5@H^-DWy)2!M!~ zj&B1TP~xdTAPrc(W#=z1ihcrlRb*Lgv_kF8>-tP2i9g@H+by<<|Fl-CHv6AN%r&BA z=@+l7Id^p58h-pdGd;C`;{pkUNCyc~$eN{#U}wJ07f(y>_U;BoPsr0D=;w$o#1nRj z2mBHEfnkKRPIRKfLVPqZHIgpeq+wJkYNdcRqCetxp;QQ4dcEZx+8%QDP@!6tI<~HI z4hRCD4a2Qn=#@vCz^g1%Ce@<(qNj!yQQ4cV{GcDqi}NhkjG!}g#5`N#42VcKmW zqxIe1dc!g>X&*huctJa+oCnJ$=1aww-+cK(cB+?^{7aA@_NdvMph;1JHI}4k0->eu1>FWwdQyalPnr9cS#iEX`$DWq1B+2%2f#Ci^p|OO?RVVs~jR) zPVicAykcy~R+{%fptY%ccZU$LxI+n9_ioN4(S=~v7S}z+Cr41dB!4ob%ZjdiGGzII zw|GQO__8tzg#$**&^)&QCEm!}$z8-eCQMiRNKf&6+lm>D*0&?jawNqChdBLY(zkK= z%C!n!Y_U?xW=M?+K_6<$It4Nblk7ax;yl=&dh+xGe(PeJd&{^VEH?l8({Ra9doyP_ zj1YUe8Cy;|4qBC$Ck?CeIyaqK!g-tvJqUT9)~ouonO%gRVQ`ujYl)9kaO!qwG_Z;!tIJM)Q% z&tHCh+*hh95ye8Os@9|~;oBCLgRUkjCVlp1i8X=AC}zA|&R~#eIsfnwo8m>{&8g(M zFU(Z~E>6E2q-lRNXTWA%oRy363<;B^6;3a|es+D}it)_1`N$wYo5kpDn59EEw-^%Q zi48dsxg^7d^J3vbk&{`yMFk}3a7nQ$6@73wVpQFq^?0~QgXM1JlbmYNK_7$;*w+|I ztjz}r;qq*~zq_A=&@Z_q`*G_J&*Xt@@3vtuy9t-uMIcOu!zm=FHf8g9*iM1U!SN$o z)tOB~yXT2CezgWkzM7;86?fzY>1>k7MyqsH>&A-&xz+6P=>|keAzbe!$Zn=T{=B~V zd8ccf6GWNU(|AE2GWjrl_5A$AlHWWpnM&D}&jj)NFJE3~E>BOZwTiRf^~h}Ez+gvN z$yZv1d`tEEX2l=Sd8)qw%H1qvn$tO@csI~aPJsr`y7mc4kjrX6K6DAt>$>jwX-TS@K<`JD~;A9_oZ{4O;n@i1Pf;H97=ff z=^Zw3sy;GGqjxJE@rgSA{Li0mm($r~x*nTo_9ETv{qn!=$LVVExLO9YpGS4mjs(0~atyxqb*7uX}x^4Ti3tj8lIKN-I=E z-UY)ME|A;D$=xr1ak8Iof<~V1#Ckp6t>^QkoGD#4Yt`22>9g+$WE8t6zdOIW%;ie; ztLpOO*clJ4i!c!?D1;fH3!p8h1{06b)P<`{t$V2vO_1-~anB z6r-YEKR?dbOV`=#84xgR$)nv65}(tb#Ee$>N@fa$N=^*OBPzOH&cM9yV^#^$5$;%j zghjS9u+72bKFo{P$MZO>HaNGA@5dau;OoJ3%uiHZ$e&ah{z)O%Y#S zo`2I0k+~0Hd|9Y5Yb2See9H~9XSA0003G|1h{21+1}UmF4ikO_6Y{d#&&+(6?>2*u zIe-5PeEmVv<6P@nrLzLHf)SUFa-q`hS>a^LilxyoLxgBz`|!b}X0}|8qtzI$vo#33 zuBib+!jXGWx#(zi)Xw%7K9nE-G{00A_rAF{-d zJy{HqY7N(p7=lQl77lj3t6<)6YbCkW5J5HpEY~Yn0%jp8TXCr&gFRphS^h3sRW4p$ zG>22yqy%XZDDgN}+rZ<4<@@{DfGI((OtyunRjX7jpBF()wV{Xb%m|en{jT7vN~xm;H^`^b$)SeeQ_>LkF@oc8sVCF)&MKVDpy; zb8x?&?%%zeld?9O!eVgEa+Jg;OIm6YzJ1Yq98E@cqvgdhm2bIuNO?nD@a<(N80cwk z<|9JV6!%}BNiGF&P6eIR-@o&$?c@Bdx?67o#$lF}FS))_Y!;7-o$eR^@vB#-dAISV zG%x-B`1Q5ef`S``3r>lyLyXTe#gq*XyOxgkNFHz@;R|HGS-c#6J#=UVPswRh4FrFGC^I zqEs>)!?O%ERmy0Cm~iVNVSd%|tis!ixO}(4r(Yu7Z_T zwbzem8Tnat8E%y8-A<#uoVV#0_xW3CT7#(tGTnBocy)A~mH1);f;P++#1bx#9nf^Ee5scpAr3P03}{$t+FB(ReFfS;Hueh+esB-4co|;y+G_*W>d)y~t)Ru3w#8 zy?SwUnk`WPmAD*22N~`+QOAeX!ZLh|$)hSXzhZ(luAWIgA^ z7edW2P&Ts>)HUc}WGYES7Tn<3^W$q3d7?324f8pTpNB_olR{U_Z08EPJtU0=G$~Q3 z*Y)vyGv~K(Rd&XU{Zh$N<>7#cKm;tgoc--@PfM4_EC>0#vP7u?{y#8{sts#AOK021 zkB@VP+EP^mu_@HUm_=BMy3CICLjHm=eoPR90(kKajLM?o_$`&eR!=X;PBI;j`Oyy8 zu?<*~;ffk>Zr3rJZLZ8zI;bw);}uzLC*4WUQOog9V|y|vwb-Ebli}@N(@}1v zG~s)GbGT)2gvZkZi;=mmT%IG&Fc0kjhnJg-!-qO8;@hUc=ZnEUXzWF!k^ zARha_;GVcF^(KcTbA#qk5Xse7UwrW$wxL$5w%M{c*6}d39O=swI12aM8RW890j7pF z0G6r5Pd=+mKx;+5R?QY=1yVgdnS|&}xsdc#fI${&K0@=1WOcyMB_)c(7zmawJL4Ec zXQ#iIy3uB6G+DjRy>8;|KTZbINksasS*pIO`KFME5Z1I2jTW__9xf(}A*Wbw?$m`x zvsAl+)up=<7qn(kjF)$ODK&c7=NA>VO;E_hZmbY(RS*82*+kD1&)hDVw%SIaa(?YL zGmK+P1{`?+hM04oU+(7Xb=YlPH*9~|mo@`p#r50;rl3r*SO9Tup?>2V0_rCy)|mLY zUAC}-x%xOGBvUAqUSFu%Y(wf4=!j&@=b>E8*2=&Cs&amcnK6=;qS&gmuFLgY&c>qR zkh`TF!BcA{&tP3?=8}%;F zu#qy9%HcBth!RX0)Ls7eDlCYG-SE@>$soxtc2DZ;vkZ~h(KfRM= zz9%j+MZF``TjjD?Mq=9x8OxR$J?N~^D4@KHPTT>}l{tD=9wyKV24f#??qIv5VLgs? zK4q8@NSc%PapdUn-F`k*g+ifLIC&d%a_3?j9H&gwH<@*-#vl&U?Rp%?6b9lst*pY; zWyL z-nwRQ+{)LTX z?Ki3wG)no4>vR4wOgT(OfSZsdYkDv0Ide>m-iR*wp|C%--u1HUJGgqoRB47HF{0Adrf#S%>M3M zvDavNTgJi|PHmq(gobWPJ*lvciVPH%zARe|Zl4#emTvm%xz9}-saud}b->A2%~_`) z_ixkNJ6L&0Vbn(MB9E-29i{X^7+dFxgv~7mdoE!0Y&N{x-~l4!*YV@qWk(j@#< z&?8?hUp5((hGsAU7Ta$q*qpS3(nU6iuFhxMIUFicj=PBF?-%O_ zq{D*=T~GJ_`*^*7vMILk$u~_-NpeTNs1_>a0<*qywI-^PJzM#bze~hI9UwH=K6J0H z+4ltoV`e3*MN>5o)cEf4{$VqXOF2mqI02T=zE_9Ab-oqAy{pu~F*VE2cZ*CFhP59z zt~;HpLRJGxnL1?Oj!QbU3&JRl%QX%VB*hs)3k?#>B|#lf(G>+mhFbPa^vf?URpF!& zhBE{>ZN};351WcESFbM2X$N_XpwMa6d2N4rqM}rUZw5R7MYz3~w*>47P;NYE62+XB zJ<64cqGA!wW#3-v?qmi(UoI8e4Cid%D>N~w&^c~*7W)097pBP8bJsQEPdcneK6SOr zyr{8)1w9q3IU{yT&O`0h<2*00)vbN~r_yHg{$mR3PlN3#xDPQ}R;Yo#CI%dEZejLoXYXbmfY`g-KM^q9jqn4-Z><`XFe~a~+8{gh2$;(R*Z7K<;mDaDpU0 zY@*e}7{LZvK$W$dP$`GJ5 z_kzT0(*=BkQviD-nkKyUB*_m3f_glXYdU}%4jptnO7;A?I#F^kukJ=wem9-K-~~90 zVzDS(WEw1pLFE$77bVoYV2!=%g)oXM1vHw$=7)vtsfWOJr=FoMEYuLQx`;yZ#}^Q7mg+@SV_tx{&t~KGHgeROQAoD|6%GINxk)nzIg|DwC{KB*HVM=SJ&T zvYf^d&x;&{vSzU}{Kqd^W4N(FJoS15$ZeChJdB9$B|^WWSWXgk1_?od{kxmn4SHl^ zBQ{*upfGUey%EigW<(nMKx$EDS)T`Hlb($gCr^=0Rk=Qhr1P8eb z0tG8}C75^VX8(Snie#=je3imJMQYUODIH&GnEWg?J%8!7!?ow!t<>7tCF8b7CnKI+ z=T6VE0$~QYYG8?xy0KRQ8V@~mkh)N|x#X|jZKivh`DjNg(Y^2>AOi?fgo^@gw_4LQ za_41)_iFL-=Mk<|V zxo_7S;lM@CUAKEu2@?-g2wknPU{PeFepxf^jzdaGtu=+hC4V9>cVmE^c-}wn2ER_f7Fqs=v3OGSy%?bSa_;$R!k7GpjwmW_*Uw#<5 z$$G2hIE6U9ngH<3F(_S~;%+b2GDTXak{|AGv;X;TzIZ9ZvJ?55U|u1ROcSnJYgX%G zsaWUqN&3d_fqvBM6nE?ZnMeEn=blM*O02Z~R2KLp^?R>gb2E#J&9r}}~hcS^?n9gVxuq)|sxWjVdcYSbpr*&_*B zj{quYY=r1RCkM1b54hF9xzapmAzxe-*(3P<#n1E7o9BN#(T!TZ-0ZL<8rl_E&Yf2I zpjJ#`a6pfBk^Qn%{{GTUg=!MQeY80l^#>y(FYEGVLGwK41mFLzt7r1XA~T!HmlWL7 z$J$TED+S?t$P2ypIEtE@#6CP=4M7hbuwJYMZI=tlSfwm#j!Ji!2+5HVNSc!Y-H&3Hl@M-qyF_tM(;|w3>oa{?Q}cV z=o|ihUoVKmh=gL#C)p^gv-y@q#kuk3cb!(IK&*~4 z;EM}A*>9shiB6nziZ<`nq)O9rz~ITAslH)S!63Al)4MUk}m$fy<7!WpQV z{F^tmdb4}-50~k_A^5rKFsxJV>f?v4GUL<$#j6aC5J7SI9?tvRtHxl6Jx#-@QBW3> z&9GAI4q1GoR>c#C-GMb`x0}D@`j#H-w}4n_O5K}``Rch0W@m#! zdkL`<6bGVL!-3brCl-2sBs;s6V&2~b^?&%P*>NKEtXBWlpHbEi;}0KtLYCMsxmE(6 zm>oL}v)TYVG8%7b$^%`&)DSK9Py2Kl@_0fmRw2wDFP?tFEL`R5z-+y7c}-Y0TV-=S z!=}Kf?@}4<9?}7M`0lK&-9652!Cgn4c-$c-p7x|NHw-0NEY_=mGtjQ1k0@+|{XAGr zTXkPz{Ah=~@swIVX98hy<_YJNs`>Qk{?l6YCUA6BMpygR6{qAH?%$v$`1^-VOf@5S znLR7`47#(gt0TT2t^VDt3%x?CAibl!%6FVP1#w&Oe%PZ|w&CAQCLxv8NnXT4}Wrh1a+dTsAAii}; z=gTL(J%*r+;bPoNSBDK9c&AP^ir@+Z?~Hr?f@UgcLmCbICmwJ?JY2TR*Vh=Z2nyCq zb%a#BETdN786ZyLm{n}zA5<+A8ZS0Ai4JGdm)ORXf?rTjl#GcJOw z>IY=+Lb%ncNJEfQ;^)6C&jn8gC_PMLO{hc3PL!P7B|p5~J$WL6ZGABt#2mM!i+q{l zI19BN#u%7nK8ITsW4uoE?j$ zSKqxoQs*~>z-X!(axGsu`SuSla{z)H{7AbLK-g}hoo!r{8;wR)ESF@dAk?n1j4QD< z$?j^=5l_xFw%$qGxc=Q4%~jDtW(ql{FJieQ9F1Thq^0H)fD;TCvU0t8-AsDsV8oBQ z@566z2mMMx_L6wq->v|^4(4u_8<`ff`vjucJ|j_<`htcTC47bvLrf_gO4mWa3k7E@6Qu=e1HISXjs_&E*@j{ zRKYNo^9m(bl_9QP=N3W?oX0G;5FpeIT*0-b-$Bp^fO<+$41X7-Y=beM-zdB~uhfBT zv`y9P5!n>^^3{u1H8>6R63xs0bUo?dzal9i!pUzj_$yvYP$pzeCDlv@ZJC@YjpxYL zdO?SE$?8zij*&ZA=kTT*S?Qt7m_5CiiRC^LmCS=6-L^lwpA^471KiYQPd4zDlwyT&6$iYTx^m_!b5%_jkuR0h$$l~RlK3$0Q0Snby&ly#kWwgw*Vn& z77RgBO4;-0Z^;TETy(&I^8#WPhdUiTZV&G-eJeJjhElS+tO${JD3q~1KaDV&a#^!f zS1wj_Wl>Hdv5?I+@WU`0M>OPxI(|Q@*Cz2^k;N%1RR_)>L5z%Nkc>@^EE3syUCj!~qkB%!##k6lej}{Dc)~i;>xx;b zn-ZlhwhBo~5DPj08#Tfqr3M`>`Xzv*sDI;FbJ6@rCXqAFNHa`yYA?JzsrlP99YmYJ zGSBl;cTO{gVp>cYlBRD>uN~(b`OG!&B$VpZYjLKGAJ!qRzqW5FhLXRgAuc*eTUJmQ z^L_*`r0Hp|)~Kd^Q4bf`>{un|-o79OD<{ZF!a8uc8PiH1rrXC~=Srg>UH$P~ z5U_@jcwqna@N{<@Ab@0na>%J4)}mpsc(+RifnCDB0_bcG?{r1M`myij`G~uxoPnF4FDg?ajMY$;?pb3hu4Jgc1VW!Xr9GJwZ_~!+8&?5&uD$+kWudyLEW!;IqLD;I-iF@7M z#P9DG4^L=}SNygI|9cM-3I;vMEy7Ie53|5fq>gpYZ>Vx|BFyf2IY`l3MfCUe_Z6yh zd~8=L5ucV($JLIsnn|H#g7!=YgjgFb-0cGAdXsRt9~}t3o%)s7jbW_Q!)c2rWmd&p z514ei{53+G@V9_OtSnWI-&Rch(6vF#d%K&{8Me3>646E@T$RDL*OW%1>j=;@{KRRB z>{PnYfrIUP3`E_ws|ze%B~EH>#%|%dkKTK>p{2fFFXnf@{P%a$v{G;!b2yF+7K78} zezBa!DQc$4*6~NHG1VxtCs62mtErRuyS$mV~=F;h-ehbQaRsj5Ac2H zrZWoEQVIJIk&+PB4>p4GC9Y5kt~XD2+x_k1?ZeOSBbwXX$8l$nXc=hMEH-Nn59B^y z(a0Xo?edpz&fi>!&3v}ZGTCyw{UDp;5ul2Cviq=|Oo*$Q*UCp>&<+b)N?o|WFhnY_l?EpUzRq5kEA0dTN$kO)s>YF z+4~eu8XXPYpA8qu?^>+*0Z3K2a)@S|0=?1gc_0PI2^&CZbggKtC&~PNV@RE7K;Vc; zsST*IqgIe_PdD>)5wvR0zP&d48V2+GpZ@$1*htb_$j0Epw}gQ4AR zm%o4h0xgf@&4>Fn&Lc`HORJ@ElZ7x$Oi81Y-$h)R+}xnJxL0O`1^Ni z`*t?o&)54U(4%V8TTx16?wj>SHN(ViO1CqgNAh=C6yLl$t(8@?aDJMvRztTe>BXaK z(5Ony>q?D$TsZ>t)kUB~HQaTR$vQTcJv*6_yt}=BpZepQ|M4+_1+`3NjAW&kNXa{W zhowGp;zoivt3xE(``c%klhaZaAvqorl&lO#!8~N-Yi*j&9~Q=mI?VsF;FbtTi^_Pp z>bEsqEfjNXL|T?k(;Z2tVwvq&DoCxuSsg#4!(iL?scsV=0Oreck@;+=7|w?ew~Lj9 zMlt0l4DSZKATAZWlwBFq%*Om~?_UpIj-Bo0{5Z2cFAw4CBo^%>2^-8T#v!K@U2RJP2`covAH;?P+>E0k}8qfF1 z?3bTzCjBwXtjW4|+(`FHnna9y(|)C&U}UJ2F3V~;Q^=`v?c(|KFJIKI;IiUnBEUtH znFxYJCx(fysa>45WdU}V>&9?v?QSEg# zteg(9BJ?#~;GR_q#s&~KE|-)FbUB{84ST=Cvec+ajq6PD?eW*=npUWZ)pq6e`IS&V zgNIXNZ)vzn0lV2?MYAv9w!Xq%BQhj!D%`kKU{}_$HYKEN(iUmW*e}0SDjVksE%x#syi7ywTp9S|SZ%EKq;!yUhrP)VHM8m+xLpNfVz2h|VSl{^ zb9mr)4nS{ORlu{{0d?PR5O@VspiGym&Bt3$0+3t2zRZ)jy!uv870xu01-hYOHPM;Y zs!b5&I`RLi+FK`sKAlriYIM62=Q4XK@BCJff_^I(SYAVc@kY}nD(rOg@Wam^H;F8@KCzhwIcXO(U#f%nY|I>edx!Xp1e+6fB zwwsMto8=FCRA0)t@5)8-IhBV&LRp&_QQuBS_1Hf4Z=kwL6_ygzx+>s zcU)oivts-F{i)MyM&@^=Hqx3({@W9~ReF`vOPW;XbqLmqE$>Lx{AI70FJENYG*JGX zJ^XN+-28gacCOtnOw?~*T;-}2f2$HM3j$*_t!l*_%@umZYS~&$!|m3W>Xl*^WKY07 z${(QPj%JLdcAKSg$%mHx6t`2q&bxz_REvgNE9%#@mdn_WV}C$(JRwEgoPfqq8~ zeYO>tnUXz(P6oyn|JULDpd8)|T~EvV$HCWJ(zp^Lm}I_Ai~!%e>0b!s}Fpz(Ui z88+gk9X7+QUy==$NZrWtZ=UuXaRCRI+=ivzAWLE5e&jTRPfx;Ee=^?rjpK8%<*+sx z0&tp;yKGY%;|rRv_oDc2GmGJ@`soAfji3|H4k^{ig3)GKY+M@xk;hC9l|)CnJb89} z{QrC-22mxGH?`s{6!?tVW+r2H-2w?$xhfP3wQNngqU~?a$;CpPZ%LBh!WkO3ll{;C z^7yoi>erMb=kGh-WOKWT-hI}~hsJk$^YOz?vp}`u2NoavY))S4y+tb3+Us2a5YOth zg}3U+o%q`R{VujB-^vgh7|dAN)2{OBjWC=~?|C2= zXqhrO0v79W7py2|36QiVw=cC`cg;qvQYY9|&dZ%-oRC+tmUw-twuQDQLpWI`{jhEn$@(9-j8NM8?aRgCovlq-=~* z@KM_xGbx`Hb*s}wbqL0Hczv zm%9FF8L>dSEWoijB=N}PO;<@WolbaQ_2<353BMvGfkf`k2#qSty6Y3g3(U(a)+=KD zy6APk`al2gzdJ{OqUWy21r?M5NVmrBuao04_%VemL@5WaHEf;LjB<(Q5wG>d<1kz< z_xt%|^YcwFStQCpus*-P|MbuQ`qxMJieig6Y&>Y1Q?Ca20nKCB5!zM;i3N+P)%^p< zW1skNDU((7?m8Vmep(UZi#ekT*R(!4qc&|-?r~^XFO-})a|;J9@IW*M_n-Dl8dC;e z_|4N2%Ygeri$Gr7lp5~vGhF;N{_5-V#OqO@kKGy*_H@E5HZqo}U zOb6%7VDvbryqg{jl;(6Ub`vU8lhH0Y$@T6ZLSQj`5*Y}7y6-dl4!z-O7N`50R*CO= zsqo#4s_Bg;2vC@AP$5M^$>V3Vp4!1^_x{(pY)EEE=xUVsvd~nS12W`d+tqCPE{5uE zpd(l*hVR^~%Rl~?&R>36npL6leW4TBe#`#(e@=@mgVlO7w2R$V##s3r^)4@sYSnE) z-wFBDfx~nBG_l;??q45OV$cgt+oUbI@&^9!=I8yUbA5INxUgD>GQp^`L?;?@!~MU! zBRn*L=avvcY=5?cQ zmG}k94Uu7Bx16`e4?M(DPPZlsl*_7HI6D5v*X7AwGMX&IdbxWV{lfk9M|WI>29+ckDjLHS&s42(CA{;J@C;{KnP8ww+Np#q0|LW zN@~i`OtO1kt@!F$#v8WsTImAjg{)PLUw@`;Q=~y+AT-0ZN?Xp`nU8KasgL z4#$k;I}&8=-5w`&Fiyt(Zl^O#M%xc}-u~x%R@YkPx~5bvxB@D)a!t3WMw9y=XDvw+ zyUU(fs|1|IYwrXN#F!4L-WVJgWlc zQEn>5H)ZGw4oi08XPA+Y#G*Nd+a%FJ9Cc0W_I9@FBPi3d0*g~fxKOUPH}f&i;Q=E( z73aC;Yg!SEgNH)03l^I1bN1rms)SJH3T^IqiBQx|#-AqL*?15FGDT$#5o?RFo!xx5 zl{;z;*tRvxwml?~+Fv}Z5}C8vG$nLGBeky9(8$tD96VNc-S#G#2(<^T3e1+Tgtm!o~uCG479?M7y@)O8ypzFzgTIOo>hpaxA9b29If9L;`Fr4vfA&$r8Kh851S%EHy!@l)$hN4U9Z=B3#_=% z=(Te?pJ$?%IDRzUuUMZEk-k|Eqs_Zp@?|)(BKBFj(!D$u2;G;C=?g6pclc%Hy?>UM zR8XbW29_RoeA9K~dZsfM%i;;*yt0&x&I(O^h-9QlZnYqFrSp@@`jeS;rhU+TMtHYh zMA>X7_U&N%bT=D~n0kcZKsA1sL?khjs1;T<0S~rh*=4fUM#QQ#-0`B1pLyUX6Re0_ zCS;jVXOZ$m1$;G7khE1THqL+l^_S0chwT|ubdxc_Zl9Bv1Kce2ZtR*`E4crRQ=`|a z0_6&N+lSRamxxs?`|I~K(VD%uf~`TjpVCPTX`{m?@nq1!J-LSAywns6h!a)l5C*nee0a^vle4SW z^=KHm4dlr~vtq<%p(+s;Qk9Sz>}d{!jb@;fnuiunB+fNA3vUy^1>h&sF$pF3Z z`m|P;({8j%2xs_uCVTy=eE%_a2ZPx}tZTj*?RI0i zbMqLs113wX*VzX-5Tk23g42{Zz<(4^kLvw&zzrV9gXgw{tD`22g^TNm3r4z`_314y zLa9(IN~;lgB=#UDdc?`jFMRp;-@VNtvXGj(F<-PNcXrk5RC8ci!{x-2!Lg2rPL{KB zlFS#Y_m6js-}u_ik_9(LYr22`?sl9mcbm=qyUD?K-ywM)-`yUJwY$Im96R0dc4%@( zWIcTU@uzpUH#a1(Rv;wh#&$ni23Oc`!?Q^+t99l~2Ds)%IPsq+pm zXZ1O^Gf8rS@xxLs$PHl1710@{lR>vr%CbR%?cUS`wMVGP5*jqJ#}B*hYPoRFFDxZj zm9Fy5lULs;>3GrU7nrwLVG&dC7>bz(91nrjlm=c*&K;;e96m=SAN@=zE2yY&)b>XpaV$D zr@dSRs5uXXa}@+ur%lBQx@M_XKo4N^z6F!eOhA|oYy@Ab+AJL(wRvz>&43SL;15P{ zihNZ(J2@A5_?X}vh`nB(5`8_xK%6gBm`u@h`t(RgOz3R@_%#VrF>LGsZ0)ow3}sMn zfP8-XG@IPqB3=Mg$O~mKoA2kn>1MN9-{0TdKlZG8j)9WsZ|u(9`+xc=GKqao=Zn;` zhuhtU&$sIzK0cvGVOG+y=a2V2xJ{Y^0KW=z#>@WKKjuZY4<_jv9-EEW4C!w)jPC#PVY{4eZopj^4b6}#T0x-<8(G~g zUpLq%IdU-W57pOou3qIAC)MtJ4hvisGp7CKS#Q1l5JMKVrMJqUEWV2h4kvQB*0-}k zy$a>4XQ}Cj6_Pp*q9TSy-iqjODk3W^PstzN_6*P!rJ{tLF)zwaqi_v12?nxgwa5bq z-ANdRjJag3be31D7|C#MaVu?ztu}i&26&vJP!rkyXfvC*nNw>>FrmV%qB~kn(^&^E zJJk`eqU!}eS(R&tfx0|pDcJ)(>a;>D#R(JPLHzP8pBx^g-Z2kDdx`+6#Wz5~HQBTOkGxTj$xl?V? z3^1b}J=!GpyR|px)q3SP$H6LQgvOE99o(48OkqZuFsaU8T#{=Ae({jIl=SUwSgwiX zg26UMnQteYV!C0!g31;RFSKl#LCokbvHHF!Vxw;5UcR>Gal^**E@r`WfacXuk^uvz z1k+YXN_V=7F&(S1LlL-r&@6?1l}dNE)I@xs)y~|9kz?cLqZQD8I_muLtiNTcFFVKKw~-RJx9@*U$EHCnY!-<%aQlG_Kg1i{L%Tk2rG z`+WcS>*uGtcR#<|y!&*!zx(jOK@n^ssa+n9S~SR&Y&k3FmuEzAP$y)Y$Pr6tRn~x= zX8ms)*8RS39n^$qsIR{OgmX_fxyQdH3ap3pG49+`x=f!R+?qpMSZ#S+R^JI@ZXjN_WU^iF>I;lgt`aUuWw4p&MM|437as167#8 z8O@tI5{TMUW|!B?{Vvs;rM$ge^wyvM*Z)p+I%T(?KK=YZetAp>o89~O%ld`Toz5N~ zCj`e@wqXKI;!I=p2ZpFAz5BbB-|QZUAO&waoNV=~&mRNgPTxX-@wNnZuvKU5&H7!= z2cLdkH|ss@Eg+Txyfs5-x^|l^jL}Eq%MxlelPCtHT0Zk>SOw|`!c>gz!Y-lkR-+`y zO?+KWP2xMpN`T$pLAOfLPj2gQ9kO+!dVW=|{E4R&?-b0I8j zIyGs`?3CQ;08g1zkpYM7JPJYGUJc9zJx~4xfxma%0nE4;o~olaZT+lKK#>qe!C^WnD`d$)Cf-F|CSS+$KnL0Cc1Q5_#!vPln+~Hb4YY{pk1(QjZ>YncD+1abT zShM|Qd(hTxZPtpJ3?SUU?|q-=oO~?DUfiwFR6{0Mu4UEHw7Z2dpD&!4o4VAFYPB$2 zAA33U<`nW!eAe@sy;w&Xj{8G+;P>}-LoAnghK$CGA;@{ZQ3yYKvZp%Y$NxEdzcI-B z*gxEj;6h)ypnFC)TSp#Ta|G*cC(|k5<(lCQ79%KKRRfx6#@lrEALT(FCtLm7E%6l% ziDfK?T*GYNv!}juv(B9Aob{zj(V}->s~%_W{(8sq0}cua5K+=OX=_CGy10JP zEXU)qyvE6mlbq`{3yLP`916^ILZ+mi%2N&n>c^5(Plv&o)zgArivgnJ-9aXZ$Ff=o z7XivdbA$%-$@7DQXhk2pFn1`a?_^Nk44Tv8c0L;io{u@ihc={^seMEn%Xb&Txe=&6 zC9CL=!vsjZ4bWbdI9^Q=8>{l0TES?`|&PU9QZgsfwzz9QYmpO(a@nGQfp&wL=A5=n(Fova}IqWe}Y3A=OZ@X|OukZRuT zU;oW%UR>W^_FISXHpCB68+i5Rcs0?O?4Tv}9J11uDV6G)RjtDrSiH06|Gl5p{7yPv zRGdvvIMOyBK5dtGf3nU67QCH!p(9Oa=nc2`HwJbA2_5@0&Sf{bMgOQTdFOjn>m8;mQD9hvf=!w zkUb=_sN8{^Dd;r z|84?mv6<)D1RKDpMCmwc6>y;F5lId7rjxDLX{f$TJY5JDAOG!LS?pV#R68PANC{KJgJlmqK!$MO|g-Ux4ipRA52+?YLhX>)*W$PF%5)n+Q@@1O30S^GIcqF zPj;i`6;@mITHtlGuHsFV{^d|=OipM_b8S9V7lJ(8)~>JCo%`$i4>Pu69rx<~ z9W+tXuQf-@-Iad4y~1w015ZlXv|K6-`{ReVlOFXeO-j`Y`a~PPl?&EzJmT7w0-s!i zm0aK9+{&%CQOkLY0QdL)eg?!eCfWWB(h9#2-8To^D+a63W zSA+GStyFVO&do--)U4|rQrsq$*K!pe(CSZbx7zTsKdSBThhyPXJcH&lk>QuJH15K~ zswI-;voq#GLOI83s$4udOXjnnaVm+|uVJ`UQju6Z1s;RMGM!?+Qy{nVyA?75<>;%N7tF4 zpRn`^!7HcN3p_(18984p>$yR%#2lRokWz7ZQj*2gcxSp^J&{wVH2Pyk`R&&Y@PPY1LZ{|L*rm8{6*8y>7-E_(fW(00{& zE10u`@5_wH_6})_<{B*uSfbhz($&%0O{R;f(%XOQ1%si}DzUnd*m73I`@8kqKW{M~ z^PnM92Y{nk-Z^k=Mq{hB);ue99rDc0q+{3l&IskmDHX#?)wj{ZN7DF_`qP{1?d1iG zhO_!*H=|a8&J_xc-e3*Ji(Q_r>zcQ@9-1yT!YYBOljzymX&!J2IJOEb^-dvt8jrjo zic=B=f^fxBB1Ph$kU2j*I7_t~kzy+rFF|&wwfOXedbviNq7=i2tU+KB*p{#`WbR9 zP3G@_kk|xEi;uHiPQ@n#6a*s=%3x9B*W;v&EYq+>*3zFmkj^O|36rr7K%DR&NE zIsUp(&n2shdBGW;*PoBUil1*eMPywzQ;*;13iPzU^}puV0y-HRjY<1 zM53T@k`h55J6>;wh*b}k_p@O(HGAlrwF(wM%9N(&_2|BU<+l5l=q#2a4Hbwx;x6H6 zWF;V&!xnC%rq|IQabCs1&S_bo2F!OMR^tH6GMdW>vXAAqQ!z(3{pMi3-7NaHMtsjp zkZB|OnM&5^tw@%?zUh0qq?hrpcP4AkLL;Vbe*DW{{Czu2Hr4<1zB9JI+fv6t95#6i3k63rD5c7bMj*L@dE}x&0}JpiDonDNG{LB zl)9aDf4vAORwQ&7M#(hJ>3;1nn+o zqaM6Q)o5?jQh^6E5`NE7R5 zG%6FZfbR+_bEs6}u}CBo7fNBg2V5ZwJZ)ex*J6jcB9*>orD0FTPH)CCMROfADFVn@ zxl-!%+@A08dKpcxdihfk*7a5?kGL(7MV_pOPEXT8s9K}ZaOObr1qACTlK^&}QNSrvm^&w5BmOY%ky+v8+wR)HLtHG2Tn-Dumrdy4M z!gkJu=`p8*&V6eTnB!5CrJL4rr@h(y`iCFym-m4}CKO(_VG6y8?NrW`o)kiTBCv+k z9CW5|h*+ISY-12)X*Ly_-38nKbUB~Dy&Dq(>IQ>WyrJ6`*tT>bodA%89EQHTVs&Pl z_2$wRhMECmyqRuxi$^EPvzV+E!bf3Iqm;&)xTEDu`glGbYVoAhHGLn-hr66Poxnu= z#hRx#FojIAl|8KTd`%rEQ%!^Nh(2`H9TjdL@O%2~^?8Wh7xKxIv$KRyBlnig{`r6L z&Wk|?Z2}MqC65kE#bT;LK@YiW1(bO$6Fo~+GMPN?&Uy{=B~b>`fWs5Gjk4`$D?+GP z1}mMSZO(laM88$7uvXrD+zvL}y!FoFcCc9bh~1$_%qvYK}#L#Z|gvxzxck84TMW4!&xKi`hzd|X?=?Bu;)GJl#!$|}{7b}Y8sRERFK zBtUIjPsPy(=>3I*WmYQW!uv(XUR-$o^8MTI*Q+tD3@Qj*h|BQ=G+c>(MMMGuT zTwlJO1g<}GVTaB|2zQzI`F=RlV-0n326wqZV3v|83R~Yr`%r9fKYX(PNYfp*9n~_1Fe`Zw^hlNwQd4Wzp@MZny5+5OiUQ(+liPdK_wXhQ%JNi+0!bmYb2^My9f> zMhZe+6bpOl`TH?+uN)rD;>paZJ!uc6&`5K1*G5v-eSztw8@SC{Ol-jw`y2>n`?8UvnJ z{+FWNv53DnRSGaUFgWzXd?f0V>$^`M1EoL1Hfv0sG&L5$=_MI}ba?ONBtQQ2=TAx+ zHbpQo)7eZm7-w^8`XJRRh0b3@*skHIDix`8;O3MQY11>Ui*fa^ zQsF3sV_YJqMTWfahbS+nKcI{d_|Dfdoe}mmPX_`4qfX^V(E@?3sD?^VtAhF~n`MyB zsJnRj^_jJNSk2u=>V^z0o7W|>~RvpuGkRm+2&$C-yoZB z+iI(PnkW>d4?pmnmJ8;1vHq}f_}Jz@EsSOo`?KGOM2Os0Wj0}mlH34$3F2+dKnl~d z3x+4DdKY{?jx_=6j+G%p&=^Esr(7D(lK}<59>K5!@o|K|)?;IvrRa#vN&DR&#cdMXVBqJ^= z#im;o2T*6d-kZ-}XEVRyg@!gO8P8z|_ZZ$n5FOBy1H~a1!^H}TP-drfa;z0{j*#6Q zHIwYFz%+PfGMwVQoYo9pl<{=-`LmN`JeosHAZBZ`>#NJlyDNkS@h{&r^O9+LQxLUv zcQ|!PVw!Dgo!y=WJf6iTd`#4u=4_xQ9z8uy6n3*sdesOlXFmUbf-U?5JDbujV;MWJf;LN z33c-U>LFivJyX!fmz}6MbCTzh15ub@M-rDQJ;^HMbiWDjU+e&*EeU;-(+HvvS56uF zX;=?jwtc7APKRR(vCJd}o7Hl<7;gV^NyDi>0{B76w2_j5$wC8`^?Z?L8_}A!Jy~DU zg68nJ^Ai`dG-v8+EuMX(a?E{YhPEU#?jq02ZDUY8W*89W3Xc7d#{0%K7^IPZ=yiBLc3ZOjNgtRFo zcNiF5YqW6);Q}<9&8B0&kVWfc43I3urJwHGctOeyI**}L6H$#+Hub{LYE9ayqXH*v zC2aIqYg_boSPL2B=4jqgrngsSZu;@vW};Pl7HiC`u_2!+bQtZ*ZIcXs$J*X*8Sb}8 z2UFlViDc_l&Y1b+L5i_cwrNnJ%z~@D-pMp_xI`khk#Jd-!qH`n9-#CIoS=mV6QcO`qN zVeZEDD3%EO)ex>c|NPsRr-@U@V3lOLVsvmth)U_OVB7pF*|$@~*fPSudag{Ia)-0Z zwMLge{N+zm;bjP=eJQ03dWfRpnf=$00eUW$;y!b6GQU-|O`ybEyqg(HykXQKuGN|- z706jqokNeN1{}GTi`gAKNHBv0z}1y4IL3LjTB?!J&88zs>=@J!Em0b-W~Nesg2hGJ5ubR6D=5W#ZcE@qopA=4>s<^V|hcUSDo=UqnZ?di?9UY|~y=4d!s z2jGg7ldn$0@i(v1p?Ix!6p~4m*Co9bTrEEZ0*F6V7fU=8XF;IO+K? z_A<$-8;lZJl|@TRW%~Kd>f&~W4b=%H9;N^7!~I={-nP=IH?YEhl8wH2@$}oTp6ngP zK=Oc0ZY>^opK^?Bh{;eM-9s#q%=1yDL#+JIa@cHJi-h z%Or?YLOco$6p-G$dK#s}t%>Cd)GP9JtjXH|%qop(Gdq3J!7nul(X&r!R}oSRn{ck=?PvIdbO zVs<+)R@>_Ph%tui>w(nC#7l;^B0PsHONgYK%uQybC*@p)D()`yO!gJ`U-*#B5`{+v zA;rxo854t>1*FNUpb7C}#sB#5m-||=DL3rtpjB4A!R6iUWS~L4DG>aS3E`HGp6B}h zQ1A98PW-GrN22bHeQUNEE|#;QC_2ID=F^XVy~!SY!8V}8O z!|c?h5XD&+_gOZ} z*NO#4v4&?mMa+fsRWg$SVpU8gN+#FgBAgE%L(EI`-N`rgssiRFd7gtTEhy8AQJX3P z;nm*q?sjOj#U|LjE}r$G*y5x_5;`3@sOaTa2a&|V(53yiEIL$I z)mm28EW%)Ve^{gT>An9SSIuOyj!%hEpa?xfAv0qI>xpairrU?n4iasR{Z5bGQz7%F z0Q8E4N-5i)*V4J}#eJ{Y0n*yUcDq>Le{zW+9_393>aIOn+RL>M>6bp+&hw?4cK+4b zi#YCdPZ>^xTyH#@+WpJh)%xvJ_ipd6t%|>T|JQ%{=O0pM{^i{@+D&G1D8ZB|#LFDB zyt$z%=8Q*qBV8!S%Xvqq#cTr`XRKX_5_<1~-LfceYC^GPL#6bmp0K{Xdw1)P<~UAA z3z)|!LHl|rlpzf~V6@X|RL{WpCE>pt5W7_}YjDLN>#-#=L`BYXjuf(mvIx|M>K5JS%sncON%C=^8^) zdqIC>xU1XC#ogN3L6U5JJL|4CE<%{fc~wvDXTzt@zd1MoB>3vMR02uhv!7yWfDT*J zI=W{ti*L4=FZXA&`*)o}dw~uus8c+~hJ|Jf1*0tlglp=}@>28t1!duezO-pM0gipBAIUtm+MZ7`D@> zOX0)J*rL4DUsQxq4Uy(-cKh~fy&22XcOPzS`{rN&=f&cES9`mh^t%H+R-&?=O?BFN zIKW(mKtYa1oHsEGwEXRa3m?(}2ZL2C5{sqqwgT~j_thhunl+GuCej7uq~NN8N2vN3?Y-UJU%BA)hZ}#oTucF%cV&h;ljYrlN!)~J{L!A+4#nB6bR23! zlO*TOHq53Tye-Q&tDUJ$VkZryM#$HU>BYG4DsA`mIjPw6m%laM56eYimw}`xjPHz~ zHq&kXZQMLHiWf8`Oy~BrR60)}j35e;k0Wm@=8GxGYMCAh^GZW3 zhRO~8P}a}wHp%VkdAzv`5k_OOP6Q}a0G^#Y?HO5ydZAY(y$m^^cK9NeCR5vi(UaN1 zwbX2*!wF~C<^!Aa@tQAqL9vNB-d}D9WlUVv$cq;*pY0!?afNyIB-d>E!&W*2fP^1{ zGQ8#IM}>tyzSbxd4WNNUHX#sTezT1j1H#tJ-7_i1+sW*=&?OeUiOg^hV8WE}tywrGg-y zzdo<^0Okm0zhQfc-~Oln{lEOD|LriFP9L7cgyH7${^t5-zPjk`)vgBMk(?QvqTX=z z_C_gn*j;z$U3EBT*$`}JQ-sqFq4Ih$e#RkH_DzQI$qe+2^R~l2w(gO+24>ps$_2zh zD#2TLUbEYYGZ-P<7z`KNA#wjG_!qW}l}NSgw%Xp^KXr8)VPwMTwMNsWt3Glj>;Ft{p!*$B$Oi#`4~A?u;i{27GER_2!H3 zj?y*Lgb2MOO0b!&2)hEe!-&}!KV07}HIl3#j(9Mc$lCD1y$FX-QU|}??}{gThp7g` z)CyZ27~`X>K*;%HBKt^nH*%_D*_?Q^nS8|2b?LcpFZA|yMdlM*Zi^mi*Bmj;MrcRN z9o2PC3FPj`Q;ZfZ)@s{nqrF5N0^&hnykD*2Z%An0J0Nx1E$d!LQagGe8BiWpvM zyT3GhgJAJ)#lLn&V8Vn+d^Xzki>6G08OnOkUng-aNmbiuAa$cCY!_lo&Nyq!hoKxm z5?K?(0kYDv0|Ne=4E$KK$0;?)l_hi9^!ht!Iqzy>5`3*&g^)%%V6Q+Dy^2$TL}HtXtP~^_^`U1DAW-bJIog|3v1wj z($^d5R1q+`#skPQq`s4mRYcELAOL`>G(1Q>*?dQH^xDj*bawSVr7le?m8-FIdcI$} z>p4LECZ?%H&bVp?Eq8Z z6{7!#2e;$SY*zdHg*Bbbsxz3*7qdZcG#UrJj@Xq- zhYpIYunuYBfC8YMN)i^^JSeqhK9j^NBDLd5HJj<$bjIoFD*4Fa5sbE(!lI_qVYC)M z-ixicV&`g}T*U;@6bB=&m&TAZbJx~48{g=SCz}iS*(9J!uzs35uf{HweEzJ`>T0Q^ z#@J_o4b2@;u(RAil+x;?KiGcy{(7pB++%E&RJJpUx%11#Z0I7t=3EY-mBe<2DJq`S zNdOjy=-u^Zc)9AS<4#gy&gW2LG5Wi70?{%GL(t22gvy-3J6o!j)qKhtdT4<9+mTLH z)OASeS@3IQo<~A1QO1gV^v!Abo1?NtOQN0F`|h*Hr~BztWAx!_xpw_9a5&u_tfs7u zNhtC8VQ|JM(&VnlOc~7`f~}psy`1XIy&Cq7dW9HBGoMIt6K`qYK2B54X4@N37}b6mYBIgGPIo*S^91bp)3>hj@Aupi34h=yms81-ln51h;1p7)`*FOq#Ue1VH+z}r z$*Uu%4OoIwB<6Vf6ycCId8dXk&Q}t#21|e{g@C3#ZZ{YN6%E$^fI@jer@B(;)wlHt z-_~%t8av%fQ?z<}$GjA+Vyo{{r=*<&>2Kz2R@=pJ7RbDYODL~+0oJRrbg|wc6^5+` z*oZ-YMUn?**NsP<9_#$Kckeek8N7a=TUSss>h01!cY*`5HlqRWQL(G+1t$eCU-cr_l4P0g3`anlxc(q)(C)X#}UVN8fCWV|xZJa$i`0AesF1@I~za7l0p;ERA{bjaT z%(vX%;hFiHQM1}Er#UlKtTAp~naY2J?QtekZ=}-kaIWKlU4j0U`tIpo zEP8lQGUSpbm2=TJl0Pc@u#ZaRJe>|A0$5}DE#nL3kfyQ>*4K@L6gT8?prop!dj8;b z$4fN>2+EZ4w2FASoi8q?jx(F$alMx_>!98p8^kQ<4}bh4SIYaLs@AhLRY=eabO!CD zWUyJ+`8pjFv)#geB^0Y9i^yVwPKS!o@UJ(QS@UA?mvLHB%uoL^ z6%ZuaT@mHl#k;FTAHRY#6o2+Pr$e!NkZh|hgFb?1Wum#S|I6P#`u3k*X3Wd>H-gqM zmP1|VG;+1wjzwe1VtCLo`QepWLDMIj5!nO-u4-5g@+G@%o4aQw;D^oakDoq0z#Z7W z-HcaCF7xuV;RViMGk1i<{&80dHg_x2yY#&KW$pDoknu*Tp3EQY9YdR~Ll1_OOjbzO zMINt(v){kmKRbV&MnQ!Vq$Hvbt$?a#uU+_$XgQ{rhNZ&c5OhZ$S>ok_^FgnX>{6F9 zY63^&N~6dgHkX59s;~nNYV!IX2(sso0<`WzyH@c^;YJ=ukJz+9P7SN-1vlW4oS{o+SY~I^mPF90-_{odouRlMmGS|ari#FW%fYKa%`_(Ug_5ASL zQ}6ZZcmaz6xk7(2z1*(v?tZvl-rdb5L4&0~0^vm^!yhsBN=0~+$W~F}+X&BOa(g%H zZGZZge|^8SqV4yb33wTQ@y#=FJp%D@{^-R)tYx;$kN2wVHfuPI+peBSgGe}f@%XIT zKrn${OP4cT3*+Y7=dnUH9EY65EfQcq{Z9fqir4|^NpqQX?rwMw38QZI__aD}%@4>z1 zAJ(g@In&&HOc}$%Qi}*sMGI!spcyZAMj!rk_d$Ogu2iz8DaMAdah)kwA-KbAWi`=QH4}EEv-Jf^jlPa zFuIyir5ucUv*C8T`nc5Ie`w?*d!f^M-^hOV{PEXcA0>E9j6Q6%T)LGUY@}>5n!p`e zF2{}&x|pt}vH++m;E-^rcq3p(zduG`Lz_mHXuzdQoNcI{f?ma#MFbg%sVY9;@(S-A`>r}YEw_<@hVNEoSeu}SVgft-CVA&N#O9Ombljy zl9QP?SdV~5>_*zjD!D7rxcqg1hsv#vr#s_b*YUS=9>y(&nu$l3ziYJW%?`T=R)kc* zNR9MoKP}Y7_0{)!G@4o6&sVOJQ$UNgkaPu82IQmLcMp&yb4>*|npJP|LK(t+-Z@Q( zL#2|1lUI))y(vv+!QkRTuj7MzxRx^Zr}x&@OqZ+v2s#9LkvNf*dAFl5HeMXXnY*~Rblc1jd^6{&eG=$-QZ%0xrOKWAm$-R!WMo5lS zlHgde8XabEd1@eR-bmF?)znGoI9V$TGIsbbge{o(3HsQow=Y_}lYz7NI=ySLg-!BHyB4%dTPM(Ue| zlel6O6Nyxoc|kjM@GRGAx~#xh=S+U`^bd=6IDB#CPryS0_VpcfZnc^_>CfjYh*eQC z;K8zo0yIy>f@^QzAI)N4iB~NF`X?nZGmB2MevU6Qwg2QORrGJP*g0>)Rz6eh&Z_Fb z&XkS%Z1;m~tLZZ&PVnm+z$+_WtDLTsPLFn5{-P*wTdbGQjuX)kSUJ+Hv|7{LoAId= zfsxAc0AE{=7gHB%HDgJ7(y5X(tw(77V!Ps;TyLk&VO4b2Vv7BxCJlOWD%&<&?N+72 z5{jxa+rVl|B{*))du=!K<=OdnzxvrfzQ|afnB!wajWy{THr=#Wr$mgz{shNZt6NRK zetLXVU?(CPKqb0`48aefsJo)ip=a)6ngI4+>%_w;vgsW)c_^>u+->rVR#Iu3nj7Mx zN?r6u8~~tR@@&zzRv~-xhuU_r`lB5)w{PFSYt$FIIob}qk)80~4kmy3H0(kP;y=ly zRwUcZJdc<8;lwi0lJB&#@tDKMvb}avp|1O2%3CXcB>&_W8MUkBq`UO=MkABntoma@ z0r$6a#~Oj7^kE&d_B7VPV70A&oA&JL$=>nl?i;etEiUnx@?0V=RT&Yji_a5KeHx|M zF@!_47&<;E@zd?_yO2FNJP8x(r<0r^v6IVG@g`)Wu`KJLQsOLKOrD>f#LmLV$g0H> z9~W8-fe~)CN^h=34NPVbN_M&?1I898YiuUF7KU3Wd!E!-FG^Ghb<<14fS$-f&mEbH zs!9?)PWspFQcW`O*+x8?#Kc8mwW|TbUEYldntT1R`1&l{ZZ!HslV2yx zYaz^tMTRSt6Xo#oX5zZEGleF}$^|b=pL!j5^hPa;`m~a17Q-jUC9g~6PZ)Lq0ujg` z0?R38*;-3W$Zx1zI1jn=T}4Q3rNOMMW{VG3mgrsSzJHP>+B@yF@BjPK9Mh*sl{x&8 zLpPf7JmJsCdHA%(-WelwOcmQ|$VjfV^{s}v-EfO4C=Jmk_(bf< z)CpnCQEqYG7GK1 z-)$6Jf3PLHqX*ZEUe{a^+fm8M_AN#8QBgD`T~37ZRLWZQT<9p?o~Iube30Wi{3XjZ z?CAvZv)+}525Sc}D^P(m%d%fiG|N$W{&3x&t*);8MZfTV9)mqjPfd0gK_(u7Sz2QT zrnrVs)|6uAFjVD;S1G-DIo!@?ld<~h_W!ya&sudc_;3$z4L1W;>t-;Ngp(Y9>x=8@ z#rL=K!R^CrwBlAWTf4G~&|DW@mu|dBK6%JZzEnKchpBia*_t%HjY$ux&>by|dWI5n zI)50yT-Fo9D0?hrwDWMel-j+3iy+LidF0Uf@Oie91{#CUsFWmI)GS61PtxgpnRFcb z1VrPNQaMffo(eC68iK&kB`Sc)AWzo#eG3A`T&#@dpx-P*)2ajm((r@jxLp(L#z?0V zX?Cg>@A(0WFsrL^(w%_bu8O2h^DRy9PqiFNBpHTdK%`Dkm(z|CkRii}UGKOy1qV6# z`td=P-yl31fBA4d2WTTr%;o?6R|I#{f3C?yNU?sUrCW}$|Sj;P$$DmKk{dOTi1v4VIx*11UN897c-zq zIZ4Sw3ia)Ld%d{v!a$P|-9xi&YET}hlSPRPCk&+icvs(b!3(pRlkKHS1e5GIFLQ;T zTrpY>pL9AhACob=V7fZD$dFG~K4MjD^o@?glXhhB|0GG4npH0zMo#94a&v!{evCWh z*tr_?5xOkq?2{81pZFLxo(r7MHAJs>J%RPAp*1ECA3ol0?(a@=W2{7s7AWdW_?`go zHx-M+FFN$1yP=rE!?IqE2f^XvH<%n-qs8K<{Ad2n&W`R~S^47KgVF5XxShdfakEhx zT}5p{Ga|^0V0J8=7YFl!K21LhN2>kWlV@#Igb?wXmDtIv<6R%ynvs4Ot-RiRYb%X9 zb=y$53Qwcn6e@*I=_Tj#stnu`wpzug#*(G-;eI^5_hN59L)ri9*C*j5J-O49Nc`DX zPeU0YO(cgN2?;DRkyK}ixY7Bp;`k6TqeL>T>0;^O|7d&2=&mNqF^}73<>j%lz5)kN zov94UJ;xPNvzyXnI=Wdg6_#5PIf4$yx8?O3G(X4NDnZr7kC!)qp>_(uE-OE|)bj1_ zNat;;mpQSaPcbDhdwr?gn%@DgWcCOKtC&_uzul~eOb&f!%!mj|MG9G_l%U};-z2{h zNR+aiuXQsLFzjNn((H6?O>1+{(owXUp5**+2_3!NDVN>5KYo96F=-ndJ~vBiIqS>e zbDIfoMRD51a$1>2_xf&qJwb6O)uY+=uzDtE3Z}Qbf4h41V!37dTCP-E_ZR>E|8|k< zji;7(dF`>l887CO7SWk1#!#dV(~W0$Dri)-N{TO#ibe_TN$J_6<7&SdGnsu@+K5Ez z?o}cs{7)Jpf>M&%6#sO|n7zv=+&w&x(l7AaVkm_(D;c416FE73^_y4w`zJ4+?Vq1V zPQx#M{hxmpO~=y}vABPbNpZa*{tPv;oGP@dJ5eQ#g&3n|Xqk;2ji=UvD>&#Y0%q+O zahEangw)AS9-~)i`KeP!Fo&cr9Lum>SXF?V8R%{AhVWLI-bAGF#rA50pvx85+6V>b5J{s%-(zRqA4rit+mo(;z_n0ZBo# zXCH={F!3P!eV5s?#FcXU{+7_ejX(c*t)^a9|M}LkL|KEeKKuUT%d@fUHO`{C{lnW0 zjbxqJ=grb^9m>cfhDKe?H0RN?ub-dfy?`7*qwu2HIBGBKcDay=B?^?6*+7-6%7SbG zh4#R%%3_2A3}Y4k8{W4PhTVG9yO?tk=c?QsUk<^{b?cQ*`E)N*A{3u|`Ry^mfYE3e0?!@QKF94J!b+g zdD2W5=-{bBDPE|ugejtNlf9e7))>BD<1(|9=f8 z?=BU^x0x&VY+V+?RO=j${mnv-#KKR%{kx~GUpqaEAE!I9H}b%%9mSQzem+<=lTsP zjF?2kE`saRY8^1yIE^)~|DQkhKmKsH7|zLf*1F53)V#P7YP0347teDT7zXw2gApnC zo1sTqi*&hX1oJ*vV|}Pq;ROc{(|ebvYE^g@>*3Vcqe7EUS9zEZpL|h>7C;2o&$0?f z4xk%gR6OeR-I?zV2ZISX7a(qq*Q)n-2!<8%mP{0RnAyrjGKKiw?@O0r-L03>=dB?6 z{A};#o2S3~>es*c`=5ROY%hH9yThY`SUA|ni@XyVU;)J_pAIE+p_hrZ!=oti`zM(c z(m4QnX$*D%!Gtz~R$v&r+eALN>YCeuew!sfmwBSOq4{d>zoNS~- zAusAIVHmsd2r8BvSqY*R`8<{PAWIO(AP&bb2xMqqKin2 z#1`)bYf12tcatb%sIo46rI4?iZDV1$Xka*XrcMxaJ7C=Nu=w|{KglRp%B5<&**$vx z^7p^~`Okmzn}7Jnpa1;p&wlsp@ljFE@&-+ugMJo)!jww!WQ2Ut;joLeq=d?yZeOKQZo1gNYF)KmD_D(Ea5rav z>>6Tur}e-^q)OV>tC>Z`P18AoHP;t$U=Iq9>c-}J5cC0z2U<(j<(drQs!W)rzIH1i|vwFGHw8) ziAJ}lD*mA5EJkga%qK_W6`!`_3{=gZ&-*mv)vjJEskrVr_PL$$)mq3Xg*4kccj#5h zKA`HB(b)kmXx2~0bJxtq&I$@vEcCmXqPXlgnRi*$Qa%P`Q>5QtI)4>CKV(@p(!L|O~3)f&?~i~V18UWD35pJUP-ByfO*`Ry;-FuWm{TrjXIBjr{UX8Rcdxs z@SV2|s>U{q6o;ooJQ)ooINn#{ulKSFyF%87O+@2;jafyqggO`8UfrCz+-?ed&W_y8k?&+Ia8w&IsaTFDOGN5ov>)aEVt8@0S#BvT&8J`%MMKJPQmUq64Z$8Ru2*w0 z)1;qhAPRhQTEo=y-J10uSMtF2^D)RUr8Md3a1XWQ%ht6__NB98=~ zxA9C(=rED(ShMT9i|uj|^u_~X`;?DAt+0GHYwfMx^6y9{)$-ZwdC_7;ki`;~eD<6* z#fwKNQpd^t-~9Zm((si|-6xu@m9z7lW*`B_{89D0!*15Q@PpO$jFkb91ra)B zM@Ru#mtj40U4P`V)ddhC$B-{@D;FAVY9;Y_&K_t$mYZY&gfdm^z=dW5=cA4xcb9LK zZBJ~?U8+P@BTrwlBzmlx5x9cpEkwI|u2gLe-i$vM_FfDd=jcP z%Vdqxl8vXDyH$J2t6f)<=`<{iIts;TB44UC7F&+vBY{MMnop)fWZyaBWyv;$WWC#R zR>dQ6@7rcQU2n>sdA&;Ku*H~Tmm`w?{hvIiJKCc^v-;p)Q-D2ihXj50dv)qG$OSuIB^tl^YG zlmy2K+~ni%(`SWxqwxCa@BZ-Yi!Y*yr!Ri}^ItuBb@=qjev>>d^IXp6=*%KXi1hk$ zM7@g#V6j?GX0v-SLK1b1csM+PXmb1Y{Kc|wc5C30IKT5h?ewbq3Bg!gU2kTSQNVi~ zjuI(wyV)pJTKQx{!Vv-X(laE{7|f)WJy?#YD04*-8tI~C2P!9_K0+D80jc3xHKyD} zvF9)$Z(+G*C1}$DX}MyqnLKYVz`e4#>6p_lSUeaq$#f^VchY?~%*A<{t+=;k^ZAk- zO#G38Zy}Q`@TBHEoh}%o;c#u#xdRgtfyH}xkQZudxj;~xXhBdqv|Y7RPwpRM5zc{# zD(6b@2a>;z3@c2kPt#cST(#O+2jU2xUGK7%s>IVXavvDDuJ11$+h^0MDO0z}@o%FC z(?#pc<86<|HN1@!gl%MqO>o9tzA$`}x1WLp{v>UsZGN7-3YE)Pj>yTjUT>&HuB{k6ow7*mRL4sZ`miOP!dbhU@r!dPIcLy`IfU3T0^;N3} zdIC&1J$j+C(c|Xo?V#AHR85SK2Ox%q8i3>ITP zr*sJac+Xx;oO~#fA&W%FlbJhcox5(n1kxf2P#5{k^HW$#y$&}(NUaR7+K6bv(R?Wq zO+OD8juO1j+o{tmsWi*!>NYd+lAwUy+Qo>K((cQCl;QCCaKBomgxl$Ql=`Z@(S>q3 zXWw2d*6o+i`9Hx!MJNIWBTg_jI~}9F{VF@UQPWtEo4LGrm=9QV*tkHZ9tH@& z0hWVAwbHIzJ*M9a=eAhbTz;7Q5H{R7vUiI3o6D<7Z!+m=#WGjg9Y?1Jagsjes0Y5Z zYb_U-w9RX=Xr_>;S;NJ&aeQzJ9X_*@<>j-Re{P+HFzcSjANgvBrLNmSbpFW`T6^GZOAqf;viK&-7+keZ+p^1vm<&^{9HHQ&5-uCy+4dYYt(vU5Xir+U zBDdP*e5&QlCsU|5S>0lTk!$K!vjO8%s4!&6<|>3t7z?oC#2-yOXQ%2>O#-YAiiBV_ z>g=YEin;Tx^_c>JS?5|e8MyY~`zbRxAP-6@3`DH&Oo!9ajML+6I`SPzzu7{K9yEi< zA+4mqaF*|fT?Xr;MNq2;{Jblbv@|e^nb@0GuU;JTB5a5S>LQWD_RW;$Vp}cXG+&g} zElW^+bh$Jkj&Y4X6C4Y8uQqnw%IE~7Ct9bJ;0cUC{6aUlQ zgi%*8?9~VFIJ=AO!E`%W`f4z-U9nABS;tLMsJ~=IjZ^M7Uw-$+&p!Y1i*Loy<3D`< zH^2DR*O6Exlv2EMUa7PiwDgj6@M#5>-)wqj+jWFYg1>~tL_w;VmxG=5*2eduqT?U?5s+q6=`Wz{q{3j1eAjmr?2!$&uc@>B$KM@f8#H`Vb-pG2_iG&@c;=+t zX|CksmQ%pr9gO5=7d$Zj##}hu9?OZdSPoVVVcklumVBABd3|)c1)ezJv}s({kICy7 z6R(E1{w7%J&T2-)vhVTLxnyzEupJPnH~&pJu5E+$RBGFP{~ zp3Z=Fw0T%#9GXm)>&*+kL}s^>Wd%t{U( z7rO*IfIDS4LqzaRyawD{ffUx`^|mu}`V*rnPS)G|g^@M3G%I(J4b4Sfp_r~h178aW zf#Pa#AdIt06Rok;D&*z3D6zygqS)fPwr7oolnXttrDh;&p2420E2t$7n0``)*%{h+ob*}^tHVCLQBBCmv|D04 z0jXtu>zRw|w>R5?Uk|-W^%nDX#QX7XF|fE}NWpC2#*zP6W(hiDrvS%%dF#<{%{c4fBxvpZ$A5* zzxnLfzyAAl=l8#PnJvbTkHY8CW2UI-a)W}YMT9IICtS{NPx0{V%>nmNoqkpeBZIY* zq_ewMxm0?S4H`|{<5aJ@xXy4<_U?Wd4KJ7xPDZnV!jcFuh|KDxMKm3-KbUer{#Ym| z=ABDYiCCM`#+(NvYCJ@ASS+<_Jh-Z?Mn!9OwV;qUfB(bEq`$ISSxmkxUW{YM@qLx- zQQHA3%?)Bvc+?s4`*vu3TGY~&THhjuzU?^_qehF~a5BJ-RL``!sHW32daW&M#K4+W zPh$LQ??ePRs;crtwcfp5_T0r#Z2OC;VKFdI+Qx-QCBAEtd_uiTej$12BBy2W8G;p8oO zeCfm6SOEq<5;(llb$O z$9pdiUO)cscYpt1fByTg|C`?Z;#c1ywT}Mb#nb(Gs+f7jQrRTf-Z(#vogJpiju|;D z6i=WT`@974(DP4h0*r)wT_@%=2FzzQIxdjiV!ST4JO|C3;de`tyWT>LTynmJs9Y+%xL??L! zL`@uyd2T9NAr_0*3a72s>yxrIEuJ(gS)nbdp*Nnq%Z{ouKvi|;YH6iq_{_(zUOYOA zM_z@qrJ$Sp`cbg8(LO?ylV8nV|Z1F!d}PZ;fDb zd9O74D5UU}$)M^gjzzgLxc|8J5f^1L(P#l^66=3K!?eiRRBu<4abBhHf?d@@6hw+P zn0CtUV(j%`xVzn>V>nvrNECO2V>=V%oC}>!zLL}hrt1>%yAhN8`E z#CZphiMOx~1*XN)XeU18;sXOU?!xa^K$7~(_TS0`u4*wfBE&!7+&`6%J(M{S1gjM z-WHW)I#`b#0s14@+qScJ%QY}I0S;|IWx#LV#c~G`v72|7mXIY!gR41QQoZ5Z4R^+* z&cV|k{^>>GtH-Z?`1Y&E&kw)(o4@<~k59h&?u##vpFKN#^61f*&rkD2KikU%04J+d z>!q@9*O?%2Knlk1j%aS2CN|S%k%+W(yxpVKx)%;6v-cOX4?n$KU{xCgvmVzSfXBG_ z`L7$h*~E8bgk6JWN;GIF{VslN$i=uas#;0}GA`xy}HtF>j=))9Mkrb&|fgKq3qvAQ6OO5ygyf z^7gMYR!nbZIQN5qPoE#xEx8Y$uLh6b8>qvUlWYWWW?#r2ZtvfHyc%EMU@$befdCSB zWMlIV->E%rcG*YSH}o%@AHHk&R_WOv{=QoJ{iDaH2mkcsF7DWYJ`^o=sCrq0Wlx z-GBKwUasF|UY6l@(dHmToUp{*N^0VVg;qb|e zM=yW)?A4e5^mqU9%isO+@X@!g%au~GT{%2GIylUK_l%nY2W!$rQm|v_Of=$YPVq4n zWt%GM7m!sLb{KTZ64EN8)F^#@h#;-%fA|R>Kd8oTcUjPG>3H>6Cq}#*#&-n^B8$={ zJ$pFC!ac)J+C!z+lAS<@4HoUI)sNSG8;5&vy1OBa6Z_IM&ry)&US>-Bz`Gi!x^wdu zjNSPlS;qe6YBcZJP)JkEB<-!QVQ^6b1&0xSWq=o#|0A}Z6X zo;$|$3cid(5Yv%^yTF}SQ;k?GzHbB)mFSgu%a zoa(DouB(Gs7a0KtzTtEaVn;`*zd{*AC%RHWj&uQA>zg?K`OjTfL(G0T&q7OJ#&`9w z-;)L1kfpu{_yqD>nDHw?)c@GpMLt;SD$|V^;a0mefsIwq$w%rFFZau zKP#3W|32q0rf0We7dWo77%78LrQ1q829VDS2bhAQg)0*1wiFteK&#>S z`rTNGR+|f4-C&ahynz?sL%=s`Hj5OkixG|O(`8=6I}E#L4TL*|sn$ZEA!RkYhFl3x zSKrZr^&O8wG*PJ#G!U?n@Ww42MA}JnkwD=EvO_@*;M}{^)v%bmR!*y+JJTwI(19YPh}%g7Gi^F@sT zA09n@U67FqG#sYL9Di|0e14Q*pfH4J6wS)+Bz057G|_pGkUN{jA~LOApg3G7=njEA z#T$Ppg|ViZ0EzE$~xRTIoRkR}XWc)4-S1l7q0;l~4V#iiQ8Vkmt2DvrmH&eLap9_SCT!goECYmL0}nzcTyKMvFjQu^We#oFTeTf$@j-cubzJW z$FDzsa{B7)-+%e&8P3UoVnR!0@_O!v^Loy~J=hkV6qOg;r2Bqvwgo?xMswNlhZ*u# zadZ)LYQLMn*|AwJw`piv$TD1KVC0)Dz)Nr~=?KJ{dSnYOdX@rh_q#fj|kwa+MRHJ*x2mQsmCG%&Lc1qLAAx>OtL~;ZI;VPFc|ge=Ul>-ik= zN_>k=->;K3;ojW5dH??YpMUE2u70)7YUS5raQNx7(?Uz2N-vLJ8`tkAPItNlvSVrT zunM%Tk>V(-!xxUp@>2}1`A+3^TcS!O41jt&z;G_%S-yeK21G$0?@G8h5MIM9Np|M5 zz(db2g_CW96kn%*_b`^~4hDGJ`)so5%6=jNEe7)P;ts=27-~V$Add^MCDIDy+~kWV zhc7F+VlDsd^OMs;@%gL63RNw?dQLDvQ)vdy2c>4kxU~853+OObF>}yNn%->hBUM#b*TH!@YsS ztbW69+o=LWgL&*2>rofmB*>*AxlvR{%iY*5q zuIXxRImy!a;{NRl530#xvD|HuD8JCj!LKV)!@3~p?vr~6XZLtH9?V%v#7eQPa3`hX z!@TcQ8?7RFniJ7ZLnffWiUdk`PYQVS)+%k9=Qw3xb1Kzf`$L;-2a_Sbvmk>L&=>Ou9VNo< zCQTRPZaDtaKfl|Ay6a#Zb2CV$N#8CM?Wo2ePC$WGKS~8_ZqOj$MIb5Sh=cMVR%n9q zO^cVyKCo?plO#QkGYKpQ=vPHTEdl3i#f3)_W`PxE zvb2PuU3WR#tF~3`W`kgh#XIB0Pb+lG0eM8rQld2MHzrG;mr?Q3K>3DB7lq9pXoEVG z&;wv?(Z}R%@Co{^EMz~%<|WPw8&C(hSC16u@Z^|)kGT&`4?yXHpzD>AG!Gwlj3N?T z254I2F7kD{*553K4>M(tFV)+qYk^2CG)qsp>rIcWSB|TQUQFNarn~ze2Vf1ONQIE6 zh^bSM`nBf=2$;Y|G=6{k@ble#gYnIhp=2EBt>(eu;SqsG<`4OrfPD^>S+fjPnKp07 z@GqivsK7}8Y6TKM^ZD%h;oWZKcaZCquuh+OehfER@9rLW47llW(q8NxXW~g6) z1H}nyJe~OM90ME+UKU%dGG_-0JZ;b=qFER80UCuPI~}dDp_%Wd0kqfxxLD~#YU*~1 zZ481TmZjp|VHv<;XAW;5{6ld-&x+c7I!5^bDC(xvHJYEi>W9PueSBb! z{3MJ9x*r@|tqqj{YW9-D^ zz)J;@k-N!Y0clACasV4L&ZN`gu3a^{Lyt`hc$Wjhq zm_lrQv6-xX+qh`PCin?>x-;2a{CIDN%bPcoR{Q$)-Byzy6?Zq=0p4Wk{Y;f9Xx>E; zPS}KK`?K9P9Xs?yJ+Y(BxK^lDHJ7iJE5J{I(9}F|SH;&g^_J-%lZOa^t=G>H z>4d8m|IHb&^>af4N#RZ6a4Ew( z$R*i*UUmR-6lO4h3nJ*~@&e7aPM|tNXB!S6qzTeV*GR6{Fs~@nJ|MEL7247wmNE2G z6Re<3aLhdhV8Y!fz;Fkx)&Bj3Z-QzbLpTSwPTNRQjs;F49F1;o<|$;0@hAl%DeNG^ zV4167vc5nY1bHVtFj5utbdt*q+=lQ)FuNKj6Q>QFDAE4K%; zakkgD>FI6=Wg98!bteDyu`_}j5gVGmFBy?kYd6bB#YbPCRVZCy$|tRZZ}ri={PIaV z1rH{>xy-UX-Kr}~_~>O3@`3;^yUFba&-n;ea@~y;=W2%|>vG=we)x+*tlnq5KOR23 zyPGJD+Kb?VjWdkruM4XFu*dr=A~h<#^W zwn73)?tmGW3^4U(fyg+^XHz^`ScUic!Eo}^FVleL{r>*or^Hz1!_hH7mbHgXiD(Wm zh3&0yjQ~&!gorVEM2LoT99+TUOxN0Vg2NQdK|Ub}ZPgmjkQ`f~?F`OEgy#3y;z~!u zU4J?ojZnR?Ajw2jpE7P&5F1DU1H%=$x!i6d`1R7&+uxQzv(U&4IVj74-*>SY=Pd_7 zg890`$Z%#|uE*2G4yWrc*VaJ1vzz`z(J9#Bo&o?u=@` ze)76dIe&3nmO*mV0YqBI$;|F9{LNdJY;d?wdcDil{KLaomT+9}DU;u>m-qJrn>fGS z8nhX1hhBs5)^Dzy#`)Jz>h%FsAxKD=3Pv5n0s5aF73^U9!>VN2?W0OMU-At>puCVP z6<9rLuqH3FFJ9;KE!?PO1B|voC=+drK;>4Bz$F?GvB*&U>#2HBve$pw!PXKY34;V* zA9&wTf?yyR%!bp=xHrJlHXcLjko4D3(2Zb!i$(_9W*dB>%NayTo@c6}4SWLXN$K`} zaeFOE5KXH*@j8IrbaAr{brnlV{Hku$9cH=!suF5-aLmsiZnQRKkMY|>Y>1h7*C%lK z7;n;IHf2}eVoU-n_?R5f44m>H&_o{?gazJ;E5c(n)M z+7?|_yG*fCJ|pRN@w{C-F4ap7vRZ2I^Sy&miB$?R_u`or4+fz0^)?ef&N>2QldFM_ zC7@;65%fov>0?!{T|%P_YOH*eLKOXc_FfR)p`r z3rA3S4VPzpgcIZJNK^Z_NpFJK9^?-rG&TFag&W=p!05orAmausDgXQn!o5PKxrhIv z^&HATI?@q}|3r+eC@w~O_K|-O}N{;TY{1cKkRtsRSOVdH?FBQyt4rUpUJ zK;>E%NK%jk$c#IDvz*JHo;Ar*j&7ZSMGpTefI~^wLIYHDpv%FNb_mv5H=BfLz08q$ z!RDoBusSB3xL+cT$2$*U*UrRyRUbi0)|K-EYBpN@A5R0`i*EbIS;c3kf>i!Z!J%^w*7U?&d3%cXYayFXw zfq@2G1ur40j#!krS{*QYg>Ml}f@aA4*{hT8z?aURmBD+&amtI5=mz1V-f$FvRfUNJ z9FL%8V!x-URgfe^Aar3m*Ni%r zgF%N2wR%G+7xHvBb1{|8EMI;t#OVrr=n!u+@Q6J0S>$FFi4h<8^4X8KS-QL1*H^9` z)Sj1b;haVWX+G}`N7Em-=qyzFVA}e3ad$Jt2^k7lA?n$VA?Baw@$NKW`64(5t9nyB z{o+3!;)4m%`;YItVK2UZ*v*$%GLL6KOQNrz{x+*qQIp{+1qr@qv)GvgojL|Jr~=)F zqQ+FvwhMjv?98Q`%0&CRf{ z4{wKX*y=4iPUY@Ti|xCs`?n82f4u&e-|p7y3-r5&Z0+QLWoR6k3|)cVu7X6E8l+)7 zy1AV~u7<9)Of-10$q@~-#ah*Tjzs=Ei^P?JIk)Xr{0r*6t z{saZVF4UvLw8OdCRBw?$@-T3_3XPU#LPjX#C9=CnUBMY0DIRDSI%3Vh+75lC`jT)~ z2-VmmRi}WHvuKqqQVd+Zg3XnCKVG?f>&Xj4(=g^a6 zjUvhhtTd8%^2G@%m=~M-KVMz_+{ycZN-iI^i|uj(Ty797W*Rtbkk+E#o=q}Em|jGH zJ9QYgd+AsP`|6-vqP;2mY3@(6=ZEL^qyC$-W@oi|x1C>(qWS%zp2rGkS^DOS0;)ll z=uU!M-W#a^WdmdN;luq;*U`k&yV**wXS>^*br@d%_+c9V=`V}no4XO7eW`g4M=BUG zwI++|6j5zM$+nD~xI0F5!t#NTBP;DX3|k$wU2WDFvI&HMOv~+8rAk|O%g6bmSU#;5 z%9VVZRg@9|Qo8|}34|wGj1^K_@2a%pTNqhE){ET*nmni7T53FE;p*dfyH;o=&)&rJO2Lr%UJep7XlAdowr3cNz~R zh8QKudZj3dBE7vH-r8=j{qn5Vpvh;C>mu@x^WfldcVo7X4jvadxzHY7US6+pyqj;| zFVzaan%BN~b zLI7ZZH79F$50UWkv7{TBE}9^EStl~BMzA4jNhD1^z3$epYB2gwpd`WIQ+}76{%pq z@9hI94I>XHNvLN30wN~ zbFTF1fA{w%#>H+hUcDaz{gz(cucm%Y3B+bJbs&JbyL$i2<)GRCjTgk;$P`Yf2vc>? zAp^L^ddn0=Fk5coJT3;)414&VrK0>^KJBE8ybR|zZ~rX)_x~~13a{T!-K(B)t&sog zhl^2g^I_pR8EPoHFD7dqwnr_SOr2JU@M`1q*$*%3ikiIZmRpK*^7`^^`}Ae0p+@|R z^Wo)g6~*!L`r$qac9-A{oqk44;Mfx2)IWdZgV;=WLd+^djV2@TO54oBk zIUQ6peJ}DOi3F|*5+}t(t<6<*7l}x41w^WP`t1Da};ANv8M~Tcz|L z|HIS5%NHkd<#B8Nr_1BUyZfoFZB|B$5E)wBFH;TADiW;Nn|77Ps{!nUKYT+30K&hG z382zb#_~(0VnePfmuH_J@D`RMXB1eIi@U`nfxoZ;=Eob>}5-Qc(qmotPM4>eqO~Jzjg40qgvScOuE*h-{ct85)7K8 zIl58VPgQwz@#4u6aXT42rfS5J-zvcy`tkvW3m&=i`oLOgI~ z9nVViG<<_oY2u794E)Zv3alYM(h%5TZ{Z@+0$Ce!@1SmDZH$3tY>EUKw%H82cb`j}4gAR5v^o7wj8!gib0!CeLY80y4_+oQ6wY?$IZV*iw zUDnE0n>6h%YG3~G@VIpL_}iyv#nSGY%M&NL)eb37+*tmgJGk9&RX%d?`!|J?Z(ed-gBhdlVvTR+3IenH>5?kV9(wk48!}y3 z00pkp^zUI89Bh~2bO{^Po)gE_B*TL*7ALy7t|1^d8s1!F%XQdp$QG{@zj#!yv7n<2 zut!oVKtc&J%&Un15baZ7ascwizHEqBS;dK^BT{53-|%$r19xtFmV^caI0#k7?GU(S zAjg2cs~tsA0@4ex%?W3L&$%!Efjof3hbCZzsbl!1a=3h9WEW0d$&tjh%a6YUtjf!M^|(@g@ks$g3alFB@=3LMTmngO)SJoGcC8cV zzG3H!@pyW(%PhHa+*WZJOxB5PWVoJLT$4Bm|GISb*~Q(>a)GZo4GSy}Hq5pcnH|m= zTLasi>_$y-@!^-t`R&d1eb~}4D>d4PNH81?f=;);+(P91aDjRjvJGBLkwMB7kAEo2 zK&itSH8A-~PK9UDU@HZp-k=#8YWEfkoizg_y(zcyEWlS(O#|30LEm-&Qo>^%MfKgL z3*@CTO6Bv02-je=fD{l2PzaML63*fJ;mPRo$sgVzz5-0MqqFNt(OxI z-X^R-fAXJ7gXMHO1PKuLXApPMIq=7>G9I%>M5{aL`EP!GpCxbK!J2NsDl;4-!W|DW z)DaAg1d9+1p?w2*zPo(5TwLCMd|>OVkCV`B5L&g$6bhX%e7GE1*4@Q&4XlL*R3=Qe zO8dOQSVOesk@JmoAawC0DR1ai?c>I+D*t+h_iO{_3J|Zw91n0wq_vM zswebhg2bLogGxKLjI{u1BXk*_0_0tBrhlhD^8CX72O>b0t= zshrF-B&Jbw`UpG>6_xzqfBu`_zo_XV&+-rj^<+lUlfhoDgmdLNjCNY3Qak&;3bAs=58)(&MrH0>!CTA%pDc@1Go=S+HavRHd_%$@=3e%>v&4@u!IqE$5*{c(?V`QfJ}$S*mBzuzAAk2GpF984&x^^( zVvse&QcY*{3?7V!|BwBj{_fxZ!(lmH4}jn9hY{vPP;(%@n8X8sd<*p!!Z(Y}V0-`m zr``HtSUoeqW$RDI3DTaJcflu(&dLag{_hDVj)7 zXdbfQ%6=+p;)@tjg7@!GrYb=@F(73P9TEW^-o%OaSjwa5Bf}#_rD(&6&lBmyeKh22vJ?9yJZR+sST_?a<=OpRo-Vx!32f ze)o@MpKM=($vncxEnJR5F9s*LD4nGL=hOe@Z$H7-*yehX#2&zDne1 z)M@39NifnpfA#L?KW%-f<6;d5ngLw3b63h%6NtVSGjQ_(W}e?|7s+fsoV@w4cG(VD z0g$>A)eiE|SBWB-UEKC(Kiv$*i^Hi+ZF!e?wf2PpS4qD|$-_xiC&J4~T zb_k*kmwFF-+ReU%ks=Q3OD4j7X=(!vWj1BJ({L6Zh9Yp6qmhNzF<7srumYr++|ZyN z@C*d19u<|YIhhSs@My-9n^hPu0*=$60wO;7rzhuiNN|k7CLqsq1n4ytsijZN;iA9y z5#i(rVNqw#igK49=13au$=*;hcT}}M4Is?k=wh@&MDBVzUEj>I^%f#`z*angZJdtY z_^k#~Q9>stt2NoSL3g-&yM}6MQ>jxNDxr!-;T3?mNfchIol;bDT%O`_W@U4H!1@DB2B>+io*UAnv8vwHa! z&Kn)x%Fy(fV))IWcF`9V7 zjW;&Tj6H0G=F`P8Mfw0jKO0WZ==j;I|M4pnF@C1#4aV8Pe+rBjI(=)7+qh*-gb+a3#(@68Gh3ie< zJ^qUBgK+19@1zrTEpg#IzJ9Ys*Nf~Z0+`kGX_0A=frQO&+LLO9GR>4u^5_y(i}`Z3 zUT;w}MKxN@vliD~BT+)*M4|6jkgA9;I0=VnoSvUNsGPzpIa4)d;pf0@?^f z@9w+M0M!AHUX0meS%YpGP)`82<8IIQ!wEb9fs4{5Y!^ri(KWsgf6O>0jck!U4EAXk zAI>d8@=Gc0@f{!IrSNlqXZnt=>brVM-B@Z@{^&Y=G-kurA6$FK03O*AkvkCc#pGsW zDQ?9v8a_%f0C&JGwAgeF*dY3FA|Z=0=gySgG9kL)(P*`rg^Sw-NRzg8^0mSilDlcUOr8DB_i7rBr+vq8 zEO)qC?%uvzzkRrPbK}`5+j0ir+FcLE_g6jt=9eG0zrB~*=RE3!0(jQQne^%xIH{$uiD^X!+qE#zEQdh-|U3HZ9 zUe+VPIV70|gjm{tWhtVee|)Z>ryO=e8_o>_3~SqF>SRp}8ZW*)AgVNVasoMsB0M>2 z3$oJB;z$4hqgpPVpNs7ZKCz&~DeXe8f~w>`nkA7)Ve&x)pv;Minshbh1n zFzD-8JRFm7VD+T>i{-yk2hJ33$4=dz_oa52g&NGqg9&E!g;ym?fl>y`GaCl5tJFz` zVBYDx1ep-E|69Q3RciJV3P6+<3Tpl7<>t%6fvAuo+VYdL?F9MPOKcAulFKDP5uO9g!*oQWoijsAk_;V0m5#2X0i$EU$6@02^5pROt23EAZDMfl z7V0#ZoTJMW0=5#>D%YEmCBk;Ep?e;Qi@20aAN zwdw!+zoRNLQL$v=&7U`}lye zjBqaNdGKA(-C?+W2ZnjMgj4;&>lzJp&cz791>89%3EG&`kH5~l5#-^6dC3d;uvu;~ zkWql<_!zHL|AbU9k}YSqbZz0Sl@*b>pT&gG6o6P`c&GzY4C62!~5TfBFG zwPZLAKaqt;Fd)rf;!E`8{q}kSO#+S)9b}$sExEV(%Wqp$U!=2FZ6hcZ@iH*b7{K-l-0ZpO>iCnja@hC#ilf?p{r8~_wCLFl^;Tj1)2aotb4-Sg}sfS3hO!!LOF}`FB zNaH;NCMB6i=B*)iNP?4CV3d2AqB#`D$$h2l7^I>rRFz;cDv~uxriMSAMY*}+ck!An`O6U z=)4y9-~At#-t02Nftzx*SLbGzFVsr*%GBlMNN9FKsy2|gCO5`9!Bw%uTu!4jN`?># zYSQo?kXsSjaEC3&S0nh35yN2-bUXaRE5RF2k`NJspQhR!glj!+D;oOo=2(c~LGEqPKu6#R`xZDYCZdL(mN>sV<{fqLx&ehWjUy(h?o4T{N zZ$=i@v`n?kG^?%-U8Yh|rX%2p&GhcBk5U9EC=)d9(ViH?D0J5!-XKbJT&1{b8*|=a zOaXyMa)FMDI8%y&sws{(ITdCWF2P_bNBF1j*x7&rFiQfLSOko@Bh|4kQ>9>F@YvtsRcqvP z_@`>;g|liNR0M%0%d|q4ip4faU2GHGbMUpi=KHun|s_bq2mt|ioobIJ5idb{z@ph3e(B3g*{NOOe4r6HI z6s$rcmq!Oh>rl~qlkVM5iEuSA>psG%Npgbgtwxl} z)^<7xR`Y&3JJBQppQYS?d2Z zpW!A+oc{4?OHyZPv!$G$@i57_V4ozJj8m2hHr~QiM*x>jCauop%`_e2Z_#Edl?FkM zGu00yE#MKJf{e$41j7saFyDqT?3S2}3N6-C$##pA@G)uBuxTa9668oG2)2eL;;YX!}Zk_MJ*hr60#|TBEC_e7ZV1kS>#W-$XF9$|{7Xh@*q(8su z?)N#D#Ps9EXdF^ZHTTVDB?+qXmN?H~bWxvv4{N5oG@$F%GN_Z7sL$Tr zySY-iHr`@AvFW_1$Pr@3N3V*NlSZfIj2<@UQSZ2P^pfgf@8880)$25C(70;Mqav7n zoIcz@4~RW1n-c+xPv?QrW`;ckA1&bLI;=f66(7)=X%7rv00KsUo^BD;$FHOXm1ea> zbZrD1P(x$zpbat6h%mbbUQO!6VlKz(f}w-!$S_FMl8l0%9Dn(Gl|VYc0s0ok8qkj! z!8Qed5dtI$>Lek^l;OZvAmaa_+LU8)#vGu9u_*wbeuA|(;0KYVqDuYj;g z3iZc_r4q-BC9%U7X~zQ+>3}f&@x+^bynDL?pDe(59AOrtgSI|)JOg(+>tFn`#*lOM z^9&+Tb9Q?%zIs0%4tvNB8eCqo+fPqApqq8Um#duD1YJcE1#CpeOV_*1vwfb_U?|XF zdrgAbB=*A?Trp(SIZT-xgF{(+x-lnXFkc1@qijb&EJaABiqJ&~Aq8g|!y-HkMXoHVX7hxC+r#LfMXR^##VR3?`TD^rgY}5&07z#k zqM)OF2@E99<0#h>X1RqvLJ10`0yXbs16XSm!@yUmOp6iJj~x)HkkMl)^8C^F zKb#UB_|`b7eVB{pyq?J_f#)*xytUJo3y>3rQ!^l>Ft<$>+tF%RE+J#5S#NYU7z8s= zNq39I2;Zi`54y5BGkQlZky#%@du)l#ouP^h0{rl zvvF@=k|y*`bG@8nLolK$$0sL;ovsb(ik&Q5MI%>5X4)&g?i9`{MZL$+m6EF;Jbm@z z<+CrpuX+HkfOL#eBNPt4Bl>I;IRc#1 z5e8^gYUtCEqOd1d;V*&nAKnIhyHd`RJmr89eG$VnND<)EaeS+Z52J~TJ|PN%CpX)T za=TjNBs7^jzD(me-%wBhAlufnFlfg51Ivk{E< z9&^5%!7i78&Bc*(saM#OG23X7H0>+#GzIDr1 zcpYEsDa;X+*0*o3V};g&{vZb9NJlHkS-(}4hnP<)5t0zS~*NZpf>a$-cHhLM39k}Bd`9=~w_O*n5-#~Ihy zS3g)8e%3|{CneDV%Ds;W4@6La1XFd4A#webK};1}4IxqMFov=ORW4Rb<)fy>H$aWD z5uK|E9Rh&?OTxhhk|KsOU~3Wealc6b@)pMfBfMPT;|M1Q8sr*-kK25T?=}1>8+7rw zG8hm2^m4sg42H>cffD-c4bTJgka}WY4zjz;i_A5Y$renSWHOr!#{jUIlWSWBhQQN} z(IQ0AH5*2Q9#;}LIZeF|_Mm>J&4Tv`Iam};`tID#l{>A&^O`Ji=qj7TiSJu%t3eb? zO%0|Hthk9{p@IGciNFI?#u~0|?iG&6XlHiE{&;!qzfx=gn&}2}e}xuZ0TI9Fg(l!N zswjhmUklQ%Myr?yLFK!i^;Sa{U$l4kZ^CmmG+i!RI0~i=&g#z}x5LqTp9!%=dp#L% zX8lb9IKHKeT&~PDa}}bE^*oS_ibzA42_uQ&c_6GJ8`o~snjI3Zs7m>D5j^(stiMoO zLc7@#Ek_f1!(b77!w$|OnN+E;ryU(#c?)$m|7}s3}(0-^v6RR3p1b)im>X$z#lm? zP+0821Ug5buVH?KceT@X5kFA`maNh$-m8i!0p%emO{4y4j>O1LoJ_A`2Ju<@#nzVb6!`_;fv#wAnfszWH!}`{wTYZURGal4TPp zO6D>Pn;cQc1db%ibs9`N3{a>>yHQmv6||i51H@o(UE>ANDF~qI3&m!Z$+-CeppFB( zOmjGxkRV0K3fBQ>R*XQkwQ-hpeD192Vt=oPNV@8F2=t3DlUf%sO9^}mtq!t;Wuj0j zNd!NihM0o$m0AaZ%+mtWKS3xI1f4a}wF`6C4TQ zz8r=}NV;~164i`AgF zn0F_!);R1~U{t~(16j(RM~ir5_4uTvCnG!{A*AnEnO>Xs!SjKY&>Igr&6kD7`9Xuk z4~B2C#>>NMnImesqdLt1POrYK4Ga^YAOYjZs9M`wx1o?ze>BTR&k`DE70DGVWe6io zQo++^oQ;Rm<;6(u%|&|vR%Uj0F|Zqa?zkh?*zC<}INx2(0VHKdp*Fz9nKWs!>{}L8HG6^nCy-4q2vPt*3-eB-M3P zTyB$epE&#bl(+LJAuB}RU$$u&=DO9^`lfJ1h>1v$!i zVGw8MrOt4?T0o!-DY-DboD7(=+*304VVA_h`358OriUVK8r-Tv&&-K|52r<{$-mw{otfnG2+^KLL4W_^2c2}TT9fMGHn#kvM6 zx<)lw1jiAX3k?h!FuMYt0WWsaUu`qM$!w~j7Z`6Sb~W}9wZ6uI9rVxT5U3Vu1)-x?0t^_bEA_D0~ngn zS{D*3^Z~qHmqv`Y4mRWvurh&x6HRPdn=0~CTEH|Bw3BSNg&0Uf*!w3#5P*pq^xQo^ z2sH|NdVjuJU%cI{R;uCQMJH&2lI+SkQg-+b+N=lL1&C=Qd^FHdc461@)HV(HD{$v- zZf!fqxwB;u+YJne`S}D3j4fQ3Hxmu=`jfmRVgyNJ z=v5~~1O<)ydB=AIPHi=rc#C`xSJqqS8d#7>5V8ak9(|V{T?}U$BcWH6aLfP>i=^wt z%~N9R9<%|P&w6;;EbsnmvqPOE3g;DKIG%P5y!dGx&9=L}-#qQEwhZ0iOnlv$%xTr_ z1x$tGPN>2us9m_BPz=dowP>PQ8Vm*oizO=6WK_%xC>DP|ycaF88xNyqU9v2Mef)F+ zB$Z~09PD8d-Ma|&B6|(0W~m~CAONvE0Tc%&vKD7~G7LFd0LpC#7Nr4S1`NyQ>vaAHz@Y!oPJNf@Cqm0<$oYP>pG zKHMU4yxA_6!}6Dhhfg0LpOjyeT^;>*xb>nH|GK2%JhX_FC^5Ath%6nLlML}$Ox>_z z1L`dsK~1J0ndaC|SE!3|YzmBMgIle-LW#6I#+a?HE@#s>h!lGRzTU{ySj9$}doQ6F zp%576&R+7$VX=clqBaFhC;vS3K$FxI6sn+?0M^?kS2vTyf&D!kMXg$Y+c6`_iV)v` zO1(QX@!r)#RSY(5SatGJ}m0=KOvQSwZZmyR&^}+-&=oC*Ih8%{XT(usq#+$pO zh2!jDxmSAX1$0B`*<5kBO%WK>9lOJ^h4aIlEp)cicOPa+WJY~WTP~eZKy;$B*0`*i z9a_eg3?bW$N&otOI>Fm=lG!N!v>DW@@crZCKZMt3(G8=j!W^GBWg01tLLTjYaFk&# zGAyBe^rDzQWMN-kT;ThYkNeXlwqFh?9y0Fv0?6uZd^WL5+LMkZUNu+6yVVY|WvVMk zd$(!a^JSon6|wsA{CTO|;E<)%jIt7prx-8tvgDak1PwNBF?KxAk%Z&$bdzxMBXArX zvBh%J9L_c-r~5Vm*pB6irxf3+9yS;(!y-6Y;?#pnL1rxgfyYZ64}kQT%p?4mW5dHpJP@ci(sjbr=z8old1Sr&KcUeY2u7#z*m?@tD! zt_2R%Fo>tgl_jw2wSBw2#p=g1BPiMS9R3XMXdRWqA;j}8zRji$H z;MAecBp$+o087^xrQ2u?D}FNSb3A0)BdY_>2LyEr)s8HIE_T}mOS}FQDk9HRCYh1i zGK0Q0TOHDbfNaP>UP z^N^UK+$FxKDUO0JXq+cVW>}d6ue7`*;8w%J72FS(sAw#!6hDtUz=izL7&+a^@WCn#x5=pj|TZC^=fxAS# z*UMlqfjvPf2-3sIHzY3;wX9Q>&VKWK1MW13Ai3ISuBRqsDhaMQ!TRNCZW4iwo?q5^ z%&I>Mc$C&yx|8j=YAA_cj&4SN7PTvZTq$3iR&}>`WoxQKER5+DF*z+bGQKX=#HtKN zx%&S7MKe^}2$wCja7nW`i{n51?|;K__>8`Fl*r z4bXkiRaJWwl)J?I6CSBlBy^GLajRV|H_r|BxREAGirc6DVUA4hW$jvZ`r%=bY(a=e zUWeDrYIT*CRPsl8VrO}_!d>EycDI>Jo%i$JjJ0SF57f~2 zA6$KLJDKeSYv{rP#`dyTJ4R=?aMA7jyuW>%->rF;;sd%wo!n#wm}HEVAC^+Bg}JG# zv)RA6sFjNy(-Jt$ke)M*zN(=Z=N)}q8Y&&rzoc}S!TLsK%FHrwvI*sSN#F0 z?J7S23e$kGIjwJgS|61schXs_#%NO%ix=g-?<-|@HN8u^GS~x$SB zIITfHFTAf@zA6{b|M~YtiBmwWN0d3-cHW0L7rv}N4h1=gy^!ZX?DDnp($MT7l*8Dd zV7GHd8Q2<_Z5l%c-RWZ|5U$K8X0q^_dLrx~va?3Dud&5zE`FK~VQI`c_&Y)Gk8i~5 zh4JABD4{pfch%o~SnPo=*|wiK_Vr(Zq@m8$)i6(;1qKoY zsX;HAH2uT#3%U-g!?qQD)ONaH^8awRV^}rF4frk$9ZF59PX3qSpVW|Qr&YNKKdn(K z^m%4pc0t*P(R2X_V+;X=+YB8Jm+T_R8@zI;Z(^IQaEIe;CtENdDEF}cxeg2#qfhK6 z7BQO6KE3$-PNPLG=JRNxm(f2GExQ=Mc=YhkecWevD-h|fc%R-r|9^Z7rPVv#(GfmXCI*NxI&^-9mJcZ zRjOV7ePyKlu3)y`mm}18iUgA+9$xd!pS_IY>y^Wnk5Yo$jvk$>g>mVvt&ZwXUE_e> zE%u^1r5IOEpC^NOyhC5JT8$zGTaC-Jv#Ymn&(2C`jl7sxP1P)vyQM<0H_+R|&~~R# z{s;!c+sorx(R$J{ZvT#nF-Le2ngqN>|XD2%^+ zfD;i1jr#NnLc;bMrbk_KbGs=^`0Ks>{%IeqmTGtO6ypZFodjfpeIWZrAhaVs4eN#Ucmttez+~z0~j2E?%8B%9IWDkaZ3g zAF2lm7treK=0NF)IV!D_L`(J%P9QinMr=vy`eSK?DXr> zg}5K;)V9ZmdF+9$e|lPT{9<{b=#6r%`2M?w)cB4OMY~%U)GkDvL3r%yCl3cG!jPSK z?OWthk*b33FDMG$DS^D2C@S5aaWocbjATHh_SEC*AIPQwh$U8a)LL+BV@2j5Pk|*{ zKHopy#=y+B<3#kLZiyh&^_mnI_*C^WPd(Dv|*V6t*F#sOX}6i%*st&*M$G9D+?_mL^V!hLlS zMce1~VD)jBP2FC(*>BtG`x7#8W}`EI_-W05Xf_Kjnl@_~G5YA*pD7^_glhfi_wWAs zw;F5^Hu}zdC3cl>PxRkkDdOn%;U=soz?j_G=O1(QX3^kgGqmTU5wEWRlntNV%kO|X z4$|r2alM-zW}Efn(~{Pq0l%MhpWkq|L8;11yi--wE`%+MIxg?HcmjmlckL7)8@LnJ zE)jeeDhB0w__f|&fxCLprqn(y^mS@PS;2WhQry=q}iVEYt}j-grHzrW|Ne7G6a4_ zNv-<3lI^8Y$g36@1#_DyNll%70~#}g>c@YE5me80$s!_23vYld#9eMUi(iP3|Mq{* zD)sy)BiQFk;R4|LH-$z=u&;jCy1QSoFd^NezmkVF-MbL}^|Q4(Eb~Ba^eXTFx&Cdf z*u=4wu*Q8|tN-^uw$DrKMHr)?B&J1EoBn(|b~?rur_U_f+<)3QV$2wx-S^d1op4!( zI{WVP;{&Xk(P73oEg6M!)54;0gOE-lA|=-yqqqdk0w@atZMT+bBWIjSV zOz>L)q#620I0}3+{$C0LGJu6G_bTU=*6}ASCq~1chBS}Pn^w{&_qH>px&^rKlsi<(&_wM7woCo^;wX(Lupe#&X9U!h45(;?*> zIE*eX2vHHGMVn{LQ-y@5N5?VEVD&|q^(xgWP2tN6<9L(h_05Adag)cd`)fm*-u?1% zEcUPeeZU7U#rEv=TRH$Ht9;dVhO_I($GvSs74?kVKk@#3dnW$y`DS83C=xna>FU=7 zYI<6t*DmYzZ@({hkg4&d7&I;#YU`x-eBkdMlDP}Ou>t?d|5e%h@ z;ACXLMUw!42&t@&sWHwJcNjrM^ZIh=#SF}0d~?n9rhzfI|Ld~Ng=!p3=-{#028lw# zc@T5=!X%&R!8GZ+1`JgGTwdhxicR?L^Cag_V`z!oN^U1S)mW*HM}V-b%qo=oLi_dG zJZr|E9{I!Z+cRjqH#?kJqxH4lygF}N;S#mQgkwfmV_a=3wj7OC_do4-xqJOg z({YsF&+4>fw>K1x2azOrw}%O~D;iD&0B#@l=Ea}S{ZEhAYh3cxfyRfu$!ARP@6?kD zvzOPeFHbH=l`&UWdD4(i^deCTrW}VOvNaRm9o7D~-(HH9%QCbpsQp+jSrp1J-V)AJ zi&c^&!PCoVfk$Y&n|Hj-!w1ePjB1n%EM20E$%}$pIyXgb#8c+MU4gPcr-3dLcci(s zR!!xXrQv5{tLUS396^88Hve|G-3QTp?B#dI>-(n(G3EKnq5z+c^z3dnzkS#&(=l1G z#dWCX8)ll}(6)4nu!vTU_xW@=@R*2nRjnyVERW_lnN&nQ7ZV>h%5S<6gKA?w7(acu zULUuCma9~nWKJ9xuDNYgn-s?P>3nK!w_d;6(@SM4R>!-rL3A2rd|%Z&#nRvWF0$y{ zXZzKhMGA4Dpa=;;#z8;m)~gi;?W-YFkpYh{w!s?BOS-foXK|V5iHEZ*Gwu9-|G3cw zbNMvum!z@7oQX0T{Dml9A8u~eKmVHx$PlF1X6OAMae~!f|Gs?5 zz$)xth%t+-aY_x6hn_L;aBauS^)$OP{^8Z-w*?^fz#mBIWwY3yEtS>hxj%WBA>3e$ zcQ;Sw?BeXW=Voe?ZV`G$B*nnV$<3ye;VRVM;^owJsL!X|4@|>K0K1!^r>V`Fq_a7I z|ISGt5=#Pd9Dvw>iY$NV2_vF})g5!xv8w{4-R+3cBrgv)oAu4jBQEF1B@({WCRUHo zI+!G=NtUd;Bi~*T?j9KJVwcrK3L1McQd*@BI`df=>LvU5V`8JS`0?kjH`C!j(Fb<9 z3OqCfsg`(LXQ1C?AwtyF`eBv3c;DHBH0bydU6Phkx1nI&=RggZi3|x-(AZ#0e);}wr(7!kzF9eW*P44Z zhY1uHgn-vKdym0lppWkMv1!kgYT@)xCzsWWO9mnVpFIw?19PxdGHIP-A%v>zb7fQeT)tmEgsoFaMEL$88 zO&MDS)?KH2eyK(B`z`~}crf2g(f|Re8(X3&0qYU!EoZc_@rQpH8$7S>KcZekotL{! zt}3ESn?4=FvJ4Zl5&F$9`Oz9BX1j#_0JGk{$w9&7Cf#aeQPrxyIXSBfx<$Ry9u5Iy zKn5qJ3eB*Yav7i90?~AoP8;1&hY>dxMMGGZdb=SO{zP&B%F0Z zjwGDUc$9T?KAK6pT{{<`FpLJH8InFHd-(Fh!)$cCIgCaQmpTEKg*#-)dHVv&WRXL^>U{GAZj=dMt4(6@10uc)<$>9WYAH}$de_!Ia9_8>&JW4ygc^FKTfxZ zba^;a(W)Ga?=sOE-urPYWU@70?p(+_7C(3xgq~PEZ8XmQ^bOn1I&)9UrE%bp>FWYo zk?OV6)9JO>?RA>99=+r|S0o>bfNdV*Vr1{@7)t01%x+cvW;>tU|8(zw!nCK0UIAAj z2erX57hUQ{tJ&l)pM8OcTiYMX>NM|)DBBrV(v&#L$X;+_+t914Oc;fRG=e6-%RoUy|Ws40f?>xbKIJpVX}ym&bZ=8unG z?yfTi1fE*&x%M%GZ4a09@KD+;Z}uRFA9staLvmZL7^D30@$=6wlZe6XbYeASLlCEl zuPd#qi+8Wi&Kd)Bs^i@pOLc4~-r|vc&61E0$z|l0gVoIo>aHo#_}$J8mZUN`TkvZj zsX+V#ppDdIG-vA_YZj2Tqyy~PB)O(57Pxx9OTiCoB^!8O?gP88G4N;Z7_Bl#v>>ob(5x^fq{qlha`eOF{^(AF%3Y*!xS$75>pPoNM(CI0B>vzySp{VmQ)$3HNt8Jbt zJsN!VPQOZWtkXV*^3iWY?&4;UYd$O|@E}+az&v+P>XmcJs+&pjFeSqC{=6}eH)VWsvB-whj%- zrB)ROoV?Ed@cQ)o_ruAOmB1>jqWhVf}=TV51ly2H%v5Q%UTY5&Y+8W zD4A@({>y_8v3in673J{o<@wXs{d6?4iUC&KVf66%>Hg-CP)aa!IK3xJ@+d&4@CXOM zS{$;Y@O~X<<7XcaD_n2k;`)$`Zo}(OpReZwZA^!Lzow8^uZtNYhM}7!QnIp}4JQ7Y z*sGmTu@?G0uzB?+%`lspa-+xKLiO0dC0;tWO`k?eTWz0LOL8*7{u|r+>wslBFuWcX=rGkzt=Xx0saUETVfC`cl9di=%QIemuU5bNhoT?zg_?v2-snN5}-CatpA zyP~7k#_p)N`3TTrk8y9L^{qhX^MPsR7!1vV6^`4 z(Dcl&0glZ^wvB;7>0P!2Q(>dasJcg1o}cD#e%0xH`*&?-*ht9(63Urwt(KvGdoLmZ zw(A#VKxTafGpi}pi$XA&@ImLixy6pxFt{x^{^>tsGIS(*ZO2+lY~eWxQ>A!bDqOYk zF}68zgkc|{6$MmaeK8IqQZ$+0r{~YVb3S2k$5&ca-R|rT66RhlkrG zS%k-HKRi5r{_^noAT$|)4sTvwUY@UKo9o-n^7FG9}`V z>QD>{p`#ymcN?U@a|UB`Bsn<<8d%Fyh+@&eX}mqLGJxjxTGiR!gEQh5tZL3g?0O4?pZSQSh);Y6=zXci+P*4z*UX zr&IMFZSLllN~o~Y?MX+UdO+!O2;0bLUKV@t^l_#rvU^X(6cG0_rANi|NQ0at;$m0oj>2ctW3h3=>|#e!>4^( zK4}WoDu?Xx=61t(FIry577xOi&zy8I=Sm?`7G!?lq(>Qo+Ho_n+SEyaxyV(l`fGp1 zfQB$fyn5cV|4!p<2^qvTh32J+>me+GZF_Gj}`@9E8{$@2BD$*V>8g|g`yN=oO z>eYIW$$UD^7)FO0LWkUgsYB7QCUS>%bF+PRVW2+8FRF11z{!vb!7!dqZtkAR2F%1# zFc=i%mwQ>UCo!!st_OCcRek&7tnbOSi<4USyGs)55+icnC^nlLR|i`(4nj~!!${HU zCyrzGE^3`lQwC;Sq3TA}RO^b3ZnZg_&aB{WbMk8}VC)+OXU2LubU1~hu73aOU0o1G zxml^ZW3%0?7i*$#g7G8<;$;h-X6A4^-rOytNgUhVMz{UC*ykW^ofO*&I8J-u)cI3= z`e`v(VJ@35myS6-?3Ua6AHQ73J##h54qvmur(b@0xVxQAJn!)FFaP?Cs!vgvL~m|# zHFPTcGldd|a70|FmPdrh@%W-S9IZ$-u@veyJC+7!rw3e=@S%mlsn%8-ZPCe7?l}6$ z?D@-^)ziaz|M4dA_&VqOEKL_d%-Lequ zKa713g(j}Hpz zC7B&;iPKBF*3;)py800cbk8b&+nL+|svnI5L+s-*21Y=AJz(z5ESpF!*)s_-2YmV6 z%|kAv!@K|Z%YOjoT+Y@hhv9TP9z)>)q1bk2wiuXt=Ok21wU*EdtaewIRHmhtKkdsg zbjH2|{tlOrGN1=Xy{tDU=Nd~_7j0~#wwv&;Al4+IF}S&1FC&R+`*31=%Pi@>SEw4W zK;$NL`0=Y1Ye6Q?6bV zgu;14klbu23#4tp%ZtU@@hd-D4wg*8rT|t9BiugHt0x9d;I`Y3=G(PNLKpJX@Zo`f z>(J#`M?;Ce?Pxlh?uX1@*SC*9em=bXbvYP1*^X%TkN@)n$oJL8neb!Jk7uxAdzBaJ zR357Y*N+~%3azl1R{XK%Ob`Lj<8<6m`IIv(W;PZQX!a;%#8TG)+^gGs9_RN@|MKJZ z>!-tt`TyNv_e=%Ba1Zy6>P_xqogKBw*1>8BVoA{36~ihQM4=dXb&-@Za*>?QBL^B8 zOKfHsy|!RdA_OSYS4O+3O+p7jTLVK%i=wh)w>lk#fw0n|7}I-S)irGpZ3fEl`j?x_ zH_b6o0DkEnpy#JwKHS~s+F8K^cAV^4i1}lwTWy3E$*(@W2%(iuq_#Z0f4+|f|MD-t zeDKxQ+u+BqAK_uh{6GL4wB7b=diyLD2nIo_;#Y5iHCjAWb%1F8k<}V%ix_Q`(K|gw z8CtE>IjHg-Z3rD*FVy-B!lM+i5Jkd)D|3bqi4?>krSp(sEK_VPJIow*0uF!Zcncxb zHpE^qK&`@zZ4877q`@YiPW#${1(-vf;{M^s|M+?BX9SHV`GWJ%Kt3-SN}<{{T6D^l z=*woHS4AtK;KBaNv<60#yBzSm#XQ;^Mw!@_v00gRI39S#O2j-7vZv0q@8#bg4v(AV zFq!SvSZut(5L~&&0)3jhAt4?wbU<`BTdj^whkT%x`}N*p2(3_P8BEuLzBBMTG?-=) z$5nl>S@(;^inv^yLF*8>LiT{b#)MwGI@)_U&X*Gh)Avn)`b#yA$&nq-8uQLq1s|KnDC8e}`@$$$>*Ioj{y)*@ANSMAf+qFw81t}k0}rVkS|?g= zKYrany4g=~_-US~qf>S*-ze5>xc?$a1wQ$A*`>CBUeCwDFki<20mfV1pzR-fjyb@$ zJV&Ewf)44+(V%mL{CIIhk4X+U*VCwRUUK0L+g`7iqqmH=qrg!-r-L|Ec3bl9%eB(Y zmSGppFOO9sAuWJ#-HTec(XLh{5|JL`Y3?=scCbnTUuo>oAC;@JF>@>3dAeOW78d)& z(|}%#Mq*8Hy^eRd(Ju(uqmpOwm(K1N!{uXII6K^pZcj%v&G0ub_;Bo zp;9<))Bukw`IOT1e(ufT@PACrQ0*av-+fq_>4az3IfvryG`^m%Z&r&TKmH}TW=wGF z`+e-EdPN8c(ozrL^E0ObYxB1+!{9N-k6Vln*T~=!azsbHtOz<~bafJL2SW~w@qCr_ zyJo^~4NwgaKcbOR=yVO1tiBI#lJP48DRyfquk$$tT~@=su7_MGR22cKW%MX#0ic6W z0*4XqXO$TG?$Hw|lhEE{xFL#lW93D-hm)|+@iuk^f~rS*{glvfyXA%^lQYvJhunuQ z+|yMR>w}_qjU)|_X{Vw=6N^`{;&vc+|v%jHIvDP*9Gn8+E&t*i?}N|Nr+6 z-aLPWbVPlp5xd=! z6@}oPY|zqUS%F~$bBu@8)pG!E5->r5-7U2G>SC$11h7$Eyq0{KHdAKhbwRTFje4<3 z2@@K$R%axuy^8VppXfh4{RR1ydow1@mj5Ga3C-> zA88-$fg`<<;+hK)bWHH&1iPHqX?UT^By$x&)$ey~p{mL3KK#jQdw0WY9p*J~Xvtd7 z5<6Z-ApaBgmz%F2VQ(+ihhbe@jDa4&y2!EqFyg-b*QJ$>^-lX;d!pmX;UQXRw+j_! zF{DBLkcbqXvXDSa$c_0u4Yy<2ib+X=tt>u1SE=G{uJ@D0=dU;G)dr3PlEBGkzP(+K zfZD*zvQ%fej#x24$G!y?;cs5lJBU53JxQFvIx!U%{a>dF1KAUDyUvIvz|{*J}g2feMw-jU}ni>)zHX zN+9+CfP||^p?u1=F(uhY%YV6YR3{2V#b$<%bDhltZ+{y6j1Zu|qABoduWE4DSunLx zANUG_bD+Tewwf6t+fkkHiP5LG9*?hAwm-@Fq{?JBk8M!uxPeA-iDMKB6JnIirwt?7 zZTL%vdQ)hf*8}FowbCV-TUV+uut%2cpw>A&&F5Q_2SbCIupr|p;b%>KzbOUd?B?T7 z5D4?f|8MXfyGsg29(@y^D8r(^Y8#uaUAz2kivmfQ`onb1q8T_>Z!(HU zt^5U|JcbtG(U`AWQvg^fYoQ!UEa1^fD1sv|PV1f~9G=_V4vt>j;fb`%Zv_aH&yF%O15AUX7F?bN6Yz+trsRX-wgV#<<@B5P zFu%2aUt_ph!v{w!-|tcRP5Wr!YZf*nIiOr9xP1zStLIHZxSi3+PoFtW4vpP{Ji{b0 z+BkVh;;Y#_x9gP&mCS+^HK`k);+2#^Rv{bQPa`lSmX|^((i9@mvepmb%MLN>`GXZp zf%S&?464vgcI3{+)BV%)YMSqM4=+zYKEM3TUol?XeA*)Y&6zxpXH4FwBVZe)9bCLkj_ir4-<1K-5)Nnb< zKxk4)GbWzuK~Wz`;*I(aJA9*xtgTtqT#C!72l-;P&LI!F`>#7&u{lxa%Y1;?q|H@< zV4nkW*0AY;LXNGWsnwMbsG_Ho8cflMp;HV>jo^Ah*Q%j~f=J=bnE4<`>HTODp7Yo+ zJfl0%yTN8H6T)eBxxaL*LB3srVbXN)p8xk3VyMqQR}*A?+-LBbNZM|o;nVL+?xr|n>cav!`(!W zZ_+poVDotVD`YuD{lv=xaNYO;*E57gxuIA7K}m*Eu~aNn1>&x5v|nDF^x<`JW}%$a zCGeFDQ9Epx_?cVm<~YJp!C=6Qi#VrFY_tmf88kwjLNbS=(2^+)I=X|0oOrIMTQr!X z%VwlXszRt26Wr$co~%f%OJ`E2R7y*WIF4)`IWRpD z<*F$p5jRd-!&!-SRi|FaMvJRIsqp3gZqiRaUvFQo_nXChGf%U@d^N~#mpA|V!(w)L z+`atk!{Y8?7;#t3A`KfdldI^s02lks7^BY;yCtt{;&M}0QEzXkrl%nuBR|3S-AiG~ z4i_l=cGv6qko5kPVYsNX9~80liAXKFnLbi*~rkBGe!1P?zU zQUvH;EcY`CcWR|@^_`gO^66C>p)AE~xd*O=n_;KjZs-Yk0TDQx!7tZ=Wy$Ko3mmwu zDn+JIVz$q(ye>^G%$uCCO0p&O+Lr(IcM@_NBO&IBBvEqWszAbXMUU7OAvN-|$RQds$R*b=y0cR$t! ztI_U`Y?T$IY+$)Tu4fNlpEkp5klnhdYlhhN#-nwbe}1x^{U%s%(^Xcj^<9>es35oU$nvj)Ypx`VLSO7ql`#r#$JX`WM2Knsm za^z`ukGsk4@#PRg^h>B)By!m>yKSMu`cpCtus6qDD-)%_0tt`GE{j-DO<>Xr0^b(Z zmy1=Ur>YIfkbwLUhL^>Lepb=r96PYACk*y99db9_N5;t0vFrMMa_#uc{iv-EOqA-T zZ8t@?Ug3O9z@&M>Z;@Mt$|)yH+`%B?wX6d)vLRrOBDL8pVaaUb1*e?qp@Jnw-|DHl zLgUZN`F;j;lDRMKS00uOu#9BA8H%@S9l84cya`|^vSC_~0|QeR&#ISbmd1$eJ!v?j(5I_aSPHOeYn@}n{hJM_)X_kT&+m zA3yHW{p~ze8@=@54!RL*VLFp?4`eJ$XEx2#bb>)FGp9)cMUy^R$J{(Ue)#aW=%0RYQ~xh!E;2VsVOIuv-N4`;K{ zkT3+gt&rTc<+p@J3vDCAPHOeXn>Mo;H<7E2Zs)Q^!$j`Fl?8>-Nx0#8Jfe|k#2Fn9 zHV+UfmS`aPXX(|pDtC$(=LI%R9c#Qva6Qv_6-}j5Q;i;~Zrr4Ut*ZlIBU&6h-t(al zT2&mjfj&6;-|1I;r=$PxIG77YuYThOrRYFrZLP`Wdioz0sid*XarZ zpjK3@A@Dom(A@cF%P;@-@#nuj&GP*Z|M?3){m17;Jh1$9v0DwL(P4gnx4vCozO_lP zjFxG_?st%-+$xm$cD4`GTek06PC#@rS@Nm{dQTT)Gu=KstRC0dARLgSBZzn$^mV%c z0vyo*4?%>YrLp@01(WdS@RWQav<==uU`&RNW;fmwJ#!ZTk7M4;lwad17A46Zrkt%A z^K{Lza!g$@GgZS83u)xP*}kqE72U^=VMK+?3v|!-<8(I&4VOUZe%EAJ(R0|Z1SiXdtAuEh-Ff0N)cdh7fvrO&79wYVv<;7yg51WxV z*HA)^9Kv-szZ-cgCMO)(zI#(V@AMjV(?v1>X>h%rfLxibTIVvEKdn=Rj~u5%wr;e8 z1>VgaoDZ(vI5)^Q+o9G&)R#|q4FXsC{*pz|ct-1B!1Eq|_U#?~ zc}ihh{y6^V9{1DIA;pldr<2+KZo4?_#uNz1UWFm)a|6SBEr_JR=wq=kJ5|`_Ob^J> zC@o0|M?+Ci_(~vmz!mGrvRUlTCTTupt|AjzPAB^fA7~QO#K>x;5_6fJZ4;7n1F3Nd zVH{i+Z(|xq@Jm&C3w$%vDB=Zy;*vqb5E|@KvZ&yVeQ-)+GNoMbQfAH=5s4_(`Mr*L z1EfR0Rjc#fJF=rA#B|ph&{j4YaFBua{k{FbsnGyoTaLGe4-RI0c4+&&V)0(wEINk=kCYlAg(s#szXO7zRNW?(d0oLr4w&SCA2v(d~hH_ja2f4wRPY z7IEA{s6L+fMT`hupmdq0c^PI8@_fR{1(6KV84{gji3JMIqu9@G!dh%%X2@Mc)P4@8 zgEnxZ8^cOU;Tq?|KDn9W%Yhd?f=rV#^-+mILpF+0yD@>$DY~YZ+QoM612??>Aa`?bh_OPr`IDt^cKr(yOkW@+0BhQ zG&Md`OwG;ILRal?mu(!C5BC5%C+kJdy=7!Z*e;I$O9rlpDHtHRDWIEW*zdDU=4VPj zkpi==H{ZRv0yQhKGU21fa}NeHN{XQ?NVq2<;FW_Vm0V&K%x284p0h2B%(>r_SP8iN z6_=#K$jlMLTDi)Cy{2(Y=-`#%ZUNWA(OM)2B+;VNil5Xbqv-Q@RZ!WhM#^p*^(%_t zqrwG!f+Tj70q9ozhdc+ZAOnfUl#K6O`+dnG9t^HnAqC9iw_iQ&wW{5|mW^a}d#&?$ zL5o|(Kk`hGn~K<5WP{7>eJ2G2I-Az z-FBN*pnfJB7$?b0C;_sopr7TK+~bznB>)%Lfybf9fSwB`c;rf)O6J5exPOZDF5%}} zjBxS|se#Fq+W%i(Hc7q;ro-OF)nEQfIdg8*0BkRJEB8WE1oN5iC{Ifxy9{*-+&9f3Nx+0>=ZSc z1TG7Y<4K!j5C0>y4$_J~XPIy~@u{_>OqKYiIDRNKbw*TEGH>{J^j4FKoW~C3dPKH` zoeAIvTSLBwmK@qXP)Ax{S}zEjQ0@l2qWZ-u0?KaFxc+fiK2jJtSu3E@TmXKiT&;|6 zqCQFANw&pPHXBW!C;c@fi9uf*Gpp_w8Z^o(bw3zP4-Y9u+%Qa?`lT|8J0)kx2Z_0r zp#!qwbzo`?Q=Fz?9*0^s0_k=C|lb%!JD;235vqq9&82#JuJ{|jOEnU7sKgcVSue-N3CM{VR9%^ zCb61*llQnSR~W#NyHmU8Jw8ejA-vsF+N=ttqoKQN;BN=gJtqEny>iEM?n05`hbRt5 zM*IYE20+x5w^l~n%nW4F=i$G8!tWWTN#d{)C6iYn%`vu*vkPR%w1==1agOR%s^mQc zjZ93hLl6=fQ)h9Yhb6O8WsOTOK1AQisNt{~X3N{hF=8^=eta4^(*d+(MX%MsTjxWo z(Tt1J>NkmTgd06EmI$~7jdXD3~R74c9*I0~06ChZ>)5Dr z|CtSgeuFbzCe@ng3A^Ztquz)U&UTd@$eli1Zx3ltBdG$oYP+9pm>Wf$4=3|6k3CNP z`#WHnQR?}Ul)$~|C~8wKUufBs+OcW69dR<=r(GFWU#HqpWIm3hKPl2-m*!Wkt5oYUC&3{g$gUV{Hq&%;mkSMDu3mok%~>zX zrV7il#P*m|vmFssg4qkF__osPB=>7=xQ2UdAGVV_>OG)F@sA%;Fg{Jm2R^yj5;w!> zBx1i)8FkrW;oa}4{ME|H+bBVz1A!8#sN~TZv699kIdROsFzr??Zqb;7h%HK7qZ649}}laZEb2*Xw{bsv-*=mw8v5#$AMdk!V)mDRqW+sFu%^ArL8+VG@Dk z`PLEH%N072-#4a{PJ;$j02T8vlqpHct&@Nj)FT{Z8s#v zP|e2)8eCQEq`Q$!X33#8&R$SvYcrV=5a0gt*N@ku>D}ks38ksjQ7wn}BO=_qcXILP zSEuFrtG|CQ^gN?dYVlEq_cxr3bhS}IjAb>O-M~rKGe&lcBXz7)f(nXC8;X_FJQbjF z6FV|VTqYBgna>|~kB=KnqC_yw zmFn$A9nh?93b1Mns%@F$8Jv~8xOv%&Kvv2d=lfR>DNFSr?Uij#Fk+AF6s*rg>qtWV zqS&gP7eV4-Wn-YGm%tdEQ7_`T^} zbWB0dKb~X`eo*(U8cf(ppSX0XJATNtgCx~ z%FrUB5oU5?#0xOdNzB`5XoCibIihviimDGdd-0e6Nd%*YjJMh)zqYx5$?Uy)!mOXF3LX9inhoK!j|jJlXvafcY=0$hHO^WvW$KyubfUloN!|W ziPJ`N&?;1_EetCPcWaR7JY4l~FOvWs38TD)GJnbbr5@1(Nq2Bgrz;+C= zH3)l^(?8S(xJu0-6UBx>%us5P=-uxIEsK$x94%lmUZ|Ea=*s*k2&t+fwQGdbsJqCZ zQT&U>K<*>{U2X-Ui|}bT3OrN zIBjbfWoge(*!1=~;{$UjO)H6Xyi_Y2bi3wYJ_bqQCvV>RnHG+y8}$LQ05f&$wvrPX z-z}%N4>RV6WFWgH6{B*%tJn=|y|`NgF=uxunyWIuthPTNO!le8eyi2P01`K_$#ley zL;8Kzoo(M^C^NtXR?PFZV;%Zc*o=SdqEr0#Xwx>!(4h zaCxpRZMWTmHP~+!FJJxEds5V54Q$ksQ1KS<0qZr+&u4FGugUT_E?%i#5GGdl;tCq7 z(5&+@vi)w2MGsRa{;}v#TNJ;cWKJb9pYMjym49P5Re3s|4{ep$9t8u#{7RsJpgjIgbqBLZ! zp-ywgb_{Orp113LLh5&T`{V62&A3SoYOl{Kr{7$*FW-E3dfI|4rr#a>K6i1gE-1Cr zHyuIVK24+sz-vB7RN;8lcd;C%PPZYKe|uqfYC`#UfA>${z2VGBI#sXORH0%T%OQv#G%f@n)55jH}k^@7l40H90*tPxvNLvJ)!}?x7l?OzEgr z=u<9Ww4yQfj)xSsr$Io@!DB#fwR<}E2zH`ij)UQ`=m@U|1P*J3hNTNgA4{cjFBQ(; zU3~jr3!~<%D@;9psoG5No4dr-*CR z;+{8}-W=|BpFZ)j8U{~Kcl+HW$nPHl;*4!eDYVRXsdpR=!hcyI7!0h7vL?Lw+jr!o zh0Btt3f2(^&D&3@&=I05b=fU`chv`c^zA?W{Xc$l{{8Pyx^A)(MHbt$&CP!8y4#7$ zMim0G7xmxQpQqIt7c)n;YCUe=n{BtR*RQ_&$5Wx7=yO=2vM!NsbnL#-dRrE0lq=OH zD+LzBTzv;w#tLhYvbT;W`7~%X@Ur#JPV0?gtB=tlqBc^fL<70eWVKi?JELl)dvIhlXES3uIPWx~E%d7XN z<-RMm(_8dL7Eu_*KJG{b z0Em2Fo%%-_kE*$}dWm}ilD{*9oEN)y*n0{IK7RCl~{eknL~b7||T$K!`+WJ7WPC;V|pD zTgiA{8ozS*M|OOQOkxp zL&JEi_m+nxC0UX=g2>M2>kEFq6YFlw z1D|B_46PCmi{mnQt2HaO&-6ogeTa7B#LJR=j{2ojX)}6joxJ{*`Y7TecqT}P4P>;o z05`NOBVMVW*3EXgBcGKowWRjVfBUcBH25BGXQk~Ivo1fZmis8`UbTwNYQ0)xL?N90 z`J`Vez5mVoLf;@dX#@Nv`rzq38wN4Ke^1gD{nn8On1aJ}=X_!Tqz_>=IApyBY~Fh1 za+`*Q(q~vh3_>avcskQM#S%Cs&)>tL0yHG*2#xozUj6BHm5e^yIMt+%z^4+Y5Y2Ul zmc35#H^2L~>W1hu-OvUf9|mkJV3GL2;)S&G=H>ZmGandHto!5D{WUi{o0A_e=Ed!P zm3jGOahTbh4>vQiMAgg7GYz(Iq0!?}20+}=wUDxJ{hL3&uM{y*^;y#Q3s+|)iGk35 zJ?0+=G?;jK&fGS4`sljZm3@9mlzPz*Soz`etSff^6zob>Hmk4yP(N z>c!)Ur!-}=t0o!#ppb!xz)IqXc7RF8m@uC%7c*YHHzObfy%uVM)>YfkX-Cj82Cd=i zWhLxY3B%>_$u~9pm_)tnRk|Ev_o_5!pp?>5qHhN7>z3jAp z{ayW}^zJPhK12~+#ksh00B!>1;1E@*1A{2z7<6emK(^oP7vpShURj$}4i9H@9ShOm z^be=ymey>rbxHfYgu3CH5qdXcLTf?TmN<0+N;$!%)T)DQGr8w6U*kACUOwF~ z@PTt6VLHpAcbbz1=deoNaS@7_bqj1f6v=a8HR~5^vR>{KzWw%__vO=H{q3*6EsIUx z6!`|bE$oooz*+xtl^(0a`c2=cadYLH0h*oVOpKZp;D_{T%I;9YqVa@ak;@PX}2u5@V+gt z_MiAANmuVHS88DBy?*<$B&EJs)l&RZ=(bRfYDT-pnVI1c zBhCqGb^VA}wU}QX@$+FmW0y$+(*qKan9cH^-fM$p;1<5urj_r%|LyeD`1e z_P1r(4cN$?ekZsVEEf>ax?U{=b5khui2^6gjS(74z+`&F;jkj2eW&fA<_2R#KBL@Z zoK`Dx1qUKjXp9e$0dlQc#h+D@sVBW_PPX<*Hu0D3sq^h~eS}G2Uv$NVLNS-D*-efE}`14>4m;ArN%=Z}Gc zu!!riq3sKfs`xRU)s(!HyW6u`#^?6w<>~VQBAOeJI`@dPGeAN?SD!Ch!v(Jsbiqg& zMpO7A_k_{NZw$xY;*vxi+FXAO8JY6xFFQC%9=^bhqZ20PRumm0(?ps>34YUhKy&bBx zPOtLj_1pI!VD?C}ZhtKIZ^@z0LHD$3m8-GSzk^LS8rSZIa#rrecfimhD*c1T+s>R$ zp6kuD$=#@Z`>so?Io^yacB-1=pI#BxY1|3^@K*8|+%BB$CN*}!z3qIc!2FlT-K*EE zjKM_C2>p2pi*ojbg*FR7m>#qqUITxDfUl$zB4LGs=sXl*0@GSy?lG%P^f3=y%SaQDi0K#8p=Z<4m6FzB2-Espc@C)p&Fq3A2&yEjB7i~nD z)NQ{3Npvx4RR#bdXN30>l)y$Tj-BnxTJoq^28r02-QDUm*TS93dG+wjq?vb!)vRF= zQ9?7-zUe#TAAhQRX!i)kMtfj%H%39eeFm7Z5Bj7>C{%`uxCsO$T*srU>LOL{<|=Ah z4iVi77mI~}9P{@xB;NP8jV@G9jqGNP{13H#nFxYE7}NKgwQAQaz|^KX`u5+h1T>W` z{>$AS4BJrr-r8uv?Cl--Ej37rN!QQ-1@)!;;PzteX1Yu1jH~@l`=__lkmaUa?{n%H zU-EP0sj*qljdellXb6&BLu$!+%Vp}ujdL`2dCoQ`-RfY9W~*A!!3uKbRu}g}g(GQT zNL}ai3mzmwo_xPEv2!RE>X}FN`uV`)OI59Lr+GDMeB1RqG8FIi1rlO|`ESj}%^pGG z<>`4V_uO?TCp&ivl}bDPb-W!{3xuU1S z;{NuB_nk?%jeQ;9U*k^|2F6fZ`$Va!*7fjHq>E{~J*3(GA)S5f%fhh3)`!yY00@&zg!@b|x*q^Y2gkvv@zcL_ok;0jedvyx zKXg>?gCkIiG@omg+9Kb7aR(g7XYJ~JOV~z3_PnC)^4Fy}JMA^Jb)dJ3+HTzmaOvT{fB0&-@i`2o*(k;>z7Y^D$TRaw%G^zzWaJK z`lRzzEd)|7*V`0%RZ=Hv5CrAMA9~!` zqRvP3$6ThB^vl7Jtm+R}_adXFPOaIvk_<|&9hN3h*1xHbxqQ)Itlr+!v6ba^f3^sA zvDvt*+&G*4iY4!fQk7Gq?UdjG+xF&U!dr%6# zrreNJzg*6lI3<>`g*u2lZn<{EGi7J?i+q|UW*!1+&Zx9ACT?}jAXXi3KHL9gkG8!n zsObimT^ag}A00?o7{kJ0mlh72T1wu~5Q<-aU9VmqKkuKuo}c$W|5>~3>%dPJi(bzd z4T+z@NEu_E7Hc?u5LZ$3ZDV04QEJWVWDF&qHcJB&sJ#^!mAXmfa+_K zQ9s@+;da^E(;<(5&OUD>u%sMLXYEG&((ATWAXpYYW}>`|A7JL}&ch z>kZyi#l|dOkQNyaMpLPI$83Y7J=R7SiwmV`7Z&3{pWyvArk!pZRco(XztJK)!z!zG zU%zkBB>+Wdk4A3)hj;aM1I&1f{Y1A)2OYk*4llNcLls89#ve9XuNagFL}TATk0~mxDS<)&}@KKr`p{9{?&U&skDfT85h2xw~2i$BFoicPX9s~ z2XQ#)flUe3jCqAaq{8$3Sb;)@8XMWuP$MMP9}lZiWSiNs@F@lDFaZx1(CTm5#{NPy&&oBij{Cm`m4fpwh#4DHD7*pwH%2^@-#QU8bU|M17UN-~!SWor=6o0O$H zb^hNN<~n#pdED+^zq^_2A65lGue56SceVropx+LLWEMSm2{U#< zlaWAu1ruoFrcP!7?JI_oDGmRCF+2M0WD_d-#;*^c)YWF^E!3=-Y5!E>2EkxK8Q&A^ zs$X68Az7^p9j+$J^^q*sZ<=gBF=^MDe6*v87k^_kZS`8;R(IZ9`LJ1ooFRXlIVy0|vUaSW#{MdFzX1H&ACY+F%;3iqB<7=+wWUn;UN(Lpoc@fD)3 zZV1rAKu=*`|WEc#`mM@yN~Vqqz{VFa%v5fl2WHLZoRp>ziO%m znE(v4tqyHdSRvCzuTh!8VxK!sS4=gepW|;E-s(WCt2&VTgVz1nw6uXy}S5-Zf^L40b{2GY$V(o4RWAR?Q~u zZvWl;`~K}+x5sb3)ngzrAF{AP`#6WiBWe#R`tHfN^|8?&lDO>k$r93|dsC?ijG9^5 zrIJIW6EXUX#A9p^-rbq^9YLsH*9pM&+SO&`M=9ZIK!T=cFc0roTZiW+3PDt74pg1i zrS&_7w@${7UZFu3!jbEEPWUtM}J8Euv9{aLY@*zX-$0)V_Ov^Zw%8px108iXUCV?d-Da z13o;KbaPXm8w&tL{o!afs>r!bop8hGsV??#0CNg+-__D{i?dL^+4n&!o<8 zyTh_cRxRjK3b3$wAJqK9P_onKBPn;o>@>;2@K<&w-J7a@DBIs%aTB`K4=uwMks5MF zL5|g9Hga|I8XMa9-7D^)@2{)x#IrSQe5fo~P=h_Xeccf_u)%ah$h}JzDh))=)gyb2 zlQYqpi zVd4<(-u?(Zp*Dp9_G1OuHHA@T$_;r`>x&R}ei8yMSzW@a03A#+umRCF2h0_YUz&SEb&9o=;`n1G4=hieAYL&7F) zQc^qTt|MvyY$Y30hLNr|U;bWB7w(9R0y*IU8+KCW-oiP@eVQ(sn*@p}>yUpe(rXGA zcwmKZrIO`7rHMS#4)YCq?_ z8~SrMBUX-^A*AZi*Ap3hJo*wfQ5T3ov!pz59Nn3nN~dxA<8Qxd%?Fi99H^c&kwBG^ zV`_bPTlv_SPCWfj-&N=$*yCBR54Dlhoj7S!-&H2n54C=ygMN|+J0fS3k4+?v+P!L} zV|rJ=zZs3$iga5-^Ifxz+q~9k;@8I)wOTB;Ya#pd+F9bLJ7^_mupXN;AhU3yWLgwfP2E(3GF^+S&xawM^! zlSbZJrh7XS6{hi*;6m||_`8?{^+)=4^v$^W7(x1fZkvlD)2ytp66T+D_axJgcWZk# z_a94LA1jg8?v5unKYah2Zy|=LqzoBEb4upr;0{^)yz-#WP)0OwZ}ybGmgPsJ)}(jVUV9LD2ipq`4q`6{jt%- zfQ&)hQn8lpX*mu_y^dRAAa*)Kk#DmFL^ED*kLz+Nwx$Hk|L`xrxt=d<+>S2ewF~8% zmAyXib^rZ!>t1NLlxQ#rh{5z)JqEC*F{-|QeKU405IcYYuuRFaEYDU`En=>?z0R;* zdH3$-W=IKTbbojI;X`B4;?UUo@%swBj+S;ZsxY>Lh1Pl1Eh3}^0mn1l{rZCL+WqSM z%a8IQ^Jy}90SM-?B6hh1EE?avg0C~7C<_x`pUJk3%VnMUQPM`k36N@XL07pL{ao3k z?;w(+MBF}DSi&^iA9BpQ7ZV`1MHV_P?@Sg7;a`qp#id0ShnJj#s^S%l{nMdH!va<< z>}3)kwdz=ER<2*)PSnarp>fCio(f%JafI^xWPLmXBH!*&93-@bMkB-?;uP{D-|bC- zFd|*8HaXQ?BI#iyOlT_RmJrb`VW$MIo!Dy~ zy>Hq|5gd}j$AB7_t&ZF>=gvXzy~A~yD(Ub<4}uG^OIlm+lfA$@X*)Ow;a zpx?W2DcxEE08`|p8XOxnQ1nCUp(b2H&lXLtXoQAr8vW3^xx%~o>3lHET}g#k>GXy9 zef8=Zu0`uw*Cum|MOdDJ<~F(S#5PJ~y2pvLFKwK&dP%8~;FgFQfgUp2zck#h*HpAD zQ6~7p$dvIps%qc8?Lb^vvl`KLBYIxB(#)sF8PF7p%dq~TA!}~E1z3!vG#FuN z5oe!D8*&b+-g2c1!rhH1&$DRmEyi49D*E{C6wqk3 zAUH8iX(?5jEA<#*K(Zr@stUS6eqdd_07=^&cPIMZXwJG_-)P+5)w$Nxsx;gifOmBl z#qt*XXLq2j#q9rGC1Y#PC!P$%?U?_Wwm;U$YIK?tya3z+s|^l5H(f}_!|~0lKIb%s zD+6T?i@70OtQ+a(S7Y_p=W`LnuISzT_SJ7e@l6bZ-ktv4tJklpfLd6oO}b4|)LN$| z+uZfkNVaIK$iqN3N04~}fyfbA)ij-}=a>CCnzs5a*Y|d&P|UCCKZc%;PL=%X#0)HR z^OwgBsp8_q^~+fuH=fA}uZ>Yqpm-SpW>36)YjgR-X6F0DTD-&{yMSna(;LoB)Dl*& zXM(RLXDmx}<~EPZtak&3fU}<5os)g7-SSYUhY$sZX12MQ(e{{%u<7om9_fF0yPDD) z+Jv3kQ!iC5$|L}p$N(f+L2EQRov1g-=<1E&)7S0t;jI;!GuN_dZX{}CySXd?Hc_)fy&KR z9ujiuFPy0C7(ku5E77~h&RZp4eu4QCwqW^Oc>Lf7nF{q&LJ@&FKE8~YfWuaCD^0LWB(w;ynO zka7<%zQ@t_vVf_xH840W(6R-IS%tK#lXa3bYA<=NY?CV3BJ?OUW3N!x6SR^Q4Ct> zb^`c=wh2V`BXT{EW!IoGRy!wr{&Oio?FsxN36)U~vTg6G6Q3Uu5%QuKS~P=&sPn;HU+>@Cr2kmKz_pFx=+fu=_#^xFN*huNs;p$Y300Fc!=$3Q%_&8) z=}e;eIPEuP(KmFr1xM)F3K68)U8RC%TxK#cUbNob%EZx{7Kg#O(|Pwv=n}N8ohjyj>-i-rrB$%9{zS2AH24mLsSc66Tu=;fP4)ADBf&s z=>j$e=nkJoW}S=c8f+XA2cd1cy`dUqT9<}e;2hkl;Av`_o8jttyWMbk{b!GtjBC8O zs^d~{GSi^a*li6P@86F!NPQIo;_p%LOcSoXn!3ZEmBqyO?>#=Rk1sljDoEOB0HGY+Imlq@+6YUX5Y zU`HH|91eaCO`U}h`t9lhZc~>RJJCJ~{4zxczN{LPPI|G(TrE`&Z8*aArNn}yehP}( z@u_B&`EEl48@(DYgSjzV6i?~)5$rh{LhoUzUgUlV)O2e+Mf;PTtiF?9Ue8%Hvj`8* z#)Pe{rKkFDntmF>;^7QN#hhQ+k-bdf>pReM1xBfL8s` z5x0kE!66(F&w zXfK+hFd?gm9|6(+o~DmpiacjWPVc0(meUUWHscPa${dplk^o{yU__ zd19z~>CJ&m^eR8ykoW;8%CiY<(3tB6{41Yq&3rJ&*TeKS-sguHQV+95{wqK#1jZf- zu?Jj@{gyLgl{vNPz+1BDp-LJ|r2gEGo$-RQ>TIk=F5l3AD!NHEx_nC65fDCuW*;7x z8ja{Rert$x!!|(YfZ0t6lPo7h6Bs!#ffC%Bk@9j`;t84!rpBc& zz{5`}P&d#5m&*NeT3^5HoaN`|^VYaowA&xQeb+OQKmG6#$^x`jO4C-dmc55xm%zIO zZZ!t8d)X|MDmk*&Pw%-bEH7k7O3V?k64g)mlABHfGmq;u8h z7Cf7CTEpKds3Wk*c;*e-zqF1?k<9zaBW!#ZB&*D>FI`0@{xC@otYb_?5WgEse5aWs&~2fCUUl4dup;&26A!? z5jhl_{f57tizd9>z6eJfNG_3D`OUHzIi>OL~c6FXt`X2ZYhJzJpX!L zMf*)ro{~+m$%BF#I^QOR<1STm6!)`*o}oKTHSWlkcV3ljN~zJYGM?yU*sa{7Jy_0r zu_SH^^}0RcM+VVW0xda$bzba2#8c~tF33OZ!8j79?NRUIujg*euTmRNaZwJr6!mBP zd*QZ1$q_}t$qxA@f%-}kOU*elB!_QC0O z-~3KXF(8&pqnB<&ZW68;FUxtm=kLMQBXRcWZFc%D9aqodjW$$x(L~zjX-WLpWGK7Y z`&zR~`-!=tQ@{6?SpHVK-14_2er{FDRD~C-t_Wji-Ufj+f_2oJr?~)~+$s-GtMIy7 zGH=N9VqeaxLC7I|W3ZH25M1z zX7AY%fmmqXpgn3u5@@|7Z*1`h=J(r8xyFbM*w2NYDt>^5Vx>up)rEJ%0@E|Ji~ z8oJcn0B%gG-GtXf-l5y<;|B`(c*1(dC?6~tP|$t><-BOpL*5%hrV9~|b;2)vfhC6o zGy~BoO?MyE?PTt_tU1*Yo;`7nAZ%eGCsq{ouyje-#D)YI0S?D<6!UMv$(6)hLBMy)Gp@U7P?p8h6HirX{UMb(_UP(y&?u>_FK)p6ZQfAy#ldpo@=XYy4&@`i&1{yQn2 zFt!cf-){m1LXH1vC2;^UM+$&5;Gu;?C$WGa>o9RX<`H0k{OPnFcK||mq?^hhS@Obe zzbBky2K&vVEiq<{+-~-$f(_U&H}b^u8$Dq2`+z}5oMJJd(Tq0~Z=BBoE$2&O%mxE= zv;q$$ht35>guY;Ib4YS!xl3R-m^Lw&i9ERHUjva+bU@yVVxSK6&;-Wj!6PLN|KY0D z)ia(D15&Fk=4)^pY|%;Z#X>8}5jP_PyOX`|ye&6X|b#+JxBpsV5zcJ8+f$dDi z6nwZPkMAbTn~_c2cNMbbIKO%W*hpa-M-Zmz6!Q=BIYWs-z8bP}u1`2b(nMMyz%lWd zOnBt&)=9qqQ6FwN?3`I@4)4x2?s#SY^z%D@m|8}Crn@@i^iuU94 zF-=y@y0oCAIV<+(rK_)sTDLF5O};$+fOD;nUijn>JYd^w%&N73_&~X0{vO7nka!+e znfUW(3Rv!D!!;QtN%v1PcQCl_M?7C-CsljZ7Ro@0Tzj5SPk z^_F<#Sq`^-O9-|l(rTdb7FOQy%|NXH2y&#D(KawqZR{#;IG*Xgk!@)RRNAyr?7)}E ziH`A#yHqCuMx>ZI_Q!$^lFJHcA=&^_7?_NK-z$t_hf{}_HD7w063Y^EsZ;*)X8oykK2bHvN3ZX-biG?*A!CO&5tG=^TsX5>3`U|)q{xGu|I_cP z!<>yusw++kK7^l_73kdBf|8TjYEDH!47ZO3`*}-nb8GpRb*kUpkr#30HbHh;!sv+T zuLQCPO|x((+VcbLh$V30ICPWsmKX8z`Mgejbq>NDtf@^;srk5rRhFBIBToGby@=>-~!#RgOzCNr}jo<|HoV*|lH|0{ov+Dwc z0*<2TY$CVdNGCpN!~0v!oZj6}5zd8cHUHb!!~W^7+caYzrhq*!lVu5YpKlF}lFC86Nhd-HGa2N_Ch9ZNtm;c&Zs zJT3t@@e~S|B&3Dv$C&YB_+`sgFW|2n>=w6`RnH$Z-z?^067Eu1kB`{T|rWjJw-@Nl=GTnyU`8`tIKS;is<BJ@{K>daF85F7)qrQn=mAj1m*aBy&HvNybx-Js7- zlSh9Taq}j_9R~)V5SCX=fq1#fSMBnd>xs46NjI(Gqm5~=nk_rYtG%a$PSM$hp_Y#>YaUjdHpFzXAhW6ZMq~ZI^=nI`1R!} zGvC}oQykn)GT!eZm4I~l>GL1|G*VST%`G*XzkAg)QIr%KOjD)YE;@HVOm^~IRsr;T zV68i=PXTTixT6kd-|d%ApLa4p9?zMK(gIoc8r=e#(+KAR4^L*kdS~i9XXChlz{H!z z4pO??GIdLi3SyX2AfVn4pf17n5I;bJr+OCz!|{@S`LOFiTxVJo=&f3(`mU*U+8uL$ z>@DJAHDKb8sM$#vsOb)ROw0sgvWyQiru+|C<|MP zs`1=P;EZZ2L5wny{BU<#W$Q18f@1mZX`7Whgyn|A(ans*Jz6x8M6R)ZDWJ}$NC&(u z0Wnm4cW)UmC#@)GvbsO~{5*9It%}l7x&2HS!`5DFyPSZdKMTL^FrB4OTfZo1UUB=U zS{~`!|JXpYhwl1miwtTD&D~p`3s5egNSMmaiPWooX^Qv6Huf*i5B8$WXFd01gZ~#t z<~|x^Kd+{D-uCX*Fs2T~K|7Z3ew?yWh`nJyM46}yu4=DS*utVxBv2wShP$Ihl&tv) zM7o?kugQDG{8l_GUp=7#`{yTkd$~kr=U^7^ed+=Ee$>#rO?qu12Y$$t3c4PE&S4g( z7tN6Qj5=d^r9JG@mwkEO2n_0*1U%@_i~IzM ztD5I^GCCSHOB%! zKR@n$M&-5wm_;G-GNYU+XvK!JyJfj0V|#={@R-OsfV={KwB(aR06qH0OZI?~pjg~~ z{MgZs4-cC~b#eIeIT?(!>CFwaNHqx`et9}1ci)3LSeNPO9ko_&^fn2yv-7?ePAWaO zaHpIkl=)r7-{-De9U$#s-$#A#A*p*S$6v*uN&RezG8O~C5{69-+x*&G&Iqtu!llbjOTbySQQLYG6F;=|+A` z{^RErIN+@O`7gqKpOSx{jjBS%D2Q-6G5>eh?)cr0O*<{Z;Wb-I?{@5hsJiE6HARe> z8fNBG;p{o8>}(Q=6(~14J~i8=*aiw4JZ#hvCr6ct{k6++Iq`YZ(bXH#gj#K)^3xW7f~%#!{>KAf zk6HVb28!F!aMp^w!2mo$usde?;bI7@-=Q9wP+p^%qb}Kq>Ds;ohQzU%sZmB^gpYmB zp3j+r{9L}y8w zAIbL9mL7`>S;*S>qC#Fin6|=CYezy^hx}QOvq_kfFAnzWmqW&F1dU>z3Dq~t^b|2=%&YeC7qObl*C}J`)?nwnhGeo#!;;LWrVTZr zC8XRJspDKy^UzZwmKLj|`C*)|jgd>Ebp)kec0vEw03NUw2u${E8WiDzZJxobmv2q9 zds=5qP#I~e_V(%LCt`S1JF`SFCL}xZ9aG6{#fU(5fzx&u<4KQ#Z3I)~xdekxt!kGg zfh-h%ekd%gOL!z%&8dU|LdYroZqM4Laj}6o-lOv;8LM;BF0%rVEhHFA8{RFzt!uIB zvR3hs=|+YfskJU8Tjt` zVnRUrcq~$h8Z367J$V_y9*&qye5Tbyv1n5+)dm{@Q^GHUQ5M5p5+|cJcb?7RIW#{1 zwXjUqlYON)EyGb8Cy6jXyyn3NZc6)zH+8Yj5;PoKVg zembwjR(@RVN>t+vDp3hO{U0ZG?C~q`{IFU-F0PqP;U<&$Z*-KUrVRb&wc^^f;sdGFP) zozo7?DPRcCBInApVANZ!Wr=~NrF7c&6%4t&Ref6pWe<6!=2f`KK>0KR-VuBR7BdU;AYqGs*|GTGFs%wXu$p{W^I`=KFs0@Vqt?z9&A1$SpEAZMc9NL_Wf1Qv;7fW`8{Gc+1saN%W0#`P&1F2@ThviS5Dqp+ z$(_ZV?DiqQ2@vby^)>D?0Y8V?npm-=iZ z_|r-3O;t~)woXW<4Tg;!HL~koXI8f|e)Y4N-23qw`|Q+TJ?!lvzb@Qk+rqfyT9BrU zW)X-G*JaHR#jH&Yhq_nf5XiI-O9q?M0q6}QxzJ#!m?PYY)X~RxgBS@H@AQy?DDRu> z#6fefw+a{(&@+atBJcUs@ORIJ>QwlxEF;a zERXx`Znb+n`pvp|&8?hbhQep>X2oHjf+qqh+O?F?gtsh4UA~AshGZIL^zRWTk*^B#3}zpewM;(&k#v4o_^?TF|(|dB^^=0=Nfv!Ar{j2wz`% z%b~S!`6*s&Z&5H&?LZAaF}Z|CW(-fmYQ?H8Vz;-lP-zwB_fM(oOW zWF>VK$r--gL~l?o8qbvS>(3cXad@%%^>;PVcY6H`T$M|Jr7v{kTZc6{B6T6rBnbV@ zlJ^NuP2wr&Asa$L1L@~4Q}E_96Ctw6xI{7Hbi)GrAq7S6oA4%I9-kg}4-ZdAy<&bw zcvj$V9qMMWJ3K6TS!lrqCmxI6!;&GyY8Q)Ume1Sva&tbN9U*Wq5Cis`DE$_#6je`s zUh4a=N2xKQ$D1gM3HLV)*2sF%Z@S`L2S49758weVLyWq;nen``xy2F$3Z}K55XE>T z&|$0teL6?MhsgvlN)cYjZxcXQ*AopVuP- zbH9d=-lb=;-2mgBUFj=jJQ>kiGx+69xyrN1f*#hBZa!1=R_Mxu+D=MT))lN&&P7yyzi+CB9SVm z@yC}FC^hY$QefMc$zPYp@U#ogKI%kJHhK8zVf}JM-gWfm$$=(1xg$RS9m{WfgL;f~ ziATjtT0b&=FR@uD>>q}U{J49LVYjP*-=;Dj6z4Jrljg~3lkXqa4-c-hd08sZJZ+CG zu#uY;fl2D5cR$;r{jflOLZ7i;fqL z`O=mO?byjQ1fxf~(wz`V^8kdGTR!YdE_VrAl#9&ncsQ=sMaV(TJ;vg!G2%zZEaVcK z(z>`CG^=nKWHJ$O9S2U`Tvw+qw+cRZ4B!$N9_=<^u-+(rc?1!Vjix-yh&dCbP{nAa za%5h)uARH-9;8;5&xI zHok^ZAJpZzNv2g+Df;pa@#59Xu}I2aPOFD9@F$HiF_jCmmrf8wF71bRvdl!%;z+H| zZGUO29RDxhSl>?#2Fsi*OZR^0z?-EBH46-~kvLkrganAth+4M}a0Wf}@|PVm8Q#{U zMVK`Q_(3(|7+6;X59&YhDO=AE{Cf;HT3B4)=sBfhxUdr6Km)m5XNY0P0YcH5)vqy( z(7N`Jp3$ze-Rj$`ZkorqlVx#G8+poo!{Kb5S^c)^jH17u;!#7kRFPFVm!k`1Y6`0( zPCxy(uS`1K*w!qo*lqwpoR1eV(x%`86}TiAu};Q;n}Z|8gG7#y$F^XQ#f0s93C|Me z>rN8}T>CQeZBFCq)f;-y^7_}$o7D9jeBL0l6%v5v0#2i!xP)hy7EdK4kXg3NwD9qn zQHjqt!~k>VAAWw>!H*QXLcZDMiZZ)bg2WT}$?tytlrH89p7y0X>eb%ffkWbwRVve9 znJ3X|l^r&V85yqg;{nQ**yRuCF=fUdz>r0%_auRPfW5JAsYFLiJE+oV$u45;zp&P( z?8M8A&BlWKktNf!E%2~3v=f1&YHP|72F|^GNL&CnzIj=~q$DrMy91*zJ2o4tK?_S= zB=it@My5QPVTD!0(>fBOXPx%gbPUgm{wQ4&j#P~Id0yPTm;COVk3G1ute6FuB=2sp zA}}#>_4dvCX6QF7`i?gaD>6*f*`W+55ew#yKLlNF`|hVH7y*C(^zanY4AU3d0y5s? zaqs)Tz7(8jRwz0QVs8Z)$lVbP{kWl}sQv(4itMi!)S0HMKhsrrjQMcRkbbu*Q%$GR zy!i17P406TgaI0tG*~T3Kv4pSNlWrNWm%GK*U)!C^vTv{hjRMsVLo?5#2edn_W3{m zan80IuKH4*(2JSDNZx_xyGY)^r8NOmD?3X1jq&7l#mx~u_AwF}!*MM5^ z7I&5QY6#RAD`1vqn*fgiaZ04iirxay6O^fhnCGy3dL&bZDV__%FgTrx&nG;_EF*1V z*QAhz@SNEF`>E|Mz4pRNcJQ&-68QxQOPvT9W#e)8cJ^UP_5BV*tGg^lGC7~wT$rFu zVBQdLBC-&N%pl`kYRPOMF%!&?(}{$4@8!X(yL#j9HR!Y%F*-^S2X3974v zW(Iy@$`@c7F13tsa`%1JJA!lNZ7F~FgZPUrTG@Kz4C)6kx>APN*Vsp%s7tCB@2tOqK@vJQaeBRsECwan<$Z*AME)=1|9t7Uhw0`PmC0J z`6kk5vT|gCMSRXlE=mP@)>iT-*ARSF8fkPwE0-#uv|6 zmCWQAODjA_=V&75oR*3-;zMV|dGYuX+N+Y)Nfn~HzX~(>VoX9Dw*TXC6wZixF14w` z5}^#N%n@L>Xwp2k6GT!v(}Af{tzCWi{=4^AKYU-q74k5TiJU_-5Zb1d~o{G z9#bXrIDV8J{29`iH|HHYRdq3ezzr8BhO62ev<~ad=aup+I^?XNx+c|A|6Bb z2r$Yd@2uiJP9xN>Y(u%ha)_AY9#H(TRS+v#^48xSE}+1NrG*8>meqhEIloNAB|vaE zUIzq%!dMrygX5EQ>B}%ZM$IHLf=2v7s0Za^vPsEjhyIg zHxZmHDD=Mn;rjN6fB(&oA9_q6`Tv~ER1w&jgeb;0EtBt-PD7ei$AWU@Y>v_m(3`O6 zwamv9i#2l+x!XS_MHyCWQ!+HSO^eepg9lnM-1bmo1~5f6MjyP7In3FVnCteAA3!weU`y2mXSWhZ zJVP&%z5Di=-QbRdn1f(d4@foU`(Gnx`AD70NOlDKY7G@~17P!omeJONzGhA??MdaY z|Cw%zElQJB>XeT~z@kzb2{QmkOfG%gzF1f%&gu}uJ`YserhZ#(7UZK|M!32GN6OKC@+>5Ta=GQoK>p}_<6IkCT;=H6Tl41)rcQC@5TNP#-HW-2lksGSZeQOg{R=`Gl^aFJO@efsD z(q1eNoQBJXoPnQ-V$gL6Jn9xRWZRp0>-9z$SxaKkV+AGaj>(ZSyKQmo?6oH6BasDp zKx&j!FzT`4#VYMGn8+MBu2fZXt=SsN$A`!W5Wo;NoSW0J?=3glROBG2%*#)tpeRs! zYP8?uZgs@u^KSL!vkdk`0S1*DwU)H`5bB9&=$jE5r`~GQt-m&0D97m@F1lwiw zC`?dKO~I|7U$kMD{mlAwqIls%E37k&@3JwAtbZ*NBdIJ_A~2xfJJ1ZR9k(_fzU z`zYOV3>c~48OVT@tUuYH1qyTPz{TLlVbfJK2h%9acA9?dwtR2CKni|fkR~--x3^Q` zIv%^JSVdew33NtwCZy36;5d=lz^g;8SS?jX*%BPUTDQ~h{W!D*dlmFxGhsBKYJ}Lv znJv7PrRU`4JMEEZiq4ugRqArCb(~cubNc3bT5!$_jE^5-$jg_E4#^ToQG|AUuBTbz zYtZ;Wsf_I9{s_{9ZLve=cfCe0+nVZv=$w~GxA4~^Ee3tlt#ygf5PzS$s=)C@LmNWy zpVc5rc{Rf6J(La!unRq$sWAr(7q_Ksvei6?>3SozLuO?qB3^UuoDQqq%EwI1xeW*; z3|6Us&$jt;+Mu1SE1J{>jN#}kv0Z?Mv{%J{mO;#oH(u!DDSw6Y0d0<%pHgD@&=$^x zl^ye7c{IRu)hdhD!VN1JR4{KN-}i>|=PiqbXeG2ly%hl8Cv3BXVeq_Hw) zV-YbyO>&?BwkUh9zGD*ld(^yLmVB0cJ9ASeO`?R3lL<&|umnjljg}Er6 z%~5g$lWV0XyYHUWi6E)`tHKcZ_+?cW&KM8%N4i3UI)h%40=?)qUpLfa2#7C#US0ko zIc{7SWxe6CP$3`6Q!C%)$@-z(X7P5z`9I{uAPm`q*E^E0DwC@k8mgJM@i6MO-qh>^ zlOzsjc|innC95+^@=P=n)0Zb8Wp{~4Np?kFiRdmomu0bL8uK5&N)j3V?u;qMHkePW ztY1}JOISDp46f-cbH(D2p8l`L#NrbZdfsCF*Cpv*YXws4jPP?Q4`NEX#2*R>8M)pZ zGxC~Ehv{RUZFfA+P$Ol@ig=!}pp~gIrn5E=smIEL)ck(4w%m1+x=ca>;5ewVG#|6T zU#knf+S&>EH&!C}d!0X=OVnbU?CQP7q8G8xNK zl_BVXW9PfiEsVw|EvkLV5sm+aH}YWG8H@0M5Rx}hPsY2gOFeK+0BiTf$o7#pb?~N+ z=icV9SrRhbdR$-*#5}`|#|M33hc|D9I9c2+B*ArDGnM3msK5{tk>;YFLEXJu>D@&{ zxM~SufNT_nAd=Ti?(%@>IqVJ~>#_}hyggT(;_+w7nBz$+`t><`dgerC2P>F@akP*L z!CB7!%U0#IpXH;r>C-5kj#xkuDJ@7WEKjF>=3YiPtIab7T5U2Mqj+>5o=-b-SZ^@w zad9ALE7m)@%H*6k$mt)xVw=|bd`Yi3G1uG;=qT8EEFc*(EHq0%Q@Z^0l4JZrf9p~@ zAh!-cc+QB$ML0sSnKB=IFC*WVM$b(N;jv@)$@_B7W2tycYl?&cs`bUJA#=l=Rw~WA zo15SK?x%P4J{L9A4;N%Ps%Hk%Q;SGY#_vjPcZ03oBylB@*+LDeIOxztN<((2lLBJ) zid>H8s$v_WKI^Fb6E5@XJLc zScPC-6l40K#hroRQ;7H~1vl3g({|ex6;EnZ?z>c}f;q<8cue|nyN(q;WN2(g6mpnt zQ$jbbIZ*E~>UZdOn(NbLEI#2Kyn{5md5-0Ygcjn$TQT+38DHA+pbhgw6lqQMuuaJ@ zm~44J`_76{>fvWE$d{pF?9<@zkn<`c9vo4#-2XohJovll1vK7yHrzXlqb_5qaG6jzq6K_hQsYdhOs(;R zW3L7gza`08K;V>+A7YOo`U?5?NN*E&f;bJNwj!E|`0@3t_ix|4e*gBS*`C>?v;@I$ zEezt@eMYH(e826Y0j`WzdXwzv2-VbZ#xnby#8W`|}ghigQV;T?Vb7s?9U1 z1`H)RtaF2GZ`^iSfJhMdbL7{Al`a;f>s&cMZ}(sSo?DLWmFJyhjG+U` zyi4ts3k4}~3KEWu+3C#W+Z}1ng3Xt~tQ~(nZEcU_KDl^yOksY?irkHudeNubeg;dv z1U3s+pA|g{t}SShuU`*Vn=?I9F*Ay0T`Zys|5Q+xE)F3*kU+Cf26KHy86NheO?g@6 z2PJ(Ioe@p;0kbn8bwNRkwRgY$=HLHNS%}?tH^7RgID!}z;S?(&Ya$C|aRer*(=hGs zWK4xXtY5zy^Sn9Fd%$A_qPasDYd%Uc_WU@-*y67}x}3Prj9H&tp0|TwT<=)l!V%nVR`}mp*rA|uEdEjb;INKK@@~(i$`@%Or}{|RoqN^bt5x@A zQhs`hd6Qy}TOEzrW#gQAFx94HS7;}wh8dA0Vm9NiKkaB3hX^F6VVN#Bv9Z~xt@-Ad zafyK+=%s7d+ePz9xJ)x0@!hZgdGaAGK0beX-a~HlpN?Pxpzu&*tyIjj$*{`Gem-rV zR-*fmp+j0E8*vC7Yw5b?d1b4DarTKmP8UpRRBqez+R8$aK(NU2wzj2zCq8QM0Wu<`8bLf}lFLp!G*m zqdJlxm5c`ZRQtsJu|0{>^(m1Q)-D&~NNYkwDRR)HLcN9CB4z#z*)Uipkls`ND$)6{ zRp8C7R~R>=b;?HfQPG8o5*BhIJZ+~x(t*rt@rZt+MbN)xNvcKI1}-=?T5<_gTx8h4rgp! z^z16IbTdJOJ?LuNe>}wsw_$gCzLW@fB;123qj_?HG_~xP6&|(>i-dTMuX}++a$ZSyU3a8JE%*4)XO|Ul{ zo*qhgZ-KvhdU36F4(yo239Bf3Q0Ztz0De9W^d0S88e@b6_^vIQ-6G_mhLi_Zj&c9~ zyFa|SCYcI?VLWLguYf>3oN`h(xy5wv`%|fZck|(PZuR<$?u2(D65ct6P|aHUJF?pL zMDX3yV<3a7=5rLQsNaG#WC6mU@t&b z(Se^(>&7;6-x=1mHqtZu16NQX4?5P{-4t`j?{PKy~p1ex@uc`9zIU%0bPJ%x1b8Rrq z3+cAQ&c{Oi%@k?|hS@7uj`2NcH`ajOlgR2Yqz>ySN{&1n7U;jjbYJ~z*YFmal-*3>9` zVLr0ChkE&}OZtROuorTw@m%RQ*1Y`uX;&N`fBp64#P4E8Kw7~b zq~Y#vK~Pf}`uAz?#z@2siP*$$|M(aDk!ue&hIjh1^D<*_U+=SxcNasu_qNiS^UV(S z56ji3!_#BzJJEWd34wR}|8w+S&61_*dEHOZohS+j5F{}(oI%fYPx-3j&q;4~=JwvZ zbUVF2-jtb{?lBmGWC#p~LN~flC=?3)F|EWE7=dP?>YU8IzwdpYXRXTSi8?tnj%DaQ zJ}sEZa8rl}cN4FDIO-U2Fk8f{>&;-f+s>z}5$W#%enlIu#dJH$A;N4l00ALCU=G?V zOS4os4r&Z#1CuR}GEAqTTP`88uUl@|Y=BUVz>F3UIR}VJI~ndGQ3g-cQ=Lf-ftDyC znJjnhUM_X5i?_$$|LUY!f7=*S*^NEugJ#Yk%ug@)I&Sy9dJEQMz1lVig>jm^eY#z9!CpMySdEW@+3DRLfCZpECga_9IUC&m z;ck0q}8RcVw&ei&e2kp=?*;Uz(GY(8UUnJCDvV83Qcb$}E8 z3?HO9-yXVP-VDGuSZ@TOf|I7qeZ-J2mCiFb$!a(`Ec$2H zXg-r^!CyDl9VMMEGA8Txr98>gL8|(|d-o2eRadmu3!)oj#|~tw?GO?tv}i;jqnqc4 zoBf{dAWTRZ`qKS1TjcEK@%h`g1rzzf%R{m1BO6Q(<=FXv?1tA@O4jn4a~$z0=_;U_ z|Ge*Z;AHdCupH#zV|pqHhD&R7%h8ccshd5H`Kjs$pcb?4{%C(YDsEq%XL(^6FrxP; z*}1}e{poIvs6CyI2ITF<104ejb7Xe4m`XUrhJ~-P>H>(bgb`V_F*yaxVm;NH7#HPQ zt^VpgypZz}JH-)^Y>qp_KA&7~Xtp`*NEl4m;@hM#FUz`xz?yI&xdK;m=fz~uDgibR zc}0<|o*LzgQifa3^G)JoX3b)M|L31xo*!{VuLF%k(Dr%- zcW{08_~WkKN*1LH)td=5Qs!4cZjfa`37ib5X={y2`QoA` zGTholG2UgCNtlA0G1Cc| zKhQ8?{*U*C?W;}nNG)LAH5;a;l`!9h5J_s3y&ez*5G?#dTop>-bk2QhBL4h10wfaX z;oals)hZfnxq?h^Bee9$8|}ykawQ-1g5~qW{mor*m{Agy+CmE%POqPzfB%j4<0LL# z{_{_Fyn1BW7%j~`%5C3r9e=Z!UQG-jkUUQ1(M3s@P8AmQ}4%&CV&FI>YWV^H>*=EV;c9euPNvyvH3u$J=Vqr}NNW?19Q- zwuZ;bqg2MP(dIk~*$_u&&tvseEZFqycB}Ow_NUufu3B(1AQ&JpN%$|7WXCJd_WMM~ zT=XNl)Hl=O16aJ{1nE=K$naPZ`cdq0*p`AQ&8Z zl0dWQsj+@-wbsL~7`D{0=C1<@ij3V-`GoKvH)|NshFO5jmAF-}@I+erfB^vuW4IlV zk%;r4DI;?Yu52pm+($a4#?SuYoI*yAqTDDOZk97*P$&U_4(LjzmkjMnV^Ja+ypkz} z`%1NLia-Ci>T1g7K{CLoJ24Xx+VL*vKdCamnXNXPVM{FvYxcVvls(ZLhi-;-iAQi+ zEH{u7`KiKEd%Rgb-cd-1U8a-Jv`nI%`z@!E3^q;gpMG49){(QKj9CQiBa5LSofyv( z(37|m1}>0{kWuGgwqK4c5sU>%dh?ebJpJ;DbS9npjAw(}sfvS}1|D?a5+f%`ISh%!g*~M)osa3Rhe%j8PqLZK|OlOc=qoLoq!uVIZDtDXh`ia;QbaU7P=BDEPZC|}VsWXJ3ISK{GFwo-YRjpf- zqY+jBUA@k{`;_8=&s__{2niKUy?WPW!A!gp*Q^vWXVJN+AM~4;-!SI284>ce@B?2| zlDW_d8kg^W`M;c@2jIU98GL2)-HI>P?&fB4yS@5QA)nZ8_Es?iE~!a4#i2;=54->K zFW<`C^ui?XxC0&`U6|tLV)Ch0mRU+Y6!v_u*oL)ilMj6{B&tl7l~Gdw@N+u0+AOvR zb@ukF;rMP6&zOy_t_OyT#^CT-;*dC;`m;ZNUXKU)_-41ERt6*@nQnT?U>s)M_S_2C z#ji(&EGn*FZhKyThjhVQgIwgJ$YnA(KT^Ol@xVgf zRY7qVa_Bi?$w}|obaKNXH{w_e_TaA7I6D9E%XjC7A1y}#BM949CXWx+TZxygYa7+` zZj=J;PhGX65%J*Fi}DV`4Q&pBw6h_(|CE(p8fYfT0)ydbYd8tH)1a*p3R>|Oe5rFLG^`O3QmUt>Z3__H^^ zdesCL%3p@NV>(|3K~2BO>tL=fN}>!N8)cdoqth8xBHK|o2 zzQX|j;z(*C80?5=20_K^9?Q8!S|3bdEUlbgblHEtyAD+v13ZN4><@f$p{4PGSM zbumeGV|u$^6A5I(wAk&6f!9?CUEZ^pBB#|$U_1|=zU@YMUV3b!qVZ~fd&_#CL*HPY z6Do!(cqT*T^b{K5rcyh;=s}AbJo7lI;!Sd_>u)+bW{g}iFjwxErbxY2XtoJ*~=8viTPgp^f2WrKju2%eyk6uiGR0a3u!*=6JHN1F#Rh4s*e zC`$VHR2vnZO*IOm)rF&G2;2yZ=Tm3=Axi4cBEe?eU_ewWCugcRj4!j zZ})+|h`M-M^7B4P#Uadjhc=ul*u4d*OyH{fx~ljen|px|-cSF486>0p1xS5*rSt44I#_+-lG6mp#LoP0gS!VhCE^-Q27v z*E>!^{n?n{(NJvnwy>U;WA<^=_4@Yd^OBsnM)$#0`qz*5gq8DT;HAr+Gf&L+Wewwi zk|KJPwaDb_!{Zt}j%U=4YhYkii`FCuB*6C_EzaR>2be%~sT06_>>{Y7uFOuUd3@rJ z1-V=y3Rf}tM_OnX#Xg@ObVdd<6ODs20%p_J&Q26pM0mq75*8YO`e4-Kh2E##zz};v zI^Jy(w%B8^kkM0!h?IYOtoWpWE(Fr+_#OhWQvRr#wMv7%c1^P)xgIja0A#?}#%@=5 zHq8fFzaRAWd%#a~<BxVXu!#t=PbARG_!v7pF{)_D_#o)%Jsp9FBkkh=y~%P z{}d(tBqsT?pMv|N3C8rCubS1Kec6oQ9IZmpZe~0Ea`T^WHrLzLD9bxF!OeP6P%gPt zReCItxieAAy7_6vQ`uH~LFLM4N-?AC&SuMOT&Q!SaZy$%K(bHuI6K5zZyERYc?*4x zeqQ=;iP1)?*NHl@QRTmKA?AYOacV)z=oEfNgfzOHPg_P<{S@9h?V1{+UG5F^5Lb>` zALL;s)qz<#i2~Y^yKZKtidZnpV3Q4JMg*SCQSm4*hUBqk#n^MCPRLiXq8G(7 zln;|!M7{}^v_$DJ1XYw*|9EO}?q#c1Cx~|O={%f(V2@%~DlVUuZ zZ3^DqJiiDz1C;7h2~W6*umZ_%yFZvk-vYz0hPpmlU5|Y(IFu-TF1ay{PNtsF+vqkN zj#l83Fmyb$DqtegxOoU}Tg2De_ z(z`?mEKvXy!uKKNY!@RN8qRqJQbME)xV?KEMWgTlyYpSGErgTA<|{;ok9j^zhL}E? zr&Ug>%`(hkQ?8JnbCvTeKhjLu=|P22Jlj-*_4BA>j*)YL5?b=-h8B}b{#Ytr#VYfZ zjx`HmhJv}&H#hSM0LwuX_B!3g-C*_g<@SD|$NOQ@6VH0H?Zd;jC;oy5MtiR>vHt}* z!T$@|Xc!|@{&7%s7I!mfTg5hTh#pZV;6x+)z$JmtGrUSTK(QNOFzkB4FgKK9`Sp*5 z$*yu;40Lt<<2JQ3Xdc`ohnX91kjJ(}R^9~sE`iB4N-S@9gPERHI(xf%P$zN%Op2?Dc21XN> zDxts`)fc`4vewmw^NJ99I34-CDAsgUta!n3Z2ONA)2e0iii8{ z6tn1%+bVs178(c9b-RQ~IIwvXIzzJa5WzcQI83Jd8@U#)^L7ZXCsorw|I^oRv)!NP zqvyV}CNWDVL=zfvvfQU_gAO`B1b9Zb1DL2Y%oF@gU46Fc4M~Bx1TI0=&YdFGtG`VYTk-B>G?O#o$f*6)-|80)acRE^zZI3NA%mC@v(XPSZh z{W)WukYx!kDq9Qz!l|uuqo)XjvN+T-FFyd&2ADN6vm0h?`R5yeX@{vNlO%@+u|>$` zP(;+ta%Z+(_Cu#XV}=4HmKjJIxV_oP0Qp>MHV7l=u^||u#OozGFsQiw8W5PsF_?kc z7%j<-v_;TobO^lBssNb8`>^n3$~)x9TyD6ofy_yOH-MTX;Vel3a+-~n&)=T5+Z$Sm z8+O3^A>r1%<&KENEH_i43jAas+W{#hN;dJkqzZ+LlF$qv?m!xh0>5(^#8}HU!v-Bn z?E_(@Wx)0VOQSWK4XwB%*MswW_N9PZ8rs3|=H==0PviXYr#XQV*1@O)<#=Ke3?u$V zFPf00-H3KKWH8BuW=yG&r0z%rGrcHo?wRcoXj`v~5z{>KDC4=So0AvrEJV~((8Gfd zfA@=W=ctDGHt4e@v33Ko!8;%714MTv2cC&{UamIW9#=UlE;pF5V=ca1;>?9SsK4xM0EvN6SQ6V!?ZN9l?5f8N-WD7@drH z@x!1+r-bV+bewJ%g=q%7-AA@s#{n-AUmiFOZWWkxNunsCn3DWyswKmFy$IdNOuB>WUc`dOoN44ry@bN93x zuLlm-%mP3~waJP9&|Qw?i}wNw#ODM1+7v7Gj#O)xc;^tF##PC`6n}xXjl)5K6snu9aFSEbDx$tU%&smpS5%GsD5q~ zQA5d_j&%WMsA@S1v~bO3Xo? z;$sRDfzlKr*(6PvKyV8VI6Z=)&>a%CsL}`&G2NE6b`7-W{_B^!9;iV#9r&x;-uTcI&YDB!ikWfF9JR-35ZBF|z`;@OTPZLqqVZ2t5wS-Y)h4V|JRk%@>NMn9TP;Dk#Z zWA?3}iQSt$-lxg`{(sJ)2K|@+ZFhZ#lJ<7B*%DZrs0uSjOY>?0Un+J@{N$? z&#;(pyv|}DlWS)`&ZekyCe#^MYRo0gc!O*Uqv@yHXL1@*9C+g(Z0SM23+lvk0vDdIb^1&^V|)aLBeJ=eH3l&B?8nS>$b z^8Q{gGf4mW3Vm@gUm?jAx_q82ng5H&ZDe65S1lAjJTFty$&D~cmkndctKg(PDs4#1GP=Yfm~5F4YYpMtmmq{Z*7LOBy-O5)%R zVe1Uuu0y-FD*$o}%-PM$)LMPX+PcmcYBc0pJvsb~5Bs%bZb`a7A9OfXZ*GAP@cqP# z(5#+(DAlEw7HKG^E#vG>Fm|XJHuX5^loV*;G-k=f@-jfzvVVT~^5fS#n()`07I%+h zRYi8zA)hQlp^o=!yjyfFLhxkxQB8C3az{dq(^`@(pTGX$VR>`6^`)dp+l}j$JEUD{ zc$}416UK$>{ZMtm>3J~=K1z~ZlVHSrv*~)dTBpC-Up+tWN1f<4&~Abct;v{M2~6Ah zh`F?Gi$P8uCC@5X?|yhCX%|YXnK3SuH7t)xH=v9^yWa#jG7q|&h7`4Bc08m%1nkd@ zP~;Yb3Oa67gdEBj#TeuEnGLaFL?hM55w^;s$+o8pO3o$3rdLUtS#x?5O(WgOVT<+& z$WW<$Ri7?1nuKY>#%DyXug5K!_9j!%!lnU7HCC)+t!+AB&m$Y7wM&qadllxA4kM%p zD|~eS?OtzZ%S6VBXojno#}LM8Hl++j?Tq)QWNr=$yy24R7#GE&FiRiL1ff!LG#+BU z%;=%@OLgH$yiAo!v=`QNI`AB!P+KL`+7Wny?ir|9U}T<)@BmocN-&{71w}<4?GP7F zzEiE!E`^2gpzjNc;cyMehZ~AT^Cz>gM}sM}aE;k^4!DrSm|u~43(r;0R$~Z}Lo$>$ z!77Uw73g4!q%4kNl!Od(yQC_wrzmuLplvmYkIi^8jG8RD%ChSyrV`DsXEYQT`9ajx zBB+HHbUmUX!SrV6c?_V_MbYcah`Teehr981ue~|y9HDq21mx+bjVn9*{ufM~LTKro7uxtH#qi^c7x-rR2cGlp@+&@!E{=Nr?<5mS9UbS(UT`$ip;XJM90 zI>%0AbgqU95?!{ER8nyM^3!hu6pZx45!Q13mi*&q)y4oC&O!H)*ABEy?9hWG89L+z z9p(GQAkx*Ewn#c1EFW7naF(w7lc;V~p~4x0v`e7hT=pO`21@OK@HE z!Zp`j*KKsjZ)_)2FAPShDw7J9y*M~<9&oZ_{sla4djsBeyh6k|2>a@JE%4;Tq=K>M z{Or%Jp$ji_ty87-JiMoOFuA)QHJe=<2(5+n!nGUJ_RebwRi3Uu3ZKLg&L!pM#~rQh zAT%^04DjJtQ`(tmPp(I%*YL8Zg`-0!6Yuo#liUrt$5}VsQ-BzLorcpIgRsv-cH~ z;%l~AHNA&Pe)BRz&b@FV_e(^^$z3<6F(sPbk5X&Hgr$9B5)4uzQ^rk51KJ zuk{ivWv^$okmDthnXoa+m@Flhnr6#6Ff6Jh5zpxbm=DE`Q`jGzn@1#xbzB4zUK*LN zc}Fx;`|$Nj(6hk0mu%k{FJqD>mLJq96xOA)+B zf6N7LR6IPdG@&L==95+zgG`)a4Pv5MQIY=*DYEm?2)m4+EFBFGnR*#`G*4p%jLntx z@Oix&w8QC`aEuM#2ZiJ~4>XM@6vvck(ck`cazPBDucW{K(?H~`v0Rcwn38J|efjlk zO$i?#^79i>>~Q;cfIx&IQ||-Ab&<}t*W3Q;YTVT*S;t0iEOhMtC{lyz zuJe{;?y*GSmY=@Wy41mB@~&Wc19TUs;>^~Nq9#&Xx6mYL60%Q2YE}nN2Tfa$ki}3H zZ!)Gq#LhDmFJr#@QoV#`W>EER{iAaB^=TE#Y~_|W{l)$DM6RE``|!T3*z3`B(1Of> z{+y|7-)uKrd{#`7NW{DOe!M^=c^3cl<3GFl%b-#V65knaGNrfQfuz|2jHAd9h)TcE zj? z@X2Ms=hS2yyClm6cB=^^LMWSGEF7=_& zNrz1y6z5_+gYR1s!^S_DSYCA1 zhDph9`EtABs+jlTXAn(*K>qYVJbsotc5f)ET2pGiE)St(>&ccH0YXbFQdNdqTB}Pm z$V9yqQZzx+X0sLL2p|R9-Sm!3eB-Dd!|(i5R$D@!vo8{K-NKpDbf;ERq#Lw%8tOqy z$qQZzbpr7U(cq}%YVV`FS-$&>)}ue<(*md)#_{BueE7Bgy>c^x{z8Ckw!V%QcQ=FS zo*ALR#YDsnL@hn)OKKL)5i)EyX3Z%S_wnn?;oO?{(Y4Q*wDerjEeigB@tsOihBZB= z{@F4b9eQyqo#X>O5?s5-@6S)pOsz)ao8%3FErokp06V%^#ttxt-u#xBq$roK{Ctse z7`*aCt1iWf%b;PVBEe2lf78yN=brrM0zu0V{coEi9V)(-#^BU zwB+L#rU7dPMh2cM)3hvq>M!&zN5UZo9u*Pi05VR5RtL^YM5TaxgROc~wgv1!yz8}} z@tSnK;&C#)hlaxxfE`BI@zl06!*@fr8xWTjh%z)I)X!0?IdUXX;lrm}3L0IHY!sVN zkBsjM4ONkg9>q#Hd3==iI^Y(r@-P?x^^PQUHj(5Z(ma=vIJGwbS1q5dtl+M?^6;mq z17(@7yb2E^B%2yDaq?|~!9DXs@|S0RuIXko2K_R4c$(7$YFyy_t)5+Q=}q+EJ;y}~ zLkS)xTNypiFP!Oe0ICBTBFqmMjVuI-A~U^CNefK?;t<$0tpq0eGUx=vH(w@WQoxv@qjhD zhN|x;m5-#sStQ8TVV~hDP0^sbV*$`!_S^K65gBFuF@%oko~jIZ6C>L$hube}lieK{ z+CE#H(F1)!QVV()50+1Q5)S5-w;d5L;3os;tfNF4dn+RHw3{ipCCOsWk%!t_qBTq? zCpSAs=D)Tg8_622_^k57XbA%uv@3oxe*I~|O`I&ihvS=D=wvVUNrYQjYh7woz(`Yh zitp>yil7WP(fs#W+v-*h7vy(I$9bAwBW(ImaT}NC4Wqa22cvHbJDYlOkw)-CrnlQp zL$rr1nw+}s_uS(W<4&0Js5}VcrQu`?J_C4G$@cDdks|)>&+op?V56jCIu>K}g$xtpg6uiu2O~-7 zKH+?gt1xA!6Vkrix>xHeUjPaps{F&TJLC?;0R`X+M{%f|5PJ|j@SL+z&hwzvRn;cJ zq014{b^{`d*a5sKHaqHURLK^z>jmqc5x6+^Mg4=E9AguM-YMH4bQ!+X0$)bp(Aw|O zpD<9eZKY+=Q97x)%`1wQoSnQ#)qQrL22@^!vEpc;%NYVIlXtCRE3!6PJ?=z>PXX2q zjroA)OwHH74Ii$D*(~9gC*puo6|{cQ$Dikao{_HL?@H4u^vg$ODf!(X-zK2_(*W;G7oTBk-dZJ9a8?(idOWQd<-qDiOR0 zVHWcjsOq!C*lcWincV{$gwZPhcw=)LnL^iW$x^F!adgtG{Q4h%_UrQb(Pba4+rty7 zyo9xwcW5RRWYheoF(8!5J!g?->1_H>+b~RKVD^S+_478 ztANH#hJ)2^Q-vzW>O-!+I;+!AWFe5VKvl!YWKz)~nhdjEYN}l;K=#OLX+2WP63+#g zW+s^juufvD=B^5_zuny-mF8(oI@r)bZLr>k1;L|UwV~~UJwiN+2!|mw7DW_KHlLnW z8EdB8t-mif8XE7z7Nu&e;8e$mcfo#GY$@#7p39L~t@Xy1#GSQo8HUkp88XCW(*@le zmd#BnVVi_Iub86HJ!wzW*T>rP;|xp`KVQ?cct$k^HJ%(Ca{a<=Hx>Rinm_sTXUaH6 zxr^Np_@!*tTjND)eyYr%d*01QPVe(W;qtVep+ezfdIJR5u3zY^Qu8FpJo#XCpZDD{ zbBX3zy^lk*))cbAp@M5xuga~;*>BJJM_9#u+=jQ2S&XV&x0rwZ>ondC znSqp~;rf0t+h;0hg*h+5!F&n9YIXbYaJR+^)M+6BH_b*DEQM1kw=~lTKz@!7(vj7s zS`A=c*`@cAq5u7L41?V zNOKfbiJ{5uWIJ8XhLbo1x-!tr?c+LUu;X)(<{`w#Ph;(?N`s*)O`e!dcIvhIMMEmN zI!$-Q9i_$dtx%iBg zKomvQ^ST`z)O3RnkY6}`Y_P;Ods!m8uBWT{ly%R<5>4s2x1a1L*yl?1nnHA#d7JVk z`op)WM3iuSgAR4G#-ANeMqj@b%P&@Sw3gVGh|2xvRc{lW*Yefm_IeI0%n%%}by8L4 z6RyqmFlTnqk6W#mKmXxjHusokY4{jvsXHuCO(CR)yn`}?O8)BdxE{xi)23Xv$80;- zNv+GFmI5sd3(f9wh`i3m_YYuoLnOO^bo1G68X5fSvPc{3cofSKk+yMKrEb%6!Xex( z&Vn>C2wG+^SU+#AEj*vmDr{WXY{QXk&`Yy9dO$2)x_J21uH+&3bEMk4@2iUfmzyi; z`3RdQ0Vz2C97@_Ywo_YbA83Ub=9t@aI_#EMp~k_yueSm)T=T+c$p{nJCx+Cz^zQJ?6qLPu-Y*Jp=Yt|og8;-#1vC0t z_*e{g(D=K8QZGAXGBGGN>a z_rzKXCS=_fy;M=aFWPhDi&F9vj*3ez#fHJ(cW{fab`{IkY_?khvjCwRbPV&Ty;=$-o=v{i31|0n0`7+lmfx*gFbEg( zKDn#g+w1K_y)yolY&WqnN)w$U1k48+9T+{4VA4~i^SaO`gh-soxB2R|YUU&?sHFIx z|GW*@Rh+c@1FkuSmmzdcmV=hQysZxh8Nc)pt11-P%J*+tt(qXJ4KW4W2%QI0A$<}z ziWMpLkbzl2=g3rii0QQfh4|cu;MMTRQEErvYfU7A-Uc_mr@dJk84vFPd{=| z1Tk1f6VK5_wYnnPklr?OufcJ%V2y*$g%6>wp+(!p;S>pel|J{MSNN%+8};wh4`=V* zzdjxIE59wVUJ)+m*C2=7%l7JaGg{HpKWp}{!*>p6?G#`tkF%JdlF*^9JDaddYdiTN zBRXCL6Q*SGf>nObzK3Pm!7ZNc8E#uP;BzNg{eDy2PpoiF9VwtONVhFoZsOUOrwye0 zXf_MoBIDjlA&%$gECuN}oHk^x8VC8bEk?W$RNmjYRag1CtT#`;>$&@vf!S>em!B;7 z^5ZG0k0IyxOn&vziRwP+$XO0}mLjkd1}DFIdtSPfyH)T29aicG4&R~D@5-Si9D-9U z7{WxnsRI;hSsucU5*r;>N= zfQ+vtbefudP{l%6ixGF*j?21VkotvK3kWG&R4V}aQ1mNzEh98^2wRMm*4%( z-<1>N<1wq8XjL4!&(yxzJ(+D{$7BtXw}i(Bdlgjt6nA334Xl{u1$&2wQmU*2WL%}l7AQzb&-&I$~6>x875 z6FK~*t2hPmIi&zQKm-W=b^Fz+pj=(hBtN|U5`B@ej~3 z1!#r2U=r@4KlT#rm8Vx6?nflsf#r<9e%mDE+S+eQk=?{0in%cXb(u2sUHO&sn$T_l zv?KOId_WOdKe(jVWzvluKx&MOgsQ4a&6<)cYTg&{Z4J=(nEc;_ekDU;?vNX>^yR|0 zB_FZ0V-K(Q@yFj@|8?rNX?AEhnGT)v(c-Ca7HcrMfZy$k!3(l-`s>%#YE=pxi6mM( ze=hpK2)a5inZWt(-`9{OiWaak{@n_{qXUw8t~Drc&YxDXBAu&8gVBH0lK!X0v| zMmtL67>zMRE}n0-x6z8%SA^Ptdl%40yAwUYArC***`m(=@a4=JjC^)+P^ z7+Cbxtc%H-NgALaA9*66JvKV*XC-hN#yKAv$V0B1fWs_em>Q{IO=-}!JGNQ=)MR~X z%FRZj78Y8ot!drkPvxu9*=1X*wJc6ICY|+xX>`xdN-EJs-KJI!!j)?opLs z3I|~>*S)t5oYNYyb z;49_JkMG{Ud)H_&;U#yhd#Tc)FzZAk@93BSDH?@g#N{x>nogU3xbPW^15Z3Hl};L5 z`3#mADxcTIx<6j5qNZM;3k5kleY_cyU4*U)hiI3)|L$!~l;lRYql8Kl5ziA;yW8&6 zJMB+RLO(*cT%)?jzn^Oo+wLFiMMO5f^-R}k`0lRP zJbuP6)5BBQJ8XLB7X-u6{&Uum``EL3(;~(v$uOkXx1z`%PBjPMziA{hoXhh2E5Ybb z+^d>PCC%-wA26YC_@SzT+mFg-`@q^GeY5}>MX7)Ay?mh|MB~) z(@IlPWu^yU(xi^;1YK|Jms_3;>7x&hlkXXwXd_)tAq8_+6jh5~2q__WUH&H1;i!x} zKU?%67SZc~ZS>^^@jh zm0CK_0$S4{L}qh~&rEG;URCl*P|;+-am-Cqsl+#91Fg`0nT&TtoI228$TtF??6*F( z*ezM{z%jZNdYO9!Sf{$HQFpFX`IGIahC_UWoW`_eQS$9-S#8&93hya`u7ztjh^C?p z>x56xV2(*s0`jKAG)!Htxh$fIQ}SQ*?9{ZvZhv_F`Dr=h5#a0@8(lTA_tGwc!%fjN zS}b~wIT($74IlhC2-X8mu}HVVX)Y@!2N5a187=a-NSI5$X>j2spmrT`YXmj2na?)N zu`%}zIQ{Vnv6M#nqK!bO$9-U7$yv8luE`Wo@v!zNbc&_3i_sgj;CQn#V~K`Ypi68b!pw7!_j1PHJUr}- zSHFFAaaL{%UE!<-#<{m$Z}5wJD3L(uTXL(~xOj63cWW{0jqH=77E#+GmC!J_g3fsb zb|QIf+h93ki5d-_K+S^Vnx!>OE{2HP>efxyH!+pg5en|6Nl)}Rv!L0)1{l{gW_s>yOm`J-_l zzq$I!8J$g6V&jJ1h+bH;3S^s}h!ovT+n+ujos~=P6*e)=AO78MbggEN`PtFfY}7dk z53w#KxOuXmSj;04aV#G;Uxp<%b}%ZC8OOeevVB8iVWKF7+qS~2{yu`uwEX91O=Koa zpeH_gS1Daw;83M;oO+XqU24MXmC^z^XbW{8Ln*zb$_#c{(ZC7;nZT#C1AN$E0)cV{ zax(7VF!K97)9*BNc2;3q*(@M2Vaow~&!kgOELP;?^(S-ShRGh|$;>=EI(~EcshLQ> z{`q&8qSU?FSyvSd(k_12HucU!AX1Izk~ctx^6|LRL_|x!Rrl&OE49EdbjTqYg4ffk z-jYIWSM>$&X=)I58jk!rZChJss+({-pUjq2-pHjBFYoK!fC8og1HXr{y>Aacf4v{f zuW2NJh1kUn91+mj)rw+tKD|0NZ^zEjMWoh=(sPG{=rKe^?SPd^hqh25`JE1}8vikG zxJAMN4P=gOh=N_zzq zLeG-`xV z1|h#zwOP}EveeylKE@G992RzE9w=?y5EZO5#PG2PUSBgeOuO%)B6hld>HPR_e${Tt zq1dRjU=AmJy>TVzSK`1aHZRY}vu3?zuId+;&EZYobVVv&J7b^!M{$&>=JfH$-|>}&hRBA5 zRIJhrIv(U zSxt8W<5r!hE)WmU6^!%z%6IQSy*m;Q{Aws3SJjp?jB{Q)fB|Fy>FK404H6J2u_7|v zVBamrR0W-14tz>v5x&+17&QhsNpg<)Pd0#R8OHTyODdI&bkMAGD6o!BRH0tykILqE z8~^j2T@`U*%5_~F-bRDl=i8g-YjT!NsRIqB)2fx*6auVH>*L!G$K`-&pwq2Xc&VZ< zI1{>60!4%inDYSH=b__;x!oq6sWVLHsKdPz9)>+B(#d+>FIBtD3eu*S{NjHyqHg7~ zQfX;?eoALmrTXhvc@!6`zfh}73FB{RvbQS5*8#f~>LIb$sUC@dW1IHe65Z+3KEURN z1f1tB#u>SHb1j;YFkLk-eY~`(HoO@rN|2M>O){?90o}g&nh(?bPk+801GbT|nJwt$ z(nHDU?IM*+va1(P#+O4iMD@bWyd05(yHH)eAX-sAVKM z=%ie#m<#kq@G>1^xSvDka=axN?ncKFtHGx8zUe~7vd2+Fa%1oE?OE;Ybt!R(>(7dm zTP2gsfnF6^1@kSY&N^qWZiwBMZmZ2wsde_l>4#d>sCBA8wAh)+I$!N(C)7@Bl@fDl zz*Wt#Z=Bh)VZFhJc7m5lA<;#`2BmYrGtZQY`%!<&og`}ry+}+-m+E)F5qTdr${#M6 z5`Fw6Sbp`Fm;6YBaPqiGRTm)%*urH-?3wjInlsNEo5v7_iprT|b)wzvip+1f)$;0X zm*`TO#H9~cRvypQ_hmij3OIs|84gI8G2?NG;=AGW^Tr+C-F@5d?^r^g=g7AyAd!7w zoF=+`1uQ7g8d-})S-28ep253^-sV%E(By1+dsoaCIeEiEf8E&6^B5yHbk`v{Ld!;e zN0S1UOfPleD9k68H7`1t*oP=AMt)5;s?E!i$g&Ss9luJuMP-1~v}5ydo8J@KccCAT zp8xWDP&MI@b67uO!ld7=>{`8DE33CV28Cd+51R|>QkHY{>EhG-j|!PB_GGlVS*WAL zHQOcww7b5|f5SY-a)jT!F;eMFu#MvnO6$9GHJWKP2C6DYRSkpHcIug4=3->1=Hx1 z&rg8788`~=H{R;6zniZgAF0Q*|yf0|;A>^Pd-1IOplGUqT zo>n?qw?Cpd zUgrZ5yE_BQ+W~^TNzX5ra22&+yjy1Av*tlp?N)2bcpl5u8sB>lGn~o>0qTdv+J@dV z>zT=9&0osluyqLhu-Is+0n7)o7$Nv;l)u1~*nFC<)X-WXF3e2acet+!|OEG5mQ^f3^a z(oxPt+w=XUpjkk%WC9;&KfJd_(5zX8$!!hc12=4XkSaD7$F@3GrE2)JPz9t?NK5;< z2`i7>A0933%`p<;Ddylg(&YyE)M#}_ctX=@Fk-4BrY>{=qdMvsX)|ANIn&yuwiqsG-@^(=;GrDngc_7!@;GE~r#uX?0!9 z13WhP?mDejmf8od5O2hqoGb*|kS=U9*IN#lmZ3bHFV?6Q0ytq7X|}_uICc7A!`MD> z;*RM-PL;E&cD?r`t9HTLOwz}be6pb=0dS43k}Y>Q)pWF0nDH>zh|YIGS?X5lNOD_s zkXNs+&i+vzt^Kw)2?4v%F6A3yvx)0U9o|VD@_u)BJi65y25{LHL{q4pOIp3rICVQkS z>hj0P$bb+5dvmmgokvDNNY(W9jk=VuWg0S#tEq7{d( zNkHC#t)mz3cj0)me*98EVw)~rh7}oI70R#>e^7LxL*OEM%kqIG>1deiAxgW>N18=z zB6@E5^fyNx$cfrn&Fg19zf)3ifPyG_cOiq>V?^7)-W+U~kSz!?z-J|x6uMzV*Be&i z0WFrovm)RHo4muroZ9=!hvSCHcKSG*K3z|DyKxxs@fj_cWQ|8oBU|Kpi&@#Yi0!c8 z0@gk`aY@S?wX1GAorL3u4Rcs*OEeK+PiPQi#fyevct%SgeIv6@gPdAts@JK?>BV=! zbwj$D3iNFIlYst0L!_t!+fZ!)0988S5LNVqX7hRbOi6>%=~aVq&}Czkb&QP3^y6J-lBqc5Y2I{IEbNRRY_{2W&0Ffao?`L-v`i zt6=^NmZNeh$rb(~9uk+a$ zq7+0cnY(kmavUQgdaZ{*0XZPzu<~V7sng_iiO|a|Pc%Jf*F`V9kT;J=+Tu2w@X356 zbCIW+&&g9G5aW`U<@I)K6scX8nt%JBpzEKPFKeE0Sq%vL1{QA9zVP};=$_Xpt)%TX z#i)caCFWk_IbE@IA)Tu3#lMvw#`R?0AU{-&GmcD& zj#TKHA?d^!yzJJS3G)}(##s%EDa@kjYKmG6Ts@X~9YY06=>B|^XSQ&Jnq@z%U;XBk zn{kDq(CrPWV4oN<*e}d^=xPW~7M7`6__G=%K1N3^XR&k1Hl!+P3n6J5cp5&26L}aI8fO0%1=$MejE_IDE9#J%w*H54CC;STVE8}R1{dr&t0T4LCicKOtAq<}V)ii7*`iD+tT@&_fi} zE-y|mG+*qRAHVy)diAa>mCF!-%k_#oOeTvF`W8(*KkE>K_0yJs#*AMw{Spx9a_!LW zzzTozx23Pq-~Vl`(fau6;@lwvCVIFHsFcjV-S??mlfLKiM>Tpf&PniX`Jb)>NCm5F z-iD%3fB*g?3$swr(z!KXF0XGV7I`>! z&VCHJjgd^KIfG8MLnn>%HYopE%jg+8h#iK7edve0EEzNBqk(K}pO7O0<$}L}5db^r z{hWY2#LwVB`+|jv(~CJE{Wer6LJg3W1n(Bb1R5S#NrzyfnirDAwC(z4*9*pfcwYGZ z-EK)HFYQ>XvBzYj4R6n&5f6TcHp$#}-S*$fxv`DQgW8gq8Un-3T_MEGx zB!?H@b=vjwvnvR|@oW#=h=ZFl?zgH??g#Uz-qJgbix20j81xh6`wMUfv!QWS{neTC z=2e67?FqkVCB{}cLxgD%$zK!;Dddg=2>UOnz7_K zKVO4c94$uu849bLTf*$un~_$h)pJ&{Yu@Q;vqOr!blLTY)(^)~TO-YRcu`Yxo6~1? zfcP)~u4u_Ys=__uK-}p{t}{&)wW}UxUy{uB&-M&i=pdYJo(h%?O+>ytb@WdA{kzPp z93Q`bU!~5mz-vDN(#T%ka)z)G*g8Q!uq}hT0#n4gF=_qc#Av;Fdvx~p6F|jz>s2Q# z9eWcW1!&YhJ8?5Fxmhl5cOyE}?Ct<0_Z(+DL%|&t0e}YF3$oO_`1z;mQH9@t6gi9g z%>o@Qqit%O#97AqMYnhwwUaq>Dy)gbjf~Q7uRON+eG**rT`wHro^#D{isLw*`+PLp z@j}1w&~${Oxl{KOXb8K$o8G)U|Chf$KW|v`BVH%$?rERDXhjQdVh!3>}5;g~flLlb>Z0h>Nt!%*Bq(M(y(A(|1Rmp4+U} z&*_V&MBaykSWhR8q9!3lhY5OiH?mL9wVa(0vQ{NLd3XH&m*2gku?|sY-tYWyrhPaH z{i_<2JG&v!Y!j35cyWKbzuToYIt~=aIxM=05i?y|pp^?4wO+nH`FK%QZDt;7vfA|q z_iK_Klnat#6m#vLZS)QYjBb-mKGRSGvLIFah`oOAdOw6e?RcXF;{(re0zqA^!(i8M zcsCo*%Vu#6b~z}mIoK_b2&++nXV~;-6T#X-*W!sor8{BERf{sL2;x<5J?;T6Wlc?} zoREm=kWr~Kv6*2V_Oy;5T*`i|p2HJV^$bD5db`*a7|e+}kMF@;jKW>MA zd>QS)>p>x<4X(7g>Bm$XN+o@s`INO(&pfLUln@VU)B{{mjx+EO_>!GAuw*K z^c5_kSqECz5X+9=cy*$BwB%K@p&tEvYku+b*WNB~rA8+=8}C2K4Rh&N6|Jew;bQU) z_QIyP*lcefZx3E`pg+jSi3<0Iz$nZE+<=(+>HDh&wY^eJhNLyjis@>ov)u|KYKe?} zkOT8$6aYXAl5US4w}iPWS|Mqh?TmeHN-PeKG{qA9QSJJ8DVyuN;pk=Exu~|PXQeAT zOvDX#JGm)WFDgFo8ffC~J}W2$|4s!Fb z)Mlhk7~WB(V(tp3AHXLa$Z9!M*{SUe7rXVt`tjw*`>#)_?ZvW3Y()-UXu$98fx)9+ z3kbk0h{?s^(Sw;NyMwzp+Bv!^lv;+*LB=2z#KJX707$5=FAL2spP+E${Qn%iSCb^$ znO*ri#`wUeHk;uz0W?J8_SK?fY8hI2xYk;Rhlf^~k(pIlRaXFLpkZv<2s6ISFPs%H z8bP)-a8Z>R;eO8d?Y&mBDyT(@U%x_|=gBmkIzUgfbPs>W(S&MWZ8P*tA}kMW&>i;V z1D4C_3}OaXpc?59E*}m}bKvzOAFlZ!c`xUfFa>y@B2xbJzOkI;rUb@L*jqwsPT!c@Nm0+0OcM=rHLmVy-}E8sanW#Xmq~@g-%Yi-;VQi zt`4Q4z_|fJQIwUNDa%|2hZdhQZ(u$>2JO?6R@?sR6Phwgf>;_3orBSOzvdIm_K)GF zVEW(&8Q)ExAE(wZT9z(6I$}Klj-;VM7F}OIvp_dGgAOhU$xslH4*IQ@N}QEefi<|U z4>W-x|Eka-t+Z>$XU+s)nI3=!kU*NbRQLj){RpHWkfR)ayL>5O2$mX@zxi3&<-VX7z22H#{!^{C)azayq2py4m;==J ze3p5PXlSeRhfKL(D6O~tKFUAt7gM1*kds2XVH59D@X8h_?1lm0fTurwx|>f}r^4M8 zwZ;GQ|9S$kGgYehFR${ISK}(1Eq;8OBjp>MQ0Acl7A}~iRrB%snG~{>8QmV0IN3z< zAR;^DHo4|S>QSy{-|3iQvVtHkm~u1!WkfJ8n=JXhrK`OdJXXUB%f;?V7wmzK2dLm| z8%-GP4hQ3<(C%@1az#`irl8E1)LuZhV1>w;p=f=L!kMHEQZgh+xSJO>4g`#iSdsDB zI`4Gep7wBFQZ}Gk6mTab*v{4(YZ~HY%R-!I^>}N4fgN#RhOyrJ_DsPA_43;nIm4t&HBVZ+uPK|UgPU{oY(-?#tlz$WKTXNN zD}92Xq>BT97HYypnN6%3T7zVXk$?%v);JT4VONCPB{pHSNnUIZVEu-SX`Iz`AR#;0 z(fDy-{i8jgV6v#xR@;$Yy}Y^YN|dy-YD6YWo|HX}kTd&zVFTo<$Sv{x&rY3C>iE9P zS=L_Ss_;GFUc4l%9__Z-Vz!vW1_oG^RJ%fsN;e`M)6`vfzEDm9DAL@X;M60KoEmtN zdGhn`P!qo|#T7qvAQk*qF6YndZZNC*5>$-Ygo)bVaFj1P$Mv2h7mrcj;4z8Yz~!ZF z4|~QgkUk+%XWCwECmh85Lm)S>bnnlLo~%PctPKdA9|B#l%oX6Hj>@P<^{WviBAfvz zbJ;=zlZVxUtXTmuI_Py3uE#wA`1`?Jh>yZ>mj$D7b^<_(Dhz9vZyIJkyW@J=ghpoz zt?PysU5g(d{sQCJ~F0dlmz^M{~d^VigD_TI(JIAyDFhVB? zfvwF>r;K|Fe8pmd4_mQhJ@&0(2O2HEM=jsaJr>VV1}T465O=3TYmyAk?y6`#tCmx% zM_xIK`F>{B&?G;^UyM?OWl=3d0~O_b9WmLCvg-z$fqAuhn6RFJ!>pQG3Iun*exJPf zp{c2-y#xu6Lz#rw!(_R3p$8$X8;`5!XFBg1K%EKC^6mEB-+o#8V0t4uscu{dKr$$F z+`ejr_tSK?T?_<@4H96C-N!9Z8E-X<{i3Z&=l#ZUuiRGasnh=Iw14|*Kqv}g+Sm}$ zNnnrIRb+;d`~2nSar4Xn?J8&C|JOSpWXESWrqFVa-=ReBFo6tSoSO{KvzoUa=G!M7LIHxWQ zjNUf%!wyGg_y#wd4>Q#>7;t5T2yq}vNx_he#|f2QOE<}~qqdIMlL#6hrD{&uJdZW5 z_MWP6cym^zo|Ime@ahby*N%$G-BxRhz(CuxKRuA=rZEfVJm_k7tT;|iISPk%ll3-_ z4&BS%Q;*p$302-NX4}o2>H$ZDF;K14fii&x)&)t`z$xYrp9J4D+>0edc1>Q zCPCxdU$=l3KCE$47d~BPc@P_^U+Ww;5gBFFBI?~}1@LW$enCXTYBECRpd0Yu2up^> zp!w#61?JYk*`-od=CBt+CBRd}tTW+->iH}L4!$$8nz5T~INmHL5!tb@SaR!+#6}lV zHfbIN>kS;XQN~l5w#eA*;+IQ3RHD|PC#C_}i^JCsBung(9int7oWv z$aF0Ei1}-9O^|v6lYlbkBCOe>-IslV_hRm$0LKcpfj8Pa&Hev z6C-L|;RkRy@T+}mvVXt1hf>RWvoXA=W3;@v?9QWGJ7LJ7tMzl)@i(w0?6v>dH!7QN zk}*j(;SI=Q#U(hOPPj}5V=h_z7?$w6(>wm#iWz!xH(fv9McmQDWdGA(^|}pR*Nnjc6neFGa5-)CJ~VH z3JMKxw<*DF9~$e9w_N5SyVZIZfFVtuff$yXC0|Tuw%=CF6eL;pS5He4cACzw2eB#- zI%J#bK#W@nuLrTGeLk~R4{NQDvHy+BMB}6Viz|utIBQPh_R=+0-!0{};kcv2)$J3y% z=KCo>HFA7iEk+8fX#5rrJZ%sqh-qY}dfd#%cqC{a0z+grPbMUsY!;Z40q2;RXM57s zS1-=hQNSzMX||-k(?9cbiW4m8TW?qm*E;>?ix(#_+^(sv5~u{YA~kB)GUGm9v`Swa z-+6ir#<~EuwOFt~%cn(^triD^8Z|rKwn|f#8qR)ZWDom$&Lr%3F#m@OaZ?hO@DfK_wn!l+4?7O3!uq$OHQnGxg(9svG#Ka$L3g(zrY9(=4!Q9_toKx{e=R?63qP3c z#$|PA(eY=txFrE9rq1D$!c(Ko(k2HiciVkZyj*Ztj|Mz92g8~)Hd*P?rU~G&X zbj*1~yfW7eM?Rxr&ZrbRDKj?T95o2q#Lswx9WwX__TOkUispNGM%(~M5g5ce4jB+O zjySB-r)#&*cy}OFzQ5L$c=WRMJSdg zF+Ef!vrMd*qPXm(Ex9G7#H|VW@#`V>=vPlH^>Gg{rY7_{%I}soh%yd(u3e@@i_!l(k(<0JfgGR*D(h8Vch#K!7O(gFBIjoh*%ry5q9s`~?1PH@NBLDM` zxZpz@&fK)vjYR-@;XIb4vjNte18*l`ZxG`cf#|`OYg*K90jW)LQ@p}FJV{3xRzC?> zR}e|vp_2hj8Iy(Ij7LB)0%nQy3XrvH@q_}E8&l2&wF6#g$t`(IHF>?TtlXKbr+1#< zmGllddS^DxIK55inUR|UV7p;V3L)D0T`=2=U;xt}%qK5Rcy=_r+@MTBokJv!cyASl zJDJ)XhUI>O)oIw zq2h3%YfQ$wJEO}Zz942_IjyVyO_#W33JvBGWjQd|cW-)sAB@r~uo{`e&+d=ENLk5Zm zvI{wP?(}Xidd#Ota}Ubs=-a`dsTsVB!<=E2X>0umGdYBZfvn5IZltfbhnfsgpFD`> zmcsjJX16uIg-jTjeJWw;g(+BZ4Cve4dOg<-&6x61PB;!kVYOOTg~2^gsI|32YMEC6 z=OAPN3rx6(C1F)}n>|AAw>KBBh(`LferF?MKoU;sF@MEdJ#Mi7M$$AV7@?N;qxCw2 z2+wRiF89^dt-#DnQS8bb#=I|96(#t@x)R*dIc*MGJrW->js~OOZk@Nc?-payefA`} zzKoWUEM<#TLJzgj5l;eX^YmWJk_Jc*ai@hL;`N*GV+F221K?LqNo3L%hseWsB7>Aa zx!)wnOIV_FXye(0JBw+40PJ(VegCu~@Dt8g+_rU_+K2#BbDg@YEChCi_6x78BKmac zV*J?j#2dpHKYO6_f5XL!7g+&MK1RHxD@x-;<>6;Hr zcJbn5l8>dyUxK;^$cSf#GIcsl27@AZSh0z*0+Wq4+05Y`g;LSFb+>b?qeSoiHtRPn zxV7pq3B-1HF!VDE4?48nB$-yCvV9lIiwCMiJX0AVCw%3&8RJ3Ed3j~gn6VZzK(ch6 zOT7XO9-Lc9Ae;NiqzWzIrsE783%nhbAm_S_z@@J|0vVwpg^mGjWxTk#(5`PJ2F_jJ zt287)|8=^~oZ34HFWCT%(|p@)9KXFGyKkE4QdCW9x)Tmd3O{}hL!R0^7Gflx3S!t? zm%zQTe>Fr=HDo~zhi&9F*LR95-OB7T)G0hKe(HrNTW_U;gwf#{-L1ABr3%;!+eLnrb(v@BQf6l<(BdZ zAK1)eD7LH=igIk0xpGW+y+hmP=1bAkpo)^aRxvhi?ZT0PiPgo_xDnh)!&Mp0p#+f* zgC!HGZ@WUH);497p$yQ8+8Q|((a>lOIef#{vT8TkdWy%WAFkG!ME!h7oI?UKV(=<6 zYomwx_~XZ<#X?Q%AL|9VubUwy;BwA!1MosTBF>2|EN zWa067EJhSMAh4}$)u;*Zx&Y}CI^S}FVha67W{yz9I??Vc)?}y{--@(6$_;-bujip019~R9rQx{I5@*byi1m=WgZ)Hl8QWU586?9 z{xm`O?oJ3GyG7xU^bfgglJ7eZMG)JceDR_w=sejqorwd1z$zj4EDJ>BqJEbFWPN}R zAi}KyK+-(|U7}%okIZ+ffP+tO-qlSfU#-gEQ+8fY`1{JfyfF zWQ@H5iH#(pep!su)DeTdFo1$S4My)H_B>XShCF8()JvA$q-M*-j`4)o zC0NlNg@Zx4y<5%c?*`d!?)DgfpgG>;DWFy0du_+z_Jo3qMfNfNTe((0`>(Addg@Hkqk1@og!$&=Duw?uq))mAb(2d21+5M)6iayEO4E&hhbdo$A5*@9!vL zhee|FQI&fWj!zb=Y2X7ToN?Ob+&{pVW@Ff@0cu?mBFt00j?D-cB1zx6TTQF?Ym~?L z^ROmt-cg&^%|Uato0fvbqiUe@iedW94M0~B_t4?e7*r;pVp?kI_0;U1&j_VTW6%MG zs)tgCRW`xvdVq=p5id#@{A%o)&Et#Hen&Eg{nO7*vrSfxoM^kIqUDWq!P?Dm z#6W@M*G@mon=-p{WP$}2eZ9aUO?gPku&s?lj4}xs*D+r1hzLJ2gQu~J9vO@>Cl3y? zjC6(}- zxF|VtgDm8BWoLJMI1F{WWjDr0oE1yXHt2Dw$#_vkndYR~@Ai=%;V0uMpvoO#kX8sV zSdVD)RhZ4!(B@&VkJ>kkCTZwM!|QsJ&QN`XA?fe`kxlMI_28N*)=MY$^s7d?R(g9- zSj^3MQCLI!DIsYXmy}yN&V>0Ye?8l*o0d9L+o-0SS&-%kPo&G?nqbi?QmLsj+;Odw@4Ew=G&L2ZhNX2;nPRj6IPZtE zrEABUjNdbM6p``7dOBhaO+TNp;MuoFUmT-FZe5PU9;aAZ1#Un>byTGxE4s9dg(VUL zKJHZ3z|w`w$C)$WSi!*!I<3*UyzZiXE(V6%p?$-cnK7Tt9`~=mr2cHhP`S*Zudt4l zL1t^i1}^UJ8q-{?{`@m-th5fxdBfCw#T_g@{t81M)Lda0F=iz>Z(I1zS+cQft6$6( zAob_Op-Q91;fhSzaiPFBU4@4cmabDV)?Q&YSy@OqA-03A@fK|S*c?0>F?-Ye>IobC0v?xdoj#e2U-z-_= zI!K?adVYunEM&vU3g8`RqX4eF@4%#Te1#FvLG*y{2=p`P3O@NtWE+Px0AZ z2Tn)cQRGqKdVBWx-+c9} z?_svIYOVHAo6pd&VwJ`h7p0STPiJqG9tg?hUsGfDwq|IOS_Y* zSFJYQFSXNCfm`yPwz22|jLBqufW3|B90Vv@UOL~MsCUw6fA$&KGSu`SYuI)~EUnzQ zk6g3c&W>ENU4ABbLJXe%MK?x*8P>IN>_svEmz`z#hT7A82eZniM{w*2iV1Oht+Q!70=I0 zP8STVoNN)&%&(xh>l&~l*QFe)@IzEjCW^Q-fw zPjfq;IPr+1HwklMT(M)OyIhedf%Es;FQ7H5@#8Ol{c)L<>$@es`4Iqvrw>bRb=l)z zHdMNpw0Pw-FPVW5a%tB(VCk@U@tJ{YZv)g^GaMC#tU{+zyoSV=(%IvD5*AbH*MUD+N zF{@Aph7;0T9!2(uVw5R#|Dl1OJbwE4^Sc?(-qG;3@6Pp(L{xN2z-L^-dgWc6Iwb{A z5+k%>DD50y;5E6p9*hV>xti{_W3O^xY$pp=nsK z_sLngh3!`?pm z>W7y%^_y0$hUc3h62U>NUPL7hb96?5jmdMNlaS+ftt&$QliA8le=gr{-c3Ct*{(ui z_3r-Bz6nAEa_vF0ujse`)>O>i52tzY@YAmOe|#H-3a8-59JWZ0cnR1OxAavRzD7DF zS&S!#qe1KV?GfL5x+ExSbAS3cl}!E{^x55JK_YL7$ypEpeU~G(Js46RykT&madOCe z-yO0PSTz@Mw@pTy)~oDKryy*>qgwrP8#cSdvrNvIe!iVBqk&018poW&)5_|>7)jjm z2o4tF8{7gM?wA&d4OT-Y+V>TEo5IK@*ipcAL}gq}!};!hJ|<`#0;RTDWkyUrf_^(7 zx^ZG}aJ!jwLJ0h`MyW~&ziT$X9xGQicV@2vnPJ$rXN!u>-2@mh{%8=ATsPs#_1S(( z%}%}1cg9tsah7HtEKc^D&3pf{E?j-}J1NxN1998r7v2SwNylqcEmEc3CTC*_ggLU* z*LxSouSDD9m&Pv4Cm+TT^n=^hZ*K+qAKHb!jnuR)%&<8l`7=d@xB0$em9v}!+z@W4 z^(j*8iq#7@V59iy>Dl|2Z--M3m-x%4`nSgln;jm9wB%V6jQLE1kK;`&LBbL^Cg)U+WXirV1%`}4>h=)wgKOdfqWJU}TWo&i86 z@FrZvID=X^4ce#Iwn1WJNgkOqa=|{GPyd0a0+7eJJvNH^RZ8fbx~t|+k(4n$v>?(n znzUxdi~%`;PRblx6-B>~7pp>r38jf>GL5VxzCZ z(s=y);-D8g>bMQF%z59@3s!MKGZWHX?9!ruSpF_wt`aYwTAgMGsDln}AC3t0pg za@H})L=jP0tCK%%84=IfVLQvplv*NbQ6?n(hTyW1)RjzrPK=jQ%V-_7bvfS5+LGG_ zz_MB(i=43HvVdKUt6el$>{8Le9TTnJ?_)_H1E=J(5h#jFikhqe4_iW@f?*#Ng89Qw zi*Uuscr*0|SNuT2`4o{wcT%|FgnvrBq{E7ni;b3U_Ip4|=kUIV9Gi*N z*DqfE&`Fu`^E1ytz3W#;5~?1TTnK9+-|@rkcvNuPrg>IzCuBrU_go)3L`{5*4Q#euk;+rVDjy^Z zGe_!_2|;-7j+V=DkjyHWk8(MzfuKT4LkVd-a_u>`%gGwk zvLb41Kf28Ur@d)FWQK_iF>c@_e2l{q^s;}z#JD)x(&2gCygiOT0ph37wip$Cg(+ts zAITWPRq7@@DuN{p2*{c~yJH3tG}>qjIEf_DWs);R4|9$XB($cZ`#rHU>S3(rVw*n` zyvP3a4_|hpLyohn`^|Jb;3(6;K)xldo-wJ?h6*uqqfGA}wwtjlDVFNc72N++cHh*4 zvC%e1y01t8ZE-s0x({C0=TJT>DotYPtAmo(t!xSFQdhcaY_>i>=E)Hhp_MbQjTv8q zNEDk$fKY$gfCdZXt#N=Fp#0EcG`v9K|c z&6&@ZPsp6A?O`5|e#~}~pey70bKGt_-hNo5i`An|N1S}cp%}nC(V}??6VIzRUDbWq zr$SfFMjjn(6@9uY$1}z_LMrqE#d`jC%lPoLdt6N8+o9k+J7+^c!@Mx?x!!yu5RYZ5 z6e2P35|k|LC<7ZI0tF?LF>g}M6MzmAH(?B<^~FWprw&lMszy~(Ro{Gj!3?$5y?JY| zY806rlwa9Bm>I?d%odn%Ad5vk59I%0nc3vWg_cFw%c7<`c1CLF{LFCsK@>ke|BsJ~ z(DEuU*qrL2xWa0sgG3z<4mo1&wk299f-wSbp#yWe z^G!vUvnq=*86$*1wx{7!g-y~^f!Wr3!w$p~PP+TY_qz$iAEKzM)!mv&ohgxj>chX~ zd>mxk_tgf(9WYP!j-XmP2w{WDgRryzak*LT)@9|5C)Mi51)k!#b362m*&R&URT#L~ z9s22G+Pauj`Kom3s?p=kq5ZHO(ak)BG|28~RWM^=rF#vmrRkTFWpsVM+w2?T!}?X% zXx2!oh;`XZsLY7P=6*F=2-g=^!N2ERql-ggvn;N!r3o)QgQFOy_K*Nl#mI3e_B-t; z5ZQ~9S)Q#*>)pLBusYBN;IEj3r|)y9kuY83)7x@C(vNRme^F;?smMoXws3AyWVI!^ zet}soBv_{|?@Fq(qg1-8HT7&1T)#Q%am->jHu&QSN@<1OTD1R(y|{c>)4M6v0|gWj zkXpEZ0)-I2lVTwyY7Je@hXLVF(eRp7Yka2HzS4nw#)q6RK6{ElM*2bN=Ln7imzU+e{AQWyvCoU5dFcPM*COh;HD z&ZhWshn5P^*QX`$;pY$BOKGFO)47r0`7E@l36A48Yv! z$OnOk2obUA1xrVq_07d@u9UkJnh0SM(kDsIvfEb;PY0YwCO*tVn{#Rr_WL%b?Q(`M z1k9~Oazju8%8X1(l79c@%32_-x&ipe!j3bNfwG#DgM-UGInXA(q3t!k6Q`4Ez1x3y zNU?Uh)vB;hK07`$$bhh?Qit?c4(B3kJn^&HED09-mEUQ%`=)Zx(@i$BlI_Xj@!iZw zLel0#po96^AF}*Hc2&DNJAoBfdvzn*`J-!WL05oOx_iE(pqaK2YqP5d7$HRm}H~WAa-g3er@0kI%a|gDDlmayz9T zcmiPQtbY65N&C7@M6Apab)ibz?F!Sp7{)Qp4+g0W{{kl7DvCSsX18b4zjBZ&b&mz-tkpeF=z~Pz4k|=P+Y+(q4U^-WW zUq&a&!fB}5v>*rvMU;0@swsSYm=h*BbJ;C5y4+f9rz&gW4W8Dy)ASDO^y@!<(V{J3 z8T_uGNAOrXs8q|c0ApRQXHbCgC0#ZtMs4p`XvT{1!+t{8zguqwz3b}!PdnapJcLPY z5>k8p^6M`@d!b|#Gv3|5TdvpJPw!LzZtTl=3Xq5@9I_eFBdcIW>GySq^i8;aU=9Ua zi?U?@a04Nbf9PnA$j>^~JofG!E1)n&(Uk$CMupSUn$6bDq1MXTugLiJ`H7^6STxBA zAG$Pw3(}CpwO{NXZ6z;8tH1sEjzK5C$onY=a`mbwRt){#6)RKzrDlzEL z%`;5j?D@mcXf{pj>cmuOk^{|CT-?h=B73>gBZ&?Cfs&^-oMqqxK7fSB%zJkCVxQebMgoLK3BW-8|9Z+~~}X#An*5vGK;D57>` z|6xswaWo0Uo8tlR8YPO1a{KXNY*W)%b2&|I7QkaWn%2E9qrCcv~YV;G`9=y7+0yD-V*-qCz0)FVaD=F948C_#JehG!Hb& zY4<-7oF=wl^(RsJ%U!~}#RzA}R0p~Ny6(1(eV`L&F#Xi32ymHZ0cjsbK!;e>m`9+h z6eBLaSj(c;qGqx}n{pKxgTZoR&zF&DT<9dq{Mq;qG1XT0R1Zc3-lGUGnQVZ)@rZM=A9Q{`Osbw6jGpth)>=A<7jA zbx?EYjCW+XV_3?Aj-I60duFMtQfui@_e4T7xyOk)czH!EfK&gRM*&6Kz-U`3L6_3a z;>#Q1hVBnLAqEiMbmn$hBTn*zgor`xh@icpA~TxKITQ_@?O*fHe*fz~{OZ__V?69H-c2T( z>ErD5WsSHx&_vf9|LM;Fn1W>$jn=fUW}&mcBVJ4(Xu_k3*79lHRpff-anCuXTCVT> zp;s{=;unce3Sc<56vxkyefls(2)Z>d+Jf(R{`h|X@F91m4^vO;hVuaM2oY;;A27|# z**G$9&U;qv(sa??SPc5L%M0P^iz5t-HfB61%x(awde&`N`}ULwOC96J*Z=tRflmtV=(+TYUs0ba(xpyiq49i z31}Sf_hqPW=zT1*VTyfZj=rMsdIY|y4~O~i^Vh;e`t@)A`|rR0@>gFn4uEc{@)Sfn z@$$1{AdI>d@L$7yB->YfD5|oH$AxJ{TTg1&j2t}AySoRh##nYi1%Y91hIx_OiCp{P zRh{m0OALSdWa@nXVh<^pYgA8x*=o)2b|vGojKIXihIj@R82Gv-s?~Tt%eU?~-}Zca z0-eo#_`jd;u_~bsSg%IRfqDGG6DQx!KQS~dmWQvz*iWx6?fK&)F*gzQyA~ud!cD93 z_C?(a9{#rRj1b=#_HLbV^g&2s`eiZyk9`CuiP&;w_AL=P}Dtoc=fB04ivqfNzN`3ee37~h>^)a(CKE| z#Lr*0&YHdGlzCEjVz!3%@ zezCnVz~-t*=61E!2@5Tse*V*^c=Q06l_NZ(g~R$^1WzV6;u94 zHTdUBVC&VaB+$$$GR!-_{lgcp2XB5~JNn|wZ~yR_w%ujCN!E*raV<|BlR37*i{tQX zr)>;D#Jc5wo&X!Su?|qjj4gZ}rLK{p0bol`*V+QJE6O!3*h!*cQ9+=UaHV&R1 ziL`t^uCn!?e>&tMu7nXyz;KK72J?;_v6a#4F(Z? zWB`iA*u$GjyLl>@_XW)t+0~CvXcrFI{!eB|Vd-IeUbLtv**jEP8P4VEe4lpG2X@*` zF#RL~d-coqn;($CfGY3n$pWg9-Rs@n4r|9kXNWMZFAhZLDt@{9u+;i?_OQhM&5(03 zn~y0WO(!tu@wM?0@x|A_{+I7Q|Md?-{hKdNUcK)QhF-U zlaUT_!f;C9{JMD~PQ^n1v?GkS=0)}|vkzLF4 zU#lrX_ze?oBIu9r*E5OA_0{KJG?Q{u;OykYNaDZ%70fnvH6i;3n1sk(X=z9tIWsGQ znMMZJh5e_y9iUs+TaEz+oqY3FavcS?CLsr#b@8E<8>o#pS9-zUlX`ZG-K4+?N3uA> z!z5yY5mr;fUrk(H1=U+a`#NY7F|t^B@YePX-bQo4f_QN)&{O5zI+t*E@sH*Q34~s$ zQ)j!Z;oWRBuXvyN0lgxz(dvn}uQ8(ZyY)7sh&&kGZ#Q>&qrLucM^Bct!4e{V9u7?g zV&lpsxij(WufO`uZ+`txzkO5doPGWBvv0Zb&L8fVWFW0Wu{oI%c#c3(ktjnj+<~yk zPS&=%-@JT%ap)2ESyH7VyJz3+*LYO00~mRM=}dEawd;n2JX7?Z-j}vv_TGH)b$j(6 z_rSI*iY$Kd=bx$cy1Z+r`#AZb`)JF)4I7VcLVuj(bHgn&ec6vfj(r>Q@f-t;3 z=Hr152aV*s$iwkNGVYx*2fb-5KnPORr6=Q&xpUK~Y4Ep5p@I#y#~(9yiX#V@KiHgs znsPFpa;gqzur67q9)N3S-_#^2KFGaw44})%A#=kITKC7R)tvZ4?aSX@3v6EvYOdh$ z`Lj@eWJ%Ep@2bINiy>^n7DN_UaU<5r*|Q`G)Qt&=8!8@<9?a$37nz@Oc8kXmCdAuw zLK1_cx@*<1da}paUe=N{n6kLMGv%d$jzKD9pfSkml$^;JAViOnV9lAiO!@TMJ}^-bWlH!mVU< z1XbvszddJce3-%NEr~k~x|?nbyw~y{vtaw|0@nFG2_>l!C3z7IhH=5SYBcAPm_Pk# zr!_rH#AEl%-+p_-skHm>yfoDO$Y;~qjyN8iZZqekvg_~IL*{z_p^FL`V>=kr98~;~i}pfl=)ThzqSbnwv1=hL=yf{+`HCwM zMih4r46*9f&==JVm$_vQ8n+@l_wWBrz}dlINutzG4Ud08V`ZcFet29w?#Gz)qMp3z z{pO`oJ|tg%RU7-AfBn^GH@;Zw;Fc2nr^kX)@^m`Bn^YS@TA|%)Yd8iq=74dlsl{tL zUGfO@o+;CMMSUE)*GN(l!wSg*d6Wsp6snq#I1IiAcx+ytB2QyAMxuARpO1O1j~4Iu zrdbr|xYQX+wJgDi9gZ|PD`F9*Xp?6vODz{`)#cmMKHO>^KicD@c6EN$>T#j#*r~W$ z;{k`ZDlMu`Gg%NiQQsS|8b%w>mx^O5PBV%1xOLbq4TdsPVP0)aeyIgd zc;#b4#r;Q-&9Mo5;N7J+&QO*!P}>Cl7Oc?!6uAol8A0*oi(W;(hKbG8)RqfAVujGA zmM1mOE`j3q>&@0BGeZx47}6NLw$sJ^To(Aeh2_s5COID}q@b`*8V-5kX)X^Fj?1s= zl3(gh^KE-jJpHf#i;zyfx!Y}v-TgtQ7&1H<;#@bz@Am!yc?sa4MW`!5D`s`8no_@edVTro ziWvpZ86&22v7eN5ZRyikX`*Y?{E+!U-2-gIw#)7gn4z~h!TDq|;n*ObvplXbht>#- zFtt{rib!zA8?xFzEKsQl;70}Eki?2&v}*pIaxZtsag;?KBZ8Da11{a;SGR&H!%VTE zbr^uh%WUzt^#tJrnf1~7u86|j2UJN;|LU4_IBS#*qZF>AnYX?V08FaRv(^ivzuj-1 zr;NTnZthmA=V?kPAWJ}Sm0rA9ft27QDOk_%R-?qBL4y`g+3dyhM$Z$Q4L(pxp3rSV z{HelcXtahLAuMd^G)PRVCm{r*osm7uQZ<+W9ES9D1n57M(j=Rj~k zYLOJPQBFjaNwTV>DJVhxYq{+m(#Jh$Eg?ta6^^S%&BIbjCds-ur8F*MB zfF=_JCp)DG@JbJWQ3q7OYDYwqat;UQgEy75kAXH)rI*+}RdCO80j;P6_|t6pVHU7A zWZ7UGW^3{2$7N;RetRS62USU)PDz_m?Pzj1g%shmb+dZES>+@Kgie1R50vh zY+#+IciZt4XzT&gPM~6$mtbqfA^a@dBpx9z6DEcMOe9J){%R>FZEQ~-{Q$lWF0^*B z-q!7gLOcl-T5rg5SOs}R*sKD9=JeaRq!i}+dF2KtUzN)N*h1>8C9ExW-o(}tKYM&$ zyMv2kO@8zFZ~p6l6_%t~J^A+Ki(&5R?K(oL_>i=XMvHOg!hIhdt~402u{&bIuv`Zo zye=k*5fL3N*6s}pKr>5|mgaM}=vRXeY#QF|u*We+toDuHLU!yV>%2s#gBFwR;~N zCHIvb@@T}eOnjV%Z%X_jGz>Dy@_^~w>PL|lX>H19{{W3Q$!h{rAfMWDI`u^wpC5uqX+*%6K z!?{#ZIP$58>3Jft<3|PI#I$&rVngEZ@;HJmN3adlOXq0VY18Vh_i0Hg0&F(o2uJdL!Z~wQi&%|u_-!DP~gax7*{*UP`S2=UKx!WCQXRlwrIj`Sd zcXcA$-2cvw!lzUpbjTjD@){F^_ZqiJG}PHn9Li0A@O5y<#2yZna>be>yN)>p0z2-> znDYFT!aY+X4)`(`rEbtTK1Mi_M))Ey=5DzC7@dV<4OXg%SPA|TK~Mf! zzJctVqhgX0g_`ZWzLCtHQ&v^MuwA~pU*FGjv>+gk_`JMdt}11G|KYFI*>`ny2*Jb4 zoZ}`3>we2PyvH2{5-Jor1~-K}jEcg?GhBalOO6u}pK$u(x*l#Uq4u3l`ET<`S#q?C z4U}4J-M}}tsc2GP(-iVvqqtbOYHZwI^&3~6%jTeU8DOd45fm>f^r^d1(*OQK_x(aV z*YxY2)V?;yHVA!dJwE>fau4LI1c_&++O$f?=FWoz4lQPgdSN(yYDQg zgrqp4p|1*!!r{C@FIrY71!zl)cm9FR#(0Hys!wgG33!ZGA!iYVvZ1K*n~*v^tnUYk z?a)D&a?>Ev>mlZ%OV(-2?98~89}3w8({Em+l!_dnu(R!$NQtH?Z9*PC?`J>EY`tV1 zWWcTAx^Fx0e<_Ku^jJV~BuuGs@h>zX(O`+SV*n1+MGb7!yluG4N(j-~t#-nH5AN-L z*I7PJHFJC)!6=w~{P@He+#3#^foRR1afbM#%`WR)wbSQn=u5%KYnwkkkJwKgzAj3? zp=J|bbOA=#D&)sTT{ip2Cv>vf9bG?tQ$NTjVKU0_e0KW`Vaca;vXEP{F4RmFh6bx< zEul5d<1`pK4h?x4)SA{2#ap)ZBZCtn!yPb7tXrg7&osJH=h95=9>^6C6r*#Y0zq2Hios^wwQN1OqKB;dd#{Uest|&=duq`h`Anc zV{q(KHdrf8Zf=P5 zmRBlq(2x-LBu5+T!2n_11Mh;viLNSA=PF6qd9c=C^Q%ocmT+nY#uvk;Cusv+jzch0 zYl4S8a>GKpooso3{2*-+O!y!PVo^K$@{2Qs%;ta)C4x1>=-v|Fy<oC}FdDje)R_h4y{5%Y1QPWHPhWyWG@0gZy9 zn0~+%n&|$gp9*@}9N5gR*c%A9G0XqSE|P(%N`rdswxje%Ip=H2W4gu}s{8s<@_gZ_ zU!dVZ_S=$zYAGPqNsHNBqCfknS}Uc z%ZN2_uuzT%Z`wf^&@drM%zF-i`A=G|sVz#bvwU;e+PMnpR+ zFo#F|Tjzm}mB6YtIe4bOJ#WIGV+Oz^E9*4nKDvU71~00?RnzG85L*na>ZWhyloE#K zdOYZN+ZSEvMu(E$NbA8V7fIK7mOmwFNO-b$*&hy6xyyO@u==2#hnYs(eB6)CRM&m( zuf#`sH)iRMbp^WjK%>KXFsf#@!iZy_+XTbX9~T3+R%HQ z>mzlfHgOuuetyUu;hYo{JQEQ1G~xWkDMESxUPCO0lt2B_?D6+tG;;s*gPX8NVHX~# zQ%_~L*|~oQbJP)Z%}5)yQ!qg#8lAudPyMnqK2x}TfE!;bR2+#Eui^R?Td#a~xd zB5Md<-5MO;hrDvAeP`kAtK-`NQA4+V)i9oB37=rP_Ezzp5;0kyuD?)q5L-iH-h*i+ z-+ce#;`*d{@#U*;-`+Ht(1?v*L-v#w#780|vMIZ}WSG%his_mUZ(7D~ZKX4^Sh>sZ z%!>5>$)!1>If-rzAPCJFGk7}_K5U7n(_s=8J@ym@_e zdvSdF=KTE4tD}pH29S0`?KVI?hkTLKDH(#UF`C`MvD-fF=CF>sgWB!600K~fMLW$Y zmbA$r(-+sMp9XwIvgsO$&@7@)y4;~rt~zqLI}{XJ(*DCrf|)oqb$mfw!;xpBCgZ@$ zMHf{SSJOdDA?OmN2`H}4&Drq}FF+2_9Ndh`yw@Es6Mr@pWRg=8e1L&(#$%;BS`OY^ ziek@>h7hghTTsf8dK(o|fyBsitnpYmV&G^>7Cr&$evXG65ee&pP0XR2&%k*oI}-d2 zNszgR;j$5GZ@zrt)3*sncGrYgv8Yy$GZMCzez&CjZ}NFn`mtWqxcOJBnSWEex-g8h zq0>C?b!zSA?RDo`z)T7zl%FR$A3d3F?S3>V0Y=;$U6Pv!(!~cBPes-4`h`2&f`%r7 zLnxJAodl;8k|slZtKa4qN&Z;WxkKt4EojWcC;?6kcLd#~E}ZtJNuT`_fPDTPz=*7uL(SwUEFl;;kLs=9-8qCb3ju}s@;_s!?m zlNEM$9c5dA>|ni{pcU&kID`%)`!VE8tF?Z(%J+Z$v=3yEZmMwDyB*^BGML2ntA=*B z9tecL1|o6~FyRb(Lry^eth#U7OhX)f@*W|&%$JD*hBHF%VYH(WFtLHc(vUif*^tHw zZjerc(<$&B3wI8~7)Dk)yB?i`z9!h>Yc!d9hmTgAE@L`n35>Xit8?SD1s{c3Y%*u6 zeBHB|de|C0Dc0zGkI}7v2>dBWB|a{R1nRfvwZPOn=qCLbC5U%en|KIP_j{5fv&Y@t z-Me>1JgJ1&*2uj@NmA3z+S~p-6uJ$;{q%n1*^N5L49q~xep@g}NmbgUS8LkIm#y0A zZSA^A*W4$`5wOxsNQsW}`L0w3nxn$$eokslOJr`X`1Sr|HI7~3&5IXrngmB%#Ob=t z)+-n|le_&?7Pn6iYsThLvRgmDD<_XBCw&X_BG%}^fMNtWRp*zPXb=0Wa$vWG>S*DC zOpgBY%R+}v+BT}OT2o4RmZ8d!4ql&Y*@%{WcXZnsb9u8xvs~H6|Ig8zElYNuXL>hb zyTffq*d21WyIW&7MUVtR05$B|^Uir#^E{84D>GNlbMARp6;K6$1S!dK%XUXN?C@py z&sEjjLB1z4 z#A*`*(t{!a1jN`6dwi@ZZG0uQt}dBV*6BEJx8Ikh3#Vz$kp@HdfF1tF<@Pgz5->Em zBffhh4aIgkA+tU$?{8Dh8_<~N6G+2mQ55^b?gLFKWFAuE7hge#(nYyd5k!sowCEC7 zV#EXOph4xQ?hGigc4acCE89e$SrZNCiO}Hf&v=LQ7HO!0DF@nW-jxhYVxRXSM}U05hBuIF?*s#Om@8k%z3|w2 zCCsVu2@Je$lXg(ltxI5S$;j;w+XGy_XtCP!JbU4NFWfj6Xv5fzfEo7a>229a>-h^94!O~xg|JT;*~&Qbs~ju}p2$mcl8IV7n!4Y&o(AvJ~mp@MpcM+I@Zf)qniWH`;)%;CS=H=jl|bk-97o``voG*?gq}ot4wu~7^0CrL?v!rNk!$LV?F>Bg!g^dW)@l1p6(7p^ zI3C~i^?}nJVD{7u!;-6KzyA02#*OX}zm8D1I{l!x%5+wN1)k6zL#i~^w3M(p6)Y+= z27F(0xGI505Ro94p21uz!Lp?|z-@w4uu}FbZ*be|e*3mvxz;pmGDZ=ek-%bEL1LDK zg5X56&CG3@<1rIFq|2;qm%BR>EK$K+vj7S@+H9BOEg5tQl$MVa*mQVJ@d!rAgJu(C z3RM^;?M69D`0X#}Df*1Q(YgHHtKWY0a^eFphu94Te#huY$oWLa$=^2nPNktw`PY9&_hPGMR5$Z z0EV(8kw^)7D5hK_ggwbU8oQqV9s*&aH>~?-60has`%U2%x9dnGv%P^$;z!RfS>CD6 z4g~1NwTVRWn-#h$PLlQoKkhkY&=e<5Z<1JjC^mpSOw*)k7V~eR4wleB zkFRg8{yiG%T#C6yGLHib1ZXzi_NBLH3Jy#Isy@@5)gXskczi5kIthKUY2?7s7Cx`W zW9}KuK*@9#eHfL)Eo4vNkc;VfH%I0Mg^8pr%E15whJI0XR8A=k3CbTuB0GP-V*8*_ z`2y#nuZXi1a496FyHJQhLUVD^v%VNXgUHIbEB)d3R^!C;6hXLNDE9`xcf54D!3p$&nNyvx+S?LfK_VSS%95;VvrJ&#LpUU}1x7y{;2W#w@S>l7l?~-6Lq%G{6Y*D)_ zu8gT$Y3Mh?2;!;g@mmBFN0gK-2T|+=5GpI=X6z4k_jfy}-#nc?$MMMr<366I$^D1B zaylhJWO=48i^m`+n}Nbvifw!v{0t9^V-kI-AAusR%(EF$g2 z2$&mo{{cmsRo=m&9V4Z7dm7?sC>ga@RPz6bVk0X*zc-|en9O#Ha-PWtqca*KbWQYn z^{RT(rZ$}}cYT-cDbd;b$pb za#q(Wjib~ybA)h!dk3s?J{vk7AQh%bibkf_)Kq^8Gn#;Cy9bl#jm zTDji9MlSeKP2dx&L3&67C=-tx(uRm>_>Cv9=vJG)ntlHLdmP(fTD|xfO&$9-P_Ee| z?)a<7AB{s9N-{8UFC#z0-#ogTdD&)3a1&KoiJb~F62831O%bP+86co+6} z$2v*LAEO)_=Qkd+fs&q;>(Acj*CKh%*@~ST2}pxW1L`9zgGsZdlfI|rLZKvqYBAct zJYpYU!T-*^?)k6YR%K=kl1ApUy3dN<+J%eEXF*2r&DGJX;jPNYVTe zgKFWDp46?YYf+Q~D*in0$O1xEnNHmLE6F@pof}$~t@>i*f_07@EUbZC8qTf^I1s@f;VHKPwATCdZp>;Lnd{*9htu zIhqW54007`Qu5DQrU68%HbwC<{4aW`SZE%E#Rv}IT9&yK=ab-wD>d!Gn89_ zN|)8`8$J`n*>s3?n5`&{PTSP#P0d*?7C38|srlh*le3VMn~JKOU$?bdOC8c-wT(0wvKe<{m8Y>!>6^RD) zeAl3!h7662fvYteDz|kHP5RkMh1}+NNhBES6|Ail0yWVeu}an1TaaZ9Tp4(iZy_|W zbig5`6naxK?7KVdS6Q*6LE8f# z1W`_9mzz+LAFdXubpE!^!L)ZoZZd2cf))b_3U|b}RlH6aiv&4c+%MU2k_75uPhoRu z(5qx6lOU5%dYo}4{4J?m#po$spER|U{)efcpHRZXx@0oV&v}t_M8(}5hR`J=3Q~d4 zs`J_*=fylPq*jeE6$=e@83;7P1+^8TT#jjj=C*LP;o$p+d7GSR!TyDPbntQq0sZ3Z z6K&a3*-00Z?bGfEl_s9VR5#Yjgs{nwD{EninoUs@#D~ND)?l{%w!0u)W6?d0m@ALB z03!&{k=MwNO`$lH-ki0edgFOp(uq|S4Qv(y4j7rVl^WfKbag>#QEb$%+ct*19;aZ{ zB9W=nj79K@-v;L&`)J|135S1s*t7T;xE>?c^*zA<@g^H^8;2^V8?oL+W+hu#FH?^= z5bZ@mgW(YRwtKiAB}SKqD31fV3&huTDb0Gir>Sv-U8Tz@^k|!8oitfmXBVPvDm^H} z|LlunBYyvB#-H22i1&k^Cx6E`wY17#ePO8rI0T&N{6gc&8k%d;6J3K>6 z08fm+CUag&y<-cSFM|Q6Z%guA$sd+nB50C2`uS*HE`cl zhiSJ>^jBky7ub{Bynji+%(ic2nCix6ebgfEc8{yg$Ms-EwKKcjA)uM0B#<-nx}plb z{j9v-rz9bpvSK2lFr2iIuBoVqigZ({H@mtZ7#^(ENzP9ODiwPQUdG4f)}WZrQGk#* zBZ&HW1JFSS%x!go&2n)+A+b)7lyeFnl{}KJ>u$SR3y&;dNR+MT@FABrDGOq6_iBIEpke=mq#0 z5?b)Y$BNa;>HTm>&2$2ZB*7zS*!==}$+))}Ahz%DcZTq1iIzqsow2*adPUF{Dh2bb zTo!EllolUhg4PN(&zq~JtgRl9nNNAri1tx5oo4$T5$<-A#HiL)G!+q5%FyeO<13D% zu`E)RNSFKP`SOm$_F})@y>JJj47XYYb(wZ5j0MKDH6jFHqFHXmN~yeLxO`BrbdH7e$XQfIZjs#?M($jIO7Z2Hgf_3 z(60Kp-$Du>lkJc)yerp_tgP7@gJ^HHr_vM~l1Zb{WJs@5J3D6jx|L?VZ8k4GUC?#A z{Z2`B*)8MSJqui|+Y%&;Th4LA7<2fa&@`j_t{aHB08e_^wzxQ{8e{`tr(i~*0;zRs z&7#k0j^nFh(|9%Y%&C2QCJOpZsrm68*_bbfR5_mdecc&rY`y;mO+qDP#^T9;^JIgU-pw3M0F zQMVf#e*NNp#g%9@k+k=J$|`5|>Z#0XDJF;rJ7FKF`f5S?i0va{vfDXF9eTClVuy2x z0(C>NOm6^~WGOWY!lga_ zc~`q`)e-Pb=fB^XX40SCZqus$+K>j{+{_Vf`3*n~GcELlb zo%nIp($;qv067McJBLn?7g~ZBl6*dd3)GuD%3^THIQLlP6n<~?%~#3xbLrbMuX)7s zBDCXKY}WV(YAO^}`6g2z*+IBfIs=kEr#suu%3Uc{v7c7J@1#f}MNez)oG zhaHXvv(K}O3MXQ2rr`Dt&$R0I!-J4JGgUm-}kt&e=$ak2NiPnKDF0?zc!7(k= zC}@Vm9bE(bX`bF+L`+E6?8N;;ER&K>XmC{di&0UZhy$Ekn!agKR+0YnIB* z-usV`A4up@kK&O=s2nCQuZ1FLx3s}@e@~xmw*Ghj;=jD=5y73Q9*es$%~zBPnPeEn zL*@_nlZ;*RG~6y3sW#tSXlz+|4RVNqhs1CT7_@L{O^=%xYR{n$@SevZYy$q(d7xt* zNigkkr1OspSbSsba~`)Pedp zN)zkD$Te9^^v4OkL~ppdy?>!;lWNQa_7my=k?pv;tQk)1 zj#1;~L-(S=@KBc&&O8518ytAej!lVO_hOH_3t~?|9t>9c`?0BZ4eryu&^IYJFFeWe zkq0SajE@rAqsHWt>wDz97b5wtaLdWY)0Pf)62{4b}{ltw}bxe zEb{G+DjWk^0oQ~$Sxzawbp^#57l@H8Y8`?qX>IOr#~q7l!%Mc)cF_B)dYU z5WN9Hn(gS*s!!pGOR8Rb_RsXTLZ8@@tDR!HfYh z-ZdRY5vOy?0}M;hQ}IH~)<1ssl#us}3d9bel^{8iI~k|Iw~jnI6P_h`x1wr?<>9V$ zlJ_s0hfRubfWF_9h-hqBz&wu$l<`Io|63zb-v)?@%S51D5q1la3#4baNnO$nN!iuIQrn2RczHv zhuk+sJ|J}f>Wyyg2DX=EKSo8>LpwMa=J>o1WOmxDR0ItO;vXz1YB@NqU$ zGvxLi%2u}hApO_>&EF>W4LN&s(UTH3bZ_$Xr$5|JH+LU@e820j$K0h$&@I!uab|-2 z^4Yi`OoOd38_?7#oz`)0t&3#YL{S7t=_j!D?b@5O{?rpY^dozr2ojk!6(q;WS|jm% zglavkC*$4AhdU4zUcEVfVQ{!zveUQ6cO^u(qXBvRaa_5+Y!;ilB_CbOs`+=@U2h5q zVa{wL&{NM`%pd;YxtF>G@AJdcnx@;gXIzDoP^v4k8i(jZS2%x%1=sQrZA@Yms|9a2 z@)Zc!*xPas8^m3C5bNbg6(LgQ+$$r#+SjkY_^Z=q*OuH=d38f}xi@pQGKb=tz{G}p zsv5ndqxjp@-8>)!2n^n(ng#CPo{H(N zjjnz={uJi=zy2@&$K{F)B=MD!GTN37*LR=F)d6DX!~4hm(|%$c6IRQ~ddXN&@48f6 z$A~BvN6ME!T~(Xit|z~(dWd4MF?k@{!RP5GmtD(i)oS|KXVbO9*M7I#@zzhyZaOA! zF4&ga@d~P5*(=bs9;R0uRP#QF!y*^Nzz&Bk{ozODZTr>PaVe8JR#7OuAL%C}=2_i8 z*M zE>c^ltLvu~PXsC=k)d&*V3FW1c6Y2gI$*>tD++p&FkLcJisu96^)D)^)s(ZtLKjpy zqRK-|g)q8ZZ@Rqj#)di_HJaVwKYbVX-_J&_6T10&j<`r^g>r)|2YMcM=Fxlu^~380 zcC#j%mzO5J*UDf2%j$stwj`U_W8z;K&1Ad~FR=q?puSore z#T4!v=mrAm6ZR0|fksTyX#XOMv7 zoMT%M_zJfo5N+`tUSOus?Oav>JJn^Pcmq&CnNMDbs!vp)(pe{J7&Aa6Ei%d4Qofpw z<2FGZo({Ys8(oj7*&)Zn$^cs7$xhsJm`S9zpwCU6#Y?*ql`m7pQ5szf3?AgE2@$A1 zzaP>Rq&0fov*Di}7BiS>oOM`rTjcZvy>JzhWOT}4Q^(WIA{0Au3Vceh)ZV-@y^bdR z`mfvJV19f(M!mQ{y@#(0;rsmth%QF~ymFYHAtLDE)2*9=DoK3Aszh2gn~h^GkN|=t znJp1*6>O*S$&w|RFVxzy^7gIZsn-qA-h{#Z2I;*R0=O=){neAr zhsw-&klV)W$5nvEas<9987{We6D5Dz?_8an___G)JI=M{0Cx;{OY*A(0#&7YSneQVEXPjn1BWY;846}U6 zJwt0ZHJ*pDUstUZ!hFY|ennA_WhCq`7J(LtaL1BZ!*37EOtRz~rLQ!3ZHZDp$A?)-Sr4}=^?{V6xXrqr$ zLrAD(G~b-Osl?AqTXte*Q^q7B7cdxMAVhpbUwI5Z`8>TWHWv8%?=g)9R#r@=%uywQ|bxz}JPx|Lym;z^jS- zfOg;v5|_e_tGfYk`;<;T@M1roJ#P}Gs_)`HSz7+jwmQHE&qTJ0@IEq0%w@!`wc*$&F!9y zGRD~LeV@fQD?5Z*R4o{>D;=s8iee|;Nz*v{s`AC3ef`xJZ3RdLG!iPGIF+*b{pOaVZ^9Rm*8}s%)ek>qdu`iiR}rxzy2_8H#oPh-j9xT zf!RQ)cX^UA0-P`hpUm}Z#k%~rt+|5aL+FLp>JLBv)BpZ60QHBV-qb>e`YoS0>`Rhc zl-uR@yD|C)c#yb1OTNv%6IDxdSEgO-H4Zu?DmAqrjL=-UkrBNZ8(!_TH}UioRLr6nivhnx;kMbZD`u?k-(y& zBL|GwB_r{OM~}O}<6#Rd7aXe7IIncQuIf>$j`O<@&Z}#aAsePJA)eAi9B<~LNWx_> zB*K`bTUz*;P22tPPj?~py1*4{O`#1Zi8wkhGuL#Fciu!qjY$w5{801lsWW6#O4<+; zMxotEtTY*i39nDoYS+5H6orm%!!m{;TyPlWjlurhbYX|`KZV=8ygZZnR0@LI6pEf3 zw@)fY=d|7T&oA=QxYqEoqq@f8lX6U_^jFXd9&GQ6fF}nB42W>UM%L9&2)tlRLa`+^HbId``Q`(&3-9qxpXG?U%sE^18Br3azZIv^u~qJGP31p z`TnqV{j4}Vj>o*In5=yN|Nh_OW0>A~^SY&WJINvI`nW+X7EC#n6wa6ot;Qo@{fNx^ z0oS_{aw4QFOCSkPN?N-<6?EDrk=9mPQVBLJWC=w?Ol4z0w8%w_QJqu$)%%lSzy^xmwZWZmN+W$5Qcd+}e*o8-Ef2ff z{j$JKD#*mZO*AN@=bzI`?e#H))~&Rfrp5t2#mtdtWDLhc+dQno?GHaK+PoJmz>h5J zX&Ks5nbkUGasTp>XWi6)^XLCg+a{Mca?_Y1`;;w8FJ)JspQ;0Gwpq-0@*S_!GbDW3 zaQpu6rsn2pH)3Qk_u}zReF$F|DFYb)DN^wwMZ2dldPgq2FY z@zWg%aRrvh7M#|0?P$i8!#$JrNrGFu1qmk;l}5YA0d9QvunyRJ0M3xAUgp;;%g5g6 zo^b?$Y*vyJZWNB*Y7g#)HkrBhx4*qNeV{t_bzhw>J$@<-?yFR{t<4c8N2q)6gp#i^J%m^cI%pOdsZy)nNP-w;p23xalsIpQ9NqC8yvP75 zU*?Of#fXR{$eaB7dA-Al7*4245r`OQ>Nn1)8t3lGS<T;ebb)Mfd-pPhk1ZUGVG6|w~=RE)%#=YCMUmBAH2r+cCO2Ys`eo4 zYU<+g{d}<7g99hBK>@6EFB|R%WEdzTKM>k|sPMczX>;B!{l&wu_SK0qbqV7nne1}w zf@yb56I%@MTAE`Bt?REjExl_2$)Zp+qEqFWf-K406FA$%7^`SfLsQB?{se&LVk*PD zPm#XHfzP@tP3sNHZp3CRDezS$!*=Qdi;!CU>QdFj#Mu=pq~YwYjt@#sIKW>r4d0v9 zh#)R;x{7zyP-QNUP!J>3ig0{DMI&R|Ys7Z2(shxm z!(po1nSP@}JrtE>H}VnY4zupLiTJqk?urxY=I7h;;i!F12ufHO7zR&2hky0o|K+z= zXq#8avtm77V_P zXa%9Sw*YyV#+iF1Xb6Q8X)H%zQ3J=7xb>>Nin!hYl6vzC@DT4GE?zp0p+25rD}6dv24vMryL(E z-6lJ`n|I%wYMyMMIKQQJ80Y+M;3rAl4zZ8A6c5;l@?vH2MYfL)4nuTq5@<_tFbqs9 zbCt-i-O$epVwEZ#+`U+1B!f_Zx;l{U}E;UOwIdXFWLMh%UOT; z^b)i+(sz0^TuwpZ&f#3L4oR-QWnt%_t$X_EWhUoO&@MokcJ#^pABJE2%~xMl;=~Bu z8O86)mArW1>Ano9AauQc?ibc?&Wzs(x#k|z+rd$pr3~*peUD)FF>CWK^}?>j-l~s! zfn8zX(0UKm(KI5K%TH}IFS_x5_T7i*RsRqF*Uk+F_d5(@e4LPoF_7+M+s~YyJnrQ4 zLATyE+z4hj7-ZtIsadH*JAWFBDTj5Kz@yv!{_go8i|a)&SVT7c(NVQ#wYnX}=(MGZ zJSD{&0}Kiqlw#RBx0)RNnLvt?&~7wzR@cntVj5?_`8nIL#6>kvjtzJRk_~X$R5HwW z|5_LVEeg2dh0xKULB6UHot_`* zk|9u@Mi4VyiYQ#`Et#cyfma4jqSUPrz_H0&M!QcBJ5JBj)vOOocG`DNZ@T6@5Bj<{ z9^Adp)mqS3fz8C2nj=ZaO&!VB(Y?o(?EI}zM(O;IpKU8TvGXKrq<5cYgSpEQ3#d%D z8)m6qf7du3B#gmsb@==P;oafLR=vq4zg;6A8l>UN$2ng-!n!moZC2V|FA*-@-oSS{ z*IIARDqT|KgFAQd69+U~9-_b8CS6mkyrOb5ID9&qaZ^Q2{mzXx-V~#$t7+=H4$Hc9 zef#ub*K;GrH%`@B?)IMjco?m=IXLLH*q^|j_^mWhd5Vi-Rb&$i`+*xfyL20SeNS%6 z^-A?hFK01JQ5z;FL1P-L$Fl~*>TCg;2gy?G<6o&6ka&(lKhM8Bxpws~i*}NuBZ4zs zDjHB^LwB@N-kjDNwsOg!U_05Hm8;XLOqYBJdD($r>`J|SeaD?cfotV}!y5#rr{<*4 zyJXKbh*_?TfIjGInqv|}r08eWo2RFmUSJ0~;F8yh&5ELRezzQHf^Z&xoDm7t2#!sp zvule>D7@KSi5iSO2a}!8-;*oi#QoQQ8Q;w|{`7f2PIW(|@=TqAa}gg88fz%nk9*de zE9{PO9}3@iy?Ot*y#n5x=FF$t=-Old}rtX2hrkfLH{y}ImnuFq@f%vCHHGz9r|b8>6(Tx)1*=lZf8 z#1Rxg$8eSQRimlXzc3VT^+#<5b^*Fu>DWA%a%u@YXg!bXkX-9xiCK`~Yqcm-sfyHW zQLdS&7gskDf#6`Z!F?6fd0cC@J9`F?+f}yE#DnFB{rWKX8NC+-r)>MG4(c56M^}QH z#U@y@`1QABkViV0DY?w7BeGG5#!{&zpFOhwR^54)6^LvOemNXZFM!K&v=j-!~X*0Uwx5L2f_C9G6$Z~9{;0i`C7ZwzH2(B(^;Pbw9X15$I z+&+#n7(AcL0j{+Aw^qAz{fBbH@i09vZI#7(q%IHHPA@$|C;DbGu0a%Rd>W3e8 z6ini9@vwG5&~pKlh&?rsh3m6qw0S&= z5sh;R&V;8@o9wTr*RMlY@{v8=4%wuW`xQ0FG7>$~kj$+|ZBuNuRqPnK-@0xY6ve@L zI5Az-+ zsqFSMQlg-@rF_Q&tI|%;M_aVi3Aln-=tp!?@(+Jpk6CRd!u;>UrX>!ip#uajQ_be| zGm^NFx&-z>ss@Xd-^HLn%4Fb?@AjkXYQ5jnC?%`4pl;!>BZQ4>el}w&)d*z3R z2mq^cZLTNg_34#N$b}h>9Z^_Wz@s7q;=9tsR0!Va?57jD~K6hMxIJj*e+`Tz`R&=8WCEVA)fZ#%pH31IL$Nbra4(hM#C1 zxBjNxCzF^H8XH@eC%--so0ap1Ry!rD=X4OD8nN8vp^lYGZ=c_QKVPPwber=*k?qD}SpNYs9S%Kl>Wc7}}pYTd98PPg$c32SeD`NnZ_ z;uwVWEq}f}e7~D=aM&zYGslAg#8}F*6_Ij5UcY&R({ z-eTdpbiw(DNM@w*O5Nr2__`5uu0F<9XUn@iC!E<>7qH$8c$1KU4};-mxjm51W})G# zjfRP*E)^Ym6i}u|FC{o>BFh%242Xq}72Sf6$D$GR*CijOa{cT7_WFN$n3coz{==Pi z9qP5%{N~JL!_P&H!*EtDx#Z>$tBuT2>Zf@t}`k3_U4iZmLUZT=cIQxik23o_A~`@4&Gm*2iQ z{lzQE7A~92lb|#4qEQ)h1BM}s9|r-Kee>;w!&HK-JMRhHkxG7H@MME1g41VKE;c_u z?p{8zby~qpqo(8cV{%%ZE-KFs6p`s5jOo-4Hf8^bT-5tLscqm*3?b5Juw*p|4+hCo zBIvUx=5Vq|hdb1HKdqJlW>qLM9whh_wL4Dtn6p9<07mTl+4Y%e$$HpnM2{X#=Fhu{*H)mI$g-tp@Ap%MCA|CLKW~59-3x z${ELKPL@C2GP?+Moav~RB30}(1kKjG zV#+?lZ-j$|@Z*Ez^*6nW!ukF2GWLDuo=)b7L@!6wtTH1bHY*|pPS zLHgJvFt1331Fx8}#U90a5ZG=4t$_daP@<{X%w~`GFOQ!IUZN*pa)+tD3}IWdfFlP) z>&uat@%G07ibcG6^AWhK{^s%f{rz_0bUkoJf(iHmAKxrnvmXT0(2H6M6o1iJ_uX)L zTWVB>Y^Xpmr}{7jHQKvlUZP%@9gP^O%4;{DDOW}=*4mu*1_W%uqwSZ8&N9y5FZ+p` ze)w@3Iko=N=kLCMl74m5;olSuE5@=ebQ15Cbr8GLSz6DYxi53<_aq(#PAdkRm-fxU z3Jhv$DQD+#ny-VniW$yhm<;2yiktYtcU{m6yof0);ioud17uK_tb}Zhv^wWU}CxuNk=fSZ@R?Gpw#vp9ar9}-{EUR zKZYo`UGB?byg6*rV9J0w+%Ly`6qYIAZjx-b2ONwbdxQ#XGrIX$z%WpA+~Oz8M>3=E zW@SB5v5n;LdAEF`iD3rYr-@giFRXVdDZNfOIbU%Ln>AarSahVyA~LD(XQ# zH|BZ66WRsbUv7N5`1Z7%dRCx_j5i$t>|rPx%|&LSrQ zHShq1iMlK_tBsT2g=5Xev>t_)1c;V=K+kMdkoOEjJ)Vtl^iiCD{q>E)(LWH$K4&Gj zPd^JRSrRdI=H=bAZ&rL@{`4LnhF`yJ3bbmTfwM%5Q~*vb4_A`B97*^Bj(wW~y%*Km z(Xn}cgr?%>2G@L9;Sa?D`{9Q^TwFMTgV3=vw^FkyOG3#m=DVTG)eup10)n9ry8-bG z5MAVa>&$>5U;J3K1er zB(q1e+46QYSdrfw2IHxq4wKPPF)~Ui#*o?JBFD1xGOI}GkSCgcaqT#<{I7pGpowR- z2}c0fsh`@V-E3US@{Pb;A>O-DZ_E4W;#?e!-=1gT==qj^ z2b+b64t@*%}0!-HnI*WbKIg^xh%s?!v5F`LaG{_dWZQIL`Eh+p&W!#wc9~YNao#f7F%|TjP7W1a_{60 z%pNvsni1fS>Hdx;GAYeQ1^<3SG>GMKkqZ&q)r!f(F( z`ufeAx=KX|c*;NheNIATGG7>hE&1GV1}tcj*u-H7rWGfB5lfk(P71yGc&GZ?zjTJ0=JnID_SC zxAMCIC9AAq&E|L*78_irr7Fd!y{CQAUeK3nMYF`Q_(7#-C&t;o`ucwKG$-Uv2N)JJ zg>&}DwUakz(MW!K^3|0mtNs1^15z_vxM&+JKGHc*_C1_$OY?xF9G6kFvKg1p?uNPy zc+`U;i^xJ%F8xDp0DdIjKi%@Zi4IeE$4!k>lahdqNS&6bIOJ13uD{Jog~T0O+7U1Q zh(b#e_=B8rfnn%1nM7fpd7()msLMi?Zmh4hZ5pu~klvxiA0=|+fY>LtNAzXO8S%xk z4C7HRF>6inU2`}=lWEgeq7C9_h6L`j-ie+*m4{)g1L}7(lsb*eR_8arGn;??H`Qng zIIH-yal|XZcKr@HO#_hmaSyK8Y-3Rt_#EECSgbcWXc4%u_3LvMYD%|u@%FM>uY{1H zm=`Mz(e4M%VH-UB@lU^B(Ze15_z#CN?mvDUVmqfih|!RL-f#d+i4V4+Nz}zdLp;4f zzQK37X{k4pJ%&((>ArYGdYQ)VaGWg6m%R}&KCBa!=Jl7#r@Idi$hvx6kfS{ zf2-VF2ivT6Lq_aNukMAK#h%G< zU{qsrwx!MU$hhj7qY*EJ6iUe&`jM7IO0%o6O*Cw)rWolYO!f)*8KT=f@2 zN9@+Cwad$2esk5Ly30&>#)B~qIYHE9FAqm~N0KCdN(>n)7Zsh1nBq!jCtrX4i?43v zZb0{vE%0*Eh(6v=*MIo?g_#b6K8UxMI5$eOSHGWL3?kfrxS8(9+5E1k6BHQ1`RN@>y;*ttWoI`debTvbVM~-;^Gufy zuV9Lu%TCiiESWqiO%+ckGG#2^{y57JY%44Ot{N&P8_tH z?6&S%2g38>c3Cvve%ZEw_+ujo;J7E4-q5Ur8*_37XgzLH<9X7OiD#X>dUbxOm9tDt zpi$UTz0*2p#lli@+#_W;ntea(&GjyU>zr4r%>#;LYh=_#=%ZboOsMB+-Lo&=UGr&1 z**8jN_t1&TmACx3HaZ;d+>GISW>mB?#9W)(RM$BtPa@T}TB_p_I?lEw&mXJbV^hBBIWepTmhEDw**KimUZO*)BRPwzJz>5Dl; zhtc--$G;nN*3WtN^!rcufDCXyuI4dP?y@%<`FaDWgQ>i05${3G8&n_c~+c!IFdH?!Y5fNOd-^zPV62_q0X;H4j{8GejM<-0FnKXPXU}+pn;{i-E&K$srfriK}CuuZ+ z7s$1?(!D_GsnU<~#dtjjY{Os`gDc9Q*OGqX`58ho&gPAyL* zorfdj2CQY7<#B$er3$Il-= zezzJd=}eb-vFUY_c>w{O{-fPif>*CjT8YBA*=b$cNxbOS2CN`G0DRqA}>sp@`?*sZZPG1LwPVF zc+YKi0=J!MA>T=%Bey!8YRlqxOWP4>D{B;#o1X2Bri&R3cr#?6c6}zD!(<(y7rC2a zpFaLV${Ap1SCffT@qYJ;c>L-6I|_7czBY+s$Ftk*dPX3FFdjM1Yzf`o^HjjLRu^u~{Xa-9p04G2&MJR_uYS2tC0X zukPL-sfjyMdz;Tc&tBF?+*{_gT1OyG^Q2MCVpFY;?_%DcdZqdLv{~(cOv4$gE@#Ma zZ8wf~d-bM&KaD5pdBYf_C~A6H``eaj4{Yu5Aq=P$@X>}IUzN* zNn%IRD~%7mVK|clC}{94+D1?G=c#ffV)=kQA~6?7U~_r}vm}Uz_Jz-lca9a~u;%k$ z&ejV&$qBGHG7Y?QQa;ff#fKb7jcD^SZC}c+aDBrwnlEVV^N1R;qlV-VxBxPg;+L;gi~e+6~)YftU1}QN6XdZZffY|Jm@sF z2%a~xq=M2!FIas4@#7v%8{w|7bhDS2Ewk|utZ*dz^WEwQTUEqfT5tk$@SPwW<;cL6 z2;XU-v^WP#?ItT^>-<&KqZq0l#rC5+#xGLmy5a)l?n42iveqXRIxHUUuvR$5D9%QB z;r{V|nyyP3&{Z!o`1=Mm$^yVV(Ek+5xsY1d29)=sQgHfllMaCDaEnE|J=qzjqxbL8 zC(Zp!&hkAd($cly+O0FAT*vL*_q(wdGm{9}pg=b`SoUn48bscoKL3!5ZvW}K0ocnj69k_Erku>n#XKtk zG7M*_>6DDrvY_wJpIGTnmq-NVWHC8xO6`V-ybFq(kO-D1Fw|+bq{9#$kLE+G#iiq@ zOMuwXxdu<8QM@ap=++L_lPD8UgUxD|+ChKj3VrTy%UL89ct!d&p9jpjSsI5SGM_ZJ zgUN?yZ~*1)9H*({wIJADpW#TN%7w>>y5wwUbFuFa?sk68y>-sbeEq%Mq$U6jNAir$ z)!Dl@;bb#bi@POSES79gpZm1)((?V?QG}5nXA$g@d>6X?P1mbj1swPK2*ZvP?u<3U z*S|z(Xy`4YEZ{q}8R4O z{pW4>vKX;$Y~p@lU=#!eWo;U))oQbP^6fFPC5fgla>F6qo;bX7`!J*lC65MLXkJ`? zbImYf2&L3UO~oaM|D$ljSy}KURQnHG7I5URAgbF+)9_8S;1l8$Y#nMhm^;(ea*BCi z=pb(pliAQ){b73`e%0{lwT@A{^B__NV5J1K@GA zNUV3Kd<0Dhi+uS9jxgUc*iDMQXwes%MrRV0{OnBJKJ^QvWJNK>)}67vMv6|QI8BaaS)iZ zMUSUDPw`l67PkZDut==JA;%r=3zLV<@?qwe_q(KF5lMo!#W8lsL+J8vE7PF2#Lakc zzP=_9GA%g|+sMx$=8xw1e7u$m2PzxV2$vL7A51KT=jZfF_~BF0o8ef$x18*K*#(_`n`|NdZlyyB`dR_{BdO*Pkjh2&aULFqIWL-{} ztQ9u5Hxg7a6g@-ZZMWYm*YpS>bR&)pbU5H)xG0V|jL9V6sR2#5x3i4U@Q&UfcCy6k zHY6CKZH!|BgQ4P^H{?|aqgqO>#;p`!UVNl(An#@}l{1we!iweX#oLp7M}N3|?upeF z1`D5?2Q}b+-xq`V$3HEy?ft;-Lz#2aIWWW!Pr6}o25)~O*;P9>`>XV;f72y5Ul3`A z!h{0Opbh5-oRnFp7J~vY8+#!7Bco`yi41XgpejIv$)D^n;o6vuqHc@OY7urYp3iri zEOVl$aV{il+QyHp{=?gS*v~OdVHVkLce~y5#BaR5+5Vtw_wPqb{Opv67A%hF@!k&6 z`pqFZ%nzf{kfbjC`ux@Z@YOf(G^g_IYiGRKz4#{f3(4?PF+1>|MdOK@7l1 z!!C=$&OFEQGJ04&gzHQ)VR0$dz` zNT`c`Nj{_a{?oK&?jG5VHaIME3JyBQ3k`YxR@1O9PAjiCg4e$IqQzl%&d?s$rL0`M zd36QBik=vA2tYB0AQ5gD!^B9TY?^1mUKgh<^fj)gEbYo3eKFA+P(K=QyhxL$RTB$B z<2C60$B(O!OZ%+HzI>bMIfevAMoW%@U94GOV!FnBd2Q*`;tsS6?B;k3X^pRtp91O+8-YjlRS0i@@Zjf2l@$HHDXJ`nSUy?U!>$To~{aP<6iIQCqs2<7k_334;UZ-e4 zTQMnorBaWgv(BIl+jT`mh!Sewc08%w;$a}T>F{A_MQ*Vw;7M`xvfaT$r+b))Z?0LZ zZ=a&yDk%oCz$OyUksV%w-G4yrF`tB9M;VOSg8)mowzzDH?J+Uht6)WS&@qhR3<@tV zOeG1g-4zND|E5jXpL%+JW6l<+){i?w=LWFDV!FB=28)*^*K9C=7(4?~7#ipOL3;OA zpYlO%vS3|K7Lx$f%XEoUj0xN_wI|P`PBif}R@02j-K6Jf?C~*j@@O5zq8VByorSY6 zU)u?)aRV$T!4t|@Y*_=m+$?QWY|q@=VKqsh38*B+MNpLV|GSYdw+%vI|C|twLq4WI z0fV8{r24&tp%DE5L^Wb#w5-G>rD2$P`a9LGHhPhuAnVb1yfH(j03j*Fl8t!3;q~0= zzP%I_-xFjyw~AP;oXRfpa0Y+?GHLX}7^lH!*?z2^r8DbHo{z^U-Y1nKk4TM+VvI1a zn4>3I{!n(DQE7JL`P2H;-Z_;*%RV1=wF;kg}ht+XTu5cU9aHI+0NTvLrL0d#;mki`+Hw~0meKEz!6gY zC?hBC{rG<#D4nqrNMYolZ;C8;hDE50Z8Y=T9&1EvNLh5ci1L23>zGap@W@e)L)gzn zn*yGLU22%d3}T6vdbs1IuEb;(O&Atfi^LP%V<9Bc_0K62-jeC#%3-+Y$d!(z5;)g% z{@Ydgn1S!qfDclg(3IReztN8z zbuoA2mat?Su({$6n18@r3Cg?qDAc6WhS7QZ8zn9m0J)x&1&ByTbg@#G}InyBhn%U{?3qiSw|p z2`?Ym*qF_Hvr_us|HB_Y+|DLt``Q8fE;xF(2j8LuGPUx0-+%Y)YH>Eph!@I)(neVM z<~!K13^z&r%W}Ejh9cfzM?Qb`x9`mBUzK;G%oKnCn+#{a{+nx#JhA@;O%#E^&^~V&?+jJDVm13Z1 znbpM?+Jg%?_UaYBWTZz}IkH?g3E>>AO@;-Ij^VbwUWKxPcU4whuduJXJj-LrEd#X| z@sjLwvjg8jR4vR8J(XHQ+Y&4KJ7EZaIno6iF3;p?x49ccgWeqOLMZVQ*@s=AC!=+# zJ_9yhEQh|TMFU?@`e58P6JG{+xgi~8&{Ok)G}aH&S*&}#Y4qmGDWc!L!s@n38<*3& z!)Uq$mQaMc*7A3EPahIjQD$p$vm8@K*4_I_CIq3;>tmd~iRki-veE8-Ghc6pCRSPF zD&+A|Uxz~Y^?&!T{_H=zZKf|TdDyDD)as*~UwrW&f1~g`=m=pSw6PCd_2xQWMBP~@Flebq)n>}4&uzmog5EBY%X{y*Xcj#gcDvj=Gb^)9clAg!BVmAnAVE6R z9qAtQu+b-lLUz{P5#(C`|9$WKJZ7gmEv+z&BP=QWgcMQm_{BBI$dmuuxa8$PR}m}f zw-k@P51JPc*BSXJlV^7OyuGK}T?a+uD#mz(3x2|^&>q)9Poxe#OT{6Seee|6i%&WP zd<#6v?+?B{7>V?lNBRcX&1gIrkoc6$knQ1WTPQM^0vBlXpoqpTvOYS^d81<%&I5cA#fcJ*-FP2`^M zW&Ph;`^vw)@MoKc)t8^^pd)H}guqHt<`^$_b7S&2gWJd0^X{jeZB5sJcy0!E2n+LW z-UKScm=oNlARgY#Ico#@oF2Cuug8S*KtsPe-aqwg^5=i|JLEo>EcMoo23;|A^>2Ui ztH1dMs-B}5^9PvlDHSrwcgl6LU5eL3W14jbjJ8C@GhJkbA&UhUPYCC(obIzks&lQ6 zm&c8G(bZvofX{LWXoSXqk@CrXr+OHkK!ruNwXm^wRjMHHXKOI1q|Ze*U5?88-ld&G zTun`95Dcu-qfjj;jQPUB=|dz~GdnC{$P9%Y&Ai)b)nt|dmg$O;h_emdeW3ayH|nX zgh%PswcM|X-Sc=GYK!})R%@|~!ut3ntg}f`);{?dvx`?JrgQINt4C)zG#xlSm)8IuzJxZGh)gh z;~_rCIohK%0*bU*iM8N3ef;@NKHKl-P;J}a)_ddbZ@;`AA-KPvXHmWV)&KP6ue498 z3nc08u!t#=f&5D+8KH8&^Kx8DM5~WXXWq)$rI#mPfl=Avn`t>iqyy1D2uTBwZ&Fo#b zA>%f$t5?<98EQFgP`vs1W4ZtE_JQq;oV__({pwAZKi9;#AUG6E{LCbAz91~t`TCc? zv2Kg_b~kH`xvnf``fKy2$AdQu&7Zz|+HLP5GO}~X%otADULaYGae?n9O1~*&ij$?P zBG6Xxaeg9-%z0>y8<+j$&2hWi9iL_qpYrgbl-iB!*I)no#brG$LGcWn_Uo^&*MDI7 z30nkBBrzFNafu?sVM$$P7HYFAR?o3Q@;i<3)&HwQoAtORA*ETpSu3^b2w;JsO%jEW zkH%=kE6|r{1g~G*G9Wtye){EJXBpUIpINXFacAX<7LHSN~aJfl>h>m&1${!{I{RWK@5~MH-({((06kKT#1Y<1-ULY0KPptg>lE^{qoS5Eb+(&DVA3}MnnOc=Uu{C=q4WD9*E{cq$NTu z3thCkR(y}?vY{#5;baxwmy(kS!`Hd^L5QHxtjJf>Z@wA)~@$>x{}WB zR!Q3K=1=c;(x8hs4|{|U6$z3l9af~E%cQTYiZSQE_-+%f|I2q4&#XZYa-{ZR=#TyT z2lKpmd%sVb^N%I+z*W@k4gGwK%5?}Zj9@$n_xsiM@y%+v_T5~w1F~hBMgtDi9(j20 zp7n|)cn7e^Yf`JA8p`Iyu-(78tW+8T0{eKr0r=251Bl>~!BDJj?w%&ovOp#~ zjgcEufH)fh4$19a>ug|KHorG4e&k8#aS8ti{_OE?>kF+0hEt-}6W(Qm+8E$4XcR(Y zh@CS7RY1gw)&lpbp=V!jZjVdL3IEkzZe5IFg*v^e60YtsFdK}ye4i#bpHkj_JjJv+ zQ5O~0IW3hCez3Fh$V}qs)l{WpZNnlXmuvx^6aco1$2$a)Z70{7uRKHxxAGLG`CehX1Xbo8VJBCa~gWG(d1@wg24fb@LG}_4BP_Ms-iw=@5mL)zJ1m5BWUy|lm zVybs**OktVV2{G=cn57Uf>U79+OW#yrnLPDh)Q~Ox|RTN_hUX`HO+rLCc z`ml0`N-o!0jCU+=j!4l-3~-ENP^Agzx)@#%~;VSKlYp?I}(PlKl9G$HD*ja=w6UA`Ii@al&J@*W0{5AgAMR~3M__lZuB9a z-jGuzY~H#U#51^?2hRcaW#F=ATr9c+rWqUAeQl5RYE1I(M*Ci>|9wdi%vM10{ug$=iy&F3i? zX$P~~fPpbI*ZE929~QAqiQ2#-XS0IOc!x2Fo=*6Q&_?F}YjR5oE_=Ks^~*DSbvx~h zO|qElKOE=X&bIjSH=yk)ZwGGp-CedlmT{Ep(PNoTB=UHfJrF4M&4}evhYF!?qNRw4 z&d?vqwk|AyTGwF3fQeIWzN(y|L9M*_;_PLEN={+7o1zY^Vm_k^1b`nG7Mk3|i$bu_ z@xmd&6ybsZh;dA<+#V_*%!(Mcx-yaiJ9NjiJs?2vY$M7&TZlcJ*{MCGC^Bx>#}=Oh zU%?!fM{UNC(e7b0ja$ZI%b#qTjA~6-s9cUF(5x4a_+~PtBl#4{sp@8{yeUr2u7a^y zw3a~&Hy^Vr`h2HH`bn=e1pKdO>%@Qa`0ybX#vZB7+pS({j(`OJ;ip;iMb(@~eco6( ztu!Vh^cnCF>w=Ix;*Hyavk>N65v>Ro>#MKfE+h9a*<)DQlAr(=gFL#r_+QqQ4#6Hd z&2N4+U`0?krX)`nTaFLu>ZHD+WhmpCp|Jq*Brs>+Kkb}i!KN&9hY&1>T8S%jzZGA8 zUI*qI!axY^)w{d$`0mjagSc<4@;Dfa>0&xOKTQ#{UEV|5={Tf1yj2NYm{VSav=GuU z7(SSH!|vJZ1_LkL!X(~?T^CW#xJq_!D5NXgLut8Mm!}8e+wX4EaGv%CoYu|R+GWgR zT2C_=t)t~ccEWLYEMZ~v8Pe0Kfa8G|jEd4K2dyFsc(lYb!J|lx#*yrFy`P%-QD})x zDa(MLT!{0xJ92*6SYp`Bv<6<>(+@xX<%c(bjb(dz?{;fS@OZTALlqw8U8&Uuups)H z&p|BAtg%j8bH+kuzB|QZ;=^Bdu@l?OL?A8t&%YdIo9*iDr-N{2S&dhXe#^+0o21=! zCqCQykw9Z5+2!eG2evZjyyzu*--&_VD%**J80m3e=n)e zIzKxn~ZueVOGfzWMthQKK|k3U+zoNdhzBiy9R>4$?F|%8UseQxQK00 z=vKQ@c!mc!c?V9R`=Zc+AobAXS(&1C4F3u z#UU^4Nn42JRNwAs{w16Ec58D@$clDl2r_OO^=W#K_&Lj=Z!vdv_4`M7`)J>?HAmd) zV0?bvKZy_xx_pf3%$X|c}=p9bKt ze$~GI=Cv$b0y4+CO&fkcr7){IjHMRpje&J{OpQ5SCk(yt(Kt%K?*hHyZ#t)x`1*^6 znv}(K9g}-UKe++%YN6-w^ZjvuoN(*cy^`(t1UT{w_0zOhX_*mVWEHkS6&%4Bs$f8f zO9T#^bHRrdB!gC(`pL(i=f*NpLLLIrb^Fb%*$Y^m$Ovd{f40wA{0+OzH{^!8;=*GH z?M7{q378)`{gf4hqJ+yk@DAkQ9l0-gV()~^-R2!}()yNX&q$3IyZgL-MgU>Zj-pOq z+J3YelkZY>d)Q-BL3SQJKArBA9CzW|fSmpK&;Mzfg!27=`9suGiraPg@u*WJa;I5U zSUF_7XR>B&m+^XI4t%v|8Ul9GH13`es$j0^LJ(ZvO%aURM$bLu^NhZ6i4$|C7&dHW zRqUO0ARpQ3gzl|vu(|gc#<-e+$4T*&Q_wzwT+w#*m5CylFs4^{uPKN#?B zcEZ;0wJo4V-VO8n+tp;hA)`t@O`)IqA%5QFJuZ#4^3%Wk=O0$bhc^eTqk=@Gy$#OV zsIwP_gmZZNfxn(LUjOl*pBT0P>n*ME^wTle$z`1sw)vI#v2zFzAVFVz#P7h94ydC=MZzF3jyh zJ^SXRKZ)@8Wv-hsoCX;R31AAhkY;NJN&#e5vu&iYWUWEugPlpZc-BXquUJ_%Na$IuYOM=bZJ80p&;e< zJ8~~L5;w#TKfT+eYh@rc<=CixqkT9O%`RmKcrhB!+{8Xr34Lyp;~S2?$=y`LbWB9P z7pCcwb)rc}E}d=Bqtu~3kH>YTeD(L%mIKlxzyI#>@$KUe-+%n>?KV|5e=LUIen#3` zL)o$W>AS_7pC01K8gIY<(|32P#hN~>CfifJd^ep>!{EBH)twJN|MWf^53_W#NxN0h z;mak;&KQOH$K&AQsy80huga3Ahc+nR4OScK{9wd5d95~mT-ye06GUM zqD92Ic|azaGs3Cb13_~(F~p4Fw$$m*;?aDL7sLUa=es~UH3mcXWfTiH{RS;5__m@H ztz#XVC%+_K;wiT9;^E$Rs~0tW3qkVQ`1s?(nLe`33ccdwdQ zOBhbdr-uyxMR~%m9&S^HJ;>ZOrS-}ny3AC@@fa2=of~}uC0C0Q9<@Eb+Z z>ZI_86R00jLML;GMb@z=>-9+{W1k7w#USA9$oNlh?>~J1>2ddN-O=Znc=@v4(4kIH z+LM;kcYnaaNb#SNZF#$p6{r~8tnMIdi&xEyanchZ{OC8Jg1|H6O0(Ou|MX{q$-dlT zj(lC~^n~e5*%wto>W+$BK0Hu!NM?qK`RQ%<~rlzhhCZuD_^1E%$EWF#Yq!S@MrjZ-pFX`={^hTf zV2`&m-;tWNWW|`U{P3_z@yK;Ma@8!>_w-@+T8F9SG7`s95st@AZ%=j}<>l?0oLB+? zlgCdVx!Lt(MI`xiT>Ahz%K7rRVjj7hCZfCYVAX}t<=V2)9$9dI<_?=v4-gNjLBowubRB1st0blCGJG}R z(_mdfy1WN@!W#f)gFjzc{bohvolEYK%LQqZevQK;29L?aSggP`08^miebQPrsuvBH zuCQs(ALf(Cr#GCXiy8GP=2h+931#f098!lvLUmXqVhduAtgG(4G( zv*Y9Az2Z-&7v1jX!H?hHZgbQNW=}5j+am?G@o9j_;m}TQ?;f8@E{nmE6#-Ub7e%2T zQlh11c!~_2^zh!84=;%jZMs>n)=P@9sB$%!jZ9_1I#73wNVJ(EXH}izJ5R`)Zb9)D z*cm< zuP8}DwZmkcqgG6fBc4FMpm+tCNvK?yxjKKi-!OWYpa=u$CL~Wf0&D;#N@w+Ux=~c) zrZI|E%FAc3nqM~Vwn*^uV?46wi68y6?v2tXxTup&tU3ekydwmQvF6&P--pNec)uh9 zO;=!iIg%qXYu!#jE^{Oq`Qwk<*Vi%~umk26@06HgfIh zAy#NHEMk>MnC;60c+{?aN^X)6rSC%9%cewGTSMK!X1GF#WR3=kJnA;aqM9Jh^?4>6 zK%a9^_THuNHur2N=NCvFf-N(?UYV>6R$ZfmjXu~ebpw-IjxR*%iIc-tVu)x=SPxzG zTGg8yx!Fe-z?aFjR}*ABHc!*;b;sR*mkcQ%!rrwNjGXY-?%!_XXz-l)ga`+SA8y~@ zA04&46CB79$CEFBvvd23_2&4z-LFD?t9&wJN!%X~}o9x46fRDL-`9EC! zfCP&lF5@g_KS9y>=8W=%H(7n$s#RLbxu|EVw#;Y_eR(0j9;yEBm?YX|qXX0SxN0@| zFnYZPuvnw`zF6J&2Q*ZInOw8g?rGH98EVraEOu1(LX--5z<}EgW)d|5v)8`po_tg% z+CMP}7r_cPsxaiuvsz>>imho1vh}7&2muQcSgf*KbNk8mjJueapKNgQNFpB3UT)!Y%7dL9_f>@O1Qt|@a;G6$ ztOKCKX|8oDbOVc0$=;k~>RLd{+~GAr{WRx3(vz$I=6SjaRvC%9CC~Fc`Jfue8P?gM zzc0>fTJh-t;Rhi^b<1j7ZDBl8qcvHG$_T2aW#ma8BU&6TmuW7#yQjP1uYXwwT__E1 z#F!DmDiKH!2GP(vqQdbOsZ#H|;w677Y!~$J720fxr!S`($sXSh zQzzMNx!cU*J#?Q;%>zeHp9cY@+k$jYe~vdZDZ$?BhJfTtiabPA5>& zb7(z2h2ir8G>$|5fCOc-Xo&wJCevDUMcgw84Y=SDEJ2>E zQpwi!Uf&;9D*#0s-sA22ckBJqNYQnf;l{xuX*Zz}K_yeMGWv>CJkX8>YHQfEV|-_L zdC}pVOjx!3;zoCX1db^R`Y!HZHh6G+NjN)F*YmnWYnUEE!x6iRSnu}Qh&u#%LIg$i zk8jo>{IX@t6cind!uo)N!4SE^&^nQ%F)}b1Eg-wlShNP1b_{!c$W_x~6`+wcOxwK`|B7av?{-JC7VBeab2DVV zNu-3Ke1b?Yb@P%%ARhs$y$LBDhfuT7G`2gQ#hNLMx;K4=xxBSJ&@QX?K6`<-qA6=NjmP6Gf*%bt;&Ru|1?_!{WukDpGy?E-1%yEyPOhv z^#qerC-0>V|AI?_iNT(Nx!5-o6vaWRx^D?O6dux54x#UU{>!_2ZSb@XZ$BLz45zs| zPS%e%-mXQ?XP9L{Z7K*kxh4*`*krvEs56P#7)J1&+MH&4aECW{BSo za2|?Qcp{B>I?eg=fytgDS3TVF!18T%vSbNTKJFL(^c~yoAyr5pxE)W_B0}vPET$Yx zVRcHJK}<=T&%r(VkTKG`P3)(sDfXM#lAT26ZG}A;*A9zLkJweBW7Z}YG5GB_LZ^Fi z{;P}Tv)b=}QQ^(TrI{kD%Xn_oZPz;Nh)JW7x2XdR#YWmk*f!*)D-^fc{`*@dkHB(E zd}5I1!R#7T;j>tkl5FwUH>05eLzs#Ml;Xuo#TjXvEXY=OyDgptP)E6M`dGiVE+8Q?PH6+YLQvM;`knKkU`VopG~MoS=IoR zr7YzTm)(J6Etvhz*j+tNYgOyRz4f}vHIM9sGX;K@^C#!F5iiIyO1*Y>Xr2Ts$XHR^ zd755uJ|^0lOaeUw!^OlGI@sEmL#2Lm-T?W({D>`sXE|&JVh<3F6HkN26vxJxmU6ms zI&uFW&8OqqX%gy@WM*}22E~yLD%i%xL%WCb5EG)Y*cF|ZH>>_{zJ30;|Nf#k_~yk( z6etTp;1h|qM}`4g7J!UJeV7M>ATDRLgz-8B>^8%Ya_I_i%OvR6N#v!6l4DTDfS3Kh zGz6{0$_%Jrh<>EuQ0Chd2rcG?p4w`VuUJ8ZlKu3sEeMpKc!mVs9Wndq6=j(scAGLGuZM$=MW&D1eGrveS8S zErK})hN}|%au}taK1hSEI0^Ylp_O54P_E;A!Da6>)8H@~W7=@x`9wH?IPX3FWk+O` z)7*>V&27{^Yd6|_u46A=Y_KNj#_lg4`#yYI1vB8t5)lQ_7l$hr&lku2L~D;NYNVmw za;XKvquEWJNN6+(xaJQ>{8LkRRIgGFwoguUPUe6R|23w<%-rDZCij0^AG>?;i(u}8 zASjA_k&ao2hrk?UjbkJ6r`{lF^x+nW*Dt^MyHWk?=M6uS>*tspF(?F=7oM#4+%YNLvz_AJH5D3F1*_D>)ys>%G{zn2igrfp zfHh!S9M;&kNSsn^+EBC)>>+u@SVK_)CQlKqcpj=J;e=zecJqv48zCKm##+z5ZY$q>`NChHpb}`ohP`S_lvzvivfJ`5 zwcGeD)@DY3N-|XHbc2q=v3Sb46Nd$1`j~j2yC`P4MDNQd>*)3%k-hrmi*LUCykEH? zBX|Nuot=EUkZKU9n?*_ZeID7oBk}zulf#n3@uUnr@H|;CDsFcRF}AKR>+ZNIIui%& zq@OSD|N5bGUcY|z?eAX0e?3op$B)lWDI()Jy8(b!(>eO7i%J&L;^egi1w zFegtmL(n_>>!0&}hO&h5n*^L<2xTOijCk9;{^hIq7J+q_sEF^h8I! z>5c(yCw9jn=fy8glpw6p=gho$&f3#Q7%MA5^Mw#Xjps-KP=L{wa(1He8rNsCtBuh^ z!+8Ac5^5Y;2y$JcTD{-VErkLs@r>!5=D3%fJe$*bNbu&(!D1OR$O4J$->BEIvc=rBu zFH_nY$VnFFV1Or@#p|OpR?*8+6tPrl&vL(4xf-0XhvcPg6RpdzUB38D=f>fyvwDY}z_Pn98;dnLCW}p(Vp4o^=Wm{hz)4oIw>h|N0IRrOqvF#O zV_bI|2K;NP(LtKCQuGM z?j`qmg-PPDC+COEV&oY^+`ub89=-hH(#Y`ZCfKG8cUB@AmlXGV^tc0I77 zoNSUrH(y2k&ACHupI3}2cxF9gPz*_(Pbcd^x)#e-N#BgwmNl|g$2WJ&Sf2PP-xYc43%e)(W{~b~CjnX**JuoQa}bfn10Mt!kuavw zEY85GGZpmNfOAqoR8Q{7BHz*n?TCN9OWnkRX3F}DPL{V|q1o5J&no;TG=SC*{A=2+ zcJcj;g=SvHGEtPCQ~G!mzgw7k_44W_+Hd$O#5R;?A7!jKY>a!CuP(ur`_@RG%b!7> z>iy1myxmQytFl44KkhKRn{vN;@vJJji{0!b4fzn95@nO1Dibjiw&x;W*I=hyjJ;N$lwJIe`|B?f`CA zh7jC6(&-YAFsBd_d&o~pGnqyP&%a`}+dtfGj^91J`_F$|VmzEI_xE#(vRZwdsLs&& z_%0Y{KaErlzy#Z+fhGs5L^*4zI))X3JEvo; z8I6exG9zmZY!mxd7h@!o3NE`I2#DFr9F4zq|KnVZlem1`GDJT~W4!|@i!@T8toTKWVO6Nhr9HtOLM zA_+#t+!~!ci?$1rOGR>$Tbe)8GBsgi<9S*Ic%TlYn-R=_mBIf!Yor9ua#Xk?-u4lhyTWvXVm>Pww=2`b zVLxGVkP{4yGB=#8pPnd#rtiPobF^}x)SUcyW@{9!b8+@=xn8R^R33N^{7EdGlMYv=6VbF*=J(`YJ0xkQJfvfVPRW^!(`2tx}8pskRj19 zcqnf^ZnBVoX{dI3hhv0#$l_d}AiU4Tcr(|`IagR!8FEJY;qbe^sg}$TYht-udzV$9 zX@P-b6EzbQviWSb8XFJG`}@EV3FnrUn57v5(I_I<&bMRw@W&q~Do9v76*HgMT*iJ( zHKF_S$);>H1<84H)iwrWcvG&y*_+?PW9ClZ?v}AYO@ya^n=}g06Myb8EL{YHdb%QN zRhEk-tREh7>~_n09xbp$fpq0GFyi+vWe8x&hZZ86*5MX1n040~v4 zA`}*PZ%Pxo93q(2ib^4bcZN#q_fPMh7^Bf*BL*4J5(QWWcx=s+E|{*$hX}}C=VhOY ze1gNdW&Gt$meE(32Ft0_C2N2OPTSt6E*xDLO!8HYgDOuB7dQ~+k7PEwZVGy@)n&=a zfqH{w!p|UmLOmi2cK&5!lUJ`y5SJWRN}p2c6nt))SnT(pcoGPgJq$Bo+lKLMHF1X8 zaVrP}O!I;p4lwdL)h4OSkC_IM#N%La^1&FvnCQ$hnce53kyC!WPuf^xU@e=VkfCkq ze))vCUY9zpR$EJ;UE_@!597N>D%9d}Q^>}2y?S`E<)z->z7Wtj43`9^_j9!EkW0aC zf}=+KM=g6<{NJ^4FEMw_c7lWRWoy_@MiB>lP-okJ{!HC427By6(oj2dR`>b>D@XG z6XcUJZJH;`VxIK;_XQYmx-n_7U^_@hzamRIMHp z7eIS*RcP{x!~k+5O=gh&LHp!s$}bsl5CJJRJ_DgvX%Df|0$z0Z zRWfH0L8`%^Dvvm?W}H9D*>-okKvlZs8I^fgzxsPA$lTEkPiT*@ZceXgv-5e<=XZzl zv|Qq74EXcbxhzOM^x})MP^X*4 zev`l*YTp3C^YVO`^z36OP`{F!wK47w)-(ZET+8PaIh(;(O0wkMCG zU1iQg#z00gTLlVk*|X|^CcdZk$dYbgHR5Sw2^QJ-3>j@v;GY2ji#Ylq&tdHe5UW^V zQbqd6H8LWZUe562je6{fh4Lmx2L|IeE3ISgy*v-`Ld3QAfr&3eK zBk<+*N?T{f-DW5%@$4BXirDT38NDFcn@ya23KSFMnR?vf~(Ll99WCl);3 zPpR4wLblBL0$i`9TJYDN-XF+zZg*Oxo@v)2$_z#mT1y<6asNif07j`>oE(#OJ6+`o z)-j@--Of#L>uQBO{_qpc<5oku?gfiLs9ZDPH+|&cBvF0+QaETg?JkuU#!_9gT(AX- zRDalTh+H^(2)oN6t##H>rVepRl^Cysxjq~|e3btFQVx^dpV?8nX4uEMLidLh;N!q=^!{Y5XD07wpa#F<9>O1N{!vDybFm*k}RT*^#TdS#=3(ctjt ziy5W%M!aA9pIQG2))(V9G`-4d>QP^o#k!0jIRG!-8Zy>ruwwD~Rz+G2BemM;x0TVg zRfHH=M&nkWk!}O8T~CR}Eq%V7=|;H_8?~2L;wj`04msiBBwPUaaEqyJ6op(6rLuYc zEHr5`h4L`fvWL7Yr+y-Q-O%*L^Bkvk(5;#9n2vPhGjNtj`*CjPZhN5 z?wjCuFE4(3$sB63B~w%a5k*N87Fd5-Dh9R)5f&-i$AnL#Ie52lNTUK}WTv{wru9?EI-s zD6=;|{v387B(nfI`R}Sdg*YSaDIl6TEK}mf@LieK^o`K%JiDpAs?@s8)(FZzqhtjgb{6EX6~Sgry-;q1_0zV9Xjj~XW7g}TySan)kOou^vK!I|L{?_C+c`A z*0n+V>wkPXo;x@LO@v|de6gV%epQpAL{)J!T{eg3&w7`aZ3|hnV(#wE;qc;RRWdkq zE~iMxcJ{z*)w6oLctxWEp3Z|Bg7ItL(O|<0o%pD4y%JbJC?z`{~^zrrAq;GVh z8evZ4ll~TgO0CjI)TJ%L5!CWc#HS*ibMBq3Huq~kHqecUG&VDSg5(DLQkjz?Qi1HDFgP7ranaSo0+*T{h-kWsY^KC|JzJDqZq9EMWz?JaI1O zwBx8O4{x#yFyk)&aUO^aHq#~cx>+XlohTfRm`;;g)RI7GHdWn)dLZ=%o_Qs@%BwHF zs93wqtX~XC*zH!U)n)}at~KJbU2O91l_7lA9-N=mha5``oV{=3>n;l#kh>VpgUlZe zEx9dg*PmC-ah(OPCO1TD)abO%fBnUk80wuyb2JS1tMc}4G4uL@C0sfaYuu~2s|g-0 zwb`0v+XbMLl<7wZPl3HgqBMokE+8IYVNA8y6UGv7RLYg7UDL`N zOX9@0=-{CHp+$dIX{+tCelHqz>WCbM%>fCa6Ss>myRHl0esyNJ-#jN3<&1^al`g4} z*BUpmr&}^9I;y-ds_?Q%3SA7`@X+BH-Vv$@s4y|UNH?+UFGAp@{=_whef(J2I@Cka z;=SsUWLG#7-hKZGQczjy2O~)FyauX*(5n8`Wn072ZNg0y$jcM1VHwWAZ20nu6@HJ=O6o$k zFnu^|umj`89Ub|LD_GBb7QOdJd)#w}SE^8{ef8OYc+u)eu|C9<{C?K|`gLy{_{}cI z`l-b-&0Azx!G==zq8esndH+UhxT*p*RlcMGH6uH~`UP8b>k6PrMmPkxJIsWVLOh;@ z1Calgy1k=p)2g=H5JG6=SB3gbtv75pV+P2Sv9a3?9Gx>}%XrpeSWZsMQuW$ExxT90 zxE`gnkxZF`GAY$s(9~2~VgjgS70G|g*+~(^{u=})^S^j@yYm&b@#4~nxO5WSBfwGu zHRF>O?2d=K$IPNII*0w0!IUsVnQBf*BfEb7#TkqyN&)otFV8zp>zDt&%9B}&Oa}E( z(pM=guO^32I!fq*7?hVsQUueTqx|i^ds(@pzvn>FQZDJ6&qDe1b<;Yznv;L zlRUXzyBLDXL$j%N$%&=Bnj7K%{&Br1PBt2`adv(4>P70+>!O(vWTC0LW=9ySC#I{$ zjdw@+j8ZQ&235kun@Y8Gz9TT-sJHq#z#5U4xCrl3kHRrG zSl6z#Fh>X$Gl7t~?z>OQI7-J6e$ZXS;!OlXm6&z`G>7RmoI1vqwuVa?(*OQVIL@_K zZRCt68Sl8TU$9FV%(rVF)kYReyuoAT#h0J;#c$dM+&+LYR-+3xnPV--UtD!41`14umd)FXAIm^u z#Z)Ybc5HSG^21;?-!%Wbe|OdvlOoiZ7pY?`V<(p*(Shmsyn@0mUC(`qh@EuVzPT3r zS3MwGHjnO>YE{m|#hpefV+4}A_M6}HwN2vl3#r`-;a?tXUa-9Td57i6h@gEI)1gf> zSr%{b(*OEzzIxt%Z*rw_St9;$ucMTQs`su7P%c z$Wa*2?5U|j&=N5lG!IA)lsHCq;=P-;J0#G07E!mW7Ko*h^WPr6I2C(nkjzy0#e99&$t z^jV1IGj(4Iv|3cev=qMjgRlPatL{)D%&s1Lz-Us;4~Q7z1!G%-x)}!q1|pd` z(A@c^`x*1y>9FTa)8#DTA056F=J4)CNBpv>52|_u&lPaIh2vz=YSIToE0vRi>nS3O zl%V9v5=CHY83{9qiMhKcaO9j5WnG`pj&ha0*p7Fpi~OuT4@s<2%-i-!T;B_yyw$t_{3N zPG}*=5^5kl-PL8f=45$1*7USh4gd~`&-hF2>_#$*s9O9t`L$st>jH!fzd3$!+me42 zou(VA?sl~Y)S_iGN6D7j>#rocSH5GvMs_NgpdQsGIDzMDs@LWm6-j{V)C{MZ5nBlh zBr4DZ_qj;Es0`W~^yO~TTrpWy`@(=$KJz@m=nNUCL)bRVH{r|Q|7~aIHERuNWp~UH z#85OX8y5=MSJ50+u4-2!a7}mrds%M|1fzAWJLNnlr9EW}i?YTF9c-;I<2leP9xNAn z^4RqTx>RMMv^i$x*WXrZrqJzt`B@ia2kveO0WHEH%Uan|RTwtfBNYG_!HiQ5Uo#N4 ztBh5r?2Z_(dL%Bi04E9gCVNH0EsUYL4MiLDLilta?{hVXt>rP>9qgn?E3dnw`m5hI zdj8`beXy?1k6!K7YSQq_-@E{pHZpKSS4KnOl(W^@eM~vcoXXlz#axfpo+5HKJP`_1 z%L)D1)l7&n*dIt$DtEy zkiD^MRJz6h(9C6le@wLD$%GGkp-Gx!$Kiv$E(9mwlF`)rV(F+nfVTI+Z!llM@& z0>Y5;Va*Owoc+t*oAl%R)P#MX?~V*W+6~i4gCr1>^5hNZjfOf(?c@7}(R=|>bu4v+ z&HGdcuRm+GUZ1-rl2cC9@HET;-NTf}ztQSmw**FR0@Ts*K$LrumFl%PXc+ulSU%wu zpUrLR!j7jeHUylReKX|d&eH1e-C6%>Q@k%sYrEVoo&BF~mwBoiJPc22qFzr=<{>=- zljeqZTxL@1x>Y^rz9Nq+Qf!a)LcBoc1y>qF0=_asvSt$>ATmc7wvfm=0}lwOB_=#2 z($%Vf(UY;Lq2;L!vZ1pdmKOY`96bHs5KG8<7Di3soVG;WK5SsgN)U~D2HuzbX0zZl zUjAv)+h0j|HV(0aPJHGWVg$22!%*+9-n}g-mL&P=?H~U7^V^kvBeFm)BxQ<@{B84V zbeL7TC5VYfEt9;eB#mLmMmFGr0jTs*53eZrD6zw7U{Oe+Bk-ExM$-`y4(WteQWos9 z!<cY2eKlS^c`Bb_C@O6ftc(cp84dd~nKjs(WD`Pd9PADyBU$|4h@(IP z;gMi6JYyid+1dH+WJc<8$1h6Be*AH3Dt6W0$M#gBc9gJZIPD7AK7<@n7>lhq^IQf6 zU!BwzYZcR|ziKX*99nsQa)Tx&4f+gT?x}phj|*fp`FGH85P4dDJnqka49;t~t$28$ zMbQ9Rw|d8It>5m<4qL|3IK#{V>~d49{;GofobOA7uNfibxPH}P`avvAZ_h_9eN|3M z&|RT(WY z4lAQ3zuHqPhzey8%C85>^UtqMyVmpod_^LFtFa-Ge+_2)IZZ6CNL4_t zw~uIbQP!Em2085>6-kHz5H`_}op6Z|Z2iZ_yC;@rGai1z>nb@llebEgDDh$LiS*Iq z2`P*p_I6g-({%E%a8G{3+gvhJ+28H}f65P!nuU{lmlubbfR-t8g#mkZ-oaYCuf!hh zkBksE5tJfDz{PezvcCeJL?OW8 zap|GexqYATQX5f%9+BWlf*{e>!9`0WJ&$n&b!s^MAwUgvyAw@-{+SQm^vXY@21~Cn=)ppr#xB z{og&ixal#diB8I&4g0Bl!Z}=a*1OGddYG&8?QsPgKFya)hqOT)OyjH|Ofp1j#LdH2 z>5sZ5xek}F9acQ(iWAnlF-V03UGF%)Vi-&a_Ph}nIl^vZ+ZzpI2u4|G3hjPxz$Vesxqtrhcd29>nXP4&Bjc~x4?cz zJ0pyy_mMDk&FhgKV&s%son&Wr#PRG8$p9UJAoVTI=DnK{>v);cksh%YLzv*IqvQ^n zkqt#|=8^GQEtYKaC)$vQy(M)S8gBOwd5RvlM3LU_waY*L_>dUc?ry8yUH;NqG-t7~KCqp)|U;_|k;Vo{eq+Mwz zj%tqoTlVC*^muHo6E_GDXecWg~3Zw4JA^AKnCR3Qr zJ!_=w9)L>>)CCy~8Tq`8mtwUbqlO>J(z}9-n3BSz!CI_7PI0w!+B27#xhiL?(&GYj zpVX@rBO~cEV~&41n-*~urUHr`*oY%?$s-y3j19S#dFSFlMWA71Bg5!i4%F%Gj*fUS zKNftk7ED(GGUtR4!s+zk!_yC+wzHD*$$F6=x8`=e|Gw)@>;L!l#^n9N)U;k8vW#<_3RbbR@ zq@ihd#>}vXWU)c;3Fkthf%S)Ro@zC73zVQ>3mjuj9K2#-3f4QdzIU=7)Jsnl~CB3W`7(}HYj7!n}P14O33|!_=8TU z#s!x&-xk4oLaHg@D1i6t5R-CeJ*(5cik2Vl?{;fwb&d;(eH?F>NAD|nHPL!%VO}?> zSwghzKLsttoOv=30#*%?Hn1{~u0%zQt{{#Dy6wHkou&)Awne zBc{K9^F2hCkNX2)sM(7A6tU;!;+Gg7JHNW(HtTckOD4-*BvEibEV(ERbx!wre)5|e znN{noW?oKkNVVbkY)h4 z)aPZwGNFUvdzA08LR0XKTVA=_K78CA-MSvusb*70nkwk4VPb z*sQqZ%!o5g3A?Z8!yOMJ_4W})6a7WIq50yl(#hZa;VwRWz-G`JL*m-r9cR6(vDR3q zmsE2MG69ZL<~k`5jDtSq;3syLFnRgK zE7^@+)%o0`Qli|6F79qaOV|fiMKPG&MaGdlpD5l_*bnC2u5(;L2c=jlwXX+f%^*;_ zgNAGuj4j9l4={!j@4mcfUEiFYcQDRdy^7FoqlRZDl7cn7JsCtNd@&zC-Lo}6#n6#f z^NY5hz^M|?JZ+(=*mnDNjCX2p^}%>3_P8%pn&&SEB1n77+_|l08yW7<4qS^rLa)i0 zX~u7cR-DjLQ-opYNz2`Su8cswrTb#!YmI2bR^fF6^7*jK?0%xO+25Dz*?LOEBSK@g zx?e9hhlet`Ujs{=7V&NZ9D-<8aCxTqyP3P<=^w4+fi_#McsS9f>jw|6SQ$(}CPNH> zC_rEY+hrI`-+gz-SI9T$fD&MKij`A|A9eu^aK;Klo3h-3@DHosJYP}xN+`!}zyJR^ zdaq_z()7&kZ|Gt)3PudQ>26kcnNwBAZg1dy0_nX4kO?Fb-fnDreA(_MhchEe5ff5K z`h{BH1us}pES|GBkokS@`#fu<%4|1Hy>>xqw5GR@<7zG5e|TJN_{H^mH$UBl2U){t zz65gb4KHvw*yMOUh`>J{4+fgoj|ot4}5!s#I$ z{Nv(g(JVF0tXhz3u2*h(J&ojjPwgC7fh5CuWfS98ua9y~guF$Yxr*na30*us-A|G& zY*!eyLN!@}6!h6B3dfhCD_$#6^}NzhK~|&bID{gBKGh5e8k(r9wN{gJ1k1Y)STCmN zl`BX`{H|p&M&*pp53EtxbVqn48k#C~qW)ERxZtA;)|#_XMrygf-wdB;U!Z220pgQ!*GqI2-k z+n!vZI^P{lY?B*=AaLI0xm61q>W<7tu(OIHjta_1PYC^s)PL zGp~v*T2d`KP+)n?0>AO*RcZC(Q-;tm9I5~&6ki9_G;!;vb)!)e;Lb07=a&_fcSmnY zEbKY!;r8N{zI|M{HElJ4&5|wr=U-L1;8?se`UDCoAfS$E<-{H@lbD!2lAtzbCNu7) zL0f`H%P=f(7>~M%JscoQ(v^eeY~7#iQpgrHu6hLUg5LUvyK#i%wd19I_NcZ$S;hN* z+f>hAVrcL7ifn>x*@foSppHogc*6Lagij3Q59S{^;5foq1Z^qtM}ut0N4A?zpb7?wp^N$_h8}RKbfz zdNLl~?{_1-cM>NfWNcZ_g$rC5xwRM1Boby}48x7@5=}0WONhdi;Y4WxA;QP(r<}c_ zrDt}bvEJUTGM|wjuO2}U!(k-*>4>pkS5%GBj>a`}gTtz99nmmr)eL6Dm3*2^V8QsiFI&kTy@{pD!2Lh%Z0JD(GhzRI~Fiw_D&kPT?9lqOtO zkGv1QV;=)jHT3MmlC!{II%E2Uw96cGaJIMifD^sj zku-hx;nq7jFI`H*s+^J666(>EV!mOcmK(5LZ&%9Pm?_e#3{SGv{t)2L@Hh84a(6uu zX;Lh{I^&ycUVWz{E#ZF$N6upv-i@J(2J8_KwXolyMQh2(;J2BCC`c1BtK3`IDzVH3 zqXEST3w5-7m|M~Ic0LZ>0Z7ycH?MI33XRuqGd91%6vtc_z=}^sVq(F~oR1kcsHGu( z+8G}cvhlQTLbwo^Ym~OogcQN+PDGq00q}%{!vmpwe(~z6D%6`S1MeR{qaL=gFL9!a zX)(so7(ie|$sN2&nwq1`Z|4;V&*|+Dij~O~GB#Q*;I$6-Ja&qJ;HG-{viKT{6zESSN!-fevOyg=UC6s^(r=b!%kFaPp(jugqjjO0?bwUtuC zR{YV7x`Hd4!Qgf#wYm|d)@p#%bhH|T_a7;x^^p<5qzrx-=X%_0rEopjjEvK78DVXj z0&`-v((?oy`8?~5K--ix7)Q*+%cm#pjq~j2dit4ee*&DWZ&g`CsY<0`wabNwGQL9j zX$)0hI3EOkmFG6(BtEn^B=bi}KM+*1tgt&}`i?MFiKM5L4sD~ z0-$)pjHCx?i6BuAQPz+x+%{zW*fXR<&EI4EoONMJrvLV?db5;MBC9d5Yv6xm8Q@Oq zgd@3(wOf^1xxyl?<&hfGm%|}P^2pPPGFq)~j+DUd&hKxTm}^2+8*VnXLfi^_>&>38 z0rv+t*z}u5!2Yr-_^#+4n!lnG1nZBI>Uw9f86Za1!+{mZ|bl}bq!ps=k+ zo;zCJtU@DMXU@e{7s2vmvsk6)IqWasP}S-CPd|PBoRpu<)MFczU!bCeIe=CH=lb>8a6<*M!*N zc6p1SVJ7lrv2CY9QLJCod5DRpU;egu`M1Rd?RW z?X!0s!NgXed&?MzY-5taZtWbV#Fc_fI_==9o=oB8jcFTm!5k3nXX4$PO(FKW?syvQ zpT^89`MWdBg3D%li+%N#Y|-azpvw%R7&9(do4fz{t~;6RwkU!K=HlSRbp){5w?OC1 zHa@RLt5r%{9e!hB|;GGF<2K2y%)J9R20;B4UJOy_upqIMR z=6I?WhBuTi*nP7@}qT{Bm% z<(joTEL{aOcQa?86KJ01SRjP3Fg&ey_Gq+9X)tRDtSsW1mrYKkL_v zy4)s5ucb!s9yb;7q{eB17Xa_e;e0Vp2h$1NNI-B?mH#+QRA+o?*m%iVGpULtu{gz;(9U&C z2@3RZJaJ|lSov(z)n1<=5VX2(5BT4#-4UYQ=ELn^114SQjUFDh+e975CWR|6^_wrQ zb)nLd4k#*yac(>s`4EkL&QH3VecbgGG=`g-%~UBNMBz+x6gPK+Uk6#(o9>_70(KxezhO*WenkgOH7 z?SoLq2w!&>gJy&4>~zP< zzyPC#Utv5NCfrJ5$5@ZYb7wI7@zZv^`uIO6#~{Mf##V;w*pRjis1 zKhm!5jSd*uDHu+4x$zu;0lfd7rL|OUDV9+y7iHF#nWMU+&8jc;jZ5R!dc%5kdB5xn z&Q=%NP-}oSjqz&B{1BHjEf~uzxO2xwzb@$QaOFp}JSCayddY13)(wlZ-6F%h(h#67 zlUFnitH+dq{o^2s_=`}MGblgIGV_q#JSbr;l{{3E4i~&5vmOutcFYK_90oo&J7c`R z`>>o15|!5#b*e+p(^Du&O$M+_0-oG#i#sYKbK~eMK3d^bvuiKcn>7$wn*$Ez?{%X4 z1FC<4oFXRNtT#VCazbc3z|#7wr=S02Nq2*d(RsZW6)wI%SMAy6;bt_65y&8z*bJRv zsIKp4P_5B+j{7w>+XE2y9(RRKoCO`BIN|GU=#mhP_rHDy0Hi154nt~2y3DKlRLce8 zj0D_d9H0j@h0$rbz651QDhPam0E0o&wGPh9co&pitb*)sSiAX-Kl>FP?0>*lJI>T8 zFvKPLi;5#aX2uC7vCAiPM(Qs*+7JKdKropinONC-$JVd6&T8sL={S=6!-HB?luV5U zF{OG5jaI0;mPlF6-N5@*YaPzoUanBMEOpdE_4u1$D82r+J)!i8g75hGr8^BdYXouD zcj(VsoHNV`&a-*Xe!Ec{-umfjlhJ46v|l`(_u+}?zz|IQAgcnjLeRFL$O+te z;LS#O!PG9OA##304VGX7!XD)?U9MHxz-3bt)McZ?&EK2cvZf0`F@yf8pg0zrRgppn zys)U@q?5h%;=40*1aCw1q+$WM*7k9?8|$YY6A#cTYWVSS{^Kw2%hm=_y5YAPz{-q)~n4n=x(KQazz|s^>3qK zwmUs>K=|OY^ktmVlkNTO4K15esgA<${HnxQl(Eb*ZMzIyrn7}_3}*l)GDp;0p^C6a zAB|dr30&TJ%m{v!lA&4Ct!0m{0E1jeO&WIxxE|B(bhm);3Ame!-JokF_y4{`fx}5Z zMqr=9G-EN^sBonxH5MaFw~O)w?`|mU58lBF<(jZl$C>LJr!{1V!SE)c=XMJ58>Hu~O|>khdVjQeY>Rrm&DSPK<~vY2W_13g=v0rE(BfPEewB|`0?~(2EzO9}c z6T9q9AG+wk;_>dTr%_DvDrQ*qM=*~ z`+X!A+tz8WN)zbKt9;!snk82+ncW+&ty6bnO5e^ko4s}L&AHc|Osi*w3&)oZkM{Lj zrlOSfCadLcDt)iq^vmBUZl&3JeO}Myo`3!7_kXFqU48iTfB&za-@-hmJ=pF@s2B%0 zYaE{*lc#}ToDH-VMq7{d$ZWG-!4Y(8gG2ZDaWw!_M2_9|>Df~k!+gw7W4yj2MCx2K zWfYk$xJvu-)yW^8DkM-AD_n1hspD>BPJ{9XSj`c_d1d}+TB0Bd$;U|5o;`# zqSja6YhyipxCx^9U4Ok_cN??ubPIuop!40$(3_&5$1GO4Xj|FP2l&ge6<9jFF~J0< z>JD{i&Pf6kw|Qs=?GQ%JrojAfR(`2_d&d!>lD_*m+kBcg>)Di=cw1vtY3qLaX?60Z zP>kK{Q!%pn;!(UjdvVTxxLTIQrhl`g5YN*us1w!@6sulUI(8)Ib+=I~*IpJbt9rBH z+;d%;0o%LCS;^gfHWgmvUVZaIs=Ufw0CH(nU%dJ5tHNM0>aE^wm+wY=qa0`x4bAI_ zy!PQ~9g?ir73s|#B#%+djgIapsuUz#JOw}hI_gR_-vkNHat}TND<|0O(0m+7RZgi= zuW;mB_fP)ri&ww->%V{Ts>J*mVjQz*8zbCg%sqOYIy6l%iuox@j(R6xqeC&48qP8Ui3R%9gOd8vM$eNIvqSedDxg!t2%zSGKxGDR)73IetCN{ z8)uU>;CTi>rk(!R|M&f5uv)&|ZhG^d#@wEW4#fw(EYT5~YJ0UToqciK2?o@gnKuf} z4#WnOW^F|iZH-8h>&;fd^%X&L`ZAL=n8IC3)DGQaT#Qk)yG?hWe-z*B=MnF>`F6cb zx6Bx(?OMCW@Y*Zp$@S@EGfK}Y?KUi3HD6nP7-~sko_Q(O0FL=0jVsA?I+EC`oaX;< z;S?_9M$>}}5iW4jh_&l$bX+t4^!eXB?~lx=agxK^+Nf7A@QBjy$ZjW8W1?(5VX_Fl zqEfH6s!9s1hjVJDg0qSb;DAT!WIpeMD7E8hH<;f1H0zj++$@P|0>9+ZenO!-Cafx4 zU9_dkMiz^grCL?DufBX)yngw`v#(yrY(IHkVL;?nIDnatIjQGj$&AImd^K*$2)N+)6bykLoOwiMrPxQ9gl?t5^3M!r@wKivJhdD7%Ywz_l zHENv}tCw${KRZ$~bj%49O#H+i=|>@c9J>p*(Jbd`6$oIxX!qz1wv(8lFwb9nL@9ef zL(N^#)0L@R!4B3;aysA$7Pkl^(h0ncNot044sRgTxbkQiGyy5s%j1;0qHNSl@bo%b zO^N9t0Ch04sPSriD_nkmQfI>5>A9+}GwXw;XOE^)xcc<*mKLJZth1;+0F+3XSG5WI ze!8OE5EM#p1!Oold@5I0{9VH#e^^kD=qE9Oj<(Br#`q=7mg8x!<*fpxHw)b5&jZ4$ zK_c1n$W5G%FI80ATmSjd8a{4j`*-ga2U3tC?q_wREV@7!RR+?X1{cw7LMRte)?k2$ z5udG%3>Uwrz3kQH*zK)n(-78F~c!2IIrBxa?6ZJ zztrCR<3GM)Qn%XHb8t0d9zA2v^cgk0Maaaa& z;84qS2i}e?uA9o4KNpMIY>T>^6qkpsrXxq(U3MEs@`o9H2{8YTYeCx!4WL-H4l=h8 zCmGRO&b7VS<*ZPmiYjK>#5c*3${Uc!m*pVv*Jn1S1YF2 zxNb=0mnYPnTFJa(u%PeHciD6eEy|BZ8OY{xE$BU?yvLG9_V>55MuWG&fB-w2!r1}f z!xr8<(7bJ(g((%z<;~-5O0>DvUEO|o@LJGoSkpxadb+NZ|EJ%aHwwta5PK31^+nBO zD?+8EsgWQ_=lh3UdPoXYnbjW{S1DcVF~2!4b3o6k)CSoOj``wU)Hq@U)EYxlf#9R) zDm@ZTAxngz_&`kN)XK%aV@>X!ZnD7?c2;jNvUM-s@2A1)X3^h_`%ZiO>mppGl(Oer zCU6gTxYMw1g>7TdQ^vPlhXZO#{naU#I@jlHU=>IFK+UHj|t-C%hXhbG$XzPp( zZD)FG8x#vy+t`r(#NkjY8l7h8_@YktHlC}=`0KwjC-Df!i(TdpiFoaCKcK40K!qD= zA(yMVT2obYdP1hy3nkFX21Rfmw&-v>wFFseUc8YNA)6&`6FJ-WHB@_oSjjuzz1GW3 z09ix*(sW0Ynb&sTapR?{o2~mWqJp^d{PbFjB_tzvF()*@e1;)Yf&d}P2)ZWW1fpNM z>Z@qkZL{0mY%L88qVewEVe8h!>CO=<lE?@{*9c`PI;28Qvutq1OW1$Q z8Sf|GZMO3zPL_>!rJys^WMAs`^)HX+*<$KBc!0xXH&E|0t>^Mzq=eSwm8-I>^T5TB zO<;{zX;Cya?F#F3cmMNl6iUrT^Y}`U(s_?v5cC`=8+Rq>|E({-5(?K20}00?=c53W z$HvfG3~@jqC~!2^j{}*NGL@)Q?p!g5gjEFd&JNL9&?Vq3%#pwBCs-io0K)1fiy9oW zzPBEii-$+zdJS`3bS7~EAZ9K?A+{&vTqY#QK^4b*Xv zQpfpkxZ<&f4JFlqY$Cv0*D~nyZ8d{X0E0Gi`Sz^Xuc-CQS1qalJs-ze7YP6RJKq{p zj?^i}*Ti_o1(~m4czeH@f`YEqI`zxTQPRkZo@_Ma)FjL zAZLBu@Q@i!eEeDShqo!yM~_fWM`bRlONKc}6sbvIo1+&fxfd6$rd4Zcpv=KF#KUwz zoz7Tn=}@k$YRApg%5=d8vSN*i`9+r18QNE%ffa~)kT>NHMzX=}us6#n1(d}EL$6(y zyjJ+`5%93qsu#`$pRmW_*tjA9mQkB7wX3C8`S_pCqXghfnqrXR&a602d)AQq%IJ5&&Q{Z>Q8szmi%&C4kYhbjl4N&U-L z+C(!(AAxBxL{7$RdxCbe&yC<5*78k}=X*C6nRVyz{Rr&tEp z?f7o|@PO1ZHXN5$Z%qOJzuZK88!e|PP!fY3$s#0D8nyK84KK_AmrnE}_pqV*<1k#L zl2mI8Mco;VS*xZy^aw4{GDppC$Dh56cEE(H6x=-gkIw_}*Ypwz(0yD^;A@X(As__m zFM-4!r*C+(hm|7v+(G3K)F>24*TG#Kw6Al`kcG{5qEz2phSAySbi1S-%^JTu-XUoYva|KG#$@|F-t=V0e>blL>5NnW4zJ;BGe1fpK?W=p^6ZHC-LRW|6XLQFp4 z^AY6#Wza4&rw~qML`oZkPf2iHVER=n7YfJU$!QP3#Aw>{M38cVR)6_;Q*QIDA}zHK@0u6rsqeR9wQ^8)Ml*Dl#u^5ND2^RL|Ydp z34>s@0cL10eZ1$8YzVkRI;hhrm?iTi2GD-I9Ue^Tqa{>0n20u?iP@Bwgm*B#gZJ!% z9E{qRO3%ofcg@!ywsnc(O8u*UF5le!{0qUop3eP2ihr7r;+dt;C6xZaXz7CmdlpNb ze%c#QspY(wM5#=$5x;A`2Ujx+HdLChv}T&5PJ-oYg5V`i9b7@SIqsoff#CqXI;t<6IhVp}(kR#9PVRnMfnwEqiavyK*&`*MGREnYn^jY;$+kxq zoVyS4AQ6v4Ne7Y#&g5Rd)3<7?g1=Zhn}Kr>6UHm$0e56EDU+>n7FhLT4o? z-O4ekfs6^oOwP%z!qzKY=8Gq#bUr!%hpKV?rsp8Sfpy<*bT`CqJXP&0CSE7Z$9lcL zKxneQ#2buU3+=2UVF|&i4Ioc1JXU15#Tb%o5hUb-OK8&q`LCxp^41Nbk6gJKbiX zXCqjYzWZM;e|-w1PB2@6IUcMZ7B`AUYJJxu$<){7(a5c8@DKJ&mUYQ&-)}bR!uD>) z(>SK-4>cIojiJfYn+#H~EO=RBl+{piNUc=K|ZEIQA)xIsP}$cGhct<(aARd=DPR+D&xVbfrc2GD-8gT6e?@qpmoMt|%JH+a z+;O#{Powky{5M~|dj0&>>kG2=?A>KWV<>mH>_X0U+HU&xk4v#p&lTBkx8h0EpGR<6 zC`EMuXdC1Q2+HunC3r&LH0@zI=uV|diz784)w##q%?%m1cDn>+z0kOl>2vXvY`RfF zzkkR!t>6Bk*i97b%ahS!J>RY-(iAm@VKb}a`}*G|AET{hXsYPswQ5zTcT zv@s|Zs#b|oH#+Vzi%k7W+TUVuoy^*jha#t+!R56npA`CQTrO_;WePSks z;-D)l)nK0bbYTE;y2jnsQs^mmU;H)#Qj5OkqFDW1V;!YW5S6UWq4^`(NcRpV8g^9i zA_cz33cqeIg0?rkgUiX_9M&JNs!r4FPCb0@oLtxgnlfTDf;!fOn)k`eS6}}97hnA4 zv+HlZfAJ6h<)2@i9KZbb+wY#g5-p3fDhC?Ea44^t30P70c6*M8$!z`ZBht>dTg#Ym-A#w11;kE_R-IN55s6X{}O=hEcsXNu*Fa zZ8hrr61n7woy+Swgd)VwLdW8-JYcxhAdj{MNkN^6$twZvbxAt-L(; z8B$Ca(*$x>Uo_Q1tLY2P-tLqAU7_LimczxIw(v5x4ho${uGTvJ`k(*# z{OYSO{_!vV%kRI+T^(IqS(inIGpTcY3iMa3~osGvY_bdRzG8p zYhwk*Ufrm)Xoa(1j4a4w*&G*gd9DBW-#+lcH?)7g zc*|H=KfMybC`OCT_8xmT<-5Zxr&f`jefkVe2f_V-m$@t2ag1PrsKwBfHKC-^DUDZz z%fj{jDs!t6A7rt8<_vvm2x6y&Da$jQ?ZW9))zTT{vGSYaCOYode|wtlJ3>;GR#SF9 z0n)}cmpf7zOv+#lMUKnS2~CRQg3)}sqwhuMsjhA3HyP{d>3>Y%7!{CVkk1$>dAUY5@!_ncr^hb4|Jx(`#sl^K@>AzZ})F|BtdWtB5IAufSWF(yMTJYde#!x zbG`U?|I{RcA)hqbFWEgTXOr2_Kc<~BS&{|dQ93W&ZfkO}X5=aZz$-JI<_HEWz{Trn zk4OsmRl8ow6&UExvwf!VeYpYRKY7?@ZJ?_>D(!!E5GKD@5uygzc)>*w{UYPk0F2dM8f)kLt3 zpvJe`EC{(*<6Rsuwir#^0%1A8DF^6=UAsCxD+_v)?UOy5 zv!P+I@byUu6L0gpg5o$jG_uYm(O+(B>zlFAa^t=iB>)T*6au=a zwl2<^qsIrXy-q9^xW*$wMATTS0=Ng|ynooF z6$$#f+$yJztjAN5c^!8UM$5;?Pkn(AM;rYnAX%q%UaXlC`=jl&=LUcs2bOAahwT!P zgYMa*FEYBtNQY3>q~72IGqgrH6$ZAyoFvu-!yMRgJOjgW`Q^8#$J%1=Rt<>dfVW|t zJpbmnVJZ^zIeyH<{OWZQ_G$s{q0%8+uG5>B3I#sqUe9fri@Du6zOWa!dr%VP-{&Zn zY9T}ho$D{LZldsTal`5E@qP?sijO9jRf*GDg2;*sCJ(FrY8>>EO0GrxBZ(Fh-gnX1 zx+*nW&8CYc-WzO28=T<*7L%}}-wd>V=_N(D`K~8N;7$8bUZK(_??SpiWDZtt0XG1!I7@GSNNu#sir6^6 z9;Tuq6w_bc#-*07`c9`I0rFLO?DU(Oeb{(rdp>1+gH$#U3 z#-x)`9!3HXeO`$?7#8%FfqMY4API*xvHa??C1N)wgdUPp#um@nv~n$o4WU}-(3H8BNNn3cGMBRtJ=z-Wp;gTDTIpDuZy2}EuFozzlDqjat9L;9_dvhG`=%W3-rS+E^ubzZgYjfP@0HJ+?&5Aa zS)>S&MJ3?{RU`K@5l@cmcu0uB2??#PWi(pv;fSM z6+(~8F;|JEM5<`{apD?Urk4v6fgGdNR+%U9iWv^0-Gi6iBCPC-B^q}g&;xukAOXdi z%t^truFp=nK)~6vgXZfCe3avrfIicxoVA8`Gt6(QBAu0jkGq37Fm!>KK^Ss%7?}OS zHOa?f<*Fdmo$2&`j}abB{5s`g2TzwxMK3|p!UCJ&CKV7CX?#DaoyA>mpi#roD_4L0 zf^A9%&mz;5!@Zy-Gcn-5&kNTb;2rPB_<9+5u!~_QdYu!*fWZycLZXMKs|#oj$SEM3eC~1$DmCfZ|C9#;~lcRQg7m7Z3SXguqdInP*MxT*D!T2 zhf3+>lzsfHbICt0RoWc}jiU&(eW?n$fJL!4+2C)mx?#|Gec}1%UmcYcl%Tn<^U-Sa zgi_vX3CVgX830IV+XnQVV+7l5ejrxI$WaXcfg}Lghehbda`Eh&mlrHx;wj#HyEj~@ zyhcFu^nfE;Jou6>uNb3F&6JBMYtCAw>IP{{@O}!)kq{$@PqGqOUnu2rvJYzpp#q^i zhP^qn)w1;wVfR-@rK=(+Dy@U=ljE1>ndDT)%f4oOx>rrUHWZDf!q=x)CuIa@+8S!&Od#6VXfxacF(b6x^~8_c>SDCbmO#%8fx z=tMSbfr^yc002u@V)sFL)?2h&fdhAQn~JS#MglI|H%IXix75_(YB_;GE14K%;953{ zA$TTIqW%B?T2&aoV-C&M`~Gk+DlfZBDu_OO5>bo9l{;B9H-zX3x8h!@3xB z2$eHhMm%+58SFF;cM`THjos|#^G#@_gWOr&U$DFI=U8E`80>BNsUm(F_+7eZD1@u8 zYg(gPfxBgL>7=;iIl~(kW>thW2EGTLKJ^yE1&eb~$1&KBuq*cFnJ721qzz|e=xEKW ztY}acjUkx<8GNDDA`J3;k(1b#_Z)Gt(X{b3O0=_cf%k7O+sC zUrT%Qe%fQDpY*B}Smm>G0ab%36#c1i-Y$Rf4KRbI+)cOw^W6^7I4i0)TH$l_6Wdr! z;=oZYi$)NuWs2E0n9M%NLNQ0cawZj-PHD|!N|ynZU0GE)83mFz%=|Ym zrsnxy=Jl(xE}RxhNVq-gDkmW1^_7O8Hd!>rbn4-CjDhqCop9LeM^uJZ#a7^pcK_Vz8ddEoX=eh_`*qLYfgZB^U10Es_Nz`F1AHO-02N{gNWId%hhF^WIwmZd=AkZ&y z1J-{+;9~8)dH?C>&-XXCca#0T)k3MY-nX^wWOOrM?=VOCExEf}pg>H@SN^E!y7tY) z4$MLUQtC;m`TYBnX4CR&x#L{DHS8ieuO8>l&r#ZO3>ON+`Wpp1EDdUhr9OX%anQ~@ zK#CZ^H>+JpVe!xRye`aHDmB_>`()J9k~!NTypMr0dsqyJoW#*zzo?Ze9Ammx1EL#W z0!RUsLP^arS|4pkomU<3AhpZ=pOWcJBdiMhsM>V&?9=;u`SR-P7rp!bwd!{OR){FB z$Q9nl-lGfPjh8%&K2d z$!3QJz#bOXuy^3a&6pR1o(s#}Nw`^p(J2y)?ML8T491G=mvyaKN!Xf=@mWr-3VKp<@-Ocp);bwRH zv>qOCnvAdO$1ef4`|nrqS}E?}V5xU1;mQ)MY&8Sob8ot)IZSWTuMbf~U1j*#oAkBH z#c{6L#(Ujvr-#)|Ic98^qMC|5AQQsYajo^ch37e5_>8#-L@cV z!_OO^YqFB7_~{~Mojn~2^~PzN>M$V@oMb&6Rn~Bh{jNpXk8y$qFN8ZRt3#azytUfw z$S_62$#kBjDRz-)w6x5I#JlKb_Up%VIGnn?DnJX`0}Sk(6KyigHW_c-QrrEpQ8za$ z6w!=xgsUq;Sl?V)2F=I1S$%$<6NIx1NcI*Mx72NS+FH6Ign$}yItN+~FUIJ!<3YQ5 zU=kGwKX7-c@@eBKhr^uu@8<5qG+uA$3EjV4r`vrW%1f(05#ef@N zFY6WaW*p7Da_%4h)8Bme?7Qb8rVCu~8cAU0+;Dxe)Eop_1Xnu(S|B^R)6I6v?T)-1 zhINdcjS5i)GBrdZ6{L``(CIt0-S&|bMf1!ToaFqZK(TBiAIYAtnZkKFjZNAUMcJv5 z&cw!zU@CyEvqF1?l7VnVg_F%Z#6-n9x>b(16)!l-U3`6Pq`gvG&h~M&#IQB{xL*Jn zJHC?C$s-##8$kH^cNIoQ{VUlCH}7H#H0iYKi-jr?L266{=SU6YRbc%rO4oZ{+*J6G z?=41Cu-aU7rIMBzxD~tMViSnmaA#TKSc+13-QZpfUSgm+7MnX&0$#s-+SoO**(hF} z=h4nwJ;PjR+OS|+rG{X(aW27{2-$J4{cIWWdcaxta7Nas)6Jq>?yR*iX%Cq6FfQu6 zUKmw(F+Y(UUf%!s=MS^tw2vpA62&N9ZC89$HEKZadJ}l0o4ZMmn^2tSQRXQ|C~vk9 zB*gP0!8!XcfA#A2Hg&QcIoWiU^bng(*$A&za7tyhVTcW~Yr3I~b}9W@2xN-u}CTjGKm8Ips{m1hrqtBILwqBjOJ%HQK${evxq5RFU=LjbiwhRY$ZNo6@ zkPU`y(VazwT02*&7e#(a!|l@|oWEbSc$rFP-Rf`taCA!OYu>)%v(nW@<3cBQiQ!Li zdWSXOEL_g*TIu@YMCxZwRUi|zVt+GItHa57+&W>hUb2UB$4R8iO0`jMv~&#W>8MSN zFQp@Rpe!#(jePz{|3s3P^kEc9gj&sPuww`&73*q`x?~@iM6(4UuB(?qm=0>bL-M#G z5|e5bJG|U;0QK{Axn8I<6Rzq$bn++#d^NPVu=Tow;X(Ej_WMKgs#3o^%^&Ac5JU;# zWYF*waeJYS_$y3SxBZ6HLz1?bErw2yYI!Wjd-xKjI|Oc|d+WP(nuN>%X<4%Zi?2vH z;yS6AcQ>Wq{myvb?VMbY!)JiyYF)@(RO?p{Q}!jrCX8PWX1%&VZ|jcls0S(f;P4#J zWXmfzIys}ITCHlW(eM-am@kfw{^FU?O&ZrZGOZ+NI~v3NQcm~W^3gSfO_8=mrK9FS zwwiOQ^>!DWzQkB^eb-fbWTLmbnOi(MzpTdVj?`u7q^}=Zmkf`@Wc6^nY7(aiKP4ul zDC6i`$sP47c`2J5zR$96G>+wwGjco2+j*$4tr7rMb{KS*FT&2(-xj0s^yyc)#}vNe zE?1MA(dg!F2HLy_zh|?Z#j2yx-2ujvs6O9R=1d9dzJB0v*+rvJA#&NcJg*zQ#Hnhu z#?6aj?&UW*k!q{V-%3^_R*{&$>D)v*Ma>mQ9^THd{0Vbee(lW66_m(b_#Ev^+;pnSBygd8rQd8X?g22)d=f`)bJDGIC9{~V49BtnZU}F;08>9(y1rbt> zuarPsU%rtrTCpwGTwNuO7=H7g{LJJDC@yG&F<3+0&1|zTMEofdUgyorM|XgrNBVQ>A0_HnIyU*2BVKD3;&3zTkXy`JzsDaHzi# zG|IiT>slB=0n|WWn?tDt4O$_O$8*?jwR$&rxHEK>nSOn8t_`f0r{!m**uE6m5lbA- zr`r_R2;h(KKAYXH;KG4UUT*r+_iLU4pvpO$&X;XMZGbc5MeoIVc=y<4i5If3jwkPS zzGBD@m0FfJ%XKSva$Lw=eDR08AW;-oTjkSZmeq^&@JtykMw$zB?dOF|i8xTZ;{>o_ zqtyZA)R7ds4KXG1$0Se@i->ih|K7XIee+k&&!47Rt=W9lK&qHo-Y@@idZkMm&)}X_ z^p%`Cx2w43uNi1~%8ICii(!`PwaWwq9?HM&TbPqrOsFDCXA7@MuzWwyq~q78)q1lo z42h3>B7WVHY}wmC?m7DPXxCf{abzS+?AiLuDA3JLzD6*J=NGW+WX&Qqjf$t@aJP4* z4g(Hr8naP0=%J;4@zlf=pP7niz((M$?yEQn>L-GON}ae@P(BfPRk#6qmvX$6P5 zH&EKc$GgL}8rVpr78|mpNg&CcxLGvk?rr7G`4 zVx*0Fla$=)v$NBqj>ceU;+WmO-WyIHcIXsM3_>QVJNOKJc#`vXD;na>tD}-oIuTen zHJSZ5=M8^&^JywJ+ZAo(VN>YMSWNC9{B zbmYJVUDvNK1h`C{qB0y3?6173rHHS(5sed`rELi?y9Le>YbiQP;2^s#E?J|ScFwD) zbNiYFR0;l99JVE&uQhVoicT=ERyM%v(3|4}2Pe5+%oiJl=UBRhwB%%T0cT+_q_EbYSRnn{*NGbr>M0#%&CaSg)B#WPkc zOXlXis`NHELzCt+`(YDi8^bLhi^{1n=8ACo>g73&lKyL8yZE!p!Zhtx)Wpc0R+gW% zD+@_7+g@)6YATmQ)B>Lf@*Fri^jjF0k@xw$EIsyxh!0SrbS*9vZ6!jSW%K46PC}j2 z3^Q)es#ofrHoY*CbyBgyD22Mfl4ZP}|NS5S@UlWjMqn)15#`owc`mL8fXJF|!V*Xf zAAZaR^H^bvAe?0i_49K7P&|r`a!>RCM*4mf`3RX;tuE-SK77yI`=+ofvxxVnEgU`Rikwh`y5 zhn!p6+C0W&=b+PaM2#UH5gw``Goxq6pI^uwwE!}5MFe-@!3Vi~(KJcxpF=D4dQ-Cg zbXNUVp-~i;gO1c`Rhp;fh$H8y{`WV zd1*uobM~<3f)LDZ?^o1y2a?jC-R@=~@Yw0%_KDJ@>jsUQ+S_a*qCwN2-y>1x03$RT zh=u&^(?@ula}0kOQH54xwSoa+L!3GkO1llTJft|9Tt}$OAVDSVG@=;cQhRB=JS)}n z>eM4~D!}}|nJ{2!A=;<`i^H|%`?V4?%P{fjpGgtnJX;Xrp^ZXzvs$mCe5vO($)(k` z%abpgNaJGLKkqS7?QV7vJk0UKpf!BI0mes8)iygOJ%(`v znb71T;yKvK9G!~^#YuHQ5X)<+6h($sxotrZRwb!ZK6<6erAEc*b|p370m)vFNY2Ue zX*00laz~m_?;sk|_3PIs1@dKJux^ta~axVf&K6L##;;`DwJcVyu^x^Jd zG}_;%VGkG%r2`W2OE9&g`6S!k?C$PEwNnXHVw7t`+uZ;7p5wXV63q&lf|E_}-tA_O zpo>6vNnq|54|gFRH^FY!s&$)`-1%R9S=Vs0AX5^ZU`(o>5;$)TFaOoc&P|r{HVjcp z^)?`4BWTj+7TeCq!5K#rL!yRJHRb_t5IsV#%*$2qMz??ZF*S5QD6poo7u`yop>KzX z2B)ZcpFc@|l%ynDDdxDYwfcMuVS2in4eX*Wb*jj)uk&7_)q{SkK!leG_#qz9{H93$ zz3}Z()dNW0m0OjgR_mMJTchzlfCXrGPSjylc-t!nM!UrVj2T;7C>J$kSL63f`oM^( zWIngN+nh*mv{d>aQn_L`3kG>>tI=^~pVTI8*DG{52XulVyS6Aqvp$Oz&lK3YvHz&o zVY!2!0~DqETCH+srbiWNyBXcYoWgtC9kK5(LYWMbLzh*ND zd}X}0eD;s|^9~1+7M;%K$=8CbC+R3`AZFFzZV3Wi2`!M1e%tZy7xl~N{ev%yg(4#j zUTL7THY)HTzUTVU9%$r5uTH-2tfO)Rotu>^mFgLP{(FSGTyDFBSp+QO(unj44D z67(tQe8jR9N$-y~4^Vzql@!Ugfls zLm&V*(Ls&Us>c;}s*xm!S0`uHQYDqG$NXtsTJJ(KWUab8as?IOzzn)6^2iqKaIR(y ze;iXx_ao-AY(XtsEk6HV9{ME-bHA^-W?Xc8H zy7elQn~phYyb)G zhHY&$e|Hm4$eay3{!%+Xx|0-7g0*gaeZL3rHFS0C;-i|x~HyuV*f=Qo>SKkFS} zd1|wm7sKvlo()=Ey*ejW>~>0dP!mGsP1O`7JRRR1TcaqDOmrQhleVf51cwMmJ1xVv zcYej{v~}H+OK1SfidnzBswl|H8C^hy8{CY<(S53RZ^sI6<9HdF;$l^P-7vBwoId@$ zE!3@0636?GKRpc9j_K1d(~ruN1RXt*D(^6Bw9M0Tv>2fWll5GUSy$<*X<&A5hY`ci zy3Xl;w_c}HQ=GVTvlv`}&lg6iTz9v(DDB}dctecn$-{n%9(y)l$aPVn)$aCsHX&2u zTs<35V^_}QFU~KEreJLPd^`}C7zRB;nQ}1o0ijYU(*XwaHC-Z9;7D!tpxKLN{rNY~ zUsfrb)fH|sh_4*Q@`g$1s;(A6j?uvR&}K~fn(EPsR!hNnI8;m?_w*dIG!rgO=3i1% zA8d6Ay>`^Hdeutvs3Wx$#rLPTJD-^i=iXtwp5OoJt*1oO+fVP82izdkl(=?5{$i*! z?V%mkFUkbU8?UaKV3h>6rbfVTq@f<*HrziFrL1YXcTpmOig^&soQ+rzy-wyAPFgGn zG1a~~K8U=5hq>I*- zp*PV`W(WF;@%-9LxFbshFu|+kxneEW zvMp4*BLkW=kFv=M)J{L{!vpqUN%c9*YtSiEPj#eRD}*6RN6d{g2Hb6c?t#X%n9^&1 zwQ`Jp)Gp}i&)EUr(G()au!6uE`8-v1QV07{bQhY-5?cSe|>Ff zBt8>5>iaui^;iIm()nUDX}cQ&aK-PRy@q4_r~l{fm%Sf}<>aRa>h#XWzc?@UH*=@u z&$5y0&R}BTTsbhavVmh?NwEs&Y`Aw{ebpKDN@aU^1D-yLrvtmxJou&XEmVy2Mqsgs z-b}Ib1|3bV7wxPo%JNzL-GBR-V!P_nI1p$%G2)6KkfK~4gpN|LV`%UtzL>#y>dE|a zxc>E%T9HF+1NM>JstUT)wvz^}oPcmb*JzTRGbw&qti04-=UQkM@`X-J;Iml;P{8mp zCGUY141JQDt=NiZH=zBZuqS|Q^X7MW;(6dSTWv0JQ*4hy>e1VjLe5xIGb1A+LwUGX<|f>vo12?9cXO>p z=#0$D60Ms6F@phj7JIRG3+#{E>xH9+*QsQU4&lnjY4+ee-^B&bOo7lWJVH)Z7CH$_ue3FP9KU zZ=I*lq*`?M*Z&sC+nf8FQTwRCUAk&u&{Wj%dgkMLX28Is0B(I`NucjgJo&Bd?}s=4 zb5&LHC`wVZU^-23 z7C#t`d#zr|y(rZEA8g8Y*w96fybyE26i+Y^QO3pbK0?KYf@uVN_NJyI?}-Dj5U6oB z@X>XSiqj<7_5`8SrY$+~;RyGKJ+Jrhev!b5n&V3v?5?IrUyx~&b@Wq|(D*T~Ce$g? zq2DOGSNE*Z$9gd<06d%YCfncN4u(l*pVXCTjd|@sM~297IKMBJ$W0N0__O~k=S^?Z z*b^Gvhp9++wGQ^PlGnNlKG<2z-HW46hY;IhgOnBUG%PfzOXKUm{GWfZ+M~oP9@Q)o z(Lttudp~BZG184F%A5;@tQK!pQAJ^*e6wihLF+l~LdH(kN#l|Vku`EfK`fo;F0(dR znRd{ufXOJRH)C%$sCiSN09So+_31twwStq2f`?ygIUkR(ULk{o)^q!D;WGwq45ocfK_dq4b=fxq-E+`W)*tY*sV8*U`384achm_x^wgF& z@44hUk*Ex2SRqVK8maC&*gG7t&U<3m>)+nN3d*V-xZEARZIP-0gu@0Vo;YkYN;lq(v{ zSQ9LyMl^*F2l=W(NrDjGGR54hm)Y#4LJ+zp1!?GU_@yoDw4*^A8k$Q-p0pfM^Cnpl zbfVo=JRrFN5x|D2P8G~yEE#|@qNrY^$5O?j)way_zz{p;8x5;CpnV z)u08Rb~+ix&LCZGZ*E)ia;}CC*B>BD+KVkUQ@GSoM~xCWTW(Kpks~;iYX%mVTu$M| zW;!3!^M~zQ;U(>nZPh@GMQV_Kj_;rfhmkW zMzjp&j*!ha*w+(82>Wfojgqx_oN;4nXutel#AIfvU8!54hV)C6Z*P|mf844U(u!VZ zqfxDhNWi8KYixVgZ0Ts{{PZO#2^LT9QWjJ+s0~X^Z`H3oZ&oEi7r`X02CF=K4 zJ8Qa(F6FQIc29ZoYM&Gx8^?V7_nEqdp11U#-?@8IgCZ+yK-7xU3@y91FN@2)6f0R-+& z;0`Z;S(6G$#=D1y*_`7d#2wh#duJma6Cxv4gB}|d5NETglzD7htZ9PrIO(({V>H_{ zbW>hN-iZ3pUe1#AQWMva)ChgmRq~w4{y5aaC^PMndih%*=R%C5h(v+ zvzD)b*W2=3^^8uv3_WnN44jf+8M7aL|A#-U$lQHgqr2iwop2q&##^O?$;O3Jl)F3vX71tZD2C8~Y5P;Q*OGmPg?*`AF* z^jM2br)j(yXnPDpy`lMm@QUpvbcaHzX(?h(Xel-RKF;4>7Rseu9TXBa9J_pfPn9x4 zFRfY06fbJ_;v7Xhy-|(=K2Yh7fhfk~o`)#ICm%plAV@|Gmux7D-HlUvedHQuchQG0 z=^|Gf-;8UA&FLUr>Gg3R(Y4hbf!hL}9+QEe<8t*{;W&xMxT4s-@x@h0pFq)qd(5fH z88`(wG~$34KA&#`TS-VCC7QAMgYi6ny!Uw#wfeUocm2r_A9v<3U&2^KH>H^v8cK&z zZ1_ExS|iFg1c}*RNB#cl@yFXaINZe}hayPH&2;Ps^+T<1WpqmO90~^u7W;Sw*md$5Etm{DO~%4p4xQe5l^V5*TYKB2 zW=GKJFFo6OnEm#5|G`O(oyiJuD}QsaO8KStBoLv{C>%+vhI zJF$u*PN#g;lDdV$4R9ZW;6(mFmmt z-cZ(Qr*q2!Q?6(CxvR;m5iU1+3B%w2`7V`nr#?0}D)}8H`pY&)iJm{qZ1MIz8FN#jyb}YUBT3I=?-~gn zrB6A3q7cmZFiaQsS9e^Lbk(+{s@t{e7g^{mZIhgSsZlFtWGmR*KH}3Du6t=OU0ElR zTPy8L!ka4#$Tj^(FT|Lk@mu$YiQH%u8=XGpun|xBghSwT!j$*S7)LaAS{%bTj_ zDfJlNL+Hi0sZAoJL9>byQ1SBBs}hJ3Y(Iia(-{GIJcP+dZ5Cub=+WHw->Un)FuMs4 z*$M6;Q!XovTU$+Hs_jlo-~arY0VyB}Si*RmGmD2+vB?aY!?i`0k717KHaqkCAFc+T z=grAKCK^YdO^PqU5e?|>bW~!0_%N}%DPq0B3a~PdUWdxE%7Kd?)KP8s`*rBl8|!QC zl-*Y5k~;B_(5u)z=fn? z>5n(vmZ2B9Z5b8LehyYzXSCW5Myyuyp`ioJV%)E5sRYemM)w2>hH$0#?>KiVWDX4{pqBF(d~+!vWKGrSmUO!{z(+s&D2`n+%+E zUo451lC*0uD`*(7I?xcr{`~uo3z$cVoqehniz;W|iCeo603$fzW)>PvFW!qec}gx) z^o>Qm%}=yYY|1C+_$?6?L-)K(jh`L{p4&sfHw8b5c7)uRda*yc{ozj&e#BL9Ci9O( ztSZ|2kDJu4;U1o2#<|QE>07#;#T@D#CTNqL4imY~u#1HPHW2Z0z?EsI7bv2?xf-iE z_fCISPYicZE53au)kXaFo#AzeORU!5{BMYk!w{)ixA}xOTZ>4j49DyM**s01M*r#; zpRqx7cYix>M~h{*QEK?MhzJH3=%p-I@fM=PYD6C~Yb|;T?Ro911Hw+0;<%Cn|F6yy zBZAA#L((WAgNS5I%)xL(79Tp5AJUyzZmwv#)*Gaa0Zhh{KGcfM-thPfhRWXryp&vn z$~+qhx3OOqv}2p*7{!og5jQ}K#yyb*0|{nGof1!4z2vWf;Pktd+}^-pj^{{_xqhCW zR+!N;Vd~*}-@d=yZEtszUU2d2ms(Awy)~E_mnDz8CI|gqr$X}wJ)fq6{BpTjwYhus zt?akYsh9>1kBq2EuPEeVy_*rt9nV%*6WmxH94rnzO_TpVwK6g(QfvCtZZwO{VnPi< zBDToip!DWh32(=2x|xA(r?=7C^WCkw6%`8(a!feRpB5dS$6lvULE&JYDx;`yDm%_> z2tlx*vU8t|Wk!pjHjTEMP5@iEn+aUkDbyWb9QF%kVw*7IFO9T480%fE70zG{g_H;P zA9pUMZt^A`@6%>Zhg+XS*ig!~ZVFnFuWY{AqSvhzidDGHL3#h+|<;&~W~N1Xj#P~J^gZ6(=4900XU z6*<#c^#(S_Tv2G_3}jEsBms+*>8&6arC5}?5puPy4+w_D<32cTo*(#YdXr(ej%ObM zb`U1pkV8Hsqrl<;ntQ~#ZnEz7ItnTs_>OIEoB=!8mO*CT@AFhMzI#B>bDs%BX1jxauj`u-n6*sKgDW^-_T<(4KtKCXtAkVXPI zQV26ZBU_pr_|XWDycgd-tk>-F3ALN5mL)NUv|QGOlgcF4X$#AhnrsI#%K{@_P6krZ zSrgyB9ie-z#XF{Z(SV9hG~X;2P3fmq{%uv1FX|}S%%|OsxlL)9Qk}+LHiaRB+1?8yA7m9#8SUB6?ulST#DNpdIE1y>? z-s<)S`ey*iV>A#Yt)?MTMt~7aC)~~393mXASb6iim&DwvE~q6%wW%Vr9q(F~Dm*^7 z6+bTH-UK^5NuTzZ^QvxIWxc=o^rt_~)fZ=Fpyh zN6GT%s}Kv@`r#JPNS{e>Q=&4row)Nymhj@peb?J{d9Tj=ZvtPQ4YkhL6g@?BREwOI z6P}$Six8VeO&r|yq|x2&$8o!q6SFmZ8vA~=c9CrwhAyG^xReAsKy9ty-Oh>Z4X(Ej zck6`xv&;1dJ#40pwF{FU#si{pe~4HF2ZAMU%71Sod2yIO9%Oa4A19J>nlU-nS= z$(K%bu$+$gINYvtugf%=X_mY0bY|+sGQr~6>Y9=NIylaJmHXGn>sy;Ar{ltAZP4kC z&YnO0_N&id9Ks)CP~B)ctH))4as{4>QqfyFX^c8`nMUDsAAKhrCP{*~5RQcS)5oj# zSA(EYDy!jmupDre*31QGdX`yAJO9LxvX_UY!g1d1_SjqP=WCLv1I#rPY0oDiG~P-3 z9abi~0w{P7sUjcaNbJ{@21;^SjmPf!$w9e8?Jy>z&W~kZ*B;_O?wZX-OWe8j5}7As zvYYi>u^QYbK2M6!Zn3_c%q-|_r?)&$j zu2jKJ+_oQ3s0ox-Ov1Vw&1T#H26`)hRx~?{s~Z%BiE&X-y<{|rQ6ZNbHjN&%wTp?T zSk05yRf*tO_D2=jJ@JpGR+Nqn-x>xQjK74w7 zyk^5dDw7SB45C8FR!@hwvpHW14ExuFVSr&6#EW{}8F`?656Sj?&aF+HjBOX|Izd_X zPy5jtu`j&$n!OmcYi!M0#6)Q6@4p7I$?l&*IE+9>R(w}XZhY|=q_mnjDQSTrn^XKf z%{19u5#hMK0<9s5UY{VOPJco@KFwAcuvapzq4n;fEM(p_I=mF7JOubJfH^3{d$a<=S_b~nrA-N+8E?>6m{H+}z?zy0OI#X-2f*}%CeRYiLA<^+gh zt{RVrEu+~Pw}A2%Y8Y8&LGSwUcAV}tDxy}h9eCa3*kJLph}V5X#*rI}i<`U0YlaR; z9e{%ci9mSUJvqJv*vDuKI=p^KHmU*c3=Ra>tO&+}W0l6xp;}moC^Zjhyq9#9VmAgxzMlpf=W^)t^7ny8kGA_5cCC?LVWPrIS zN6o|T`ffA6o_E>_Z^q7g(n4(rWKzzV{l>Xg&cA(jSztIfxcR@qwqe7j0{hdCA940>i2OraSsz5e~ApVHmGPBKqUO5CZNe$*Ab zA)$r={9~u7RJ3Tcwzbg``?Q45fY>nFV^i+xmrl?SSTzgZ{)_W*Qp*8f_dH5vlNo4} z%i|i~YT94yn&whZi4`v%KHRJ~Lv{4{xFPocxBtGI-RauxjEqd`T-1q0gT=ap5w0UI~b%JmRwiutLxcv8lu*LQrFh! zSB7e`$gZvD@v?6+T8POzTkH%APSn^xmn}MwtZ!IQw4+wdYBu<#^{|5Sd?OV)<&^69 zZ513VgCxzVoVBx9gapWV-*K=g#c0%X!4Cafd|?OCFTf2HxGS6?1kW z{5yYGJ${G@R0<4@X0y2;C$K}i1KX%p&R-SmepslzKCqVK$$ePsCgFH>6UyOoq&YO4 z-JVuWmL3|e+4ZNppWdhVntStLFqx4|;*3TXXhb$$HasjH_L~)$vZQyhUhJnFs1mWZ-m?yS1w zZZLTm?`f>>{>#5StpxL+B1cYe^TWf<)$IDZKiXX6xw&@az>|C9wy5HIZaVy6?7iD0 z+3&u2@ebLZ%P%QBx;l&AhG*tVS*0%TN35(#_=8K5Hl-#ZHA(!wp`)<0>V+)*g{-cZg}O?K1bviV(-81+7UI*#=?-cZSEvqUUT%_n zg^JiJTO4hF*zR zX7%g;?SKEz|Lgy9#<-e&K1YD7+udddB{q0kUMEJj6iiZ@e7)u4tyyo8=&(k-dqXt#&m zbg>&HBm1%hJWi&b)x3aj)o71;oLq=kwG`^ZMaihM%)lugl3d(RSw+SG$BiL#uvvR4V4A%O}}sR3NxYG!p_SQGYN3KXPgsF6?Ul-9@l# z72P4{`Xt(UCni7G(7)eUpjb&&M*!f>j@t<#xghF=EYzt>?V_Hj_P7UtvQ99dw&39&p@i@W{(w3ia%}LW3)pW0d4PMSPZ5%O0}c9`g(xTOI30i; zByH{D2qf1eQ9GSpSU;~(1&bO_^9-TQvXId7=ucR#Q@nbZDkf=fq_ENLB3*WoMsl2$ zGFpGxUoPh#9s!mpR;M>+@Fefit7HQMsArhfy#U&HV7fkT`*K#c2EC51vF4Yw;Q?XIWUzG#vc?%G2bE!R}<}^-eiMmN*tzv<>TiVPowzYX)~p) zW5+hma;;owLV9hhHd68P10l3^iW-hnF9I;=ExpSYu{eH>ojA4Jt9j|vTJ3CStX+0% zCDX1NzEZrj6Gdz5#Z0kME;Te+t>$d2be?6v-4In&l5PtPrO4^8BeS>Tyy_OqZjB2E z2W#2d_Y^Yc6msV_jXwjLQ7B|is&_tK3L7vjQ(TnYQ>jo3CIT$9z#-1*AjX@{9d1&Z z)&ReY4(mTi#NEnUl#l~iO#SY7J%>#Lt8g)2Z7461d`j0pe!OC=sdK#JbhMcSbqQX> zc<)H2Oz+1m^2E!E52v&@nGf1^aXd|KC;}~b+S@r@O$n^-vvc%~_O%gu007b0_E)$N zYJgPBM&aBBsF-^j@p7o^5cBC$Lpwoq!oyK4t5Nan{8_H}B!e7*URnM0)n_krXJVr@ z|M3bIz4!KVKNn3HA)}1zC;~Zd9%y^}NmJ33_HwVe^V4MHSF`q_rxqKkDR*pH%;$?u z%w)ElzdX2bNdyE#CJkP;G-NYN4*+AZ#j<2T+0pOa$L7D?%PbW&5fy{q5VTIMsP_X& zu3sJ&6onYPrc_SP(fAx+0Hf5af}{gAW(8BF$`PaU(FrK#@(i-6HH6vu>DA!0Yhkx0DL` zUkN%&jq^%R=Ab?s5b&X*JrAPm*=SnH#&l{%54Vr&j^YAbV7Q#Z}vNAeni!OV$T$IoPRKdanJj z8T!1!`n#W&+GP>@g4)s={C#u-v9iZ{7f-p|MfTy#MypR(6A5|t+37dG&eiH~)F1BB zVdbEh6LAPbFD6?MwF(t0K%^nM1fa^;_eNtd^etR5PF!v+?6MLVEj}C`t;}EvTHPcH zqz@lHUQK9N8mvmwX*y_guOoIs$8b3mF913`EQ76*@k0Wkerk$Us!@_?wd(a!R&e`l z2w7Z+FJ7NiOQ$DFx6|Bj7%R1wPpP|wjD&#so?)R-@)!zZy3ifm*Xm(4SzPe} zk=a9EOtvke?>-E)g`>|cSnYP%b!dVB3p?@N|Ggk_FdK)Jv#Q?Z*k%(LA<1A8mgQM$5qkA#@%U=@YPq_!my@5P z3t4GB{M_ey679iyxytr|R-9Eg5t;w`GsaB5by4?2pIvExJZO}}@BZ!|UOoTS>yp3G zKNn1?Ge^-L#e>Ck8d0Ac_4_?5;@&1Qs-V0>;w*?vu!4zsa(iY7Ynwg87RFf>ZEDP0| zAd#1VuAyp$XGf>G{Gl*PiNQg<;)cTAlJ|!}e}GiTejd~H4IW64P{|Q)<~9#%tD4*_ z*<`l|BkmoV;`eIx`2;1GByN|>9d@x!v*kP|Mi+wrU62&%S1ZOds#ucWeWGvVO zug2!!{X%ZA;q3CmOXM1m)EI_aNZue zH3OTTV!q2q-7wW;rNcJbiWk&2KXn(!)7+RD|@?c1=Ei`t4_5zCHc= zUGVIfgc-45^yE}Mr=v9}!0FA+h|E3!yxD9z9#WtmCti>}B{I--3KFk<7?0@&YWM2r zzy9mTiFqhpQ>D)wAAR=S%hrZ`k#qU%=%VD%5&3w{-cPLWX~MmrR5ztY_V{(t27%LL z;S_f2N~M`SWjSgIM~Bs>k*hekV|WRh>|iw6L@5^|MKUbSWEV&hne{v|Y?=d?jFseQ zYCXAi&kDo@U-1 zy{i_V8=JH>Rb`%l*UPb_z5m-UFsIwG77ej%@eq`9}Hsa@SPdE{{YakfZVYnIu@AQ6Wq>>03qDE}s?~4Ls6;1B5Z^ zKi-Ds?yvKR;QYWXj(%)^cR7jj1v^9$6S&^mkpm9Jbo_$Z>h8nipML+B9{`PlYiO1) z2jjTE=C&NFc|ka@+HI4P1A$y*!9L1|fZR{q>))&i_u~a+n1wqEY6jUcqg^hTVbWIM zdZx3Vr}}WUdf#U3HN9a^B%aI5v<OsQq`0>c`=F9PBe~;);tq?&N zs@db0uU?nN<0zibje37EyxoYW?oW5Ev3^#pCPR{94Fnx~{5C5->Eh(#-Noenu)n|h z5g=o&*ym1HI^Ese{@ct0Hqt?K3sxe|e{*<#_VzRjGi}3dt)!c!*{b;B!eWr@JHy!1 zT-!^vx+dx^gWrqmP3OG!3zzjhyn{C=Cvtb#Rvg%QwMzM-+$fX@Y4OA3x)_k;4B^YB ztRP^trhL%yLOYk2I(GHEq&8`vkOmRzRdKYQzTfT-TZt9Za%y+P3vPLYPq~d&ktNU- z8__vV2@xIrOHIo^{iq?gcE`<<@#{DUGETY=l|*Rlgmo(FhhxW z&}!hqy!Dl)`0CuClhyTl8yE9+k0!J?yS`lp73KEle#>Me(NDXH7kZe()o35a1XP0O zO_V&U%y3Aqe;jHAO5M%9^4o2%KsOnY+|%HbjXEu3&<;<}D4o*YKeN*!?Xt9b0GE z3{baTlkAm&6}rQY2@I#E=^4ov@$5++3OC^Y3$Bg<kY5=29nYSS&Su&aJ{J--H{~Xc;1J9Iy=9d zd-dDud^-ElJ+&W@U0LMZtPF4DS7n_5y;VF@?1s}ge|Jz*`;aGXr?Kal zApJ!PBM5XjB->#gz;;s+OdJZjtwPl09N#g?tYbXJphSlboHdhIt|g6%MU!aY@h;+4 z%>mxuPC9Y292@3r>b7oo!fDOoT~gw7*7T86&1nI#--T1(Fj7aN^WCKL%LF3XZoAc@ zd~uPhu=8&!Zij&O0`eZQlEFxQd4U`gw-0dY$$09Oi`A3k-rVMIxVzdxhH#CR!PPz; z&BzrYzu+U`w90#~Ohpqf&rdL>7NMW7dttNU!XqHqq0~*DL`x=J6vvqS#8WL_$m(iV zE}T!&!Ts8(bymd5Ugxy43y!OIf1Ns`j##f#r0K-&Xuzv&-#{xC^JLjak}74C;qsav z>qR}VcK0$Ktl*d1`pNMH@Tg|AO=Xo%O^Xrmd<#tU$A`^)w!2xxoo*0Mu66-tRiTm? zxx<&V5GCOl@I@;rm*+hlyJ%vTllv$~08pWGcUG``r(94D&a5)|)OxK@i$*PI(Oe~) zqHkvfWTOV>a+}*6F*+)>gyI_P$wBjSkz^vjZ}jnLjk_TbO4`agsFXfXG7wbZ^*}^; zm+H-Nm)7CXzU2iRUXjm`B^TEn={Sy{F39uF_@Pf%sAJOTBz&ruDESegRR~B`*u@js zbs`!D05id$$HTEwGFwW%+>MiIr{iQ#1Pqa3+*=crvZLL!YkS)ieZ$_b;+rmPMFvM* zx0+!@R5z9S#oJ7KBfQjkilKt`%>A8g)B~na?cTt}oJ_nnWnHfOML8&6D3xPzuv?-E zSuQam3c%k$6O?E2){Kk390;G+UCRZ!;5J_?KTP<$;|~sKerdRa zX(@&)Gub6ly{d3ji!{_AzNDU)?>AaOTM9>})-Prxq0ks^Ql&HWATryCp&AI9%wc~o zRAVO4iQ7`K%w~yBqAcOiV^ARTPB(aSwMhw}FGsc1q;kiFT-1Agw2Pg|GUPGSYQ|{; z{|N}Abk;`{MJ*BznI3tvyBs7TgejV^)QUMvm^Cr*tO~}c{=~}4ZIUC^7DouH*WY~NDddNH6~D4!p`DE|Au?H9{~Ulo7Z1^+?EAvI@Z zj}ZemtD}c`V7@(bm^=kI-Db9Ab-S?Z(98Mb%x^*~XPCc!{b7_929D?ru5W$P7Ss-x zad$PpS#`V*18)F&yH+liDg|dVLSPe^PcK~=j5rp?`e-Gd8xOTT6?1H*x5d{>|>j#J+*V`8tB;i@{ zs!~;(cPv~5Emw7Siw;z;MsEw@2@8{{7Dl6!r*ALyF52P#W8v4qU55Zga@!NcPd~+) za~;|J)nvEOxlvKNP8_HS%xK2yr39QTTveZg<(p{FUU;PDd1HC4dJ%vX%GPuRxofma z`txnb_xeUUI@&J z9#OZq$(H$z%d@=2a1^7j*;C8f;&BUwYndX1LS@(0+}ll?!hN^hWl2kTy+6 z+RVqvU=FfHh8W?@xpWTJ_xL!#;1fs&6*im<*SA4YXmKt%(cIFf8C_8ls)cYj{{1RRF%S7t$D!altkbNdBXy1ia37!|-W z4U=X4G{F3&9uz9Cj~j`u1YEl;0t_7h6F@?lbVy|pJA)Vk?L4I!aC-+64cj%zaicSQ z=w2SF?WXtMZeYxaiMo@US?sQp`A>Il;kop;JGzsa-DNZQ;p5YHBQ4?|iF<$i`EFw9 z1l(r33C+?1{gQ-QFt(u6i_nA=@Ge_Mec3oX zzc~Er$*a%5t=GXiw;?Aq%9*0fw2oJ$PX;l6C?bMvK(W<$3N*b@phR6V8>Dk`vdHX) zVCc?Tdn`H-<|`G%>K6=Xk@rMi)+@3&VoyUFmc+d30Fte3lx=*`x=&pNG} z*!`HLzncueXz|xoGLS;cf-yqUQ>~Ei~ zb*vh_jk0+C5QVGVc7-fA8m<;IKkJXks57S{_AyNc*UNVHv{HVTAN|kC{O5-jn_F1= zAwLurf%_(m9nQz<+2zIaC;xOf85$WRp0%KO=+F^4DYq|QmwQ{Q#*sc{0}!)0rm@qG zsTj+ZAabY6WzcL=YC)eWYbp2!vCQ;kJo49F6T5OX)8HYJ=w+*#s~1R~)r$4!Po6*h z{Ed)1$-uynVuPk7-#k;D4&O1U1hI5L$yDdcq*oeW_i4XQz}7Srf&jt3D)I!9Wa)dj(kP7dV`jm zn!WYdHM#NR-&BdO#=hx$;bxkE0`1<$dY}9^`)^{a>yLl<>)$|tO#IHgr$la+-tlbV zwVYECx@2UgzaJl;jsP*?9JXqtN+D3ug73J!sNzyIkruHwU4~(|4snl-3PdhcNL^wQ zJy$IsoJhNW{}{dha5d?|i}4u{FI0tacMY$6a+>dNpkE5h_wGq4-b@ChcjnlsT8N&S zCX52J8tlOeA*9A;jV<0$jp|V8sG>Szg}1=R+4Ik&Tw^#u$w=gj14u&7lTH)_t6>04 zoPosRz9(yO&sN7+sk}90KsnFjDTEinDo3(TPQjt;?W$NM7cQ_1rXe^t68M5}SH-H7IMR7NOiXTy}8)@%&(#Oj%( zOwIn){d~aNS2(>C%I%xQ2wyLNz1bqYC-A_t3JG!>uGH><%{hY{yVYqo8CVmFiN<5V z3!onb7%EO3J!6xKQ_SGAAy>0Sfp@)HG$YWt%y&%o^OJ3>++>~v;;>n()}WQDMp=WQ zpj>7cAbHW%Y_b}UyiQr+WM`5|8VyI|&Ad|OQ0W=P8WLv;M;z8;j5wri7h?*senzQCA zS(fQvuR{d8%pV>30+nkNstWb5~LdugjeVvDwn`S*5}>$d&RMLrI+naQ>v6A3l(a;nKl` z7O9~Iu9~-z!`Owp`zYP-S-r5{!M($vcsLuv_TXa9!%b($t7ujmRJUXRt#2A?IKcfw zUDcN8f7&Tm{kF+5do-S}oM;aGobZ6Vs`et{+dJYm&yCwr*YIz; zy{qdWy}trjQo6r(_ECc>eW3p0ip${s2;3G;Cm}W29b4gQVnR7v#larsJz!jFnD7v~ zF57i>;j)j*d^sORt?~7Swx=ja&IsNzPRM`&F*T1~zt2d%-x~rKJw3qYMe_MFTNcdC zKuvdaUUhEUY*rTZ;vho7nL+F zXIU=DtjsJ@)CI~^jof~Qr(_kST&c>6!gRGnP{=ju6cCt?f7zxZu4G*If^NGhRXUI1 zVBTmna~c$Z5zQU|cf+3Lx7h?FV7+JadFnH-bk+R3Odd@l`J=|=%eVD5ElVBrB0N0&`z|fOhiYfWNi{@X|{omY#?v?#3K4s2Pe{INvj!q#AHzQy zOlbcO7Mr^rPEcrOQJ0Zfv8FR8kLgFv?;b$ukAo;pL@pCr=f^cLUgob?u9@6!*$1)y z&nrW-Y{_}ORXse-R|*Hu1dfEIqL!NX^NLw)>#n>M7cFw`(7He5c}}QNu01(S5R={Q)miG-yL@f(K-m{ z*E2u@>3|gyAU~_F@&2b73*waLj{|+FA)TI-I2+U40mM|fyvX}$D=*89CnbN7=7yG#aHbOe0qb) zAP6?sQ0s^1D#T1;A^yze7$G;DaZ7e1@I_>_O)6sm{wvyR$33Fd+)zo|D44!``DuU;Kr9v|l;Pi*(PtPhE-@&}=) zR`+Ji|G3kEH>c3XI4pD=$r6iI@D7pcPuS3<%MHdCz1s1n1Ed5!Zz#V!YqY0VH&@FE z4RF|@f{t-*$n+0EMV(bswBXG+A{I^MQ&HJ!0sAGHWml^w7cBx6G#Go%1ZbZlk`o8P z&>{^EG!qywda8KFqNf#%a2Ay>>_uuxb&gKmt5Lly=PS)pEvdXZY~A$=7fQOk>cKk_ z1gSNcBt!k|qE@Ql!{lwI3Sx-rdg&?LRA2>(mYzB1(%3UlKSty*)7oo4?$A0s&7j3% zJMUuPytL$6Tl<_3a&cbjVcq*>}-H;avIX@1+A+I)tt=P=uQtJ{{b7<$ZC zuMyKMtlu1B5AMW~bXn(7!;V+;ris^tFdO!6e(Yw-r!UM2ECU9<5*YLF;$0r`Dk?y) zUE;oECN?Hoes0~UO=kUh$x}+F-~Z~x={JXnSn5yz>5C_CPmj-PT(JyOZ{cC`6oJSr z$st?B!4mN|EwYs^=Uq=gstIeC6#)mW!ERg~`n}z=nMtStS_F`a{j-2k^M3-$xK2abN+vUZFVKiCKp{JG3 z8a8K+-o$l6+D&sBt-!cF!Ji8gc;k)QXj+Uam9_ zt45YLlIoRCYB)UiuZvI;=wY`8g9!G8$GVqcH>9kVdwsiDWW*ieg3=exP2!Njif%UZ zmG$a*L*hOr59i|@{H$)j*CqYkTK%->Eho$P{Gyo4@Uo!{i`p2^V@IVX0laFt=9Kjnr;BeDz`tc z*HK#c`>8PmkL5L% zUa#A4>F98Q@at-`Dj9~+uI#;hNG^Mm5v$_P{APUx%Z=6sAL;dKxgEuUiLwRmG~YyM zl6G{%b^nv9+}`mzE|s+DZ7=EelODIr5faJN6BWYpEK7U>HE}S44LjRTg6?K>yPbMc z=Db+RG+Y?Q`n%J7la3VGyOtOewzcA zesplw%pM6rXSlK@Cy9qd9QNeP(a^AYb;P81?MbI$zdms**oLkyK6@J7eK7y=#U!a$ zD?+Y594tqhrAm1LnI3i|M7k)^#{-+5JUNENIvU+e7lM?mK@Jc6M(MOUL}2Pv0I}m2 zqAbfhTrx~A2oozZ&R*tGsh_`n_2#?Jzxds6Boq?)mw*4+mtQ_R&-3DKHF3H_$G1Y4 z(zQ~o(zRpl;d|W_J~)!YZsWYlu$#op)beJlNm%uHcG6!*-$DK}HpEgZLBW!GYAxv5 zElsqOKBzpFPP*pE)k?i2@9zrCshPSm@S*9{aVVc4>Y9v3I|={^4c|VeiQUq5(UFET zU!Mbo@BO&a^yv&MTjQK>XT{$%5j*}x{UaFVqO8=tkTUiv2}z9c1%%HPFcZ>K0X%z*@zga*rc4O zuoS{MOowzv#l~)2o}Wp3$X8Dl9y-PC?Z6$bJayzh?s~J;Jm_|DFps*4rgdkuay`}S z+OB}uwimIHZnh4=2#LkBZ@+u}|I24zy%28%>7*eY`07Gn;N59Ok-BiA$#GkXNJTP+VnC~L83G4C12mlo6% zh06#ZDVuJP&1;r;{)?jqp=dUIaG4>lpj!p6v>)R4xt>jW?Vy!!5Z&>+1JEAYY6^^&;0>0Gjs6?DM1^u%Pf#XNlb0L@h&`z zUPMnfh3g^Ja;MLpAJ@%tm3Htnu$O;&NTG0RP|4Mmd1!?dkaE3&#y#2a-N^#GUbOQo zmlYW?c8i2+T`RwC^ia8Zp$KX;Qx5$r<+yNh+Q>aiuj6^Jps6wIJIy!08SbokU@d0u z?UebJ;rnRnr`Nk!Ja~GcBUK~80PaCld)@7IjJv~IB$QWXB(#U~6;YO;rg}E@Cok#6 zBUuI}k68iy(@E{}FjLPx|L)r_Kl}X4-~HyxfBf~gFTQ%krG;RE1j~)}X~d(h+5i$r z%cOS1jzwc!)yfw62V9QsP(S%Q2X4jx@uNk5F$HGdO}d;u;7Thpzs^yrV}uVKmw%v$ zpx2~lWV>8C)%x+}>A4rzPk0*y4=#`;l1!bkzedUn+LIQpF!oX^+W8i{uio?Mr#Go$gX^I)n1k z3r!2^O~iz;EUEO&_^Rr>_B;J(4;?q1K()6cMedsZhNKS7Whn}+PSqakmkkhZ$b=NA zy(A1scU4N>zo~vO`dGj>Kq(eLMKV6YA#vQBe zdjkct3rPyvFZdEU^p@9QmFcDb>5owLk;#z=!SI;w%R zS!7Z=%fES@6AR~WpS=9yAO7Ksr%!&X_Fp_XH(j|@Kn%s|$zadaWKgznYNdKpu9}SM zFN)_E&;l9CB|4LbOKlIAdZT1As=IgIdHK)t6<193$gWMFvIS=jPK59sk9r-*4PW zoW6fQWE|iVI-7<*zyKLU_;$KYm#Clf`h4g_;D3RXyO1gTPrRC?+YL zk{mZ`;Mj3ucxg+7gVfZJG(R~5fBePqBn|l;967f)*Rutg+u_Knx1{FwanwUDIkDds z)w9CI+1s-sI!D^4st}BB#szOaTY~TMln-8IxFR}mHhGH^I!k-=SPR1&1X-(Kk{NPV9en4QN}fD_;JJo;iF`=uf>s#gZ!FM#zs|h`_2I}BK$o%- z5}R=SD-Dk0lQAD!^52W}Y{sLPuZ`p&1O+YA0X;n%@1mQ?+Pv_i<&8 z$Mg5Yvc|8E$g17$jTUqGgTr|{caW0|ulQA){A})^yQZqTTBKbFbtHh4**$Sq5}R<8 zTuEiUg>+gjqpGjC5-aR=3O2AqZ;iJ=a zD_M>Wv~4Q|a`sZG49zMR28U;2Fs&ZRwVa?g&EwYt5@vG4Sga>*wX@x@&0*4ZcJS(; z(5M_`tH(w4JzT9=X`*IYyOq1U#UMuT;`Xj4Xm5ryPQvDFO;;kNXVs72d6U7a4}9>C z|F$)h#III!XS9J&4iApr9UQ#<>eqk&{LQzu%-heu%`}wq%kRH>TcWohiC9a9%!}V; zD`&>A((oJj%s|BR8uIB7Cw7NVR~z3z6psDjZVk^rUEV;}D<04f2oa%1Vc|?h0l3@1E1lkD1ve)Q9>mr(({*v!n?yuFCeQ-Vh@Te0osE-nMN*a$L3*TVK@8fm)ija zPLq*E!v`_s3_kumk`50MfOKfbo2FFh^+TjpOH4jBX0;88v2-9KuuFsAvI+Aq&$7K-?uX;j{VbPvSFl%w=|;L2o^{zPtPQzI*ts1+ZX| z_QS=ERg=oWd*aaT8s}SpVFjEF=LaPlC@jx)ThS;17EaAUcjTEpU7K7UmLh-rSnyZuGYKThh;Qh z@_e!(kLdMIplyDPwP8{n5>9Xu%X=R^f7YM{{Oa?6u2z2c{PpG8=LeaCFMspp7caj1 z&wuw{U!9*9&%b|lS*(_jvAb0!aRvE8vAB$rqieK#G3Q;oE}>`O2!uT(K(H}w8P&H1 zaqoxM=)|dltAPYq_aR9toiRR0^jTK^&2yz|0r286TFzAsCN$$dhu5kmX-;nt0#~3V zTNooZJ;}&QQPRSYau7^S>;nT(6U0n z;hA5*H&`WVa=lFziWv4jrjlUM_491SABrOXhv^_V4y(_~ zF}MoO_0q>%y8R6KopD%$%JNfKAikKVp1 zvJ)PS<@W8>oSQ}S=tPji-gW=o+4&2!->r7!)e0wXMJxVSptQ4eINJ_Q zp|tt8d#FO!v<(A)(hbz`X53jUX`LmUecCwAHAOu;RfZ$I^x})}zk7ak{8gq_Jb&}{ z>EX*S4!{2G-~Yqc|M=zEix=nhS~1@!9G{;YpX8psQ5UJLTeS=+RC05MS$ay_j7W{l z`y^$0guY>%*r()GFIQY?*s^d0I@FwK#&CY-RXOHL}cWi)m=T3jY*m@9q0n2 zThO5{LbsuZT}NeI)mahlB=G;=_rA|FR;w?9yZOWp9^Owq51#14HQ4)2L$laXiX~1` z^F5c8G+f}A=xQaQPSzEqmLqSMcC8(T^X28tGCfmeMHF{>SJ$@}HGurf$LqA$+pGhj zD8NLz!y0nEj_Mrz5?aM;wQ9j3>5NyFDmX*iRn4R~#SzU&qkhUoR8o|%ojvaiOvFba zwLck!k(2Otgoz&x?^cG{th4!R+m^*-uU*&hH(I+7!(hgb*GsoEJXG%32IB}0*NJXs z-sWb+3a7t%{P_0qDz?CWrrRZFM0SJ6Xy~VFx0=fwefCW@^QX^FTjg*6^6l4OeDTH8 zr%(U%yMOb$uU}*vo}M{-{qmw-DP&)K{c44+i8vN&JBx8^AY^jYU^w(qLI4&d3<2EX zZonX(Ea^CI93P#ZoE}vqd(P2t-jyb^1i7-`)hf-(sQ^XMiXy|?YK7O9l-otRcJuUR@i*9pP{aYz-8}E-K)v9-W_hW5zC>a5b?Z=J)-^ zi8TnqCbCG7RkQCtvNa0zd@g_7VR$}NrW*}OO3fV)f#lM|N_&RApdDuQx1*C97vtNz z+0~uVq}Dg@L1tar)7$qyJoE|8%lp4>dzmVI+GGKVS1vRuRF0{$Ec>Hv+C{75CgzKZ z9%VmIf8Ja>{*E`Ky4b0_t#d+nGkBHrnHje-#qx=@86dD4rj90SI$ZM0UXMsTjcPD` zJG(K^&fDE~J)Nglas0!Nu7RX!e|x(F)+x*$OG%n2EyLD~GXi&EWSpO0eDT$bQvUqw zZ*wPKe)8#GzW(gXCtrX1$4@`~^ob5oz%HLW&z6d$TRtiEb~BDO6lMc{L@WWBG6rLi z+*+H?a+J8VMFCwhhJn-HH5z%jagnRQpx~7H@L{U;w&bV>Xxs8qrv;&d&4ghO7olqO zMhD)yT&AJXwP4RUEYZOiRKNrb0QOw1S;51YN9!`@L^=xNo|LQxj?JfF>SSN`tk-!A zC!^C{>i_BsM{8?`qGzsJB&>al` z+>8cbE&8_$r%!YXEiW(4$)O(DH=?L+2Z~`Wujg%J&51oQ#=9j80=IbqV?yXSlc=dD zDR*vkW|OI};N8T$-f3wzfp-`r;^p^D0g#VQQ9guzhjhVsGmTPK4pfk-)QIw6KX3oT z^FeZ4-uB$NxJ~OY|>L8l5W%G6!OI0kfyW2+7F`<^i6`8 zHg}MSNw+OkGJ@Gr9CsA&Z$~%thu^M$xLe;WCM?QQtwfI{@Y-kfLd_-fTP)C3?oE`o z6JNvb@yc5JJk$K}7H&pcQ;SvIY%rt)_hkdEb8FUhpH%tfj<(a)$4Vo4JD=S~dH|_C z=?LyDvE0o=ZxGnitH*tuHcu+)0B@y~Z-m$X`+xRpcMk(z>fHl(Cc?tG1T<=a$s=aboH$*X!o3c00FjK3Xg-A$~~*ks?Qx9W;* zbURfofL_#q0&lLi;c7J;_0$GQcGMp<6c`^+nGe5zyIo)1?XZ*g9Jy^P8c%aZvK^#; ztGm0aJ#~TYr1eZ5(FUe;Hweaa0nh=)jN?+X;%wk|1lZgpnCE?1s#h=t5Jr1bF1Ocf z7~S4*zd&0Qjic`J5?P{H5v%!pwq?7Dx&4>N#a$z~yLtzg<`z_a0t&w2p^N3y%uD2^0wf5>w4bG34X*+VI+>q4aeQfRS z_V@RXTxF~U=H%3eqXBxu2!?h@b&%Ny8Q{$o!$nCUHP>&RbxY> zT^$QT+}-loQ(WixMa$vz7!T}jI>34%@u}j>FkYcwNr0q4;~!%EO`uQ@;iJK9=we!E zwClwN8uX)kzIIweeLzpcmmBr}#pC)a5T7a-c*_tB+^m1w)7nO>;oOSZbVog-EDUArZuWAPlan3rU~=H5m_J1I~@^f)w0hyJoGrl=IP#!f>D3!zNy!$R?SvVyRkvIo-{+?dx;dD1U~6H==xKr8c6WEF zSSx|kP8gpAo$+q^_;aeixmeyOtJ|ynZ0Oe8NI`clN4)v<`;Q-PA>0h+@2>8DnE94j zF5rUeEqmL0e2<`|#L8Kbhu+j(hE0PATQjdr96VcWmO$2xff$o}SZ#RBkO-bpbPLl< zGy<%av=G$f04Css>j1LBW$cZ9`rG%{3A!QT9G6{x2-5K^=O;x`hFK3$dpee}AK8P^ za43-9Zc;pIallcGUnpyje23QYoWlygzUj=ddNK)k;n{hOvdZrExBc;Rm7ethF?9W3 zey-(J93H%?kvo7Wk&ETe>*Je6ym{ctxgEUS+h{Cw1KEiILo#=Keo}OwzobFXr2r_? z|3=o@dS>6GCNGG@9nO)qyVk(zt|#N!?YrwyS8kZiaC`mZ9EegB3*BEfT?%^YYDj=Q zQUYem;c6DN6hqf#hU|?~v0+077hg5T0HNR+nOt=ti8r!ef0+}BuwmJv}NB^ZWPnZi1zCjjCgiXx@qyR-h^4kBNN+>tYIAzVh@7&3p0YO@;7P4-Bp6b3uUH zUTClTPn{rJQXnHjXoe!sWOsD4-~4oCf|`f|yhN_*g-Yq-Yx(UysTDKNj*Ve3fOD{Z z_+fA+=*_y31bFiLqrq~}cy(<1i_mNi9`<)1uNK!g^YjK9`ytof&gBbv#T*9D%c4Ds z%;6~A&!|*Y0lQ76^a|K*29y1i(R4!e=l~^V=!=y_QXX>>p%IUXs_g3k6N*dNnt{-MB`I6xVgZ7fI zOg!jXmIoHtY6kIiG2?&$UyuU19>eIS*mgih4Y@c zqN0&<;GQow;~rMNh05#NRr=R+P{6NWce{k(dMF7~qr#O($bbFjyhC(-_pqO!`?hDX z`1_Zmq{(xcy$KakXSwtu)MzWfK(%a*u zLfVUbE(u}q%X5-nP>u?X2D2T1P7jiFv&q5B@;7^5q@f>AZ*JD3@oIH*iSk&r#$B0Y zVc%_3+niWA!a)=6jCueh5a${V4^%HJJQZIv1vzg-3_GHkKBB3p6^qgJ&7GsB?O-rj z&m#T+e3i+t?-t=8ne1k(o9TS&6wBb9$h7x(D7qR3JBR2OCbz-;<<FSLi7M9huh8rluNjV`?L8hY@H468#&phW+ZbE zA;)d#re4gKXzd#v+lDvxcGbs1v!oiye~e|`V<=ZDAle|=BD zl{eR@@LZ~Spt2hJtOtLO4`QumvN#f3P;5NP8vrf4CecFQ?En~z2`LyBUlg}L=Fj;! zL2N&t_&oZ_)3Q~j=^E)Yqmlc`LRT8y{qy~WyqNlGOW|9~H!gxuF<$NyyCsEMvBQO- zSw?+K(Gr1yB+UAQH3CIyP6ySwro$u)aoY7qDYm$9{lookLpEQ2b3yUxdg+ZNhDUM2 zVU9y9^(Te|!Gcs7eu1$+e7g{}WCMN@GEz+AfU;TBA{oROi>6^*tS0v}JHBK{Yc3zA zBxbM4O=0EeTL8RC|6H!FHl=)Xe7%Ux`<=7DyPG#V8$~btzVz{O_g$LtpL}(HRn7Tu z>N>eoiK>R>j^@i$tY*F}ZHU1mkq-O~mFQAS7UX8}n^(qYG*OVG6u)Zre*S;b3%x%% zej|^74$&ZkU+1>u@a>aTsIQ{R=H3C3K4OVCbX1dGW6)~4Bi^nt_nUaV zyZ@CO9%2Skp+*mBDYwc(dHt44Jf5s%5K`2iFDP9|@wn?s+yeuP#jNW`6g7a|aUv@f zTX+zIMu#W>BS$cn%ig)giH)@vh9)_yA{``r?$M^?>oJd(@2?ZS$m@~r%_(_A_S+@F zRU5b9GK7UO514T!o0Kdws8nrmzp}L68p!r&KDtVBz{Q~=flQyy-o9OrtyY6%`*Z`( zjdgM0FuC1cEoZ~j)xCi~ckFN=snEr_`tJt}WP7QRKYsqDAbs)WXHWOnLnHs$(TV*1 zrdS9lIH|d+HMw0_9TkXMqn-QwjWgLTmmx-#o(ZIbgIg_A`}SEChq2!&pVr@e;cvb- zUp{F->`78MnM7B5J(gtzWM?TygsT;Zjr(oCbGU9r(O{(7*OyZ+Gim0t-cRk)`ol;B z9s2fRpSEkw*ZATFXN*$!e(b*ep% zh-&cTp;t8APC(vT(Q0gazz*o2B$3h-)r0%>5d2=yFTS~5&cKxnxg3lK$^32?YsItO zhw*m1TwbEqOcSqfRBHOwQX_a?Z;5`tkCkWB71~yxA@@Yln`JSGc*OUH*Z21~tE`W8 zAYNaa64DU{C*$erdXX5S9P^OjS*}B6vs`D>U#!gb<$SSHPn_1%x>CRR{6GF#tG>+V zo;`IxY}1xH*ldMXZ#dagS+v^*BA_m<%l_kz4Y`wgD*6<+Qpi-QpMF-Ur~tEyU!Awa zH&0$=iWkq1@}22sp{KoMO<&B8mH|jhv99_KQ>^Rt{JXcKmVQ81Xw$#m%$lgCpuc3%x)qkf;gmS239LFwcdQZe7s@eVvTQaWBxBpqT_D$%uiN# z%l-B0g%;BapIt#}U0&bbOcyjTMtt4KDpdZaAIW4+m35qi7jwOiwi$TJDbz_`W9VaWqQp%XMQOR!-}z2~JA} z8>rfAO|?=ub(w{%itJ&qPORb7E}l7%$y4_As|86$O>*Wi$z7@{U5@2r z1dtAUrznELFrKX-udT_w4LM-Uru+N#1X}9iaTP-QFi%faob3JO&8U+w^`wwBh~n9N zb@ldklt#;eVkISF$dDj6eFBe!_q_cr(Xsua4S{RB9k#8}bj1I%%S!+=%ru>>O`+XT zkg2ZLSBp6N#?+I$;b3{WXGFV(Ue1%P+cB%BHKQrE*{bzg^gv#GQuXgg31c9vZak9H zi`QpOm(G4slWMNIsM?>aSAAh?V z)s&APKg=cb-K;=YN*mjPd-jjVdSrb+%<6rXzeHG@1_BMjFEpdL3JhV`+u&>!RS;AI zivgkID)p;eLFv>hjx7$^2cbe*Z+7!!wPdoqaFy=(K$SVfQT=vPB|Ewpg0<@+KV`=W zmKs=2lBgc7>%;z#=Cp>si{J}$&Ouj|I{=_O@~frR@~~MR&bC*9F#?&oMLz8k?&B+b zIkEdvbG+gv64KR3FW>D)yhsMin;V0$uW?!)F$xE9GZ^x&>8A7E>f?|K5T0pKA51;!x2&DIVp&iR{>GFa#bBhF8n7KI*H-{J^7+KV25S?EUTM ztF$|L9Cs!uv8Imw`aeCZg_fA?`y~D}BjgY+)f!MsX5%3k1)VMxCvK^uws}>7dODyy zJ4(ITlr+qA=*qTNvu@?I#q58Qu-}!D3?eBL7 zojal04SW!exc@va)Kj4R)q=it>Q2U3#CnmRn?1VuAvHav)F?E1k$!gU)hqUO^0YnD z*o1-9vnJ~egp=c@ui8l(6`6F0)L+~-8im-hn@v*n>-!%*jCsFkc{3U)(f9PMcXuCe zzx#0Yw_k2J8bmdFDwR);SnA7594BPKm1^YxD35eM+3rx~psGY-FEaA)pq8X$RL>k$ zRdi%f=?lerxh3j~n>I>frBExWC^zE%Vw|E#T@072`GDIw4@Q;H^{$IHiI)e{23-){ zfbfEef8}6U;y5=MSUm^<2Lq7X-)=|U)+-^oyCqZDkSYS{$gUjPkbOjk;)z}v|MD2C z(yL?Y8=LFhUaz`x(iiJ*p47E6dvNljt9KY(1Gy+Q>dQ+|T|*{`qwV_{6atBM?(P<) z-K%;+P*hCE>D%x4MY88hnI#$Ze3`kt!YH}eqVLeZy6wC6#a~{LYh6tDzg%5@lwX?% zDBR6*#5?}>X5t0QDP`?L`W7GMd^yJ1yARPXz$2f$Cu=6Ze3j2OyDRx0PJfv{JuVJj ztbQxDyAN-_-^_P|?)-6+JyOlZD*Nf5OL7YV13b19)~BG0B&lkD`2O*yJBTF2)z*4p ze0_hj^n!;EAExn7zs~y)595T4r*n>p+-mih3gN+(DhwXMv!b}_&)uf!E7Bp_)ub#A z8MIa}OZ6Og2G~>e*QIi++pnG%8*Z~8)VXasUKBQ=2=eaR@Ozx!fM)`y+S3IZ+02A# zQ9*Ygu4AjRMvYWY95x$F5_&O~7fd}wJc7Y$H|+&YWiy=tgG$^+*6F2_(B=p{B%Pda zu?*k-suxRAMH&!LP26_%P?>}6eDu3NJc~9%v5>Q`ZW2G5->+J-4SpFeo?2(+bbXDS zD=%Vcznk}U33*T!>cH|5(I?q-%Iloi1NBXrKc>(SL=}j%++W!BaM+f3V$LV48~=0r zw`MN7ICuIhWg=lbZff(#>)$+U&1$E660?voA}jN z@y-!WPv2BcuOhD=uCFKsZ5R6=7HUSi+?N0RCa0u*rD~#dA~)Nv8&E1c(@RX!@d*FR z!^e7a+_!OUUEflV?}r90J!^O~LfdU1i){&%dMt+wYQESCAXjt9hzA|Zr+-^KuSoTp zQ0^FNt5y~-s-A1Mnr%5tqGjk_T+~bF7qX~$UB{%fQWG^esKJsSaqPL=BkPoy+8p)i zl6YnXb7}{yu+Q~{>0V%=&#?|>J1!VN#jsO)y?M_aZ?pudO1IyUfY{mAn0|&UrvsKU z29?l=t&d`Ij>TmW)bihEh0y%-r=8{(|Lz~otSzRu*}Fq)FueJIVIn!gc zu0Q;^PtNm;>tu&xP?wGy7}@)m*9p6XZVG644hE|5y42#6kq`=-5~l5TE9d4|XwQ8- z**{4C_IH^^!us31bfs-G|I5QN>Fho%U3V4}!yGxwJB*t6oKa$wyH!o9oId;NS-!3I z-$$9M=Dqp$=DX(EtE%XYIxo*gSNj!@!PWhTw}a^ZakGhYpDX+Moa!C85N^J!#ntVq zH<&Nu_HZ@ZZm%ClG!6u1IoW-;n=?^|Um{kj@%>%sj&zz7<&4y98Er9BQ=9HI?RBJh zfW(K>P3!brKJ*O>#MYW;?OImB4`zD2Es1P65`JH+)>2AFbhu@N%~HolTu)2YbbYPX z)+)8ukmg2&)1ZySj2@y~ZFSo0N)AF$bYqx+)Q(yOm5nMSBnp?ZWuF7%Hl^}u_4rL8 zcUIt}IUUE>I|6ey10_n}eP;l@bv$2;I;C<>uKnG=|LXkw=*d~;b#gs__~|$61lYko zX^Q9PIFDs^M)<%!{P^L+s{Fe5?$>>&glp{r5zf%n7yGqO#rNtm;zRG1o}4=A5We4F zbCptJP#pPLjVSXXPM1mbkH33eIewEd3t!jfKkQ!=?r)%`ESGwrOck>eua*Pw(p7S1 z*x|I|v%~Z5i%(1bES)|^B~9%Q8+JFF$u`Z3^>Frwr{W>2`>Gb$T_nTkh4!mf43zF& z5?$UK75Gvi5tM#%IU~*1Uv#JY-Oj3&WozR09>2dGL}MIK?bD{aoy#6?e_d&2%Y~-Z zI)2)!X5v|zy2?1p3m9%hON8zsRg0x!xh9syI(X0tc5*-H2#!*$R~p`wM|UY2K!1Ys zoM{^(wGWpBwb2!umgXzulrH*gN1}DdGBWK`LNn!HUE$Q_(i@|;KO#@ z+)n3ro9HYXOz-+f{AQgluyz}N>Uw_r^Sj&So9FukXp+-%7q>75c;MiWt_x2piy9})J5?`wbX;NP32%2+LSYlu7hN&Pz{~v z=XSP-tq3clDan#E>568L08U2*Zia4QYnM@#SZK|H+qM7K+saOrR?na{&K(IOrjN8qV)L_$KS!T>kQT zDObVQD`>)CP^)8fHUN8z7o}FMjWur?bb{f8KF?4Im$@@Pm)-nuTWR12D-;ak7vl*; zRklLNh2mxoSfnEdo%(PISAbQbL1&E(G;yJg^qP#VAs)RfwtC~jS1)Vj7yl`jFf=R3 zwbxIx<>T^ncX>I7WzIgbcl4>aTmgf>+6;8@^jSfYVbyN>ijIecC1gWxG$3`5)8eb|jNS31k=Ko@vgm(oAFa@#j5+$!?JeiF2U*4U{TLpngXqy9itth&kqGL)W4NBZ!M= zhnX$#YD+dtmF{No81b+>`{WP*?jQd6HR^0#wT6i|SP>oomiTb<0AQGZ)P9Tdq4vDo zMh(6f3#ty|t=UX`p;$HKX8q}r-&5%@sHM?0SA6gTS1Vf||MW1KYb3Yb=XwN!ooY3h z-`;o?V`tTg`Fpi$MVU^me1lb>7OyVp!!IVIMaU*LvD8YfRtcxp@t3Vm`Pr!p4JDVs zNmwm56~fhrYS3>>MH2u1cjvSmCh5&R>s3{=JE$Je94ga!>t$135+iy4>vw7I;T|s? z5sLxxfYFS!HWotH7Mb~D?^WC2CWsyHNZfzCZxnVvFMCd<=~QbheB9ySJ4PhR<&p}+ zzbYJQ8M2fD^r;WS>LCOXJI#xn5^dM1(-I1GQ!CN)?q+gL9xIKi$Zk0+OXq0Qvo$t? zlGi1L!N8k*IWIsfV&R5Qh`!YzWe82G216K$y1~2q=>eypRHVa$RKv$^U0dNpEb<2D+6oAw|MsLAD$hbd5iTrkqo^#nQVUCjZ&}fy#IctcS*mPrSAKf z$}*3JkR4!mJ*SbPcmvL$0P_eVCzCBN;;BE__uz$eO0p@6YPtC3KOR?dXFq=!k(ST# z?qLD!s^L27OTYeq*1!KB|NS3cU7#f#Cxm}uoT=nLs2QLuS@2&cpKIA`#8eOOKW^tY zz1%6g@A3NjYE8v9447+AP}R`Qg;wT_-~Dj4ySgSpdGpVYd@ovM`Z4uV$F956rSoNZ zQ1)AJbf}!hX5dw%giLh7QVNY$(>F6&-$#JW+O;4w zN^;P~XD=6#h0nSXu}h7+gen?XyxsI+KO9E~z%YShf4F`4aC`Or51}m;Z9_oR+ok`Y zO0e~$TCLT9)K4d(-N?6-}MV4m&6r3IB8GX<>LuJypiZ0g$@egJhwdN%T1V)Hj5R=K8YW=_j8Yy?&O}=DS2ZKFMQ5yR+J>$AQhwW-z*Y zm>UD$jXt$(@(q4}k*LJ+4R5@PItCsQ<_7k-8*RtyxVIjv#cYAbUEgY)o&Eiv>I0$5 zjU|CcE5o~Tot_-@D_(y8f1Uhy|M8RHItoX4%jz}G*@{?ITd{#JgME8{8)%ht1_Lp9e=z*?v&ovWN!3ED_Xfle{Au4!sQeV2@Z460d{IRW}(u^mB1j|jfx5ZBvcv| zdJm*cocM77E09+$=9r;xo4pBl80ZL`-!_YZTP4t=nHXMu08E4QZULI5)=w4DGzPn| zmv~~SpEw1d-_@T z+Nif=$+KNdAKhZEP*xJJRBu!o_3Q<(wsWcW_1CQwrinex7!in_ zgZ*)uk|&p1?N2{_dRAVDC z0k70g#(#eCxFbYsoXlh)ra}Ma{S+U1RLknY@v$T;W_Gi~S*VI$-@Z6~ zc<^f{c{0Fat)j@qC$ECRS$Qb^{a>uE(Ay0H(-MkpGuBAPFmPXuM}3eC$q+l^@^ZI6 zlt#Em%a+S9pC>=pXdo|b%oXd~umj5fYCsd?atxYOyeMcvABI^(b1nrI3wx!fV8o* zJPk5#tJY|rWyNBH*QTxxBBhWiNiu|N=3CT>1hK^h9Hmc75-(JL{r+-2rGk!9a(BtT z6a^Vy8h{_v{`#RHCd+x)6k2)BYcP)`V=Y2>WHt+MR13oe6ivxe>Ox17yzoHd>R6Kr z!4<;)dc0wreh^LgPUXwi)LL9cHC&?>4nVIbXGLI@xq9=Wz+1*>Tt^q>WQqE3-8oNg z?(J{BD8kLFn44k!1^-_qz4_#*+9bGPnzXx$-mPuK@E;>Mb-k3@u$@dpnJqq~Nbvs) zgk@lKq*k_K;At$JR72`s>$G8w*Q58Wa$Qg(rc~89Ujif#*4ya_pF%n(z3bnZjRPMdBy0?M48#nO+VIW@5FVo9_^5Z2?D_q(OlFJvE?t6uz>$ zo%P3GMks&iNX#C>)o&5xjosa1g3{M9_h6RQO0pnr8*P)+awfe{PQU-_-@gCeiPTyG z38z*npNSk1Sn|@C8n{li==tTQbkWc(uJje5g$k)f_PkQm<=z(NJyDYWc(opQD!gP1 ze7o9$012dTWXtA(MP%^6Zm6hw1QS#>bvVIL@~TTQBj!umY%t7Bra<{^A-rF^uky`& z1W4e)Pa+uA8ydb3MGCE?2BpdMij?uHECJ)}|1BW8~@44u~ru zypFg)A$J<)^W#mYWUtIZ+X-w#l>}+A4D=T8O529aoq`xcLO+~e!qwmd3b&d z%{(p&kfQg)QogRZomNvjwA5kF?rwXN1*PHD17c6#^Y?E>M0fBZ?O zb&==h`6V)yud`|f^of9=~7sp><;UhR|N^(Js`e){41x5rSg zxwQKoU1}p)av)Lp9I^1^fO@JX7WjYgCxbWty z^S12Rm2$w8HaIEUy<~88i_?!F6A5~lkcGtXRUoC1A0+7oE zq2PdJwH!rKhIQv;?81LO5tlP?s=2Rce=B{Xk3>M_C2!pmD`-F@udNKZ>A8j1xkksg z2xHbA;7K=dj;0KwpgFk;E|*3QwrR60Z`Lvf%mt82BAI>kTFZxrD+;mGt4-{bKgk+( z{+CQs(gxcPy;l|2(Hf$fE3joiRT$ol^2&!_9zku*I^Q<=ix)1$?f0|M?s`M;`EqFG z%SOodLqjmEK05+|!fcFR4J?K*US56pX+^k}NK0J1$Ol zcAbeFzbevNzDq6(#{vX1P7gBvB+!Avg}jXD194pP7^)xcT!4Fx^6}A8_Ja3mY*jk^ z{HKCOLwa@p(;mXLVCgMP%_CQL4QuRZeNCY4)AY4cwU5+jFsl8fxt`DZbbgZFpy4Gl zt^Do(`(KBA^_a0kampx8EWZrqCyn)LxVY+`jDHQksoE_5d{PgX*>wwO-24iZ1VGnd zPA(QwR)WKi(FoZIG#HsIr?&I6hLlbg+dfD^=1~c@MQ!l@=Q-@x0n**GV94jB(&P*= zUElRG=W(1n7fXT=1lVSZ$>p$8UfUEl}O=d&u>|d*W2dh(~OwDYNf4vxOTG z5NV#pXs*$WH5$!AMn3)HYXr)qHIo?mf_T}b6xUdSZ>)XmMZKlp=K=IWpU`0#-7L&v zA-2y1Q!*l})y#gCf0%Z(?5PyoZ1E`#YnjYf&kNb-na-|X{zQO8(2p1I-VM2{wWV@N zX_j2}2$oecX_nFTn!bC7NO?FK_7?*k#4Stq-Stg0xK^vx7l_CdvukO~AxHwXrSnE) zAV2MP`^kWbF{1j-ZcjE9ew!p{&8o^%O>IlTC8*g&y6oWw8}&z%6k>tVVZD@e+CrN? zwc!aoN;Fx~5bvTmv8Z-B)^N~3-EGK5>aau(9D$mFXANf@f_16@R-;%H4X;(HV#vwW zF_GyFJv0QEj^Orj?i?1C5;3u!(g}&#QvS}K&7xW-+0Cuq90l;ijPBJkGqvF=>5L4x zkd3Txc;TJqW#|{-?eMsYf8n%ID_6C4-k!(XdAf#n;#+-&u@OK}Bi7Zx#xraLv_iF7 z_?=bl-i`|XicgQ)5rVX5%TC-elg;CM>YWLc<-*B%L6#l=daG5kh3?&Um+U{xPA+O% zqtU1}YF6p2+01t5-9o4NvRIGr@1t;>d0jlNR|^+!GVS`SSH=WGi8}mcL)F2k9{=$v zE7!%OTGP)@02GoJLU}gjMC;l0dUv8oz_MtoWaQnRGjF|EDHK&)*2;3MxFJ{>qu9cU zgDehH-vl??j1MSv?4e^ena&A}&!MMrg=hYT%!su6V9azdVcRbg*J+~+^$0zhyyivS z3=`oOs6hbPM_v5wTvNuB=*)?OO~@|FE8LUd(FVh6cJRw&pFT491A9` z#ktScsxkV*X@9Zh7S)EOP11iFV-HOinfAx)F&qWIQZM9!cQ<5)6>nEw{J;vRTdie} zKmTK%iB+r8Ov!F~-kVoQbKRCXNJHQ|J%T*_>9!wqJ*iOFhXZA}Az2YHcj~d$QEDUQ*4UBn!3>dT(xLW|lYr^yU>i!gp98I6n<~49$S18<9|k!7fG##i z+fl@N-L(Z{F~g_nYh5rJE{#dfhWz0qQ#kwTPse>OpjDw$e||>C+_I~-Z}5|0D&EQh zQ$<0r{pH=qJKUyta_9ZgWv4yk6V%&pQZ84UpH}T^W%xE_$1e>oSEH+U>39?|p)^`& zZKw9lD@F4N97dg5scG`!H=?vB`2KLSPyH@68Kyt{ZW#oJi^W0XL9_)Z6faeesR(O^ z@lqWQO{d>4*}NIMlhBHNpy8n``eXg&Yo(Wh`my?x`!TCS>D|8oQS3Ghx7lgG`26oq zypD~_P}!h}+chAmVK6%#DOCZKIbvB)EkXw^D3G~g> z;ZY=ZSnYPl#3)dlu6TxA?)n@}xx1oRR9cbKcA4+wtBDW7nFB3Ww|+VtK|<9#Aj;}a zz)->%P!uJ5WqCp!__M8*n@7h&smve}PBf41ZsI4fI)RlY+ql@`uFCMtMpt5T5Yhtf zlOB*ftF7X`Hhd!CG+sdsIfR64MQEOX_W5647gcnAZBsrkEFSD=3&sh?nWi{GK>=Yf zpYOJthuJXfjhFWyHK)mo@4!J24U#M(mGddo&LH-S;1pM&apa zZ(16k>BZP+7pmgRstdn9q;R-nVB@eyQhdMB;X^aI2C+My4!0D3IP?Weq{tS_=)AU{ z${P9%@yO(e(}|pNi-YDCg{dVAQ?m@{aZhT-l z(z%C**{I*&NcGVi6L4HVrE^5p=4v-}?CC)5mK&8^IU!W+lBk`;cEt70qW-H>;+n)r zrKaN*i+baL4TC!_Acf4o{-W9!7}e6f9)9nqy9!l11 z_-V+c16UZv7J0V)a>+;Ha_#=SK8%p5rc*B85tc-Vd%O3V z`nXrJm0Gn~uD8oM3D%fWE4FCxYy%Lc&^Dplc8AE^$y%GQq&T`R#0QzM9XyDp{=HXc}c9bCl)5kW5*I0MQEu<94w)x`o<0iG^=GYIiV%*y&2? z8h!vFwdHJK6aJXrIw~3GuI+8Fp_qW6>rcmO$-v@1MrXm#!ILRGhpy2hNSk&y!Fi>t z<;qP+Va%SiWMHw#DpecVvn)=^p~ok+RN%8K$xvA_Y?~aey_+>d{OHi+8qKb|FU{EU zg0LpMyR@{->+Hq(*ZJD9>>+5ghyDq}WTmXw2Ph46(Qr91hs(v){bO`t52Jo(vau0< zMds{>#|7K<IesT|ndf<>+KCwRnhe*t>oL$VYn7(fg_vd!z{_#_52F4MYpWfu`fcvW zwNehEdF=#i*I7~S)S^kNRW3_993rLOD3k!!;bCe@G|g@U;xZfBtJgd5&)2v6RX0Q? z+Nk>7$#TT@*XGA3pH;z-9%h5+(-zy=6l+t*i@aXgyvQC`J(%?KcT-iW8Yx4T33)dH zow&1B-8KdBvOO_G}<;>+a6_n8eG}^<} zdo&sR%vIL6s34SP-SRo2jizD6T}cRZn?ZEgn#b~#DNZVL(l-~@cl zayxTUXKdHO3XhC_j#RPUlyW({T{%53W(9w`@S%R|eaedXWqPa4l#p6zD&>nJm&iF% zoY);KVbo%2CQ)=!JR)>>zW@r+HR}z&&N^X+v*OTePwxXdI!>rgFHIrnfaFeGxBP~} z&~!mieD!dGQyR(EC9T)JrkbU{4>P(h<9smi#vAKOQ<*!2*(Sse| zJpbyf`ua((s<)9Un!?dpqpAsP4D?=K_^-#Xo_4T0Eo*_6zsO>rU~%5wsca_4}&%ZnY&>32p9(ZbuIoQsa!x? z;MUJDcG>gM{Ax(VRVia@mx{%6ZJIi5L16=dPSpvd7URd>st0Vj1)Cs4BP^xLK&GiJ zbyvH~8^3;Ze5%lspVC{UBG>5eXCvYC;+ZssPhjPBLP83d`vWu7r_DdTbYZ!qI z`Ea?vdiQpZGq3*ojh4_M;&w|<7hc5_DX*o)qt(rB9zr(8-7uXf{YW8Ri-U?`knpPE z*6WdYp0`ca;c0^uS}dJEDU7P8`JwtJcOM1!cPc~bc4Cyc&!=I}8;k*QJBD5@on`BY ztYw#TlHMQl66$%HPgrL<^BZ{~;i)j>iXLHstUY<&|K;s&|2Plb5RTkpp4tl9lDpZ6 zR@I))FZ28~YLo;nDv_Db0}<(zYIUJq${uH$R$nWYt94knH*Q01v4&z3sl$PC9ohuR zd@{DAXDL+LL>__&&r-?r82|S5 zU$H*XhO@W_Y0bOmDK>w5dux}3qt0M+e?T3e9XH4vp>Cee@O|C9XICG0iRhpn>xTRQ zLabZNEcgM%K%_>ju&EA44(_jOptZZzpncFJ$wK(!Tgt-@QkjTdKY?cBtb_|3BSwwy zmL=Eah9TR<@1iHm~WEfrKn(V8ra3D*Xo%&Lz z0e2z}8%HIfX;&S-5R7vLl_Q<|w$4ALJJOoOraM7c@3d-lBA9R>XCXOib-cht!9Btl z#qnmhy?Vdf-O)d5$?Y}-7dtAQLnev)b1M69Z(+eMX~%W&%Ef~O1S1ux1aK3dfN4w* zk_*Imh?hQ^%y>x={RMFm%e6)o0ZKfHQ9o<)W*!ky4i)cmsA!RSTIgY>;4L9Hb0q;2 zT>Iikji{#kQd3U%YuArUZ@{-~*Q2yEaU-!m{6`@Ks`_q9^*7XZ1 ze^C)wV2EnFrFb2Z9~g)RiBjeM*r-UJukz@{-#LtW9>C&_6_eyF>ijNjLG+LGoB#0#Zuq6=+EOk6@j2c-^w zU$4`d^wmrmt^|9fiXhemvr_NWXoySIc3zO(uw&9l4Z0O=PJfY+K1*@MT<+e#d%WMj z{o#H;&U|v3d;R?Uy!34jdnLcebeW6cH~Q}KK}-+K)l^e z06+451eZ0jP|l<9VY$sjsS|e!H7w`+?6-i-meX zMg6GYu-dlanCs_Hk!4U|gQwtIG)?P)TbN#wmPZ^OPr_1ea7~Jum{X}>0Y?N)I+?6) z$ycww+fyYDdR4Xg)x*haP3ACP24`u_cE*W;$sIhP%(nt9~WvxNfC=4x0DVsOu zvvZp+eSaNUTBB9HxX8bLRpdl#kj^3!qBES0hIU!k4mU+iXbZ6kt$@|#VtfDo?XN#1 znTFwOsMm3Ejc+bTLmvUcY0&|4(Sd@qStJSRK}>(JVh@O(q1_$KwqrJhV0y6I9lo1e z)tiE*K)%OyUkhe-t4Tgh8}=it5zF8ZU-A3u`B^=%21#2x*KRib`DJi^aq{Lxevp3> zC9SH8gyjNeCA$oU@P^VZWRK3gro5RvejxpChCN^^YuagLH9V;;b3k1IkK+mH_j~2! zw|7HsmE*K;me7J|A#ivLFan3iZp>-DTXpqZRq=TvwyI@^djjnTSs*0YIC)(uo$HJb zHrIpLY9+~py$%jTML^UclLW5{%{GBJXth0j?4|RP$O17)S3?8dfP@35-Bx_YLEcpBd--c=sa49E79x7EI zio`07;CD!ZOb4rWUIQaZWo{Dh_M<46vU&-4pSY^i3+vosI)N>=_{%rX&TF}19e4!6 z^6IhNm|S=8*BsgbfC7L7mK(fhdOCM{-l}Xv8=B1&h$3RQI~a|pk*12rCC!la`k7?A z1-Glt)nl*F*D2znRnPRb|pHL#?UEhFqx$Qukf@|8}P-Yuz6C7K>dhZT;m)Z8G`C66AOR4_)@8j#+7yD~&RnQOHLc zV?%0VU75F^KfmAeYEGl(U?!fwvEHQ@&1Cm}Yemgtv)htvl2!WHH5zRavS1P{cJ{5z zOEG{wlq+!H;P7KFKYTwrDK@g1Qe`oA02JH>lvSb$-Q#{v02|RAkIdN~%t=D!rJB!X z&g&i!BShZgboX&oN9Z_9`EJ<4w{#UOCWi(t(6U&ow`%#CrR#??Dcze6GnCr}*Bfq8 zlF(3;QmI}c`lfk0H`HHT|t&m6fXlyVIxkh9DvF#a5B z;UQB&zuoExXAsEFtY9F&;1kZ2$J9Mj%c7RmXvIDIA3n#>EHwkz@{$z{_q3z<99P1@ z0mw9451>-g*&H(zz!1Srx3?PB+pKI;wt~QrIF`7Qq|^(QSFO;GEroYVR|ZRC3_7RT zZ2s)LcTFKXg~VWW%BZFXz16$*WZ$f5u2^VmPXxCrhP78%qx4bFjC;Wd(HxETODKp| z__#t@8!%kksLK4NBMp`aOmQAX4^+Z~`CCiWYw^ga_uhUt2MN7N$$@IZ=}9GbQtzOc z9mFnn3vl*GITdQALZMKn>!E7(Mx)YH70qpyby})Rnww)hCEsAdS2C~4?T{p&Got@WsKAaFvKYWriw5dx{`ql9YFh|e^umjpz?PHh9GNXFeLWVx zU{M2tf?TcRy1>GyRW9nJ`HfQ5d=O-$+F=km%>qS^W9&+8{haqrF;Td zjuLxZi;((oNT8SqpaB57s!*WEs+~#@_X!z27;Ayd6BuKmQ(JGfA^9o$@&0Hbi8lHu-g~ zpqJzf#TG>yO=G8Sre4KPD&hNIe!bh>ChEj!_HBE{b7TAda=YjPwuuRa9KAZO6q{PD zhR4s2F>tr?O`~#JWptgFwU%_&Jmd=E+0yThm=)m6Vsyf@l6QH+nTBKOphq&iOct^w z4ws=-&5P6PmFx91AL}KkKf*8R;O!=TExwP9&2|#n%=M-K&oge3O8nk_L^D9^lqYWYSS3LEH7T}TOEDwHO{NGcmpVL z#;<4AI?2_zTB+^xlA?Q(p%%^yXMfD~wI>y~@up0K1kC|w(;y=HE)T8)bH-N<(e-$z zm)$G+No}DY*zR~aiCo5e^l(EqzIM>%LDC+$b&XcB#j2RK0s(264}L>NuopGV zs0S&I0jD4bnzq?_mH6%Lnh;Ru;yl`f47X>ln7beks+Sl-HcRa>nGyJct!l6}!o?U^ zQZ%5q-jVdAElxHbg!++KuT_K)ZQB+A2Zt_1-AD@EC_+4!~{!{+51XAa<2+V{KX zPY($SKZMyBZ0Gtdt2oc()lFYs&K3pc=gYb}C|LNFY`uABdOoTULF>G#yO37n*~sR` zR4iDcf_3OLI__bMPiX9-?8jbo;X6cz^s+agNL9u|47~MYl6p zR0op(^ySlo(-K^ko=c#JqgrLa3DRdV^Ui%ag6p>+P&J*WseSfvv%<8pboTf#gD@lx z1_QNTso%c&u8UVLJZ~)M?V5c(Eh#%dqvmWrnXVSF@2nw-4xC|@)@nHDxlu+0+`&dj zZkeY#Y=}jP>^GrDBC4R8W!Z=gYk63TR_qaI@T_`6cJt$Qzk<7IO+&Y5d##H$&F7Lk z7qw4ax6Eu@Oqgf}IZsH}5ijY;n1)M)R_e54T`5O=Gi24%8;#3WC^BiPRO&iEpJ34T zXd_dDowyl(>X6G@%7=Egi{bm6ci2O4cLetQ7=}9pYm}9%{j~qeAlXR4k%kHUc`*+S zoK(gzOWk3)84q=#)2VhHtsBf~&aTF~%fU$1%-dpAF#^+1%eP1=*TDwYqhqx{ zwMLy*y+!AU*_}X|Amjl!u#`%RNsTx2O(=6kh6IsyXfkDr)vGi`WxC6Teco7l7Bq)b zd{f(uJ+<7{VzVanZfgdyp-7?PJ}1c*70&RYyK?#>^OT!6-@KB0ICe&bH9Gwq1EsZ- zlV=-xGQr!;!##pF0(%c~g#c=jONHn5Q`j_Rj>&bAHhzEOB&%8Ju)K*~J%YbH<$)DZ zZizNlxYs(1TQ~4G=vE-gn3dXBSuTmw_=G_1?X`di(y5@2icLefx(F z_Es0dx+1Hu)Uu&EZyUcp4#w;8`Q6Z~y!%FY*KhQx@Rh7Wer&e?_WQwI8)%rjEGw^+ zGHF~!Kc7mktIp%B$lb;9)5=oD+i(zv{Z3n&@_c>##2EPTVV;Khz8oUkNzKk37dyr$kyo+2{Y${+v=R;VC zH$X>pqbr3pwKCV7W?E$*c{!I)bp= z9!-g{+d9A{2%DW&tJAdy0~&+n?l_ej!`L6bZEj*z)Xkee{q3J?eSid{s3!JiT<`V* zvSXf}m!U7RC58)clkSrTWN!x+r!!o`%`4RdiNOiQT^E<{Mk9O9g9)M9ESA>{-=_%G z@KC~VIdN#y(z0ycITB~dQ5bm?2>kf|<6X?IbWJPE%H=W^s&6#~BX0mW(VadY+0ftbaLq(T_PEUmz>m)tMATLkfhh^F zjpIOu0Cp(MIWcO{7NX~b>k#K~F2x1!M5))7B#ek8tyH#C3fVQ2ev2Cwx(~)i#lj^4 zx%A}m5&;y8X;Lghs5Ny3rH4-Ye-u&=DiaKc86`JwO&+Cxbx*A}xCxLLLjzW0&hTcQCsPvX!y%io?aP5$09mjS zaE6W9cqH|3AwVqz%DnWGa{FbyinZlQqazV)(~G_X7Ir7pVwnBjahn}?Sn+r>#p~T{ z@ai9bRB><=GLPWcY>8@5i5I=_#iB>1-@d!3-_~`7Nh5O^<$PW{+q{Dr5NP*&Gw|KK z`#=4uW}wzO+g0$Pp8aHrNk<`{J?&>q3nT0PAu2Z0crqWixh7bQ1%_<;H5b@JXEa?z z^xg0fQ6D7=t_=FERvnMEWA}SxMGLztoH^n-EI~f6L_S8WGSZE@{ofzf+##3LlMjrG z#*ax)8H|g;Fak4 z+tJ)g+#5S>%U2Wwc8>h*n=y>XNq*R@BNH6VJZsje#)s3{l9f3!o8rTU)drHSf{nI_ z8c6I8s1(aR&by8_Q0-3FSxoQe?K>eq6~diddJ=OKUn`MJ#>AM{<(FSIaTX5D06v#s zA_fl?O;^h`+N_Ij@4Bu2yFWFn&9<1yb#E3~<8x|dq;NATxJ`#6a&zO4!8g~9Hyx?k z_P93`3HADqMgSdXTU6LLOCpbldk+ia5v8&0gQ$;oBNH`o;Gq9$5rS!3VTRrp9l zyJWvUN=yn@AsY)CO%N zy2{PDV#f>CD8KytiN}jKP<-S1whLU8JRJWtYy61kgD`Si>!H_oOvQ;~HH)$%5G# z@MGxoU>)W|(mcF{O=H7bF?Oo0M*UXA1Pnyio2~b$TuhVy{NJ|2mb!~0PXm_8U7)3n zM{=j~{_X2Nsey0$ZEz=tYycVrG$BkV!>|xLtz&@lkGXDb9I;n>Q)!6pPOvJAZ1r$< z8+sT}lj3>5o%kXCI<_?sY3lRMUC?&KJwLpDN6P1JfpjiZEt9#I<6_sX1nM0VliGD ztsa3hG@m+2W+zW+1X^5UHO@qZ4!L=HV2sqP$HzEG9ab)PMh-`PR~pr3IrXOxzNJi` z=j+93b4=V2Q2E!Jek0Dj$xd9Up( zkJ;)m8}k$GT>to<)E&N`3C`xYU{R)Te@*&&SMJAaww5wU3$*nZ5S?6YxAVARx8L5} zvE1VIHVR748q}j=U{5}1tN82Z{7&e1J+0d6T(&e$_0eoHr>zr}0CUK+6b12#?eo)` zzuP!fja-s$M9#wGe9Uft&{4%kHaX`2dKUi#?8p$PTR}`mEHc*8)p#Dhe4cJkGwJpFf4nQ#rI(;Z ziv7t5&K?8xh6Iq!Z<6Bn7cHkGi z>HYBoNDh$Wo?PqMx{5Un+z20Ll?foc-xr1JO3$d(5p=TV_a9THSzQY| zZ~{|geqK!!1^fn7+2lZYD-ss4px}x&PYv7Q@iskx>A(B_@2-4}(8esCJeG#Le{}ma z)>z_y{&~z`V_3N9=F@^T>QKu+EqN0rv2$ReQ!l~&JB zx6Qjom-WR6qEnJHlLN1Y)HeP6e}6oza@*pELmCSTzuct7W@TAlQfg%a2y&0NU)6tdV^tyI-6TEJ$J3oD2OQ%|D*PtWj^pq*Z`8B%s&3S)hbPC z6zFeztKIYd^oZXxl-{VE%L02#rev`nb?Z*9#Se>od%uJhu*b15nnFJY=VK&eAO~Uk z@vxYGc!(CeT@dfs+F%6<hrIc5t1M1npe(l^*q&hA4pF zkq2g`vH>7qi_PQy9C4kRIN2B6X2Oltby^2#fBo@+%=kD|5>gt7kXnL zwkXvhpF+LMgR9+ZBRVCzZkP&+osK3$5e!w&Xm=V~&R~t+Z7tobpH9rrWZh;n_4xI- zj|TH+c1Al#MhR?ULBPYIhBt z3KFk80s09a_&@wk5dZvNy3DX6Ld3CdWV*GO4~GvALfe6VSnINRA__s6&JnxTWQz)U z#ySl)T_E}7g*^ZLAMWrCI204@^Qs1QdQ{Hc)?NMf>ihtpKzmL@HwSi~8#&RN2u-eO zB@S;JurA0R1IJEmJr6CG{AS5DzdFDGX}LzPH-9*6aABl7US6~P^T++u;`S;|8RAgV zKy^{hSCjnZQLS}JHt~qhJaE#J2Uwj8x?nTyuA>f<5ub*K4XsAdYsX0*0^MDW!5wTi z%jG)DF-~`WeC>dI?CEpSoDlgS&Nvh#<*pvgS;$2UR#Vam%zk6EQH)feO-O?P8Pqt)rH&3 zOSz}~!#}$A>%VKbe33vg4owQIsPyvj{?pu~qA6cHMdq;1qM$#ZA`BjAb9mYy&IH?{ zocC(0-TS}4gTQIZQkPFMMa)tH)vqeI@0)enTq-`3%(3fz-U-}g7k`a|2T*@7S(jls zVTK!tX2x(wQ-MVf$6B@8#n>Sh2?;)Xa=)KHrR_2Dg4lW3+Hh*;rxuD>+*5E3wzR34UaM zI?JaX*T%pL)sD@&t7{DC3eLm6bo-q{^K6u0_$*Fbr94=SGyX0#&^vcH!@T9!{me4+ zX!!|jzIY=8=3PUU==P5p3;@OH{m^vuu`04+Q zgGs9LyvI;t4ot@ypxqe{aU)RzxBWqdYAa$E2MCN~+X7?4`E=~+wq%IPYP%UmpY|8O zYgiO#{)(|G=y8hTz%+U{Z!RD^$SQ*Aa1kiPqHBVq7A4thRWfO$j&dKJHwjm`n@G3DyA4pOqGi-5hz3tuH=ihEC1S zWi{uaGLD!XK`QcDU)yJoc*zFloQ;moefuz+jlsECxzp>JWG6iqYn@i|e0+I&czC$S zs!@2G@jz;brVuX=V}K;{#ct{g%J#rTjmT`7CbXwkn`}Dwq@J1S7uW5(_f=6;0CNUY zE^7*_AkB!E4x1UOHCZa&wa$xJp;2ke2wF6Opn;>x-K%P~^Tzm(M+;(37&T1atn+Qv z>3$i#+b*b(=DR<>sVLNh=_$ArVCC-Z<$!E3g7lnvQa)Smm$Sou#R?=Xwb*Vp6b8GF z=M?}ch4F(cr`w4p2HVFG!OU6cga!3ZCBcRJ;pO=>4h%tX_n#jh|Lt+Jdinaa@F)NJ zmzPhuwHnDUPZ}A0sAYq$Bq4{@hnp>Je_ExS-0H7{=?S+|F%C$XF>tVe#01PS(KlJN z%}YxXnM+NUo5f;t%vwRX``2Ip226*ggG^U*Y3u!PEcsWtc67H=W(%YLu0++wak^?%uXg?zSb89%Pz8 z;bxfL#})Ute}6(R+`AxhGS>}q^}5yTR4aksXLdy|xKVGs{r&rXpvKP&ZBld?qJ~~k zj>44ey(F_@dVee4UA6iHJ1SK1eETIkT%|?>#|1;@4r2Kfn*K07ewsshun1p@y&ebj zsR9mH(bf2L@_njy#2|dNlc13p`SCIki5hQCUtYFPe*u@|Ad8*OzW(P!GLj~943KAa zJhjD2Z&}>6olc8^BUPKi>{B=@p$pM|9=R}r9Kd)@YJa!k48uP{C-i zs785w`0eZLLJ+}Qa< ztH1sBmuE+6{^0)n<->HSX?=m=2TKpT5obgJ86@DZ5$JQfVyChFP%~h2@r)_F+{REh z4nZuvq1#uvt#Yf-9lbjci6cWX)OETe)A`|%gn%lTT*+y4^Z&raMDOLRfNx)6Hpts^ zdU6*D@^WGeLnjaTq}gGKGcbb`RE)dg2FZ(!&G_l*mw)}jj9^R-3|-G;S7_HYQ@N@N zCSU-~9{NM;T5$ymH4O#4(f2RmSxgxr#x{jKejkty!`t; zQWk=Hlg&!=iZFw>V3CK$Kchh+1=(X zyHFqf8<-Q#C0^|YQ5hGp#U92^O%1%h+v*}JWF%oP_S|KQSs10W+2U!#14?dP{CHby zXof^S*5LvSHh1iCZb-i zm4uQYMWZnqX(%w%TC4RlV<=g>vzM>?=VX{ZAH!m@cwT4gl;M+3AAmph5YWqE7Y*ah z>i!F5U_LTgxNfzU)90@MdS?hC*nf^Vg%RVS?xglB66G2ku|~-^fbt zk7xMhVmeKzFBcI~g z5|Ti8Y0dqQ{|s4Wy)RW&a#DrkChD{_sP{rjrM3@aCXb(rJ9CG1zKkc!V-d~AtH+_Y z!yO)l%z_t4itM3pQm}PPUIq>e*m82r1`b!$ZQifchOuXQp&%5?L`j)ckl#pk=wf98@I%mf3V)T;3z6+Mz!m&U>XV9=Kg*T*@*ju){F~7P4Ab%{p0iF=Q*bJ6w$bCCfRmcyG~BX z#>NhK#T>aVZ+2K!apH{=1utq0fB@74bt#44=~*I;Vw+$30lBc1Z1RB10|`_>TMV8k zrNrygT!JoQN`BN6>QeUbHG#@zIatP6OUq5tE(uBHb;*}2EfX>;!(z*8m#0d%>qkR2 zr6W*Kv`*=tfp8Q;zMKjpH~0V)wZhGwVS(GPR&J^NBZ{mW%94S_1qSZj7Ip!07B&=^VmLjHoy+w&_R?iJ^{tN9_MY zd&3z$hKa znVU|AcCfksbO4qMMsYvi?D>%ve4i!VpKp+JsmXNt_3Ot;Eb|J0-Tv}rSEyOwq>EG| z!a!|tOcy=NU9)4aT|t{2)8)VZ{PWMd(&rsF$p$siE|Rx5%4jhUh&!+O!iX{t&&^`O zc||!R%CwkERZIeio32QE@Eo&C($i_apKy$GRo=SpVQ+K>qi#bUc>KuYrvr_Ds$P*b z5J;*;o2^;Bl@je*bvj*H>8TMS5=O}u1~ax_An5$l7T8ND5uzaR73XkINMbV;GV6HyU7aL;qmYB~NclbV?*Ex$_Dx|1c)6M%K>OiGikh!VpeSWi4z z2|Yp(&`l>ihhUPWE1!f$dE9MQi6W9J7z1B=2Dm}xF5a)`SYb2WvOMRKs1HWdiKXiE z$MO2(zx?)c#AeNkw4nNwq(A*$MITiVRvrI5R#1~J%gz1A#}I17>ERG?5DFyK>0*#+%cj)V#XeJaM$i0VY@jl|x1AB|;JE|u z7&^ghM`eUjmr=SbsX!m9Fn)9!Z z{Pa*f{D1xrPBI&TCxlZoV(#UYhm9@GG1yhUk?0Q~d#~L!s@U00mBI9oe*moo@iNA( zZkqz@O%=i;B&rcd`&sO77szhC2&4&VA`pE?jBmhz*n#H79H`Gy8fPanL{m4UZM}WICl8f2@BAWCDN=_~s9FyXu_-6}gyls<-P`j@*5!y5XeUqc zGgs_Wu1J;}>lCC#`dos=q>&tMLIEq|L?jvgDpLd&d7NvFb`WdlVMtw$LjF*g$gz&2 zf=~4LOW_pzoQP?@M!q^U#1@KGi1|8UD+g;0r@s*pHC7YcZrRljg+4XDM810SmOZNp zGS-mwUdXoHX7&QVIhXIMwThMnrXJgkhTusJC0%`jz#N+PeD&)m*PbQ%dIJ4qkr`bT zZGGr>eZcSS2Co{srX{^v{E6X;`2nwEN6pT$TJ4dMHRtLa*f5;RpU|#Kn%>Oy} z2NNH?*kUxFqhO;Kc3-AE05|*1^X~95MFE;~3v0{CXoH)c9|jb8K1ks9r_@@yJ-9su zn|k6rRJI?$*v@iRuTWhQJZLOn#^C!GtK|~S-O~dxb4YHn{oMtv%bT7E5?|)IJzjpL zQt9-JSoY&KU#mQu@8SB*2)m`6fyVrI!DpFGND-OyB-qT%_HFz`nin>+#yH3eBs%K6 zRSIt4W-tM$t7}izdq^5$Kh6WG=OQHWIKfuh$0JRUUG(_dk>8X)1p6|}xfe@9G+%(e zoS6G=ir8^JepF$l^nz5+2r_&6>TeY#2MhH#(tDdW$^WYbyCJ%9Ri zzdP)ceE0J8^!Ryw);tjN<8?`sD`N>`j@D#Yz&~TkL_8(a0-uuuGVu$Hq1Nf61JiJD z$aXZv6u%1-7#Sn9b%1vF&yS~%hxOXEYyVyJM!n0c8!Svv4YTQoWA##vWYq>lghegL zBbcTio}P}2q)*bd;EM*`GL3i#mD@2Fd8KV`A%kxPG6Z(sp%a@!&Y;$joOVKMy?S{5Py0EGG?ylb$V0adHX%G^0k36 zWy!!FDOU93=f&d}`r{ANMIp;g3a5g^7A}EPxcP9;MF?=vmUre5tdZ1`=`;s2n|4|6 zs-8L>GkzZGeb5q77ex7ae!>$cD7Wj~!$cTy%6L8;_Q=k*T*#&~KUx>dUq7&pILz*U z*%G#(MVuhJ5TXKw1=oGs>HC8Zn8_ddoVod7N(Hj8@hZ+1 zr>E0?_3+{8w2nfVcg|Y9esg#2qu@4YlRdIRRp~2ynERA6EC(M8YGaV<*^mt;>-)Ie z>`J@Kz;qScgkdkN)zG}I)Y_63+LV3BYO$jwNY}M8m0@l`ip%6~#X$f-GJ>`JmQ6`G zUQPq?rV>ijs7bvCcK=o(^C{f)X^@I_>YmI@y0<;K$M%G7qzm0yfj)Bnnh#adHQKoh z#tCdhrp#MqPEGxQ1h>be)5CfiqwGKnHY&{~**o7Q#Da@O=6 z*b2?rK!OTXI#B|=q?|?CVB)kn)SVY`LmO({O{HV&ZM^cKX@c(KP){S072YPr&lWFs zUJ~<#qUi;XXfu2I^0df~9}szPBJ%W}npzhI>nr4Ip!gVlm#sOt4i>6yLW`=t_cM@jD_38kPF1eoq7CGFn zPg(aR8CQa>u%ASm}(wo_&tyIKD5En;y-!_YVY7ak8F!j?^$leftdN@rIsV6Nk;3 zq|)yR3{nlz5PF6?wY@9nWSNaC8 zLMQ&RqHpGK`61?*Oh)98jTTjLb3|eI9NT_-i7ssHQ=p&ir}J?<;{bx!9D~zzvw+-; z8c*hYruW-_{dz5mj9M}a9LLF{?DNMD3{buMfBkh{EMB%u^7(fb1uMJB*RPvof4`tZ zDitq}+xa9V?v>4S*@*~s@y{&g`FufgA#6J5XS?0!FJ1gev)#*58#p#dtTmHZl<%(rIY~$Q%rXi;oI$RWi=q}3b z*GiG5qX=zNKFZ8IRZXZO-i{}9nXcyf15he9mJG0Ub2(3`8Cver>rhdG1O#!pr<1DT zam66MK|6wrOqwisjgXj$I8@o8c*i36Mr5^RsZ!&*sTwl>9n3d_pngN~841-2xclw| zT0Wy~WHcbPiM8vCyIzOST{`D3B`KCdIx52*Q z7`VY85h_NnBJgjj8pcigZKLlvdc@Sw8ZVbr{wD{hLpbG`esjfv?b|jwZI-qJssb5I z37}AkJ30#!W*>ih`tr|v(zu`g?U%><)9FOk6ZsJg&`e=E`|`4X-c~P0rH`}%MK@#t zL^Z^E=BxRAHv9B4^~`ROocDjLlmwhv#voPH+M!Tn-#;4+oN*5+|G<NiLDijwX-{%zEVa+&RU_Jx z_&d`V@^E&9h?Ve^dFp8FT_Jt2Q8?}LB(nHd1komrWp%`1hfb0ku<#>(Kt+nbP|OuC z1K-6sLS{1phz8r~bzf75X6N#{N5m)&ZyUV6w;g)W2b ze!Yb}Lm%e5*qAJbwin8;-ZcU9_4^(*1#e_q@F+&%WcM=ckT^NVV+U+$AbU`9>ML>| zlC4BLLaDu_e1C>-_7mTpus+PQX@ugMubZEk0&j8MVu{8{g5O@Un_@^%gA#hghsQ;{ z`||Yg^6<1>!q3ds_wa`Eh&x6}Xe*qI%1^&MO>|HkL)Fcf$fyxYttL2^;^V0VTED%2 zTx4;&`11JkznoIAaqIi-@&41-=hLT`El&m@EO6gufGT@xBjhGPtcA0U4x`29lg6Se z(1AVea3Fbz%@5lpou!dwI+fm;g_Dlwt~}y!ldKk`B_`H+2M1csATLPedW~g@cLgXj zBnF)N%*J47_Dr}4tNECBIM_vyvZbv@V-lc!jSor+)6$#9$rzO%N@1jyBg$emjK~zx z&q9rMTTn=AB8Wbpq}_oAIdr@M`?}y=u-pvk9T&_Ed?Gp-3pv@K&53U~L8a(~d-6S4 ztKYo8y67U8L313E9fwac;dE*M2_EPZ(r02rU|2{^2&OnMSwCQ0MS7~;ZgQ38(oar` z9S!3RtX({${#x#HIRSd)>ip>haTc$2o=Jo=H^1%~e~t=C`}BN#n$vn%V2L1+=pvRJPU)+|FqrKoP8LtFZr(q?eEEch{o}{|=g*&h zeFEw`0i=xreCl3zxkJUK1VxlD0UV^P)NgCT5CijqB14#PZb6Za^BIiJ^T#Fs8Yxg~ zW?~`d0Or;QVF1T~B3jAKidR;@YY%n3m?uYEMujf=%PB8#rxo zMhq>S82Jpaw|jnZ+r$UImbgyAb%~Z8ffXPsvT%17XPROA&MX<|f{tWlv0Tt@lSUH3 zD9(qYBHFiQ)W`$}jwvEM%-9d>jM^+n;e)2_H30p4GP`1oQky-w z+mUhg$4aBe1?h}ByQuijSS7N2A97gNw`{%k0;V59u~K* zV5D?85~9!}hNP@trcG(P{`?8y3D!PpTIm)J8ZB5E~Z z32{D$rp{&P=CW}H0wiq6d~z#H=N&JdEHe`y2&Y52>P^G*T#Td6KIdhLM_!Q~O;bcK%W+5>1Jyx<15Vsj8U7ch6iPoIyp}dsAUI`po%&IK#vK-CEBml~EM)ks`?~3Ah z4tHT$0LEDJDq~&0{kk8!$;_vwQLFvOe=e4XE%dGJ%O>bG9Nt2B1zSo)69!mUOnG=!iX?<@)JIEb#x0k8ma7rqEw{DmvTW6Z>wZMyLEN*b#zs`y#+VW6(_hc`?9O_ zuCC&Z+cN>!`4cc-MLz$$P!~jaMuI+xWCc#2<9OYEK6dl%DQ+`LqqN(+(IJ978Je#H*Wj&6VHm6QK~TL+bbr_guCdOnGRp+$ygDm4+U3U zc2$+#4ew3{4qh?*K({k=~wZIjKyM?-$u1X^*;C@2}hq_mm zcJ@?wCRUtjJSv#JWgb%s7J1;mw-Kwvlc`Q~!|#jVC;43ueCqs5_0WLsvL!SHU~Rqh{uelCOU*TXcE zDy*RcCE^)CTWDyRVyh=8l2W?^&EZX#UN#-k7|y~hKi_&mPNisY`KXoD&3T2A;zpc@ zb3I+YeB41y;-bxWjW;VKTzcz^!zRJ@WfqBXCF^aWbzKib8vN4_9Az=A_TV5H%z+@YHEryRm26@9)quBz#HFp-rY(=-~6s=id&| zc3Cp4y$5GQBxA#2e7xIavOp8V6D61I!U{Y*p$xv$`SjyT6{!|A-oLq%lPEiH=(2#X z$C(jI(!xlON#~}gOXCk)Gw0CinY#rdoa|KQcuiPfLv(A&lvUlsBLoDE7CBKAmyuR% zHgCR9)+w!wfU-HaPqb=d6wWToy9F?2TKD*z-FV8Hj5lBqg`D_6X68Bl5!WA~3g%qs zIcyeVkGnHF-MWD1_s!q_lQ!rM1J+k{wO;Ir$w5bfGFSL_P-|d}DDt4v<#o(ILsRxF zYHVcV&ih85?w>My`stCv=JenV4|%!F=lDBLkEc+HJR>8&MJ>O3bw^hPoF;7!ZOAvl zqnTkj9tCx_xt?b+5C--jLp#TT3&&1ly-&eTF+pUrp-u}%C;S~krZ_m1lSoJ95hk;j z&j(Ds?3WlsCOB6isRVZWHW*J$QfaOM)@#0-A3mHOzCL8*hs`;)y5bT(_8H=Ak5iOh zGSWTix>HrtJhDARmIjXN)nqe9H-fi#K zEU_4_@pV%<&yG<)GT`{Mkout^MneqXZuryMhaez=N!GZ(0W^QLjJ^XB@Btt{wBt!suIGqjB-4 zx0h&nJGRE|jI+FJ5=qnVRL3*wuUd@d-&HzoXzkZJNCS$>-0Ub{F5#lcPE}-J?5{SV z#%ClLuOM86dp%?%T zVT~{*^y|rjEvlfDc{Pl;^ONs!s?D&Ja0$w=9Zjd04y1sWr6V{QxRvrWk{=$Xhx={J z$8I-)WHZXvOpb6^)l2pG!zd<+dOv4#Ds;&)Xk?K6Bcpyp`3u%&T2KG>bGSKc= z960CGq3skYD>sJ4#9pBnk04a@H`|?dj*#ybMc>P)gzN^itoeqg{^M~B?xBA5L-Y1;{^l*7@A!;p8d3XTeVMWC?)O_hjXn5^ z_aE;!oW?{=XuhrVJF~)~Q8x(gI0%ID+m)5k+T-cSYsKK2y@h?Mvh zDZ%#?XhN&jbHPffu73Tl#j*^aVgxfUH17H&F*Dt?TW{aJZxaY2je!W3AT7O_DIjf4 z@y~n@tfv^shfUGe0GGGfZ6I(RvvdM{GD1mD{)e0vTkae)HJOQ7aM@;BDE+zm$^QNI zwVJiM({&=sL;+nJ4a;b@Ax+q-;|8E;Uy+f#K4pq?TQgggrZpY5x{a$=G99!~0nJpq z*^+J2ovQA&URPZ_uqL*eF&gqty9?BvgYA$&PKHp>NtV3aNrIoFWh84xwrvxUH1J{0 zId$XINEjT!D{%xI1k=-#=iL)P4l@c>VVOYPV^T~;+TXybn<6X_y%W;r~^JD(9=kzp34)-yqVA{R>?wjAg8c4Tq zUVZcJtIqd-_wJ_MlUDbk8m}hnl~XJM{`pC*R@WRFd(m=ME$8eyeSDg+H%P{5*BDv7iU(}ROL(xVtr2&Ofj0sz+30Eh;*d@s zCd8%y%O&GQ)^*`FBJ1LND_=LE{W=zkHMnflD16`amxy@~(vT)lx)AzIul#izprIZ0 zQHVQS2PjrRCkU4lxmKxo2iP3K89vynUwrou_M@s*+qw#w#PXIIr&yK3>)`T@WWq$7 zX7w6Z_hJemv3kDObQ*n)d=XpeJR4egtUy_h`ndc0ikGxIMek3qZ$#fIcd=K7@rtD! z*9_1%9RGrB#dX+&Ak1Nk<|?`h9!0)9^awNid@$kPofWFEP+0D>St9mwo{M>wI>cAQ zv?(Epgh_|Yu5Jq?lr+9y;fN&8?qNPz1mSvJJpP5)C^G7Qv<28dY7m@#n#2zngKx!}iHv z)g#SYzwPKbQ=kU55RF+}ilJTNxSF}~dV?dnOn`|mLsk^a#7P##I7Z;=bcAG%Q)$Ex zQxze+>Xi$kqw-j~d4K!rf2q%!-(PjYWvC;JF2P{B+4mq(u1xf z2uxC7Y3V8;eqC8E*uO(f*r0QGehNTv4xgSNf`dKS>`X#sAl@$Pa_xPcT^-lyWWk3V z9~9)qtG~OVdx%6D0VpwC*iHzTo3u=FIJ zdEHQwS*A66bXi&UgWUn3%&HUZ>9#mqL{s=Tj;CHNqNDh~%(T}(L`R=_*d2u*>o zZ+5D8tv6L>-Z1KUG1BL9=|ynw%GN$@-*)fj;^N|xhjIa8n2`^kCw&+>!I}RrG_E^P zKD|l-i8ooST#AmUH(&KGUSGC{x&8Y4KffRJFD_NMv0<8R zHmkQ)=zGCrq*%J0T z9c$@Ugv+|#fo^kAxzdv65C7$VeLDcnxXjojk!ZiXY?4zN0Dv-0XCX$*0`_xi_*&}uXqGJsR%?(X7_4K6i*VsPUH(-$rf zVLD$72OUA=Rr~b|K%07$faE-zY)}E${KO#6D%IaB@x`~dHAx9>F1iev)+wA(hKPAV zihR^>(P%YC7^S(U#*@>2%lG{7;Q=6=%n@D?;Jx1ne#n<4ig7Apl#s$HH0~~mx2snj zetJ5jw2Ihtr%t_zEqyVHkDmb*x%D4|<6$`~M~a9g1^$xf)|J5@-U-*ui;MQTI|qf@ zy{Ryz44E5Eqjt03)rBe=Gkcg~b7GOea3Yo7D(Lo9HC!H2b+V{Ib4U2bquGi3jEuYP zij!LwvRNrVJgohAlMV>dHoLsKn=r)3<4#R(3l=cVXjpGl2D7N+EFF|Np#O?ptip-) ziBl(OAjp*;y2E17nX$lQN;w&?rAD-&IKxwQKgaSd1(69P2BBCMFHU>PWkj*9p)I!u zO{ts=Srf4QBrR!i08SGbxFB^j?W|Gb*QYiq;foN_o=zmAI6;FHPt$z4-?Bl4jjovG zisqa^z}z?0CO*s^Vqn|v>Amas7j>!o3BKC^Z{VOd+@_fw#9R1_1 z(Qh{2L6HVmxp{cpA0LmLI>3aJbD$>5KtT)5dRwJzORNr^4f+*=t{gv!p7cbOzKmb6 z%-0oiOSS4{hYufxoa!}?AL+ceuDtCGW*b7e3u15wFF$Rgp$g*1ZH6O@j(Mckdlek^ zIO@<^YRb~}xEMME5g6W%!$pwJg6R2ietcf7#^)pWfcTZ|4cZU~;0B}+1~RitmVZnNZ?jyj@b5AH3B5UFX#vw^gwFTE zOt(o?f9q~~7uT=;+YdMGe(mr6;YVmS8ET%}3j<;pZ#%WG%C{H8i77&{b0fqeF6Kj$ z4y)Df{_9HesN3*FP)oDccGg3{@7IKh}-zEeoLtHku>g zreOVwM;lD=EM!*3iI~nOmkuYU8vv1DOEie0$OaNa=@ED4E|ezgr&Ko>zvud!tGHxm z=jcCP2ZQeIfBXGUHCSL5H}(3UKje?!S81=Zx-u9}8aH=CnIVnSL|hAJ!6kJEf(p$7 z@p3-@i7B$)Fx#5$IsJi9@87hqyF*o1)tXFsg97#2_tNNoZzglCb7_NaeAhgDah#Q zhVB^F30)Q3AKT*@!xO9@i3MyHn<>$mDL9(-j37|H)GF*%C8|TokO#s@Q_j>;fuuJ0 z5!+h?bTlJ_Dp};4p)9X{*|7P;%DH`>vHGD(XU?BlYEQQdER^TIHy-ho^-fCW!yhUG zUwrq?Ki>9$S;+aEGXVpe?K;-$6_wB^t><2)P0iFF3Ekn4z^OD3Vaax?*Ec{+Is!=< z-K5qpgBYUs->+T$)b{#yCSQitfi8w-)p*l1Z9r1(UiGIAUJN4w+-0^*sdd@Or%t}? zUU((J&UbHRovDMB%T;JnI9jQp6y`FnhSB?Lap~xl)`%5(3WdQBA$VY)Ig6*i`anO=5HNEF>UYjAWb#$s_v&*sCg{G(95d-X?bZ5)R% z58Yj86ej_y8%D3=#nu$_qm6;2as%SWbQ+HM?eA~wA zi}8>fvhQ%7v1W%+Be5^#E&eW~>WX}Ep>tqe44aZ?_LZFQGqdOOF3??08JRNJRvbiZ zjv#O|)R~fVP7ev;cAIF3T34;hH%<<#jGd~%0#A`_5(2nA9sB#k2=lYpP+1={@Am%L#`qgs8$qH4k)HT#v+aj2JdfwW-cuo9p&1tRKc8-5}@wsDz z9ep}*qxLO|7$lSo;9dNw{Q1J?dV^ny={B}2Htm6_$UYYx8?NCqtFxp8^ta*HK%_^O zgPhR=ZLFR%E)!`u+WjB@5t5d&h9MqGrm(B=V#}emd)+WV2a=Cot^?&=pE)`3K#{JF zfg!;|R5VnxlG)AtP#P5lt`2iR9_l7u7+sc~qcmUIp9a0^ZB=uC{`O=@2p~S1x7Qc`^7!dL=cYxJ2Fdg};7DbR3YplG z-n{FFu`1MS-@O;PZeF{kt%0{2L!)-54>349Gn&s-`1!yW7Nc@wAzxbs+9BrT>Y9SA zYw@a_v++nMEt_Ve0~yE}#frTBx(317P|b9vyZby&L2!;yeTc>)!=sbUY}o+AVWr*# z>JWY7&-WjHeg1g-`c)^_K%Yt1@Fq(l@*0n=7!d}iN1W24tw(1G+c?rWSF5V1Y*9YV zqfWK)t~#6(-9*mKxtX1VuZ*BfQC-~zll_rCaW;AR@^Lo@vGlkm{R5P2vwi-0KRdnn zI>2wLxWFYjFhy*acO$v^eNC(hE;}Qa8bD=`4E*EBBT9H~y|ys`>)C>E;3%6Q;K^5G z83JJDocFa3G`90(R_)*UxtHTXu{*CXiIK+B{USh7*828+TNH5H$P&NayT0V+pbro| zQHbP9|Npc1p3RYDX_nsb8_l9B6`=wh+B00HYlmyNc6i7Pfq>Rp>l8>`qI+t3W_xUH zX|^Ah#vj68M;=sl&-CtcegKKGGRyi}b^G;H6wua{)@wUU&ce=5p^10Is-~Ky-ik22Gari*NTQH)xxImkPF43QYX|?bkP_ zn}{y|89U=@8|Tu^JES9_TlDUHYk9D_xwN!71Wsjrcc*{!;qc-kfal*nf4<(m{pWxB zGlIsCp+Q|8WvxX(tWJ-hQ8S0~i%|;&-x&xNjmGh) z*%=(2tgIhGnKn4O8SU@%uWlCSQJ(?M3s~rT?3TCC_`F&9{O#uM_z-b2|MD+CLRW%f z@8}SD1~3XNt{twgoFa^DZM6P&)%R@&^V)5YtWo8DK3upy-A5?UsJFI{aq~k&(kgi5 z?e#A|;PriX`Pu^~7Rfyr0KkQ`H5?#+t#|X|Ffy#sRkwOF}EI!&FPVVowmOBf_;rz$1_n-dLrv)UwUGBnd_;!2Y+h1-F@V;@f*v%G3 zsBCXA@&d;GYS~*{X+t}Q;D(E1|)mx4s^=(Qv}E2L9^u-7%789|Bxg`n|vdXM7g|E6lQXZ{Kb%o$N;aKGKp; z_P~}qK*|6D4wi?b{ZS+7g37ag4C>qpD*5e)XtkB)bEF-vuD&^KEvzo?HkN+;a&m~7 z3aC;rjchNSygS>$Jo{kS$bi)T@a@a_>&6;H&miWF+JnP=aGaJpuQ3CK4*A{LBGd~T zOJ?`yTeQP=FZOnBZ=gusKHA$Fefs0)_eWO%jDP#_D`G_O(|tJ^ErPbP0SVP$?G%c# z<#Yk!4bU1!r}yv$pCP*G%jb9SI4*bFgBE~8xIrAB?Q|dV2ir*HLEP7@6SrrD5Mht= zaC@Y1v_fINety<$Z|$CM^@pnif37#z-ra+se4~@WI?x!Qy?l7I+RIkZi`cuqSvmfE zz6PbU)w}xk%jMZob8!z@;{!B~PS?*qecWnpFJlmjp7-X#KYqME?4=DLp*J>Hv;NZY z*685tT7Moj$lMy_yf;@rA`18fs;38_8z|0$`4wDT9x{Z_-oHl|8a7#YFEIn%K$~(O z#`is7%kT@bs9v{MZ;r0t?XEy3dIif7&edKw>*Gk>=%em|ZFCX(_#Jox5v#YmF~HUo z^}4Oz2yvYA!`|!R5n7(RON(B*iYvm(>$5*@Hrs1}QZ24uUO@>2j@{}AB{6QaAS>UU zHPR;3wyVqVcC0Kd!{vMpw!+rl`TH-Yubl>Zh8QDVe}u~QA=Ui!Vq@_D?r5MiK-K|z z{)ewWzPr5IU&z+x*G{votN!xE&L!fiF?GMV`0)b3&&}hHpH4R6FS&qRaqsJY{_!4x zt&2$yijZGDs1WC^v{8_suCFdG&MN)X^}B=lXaJMpa1ndfW_$DPO4z~M3*yPzAe>8l zM0Bmj?%D->&`_}y!4=?Kd_0uCNdj(vht*=jRrG z_`Cs)+THEvZ}%V1FTWhEZy(>THAdT?Ae8PbuR^}DwS%1Rm8}Kj2|3JdOY?t+ulrbaen~TvhNE$_czO+JIk++~4xwfHAn(2f#PQv?yVE#D z{@%%3q*nm20vOp9kf#t$TqE}p@jM71*jwIgy@m-3DFO(EfgcAduEnK&AgVziI(TT2 z_Q9S82I};~pFV9Me+=>)n2?Z_axm&g@z(q6jxyUqgAICa$j4SutRi)23&4T3y?)a0 z)3mpqgkEb6&a-gy+u^9~CF?i8d_r_W>JC6Yzra-T>iWx99*rdcES&raXpJ#_qV?*okE?%l=t#Sj1Z3txxIMv zM~J<*Hm+ddx)IK8td92PNA0i&BkB#JEDzx7-WsgqzP)H~T&yk((cYb3 zTLgAtZ2&ka6gBM_KR6)22b(=~fnl#+>Rqg+>1zZGcQ*cyKX3NjnY9C)Un_4xU%Fbd zva`e9_SY|`SNLJJj=%lWzx;7;?K9|K?`{q;MuBIg1GW*;lrDDD#gCiW>(+;#@9<@V z5%2-m|90oi18Jx^+`qd$zTQ@|?M-;h)&>h3%eQ~Lf{Ehr+ecK%o6T9g_cuTP>)Yk^ zvz1|c2s!y8?q}%p9WL#CJ|7H`8-d~0HeM-^LBZjJ8Fm+`nJek?HZ)C3i5<_)aBWXs z*>3g1?#aQsyQ2{fZ`8A>?P2+T^Yz=o?j?esw>OYV@aC7dsQK4X@INp{;qrk^-~vbX zGK{xpcL!%%fZ^?(gMEE)q#%=R3%x-n-g*4MgSE#@Uzaqx<8-d*Gr!eR%g_ua_+?_F{8(ac4OiU0ogBBC4RZ z0dd9F0D+{hR{%Gu(1Qh_kWd9&Zkj5qbFybg%Q3w0I~Pe4_`k2{Lde8YdZV<>HTFJeBp!DgOBHjy9f{3T6n#A zu|0x`{^H{F8tI_;0{!WS&+peen1BvVLCH2ZkA6l%=~8=bHCnz!pe{H%TTWwb=@bcV zpSCvNU$3CMxQ2-0>+79P>}9J6{#ya6W4_aR4WQJ;{dNQ7(l-d|0^xjqZm!$iL;w&n zt6w*fFtWJ2b+8mcyoIcjvwyn89TPb8(*<|*9=0wtE5F_zoc#GuAh2BiFeyLuvw{{ViIf z+mPWbFKt1nytsk#?({w2-Sf!3gOX&c|I?oV!af=2UY%3k*}6P!Z1!kvDmD_il6L)7{n$f(PK+xVTwu zVn;bT|8fG2YNxj{SYPd|>>u@44!2hEDj;QZG^=NA#1G%xVQ=kqG5r|LZ{A+RM|^g5 zin$xOk_%_w?#~u`+ZRVyH{15yBR zG;qW7Jxp_PE`T++`{o*+!8b5S?0!1gdw0CG&|X|P0M-m_sbgdl93NaB%x~??A40&1 zp%C~YT~OtgmVlQ7aC>Fz)Ajj}pe_URvbOi`4$w*{UbhEVZ;_>od&{>UKJV?{-@)d# zGXzKwXqQ$Ok=cFpKDW-6w{G6Q-NA#pfkpN3&Hb0JfBgC8^cz}q$ihaj7xH6|_keG? zzuepfC+_+Sa&Hm%uz!j$_)GX>fE2y|@!gyL+69z>_s2li9^U@>D|}a zC#TofTPuj(8m>Ml4=_jBZLXiUI!6d!U&7c42$7F4B@f_ZJlpJyK7InDvYl-qkLG6M z9CrTw)p&0uY@&y9h-}tYGU#K1fXfJa3keimi=*M@`QGv2!JD7XhfOGtAp+h5l3?@f z?OUi5I`8j)`tjS3Kiuu^ZF7VRH~Qx3)oO3;+rBWjgL-n~_yjpUt?c6P^U>()E1Xhm zA3q}p2RBIAcu&`m zH1T&36#z@x%EI3LkMG~UIYczh;^y&a8Hkp(gKyuiwl6=vfAAoJe=jWTS$BedjUk7V2Tf?TXe!K@1()=Eh??1f#@~;Q) z|MJt<8|eFXE;A)FwvkPI1k=gKmPLdr|Z?;sCROD@?m%7{YKov)(lxRRId+V9#_XlAOH1- z_sBJS^8>c2!?!RLZf&0&w4>1yAc@=8C|uy+{ctefUq8Z8d%OA?(1;J$YwcbyLofyg zlDo&lc>v`wp1$0G1@G?jFYmAW(fs^8+T6Q~dr+EpT1Q7~*AVo)gFJY+ehH2d!m{=^ z`meWdKEoS?K!mgP&Ff2uA~vD?KL2uea&`9>bf3>Z{QUWL_x_)Lc?0G?u5Ei~zx=0f zAOG|(P^``$0r~yq9JkPe)lQ?c|MQQyYpfp)x^M3fA(Gv?eTxDQCmRHAfPtXVw7I^0 zakqB$r~S3d&qvG6#lx+4+X2)d*c{f*al+kReE7IEy886xHDV1ujSg-uPL}uay@khU z`*j+3K&9SWfxP?RXruKSTjJtAZjo^-o3*=(yO0@zgR$EkoZW%ZdHe3uAOEtk_0#(Y zO6l#vnI7!F?k{ccJ&fy+k{!0w*|npcgS9=7`C!lOb(S^|&hoGSjGY<92LgEZM;)ZU zgW8TB8btnEE60$H;gDWfhf(9|Vq<3q7$@)|j@J(MR?)=02G?ih1DHr~XWU{!aD~)% zJkt}P_SZlw-`Kvx|8sV*`|jh#+RhbJK!{+v*jl*+U3wqQYNW|PFM$~A-F*}*P^Mo& zMGYxGJPXUGD~CvvUB_$=K3G)O+c&_hL+EvJa*8t@{fe8tL1TFT6-5q&h$xqT#wj`K z?tK1oesBUC`ppj?fBJ}Q*`Ggt`{gYj+0|COw0HFJ>&4r@{MT<#G2@E#%U^ytUYUno zZOLz*{rpe2jYZ(+w(s5@K?ID{rIWY7gRD1}c0tlTgBpJ0a--Y2|8HLpH^9N%+&Mcw zc-!*M?xDgs*?GOTv~}?rOqpH8I4oxnldi1p9WTOqxVe6~xrCd+2!rlzBvLGGo^SVF z@2-s2zWju0R##?w`%B1g#lZUkDD>vz*6bF}g{vPvLZW{Q_T0LjHFv?|T;4leM|#BJ z?is=fvi5N6ur)e9+8xfl-a}^A==$A%c{iNjh4x|x7Vd4xEf!()S@Xd}_3mgHO}ewAFQ?i1IRf18F*E+@!-sp|O%dU^0q4xw z_2yh3E#7PFru(>&FK#Y0GDL}&V{P-&tQ9E?gnF`Cxb09Dua;?jK?C*_fXn?)-SOJBW}tyamGX zDp0E@cR&2}?qn#gfyxQS@!>{m=k3*SZWCA6o4uV2$c|w}LBz#cyD{kM=|R&OA!21= z^B?|~fB0X2|L6Bl;P+49|Er(CkN@|>KmXUSzyAL3-#>@nzYo8^55MmNzwZOT?*qT@ z1HbPBzwZOT?*qT@1HbPBzwZP8f87WE;UC(rWc$>#lv=DRM}}-kT%d3&FPBuS9>tbw z#DQv=CNHHyfwdTgMWNBr z@Sw-!1?DAXrj{XV!zLM-PH2a&ZDd;HWWJG^E_TpZR)m_!@PrXabg^h~qGSn@Ww@3T zc&4hGj-x12xRR3jJnb}kQD##$LE=PKG-Tb^WlLZl`#OS1blSGyj~rVu?VeWgG=)-m z&DZ<|P7CdzXSlB1OeNFhbu-0TC31Kcx+dv*ENf!m#JaD_f}kt5)QTvtC$vU`y5ebp zq>Gg3^hiOQb<^yX+z14YGH2>Wq$>?e6WqX3MSjNfWzrEWjbmw+rW7+YNSO_J#q$lG zXT65Y8NQ%cy0xg4OS;)_JK2HB%aY8NO1y7tBySqi&ma3bhJDjZnn~Yrd_go~?HTLC zze?h?a}(Q&5+^hzR#{#oB}4KWQB~D>$JfJDmQ6F$-9)3bmYeFbz{iz(qE}p%&@{EE z^gJtViIG9{)iCs&L0d1@I89OF3hDT^A}W@s&N+;rI?jx#i?38o(8VgrOHQOPdeCrW zuVL`IA`RCyMJGj97t)45d4B-43bhep`x{m0sLx;UH7kAg^k9sa+tr zDnSREp1(YZ_T;?h4;;s$702evF+?>}l<(`TY`R+9R#io@lW2B^r&LMO6w4%ZErosT>o8=AFjHN!Op&Z| zp z%W$eEX=&FBn`v(&Qy8i1_?l>8ccv||ike0;<>bwyxvKYK3*~v9H6Fi&b1rc`qb5 zTrf(7D$BQ3-;hNrGF2r_6xZ+sT{T2cNg8omH=DlW2XZCMl4QYdjl^EZ2`sJ7v#2dK znbB=MGTnglJANx}_5JvjY1)eJnYddPn

    1R1w9hok^Uo(^BGyiW`Tv)u1JvkoXd# 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 z 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%0ANyBtRKr6z85OkyN29FKsKi4CQLnZOIYZ9h1ZJ zqkuWaP#O_N{}klBoYRz5|8$MS)uarZSMp}5R%=a6Xr?*@%sua3nB=y|i+++MY?B8v zkpW}n;U4LgR^zrt*NO!?op)t>%Z)k77+m=!Zz^mScH#?P$K#g%b7888ONFe_#3@pz zFjiH~JXeYsDa31@{N~OZxjc5AsH(7R6#_OX(>j9N&#M5MPLu5@a?;G_BCNUi=ncKq zh$)4CQuAi2&xayz=G~QsovezSXb0{vQxO?z99{BFDT<_M3F9cC(T4yFv$#35_0%JXqu+9B*Jka<#B2R zQteB!4%n1Xm68%f@9xK{HaqAl)DoV(3#PWiW`m)5Cx+HD*PaKHF1sk;vV1&Ywj63ZEh0ZZZL7FF z!d=nrAw3~R2qv1pH1KGabHvht5`)SveH|?kjCNFMO)wt_4*AuBR*EDYxThnLRqwGW zUe06W<2F&&ZnvhPO(&|ZCz)gFHpjN6P2++Ws?=+4{kQ-Cxw$qb=LQO+!{4c)tLN>; zmalKyAwYb}=$SYppjpn2YK>a2&Ca$1+)vr=RM}|w@u11ob_lFN`XM(p1JZ^N7g_@D zuVgB*jUY6^-2wfRp6;cugOP%l)>a=6yhyUeI*|oC?lRzRdB^g;^}(j3xZ~=M4Kd^L zxF5QCOD;C~;&a&TfYQ#Qe_h*Vp-(zizx^Ls{Hlb% z+iY+Nw6VP#3JV~;zPhCqmmu`wQCf1Wx2L9x4y`m>?nt_uV$tLBh+I5HL2Nx7NvxIp zLCi=y_&#j+7rqWM!T=vLak}+`KJHqv|H@lhI|`SqlP9xr^QX4hZ4qVwEgpP-e?K&H zLo!2D47%Tn_FPxChmK3^U`#Oxdu}dBog0R&wuF>zRFz$AHl{`g^wa;4;!4Ye%=4Ht zF|db?l(X*jaP2j9xWR26g&dcr-i<^5L`&~_yPw*&&vO!#o$FYNudg|bc_*W;8wuGV zK^?ay*_4;Pjtupoq_S_%K-)q%a}X4*=QDB-JhG-_b|6_trS?QM+44?`^!)6|$p@OU zSy@*D+SQFVM<1=#NLPrk;yk1)(+-+(e`8DfciTiwS9#fwr+esehQUUO5VfH3SK?{B ze$b`v>s6N(U)~ftPGr=#LZ4?#MmZva`mn*rTz0Zmm;v(S5isE70wk?el$Qe;X+g{A zWfTJo&<{`{OODM-)pl#saV)En*KejbIw|my>yeu;+0=M6!mHOebyZ%i zh%T)7+fnrX&mny5!zPnbbq)bZbNCSRw6lbjz>*70ig+vd{Ok&jVP zHdT54@=DLX)l zqUI{X;5(c=73`eWhJ(aj+|zH3*V-oK^r}{c%f3cxPJ2Di$(4w!ZB=#@jq6$^&9v{q zI|#=C#Tyiu50yz)@29z!L~7xkK6Dc%WoPOGyhPq5D3(4k5##(;_YN^zb^Chi8$j$^oStQJbJ?pDJi;t5HR(j)rMREkbC==l}P=fAOCylUm97 z>jy+0RJqxA!!e7m4~Yn89%GXD(UaYBL%!^FY?e5HAFV5slCZeGl3^N6&DCk&WC-)= zo%1m(ypU5>Y~}c;R-A9q>K6|;@k|%MPBpZg?Iz;g3h}~SzT|vc$4~5 zC(mz*=V%If)$8_ZxbhOJljZueTcZBBw#lUNTV-( z9W(A?I2fxahhrRq2t-V@4Gu3v#B;8s1TPDeMBe}rpq@O3fY4ue>qyzh5DhGGl4Hk!dfhn)@mpZj= zA?p6_KcpDA@?!P+r7~Gc^T^nm25aI$1{v_~P=hASFL{c-=-TM!($@jQlu5lTJ<~?g zFhDwxi5X;iOw-J{a~nd~%}bzF{h-adIF!|n zx1;=gD6YYwSghrFo291hOWTzAhS7OY>8G<5x9>>7E_&~{q#x?kgtz;2f21<864~4@ zmC4Op6YtT!PJ|hX(77%Nww59P0W`_kUKyA^UHUqPD6ZNHa>|>}8BZXL>Y2u?>ND$S zZP%|yYpaG?g&Nm&Z!M8WkQra?xUd9awPFzX#hDRtV-#m*fyb^loU3K~TAF=0^hII@ z(EcieKj5KqJ^MQsJDYIKzet<<3Sq%!H>J~g(ld{vMZgWR2l zKD#O%Iqp3Kh2{)G=pkMBIxuzadNj$2xCR!H=RN(;KgBu>BkKj2yKo!!87l>8d8j z6(6kYy>bvzr^Z+P3ean2=I#5+L{Iall?jIFapGiTx*3ENv3TGarf4eF1;$6J>zQ}^ zvez+IsN~!PPv{@r%n*3BX!K_osc7A7dSgpM;hFtaU8C2iDTwuhvun}K6j5E7&KAC! zU=>+ED3zBVMv6RAtuPVacAfEYLQ2i>H}_XGYD!DA0JxhKV{4Q(mR}0Sfd~-pS1+3L zZh5Ip&Yw|@k3QRL z+IsJ)&qSWfSKD0HdA4QPz!od7c&%*QH3qL+YMUA_KYf-A+~T@veU0keLiP*83_Y`) zC$!#Zi<2fw0!YU?MsK6+I_4Z^L+l%3B0~)9=Q!9jKvyjj>5`zdC5=A6<01X$%7l$y z#F*Z(b{sZ1dU&Y(17_gxm@j=D4s*ho%84YR;1!?LEB(sWT^`P(DTd}cCeJ|?@s%vM zBhk7!f%IJ#mh*<&2!))t4qNC9av*IgjTT^!)cC74avwjVvLkCiR3`KN1xzE5Y!Mri z;M-upSub2P&BI?QLmOEw>sM7MjeA7E>0c_7uNNk0n4eRLO!og2Jh1B%=8zY@4!A;0 zDL{6@coT0xOWo)l;_?dHM!r6oDbQ0@X21Vhywvk2a^sy5E4tYu7>}=3s{n(dFYF!6 zWC&J}S4n1oOyuE*VzcH25mUC~e5~h@?gPf1+c?v!7Nw5uQw$(iuQvIb5#tgm^ysU^+q+p|;9-YiMsjx~+nU=B z;5ub^cPrB244Jy|k!cDEu$z4sV&gLsr zY%98_rnsuLps5svzN1r`D}pG!ZQ3GtZt^-g%hRj48DF9=CMVn*n=IpUr+ zsxC&KNl4Tp+Tc-zcr{k!;>-meW50aWwL7lC?4YQo0Lmet{dHyXVS<)< zO2HHIC7PWf^U~KLt`9}aZ6YSlu@ph+;VU#-)uA<{^U?t~1oOz%U;N4514ym{+9;!1@f-1kst z1Z|jalWc#7Lbgw%s-a6r$JEs$saO9}nQ$X|nV>}h43YQ21M!F8femOK*T1;%b-W;H z?uA&n&>|vsWArYF=PYTsw}hM?I);;V=1G9?SQ?KKBQUDq{MFwO$L#Mh$W`N>P}Oh@ z^(~zD}p0w5X2c2q|vV!10TgeEwZ5Y;y;9@DI9m(A+zI(=TMKd5`MTJ(L{;!v`dQ{h-ZYN#7}HYgo_|Fg+fR0V=lCpg-LosAp(7K{n5(8)+jX|0 z_G}UeRS11J9%C|HXyXM(>Qf{QJ!?lC%e-?#%wJGHR^4$? z^kmOFyfb|6ABbbsX3nQ$HhTnrplt)9oONJ1-qtoN%Qci;=OPJOAIGFw0Z@i_9jk+N z0p;rr0glWf3t|P)pF2TS+nnKc%G*D<%7na}Dh7wfcMT0e?T;JMlJ4r0?sg34jryO#Xy8Rvmx_GhrfqkB zD}r0%m*e^9>j~~eNcIxfC-=?S0o0Me%y8l2*Q7Up;p=b-QnjZf6wMbT4M))5AZd`> zq>xob--%mFJA3L0MlJWqT&uJNs`CqRY`2|%PYCuDwi||3Tq3!+uuBf%nqIB1J=|R0 z21O0^BYzqqy~>G4)_YL6|37(e)?~?XW$XO_k2%95+#@~ajJe{BiId~40aewQFF}xm zKs4Fb&F(9+zEVG2naT7bnO^j)->lEG3P6D**nHMOw~=50HN=VI!`^$XZ{>*ZWHJJI zpuHQGzVddvY8b{2GkGXej2e4IPU+)=CbxSM$k~sE7Q+-M#FTQbcf)xo!M?~JU2-JBC zr#dFn!IuQp(|5zDC7LNrW<%L|Lt?T?MnBqka+k+w^#EfPLUo{5>VD5m3i;f=9tP4n zAZBr2HTnLH*nIgx@IZU+&(SP?uz`Dl%#A*2grq+&-XUpzW5mG*SRsQ$;*U>_I)wVZ zCN8`huK$8KcKWjUMvb-TAKLIpKqI62k3SV|*9+A;(Wa?l7tAsa^BhnX^Dgy<3CA<1 zoJXH3gg8)CzvtfR~zAj7TbZ7zN`mQEqd1;|zl_P`RSSM-mrhJ2oWQiDEMcDME3= ze%EwEoak4~t=M-X%p`JN-vdFk9CYKMiVnW2Okr|MJiz~lSifir&& zvmS}ygjk&bLlK?OI?dw!9G>cm3{;ZhoL?f2!K#{uniS*g&1*`9WQ&xFWF(!g)AQ}n z65&}wS;Z@*$9E3+C0bj>L!dTfnP zl?m{B*E<%)t|<~ASqLztxGBfocTd3s+_!D;z?nbC3}c!ipd=8G)w42kK#R|(`9jNr zNMZ&Pf0H=2%$ZJZwp;4=aF`j8AnY#{wkro&GkLATm1=i_#k!z0ukif0^+keOmHs)I z#vTdVc+@3bAIQp*?H|17fbe7N6V@&v<_nq>}+X;r1~jEsu|IR>k-);%zpxv|`qgXfU0GeTkKy5ePr@ zm&7rk*Vij>4znWzonQ3&j4QLF^kkJH6iM`!xE|pP>*h*t%MvKWxj%>6EDYi+EKmAN zP9joM0^&Dsng3x_6JqaozxVddx@Cu)0JGxQ>4pLu&%&4)g&Go$D*lN$_KEdf&}O0W z$pOb_?>WdSXFdRh>5Pm1}C>EZJB%+)IgeQM&ms1WEPh2---joG5qM`bCGV2-GNu=3g7lY zZR{EOu3cw}S;AxmVn+`>J__e!#l$JDKl%Ix{hbtmHqrIjp|cIx4TQlh--B=8*xEzL zQ(8B56*yfNru658xOs5*6q7|feII%o3RV-nH0S;tMLk9Pz{tCPo!q|nX_trcMu3T* zQPAYFIZk5-A1<8kWW6R$WjS+len%X$?kN!Fu=+SsXpW?f(_(#QV&+l{I&ylsec)&I>Z()Ud;2Y46SF_({>TAMOr@CxT zH@`?63zxiJ!KD_Jm=F$&@2eX=eK=U@l7Mzdhh~cU4z_&0TikXK;{w$f2=A+|E8{#{E6^{JIt0HIlhmnuj?J4_*2_xnmJk`R4G8#4#ty!LV%WdJw0g9LAT^ zZ9HYKVCtr1SG6FqcOvVmUZwk2^v}gdABl_l!fRg^&(^jex09ruT8?=@d`H%N!htFe zG>FDwOV%S|y!m})QWC+F(Y!1Av>nG&d7M*pmL#x7PTpk0LnZXNKSz5oQe%fRb3!JS zZL@#!X9~m{ta4w%zR|?)*w-L!FappAQHqb5yX! zDwek&RwiHn#|{}^bkbrAJyL|jco+Ekt3me!!f-E!Lm7v)sLuR3R+LT~5J%M4#ok>p zw;d|tizG{t+{MT>wOG&sNYNq2GDDJoNE};H3$w@Bfb7gEXyv%uscQPPWbohSO$(45 z6wCVkMh(5l4_b0r;V;zd(nt8=tq4U98mnEdd-rM6jR9*{V|*>dYbq1MBftFB8!INj z_>p%=jwv3gE#2zc>BxJKWWL@jyd_GU`*YNMuhFF`Uv>SjTbBxtKzoKf`Q zj=f+hk#EH$u^9WGh-19_9EgU>w#NZO098l$g$fF;q}+H_RodJvBje3;XyQstOCIP9 z2sPEE%WIT5#s6U1NMnNzSZUIcK(^(_yk~~Stsi)YVEKgi&P~|$188N4s+#&HAvZ}& z1PQETv2GiZui&1a`E#I6%+aM4l{;;#m*UN>qrkqkAo)IUC<6qnZVDmmW<;9v6LE~9 zZjtm*RWVlu!emfJoNnB8OaobWv;wYbsWCOy4X7-LENK;G0K`zCqI`q-skX($lJ&VN zK{bNCjP!>2vWO0Q7)iSFj{{W;9wK0J47msK?a7?*SHchk3~I&dh|&2fiRs**L(GD! zh0uZ1jA0{wdkBC}WAXhZhw?nOLsoZ;^&yT`Ta<~b1!;iZ2$4W3n<4RmL)od_$8FP0 zSweIquBo2vj(|NlGBVqdIB9Oys=BzS?ovM|$_oEp<<}vE<6sl|d;_ZC<(I2{Q5i>} zWC-%*L3qrwSfSe|HvrR>7Pb;*k~4n}MvhKaFJe0ATn35P&1`EBRJjNW{SBsIIAPYI zeEQI#OvGGLTjJO_YIy&Es|{Hy>4y&G@SQ^$bQlh0sAQt>lNhLL%G5dsjiu^;u;t=@ zXvVDGZxJ%;8k7+USu_+>Ztcn8xw2R1t^z0X4|E zKL_biqBp7yq_buM@{TN1&bg8;I((;$~}bn z&^w3nmjAKpmBg|n03Jr~?i9RpD7Wc5;uwJOpE;C;@u9eqH&7Qe2WT;9Tg3#$<4xT3B9rnp*PtzU$L(q`AVU=vU>Ao6u(Qyni&-- zOl-Dg6?in+T{hKoe~#n@N>kd}2F2M$Huhpy+ir+JBM-{wx-^%VSmr6GS;E| zyY~*|y(NxWhw|+n25!^=4)e%6XMVy2DvSodwhm2)5zyPyk@6JSrd z_&UYydI@(!%-@BDzxv2Y*w(v(yK?@`@Aw&_8`v4RtnQC11|1R(#X3R!2s+2Jw^$kx z=l&e>28s<*HOuFan2fDais>;W1jM1A9Llm**N-G{4vnc&plzWC6gOlHHjbF@Kw z0c@v;1Crv{8Odj?R|ba)06Bt>K1!Dq*JK`1k0KV3@kMCM#S{nh(vrV){|Ch8CxRV0 z06C^R?xC;RXhzY#vL@L$yVu&*vJ@Kk1v((XwaO!P{o%)9|^&IPaMnJs!4LplPaH8o!ek#X-vz@;%<`wu1hN|po#(LWxu?$Kgwbv z7&5qsLqrFq8((F_0ptw^0OrJ9gVYW%%8%Hq4wS30$2Sd-!2Yeh z0@<*0_uQX@b_^~I-lR~!-t);vVT5?j8r<+c#oP+1C>N6| z2tCY?7W{t z^nc(3vX=;ZD&kzC=-{RD;&_JvMLR8)4Qh+5fF|FoMu9UDN#3Mfi*yZX8o6n1W0eaT zgx4?lnY6FrMevhH=`P0f)`ChehMyHjVTh?1-7vou##X7K!J%9%NFi|YYM8fZ?QEY< zL@!>nwojivAn3r-;Ruvgwq(SZ%%3arXGj8ErFY+~ShslJ_vii`;_dHgRMJzkZ?Yy9 znZqfza8vG;RNQ>YS$+(eZdbWWx&l&1axCInn;? z(eB=?1&ONo@%dQc20Xo@@VeLzHcCmRRC91!n2`vyJ@%iXlOpyEgjGLHj3ey!M@%4$ z25_rFLV4i#bkfVqg?}~n+G1(K24=^hd^YWQcaMpcw|fK&W`33|{DMsgW0E1YmBfmX z!o%u%*sp!h?&no=?$5yvXTRHaIiYJJa9)N!Q~S~PulbRj_kn^fErxuM70Zb}%D$iJ z))m{kx1@I>Lw{ZRne`4htFW1oeIjZv*$Fa1xJ!O~g;z zhH`Ne|?UK6JF{n#os!&&%9DAICJ{wG!BTB{5YaX$ISkiC z?E1qgY69Mp#TEa*tJR;6DdT?VElJ#;m@nUu-7=UHVcLG_rL1pzi$ePv9)EAkMgQ_r zR>09?+p5)TpH^S6;A^OXf!eazs1LDmDP9{psvTgm_d{W|8*poj-3n+O%^&+7&-gjG zAF|Bs#U5qiEz&AL{^GY3*mMFO5MhY+HHJm6Y21u#q5!J2h+c>3iF-^e(n&twMSa$| zt>?sEB)?)duiYvI1jwh}L) zLxNp#NyL>l*E9$i4u3a5rAt(P;Dy;!9FmLANE5aQpdDL|@O_&_SOGpi^XI^i-yf}J zIOc25=TeEI61QT-%P98Q(g?o=Gc_HBpjIm?nm>-6-GZ{RZ(kNk+igZxi0WX8DxNF)StpVUEIUhc25eyO|OL=*v1g+T1BFn4s5c}=vs_-zbb|LA^ zkpgs7?QbHpnESoOUu855Yzb)(NM7I5Yb5QJH|om4JNM@(n8I)Hl%uZUjI58LIEA)e zyY|c&VBu=@AHo2>+%Xu4K^-V5eVTWjDJ^ocurKtFTzhV>N z&&Fvv(2Ag+YQJt)ug>pi_G;fFcU7w_ zmwk4iT;!snm}Pd=@(;Z;$Hl7?h7OZFMZ}ga#vFym6-NT6qOko|UY=#edVFV|{+4Es z{o|2{&L8odpTk}Pd(?4N98t*87GuwIpjN+Zxl-`KmB0Jnt>cCd&6Y2V`RVD0-Z`X9bX0~j6q$KVfTm!f@-_P_c6fSx*kxbuDvhP=dJ zD9c8P7HPa5^zWu1%7Pee;oR2Pt>?(Ha`J*y~Ul<(ya=_PIZYJ+gQ|{B@Jmx%4!}SrPh~I~m&LDq=Fh9g#)h0^Q`w z!vTp(P24{rRdHxRB!}7Ia*yTXwU>}Y$S?RAQjvD1>GF`WIwUYTwz4I8u$6(sZ|H)0 z3IB1*#-+36qN9l(FjHPI^~VuizT9#(E?fJ>fgWfyH%}Tf6|Hm6hrXccd%3oM;)w=mCwtiwQgshfwQoAE zAhWA*jYsGPIIBpwCO(!Qv zI_ZY~dNiXO^xmc>TdU;gJY7H z%QnYqbUDxhQ6FYHt10Aq)U5~c*;Xh<$||iy{wwxsa(8Rviy3N z57;Ox#B%*7V0a@C=OGtm8ugT&i!^i0pb-S0~%X37kf=oJd13iG(-cP(oF1lQ1kcHFYbLh6T zYpk6G%_A|pko`osXL${8wOE(FS~6K651}#z_L3EkJ0}@#pG$>G>n=L=q(Eqt3I=!i z)5Lmai4y<=g2|C6H8~&QBL^z(P(PmcbBGN?+6}AD-x4KVx&4N-kP7cf~jSE<>iFvR?1h3x0|Ran;^s`E2>+P9KXSTb)#XCLZEZ4rpKZ|5aiIEb?v*N54)v#_0V`42 z26a_xx&iFtNPWDA$8&!U@yPngJq{ptz5QVO&2}kr-?8iJwtV*XK|4M!6fe-2h_ov}$8fFs5C99aw!x#^%8pr~x@>=%20=NvdU5vme`md9n? z6=ivGZ_C9f9X6E%ov=EHU`x7oHSt@~(Q`W_wq(`E>&~`UWjJMQ&V=HzkyL!EU_{Kf z=l&c)Ed3h&F;_vadzu49^D0dH)F}}g|EYaqUqKK-4178)W2V6Th);LUOKyga!_O-1 zT+!9+s;u6K&G--e#M<6&G0CD-WC@Z`ZX4+?$!B2&IIwOBi$C?r#o=xf&f>r5C291h;!T(JaBu``sj_bAJx*nd%yHKiMnw z%B=(o)MrEZ!nR7d*z;LUygWvWj2n1+b_xQAI7p~CSPkrZ8EbRTumdoveMxj#_%C7R z|FMitP_BNEyANpSq`UA8Dr|JUFDYidoH@^DebrC{v4o+w+t7V-uAf9TL5XG7oJ4GB23=E+MHh520!wFL(Ow`E&FXW}BGLgpylqMZJM!G(Cp1MDxgpWTXvth*_ex+P6go`fxkX z=P#}?_q-UoI;_Nif5CqvCH-~v{qK3$1PK<>ITszQ?Xz{&3G-YD7W8Xlf#yK4a1P4O#+zPx`EdQ-#&79a9;F+Dc^Pw!Z$K zz4+XpWB;{SMjNb4ACB6fnbS6f_=vudrYhG|{)3KAu`_5P9cYYVCoGc@ni2oWBJB)S zyp5!CdF`L3B+QH7ed2g!vIucRkkyghXqZmqM^plmZ8u$Azn{y@S&7PVAHo5>|*XpX;^Ua5r89BOam>auJB`~96++llNa{rDs=VEAlT9unRw2~@?U$_bG z5y~~`qtl=_X6cbwP5v}t4P0ED8Be1d$6jeASuj~9oB`2gb5&3-CeMnTuzPdY*W)M{ zLHdNCM?>t<6|7tZGo5S^Qna6QH0Rl=iKDf(1Xmc4to%Icff=0na}ZR^J4gU#mLl|; zt{#>8SJ6&c7@9^hkmpjEa@H{~;v?e%1FDFR4XY#*oGXeDEa?4V!b|T&cbgZ{x zd!W@890n(qsHwP<#8Jb=hcb}p0sI9I!+l&{#L=TI7oBJ^c{*nL#Y4X|spJY9r7cws z#sSfJX~wo6!G_Tb(M_o8utIhn;4*sVG!#X7lxRlI{5hsA;wMg-r#FG48}t{I-fZ*A zAw}`7?%GJr>~r-~gKqzcodKc&;l@)3vz6rM`F6m)L&>p@B52b94zCB}gPZN)sess= zC}J=OxP~M&PFFEk;_Ys_xJ;U6w&h}yWyx^4PMhm(lR6!IEnfM^7b7-=1#q1y(Gc)m z%gyvM5;JYR)Z2QHBfb>g$Uypz@5#A8M+RaerblBzC_;8c(xW<_f=4@c)D(u|e#p4R ztabp;3rDR+!k}GXpv0`?s%@7I+}4$vWQ0vO5QejX@OO8#Q)GB8_A0W9Y>p97y+Tdr zan4TKYxl)fSTtM8MMpsk%lye%IiW5t!mHX_49rXD=I8hXXh4D{4;xMU)^;1!aB-B8&#Yl%BMYm+|hA?<?o?qu=YOuGBge$KTHNj`!-iYTOiE#Wn`+YOxS@{zkYcv43Yzc! zxjzS;PX20PuCTZMFF2ptL1o4u>R=GhDWy={*c*zctB@jJh&0CRkcHG$SGv|j!+6WWh7V)lIA&!G)k z;4<|x{QT{;s{Og9nshaM;t)Oxgj3r!<&$OZz+$vx4RSZO#Ay_wxm99wz)Z0A1!%c2 z+CSb5!U1v1^;hS{po>G#V}$~;%+|__hdVaIIN$YN(BWI9TzoLzIGFi`_##2;HB}NO zWL-IvF*~O^R*FyoT69rarc1W#EF8e>{}cy39uZ~Du!L3!B0bExKZnFq*o|E6D;-0O z?>YYr4Y)9%JLUn|@R5eIwK4xi5XTE)|Gk@vLtmhjWYi%ZM+Sj?v1Bnfj?cdRA9jC@ z?!ZO({BnN2VbCjrS9t3RIs+0C7N#ztMn^wW?QLHVeVAXV!_X~XhR4%Vc8MJ7x&bazLh~ zZs(?A!>Cz`)MYzLj9``yNmum1yx!X~)NQkqBrpt>odL0;@@-32}i9 z*qwBMdel{ETroORoWDb!*Gc8E(D|0}3s#GYY(mR&?Tl9tKq(h58fY#L1@NmC3bHT8I#H;@0R!qP?dh=+@_>~nL@LcL zdK)0a8?jx|dJ3@^u=>&Y$T&9V{u~H1$SZEdZsvn89<4Q*CMXL66rbHj$0g8(R#d|Yz72_vn;;>Kb&-fUmv)6|*qmu<7#9}R(U zx~aKZC>Kq9nU~#`EwnfqnRC?6c|y8e>m{l2YmfXLu~a^T&cd6k;MYZ(RvW?x7;0k; zp-~<#N8{vCbnefA_b?%oNU*M;oz&!3(+-GT+o54q(p)<*xL^SRCc;20dc>v z_4#xD`Rg=gn1N?9N8~YV|A=gkRmsPU<~5MmVC|d4n)AfxvGQ-wt1Q+qNvda9HmX2R z#38$rs+u$dH?Zk*I&V|q_>7`R(!qkTLE9DkCLxSDj_Ov$rw1=aH-M$tBlUx9kSgL@ zcHYlX+7S>5H6!AsS`KncS%!!PuK+a$5vWf$RDoeQDaS|Kag&wrm8HLccv}O}-QDp| z9{aXy0+kkR{yCi=cGP@jN=f5~P7xosU6d@H_iK`!7q%*s4u;h_>Bq}7kFzo>I|&bK zn{8mRSm&OO!Wnp3HYvOcO3}t|2|{D|WfMdq=uLbl5X)&2l@QUL`*RQ%mqz1Gg+rRo z53D_V+c9^aQ)l?)=H9ud&cA*XFN3hUqwr4SoQ^avVz5;uYc_6?)X)z_+S5i*A}d-g z?4B)74Hop%go}%>eT^0$;c}>P%M=7X1Q#rO#B_xjzS=c}O%v*Ow{@UcVL4hxO{mHW(Q* z#z{=51;zn@#%)u(^rm?Ub`U`dRhdWxsZYhe=nczxsF#l3o@G7+C4L=iJa3kNX6e%b>uka7%`x)N^Lvva(l<>CHCb+T+A1RGqt3 z@tr|}XMH8CchAxBDXX-Vcb)Zf*wvMHnV=$DE2)%Hi@1g7=Iha z36MB4te;)ja&c@guOhN{3Ebg&1=>m_O;wa8x2dct^UR+k)nsF^${ezBI3{U5M{uU5@r~%#I2H@QOn1$Jb0U@V!TLoNm&$v^ zcrww=N|&ub4=j3wSm8~bxnB-61o%-qF3BL}a6(#Eo&C%1x41i8j~0=&6IV^Fd=dpx z5+1elBC2Mn^vVg^h~a;J)46j6ODm~|;`S4E*%;GKq2psCch?FV5gBQ0^Ro)zn|pC| z?$3cWL%c=7$iWxa8OdVkwS_9n&sJkfx|_X~pwb1SEV<6G@5CK$wG~Vbx7%V*Ay)uc zC4+(UwCIiaeuqndb{uU{mN~DG?mMsU>84{XS-81)kGx%!AhmS;dXQ8S$^7CZptz#B zbNtd)B^Ixw21Bd7&65N1JXr^Xo?rOWTQQKO1@w&J*#;mI)=eWJww(EM@QG$M#UGK5 zbY6fidW4Q8rIMc&C8eR(jE#*BD|XcfK33RbtTmN*2P#F-3yA?S-On^v038i|b#Is& zak=Zbo*Q*yn#iHAAafPI>1H zNZ=AqcPz<(s~E4>T7H23B45~a^nlO(IT#NI@yARNnB7v=G0YJC>W8fYry~0Dbt1;B zOT;TEkU$pykC(zHOO6-@#4#y`58j8lr^fvJZ5~$zn{aE3Q7V1nJg5`dK<($v8nX-1 zx&v(GVgEMrF`+`Gu8qDdH?5p!c!JW(S`h%y8GzmzNpB;k;)y(%Bwgd?Z5ve~+5+yW zk$cUr8;Hl8H0Lbfn{wXIfz}^F6q{0G+hPlyn~i^+d#tr#GpmS~7;bpCPj zEoX{NH7OmKt6eUOIp(T3+}@k+kcV0JvPo06JaRy+B9@z`eVYZp2`_J8yJb5KS(Acs zGcVSObFNOW?gMflH@0L^c6i;Wm`l&i=VED!0o+8~6L^;43kjR#HCl8`l=R$jU@`h+ zCYD9k9dzE$VJs^*W8d1?KFmmJMzv4ea656afI9#9ikqjuOq7KU!;mDJZT?Xs(v~JF z-LyQMdQ8hvlaxihHhI4O?u3log_DY6hdmGBGS?bfb(&@<%bxip%aMK&0$7w-c=je0 zKE8A#(?9QYn4GqRf^*#chfiA7t7Tox~{JE=NNeFEMsN9!8j*X#)Ta z6qdcpQvNgTAJ{vQ~LPEn7zCa zFHP1oyg|BWPYqUnZAU{$2Bgf-;J3mQMA1M;-Z0K@; zLMlq$CvkSzI()79`k;Uexac|&___U&jdhMDZEbsJ{v6`@PAvCS2^>}go(iN+MQsPb zc?K^x*tL0GVl`J)>PN~vVp#=Im8L7LX)GFL(3b)!uhebwA7OFot% z|A>AW@e1-zQYp^km>xnGOx1J4#g+ZmS?a!tw_{-*4!X}$LxbB-uq$ix@fYH{>MPWg>SgAf03qc7bm@1oZwW1K^fPT6Lbv?^yYVeXhd-!7dAwAN7|qh;uBFS z)98E#V+ULcV3s`h=g4;y1t5k!D@3j5Ag|IQ>*&tu1HLD2ovfZ~qRZY!$cKqfO`UlO z^c~bBkN3l9w}gy}hag%yQSK(>huma`7Z5-g?T#~xMtPj2ZViF}NCZ19SDd~zq1k4a zrm8PX|8m%tRGz38uNh`%VMqBGsBvxYZiIJptN;Y=T|L5l_2EQXH7nnoO_c;G%{lH* z^!KDb_vf&&#+9R>^Iv*$HxR8&d-^@g`u;B%E8d>)~jkVb2uq1Am3ew9f8ZejlmtZ9?*)WgR zeIChNCZj3f;bJYw@|AAe%YWa>ZLj=%K*U@OMTi6pg*v}ZDPFbs+c_qquMI~!8E0qy z967hj6$J)qRF?S&WilOl>Py#H*rFsLlOvDpEZ&O(>KDbj5}w1O*S&&%aK>y?t)OZT7p->#*>VG zwDIH)>>x4qky`+9%)7kq_c_8jM62~ML`4%JX%9S;@85{cm$ZsP@gKZKP?hKY9L+-Z zDUnklOk{vnJq>d_0u{22-xzVQ<76%=8D=-Q0O&Hjx$d*D>Nb_?u2rM+GNT$;iF3XF zy!o{nYtcWn;W5P`>4=X%g_%O|M(aeIhLN$ZBa_5edCWuutrb~2sT`A-uAQ$aF|tRj zs_`IOPE*?7!;XBV*z3Gx4WlE8S{?f+I0@EnTWlxwtDX4nrYr7S7r}@*_verY#blr1 zL=xQa&PqI^B~2ZC!;oxtZP_(`#rguIDu$Jr|1AMz+1PIUvMj^Ks0nK@mH_P+i-w8J z@rB&{VNMb!AF1j>=%4u}C*jdcu|<)Z4750F3yW|;`(rkQCXrJoDI9DnT1m2MT$JtD zSbJWvnZcFwMv(%gn=Ed=VhqN<8-=ElGk=s$q`&C z6r{{O$69kcW_^~SK4xGXvfC;espxKooERgMmZOU<|By5)O@`~7cpai1m0vBxRRaubC~r=VzJ7p0$CzfwV!73ehyDH ze6S4NhEplG&d4o3bY2#9s%tZ1=+dpt4cx}53Ih~S0OI_vpL)1O=%t$Lsj0!;6pSwN zbk^g(NtQIVLh*LhmxrfJhiCuO`%DLT0VBd#9L6-uyE3b5H$kZmrWz1|3DvGhW#M|q zqS!SB^5?{?d_iu?ara%W<#4j>2UVQ=bIfH`6rL#^%PQi=qm)(@b=eCo3u(daP;XdO zeI7p6Ox{NXaXOF2(|giM0@#??RsZ0iRVKo`ph(0#&SshW(5M(KNwqt*jadjGzaSs- z=a~+Z`Di8sFv~AU*^ThN^@|NYg9kvDkX&*fs0uFGxRw}$Hhi-rX}dY<_TVVyhr0O> zAzqlWNE&nQ&(YW(r^RyEy-d7-laZ2loP>j47S1(oPCGyrFA^~{RT=3;G_Y{}7ytHi z(uuQmswFpaxC{Hpk9iM(ASl|2Eenvw`buZ1toom4I#fwKp?$O?FaoRtCytVigVE7j zPEYDks#2%SH!-KCiJFeAS6m!BrrflFlg=HC8vYpwHjP(*D$o5n>?#~Nmz<=UNi^cF z3Uwtf5`%cutTf8;P?Y+P8;)rANjBxR!(_hsT_m<&V7B>lV#_Kjh%Lm;1yu;0!_tfG zw1T)mxB7@O|9z&zMd2#6=4j3(+MhMPd?qtEx#gW@x-3Jo2|FOY^Af_$g&cySHOZV3 z%yx9h;?zGnVF?dyA(FnLe$7Qao%?f;{jIOXCpSnH?~fvc%%9S|In2JP;v--wG5(8q zn++|km~~VINoHZ2C20qF`rt2~R5>%GAaVW*vBj}f0#e6>gq?UcA60*u>EK=HYtWAM zWgB5jjw*bUBBGpqsc5*>-&94mIs@(i(jW0VLJwhXNs&ZvDT^x^huvK1ZCQ$RJoo2N zn}tDqmA9S#l9PxT2BX>jmieD1@>cBq?)TolS+~@WQ_<+E$h+R;t!_;0M|`CC&V7P$ zgQ~T}mOnY|_!F^(QI&DZN*%jQ{`$LTDoOr4)4?Loz~@{I>Vjc3O*~xe==I`bj>Ss?5+LHb26^5H=)Pa zl)RmWc$Cfw3qq|+E*M)M7a>M&9)+DGt3)yF8RPqRYaW_{Ur}N9YZN zk%!Zrtk!Oytw^`_P(jk3pOsb@G`9{H41uyzFMn zG+GW$aPH3mE7OqU?$<5MaIjUdj2`ARJap;z+%_Ys^36fK1U$`c(k#ne!5k9L8la-) zWr&wxU9(NiNaJX#p?@5vHun8@#1>VmRDnS1s$Ql0SM<-F>!W{h6}j_&trfAIWI7Z- zWI9}^^y(Fj2np4r8Ha6=mQCKy(lbuK>aweKrosf+Ry&TT@;Ik6=+y)YMc!n?LnZXN zKSz5oaKHi*`hxy8+ewVU1Zc>85x>&t+v2{_qi%9G({>;2oWSFWb4d+wWMSrFfN>gUPBH@}9{*(VIK>Tf5A#8$LTi+_`b z@_@tqTHQ2Lz2F>*f4dc}QyvIx%A=~k7XP|2wf-ClUWk_2gP!)L@Tzlvj`EfCK!{iI zX0EnfshLUn#TJMdcM6AhR+UMy5y`GVaOziF74^*BBM=oZaW(I!q5a1WSyfwy0ryqI zn2||S0*&dtSj_hF_39@tCcrWqligUCNm<7Ld& zW+!huqi_GE*?4M(oBs*A&PCup$2~k$; zuuI&KB#2LuA}%epInm4!8MHs}*TM2}297a4*{jEGKRMHX8+DNeiAI2vKM`9}4;qz4 z#7~2f_0V;H{KCAhkoqI147!*cUUm2LOot0CCn8+)I?an!EN`PV5~sZGg2~)`{U19f z&(TSXEqgfz+VL*%^;d)Lp~GOXOggfBYw%j<{TwUvgblGN)Yrw{T_H~&AS53lw>eQl zJ_d~c1ucLS9bzmqBv3Y>GY0xeTe>E#TNJv;fnG7}(oe(|H}bGBf`+eKTyaUJ*6%lJ z=tX|uZ9yOKpZ%EWkUQ>`@sskRtmf&`y5wTm$kiBM3-MZIKG_jp{_2et6JY$vpU75q zPHpK{*A5;pkA6^huX=**#koI6&G#Bzn(|fG|GL%rUEL&*{e40@brU67UJDqUEG5O7 zLv1m1VLfG;2btI^4zoOT0HP)~^x6_zC_f2HO|s6@AgB=c7#VM#XBkxTX~_e9c@fG> z0CUwPBAhY{b&Rv}6y1@$jL2A4Y{?%B6)-ez5k?+@1?wZnH1?jL#nWZwS2ryEQWI9` zI=FzyYEA+KI_LfzfQ#WU64U2S+v|@Yv)T zkzp4mi}3N4^A5{Fe0wq{I!QGsC9Xvb+mvgS z&0;$D=ODJ-f;bUoGy})XS2Mmje+=k<`-&d6yQXeTxmVUJg+BuCsxnPh4JZLp=Dao_ z=MEFbkHnVLv5YX1HIS)>sdj4jaoaQ#|6bvzD(R%Wu&1PWmZI9pld`IGSPau~m8yBa=O7^O9Fl_!y*yjQ?O?BvdkReHj(o+=NM=j-j*any41$)frA>BCt4b z6Lno|8ipEAs6i$!ebDXr&V?WyxDSh`Y=}7252!)T{W+W^cA9E*h#LxYQx&n>@q+o4?8Ygb5U+V;>Ae-4q1~ zP^UB2lR;RL`|usIDpnr9HA;eKn1o>WGC2N@^v~5tPC|X(72K8cZ+^$m5FOYM{;Sy^ zR}4A<|Nctec(zV|oPx8$~-JN4&3f_gdRpmO|s60B%AIP}G_xKu34(&tWhl z7Jrp=f@M)t-X}oFbKX$+*GMOCSfnX>Vv^1|(hRzCJyB-3X@kU(LY;p^j*>@W9N`U! zO#K@1}-CilXN08 zqX@f&@}T+j166=1D-y!QeFCv#t|T4{A2j(@r{p^&f$_^IxX5-PfTgRsFWQimYfR`r z%idffVRt5)sa$Bd!E&=IO z!oljKC*9?_x`NhWGwn(|bkEApTpSJR5t|qS2vX6+!&|~gg@wws$BA5bdbs(k#Fq1W zj-QiGqyt#fP)oWq&F^?yKsxcb;Qalh6Xb|=V#I&zlKq~=%h8qrJqu${bCT>U_kukd zC4nn1hc3ZcRR&XW*|az9c*V5DY8h$if<;r${QT+?#fe6L=Y}@AV0s^fZ_*S&x zAkd@UdGS|?E$8Dv9iKGPmg8|3qv#^XGt#`2*<$IE_SbN~WiWR0@@10O=$SvBJUmqY*=r>at_D zF-3$EFZT~LBIyVW`<@g4%vkhGtwQXt0yJFwCTI{+baeke@jVF zfAo=l8O!RT1`N?P-Bx@}TgNW);5w+6WZnKiY=J3w-p?_9NIF@%C(=o#_5t9W$T6{u zSyPbYeb4i|O6i1dHx)oEb?TlrVmvvFjnQj(xzo80*$|PW=-f}>>PQKs85?8Z(oO2_ zCHXhtHT>vcl>|5a=uH3ipDGFd@VR+aikzvXO2@9>2z2im26+At{hoVjejv6q=l&dZ z`In@VKmI^EDFEjZrvhNtW%tz$H%{Do{DE|W)Cx3p990-9VDn8*s?b`n>=H@xNri+8H&(4>7)M?N zDhcthLXXJ8JJ6cL1qUmMG!7E$EbW#kIcKAs`tt8q60DCuDhbdyS~#aIH~tpcjM+1-?>6^HPEyX32hL5B3Ab}z=FpT!v1XWZNM8B-lmzvptM^I*+I%wy zBXI>jN!yh}mSi88@h4)-xj%;`om99u%tRjY&F{x(9TcNLOFHR)Af4D*QdpzA$dv!Y z9v)yq9LO%FOr+_;VTch627v3N^v#KQ#L9}noS849`*6zKm^cE0d22Ikp>WcK`?&rjoGk%T_NGB8oS(D{G#IFT& z=&tVGlTIAUM?XN^gv&Tc-M;Y{C;A&XbgrfE61@;gT&~(`9pP3*$R`8%^ErJ~L>zgh zZha@+x6}(c7|F7_?BIYrDG8_wlPkF-7w%tC66}UcYzps`1Zi zzQ6%hD?I)9GRk0&XxYj2nqVB@8kCtNjeTGNWt>2XbQPiV+ zKOmhUyV)UG%8)K*|Sv>j+LugjN)VE z;)=tZsEA0Boifz=$iYU%$rLeU_uXKdB|bvE%YI3No4e#cRT3mRx-6b;Gg`FLq*Xa< z=2t|&Y6k)j<*o|DbAOI0Wzdu<=m6ArKPR0$mhSBn>BND&S+DU>QP2}UmuY$`t#13Z zOVyTWD#HGrBv0J`ZzO7TRq`TD5+c1RvAnLOXV68FAMd4^uHwaurpx+D`{{qKBtVFB ziBM7n8_2#9k=IFHc-xboLCI1}=^;6QBmq3~+@Aw(VoQ%&_7UCC77W#2Bc0?4#P?=f z*Q9F#vx#U0bYms~l<6%#4wvAL2vyxgd|y@;en@IVMoe`<7@Sv!)ve7!Gb->s1wA0G z^7`4l&(gsEB_%;hy_0x z{iz1KN@5il$S~a@I!AWVJ;J;S)2TQnG$*2;2Lo&g44wdt6` zOCcVKL4TNr1}xQV$`T_YEEW^@S=p>r9cG5xW*!YOqDVe#+mvQF&r-cmt;&=5nF&mu4vHd3`b(7DXA{d^>K_q?B@J(~PB_3zT6EKp(SqNsZi8<G2Ro0{yAJ%A)Zk^+_pmn1@D9b+S0cCa*^y>vW!*0CI z!u(dMo?!CG7-!&CQUZf_lPWjU%Lope5i>l>s}ZT8cdw$s`OA84x3%yoQ7hi8UfrGVhqQP7{)RWB%gHKV{7w( zY*c+t)J7t@t;u@VB&UxBq}3m@Uv}hAf@8&Y_iyi&1jx<#U6&v!W#_uKL4-!6Qs#9A z52hWXxJELv#f`b2!5V-!JMZTR-10`mG5NMF1f(YGd zV=rB9GN9wC>%?bKWIB;nkW$e!PCAH-R8w`3fz3kku>d&n$DK1{;Gg!6<|q_lBet&! zAJe()hA?*R@A@wL5I0 z&7r`1MbdNb&w-yR5<}({%@W&5MMW0|2Zr--hwsBiHN*jJc* z&`0 z7l$H0y~NhDOww?D)cJG$NAd@DL^bHh-^Svs1#N~b06 z3{@PlAOo3vK z39@p?7@5s$R%EAXyk!T-%WIR|t7<6gCXWs^W^^yQLF#ed&jA9XeXRt%cf7p}n7}SV z;zQ#*LRZW@jk*v$xQ#2eCZ0|0jE7;BaSKWn`bihYitN+~FDhcw;?Ov{fUm2&ooU($ z%N%QOf2%Dtj5Vfhr~?&EnO!2S`MHuHYtswRSox(U-P3p8D+w;+Jg+9oSyhh5e0x;! zZZ!91{+gpW0M?vV48hUVaj`n{=MdxO_*p7OvTCrDdP%A=9+H0RY!*oXxRiBhFs>dN ze<P-_u2_L9r@A{fNOS$*l?NvYw_= zH67Pmzeetl42l4HB#I=aVuk}8sB@-Ws_Y%-Cg{MH5v~LIG4lMdbkmm0F<%$`lae6Q z@00|o%r2~_{0Ak0m+(%pEN5X>#sJYcTEp!l0PONGH$bw}zC7+zTIgVO?D2Ts&p`vb zcVS?XUc{JC!I{V5pJRDDEG#gjRh?uYj0_-FSQI_Hs67~}vT0&h6|FbtgTLvrG0fuy zV>-Q@bZz1y^qAjQ!Pf;L)*Bds5zSlIv$cEKFMzHvO1Vy5c;A)8>Iz644h9*6&FrE6#=2htjm%HT3KczdFD@X#d!Mb-kFBFgvFY81l|s=v-*@T zKHY5$jS-1h@#(>f7e_gC>4Hd?RnJLjZ0zxSB|({!KaY|CDM%7rT{url0u^LM-m44! ztggMZ$(rE0Ey+uh8t_pD3f45!+Q=v^EK!}fk28M`D)e~SWc>*fKV34sO^Ws@Z5FYu zaCMhlA#@8)(dqLfktWwIK-OHRHmHW#_yE`JF*^85-jK@!Kq|VN&=~>=1PX+f$65Mw42~_gzU>M zE(pIK$DDKXbi_oEl*@?y{oJ1;hvz=l!-F-|*o-KNa+~4v1lP`j( z3Khpke)1;|cj$zktof&2{uHRTa8KNif9}Jdd-<<)5`5yN7yilTUwYvmA36y>3g37A zsn5f$%sze~!k_xg=RXa1GyKI*e)8k5Fz|&2pMzWR!YwFd7S?q3*#l0$-^T%WAwPg9 zaD`ulj(`vT6iC}2dKvDq^5GX=fp6f1?~;aZ&HOHn`b(o3J0;l5-)`zii2@Lg6P z1-11PP!+&>yzt7W;kGOECw}TfzxtUE{oJp-@(UmR$Y($FQ=fyB_1T{XHv4m*_!)r0 z&wK_@`xoGTIj_77{Zk+O_=|A$$R|JcGcSJlV}IF6@R5)Glb?rMt^C9XpLY^`>@&Xt zZLuHw1bnF=9QB2t{wV$8OD})=!$6}y`{OVD%F7>q<%M7V`4>J7*BQL@S@;sd_xCvN zec;}Y{LPO)dG!2s}RgzI=S>-jBV<$0y(8Y`ym*y!c%n;l2Ld2jAn!-|I}hPu~B>_kN^# z{MLW}>E4Qy7{l)7ayM2B0o!9^2 z@b0@;FjIFkaTgPJQE-O^2h_a7g8yH!;Ows*z5A=LJ|MpQ2lu`Nk8j@o|A+bKUncMW z>&d<5pWUVJTf*`lx8D0JRQ~Cc5A3V|yZh2zto;4Q%6GQwzkTw7srf(Ne`}EaRT#b( z{eON%{@OdezxIm$Yp*`?`~Q_7`yoI5FlVN_^Z&1O{cc5pZ{Gg@OV93p9wd?B=3v&|M9bbbDNw0w|oEb*}Fae_xJw8U%cn;`SW?Z zn}@r3xQl_i82G`DfoJ#r;D?Oe{Y`B2-SX65&1FCM>+=2BJ9lgS{#o~TU+cU5@}+x! zdpz8`_gr_oQvm)Z%)R^l50^6X1Gipx3h)oL0)D5oy~hT<@4ue)-5%k){k!*t9`+tr z`8~|Z9SeIm7WVz9gzi4`Z)d)D^K&;pcQNpH8w2lNk^jK4^S?nEyvtedmb32G`tNq{ z{2*h|yRY@#etEb3a;LQYuweh)c^+oqhfoo|Q`+v7w)d{_{NVh>d(c#F)tdKy=6_#D z`2L^SdmYL9;{A6l?A=({4>HTXJGb{wMRm8(}?=lD9<4k`AX8J4N`pO@E}xzj~_l7{G+F8A`fwzJ$nUrq@*ZEr}wvBqnn1XsKGFr59OER$)3fmWM+kslR(G2|Y} zW3#`hrsa)I?2}QnQ<$$|F%46@Tt;z|Y=>Vz-SpdWcw?O29LDiv?X>5o{dslP$wTVp z!|x#RG?f@bRT^>I=hpRL<^SyydX7VR=zrhbQ_GI(R1uGW1M z6U?2zfzEbSv_I{tWs(d|v1qF<5A&=Hg09%)&CSWQt9D@;2RID7#bG#oUN4Gn-IiSx ztm^Kl-lbK#BxRb9)6`~H8CK6aeYwf@MY_uS)!BaA zXN!v>?-s%C=E3RIuG=_h^Ytan2h6(dC1Ht+7FJ&m(qUcEb7omvf7hco;I2=Vw87 zwke18#imHw)(@I&i8Fio=p5$_%v)K7p8VAK)oS}Y%N2>w-`T}Ywzw?Eo3AZ(QlQS7 zZ7@|CxP*91!kfO{4C#8kX*Y-A#EVVdhO7116y<(v9tC~3%&zYZPe*Tvo4OyyeVJwD zRFwUCyRFi3aS~pwcjRh6o)_!ts)1d+&d5|Zo37bqr;GG=*A?uuwNeW<1%o<0AC|DG&E+pO1Rmrt9U{^|CYz1?=bsk^oaj_Y`@hzqqIhi+RnUBAj9ILzw@GTveM ztQ6#8^`0xe%VGyZL)6giFxtG)1oR@$5XS}X3Ooval7lA^ToJ_(1EZD3xXdNke3MLrB$HJUu(#E zY^QyfpXAn6V{bRA?GWE`(hev2xS0snk>48F?~HW6->$mr%i+w|Egxo#$X1;7b<@j> zhsA?Ow*1aY2qDdtXnXA8W$*YynXUWvX%g2F@ra!&udW!iGUu@(mS>?8rcL7?R%aP> zXK7up$Mn2NP8LT)(H5yi{N1bfi=iub$L$v{lg0XBH63rKp}jw))3Rw@T&mCWk`p>- zE76MKm&-A2R=tzId7LKmqV~!lEYgq!b=HhV?d!3T46He3mYbJ(*rRIUfHAxtj%h?f4sT*^}0PjUwmP?UhngDo)2wX;iO2P zPM?Q;of7?`M9W=qR%F|_xrr+vEoP;6+0Y5aVk}heYTG}Xt&}j=LzgMPXd!FaI-8rb z)4UAIuG)HrzPqSX-Sva=eiv*9uaD$o>HLAPAA{q!j)!t{mSpQ9FVba>ys}x0mF->k zS>fY0Ei4DGwrQV?hvB%z=Cyr=_v>|Tc5QkjJJA9b^g2h|_3CoBJsUkWY(x z?PR1#+ZBNRYdHjdS_geYf^mHc`oo;JfFOI5Ew#>Hw;B&UGQ`2JZ} zx1%4+d2S%nNu=EIqkcbb)^)XRyBx!Q+$@FR>LTfG9&XpKohRw(rPnPUUe4;vB6x5$ zgidz4%`P7U=k#Bdnxft;i`_|94MDNYmaDMZr1$H-Jq*W=f{U~BUDp)JW}A;kW*G%U zB&$BXh?~w$C%+R9;Pn55mRO4bf2K|%Wb{hvymUidHDg<@{&|eJOe3@UgNfk!X!!db296PA( zAdmHno7J+}9%0xRbxQt%!mso7*>)($p*>rsd0w{7`7{it6%M?(?>8i{ACOIXZZ9^Q zf+UeXZpsptIzKyU*2!?5Bw=HH{d`n~dX)O@w#&(PD15Uj#%@@TmoS8uRQ)1v$7F(%sV=RHF2BC9fdhB? z!*F*W{w_+$*}0Rxn&+#V-Qon8aJq^8?6+2GYr*g9CNbD zS6>aC3y9Bh`I>QEw424%d09+X8?Phrc(dA_`NiX+9Gq@*(T#QpFx-$ZHJ$BAzaHvM zS*5zzW%Jqn)7P)Ne)(X(*w_7&ul}3g!nzN5>y`qpPx`RDIp40A_4N8!wpp}^hxPJw zb$068o7~!u+sp9=2yxoC!)@M48j_}A;;BQ6(N%TyoWYal6#l`zWRc09zx zvIi2-mMhz?lkLJv1|>dD+ehWX2i`R8VN88WEym;N(W?)S&EUKks=V4Qc4N3pys|2K z%yqkDST`j=bz>NXJu@CHidQe%#iNVOw7z)l;?1{fV$1!NTB&g!hFNnuwyWdf?0>p) zve>!_+qJ#!)*A&~hWG|5md(Pyi1B4s-j;9iVuk%Mi|Kj@9_`B`g58xz5&(;kgc;FIyL{3`Z`|)MPW$!A&E+8|%-X&AlUoZ3lL7qWkx#3#$$7Ha5aMdR5?8g{3v?U`S`UIAPAor}ZX38S>`SHm(Jthzofj{5Ba z7(Dqlh2M=`msC|EOlhr}`#J?wS`2C8nnRi@juY;#EW5VrtIiDjyh}k2N#DM_T6!SO zjB&A@7M5SGD<8m#q;BAC{bh~FkU|9$mQMQ4nMn3;CEaQV8#LRUZca9fC;!6}C<9eJ zX*TQ5%Zh!Sd$_2(G7qZ8gXPo{FR2r3;-cxV9zB4VKFgsRpNd;3$n)m$usf-)tYoaTV6l32d&sPh^6r!|D_{ zNy4y)xm&oq3MgnlrM6Cz8rJvvbb}YKwsC#6uEw&+LO7Lb$kPNnO)@TreOal~|9FC1 zf`fho1#-P8Ln!XrJWKLsL{A21!k%opUl_v&*@L!=K{;6GL9BKC#;|fs>+5;$ui2uGO&uY>axZo zkqID?c6qh!^zNjpdw+egEQcg3hvDoC^7hL@>ICw?0;*EIS~14DJsJFVi1+*BWp{PH zSe(4kNT+M!*>8N|zMq^Q*TdySSY&MqgJ3ao%^=D17=AI4x-9Sr`oLxZ6soGBPDs7Y zExajsUKu{;dNCl(1Vs-SN35$cqqQVq5uCfj8>p2Awh(FGLQ>oHH$&i9N})eV5Q zS(Rj6oq{emmDs`M!o;_Y} z>Yx~gyll#*z+GrBZFiX^N#^-JyfX_pGJ@=OSe<=U)P{7nc7XF&nQ^3M+eqI0!#7qV zXdp%Qv@^1)%N>+2G3e0oE-}U-ZR^%ZA6#`scXD&uo$evQY*wd5c3z}ASmSclZeJ}D z>weiUzUW5LX8XPQ52KxNWLcX71zL(ow~emIPVN(14U?$K9N%eMEq8Pq^r+bKQrB|# zQzRi|>yR5o-BBHBj5Qq3Im;H2r$?^mq9pKKH$Y4@G{SgE--c?eM^2YoR8j2Ojx*Fou}G90vkoY6o!ofJlZeTs zcS;B1l;-A&K(pC68o<{e6vYq|*Iw=vrs^Wq_K+88mIuFzBYRX?q*smVfr20~ff$#p zp*yA>N+`uj5a0y6Dh`OOYSJnUb*1)4!7b@@#ZgWlONZfPzOKm-!;+$BEi#X6*NzZF z3{`NJMij1Ciw91sxOwQiQ5hv}9JwM02H{2K*)cZ8INf<+ToTSJ3yAS4qC$;#(tl|w zxx%mxT}iYMj%TcAWEQS<$%}mm6pbZ4(G5r#zNW*hi>aZ8jA6?su@Z!?B?#hteZ@AV z#^BVn3#6xtUq)`|nU-bqa$sQ1UA0+mbhagOnjxTDn73ha3@>n1gX3VCkL*}AHIE?O zje^v3*S1CvKApC>cMOm$YcDW;QS+ki9NS47AV1$%T$no*O#LPT_U%!UhH-j~-Bh7O zh!xpaqtRC!E~ML1pzPYvT`P}0vP=|1a+APUtZEL@nwxSI)%w? z0lQIVQPLOI6rQ`S$#B?kT!L0_Vj^f$AA3b;}D2rE#^kguvB|6s4Vw%OtdwsMi%t#JnHkz|MSC#b&ZfQIu$yXC+?Z zY*(#DMzvI3Y|z}o2_q5N44k}m)WnjV9@{paYnx7XWAB*gp3NzOqVUugW&snEjHAQU zs3PFv?_~2}-VbxhVsuT6v=i7n&1r~{?&YZ%9EQV%r5M>hk}QKi*_a1eD-XNRr(uY2 zk;-mbc(#hM8-q%fH%X3#OipkG+=YPTjLWCaD;mPSO>pH%IL=t%9F;xDXU0tBG$g7{ z${E$@(yA>)5uzP?A*gL^xTFpx)%94(Gh)qRqD>=N*o%>AiY&)aG_HQT&PA;{4^`g? zdo$aAxngAt_S7s_XFkh$VXbJ!6nL4h1%B?`dUw2^Xr>s3ktXYP!ya*t7h9`mp&xsm z9R!3Vm5q>-AU8;g$~B_6R99)Eukv__0@S;{iwQEC2>H4aYmKYElQ<*{7I-cr-4YOX zSvwgK!@CN`vWfAiN$bLn>eTeG#<``74F)N(>zJmitBPkZY~QGS^BdbY{JAWuS%h4} z@T#U@48+mY3`H}ApP6PYv#gaXfdjH5_TyVwi&jO>RULvQo##vTi1w3EZwT*Iq2b^~ zNN{aCU|J#2O%n&Bpj|=b*7Csn3d?mYzH^k4p$isaQzeFJyVyxekKLRyY9n~EWvCi* zMw6OrjE7VQj6~6#lCZ8KD;iW~jCqy#s*#AuaKj+Oy3B~pZ2zxk#{86?J2mBuuG~MU z1gyxhA@D34@>Doud~cy@f~^Uz>giTySGS_0PE(BQ=(J#()T~dBs4NOxmr!1BtG3>k zUJ$mPTf|ODe5Xn^sLdi06uRt-nWwm#+*-Vg2%q^h_ASGXBE$D1+iDt4&jpR;3|`cr zyr39`GGs$^ameB+FM+wo`lKkOq_S}$XttzlzQa^&05+O+-+C}(=!T~J3x+OZp?u`h zBne=b>zc*RTrzumY4wO>FvW&}$Elf`-U{{s!#Sd1nMlhd`g}Ojd^>Oi!hiv*I0$NX zuj;HgU1eqMd5s59f>Xde(-gS%ck)uIv9lXbcCZ}+bI1*58!=f!3xX~&EOHsm9y3r$ zC|2<)NyUtjLTT@{m05`lPiL+#GmNO1x?#@4t=5gq{LOlnX-(69B*|C?cq0|W zqNa)pXRwz8%?I2}pyuIPW)#(RZmXq0_8ZwS!&odG)W%1|Ca%i-npm!CmADWa&i$1W z2WtoTcg;>l{JtE#B! zp6;_+BD08RM4dGf1KWJ2st06KRkE^OK8>tcK*T;$=`52FX>4BC!w7m3()Gi{tIOy- z&XP>@bdq8hE1GR50X$nb#xT$MeeL>d`T*5>$OxH+3bnXcjp* zwi$jMd%hxi4(2$40$`00g;8oS)f#Iv@A5-xFW3ceL7w6{o|k>%M?q-cf? zCxH{(&=z1a(WlbH;$*NK8ek#JTbF_A#UGV;AMxhCLsPnARrb@Fm5?ef(!!kvI z1(Avq&5rCS2Dn5E!?F&mgLJWPo7}}3Up7$7Qnn$>bJ8So32f8yT{E-YMeSk$YsX>( z-Siy|h={|BfhOT$X;x@7R2zp`S_5JNqYMg%*PPIB3qjGjH!$nR5NvZ(u`3yAb4i0F zU#glL34%e>)NdcpsEx1Yg(Hbkxq48F>8U=arqg0JELGZtM5KcaG7KE!8rC!qxTtXz z4*~m=L!YxF#dd_+G@Qe5=FEJEVoRpzWCQ|#^qj$yzo780mSoW~bpY0E+c%KwgubO? z*JXK!<#sJmSIQ~QAO>SE@Fjtu5P-t4A_rjuR)mXmdKH45A_kmdu$&t6RIqRZL$I;L zFZ+;6oY~xeqXt&S2<4(n^sri^8GU_oN}c&;r0N#qUA1YzhQl4YoO_x{!2Ks_F7Ns*i*NTeHb?3Lh)TRY2{AeI2`PpgYKPtt$4M+~xt? z;-pbkeyiqoN8=cvu}a$SKP5khZrw$FGkx5vLfD=M+BFbRd*a8N`dguMFPCzUm}O>^q$A3Y&!N z_Ix@y0k;v-6-rzk$z8)}8%ZI{)GIa5G!m6(ubq*aaVag+l%ved`;d$^Pj#?BXAM6q zcMtL0f-WDtD}~_ndaY9^ohP0^qcF;BNWzZ9sUjt3ffYM~m2QCmgPoTcjN$2h)P@-N zlOJ%0;kfKP)rq63xzxh5LkHI)8EqnXc@4v%PJmYjSp7VNw6{CnfT~X4LK(`Gw7aUktCocppQJFl9YO=71 zf+A3)ZlNF$kcBiwi5!txp`&jz_~#V94+BWIK%89{_oXWYz;6`Zw|!dj^)?q!Oj#ZB zPa+>E6iS+~3Vn4Jq*b;%-uJBDBJ9{fti_|zBEhyan}ylZabP*bN@JG8+>AL1^|8m< zrb%Mb?l!MK(gk`RZzzKjL;tn6Fsh`MF)4->$#3h)9Tr?1YzCj}m zz{#qSK!?>LbgK9mTe#|le5E3}8DT?Y8Pbq0@dYnj4iN z`fqk`by8@oLn~}^-gE`f)<+0cKoZ`77LSdlxvHPry5`!lW>se>?z<#%s6!uPADg;J zBM}N7iKS`A)hdnRG)WL?QAq&S=c=KxH1QP4vS5poqL-bWVO8GO*0;kkRA5@Jt$DN` z*3fTN=fL1WEPYPlLvnC%6soj*itWIrjjJY*90_ND>AA&w4hri z;*y}uBqt7Cj@7XvJPTLAnKdcl5|2|rwQvmCWQ~W-Tr4j%2S=dND9~&MO6K)%?{u6{ zlmIM1g`%%iXI`w&y1i{g(?^6dRmw+-gR}q1zQWEXZz($z!ar< zC$KOI5-5Waz!s7f25JnnKH#G*DC`^n%qilnXS#8w0{g!e>~n02y-I)}k2*foJBH;j z23Tf5;hRj0<*wt65`e41p<)0WO+L*!YKgo+MSv9LHN(U)(dDvJ?1UiKI&gJ_Q{>x? zr}3b`%-m?S_JS2pnjj%9kW?QjYCu#GC^Qt{Nxu-80IE(MDwd?vUp2(85+f@<{Q0h*mh_z5%Z5^72hy{XxWthmceCdQR z84J5WybsM^_C5+!9br#lfm!N?ih+4KsYA0-&C?Y0<--0wXmP|=GJnph2^4BHD={3< zCeb~UcvYoOcQdFGH60lSA-PM3K17Ti@(gG3!eKa+%DO1PtfgD|mX?oz*&7T+azv*? zk(!+Ss;LJ_0+N8|1X^hWohe+I^`JgCTm>jT%%~PRI7=w6g}x=dXl>Z)rtNu)^Lh2! z+>oUCZ;oMxCwIjDx>6A(xb0@^vUDb}0I0Mt5U zDCDSe5A4g&9mfqpEJ{h7=n!)*f(|pSh{A|vRgJPGcS*c8Y{(cb0wg&AiK*LW>f@IB z>W1jkXye#|iW8b%biefJ0vv7KC05z5c0y4%EyVOCWNCIEY6W5=mIN) zs7v!4t7sC<7?3%T=c|HY3ML6OjTU$+Nm%yQPJ!Z*;YM3^3J+tiIm&IO;7x*yDu_cp zG`P6*Y!GscspP;+4*bSTCNJR7%9qX)SJt6)5}}Z4y|!0VO^UvPJjdcn*g`~!Glu#t z;NQi_Dm69V5d)&6CeX(gux=!pIILve0WTb$)mJqDd^%;DKT~d z*G!Rz7*?PPlvP^+I;Co=ElUz5!dP90Qg10}QpX~T1CcRY5D*G&J4DEcQ%YrH&XIgjYh=KtwbGVTJ>g zd5Gglt1oj#Dl{tbG!XbHWitVD&e{^!xmBf+pNPte;6>!SZtSOPq%(t^Z%P0VeDzMl9WzhtFU9qeHvYu@!I7%`M9JNdN+yi;tB!(bbx@N8_Q?zBC zBIE~#*CViwLB!iJD z>k^l-EY8J9VFKc?ldZyK1875|fq>lRGN}(;4M@oYKInY`i;QM6Ob-7GVL8xeta2&}||)CMiaEE6_1Af9Rl211r;f{Z^I5*#_;WJ}W++F`tu(E&a< zB7)xmAtQztJ3b0T#V~@Us^HAv5gtO;!ZHc0q<2V=Ih3d(2g*?=7Aa2VOvVz! z(G+YJ`r>nj(TI+S3N0l-j(I~gL)V0voI9>&36bIyz=kvpGATp94b@}BFpk2zCP@@Z zdb0rn>((00Kv4}*+4wFo&tsN_Ia1l%Y6;K=SrUJcTB*8()j>$pL!vmA;q*SAKn_zO z`Qr8%mdz%m$^&JP90vJ<5)dSCZqCEUF}NtPrT8|m29eaUWnhpa`L5#uT*&x7W7wi1pw(+e#h@|7ur)_7o_z=eHi zN(ML~u>(^T@ECMZXzle4&p23Bykyv_>7)iQqnKev5vuGcXb zK~imbxv*GH3sqKd9GZhIEocl`#|a)H5I?N(*4^x!`VWs z%_?Pv88M71N!1`#hB^o8xP%VFfoYZy3k@DXLE3^nVxf&dO9)6K20BQBmg5SFhGGk} zK0;K^bVDdI626J;Omczw*}4H+xAav{7JMPc;uE06ko1hXs3LHbqI4C4gzLgp#+f-y(C+CTx?@KsPO_l-6We@R=3P zSa#-F4HPwYArM29fRef7c6B(81>FomMrX8~KBB>K0P~7*axAd|l*0(DIuj9f5?6%J>JMwOZ?4AeO?TxBJo z)|6b|;EY0%))B0cCF(J!19h-si)CmopB?|JnL57){~@82USqrag=hnj)i{ple2y|_ zwC@dI{n>_sIZ03hJ3$-;%N?ob=LStQ~(Lx`7z3jdC}xj@2ReXZxebbbdVks z&OOxWehKEO;Bl-eiQu1_C{_wY!!(O}2z0}CEx3e+mN3mT4A1eBImR>tRc;`oglJ)$V)mai@MBa9gi%U3cmVy#?b>!g;zA41WfkG0l5wX%hWZ4nc4B| zt%W(562OZB`;QTAF}PJ4e45r+aQ;-*W2n>ehzDQK8(h!G35PiTY7&9D-ZWM%GeuG@aq07# zVqg?%2g4NQZkf~Gb4_H6O}Yp zwOCDOeBstk5m?O!PT=cu0ME=LfsP^(ky-_tK$j%oJNb!Y#Id#YJPgvjE+6{jA@gX& z4Qy+vD-3AuapM;fsH9rTXiAV$Hl#&@=ep~GI13`-v)N}U1)KlhHv<5~H3!XAB=FI?}3X^rvj}bNyrNI1^K&K#Y7^W`pE#!VpcV6E8W%&^_Rv!eD(7_J<127~r$% zI7?qBJ>Y+W6S>J2)Lz9a7}rz=qLzaJimxeQmPWZLj;ugo1`bR`8&P0D`!qu&u%4XA z;6Ff#on{&hJI(1N#>FBkXjkl$nP@O&#xsJOtU`uWK)qotRux2r=gfteb|&)Fz=YVs zfh61lwHZWNXj*W-v{*S{rx>j03S{HcwTvoJ44oo!e9s}Nl9>tvtt7eywJ&U7Xb%Nf z38Z{m1xL$EHP|?S>IP?Ctl2PjRWZ|mI@H^saL*CXgToDzBC0_1If#a$ zisxn%FN}4OQ#C^J$=r|yaDzi4*|BbeJsU}S0*cJ@ zV1o+=pf4^nHHjy&5+6}O7l4p=0Rw_VE`jclJ9ZK3P|3Q6#5kG+A1BI+OmV)Uc*CH^ z##&@m1B&ht&d>*AA=Wrmf=-8!Wo7zRup%MYR&$sD=%7;Oyx@z(2l4`x^^hOe?Hsu6G5l<_goxv7RTH9)1oArS5cleuNoVAi-a zsLvE!YXPe65etChdgR*_o)rz=%Ss&;6TxDWSq!J^a=h^cCKX9Q@T|gdal`w2ZpHMD)f5q&9yiZW>t(_F^DV_ zVYe~;X6CoRM;aCY41kI^pn#!u!)PNr|?jKU1IC9{@V@oWcXVAsO(?C#~;f8fTa;53M<1aRL|OSH8DDX5b3Gm|8Hn(L88K z;)Ca~xt(+EWei4iccl?46+>(bC6VJkE3jL073JJ-5Cn(ZuT%7iJpVVBy)Tw z*Yi4m#{2^<1P1?Y3XgeNi!>+}eY+?G#ss6w1RiIJV&Yb>EBq$cdo#YK8wn)9EZ|wU ziD_G8^hgh&^<|5649=6mjhqe{Rb~N>Y0yh85B3){lTevEn;j=%V1!=j>mILfU;p~s zz*A^*5IvfQVB+=C0^Ob^Ck|)WTE^%W&IHq?*;uAypvFd~*)T@m(+1PyXJ2^BxUAb{9e z0N3=kjMag`ZWtDaMm^(sS(OntH*(PgV(%dkBY2OVQ4?bG6j@aPUQ)iB9^bGGGmnlb zM2m1@8Y&Pc$SnD-oEBty#lXQ`Q9=||b9Aj(siD&eOD~~K=P(@BglY&%*ctYPF_Dj` zTLw?QP2o8RPZ0`jDBiuy(M1BrIng;VpP;RQ;~||Tx$c1_MS&W^xooV;JPB~%B*BSi zMtLRV1IIJPhy%p|DGJ*1(iHK(CXk?HUyHzon!Gp# z=QRcT7{NUQxxuSt!i2I47o>|YZGsHxO)=ndOE1(Uj^T_{@TF7|-8Zs*BVcuktRy3x z<*=6Ej5$yZ0rYoJ;zmU>ML$D|j1)md@v-TIk!OLL?O0(Efhz{Y4lI9Av?&G&(6qon zYaGN6PXN{_XhHxQfLIRj07@=D37|Yw5HM zZ8a**F@z-!2V>=t%4@WGRm|D=97qea(^)J+DztZ9zLT+fL_v$74jLmThq6r5Px;RZ zfCm!rAqILeIOuGkXc?K!Y7H?x7y+nh87(6KHTjprf@9Tv`YJ!Kn#PaUgzkH2+liEEGBr zLuyL16b(azUn|ItgFWa7;7_T(dFwyKw!+uYjmDY_K~LQyN|F$*5omffRnGyIk>#|U z=uVuwAbCK&)+366_Bm+Y6pc7@7i(~h8i>ER77S=IRYCaBSP80bQ_mqI>!~_({a?~Y zMhRCu&1$gcSQCO1V;;0i5L~oFGd&Aly~&ygh4XoazC|AeS;$c0pEI931RgMM9{x6i zas&EOIhaTu5d}KYJ#d2n%T@N)d{9+E1L2sFuuCU8e>4w37NLkFvXX)=i*RDPWFl=%go2G|uCV+G}s9*S%nRJIu-%5K4c6TML36-E>+r@fe0a4{+?&j0xwN6ut| zV=4wZqnqICd5V&Ok>p15JO|B}Zu^wx$~uhtoK?XAkR@UMl>SGsC^8hYtmrUL`A^eG z25Zt}0Tx7A29^|NYESWGMynxpD{lkCRn$%c4NrCh$~clBj^;E;Jr0aTQ4^RFWH?g7 zbz7bwa>VwqB&j;+V4fq!K^)7RqA-}#YDpdf*C%SGNvtZmO6b7#+mCDN%PV57HNy@} zfKRAxWY8DsG6#SM^C>MYp7KGCH$3VqXK))DhV6eE%Op;ZIyW|Ur<5>y~Awg3{A_)|9jKF$`AbCK% zL1D}AV6VWEaUy&kL&-YF*!-NoZNUbA2E<}$c7T=?##tZbAZarInjo-2>4i+>IB+;i z6&~SbUf8i?g2x1vdEl$TPKDlkSC9h&dK(ZhY41>DuN@3G%Z9{_>Vkc}o3YUZMk>tT z2K-(@2OO{*=qQJxjMpU~uEfVlt@1M#+AkBYfUA)uUNq8@r8w|^Xz05FUxWwA@mu_h zEDs;S02V-dprLUZ^lCcu|A)ORfsd*>_vg+`W)cEf?m!5Ht&_-v%z9_JGjk`~;8J;P5>OPE)<ctn&#gbC>oF$d9MdbW6 zoXWZ2{ADX@vBG%KQk*ha_C@QJOXts>f7#U*=ju5NS1&rh$}+cd?j`46Tz75dMGG&x z@=_Gtcwhj|D_uOdrmE_iOR*_}Rh;;H9`NE<%^(7< znlb?AY{|yMI=!#_KA+>Q1!uJM{nq`N(xte)-+RB&wnE5L3aKi{Oh_l-a|!q_g+!(J zTMYi`o4%-2C8~7vQz>5MWEQR}!&QYU{ena<^e?3y|2r8ROvGz4f z5|-c^stY2DCx761O+i7u8{$db}6b}t)qEp+_XxnJASy(4@2=};O zav$5N&xxa}AY&g8+4r9JQ`2N3{Y{0%R9H-f#ebo& z`1u>xoq|%*I;~^cD+{=Viw-aXjv}O$Ofyd&lf5OYBkR?|wDV@*UWG-67??U?nrU># zEu@3ImSGr?nUhyIW8R{}{SaHR_Qai+-$gi0CZ+jGp<$viCwB_&qHpVmyhY%qO(vN! zqRkp#RJ=uHH2sp<#S_PkFPXRK#eVo(1x@idq7ZH7l;V=jSVDN&l8)#0PS4Mqa?!%0 z{m^d}wA02Bq9u9fm23j`QHx>Gg4t6F3g<0)sUPxfg05r=A!*!{X&ZpsW=UIgiBMR! zfQe}yNwAbsvL1*>fVg1h^otg~+>hioA#GYdA^FqjYR6%VZqfYd)8;YJOd67DR-@q| zi+0hR;@SPNZWr{^@(3}NB+zt=7F;lQ@hkm01)e#R&kx+ zYjjDxM=IoHE0Yk*(~RjwvwrEC%b1*%Ow1Ua;2+eM*4P--p#Jl6vkH4Pd#T$|-JcrJ zO7cf^8{nWtXI<&Mrjm^}IV(Rw?x01x%0H_L#Bf=>+_T2Ny#H{) zATKG?%)4mDMvQ_NE&3%Z!#6fxzL<$Pb8gy#`4`NZF`W+Xmn;VBa{G;64qsvIKej=2 zdWC)-Zm3=|zoNCQqwG~{MrGCIH4Qi2VE^Lc{-I;DkUpbg0e+}@#T8d=UEQ(zwX4&w zsr5zHTpzr0$&r4JzgaK{)8|;0t+>X$Me2}V^BMf1<_70g%NF;Kc$S=+@h%>7!ex3nWmqkXXYvh5H5+mQzP&UVh*WN4k~;x%Y{*AYLsc>mvEIfY7cY7~nntP)4WaD$IE%}h zet0OA&&PyhA0B$`^Klj_J2;%`=j1ea@WBPcD1c7FJ_m+T0-ZwARQ24DtDsW|yZeV$ z2LZKu-;gSy(*n1ka_>-zAtX!HPYJ+#+RZoND;1y9PH1_1+HBpzql~wH?N?Fu} z@b-jd@WKdq)xaCHG>QpaCV-}eHzpUDWA5NaZ9RBgKu^PwH2|T`jllIV_w(_2S3S#+$wNO zD%l{Yb$->y%&Tq#y^olXZLr)4CggU3vo2wS?w~y#XI`}(li;!slYmI|2TaJF0#{YZ z2HhoaiLdJf1)@JP|E!dIcj|LqIR=muJ=ZWZo@6xK7qi4CQgg{!Q(P53V=Z zPr$n@%93ru4nbM+HUrve;g&ABUHBRdzx3}6_-Vi^?+|t(crN`L1AdCaw+mmV@V_$P zCn^0qg>O*$e__BsrtrIj`zZX+4ERSDc=_GJHzD1UKQZ7ZsPy*;-=fn0kpVw$;jGnP z5x$M+W&HyK{(*(7o_VkET{u?tTMYOyz%TqS;lBm$!s_2K;O_&zV2AKMcuVzf8SwWk zT-D;Q3HQU%s(!i2K=v(aQ=6MAA)}M&lvE(fc}#23O|Ac ztKMM1|4b#A^F84wf(FkodYyssNAzI5Uw9ZCVui4O#QK9pv!rUy_k~A6p=!x142-uZ zg$ISlD2108@ZV7$=KVl;T+qy`t~|=X_>D!WdPsOeP^#J(&|ibT<%hyK>Lq1Q2?qsj*^=tTdl)z`Qc33Q z5e`#pR7DvWN08oCFW4uv37Q4f$TIs|6pQQM&9bCk-GIR}N;1?`+A)s+u3aQ0iYRm&=89ua;nXlGU~tNIZGXAf|yD`y`Seko{Y zS5{X&#K4Inf5S7dN~WSdUtCc;KXE z=9|KwfMuzwUh*9V){iMx^^$q*!ruhlJo@oI2G&Cs{ow5Umz51Dcn0i#cMHG z7G5;1Aj@FblCf{Vg4aS88RpM0>h*>(leZM^8L-;5a0@TcPd4bYO*7|F9tW&*Et&;o zIcaJ7$@n>x&6cMJu5m5eg=Hhsv^mq~FWO{@4p`ozNW3stpU+*ma0AW3lWy@@bn~Ye zj2Dtc>n%?VP}W+~7S71Xn6YpjP5qN>@7-?EFPb~XFl9a*1m#eY-93wb;q*)+9+6Fv zl2)=7{rpLp=iw*7)>$55SFw=(qTG=cizv#YNeftuZeiKTar0s-og~F8aHeG!ElA+7 z3s;JhTf8uV!>(CXoM}Bc%zAaGIL0^~Dj0h&4}^pZXizq2P!QzZiudmrx( zD01F;COp71uE-?iDK*=~nF}e>W64WXc)*+~(-T-p3RCJP3ucw!cUx5tNK%$=qs};M z`n*Nd&5gO#3$Z~7&dUa|68hj;5B zWv8VJlW5gttF{bSa9U1T$l@)@YE2mGvk&>7J09Zo;F-65u-dwhLVhl^cmU&gzICO; zRrBmMo!1yvuUs~-Z1%i`jAd-gK}-6A`OE#`2C4SSXIGqFk-ltU*_6qJ!UYQ$i}jX6 zmW)fPB{>|bT|B4k+3BaIr~yja>SBNi@@8XDY{6+%hLe&Hm}`=l42H)Y(oF*#)m89Pk4B7MF)9J=yC z;O`Ya64G(}r*K@(h&0xwpyfr2Vcs>8f7wi-!zw16k(s#Qt4vJYyz4yI%z08chI0!A8bT^qXfIimg}Uo%76>J~fv7Jz zFPD(Kh4(TDzGO+eleuwt5u#g!DqND?Gr#x!#rXkxSuFG8wAO-28qLTl(@LHaJ_IV&3uk0{6#Vp} zG(tvBE>`_iTVgKYK=(qHpSD@Z%ox$>@{6XaBS2d+tvl9mlFe5 zJ86Sq9bQiwNbmi`V+OpRc-#PYxqja6G%mos(Vxxz#Kq(bxDym-k8lSly}S04zn_>T zS?|5X^wa;({lq1ZtVF#Jwp_hS_>;e%c`~SP27-uni?gOUx71R5&yYDBa z_hp;ayRhl~#PPe9=^e%0_h?f%y(4>?dXIHc4;@Oe`+nk$>o=^U|Dx--wL$WqJ@*rD z8o}MXbHmzoctzK8vxw&AoohGFUx(M8`MS$nuAfEH&@w+q6MuRHZX=m;^V(TNM;moL zF-L7v5eeDMuj4!Tdse-)>ex;tf!+^_!( zld|$ZiIo#cddglYd!=Tpf6CdalUH(Dvpce1DddW#9$*Y)h1cd}XBjr*7U5S%q>VIA zC@h+Kh=Hf!voki5r-*ihaq`r|{SaDtlEaPUHh|14BS;!<4o)v9oZ8k8Zwt?58#)Q6 z&5U!EJ|#apO{2}3JoUwXxLbKmwuZ!rCOtc6GZqV8Hm6T5nry`HSWPH8+7J6yUJGp8 zXUvVv*#zvPX2aCN{B+%j$x~nIhkP5)<)mX_Iz4*>P}|IDQ>XAFMi;UWNfy?m(@D;H zARYl?VV-fq)R+5F+{UM6V?CbBrpp?K&AO>3WAvo=G zL+*^61e$JYVZo&0SNe4dJaDJU=2g4{W>VOn)*ZYdC!G*oP8{h4v$lAOsrc1?wC><_ zIndw8Sb~;js##!RQO@x0#wxpD_7Je*P3x8t)MhNZj3L17ydK+SBYHJ^{;Dg=`%?p24%cIVgJxaH!Y?f;W#eHHJwfiE zSvzyp>WljuoqAfDZe-k?hs?Ut<(^e#{n2jYbr@MARXZIvrxnk2x#uxl2*W0W=o47F zS=YFhmG<``I<^eyMsBn*FOvJoN zX@#bOu|^{u+b@|7B^8&4n_Tls`VVbTHICI!o`5^AO=DX}cZ`0uB%`$K;$`ke`SRJt z{R78lKHWIBkp4pAyv189J1SqZrY~83trQH|76?cBIsRtez#GS#XU zYV1Dumn<`j`-i#Be2h;s=1mYTvBn9fRazHRlolUkP(95PW1Lx~_<06gUH?qAtFAZn zl7JQ-`}zIs!UF(y;Q_$EY~k@PPe!x#2S{F0NPbet_@s~tNg<}Bkiuk;yP3WZo=cNm zfxDxVU2`sw@}$&~Lz4F+u&KSrbNR)|K%|hZg!gz-k`z*w6jFW;kR;UJ=efL6Ho5nC zQgj#74uA+rA?4=)nZds17|%^EP6i^volNGA@uYmXkPo1RB;-Ee?_hTG0Z+=dCxeu; zAs^Cil7UDuyQ2>w&u}5fp}11^MaRMS?M%J_DQ81Yz_({41Ci2gOmZhcjt%(;YA8zv zA|T>kFrVGp+O6rj|edy{v=8q+)_OH;82U4liBdqgM~w{b56n#2ZmAUoI-L` z_S{g5ol^*}`-fKU0JVJIkP4pDJXct{cPKRva-#C5hf?))^4$2cr$KV?!lx4odvfs7 zr;F!Cm+c-(_0xqg_Jn!x`UiOBz#Fszit$`&F%SnWf?^=}xLGr38Kh8xgCMFUj-nDA zLM^1>DM9Vv)ey&*|8ywj5D^|TYX>Wb*7G=E0(yfNM8GTq!9fb54G3>#AU8-w1hjJV zMZ*~iSQZUeoKn2>F-+zBS+cAhH{*q}RTPsf>8ZO3Fc^TQ+{ zQvLxGawpG~m9jy1@m%qYW6Z1WMtClJzb{BncWMaHAJg8?AJg8W<@8+Q?%=)~Ie>NF z9IQ4ct}-860mzDbR&?|wnI0!;HkWVZzX~n>Z(m?WH?XAaR{mZHQE~=2ak3|7=1R+M z?4NCtn4EVfi5@L&9Y^ISps?-=m+0WaLae-F-5 z{#yq8Ju_EU{5Af5_*vO+81Q!?f7wp{0q{SgodNGKYf8)WzQI4pYx2rVf6c&n$IQ(% z-N*03pqcqg2K;SsQ1VUw2N-WZP$&~# zVPL#PDLlwOMk&0+fd7v2F!=}k2zHo?v@h0e#{D=8Hye7Y_>;(qK&(VkQ2)`G4EPtK>e*^H+$FPdS zm6kutfWL0m6qlDi&OggT*5YRv7_X`rPx8;J82cC)FC)<_7e+tDALO;8h4SJ(44fCK zB;)t+hp9Enq6~~9$nMGu_wjAKrm!4IW`B!f3BR53}NZ-oKCcnbB^V-Q}mGs=T~7?+yMfUYA!~US4`X1M5+hkGv1h>Q*31an!3px9k8ZFX;^^mHm;y(1I@gX?%$bpChUF{kg4mk)SC3h5^hGIlCO zc{FL+YSuwxn#nPhPLh%pIN2n#FoDA^S5=(sq67}RQauxgU8N2ahYH5tr~@HvDXRL!I_ zM^8?8K$2o~8+FF9*h{A#mvndTHtOctV^ySNbtuIt%+D_*#p?&ELARPUMW(5m^0MNM z0~erXBzU^nvxL&(TLvyYTk#uj`k6C?i!Pc~+B#^}X-+qnp1%msXjr&->tF>Z!kS(< zf8N5XE3Vl(NU>?|!rWPQ;i4@AmYL>L_|3g7$tq0P{IierpF1AZ<9wUWr~nyF-FIbt zE_8SRqu5lk@QRhoo?X(p#8A0#=H$`&lZzNj)aHZc^g>fbjmurTeEzc+bY74#XJ*mp zbi)X~ppdZ=Z$4zsm{MNraM_m^k01T4@su$=XM{cj2WPS-F*X&Uj6@Hb8sheEAdg=Hld2GmJ>(KXD7TQZ@rASx3tdP&y zO%ZcOqUWM}8T4KR*Ch?)e6H)dxgC?!YA9-+_7j(3OqU6WDL z5WR||a;{}#rHw@jl$Fo}3`LA=JTh55>lD{3y~j3*Ub!NAC~9QFP$QBV>ZqCEo??X&+A#3m-gxF)BA|DcNEHjoIK$<(rsNF|CCRzI{*yMHdFLPZ<;D%O*5S2# z7JP5HeuFweJc-XeKPJrM2Zia6@J>*FM0E;&b7PA7iMEXIx$Us;&!T=_KT}C2dJm}KXE8+INzPyUMk znDjXC{{_6JsBiiMzVyd`>CgXmw@p#M$EBqH^9B5XF#Snk`s2!GVACGP;T8WsenUC^ zJ`NV+RUIY!G2yd+U^xE6!ErC8|95|n{|Gky*8M5|H~y2t^e1{}o#7c2k4k|&94~tN zZ6RLtfBKI91abfW<3A=$e}b6)n6MewCm#z`vc6FI)5Vl}5qPA%PgdX54<^C(y)XJL z-V%q<|GVk*-u#O@d~e!t!#cd8H*gUUUO1GaRKd#o>6kL|=6;WIGf?YQN)g;>u87Hh%nzIZDGTpx$y zX5RsDI$Ln7?*Q=A=%aH0_+Zx$g@>WYa;|#%Ac=P0?QajmUIUhH&bCsj6>}cEHKm7? z9(p2Q${*r0KuQlOJ@lRbQ~oe$W|T&=Cqmx8_+IiW^1#I%7pGuYk z1Aj%!>GTH}sr6GtqtWRPF(6oc(jR8DKY`m!^=%9Q?oq|s9?`$ZguQIw^t#iyWAZ2y zd=y{}Rvh&&F~MyHg2xOJEgO1-UX1lu{maaY4+D(lSvK$xC?|*M^jbnPUSX1b!N8?! z*hF72;PyW*I9bbdm9`fEup)uk5{6$}8KFm=MYLNg|s2e>w~sBB_# z$~ouHO~%zhgD!o%b%BvBFQA!bJb*hXbc}WBlyo-qkU=+U&b5nqws{U4(lWlV>S|LG z>m4@e@~T(O9>q3b8!jHZ)b_&}W%fi8Wuy=nv<#>iya;8`9G=$6n(0tukfy zcX=$|XJ&Eg?ctdjBXg&mf0f5|Nq$EEp`#GJc7l0IfvI%sjE)(v3F&2Xmet!Gmru<) z($7O;BrSbRLAmwPt+*@iwPl7ceyQf_g(YJ$`j6t%M3Yq{#3`oD5T=eDm2t2iIhrfH znyF+w&xEA1spQ$zI+Ap~u1{9FpX^U%rHK{J;bf)nVpoLaeQ4JvX-`kmJ}OCjZjyF> znC-?S_{rLn(a%akCxg}g9wC~$8DkdhnMvAnle8O$*`AEfNEV& zECB|P-<>=KMk1f}q#jFoFpmUfO8jy z$CGEp8*xx13kb>bV!(|CJdiwTX1s}LbJGom-2*4bo55tv@bnPU7 zxRrbrzMp;uG$R2uWb(I?d!ee#|LuEmB2SMQxKX*ck^h1`quyb_y9`R!HnM{#S#L9- zodz7^x}AKDo+kS{1AZFtQFoA?2xvKfW57>Q_;&Jj3jZquev;C^lYE2H{|f{DF@@hn z?xXNOGvFT?;J9~_Z$i4PKQZ7ZAU%H%`4+S@>W>WgaRZlW{0jLtl$-en2K+-z5XP^P z?@;Cco&i5*z|lJLT{zM27|{0(oKd@jd=H*s{4E3io`K^tzDDkcOYy&9z~6=RxjV@N zkS?d40q-zyBaL4t-v@Uif6aiuW8lVc_mN!~6k~qLfWM9YGrviGfYHRi$$rgAkfhZ4EWC>LDnN= zFEnU;o&o&8V#*94-j2Eez)S%5W@`hiKKjJPZ z-k9|r2F{Nujxp=k=bTK+^pl%Ux+Y;OAs~je&Q+K|eCrXw1#j{0%=r zqt|58FC*_^V1Cn(nUTdCjXa+_DqYJRCz+f!eN-+_o3b*tF|OE*w*I5@({9CVrPsA; z_ncKcC1S;9gJRI=bsW9f?W`?>9t_T)+d$6RH%I_mQE3ovJ&grt>>eb*TMV3zprp}k zLH}oMA|z0@8Z=mo$8Qa3^_!7C_TNoN;N5B4o#!V?5H z&>z`3dv~E1i9~axLz!JcE20z>_V;wOLewxXE?i{OJHs5c1h}Z{Wm)jSk%v{-%_N0rCkq>PLF$H zv?OCav%pKBVF>ELn32!e$gc7dco@wYd|G~9*2s)>I#!uGAqiXrhEe)4Ia!k@=Z$Jj zTI?l|H-pru@zZ9MOf{EoO;+jk;3_CY@mpmx7gTLcQs?!c#$eWwxf7>tVb*y)Xh_)8 zGq#*v>Ggm=4^jMc$3xFqz5(jE&y@xb7%F{p5YpXF<6K<%q$c(^ytr zeffo>_7bet>-wyk_aL=_JME=cU$uDD(*!#nx;{GqeQZc*>S*ms_O>KAz0O5>MflX?rs zo*Q)6)21_T+~Ar$8}ioSwL6axGG{#&tk%&in8U3jUm>knpxB4{au15oACsSuN3q=U zAPUy+lH0LvR6ulRyylSEWD%LGz88`U@##Wx0U2=y&Y4&IGk&|6%p_K_kSv94OUMF9 zYr(hNbCl9cJS0qH(nNx!k%aIH5Fg3?G0~c=*4&@bN8MLgt*>Ko+G;iZMg3FJNsEoP zE`>x8uRA&wO-D3>+aGr+O8aS|jVMYKDbvbM1<*)L0S3`@DDAk#aV0L|qE?g?9Um#0 z2(DK&Z96JHBpMQF2WW>0pvWmDt$mjj6iz5<6{JH^b|AAi?E<{rO*;fh+8z3FV>hD$ z09{7}Kj{mYwNoLxKqL2KMc0NVbPtX|0+=KUAb2OO;2htzCNPT0X~#+RE6F{fXso35 zV|>FX+I33dIw}Be1*dKjIiYY^c}LIa(%NxKAz+H+f>L`IG3-zj@LPdq4SEG1yUyw?$UD!SlJb)2xBM_ z%}NuB@ifYA1ZE>vu!e4;paT=64yt@;QEQzuZ;BV;8$s3LH? zOsBv-)eo0TeT9xjNRqH(x|QlSt|{s)RLE9JwTtK=NCc*Ug;hII4a2Qygo!&w$LXjR zR-x@MF#eB%dtAgR?rs_5K#am%>Od9LN8;ESlm)mboC3Juo(H@5M%vMmaM=n3tM(o6 zZ74sEj%%Ul9xH+tf&l)9GSM#u(I!)Oui3Dul}Z$iTNKtJR*cHrkLd7%51j7i8m8kE z8tPQbP*9gT(xEtfMmrn_A&}aSnjQQaA_VRkrCsT))IC9Q$0 zY^H_-EBywifuOiXk3YS>mInKoD3+e;KJM_jVAzT{hXK~@bt)UsHL!^)gBA{k;KH@# z_PQo|fpTciG!}qOa7^8i3ZbP=i4Y&@Kuqs2fnhDxd(28B4EO~$H7Siiaj(@`5eKOx zkV_k}S}6j?6EzElIQYc}j38(ahZ`txWv7*zyW7*~h>mn~48pjC4$qF0;2HB$HyW;l z^}2b67iPh{swSXes!NctM(E_yie)bvacLBaTZmo-4q=W6^s*AXLL++k7&Q~VwRNh< zAd0~gX^mKO>4n`91U!LxV(r5tWd=s3oMVdVA331bk>Clcr*5Xsp=1Y)1=+YLWiNU{ z4J+V=`V1wHh)PE_4Tazc?CYTf7zJU2xI4Qw550|`UW;%@uk8~esEq9=6N8Kndl)F8 zFe`YZU^ubrCR7tNh^n3lEr3!kdcnkmIAPimZASo58Rg<$-4%)Zo$9j~N!&`xa2p8h zKvbub6Wp>h5_btY+F*Vzmj-vLT=4b(l2!k<44MiowH8dl@U(C*+sBH)D$S5MD^#nj45f1*An7MU;QBT3?qMlHI z-oYN+kj~sxVCrKaXo_b7=v>oIXMH-h;_9W52K9gygS4HdHCD{{ln7;o#vO=*bO1)e z=R}l7%sd4l5Jli97|L*Gut!6wn(ZXQ!G}FjLA5@Za3e*c(-Hg%E=m(Us=gf`(_|s8 z>XoO}k=sEcC&5%C_q58n0lZSTYr|K{P6UdlDI!7zIMn2}c0k}A)QON^X>tiopxSp> zp_g0)5-RKt8h)tl!4&-ymy24KvqDi^8_iSTI+z}`n4mB!I5&nRw+kNs6B0w>s+^g? zV$@krqr`Y1=^Na%c15`e*cwq0#b{ayc6UL;+DJ4?-M_Uns&9n_0R%hlQ_+2(hO3Yq zrK?FNQV?XnTnBX`NJ0NUt)w9@i6}HF+=awXy+$EVMrR>-ZmJ3u)5USuW zDue9`>_zpBQlJYXC5s9|b>0D6Kmt|U5qc?yIIi$&&_mgRU>ijU$=v~-NLo8`I9MS{ zr!I^s>U{(S!Y;}xM>AMVNDvlGL8b7AwDt;g5U-eap#;*kAu_>vxJU&qi_ptD2q>BE z#ixNhH3j=@^^=GcyXfRmaVnZofhtx($f946;+l3K+F{tJ;iMahR2+a+X|yo+%|pVb6MP{VjH{CQlUkWuOwqk+Jrx~6p+oVJzvq7{{TyV8nsJ*ptK!@Etr zQ6qsIrxA}926!u-7!VEg_(-Qk8W(cl_!tXtQuO3b1deXhc(fUX00uDPKVmfoes$oiA~(ksiKfpNa`lJ&;X(XvJ^V~Y7lnRIu!{5CQ8hk z-AJT0e%Z(StscJI+F;1hjFz zrnOSlL{BRjYF*bxlQOC_D$>YYIFTA&&cY=fR01t!8+kIcjX(z#Mv)_RDF&JY(Kf7= zR3J6cN8T!R(@ENdxhh+opxx0Z_1!2|E>5BO1cU+!H*|w$ zj4d^7L;j(K(dZxaf_#ty@dwK?l!bWGiN7>w>40&tgoC^f$qIFA^rSj7JYO~TN;+v!LZOH$lxM;nn-&l z9qqKgHcHq8zuU1(iR5B6hBA~#=YBP=>{6f-cLX7ZdZy~&2s(5+Mt?Nts8DuM?&)Aq z;|Xzph(2{xlUVAb`6jG0hjy5&?7}yzvI8B`@ftz*5yh>h87e8NLGS~iqf}u)qj5xC zUH}LNRO2Tugf`qzE}{=@vPB>`=Mvl4zn@PQ(1B zhECE!Rf%DQ+K4Ver9~i22LkX!I(&B^bW^3^KXB2G4^Rf}4N(J$T4WdXN8K*!gX)?P ztynPR)3NKPUI~T}VyR!kPolIZUE@rhK!Y=2%`$ZYjULQNoj{{& z;i(g7sS{|}8cdx)qx0my&Iz<+JMtLtsgr4`lWFmTCpZU~I+>Piq@>zE-E%!d(RU(x zbsvOFot8_TmP?(M`$SIPrB2nQPSvGO)um3=(F1bycwOpL9c!N<)%H2lz)+IL6wc=_ zkx$tqWfPVUq|OC>w&#LAz1~^YPqn3@LdpmJIej1%xj((w`PufA8lnH3BQ#~Vl-*c9 zkU9_hDaX^)d02YSaO#PSsV6cf9%-3+A|q}pPd$+lCsR{TWK^HKMo+M(p2&y?H{f9^ zsV6d~p2$dVVlW+#-^`GDB4g@_jP$96eIF@4_!Ajfg%52@org_5sWJ7W#$=--)&BWj zGD@9?O+7s__4LU9k0_No51Tpr7hIuDyV5BoVg@%bt5)%=r5|5-dwC)H=_IZi1b z`2X>N)Tyd}mw2BVLH|D^D5ckwUOx*TNJZ{c7!)@Ze&+X&(b8Tqb$2|quL);_W zv)m83Z*z}vKjeN2NV3;6+!5{&pwH1aSq*yo)OQ^J2)X3n^#y$#>GP)gpx>!358(Y2 zcaU7AetsU`pT{S>hNmm_8cLH=?(VBiwc`tDJH#C(t@!&aY(w8F);aWWZk)yWQh9^# z#bsA1;dA%5UYuUYXZa}^KZjMG!5JCNeEpXE?wnsNierdT9l4o3<97^nxKACy-Q)Mb z8RPeRea3H89lwtz#_yv^#&5T*``|fr{8A5mhFlHr*^lwNH{nlv&+wOdXMFn?AKBeD zPyFrHSMT^eLRJAr$1aVgs#gzBKWFsN?PG`fjNe0KGjQnGeJ0Vv;bHbbxu)+IhIw7z zQFw$H6IA-P_I{4Xp5E`>qq~305%?_Srdw8u8GrS~?f%@Yar(XQ=WclS-!oyo-{_~_ zZ?soP!hHRfoZG7%*Rd$(^&7uD;d{pKLDgUA_&o@_()o8I_W+>#RL$(;c4M4>pL-M* z{{eSjpZS;08r`ph>L)7QGkAB8-+h=-=={5%ds3x-nA;7z&+V~&|M5Go547)io=5uQ z_J#L;?#1i<)C(Qjr{3O%LSt|o6(iwg)Yszvb_Du9jJ)QEI>Mgfo+m5u{W*+ZI>M+Q zKGCD8zI>nEU(a`3eNff?A^fG*iF@3BwH;#)qwW^8KC8as5#j)|hrYd?@fnoj9(-mT zJ_CnEQS}LWC2|08!Q&IqAm2*?Riw2halS_w8in` z^9TJ-d!x9toobd|Mccb+bi=x7QLT0N6z`*3-foOIH2y!RAd_XienZ;HZ<4&aA@RTQ z|9_?8wv%6yU!O%UKAOA7?+9*7>xRwi@QQBcHmxDItlzl~ujo#0YazFB=Y~z|@QQBY zmK!u1cW&Bv*r4JtR4tzzEC!@b%$9(BItb@cKhd z9{C1ui`>){k|eJyRO|KCdYbC&Zkyd1`f@OILquNdsSSoAfq>-n1|)aAeDk`SYMh~v z-{p}4KDjC8{i0V2%R!&$^m;sguM_{FU$@jGx?FP5BT2Qkz?w*iwz@oW(;8=! zc>J>4DS6$p?D6~Mpts5E3WtKBU`#3-t{m1+M364;oO6_8bP_?vB^TtFqOXZtbS<@> zk@%q~(P4Af*ELIZfhMQV>G8Y6{$S86d1R@@2BV7pfE*4=Qe%@p08VYehURdi+|tkz z2{-usu!pbS=dO{OU2bpC;|n(j<;HN!O$}a`r#TSviBcfoaY~}i>-KsiPrVrOdZ-np zwO-L5lqIhxD2iUu?Q{ENuiqy+oL+yx<_UW19CoQG=nZ+U6X86Pv%!5`eQlk?(-3gE zU7m20-|q!ivcv87cDd#h@1!Yw}Btp+G3)vB?eL@byyD8nFcyl6($~7_ZCcarq?- z;6TV7Y7RBYO)VkW9h1g+{Xxm&73&(;+udQWDB7e3kK6Bedctc1qBkJR@C-PO-6Ph! zyk1Fi)P=)-$r<)K+>#jd`2v!?PL@Td+vX8h2V{@W@AbNDE~$AdG}&@4BufiYk~$?k9<{z2b?fY&E`LjI846lrK~ZfulcJvkWk z1!R9s<2t)t5?u(#ey3OTIKve=B8_eYQdVG@Xm!uX)9e{F>hG4Np za@jpLr)azR=BCCbm#wZ=3^Yc<5&}ZVAB3v- z9g7J|y6T*;p6m`Zx_wTEzrNll20UUjLZH+li->x`X0H@z3Wr@a?xq&W>+?5=q9kK* zHi~vHEZzV$I>KI$NM}z`4*Fr;klfgWQ5NuqF+77_OrfF&bEenpba;K9TCeExi0-w1 zF}y|!IHiy$=HWtZ9^5A|6+Lz0>7u zZfXqqeO`3y3E4%&gJBD@_LGw2Tm_jmd`XnJ6%`WewPbcYs=Di3a=;H`g=79w(Nkmh zNUj>MPn5%+pvMysJ^luo;spKmb#hZcl>ELH3APD@V$vnH`he*0*NU>e(I*8k1YJJZ zObTKa3rIn~>=hASF`@b}$Xu?V$L_Gfw!Rv#$K`T5uW}_+)|`5C&5FZ0_~#5Wou~;2K-?cdL6zXqlPNUszD?v;15C#?0=)R^Ugcyi$+kjEkEH*ab zDriw|cG;nBUt>5Xk3%?iUk@;yL*+owhrGz|4#^F&KNidtouac&ZuUvywJtyAz<@L< zh=}PAw?rhD!{v3`Ugw%Xqtg~{!i*X6*4k02c-HvC z9)H;9@XEuNLvb0;L6GwPf($ChXr>&qhA+t3BQY^E!sk8SaDxK?9I(}!O(RmH@uQhS}S`HDw`u=kK5)JMOG<76L#DD9mg)lyE}vtqh(gaHh1Aki z7EzLHu)EGINoXP;4$D56QLJ_OTn<`XUi4U)uocYh97BFRYfRvP%lmv5$%a7WDW%H{ZD(C5a1( z{EY#x?6Lb~%+fZ5_>jL2qaSN@ey7vtbJqo3_19y~uIZlbHzgM&a?keL8G@`Gwj^-F z28JX92okTYk_a-3A&C!#L2^j~eJ#kxa~rSdSQDvnB2%yT1!JBJe+0u2%aPvScPWNP z12QJO;PFl+|M<@z4mCDNFDlAAzK|&29C=t#e%T;L{<~Ar2R#9~Df~!G$vz<>NAet3 z-u5HxdA>nuy!n+7lHK6(j}-D_PW;Jfh5!A*Tj3`0(!*wRc*8$=8+iM#ce?z|Esva1 z(%w0Gs}#ELgp#>6bX-xMv-y1CwJ&xl>2H5K&g$`)GU|u$j>u0G<@;cD+tDtCKmJGr ztOig-$}(Ny1G7k)rG_}SK`Gn_ZX5;P$o~n4{4I*|GpwhI&z)3s4}eJX359Iu{EvUE zjQSo;^W%ktM}Fm$qCb8MO}(G`NYQ++@!=B+x27egr2P;po;!}iNP8$xH-PNhl%;1C z*q*JS2=@tF>QkyTM+E1uRS?epeH`!{zV> zjzYt2Zp9z_C`)NhLlE`Av^Rq4`Gis2$ zw<*evB+K`sE`{6IhKrm&aXV~54CJt)#Ge(Gc{`TDa3)AGe!mXD*D%L0iU;ZDkH3Onmj*KKy%UC0KEo~;kz!s*B5LE$0VH> zRY!PjLsL_rp&5+IQq$THn*36e?DIo~;ML{xI=yQGlGlzh9#I;F8kTJkh!N_2Sb^}` zu>m03eb>62^|Y*|>jN;Fzn5*8v%8e(tpK1!gzK;*+pe-NjmUK#tobyFh|yTW$KbU& z>gtoJ8^lpmAyJ0H+LmSZ9Ue0ok+bz+2*_6>G9o&N6NH8dBlV| z_$PgSIk?HW4Pk2~S<~F|dukD~_yt9IHKynzWVPGtLgdRZ&38SdC@aat?YQpsT=ls$ z+Sd8v59woSPU76_2Y8%UjAU8yn7j4`bP)zqPV?7*{3?)JV~WA|C9fZW3`krBxJY*| z3Z1V$6c5il!ozN~CUX9pF(uPSh>6meR$KoN`rVNw+Z5$>m4xo=csf!?Ov#$8o-)9tMHBD$xCeb{Yri*9#J z9D{WO>|@B1oel)-Wq8DffX@~4m7;1%2tmu3YvW}MgzBzh>K#xoR(eB@Ya1?V_Bw2I zDG*D#h@TGG@2#=di%HCYjTDa$RZg=AGsL73sw8pyeIahYT3e0dI;2@PdyPbQ$&e+5 zu%wLe@_T41tzrzO>!)IH>h!Ub1t_a6|9WUHLRLz5D9Q)9BzrTg;)afQk?N4tpeXOf zl#JH#9t^4qa?#HL#GTHD3Gd=cvN{@5KE^LdgKmTvCKap&>dNKe03wUO_Vu`v7$(za zQf1i@`qUp-UWw+2!BvQh)L)dnoAN?%CHXq6Yup6Sv0m(Z3_}<^_qw$k`T?X%!;)< zwsElnfFM@?C$r%Q8 zVjZeptZlH>*M;noz1~AN;M`%je*}Rl%SzTcLvJedXJ=e3^7Ao8$X)gph6bq)JclWS zkc*#Cl=tZ`I7i9Fa&Wt%e7z0IB&&W)^;`?}wh=Pg?fnI4k(qHqwW9Mnckl-CT^Q0z zO5DF1Qr+V;*zK#!M%)@BiWttxH`ZHo=q}%WMazhgaAJ$-Q4%~!o5A2y>gCva6 z6u6;D^!t6N+!3>a9_)cN%2>m}aKW;?r`F!&#+oWt;2aJ*H;Gb&?u4q6tPfm+-58{) z=p_K!svzCfSVo(ga z0u5N{xCJJmOBhs=xGg6nG7nd+-R7-v*&S|AjaXBQtr@H-BJOdycvM?fgxH;pG_DaM zH#a>BrCZ0oM0Ggt28<*VG57#%CA$D1MIP~gpg)XEgL{^uyhg~kVoH95kX2sK<~yn} zIFPbn+I#cozxc%l$xF~lnu*MX)8gtVvC8mJ5rJFpCd6CY2=i;mB#bMH6b`-xTUL;Z zL;n*~#+b-OSPu9|Wefec6EfBAx;>`w5wZ;5Njq&*1G;Hbr!xAl&+lAsIsZ~yyzp;s zYG{mv)~sy~h5}*;yUvYtR{?wa$Ph92z@Vrr96l`Jp$hangDzXJ{+b)F_k^*&fW3d@ zFaBm6M!+sK41@TEl?l1ghf-4XHY2fgt71s5L>-gZX-kwb*l7#7ZDdsfN4^>Gc%30n9m-CYK~VKHiW2tfyz6gtb}wNxpD`-!7|_@G?bmo+qU{=coy{2t zh(6zk7+r)wcRR=m5pfig-ekE+hKp;g)B+hqctlZtK*-F8&}1T*MUAEjF8Aa30pZ;D zVd;w$VV5w+GORm6(uLBfx5i z;Rzr`xmVxpQqm9-<~2U4UUX@l2p7^s$i+ZM`(M|JeSqqJ3-Pgex<>4%9d0ZcI3Whh1c=;HO-n7#6a;0buSb%&?Mw;V)!XasE`OafSnqUz ze|Iq8a{XOVeq*)T5xBHuYVb$U6#|)G47@|tOFY!W-HLLAkP^&l+KAQqAZ&-6RH7k_ z1c8s_$4Uwj2o;iXndCyY>kRmQfJ9_vr&SA^doqBE(A?nhBh;ox$V87{w9&i<_Pb29 zAu**7+dO_!;att|W6`s=(ge~B%G#UhV8;H`Iw zYecsTs}5KM5`94&AxKDI_xb70u_xxb*l+XLz0Gvh-s7*A=|L(So`MLN@2_<^u=&zc zcy#ZlVPy{+T~bgiM&;>(Abzn)#KAAW_i7m%-wtPgQ^Z^a0SFRw<1$&SMMjm7ByPj; zaT{J|bJ*$~ILGC;iP%!1J7UglCy=?1cRr>n^a@ErB0&{;DOEP|mpVeO_}NErcT#Pdy;4i!9wX)GRfx?ZH_lo;*CK& zqA|i@KFvBmCfYG}3GoreDL{!00&ococg%3Jq#Le7Jixg8Hgyl->zzvGw+WHz?Xv$O z1AV}1c2s{QHvZPYPW66doXu;oWdZfB!AhwZa=U}B8|&>M_%o_JCkpbg7lJoSG*;r! z6DB#Nh(1Rx#t8NigLWJ@Xz;t;DE_c{9ESNJKy4U{cc>z%01lX|UW5SMMTR@EYlc-3 zl$UgetV{$g$bnP{V;b51)eYeq$iYxKPKZE~n13{7uHI?0B_uh+R#)SA7BUu;5SV|l zo&%-s(5v5zS90pDbh&9wd-E6y;BZOoTN@M9D?)@mtaUKqqv{U4|H$UqP@W zjgfJ@fnvkJ%T`>rV%Zn3xI;}O1-l*LE(2M{#iHn_mtZGkk8)GZ-_#*=6%1xQMbgGx z5b%e-s%Dy{bq;TwkPW!I$c#0Soir*E^0I;-_`N{FVi*dV1<$et87X%~ zypf>aTN`R__B7q(#RgR9#s+vRmisX8peAg=s#g<^USJlJTyDfq?Db-mTnYw!;h+Z- znmyo`QFcda>gi6CgmZHuih3-UhwSz+=DQF|OH~F@tg+c#km1@yT@e7CT5MyWNx!(dUQ7rQH(5@6c-6RZhO!PW zCI(_snuyBB-VDt}yCP(VTHaj~4^4ru{|q`q1u!x6T&JRIA*Aw|n9>;`SQr^WO0n32 zAtBv-0x1m)<^NCo-IeQYc{Zlx+;#qnI1TLe;jpM3lM>Axzx%!c+J#&u z{SXT}R#FPmy8o8Nx<~N0l@vgxfB_b1k;4r^gCD1HuoC9!5=FNMC(>>T$PFRXjy*-W z{wi1S23k$Dz)xHdBRwvLKOCHboYD_DY<|aeIMsvHHQ=sUv-%86fgh>v{;6AbnoYq zteXJefh7ngv$4#g#ga-iPjxQd~1I|k)7bO*+c zV{($X7Rz#RN#dp&6*rZSu8um9mb(;Zn&`CMD8Ujm&7O3@`Lm$X=>M_y9#EFu_kG`^ zEfJtBu}G%Cl|(Y6EE2%B+1c3wunEKhvwf$}ymI?}xA*q?ye-&U%GD{*w}lbpCIw%B}RiHdV_qBxS{W5_W{%**HQ40iBnD~>E5lE83g?!5c2zxMrp zf0gv#jh^^6YxTj{y~$z`roG6r;J8Kt+@}(MsjG{Hy=Z=>6Q=djqp2;A&(Ev611$(u6p(TFV^rog#5d@Ll> zqke=p2Xkz3@4gyq?xT2sJFv{lY`*=U^1|AO`<@!=njkBy#MGpwWk(X41o>O@{O2Cc zv!x5Byv&Z!M62J5<+kW=j$~tjKD4nwBw1C7v#dWtl{d{-3ikF7b4k@LRW9S?%FTa2 zde2u|Z2BjbBfa<5=)E7WJelzmuEy66)q)IEiC6 zzR|CnxSCIp&1!n_Su)G-`d=2;D}VOjUmcB%%1`3*z4pjdHmlmjfAGE0kNz_2{%#$Z zrwlT_07c>X!w5_#UiIO)BBAJS=-Sw3?w;JJk z<=r1Cp+0%GUini$VZZ$EDo?zx4r!oh&AkPSAq~6?0pQo)pXRM z&G$cRMY+}d(E1^M_lY?xn)^fS)Vu7D{JYBgpOd%(faHqiNM=F(%`QrK1I>Ko@5`a5+@dJkraWDV)&+xV>K z-2Q>}L*J{s_j8h$gT)VnH1?<$49i!J3UFg7@7xNFM*QfVT|FKYUKjVHeCKnrm*wR< zd)=bj3ZopuZ;`5&WfIXn{EbinghcKbz_+jX-FJ+^QCwfBat=3Ke$MCEAi`ZG87nwDQjfONNQ1}la2Bi9LvC3CGiuS ztYF{2ue|4@pN^u`i#xgaR^`1$+tr?|RDKMD=!xRK^~#Tb)_=0{-T*d;<$e$kKLP?9 z82g??PjrVu9C3gJTYQ)O3(lpJj!6a>Nk*eGnZrZ@d2-W#I`v!*vT3UgZZyhp=mIvvw|Gz=p5 z=6`JRhmXebX!1=vvmTFRW7Wcqi;<0_sFA4^?0hRGPp>ts2qTNL%aX(2z)+W&bS=vA zG;5Q(p{5afXG5n`w1fVcFw(si8FC?sqJH6@J2&VAQHLmqE55KoKq#KKxO|eL?Yi^B zGTajiUsYUO#TX`Jk?azM$4p34K$^iLumyQ(*YuU+(>QUZFHPRJWr%5Jk+lcLi76rB zAa=rK)sI!(ZjyoL_Lq*nJpV@z#5#3y?mryJfj|C8vI4)IksKNu$^X|t0#^Nx8p!m2 zY$U)<{}@ZMv6hQ0^4CH;^Kak;nsgeBW4&N)R@TBJ2wPof2GpH#vB|=w+y?-YA!ET2q5$G? zQIjR`ebFG4ZOWtssSesyF-s(vu5ziFdQ);?cY(27Z@wUboUA=^yPGkHB*LeFY7EtX zAHY~s&m@4d#uZIXn_+!<@<$EiBmaqkeEd&7l8v?8gjeD} zaU67k#2bMG=S6oV*je4MELZ7rbJbNq$i%+ivlCc7F(6sMciq?qTtj8vYZZkLJI=$i z22Da?x#{CKM3nnEn0R*NeDKE;D!YNL;k=l@olPG~f%+r-C1O$|63B>a&2^82sTH%h z#Kh!Ham_+q2KNa@p0&lVD+r0nBXWgMQn4=Ra)!GB0wHu@iUEW9;|^r;ztl*+e;}Xu z|2dH9Klw;D*7D$ny)2Q6T-yStl9>@4a&{`^Vf;124C_9wfgGuEH;C}7bvKT=S%IN< zQZFx{1bH@TLe@73*4k^JWlWcp7&lCg6MJW>|3ye8ouHmw@$DXNX$ATYa1a;4GpTm7c1 zwL5@bQ?d(5(oNeL1q_e0Qq+M^5~f}@00ixef!9CX$+K48hiH-ofLtLkL}Ap=&qk(` zC$c@Duphc9#<1W%9j50488N8y8PizN*TcJ`es{kveDy6ncJ zwD(!J7Td2QID*gCtZ;o3xsfwAByot z9fBFOG%o^g?pake0nZn7fRUM+TBHKdWk-`1b<*5mlRJ(IZsx*D%S&6DEo5Cv_~9l> zY4eWd@^ZAEUn2msWlh8af>(-KuHQ5KSJXV|oH0GUpF%1r@($RzIBplfqCFSu*$I=l zNZmMvH`MEP;P9Acx9}ALBA9w%D-S!QMK0g!kgdc&a*e-P|8lb-IhNf^(h2V(0#QiLD(iif5vY22mMwn zb+jn4RsWR?lkYXk3(9K~BzlnS8L^g|dXi4ZMw)2nTO?CWKau4mP4l3OAD6Yv(_IzB zonKvC!csvOcT=#5vNx29FkY23xkn5Y2FcjDY)GLUWwHUWM_K`h&f6PQij$l`0fGtp zF)N&$$RKN{{j`}ttHS|-=bWTLl6Cljhp*XH48NcE6%BVa6D%Ls653=0=RE*ODMew) zTPJ^CXxeI7#6IbUjbj>QX?8RsB^%1L#AB1k*$1TEej;&dyq zQ?EJ1Yfs5q7J zW;1Fmhfxy;Bx%JyPTRzmUX*o*{nE5jlCx6*`5nIkq*J@78prI35Ez+GWcCQ9#FLVu} z7ps88O=6N7ZK-#`zoWbdAlf0~U+p7d;Jr6S2Eos}iI>G0=#_P#)JD*l7dhf?$TvbO z>=nJ$K@03x5cs)cCXptGFnrnQh8vr8AyhScMKc&ko0(!;4O0VX?=VlzEJescsvCO9 zxCGOY*y(kR7%FZl8q<*^(-a*!$V${-u9*pGC(^XdP*D5<9*dKp>Yy!alCJmgA*8x& zGz}lt6!$PF?zAB37I((ZCB!?*DW2*!fJfnAG`XYBc(P5>v5eaic&bo*a!z7aFeu6@ z9vT!R_rov?DV{}kzex1vB`ft!fh2L%O*@@_*6$7=#rv_tj2K}^2&q{lt*pRsEV773 zqAA0&jHb8Tq|_cDlj3$mpaCobNM@0+#VnDu6tWFF7AU#qhV2xV(lz~130tP1<*`yC zh$vw?0a6&I#;FD~;0pk2A3^UN;|!$IJSB^n+9_^#ocdgzQA89BSScBXgf*sLWO*w{ zT_*`vQ}UIsHWMPEPm z*E(&iZrn2Q9(5{JYD4VGvvrrd$9Y63C%0QdxKT?PTT3)Le71^e3V?DFOKno$IY(T; z5hFpVb_$LmC!r`hF#yl-vQ%HRsFX z8Yn9aR%t#A4GEFJ4cnpWI2y4hRt9oDauw7IEVl>@sQJb#ZV5i3I2)-QTsB-WIEO7L zr9r{G4XHBqc)_S$aFFwsejy98_E~(knDm6fUDP{$y4Q}n2Dt778bjO96La9tORm0D zHN=us=mRzYP!BE?bLV$MP&IzmrDW48V(x-KW|zg8YH>w-nvB>DDK!pAmIp0g9R)98 z5fqL#d6|CBG?zts4pW>b-PI)1gHi=Xk{m_s%K|n}5map%G}R;RfE+|!Z)`1@keHXz z0<5GBGK;jJ+2xp^$2|}H$v!<(5?}o7_wPPQ6UgBsfc;x_|dgQBq!m7I5 ziMFH+bJZ2ND%BET1f>;XU9`|Y7YWrtnb2akAcH%Tl%mk@~RibBHUFL|g zAk~J#(PCo;Xqd2~aoA8Ng8aZ{QM*Ai^x~e1nWAnFfWBXtS=+@z=dHFYDVziNy=K8muCN)st^Kyoe5XlRt ztveLtD3N9+i&csNDY~JB-Dnuv28F(;3A0&%;sdEiu=}N=*haghRFdr;;?aazS%gh~Q{qIQ##0-;C&xgLf-wRZL$R+HES2MidXWrd2>3YrP{ z7|&Lm0>D{j{$S{69Y0@h713p+h}uQLVN_7DNW&&?-X%@h&5H~LsmS4y3Wfnic+smb zJ93QLO$ZDTdz*A3Kpc?-Lk;Ij=lFqlQ<94@5ga#LD_rg49`;Qk)AM}A@C8E?W9?cu z_WRSTm`lLHRP}%uI@O!_T z_`f{*cIInc{~vyL^vpLiY*NlO53D4NU+KGT0>c=s7z?*kw=|MCq|l9Q)jSTsuAJqP zK5v%DE;p%%eZ$kl0=$WW-a+qTESruRsMW}*xgzt0MuKsg;sr7ZzKq9g8BH=Kq!RM= zaJO0DV+c@(bR-wd7L-f{{~*;Nd0Vj*M2gn~7Xu12S`EW)I~=ZhT0og3X(l(?X)7VC z6nF|pGwF1?b_lAw)#(9?3OvX0R=aLL0(=uB*0K%Kf#g5nUf}obSE9U=m<={cmgIPS z#7aS4RR&2;!YsIWVwCg89_{y~BpBc9MtG3ndveyc>RhAFC zt=R7Mk=;PRNJ((@Qc1U0RIM2_npR^$JEb@^Jp&SnGZb#DU~A(vy0DqK^Xix@jZjEP zbltQ@quPh7|9bSxR`NGSfA2%z9(`?=?(?sTdH9PXu%We|HsDA!w*Az-(a3H7%INQZ z^uxGS|8n#T_1a4H$cH}+Gbj)6q+KgH8&SIx!$B5z5zC@z1|DqP`~d^?BWF)dWpa{+Z?svO_WGkXjwY;jTt++Y~cW_}6)*iZD9lkbo97`_MqViCO ze1wa{KnxuNsgipK_dMD7)F27?N^i0@fPa{CcmzFXJ9Y^(h}XEC@jug|+91XyR0#;_J%NZUl!?|s zwsE_|q7pkfDQ?`6*lU>`Su7lboCCG7E(%DPUZ~EJ6>_t>$&6u$nq=V?K7!%3HWqR- z(<5=YC6U!uI=RM70Z+E|UmE?ZO64TfmP0$<9OaeY9sR*CUc6WX{r;8FA1-|r#>B#3 z8@<_T{e}N?^jAuB_od38i`p#hS6X+!a(ZF0h9?+;B7#edKOeHGGq_(Ef+E5rD5DEZ zqU`5G$n?I0o9dH-^9`#GounQp3UEI}wmc22r*Dadp~}trlI1R+jZ|csR9n>WK$}L0 zxuBGSgH#Ie^(3VXG!wg}^b01I1X?MZ*y(_zb^`)t0%3fAC_&h*EI_cPl@2?2*clVp zr!Gozxz`5K7U6bUtqZ5KDCxALR=-yecu}rn7?9X9x7)>+XeGofB$Ba0h7lKTq~Tgn zYJjbl;EE8m)(gu_JFJiE85yi66OOKG#!ZRzaUFcQKi!0_B`}~(dcMJd-JW)kNo{w9DQr_-@X6R=M!}c9 zJ9_pj1VPl_$?mkRZcdO&7(;yv2Z66_J%Z}>DC6MxongocH3@;Kz;FjDQh61)AdP^K zBMgG^%rTZ22U!-HlGf;WRnBMCl0+A2CWgk^V_AJmL5>994>f}@Q2pv^s@0icc8jWt zYN$#Xb_+2BH((*i&P9;Y2&{u-y%=R(z`k+&YzI_*N7ihRmX6#;$0I9jMQ1{tEJF)7hO~_r^MX0IH84j%>BiV`c$>DO zD~`}3a1217s?&8dl2JBt#VQwAmg968He4k`mThgtS?H%G=hz{qDaoQ>iH+0}BoNKS z-zmiYoOp5UJPJpb>ZeW~J9gydnc1H`dgSO!C#u5NxJ`dV1U&k2Oyd)km!sg)zZi{f z+F*f|N)MddzORq|+e1h1k4D1^p!_E*hhq1ykN%HV>*l?cL-VdGEiN>wa|@zaJGHd9 zc&awLFt;GAEHBO+U!Ge$wYVhCE}b|f3}!Kvp>MNpMt<`yJad~E5ksGs%^9!fMxtY18 z`r^VIBbi;9Td7L(E2n0pnG;LL=Y{6Nk^0P%wsdN~F;ks8F*h@Pig6x4CCtp9I6AxX z(o2Vr9zMMM((Fqo7pGsGJ8@{{)b#Yx`D3%Q$Lc3%PtNLdOUp-=r;p7pRSz%LjvYBN zbMnZ-(u*gK9)IcRiRq)Coi>iVba;B^=*urJAFIvJFP>snXHIUc<>bbB+`D7f#Kf-c zyQZFgcIVEgw?FgAPrbbS=IBgioBG?M{~bg5JC%yoSDxVLwRZhF;KYxA_|4IIh`L`L zeRbd8DDU9eB={$zzy00H)5o>h7Y|JCo0{6Ue`??E3I4Nla?g&5{Zo_WzxF-7O#KiVzx9`}oYuAq5Kl8~?eR|>(&pb1^ z``M|9T|1xt^u&(c+js2UHL+vou6_IWOzq~$y`S8(?wy+2e_+r41N(RH+rRJm zz5DkcJaBN|^9P?h@TmizJ-C10!Glx#rpkX#y*06C_YOv|XW!(+1Ou6RX6L~@J9q8n zt6e*HG1`3xckS6ZSw3)Z4`1!svvbF;^*ui^xqI>xpM3r^dw%BGXC`(&y?=7|u4g~D zm!I#PnwXy4zJq~G?A<-JlfO5$>zQ(9CZ@LUoM4E14?a^4WXJYrCK%54av8UwNV7k48(CQ-5zXI#;FJ8R$>Y#J)JEI@_wI8kg8pj=A>F@osH%D)N;Nj?B?P5#(7VOl~=9|Lc! zR(}0^qj&w|y>x7Ti7zwuyw?R{5o+*rGF@wLBj zW9`=cJ2!5v4If;7?aR0C+`M`B&f4v(YhS)`ckSV|I}fg0ef9do+c$4sxcu7duUxu% zdF{^SS1(<eXuxZr;CsW9|0ZYxi&5eR%uc&3msueC_`5 zFaOtf-uU8|@8A5n*B{=0@TE6iyZ7@ycjx|t`(J+j_4^OrczEZ|8*kjbbN}wcKmXth z_g{bGwYzuj+`f7J&aJfvw{G0N_wdStpTBy8k=%Q5=fTAXKYyREUgy{Ezy5RgzVOBu zuB^Rw<=TzgUwruB{}UMudi)vjm;HIlA=>4+QY1qQwkeeX8hkkXZf9<`(&l^Z@7wo;+Osa zH2&|!ANc*!Px|Oj{jJe2w!VuH#uuNg{NF6#U%!eL1u7wFoc9L9)&A*=?QXkxEB#;| zpD8-0i=y45j*uoa=X1`)Ash^VQa%P31KWvo<-N4#o0>?YipvMS=6up>jes zfO>mU<*x$Unrh8*-a*~6O&1)TCGWK+CjQ8I{m zRz%<7PbN5XL!*P_S1(aqN7z|X#3e~Gt5QP}1XCr`E;|rE#3pLM5fz)ZM4&>-(S|XripwIDTS-)@ z2aBq#2yz3+A!!v&Km$Q*Mz)Zv%aLLrn3;vcERG8D1r$1yUXgYNojgH;DsRWVw9NHV z$Rq7$5tR_cfXEPK55OUnHe7j2HR|&<--l2R3cFucQ?sH2V2Y@11wBqwjp`aOXE~Hb zajDicp=O3y0+d#dRJWy0v!t=%ueL%|J>)_G4294UZz@Z*d5H=zC^%9V3i2AY z#$vO663KK~P^+4u+07-tI-4pRCvbBG%dprg`Lco}8wQap5JqeN_bPwpgU=~d<=vHi zlC}pF>yNy5uKq;jfbJE}Cn|q#|92}t@Z(4G_(>M35ONt;6sT(yD@RA~nk1C|5T2tkQT27;nw5nd_ zsI2sfeh4>*^6XpGpVC&|Ar;vwdIZnJzYR)2zN1Q@04NqA9Pg3V1ti0Yss*YQN@JeP zRt(jXG9U#buS01x=kz-U0T5XAs;&jix-B>6>x!_vvT||-h0SJF)I@>~>SCHPtq^4T z-5~&Rig&K+d-Xcfoh#s>BytU6T_m<`isa0jVs%ClR~V=y$2yuPQgxxZL?v!x{eF7G zL8@DtW)5OO5=yFSLB8t^c zK)sL2bF{8mS8H`Elq6AT)&)(iR&`xKu0XFf;m--GUL%6FA_c}E7{W#k=@K27zNGeo zn%Ds2=h-zx4dBI4(@^wKHgt{EbcC9yHGR!TCMYuVseal)b~+CHC}eI!YR^R)_J^cq zc(6{51q~C@N@ZajFmN0eq@R*?f7aHp;XiG{eY2blLUc!$;GC6Cv;sWdwbE&F< z-ZN{`a#e8~V(mnArLJq$C7FScAk>JmqCX=OW20#qBs!!v>tG-)s5*C$%5Ab5S8I&A zX zv+ll+Y?x(Al$v3KAl4QfhgS?50FoJ@c_|Qr>VfV^QkZZh$yF(KRF&b&umx+1W;B*f zQI|#V(KW3psa1o#sjDc}wPas45M`7@OL108ei_^_*4?uk zHA!4{sw-siD7ynYa1fe~krZ_E_3Y_(i`>4`XoN{~MXoI?F|3{CDnXE|SGn)z=S>cj z6!_V+QilGG;7laPr0ndW?4IW;ZZ_*x*%z8h1IPrrZH61(+{3FKdDHv3P{J-vq=r)Vx{Z%Sx<$+O_VWFcTa9QH`NOid+ zK5{NmtJDKSN)K)m;(LJm6sks?+8oq~2bJ=D7|doJPE$=oM28~%2W+yjrWNxy$u*Ek zbF_8!Copb61TC4AfQZ7CCe#eGrZf>tkk_T-jVi=>5Y$asu*wV8bXUy0nxB@SvP-&F zt1Thmk0s^?VasWh!%6t*SPIjV^&&uolL`t%6=0$0kHJ?YgO{T0M%-YyQE#-{%OVC`ks6jz(@s7&v1j7o{#`pK zb`kCDKCqv_a^KYC)b7d2=MU`Jw{OSJ9lHWW^rxs2fKeaS_;)P=~E5{Dc9)0Q9@#$kHNdg?1 zIdS~R(Nia84jr04{PGbJ6~~D2kC$nW=_5y`kIWuEa*Y2TJ9%V!ZuZ37!l{{=*`qHX zUN~~<op|A;qsNX; zzx?T+J$Cr`u@?^=KKAmV^%r)YntkE(M~@tzKFqJa@G@DFBgX^^3HSqE2zMQE*z(Xw z(#BG5((YCip(?92iuSrpFN>NQOuhCfwEU-)Z9ytR-75e*>40eivfl1y7mUq^@e&0x zD4x=gYc-`FDdz6S4{Mp`bc_Uegc)J9(pods#y+`OtC{wSXsloxrKT_x-toybD%x$z zRzQj<+j<>N<))S2{N!dGb6ORamw}fgMlEh6pLzR}N6n|I5>f?1jHvf%pgn1*Z05r@ z9|o9Q7loy|5ty}1tEo%!=ih#KTi0vIoD+8dLZyXd6?HIU?6s=`l;5Rg$H~OyMs0b1 zS$zKS!)=7+U6B(f7%?!Wl10%RdstC$=J7dVS^b!=vS=8o?{e4POT<#k15g z-o8OM$s4dOgG)2Ieq!(APj1v_1eE2#u;^xtKz~^^VsqF*28tZzKp|@gtR_T5hz4}Vf?l6X3YiL zTuz(H;>qRZV+)Iuk6*j0;t5jJwG2UM_?A?Kc{KLP6u_mWhFR4XqNTa&spHj|txv|e zs-Y`{U!lO-u1QORCXPK!(OC|bGp!>aGFg$kq8XT}RmrA~q+? z7MCSUmTQ3GfW;)PVD5kX+IW?zq?jVs+fWq2SoO8>32Vmk{7QY%HX4Em#=>bNk2lFS zQ=6f{XyVs9a0CF{aEEWa_M;wBKZc5m@m^w^rXej0Aj-%#A9(!965AF}Ol#;6@+dFV z#g*~P0F*OODukc4y4gbRDK$U!_+dC-p3y+4M8?+@q-AYsr9L)c1gfe6{QxJ3VvRr< z;)TZ#!zS~VY7W>S(I6C^TbY-~$4m(s#JtwmXir6qX=~|cA3v}yCvZF8SooY>Vg1QyS$<@tu-uz^V9up{tM0Ff! zplDEipL;xE4hRrmEp?L`3FvIs?XND4E!Co8!8Wh}Ql{Hzn$&CPPs=4+RcyBi4SEVq|~ zV~rE_@lw4Xfd`|pBI~jum!L1pUDr1CNH-s@OAXD_r3*&XYbBt0Y-4M}!qr$8I54QC z4w^WK6tc&+XKi^2T1GP{i-zbU5q3RZs!{S3@-BFJy3lM>H`2(JjN2+fTqJ7ubfmEf zgo(cGPjAh3+3f|5GN9%ZLv=zdebZvRXCsOU^o7Q{@n^VbT!p?&Smdn#o?rPrH- z&?*t~Z~@1bDiD{OAs|IC(!e}4WX!hKIUNd8so{(+A#^T?5mxJ!v4@*;;IRxNJA)@L zyM!X`t(S2a875yKyR{Mxi0X~w0;PN}uIAo%fWXA_FD`N=`k;L1e@ zKL`|JGUCQ9x57>{!<+f%!Xz6-Nm?8Gd$hIY{ovw{v z2Fx&ZP+gYl61{iu9-S?R#y{_9!O|?Kqk0%1J$N2y;n*h=?{&>Au#yHIS&S3myyH|w z8CjVcXwl`M0JQJggKX^K81AN+4D4Z~&WnXqwd}14vscoRYf;i@LHfh)AUQVnaHuU4 zFM8^^j=$8PQ=ZV=dRVCfTQ0GfwUDbl>JL(Le8PZ(;kM{T9?~JDc)UHqVS!2pBj(hJWI=AlZ*w*_cNn=X z_#N4BHEW~Nuqdt6c0PWX>~Rd?qFXlW(HbCgkb@rkWD?)VLB^}E^xEu(YHj%)4--{G zDLxIP>zo68CK7}1bD5iEvWYH~aX&K~D+@EBxb@mCax#iH$OEk_CYfE-f@l+Nx%t|9 z089mJLOf_$($ajjV{Bapz@rSa5Be@Jg#-k$Zp7oSjmCkeVrHmuWLACYWm$hb+uK+r zk}6r&A*+v|lbiYJ_<44k_#BkcIa>8#c1Qoty@7auQG4x#~m z8hRmtgm5QUtULZND%Eb*wqVKS-EObbO{13{Kb)#Mog;O#lQo-w+JLpIo0^%MvkjsL z0D)~>>;hLkl5RfS?a(h`&`VZVyGhZv+pXkt zZ-4SAeoD8J70+KaWmb8ZwTIazM0)e#^XE{HJbfNyTc=ZW{PdOnW6xll(^IqSV$bjP zO<(Wyi#F3e_Q|dGV0HCs*M>&l;s(nG?XB7N5#zd~W%1yAn0e>AD6w}|#~zN-GiNVc zgWLsh1Z)tgwyjT2X}kf%J#Gz#=UQi47@I+V=62FKd3B+pB257lupXtI0^UW_++qu6wZ1Q4!wqvh- zI?d10O)k*YwjYGUpM86_x54X1wMju7J08tIp`0ZVdjJSwzce?z9-7} zT9APaSF$tc6(zK17@KXA{ORc)sJi?NvqBbJe*D@a?}wbMmIMM0B3E$u9*S4vmjT>~ zZ1qgs*H?R_nxO((kA2UPJqkZak2({J4+J_du|ebB5GEUFf7H@W=NfUNFFB7N-sb3# zH1(3ifNKCT4v%{L;X=*Mpyr9rL)k*mk!7OA<-s?gs$fKn71tBog6tl?(;RCpV2!@Yp9q%1U}Zy1qVi zqr3=;Yg?a;cnpOQu!l{@K#vGDxpdr0Qp2H#ZIu;4WHs}h?zwk-vH*pOatT3^RYU|h zgKXTmL$xb=7m=2QqEW8LR+zAj*cd%QRLGgCq(lQ=jK^&iK^LTu9^mQ%bT>SMt;=8( zKGmV;Bg27u!(pc}<@c>K?R)UQ%KnES4r4H+#n$a<{s66l++aO^ABvIYAT3qU$0iI+ zy^(dD{;G)bVd3LI?i2p_Yr}{Uk}POt)g{k}&ZkXx>*{Ty#evRek~y?MLl=V1b>lk>u&m!bUC>l} zN%Q*`TJk$Recp&RYb<8jlmsdz?DDat3iE^tdG2Nds1aP-ZoaitFu_ng)NCl(OdWJt zD;W=sG8iRb=I#7SLK{BJ%R2%T?oKLwl&@lZe(=@6pT{=|lj$Moh6Xy|ezs6zZF%|@ zf0^@NR?8`$SomuGc-Rj?8j>fpk|njN(mS#9j!#CE0thY=aWN;MDg0a04PHXeD3)6q{kp4h;FCL z)vo)2(aj#e_Q-vT5^tH}MS%$_W~bz8jeW9F81$h?x;gU(EZOOVkIyr?Axc9eJE3J# z8_IL|NaI(pS%93tl9Uv33|Xh}w=O`E_%!c@NYI8I?g5S(}Woo-RI zdiho|EubbwnT$#jgc1bs=_)>+iGyk%7EnuDgH_N$JyZxDAB^{a9L7Q;dxmQD59c`0 zPB^~9ioEQC>^hxxKhIXXXv{o*cpD5D$R<<+X!{BFm%a<~c=i$05Oy zKGii^Dnjg##UReQeyfu|EhqDDGyi21Cm(x%*?E98#c%K5ph+ zpN>OiC+f$>eH1FTt?K_f1q=PX3W&-i;BbmJqLMerQ06N_1kk}vJp4(uzLE@mF zMiXcW&=6j6+$UjY8luGBS5?5q7|dYnVM0_cnG}*8y_I1rP|6&?dhPaEa@S3h3^iaT zoi0U>Bf2LXoEX9HhwJuxIUg{c;Wdnn87>0MYdruJq0mytG=i;&t`uw#GrSE>W(@Na zBHOqJsJS3nP~U>Yu1Iy{)bg#RDpO=C2^5aJ2}z{ih8QvS$#v?%G}}X`J0;DHsV*Lm zdE}3pA4Dh!xILPIbjCPCd1&lmWbvsq2zA}gz*$j;(;qL@HXIJrUL?*1sRo*K_UUUd z_AnqHt5KV;qdkn)8r&UmE4l%HxfikbOPW22kH3sEW6~P zd&M>hB@HHH7Hwr{%Dj@Fz;wzJxb|e95aJ$tZ8I!6;kuQE^##S!#6;hEZ5M?CmtFwe z+1!E#CAxTg%$~Vo22u@8RA3(HI;G~;YnN$3E@np4X@x)xH0tqVpImmy(nz~!Fb6Pc zbgFy2&fAbvH(mOz`(#6a+Ls*faa%VCP!y^KegxYfA2C9}o=Rw7T^Q+Nm$B{L3&of1KWIOjD^#eXc zVZ`iZDVQweg!w7>C~yMgB5C78msXFOu~GBYAp({*!UmFDx4_M58s$gCW)r3ti6mfC zobpoB2y7GdXTfMTM6!io`v4VDyFk?gj}!7Sz&_8Y!fB@=1bV?_ydnIM6wuf}d@e0Q zT&xP>X>1<+40Ismkiw6~BQ1Wgq77@!Lhzi?hkH80L*5NdW8x=;*XwiK8} z&!oDs1vl5SQL9m+K{d>GyD*>lbGeSL5qwcJlUoHEmLZ(#v@mgg@zp3Izy;#y10B?x zT$|L*IUv%C?zC2YkuFz&oI)FA42A|*AAU`##gGTIPiT-lqhR5KRdpqUS}W3)M3f{T z*}sgh)TrmiC2T?3-Y`%~;{GH{gdCHtD+aq=&pNb9FZESO1cP(@DmzSd)F<#kRKMG5XJ|WEp$Jxo*8_Eh{To7SVH`4OEudUB;6FOVNK2a2 z>XW78hH}6{(K-Y~5V0A$BV|jxz*cNk+*I_|@ryv1axeWl>K!>_P;xHj6#!BbEH>pC4#->XGr(uMVOp+8C=rjN zlBl}Spi2!uFH?e8)9p<&`!-Z&MwnfOB?$8#8KxMMu47(^1RZpF+4pWy(A1tbyl%>k zi0%q#GMBHB9w-G0@IQ$--8ROy1OlVw!0|B3jxFV$#NR-bi~%L)5?CzQRGc_Zm1d4L6?QwYKw#8}LH$vSJe2ns}$@yp#yi*E zi%E#Y$6{@qV$g;v#=<`k4DYE;+I(Tb$9i;btHHl4miyk}A_ zEekrK*J_$sE;0jxf!0k3QWs1jsw{Zr8^`j;Hli4Lu2kfp=W>bbjNSrLh`T3viEYTt zG9}(l+>BQt%u;4yp1`d5WuWER8YlpySJ?kz@M=np9Y80TOu`Gub@abvlfno@lN_B_ zt}m@`vr`>Pwn&tusNt7gcX9_>uO@RUNwN^%9Sagmt`jnE595HGxB>2b# ziU#wKA_21IgzRwZbW8Lv(S1!*%XqTHx`O6qM)`yAYsHTHNE=)!1zt*RaHT}cu{Xh< zdl{XZY(1|NV`}8*p{zG)lk#EGR7lL@7BXL?JWX_lNQS6siy~vgr8g8;C+HBGkkB{2 z2HaIOsA#MN=nYZRqj+jje?#I35xp8Wpo}aV3rx;J^Gi9bV$<*5JeFF$*T?7xN}U4* zUy>4fA!`x|G+pp50mffRe!U21HzROFqQlj3u1KtxLJH-Lfy|>Jl{9MFOweA(r{OPl zvQ%L)s7!lFPYC*grRu^f;E_SBqF==O5JnDF6JoTCwtj*+NbxYhQgfi1Ue1rvXhRho zXf8(2lV;;y23AXvhtd=gZ4qGL1yL0Sr_n-c0O}`Fd8GTDHAZJ%e2NODZNDsK5hiMKtmTN>~+i?V`Skv#QL=2HL7Ae?rI|n&Kq-=-2FOuPd zN0Q;MI3zF0J>W5{d(QLjgXYfx0I<%2B!jOVmbZntZ z#68VOKr@ySGPt`IwLj9lh&4!q0c>bhLpKI>ZZ=Zd229I_)TF?YDOTX;T0Y z_Izq=KA>DOX#bW)cWudVYnlN^Vns*S8H-<{*UB!oMJakp8UWo!0PW;YSUmC?u(&<3 z0lm^xEEGV&Y;p~kp*`6vA34`jhFiIWgborR7^#w48V;x$)jLRpHA_A*aAK9AO|@x!x**8%XRCQF5%f^KdRAE}9fBGZ;@~T*@%12?&`Dj0q-v(Mf>sYgz(} z*8RJam z=3Zwl0ia~NBk%kZAG5W!={lq^p6aS zKJ;xH@vt6R;y813!!q^A@KbcUCF3+Fl1{sbmT}UYhI$2HnAJiN2W=VbU+Qb7z`n9{ zQODdsMv*~Pp^L)l15izH!j)F;a1w^x1$4SVsDg_V;Se6eRKaoqQ3Aui)O8J7F8iDM zux__X5oJY6nOeFjSULh)VhC4)1I#Gs>jlo6y0@;zfvnOuoMZv=iL~r$=3Wy{I3Ql` zR%YOBnQ?u9oh#!#JnC_k@g^3QJA&x1nVW5I^LAlV= z+~U-iP85}KzfkC!MIgiZrSV`88g1?hxuq?MXzAQ#9vB(bG|msh!)h&f6L zOB-IbZoz7!R#5h$rb$iR*Jo=6?2sjifiOYrcy1ALZaHFrO3%!~r^?od2$}hh+Qc#v z)GSIl0?_F%k>g6Omfj$5!>QlWOYcUH^wN>&M%0 zIDhNjPqOnEh*E|>21gb7k#ZnS2I@J}^r9>kPt5aY5s%y+3> zT6R8!Cgvlf5vo-VgVDlVabFR?3bX+xU9Mp%>0Ppjh#1z0TYo+HA(D*n3Mi~5;S(_4 zxPN>O%Qg|t8zV^w#6d&Q(TK@}y}@0-ZY@&-ZWBKgI7)q>ouytnmmy~<&k>O2{1cV% zSA8oVh^kpP3p9g11L;h=7YMO+%`Behs3pf$LKWlMzzsr9F1()oDnG zl;|B4u843gR}?Z@DRP{koS+mZCp{oDIBNWvvbUnUnH{ceoJ(a9oTGr$u#-4?r$yXH z-(2D<6>&R67`QnxnMj#&)2MDNDGj2vP*=Jsg}zj?FL%gA^43{VUM4U;ad~V|D<324 zfVJd3(dLd+{Z(CWnNfj1lTiX-aCW`{uf^Ev}<~K!N^)2g1X%z^2 z3XMAsH~f}nYH91u!!o_HQ7NKfjfkT`r(*iM>LU1B?q49}vKFXPk->z}B%v-f;o{&c zq9|JSo#)@Ut41?~V&x6XT7lN3`vdw4=EYW7Z9~};9kc+Km-`o)QalyxG-@EgP?IgW zbZU9zZ31*!C_e(FqrG+swMi*z0V+gQmV8!P`X`8JVN0>?W$+KMnKMQ2O4Mk}-8Tjgo25}hoXNWW&+XEpbRbz#rszK%c|`A2XLtK~kAs zY6yb>$G3bd$NZIVe&aX4{u_UZmeUu$^^LE6;~QW9+J)xd{#T;L>0{qC>-;pq2%>3q+1fAt%5pZ$lw;55Ul-zr7SzWMbFltxK>7;RWKU~*;SysqWk z34RDeuoSrwb#<5_#DS?WK}bdLXLPekP*-MpL?#GZz-Fa{hI%@pMiRL3fCvD%vj`fC zH-pEe(AEhPWbyawr9LQ7e;T5dCZ@z|* z5g|6*?Vc(5r_nsd`5|hhw1J1g4lXB^!-n~z62mR;HOrA8*vP&o_Y&h2aoy<|rw-Qz zTZZ0jNfhGBphR5udFOt`ZDTo0_!1I*J{l1!!5-WiMVSs!)@3)-=oY;}J3_=ADM?68 zZ~)k$9_nrA>|ul9^@!M&vfP}+K`$-$2C;lQ+%%V)yi?i+N}vj;J16)$urcTkX}%?bh_&KH0Ar~_yz)=xoC8VKh z+mHa1c+Hhh<$X1kr~a54z1bkUezN zy;vfB1tm=fSHvlUtVG_Xq^z-veEbg>aFSsu5Ex3w6)Oaz08(rXb+%F%os=m~GE2_RfIA$91Qpibkgkbpwd|RV%ajhRh->2;Bqq|| zM%j_oLVs%U!yiE&M<{-E^tEbry*~H3(dbt{vpO2dgL`McJ-S<~@Aw}^Zw_|QU3(=? z`NvO|T4W9LZ;gIqX?dku{m8aC{tg8*glOr`KwrBE>@hug5SR&auP!0xJcKJtuwNqg zNG;IYm`1(2o8pU-p2J5cjCOs@kW8SbNG_d|q`-kTV*silkICV{6NIILVjjwnR!Oj> zBu-Hnj=8NaVW(Z#`%2+J zOc^R-D*`!&09qTd320vq0(nKii%1Pq<1YEcggz(pKe5u$^o z7cPRb6op6tC9CWj@}~wa@y2cX!y9Xfv(d|Q&_7RctwG5n%i>%djowW&KlC_uePeX* zdzEMSlFo2QkUiypp6~MIX!P0>rPPt}xwXf?{Os3955H6SSb3s0gw}Xb@eBh|xq3)o zkOVGwo@EWek&+Mq(g))w#_)0su!V3NkuD_-4o#f2i67TGzQoovC5rQUvnH|q8<1)U z^AUz7(d;UuS!_pSBDtNwbKx>_7voQh^As%r4G+K-!;*ylkYrutr=nmG1Vv&Mor0Bx zbO>7nks}kGhlDy zsxqA{Sxau7(sv5`y4|4$C>VGn)IU~aQ(CuQU{G{_a}r8?3RM&)m6>g#N>0x+SX*VV zSwBgK#!N@J7lB6X5oK^>=DEa3`H@`ycsowI#X+fSFzI>do=4NK+XHP=NoS8dvsyaJAS6w(cKRdg)G&8@jxUjg0CRKHQrFvrK z)XYhmhR>XwnSSZm;S(q3SLSCIPM(}ysW#@1y!_&klZZjhEls~Tvvh2szId{Fcz$v2 z*o&tY7tnMPR;r6LE7j#%bzymNrFN<|cVcFK9{S_bQhj-Gsi`iXnxEr8OG~FtoH~vk z)zZm@g+ni&nmsnRaB_*)m|32knVnslKfY35nXc(CzRY_bJGnHwu*5gTxtEVGEYHl% z%`eQHn43L*a`xy-@NUqnPVqTFk1fL^p2N~PMQ( zqs?=;M*kB%ACVzjto+ZTe_8%|>!&w<{lZ%C+=0c;#@2(%6K&5FC&8YnoyZ7zcxqD*g?y2<&d(Ymk)b>3SXjkzj@QPt1 zPfqeS6R1uxh`swKcJ1F7$rK~md2osk;?qmw^5ot`j8pwAhfB3-UC-?4qG>B(+?3>;g1u|WeyZJ-=_U?T4>Fpb%*t28j!HK;P ztS9&FEcwtAdk;+PVHD-e>@8;oS~Xwp->`~ri&eeXHjxmkd>n<%O69fD?;#zw^HT79 z1tK)Z;we;ZElZ?ckf@m_UgrJ z*RNf@clC{jH?LeiUphjS_kEkwt9^C!k7=}e;J^Y+*NrN6b#F!eHtJU&cK-@r|J0c` zN54{<+-l{$<*&QHR{r{DplQ!`uiU$P`}GHR@2&m$``51CzH@Kw_MM0K?p?Y6`n5ZE zUi$)SQ&&epGfK_itUkapTJMYxfX`x_AHKYxi#6zWb#w-a(w| z?iapv`{&V&x_9UPt!r1WU%T_#?Hjk(Z+_$N*q@7%p{>(+z&ch?>~*ciwc-(VnX zYj1p^9LTME_a5H4e(jm-S8kUhxp|AR^VO|uSFW62dwBWIz3Xe&uirt?>;BdI57%zo z{leY#8$WUXjo0se>5aA9jO6aUJNF)5y2VH~w#btkjuRZ2b?-x(1HirW|8n)-QF5i{ znO{jH1(GX@7K50Ev{ow)IY6V)xe;a<$&w|@yGkorV$hnlMEUp}i!zUot=T_BO_zTk&>T$b3^~96UE!wh zd*A1Mf_FZu_DTo?>-YaR{{M$WiDS-d+rvLrl!j0^C z@o*oCJ^$=#TQ$e5uU%a75crNw?&3SbCXP*u;tiIoS*7-uf5sw zLekev4T%nZS02-NLwl5E(X`ciz2k?y0GFxWPA6!iDcixMxal;{_uQz}y1W_my1YKb zVYhzOYPnn8ZQp8dA=Yr~oog+4P!1Fd+X4Kl^3^~!(&enx)&_Z3Y*>1J)(Z0~zXBqwMJ}$&uN)H|8 zgTgvg$q<6@FNI;?;$=)CCq$?D=T+l3vHJYR^N$>PM`PoP^3v~<)cy_cow4ivzae+` z0zZ2E@3@HHE~Y3+sRltZXiFKxfREx@;b;&xZKI1fbfr>wX8~RmCg*Zt4;W39nxa2t z>V@G&hI#}la3X{?@0p?W2pcqhC;TLc$rM>chSr7*TnB;j7 zRWOeM*oFv=oYDi>0n3`wT`2T<#coEzOCN_%@*Yg$upLP5!m|d(2NK9~4PB}aHQUAN zoLZb<4_IKr|0&$(Ts{5xB9btWvoD`#P6dsDF(Bl4y`GN6;H3@6K3G&f!RmcTA2@yb zlOi+MDisKDRh35fGp9fO;X|=QHT@j^k!52f_C7`Z$PZ%wT)s2+G2m>WVcXfu1& zLC%rDID(F6FeMOy)VQW0g|*7b9AJW!2b3=XgW(ukX}bEJ{a?_)m6b=<+yH!Hu)bI6 zS7Y^Knk>^tD(*$CMdOE5jfqY%FN2;XsjbtQ^Qm4uh3*PWfU%2+$^?%PCN<((nzoGdk6nSc4A~JRjI1cUc@1dqjNbIh6sRuX#NYa_hRBhAohm*&L70y_HkP|@@tl8$Tp3JS{HM(YIU!Cm_JhFtVlZ% z1RxMeMmi0GF~PaYE`#2(qSJ$cUzpWTBBE&&ohCDU0Vn|D!!n^aHvs*RTi_=Ko3~im zb3Rcrd!FMqAUZ`l6a2ggVh59|?L$NR6%JBu#y>K2O3Vyc2o|PBKuNcm#nM6fPpno=qg{a~!uffW* zi{QU7^@Qt}@UG%P>yj&R=ZQe@!u*Bduw&*; zx7=esClM^RxREiXbS;$gwwbRqYgx8f=mR9mXE~CMEn?45w8O$+E>|GnntKEC7z&xk zM}kdM9vfuAlA*=rY0L|20CFx_uhFTN0c)Ty+L0?4H@6f5llUB{N07v)DkWc&NTL8e zc4TsrY?c}(a!{z0s_O$$W|%N5$eW9GM4AoQ@_Lgg3kO@bu|$Vc_xOR_zn0PluoF%S z73`9Tw*hM=FdH{YQ-dCfwM3Roxw4Wiu=ddyXEY!2qnzy-X(l!plarSOC@n)p1SWt6 z%B)i64a>Q}Nam_iszTyOoxP7?5yNuP+H0 z$0yg4AfzTz02k?E(do&VdWX>)rVRWQ1`bLd>4QiKO{2ZFm=JR_fb){*VzFAW)rjN` zNQn(`AW-+6Jc|I)EDZNq9`Ut?5mxO*zLeW^vTRIxDNkNcf#F_(%^FAti4=MdiEB-M zMIu$ouNE`Oa-&3UC9o?;0uW3(x{}lznLLInSutq=Dq@kqZh;iH5(fg&7Ff>>+Kq}H zkiAoMwm`>wl4ZeL2lAf+-6%>PWIr$osse5yNJ|3EASpp3mL9`3jPU?NVbs}-C_)cH zAyb&9*T7c~5NjXi+s|*oBnvBliUKHtxr&p^yUUX!!u5Fc)T!sjhmH;mO^yx?&;gE* z4C978d3_lW0T{@$45_03WKSkp-IsMPK;uVC7MGzy@`oq$1u8@A;3*`X(lh zjyyX&d2D3#`1r`k-q_p4-|*`p%&NvGan{-!A08PL4c_P=z3wPhSp&Q^|Bb`(%iVXFh-S^k=80PfyLy;$yWmb8eQOS(=+&iqB3@pFKNumVd=(<`?E>&tgS2eQqIs z_66Q3e(v1#!dx5-Wd>Aa7N4u>czkMhZF*^XZhkpFJM;eec$|+~n4MdQzi@Ug9-o^# zH@i18#M_+_zU0%mUCqW%Pc6<*pPP>-b)7gb_yq{h>lK_1g?ZuQ=W<^HhCR@F3g-a$ z#N;B$8`aGx5^WRV4AXBi(j#UV9^;toLA{BjRXXy1rGD5DX&|<>V73T1@tWEmofv>%u&8?>Jrp#ai zia;G>i8sG?zx*K{3?BBHe922n=t7}z9e8mizmdo*`6RXtFzcwf>^Hx5U+bG6gr6BP zg2mdr(seawUna93T5VuGD&ya?QEX)8J@rS+>JxH1g|<^Fc!8a(dXAjL=fpTj=yx5U zJ|&x3PS>&wyYzDQEu4H&^8nEob56Krtzt@|9@LLve^Mk@2rK6x>LT-AKe zD6J>`dPvF}jBw;lc;kWP)wUhjo7elX77|xV6r)_#s z3yDPOpp>B6=r#znfmjJtUvwEuJW==5nTsl0&19z1gl9`Qn^8J=of$$i0nW1OR*XjE z=Crr?uh>`*hyYd503bZ;(BU04ChA4Zj>vV4APh01W^Z{S#HzQNl&FFNhnm3GOkZyv z6dA&(7TaZ|-DtCfQ&;Fu#47l^!dtKVsGZ@HFj#4{58fn{GfpLs7SZjLF$aMX`9z?@ zF6)Ihk$QR_0(Ys>?Suy(3^EBxO9ZxN6ov5-u=W%A1f(m&B@M-^LV2M92^-ae&TM{@ zfZm2K7wvq4!5GYgH`RI{VNx&1=e|gj^?fg_m$L_zYZQ>eAy~l?GKWf#k;qKgnY!TsST1~A~YM=i{3PlP67*I@&8iv-bUv9bQ-qc32 z1_`P}8Nsj1)S0_CI%v6|=ks_81A!<(3x1bowwK;~u@JD56lXF0Zh2xD!%lvnBw}1G zoMc7%FXb%DVkt9jv(XNiJCgOtWSnXQ3Uj+wU=NowWgnWW7!5ExA(@I; z(gs``dd!ZQDzdwyf+gUKL@@}IOhGT|YL!T4)>N7=%TD#m7^_kdQWllb%+r-H{M2DW zQN^J6LS7A55Xl`GF)T_@`WVA8IEKnwlAv>zRdHazP$@J#CqI@|z%ZG0WRU`;aXpBf{z`2^Pi}5+^#Rl>Q zcwv?sXv8xy{oG%t_RCup(uzS`W{#Li-3*&P`O6pTq%m@0v9n^#=USLf!!+{s4E)M! zA@9}-q3FPvb_Li6U_oFbzF~^PV+y@etS{usAQTar1E@))E;5MbE@kS==$C!XtN0xv z(<^ECmN21Y`f1*fGM}}U0k)|6;UY2JWOk-kG0%nuYC}(jRH;<~k|_8gXhCq`_}Hu& zhZhn!e=&X3vsh|FUV!gN1F$7DV1f-s!!3xHf{9)!M3p4Dmx!0jEn?ib%jj%CsuY?f zEL<5~L;EzjlO$?Wju``CWavy}YqXEhXeF$NERKX$rAAtxpmd1?p++V}oGnUd`UGhZ zh6t=r6j`WCA2BP?GV@&|hJ5g6m{hw{t|>~_8X;bc5rq>sgFq;teEYg*rskJHHMu~p?Gf~I=+iw;d4TWX`(q|vWq{naJeYw8aN+Ebav>ugkL3* znoy&_$B>oTW&z3!KP#r^bkS%G%=#PJ$N6h+NT*&Pg@`VZn@qSh1mqJ!B{$wF4Aesf z5!{}nX4&N2iR9$}HaiI>IW1Hm5};t8us1^OR@T5BWSvgw;q;G%13gfzqAILQ4G z)HE`v1+x^FX!8@qaKof!B#(OtPq|Pn)}#gzVQsOST2pjQDil14F}{wiWbr_S{g7QVO;!ER!nS0f_k} zg`8{xZOF2LFoS|hd>=@i5Zi0mg4Ybp`&dyR>ek3wtd@~KpnMbOnAAmX;jonARf2MZ zIQbC^&y}iO?5=4L@tc8#VfHdvf{4yL5RfSZ0Dw4P=KqiMtw0BwUSO6CwK|6xJe`=O zC0sAh(E+4bbc2FB|jl+n@`JUcE#@YL@!|Dlrk3B#{Fi`*NkrTd?S} zp$VRKHm#}7j?II~`xjVHu-Slg1SCx7h`&gIE!$MH86ax4T;iUL$V>wcm?9&Yv}q`1 zWS+rGsH&by=sNak#DkMk2n2zG4QHPKIw6>Y)%Hk~h4Cqt8EEbBo(^o6MiVYNaizk_ zos()(Y1*Ndb5RQ!ST?6q$pi&8=&>hETunA#A?%Zd;t+RKj*vap_Y{~@4TNGmh;U$$ zK+@?WPlS9%r{T~ZaVH2O47IM3Erx^@J6a>XQ8Jr5R;J=XEdjyeI_5?uF}AA2ZFts zm7(xHvNhkUywjI)Fybs*eWwG%2sjDp8rz*%Ap@`Y$b+6Ig2fRBdsyBaNyDMY=Go-F z<643TArsNd`J^nUnzoi+Em_TNGg)-do~R0Y90$#YO@J4m0Q-ZEC>XsN>kU{mj<6vY z+;(eI+|}$b?60{3S~fzwos8oZOX&Gaowg7G8zjp&!nVswiI)Z88VTw(&IDHNkR4je ze(7`SG02WNn&Mn&mP!qNirps+nqIIOSY{RmX$iI*$pj)>GQ_n57zP^@G+Gj_S*rxi9}p61OwG;#P69jTB{oSgaKs&g z=OqwO9zgy~(4%-(Y%Rf)3;ZsoB%D^r!2AXf3bb4xzu+b;dj(ijS#axGRWf#(WjzvH zYUU(VbJaFPtaUWO2tjE?i|nWxJ3N#{mQA}S5}Ub#RU&2+?AL~)%7n?WT{Awx;Shoe zcwM#Xkbq1T&*R*{oRX1_Ajtz1$?%hN*ufbb2&En9D|{L(00lI~b1x{Kc7gmdcx!|u zU_H(TASnAVA|<3!XompYgk+h35=vrLWirzcZ{l8=bY9*jFh|p(s6}jnEo(h)(siOt zuzyG71BM2Qj>7ZtW2rvAl)#~CqZRScq-t5L;G->8=qONi37V=)u~*KoB$-X%Fj6%# zS&~XPdXQvZ|!Hvjq&=&!03$Yrc@k5Zk7^vy$8``^F_O_~; z1YBtJuAm%6KrMvPVqv9ZWk-YV#Z^d!mISE^b8UykMKB#P?B%0bo#8crK;3sMtU z$7rw-0F|=|_64{`FzwJ^HV`M05lqz&ZHdN4|Pm{~^)>cE{uyaTNjPC2(2-3+OS1Y)vug!tZx zC59?r%)K>SrGM^*5kX(0RM}S$YW;lFY)o5#4)9EFdAETebrUUZ6m=U06Wbx#7W@e;@^<3EI zakf=(A>w(33Y#ajNVJJqeR)IxPcpt+PPC1TaFWsR42JfN;z_vRBYm&2wFzTA8asMb zz7TUbPO-2QL!GEsd))+36SotMCDpTOrdWp~AtYvg4uceF0tGlqB&5<6jzq*hktA8r9kKsdUPT-x zkwc+W7p)K)af(FI6ViRL&Qc+82hz@$kiR2WvfQN@CsgF-!mVBu57hR`_Cobt?4)(}C&Ykfhig+FOfD6)Q| zXJwaIMfuA%g@A*B1ywP15rC3akG3n-CXww(=owF9JtJ74Qau!#rcAv^mj~;2ttDcw zJ)go+WaR4TA~U5{wmQ|UvDdQ|L6T)3sMUIUEee88oACAqC2GT3PEx80>l>{c64B1w z$Br8Koi`m7pJUF}fg%=0d_jbz(Ax2rR4Znq(kR^f-wC_F&wXwD!gu@q-}M`=d=25r zMZ=8v6(jdUQ^hXxoS)XiF6@Go$41|0IE4wK|-AA_At=E!Pt{{ zN}#gi%nGIeO&T1%%#T@2r){&RSZ&4N=BDPL@}g?yCQ8%OW+?Z;X#_t+D1k6@V4LIy zr4)e6OKSjsx+XI24I$FvTr+KF52>@JitY!4LPXhQaRE#*yfxC6pU;rAAMm6Iruzao*OTUV|3_M`f7@4eRs8bbmyAE= zms^I$FK_=c%iei@{WGF^cJ}&*Hml|T{N0N5hyT$3=BegsMhtFB1&vMW20B+_)axMr<~FMCJ;=-v7J)g^w-#?d$(n|H4xv-|hdu{f(#E{lDt>=RW#b=ePQQ z+wVU$+IzUy|C!s*wEKTB_S9eY?|R!_VAZO7@9cI_P3{L#*cLr87gRzZyof)?yjkLU#I zBtqrc>4`C#Zr}ZpE6ryC_kfTm)wDn>$58I1~az^G9S{Ld$#$yK-R)&;xu$1w9VW^A*X8NS` z{>=-Ih<35x>Hp1ejGWl-98$m8zt{hI>{9>V3GK;n|IdC0`s=UuzeZkjYznQ)%dlfV zYW>^(|J46JKmRL-J|MW3LZXsd;b}6z+W*s74CUcpkOuox{crz2{b1n7{=9!8_Q(C( ze;*skbWB;nDnpc_9)KnkBeNqRM1A3cai%Y){x3ZK_8}cuuN0pkbBni*^YKhA-^cT0&~6 zS90a^UY?y9`2u?#SOyacj6AAS)p8Q=M|J}7O)FX+azzW<0#FSjkKUHm)8z&tO_eP{ zZ$>~|=>4E;Ri$#hX&3PnIB*#o=+q61))#76gG!aHkf7gx5sUq-e`z7s7m=;ce3ff8 z@Sp$ho8+X6i`hRK%k+QatNrFr_P_TFLZ-5gX6(~~{ht2Qet@dzR{!N#yx$*>9ao^j zzXvV2^&k6RgL7Rdz20|YOa0%!)&EZHWBtE89Q*&!wp{qq&DptgqKK$yNRc(wQ%ZZ9 zgnb8%|6VHR%eW6ARtDApu}TMNS`G#~1XR-N5~!v& zYdLCP#6h$yK(NB@6whcH28;|!h*bLJXGp5TFpLMb$f$sMi4Uu!s%>Cy!Gn&+0(?Bs zbqUGcUiC-R(o_{sFVTHjbu34~K0UqO;Xm0HI0VKi?Cr>Xu}?1}-KK#Q(%c>BK{^nd9UA!Be~@85|10gvePU-yqc=zslHUL~^CV@r=jDl>(y@!kHN*vCqR zdcQvvi~7F;bH4Pp{vSStzGdv|xsgdVrjOzHnq;bRx!~He3%DSB`_<&y%KGx^#>(o_#$r0Xw6u_oC)Sq_Jd`6t z&p!*%<|skpL*viFo%wv6ZSr(%47@ti7QZ`I{#O56(9pkjqTl~||KgU2+x|+w9rXW~ z@BbgwuOmD7iGSVy+o9OMVdY)w|JBcO@xRj_i+xcnrUlBJ;Oqb4TVLaXW@De$)cZmM z_<(2jcl+P@Z2w=yR)o;y;=RU+XRG+CeHhg#-0SY`Ngem;^;Mj?g;o*N6O7p{$ zqfneio*6kdFf{VH!9h;d;0Rw~@aXUn*h56;JROL{fn`WfA0tVpZd#Kq5nr8jQvf&|EEV{ z|DMG&X8jtMZLj}<-HSq6GFh#Dwf|Q!E}0SI1K!bZ@yqw%*bXw2xrut^H)3yplyk6; zPCUGS|Fwr-_~Mtoa{CgR3Np#BcAeMJ!NmVZ^4u-)yK^MFpNie=`^aJXr$6=w{hP6m z{nhJ}Y{cLH;o($zx>|VU-$3E1`xP>9qr4@j2X(!Zu@9q#vk(;;fec>y2 zF5P|Q<|DDpo!fVJ@AAiY9`4?~b^G@9dv~tgzV_1H-Fr7~-oAh9%D`*qU%Gky?wzZ* zZeP3k>h8VW2M>04@7%m~>&ESC1i}*nfBWUT_mH04A=>@=-ktb^yEl=r+`fK;#Pw@; z?q0n`VEVl~cX+$IH(uH0-!EUidH3ec`<%zSyVtJW;&|@v-nw@C!TlGnzItQl(Sh8) z$@hJ5`}Qk0U%ozd_2pZ;=wQf?zkl!67arc;W-ExsG?dGG$0e*Vr&9LfFrH($Pa z^Y&|Bx_6f&x%coDKL6^Sn=jwJ_A;OS_@2r>uA(n>wqL$->FUKz*KTz^v=ju!{@4Bf zAN;3&|KI%V&{z1~|Jv_=ITrgpuIC>iQDGNP#Xi;l=0D{(FAC|(J7fQ6|95^OCNxi{ zyFw>L85YDo^!NQk-~C)HHc18d5B>MNUil^^*N6K5>FL<=@ATish5e%+^u5bil~?C?7`w9s^HAtteyHH7FtdadwUuMuo-H>2Km zCqM||x|`>H(kXmoF3XnwHS?vNL zK?0d%TmS)>z7cCD0E%)^Kom4dR4(a`A?XDrozM4R^ujaGm!!;3QfD)p!9fCES}2cp|TTWUMjwO=ps6p)Q(`nqnt|a`1|!hU_eu#Z!YRN(tPRzY zacy0+k4$=jB_ZQFUZieWMF2NY#!agA{iw$L+6t3~gPJzXTk7Rl0hY`&I3 z_Hs%$|2}r;g8+tgTb?Au{ZQ%SvB{bd`#6Q+I}XQUmCDC{5NjO5{uCTU;EY|``BK}- zCuk{z6(=N8cslsUVm<`tyaLt0!@dvN9z$Vp84=AUau*O~(94L~AqIR-Yg-An>DsOQ zMKLsaypn$W@g-zbWcn;#IAvL0%fc*1_i4o@-iSRn3HhUW0waY(q1USc=7F+gjc^6g%}#V=2&re-`_^o%)B^yME$Gt|Lft>d$Zu zpHdISK3iIkJ;NmD9gDG_Dl6z=8lMn$4fGF;>_R{`D`I*f(FX~d8h8z(Vi&JC*g6Of zc&@mDj4?5K0I-H{AlxDVpc$O<_!`LW2&I`@+Eg+ms7E z27#Pd^iP~QMg%n_h4*Z_MYb5|Fa}a36|)kwNl-1t1hUY=%!j$B0SlfPCPD+zKl8nj z^_LYOSpoZ7;y_4g5;hhkg}DKqLd*b>OkjM2au@FYGq{m}N`I^gxP$6`<}gN*8!4OP^M3DuhD|dkh zqxQ%J5Yk&o?Gawe16gSBw9rO!Byj)oY6s&w##3OmdLb16UfDnn(7I|I2?HS>Ea8F5 z#pX$mgp-MmZA(RBd<1C>ssl0%=BdI?L3m-q=VLL}qzndq96KsS3?dAd^XNE3B}{nm z2ZvWH+g^2>Ayw^>iv{j~dWI8##c;?vQ_{{0S5jd*=DZ(Qt&PHE$fpEX{xDm`e*8QF zK38aOnf79_!-=;UycKe4E@L^IeT;AA$k>o^;^Z%3KcQ_zR;c1V0dFaUJEaQF011r3 zZ<6s@h(`#33r`9AhgB^A+UYg?$rw$mdzF6zn!?zW0W|h5J%^2^h=LBU5TAVm#Sm5| zY8K>0XXpkpVOWB#NsJBFL!?FUgrV#c8ySxlr;3<>| zFot z768~REV-DWFh<8ZmgEy~LvCWYQW0T1%$h+tgd;5;_P!!xK#tj@p=2SGKyx$msR=0=^eZv^WgBXitVQJNB>csouXxPM7jEShF zS{2+k6NE!T79%)tAFCgFd@1z+te-<=a3)f1NWNM;J|t`h=pRRho*kc=+7> zu>o4N(W65rC&!1#RUaFg_|WkoJQ8^8(a~d{9XU36!=n=ud>Ldh_#mK3LFhu_`vfoI zb0<%Y3=f{<4^PoAj!g`nUOIPf235&yX>R(=x#@FfXU|U0o}D>2Gksnn?r%_8DO^C)LTuE+t^ba_el^0i)|Mt z8eui3otFyyRIoq1+mE3|xF+q%?_gNV{=ZlKQS&Vk%M@vCe9fvxN+WZcl~(r-#tj#W zWG^BKC-B&5vZPh(Pe|&bV8}soVxq6|DB`|4)Cu)0F^>bk)8+LJUdX=@Xcbjr4(*3ITjqMY=DNjSZh z?-`km_(oQ;o6w!IwI?!&yjG;lra+=l%Qm(Ovf&-nP;|FKSI%Zr8)=mYc?S>7Cuh5< zWR2_uitF!2|$%JSqdY z4W8@;fmt{x!0^<_Znc9-QUjLP%ei9h$)(Z}I>MlZ=ZhOXOa({&M~Q^hB4B;!Q@2|J z7cOL;#OQn^r2@ic^OOyIb3s(iRt}yp2C)ItuZrRVq+|OlDNp1s>vAedBZzu}62P*R zROTNgq`>Rs1|&h*VfJZd%bDa89hmZ=REGTs6rMSZX5`7CI(W<~!e7cS>Hs|RbhVaB zzxm08Q%PAd&W5SL5E>3Qs;9@r`u;LRX9k5z7S2_4rOdWA-n>*F!C_d+Lb1kzmu<6% zZK8WnD^vEFD+|tEjp747lAL@J>;l=LkR|n;Vh^W(=B(xR!Q{!+>eZcwhg~`iF@j_@ zt30_q(ffn$qf{s(IrlM$u!4h8oykOP^U_X(cgOXiYRft0?3;>}G!03`$BfY_hqyut z2mgZ<+?7np-`Q!xUtt!JFK^@ugyJODR}(P*ODR`mbJuolSNYG6oU~AVa`^2w@pe3=+U7et;&FX0rvqndpd$S54zNklldBK+~(D z1g>FT>OdiraSVjx0^m^~A;zpFY&%hHrX-#poWY8fEaftxb0q_!aKnU&Mth8{0A~vQ zObKOk3Nn>UuYh-gg05WHMMM6^gqnhXA1~O4V37tBxDgOa$ONj)w#9nMqLEo&B{V_M zQj2_Z&)6s-R4jKfYs(aU#PZ~O@$Er0;6aygu$3E3IaQk*g0VCE5?u{#1M_0o^A@de z)mEA%fE~fms>tVip{KqVnHaYTz2j=J3lB@)s}10GCv<|4pEU$~*$kC1b^*u%O9e|$ zMo~sI9Rw-nC{8PT#drL|H%OC7{*QPWe3-7zvyFA(rV5au4QMf=y1 zz%1@QSbjda*%;!P4wg5y%KB;!|7QlsWycfZ`h2AkktPlyIf<7iJX(C`G2kYu2>Ss< zihOInO&txDC42!O?a9LAoA$d*aRY3GX=HjtJEPb|1#n`#dRCgVo#x&&AX3o7x8 zK6?O7Ipa)+jXR~lRFpGdE=4ga%?I>)fCqVsf9BhCV<YkP_=*)n4sg-2Vo1F zO06D2nug;DCIJM6iwx0@w1gyA@sVbo2{@70B4I-t^c;S%eD8}0G&FGUVGGSPF z`4%$_ZDFHBwvBR_oz!Ym86-`tTCi$plIT`-+2rD4Ji{=!BHXDhu*^JEBwlHOXmFk} zmLVw(*$~rz^M|Q&``3~NtJm?nO_)h^z2pKtGN2W2;{jJN=%pzoZwc?uwh0rplo!EK z;_8yiibNZ(0e2hse*y2E2rNywv!MN8-9l*Y;<8#iM778LsIcw=TL25xQBo`p3h>X#^49glW8Ej}q(QE{A za!(ts6;L68gAq@{eFnj_Mp%OgXoU$;BbJEETrOb|Dht!Wg;NOhMnpiEu5xgOus|`jn}4S*z(%kdN8@M!DZwPffK?B z*0Oep1S1stC8;6e^D9|Y80;j#!5}}Z)(F@tQ#m4DQTBkq2>htbDw_iREv2%oV3ann zJ6NujM1k}L_!F4U)KK!Vx>jT!8u+2!z8LrPKC&xzy#7L2*ap?HTlP6B#oG|_&3<_vp$H#HO8yEjf z@>0>C?hW%&%AJE`pncU9V%vw z%S#IjGqY#T%*>oUH@`4DJw3zc(XGz$?*-m|dTwTRWhG7vIy198jbXwp-R<=0#60wk z>FKHIv*-9u)BNd~b-p9r@8_2JdQXU49u*RhaDLUO2257z>dhKrb zmUMN{UW};}_`zoVYE1^lkPo&arh`v?6T>oQMqy{?Lc8fU+SV2w31fNzZJIF8Tz zc;tSWT55LLrrdCcu~w^h<)V9G_RV_FB-&0#n9nvYxY7>UMF&4QU#f4v6o#A4pxfQN zc=?jkn||}f$S|#<98?_0*94KONfzbmL}+K(`9Aw|fGa+msD?tEx@M~l5 z2kQp|y&!{#7VKDma<)N50NjhER+E@fk%L;$4_;^XD!UbV9i*q+fFTsHC&%m(5JM1` zgu^XLFo>ymEgv{x-1?ms8+SVC*~(^%;_AuShA~w^;aMn1*k7?Rvo{^o{c9D1?1g{H zMyAl%j;ek*`sVFPdIZgA1MV(~I+Xq<%*F$sOi>&lu_t4_*xWI(R|}?|yjZxe!zi_p z40~ks`lt>Myf`2iv+f6QZ}AQ$wocZc=>9=8gF0U4#5XbytmEu19sJ}L-$*n!!oeEI zC|gjL-~42(?La>THWgs54b?0sAIwB<*ukYXHrv=tDe?w6kn3;uZ->Chd8uLT)qldS zxn^EuFCF;W_+M{Dco)^Qd=67*wU}9W^OK9&93xa@&ce&cmKR-aq605hl8I7Qv2chY zc#nt?$60;z#UL%h_z5d{)U2gk^@3AA_+m_v<>l3agyk9Fn?r(O{>h6e2_XElp*txR zGPz$@_pkHW$J;2R)ta)twv+<%GmE88NPq`~W#KWtQLx+CQg)b~d-PDG%@8LEM%Jih zN{tBV3>hl<;-2*>YAc#DoL2I0_ZWd8lXVIMra}u&2D6NKU-bD}xyHHHE^eSS)ZP z@W_!x*FYr&`4}54DpY8?1SCQfh7U?g1twXK@1i%`PKe)fW+me-Yr2H{y>M=Eu(&WP znUaP}OC#{xcokNh4%|q7mIC=+ZJIQxGs~^ zT61ZqtR8NLMv;*lUP@3bZ7(7$5@7=ycnA?UqyZJqi?p*;o+TD9hn2u%28`(g-iH88 zb~A%|!cgg6F;>8o1eZRbW3i5iEFwChEM5cvEqb}$Hb_9svbhzNBo%_i6F-Hvm3xUx zPTfsFMFetN;O@df1pI|_n=#0|U_K%k;e1UNK{g7gtn4?`L;#YR1D6u{mgmAPRBDT| zL#LpHbR{$frXB-11VsYG;xa;;5fTjUO`2dyL8+zBp=&4!nUEQg-;PL~cR-d1d}x@MkO+o| zqGM~zNFJLLevC9*(J)Fpieh>Og9C_$JBHKinS0u?QW%1t^K*F3!DdBCL5zco!J~(s z08Ri8IFlzPuyl|tD{c?kMhG>;37x9hj!dsZZY|9w3Mh-~5^;4vZy}7s#^+`gM+DI1 zk=#bZClc5Z$jQ}$43dNI3=0fn3o#?4gQV`1xM}oS8oejivP?=XRR}Z_z+^pFaz!hY zpAt41LPZI#0wvyriXzm`KuJN6DPjgddIJa<*{0x8wD7q0IHAv1;eNp~j=gjr&D?)1 zYxRZ6FHbz`ND`k;atC~FQ0O-4$BhwavzXa`VJ_^@D5-*6uZNgJ(gj#kO85ys0S zsTgU9!*^k}geXb|zIz&i9tbtIf%l_N0zKoEyp+nb0AsO< zPYc)5qj0creTCk|ev0BluhfzA@lgxpi-0#8HP|J(+i`u2CfK(r==n)X$R@Fz zDBe|J+D8TeqB|O0LI}VqXw^-|yd>RKRQz<1RFg?fxqysD2%hj^sllr!dAKO;RX@y6 z3o46^)QvGIra#=m^|B;or%yj!yi$-Xa%l`FpDZDgM6ziI zY)(2@gcAkT8VGut`Au6Gl5#JzKvPe_JvSe%jEKz9lk*_+#NhJ6^uOT-jUKvZ$Me}$ zblZnfhlZqv&P_*WNAe6d=TGjbtt~g)l>y&rE@DR=F-75ry)ZXDmzY{uSzTWxcwr-*T-->mXP4IS#LFhtLXJO7Z@}~-a#DIJer}FY^YY5-#@v}~4q|$IX)(UM zI=hreEMya_Q*$#bajX%~5SFkQhrhnMx|Eq&DaMzVYD|;K&WMU-|Us=HRaN*qQ+9H6!EY$qPrRD6}iuf-k z$_w$u)eUCK$+g+|{PfhyQgSh#T3cRN0df#=6&uN=nOtsqBk{uW(%S0A>UxUfSQ7^_ zKRq`+4=Ay=K6fTHm0O*iURYX$c)z^1zI<+DW%2Y3^!hVX=T67ZPR}i@#b*eK*qB}| zfmSRgGOK+3)dHWvsaRQGTFc}P?3Yg;{`BFek32JYRd6fnz7gDuA*uaOBu9|B#aarZn)(=-~L&^J7N^t}{L~F*+)w804iOK*Ri@NLV=fnd3)K@b1`Wjtw3;HgNRtz>%TB@j>zC z;>V5+jE@fymoO>F4Pa}n$O*o`_{t+t z_&JinV~0nE$(z9b^OW%S96WYpU{GX0j1P0{V@IAD9vFLmYye8e$T(b!Apot3(Kkl= zhkttT$l>E7hsRC~a)N-YID=qeoWp^^BLhTD3=K^U9UdAacS7+0PaTK74}LXt_~_vy z&kTHe;K=a6z~M0t1TH=}7vF#61SAa3(a_k?5T>64;!-@ml#hAz7Z2nyR3AU84{-Ru zbLZvzFI~EFt=(&QJD0k>4n|-O&LySMJ&y0Lrx^3Q$g);;Lp zKYI7}oxQt1{@U*D&Aazr5v=mNch_#;xcT6fJG(F6x^d&-o!$E{KX`Tb7Nqez_pbHs zy>|KGy_jOkQ3wz3J>*UAT>awi)%&m9*yTs=?B2X~_ZMHee)qw{`*(M5Ke%(_ z=FJ;dZ@kQb?A>_!=H**2Ub%6bKjO{qy>jcptM_;B{nF3feC7V`ja#oixcAD#-3PDS zf9=B$cL`_MefWjfzWCam+xKqWeDDR54*2Ef-W>&I`Ry;?y}2uR?L1$!-w~;LvFu*_r}HhU%d9p{X4ri zUgKZ4Z#{sLe*M2-Yukcg5_c+d*9LX16`@)@{|Kb($7;e7y3txWi{((oe)uCJwH5~$B1!b9ko2SW<%`!^C9mx^qMbH8^Qh^E7G&^x z{Ze-duOY6;quOod43D1@ch<=t*hrj9m7`8 zYejs8Ub7j(IPjxOTU*VoUWiFdv(dQ#0X^8-?6sq)*=_a!HY4ipPA81qI?Vf^xy7m2 zywYugUT!tvulINzyu(JzrR-|^!S);NAK&SO+g<-cv%0zEM^m(ay_Vy(wtJD+^Lejk zH>75An9)Q|8QXAt#_&pPx1-JTO*iOt{qt=&_QW>u0Xr{Uz4+pRODQXf^*O1KCCD_p zh&Lj{Aw^29FK?WyCMuNn4u2*h6h*x$S_6P0kt#(AXF17bjI*j#?YL%?NGU+vuQJku zI|uz#)f$Q%!f60;(=igIyQAh|0+h?*O+@kEFF$7)QWe8HM37jC)4yUJOTVI2(|Nk* z6g5D0kp@Ay?BR++|4@P_0}mc@F-pvE&wADc2ErgN5R^LnU<<$v^tEaRHx%B9uu#Xa z^HGj|iHrvhMEK_+CN?-hUcF}`C#Dke0&<82T2L4HV}K}}KOtf)ppvHqDd8ZJ$u)%s zI-Q;^(VbEsBUYqZLZy%T55}`0F~G%Wj2Jx(>O>MG)eHXHQl(N#VsEBW9hOWQQ^sHb z+H!%T)u(L0VG*hgAb`OTtWH6|huE0UB_IqkFU%#RT!wQ9=t+N<_R{btO)EzY1+SmJ zXWv$Jze_198*2;8nRv0|RnjG_25CUDx!l~`S%}IA$7Kod1Y0(ylQd7Fkwu-H!=Mu| zFvDz0t8C}2drfNwfzAFS<;w?mOAkY$ZBPB2&LC9jOr9mCV9~_!$+G8ju zU_S)Z4i#vDmPN?`ozWVaStTKw3sOi(8l(aR4#2K}L9A2nanTU02DCABAslKqn*e?= z$XOBR4q&2OAv_njf?RB7)jarg@o+CJf_$M=U={~DLdzr*@=dT{dQ{P?+i|Ksg4qh{9TS8$`p)x^Xa5HqS`*3nZ5oFK5x zFT&cvcsBq~GDOXdxt=igNL9lYrol84hT4+l$cA_I&6frEB0K`}WFe(w8U)kXkg%uaZH$cS61p+Qf3pz-8$L&l_F**Pg z01#{NKmbm3Aw(NQ;c&Om=<~ev$f{Ed8fG7`oYZ~_?%<>Q*ue(uk!czz-UAhJYwn02vBh z2KT;2HnF~EzL#~c)^%D9$4J5oDmVJo4i6ylMof|6-vIV8(E^=<5I}S)=LMQ-187GW zEMn@_cr*Y9OJEx01erWe4d{FLPT)CAv+)Z<<^W8{kE0O+zsMjSuo{`PCfgVBmIKbg zZUap??uKH5;Fwd~dW6TKKriRYo?B6}rnc(&Yb<|4{0*AIk$|kC3y`)M!I+#$yjIFm zd^wl*Oc1*LanAl43&p}HGCE-YV{_o;dJc~{4Y31jzuN4Imt!%BH1^vTml5L7-M&JSXC15maLis3pO+bQr zpk>1ZIYt`rD{?S2?C^Qmnh85#e~0^9$yvb5LJH92Be`z)@YIc-a8hIoWUa()0XY&T z#7KBx^(Y46L^T9ykt+Zc%WAXqx>#BWD=}60QrD4(F_Zwk#8H*FSL}?Som3=T&kzJa zhT-~4nDJ>wZbQY5R!>3@=Jw#L0|zo=0QoVd_$<;@gq3Or7ZuKEMNS2Y3}{gmYhV;F zlpt826=jlt@mM4s9EYhE?!S=gJD!IP%7NO)R2552a>}H1fn^~N%^nK8OQ{v1uoH9?BQJa8F~nE zhmSefTG;hDQNd0czf$n*3 z^3Jt}3ULhkH*|C8y$Ygm6gV^(cNf)%B&Ra@p5~xn!6Qk|lBiWFzM&qbR)(vE)hTNN znxa~v<1>zOE@GDwW+2;zISkc&tQ76a8e~0TzGdi<7^*T)E_m>9%aNMIY?MR7W)25U z&B_$q02YLZCT0fJh;(I& zQtB<-Y(V{~xlz)jrn&~ntBBSLU4j=7tz?OtQ41i1;JCc1K-tAWEMPy*5&Vqx6lFLb z`BIp$T6VYA`k`O_J06!ldu2br&N}I|&}g!}xoRO@cMDe7-Rk(Az;r8e0_0XslmZqM z$o+^@Rot3zTEwbqU6Qq+e!hI(sqY|I^IW4A2}d2q2}Uin@YKdk6`67SVyCm^xJ~#5 zmXb%hhoG-l!_SdW1LSm^*@EfJ!iQSRmlm@{Qb9p7ponND4fT`!TlV*EE z%H}p+1dRsCFV;y#CZwt;=Y<&wYVbHy&PJOXJhf}MImw>uZ>!bVH|qeM~?TD zVT67u1OU6WN*%k_auM|p-``@oRlwq^yr;k4u4Z+%cB^a!*aiyagyT=Ob51)=3zEG| zwVc*LN;H*fB>_a~ zYq*S7s?QxJvf5h!&vqpTK;WIkm=hR6`2PI-^cx`+AaR{h?#D! z1&0Ozq1M{&ba@mGY?p+q6mkZ1lfa|GqNIq5@^+^cdLd*8(%cK>WH#YN2qDDWo;ArL zD9tQ|#ZurkB$=zqd8yXXaClY5Kt1@5Wxpi|kJvQ2ExxpEH#>YOV1BqTX30e3tpbLq z>(FN?O6izr9io&GSTJ`{qMF$3l9UBm9EqdDO_NU-I|4i@F;&!zDV+RdI}s+rEP=&_$bz-3yMEjid;AwT7QAY`IV z3y$kvHNA%38q+S9z27g?+$Q@EqLfM`tPa^|q&y8&Xt7}UkJ#W4t?5Z!w~5+~z)YTa zIsh^R_uRKNR8+cH?A4tetL%~l)Y`EL-0>;dQ*7XEue!C<H7JU0(bh!RX_m6d0@kW!B@)a%j|QWNcm-vw?Kga3|ERaX3`2g;Q2xMU zDch*L#6r12IfvGvWOgZ6iZw5=Y7mJ4H}tGqQ|QSEBxHncx+3kM!BfV>w{adAl(}xB z?UNhoHP{+;NO0)72stwiriGzP3mFEefS@B3DeG!E*!##T%ude*AYp;cL3ALA5FG>h zDSCh0;<4c)!jTzi9jOj-aP zB|`S|*l?i*!uw-ZO}kxHm^!;4QE+1L!?t?_DU^r`!hzDYy617bH6oL3#`Rrz22H;~ zLRa1A^g{YJp)ydT)ooO9>@sk!5hYcW0!?|z6`UL~^)K>u=?f9%4 zDN|fcquj4NX14Bp!BL!B1%Liy*ZX;84JM4)KCspvt1u%1p?M5IU z_WQVkRn0SDC$f@jl~!jb+_T3ZW`gKxyaRS1Ol)E5g+|r$wzfjR_#gx_avUnX8i)mP zGi+&WS3Myy0RiD9ARtIcX)|dML>WqrnPH62qYya^|Jk9~n}O|NN}0J-ZKI;ewd*x4 z1Z%-C1pW_a7yoW7q19SYaRbs%Y4czru?08q&J@n;0KNqm#L#IJ#I%^oxrc`~#Ri2T zly=XJaK^TSR>SpBX;TS0EP8$pfDxxXzBUtU z3hlgbr{!6MECbh|l4aqBc?N-j-4GTcdLy%r5XV-ODbOlR&2JEyqMAOdzsSa5ZAEVm zNQrkK0b_Ksda)t+meA7hjq%i4FVOT&oNv6Qvd<>mj{z*#u%IX3*WuBqsO!0+Y_6=S z>UPg}(c#PGO?5*LJVszWTvwgQ5!ncJB8iHW7Z7Bcov`H^o-fuI_JzINr}Kcu95#J* ztqf-f?hud`yHg#*dbR^vZkox8?v;D&TI`J_J4-GA)G>BWwx)cMye_Z+G!`NYGIRvb z5*G!oPK&(VB0AU_aZLs7C3vb7I=qqxpbU?Yd!Fi`2>Anv2#a1(@X^WxXZa` z-}ilA?sDQrV*!eBP{_9|Fl5x2mfnGwwa-eV^yMg0a(Fz=;mZT65%( z2l$--Qy{D!;4Y_&&!t%uY=mM=#^yZ4iIc?>txIG_BsT??3@`m0c|8IMfoUa{hxC## zW6D|01+kTj?yO>_<1Xd0#GZg{<&l)>n4zP)#$S!6U+>E?3(fP zv0Z3&&>%X zQ_P8i?uRFUgl^JVv!FdPNn(B)675&+I*Q1LnMeduM!1TNVD7;OI1!bW_eH$TgkKP9 z86rBZ3T_E#2;F^-f30A!q{b)fXLb_b0)ccV0uGQ0x@g8|Tvk)j1;o#qqbdk;Da%h( zJ~{QA)n~FCLV%EZrG=EnyO4B~0SgeOBrpYZE>!Fg`!HtNv@-7u*ysckLPlo>WXWeQ z$~$s^mvjPNs+!caSAHiNit)R6Ul>C>W{w7s2!QoL(g;gNbdnh45|ar}(+XMJVP|_k z=f80)C(v=*N69n+$u8KE(L!Dt6Udce(9KRqh`|hp-Dt&EyUC|V;@t5`@$x;_e+Lg> zv5rX6ka@FKqmSZCrr!i17R45XEhWiu%xs)`kURV)Ip)6X^Y3TT3twr~iAaBY2IR35 zj+#$AliVGk4=DC>s!D}a59Y+?TP_u1to8vsR|O;pIglBQVFsByKJiXw=1EuDTp&pX zFC>e&4F_zvsQgGWqClH7TBH3Bz&~w0cWlnTjhEr!69>Qp#Pxc4Imh~76$Crb@*bGD z_L#98pxx=T!bK+H7l#v2as48?>n?o)B2c&Ed7!5fw(;`FDJX`;V_+u4$lYydHZL`H zCwvHOFuVhR>w(qQ4m2+h*%W%0*eA`XyqwpQz(7%;!*_8do1_HKW5a|Shwo2T0hboH zNcDIhDf~c(Kc7Oio019Eh3udA)Ea^rEIG+`ZA#z|%W+(FLjQ~s9!-5*5V*v8(!%_q zrsqf@w1x4O1a7(?zzfoq0SMbvHK5{b7UmjUpFLn2#L3BE^iS!}q8LX60)f_0nA8-U z;JA$O)P=R>98r=os4VkHYYk#wCMw*c4MjZ$rFigDj(eT;&>#tn76F)aoT#+>p*(fu zsn9yOcT-;3`jF3MEOY6i{bJ7 z;*7-|$rvs1)*=;vhascREj(BuU_+V`LAALdSe=8UULIx}1uC-)>DGgb=@4l;1zAFm zxV!z*RuWUOgZzy{T+!N9R_L+j{g+gcFZu)6D4=t@)Zdf+FBAhFlOt+Co)) zV!ZDcw8Nwr5Y<0YSrf@h*b2wZ(Dw+weMTfE%lnA7dj}y>*-RH}5{iidE00$jE zX-&TflU>9O3@WUHtmnLuK+!a2@t|F<5q(uFK1eTY7e+Hguw*&Gc4VbRF&R5NT6hW~ zQ-1n1x0uuTI|(KMcLXDf=9@ghG|D*@Va1vbROb%(83d=CTS!h(L3+)I9^IuYF$ewR zqt%I`psIs(s1gmn=-#@4_+Ux5`UmxZd#$aInxuF;qlvzU6a#36Uo`=FjDs@+0y9|C zQ|Jp&Nc7v#MB~%bi|^7izO-uD__j5hIAk)DoJ&C5$%*TBAPn1Oj>E481kzHIMPoo| zTO>fGPRtcU*I%;EjpKeKmdM@5hF3CQ!G)~rd;Hi8(j1fI5!pEh7*r7j6o`qzL+A}z zS*R_ykC1fW*-rvE9Ow-u5GF&wALPIk=Rn*5;#mdDJYfAy1RCp3I-W7AUXM@{{gJPL zPi<~sdZ8C-QIPRLfJ@qR&8%>VlsbeY-tpL>^riliHMBdQAwc`Ji_F@Cspi##)~dqu z)P><^PKHo{O)XF3FdVxhqaB`K2x)4&2!}?;OKAh?DdZ#Y^m{m*pw=yK&RMBJf%pR! z3=lN!6<$Oky4Y=ag!#P*Jv(@X11cG_=^dl$rt#|0mu+5lEVQhoY{!(vMFDQ(4(qWE zTL&a<<5c;Wu^i($IbA?VMVLrMeJ!DwFTP7#O9^`%+^!qLdgA!&Qulb+l?#Z|dGM*B zV_rw25AlQB32G>FmE;Imn9hrs^;-J@A5cSwRfI#p>{I<~^hW<1WJ4*T&i~_%LzbtgrA4NC47-eTTAgdd2NRXIVnvDMZGO%;7 zzVO%)yBTl}a4PE<7d-wsVRuG)&kB=27yl{oBf`$aYzHt!tw(ah{=pmVTYTBr1w`Kp zQxOkDKNkIwYNr8h1Ly;=)_c+Gn&kcIM4JOEDzIF$d^&$E*Zn&Ch*w@bUSP~$Hs+!+ zlnTEAmjngEm{b_B0MfgOW*e3%%OPk6sxvIQ6VI|Jp=fc1j!iRi z60n;y;p4Xo2-xG$7bR_>z)_$f>lHwn~gYds8(7=NT!-;rVi5Ou; z%=@qzM=@%OlCaeYD4F~cHNi2D2mYE@?`ck(%Yg1*+C|gy*bAN$P=s#?@mf0ol4p=p z81#ri$g#iEoyoJR5{d|z%xGtGL=vqEW+tKljsoJy1JlD1$l=>W3^t_XH0CGtP0`JX z)H`-lua;Y#Vth8zfsbKA zno&Izda5;rh5-n8tI$66RK=Ycmkwi;Wxs-!^C1#9S~E9Nad&n4a5& z`xtbS8NTy!TUA9F2DdV858glf=pr=TeF!+euyhmH!M3e1Hz8yx_k_!yyla( z^B-By*goAlk~<1P*ULaZ4Yt#s8I>89x$gZrJJnR;w#Q?&V8GxW1L>l`rn!(x$md6( z3ZM@AC%;HosqKYp)t$f0(8YN9si2X>%}l8Y%>o4pIl)2jQ23)j)8M-Y>@SdPa}zJX zoCc~9Pa{Xzqu<%Xl@aJX$|xa(*bBv=k##zi9e&Z%j5yEDx&{umHB^}C#}?QaUt3?h zOHKL@m51yQXptt;ropX>^6``{Y^{94ecS=fKz2hIgSqt=0RVAv0G#r!30q^)8eH$x zf1S~*aWZfkqAA3qY)h3ZMa(6vlCF2Y5d;`sPYV~EXhKDe6><)CeLT>f$6Ka=E07{v;t~?* zFlZGUR5o3)x`OtmI(GzR)F=!|-9cUo;+s1Jg}JB8(3a?-peU};!iCd6t>-6hT{Z)d zN-+u2)nu%IePf6Hs1`pQlaax%(~(UXoKPxqbFQbeX=J{x?jwS|B4VHTKCNg%z)Nsn zVbYb}v0>!LvMzv0(Dz}&p*XH77mRF>bBv;*fv90@E;W2e`tOhe^*YPn04P5s1^gVy#d?$i8&t>2lH8Iyz(gK5BwdswM6 zHDriE9Pq}mWXs@whq~$EPzNPSE9oc+C+4pyLZ-KU8yF9mlFGD)@c9$B#O+mLhDNu|0slYJqs{O zHzq~AaG*sC5fTHxcG6Ci-dAH=FXIB=#F-+NL|==$za7`O`hF%*is~`&A3Vf`-chR5 zQK5}ofW4D-iJnN{MP^3%W6yoZzR2Lojgqx=5iv>n1ZfrB__;~o;V@%AW|!U*noD9% zK-SLyrBT5aB-&1=n82!bC#P&IMm^ccc>#HVie=F zafsr(m5&PS4$cdm9351d%q)wnhcy5p!{RzXBg>Ruf+H>PC^I>3!F(2;MG~H1BM@IQ zZl8}O2ktLB$v^q!y;KZc4N1G?Qmb>n=mo&ago+gczDiAcFwJ<$14 zHDom_$*OTOjm$@v+Quo2E)s*k;g+_Hs?-&U=!x)W3gidbAH!$2G8waRiQXvD+>N1M zSgI>hE)a7w9YdI~tTag>8Z1its5<(LrHK1B7X+gk;LTnt$cJ3|#o1k-L+Nq|;dYF$;`F#OtQ85xGV2<3C6W|GD z>L_ifRb)Nzn>7HpBCd-ipDZqRHG#8oV=+arD?*c@mk2x3PU%z&~i( zBjT``N$F$BAtbF~>2&b4JiC8r642o@9y0qn?z8uYmF}z9FZQmZ#{P}&A>x9+5yj1n zu%V7yAxiqVJ&MFRXf+NbP$li4J9}-R5farVSW|xD!{+g3H+_K>_@?3n26#>29Te&A z+i#@1t)y+uoyupR>`~F=dz;2+hMon_4h|gz$z+Kp2pMa!YKc}Y0LviH%7KSONhn2!IZ;r9F+?!4)`;wUe-IE*@UHyJOZXj(Q3=Pk3>X>wh?h! z%A)xLJ&Q~<3=Y7CeM@XJa4~ItYIByAw20`*1z9k-$ zlMvyF5RV%!+7JwJ0%v6ksS37k^v@jckRsf-q0abkLe7MH^>|KkhCpVOWH}xd7EaqM zy&KoGOi>%^fLi2oXvkFMrOdPhXb3r?PU(U{H=>PZR=p22VVrPuwx7}K9xR_Ehp+eL z-~Hu`Ri$V3m2qpj`~4x>eD~^|w3FV-JHto~S29q7iikXJ0TNP1vh92-;j0iiHlGz^ zkceYOlrHKK(QI-59sdWqUwY2dYOz4)2q;YWBl+w^tP6Y!LFGJ9WKyKbe^rsQhgYWM zY=SC-_6267`V^G^8Po+u-=?u@|pK;X_o+?UD@Hcs2jXoo?mE5eWljP(6XvoyuMalg08#T-q$Tn}#QEcv zC|a#S0goIO?}HhisZebxJ~2$w73Dg6wQ9GTOA4#)@)r`cl19{&=N)chRO(b5Q{iIJ z9tHupuKv!2-{;Q;bAS zlOV!GNJjykPPf8FTuHWN$__bR49#GN}XTW3T}Oi+f-#yk?Y1 zl2nYEmq8`w=N?4j2*(KiIi{kNxi86`VwGuTQQcB^Auyd-l8jJQQWwPAph8^}RKY&- z%_P-tsuZ(=MHmV{)SH==pvycHjbF5rDJ_D%&^BtLSvVc@90UdQHdT$ij-U|D4`$P^ z88O~3XRNI#D9Lr3Q^3UcnNXu-8@l+zusnDNJ{DOEJq@!-XQ+JmIFv;yj^U6x7o%QB zK||;YDRCu7Dju=0J}u`H6CyGv$MBz>KcYW~LB=Co2dPV8spundWCY$CjZTj56t4v& zOX}{RWOqc8n=v8XHPNR6h_kqn5sw3zb4l6>gcSTO(6I*@QOtlc4_@GS2s@E187y!Z zN2P;gU|!Vtel1+E4*9x3A2_aDBafBFQE0g!6Rb}EV?Y2jRHR#BMb66S`EL!+<)3oK z(6j{Xhy;d*52TDYF%Su%yySRDncPKJr|&B=TshZh@T+2W$W&@6&_x!Kga=+#!=WHO zwlpo*6l*VqDO<9yJ4PfE>5631L~7#PK-or`*(Su`=Wa)Sv=7Q@3&S3(b%N*8G&CY# zv1=h)I9AZ0p|A2#;ejFmRg;&m88QF*m+$g+XW*Ft`NogJv!$C@25GyDG363gdoazN zY&wP%Yk1*wl$Oo3)`S1-{u!rFm0RQq3DXB_AJ_@<4B4kBdm$tlH-)R&7!_F+j|=Zt z>aQ`Mr$?p=epf0{*C>|~?*1=stSm6^!-GnD!A>({Q_XY@z%#H^6BZ5xiT|Z0)Xb!~ z147}F8&|BTQP+1+3+e&BLE*o{c0uaM?ZFF38iZi5Oq_MJ^-$cE121`3h|S2lVX?@2YutBcX)Be-jZCRj3j@O|Ie}{ znKDv;ve})@foN&Nw0NTxNk>iO_RLou0LRd?ErbysBn=h| z5wC2*%gCgg4>(@MXabe}oc_;vFcI-X=y3>R`SOpxYD;QXivuH2RL7F`4zD+=XEOSn z?1t23g)b5c#rF9gj6Hg7)lnTyHIKD!XjF;udU-g!#~e!#SGbBPjLWr6JRD``?kiUC z4}N(sC4(|qX~ST_R?B7n%%JLTP2oz#9Zr6L0{F;99FWnORSvbz_;s*SL`-G4OMD1p zxWsB&Y{RpS%sZZFyMu*AcflG>_INSRbx&eEc6^Q~J=&5O55XFiM)bw`1UQfBJQSf$ zihOWYHA&13(4}34ruxnZJfrX|SV#-Cg{$E*DHR(C5ZU<=_PVp}?5(%z1~~_wdT=({ z_Lf&!SoNQyKh8}gnl$I>5HfH)TpY;EdA|6E;I#h&XAI`7lCCYZTqu{ixvNQc1f1aC zAUMyF0c?OVaOEL*cEkmhXdbYq%6k?^%SLi?V+EL1clZqso@yb|+7NGU87jM>ioBK208tQ)33ggf z00RJRrJh~pLPMp2!L}NQuh~ss17Qw3*M9w0t9klSEpSJm^z?z)MCP@J)X{e8$Ve$P zq=*T9Ki(#mH?S&U5jIqbQUzkTX5ecR2_e|EgyWYe>rw{+k;{#5*`iUGyXFCnu?lP2RIvw znbNL(p8j>M1;xHQX&G02lN;N&R8`>R;0LljC>AUXzyjMJZro^^umXzFlL{^VL9~Lp zF%cr)Vt+(mjaa>g6+quCR>}rbF0iY}`9{FY_6uOdvdw$UVCi}Lm{jwGcaX3>mQK`K zocVZpC=nmoGz{T^g%H57mB+dUHfpdbZxnJ=Ekvxke4wG_=kPb2m85uLhj*i$UvI0E z!a#8_4QYGFg^Q&Y^SK+%&^RQX!5*_hK+poXmEO=oP`)^04|f}PeZWtTiHZz(T@&RV zmQmA!=G%7D@3mv1$9*)a6-W?7m)t!vp>E1q|TnV#Nm+!-V^-Z2!VHl>Cf(SCG zS2n(x7hFiMP`b_m3=`BW?|hg}t1vwwux6kUm>%lb4DXCnajnRAIv2br>)hoBf5w+@ zkTAweZS6W>Z?ZU`a*)j8xue#=-k=CYhi+-}BufFAWz^c4n!~~Bu^1tbg~V;RyUA8& z@)qfO>ws9{FLcr>2p?|2uw>-1xJi?-D&=&1ADhs|B2u&mk%35u2ZrG!Vu8zE*t8JI z1U&cz%|3_!s-rkV*oBzVQ2`GFx?mWr^vE~qDki;<%-7t$;K=+|rbm>778nwU=8ce8 zYSb%umbH}-mfOHI0_oF~s@Q7qRRl7Sz}_C=QZw2~L?;{xy~J*i9l?m%e7!IK#(rsV zO$%j5H)>BwQDJi zbPeK4mXAbIsJExP0+egv;T32A`tOG97kmalAK^;Qe%cG#7Ui(akb|U)z5C$D&K((; zEJ9>k>KI*OEjxvgVg-t)>xrT9B8XkpL)IHm-&a+JAAu)mAZ@B_81x>Hn8^FYb%HYP zz?_6(#&b_pE0E%ksxT}Ha~dXGyDP@f3u<{i&PKe=71dGMV=Q0kQOg~WIy5U-9^8By zq25ph%^|s=T;mnMWkdo1s@@Q~2O|tQo=~YIi1I{DNJLTmBIP&n%tBX~almuMXb_Hm zM2(KltO&=%`FDc|n6X@BH< zC{a(~A3%Z9bUFF@|9fI%;dN##1#MUVu?TQM>DIqLmqeAK!$Z137$6TK2F4(#!IPrl zm?+tS4+gf4LCEt}Ju~hAU?WY#P$?mHWA_P58=O&ixELyZ&&InB_c1lJgMdn=mWS;d zY=q}Qkz|9=ND(~Y_FNC%q@yPu-9}<mzV0KiL+eoDBo z-ZuW9Q4b4;F2X=)FX@!zl%a?+o;oC4T7m8CO>cJy)q7oWV&fv`Ht9f_wQ+;)T!^$( zS7nuNh5pv?7DQ&U=7%!A;JMO_18gZwDX`ZguoYT5^v(#D^-T1@whzBcnh#?H$;8zy z1Y4vGksx!zK%L6TD#C8Ec1qi)OaYPvU^Z+L8(X4zJV{?F10|9aG|bfzoh}vsK?L*! znClDEB$G9+j>vkXKO#d{CLAof$`TBVxP2eK;z5*3Wk9p8D^yL+0o#elm2J#ZVd}j1@6dwrOk>5A(W~L%E@< zX%Star$-)6*tjFIJ*X50L$GyCH;%mOz&tkI>3m*GD*bR%^KSZ8Kx{~(F^BH=%rwrP z6C-fP(N`|)N}>TJ)G!>RD|!J2N)fwcfV2v=F9H|GF{oa{xWyOL5Rek1I;_ewZO8vz&5PIhI5dU7tsjtEvGb&EIG(DTUUs;>I1#pBhuDnRMDxGPCdQ~7SbQjN0Q~* zm+3x8NsTz&-m?h3t>ib#?VDJAXPKM9+$ex}>^CYJR&wqcv@`R-1R6Rg5+d-QS-|U< zEi(;#M&zUUga-&)6TU3OcD=C#$u!_xj5L=`6qk-$IW;ttd@_wz`uU1sErESI_xGWf`R|5#G(I^V$v+#nS!4 zQwPlPI)i``$ND*vG*PBI^nP>_!O$YgLsijeu9<%VhhRHq?B>Pn1{Qsg9cFj&?lPM3 z$rVF(Nv{x!JUIYNnF1}u5uEn8U#uV^T+50~_zc)+mavv<7H^XXha#_>TLBaTYA~Yf z&;ZcmS?8kRJ-|&ubJ7hlY1$ra$m1F00`Z8dg9_oC(alh~6{qh2nWT8Vr%>j!l8)U{ zIAx!pqRxhV-%G;;Hy8aUZ<`XaEBk?0*$99+jbf^Z{{ZXsAu z{iexzfT%Ft9Wdce1mvll%i29pQ#8%AaQWUE%pp(;X+2$47yCIP@WCu%W|5u0+K{xSm zX4%}M7;+gt%+1vS9S%T56={>qh6(Ow&9veW3h0hzUzkL-375WL$_Mm1*Fa_w%pKC!cggNnKo_phS z-@;n3dua~zwQKCDyCN$)FyQG}0pS)=0R}F`98b9kBSKeGS4-XJ$^s zK1K5wI^D+}Z&D6Si$qYMMNv-=*~no{>tlH0#=s06sgj1u%JKo9d94ZlDJ%1W$c-m` zhKvM%07GUC^)#|y=o!Pa>DulMes&8bG!sBL5X}a}8`TkzD{KkH9z7=7*wu#7qFKb{ z7e(NnInBcarE!^B?9tuVGxmS^<-2q=ZG)K6aPAYZCn_5@l6?Q|Tf(8g+p^T5J@W}F z;sXy-*Ln`VRRcuMh0BKmw9Vn(53KAcYQ9vWFMoxSloJmgjhC=u_%^gql< z5YhN^!6db&Psp^PHkw${1DH3998*K;TLr|}qBA07z=&+zzeR{U;!IctcwEBe{TH|g zxym?I#1BSA!!cdeppF#n)E@!M`7qIifhW~Ea1ZgL{Gucxj`l#{96>28+b5BD_%BIL zi}bC42sx0+gBh`BpOApr3%>YYBzja4fjIC-)0V)@9)MLFH}b+G%YPPa%7B^%#+fEv z#ztt@$EFJ=7WLOf%W2Q%2dnq?tr0~0!nmv|aOPOK=7x^0G_ zsOi#vB$Np#9OQb0sNu0};zVKX5uumh1tQ6WEz^rWrrd=vCSC0hP7~z=9Wz3q$3nq( z=mD?L57e3$<~YHo4B-||4jTk=Nx&$em98U`1a&ZmQm&Qx*a`_9;_eFLPfuJ8V!#_6 z^{;@psphazZ`uQxQcTqpB#4oZG|xMS`~But$ddwNtEso!I5xTu6pvo7{clgu#xK50 zR#ehSQw2HwPjAxdz7TDV)#rGk&))22rfksIj? zBmoUE!#F)!XrVYB?FAEy|2Xh^#U@uy7U5~ek%u#uBF<~1nyA;v6d1w@IfVe*pfp)$v;9sz`O3yYnk}lz=lGvv3Bcm))+4!TlK18{AN!t? z`Wq?-IA@NJ@ZsLM7_Y3^$EA2n)J;!f`|;8rxWbJ<^0#pZT0nBkRzBvxim{zbRRb1IkH$Id@uFxUSWa z@ngk*gtZfNQ$%b~q7m;J8lMj|7h%1Il=5BG-fI>0&)#XxNhtpUtqPu$Z zf)RzJAwNI0zD*`H^)~$3Xw{$7zn`!&qZ}uH{2?cHi!AJkh!QrHG&{lz0?82h>JDBv z+A}^LaG!UoYMQsd{^r$h-rXry+|E>T(J;kq5<6de5&rm>`w~TlCCeTHAHrt<6w>Wp zdUJm`Jab5?BF0Q?Px{_g9VTaEClF%fsv>_687cZTY|KF6u}b+K)nrONy9j^I9v?_<1ja+$9Rc7L!NuS=$!c87 z90lz3d4ELs6%x!uni`3{Xj;hnB~S=~X+0sQ$fnv)h?_(n&l=+s`4%86Z^@MD8y@1~ zh8SUF^VkUaaBxdN-18(6i5IsJ#*()s{a3%2tnJ>BHgtDxq&~FOR_%+bCzelb@vyG_pvP}jKs+QX` z`qP?8KM!z|5TI75Vkm06s3j-FtLX$Lz(f|j)7VaO^U#Jk;iBSa#A|%EGz=qAj~FS) zZy#z&_jcbq??{K_9H;W;ST$#EpFl?E%ILv$3pztR47)G8H)88yaK{sSJ&BY)3kB;k z!?XzFWf@V;jSTsPf!`o`6aWwm_dzI-Q}?gKa3y4geTkf1K#Zmwv8ACj!h(&yg{t2c z`WHbJP|*6qlPC@kmaHBC3j-AU4mK*=d=~ zgx0HOFT%}(-k5B8go+e!-Bcx4I8{x9IN~$WDcW=X8V+kUsLkDmYg9TMwA9LjIddV z!Ke86G5UDM3ekWXu?q+{!NjQ_=`p;uveUBgFqn!fp~FJXXVni#ojce4zcO$XV0!+> zP(<-EXGasMBRId~!YvSq99zeWL*r_EM2nr$N#!DII&o=7sKv6Raq1KD64bB>-XfP@ zgoT^53T{;*E$~1Slo7OupddIx-N9`nd~Qab8OYsG$D^jcnNJKl_#hS{NQUh3gMZ@E z=IBIVu{rFuo$ctFe~|PyJcau`SuG^6loI=yo%uUclt;d}FMSkoDE+EbQdBzBq<8Qn zk}7R-_cq&XHAESns;e$hMWh8-L}_Y79=SZWL?2LINT8yR$d1&KVj{zsBu@X4*}Y4$ z1t&klQDSj&x)@TxgL-tu7&?&p7YV*T&e$AIon$f~TW*^xn$H>!qENp!7`liTNxBK~ zFvRBAf>BbFg#Q6C5!AF>6F4&vA@cMo`^+3vlbT1$H1QQo@7!ek-td8k{kF~aqh+}p zH);7jN|fgKdhmND$UMj~X6_(H3`s9c6Xrt*6zEkVdBmWa%GG7ild2xnzl5q8t8@sbhWIWgP-F+bo0W11Vr;c zj_nQkESE0p=J&YLnfkBAV;*by(DM~+?~_0^wnA{RN%;6h314tWE9nGYD+&{6XTUk} z;=3dfZDdd^K!1>RXFJ8#fC$|?1RB1yC8L#`7nFIvP7|6XQo8kn=P5NT>eN*J>^jH@ zVjEwMAYci4i|wle#njCc%zrP-Nyl{VHS_^K<(gzq6I>IIQ9M;o3w90rhQ zWD|n4MbQClSGao(#U>xHb?~ub4!~Q>-!*bpjTVm_s8&2LMwN}hB3r2>gYCR( zMR=J8{sp{e$pKYhYq#)TsP-|!1N-mkZmzoYGl>)%(iV7LQUmW_Y_X0C?GG)? zSdH+&Kvuv@i`--8h4;n3O6$i9jIE-5BM-;0W0R`Gv3YA7kFDDCgBQ)PSRu{XU(wtMC(vjHc2fCxGvftOLcxbZh^2@jWTS(C7E}^A(2gSaj)G3e;hB`6 zhe!77er+c{Aynw1yt04z$ej$sf+oOTmbmvM79pDC4i=pi5CPPV5RA8Ksegd$a`*)N z2_*^tdz3Xs_2Gn49%f7xcCsV7koH8V9CJ>|!HZx% zz)K19J(vex?0WdbBp5DuOFvPx(_kGYaSg_Z^uy-3jtl5_CjxijO)&1t5}4zElA%qA zcoJdPYA7jhEoas{2ULmJ9l$q1N}{rF8yk5@WYs@*@1YHGk#d+2hXU(yK@dkEoUpCu zq0k!=qC2yG&}Besqf4tEQX}eP@CYW3c*lq-LYO>PR}f!lHqrP;YJ%uL?RwX~0icfZ z2ORpvfQ4fTfLlP&0F47HOiK5yjs{8BICe0{aaPB6qoBm9&Kw+JtaDy_ z9();M1FZjEdA@i}RZcDHpf5qVq~u^LLcMnxAvT4O)KbDn#JWlP-2PKxHq^=NVzlN) zD)~jkDhsjL&n3g{qoNKIIeAZb*yaB`!aw0!d{C}LkYK+YuhayQ{= zEYJfbwX3oYgUj2+OAkVeDU-jzai5Q|wj(2ouvqc7G8lNDI zC}?S}z+Od)j}8vi(Na)51)^9v!D#e}{B>(Gn$ay$(+iLbGgWU{L8+Tm|=q8*6k{Au+vEvyLQ59M4(5l5#VVx`7Xv7LKv6>qYo(v7LjM03!$~#8C20P?U{g zk=`Y;P01+WHX+$Pj_C_Vxcoz5_CNUj8L+iPuvK;e(S0jTZ1kVbG}g1;Bt-EOz*9QT zR>R3h^m9>Zy1>j>)FQ*6gqkn|OdJqCiFCchuAW_2qZ^Pl!kyCnpp&h zkK_5_OfbT!=bwV-Pd$o5k2odH(6s3;oj^5dp}qekRuJpCHk3UubA5X?d|JV+i&jPzS_Q3jNiOPCz_i(4Mqtzm2;}eU75I2 ztgU75GhMPoH5v{HL?Q6+1Rr8d^w~f%D%r*P3!f{CAa*auIMedLi&Bgab&%p$x zNy0hbC8Pt>(Hs) zMjk;37g|5wTtVWJ!b9f>%t-s|xFqnIW`u<=6yE~AS{xbFukg*%=L_eGD~x9@Ltu$O ztD|;+Busu7j9|=To)Lglv^Ncg7*f8-RbWLZTQek+#3nPq&QYl==pV%;ELoyG&WpIv{CXR+icQuot@$W-(ROUvIwui?`mN|65vXU)|q* zqc0L)bfE7^P(a9t9|$!z;|(PVs7E>+uPWBU#u)l-U-%OdY$2E=syo0jx}6Evpbr^e z)ksu5p^p_iNmLRU4_42d8ngspvOBimbVNxI$xgPV&~p?%>`dmVP|qH6WWvz;zL>o| z7j#tt7R(0}3N7L8yOLXguig14TAJX-OK zla(imQTS$-l`n&_3lzB!?K7g)ZsBg|@Cu6jWY#kFH;is|`OnBVMp4DHRy*xP-46O~ zreA=5Vvl;lA29HzzqLgNcE6mSkAFm#6Q$lVD?J4V#tsty#dnFWiub}p_@*b0nkcp) zED;Xf-M`ZAUfmtOd;1${^X=<5Z~XoiX?)>G#?ArQ&1o*+F|GlsQ0hR5h@)`?9qp41 z+K|&6k=7?tTUbLey7G*RduwcyM^JEVU~#=-E9B@vSf7sr+7TA_x|%>u$yX<3YpgBu zuMp>9q6vLuX$Utf;nt^qeCqSF=hDJ}$HKSzODE&nWN9JqpN8;~J|CjE+Ifm>==>r= zSw_OLuhuCVH+woB=qHGE1$PlrD_U1*eq$@b;{;Yn1|W8{{DiNkOE#2@UuGng6p``B zpiwvZoy&Ht(#yHHkW0D(1mimO_%fA`wC|Nh%oZ|-mIcJJ<9zm@L|-~<-~7V?;Y zQ!B1t@?%Y#TxDo>> zwm$GH6weH-i4B^Gd74u7N1_MFL8v9x1kvurk{#(Pb0+bDVA@zz91sM^1X67&6OOIT;8aoKOMb!yxTf)l{>yj_MdA)u2`dc|r206VD z0?#TP1>AHjnFn|a0u-OqKVfeG6Ra3&Il95q`$t9@KH$cOjN}D?Pl68Usl08d3AqX8 z$K0st4`WeFsm={mC%F!!-la~7&6c?-ACCjW#{(S#pC5B2Hr{v_i>H=g@4!dE_TsxF zSDRhi{Y2U=uMN7CjYgyv9qyX^_WN6D^X8jxq>ZH9?(fl3t7M>-hp?7m+ztuna&{$Q zG_wI|h@eZxc5h6>$@P1Fw%^o?WmK=0oHLR2knsAnp<0&oIjwF}A zo*2qV*lc@PQ-YOfGwO3kv28Xi>OC<|)8x(w82G23vp?^>dFlXW@09XA-#dRW#a@Kh zGMO9weDZ#pP)8DShN_^(l7X|gw!4TtR5 zBD*&9-hZUo69^BKnZOPxfu|$cok@B*-jHG>AwS7gIz5wP(Q-QHr?IsuQu!94y$R4Uv}~ z5EqBK87&kW20LOkQ3qAl|HTip@WB-$y|;$TZwkDVM9<8%MJz>pu-#doz65tQPwi!D z{%Qm<|J-(`9E=363>Jd7fp-wK6g%#5AhE3P|C)U~&Z-G`V(gad!>Pa0hU)6nTsZ?} zs|n4ngmn~lGGYp@?P;BC)F7rroa5MBC-kv4&5er`)Bi?I74#WfC!rvsXo7!{NIEcr zwwqT7+j=Cy#*f~&mdV;w?1&X7I9Alfa!VpN0i`I~GhYbHDMSl0U!5QJ)WwT6ht>K= zb@Wa{N2NpPY2~mSm&FCM>W)j-NWP4aVpzEskx< z%R)knN4gxLM4rR90m5K$WCOv41u>1ZViIE+CH(GUX{@LoMAY7^XAw7b25UEcVA?U^ zET@&2r)FGxL~pqdOw85EU%`7ylI0(E=7tRpb0laM{nZ4x;dxxg=lV}X&Wu|SzXv|R zeVIO7PnU^zcFH+j<)w|7ZyESg# zyk_jVm6gMel{2oM!&iLnw&dZ~FY^<{CzMnWEX{fJL#9HB6}IST7}@L>p8701Bl?Av zWrP8h8%oRXosteBc0TH~gt$?3gKK(G(ur8FWLfxaH$Pwy+9g=ENLzw3@E3pYPRgg;v7Z_o> zuQ6t))}Aa#y&oQ!B8j`CaiBR}J_nL|uyQvzkfBL{AQ26GptJBUa*H zbs&|Qh-h9Vw>e+^bLpIOs!1$_O#p%jnJ~$v^+)h_2BR!-2eMz`n~M|Y(@iK#!U@AS zToa2XN^Ohw_<;48tJ9MFR%GUqM#Iz0KYKj3{QnfIvIr5PM4sg^zQhV1pL_-{L@y*F zc`~%fUQzeE``fpNyIbw;Z@ztPY;O0OsY?4pj5vjYfwXlnvh4L1w?vi<3m6&&5d{J_ zgsp>#3JJmr`43gRZT6RsXrVlGsPt$N$sxzH&XOIr=dnj0TPFsc5M=MdPd7fA7#Pja z#Ml5N3CirHDpxF~YOYx_2&W@`J(1~ScD9KkK&&>OmKl9&+g(46=Q>&@ayv+SLhm5r zl{jrhf&g^|t#BvsQ}7{Esc8D+a`K$~TqDBiiLA818fIs)?MzP{vv!@Ek-4#YHm zHR9if())2n5$F(JhC`pDtG}*q3?h*8$isR%w|w%u)vSFeq`?-WnI!_%nAhud)e{s71a zM#PksLjH#yIj&2`VMyYFM!_44bV_0xqI~`hkPoJY>4c}*CwOrL639cf9Ec>PPxUzB zzZ4yPLe-9P%ExO*)Ue3w;<4v$XY+P!(rYcM5vWL`ewoclc*Ec(i^BYgv z-WtETmu_EssrF9Nk^gUAyO~65ElDd}zrs4uF@J!lSUE4wd z!|{@jWS-d~i@_whh?$>lf(U@R`W5L`2(FMu0}k-zd!jQBZsS1=xwr|atyF+*0BNiI z*u|g0mT4Fb4$gD(YY%J}&VGHmTtddWBVWs7j>`7#PzlJMEr%l$(v-5uxZcti#vhMG zD+icrJR#VP+@@MN3^4_C{YrX19YO`F1-vgD2bOR`iF9j%VcgoLg*z!kIThVX@XNGN zi5Lim1oSJU3c1jMKI%ETu6uImNo&Exk7#qiZ3{%=l%)ntg$gYr!i7h>JAC9^a3`B+Y z)NuHsSh}u%`aqz%%f?K~3dbz?8-Hb#RwRgnTEi~jy#p9Uk_ML>kR-T56%Zt>v;N~_ z=DO*j_lDu=BR$Nb!`;mZq!d^L5mfBso*MkUy0r&qhx6kYP67IQyLgX=D$QOI|aE^2qaja zaJ_@uA;FZDhn8 zazF*hyNXls;Uf+^LZx`d+f#g;UUtn4eAmIA1Qy3V9KPS~U%z{&?%#eZ>+0Qi`!{c2 z-R{5PU_%gb^?99^9*aB{ASe-BQm_zod<@+ge9+g#s!e(&vhrcB5q!~^2JZ=H zja?Q>BgbsSAV44lHnP*F0Y)OIi+4JcK~4(^eqP#8xvjipAo?Eph_lzd?s$AZ87+V~ z0qhOJ24tEIi_FXg#W=%KAo57_>hlFgmqdgWyBbC?pg~A9jmWQq7fSU_vbFJ~9(*xwhx`)vA-;9VBqhpJ)R*`7 zn(Dn$?%&Y?yN%`V-dVnq{m}-S@!E&# z#HN0|hAW@W6Gf*z=Q^bfd9k9jhrK3XAC@=-Q-ivu)+ROD8KWfiwDU|G5U(WRdpMx2 zkiYPX(61shtI#c>L5DFT{?}n7vk=IONY)5L1>w?!9y zJ>rr{B=d$pEa!?>HF5%kf`R3Y=CjMm<*p&12815tMt@w5$T(Q#r%%5h^ZLVw>SNcQ z-?!xZ3@@{qmO6_KdE51GU3nuL@7~;fd%sb&yAVgoJ+sa$dt=Eu`4+CL92j3sg>gVN zfSH)e9n}O^Ws|@Qgxa_3kQ|AebABcAHqt^l*PM~=Y5Z35E$AtL2?#|Gcl2dRRs+gB zb*m9hA>xLq@OW!cKo9rQ&=1Qp>9Ol@?sBCPepp}6;Dm`!_y>R^r#1Rwo1`X~0PIB- zQ208buKD;wI5Dgrv5C+&1_;_x>=F*kSbZK~%y^3l_~l%{0koo{hO!(*%>at%WjGr& z$8cm&q|hRNiTFzZ1aW8*E^!GdJ+RgfPQsqSvPI7qV$^qEcj8#q3m61fwpH=xUE|sEi_ufWYR+BwCTM8L|i{zvX$E3j4Uo zT>A^I5n97cn<)@Du{<7|>bKLi@2YuyT)%die)V5+ogZXv6S$i|*=xp)w153)YASz! zkHl8hcAJBGYwT{`pi*k|%fyh1W*Nx~8YZIJR5k`eHVP7e zJZ2c+q=L$6wo*{XwxLFwFhKUsLfI;&dADC^p3RrAF zfX>1-)K5V>zS$c8lu)Omv(xFc@^2*Z z+#tfjo-p~7W)Dd09`dC!Q6CF#Y4hxFcVaAD57f(M_XH0S>*Pq>*u&0f*ee*_D!@p4N{r0WyFvpsbbT2UpK}{0S1n^!G7pNLRf4(%7XiVsC z2rDnBT(dZ_h>p{F*N9SM03=Bjfhe!XmzsD zhk~9?$eRam83|OrT!)3qM$nRlo+=Jk{ziWAu^oRN$y4CMFZA*V%{JrEizoh~4`hgB zc(+VPWIPg1A)H4P7O^T(0nF4+DjYgAl$IfmM??>pUxfoosZ6h~X(*$IhXpOBF$Uki zud=hS821>h0;(T@;3$F~SMI@o=u@boE5bq{mdo5Ly1_pu$+P!QkWMsYyA=%xLYEJB zkmRA;U(vywuRqQ(OQKWax&4oRnPdOiS3e0>4JaLyuenRY^ZA^-gJr{Lz27C0+F*+n`s{wbOocVz_)hGPsEBb*kc=GQc!i{g83lr6g{wik zzPJq9CUMXbK+~d1D*qhcKQt^1o*|HGwCG3!V!)j-y4To9BD%2cjL3_m0rxw#{o@1o z2mAN{T+c*4@gJYF|BVjEe$19VFK4h*CW>vRs(TQP)fYyojK(LZY0(4X4yBC7gUguh z1^};I7xe9@uF`%u)rhKtJtbA4XTQg%&Wp;Cq9G4LMa3+M(gh9zYb0nXWE=x50jxj? z=#lN1eVSr%DlE~$6ku>jIS`@QKF(h3UIcAfWZH*}MxvaSOr+xw^yHLR|K$Z+PT85jy0-0mbtNg6i|MXOF^|%ij=V zKe?P_|B=hdrb0YEYKbR2M<;sNcq3ATda?hZ!});IUT}c}5>1siFO*3e!p@rX3)RY@ zdl9AIAh2jXTA*|EYaN3nE_>KC9*XrO`hZfXIaY-U@9SNT9W;$m;)vFSZnU;QOula8 zCnV_!z;qgsve4QsssJtgb|v~Y)iwghFd}XGD@@XPcRlhKLKx$sqNl))6^(>U+uGfs zC?cSdUs@&Uo5Y~9xFH>b z6Yvy8YbE7NFYn8N$Usdq&|;Iv03WR#Hm+j4yWN8VDLZ4kU$*zVTlc`Uhq}Hobw<1~ zcX7kV3 zGtt6D(bKYJl5EZ*iS5TUh%(7jqM>X|&rsLwgIr%@cM6Cs1Ky+00Pc$~Qmf*vF9esA z$Ya$xB>;(K6r4WLvXN4HpGFHFTv4MDBsB5GkE#@A*!^1G-~uLj+D(v*s)5Y8XrA(L zye3vp=pb5!GPClYQI%0uS*nssH_Ngle3h({Rg!FD81PPa?{v>R&+Y>a>@y#Bx`)|e zcb}m@(cR-2Zf#fYFREm~AbLh_f0$7+oSA8vX!X2HZHNil-@MiAQS*oJwy%43&XCl?vMW?OC zo(Mn-T_pOG9Tc@gZSNXYA=*-S*f&<5=+AP1Xs1Bapn*Js;|Gn;W|@TpnBvk2$j8vM zn9=homUP*jYm;zGpfYb)%iiJ6*2Xy9ulv|9x-WrW^>sJ(v`#Q)rlBz&o@|6JI}$yT ztDhh&13haWPESzjN)j(IOKU3I!M|}k@%Gb8j)^=IGYL5INCI*@3Vkr0Ww^k|WTr2T z_K-87+`PXRT7B;=jGmczAF?o1ad3*bi{W`)Et|~)je#gWZ-K6}Q`EcDD1i_xIWr3) zi(XH3!o`If3-z=zZgP2%C~*ff;^@<|8U$_8u`_)D{vf_&dFK0q-U4f?@PCWh$j*gQxkfEtl`oK3EmHn&0fB&5PVcmf^hE_GXU zOd)H80IkCxVjSy0Ps_yQN~$ZBrez`JpW_3RwT>n>NB;=W7B=Hps%Ik4MbC_gM0sGS z;>JN)MgR_`J5Cil^KaWrhDXrdvWXgh`gBZ?MJI(zjL_9mrvF1wvf_;c9G(O1r}iMT~mn$$8*^U(g)Nzbucdu+5*isk}ks@0CocW84Qh% zpDh%3V_W)Y9#Ev^;24}WnkdJAcjTGV9O9d*+`LB}noc2C-Gzb-NH zLyg_g4&7{40eZ#^c}!yYnZ9y2j@n2M2``Gh0D1fR-N_=r&7+K}?4O)1WCl6_z~GE_ zGe5AaKR?z3+Zcy{sY;|qXzxBn|EeT09sn$*FpE>&Ov0jIk*YkJb!41pYIQ~RLH(mgcA)#GM@ z20KS+<<3;r0f_0jzAQ-QNClK~g4QbpPsQOP7JOm8IGfHF=QDG5b|&>U8#~h7*xk`F zM)Pji4iM$2Ss`Wv^`Pq+J+Vex3{xs+8 z+Ojj9w1Hr5N$>c)3yu>>z(isd;Sh|_Q-rK6^#_zyxQN+gQ)dYqj5=mU@N*!2a1o63 zv_z;)3e#!5zjwH$k3Nkss1rj|vrN8qo0rEsh^lCTHQLxqtCju?)i#{478pIVql^qE zEtBZaOgSlcv^%p6Ca3W^hXw!y7%)51%p|ty0wPw(O;hJEkRu*L?ojJD}uyk`%s!9g-$r3V_DJ!R$ChLO2b)7%Ni*=`ZAV2KR(tn z>~_1Q+x!G2#W=0-!a5tf>f4%wF~%89(j}JD**TP6go!&b)2h0p=R%pnhFOq5V%ioW zjjewDZui|Tror`adlJ(nMi@GoqEddKxZuD*njTB9R#%Ud$FH|_{^iI-I!4eFd8CVS zQ8Iy)OpMZDW{4T|RQCfGHaA4-X;MA~2fYEZW1=(xZrx5B4>G$Got@)-sdys;?`G&| z*ja*n1K)M1%+}VlvI!w*Uqn0ASzrl% z1~a}}O1)qg474cB62(q&b|{8yZ)zn>h1A~A$-ox!?Xzy$W2gb*$Y_!R*VgfdvA)J` zyqFnxQ1$@*@;Uu&bVH*yxwo~Q(y{uk-sXDn^nn&Y{V|nZv*g%ZZqg8R?WsgpHq}7G zFNQmTg26lle02Fc46sO%UriJTnp4brrINU{Cy|;vGM9ckwB7_jLme`%q}zcn&HNll z*Yi`QGy~$9&PRvjSbbL;y$L6JJL{=epqZIFA-R|awjk1AO4e|1cP`~NvIk^_b1*{i z!)Urh(pe;vFi3qkkp=^Qs3x1qwsj|owHaOj;jc6ZjSFb3gF{149g4KTK!CjJDQ}pb zZEGIspPCn+D^CZ8yl;N3&JB!uQZ+x~p?2lg}3m zboYW!cDMrJ0_=&&jFgv?JgndbFg$uXSDKmrFwKm|(u>s7KtYDoMQJBDFJ$r2*6z)L zE}ZWf_|ibTb`giJlZ0DSV*}OivEv6|qomh>`NqqW(Wztufz~iKg`sGW zo0vm2#6?-n&8L}U$0S2QMXsslsj&*f&$n%?ybb%bV$CQ?q7W@N0~nogE#fp+FD zraah0n_b%Vk5gGtnx_a zr|2!yVfLjMO4R^7RTxFB9fRQAUrpY-|dsJc? zO4~#Wv?FL!eWU{*C1wmT zYMgrV!B!QQ7+&9CY?Q96DM(I!4`bRn&I%)aW+02CHp?oP#k~EVj7Sj1jIy3G< zyuEa$;^#m#U=U_1K?mdZ&M}mnNeA7%iQz&Pv|*wtxdv?DvVR!1($zw*eL7S?MP_8n zM1xB6IcD>b!CvO(q`Z?6b>w6c<0SQ5R`={oH*?Fn@is>W3Ynoq$5d%%mL_u3<@R)X zC`a4rx6{^{w$;%F>8O_^usa=nr2r(EY{eFkR|cD&qH!w)-_$OS4U@?LnC)vBoShtM zX@u26KUO*!ja5eN@!mZQa9VvN77ImtHV1E{gTB9nzm?gkOsbTk z+ZXdFu>F+p&}nOOY_7l1$HcCFN}zk&COaY>lsI;cCYFmyrr0|3bGBVrEar+7T`@!& zp9MAm=qED*@{{zP97vNCVo(+Q0Qy)B_4GHlq9sfufYD1qUK7I!`iacJlu%!&*lMaR zRp?|KLH!aLT=;A-$a}%{M>=Ua0a9DaLzYJGv#ouC?cRac}@T7%@pb zQ&02Q>`)mh)<|})n6xSVpaOb+zGEVrCshSN1invK2%7$3gI$<`9%2AX-95LA47@p* zq3acMWlO!Z+hk1R3=RKAS_cN2+pt(nzF_7t=tI{~%V1(IPq%_5YFgp&Cx`5z!S>V$ zoL!T8qISA4^meE0=`0HYj@O%SBYl`ME677(Gp!MP?1Jffw&*&WK$9j(ugP=!OQ#ObE)?h<%y`nIWjHmeTN z;&J52XhUR#xixfsN~b&9NeIGxZtNOP73azT0wXPOnL2@OLseC8)!eD%Fk4bq_QAcQRRUVnxN|zG$87(=&?bY0@^7IbBHlxG{W802@T5a z{6a$k=IStxt%uSY^mkyW(WD?9Hdjvz$$Og5cDMJ;W#&h_D2$=2SLg6>Lw&Im_hDkQ z?U8_GrV1&(bTpM6h31+qx%?C6BatpDOy?IX)j2y&`A5qhdV&##GTcVm};sYXH*6VVha?_xY~IPIsp!rOrAD^Kb-pz;=z4V7 z!f5C==t_CICBfu}r_=#3!w?y_ZUAVKHVd+=HZvz?`~hz{S)&m>}4!km>f@TyL#ygDO4wGu%Ku5D7MWQ&ZM8(3BXZ!j~#TobynZ$HG({=NON}lPPFfhp<%|JhezL_R& zouO(Vg)=;Y2G7pTrzZ$)?Bd*H7_t)5%_i*ZWMR1PPze%swwxX#{A;AiPL!%!mrO#f z@<=289;A!r`evX9rVjx>4!1UD3$*$g?M;u6N@7^n)Ie&M)~YJ}$C3GDJBr-GV)hKv zt*nm*`T+3MT#oR=sMLhajk^zJXket6E>PVL;9VPYuaYQr>3)$tMkt6bECBT&3s_BhH{k@*Z?U2hK$iqtV9Z zFpP$ldS*;eiIIaxM_)9Wqyq|!C-P-Hq2d_5Bf@R14N+fvXV_$@QhqL9wyQXwQ;GCc zJN;e9r=}^6n%T^Mc&@r&=M!C%m1TRj-?r&Pk}cWUX`7jj^`&V_)G3Ch>Y?4GNZ=_K z%6T%c6SNH-nat)2#cbJ0_W(*m0_hzcY931$a_xPv4s&pkrg{eQL+-q(E<7>HjoLd? zIh^pu&BUiCT0@<*jGcy!0+*NuIZU0VQPbF9l3{@OS{S*$kzREcwJQT+P7gFeHe*n3 zwnR@))}*%=pr6#{*hGdJ?{tY6yt8*|c64HnN(n}j_qoM2Q}em&gW0a@Wk(milIdzo zs@0v?%vG3i!&qWPx7%D}2UX&OWvcKp1!^_i1~YiNT%(LO8z3z18|~App{GxGQ=38R?@VG8&1wF zrkEl`TX^~x(J0ofJfQVmsyI+@HMI`o#k6uKOwUk}5^FEyXhOg&#$jNKv7z*2m%9>8 zF-BbtG}b3+q5)@}G$6%9H27kW(lCWD8Dgg{?ui!IBqJ1W^$n=Gv6+eXfz<(ACQ!}U zNjROL4GDAg?B&tLu8l`pP;?U_p(m(D+P<=Ul7FK)bY_3Fm@m8%=qu3oxw`P#J$ z*VZq*u)hBCwHGhHwDIEQZ++v+#TPf%fB(|Pm5UcHp5M6m^(z-PHqJeLasB-IZZ`qlp??0n_w`b!&EH`njpc;V~c*f@V_WBvJ!%jT8! z3m3kzzRr(u|Ga+wt1n-^w7&7uiok*9t2{IeG?UVV9eDo)1>pM2qk;q(s;n|H>FJ0Yu^|=ery?phn&s}8sHa4zqT;<;{yzt`1Ya9RS zxO(Ba=Py71()m-ljvL6g za^|^>b?NfU>*rr|_w1#M>o2`>GB00A7L(@zx>P#>*v3D<>Hkq8!x_a;rzK* zzWK~6FI{@!B^G<*;>C^Uknhsv^$VNpwet^NUca{f;;S!Ted*Fm7cRbV{``eAi+$t& zO{hI_|MQpEFJIxG7tUX~botUt7cX7hxOM&F`sP*b^7^am=bwJ%@-rLP)?Zq`c!eEg zRXGipF2C}xu3dTQ)oUA9U;4(&FI;))#aFIfef681tgGwKUbx6leP#X9)eFzKPx{26 zhWHKSTRU<5$!h!4PaQpU@|lw-Pn|gX%(+t+_}$v$Po6$=;>5Y7Q>RayTz&H7x${q) zKK;aL{^H2$)st(dpFMH(`6o}DKK10e6V;U~&n`c{bn>Yat4B{BKXv-alh2(yedh5O z&#kVUJoV&!OBDHTUpw*C*|VolY@WPpwffYvCr_R|d+Nyx=D9OZo;v;P6GzTH@%Yil zk3W9y)VYhtA3uBg-1$>SPaivW^7OHD&z(N=%v0x1pLmjII{oC)uReeN>2pt1QvWS#ktt_Tjmz+cSN@2BFD%zD?nh?P$7Z-C? zJA1xTD36X$}HY7Q(9gsXNuKLdsnqsECX^c6f2cNIp;Ws?ahTh znOR(5Marc-esyMPY{VX8(aH-2stD$DoSww$+8FKD`Qk!XBo?{B{w*!8&F9-Q=|aVJ z(!~>1r@B0jOGOAjBL8n%}v?bTfJ(COtgGhpU& z(B>wo11QkUDq~OQX7Hl(oan*=tzumHPOMbtZTEy1$yY8rla6hdO7EGlkK3HQ!%LgC zcd=Yra0*L&rn;D$vnv&+Y$sE8X0eAI9 zRDnUcH?l8>s%!ZSks#h=dCES%vRtiH7s|)esYNPUDo!d}$|B?3)WT}US(uzmpMJb= zGI=ODWJoUCRuefc7lKy*Dxrx^_#yMcTsk5m^Y z+cP#JHggHLqgJ83y0S`7#Iek(P4l2+rku$j#ZoorR5Q8ia4DU(^YdA!WINSDrhxL; zne0+FlcDgZlp!@zP7J51`lKbre2$)W3CnWjTRVE{$s&i1lTKo@kV(wVr8B!7aQVXg zymO@L9DcG`I&{cBHCL%DLUr`e+VGN-sy<$|3(j&T2R@t660FPsQ#ysInN>SSW497zW7Em`h3sIc*_Chg z#M!Sd6_QJpN-j}m9@zA(U7R&nbCU~|`PIdRL(bCaVtHlJc`}b?X3Or?R4#Hj3T699 zF}YB(bLHuhQ+7_J3#|0otZnC3mU4DAUxq7`tI+SLyX8jb^U%VnrLlG@oXV@To6Xwj z!hDVcv{JF*v=$beepikPX^wV8+`btjf@X1Ol=Pa&O`L|uHOy@WyrTIeA zKAuB+vc;5LOsAYmbuiZ8%6H`C*)z*F#@3n1EHQjKm&lYS&8nSz+_sO|rN#1+Q>Zu< zX9?S%0k`7}=1LCi*POkSpLD9U5Fjs=cUH?zm38E{ESxx&%+K4L_5$3kBQx>XjqJbYBJB!XzF`aW}Da9@( zQ<+M!v_zwutzv)IW)qyo!^3vcS+%qIe3o%6n9i~@TPVyN>JK-$ z@-417PvE2wwk;m6RV(ec~4WI5G`HXW(3xL_Z$^M#`8s-$ye*L)%)(`#XV99}A= zmuHTZ9kh+(TLc;8_$G6ZOv>d-VXBy!ar)HZwj0P-Sw6LtYiICc%1)0u$I+k+>XWEe zoiQiZH&i;iU@y<5G7Ht^Y9_z5TI`!Vx^{Bx$!fu|=bV&%a&dvG)ahKdd}wk$jb~MI z7V3O64*WD~IRjiVI1UtC%&N)m(OUbs<-(&_vFc%aD7mnZ9GF9e<_{m{M>_?6t@Rb{iE`;U=Bre2aGEly zLUO*CU$P4+d<|CDIl5e?@PFoYhPS<<$L__;&FBY zqEmWtWO*q)nO`a7Odf1`p?G|4zJ$+;#dnI;6-<=F-l1w3wE5ip+4S@ZC%Q0qd~!99 z>$rLd2Y1z(DW@~e;rYeoWd0al>oonkZ)9KAR*zJQwR9^jR~M@2d6A9JPK=aueSJr& zCsxb$+}e`8RJ2c?z4&x;A~}W&@S%muT+um!qnev_xSi*!^UKxb6c_1| zv#{zM#{bXSOqz4$JNEe6QZ`MSW4n}`T)iHynA`EnT6GBzzGTniu`XjiZBkh|`oYdm zp;-%dB4dwbs@c-ff}O;BbCwX&&h~TvI!BMLRTHU0#5cLVw#FOj-??L}%Z2v5og6AJ z@`wPsh56znjf+tSxqMomz^UHL!UCq)vidRE8o#4o~$I(xy%5CPe+#u+u@429j`2us(A24 zd!8G$xQL1@%n<`|M)53&U=oE~a;^fArjVy6QYmF)J(CH}krPh7eTwN6&T5)_q~sK4(}hfGwzzb%P+2|fIHk$? zL)F#gaw?mpvpUTXvBqO*JF}FTK>drkWG1&r%5*qepjDy`YbBFSm#gy&%gMqCoYU@n zH~UvxyZ_hE=jST|fTug5EkPPvSumKnyi97`;1LCGA!%nTU;T%GCk;wlj6 zRB^SOK)Q0)S+KLGS6Am|D&++ylgDFCFfcV5xWWFNTstZyT#>b*N)^XoI(ue$ zB)#-_raZrh+UFLDnjHJ&izhiXz{o|XQl81>mx{R=8lGS*Q*d$EaQY(AM1z`YuHMxx z#aJd_T~!LXL;}Kx zohfsYGWJ4()b{Z+_85ETM%y-hf^y01QWaOm#@?o#ekG>gK)zE)jvZNQKe;+a)wxs5 z*o%eAQYN*qIGa3lbTwD5oIJF=dK~HS16Q9}n6W3ua`qFeMf4|0F&+^ffeynPCW^=C zY&pi7Cq^>d3yysxpUyf?D%lefUHQ&Feq!lxX5LPhj-(63f0+#ZPR#07yh2c&t{$4n zFJ^P|OLzve8Q=}dr*hoMxG}ieGjqo#C+EwBbZUM%lede=$gAm08K*7>j*>1cv^^Sc zxPg4n<2bFgvlIp1$zG9gbFyj95a*>*MMs=Wb+PF1bt6Mnhl!+#naau4^dw*fLF3%K zD=%FZ3P+MN?44b-X~yQvQ&v$$L32bPZTf!qe4e;}ZHdSug>y5rSjdjq4s|LfB?~BU z)k)e%OXyLBD>l!=R&ep4{3NG~8E4L3Dip??4U{cSxa)u@uwz7ll=EgoK8K<&>F?K|^Cg*a?!Co_jlDWnqlELcSmI$r|IlP%{83+0J&6_+kqSs|#- z@C5eqsj-FA!`a4wSh#_Fr%#?qi0%H)mi{)Yr7cD_vZK{4;_shsmIg>k8Plmzi=jnL zZNo#9cecdC^^Km8PS?a(Lqm)gy2DM4jiIhqBi!BINJ%|hxAwT%-5Vd2%&voKV~cm| zemJsL9JYoUt)`ZSuC731qiXd?Av#SrQu^J{7>iOf+Su9E5RbQ7roWTo!+2wTJp+bY zo8p~Klp-qOD4jGKN9!9$+v*z{&B5lThUSKj)?S$2(Nw3pI2a1t$Ui%=GAQmn_^9ZS zJ+kV3*a*nJI-jZpLV>!6G|ey8g^arW2Q;m2pVFuvJm~Z6dw9R^u`kxu?W;TR=>9sN z_~?NHk8Rd{+5f0m zx8MJmV(j-ly!Sx!evhwipSoFh*MWUL-tqR)5WVP7Eh$U|Ob|6^Y{p!mc(QK~yAdc6ns zd+HAGpkD7|j~&?m*yg^w_B>j*pGEk>0eyt?xt5CV-{ifdJ{j#}V zl@8X`Jyz$b^Lc$5i}p~wPM6h#l2})#$`3vCn9uvD&)iqH-zOcYlUNzQSJmpQ$Myz{ zgLS^g_Q~2Kb&uAmzP(ZPkM~=hrY6Cd8E7^?VaozGXt^LgqX@$TQp;!6h)960#! zqmS~=gO7e;zw$_(uNC>Gj5_h5Jpq};_J{``+Ivvlzel|zDl49YEbgZFlLu8V;?+ry z=<>eDv;z+*z5`y-`_O?<&|Bx#P2H<&b(`u(WWDZSpzeUiA*hqRs#SMjUx-JDKfHf` z!2C`9`=2s3cJKyiI`0i$)1B+-y!!nMF`Hk17TX!t+!t>n@0W2FZGQdf;tss_z#X?# z&dd|r*v@OtE$*N4^8uS*-wFtK+|vHh`8#ZWeUsPc05SRBYxXUraiKhS#^%>+XKr!s zx}|t#zJ%2*y;izqk8o@8OsR6v=GUJd+!0P?_6R$9<=}m{F20p){CKgnN7&)MxZ{_r zy!BeieN7Pjx~!Y3PuKjKZdj)5lhmN12TaS-)qtYh*D-`$oxZ zR3hQH6{MN792N~-R3oBSlVl~_5)9DFpiL2jW`nK=Wxo|rq{e}QzvTS%nzp7Xv zpXv`9lI2$-X3#L0-g&cvl-?~#-l-s8x_L?dOYQbHVQc@Iw)an03`6sJ{61f^;sctoj8rIJY7?$QY!cl+Fj77X=I2^Qs(MY@@688HwR>2dHMWfy)>sG*w z#DkmW?r@Xkm$j(Q{)Q}5RpJrd^7|EC@oGUu<{bEgU({8av9s=$Dyxc*w{vhb#plxk zmgtY@qQ_%K1Bzvcie(0MDdu}a^vhx0C&?N;-4%A(Z}=3$uXv2`&5QAg{}DOpN&VlI z;~j``iyYo_^K#Vw>ksev=JnmXu6+jAx#(r5d>+~FtM@a1LiPpG1T+yHRD*gj7*;|k zp62J6TM@$-;=lEJxIu2H*LCh6nOUbkzhBnf4_RTwj0P>kiklWnrRzpG=vQ^6by!y- zilTahVO8?$lE1zb)cmGp20}4K)xC-=`V_^`y<#|On7)Ya^Xanbu8ib~gk-P8ITCeC zQ~6FsX0%j8(B}yS1Cp21CyHwD<^?IeTavs}LH69dBsbVWzt4!vnkActH_|3XOx=QBqe!yu*Zjed5e(G( zM4!dEF-$}8HwAniRrD%iTYEShm3&^=2uA5gqM4R1Dq+Jf%0A`h1*!Q9?~WwzRFFM4 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/Warning.psd b/Jack/Launcher/RES/Lang/EN/PSD/Warning.psd new file mode 100644 index 0000000000000000000000000000000000000000..e058570f0004fe61529944fdacefa2e1367c3554 GIT binary patch literal 23951 zcmeHvd0bQ1*7m_9OeYCR44KRvlMrG?rZ6Rtgi#QXNf~99ihzIvA`n18sdH7VRz

    h94&#aM^UMfuV}BEUPamTTsy?F0H7l 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 x4S4MhcQ-Ns?b;@7*Gj8hX?G>dGQ|NLsskY; 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 L6}UVXXi_K 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/previous.psd b/Jack/Launcher/RES/Lang/EN/PSD/previous.psd new file mode 100644 index 0000000000000000000000000000000000000000..1030cb881a0dfdf6c0fb1c0ea22ed40e4dd6697b GIT binary patch literal 144772 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 H?p^;2<;lVj literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CancelD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CancelD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3dfc9898a53cb9f62cc3f14c5327c19baeb45a65 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CancelF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CancelF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..65ac606f5c14abd33607f3a7b6244ab9fdf63479 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CancelU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CancelU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9767e538eb3b0347d332a3ca611147dfa5fc38f8 GIT binary patch literal 9056 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 P`SDPGpPN|!=%fD)!fN3K literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Company1WebD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Company1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fe0a2b5f0e04192211abdda0914269c85a409566 GIT binary patch literal 5096 zcmZwJ=}y*H5C(911O3u8=_T|Ex@g@HS42<|jT><{xKtEy#RYIJYJu9S;8F!Es7OTx z75&ni>1FiS_X#Ja=_DS{f6gq=JTvFKRM-9eMO8(g^*r0ss;=HeCAq`zI$SM@B||ugJrP5A7d4dUXH({oA*1 z-@0|{*NO}b3|zl{{illb_4PTj`nq!E%C&3PE?>TU;lhRP?(VZ^&tANE(Wkw&x3`!6 z+_`i1%ifDWA+uU@^Hn3#C>?Aeni zPjDdb@bEAI!v0nfdm^c@g4-8nU{DSc=!b@e@a9xr@IdY9>A^!_&?|?dm1WHMGLv*{ zY)tk)Dk8fUSRr9a!h=;Pl_m%;)d2|@aZ0prYHCW}G#4R?WhNT?z!p$*i4B}OOTZ8r z9u;vvefl(Rb<>JTaU_!c>eZ|1uT5&VsvQGeU0tV6o$BoD#F8F~%!>LRLtlFv`R#z&M9M}G&TzsEHKPAuV24b+UV#gO3{cz7{o_7y>!VX zGJz*EX*GBX7nwd3fh0Z~VJqf+K9il9kyeobDdnV_yriHnNu>ru7c@xZ*r(ob5=ZuE ziKBEXl}^=3T?o`i_PM`~v|H1O0XEw{GZlJmnoPL45>{|k=pFp< zeMUve2K&T`6E@65VEOp*V-f6SgcE5196frprKQD_1@`mj&uJiGBNY6~7stk=;RK)h zrN6*irDmKPlqrIQuy?19965q>pU8*A8zrXrf~y4v^}528C^bAUUcAsdnq|wDiSP9S zc-^{nH1+lM_+$pajvYG|Em}lLT!-DecPmiUj$(Y^zyY1o7wz7*Z5xK&5iL7>_;9?k zZrHFvizVgj$oq->9NDW^7gn!cO(USGV2LsN*zDiGpF32T)T33aR?#;#HDOpIVxv}C#To#6 z$Th|LpsjIiY;4@QbLZm4i+!>OSX~DX9?YpkFmK!01eVK}FUNpT2;8z|3k{GoDZ!`7!M17i z(k8Nrq6x{s1021IP-hfPLL6O2lViH(&!11TY11ZojbH2m@PNF1`&NPChizO@s#izK zkQ_R6NGsJsM2qE$6)RjQLzQR>H@6BY^%@~5D770By=LjJmtDJdVS~HcX;jT+-@bkJ zm}DuJY1g)g^B>+M$)|wYpa6FE9Z3RCVs}f4qF^0=DJNk#?xgo#GXZX`#verI8)~ zHf}niq{E?4Aak`L%&$XpbF*4BC~*{yLqjOIIbXYWExk}kU`7hUOajb?5MyouOH;(f z-^Pii3qqN8Pq*KK)QeIV!9YS)c-9xU-gSthCc2)2=bD&`A1jhmxjaV*;YGvCr{~LF znKBwh<}p^F9_6Nc2C<=QTeoh_>G9*oH5YyeU7x&Qd-v{DsiwG(Tw1WJE0RaaMge>`6p21ZBFVy=u0jYgCvCa+IiZbc0 zku+DspENEnNXFRJD=#qL&6_uS6Ie=}P*xRX<_l&@4}$)xu9%gL2UfZ=%XaskQ4MKfAhBD~ZtprSmggi;(~8RuCLftOFL zYI<H*9c8X3atqEmrig;_P}7zURd+&3JYi^ zSvpFan3Z}Br=A)cgc~ID$;PQHf#efxD{Nw>z)(cbOKL0`8)fPU=2Z=Lu@QC1`NQ=JTLH~7mavl z95IMEjidyT3CuF8J+GWcRe!7@)*N(I^z-SGp;Sn51Y$?Kv?O>F4ZC4zvS zJN)p<4YfMrOKDXgcqM`h&fQu{$SJ^#1pz<`wJ-=gDV!F8oE`w1L~{f@^7B)kk~P|I zXkA^M+Wo-!_3`JKN8X;Y?4A0gkENA3Wlw1(G|X)L!Y0C+HER-9G#bLCp`n4^?={QB g=a|zNIEo~`m550h7b{Ea{|aMzF;hbM{i>?^2Z1;46#xJL literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Company1WebF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Company1WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4358ca5093cde9700574a0db103b72cfb5afb10a GIT binary patch literal 5096 zcmZYCjg!_@6$kKVS>EwA)W|e7Vxm%1_(^Hzh*l1bjG9_HS?SnhW;0e(nPaBYq?L|Z zmW?kEAP5SKYsE_A)uJ(7bzlO>LbN<#JSEUF9VU>o4nC;?EiqHJ{M6{I);y#VKmAa}F$B%1Jzmm)neO+Mem{FjdzRJ2aB$~AxQ1& zw_>c@8K1QAkU5`$%+_$jr*Ja5*ZPZ1?}g_pdSXj-05Q@HQW=gJPbwsf4f1_Q!upnj zMbCk-E*)l`;H1`&2!b?=lywxYrjvMvdGxY0EfWyZN-8W5DuQq5nJgn9$^YL(?k`8 zwqVQcL^2V>lj(bLeW1-NY-A}UOOIiTxy*%6K(%%^oG?C$c}341|E@-KZyheS9xha} zDxx`(*dHM?XN^L0hAdcBR4-b}nM-DD^b4O4$WT8uT;<@zZ>@$)3;aE_ISga#ZySg?!rXFj-oENz-Y=~Sia31az3+oajZY>Zkf9|$81x4e&Br;i z0JYh{T)8D0S3?7--|eZ!d69HHtWyFII(_m}-I`fcR0dB3^6bmS+~xq2W+Kw9u+^#_ zmB_$6&fWVpmk=FB{>)omJh>$J`#u0~P?$4d#sBDRtD`*nj$HGvYGB2L{ALqink|Ni z%P+P>)dG<}tfK&b;mR0U?T`^mOIJ2(v4B+Z1m?@u$@sD7e+l4v7l%J{%N;1EfAc$P zCfM4ypa1YP!%q1GV*DB#r#?D2pn%nyZIga*CtC6JGMRc}ZxCwHI!$0wCHo$R9H&%#EW`saDcX%VePyh^UMd-!Q*qJQBR_df+^ zw@>*i=C?$lDxTh<$Zy8022@Mi*6_K^@3?a>2n48Fw{yyGA0|5Khd+zjo8MB?Gq+h@ zB4vwK*C@+3!T;p1&hp854kw+e=z*{G#~Z_zl6!L~3bm!H;rNfCoPGBn!tR0<$-v?mr>OHJH~`diNdi92@cg@^(N zzH&-K_4)Ye7e~A$j2=8uBw7bQdk!S?Ni$|f|5@}(if}-rj?$dH(bL9% z(M26nQvT%2LnRM8!i1UE6tm;BI_XhM8~4NukmvK3%Tbh^ZdtzW&U@f*a;JrsYAPC0 z6o2P#2ll}|)rsG~J)~wgsb_4#nHfP`whjp8bWk5oH%GGcvARD1vu?H zLU!aR6&1(%qh@v9gHJdYSvJuIdk@K4o*L{5JNl%O;Ni0`$D_AWnfBL(5vioiZ#m<- z?}ge*1r%`|wC@O8+%EB)a^EAtSwCe9T5D%K^1Gpixhue@OG+zyZk2M?f3z@|%a$c5trf zNmb_PFu+&yANd@_*-eqkY=Cvva^V8f4eG@_<=%%?LR~icvk>Ac9EuY1-jFHv?4lH} zt1T|Oo$+$k)mwYKIs$DafsVmF*!O{_b#Q7IQe0k?aW9~_lvnjeTl4PqmT+p^(XK_8 zrX$ud5P}T3I{(p(*>Ujjh*m(BVcAIMC8H^3$J<{Ca>XAs%LL=XO3v zv4_8rmg;3J{}QxCNMifRfvKI6jqM9yA#-Tx5Mm!Z9JF&fY`iLEd@R zO}8Cw?Z+H9`Hs6LeB)ZNyA!=?PPp*Wk6&@sX;79QAc zD=$g2EiVmhh~Cn!3D@PB-@fJ4S>K|THWWN|&$#~PGjF`r>nm(sGy|Qg*qt%c%(|@{ ib`8%(gHBgGLl_9+jCJXN1&Tp`F3gTKO+uW;o*j literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Company1WebU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Company1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7adf24f3eabf68ec61fde3d66dadac76071f6987 GIT binary patch literal 5096 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 WVo!R`<$GZ=Z^5+pJ-@9s7yExyGzy0R literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Company2WebD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Company2WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2dee1da80a186aa9841b5f43aa77aa479be1c1b3 GIT binary patch literal 5130 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Company2WebU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Company2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8093bd19d0511f0400e366f5704cc4530f9d4527 GIT binary patch literal 5130 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 Kh&M&B68{(U2=wUy literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CustomBackground.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CustomBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3144864f19682d07aca8e2ffa9562c508aaf7aa4 GIT binary patch literal 570296 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�))9R-tTNd?kMxJm zS$6UY7yWsyPXE>PSD?QF{T2Az-wLxIa+429(XrexD#B#Xt1DlnE2ir^>CVAOh4SZL-Zj?KC}coo-(m<#4l1w06zV zje7

    r!LSXQkose=bp*TmtJVp?6B?xDuE_scZcX`G+=g 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%0ArZzMy^`_W$)SB4p8YxPFFub%JW>)*CU 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

    m3mlEuSWV4Fu} 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

    tY~TO(Z~wOV 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 F{tpbPHd6oq literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/DisplayF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/DisplayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3db97fada647e61097bec0e761dcb1c2adbe7508 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/DisplayU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/DisplayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ba9b8742ca77ae638c87392276c825d36de62a99 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/DisplayX.bmp b/Jack/Launcher/RES/Lang/EN/bmp/DisplayX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f6d05a5cd47dbd75704025e46188d5cc313045e2 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/HighDetailD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/HighDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4c76bc8eb5e614607b32440277eb30fa0f9d9df2 GIT binary patch literal 19136 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

    akeQU1DLfya)hN1VuSFFahk@*!%S)doT@OT ztQF#sUmZaYE86->>r>bxq8f}Y3GoOF6XqDU54oVwXj)8EfT9aBZDCnml%@5e^Ylsw zcD>9NEo@8*&0&@<%+UpSx*#8t(|}iabIM$pH&zKLVXz#OQU_ZHBsj34Smubp=%tl5 zmA9q^6;7Gndkb7?J4x)l%q)>ZbJh6e4G~RCuSkn0cXG?!v{I~~k6i@~;^SkLp#;mi zRFHc*H&^FpRro0tAq;_>{E|*URDkVJRL3fJ$sj`@)5<;Q72gz-H}pb=bFC?k0a7l- zvBa6?Ahj~Uu8wi5nC6hEHj1g^nInvk-uV zv&}JHb(~+D64az*wJAO z$b|Ynng(V}06R-slVDc{X{4a*qCg8n+?BV}D+B75UaHn3up~sbw8);~)y5!%sal7; zF(q&46WF@>wP~g~Dli0rBEBU`o?Bu>O%fuJV+?bRQFc`T*keOY)W!tXXj%J!(h{YV zb<#~ChThN6xuLTZHA!?EGYm1#g|sw8&_lL8!Z-UV8YjaTQa2|VRnXlYuFlH^*!0i~ ze&{}-5sEJW(U()^z;X-A93o(Y#9kNRM=5jA41S&kTGGWVZ&llZgx;;H4&DM+C2ge6 zeTh-X)i^muzqBEiZ%+}}SvtSe7^IhxwgJ5yf;|RV4Qqi_?oe66Fpyw}(8}C&E&3ei z7y^`%R=l033qULJ^e{i-n0cNN>y=;{W0*`%O-kI*E3l^(ZT-^benxeaW(;$nblUr6 zO+7SARM^x_wD$3B386j7wIx{9F-229-yWw!a5Z)tqtkl-SZ;lqTOFkv9rT(&Nk?Bn zb6RYTN-QyIr4I+UHc2z%Iccsv!Y~F|XbD5nklQvY zs7cavK1p3t*pNWa>D6&zOP{)Hm|7iBwDyUC9IUA>CaeW!dYIOPs%@BIjL{8YwiO_W zu(90?VX-;NtZ>6ZqgF+^HR;^0A&xbi>lhO>5Af=G=%z3>3(po6H>TxH{o1Q;4PkdR;=;Fif99Gw>$95#ti=Yz5nLHwfU zuo871g*~p+`&p!Bgjx^4!l7WBSCWQ})aVxIp)TE0lUHf>-vU>KjVWO7iRWb;og0QC z*BnyTMCF#K+!%sUK`RTW>(i8yF2V?dHbjLSt8gnVVR~^p>~I*mtg1NQn51J1!~Q9A zLdx+BQI;k^EpyW}E?#v~VDA++4G{HdPHjrjIizxoNH8t!L(JL)(KeVH%oO@E+Qclk zxku1GD0hvh9K(W!ZgG1*zo}Q+*3WNFGi`BETYrH!qiFBr)x{-keY}P^yD454%oMmr z_;pE^B}NC#Ab;QvG^C{M{d8E}Flp-2oW`WMwO7*G4WTNk?`77c0Z5T8mfzgXz>33v zvBFyO=hr1DnhuU3%(upc)&$EE71XDN4QW9`AGdLUX7A-T^%L!b!j2(kQ$MeHNbQ{D zK?7Ris?Gs(h4 z=U8QUs-U$W8;xa+upwqm5e$k~lMvOXXa=veIVElGk+%)-pd*YSmNCSHtZ2oRUS4ga zu(3O@rBBk-%Wv%AxAurIIqiK!bFZRv7#j@_;oE`pv;g7@&KDGJl~-&H%8ecpPL?pN zKKPr^7wV=SDI{&B7sfeJ34pk=WcVXzy2e$E4mdp>HHVGNtfM3fhMF zE&ZIPZl*oKsqf~u^m1DJ*ey5)Ii17YjzO_&RP7y?W3lSG*$o5Iwm~|y9@ea!k4 z-5O)r0qlORCC01{OPU9i&T&EO5Wj1L(=p6y>g9Be34G&1$A~JBA)G_J_I{-=qw;52 z?L&EyIZbL_+SVuS800s0L&%God-(M!j9mE4}q{T1^V02mHV$$|Vkd9}iTU6zj7y}Y>0LGY9>yjJ&BAr8^ak9%g zZ-J}A)_!2`IZCcTFpvsqOgW&rNEw_ zZ3yO+2Dti|970CpR@A0*Dm;|R0JSn$(9#Fhz%s|w?u^QtRe49{gA3}Z)8(`06tR6O z%wA|(5uK6t9#o|FE248)K9P4q7?@Nh=edEbG`^4L%gDpiB40-2o8&k~q~6KA(4;by zm4&8=P&PL`r%ufBJmW&ogxEd7>+I)t3`pH$Lg%p1Jt7%gAVyY*fkn1!Oz0k$`X(gp z!K}2 zg5wxM=b0UY?Dl?ULodIJ>>;DRo7+4fY93_Q#CZ(~xno2boWf4wdosdcmK)59!ZTdw zDA%8n$7clo33+rfFR`zrZ-MWh&h0*kY2mdG$UNhDfeD3YnAO+=fh_145Ot1V62zWy z!Z`vZ!f6{4c8o}zWAeZxr>j3NI_W-mTIn8AdB*a>`;_5XG3GP257Q_KWF>)VZs#zo z8B)Dh-af##L^;(VQ+Qkj9aUw$2gYvc^b>|STF2$$Lvq;jr7k$vLNlTt0e)2gaRv%p zo^mfy6GwoN3I(kRv8vMyLy}h$g_|jE=;1f_D~67fL;K-Jz^vrMZ%e=Y`}#;#$6gcl zFBabX`UG5T%X~J%q$6n=mCYX)=%=*5PKvwA;C5Df#kAl2?ZI`V- zC;#=&1bs*3BTJ0{0k~TvN}E|2~Vn~PLs3o-H*cXK5=wDZ~4vj+ohQk(t)Fr zz6I&fvAowm#gj|k|5`hGIIa)-uOJ>9utIT$d=#zSb6eI>F_bt-1+?1KPRtz z|D*EE4b|+qy>EX(-uTg<71=YgiBszF6Y9ZZ(!_pgd{&v9lXf4(uYi*xdsfzaRMvmA z9>NbofLjKSECuLqKEdL)D5L`{Nc2}zOhsZEk*BpG1wvQ4qQ9lb1M z5K0kaK_bkLlmxIx*M@ldsK6Y9hmup=$hV}+oKuJ~GW1cz2Uu{#n);Q|c}ee4>C{>2 z*h$IcX~pct($7iJRP@nzlI*#HYoFk}^vi#!=Pu?=ohODDWn;%hqsK)Ow2 zrGra?#QwaIWo+T1vE`z-|A1Qx-uPUWS&@ye6wI7fO|0aO9hVOsEqwb+`~(ps9$Zw7 ztO$A*uy%Qu-p@Ppt{^%mj?GIVbEM*f-kd!z^=ESfQ*bS1okI%OsL(ko4^Ef7Nv?9y z8^0%pmgN&?B$+d1fBGL_uXy!C)yyUJg%9!T-p~J9K6gevu|l5Xb+3P>+ILRAaJAsn z+hhlR__5&i&kFWkELePfy@7Q9MbXHzXkan_;`=~I$>)FLddG6R4=a=VC7~ISf2uHj zXnl_qUwmJgS(c41D<;kq|L(829s5*%Xtnsw&(Y`7ul`Z6|Dt^Iq-<6UfYK2eOUigU3|B6|Jj07a$-w9{a!YCB5(FA zIY7+kskg=HgRsMu-VvrXDsAegA;P2g3abL@+9==XXBo+ODH0+AV^mZX7S+ah)+nik zjUo62A`2Nc;+i7V(sqtMN>n3>5F+!KrtmFrRnj>E?CqwOlX+DgqQnS-g{8IdWnze9 zlPSD1r?kF@up?~*&n3()kLFZ_DY|e@1>*BafRfo3MSY4=;$$1+(#Anxk5&~C)pav0 zQC3U8(3=&6rbK;5)hFK0yZrI`lwz>?uYE3=I;%QC8c5{Vs~;C#`!x5`2e}vD&s};= zkvX9{`jZtT=|3jwIjkHwCh0q>oj#p+{#~?(?k>Fgamn>h%3l2>_rgv2)JetYQsMig z1~2~LTgmXUWMGM(KEg{KB2tHmG=Nh~ z?!IN&RM@RODT_xqgmWQm=lHfB8eSR32OvrS?mD4oG^A6hY&|#yj_}bntjC zB=G!&(ltR>aOETQ!OM!JR{>o#P%OWyo;j7j^2RzWrO*^}=gL0$9zPXcd|!|_!1qt& zhQ^te2)8ytHISASQ{#|Z!?f~F#D4Rdx)Dl6n3t#V!TsbTsaokwk@=XGJkG_yctMJee95zRJCLjyZfH zX^>-udPOAA#Wp2*W+X1d$baD#)DonhVk}cEr_94QrS#!hx+TU%jKV!GNF7*Llo%tn zC-#2vr+<;ooRv?X%|HB;$+Z3xK5-OW|5QDFS~c^NZKgPQg-9Rd$LB@K1100jxr?vj z3F|HY{h7P+x;nF5^!}f4rR0mhONNgVgG<8Rqr${NA>fxjBqV`%P}aYozHk$+LE)QU zNE7q&&Yv2z+UdTo9ly;PoGv!omN7L<6S?%>$#jab2e{H^%e?LD}_6&|`iNTz7@5t+S5-7-wG!~`9~9LHGx z)lb&P4)den+Q)_GZsbj!B1V^s53W`$tdcwQJJOiRz49?saQ@Yguzz#2r{!ZS>zXKc zVFaIIUo-a6fZC##}UA!sHESG%r9oda9{|+;Z7(Xu0k}F#({+C&Z|OS6HNy6cvfBs67*zKm_1Sl^E6e}z4=4!eTw>(- zy7!9bD_7o99a!D_?f;8e0=x^ad<W$YF07BMkao9(kq}2vMT%^7X**NnX6gg*M@Xtqg->LR zf&u|93Y6w8a8=UQ2kh;7UM594M&|)P2MG&Cxf{72ka<9sKuQHH5v0iqTLvj5Ze+B{ zydgF+?m3gUt?DmfARxX7UoLv z(JMtWXJN&uCQlX3pDkMRXA7=;EE+$Nci^IO`jlkkc<#grXxO5gq$Vmn{f;y`hq#|K zyiXXOlJ~9o3*Y^ixAa=!zO$0iC3R+{c4nex!Pxx+^#ja>N7 zSE`ZY!tTR@)WPES{)7>cuI})0`TmRKi+=b~9G)e-6TFr_QC*5-3YWC^N=!b&1U3|z z076)UXYg_LZnX`(5jWTu;C&&zi(Dj62WnG@39^~S3u_R52UqI@&xgz`S9IM1S7mKv zjOEei2)W(|LK@g6$jvd!z(VN)TYyYBBBlpO<1j{%-~g~mwoh><5^!rChgSq0Z4QA( z#j}Ql_PC;{8?HAMF>PCtKy1@DnSX^`BP>epf%Edo6Qy5}VHU^)(t{XZf-QuvMelzr zTey~g@-5}jYci;bBiBXggOF)hyQ0@W%TLUyBGZV|N`q5{g9}h?xTWCgMwzdR;ZQsv2G@`Yk!(aI579F35Th=dB9_c)t72zztL#ysA9%DjMLic`I+iM<_jb z856GXPAdX42vbX9Q)Qq21r72pyeA)7QB0gBCQq-USAOWKa9}C#(nsX;Z+s<(Gd{9h zwiYrf`uKZz*0BGJ-uR4sIM6kJNd$3poYb2LF5yN&|1nwSWbWz*SmnaE|A0IQuX6-3 zYC+c+5+VqvlW+O%NAcu}sQXCK@@wldA6}0#b5fpJQD0emFSNtrtI8wS^Os&PJpQU; z{zC55Ir-fAJXmyV_))IBk+*m~7jrnYD4qTZ&+Bomyt6lphgL+fIeGVCj1KQAe(MW$ z`mmz+Us270MPB<5ud!E9o8%iJx%L=HUrbFGVenAP9emIaKou+R6c~LVC(tTf;59)r zf>tN5i6F$s)Is+Fdts7sr}c8RE(Um#h7E1pmJ=T|a{a2jBLC8JzTbv-KfjqCUy^qzB zQUs9EIFR?+?|y3huaFe(D*50~lGI^gdVXC*;0oDh%|I%C?;BxyuHgFb*1xX50+YY~ z5M;7)VfZ=5kr5DjMvK>6UG@3*#61f{-vTdn07yn-<>Kp#{^f!TAK-Ra2>i%CVd8*d z<}5(6Zp4z0UF#1ttg81YFFXf>cKuy~?gd_CPTqS&eUcne>F@r^Z69XVrzM@^g7#5l z?v(zSvNZ?%r*Yv?WV64>$4L1vNFGp~e&?s*tc~d3&5Ev*JNMtmzpvvKQTlM{4brh% z@0DWTg}lUJNn}c$n9Du>1}>I-_#J{OlHkmG&|88iR?7g_mWFtNEho@{KOExeoFbDC z+&RQ`VN;P3#u%W3or|pNnnwV&D6@uD_85DOHVH*6ttO>Y5r_()_?EQa0#{Y;abWL> zXH}HqR=S4dsDOpbDC>l-2g?_Z2HO~wB5w}HCTU5+?}+0H9~3Dqe)YogL>9Qf-h=cm zD9vE0!QrJDBUBUkX=Itbow z;k#cI-}t)toj)LllINe2c8(HV!~Bi`_0g*c++nRnp;=LMzc4bZI(?()ov-AFu8G2j z5IjK-^MCs#Yzc8_7HcORSjfNjF_1%MH@^ID#p0`QA|$bSjwcHrzu@h!aEJz$IF1am za)Rzd`EUNd=&diA_8z)5&9J8FwLOB4Oljmm;i((N?|fbI?jOmq-1tVZcwN@FAc`L( z;`=$C3Fz6<_b^3Y72fy?L%`Uv*D5~xw(#_Ci*J5idh?s&_rAgwL)^Id<~Id5zLHIx zR(2mjkQ`$~W!9ts zgjjt*W(sg&?CD(+P;Eg7H-jALf;)hW16LmcHX!A|R+S?o&ffq{!KnCNmhj;*M^`<7uc9QeSiiNPUjcaq@=c9uni$&K}09{ z1BM_nYkWN%VLw=f)C!-_5CzSTX8@bjN8Rfo`LtCb(DP^@65G>^x^86ud5&RD$ABs} zogdz(0R7%EB=L?DZZaXuc4lOO8F_FHsZySMlJA*9B30y`Vm0;&x<=H_0f8-|Z0#1- zC&5!h~ad3u9X7eYJW<}04H#{j1WW_M0{L|9Vlsq&k z4oq>}6SDA}GB$@CG2z3skIOw70W6%>K}pA;ps`nk%$jEmNp?Zkr~qj6O)7%>Snb0^ z*C@ArgxxhM4;>IWGc3@(9LUUOB;E;GU;+tN>@R6(COpYGgW{56S<(!1ie`)z1?S|>Nm0jWZeS)CXm?KHne4WHr1@B` z2}SY%zY_`HY;I&y8k`XM5tfom*KO-aHaEPfxX9HRFMpMof}a^R0I$Zn{YbxP_j{kuR-O_(YVQsE$BLxAqsc} z<|x+^heyNEg{9Us;@%**a;yAM$8-&>P%i`ANK*_5q?vOT^}orO&0<- z_N1V-PwE_zbPjRa`gt8=UgELCdLb@_Y zuLD$omc%_SagGYw1{5eyuqTLy9vlLY3~gy_7NT>6-`Fo~?&r7lOFU!D);=bvrwxNd z+o;kpj#LN}rmTCE*Vruqfx$7R0Iuw5Kud*yQXK%+!)oYf*?M?*Ldy`lv5#d>2^;$u zSWpXzJ(?cYNRkRE0j^z5T-GwkYZ{O^C#3EPzGDP*GA`(LbumUmx5zcYb59GJ2SG9s zb`1(Ths0pKw1cuW%5NKyxknL>Q~4$_Ok9`xGGgbbvU60_G$3l|S2%|S?R~;l@X> ztpf~ekOf{!V^Z4MQ{WnA)kY;vX^dS`pC)sl)d{gZA-2ZU_FgdG;OBCT0Vz1Bm0(YK z;7z~-g}`BvzyllHFEk+h;-QqbGIfxONI;<8#KqEd0ecLM1F$5jf*i1#Ns{M(#8qBP z53u*hGjdpTC>4P==NN)qFp!~J&0!9yUV$-p4t@pE*8-}Z4|pc3<4E42*o0mQl0WJx zqDTY_t7B_4elpYpZagB)D92zzJDZ~%lByJ@!D(trs+~ishF`_3-Ur(8XkR z-8@*Q<`6a)y(T6AYYtGfr+HuiHY7Rq;1I?@=H%LOOCM61oTeU`bCidLYwi^^^ne)% zTrok*>>MoU7=%n?SdvI>3qV{!l?N!$#t6@nVw&S(NIYAbstXH2-nL>mah!n22V{b2 zLxW9KmzH%72x}vBqX(GjQ)}B7^t3R+)u#D){-x+N1PFZI6Sv&MNO@YaL9TgQW$t9T-Dk z1k8CiiM_He9!xbIic?53^DS_NU^TG!=!^Mq9DptqwjfG_g^<>DvrxVSZZ^uG;AJ4p zXbfByuQV&H5O08ee44P=%&gh)46ffF92l?PCjMhCqd#Sun7 zwX&UI^~+m&gz607tp`)hG(fJV<&6VEOB|Dii4u^k zo+uNLMrs@9ByBQ*4Gt&@ZD3}SG)s=Xn``Ta>ZDpDqLv>Q;*6ZWCJ0n1q~^%);ZM?DwIxLLfViLfKzIU zack3p+BB!GN7y_F>qt`HEwcCUtx38u%&mrO~5`>2kw8jNT0QE$)awi#?`Omo8yT)VrWlqUjAF%hs z(5)y{U{ry#8li(V4Z{-LRFoE0pcoLZjj`v~_mFflV;CC&xpKNCMKlkBoro)(>LkaKM70Rcm5qI>h7@&gC#Bp) z0nNJ-WLiun9K$HroZuL+iDJ0IDEGoiM7AB2{v3qmjZs+c6xD~a0F|maDXUMc zRdaMvE0HRV@XR2z!`F)oEGf_<5p$5+V?0X${S;Iq_yB_I$=O-MkraY^ivXhh@<(K#;cG!onY z|F|maAY&}MsihEEpoW4WgLy+xno{PaY5dp=ApD~$6SZ=HaZXXAx*-W)m@F5?LKvfP zy&)L!3DGLWWL7xATZWqh4h)4Xj77;6Je>|aL5fu)wYk5zJ)LI_2}}W06QD4PUhctg zAXMe{IDs-fJLqBY+~#4at&dv`af*v+x;_N4!!?4(}j9Fw1@i6R$?x?oj(LT2*j+fm#a zp%%9j`jDzFMJa8gYn>>_0>hkVBzG=oLVQ!4ETTkKz0yn31sKLC0!m!CT9`KydoYl& z^dT8ci0^8+-i4|S z*p|8NX(1|?tH~TLs_pO=44GQ$q!zbHO{kzm%(*M4+yM?Ds8$>xu%ruxoOF##3gH8D zw93<%&gNNA`b1V~ksi7UliUj2s+&@X5Goo`2^fZREv$u(0CB5}1%+6fMAacFc?{uv z7~asr)lo&`AgHQLhyrs0TNU(aktJE&F$%hctPWLjZmu@SEb|BrF6aoT5A19BP^j#d z*sx!)qk#&P)dW=5kl27S>P|{=6IKLaQVf}0<-%uiLz*y!8P%~IR4k(AqAEn+i+$v# zAZ}mcfGkB&9m1SV+7+m2^`R!0BvOJzp+NtR)j<^L zAW4BJ3a<(sPAbSE&32Ui@(`@h_+&M4A=sfv*2B|;#5TrQ`WOw`5XJK4E(`(Hi+q%P zB8RK-pi)C>45@14Krfd>9hvq8fO(+J!$B}dZh@=(#?-SfNckE_9zMK8TbHo$Rh@N~& zynW}hyPl)(e2Tj3Dct^>U+rPP@L!6ZyJ>jTZ&-yp_pqM&FY#l0*bnVuJn|ItvFBMY z)5Q<&c;bm)y}0`+$}gYiqS+%)QFgz?e)zGMpMFlbYmaFA|t(y^rfA9IKN@$y-dm7{^%=@p!1K>AKXdV zzKgo^IpM>*`ASSLE9te(BLCm=EowpaTy+`rMx9X}kAOc0Byc$9BE++)IKd zcE9rLmju6jn)$?2%*S`V^3X%S-1&>Ap2pWbIXixp^Z0J&GtbH&+eO>{(4Jqtz})pT zbI%LHT~9I|e*EQ~yBIrm<-ABy?|xRW{jq0v?4mrni~9JJj3<9B+W9np=h_%|JD9+s`*_ zx$m}(ciy&P(}oS(Hg33k)9v@%wsGqncRjH6&IdN$anI&$_ifmG_trbm7_Yeh?gw^k z#Pc`bc^jH-xo6XspW}1$w);2SaUc3~+opRqY`t$Y8gII1^Va)uf~RfVdhcfR?e_aO zZ29@7E%)P5oA0>q_B$Wgy!Gek=Vm--(;b_)-Lnzh*l-VCfh&09hAnsBd;gBxHsT6~ z@ZhE`_ifsC|E6vCY~6P6rY+mzX5k`yz90Nc<+51ZvXj4baLB+ z=<}v+4{Y3eKYrbO`@LK4ydSf@aqG{?i zz4*Fm%UxTx-M!_GJ2!9Iwt2%H8#dl~=Y0=v+I%Nwo?NLd_iVZ2o-JGN+IH7{cWk?F z^Hy?JG3T2xr5n(nyU4}G5N^MBt#8|~nt1FcJbB}t8*j&8@5WDS zZJ7DH$%Q~qu%_gY@7i+5&wu{FV_4s<_dT%Vv8QlCzJ2Sx8!=03Gq!2#y&JaNg=xGs MuC{L5{kQL7(}1B5Fd&*5 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 Vuf2m+cq*<2rkC3NQ$PFJ{{ihhQzrlb literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/HighDetailU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/HighDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..156a01576c4bb1eecaccc045d286e779a98d9ff6 GIT binary patch literal 19136 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 Zn@?_j_7$t}QoA~FX|iYd;`hGy{{kTUW_JJp literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/InstallD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/InstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fd80918219b1eee7e78821e825f3fa73ce7feeb3 GIT binary patch literal 9056 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 c3@A6)AL>Ngx&QzG literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/InstallF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/InstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3cd08596221e28e9bd0bb74b776451dd3743b484 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/InstallU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/InstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9b0de4064f3cf798743bf030076e78761635a836 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Launcher Art Requirements.doc b/Jack/Launcher/RES/Lang/EN/bmp/Launcher Art Requirements.doc new file mode 100644 index 0000000000000000000000000000000000000000..ec7d113a45cdba2cac4ca1fa68606e25696131d4 GIT binary patch literal 904192 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

    _KM*gH!uEqZq35Mia~ zPmW5Z0>o#o2#`O2L=9OoXoPIZJlKOpJVllh1G9n;==C(mA`f$_MI1$~E$y&Bvl=>> zh7W2ZG)cf_1{{qykk40Xco<@V#wJbJ&MLd7C7l7D44F5!7#882HZ#Sxkvp`PZ{B)b z*sl&w+oOD|&!o#qYk1O`tHT7mA`xAN^?-}j_bWi6JIHW zk_O{?XIO8Ks;xnzH)-_7<=Uv$8OT37!*adHv&b2%?IB&uYG>5w4GBpt;?vC59*oP) zeyP>3H2Z+!oj!DKx)mcqu^h8jqdU*w-gvxUX*qxEg=l-=xK|h#5jqG)C@5IuB-L80 zNf?r079CXOwibB`?8GFkB|oJ5F#=WyhQpAaUV7%zMh=F(U(E0Tn8Ya983+pTioP++ zDiV#sqIv7>w+Vk|8ITo?Ok{Z)u;e>q0cDaJy>4fjlzwA=qrbAk)>*u>8h83!ol28v zWIfP|WJ(t>fDLZmRonyfQvTb^Z7`XYi{nW{`};H^0r4WaTYv!-NxPC}1-E_#`Y zimO|Y0FOLTX7Tv1D9lPO#+N2{GJa#KO@6_ID0?;XJt9m`8w3`y&3#-fX2PCVpS=h& z{r<=Ib`JNrIhN)!G)U(Yv1=DL2$)RLg8L#i77v9fvEz|YGDd)4PAV{UxX5h*v&vPV z@lrOOzIOfEE3dwM_1a~)P8T=UUVZV|dbvdUjl{}no>FfZh^6S|Y|O`3=i{xRvs9_2 zBVjr=Z@u?UrCy=LA|2)e`<=77bc!Ud0vV|zQJD|Q-Ush@ZAqw%Bpo8A3gOV{+FV`V zTt7!P4kH0DUSJxPg`vVKp^RN`JbHY;R4QW}O&7RUFZcT(KTUc#TqmUPdQcu9y=V?B zSc%MCpBd6=c_p-Ogk11RM?#W!lm5q8cK}T>rN_cH)KP>jCZ#GH!or^JB%riqPD#f@T z$`cMYCx>S^vUg_;8DwJ4Oxzt0xuec;D(p)8XSs+w1$V?YPKWHC_9Wz(EhL<|m^B z#j7dGrD6a8|MW>jK~x*ek?~%3d~Q&7a%9EBUdQ3l;oa>$Vpb}Vj0?wAkN^ZrpdBzx zf@EAY5`zv7*a%TTNU#h515x2`?)M*^R;#u4%3|iFn*^mx=QcNJsemxja&5Glw?F=v zw*1=i3Qz{vO;=2bnDF$kEzczr0fGW?P57K1&-T$C{WQQSPy^b=`P0H-zDggBc~4`g z>G!)b*)&5o%X5q0_{CqpdgVG(ASXqrQf+{!Xe54l>k30QWR{46Nl2ZFcp*=OF;uEI z@<8|{x>85AR)aZN0N8YzC`<#VP8vfT;5;$UEZHXLG6M|QaC@NYIB;0-FmX>)oRN#5 zGZgWsX~e{1q>ivR*H>1af9A#I#r3VtORMV_@`ciSAHDlm-}%eC4;~N}N3h6XH^cUk zwIP|V#tMOzbeTx5q>Dgv9MkmWqDc-%2Sb`0qI+dlj-^(P3Z-W?>^m2C(QewWbRemR znAYY>dws=1UBlBSu}QNh-DN*nyk-No{+>IZMSChBIyzGr5dns`abfX${kBn%KILG{ z)J8I$Nk*Ij=a}JS0s%ukumYq;cZ~z?X=pO`&&E7H5r;lI3wfqt+nD)XKfI=aa6tl8 zyAB5pHF&z|gbTxadv6*{h#Vz~dw^vm_K`5s36p5V6$!cgE(9}e@I@lLnwviuBhOG0 zM}saAcBW#UMA$=LnjM@Klygr6H8ETiduoH{T!$NGRwpC1ZP?&Qcl zC}gmkUSCT#Co@KZoZosr*cwb99Cyn@S2Q)xSpgc8$zBoal69wc2xerKQz^bN;0x%z zGNjIe$YqjC3%P7OdhzNFZzys5?!$LJymRl~ohOg(ktzc%w%Tp%`3c8d}sDc&>3%C1GPCb+Q=3_@*0o0x!r-sDW2%)DIs7Sj>U@gHhVavk1k`T zZeJo6-&{j6D4R~k)5#dYf}f-GCD8TIfzVeZ$G%yArqmUhohTv(r zORI=VolF!z7@Wiax%jZGifh-N+uFLiyuS6}t@p~c#{S9a-r*sfxNtc9i$DKMiD+c^ zXrFNxPJTuh5%Lz{5adi!BFM`= z>5&J+NRDBEhNvcLCCfP`0^`qKedZT_;n#ohm;c_<^2ObQ!;fy?e($4O?|%5+Jpxms z0W8La5DyZaCfAQFyOOb9mW`|I~d-C1tGv0qJYW9~BNW`zwRgs{#M{ zg~Z4E)sqf4t&Ot02lYAKw##LP|;9O2kbo}y~i6Ibt<-g2Tncz6Q=Og-Z<_JyJAkkeDt8(=V+0-6d4m- zyUFqCT#|zfF@1ug$p?|-pDSvBH4a6%>B11UOQp<~h!*Y$QohR@j*0Hou!HLYZ^e@K zvg#modg*M?ychu3iDQ^};lZ0_CXQhuA0Y)@898IzKQuVFDQKdR$Dlhf!2xW7Bo*ot z7qZcEyZ5BfvVZSCT`o2!e{idFx9-cXT?SaKRLU@J#lVhH9U)lpEY6LbIe;r5SeZhE z1Lkx_Bcb)BIcAZ#lx}bE@VKydS}j#7`ICJPoD0mD4ELy1fhxly5?>Z;(#kjVUY7qE z{dtWzTHZ^{;WL=Z%lfA>xivDtvV33P^hXAFi+yGHN`MM>nJ(0O#Jlj;Lmh>e}r0HWt7WwI#L za7JZ;A~C43ij+zvAHpFo6h&C#%xchj7hHWN)8?XG!|XWHUJkh9b0~H&Ax=lVT*K8` z^x_1@3505ua;sTokJ?ySBDF#~w%NwG7)6-MF^#!?*7u$IL*(4*udN z1t`jyM1X3&SS-U0yDK!7;Uf%wr|K0hMLjPaC*SJ^r&23!e)6%pCs>HGiTDlsy zqs;&?Ct5t<1z=L9$fmNOYRe_VFbcav>}H(M3tFPoh zp@$ewFa6g4UyAA1hmZT+`r*m(!|k0zX18kX#dKtAZ3+3g zqhg66wCQ+&=oMT&5vVSYbEKDI9RCVk&)byK^*>;j)$x|T11jnv3W@L zs7R~X+=wwTU+|6j)EimHpKQ0@K5hqR!=<>l;SNILe*e}H;R$^Lnew)jd@U1%Px(ig z7$vcZKO0}U)T|v%YpwmB{WpH?Yj9ivd?{XJ6*(axa%&1LWz;G`2BNMZAQ{bUp%1Vj z45rPhXbp#A4$W(33>&E{vT%u&w;@ZM-+>GYpxgn01~dfC6yp+|oPo3J;@_wc$Oi}2 z5n2(iz*YsX3|A|>epEyPty1<@WQxOQTIlHQ zY(jxt>Zh^FL?2B?_`iuwtWGgsP}o~aQ^_;3~nPDdwnxrB^5*~yp zZk{9oKpxMT6&k6cSymjT7R?rkQW3WX!N?EG}t&qSh?x(o+hSjtAY zhJHt_W7{qb8vQ=nNZcdo7~Ti5h3x#nNfEp#n@-7S6vE?JT9ispj*jY$W;_&mG>bL`F6Wjd*S+(*I#-roJhR&-dnv+2@q*-JHN3q_uS2Ew|8o9e{d@l4i-u$;Lytp z3rH7M8;z}{)M_^Vc>g3Bi=4mq{D1#1{&lHXXKG?|We&nGoN9*hNZ*(mhSeg_K2!ce z*CM45hepl?A6=$d7%QPk0^5lGE|bG7N1r#A$dElXTNM`hXo#Rnw^OC26BTY%n-fiW zPAty=Mv$FHFN(~2G9ldSayql%T+v829sBI-U&$?QF_-(D@BbxauS%r|bD6bzm@o2P z^?H*Dtc6UJb5*Pdp+`uHp_7ri zp!kWjGDLnw!jr}<#i-=)NCu=7nn`$iZ9en4<-i}^JAM146PXP&K3fBQ?m+0y{W9Sx zq_ZrVJz2&F<{Q(S@4$^^#x0hNv)7`*OzV=R zPj8pdOkzPDH5nnXs=53a?FZ!EroAelf!!Nse3-aMD3Ne1ug`!C=2mXbzo7auX3W%! zIF2*3B>w08P3)uUXD$+vzv-+GW1Oo(-Kd3*eTL9nx6j3;RwSjBD+ED27#nnI6PQ_K zm_Cn`?a(-(zlFm@KN0tr5GPKWGrLz{f~oA_Okur!_jn`80QG3^u=Zjo^r+Q&^Q2|} z!GC_?@VNGe4~O?!zPa@)geN}juuqej@Fa4Wgwe5>S0K=*?9-ZocW(Bar^)KsIX7676<;QWZ&fGXFGa zk33k@6AN$B2V3Du!AyO1lLTp6W2HMvFtB(}y3tvDBT1pPUNlP4oHuhPScRchi>9*E z+D%rXd2tgf6>3+1EAyHr%<(JPA5``gJV{1X=mu!UtHDr`M1nrr6byfayf?NkE@T$C zr4hP5$)Cz{C&gxun&E{pj{5y*^FOngURj?j_iUv~IUDCnLx=O$I^AlcsWaPl9AVi~ zH*-~rK6!YUVmdSvY#HGE@a}@Z(M%mmDk_=&Y#mYyM6CbqYi_*!I(-Q zm}S8o7fwzJWeC+v^Yd^fj|wHsJTeiG6Z`qqxy;(;KmH&8pj2#fMK)IFY1FcIw|90V z-w+Q)WbkGL4QP`lAaj#hgM^aY$R%JamBBRB1!M?=*%ndRW$cQO$|fv6agFkrZ{g2T} z5K^<0)M7))#X_@0l($Hxlv_gXMEI2ii5*&yDH)t0PZpy`v($8L2VH^J7qYLVoqzPG z^l@$A9rshtSq=G;VDR9m;~Gqnb~02m{@h_Vyn% z?SKEbzq-9$-u`GWmh?wb(N3NHVG@9G!XkO(IT;cAb;d7rhjx-_vUiJJq2ti%u&zSBO_bU`2Lg z(xx%GxOSA`x#W^XsVHtZ60$*6cQ|{Us$d-GZFp(-iJ-fT%j?_@n*{C_#8T3%vBM|S z5K(mza>GY^)k}*J#@UZfTW@6IJN?0rPlYwU+UZa4opeimXC#^9JoD`7h+r&PB1bO! zzVN?^jO5txEk#=p8Y+^Q%~qQ+QGOyGijlyBJ#zKF=w@2i>nvL6e|cpi_eGP4{gZPl z1)TQHOe$ok0uqBX#+dR>eZLgh(Lp!319~2 zmUqy!ORF>!`Q(@Ss`{mGW&*kchSCEdgk6i!UqO5Ow`$%vxJXuGB$?Ak0JnRJnP7yb+wGGRj$ z603FMyLe^IA8{<6%U-y?kz9zTmt*ObM0O+Fc8@yVad0V-zPJ!x zN(?wT?FNEMrQY=NO14?477h+ed5E`-S{0#%hKvn}xzgmpokK){DW<>*(WGirAZZQ= zV0f{NJ&eTmLI1d2MZr|;e5rXl``hhm6`ntOS$#qT@im(jP9eJu+-$H!R3jMX<68H-O|9xi zOqTOn2wifq1K|+nbA*kPS}y=r!@%!sc4;xj%08%foxl4AiZ;DF`;8*uDK!V8K|`Ae zCF+RMaRRs!B~)%F?kc7jWRO7$KvXdis}Qo9xo^o3nVo_2#I;lhPrZbOw=L> zbGfxO6js(V=`^Cr($F;tj)sV{AZFHxg?0H()&;y$#?%>Be>Q-id6Z;aI;kR?jF=di z>`i3v#Jf}v*Sw$bXJl1NYQ@exo?-VYz!4{PGQ@X$WpM$GkItaSq+GR8XVjL8nxk#D zm{ciEN8L;!M&lfZ0+QUhSQM-(;PGBqTVv#f?5j|&WD`;9A_PE4Lz1bixp=s= zlv`b2{-Zzq_cX^kgAv@H>z6LwxOTZ-uYdOS&yxHz2h(T|*-+;b5#**wKxl4ZKb6QX z{MGm0g#4LGM3$G9ICH!EdlH*OQ3q#TMruUNM7Wfa{>TUC2Ghp^FyzrS&EcaL6|IYvY zpZs^<|G^LU_D^c{j#zKo?8Iv(>8Y_^yRrG|i!YHW{qc8yuya%(!EZLYZA3&NOpO@Z zf`;8Mi~N53v?>}1!tv0>Dw9}xX=E={)KYL^OeAfypL+G#L^6lLj7r`~nrsMlN-hz& zN|I)(B&R*+wyj5I`Kjv^+3yJ)F=u1usP*Y8_;R_p&53w!&mCY&E*OaWn}g=aId+D{ z3c((B&w{R&edtLB%zu=S@7`W}teq|wFSd{#pw4;^HW6O6e(0o_LH zxkpt-=eIj?0%cJIQ2>(pLtq0XBE++^i2U)yF_7)pOFb_7KkAb~o(XnO!?oRM^*aEM zxTV`Ll@_@;lnrcN92Oi-MtZRB^uh<`eEYCM#F1z`AeBF@ccCL-e9V;0=6tx+9Y}ck zwafNKe|*0@sSdr-RF+A~KECZBo(S$ZNXBH;Nrs(7ZkSOfnBr2I3Kk|=lBBp=$%<30 zU=ZRD;Yp-3bBjxnSllZRYcL^VbxW)3Ynz)JufF;!ILrKejw@R#6in|-FS7|dnv|FT zq;btqD9;8{^kG&kdm7KIyhhu0R&jS0Z#3*^fu`|JQ!$eZ84S$qm*)2-bZ7+8_dg4V zR+=Q~o2nTbo|L9wW{S>aVd4p+p+_M$jf%2vwPK~c%jpyAdO^RmHwfvEC&`E`kgvxL zEt!2#I7dz#4LUXEkf1MWdz%*{nWEy323#04VUbDs+-xBT(c*Gq{DFlM&3lATfP84K z(?P2@YtdMu(rEGA)rBRF3yAr`)}!~QUvPGIC%Yc{|0{qNTs zoqB7;XcD(^t=-MUW2`K?!p*_pgIo8x-t_EfZ08Gk`X^8{*-Rz2$eDFOWgstR!ASSh zu;&%{r&u$FWBi-VRNNEP*H84swJJw69X_|(Ne094qml_!4#S~XTFvaZKVc7SZmz*I zwNDs!kL~Oq|K7j(pZ@I6|73Ujq}}RsUPS?bRw^|KC(z}9skk_oIXpc0w}0`I-J>FX zcd3P86(+-gP!h|=6LL%<5VryVhO~XPZddrxOiJh?F}oi@YBITge&O%@&fgAamfm{* zT~wr`+o!9Ayw0GCJV((79z4ss>|43O!=uh=e?smD!KXcQ5}qKX@epDCguuJp)tdLfVq4JMJ+zK%};OuG@ROMHTwG#=wk?J znidaRDz<_`nWqlW6QZ^TvK|FXq0QPx#~z$pIQuH}sk$9a6v7Nhad_?FrIkc=INr{;oWJ>81fkzY`9Yya-4&Es zD>5}IJGGFaW-(3&yfG{-DND3(FZ6MM0WbnDbHd2a`5`q>qWTa8i$oKdEPsa}X+Tb) zAq+vzj|B~=7NM^_=r+Fa#V-Nk?`}WhjZ86RRbI+YGI7M9<4PCM+{lC@ft<9OGi*l_ zuB;r&%7ipGvhpD-SJ&rr#70|AH*yUnRyMCWlnHM7CK?n~Sx_D=Kh~o#G08%m48El= zM?z}87qLw(++^n!3msO6?6OwQbQU{B?+IqOn3_&;_!2uKr~wOn%`ZYeA`&5(&G&fN zAw!c+CCO;v+QmYFh>UdO+9s~$FlkJoO}aq}!j{4xjxHWeBDjUQ39BEj!rIC*H8?s- zU;ou_ae4me-~9gL-J=IPd#8osTsBA6L-D_Vod5B=A6T_OOBf;G`{Z(~b4l`J;tntZ zY&J4t^jQc}_?pPvsME#d0H=hMnOlqN3sz00!}?JbJ!uhW=8I0D=_biJlNnu65fv9U zCQU%hsr3260?Es6#)m;z*B6w|p_3urP&Shx8D~#CIzHY$IC=l}?T;Qj0*wP_da}&=w|Y7K_X=#DmJd08Y_jm zbS)lObd0wfC~|@TR!5bxw4$nBZ;`geA>0@y8%LN)?hI^7L=3q?3%p zWLO$Tv`*6yqZ^lrEpi*^56v%3S|qP5;Z;J61R0HA8jv*jSV@$5aoqyWGBopz`Io5} z&#Ff2btPPBUs(tX;v6A;6Gi$Jln}oNeT}C>z(S(o1G43F&p&hZ;?~8B@nj|(3sF)* zwGTjRLjTg|iy(oN1*P^p_uR|5`6Yr?GP^9SZsY<6;|2s4v`qsz&Vu{I*sJgoXZVCf ztWqwgW6Tn;OAlC}s5MEmVm!vop1IZ^yosSaVbcSl4yrEQ^@EcWfQ)FslS{_X;W$MP z+vko)1Bec!LP4%jI+5U=KE8XGST;X5M*+oKa4uMLZ1P-q8ikTk)88EqIRm0yA;aWI zkjdC4|B+u3i6;=JQT_yRaLDEbM>80p2`G}^09PnYdHF5?HXueUQ?XY=y#&Vx$OQXG zNGH;`Y#$e^zCaRIV7*o%5>N$lhX9Il3y?K%+Ie&Mn(uyed;74kx{%mdPS={~oK4_K zE+oTGjw>yoacNs|Ihn2VpuxalU;#r6WoIOBFu9b_t%SITs)6Ui$^tYZu5P1N*xBDB z_fd#k)!(`3D%z|W2Y*kw+t&Q<&4_EeW!r6F4Kj$~))@0yAxyLXL#7k&u6T5T3!106}hd2^rxCRMBh$LkjlsQs0tT;lk zjBC&#CUWu7u46|8eC40qBc4c%OBMCU?TjnI(4rNK7F8fXfrkHCp*iAxrww38+eRvQ zTIn1z)bcxTWP1+x-P1vR;91zZjIRqXN{fyc64I$O$;jM9u7FB7naRXNrP_yxJ&_ha zNcwlcu980agY1H`nKOP#*PPkZW_{T0jC!3$odNm|X_>IvCKFKDum@dgv@C+f0t&y( z&{zqSV$bGFBZ9%R&meOJ2dtkzO^=j#Z9T#8dQCc}!N=5Y8udUmv`W-?q@l)eHcb$- zkZ)6`SiqJBFDW~p_Lk*IR;;oRb;YC<9%bt_bUxWsRb0*-uKX=DW5}4Q^uSxV1 zBa0V?6MNybu(Q2=e0;jU$DgB}UEIh4kWNd*!jmVv_a5*3=&ko|-+QokbUc_)+xrV( zD1G=oVKL*ORtv|Os2ub`1-jILiD-%>y4!7W#pn#yDwX-%5-mDbNWE75_7A?VG7Wa< z#k38{>XEPO^*XU|gk6ba!%*m?RO6~LwTA*iJQAfqAiuzm?KpqRZQrJv8uS5Qksm;A zMXM4tIZ&2XY)#pOECW_WG>YV_uqq_>hz%bt5k?{qeWRg|q@r*;8PFwd6i5#N*-(&F z8{PC6{X7*=XGx(Xmd_UsPxJN8fB_n))4&Prw}9%?Ne>S=l1&y8@571}8^+NzHNSXL zWXSn=E}K|e${_PmsWs6jV1y7kx@HeS0uf`-1_g7DlV%HgCdy4x!pJ@+vnjHBDFQX# zI=Awx-}pwO-J~IS`O=m3@5M;tC$9m9fLm=$jMNF_?&QMP6)ua?hpKWQX9D7X95m7Y%4)uzTQ2o_np7>QUbA_houqOQ*3@&`g2UB zvNOW?q;EoIhW%(X9*!rXZ1PANrW0}GferFx6Vff0RY6ZXlD^0Ql}eRju?X6V_y!{^ z6m*O=X`fE+Q4#}q`SGxKVLq42%^w{cus2Fa+Pd+rYi#9BpNdmf8f3B=4NfKl(rBV# z%=(#@eHwxc{vqFzI*DMqvBEOwx74YoLj2@Q6D2JGr4Ur?NEipkkyHbK1r5a$EqCuOCK!&J>1S;ju!OmVWUtx%v*N1tF2Ui~xy8iIO zLQML$sCD6T(WHk!*Q5Vvd*{x*2h6aQYOP|q-s-_;3ok6rr;v!V&uG9U#40=r)Wetv zeo$b4)n+4;%5r2Fy1dL zhM?VU$4Rk(3K*ysg(uCvrp(V(lk@yXHt;UVF=im-|^TsS%b>SF3S9AwfH z3Ga#DWkYU;3q`+}MJk-i=@hGE^sQ*kWRfYyXc%c`sXnvC47}~6P=iQH!l(d>LX%U!c{E-@#!()63)9F?T8aVyV2wfaj1zn#Aw<4pe}P4<)ZG5x#)O00BO2; z{c5#V;fO`9Kd^5*sH&<=vZP^a0-CL`z0 zZSKG?s5Q7h$#6LU>|J0Lh{T}Vy?3w|@_Byd%U>x~t4|L0xNRtn8gQ~_4B6r*hOLX6 z#DW_fr6;&TMqwT)6%>Kln8dA{z1YtFsosc^7>b7--&5Ri^(9>;t#Jt%g>z301f2>h zJa7_DKKSv;ypGG3g}{y)elWPTvGvR|&vM2dJbbjhx6i0^p_)PkD??)#9`fvpD+in9y74967c{+8W{7kx6`jAw83?i zsWGo#fUXFgfiP(U^BKCpgb}V6S88>l{D&XB{lVP_`v-drNUSWgfBSFUxm_w1bp%+4 z83dGD>bxbvOP^HI;5-}X^+a@-!%Eu^Wql(8o%Nom?qo%ed!24KqO4RHvrT17mJ zg1+!cb=n$EQ<5_}n+)m8R^`^60Z}j@}=ZG$x7R8#W#4d$1ipj5ZNCboK$c%xXCE*_1(QFwUA~=UbsLls$&BqQ)&Hefi#ex)P@P58` z+7O&zBK(|2iTay53s$xnrSzIRDk$51pk&-xBHKUa~sqTW6f*FMM4E8oqyY*z# z_|xP_gTBG!&CdjQ5;CsD9CZzb#cnYmi0r1d!}Kpt=3qpoNQNgwK32@UD4n@KeKeux zlZ0}bON1ys|3Wq)o+g9dYC86x{@uTwNG0#wynt4*vhaCu?!fLIA#h>s;+V;~fIMkQLY zOEC@&V8m4xk$q5FxfA)rN#=o~Z5+9;SEW56xxfZ{B$B=5sGGsr%MD z@9ZA#+?VUFPN1nTuF*M;m2 zIszM^Z0y1Zq;(Le*1IPK97D$Ix#-$rGB0|QtW)|{)Dy6dX#_Eqs{T5HcI)J&xsWyo z&Yw{DYiJaWIu|cppSX2Jv-j6(sLy{eYTnqhy*^fM!}PG7h^6kFd{Zm!j; z%`%Kxe4&N912RpIk7lXJn*;-zq%&5Das$eHk`45^k(?eG3?$z{oEMmv!j{IYy5`Kh z7^`^QjY6Ng%SCu&WS31+T&EmPh$4PA!oFDDMI(5ZGw;Azl^cKuh=G^zj+Jse_JpFG z2c(#Yf1UtFXQY;b%E7&q78BK@qyzF3PcT6PZNThzcT4~c#Nuk0IN$=E*7|s3IH1K% zr<<8Dws(ikzVkOJm^$&}G}2Pc1Di-F~$D{zvy@h{EYOIynFv zOeW_LQQBBqK!sv+Z4D&@Ms2~B(W|jdyU$#_uz7Ct@$L>C*H&d^GCKKoE`K1XC=OOB8&3 zC@Mb58gwvCHV7>!6ccAHnqCSOhxme+SkBM6XXxd^I2RyXnmH0YnB%!}Ad#VxAd#87aAjc9-y6^6Ky`vxfN)+*d7+=rs&rS(%mcN%f*vo zyU{p0KH=c7hayLd2^TF9^`qdSw12C`B5;&?sy07uEf z(y7F`jq^afKluLlA3uIV4_)?pyMH#9tH zhHf5b>RnS1$^%R#XDD?V0xdmXlQv0?uhq9kGE?lCFlQlGIs>BzCUv@mIygC!+sm67 z>VYl+S`@5sd2GKkZ+&p@ z5eY5t#QlVZ#Mg%8T@S|Iu;qb#d zw;yjmuGFdwngR4Y+Bx1_N}ZNlOx2M!AgWDJZ8e8INOUr@B|Deww}@NtUXxxj2B*#m zX&{@)A#n@n1k4->10LZ}1kD;iLj-ojkqFARGQ7!~*u5pa0$GPPrK4M9Po&s}m_jMX z12{Y6P{>rh{PL^o8|UAC`|ZE@_O~DHZtv{wG1(_$xney9-46hm?l#u#9VQjz;s}1n zo0FIUn2h+07@L#Zh=n4vDzX$r>71I4kJD~-=?;Q+H5-j&#DC-5oJikxhlywyT%V2; zXO+BZgp7yTmX?=O@#OvcAMYI<(6N$aMYtrg z&uBI&JC{s!2V4t&+fmv&hVrK~2fyfEbDN$6yS0Oi?neHkc^#ftfJPk1+0W zn|oZFe=d7*I4$$c$z(1az~T~C8+y1eUq3H|p;iyQTh0$)xW|tNd8>ZZKpQ+9LokK5 zMUS*-*y@Otd7n&e;=lltl{X+wlc45fB1A?>bQWD~IwV##0qD5#(NC@nps$hfU`s;@ zr5OVz>K$$NOvJ5_5KiZlwo3=1)(jsPy37-hIARuR&R!H%ly^Jq>8%Wuh7pzk8?8bg zU6)~ZiMahClKV_u0B%BjhAY5D6kl^PcFdjq?zNTq z#auQQ4*`NKEH5N8^Wj7qhCW+yDx1S5=-{~c=8u28y|XV$h>|1!N0pk@+qWW-mU||} zk%CDlpi~P$l1F8QN-TMbkDKtMkNzY((w)tUOiu%peiqInFJrX~O{pmFU}RlPU^L~M zW>NB9n$GLb%}9=+$ta^wUWsL`H>{yYbG-z45o=9(MMv1<`pO$`9Oa9{Ne8Y7Iw~w~ zgmjR*Mqq*yUnrOHBg3{0wZI2QCnOrlL;|)eT@tE4G@VY%ML3+G+St-o`G#%97dp(J zGH(IX5@-g+5}N(^O}6`;LZy(3MHjQFYO}L*l;@{Df2i3O#wL3>aTnZ>YbWe0AXL;z zM$?c_(gCoMWF(9u0PaAsSb_u@r*dwdWC9a&jMsF|OmbeyZ-_W&`Keucc5djDeZ5%P zgHRG3xfN^KT*{4&^VhCjf9O0^5z2Ez1dq=b^59p!+RPqpl5@TUJ7~4B; z2k4fLww)snpT5;WW(d5N#E%!}W)m%q=|qHC;ORhKZ8cf{pzR{$*6HL@@oYN2 zds@+GVyCd9f@0`Glu6|3I{|c%b_jVL^asJv2_iB!Mp>(S8XW_)VsMj9r!pVh`mkIn zavIPacg3G_4+z|>{hkm_S-!~J2nyq zdiy9?^w1s*CtTfTm$w5f9yMFgnZy!W^3U1032U1F2|0kA2?{*hO1lZqL&EEzHp>@O zSOq>ORioEK1hgTNi7piJXewj6E?*GoKS~6rJ2)n`$up;e_Q>)p>|v-OrM=`*&}2!h z2p{;!joDTiC=_h2UKpO{>FU~iVF%=H#xz}1XGr9GB~c}NlFl6qraxhpW;GHhb%zIp zr(fRiwgcSXRV*F|P%MkEqnDwIkcLX9PL ziA1BA%`ZjW^!B0&G9)Z%oCha`TMrIy-F9v^3N7!(doeg{6-X7eQ+Z&&sDvR5F3cWKX(u1k?QltVG%*Lo;g@rmO-b{C*LRS2{? zx;;g{_l;+7BvNyEEbH3vR>$yNy}r<+qXIdN(8|3*mpCvv!jcK2??dT7*;-1Ihmf=3 z>#K8}O!>L67iT{OiLccfY#s~}rQ^Y8FK=$FuHN50JStTr&6Fnc5Qtia@&bPDI!y9R zX909X(o*UXcm-lW37uS+*H<1t?In+3Q!ckDBDFiOucXL8HWk!=omI}25 zY#ROIku>ojo?gFx{d1rD+{Wg4z^8ln@BRRUKzqN_|Kb1fZ~xuzADo=hRg~E-9R~uY zJhz;M5Xmb*GGxRPb~^+zSR0}?=5>*HcF@+hP4IUj`jhN%`k~m+XB1;W4#Ooisn5@C z1*QhLF(5RO86KRJNL2)pcCiy6?;(5~ryIu>dgowRsLC*l)}^t?$zXV2d2uo)2v)+a znn^}chCt6xMh4kQ#I07C1!mQ0Ly#KCnPNb-J$%%$!KsfsZ4s}S*$`e4z#F$?3aqqu^&5UP?HF6AY0`6;vpf`8)7Uhw@L97GK76@o&#jfxH@fYVlYN$))><73{u;1smHit(Cch; z$C2@@&>G}>W9KjC>^+*Y0E%EERGEFzdm-&*!h#YCn1J)`xet;nWG#iL?EH2|n5h!nzf~a*G`) zxBt^%V#ODeu;@<>7)6kfJjseUlD(K7p9wK$j7uYm0N5rxnMh}(RIFDqG0-4ny0I%f zWH59MWYYYXU+XK#&rD113`f#>P_YJmZH=u~Jt%Lk2ZLIX9ych6D2~bzD#!|itY+im z0o)GwKkRGl%@jdQ(=Ox|O7(WN**waZNj3n_>LsSE(t@BjY4`j`Le zU;gQz|JjEh-vR#?Leq$6;X#e4Byi=7=@WuTu|(I>4I0p_;~67!FaXJPV>p0D6R!l} z=}1=T6zwNsI(H1S(-NT+>;R}D9b`q*@Sz-O;&(!~2SHMotI?ps?QkzKj1QRtBC||x zi4WyyDG{1aL@9vK|JU&)A|39HQ+EDbB2dLv5F;G$Io^TtP--OU>6kHZZb+i~VkC7w z7rB*hia9VNWHZ}x#E}R%u@2K=>4}*e-btUZ$U&Q5)dLT?7sX)>LXB^<$8z)wS%Venq$%7<~ zMaRew2D^6WliHNNULcW?y<)`R z5{g%7yFf&kiXEf)pUGwj!Gw~Y^TG}ZJ0_ciwnEw`*(x01)rE8<=o{EjnVKE$?Z5fn zt?h$?*axw8gg7MeNJ}%hrdA4~u#fR;Vy09xji=;Gz1(MWwpP5+bVmb`87WuTM}wDz zKv9hvN`eJKNo+DI`k&?{Xymi#PkLWjVob7I3P5BD8JOJ73XckZ@^9f5>!I;sl&Qe( zA*i8#BC0rktEw=nxM5-W@`>q93Tu-N8q6b6Xi~{D*oP1iJG~J~Dalxv9T}wj>tA>S zzp1(=4R zciTf0qlc9yrmS&*)ZF}X{`3eV)=FIrgK5t%&COFNvF1?bMwN>GTLx?5^%eFvq*^Ee z=I7_&+!C8$jmTU)!qq~+^HOh`5HAIN5DUmS?6zbwb>-@nmtMkZ;X3?sFeyp&-0oyL zjbjW*{N4Na-+k}hx88aCs94U6Km#7KcAZ1uqKR%FM4}+`V;*;*Tw@<#BP91B+>laA z-siB*CBuwEmn(JJMu@I(s-t1V?Gp^yMMELtKCp2nm4Ycu#?QrpQ$`M^4-Uu8HDcY?H(BnHRS>NtJ_RE* zB6ukr)#(`f8$Ms(9w3OYPT8E;(9sd-RuD)*x6$sXOK3;oQa$VP80lN&0E+-M16%Iq0C5`5|nn3Xv31n^I(21 z+Fo!qS^q2m>^wc}EPhWsAy&S`N?+KY%4IUSG}{~d2ZXzw0>wC6qnB=oqf0B+S)=s+ z%@-4;eCJVhTphdp@wA~Pu~s-dJ|x6Eu_9D`D*anZao&K&a5@o6WBw;3(lKM4=gzHc zT|7_n$yCJS$J=)v?i`ou5|5iNoHYUaWoYfjbLk$FRiOA z=*QG(Ryk(C04v=RIs#vYUL+Ni7HJy3OuW(x%|s`oQ?B)&MlT6zCPZm0GkKNyzahS; zJIC2m1SYlWK4C}cgUHxTJTtJCfZwcA!Bb&E8Ok}zL0SRwHoPwZ3(Srj0#JbKMHHZd zCjB5G$5Zpl=6a>oUd|+6xOx4ZdrzPXY^`AV<->esV?LKmM9`5d*V{)}npBEQnOHm$ zrUTvWw9hZ*fZ^zgynXv2j*VogsFvW$NtKiWH;M#Smgg8`E7m*r9zRZnd;l@Dc(|Ux z!iXX)B!UPYfEl2CLK*;9k|8x(d!Kpz<#;>+$rkfeX;(|hCIiiU5T=(_SJz}))($r( zd2@5~t3UlSU-;6OnQ^LC%8&Tkeq3WhtlJ|RK6t$S(Z_e5?Ccz$7Fbh(Xa@V2ey>3+ zB7)H_;Z?yaIERqMxhg zUVILTEAFeHC%m+>4h^T?tg4QjTpEC3V@OHb0V)D_84m?0prJq*E|E;uTI0L&uB?E#qQI%;GQ4-*vcl*OK{BX+JZk zA|y~jS!BEfV;)981+SvjDZao$90A9IQ}D%M;gs4L#=T~0+cKcO`HS-H7}vT zO5Th4Gr=WP=|GD~dDg<}MUHCKmpGrQ9Uh|p1Zu6%VfX%?uTHv zacBgvC!w+QYtLNTJSw$otTm3-mw&OpyOWH^ zYQkMWjA+8F-`@TKaJGP4V*+&Kh38*fTUl?^O0;_*vd5A+j~A8=SdAzgEG(_?cJ*45 z9UZrH)qce-Mr!BbU;;IsJg8J^FY?mwxFRzxu)Z zxMtR=tpy5)CQI_d?W8RX5Vrxt?U#K+5aH$Ig z%n;^;js5`~Zl)1s>tiWOc|<4H6AOj6)=0UKUV1VfxFKz;+yn8>tTj|oFOc6j%TXzrYEoLx=Q!?2|z}GCHj}5}){`@N! z0Y~cPGV1I=J%E15vH=jX7a_jQ3ad2f==(vSINAUeZG%i1|*4)>11X|4rC;@kvK@$~q@E#Ww*9t znhSUIA!wDk%S~K)nwe-QkQ+Da0lY*Wz)-TI}4rTt1ba%lDq$KN0Uq;gy16(HC3$Xf8PP~a zm-bJa2Pa2tluv3F{QoVYZ__OW6l^yjZPCI}d=iNoFB%EU}C_E}2Z= zNB^t8`Wx4-KXdu=mCt?l^K51($BYW@zW32b@7?|wJI{8H;OL;Jf^NbvIJcPBA1s#& z(hX#=-9EW-?c(#Ve)+Z6zKH7cYtKH1Pr{9xuUxzS!pXrl+(>S_)zx!U7i5SKLP;A} zmsgtIwqOo!D3?Q+iUj_nViThdb_CJn_jurB0>qI(poi4%Gy{R?!phd^{)0r&gIfpv zI6f@9wBXs0r(BLJmo6_aZ}Qn6Z{Oo5gh&~1puQE3fD7GZ@V*X83_`ciWg$kJVyH)* zND0BkCkG%k*xI`C(hILVcX2KowWBXWdCnbA&AIA#?R6(83gAl1@JZAyJ=tI;?FRyK z%Ih;#L_>*7`Mq05AMVvk$SR?!0^49PK7cO491`@O2witubH6BB+CJ}V&uy|O#mENX zBy=FSY~)2QcemB8x0rR6tvTPeVLT|~fUO3g3_W*BTj|D&LV)ORfs~{7Ks^QA$Gt7{ zW<(s9i`o(dh8>Z6o*!aI44o99ip`2VQM#iJrZ{QH(j1oN%h2vdH$bXy&T4PeA%H^R zBKPTuq2|QyMfZ;GC%;z2dE9NVPAM5c@u<(lBol5&snn@9+J{G#qf!T-VNMK$~OM|HOTUf)M0=?U#0<#`2zm7awsEv8KBB*>~Kl+1<`DSXD-wF;63jOGDgK?fxx zOp{=@>M{yrg(s_dC+Zxkb0V3(R%oWOGrVrq1Jf?HNsG>&YaM_|hpfyCbjj9+`@)jJRO4^B&v zqI8f;O_jigg8L1-ll5t!L#*Oiqie}~_1eI9q^x*i;V}_1T7t&D`)s>X4 z+3lW`OR%7@bAsu^)1Y&+7q#0x5l0ot*C7-Km0sWm8@=(FH@^N0-#CBi#@ymc{^aDH zci#H;cfb9^AOGmigGZ-z)~BmGa*XUKt!0=OCQMLE(cD6T40tINOOYuL`t`-twHIFd z8r8vr2e%-U;^p_Hulzi8$B=tEp9rDIaP9iDNUZN}Z%b@I6oGNiRPMA;kqRXmD&Un& zo*-1$F~s9snkI3K!Di5IHA!xg(Ki~^pS<;BXcsSDz4EP}|5BO`5!zZF4>=b?01VMw zxp?*P`=I_CYnu^-hp3N4_>s0M^N&;TdX|B9a%4wR?@!I4#I9YSN?@0(S8x8^ zzxxj^z|^nrJ=i`uJZ&U=w6wr>?DdI*k`(&4cLonLj8mrA6ep69q=VFuy&B7>r@az} zW$`AZe1m8S=gkxHAzVU>4`viVjgy`e#>IXQ?YE89G-7Q#JIF5AVXo29>WpomHb|CW z(|KB-oVI3J_)?qrqqlnN%&}OGYbW+g6wz0Xz!~_Eh>c(RtfEA?-j3c8R{*X5u6@RTxiv>lZ z#?RT(8x6+ggSlLWQPOIqq;W=KkdSM%`DXY5246CGw|Q{^=S^5LqTs^kwg4x&U4=g< zZ*4-3Nu5mkWXesg8}-f3(mahTLd%oHM+2Kq_L*u>bmYMzcvWJd`k^bmQ*d%oebs3j zmE{ntO??BE8A;~R1-224#!!YG^@}y+GluAAU)sFz%Bx>SVj>y#9F`j&-g(4! zLmwmN_gq+80##3^vL8R*KP;4iJIG~2KJU539QWKUdU92&0gbt$FUFmtX{N)rFt->? zWP|Z!IFTuy<{$6v9aoBo1*IYprW}D#8l4{AavU8T4|?`l99<&eYZotqoHN?QND9%4 z84((DSPvi_^;_Ti8}2~tFaGS0|JgtP=fC$a{`p^h?>l!NJ}6ciby5682!+Fx3W=SR zhBmvT$4gr}GIEAP=?zzK9<9Y@_0Z=-*6sZLC-;By=64=!Z?jF$uWaof?$RZ4j#{+a zuHAfzDO~cDLIE<@D3M6{gCUS~Jd3Vfy#jl#ja%Y$h9yKI8e;V7+{!{U7Qvc@(8Ea} z!KaB#dwj3ZZgeM&!sBb3tASAD;??IK?Cg@R!nJ`FRjZXz^_!nxSy^1E6c2N;7^7-1 z;|0yuMFg}&Fp~4C02AMF7w8GcV2t#wNbBee0&Ht7j%u%T&-Cj9f|62 zaMY$Gb_Qhve}X`b-^JW-3~c~vEMZGHZK-T%^TI|V6{o||==ABJMuJXu5~gq%>8JpB zG2lNK`bT3|z~%~ihF<^Ulg2yuPj+kFqxSf;H^WEoq&+5fFfd#g%!&hBb!KZ#ZKP(j z2+I>&d1R~hXSMOHHklnadE_|XnN&v8(qLR0Ob80~0pQxW)EE_76VR^aa8hlLFgI@x zCN;jP4QegS%E#5_u-fWZJHuLM!ar;635Mq7<`5D9h<>Gw0s6Swn^v%*z#F|iD)Zdt zpj_?OcyJdZ^--ybCd|0h9v54qLVHx`jB$7;0@k}D5VH=P(BU)+w?Y)9CL5`6snf3` zdH#mS)*H|AW81*%PtGH8Phly>R-wWa6gR@FAO1Q#;2#Sr}WQu$*yRH}~ zO3!v$tb&C?3G<>mEB0Fd(U-;nD9Loaqoi*LceY0etq2w_pc+C#L_J2bxXW)o`+T!e zYu4);T(oBTBv-OZwX^a~0V8#p(%MZUh)jSeuTm2&gZ^lYk;P`r4>UJ4u(=+kL6odu zWrB(PROhQjGDAv8eVV+NnaxsQOPCCbi5b*NU)%&SDIyhKmtdiwmYl}r_46qvfd-vR z>+`IC2+i?m6#hSCfnRb5``muy`U-58G;FwM{CJ8VOy1#wmY{^ z%DaUss@!xHtR93Ms}O&CyYn8=i>SE49grG9{%_L?4SPLzx-Ekzx(0IX%U1A zdJ*#>CY{xnWY(@T>=cmmq6lIWL$#XF)e!67{o3h$iosa!QX)J5;k)0@pBzl=!Ld7e z@9~2V-u>?5ogJj9UVY>9=PtdF%gw*|%yZ-_`-caySjr!ckep8j-Os%8QYfCrZ5Wwy z&L^VBaF~{|$mA{W?C-M>xp0AyH<8MqjdyT#ba1#^DHkbrnQR4VJ<6Z(x%fnFhw7fw$PE2YzPI1mA*9ri_J1co%puDbRRW7wgnDfsgE0a=icm214PxbnjDFLbJh z?|uLGf%aYgWH6FgSij<#wMdn+QIz&vLx)caok5?LUo4wNH;D@;3Jp|chzbN;)p`XW znGPoUO(bPVSD-k|c_bx4$rBbKL#!d_@%{szG=)pOL%O)J`NYWFIMcfR2c6+ zTX2M?og*1y(8A8R7KwLlICg$5=Oxze52ii0KboDZRZ21rBk7W4Oq4T1&r{K8DXI~8 zn8+W(ldQbq7;0aO`973D=&Mn#6ai2*|TD?dNYQrFJ6BULAh?daP8vx!+ZtuAJDkRF~JeD)b73W-kT?d6Uw@| zbdu1dM(`er`2`|JEQXjGw%~N!f_@+7hPNN@!yoti>617hD@oa_`5V+~5fd1LB1hwi zOfH*VU!K2p`xZ*#XvELQBP2r>q4++Iu*l26-bOcxL<=}AME z=N1R8>5V(}Q4hxU#Osd-LP=(kpWOR^(#heAa|74PN7c$P9lGAsHFO05l&QCOAKa-T z`d=-j6WDZT@k^^zOTY_Puiqe5uU0A|^*bEnISg$9cnj^6O0C8d=Q7FbH(sDay0^Di zgBCU#ouKjqG*zl#ry#n%f=i%1;=OeK84|;f?taABh=(-CPF~P+`6BQ@`3SVhx#kql z%GK4~hY@bLRG7(8!J^?23wnnKjnYA>IrRpU1ef6qdS}=*>%?<&xpX|>u@~AxKTif2 z&~b_}0`|_JTD?wdFbX*BuU=S4_?>X3^VI=_vbm7&%33xMjx!m9=E_PoGndIY>P1vo z$cV#!213ROh-pwgnP9b#`7ksBm|*oz?CFTO5i{cKnc1>#8~zL6R?dlyURg2@c#pmB zAdCu~o2-xyjVxzB`~!zA6SQSxHWX^0kD?t%SJ5}LCBpV-7{9NGf7C-MG3qDUIv~UZ z-K6u*pks>sLC`zJay;OoSPmg)7)2Ii+z9#YA)gc0RM0g+?k*Yfggy2!_q}6=a4!Q1 z96T&57eu$tEEjcT6VTQ{-KM-gug;0?O`(YennTLTf%D5rS2XTBq)bJKDxNAAi{v0u zOhM0;5gSRPBu1c5fc(c~f+PiG3ga#Xum=G|Rux0UA{1emAkrRYR2Ya-iy9Lo+~TAa zi3ekGbPpIdCG!_61kEf&krR;}#gmcw%cY~qc=W|rzVPV5UG&JU;?N{TR+%VKLz{Fu zWu*m_>F=6)jc6oux|$f7cAgb+G-J|A&EgvfS3nUlizszwRxFd_XHb`r#l^W>-d&Y& zq->MJ7BEVSJ~I+5vg`7JB#4+FQx*(zm5q5-j}wv{?UK+ zfBO8Ff9lO2eVZPl$dPED*A&H~?i5SG7oU#FYi53b%o|E_Fo(MjKx7@RAh&wARcxfl0rw2tCfBJ*(P zNvV>@oQT82+XTTYbUXo_C=D125sC)$gFd~M;=Bo^Q^x(Lc#<$w7z=;(%Wn{=KfHTP zi3(wI`>0Uvx%$q)aeZR*$Fng{I^w2yfqXsjg`KVmC^HPg-q2R<4l*JC*KW=)r98AO z_7SxjPnXi6&%S&uirUN!b*jps*+V0@Wpi~s0h|JJA+%6vv@tAAR{-WVJZZX}A}Hcv zB*zO4Y07kqxRPj1ivGA4Nvw!16vWkh>ha6yQm1J{9xuw}o7y52mGP38($quNgdJ3*NoFIeY+^an$})Qi z)k^SibkKq1QNbJ!nePVM#P?gKCj^Rti2$R98}7J-FBM9g@bG3p=7gtnnMi#!2FY^1 z2p;8joiKyr@JBN9ViLtHmbe2UlgK?FLo}j`Aq@<+M2s1vh$Ei|hes|=M5bAZI{B&7 zHj=@Jz>r@^J)-+VkVE}95-0W{W*4H*CnPfQ=rD+o_?j_11)tsThUvV%oO$v2>kCWk zhX)5pK}lm+DNNc}GnvuTG)e_!6rHvpD2+k}tCE6HwmgeHU;t~Ab6Lo`$;qsEr=p+| z&csbxTY}b$Dh1PoM)hWp8Bw#D@)jP3i@12o-j@W5TjDGl3IkO~vK0}RLQJYarsC#P z(Md2_OGG!gRTqW-PrIl!VYpwh6n8uPw({bFive(xy1u)K;xxw=6Qnr<3}5-pTMwb*Di@7=u%M-B>UD3Z+1uWJ94G=<(>s{!yYtys3V zv5SC<@G7$m(OfVw$2xA5iO2+Tvh)zTLkRa23x^+n@RNHF?qUAKT0D323+FGsu(GgH zIyoBl8*{nE)y?bMPad{fHBx&H8uYIs-q!S@`d&4M=N3Y~_2?A(P))Xu2{-C&Eghb^ zLkERcu~d+@W;RZX{is}0FDwK`CcVDkPR#wYchX&g!o!PuyzEp`wo19Dv|RQj`qJQ0 zkys)WO^xlodykHh+-lX)Q0P56t`u6mTEAauPo$+W>!qV^#2n!UZmg%EdRDs#`!TQQ z#PIuka2SmEKHjfBDRjVeIMkg&S##z(ZFH&wiaQTdyJWD%!3-~rzQYD%r9Pb1hO_#Z(LY-=cR{)QCliJwUay!byS<_}Ob;iZ^xYDteLA3@`{#hHki|uK(Z!7nv z)$SApUS6;As3oJJ+OXHc%1Ta5aEL`?bZk)CL=}`B2`TG@-#zNJx%qGs zHjHX+Tvix`Ni>9Vxi6E5%x4neAi#Oz&h3vsc<*f!T}X+~`fOTu8N3qk>x>+r?`-u3 z1<^L#BU6xBWt#k=;F66erTeBU{Dol2MAF>h89&&#Xwn#+e`R7 zi)kY6EQc(Eml6&of3gCg215P~=@|pUX6a}?lgt;e2oE2f=A%ImisRq=$$J3R(k7F^ z3r9SbWJQARuw|m1aa5}1D-|K)^?TWbP*}sx(ONb|4nPI-M5aRiZl147EcZWaxhA4u;*n2ufe)Zhu^5&&;8(ZraE^n-?udJL~Sv|L$#uhO_XA2A}luVmFK04~Bn%0Dm4aOs4p9!LlUzGA?$Zk^bQh@Q0ts$g2wgNE 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%0AZ2hQX%lh%O6P0NFcpCnG^o#YA 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

    2~ezKA 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
    4iDrg#$BgaHrYj<2(oPd^1=gb*6a7~ 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ð2Pz4-KVp5*`I?D)~e$_we;7iwF(&%EQ^ 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�z3w z5^p?XRQkLujR)k765~o*7kaPvYdAs+8d#tmy9s$WLk9yh$b(2u!9*Ofz^eDc`f)2p zOEl7w+C+!dNR9`Rx11@lUHT%|aQkA8(1f8{oA!VJYyhFaEtX0drix9Q48D1Kl>YI0 zCC##5S`8Uua&S+v*@nWlL$Vg0arj{5^&?}~lB_Cqwv?G$d(9T?R*J;_iotR0#_MS+ zl>xS7#C~ctoIibf+3gNI+6Mg)BePM1v$>_f#gdCHijmL4?6g6#5T@5XxbPPJK>KL6 z>JJyDOj|84IV{!Wvhq7!Cp-Ia|K1@P(!JMux98LK&hLI{tAF16;&AKPl)m4(84oFY zUxb(ECVu3=3^Tl+C>7o3XxFE~Y0pPZNI$bU+amqqmN~=GWrI=Q?lrA2wS5{L0WA%& zQTSH2HfpS)tw|*@S9Q6Qhmhm5mf#+j3*`xv9)= zQyohfVA|nd6y%2M)M!Er+-fx5P9{z%5enj_nJ1k{k2a3=Z0{(GDq&KsZG0bri`1Wr zB?;^`N(~{*hKHAdw5&1srN}SexdAVVW$oj3>e+BioVa);)Yf)hI1#_MUhCaF8{h2w z6VEGGZ{L`2KOWx*Nu8F&F#0S4N~&(DPb5%+t6RP_qfI-?rQ;_?ZV)h%U6dWR8O(}# zjYO)DWZ)7xH)2N|$$F1t@4%TENwA#uVd`uRugAFgX4%CR`ICxmjLkMp8U)2;;w=k6 zLy*nbZ2PTFq8U}ZY0NMc@6%ZYOQq2{R5xj4cv}T|NOV*`XJ9!kyC}dWGe9Up1E4=i zX=|gFqoEq&Pz?sbw8%Q3nvdL}A0x0j?3Q1$nH{pe;bCu0?+U5EXYW|kseBrs}b5@@#5?@blD z>-L?&j2go3aecSilE{SJ79-HH(mr-?QpKh8D3hxP;$^75i`8NC4AN&&nY9jcoE23% zNvdKEDUYiR%OS9)(F*KU+jc*syU>S|HPei&cQ8Ku+Tm7} zQIQ~dGo`FPU+-m8PHhy5jjaJvq4hya!3y=>|90mAADs} zZu(aPl>V>>YmqpN{=6h;RAvw@{6@n7Ul@0Xds=PSlFoB#9d-UBMYSc<`2iy`J{jm` z(hK9o?VuP2PrwWan?Fs8GX9#PHzZ1yyD@HP#V@da^-OG9g0#^&ln(IA$U{chL*{GL z8>EzapfoS4X3l&tyewG2#w|-`o*+zkS7RSrF(z~LKLbdWHmb8XbMofT$nS)yvJy?d zKyRB42d$`d0OV_V3obyh8HwwiJ-D$JMxh8FjIOSy{n4i5AUb>P0PVCM_?N2+A{nL& z#s)5sY;4L5Kc-unAXTM2xpN@7C=CHb4GNwnElVBe2WZAsGw@r5Jt16+wpz3mvmQ|VLi>mL9@bje_!6~MhD`v?Wa>-pOc^$op&XX> zDT}PGh6}*=aRh+@zYwmdxos=6(x5URLtCk^U`rXCnZ9V2#-Thy2AMa-=*c>Fpn+(l z`42j~mC^Wfmy0X3p6~j~8aL`M^ll%IZn>Fs>cuQZZo$RH!I~$hDJBs`4#{!vOoJGc z+OmoRVia|dd4FIx8=Or;qBQ(6(VA1zfWRa+Bw_?DoLRq&f*W=Pq0i?eer|70kB@^n zCua&5#aNY*-0^T)Yi9F@f{q$6o>hPNu=!#@HYi0$}uog9=C7)(ZtgZa=%8*r1Km-bj1#TQ)0AH!V*0p;l)QZ8XaP5z47$ z?WR#qhRODM(-jmTihy2IeWbV@Ptx52CCa%QN1{T!h>{^{`$7KG0t{5_ zu!dg8Nj5z+x*v+fMqTueEV7{yLSEDu30`Scgoa{=?ZW0W!dGVP6ykLZFrQ2YQgI!@ zQa+k-jtVUt^RzUaw*$brAoySg+=oO(2Y`T}TZMG9Zl=5RIV1absz%T2f_L2cg_YX!U3V>C4Y@ z=-J3rz#Jpm5~1@Zbq|+0iMdE0mwO!25@K`y=LZoJktyxJc!Y@$CWy8pR&{XT<@GLx z4vR$S8|5~6IZ#odqmlR^JBxJ4M!k$0$p77Afu=I!IT@yVWb=E-7T|m|>-IA^bpNz* z^(=#Z_0m)o;~?HHSWqAoSqh@!BPKsW5>mdI@;2fL=#hT<+(><)cm(y2`-Qv6h@sIB zz9*p3F)LdYYks~g)~)(MWFXQX3GpdgWvKs}0SQ4Fkv8Ekh-R{d^xpset)F@`lO9<= zl6v|D7GMs75~_H|Zte1@IzG8Wt1|Fu^(aa0_I7jI{z(rv?CF)!(Zjv=sfV6XLQ}M~ zz+^5ndX> zg}9I7&_BO~ZQCPZ!^HAffgG3fTyqR5O(jzIJ_MK6vN5KU!xq_S!%eup((f zu#4nPbpNUcreRc@VS|M)Ray40;Q~s>v@Uf1@{R*gB}>N`J=`URqhl1C%}Ipibe=;m z%c_b=ONweBrzwiL6pP;@ z>u2KuZ^>myOc}nagayheEEQPsT->X>WaPnV_gRs8(|_?kGpMuP&j=7G%2_NwefCZ_ z#%g6`Uad_I!1o`VoECbONx{8l(*v3keIf0IS0L;NRVX4wuJ zy_<=GXo{=}N51lAPls}2I_y1Vf-|+Mk4%0ov@;!yin&$DacW_Duvf%&qG%UDQ5VeU zsz5HeC#%mY9b8facFwsI+mxfThHH?YLsZ*yr#=3JFuE1LADd!o)no9Yv`|S`=MdE8bWx3J*9EcYr*u+$;pI(u)pK61`{)CwsIy>U9OS zxj8ySRLKfbZ0u97%qznCo$?7)!O+8CLApRZNdAO#gKMmEhMifjKr8BzgMm>{vXTmD z_XyQu8Dny=)j6I|bR3}ZIWc{JX{EB{mwwx7YBY=Cl0=a#VN(`k5oup6XG6CvKM-&t zR2{z7-V6d#S<-uzmAm8H3D=Xs<<;!9?sD9n_lHxq5eLxMQbK|iz&q9JoClpWSFTVed57gXL)23!|UL-6#$kNPB)HmHzSnF2`9 zWi&D>Vqi>x8k*gEVEqJ&UME&=;EqTTk!hVy+#`DgMzV2b0Lr*jnd793uoD#H)!g8k*ieK!JWI77chw!MFWs!TtdL0|b5+#fvXO{bCe4mk-17F2 z2%KfKv5vJ(ob&!u!YK&l23=vIQB2@%n5=Lh2bp#RmRpb~*6r|uLmI$#`{dZ=Hf5|l zmmpdt?cA!;{BkPF^aChFna3{gURr7nsAD-a;b=!t^uROANXjM-C`n8UWELD-V<%@{ zQY?MD9Ob;LV3LNZXG;>`vIB(rsnb73rmChz8n$8AZS5&05wnZ?Pg3HLCIL8BgH%5f zaUoPH={Zt)>M3rR+a}|1{uC~6Ir>vJ2D^FqcDFZJhG-OCGV7$RdneVCvsM&1axiGS z<{KmRT`X(G)3Cu~NtA$2T$m1$16Yl4>$w>FA^iO6Jf?;~-|cQK#GQ z)b=~|h?Atmi&wGDrehL&1&UJdk@XXhI46gq04}#*rwB}fJ>!fX*SI${DyAHd|B~ZB zQvktbyg>}t6rmxO>~nb=Emmip!{g2&4SwA$(Lb^}(Pvj=gZgDgS!6}ht8bjnyCbZ& zo(<4R=3`FN$;hs*hQIKb4dZgqA7jFJp4y2;&nJ^XNMF`QV|RUe+>F&Ndl==689B%L zO@Heq25hfCnQ7Ob9o3GWzZ056Jd0M>kDm>$y0MXR%t`*^n2e?^EJ3fVhG@lvV}{n^ zT-x5c+t@x>EWUWT>aO;8e$R*YrZ?NKstSgL&Gf?r0Jg&RYcvnBYLiBU*H#!HF?KG( z*eRrUXVihTf=eD4?jNxM5V39U_l0+zv8hl1<6;ta3WkPN=iHE9W)G`&=0T(dzfmtd z%?xR7Z}$dsK6K_cZ81adJgDMnk7t6iJeE1@iHt&JwO5yh0+YY_RQnEuGu2h2$147k z6@Ese6;V-)^S|7KXSRc0k)RMN1=t1{@$kKGMNQWeWi)!*!vSR*r)HrsvsbiCrG zX9WjbvPK06i{8Ra?F+<>(n$pSnOm_H$pg0&0&Bi^)=zv5*_L#d?tX&!-4hv6zF*TCVd|ahvAu=26aFuhR7M%!u8i^fv4K7z z1&ZM~Vot{SCo{jL+a164czAxZZW*K4y0wkdnT;q(PNw{z6OJlLyM0hsCWj4hc+!qq zaj3_cvh_lTfG6G=f^VXGgqbqyS+*HyG9_CM9B^frsp;U7kV9HHY-QN7*@9w$aPHLB z_3iZ+`&)$?^r3y)RbRMXKAo-wx8^Pj03$_ulnYup5=!34nUYS4Udn4Ra%P^#|AODE z&QkEcUY!<&Sdb#U)9jjWm$Db z7(n#h9g#gS`ovM4! zwaK2~kpwE%_o20<4l=ET773t@zG^iky+kH%bYY1w1#zuL;WH_$cuXc6J#*`0h94O* z@);oVuwlb*9UmPCPhLJzAhVJI4vXCw7&r_gyF@XVrA#qd>m==2OOV{}du072-Oa8*P-Om>O44B~jq&kUM_6DAO4)T23c!x@d0 z$c77465vR2CS6ai8mGj2t=)sg?6twx)6r_@J3n$jsOEF$%X6)@y-K^fP2eWScHzGG zNe_sxsNp-ZU2*vL*usf{s;CS;&`vPK77Yxwsm z0@-Pi8#BQI>?9f#fKC0V*T}`K^vYr=x6`}s$966nAw}?ym{ujC`aTeEB56HDN-r8^ zVlnc&Q%tQ!F6QL)NMez(3S3z!1YH-M!XWTTE5fiMZa)|aUZWmjOkT78;3Fqt36Zqzvg(m@$1qjOgi#b?n$Tun}Pe zQ!X+-e-lbre9U8SBgzX6Q%%QAp(!O03^Np%h*To{j3-MjTd~E=q4d%OmiNl~$xE~I zcdFaX4ri5cJ>62%bK6=}|cdMA5UYKHHr+QLt zF7|7?i2brT6|-j(Zm5$iRfFe*5Ook!P;?S`V*2Zu5M}qE{60BG6;VS|FS)61la{<4 zaf)8fi2%TZfq5<_o3D^ipWErKL1y>uX_T&-qfzHqNoJ-GS8)rx5F&Ub%hm4`20fGmK6h}zL` zRQmBzmb9|4)`ICfS2KPC4v1%3JOz?(Ojd8d5&9UkD3e9m7`VW)h6we*2a^fgjy6-7 zcmbox%+vpOM3m)^RhFbN4u=`MO?0(qQYoss)AM^vCpK|1gRYcYwZ^Zz zk(cU?R>KJw>aF8rXR?EL8}uK-PfSh70f%6dvIqmR@B)hXcPJSFoU|KUnwh_FDl*jV zea3&qrc!hio3`9_hL1|2o{n)YOvl(*PUh{*R(kkEdu!>>0e+=U=~@MQTVqX!&zC6R z7!Ohrk_5(N5kYV^8wV`x$uxwDM_^`=He=*-*{|Mbvm+_l$TaO2IUs0XiX$0;1hRI-CM_^|8z1%A`Ez$q7Gc5KN2|{KZqlm#TF<^&cC~w4^gHvs{{9s^k}L1 z=V18}1i97ew3ULom9E68RRjkn+92=*-P-*qb5dig{hnZYE?UG z7d)%*f423oHtj73Rh&;Ooeb{;l#L6n2{$6>OiaTTN8*r@gwi9>czcFEgB0%8=y1lS zK`gi_;_~){K=ZpA|OP+(k{;2R(a zBcX)wFz$D&wNB=4*xw=YELOx-BvBD;r0^Kmid#b(%gMEBWJihZJJwstf5=_MFnadf zz0<>(4rxrp(?%f+8-pOM$2~hv8mvV?TLm>^GFn`Bo%zc5y~aMYOdZ9HC_P@Y&-L9~ z)8wA#3oq7=&yEz=ikfVdY?SoOlqbMf?f$k2sEgBvJ!ehX5{Nj!GgPt80=KBe6-10s|M;y)UMAxM2$F;R`uZmDtd|XVy=~N9`$- zCmuC+)?^OK_4eYM78BUapQ{CAGU=g)iAk}}?8I0KOdxJN?3$h;B}foxHW+Pq-zC2a z{QvBdz-#=-ShH$fZ|XJRLZl@I5%9NY8pl;6i&81-vt(#+Hkh72yKY3WBEz6aab8f; z+jQ@-kY|tHcx?9g=oDumVwP5vzdh9bg?#>5RHl&E{8`I$^Udf|L9CSi}A9h=BYixv8Ts3RD-OqLHN#vx`9>V&);;^Y84 zCiBBKGa1wi|3R2_$pt0ujhdMj;Z6;8nmn1WyZ-KI49+SSMY0uQv9Uxc?NQZ>9;61f|0?lLO_yQ>@&UZp%Qx4fCfNwW>zIpTuZ)0--}5Nz^y8Li1J zmyxPu|7(L%J~;zNY+0j^v;lHT0uN&h(i1;2!D}&1hEIPsURm=P0n30i13l;TZUg>^ z3x!^iCX2{iesy~F8QSxY;n;dB*nzspFLh~=AuYauAeID%z!vywrATrMgafkLK;IXa z{p;(otRyaS36ZJYEVUSBA2v6Ww^BAmYJ_ru-dOL|yyeg=$79hoDC9HxQA9hhy@d)URSSAFDwWL?CH% zNmqa@F)%eu6YfgU#FOph;FY7wAj*w7`J;;IpE>|03b_hVImV`+k;avTy+1701bb9^ zg@6gVlBH||(jWnQU-u5{)swr18*bWnj<23FEni&>*5}42=qK9~79suoZ9Guw6)=_M zVWX8s!#IN3X;7uk-4DQ72#BJlS2E~n3d(!|4Y3)GGmLCRMG;C%U_%Ecrf@{b;5>z* zm@N<15G50kMUEW*3B59jm_pD{)tgP$UKF>ZdgxoRq{;O=aI{-JCL6tY1wzg!C<+qT zN+y@rm>atZni1YB_(*cgElMQT--s-v=#$k$$0FWJ0iH-6@V(5a2|q8#T=Xqu79=Sk zw9#ctk1FL!@dAnXk{iIx&Ny}eo%OhH_2*q=7S%d0l7f-Si$%M^P-M01F2iC)N#yiw z{z$?EVkqJp!V?qW>1=R0xqO618IqW*5(uJ-`W{<9r}vLKcUqk@Gx>Qw>P+j*I)QDC z21D-y>k(-yLQ#TOIj_@LksTE=D?yQ@p996@e`yL}yN11!#vx6pO69_k&t&RMYVhPS z{hG96ZJtFt#ySVfMP&nG;zU(c9qvyClL%E#Ifdur;siY%9d!s#9Xd*A8#9aQoOGO3 z;px!MLB`3HmnlcI7NiC;#8Mc0%7%gzA}HmpSdju*3V&62x|5yn`ef6P%B#=j7xT(d>rmZ8S>krK4Acol0DZ8|$Yen#WCE;Pu@=9i z0OAYnq`-;Pmf5r$ZT2FMy#l7|aF|K(jTSTPEms3G_voBbpwCvz%1ehvMm?IF0y;lm zqQlFF_W0LW$Mc@;3Z% z%Uzuj6^L@mTyxQ6L|0PsqUtRWz8O& zkD|RF&P1B>f^1r^86P%(BCjufQ?pV^oCywn8!`z79(9h4WKUqAqRE+~J{P|h(ci@;(u5CG5=)VNV{oHb5@skg)0QC~ z8F$rLad{w57(pSW1*VM*ku0Wd8P>Pd547?UtdS>E+cGa@`Q6YHx=fA$MZGh`Lf) zkIa;i%9{Rabj6R5+EPqn!cecZP<;%MVTqu?m%NzXM<#hCpWq`F#5Tv-3(rG>g>;2k zD*KF?Ih>=rx8{IeuSE=ZY!sE+7wzV5l0FJr(et=9t|D2>&_WW?q!SSv#Intdz^d8a ze&ylh$p9SqjqTxR_3G8l6+Z;B2WrdZOv(@z1nq&?;Vf^5MG7jBFv3+au}i-v>r8o* zgjQ-ho)`)&h9YtD(1JG1Tx92p5tY3qk0=Le!OR0(q#GBefQP?)=g}nWJ5F!X;8Go+ z;WwKdL~a=u1m4mtMlO!Kn^_-&dfQ-Ur=gpYJ)$A)Qnl#Q7tc_1*ib%Jq}L%y$Id~m z!EGKxfwQq0;AzkIApAY4PB_)>T2~{6Frt2Pka+SveJ7HEvFiy(F;hCRSdiJEddsv6 znI`Qw(H+gyL)$pSXu{1;{K+-sD9# zLc9`#O_nLIh&Y7)o%v1*PrZi5Nugx8l_omGH7u{bma;9f8;wZz25344H;x7n-2*}{h#T#eP(W;rZ403OJ$Zn#mN zO|)AY?l0OT7uP38NBUc+(hn~vIpS~AMu802f;L)>*;-DfI;Tj$f zED2a_NmTy=B}!k0w^o5?bh>XQ#ubqEwP9lo6W`MqKnf*sZN^?WN2t~$tDt929=?7V zR(9fAnUX@R+^NtT6VgNSO$#uDV)O=V4vZ}ub2GD;jfl%=IvhbFE)V)r1iKliqc+5= z$4}xLX~+UNWepjf6c90s^oL6w7R{LGf%>1QAr^=(YgfA~V2yYr-Vwco=f{4QG8&bq zU85$G>#-`-JMx6f{Lq%iZINLXSdk%60BS&$zeiQGXrhFqi1F3TAbnzZ8H_>@E~c)Y z?W`B!3M-y8-Lp3?)0HGXt)ij4^xj)PQL>`OYgI(&zUEC7v?KB!22`9nLR-NDoHmI=Kd)7uCHfGIfZUH8&9Sxm?OVA}$t0IO1)^@ktjmY$Zz?Pzfe{?$~76>hq81PpJm| zz^^}>%x+%2THy(y*jk7617urRVmu{MT*Qzu= z=;}4$FV3$#f;P+0Y|daUH#-YAh3rAnNFPu9E_WbeaiC@6GkIT-*N+3ge??0!qlIo|3}fSgqOq%#lVv28qBj ztu%1r-oENSo#^ap4cCatsh1xdLs%t`TL+Y!AquTpr%g4qbKQ&JH&4O-Wid)m4XaBZ zC+2Ct7tO*ohobr}0qCZI1%}r-O_j!8lb3(cX^Qd^4|1{n8E)tSE*F0Y*n8yo93508 zr@KdJM)e|5zq{*6uNI@sen#Fb4&@e=D4!gyXivu9qM$;$TsESY{@@gmVDW|XoAb$f z=X*cVnW6?=E*|xkLKxniHal#q5N3iXL}i75zinCW2jfK?J#04f;f|gC$X8|x@*1Dq zkl#wU5MMn_dmwHH>04LruJLei+0Vg?DGA)SwG=kf>Fn~nA7Oms*#OKa5hkrpXrx%O z2OXTz$+p(oM=kkGuNOUDfg3K!2hLVCvMBP9N6cVeW z()Nq0Jl!QRQHwDXon`PTM0WwsA)uW<8z|tz-bsj&bJXFn#3lBXJf%tm5D}ZfTwY&Z zj7Nib5U0>6@}VI<1oDV(ndVKw9T=q!i;$mUK@`ft8?Eg`BBQ8g#nW3>Q~8-fHw-Mw zkwzXJ=6S%^M4inW_E#p5@^&Hy$WJAMp!i;U^|sn7x<94tM9t{ASth`KiZmcBkW2y(!m9 zKP2M@qZv^XS*L`tOdki$c+ak%dOO74%mYQV3MYCL7F`LyDVi)H&oG)&;jm8Ui&viX zE+#93WOt5Q56}CtS&eoKD#76)BA_|f^}5x{U~5b`WolasZUWBXFcFJNolOptkAe`z zP~fVO(`YfKa8m%|51Mep4Lj&GasgO_NEQ}JaH(Ccve17gae4|FE>1GmzT37kOTm>@ zRe&KKs}LMSFDHMQ8jf05h>vuN;y~eaBQ7(&*Vuu%z4CZ|E(`d_U)~)JmtPufKOQaX zhr6d8ygDAV)Mz5h;Y`cqc^Li#Q851%f$ROY$~-HQxl-nw8L6FLpFgFdleU+qn6~yN z3aH@&vLG;yBrtD199~~xwr#=mz=4)1Ygagy-eOfY?2HBF5!g3*40u%jG94j_is=B4qOBc@m!>R9zlB|AJ5^OO zl4_!*2qA)Ev^D~k0Q1GG?P{AzGp|ENj#0wnwOT}ip^5HVRuJBVn?!KjCW*Y)JTZ|Q z4HdlutXpRbr4JY_hJH*t$#sWgY+QmeLTvv6G1!X|mr%8&K#3N_hJsO)R-4u39g^>b z`4;o}s1;1R5%CPHQq=DgH6T^t0>)7yq}0P^^#6-#VzLi8$1!qL6j%cys(Wo|qcYL; z+MD)f-SZU+Pu6G+SarCX4Bed?K2z>xf@0adlJ-~I9m-1pq0H691FG~6I7s$`Z?{e; z!A_Jv%7*|rYBykb+kqBUIM4h&yMAo5THWMzv?0vTIe6`&G*dt*#XB61MBLfZc;iX$ z{Hot06S`RKYgtPor`ajbos!v%F?n1G_NsAoVltJ$8>Xumuu+$hHEjBhY=Tm(If*+& zCHBkcQDxd2h{(X7;8u*pBV*(mqQUJvhT8KHXx3}3dVQBzNuiL4#F@y!50o;?|MfL` z!xVpEo;hP8Fz-y2MEiqtE66XK+0FW~FA5|7eiNZ2)SxGPN5AizPUZEVznDLs+&1e6 zN^Fr_8k50ndC4R*`t4BG0ALYeMw|))^EK7HZ-Wbbzr2-wbu>p zWLhdMB0xN&%SB~qMv~=D=FJ#mpxL$t-L6MJo32{N4LUXjWZblDk!`Y;?R#2Q(c0T@ z^fBBF+}Eq!UJtM-<RuXw`wp1^yN zG(L!HYvvlucmj4I9z^z}5TJ(NYly{}JD1KlvYpIn9F=j;6dLiOaYSgCq<|mJ2+z1d zWh9z>RPiI79yX!dlDs7A2yHpoX7s;;3IH-h%hJ=qO4^z=PY(||UP4JS4Ycsi0t3ZK zKm%-|BoT|>%&@aTgVPTPiJRmx{~?%r+g za|)9mvEC}d5{V-EQqz7P@Rb*^yQ7|>p%ih=j7mgDx2P;-C>C%N^1W{Qdb|JZ+LLEw z8nsJ}1IKvC`4uxYq!}e~Z0aH7DBzL9-DmYx^K{d--r1@)I*vMB23O2nLxGv4o5Laf zOHrWcIHtBtI*<4$2iZHYK7I9G)4N@M>3aLA5b!-;-yvD3Bk+Ww7_RbOtm#eJ76L`- z=*?zN-d>T@);1?9iNrn`42|5-*pmpTwKJnaP30Nmuk0*DwfNLYcO$(7v{aUF+2mkBwlDoM z6YLxp73KY|vUR_DlKRuW#f=MDgSGa_7E-rx5QU>4Sz7<;VgwJ5#3+hrQW{g1(E4$P zWU~#oDxJIcM2ye@Lm9#w$*vzD4_{IcMmSU(DwarG`Lti6GAjP{Uh6qI~ z4oTg01oANbS|&>iBh-Qn<}Ygl6Uv{|@cCx>VVUzy%RWXRTBPbTPVI*|sVV91TV3_I zofRfi87eUARu9iF-fM;L=n|r0n28p{!qs+!m_320QpiV>)BrfqD-h8#KE!N? z$-3Sg21DBIg*0P(AMP(jkj2a&s4J#MwU3>ao`!Xn&D@`LyYuG3_PsN{2q6d|^qk#4 zHBHrQIUy-7Z16e4Wf5sKxY2uhop4;l7UHYL^gdd>TZ~l!a@TzhHmf=}+x?o~r)Ld& z920&*bldf$Tn1#mMI?b3VSl^|+wE3npHeS0r}V2bj8WFBTdpcs*v{#(rR>LjjwDTYPOZmk1VNM==<5t7P8T#=v|d~llDN*uof zuoo3};Cu)nf=33|JoJnY4X*lf>0x)4d5`3eQ6($RJYj}KIy&+JHIFXhKzZetZ-1f;`4Q8YzBa zWlK5*6^jhalO9bP6A2apV?{7S!I?mD#6c8&O!5LgJvycD@%3Y6l%BlS#&Tl^8tey4 z6*wOm&)lO4q8xjOXPWjgrZ_lmRZoi_DW$w3KogbTC1tTVvTbW!g#>2j$)GclPNrEI z4>sNQ_GSLIy@WS*FD0s{tT&61*-aYx(c1S8bPAHaIn11hMo7c%AYnI|^{yg+60>i+ zFYipEsvsz=x~zww%f)rKxDRB>Z0IfW;ti1lYfsoY-kV8b?E1&O+0OTTU1QQ+e!jbU zL_v6eH%`muJ;D5OxiyThF1f|^fI1R0ilC+bRa@&*38a;}bBm&%A%gQ)9h#fbB~RiBFgo3}%=)N3lB@fdoUx%^ zk5i3`?&bYyAgBI|sC#@wV^fwUe9FG%pa)(|%dyybY6F&U0ZEct^@DQ4t@((LqcLIB zM7Jx5$iJN5QBu`U4x=%;f#^rEvPkU^lrfB99IObe%yj#NjY_Y7`|O+pR{H;kvSsa< zTdE2;5MgSSiG#RWMbHG!lb&b>>7vf`zl!yfBrZ`v2%pAFHq^!>dX6`BJ#|3QeZ<6Z z8|u?$0d|Q0W_){o#r1`-<^Fyg>CrTIci4~se*i0}uhz0+u()7=Oyh57LD2GOl4EX@ z+tcqWbD!u~=>a*Rg-?^bYoPaDtCQ_)U$+~COOQkOd#9S7&w7t~(>?)GxdUg%2}1g` zKa4IYtI{z*#|x3-p*cs>WiwgC31hQ<99V1-bjwNpD(2!%UoZu#Jb7KdzSgddfEvZPcC z5v5&oN5U>heiaqH*t0g{(_#dx;eO2{GRCC#4V|)#sWNG~mJYPSRSz7k1(IEBo}O)0 zk7zk~Sh!Uo)#Bi8JBXkoH>am9=VB5cV7OG47;A_=x6Rg(ND)Ld%4add?O(-nLGCGqgHA=IguL;oeL@YbU1C_ zYZZYbRYc5AQZhsUzo>d<0(Z)!ZnJ5VZ6Ye&NGKvukx`;he2R@AOh|UB8MBxMme4=) zzQRqK#P=!93msz#M$pcT2^FD-P=JgusBI$OP{e_6Z=YODA3hz3b@%RelwgP{hH2fh z+f51-AH?-&NVUQ^Y1%H1%hfdb>i;^{kK$bCJl27SMgc7treOcW`Z17a4yA7?cyjX) zG|DUt;sapHj9C`gO0GSFntLAIC-Tr6Iw2{$Bv8&&YD-~EM;g=mY2G;w=Yk4u9ILeb zB)OR!ODnw+3HH>m6M^HLH&iako7hyraabPf;)W}`laziiXZWCWi4S zV;J%$P!<3#%BF-uvo!T1YH+D)GumODyKqFd*~#d4))bNdX~( z?jcyh`*01@m< zejq-nA@npq2#^=CTY^@{;PK0H+Cd z|7%%4(iOQ_s5==336rOg-(+ppPpy6EXlUQ5*D%~NP_5KuvRRMRMT)uoYat&V9&0+5 zu0ry?0}`c2?F^(u#918&Hr_UU6QXC%J8i^w?Mu=evGgXL57<`SbbtY=S_0$2?dAAl9I0 zq#&q_`gn50=yBIvsJTE{Xd3da3CNryH=LS?f5=oby@g!)PrFpO zf{6;=V^c=W^>}W~rLvysWY|B4tvlxboQPLX7<{hC^W{a{(w2%Q!(L5!7JiFSJ~3NV zit$Fm-xe`Q?^}{UuB6&-WnV?B)du8%zUp3&E-nX=aE@Jqy{j_cTZ~50b4<_XW~bVe zFhtlq&Ln;%ua69z#Yw`M0Jb&J7^U`5If@Nt;$U=8_al{(WG_Z0@o>`BwsLcbhoi|A zfjv%W4`^Dtu)e(4u7iR#F!JMpbx_PSM|tTv?O_etG|UD4TJ|kN^=f!UnqN_LOkI=y zh)5x7*BXXE!UAErBm}Y{%b=np<8X;8B4u8$sBf#f|n|w1!g31CtXoh;1JiSP$BSbH(N7h3RpVc2i1s8XkEp+ z*7~{3`T^88n8c&l#EZdDf3&^g-L^xW$P6U$TC@-n>&_MoFsU#l{yCUdz~y z2!pnkmjxosOU3XcSCy=pOH;t?;Hvnf2L}dQdC$>$q+cE#x41|fgbNMPMZ5M$*ynv( zOPS7aeS9lqmNrocC}ox~Drcz&ofA>w5ge*D3qV}3`F%fDuX;Hi-&|y&beQtiOc^~< z3Ww(u2K>A0XVm9se{-j{g;Ds*(>Z71%3u8#o`3w-@JBv7{>*Uie!Kcydw+X5ws?&& z*Q(O^e9mk#T=vI1#tYqZnkWrxY&o3m@kYZ5H#sqq&8{F2ZgM7IELUTV)XBPYFVbbl zFWg6w4sA~4hzXx@3(6C=rZlE-O(Aqv8qz)l3H478YAKAz|(b}rx-V4Ww)U3QZi9Fmni_d5X;%> z-;59WXEo7Yh;3}V0E=*BNOCE`3!@vwPYBNBZ8h323Xt(Ak}5?gQXsS7!V!w}NK(b* zggc29Fv+1bH9v+}cvnatQVbSak=u~>MhHIs>~#-?A=(TRM$tJAZX z&a0i144=e^mrFbi5av4uHTI@lBlX|4LB~2bB z5Y;>BeKgNbNSi0SR^zBlGh>5H8A0TfZ%y?0)%BIZg$(e9Hk}B$Zrr&ejrABQr1u5{ zeD^y01adR}<(B`R*N<@ErSBg#L%F%ZUY84YN8?EMBlKfTKo>ig|_4#qU6RQ2)ch@qjdf+!VP(J1q% zE~TKti=iP=#)_vuAj1(^XF7_rF-1MhD#67zyB=H@6dE>_&EU$Xy^H9b`;XPFe2f}| z$L-xDADP@Da$37(?_+S5!BmRoz2 zQ6X;h)W`ZbfP6yFTjVRZ%|FO*%=-nN&!4w7c~<*%i_w@WzSpvH0IZ)SXU|xmUp?R2 zQ<7OkzL`0#Pf&U;eVu3o+POaC?Y7Tf?bdW$3?ljMB*$}AR?YT-2a(@$%bSUTvoD$m zR4UhC7_-%mnde-F2FE(r=3|{i?NhcwI4LPw*#HVsDK0E zlf#anKF$PNTpDAq;gO<$s-$JAGXijbkLyR?r#gr*3?ty-44R!~PYy3# z@PN%_A}bw*boj+Y&l=DG6c?jLj{2MNvz``A6uxsFgqc~~Yn%&OT9Kkicq*b=Wo9g_ zAFFrTFB&HT$9QDURCZJ(R~ki@LsT;|GRcx5 z%CtJf!a-_+)KN&Tf zN8az0#+&3Vg!y!IBXM_A*!a!bg2x#tIK8)vQT?dn&sSIH`d&Hq=EJu~H{btH{;m&w z@CBybu^!6YrMu6#7_v58gIcSvBu6-GY>WvO7{#W0u%1-xkz2b30c|{i(jayhLD|!2 zi#Kz;OhT^`-Dcx%09;$J_|i#|HbfxV1k7(oAwxMmT%cXQ8<-mej<-s|1*0)gdJqm- zq>*IBlKgTC05Uz?9Q(dG+NBxnk|-7>2?<4pSTg3E0kw=xY8gh#(V4TcTnHCE#L)1j zZO7mX?h1&r4}^6dhwTwVl(0flp5%q`cPx5j6yh*cG7_?GnieVPtC$qj(EHDTX0(^2 ztbTLeGWS;I=*0GzdP%u+hL_1mSCN7A%@3BT&8Wuta}?z>S5u~yWU5iD2m@E99qzgk zEo_sbbeQu{2j2A?2sd86bNdTlc-UkQnQ`r$ivRywKSXpl*K8cGjOZjU&7=+ZfOcRp z%N+Cu-6vfGR1vc?c6WNzxc`EZBsvA-Yn<)~X6-g@zi7JbHRE%X)ti}Pd!$xvGnKQ< zyv&0m6N^JG%_(eF6!u6BO(^OIkEc5`%4IkP(#t7f%wc2ci)Bs18f2diEW5Up1^ z8mKW-m8q2Dizp;rkH_W~<});b@EK#OXQn7BngGwtS_YHEgohE&Xp0=5MJ@Ms9d8y* z9Y3-W@hAg-2vRO04&lWnGNwRwCYLYG-u78%InG+QyqZ*cgf@@25NPe>NR^I1xvG;(|5F9 z54_qab7Y(E)sN-h8?hIp5xxxtw_j`--PijNS1g;^7&tF4!Wg!sX4jXoV1Uy^`8VBT zqC5)S!@B-2wz9cbGdyV<_+1W{{9doX2PztgmxmY<@~^RfBI-WbZwzp%$yaX>DR)b% zb{jVwnBp^9m@O;SXgHcqkwQB~B6@m08&8tPo*ZpQUn{J5Jw;3|a*5ap6T<5#o=lL< zu>db4qd3Nm1%ezBv}H!+?GRXq;S$Doe^S=ZRI!a@oVSdQ6#*f}sfV#1MnhgapPaR4Pw1%r@fo?7zE9Id`SC@Unv*t-NNOcLXotGYD z{W$hU-L3v&s|6!I-m-~;CDxe`EUzzjT9W7xI(BZk-D7Hp0!S?|BY?}%av^%o5am+T z5uQ?CTR-ytk&J+)m25Q4M4Mpp>`AQXclT!dbgFi~`gEI%@}K{7|MR^?<*$DKbC;9# zkGwMZ)LWCI?VA&o((cyTDbTvM%@yXLq4b|!T_(?u;UOeQeZ8pfu4-pTVo(3PKkSVZ zjK@b{r-a`)_pNDo9As^A)S;hg$gI@5^JiUjH?LV|p;Bx!_HXy_C9-NOQA$#0hsoru zjt^|ufnH(l_)cNik^SvoUXG8BYgz>nFG^(+DpABZ>PHr>9yn=74=}vc+i9`mtqROp zDJELDzB_oYHS>zhmWol*Yw&uueEr$1**rXMyNdnKKNeDXBL1tQpr zot}6c_vc9@h7by5?6I+vM@47k`eLSH^g=Y$qg zZPvZcsc!v@vwrN%+Rm!VB*WQwHJ}RVT^q9tiQwJXO?FX8Xn?`2pBef_SwG8*zBW<% z&DIZ?P3!7*-xCf^T%i%)!2j|3DQX4HvwJ{yA#Hel`7^JcKXb&7**|V3%eaTjm2dv&R0xPY&0wk+b@a7k3tWdlbbV_m<|43^lY5 zw;RWGkhpamVvNxMb*%TV0}v!CN1Ocv+SQiR4bD&m(%6b+#O&tm|={EADCu`ieqKqLFhWHcYJsXVGoe!0EvYRi=$rb zcaaGMEc1&P4+gh|LaJ&Ge@|>ViBEzI^L88PG*sL>*2sSES7S`OjS@!R)QJ!DQf}>B zjb@K7hX=t;H?mp5^JP7;f~#XXttU*Ptcp6x&qDLvZ`Z z)~s?9jZ%2#Ug`Rj38rWxrlA}?Okl)B#0vdZ26}in^{TrlO#~96#73+uWM(r`#W_1& z!`bbuxaews^Tsg6h3()Bbi544sRAr?5>K&DN!72{u^H-2M~Dv0aQ5zO?_?~wkK@VQ z^r56(O_Bb$baASr()vmnFSGI?T5oCT9frBl+a0Hks&G0F1U3-Aelk(!%%u-nxINl6kTw(dNTlVmiN15(hb z4VfeyrMzS)L{cdfFkf;j9!tQ><{rJx!Jav_?U+ zRY4T;t!b$Mpw!Jm*Zhe8wA*tFU@vSo2vL~Bri^#uvFNn%J^7-K+|S^0X1Ve&GZNKX zWJdQ7Js;nkzRsTUwc_?pK4v^7-anatb0y_k@_sIcRS1#L--k`FF8qz9_-(43`7@v?sA z|Fi4oT@IN3Xx5Kt2-qPfV_rCX9?L#X!G)de?A3IRlzt(QmPr}yKndMs)a%QIHoRVRAh zL~&VXM)i1&mVXdblTz*PGtPtMt*2Yx@U_h+Tl<&O+nw+F+LpuW3zy4BhU9OTwe4G{ zxQ*!qjv!#fq%iYxAX~BX;S?h`8HM*}gx+v%Ja}E0E>vJ1h~{M2_g7&rlfm<3@9j9c4d%M@yCS^xg*Mk~;)}1|j zS(3ofI5-gIwZ45;ZN}Ib#kxopfoFYoeBc9Jr^7#f9kWT}_)eKbsv%1rv>0r`GyL{c z)e3GsFIVJ@?oO63KYwZ*=E>8pBhC|Z=-WsFk10_PC2mE*y+SXKX?ldE0~+Et=rfdg z+}+_d@wGaduw`Yr!|#qx@29u1njNYSUD<5v@3r{i=96i()H4|^w_j!p-7&6#@h|bC zH>)VPpjz!l<-J|oJtk1s;^icSptVjje6Wb?6l=g-<`(6f zH{ZMvJ-jj{-oC!LlyJOgw%b;!USoVIONT3!(Nq_TNfP0(3~@()$Pp!Bg$9MhF9F#X z8g)Ye#_<}->ex9ss($73d-v}hzA@Q8=PdktKH8owwqChdzSA>-S4!K#f}y<}oRGhKZW z!)8tL3?TWAGy-8E*z%zaDr~~y-ItnPcE_EQnq32d4oh_~dgJl+t52@K)E!-n7L<&| zvz^tLcZkOn**x0|18Tnl+~GU&@Y(fccgTromf?O-bY*zeM>M7dqmmB^&**jYNc0ru zp_|U%#>qV`@%Z>m@t-Qg#rpj(p6SwE47X(XdWC7vAoQ-5OyD{Vv}TP(^k&wNX2zg( zPO$}qv*~29Da>^B7tft-b4GO&wOTt=@%^o8{TMRo2kiWM9Yj^D(5tg=)=LaYH2qoz zNuoq+^+MX=d{~rLGw{p)J35KGBHMbu#5QQ4guY?`0FH!7L_t&^aUjbaf}}Al%}g0( zb~}(*NWqghL9g&T#f@78s+Q5!@cJT<=M(%vUn$ZRamiX7_#T^qk`Zu=Ab_w=^g22Vsy&&*T=!MXA$sX&(Z6c`C#|nVloNnK3Vt3FcC2Dcr0~sF zCTTc4Rzr33n}#m8Lyt=L*t@&6qPqPBDKGyoBF^kF04VipyH>+@iCu+h_JoqS_G%*s z1E0)5h(VVTR*34&SKZ#^=tO8v9-FgwIC*wGyqL@$kEd^)4^hUfx)vmhCRNC}Mb9Hb z4Hc!g5$}gjuP->$(&;Jd2ZA!X>hYwteq3`2)0}0hSE*)GW!i6Ed2}&&(wlD` zZXchbDc3m}U_x;-!;}q+{E+=|W(Sip%uUcx#|d}7z_Em^qzYk;YZfV!BaCE!wWU@Nu~VtDB0`UGzVviGn~V%m>nP&x~j zSCQy3%R=K_c)p%2PuhH0>p>aKf#^GCu2D8f^1N9*QIKWBd#iO$EQ@d)m&+lw<;BfQ z&mFrv@z@h5^CU!pqoqU6A1m0p#7>CF@bQs3Vf@6fZz10Ppb@u^rZPS4?k< zGkl?bKo&rl!)VFo_V#c*Y+9~ik$eNJ_|;1nbNvw060xOu{AD2H4+5C zeCynFdLdnIL=cLehpa|g4L1%;H;Oar11v_rxPdk!N#C+0q#k~0WN<~FXq9B*-$(75 zytc)GO3ukH0JbC& zX5q+3kp&Gf=jM_@qoh)7bvs+UAwr(p+jamJS*%-hXw-@r%S?<#Zy6yooJO9FovE6^ z00Q(hquFo>{wRE+3JnP)G#t+#KV>@$nHTQ>=D|c`lwNBk_q|zPj%E@)@9w0rPvK`X z-x2Xhxan5q>etrKCWpNqFDQ4OwrU_!C1i%@_1IAr{a8(lx;V4*f*}mhITmk%{Uxy7 z5DprT$8Wv$OtIW(cMi6gg<1);RfZe3Selw;Xm7vMQ49N=Q2bKH@QEfSmZ7y~t9I}1 zk*BwnemO`EIH(XzuT~-%u-Ts%(^!6zz$&!v1GFKIbu#ox7@u)=$?~x?{B_2Z6a`uI z0`k`S?%}%G+<$$z6$Rn%`FIEZ^jiPs$!O&Ok3JEhzN7SA(3kwq6j5NR>x?}ZqqnO$ zq7^%h9p#ypkX=emS29#Ier|OVPtMxX9toud=yZyd2bi?eHg@9ZQ393$SYtaoaD-CT z=f5D>gTdIkzjLPp`(byDW0SeaTI;0Kn2pCT+&w-!NgIO5s*wb5&N6p(%E;Ko(Z3Y9 zob@5n-s;HW6H!@4915M+L~%RJ+^Kmt-yRGGzkRoHaz|b}9u9$>kq%s}E{Ed}yl@8` z-R)1yuw~lLkzbRR`}BHM^V7jK>UOK-wN1{(d`|imuO5J@=IaHy&b`A2_fOP;1{-pF z^^?673-F+*j^zTZgwlscts*ELHx~$S$@~Rv;xs{1(#zo^D^l7Alc+>W>0O7l8^?>( z<>6~=+Wv(x8KnTu3)5*v5w^C*-HD(gD+@vxHg`(Mm>)&=%CR97U@)i3a~LY|g_Y>J zMw}r60921+3@@Wid)15Hil)8gD@QPm8J>I=wHKI*kQ2gCb5#7bew_5NgN^(~8uEvW zA~Biz_5PEUKW!n8&Kl1ggpJLoD=1M4vL`Om* zBGY0y98B!5yLZ|Vh+)bUYx#Av)wzGC;~{_uyi4EgY#{0eL~~xI1}$nR7LlPMuvgt_e|5bHRd60ivArK^$<7PZij+em{f;5Dxl{0Se_P?+u5QbW6jf zzyxN6@S(AQ$`#T4xIDgV^xf+DD9%Y zXL6gaaWz^lVMN(RiUr8cfW_lMxdrB$f z5H85kut@3zwHo&ZMQ#WRvfrOBzT$(=HII%5ebS~x4Q81IDWeFbYfVyOMb2;(H^M?$ zSMRNElHhG^0}wB+N3UK_PO5uH?4w)95{+1`k$*foau8N)`ZNK7EFXI=SSS<0Rj9`i zOxnfpiGW>57czAag-&nWy&!D{S`kzC>_umE6d^+S+&9O{={(qSh|-yXw6$Pvp$5zr zZ-3!Bdj6gXRzftCGRu?#YR@lKM6B3GU@|4t1UP`Ro-HOb~C#=naOFOjQ;(Aog zNni-&K-E;YX)=~AI=e_&fJuRk=z2yu(FeA;eHg6rr1iBB-!=8x0wWv?)FJ~-z|2k~ zEy<{QkEl3B9IS}|)lTqk*A@xRPj^$c4hLzU3s8~N+*3bF%=vTY*JJqeTGYq#>)k;wlfrqFJ>P;MOZL;F(w!4n_hxdY;S_o9$ zUVL|h@MZ)&NSw^l0TZK2vc-o{F4U$05Zr6;QSNx{`u1^my7PTse=MW_?Bmh1nO6NS zNn%e7&sA6w?ucN!L6<*1(>qKk_{XyoDc=IHKO+8IoekR9w0&5IEp z#I6{1_udJ(H>)HfRN;yiyP>_j^I||4am^sJ0q`R@SK#Q-yfp=+-}dzJDcFF;T=q)( zG9HggO5#MU$zJw^AW050t-8>Aq9tI7YICL<4Da7pY!F&!RakMEMJtTJ%)lk4yu^vi>drTB_f8G`}a4)<2|rQH<~1=(65au*G|u&^BL{%nRyn2C2~rBXj? z$Vj8jkLXz}IwRbWsw0j%LTUoPLF_PEGhJI!$eo(ZE|RmmcZu>HXZ^?(Lp@{>RjNh* z)Y|QgW6HU7$qlD!7p}=zWrW81fh9FNQIs#0sUdz1q%_IWXWv6f-G}u)z8d-!otQR( z$F>9h#A+1PvT#GKcat_2kC>PoF*svPwsXb?&a}DH5kUJjU5;v1q*~r&Vie6Af9y;pN2v~LQon(3L?Lfhc<^0xQ$Q@|=q_%hOzG66l za8YxQd5i)r6s#N-j{3;ns>z-65v(cMU*-z~4U0NndbNIJ{nRFdD=Rj8N2MJ}>z#}u zRn`xV_S>EMs~0zquE#t7*axCq`&##gF1|z9key-y)|DB+JiangN^-|$h*fmT?65UW zx0O#t^^o{X$IH%f9RdH;m}FtCTA~yg4mnJcOaFIzBr@n8MxK!SLBTP zp<4^WTMe-aY`Dp3m8(#H>A9x;rtTEvgMYDM4dx#b-^b z0*y{-P$!qjo(-_lu zBPb@W1XYe)^yY97ae7x5Nhv&cm?R07Ob{JMx&3oF>R0X!p_Yk z0?nCIH1JoZmPMg7lCyrG?`o-K=cpm;J~`B z-n~{)h=*2=0b%vkW^|_lkGXVy?ki-s%?k2Ou z@$<*7cs}li^%8c++)~RFPa)W)yqcoMBU9EC%hTRvjH;u-vk{TRu(*+@Jb%|_Tfg$o zC|JPv|Hd;tbv^>dW8`3+^p9>C5dpx}znRX`xE>;|CHJ;QEYzs`FK)fCF*h~++u5Su zUp=_rj-zFft8j>`A@0Q zs2W(^5KB1tW?UR|QzIE_5^dF@t7UgsLr4Ycx6}9FSx;J_@Q4y$B91H%AufP3>C^@F=|;rwE(vvR$c=PEQj`{C zBryi0R1ZR83>m37aOfa9~2+ZL+HAZnTs&B^`kAqky{yz^gZY=@83U) zI7LX+oApzf6PpO{lCOE)RE+f#C)unY!7l43vy>SpiB!QswbdVH{mhF&5F&;|5BdSP zap}-CN!oA%B*u-Xw3HdgU@r^o|3W0^$BB?_!3m;$izfYjd^e24?u>E z@am>|7optjZq^U|5vumFW|gEAWj7k zWa*NqK?7QBn>PYfl* z%!nwVvf%Yk!W~UxFIPS60z9wq@spNR2;(Wd8znVR*vF5e093JM%w$QeaSNq23sodH z{X=LVO_+=`@4o$L@cLUlanpu;Je>Z*lWS|y&h+Lr<$FVmhlOI6?cq^}C{WS?Or4^K z?bt!Jh{0kGMrcikIA)K)G*wR6+E1;8FXihK$H%MyQJnOBxWli^6Ad*hLPsO!e+)^o6uzQXpl8-m@m)MzaIF z(XiFCsX;!{L-9NiWz>yJe<=M9bTdf=lO-sDa1f)KXcOtm1PO|me2^==bh)URK+rl? z&8*Cm$3s2Xi4Ykr(^9NxWrRCXOe<`}W+VAZF!=~Hgn))sRm#p4QY4NF2o?{T&5U%$ zSK{GvgJvBz9rbIO-S*C)JAU)6OB|JQ??Bw@**%Qc+=8Pn2}v3tQ8AO>;h9F36LThC z$@gT|UcHk{VfXFFy*J*z&Jx+GJRZ${{%Nlq-7%O%>lzNj+sfGohhWRr3uvg4p5PdA02s0)&s2Czoo^Jf0P!<4giGmnE9%Bsiiaz zs#_-#T}qJjuZI?4AcMgm$<}6H6gL|>`x=%gTRrIs^XGHuq6#R*n!jHUAs!9&18OcfvFQZFD%bsb%xL|w5ZpB zOX4!2PM$5MS6#rI*)zAs7V>d&71?i}mJ0U5nAS?ZJIj%uXegR(IWUM5EDV0A5513ku*+ zM2QGB?dJB4cOHN7^|wni5L@4d42>GFcYW0jRv4XhLA$u>L}+*oRUq&hT-S@Ymf;}S zFPjyhc*`JTSW}4_o=){Jgx`_*%~E*_4N-B-q=M%e07Zm#a#HR$0TFz`Xe@GKT)q4R zDVQL6_+|Z`a4Y8-T=xe9dvNRV<7<|!-eMfAqlQQtd9#?()N%-W({Fs?$JR=UB;19!;DwDUvx=3Y?*= z-aLJJ@#?Ezdi>cgr+swPj^25A)=p<*!WHc$|Ar_bU5kI@PTky#$2O%B zx0%BYS|)60<@#0O2=0kvA>5_g%)F|Gkt%V~yCY;auSK11c1d|DM@ocy1Ky_PNBW8C zT)WyrN$~w?9jbrx7{c5Od;pFyz!ZLBuz3ku4DGaK>W!w2fq_>y0g_7%T#jchSO*Bo z__N33oS11qSU>T^#w9AvXn$!BHEQ)yKQ7Zgs@bqZc|*BOG6Kz)-*-~3s9fqsQQ5JG zE`QwFP$ZQ)N5^-X4QIDS)DB>gA-Swfsesn3s0^pSbNB4%^n`89PP27<_w0S|yH8pI zGhJFN5vn&^s6~gZW7GhB6po5jUUbQ_URdMP2$|Zb{Suh8-`m^(~J4GHAPx*yJ>|= z@@rg%)!o+Oy4ePqZY``I;p9+-G@ex+ULkelwQjO~{q5EnZ{27;>$=3#79$QgPeG4P zvE{veKxHW$5u}=cF zBMusGJ_v0ic3q3>>mJvjL7yb>RP|DqC8jH0(L{jAQ3Q0NVhmYAckXywrYh+FD#W5M zn6$Rg_r)4xIK6IfJRTh%AItEp?^cT(V0JRdSACQ!w*YrZ)8oAnS*A^CEa*7iA3u76 zDEi>Rokp{vh-7gDGC}pB#uYZi@sY_CGk70<@s9o|#rS~M&T8!#Wjtas5*|`Y$jI4D zfE~L-DKBM^l3aI3zIrO2M7K|L2B|uUiy7F8!CwkF^ftw{=Oi@{1pAlQ{tAyJt%gd) zMiEh6TaO6~`yIE?8Ce9gSxfSmL=U zjGUw)t^2?ErBMsECfrimHwsCVr_iP_a1jA<7Lk&><3t4G9=7Ct9=DVx7q&59M!1J+`N^oQUqnR|mw7?T$i6@r%*!ok6V`WD5l zR~{8}@$dSYM)!L9%Jt3DiH^X!Ny*rnkeVn6ivbro-v}+OBhMx`IzEYQSi09BG4O*# zdYHC0jKpxEavc#c)1U`?V3Jh1n70awyjX38ZP^5_j)xFFjOCJ1uV{*l2_dFw1^b~J zvsNgoDU)Y!g!;>*E6~j5KRY`sQ|(qsC<$qaSVEa9-Kn=4DPi)v;-HpJTan_x=JUeaC7zy#w>zs6&c&!muk8H4=@$6aGj|9b?j)d1{6RlR}GS!cQ70+JrH#6=a|;{uUX;gAMm7Lk$ugT#(4@%B;m(FZb*$yD@_Xd%LZM zcB4I?Aqc-8|F=bui*#~jtKB?QvLez%6hGvmz%)MRs3Yv7XXO$y>k|P(y|;9H@qk1g zy7EP(Vynq~{*cBuj*Ucs#{DOk)2GiayfExB z8%Sjxl?XKuh`Zl^`sgynof0N#PFTM(21^|II=>WixjPh+j$48)o&7m>1gF!3>TbK! z(&-HCADK?-?|8SMs|1g?9M6Cyr=J5q){!It;xov&E<(>C#}{^=0On;$^vbAD9&!}y zN*DlVW%|?qwReni2i=bJyoYa(l?0&*fyz-_1g&LIK}t)RXGeLq@R<~dRv+6kQLU(? z$J{=zWu-Hkfm9rdoF1r^W|(S%qMxu)%Q(YsyIDPClqc#O?i1h^D6LMhO)@20uj8;Q zw!DF%WC|0RzNy}4Dq#;<)n&yi?^CQYuMf9_=#aVVnUpI?B=KvYHV!;Lh4e|QP!Ld) zy0CfFQHl5Z(|68$UwnKKL_>z-^wQP4nL>0l*a2&@mw=kO7LpCKq00IFJ)>49hf)B2 zp3FE9bZ9rc9VxU-A-W_GN36tFwXOMy%5Q+*MX9f187yOpIEt*Q6J>!kisJuE@G5G_c7&?IgS9&>-7`5V|(Vr+63Vk zMcj^u^Wl6KpQ_WjJg3Vb2%rST=h_+G+$RfO>`C|NiL?#gjL=wbSNDyXRTf{=2kg#M z2q2dz1Rf8q>0LQgt=1A*wKN!{>*ENy#m`ogn_WPNAQqg9hwzdZjCyOC`SYqu&Z2{u zss6BZ_xD&2iEpys5zD$%k3k>>4*C;t6jHnw&kR(rZK|vJ>g1^5fg0~VIWl^^-yaY; zz*EAJ%86oQ+t;AGLUBn*3)of`eLAl;XqsDrll>p`GMiqKHthA0Km>hfqda`v>q@qr zGY%`eX*wERJh|v!5fL}k8H%^CW-j<6A9!$b-0EI-uPz2fe5lxa^oE7Yx7QslFRsr0 zdKEc7Z2(?vu#lrIBvQNtaCSj&F2hkAKrLEXtC~|-eXG#g!wqk`>^Uu9&GywIs>uqE zgZ(Hb5sFXqGDiW);`RfIn?oR`6vg1LF(!90j*^btSH^g}pvT5!=Cah?}ADFD)@ z?8TWXv`jKGJu=3wIa1gk#WDB;Sg& zQC>o-Fy~ygXqe^ybAL?4#A)aa8tG-p|aSSIUYTuc9TXSlD{zQ>$E+slgcyqGr2&)5v3M~SHDVa-$I4UpPzB4azJ-Ru+w0t^w?9g77#O;Mt|ge_eazI)6wj={Kl_&{|6tu^`*C8`}{+P zu9Ha!0nSDrp;5nH1R@C%VSp{>jg@LNn&qu#+I!hS7#(X~(snh14->Rd2JC08RmY(V zl|DL*eW#og;EWL+`n**FE;a*aBq{qgeW7=mgQZ0eVb58uIA_Y7ZcC=K(W}ws6A%+J z=Bg&IL*^gRgt&=EwY>}@Eh9VZ8}{&mbRQvkB|t>0Fd+Z}x*?XN=qo_+e3*HS;$4@i zdqq-ZISJCY5i*XIOi+8Gcgb#~a7AXa=yN&!91p#lwfZrSL$(pYbfy=@2`P!77q7&N zIeM~Kx+Z7TkW) z8%&Lh3Xj&0#(DH`up_3EYHQ<6wH|PNGG5uNMJ7?*I~tOc&%2XxHS2m+x?q>%Nuyf( z_)CZPnzw)c=lY*|y zXtSoZ);exy)=aay@U$LtaUYKFJ^$eJ>=Ye;>>7%Id_)l(Tw6PXzEQAg&)nr<_4Mqn z3x>Ai|wZq#G4ve5Q`WO7iGyyR+>Mr->r^8K^v(pmuH1;s3WoP~RrLpcE|uQ*6lJVlGlNsfqY;W8x>JJyt-r7csMh&he3!P4H(U`$!n z`D!_FH%DVmQiow?^UJQx*K>%=8$;-koafJ}Y<-V9ISrwRbd}!~eb>V2%B+55ozsky zE)ZUTGQ^xI-$+eBG>NQh)awo^NV*qz(XYX{MleJ6h@1_-%g+;6hD9bpANOgJO1_G?jX~+6E7Y-IH~@{U!MHz8@-+1 z^D()>?rYaKkNYcSd)4T884R(k2E%16%r{eJK6gQ`q(&Ew+EU{MFkd}JOl7DrgmtF7zd;$rAG#wRCk+2I0&tAj^Dj5xaM#`|`5 zu=mPIkoDo%5y|+GpPbz#K^EEBD5Hn-gUq`bdJ8)Ph@=LlLu8tgo=1|c8?280lP5Wk zw%7I36JI2{qV**-sMzlvHCdZkDS&N8j>E-*Y=JyB*1&Q4$jE9A3ReK(m0s43L-SHg z4z5TmZhb2w!_=KDh>V_0@!=|JsOs*mYQa!S1DUWC+WK;FGgRdJr4(E^#)*wPlgp&@f!os z&>bq{r>b+**AHGo0JMdF=AjQs>R$i0p#Ll)q9}?INqnISy+BsCy_(cGB z*4?gLNsM%0L22P{Ln!n4TO{{vnBT`9X5ACKEHozQ+@%N4lK82D=smT71hR{JRT)SdV z6ze?`G>(1(w8$Aa2(1oz73h1+0z`o{rv_rNxl-MoTcp0r3)kbLsfQ=}V;^1&WgIDs zR0l>3Bgv9{BPmC5f5-`95tFo(0%V*=4HaL>_(vBD-2P?1e>q4KdT;w=YjxB)`25xS zad%ev%inv_zp4F|H@5!H>pfB(_nUjPziW!gOsD6>(!5cSdfu~P|M27u?OpZXX_+IHDA>Z&tps zCxN~toRh+#GU;YYI>Nyz|3dYj?jmO7_izxkCt*k8GAfMYEbUh3s?Jc(aB_ZZ6c2MM z0&jbnZZ177f!0-lqspjnCUyZ*sr?A%q#DJ5THlVZ(vQeIY_pD=?4z!qUiY4j?!J6% z5Hd4?LX!~*XL#n`bJ9+S{b*5zf0^GX{s!C_l zOa}eyCy(3j{}67k_0wR;u;nzG^qyV4cwg%hAf6E^JA8M_KW=XQB=64pS&W}P1bcfO zmTN?KfCZx^z<9HM5LNsOB5NFpKnm$SBQSo&@M0K_GpFz{tO&ra2D>(Jlm#UhsN=jr zU2p~>`1jOX;oZ>=4uezTywg54ff8J4a5V{-zqfPL7P;wqryCYX!lR3ZbtV*u=O)`S z8oa(4Ji9_63lFW`YMfxiY+t-{e(`Y7eDSz*RQtvc*6&nze&loWpL@Nx^PQh)5iEP{ za{2bvOi&bbv0>uzLNrArqw38v;)q4}3N{wD8OA7F4i>mvk6;U{3evs#v5B{1c4gnz zB?wT#ySnDmwZGLLEa=r41mm&LXNTYgE8_MmrlI4V3ps;JaeXOcf5YI7K20BFxnXyv za7D|<+gU8M#ALRSpx_Rc1W){=+ZloR{kcpe)!+8Ci>51nLzWAhCCO$W?t`FB*f!fW zGdVJqeWmqmIN*UjqA6PZd4t*sn^@vPRnVwS#B?}BmPddqII}jaqkZZ0)1$?vckTt> z%FI5M_KD&EBOoJFFz4Xy(HqIp5Pw%Ihdd+I^EB;~_hXVl#U?{56_yY_eryF*FuoS+ z@ifm%p>LPj2Ple?ChI#R*s1QrZ_GgveHGJQ;Vvbv6gTv!8A(UuIi`o4p>ad${qyO5 zy^Jjlh)=T9jyg~NQkj~0#EfB>JETYHqYrH4@%*|wtv02ydz~{~N65UZxK)~j(gLQX zELO~rP$Psr*{p=xnze0bc zK1hjN(}-WS4($<~|1HCgsp`kPB(N=F{(RQhZAS1}@v=n7jZy`6ieVejeR9}H6^B2I z25TG((qYO=Dk8Bm(cCn+4NzE&2z6>}T0aiVP#p-iURytFs%!J1d{8nL=~+<(oD57+ z_BpQ7`Jfa=wnx4wKSxjv)hs$qVU-`CVn>rE_*?vUQ}QTbti~D^Fjcq%Qs0z@Qy7Js zP01&ii7a3?NG=dsJ&`7FEv^Vy8N`LW*5WU#%T}vFSA{f$7x1UJpgJD*29U3;;b5hJ z=BbesN0u~K)*4~G16-cSKAIGifj*B0dAq|?5HFze*Z$cT2><-Z=VqUJbDZ{!HnM9} z=6fy&2Pv**Hv|$hbu`qcEg`%JyvIUTFXm?TtP5a>2xmMDt$H;H&RB>H=tBu5?PE-> zresT>yG))bSu@p#q)01A{v@R7(5DjgB-B!#4HbasAg4sLn$tuq*W*i}y&g6_%5YN) ztO6=KD1Iz{zFC=Nx-ne%Br&n*B7)-caY|W$m?x2QCxV0lU|7}%4@cyN=rkQ!09IR} zKcfScj&W9s9wXlVVd`h8R$-S#jgPOKeIJIfY%ID4MX@gugK=Ih8B}cNq-hz!z>km- zqTd{(i|%+u7ZFEOTZY41CgR*6EIfLX;++s+V=^X7@#l?j!Z9S4xv_u@8RLY|md8Vm zG7x`6bfdf+|w}(~6VM--9#nTapLe00<$wd3@Oam`GbBJPQe!-CSMlg%S$z-tZ zNV%t(e{r=uXzY+_h>nm;O@WqykAl2x%+7*M_?XB`C-;$p7iWP8PrGI`yPXi}M^i7V z2z3QFN~AJ;c(Xdc9y@*awF|YMZKTcmL2V0pDeI?m>~w5G%fi?!V~b|c!tIyo9KwL( zaBH~~Tv)Hpt5KG+LM^^;1vlBOABCz^F0JdvX{rc35e*R;5^5yUV&RxI`OwFeqxh#6 zvXdtgkjwgkx5rJRhJ+v9^fU@Zp0q^3`z1o1OUs+lEH{W5MZhdG7e<;L)2V2>EQar{ zALt2wQ;11XFEaCI3TJL=%fij{Vb~D*T+s#1RAN~_@gQZKwcHE{WOCp7NxxhwT9`9t zSxO_vGY=l;i%1zUi}9H*Kvpc1xY>H~wDwy*+&nw3|M1WEe*T?7<*)p}y$d1WS4W?I zQaVf8>CguS7yu&-2bbY3lf=pMl%jiu8GX!jc@~+d(;LMQj*fa6{3-hR5u1vWc>w=| z3Q6TCT%>gu_IL=`8^T9HeG66-T4q_+nRQ8J162yaBWpRb5Lpe1kBshzZI`*|q__0g ztRY=c5G6@pFQy4NE67l$S0R9T2WmFcl%nGd4clR!ZbSy(ve>N<__O%x@XNZ+k}1$o zc1>pe<60cw@$`5T+7oy%4qQMKmg9h$qb(*l)X za`B5IW+7VTlmIgYoZCb{w^>GyCBtz!PmpmV8A%G2DKm%#FjC)AhAcyJ4yTe+WXYxl zkT9G9#MFmHkRV`Qh~M#gjG3n#NJ=7_$8*Ur}(#G7#VoDLwL=;wBsgOfRtHP1$V4(x=#L<-OQzp#y?N!=BCW@(nm4en+Db zT8k9V`^rQBnGi#xroVYZ0$mDSKQ^?+s1kC6$YhQxq81_HZ00perz6zw3<4xS%Bl@( zi!Uf?jXa!0FLVDJ3Jw0HU2R`cxh-vobv;wpIj6$2C`2j`$ezsWHQNsVAiR@VxS*g> zl}(@zo@$Mix0P2=2B{o#CR@UB-MqoD2E#YEKLm*2oVi}BB?R#}repvlSDQ9XVd`fB zA+C+CEN`Mb>M+OkcWrfa@>!}#)KiIf2H?$h7xQRSAXz_TPKwk{G?zo$bxDdTqkk`- z*1qH8cRujp<3Ibi&VS~$D$yl+j;4(A)kaEqb$y;4bYk=6`Y%^ zK|7j1krJVM5s)_W(&=WR(Cp|whA(tOr`g}yE8z~69%G4i5%<_xlo8-O;PmmlZ=)o! zqmSuz9)1O%KkTS77R&kbfn5XVaf6HspzbW$`JoH>&6oh1~pw69b9n(PEmMm^V zI5lb(dGq)f?Ea65jlW`cQ zPBfqmW&>#BkWq#YqO|MnZY)5Y>6uBe>JQt2`?F{0y9cKC5G@pqUieZ-LMi*vkm3r7 zqu`beLzw-~^3S6O(#^6M3MC=iIIa*$XUfLOy=w~!#26bzzaY&3uQxw{*&)_vJakR7 z(G4W5WNJ`mll4Ou-lv{+%IK%r3M=9;358rCR_i_>Qg;z(rH>M!G4E6m7ZwYZJ;+>I zL}~P<)Mv;TIjTiwv@=kc=$ZEwyOTmp4OJ*4!Y~~Vi>P!&WTvj!FD--ZC4`kFS5}ZD zt5lH1b17;(bcsmd4)khJ3;by3@+Y3xhGsGL1BDL@H_kX+6Vm76+#eMQ<5(g24N51(Er^ z_#!xRyg3W%$>qSixucta%ov3kjG!epn~fJZBzLtxjByyFRU9a7LcP!%9Is-7zIW8F zibvACv%ANMk%{MNcNcsvWs7w}=AvA)L4OkS4p5Z^8bUM<;~+fER6m*gya3;JlVE`m zn!0_3CmVxwUy*dU9}&!GOuKXJBD2lWCCY9q17}#VyFP969t~EyX7e)jBLkcGi;&*H z6iNGIp`8_3%;6)Tr{>DvCGE?PI@?k2rV=B(8K(}{m=!AKN?g-+{jo6HkNiyvgh zu40S@h;rRAOz?ZN7GpFl1Uu*sSW9HWI8rXfV$jd0or>`u(}hw!RgWy(*aqHiJ-zI@ z#pC0XfC8~(oU~h^dFlCVc!{2ROs3%cur$Sq>#OW3#B4ToLA=-nw_?}p?eNbjZ)W@9 zWn7*gP~JH-`VkQcIjfl`&vs(!7A^Ad;BtgwvSu~tCQ6zITbNZW$2GiNu zS;x>sITeCI=2=OHVJ={k;xV26=zJNXfBb!FL7+2iXPuNb{tm&?jm`Su#*Y(?Qev5N zzVvhD0_2Qc22i=xKF;WUQjSnLJVOr++Ob8IRD*IzJ)cMVIfA+=KpWa=se$!VpfBdcSFTUNY{5L=N z!g+To1pLC|#l807{n~yT_2^)?g?q3ZM07Z(Ue1b`#%+aZZ#6yb&#wEEGZJIQ@6yNK z+P@j6z;Ede;+^>GI1u>Dw-rhVLPVRM@cWb*ORbISz60d=B z{O(p(^*hHNbBHZPiz0GWsW_IyC+{Q$2~?<+oE(HdUo446BN8O-iDAz!uH5N!$2H8qU_%kEL|{G?OlDvL(yy za!>WWRpIIz{mWE z+q5p=={l)S2RI5)m~;Rp#&>g&RBHW3=9%E zrf+5Rm7S=z4np5O@2^3p6=~hdw3nV(!9|E41?g;IJ%mJX+!>vB24?A7jh(<6Si;SF zQ72nL1{>+@$9K4A0KPLQaRsZp*+Ps@Gjswe#Hp&7`U%FLx{*FS!m8Yn}#k_Km-5ha^BKnm1WSo8JkX?xnE#!;m>o@gWx-Zh&D z{z5?|IVo}&ksWO9Bz}%g&V?4Ws#a?&?;eq_a9!!Tlom&Y;OM(=KfC|n_Wu3INv1CV ztd(g$6F2Xhpw}jJ%Q6DQTeZi?kN8W|6k1%rbx~FIYG5CpyO8mB9&CN;*6J@m9z2Gl z`@&y(>AW}prEd(s^nB1XFswRZ8oS$DSEGUPK75-kCw)6djf9b}M5ay4gP~J5FyZzr z#kmL8Se~wL2F4rl_2Mb0T^^LnV)5*o?XNxVSh}D3$Tsl^WqPx@sh&@T&3!GR%T9GK z&Jk=(Nk(_miMGAHarLS4<4VMzVrC-U~e0(w_FLXW zEH$MY&DPf|y-uX>);H_VpPud?Y!e@%3YzkDYJ{UJX0r7wA#x2&NM$5DUmC0-@!PqS!g( zt2LA&8bs1&)|NFq$*%-~^GK-4B)kJb0oopvp-XyvTVH#mcm!jS) z0D<}-!_EXc&GHI~SmQ9-d4&-YG*JLbTk&v0t;J2UE>=2f%97MG<4gQ#*QFUlMT+Qy zgFSoV(>Kq*{`f-1^U06w4hI+tOWQc;r8Brj2((^9&ei>Mlc57UgV81G3l-y5J@Kt~s5I>s-w_VS-;wKAX5!p3D z7aO`UZix6d0Qzl19IQN-jE4rJ zBvmL|2B967IFotZ*`xfs%uvOwGJX(jh(>^R#2&AsZE^-#89glM;*KeF2DITLW0^J^ z>rzpD4-l7PMN`>t;ZOrUo6ZFezw3vf!3uMEG3M22=QhGA9k57C#h4|<6smmHj;0v_ zC_}c%fskK`F6U-uPWHQ%&7C4pXBQ;|9x!aIL{j&9?@euO1WeHmu>9uZL-``kg8sa{ zyl4%~&|ra2oi`=}ku6T!@5)DWaPRCj8?89BSblnWsbi#0HV%<_eImX8c(=a}$=IqQV>WYL){e2*A= zsqh=l%Ae0q&%0+)psD!J_UOu&AHMWkq>ZMF%kh<^*qL14e4UT4F2~pT_3<^tHW1gD zOl7pl8(mH=yu#!s?h?U7wpHvLqy$PpKCHk0Mm>lD1bffks*sSCfL~?A{4OQQeU-1MBQ<8gr#=|xpk~CsQ zumd(X72^2fG$@0_&uH3iBh@DFaj#n{uNI_z=(AwMk=Cj%?>9^Q81g%W{%P@p2YM4f zAhQ4ef6N`t+mczPJFW!n zUUD=9ZDAu5Sk3KQ*y(9b%&xV#19$}rk68dJ_f{S1Rwc|=+AmK|yKlWq$~ta&&_j1# z*!AO793bj70kp`ZSY2LeqJ$wv0|NywITh-znOwKw3pvHHeoOCbS&E?7q_jb$Jr%EU? zEldLl2gQsh?>dtR^iUli))?M>c-DF6y%UE`@ztx|f4J*`lL-h6JVS=G0e$FE7f{#e z(Pn|IKEX#mZ_oDj8!tRW?4_!doJ9PjD>j=SwHLPz#18`9AD#G745H*+oLst}+J4|m zval}8Kw|Z?>sSBSJx5*EBaFfF^{e+*Z|yDr-Pd}*{kYFlaE*)B8;9e=-Zd{qu2}N4 z(liZ3swg8@PM^`P7+&_~Py3pUhFMdt9KZq*iJuOGR|P`6 zzzu9g>2C{5+X!Shu@h#pQQ2inp%CDkrxJlAs=X>sc%cU|V>VN4fTM-njuQ%i-=hN%mt=0X_wWIf+ z^}wE$i|3c;N2hIqE4>k$;{la&VyD)sK0%rMjHorBk90faNe7o5&FYLtWnR?KPM}sm zVsw}=3iUXRTCV!1x~B#`5{Lz03DkOC#*J-X&iL9!lH87rveI*H8B`HqV&&vg14@wg z3=f}Pl3F3d<$KohDmR@PdxvIc`oyM1Che4CpaJ{*w(=71KRwqpQEKVJ@ma8!wHk1D z=5(55<3jrvrV|+xBah%6L&S+lk>)~Q<+hY+esA{ z6UDx*$6q!ZwY`IFa9WkMQ7r*`EwtFdVx7%0`m_B1D8)}Sog}}gR#$WKZWc-u4da8b zl*)`yP{TPOKaE$_-JPma_VwrEXM6;H_J{8{-rqPJ9gmg@Y}JZj=#pVJc?~u-ODkx>8S;zOMXad%sm=as2mnw=+IF z>M;#A0+LsMOMKqi2}=xv)e~n&8caL?Mp!^Chg7FUnP)tDet79cUwG+$ljADk6#QAk ze|7#=oys_}?V2Y$ov$>>oCUN7K$t0JDUv1j^8wT+U_vzNqG-q|$m;{!8fYPQ7=o60 zbsdKc6#>S9gl&htJQSA9l`;yXQx3XTjm~XKx)o ze)F(>d^qYIUK||_hZo5rI;Y)>qn@PBLIhLk__p0SJG(eOp{7EYi62|%{B+dof^uPG zU|aj5)MO*G-JCo`lHJ3``YJn0z8QSBBfTmIBxN!~khZ3l;KO(H8u`)b6 z>HvakAxZZlpcKeJtb78Cf?K_&AVS-Yh-D+io&IrcP5cB!G8sKPG=`}Dk&K`8AXe-2 z*b{z9i~?FU@WIJ3l56czVUDVsVFyCwoegv4`kQ(ZKc-dW!7{ z3&m&3#BEs!`h>AQUqe`)M|2{FSSj&K1NTN*;6}ZRg-H)qmmbOr3Pj9qsnCYI>J?}# z#1)nR!z|7GGR4(%ORfR*nM*0+<<7TRI1APEM9ixSk()GR8s{Up4TB9jiIxOMUaSEJJSab9#d5?P2z1GIinQ@Vdi_0;clFO0i`AGR8XH}s;i?^0?3&GLPt5JxxJHge=sb%^(lcOg`7v0 zd1BDszLC}`_6#5l6h~Cs_|tidKeF*-(<~rjP2LSWT&<{089ki38Q)%WV`obd!7uBEobkxz_yr3O8vyK|sL8%52b6M9(=bBvGFodXV?KdOCyn3}; zzb5Obc8w4KeZ{f~r>L99;e=)2sGF2hgNuwr{)Cni%rvmqMb{*W<4ALNGZel+yHwYZ z9_Ce3D~*Vn0a&DaeT*>YNZBY~;tm<)1+}q__3hmz+ZlC4uxzHqM{j81#Wz_WdncIqhw4Fzd;*=g&oSEh%X4A z=x$SuF698UMCHko3#rG!ek*P5So)emV^{dqq?VdaH_RPldO5AVly(&bULvTr$_TM% zmp~}(7dit(jtwwf{o~%4Zpy9Q*5mgMjjETMJEKai&rXWvIWY{}@Qm&ksIzlJnMsSRFN zq4Yr`%77-H5yzc_#_e0&m}>@suK&T^U1AFEgXdKMUJ=8CTNEuu@t8acB-j}Ygsg4q zk3|Svy(3}R+1*5>2Rbg;9xN%1XU9b8s!qu|#L(8JEIu(WgK#Bf5v|X}4~YIB;rI!z zf!|Rmd0MOZbqmlcy!d$J}f3ymRVql<Wdh}>R3)R-NF3BX zQDU1qIwIFmblTlhlIb~`OhNW{UBc~y7T=qcEotOhi}{SIh8y+k2+M`{C7@5tk+>;FJtOBp`_`QqhodXx!`zY1v+_;T=hagaJCT*7sJgX_egfcF- zy_jeQKN~Gjlh_$RWChIZ)nu3b)Cnuv5h7{xZ$z$`8Co2`2tQN)8lU}-!D6{2%w?i(X(0XsE>V&Hj0 zBulSH75_6o@Nm3X`{wcVd3&sN#%&?cTonLn-E2z#I~YkhU}-Z*`C@OTo$lC4gr*N1 z1XVE8I$m}Dhnh1^l^aKjo0gTyT_KV%s!IES|9nw003QepbfdW*gxTd~(uzg{d>igk zQ70Xg%S8oL+ed!xkY@89A2^5{sznfMY3di|0>Zi>UmE3b-?Tv1wwr5Y(_A4~nuIn( zwK_rXpr!I-jB(eeT*L#2%c>)r8&InLcsVxI6f2bIg0QQCXN9fl_+D?Y-{AR8Gh6AQ zm>+Qa0`d)U7!`6;$5FqmWU_K1Jm1Wp!e+9t9a$4Q5vFF(Ac|L53^Bh!tURY?9-nr`Es8@hOKplepK(Sg-Vs5fhsjrsKM`qE2{ z%EMM=XQ}dNd+F}R@-7yg?xU@?s?iI|F@JJ)4M1T*LH)5+z4ayGjbkC6GCdC2rI% zQjC%4B6_sd0l$0j=i^~oNQ zL4ZqSzJ!w^8WTTSoZpI{_GR>@32EpC5!?V@lx9k}(gycl@S1;E;z!yheiYg%-eM$Q zj*SvO7UTzoGb&9C_yWdB{77xY&#*7|ED~l{eRdDpuvF^EG?)0fxZrg*Mg9TBvX>o$Au)?_OnE&+d2aKixZ*a zPVVPm58OzC2fAp60~unK;Tno%=T8N7JS;lIj#$ayi*Gdp;n(MNpqJ`hWnlQ|Sk&JG zp|MUl=VfkZ&JPzgy$DTB-X45a$TLOzv=An+K_C`MU5$rfaMtR$lQFI=?s$%pD3^>! zPOXrFnDC*^Ksr_IeU9A4a}JEX@q-s1OsG`^91N0Ow;=V<@PA=={NdQP66tsdnzT(L z-7WZ(4?g=633V-c+J_@WmYLURkV>6)*4a79#6U3GQ+nIm_wVjMd3+eu+2&^KOM_fk z>Ynu(!V7w34W4xxw_7`=FBaa$d~#4-eB|NQtAFZWdid!dc=YMdzw){7ec_Yewg1Yi z=NIEAkB`XwtNib-E$^z{7zeD>iIU^5-rKx>xOH`~S$S{^bj3plSC|vv-EGu%q30?? z*&*}_t-Ea*Q#j<2uGU%bEm$A0KXUiuS1_Qp59irj3I;u;s3T;e6WY`t@E zWz82h8atCrIC0+CwoYu@wrxx>v5ko*&PgWbiEaBN6WjL9ukQWl*7tQ)YjtncuIjzl z>h(M;$rXW-eCdXbIv__N$Sag5VwLdJN0&4S%>z!kSXQav2a@>U%&nCI9NDqg+E8>vug!j3jzDJPD_AyWF4MmCDUace99DPm{!J(Am6bFmsY}fJKP)P*euXeDvm#b#Y$==1Bx%aBQ1Y1 zWkS=xVFni$uveVT^J>DL(p57_=yXd*ibu%h;-@w=EO%?^^@j1GlWHSZ8bQvF%)nK1 zO0+Kk5*JncGUsz%kAHGdGWfRV%8>jCQB5ZMOAqeML#g`iOglF(aVdcBK`8E#@`5{q zPg;%vFC(5USy%vby1!V|2l=PDPNQ9^VCF`tq0u;&G=Kxdh@e%)r*QZg9X-@c>?{Zy+M?7N=^_$UKBvj?4D9DY23w7UI1F}FOf zMyCPZ_Z_HafzQZ6TLZb-$6iDX0DV5q*&Q8VTDvjx2ej^nBs^>Fz3XC5X@)#4$a(erlx%Msdpo6%FwXBNlbqiYDiAOL zs{F-aEat^M5D_H8CcWRWrAjuY#!eKuymB*SsFRxm4WLeIp<@(FuHXp(+z)M0Bvm4B z_JQaC8@Hk5#)0Xb&?gt+AzI}(209=(9VY;5b!TjW+zU7D0Rxa+5UE^NXgQUDTCyO~ zL~&zuRW*1ca9}#Pkir0rTj~yQpD})`PtCmE?TtM=YTF^QY8P5{`;W&j=5}hz_x^r- z)$fqJ^(SKyic_9ETE`#VjGPU&*m*OFaSp0T>o?S?zlywG>E)rK6Uyxyfr#AEyW)yT)@e%irr_$Z2E;s$2{R?|w+ z1is+X$!P>hQH!cI_*>j+E}mo_Cb2s)={6JG+$n-BZ^sZO54N3~i`*DB<*A zxO1STS!m0ViB}}aeH0qF?c_Fpo+5S)Yhz*iRuOWjyvFXDESO2&@oe_4*7sd{{TmL+ zdqa@T`2}*&`(edg@OX81x$EWTV5s}y@@+l;6*uT6W$QC^ z>vb3KLAJYBQkMUEhn)X$9OSk8P|TnIdfid`Q31*ja(mvp2hPq$0Pa^Kwm#X{N#0Wu zx(=mCI$uCD2jjSxL3{JHfoH=XH{(G!`9W80B)m@pkH_q}LO!oc!`*(Dg9)FwLAy?w zEKd0UJ?ER|C7l33O5Q*gG#9a_mvC^k80jX{_tio`o?>+lIL z;|Yf+$tFDaDJuDw*K#WDHTe_de*;RMqXW~d$_*9peW-Wz18JUVySj4J zJt{?^M8@n`73KBXPKUWu+(to?*#oDS;58SDtd5O=>D#hlg*@!ZxF2U1VL0!D71VXy)M@88d4Us}cw)WV)-^{DqTWAi)w+&Ox%DBd`3E^(OvLYTb}7tUm+WV*MqyB%*#l19 z33!ohp$D5p--n;MA1n+pzLbfOcQTM0l`xLJ*z6I5;Z%4=4Bm{;A=mG7*xM%f1W#gt zHA%~A4H_Bu%s@j_ewwGd7+5&b5mgukg@|SEr}T;vDy<+s6Fp*u{8aIhKJK*JW-i1O zfKM!b77TV%QF&Y94u{ic0H#Mzr z-tCma8Do{`WjnuD;5)w`$N9Nv7t0|hyast3j$L*x;%Zl%CWq2^FpKDqAE@qP2#%;z zz8U>G8B_S>my}n~S*C)Ka_UyBxCTy6q%kWU7M7ZL`kn1Yue)|>TEh`WAJah}xS##q zUA``L9W9SLa?ESE71q^f8}Co~&)jrgMn8_mKyL=cdin2*TmI+IGOx21577v3j^EEqZrM7 ze|w(N7}MLNU}>|dCCf$s(EnF#77z2D3Za)VCQ%Wd^gXsBOfN_Hp)AdXo##0qp2Q-L z7MLRZru_{zpXkg${W=;_B^KshyGHBG&6iZ?5$k;kpNh#BpB245TU&|6n17v7_W4vh z`INx2TkN#5Swa9=iEmX=AKRa)p%t~LI4#XC9{aVW*=dX4*t-Pd!6MUiI;qgC!tv}3 zsaw~~D`pJCSJ$DUrjm-QGfRBJaNg>~(}09wnVCvXiK)gAkoVTVJLr;7ZocqBrlwYB zSIR_xvn-TSrj0;zwm`=*DqUUIKn?7( zNm2xET9kN**!n&NwxeZVIAN4+hW?t-zZ=P|zK6ko5N!}Je z?*P8nB~o61>+AE^M`1R_X~o5nn;I{)vgs)(?U%mKhhLu;-Opd~v$Z~#UAp-Vz`TS& zgGGGYGO5q2pbtHx*R;=vn9uQ``~9uAG^;x+u5b3*@1q`GJVA$XwL!OWPK4j2znddp zg&b85?hrw8DV9uKmQO*NwKN-0qJDC43`QChq^ip-sV)vn7{C%C{>TZZ0QdxMu(@KD zAmxzD`CL#2x{8;4QqwmE;7+Wx3?@u8l_ygNvPA|HzPu-poJagd^xww-*ihh_dW%Ol z{)VDPR81;5MdepT25PQnd+@Ou$#k@r4l{&DbqqHbyg~B@I(xxege*0qwRAO1Rodqn z&UdycoOMV$Eom+w*ZSXmKjq+UU9rn=3aB74I|*>2M#$RH25ssylSU1;`#Mbjhecqj zh^Mp_;JHfhFsw#~@0l(nYIV?syd_>khD%`bK-2I_HBM>>+}{N=BpvBk`r_yo1!u8$ z!%Id>M7;M)EYDE3r_zo?OuXuL$;ovLfR=ZhJIj+*TRz07IEPp!>G8Gl@{M8}{L8G8 z{Gi8V>Gz78Tci;O`t1Vf*>quukG`AY!g$i53B#M@7Yz1zc-`Gy>!?eo(}Tqb3@j6s z>n;I8Z(|vo-k-TvLdnv}^0x9zE%&hLQvJ7VR+b)h+f`jz5>+b`nXEXu-=XS13U@=I z&WQ#yQqBmi$0d4_whg4h&9R{*CDr0olk;IdN+MH>R);<~&FEh8 zvpJ^o+2y0U!oYu|y8MMR?{xKW#}om^vDu?n^>>JbF8FPl{Me{|4C#CHkJ;`wPQM1) zvSfd@NU3~;L#q&EwRC?h)*=j%ydwwgGk;_RT^hab2i+BSU)eE#u5@>L9!`DXA)jyh zC-vYX%F3KTk9(Q08YMSz^Ur#@_DdOHq3JK(^D1jMaG#_z@L{Us@^Z^>oB9(NbQux! zQv0#e{d}AM)(iM_?7mK0HcY__xcBP**k2Bekj830K8+~+;RBnUW&CV#TTb8k({`_u zjujNwOZAM80llp$MKiFy4HI`K=gxVEVq5zH(ms3XM}eD&hDerNGaB!(Yh|z@W=?Nv z>)(%(t4+}VCpP=VkrA0c%W(}22@0!efnqN=x`9Ur*v%>YnrPXHu-lx}x~o=A91iFF zW;Nof?@JAHOv;>Knxkf*^EbC0VR22Y36W1?fZ{J_U?oNFNp!d$-_dvsjhZBiu*;4Wi`Di^->br+$IRl@M!H%=^+>_~ck}KT@JT zr3nFw!^RmIF1+4v}b2md$w+GBN^|{DT zF23$t-hW9FFp6e`JK=2UOKh<<<|G3?HozuUGFN{E1aA+_GS|8T(Q+)N=~D=M>Wud% zbs$i^_G9Pb42- zAm+zhZvLyj;^Qk{3tjNjPKM!Y?sC^n3G+Kw{O;=Wen$6G0v(9G>dUY2RnF)m_mQOg zcJEqmT4{>;rJ0@r|oj+kK;IS?GwiDFeq_@7|6X^d?_4!)c`MK#Qbd=)+ zdSA;3tb%oIsw)+4xd~wEO>_HYETdl@Ev}gsi}tpEKMM<8Qnel)LU1s*Gkm}lcyy8( z2p&k_h!dn@+9oM_5=o`^uvJy@er|kszKE`fN-2hrCo9DsXbT+a5fh^VM zj@hp6B>WGXH&~P1KV8LZ4HE!8KmBLcavGTmHRLKRe=?Zn} zwq-J;f4p{I9l7d1zdC*Ee)Fc8_7{%o;0gxMtp10&tG;PKrSE{d~{vKEP zEvAlRF=UU7`l%u>b-T7E`zn)RDFsT6T-Ml2UKHtAKUa+369td~J&e7Gj&)FaR2@6(1 z=+_OZJMb+!Z#=|&U$#egbh)?0;wR9+v}aWQV$KumKk3m-w2PWYCYfF3Wvh+KMY*F0P1~xfM9^NGv zyu{ZlXR4O#scarIxZM4Mdg*-m%Wr)h?<0;}fC$+(6}Q$mhgL(b9(ptd z+na?bsfvd~^uX)SHp%v%_1*d5hYx5)`EqEV@%-69Cg7=e-C5Q1Uzo&2{q=tigBHk$^y_$?|r98osX z5q9@SFBPAU1Qb>!$HfMm^BBW=0ES8;^ zUbL(Jt2}|z1Qz?oKz-lNm$f2=oIS)36gZbpZ0{u4?&my2$-E=n94^VKmf9sPuin>_ zp80L#i+Y`UI_iW>N3GZ$^SA1mYa=6|-pH@92_@#%81$0l7x#{8tT=YR`0B-F*x3>g zWOcs34uppX5*5>@QY0bD>G=z_ac;CNw!6hB_`FX&yg0s}^v2_Dzks0~K~>&~l8WVz zsRNJMRg9l)P0b1%lPgGyNdEu{^fwPea(EB6$Th~N1fLP6_05%9V!S3S_>N3UDmrEc z>AjQi*J6bXnrnrY)cm0WT*Onca0HWFeWUCKSd4iC)78V*H=$33Tf|N`O&)jKPuVH| zGYKtyc`=@L5G1u&?Q}KJbGLj`ntC}rN81_RUfC$7G1!T~n)Ah$^i#_wLxmjah{~Us zb8OeAeUI~D$|ruNxY-sS;bdyH@shEp3>4K*h5QQLfTGSFWhJhxYDkXIj-Ib6^L+9m zI;<-e&`G-m55N6I;Tofvom!bWsgPKM((nh@QStRj{ygQTzFG858xu7d5KaSU*6B!- zAr7W_aNc!fF485asz+}#Ey!|SN=b^AC7Cb&i2TKV+P#|NwXGSrHyeMxYvbj@6|KVi zM9qu-q(Ez}4KMORY1A?MX`+-eCH$v}O=_emv3aaVq(sD<-;b1ZSTwB)gbU2v_jOZq zsNPPuRK)su-_}O$oNXe;lExJQVY(s)^SvIMP}&nhODsfyZbwU*VRWAJu0I+VfA?3@ z387Op$p#2`XEri67J|!Fkk=OA$Kw9R#oeMF(-3*9WGz*KiC}GAYk~|7#@hOCBN%uh z`FH-ixD8h@3hN5T&Yg+bniSH1Cl!S(zM|#`DVRJDXK`+u|3UWLPPmaP=H`#b#S^8*hzm^nER`>W5a_@bORg*FGf*BSsh2}`& zhI)+7EtSpUuhV+Wg{AF%86e6V+nC<$Qe1*8C6HbX{k^PgcsJK_Bk&84sS(E?`2t#+qMCZPndw*J^@x5p|0GDSBU(2PagD8KCb&fO=2R$x zl{f8&sen(+58To7e){SBfn%Np8tZ-1ejXn-n`n28n@_5ZCHywx|4t47yzPYFBKS{7 z{FA8ZuKPX6ug&D*WXoQELI^t%$FYSNj92XpL(`icL5OT)F}Xu7*nVogq3_GR!Bo)& zF4fxLVcD_5kDlNh{~1WY;JfLI%HI@N$+(9mAYSic^bjJTb`{#v} z;Uc`Pd71xrZdm5WD*eXuJ}^zCVW)eUmXe93v&sg#}#&q_#Z%<1KpIE7*ro~=o*}qq}KbXL+Rr{P4e95PEG{>Yd9j-P* zT8ffbI6AHJEgH)tjI8{~5-Y_+;4&8Xofdwlo?o2nF9!=5Ht|w{K3@sFKL21+flKH* z^xK3_BtZ@j3zHDvMZW&T9Th$!8UF>LOU&`ow5e+_r zoL&c6j^pADN<0miv&=1TVC*J-gLJIJ!mNF@bx{uQuTsT~`?Mdi>**$An?ihyGJ;B) zbk~pzqM0O?G=>laE`spA08qv4FqvQi?&?GWDN`D04S%Ev`7nRsh>#ly9 z*$my|>i92MAv_iE&bL&B$xQOGnsG4k^B5UVkOA+h(j{@D(AymNR_($nL)RY95GE01 zQt*vrr>!T&fg_3;z0a~2ohp|?qB#9=fKmN-I9P>%Y&bGrKHQBHRB{f~oZoS;Z>Ow_ z$ef&FPE2T3bIkSf)qUykTelJUHJEFr9~sjlf74f}`)3(@dr3RR%3XygRVW#$5B)2~ z{c~}f0}E84C|Mdq{w4R=vZvkq(nYCw^j@!DghRB?ByayE!njl@p(oXKf7U=vu-OTD ziQc3n+nM7P{B=JA#F0VJ@`lKx@Y`<`1jA^OXkp60Cyi90_*Vkp+Mb=nUlfK_bBQ-| zQQR?#pHV6H?AN=yk@+hUaOO#kgHr2Y#5#jFtk-{iuS>i|dyIi6O;bJzY=;lvb>665 ze}aUF0kk+ScuJQ8L+%Ri9$K5w)F-^i{G0{XB`qPTX~D0}E5Oh%iHlz{Mp!zrB`AFy z@5igy@Pb*$UqNlEWN3a8rEq?&-QVWOXzjTYb1Wkmc5#-@ddacBTjh`X99VTyE!X-& zDJ6tsuW8)A*!qE9ymdjwgfG`G_tssl6bdnyy_pI+=TqzBI=z3MZGRQ_nJ3}|i(e@c z^*wt4MRWu!Ji-y6$P}7-9uF{^kz7I(A@_n=c?V9pGPGdZ_U-Ti$_iSw0YvilE}KRh zYqZwRt?y*hNa5-Sl%*)Atn@_YZ#aK>WOYihT{2_IRcA@- zn@i3aH2-e9J|@j-T@E+n347u)mgF3vnU5tByOTES-DoE$&Bc7fGJo}&%=#F2bT+p) ztgo$a!I{r2HTycCmls(CO?$X5r5s%no@KC8QOEH!Ft!#-57kWlMkM?D&$BpZ24yBE zJxtT$jmMa*(Mw#8V*9`eAb8p0w_YWuke%fyGCP@Yq7p^YeI@e7!#Jni@K5ed8bM7x z+`7SxHxj4(RGTM#p>z!LVA)$G^u|S z$tCQDpaBfZPDqTwFX}uLjvkCpA2-4Ms4bE;w z>`L(va4*D`-5+3aW=Y0{7Sq&=(iVS=yz@X(tAy2ehsI1Eh1EpLLu>%+pQtp+*J^r? zLBzOAFN^drmxDYjPwnREbUu6hx3x_dBM_USbRy9RNt0H`=K-+Gkf!;SCCClA)!r* znc@;O#m&DUeI6Wp4`1Ax%@#Vc=4G;>+Iyr75_SX@_d4+D&<6n?KE(1ZRBufNo*E%I ztALwFS2evdp1G&JFStcDo=Z7oLGbtVAtXy0xbj!MMn^;m@$_76g#;12SpsgW#%2*J z3xgMtQGv71pYqEBYa3`VdA&z>SDk;TN9cy^b0k_73;ygW9c1xp(zTd#I*U^(pt4N< z!AvlE43;7j(9*wKxXno#dkE@JWufqw6im+fw)yLFl3}lZ_Spm7%w-^qTWPH522gd% z->ezJ)%bp~vFWp4(ox=ec+{I>)3CS(-r6O1+tsDL_7Rss4eTZbT3~=i;&MbBYaAS8 z>Qyt`gqd`$njHshIScbbp16wK)ND*c+|HqHy1@=L5^Igf?5YJZH{CUPM?~YR=9{{fJxXCrO+8{53Hznu+X5!Q z&NGRizXKx6MUOHKmXVJ@K6b-{#C6I-{uH>&l;Y3vLA?tC;C6~*0r`I`R)|*IFA031rM4)SB#$}PkJOQv_AN)-(huhwmkIU zL}u6uS)}x{4DK^hQHe``_o*90t_-mVAn@GU_n(E{pT4-iEcRdXRvvYKygxS5MAove zHQQyvjyx2te81yjZ9BfIKQ#~?&MOVxUd5M)hXa+T)Gj#)nk{L;YL(|T(q?*<%{vS; zt{+=3wD`n?V!i)VBNfQKzHTeiu>opbfbDExRC^JJ=xS(>Nwh7)s!Wx)wXd>GbvX9- z)3F#IdJFAWUha&IhpNAR9LDB;St4>rMqW_EHy7F_wn{GRHj245Mb-0M3_|u(H?|=% z0b&V8B$z9y@-!Jn2x}0QT zo@p&SK6oe>YQJcInP3KPFiiWdlN_jO9C8%kTsT?N-fEH5*vsVdVgd1d!KEpP0lVkL zVW9fC$YY@yin zolk0O2J`Dl9tRjco;3f%3XuzQ){I;*)c9+-X~P||w~Q^25) z_&t;-$9-MAkLlI;gT_Y)5y~p`>Aw&%6ahS4Hw^BCxwNeTrM0tJ7c&RGI0|{}1*gQm zzRFs);z-XBONpt)xp0_JmT4suA!6}Iba6d8O)hGU@rdh=QX!h@UXayO# z!Q`X+*0y&!?2_oC#4Gt`%p;|rQX8($W+Wd=%#k-wZKSIGm46LLp^j9knu1F;3=Knr ztC=4!KURFB4ynnueZZzKe_1=8XGh!VeHVO${g0Wri+^1fCDjnw%q_^vkv}#hcPxl# zdw};WtMxz_I@-+vQhHqEFM`&=JEC`;`q)&GXye}?Q(P02HEvd&@ZuayK&lcqG^!Et`lWFWS88pX*u7ZG5K7`gKqI`laHlP8eDE5DYqOaAp`9gx&1Zcz;&j=tUN&BX@4j?t#kwI%LFce&+!fYoq zv0%199f+0A`Jo zBI%>Z`7t+ux0}?~>t$J1A<97nCE!}wHop5Y18E~=eIexa9uWrB6!S3bhV@$W~(`ys2TToy9^R6ssi2l+LBf2YkS|Bff z^Guay%ypXV2AL}~k&XCDUjdYc$u?PyqGCT$$J!uW%!t{x9&M)bf}2L0(Am1j0}}K5 z#+)gYl`gXdYWK4PE~Z+KXbDod{NXj)v$=zG<6+j+c%hjj$udT=w>CppJ;PmG@XA>rCrX?~ zX@!l|#67ZcTXYlEzZXKJ9w1pEL$P~w2*f}+OGHl-jQrHw$E#E_p!)HTP@T!jwNQ1jb}P((`bl|19CQid^$Ydq$Ws;kawV^ukaCCkd(?*J_YD{W#Bt zlu5r9H7h23UbsEUI%x-s!-y zBUS)`uFQ(LUpWSE@<*GEH9KvB0j05e$S5@G1h4Agf9V}#!UNE(@m4v>Vh{9~Ek5Q) zd4i@;@%z-5TZZd4+vH!c)N{AbP};FVLIm$SC)@Ro<3aD@6;(=lSv|wU(V`}{`+z<; z1IQ11>cAs;i91L7YqN|Cyf3sVVw}?6K}`+)f|N|o*o4zU0uI|d^IHrS^WW9wWNsQ;c#h>`feVMcKiEO~k^&gK`sr;><}T?}diAA*P*mz~j7V+P zKEGh4^Q_uQJ%72I6Qw;s+hk5lUZQ%!h5%C#;A-nbHzXCSR<(Rr^%` zcl~3KoWRUb@HMeRE)oAul6uGxu<>ncL!kFq6o<`LJ-rso9>Kr?0vhZ zeK*)+VI`WJCwt(P)%HPwSuwm46=wD0N33Y+S7 zwh-`+KyhpLk`{0Z#)+1A#fJ?m_h#m5AgxUc55x&uXk_PNoX(!`U(HvlIZd=ra)BlF z);u}<-|3Ve$`FvXa%3TdtJHYP! zj5apn46V>QXvvJ<#($RiAbF&pl^EbcSE<^Gj~c#d8<#MBS$v$t94MW9G*&lV5G)0X zdu&@2Vk!jK5WXThiagA(V+G5C&y-EO=>i3$kR=J`G)lUoB0?Z)6vu@ujO2A;T57nf zrLr{F#$*rc{bnCp(pDzq8nGMRd*dQI7)YP>!iC!x_OknEnH2KFk}jbLRO9M{jdac* zshITKgnyafK0@w?0*At}1jm+pcS>qKQtIVdmj-L_uS`S2I?H$h;Yckx~T-oI8tAiJ*E_QSoC`urI64G$PQQKHE?xQdYsm-p@ zQCaFt5X;PtYG6yH$ai6d;=?;VsCaD%BRaEA`>Fens|F4$4ehe&hPfcng--yxq~m$z zXrTWx%+_y3SR1a53~6vPQ6)OW&j(WmHd%X7rUqyG)>gAh#ZmO(uw;>t7v_2gb{kYjubLJTiAKeyD(!z|Ta#Yz6HEnlR;a$_RH zcUxSwTv%vKjU!z=TR@_M3bwhHVTih%KRdxf=O*7g0%0smugr?W{n+LCt7);kQ%tZB zAq(>>5{rcZ#wIy1qTx5$%niP`PmgzR%s(vi`i^f+k(#j+28C~ColX;R7S+5*J+&xh zQ_)9Wn)IyPkc7Hzo7GH5-ia&qmrr0S9AeTLoRTNII2v2HJ$`$#uDXNmfNY`9n^u!Z zzG*vbWXfwX!vN`S z(u2rj778;3&m==49<85m+z>(BKM0Hlg-8vAjP%{>-&>K%wCV~{XB0gvzQq((_C3SXJwjKa zAEM9udHn^Cc#>L+ow$~}eE4`5=RSS`f?8U%pYI>TjeNK|JDTt2f>k6u+D7hy)jvy< zVjQ#(4hu2Grz%K`G*mcl$^RZ=#ew`an^Z^O&hEsBLoNC7c#O_%Kjy3$m=@%;-kr@g z3n321XG=i38v*XqN&M}t`sA(@4F!xXg&sa?PlYm?^mF-}()t|s69nK(?H(-MAjWE*PBftzDiUXC=K?k<_;N=%xb z%~f$g%1ZANIymMiQn>Dac&fw6#ukCNZvY=T@7nQR+-^_&|H@Ctzz6kF#sdweugUY| z9qUN>0t)a{rtKSMrqq_6#}XNZ-g%=bK`id_)E*@oIUm#pHB+@dTdWuZuaP3yD33j$(cgg%O;M z{U=gGCH21F9;y$|MCLIHq<9Um`I;prxH#Yb+83a3)4Mw8ORtVjPlGdo58ppqPc$CP z`rG=y7!oC)s;2Wb<^d%u&&N$6Z`GD%%FEyucFI37ON_xvZxi{1ao$&?!xxUVm)1Zd zqsudghMYZV)zp8Ib_(8`KeTX>!n%^FOkS3jg>0ip$h&f$vfSsN8gV7tm9`?DRsH5R zOv1tk@xvm6OrdKYsJ^pV|Kof1 zery%x9joZ@rh}W%1K$R&=RN|^GV_pJ&?&W(PYN^1 z7e=7Dxy|Ulsd~52IVZW6!06T5aLFrDAjb?9JKV2EJv^SBh;3a%{n%{@Q_izCtXNc1j!|F@|`<@!G=jiEa~S;AJnQCoDUy-rQnxc( zVSDf9&0Zc9hE-k%j38uJ`5Jv{0ZADX|2hj~2?kY7yBF7WJYSJNI;|OBTw+rR#-%KN zcue7?xDhDzg}4~em;%Gw=cZxW(tzEGjHM0pyPLJ|L)$JHJ*xZg0DZqNwby~^uhms^PL(Bk(qoaAK&GznTdIums^2DS)jx?+Lt8e?37O#O-Je8k`8eg14mJMP*=R?2x!S=6bHI_I&7h|D zvo;U1e1a|j$RrDSt$_OF6FgdYs=QqV)1D4cM=xV69pnb^9lyWeqA7i`$N;Wg&-+O_ zii^ZW52KPOmP?KFY>gfsA9CafC<7%^;wHmuAX8~RrkwOAHm#K^0oN6!FGbw7p71GJ z7r^enY7XFJJZ#FOU*E|JtouppT>kbR2Ly7p`!3m?E!*LOunD79?RRH!O2fP(pyf(X zlvnf7BVbB5)(RzTC3%}oo`uN*A3qdtmn0A4ZmkacB?F!}KMsnPNm{bLGdZydiQ`@l zBwIJ=IDu_4C8hHsmFwb1JGeDzkv&NAm8OQhF1XF;odYNpnwX%O#Q7+K95?N3dGeT3 z;*9i3>=%V@*>0urZWcds4+dwSkJVD@R*T=)E@E0*&>LRGo(*FCmD(4#&CRUNPoATG zy99K6TgZd^5r?U^r7uaL!AZokwrJ4tkRs{$5s{)3$o|;W1w?z_Xc;mni<5U!zJov!4bg58?yS z-^HKNrh+va+t&a7(&B#`gPZYIGqU;h+mO3%5Zc@6_H6RjYdWHG&5xge@AEyT@b_Ty zY*wyExGyXLKF%xZXlg|*!MUSTV^QM})$7x>&ZlcpLII>%K$I%zcWbh|)us`Xovf6} zbN0^JVpHi*1PPf~Sl&;b-lXSeH&=mMnp$v&gs6%p$pO>clnk!<5)-?SK%L8on;9ds ziwauKAl7CJg~WjrZhk3=_;bqRbe>`Srnf&G0o>4R;0#D_y@t6FvHg7#6kcYR@f&qQ zJSHu^5Uo1aWy`;uFScu@sJ^LbjPCxKwx;kcV1MbuvQ?sSof zZARRW<`_LYhm+lv(`eRC%{*IZ0=q09A*!QYf9BsG6>Xky(4jO|g@YGohWm%Vr@XGOe)TdRzkh9=|< zBJH0Qcgvfx(96TbTxiz+SOEpWElnOSvrV?NE0^Royd@4iW^wP*(Wp~0?}hC4vFl}! zfj^*o!eq|`^DCmJu$@bg_#r$5q49-4+YKoX`>TZM{y{-@pAd1}FfikivO7DcdHV}b zmDKlk;4d6}+Ki)*fLs{vur*_07>trflQCBMS%E9a3f6J)JFh%_1QCRXy>qT;gDSlv zfj|-eZ+kI+J_xFL?Uo}nX@2%Uk1Me^8v&@)H{tFbYPPX$HTd4s9oDs1#EZ*p7Ks!C2d+R&)!v|e|zKQXxjd_V>xG|F? z%F;LW*3vjTB$zc)1!OKiSUwxSBSDDezf&bMij_G}Dwa72R#c`uWJ{-Zk=%46J!bRD za99jtVD<^E=J8b~1%-@QAyI|9(FEjZ5nxxI zc%5V>t->O3f4@}*M&gnoALX@Uo_@eCkZU;|4PZ?yy(Rl*4Ia&zQd*yx_Je0ckv^B$ ztjw-GQMe|DHN*vg=hdZ=EUz>xM1<*&KgI5&^EnWJP~kP8?QNM3x1^_4FnD9jX%1mz z%rwRu6EG>CF_@rferwEq)FM57#HzBdu0RpUqJjaiE;twAOG+EN;Hy)lW!$I$Vg$z4?X=GoMylTv!%zkSqI`HU}ic~Q?8n=-S-O_=c*suvCNgaFbo3&t?#fMOD}*z7a# zIKLp91x;5bH(e-B;0I0P6V|g!6s>TNdUF;bdlVtAPB&#DXBxJ;{`2z{V!OcsCGyJR zp0NrOA_TjWjS@Y$t5b`Qiq{x=n2Ah40+P+u>pxL!@iG!5Rjf$H16Uhk3sUM4N~i3A zcV3b@f@V3SzUm#CKl|VK2!R65cwAxIaXsaGW*M9EvMr|8rOdgjhIe&hA=|r}FWt#@ ztA2mOvsk3qYwvoYlsWGcpHsCHhD{*P)BO^Y#FRBIO8<^PVoe@E88Qs|yYM2mho6ZY zGy4H=*6}PPx&J%YweHl1fLcebQvGXfcTnPJ+V|^tE-gsC=j07yz>P8(VZ{xJ=3o9# zI9Iblv6DT0!%Z4EmNpP}4d#W+QZsyZ4hf5L+f&HdV`T3!)ZOHe%k2xDLvCmyb6+oG z(2*e-eCku(f0nCTGgWf27P9$P*^WU^oyvSR#lOJ+(y`tPWn384yc#GJ-psj(goU=F z2GCx_%(+M-cWl)OD^z!0RM{P(rd)@V0e_|bb$vLv&lwt}v*2F|=%d3MJ`@*HpAalx z@~;CRmSMk61VIc1;YfT%^CkN~W=1J1N}(d*|8EwmjI_8a1O#N?SGyD8f6ro0$&33{ zLAt3*i9*y&5gvba5S^uU+#n#n+5Rs>hPPereBE1hy(QHu0U{tw86z zuHQMx?#S_RuQ`tO;s++>fQ&K~9CGRf3_%#WC~p)7ZIWwx${Qx{sK}q+5;Q-f#Dqz) z$ROiw%r?Y4CY#DQJLlP_)r6KG!5Ri|0&kE8Oj@;|hgYHL%SWP%?e^N&_NuMttw6iE zfLpN4{VTxdQ*P_+=*4p3xQVW;-=&RbGGlRRUtQ2?IpWr>}y{X72f+!c`TB&C(RS>6EF z=$O>4TGw`ZEVDiL30UKTubOn^G;(ZScd0e_GM&CZ{9U}lIUldls3LqfE>@{fw{6k| zcRy68$$|8$IBgI6eYym=1Byz@3H@rNat0lJyR9E`?mc%`2-WEq<(gg`+g~@|H}Zq7 zJ)eA6`0|)@*Xmq(z2MHbH4guR7eE?Kf%=ZXhql>r&dP}QL2hEMh?BrAArhunF}oQ7 z$2W_nRbUezShm5l?YGu=F=wYf9SJdR#CVBLt=H)!z_7o28lQOSaI9qRWQkxgd$5w* zHfC`N>YLR0__4mzqF2s)v*+gY!(w}=k%IwR<>H!+m%#6Yz>?XT%Ll1$Up@n3>T$^` z4PL{_rZs<%4L3otNdXR@%KSF0U3mb3lkTOcxt#{C_Ih(lEg(r7;z2Ci!1a(d8z4`u>%Qo+! zb*o)zx~jj6b>-sWcHg&Y9km^mz*6FX(01_Vje} z0s!XL1R36Ue3lvcWpaLiwsPMhf}U6|xSYbl;9g7CNNmd^X91F|__4NCd*Xz{`!Alx zN^hORVY@}oS5Ss+9czaeWtFazcaQG5zKcL*gqsD3-`#FevC4$|{bx%%AsRf1N=4p7 z*{J8Gv<6c~S4*|#$z-@uR;`y-tZwnru{%h0uvDY+er)iXr-4N1(6vVEHh+}rVM7IQTG9<=X!TZ9tO0 zR9&08wRhkA&$;5dUba?ulC1&wbp8S z!ILxVtB+{i$J1nY%w4Wjdbyl=J>SeU586%Z)$g|Ru;-)i^h}O=d7_H1@D{Ei z1Ldpz-NdnVFB9%q)`+xk0fBS!Op8az3{2v?|_tj?gcmK6dKddhQx9`mU`uEqa zr|8Nq=L>2T3to-A%&qqoJnzYd<)OWLuB*>w)GU6?Ez{O)LIB~lE(`U&TWv1}#U^82m>*C+|oK~a7Pw)7~ zX8Yv}PqnrOa4cFPfzvrhsA_A=hO^VzW(MczAAF#P_6oLlzl~+&aC~%5QZeN=$X~Mi z%&Vt5m(M9yI|l7^;+pspKQBPY3%QbxihuC0+y;N+ql7L#-yb+I&+~Fg8u<|JX75$% z9z)RJQ>sSj)?0wb@%YUsvu!45U`4g*J&S8w=%U9$>N|bfpIdbk;3`D+II^_T4EF=wjImP*Nz0UHv zQTY{n?K9bt9FG{>atBW@ckt_*CT{U;&foDQjq`>lhs6JhFUTQ^*FNNf#0%cBJXG!= zV{~GrDwR%xixL)ISdof5nDdxe#;-Jw3DXX>M(f3KTxzX6Rkhl52hW#spBR%oTO3mU z*ZVP{UZg}s`J?N0`Z}t}>@C{RNC^wR(Zjfl`U5=wnZdzVESW0U830Y5?Yjh zbz~#51HL}aF^kP)7Vl=ai@)GI_J_Pxu6=eYznP7Av31$p|INSh&;01!@{6}0MEFd+ zU6C?cV1`yyE>irD{`2qtg~sYPudDx`b>qkDQ}uWM*T4KY-TzauNO9uMxWh7AiYwrIuZ?-@r&^>o^AHl2hpuxEL>M=#%9| zf4qkOfHlkot98fyTsc;N6=6g#mrkb>A9|6d$1N8FmZO>+edq7u(j@8mtwfsAcV0g? z(66w`uAdz_K%+Kdvs$~`^)C~=*qG(|xIMY%9od=B>Gzy1X~=$e%n|VIK5EC9mFscb z_pZlr`P+jd5yR&`_yN(@KtNgBt=0@?v(=K9LlELw<(_Lfed)W|7{PtzVy65 zwK^cF%W*4bWs+Kn3St9`3yFzNVB$?hd90&16>9m%!{M^qUe>F_^=->RZMR$PPGhqY z6fyo@H{N3+=`TIY9|4;teU%DD}|HkkC=%2eg{)L;$Uwf#0 zcX6)%jeqr*o|nge%|*x-v?V|%#&^6~!d?AQP7C*9GYHyXkeSMQ(q^VRSh zH_k|+zxvRAwfo)a``OdOqTg%x?%r6bPQSnS-tX)d>-MnQzqtYlTsFHnw)Gkw@vy7R zmiwotwHVRw-h9eVH`kwk2B&%RCx5L9xO$#fM*~4?sBrS$pVDMcYnwm zi|wDE*Ps5da-t@<7`1e}FgeBc}Z8Xe^UC#T- z~sQwo}ZrA z&(FtS{Ka0c*BuTzqpS98ve~Y8qgMmzRSExuTZu{UC;Q1_*X`8n!&`qn>~vONeRr`r zcDs$ycp#FHU+zvI=iPC)e>#a(4ni3bA?tB>JM2^&Pt%!W`_U(FEb?KwVYOWxCz+iI zR?=!(!oV<%#^Z+v_SF5DFZQorjfR8v9ypPB|J)lYS#V3o-C{Re?*8TvrXP(OfAW{! z2($$=t#0QeX6lVrs}0lrgCBnBsThFUp`1P;-P3IG>Z2QPcG&I?+x?&YAN-U5$q#1p z=cmhd`Ja6M?R<0i=w|f&FCPB!KlSZzzPYnRf8%$5@UMUS^56Ni`G5X{`R`AT^?&WZ z|IPXK_`7fCAJ&&qt2(NmyW^Yrv339c336Z+TB8vUeVnCE!V2tHOQodVVAyGQI=ybQ z(~%lM#Ra;}pQLytX^rgzxRW8|Je_oe&N%bPrrRP>hzoE z%DB_&gFIKe>znb_HRE~dbgTWlo0df8m~Crc4=UROWVzRsqMsYvm5|Vt_>ce2J@0ip zYy*asi#oUcR=>xc0CbwwdWW}op8oo$SJxon$)sCd)E3Y6^{h2Iw+{3A`?vr3@4RnZ zPT%}wc>5b~n&VFUZpicQA7;DzN$)ynkG!+hJhb|q)}Ys_omySbR<9lR?b~ZH5zH0V zz`|bL-KzhUHMFj+KVHMX{~E%Ts>glT8U{x?1+c1|8(`?=axfY<$Ld8XmO3u2UMFz- zaVtcUMynXsjwPwz?h7z23E2l-tpZXuN$m3v%;34P*|$e+0QSSfLIkU%0@9g&n9Ez4 ziEXX1ztpz-vpQvr^tmPyUO#Qlod%=q>`Up6jn?5(Q!{FeN2f+>BOq)vK~aZJN3ml! zSIUujC`PVWfl9M0KVtv3ji#8@B~{fp?JLcm3XSTL({ZW}`X2q1GN$-LU<1Nx>_vQ_ z`Oyd#3?gePT-F*T$Lm-RC9DsVm1ybes?+HAo9*uY!oF8!v>slH@0i!xL-`S_ZgnQp z%@Mi`+ATSMPCP5J-V6{2^-rKoCY#rKrRQayd!G?-T-r@{| zNnz%=-F|e{7xysz(!LnS-M-SUiuYOBKlp4alJyw3AK%owZTHuH&1Rd~V%6_=JjD3b z&188v@79VcZ?4++v(0xtd-(7D+DF&@PIoY{)L(sg{_lNK{}cV%@4VkVof_5u@PGg3 z9%s9M`)_{sJ6~)*x#_+hF)hxIXdLERv1xM4YO}-43%{EICHGQyKT)eIIzjOgy>n&i z@2vr(vI19^55>YKAO$0Gp9OUBqcEV;QCQmO4F%8p*`nD5zSp6RtIc_{Sa0U5`RTOT zoPPORpfbM^Ez|Akk*MwfLuw`==m|Ee*%J02FIKdH)gdw%>dA6@k}l^z;^wD<7z zezQ^B;|$w3AKm)o%^`^4{o4oO`>5X<_FI?5X}MTU7n_g2`4PVt1mKv2MZUltoSpjh za#rsp!KqxjbrI*@$s3Kk{>}G(@c17+?OxTZSM}=J@(tfdOHaw~|Jghc&3xB+Zf4?~$3dp$5wj(U51P}O$S&Ou=Ot7=;;nX+DYI9jh} zyWP6m8NeJXip|xt6SZ1yrSBavK&|@KAAXq4g7|Gzia+hhoP15U-x-bu>*eyaNfoB9 zUT;?!iRG?wHBRmij%$cC070p1Tv~0RfJcShGEUG4l@J%uEjt|daJO8-T5Z4GHu{iC zcd+2HtZ7?m^eA`~qC$%uiqUTEhY0 z1H$&nxGnc&&N|h7y*sG)#^>YO3IMefiRaUGuixHO+RdI)aqT#J+PN^tqqKc|J!Ea! zcS|sRp848tr`hc`FYD7vw!YcjzPbsX>tQcq;h>YEL(lBAZ)B-r_|!ANBf&%aeRuHq z<@@J9ob3noYOhxPwQt?9?1Mp<#e{XF?ELU7M-Z7x+r#QPp2n|6DTjCsNO8qbYYJaxcfB$~@uu|z}nj79jL=Ec` z+^S3|OmDXb&IRhX-K0#7Rj^zxtrO#Lz=b+pIKzYD36IK(TvM*CW0`fLGDm*LfNv0F)Gw})p*eXrZP8FzbK+kRq58f^~LfB8&gkzK8|IUbhV z-E2NvovMquL%7+T>(+j;PAPn|J1)^C7W3z4yLg1*0#K$?e^;V`8iH1~gd5+kPP5ha zM~}-ulfI5W2bNUp%gu3LZ=VJ?-tF0+FV&~1uc~gKOaPx#eckH} zy0{W^Y1vkgD*f6X>U^)FL*v}(o?2~>jR&x6wt3X06*yJ4Oga~(oCMz59en0m4e?wN zr=03_-y(rjLiHJ&)Kei~VYgF?IZU z4X=N04eKq5Us=O^+OF2z9*>Kkt>NP5*YF^7$r`TKt9jNCVE{5cpa0w%s{FpJAqTOv zhMONft^-wfyN;)TV^^&~0{4yfX?Tkcku|K;o@`g8vT;Z%wXES6QzVtE>)xkX!)~{% zA+W_7qWjDi8*Atf+>7ks)cyyo;n4y7udU&+tf3nE_GfE&svernU8NHuPkVq|g1_fm z;8dbFf1YlZm_Z2nZ1(J<|GNL{jdQy_HhXSc2z=H0{#=8h`0(B3yglK-)P#`W zP5)K4w~2UrZh-}K;2lM$Pwjc%tPO_kv%uB$u7>5dW0QrDYetccfP?{Wpy3Tw8$aeB zd2gw(^Y0^sbN-$=@{>X*C)SGjgWm-~_?(wpqr?NMz0{icP3TxKR|sYJ1Aa2_Ly|LS ztKtGA{peo~hH)Rh>u?tP)_UFcSj5#XKs-RHC0>b#5KxIJgvJ30IHR>k-E2Vu3SJFm zx6S_SX%xAb3`K(3a_QNWM64lBp`T8vw$bQt7~wfonC#X5@OH}Ih^l4wjbb?(*09oS zH~QlQGxn+GR=S#XN64Q&!@DOJ?mQZFZwFnhFW$}*#?+{0Lkxt|3H3@%yxRrqdSzTN zPDqi-YQQ4`U^H8BQHW~5&`RBRVnC+4*J%1hIP$pHn!16<{Z~)(|MJK0|Ji^17k}eh zuirf{ALiTJ@leI*X)^uIo7zXUGaLHl>Qw*jPu=aycPFPWXR?Qr01Ou0==2rALzNWt z;nKBRkcG2oCpErO+GsWxk5jp=eZII^4gZhJYgupTgoRv9XRL54A&lTwWL6PlhJjV7 zxoqnV+qbKBhDZr+;HlX@s_C?wIUMsjV&+AeUS@mPskEKi^>e$m+pgy873+9vH5Rjt zfPagh=V;gfgieP&CvF=+Q4P_(brqRE0W-&l<5ntuU=sWOIGM4?-9Z!FV9S+Y=bQD@ z41-ldz>v8uXGTFfP)%+8JX>#3M(PNkm$S;@$9JRtpbhJR6z3Z30chvRa`(mCXSS?6 z7jq!6 zA?dkvJ0f@obUs-lAG%IX3@Wa>y53b7g=%wvA;IV%*By~*I<4&<6L#K!Tp{x!Z6N5m zUG4g*-P-QfET=U*HnWC1209sngNts09n9>Bg0~l*Z`4~HT>k&SoUPg?C%l6 zyXTJ2)34W%5$nq#+!+uXJGDJG*D4+dRNt)O7Njv4xEo@$Q**GZvh}Nm@m(N@R~DXQA-NfumT|I36_#gA5})9l}ly4T&|7V-bZOCoISve3-gnOGhxq zLVP(49VP{BSnYg0o7=op=FbU0g%SW$0aBO%2#7~CSUWgwwXu;^fjbT0m6TQpw_NrH z68AQHTDu4;>y4hAr&Bozhc>ltyWWKwhpOl?RJUw!tKB$nclGm8P}%OO_Xs4_wnBUG z^^no}ZcQGoxv}^Y8v>|2v;A!A8Es`4){ch+qe?aqwv;Y$NTpb9KN$ zoe8K`4y$GE2mB>Wyr4<#uGI3pUx_1|4&e5Tu8FhYqPUFbfVLR)2SnG|{o@5}Ih@-F-$?ndBzUsfD-{C4H)U};!8zNgF0x|U>=9Job zaR&!FzTIrFIQaz*J(O0#LVzK7PcHs) zYF~rLk0-!6U_*`oMCT{?`&O^dlq{Dk>vl8l6{aT&Dk87Uu^2ve$rO`P&n?`KR7pcB z_RQ-!*W(?<71gi{kO~}*_sHcbtxPbYGAd`T@r-quH??Qxt{GN`zeiznk z4V`S;Xbt_OINAd#ZumuO=z+5b=W~D932nNXbxsN#DonT}5IJk;oOioJDTMm<&3MSC z`oK;nj7*li(dh|fR?8(CIh@R^K}zyiHTh=M0t%_vU-i{&Pochqq|B}60?tDL3f6Jb zpWsbBl6MY4-HxWwBdotbgHi#TTnIz*Vm2-X3K7Zymj&vF5_AZGmqYapp&te52~{RU zoUnmX!`rRII%1m8CCVXr2`{p*VKsZ?l#KE;Fac0^Xpe>O=X>$_T+mCUtBBly++qAn zS5$IadDA#`KUQzVbcKk@t%Y}jgePd)Y{g0~q!;$3-aPs4)zT_h8U;qx|J1kzq1?AP zrIkjNBL*W1e)xu|!z@?JzLeF*g*sXyyg*1Gh5X+b4bK^7^qjHqW9s^jda%8mv=9V^ zM*UtV$E+!(_B0LgQ5GSj$gCK*ZP~oF*rf^LXtz~$Br$Gu4t6MeRd*1CiihJDHx5tX zlL^~l{BrYFGw0lQg()5OL~QkDu}U4OJ6aaV?(TZzd^$gUjD3#>;qCQ(<8rZVsd?bx zoZz%}A*CscCw0ypY~=hDmP-y$;n)H_?1=MYJtU8qlU;B6r+(#=O1-z=tPt85x0dun zH3kAyZOT0M>(%f4=;5#a`Qcyu^B?_N|LNm@@%g6u@BFKu{^X0*zxVm!ckk0Z`M2;wP<0^WkPRr?&bHw~+v-ijKYU>({hWAyT%F>sxzuC-6NYRTO zFXS&@69_`5K)7!^b7A|huIYOOrzkIiUOBk5iF6xH^C_FASW&tD< z-XTNF;uOlTpD&~le+l!F09xH*wZmHpZl3>!Wm5dXB@Ff)aqP>&U(9p9*xImk9qB?- zj+tW_!agc=PNAN7CDoz)WlTU8OTCfTSpd2~>VITq)<=nm{C%NoJp785G7o#dN zw3}`Ui`Hni)$aWSI5j_H1vJr>6W(g$E%|c1k&fdNmSr(0*@(ieFIc9UJy&Pna{EOc zT!+M(b8zKCfVFw9f?r{v_h+zsXqm;XC&I3Hl5A`4bD@AZK`u&MNi7D&i;5WX-e4tm zuDp@G^&ZebWafPBNiAUuiQTPFjb7N)`5=C;-^-Od;+T1X>2X-y9dm)Bo;&^v%EUr$_(p@9qE7KfJI08~?)1k3L`h2alCMd_MhS zzwwPf|LdQqiRBwoCQ7IyH)ar$&mw-;JB%F+; z7O1EQh8&kgPT;H+WaYeG*g+@8ZNBU_@$cG@(kZ~i07uG0WFviAUNwg*OT_syFKvBR zLL6J@i$tAk#XbRsE9V%iKNRj~zCzX(gr&pG2@n#%?o~|_?0DuJ(cBvKeBn5QSCs|r zHd|GrLA%l$3PnA1N<#o>KiTfasFl7`-^C`TM{Ns!t2Tp6Y>@{F(+_FEA&NDLo%TMA zX*MP8sxM|RSeC=+vl8*CWBPNrDPo7Fh{j*}n=DR6v)iziYOn#0$AG6{hCOjp zx^~s;!g=5w30Ai&S%6y?Yo7Q&7w^SZy1b5l3EvVH!Sajwi~W?^hAR#*;SBxa4#4PP zvvjf5S**0^ctNN3rEkKLhE$Wr8F|HCKp=J~7Q3*`)9jJvj+dM3X0c9*Trq{aom6FZ zLf3NiEm~ey1Yv8CkV4}H9r;(16m?w(leuxW+@cs(_0SSo2JCuD zPLqc&mOAYo+4H#S1TTDNBJvbu6c}FGJ;XR_#0la=UlJpMUe0P^)R#ayxKlbzauUU` zxwvT~gpOn>nbE-g0z@qOmb|;r{wi)$4c8gpojrn(Iwp;7Xyt4{jJX8+)DnmkUmKs7 z>J8(YZ;TW7Y~VIfzP>`&Q^ivHm)_<=`|&uU5py#R0c_PLO1&;peE*-lEVkXt{( zzLFy%;%fioChg;LzV@hT<+)UK-yoL9I24*@f>6PVg^HEnzY_F=^}X5Mt3kpPWtf%C zVsIMrQL%Nx%Hqkm9>>>#a556EYGl%qUaney*kg0zUn|)-@fA9G>3GpdDj+?rVGh*` zZjm5Sz>|xT7>e`RSz@OwCkZ735OBH7mp(j+MWN`2Vk>g8`iY!sz=5q@|Ml^?cX{~t zzhC(qKX|VHQ{&e9-27}^y<4koZw{WYHwebqqeF^2I4fkt+VUL1qlq68KO=@FaY8DWroR2y%d%8g{CtKtP z{3TqcRZSS*Jfqp4gzt^rnh6qA==X)*FxK!x#}*Y9VOrkpO7$@8c=Y|s6DE#PUfAtA zxo3yAC}6!*JcsZf7wdit)&s?cB3C(S5951%GMnMs;W^5OK0s$^-@3rjgtpb%&A8u9 zy}{31EJz+T9JzypCJudn*4+=c(@-x^SGqj{`8I3Wj#ul{^a;B$M+>xDEpf{R?fOtz z5O@!~3d+O@CyA}F?0aZbBXo|gwUNzba5!T9HxoC>1{w(|Rc&tUzz}m$DkM@;qy zDbo$&Z+cKOOL{pcWwjmR@e35)*Ij(IUsS3-u2#-y6J-KT$6`)sY0@iF(wW zggk=;$jVe8ojD}xi*D@h0NhK|%8+diE`mG4o}pTEbz}Qdce)y|756J-pyL525Nog{ zdiCxe_^`8yiU^o>wt&gv1cP2Lw?rjS`aD(0t+1Z+X)@p3^_rMl%n0x5=Hc+^67Kk1ovd^OV4a(z8e zl4b!c@37l(lCQ@IhV|uaF?*axQUc{3`C+}~Wo(4K)LL^EYV6jUVSGcsS#hvCxL#hz zUwFRfDTqy#&t1^!@1@)YaBs&^ci`c}oDGtD(uew3y~eq1X|O(zdi8#@+Shlw--LWw z+57d6u7=kj(#7=m->yF_PSyY8FSS0K9e#IT{qgGj&8ya@qn4(8r*?eZhqLnDyZIb` z%gHm0^-3tg%K1Wh7=8lgEL_~?)9f;ttx@-{Z}g%E=$TFrUw-xe%eS-d?$5Wa`k(pc z4R)sXvg<3@qLO%{(RZQZWM;F&S0852lUX>)mwg{y)YU(%-@aey7XF3X?(L0(qZ`4J ztMexv5?gVRrP`ISE3yJEb01aZxL>dREh`hh)9p%igIJx<>!&A&wtst_ekUG`TR0|_ z+s;>>zkfB9gyLX9sR9&)R>YRB*N>Y@w=o>{R?9_NGUUeKp5rMy;0$ zOtM-oQDh;K;#%6huNT}>d+##%h zFYZNb{!P1!U!6qOI=B4>3ay)?&0lE68i^}QAGE*pz5xrBL%chKk2#26?WUK`KadI` znObicNT|SeDj|OPuwLUfl>Q-cKtsHd432fLaf@laRKXPXDP;LqNg2|{T@aoEB?!mC zHKM-#Z1wcK?Dhmhjlpn?gupuf^5V#b{Rkzc&i3zR&@I;+U-A{v5T0t?%TWSWibal!L(?ygV}u92=$8TuPXc^t=Wj1*Ei@C)9G4lH|+Ic(SoDyuzzL?-oLx~ zjX$$pE|Rx9)_oLWp{&i(@V-42?`7vvCglO&A2(Pt*)TO!5O!9E{qG)qc9d z+hMQ6^+f7!H-DwIxxTCZzkhW6+h1+!|HIdf#qRR?<~(+P$u)f}y&leAm!G&KBd&sLn zPu)KPG${a|mG9-G&(B+hduaPg_J3HWO@m<(;-rs+)&g9g(ViRen zRA1T7mO*tIBzBtX+0=<*{kN+{QHcnAv|DJvVD~o_`Yr@S<}0bi7U^lS@|wHFe1k-h z^2!C1V}}or-ecE0ps0LFV#~ytxfXo1y8UBwXhF6*R#i05r{^b?n85iMYPe_B`{36xSeT1D2)ZrbKVtWcUAs$;G3?uVak zP!Q6RjS<0^2%$p$X0~j7GF@G2YfQ+1fBrTFJ>OL732D-?MCj)J#rd=%SX79Gp$RBn zM-T^(X`9kU60KAy?e$i6ve_WU#_UQkNMG&Toe(NijqO5ma`^8i2rgtCQ6}FCaKgM6 zT(PckT`_+=##$eY2MW+G0aRkdOla)4+A1x`*0v-0vEUvZ24|-^!W1ymD;`ESpAx{t zPXsmb z`^7?A-(j|psf0o(iw#^;J5o4XKTp#bu1l(!T0M@=QJRm+iut!(GJwcpYkE<^np1TM zo+(44t+v%u(3w6h(Cd*|-i*7BRH)x+c?|0aqd?r37E*`JJ8zeaH1QLt3Yx_9dH%(h z)6vbg|E(!l^n|8vMG` z645zd)~O%xu+qrHJOC7eyJA?h;|P@BXxm5M2s?r32@ZQ0V+MO6bCEk8y$+$ z^EKDnc3nl+*V;h$+h2I4$!$Cs_-n2VbyEwMlm|^OK&&g=?RN$Iy%vf}yp!&oH`l$} zaqCt0tQVQR5w`Gz3_$S8od0y!GLt(em6H^nG)P^A6w1zWef}q2MZ1?`1ym-^u3 z!&1~<0bz-Jl|(E}D#GV>e-QG0J87^Jt(=Oz>^DVlAVu-7A4p$9yIW8)+iBY_L(#t? zzGwwT&U^$K3}%3(Wq4J4xJt_MUp8EU0Vu4k%#dXO#STfK?~htI^#md<3Zd( z`r|Yyx-lu42?re?O$~qZdsAzaS7cfEyH4Ll7i|i^JnFlz-Yt}#G+$tV>mFEd7W0|! zRd8QBU#pF)3T4Qz!vIno6Q{qx=G7)L$@NXJvhW_cvjx|c{QJcqCZq}w>3_un#n~d) zS(U03vM59Z2ZO-D4MJfM6(%%|_jNazSdmgC$fL4F`W`$p7L*pjP!l1h?Rubnnms&O zj5jE4*OWhZ+x@-<4Mu3I(16}u*ZW1Up?4!EJ|p!iRI5;>7`3rx05tJ2+oiaEK5npr z>Pm+7|>@Nc5`0gVJiZBtV7DFWGPggjUyY;;< zpG9_P`9VL0#?qQtms-0w3Ps_tb^1N#pZtc*<>>q&)mQMm0(=XrTTc@#nDcanSJnr? z@vOHaC7&i^ayRaN^y+FmeUwexPtG<@jwzC&M4!%)By`d0RnO!0MTqi^PsXo48Xi^$ z$FkD90+?`}9^2&;E+9=!*ZaW`alU@4U)c`klkIYZp=2K(*2qWD+3|SHVnh2hpZE%u ztUZsrUa5BMHV`=eY#q3ELvAiv3YoFbBXL4wjfp z^^N5Xp(Fw@{i{JNBM_Gxu4ve^9$bzi> zYR>O{_4)mW=MC17R;!SePG@byt{m%XVg0P6Mpg$QD=8#Orc#D>I_VoA#_74Nb@ivS zY5&#Z%D5N+JI2n+NQ3NnMPis7UucSl1br$^d+qT!Rd=8UW8<5p2Fo?TBH3sP9f^oj z%}7LwK2>tv{A`?Q@U^7Ob;*AEZj!Q*iA)8CNh0n7Bl9GV)MgG1h~%WAC!ggAS-|wD zq?8$E1=H_9qH2i|>Z~qO4v(fiFH;Uu)_)o(F%eyLK5K!O+`Z5F|Gp~a$j!^Arj5* zVEXWO*zXe9S45v~Py@n#a zISjk4@m2SwhuBk#q?1B$-srtUuC1l`3{op3l|m(H)t7S)K1DMbLn3&w{%omy2k(*F zjEAvbBOIpF&OtzH4=FR7cnSVIrdhXyQ5Pt}Pa3lE1qSBfi??#N=ukTNa!5 zv+ZHIAm*#+Cw6eALM?GeWxdYM{sg99%o7lUP@Ih}j%Y;P+YW$h5%ERUE zs`L7)M-PO{3*pFN*^227Bo2GSUbtZ3gTiart!E73VY6toWTPQ)T)%$(a$FRA0ZIOx zLRTrqIkJ&%;b*S8!PhJuL1oQ1+}au) zYLqezDXPAmgb=PldP5_^oNiy06UlxWNE@F2!-py3@ajryPpemJz3jba4DKcL5qA^^ z9^mNKu4d8-0kf1d3W;)E0P}Vo6|YA9J3oH3=ViQ@Z0 zFbiLl5LS=fbSENFRt%F9slGY7x=HXRs9ViKKT9cPN4qPzf?L|^2S8n~kjf$P>P=`WuL`EYe z7n03(vv|Q16GA7_)JQ{nhgeAp>*qsZ(V{WLD>{KnkQ`8(>neoMg2;#Xk&=MGwAkNr zCrXk6n?!!36Oncj5o@@4F+eHGYZi#mmjw?T$rK{8xh5JSbaQGwa{_f3-MtzPvGfnC zukh!UqW7AfN|TASHb0zG|2)y??iS^NF^<=JIK3-}>rEg)QTHsr$Vw zA|PuriAI6SJ_0{q>jl&DU(%ew>&ZB!B8`ElhDnc(VPyp7CIAWpr9Vd)zAG#{`Ghcm zJ(9LB;Q zogXj_3;*%B(XSo8`(g8bajO60ZdR-Q_FS8uYO3*L70hn$wAte90QLoI%~w~0cEbu@m2TFzoPdJMHkaR-~t&18!4 zlay_>XP%Z5c36DNr8?%&5FEg6SG@PkpFDTr93QU6?HR-R9G*9kNJ7x+-jx zQ@oiyt(S8LMTnuXMhJlYB{3ON=e`DFCzzv80T24_ho#`O7rn2rOdUZ1b*tBt4@M_CLi8^&cMXws`)xOykuj9FMO!a;RzuCS1-ac_K;Kso?| zsPNqF4@B_CGrDmU;y`*36-upPP_0yvNHbOo`xg?Q9JC`{*uY@gaI)go)|d7U9BcR znkFAh%ES~}R+=ay4HA*uu=}H+k<1EMza>qtZb~Ib5!QK0V%8m6Pt_E%ex1=k?r#+% z^w}pZc5u(b&kYEXQ?$?oR;!G!N{5wBD)gAg=~o}7f9ogrUp*}V1}dsNdb%y7O>R74 zMpm__V#a@M?jQ9euHM~0vxP*aJvPubP&0MEq?j!&Os&DN(H|X3Q}g0+-VvboubI)! z>_ajPMqHDR;fL{^9`U~ zAzWy8+cki{lnXL^K~Y`r-S2<)B>4<2ugEv}Z1hONBR`P+>8N*F&?2r#vme&uag$=>QR0 zaUkKzVV$6cw4E3V5hjKpEW|7-6ujL%EN4Y(ybJH~Y2aXIGQb~mfj*W}?WOfsc?j+7-dzt&o+xFL10S1ucXTTfCWh76L>jn!FRl1^!9S~N08sOYjm$s)ts}$355t0y;NG{58 zY3#vjWP8A70RAe>DwVXnP#mLEPmZzX3@HYKR_08I6$@{D1)F@A(CnsC&MOs zEpebM+QYPCkn-(<(-KgIY3cwJ#m{!&n#@E<6r7NdL55lc%S@f!(-+6dt*XBh2Gfh( zasFe~+ULds}?vSDef+zXImD4eB(Sxi)- zEwDwYZ=jlua0t>Sg;bl~GJZmIgf_gB!1_9pMWIe7pDLWzZ~==Jt*u}L-@cv6d0)Ni zvE7k9cmEET_mj=%>)nj0-t9lRyK<9b5Jkr}NbXhsvsFi$#$msGn(A_sxF}EnsKU=rCRfHu)cxeE+i^m_v=2xDi@%1(XnE&VAe>vR zTyBYzqb5!^AGBn(!lRO)%DM!k!D@mpLjmX!`TL60mHe{q}zThacACR{hPJJBV?z zD&eunMb!d))>de?XbOr#`bd8SS07J*JT?nrsuvINkB?lCCjOC ze!a;w9KpVbJrv^5q)TtIWF!2-Zhr*yW=D>c5H{=K^_?^d3}lMb)F6@dF2am{39V1# zT{zxs_||4MlYpm?sU+pcma`@5Y@V}71hBS%7>3YR+3D?i9u6}Nr>l{pY@$uqsGK6i zTf(msacO2QS)WJMuGGW3uI=X8Ar?Ix?bWek6F1~M^hT}T zzC-);O!CDN%IDzGnPHIbiULCMu0F&^s)}iUDG;dbNN3X4t<@!>hPE zJqyh?=0;40o3meGkVd%EWE+CM=s5hpx=p5Al?t-6zuzP=3xzwHSlpE}0R0kf%Ymff zz6eIQ-7MQYU(wBSg?)`BjUX0)g;R6yF*lUpAPj&M7bcBcFGy>gmvnM6-6Ke>)`#g7 zaJu%@U@&Gh4dBDByaBDiJG*}&x<|dPG&RM$qjMbCj(|-umoG80l0ZMbIzTril2lL? zeBpQYn)Azit^6zY-s&qAo#Yc6rvNJe5|Z#*Xa$zlN1=kHS#$6Y~um@g3)PIn)Fiqox+9r_=RFv@_am7An=^ZtW^1Ti)zDQYPC zQxTX#$7`k^O9BKU)yQZa!etD(lfg{?n=*s`>a<0L!jL||%N{2W71}L8822WE%`#>y zzNTm#Xy-^Ko&ZTew!i2^5qmUNH=eHc&$In!_Y;H#hx&%hC!3be4!@h-iI#Q{@b!ns z-Ne|d#s2Xr3E$7oPr5KV!sYg>Mn(<&Xj^?hKi2>Czx0dqQ}z4P}gilm} z4=2#h3zSXf(7dj-t+H1^LpQE&d zSjgnbxU5ckFe5W?J{V_ZkvannP>l|m#*Eg0W;G4elT-x6d3zmQIrW+n7Djucp)(-q77wYKe?Ll^n@>fAL$4z%G$wvkUyKl@Rd{1 zI?_W4@5~t@XLwv;y=Chl+53f*KT;qt0XUF#N3q!=#Hv zLt7I|q^r!HfLfQ{4*zJG;*T&B{*jWQh20}p4o3aqm2@TDP=+IKb*zN*72ra=N&@AOk8ME!oLW?wM`ZQ`k`N^}(A>I#QSE@ER*Tgj5IgxuW>df)u!-A8wQR`_<}Fxf#js(tj(mQK0gF)7ebuT27z#!%SHV&~3}Zy@cW5 zbfnM2wSzY@8d4|(!CbnCRwJfMW?kS)eS6f<$~A1(o6ny2 zf1WKV6|MLpMl4wdMW#%m{Mq?&1&YSt?Rs`I?0xU~{C2Xd|JI+pp?CDd+2L__9(I~R zy3-ESR-*N=p#+-+b*vE4$$%D(MkqMl&hztvS9x_eQ0W6RxpL~>y&hiVSurHEpUhvY zR|bkOO^SBU_meMv_yt}RVyUw|-|VD{4n(6B$yg3e{}=Sl!wGxSg_(ZGlz_@jL-eEW zy;77?d?{03@|OkJ-jotjR8Qy6OTQjDF7B?=wRtbC&P9V@mnJn46~LZJu{gD@ zbgZYIM{h1t7HsHx8Fu-1^InlN>euP57JNYx5(IOaY$C(m>NON?V|s$Wr091e!Vp+)ft0hsz`Lqso*-!HZO7Nda0=-rFJ zzdHpi0@nulO+kXCDMOrsm{CKgyrnpkp-&kCnx5%I;wr{UM=L>k1ax4&PBpt{DCw{- zeM*Z#Cf6!Ig{LH1&SxRvI?04TLbfH~v^LeEHw^Nd!az-qrIn55bb{=VzyR7bPhKXl zIb%7Bu_7XO^s4j&mI7dgF{w0^p?)ezp`b-(0d#?h)s6Sf0@A7s#Noh*imZNOs9HGu z81=LILpfb2QUg)BS&)a>+*E3rT&4S>B~BzygX;zraI!fQ?l zSnH%Q0r5hMy?|7c)1YgGRFD(pJS-z(k1iM+QRZf84CQ`0f}m4>U|wND^4|3o0fD3k zvhvgJ`ODAI7oeTC2`z)tc?ww=%Na!K$TYw6VRgUQkZ2~;$wzq zsO>E%ZPGQl0~8?22gkPe0yc{yHf#QdRw>3GFa$T8MRb}2FtzMm0AdG4{|v@*DnH5y zMQMoz%|MFnQfwHunp*G*v2<_i;Xd@kQ$dOW5zD72J$i*iTt=bu_jmI90HkEA)@C zS`+h-b}ZKis;Xt#?n%V~$Xd+#+Y}f}Pj}`9F`T<~u*L&C3iP&%1Yg7uDv*8g5?A2_ z!PwN|$5&gx3ddV2odx3(toIjG+{j30<}zG6;$+Es8>s zYGI~93+f6#J3n4WJjHUqs_YD9`oXgL0b}N$d!tfN{mJt9v_E%U{`1CtXLoWEiafYp z>5Ts~=}2aGD>%=1bSecbnUzX_rt4w1yfnudjZjfP^&GkaGe)%tfuyyLJwdxgG~-sN zZO9|%?MlD;#$9@zLkAD>Fhs60 zt=HWtrC#5j^Nsc-08Yaqsbo5G!qSM4U(Cq6y17Cc2xvuiFRTDIja(-tS0GBN=$=Z6 zQ#p*g2#T-$6lz#xa*~V|IjS7-NXA88Ayaju*VS4)FTeO~iNLF-!7a&iU%kE(3JklXlSBW+7u0(yf_^`_x;@ zgjKs;vQ8$^(D2NB4J)67Q&;D-?(HKpV6YZr!SRf)MuR)X?AAx7`b><2e$BaN;*3c{ z>AYPp&=jjA2J`eovQ6-{2e0AFqez~iLbm{em3+G7=VH4=q@42Fz`RrLWOb%oTM3<>A z&6iAdBFHKlQE*}%mZ`l^KWz`D)6GOno>LHwVp!TvHfhZ~fb~1APNYi{FSq*SzN3NB z>{r^uQ?0YAG^gq8-3Ue$o;LGm=Q4NC#T5Rv=Qgu;vloQn5e1i0l39I5x2zd(xb4&K3DXVm1Q>Q@rc#W-@1diu0_zsI2D)D zXesA8urwS@FU;DoCg;Tb- zRA-l348ZxS3abWc8+YAO^JpXg(S1qRj^hG#z^GMUU{|d&X6((Y>z|z;Od&ZKEuW77 zp0m~G)%N}BQ2&?yv0JUwKb~I<*TO98)^rW=X+;`MVx6?R#j(LpVw%D$1nwh9AL*j= z)lNk8@VMW8c-8Kjn2BZS~0)D&e`R@k|KUTZzX z2}(m<;x918i!5V$&+{ws@E|jwS9s7YhhDHXYGF|i!E_Lon(v})64AiG-YGf9|K_Gi z`l2!y++A5Ez`wdgcr83chzko+!*5th3If^l%#?PsfTB=zO;>3!6+|oA zV4VnhZEfrnspQRSdHwqO`qf}`OCBN3nuT4EZ)p#&JimY|J>{#lXI6SbwUM5}fZ`xv zZ~ZQ$6r%u1c(FoR&$$ZtU2QLj#A-5Wv@F2m`p`J;1*8Zc^aosBaUTG_Jyg%((V!)9 z70DJu3)3~Y&1gLT%g2XkVU4!e*TziJSFeBh_KC$E-Q7f&D|xBV(}4~>UXCUagStjp zLl-%9yF~XfA89HI;Q}yUF|1J9lwd@RK-@a9x@uwR#24=*kb!}QFqtIMK%*!aWM?Bg zU`LqOumB_DF4)g+vCajRi_TuNql1d6ijui9W5fr_*drmVR=>=!O#5GMmYg731ZAEL zz8O6kYA>3Xh_DR%y(>?inDMYRAfw1i^6h%A=@sR;7D{zNc%zjn{t}o+_A4QCW-p~F zP=Y0E;l~0TrRb5F?;r>woZGL`w;~ zsDJDfDv0MstSP074&RbY!dcDq6y5zOrLxT&+M+{&tIu~3>q+2&$3@ z&a6cXAe)05kcZ>mkk?&U%q&-#grp)}rjY9XrwEd2A%32o-CdF!X;4~Rd63LhsZ|6&SE|i-w-f(7Ij7Z;=ypBki$TQc)3P7=ul?TiLP{g97-JB%u&j%9&I) zD5ViUtyM0~U2>MxdU`zoT!Ckj6C~#&B@^5O0xUES9*(8%b+;?A&2Buvrm1(Yt_HV1 zcYe4GV0WYT?T?4udgZfY^X+0^|E*sg5R&`Dr~UioL0C-^p)}Wk+a1Q3Gl*e2ONy2S zv&Z`jrw#v@8 zbdBUs!OqHp2`BwYd(zD~ruKBce|U6|rMxUl(6{5^{loObWNxr(YV1_pcYtRvAG()P zc)-AT=jd6Ksz!3Oj8qU^ac%re3k9S<`*KOhbT zI4YvZFEZ_-$X&^UQ!EmKE1lU>iyR(GNJ*y*?-D*sD^2_HF%&3qbtDIinBj|`%OumFvUi{Ln{IS+mtm^WNCLE zKFsbPNUR|f`mVL;(SRMpezXq<9bs);|+tQ8rTq^{Pcj2hb#ka%7k(-g;u zt89#}VfLblv?0jncH7YH9DZ12TApzpX74{}!!yXT(-@EaDnP$%HYUI2d)o81o!zB%zZRaas?e9*h;46Jh%~8+0Fuy!aOT-iuzEqMMBYLZ zT?%QQ3uy==4!%S9OFZa&xO^%+!e41v1jxcF&Do`ZRw^_pb7Za@To22y(^^m0^W|wc z49IAAGCX6Wy4SqAy3??r1x=QLml4Frw}p?GW;C{4#MO>9u% z{RnO}h)$oCd^Vqd_CdX9vOPaMuNZCj&~=sRgE4u?k8b+E`t4V|ZZ4e4Y0+M3nI5rQ z!H>!b;ODAx)g)PLB4yY>ACY`cNaN=T&|F`26#D~iN4%NgwixMFjOg==PUz+NaU!C@ z*9pxuvHVz)a#~IWM~TErSRD}pt$WJxX=&4rQrkY^87(pmK50nf2FM&7c7-Xg#vNwJTcJdi z9#9#C3mIsbN}iTQOAePHZz>U{H4X^Um93X7lX-YC-GLFQOv#18Z}h0*C~73suGb&# z^?JQm~o*@Ac>zzPn%FX>~UeV{nCO zDK*p~B+X3NY9TIaZ(t~MJ#RD&%P8KxMdw_L#o`)h%WgH?$T9;)Dzac^xobeQOsPBV z!{7AI#KJ4}CA$|v&&p??KP!s$6te&&S^|>eD}rrP`o|6q12mKz7C^eEbRHMSH1r`( zPMublHf;mVsjb^rk&MIvlnCOMojCHd?vv>Ei#uD*%|d?)G3NI8)zu3tD-AL{K@nz+ z?kPu}xT8n}D`>|NrdcjiaNy9G7HX=G!30|UQB>I+3DfjwC@HA5I(krigkRz39N`co zA`c);7ls#1M|wf=L-+k?FuJ*h0a0i0LqC6h2m+0 z#rb}HB9azWzoHz=2b$$jm4>npj=;c*r|n&d#v5-%%ij{2$p4ap{Dq#W}2EcinzPC+D#Zdw@$px3AjLMX+h zNO6aA8is`ZC5w|nWGV-e6So{PYuCfn5>M!O(d+4pq8htd>;$uEn~4a*I$gA>v|NZI zqBMW$`eGAN`Aw87`aU}pfKB3fr&_sH0thaP z7I=mw1nW=FvGAfZzP-(Qh7gnKK(F*@8e`r|J>6T8*HQI%)m(r4p64fH%O4d7>CK9;VwV1?X1e)ou4> z+(U_i+|6h;yDkh1mD}X+I!!gb2oE!ADC57>X>xLuWP)=F`V*#b*7NyBCSxvNcX$I2 zwUj6d5lIh)Kf9JL<=qx$Eq+3B5C%bR66FS0%@J_p#)U*@O+i@P_+8l z1LlDSo_2b30^vomH7dwGojHTpta{xDBbO&7@;9Qv!9py_bf**sbt4CHz(BuY&`i7F4Og^>lZmO6-2(+?-d z2($pT2-3|4m0DCM?D5%d`nc`%>n#-5XsZirapI(qs$gxwT#!}r!Cb2Qu<(vfInst* z!HHw#1v|T1pX^8`ghirADW9O)V)ghim7$EThg@W8&0Z~f)*e?tlSxKGvlk6;-VR*l z#0sUQc)BG*D6aNq>)j9Tr%$`f&D9VLN3Hp4(0M%~ma(O!)gAQ)gRw67n`^D8M!X#d zs+J5>&g%}ke%eKh&r^mDB9`nMoo%E~5k}qy(wPoI4Q#zz2qPNx z`C=*jp%-l@0jwGLx~+ZmMl+rM6MZ}7eC}4IhtcAurB#w<&R`iq5jpqJ{|hNqvYdXf z%!txGkbs@iFGw$PG(dOStkN;z2c(^nPvk^{w~E%)&aoQZ5d4t&lWTECcSUSS?^8jL zp{Zc0kOtZvKUf+~A|;NH#9|bf(S#qzKG3ZnV;_SwXiNew<_PT&O9T8nIhY2KN4W%y z&-h#2#tQvy0)-B*+|ctIckS%VWUrs=+~xHQda{+QerRpdgw&!AX*l*~1=+0bHK&*2 z2#^3f4Wy9vsalO$eN6P9p@~?_7ZZ(G#WxO!-V1>pGjky^Wo|ijF z={)&Fsw?7miyaCuIXM9|(glb@jus_Jad$swKA)5LEAGb%fdVm}3J0t*9{Hja*}XP5 zpfNPcGG*LAdWj0PCfvAFbu@G#tE<`Kt1svJi{5;C9hYyEx7fDRGPcqWw*W(_IYki84D>hC$khzisd`NmUGFUbCr20HNeYp&RqXQTg zp9un&z37^{9ly}%a?49OrqQ>_xYas$JNIEwJ5Od4IbffS9*m~jp%k!Ij(S`0F)`f-v*Jqo1oEy$fV|Jii)@L`&6 znFwT2RgoAL&R0M?b&G~mC86jJI^F{W{QSJ}-^fngk*eyjNZ$t73dx7s!f=ADBQ`p zRF-8zT%pK2r}HFzjitDeIF74>qZu6b;aSzLJ<^x0xd6c#WtCuI;y?j)1_Y>pyWTP} zUoK;~>C=8L#xpZ8N{u|_k92H>tr5bCq*fPD3fGw#Bl$|P|FE5>FW#9AU>)2R>Ccc% z8L#_qgLKCwX~+pqc$r(hS%zg1pXT$m=Q{4{>M84r-rX1vAP6lZ-%!@@6ojLUb_l*s zIkzwHVXX=1q(HFQKR@bxI}a1lTl{6Z(f}PE+RS8gGau&nk0ynK$stkw7WEco^+>fJ zJ#G*!k-~2G{;S!Cd()`+(0czmb|n+7QJ116AJ-k_2Yi|641{YD@2(h~Zo3SMNUJ3qA9;xq!(i>|Abr-7&S$tEugSvuXR%y>K0&s+F z@}BFcL9@M)xG{R5qeo!5%z~Kh#i^&|Ls3}Uo+aRrW zQl*r8hIh)Q8L@@C*z9aiT|M;o&%{SkWI0xJki+~er_y@m!-r=T>At+GGvMkvXs~5L zxvLD9J=1PGES861p;d%_mGOI}jH(qd;{~IoDK`zzRBast@^qk>#mV{Y`J60lFaeyS zNR9~SC6sMy(7Z6tLq;mFs{O%0CI;1s@^92*jp*Jtdx`PEntybDqOcQ1=H~Na`hN9y z9=8v~Y=7%lT2gW1qxXvoI9@A?Tgo)(V%riK3?z&^k;@RSwO|Hs@d{lajZg~bo`(tN zO^v%Kv1bVEhXrmIn4@s5fCR^ zlkDW({PFoR8mI9)_0RMdWcB?FX=K1WaOm-2{pCH&xsm`;;PSjY{PcN|XnM2bDWlWF z0J+SmV*uuY(HP?>pr9zI-ARW_!$l-8* zuD^d;%oe&z^iv)OQ4C1ipJ^f=D<|0%CLblZ*})lh+IxmSUPpw$=^<4#W<2d2F-^`pwIbo*?3=*S?S$ONo3% z&Vc}MDJ4Zrfs|a)WEAWtHC9#2SfQHnjVZ8{dVeD1&{H@n4nPG~BrX{mya;3zDi}jT zh$8Y%s#2xxGK6Q{w?)LhGJDIfornnp_(Y|)1(a)oCPt?!);l$}AUMgFl(Ry9N{NA^ z!r}-8R-t?pDO(|@^^HIb`OYNKEVhdw5!3=`@mhl$!YFAF(CeKjDcx&9i%=iFe7hSA ztD})&ECSYCRHdiHl2}1qK0BohNw*?oDwY}A6P>+q*BuPl^j5$P%c_|$Fj-Vq+sbko zMk~VzA<9p>=&%ZgnEf=nq=X*2#FIRtN=WI-9V}YH@no9Hme1Z!D1ZF!7wfKe;&yEb zJBh+fwsk(8tB~M+!uulEcdiie_La5+31j1A5RJRJ;K zBoYiqxBz(EDEjk2+)uZo9VP)KDIDiN+zwGocw;W8k4p92WlbAJ!V7V8DOIK!ngett zBVNLG&t}9DRIaGSGW2A2e|CPv59&jnTOm9W&E$jBl|YU&&ex`5NGU0y;p6GOV*{{*#BtMr#mL1|KyX8KN|X*jJ!~P z&Mc0|`)dqQvRfwhA(Eo@1Qo-z%rwv>ez>b_3|m>2Bx*p89E@S|_93PQk<#t$X|UiP z5Rfxqx{me`Z?HxqD5Y8o6h^=+I@>~o6%U&N*J5I(NTxPgX*RIX`^92~_Y{Oay;OMu znVv?*IE^A}nYka%`ioTM)*oQaiAIZnQ>tCzHWe+U6scr_mRE6^WP$L}jDY>vR)AI$K;1XVP7Ru* z*3AYF%&jgT?9O>cDiFG*>xUx@tY1uED$S*hh0C;L{#816i)5-OSQsKY0qq8C9KpdV zE29V|GjGF2TT!mmUp~wcuELxvekJBNp`zB+TywS1=nq;J!ux-8e!@YF#@RPUrdple zU0M^lr?!^M@@GdJj|X zv=(J*0yUW^82#h=ASlspzH1C4`DB6?9%@$+hQHbi57yI%*TXAyO5~{>=~5zdA}q4R zE&6#vMUxeTxd8PpL9tYA=#EaGOi;SH83uHVVjHbJfbnTQJ=}kFUQF;3EXv8X*DbEW zk$H-y0J!0($Sk}*BRg}2lBUGGk%cBvp*@Bkv#}^!HlNbfe0$ODEUHy9DWIN71_omx zo~Aq^eB&A!I5(V&H^0Gu1NMst`U9$VB44U9NMNo?5|~IVqf@X=_?NJYQ~|iNQg_Z} z^De3fo|Cu(OnElj(9=_Y8%kJ8Lt-wfSYC8Yv2DGQQkC}#wWHKL_GO-D2I?mKI~*tP zJ_Nawyrkq+AKZ+S`^22(RHu7S=9pTuk8N%rW}(Vs)l6mvHP90&^)weO*l(23*4ydB z^Y|u#r^vcHHr}cXS2$;DViLt%%89{z!}`o6lDHH)wS`UN9#>dO+Rj772U6$fZ8E3R z0TCQXOLH?ylx>9t-Jx@zLURe1sME>>3#Ts<^t~Ln2%@!R#`D4l>VvH>L{3w{k1~_y zs{}9RaVEzOJ#H5D#ol1#dJ0f%7*3DKJ?vKl={mx82&LI=C=#g+_Xce*5Lxm4UXigc z4(+>Kl0Sj-27k@rIjv?+3yW$)$+4#$XnlB|BBil?P!d6nh%8PdHCuHR-r;y5fBfxV z=-<$kZQ>FjT_t%9*N54K**X2(WvthYmt|L)Q#;cN)g|)P`}oa(ec=}G z-;ce zgJd%*X(Sy+0BiI?CotV$3Hy5kRmb^E=v6yZnve6{FMfK*EM?@YTNW1*gFAnkVR~!o zGwrh4CUHB5Sy2zdx^od;nk>Q*t5+7YXPV5oZY6H6)O;eK5uKew zT~ez~mX-!>j)_>)Wsn&#em;f2ObtC&77J=WV_BK}$8litEl&E!8*K%`%sy@E=xHx^ z7fGN%_2%xja#}k-&b9y+<0Z{mXAcnlBm1(O|IzsofiBi-=*3NCd)uo1aCIVhU;itA zZcHup4MpT82)R2(wJbNYDN;-2?yhlIV&<1eGJ!8`{y5u- ziCu6UXQ5!kuZ16k(B$>8JNqbYWq#~&`ap>O{N}p((QN`YA&50gwTj9hLqb0rixZ2BovC`jN^TFCKm zj6q#x%5I~kp~A$hSGOukVVsdEN_>}=hr}V=8~UC~D=Pq@QVGgr0gXmHDk`7}Rt7q4 z5W-~+)ChyI1o;x2CQieLO@pi$JZ~|SP>20dQ|1+hTw>brmZ&|0AO&`Ef&zLNG?#&- zVJSsKDeU_cR3fC2QNy7q$r(%AV5#k3gJE$6NQre%+bYzqh$jepivU{aAL-7^&Sbji z9&nRBf*0$bR#6?Fga*r2C6Y5N`fi;GTnh)qbl2j<)%JE`=KzH$NaenwJ?ZNfn>J@MF0^J^?-z?Z) zFM@q2YNzBv3OM>w-b-Mlg)#d_^dqcHl{c7m1_IJ<#Y{nej3#j=d~(M$gMF5ALI)2I zY?5^o<0sJxKOq^|Pw!yZ$H3N-GG}ULgckkGVKC}2cqlZ`hSzVdgLPDEkbQ`1QQk|_ zq0$&>)X*0O!!p@eyC0)dp>HY3if~zac3aKSwS57d6fUEvf_N8Fp`4H90EXqIMBgWHotu{_-bs zVTWW*!0z$E28(Fkd^Du(n%doZ#qT4vC2tMem)4xrKexj5@{W>%thkAF1}KGg9p)|j z%xGU3?vli=(nY}<7Czo)+cOIXhF9Kv zG)Rw-tXABYj#`{0Wt=vmqPS1_RdFZXGA5BNHz99k;?BsxXvz}-AuY7#1$&hM>@Xhn z37231>yqNz1v270xe`P;X{2FC?1a;|GNBD)gQh`EEj1OlZDs=s8Fcpt?2Q=6KJ*N9 zJU3}E%NS?;Eg=}XU&gg6Wk9GyjlX(x!(&AP+Qrpay7*wQ=6>Bn>Ea`0eTT;O!oLFXZ1gK4D z6~(Nmb_)DVD6w}DdQ5w%s$UrEk^V_zEFdp(R`lz2m5aqv+|N|^GcsbPhw3UzXH6+< zN&iDCO_?Pfq%Q!sR}NvVGyt3yGc7!kwv9$c#!;t)m(igthdV+JhqYs~*s80(*HI7y zYB}om)HAJ3)L0$*C@SrSi3UaUoAlH`=oiMElX=`y4$DYU9PyyT={7c{K}H!dEW<;o zB4r|My2Tv6n8B3eX+KD7;xtP9q#H4gQ}s%}nz&rTB3{kZFBB;E!hb?8PEV1+V$@82 z{tkZjb|>ajEb3}O59blzU@yFAA>NAxdIa`^PZdIs2%s)a%AB}Mk8$%(!UPgC%Y(&CAF34&P10W6kVLbhU@CZv4*0-Jbx(l2KoT$B$QCZL1y-0<|(9T zR6;JK$<2z+p-IcMpdt|&$1E@^{lTfb1do7GZZk~Ou!!9n;Y{N+*_No~old|1?m3gG z+){`(_R5WF2mcu0MPQUxE)~}h?L>Of-cReJ=#4#1e_+HPod2+Fe(wC#23?elYtvbp z^)F7%NBV4k4XldWJgfYzW$@C(DHCfVlaD0tYyVUQ@2w(UdnDq3IqR z-H?iFcdt>)t$g;gjk1$mSBc6viVOns;M{Ur-7~1p_^vRtLT`k@4_m`AN?m$f+5G+@JGuEy+C z!)qhZxml|S%gT9Cmz6%0lhzpz0*Hjj7}eq^sJ^fZO23ZSIayK?X|zo#!CVq2_EYM6 zsl^YjZ&G=ob8L_ab0fn+s=pd3h*?x)IaL#kP~^07W2S09a$Q2V$^I$1soL04HvjIR4StS1@!|8@q3r& z#RZ63uj0KaTQHR&B)Mox*sxj+3xQZN5G;`&Aa~q|s0Va901)t>8ZK3HO%0+X_&`r`zny4M zxojtwRpHcGp@re!^p%d5MlSyt18!!aR)w@ zgeg)LwQQfpFcUGYuIGAujCyLW$@e%YEQ5(n+Yr_3wZT{yvVrgOXulO|A zTy{W#YVo{sGNTtneCm98n(eNKPL7E#@|>E201?Db?_Q?|vwC@TlgTTt$SAZyvyT^@ z@kq+U!DK`*M4W63&*IopNZuZ2)8_{>GW6WWfM%=GwqG>$A}}PDN%OMG4CE_vmgzRZ zcr0VcQr|11yFy*>ko(i%pZRF3=f^_dIVuDdE0Cgdgd*6O(%CLE^KWg>^Njn1H|@zq z$!GI}Ej@FYB#dJ6IGN#0j1Zfnqm>CzPV;aymT0eMv}rT+MrKMYpfp%Teg?i%kp5$5 zV7;2dTPIHAf8ZrCVkf#JrH|kRZIqe^R0fSuqUsKANQ;M`n`%s2PQzr>rj?+kuZ0&Z zC2Gi&y_Xy|vRA321m#YVC`wLQuJn?MBHBg-rX7VLEJRTze2`vPNHY#$YNZZZIwc_w znbBHMo{W-?PLjMDCXiG;*&tVsoD|!@E?{B_&oeG4HvL6wuZU16m1M{(=ZqLDj*_oM za22Ya;uYDrGSjJ3s`2DiJVxr&A%`d24DqitgNql=l}P^3EX-t=pl|jtb^1_KAxG&f zh)8r>#ax*ryIIPo1zBT;BDH4f?VLK#^7PfNGInHikeXwjLEEfUI`;uK8SDe9%DD;& zATn-92oYM32hO;sik9{aTXn2#ikXzMs~mfzh-mXrD-WS$^58t5`d6AV^fagQJ*utY zY^8ZDsH9qdxMi^RK{cnT+`)`;cxm3jh7JG~N`4A-oK{3$3P}c8!iI!}779aPJ-#Nu zj)UF1d0ih|nLQIqreD;cB>M<}LW_PumoR;oiHl>`%OWSN3`YpH9wX)Era8Ei^R6dP z;a2RA@83Uq;G4Va=zVD9EhBkcoI;{c#mxD{P>ulR`8<7mj>_{+M-aOF*Lpe8fX{eE zUT&B6+?eW8*0P%t=K+;~WONR8%7$q&%Eg3PaqTWbq-`=BIth@C&A{Z%w*Sd5lqdIV z>Z3ip<57<=QO4;W&@e=_YFmUO(t)C)bKw2x21>re&GljABe1C=rj>pcb{8ug{^I<& z`w zLELkNOp()^hA(z1Gr=jfYTnDA(eh1(_g}0``odALrLDX{*I$+CJb|uCjYu(y?XP37 z81g0%4h6W<@F5%AIF(%Z_Yq4O_#u_5dKUuSU^BQ6#mr%<=G zbTHo$Z>?i89Uq>-7nKnbd$sO?g5}pcsx4aGXRG7)ALe?%P#uJcNCK1_tWQR3nB9{m z@ES9d1B3Zf?-6vKhWWzQBEZ$GnDL-0PU|`0FLZ^q+OvdgZEwOzA?>)NC+kttW5++S z^0eS6_~?o3^~E9T32y&d+*Paj;N&$lebKW)g@7MD0vn#m9#W?|o9hmsr7+C>akI#2 z5U})ZA1>fB25EDsWL_Q#1eFuQOwKI0#jadnVL-^*D$>Yl@3RW*bkH~EP_nDAV5*{V z+v$F~ki50JV(cP7EXVdz^~DMjY&5Bg-&~8HA#e)t{w|{tYc0e|A-B^-+e`N#+0doD z?p*QhE5CLjm4DKRh*uUG2e&8!3spG%QrHRcH0g@P9fb#rvZTySOY1QnXS)xxgSOWQ zy||}{EQ+v}2{3g*q|9mTb+ksOKgK~!_bC;}OEqsA%3X#w`>(Ilqv2&0woMKYc1jZc zqr)2+qS9XDF;bc|c<$m8D)Lwcj{}z=zWvf`x7{z4yqS54j`RbyIu#VlgvF3SZT3HTW9*{ zQs-s!6HJsg_Vj*Wrf*#YT#yJvYWs!%rb$lCEJDt8|B~-XJ+9j??SuGhna2V|O$$kC zk*1dCgB1ss61xy7BU({r11Hk)&JF=0hZ4G416r9*yX5@hc73JhE072SPiC@clhqGb z!z%!o!}W@owgg!e8RZaGdzHFVn`g4fJ^l6I(I^R)VYx5{fseDVk_kU;I?k(=7u=F7 z=L4CTB)?Zz!eNIv^}*H30EBieGiR2@r3IIMX>C)bQEv`R7Wwz|rT=1}39Rl!>SjF&BX+Zz|I@;-~?ERw+lKRL~R4 z!nH%^3Bl;ELAigs_nk90upxYB;e?AcD(SVl9MzP^Ysa>9!YczYRRCtr=Y zZ#wbHNQ3n5WU@<|K@(G@Uq+Z%vh^_X61*15VbsidD0y*_Ac~qxd8u?&D(N6Ifs>24 zNTQ@n(aCtuk|kt3T-sm~M5hZbute#1DX^U!EJIL5X3}a5R$pI4>vMF1(%Yong{2Gq zoC*OrZmb?sW^g5xbn44M=m0Mo{EuHfuuc^SbBh0ETula`XN-1HlzPd|@)t#jI?Rro z4*ulDCfQ;2N=Q0vUFiu&@y(fP~EIdQI_M|(otp|BEA)<+5nG)YiL^f z57s*v7}<3YSM-}x$A+=S0_%JWQX~}_-Licm(@g(e<0XWNfvchGU)>;dg2;iVLqYzG zA;cbwAKmDH87Z0D+W?tiujT-R?baU++_9C2p$z-WFoAAb(n33t?j(j-Mi3G1bxtnmI}ChuhVoS@ zvcJ$}Vm!j($fzjVhHhgfXcumKo+JbIGWa_3Jb8W(MzKcHMp2DWeVSI8o!DuVgJcgc z^JODSnbl^^^qjmX?}Zro!r6)7QxYzI1t8|j19BJp6EcaKp$_7t%Ef9{jA;pMmB<>* zQDkqS5v5Nu2t7I$ZIHrEXsAeE}gP+C>P@jRi6$ z#|z(9YgHk;mv)g5-%cQK}pgB>oiKX(BQ<5UQfL(@? zu`8Acgc0*p#OT5ckr3pzRiqvPb|X1o)KW8nECYI8NCHLOIfgGOM!7+js;KP8ilwht z9$Fkh4p<5=0K^Ot;Jy`*%|QuL9E(#%=e=-_z9!d1*rp_oX9x|F+sokD+=n7pmO~oV z)GS1n*WqzvUdWf(X(QoLNZe{C!R3p}rsr6bs^jQA zPDF$Sy=>)4*%Y-px$1gddLWZr7xSBU$vVf*XTviYAyXqGg!;1P+DGCWn4t)}Nh*p9 z2+i9sy&%sSNnL~*A`_R6vBX{(x*pj~w3htaGTSbNo%BNZtyKSW#UyEAZl%kRFDVdE zRw;DkDC}hSlhU&_=oSo=vy__>A^iyd#f+8;c>%EPOA?se9s6ITfKz}B#toznk+V4c zoX?|v6MsJ#20;?1y$rSY(jm+2mG~OJ@yYOC_%n3Z&wuTEv;XqLy874trEi)g^4GpI z|GlT-QuJiJ)fn z@xZeAzRa9(*6=$}7(HhggnNDPrEKg1wx*NJR3t+O!w~UQKdV z4o}gSb^wC27gLh|E!AEYKRSpRwj#GroLv?&!ZeDb`PfoD%|quug*uj}d~revQH$Ss zS)X#(!oYtSCy~H5#w)$y!9ysh?Qh4dXa*3$Y(l*EdRgI^e(gO3F=V3(O71{LtDa7v zctHvNe6*RnA?Nyj9DvMc3;+`=SSSjKIouIMl$@2al0hxQlvaGs@p{=lf1M^SuchTF zth4fi$zt;X&XlYTuEk2STn0t}no_@YPz%YdY<60<;vP)9Lrkn3XEVI!+RZD2xiT=P z9GbkEI3*%Pxx)DH$Qr5n7Z-0eVu4KNmHs_hESgMa`!{#E*CB#jXO&_282`! z2W2or3<9pJ7w8+J?lWG3chA2Mbdy06r`?}uZs;WaJKtUW&gYNSzxL1He)W9#e|@q4 zJCnrcM0U3_%YqWl3U#Z{Q(k(X ziGdC>+McUSt01mcfVFxPvmw8xOcH;Y;I_cZNKxf2Y(SsYOF5|;UR6mhYrV!QkZ>%R zLL%V|;7a)LBf5Ur11)Sa!OPP10v&Faft?-LRQ59GhZ^^GIitz1>(rJdtx9AU69qrdJv>Q{n5vMt1L9g%HxEsRxAY7m{E%BC|C3xeTQB`7h(xMba_6rH z_(VC;X-DpJ6l`|x1&0VL&1l)|d3gqgFx`ACouPJ2YO6X|+E_jtXPV-*m1ZBH~yD-kY>I zrYT0Z8bo=V6qHh5#w_YangJ#Y%m<>uHL{x}YK|jK78a)v*Av^4$sGH|JmFffA#>yt zyPYnAZiA}I1Ph1{_PAk@3H@W*c&uEsL~TYn`MTuGminbo8+qmEbs^-(_l5^vV(=0? ziez(I5(`J*0&2NK6L5iwh8Gks!sr&!%4bGns#B%okN-1qn*dM#;PRqOR-8=e4k1fycDSk7 zZl&GuLJU{ehQEOaUn|nKDr;EYBVmdv@h5f-i1CyA<$SgO^mgc=KFl}L^Kah{%(gYi zQaIuxIZ;kA<;vt1k(@|kp@d>c9C#p}puQAOl@FSfTj_hXov|r9KH{(Mygd`RU za4E!2Q8k@6Vr*M*+NTA{I3S#*fyh+PoV|1>GYdx2QG!1TL#%HZK8;zK+*8|skUMs& z(gmN#IF4=si(YcJtG#)38|Gk5`&wF21EI{;2M1&cBD&msJkp9^5n4g58g1t&CzVbj z6?QP+dK1;&n=9Wtdzvnux8u9$dxttQW4)9YI-hu~;jSeoCvQVvA1k(DVG zB>a4{pl7&RW?MxQyHM0xgRxXon7y7%@t=xwPgKLhV>&%8k5}XFcr1SjC3kpxZ8(NY zuGDavPZ$Ut2m6mdwMAC z0SD9>T@4PaMS4jU(hG$kAy|5dqvsKjC^I37XnFE*g2Bq4b%7zv-JqR#+PC^QSVB=^ zFAXqCd^*rl>rdNj&Au_|4^OTfa!v+$j}lz z{Q3@-zK<74tw_$9KMbQkUY;H>TFzfi_P6~i8K7@}<71wBzFxk6zx?JWSE2_zkY^*= z50%^N9;@;0{j*l%yHQV>CjHoWQ<{ynVkqTy91kigxqE z<=d}J=s-lue1K?d3-|O=@2m4KzWVqZH^u3mIC?VQCyVJTNH&G99hs!i(syYXt>Dm(#g1%9AxZtl}MGVLk{uER<6(iS$EK$yAt(rE*_Vy^R<fEUklr0R~#q7~*0}2w1I6g{krh+WzDCz~%t39jHh9?+F-4tP! zOQTJfa^9Mp-*hJNayZrQ=lAmrCG8CoVF%)&t)Nf|T}g=skNS%bv$yZ3jiP6kc@pAf z*~jyO5-xW)n=XBIfbB+g@6Uh^Vi2h1sqAM`>wJ#DzMC#G3gG!^t|8XNl!<%g$n;i2 z?Vdb5t`))&2^L-`Q~0=ZER7K^71D-cD&hn`lEK2Ur;CSYz8io)yMH9Ypg^u^gj_x^ z#n423nz`h+9Ph~b?B14$P>6BB<6>b%^sfLGHJWs-m2p(ZztD$5wf|Jh^ zWHYSF$fc&>zeYsM@J;Kmn=jId?zHUd@WiLb<^9|BSMN6;K5SL0ot;d*D6@{;s4$ZrCaQ|$9MDZ{_X=&_b|4phOBqAIouH5Hy9cA zF2PW9%558XQOR578v!G7^r=Df0%3GmL}S`QLBq-5ev}6@9ae!WZJ24OJfdC*DcC-o z->`QTS~ZepyZuOj6bp%mp?A#9GPcs$2@WI}vNX}b`>)=?w_o4EaM~Pqa)O>}^0c}d zB?QDa`SRV8_D52gR&%vjW*AXOZ&eaXB1;a8jpM1}J1{g*G|Vi)sB!7eLW+Pvet!B) zI&p(RxRA%udl$+r7b%UVI!YgF?lt8?UNF$Ix2~is&xDxGbEFSa8(6341YO{r-~ITD z`-iy|{Lg>)2Z%kHEKdNiXp5>xO=qibydG1dS2(nY6~-FW=+JG2D7&+9apI)8a*!vB2r1ZBVl0mvcecBz*&k(#kC~wO9deMOuFu(CA!(r>G35fJRt>0 zdk6ZyoWB zc94=LHV&BOQgKtDE}%oEOQTcNzWIwoI(t!0GVRU``hw>c6{%DZnBX+76e$pP8DRFp zSS*Uanfac{uOTE#H}P}Xr;%*(8x;OV{F-G^1p6NttC`m&+e051h2s zr^a5!9RlWlO0i5x9^gDdQjAzHc6Lb)ITBn@hWu|}bdtCp0242;b)ZEb6e^dbUi2Oz z{m6VOH01^Vo_8?pkOH%!EeO`gqwCc0zLW)TKDv@US{&gzjpW5*;cPriH;=Oe#E@yg zJk4>Ty{)vq-;hJp!UI`nvb#)m50+4#?$vC%dX#2$_-pPp!P&VG=9n z)sKJj!O0lkbmyyzT2#Bue9@6YZMN~F!lde^*+y>daKxj2 zR1CfTegW1q~G0;8YiCQ)8A#$McEtw{! zvPdzzRI4(Uqm1fIfma2q-xFG=03)#u=9x-&ij_urggX&@I~Y@`0VGk*v^B0C(QK4VlZG(vTwH|}fGauG6|rxZ|g$u(=G z=n)iMfg(#`>SQK-(WVV)m%!KC`-#ZIEp_1qW<0r+)~hlE=2jG4{fHwyvu#56C5U!{i|i_2o(9ZJMsaa62{EG;|2}t6dt14KBAPgxNDRWwGxH&=A9RNmQwJSP%&->9xYQ zzw|9!Z$w}vI^`t_t*sPw+r3vG=f_M;ERqMFFg@2qs<=DkTpFc=VHox#6TyrQd8YhE zzgT>Wk?V`6>pi-v0*t(z5L?Vb;n+D|kz0*S7jbvUM(uuskYv0Vy1ML;Vvt0lvwVJ{ z2EhR|2JPKm;1|JP@qJnQ8m90{Pr2}-koMA+T-s9rZ~kv#0;C$&(Yz&)kJzT+Y5hMs zKO`Kdo7H6bQTue=tN!8hp5v|m_OErR^Za0be%KNlrO%oQHGEkSG7_Fav~hq#N6w9@8-yN0?Yctu3dC^CMptdPr`P zp|b=Z5cDv0vA*t~cTe;4`-ynsfNyPNAtoFPNJc0#V-qoL(*uKim*$OxcF>yK-*q@? zMLI3hPd?nEGoNm51B|lw?(yPr_QQA6-+!2YHm4;(RXU%5c1w{+7$~v`V%ttf^3wT95`F7LaA_+xq(6SG}O`=h=Pn>qS!DUWy+dm3`3$5;sZB2qr&mb z{m9&cX!DfW=;17Zmofs$zpX1<%d#TRUTCf9A&YB)kcC%~n$kJvDq2wC-K=GKLS(F_ zh~$+#1z9*<-{JT~t|6Ocj!g<{`(sM$Uo-AhTF6sIR0sKgcuj;jIPXW_dMzaD4I@jK zRfuAsY;^xPI}#E7$PB7XymftFCQc^}&kMwVhZF6?qvxIJg6W&$2m^F%7Kw%JL}VJhK#5Y8GJn?>`KaT#Pd9mRIhRDIuCSd0jVIcAt#)#YhhrfdmurSu8CaI)`>TT4c z32_@^?6%i8qdQZkGx#s)gsbeioQT=;Jmkm#)G5inBnph2mvdlJ_c&-52ey$6Hq6n9 z(w-@XQxp|qH+J)TS0Hqzl>5@zl{td}zR8RlHkYDYnc5UI#@EH965d5{40AtuoAfCC zPPrhqQexr6a>YYjMp5&1pWJ0(M;5w9*m7|{;U)Xqeq|O$cBOY-Z_}qrI1MVlSrJKb zmQtbBp41qePcsJtUXcTHF>~WETP~dZPG#GwY)=qvwDbTng1JoLJBv>xPE% z!UJ)B%9OuA7Qgx_Mb`Qc4U*Di_0PRI|M>Im_h-l1x!Sp$#sj7!Nj*n#+MKy3MYDnp znt7?@r>{9NT0XQ0g=BzMA$s%1k<`l`ki1oCOgoWsIED6%FU=eu^SJTMBJW5E#~VVR ztxE_e)1~=pi3$^#_-?)dRB&Mx>_X0w8hOfnqJWkVgSM91!sse<5Yri*dRJN~p|r`W z!osA{ZI5+#FzJWqNhYKDDOsm04E-N=s7|ErMUc#~kV_HoP+B2P7_lwnq#_Fjvh|0( zv0H`V$WFbxpTB)S15Mnf0E$hK05zVa*-;10sB;q$v}(!dL<7A+cpinY;;}(^PtO~H zCYv6a#p7jtIDg|#IGAdq6Os|$CAbY6w52;XkRaM*Z+t`CENunABSIdwv(@_W{sG=( zCJ&^kbs=Cuq)J}k%q3(%a1jh;aL8aFs3=mzNyx&EXtb_}J=0mQuLn2Rg8@=Q*ZBbwj2ym@C(115 zJxP|s$arCBv2<~+ncI`pFS`-}F(05c zJTW`l(6>g>IwM2Mpg~mWaEUSc8dYm#Je>t4BINkJ@8g6rra#M}Yifvj3nv zxO;fkA1$#*!v%Jv=#StpCcEn2+zlOaXWM;&CheCC=;YPiH9y&x1IFSEIM#L`IRg`t3%A)isZTvVtIIcWKzs6-|>Ms(ZE zna=Ou@2RrMJu@V29XY7MH7!jmz+HjKT!~CgVS&oLi&!iwGqAe1Pr8*tvM?;lI38o) zni^%q9Bt=gB{%l%?o|L4D1dp|jTb*fHJ zRa`oAfS3T$zPmzDa57mvJj^ifG+k$9G8}anF(qdeA=H;;GR+G`F5cfvw-9l)Qmy7M z?IoEE!vnLI3K6BXBOMEYb&`33;W8XsV4vKXw5uj%`jTxat-n{I%{+;41u+@p$3k?# zAzqUfw|(iIPTz1LX1i{?r&atp93rHaevwO~qp_tFsayfs_q4zdw#xXEtD7O6Z4b`X z2^e37vY9&)ZeTQ5<-cLBx~sW(X}w6#Uup%5^?2O9x#}Akl(9_+hR4%jbZv5vp!b)* z@k+kH6(uYqDYSFzsEYkf|uB@tI;e9uaTC0gEcA%deu1wdd&W=Egu~aB%pl zt>)nNRa7q4hWUgdFL(*M%C;D_P9X){1HRFG5>X7bMUB96^VaO)VY^&X7zm#t+U$YG z?S(XEvQQyCo8f~+_(IlnMGH%xI|N@aLrJbmb5hvjxRi1`27wAHBqlj1?ToO@&}mb2 z&fBFw-P3jy>t5m%d%Rp_oQ_*p)ON${0s|E$OoPq}Fk!3Z_nCxymmpinWT~2mmRk5o zNpsT+6z*h!7jw4GM$}&P(uOFPP&BS4y;R}gctM{ps+D9kkBeMP_th=6@*yE5>n{w| z$b!Tz?_s}Nt+&EV@V)Tn@H7pdHN)A%<-r7!iiWGePj8ncD$&mL(kP*)ccAavCuh8{ zb;Fzs_h>V{-z^sU0HgbPN(DUp@HB{|O*N{Zx?zG-%yCN6mo=G0dU!O<96l97Vx=K7 z7$)h)QaxPGA0H64~q;- zqKLC6c{iPdG{qj`(AIgDETgoeBr*Ew`SJVWYJuiQy=w1t{?5bZ?R;1N?O$o)zkac; zKJBZczEN*RuHrw3B`Q)YmC?wC=K@5bGLugThzOTB6e_1tnxf$tX@2eJGNJ5BIr>_7 zBSoAESs^BrZm5i(qcP2{wp=+T=h60JmmNGh| z8d{9F3Y$y8B2=vO>~mBmZ6wo&F|n5jw_t>`j1&N5t3wS*i%S^tne#U4QV4h8qLUU{ zs{!8Ih7i(7mRJ*^N5o3P0~J`O0ZSmFMHua&s$}jR67-QKOAm<}yF-9maqM_nQ>yL; z(U*6%(mN0wEpt#P)D>|BFa`T%M#$@ruSL!l#1YJUz&fHznDU+y-C;2ih#oHKYe0z8 zi%R@FsLeR~`>COgt^xIYre(E`;wAOw61Y^H%MWj#gODi8hLt66s79|ZtM}?0=lU|H&2#g5(PV%k0nSIwz$qQ|E#Y zq@D&95qkz4i9Pi=rDg_^%(0PhmhK?soHRQZL3>DpIbAWkDNnE&u8m>rMcX2ctC`PQ z34cxsGUyLJe&v&C0bp8((bTLfoy&YfLMpUu_o_{Xx!2Dmn9{17KBeJJT#2QK>&`^B zOj@1o7SE{;-@O?~Od(u(V?P0`nnxDX)p3I~HGAiT^2xEHEN-ALwFKt?*A2&`^n;z2 zb85>ug8z_rP+Ai=V1*;>Svjs^loeRfxNq$1=^<3k!%Gb|L3Hx&Iur>hBn{O~;2(vTPk zuvT5?0%%a?l`%GcdVVZZ3hbxz8%pT2)$cuQpLHYs&wsJa8Ge4OKOQckB1!$(u=J<( z{g(^JxI+-%Osht}LZL*nfl>*L7KIGw)^KB?A0v{ph%U5ZeNWX`t8}!mcEk&)g zULZC$B)U6}k?KZnU{JVpAO`16(+EH}-S82ek2HPDgW+hDap_Kf6#a(Gd1~wliU>-IgEBZ*$mXDi6iEbN z6#}CGOme8XM1c$BAqEjBd9(;r+tJ`?x!{fuK3Qb(SPwd$=+H0Pz`IRKsVU1Msg^;? z1vd6uLitqRP*#ON%jYn2H3bmLeS#1*#;>mPQXL@_f@DH5r;E_y$b`jIUXLK0qRVNn zHPRCJ@3i{8%YP`M;O4b$>xTrNmsGAO?7`{Iq%a9dBQr-t!Le*&lEhCTFk##<^vzSxpc-$v zGxm}WPY<3F$lfE@+UBvAfwlZ@E1DOJ(|kdf)p@T>C!3qs<67_X_|@|lKUplEXnAyr zW0X7Cd%1(@dm_~TU%i8|36wV?K;;%j7b8NCHKh1DcxOqPnB*_TyEHWfC7baH9*mXb z8=@_9UL#1G-&yKiVta+AYNIz4b>hd6)6JN}MAW7IfvF7(1@|CT;*=T_)s}fOvT{%9 zwxk(fKh@={FWz5Kc)l7K#^c_zLBP=OeL252|Ekk9UNq7?5yNub1UliKW5h)P&4CA0 z(d49fldfR7MY^hdta3CA#NT7-Nc{@cKSCs#%oa65$Wpbo4`-H@B+F1UFXM45zGIkTfI!CzxQyQ`?&wb zuMhM#{AgRd-(Aqn2JMO>6Hmg5b1Ox}pSA4N2WrLgY~7G4J_NjQKsP9UIgy2H6S?d- zBBW5wDj6*o4wwgY{8gQq8etKPuY}5G&Ig<1%K7~H!y?1NQXhAgl3W(*IOMTtO*;4< zHEjPh4nkmO?`E|;Oyo1a?o}0-=pJ?6B0y9|s3*>ivR}$%z9d|>%Jq#TSUNuvTtvSs z{fmK3-IE@vWV(#(RC<;ohZ&i)knE1qdS(cJPKtx1Acxe60k(%=BtX+@BG@b0j8U`+ zCJ2;7l?&%+>3nd7Y29yjR_UV%z9u`}K0k@#lN6JWMXoA+w-yE{YE>4`vsBkw(Ma!K zCFDsfe#D(iBdn0J%)fGgGhA@D_e&`VzK917jZSHmpmqbS7~Ty12A*Cdp4fu686w2& zI}E5>G15VhVb>6&L`=yoGdj&!)2M%DaSEs!9lUhT2wQ+%p=)D7dd(3}DRfSX$^)gC zAV4j>;H9HZbW`S9V}9Drbk`)6OM{O%#n2p9PqPL#Wsw#EuN0*PO&oze2(oB~fqfW; zt}QQ^Kry4Sp^-5yrCAJy82*Cnq^4;ORt>OQgbGWysQBIbK`w|) zC}NX4BL)gRKye3cY`q2{G~F!c-`k z7hUp}kyUi-XA(Kyr7h1* zb1H16xD}7}i!Wzm^3H?`mlWqR`5Db#-wXuIcm+_hKC*O*`L6?RxNLnT%;0UAQZF8h zETy2Wj-;6JJPwb`Y&>SIMTM{JylJ1wEK(iM21u1-;_6&Sxg^?HSVqa;vtnTuiSXE$ zLvWdNUnU$O?kgC!M;KAM zyrX{qqs0aN9^5`O8C1!Yx=Guh%|zo}I;#ZW+*D-R8IjaL*J1t_euJwU9$%s09OfCw z1DJ>pQ27cqe8WFGkKNvg$2QqQkEtbKTyn_lJoa!RZ>Y2rA61XXckhy2M(`q)xqLV` zE{7{Z7%y0~7}YTVeMtI*adtOUa9mrU$PZyk16HgrFjD zLYgMY8!4SwhLj;%J*}wWu{tYki|9CfeX&UL2){A>$-Bk7M~Oqkh?xnIW&%%uqc8*( zzNJUlO?@EK&Jga5wr^hyX|1=&m(iC;TySd4LW(q*_R~^B$+QnWpy?D0B5l9v%%Q%Z z?k9((^ERIw$i*CJo)gIhw6zoh{M|+XPck6GHMeV5ttmw)tf1}O2u6^Ulq&PLgkyxn zF(SOUurNjrFDD}nvSOuMTRoOWa%P!i3|BE)aoQ5?GIB3%nxb_z1IS%KiL``?7qgh9 z_Ema{+Nq?n^1GFu;-82PP{G z(|{|qmtPvo=Wse$sa`1HyS(P1{7tfBEl4h8`L|YbZN^@ z9_o9O3PfQgv>qW18Uts+hY9VS5{E@ePb)cSsb*?XlBi zNb1p?RyRFq?c~A{SXgRQjdhe8=5Jcc#|(k?3apZPd)%ViFPpm_*O&Oj+v-(k)EVk# zO?Pikhr8(4I2pDy18gc8x-Ktg7NTXCI~c`~qSz8{jOrzLR5ds}ZWSuT)j7;`JJq@> z6%elgqcm$Y#&^0WlNBlPIv!H*wShNRL+iYJoJg=Cp|$}0PHKNWd(`RccyzCC#6ziq z7A&Yhc`FP(p1TZyiHJ$WAJZjl6Qh9(*(j~9=}dq7+53!U5ml)W42BLWABI*(7bw9- zsA(@^b|=k~L2L@ktY|)|I%mqajDr~~)R&G}td!b?w9YT>qE<(UGQ#AI>fhyZWG684G*e9c2o*hbkKMFpRKZC4oBxA@ri)XfR3S zUWCLW#3F;W%}P+_Ym!Lia6(1!oG%hMQX6x1Vlm)mMc^ZIUtScSo%>MFa&61t+{kG{ z-}0JnYEZ59lF4!_7|h^Ek#WkAwL1_2lw$|dm0L#Q-*iAV3T`l%=~q9Q&Xy;&ApQ-` zD4idUWZ_OyRHgzl!e>JPSSuH%1flSiISRe7wMy$?q(+2b`_pG%%$LjEfM8O!`8VIs zKdg4Yct;Nw6_FUC**?*5iS&+C*>VZPeZ}sOJ!2%zH{OJJm`X1cV=(6DGSpntSy%zs zOSS&p6?#3Z0Q03=rjGBrvT(sYhC{?Kj%T7(=^WH1woPu$pFmw2={+o zTFX^1Sxf77c^RIQUO;6pMDSoXjkIJitdUqokWQ<%qNjs|TG~^6PKJ=hvYTnf*HhW; z>NblFFD?JkxOY8bd$H!CS*w&5KkAuyi(CY!!&qXpls18_=u^ZWClCumD)Sy-SfTOx z>c~+AnjnB5{Kx$fseCPZuv&#=C_Ys??aALR_>-};VVecu4#`AS6P!}7FZFzOakko4j$Lr z=8*r^sS`)SM(agUjY|O`Z2UqRx&BZxMm5*jsCTa(h&k&?iNzLpZ3X@Bh zA*dgNu8v(`bY+HpM)`)MSY|TfQ!YhFDN))Pb<#8r6)i4Ky@Z_w5@RgSN72eXLhF>w zvH>9@MXy`8X5qZjl2 z(}yL#AizS87dra$!y+9io85I8V`-x2_{!A8gj9tYC&V@oA_QY*GT@H$U0kcc^RN!> zmih_29L)EVAALx%Jrfb6GrhIWpGrl5-j$^|{sG(~Y?69ftVjz}6|PY9F$1kG7n{jk zIUC56$};%_LAcsj+JnPdSBQ+B3&p-@cjHoSw?8)Het)>S8Z-^J8;@NvS<>5|(AjmQ z)cUgqF(qZz8}28cB-e_nh3q42J{9w{-mt=%_ZH(7)G;z!nM)yfO=PE(S@?Rv1h^z? zkTK{*7K^p_NYUta0Bk~;3mdNj+9*>+Lr4r|z`5A27olJ|Y0hL=-vt^>dr~?q5;&^e z@ydopYPn#9?{0@IspvAj$LZIUl%0YyDeUTYFuRt`B6t%k8K5Zh#M6(H zI*77a{%>js5yVQhvw2yZYMF;Y4q4=$;E?uJriS8h1Ui$z^^%Ub5r)xbTp$OQ-hn(g z2k!yzKYN52QD6ras0|h!(7LYv*bLf2C3GGQwVe;_MH*F_Lv8}wNVID@wDlPDS{w5l zoBADi_XJ))e+SbW^7D5v<2fA7&^*$C9?`Bt+pupFal$xXDW#@Vn}HBOo3MIS6s|vg z6P_6v-y6Lf`v4aS;`ppC;%?4arby*KJZ=SRZGp{%kN}RrAr7!&F?1Y6Mlx0n^v+6lPbKh1Wm5+9!|Fn=|_Fav%BrXVKyPH*Qq(= zD-P5WJ70c5h3N9?6&6PvV5T*1Uj8wa=of{qOqUWdxSMb<{xL8K_|G7kVVaL4rIYw8 z+7}V|k9d#9Q%nBgVR>_V6CD;2$dw+uYMMvN*szRssyaYYZ>*&op3((>`_+dpzPiWh z;5im+)}}Tb2%W?5K)gOK=0G5?3u|JqCFsPET(E_0dt)R5+p$#J-GhP28HuOb2v7H4*5^yr9oAQz{Ec(_-`+x zA@tFl*R%o2#`@R!E;c7AXqh%%%JT}~ov5aVvYh&1+20EtdDcxIwDlM65XC4Al29qN zuBL9LpF+FpVc#DPhc!Q!j6`Q(gbTAA!$k5g-mV4micn6B>^5DM zh+8ww&4n~q(~bcl5iI{PN_tn^-HI~Pw!wX zO6J?dh-grLeq7KAa{7f1QrZ_8t?tdB=zT~0Np&f^S=dpmOo$2&r3j^q2!TnohEZ}? zTQi-SgHVy~??cyj(@Pm0`Fb;%Nz%E)OoDOL`eRd4NkTA;@=M?Y$8W-XS$0@cqBI{M zBf+rb?bBAr=e4`3We{SpU-%yTm1LWN&4t!8W;BF^uiH0;N%$raVJHH6WK3R?)S@<7 zBu!ESuDObl9?tFCKFuKvuzEC0lg9eA|3kd3qO^^z?a$6n9DL8gu6?2gQ9XW#8C{<0 zfAyEEhLQf^yz*gnG8t3>JhKCf7_f*dwo)9Gxl&Q{3Ae!qU>yn7vh(ScmV~;HZagp~ z=^?}jO2v3*ph{3A*=}kiQ55aPo1s8%g!F0IRLl7wVM0zz+kEHwW?vIV4Yc#%iJCS(4deyggQd{Ma(oX@u*RFnW*O>Y;||03 zg2TI=z0BTX@dF)Lz&)zq7P;~O`brM^Edr^`r&=yP4Ik+GD*^q>T7FhNkD7g0qgJNNQ1)r_3sx#1HV zXw2mVkCtu41PhLzgzeKU1U%|r)-q(wboHb}lXT*6|FlU3sq_Lnj!h#-z0oSt+NI0| z_#S#}+bxUCIJtIfF*Q3zG2Hy{o%k<2;?QV1o>MF#3X1x3SW`BOpqEs4fdYxs;};6E zjf9bxFPEnf8zNPSx~~?OB1Nn900&XBe|C8lMvZ@I2ysCJb>%CYkv+mg=<+aogXg`M1%%^L(i3D~LoNo8^lIeU7sYhCx z`BdImTZMkJfES_S7p)^uO3J59Pj5KR^l4;4Uq^goYlFma)sMgB@B2cG#F#1}MUF5U zct}6}Xhfyz(@z^$x`eP#)Ka1 zvHU1fX<$piS>&EZoG{pkhi)}PBR_XD2~l^lMfAOA5>OfGnm6hWzzEA3kRkPF+?UOI zbN%W@8w-AAV=%D2+v##Wi}-S$&1##~Xo4P0(<%xJG#~JE@7eNDBuA10crgcttV1u!c&Y6j5rEl`D{ z`nmICqD|(iT|Rl0d;gs;_rXU0>Yu+^?9bnyRz7I2Ofx771f{14`C2ByK;(E2+cGoK zR95pzEfG6WD@%^92&sYa7Q2ALC7t${=ik z`950UW47S>>t~haFen50S1N{6voAp`Lei6;xx9(SQ%#b!hR+4Uk8p4j7iGI-si(>G z*hj0^NRVS4b=a^GUDbst9U&GOnHh2)O;!{iLHlZ%dE6@0>Ftglb0)# zq`>R}R)l7Oq!!896`vS?(_U~@t6#dhu2}4#S-=4+~@@|m(UJ* z6%O3{6k2b5Y@@3CJYa?!xY>EIkH2{n;gw{^F>`Ea`jRQXM0gtQD3zGfJ`QQ=2|Od9 zE20L<1(fMmdbbFZOr#d4f)^!07RCAVXb`GDmB03Q?D^9)U93DJ)VqhYFy_xxuG6mj zqBC8n_<~cdI3`4v3By!=)jcwBTInt21h0_kCeaO6*GlV~rg&)`GCyE3mZem6G96JD zQw|_Yjxa}PwtxWaLS~m(G=&BNPfJ3JiCMA)g~>R4jmVF@$k5NKZ1 zE);@Bx zyPuvP=z*!%z1#k$w?;=+|M33!K{WbT{^Cbm!uO`<534gXsvrULi^tzBp&f~lxJLdn z?)?DVEk#bJC}PG1`vamJsj@ZGiIY-_+G0`U%`lj93#8J~TTY0PA#~z=0YYqLPDz?S zjf7!K%c$85I|wmFP0$A@=Vj27Xh4k<6jhX`LTL-v5^3=!V9B}#tCgJQ(X~ODhy$A0_kxcj< zju#^RKr!DLYxbV3j17Mqma6Ml+QN;A5= z-J3?%ie!bb4iP{76~Zff+8?GFjvWd8OJEs_m@R`O#=@n5kW?&IH5@EzZ`@{PL@RR@ zPEtY8oV0N5gByCPQhyIo#t+0#i5USa&HzL}yT5k<>%;jS6s=OpE4#`gMlD1J6#$tn z*sPX{Em6IqJB7$0nkyrMiUM&QSaRt=-$|;2wFA|I36?7k>CSMPH0PjO7+&l*QI`yv z3&A~7Ui>BG3XN z$9bo|YHaO4+#P)PVLQG;yeW4ugodKw_IKYw(jloV&6ffu27EouhzfCkvxb{Em+8L# zWVjN71r*p(QizkaN@iInM~ov0q8{xJKv3qHXZ#8Skxi-2AIMrJ!|sy)(!SeJm_qAV zBrIT|HiyZ=^zz0>ADfXb+D+R6Y^3zmB^pZxQ^fysD1;a|WNDr*5MTaX>7hbI2>&;u zJsa(C50q9U7f}SaLFp=#aS+E*1W!zw5o4Ov3w^~dI%vXwRHFb}|F!dzpai>S(EjwQ zA^rUBhr|2nq5fBYy|ZfezWaE1w>aV>jamvI`uO&^py+mD1erRAlSVg(wDd_k=#kWo z)vuZD7_p)-x~q3L15O5&F)thiOE63vW%!SgL1+V?QihNi1za%Wrik@c^}1#fS$i~) z2ni`xtHZ3X+-(n|uwD37HsBYcqXyr?D z=n)w>mlUr%pj$|%wl79g)tgMVqm>?u9PpRYP4M4?e-#FN9mtEr7zTpFLGq@e!-Z{V zfLwgeORrQoBrv@}XLOw!0pAvJX8#p)DO{n839gz&?mSv)u2`g)j69hAgYO`=a2f3a z1OP97eFpJp3gOi7yY@R=)SZar0QGLBHwB4a5 zwZTnD+$Aw()Sz2=2DWyp{s76gC{>ox1mRA=r^<+S>%yjp-xiOL&H`gCV}_|u=X`NZtBki} z?;^u#!2L+0OT0&B#iTIDM6Pl-tU`J%({Se_gNi3V7qJHr6ms6<^WGY-M@ddS&AVuU`8-(s)s&sCEB=cQD;b4J^7#0?M!rU`S}fL(+UD?MQBd0d&XaT{ru39lL&tWilTp%VG?Lm^$U6)S zEQl;HPr&V*qj)nrt@i1j(CkTQ_z3hAdp1=cTr|KZGlSJPdNoe-S;@3Am#8debQb>q z%>9XvtZ9}W_GM;7WX2wm+g+-vw;^efCS{AVX~~8xFE9ic1}qz<2INo_C4m2}VS@lU zGrd)J)vdea8vDNb_q*&0 z@Dj@A5I<#q(e{*aWx4Q7>N1+w(}j5wIS*#0<2&LL9|P+=x;%r+{El+_gO)=wTaIU9 zhZ5kjl8KO5k+Obf2E1$7RpaWLYp?3?XU}U{EtP-tw;Cq(zkOLh%=Q|cZj3I&N_5Fz z^_9Vg+4Bf7TX7Obv`rCNj*|;%YeUH8>)2@RmP#?f$!Ykbo-4~&4Vm^P%P310W?ZV3 z`SbXcbLOuUQ#xTzQ8p^_dAGZmZU#ff92aC4{)_@F0jK-jbI^kWQMShv&7i|#$KHkC zczWSNE_Bae-lUlKVDWL*%Pcr&Xh~pJf|7w}NXOoW&z}E4RCTPae%rr1dm3v9OIU^? zD`sP0Rs~Vi`I_1Kd#?#>KPY#U0EeBW>Qiy*NErt1O<=+I6md zewgOW?pEdVvL#5YMkZ^|0NyZ#iun}+ps(h9UupThwu<>is|{{fk9$xih-~<8da9I>;2Dd^~)PTQHGNZe1pmOI{e| zgfSsWW_F2aM5xRLww#?3nqc5ai0Pr~$MgVPm1Pjy#~^woaU=r0_I*5FlgCMU4V+kW zz9_MNM$4)E1E=_nAu)$pT&l`4&&XXHQ9#vUiO%ngctQ?|B-<1V!V- z8X!%QAY);P#q0IUa!zA&)wwme z#I9B8k0viqf7N>sV8(<5#2};Q;bqoqwcCAtNfF7Wi(r`G+DK?sy6oNjs?90FEePDh zZY&{%vthmS){%riG<_B{5=G0+^*!W7%tI{1uq(sdV7wePN6qO`U1YE=ccv`+{ahAOEsER{rt-_N&G2{Lem5pOzN} zGu)%>rl^zUMWlEX41nJ+I3$r(pdu{=gv%!Np=X2D_n%#qyW1NQL_x=)b8|csrWT8! z*yuWQG0EHO$yoQ7+>4S8*kH+Fw^&ccASUDIyWZVRgbgvs&i3rzw%YYe2`%x@tDT#L zu$0zlbUN*LQRgMGth>zpLXt8hCSf*O_!BsNj(Wf(=5F1y5D*e05(KOwn zg6O=m+(QWl(zkEE{t3h-2HJ($^<^;eH&5j2fHqD^SHcE&QUxun=?YnDBv$0 zqPAguL>Mv(3IzGOyjqW>r%ZAmHuxi2oo9>DWIULUUM7$YzN;q4#Z@bXZ`f*{UPJ`N zQnt_ut@y-;0C*!?O&D4DPoH0B!#O+sEbC-7=uEvSM^-eHimR~uig$q@8*+FW<|KN# z6;5oxOzwhImPjC6rBZi0-SbaRZqkW+Qnv?!)QE5(Hg$abVf6CCRBq2awh%zcy#boh zkmTor4uDkpbU%UTTl{XW64}Y<*8%2+m=E|HLuJkkIm-biSS>iILtJ&0byL_eE>xX= z0sS>V+SOD{O(bgofo*6s7uzI7S!vxPmB%r2XhevQmDxl}<3OW0H`p8ut>%v(ee zpw9`v*wH!mwi4Wz;4&u`BAc3hE%MixjAyI{TKI`lh6C+)9}P(VFndsGABoCe?7?pH z^6f1YJ$sFnrTS$uUbU|hVAJY$+=rf?EtBj9DA+WDqH4Wg46TrST1tY#urMcp4lT|p z-!yRsQ7jMWM5^`mV&ZD`!`-k>N?;*s8?%Ch10^LBEKo-3DM3t3{J@Av`^Zn4t4X%WBYuDNi4HX41LWa=@p7%`6t?_`yb{gftU zZzANAX}W=PvBKG|uR00bh-kP3$p)BOirMfR<8YcF#of{TMEx~*iJ)E$QN(QqthEG2 zXrDyVZ_gMc4Vmh0&#tS=TV;?jaZqgAQ?Hq0)0sj{?_$Assa$Aq1G6+*)I{-)yuE98 zdz$Wqyq=v8Co`aDuUr+Cz{<*$?b&+fz~rsqXGS>WbZ|%|h^;2CGA25;nt#i7M}_GJ zKrONIbk_ZhEOXpMJ$-2gUlh?Oe2;cDm zVr(oMHB3SDMq@G?DIPLu7GhhOp;nx?;w_!Q^B$+t_;ByO96pYM;g;Z#*mUuw9?qu2 zZPRYY-AS}uX65!o;c1>sX*bT1u*c!Eg{_}ixy#jHZbzo!dnM8?;F{Yk0s*}?{3REm zzRWR{8>6VlJy?2kh_F8Q@gd1jb|aq=t0kRU=pu>o;O&s_QWDV0miD5hC($uy0lBf+goCfCetC>=N5eRjT+;=G1<(dIW61FC>Xt`f^H$c&Uj1G`Ex$-K0f zt5V7}eBbm*mMQ)dkwQ@hf}&1{OfWu;rp}?2N?#p-xRhsGh+k!56^e9JMu6%}3d^h< zq>=fRTMC&GjNThgW2E^9*@Jwo{1&LmX%B|+0GdRGxM}x$%~rS7Yxn!tw@O59c;*3E z_o0j8i>By{+g`K3n?4qYm*UQ@@zq=xgD>}@-5S0W%JaTT;H>HR_<7xD_8G&&3!?>v zx~+(e_<1m&fKOsDS4jKW?WsS*BA35(ymSU)LV8STbhDM$5f zb)(e#{p|Q}=-cI73?<{`Kj#1B5oa@pFw$$3ng^f2a+}LeBxjq!+#>#w+80hBFgwv;mf`AXNwNJ#6)neu3IOcBD?4)0D_4x;J*b`6yA5iOrS4*!jWK`etUT1XHu+kXjpUJqVpP{3dO{7vRdezqGgWGfeFY#`?A z!_+g6$i)R6eRrq@A=rgV5y!6>|GD7=Dg(1ZOb&0a2!Bep3UT$~MC1tc>|clHM9`6h zNCz{fm<0fhj`dnH7Pmx{_K$@=zr8+Y>vMj>>j84H1%c)=L|^CyjgF(h`*WDt8%#q>{l~+lX1j~WHvgVtNvR; z!br7a+m1N`>ErJk$w}ZaL}(j5b94f0o^mzj?MakmH+OY=7d5?zTkXGX9n83lt%?fR zsqH4qDHJq3HaW%Oo?E^_u!PaDL#*XezndR|J(V&`Ii@OeYc|9PuMOa0-o8E#2D5+u zVbV0*PQRA=2-@o!P*{0BXmftc?LA^3s=%rZ=C@;*-8G`txW8|<@48wsovl=l5HIsr zE{rXr35nV%O|FE=L{yiNAI-_lv3XtCLx=fzXk@II?q)Fs^k`m$>lef@pmzS|$qQ~V z8g8c2md@%o{aUlH>0FPV@k{*SPoD;U>-B9v=JO%$B%rYd2TL!e~sBS7ibka|1b(^Ee6ynhqT}H1Cq4V^~q_8#%f%VCi@Px{$0oL-w#v5)phV zlv1oYvwgQb@(>0~^#^B&q7+J%8U*x^n_L$kiu}u#lVOAjG+Q=SzWe<+@Y@e(T~e;EVfz~bn7vW3cF2^xLt1mq$d!7Hkc*)xK@2Z zM?F@IW`m$4t0spX+GdVC=%msq3aE9t8GtQ|d@ z^sXWcNO7Eu{f9;G z7w3$LyODXbmTj23G1x%gQB1;PmO}zR ze|?TYA7{DiTfGy{X{846%2Hme4zE;9Vgws;KXJG?%5%3?&Q0Fj_wU{!ji=PLQQfif zjlG_jVxVC95uzBP^@#Rj0S| zAy01S>3!^$)VcB2L;G*nDf#f>IidI?!F;$vEa0NP@j<{u@nYhfWn0E+lxC+tQ#HHBzoaHMAMnl4!m8&wR%8*&pVn88N?jgm}Inuj0Ps7%>?&i zGkluC4Wdjf3BAJ0R_YeW9pr}tApbR1m>E-rj9mna;IIPis#^jvK=oSS1MSh{)3{Nb zpp(*r-ixoxiOU%srZ%KN@-M`y48h1En{DX|1;_P-%j$L<&tWpi-7)Y^ZdkOEwH<#| z+tR*ZyitgyUSggIB-fHP6^Ltf+UB$Pz1K}=ZBn-HGAx;@DH#FC(qOn}n<A2odR3Wi#?bM-pb$_E%1=go^jM@P3}1^87yILGBm;?ANS+W-6)QvKSHc7f z0P5P53fEvErSM>(o*>~I_R*mQQoB6HJ0mGa_I_^ksB**l$v!C|dRaeb;v^OctgOCc zShLvu`70IEuJYgfr+1U->X%RJFQZMnQImw>WI&WDR$NvYbSBq!{!07JPHn#wZ;x6P zX|(eK?o+DkYuB%7hW3c#X@s09&U4=SV-XaYlLRL~6LG(pzw;YaNDe2l{`YNDv&2ck zu46eI{Yi9zO+32ehCwc^~#w~OE1#dbI_)KL3}tP*qC z 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]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

    E+2Y9^$>>~Vdkt1R@uE^i$c0XZ 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/LowDetailD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/LowDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3b685253989350f90d9a2d58ce94e29d7fab13d2 GIT binary patch literal 19136 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 YTYtFi&L7`$>-L-T)t2o$fAE9<7d(jQ)Bpeg literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/LowDetailF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/LowDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cdc42abae4700c258ba2eb353ea0274e4b596ff2 GIT binary patch literal 19136 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%0AZ1D9j*NpCMnVD46J3k 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%0AAMck|q{JoO-* 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 Oe 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

    3K@JpOk)o%KO)f zt&IgJVq)Wp*J!4DaP>VY1CT;a%S)%-Wna+cjPyRO)C;^hE#0Y~k(bW(S#s^_)oVqH zmr+!BWO!)a7&ddulTY0~5@3U2^eS6e$-tu{dWaJSHk8p@2(eIMKTZpWd=TZ8xq|lb zw0N(eUt!7ge0p5+-zz-{C(1WezgYi*iUj^ZMKO;~$)W;A2mpXs3XBab_N~nsaa9#_E1R>Vy?TT!H zBP?D_&pwa26SsKjvgIq5FJJ!ceGr4eKO+lnR@-*}&#N~xXT}ZRzjNp3W9}vtsMt#K zca~x2`!Euyur90Jc2W z+JU(p25efqrPHrlw{G|j6zw{OWUMW|himo&CM&Nq(Au;fv_0%}wH{z97PMyD;w_q8`-d5Tp9Uhiv4@tX2(%w*q z!_x7vbUG}Z537B?>k;X4SY9|H?_LUB7=0ndwd=s4^x2C^!A{cqtn>m%j!Ul-(!)dD zPe?al=7hWe-W-?bk4fJ@rQgXJzg^q9ZF~C6q}=d49y*go#mAfjX(~*34z22m8%d25 zFnYpEm9tw&u#$vF&hUy3-jCRB_EMbnR`jy=Iu>a>7yOsIKfM`v5>7{GsFeU4LadG98m}kztk$48()JmbR!z`U-HDKaeS)|O0=dBn6(+Drl%qs( zq)I27Yy)#>CZa3QYn9N%O{8xkRD!(UVU(nRB{l-VBENzJGDJ9s*eb~CN{BU9>uhEZ zA|qJ1WeXy!GZ+FMfB|?tr9lWS)uL$L4Qp>O9MdvQU9 zW#=08`Wqk2o-^yc_x?+o`tG#PKL32>ci+F*t)~H=fbfWPXV09OIC+}xW>H|Y)IKCN zc1TTVyOy3BdUU6_5rwR!!|Az}EiTabWTrRE4;CTp3phyPl> z?DWrHpy2iE*9Q(^Z@$b@cZqcPQ`#O>7S`^FJbOgilal19Ja<$&A63@V`It<-l;MZC zEB9S(TD62Twrttz{(}dlYqghLZKOX|`pYu(oD4rNuNWF}UPfMU6D@CCk{QSVH ziO!mX+$xqmSzt(o6M7?deQFxD&adP7X`KFz8Z{=DV#TWUC9I+}*)7OhP4{_duQc1Q z)Z&0rOGB*=2-NPdOt@HZbzH*z`;{wI;z=OxWag|{cjDrA>^=0yfunm4LdX6a+P(kC z#?4y~A3uBU-1#EKE0|}DM}-+SBUgs#;l zSe`qi7}M#Hbo2mEkK=)ZkMF)1H|zb`4rWhBVjc`THdZ`JAeje=8MakA!Pza-SM5_O z&JI+#QNc2M?aNv-gzwh+BHFjj2zW`qSf*|6b`yI6;0Ve{@YI3_A#mad~H2 z_Lw7#4qcOpitr~tYe_XZU~nd>pQZuF2odEIs8WRr7FfA8$PTMDW(i}N2*H$%JW;_1 z4=6QD02L-Gn?`kfLdejxeTo*uOt617NnTMarLC;mr?i!5@gd+2HB>NJY)cvlLBE7S zf|6(nJe|nsSIQAq%AxRJcDE)(POaALOlNRHHBL|=g$h+Yv1=(3298gFgwZ&uq6rm~ z(J!fr2~9Dg12O~}BnuA!gAogK-DJrk#G|Djr_9pNB8t8|hB5gWd!0SBrG3+sXW6TT z`v!yth7h#nA?ivI4_n-)!UKcDpn%}8pb!!{7`Dzeo&EtqAsaVt{OpTw^eNBUMXK$V zDx0P9CM~OMl4_gXRMk|fZ;@(Sgp#u@cFMRj-Tz2Aa`JedJo(Ie)^I2{M=(qQ&gC9I zjEt}IU;GZ)1w9?C`Wyl#BdPatsa>!{-kMZu+ z;oIY`U%ilt6|SPMfeJfdJ5G1q2zK5Zu~_aNvtPM#6>i^&ZPDgA@hc#8ev!rpq~T7b z2BvJdOQ1%(l|YfEe<(HiLz?ZCH_n878I4o&^Bu|5%~$&Y(%riEoG@|X*s*UK8f*Tj z|Ks17F=HoAeEXyM3qF`Vw{g=JPJhn>hDMPAD;H*N?Nq}$`9>8=+#djSAKfU!(oTV^qMu3 z9tMe@5h=h1)d(RySdg~%30S#B1rJErK5lHVXAQeo2zg8yWm{5#iiH{5(_WVPzkg3} z2A+TuWg=@k-R6gq8a|ERDtR?9N^6h=Im3}8BGojFPAQnQuV8~wF=59B5`dFnz#s}@ z7g8VW*xIeUw$p)AbVkTfPg%55#*bE2NmYD8RE$t(Ck>K7^+aH{DyHyrRUpxwBrt%N zaRe6Og9aE#+{C~T9l(jwj_|TLIB9I1hSwE!1m$yJsm2aLT}y(ijiQMS>Ch~NB2tih zgWal;9+Vx#&B%MDolS|++xF+m+Q&AUvm8ETe=rWiGL&l=4nj}cK^5-)?|<;Y?tKRX{QV@N zkyP9y71v9JUzIARrr#vW(t4?6I@H}PBTqC~9eXQ2p3Usc1?cVmg ze?Ul?GLhg!jb>dWYcuI_Q2L*iJ||FjNPl$br(~d^L8k=je@aH4m3J<^xjpW}pGPAy zpcwQ_g0fdLUG4!JZp+!n+TH#Aa_7x=>B`l9gGPvCl&Z_5;U1~GRqFn3Xq(i7wo1M2 zN)5J4!yRsFutNqN^Ovg|$G+6IP^NwuY#%!kJ3KAT+@@}%ZhvAMstb`!< zgTYjLA9CIWyW%k=BgcI0mNktqp(2I#ZS}BwJv4Aa#d<)wxxZ=GQ;(^n%m>jpsf^+U z8+#FR>gjRGf3NfeoG4wcu8Iz%;()Mb1uLgY1G?qJ$&3s54EZGrXcRqMS1#l0L>Mwlv=N4&;gO z($0u7v;zzd?AT#N9pNP$;l(K>3}J%Zt@Ap<3Ogc7s^|bAOax$l$fjigHi?W9fNTMB zpmFlrAyPg1Zl(`H;K)P=dkS8_t73!(cLjx#x6z*Rl<)=H$IWUDlYOlINC(SDU>tu- z@DV80DTi;*p1qP%?q|u4xg}Cc|0HF8kuq!CRMu3qr2Qu;`;$bjRVuwk%B_>$`^tQE zEiUCjWZ80N8S7oo+CirJmek+)NZl`U<}5d(Z}uJt+YOX*Go|rfWmpZjNaL-BSn6(< zrYv&J@|HF1l=Ia$$3I9;%AdbLfdYlVi8?J`luV7J>t3TbKPo+sO0Q$m=eSbeEe`Ku}2T@!wmk&Bs?;tzYNT{rC7Jgx=yOKLJ&S0Z88L$P%)rlp@kBd;pc0`Dy)J}cx9i^YChqWd=Mkj zl=BIX@*$5?TBwRrx@yjJn6<$JBI$_JMsz^gRn!?$${8N1hl&#bNjYbDd1snZjx?o} zBCuPOby7jsWX#tN5^q2lC)AD&8P_H&TPR2%Rj`Q=r4cUz;jL(&P(2|}V3V-s2V4FX zExav2!egl5In;N?C_Nrw{ie~La(D2o%2PL{u0P}{z=lV*@HReD@vGmUVaomc6{0GL zGq)63D#d@2V&A!`=yy`wP_gd?D*nBcFeU9!=j|Eio@e`=XIfw_NX1^gBT3!(Pj!dS z>eZ`OuUj7w7%tg5NUiNseS_3mFSR#F9cZHumG#{msu&pkw{ZBD9);9;LsKLL%8UI7)~`t`ql^!Y*@ z}T5ae@sraKrtx>A9MymWImDfnswKDdI%)THUevz_srN+dCTx z+h|J6!>hYEka(i3o^bYvZ)T*3kYT7VFxebgcy$)OLn zhcqnq>nVlR^woXnD&yef);IwPAu2s!tH6C$F$1wfD@YYa?-Um0WA~~HEAK;W9pTnU z4`Ee(!YYCj&NStH(pK}qY7I!Ft>Tl84Y7fZ%E%J{g9c!Sl=1-;aBT`J;|vEXK!~zv zoDd)sB*K9TY}x=xNk;^I$QN74q40o5tObeu5=@p3AR(Is;o4*?lt!>X2StSr2o`F- zwwfg*eMA0~=%75hZQ>bAvO`7b+oUrzgqy5Casx_axD zzwlEo%|!kHU7=9zWzp0 z;~uR?jpH7Mxr=`qiPL|;zyWc0rLKEB)9Cb@K5g336Mv@7kV!JMREAq&jfdgF zbJs}4HSV(FPZG6OsnR+r|C2P?D6b#uv?VS%;cj}(ujLtlUehpBTk#&+4)zhEk%~&C zR-4Zg0#2j?8}P$Qir&jwnZsV0MyF;9*|>FQXjrJEYbRybN~x7nYK4@BmMfK6VQ8h4 zT`7^@NqIw&E2ZN1QfH0STq{+6mP$WJrPWf|(vMR4N2%l~sX$TCYN_{Y*5@`IID2Q@ zTN6ESWz>v39y&a8v+lZQ4dfLdtW;s+CoEf60m2}J3J?|~01va7gqQC>lqBeBy19EA zc=$&l<6ry4U%CDN_m(H%M4568e8Osxl-n7E(U<@T4TJE}oUa%d5DsAdRei&18-%D7 zn6^fE#+n(jHcX$bPKGSCGi0fgK3l`^%(Vhg7O9n@qH3IwGcZ&jTZG{pRmDF|)sT!; z(`BufAxFauxf^H5-6TWydTDdi4a!p051de{=}aG`@45a* z12UnfLhlqw=@U^dFhhB5%u>ZaV`M-E8j&Q5I?@=N2ruRgE9{@Ph+mo_eh~%z(iYV+ z9C?CN99a}9&@~0+bcW^k56?%tUuZ7BusnWg3iyTK7n{KmkikDRyI*hyzo0aJ!Ra9X z;ItMqd;%ldEf>E##R{_d6ltP7VfU+LZVC4E3L zkC1#TCC@i*%KME#_Au|lhwXV5N{+9j;W~Nk(1#aX%N8#TkML}4r!2|C_3U@qd+~m+ ztvno0K#`)w6A}_$8a!MFQ0Of+kd*sDSGW~dE8nTi!uBVrvR10EQ}Af9Nv572bRhBK z>ElhCG)YKIX!ZO{5>!f>{G^ULZFWezUGnTM>9AWmff;+`xqV6<_sYN{^5&l(9gN%f z%esJIazc36^#7^Cu$}&chYb1i?1ch_SWHxr$Td=Sm6ZAZA(j1JTat6-rb|2P2e%>1>YL$$2dGkEXZdOOp{Ti3H5ZwRMA++f_LLmZ^dYwEIepZ@xQ2> z9>)n!2lq!TmN@m1`}glD&A^j!!sO3DS%j7e3801#F0GU*Qea>xi(SDdxKibs-Dk~S zw0Y~kLx=x7bN2F?vzMT==dPSSbLr5LKR0gKGkf0Bx{Y26z%Gq$N+TyKWz19mGL+2|M~LGTmRU& zW%tI-yEkv$vw7RzR?iJX=^-?3}NYoie(hL0G<8QV^YNBOEBek@v|EFh7$ zK+&(iS-5Tcj*Xk>phW%s*>imY)E=I%V6k!IC;qm6!=b~6PoFu1BP4~T!-tP--tznW z1)nr*-25@XczM`}4I4LY+RQK>UbAQKe*eUnLPFE*+rNL->^b_hqZ``=izWX5YFC_K9Q}b!d zE%MA(X}wL_ZkK0wXtMMU1~Wj8A%~sgPknJDZuQC)kImRW%nTg)QKoEJu+#sUXIfvr zdYxS~#J8}NTCS_|lHWc;G}=YFyEMyo?xoMJBA;D|e&DLE$xb}H{+}v;H&>5;>Thwv zdqE@&J7z8Ys#U8N6MMH%iQ*zTq`;?Ac!?DHS_*yTrovwfRK!C?zma0!NO5SPlvu37 zN9pgS6t}rZN^!WvO{G1RlBQC8kwmSOj+=Uady)MPje~<1C%pG-M#acgO2$4xI}l{NWW@nxjxOr+|pbjKh@xsICA4(G5&gLTEgwmsM@))jg`0wA-n}H|dL_LjsCUBZS zXrLkl^%3@JM2ZS%HPl2A6xF!-;NO1Rgnom?)PML(OuRQ?@}~jmuwz%xlE29Z^S=7? z&p-b|e|u`p&%fs^(#)B@Qu=)LKmGjcnKNgyKJ|WT`s}ZqY0IY1UGv@PAAI%ISKf9i ztJZ7?&VoIho#{x(QEd3@lU{xG)iYdwWSO_a;}xgh z^5rXb?*4;!P(qukppf-L$@-C&*$nBSAr8HbndVC2FQohC?myi~h`Es#4tM6BtChh)*@+wyXSAxWP>!_sA5N}&C+U%wEkV%Y*p|WaKL}e@o$gDEnBkK z#G-p)z%vX*g;bPsR8SWyb!rw^8 zjXB;sbu`h{xzlr=i>La=)ZhMptHWx!jxD_x^zvm}2`EsoP;A`YYIPf^%Ru%?MpFD( zaxaiP3ncHy9$FyzK9>BS82VJpf}csgd6H|4fHKk>IbTF=;%46W%^Xs^H^pU#Wj_;_0Ep6Z1QjDOblCR9r=e5ab3d4aI!|%lHIF z`uOA3iZFrRsp6Y&z2Cff^MeNudYM;rboA=gs~0a`{1_74yO&h6K_8#cDvetY95G_V zm@#9#A4y3`*|TR4ydIZ-_@lR-%H$be_@uAuldkIIsk0*^BX{lE{PG$oJ_usZ%2eTBakLt+;))j8kc|fyf&G23KoY((r)~=TTjMeC!D6_u$ z`uNI~D?f%eiKCOx0``b?VfsSFhAxjnKeiDo_5R zlWX*?TjM8A(Z@DpS1Ghi3c`2HQWy3L!-db5 zU?q#5WRY~-Ak$8Lcs$;f9Do0QO80(4#F0~~d@c1iO1*VbA3N%=3K&fRj1AI!leE|@ z%{EKleL-&=`|;%6FF*g>sWxHnw?DCB*&N+0!wn1#OLOJw)$V-cNGwF-Z$qb>O5 z-;jH?&a(Y$$@ir+UmG&v$l4pO_ohuXuCY)2>VN8BG0bvX`dEf*8z1|Kd(8C7lsW6A zOP9KnJ&^5kGmey;UrLUTBP3f(0m~FnaTPJhR4*DbReqvnFqQ%X;F*YxmVJi$WdB5v5Q@L)f}EqV_vNO%uDP+_n9H2LKJ`n8@YPt;ZSQ?**-;DiOcELLcr z0DNB2L=pN>jtGWv<7bsETXx^ReO~6pBDz+sS`{i(Xw;}tYW$$Xn72N}_o;1%S6_JH z1vtC+Bdn3TcI^tAu2`|+d+)smYKNZ=#Su}$k*A(>dklGbC_Fv&l@A_177#(kCv4Z*FkE-& zIuI;DbVz-joxA?%(D}uF{a$+h`RC)};=Esd<;vBPWut<^GfbZ`gE6P(?}!>er_5~c87^>PhwMg0+9>i5#wv*!vHDxl8w8D~nyIg;rE zrHt=OCPTK8(KOoj4DU&n+0y2xymL-oa=Dr{X{HxfHAt|7P+O8eQ&C&1DU~T(lfLC* z-n!utoOSxK!@;&)e}smHh<{PZ`?+!=yQ*b9TkvyTt`_-Hih&$oN{tmV_F%t_gskab zkCz5(a;gfSN=>|RR!gllQuikXjD|l;BjVtGl_o~W=(Rg|?2)zS6Fy$BKnLay31-Hu zqTEz;oOWhXb6d|K^{jSam!U%k55D=f@iEQZPYNxO{GSS%97;Dac*8*LA*UdCZiDY- z)c)zm?;YOtJ7%O*SY_*;7S+ixD*JUbT5^B8>h3IAgRpMgZBJ1?K2*=`=uL%&N3ec+ zf8IyR&(ijm?4L=tIe$ah=LnPonk(7o>d0%(uheC1&6?HpgBf}&a^wa}KGZUg1r<|j z3lisC$^Ws8*_ZB%3xD2oE&A#Uvl+XcRZ6gdadJnt&Y?NQ9l7NRWAT0{4S12j%kI4h z@wXL=6Ar~fNU!5*vB2=imFe^E-&31`C*nkXXE4rArG0`?F+m6uWyzLdq9Twm2zn^@ z#<*E9xNY0E*>{`r%9Sfim#v;L>yvu*>cMus?NmPhdNqL&joS?AKVTrs@COeb*t7BR z@jG_zes|`_Lx+t3T`pck2kQR28=p|EQEz9usGj}Dwr$%M^^xa{>)eGah03+6Qoqaa z;lm%373lL!=OK=W;tCb%%U7t~?#*%IS>31B_S}rVRj5=A2}bXvRHtdj0Rskh?AS52 z4(-ClOZ6K+1I7R$sXq&+Zr`yhCW^^Z-mOxl%8C^$yrUvNTF%@B96mu4Cce$7?c29| zPn|e<3Pv{Sjj>IeHl06zzPBA+{0~2@o<3t1--6)cZKrbV_=yZz$QlGw4lWZ}X~c+; zEn2j=diAQe52J0;v?X7ciUQf%TFL3(yhTeOt#Xx0x;%X}llb{AQ6@s^R?`oH{&I5JC_1yTiX z&XrPal~l)!v07>yz-X{eAONH1&ak(R{2rY&Y2w?;t@vu+5HlNg9?US{Sza!zn`97& z2p0~p6%Siy#{Ag0=gWml9X>viw!P%X+HbTsC~z3CmspZ}>ny{we<)QK%aEOeH^*GR zb}=+fdW9Ggp`07@* zIp#@@4<*NJ#S#lDTF!RYv(1*Yv!v2W4%Lkl zfP@h;)LdaD052Fkc4*oyi*o~jrzee%v^;ibVZ+mCukdgAG-lw5IML9D80-*$fyipa z2-0tW8D)I~&0!#(ua#aMJG*Ahn)Bw(^KvdK3qD)ftj+Mjg9mr--rWlZwC~z|*f(wE zD)oB4HfnT-4joc+|*2ohP#d8<0_x9v>>({S;;=~DWH?GsBQ*TFDK1T@g*x8De ztw~aAPzs#$_DM)cY}mBT=&|DvW%lmf>usm<`sg?DIeE6@^C*#q4jr2MHU|wE7FD_W zybnJ@()#VU-@KnXaq=V!t}ZY1Xx+N?q)C&!?NnB*{Juu*2E&F8@7%fb-MfS?xc@F* zyi}red9$1k%APwP;tR8#+E@Z&b-^Oy<}7v*2NN``#Oaqmf5EuBcVFoCf<7$~LnY&E z$uM0q%#if|k;11+jYWPVcCEN@f6fdv(b%y)j=TmB3@=tNP*Rp>$SYwOPOZoRYjFBy z%9I7?C2Tpo;}YIha($+3DAzp64Snbai~<0L(VoA!!8!Bf?>AKUIAGYTY9}Z*Q=(Q$ z)H12OLaKZx)xMV+1}*UEgzB%A9^2EuefV%}3bSXh3Xy{EwOq+Sf)2y8RR3#57s8&- z4!@~Wr~a|;Kt$R!5>(Hp|I`+hWk{vQVq zi?2icDoW-#3ImyEN#>baW}#w;N>&e1&;FjYTT^+?@yoG^_3G5pMS6ypCHn#aMY4UM zWol@#^^CI=MMmz5_~h*NJFZ`UT&0j^A2uz`Q|Fye_pDlLgw;E7FZS>;QNV))sbPR8 z)*e!^f2q&@wVt|<=M(?_e=0NZU*JSA0de3&X_Y55Bm(zV()=MzsP@SjT4BJD$t)OO zd+jw3XVd>{f7w>4c8@pScvIJssTA~aaS3^gw#rws&G-pZSW~B#8xj)kMb&z7(6G0w zR;{{n<;v7o8$Dq*&adTbbR0in0wM*%hdrB;a=&rgfh{`>Y}c+`>gBmTJAUdsXWCNE z%xslf!Z&@XF>g)b%3HT?O?~A7Lq|J8b2~zEI6`u!%~taL59Xi|dd#fS{<#;&PncY( zQYDNosXse=?nm%~$O=`lEjMY>B=s7fZomf0G_+x4KW2w9*HX)za)#mD##l2l+bwT>rDv zSMJ1@ELqmxewC^2iN>E2Z_G5s{jFwK?Dtz1@Clg&?fAJZNSNtnTCNz`i zCug`zDypue^ib#&skKC=op@m*x8;heP|1u(;mQm(_3*SsGj^!?0i5u2fE;eKwihQ% z#WJ(htl!03F*Cu7C?Fl9qAywcLIbWy(Dx|5Wx;g7sM-w{fZq>iUk!cAlOl_{O@_yb!z0Xb!(f!cJ-G$&QC9>TLY9S=7G9B&qQ(snJe~w*gwjK0#=av|CDj zT1sK+Mb8rrmz}xs`ybuA_a+WK<{erGE>dCG5toIVal{%cLk?-LAO zCRN))?14#?AYNd!DO=#_!P!m+Bi4TS*^QfbwQ9rG#C*?)QJ;SHMe6X?(IsbNwtN(` z`CQEA^D*}+!? z`zPw`&@j~KIpwFEB$XXq{2R8Jv*7q^jnJ{f3Ec=Lj6`LV6 z7Dgw4gpV;8WzzH_aD})dvCW*K#RWb4!&0(;GbzaA=x==}yxSp9>Y0X48&IPgF;A6>uxU20k`%yGCt)wOKC?*S$kaMziJ z3>^XJ-Mo3T$jONlFF9S+*uBa{ITwpK8hw0pK+tCnA2t{epWZ}rtd(pls>TV^QmMvT zsrS(idoF$R%g^Dp>(Tx1mi}fRnHS)JLVE}j6K3L;^bC`a2I35a(di02fByXDE%(!Z z(yyHqu!(Sj7Y-GK7VAmc*4iWuIZ^L{3)lX*IlE{PwGSCin~p^8AgE~kFrh{4<5Juc zq*x?ADWyFn6&#COeg=P-_8qzsOQcC~paQ`bq2eO|wftG%@bEg=H8#6h3rW&RfrV1Y z{T_HwK*GbhatVQJ==r_vUif(5{PE_zSu;2r9XoaT?blyJYeYyjdq`c5N*$j8mPnlr zNu3X|<1ULMIN{+FkU&=loZ!ogdN*J+ZrtRX zD_8p5-JhI5)|rxju?HtSAOYBLgM^2$ER&LVNW))P`zoRG>^XC3we>9}=LR<|{|{E6 zN}OmRlNy2KI9Qyh$i69XPRPE=GB$VeOOgGOYt(Ktea3v4{zYpEZrbjBW=@;A3exc5 zhaVP&TH(S?aAnV$y8&GwOvO`=?|!yr#}UJak3cAtm?v@e{HL{>+@&!$Dq2*m(h2q- zeqs5V%`n-k3`!UluV{{l%_mp36`KIoy?fXs_%_CmA1?+Az5Loq|7v)XD{!K^k6(=u zW2XTRX3m@`a<%EcZE;CiaI_2`K3wek!w)}3$E83Zw(r;t8WrNTxL*M}1m4_<3x_~Y zNJ!YVYnL(_T*?6KVrlPF%tK~56_0zj`ZB09+|>#S0DYdWy?>#`If)GS(3seJDvwuRgDvtrDS&K zc_enj`HMgQo|Tc!XD@qXV4xVIM8Ykm2_f84Tch8;{UKx&n#_3jP8f5Z7rTAw0Zi-? zTA;vvQX;iKXj^gSmG5pYT(p?(p`gK1y~m__4@!}q$fzi$SilSgz<|@D$MMuPXa4iY z?@gPva&yR`q5>EwyEqjz@C^tE{`AvNM$mg_eI)02DVXB~(|#yItXP7L9*YBP0D&iK zveK+3^v!!h8u#kn%Qv?_Kw($7_ROqo+z7c%b0x_pxt2*mo7|9t%S0jL8={gnP(kz& z3|ySXsdoD;i{88Z`^}!+3M&3t)tvi=hSt1v`OC@EXV8k7$4mYtgcIDr=vFK|fWg%Z z$bH~ML|jYRltRUlBO}Sq6c1pK z{SswA5NWb0OExCkgL4-zS&ye+mEJIZ(#nxz7sJ{PlN9s@h)W#t=4a$!W7EJ<<5$3s zjUXjaZ#ePN+YJ&5#!Z-lUP!`FWaZc2e4Ct8fNh$l%qd39(ux%;lvD4WKDT}6V-U(> zU@kuk7j$}yUJNJd`&jB`w&*ry%ve=;>&F)_MJ42sKH*ox$FF9$o&zC*fd?X2$Bw@k z6Q41C#!Sre?YFQqmwsBdY6pp6^ABEh?_#XLsZ*!;xf?fb?0opqm8*(X=?>q1d#!H$ zD0G=sNRDxp-Y|dR;sJw(!Phcq(4f70_acUB&z?O%U!-{lhScPipUkYLfU$yt0#Qx5 za^-4NllV#milJwZUe|y4p$j@&L$5Q(a9mteqn<6>ayF;zW{LRHKGv+u}OF2(Sv)^8E>gNr` ztLf%(-A!>vloy7usBM(|g&^7}W`+V_Bt0p0KbE`hgFpWGEj2x-luxxJtr8*J4a{ac zLew_i2i3<%vJH`fw~$Ym!vlapj243q;f@nqEm>Dc(OaeACpMh=W&ggtvK|VSU!%rN zzW@IF-hJ;TdyZo~v$pYYWW|KV0D~~Y0~^8XDP+0XZl7syy#33~8B?ZcAaIpyDODqc zN_N&_u_FL_MKR00H+Ga9>)nnh5iI~4B4*%epw0%V&(Z!*e#HN`j8*utdQ1KrNN*4u zbDBngb8CfUSS+RNkd~flcLckY{LwV8DSIYRbLCMW;Jzk5wihSvWH7h|Z&l$$e7AcAGPwB25*Ui?hG}`dgdML$yJfeaEiCW4q`x zhtjZP=Ob`hh&CKPAiUgN`i&!H!cx!2QpdkW?2MUYAi8wvk}~79>)&TJ@5FEdP*FW4 zDnmlbsj`M~=kQw<>HA_)-u&P-D0*U;;9ejAK3wtIhw?<;&|gY@)xT0mhAuZX-BEEr$wv zPA?|#sCS<<>Xn|)eYcqJIO5-13g1E5#RySF1Z~}Iq+2w2h|Ew8cS`Y(OI`ofZsP|( z{q$o}D${#7tAtfxKv@S5!DVjwdbbFsy+)A4e&89rVF?fBU8LaqN6ULOK1f4009Dh5fnH41>X%9_J8%q`)|B1 z>llaJMNx)ZUw8h5kCtpxqbDsl`sdcD z-*MukX^4grpU{B^`JKluT($`b87f!p;1RPmLFuV?jTt&@1WZ86^FF{}%a;4$WQO@0 zIen@>AHA(t-+_3>hfz!Eg*~9Ub?@7wM^DIo#aacN zh-?%O3DU7kPoR$C(%`+09Q{|dn)Sy|oHl#Td`~HwKC^J@wAle6wbsRCcgIKw>Q_XUa8UF5+_tB zLjG;$u^`a~f_>E(R;^lj_WXsAY60*$kl6BvuN7`pkEm6i%|VQQ$@$c^+5@*pnjpzF zk@loQ1S;ZF0TtMMB4R5k7BE90M=$yjsl&6~HhlnHEiN&m444s6!B|%jT2v-;QLph` zzhUD$@1OC}Xe50C#sA;|pYx_*1ErXF9KzgWZ&@ydt%s$q{Zp5||Ngt+YPG;HaW$DqkT!b4i0Olh=U6+Hd!Z$wq;n#~7&Rx5Hy;%!5W&n^QB>(m7 zdBWq(!taHr2XQp06mbtqOHQ{u@Fmh++O=uRTofKWW-G}SA2yF~0D}Z(Yf8kv-#VxfrbOACt|KKQ8OOeZ=631QRh3eA=7Udy z!rJI8nL0~`Y|Yf#@!lc4Pa;_x*i`4pH3j7^Td@v$gGvwRKVtrjc_q*fwr}6A$XpP` z8+Tw+zgp3)r_G#;Cvg!EprgP}1?dl8I`Y&+MdY#FhdllXggn(59+-s1k$Z^|S!B}a zEVG%-N)@ELiG1C{Em}(ZIbFe@e)37-+`05;^y?-$Hr$pz0i1~0Dvf+;>AC+LJ$l&g z3~`HlH#1!Nd+?yNQh^61pcNTSDuppEJrkGNG9Q`^mqg6CK{A&^g(v9`PL%A&rRi@- zt@cO(^XPG&f>SpTR3LF7TtSO%lo}oTh}7{&uLsV4^UYVW@u{A*^02`ns&q9fS|Wu> z-b~{=ecBAXNz~7RU3=@Wcu=04$khnOEe8o81X$%bfro3v`*u4Nw(cx)M-ve(ieWXr zJ9q9p{oz>zg-V8Ik_&sHFv}J6C$|;_6$&*>kph7%2d+`of;s44qmEzu;^N0PdtfEM ztN?**u0ewbU;O-1!^RC648sfM@lS}t-A#Km1E@hQcKJSFh)_ z908EfS<-a&Y}uYAJ8;a9UAeMqC#p)-WI6KoqTC0MhYb@DXijr%#^-Gf*I2eDOuJhh)cG&tMjiL~9yThQ zj^rce6`Q$fKR=W8%$X1Fe_$IuL&~{iLnnPgDI74E426V(Bt^19FnqtT-Lu$P+H+!~ zTe0Bj+(?s7dQ9r_?0|>Pe)0LIQB4vmLP}!i zL84rZAYgzymmvh6vbk{vI02&lK3mb-2p&QlFma;s#mlkbUUmgKB~60IC9{gXTfF)la&z~W6Ku#h%?N{Oa~}Qwk48{NqI%AyAguv z1d#G1{Z~l%l~Z=e<6b^?>5pZL@0~DV;#c2XiHdGas;6Zd{Z%+l@b=V2=#H;YDey3{ z;QjPHmw}FWSgc_E-M(ubQzl?{;`#)T6PXh%@afJMlmB=QtH6nvgqAvUDzJg{2{Vq# zIzQk91v?Rb7zrw5b8=*K*M*CgVV4eZLsl4(y7!wYThs9LjHAwyuCr#5*$VHivnI;6 zw8bm#hu$FC^l?`dZ+tAJX}`PgzI)`zk>a!VJMVqysFA60C9ht$6}Ee9h{VM)j<8%^ zyhwKxEJCX2)pt*wtsa@{V}pwVuIz{&{YRmJO7A)L!ppY6+IYzXE6y3S=R>luUAtBp z|K!P&@N7e6fu14mE`gzngTS+GbPNb#hL53PlF6<)$ z^O3mw69ybOXgIT~dme|$!tN;~#i$G$J{qCJGiJ5A{38Ar&R^1P`e)J;T;MGFI-GeLqloH&yB=89aL>?4cW0*U4 z-j#2!Ib9BNs$1s^;hPFtD3SXhxQp9k&<9#z+ajPv4VDoNGZZ$qOL|o5ba?c`=gxk3 zre1w)BT<$Od{t(5pW-S-+4@q3>1iVq`2_1r!3^*K@#-#$t)JCk z#d03g&pP?q4>vcK6l>@?T0eT!=x@Hc(x^!k?XTrnOlb`q7rAeP>r(#MD}{MG2#w$s z0FY3WZTRx{kx-hRmgTu9w$920mJ%G5{TfHbU>}_JUAmH3Gmn$(h=Hysr;;NCT>`vN zOUV5`?1gpj{&4WAT@exW5I1q}61HihoXtiM%uVHS0-kWw5~=qQpS2er`sC-&FMQx@ zw0XGo{1rVu2_OXdy73NeO0{Dy3QC>;V0b@w`U+Hm6S496urg8cO9n8=7Puuqq!B`( z#+;@%W#Z@zYPNp;RyeCwK}Tb!td?yVvOQh4r^@y;*`BF&;^lPdS_kOVp(7U{90(z# zqP#nH;*GfMK817U_3O$hggk{swb8f|XUtm-^Nz|Y#hbyZGhhHkuPOlZ*%x2N zWOVkiQl6cUEiyi{?dUOMu`z}iRC?yab0J}k+&H0k_3S$YmLlvHu1pQ$)TuLbi|!pZ zY&aY$iV+F*Uw{2goqEyCKxE6xZV9ypvnzQdIEyTCVBxuQ=lE!tw^i$o{6;D)EW#VTjuXm3g{5MO=ub@iHf@bpMYko^%jT<4M zL6T2HGJoF=PQau9QPOT-)TVQIRE%m8SMlKDM4(k{tG;UdVq)SDJv?~mFuF5LgPBUf zgsl4sojs?!%}`8Sl6{65XB77@T)rGFpj%*Px}-;>PDiFbcK(Air)$?~RE9~_>?&48 zZqc%|u_-XH8ZupG6*5bmb)@9l;1=$sAmMqkF2#%$lvR+hU7GvOn74ko`TNh$@89$2 z1DiiPd+O6mpVf+}ElJf#E|YVZDIy3?CBRVp9E<=+aO8k0&}>&g;mHfwsJvI7G8a|p zRhR+-LZI&6Gj0N{t+8)uP9;|YR7WoKxz^bK`MytI{Nd`?PFE0~KM)&Iqh<|w-X-&F z_EaJ05PT5yRSK@U_6BLryHSsSh8+5WPMy`8Uw@mCKV<2ObwC|OyrLei z;LO&8H2(2D2Th019GfGFz4)XTKK^XZyfOd-ou+eN>;~A_#~R^dtrO8CXX&yP2+a~x z#IGV&wNWy|i2xtHD z9J-F;ae?-LXkbjI)Br--wTEs_(j4At=qO@#1t!|K>3)OJKQ=B6YDaQvZgNUC3i9t7 zM#r*BgmAJb?u1v7jE?mX;`0O zOUd8uT>2h-`W@TDkRpIksZ-ce12%*S&5a7AyTB+C3W}7HcF|20oIuZ4L`|Z~WlP0rk@5JJ3tNN<|D!L!S=73wy z|N6muZ)10vG7K}E;9*WopQsQgyxweD?>qKW6;33!l5N0-WW6~>wk6A!L?8r;-ju4d zz~Y3jz>GA2$HZx?;5JZ6y{GmbOKmpz#h3qm`Kv3~=I_g|zy0#-tKVF?cHrOtJQbQQ^ERto1XK&+IQWPaqx5g^Aq@4Umi09Wp6hn!(*KX~XU zn2%IJV#ki3NJz>$dh}m-p2fbiyg*lg*lOG)nRg5fsXc$eB5jsEJ9Js18b>b1sc)23g# z{8fWSk&pr9Gv|L=v22+ZF?E%3i+V83&uWd^ zwr+djrI$@6_y97?=o1_*IFlmVlrgtL>a;(8&HK0sV`37JF}H8u{twTdvmkCt6H1n= zTPJ2>G=x0V*(epg*XZ#tuz_Xo9(Zy>fP?#{ARU66n|!dp6Q{wR5&;DorYGQp7b@;p zn2@T(iF`N`bk+>u1kgf9Is~)|6nLlMZ%78M$7`<5X?+J4cI?;@$p_+N{u^(eY0+-f z(xuDcI##SPkeJ_n|6}9io*{Kxtyr~AweKFfx9vWD^rVH5gQ_i?R;}Nu@sEp2?}jv8 zpo_SxE0@AE<`>UjLJ8aAR^G)MAM!ER_OUngaW*jpMJ-!Jn#%LfKhL}HmE0O)(`)i&7XVdre!kpD<}Uuuybyqx+M)_h{gvV0T5g?){J~jZH_Civ=f$=~9eK zxVj#_`t!z3o3};!2sR27Il)GOxlLOyUb1xM%9Uac2ikP*+KYGeH3i^3cUYf8hYpE- zixw;?y*ZV;ln6^$c*GZ%E&*WapJ*P$T-jAUBq9<9_kZfc$T8mV!Hs>pcgcwCDl@D{ z5d5i1t*L%wBdpKJQFy5iGmp3<{RJuPmZ9vq8$wfg*5>|RO3L$OA>dURi94|wM#<}6 zJ^SnthpWc_fJ0o4)^FgTL7!jxvLS()LvnbM2}-R@9)u8)Re_2c>!g&OQp;UZ7ShPE zxnT+0esPrtSIS>0t0_eeh7;kNv;_wrdGqW2Pd{bwbKTZ;X^r#d6`lL&6K8-`k{U_& zVsd4d=TNDEh{vytr-7EcBNn{%$xk<1<+p)*rfs_pzyIftZasR^59Bw9;SJED@;?k7 zDGc{YoexOG=N|q1_fO7!V73O7GVH+#Y$3z-2@uRb!Ce&W=*0pS;T6;2>77W#xO zo#26d(LjhKy(LX=NhNr&WazD#dRU^Ysckx8&+lJO$S0;Mo$pZ#wLyav`W3R8VHyAs)5ICWF9qFd~wrhNYSqaqo2COMrk3o(dJEjZ* zV$zh^BSueBKYwA@dbv|!A5@ITuFk19RL{{N)Qy<_aAr<8l%*Uj2km{ z9I~&)9ZHZ{os-uZ1}^x_Rj+uuhp7v^@8TsZ5H+CM5M}GO9h?o`Mxbr5_Pl@U{rk6W zqkp1bfhRP+@;jdk1><6=!4_%Q@j0(ud++3HzJ4xcb$-TT3poJ7Xc(7@QN`?@8e4iEz@aS+hoL@ci>H7|m)y$-Ce##UdX+af1GchE`-K zCwszeND%A>*#Eg9hcEy3{Z*?yL}B2+A@Ia{&pji5`uUgok$B6VuVk6!wu7mKsYjB! zr6)J*dtzrfT0qrEc*v*V@bPok9(-^+*1u}T zN-BlMTBhHYfe}vw(0)d|xc&5xFC0BY%CXi2)$_)$za}PO_gMtUPG*5mxBRz2F9B4v z+vih!{(+Bw`Sy#8W{dl&0;4gUfW-;>xUl?uC>BB~jeWXf#pFMpu_|$*HEc=-Q>xyQ zVgM@mC6O9o&6aIYFH&%d&YIH=rj*d|*2|U`Lq>}(V*F)0^qe|u%wjykBUw}wYRgL= z(fMbM7{3T{O)7c!-0|1bS`L^vX)0d+BX+^t>%wE(X`Bg@XDap0K^+_zQaI*sT795K6ej;6hxCM;XFu8&Y{~_@5FJ+)LD4aU%YrRA0Kib`*w)>#GoOg z_&tw@MC=X=#YjvHM6W*mhVypUx3LdV(IuP<%-JVgsQK*rEsm3>Q&oQ$=q1(HN;BS!e&TbuI_kt|#BHJx+|GDD>q?U_XjOQ1K1z5z(R zC!hXT@%o41-Bs;TvGa+;vNNO4;JJuoRi#RN^vM_VmTbZP83;P!(v}~Q`qZM!NR2aT z)D%)&RH3Wbz@vU*yX-c1Pnt_yb+;8Z_F_Y)5T)TC~jG3yDzrA*S zM&Y8-<7W&VF)^rmqZX~ZfF;<_M2pa=(;v(#T!;*6WPOV+bm$hHy7bZL{25O8x9`*w zec@(TbPgEeL|YupN7Ryus_8T4KyOfGRv$cgq_|`wHim+;N4W$L`}aR%wuScYJ9Nyr zDa)3xLHr`HL_}rmUkj)nIeHSNs9rO&R1WI#8cy@1iIed*y_&VEQ@kS#?qp2xJkP3R zmhu%(wTS5Nda(A!vmgC_vqQU1beU!36#vSvU3?yAwC6J2T}q|14cp}H-LnUKTF`Ca z(}bDP%cXRfYoJ!I^2`29;iu3A-G%A0CxH_zacv5KR3A&|nno(T6( z16k<`2>JMvPfou5p1%_tjQ}d{lI%+;o1IXW#}?! z$v9Y&YUa0{{_~CBx)$_vUl*Z;XZ=eTQ>fJ09L}Iqr%$`(yW6#JOFaNQ;AsF3mA*&s z+4K1qUtYHPhte#vAIt;Szx%FwjZjGnkgT_{eI$2ibw4bXoWK908<#)1;P9^o&OJE6 zw2Cq~!FM3%X?K7M6;9BSdp~!`3RH;`ZOAQQP9oEjImLj?YAX~A=n$#!Nic*+hXaFX zYx;~iC3ut;x4q+H4sTZ2wr!g#wc_~~-q1SJQ(Fw1KBG{zs~vhl=p%(#Or}F6f?RtH znxSzf_82q`X$q=0BmMB>Poa%kMrU@NGj9Qs>BMHG{8GCqIrz5{%>4_k!r>uqYslL`UxDvIg}5)Ac)3Xow5VM?YY&_t5nV(waXP?>dloJeWm|_1 zoiBg+Wo%qDo)0DednMNv@>0;QqP!r65=HrnQ=YG#pYvaQ>h~;)wF{nqyU;+It|VS_r#igGsTl!cexP zRHoBHt!1gpaI|;|GMRbdrzo+xvclIHIdMSBdnMCENeioyQ_L~Z;O22a1Vnx{4CaLG~F553$zIv@z?S?d_Y;6)9 zcjK2E<0nm_p^W_`$Ng0g8GE6Zr^J> z>`oc2@J7|y$c7W!oc{15Yk0P^Zf?=SrGP6X1sZK8&0G>3k%o8S!6YTRPsHvDJ!Zm8 zgQdpm)x{V@e4~cafD`ak1Njgmi%mhSVJnt(vd1`v| zS+i%u*8=R}@2*hI!oPwIz}~Y*pAQbLw|L1iB&&<>6|b<%j9Ep>EJVomIuVgT-yXet z(|^#^S~B;dy`E5vT`MSlUFnp$Kr(ibnoN|Zy>{fAnjn;3^p1r3|pRqX*Jrzu-Q}s}t zB)OfGHA|Xva?Qn?S1x}Z5QzQo`6gg|cQQDT9F&snBa^!VZ>JCwv%T8_@}K|CJ64Gk z`OqX3Y#?B;xou54dy38u=Qf}sjVf)K=8(LFOSd3^CpI<~Mtqn}VB$x7CqApNQ|QW- z00YECL3_Z%^5og;<$zqBE4x*fu}hXNM;AO}_T z@&{?XJSzrc9inX8wrz_IrivCUMMu2iG%6|z$=Ki)7bx-u8drfq;Njo6X)Ddb_+isI zELP_)zx)hk>#zI?>$ThZ?~8A}{;I(bfj8w~K!pv;q^kNd9UWSo`RKFH;;rBYU%$V? zQfVJKJZHis;KZaE74ue}jq){Rcq{!WNvO$|290749H0>7SN{Fxy^ELL)xLwnsaIfRqo!eeXW~uoKjrg&XbFo5`*W zIWSinnANt&gbnxYm^^i6j~=}MGfI09=u*(V$Jp_c)@^z)xkZ0XUOkxPh#4yia%h#F^D< z!2a{+mse-cZ*><|_1Ft9?uFw^y<+9pkZS0kuzwFsnwPJ9SF&!idtSO~>q{@b`1u!? zp5C*s^w$x8sS4=>2lwrI?6JppfBNF#_fCutjlhVL|!J2A7v1LM&PyhoUq4Q5C@PK;ZNDph&A?L2q z1^o+0Ok6s4%F3~mSB{;s0>prOiduCZ6A{~04#_sGpJV8?E`ExYEn=+ZR5OXIj4jS;)v#Wro#C9g%t+~yr~TXdo$mG-&K z+T}HGpPkn>E-}XyTvvT38-g^3AZQ5*$$8E5JE5^q+VhUCpa^v@y$cwSiB~su=`-}6 z@ngnK8$EU^FLw_d(YkGqsF(~A`WRgA3a#0wSxbyeoK#e(zFEtT4Wd%iv*;W!Jug6} z`^Nj$t>47T=5^~)K=UK7EOT7DZewxD`o|vMwP)|awjFwwj>)dH^eZG9W6xbv{;VkS z+%27YzkvP&hhd6aFyLWTpB_1bseeUH>gxVVr-c#99(z+;C*nRDka z960#Q_J?-j7nw76!Jr`{5fWXiP7_j3OD7eeLSYhwLaSRkeN8UBK$k6P=|WYsjHOG8 zpI}Y#`dz!8e&o?z__LMHu5;9^Re#aF%Y^?7?}d?XH8}n=Pwskp_fz|`a@#PRFheoo z!A?v?GZQvwd;uG7Y;eEA2=*u?H`|L7e=|0S(^r8Lafz+SxMWL#N&#%pJF@k5#Ki(C zfElTJM;2mRp;8#^ATo81RN0xT^H0;cvS3isx$<-<8D*6O|%lu&l$^sSBtbEu!K zCK`LL^nZC#THhd}r8>%OGNW#0rmHYJYW>%|{pp`i_6^3=R{vUdS8YFQsLdJX9}pf8 z5)o9bZeV34qz+D@jl&ggbJhy06B7_p-|Pr8T0*r*-zoi5{nZr)X0Sn&RlWVSHJGa5 zSC)+-<=N1isu`^{ZvPL1WnurBFuf_1MuV-1)QAAU4;i3Xq!z;oO3yA0b0VlJ#n zq<{oSc!Rv3zj+0!#EI4hQX^1ErGNrqfW}}?(Idvmo~HB9(4#<^0G7ZE1p}0mwe-(6 z_-E^#d3tA#-U-0S)&=Cs0XaInp@`IobU7eh4sI?7H%-TXsT+$dUuH zVPzs^A|Oi+X@(CP(1>-7>Hno8u2ULx8-V74gU9ED_f|_>ThEiZ{sTdtCeJn@L!Mc zUtHk-{#Uq-RsGA8-s0!r4hb|s0Su6O!CVv+9ZR857PpH+>&M#obCZ;N*KsHoJRs^0 zkd^;r7OKVxQXMFz4t{Ll1PoBzKLImTngM=nvOcAfR>2et1I$oVGWBF@%F;Or7ef8p;b(7i9q@#N3*kp}xy@dc zTstgI00RaOzzK?uWrZwGFf}4NjM9 zw$VbLAn<@z!R$`ZC%DClD-(_;S_ceS93fzLV#N~Swm1PK%;9cj!Y|BicM?rcbPuqb zr;?k&0|r&LQ8iF~RqF@kh85e3bd~I(v8uglE>#0&bF2EQ`IySF!YNdhs;??Gn0Vq6 zs>0d1lBfI%w=cp<$K*3AJc|sVvU2ulgv!qeDUpc@*%HY(5<)Qh5;-Su$_ecuod5$+5!h4?X(c=1rGTLc1)d4FO2Oiq zU~ytv1v4=*LlcZqC>e5SYdNfw)(Q7@vepqtM_8QfPzXRLFwX?kg*3u|pfoK21EweP zPXHC-$wdL22yHHt_kx+8$PyK=b)s(^sT3HB=vZ<{SW&o2fnz-_oD+ZtrI_HNfa!@B zcqu~N#kU%}kwnpn`>I@V%aOA6?%T;zscyq=QB8z)*I0EmbG!st|&AL>0mUmRQ zXKYk<$}L7cj6sH0ICA+hRW-NjRrxjYL2l8v4BKVLDRYYPuVSgfuT}R7h9;ra2MBjf z5NuFzQP7cV7*Hd$M)pG>t}lQCiQCIf9t*EGTa?@XujwjqA|^Rs=TAOrRsa=AZf^v< z(}WXbWdgx)0=6djtMgcZ6TH(I3@4yTq{;p%01tu+gf;;cPy_7&0ZwkfV4iIXb4ry1 zVS38aI#aYZSe&31FlTi@DtRV2PPqNpT(L;d1_2~ev_Z_F4cLJ9fg?jfXR!Mgh2-VHT zPpRs~ue^cSOI5?aDo15fPKb>?G-s@oJ%ur45DNhrEk>QdZBq@ESUL8lxpY<(^TvUaH}f z^2%V+IF-h3f;Hd+mNr&(WYd*7%Nn?Qv9m-gQ+o(LMd{#dE|GJEXWmjh0&mYobC1tC z;YZ=Z`4sMnJZCXlnHr@pXHPlumE?1=Htt^30B>VtJ`Ck-5WSz#y&)h>PwqET03JMl zMT`I+xSh;Xz!KTwu|)m97LnfhumV-$L@S*GPV8hVAP6v0VND{ll7AWuN{VL!Ai)X+ zzv>a!6a-H-Oi3AVVk20VToG=Ubrz(*8#4eKgcb}Z5a|Rw0CH4oMg*J_P$nqSDTOHz z8RVQGs6gOTvK*W(haf?Z0Ru1~7(q~6nSg(Sc`Qhu0Mfv0#q|mJy%V)|II&Rx6|g?R zj~&7M6XApw6z>$SC8z*Gps;u+5hvU?o^nf6LePy-_Eh;ARRi%W8uKDnR!Em0wtNlm z=$4gbxvFqXRNl_)N}I}NtYYwTOQdT5rx%hj4PoIpLgpfHnEK%yL!P9ASqnJCPOsTAay0AL_=3bw39q+t+FM3T`7 zQBQDU10mq3P(Z>2M+FOf;wlA2%5r_8+?~VkC`IllH<&`;{t;=k6dU7|c$VL6N}KYh z#Jf=uC1}RSR62^yI0Jkl-V)7}uS!eQ@Rt0nQZEv!UP>2E@a|&!@-*iV$MUDdL3p$B zZBSF5J>tqEI>kX0y25c(mAr9`Z4)L`Wq@2+pM%d_^Vb5YR9# z0Sq$8Cqa=;@Gc-I779c<7+`f(uIxB#fR8T9I$jE zp}W$UPgg(-IKfUfG8ZPVK_ zk~vJW){(5WB}+Kf*cf4Dv>oq9tV_kwK=N-S**INaazs+4e*tAo{wZBv*{& zjAEs+;uAH8^y=f7=;Eghf=XrmrNm&U!Y_TkxW67pHuR+OTISAU?##ZKr&b)oso*{ zD`^d$qL;L?q|v&Ik2m7t@A!Lq=k%_CcLnZ%6{rd)60;;r7~z2}LNeE)!a;(tfq?|h zT5FLgx7Vi{f{F-(04jtl=oksi@Cl6d0fEMV3TsWt7A85sVHkk~z5;Im63+UP zB~&u{Q}MM*Mh78;-Yn@&3@7{~+2{cYjurw=05H5C?+SQVz`Fwf$Q7sxClWHDQbZ?a zM<-@QCu9)Kk4f3lC{)h~{uRgMyy)cI=%k$JWRzU`n$k2nr5P(NqEnhveNq;kLM3mU zf-WeiXI=0$Aw4=FjXEY~&@40*#z8?ZHef1-LicQ{p;^!XG#`ZXlf@e3(g-LREk2co z#gPaclcM8TiA{)(ji(Y57ahZoAb5$1juA?<_v2jw?+SQV;Gehxx55c*ij6lPct741 z@UDP&1-vWpPhNpx!-nDQLHKY`kU-%r1+2z<@UDP&1-vWZT>;C{BQKD4< literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/MediumDetailD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/MediumDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..58a7e50641260a3d8cc882abfca751ac488ce540 GIT binary patch literal 19136 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/MediumDetailF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/MediumDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f07b2b1d1123be198b0a3becb7ab6b8bc1932b0c GIT binary patch literal 19136 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

    237IYN7B;=2EY17`TS!lc|#Q02VsU! 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 D3>@qq literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/NextU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/NextU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5193c257eb45474d6ed989cfe1124fb1c8454d69 GIT binary patch literal 9056 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 U2L6J{>pPcIrE_*^|A!y`3l1gax&QzG literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/OKD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/OKD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..acc979e44e4ab2127e0ba2e03aa06956cc345806 GIT binary patch literal 9056 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 QvWs03P*G`*z4zY#1$h!Ag#Z8m literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/OKU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/OKU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b6e5ef7898255bf06b501e1b21fddb5e525b22bc GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/OkF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/OkF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5167954d7c93960b329674622169afd4f03b690b GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/OptionsBackground.bmp b/Jack/Launcher/RES/Lang/EN/bmp/OptionsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..867e6969da660c4fb658a68e7f731139a4f5676b GIT binary patch literal 656696 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�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 T7OudHyaK}A?Gs1NI_v)d*6t!& literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/OptionsF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/OptionsF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de8e16195e9eaff8ee0108ddb8c57711328f7aa9 GIT binary patch literal 9056 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 ChZh(C literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/PlayF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/PlayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4d906e159aa43509613e111b7afc1213e1929c4c GIT binary patch literal 9056 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 H?z#U9cWD=Z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/PlayU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/PlayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cd47a4679adcb5531cd8cd59ebe7b69ff1104944 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/PreviousD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/PreviousD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..98d7882df103f650bdb86678e075c001c66c8038 GIT binary patch literal 9056 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 at7n`kZUldwE5n~H!9plf#KSMW^nU>AWz{nP literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/PreviousF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/PreviousF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..00da97c57d501620e336d785fc36c897533d2cf8 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/PreviousU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/PreviousU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..89152ad1241dd897421b918b892c535095aee5bf GIT binary patch literal 9056 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 PEniG#Pw2&+AAb0M4FJe> literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de44ca2fdec9f3fbb5b53b21b48cf6426eb38519 GIT binary patch literal 6296 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 bLdYaJL;@!e42qFW0Y7q;+5TdK literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Publisher1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..279befa58505345309c555c45133b3f36110e10f GIT binary patch literal 6296 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6f2380f35498e83dec41dabc4dae38c8a199e7b8 GIT binary patch literal 5096 zcmd^?eRPjy7{{-fY=kW$o3lmD%e>?zqion_+L*l-o2_j$#JsG86zh1&OA*n$m4!H7 z4_d6lNv0?qbR5YjDWbj z_mSib>E2uX1Ep%!n+M-p&)(G)*G*QVrnGJ^p^*~VOTnfLkRfB_joI?n``Ylpy=z|H z@?fp&+vmPjI|&Jsh@R3jSrYn5YPP&MTEX^6j64;M5)iCbVRifgQStuJkN=8kTanmL59htUJ=C6@SbEWGuIwq{UG;1ZK zzip5B%kj&-oGv-=v(#0URP3+KkO{No>2Q5yejf1~(ZbD)#X4t$hElJAF2S(eJj+)E z3>n18krSl8pZed-)3?7BLV=BS62>#EaT6ImSsrhuOBj2ot_*tFS_oFsII!{M9-M(cZSBjsZ1Wt!zHNFF4B-^4`7~~{(zT_!PNJE$jK{u z-MCxAW28%z#xqJa@Fn#gkvw~;CNGa5#V52UJF9Oio0m7xEJO_R56p7Ir$=3f%~{4h z(Au&+yDs4E1#9V~>9(=VoJdCnc<}>X(w>q_;HAl~6Uxr$$!@$ALBF`i*K3f(E1Yc1 zyLzM zT;!{1OU-dKoEy0Q^q_Q$wpQd%RGdKvYAd0Ff(^yt;3b_gcaQ^3sUeujH4}%0dkn>L z^f%TrcxB%iYjTbRM=k<60UnnZ$;xdOUb5b{S0*KtmZ|b|2xW4M-yi2nHz{6{IXr`bcOlIh~ zr!;4|qF2C&T>KE+##&2+l4PLae-$WWt=k)bN^zeo?VG>GP#Hl~qX3Ax8NBH$`hl#O z2%+7g@j#pbNXbBFPF?}8QjExu9ho`!B-v3;wyLUNKE5gED>TUSR~x*VM-&d*I3aLE zY!jkl1zz|ioDN^Wy_&5gDLb4vM`nGfFqspihUH~jq;QYsHPl?Q>v$;>m96N2Wd*q@VJg59_|5kGWRUw{9J%g8H26&N$b;VM2 zKu;t1*|x!>EL@e-inqaSAlG_@EMUuvcm%R4aO`sum!bt7mN)OSGWSe{YU9ph25;PX zmpazdlS~0G$*WbqTQo9j;UzNdgHvu^Uq_kYHvA#VArc&jKd*dcA1fhd|;pf@B4 zXC4%c{X}j>D9t@bXOh4gDqH%>3JB7`nY@5>p4gKL;ls0{^Ua4-j zTQ~rKmv}Z{cb`;EM!49ysXQnN`Y4jwXj9_n;M0Nir?o$MsA zZM>|D6ToXjrnv7os_nDGvh^DcU})t^^8OcCvw7ykdkm(cRhGv)3GJ3^nR-pu zMzY9aw63^BK0jhLG-~KrEt>bJf%o73_wiMA;wby>M_O4{Z`U+Iqc~J^=D+*@>AMXV YNCcJcHijy40K+Z!hfz)7>wnecAHVvhnE(I) literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/Publisher2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..25f9614e5187205025aeb26ef8d05b3a2024601f GIT binary patch literal 5096 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/QuitF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/QuitF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f21dd8642c3aab2927ed3e67e72147a848867ae5 GIT binary patch literal 9056 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 bt7pZXNAp|vee*XK_Z}5CA2GC^S6=yF*EY=- literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/QuitU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/QuitU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2f6624a83c380a452020e21c6d4407da5135f1fb GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/UninstallF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/UninstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ab8a97b09799a0d3eee2fd80ab68ef3882ed2667 GIT binary patch literal 9056 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 Z67vtC)fk2^Jc^bNLg@|HXyuJJ{x9vDkEZ|t literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/UninstallX.bmp b/Jack/Launcher/RES/Lang/EN/bmp/UninstallX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc66bb0792ae7d779b7131b8cd5710c9aadb0fae GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/optionsd.bmp b/Jack/Launcher/RES/Lang/EN/bmp/optionsd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7802356dcfab03bd5732af0f22cb65fd8bc67555 GIT binary patch literal 9056 zcmZ8`>04XZwRi46@P2+jy-z%X&0xUHnx&&7>1dwk837VtCJD{+076JeLK5?6z+f9= z40wp`Bu*M9ZsVp&o6$|$CT*Gy8QLc9P5Z%j5#{ZNt7q#x($?B*_^sdBXYC~_*Kp#w zA70IHt%P?6y#F7(|LeK`3)k}N)&KL{b4Tz0{}T6RdK0UIW6O@o%|QOLBXu!0vlE%! z8BTA6=l0xFJK?!~clL@eza1{^_zT;k^Si;))nMVOzi`=|-}b0Mvxntx{3Q`iB? z!1Q%{dON;wkX$~D&F>{vZrL+eVhj7>nZ0mn&z-&I&h5H#J0R@IZo4Kn-Px_=%7G)l z<)7XO&g=zCyW!IA=;D5CVb53kL9DRjFYY)dw?Te*Y|Syg?wHu{g6Z5=D7)>>Yz&XD z42`XNvmkIKSlk`SZo>$cc0dN)4i>KtPi%~2z|iK{!ZlBB(^uGbWw-4U7ya2w!NPX9 zu$^5!gysJHwj;aYD(?7a4`U05vE`et{Ej`n6)0Q_OkHzLULkQU-0m?$U}kuH-JjhC ztUTGx=h?=-i$!dlgVhUcBjn>`a3j*T8yg{)Rul1DK4YHo(b|$@RgprD)-@V`9yb zS_PkdfDgC=Fr&6aB?j?z2k-C&hA9#cSjd)M1Y^U zZSN6Qx7@&}>Fc4{eS7*+Vtzkd+yM{W=?y>(0vsG$bfkc0t3Z$R(mwnIYk{S}B@fUE za4uej;m%(MCEmhSS8mH+yyD1gIHz`k)4PC7c=`&^EHSg=&jCp`07*~j>d4fNZ|2aE z-LX$>`{xcF`K$e-7tMhMm7{Q`fl%MZrn1#yYf@^@DTi`8Pf6`9N*wvl*pkST*G1=S zi8a;8R9ARTX>+g`UfC0Q3u@1-%0DmnPD_Tf#@MpbGbpFsO(cpdwy_iP2|YhlB*(n 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 B8iD`- literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/Launcher.rc b/Jack/Launcher/RES/Lang/ES/Launcher.rc new file mode 100644 index 00000000..3cd78875 --- /dev/null +++ b/Jack/Launcher/RES/Lang/ES/Launcher.rc @@ -0,0 +1,520 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\..\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +MINIMIZEU BITMAP "..\\..\\bmp\\MinimizeU.bmp" +MINIMIZED BITMAP "..\\..\\bmp\\MinimizeD.bmp" +CLOSEU BITMAP "..\\..\\bmp\\closeu.bmp" +CLOSED BITMAP "..\\..\\bmp\\closed.bmp" +IDB_BACKGROUND BITMAP "bmp\\MainAppBackground.bmp" +UNINSTALLU BITMAP "bmp\\UninstallU.bmp" +OPTIONSD BITMAP "bmp\\optionsd.bmp" +OPTIONSU BITMAP "bmp\\optionsu.bmp" +PLAYD BITMAP "bmp\\PlayD.bmp" +PLAYU BITMAP "bmp\\PlayU.bmp" +QUITD BITMAP "bmp\\QuitD.bmp" +QUITU BITMAP "bmp\\QuitU.bmp" +UNINSTALLD BITMAP "bmp\\UninstallD.bmp" +INSTALLU BITMAP "bmp\\InstallU.bmp" +INSTALLD BITMAP "bmp\\InstallD.bmp" +DISPLAYD BITMAP "bmp\\DisplayD.bmp" +DISPLAYU BITMAP "bmp\\DisplayU.bmp" +UNINSTALLX BITMAP "bmp\\UninstallX.bmp" +DISPLAYX BITMAP "bmp\\DisplayX.bmp" +OPTIONSX BITMAP "bmp\\OptionsX.bmp" +OKU BITMAP "bmp\\OKU.bmp" +CANCELU BITMAP "bmp\\CancelU.bmp" +OKD BITMAP "bmp\\OKD.bmp" +CANCELD BITMAP "bmp\\CancelD.bmp" +IDB_OD_BACKGROUND BITMAP "bmp\\OptionsBackground.bmp" +IDB_DD_BACKGROUND BITMAP "bmp\\DisplayBackground.bmp" +QUITF BITMAP "bmp\\QuitF.bmp" +CANCELF BITMAP "bmp\\CancelF.bmp" +OPTIONSF BITMAP "bmp\\OptionsF.bmp" +DISPLAYF BITMAP "bmp\\DisplayF.bmp" +INSTALLF BITMAP "bmp\\InstallF.bmp" +OKF BITMAP "bmp\\OkF.bmp" +UNINSTALLF BITMAP "bmp\\UninstallF.bmp" +PLAYF BITMAP "bmp\\PlayF.bmp" +IDB_MB_BACKGROUND BITMAP "..\\..\\bmp\\BoxBackground.bmp" +IDB_DSD_BACKGROUND BITMAP "bmp\\DetailSettingsBackground.bmp" +MEDIUMDETAILU BITMAP "bmp\\MediumDetailU.bmp" +HIGHDETAILF BITMAP "bmp\\HighDetailF.bmp" +HIGHDETAILU BITMAP "bmp\\HighDetailU.bmp" +LOWDETAILD BITMAP "bmp\\LowDetailD.bmp" +LOWDETAILF BITMAP "bmp\\LowDetailF.bmp" +LOWDETAILU BITMAP "bmp\\LowDetailU.bmp" +MEDIUMDETAILD BITMAP "bmp\\MediumDetailD.bmp" +MEDIUMDETAILF BITMAP "bmp\\MediumDetailF.bmp" +HIGHDETAILD BITMAP "bmp\\HighDetailD.bmp" +IDB_INFORMATION BITMAP "..\\..\\bmp\\Information.bmp" +IDB_ERROR BITMAP "..\\..\\bmp\\Error.bmp" +IDB_WARNING BITMAP "..\\..\\bmp\\Warning.bmp" +COMPANYWEBU BITMAP "bmp\\Company1WebU.bmp" +COMPANYWEBF BITMAP "bmp\\Company1WebF.bmp" +COMPANYWEBD BITMAP "bmp\\Company1WebD.bmp" +LITHTECHWEBU BITMAP "bmp\\Company2WebU.bmp" +LITHTECHWEBF BITMAP "bmp\\Company2WebF.bmp" +LITHTECHWEBD BITMAP "bmp\\Company2WebD.bmp" +CHECKBOXN BITMAP "..\\..\\bmp\\CheckBoxN.bmp" +CHECKBOXC BITMAP "..\\..\\bmp\\CheckBoxC.bmp" +CHECKBOXF BITMAP "..\\..\\bmp\\CheckBoxF.bmp" +PUBLISHERWEBU BITMAP "bmp\\Publisher1WebU.bmp" +PUBLISHERWEBD BITMAP "bmp\\Publisher1WebD.bmp" +PUBLISHERWEBF BITMAP "bmp\\Publisher1WebF.bmp" +SIERRAWEBU BITMAP "bmp\\Publisher2WebU.bmp" +SIERRAWEBD BITMAP "bmp\\Publisher2WebD.bmp" +SIERRAWEBF BITMAP "bmp\\Publisher2WebF.bmp" +IDB_DEMOBACKGROUND BITMAP "bmp\\DemoMainAppBackground.bmp" +IDB_CD_BACKGROUND BITMAP "bmp\\CustomBackground.bmp" +CUSTOMX BITMAP "bmp\\CustomX.bmp" +CUSTOMD BITMAP "bmp\\CustomD.bmp" +CUSTOMF BITMAP "bmp\\CustomF.bmp" +CUSTOMU BITMAP "bmp\\CustomU.bmp" +NEXTX BITMAP "bmp\\NextX.bmp" +NEXTD BITMAP "bmp\\NextD.bmp" +NEXTF BITMAP "bmp\\NextF.bmp" +NEXTU BITMAP "bmp\\NextU.bmp" +PREVIOUSX BITMAP "bmp\\PreviousX.bmp" +PREVIOUSD BITMAP "bmp\\PreviousD.bmp" +PREVIOUSF BITMAP "bmp\\PreviousF.bmp" +PREVIOUSU BITMAP "bmp\\PreviousU.bmp" + + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\..\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""..\\..\\Launcher.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON "..\\..\\Launcher.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_LAUNCHER_DIALOG DIALOGEX 0, 0, 600, 250 +STYLE DS_SETFONT | DS_3DLOOK | WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_APPWINDOW +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Minimize",IDC_MINIMIZE,"Button",BS_OWNERDRAW | + WS_TABSTOP,292,6,10,10 + CONTROL "Close",IDC_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP,302, + 6,10,10 + CONTROL "Display",IDC_DISPLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,98,50,14 + CONTROL "Quit",IDC_QUIT,"Button",BS_OWNERDRAW | WS_TABSTOP,243, + 154,50,14 + CONTROL "Options",IDC_OPTIONS,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,116,50,14 + CONTROL "Uninstall",IDC_UNINSTALL,"Button",BS_OWNERDRAW | + WS_TABSTOP,243,134,50,14 + CONTROL "Install",IDC_PLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,25,50,14 + CONTROL "CompanyWeb",IDC_COMPANYWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,222,213,62,18 + CONTROL "LithtechWeb",IDC_LITHTECHWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,301,213,62,18 + CONTROL "SierraWeb",IDC_SIERRAWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,12,213,85,23 + CONTROL "Custom",IDC_CUSTOM,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,44,50,14 +END + +IDD_OPTIONS_DIALOG DIALOG 0, 0, 205, 181 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_OD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "DisableSound",IDC_OD_DISABLESOUND,"Button",BS_OWNERDRAW | + WS_TABSTOP,19,15,50,16 + CONTROL "DisableMusic",IDC_OD_DISABLEMUSIC,"Button",BS_OWNERDRAW | + WS_TABSTOP,19,32,50,13 + CONTROL "DisableMovies",IDC_OD_DISABLEMOVIES,"Button", + BS_OWNERDRAW | WS_TABSTOP,19,46,50,13 + CONTROL "DisableTripleBuffering",IDC_OD_DISABLETRIPLEBUFFERING, + "Button",BS_OWNERDRAW | WS_TABSTOP,111,17,50,15 + CONTROL "DisableJoysticks",IDC_OD_DISABLEJOYSTICKS,"Button", + BS_OWNERDRAW | WS_TABSTOP,112,33,50,12 + CONTROL "DisableHardwareCursor",IDC_OD_DISABLEHARDWARECURSOR, + "Button",BS_OWNERDRAW | WS_TABSTOP,112,46,50,12 + CONTROL "RestoreDefaultSettings",IDC_OD_RESTOREDEFAULTSETTINGS, + "Button",BS_OWNERDRAW | WS_TABSTOP,19,61,50,15 + CONTROL "AlwaysSpecify",IDC_OD_ALWAYSSPECIFY,"Button", + BS_OWNERDRAW | WS_TABSTOP,28,122,50,10 + CONTROL "OK",IDC_OD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,12,161, + 50,14 + CONTROL "Cancel",IDC_OD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,69,161,50,14 + EDITTEXT IDC_COMMANDLINE,15,97,166,14,ES_AUTOHSCROLL | NOT + WS_BORDER + LTEXT "¡¿Pero qué estoy buscando aquí?!",IDC_HELPTEXT,20,140, + 162,8 + CONTROL "DisableSoundHardware",IDC_OD_DISABLEHARDWARESOUND, + "Button",BS_OWNERDRAW | WS_TABSTOP,112,60,50,13 + CONTROL "DisableSoundFilters",IDC_OD_DISABLESOUNDFILTERS,"Button", + BS_OWNERDRAW | WS_TABSTOP,112,77,50,15 +END + +IDD_DISPLAY_DIALOG DIALOG 0, 0, 205, 153 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_DD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "OK",IDC_DD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,49,135, + 50,14 + CONTROL "Cancel",IDC_DD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,106,135,50,14 + LISTBOX IDC_RENDERER_LIST,15,23,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_DISPLAY_LIST,113,24,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_RESOLUTION_LIST,64,75,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP +END + +IDD_MESSAGEBOX DIALOGEX 0, 0, 276, 102 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Close",IDC_MB_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 261,4,11,10 + CONTROL "OK",IDC_MB_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,83,79, + 50,14 + CONTROL "Cancel",IDC_MB_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,141,79,50,14 + CTEXT "Título",IDC_CAPTION,0,10,275,8 + LTEXT "Texto",IDC_TEXT,0,35,275,31 + CONTROL 296,IDC_MB_ICON,"Static",SS_BITMAP,6,6,20,20, + WS_EX_TRANSPARENT +END + +IDD_DETAILSETTINGS_DIALOG DIALOG 0, 0, 133, 147 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "HighDetail",IDC_DSD_HIGH,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,90,50,14 + CONTROL "Cancel",IDC_DSD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,122,50,14 + CONTROL "MediumDetail",IDC_DSD_MEDIUM,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,63,50,14 + CONTROL "LowDetail",IDC_DSD_LOW,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,33,50,14 + CONTROL "Close",IDC_DSD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 117,3,12,10 + LTEXT "Static",IDC_HEADERTEXT,9,14,114,8 + LTEXT "Static",IDC_LOWTEXT,7,51,114,8 + LTEXT "Static",IDC_MEDIUMTEXT,5,77,114,8 + LTEXT "Static",IDC_HIGHTEXT,4,108,114,8 +END + +IDD_CUSTOMIZE_DIALOG DIALOG 0, 0, 210, 162 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "OK",IDC_CD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,46,145, + 50,14 + CONTROL "Cancel",IDC_CD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,99,145,50,14 + CONTROL "Close",IDC_CD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 195,5,10,10 + CONTROL "Mod01",IDC_CD_MOD_01,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,7,48,14 + CONTROL "Mod02",IDC_CD_MOD_02,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,26,48,14 + CONTROL "Mod03",IDC_CD_MOD_03,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,44,48,14 + CONTROL "Mod04",IDC_CD_MOD_04,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,63,48,14 + CONTROL "Mod05",IDC_CD_MOD_05,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,83,48,14 + CONTROL "Mod06",IDC_CD_MOD_06,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,102,48,14 + CONTROL "Mod07",IDC_CD_MOD_07,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,6,48,14 + CONTROL "Mod08",IDC_CD_MOD_08,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,25,48,14 + CONTROL "Mod09",IDC_CD_MOD_09,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,42,48,14 + CONTROL "Mod10",IDC_CD_MOD_10,"Button",BS_OWNERDRAW | WS_TABSTOP, + 112,62,48,14 + CONTROL "Previous",IDC_CD_PREVIOUS,"Button",BS_OWNERDRAW | + WS_TABSTOP,5,125,48,14 + CONTROL "Next",IDC_CD_NEXT,"Button",BS_OWNERDRAW | WS_TABSTOP, + 155,125,48,14 + CONTROL "Mod11",IDC_CD_MOD_11,"Button",BS_OWNERDRAW | WS_TABSTOP, + 111,82,48,14 + CONTROL "Mod12",IDC_CD_MOD_12,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,102,48,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Monolith Productions, Inc." + VALUE "FileDescription", "Programa de lanzamiento de No One Lives Forever 2" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "Programa de lanzamiento" + VALUE "LegalCopyright", "Copyright (C) 2002 Monolith Productions, Inc." + VALUE "OriginalFilename", "NOLF2.EXE" + VALUE "ProductName", "Aplicación del programa de lanzamiento de No One Lives Forever 2" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_LAUNCHER_DIALOG, DIALOG + BEGIN + VERTGUIDE, 253 + END + + IDD_OPTIONS_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END + + IDD_DISPLAY_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// WAVE +// + +IDR_SELECT WAVE "..\\..\\snd\\Select.wav" +IDR_CLICK WAVE "..\\..\\snd\\Click.wav" +IDR_BUTTONDOWN WAVE "..\\..\\snd\\buttondown.wav" +IDR_TYPEBACK WAVE "..\\..\\snd\\TypeBack.wav" +IDR_INTRO WAVE "..\\..\\snd\\Intro.wav" +IDR_TYPE WAVE "..\\..\\snd\\type1.WAV" +IDR_TYPE2 WAVE "..\\..\\snd\\type2.WAV" +IDR_TYPE3 WAVE "..\\..\\snd\\type3.WAV" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_WEBHAND CURSOR "..\\..\\WebHand.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APPNAME "No One Lives Forever 2" + IDS_DISPLAY_WARNING "Las opciones de pantalla disponibles en el sistema se enumerarán a continuación. Esto puede llevar algún tiempo en función del hardware instalado.\n\nSi no se muestra nada en el cuadro de diálogo de la pantalla, comprueba si DirectX se ha instalado correctamente en el sistema." + IDS_OPTIONS_WARNING "ADVERTENCIA: si haces pequeños ajustes en las opciones avanzadas puedes empeorar el funcionamiento del juego (o hacer que deje de funcionar) dependiendo de la configuración del sistema. " + IDS_REZBASE "GAME" + IDS_SETUPEXE "SETUP.EXE" + IDS_SERVEREXE "NOLF2Svr.EXE" + IDS_LANGUAGE "English" + IDS_INSERTCD2 "Retira el CD-ROM 2 de No One Lives Forever de la unidad y sustitúyelo por el CD-ROM 1 de No One Lives Forever." + IDS_INSERTCD "Inserta el CD-ROM 1 de No One Lives Forever 2 en la unidad correspondiente." + IDS_CANTLAUNCHSETUP "ERROR: no se puede ejecutar el programa de instalación. Asegúrate de que el CD-ROM de No One Lives Forever 2 se encuentra en la unidad y vuelve a intentarlo." + IDS_NORENS "No se ha encontrado ningún renderizador. Este problema normalmente se debe a que DirectX no está instalado correctamente. Comprueba si DirectX está instalado y vuelve a intentarlo." + IDS_HELP_DISABLESOUND "De este modo se desactivan todos los efectos de sonido." +END + +STRINGTABLE +BEGIN + IDS_HELP_DISABLEMUSIC "De este modo se desactiva el uso de DirectMusic. Algunas tarjetas de sonido pueden ser incompatibles con DirectMusic. Utiliza esta opción sólo para solucionar problemas." + IDS_HELP_DISABLEMOVIES "De este modo se desactivan el logotipo y las películas de introducción del juego." + IDS_HELP_DISABLEFOG "De este modo se desactiva toda la niebla atmosférica (no de planos recortados). No se debe producir ningún aumento ni disminución del rendimiento. No obstante, podría resultar útil en las tarjetas que " + IDS_HELP_DISABLEJOYSTICKS + "De este modo se desactivan todos los joysticks y mandos. Utiliza esta opción si tienes problemas con el joystick al iniciar el juego." + IDS_HELP_DISABLETRIPLEBUFFERING + "De este modo se desactiva una característica de algunas tarjetas gráficas que puede mejorar el rendimiento, aunque utiliza en cambio más memoria gráfica de la tarjeta. Con la mayoría de las tarjetas gráficas AGP, activar esta función produce una serie de ventajas. Sin embargo, con algunas tarjetas gráficas PCI puede provocar bloqueos." + IDS_HELP_DISABLEHARDWARECURSOR + "De este modo se desactiva el uso del cursor de hardware. Algunas tarjetas antiguas no admiten el cursor de hardware." + IDS_HELP_RESTOREDEFAULTS + "De este modo se restauran todas las opciones de configuración originales. Esto incluye el restablecimiento de la configuración clave, el nivel de detalle y las opciones de sonido. Esta opción es útil si has cambiado la configuración y quieres restaurar todos los valores. " + IDS_HELP_ALWAYSSPECIFY "Sólo para usuarios avanzados." + IDS_CANTFINDREZFILE "ERROR: no se ha encontrado el archivo Game.rez. Asegúrate de que NOLF 2 está instalado correctamente y de que el disco 1 de No One Lives Forever 2 está insertado en la unidad correspondiente." + IDS_CANTLAUNCHCLIENTEXE "ERROR: no se puede ejecutar LITHTECH.EXE. Asegúrate de que No One Lives Forever 2 se ha instalado correctamente." + IDS_DETAIL_HEADER "Para obtener la mejor experiencia de juego de No One Lives Forever 2, selecciona la configuración de rendimiento inicial que te gustaría utilizar. Puedes cambiar esta configuración más adelante en los menús de juego de No One Lives Forever 2." + IDS_DETAIL_LOW "El nivel de detalle bajo proporciona el mejor rendimiento de juego sacrificando la calidad visual. Requisitos mínimos del sistema necesarios: Pentium III a 500 MHz, 128 MB de memoria Ram, tarjeta gráfica de 32 MB GeForce 1 o equivalente." + IDS_DETAIL_MEDIUM "El nivel de detalle medio proporcionará un buen equilibrio entre el rendimiento y la calidad visual. Requisitos del sistema recomendados: Pentium III a 1 GHz, 256 MB de memoria Ram, tarjeta gráfica de 64 MB GeForce 3 o equivalente." + IDS_DETAIL_HIGH "El nivel de detalle alto proporcionará la mejor calidad visual pero el rendimiento puede sufrir en sistemas de menor potencia. Requisitos recomendados: Pentium 4 a 2 GHz, 256 MB de memoria Ram, tarjeta gráfica de 128 MB GeForce 4 Ti o equivalente." + IDS_CANTLAUNCHSERVER "ERROR: no se puede iniciar el servidor independiente. Comprueba si No One Lives Forever 2 se ha instalado correctamente en el equipo y vuelve a intentarlo." +END + +STRINGTABLE +BEGIN + IDS_DEBUG_INSTALLSUCCESS + "No One Lives Forever 2 se ha instalado correctamente." + IDS_DEBUG_UNINSTALLSUCCESS + "No One Lives Forever 2 se ha desinstalado correctamente." + IDS_LAUNCHBROWSERERROR "ERROR: no se puede iniciar el explorador web." + IDS_HELP_DEFAULT "Mueve el ratón sobre una opción para obtener ayuda." + IDS_HELP_DISABLEHARDWARESOUND + "De este modo se desactiva el uso del soporte del hardware de sonido DirectSound 3D." + IDS_HELP_DISABLESOUNDFILTERS + "De este modo se desactiva el uso de los efectos del filtro de sonido en el juego." + IDS_OD_DISABLEHARDWARESOUND "Desactivar sonido de hardware" + IDS_OD_DISABLESOUNDFILTERS "Desactivar filtros de sonido" + IDS_CANTOPENCOMMANDFILE "ERROR: No se pudo abrir el archivo launchcmds.txt para escritura. Por favor, asegúrate de que se puede escribir en este archivo e inténtalo de nuevo. " + IDS_LITHTECHWEBPAGE "http://www.lithtech.com" + IDS_SIERRAWEBPAGE "http://www.sierra.com" + IDS_NOCUSTOMDIR "ERROR - Unable to find any custom directories." +END + +STRINGTABLE +BEGIN + IDS_APPVERSION "1.0" + IDS_CANTUNINSTALL "ERROR: no se puede desinstalar el juego. Si No One Lives Forever 2 todavía está instalado, prueba a utilizar la opción Agregar o quitar programas. Para volver a instalar el juego, ejecuta el programa Setup.exe del CD-ROM 1 de No One Lives Forever 2." + IDS_COMPANYWEBPAGE "http://www.lith.com" + IDS_CANTOPENAVI "ERROR: no se puede abrir un archivo .avi" + IDS_PUBLISHERWEBPAGE "http://www.foxinteractive.com" + IDS_OD_DISABLESOUND "Desactivar sonido" + IDS_OD_DISABLEMUSIC "Desactivar música" + IDS_OD_DISABLEMOVIES "Desactivar películas" + IDS_APPNAME_DEMO "No One Lives Forever 2 (Demo oficial)" + IDS_OD_DISABLEJOYSTICKS "Desactivar joysticks" + IDS_OD_DISABLETRIPLEBUFFERING "Desactivar triple búfer" + IDS_OD_DISABLEHARDWARECURSOR "Desactivar cursor de hardware" + IDS_OD_RESTOREDEFAULTS "Restaurar configuración predeterminada" + IDS_OD_ALWAYSSPECIFY "Siempre especificar argumentos de la línea de comandos al juego" + IDS_DEBUG_REGCREATEERROR + "ERROR: no se puede crear la clave de registro de No One Lives Forever 2." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "..\..\Launcher.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/Launcher/RES/Lang/ES/bmp/CancelD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/CancelD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..92034bb005ab3b0368261a64cad603eae604897d GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Company1WebD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Company1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..18afeccf3b1b7b8029bf67c61afa5029525a6ad7 GIT binary patch literal 3184 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Company2WebD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Company2WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..23b028a8dbef723c71fb6ba91cbfff23441b84d9 GIT binary patch literal 3252 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Company2WebF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Company2WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88108d5c184ba4ae4fc93a845eb03ab0d43bd841 GIT binary patch literal 3252 zcmZu!2UwF=7f!3K#l;9CBq1S8Whw*+VS^M)Wr)_r5L6rpwt$Et2*?QFYOyV{ci2ld zDix8iWJqz+s()Kh5JZJm!I8dS((<>@|A+Ux&$;KGbMN`?cNVrzb<0VjpE1T&cr5Wq z807!rV>gi)AxQ{hb8rO2hGPD|j}vKiV5?%mwIUJt-GZW9LoJ?d zqa+f)ukYKhBWV zg`uXxz*J3DtV?IH=-6DDNnFH|d>uCZY^mNp9wbis&t7@%M5o7f#6%BQ!nu?Mti;fW{ zfJ12Ms4vJv1psqF5d@|S{Ds}X6a$=9nk-EXWsKMmQ>cKz5im@aEVX=@#77@3{_w*O z@K=}~Ln5^fbm{A;N=vQ8ZR%*NnVRU^S{tvo=dS*WSxzPowW&8 ztu2i#%?!94eXfzNiIJX}=^85w_Bv~m^>(HZ20pXnern6Hx8vB`n%axBY^;o+2z5-c z4`^^~ERF1}z%<5`fTfX@xuFHu0Hb(A>DU9x!5BC@npWx*K| z>C#}Yv4IvvK~`s#iUrru)yZb3hs$1XxBYv*@b%uj)7{zE+ikbEo0q$@$2LdzZI0fa zEF(mb#c}%=>piwO z?(*EY$IH#z%XQ~==dGI^wzz$Y(Q~_#w}%Vxg`556jrN;d*ST+X^xUz*ee35KJ$8KV z>THJ>(ps%bqsp&Xz7$tamXWF;Y;W&tH!;+L^BNkg#zkkQCe2QbyncC4C>-s+UKJGJ z)zMZq@oQH~a`aaR-M{qPG0;^x{!4rExf8p*T)jP<5A4};qpN1@KV6Yw2h&p$=VtC) zX(|W`@C1tU&(A#{s;x{3II#WTzHQ-0_s`Ehnwxzjd^%QHad2vS`kKPu( ze>(H*rM+XZdLv6%?l;nz!KmLd;D^NB4$@`VRLu zPL6hEq{IjMdmQrH5fbP#*xT^N|+XqyYrOv(hv866EEM)i5 z;9UtZ!EfiEJRIq`cBQ<$I5qgool)Td_iy(EXV{v4Dqw6jH8d}wzgoyD+}|JUrY`))#i!~$Jp0h|LpM~Kkw_fr~u&3(BwM z-{=VcoBb`XUfi1;8=QLF|LWx(L0cK`U(SO((Kgm)6s#aW4$jX`kF3gA-rrX*htuN zaxxMUOUP1^WqGF%t2b|0n5}{BRu+a3DK1E!nYz%3Bniq2C$F>)fw=XyIyV|SgW<~^U<#AE|XLyI3>+|2t zjMmX=(Ydp%y1{~azpG4}BH=VQW;?mZsj zdv~}E*K@gv-*L5Udc42kVh+L>ZUN^&ro_D?*H;ktes!SJjH8FNZq8i`w;Jwi62AWx zUq2+!8yFdG6$&5!K7B9sySS{hq`4RO-n|-`pZQVv?%}PQSE7#l|MBuCp>X2a_;3<0 zgrD<`@ZE3Mua?F|eKkEXEPOvEeEUQwoO%0p_Do_}Ur&qh^`m!x{4AV*aA&9)evQcg zp}9yXoEE+x7rvi(Id%8^xf3zrf%CsVd_H-b7aNkDcIwR^k1jP7x@@pUrbJN6$PoT6 zD*eRf50N=V=?UUbmq`s|eC$iM*a%F^#!>aub5mzqlIYx$wUdoogZ z&9zyLHE9hsX;~?;NWI95(cu9NRap(yIrY`qiLpm~yj;KZ^QtOIuHYvJ9r8YL>|j;t z_i@p|C=4i+N;CyYspZHsvNGcQ{=-10v7weCMOJ&23JMd-5VE%G1{+r=+l_#;Ej|X) zF1{L(jyE~LuK*C@bd06{T@}mxa}+CL1R#%XQ5ZHjT5kBv635|M|Aq|+@#!!C1hONl z7~4P#o*^$sMrmEVcrm&Ik-x)s1APtDRlL<|O=SapO%t{b*H{nWnCRhc%sFc;xN9xU z4B&CrW~g|ER_1>dK$Hw~E-K+#D-=UB5zN^(=7!ehY>3%d7};8|F@m;+3Zcj*#JFow zlTFz=#%x^bY{|ayZPQ zMIRzoMgHE@C)ng{yHw&6n6DsD#v8zY;8|jbI~Ke%fKWjj^Dm&85-t7TRmA@S{;MTY z!R9Pwahpa1jZ=VyL;p#j9-*Ad$x6d;L@62q^fSvOB+7D=NTj%~ySylWG&^!K(h3T) zbebZaj_y!_L8kypG>S5v%0yo%ZVHtYX;g{|dP*!QQHX|5Ns&oc6p2Az5uGAdS!g%W zM>41?qAn1PAo@Z`iZ?{-NmG=k(&VWWc_vk!uBf1dLunM)NG#DPN@z^co>IY7KnF=t zkdq~o(FaJbT(M%svSmw`ve#<2)@71NMy=0FI=gF2zs*mNE6j*5$vMT(ROG$z`W)ELu%NK}HwXGEnS!VIqw z(3q$^L=l*QAfPr7AE*RGz!wi;sRYDVQDZHdCCXaF>g{*V9SCNv{_BtS%$+lP@3Z%} z_nEWrKKl>vRSFCpQ!snsI}KkWzA|PcW@*&v7>0ZY$Cwj89c`{Z-|+RB)5X%$SXbOw zSJY5fgc&r5hEp#*^|caP{IlF4f!ra4&Y;>0%JmdVLUw>tUx1=Q;`e7*35`mI(9Sj# zUuvrguD#7LMNLg#ZHs%^*<>^tOh$vzpf~C;v^uSz(+PT=R<9KVPQz<79GwN0Wu2UO zp2NdIsKFA;u`F5TIDzAMj%aF}oLIFJrCEXJ@MvM6VSytEJirY)twB$~wE|BbEw2*< zot6+pjiLb%4_0Bqv&0v05a(xMA2rsN;SA2#`23n2(*MzrF*5sZ3&WgjZuFYqj=&+n z=a*whB4gw-*^q`Dl#EdjZHI=OA*{qG$)dy%Vwl~aHgy9Gxui*1AULobELjCf<%1Yh z!(`AOuw^hzRm-{8UmFJ%1(0NNl}gF;yq06NNE9a)a2%^f4k(mL8V{r4SRK!)m57hH z0H%gzkq&aXOsP}~0+K~dwkVUS)haEoQLEHafGW8HX`|$J8r zwh7}s-wB%DebHu)`%FR@nvEuXc@bhi-g5ShNuChP$>AXO5AWYP{oT>LoE@7!S@9L z`25z+FU&44xk{4Q*uOp(2mEIEfkn-U*|^eZA|?GG4)VNx_N?jQpDwu8USf_TfFuiv z8JV2*y0XG_hN)>fJ!ztcL&z{;VGDY?4zG!HID|Y4vA327&UF0IrM4~C+W!{lKUFe8 z5wqo|J?yFOXe#e)-T&bBu@v(PEMY7Tng8VOiS?@&O6;gnBl~}B`+N7P>m4WEM~#3m zb648si!~!gI<_LIVJ@?0+`D=hd3dF{xTmAcvWdh_Gun~zsIR33X$*4=?<&n1x+5kc z{NsDqt5>fGB}g&`1vf7@@#@9$0RO2fmC9t)Rg`Y)Y%iPt!AullnN05CKI%|eW=~hu zhN$qZ){T$u)}&fi!G+PFTNxSJf3G$vZn?9wNuf|oe0AKv9yM20?v38CX0#iLck$AN zeUGk&eDa}-vjN%d>-#$t1=Nd*16emNS4OXoNKaXJv*VB@p1eRbb`lhZQLis2|9f?F zgSVFl6_M%a!A$X4`^KmUNpiAcmne4h-m3MT`qs<Y#1%17OFYK9zcSuq)A}XJaS`U2 zu++F^e_rq|uW^cAzcejr^}1DIxR`(C?PX1foE`YKn&sE53`vfUOiWm7O^MmOc>`A8 zpEoNxZn-6PSz=sx$VcxeQB)b3&*V3(=CxK!RI2%NKi{|D^d*x^Ow^(ct3q5{oV~p! z#K%O;4k9mvV>n`$>N{e8oxZE23J(@gs`vskX!~FLB|*?YUO@cMK51+Y1A|^i^L;31 zAjdyJ9)`g^L=J)ClRJyj*c@p3f!5H#bxUqk1vP{XX!6dOVZ)@?(R@GB)bPhS!wzMb%Kt2h)~_^w3&SLx=}6xEmysh}aABie z)1!sd;@0L+VRX2@c}_0~X!k&)`NPePHd5*=Ii7TckU$ytp_X=j(7`I{2x;>NTSpT~ zHA!1ZTTjw=@}xJ_a~eT|E)xSFtbpzm9SM9P0FHPk9VB{Ii5_fTfBPHn>dHL~<5T@( zN#ogXO1>({Ni57sEZ%Fi?M^Dlw%B(kfi2vfXv6-~xeL>u$INY>-~H&<+BI`? z^MAhg^_m@Dy864juYF|XLVy4P0@pk;%9m?*jXu45v|}{d=PlP8o3Z4K!CuQKnl)nyT6~4ANj`U#kYJ zoIFoXS_uRQ5Lik;PA(;5KLG*+IsrLpB@iG$V0i&Kxx9~S2@oJ4C#?Yj1PClIuvAW_ z596eZ*SnY3b1eY^5d`F9gf6R*0D)NqkBys=&0>K63Wbg%` zd;$a}3dqTcL=GT8Ah>{>488!APk_Kg0XaF5$N>Zh1Q(E#!54t?2@selASWjhIe-9x z-~w_o_ySNq0Rj^R%5;=eX zf#3piGWY^eJ^=y~1?1#JA_ov45L`e`244WmCqQ7LfSjC2AeDLl70t5&QSRnl$AtwjiU!@TsFuQ=9oZZk21PBaUKu!+3zp5iZV0HmHIlG}5 z2oM;yfSeq5e^p0-!0ZBYa&|*A5FjvY0XaGB{;G}uf!PJ*Q$v1ZEeIld~I|fdGMF3&_b~_g8fU2+S@ZCucV_0|5fV z7Lb#}?yu?y5SU#+PR?#<1_A_zEg&a{-CxxaATYatoSfaz34!ggq zBS2tw0XaFlp&1Ae7`A|%9Cm+IM}WZW0&;S8Lo*N{Fl+%iIqd$bjsSt#1?1%HhGrl@ zVAujxb8^lX0RjY8nZOj0E+bKwSYjS=ZO> z1PHV*ASc`Jp$Z5Ps4E~R>-w6V0D<-euYub1lkvnlkN9V1q2Ax6_As4ea%jQK>Gr6vi%;afB=EI0&=phuh|I@XkS21 zw%;wq3FCZt|@1Y6^5U494C+qr}odALM1>|J=JyZb!0(AxCWL;mg6ClvOfShcb^-+27m$I%roy1r&7K%jjAIoW;>RX~71T>&{+ z*VpU>2(&LCC)@9#3J4IWD|I1U$YY+(7u42Y`=#p zAV8q5fSj!BYjy$z+82kdt+N%}#(o`vP*Z{T`}-0D-y!abKwSYj zS=ZO>1PHV*ASc`Jp$Z5Ps4E~R>-w6V0D<-euYub1lkvnlkN9V1q2Ax6_As4ea%jQK>Gr6vi%;afB=EI0&=phuh|I@ zXkS21w%;wq3FCZt|@1Y6^5U494C+qr}odALM1>|J=JyZb!0(AxCWL;mg6ClvOfShc< zhbkaIpss+Ntm|ub0tDI@kdy8APz3}C)D@7Eb$!iFfI#~Kab^-+27m$I%roy1r&7K%jjAIoW;>RX~71 zT>&{+*VpU>2(&LCC)@9#3J4IWD^MvXpLF02(_QLTYjy$z2$T!R$#OFz2oQ)RASYw> zTeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG zGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoT zlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EP zh$SE=WA$6L1PGK1$jNduBM1TeSoTlncno zax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE= zWA$6L1PGK1$jNduBM1TeSoTlncnoax)_c z5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L z1PGK1$jNduBM1TeSoTlncnoax)_c5Qrrp zCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1 z$jNduBM1TeSoTlncnoax)_c5QrrpCu8+n zwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNdu zBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&1 z3&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1 zTeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/CustomD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/CustomD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..390c83cf4cabb2a3842ea655887536fb1c5924c8 GIT binary patch literal 9056 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 S=_$4U`}XzU|9?L^bodWFQLnB5 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/CustomF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/CustomF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27167046617ffea967e5e47869e014a34e6452ac GIT binary patch literal 9056 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 I_aiFmJNV8L4*&oF literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/CustomX.bmp b/Jack/Launcher/RES/Lang/ES/bmp/CustomX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..97d1870e80c36c48057c0074ed900c570ad9845d GIT binary patch literal 9056 zcmd^_`&Sc36vyd5&>yT}XA`o!+3XS!D1xXxwWxShl!}6gAU-M*AD|QwpIGsQSQUF( zs-pFQP<-%^)2g+$R@*97DXm(MSYtgZ_Al@!f27~d)H&l4lE}ffC(W7cnatdox%1h3 z@6OC-T>5-xnD;XR*C>45_)7S`7DjNTpDVA2g&E)HpRy-CeWjwC&$5m_9=oPJKC7N6 zONlg>NO?q>6*@_tWz!3sBR9ln9UZ&&a?+khgW8@Ay42HG@(HTo^3w@hevKNxhe-2? zG@D4dM4Cw=vW#S(9!g1+GL2+6u9%&W{E?-!^Nq%*K5>~@b@!z2@kCGjj7amnh6GTs zC2CH2M5g%=y2`o4J_C1Ov}cI+siK6GDWud4-gs}&MYDnNtcq?uODVrfraX%AhY^a7o4rppuvWAj%89 zpcW9>Ehw7>b+4cu74#F~T64J860Ws|T*9Q91^u|7)d^}1ajYZK48y?e=`b)${skV_ z->kZO#+7$i)nZX86lJ%lt|DrU;QZV`q=Qde=qJ5Z(3%8iy`WYTxsbXfeABX|ojD_A zHFfWOn{%aAEirJZn}~K$&`~D z)aG1n(<_K}*lSLwLf@8nN-VFRG7Jp3{XXT(~uKQ`%2oJ8iBbK{_CR(~;*58`}2PlTCqUsDP;u{ZLkz zHD3jjqruSsprwazqB(2WTL%i0SC!owznNxiSd6m*IY&s`96#zn!rQfPj;yh{8oX=r z0Kp2HGnJ6>dDAgEuN8cUw+e=ZFGN=~R`Z2)%IGcNptMh>*nqLpTLiV%dw?*DXoZQ% zhewV(l9YVV9*tFc;3c~0zSEn6XoGT=OsptRHW6f4E54A5@vM-ilBnV(`zmBI1I9{g z6`Wv|Z$x;l=&fn3V^W)vQ;#XJjY1IH8B-vl(?PU>dNk4Sjy%)6FIJc`lR*Z41pDDx zA#kA|6#5(#@~k-|`QGpow~rS8D~?copB96 zChFKA2k=1%Acim{duM2r4w99rE41QS(atGqlcZ@}I;g48|Ic7%iv138?!qwwaD~5n zY+}W&^qlhw2MoMsFnI*865<98J3+ECk@3UI|Dbfq;h!h3CnN*2!kWR^ zAUZaPiW|wY~^Fz}-K*3+A4neZQ9Qg_QVHM1v zSg!Qeir0kIQd&Ac$Knm}u$;?0zAGxh_BpCjSH@?w-k;?<`z?x4hD`YNIDTw>^5qDO^!4T!)k)yNttx$h8sL%J8BN(-|^w;oZdK4Yy0y zc`B+r>#IEOlDltD_*xs$e#$ndiPSa@<)wBC!Bd z;*N(KFffDkw0ljy{q5tEuMoBm*~M}w6QR$d#!lX1$9-=`FH7O(NZ z#^91bH+Mga@BF~fJOX)Qw8Z^6E!f9{X4 zF)UMOHvXBp!!vj5gZWGExZm%Zv$!*N!L`sxIr&$!=KVM!`&`1*Hb?Ghaao6DXZIU^ J|N9XZ_80KgU3vfj literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/DemoMainAppBackground.bmp b/Jack/Launcher/RES/Lang/ES/bmp/DemoMainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7dc135fc68165f509627aed495782050b9d71ae GIT binary patch literal 386176 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%0AJTJkXbX8neYcnfUp|YxpUi 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

    dRhMw3VwjvTBnBJ#}) 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 KMu}$p{Qd{{)pOne literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/DisplayX.bmp b/Jack/Launcher/RES/Lang/ES/bmp/DisplayX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..155706fadb62411f3a9b60e894b06a8a024fa4cb GIT binary patch literal 9056 zcmds-{ZkZ28ppYR;C?W|^z6&*?(EDi%R&fliZMvF)eSw6! z%2K^k{ql78^L*xcdU|?Tno(qr@ck{oH5xw;eiD8^i6FSrzl%SOh|qrD{Vm>c`=OnG z%Rl?iZC~8crHU)#+3laF>>Q5I?jY7mBCRJtU-uUeHlwB9H+i${T zK&ZTVXU@A*r1{ll2ct!3`MYje)&T`RTWcFC3h)ZEYlu;SzKC3Wu+%O)a~ z_*iWqmQrHfEyzy`@^Qi5CdelQ`K0fP%;cnNLUD4<rT8C}iyDbg9+1lw^z zZWV0L2-ZeosX_Soh-Cm8;wZBG;+)sUc?U~9^!Lrzv;YLCGr+Vc1>qh%_gIuNIlJ^tkB|!x!zv{)Myp>vT9_eQp zX9I}+_?lFokJ(y@b*r}En^zM{j<$CB9*aenzQI$^o!)7bYmD}4qgqdtHZAVdKyg=g z@Y3+tw~>y$bK}Pc#J>+{wx~V_11?L2C}F|R5>kG7PnY&&^o)JGyzz=ztu-oOwcVh$ z3Q8c4qGZCE6~%=W%+^e#90Viw5|K3@X{<)aV^?%qoV(2G4ug7>s9jO&Ku}i+b5|HKz)+Ofif+E1K{4@XO5dVJ09ao<{xPXMe_;#)OfF0GANp+Q_nt z^9xR^_a0Q-2TaamB;d1;ACQ?31y~+x!zhRW6g7<+!V91^Fe?CO=2KSn?N|94mJiAb z$}r)Xu!3u;uLyDzoC;ghsFfY@X&vsQr=k;%7@a3V3_#e+%-69x^QXU3k77z9!-SC! z%8I%o?T(H-Slv*8SwRgbL&w2&W~{Iu5Nrs;JnS5V#3$n)d@6-MR>fEzCl#TZzK@qUF_bP7`|Lb&z`G7hGSiDiQ@uW?c7 zxwOnT(pJCjoPSDG@tPb`3_^_A$S5H*<$A>gU;-VV1u1JnhQ2rPHIV0N@J-;4q4-u5 zc~-jhiuHwtREJQmc&8@zqc}zYuBeAkEwBGLBj-$J{<}$w`VEer5cdq2h`&=z6WmQS zK~LuJtcgYIlznmQQP10sj+8C$T68qn3$QwQ6nR!C@~*|yfZAvZDPhlG?-Xr&MXLuX za`W%jc7Bnb{pQ-D;gxI7*y4IZ4?|1`(^z~VgCf%bxL_&uA6$_~4QoXPI#Zssl{WFL zU^pd@CS<5EC;=S>g?e5dMI9?D;7>!e21|WJenGT8rX9RkH_bi#IZl{U3eV+l94Xi| znzVSx5ZxQPYXzGts4{v1o$W!#*U3+26?6o@0_p%!xk< z%lC|wZM~M~dEYs&UsOYS&G9=+@cX4l#D>z@&g%VTbn-tSD;yw*$}yw828UDz`LW2F z%XoJND-XUzY#auwidt`4);reN-f2amKSO3vud_Yq2s-&6j#Zziw&8fncc52AmYk$# zGGK+2*?J?l}h)LOIl&g*Qt#kKX zr)PbX70!@XKKbd!>Z^5)-r9ZMjND<@fhdp z9VR$-nUw8O6(j5n`7SHpw~3W|e_yrRTi@i})8zG3U43BLTgrX?Snait40B?dJDFVV zR`>I2e3N#V5ZeG;Lg|E0IgAxD_>`00Fjl%{4BoZ3$-BMYTUd4(#MA^3>+>yQA)VMv z^KSZG>Zdaf6q~MYS{E24I(m%J?Q&deOk#^Wso9xu2&~ljgHe^E{6`$Rw)40Uj9D+- zNG~77+O?~}yXT-5lKGy?3zxouMyd~7;y|jA4_bvHSQHlEK;}R z?lB|9^nRC+pHPH=Sj{BNH2?q#q3!Zf)9x<)xjokkS7J78Cnu3*Y zsmGIX)#1-pRg7-g>4lFWB!O=I=FvwBev`58*Wr;?tv!>L`Fis5?!<>$W9Bux5{|m( zKQ%A2-(33%ed;kpEHlBWCjR>ewyEp7zRWu8U4P(@MU|g=9v>?#8_g|wKRi-S@q5`D ge!C*)&E)K%2a8XqJ~4vh^umz|ADS5@nu&<`ALqt#tN;K2 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/HighDetailD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/HighDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..40a01ec0a5a8d1fc110d83f26d3a86473555ff1b GIT binary patch literal 15536 zcmeI3Yj9mv6~}K2j0yrJ0otUGw55^e{b>43OQk^ZG0X@!sDr2Z8mzM7P_P<(X|d_bwRP0}6Xj zJ+sa_Yp=Z?|Gm$?d!MYhY~9jW@NWUvx%_{a|1&6?waK{)6N^`NUv~9NSA2W_iZ#8B8xGIdGW?!)iM0&ITHkFnp>?nTy;I|j4^D_5 zIjv1fJLUYeeEuc5qhB5rxkconf5`N>6t@l+wTw`!7yzbKC(E1CjTdg4zoLE7SDtHH z+glPJjKU;}?* z>)=V72Tu;@l+A-mdW(GG=A)*Fci5Z|KRhyK55yin5Nm~cCnw}Hdt|N19U>R}U8X#p zg#j3tT9ugH&{nzd$;PX?>eu(49GBQ;aTwSIfWa(e!+|3RKU|>c~e0JSqm6x?v|MB2SZ2oS@Zbxst0S0G~}Yjw7gOB?c{9hD}?x*`tzu4P+zLNFyl(U zWScDACd;9_=D0N*j^_HKrW7 z!4=T_l;orZDRC4Gz}(kBA!pk$h1xY&(+qXN7xkE~{4@HZ)|UR(9K zXJ+wJBJLDeK+frM!#`vv+L13&0BBAK%JNM1d?M{{lnOWZpDM3iYn72`cS{)T9#Q(G zLG_pC8u)(oji?v{VE6K?7Vwe`y#kL6#75-f?Ovu^O8sA#E-E2JF`Qkc1T6)s8@iQD!}L@fIk2Ltl}iD z;`s-2jj|QpqBLesaw=GJn2-Y9`FS%3(7ec_iz5v~c8=lJB8_@=4Ay*aeO`?d7wJ_P zFzDP%A$SoNC=ibf3A_|o8=T3?KiKy;r&GSzFEzL9U{2uIA5`AuR{o}MW@~>VbsM~O zwYOeH2Mp*W0632!do!wLp>6rOM3*O7f=D@6b8J8#xoUY z9j&a)^D~nCU>tNXXc@TtC8=BYT1iTP0dgh*(}Xb$%$*}p<>gZMbXHjVkh@iR)u*L# zi<_F}-;kAPS(iR4bys91_1DPqwrnj-URfti-xw{>;-5)Xv(x9g@YbwcyTG#Agi)QE zm4dzsO(*1l88rEl2Lw`mm=OGM3_p2_V~tqo9qE4!=9jzCStg=i6<(Xh{$j0yH zLrpuRX6ry%mwOA$NglNnGyuS0Qwg)$5nY(D=6W{|gyJPYO^B+I3JonJ=c&SgqMJcw zw8VaMG($QH71Qw(?i)0D0SrVP17=hqB)32a2L z1c%kDM(g7EU^c)jYUEc_X9IrsvGMC(2l0W^

    D+XxxAr(}x(zm@Vf^MeQFxmI7F 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/InstallD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/InstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c9d95cdeb3e2c2656b67e0746ea1f311bd6c17e7 GIT binary patch literal 9056 zcmds7`CF97viAN1_lJ|4gqd-MVfGn@eP2|>E$$L=2_h(hvMCzTh+B+%G{znE7*|}_ zj7B4%A_xc!iwKA;qOyttaY4<^QHLk@t?rp&^qAb=k5AFh_x0CRUHx`-bybal6X(bW zv45UuHTa9fp9FvZHOK}n|5xFvVzy6W;=U>rBfr>18^~L5! N4 zd=BY7k{!Gbcn(hqoN#&KjKVKNOQ+5@{AbY2c~yWbX=Cr^-Mt%k_AdXfcUVk=IH~26 z)2}}Y*N0fO{W;}8t836Dz2|-x-y^R6N1c2Q*n1vSyPa0KT~K-as`k9B@w}|{&er*4 z+xuqQ`{kh3`{(HWvN<{U=UB+pkFWkT41;xOK|WdU5$|LJ2BewfWIGJW0Xedkp8c~K z4a{hn8ndveO)Qqdqy`jVszPn8R~D9__RLayWIOm=_5Y$MVqweL?|V1x>RrF17ts05 zZ?xIi`H$-#8kjX!vDI%zuBp|y?b5pL(s}H4^giI=c@!u~9nMJ{vcwM8B#ybZ&e!c+ za%FDUhB4 zu<<34i(A%g?cK76Y%Fehmo)LgCl}sW8<+(v02Po}p>W))cHRN3v~IiQPA4S#bGG`+ zgYEOg4*9lD`F76va<>A7`wf*>p~k0B>szSvFR~v}q#sJ;FpSep$6-Vcpnzg@>WAIL zR}8cFFVguH>U@b&3wBPvMd;D_71{e0Vt`2+L=7z>IRQ7FK*P-xKt1mZhkPQMJ)oGg zn79T87uiDr|02w*_9;|)7RcRi*ty=Yb-E#T%(u~86KJlA?X%VHgxJEQ$2gK(_w=sV z(5qO|Yz>zQtF}K!tge=**GRSN0hin%S)xl5X)oERuMF1b5>Sr$b}spHj{=of0oJJZ zC*80Fml4Hoql(=}mAH>CaUWCSF{aq#ixO)>r~7Cc<2I_qb!0KdI|mY3mhU|LCSK9+ zGP2l}4Rd3n+?gEDu_a#PO1;o>8dr)Q&#|R^3KDKbyc1tNF^tpL5|6Q^?qf(Ypeam6wSWQlD6{}W>l`AFc z)e`M~u`W}n$p$-wi1m4}D49z>%t`HCfZf5~5k#Y*bBWLRQol(CzsUywDP=>Z7={KJ zhJIN#KtTp{;u8k=PAc`CXz-a}@E%|4&6m$wJbRBLIldE0{U(F9%P#8OlEp{Dw6K9;mWuv}sSuB6Rk(4`UPncP`^xNLWt9m>ms`zOB1-lmfe{eSN&yd zHI$h$|2AeHH|G`<4xC=$KgHlRt^@`KHv)gcu=)@#SeMT0%AEK{U=^{jNwnfVObY?0 zZuCi!Y{_6nqDZw@sJ>{UxoU+KZoL~g+FIWt#{fEa0BV0q`|JMxSN;7j`}<4l`=-TL zAG`4AxzYH{Xnfw^zy9FESxal_nNev&-@5(xU-b9m^?KzqEPQJ0Z7czcB8sgJORW8+ zu;+!*2s(11bLOI&ki|8TtL~=dc0j!~d$HKZJ2YVgTNB6)&HwooKrCRCobK7Cw>%#|6{kRo_yxSF9;%MYCC07`uvipIXM z<#$eA?)vTByWfmP(D%n$BiG#J&uB~Uz1(zoV5QJJIlUt^v36EsEm}}b+iP@kf}Dt? zy0{JX)g8b0ngv40_LFT~AUe-neX{L%i$#7)&XdU1b(k@$>^IApUZZi_iB_~AbQ+pS zNo*Fj42YG~z8Ep1!f#3$?gFRb#qVP^02fZ8!X<0+tkTfvx+x*WpZ)N7cv7WE9#5p$ zB2bgl_8fMWi)^{1~s?s@mF$7lroc&0smQv-j7 zs%6bDx1V53vs(M|AMasxQETc_a=Ng5BDSv6*Pg^~sQ@!-~-NH@5Xe=nH~I1^4 z+AQx8S7t<1O${p*FK%#|aZV_W5!%HIRmlR)W$V+&h2XM4@PoSpw>GXAc+r1mc4AUk z0%kWfzl5r(dEHR*3DbX1di#|bikG52Iyy9vD6FgvnaT^=Jh<-3~x^ee8 zFj=y_iHqXWuGKuhRQ`1TxemN?$|&mDm)ZXK?OXnuR?z+RjwZu{mo(mJL|gXoWqM)H zwo|Rt!vHtje;Ko(0S3mcx1{a`JR~;Vcd`Lq<=?OxFfEZbN9S{C!t_EUck0;&rSA_y zyC}dVP#(8Bfc)@Mi?9=39r)wA$Hfh2{?oZmOo~H?g&Ugt7H@0HDCmY_kJ)neo$FY( z^B!Kgs$~yeCVbzxXlvv7n?2UBEZKf<$q!9@7~00CeBod5^&L76vu=oQbbC!?tQn?23^6WWHSf8dp9ce6z}bilqqTMk$0-50ozMut?v z$>SJ)3@Z~{>_WU4IN{RBiP_GRv&EXFLg_rhN_EOcZSm>@SgE}W5liFNz-^1Y7(b`- z$j<{}4eVbX_bMTi(c;G#mMcrVeXVz2m z=rvw})#l?ZTn;8JsP6+-0E!<&V1;XO)T~N`aEKrN1}gw!tN+D2Fx7udhTHITv1W-- zI!7p-FHok~Xs(#gpfy$n`k^-wb;Dv2|KQ#~a-Oilyf{t33g&V0>SL}L+Sb=^nx6h) zF`=Bwr_eKQQ{#?Pt)@;KPowdo;kQl4TKIY`Ef&7^-~$NZJ#DYwoXUN2Mm|W1o?lD zl~{M))&H2suoUN^rmP2Rmr+J&p64!0q;m|ums$BS#8^Q-W0vAQDGW!QV{cl17_8lCA9 zoF1=r2J^o8PH4vzI*U(@z# zZc^Qx6^xSZTsF|P4#WsFqj7f{U0y`YC!@t32j{jn`F{KBH~bbewai818P0$4_NLuw zrh5?hq=IEzQ^MB9>dx1e!88TGUf;b-$?BSubSG?C?e^oXxRM5Z6(rrtjgd&I17z-iiXs*MAVPiJzw!LndoeZrQe zyqag+DS;8{b-a3W{8x%pze=bA0LhsvLZC0W?xGC-V<#b_dIYLNj03m#0oVQ zZJNv;RhKP*>(lLBEXO${w4F(CDK-hzKYw6aJQhVUiV~bj2IRR1&YI$Ooc-dvFR=V+ zz?`Km00apg{69hqSRnE*B*K&nBeM=QC653QY0eCm%K&Xoz&vD0?aYK)7yuUqs41Of zi5{{)uplMGS6C^MCKxtRfB&(IT{9L{PmkwZ#Daa9IPVtxD%=I-&Y_gNV~dfS<6NNT z0B3@I$IXs17s8?Uu`(N#_Nq{GQLIh2)vUAAtsgux133=Mooj`X5RvT+@>+_66p^xO z3^y=S;yk1X=8BpI{2}&*l0l=9JY?;2N{S<@xME{wK`W{lpd>=Ykf1UYWT;#dREFe; ziV`yc8m$7$0ceP#;XpvhEBP`lqNt283$=?1JdB-P0r0`a^7N{eKQ_a#iP300oY4Wh zwQym)sirZVrZd-MSW#%A0mUEBF9;=yw z{d{RXa%WzXu^)R_WIIzNogtKcEl`}IlW2wuB|gfXeG196Mp5*>=Xe{=J5D{QxaI|I z8R{*3*Mg{01fPk_lqzy#ig_&#As=u?k&0JxP#ysnQUIQV19{|VFgz?1AsixJBp?iG zR>cZ3P!(%hIZ6anv!zKY-? z>!Q$fpeEy22%`mDQ|4C1ud0t<)39i5{oJK@uzZAGzz4eq#c)&+Mq;@ zlr&ceOOXNqQg}a8DGwFAsjxkU^CT(;0&3JVA&nD`3@T>CHHn}Y7h0Ks+hkoM+UW~! z!_?7_uh>Vf09g(zz@q+)sRrJ73X~@S3>O_paD#_-$gyl0uOba0LS~p>&o|u|c3bNC;=_KtU|ei!j3*YfoD0#iX@h8Ys5ne!L&%WvpstR}5`K&ze4O(E5e|#Q zF(1Dp4Aujy92_En`kX*{LLf(Wyih2O1&L&fKA&g!$Zr$u*Jr>LxC-IcY-U|R4BkFm ztXeD4?vd(`$(+t8T+&o-=^Bp=op+|a?>T#)Og(FL-Wgi242?&+(k)%#nl5)rl{u!` zF_Jo_%JAxxCU;H)yV4DmuJ*{#dS>XnGDrd^$nibLyS#%^m^7#pQ`oBlsTV4!Xi-Y z70SO8+QlK)6H22AD_O#4aaGnpS^O0pLr!hvyX?muCIge=JWi9yL&Wk~w#qqDZInzG zqp*)vIK(L(<5fIJr{`4VN6L^)rq#KU}B)dF6-px*;W-jm*$hwlbX|+(=y7ND5v&+u z__bp6##-IzWCUGed5Adk|gx9~~;X?8x5t(N0KxPoZsa5N2o$J(EhZb=- zTD58&TC3K9Nv0$a2$M1>2nbrC-W~{-`>t;%fqL3L=jY?I*w2^!?Y;I|?_PWDwbo~F zQ!QM*fUass?A}cL%T0xx`-OiP!Oj z={#WyPni6lL!xA!G{@R&&xcXpjZfA5eP`Eumk0lLcjV9L4}n_x@NL+ZM#bbaJYfb; zn936-@q`IHyCpok#XS2(|4GCbE+n$27TQ?_pB%rU{=L(0{}8Tsv1%QOKJr`<@hwl7 z%^6ZEUzBR&kZLPV6^PSpCFuf5x}7w`UY;pbWQi164o=x1v2wYCGMkZDwcJ7uD(c5u z8o-Uj6e4-%?})K_hnt0uI!CO|apYP&j50T`XjvM|ncn_>F!gf+U}=bLFUx=m0!fCg zW4f(lvW;jdU$oeUKwH2U&If2#6HmRr@!8+*ylY@%u}akrhJ2#uIjrIdb2zLrd7>3I zlHE44uWjTPZJn;#DZjT@T^FgZi(IZdxZQMgyW!}5L*j8$>Um4*c~j|g@#Ldjg`<5K!^8>YGo@L&ah43(zZsOJ0k$7fGdA{@*-*GEnw2W^b$G888Z$BUBXndOXz3+Z^BrRA0sK6B( zzQalms2rXs&szM2wdAsm(;XXCp{@F{olBX}wcNp@LhM-~@u`&gRm%M<<$+aB6RMOP zse-DAf~(XV;XxIwL60&>g8>+(2&|L`R4OnFgz1d@tI(qes8ZlnV5Ny0v8p6KAyv+x zP>qQ~s0aOHn1eqNx3q>$G0n0J4l=LqUn%vgbo8!p@F*9$SJ=6f+d7xos7h^=kNAq) zJn03V;~t(c9#|1#!iD1#9*>2~gjMTE=(;*v$p*f7E#D!JFZqloxnM25XC*7)tIBNE z6?V=QLbpl>&nk&emE2F`6bKNs&Y@b@i8{A1oqM>>V{)~}lxok(I#0A?2%R32X@Fa} z&UKOw<6StyTt+UTTJ%sq-iFaIca9Zto1*iI(0Na-9!u!)iZCrf%*PP7F1_`dYNiOC zX9NiVw&0Hyl|foXfJW+DCHATkc~sfERtlUeZItDFr^kFnv9W7pjI7B5J4k| z?Gsh)H?78hdQCu#J}{kDqswJWd+}<0xDa}A6Yx%-rq_N-+lp4lt{jdyBvWPZar1> zb%A7yK)P8VKgg5af;m~q%K#JzurrGSP)-xb7=RKKgi;VAI95M#Zf)57y08Ux;h?y> z$qUUCM?cYtS7GyOC(f%4om(3+ho*2U>!FV6Ay$w6&^a__(nsJ{OWZhCQx?@lEUufn z#J~v85sMAzq*cc7H!U4ki+*m30mCdK!3}J&1O&#GVT)ZSX;ncQ6I||9Fa{eHOsj%a zmX}$}iU}@pIO7CgLz6SVABH(?Yp>qeI z4i~%_7#{8)9)2@CTwFUaJEP&`mF`zYW1rFZYIu0lm(S&i* z6~91n(v*~~CrWErnAddmLEmem5p?28_uQ<8kCrzke*EP8onA2MmOvZHXnV)=Hh3OVIVfM;TKL|h+SAcfRpPTSpyH| z6r`2#2XXMQJI5IRfi`ynJY3tI-nimLlV=hgYo(Bm#}4%I3A zwam0^ovWa)MSVJnxET?OBLWvDBB~EvS1)lr47h~q0zQn&?54OWgq4FwmCP5{G@U;1 z$I&}_zKa3XJ2V6+k~Ta!^J7o<&``J02-=~k#HVy1zs*TZo<=!@Em$cjLdFf{Yr|Bn}pAv(|h+`I1|FYv$yoV(kL<&IqHVn3nd?zI<##;ASWiVjfq=OpfUb4iT)1N3MUP%Ioj9ys(l`K7&)w^V zkS{p-4_tV$d{0{!QSzYZy)v@y4cw{ILLmUf6$k+r?sScfW{k*XiJ|ApmXQx4(j0m$J><6 zPhnupdW&k_z(Zow{if^TRa8MbnfVwpl}AlW{?J--97cuE^ux%j9#OYk{LiSo^99Nu z#~eTtP?+oJt%X;o0~lQsJVy_=eC$#e7R8~1;w4S}**jYHHX{J-Xs2?j={l;MSWjh?ZyM^x%jXbVA307}>eP=tOfa-91OKe={mo)R zw<=yk&a`bUd(L#2I&nOW#;c{TwtoGb>1%1B`1+&mV8VJ@2L=o7ygYHE$I$ni#jf_B z@BHGb*~|dlqdtHGh%kjF4i3^Gz0`%1$V9@TXYagZXVB!bhKKil)0y(|6WoRf^8X4e z*<)+zRi1D;d3f2{z&Vem%q$L%c_4PXZ_Nej7O&1ghTk(`1-qJ8hXBc9SHOy$!A-}W zS-`;q^TW(R9lzSW?9(Tp0&5Jo&vZm>JDP8M8j6gFQKR<7}&VUItMTl~)+Y{}ZuqIveKWiTzluGgWVQ#X6C^um>myT0kbJ!pxt zinRTR6_N6&f~#fk`YTg-iHMXZJ;f8{07fAE{@6sgY3ZbU4K745#(oVY1w@A`L^R7>04SDXlQ}Vj*}gEyIU8pZU#3BQ*)a(e(?-pIrQCgsuTPX zPr^iDsN0WIaLX{yzuAM%MXN}F1$oV@nE+S151#9yG$)nPE=sZz>ZdM73R$}#yYbNJ z7YFk@w;X)#7Djad#GcurO$av7k_sMydyKc{hSb`uPMu>#bTPI5UWvOi3rlrWR56iE{dn`n6Wp@1p|L9tvhWTqYk87kMHP%{g46}m|gGsEdY9e{=?8V&@6 zypmIsW3_~HjeowAUUbX+T3o?gFpUpow&CL%<+*cF{PIt$}jO#`l#3L2)G z3>Af_A{1HeHHC_4uAx+CFcq>qQE_6W2Am_ar;-)%W#0*;TTrC3m8>7Xq6xV(tI0%W zGy|(oJ{yTy*erG{9(xi|kfGe!PXp7!ULblu@J%PqJ5D{QP}h$w0|JnZ?HZE`nJHD| zChJ%&4w)BlMg@sga!?+@ETjM|2M6-V(NKhenh4<#@gf0XbtjksYGPEyimgS7VB)+w z#E`k$TG{Gozc|-LHp9(Akq3hVW>DdU3S~fMDisVN1K|@!-U+1=lowE|ght47QN2XM zi&_dRVVSWi;VXVXd5SCOZM2?r%~F#ATr1b4K4Ax%_Q4&y>GN0MJ-^0qv|@T8aWZ-VO22d9z^P33i(_o z(p#?xD1wc~alpP)U5;p0Eq=mieW&TYqfiN~@r(dBMwmhsGtBavrVp4=8xd#7+R&1< zu@!A>a)bYjTJ+;B_7PLC1canQE075xj|6Z~+(Sey51^Wr+z%%Or5Gyo!4k|sarG;C z8BbnptGsRJly4{7CXj3vNVmSfvBOg916Db$BavI5uiQMe_p6Z|heke1>QD!k3Djg@ z0_Sp}D>7)VC>j9kf(+Ge;V9mkbV2plJ)DwIhL3WB4z*J_OkBiLkS`p91_>AP2=pt1 zIM6216zJtO6{RF1JTNs~Nll6mO;87OIEQd`=1JVTlevizuv;R`f&h@mby5uk!=^w0 zrwKX+i_DM8#UPjvs-VCJ)m_*U91BoFMO0w2sB*rtoQE>9(*rx@O|kPSDkeDXwv%oD zAieIL8ZzL*w~5G2&o}NFIe21Z|M8K$O+%s6>ttS~BDWHIe3fvoFcsVVHP|5R6l@Ik zY}q)rYn*JT&1#rP*f>Z95_v*MNK2BV6b6rqjmD0H0}v(y2&MWMoetCPYf;>gLQ_BB zOdbIFJDbHVO@Pzt3{sd4s_21qU(+mKDh>k{!URXm1GP#Vv`V2nhmUIoAc8HS-ivc* zqoNX@jqk7L#}VHOi7&Ej;7MbI?&bDw<#w*+ z`1B)iK}*l*LBGhO+`$V>Dlmn<1hLOICO%LTd@9A@<5dAZ7)<0zY{lM{n1xj^%e*?t zfM>`Uqt@?}Cee zfztaVu#$To`!KU%EKtn1(;2i->qyL3Jux}Y;k$N!IkNBA$Y)0gv57Hy*N`%0K#3}_ zNF7w{9BihbB0Q@n6sZCWm4QW0{)J9{g$mz7xo@G&=MhNCwRk`e`e{G_1{Yz9Gvfme z925NH_!JSJ0FD&~n@Jf^2vSWjug+$%)q{%BuL=NX8n3Vjz{vmsq}~su-e@05y&g)v z9!WTodOnhPK9qRelXzZJdKb6`6nF$*a1T7M_RY78ygPnVr{(A|XY~hIaiHOAMfC2@ zS-Bk>c8$Qsa3ld;`kGgZQd{OF)PIynv|w4o!qkQ(8I1|co03*EFUuoJ%xR9#YFd=m z7?<2IKdAx3F#fLzV=xlq!EJGRBN)bKHlf8c@kwdGLTtr%_^?hABgHgvX;xE0b`#_o zCH%~8LO&QXZWgKLE;Y=I(}mA?FREnQ- zrf>G%m&^9P&0hD<+)oG7R=-Nh!HwCSw4!_2itgmR?$nh%X{&oO)|x1Nbx-Q5o|L?9 zglZUI8qB8rd5e)4pPbu`i76|4z!NQ=!QaH^&sZ@rxQUpBrPKb17(;Nw5+oJJEpd6* elFat$@p|t$C5~}Lyv+LdclG@B|NR&@?*9R#jj9&_ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/InstallU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/InstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c0aced486012fc3141444bca86fb11238c21b4c7 GIT binary patch literal 9056 zcmds-{ZkZ28ppYR;C_gS$W9OJ?kuyjGs}W6AZUms;SA;uOoFJ12^v8#pi+hxHD1s| zQ4>XT2^W*7u?olrVd9XGp`$kjwzLZlKRy%0IY@d9y`3#nUTa$2HGPd~Kj+fjRm9%$1;m7t&s z+iyKq`#1OWJw#ecq*5Xk6KNr_Eg-h%iG6+~6;YaJ6uWVRb(V}>(G?d)?YIp!EnkI*N(C08d}E=Zp4dMG0k|<#&yvYpy(S#Oz=^ ztI{(=kG}jRiC;maaxbeg;;103nK3#yzrss#BhLD?&)p9)%sMeVYv-4?Yc;tGuF60~+fJuE2A z#JPn?1%`v!=fc6F7xwVDZnL_qXIA&cDQiS|l^9=gl;^f@7V05K^F}vVm+O%HNt2fKw$W8+*L}CGZVNB@7hhIA_OBAOIS$2wXon!$~oZh)Y-L7aqdQ<9ksam1Qj4h zJy~0KMfd$3JN`Xx%C}I{eAjh!Knp$Hf9PhQ;V`Q4{XyCRa;OPttlx2s31Je@f-(SRD83I>l1ZbdY?OaW@ewo9*Ae1;jV>uI84Xyb<~0pE$JNVYUyo0$k98mP zPIkWj!+D9d7!{t(U9qCtR;}*m^gMay+`pL>lodenjkwAi9*PwMPNnff?uHe7Kh zRNrhY#jygHimiL8VKpxbuWkt2(y#-ikBh$bCoBz-j9t%JPHU?!CCTS`;+vn1NNl9j+hm13uYoX z2~#YnZ{R98@aE9|;J|Z+C`bl;ULai(F!>k)d-+(VF!`vYeb^9GAQp0bxI(j1djwZ2 zkzO=1yt-=2oQ}t5c4p-slP4S%hF@n)!~aKa544&o2CaN54F?6i%6l4Zp+@m$GC8zD zLzN#$hu~=H$)D1x#3YvUE|amGU*T0z`OskHSSqBx`DkhH%>3Tm=gxW_IVQUCg3Pe+ z5?G^A;T26nC42RdDz_E zL0pZ*Q3+fzGY(9z>3^o^e16G4(x-RFCEy)!Bx?p}g4jV?;FW~(Xv8H}aLPYi-efwE z*%df-!lNiCNaF{xA%O}2IJ-)9;B!T2Rz8KXW^lEM&NoE45@k&3xmmmaIeWoZh06wJ z6`Xe_f6j#=hA`Li4fh%j1sD_Vjz%BYh^r`ghzyab0=I#&D6o#n0a&!qU}62y5>y)6 z*+6t){ZU~G0E_8K(Qdc}mB}RsW+oqfFsF+s`$c)RvGF3WcxcmgyyIjo>?>J*qjbg1 z^v6%dC3XgLtvhAKt9>VRX0nNS__1MFg&!E=D$mMisn$c(qoQk9tg~8-UuDT?#ybw) zowGMzDXF@#a{bSXDzAGU?iStH{_+h8R>5-_nT>&BM<(Z9vx2d}Z-*i zRh+Uqy5jG6ccyzX*-I~h)yuEyx$`c`6FU7P(N73uMj|Vdja{PqV{A`(H}qFfwVU(x#omlcgmqua8S>yffd&x-0cGQvk|@ zP=G0Ht_YgBW!R~-6GZEb^BlG%G}zP)R%M;lwSIKX0Nd*WtMbcw_WG;K*ZsJ4yZ*{w z^tr_YNmEW(le`Y*H#6cc_YuN96&@Ohf4JQSWtiD5CLFVQ4$5O2jm?CFI-9z2%#uFS z9x`y@+eG%-t2JBn`gip|@6@Z-{+Rh>pPJf@Y;T05nb=)w5>&nan?^zFj!kH{C4DN7 z-|L>Z)7VUy@HTK+ihF~6oA7>p2Cke90~KqA;9YOLt8c8=7q9#Q#I#8uhL0T}7Fh+a zFdBTR!Ol?k{@_y3f23vMp^xA7I^k}jQ!paK` zUn^$RUCXN+ShHD&k0B(1ZplmE%`feLX5od%C{GujpP7F)>#2^()Ao&hxG8B;DR z$WI)Nsp^054!_Ye2m9LCil4LR=B%wZ7Hz$?topx|e;Qi6^1I@4%$Si-ieCJ7LD@G? Z7JQjDr^}gtoRnP{y?HSF|9(V8{Q~%f1xEk? literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/LowDetailD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/LowDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..deef82b727330e648f3f7517decfbeb6ebc7aa31 GIT binary patch literal 15536 zcmeHOdvH`&8DEr+N_ZxO@M_d<3t8f^9OL1I;|K0e{#{U?{bR79FJV>1jdhWu&cHxjXiPm#I7V4bl-)>kJv7ff0-EopPZC+?{t+i=8H1$| zoi(eGG8<{!QFP^?qsl-6z~CHMd78Ea>CZ$J=V)3T!yq*6VDGFQr*n3nTii7C=>`J; zbp$5EO%F8F=Y5ptrvg6}dQ+t$FMU#pi*P5hEB2Bl#rsOJBhY2Jep=w8>}Hy%mUBTh zAgD2+zqC!Q5Pn0H=TmEg%<6#|yDntC>dkitKj)(R8ddL)Z=yMFTI4gjK0rmj5m2#@ z6j^1o#804-nVSw^|>PDW? zO!w7OWI(98wxWanNc6)X&90}J|LB^%?PP)TD#rYA4FniWZK52Hy7$pM-cjQ6F7Z-{ zRqrQmmCDsG_$Z!IX_&gsQXeVu-$;hvG9Q6TZzM?KLrPs@?at(#Pos`Fh7usbtH>_3 z_+CR-qC+ujjKhF{g(9W~*T8o#P$d=y=V`|Fj)i;Qo7)slb14NZAak14?QgPU=T4X3 zIRNNh?jC-bpOzbxG^8&^HCZ30CMpk50%B#f1wMf>Kv9Q5;p+sljKS227!UvhH5%0P z0tr|m{<@pi5M^vWTIlM-e390umVfg+YUnVvwX|;%CPt=7dGs`u3ViuEtu*LM0jdbl zihx26fTzPCe*-PbQIuOm1(g;^Fm)wHgBfnD4F-%!A^6}KT1PZ2ha#&y(pwq<*Gd!>9E}&`FF`yzk zdH}jXkte`Fd|)U$s%?@>vPc;U>>6en3=#=5&=J=rK7m;-CXTvIHi)DUlK73sfDQ?} zatRFZ-e8)?SQR)2?srpuAiU5|^F6dE5Ss`j79>qLSy`WI@b9{L3s;2QFnpybgforrvck}%Jx6Ocn$bi`Lo zXv~b#UkNZ^3QTNDRmC_iftOP?R@lcTY6wZ^?aV@rNo;~qZKGqL7=d5N`96X*ZY5@= zd3?E`$r!+NfS1XRx)5F?f2y9!{Nak0&{AIrFtEgc#Gopm#S^<_DsRZqRwvpP!OPf! zbT}6n=PZ~(v|yCS4KbXcRZPdgQp8SqbTBan2i+hmz>ey#=sk=37xxjD4o9gi8VV1_ zHj(J#7=nq}jEhZ7=`Iu>tpgPF8cICUiBQn<6+9z;$r0ALA#37@Ou2ON<$`7e174b^ zmW5#q1!Eg%g+KIl-{4nUhKjWpgAxxI35hEy-q{hHLPyV6?^azWUd|nXGD=TDA3P+m z$!%d7ybOaZ6dm!aE1L}BlBrNi5?#r_xE`1o1f$E@zA0GO7(rcOwhBrq`>FX!@dYN8Jp@ySBSaFzPNspO^CMCVm_RyC9$VL@WB$k$j2 zsCd@IYK693SV6mGxflRAsy9W=gpb02!5nXR+0pJNTZ2D2+5eD#NXLK)1`?qqW6IG| zXQV>d1XKhPBW-@u`ci*83n?b6tLeO*S&<6{1Ws}(0h6>`0)WB*E%Z`)BaLw@%5NIV z+tc}@6TzRg_dRhUh{YikL^**+)1?vRXliSBnzS$M8s4HjsoxZn)zx%9X?Qn>fuvze zx8k7yUk$K15Fd!gHd1kYPu5FS-|!EvZR=Ur(epL`kZ3ZKG+?eHQx!>S@-o@Zy6X zjQ`cnvbsya!0+0-)|~2F?hA>&FsZ~as&jW%Ksu2b_36-~z7JxP0I1M)ZSJnK6E+^0 zU0M5`mH}Yk51n0@5%B3ppAoq2-I?HMRQODjpa>=aU>3l(B5V)9MiEf9H#~n==d7Kb zleeEqduDslf%Cs;>)U+l>ZXn^JSLR-!=~nPn!w||eo3}}@a_&d1;cwtWE%Hf^ ze9ZkAv$g|(be7Hl0C*LQj{L#nG!9Pkp%M zpI0hRUs>JSj~7QpH!cy`VCpF&LiI5*Ay8AdcBeH>dxZ2;42&@{K9S=T3P1wT!bp%E zAo_j}*^hcu(K>c%QeC&8|PN=jv(!7E^>4ne+9r4Fvm;$aS$-bZ@51D^}zHu zPG(j0WjI6X_XURsC+|2r{+By4f4g^O{gvn2)oAdS&dV4Op6TcT5|#x*{1y>5Z=Eo_ z2;oOe#m8yMaVm)tco2lRBx)w7BA4de%I-KK<0fBrryPR>VCh0#Wipa7g=fkU2B8cc zHdT6@%Ay1w1Uatit?XjMjgL#{eGLAJJnCaHmV&?lkWkRjJ9CRWqq1SzTbD9whWQ63 z>iEue1%qezq^*6e`0cZgw+68`_*3TK|y_3b@RxAfzs;%%p=T7xDUsSCZi-d2}0uV1}ge2QLlH9Ob3jva5;mgP^h2Jzgi8gfR{jVv&EeYtFX7?`Uu(_Se;v7rfd2tz%c$p6q_MqZ@MsV6djWZEOd(PZDcbI6X+C|pRS^Mt0 z&wiY}&pzj#duPnV^*QaFzihO9@&6+Jd*T0E?K05vFRgvMcIH3&msTig1*Zw=1*f|f zHuo-U8u&)@wLzKuu1pBa*lNkCmdnfKJA0+qUb*lbeEmnDOnR5emHT9Loy=*JMaN{> zDOoM@pvVv3lMCOF^ukEQP28;n=v2_sYe!4J*PAo*k7jNEWK6kam&-*?+5TpVQwUWd=V7U;h#4Sr(bIU3N?7UDCP4B*TbWS#(5R5_v>qWW8j( z8cTyt+nRg)>ytj~_V?d%a76K`OH1V9y@DL*y+`_#$iQ;R3CPs}xwcAjE6%~$8i8>Y zk`TVwm?KzY0x~QhnZ<%K9?67Vrk>x{DE~Mm%S3YCmM+_w1}$B-eA?sL(8X(NhwlFD zl2VfZ03cTd1eCRk}O{y72Iflxdy8JvQEG%(e` zd1M$Kl7~K*Ux}nY_F7hcZp2|+!DE@OaG zS~U&EER?=|4D=fyxyuqnDlU{xH5eT*J42KLJnYZ;Q0^AVcw%QxQ4_X*S^H#6g-pT5 z&#C|#;xi(;1TXa{htN}7wANl5P~*~QSd zml!L!0Cmud#A6y@QNWmM4lom@Y)_B|h@EBvf{VRDR$1hfBfCQ8pOWvr5FAk@IThvs zaAK9&{3}2DqR9A(b!7!}07U>6!cK$$W@F5MRx3Y`hudo<3EWXD053z^j_Nm28U~YT zfNFq=#!@iBSqL-}MlML419lpq&R<<^4tcOML_wH$Oa>Pm991ny1JF?f>}>!#GP?#( zlj%hf;n!~zT#|m(Ttmlrj$Is~aBQb;mh33cu(^^~5~-6)?>|6(upm}ECoGpMbBqME zxsOKZQ~}A934}a@as~V(Dv!$m6{z&dYXm@kAndL!41=Ax3&TdvPhc=^*^a;?uz^TX z(1MP*RCSQ-hvSxxgG;R1!|q;xZz+}0cN#?)UXCzg!O58E44_^jD@Ylb8(AZCYNHfP z49S&vTHGn!i)2!RjC}Lcv6W^O7+)>Zt!F?=hC0IV`9>EK0PBttp@?SN{=z{H2-$Fp zJT5x!G7S)P6-b03w!4GV#luul9@_w0pwg4%fY&gj8KUf>t0Qm+3{(xVOa`@t2!ogq zPa>8Bh1QlyA#e&Nsa|gmaAGnCPz~5i+p!Ou@M#+0++cX6DFOhTBjpB~CI#iXDw!ON zEd)#ewAf}a=xA|?OrTiE#4WX1huXFuX6uBt=?JL$0>7B;NE--Y^58D`BZ?Nwj8`K# z=*oj$Hjiz9El~3zNe<|M!!T9@s76PnyBvX2v<-?7P~x=BHp3716AO0;e*UU2!{^Gl zN8NQma{y~MO+p30BxU$e6Btvb0iOGC@Qc@fctXr9k?B>ZvAdWSGG|J<8PFU6Lg8ju zmPK$-bO8b#&f5O6Mxj+Ac}Qn`;VecEaX}8yVAcfC87v^ALkK9unNeC3Y#!C6L<-b+ zCCLGoVXD{95!D6blh~$gFv-UK#Da~WGJ$}i{;Ck@#g+gehN+zR8YWy~3r80aFVM9n zFs94_EC)DD#=8Ix|54J~^O5AX#zb05${Eg>hE%TsG^p0+0HFG~j$k z3wLlyIUF3|Kp=-iNY*?7zw$7bCXj3`_;!$(M=$yDq8H&ICQ80B;pbY6PE+1@YUv( z5O#(*7QP|S^vgP#|F${c)u%%8v(>zUD9C5}Q43ne%l6R@E7{27r85v1MvWBsfrEkp zVP8lFu4Rx!^D=COP0<@fb6yDqjC zpklbv0J9!iKtvj#2mlA@NZS6w3%CgiMhu`lq$3<4Vp_4#(Q!l#-hqx5t09T(t`ipg zULJ5_z+IdmLI|0mNF{)-hS@|Ho#RHcl^-h95g_CNk?9KCpa_>xs(vXO(%G5Cd11tw|$TS(fK&I|6M+A%%N;D#ZmY0~h*t~&)R`W#ngg7@IU1?SUq`{D~ zmSJ1!7dObCKae|^1FbwDqS-DV)txVcKqdy(cK^#rOTDj-zh9RWoweC)+)u31H3u}E z^p+x6yKxl5VkrR?c}}b6_Ia<$)HO2AbI|1S1rjIJl z97hhcVH$Wx;A~SEXuHLv17O(sℑqz_&$UJKOfS{$Mov;^U3YQhU6x_npumKdXu_hoB&R$KxOG88->k(A&^)VBGpAaOBf(9#w;A=qq zSRiO#3Jk>aV2LRO_;9G}(xR>#4yA25e*Ti(?H8;Zv9a!j!?Nv|Y&{}>eP3{JG=p2j z_)JKsG$E0hfELyoaQ3k}j2v*dgDJ+5#Iz#dlJibSo_)2Y5JtgBi2o?X1lkd6+Gy#H zNp>a?wW~2IIWeLxL{~b^?d103u7cM{-l8RJRT|&CYwFsI5qQ81JN=44Ebh^XjN{)a z&a=QZ0rPTjNI(Xa%HZuEbz5H6{l$jPuQa7?YrbIJ!43=8r~TpivH1;~K9=oArQnz# zAMUP~n`%u#FiS&xCb$(@FPmJq^!qm((a-Ae1>Gz>=EMUi0Nmn7baqF@jfCjue=Z5^ zuB}%%KihMCo~M#iM<5}&{Zz!(Hj=hQ%!qy{NO#CK8)=Nqh6S_3kx>GJ4vTB3-IvbS zfH?l;m!@a4gzQxqT;Ff;51(v{7nROvtrXMA^DDkPAMyHV|w;}V|Y zCHvCO1X>)!Y@P&0#+zaLf`@d#tSIo3T5RKeO?5s5!aE=of54BbWn$251(5^DgsiRa zWh{9ueaX%)8xEy!YvvD3O#AQ8O&Z+4uKisru6Szq?SW6RH^@I4SsGR}%CFxsj|?!z zBw-tYYns@zBQ{5p>aryy!6_N7&C@1csKA6O^llPF%}}0*sAvLcCfN3CuY?Hl4fTIg zNUp;s(0L&^6`uoD%jn`0{nl1}`@zi@JpM+fb&cuyCu0e~-y6Pi@`8Uhp8wd+_6wfL zc;Kb0)>YqG{U2-*Q4_Ew#z)rSOY1k&J%1LxptJpz9_Adei7d){rCRoOJ=&0~YNG+ef_xbvSjpSN&* YM@;`0-cR3pB5j+q2jJWd@3!hp!GXMYp literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/LowDetailU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/LowDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e483887169969918d3b6019cf870727abe17dbe1 GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/MainAppBackground.bmp b/Jack/Launcher/RES/Lang/ES/bmp/MainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0c6464138e39fa19cf9ae786a95ec26ca0b2ca7c GIT binary patch literal 386176 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/MediumDetailF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/MediumDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6577e673b36209bd9372f8ac9742bf5eca0c3200 GIT binary patch literal 15536 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 W);Dy&OHw6{Ff`%pOa+zn>h*tw`ix)z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/NextF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/NextF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2788e76d73f00467a0772ac644d03b8486f6db5 GIT binary patch literal 9056 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 V)8fqBPYO<>oK82Kp_oKP{RNToZMFaa literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/NextX.bmp b/Jack/Launcher/RES/Lang/ES/bmp/NextX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7027f05e995800676cf2a4c3fa210e919d8c0477 GIT binary patch literal 9056 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 bDN_Uz3;4(#ez^^lFw%juI}}n+uU`KLs=Q5q literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/OKU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/OKU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ba3b3f015c7c8ba0cbb5bb699e3c186611d7e0ad GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/OptionsBackground.bmp b/Jack/Launcher/RES/Lang/ES/bmp/OptionsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..72bce5fb613b0ec29f81d87896c85e0380cd4280 GIT binary patch literal 656696 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 zXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2 zUJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r z@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o z3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20 zbl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<) z0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f z5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M z2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x z^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}c zlmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ z0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTW zXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2 zUJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r z@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o z3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20 zbl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<) z0ABTWXb21f5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f z5D1h2UJZ2M2pa+r@Rk5x^>%0o3<3}clmK20bl?aZ0ub<)0ABTWXb21f5D1h2UJZ2M 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/OptionsX.bmp b/Jack/Launcher/RES/Lang/ES/bmp/OptionsX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0609519f66b9fd432e329061a461db65d5179cac GIT binary patch literal 9056 zcmds6`%_fc9jE_5e=xB3-hJG=dmk+O;Qd%Zkw>jWg$e=Xp%9P-1f_tAj~Ee?fFoj> z&_>K?P!P+TaWq4;Nz*pc5<+T2r$N^=X-%fn%(Oo=lONLG?C0)D&)nPv7BY5HcjxS# zv-fp#glw)e?Kft{r>l3;0ujXl~JiR zMAis#$6V>>?Hl@?ITINb(^>l#Vt35hv!=wPi>!4o%a^l!8OxW3P7z8?O10!UZqB_N zvFDxe(|=hr`PG`YA1+lGp~$RMo9qpoquI5tJ7MD$DXm}0oOEVg6JonrzJldON`>PK)M8Pe@Qz7;F`{MeiNP-xg)7`#z}lV`98He3r;<1Ir93%qO&T&q zb+LS6}3tGRWfwc{1e6gh3uXj1k-Wa1@GsPO}}n-#o_^&}&{!pN6H4xdG5e8M1IVQt4* zzDOmQB@YCPsCrWim%;S3q#Sa^ofTs*8^uP>TF(hyPHbhx9!9zX%niy)=_Dpx-?;PF zq&&9pjxu65E7X&aL~KUvnWn+WS-j5Zc1L`lNjhj0n^d^Oc2>T?D8nm9i68@%roa3b zDUU5ylZ-ON*m_y(es#gOY-5FDb?x$Rj=Z$b9rvQ>e#s=Zn51Tt(#FcK`RRl}UX-g# zz6=el49Wx}kEn174IGaJzktd7DcKn%cdHW9Yf)NFGO#*mRC*bCc(o{n60cNW0GG-x zq)f#KM&uF^E$@R`O6*A?>a1WtVo?qml{2g|xZ2R8z=jB~NHi(qjNH%Kj**m-Nq-4x zsuCOZ`k^lavBF&F6oE5fha$m>=;~&WbgO@YTFNEXdO%H9`Rx&Pw*}YBN=%3Bdfse5 z$71hWc0I?SI!m->YyH*MA%maG=mJBnyv{E=1S-Tw`UYA$UTFbA9o7Op;*_=tJzzSP zcNVRT@^eP)1gVgk8aDSwCBEWHIvW+=WwQ4L4L~h1z$NWZ&_nAlECB;4uxQl^Ls!dB zM6^zqq5%gX32u-#sK5o2F{(k6l`VHCjxpur3(0NtQisVTh;VOWaHfk`+Sy7dBnCt^VPcd{7F(Mg=P8KR!e|5A+YoIQShYAX*XuZ(ZF_2DI+e({s256^-$fF-v zMRlPV94lpv5qtd?2&JrCAD4Q;liin;e!=2EmL4QU*BTJWE1e};;YE1`??{2!TAa1? zfIuLxC|yBFEMmlc)U}Ej9o<5mv=TxB9EuebF=#Nj#u*7%RjDhy+z_8Wn2|G*o^#de z9%OVOyuOhp0n+SJ^3o9j4rM9b-J!yXQ-WIAA~MumYPRf;Tq|78C@M# zi}pkJ!NAsKnqUT6F;jsy1jPy&DJz}9H3Hx=Y`q$pI-Xa2Gr#QZqzz-nNSpzK9nF+J~qSbjuy-bKaVwMjY8fNJo^4fyg^`-B7N02LyC z&<)t!uR0TYTuI&b_*1}2iS01#ozwn_gD}jke~?*oFRkicX8q?0O&^!e{JY@%CtK?0 zuy!4J&UdUs4aqX^9Z&Y_*dhh@h$(86jSO;Z{Qu+_BTvF|W7L@0Il{Y!1^19O8YjB} zTXb(^TsKg{1wwSn%Z`LDdFx0-`$shN$YO=3r))lY`+Et+e_UVp=?^acqw(X12R?o1 zedmkZ(|26?ZU*7rISyB+aoT*+q> z^T%>J=GR_d{6G5mlDX)T50cC7CVTJaPJIcWXleMvS33qjD>&^dfBw&vd;jG9@rS$W u=1O+YghnZ@`dwkgZ=NikN-vyTS9N{kv$IA058yJ~-!!lPcb-ryEbKq@^bD5( literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PlayD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PlayD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..655c739339a3cd974ff6d351d757495a60bc94a9 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PlayF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PlayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ff72d28091db6225273968064e1559b09bdf740a GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PlayU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PlayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ffb1929491e92c3f73d7facc6c112965854f4142 GIT binary patch literal 9056 zcmds-dr(wW9LMSJ{?iiKdoJwm-MxGF-etiD2r4-uDO%tIUuB^Qf`Q5?4>c1F#Yae5 zk!HST0G%nCM4Z%oP$~&%PQD7YEGfkj({d)Ku<7=_d)dR?tM0H1I<`A!ch2=Z?)`oE z{(k3o&NV)18W-gHMB`V$Hyz(le4hyFjbHWCq5OLMYiIgS zsv&$K;bs#qi*T<7PO-ciW}9b?C<#ff4$eOHbjhzhceeGYl^;~@3o8BSoe{;~IY#av z+#JGX6E2f*Gl*$AF}*^}(*mim+*GBQm0wtAh~E~RccJI@JNLzk<+`K})KfvWP{k2hgu2lbF-+*JsVCtobFDLz!xLwxUlynYMyMp#MXF1} zH-l%LrOv3b8ndCrXkQg36e+lb4Mg0-NMAmH(n*6DFy$T%fS6Q=I79dqO29Y2Oe`5n z>~bxRV1-pLV)Um*q1b3&Zj{Q1xX&f06P{Y~jZfl)rb%fRV~3yf6)cAMH_+D`dG^;p zlTIiC11{_9EQf%PP+zI8j9`_x@{(CvZ4|+3Rj9O!5s!IN!aTl#LVwx)Idbf_PsH5g zn5gzuS3MPPE9Ed@#RQUCselD`j+v1-mylMg*x`S7CU!; z-{nOAraF^%@4HExyjM=2`xAu@hq}D?e+aGZ=DR|Dm6D1h1Lrc3)h85Q5c;hLE-tc? zg{UNLnDSFpcz%1#DQF1}NUg@dbl$Gw(kpZzLSN?xc1KUQRFpV>fbc7oWR*(~&N>r2 z?U*Bav)Jzgle3yQw2{hxQ1pR;i<(TmDP!&rs&e3)U_v{iQm~{M3It*FxpyF1)qz@) zm==Y0*3Q<2x?5VvyM!$e6;jiXq?+jDeSPD0M8uXGo%=No*bSi6N2OM%th5l+rn1ey zs68t_YNefZG|<6I>qB5g16Kn!EXrAdC4-51XFx*Dz=U1VLq9e;Yh5|Hiu7TzLj0jX zXa(|vX6Pj>^wa;bszX;lL4lhbHZhOWb3Q{NiD=(z>KJ zfUB-YSwVY=G-Pt!sPXlQDM$GJhnbG;j1IE@ zms*o`M$yO*7125>uonw~cA)oG-L&0=OZBe?M)*WwWtqdotRI$rc6{pDl$XyqpE<%h zut9DQYu$9mj-(V8>5QTTz)Ghatq+2mwiP1OwQ8qD6V%(~hi`{~{SL8L5KBIAg^b=a zvgq=Q8Rt{8evBL07#5B_VE5z<^l7#7&>DpfT2|U7Is_FpG4tMvskB3Yi{9O@id!wn z8SJ&J?Om47N9mn?ZsPXeCQbh~eQwLdwDY#8FEwt6A^y7_9ZRi%y;_seLCXr4TJfl( zvWHA!wHVSdo3D5G+TYDbjWddwjcoW4lXEZMr$RYQ2ro5>t9s9F(w!j#7v4=I zExTIumRz<~etU~tuMQ7XsON^ zaX^Tw=`*ORZ(OA_b{kkp12%``T-1V6W4q#mv^2{pn_5$HuOfDpZj{$;R$MZx;P%ku zb66sgfbmgB1E^qUS8I!^36H4+rRbqmQA0k898_*fstsOtjk=y1tnS0g1r2X2Mwecj zkl(U&jSP*!C4p}CYqzFlUw(1Mg}^8;q@N$3dM0sP-Js#S`V6j&99YrsnH~I?!yyHi zpX%g0dMdD=l%x2`J8n)~dt>I>J97*F&VQqA*1}tvxmYm+p=8Yab$ZUvW7EEgo!nqc SJw|da^jg#E{r`Rh1^owA%2G`L literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PreviousD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PreviousD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..76c17410994d7a95491211ce3911111c56648d50 GIT binary patch literal 9056 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 BPj&zR literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PreviousF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PreviousF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f85d6f12527d0327483e92a604098ed23fa83de1 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/PreviousU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/PreviousU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f9ef8d65568fa96d24dcc24f537a518b05253d13 GIT binary patch literal 9056 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 Oev6QuIB-rz#{U7EnuwtQ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebD.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de44ca2fdec9f3fbb5b53b21b48cf6426eb38519 GIT binary patch literal 6296 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 bLdYaJL;@!e42qFW0Y7q;+5TdK literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Publisher1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..279befa58505345309c555c45133b3f36110e10f GIT binary patch literal 6296 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 a^_Te@t?;4qOBIZMqgDTR!*IDsU;hR0o)U)u literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/Publisher2WebU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/Publisher2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c9635db95fbedca54a415b3fbcb7cd9ac5fb200e GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/QuitF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/QuitF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..19568f18379949b39c7809392357812483ab3cfd GIT binary patch literal 9056 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 AoB#j- literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/QuitU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/QuitU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fcb554326e694cde24a3b75880eff19b5e97acd4 GIT binary patch literal 9056 zcmds-Yf#iy6vyf3e$(pW<_2~*yV-2AEQo@Lq64C$?fOE+YQ-0Vg32g}uZk8$QSecv zTI*{D(3y%;5vOW>(26Jz>r~MewY8P1w2IZ%nK~_Yn*Ot4(`>-kbaCuvPBJ&iy*GP) z{Ljg~H^ew6Gk&fu97hg&67~S>ulf1oC~uu!_w$o>_m=Ua_#{jHs%1>k-I&Gop$X-L z%_huj!lV*rrtg?}W}tPRB{<*OZ=WvhLYMqIoe#8hst})K?Se`={b+FRxAq}>2{VT< zX@p53%yeR$N{my8X|gXF%}kQaBpu(i!0+Vl?1z$WPj7I)3L)#;>GU}{!r7h47_{hC-75+=jN zDxH`!30pu}cT?6L|XNvYn*35@J~*ha_TCH|vrT zj54bcTbm5Fyg)8T!o_VR{9#Hs^8`xg^}Nqm8x4S%P=!20*i}-(H%%nwWGQ#KUXEae zw_fn@PYqnI!M4&M6cYZZOHSuJwd6B=+I2()O*khB47e=s(hL$lQhka1W(2Fa)z?kJ z8Uqhjc>%&fia+Z~3H`L&zmHw?#3iX~4`GrKj2J9oAOUG%z!@^^u-UQBB;*I$i-~Yb zZ&xR%mjNVU+O@bb4X?&u#7#^}UnhxmqdcV4#}r|hI;N!A8d}J9-((3c46q+@z3kle zy(FjHb+<%Oym9jn6l@U})J(FLHU9eBU$|R&_Mu!2Wo)SP^i$NAYoeg;&>Q7e_g$&J zR2qt71kNO5R3DptmFuwuxR{U<8ln=^Y05jIQhR;z^6v^RfRg>i@fBo+R~sc9C+uoz zu*xLqQtNw9K5Gx(!T0#c=qMw0b*AzTD2+mZ1?X@Q#AHP&@=znyv}$|Wk-CE8ZfRlM z#qETsFf{GvEDs-cG&E{&aPK069IqTw`(>sW(}H3=H{7!G%)|nYLFn6*Q+EtSdJwp_bwf z5+(bjFJhZSAUfU$des6x1=OzK$|N@|mnqN8Jh` z>^(~I50+WgP~0aHEAt#GV#|QEOQRDn#ZRnv^sA)pm>{>NHE%y!%32!lH2%tW6`iPs z*A`vd-n{yQTOnY+Lu|#wJRi8a4L>|2=f?QtD~YK;L=CA848k1H`(p;h3$^>Q5;V9F zhRUE+UAZkQTv032tGaTl1!D$V1#R6-v-4s8X_v?D`6XfMH%W7w#!kCp4LhR>Lp1Sz zBqF!KFPM^KdJnn`EU@Ic->aXfVTEdPLp2tqEeh(k|E=t1#n%w-5X~-=7GBteUGnc@ zjuSV%A$7sMw1xMhhMo@$uI^B2J--(kR$wdVbI9rWJ9+V%ZcsuU;ZM=F-2v8Y+Ok9+ zQ;Inb=FZN7Td7(17Onbw#{9dEzO}R+%U|v$tp)E3?3rF@SZPk5+5E*Tc({xO1ez~1 z*mAK*704~qWqyabv%DtboO2zlmaY}!CtYWIR(nRG+{w$v1^qxsvcYkLo}B#U5ygw6 zc>3@60EHzf+Wr}qr(6qqIn8ZWnVHy=6ANN(2BL6t_w5w?4=w3raI&dBHa&u-AH zAp;k_O*mKF&RH)O?h@bMDQ2yB96PdskElhqmqJoY%=1Co{Pw@Pi-l03HX!J z2J?t`Gkr;rnVW)k_Fte+$hLs0Jlz>urbZJ=seIb2{jLr((il3Cwlap0DtX$CW zwZd7@G;q}Ubsx09}nPOOg`Rn=$E!R~!aLL!TM^xMmh zIMprd#v9N1jovM=gfq?lx+z`FdG}pV-)Q~jY(@%MwtgeCYdL33WErWR2BTm`_4U8mjdk7Ki~qdO zyZjfdl8j^i40tN=ABBHD{{L&7J)ZRMt?}c=k$>yowugU=qUgFI(e%VOCU{Sf1Wi%K zb5#cwx=%g)F3t7W zjRFdvVfj6iWt%1mc1pA-)Ly5Z-M@78I_2SiK48IbL7_QImlrNuQS_fdVNv&@wlwcf z>i+0>chYCwI}UVD-%!Wf-DY>;)obAzjaB;}E*tOgl%F{pzR-Gq>*jmL)$=Q7!zoAo z1-b5;Tz_4zzaiJz5I$c^|CY!7hI}lIRb{J(zK`V@s|PJ(+0ZhQ(@}rZ$>X-~?A$dQ z+ul#^{_t4$!K2-P&L_IwKI!pW8KVQt7OR+w!5QyWDs;z`ZpWP5PXHws!x@?OyhwXh zsJ_W}P2;(w^IZQQq)z9l)A^J%>HM+8bb*HuYY0YdiEU@Kjn#t|TUGzcs5+gaOyxV@ zQW|bgpH~pIrETxW-G@FWF&4YysW73%?%JSjfU#H+pc3v%T|aiz90gWN-EoQfd%p7( zp3`-aHeKkJDbi-WmW0}@(WJ=|+7c`1mL&%1?tmm9{TO1pz#{@twYGZbJJn{ZYOEeT zF)@}#86^xbq{GlMq`FiWpR~6Z6>Ztmap**M@(B`PvaL-MZQ!zC)&57oo(iGUK8bUZ zLU&l9KP_{+EY;nV=rW}4Su(>Nxkt7Q<;Xo=M}{1^m1Ncz(n6U%bL5^mj$S#A-Z={I zT##}M(RT2FlSmnIphxDOZ6QN8)#iwl^{kl)q^K&G3G25X}b*%x`1YY@?55mAm{0M7Mhml%#dno9wqvTULrCh-*ra5+Am-2pRe)H*9PQk z-YytH0RdzY6YW+uBIuvzN`?dFm^)^1b{*_a{IGjfY{QhKM|33utEilQ=XsZSvRxvlM2Y5zRDV_Go&l7g zK|Lc+^LD;2Fke5r(0xv!fg!vQLJLFaA~cJTE|5}zE|5~84((Q1k9kEN^NT#^7kMox z@(wB{w9rb-C)&{qHpAQ^m>>!*IvH(@3F5}wLhuahSy=32C5ytKVy^`tV#tdzhtClf z8FSPY+;f|W8N}2uh#9gGU{0Q?ikOU43uf>T*hRSC`{+ z&MHFan!V!QtmXFttqxNJsQ-b>%Vw=0JVZRQe12s4g0&Sv(G?5V5n8mq62!b$q7hwS z02`Pg0zsm7c^Of%oLGT5qGwI{f+(VgRkC6ITo3(apbL5r=T|^1e)Me+MI7l`-h&MV&wo5fXI(lRv z6cLk%USJ-(zb>z_ugPd^Hk<1D1}k3<5G#O3kZRj^%FYcxu z{h4!3 ze|iiy=qzY{5tUeL0U@SxNlew}mmZZp?nm#<(q|#@)lhOZudAWY2qm}g^$=|qg-^b^ z@&ww5&OuYyw)^4R?#CuIfT!sd;lT^-!gE<%72Ixww`OD6)0bGM*gdeOumwroGgV%< zm#i#W5mU1`B7f46-~D!%I!NLONe@YN*AY|z78}B}rNxQIni?6DU>E*?+6GOz^?j=o zYgfHjd-VLnRuj|CI0>GnSH=wo>O;0vV=NX|%|K=#BH{kKJ8DwPpF_ND&|Ld$AoBe> zygXp&+v`u$E74`9U0+{&N^RlUVlu@gHAHN$f%y5<4%UbCisx(g)|IyRQw?}#R`s&) zXKws{=K52r5YMQ6^$ACtn_ie$h77AY_yf)GmduXXSl-c(UBz>LA+~6hZ>}7nrMo?K zPFi?W`LdOTye)OwkSiSF2979>BmWXn=j5A#NhT2!0i6~@L+17&^T{iZ zH+sdSdD@cvr#3=U^hKL>yNpc#U3hZ^xh>D=wk zteRfDKNvFC^%yZyc9?i6ZGQ>bwfpN^2P{6ofvo$z=Wcfp@geg=hO%q>=nGnYNbUF` zwG%H?e_V3o9q4B~r%&?9ScgBrJhhyJ8Ae*s(T~l|XAxP6IPo35uxq7jX8g7=EH@}D z*Kv7~%=-vOv=(qpk)4$r$O1$VVo#3QUk9k61VCX3-{0zJGg=%gZhd(q?N{=oAM zNew$bYmVAqAGx;<)(@O+ORKPi3jE2e?%nW_#bHP__8Q|qZGJd3Na;dGCq_zD0mfY? zT7Sy!dSGIrZioOId#Lftt53i{(I{zs`RS!cl}}z#@kc|0zZCU+bNzR`fY5j`vnwUD zi`BpFSW7$coOIy@U5Idt^F!u!AJijC5wXCkvhx+TTx?ueR#;p(;IIsxJZ}Upx-oO% zEzQE4JjFJSFp^*;KQH&lLLLQFaiV>4_JI{E^Vypnn+`X@N$O8ipXp*2>x}tUSr3T{ zDt9h5rXM7DQNGgzj;t)i>f&8SlcK}#H58Q5eZe(WPGT5!3HDf8! zNPb{8XH@mJnFvr|#`0gjvxe+irgZr=qB0X9LKf zZ~pm|w$SLZjVp{A=L;4ZJ6X`fQf=1&7C5lA_71|;oI31g@SL#G#SWmL9}$H^>eSUI zbiX2}p~;wZx)mw6bq!`n-L9&=ztVVrEf2h`S@sW(a5+b~Vv6jz%>9B zx}E`YR59Stg?8vWTX6z1PXCDQ;8!h{w80Cv(NvjR zib{XnS$~|rEZuus0Y~^QM-ai0?2({C<&}l|5tw}z72#0Wcd`X34M3=QHh@{6a}C^Z zHevR+BsZ0`y=-CdZ0tAQDCv&eRU5=4fyf3Iudm#Gq^YRo1=5C`y54IA-B^{NyoNq3 zQcUQPAKELPz9MsKG$Bu0%Vtv>DwoDpt$V)?tGlL~hSifFO4punuOJO&L z44jd@lstI3?^G-D85))p5InJSqGjtRO=;!No0`s_uZ}4IrY7D z0|RxYfqf^NH34}}Q*&`0mg#;CTO_KBnRuzg&mZ*moaio*}X4lh!l!zqb9jY+Y{ z4v)(M5_KemNI~H_f(L}LW9l&@!JDfwC}f*Rp}~es8#%BgT}P_F0y#FxuE78{XteI@PPTNtB;9kCJ9--s|FbtGEAxj zQ2`!88%c%?wP^qH@?%T^Rs@J}ZmmYv2hOFjRhU7Nv6HJoIXr~72nk%8$W14x7?({X zS2*C9ToeoNilf_Mxi(p@N&eg6r?P}AlZD$kf>6LEbWWDI{VMm&LY4(=4RcBIfJ6(< zLpkzW9IT+Ku2&ev0$5yAJ_qag8#D% z52-CYF&AiIz#+FJ3Xa9%k`i290g>lCa#eQ=EWrLlZ_qN&EQ#(niS}!W%Lh`IB>v3H zxa0iQDS84op2H7!5QOmMYlJS}Nc6WIz3yO>hoJlH0_3G|9?E~lg@U;YAit#+fe*TH zS%x_j5G<7elp2`Y0%`@gQ6jY?V-LQ2HMbKxC#d+r3rr=0?Oi~Ma|HK&QdqDSEAWDo z$a_ICj$;B^Sm`I^>A{_CJ3|l_hp2c-l;!6(?(sz6LZ0sE5+p<69Ip4 z?_(^I0tj{+?MzY&!W9@OVNIcWCUZwAGF76vD0V&|QoS!y?YB>;#ohUTxFM75gC|RN zItW4q(r|%dhtTDcL`RBOxN$=RjzydcxE{g^oX6^ugHH4k(1MC#j>a2chXd3) z)j$wt2vz_%8cF#DC7MM{xdVPKw15K!i@5;eE$V5cJ~lNEiwGwg79HwWDEdjupxj5`(%+VOWFdD&fB`We zkCFvofjJbZ+%P}}A7BD=C`dB4EX7Px(nQ_TI|uFX2ZcMJfm$4JBQ&#s)a4j_&m%y2^lKF-J?U2Hav$ z5d}V^nvHt0&@Dr#xh+)xBv5@SQtlQi-V-R^pS1sh9rHt&-JgAUfAh2F&YU9I;~)y- zi9-aEaK0iz;PQ8|=2xjc4aq#h62S@35T%rGwL}Y$By+)-L+zRt$!Sd%reN16c;l;3NYgEb66I7pl!4)rVOU7)}fP# zlV40Sgbaz?GSFhNMSde-{A69#Gp=eat`3`XPUATPqMJO`&phQ1T*ps&(#W$`jXoXRRvY-Nc!)T%DR z1eiruyF_-BxD(?5Wri*15$47)k8xE2e7@s4p5)38a-|!&;&oi{1_yDhgJjF(xO=01 z^ZM&V@Bg0QH~!6;f0^|5Tf8N9($)5=!(68%2Vtm#@Er#MD1>Abf(U_Qq(B}`i7$`l z%cA+xwR~w5PZGr?6v-7wI*7@W652t8N5)7wMhhI*S!k>{BQ-3}%Ch1x4GoL~#57}_ znqZ&Qmc`sCS7mT@EjSrhqo{|5fJB3TqPyR2-Sk}=pY1C5t#b7yk#ZAv=7mWI+Ss3O z=noTkj{oFVCA(IvBr>J)eJx?m8rU+d=LDEG)69BhRz9fQYOX6@Y zNEC)$&O!J(5{01`JX8weEYTJ!PBgquoXA?lhc&Pc5LwnbV%vqG^%Nyd^cJ_=sSnE}kS_IY}8aMY~5n z<8$r86wUlw5}z9a{Xc}7(|qNAo-BqdS;G}u$U(fuL1ZD0XfG{|Cl3>W}~c literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/UninstallF.bmp b/Jack/Launcher/RES/Lang/ES/bmp/UninstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c8fe4318bf2360f71dfb7cc6b03f1439849d26ff GIT binary patch literal 9056 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 G;r{@p3X9?Z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/UninstallU.bmp b/Jack/Launcher/RES/Lang/ES/bmp/UninstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..21f7c5bae0dca8885cac47d8df8da53b2d8934c9 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/ES/bmp/optionsd.bmp b/Jack/Launcher/RES/Lang/ES/bmp/optionsd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f0d3938e81656c8984cc77c61d8ab81611dc93ad GIT binary patch literal 9056 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 Z{)N6f?nH#^XJk}=bAi!W;`FUb%Gr`UY_}!3 zF~+@_Nb`b30#M)*rBgAn(taj~CZ$n9^Q zZ1+}VjHpR_slk?9PizZ`R2sypgjnYjd97gID%k4;N4;Qg>}^d8>W_lFk=RxseS(Nh z0%*vi=sBnQ)^|xs)GNU{#THwU`1}rM@?O!lAP7_`v6c(+yMkk{pd1p^7K74eP}&Vj zN3UxLs!dRv1?8aNs3Z1uM4GM<%rXfCi=NTJ!_`kHkZk3ux5^g3$LLrp%8Nu>x#)P4 zIO+uF5e*_0_JEI4Y3Z4pgL=(_Ha@!?~C2C-s6aiFOuG=c#x+pk0k z1s|opmOdFJSD8I-hedtEqyVecF=~UL9Pf$}>@b@>b)IFc5LZ{YG4V{LKIlu42TeLErI{PpGye}wdJXW-S`RgB6RDHuks?#lB zawS}s-f{X)*6h0R_ka8c6Y1=Piedn>z&`zX?D*}T6(Img-eKM`u75B5V5zUuw&K`< zOMdL?&7Q4}1Pw09TPuQ8Dqp4|kP65!S6Qce(>2T$jujO^$kY=c!&F#@j`F$?PRTh- zQDS1~AWUk9-3-SHYoSvF&VU_?6f3H$TS00zbPZ8OtMdnmyh_`wN`=wIr>)){uH;Qh z!XM0@dg9_MRRo|gsm>GLZ9ZPU4;lRIK^GYE^18U#6zI?x*&S%^;GUeyM8=9OB4(r$vBg4%k5@-~jE3vNd8nY#4j%>I z$3!|^ev}RA9N?FR%EJ!4V!BX#Fji{2;AkLH36W+JrNWo>=gg5Gr4QS0@&4t3Sn&>o z^GfFlFC39qh>kY6&Ew3|0|Mc^Vsr%|QN(EY=<|x09cH0UM=2oz4#NtHn6!JiC}%nZ zXCskb*DAcS$d_~I#nG+9@{Y-gM}_;ZGm&`(G?<@kQre;Ovgc#?XwSMlR`8$2sIx=K zz^4)u064rN{Dd&`mMZcBP-HhFAr{I(#~uwU>uZAVoy4KXM(3Z&n|#_c_?YOz3o@0# zH8Na$ond~`=O9$Dvdld;iqNRF9&~kBMYO}7gW;n+48aYIVx_`;=pL(kAmDw6IBSTt z3~&v2WxtYsc%r{Ezxd1a;q68@-T@!5XTXdoFN{BM0|-zz=oNtg9Euo5>2foH?sRdV z<|D3D7|}61$RJ%@%nl}k7=r@3;fnky1h6jf9~0?(3pp8L3-%1oCegk@l*`ci&pvBU z*)wk1xx#r@$4>9GCwg{q-P^lSIHWQYnhh#I1+evfM8apk)Jg(E4^bpXdx!2`WYA!i>wld-1kG9~Y_rX49Ny|HY4VCkB` zi18QYL8mM8v}3rE-;gf+AP7cohB4f;j%5{P2ErH)|4wNtZF?-Z`#n+B% zucf3Ov91&8>)SImii1$KJ;vQ^_8yWG_PPdc)(#UA-veBRqBHz|6C;YQWctsgOg)$3 zzZP3?c5vC3^OxQQyEbeItga5sskjZq)KnmbKRbX}?`jH8UBIOlQ|v)UQe#|NU3_}2 zCuJ+JQU`7tP;!w63TZfE)|DYMI#Z{14w-c=zU0z`)*tdV-pDKc8){e8dx5t$X(?G; zemnE!vv@>e112Xm_o9Y3yC!>5quW;tl#(;+k}`IA)3!Tvo1&L}%TkXPD_jRoJmntK z5kKzqprWsy-*jW{r9kOdfx_lHuT*_IrtIp{wE=JpDGBK2{_^`NvoBAaaiMp#35A`b z^G^@^c}rSOL)@TRZ)#1#;GMp4M~APzobsp0|Ix>dKj9vKGHK%Zq{53M_Wu(=u~z)q z-SInbja`3p=K4GH7XQ2KH+Sb$d|y<0y>~SK>)%Z)`FeEW=h?5e4ViiTg(Vlp*4{wK Q2tVhP{@-~@t*EH~0k~5QhyVZp literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/Launcher.rc b/Jack/Launcher/RES/Lang/FR/Launcher.rc new file mode 100644 index 00000000..6fbc611e --- /dev/null +++ b/Jack/Launcher/RES/Lang/FR/Launcher.rc @@ -0,0 +1,520 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\..\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +MINIMIZEU BITMAP "..\\..\\bmp\\MinimizeU.bmp" +MINIMIZED BITMAP "..\\..\\bmp\\MinimizeD.bmp" +CLOSEU BITMAP "..\\..\\bmp\\closeu.bmp" +CLOSED BITMAP "..\\..\\bmp\\closed.bmp" +IDB_BACKGROUND BITMAP "bmp\\MainAppBackground.bmp" +UNINSTALLU BITMAP "bmp\\UninstallU.bmp" +OPTIONSD BITMAP "bmp\\optionsd.bmp" +OPTIONSU BITMAP "bmp\\optionsu.bmp" +PLAYD BITMAP "bmp\\PlayD.bmp" +PLAYU BITMAP "bmp\\PlayU.bmp" +QUITD BITMAP "bmp\\QuitD.bmp" +QUITU BITMAP "bmp\\QuitU.bmp" +UNINSTALLD BITMAP "bmp\\UninstallD.bmp" +INSTALLU BITMAP "bmp\\InstallU.bmp" +INSTALLD BITMAP "bmp\\InstallD.bmp" +DISPLAYD BITMAP "bmp\\DisplayD.bmp" +DISPLAYU BITMAP "bmp\\DisplayU.bmp" +UNINSTALLX BITMAP "bmp\\UninstallX.bmp" +DISPLAYX BITMAP "bmp\\DisplayX.bmp" +OPTIONSX BITMAP "bmp\\OptionsX.bmp" +OKU BITMAP "bmp\\OKU.bmp" +CANCELU BITMAP "bmp\\CancelU.bmp" +OKD BITMAP "bmp\\OKD.bmp" +CANCELD BITMAP "bmp\\CancelD.bmp" +IDB_OD_BACKGROUND BITMAP "bmp\\OptionsBackground.bmp" +IDB_DD_BACKGROUND BITMAP "bmp\\DisplayBackground.bmp" +QUITF BITMAP "bmp\\QuitF.bmp" +CANCELF BITMAP "bmp\\CancelF.bmp" +OPTIONSF BITMAP "bmp\\OptionsF.bmp" +DISPLAYF BITMAP "bmp\\DisplayF.bmp" +INSTALLF BITMAP "bmp\\InstallF.bmp" +OKF BITMAP "bmp\\OkF.bmp" +UNINSTALLF BITMAP "bmp\\UninstallF.bmp" +PLAYF BITMAP "bmp\\PlayF.bmp" +IDB_MB_BACKGROUND BITMAP "..\\..\\bmp\\BoxBackground.bmp" +IDB_DSD_BACKGROUND BITMAP "bmp\\DetailSettingsBackground.bmp" +MEDIUMDETAILU BITMAP "bmp\\MediumDetailU.bmp" +HIGHDETAILF BITMAP "bmp\\HighDetailF.bmp" +HIGHDETAILU BITMAP "bmp\\HighDetailU.bmp" +LOWDETAILD BITMAP "bmp\\LowDetailD.bmp" +LOWDETAILF BITMAP "bmp\\LowDetailF.bmp" +LOWDETAILU BITMAP "bmp\\LowDetailU.bmp" +MEDIUMDETAILD BITMAP "bmp\\MediumDetailD.bmp" +MEDIUMDETAILF BITMAP "bmp\\MediumDetailF.bmp" +HIGHDETAILD BITMAP "bmp\\HighDetailD.bmp" +IDB_INFORMATION BITMAP "..\\..\\bmp\\Information.bmp" +IDB_ERROR BITMAP "..\\..\\bmp\\Error.bmp" +IDB_WARNING BITMAP "..\\..\\bmp\\Warning.bmp" +COMPANYWEBU BITMAP "bmp\\Company1WebU.bmp" +COMPANYWEBF BITMAP "bmp\\Company1WebF.bmp" +COMPANYWEBD BITMAP "bmp\\Company1WebD.bmp" +LITHTECHWEBU BITMAP "bmp\\Company2WebU.bmp" +LITHTECHWEBF BITMAP "bmp\\Company2WebF.bmp" +LITHTECHWEBD BITMAP "bmp\\Company2WebD.bmp" +CHECKBOXN BITMAP "..\\..\\bmp\\CheckBoxN.bmp" +CHECKBOXC BITMAP "..\\..\\bmp\\CheckBoxC.bmp" +CHECKBOXF BITMAP "..\\..\\bmp\\CheckBoxF.bmp" +PUBLISHERWEBU BITMAP "bmp\\Publisher1WebU.bmp" +PUBLISHERWEBD BITMAP "bmp\\Publisher1WebD.bmp" +PUBLISHERWEBF BITMAP "bmp\\Publisher1WebF.bmp" +SIERRAWEBU BITMAP "bmp\\Publisher2WebU.bmp" +SIERRAWEBD BITMAP "bmp\\Publisher2WebD.bmp" +SIERRAWEBF BITMAP "bmp\\Publisher2WebF.bmp" +IDB_DEMOBACKGROUND BITMAP "bmp\\DemoMainAppBackground.bmp" +IDB_CD_BACKGROUND BITMAP "bmp\\CustomBackground.bmp" +CUSTOMX BITMAP "bmp\\CustomX.bmp" +CUSTOMD BITMAP "bmp\\CustomD.bmp" +CUSTOMF BITMAP "bmp\\CustomF.bmp" +CUSTOMU BITMAP "bmp\\CustomU.bmp" +NEXTX BITMAP "bmp\\NextX.bmp" +NEXTD BITMAP "bmp\\NextD.bmp" +NEXTF BITMAP "bmp\\NextF.bmp" +NEXTU BITMAP "bmp\\NextU.bmp" +PREVIOUSX BITMAP "bmp\\PreviousX.bmp" +PREVIOUSD BITMAP "bmp\\PreviousD.bmp" +PREVIOUSF BITMAP "bmp\\PreviousF.bmp" +PREVIOUSU BITMAP "bmp\\PreviousU.bmp" + + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\..\\..\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""..\\..\\Launcher.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON "..\\..\\Launcher.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_LAUNCHER_DIALOG DIALOGEX 0, 0, 600, 250 +STYLE DS_SETFONT | DS_3DLOOK | WS_POPUP | WS_VISIBLE +EXSTYLE WS_EX_APPWINDOW +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Minimize",IDC_MINIMIZE,"Button",BS_OWNERDRAW | + WS_TABSTOP,292,6,10,10 + CONTROL "Close",IDC_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP,302, + 6,10,10 + CONTROL "Display",IDC_DISPLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,98,50,14 + CONTROL "Quit",IDC_QUIT,"Button",BS_OWNERDRAW | WS_TABSTOP,243, + 154,50,14 + CONTROL "Options",IDC_OPTIONS,"Button",BS_OWNERDRAW | WS_TABSTOP, + 243,116,50,14 + CONTROL "Uninstall",IDC_UNINSTALL,"Button",BS_OWNERDRAW | + WS_TABSTOP,243,134,50,14 + CONTROL "Install",IDC_PLAY,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,25,50,14 + CONTROL "CompanyWeb",IDC_COMPANYWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,222,213,62,18 + CONTROL "LithtechWeb",IDC_LITHTECHWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,301,213,62,18 + CONTROL "SierraWeb",IDC_SIERRAWEB,"Button",BS_OWNERDRAW | + WS_TABSTOP,12,213,85,23 + CONTROL "Custom",IDC_CUSTOM,"Button",BS_OWNERDRAW | WS_TABSTOP, + 413,44,50,14 +END + +IDD_OPTIONS_DIALOG DIALOG 0, 0, 205, 181 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_OD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "DisableSound",IDC_OD_DISABLESOUND,"Button",BS_OWNERDRAW | + WS_TABSTOP,19,15,50,16 + CONTROL "DisableMusic",IDC_OD_DISABLEMUSIC,"Button",BS_OWNERDRAW | + WS_TABSTOP,19,32,50,13 + CONTROL "DisableMovies",IDC_OD_DISABLEMOVIES,"Button", + BS_OWNERDRAW | WS_TABSTOP,19,46,50,13 + CONTROL "DisableTripleBuffering",IDC_OD_DISABLETRIPLEBUFFERING, + "Button",BS_OWNERDRAW | WS_TABSTOP,111,17,50,15 + CONTROL "DisableJoysticks",IDC_OD_DISABLEJOYSTICKS,"Button", + BS_OWNERDRAW | WS_TABSTOP,112,33,50,12 + CONTROL "DisableHardwareCursor",IDC_OD_DISABLEHARDWARECURSOR, + "Button",BS_OWNERDRAW | WS_TABSTOP,112,46,50,12 + CONTROL "RestoreDefaultSettings",IDC_OD_RESTOREDEFAULTSETTINGS, + "Button",BS_OWNERDRAW | WS_TABSTOP,19,61,50,15 + CONTROL "ToujoursDemander",IDC_OD_ALWAYSSPECIFY,"Button", + BS_OWNERDRAW | WS_TABSTOP,28,122,50,10 + CONTROL "Ok",IDC_OD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,12,161, + 50,14 + CONTROL "Cancel",IDC_OD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,69,161,50,14 + EDITTEXT IDC_COMMANDLINE,15,97,166,14,ES_AUTOHSCROLL | NOT + WS_BORDER + LTEXT "Mais qu'est-ce que c'est que ça?",IDC_HELPTEXT,20,140, + 162,8 + CONTROL "DisableSoundHardware",IDC_OD_DISABLEHARDWARESOUND, + "Button",BS_OWNERDRAW | WS_TABSTOP,112,60,50,13 + CONTROL "DisableSoundFilters",IDC_OD_DISABLESOUNDFILTERS,"Button", + BS_OWNERDRAW | WS_TABSTOP,112,77,50,15 +END + +IDD_DISPLAY_DIALOG DIALOG 0, 0, 205, 153 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Close",IDC_DD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 181,3,10,10 + CONTROL "Ok",IDC_DD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,49,135, + 50,14 + CONTROL "Cancel",IDC_DD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,106,135,50,14 + LISTBOX IDC_RENDERER_LIST,15,23,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_DISPLAY_LIST,113,24,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP + LISTBOX IDC_RESOLUTION_LIST,64,75,48,40,LBS_SORT | + LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | + WS_TABSTOP +END + +IDD_MESSAGEBOX DIALOGEX 0, 0, 276, 102 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "Close",IDC_MB_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 261,4,10,10 + CONTROL "Ok",IDC_MB_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,83,79, + 50,14 + CONTROL "Cancel",IDC_MB_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,141,79,50,14 + CTEXT "Légendes",IDC_CAPTION,0,10,275,8 + LTEXT "Texte",IDC_TEXT,0,35,275,31 + CONTROL 296,IDC_MB_ICON,"Static",SS_BITMAP,6,6,20,20, + WS_EX_TRANSPARENT +END + +IDD_DETAILSETTINGS_DIALOG DIALOG 0, 0, 133, 147 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "HighDetail",IDC_DSD_HIGH,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,90,50,14 + CONTROL "Cancel",IDC_DSD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,122,50,14 + CONTROL "MediumDetail",IDC_DSD_MEDIUM,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,63,50,14 + CONTROL "LowDetail",IDC_DSD_LOW,"Button",BS_OWNERDRAW | + WS_TABSTOP,37,33,50,14 + CONTROL "Close",IDC_DSD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 119,3,10,10 + LTEXT "Static",IDC_HEADERTEXT,9,14,114,8 + LTEXT "Static",IDC_LOWTEXT,7,51,114,8 + LTEXT "Static",IDC_MEDIUMTEXT,5,77,114,8 + LTEXT "Static",IDC_HIGHTEXT,4,108,114,8 +END + +IDD_CUSTOMIZE_DIALOG DIALOG 0, 0, 210, 162 +STYLE DS_SETFONT | WS_POPUP +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "OK",IDC_CD_OK,"Button",BS_OWNERDRAW | WS_TABSTOP,46,145, + 50,14 + CONTROL "Cancel",IDC_CD_CANCEL,"Button",BS_OWNERDRAW | + WS_TABSTOP,99,145,50,14 + CONTROL "Close",IDC_CD_CLOSE,"Button",BS_OWNERDRAW | WS_TABSTOP, + 195,5,10,10 + CONTROL "Mod01",IDC_CD_MOD_01,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,7,48,14 + CONTROL "Mod02",IDC_CD_MOD_02,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,26,48,14 + CONTROL "Mod03",IDC_CD_MOD_03,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,44,48,14 + CONTROL "Mod04",IDC_CD_MOD_04,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,63,48,14 + CONTROL "Mod05",IDC_CD_MOD_05,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,83,48,14 + CONTROL "Mod06",IDC_CD_MOD_06,"Button",BS_OWNERDRAW | WS_TABSTOP, + 25,102,48,14 + CONTROL "Mod07",IDC_CD_MOD_07,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,6,48,14 + CONTROL "Mod08",IDC_CD_MOD_08,"Button",BS_OWNERDRAW | WS_TABSTOP, + 114,25,48,14 + CONTROL "Mod09",IDC_CD_MOD_09,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,42,48,14 + CONTROL "Mod10",IDC_CD_MOD_10,"Button",BS_OWNERDRAW | WS_TABSTOP, + 112,62,48,14 + CONTROL "Previous",IDC_CD_PREVIOUS,"Button",BS_OWNERDRAW | + WS_TABSTOP,5,125,48,14 + CONTROL "Next",IDC_CD_NEXT,"Button",BS_OWNERDRAW | WS_TABSTOP, + 155,125,48,14 + CONTROL "Mod11",IDC_CD_MOD_11,"Button",BS_OWNERDRAW | WS_TABSTOP, + 111,82,48,14 + CONTROL "Mod12",IDC_CD_MOD_12,"Button",BS_OWNERDRAW | WS_TABSTOP, + 113,102,48,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Monolith Productions, Inc." + VALUE "FileDescription", "No One Lives Forever 2 Launcher" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "Launcher" + VALUE "LegalCopyright", "Copyright (C) 2002 Monolith Productions, Inc." + VALUE "OriginalFilename", "NOLF2.EXE" + VALUE "ProductName", "No One Lives Forever 2 Launcher Application" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_LAUNCHER_DIALOG, DIALOG + BEGIN + VERTGUIDE, 253 + END + + IDD_OPTIONS_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END + + IDD_DISPLAY_DIALOG, DIALOG + BEGIN + RIGHTMARGIN, 204 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// WAVE +// + +IDR_SELECT WAVE "..\\..\\snd\\Select.wav" +IDR_CLICK WAVE "..\\..\\snd\\Click.wav" +IDR_BUTTONDOWN WAVE "..\\..\\snd\\buttondown.wav" +IDR_TYPEBACK WAVE "..\\..\\snd\\TypeBack.wav" +IDR_INTRO WAVE "..\\..\\snd\\Intro.wav" +IDR_TYPE WAVE "..\\..\\snd\\type1.WAV" +IDR_TYPE2 WAVE "..\\..\\snd\\type2.WAV" +IDR_TYPE3 WAVE "..\\..\\snd\\type3.WAV" + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_WEBHAND CURSOR "..\\..\\WebHand.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APPNAME "No One Lives Forever 2" + IDS_DISPLAY_WARNING "Les options d'affichage disponibles sur votre ordinateur vont être listées. Cela peut prendre un peu de temps en fonction de votre matériel.\n\nSi rien n'est indiqué, vérifiez que DirectX est correctement installé." + IDS_OPTIONS_WARNING "Attention! Modifier les réglages des options avancées peut être à l'origine de dysfonctionnements du jeu plus graves qu'à l'origine, en fonction de la configuration de votre ordinateur." + IDS_REZBASE "GAME" + IDS_SETUPEXE "SETUP.EXE" + IDS_SERVEREXE "NOLF2Svr.EXE" + IDS_LANGUAGE "English" + IDS_INSERTCD2 "Veuillez retirer le CD 2 de No One Lives Forever de votre lecteur et replacer le CD 1 de No One Lives Forever." + IDS_INSERTCD "Veuillez insérer le CD 1 de No One Lives Forever 2 dans le lecteur." + IDS_CANTLAUNCHSETUP "ERREUR - impossible de lancer le programme d'installation. Vérifiez que le CD de No One Lives Forever 2 est dans le lecteur." + IDS_NORENS "Aucun périphérique de rendu détecté. Ce problème est généralement lié au fait que DirectX n'est pas installé. Vérifiez que DirectX est installé et recommencez." + IDS_HELP_DISABLESOUND "Cette option désactive tous les effets sonores." +END + +STRINGTABLE +BEGIN + IDS_HELP_DISABLEMUSIC "Cette option désactive l'utilisation de DirectMusic. Certaines cartes sons sont incompatibles avec DirectMusic. N'utiliser qu'en cas de problème." + IDS_HELP_DISABLEMOVIES "Cette option permet de ne pas voir les films logo et d'introduction." + IDS_HELP_DISABLEFOG "Cette option désactive le brouillard atmosphérique (pas le clipping). Vous ne devriez pas voir de changements en termes de performances, mais cela peut aider sur des cartes graphiques qui gèrent " + IDS_HELP_DISABLEJOYSTICKS + "Cela désactive tous les joysticks et gamepads. Utilisez cette option si votre joystick pose des problèmes au lancement du jeu." + IDS_HELP_DISABLETRIPLEBUFFERING + "Cette option désactive une fonction de certaines cartes graphiques qui peut améliorer les performances, mais utilise pour cela plus de mémoire. La plupart des cartes graphiques AGP bénéficient de cette fonction. Mais cela peut engendrer des blocages avec certaines cartes graphiques PCI." + IDS_HELP_DISABLEHARDWARECURSOR + "Cette option désactive l'utilisation du curseur matériel. Certaines cartes anciennes ne sont pas compatibles avec le curseur matériel." + IDS_HELP_RESTOREDEFAULTS + "Cette option permet de reconfigurer tous les paramètres à leur valeur par défaut. Cela comprend la configuration des touches, du niveau de détail et des options sonores. Cela peut être utile si vous avez modifié différentes choses mais voulez revenir aux paramètres originaux." + IDS_HELP_ALWAYSSPECIFY "Uniquement pour les utilisateurs avancés." + IDS_CANTFINDREZFILE "ERREUR - impossible de trouver le fichier Game.rez. Vérifiez que NOLF 2 est correctement installé et que le CD 1 de No One Lives Forever 2 est dans votre lecteur." + IDS_CANTLAUNCHCLIENTEXE "ERREUR - impossible de lancer LITHTECH.EXE. Vérifiez que No One Lives Forever 2 est correctement installé." + IDS_DETAIL_HEADER "Pour profiter pleinement de No One Lives Forever 2, choisissez le réglage de performances que vous souhaitez utiliser. Vous pouvez changer ce réglage depuis les menus de No One Lives Forever 2." + IDS_DETAIL_LOW "Des détails faibles offrent les meilleures performances au sacrifice de la qualité visuelle. Configuration recommandée: PIII 500 MHz, 128 Mo de Ram, GeForce 1 32 Mo ou équivalent." + IDS_DETAIL_MEDIUM "Des détails moyens offrent un bon compromis entre performances et qualité graphique. Configuration recommandée: PIII 1 GHz, 256 Mo de Ram, GeForce 3 64 Mo ou équivalent." + IDS_DETAIL_HIGH "Des détails élevés offrent une meilleure qualité visuelle, mais les performances du jeu peuvent s'en ressentir sur les ordinateurs les plus lents. Configuration recommandée: P4 2 GHz, 256 Mo de Ram, GeForce 4 Ti 128 Mo ou équivalent." + IDS_CANTLAUNCHSERVER "ERREUR - impossible de lancer le serveur dédié. Vérifiez que No One Lives Forever 2 est correctement installé et recommencez." +END + +STRINGTABLE +BEGIN + IDS_DEBUG_INSTALLSUCCESS + "No One Lives Forever 2 a été installé avec succès!" + IDS_DEBUG_UNINSTALLSUCCESS + "No One Livers Forever 2 a été désinstallé avec succès!" + IDS_LAUNCHBROWSERERROR "ERREUR - impossible de lancer un navigateur web!" + IDS_HELP_DEFAULT "Placez le curseur sur une option pour obtenir de l'aide." + IDS_HELP_DISABLEHARDWARESOUND + "Cela va désactiver l'utilisation de DirectSound 3D pour la gestion du matériel sonore." + IDS_HELP_DISABLESOUNDFILTERS + "Cette option désactive l'utilisation des effets de filtrage des sons dans le jeu." + IDS_OD_DISABLEHARDWARESOUND "Désactiver le son matériel" + IDS_OD_DISABLESOUNDFILTERS "Désactiver filtres sonores" + IDS_CANTOPENCOMMANDFILE "ERREUR - impossible d'ouvrir le fichier launchcmds.txt en écriture. Vérifiez que ce fichier n'est pas protégé en écriture et recommencez." + IDS_LITHTECHWEBPAGE "http://www.lithtech.com" + IDS_SIERRAWEBPAGE "http://www.sierra.com" + IDS_NOCUSTOMDIR "ERROR - Unable to find any custom directories." +END + +STRINGTABLE +BEGIN + IDS_APPVERSION "1.0" + IDS_CANTUNINSTALL "ERREUR - impossible de désinstaller le jeu. Si No One Lives Forever 2 est toujours installé, essayez d'utilisez Ajout/Suppression de programmes. Pour réinstaller le jeu, lancez Setup.exe depuis le CD 1 de No One Lives Forever 2." + IDS_COMPANYWEBPAGE "http://www.lith.com" + IDS_CANTOPENAVI "ERREUR - impossible d'ouvrir un fichier .avi" + IDS_PUBLISHERWEBPAGE "http://www.foxinteractive.com" + IDS_OD_DISABLESOUND "Désactiver son" + IDS_OD_DISABLEMUSIC "Désactiver musique" + IDS_OD_DISABLEMOVIES "Désactiver films" + IDS_APPNAME_DEMO "No One Lives Forever 2 (Démo officielle)" + IDS_OD_DISABLEJOYSTICKS "Désactiver joysticks" + IDS_OD_DISABLETRIPLEBUFFERING "Désactiver triple tampon" + IDS_OD_DISABLEHARDWARECURSOR "Désactiver le curseur matériel" + IDS_OD_RESTOREDEFAULTS "Par défaut" + IDS_OD_ALWAYSSPECIFY "Ajouter toujours les arguments de ligne de commande dans le jeu" + IDS_DEBUG_REGCREATEERROR + "ERREUR - impossible de créer la clé de registre de No One Lives Forever 2!" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "..\..\Launcher.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Jack/Launcher/RES/Lang/FR/bmp/CancelD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/CancelD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..edc37384e27b1c27bfe79eef942a01ccac67c726 GIT binary patch literal 9056 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 E1>HK}%>V!Z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/CancelU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/CancelU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0ad4d7fb294fe85138cd2574a6c7b5ef3e5c252f GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/Company2WebD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/Company2WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..23b028a8dbef723c71fb6ba91cbfff23441b84d9 GIT binary patch literal 3252 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/Company2WebF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/Company2WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88108d5c184ba4ae4fc93a845eb03ab0d43bd841 GIT binary patch literal 3252 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

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG zGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoT zlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EP zh$SE=WA$6L1PGK1$jNduBM1TeSoTlncno zax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE= zWA$6L1PGK1$jNduBM1TeSoTlncnoax)_c z5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L z1PGK1$jNduBM1TeSoTlncnoax)_c5Qrrp zCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1 z$jNduBM1TeSoTlncnoax)_c5QrrpCu8+n zwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNdu zBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&1 z3&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1 zTeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/CustomD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/CustomD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..390c83cf4cabb2a3842ea655887536fb1c5924c8 GIT binary patch literal 9056 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 S=_$4U`}XzU|9?L^bodWFQLnB5 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/CustomF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/CustomF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27167046617ffea967e5e47869e014a34e6452ac GIT binary patch literal 9056 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 I_aiFmJNV8L4*&oF literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/CustomX.bmp b/Jack/Launcher/RES/Lang/FR/bmp/CustomX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..97d1870e80c36c48057c0074ed900c570ad9845d GIT binary patch literal 9056 zcmd^_`&Sc36vyd5&>yT}XA`o!+3XS!D1xXxwWxShl!}6gAU-M*AD|QwpIGsQSQUF( zs-pFQP<-%^)2g+$R@*97DXm(MSYtgZ_Al@!f27~d)H&l4lE}ffC(W7cnatdox%1h3 z@6OC-T>5-xnD;XR*C>45_)7S`7DjNTpDVA2g&E)HpRy-CeWjwC&$5m_9=oPJKC7N6 zONlg>NO?q>6*@_tWz!3sBR9ln9UZ&&a?+khgW8@Ay42HG@(HTo^3w@hevKNxhe-2? zG@D4dM4Cw=vW#S(9!g1+GL2+6u9%&W{E?-!^Nq%*K5>~@b@!z2@kCGjj7amnh6GTs zC2CH2M5g%=y2`o4J_C1Ov}cI+siK6GDWud4-gs}&MYDnNtcq?uODVrfraX%AhY^a7o4rppuvWAj%89 zpcW9>Ehw7>b+4cu74#F~T64J860Ws|T*9Q91^u|7)d^}1ajYZK48y?e=`b)${skV_ z->kZO#+7$i)nZX86lJ%lt|DrU;QZV`q=Qde=qJ5Z(3%8iy`WYTxsbXfeABX|ojD_A zHFfWOn{%aAEirJZn}~K$&`~D z)aG1n(<_K}*lSLwLf@8nN-VFRG7Jp3{XXT(~uKQ`%2oJ8iBbK{_CR(~;*58`}2PlTCqUsDP;u{ZLkz zHD3jjqruSsprwazqB(2WTL%i0SC!owznNxiSd6m*IY&s`96#zn!rQfPj;yh{8oX=r z0Kp2HGnJ6>dDAgEuN8cUw+e=ZFGN=~R`Z2)%IGcNptMh>*nqLpTLiV%dw?*DXoZQ% zhewV(l9YVV9*tFc;3c~0zSEn6XoGT=OsptRHW6f4E54A5@vM-ilBnV(`zmBI1I9{g z6`Wv|Z$x;l=&fn3V^W)vQ;#XJjY1IH8B-vl(?PU>dNk4Sjy%)6FIJc`lR*Z41pDDx zA#kA|6#5(#@~k-|`QGpow~rS8D~?copB96 zChFKA2k=1%Acim{duM2r4w99rE41QS(atGqlcZ@}I;g48|Ic7%iv138?!qwwaD~5n zY+}W&^qlhw2MoMsFnI*865<98J3+ECk@3UI|Dbfq;h!h3CnN*2!kWR^ zAUZaPiW|wY~^Fz}-K*3+A4neZQ9Qg_QVHM1v zSg!Qeir0kIQd&Ac$Knm}u$;?0zAGxh_BpCjSH@?w-k;?<`z?x4hD`YNIDTw>^5qDO^!4T!)k)yNttx$h8sL%J8BN(-|^w;oZdK4Yy0y zc`B+r>#IEOlDltD_*xs$e#$ndiPSa@<)wBC!Bd z;*N(KFffDkw0ljy{q5tEuMoBm*~M}w6QR$d#!lX1$9-=`FH7O(NZ z#^91bH+Mga@BF~fJOX)Qw8Z^6E!f9{X4 zF)UMOHvXBp!!vj5gZWGExZm%Zv$!*N!L`sxIr&$!=KVM!`&`1*Hb?Ghaao6DXZIU^ J|N9XZ_80KgU3vfj literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/DemoMainAppBackground.bmp b/Jack/Launcher/RES/Lang/FR/bmp/DemoMainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7dc135fc68165f509627aed495782050b9d71ae GIT binary patch literal 386176 zcmeEv1wdTK^M5=z91Z~jA-KD{ySp9k?hc0^?(XgmK@$Q54G_ZuNk{^5cfJ1}M`@aG z`fa~$nzp|`ubbC>^JaJ7%`NkJJ2N{ctrl_n@IK_h5B@QNf7l21?Ry3OzkeSoIHQhH zoPGO{|9(2W=kH;MkM479+ADh!*ptAX1okAbCxLHB;OvLbgImvZdKdS~o&@$JuqS~% z3G7MWO9^QAE+S!L>>~mk=RWO~JqhedU{3;j64;Z#FC+jk;}$ z(aQ+B(a$I&lg_DMt|x#{u%kQnc@*xIJqhedU{3;j68QgF0<34>k8dw2zFtr4;spLM zVz2B;U{3~gg6(k0uP(2tZa~jQ#&kTEVE#$sPb%H zSzl&Re@=OCRz+<>jX{3)L-amSvu9VHq>`>Wa#ne@YC^; z7w1Obo;&w(;@qdv2}J)nMDHk~dlb=m_H*;;ceVX5%Ud7hR^AQGzhxXTFJafrsu)Sk zphZ9|goDL#u-Q!(CN~7`ys`^%@t|4wdD?NYzH|N#g&Hw9r!{u+l!><1F+W2geJ?Lxb;BTxO>+V<{6kZ(`JCKq!UQjk(STUSiHk4o4 zn^WGLT96Tusv&QPMtYp!I5|Dl@q?5+^g#u?{d`q1o_;8A6YFOc5a1CW!X@iNU8cXJ4Nm|1dlL zX?pDA>opPoi;SiZ?%B_!+*Xe1O%rO( z;%cAA)Se-b@8gQQw+bS|h_e}7z zc8zch%nwiR$ZMSHoq2HmCE^(ZcK+4h4gU7lwpa1t+#g#SdlVjun*;=au$k7BwYhSHz~~ z!7}|FLqz4(xCA-qNQu!;@Q7x%{+dG6IlZB53G=cF^l**zaf$MB3-j_0_w|hp2ucZy z$c;~^Ov`L7%pNE&9IdT9-&nuY+_K)*wb|MGu)Y6z$KdPkGaq}#5WV9Fa0aD&{A2T( z4-Kag)u$0Tou4DiUpOUgYI!XR8VpklmJywdgpinHqlu$oa38_u#)R5V$=ax^IOywmni=`qKto*|qP^VUK|y&D5oK|)wefKc@VJ)rlqT-pN z(z(*g%jGp!E9$OQH{5J$y3^FSRo{50w*6&Z67Gc4cz>dSm`TkWGlct#?Lna(7|#bjQTv8SIG)CY4^ZzsePMm1IxrY;b2(c%DKPUmpvq*!(uA2Do755vToy#VxL(uH(!vsx0usI5gP_KS%v7{TxfC?|R(`E#)s973 zqi{3h0A1@aL(^~_^B^7DPy_oYLr1uod!}7rscU3?D7+t*HX4_6KE7}%t^}BO?!apw z2Gl$WsD0{R``o|obwI(n@QrTVmay9e2Au(Nkp?`LVl1j; zEMi}5d;?q@i6hv2NALs)D5R+wR2f(`xde=46dhHS?X^@L4Rk#%OoQ$1Vm&<4{QPnP zL(9Wq^--~{v2pEj@m;B@L)p3Kip#DPmtQHZTrR6xDX+d-Rkv1Mw^3Wa)zY%n+`QS? z@}RoyRbl;0--2hlQ5)O0Na1zWGQJXmyFas5Eg z#K73f)TMh_=?!k?K5-tfn&h(a#*yXGtGAY)zIgPxViiF<{9z9#{@~x3lbx_FQ>YcV=E=VtP$dT5d{a zVPs}%06f7f)KuG!FQVFI?N{}qOzk{}tcRe2E2D-Fn}Q#MoX<%We+JcH1~nLq4xGm% zTiB{Z!meK0xlP7nK+1be+;>(Y;F5UIDtEwDu7InY{_7n6*Vz4Uum)_f`fjkgt+TkS zu{f-&uK7=v}o5%uT3i_LxR%^LZVL4TSl?Moo6v zP-0YW2COA6b~q<{s=R8fxU3^Rt2H&dIVUeWJEu0GAm0a`?+XtLDmLrA_FvSWP~jv6 zr!^_BwP9uW&imyE?zOe57OAl0cPGiW3==^`{6!Z91evY5rT zyhsLJCAV5TW__K^`UaupH9Yfm9HVtSt?T&eSBX>>$rUb=OH7gQj}UWr60=tjoG2gw zI6>@&My7?$Bty=oLCvDaz-`DSY|1ZcEFx|srvOz}a!^rm(a`kO(ht=#j8->{Q`V1F z&`nY^&d@T?)v+ivuquN(*V}t_It2{*!p0+$=iphFGx8S;N>_8MZl_k?&#Bq0Y`t64 z_Mouwes1H_l={t-`rBcZcXcB!a4A+WST#DYd@$&JCR=z{wda-Vwa@=WEI;@baIkCT z&WE|Cw8zI?s4H3N8d(}&UR`=|=Qg6h`CPb_PpTKJHM{Y0@7&GFjmPV+o5b zc3eSjQe$dnZ(>1ZN=Z&qQGRrOiceCEdwf_(c4&TQ{J@1@Q+$jOt%U5RWbDQS0*+`L zu2>vS`26k=L0?>vP+ZYCJjrxIxqLkJGKf|Ufo=;#zX#7?2;X>&$b5zpx=3ZYOl7q~ z3B7vEY?aJpnZ$63SZ9?)eVJTwiAwhJafvAkp+Q3K4jk56Lb?Ld<1q5$4#!yx7)3PL z#B?}B^*Ke2dBn~5#Vz?IYy>52Y51L}_+6;@Jt%lR$#}d;dHl)vLU6ew2nA!w#gZr` z(x@e~Ps-)fE0xn~x3U`ba+{CvK*#v4rbV5uD0nUD_$^pPT#hW*ENpsQ-gLL3;d*() z-MpGdc{LAG3a;oo7IJ&l8J~NunX;+ma6!&-P9x=p@u}ywmp=mN{WanI7`pxZ6Qi82 z_)vIH68utq$;Qag*8KX`(&n2dpYGpyUYt@E9!H;_mUc(Avc|*u$&_|zd~-lc+7m6+-w^ujoZRQ+HgI&>a=k9u%}1mCL!V-}lt{Z}M*gh%y^{te1Dj$3L+=EPOmaXQjJm zb9Ujy#^aCA-hX_J7#)~S4o|B{DW7VZx-fEed3oc-^*e}rAFkd-aGw4bc(74#T6^n> zz4gSN1pWsJ0I#*mrSJCkYP@*j;CBlpx#EP)k~;zhSXr{nCUzzbd}U%l?=K@YOzjYx=v)g zj&Hb(r9F?Qu>es#k0(725$`9G?7-)3!lf@IXG>xd3Ko#@5tMb~7IR<`v0@Ompye^6 zU^66R)F)#yIL2&rg438;(2`rqU05YpRwqH(G*i>Ez{I5->Q!s&*J2;g;S|*E7B=7> zdD=N(P*68Wdv0YR!xEnvI0a zPT!zhC96Vl-xc++mul{JmCdfmsE>&%_X}waiJG4iDqnHC_M<~)otIwg4{d}7=EV6W zmIlBE;K>WME!WP>-@mf;@!>nf8^q&#Z%%cNcGUEZc1)gcnYc7Ox3swU@!kW(BLsZ@ z6VcG;ziz$zeS6-+iT^=Id|%P;_4com0PPq;>&kZn3Do+)dF_K?=Xyw3S-Mwrice5d zP-J>oTtNt|AUrNBI6BTVB+Mls(mOQ87akv0XFm22_;1~>eKHulZyVBL;#AI}o_vVb z5QE78!f8st4uvpT5^&iN2{;i7c@YQ)J+pi(HS z50}*rP7WCYf?7~hwlCFF*?jlNFQkwpX>TVi(K1LRi zP={nkk9?1SD!;I%$e5;>gpS12Qz;pP>6vG;a>jBCrgBSW3n~_htCvda)=TPd7T4V> zt=}wdypvmdC!zR`Z^kXN@Ff|CbKE9FqIM&;u<3xvHh*96%08>-|5(U+Q^0yd$ojgl z?KL5XHBPHbCk)4B8*aP(D7UuF{0p7BS;e6A2(RFlh={sGSW{YjXJNruThIE`%8Og? zK0ZNwdWpEd_3HGQ3yqDZ>ni&iih8wtr$00z6MnX=#`PV)FKk$KBClMwqe+fvSphCZY6&4U*;2)M17MtN8n;irX za}08^^l-QH4|R)-afym|iFC8{l~QpQQt}g(@Rtzq5SQ>2m+@fYg+iDOa2fQ8Pa0CN zL2FIVX`P?zp5W_%_jbqNBULgm{A@33UTE~9#Ic=VK-J0 zPf-~k1r>i~jUXkB0C{yUWo>T_Lw_y900XlyQ`-b<=L{#WV$Yyj|A^M0nD(%Q-ssff z`1BEY=6G_>bXxvwX7OxZ#pQyk)%>cp+^QP|HFqi+w;Eb+l{enXsk)U?aTiv&Cx^JvnJzlPr&vTzwLEa<4bhY9OLR!0*md+%IhvF8mg(E>>gU0x_p2A!KW9W5g!pRAH6$s`eJcKcX>@;OY`X1 zz~aW@-3JffpSgvwn)|>u`ELS=?~fD0X}xR_rCf2fym75;k+p1*l^iiO0!htmuqs}7 z6K_HzeMm89Y#lGWkukIsNsMn~gHs7jvXF0z(;zot;A2H&5W8=pB>H#t^|Difo%6QecfMr*(s z)IsIk*U>@J@3f1#Y=i6g}uC|HDaewX>)!Q~@x3{Tt zwO20on~iJ|f2X$$Nbl<-!s_5B3J-HhLpq=SnxOXRzefTbQ-37>^_y3J0z#gxpXHzpWniKqvmGe&Q>`q<031uk@22nx#H*%zhD2`ZB8aX?)|I$f`xV zm>yY!G#=4FA&C$f^=MhW7rexW2m{L)W1B=1`!oxu zJR6U4N8dVo-+Jf37LV{QA6TDX)KFl|NEm!PHhU_u;6ifI61-qJv2Z=3@=k8`R!QB> z%9e+D_4kv@@5Yzjk1o3FkakbOdx=fCSy-mf)~VmZfANITJhSPNu=7n(=Nnw+3tal+ z5~h>N&KEp?^4$EIg#SF()r^{Vu8*Zxs*`h3Xjn^5#YoM-OikzNz|_Obx8H5O z{`~AC;>{<-JH(wEFM4{X%WC@Snnotht>4{v`|0858+Q@D3vZEu(W?kBseaGg`-kv+ zXS7?>DHPV}Qk(T*J5uA^aLVt|4T z8laH6_!4f>MNlAJ z&vuAy4{`F(BRPvM;17KQL?m0u<*(RqOBcb4XSZ`u*?lV9@@4#gm~)SF3IV_XI8^xL``bcr=kuWNwGiwlY7?HD@ zU@;it&}b7M*TJPWLZdW5KW<3IX3ipF&njonrtB!7BC6D+Umi{h!KCy{YbhQPuY- zuYTDp^_-|}J(GMIpJKL}VX?Vgk+CJ*)I7i(>ThfwtY;CfV-c%qnWSNvqG*(&V3aOz zoF!q9BdC+jubs=UTPUDgEUaHHY*a05Tq|PQC=P9xw&_-I?oo8zqf4BjXw_q|Gfvj;Twj2`5sn&p)O&GfeCrBnT@#>XBvCv`bMu!FFaUV zfBoq0=Ql4A9}tMw2;io^w)mju^ri087w5(nU)+9#K)fBj_s;GM=N6b$U}}B&SMX1+ ze`lOf^^Hr2g6nCh%gf4~85x?G7_+mpCLtoIsw_K6OT)v%`Q+(CHFXtw+7p{w8@ag| zCr=#D%t*O;@Zf-knhMafp&-P=)tQ`_sJgO@lZ{1GNbv5~hLN!WAp~-H zW;z)Tr#5h={uP`M9C|uBbB2!-`Fr61qGSKQ{ndq0%9H=?-5)Ek5)0OfoKHiaG2OE< zz4Gz<--Ao+#C|kwH=v+F9k2GrQ8jx&0d-98LX-qB+%l1^h7q8LeFqQiJ9PK}*@<2K z4(RAs(J1=9!$%K5NcQ6q9X!Fd%YYSHx6_J%9Mb*>@Z%OP>_@`{%=?d`<7AAXI>*VL z+ z=J=$()Xe^zyphtf^Yt}LZH+fhwcQ)+e$qYgY~bvhp>v-G#yYeV5GW=XP!Nuqj* zLfT2ZYRNomDICfv404IbCE_W>;m5?1AcE-xqS-_e`GgXM1d_!hGL>WswG>JX$CMi> zRobZ3yN+x3(dZ4a7>`KVPHOmEwu{~H%eWJgwHcCmBRKU|2>gm`Xt$b6lXk>)38xKi z%{i68=h8v1_?+%a*xr`5xyoWaqt^E5ziatFa~Fh`nGW7o^T~I#4fM3~P7F@2&8=-O zZRx6PpXeM}ow)LF@!9LGcORaAeE;&phgYB9KSw;;d^J0B>CD8%t84e4-+c{`p|z=^qJ*B2 zE-fvcgOfcH7MhfpoS2-##LUz`*q4}=$^`YM>Dc<_CuARdIW#xHNJj}&Bv8KKzpsy7 z%Km)^_V3^2H~?z<_Z>uX?{FO0hrC2x975hiT_7u8wEKyBdl=Bi0Tk!Z>3#nlz4}m&P>X}1y+-SO< zV4VT9^FazaG%Z)$iWQ*8!Egtu7=a}Uuz__0Qk8EX*a@e01qhlTkpLX~4`3$^LfRgJ zvb#pXYq*V6_o!BJ-JlhA$}s8@D0eUlsvodw0q}#OqmT(F>)a08!9!sEfnoy?0!G1# zYTF$h!!7~Eb^xCg(*0tW{`XdX7)YSBm}>8`1vD_u$SK0vALf-A?UNPmmJ#TX?&px< zX_;gNO_MN7!{oEw$6!RlWAP zeWZ_PN_cP)Jf>$GZ>%c)gM$d?l$%4a|-RY^er)VNHMUAQ#4DJFv=Fu z&)`%~WmHI_mPw$JPBKrWU@CJHAON+1w|6N@I3N@Nm>7m!GokjYh&$X5}|)siUI zlPk9zQ|KaB>?D!zB9!kYknh2l?ZyK`V7rw6x9)({~NF zbMUhAN)AhFC~R&jZfhuNJ=-z9K6mT!HN>ke#QVpeKfnC^;l;;$H($(OSR0<1+PZlc z7@z=1T-iiKTz>8KtsNf!7O42nIH4VyM01jv;yB}plPny3!Zh@(Cr)xOG4W_=>GJc6 zkPsc0l~!b6V8z2F5E2k(pl3LE_%Jac0S61yk%Qnk#KFcQDJl%X!4ekY6%ynlBqX4x zWgsIy#wQ?%jZehQCr(azoQ;QrOHhEzF^s13+x`jW!B_qB)2vKLg>?`pr2PjDA3lVM ziHVJYh7F8OM}d~ykAZds*pUt%I<&3(_n~8;;b3AMIRvl(sjqj{~ICK-FSJHUscD#4e6od38TF1T_$N*+;6~q0fg{MYf-4AG&Gq&x&~H z(;-Iw9lCYQ&-CpP!Q~Ng9n@VkeIIa%9oLPz+>eQiT4A7?996PH(T_+QBH7@5J8T%( zkd~kG>;pGD7;YDb0O0+^h68DTjOyy|Jp-G-k6B6VDl(V#4;m>Q5zeqMw-5jlasIh5 z&+H(_3?xoK6RmA>rQPaqqyzUcL5W!H$mp!_7_6{4t+2T*kFr=|GFg!@TeI@oD=P)q z7<;)|diy#>gn6gLh8Cp8*5;(NXBBqkR}7TZk5{+O*LN*7_uuFo-WnZyK63W?*!b(o z*^g6mpU%yE8XW&z(E8ag>9(Qgw7lIJVT)lAn+bjIS~ zE(N=81&3Z$mtk$s8BO;Yb+;K6msw@!StaLbQTq#Y#uq8nMhIm(DC9dh^-oLM&l&s8 zLA`n{Jlb6o*X8{-skATgTivoq_@o)}R@m;QhWBG-zq^W!_dS34p1v#6KVLCEb4S~? z0H*7iZtoW2=@{S?m=Kg)mR?g=)X`c!I5Tqf&W(339wDQf5KrEGxPABS#@34)_nzK< z`1HlA7jF?apCAUWy!Bl8;Qi~nGQl+a=Nq8DGft=lC6mze^JqA*YrC-<`3u`6NV?>R zdld0|Wr;-;N+(wEM&^ho7fPiUaz!U{$0rIWXK_a*F$6`jM#gi(VuXT17`2?~XZNq6ge=^qpq{~p6g>UHD$n05W zhT}l>fVX#W*jgDqygBva-Y5dGSds?=Z}T}B!K?H2@-jObv!Og{d9F%9K@6p>fZ?mT zHu=i=CYs|E>M9B^?~la6JW#i+Ec9M(^#%Hvqb{i^$zMNOc=c!j@nOBYv+B@6wi05cJIc?Y`q5Q{MA6S%Lj!W(eQmi8ar!KxjD6)-Uw2ciZ& z#3uHoGXMYpiVoWTr;f(-Ek@l1D;01TJEn8z@;K9%mLg2QQWX6FF(rU5@SMAske-*j z-QpI^13Gqm4~l}chHW2U)q>abZMV~I+aFK?KE@y5llV_9Wu^4egrTH~PEx5)ndcqgI6BhzfXWSCT47^()vVV*XtS5<_qfyh#d@! zKNAptHUK^zk~|H|xEzswB{E|vB4ar$eI+z~**$SXC+Lo}{Y7T20dko(63G@~sdfg{ zMoyJ{P5XA|#4Rb$O(v6N8K;}jxQ_;~cXBRw6&-K$J1wjBKKV~ceiw@Q%p(o&f-p1x zcw3K9HxGaRfTXbG?6~~;;*Q?diGi+*lcTrSSKhvU_Ws?I*KfD(zq+yc>i)AAFF!ti zhFIS~WG%gNyz<&^<->2L6#`gi6MORN9(U z(S=OimD13Q8XC;z9xWJ}Djb_Bo|+?_T_RanE>d2~TUjnrSEJF=E)rVFX_hB$QzT}V zBw!H6qUuB?VM)xRkINxN#wB^2PmxYgo}QbZ+bQ_OudF9n244=$Pq8u60L^m%Y2X1k zq5t6K*y&TH1zDk{Myi0Emmab@-zX=u0}M@-aaR|r6=ZiVv9Ylls*^9x)RU1BE67T| zymLAM=7LgW)=<3{n>~TvW~fVQDvEcnS4M{_QW65~ZOslGI6zKLHh8M@>ecgE>9CH* z^j8mN1^9RXb8Ah~!gx6)1-Xor@cPBt$k1(^_-XwC7ziMEEj1~>VR!loCxEU5-sXeH zP9CJ?z)2qky7dr;1n2}TEP!R{h?q90A610nDU0E0SHm+mLUT4fGaq0u?6y8PH=J*li!w;T+iN5!&Jt(HzF{7;EM+sxsCAlHx(`RR4x2Yc$$r2xYD?7Nny|w)b&pjo zpSwE2&vgTy%i69nLud6T-h40Nf7y>|-Au_;B^%ll3PzZ@-_o`>A;CQ^?#ayV+MB*Zzlne_+aiiTC4Y z`|lj_JL80Q5ZuHnG`)N@G_BJzs8-vn%qqFgHmAlCUSbUXefw-Ib+@h!*jX8%R2w)KWJO%P*eWX{ zj-oVFC9KZZD9R$27XVm5TvUBk^734*l7f_zz1ic9uJ{Ni6z4WhbO-xbpe`vX$q}D# zW~adjiO5itkdUCyh<6fFNUaTGpMnG2AoxhjPb*lU%v38WO4?f+T)R{c3qy8@v}7Th zAx{LjI8BvFzaJ;S7mU|@_YkunXp3$Z3c{R#a{|;4QnLU^II3U)T+_SOAutZgjR9JL zIH&^z@vzEk2l1VnMU&w! z@ED)$NYCs*#|&Tl3?G{`Tay$+n-XF3Gz>vIY%X(BE>m(oQ%W8vIja>OBNUg#78|+F zu%wf6mr`|8(QsGO3s5tPR5poMgr+Fl`IIIRZtWR^APx4q! z@mWs^+0Q8ZEtw}h2q=A<+xj}K;dylF?ZE66&(sUf@e^ht=X8DNq^(Y$l&hhTETT~< zVza1{v8mN`Xf*NevJU984?g7*-tQGX>G6;5^p9)}jBE;uZ1Run4vim( zN*RmEn2O6fAD6R`kbgO;>}pEIdP?PubVmA4ZrZl#ysE-bs9UVJw)`@VhjZB6g1 zBGwmaH9ANo3e?=rYx-X2vA81PxTfiHSqOST!TFYXz$;~k+oFjZ&TD^3)>zlzG8fYT ze@llD8>qjfWu$XxespD3dRa$h*YwckrP=!nQxC=_?oG`-xp(o|t)+L}^RM%!9{Wx` zwFmy{>wn~tz{CU7??=w|-#^xO#tF^994VDBE59*ayB^1YS=Z2Mm)LUwH5YOg?w)@9 ze){gavd*RA_M0Bbvs#g3#+maLSqolm*Sv<89wIP;d`EKXZPJnSmOpo^36>&&tZ+ z_SGIwmmTE}=y?Dq7MkVdb`}tgRq$(<+T~?LQB6SLYE^mSliS0~=bKj-8Xj-<#lc*` zEpS+x>%F=&=;vXCx;%D_^!3w=x7N>IUml`7MgoYrIf;uG&XADqzy^v9oSUkX@2&L! zTh`KC?d|2Js8A$MY+J>4TofRtwy`4df5HjyH3Ox8L{cAgb(m8U1hZn;#vw=Cf8dCe z0ayWGIHw{n!EyNLm+$FERcugXu;%!3t{mo9LebF-e7~fl>S+4jsJpILzj)Y>`B(>um5yfixdRB7$v)biTGqpRZ&HfEmAUw$yYa(`p)QSs@AmJ9Fx z{Ged^fl2sdX8Zp%%6G;IouD)>9z%8QcmYvwAt_%aWtggBlB#Z=b!fLetTiU5KQrfa zW=dy%-f6pldQ;zKbDuUd-x`~+2B+|@pp=QIvPHZ2GbX{k2A+-fzE#QLEkU;Fi6JFH zzWH|URZgKDUf#{gAsvA(a3QBynvS3SqF;VyromTzz>mFccR~S$qrLIH>%$(dP^8Y< zzYlC^C@qR!yU;8vBYODoVSETqXJhK>r6xTcIk3@T|NaBil*ihda&KSl_xH6=NeFm; z=S+N*J5c8kJRCO{=<9nUF=0*w1o*)7&Om?SB9IP`ZJa|;69X!sov$8@uEqZrH z{E-!q;P1QVZu(=2!|?Q-5c>$2S1QaaJ=8TVz%k9!D#^|`-dI0TS|Ny($rz8(5EKZ5 zJ`s~SA)^&OlNBzbB`A2TwnRKGi+kQrx8u35#{ZlBJ&=r_=5yW=UI)0=yZB$b-EY~`gx%J zGPbAGT>GH`LmpA5!xPWMrw%7(jV6GSaXLPIFfMf~~8Dz4{O+{!P%l~uMGUvw{~ z@P1InZQsO|kfh7r!9#Yw9i~3x($GuHIu}{ZmPD-AMRnJij2HL~FUadI3)!vfp8XEm z`I}#p-ONMPx_MRKGz(|H@bKu2$fPEC@#XQAwY690FTNTZyffE-Xa3xyOP5|O-OeP^7|4NB5iu?x0IG?I4Ikh3sSws%x^byV@NR`;_|4{$Y( zXv*v?PilzpO*7E5<>L?+Vw2!J!NWkwcAT7ujH$k=${4`et=mt*~1ZZP&MPf^+c2@Z32TMrxE&1Lsq%xrk4f0(>1& zl%dWX1Y-Ho%@HwCK{;887h7jOJQ;m`w-@nYx~(yr07CHO&IAInetoH*nubzGT?O&s zVp6;p9t8i!QZM4uBI4Z&0`cJeyGJMK>B@>z5HHSucszl4HQm#a2K*CXh}8H11Y!&E zc@6RD+T9zY65{;SWYn)8&E8%grlCEdt|I^L$wEd_2;khoiS1PnJ|5n0$Ho5A!t>=9 zjBbkT5F8*<7Q-Rw;7Lxrn(MpkgF_6wU+z~x#<^}|3EpxZBbeoP&t3jdB-V85w%em~Lv^6LPb;BXIkxL0b3 zOR}G1va3~svq^%7ah8rsBpoZ1n9-Pk*#yF91Yt12r#FW%L2;QZ@R%*}Iqit}T)1UD zlym~k%;Q`@Os!`@L|9FHaz|FtNPgL5arJyv(`sYqW^3Q0&cWvcW6yfW-ZTw<%x!!f zkao|=dr`z}l3MpHy}?;di!l+0F-5Ow-O!7!iI-rR^RUd>xXg*ftdaEWq3rB|tepOg z?EbXOzLbnp$r*hqnSIF_{jpgik?A9$DQ5x`Py5E6c83i+g$`N-51IuHnFS4-g^pRm zrflODToW$_B`$=dTnbHFicG%>%UF-fxE7YN8I=7bIQNNf+E!rlT1@JNi102e&rTiB z3-Y!bBG$k^u_f#LK-S_hyXg|I{sn%`IX?e&hvmO8U5ER%k7_kDQcyn!C%@#Nxc;2_ zJBtslEI#ZTzka%JZGH5?{khj$m)^CEzq6iu@%z8u-{b^S5lqM*GxLAvDBl?;w1W~= zC5-&dVa_`Kt|kG_TAo4X{=UW@rn2Vda+dD;ZjPEZa(prnbbMSiEEXzyQC1!i4nFpi zOq4{V*hesN&~Qizj`4!*VtUqL*1q=IHX$~i#+qiT@@9tW&h9QLNdxLDO^wY8|DZ0p*Bm67@y&qn zr=M>D`gXV!XaY=FKhu92_lWe4!3``Fz+L3Vy6t!>;MhQItV1;c8~sop4Q1B?es2)1 z3n;*I{*_q?!zKLy9x-yC2QDG1$(JsZ|9pVIhys33;y3?#e;9+^l{enDp@AMrfnMpp zu4x`l=}xxE4#sd-oish=Xhv2WB6?#&W^+&on9RT#!eoZaY=+MUCE;_V6!#KP@=@0d zwy{d^bIFDUl%~WrWoP!}7M>|6ov5n6*wk^o{nY*Lfu{f`N*dq53-3EeEvvgu2|`EM zP0#W`&nbCK8;4(ZOI{DkS&J@QO)Oi^D8GrC2+j*hA z0+#)PW<$ajXT&VWB&;SSt)?ZcW@YWpYxyi0hhDdgyzUXV8Wb}V6xiwzIth(^qVNA& z$@96C^Omg3Lj~J6f|l2XO&7Tg=Y=x1{+K7=_kWc-wO6>MY*b_nT#TJ_f>I`%2PTH6 zM$XPo4$R&jUw?P?)%~^4UXvf(zjq2kFd_e}A7m5mX5v$vR%vBokA4(v*E$5jf$*|(YRD>TO3Mpz^3fbWNk&Em!66_gBx9wf z<32&pN^wGvl{*~j6lmZeFQI9uVdr5Q>|z#VZse__;V2=bCg~Ez)cf$8pBc5DVBPj( zBX>Fcv_WB84gKN*rI^0s8L9BMmHsdK{Pi)npKYfB9xl!w@K1at0bo$tQQUY$V9@|n zFzQKwi~B21bW0fO)*)u0-4z4i0h=mz=wN@tcJ7TY8)5}lqwWGILWRQ~5!KomLepiJ zbJu?k0(MdR`_S~fP;6kC^5t;A{SJ0`996XgakMA~U^mR3 zEyf>PnTI(zCOJ5!TH7W=tTE>DWmxuVMAp@iv^682 z6(ze#G4mk_+Yv>d^ZGH@?9*nlPQZSZQIGJ8Jn_PH4A@6)d#;h-V!YyXhEcmRJ*Pxtjr?6==mtGyCN(Hq{5wT=3 zp+qsEcqyS|IgxBNi9#c>LJOW$H$=LZK;{&o%pjr65P>v^ZaPJ+)XA(fECiiUcAU_* zKV@OxXdAO+27jgD`&7~MfuipnMem2wwy(r&Zi`u6<#$^#9Q{ioop!$4Pt`2-C;6@?1FfSHn^u9}67sk^gPu!Fg;osp}P zuAQEwwzPB1uj9n?UAq&|!Qc%aSpYf#&jV0J+qxXN|8BbufCSXH{{vjR2iT^K+=+c~ zyCG-;>f4ZmJbzIKSIGa6odYJ+UheHtKz%zT7kPV|XS-)4U~I2Aw#mrGUmWiY($`MR z1!*7x={mpx9L~8jfVk_a29~bf$XBpc0w4sE4a8Z&`vBW+94%ORe6^DfShoPS?Z?1D z@`H7ZTh>>D{-u{-)Ab+z`ObEVSUod?uuH$@){wM%0c2v;lc`G;_~78 z`so_RnT%pSn6$>Yv?c_!rg$d|aT$#8n2d3mO$j)ltmH zvTJW;R$k34zm!{jDX)4yyL18|L`LDc#Qbw{x#wV+6QSwj!Kvp0635+R&RU0_*753> zcjy+k?&LISW6-LjRIDJEt0I-FC6KJf6e`0PuEZCq#uu$45N{xmY{8doC6H`~AWH|n zR2RNvFGRc-Ppk(|tQ}Xh4qd1oPqLj%y7ic7v5!iAvY$_ECmI3*Dq3k4fJRXcSpXB(}cxRBE7(%!bpfm8j< z`3o-`zN^LQ%Z~%5agY1n9(<@p5FMaAWKxn+5|g*iAViOBHKaq)5RsgF^z(=n3ZLRjh8 zb>t1ymGu;rbR;D-g~gQw1SFXmc!ivz=znEB!8-V=_xw3cl`jlCC=K+_K7+J_jpcB~ z|DLzwmyqyl3KVE?pr$bc%8x2rqdxS1;sjVL9Hiqy-34BR-LAk3J`!fO53G>dUHVQ1 z7^awoc3J_~1@J}t6rnD`zQ5gUgMhwkp#s^Qz~%0SJK*953!RLQdxYMSf!~%%*pZIk;RKHZy?`f^ zun&Wf51Uj7r$QtJpBp;05gx56IU^L0#sHH>7nj}$!fZy!Zb`yte_Y&yN!FiM(3O(g ziHg_jm|!T01RPf)jZCJJT(+7@v5rBjgV$nM+GSQf;IePda%9;?R`bK+)<*@^8@VMb zd1cF4)vLL6>shr|Gpbk9Yk=M9a#ZeYaO$W>>@YN>*TAPs!?Q=-t6$0Gl(c=fh-C+t zaSNkP1C3hEF{LU}#acqSYKT-NM5+c~rU7535m&MvU!;matOg=p2a#xmNHpU~v_d2R zR5TMxwh~IV5lFP-i?-tmwGoJSK*ZaQayDS_HXPwB*hinlpxiF$eudTYJhQ=!fbF7! z-=?DPeG$96vMx`=oo;hSZ#b|1h0Y1^jhLQ)dQ!qoUDQlV&Rj#)-cZ}eNG~!E-q%&V zlvFrp*S+a<@wLm^Ux-y;a{faiWxq2{XavPEP@R(GVXaB_LusP9e>~Day)4O>*ow87UV%11IfCN&-R( z!eexlv{IY`3c})IAkhaKHy;BlJKYHy3Ti>;NcvOXwmSiB5;M6R8}3X>LI{#-fV8Z* zAXO|j$gF_@BAswRiVaK*Tr4b*))mx2l2?#j1Eh;ZWst?dL}q>k6u=DjQDbjscm+J* zE;94$c9K`nb|+cvHYYND>~@M-WPVvpWDZ(f40J4XkWCgGpc6DKkcAdx4FO|;2f#p% zj?5Gba?_&fKP9Q<Q7#Rs1lvUzwmAJD;W6AOSfwuIlbzs==88yw8=Sb zD7o!O*{#SqZ0Ur&*u(>wB!f@LhSST2Q44!R=*%G}O^E4@acJ}~sde$_jEGq*2v{rt zR8R`Lu*pPGbNf)RJDuS7qLm0^(a2%buM#uql82tsavrh_p7ct&7+HKZsd@wC@h)%J zEN$2^IZ{x%%8R#Lu34EE#$tck3~bIN|t z1#Q>4p-Z9;w}fnONjl$G_I;ri{7KC3pFPNSP=pnrLb|+o|{% zTZJ{}oE<6O^eNr^i}r1N^~_+3{u9EVzB^99F|cvzC} zr{kh$5@cjj=H*u9=aT1P6=h-MJ4r=LK_TE0Mc0c=T>8zzH~h4IVydG)v!WonvLL#) zB%!J>rXoM8x-bS@Ru)EA6~)#R$JUp|R2RhpN=bHPb#ZK29;`ec2JTiCM1e|aPDEKg z4B4tEwz?<|c?Qk5+g9dB0XnizzzJIAMwaFw`9U3YQjrhNk(C9=5leF;!MP$IjEKAh z70?89f~;(J0+`G5k;9D-R7X#&QV%2ZzkZhjl7Rz1Gb-c>SarZY?XS88$urPRfB( zLLcA+(wog}3SqUN5OkuK3_B?j%qbNpr5UYZk!j)GWFIjU5H}Z|axp%4Ii++xtNMC& z&3aDFT5;oz{JQIz)i+WqZ^l<_#+KcMm2L$UT=z&{vW}V83mlhq>fr0eiy z>hYx;Au`PnnHGHM4g%>eeBh;!?7|c8!V&4h5^lrhYsKg3AmOh+z!Z-yoG)Z^McQqP z-)2?B@w%+XeIeToeyi(}&iCZKpYeI$GM|3u^_`4PPD^ji&OS6Aeh5AH6xfaLoan!@~&j4a};9Q-uL1n4OE+2}bLC=^(!WjSahI8I2gP;t>x3b}>< zm-Pe?1l{mkjfqFPQ;&3}9%*kERAu+9d+wpm*#|n)NFLp3B+o80-~j~?k>{V9qdM8` z>gRs8IZ>S;&p#Ewx!cJuGpKx32mB~D+0iF|;QRZ{CcvYBautAh+1*d#-^YvNkN?>snz~L|rHO?as294bT~MQEIeo zYyV0z#R_7D3Sd)0t{W5@@s(Q%6zT}%stDz4KtZ9!E>57J0)-RcOe|APEK@@$12Ch3 zK&A;_wgq3dl|ZJGP^OzuriVbf2O`mpE82r4)QZL5M8Mkt;jG+8A5E=RFY9?j#NoQQ z%T3jwr|Q8kC0*_c+TIkk-;#2@%MozH=F)dF_}I3rK!ZV}5WTwJ1jV!Hp2y|)0X>&p7Z=bKI&#jfIVfh)kp-QC^o;_mJmoZulyaCdhP z!QCMwfglNSx28?Pw`tz5|Nf`bPBW!5>Ad0D&v`cIuCwns`>eHpckN}?4w~jxvO1=+ zdOE^_Tv!H5W;Cq?50@AdlPo)0o{LG4iB7^J0^9RH`ULctet`eCE{>os1xT+1wse5G z;-^t{|E;TZ-!01`l%AVV8Nu%<*{8wzJi&S#I24HMKluSQ6*biCl>R}gWo zHa@X4HFG2_Ydk%7Ha%}CHGe%Ve={lXnoruYOTvO##GHozjHvSj3t^B>zn4P0AFkR- zs@MWiZ2qA&kjYh(NtKhyR+7n7k;+z+$<~m_)xs2N5K2Gj5Fa&(AC5@HI;3L#k6Oh? zs6fhAB4w-KvOvSAgUL2P<(i;!%`n;apW+0mSl3zMrn3UIWIT;0aXBYB&I{QMEBoIP zw%=9`c&r`q8k9SgaK0nw`B=v7k)+G6QuPDZtz+{tvM!$Va4AW0sY-LL4RoqBw=34M z$X8Yfkl-fB@)@hjS}4ky=_pw{YPv;))U=l0NYB2Z-|^t5>-Znt2kZ)%_MbBLA4hP^ zIH4YrjHQGLvSOv}VpP)l4KuFDSZ33pB~g?}K`b>6Mb5%VLr+f0BClf7+-bSC>9BJU zaqn5yqnD)*UUVGX&#rG4P_vbCNUYpG$hvbUbbCi5GMXBV*UG#kTivNt+^FvD#zzC? zphgP2#iP28et^RUKal^-ee;i-uRrO?03MFqiq4RLbl-nhOYTqlME~+_(~le)Uj6Jq z0xUFE3(u)E5|Ai85*`yI*g@j5#fo`y$_C*j1977M+)`nZ3UQ)}(Sq`kbllFQ%qGOl zMkHus01_W@f*4~=%4$Z*@5rVcA!U@TVwz}VdEV6{KOnU6T>L;t%6MS%lyB0kYxKNj z@U*_?n5xqi5z7Hy(;gPxP6my3O4Tl;ayPkpABFa1m})mfu?42sgivZgDuPX<8kl?y zLcSIuUyYQnhRam~_f~Sn8Vc1qa^+g2QVnQ8nE+bFN1XTw6(4t>z!5k;k;_#h#rs*kU3U_f&8${w5VNJ^zXxzaJ>OpUm zeP4Hpais)1%zhp}@=_T}8lBhEqpQ$XH#*Qd8F4P}$nn z&@DN>x3OY3Ea!&#^dFTkccFfCx+f0^xn=Y_|N6Z#=Zd{hWAJYL?rOe}j<`r?X| zUoXF57@A*#PgGJ+Oop8n%PFTzm|oGow&!&9X2!w8oEx|DHg7jPc-3+5+4{F1dX~4? z6z$~PQ`2reChQzY4NS^bbjS>^h|cV4b&s+M^YT&?Et!Q}@lpX85g!zvCtk!~R5DylHbPt}8qMzk z!TeCn4s8Va0Vlw|6EW6=3~xaz?23`|6Vr=QG>p+DB-*={IC#`M`gCY{v@1BZ30pSf z^_ozs&D4r*MaNyviPzjDew*W_^63{0;wj-_LBUDhzS5e4UA?4~2 z^7TmhM!0-4Os<(sx&QHWudY*{Nf7W&2+F+jgseRKAcO`QhiC|Dd7bxN#yhl@;g{Y^)ky zMKbBr!ujK3^$X(NbCN^Ts-sIL{nK=^mfD#$uD708&2J^F@0cWJh$!lc%IkS&<#pY? z+jr;T)Qe}{7jnO%64XwtBh1_o9$k{0ye`nUY}_>_EGy5CBoV>Wq8TV8Tq7~vpG85N z|5c0ZpZ#G4XAeDpxnj)ECG+2T24sq*b1EmI(I#axfU%iTa#}MAy5K~-a6;ZJ!oIA+ z{#ZUgR^dQ)$q0I0?=y_%Cs1ZYSaVXGDGAnu6m!(zcndlKC$yL+w?eR#Zmf)9l9b*B zG3`77l>!EtJW7d6aM3(c;UZGeDpH9?GO0F*OfO8n524VHRP046c9AP}!<9Nu%haEd zt|gMIhACB3s8mrXl_Hgj$W=-xluOAKOW`u52@xWU*1N?}(#-ds~N(#|^5)hWl`G*Mf~Ns?DXLReE)!cbY#OiRXEThY<{<0`Z@0b)&&gwACbXh#tFTU^Gt9uPBe?UZ@FU5hG71bSi_7&*R<5Y zg#PT3{qPi{ik)lgc*xGf_?^c=Z39G z5g>{LG6hpIMbJ!+jz=GvlFFNqD43A`Kz7szP0ol!-uNTs(Z5G$j7j8R5H82sb605b5UfSv%xIqEAC{)hNSN_nHxlDf1Wsm%TVUnQUa2siw9 ze<^T9x4iy2?l}FpBG9?lo?*}@VbO)M5-2#VXn5=y`CM3qytyR;1>_=mQHB<#(hc;rM&ArwLVPaJf$vT*H15Bn3F4u-oXh$lxQ>e64sSP_J*{j%_2N{c-s&*bstO95@ZcTfKw%yx>d-pQ#-U+QJ#Ud&B)btfPMuf)J zh5A?2$2L`Si|85X*(r!cu^^}d%I_Y6>HbB(SX|={9gmQ$h2iDS+OEd3wz{IW+QP1; z(ze=yx{}PQ{FJiX^Cj5{`Dqc^Ng%g2V`q%!Gi_?6|_rsFLislAQR`ocO%-h>SS@tfY{tg4Blc?3&_? znxeGog0!lF6hKp)83V|QF2#V}fKcr)9Ur@ws!02Z<@1 z6O|2R7xd(l4&spxqQTpe(i@QgmnSweV3r`onv(or(1zhm$#6DE9#1+ke^PGulPq4O zoUugs^AO&2s6ZA}I1eUP0uw*N38)kZVrYiQv;dqSS8k_JZAYrMQL8kgS3~VBy#m|NVRf=N-4QoIgL&&wRR1aW)+QgEu}^& ztxg4#Q61W(0c}!`F>PcsZ`N>XH1g@T4Igoeo^+0#c8i+@#&e6PCDVvGqwqPC$OXgj z1$Dm(Mb|6RR{g@}T{@xb+Mzc^?bo?XHU!PCOWE)0hQ2h2eq)*Tz0JjUM(1Cu)IV~* zemrZm=gxb+lxc^K$%z@NOPiReS|j_PBR5o1t{vT;>1ox4))8*&ZP z(xqMM6^*79bbTu0dt@9~C@&QF-TS@BYKG(S@QblcV<^)!uy=zP%STJC9e? zVG>p(j4cYzZwXvpR2W$m?O#=#zpZhp6pca&(vxFop+asE=7*QWQ^$8IbRE|0Y?jx^6*t{v|w8)+{b?I^m^UeH;S(Nvl;+F3l& zQ#RgR+EbU=QJLCSk$R=0czU235DYctc2uTS zGu~acG2Oj6+jDiMdt;xr!1f~7x@s@CUT@q%)vp7?L6ClMC&?kVKECg*tjJ1RDcvFi9 z!-RrPa|WHlN1tX(A>&CWU=kG&sal9sJ*iYPRJH{HY!xbPNaa?jVk1(% zmO;LfR-uYov4#?OE-BUnFIW=U1_&rbs@O=WT1T%{i8ZR`w5pS|ZvqAnW!Fwk?|xnX z%ld)C2EikyAp;f>mu;iRY-7f3qemU%C*6`~!!u^%^43yHZ={r5KVP(&T6!a+ayPB& zZgR!l*rHpZxjTW`yIvVLeNs2v<0h?R=H2ri%llswcG}{%y~S(3$z!^t;(y;T?zMgH zdyk4k`+^T9KXTLOA zz_&+6QgnA?a(iWLe{*Jgb!=_Ae{r;ZZK`K&x@T^?@^l`tX~>yU!Ck;9P3yb>s%UbpBrwP?5iGXD;j9d?{CT*YApi9Q%B!h3Hk#~ zmj;^)`kV8>M}w_}3zut~$}iGNYka|pUwWs%=RC{Aq0Nmy0Zu5_twVVos2McKm<$jY z6Dk&SI=l^<(+SV#$t~c;!|x&_<}ITXE+!X@<#C{6F^6DGPh&uGC&Cd<{IK-|aDoV9 zO~&a;BOb`85Q7jocY-zi6x(?co@7$~G^lVk$j1klDnE*PlLC&a%?MyiP&vX0gmM!E z1ji}XP-)d6)v91BWn@YvWU6H_?MgcBdJf$-VXIzc_aTGe%hoX?&M6a-8Ph45^C{Vj zso6^zmsT_L*TFHjcs;M|YC-w6{IX5Z3d^q*R&8CZy_H>mkXf^zTzVtEU?Z`3Go|=? zTJH4=Mf+(*2hlnEfvMZxNqd2*YXM1DyfZi5@?VI!u5(#!a+zFbH&|iSpA~VuA?bNj zIpnVH`4^^nFYS*nm$>odGa??-uOULGsFX+;G|5m}5GGv;7E^j28@#Bmlv*81qd=J?Lal^e@fp557ew7a-I1JI}$pu+NK)B0rFcu)D2&N6@# z6Frr4Lp5WaMLl)d6WwJ?BlV*lB}1)+YZLA5HF-4BnqP3@Q#tsb(gP)3^RwS^`nYQ7 z^zFd}oayM)AdCh`v@r$Rlp14>VzFi6bj9Yb3hqWDA?7aF+1IIO54*pYa5rC!tox4xR zj1xK`$q?eRI7(thC=mn6X}YstQJ?sWG&5DOrfiUkf+RDR3x!pYl($jW^;S>~RZtF5 zSBSH}lBY8opqfo-VW_3^Iyyp-6$wwhe9^)%UA z(NdNYAK?}1<4|=eVYscJyZS<9PHbYNPg_;a;%M{oc-zE4-FR>H>|pKeU|nHmjE|db zWU$9*ch%}d`^;c%S6x9tWH94 za;2(dxUKw3Y58zoUw&@Io{r&`syQpTZ1!?D)Jx6AXw9eJN^A;(<_ z>s<}YeL0&u(r(W*L*A)|yp{`o%I|VhG;qgt?RX-wfgzeVzW)R%KZ0Hw#-vHXW&~w5 zJLE6WR6M7*j@Ux^$RB##!GFoy7BRM%Olnh4$v6A47)RZ?A;8bL1CCDgvXd9h3 zw@frPjM39iu`pU~FMhf^^XTsOt?l`l{?z_rv$-mp>1^v-Ckc@HK_0yDLM1UJhS>^S4u{PD02?JzVTwy|}NZtp*_@8R=KP zGNBxVWD!)n5GGMfDPK(`*G{9>PN&zxV$mvS-=^U^Y!x~Yk~$xowUU~*lwCMiUNPTT zw^&*}kySjLRWO*4+8h>D=Hs93;g#Xw7Hj1gX6qbo;}quX9vvK-5fq%}=624)Jzl{o zT23#-iV*HZ@QezK%*!mQEUoS7?3YckB7q^=CsH;>1NZMX3q zgGBIIQehI5G!m-{$7;Y?4Jf&+X#`vuM1A1=QIukthoWvbYW#-zP&Yec@*_I<(Q zd`B?wl}7k?3So~e7LP}>`6&pOh=aC>D!REQrC#DsXRj5bg8mRIK|Qj#O+X{kzc;^d@+!AH>{ zo{Lu+fdRbbNT2wE6UWT=$}4{Yv&4@}gXiuCq*VqTwKgeA7shA+Lm5D5^{E)mSUFsU zq=F^XB6%f!S@>NzMLY$h1Gq%J={T$*SWvUb2!b(&vzfqH0aWM^fr=D(Q!-8hgxi8b zz@3sW6v`TQisL*;hC$4mh7if3l*mP^l=B+4N}G15I1lIt58EY9c&AT9=S-i^p2{j) z&Z}4kMN+db4QA(dUd(7pIbRhUUE=PVsHWl|A!aNg4ia_R7#n*yI0nbYKf+RGVG3x3>D?;j`~vzCQfn@72q9FPXJblC}uwL3EQPMh3FKR_SU|Gm~TGi{0hW~Q`s~bvQcXh&Es`x&Yw%C%lx+dhc zrPlTG$Lac=9iy>FNG3C4i0Byx83>aS38OL;r%%i0fD!j&kq$-4q+(Qxv1-+L-EMyK zIdR8r&5&0H5#LD#K9>o3qZ05$<-$FuKRB`ZKYc*J-v9E_|4A1fH%^2kk`t5QC=kp@ z7y~(|NI=ZTK;a_88=}k;p&^)Ls1UCw@1dsZuV<2JZ#1IwYCBjTEV>x`)mMLw z3UcXbDx{=9l8}&qPrv@=Yk)Vv-^tQc2j~&Kjrq4$2Y}8YEg=9(VYgId#)bI+G9!J> zw~ueWeY*eV*)3fyRWcIdxyix9caQJgT$YwN0)w>J;A^uzb3?UY1B#xO5}W~=1Sn?r z*RQ^ckMLO@ZC)F1tt&~VlKg@b$I17g%!~WZp9v?xy1<*<3#Zm6rqhQ04^HS&FqndU zCw{R&LD>)TTNtYO-Ps#!|*^S9K%#gg! zRQ&!F+`+`0QAC_kaDfCSxr>7O6>82smLZctiDOY0=VC9-q!dl%l#b=(_oiNGPRr>{ z&S;5TToiLhuN73BM4X-BQv%GrYXDe(>b(x33<)|L*aJ zw-4Umzy7cwufjDZE2eSDHo7G!va+jn9Sp5t|!w?)wVfcf{>>#0=L& zjhA@*uNzE!_fJ>P-$)>oH+cfCd=?@?jFN{isgR)5NYVNTc57;W4>}=VCb@LHRt1M% zGq=$o-e3%GG$-kLU=;mcHR_#G#9KMc4K`HeUHb27l*|DIY#$BYwtp~>V# zWEgUC6gi9rMuMY3T1s<8s|!V_3t5Ta++_rkjWk0Hv;&NdVlA!XtsD|8Et9RZD?%)1 z>Z2FCqDRWy1~V;cf;EEGxfIwbRQQ-8)rC`aBpl@hFtnry(r?7D6uzoLHqruo_MvpG z_kRfzKkhqC_EwK}md*{;>1ry0rTJ)e{wpX(cl4JK;agvtapIeA80cskO4ApvG#Y3t zpE`N6EH|OAxeyeb05q=lW=gW+T|#v~cOHIt`ta78tds~K$V!RaUmpdVOT7(+bTm}t2&jXV zAu9_r02_cNhk-#I#yJ z;DkOIjV?L82@8h{uZTa7c;LszCF;-0@5#*WM9FFeV(VZy0-S{aXEi3n>Jc$%LD=+R zctZ%#E!YS!E<0*LZwB!o3jQ!gi8w*+91Xi_o4{_bn33S*iRg@hu#|rH$VQjIGM}J) zFV92=+W-eUKTCp}o|c7ywz-43v%9@#jCWW~QciDC-D1b(?U9B3$(1+P4-TKbKYVrg z{^`5758u9j^!=OLFZLF)7KrM!aq z#m#5W4)<@pn_R!2c%i}0EhFK=u%&OEpx$|P?@^Q3cXG}L(zXW%A@5W?AM%(iahuNa zny-l4T$dwU6*QWc$iC%yOu+Aa;~kM+p<&LYG~P)ejsnj}m*KsiHlI8Y1tpu|I% zeI>XF56MR`CcXbxqAJ}a}ROB`?yfGR=(c0n!2{vX5B5K%KIUK#Q zsDQ9j1by2-!HJ39s>!~pxy$wXI;x!PxcG1%;CpIfpbpFoLEetL%R|0ywnS&oA`vhY z1I@`3C-k(GfZtJbMHVv?>U?zY)BQy~O+_4rd1k2T>U6h>o(8y(iGh|J3CCg>dpesQ z-M=Ns&kJBcT}5tVw(t5}Uy!#GuvGxvWvst>u%m{HgAJ4<0tA#4O8b%;Fk&offSs=er)_+XigUW^ndN-Al;agmFIjpwc!ah2MKt+@RJ;2XnmVQGI%KHWWU1L)G_p%E zHV!b;wR1DG^R;ygb@fdOiLS~n?5=5<=^VU%d2)Yp@$u@7hfAA}m#@En@a*vI;fFUL zzJLDR;mZ#%?>-xC8%z$44e|4i$S#fQ+%k;29ACWDcV+Y7-hHs)^!oMN^{X3;tLqP* zyn6EN!;PJ{W2;ZX<0`Bj5@M6O%sna|Z;hfBE)TD4kP8!o-wPXJ{4A(5VxlbV)G;7~YYFKafc> z3agYYY}P7aGsI_lncZ-l-DE+??xvvYj->BB-I(vR62H?MJRWoUzjpsWy$Z1UuL#1i ze01zMkwkX(EG>eBm6p_85+AK05~nT@swymvrh`F9iHOhOX&`PgJYgClG3J_)1j9f* zrAPy*WFy%aEm1EyE^9#!c_u0*=ot#Kv(#`Hf`nKIOX;mH5TPL)t|_L*hl7xvqJt1| z)6odJMl!TN_@yZT`h=(u-&9{Uz=_eG%Et0cpj)hhz_;;sfCLSt7aGehZcO*ySm^I* zD)x1=akMfn$czQV^TQ4OEu|fGg*z)FHx>r7QzD{5y`~2nHm19-&h^%mWcs?>#f14> zT^RoM$9q%|Hy>WzeSB^I+gp#` z+2-)u zhG!TFXVLahyf+1J2(v;Kzi|`LCph%`SoKE0zLT*1O+NP>X`j2Aq0i-`p6ZW&E;s=U z+JNCdNkBf8_?U4*KRos9nUkC}WCT(62o0fgY65|(0?O?4G!POpA|hsT5_>tGXiWiM z6<$#mIuw+Modza?MT)V|@L_1tl%&+8r>MzJ(vuUR$VuoCP%0RN26|SV4-=*(8mlG{ zpeiPYry?i$3K%Pd-6JqvzlIZH!u-<%AO@lgXcbE%&C~rg z*Qc&83~kKzZZ8eqTpR?k5z_-TqumvNa%r?>dY}OW)2)oRtWC6mNDB}^x4SX*=JD?H zJL}sZqIJ@??| z{NDNq7-y`zZ1GC{)?(lF`TqIg=BqP(JIj}sMp}M|+AD7;%VJQ_{elyp%EAATUViCM zW|sI7DjYW6p`6NLjC!OX+?qxk&R_)MC)l{$IQe~W+@4H$7j^+ZL8%B4nJ97jSTWTY zRw-Yw>2!u(hZL>%gB@Fs1gk=dRt4$>CA%F0ZwcWrAQv(eR1Q!vjMpQ?Y3cdv>$uwx zyj`t)9Zk&b9D~BLTQ9XQwRFr3SGTM;wcffi^=4!H-S)woYq#HAzx(#agSQ9IpWS`7 zx4tvfHc(SgwKBQ>C{;oY}Dv3P&@@X6u&_O}xK187PK2h>KuOHR@nISgv1+`5np|2!7zP9x&?TrK zXY_?x&uNQ?sS25jbJD;8a-4yYorObAL5WXLA)yp75^6XpErJY%B%?==9reipRFI&N zMCRh`;p(DM8vG$zLXubtD9ITqw`i7M&hG^D32{+@nad3z(hWq(fi`>8ubb?vS)cBm zJ_?Bc0{o*xQiXRg=}zkUP{;IMPuHg1wKT>iTL{r+cq04zEmh z&kQyk?Su9H5XjwIH9Ob<5Nooxc50w*q^kl%XxA2{(|n1aIF9%U)`>&M?LR9{fF(?# zY8}C7Ou}q%0t9AbjHz(83>bGhj0=X>m0ie(Tg;ye90k3F#DbKxV#L*g>DkRl=+sFW zb>O%o$0sOS2ZqsxV)Y<60|?HL3 zrxp*UwXKzOuUs8neK~vm$=;iL8~0a+7H%(Gf4zP1a&znT&fRDGPpA7QGh#CeGmBSe zHoklD?%m=0H-|?k@!f~Rci(?F1j@p9hldaD)fJc5j&A18Jn$&!E9slxIe7a0yTey+ zK0J8(ZtM2<(`zrf#t+I{cETd(Je-PRf{LRf>rGu-l|8O1`aK3tM6zyoM69<2Og98g zH>51Lq}}g|I_*fBFLP=SvII;!Uq7CB1&yXHa(ew!C;3kxrHN=YiC}WHjGA<;W)v*8 zbOOO_N*A%pIec2pA_l$uy1gQ%V*=*6B-X&10gc3LK~Vt4BIYu5=cIeWafG#&zMt4?6Z?29!+*^I~ zc>m$v+5(8R?yDN_shI4o0=ruPP5@^701xHUgS87+nnAn1FnE2Te`&03W%4Kp97KSF zdsrH21NX3arFnUzZE>V!{z?;YuALul1PVuUWe&NB0%`r7pTDFpXFh2L)K>qjAn|d@ z&=|an#94qm;b$3j09rtq&8eB3=rFE00S^vgA9f*cb^$LgL2piePd-sU;2q0=w}vw6 zfwU8(Xl*Eq9t@`o$Ljom6Z%jVBM7LQ%}RiCxnM+Gr4{V0jh$kBgNx3ml%}MIdHDFd zMhk6Bt-0l= zdv`uO|MvU$-@OGk3V;sZz5nhFK#jw9uMQt?-^|P@&gx!ByK>-FFqYrEGCh5NcJkTK z!2O2$or2=cby}J1n!9|IMPu$t>*`bw2+Rh@h0%8KOMicJ z76eYu54TJW)Q@(RkAW4xqZI5u%?vfnTyB~gY*?M{yR|uYeenvoWMj5}eRg1HZE|_M z1LS1_YQ$(4&>KLOCy)vd=ma1WRQ^y~;aE@A{FToe3-RC00O!=9`{!C=;-^ym zD}AfgH!xn8v&_aYET~v#a292ZV6>yhI-&X8@glxBUUv+)E2oeTp3j|`)tLd~OpCQ6 zN1H;Jb)YO-c+G6%@@~h ze7n2<{lVSC7q33XLwx_{`=<|{-`{_7aP!gP)5c@Px28yGU>>D6juUqEoG()XDacfZ4Hf1vDhPb2WDlIL9^ z^L1XsMG27NiLkL%DLX*cGytweElnL@IUeq zV0*y)e0l`%uw3`K7f?;IAG9UG^%%IPTV`9bqFzgY{4-Jbx>ac(#niYoz-wtkumWGN# zP=>8#_qg8c|Jrf1{v@fKeq||f+IT~$pY#obAq|@a6lZ!06d*!d)8m{N`8_$rgPFP9 zX>oQ~ZVx=a7lzdnh4!GuI8tLR$ytq&9J&Y|O*pF-&?k;?g4GZNRlxD)aCVCm?B?Vm z_WWvI2Iirmz6s?i`Mo7IS#fc}4xUNTS^2fYCGE2lQ+rRYJ$}5f{%qyO>#I9&wr)RN zzW#XW`s>Zz*VlI5Zr^&pfA9V6`-cxeq}|bBq-`=>tx%OagYOkYtCb?oD zxp}U9`gMH$osf*HDHnG#lCH(4?8K(*#-`qiOT8D9{2)B;UU1Y-Na%#4OTCe0fw_0D zb^KlFfLB6pkF>*{7{$IdkN?gf{H3D%EiubAVap9IuRG?Uj}(*cI&B`$rjuI7?pG8V z5MmKHz1-KdvP6_>#0a(1lp17=1PV5HTAm0d(R92*iGXGYhjJT_W}lqxvb@8lnB}^d z&8DpLT~XVc!smAF*N^9BeuWMGg^vL9|3QL(%s8Q$(Zpi!M`!IzZyiEs8HBcpV6q8A zS%)y&grIB#PrZ@~EYzimQx=h@ZR0=lcFH=2 zGN6FI_1+)!j{o-z3u2DI{{FupV4u|`Zr9$j1vY$5ZHQvCLf{E!+079wmMFY4RwRf^ zDgw>xO@*;TvALi*J=pmIIQc`cT%IU)2P%LEEP6y3RWh{3NBhJ_eFBCz12{p1cEymxPT z|KZxbhimumEFRohzO%n{dwXGjfA#LI^?UPU+x;EOBSTyBGml0_?sxU>H@Dr$YP_CO zb1kiAH|)YnWa>t8=1%H`-K0yq2{||8vTnv_?#5o&iAvc%m#`iaHss-6XKYHNK8u?M(a{~jM$|Cdvu z3^ek@bdujND}#dMWYoH6=nWyvw&ZL+4E*tIl9#v@E3uN*Xvtb0%>gl!88NeEVY3wp z+Z$3=d&0I`k~#O?KPThFkK7BG{|^egJ7%2t-?JordD72t26Wc{^dJFb-t*>r@$AX3 zsg0Ph7I0S6Gdxx>yd?;jKnn$81pS%#e3^N@vAjMQE-zMIFK!Wk5O&8R;6cr1O~z<= zmR^s9Q4_+f3Bl-+;q+l_#vgHlhSQXSlRzhE$06$}r{its5F8tsP@kV$8WWr18IY4% zT-iO_F?DeB=DWk)r-uh`UT?p;yYgUb`e0*x|4RGSnxg57{IQa}k<$FphT5gZ`jwLW ziQLR9rNxV-6&q5)JQnNO)OLo%>c2bJ=GRyB}6yHwE-%HQm z%eb_YnzNIZzLpZ!8SGQ<;9lzzIc=ACU&8&4kn?S6_iYK68!EmBCQ&a;&b`p|yDMt3 zETlckuHLKGeDBBA@b`4ACLchh{E1Erqv>T&(un+xS(%d2fP$GojI)8VI3rm7(88(w ziWR(yHH;!mCZZTiHus1E69hA`&f+CPH>Ohz@A?PEVfU+3EKvXu~jE>8c z5^qAzX^9eX;8k+fGV^!yI+q(CUl<;p;N*QFF}Jd1vUXr=YW~^&?A@uZwf6F{s!M~# znSGh(ThB+gMMkuThqpyVcgMu`B_t1@i|dPzA4p0ZPD!0QpEetjG!>P;6rH&ipR$>m zvs+NOpPRdRsbo8&1e7GYm0fZ_r{uw<(uetF5A#dz=jPwe$=t|{Y>o7<@eF8lidt6p zzQ$vDUD#od-)5E9az)(nx~%h-gv~my{uHECeZ9&FrN6F(uCvc8SAzw_hiBr0gQLvmrxC$-Vgq80WG+Gd`Sm!rg zku=;Aa@jH&|MovpcH%eAz#pMfe8Gt?IPqUH1KR%;%EZUDz2*N@K^U_> z45JSc+dLRWlu1!b^cZ>*khzhojKIfL1nb?tjVc=Xs zPjJ|PcR;(lcax`It8ZXOU}$ehWKVc(S7dDOxwwIt_$%?}#}kvM5>qD=Q^%9irc*NJ z(=(SYWUXXgT+7VeyqI@AyI}iL$zD;#L21>!vZ{N<<#$SI9_Lj&zf|_LsPbWH*HMxa)mP#ip10^P?QFe*^m-vixH3D)+rD%X^}AQW0S6B;wxho zsKU#(acf;>(;da>k8xToC>meG2VQsGIv%&H-?;97Dj5)jU;jn*FMRq1Cyswk|Ap7^ z<&xhy0~}L_|EY>GpDM<`g&t%dqH`)eOKpr`wLHl}fMLy#oSN9&8MuA$!a*EDfjAB~ zESm#{%^8JrrpMUPp>61~w)9wQ8jLvLFJ8K2C&iS3-=ZZJNJ#sk2v!rBk7YXT674y|-_Ze_&g1Xjgb--?^B+ zsQ8}f`2M)_mlKjkl2Rs8QfHFWr&BIWr(T##zqpi{y_%J?k)6AlQ?Q*|w3An|S6F_# zr0Q;2&HeJ)2NgBUg zmQn@6pas0e$g%dcf+0Aii#*!(!uq`&a?P|nc_@J*R=E~7)qb?vFuU=xr0YEi<8{`s z?a$34_U||f2m%m?-ziXkclj5bIOYlcyZQa{@4sgT)c@o$6Mrx2J0Cb=`_9l4kgV2! zV>Tj16DZL(aI6a@t1Fhzmsczl&+E;}>%q+%z{U~4g7?9&x}$M!OgLvWn=?713BU+9d_AJ`fg)D{xfbuOkiE~!5uc_=A$BsG09J!AU9h53xE`3pGIr(iui;IM(v7^ajMhWfN^niT9wvdti8dxJ80lxjk@rM}C123GqZpiFhfg zI7!JkDVbO~`FJ#!BaBg>gkFn?UY&$lo9qXDf|OYY&T2%-WlqIyLB(T<5_Vvb^59eO zm(@6@p%ZVQmt@|j9~9IKT1ZH1L_}9yd|z_vP-@0V=EaHZoVnaf ziHTfw$^7&ZLh1F zUspE1s%v~&QMOx}JC&E#7@0B}Sn@(Q@sUixEfxO*8Heklgf%{cIbo9pO^<9NK;cs%jkZo{t2^IY0oA6c6qHAcuc0bw8sUsC%M#yg$($q%_#EKGVx$mJ1f>EJr9;k4K;Uf2Ib11Oy~r_s%wiYB zOnYUlX2p!=Ib?@X!WE3-70j}&ShZnZvrS32r!wB(vISkUUHx3r|NWF(e%=Q{@mqdl z{YIKEIB}e_`5Pzw3)wNw0BZEmZtK4gC(I_FP>Y2^Q08ZG)^Ii_N~{wU?L^1v4RC^) z!%bK+TtPKnN+wcJFn}9mkmYpca$sSz!t&aKI(G=15ge#|ddaJX8R^DZnxl%9^`H6}OMf*Z&VE z>RO&Rw7%%-c;4Ffvaac6ZPSbT#)oBvSBo<)mn644hRjHL?_&tdEV^TO?J;hxDM5{K zcEx_2e3t}aR@wEMR=}R2$F5w;&0~q2P#@SoL#}`!6@kD-;S{n^T6HMO1i|7!!Q;os z8$rVwPA`zkrP(H8GAT`1lhoVblpkP`>BPzQaOh6Sc-~V#_f949TmIBr&euO{BleGg z0fYjG#&HSS7o0e@sXVS%@@1S)ngPj$|3Z)e(r&x_lHTGHj2;xKvq9h;={VeIxxFw# z0ZiN;Ozf^AQjsd^DU#A*TwG49Y_=?HHXK~`d;%`K{7$S~_N-hE^jH%LkOYub|13_6 zh*=fJtPKN+JurGmb`x@5O9ZbKl-m-*BH3e!qVaNDPGutv^XDObru-AY~vF3MAyJ z#8mpQqu4q(tZ)pASQ<*?B3h<~RjEf%XGYris*1&?IH;g!uqf%UXB7Fpe)RWB=O0_l zym7zzr{Oms8lNOeze4;4Cys3@e`S`xeDnv+0Qu!Z!nHq*-2V7m?>BaYOJJm9f)#JW&S{Tlw-XTZ5EAj`V0RSfcH_rc z(PNGO4@%`LW@S<)B~r8o8AuMuYKQ~<9VPVCBoN+t;es}wuC z3{S73u)wPG=UP(ZI+K!nV$%CkFANu694p9~D$buPEm|%uUMnlTnp?J(QL>U*w3?N- z0gTusCATU|?;hE)D{ht4+$pcWU)}V$w&iJE>$B#LXHA{2Yg=De)<3VTyi=6Dm=W6> z6xFZgyN)&6VlvufR-eG@%<}0@@hSEQst$>1j*F;`^T-b2C3*#z*PAdv78(JPG3Lbk( zJ_lwAcTtT{LyHs#ryMW0{4l?Y^Wlx@(e3Gp-Kl8+DOm8nN@P{Qq?mMHc?o5O4-Tbnm z?&%RuWG!UG_n$jIX?AXp$9^AgzQt)U$F4ieqdh6CJ|w7iSxEhgfXWqaxj_NtQ89&4 zdi6oerQaJoA=hyAG_?U7E`5eh?krs41We%+LY7-S2tpoX=8k1(!Z@ z)qWq?_;uB5N?7~q8ZgW&0D`Y$7h1;KKQ?lK;*AK>)&$-U-aRh@HrhL zSm_9UCSH;Ubb@CbBhZgw%gVW;GO1#WLOxC^s#Gb)`5Eif${HcBRLCvmiHoepafNXW zc5@Ayo$O1G!BAr0^e`wR491EAg;7z0B#bB>FUzK@3P~z3pU5X_^MU(QaQvK{!pAyM zH*UqE$?HJKbkm$2&0x`K*^$oX$McCNbz;T9z25!@4Xrm8wceTE@kw3t{VA=VE^7Ix zwdYp<>d$}FiPal{Lj16P^P_cJeptEw`{k=24GetJ-E_Ww&c3Nju4K=Cs42X!%DQgJ zxoXb7VMxAYj5w$W+AX#3)VK~Q9S4+-gGSpya`3K<3x9eJO27C~)xEzHb6UN<1E@IQ z=@f(@hWKEEp+rzIFcZNlBuU3Hjq`;;J*u#cLdQ0S-$shxCUU?=LGWHh^84b>s7Sp2gy4()bq-`mMb3 zuBZSd%pxfA$%+!Xs*Elxp$ZDwf)b^s)?}EfQP!&Dk9ERsoo&=jR>^Cms>(3u^um~> zc0&zUSM4jv`VA)1m*Rp@T~OdD%Z!3^;!%QBtT=-#%fKsu<5NCPn@`mhX`Ba)T1UxRJchHr*8fBU0OtXTJ5-{9B%{SP`CPA{6ZZ{pHhDbqifWqv46 zI&aB5@1J*56MtUi+y!((;n)Mh>l{h%tDT4S*8L>s&a`u{D zKmt7yNsd4>Q_M5||ZcI(7z0P&f~x)1(uBVfJwCNDbuI0WQ?S`;yh zki2x1EDOvh@Zvm>VS>UhUjmn%~ zP}Vl7X6392Yv$E$SUh(}(~<-2%MN!mpXhEs)7y2ixBGH$@74D1tDXI~T6=G|^xdD+ z@L@*j*0}6-bC+Cf>$wed0?a4=sS}UDlw#wSZ`N)39ngv1l@EJ*?lvzxI&b>k+Q!e~ zr+y|&zbubGrinQqi9N**+OH1YZBIJuA9pIg_+Dbk$EJu=Ci@|3(5}?8fBeM(@i`sL z1LwREfka;e3~7Yp0|>NGEIk^_23dH^QKDM7cq-M{Y)sr8oOe+hbBtl%A&fd?DY$4a zzpu%^FUh_gSpAKo<`H}B&BT+hy8QK=oBZGV2+-u!ndsJu*8t+He+}*{yeIviYCqB>@XZOMfc@e?HA`)bl#qd*c!Wbwo3aLoP8j2C} zJe;hMYpPU-kB!QjUsl;QVcd$kNkg+{Z>?XlzrEp5+p=R_ZKr!WF7$N1-_v!ax%YC% z>g$~=Z}tt|Ywx;QS9fH=-1ERAcKOhk17KVGa0M_?Jf2cK+PwX{joW{}a^3emE57XN zyxlne(5$JuC$v0DneoV6e9M*#M(5p3=YFE!c3Z-U^wFONrCbQjyc(5r!w_~nz;T4> z+MD)jIzcJ#Adb*7k$xjkT5p0M3Ts7^!(g-|w4j`#n@u(@WmtPm$@^V-@9W}E2|=_( z@<~JPX+_2dqRi{^f(M}!|KObZm3aQ`oDcpRYfk*4zyO*6vb-q2p6c(`iC0DNDL~!3 z|2GJL3^u>WkT;`4H8!6CD(0h2`He1RZG zE-TPzN>!2~jj%|?E96kKXu8QM`yb_A{2uQ=dKAtD<`W2-3q}t{a3bN{SiB$>!HI?o zlhN`Vlq?@DDa0yDsMacD{H)}{mh#7rPb(JASXV!9+tNjQni~$cx1Q+eJk!~AzO(0i zd*270D{gcwztOw=ZtuYT&YnAitG-&d>HDD#-wX~tT)E~8@ORDnM{75JyJ6$+2iO15 zx9TB{3&(nKU_1uN>KX0Q`*++>Qf2rJ4*P}14#61BQks~fM@j8&_u)$($s zv`{R_QgREWq7t#FNXg9OajRo?d0T2netQ4uQ5{66*POHx;YOSsAo2LATn>m2;7bJdrth90gSdbn!!7lW(60F8C)A8pw1-O$jV`c{3{HS}%c z@&`+rF3+pmGiB;2%eZe0MYlu7JPaHC$W`*WHt~a?v};M(x9rj9bwNi%v+hO~ex?dN zr;Itrk2)B>@!>O(`Nf04?CjTY3<@>Ahf}|UGkL>8AwD5KI2W9ffaMk9rQ;cCPPpCWPKl+|7_mU~^vN7|bIsK9>{FuVI*ATQ@ z@7iw+KO9wfC$8c%UCdc)>Sayx>4*(4sS_nP|3WKh8|AI>CK`PhP9!c0iHwAiqA-jM z48IsJpTzNRkVmXkM(*T0c5(uDsNzrRGcN10KD3tH3myM`=+wUi*Z##`^*iH|&r7er zhTI|lt77n+ivzL%%De>8emcdi6R!l{PdK_8|Cb0T-;|O>&*AoyA0?f5G(uMeVI;u? zSx9asUX;gCRj?#QJaLKMFu@);L!%xo;^#?)d2&e}k6*x(mMX+WVdBytNwsp^hVomF z$GE7y4=}PK0?LV|hIkU}FuVg!34u|=k<3^$uvJL&iHb6!x)QA^Cu%DN)>>=i%%tpP z#g+ZF@?=53p2yGTUZ-*uJ35OHpNagYrIdWnI(79Sd3Y>62&-za4k%;XAlUZ*Q#+!3d>0 zail0bF&@v!pi9f}!YYz-x;VH`9kWglyoqVu#;|Ya1n(C_om8b?v6X)sT=Q-C)IUeg z_=j!o?-Gyv5kzzk|Ns6M_5_r96^6QX;+5cg73kgPzBB?Mm*1Aj#E&CR<=wxlnvRX2 zC3|ukC?jjDaoP%uqJ*F*=K78G zi<%#u+g((#VoJ@LS<|*GoWHNW{zzlf@#gl^O>LK&JFd2NUjy@rw%)tTx^Fjh+-~Z+ z)zWjjqyJv_ick7hfBx8}z4l@M+HZOXzwYY)ys_o>#OY@Wt9F;xo!4fb;Dv7CIXCg_ z8^nQ|dFHhO;~KGftuADbE_9zN^nfYhj5Xs*VB$rEbGNPQ)=P}M6}SGPoV)EeUS=fR z?1eFS;ry|rFgzumz|CPP#}XyAWc3_z@Cr%TI<9jo+rEcx+eHi9OLraOMW2zSUA2#S z6hHItu?zklwDJ$Ho;c(s?*H|k0x0v+bOR^4b>fxadll&2=e`^QUxG*~2_ zeB>)G`Yj_JFD{^p^O=f5iXx8z%-8%9vE;EeLZ_~>7{@B*g-UJ#pI^Y17dQ-+QOZib zsL0iD1k~IHmx|bRZ=^UIg>quC&QZi*2-XfGx{$OO6e}4g$R>lx3{@poU5b(x!bJIK zSqaBFSryw5m(?+*q<6x&p_$Wn%%6XtzW!)q)2U@Gmzvu@Xzu*5t>OBxf3_b`=j6%{f>9VnW(>%Vlg=_EQI#zR?I~X>g6TA80$HfVk#7UPWDIc24 zzf73xbhBq;_uLC{v<)D=j1IZ|FpG)?4$Epa6_ zm1nn(Enhix(w14X_bpmp^S8dH?9k#^}rZfTJqweu;6tcG3IK2j`ieX1@RXcM(RUmktZndm;4@lphvvhvUK# zlw5{ZulIqjEw)0lThmVQl@b61pcGit&Q(JjBrzWA!y zrJi|v|Mv%9rEa!cCw^t4Og20x9& zOvPaniNquxCzsF37O*q4%3`PgL_gy=lVzMMXo|x$)+8^sT53u@{8y-2`l&|%^}K0T3~idE@OePW;64!YhB^r*)F~`M&&AA~%UZj=>TWaM&a~E`dqU zWYALSqm$G8O_j)<``>*_NlsvxzVXjbTtjg%?cuR~5+@Wri_n&)LVW2t^S{V3W)R4 z0e5bl_%)4^Z_>2j<(@@&;w=>kFq)Lz{HtopP8d5A%1*+wlZf;L93_cBN~1F}!MYQd zoyB6L$|d2h+_H^J#wjlnzF{{3N_ zK7OI`)PL~8JKlZ}Zw(Z#hhfbKq5~vDBrvlG?0gI-k1CreG`Dj7`UFAiEa^ubV{VwL z?iz~jSj)b2j`<;S;veJd{$L#UY3%-2$`|rNH~fFo8PMnDc<0uMmjv$R;C7$&iU?TW z(5ghk879C$AF=J;C}9DF5|3dfkvM5+Vgd%AL}zD<#Ki(ZKAV*;5`om>KsK_({A@8d zQz^>RN(<%OOl^Eq;gx@ldf+<#9VZ~L&`~glCnCrT6$~Xr;F*bJUK*a23MZw&$tjQ3 zLRdtRm64>S7(o$UTrM(Au!ql2&F&aevu^h6-3^V$np@AbcV6n~y4ulmqpR<3|B6qW zdp~aIy!X%f#Eq7oJH0FJuUzxlnswi{t$4J!^TC`&XR62SNXS0wNI55V3^5G-Y{MYO zu$rw~s|!Bhh`(TpIB7|_6qt8Yn|MJNdnP39BRfb47<*J`?AIxU#du+&%*JBP?E#`7zM#)S&|a;Bk==UDHTdCXFERat)1Q29yl z_&-EW{%h3KKf7wb3R(N8_}Z^BQO9#o0`z$~0=jkLC4qZ6xZP*HA_DOrzPo z9(G)pd`X{l!4!YS5r5Vkcg7We#^k@6lex92Z;9d@H_gSxk0QJZ}O5XHD;?EyM%5VP-pRx>siiDCAVALcW zH5E(CAcGYrem+;2&*5jYxanka9FvhO;AZd{DPU6wa}Ba0y`;o7aPi5D+Xt^87^%O7 zg}e)Kcq4-$=pY2vfx?Huu!%@wGLn*tpr&D1*MN&l+k0q&U80N_u*W9?Y)~fQM zX_GfDT(G;P`D91O#g5Jox_fRcUw*H-7pyzo`%x!AEJgS7yUSO7ymIx!mj166cYZv5 z&av{!t?}7M{34EuG|L&%ZkBvGSG$g-UQd#)p{X|UtOxnQN5l~))N!W*lFo%Dopoe> zkX~{xE9I0ve{bfQ-#vN%&uJ?c?S9Wg3G)*BdTSw2oiEA=#RedWkvMu9S2o@fy4){( zz1+TzXI;k)+C+A&Vuo*5W?azb-&Ew^mzI7m9rKlG$)oZcZ`x!6AO`3INc0jMbnC>+ zp!O0#yH9y_1m3nV>}L*z(n%YUs3@QlKI9}aD~HI=#naOX)Km&HoyJTh(GobEG#)pD z%Ssip(!`t$IWJ2s%+<(>IOWTq3@R@A@Q++`tv4=a1l;M33igHtz)?0dKEwwZi=$-_ zSvhE0I*gKnWMq&86*T!|vSt#^Z>l_aZfL@?yqv!AV+QBW+On+iXnXsG&JHl8xYpl) z=dn(7{j3vR{dfCTKImQkNn`iti#qO4oq439ax1V;_(vUQ3%VG>ZiaY(tJx$m?-82! zaZUTgK_`_l7l2OiUHcWmd-Q?ZObKVxN*+|^Ua@5DO*`@ZGXZ((AXrr+B+MK24hIF7 z`TT!60p=6HK0#z$}4 zL`|ZQ6KRx020fk0$Ye9pdF%`^KT9simJ73u;#{q3X4=7@m!7~i!?)juk+R6}uu&+x zCoB+wjC~Ih0mnoE^Ej20Md4-R+35&cB8rj0l#b@>CNPv^MSfFlam^tay&1**qicrd z&f3$`aI&ZEQg_eQ&c2TtyKgmg-(K2vYe~nA`p%n8eISbB)Am)LcJ_YWy6o1hS;z9L zc0}i&lsoogL_H+gN}*|oJm8SVaY}7FDe^xg2|A<+KVgnPZHhf=h}>_A-s7Ke%oMyU z$hA}MSQFTHyL=cfszFKJ++8x1Futp$;oQeGD8{ZwFMnhGe z7!?v8-~;hPV4YZUJf55@5Z9>ZHO1NNfNVPopwr`aYmeW)|ht1FZ-r; z@`L=Vzv7gCPkz78Yy%R#1QXpl@iM5r1kmnNUJ(J>k$;rmeKTM2p2_F`bTIewAK}gg zFj6v_6@#Qk!?95?R5%tNL!~9tXeo4RGM$#jVdsbh`659sm`^A~xmtN)ps`Y+s0bOj z@Z@E|5{+~415a9lHz62!$6|2tKFBy9cr*l+2*;%&N!e&h9-3N6WS7we)f9duNl--= zkLK#8XoBlqNo|SQJ*8#9P_esy@yX`a3r!uD8al3n2s^MX?YIFpkj$fX`GfY=pY-&9 z+0t-h`n1C(HG6Yvu0`hFbfsQ!B%CvZ9cAgZ@=SaE<36$_eW;H*p>Xc!nKtpv8)UXE z3j0>S$U^~9M~wEZN?=YX-kW#%7i`NZXTI^0=Dz!m1cuZ?VM+ud5Qeg2$l*jr3WZrJ zQ_i(I2mQjfsDjq%B6n$G4+*07v!f2EQ_dMv-&dtx6c=2zul}a;jsBSd5&h;4 z@xqY3D8%mmuLXg(GhN4%!}^bH;2tWRyv>)G0z|?K6YK?ZdBa1{*eE(9mCMcI0M}Sy zp-Ne0(2X(ZstuZQe|?q1e_UM1G(TB|Yv9sT7tB2Wy_dQOP6&o$ofvW)92*Bg$N8cX zeK09dY$gm}04J8>=;cIaIi6KP71mHhH8kl2iDkYyswFtFD>Y|e^yp2qW*%D7aHgT{ zLVf#3KpsGl-O~2!OFOPF>%P?tQpv8k-}BG;#Np+u7P6>oAnf*3gh>F|I$ zy0=xF?{xKk-mvKE_}X2m zh3g&3`?!Y9Tty#Q*g+Qe6XmNp{=3AXrxfAGRjwT}`&Mi0aaYoLTjU8x^l5`_uhPCt zY~Ab^yj>c!*1qDwQ}_SmZsFBGQbMLc-Vwmz>Jh#Q49x5ccc2L2RBk$3TFRA85-AtR zjP06`wYH>vj_kAM%nRz2%c|^~j;wouSvM`qJ}J8PCa*aCgcYFDi@v(Kb>f8~dr^qp z{a*_Lac_6z#7`s#jkp6}K!P5_mbG(NO_QZzxl0%`?C^$U{M$dxN z@?n%>II#pxD8tjokh$Z@{E1Z2WS)99KcG<&))gE-kdiT2T)cL|mU|H+6 z=Jp$4YihgR(te}0>sCYG?T+qGflf@ExHqe8b70b5s(dv|(8g8ti_9BXrp-+2E>7?< zamWFA;6|ZkoiS`b5DAU{Zn1ikRJ}=Q+as`UG1<3jt!qF+z$aa{o_r9{j@Wj`6Jqgr zm+K9a`#?2lgdL6!K@lT}>{ONn=)`2McpgK%h^B9ryVjYKj+!&xx8&Uotok;t;&*{X zpGNK&mOs@~|Mb_m3#jy>lyvLF3q$sz5WD-oIs%x3|H!}PHctEtf%LQAL)nFBLNpX) z$;L&)F%du~fE}C1%Ldv&qoz_Rslbj6(s+n?Su#Pk6ohAUQp}`uZRude?f(%LP<8ij zvYJ)+-)J$YfOk;=Bat>=av+QrhGr#VdD&QQA&OOupp;@rRe1VX>_0a$e-c|hlVw;e zaY-+#O42%jUK%% zrC@_TY%`kM!{oOzCEWtk27z^_Am{))=nyAh8{cmwLo>kBui%4(1Or&16Vcm5`yw0_iY#GXEa5l{&fX7Gkufs}$0erRekiC4@NPhtvY z(nRyAnq^!|pDbdhBH@fY`Kl)8lkl?Nx#m7fJM|03k6)uCJoBCbl>nh$h?Q=gcrmPQN?f$X0-IK$IV&N{tyG8;mzz5-ng!&Os!32zpOo?T1)0x6t zx+n+D%7?KlaQrbib~T8_BYdNBcQteDrV0~D8Z${C^;xT*b79Lp8a&lSE zmFDh`8rnW=X#J?M?Ph)Rt)|XfGZ&r7EZUrqf5Z@Wh$LN0<@I8?-5BwJAYi90{#;<> zX{&3WCU67KFvQetz=;PavVNg%IY-;e*A4))Hq)@)Y}qOe-I99d*>$Q@&V2h0Gsf3f zfrJWwgOrUx_`%`9FmfE8nTsSB6Bso#!Bm=fB3nFHB<Cbe~oQGs2Ad-T8GPpgsHZDEVuose)f9<)o;INusRI((6xWzc6&3 zgpINikah^#hJ^S-eXYK}Rw&$o#6@5!@mOjC2(`lqib;|xvS>6_IDsjuqw(r+v}!!P zg324qS4`2{7DXoaXBKa+nZ9!tSbb`{)Yx%#Y3tP`O;_uiuhlo-sBgMDdFJ8N{I$si zhk^NltJ}tt5B}3Qu|j0u9uRvnFygo+c(>NEQR2UuZQM+duB6KQxvCz9vYVqC;ON&< zHEVUIjXeKVVLKl^6U>1Av+qEya8Ee_As>a&`VxZhq*xp?3nc1b19w<+o5s?~RW4#l z>*dBZ=BS;v%;Nz?S8NrZxJLg`SM_b!j%UlyGym5ca1apcg}CX~i5J7`g}`-peq9JS zF1dB$X9Ozm{Ec6+5=M&0Gm=r{cwb~Fm{ou&1(6g7LMX`OL>4PkqpI}xo1j-#NVqwV zH-4HwH&>e0UiiV&FV6PfQ&3bG8W{*d2O?nszR&}Wb#bTMsBxw#+ zT0{|5(821BXgY~84NVz~rk10r6?k?vPc_9qv^h3wsATNMi8J@kZ#cKK?Mi*i2aA_o zS<-y9x&8K%#`h;q-ItOxn3%KAKl+HkuuWlD%h3)p^sB}8ts2*ExoLyKG!ziI*O7Qy z8+L@ISx1%iGi4nVMK@P9$kD8$sMo3t>-l~I_7!)5JMU8?b=94}lH+Ip=C>-Mr;3Eo zcp`N^I0q4wIAsul{_y*RjEjB%fIx)la~VR@YR=~j8vb; z3C8UxsLdDc09A}edHZ{K2S8vhG$xwBh$D-WiNXvVJCDd4P2o?$(I#UVwK(=TEORuP zQAHNkD*P8X;<_{P2P3faw7 zuQ!0|L)Hx%*G_Zv0e#3Wp?ZKL?X-mLiYvJ0NWIK4Z6S$!Sn^J~ZlzGaQLNoe)2&ze zZID|Aw6jl_-*~#f8~_BtOB(gAlI*R+`07UbXnha?Bx(XnJciDn$d@&kgSHrgchc1Z zC~*hHxLW1fE4A)WIuAK=Zw2Jtjo$t|ciX4ndNX!k)RgVk3AaxC3J`b;3t~TKJgUC; zcmJ+)@8aUoj1)92$r}^lgAT`#;;GCu7B>s%1ep>~rN#^RnJQ@^$O95!x}b zsD`Z5Pp{h~@4XL`6}<o6?h;i@V1N?W%2a1!66|yd?b+_hi4>#UMqfhKc7t;pL$*?)?GqVSYD2aKBpft_?U3jPX#8a&!%AoJS^xO6VCe}j z?BXc9IF^kvzgb$5O(2!ITi)&H!;_GVD@wLFDu-Hj2n3@pgML{0FZH- zBoZx|K#nDnqe0_j%n4NSG@7K20)i?O zQv`-Nj*zCL)RpCa}bC1G#fNS1L6nAsv9c=4Xh4rA;xR-6(rm}A~2J{Pp zTMIt?AGQP#KCSQlz#FO>;URz5TQ}0z4~7h+5yAwl1SY7x;Wv}5TF5mm*To#NWL%IZ z9HHAc8=}rQQ*H%hKhTf<+|u@4@kjr|2ka?)-pE}*s255c>(&XkPW-ncAUgTJ7Uvv->;qbu)L9szllmiL{(~Ce1%!z`Apb$|6QW73y z8mDKY*?9v)=(EJYnxGo5dkZL}>8jq1oMSXW)M8yK!=WSS2v@V0cTZ`~^7fJi4-pXYA%^+Ih-WiJ@O=T@OO)#I{``>rSeC zfF|i;TQ;d|do_OB`Q{DsfVDdRKE7dT;<0a@d<2jj5S!9E%11I1rW^^^kAhlYa3>iT z%VTA86r;t4StQXcoN$TAu^~AB{ovATqNt;iurrpV+o9#(1uXtP`@-MK-%6KjK&#=u z#<_Lk1;83UtnQw#5dr-d9aiXk6ImDF%Fbu9HXp?;Pja7jc$ zPhQE!@ssz@oqK%Ak~1@A94xC|o|4@W9lu6l=%K3@k+ic&lKBMDT#jZLN7GCcF5+oB zL;QF%WnUT z5?KC@7uN@^z!3~Mj1`RvCy)wg>77L3M(lVvENFhv3&Cmeh-syyY)*HB^HyWRp1m<)q8G3gOJULK1-nkAg74d_-|d)Vq_6j`ItGN=#R zu8TgXOuB3+{499PpMu7J7ry29|Bl96a^!_vp4>X&)`|ai1fs7#{WkrUF!?!;S$h3X z;+j=RS}c;81f#}5$uVeJ0-2Z2k>=C+86;*Bm6goorg3-~LSeQ{Rv?oUX(X8-+AezI z^?$#tZ1Otzd#X|1S}$)uZx8*Co7X6v=SZ!`2%s4nA729!ZAXE+4tNmW3@T}7v&A(` z-XsdAmdKuf1HMnp2}Ish0%tr&Io<477MrrNpk(uynmv=J92`4#Fe$ao9@1g9ub1i9 zvt<2rX)9B_l*pb>WG|p_mr%G3R8FHv*Ao!4Ju>T9eEwNi(qV&hi_*Hz;M@d6LTc=_ zM{EuVStr%DD74MO_|*kZ)Ic@#pYcW-M|w*~`O1+YZ~FH_VzOSdK!JbOkjg}n}2Ko4Sfxf3Y7$t2EX9BU#)FoVdS%#==7S?XQUy=gh?ip#cDR&6gSZjDRm zu!XEKhwReWxAD~jY-yW7)5MWCl6mvV+=Wb0Bb8TA6E2n*TZ};~oUvO&6Lts1Y&SdC z=>i6&`fgpoKxD#BSL8;OzD1>LVi;PIj(+>o*vFo*3gIL5^iulxY7lTUo)Ezjl*!GD zb%AWzdnlC)8keQe{9z_DAG^nTRnhq3ei62JG)6>o7FT|lehlhmyfF96o? zVRiR>jR+LpetMMrX^ePl8z5ppxAY){7K7&|AZSq#P_Go@gkpnHgitgoia<}IbJEzL zM7A(TB+3);vV`J7KXrkbo$Ba1_wS$uEZ&L2*gd?p-lL3OBMo2!4IdAaucsf>%L4cD z$08h5Vg!wnK&GS+DQS30I!ic)Et*K-jb%!wvgI?#f=MjJOuB3iLpoceU0`vx#U>4= zWve?&|+$6BAVC$BN^-Vf^yWG5tEnC14&l71HMCxXVZkf`wRIFXB z_G@uQt__dd>=(3LrfJcbdO{*M$0hG^g$?O|PN?cR@}&`5KKbz}3a^;)# zJ;LNO$_(}NNBG(>a0edlB*I)oR0IhfN5rQR30Xv9E}30S;+7FOWo-3ipTx7u7CO2a~de3r)CXmj>jY@J$DXGr9h)Qm&HVMBU-vtGZm@y*L?2 zayXn4<%13OMmgcw5ELQI7ZwUdL}Cd^WO^n`P$-a9@MPt3X-R;-#Kp@FoVL6C=Ff}r zAO}X;zI!-RIaqFjLi|16Gx>N}ygmHAJpz2Z0%5)`G$IOvh(Y;AqhYZWLKc%&#G;q5 zSrtrn1({JqVB~WZ#>^vZx-$ zn}?B1qljvGl3J;5l2A24qM54mUm(-Xm1yQz0$copT9o?vJkd0cpiZG)tT!&x8rvMf zLr&LPvtO@D*`!f72l)3}t-XP*j|;eho459zd&gIg@)9ASCOF)R!G@9O*>urFj=n)^ zTduLLk{DJ>O`EjNL%OI_rlhmlq>BMLcf%|1hp&D3oD}76$uA0!YnW_x>%?%88YZCb zZm$;si92}WKg1Zu9{tuwJ%+$cKr@rP&>$$!gkexoL`o8!m&2A7vsGm* zO@&@wZq=6u3-W^UR+n7)Ii5NG*cVvm6ps-m%t(KjkK?_O7OzqM-d=&;UQTbXP+y-I zI6N5+PlZ8KaM&C!r&=T!%K;+6C>3$Xv8km*5|E-2v1X!BJ)I?*&eP5k8Rqb`)A^b@ zh2Lzgb)LdBLm-(UP|ahh=Q31tII>w>&SVy)oF^#c@r${4I^6?|6t{ z9x4b#hb6cO)I}SUsTd+hvct8d`AAntxTFb=8vpxjgrS$lY(R zN9<232*@=|wz_p*>`$zIs*(NvABo{}2rQrziC&nnQAj5Q8;&4G z;c?+4TsWB&MWx3vxhY&pmOz;&6&33AWm;CUsc>b<)qfRQh~M`qI&}IwzX5R)fhezl zks~Y~K0!WScBoG<3>pE0#Uc>N7;H8UmrEoTv6xjH_GlKXipi*?(<{V+8aAUCi%%ia zGikgcDz}`*8AIXLu%&f8#dMBzsz5$Xs+lQK&y*?`$PM*;{TvWuAvV^D)wOKUpO#G| zWl?AaJi%C=Xd+)SMI@Wf;!mQnYMJawKq{E5DGcTmHg7hIH=oI#tJC*bZL4jzwSIo9 zjm9?Xg3ADnf-AqHq|JM0lo;Zz_VLk^sL>2gE|pg;)GU@+dWHIKj>k$=(Wii%rFC*PK86HonYp4=UN)>yYrxOL*c8Uf1%_qx-w5h%R+|L{us zu#9*FGZ8|H^2UWj@DVVe6ZjA!HVB7y;4lsnDU`{K;qekcAcfpiA?KxQ^ZH7zKAumc zpZ*3aseISd<>M1b0s;edj2Ia(!VBnx6AB53!{d;MWHcrdM=YRHEBL%x0e?J|Qcfn7 zii8vOx_MgFG!~-}jgCX(V=#nR3?Y$3&7smO*!=N)(PX}8iby_Fteh>7&Qj`{W!l9Y zxnUPu56KhHh!ZcWlRs4FUJu>=bkf|P zP<^W!!wx5e;{;LrPyYlR}>9>l{|LI|kOZEeu@S(@~&|)E!7;i#^FA3PRL%one z-f)L6+<`ziahOmNE`mkMVv2Jmyfk_6+?ah|hwc8%laNgCav?keJVzNlef%JZAYW*h zuWuv_8iz!tVsKe#TmgnqLIB!8swPuvxx8sS{&XgL3X?TiAe=3eOrle>FxUtJF%*lo zW8ncju*^kDpb?X(P~CW21m$NjbWu&-pvzs5Sepn ziJN0j{fR$o6J(^=$3yy_w;75ELE{st+zN$xX<+O&TkJuFZ3{!Wf@c{LhHMeX?w2N? zk!Rk}XWTMRxSezPXG{Kn!uD-A4#+jkw>q~@3>T?k0_yJedJ%|m2V?&SJ2n`|tS!f} zjM!0>=#j)oPeP;zAp%Z|^}t2_78yPg72$)5grTF*s3twzJ4R27APtNiHd zK%1^Itq2U+>ImJg_gf>9^)flF80K7J#Clrm-QNV&;@;(L%)I%xJD4STb6!KnsHN~ddph(py;YwCmz3k0dftKt!|wdE>gn; z)ZOj%B9MH|J)iiG2!w3A z>#L@xqHJ!vP;wfhej2$BX4eHQiijY%u{dR(W9mT$Z7qj0~c*9omwJP^x`{4IgcmE@# zZ^Ja=r)LD@8YWxaIx$?Nh6$*<+v`OjeGf)zMpKv>7jvEE7pP1kyIKrcI!2qDz+WH9boIO;XJYI&X}CmBaE) z5Ya+2i$-^^KGApJi`Kml8n$1bv;0I=U4L%wjO^rz8hI%RACJQ);Yb-cYA%*mK;>1^ zD3v%&5e`#Gz!ej4MPyRtL_cp&5fZ9}kVC1w625w}&e>%M-(-qAW=y;y4m~Gu9OpRqi{p+8 zeh+jA~j4v-Q8X<0y#JT<0$#lYtdWVNIUig z%rOl^Nk(%LAk;84%IOUYf?-3^ga|P1qwrA#aw3JEMxv!MsqqSWvcE82ttde;Qr-ix zc)lP!BHRZO>IDtJuQgcL8Uoj70{Xei zM!up=Wm+xOuN5g42p9XUDu1b1 zx7=XgqPDD8SXQX4eNsa^U*0T`wo>_BO#WgfK0VGcp?~1oq78piRb64kA0W7PqiqKm z5vL@n$HXaXBneB(OJ|0=N@(O@CIwizK@rvoBHmQs-~>Y!AW%hUTq)SF_;Lz$ESpou zWY@8{GezCLNz+Ev=1{rccTbV)x`+$k0h;5hR~;!=P6o($)!A|fnU zkO`4jgpt*-EcL3$b=Hhifd$v>x!3hEr`54%Ejc#=%0AJTJkXbX8neYcnfUp|YxpUi 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

    dRhMw3VwjvTBnBJ#}) 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

    >aArr#=a1uo54Bh`qbAZGeb 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 AD*ylh literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/DisplayBackground.bmp b/Jack/Launcher/RES/Lang/FR/bmp/DisplayBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e2f45536127eeeddd7cdca94cb9f3823378744a8 GIT binary patch literal 709256 zcmeI537iz=oxj=Sv-{s&uK>aT)59?X1Iz$&h>D3O8t*7^RWygIi5iS}#M^)u0gQ^G zNi?pvyNbquM#PO50)lvepol2u0P%=fk1!}|f(rHj&b;t;O;1l#HPh8yZ`H%6=udU^ zTW|f|=hyQ-{k~Pzz3*XHtoZj1jsJGj{{i~{oiBChF!i50boi$Z-5NJH{p++{hYpSZ zxBffl#dmkO^r;S~+{Xd|2tWV=5J(|`g`aPJ;++qVeB@OY2tWV=5P(3c2psXqtMdM$ zFFgHwW)lkpAOHafKpe@(AqvviHqZ-q%)o{hr!vW<(w%!U6#Z zKmY;|NHBpx3qO0hX-Jqe9<(0pG|yv!00bZa0SF|Lfc)P7_wO%ix+(?_CNjk|3IY&- z00asUkOymi_m-{^)zl~+EC7m^AOHafKp>F>=>`d(?nVQoxHRCchrzB_TdrD^D zIhA`{(|z=;ic^<&x$0dtIl5fHGdi}^oDu?fFeQnOLo++y{b|KHf9kRCJ(-#_GBu}W zYEI77{3z4sgiN0wW~zUXq@}9n_{OEW@lmbovF{xf=l(&>FK!m#SzMmfmRbUMFtw>K zX~XAwU4QnM?)%-BsX41@04ND+3}}Xd<1&5CdV(JNo}8&ZQD(2IKCY_z*s2;W$M@L( zuC9~b?liX;-%<$A;_~FHBhyU)50+F1seH3_p7mM9>91t^{WMc^PLl_JlIeSHruOQ} z{&!UNpIJFzR%QR$Nn08l_1ntYTQdDF)3CS6hToSEHU6zQ?Ii(e&$|wu#pT(aT(EC4 z2;jkF!f#j54@t+fJu!i9PnS6x`!+4pKir~%X-u$ zW@+Jf_1^W1H20gS{dwcXGu8i@={vUZTw#E}P=6VCZu#I;B%Xe@tf!d(9!zugBW=5` zX3QM)``!aC>pgHv@A~UAb&oa;1D|g`2270m@;1aL#QNtO2ZmB%zl*ABbn%QXo0%T! z3Q~ABd*`&9XQXd_DtC(j9&{^T4n^DTyw%n9SN5)x2e0T^|6pa^GtK(3#!1n(%e~AAWu9uwV7t<@%n39%;HLbZg(0ieX?&Gj3^q(`7R=8^19}?m^*g7tbKfDU%)ocrZP=E@ex*pYewQBW{oiYlcp*(qOROe_F7mBhs*C z>&Jk`Ydq#;YAoHFSlfCtl)>r%F~_c6~5+U?f5 z5jXc4GAlF4e`YWZ%4@BSTZb^ZuW-O^8Vu^T`tFC#4w4smw(y`Jx1DDY=9Ebf0X&$V zT$i$?b%#7Ue6M?U8FgpxA&>heMOza@dbXRc`#F7)PUH8A_Z?fg$FG9q1)ljlXjK@R zXAtI;Ne=-$n4VmhvZcFzbM~J5J-FLG_w^n!uj#vDO#h!A-?i4#CJyzBD+fH7srgB! z=Es@3@j>ze&q5vy&oc;f%A|(?9!yWJOWD%h4|rss!ye!3pogo6K8Xi?eYp8Nu%vR} z>`cwsjaSRmT^J-U@boeCf5vDd&mhbxlO6(iFg>|0WlKjKwdjzeo;~Qug|)jbsLXza zn!g82=ep^)pQ{}3yG9T8J)?4u8-nBoo&`M^nr9H^lt~W(JeZzbm$IdGKYaP9<6b`U zKUWOddtuceeVMlD|Mi$o{h3y8fuQeL%M83L)Au~7u=}?k4w4sm=6mO~oo5i{lt~W( zJeZzbm$Icj&tChzv9BFB?)AM6UfgT2zEhO@CboVO&~^R;=T-H;uB!GtE!|FC86+?8 zY~jIn@eIP8GU*|J2h)@5Qns{W+TV^j;nkDQdgtg9U+X{eY2VbSy03H&3Ags!bz8Ee7E}$qqi6q1s`_2nW8ayOJ{7i?XDR;{I9B`#;KBIk z$k7O^CcHiF{13+eeDjabdvD0s7FP|@Pt$JgzP7BSVPM#-$@;SKs=8Ud2VSNhqUtr^ z(u#Bc96Y)3Z1P~ycm^j=$;1=DgNaXZxf;0h-JkAx@@jeT;;G(|$FHv4_1WgLqozYk zwhEhd+WOh4szHzGC#af!ka1Gw0S|@x-6eRo_#D+Pp5^+x;J7g)fCpokl*EM8{j&E? zKIi?(*LoAL@(%sZA8U72$F;cm1gSMel7wg*wRNTb`Aq$@y@t%`Gx*Lvb(i-ZFs1jv zpX*0;!zLP@TU1yio?-b@KB)xoU{W(1i+0WR`keol3#NR2?JeGwzxKX=@;gJn{(SGD zO#{PbSCGmViSgi8_nEoh#%38m=;^+M+ep2g)k zFMJBvC5Z&^VCcRmiEo4GAatJfS?#%hnRJbJ{q5c_Z}ZNd{P}+Wv8ry5#kz8)ahf#O zhRr3Cdp^;rSM`JG^^1EBeyY#VCu&DLFlhJN8ozja*PEom9w)ynENx>B&*JiITNchw!M8Urrs zy~~^dBWDl$>dfJLO&>Dq4tcPC_glOFwrVgh)u#K2Q}xVc{U zpTGZ&)Bd7!h0|{GesOE#H0ikWKiX&XN?l5-8w_hlK9!(F-zGP&|H#>c_n598d$)aN zj{N$JpuT3Ai=UpTAzNhx^1>MhI ztL7K?%?8in@}#!Z62OD0O?|lO0T%Kkk{#PyW#L>h}ZQEZ??_z_V@K*b4%d03Ng`Sb+cpAOL|B z62OBgOgc@500bZa0ZRZ6S`@5600IzzKne-q!4xK)CPM%M5P*OsfCnuKRv-WY2tXi( z1n^)AlTMQ%009UigeZ^o94#Chy2cUhQzo zeOlK)J>6%8x5Jd#5+zI02KDUrs52P4Hx3jqkklK>u! zXI`R<3J*rdmYN{|0T&72K^L>uo|y4qd+4z*1R#(+0(dZaIW62GJXn|yuR;Iq=r@at>Kmh`6_u$;ko#t-tJa2QCd7Hb=_bOP*O+Z=bGT&21l$R|_zHicQ z%Xn~Wg`}JJIRqf!B7xlQv3cLv9uIb&yQ#^jc)gz9Ix1|Q>-Kq&bn^~}00f*Qkf(cW-Z!?{gPouFV&|D} zce!y%2mZy0z}cQRbh(CvO;e-IbKM>flI}PqnOGnIfwmCHc8|^b#UG=#IguHNV)?ifMO7UKwJrAyT{^saPq9Uwm7A6eRHKZVrgU^B;6@} zThVL?B!NJ-d&GlD$Y-l<$R@hD^P*-vhzDB*&kGQMK->vryGJ}2_gu9rzHFlLV7oxF zGXx-zGy>V~5f3IUx6Rs~n z4~AvuRQYV8@t{+QBUlJPAZh~H?hy}0&AP1hXA_MF%bExd4gm3tgHf|CYyH_ojbjhBOY`;mj&a`CK?YG1jUOGfI!*^WV=T^nCRSR6O9KG zooE^d0SJU8knJAvU|4oemCq&`4?2}Nf`tGCq9%~-9`Rt*tjk(|Hqm&ntcl>@5P(43 z2xPlQJQ%m!6g8e~qVZr+!BQCnAmBQIZ1;!SO`EMY698r5f4Vqx~%nQ z6O9MUng|XK0SLs6K(>3tgK^7EQRB%b8V?o~ER{h30<{n?^q z8V?o(#fuPtK-vgoyGJ~j=-g)$jRzB*Xc`9r2!th&?H=)9Sawd8&n6lVI+Zwrg#ZMi zCXnqO@nF=f%UXXn(Ri?|iQwQ6fI!>`WV=T^7`NOMHJ)su@nBKGQW*pw;5vb9_lO5w z&t<{*vx&xo1wrv51R#($0@>~n4<PL?@cYK>z|_31quRJQ$XpQ{}UX#)D2J zj$k1Gfv5>&yGJ}2HS4n0pG`C#ENdb-I0PUNHv-x25f8>KH${ynn`k^(RIpSA0SLHG zAlp5L_h65@W%-uH6@BmR-18dO$s{cPgO7P*&x8I@HCQQInlEe12JU)Kx8CQUc+Tct zyS&nC=&I^n|I}~P8?}4=W#Bj8t3RY+$dMa{9=BoGxQ~XPzhUTQ9}l|z)4q3a?Ed@D zJ3sze$6H_8Ve+hm;i5SZfIxZ(;K7vSI-mznI@`-@$-EnT4tcrXsMR%lF6jN$87aX? zGa&$hKU<~(=?0SG`~3jsWslD7gLOi7|?CIlc5mH-|MOU%*oc+kjdzi>lq9fKOPJSieeCeK-vi4!IWei z52hs1G!p_42ulDDh9%}`c|7Q7;s_f85Qv%p9*mlBOzOvjF-ZhrKmY=9BY+3vmXV0! z!GjTjrCJC;z;yz6(De)kj2{mM1Vu3jKp<@d@L)u6!MJ54qImFNL|~~F0uXSW03LKbg8}2mg8@NN3<3~H8v#6+l8ocQlq8yF zLI46`3E;u7#2hV;2OUiuVM71{Q4_#}Q4@|y{dh1Yi69IJKp<`e@L=3B5>Y&OFe0#2 z3jqkYP5=+Op22|eTU`Oi9M^U`i5AGa&$humtd6SYnQr$AgY0j<6vB zfv5@K!Kewxq<%aYlSB{(1RxMM0(dZP8Hp$!JQxvJs)YaqTql4BUC&^^`0-#sP!xjz z1ky$T52hsJcrYc2rkN0cKv)8JFf1`g%i}>u6Gzw(fI!p)@L<%0V^TjJj7cI00|F3; z8v#5Rw~Ry-4<3vNEY(5)01mZ>j55_Gc5ygWCBLYjc5P*Q|1n{8i84MUd9t;SIVi15p+6dsm zlw=$arX(Jm_fR2pa+rh?)Q%jGAyv>c@jINd#d)00MC%fCuB2 zk%;2KgAswHS_nYEbpm+M^$Z4#9}fluMKK6KAZ-NjU`jHM2UC)0nh602ge8Cn!xD3} zJRWp3afA&42t-W)4@ONmCiUaNm?VNQAOL~55x|3S%Sc4=;K7K%QY{1^;5q?3=z0bN z#*YUBf}$7%Adof!crYay$Ac+JG|hwn1i}))gJFp|S{@HNnmEFS00g2YfCr-{9FzL- zU`!H07!ZI!+z8;oxMd`wc<^9EV5t@Y5OAFU9&|l}0prJm0YOm=0uV?W0X&$JjN`$S zB${SI00LnN;K8uO94(Ir9ZeizLjVF%6TpK}6OKv!(R#3IT1=Wr7!ZH}1i}*d#!KGt z=e;iTHg}rm`Iio7-co)4n~T2ip4sFb`N*psPPtF(`lqM+tnhZ2GFt_D)Gf=mEUxH# zZ|9!ZgpGvqkrIf~gEKl+O^q~oDu)0BAP^ma5exr5_!&GH9pJds9GM4~bgO-+Q`J>* zX(w?&00IyQNuc+PHGSr7+<7kJ!I0owD;}8#mv$exuuJvb9W$4IrE*fo%E=uorzB?C zsp9PIcmAP&(Uyo>S2_5mPN&_o-Gu2Z5P(2w2y8!L`t}#!yVI4AcDeWUu5&ha!h^1P zEo{8ed9X*_^W6t5sOUFKHtbS;XEK&yqpmyf;P3C}`&V6EZJ7VdztwlFoD@YfYyRWe zoo-md0s#n=h`@g>+3DsNI^MIU^TQiD&E13t!)nF3@=1p+X8Y^Ox4vykgAU)&-`THZD%ZX zIMr-wkf%(YO~Pu7P?ei4Mtp}KeY^HGTNI&+nO#<|Uaf)P+BZKj<@KmnJ9g|iW5x_K zK)m3B3$&N1cJKYC`U6m58-NL;4UfYw+~B`*n{^04pj-sFZ^HDDiFqus2iLy!4_Tw3 z;bQ~Pj=2sRv&v34ju|sX5;0Hb%$cK-^2jkK{&AaIB$x9qeWPLhr?x7|Ys82V=2(-i ze8FtD!dm#uM`nvo_o>WT z|54Q{&M8-~*4WT)pF3}f2|&_prwRw``)jendTVHb}2?|zjgRT^E8wPB|$47|B5k@m0Dg8YGh}3Q4Bh+o*HXw#atI-3$$E$ za^c$A5s%z8<9+jzYItJqLbKkme&fiId#h3Zw&Q+n7zX-x8GbTD!e+NK+kS}^2$Yfl z9!!h@O+$iv@T9Z7u#3MBH|uuXr&DZxk~-;TtZ~y#H);Ff-@Vs74er5imHXLKc&bDr z%7-4^GHQF`iTSEi`ZIOr^`J~=Ue%+SP#tsJvv!MKwY$r4S6p$$#gk^3Q-ovBS~Kc^ zm1>wSLMC2yavjdqY_E#qI&q^PD4ty6+~@O#HjF!h)brKTu#ENe!s+aYIO56XQu z4CBFn{?~youK26j=pPUM>c&@8xl*qJ<_(|~Y0eIHZT*_{)m-b(u6S0DTDOzHIb=eC z-Ld~^9flpp0s#n=lK|hVmH_$rnh?-~<1h0D?s`wCC8xKyPpvPkckGH$*uQr?q75Fj z)1FqH_K0Ssum^?Yf9`(8MDpTGe>vv6Cu@tD9o0s8P*3+gbf!6_Xh*NhURb5mhz6%l z1)AOELE}yTqbZXUl6e}6>VVyU^Oa-o)W=a42tc5W1o(bY)2AilF`x%EcbB&hZ^K4S zBpP36x>CxRaN#sNLNt@2x>B_L9@I6WHZ~2`v|KXzLF*~yZu^~okaL}k#%nsmXoE3@ z&7<+)FK^g#rHy>8;C159HbfO#Y5I4x>nfmOqYbG&EA`+0sPkM-lR*FiWg{T};=yDX z(6plT9+U#ibma>#{#h~jFHkX)qAHN%K}l`&QClwEG{e1?TgIJ!xsi@e&zYvlYZ?RU zGEp;8sWXzMfX?ozfM#D8EXq!MYKxh-+_|Do*VX6(QSE4*C=c3+Q%O(-G&MSKkL7mW zRa;c8sb4nN5ih#r7CQpf_)+z1oZBA#`S%?*>Elvf6~M6|00BP%JZSpZ#5|V8gZ8>g z$wkI7`mmFty6nUjkksT9m62Sm=FAqk$!sxZ)O9lEsUFSnO;>5!U6e079yB7;p|xTP znDT4i+;YQ(xxQ3_UbAM)Rjk^Qb1R1`lsEk&N?YK*-#ua89;3c?ys2NoOS=_)w|PT- zt9M-bC8+iKLmDa`-Q@qnWE}z!C>a4fm>2_^hLpvFc4|~cv-hE!Nl{%?X$ONwB6%M* zEqU;vr}?4*aO*tq;=NBDUX?fnAMzw zYY(bo8Yh|=QB|TccB<3Vu=b4)_dk4rsb6Ogb6z!NbVaD{4OH;*skztQ9=)OAlQYko zrAFBZi?vdB(7JAqFeF5U5GVryJctL2(v#bp`>Zk~5qqb(b(|UNiTPniPBkU%7G3C~ zA(#|qGGcC&P;Anubf!hxGI#cwfUO5LQq!@dKW)*0S~f>DXuB5w?zWh=oBGY}wjl={ za)KgJJpKT54$Jp{)$81v2_`ez``LH%1aX=!#>JwZaU`<8y-79_m3 zm8n1Mqw;nL9328FB!CC;VB30Z_KJc)X3+9ou3|{YkPreTC4dLgR>uAT8& z#e9zi0uU$)fv)qtF7v(4^R|Ax#DfVlU-RZf^Sx?~9;~ciT0QKA-49rO*s<%!ob->Q zPuj>59f33N-#q$#j|Bn{Xg`5(f8dS&z}x$Eug`Pd&N84TTkv3WaU|?nbRNtMdbW1g zMF);~{fvveiPw5le#H_Yft!BkUF@+y00KoIFwygV;dwWD-k49kUQaiT3h`jV%-6g* zk$G@Q<-kWP`%iCvG@d~K0uXS9z}cQRbh(Cvj0c@bS=$1Q%!7-&^}BE9-q*D)D)xc^ z1Rzj$0%P9wMlScd;K8zIBH{p|^I%2adpq~MCgSj^9s&@6KvV?wU*(Nhh6kg<8=rdd zV0>~xBoKf=tO$H_r8i z@_5kE#1S?GAP_YHJQy|MnADF4W0DBMfB*#IMgR}SEh7=dg9jr5OSKSyfa?VCpz9e7 z7(X5i2#R75fI!*^;K7t+91o@>(KHhR5C}^E4~8Y?Xn8#7XyOPP0uYFr03M8*a7^mQ zgE2`2VL$)^aU*~S28@U1R&r#0X*n>1_Q>A2Lpnl7z7}YHUfAsB^k$qDM>WVga8D>62OCDi8)#x4?3DS z!iE3@q9%X`qb3}a`te{)5`;K8_MB%*lmU_@Z476K4(od6zmJ%a(`$AbYu zQ49hQNE-n>n39a+!IUJLWDu*4iKj|Ux19AQHM0#OsdgHaQXN&R>*CW#;n z2tXii1n^+oG7?cdcrYTcR0{zJxK02Mx}L#+@#DdOpeP0b2&9bw9!yEb@nA|4O*0_? zfv^PdU|3>~mdAsRCXTQn0D-6p;K8T~$E1Ed7?VU01_U4wHv)JtZW)Ov9y}NkSgM5p z1Y9S82VKu#!1(cCKu{Ee00h!T01u`l<9IM7iKdwlfIwIRcrYw6N6X_uM-xZb5P(3` z1n^+ggkw@a9*jvM2m=BTh#LVs7`Kc>6b~MZ2rSh?00OQPz=N)5Fkt+6Fd!(3K>z}2 zBY+1}l5sqkl0?%?2tXh#0X!I%n4{(KpreT+YzROgY65sLYQiz89}mVP5rhE&2*iy5 z9*kQ?B8mqOMg*2>Apil_3E)B3GZ-*_JQxrZ#UKEIv=P9ADakkjdzi z>lq9fKOPJSieeCeK-vi4!IWei52hs1G!p_42ulDDh9%}`c|7Q7;s_f85Qv%p9*mlB zOzOvjF-ZhrKmY=9BY+3vmXV0!!GjTjrCJC;z;yz6(De)kj2{mM1Vu3jKp<@d@L)u6!MJ54qImFNL|~~F0uXSW03LKbg8}2m zg8@NN3<3~H8v#6+l8ocQlq8yFLI46`3E;u7#2hV;2OUiuVM71{Q4_#}Q4@|y{dh1Y zi69IJKp<`e@L=3B5>Y&OFe0#23jqkYP5=+Op22|eTU`Oi9M^U`i5A zGa&$humtd6SYnQr$AgY0j<6vBfv5@K!Kewxq<%aYlSB{(1RxMM0(dZP8Hp$!JQxvJ zs)YaqTql4BUC&^^`0-#sP!xjz1ky$T52hsJcrYc2rkN0cKv)8JFf1`g%i}>u6Gzw( zfI!p)@L<%0V^TjJj7cI00|F3;8v#5Rw~Ry-4<3vNEY(5)01mZ>j55_Gc5ygWCBLYjc5P*Q| z1n{8i84MUd9t;SIVi15p+6dsmlw=$arX(Jm_fR2pa+rh?)Q% zjGAyv>c@jINd#d)00MC%fCuB2k%;2KgAswHS_nYEbpm+M^$Z4#9}fluMKK6KAZ-Nj zU`jHM2UC)0nh602ge8Cn!xD3}JRWp3afA&42t-XFDi2moi#l@Z4@Ka>qgIbP@U^PJ z%X-u;?NO)4+-2ad_jK!h{z+$hEnjMVi>g{&(f8iYq&rkHC=3Az#EHN+Uh;-N?{%5C zxzjw)zjQeBmg@W8T=a$a%qH*1M_%o4%6(ebKRw-Ng}1|$*(%UV_o$9>MyIN&acU*8 zblCI27k1ruWi%cn-Mqmd00D;yj9B>h!Os-egG;*AKGdn|DuU?LwO%kR}4XXRPTnZ{yB$i#Q%!+I`@{F4cE;%v}DJ%1Iq7CwHuz!ctBG znag+XeSN0x_dN$MZjxYeJxIFC^Y*SBa?^Gbrn5i*0&OO+{ebdU2E>q2)(jyk@6CS2T6BX@>_HC;+<|-!U6#Z zw4K0zE!pYj7dqavrt`xaI?dfwY!8~rwG6#$5P(2?3C#I?iv)`~9?a9nwsJ*Hp^{yyr+4mkLq*@&dG|H1 zszA5?^II0sM!lq^dV+z~a@*d0Y7jw{V{pW4nSg3(5BWc=VwNk8=pfR+` zgF!2ArLiG)-^w;mx>dP(KXj?SYb*IJ^eXy3s2!WO=Q);1y$ZDQHY-*NY(05mXd9XO zZ-3;!s*QCBKp+YN?YLev{~x8ftW{_XGB^>n-4_C>*s-H2u>HQ^ikItv7upu-9C5T64Q@; z>B~Dxh1cKue+>P$e5=_iv`%qS<3iJE3@whd#tf%t$BUz-%M?KT(jowqmMbx&*=NRQ{=Zh%Apn6W2t@6{wQv2y^hGz_bd&lh$EaeVz0Pb|x^(HX7gm|| z+wS;Z^Qzs~JUwX4mI8Kr!}=}pNOmftc-DW|bi?G<5*ipD{@r`cGu!3b&V2Ri)r!iz z`r`68jS4l8$tjNqtywI();wqnQaLY^e4RfkjURJrXgOin8qX4JAAgx=zE7qN$MUCJ>z0H4z>rhGUnZ{yd)96lp0~zU z@0o?qd}Q$|YbT6*Od~}5=|wXM|F+|PcFd^HIeHgq)M-91=^bc7vTsGbh4kJ~85?RF zIFw+Q6VLX(`o!m*{^YSh00L1H2;xC?n|T-8lb97N6r&h@Xt$EmXL5Bu(w3d2w9{fL zcGmbOe|E*QdepiWQ=2}qckQ;js?xruX02;t)2z!`s!)Y(|E8C;#m1m@{j(jlJ)9k% znjozQ{XKb(#Uw{ltr^m)3stXcwwQLQD)ZDDhuHoQQYydFI6 zq}vO#RT8ZSP0IX9pD|;G3h0xGHY$~R7ip;(a+{u-lYp9LmnHR2xibecVd$-BLyaf) zj{SbpVc2mj5P(1_2n6_EHJwq)yV#z@teAdAkEXw>A9jk}B5mmc1{Je?n!2OL?y32| zMs;=QAhj)jIeXs6R?@fMkogP$Y@TXAl~i|^V;oz!sir(0v;mkJf_U)4i?>XBTA8XL z{sXBh^VI4fC#sen%*!+88*|dFr#T)p%*~@t^-4g}kS&wfgLzLE`q`?soRlf)wocit z`8%lbnVGEK_t2U4W0QPcGql?4J2C=G$Oe!pn$^`f@7QSYQq zPoLGz7R^bjH&e%`k(BMzY+?V3itRq?DE}6--mw1Db0+Aft*l1X-Kns~j5)@!`|4Hw zvmK^Ym<_p5;7O$nD70qxe_4dN2NmssLUJc^G zmTdL5$w`^tgZ|^%b(7ikAAWAP*p*-2@PZSZYrpzdpWkwY3?~O6P$B|SZP7hwyB)Kl zj?wgi64Nh!{hZloT&b&KY+q{T7%!T5mnk57YA;<5p%aMeyQDmIlCvIq&Ae*P@@PWL z&WoBUGV`h)n=}~OgE||fZZ=1bc06dNUZpuZFRG^LK;IgDzKz)&_xs09GF$8j(TVOi zY>+m07Q0ll3mG;UgBRGAU(kVhyr>?E#`DNzT=RU!}wc%4kZzkS;W=3O!7 zvX_+H_q!*IGDdyvcvD_x)QA7cQ(rYtO?gR2r;w)o;&1Y49dG(fCe`|KX?Y|#4 zTht$FceAcX^Q!HrO(*Ohkg8KvN3GLIW*1plTl7ym>d|a878@{V%k3DiuYJ!{JMQ$$ zO#vfc>rHLc77Y*WIZabT{5#%&Db6Wo@tO}U`oN&`zxE0iGY=s0hLuS{&P3>tkrU0U zdD+TnV!M3Bd$tCpMt9$6ySazu^|c?ESa?z6=Aib9-z%^BwNj=x#-I`B-TpuG ze>(mWJ=Le3oQA~eX|JKH>Tmp%-U$K_C>en$#)C!{>RWW}rJd9=!#%xZx99?R^^N+( zuI@{ZI{l}s7qrWkj`58Kea@F0%~O4Jvf%wz`MK4>NB)5~ymnA3XGV$-Ga@@KEV3r(DZEjY=7o?v#cyM)oJIrOacFC9f{Ja(C)s^!T)1+ zH(T_W<3Wx4G~uafF?(nYG@g9wEnD8M_~%7c*myw`q4u^%TT(Hb@5ZrhRC(RLZ3jfE zzu&MKq0Hh|;k+JH6D%TqPOu(SVZCH`FwjxcZ z+gzIhN{7CNDCUGSgO=}d)yF0K7|ekn009w*&Vw?M=BzYNXnG+tVP$6s)lJDwIvc19 zVAK<~?449V-Jq71FKLUmt4Gx$Y5I4!U83=zxfxJ}wPNbA)oL%ZZgyF^>_v6j2OoNx zJ)AmQQ;EIGMdi&wB|BT8EpJy;vyQ03c1u!MtkleS(BQJ-6Ii_gbUseaSKiI5Eysff zPF}W#r2PbXrpqW#s4OWb2{n|;|oPgIuO7D5QxZwR!066 zbz-JVR4=4{Nu8SpaXN9M?ooq8&1Kn7^6lxS>=8|`8>A{TeA6VYb}`CRc%~lzbYGCF z(pJWL&|>$mXii%^bp?yrXa<0-d9VOFdlX4fInw8o0)<_FY1m{2gLn`Er6v%?c+lS& znst4Vi(hjZ#2Nc&{`1=F7xe2tO8uMv*5)?%X7aXpX%Hj?5=Nlx9!ynVM`Iz-8UY4_3F}&Ejza|S zU~Byn+aXXg0y;BT@hF2qCPg7o9s+o~>ws*mCh-B^$Ov%BO@t{kK2rJQoW<00LzrfCt;z+3Hpceb2UTZOi$mufa6;FzW6| zCw~3BogCP`Z3KGl^2#n#KZ)*xE;T~{0^1~j2iw+tX)oO!FzbJ}{2rpcZ_dA>uh21H z4=y2^FTHH@vDh)G1a|o@_ezv)6tKr0-^z>qo8wxLe& zUNyU|uD^kwmcWA$C^LcNc~H7B=jq!2#UrYrwW@U6xOJbtLsdVl;6I!!>HjitGe?^9 z{We96Gr^`vcGHHR%wVw09bihvJ2bN}f#P~l=fcd`r?sDW)AXPzphtbVsOjbOEtGbn zykon*yxaX7ZAr5-bdPEJ0al%-GrvivI#t+Tp^Eu;w=ZeM2A~2ermrqJ?8vD(Rq0fq zTxLq@CF{X%m5twfsb7p$>kI*j&;AmSikYw0v>w!t?rk&9oTl+Kc?1UR`)?XFj0GPn`|)2jE|q z2PJ(C81<#oYu3E!f2n1hwo$Ako51i384NNQgg`6^6w8BtcbI9woUaV^&lBpG2#lWc zx=FoX-tGR4eh=E;$#6E}pb~ zyXn<6PpDqqEc(qj`>Iw<0gaFHx+#JXrW*QB|_`%?$#6Ixagks_RD7tNZ_H+R$1+D>{ECOSa~_*0%elX~%>95t)XWs#zm1 z{|M2HJvA-q-(9h(206N=2mNuHyB;*K)h|%^x0~JlKWDEdtMJi3Z2SdYE&d-|P;>kr z5+p$dY0ec&kv4ww8&8Y}g)8yP@NxXuZd^LRn2%EkuQUXT=s~}I{MN`>mons_0_W_4 zd(dw&9Yubz*XLNjG_3!JkxM`iE_)$&U@M18TQ9B5juVXs?N90H(A|3;u0~1jT8yK0 z!HgLZt2zEbtGQ;z`c6N^XnwIsZApCpPXk4u?!dqGp80uc{<=8|1RxNEKoLEtETtTC z#cucSZYDf+sf_$?3h06vGa@!Y=ADu?FXer-0ke`k0=;%wHSBV}N|eDM1mZ=Yh#pk0 zWk+FF87)_&6*DQS@_F6V+ID|oV-UXw?bV*Gb)Np+{UWmw+8T8AX--4*lIAmQNxQpj zyZ*z^?e?4%GbO7~=PxYuwKH}vm9+PgwAKo?J56BNiOh(`s{;%&SfEVe2^80Zc4|~( zBBLtZb7wcI!#9(n_D;IIZc;~=ce{UMYaYz;h=i+SY0)&Se|IA?eeI`zX4QI70qD$~ zB%5=2j1`vIy=KU5eqE|*2OoNx_VRBugWtLHme_q;TQT>N*zv5>y*&kve?jo;=DR1`En3lC4E9nM z^=bY~E{$A_dUWxm-OFy5Q|v}l%zwS5UNR+B|FAu8vL($3G-o`hlZoc6-}nia*^ z9$2HuOC~>P3md!T+$pJzvatWV*K{B~HP_JQ?M2z>G=chWec0>%&r;H*&`bz8N1*5) z^v?>aZO|P8I4NQIkJ}B3}{J#O=-(BYi{bNS$r9qr7>9M_;&OG|dn`(6{qRu(mGFnk%TOQiRu;A(U zG}S3(Yra%A)O9s^>TLK#P4m~udcp_{KacMbjpmdr+NN-T|7tBO}<+ znd$5NUN9%!%&;i$c5_SM;YZ&-`l#zwPfk@*k|rw6qQR!*nA4rMtn-9%kD2nSIj69F zs;bPQ`t8P?6&*`u?9nxxRAHm|*Vn!$xtpdLap%ODQx#7WMqrm?H*}th1t0){SQCiC zgEE306WJBb8OnqHF_(Hg|1A~fq7;?U(CM~2{@3nkw~ssh@{2CHMb}=Ms#G#mpV`ub zc0?Jfo`8k@Upy{xt5G>^4_FVy+$Er|j_G?hzpNDN4zR!&ftS)lAPNs^$YU*LS9BYN zxt!A9t>qX~Lnm{2r~gI+)nK;k(bgsj#@vG%B$^ST{99nW>8HVZk_hOu;E-v2nKlxH zfCB`g@Su9LoNGeXta)1lqMVsb6_YG-O6p=5mDCRvwcPH%PDW+4gz7f^<3Zi^7|zg&b`rpYG3-$Z$vFaz7l@w6Zwn$p2slXq4?5T7 z5^xL&3?GLCo$LVHIgViWWDvlEG3-cXI@IM7YTO9y@#8gPpZ!Oy{`?6B0uT@ZJQ%m$l6VqHVD}%bK55~n z^f?fKKnw}^J!pQE!9P6oZ(%%`$o`o|m4Lu*C;s`wCy^l61wkOD1pFS90sZ3huj?f| zSb`3dLnM!YBzVI7Ph$8Pn2;a<0Yf0igI0w(62yba>z`>+2?%I9l#w8vEd*jtprr?` z3bo>27!Q`9+vE^QBA^RnI42nM4v_F5AObBtXhwpJ2b0tx)0WZ`&@B>N9ZDYy0VfFL zc+jsu|2p%crSC{NqPqlivpn|+I?(|VBm_jj@4+1La@JzX$zi16!^K^WcN}!kJR`IUEZD@gYz(^u+@&e~0f5b*KX*R0xPb`#t#77mbxX zv&q|Mg}1}cAHsw2>6VG4lmu$_T5;HQ@6xM400PbtXmnWMe|f)Gt(ga}eNrA|fdB*` z009Ujm_YUYZ!Y?xaR7MaBd>Ni-%9j<<2`-wBRyZATTU3@PK1Rwwb2tXiV z1myPu9@Nw*3j`nl0SG`K*#v(4y7$oEy~j6h84oVn)HtuI;h|lg-t0ZSi3I`>fB*y_ zkZ=NKUi8_`fzK~e5CRZ@00bbAAOfpC-q?BaGcS7HGS6GGnFRt6fB*y_kS+q6|NQOx IjU77te`Kw~MgRZ+ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/DisplayD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/DisplayD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c760c31ad607b2436e234134283d909f15c2bb0f GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/UninstallX.bmp b/Jack/Launcher/RES/Lang/FR/bmp/UninstallX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c5c9d8e4e7a6bb4d1b366d6c38441ed3049534e9 GIT binary patch literal 9056 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 SSeOj+6K{+I6rh_h;ePMcFyGyT`{J~?ins~ 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%0Ay)QuNf(w(Z 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/CancelU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/CancelU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5ae803c39988bc10f9291a16f8ae51e8c2ad2a62 GIT binary patch literal 9056 zcmds+{Zmv`7{}=!=!Y!V-Fq(V?p^NQy?0qrUPKW~GBYPFlgZLTQ-lPRlovHh4V5fk zQ?g9W89--@CIKg?6bwOmF&z@kmtvwRaeQxT#wHrOeeWLjbV2sANX^vloIP{)+;h%- zp3i-r=bZa&;*>c;i1!nVTEaI4-%xz-3mJx*e(LWJ3DLg3&jYopzcS=N*F)>Cn$l03 zr&bbi1rZh!A)N>df~PnZ5LY%Ax5+%U+?3J!(E2M-*&hvm{X_QNHf4WnN!&+-MMTIT zLK+d~6Wd&3dx_ZR1XJOK*;=t{HMFxN?lI+DfcpN(^ysfqhrV&iJmF&^EcO}_K*5%% zIi(W^Z3j{9NF(-nc>26OnYX{d3n;TKkChB9`00Tfza9r-L(02M3(u19WkksKvdSWk z93pPuoO?KD87Gx<&dOjbno|2YaVH613-|F7n+0g_BU9$r0Mf&dYSjmisOCDA9PA=# zt$g@WFQ{zd$m7KKIq3i=ALf(>i`-<9n=Nun&=n}v#3}Whe2A0Eh;tJW=4l3Ip9KRm z&2PCI7wm1=!gFELDqhUz!}ECQZ6cL%t|J;E1$@2={-U&SawF%e;iOU$o=;s8zG=#A z>*b6?3p%Z?bzxG0hD&;n$W@$j%nzlL7CC6jT{Zw>N(15y5ev0|Z-0?EQnlFSJ1rpW zlS!XirL|Vq8mm%7e5?>~fJ?Kky+lZbGvcs>gM_yC9q0;uyvpI(Xjj&Uxl4#r zXL0KTRM4OZP!S(7Eqv7w=N5XTv?LY-)X)vroFj|G5nIED7lpd3y_=nHeDK7j0721V z-RgToeVKL?#|d0W#i`!B=z&~4!Yc~9dnl`W_ z&^BtczdZIc{W)XqMg1`Rr2QB`H<7rBZ57ow(1|s%GS)|buVHiwYC6S020Fm7_L+(n z=MNF_P3^EMq~Kl8I^(!Ic9$IWfz4A+-1sTSO!B%Ol6;G;oK$dhEd^YYMxRlPyTFV!oK07i>;n7bPmX74XlCZuGeeu ztk??rWgkyEXTZu>hQL@sYl^E0FDzQFz>&(uZH<1ka?FH^*zq4*J+-Wk{#v=pH-! zT>8@M8Ov@aOg#QrY%Kq)OmuH#*MLY*u4@O(>R8BN9W zul|&tcYS%`pD*WL^^9%i-AI4=rgS&{VNLrJxc}Sz3#@vmj06HNms?$Hk)#TfR+@6Y zqiLB3_ud|p)(%#$zpYN6-7ZEq_Vh%$NdNK=oRTfJFbwO)Plxr<^n1~>mNoUy0M0Xs`m{!kYRkK{bj=@|cdBo_tIkU6jC}ZnHPUNffA5R| zNum?uzc@bBb1MFcGhQKkQ^G4AA92*?sTN0+Xvu_#jW&55QtQ2P$iRgpyqI&TV3S(( zq595lHE;DF6Q-S$w|nz{TJ5L3p082;=4vEV8)vM#Wt2J7%cQcUHD__C1+rJm7y zz)Bgl%ba!5AE<7ZtWnK{*B;5dgxIxlhq`5#=91}ozl@)H23sT!U}8*t5EZ=H)jDG; zBjQRyDRz8W%)=i=#uwYB)S6abzT5S>5&8b7pg*xQhUH(Lu&8s@1{F32mjt?nuil!I z(J^!Wh2SX9r<_kpK0WD~hWLpUBgU3Sjwy*6w@-Y!&Yaf)_4~wP(23KRdGk$W<@KqB yw->MYJ@<{S%;mSzvaw?ZLrGn7Wp37w)8?HW{alkX`8dhCfOI-NaQb5s67m<#1Y{@x literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Company1WebD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Company1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..18afeccf3b1b7b8029bf67c61afa5029525a6ad7 GIT binary patch literal 3184 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Company2WebD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Company2WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..23b028a8dbef723c71fb6ba91cbfff23441b84d9 GIT binary patch literal 3252 zcmZu!=U| zRhsU)tV)r#iWK>9|APDVK5uf_ySu*|o{W<@)86yWnK=f9K2swpK5n3v`1;|yAK&jt z6j0@7QiDVyzB?a-!GBlFWo^yERt4HxL~Si%g0?DXi@3E#)Y|+vv`9rQQsE8-BW#ua zsUTJ=D^~v$g4vNPT$GK3*rp+jTRDT;7}6^lVbEGk7$TT@d*T}^%8Ui^D1EJWHMCXpl^QadY?eS1}P zv^D7lWHS?{jg_gLt+|7pg}nmcZLLiqv_4>BWoZl?urxL|V?h(aO^q4mrYuMZD;qN? zEA?Tb1msF9n1la^5K9m$0p8NW$imzZ6b|tdCSVW(iRtQSsqIt!;fLMdfBzl+$_kT6 zq*{5Wr8#rImIj{C#@f`=-99M5?Z_dopF(_&gm{BF9PD){$Rjw&Jvh)kIKUmN0e-Ij zK2F}A_MWb`?yh#;o(}%LE?7DeOeh0C1$%`Y^b861JQU=4DA4_2fP0|7D-6NlC;Whi zB+$?Gpg)9!9Ficyt+SuE6R6T5e1bs~TPriXGoAgKs(V#-@7jeoAm(L~NHx83TWb>v zS=ZXq*w@QB{CGgjg|MGvPhN>X{c~JITy!}2%drtLQDGO)AB&1S8XFxJ7ZnzH>d1-E zz|f=qVaNQ>M1({|9*f3OR9M2Lh|94j!Nf#`UWy4<@ZnKskDfns1Qg!lFP@Bz4v&cp zJ$L%>*@zI(=*Z)69&;fSKTn@Lbm~O#`LjPoBi6ZN(dUm}h&*~CG|1P>$?AZK0Zm_B zZ7;T7OH*A$P<>Gn|S$j2{--yZ^Ij3e_xs(zb(v9PB?evQpBt0O*3zL zIr&MqMFq3(dZhLIqlbN6ovl&+$oj`0f6&rW7x9sMU9a5P!5o$A?e1_gEU4yg>FTHP zchgUX23lJsqQcz7q35lOA79qp=W+6`0F%SAPamFDS8|bETJnYL^tj=d?X$luZ;F~-YLkroOdmrUzCm<;rVHwq(yS;T6!$9n;w5TKRf-j zPx^XDwze`QEV~Z3<3kTW{`!PpoN>R3yYRlhy;&R)e$d;~5rwa#qp70uBPv|X&qD5x zx}6;@ao+sAozI;*T=#&t@@cHI?M_KyQYj}H7#ozW%nvu!3(Ja9f$7)srP&t^_e+sc z{L?Qipg&)fOM znFZH>&d-jQcQtKoeZF(M_CofUnQOhkzhTEypu7&q-SdKK7J`QxYS4Eya?C;}Z zVaC$c*}rFxinfNjs5FB_YU+`>I2^#~4)AqBRo2&(uPlu8cHCDc4myh5=Z2aag~$ka zJKnRpFe0htbMq59xe3LE$*)JczOGIz%?>Tk4Xyt%@#>khyfjTv!j{Xbw?0qy_u!2Y zdmt{)-dvkmU7A{67#Efi>A!m3G52A-gu~9wx&+|eAn_Zy2~%V8FNa6|;r>%wHyZm*xjsCBjlp3N}l`yEZ-ExBBVz)5x7)oGKP% zJ?gIA`aCu8xUqtlSyGr>Da!ly_1(Ma{zu)7f|3km+T3(=?aO;fod|wVAyv0HNc=`l z!kdY{mHCm!^7N-97 z!lSO5&5ha3jhW5$-YzLCrBpEw@q?QV}lsjW@a zyOySgqDMB$I~?uIG5TDbY|za`W!bXko4lfQbUPe*oR+Tk%C;tPLC%%Jyd;_QR(E@4 zXRBD=cB{IoC@twii$vW0@J@4sC_DX9X(78ucIUPzFC#U!rBMWVx2(FSv#z7PCMP5Q z?k#S2dsS!at&Y~4cW)M;0bjZpUT{6}q4c(_x$0qaWeF!eKITN))#&C1L34e1R$6Rf zZcZ`6J7Nr5Eg`&fwp@l z;tNuRiisiDJQ({Z0sRZ$U^q>)JM#}lcE=a99wmL@t7 zjiOJZ>C-5B7{E#}XcRhw$}phdUI$hhG_0tLlwl1!%&I#>loZDQ4s zL0k$6C_K<%MJ40*NhRx2sJftZiY|?eSY!l6-4d(Np^@oSeL58kkqmOv(cX`(MXBuD zr>eSVkClaSZ55Y9vK{zWd565RBDai_3J6Ow1x0KDH?_Q&O)#J(X%!`DVjgI^peU{M zMoL9#dKovB&rKB+r$Gk{uP_-B0hbM(ijoY1VyQT-941_NW0&t}@;NCyZVL4Ipqvx| xH>Hf5tc-{;fVhNy36TK76s7XvpTjOIOyS)~=G{mtDFCiEJt#}*nt6l&A literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Company2WebF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Company2WebF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..88108d5c184ba4ae4fc93a845eb03ab0d43bd841 GIT binary patch literal 3252 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

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG zGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoT zlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EP zh$SE=WA$6L1PGK1$jNduBM1TeSoTlncno zax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE= zWA$6L1PGK1$jNduBM1TeSoTlncnoax)_c z5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L z1PGK1$jNduBM1TeSoTlncnoax)_c5Qrrp zCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1 z$jNduBM1TeSoTlncnoax)_c5QrrpCu8+n zwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNdu zBM1TeSoTlncnoax)_c5QrrpCu8+nwFC&1 z3&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1 zTeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cGGb0EPh$SE=WA$6L1PGK1$jNduBM1

    TeSoTlncnoax)_c5QrrpCu8+nwFC&13&_cG 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/CustomD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/CustomD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..390c83cf4cabb2a3842ea655887536fb1c5924c8 GIT binary patch literal 9056 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 S=_$4U`}XzU|9?L^bodWFQLnB5 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/CustomF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/CustomF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27167046617ffea967e5e47869e014a34e6452ac GIT binary patch literal 9056 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 I_aiFmJNV8L4*&oF literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/CustomX.bmp b/Jack/Launcher/RES/Lang/IT/bmp/CustomX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..97d1870e80c36c48057c0074ed900c570ad9845d GIT binary patch literal 9056 zcmd^_`&Sc36vyd5&>yT}XA`o!+3XS!D1xXxwWxShl!}6gAU-M*AD|QwpIGsQSQUF( zs-pFQP<-%^)2g+$R@*97DXm(MSYtgZ_Al@!f27~d)H&l4lE}ffC(W7cnatdox%1h3 z@6OC-T>5-xnD;XR*C>45_)7S`7DjNTpDVA2g&E)HpRy-CeWjwC&$5m_9=oPJKC7N6 zONlg>NO?q>6*@_tWz!3sBR9ln9UZ&&a?+khgW8@Ay42HG@(HTo^3w@hevKNxhe-2? zG@D4dM4Cw=vW#S(9!g1+GL2+6u9%&W{E?-!^Nq%*K5>~@b@!z2@kCGjj7amnh6GTs zC2CH2M5g%=y2`o4J_C1Ov}cI+siK6GDWud4-gs}&MYDnNtcq?uODVrfraX%AhY^a7o4rppuvWAj%89 zpcW9>Ehw7>b+4cu74#F~T64J860Ws|T*9Q91^u|7)d^}1ajYZK48y?e=`b)${skV_ z->kZO#+7$i)nZX86lJ%lt|DrU;QZV`q=Qde=qJ5Z(3%8iy`WYTxsbXfeABX|ojD_A zHFfWOn{%aAEirJZn}~K$&`~D z)aG1n(<_K}*lSLwLf@8nN-VFRG7Jp3{XXT(~uKQ`%2oJ8iBbK{_CR(~;*58`}2PlTCqUsDP;u{ZLkz zHD3jjqruSsprwazqB(2WTL%i0SC!owznNxiSd6m*IY&s`96#zn!rQfPj;yh{8oX=r z0Kp2HGnJ6>dDAgEuN8cUw+e=ZFGN=~R`Z2)%IGcNptMh>*nqLpTLiV%dw?*DXoZQ% zhewV(l9YVV9*tFc;3c~0zSEn6XoGT=OsptRHW6f4E54A5@vM-ilBnV(`zmBI1I9{g z6`Wv|Z$x;l=&fn3V^W)vQ;#XJjY1IH8B-vl(?PU>dNk4Sjy%)6FIJc`lR*Z41pDDx zA#kA|6#5(#@~k-|`QGpow~rS8D~?copB96 zChFKA2k=1%Acim{duM2r4w99rE41QS(atGqlcZ@}I;g48|Ic7%iv138?!qwwaD~5n zY+}W&^qlhw2MoMsFnI*865<98J3+ECk@3UI|Dbfq;h!h3CnN*2!kWR^ zAUZaPiW|wY~^Fz}-K*3+A4neZQ9Qg_QVHM1v zSg!Qeir0kIQd&Ac$Knm}u$;?0zAGxh_BpCjSH@?w-k;?<`z?x4hD`YNIDTw>^5qDO^!4T!)k)yNttx$h8sL%J8BN(-|^w;oZdK4Yy0y zc`B+r>#IEOlDltD_*xs$e#$ndiPSa@<)wBC!Bd z;*N(KFffDkw0ljy{q5tEuMoBm*~M}w6QR$d#!lX1$9-=`FH7O(NZ z#^91bH+Mga@BF~fJOX)Qw8Z^6E!f9{X4 zF)UMOHvXBp!!vj5gZWGExZm%Zv$!*N!L`sxIr&$!=KVM!`&`1*Hb?Ghaao6DXZIU^ J|N9XZ_80KgU3vfj literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/DemoMainAppBackground.bmp b/Jack/Launcher/RES/Lang/IT/bmp/DemoMainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e7dc135fc68165f509627aed495782050b9d71ae GIT binary patch literal 386176 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%0AJTJkXbX8neYcnfUp|YxpUi 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

    dRhMw3VwjvTBnBJ#}) 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

      L^jMf5D|Rh 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/DisplayD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/DisplayD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4ffba692e28137d41f1ceab698015e97a915699b GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/DisplayF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/DisplayF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3849518e943d888f3bfdf64ff6abff917a3feff0 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/DisplayU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/DisplayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..550413ee31c314da0caba75a3d67988907ad4ba5 GIT binary patch literal 9056 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 Ib>wpWAJr)NhX4Qo literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/HighDetailF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/HighDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5f6c3bd62e626dd979906db2f8eda27f944c96bf GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/InstallD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/InstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..acf7ddd23489aa663091610e91461bba70ad316d GIT binary patch literal 9056 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 M_sIYIF>c&{0lz+^y8r+H literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/InstallF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/InstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..610fa73cc922b798f8f7816448731b03276f803a GIT binary patch literal 9056 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 K|L;eqPX7ZbmxHDN literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/InstallU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/InstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0acc839e3df40aa9faef7c2c800cccf6a1f43764 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/LowDetailD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/LowDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2fbcb4379bec4c61c766d909e7443e2078b9a725 GIT binary patch literal 15536 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/LowDetailF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/LowDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bf1d43c32267a2276a3759c2dac9386cc17b7238 GIT binary patch literal 15536 zcmeHOdr*|u6{mlrDYEhsLPKK`qKFoOi1Ki#4-!pqjG(boJCk;jnbu_5{t->nHg(jA z(>85toF=2yM5)$CiW-5C@X)HD@@83Vo1)IfBdssw4^-<>8J{luL{AgZ1sDpdAEPf$oDh19BINIOmIF4KOZ*ND>FDf~a~ zG8kX#h$in`?JdN@|KyR7$1t20!B+6|l^88Ynj>J9oek!j=6#FDP*W}4PW zk2b4YfWG8Q>-`2V^tl>9F5Ee_Q;uDo46zm9gTsnXX%$iU8x^V5eKXAJ^tc${!85=& zIEnwKYra?m?6Rv8?37sVdf=1XL@WF0;eEEWW=h3JJc~O0G7L)=>{i=dTq0%shH|Ra zzK0$+L2$rF8~^~5cSQ_&3C9N*AQ{g9y~h*}Az|?mN`2ln1c9M0lWhQ)r2zoRP{CTj z2Uu@_P0di!(1Yfw>;g)8S}{d0XdS~^^d(+B6-A<*1wuGfV3x&VmXQ$4NQnjy1rHb& zG814=J2AzxEZNXw3KBfEusZ<5JaKu}b1w51>`^J6V|6|H!-nu|4<(gd$gmR1Ap6!$ zKtw?r%!az;74;UNE7WvO6gKgpg9FhS}x zro??I8>o*H4C5u}!53Y+OmRoHAS6W(iU2udc zUs#LYb*r4A?6H#OcCo@1M{0H<`hL$)5Ka@ZgKpqjeg>- z21GTyMy;|&Fy$(f2q2z91I#G^UgFGFfde^$lz{Lo_h5?U!hdYLd#@8FrQ*MMjd07sbZ z*O`KZOg{E!S=B2cyo$oxf!u~0zigwGXDCO`1I|qVcS#Y#K|>kq!eNhi#I&AqAc5C8 zEDbTy?a?C-0EX~UKP(B;Q@bPugoI0k!vH?Z8B_qk3t_xu4IF*wsSC5ZI?=*TvDr{3 z@c~}j}J?!^tr;cG-mJbzkXfae2hGMYP01knuf&1`au$~s2?D>5={jOcB z0q2=euK`^9$Q=g?($FB5Jz~RP4-cV&0eq8%5O53)Q_SJOVyG`+IhbN5kjz0ZNYO4+ zfUzaK3W3tI1~ZrsLY6SWmIzaZVt}VE278q$7K(6B*D%EqkRpLnw$@W7+oSiu@KAig zkhSP8izOgLBak^Yu6MT) zjA2S*{zRclF~0IKsX?6t9&Dt<(u?EQANX;@^(|fWj|E2$uk+V!qLpVmuO@T&rFsCs#Wr9r|RUvCGQ{=AJpuE$8FXqMVIQ3>H6<(r4-Gq+`^7c@c-&TNx0I81X7KZUAOd&@Y*W7#;+KOc0~`Y;Y_1A_+Y(lM z%~Up^eqZpx&7hqhj(KTk@XP;7JJh=8qS_70og2bi_@0Tg67Z!&fAfh5V8eIY>HKQw zV*F&xMp@0O22cr!#UF=nI%?Wf5qj{Vsno$gFj4*cH&hv{$q#&C+myFX{M>vMXM>U} zu3N*lE_%xDZ@w3SWp;Yp`9knXJWjXL?3&)mdz-(zp>W*m$H(V)nM!WD3jj6X+zrP4 zyX&5f6@ja_hrhCaM!xkq>wj@X#GZg#14;sq6aCF6B7i6V&$rR?R$6GIh0V0cO7m)a z6AC_xdb1+v&n3aznoRF@n@alK1)%-p5N87%5rgtt$F6@jaMjzUHG5;X9L*{|^Md)x z8=d5DJ`sVxchYN}^wQaZA6fb`Pxd4gbv(4ACghKWW7i%C!sWm3ys5Z1xYT(D;A_8} H0s{UA3HM{7 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/LowDetailU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/LowDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8c7c7dd348851d78bc0009ec9b2d7ec4e7d56683 GIT binary patch literal 15536 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 Xmj9wpQdb>LSsk1KbnRzKvu6JT_URNS literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/MainAppBackground.bmp b/Jack/Launcher/RES/Lang/IT/bmp/MainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e2f76e42512ee58a1a58e9b258f57c777a6c3571 GIT binary patch literal 386176 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 EH;eK6TmS$7 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/MediumDetailD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/MediumDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7908791c0a2112a4fe789e831eac506468bdb830 GIT binary patch literal 15536 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 SpHLl)Kh!S`5MN6U$NvBiAId)f literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/MediumDetailF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/MediumDetailF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a364fcbfa874289ade6344e4c865746f2a4a9082 GIT binary patch literal 15536 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 e;IS>=TE3w_mjCNV;-Rse9X{Xy literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/NextD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/NextD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa0f7bd81669b468717310f7c023db30ef1c0135 GIT binary patch literal 9056 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 W);Dy&OHw6{Ff`%pOa+zn>h*tw`ix)z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/NextF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/NextF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2788e76d73f00467a0772ac644d03b8486f6db5 GIT binary patch literal 9056 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 V)8fqBPYO<>oK82Kp_oKP{RNToZMFaa literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/NextX.bmp b/Jack/Launcher/RES/Lang/IT/bmp/NextX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7027f05e995800676cf2a4c3fa210e919d8c0477 GIT binary patch literal 9056 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 oc$|_AJEk+V!JE8{K_+djJ3c literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/OkF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/OkF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e376f64d3a4377c9231d3dfdbba491570388a9b2 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/OptionsBackground.bmp b/Jack/Launcher/RES/Lang/IT/bmp/OptionsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3efae444a2d08c7ea645d2b1fcbdc238dbd79fef GIT binary patch literal 656696 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/OptionsF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/OptionsF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1cdd92eb5f0caa5249ca51300d84dfb8aced3db5 GIT binary patch literal 9056 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 tEofhv))faC6H5Sv%3fXzaL}9{158{#ghO4 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/PlayU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/PlayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b5e0a7a9a93722b6d0990f9b7139aed4b2ad3b40 GIT binary patch literal 9056 zcmds-ZBP_P8ppZM_e~R#ogUcTS!QQvmSq(|K#3*c67&vCf^Ufl8s$YnrOX0qybyze zCZgnpi$;# zSV%Hf05z+yn~z+tgYpqaF(>|!lMZq6hn&)Ck=reDhehrTI)hW~oYKO{$2h5uICl|Y zg(fij5(q3byVHp47OQ?WrKC4P+RTfa_{d^jdWlGNoa-YEkpe!agWr@+PHy8|$2qB% zL~f!XiP#KX-NS;BvU+6qfYr4zA!$((NOGieqO5JwRuDocK!D@TB(!j|lhf_j3fr3I!6DXV_ zb8E#V%8DL=Zd7glS1J$3rK#%x5pocWm@Hu;0cl~v=}kZE@a(iJJ0jdQL}|9Tp~KT8 zsw+Sf<34dEbPF+mW%Z4?XlB{2OU)<$dHu!^BbGR)ht&@}fggfJcyIsK$ZG?sGxDlo zIqoj>Kb(A=IA5kyN=tGzrl|{RuR5nziBn#UjIIiIAJGT9(_m%v_vfeGGrQ3Uj-U7c zo8l_3y!7*%9j6w+4UwgH^>x}*95Zks2ebN=lJio`>%b*=Yk7!D(YmRzWi?}NPu1Ql z&{gBnuYriMdOZ6AO{0id;IiaLQJCm^Nq&se}9P_5lQ%~Htda5yG1yIJ&Gx}m;1scYhAcj+lYh)2hSNbjj z0zetBGPXZjM6CWTR+?s7IB6e5g{f&+T4P-L(WyxXqZ6vFo)2gM>bmmNMYE6D;hhwT~VAak^?`fAI$HWpV^b~)EUnMCwMm& z$XW~%_n5^X9yfdRECB~`dq!3`Ws+mnkU-|$i~P3F238Y<08cTrQ4Uz|5LXRx6aiP* zyu))!`<}=-mzno@(wvTnD69dsIl~yT8tExOK~%^$u|f`uAc_m8%sW#Ngva6$ax&sY z`>cpv9(dxms4!=6HSx~Zc(DjJIsfd!16ZK_EoHj@ zLhl?N0T+y-qnSw4n#Rm~7Wr*Ia6ZPG@STbZgCLRK=f&r>jTdpl{W}J+#!1cY&0Bvh zf5Y{pxm^*_ZJM<7HIA``@koOeG=Ls#{R@5L(f&_s^A;$jlgQ1yYk#=2gpb^0Nv^{h z2W#iFiZAnuuWc;Y&?U-4xu%1_CeF zTU}+?q>7N94=wx$*3NWKCT;CSuzKz#HDl>TaatQ25VfnuO=G_VUFnFl)!%Sy=iPtC z_LRP%SIRx~KHHN4uE+Ka=K8K~sZ=-bP=B}hf;bJ8J7_;o8yP=hBXt5X2W0LpczRFc zuxVgML8HcBzH*8vZ4sVhwy0{Gyv-_YwYthDl@74IKCtrjt7+wz*Khr{a*z7rAJiqe z1KwGutX^GU`pC$L;it`}K)v@ii-LRmUztfZ{!TSFJNT#*HqQ}pN{zOe5Vg}LZ=bxT z*R+QWTzEH;w&il^F16|{^_6{U@s@8>9_^LmJJ8!}A!#7y_c8q+XJR8%=?IT%v3Wlf zV-C5e@6$FDro91NmfRjc?t?GkllPckO&beR;1I zl6l47%uYXxArccXF}5X$3@f`PXKZ6sd@U%&&8~}`^^SK&wJohFbjuYMdbG3h!%ByS zw-xhtURh8yu(?8o#t@P~x8~U!%kul4$UYw&_ITF0`I%=@A8VcQP{Wj&wcf;TpvcvV6dELzFJ;z>CqLR XB`j`tW}YMk=O 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 BPj&zR literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/PreviousF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/PreviousF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f85d6f12527d0327483e92a604098ed23fa83de1 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/PreviousU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/PreviousU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f9ef8d65568fa96d24dcc24f537a518b05253d13 GIT binary patch literal 9056 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 Oev6QuIB-rz#{U7EnuwtQ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de44ca2fdec9f3fbb5b53b21b48cf6426eb38519 GIT binary patch literal 6296 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 bLdYaJL;@!e42qFW0Y7q;+5TdK literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Publisher1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..279befa58505345309c555c45133b3f36110e10f GIT binary patch literal 6296 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 a^_Te@t?;4qOBIZMqgDTR!*IDsU;hR0o)U)u literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/Publisher2WebU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/Publisher2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c9635db95fbedca54a415b3fbcb7cd9ac5fb200e GIT binary patch literal 9056 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 RWMRv{Hgv!Ie?JBd`ak08hgSdq literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/QuitF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/QuitF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..713b58c42ada5a6da6705c04c9814b7c19486fb1 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/UninstallD.bmp b/Jack/Launcher/RES/Lang/IT/bmp/UninstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e21509797087bdc789b403f5430b44fbbcf60b37 GIT binary patch literal 9056 zcmds7XHZqiw)R%NS9R+-?_Ot^QP}$=I2<^UoI#Li!h{Ou0E`h-MlfR<9n7MRDC3Ny zm@{KS5eY{)L=lh-0*b_gib&R1^S<62&M=50_t&ku)JIqE?$vvDf4$b~)eBrEED#Q1 zeymW6@#~LY9)ABeL>ndh^VQHHL&$IM&*~Sy_rs#1Ze6F1UktMwCY-1v3F64M>sy3d zx?CLZlQ?Tp?!2W%^OqI>XTX0|dBED*CBZdgx73R_z0ls@pmn43tN7nPg?>cgac0V^ z5uz2t`D=xyM~rPF<(3f&>tj~VXIwn*Oz=^9%}Jd)H|;+IGyJka*ZLjm9}cN^98|B_ zrgmCd#9d#hb*^%B z0M7Tpg+BGZ?WkYiD=zXCm-vdy0>w3f;`%_i!B<@8$*&F$S9tQvJozP_`~pt~oaf2T z^5kcDvM8SHG+%a#FFVDWg-b1ufF*_1Nj;;pl=ucExl2jzQ<7K)4=Bk1 zprsFb5lc&1^t4dY2b45!(0E8mS$t{;-lq8$X2Q;jl(h7IAKas*1eD~Hpd~R}>20w^ zjMI3P|EkK+UFxvIM8}q|sTBl2(~9out6&z0#P|8peaOE1rbLD7%Ld(2bJ}u ztB0%Szq@YA;TeVsB-=rkP!YkCUZSNj3`KuprY}pVgD8d{W;s}{@@=iq!C;(6|z&3t+E5a@vg zkt8j>6%jLv475ZS+R57phydHtGZx>{GfmJn(IAnjlSa~RibpIz5!;6uLQ65*Ub^}! z02-lnNgTx^u2CXS5vy-@f3#Qnnytil&0kicy`!47L~!M=d?z1&kt~0K=cqg#?l3% zK3*Wh7-PI#`2&5kd!940R&P1>Qmx%nteIXbca;?? zZYii(d#G$YR1ko${n*q$K*nMq=_0+ORe-HWs*QW9m7B`kMP=rcV&a(GODrnMcw}Mh zn5=L}mf8{Cpz69NNjxJsF%4b)7sV(8am$e5%3@_U_ZI{dgDc;_5_(-ZRBPFjPN_!} ztrx`652g){P=>evtUm+3kZ{G3J%n3;&SM(bU!#%9=FTZtufy0>rwQpUlhWO$WOz)? z7(Fdx%=AnK8DpkpjGmh5?u9M_R|crKL((h51HIES$9iXu^XUasM@!G}>AkO-mg(V@ z={h;Xc|yA5_%!>mX@p4+mdsT9F@$Quum{--Gv^e{O=7Fmw@_kRi80E^{Qr8H5a7vU zY}_9Dtt|6hQDQbL17Yg4s2W+>Vtw#YP;VF=w$;j2K7LPT_~!sKQTjdc@qIFV;p1rwNUzs?Qcj&m9=#Vn@%GK0 z;s0dTw>fhb=ge6GZSULKKXi0_SQ4C{ zThQ9o^?#k69~Q03^Iw_Q)%5}JTao9#BCoyuLu>2%$GPv81?LB>$qzqXTTs;c`b~Fv zMf;^2jR9*4m#-;U7LpGD@ad2NS1k9Xq@&l05Z~3(3zK!dBA75-}DtA?psn0b^ zu$0mbpbR2(#0U~T{|43oab)Y65;tWs@)5Kh77_Vt-K*E#!1=3KV8N;lh40?If7eRr zTEDF%zo@mn{XKXK*<2L7xd^0nbbeU9sc3a*5r}%*()}d=-G=Xr51*)OdflyV>H-?o z1krbzHtj6kxTCbNxb@ZRuBKOAO})LR&etywDOj?)U{TQ1@MASEYdVkrTEBQz{N$h)@&&W-dv(gZLWOYk^cB?aA@)BO~q#}HB`Omc=56$@>KnJ zpDd^GM75;0FvCQ+jzMw-KQA=7>Ee0IZ9t;`(K8)>VcGs{fJo!xbqb* zM}K~io%il}bvp>Tc)bzKfHW|9D6%U2cvW6OOVx{ZDAM)YO*{8jJW{uP8+=mJ+>^PaeQWg=Wb2m!7TYvEuTBv%~iZ)Og^S~{IEaXcro-A(Dv zqXY|e^iK}PS!wi&@mC3q4W{7W9_O9)Gox4F>iLWITQRR-P;f8c3IHcXC2cTCAm{13 zipmbQ9cy`<+X5E^@06S0x<8^4rU&DysqG9u{yghRE7S=%d$}Pmzm?Uo14k?O9jyd` zmCxIsRklZ6Y&dbczPPltu%s2Az@Y%Qf8uoAg==bf$l|iLpQ7rg&d+ftT&aw}l_la* z5oM=N1}Pc02YBR0v!pB)D4uz8QE{wfB$^j?&{KK zZKdVyc?GR&wwA(d^9l$qUQ@#X78JK0J6ShzR<`q`3`@6ExqUKjmk6;K-~M@jMT>6= z0&cr%HI7hfNo8R9aC#KJ?KF;OiNi#k4nhPzHmpD;5kWb<>_ z#rZ2FE?T+1FlZxC6ttlT^%d(2FGs5{M>oM02d*tZTygAVJr;HTTI1rNr;CEfS-&g% z<*x9Wu!A*zE1!mjz4+naOTd3+zW>Un00d57XgGbLF+8HyZ$-XeV196D)z1CZI}cQE z4y#@oT(E6#^`1j7_Z+I(dEn*FebrmTsuzD(0sk;^e7de_8&5fTwG>JT1xTu*RG%z#UAolGv0E|W4eaGsdqJTV<$+S4I`px1SBrt2hfA9R_V>4L{8 z7>?Ub);RCS6J|Z0JeSaWB(fHszp|?1U_`CMxO59w1PsZzWw2L5nxw4;IO17Vfg11> z_qfutT!T=q;YPlA^N7`jxI6z3$7i^<_Xy!ynm>aU_|U>&N_=-P+Qq0AyjDDGi8zZT zwvUV*Q!HIbVgc^UbxH;fbi`3-E;qX4nvARN#B@i`G>37x?WWoRZ1#X84OArC;HJXG z&C(?WX$r)ROqpWg45&zn+y&rDWN`PiawB;L+^x`p3UV6I9K6|S0^u2o^zEvOqSE&4 z+;{Vrl|$HgWD1UKp*hL3v8e`~PjjVf7ROgySFC2p$aQBgw8XSAHx94498fMlbvu z$)Y$U_olOu@*+UK0>GmFfVC3-kbr3<0uW<`Z6Cq^AQ2=(Hq0K$F1$I#+?h~^P|9vJ zk`HOt?x`RdL_v~7RwfBNl4tm<;7ZRTUf=v0UwVLNxRxaJ3_`!zTE*u2wEk|-{l;0F z3Z z226GilLy$GCtNOoOA`)@K0tc2?;|5%mH;tEJ_&gPQXyGWr1g}B)}Rr*B^x^+g~jHz zQt$|#4J^oe$O(x274wIW0awQ}iI>@35}E$MH(bRLeTSUhh=3eT4w?R6yJ1@PU+TC} zy58EtO*Dw&PvZ!@X}vid!(AK+doupT@ygQ0{Bc1}a^SegWAY$@cP*0ORPiBf=%-FVoa{o2 zIAg~siNyvz$ttcefFoQv!Y{4w-zJ1wj{p6&^-#+3>k-c1@O-`zZb4`Y?P3_4LF+A` z^+PFx6O{N0CAme3Z})?a_%;hle213Y;YjXqWp{Y;I|4V1lH0W54S>>=l4y=JnyAuV%#?a~xy7-FUxUy)DkCTY+ZTUy>G^Sm{+cefoqhbcu4&N> z*9`1CMAM5(-}ZjOeY-T08X5K_nn$)`>Ac?DX`P9Eh|Kak1LGCCk`)~HbHle)YD|xH zRw##PI}9D>`HwHgf1y3@OP5^#Yq8#Ut@o<2?wv7^?(t1Pp1PFKNL{T6g9k zh5zkh67%I^(*OhGK%p#l(g{I`qg%GPteu5wm9*4|$; PJh~Gs4M-Hxt0Dgnk2PcQ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/UninstallF.bmp b/Jack/Launcher/RES/Lang/IT/bmp/UninstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de083c1aa5a5f8be70fc2aee0759b9c456e31d82 GIT binary patch literal 9056 zcmds7c~F!`7I&+5tF~4*F%spN?}K4xnEPb7m1_jV`@s7E4-`2(2#6OU#`}u8#;B2a zABiz49??XN(L`l9XA~3}!COSYnCNN}tzGulUk{%X1e~o+?H{ooUGM9D{rdHTV0dDe4 zH~B($*QMzdm2f=BeuF7xkp`lh*q zIbxN1@p;6Ya>i#CBhKKkn#M>n8R<%aY%3$*$0+g``QiUR31o*~rQgjAGO4|cESK?F zgzdv2HVU9&AGxMobjkb8mgKPlP~n+Y)@LRMR0bo-5=b`+P?oevynyoz)i1!%Wb`KDKGEc;r$tK~1zP6|Sxo_}ImfC`G0HDk z`6^bDNE}Qw3J&HvvCt7NJ65+EqjD;|t`UH?qqLWkW6J!NRgRQdQi=+%8yfl!=5N!sFm!2oi zW^TpB{uYqXx7bs6o>3fOWs6C`7mZ;glSu614o6^>`290o|1X8|MMA|wp=uqY{7RrQ z3&<{O4%DkYBT$t9PXY)K16IBm&f?9J(IWD*69EB}0#P)YcwPV#v3CSRiPHv!UYMYv zNwY%}M#Q-MauA+dN3w97Jn7gZ13O{ut5cvg=!nsM0x@)nr`8O(7@urbjDU|&zl)xX zz$$i0wMey0s03C^JynMU$_tFP82-s`z1H-jo&W`u3}kk|0ShV%xhU&ONZ#$DBJ`3n z?2;;+kUH{`CX$q@2tr`&Jl6^_2rHVp;FGT*+MqMUu8?YjFzPWJkSE?k*N9sh;%tG` zwJ!R=odSpeEQFn}Zj)wHBimd{cC@GVJR{%Dh$mq)B3VKr0oO{gJlFR-CeeN%Qmyb( z?_^YG8C@aP0=?k#ZLb9e!ghlhFjyK)kO3OH=rTi0IiViq#$M(AeJ)c9>VGA8z?Gl@ zR|5N827w2GL2E!?Qu_72Oyql$Pt?;&d>VTaRlGLZ9rC`h<=XCLfDVfSBw+wu9s9bN z%FqgXU=^BRA?$>;&A@5#6Mllt$g00#WNT0#P|Ggvu%Q)^Bd>NJQyG;&C}x~3Ht|~Q1Y2~1 zEoQ6@39RAu<^s}UovLV)%qz2ZqF#-gCb9eo&=etp1{>VZ?M6S8lf%>U`}KVP5;0?Rko z_L_K&f)+ZY0#tbM2}K)_=6+sB)vn+90JgzG>_=GZ%)EerysOnyUnEeSWTZ<-vMNq= zO}P|2_JTU#6QyyJw>FPaU!d4J<5UDvbqN9m;s(|(quqvn@pO}Pge z22HQ-ms-_la@CSe_tE;%r*)_SygQFHP+?dF+h8H=gte~?Srh>dD>%&e0{Lb*6;f08 zzJ~+)edQavM;E+9s6BxVh=h}X;Dl50SRo)|;jkm%PSm{5Pd%Ej==Q{=clfC#Ex+3u zR)CI*K>%V!6?XUI`#yR40`+GtPxu-~ChNnRF*&zJ&AoZ)8tHib?#}=gwD;sADz;^R zJ#0fTMBu_n=Ok9hG(7bE{u!O zVFMyCqRO^|_F2PQFgp-GDez8W1!QQiLpf({_8!6tO@rWJQN62=NQFKMlu6%x%WS2%B~tY>1uq+ zjnJM2UK-p1i|Fpd-OU-Skg>o6kz*sglrSL8aZIL*pFWTi7eZmH#AD{aHZUr9`_89L#r%>O*2DTEkMa&lio3?U15 z4P?lG3;Ac-{9D@(HS9XtFnrdHrQ2$kZLeLjwH7JFu&f&s=G{WRwDV}gsvQqT%)S8v zgTsBt;fB$(ZuCvALRL0+%{@xUou)0i4Svq*yF;f{BP&2|F!_C=9JG8(ZU3|?q;TWs z+=NW_ntSO>?;r=8x#r%Y&9%UGLGJxUpVYp;p=Ru?o81Oi;2zO-&Opv7BbkUa$SM!9 z3Ju7J%#8d9D}9eVyhvwtUQs8VanLXPNXpEH)LB1-_QG37zLzg9j~rZTr@}i;-EogV z@I>H(VTh%eX}^@Jug{Y_YX8X}Fe%g^Z>K3YN#l{6b4fc6DV(8LdbnlRxC(S9Y5(8~ zY-;+65(yGYECiw=Bq@QXk|@zPY}i#KqCLjjD5@FD@BH-S#k~i=CS~8m#R^dZ7UG)I z+WC$qdUF>UEz%&|AB$M^Syr*tQ${D#6TFjLGIw?Z7>$T3LCG4MuuAbIh09-o`)Z<=;t1jjR-vgfXJ%KX(%@_U;v|lAW8c-q|ggi;Tq?cW| zCa49f7znE{F5~)-kDuSE`DM(sYS@EOU>l5V6DzXlGGa!N$oHhT<|FPwZ@wVr2z`@j z-`?cq)?FZbHz}ij!Rp3&D;oQbuqlHI02ew!Im$MGqD?RW`~9VZ1rY~B1jEe&4uI9i zbqo{1)L<~;n(_B5#QQ$ z5Y@4vG!Z3=kZ*l_cZt+Xh4O_$#o{jWYv@~_%U`>)og>|t7>REE%!Myj=Qb|;sB!e< z8l$OLWGsYJz1FWBhX!Jp7pwv%KnCFy5TS&(P?X5Za&K+~-rt)51wqV65QF<+XrKg! zJYo4Fw|vd}l`PmA)VJ8!{j{#zXR5#r65T3q4DliZDz)qClF$)S*8-4%BCV&sPfC&~0 zh>@YWhdz9w5={_jZ3ttG)ikUiwBL!4*xkmkZJNMbxpAFGQkmm#6JnRJzq}pT-XrX7 z*T^oOBfRywne(2*yFT2~xO83PlsS(BqRNH(VjzaA;;Tg7a9$EFP{a=z4S6TTBRPJ> zz(Wvy^u|F{T_jz7@!TSujp!3bhF|qKo)F~ z1Yql7I1EaRM6ykV@%sf{gGK%&;($_I?vM#c@ILHIkOXK57a#&G`LUoRpl4x^5ocnD z9XAcw9~8aY&~2+Gc(ccJn3`?ca)iqf1mLc94r?9HZaZJgQOS|SX!h|pD?$p?VMY4L zVqbaHe-WZ;M!OJdBI`sXWx&FXFix`;yG zs3O1UBEOg-V^opeRHz9vD?{>SffuCy7kvEAgQWhTbA$rV$%D@;LoR4S&AJHmEz(95 zYr^dWUK?4gi!2Q8bv7#QQ1sw~(Q!w@d*=n1_DBYN>$dPdzx8OaLfOu(TlQ8^jZGsR6Vt0EzGJ7v^lJ%eR|bzOh#mS>SnqvZd+hBRyH7pzdv^A%&U>D@ zwDi9kI*4Lj+y=V14Cu%V>>^6&qDXN!WJ@E~8v5@s^f@7qIOEr|cvxy}dd{yi-hZAp z`%zLxol}%qH#xH|c}88z%=)z1^;727Pt7I-2A`-z69ke#&M4%yWf6s`9Dzy6B15#L u$Dt$XHLE_YiBf0QCC#`yG`S)?zEG2B7G>BxR@ZmQdk&OZ1d8}oyZ-?4Tn2Xl literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/UninstallU.bmp b/Jack/Launcher/RES/Lang/IT/bmp/UninstallU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..42c3acd7ab2cf06c3ff29606c0fd88b25f9ffabd GIT binary patch literal 9056 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 HBqaPB)Dx@H literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/IT/bmp/optionsd.bmp b/Jack/Launcher/RES/Lang/IT/bmp/optionsd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6263c5dcaaf57dce77aee897c3f10c7888199ea7 GIT binary patch literal 9056 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 E8&cHo>i_@% literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Launcher.rc2 b/Jack/Launcher/RES/Launcher.rc2 new file mode 100644 index 00000000..11fed741 --- /dev/null +++ b/Jack/Launcher/RES/Launcher.rc2 @@ -0,0 +1,13 @@ +// +// LAUNCHER.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/Jack/Launcher/RES/WebHand.cur b/Jack/Launcher/RES/WebHand.cur new file mode 100644 index 0000000000000000000000000000000000000000..c968f4f25f94e5f6fe0770aafd55963aff21ca54 GIT binary patch literal 326 zcmZwBF%p6>5QX6vR4B31Qc6lYOTCRpu+*b*3`ZJ|Kq&*``jf!mXg2d@vzcTQDUnlA zNGmP1chW{u3AS{CWB3?TDCXJB<|49M^wJ=E2RS+C$_`r`aKX8g(i#ukQGtHH*!m0p i5RI2Jn=~>TJiV(`3T|YL)?|N7`qO{K`u`RO&(F{Q>%ThRI4j_+fU^S5 z3OFn9Z*m1_2tJ(Ge~W|AL#x)aD&2gwmn~mrN~cz%Upif8ThmPCGT-P`jwZS4MYejG ztM#(AUamHH_@0;XlT7J6Tj`dMrp4AU$7?FQ!%@D{wd&nWtzY zq?fIBbB!LqQtFIz)n2~FuW$et+0t2#f8v80gIu$ptM~GaL4hy6(Wmn(-E8@^dOWHg zkNK=Zd%$aWH>=h!Hio=^uFN}dRD50Vi8(%+1FH}6tzov>vl^pJ`I0x`?6S2!XT&L3 zyrA04RJz#;pF1qH#=Oj`4f6G&Ro7|en*)7Q?-$x5-mt*Q^25p{znE`y^L2d$A7`wHTaLnb_AX7TY)h=?)k=5ka`$Zl3DQ8+{sq5W*jZf$G=Y?k9UJVYT%gXat zJ}b+=vhun*EDN7I;9s?p964vf2UR$QlR|Tt=Lq>ZpIf;saK1XVV?LZwRu)+o!8sv)#honaZ+oZRP}YL zuhvQMh&Es~lXJSuj8GXD5-;+?$)YQX{Xm@#VLk+%j0)M#?*XX6a2& zLzOE}cE&FzI)`X!9yEIK@-|xAxQug`*>flR?##%Q9J&&HH(%MQC%<$XLw9=O%T4)8 zG;Ul*H&R;pEPgTzRkq>kHc;I7ORG?I9c}EQ^+Uj#dCY#KyzyHLe{LQrFB9!;ytZ^_ z`W|cI$;~{ug)g)4rACp;CUbn7YF~SjgHUnJfw^;wVEHOk+WAXMk2Uk>SN_~ITwL16 zJaAb{w>bz|Q(u1RD{fuMsoR|ROIv^O%9mUD^BZ55Us;68n^1AdpONa$lNtN-GhccV zOV6VDu~AzDte#O@N6RaZG4N+*uHuRl;cZ>UnI|)}j_*RnX`s09S9gKR&YNGl%yXB~ z31lY8>ZWx5syhBAT4lM;I54Am?MY4CsWBhtFHAkTvEM#B7blWldU6|gX6??*Swl~L z<*^p-%)+1F`E%=_&TAIX*TQ8?g4QxpTD#4mJ2mlVCNAT`mFNapz~aus`y@wP*042A zR9F7=$ZcHYTG#Hxr6)b|S@U3i9Vu^pX{}YLvI|%%Uhhp$0{KO(x{DN7Ar{2aXT^BK z{L-79ddMxDbLB|vbNzcT*gtReK3!%UFIcMmbHpiuJpTrzO@YG!RWpxc?tAK zt6PAcs}?M+_^eQQ$pePKmrI%IdCUvz;yzlLo3%~6x{22|&VA+FSI&Lq>{m}@zsj^0 zkKkaT)sI$JL2DK)EJ7u|*!q_4#1sY>$n-*)ftT$uJzzr?0;X3XxDw(uW*Tyg4Cct)`Tl!!YnS~e%sFWOglH;(TbDC}4LNVNC&tDY$ zg^KWwRg^upIAc2vLLn2wROc4D=T8k|RWM@cN%cLcfjc=6!GQ{uHXduvI|E)YO30>I zUTF6t4r;!R++{>(I(9>>em>=7_=>@rT%NB41HA~g!-Hy}m4eu&kt1BF$%vSo1u z+2yN9{TiTg=llNr)R!4~j7v|d8>r0v<(W~xf_S=2DD4%`1HSy!mF#&k6X+Pg=gyAZ z86F-4f`UaTVHRq<@)b5NfG;uOG^6!x1kMYe%}fKFc!DPlu8vN`mzhA21H3-F^JKSr z2FQT;r^(hX-q^Alk@DO;zxQUKq7%+Es8d*px##A*34G9#=yMgqsu;jA$D#5zSlxIE zVB#{ETSkG!>@biSB$~T;6CT=!enx96=e~08E9bs)_NyndUzv^RBREKxjjbN^@muhb z1$&oK-GxLe&OOFSqPh;{pmIH5eh#+^6n2ry!Iy;yZ0rqxZgsy7R0Kn+WR}zcvT#PQ5}51xDAk(daP``iX3rnEQdIxoL6K7%Uc`Y; zsyn3%ptT4>@LA8)j7#P(Z+Qo5n>>odR4JX>Mc2NUifD81D=gg>Wr2A(zlm2i zA;_!+h7KcDm6~}_;qkz^ublhJxv!l4>WS=EX6-Q?%#}|woh@4yz!A*NqNSzT-0)OS zwa{&x`?CXzr8KRmRl-Cf#SNQhxWrb!@?=4rX}q;_(=W>}eC4%|HlGLxRDxX^^n|jF zd;n8v9jNSs^;>`A7G9%&7ZyvmZkuQ zQQ!J4wtXOgzS{+5)lh9ucMLY<$=dAI=(!E5xP1W8UtGH(MEoQ<=7XSDYI?%XYJ2;K z0u*{@0?Nc7ees4yq{}!_*D@vYMMaUSZ>-9iO#RjfUJN~i35K$pX!RP73Acp=1v#(G zC{&tO=HGJqoG&D&*_f3w<*wRCe6S9?u?rAt2{_ zu3B+^#`l0=w7RGL>d!oo?un1`GT@b)^0>m=>MT+NUv=-w>rCOlv>ij`9o!s3=T3}S zTQ3I>!_95o*49_ta18P0-p^8SQJ}r)G0y|wHEdm9xp@$>Y%Rm^>&()XUFy-La`2d3 z#0!evvCfr`W-%<%97L-7)cISH?i>fdp;-(O1_x;(`-@W*ORc#&kI4(?zH;s>=e~0G zt0%HwnYGCye6ZB$StmD;FL$c%OOM!)1J)#7Un7t47+so2LHI&pLp6+^5v?U3EQZ!t z?ck+&SU{sfOK}=(9#k-dM!}W9I5h-eZ6nH$Qq;gl>`qqn=xwBV0DyccDs@o8VTkQI zr#fCROUG>(D@_sGglIUjvFDbl)@^b8O}s@Ta=~sadXkdrCf2;ADTV;Xm0fuXSN`%I z_zPEe!2*aj5EhrVt^`PT4vIl}T&W=(Cs5wGDKm-;4gn?*0Wt`+af!SDf=hRDAsn=e zqIP{)FilMu0?XS*kj+TMLhZEgHoJlB4EpS|rt#xj0NO(d(V9ma2ikV-G|D2@3ULd~ z(+x1H5@lwK+63T(^nvLt0xi^Ff!{)zqh_VcoJ4E;a0O(ck+<@s7l3#SUZ!V^g}*`- zSI8ShOQTchcq%(jd9Ri$&jV>5Mb<9JtjgB{N|)Jp^L_E)v34%%sJV$3aSJ%eb>T2* zU(&rTtyHy!zyg#Nn!haj*25BISEz;_uAoW*);!WgA4Ovnu@g9W74O{IO=N(30ndd6 z2XvwNb*j@80fzoWFHv4N_my*BIro*bUp&I!y# zntS?OzT75MJE){aQI0m2tZ?|-9c2D=SbzoI_PhWN(t?vBEQ7A+0bQ!Hd+tD3OX?+&X?wtF|xv!l2%Gs}; z$bOY54jet5PIu6wV%mSyPQB7B z!Q~eM@d`|E6A}(y2P?ZEZQt^h9~murQI-O6FKtuw!|8=5C7#Y@;@;q42KeKjcwC`@ z>*q?P5eV^MAf8LbIFz2GT360}<=j`!edX*|Ph`I`i=#(yuu$t!(ekrDTT~0BRI#Ng zeQ02@`$n*0bX6Ekp>hO4F5zfsAQ5Sxw^W&t{lBz#n{$teo{$EU8h@an?QVk)f>3H^ z1w`3K?7+0otp4v&PEw#_gEcN*gP82t5pCFvkX!TX-#X zyIdyKOGwJp%a$&3hjx^GzVA*>5r@!!^y7LHWYb9;Jm8=ZFoDzr>ms~Qt_@B^hC%9w zh#~2t(HVpfQWrHrKw5-DfpUHrtI_TRoo9$JK}OU&!Q3!fq+ZHV&ERYPEbs($&M8i+ zWv1>V2E8#j=rP8AlREPmV8OXZstb4G1RCf=22~ zh4O_WMQ+W~%4}Ullu2>oIQNxvUpe=cvtK=p{VG#^%r`+Wh-z8Y zB|-?7*~O25hk{Zbn{&9d2o~7oAX%5G6E;Zz2tXW4A;U%r{K2i%0^1@7^@BA)VG$4D zL1Gwyj6PIm;!Psar#ea*5TVFERNDoyW7ltE%~xJHg?7#(a0>MWNa{}yqPQpWQ)DVe zeUG0aCZ_|vOF)xW8q|_P-y1+s`z<5|mz;Erya}k+ht7boB7-VUj%fC=;R~!y7!6>7 zoe%?{OogIsa6nVXCaNf{>A;Oqom#GTdmVWo2R04d8R<(g)ME(@!N~G_(1|aLLI$cR zrVMa^o>geyg$eMCfe=)H$N@;%k{cQ=SoR!OLckjN$~=ltzn#m=$x5ciWF3HaP|M`;>qP5b zd|6%5D>$z!HMVQ57+B~A(y^r*xYDCYei^68%%ezZ7{H`S4IJAe^9NnG#e5si6TCpTaT)+g@#6!L&VA+FSI&Lq>{m}?ze+#a zAI#T#C?8}8%K|P4O9uER0$IsO=!@COFyP>+d9-Jr6!C#{;OWayth+{t2;xw73xjcV zsca?!>5v$MZ7`3G0;LCC#VK})KyED+4LAkgDeuD7J0CSwNkfleJ>D#S`EfWu4;O%y z%V=d;8hjJMehx-RzoCAXI8=s~+;zBq`%nd?5=(H3m;GN-76hVbPBw0KcyJJ~OD){l zwLEtT%At1g6A%=C8Ot32nX!w=77g)4yO8OKakG)Y$}Ae9e_hh z>c-2EII&fiy#G1v)DTkAG*#s}8cW$5S&j54eRKd56=H*+C~@J>j{MX!QOnSDOZ15^ z052ee@%$VkJeUiWM#Dp+5Sr{Kqee1O_~{6fNVK-LdavV+YtA%UnsI3Ypep~GnNV0p z`XV}s0w+oAz&2jL@uO~H9i&<1bjI`_)grW;fPvBu^px`gPFLIpYgfJ^%ifPwH+j+{f*~x7u36C9MDzPt`Nm&5*y@ySsIWsx;;&wTP_D!* z+`J36ufhr+bJjjK9Jb+H$%t`UTwdx7rJOvFk+G#MHdoA*(%WY1?SK2`1+CDSBI zSCKM-BeV#D2DE{6>eJa3QG@rCdXqdB@jj}f2sjbysOJd$E!^bfQ07gGrpc)%S;)|r zBj0QR4U~ltsZ8RO4+4v!qH>N@cmTNM3pp!L?$7X9mqg9PDnK?bCNzely_D6FWI2+@ z_)7KhNcxI^-~gd1EH9LqM~hf6CW+$G>b@aJO*{*QmM?2TvvSdiX!bWC|($eVc zdCY)%8+?zKq&N#zA!{HMRcq>~I6&oRQ3VzCY4s4UUvYtGDe@Y0N1}LY4sH=?@-v@XQDCHk%;oz@X8V=wHFa)CAF2_cXi#OPF(*Vz-I zc#gSM;=nQgDo#282c7%Mxv!l2ik^tGUpU=Ud=RI0agCQP+PDst5kL|% zg42*%=xZ!{kj*F>41E?|GnFyp?N{;BH<7l;9sN6)W1Ny{d4{9VAg#1XeRZs=V~Qvk ztOpZp9n}4hq(Vl7aTF49&{KYd58{~P6vP3EThXt;SaAVJjgz1;rw{;Xb!dy3+QoIGwnbN?@^5P*5l66bgnIfJ9gyGIrc zZbw@$gjXfnIs|JQZ1|i4f+gNrOGH5!^^T;xGlZi&2Cyt)nyQk)kjbOsC%6gc0%fn@*rGOCDXL>d~iD;)YH-_my*BIro*bUp{9;KoeT_Um;YywKW8IyJ*SGc&LDvCHYhyrtCD@ej? zmWh+s3giR_Qz&70eLsHuHr9C!kb#~kC$S`uKckXq7Sbm_dytUT;z~7184P8%7r2j&PQp>Doi4uTE7cEX`~D2nj~en3K{5U$_KHcohH?H(Np4v?MU8YF zsA~@8$spdi0+^t*{^VsSJBs5FEX~#Lqsb^U2!{kn!2#()f=9GIx5?vIJelx3;MW3n zBGfsHa~Huolr*W<(ufqtp0pbaTHojTW||`hlF~Qy&y!`ZY$eNb_yu_ z@;E{EUeZ>b`^vemocqezub#$!WtInz;b6TNZQaIOH{b}AjjXdw=Z-D<0RdHV#LGa) zO#4RLCS^kmahW-FNKz=(dIRg>6ev}smZV#Rr$7mxHtFkOX9HglY#{8UhDqFXv~d+{ zUV~h2gP_qZzZE3axrEmn7Y4hrJdB7*gnGsa8?Vy6Abr}mr97c58HO2kUWaNo^c>lH z5sL6x0z~~Q+L)1>uBFnUFKsOiM+kLA5+fYsQwT=0xg@F>l#?(W1T&cHWxE3$;h5@d zDj9nP%?aUi&y3Cb4p5_d2@ZmNfTM&f2|9+TPx;(q*dKq57RMp0?}KWky5a25Yn;o5 z4{m}@zsfcr)r&S2z+%he0W#?)*)6f- zDQ>i|@TSqpW3^kx>f6-ut2hvrxIha*9TMt+WgZa)rAX)lo3>Y@nlzl~0SB=S;)bvr zc|+WAsn(s@IFL9EN#te8_Ny4R!P-93xQTRL`6_!aIEZ5+PbiIM85l>`*617L{c;K@ z;aRwb6&)#K?D%b{dM&LBhbr%$#3A}VJ4P)@qwoRRMD+Mqf?|xRdV(Ubm(&;|Xeq%> zoh-n2p%-JOKtCgq=NW-BUWJTFhKkP}CYA17qXvQHaY3tVUF1vo}kd$_Fqgb8bH4thf`7vFgj!r zZC!b(<;wdB3)bDD$0Q})_3W?(9(eRyD1Rhys?c(E?knfMa_%cB z6p1Jdlh6TmtRP}%aI3J|WcbdIAR@oVJ^+pkh&N%IWz!>UjkFm=l@H`dE_ewf(AbaJ zW916ZOtR;1ZR`CR91U>HoVao;Ls|PPJm5r-#jhfpsdv;%$ z|0Qzt+Rn{hMd&oi$$06dcbTSH#vaT3AczU=Hn|JKHAef9mWeQxZJA1)Ef%E_Chr@a zJJQ(H{)0B!cnaPj0lmbSAVQ~>qN={OI}b87^yUc&rE9hX_syeQvvXr0<}_6UOw_KB z?$FwcSo}F<@*p}%U=CRHB+otOIrEG>;Go%!!VQVkmaLQ!R8X)ntwzzM<`o_gJ`O9o zz1qhy0&`4cNED^f!|1&H_)tjT$sk;j9U}lMq|VG~R@qe;|1=?vHQBjN9`jgoPJJ>~ z+j0s1RRYSnAnU~lN%dIdU2aF#nF4jJc1>NE@~JeaxH7W~uuo`}B#K;--8^!b?L)MI z^p|HLl6H2MwKZrWK zg-rkxH}tT19c%0(CGw?dZz0`*di3PffD)owlt;VgBSZyLy!Km=5rx0h9lXD7oj{)n z8=@o#5RgT~uM@7Kf-MLx79&!5=_W{xPGS~EA^IHNwy%IV+>u0y60!<7YP|25%3i3l zN1%c%Hrl}b0X3dwI`@b?sgA}OR+XPrrhhP6d$DFnAF7h{AXeg|yS~JQQGy&D2TQ1Q zXlr&6-tZ;?QC$sfWHKPtPDWD!h0zLuX>uh5aJZ*Y-N*$G2=anxX@~v?$q?ZK;2>Um z0GdY>q6U~+=+8rGPke;DAwxyxs>UBDizsvjH`lonn^W2tt?PK>hS)Tkk1RWElsOTq z0}}}I@C`Lvlu?aqmYVDuqqFnZs5S$IOk*4{VHpjNo`oKwZ%pMO*klmC$zzWq#0eh& z0mH>TeO1h-e2;0uxv!l2%DJzc{pyMAS7zxkKA3N6JT90*Z-}-aIOxIe#vDCN6E(2_ zEcRHZ#q|&qVjG8lC5O?<7UDqUnrKJ{*ZF|?6d3UNE64~afDyKgkhn9EFJLiw_R99S zO=6u_k>;)XN6kZ|w%2H((k5611aAzFqE4jjMs6p3gmHLw zLzA>>>G?qc%#L`6wBq-!VRR-+il8}p#=XPmg z&jIuZ)Q?^#A)mPF@@uSixE<-H;Z;}540R1JP7X7tuR;Yf&`|QAn`IK8x`$!3G33Tb zCVG@Loe`%%S}DEG%V0r6br~oRaFc;XQ;$#N zm?7Zt_6_t3pCDgoU67}SsjnhEHIAU7yaP-eI;H||f|e*`Rzg$W6J<-hwddDE)f=L0 zG($>OeG0#vh1#i+hX^3!EYiLs@XgDFks^_>gvU}G&|`yCugL)*YqvEyR31FgwKCX| z7jUI$8Ox9Y-L{k1F;Obz1`(8VUpe;`k9p30dL!@ zPMWQ2U{P&2)mr<&4J^sSRCfe9c8DAy*t{(bN3a7A2%ZAcZ^$20kJ216-TuL-XtoZj zPtxO)Ws)Y^(je%}IEEb?Espajd$O;L->S&0QHK=_+O<;ea)~gUvC)P5OS8`^obBnW{!G(ma zA>hOfmIoE$=~(bG4$}p8d%G8@0=42;30}*v z$UG;A7&5HcC(jh1>D*V&edXL&&VKbI_A9ge7$3}4!8@QtJ3q7w9%uW(X}wWJL?$uN z&?4%G|M~)kFA#vnwtP%uD0BW*s6=;+otb%gzyTFAg=>ZLxZ1n837ExW(qyzLp~0kk zxZcI@@db$Amp@5I|sy0fmev4DpG$nd~MS+jyk3OSW(H z&WzhDA3Wr=Sb*t<`M>lr=|57F@PL04JG`zM`cG?& z(p8T)$q_u1hycJ{fGDRV6Pi>pCJ#1LyTv%k`zu&g0dZ2=1X44jykWc`(5X=I+=_XK zL2dv}R@G4mV7gX$c_|Jo6-g!ZWlk%$BtaJF1T%`9LR6EARm{p>MD%>R^;c(RDx=<$5bD z*y`;dvh!pMc?_ll3Wg^T4H8k<_MuL|guy(f%9;%yA_gPF56J#Wjgd|wvlT*o6=ntl z@+h~KCwu-NAP%Q@7!0;edXL& z&VKbo_N#P#^;mzf+9Ugggswmuec*}5JoD!uhJav)zq(Uh1T9MGWY7{UNv*CP?r&Um zC?#Ny80U?~J?w^%8MbkFnUDenDLw+TXEe9OM?*k(LjtjtU8y<0C-MBE(0dCOKuiK< zNE|PK>7dC0@{od{tGuG=#)P9dTFv$~T2}iPyZN)5(m8&CSG-~J_^mI$XF`zPKgEDu z5Cqz&z8KScX>Q7guHix86zG5ubP9Y#^NTdjg~VmFjBlN8-IndzUD&v&)7CeDBeNj@ zZbr(IA*MYa7RgX}v@wLQDhwRPL>YE$v~R&Ij#+biDX}6kN{`Hw8;M29rNQGs#j=7Z zbP=F*j5i-84>DT5$xRA_ukxd>ysUVRj(4lLBee&KKgW$(LzPL)G&c~u7WQ+Odsu%nD_N~(~~*E zfKw9?s<<{=gLKBDh`)Y=;+L~v3Y9Cj_2w8x%qwwc+-A<+l0z=vB^^wfzvWG$eT)7U zRZp~xorL-)ZCt{64l0nQIdZNh)(qT^&VA+FSI&Lq>{m}>zsfWo!@*36?U6F$C{kdL zCAYH^%8zhr+qgqt?-ZG$wn2m_!U#o?V1>}nK{_1V6@s0IRPaJIje^DQC%0Nj+1L8Y zft4^3N_H2`*NrBttG5=#)w0HH{QAnHSZYPfdP|ogdjVe zK9s9GA=u4X9wGRv`ian64j@(~PIen8tcCA9{1{xvYY&bOa%K_?cw)3Y7YIal?knfM za_%cD*pucy$vc0@OH@ zQN48?22dz1(l2Y=#3h@Na5UV0g)$QpI-eD;?->!xzRKQC4k}H(goL9VMCri_sWQ^= z`zv?u;;kao7%74%)n*|D2i8`}99 zQ%84Hj6ZpkkOKLRkbjnCco%_nUublhJ*{`0)ewFKNAHhN9O|bDsiuBG_#Dal? z@WF6__7;*+fbWcbSXOk2NXeI`WO|8I5=zCkNro8CHPDLIk~En`w*5WrCnzLaG(^us z^R9kCI{}~4_Krb-hF5MDt58x~Q~zYvo?2As{1p>Ar6gz^-SS(iuM+#rVE{cuf7b!N zo`wop3!};N6}xxGj-+P49mQ%lk@_1~Qbkeb#%daG4SVA)HUw2fG3!ypvy_2D)*p&c za1A!3$$ezVF#3=@Qkt94rQ#~lxyNwFR&Ug{0U`oqh(H#?d|^6Mi+#I zUzZn*aEjDqV~5bu!{zYeslKIZE$@l#FePda{8bfQ1%u#`b|96JLMG8z8x0j6^_93F9LA2)x@4BCUF=esETrEM8eW2f*ai`T(gftMO379j%f~> z6^j`JwuKcP?vt58uO9k+90Qp-$^-y7aFmx6gX4uof(|Ww_dp)dGxaMfZ2)i+vdv$0 zz7oC;ZD?bF#Z-`yK(ktLH!z7nP~dlB0OsXn;@mkH?$;7E-ZRA6p_b=j!7$}ZVA}MG#?PSq({m4NQr7>OT+=HDZLmv#v~*NH@QsA zIxI6Vf~St9+gei*jg**Jfk8t!$gj{vEe(Iq?Lh(_{8R&)<;CDcm}tN8Wn~HBHO_tI z+*i(hFicF}@WE)2^cWcdY|kJbaFVy#W>26b zusI(1>EC&i*e=*e=NjprnIrHB)NcIM>tOXp!|PQQq3%kpl_5mevR8gFw@}^QH>E#L7pRLJj5zo+1t|$XLu6v<}1A| zF$_^U25V$wke7i$6%ab|uBo8Xmqgv_r)JBM*rSd>D99JBH(H8;?AWMp5)B?9bZKbC z64VpSkIcqaga61Ois->@{keX$F8c!? zLB%z7atE_BYG_>^L`0N8(e6TT$wXywC~h-JWGz=kf#f=T{gTnDXA1n49+XSx%;b_6 z0|3=i4NnW)JTPM0_UPPK&V40unsZ+{`_(^wzj_=8sf(iGV4oyE6L!W%4e$Xa_|0Pw zC76Xs9AaWBs2KZmm~~)N+LJt94@Tm)M>%K6gWaQ4k=_r zuMm4ek+2_9u;-|1ih6*sD2wedc`y) zRfAF5kWN#&vBN(vF}$RXuZqL3St!;m*}2L0zv5cQ%Bz^H5aNkG`g#y~CK~HC;_^Px zNj(c`I7pcjq%#P+ANo_+H>i9bgM%yrwPNM1+4WUQ(|kcQo%_nUublhJ*{`0+eq}YM zkMO}eDd&mhqv2r?z8V3H9QLiSifT_h9rQaB}&9ovPqCiR+n z8o6XLzf)So)<+%H>_+m#djCz~9J@rvlK`H0PZ{n&mPme;JK^WxpdxNCbU>YubL7vz z3gpm`Tm}mG+L)lXqRhyj00-81>cBc{an)lqClT@7qtftqW(!YT-)yWN_#jcM@FqUR zpXkAk$+&i_8#v_P83-j?ALom>v~q>OhKN*{9j-dnOY!E@Spydc;ZZ(0a~W3t(14VZ1z*7sI@uMTp);&PQ5=TvjmD zHmb0^&VA+FSI&Lq>{m}@zbdsK^U-I^|2ouUL*J%(( zLrwcU{Vbz>O)xmb7Hhe6{v~1+ugOFq=*fV?Agx;SG8hWaXe5fgi7u=PlcRW939zFX z%G3-3ZANAj9~@voB&qsw!p&rlpl^&GR9Vr+P{5SW-I~ygWQqg;5pCbnp7Ryf!O~Tz z%wZ6c#)AaoHk7_1C{$AG$cG$-PiKTvZj@|Z@lQN&U@gRVkM9!rqw5EJ*s7aT2M8}^3!B%uQFqD5^vo@1~EQJmRY-^K&l-W z55+?ubAsGv{OO<@ItpgXY91dsnN&n^qERV@M|d$W;2#&QP~B2r6f^b8OLl2QJGk1Z z%F@I{t6v`fDc@O^d#~;B6K9&LKz$XcVzfGD_8dNXsbXXm%+K*W#%p{!yFCHjL;P`6 zK|PF;mmBdYi2Xsrl8!sAGgXx@i$s%_8I4HBWQ+g^04t7BLM{>&0I`Ii9)Sb$rKz~k z+xivgA8OrzgFzxm=~tGO_|2?}V19={$aa@Z#P8tOTHXuBdH9p`_?YE1AU6QbZOEdK zODvD_LN&^YvAKw3m%weKJ`Y3YQKAh2B-W^UxTCU`5 zN84Wp+ILa`S@I_z>7XkV#99uHz`XM4FsBBoEOxLn z!*-b#L4Xo&bXotHs0)M8ARcHAsU}Li#Bl(UdhN7l#@#}WXhgCJlS~r9KPVHTo&21i zQ^Q0@>L$bzXl9&*>~Ay^q0lOsqCUt{iu z*+$_*XLC+K4O1uR<@pQHJuLrQ+>wZ3Ai{psCZy0XMNz^Vu|*_6X8W}Yo@j1)NJuGR z08G?mTb=$TD9p0Q>*AFVD+->f++x$v*m_!oe9=6mnW%Y=V3Qq=4RFtqZj!U=li(9> z4q3+ABE=@=O*iI?@^!F$%|WtUlHlUv=gEYUEF+d^?J@2O_S!huHc48p0}|&jWpE4_ zH!yvmu^~YSOys$RFdyi)UEPJ{QA0+%yP;`I9)f*rW3!1b1MIVJ8~Xym4WX_PbibOT z;oMiwedXL&&VKbI_N#Pt{0I(ORrWVLfD7hgC_z*`L6x=u1&k83tJsG%D1q6#)I77a zicZ=3*zJ+}t6rL%glVqH(>?PPXpNB>!TzC)|=LG-q zkn~bvnv!;Yw2SoYKqB^VobTWW3KO%jsf~Xhu1IM^{3*bZs&A9>hMY(aDwXD0Ff$6K zaoLYz1W>1k*uxP$>NJ6>+EwcK4y<97cxMoVDlY!PAd?NDqEM=nFMUumupak>QmJJ# zhv#B!v|rEI4$X(+kl>ZDKSmWx--5h^kx6Mi6?iqgSVJ6Cf6fyzN3oj88oXvs50O$Z z4<6*q2<&_L{V9)vM7CwO_|tWbeRmiB>y9d>gIbM4NZM%9Xl)Df|v_ z)ioCjDCDi^&vGItlo+e zx2F$<=K?_~wmWh@K?HCR-6rYNM0sNqKn4kd@K5MZqOCh>kDC2w@e{ZS{y}2F5O9*R z!c5p+W%QQT9y|`3#;^vJ{tQ$iw_Zg4CbWxDPz*&@|E@#E1A$)hbnTgfzjGNR?sG zp%)QLRepp-eV6XsfDuae2AgVox|Rq|{0wDC64-*)RK!+Xi4Zffr%MbJptGV-sZ63m zv6w86jEA0PALf{-?Scj3yDt>E#_Mg>4Y}y5g;EEGWoz^j_Ib&QI1-O+5%>Y8!NN)s zruvPGS}tp%q%{OiGlB@>ts7TzoI3f+4uN42hJFn4OqC+#oBC}+AjmzyH43E01}F(q zlR*a{a`h#K8Bd=x%Hg%f8VDBu^gEvSWpIN=PlrPyzG zE_D6|Nn*%j_Ebk1I^fMLkf!JztT_abwwLCxgJ|+)OQ0wTr3`&Uu3_KnhG1k+v(zYY z{K{9REQw@vO*k7xMKFaymXHzKiGPx4@3Uw3=tzNPlq!UuxS4jBC!Kqb3j^~qW;d#f zbQ=Q|rqcI`PK`5~0jC>*X~dM}(V{>DRow*|kguSkL90o3OlnV!j#@-pWYk=Nqzs3m z#}{o-0v!YQ4DdX5|w11y*w+zn)4k1YN7GE9Uu!VN3+&aZA|D_hESD2s0@R z$Zed`x>XO+xv!l2%DJx$XTQ<||37@c$~7O;i(0iypM2t7FC{x_k5UPeZ;4L+8fgc6 zwFHf@xf)*Y1$kxa71|X-{$%zpgeB8lV`M|7$drLl^#;Fu0BVESl8FP@uWNNV5a3trflg;ZOf)L|^X@iOSb(Gg9?Ku?8 zEy^=pLi!d(lBTACG~Y1Wh+#(jT;vqs0LmjJq%2fNaSM{Wf^Kun;{lHfnu4VC>}kA> z;*>NV+!jNg6QIDp+?bW;T+p`=)WcJO`jz~($dMB-qiQXmOVyf{C$p3WtHv+p<_MPD z*fY`U&~N3@MPIl)h_jo!F^q7&L~0{(p+*YALN@K(9++UNx%Fb1Nn8X{J-%Up6e--A zuBBAcISUd(>8fmS#l+dfS&{OXI{-n!pPrhyl+JzS+*i(hm-b5&YV z*vWg0UJ@u+551ui3UnC5m6}r6#7G;flNvgWYZf6rxH$#~L>j7w8J8($#iFr6RVYQG zN{gY2CJtcSgDd$`^s|_fuqGr8i3{(^Mhavgz%Wp9)|u8cj#bEnnT0aST?rOuLazE1 zCPYG>B}A$0*lg*YvEe5=uVd{y(pS)*1ZBNv+`}A+j(Cl=@zRupuVsJ++M1+fFKJ&U zVRmfz=}}aKh_h3^88tn)CxuE71ZaRcq5`5prkFKKvM?-+ffxqmloZ57^Xo7lXAGmo zO|pJ4L8W9j+1}?*z7zw(<%hh4tWn!mPb)Km2P6YcLtL~0h5%6brrEjSNdS|+piQAG z8brmj1nOC48B0q;#2Hdj+4H4MvK2BsmJqWxHCk6RPZ`X?Ix}N}2MoNN{xTJ5aWOt9 z1cTO?c;+9iai9>y%5#XsGmOO53rK^}H{_l%A&W|;eYv5WkW=O6NsbHG!?gjxp@ZU# z%=2)zPlRj$IHnzGiTYuC@k;x&3=l_voRtTg;)XDps2+Y0j?!FK<^at^^hM5n<=j`! zedX*|Ph`K!R358~=4xFkllmVl9Uo#s)%_We8cHura05d`bzj{?>YB&Lehw{SGnf5A z9(kD2S)zt;Vo8&Z7#Tblu$5^2jxH5SMYd~<-l%0zX(Gr3^>{1w7NISuD=VaMQ}iR* za=687ekJUTQa&mr7NGM z*|jh}0z$zi`dJ(;#Z0rgr?Lmsa-5+eL`=3p`kn|@!37kjDtL;DGAU_;B$DhD=r9Zs ztWg*>+OagFJITxkQySx>--Fzq?2xEvDl68qeRXsjWLG31w0 zBBLLQ95h3B6+1k=Hu+Qd2_^+_T+O?p#`Ji>7k*-!L9mlZvnpi~deIq@RM3hUf7DU! zhl)A23t$=^8m{e7u`*MMekH9{4TPdOo252OMh#27NwsdNc=K$KXxxFYP-eQ2R7WAF zTz!>iY4B-s@gOeg>@o8wBLxE4&S2Bjd({lZ|H!4MO{pZhIUzYbJRtYQClak*ku1l8 z(9@JXGou+#&VA+FSI&Lq>{m}@zp@^!i{|Rmh*EH4$L2YoGN3q1s_%u5sQxKwJ^Li` zeoa)TpN0KRF_L{jCtW}DGSx;s2+tbE+Hcs0L84gao?0bjMAKSxOM*QGg{b{&YtUBn z8o(N2XHduxYR&i|K0P}_lWD6Zr7R6sK+Hp=dJ}Hmc&MGy`JzAyEEd+Xikk$BZKKsa z@59d{?OW2oyk$n`fjR zz}A@u&Z~J7sE>G-7*Z+>*mgV$hD>gP1U*&EfPbD1%uxbw4t!&xBLb4GgHQM@VQh$?ONyz$qfo#8wxpbKJFydxg#qNiEk9> zSBDoxE-hW!c|H1-M8$GEcKY{`pIAAf+wv%Z^#X8^*%pch;$(Sb!fcqC7^PL_=muXW z9Z9aTx`C;_kIVt=9wo}NWRub#bnYwXzH;s>XTN$9`&H%a>XEu=wuW|*{R$p2S52(M zj3hdJjG351wTQm-qQ)d%jQ*Oed6Hj}`RQk$RO<2^n|b=^z&0)%p~(sLql#Kx{9?fedfD)WXi=WhZeuGqVG6p<$rF{)S?wy+p? zmY``0gB&drhpA7}fCGaTbQ^X2yZ~-UPgAJ^urR8`5AHt%qEJGH*OLP)ktUN~{rFpN9PaLy2uX6V4*z7mZ(wVnA-5TvGd#RZ0Y$KYo29j5%oR2jQuTAp%y9|J3XDrE0H4) z!3_0PW*8M1O96yYTAcVxjEYb^IM4>GwR67_@bG%RXv5t=fx#v|Lae97@Q48hJ&=pW zB^(nSNK9!nNOVSsNLAg%_LyTv@Pd3%B3yV9V3Iq$jLd3LGn|9A`3|QBIvGDbIJxbH z;FN?wAa4pBSs~gH-NvC%VVp76^)84>3W4pK9Qnu{Ev+drLC0cs*e<^XC@*1x9Gm!i zZsCFerfCQQ!8|RX6a|bluF;;5xFbVbc1U7s^aV$zNQ;l-9EyjpkY@m`kC1eLT8W1Q zri5^UsEG)TfvU^!sO1_k{m}@zbYK9ALE0S3kfh(^&%RpFU5uQ@R}FE6$FVQ%nt%6vlI5cP>CHI=>^Dw zmO~?lP()xHLxTaWqcMkfJKnmrAz%(5GRzL}GEVNpbm(v^NM5KhJtA}z15+cja~~|S zMYB2E)T0RXU>3uP*}PUtwi27MH(p>}k9O{S3{Jvg52MM?(kE|efx)f9l})zyP5kJU z%mNv~5H(3G2BcE+K}xVG69g?qDBU;Ch@4Eyo*XcxJQOuNu`@u5vyOM#!T@3vn}H(TIxrol zKTOJYn$xMoB$5Eg4leXXf-R_=tno7YTZGjphYhI@IPOke(4zIF04Z|q7&Qn9Wzqzb zBEcppdEl^cXALW4P6Uq!ux1NUDA$W|#%OFXTOa97*j@7O}Y80)&y&9CT$ig(rXe!Oyx_|?!mYbg-bBdPH zMRP_x3-y_Vs7ppPpL1V1_my*BIs4Vq*srX|bG9qz)YjO~je?ARV8KI6D8j5jW(=Wz zK?;&$pX_E%?%2bDBtHdG{s)dCk@}nF=R%I?CBY_?zJ*Lte);r_&Jn#f_?o{$1ew52 z019u)~T{1?21Zk>>3UvY0((|B(F;Tedfpi-0iyYLBRZ*6U zfgWR0p8Yv-bjP+21+!B=AK#z`pF5rPeom0gF(=EX0kDDzWFpAjl+$PKmQd z_{8;sT8j52Slde(I`|aQwiAP(be@>yyL_VjhO&Gr3>?iZVc@7hDT<y9OW*=KRl|%4?!Fd{{pez@d#YI?34?4mWSI>imtjwadopb9!B3&jO-&M=8>4gWN0kBOWzdvfMQS(1s&IsO03%FAv?tUnZUtskpnJ7< zn@agkwDv(#bflaiZd#UbWSrE8HI6}T$8EfIXO{#u_T8-CFx&wXqET6v`>%o-rVopw zMeRt<K|Hq*Hm>*=65fc*1{S%FoFf%lq@EN6bQWA|Vg#x? z#o~dCgb5H=j>{&8m(!lW$i&G!lMwfr^V@KZOaqFd7Z5}B6P^3Yxv!l2%Gs};#(tG) zJT`yOs`aT)B8nhmgg;~Dr6B~wK(`Iot^htXgjCO%*p7Fb2ODA*Qti&gbO;3*`^RPx(Ez~W7q}bCFys!zjRzg&$RkA-&fGq)A!YSm4%yoqf=DV-M z#fjNqBt0O4)^rkuhNxGl1CAmAOqxR+~BCl^TTe%XItNpC-bEjvJk<6~#mL zeB5m)LwFgwNIJkE0|NC=X@T&JV1XA};kJMe z1~Sulc@u|BB`%8H`-Db8b?jwXrCPf{mf`ZyMu^y$VkQv*%q@yk5K`i#z^tbxpv#~@ zO76F+$Cxf5dhwP3l;{-=gv!#*WIQ4&S&SIR-UMw#vRRJtb!q~X+MV|BV$tCl`35p9 zAj=`m2G%SbocNgrSYUDoYdgnn0fUCcD_In7ZdYGbv!$?1y_Dn8;7IV7Rv@aFb1>bn z8ZR@phIll@SczJt+nYrX!(ieGk1^OZcmnYPe~Pq?N)l&0?5ljHi(%nKp3G zK1&Bnb?z(YzH;s>XTN$P`&GLBxR0Jbl$wJy$e6%OmC}@M6O{$R4_aL-)%46hkuSgm zI7q)QQaJ=sq=*R6kDHOd9g)=?QQ|Pj04B!N(pyAT!mro%UflH3u1M-h!%miMlf4v4 z!C2lR!7O7+MvN?v6tH-p+kwxnk?Vj&0%BI% zU|er6RM0DNBH-?aZet9gB`Tq80Yp>UPmBgG#uKLZR<@8zmIYBR*O4}>r?T^uiPXkG zLB*1$;o8o%qkv2vxDtLyxASn-7$RBSgY}R^NHM<)5hhShbLuhpW7CjDk-o5$Idn@o zwgBeAB5GbWJwpY0qsw4@6Fs`amdIU1JzT-C&VA+FSI&Lq>{m}?zsfx7A1u_z@ydar za+Sd!qDNmwTCcMGKcvpS!WUYt~wb^`=YQ7Fx zYomS}t>1<)GUTs}`j^=B;2qhsH)iKmxN>W>-=t2zO0-^6A&m3N@*z|@vZiJ$9=qUV_p0%+POx0TDbgux^Yh| zOuBhZCN?&W?8R5ed!p6bQ1K?l+0}2%_N!>)KHd3}ifI1qb@u3$QQmjv-{#L=ai*uc zzm|GmrCZl#WmoFHO&wjMa$yZQmyoqHn|GSu5-OYu>?Z=+wfMt96eMdb+UPvJ^j*b-g7xvAFQC+3u4Ug(j=EQbZH``L$rA9+*i(h<=j`!e)UB5tK#wD z5xr>ba#LA+Z;ij5{_Z~?fBm1zhrd^E{<(JjPuBR4*78sJ$sgx7e?PkY zkF~=;SNDG}u71c*{!&@}H2U5D$@}D&-&M9hH?IEPzWTYg{-L)0sj~i|y7`gs+uI*2 zi@&rFe=V)QYwmw8ufD6Tzvr(UOmX&?{N&r(hGY1?wEnTO`Khq{zPkRgIRA5P@t5Y} zyZZEx?W-Sa+wU8^&;0w-?N9t}b@M}e|M$xNC(f(3{^|7kpBnnf5ADNG#pR#thrc#& z{zGx~*Zktg;`(Q6@qJf8`VZyxj~z~V_fv88y*2;Nn*6D} zVu`d$#rb#j?a%G~KUG#g7gs+uc0aWaKi95UsPF4nKNQ#BbGSwMVYjyQw z=j!j)^e_3@ciaX?SDeL9e01aLZ?)au>N>9?{e)YNW&PTrYJ`KJ5ap;|2d*1&z z@ar#(cR%vH_o@HG&to4v59_x+^1b_s_x(@&eE;4@zF$6zzOOIdB=p`V!S_Em-hUo@ z=cB*}&%(U_ho49J#dm(=e)l8)ho42>`>pSTk9{9L3-SF2p9FsSY4F|Oy5IZA``#yf zXn;@o^%v3iKlMEv-us{U-uGco6my3 z@g#Iezkd0fXQ5v|3w-dYkE6AJEA*?+V;sQyANzm#Ecn4Q|GOXi_>^})4sZQRzG#3vEC1dQEUx13zS0dmV5#XAzIK&>v@)=kkD9s}^rX$TrU<)xVf*4N)W0JVC zh__$)@hK3YR@;;R>BD%4ryDsvV|s}1mT`L$B!h(^3(EC6V|*=r3mSNVp@T#67+p;Fgn8m{#McleA|}yCA>&CdVkl~` zAyh~j$M4TdUdr{5#{Dt=f7!e5=D4;iJ^0@Vp@GghCv>9`iJWr|B<~eR9*sSAx%__S z_qPr;@|ETa8rfrA{&A{MED&sTpFX|0pS{+4!gA+GUT}GM!L~)z(NbH^?^(Wmh4DhD z!r7p_@#gM%wvf_~DN4?Y{c}#IuHXBL8!OafCA_$iJPUokshr=gyjdUC(%_GQ$d$oO zm9no9_Bcd{kvBnP5iue}5RYt2^Fy+W-BABg`u~N!_UN|r=?iZ+`bzfN9*o($jD;J{ ztLNVxguFV@N5nj(>ndGW>AFhys~=;(YR_&zz(Ki7wAjTlTTxCU)N1E^V8Ws~jG86k zQVN{UHI5^sm8_nAu)4=u1mB*+Omp{ZmOLRMUjquM$?CF-{38AP+Lt973gU70p%dFC zxV%{$M3fT1l|&!>{LVE8>Fnyu()2~55LGw>&+_yU`Jb*F+{l_==(04qVt7(odjYiz zyicj&!lhGYA}~6k=}7biM{L3D+oBwplr9Z
      jOPh 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

        8VIYP_XTZeCES#6K!cd0#w~ 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ν5tQ>G3ciKJib{)2Esd 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/Select.wav b/Jack/Launcher/RES/snd/Select.wav new file mode 100644 index 0000000000000000000000000000000000000000..c1c2f93d721db8db68501b26a509cccc58654674 GIT binary patch literal 1194 zcmWNQeN5L?6vm(PRaRJlGXy7NIA<6_pvh2ER0N^0m{35VC@eG?VrVp##GE)w1)*6Y ziV_5ZKpCq@Es>Wj6R}|_i>U*KnNvX{725B6p6>2;|G4+OJUgG~#Jw6BSveL+3`1jD>+fB@Wyvzaa;YF^(ZJwhSx;e~;jKgfafKX&23)`^9 zZIEkpGQGdn9f*}q^k|#r@&=vpF+25Hd?Y?N0VnB2KjP_tACB?@BBTnV z_6A+WDSVClc*gEzm41l}at3`;z+v3sLi)%IS&lNy;#b&f`oDvnd}1%x^H?lh2-O?} z;Q(QBqT$dvcuxY%Yc)fWZGPTj25)JN&cFz!VIyN$flZQbU4a|7a+ELPJ88yF^}{Zm z1W)-@`|%Sdavk4b8`E&kj^Gn4WC1H#!nt@(PB9UiFERhA6g&LH?$LL+ja{WYGbrJ7z9FpLRQ~I`&@e(M$rs7e~mZvN?D?_>s^AEL# zbqGT~i@5;Lh@TucGu=mrUe~Ldz=>FdZX6Ozs#&T{hWUBApcqG_Q;Il_3uH)+$vT8< ztme}jchQDnt+PMVVdIWS{;ON~E*#v<_mLub;w@2l-7r6h8u>x|#gnOah1TOQqx_D> zvEFDHU?!6ggAt9=`MOJscpcT^A=~(^iP#Dc3BiyCn5i5?E9Oh1#L6EG)YEp824SWg zl0gJBSbNnK6_|%;KFwT~@dT$E@`DI5m6P=wJ9dg9c5sKeco89AhNhc;lAVX{JVU3w9tC?Px)=q3wkg;$i&)e-^8UrfM{Pl$k>M zvO$Nm!u*G!miu+R267X}qEQZ8?J{5&nfPqo!?W-gH<^o4=IdG(paiKhYBY^7NZrj= z-xkZb%V9SCdAm#>@gUtLnMu}CDYvKaC{o#kW_e7133mkJzO2#JhTu$zULqo=tNjru>5 CAWIkk literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/TypeBack.wav b/Jack/Launcher/RES/snd/TypeBack.wav new file mode 100644 index 0000000000000000000000000000000000000000..a46d10acc45f3766f679b6ebfa38810cc3ed8dbf GIT binary patch literal 1120 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/type1.WAV b/Jack/Launcher/RES/snd/type1.WAV new file mode 100644 index 0000000000000000000000000000000000000000..73747f51fcfa2b678df36e0761ff28899a9e2306 GIT binary patch literal 4790 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/type2.WAV b/Jack/Launcher/RES/snd/type2.WAV new file mode 100644 index 0000000000000000000000000000000000000000..361bbfaa4e96e18bb2a10bd6275f5be6b9aa8b6a GIT binary patch literal 2988 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/type3.WAV b/Jack/Launcher/RES/snd/type3.WAV new file mode 100644 index 0000000000000000000000000000000000000000..83b8a8273454bbc847951fc853f796475d84e9ab GIT binary patch literal 2322 zcmWMo33L`k68@@Z=06|;$|*!aKv5#dC5jSGIU)waeFP8)60YFNA);B(fFST#Z=|U*SmMMFfhFP zuwIi=W;dw?fXvf$81ULwK%o{Uj-NfgBm_ju7CuO~QHTqe@25rfps)3!z9jqA1OI*1 z7qwwqTdkE+%l`)J0|{PxdzfUqMOJIH;w(~;eQGm~c%LeT-*HJlg;Q9nOC{f#Zq?AS zl_&UGI8$2rCuOde}~(m`j$X{II^UyeIyhd85)ZsRX|Uae=d(usT9*ZcTLp|`)6lX;N#F| z6yw&5H0SZUL*&)qM0b!?+ex%n$Vc2Y&L#8D&vm={A~m2Vew zb8jd$Rco+V|LA4%A#0sA$i88<_s+@7?yq)>aBZ)1<)VnoDwwS{N;0j~XR3ausn#z# znbUN#>K5?*k=6+9aJ2KA>cmTQL*?)c`$b99$8aUG+gfd}!e-r8hj|C0xQp7Y9_7F2 ze$*N+9i>iskM3oQtl{nwYv08^egwCrHsx{@M*8JQBOiSwfzqYB^|Zw3Y0x~BCSeou z_zAxevkX9v>ZI;)94^Zhc^gsG8F!^AM)MjTj{Tg3Xtf=c(hftV5t6Y@2BHjgX*!RV zo3dWg=>z#*zT%)nOAFjUu9VB8RD-6=*JRT}en}=FM*5=@&hcq^7TxiiR3HvpagG#D z@i2UZuXmI-=fTuB97Rm}4Akln@$MQZt&po-44@-UgmA*y5a66s`swfpy zvYEA)oP+^%%X&cxWnO;ubJb zd?4?dI{c8<((9zuI*L*WbV1@}C|8#+c`fhcwIGP)4Xvj>)QqN5EM29~XdLy$ zT%?(kbfHmxYaN6B*o%i=G1|#WS*&cDWasmET(>eJ&85u0hU;p%jJ7U#%e_;45C3#J z@G>jMclaU>z{h9a75yYS(>Z0)e+;iPoEZD>Rvl@kZ}Am8qwjddJkqndrHZp+RR`H@ zRXFox3$?KB!?M0oIYEa?B2RkO!^gcSf1VyJ6Vw+WjltFlZ-})$FeJ3w?kcTedli1F z_nu$iX^zpi@iyJ{9z?E+8|)bv5vpNb*3~MPMN0f{c{L8xB+lbTwym~V=R+S^-JVRErJGL!x!RDx)If;l_$_ zx(4EL-&t)hR1^H;=w>pKX?3Hq`W;G=0W9jAitu;*x)ezhS`b-W*$S(iY4$8U#WC_C z4(J>yRO3{xKPxgA-v$3)tuXjQ@Q%1ut^ZhFe#b44m8!1Zs5Yr}PNt*;^O1#1d`oZV zDLOCGfQzgKbVClh8O{dB%7{adZ~kyNW1*KUf)PZisyE+D6q(yuXpNays0`}bx`%36RNj# zMm>fH+5PK!38~v`$;-9b+D!*Lj9!>Nq!eSL-*k`DqE$h$udP6P%&m})|tqn zcx0QJd{eIRR|u#d21Tk8B#_0D5qo&g&3eTG_H)X8UMnB9q6k}BA7xZ70Y95jUA&B6 0) + { + char sPath[256]; + wsprintf(sPath, "%c:\\data\\%s.rez", chCdRom, csRezBase); + + if (ExistRezFile(sPath)) + { + strcpy(g_sGameRez, sPath); + } + } + } + + + // Look for sound rez file in the current directory... + + if (ExistRezFile("sound.rez")) + { + strcpy(g_sSoundRez, "sound.rez"); + } + + + // If necessary, look for a sound directory... + + if (g_sSoundRez[0] == '\0') + { + if (ExistRezDir("sound")) + { + strcpy(g_sSoundRez, "sound"); + } + } + + + // Determine if we have both rez strings... + + if (g_sGameRez[0] == '\0' || g_sSoundRez[0] == '\0') + { + return(FALSE); + } + + + // All done... + + return(TRUE); +} + +char* GetGameRezFile() +{ + return(g_sGameRez); +} + +char* GetSoundRezFile() +{ + return(g_sSoundRez); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ExistRezFile +// +// PURPOSE: Determines if the given file exists +// +// ----------------------------------------------------------------------- // + +BOOL ExistRezFile(const char* sFile) +{ + // Sanity checks... + + if (!sFile) return(FALSE); + if (sFile[0] == '\0') return(FALSE); + + + // Check if this file exists... + + struct _finddata_t c_file; + long hFile; + + hFile = _findfirst(sFile, &c_file); + if (hFile == -1L) return(FALSE); + + if (c_file.attrib & _A_SUBDIR) + { + return(FALSE); + } + + + // All done... + + return(TRUE); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ExistRezDir +// +// PURPOSE: Determines if the given directory exists +// +// ----------------------------------------------------------------------- // + +BOOL ExistRezDir(const char* sDir) +{ + // Sanity checks... + + if (!sDir) return(FALSE); + if (sDir[0] == '\0') return(FALSE); + + + // Check if this directory exists... + + struct _finddata_t c_file; + long hFile; + + hFile = _findfirst(sDir, &c_file); + if (hFile == -1L) return(FALSE); + + if (!(c_file.attrib & _A_SUBDIR)) + { + return(FALSE); + } + + + // All done... + + return(TRUE); +} + + + diff --git a/Jack/Launcher/RezFind.h b/Jack/Launcher/RezFind.h new file mode 100644 index 00000000..0e5feffe --- /dev/null +++ b/Jack/Launcher/RezFind.h @@ -0,0 +1,27 @@ +/**************************************************************************** +; +; MODULE: REZFIND (.H) +; +; PURPOSE: Routines to find the rez files +; +; HISTORY: 08/11/98 [blg] This file was created +; +; COMMENT: Copyright (c) 1998, Monolith Productions Inc. +; +****************************************************************************/ + + +#ifndef _REZFIND_H_ +#define _REZFIND_H_ + + +// Prototypes... + +BOOL FindRezFiles(char chCdRom,CString& csRezBase); +char* GetGameRezFile(); +char* GetSoundRezFile(); + + +// EOF + +#endif diff --git a/Jack/Launcher/StaticEx.cpp b/Jack/Launcher/StaticEx.cpp new file mode 100644 index 00000000..d7ad37de --- /dev/null +++ b/Jack/Launcher/StaticEx.cpp @@ -0,0 +1,294 @@ +// Static.cpp : implementation file +// + +#include "stdafx.h" +#include "StaticEx.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CStaticEx + +CStaticEx::CStaticEx() +{ + m_crText = GetSysColor(COLOR_WINDOWTEXT); + m_hBrush = (HBRUSH)GetStockObject(NULL_BRUSH); + + ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT),sizeof(m_lf),&m_lf); + + m_font.CreateFontIndirect(&m_lf); + m_bTimer = FALSE; + m_bState = FALSE; + m_bLink = TRUE; + m_hCursor = NULL; + m_Type = None; + + m_hwndBrush = (HBRUSH)GetStockObject(NULL_BRUSH); +} + + +CStaticEx::~CStaticEx() +{ + m_font.DeleteObject(); + ::DeleteObject(m_hBrush); +} + +CStaticEx& CStaticEx::SetText(const CString& strText) +{ + SetWindowText(strText); + return *this; +} + +CStaticEx& CStaticEx::SetTextColor(COLORREF crText) +{ + m_crText = crText; + RedrawWindow(); + return *this; +} + +CStaticEx& CStaticEx::SetFontBold(BOOL bBold) +{ + m_lf.lfWeight = bBold ? FW_BOLD : FW_NORMAL; + ReconstructFont(); + RedrawWindow(); + return *this; +} + +CStaticEx& CStaticEx::SetFontUnderline(BOOL bSet) +{ + m_lf.lfUnderline = bSet; + ReconstructFont(); + RedrawWindow(); + return *this; +} + +CStaticEx& CStaticEx::SetFontItalic(BOOL bSet) +{ + m_lf.lfItalic = bSet; + ReconstructFont(); + RedrawWindow(); + return *this; +} + +CStaticEx& CStaticEx::SetSunken(BOOL bSet) +{ + if (!bSet) + ModifyStyleEx(WS_EX_STATICEDGE,0,SWP_DRAWFRAME); + else + ModifyStyleEx(0,WS_EX_STATICEDGE,SWP_DRAWFRAME); + + return *this; +} + +CStaticEx& CStaticEx::SetBorder(BOOL bSet) +{ + if (!bSet) + ModifyStyle(WS_BORDER,0,SWP_DRAWFRAME); + else + ModifyStyle(0,WS_BORDER,SWP_DRAWFRAME); + + return *this; +} + +CStaticEx& CStaticEx::SetFontSize(int nSize) +{ + nSize*=-1; + m_lf.lfHeight = nSize; + ReconstructFont(); + RedrawWindow(); + return *this; +} + + +CStaticEx& CStaticEx::SetBkColor(COLORREF crBkgnd) +{ + if (m_hBrush) + ::DeleteObject(m_hBrush); + + m_hBrush = ::CreateSolidBrush(crBkgnd); + return *this; +} + +CStaticEx& CStaticEx::SetFontName(const CString& strFont) +{ + strcpy(m_lf.lfFaceName,strFont); + ReconstructFont(); + RedrawWindow(); + return *this; +} + + +BEGIN_MESSAGE_MAP(CStaticEx, CStatic) + //{{AFX_MSG_MAP(CStaticEx) + ON_WM_CTLCOLOR_REFLECT() + ON_WM_TIMER() + ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONUP() + ON_WM_SETCURSOR() + ON_WM_MOUSEMOVE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CStaticEx message handlers + +HBRUSH CStaticEx::CtlColor(CDC* pDC, UINT nCtlColor) +{ + // TODO: Change any attributes of the DC here + + // TODO: Return a non-NULL brush if the parent's handler should not be called + + if (CTLCOLOR_STATIC == nCtlColor) + { + pDC->SelectObject(&m_font); + pDC->SetTextColor(m_crText); + pDC->SetBkMode(TRANSPARENT); + } + + + if (m_Type == Background) + { + if (!m_bState) + return m_hwndBrush; + } + + return m_hBrush; +} + +void CStaticEx::ReconstructFont() +{ + m_font.DeleteObject(); + BOOL bCreated = m_font.CreateFontIndirect(&m_lf); + + ASSERT(bCreated); +} + + +CStaticEx& CStaticEx::FlashText(BOOL bActivate) +{ + if (m_bTimer) + { + SetWindowText(m_strText); + KillTimer(1); + } + + if (bActivate) + { + GetWindowText(m_strText); + m_bState = FALSE; + + m_bTimer = TRUE; + SetTimer(1,500,NULL); + m_Type = Text; + } + + return *this; +} + +CStaticEx& CStaticEx::FlashBackground(BOOL bActivate) +{ + + if (m_bTimer) + KillTimer(1); + + if (bActivate) + { + m_bState = FALSE; + + m_bTimer = TRUE; + SetTimer(1,500,NULL); + + m_Type = Background; + } + + return *this; +} + + +void CStaticEx::OnTimer(UINT nIDEvent) +{ + m_bState = !m_bState; + + switch (m_Type) + { + case Text: + if (m_bState) + SetWindowText(""); + else + SetWindowText(m_strText); + break; + + case Background: + InvalidateRect(NULL,FALSE); + UpdateWindow(); + break; + } + + CStatic::OnTimer(nIDEvent); +} + +CStaticEx& CStaticEx::SetLink(BOOL bLink) +{ + m_bLink = bLink; + + if (bLink) + ModifyStyle(0,SS_NOTIFY); + else + ModifyStyle(SS_NOTIFY,0); + + return *this; +} + +void CStaticEx::OnLButtonDown(UINT nFlags, CPoint point) +{ + SetCapture(); + CStatic::OnLButtonDown(nFlags, point); +} + +void CStaticEx::OnLButtonUp(UINT nFlags, CPoint point) +{ + ReleaseCapture(); + + CRect rect; + GetWindowRect(&rect); + ScreenToClient(&rect); + + if ((point.x>=rect.left) && (point.x<=rect.right) && + (point.y>=rect.top) && (point.y<=rect.bottom)) + { + if (m_bLink) + { + CString strLink; + + GetWindowText(strLink); + ShellExecute(NULL,"open", LPCTSTR(strLink), NULL, NULL, SW_SHOWNORMAL); + } + } + + CStatic::OnLButtonUp(nFlags, point); +} + +BOOL CStaticEx::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) +{ + if (m_hCursor) + { + ::SetCursor(m_hCursor); + return TRUE; + } + + return CStatic::OnSetCursor(pWnd, nHitTest, message); +} + +CStaticEx& CStaticEx::SetLinkCursor(HCURSOR hCursor) +{ + m_hCursor = hCursor; + return *this; +} + + + + diff --git a/Jack/Launcher/StaticEx.h b/Jack/Launcher/StaticEx.h new file mode 100644 index 00000000..32c3b06e --- /dev/null +++ b/Jack/Launcher/StaticEx.h @@ -0,0 +1,87 @@ +/**************************************************************************** +; +; MODULE: STATICEX (.h) +; +; PURPOSE: Extended static text control class (Derived from CStatic) +; +; HISTORY: 11/21/2000 [kml] This file was created +; +; COMMENT: Copyright (c) 2000, Monolith Productions, Inc. +; +****************************************************************************/ + +#if !defined(STATIC_H_INCLUDED_) +#define STATIC_H_INCLUDED_ + +///////////////////////////////////////////////////////////////////////////// +// CStaticEx window +enum FlashType {None, Text, Background }; + +class CStaticEx : public CStatic +{ +// Construction +public: + CStaticEx(); + CStaticEx& SetBkColor(COLORREF crBkgnd); + CStaticEx& SetTextColor(COLORREF crText); + CStaticEx& SetText(const CString& strText); + CStaticEx& SetFontBold(BOOL bBold); + CStaticEx& SetFontName(const CString& strFont); + CStaticEx& SetFontUnderline(BOOL bSet); + CStaticEx& SetFontItalic(BOOL bSet); + CStaticEx& SetFontSize(int nSize); + CStaticEx& SetSunken(BOOL bSet); + CStaticEx& SetBorder(BOOL bSet); + CStaticEx& FlashText(BOOL bActivate); + CStaticEx& FlashBackground(BOOL bActivate); + CStaticEx& SetLink(BOOL bLink); + CStaticEx& SetLinkCursor(HCURSOR hCursor); + void SetShadow(BOOL bSet) { m_bShadow = bSet; } + +// Attributes +public: +protected: + void ReconstructFont(); + COLORREF m_crText; + HBRUSH m_hBrush; + HBRUSH m_hwndBrush; + LOGFONT m_lf; + CFont m_font; + CString m_strText; + BOOL m_bState; + BOOL m_bTimer; + BOOL m_bLink; + FlashType m_Type; + HCURSOR m_hCursor; + BOOL m_bShadow; + +// Operations +public: +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CStaticEx) + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CStaticEx(); + + // Generated message map functions +protected: + //{{AFX_MSG(CStaticEx) + afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); + afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnLButtonUp(UINT nFlags, CPoint point); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif //!defined(STATIC_H_INCLUDED_) diff --git a/Jack/Launcher/StdAfx.cpp b/Jack/Launcher/StdAfx.cpp new file mode 100644 index 00000000..6b31a1e4 --- /dev/null +++ b/Jack/Launcher/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// Launcher.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/Jack/Launcher/StdAfx.h b/Jack/Launcher/StdAfx.h new file mode 100644 index 00000000..7485b955 --- /dev/null +++ b/Jack/Launcher/StdAfx.h @@ -0,0 +1,29 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__1E6712CB_B0F3_11D4_A2BA_00010229388A__INCLUDED_) +#define AFX_STDAFX_H__1E6712CB_B0F3_11D4_A2BA_00010229388A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include "BuildDefines.h" +#include "ltbasetypes.h" +#include "ltbasedefs.h" + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__1E6712CB_B0F3_11D4_A2BA_00010229388A__INCLUDED_) diff --git a/Jack/Launcher/TextCheckBox.cpp b/Jack/Launcher/TextCheckBox.cpp new file mode 100644 index 00000000..dcad495e --- /dev/null +++ b/Jack/Launcher/TextCheckBox.cpp @@ -0,0 +1,223 @@ +// TextCheckBox.cpp : implementation file +// + +#include "stdafx.h" +#include "launcher.h" +#include "TextCheckBox.h" +#include "dlgex.h" +#include "playsound.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CTextCheckBox + +CTextCheckBox::CTextCheckBox() +: m_bChecked (FALSE) +{ + m_crText = crNormalText; + m_hBrush = (HBRUSH)GetStockObject(NULL_BRUSH); + + ::GetObject( (HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(m_lfNormal), &m_lfNormal ); +} + +CTextCheckBox::~CTextCheckBox() +{ + ::DeleteObject(m_hBrush); +} + + +BEGIN_MESSAGE_MAP(CTextCheckBox, CButton) + //{{AFX_MSG_MAP(CTextCheckBox) + ON_WM_MOUSEMOVE() + ON_WM_LBUTTONDOWN() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CTextCheckBox message handlers + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTextCheckBox::OnMouseMove +// +// PURPOSE: NONE +// +// ----------------------------------------------------------------------- // + +void CTextCheckBox::OnMouseMove(UINT nFlags, CPoint point) +{ + // Let our parent know we have focus + CDialogEx *pParent = (CDialogEx*)GetParent(); + if( pParent->GetFocusButton() != this ) + { + // Change the help text + if (m_HelpTextCtrl != NULL) + { + CRect rcCtrl; + m_HelpTextCtrl->GetWindowRect(&rcCtrl); + pParent->ScreenToClient(&rcCtrl); + m_HelpTextCtrl->SetWindowText(m_csHelpText); + pParent->InvalidateRect(&rcCtrl); + } + + pParent->SetFocusButton( this ); + if(!m_bChecked && (m_bmpFocus.m_hObject != NULL)) + PlaySound(IDR_SELECT); + } + + CButton::OnMouseMove(nFlags, point); +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CBitmapCheckButton::AutoLoad +// +// PURPOSE: Automatically loads the buton +// +// ----------------------------------------------------------------------- // + +BOOL CTextCheckBox::AutoLoad(UINT nID, CWnd* pParent) +{ + // first attach the CBitmapCheckButton to the dialog control + if (!SubclassDlgItem(nID, pParent)) + return FALSE; + + // + // Load the bitmaps for the different states + // + m_bmpNormal.DeleteObject(); + m_bmpNormal.LoadBitmap( "CHECKBOXN" ); + + m_bmpFocus.DeleteObject(); + m_bmpFocus.LoadBitmap( "CHECKBOXF" ); + + m_bmpChecked.DeleteObject(); + m_bmpChecked.LoadBitmap( "CHECKBOXC" ); + + // + // Load the fonts and color + // + m_lfNormal.lfWeight = FW_DEMIBOLD; + //m_lfNormal.lfQuality = ANTIALIASED_QUALITY; + //strcpy( m_lfNormal.lfFaceName, "Arial" ); + + SizeToContent(); + + return TRUE; +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTextCheckBox::DrawItem +// +// PURPOSE: Manualy draw the button. +// +// ----------------------------------------------------------------------- // + +void CTextCheckBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) +{ + CDC memDC; + CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC); + CBitmap *pNewBitmap; + CFont cFont; + + // Grab the bitmap and font based on our check state + if( m_bChecked ) + { + m_crText = RGB(128, 128, 128); + pNewBitmap = &m_bmpChecked; + } + else + { + // See if we have focus + CDialogEx *pParent = (CDialogEx*)GetParent(); + if( (pParent->GetFocusButton() == this) && (m_bmpNormal.m_hObject != NULL) ) + { + m_crText = crHighlightText; + pNewBitmap = &m_bmpFocus; + } + else + { + m_crText = crNormalText; + pNewBitmap = &m_bmpNormal; + } + } + + // + // Display the appropriate CheckBox bitmap + // + memDC.CreateCompatibleDC( pDC ); + CBitmap *pOldBitmap = memDC.SelectObject( pNewBitmap ); + if( !pOldBitmap ) + return; + + BITMAP bmpInfo; + m_bmpNormal.GetBitmap( &bmpInfo ); + pDC->BitBlt( 0, 1, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, 0, 0, SRCCOPY ); + memDC.SelectObject( pOldBitmap ); + + // + // Display the text with the appropriate font and color + // + cFont.CreateFontIndirect( &m_lfNormal ); + CFont *pOldFont = pDC->SelectObject( &cFont ); + + pDC->SetTextColor(m_crText); + pDC->SetBkMode(TRANSPARENT); + pDC->TextOut(bmpInfo.bmWidth + 2, 0, m_strWinText ); + + pDC->SelectObject( pOldFont ); + +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTextCheckBox::OnLButtonDown +// +// PURPOSE: Check or uncheck the box +// +// ----------------------------------------------------------------------- // + +void CTextCheckBox::OnLButtonDown(UINT nFlags, CPoint point) +{ + m_bChecked = !m_bChecked; + InvalidateRect(NULL); + PlaySound(IDR_BUTTONDOWN); + + CButton::OnLButtonDown(nFlags, point); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: CTextCheckBox::SizeToContent +// +// PURPOSE: Resize the button to fit the bitmap and text +// +// ----------------------------------------------------------------------- // + +void CTextCheckBox::SizeToContent( void ) +{ + if(m_bmpNormal.m_hObject == NULL) + return; + + CDC *pDC = GetDC(); + + BITMAP bmpInfo; + m_bmpNormal.GetBitmap(&bmpInfo); + + CSize TextSize = pDC->GetOutputTextExtent( m_strWinText ); + + SetWindowPos(NULL, 0, 0, bmpInfo.bmWidth + TextSize.cx, bmpInfo.bmHeight + 5, SWP_NOZORDER|SWP_NOMOVE); +} diff --git a/Jack/Launcher/TextCheckBox.h b/Jack/Launcher/TextCheckBox.h new file mode 100644 index 00000000..36ef550a --- /dev/null +++ b/Jack/Launcher/TextCheckBox.h @@ -0,0 +1,79 @@ +#if !defined(AFX_TEXTCHECKBOX_H__818F0ED2_BF14_4021_A26A_52A778238139__INCLUDED_) +#define AFX_TEXTCHECKBOX_H__818F0ED2_BF14_4021_A26A_52A778238139__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// TextCheckBox.h : header file +// + +#include "StaticEx.h" + +///////////////////////////////////////////////////////////////////////////// +// CTextCheckBox window + +class CTextCheckBox : public CButton +{ +// Construction +public: + CTextCheckBox(); + +// Attributes +public: + + +protected: + COLORREF m_crText; + HBRUSH m_hBrush; + BOOL m_bChecked; + + CBitmap m_bmpNormal; // basic state image + CBitmap m_bmpFocus; // mouse over image + CBitmap m_bmpChecked; // checked state image + + LOGFONT m_lfNormal; // basic state font + + CString m_strWinText; // window text + + CStaticEx *m_HelpTextCtrl; + CString m_csHelpText; +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CTextCheckBox) + public: + virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CTextCheckBox(); + + void SetHelpTextCtrl(CStaticEx *ctrl, const char *szText) { m_HelpTextCtrl = ctrl; m_csHelpText = szText; } + void SetWindowText( const char *szText) { m_strWinText = szText; } + void GetWindowText( CString &rString ) { rString = m_strWinText; } + BOOL AutoLoad(UINT nID, CWnd* pParent); + + void SizeToContent( void ); + + inline void SetCheck(BOOL bCheck) { m_bChecked = bCheck; } + inline BOOL GetCheck() { return m_bChecked; } + + // Generated message map functions +protected: + //{{AFX_MSG(CTextCheckBox) + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_TEXTCHECKBOX_H__818F0ED2_BF14_4021_A26A_52A778238139__INCLUDED_) diff --git a/Jack/Launcher/Utils.cpp b/Jack/Launcher/Utils.cpp new file mode 100644 index 00000000..ca1b5e31 --- /dev/null +++ b/Jack/Launcher/Utils.cpp @@ -0,0 +1,461 @@ +// *********************************************************************** // +// +// MODULE: UTILS (.CPP) +// +// PURPOSE: Gernal purpose utilities +// +// HISTORY: 02/15/95 [blg] This file was created +// 08/20/01 [mas] Updated to support Windows 2000 +// +// NOTICE: Copyright (c) 1995, MONOLITH, Inc. +// +// *********************************************************************** // + + +// Includes... + +#include +#include "stdafx.h" +#include "utils.h" +#include "malloc.h" +#include "tlhelp32.h" +#include "sys\stat.h" + + +// Typedefs... + +typedef BOOL (WINAPI *PROCESSWALK)(HANDLE hSnapshot, LPPROCESSENTRY32 lppe); +typedef HANDLE (WINAPI *CREATESNAPSHOT)(DWORD dwFlags, DWORD th32ProcessID); +typedef BOOL (WINAPI *MODULEWALK)(HANDLE hSnapshot, LPMODULEENTRY32 lpme); + +// Prototypes + +BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32); + +// Functions... + +// ----------------------------------------------------------------------- // +// +// ROUTINE: ExistProcess +// +// PURPOSE: Determines if the given EXE (or full path, with EXE) +// is a currently active process. +// +// ----------------------------------------------------------------------- // + +BOOL ExistProcess(const char* sExe, int thresh, HANDLE* phProcess) +{ + OSVERSIONINFO osVer; + HINSTANCE hInstLib; + PROCESSENTRY32 pe32 = {0}; + LPDWORD lpdwPIDs; + DWORD dwSize, dwSize2, dwIndex; + HMODULE hMod; + HANDLE hProcess; + char szFileName[ MAX_PATH ]; + int count = 0; + + // Sanity checks.. + + ASSERT(sExe); + if (sExe == NULL) return(FALSE); + if (sExe[0] == '\0') return(FALSE); + + if (phProcess) *phProcess = NULL; + + + // Determine if we were given a full path or just an exe... + + BOOL bFullPath = FALSE; + + if (strstr(sExe, "\\")) + { + bFullPath = TRUE; + } + + // Toolhelp32 Pointers (Windows 9x) + CREATESNAPSHOT pCreateToolhelp32Snapshot = NULL; + PROCESSWALK pProcess32First = NULL; + PROCESSWALK pProcess32Next = NULL; + + // PSAPI Function Pointers (Windows 2000) + BOOL (WINAPI *pEnumProcesses)(DWORD *, DWORD cb, DWORD *); + BOOL (WINAPI *pEnumProcessModules)(HANDLE, HMODULE *, DWORD, LPDWORD); + DWORD (WINAPI *pGetModuleFileNameEx)(HANDLE, HMODULE, LPTSTR, DWORD); + DWORD (WINAPI *pGetModuleBaseName)(HANDLE, HMODULE, LPTSTR, DWORD); + +//////////////////////////////////////////////////////////////// +// Windows 2k stuff +//////////////////////////////////////////////////////////////// + + // Check to see if were running under Windows 9x or NT + osVer.dwOSVersionInfoSize = sizeof(osVer); + GetVersionEx(&osVer); + + // If Windows NT + if (osVer.dwPlatformId == VER_PLATFORM_WIN32_NT) + { + // Load library and get the procedures explicitly. We do this so that we + // don't have to worry about modules using this code failing to load under + // Windows 9x, because it can't resolve references to the PSAPI.DLL. + hInstLib = LoadLibraryA("PSAPI.DLL"); + if (hInstLib == NULL) + return FALSE; + + // Get procedure addresses. + pEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*)) + GetProcAddress( hInstLib, "EnumProcesses" ); + pEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) + GetProcAddress( hInstLib, "EnumProcessModules" ); + pGetModuleFileNameEx =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD )) + GetProcAddress( hInstLib, "GetModuleFileNameExA" ); + pGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, DWORD )) + GetProcAddress( hInstLib, "GetModuleBaseNameA" ); + + if (pEnumProcesses == NULL || + pEnumProcessModules == NULL || + pGetModuleFileNameEx == NULL || + pGetModuleBaseName == NULL ) + { + FreeLibrary(hInstLib); + return FALSE; + } + + // Call the PSAPI function EnumProcesses to get all of the + // ProcID's currently in the system. + dwSize2 = 256 * sizeof(DWORD); + lpdwPIDs = NULL; + do + { + if(lpdwPIDs) + { + HeapFree(GetProcessHeap(), 0, lpdwPIDs); + dwSize2 *= 2; + } + + lpdwPIDs = (LPDWORD)HeapAlloc(GetProcessHeap(), 0, dwSize2); + if (lpdwPIDs == NULL) + { + FreeLibrary(hInstLib); + return FALSE; + } + + if (!pEnumProcesses(lpdwPIDs, dwSize2, &dwSize)) + { + HeapFree(GetProcessHeap(), 0, lpdwPIDs); + FreeLibrary(hInstLib); + return FALSE; + } + + } while (dwSize == dwSize2); + + // How many ProcID's did we get? + dwSize /= sizeof(DWORD); + + // Loop through each ProcID. + for (dwIndex = 0; dwIndex < dwSize; dwIndex++) + { + szFileName[0] = 0; + // Open the process (if we can... security does not + // permit every process in the system). + hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, + FALSE, lpdwPIDs[ dwIndex ]); + + if (hProcess != NULL) + { + // Here we call EnumProcessModules to get only the first module in + // the process this is important, because this will be the .EXE module + // for which we will retrieve the full path name in a second. + if (pEnumProcessModules(hProcess, &hMod, + sizeof(hMod), &dwSize2)) + { + // Get Full pathname: + if (bFullPath) + { + if (!pGetModuleFileNameEx(hProcess, hMod, + szFileName, sizeof(szFileName))) + { + szFileName[0] = 0; + } + } + else + { + if (!pGetModuleBaseName(hProcess, hMod, + szFileName, sizeof(szFileName))) + { + szFileName[0] = 0; + } + } + + if (stricmp(szFileName, sExe) == 0) + { + count++; + if (count == 1 && phProcess) + { + *phProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, lpdwPIDs[dwIndex]); + } + + if (count >= thresh) + { + FreeLibrary(hInstLib); + CloseHandle(hProcess); + return TRUE; + } + } + } + CloseHandle(hProcess); + } + + } + + HeapFree(GetProcessHeap(), 0, lpdwPIDs); + FreeLibrary(hInstLib); + return FALSE; + } + +//////////////////////////////////////////////////////////////// +// Windows 9x section +//////////////////////////////////////////////////////////////// + else if( osVer.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) + { + hInstLib = LoadLibraryA("KERNEL32.DLL"); + if (hInstLib == NULL) + return FALSE; + + // Get procedure addresses. + // We are linking to these functions of Kernel32 explicitly, because otherwise + // a module using this code would fail to load under Windows 2000, which does + // not have the Toolhelp32 functions in the Kernel 32. + + pCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress(hInstLib, "CreateToolhelp32Snapshot"); + pProcess32First = (PROCESSWALK)GetProcAddress(hInstLib, "Process32First"); + pProcess32Next = (PROCESSWALK)GetProcAddress(hInstLib, "Process32Next"); + + if (pProcess32Next == NULL || + pProcess32First == NULL || + pCreateToolhelp32Snapshot == NULL) + { + FreeLibrary(hInstLib); + return FALSE; + } + + // Get a handle to a Toolhelp snapshot of the systems + // processes. + hProcess = pCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) ; + if (hProcess == INVALID_HANDLE_VALUE) + { + FreeLibrary(hInstLib); + return FALSE; + } + + // Get the first process' information. + PROCESSENTRY32 pe32 = {0}; + pe32.dwSize = sizeof(PROCESSENTRY32); + + if (pProcess32First(hProcess, &pe32)) + { + MODULEENTRY32 me32 = {0}; + do + { + if (pe32.th32ProcessID == 0) + continue; + + if (GetProcessModule(pe32.th32ProcessID, pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32))) + { + if (bFullPath) + { + if (stricmp(me32.szExePath, sExe) == 0) + { + count++; + if (count == 1 && phProcess) + { + *phProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, me32.th32ProcessID); + } + + if (count >= thresh) + { + FreeLibrary(hInstLib); + return TRUE; + } + } + } + else + { + if (stricmp(me32.szModule, sExe) == 0) + { + count++; + if (count == 1 && phProcess) + { + *phProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, me32.th32ProcessID); + } + + if (count >= thresh) + { + FreeLibrary(hInstLib); + return TRUE; + } + } + } + } + } + + while (pProcess32Next(hProcess, &pe32)); + } + + } + else + return FALSE; + + // Free the library. + FreeLibrary(hInstLib); + CloseHandle(hProcess); + + return FALSE; +} + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: GetProcessModule +// +// PURPOSE: Given a Process ID and module ID, return its module info +// +// ----------------------------------------------------------------------- // + +BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32) +{ + BOOL bRet = FALSE; + BOOL bFound = FALSE; + HANDLE hModuleSnap = NULL; + MODULEENTRY32 me32 = {0}; + + // Obtain a module handle to KERNEL so that we can get the addresses of + // the 32-bit Toolhelp functions we need. + + HMODULE hKernel = GetModuleHandle("KERNEL32.DLL"); + if (!hKernel) return(FALSE); + + CREATESNAPSHOT pCreateToolhelp32Snapshot = NULL; + MODULEWALK pModule32First = NULL; + MODULEWALK pModule32Next = NULL; + + pCreateToolhelp32Snapshot = (CREATESNAPSHOT)GetProcAddress(hKernel, "CreateToolhelp32Snapshot"); + if (!pCreateToolhelp32Snapshot) return(FALSE); + + pModule32First = (MODULEWALK)GetProcAddress(hKernel, "Module32First"); + if (!pModule32First) return(FALSE); + + pModule32Next = (MODULEWALK)GetProcAddress(hKernel, "Module32Next"); + if (!pModule32Next) return(FALSE); + + + // Take a snapshot of all modules in the specified process... + + hModuleSnap = pCreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); + if (hModuleSnap == (HANDLE)-1) return(FALSE); + + + // Size of the MODULEENTRY32 structure must be initialized before use! + + me32.dwSize = sizeof(MODULEENTRY32); + + + // Walk the module list of the process and find the module we are + // interested in. Then, copy the information to the buffer pointed to + // by lpMe32 so that we can return it to the caller. + + if (pModule32First(hModuleSnap, &me32)) + { + do + { + if (me32.th32ModuleID == dwModuleID) + { + CopyMemory (lpMe32, &me32, cbMe32); + bFound = TRUE; + } + } + while (!bFound && pModule32Next(hModuleSnap, &me32)); + + bRet = bFound; // If this sets bRet to FALSE, then dwModuleID + // no longer exsists in the specified process. + } + else + bRet = FALSE; // Couldn't walk module list. + + + // Don't forget to clean up the snapshot object... + CloseHandle (hModuleSnap); + + return (bRet); +} + + + +// ----------------------------------------------------------------------- // +// +// ROUTINE: GetDllVersion +// +// PURPOSE: Safely calls a DLL's DllGetVersion function +// +// ----------------------------------------------------------------------- // +DWORD GetDllVersion(LPCTSTR lpszDllName) +{ + HINSTANCE hinstDll; + DWORD dwVersion = 0; + + hinstDll = LoadLibrary(lpszDllName); + + if(hinstDll) + { + DLLGETVERSIONPROC pDllGetVersion; + + pDllGetVersion = (DLLGETVERSIONPROC) GetProcAddress(hinstDll, "DllGetVersion"); + + /* Because some DLLs may not implement this function, you + must test for it explicitly. Depending on the particular + DLL, the lack of a DllGetVersion function may + be a useful indicator of the version. + */ + if(pDllGetVersion) + { + DLLVERSIONINFO dvi; + HRESULT hr; + + ZeroMemory(&dvi, sizeof(dvi)); + dvi.cbSize = sizeof(dvi); + + hr = (*pDllGetVersion)(&dvi); + + if(SUCCEEDED(hr)) + { + dwVersion = PACKVERSION(dvi.dwMajorVersion, dvi.dwMinorVersion); + } + } + + FreeLibrary(hinstDll); + } + return dwVersion; +} + +BOOL DirExist( char const* strPath ) +{ + if (!strPath || !*strPath) return FALSE; + + BOOL bDirExists = FALSE; + + char szPath[MAX_PATH] = {0}; + strcpy( szPath, strPath ); + + if (szPath[strlen(szPath) - 1] == '\\') + { + szPath[strlen(szPath) - 1] = '\0'; + } + + UINT oldErrorMode = SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); + struct stat statbuf; + int error = stat (szPath, &statbuf); + SetErrorMode (oldErrorMode); + if (error != -1) bDirExists = TRUE; + + return bDirExists; +} \ No newline at end of file diff --git a/Jack/Launcher/Utils.h b/Jack/Launcher/Utils.h new file mode 100644 index 00000000..f580f927 --- /dev/null +++ b/Jack/Launcher/Utils.h @@ -0,0 +1,44 @@ +// *********************************************************************** // +// +// MODULE: UTILS (.H) +// +// PURPOSE: Gernal purpose utilities +// +// HISTORY: 02/15/95 [blg] This file was created +// +// NOTICE: Copyright (c) 1995, Monolith Productions, Inc. +// +// *********************************************************************** // + +#ifndef _UTILS_H_ +#define _UTILS_H_ + +#pragma warning( disable : 4786 ) + +#include "shlwapi.h" +#include + +// Macros + +#define PACKVERSION(major,minor) MAKELONG(minor,major) + +// Prototypes... + +BOOL ExistProcess(const char* sExe, int thresh = 0, HANDLE* phProcess = NULL); +DWORD GetDllVersion(LPCTSTR lpszDllName); + +BOOL DirExist( char const* strPath ); + +class CaselessLesser +{ +public: + + bool operator()(const std::string & x, const std::string & y) const + { + return (stricmp(x.c_str(), y.c_str()) < 0 ); + } +}; + +// EOF... + +#endif diff --git a/Jack/Launcher/resource.h b/Jack/Launcher/resource.h new file mode 100644 index 00000000..19668627 --- /dev/null +++ b/Jack/Launcher/resource.h @@ -0,0 +1,184 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by c:\proj\to2\Source\Game\Launcher\Res\Lang\En\Launcher.rc +// +#define IDS_GAME_NAME 1 +#define IDS_DISPLAY_WARNING 3 +#define IDS_OPTIONS_WARNING 4 +#define IDS_REZBASE 7 +#define IDS_SETUPEXE 8 +#define IDS_SERVEREXE 9 +#define IDS_LANGUAGE 10 +#define IDS_INSERTCD2 11 +#define IDS_INSERTCD 12 +#define IDS_CANTLAUNCHSETUP 13 +#define IDS_NORENS 14 +#define IDS_HELP_DISABLESOUND 15 +#define IDS_HELP_DISABLEMUSIC 16 +#define IDS_HELP_DISABLEMOVIES 17 +#define IDS_HELP_DISABLEFOG 18 +#define IDS_HELP_DISABLEJOYSTICKS 19 +#define IDS_HELP_DISABLETRIPLEBUFFERING 20 +#define IDS_HELP_DISABLEHARDWARECURSOR 21 +#define IDS_HELP_ENABLESCREENSHOTS 22 +#define IDS_HELP_RESTOREDEFAULTS 23 +#define IDS_HELP_ALWAYSSPECIFY 24 +#define IDS_CANTFINDREZFILE 25 +#define IDS_CANTLAUNCHCLIENTEXE 26 +#define IDS_DETAIL_HEADER 27 +#define IDS_DETAIL_LOW 28 +#define IDS_DETAIL_MEDIUM 29 +#define IDS_DETAIL_HIGH 30 +#define IDS_CANTLAUNCHSERVER 31 +#define IDS_APPVERSION 32 +#define IDS_CANTUNINSTALL 33 +#define IDS_COMPANYWEBPAGE 34 +#define IDS_CANTOPENAVI 35 +#define IDS_PUBLISHERWEBPAGE 36 +#define IDS_OD_DISABLESOUND 37 +#define IDS_OD_DISABLEMUSIC 38 +#define IDS_OD_DISABLEMOVIES 39 +#define IDS_OD_DISABLEFOG 40 +#define IDS_APPNAME_DEMO 40 +#define IDS_OD_DISABLEJOYSTICKS 41 +#define IDS_OD_DISABLETRIPLEBUFFERING 42 +#define IDS_OD_DISABLEHARDWARECURSOR 43 +#define IDS_OD_ENABLESCREENSHOTS 44 +#define IDS_OD_RESTOREDEFAULTS 45 +#define IDS_OD_ALWAYSSPECIFY 46 +#define IDS_DEBUG_REGCREATEERROR 47 +#define IDS_DEBUG_INSTALLSUCCESS 48 +#define IDS_DEBUG_UNINSTALLSUCCESS 49 +#define IDS_LAUNCHBROWSERERROR 50 +#define IDS_HELP_DEFAULT 51 +#define IDS_HELP_DISABLEHARDWARESOUND 52 +#define IDS_HELP_DISABLESOUNDFILTERS 53 +#define IDS_OD_DISABLEHARDWARESOUND 54 +#define IDS_OD_DISABLESOUNDFILTERS 55 +#define IDS_CANTOPENCOMMANDFILE 56 +#define IDS_LITHTECHWEBPAGE 57 +#define IDS_SIERRAWEBPAGE 58 +#define IDS_NOCUSTOMDIR 59 +#define IDD_LAUNCHER_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDB_BACKGROUND 130 +#define IDB_E3BACKGROUND 131 +#define IDD_MULTIPLAYER_DIALOG 145 +#define IDD_OPTIONS_DIALOG 146 +#define IDB_MD_BACKGROUND 146 +#define IDD_DISPLAY_DIALOG 147 +#define IDD_MESSAGEBOX 148 +#define IDD_DETAILSETTINGS_DIALOG 149 +#define IDB_OD_BACKGROUND 164 +#define IDB_DD_BACKGROUND 219 +#define IDR_AVI_BUTTONS 221 +#define IDR_AVI_LOGO1 222 +#define IDR_AVI_LOGO2 223 +#define IDR_SELECT 225 +#define IDR_CLICK 226 +#define IDR_ANIMDLG 228 +#define IDR_BUTTONDOWN 278 +#define IDR_TYPE 279 +#define IDR_TYPE2 280 +#define IDR_TYPE3 281 +#define IDR_TYPEBACK 282 +#define IDB_MB_BACKGROUND 283 +#define IDB_DSD_BACKGROUND 284 +#define IDR_INTRO 294 +#define IDB_INFORMATION 296 +#define IDB_ERROR 297 +#define IDB_WARNING 298 +#define IDC_WEBHAND 308 +#define IDR_AVI_OK 317 +#define IDD_CUSTOMIZE_DIALOG 322 +#define IDB_CD_BACKGROUND 323 +#define IDC_MP_HOST 1001 +#define IDC_MP_JOIN 1002 +#define IDC_CLOSE 1003 +#define IDC_MP_FIND 1003 +#define IDC_MINIMIZE 1004 +#define IDC_MP_SERVER 1004 +#define IDC_MP_BACK 1005 +#define IDC_MP_CLOSE 1006 +#define IDC_DISPLAY 1007 +#define IDC_QUIT 1008 +#define IDC_PLAY 1009 +#define IDC_MULTIPLAYER 1010 +#define IDC_SERVER 1010 +#define IDC_OPTIONS 1011 +#define IDC_OD_CLOSE 1012 +#define IDC_UNINSTALL 1012 +#define IDC_OD_DISABLESOUND 1014 +#define IDC_OD_DISABLEMUSIC 1015 +#define IDC_OD_DISABLEMOVIES 1016 +#define IDC_COMMANDLINE 1017 +#define IDC_OD_DISABLEFOG 1018 +#define IDC_OD_DISABLETRIPLEBUFFERING 1019 +#define IDC_OD_DISABLEJOYSTICKS 1020 +#define IDC_OD_DISABLEHARDWARECURSOR 1021 +#define IDC_OD_RESTOREDEFAULTSETTINGS 1023 +#define IDC_OD_ALWAYSSPECIFY 1024 +#define IDC_OD_DISABLEHARDWARESOUND 1025 +#define IDC_OD_DISABLESOUNDFILTERS 1028 +#define IDC_OD_DISABLESOUNDFILTERS2 1029 +#define IDC_OD_ENABLESCREENSHOTS 1029 +#define IDC_OD_OK 1030 +#define IDC_OD_CANCEL 1031 +#define IDC_OD_HELP 1032 +#define IDC_DD_CLOSE 1034 +#define IDC_DD_OK 1035 +#define IDC_RENDERER_LIST 1038 +#define IDC_DISPLAY_LIST 1039 +#define IDC_RESOLUTION_LIST 1040 +#define IDC_DD_CANCEL 1041 +#define IDC_MB_OK 1043 +#define IDC_MB_CANCEL 1044 +#define IDC_MB_CLOSE 1045 +#define IDC_CAPTION 1046 +#define IDC_TEXT 1047 +#define IDC_HELPTEXT 1047 +#define IDC_DSD_CANCEL 1048 +#define IDC_DSD_HIGH 1049 +#define IDC_DSD_MEDIUM 1050 +#define IDC_DSD_LOW 1051 +#define IDC_DSD_CLOSE 1052 +#define IDC_HEADERTEXT 1053 +#define IDC_LOWTEXT 1054 +#define IDC_MEDIUMTEXT 1055 +#define IDC_HIGHTEXT 1056 +#define IDC_MONOLITH 1058 +#define IDC_COMPANYWEB 1058 +#define IDC_PUBLISHERWEB 1059 +#define IDC_LITHTECHWEB 1060 +#define IDC_SIERRAWEB 1061 +#define IDC_MB_ICON 1067 +#define IDC_CUSTOM 1068 +#define IDC_CD_OK 1069 +#define IDC_CD_CANCEL 1070 +#define IDC_CD_CLOSE 1071 +#define IDC_CD_MOD_01 1072 +#define IDC_CD_MOD_02 1073 +#define IDC_CD_MOD_03 1074 +#define IDC_CD_MOD_04 1075 +#define IDC_CD_MOD_05 1076 +#define IDC_CD_MOD_06 1077 +#define IDC_CD_MOD_07 1078 +#define IDC_CD_MOD_08 1079 +#define IDC_CD_MOD_09 1080 +#define IDC_CD_MOD_10 1081 +#define IDC_CD_PREVIOUS 1082 +#define IDC_CD_NEXT 1083 +#define IDC_CD_MOD_11 1084 +#define IDC_CD_MOD_12 1085 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_3D_CONTROLS 1 +#define _APS_NEXT_RESOURCE_VALUE 322 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1068 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Jack/Libs/GameSpy/GameSpy.lib b/Jack/Libs/GameSpy/GameSpy.lib new file mode 100644 index 0000000000000000000000000000000000000000..93aace7111ae01fd32155873faf730fa3e604086 GIT binary patch literal 5890 zcmcIoPj3@P6o0l85*!CRb`qgVm0Za!a0#~YpF~1c}xI zNJu?Y%84^Vd;ku7gr4{WJ@n8cQu_%waHnr}XJ+3_cI{oqj5OZad2iTOXy!AJ? z+x`86JJFkIwdAs;VkuiL*;z~Y%{*6(fK zZ|;~IcU$Yt`u5KKrulvQxZ65;4yL)a+i09ufZw@>E#LWJcWcw!sP0suQpwi2tkv!R z+U*<0gX&%5(PNzJ@c6_WEjP>h1f`mR^XByKU3FeBIYF%Td%v9yqvWOFaFQAtDcSGE zN>?DXw%ddKgZeK|dfvA3R&l5i9gQ53c+oqrQrYMpbq8HTm|ZTQReiKweV8*0xu!<4*o89LR+ee2T?hB^US6T0O+wOQ4T(!2_8npX^rze)FDE=5D_0^H}k6fR-uFhZ4 z3b+D)WA!zN12=L3E{ZyPM;d$|CR zj{}6U{RaEqVfz`jli0t!1n?T;Vh0Dm!uBV8Ud8vbMJxQm3`AiHE<+41K^zt!1@n-A zBwT?Igca#5%)zv#6QMCr9ugk(hMsaF6jqbNWHggA@{>yfA@P#)LNTL|jB`e`F$Aww z^>m9dJV|$Cxn|0`f~qF>bOb>{Di92> zC@(NHxpRleg|Hh$AUI+I;jSP6h*WbTi7>>4IIuR7fCnBcc#R(D=Pt7|8BJ56CmoV6 zMbmZYXo{+HdS+QX!&>Pa9a+J2RL)sgEAZ@dFWLx2ApGwil~@R17NaSa&`PKK)6<_b zE&COqh7C+Um101mwsP2M589c$5MTg>zp(ztJ0kcrAp4%{m3TKsRxF4o^w_Hb>GxrL zCNc7|GDjA59a4!I>|^t>!Xor^EP3y6zu!CUJsG60H*cgH^{q`?to<@HHj>Q%7};41 zuLO+TtVLkJ*zX;mAld2IkMQ}kz+)p=VeG;n)@%S+d=EsAwK|3q5j_Q_gB>7sicSyf zPqQCh*z5pn{Ea=r(8S-dBGSY>C11=DPYGL|@~6d(F?9D7{KQZS@swLaz&r&%ag@S5 z<;!@0pMCurxp;oxM2VO9I$`A#ZP +#include + +// Supported Game SKU's for this IServerDir +enum EGameSKU +{ + eGameSKU_Invalid, + eGameSKU_ContractJack_Retail, + eGameSKU_ContractJack_MPDemo, + eGameSKU_ContractJack_SPDemo, + eGameSKU_ContractJack_PRDemo, +}; + +class GAMESPY_API IGameSpyServer +{ +public: + IGameSpyServer( ) { }; + virtual ~IGameSpyServer() {} + +// Types +public: + + // Contains initialization information about the game. + struct StartupInfo + { + StartupInfo( ) + { + m_eGameSKU = eGameSKU_Invalid; + m_nPort = 0; + m_Socket = NULL; + m_bPublic = true; + } + + // Game SKU + EGameSKU m_eGameSKU; + // IP Address to bind to. + std::string m_sIpAddress; + // Port to bind to. + uint16 m_nPort; + // Socket to do comm on. NULL if not to do shared socket. + SOCKET m_Socket; + // Version of the game running. + std::string m_sVersion; + // Region code. + std::string m_sRegion; + // Public game. + bool m_bPublic; + }; + + // Status of published stated. + enum EPublishStatus + { + ePublishStatus_Unpublished, + ePublishStatus_Published, + ePublishStatus_Error, + }; + + // Status of the cdkey challenge response. + enum EChallengeResponse + { + eChallengeResponse_Invalid, + eChallengeResponse_Processing, + eChallengeResponse_Accepted, + eChallengeResponse_Rejected, + }; + +// Functions +public: + + // Create an IGameSpyServer interface. + static IGameSpyServer* Create( StartupInfo const& StartupInfo ); + // Deletes a IGameSpyServer interface. + static void Delete( IGameSpyServer* pGameSpyServer ); + + ////////////////////////////////////////////////////////////////////////////// + // Commands + + // Publishes the server to the Master Server. + virtual bool Publish( ) = 0; + // Removes server from Master Server. + virtual bool Unpublish( ) = 0; + // Check if we're published. + virtual EPublishStatus GetPublishStatus( ) const = 0; + + ////////////////////////////////////////////////////////////////////////////// + // Server information. + + // Registers key with Master Server. pszKey must NOT include player + // or team index. (e.g. "player_", "team_t"). + // Keys must be registered in the same order on client and + // server. + virtual bool RegisterKey( char const* pszKey ) = 0; + + // Get server property value. Key string must include player/team index if applicable + // (e.g. "player_0", "team_t0" ). + virtual bool GetServerProperty( char const* pszKey, char* pszValue, uint32 nValueSize ) const = 0; + // Sets server property value. Key string must include player/team index if applicable + // (e.g. "player_0", "team_t0" ). + virtual bool SetServerProperty( char const* pszKey, char const* pszValue ) = 0; + + // Sets the number of players currently connected. + virtual void SetNumPlayers( uint32 nNumPlayers ) = 0; + // Sets the number of teams currently in game. + virtual void SetNumTeams( uint32 nNumTeams ) = 0; + + ////////////////////////////////////////////////////////////////////////////// + // CDKey Functions + + // Get the cdkeychallenge + virtual bool GetCDKeyChallenge( char* szChallenge, uint32& nChallengeSize ) = 0; + + // Called when challenge response is received from client. + virtual bool ProcessCDKeyChallengeResponse( uint32 nClientId, char const* pszIPAddr, + char const* pszChallenge, char const* szChallengeResponse ) = 0; + + // Poll to see if client's challenge response was accepted. + virtual EChallengeResponse GetChallengeResponse( uint32 nClientId ) const = 0; + + // Tells the cdkey server to release any lock on the cdkey. Called when client disconnects. + virtual bool ReleaseCDKey( uint32 nClientId ) = 0; + + ////////////////////////////////////////////////////////////////////////////// + // Net message handling + + // Handle an incoming net message + // Returns false if the message was not recognized + // Note : Remove all external headers before calling this function + virtual bool HandleNetMessage( uint8* pData, uint32 nDataLen, uint8 senderAddr[4], uint16 nPort) = 0; + +private: + + // Prevent copying. + IGameSpyServer( IGameSpyServer const& other ); + IGameSpyServer const& operator=( IGameSpyServer const& other ); +}; + + +class GAMESPY_API IGameSpyBrowser +{ +public: + + IGameSpyBrowser( ) { }; + virtual ~IGameSpyBrowser() {} + +// Types +public: + + // Type used to identify a game server in the ServerInfoCallback. Used to + // call back into the gamespybrowser to retrieve information. + typedef void* HGAMESERVER; + + // Callback to register to receive server information. + // hServer is temporary and should not be held onto. + // bDetailsRequest is true if this is in response to a request for server details. + // pUserData is the user data value passed into StartupInfo. + typedef void ( *ServerInfoCallback )( IGameSpyBrowser& gameSpyBrowser, HGAMESERVER hServer, void* pUserData ); + + // Contains initialization information about the game. + struct StartupInfo + { + StartupInfo( ) + { + m_eGameSKU = eGameSKU_Invalid; + } + + // Game SKU + EGameSKU m_eGameSKU; + }; + + // Status of browsing state. + enum EBrowserStatus + { + eBrowserStatus_Idle, + eBrowserStatus_Processing, + eBrowserStatus_Complete, + eBrowserStatus_Error, + }; + + enum ENatNegotiationResult + { + eNatNegotiationResult_Invalid, + eNatNegotiationResult_Error, + eNatNegotiationResult_TimedOut, + eNatNegotiationResult_Success, + }; + +// Functions +public: + + // Create an IGameSpyBrowser interface. + static IGameSpyBrowser* Create( StartupInfo const& StartupInfo ); + // Deletes a IGameSpyBrowser interface. + static void Delete( IGameSpyBrowser* pGameSpyBrowser ); + + ////////////////////////////////////////////////////////////////////////////// + // Commands + + // Requests list of servers from Master Server. pszFilter uses SQL like + // notation (e.g. pszFilter = "fraglimit > 0 && numplayers > 0". + // Complete when GetBrowsingStatus returns EBrowserStatus_Complete. + // Callback is called for each server found. + // pUserData is sent as parameter in the callback call. + // nPort is the LAN ports to scan. + virtual bool RequestServerList( bool bPublic, uint16 nPort, char const* pszFilter, ServerInfoCallback cbServerInfo, void* pUserData ) = 0; + // Requests detail information on specific server. + // Complete when GetBrowsingStatus returns EBrowserStatus_Complete. + // Callback is called for each server found. + // pUserData is sent as parameter in the callback call. + virtual bool RequestServerDetails( char const* pszAddress, uint16 nPort, ServerInfoCallback cbServerInfo, void* pUserData ) = 0; + // Requests NAT negotiations with server pszAddress:nPort on socket hSocket. + virtual bool RequestNatNegotiation( SOCKET hSocket, char const* pszAddress, uint16 nPort ) = 0; + // Stops all requests. + virtual bool HaltRequest( ) = 0; + // Gets the current status of the browser. + virtual EBrowserStatus GetBrowserStatus( ) const = 0; + // Gets the results of a NatNeg request. + virtual ENatNegotiationResult GetNatNegotiationResult( sockaddr* pSockAddr ) const = 0; + + ////////////////////////////////////////////////////////////////////////////// + // Key management + + // Registers key with Master Server. pszKey must NOT include player + // or team index. (e.g. "player_", "team_t"). + // Keys must be registered in the same order on client and + // server. + virtual bool RegisterKey( char const* pszKey ) = 0; + + // Adds a Summary key that should be reported by a server when + // RequestServerList called. Keep the number of summary + // keys low for optimal performance. + virtual bool AddSummaryKey( char const* pszKey ) = 0; + + ////////////////////////////////////////////////////////////////////////////// + // Server information. + + // Gets the number of servers. + // nPort is the port to scan. + virtual uint32 GetNumServers( bool bPublic, uint16 nPort ) = 0; + + // Gets the number of players currently on server. + virtual uint32 GetNumPlayers( HGAMESERVER hGameServer ) const = 0; + // Gets the number of teams currently on server. + virtual uint32 GetNumTeams( HGAMESERVER hGameServer ) const = 0; + + // Get server property value. Key string must include player/team index if applicable + // (e.g. "player_0", "team_t0" ). + virtual bool GetServerProperty( HGAMESERVER hGameServer, char const* pszKey, char* pszValue, uint32 nValueSize ) const = 0; + + // Get the ping to a server. + virtual uint16 GetServerPing( HGAMESERVER hGameServer ) const = 0; + + // Check if server has detail info. + virtual bool HasServerDetails( HGAMESERVER hGameServer ) const = 0; + + // Gets the address/port to use when connecting. + virtual bool GetServerConnectInfo( HGAMESERVER hGameServer, + char szPrivateAddress[16], uint16& nPrivatePort, + char szPublicAddress[16], uint16& nPublicPort, + bool& bConnectViaPublic, bool& bDirectConnect ) const = 0; + + ////////////////////////////////////////////////////////////////////////////// + // CDKey + + // Calculates the challenge response for the client. + virtual bool CDKeyComputeChallengeResponse( char const* pszCDKey, char const* pszChallenge, + char* pszChallengeResponse, uint32& nChallengeResponseLen ) const = 0; + + // Validates the cdkey to make sure it has the right form. Does not verify cdkey with server. + virtual bool IsCDKeyValid( char const* pszCDKey ) const = 0; + + + ////////////////////////////////////////////////////////////////////////////// + // Net message handling + + // Handle an incoming net message + // Returns false if the message was not recognized + // Note : Remove all external headers before calling this function + virtual bool HandleNetMessage( uint8* pData, uint32 nDataLen, uint8 senderAddr[4], uint16 nPort) = 0; + +private: + + // Prevent copying. + IGameSpyBrowser( IGameSpyBrowser const& other ); + IGameSpyBrowser const& operator=( IGameSpyBrowser const& other ); +}; + + + +class GAMESPY_API IGameSpyPatchInfo +{ +public: + + IGameSpyPatchInfo( ) { }; + virtual ~IGameSpyPatchInfo() {} + +// Types +public: + + // Status of patchinfo state. + enum EPatchInfoStatus + { + eBrowserStatus_Idle, + eBrowserStatus_Processing, + eBrowserStatus_Complete, + eBrowserStatus_Error, + }; + + struct PatchInfoResults + { + bool m_bNewVersionAvailable; + bool m_bMandatoryPatch; + std::string m_sNewVersion; + std::string m_sURL; + }; + + // Contains initialization information about the game. + struct StartupInfo + { + StartupInfo( ) + { + m_eGameSKU = eGameSKU_Invalid; + m_nPatchInfoDistributionId = 0; + } + + // Game SKU + EGameSKU m_eGameSKU; + // Version of the game running. + std::string m_sVersion; + // Distribution ID. + uint32 m_nPatchInfoDistributionId; + }; + +// Functions +public: + + // Create an IGameSpyPatchInfo interface. + static IGameSpyPatchInfo* Create( StartupInfo const& StartupInfo ); + // Deletes a IGameSpyPatchInfo interface. + static void Delete( IGameSpyPatchInfo* pGameSpyBrowser ); + + // Requests patch information from GameSpy. + virtual bool RequestPatchInfo( ) = 0; + // Stops request. + virtual bool HaltRequest( ) = 0; + // Gets the current status of the patchinfo request. + virtual EPatchInfoStatus GetPatchInfoStatus( ) const = 0; + // Gets the results. + virtual bool GetPatchInfoResults( PatchInfoResults& patchInfoResults ) const = 0; + +private: + + // Prevent copying. + IGameSpyPatchInfo( IGameSpyPatchInfo const& other ); + IGameSpyPatchInfo const& operator=( IGameSpyPatchInfo const& other ); +}; + +#ifdef __cplusplus +extern "C" +{ +#endif + +// Validates the cdkey to make sure it has the right form. Does not verify cdkey with server. +GAMESPY_API bool IsCDKeyValid( char const* pszCDKey, EGameSKU eGameSKU ); + +#ifdef __cplusplus +} +#endif + +#endif //__IGAMESPY_H__ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguibutton.cpp b/Jack/Libs/LTGUIMgr/ltguibutton.cpp new file mode 100644 index 00000000..e7a259be --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguibutton.cpp @@ -0,0 +1,268 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIButton.cpp +// +// PURPOSE : button control with three states (normal, selected, and disabled) +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIButton::CLTGUIButton() +{ + + m_hNormal = LTNULL; + m_hSelected = LTNULL; + m_hDisabled = LTNULL; + + m_nWidth = 0; + m_nHeight = 0; + + m_pCommandHandler = LTNULL; + + m_pText = LTNULL; + m_bHighlightText = LTFALSE; + + m_pFont = LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + + m_fTextureScale = 1.0f; + + memset(&m_Poly,0,sizeof(m_Poly)); +} + +CLTGUIButton::~CLTGUIButton() +{ + Destroy(); +} + +// Create the control +LTBOOL CLTGUIButton::Create ( uint32 nCommandID, + uint32 nHelpID, + HTEXTURE hNormal, + HTEXTURE hSelected, + HTEXTURE hDisabled, + CLTGUICommandHandler *pCommandHandler, + uint32 nParam1, + uint32 nParam2) +{ + if (!hNormal) return LTFALSE; + + m_pCommandHandler = pCommandHandler; + + SetTexture(hNormal,hSelected,hDisabled); + + InitPoly(); + + CLTGUICtrl::Create(nCommandID, nHelpID, nParam1,nParam2); + + return LTTRUE; +} + +// Set the font +LTBOOL CLTGUIButton::SetFont(CUIFont *pFont, uint8 nFontSize) +{ + if (!pFont && !nFontSize) + { + return LTFALSE; + } + + LTBOOL bApply = LTFALSE; + if (pFont && m_pFont != pFont) + { + m_pFont = pFont; + bApply = LTTRUE; + } + if (nFontSize && m_nBaseFontSize != nFontSize) + { + m_nBaseFontSize = nFontSize; + bApply = LTTRUE; + } + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (bApply && m_pText) + { + m_pText->SetFont(m_pFont); + m_pText->SetCharScreenHeight(m_nFontSize); + } + + + return LTTRUE; +} + +LTBOOL CLTGUIButton::SetText(const char* pText, LTBOOL bHighlightText) +{ + if (!m_pFont) return LTFALSE; + + m_bHighlightText = bHighlightText; + + if (!m_pText) + { + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pText,(float)m_pos.x,(float)m_pos.y); + } + else + m_pText->SetText((char *)pText); + + if (m_pText) + { + m_pText->SetCharScreenHeight(m_nFontSize); + float x = (float)m_pos.x + ((float)GetWidth() - m_pText->GetWidth()) / 2.0f; + float y = (float)m_pos.y + ((float)GetHeight() - m_pText->GetHeight()) / 2.0f; + m_pText->SetPosition(x,y); + } + + return LTTRUE; +} + + +void CLTGUIButton::SetTexture(HTEXTURE hNormal, HTEXTURE hSelected, HTEXTURE hDisabled, LTBOOL bFreeOld) +{ + if (bFreeOld) + { + if (m_hNormal && m_hNormal != hNormal) + g_pTexInterface->ReleaseTextureHandle(m_hNormal); + if (m_hSelected && m_hSelected != hSelected) + g_pTexInterface->ReleaseTextureHandle(m_hSelected); + if (m_hDisabled && m_hDisabled != hDisabled) + g_pTexInterface->ReleaseTextureHandle(m_hDisabled); + } + + m_hNormal = hNormal; + m_hSelected = hSelected; + m_hDisabled = hDisabled; + +} + +// Render the control +void CLTGUIButton::Render() +{ + // Sanity checks... + if (!IsVisible()) return; + + HTEXTURE hCurrTex; + if (IsSelected() && m_hSelected) + hCurrTex = m_hSelected; + else if (IsDisabled() && m_hDisabled) + hCurrTex = m_hDisabled; + else + hCurrTex = m_hNormal; + + //setup the texture + g_pDrawPrim->SetTexture(hCurrTex); + + //setup the UV coordinates on our quad, since it is dependant upon + //the texture for correct filtering + SetupQuadUVs(m_Poly, hCurrTex, 0.0f, 0.0f, 1.0f, 1.0f); + + // set up the render state + SetRenderState(); + + // draw our button + g_pDrawPrim->DrawPrim(&m_Poly); + + if (m_pText) + { + uint32 argbColor = m_argbNormal; + if (m_bHighlightText) + argbColor = GetCurrentColor(); + m_pText->SetColor(argbColor); + m_pText->Render(); + } +} + + +// Enter was pressed +LTBOOL CLTGUIButton::OnEnter ( ) +{ + // Send the command + if ( m_pCommandHandler && m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2) ) + return LTTRUE; + return LTFALSE; +} + + +void CLTGUIButton::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + ScalePoly(); + if (m_pText) + { + float x = (float)m_pos.x + ((float)GetWidth() - m_pText->GetWidth()) / 2.0f; + float y = (float)m_pos.y + ((float)GetHeight() - m_pText->GetHeight()) / 2.0f; + m_pText->SetPosition(x,y); + } +} + +void CLTGUIButton::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + ScalePoly(); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + m_pText->SetCharScreenHeight(m_nFontSize); + float x = (float)m_pos.x + ((float)GetWidth() - m_pText->GetWidth()) / 2.0f; + float y = (float)m_pos.y + ((float)GetHeight() - m_pText->GetHeight()) / 2.0f; + m_pText->SetPosition(x,y); + } + +} + +void CLTGUIButton::SetTextureScale(float fScale) +{ + m_fTextureScale = fScale; + ScalePoly(); + if (m_pText) + { + float x = (float)m_pos.x + ((float)GetWidth() - m_pText->GetWidth()) / 2.0f; + float y = (float)m_pos.y + ((float)GetHeight() - m_pText->GetHeight()) / 2.0f; + m_pText->SetPosition(x,y); + } + +} + +void CLTGUIButton::InitPoly() +{ + ScalePoly(); + g_pDrawPrim->SetUVWH(&m_Poly,0.0f,0.0f,1.0f,1.0f); + g_pDrawPrim->SetRGBA(&m_Poly,0xFFFFFFFF); + +} + +void CLTGUIButton::ScalePoly() +{ + if (!m_hNormal) return; + uint32 w,h; + g_pTexInterface->GetTextureDims(m_hNormal,w,h); + float x = (float)m_basePos.x * m_fScale; + float y = (float)m_basePos.y * m_fScale; + float fw = (float)w * m_fScale * m_fTextureScale; + float fh = (float)h * m_fScale * m_fTextureScale; + + g_pDrawPrim->SetXYWH(&m_Poly,x,y,fw,fh); + + m_nWidth = (uint16)fw; + m_nHeight = (uint16)fh; + +} + +void CLTGUIButton::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + +} diff --git a/Jack/Libs/LTGUIMgr/ltguibutton.h b/Jack/Libs/LTGUIMgr/ltguibutton.h new file mode 100644 index 00000000..b0caef36 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguibutton.h @@ -0,0 +1,93 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIButton.h +// +// PURPOSE : button control with three states (normal, selected, and disabled) +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUIBUTTON_H_) +#define _LTGUIBUTTON_H_ + + +// This control displays a string of text which fades out upon being unselected. +// It can contain multiple strings (see CLTGUICtrl::AddString()) which are cycled +// when OnLeft() and OnRight() are called. This is useful in menu code for selecting +// options. +class CLTGUIButton : public CLTGUICtrl +{ +public: + CLTGUIButton(); + virtual ~CLTGUIButton(); + + // Create the control + // nCommandID - The command ID which is sent when "enter" is pressed. + // nHelpID - The help ID which is used to display help text. + // hNormal - normal texture + // hSelected - highlighted texture + // hDisabled - disabled texture + // pCommandHandler - handler which receives messages when the "enter" key is pressed. + LTBOOL Create ( uint32 nCommandID, uint32 nHelpID, + HTEXTURE hNormal, HTEXTURE hSelected = LTNULL, HTEXTURE hDisabled = LTNULL, + CLTGUICommandHandler *pCommandHandler = LTNULL, uint32 nParam1 = 0, uint32 nParam2 = 0); + + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + virtual void SetTextureScale(float fScale); + + // Render the control + virtual void Render (); + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return m_nWidth; } + virtual uint16 GetHeight ( ) { return m_nHeight; } + + // Commonly used keyboard messages + virtual LTBOOL OnEnter ( ); + virtual LTBOOL OnLButtonUp(int x, int y) { return OnEnter(); } + + // Set the font, pass in a NULL pointer to change only the font size + // pass in a font size of 0 to retain the current size. + LTBOOL SetFont ( CUIFont *pFont, uint8 nFontSize); + + //this fails, if no font has been defined + LTBOOL SetText(const char* pText, LTBOOL bHighlightText = LTFALSE); + + + void SetTexture(HTEXTURE hNormal, HTEXTURE hSelected = LTNULL, HTEXTURE hDisabled = LTNULL, LTBOOL bFreeOld = LTFALSE); + + virtual void SetCommandHandler(CLTGUICommandHandler *pCommandHandler) + { m_pCommandHandler = pCommandHandler; } + + + +protected: + void SetRenderState(); + void InitPoly(); + void ScalePoly(); + +protected: + + LT_POLYGT4 m_Poly; + HTEXTURE m_hNormal; // normal texture + HTEXTURE m_hSelected; // highlighted texture + HTEXTURE m_hDisabled; // disabled texture + LTFLOAT m_fTextureScale; + + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The height of the control + + CUIFormattedPolyString* m_pText; + LTBOOL m_bHighlightText; + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + // Receives a message when the "enter" key is pressed. + CLTGUICommandHandler *m_pCommandHandler; +}; + +#endif // _LTGUIBUTTON_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguicolumnctrl.cpp b/Jack/Libs/LTGUIMgr/ltguicolumnctrl.cpp new file mode 100644 index 00000000..3f28ddbb --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicolumnctrl.cpp @@ -0,0 +1,311 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIColumnCtrl.cpp +// +// PURPOSE : Control to display columns of text +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#include "ltguimgr.h" +#include "ltguiColumnCtrl.h" + +const uint8 CLTGUIColumnCtrl::kMaxNumColumns = 255; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIColumnCtrl::CLTGUIColumnCtrl() +{ + m_pFont=LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + m_nWidth = 0; + m_nBaseWidth = 0; + m_nHeight = 0; + + m_pCommandHandler=LTNULL; + +} + +CLTGUIColumnCtrl::~CLTGUIColumnCtrl() +{ + Destroy(); +} + +// Create the control +// nCommandID - The command ID which is sent when "enter" is pressed. +// pFont - The font to use for rendering the strings. +// pMessageCtrl - control which receives messages when the "enter" key is pressed. +LTBOOL CLTGUIColumnCtrl::Create ( uint32 nCommandID, + uint32 nHelpID, + CUIFont *pFont, + uint8 nFontSize, + CLTGUICommandHandler *pCommandHandler, + uint32 nParam1, + uint32 nParam2 ) +{ + m_pCommandHandler=pCommandHandler; + + SetFont(pFont,nFontSize,LTFALSE); + + CLTGUICtrl::Create(nCommandID,nHelpID,nParam1,nParam2); + return LTTRUE; +} + +// Destroys the control +void CLTGUIColumnCtrl::Destroy ( ) +{ + // Remove the columns + RemoveAllColumns(); +} + +// Adds a column to the control +// nWidth - Width of the column +// hString - The initial text for the column +uint8 CLTGUIColumnCtrl::AddColumn(const char *pString, uint16 nWidth, LTBOOL bClip) +{ + if ( !pString ) + { + assert(LTFALSE); + return -1; + } + + CLTGUITextCtrl *pCtrl = debug_new(CLTGUITextCtrl); + if (!pCtrl->Create(pString,LTNULL,LTNULL,m_pFont,m_nBaseFontSize,LTNULL)) + { + debug_delete(pCtrl); + return -1; + } + m_columnArray.push_back(pCtrl); + + //force a little extra space between columns, if we can + nWidth -= (m_nBaseFontSize/2); + if (nWidth < m_nBaseFontSize + 1) + nWidth = m_nBaseFontSize + 1 ; + + pCtrl->SetFixedWidth(nWidth,bClip); + + + + LTIntPt pos = m_basePos; + pos.x += m_nBaseWidth; + pCtrl->SetColors(m_argbSelected, m_argbNormal, m_argbDisabled); + pCtrl->SetBasePos(pos); + pCtrl->SetScale(m_fScale); + + + CalculateSize(); + + + return m_columnArray.size() - 1; +} + + +// Gets a string at a specific column index. This returns a copy (new handle). +CLTGUITextCtrl* CLTGUIColumnCtrl::GetColumn(uint8 nColumnIndex) const +{ + if (nColumnIndex > kMaxNumColumns || nColumnIndex >= m_columnArray.size()) + return LTNULL; + return m_columnArray[nColumnIndex]; +} + +CUIFormattedPolyString* CLTGUIColumnCtrl::GetPolyString(uint8 nColumnIndex) const +{ + if (nColumnIndex > kMaxNumColumns || nColumnIndex >= m_columnArray.size()) + return LTNULL; + return m_columnArray[nColumnIndex]->GetString(); + +} + +const char* CLTGUIColumnCtrl::GetString(uint8 nColumnIndex) const +{ + CUIFormattedPolyString* pString = GetPolyString(nColumnIndex); + if (pString) + return pString->GetText(); + else + return LTNULL; +} + +// Sets a string for a column +void CLTGUIColumnCtrl::SetString(uint8 nColumnIndex, const char *pString) +{ + if (nColumnIndex >= m_columnArray.size() || !pString) + return; + + // Allocate the new string + m_columnArray[nColumnIndex]->SetString(pString); +} + + +// Removes a column +void CLTGUIColumnCtrl::RemoveColumn(uint8 nIndex) +{ + if (nIndex >= m_columnArray.size()) + return; + + TextControlArray::iterator iter = m_columnArray.begin(); + iter += nIndex; + + if (iter == m_columnArray.end()) + return; + + debug_delete(*iter); + m_columnArray.erase(iter); +} + +// Removes all of the columns +void CLTGUIColumnCtrl::RemoveAllColumns() +{ + TextControlArray::iterator iter = m_columnArray.begin(); + + while (iter != m_columnArray.end()) + { + debug_delete(*iter); + iter++; + } + m_columnArray.clear(); + +} + +// Render the control +void CLTGUIColumnCtrl::Render () +{ + if (!IsVisible()) return; + + for (int i=0; i < GetNumColumns(); i++) + { + if (m_columnArray[i]->IsVisible()) + m_columnArray[i]->Render(); + } +} + +// Render the control +void CLTGUIColumnCtrl::OnSelChange() +{ + + for (int i=0; i < GetNumColumns(); i++) + { + m_columnArray[i]->Select(IsSelected()); + } +} + +// Set the font +void CLTGUIColumnCtrl::SetFont(CUIFont *pFont, uint8 nFontSize, LTBOOL bSetForAll) +{ + if (!pFont && !nFontSize) + { + return; + } + + if (pFont) + m_pFont = pFont; + if (nFontSize) + m_nBaseFontSize = nFontSize; + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (bSetForAll) + { + for (int i=0; i < GetNumColumns(); i++) + { + m_columnArray[i]->SetFont(pFont,nFontSize); + } + CalculateSize(); + } + +} + +// Handle the Enter key being pressed +LTBOOL CLTGUIColumnCtrl::OnEnter ( ) +{ + // Send the command + if ( m_pCommandHandler ) + { + if (m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2)) + return LTTRUE; + } + return LTFALSE; +} + + +void CLTGUIColumnCtrl::CalculateSize() +{ + m_nWidth = 0; + m_nBaseWidth = 0; + m_nHeight = 0; + + // find the size + for (int i=0; i < GetNumColumns(); i++) + { + m_nBaseWidth += (m_columnArray[i]->GetFixedWidth() + (m_nBaseFontSize/2)); + if (m_columnArray[i]->GetHeight() > m_nHeight) + { + m_nHeight = m_columnArray[i]->GetHeight(); + } + } + + m_nWidth = (uint16) ((float)m_nBaseWidth * m_fScale); + + //adjust vertical positions + for (i=0; i < GetNumColumns(); i++) + { + uint16 nHt = m_columnArray[i]->GetHeight(); + if (nHt < m_nHeight) + { + LTIntPt pos = m_columnArray[i]->GetBasePos(); + uint16 nOffset = (uint16) ( (LTFLOAT)(m_nHeight - nHt) / m_fScale ); + pos.y = m_basePos.y + nOffset / 2; + m_columnArray[i]->SetBasePos(pos); + } + } +} + + +void CLTGUIColumnCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + LTIntPt tmpPos = m_basePos; + for (int i=0; i < GetNumColumns(); i++) + { + m_columnArray[i]->SetBasePos(tmpPos); + tmpPos.x += (m_columnArray[i]->GetFixedWidth() + (m_nBaseFontSize/2) ); + } + + CalculateSize(); + +} + +void CLTGUIColumnCtrl::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + for (int i=0; i < GetNumColumns(); i++) + { + m_columnArray[i]->SetScale(fScale); + } + CalculateSize(); + +} + +void CLTGUIColumnCtrl::SetColors(uint32 argbSelected, uint32 argbNormal, uint32 argbDisabled) +{ + CLTGUICtrl::SetColors(argbSelected, argbNormal, argbDisabled); + for (int i=0; i < GetNumColumns(); i++) + { + m_columnArray[i]->SetColors(m_argbSelected, m_argbNormal, m_argbDisabled); + } +} + +void CLTGUIColumnCtrl::Enable ( LTBOOL bEnabled ) +{ + CLTGUICtrl::Enable (bEnabled); + for (uint8 i = 0; i < m_columnArray.size(); i++ ) + { + m_columnArray[i]->Enable (bEnabled); + } + +} diff --git a/Jack/Libs/LTGUIMgr/ltguicolumnctrl.h b/Jack/Libs/LTGUIMgr/ltguicolumnctrl.h new file mode 100644 index 00000000..4ecaf201 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicolumnctrl.h @@ -0,0 +1,103 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIColumnCtrl.h +// +// PURPOSE : Control to display columns of text +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUICOLUMNCTRL_H_) +#define _LTGUICOLUMNCTRL_H_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + + +typedef std::vector TextControlArray; + +class CLTGUIColumnCtrl : public CLTGUICtrl +{ +public: + CLTGUIColumnCtrl(); + virtual ~CLTGUIColumnCtrl(); + + // Create the control + // pClientDE - Pointer to the client interface. + // dwCommandID - The command ID which is sent when "enter" is pressed. + // pFont - The default font to use for creating the strings. + // pMessageCtrl - control which receives messages when the "enter" key is pressed. + virtual LTBOOL Create ( uint32 dwCommandID, uint32 dwHelpID, CUIFont *pFont, uint8 nFontSize, + CLTGUICommandHandler *pCommandHandler, uint32 dwParam1 = 0, uint32 dwParam2 = 0 ); + + // Destroys the control + virtual void Destroy ( ); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + virtual void SetColors(uint32 argbSelected, uint32 argbNormal, uint32 argbDisabled); + + + // Enable/Disable the control + virtual void Enable ( LTBOOL bEnabled ); + + + // Adds a column to the control + // nWidth - Width of the column + // hString - The initial text for the column + //returns column index + static const uint8 kMaxNumColumns; + uint8 AddColumn(const char *pString, uint16 nWidth, LTBOOL bClip = LTFALSE); + + // Gets a string at a specific column index. This returns a copy (new handle). + CLTGUITextCtrl* GetColumn(uint8 nColumnIndex) const; + CUIFormattedPolyString* GetPolyString(uint8 nColumnIndex) const; + const char* GetString(uint8 nColumnIndex) const; + + // Sets a string for a column. This copies the string from hString to an internal string. + void SetString(uint8 nColumnIndex, const char *pString); + + void RemoveColumn(uint8 nIndex); // Removes a column + void RemoveAllColumns(); // Removes all of the columns + + // Return the number of columns + uint8 GetNumColumns() { return m_columnArray.size(); } + + // Render the control + void Render (); + + // Set the font + void SetFont (CUIFont *pFont, uint8 nFontSize, LTBOOL bSetForAll = LTFALSE); + + // Width/Height calculations + uint16 GetWidth ( ) { return m_nWidth; } + uint16 GetHeight ( ) { return m_nHeight; } + + // Handle the Enter key being pressed + virtual LTBOOL OnEnter ( ); + virtual LTBOOL OnLButtonUp(int x, int y) {return OnEnter();} + +protected: + virtual void OnSelChange(); + void CalculateSize(); + +protected: + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + uint16 m_nWidth; // The width of the control + uint16 m_nBaseWidth; // The unscaled width of the control + uint16 m_nHeight; // The height of the control + + TextControlArray m_columnArray; // The array of columns + + // Receives a message when the "enter" key is pressed. + CLTGUICommandHandler *m_pCommandHandler; +}; + + +#endif // !defined(_LTGUICOLUMNCTRL_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguicommandhandler.cpp b/Jack/Libs/LTGUIMgr/ltguicommandhandler.cpp new file mode 100644 index 00000000..d802a1e3 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicommandhandler.cpp @@ -0,0 +1,26 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICommandHandler.cpp +// +// PURPOSE : Base clase for objects that receive messages from controls +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "ltguicommandhandler.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUICommandHandler::CLTGUICommandHandler() +{ + +} + +CLTGUICommandHandler::~CLTGUICommandHandler() +{ + +} diff --git a/Jack/Libs/LTGUIMgr/ltguicommandhandler.h b/Jack/Libs/LTGUIMgr/ltguicommandhandler.h new file mode 100644 index 00000000..4ff132b1 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicommandhandler.h @@ -0,0 +1,32 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICommandHandler.h +// +// PURPOSE : Base clase for objects that receive messages from controls +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUICOMMANDHANDLER_H_) +#define _LTGUICOMMANDHANDLER_H_ + +class CLTGUICommandHandler +{ +public: + CLTGUICommandHandler(); + virtual ~CLTGUICommandHandler(); + + uint32 SendCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) + { + return OnCommand(nCommand, nParam1, nParam2); + } + +protected: + virtual uint32 OnCommand(uint32 nCommand, uint32 nParam1, uint32 nParam2) + { + return 0; + } +}; + +#endif // _LTGUICOMMANDHANDLER_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguictrl.cpp b/Jack/Libs/LTGUIMgr/ltguictrl.cpp new file mode 100644 index 00000000..720d0ac9 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguictrl.cpp @@ -0,0 +1,70 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICtrl.cpp +// +// PURPOSE : Base clase for controls +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUICtrl::CLTGUICtrl() +{ + m_bSelected = LTFALSE; + m_bCreated = LTFALSE; + m_bEnabled = LTTRUE; + m_bVisible = LTTRUE; + m_nCommandID = 0; + m_nHelpID = 0; + m_nParam1 = 0; + m_nParam2 = 0; + m_pos.x = 0; + m_pos.y = 0; + m_basePos.x = 0; + m_basePos.y = 0; + m_fScale = 1.0f; + + m_argbSelected = 0xFFFFFFFF; + m_argbNormal = 0xFF000000; + m_argbDisabled = 0xFF808080; + +} + +CLTGUICtrl::~CLTGUICtrl() +{ +} + + +// Select a control +void CLTGUICtrl::Select(LTBOOL bSelected) +{ + if (IsSelected() != bSelected) + { + m_bSelected=bSelected; + OnSelChange(); + } +} + +LTBOOL CLTGUICtrl::IsOnMe(int x, int y) +{ + if (!m_bVisible) return LTFALSE; + + return (x >= m_pos.x && y >= m_pos.y && + x <= (m_pos.x + GetWidth()) && + y <= (m_pos.y + GetHeight()) ); +} + + +void CLTGUICtrl::SetScale(float fScale) +{ + m_pos.x = (int)(fScale * (float)m_basePos.x); + m_pos.y = (int)(fScale * (float)m_basePos.y); + m_fScale = fScale; +} \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguictrl.h b/Jack/Libs/LTGUIMgr/ltguictrl.h new file mode 100644 index 00000000..c277751e --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguictrl.h @@ -0,0 +1,171 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICtrl.h +// +// PURPOSE : Base clase for controls +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUICTRL_H_) +#define _LTGUICTRL_H_ + +#include "iltclient.h" + + +#define LGCS_NORMAL 0 // control states +#define LGCS_SELECTED 1 +#define LGCS_DISABLED 2 + +class CLTGUICtrl : public CLTGUICommandHandler +{ +public: + CLTGUICtrl(); + virtual ~CLTGUICtrl(); + + // All controls should have a create function. + virtual void Create(uint32 nCommandID, uint32 nHelpID, uint32 nParam1 = 0, uint32 nParam2 = 0) + { + m_nCommandID = nCommandID; + m_nHelpID = nHelpID; + m_nParam1 = nParam1; + m_nParam2 = nParam2; + } + + // Destruction + virtual void Destroy() {} + + // Render the control + virtual void Render ( ) = 0; + + // Reset the animation of the control if it has one + virtual void ResetAnimation() {} + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return 0; } + virtual uint16 GetHeight ( ) { return 0; } + + virtual uint16 GetBaseWidth ( ) { return ( uint16 )( (float)GetWidth() / GetScale()); } + virtual uint16 GetBaseHeight ( ) { return ( uint16 )( (float)GetHeight() / GetScale()); } + + virtual void SetBasePos( LTIntPt pos ) { m_basePos=pos; SetScale(m_fScale);} + virtual LTIntPt GetBasePos ( ) { return m_basePos; } + virtual LTIntPt GetPos ( ) { return m_pos; } + + virtual void SetScale(float fScale); + virtual float GetScale() {return m_fScale;} + + + // Commonly used input messages + virtual LTBOOL OnLeft ( ) {return LTFALSE;} + virtual LTBOOL OnRight ( ) {return LTFALSE;} + virtual LTBOOL OnUp ( ) {return LTFALSE;} + virtual LTBOOL OnDown ( ) {return LTFALSE;} + virtual LTBOOL OnEnter ( ) {return LTFALSE;} + + //check a point and see if it is over this control + virtual LTBOOL IsOnMe(int x, int y); + + // Handles gamepad input + virtual LTBOOL HandleInterfaceCommand(int command) {return LTFALSE;} + + // Handles a key press. Returns FALSE if the key was not processed through this method. + // Left, Up, Down, Right, and Enter are automatically passed through OnUp(), OnDown(), etc. + virtual LTBOOL HandleKeyDown(int key, int rep) {return LTFALSE;} + + // Handles a character input. + virtual LTBOOL HandleChar(unsigned char c) {return LTFALSE;} + + // Mouse messages + virtual LTBOOL OnLButtonDown(int x, int y) {return LTFALSE;} + virtual LTBOOL OnLButtonUp(int x, int y) {return LTFALSE;} + virtual LTBOOL OnLButtonDblClick(int x, int y) {return LTFALSE;} + virtual LTBOOL OnRButtonDown(int x, int y) {return LTFALSE;} + virtual LTBOOL OnRButtonUp(int x, int y) {return LTFALSE;} + virtual LTBOOL OnRButtonDblClick(int x, int y) {return LTFALSE;} + virtual LTBOOL OnMouseMove(int x, int y) {return LTFALSE;} + + // Handle a command + virtual void OnCommand ( uint32 nCommandID ) {} + + // Select a control + void Select(LTBOOL bSelected); + + // Enable/Disable the control + virtual void Enable ( LTBOOL bEnabled ) { m_bEnabled=bEnabled; } + + // Show/Hide the control + virtual void Show ( LTBOOL bShow ) { m_bVisible=bShow; } + + // Update data + virtual void UpdateData ( LTBOOL bSaveAndValidate = LTTRUE ) {} + + virtual int GetState(); + virtual uint32 GetCurrentColor(); + + // Sets the colors to fade to and from + virtual void SetColors(uint32 argbSelected, uint32 argbNormal, uint32 argbDisabled) + { m_argbSelected = argbSelected; m_argbNormal = argbNormal; m_argbDisabled = argbDisabled;} + + + // Access to member variables + LTBOOL IsSelected() { return m_bSelected; } + LTBOOL IsEnabled() { return m_bEnabled && IsVisible(); } + LTBOOL IsNormal() { return(!IsSelected() && IsEnabled()); } + LTBOOL IsDisabled() { return(!IsSelected() && !IsEnabled()); } + LTBOOL IsVisible() { return m_bVisible; } + + virtual void SetCommandID(uint32 id) { m_nCommandID = id; } + virtual uint32 GetCommandID() { return m_nCommandID; } + + void SetParam1(uint32 n) { m_nParam1 = n; } + uint32 GetParam1() { return(m_nParam1); } + + void SetParam2(uint32 n) { m_nParam2 = n; } + uint32 GetParam2() { return(m_nParam2); } + + virtual void SetHelpID(uint32 id) { m_nHelpID = id; } + virtual uint32 GetHelpID() { return m_nHelpID; } + +protected: + // Called by Select(). The IsSelected() will return the newly selected state. + virtual void OnSelChange() {} + +protected: + uint32 m_nCommandID; // The command which is sent when "enter" is pressed + uint32 m_nHelpID; + uint32 m_nParam1; // Extra params + uint32 m_nParam2; // Extra params + + LTBOOL m_bCreated; + + LTIntPt m_pos; + LTIntPt m_basePos; + float m_fScale; + + LTBOOL m_bSelected; + LTBOOL m_bEnabled; + LTBOOL m_bVisible; + + uint32 m_argbSelected; // The selected color + uint32 m_argbNormal; // The non-selected color + uint32 m_argbDisabled; // The disabled color + +}; + +inline int CLTGUICtrl::GetState() +{ + if (IsSelected()) return(LGCS_SELECTED); + if (IsDisabled()) return(LGCS_DISABLED); + return(LGCS_NORMAL); +} + +inline uint32 CLTGUICtrl::GetCurrentColor() +{ + if (IsSelected()) return(m_argbSelected); + if (IsDisabled()) return(m_argbDisabled); + return(m_argbNormal); +} + +#endif // _LTGUICTRL_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguicyclectrl.cpp b/Jack/Libs/LTGUIMgr/ltguicyclectrl.cpp new file mode 100644 index 00000000..ba7368e1 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicyclectrl.cpp @@ -0,0 +1,391 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICycleCtrl.cpp +// +// PURPOSE : Control which can cycle through a set of strings based on +// user input. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "ltguicyclectrl.h" + + +const uint8 CLTGUICycleCtrl::kMaxNumStrings = 254; +const uint8 CLTGUICycleCtrl::kNoSelection = 255; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUICycleCtrl::CLTGUICycleCtrl() +{ + m_pHeaderText = LTNULL; + m_nHeaderWidth = 0; + m_nSelIndex = kNoSelection; + m_pCommandHandler = LTNULL; + +} + +CLTGUICycleCtrl::~CLTGUICycleCtrl() +{ + Destroy(); +} + +// Create the control +// pText - The initial text that is displayed for this control. Pass in +// LTNULL if you do not want initial text. A copy of this text +// is made so the string may be discarded after making this call. +// pFont - The font to use for this string. +// nFontSize - The font size to use for this string. +// nHeaderWidth - The width to use for the header string +// pnValue - Pointer to the value which receives the selection index when UpdateData is called. +LTBOOL CLTGUICycleCtrl::Create ( const char *pText, uint32 nHelpID, + CUIFont *pFont, uint8 nFontSize, uint16 nHeaderWidth, uint8 *pnValue) +{ + + if (!SetFont(pFont,nFontSize)) + { + return LTFALSE; + } + + if ( pText) + { + if (m_pHeaderText) + m_pHeaderText->SetText((char *)pText); + else + { + m_pHeaderText = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pText,(float)m_pos.x,(float)m_pos.y); + m_pHeaderText->SetCharScreenHeight(m_nFontSize); + + } + } + + if (nHeaderWidth) + m_nHeaderWidth = nHeaderWidth; + else if (m_pHeaderText) + m_nHeaderWidth = (uint16)m_pHeaderText->GetWidth() + m_nFontSize; + + + m_nSelIndex=kNoSelection; + m_pnValue = pnValue; + + CLTGUICtrl::Create(LTNULL, nHelpID); + + return LTTRUE; +} + +// Destroys the control +void CLTGUICycleCtrl::Destroy ( ) +{ + if (m_pHeaderText) + { + g_pFontManager->DestroyPolyString(m_pHeaderText); + m_pHeaderText = LTNULL; + } + + // Remove the strings + RemoveAll(); + +} + +// Update data +void CLTGUICycleCtrl::UpdateData (LTBOOL bSaveAndValidate) +{ + if (!m_pnValue) + { + return; + } + + if (bSaveAndValidate) + { + *m_pnValue=GetSelIndex(); + } + else + { + SetSelIndex(*m_pnValue); + } +} + + +// Add more strings to the control. These are cycled when OnLeft() and OnRight() are called +void CLTGUICycleCtrl::AddString(const char *pString) +{ + + if ( !pString || !m_pFont || !m_nFontSize || m_stringArray.size() >= kMaxNumStrings) + { + ASSERT(0); + return; + } + + + + int x = m_pos.x + (int)((float)m_nHeaderWidth * m_fScale); + CUIFormattedPolyString *pPolyStr = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pString,(float)x,(float)m_pos.y); + + + if (pPolyStr) + { + + pPolyStr->SetCharScreenHeight(m_nFontSize); + + m_stringArray.push_back(pPolyStr); + + //if this is the first string, select it + if (m_nSelIndex == kNoSelection) + { + m_nSelIndex = 0; + CalculateSize(); + } + + } +} + +// Return a string at a specific index +CUIFormattedPolyString* CLTGUICycleCtrl::GetString(uint8 nIndex) +{ + if (nIndex > kMaxNumStrings || nIndex >= m_stringArray.size()) + return LTNULL; + + return m_stringArray.at(nIndex); +} + +// Remove a string at a specific index +void CLTGUICycleCtrl::RemoveString(uint8 nIndex) +{ + if (nIndex > kMaxNumStrings || nIndex >= m_stringArray.size()) + return; + g_pFontManager->DestroyPolyString(m_stringArray.at(nIndex)); + + FPStringArray::iterator iter = m_stringArray.begin() + nIndex; + m_stringArray.erase(iter); + + if (m_nSelIndex >= (int)m_stringArray.size()) + { + m_nSelIndex = (int)m_stringArray.size()-1; + CalculateSize(); + } + else if (m_nSelIndex > nIndex) + { + m_nSelIndex--; + CalculateSize(); + } +} + +// Remove all strings +void CLTGUICycleCtrl::RemoveAll() +{ + FPStringArray::iterator iter = m_stringArray.begin(); + while ( iter != m_stringArray.end()) + { + g_pFontManager->DestroyPolyString(*iter); + iter++; + } + m_stringArray.clear(); + m_nSelIndex=kNoSelection; + +} + +// Sets the currently selected index +void CLTGUICycleCtrl::SetSelIndex(uint8 nIndex) +{ + if (nIndex > kMaxNumStrings || nIndex >= m_stringArray.size()) + return; + m_nSelIndex=nIndex; + CalculateSize(); +} + +// Render the control +void CLTGUICycleCtrl::Render () +{ + // Sanity checks... + if (!IsVisible()) return; + + uint32 argbColor=GetCurrentColor(); + if (m_pHeaderText) + { + m_pHeaderText->SetColor(argbColor); + m_pHeaderText->Render(); + } + + if (m_nSelIndex > m_stringArray.size() || m_stringArray.size() == 0) + { + return; + } + + m_stringArray[m_nSelIndex]->SetColor(argbColor); + m_stringArray[m_nSelIndex]->Render(); + +} + + +void CLTGUICycleCtrl::CalculateSize() +{ + if (!m_pFont || m_nSelIndex >= m_stringArray.size()) + { + m_nWidth=0; + m_nHeight=0; + } + else + { + m_nWidth = (uint16)m_stringArray[m_nSelIndex]->GetWidth(); + m_nHeight = (uint16)m_stringArray[m_nSelIndex]->GetHeight(); + } + m_nWidth += (uint16)((float)m_nHeaderWidth * m_fScale); + if (m_pHeaderText && m_pHeaderText->GetHeight() > m_nHeight) + { + m_nHeight = (uint16)m_pHeaderText->GetHeight(); + } +} + + +//this function sets up a notification when the control's value changes +void CLTGUICycleCtrl::NotifyOnChange(uint32 nCommandID,CLTGUICommandHandler *pCommandHandler, uint32 nParam1, uint32 nParam2) +{ + m_pCommandHandler = pCommandHandler; + m_nCommandID = nCommandID; + m_nParam1 = nParam1; + m_nParam2 = nParam2; +} + +// Set the font +LTBOOL CLTGUICycleCtrl::SetFont(CUIFont *pFont, uint8 nFontSize) +{ + if (!pFont && !nFontSize) + { + return LTFALSE; + } + + LTBOOL bApply = LTFALSE; + if (pFont && m_pFont != pFont) + { + m_pFont = pFont; + bApply = LTTRUE; + } + if (nFontSize && m_nBaseFontSize != nFontSize) + { + m_nBaseFontSize = nFontSize; + bApply = LTTRUE; + } + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (bApply) + { + for (uint8 i = 0; i < m_stringArray.size(); i++) + { + m_stringArray[i]->SetFont(m_pFont); + m_stringArray[i]->SetCharScreenHeight(m_nFontSize); + } + if (m_pHeaderText) + { + m_pHeaderText->SetFont(m_pFont); + m_pHeaderText->SetCharScreenHeight(m_nFontSize); + } + CalculateSize(); + } + + + return LTTRUE; +} + +// Left was pressed +LTBOOL CLTGUICycleCtrl::OnLeft ( ) +{ + int oldSel = m_nSelIndex; + if ( m_stringArray.size() <= 1 ) + { + return LTFALSE; + } + + uint8 newSel = m_nSelIndex; + if ( newSel == 0 ) + { + newSel=m_stringArray.size()-1; + } + else + newSel--; + + if (newSel != m_nSelIndex) + { + SetSelIndex(newSel); + CalculateSize(); + + } + if (m_pCommandHandler && m_nSelIndex != oldSel) + { + m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2); + } + return LTTRUE; +} + +// Right was pressed +LTBOOL CLTGUICycleCtrl::OnRight ( ) +{ + int oldSel = m_nSelIndex; + if ( m_stringArray.size() <= 1 ) + { + return LTFALSE; + } + + uint8 newSel = m_nSelIndex; + newSel++; + if ( newSel >= m_stringArray.size() ) + { + newSel = 0; + } + if (newSel != m_nSelIndex) + { + SetSelIndex(newSel); + CalculateSize(); + + } + if (m_pCommandHandler && m_nSelIndex != oldSel) + { + m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2); + } + return LTTRUE; +} + + + +void CLTGUICycleCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + + + if (m_pHeaderText) + { + m_pHeaderText->SetPosition((float)m_pos.x,(float)m_pos.y); + } + float x = (float)m_pos.x + ((float)m_nHeaderWidth * m_fScale); + for (uint8 i = 0; i < m_stringArray.size(); i++) + { + m_stringArray[i]->SetPosition(x,(float)m_pos.y); + } +} + +void CLTGUICycleCtrl::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (m_pHeaderText) + { + m_pHeaderText->SetPosition((float)m_pos.x,(float)m_pos.y); + m_pHeaderText->SetCharScreenHeight(m_nFontSize); + } + float x = (float)m_pos.x + ((float)m_nHeaderWidth * m_fScale); + for (uint8 i = 0; i < m_stringArray.size(); i++) + { + m_stringArray[i]->SetPosition(x,(float)m_pos.y); + m_stringArray[i]->SetCharScreenHeight(m_nFontSize); + } + CalculateSize(); + +} + + diff --git a/Jack/Libs/LTGUIMgr/ltguicyclectrl.h b/Jack/Libs/LTGUIMgr/ltguicyclectrl.h new file mode 100644 index 00000000..752a985d --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguicyclectrl.h @@ -0,0 +1,102 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUICycleCtrl.h +// +// PURPOSE : Control which can cycle through a set of strings based on +// user input. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUICYCLECTRL_H_) +#define _LTGUICYCLECTRL_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +class CLTGUICycleCtrl : public CLTGUICtrl +{ +public: + CLTGUICycleCtrl(); + virtual ~CLTGUICycleCtrl(); + + // Create the control + // pText - The initial text that is displayed for this control. Pass in + // LTNULL if you do not want initial text. A copy of this text + // is made so the string may be discarded after making this call. + // pFont - The font to use for this string. + // nFontSize - The font size to use for this string. + // nHeaderWidth - The width to use for the header string + // pnValue - Pointer to the value which receives the selection index when UpdateData is called. + LTBOOL Create ( const char *pText, uint32 nHelpID, CUIFont *pFont, uint8 nFontSize, + uint16 nHeaderWidth, uint8 *pnValue=LTNULL); + + // Destroys the control + virtual void Destroy ( ); + + // Update data + virtual void UpdateData(LTBOOL bSaveAndValidate); + + // Add more strings to the control. These are cycled when OnLeft() and OnRight() are called + static const uint8 kMaxNumStrings; + static const uint8 kNoSelection; + virtual void AddString(const char *pText); + + CUIFormattedPolyString* GetString(uint8 nIndex); // Return a string at a specific index + void RemoveString(uint8 nIndex); // Remove a string at a specific index + void RemoveAll(); // Remove all strings + + // Return the number of strings + uint8 GetNumStrings() { return m_stringArray.size(); } + + // Sets/Get the currently selected index + uint8 GetSelIndex() { return m_nSelIndex; } + virtual void SetSelIndex(uint8 nIndex); + //this function sets up a notification when the control's value changes + virtual void NotifyOnChange(uint32 nCommandID,CLTGUICommandHandler *pCommandHandler, uint32 nParam1 = 0, uint32 nParam2 = 0); + + // Render the control + virtual void Render (); + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return m_nWidth; } + virtual uint16 GetHeight ( ) { return m_nHeight; } + virtual void CalculateSize(); + + virtual LTBOOL OnEnter() {return LTFALSE;} + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnLButtonUp(int x, int y) {return OnRight();} + virtual LTBOOL OnRButtonUp(int x, int y) {return OnLeft();} + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + // Set the font, pass in a NULL pointer to change only the font size + // pass in a font size of 0 to retain the current size. + virtual LTBOOL SetFont ( CUIFont *pFont, uint8 nFontSize); + + +protected: + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The height of the control + + CUIFormattedPolyString* m_pHeaderText; + uint16 m_nHeaderWidth; + FPStringArray m_stringArray; + uint8 m_nSelIndex; + uint8* m_pnValue; + + CLTGUICommandHandler *m_pCommandHandler; + +}; + + +#endif // !defined(_LTGUICYCLECTRL_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguieditctrl.cpp b/Jack/Libs/LTGUIMgr/ltguieditctrl.cpp new file mode 100644 index 00000000..b26db847 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguieditctrl.cpp @@ -0,0 +1,567 @@ +// LTGUIEditCtrl.cpp: implementation of the CLTGUIEditCtrl class. +// +////////////////////////////////////////////////////////////////////// + +#include "ltguimgr.h" +#include "ltguieditctrl.h" +#include "vkdefs.h" +#include "ctype.h" +#include + + +const uint16 CLTGUIEditCtrl::kMaxLength = 64; + +namespace +{ + char szString[CLTGUIEditCtrl::kMaxLength+1]; + + LTBOOL IsFileFriendly(char c, bool isFirst) + { + static const char* pszOKChars = " _"; + if (isalnum(c)) return LTTRUE; + if (strchr(pszOKChars,c) && !isFirst) return LTTRUE; + return LTFALSE; + } +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIEditCtrl::CLTGUIEditCtrl() +{ + m_pLTClient = LTNULL; + m_pFont = LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + + m_pText = LTNULL; + + m_nMaxLength = 0; + m_nCaretPos = 0; + m_pStringValue = LTNULL; + + m_bCaretEnabled = LTFALSE; + m_fCaretTime = 0.0f; + + m_nWidth = 0; + m_nHeight = 0; + m_nFixedWidth = 0; + m_bUseFrame = LTFALSE; + + m_eInputMode = kInputAll; + m_pFn = NULL; + + memset(&m_Caret,0,sizeof(m_Caret)); + memset(m_Frame,0,sizeof(m_Frame)); +} + +CLTGUIEditCtrl::~CLTGUIEditCtrl() +{ + Destroy(); +} + +// Create the control +// pLTClient - Pointer to the client interface. +// nCommandID - The command ID which is sent when "enter" is pressed. +// pFont - The font to use for rendering the strings. +// nMaxLength - The size of the buffer to store the string in. +// pMessageCtrl - control which receives messages when the "enter" key is pressed. +// pStringValue - pointer to the string to be modified in UpdateData. +LTBOOL CLTGUIEditCtrl::Create ( ILTClient *pLTClient, uint32 nCommandID, CUIFont *pFont, uint8 nFontSize, + uint16 nMaxLength, CLTGUICommandHandler *pCommandHandler, char *pStringValue, + uint32 nParam1, uint32 nParam2 ) +{ + if (!pLTClient || !pFont || nMaxLength < 0) + return LTFALSE; + + m_pLTClient = pLTClient; + m_pCommandHandler = pCommandHandler; + m_pStringValue = pStringValue; + + SetMaxLength(nMaxLength); + + if (!SetFont(pFont,nFontSize)) + { + return LTFALSE; + } + + + // Add the string + if (pStringValue) + { + SetText(pStringValue); + } + + g_pDrawPrim->SetRGBA(&m_Caret,0xFFFFFFFF); + g_pDrawPrim->SetRGBA(&m_Frame[0],0x7F000000); + g_pDrawPrim->SetRGBA(&m_Frame[1],0x7FFFFFFF); + g_pDrawPrim->SetRGBA(&m_Frame[2],0x7FFFFFFF); + g_pDrawPrim->SetRGBA(&m_Frame[3],0x7F000000); + + + CLTGUICtrl::Create(nCommandID,nParam1,nParam2); + return LTTRUE; +} + +// Destroys the control +void CLTGUIEditCtrl::Destroy ( ) +{ + if (m_pText) + { + g_pFontManager->DestroyPolyString(m_pText); + m_pText = LTNULL; + } + +} + +// Update data +void CLTGUIEditCtrl::UpdateData(LTBOOL bSaveAndValidate) +{ + if (!m_pStringValue) + return; + + // Save the string out + if (bSaveAndValidate) + { + if (m_pText) + SAFE_STRCPY(m_pStringValue, m_pText->GetText()); + } + else + SetText(m_pStringValue); +} + +// Render the control +void CLTGUIEditCtrl::Render () +{ + if ( !m_pText || !IsVisible()) + return; + + uint32 color = GetCurrentColor(); + + // Render the text + + if (m_pText) + { + m_pText->SetColor(color); + m_pText->Render(); + + // draw the caret + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_NOCOLOROP); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_NOBLEND); + + if (IsCaretOn() && IsEnabled()) + { + LT_POLYGT4* pPolys = m_pText->GetPolys(); + + float x = (float)m_pos.x; + float y = (float)m_pos.y; + float w = 2.0f; + float h = m_pText->GetHeight(); + if (m_nCaretPos > 0 && m_nCaretPos <= m_pText->GetLength()) + { + x = pPolys[m_nCaretPos-1].verts[1].x; + } + g_pDrawPrim->SetXYWH(&m_Caret,x,y,w,h); + + + + g_pDrawPrim->DrawPrim(&m_Caret); + + } + + // draw our frame + if (m_bUseFrame) + g_pDrawPrim->DrawPrim(m_Frame,4); + + } +} + +// Check for caret use +LTBOOL CLTGUIEditCtrl::IsCaretOn() +{ + if (!m_bCaretEnabled) return(LTFALSE); + + static float fCaretTimer = 0.0f; + static float fLastTime = 0.0f; + static LTBOOL bCaretOn = LTTRUE; + + float fCurTime = m_pLTClient->GetTime(); + float fDeltaTime = fCurTime - fLastTime; + + if (fDeltaTime >= fCaretTimer) + { + fCaretTimer = m_fCaretTime; + bCaretOn ^= 1; + } + else + fCaretTimer -= fDeltaTime; + + fLastTime = fCurTime; + + return(bCaretOn); +} + +// Enable the caret +void CLTGUIEditCtrl::EnableCaret(LTBOOL bUseCaret, float fToggleTime, uint32 argbColor) +{ + m_bCaretEnabled = bUseCaret; + m_fCaretTime = fToggleTime; + + g_pDrawPrim->SetRGBA(&m_Caret,argbColor); + +} + + +// Set the font +LTBOOL CLTGUIEditCtrl::SetFont(CUIFont *pFont, uint8 nFontSize) +{ + if (!pFont && !nFontSize) + { + return LTFALSE; + } + + if (pFont) + m_pFont = pFont; + if (nFontSize) + m_nBaseFontSize = nFontSize; + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (m_pText) + { + m_pText->SetFont(m_pFont); + m_pText->SetCharScreenHeight(m_nFontSize); + CalculateSize(); + } + return LTTRUE; +} + +// Set the text +void CLTGUIEditCtrl::SetText(const char *pString) +{ + if ( !pString || !m_pLTClient || !m_pFont || !m_nFontSize) + return; + + if (!m_pText) + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pString,(float)m_pos.x,(float)m_pos.y); + else + m_pText->SetText((char *)pString); + + + if (m_pText) + { + m_pText->SetCharScreenHeight(m_nFontSize); + CalculateSize(); + } + m_nCaretPos = strlen(pString); +} +const char* CLTGUIEditCtrl::GetText() +{ + if (m_pText) + return m_pText->GetText(); + else + return LTNULL; +} + +void CLTGUIEditCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + if (m_pText) + { + m_pText->SetPosition((float)m_pos.x,(float)m_pos.y); + } +} + +void CLTGUIEditCtrl::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + m_pText->SetPosition((float)m_pos.x,(float)m_pos.y); + m_pText->SetCharScreenHeight(m_nFontSize); + } + CalculateSize(); + +} + + +// Add a character to the end +void CLTGUIEditCtrl::AddCharacter(char c) +{ + if (!m_pText) + return; + + // Check to see are at our buffer limit + if (m_pText->GetLength() >= m_nMaxLength) + return; + + // strip out leading whitespace which confuses things + if (m_pText->GetLength() == 0 && c == ' ') + return; + + + SAFE_STRCPY(szString,m_pText->GetText()); + int nIndex = strlen(szString); + + while (nIndex > m_nCaretPos) + { + szString[nIndex] = szString[nIndex-1]; + nIndex--; + } + + szString[nIndex] = c; + m_nCaretPos++; + m_pText->SetText(szString); + + if (m_nFixedWidth) + { + float testWidth = m_fScale * m_nFixedWidth; + if (m_pText->GetWidth() > testWidth ) + { + m_nCaretPos--; + RemoveCharacter(); + } + } + + CalculateSize(); + +} + +// Remove a character from the end +void CLTGUIEditCtrl::RemoveCharacter() +{ + if (!m_pText) + return; + + // Check to see have any chars + if (m_pText->GetLength() < 1) + return; + + SAFE_STRCPY(szString,m_pText->GetText()); + + int nEnd=strlen(szString); + if (nEnd > m_nCaretPos) + { + int nIndex = m_nCaretPos; + + while (nIndex < nEnd) + { + szString[nIndex] = szString[nIndex+1]; + nIndex++; + } + + szString[nIndex]='\0'; + m_pText->SetText(szString); + } + + CalculateSize(); + +} + +// Handles a key press +LTBOOL CLTGUIEditCtrl::HandleKeyDown(int key, int rep) +{ + if (CLTGUICtrl::HandleKeyDown(key, rep)) + return LTTRUE; + + switch (key) + { + case VK_BACK: + if (m_nCaretPos > 0) + { + m_nCaretPos--; + RemoveCharacter(); + } + break; + case VK_DELETE: + RemoveCharacter(); + break; + case VK_HOME: + m_nCaretPos = 0; + break; + case VK_END: + if (m_pText) + m_nCaretPos = m_pText->GetLength(); + break; + case VK_LEFT: + if (m_nCaretPos > 0) m_nCaretPos--; + break; + case VK_RIGHT: + if (m_nCaretPos < m_pText->GetLength()) m_nCaretPos++; + break; + default: + return LTFALSE; + } + + return LTTRUE; +} + +// Handles a key press +LTBOOL CLTGUIEditCtrl::HandleChar(unsigned char c) +{ + if (CLTGUICtrl::HandleChar(c)) return LTTRUE; + if (c < ' ') return LTFALSE; + + if (m_pFn) + { + c = (*m_pFn)(c); + if (!c) + return LTFALSE; + } + + switch (m_eInputMode) + { + case kInputAlphaNumeric: + if (!isalnum(c)) return LTFALSE; + break; + case kInputAlphaOnly: + if (!isalpha(c)) return LTFALSE; + break; + case kInputNumberOnly: + if (!isdigit(c)) return LTFALSE; + break; + case kInputFileFriendly: + if (!IsFileFriendly(c,(m_nCaretPos == 0))) return LTFALSE; + break; + }; + + + AddCharacter(c); + return LTTRUE; +} + +// Handle the Enter key being pressed +LTBOOL CLTGUIEditCtrl::OnEnter ( ) +{ + // Send the command + if ( m_pCommandHandler ) + { + if (m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2)) + return LTTRUE; + } + return LTFALSE; +} + + +void CLTGUIEditCtrl::CalculateSize() +{ + + if (!m_pFont || !m_pText) + { + m_nWidth=0; + m_nHeight=0; + } + else + { + if (m_nFixedWidth) + { + m_nWidth = (uint16)((float)m_nFixedWidth * m_fScale); + } + else + m_nWidth = (uint16)m_pText->GetWidth(); + m_nHeight = m_nFontSize; + } + + + if (m_bUseFrame) + { + float fx = (float)m_pos.x - 1.0f; + float fy = (float)m_pos.y - 1.0f; + float fw = (float)m_nWidth + 1.0f; + float fh = 1.0f; + g_pDrawPrim->SetXYWH(&m_Frame[0],fx,fy,fw,fh); + + fx = (float)(m_pos.x + m_nWidth); + fy = (float)m_pos.y - 1.0f; + fw = 1.0f; + fh = (float)GetHeight() + 1.0f; + g_pDrawPrim->SetXYWH(&m_Frame[1],fx,fy,fw,fh); + + fx = (float)m_pos.x; + fy = (float)(m_pos.y + GetHeight()); + fw = (float)m_nWidth + 1.0f; + fh = 1.0f; + g_pDrawPrim->SetXYWH(&m_Frame[2],fx,fy,fw,fh); + + fx = (float)m_pos.x - 1.0f; + fy = (float)m_pos.y; + fw = 1.0f; + fh = (float)GetHeight() + 1.0f; + g_pDrawPrim->SetXYWH(&m_Frame[3],fx,fy,fw,fh); + } + +} + + +void CLTGUIEditCtrl::SetFixedWidth(uint16 nWidth, LTBOOL bUseFrame) +{ + uint16 nMinWidth = m_nBaseFontSize + 1; + ASSERT(nWidth >= nMinWidth); + if (nWidth < nMinWidth) + nWidth = nMinWidth; + m_nFixedWidth = nWidth; + CalculateSize(); + + if (m_nFixedWidth) + { + m_bUseFrame = bUseFrame; + if (m_pText) + { + float testWidth = m_fScale * m_nFixedWidth; + int nOldCaret = m_nCaretPos; + m_nCaretPos = m_pText->GetLength(); + while (m_pText->GetLength() && m_pText->GetWidth() > testWidth ) + { + m_nCaretPos--; + RemoveCharacter(); + } + if (nOldCaret > m_pText->GetLength()) + m_nCaretPos = m_pText->GetLength(); + else + m_nCaretPos = nOldCaret; + } + } + else + m_bUseFrame = LTFALSE; +} + +void CLTGUIEditCtrl::SetMaxLength(uint16 nMaxLength) +{ + if (nMaxLength > kMaxLength) + nMaxLength = kMaxLength; + m_nMaxLength = nMaxLength; + + if (m_pText && m_nMaxLength < m_pText->GetLength()) + { + SAFE_STRCPY(szString,m_pText->GetText()); + szString[m_nMaxLength] = '\0'; + m_pText->SetText(szString); + } +} + + +LTBOOL CLTGUIEditCtrl::OnLButtonUp(int x, int y) +{ + if (!IsOnMe(x,y)) return LTFALSE; + + LT_POLYGT4* pPolys = m_pText->GetPolys(); + uint16 nMax = m_pText->GetLength(); + + + uint16 nIndex = 0; + while (nIndex < nMax && x > pPolys[nIndex].verts[1].x) + nIndex++; + + m_nCaretPos = nIndex; + + return LTTRUE; +} + diff --git a/Jack/Libs/LTGUIMgr/ltguieditctrl.h b/Jack/Libs/LTGUIMgr/ltguieditctrl.h new file mode 100644 index 00000000..0be3163c --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguieditctrl.h @@ -0,0 +1,147 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIListCtrl.h +// +// PURPOSE : Control to handle text entry +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUIEDITCTRL_H_) +#define _LTGUIEDITCTRL_H_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "ltguictrl.h" + +// FilterCallback functions are used to perform custom input filtering +// they take an incoming character and return a processed character +// return null to indicate the char should be ingnored. +typedef unsigned char (*FilterCallbackFn)(unsigned char c); + + +class CLTGUIEditCtrl : public CLTGUICtrl +{ +public: + CLTGUIEditCtrl(); + virtual ~CLTGUIEditCtrl(); + + // Create the control + // pClientDE - Pointer to the client interface. + // nCommandID - The command ID which is sent when "enter" is pressed. + // pFont - The font to use for rendering the strings. + // nMaxLength - The size of the buffer to store the string in. + // pMessageCtrl - control which receives messages when the "enter" key is pressed. + // pStringValue - pointer to the string to be modified in UpdateData. + virtual LTBOOL Create ( ILTClient *pLTClient, uint32 nCommandID, CUIFont *pFont, uint8 nFontSize, + uint16 nMaxLength, CLTGUICommandHandler *pCommandHandler = LTNULL, + char *pStringValue=LTNULL, uint32 nParam1 = 0, uint32 nParam2 = 0 ); + + // Destroys the control + void Destroy ( ); + + // Update data + void UpdateData(LTBOOL bSaveAndValidate=LTTRUE); + + // Render the control + void Render (); + + // Set the font + LTBOOL SetFont ( CUIFont *pFont, uint8 nFontSize ); + + // Set/Get the text for the edit string + void SetText(const char *pString); + const char* GetText(); + + virtual void SetFixedWidth(uint16 nWidth, LTBOOL bUseFrame = LTFALSE); + virtual uint16 GetFixedWidth() {return m_nFixedWidth;} + + uint16 GetMaxLength() {return m_nMaxLength;} + void SetMaxLength(uint16 nMaxLength); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + + // Width/Height calculations + uint16 GetWidth ( ) {return m_nWidth;} + uint16 GetHeight ( ) {return m_nHeight;} + + // Handles a key press + LTBOOL HandleKeyDown(int key, int rep); + LTBOOL HandleChar(unsigned char c); + + // Handle the Enter key being pressed + virtual LTBOOL OnEnter ( ); + virtual LTBOOL OnLButtonUp(int x, int y); + + // Set the caret usage (default is no caret) + void EnableCaret(LTBOOL bUseCaret, float fToggleTime = 0.333f, uint32 argbColor = 0xFFFFFFFF); + + static const uint16 kMaxLength; + + // Set the character input mode + enum eInputMode + { + kInputAll, + kInputAlphaNumeric, + kInputAlphaOnly, + kInputNumberOnly, + kInputFileFriendly + }; + void SetInputMode(eInputMode mode) { m_eInputMode = mode;} + + //the input filter is processed before the inputmode filter + void SetInputFilter(FilterCallbackFn pFn) {m_pFn = pFn;} + + +protected: + // Add a character to the end + void AddCharacter(char c); + + // Remove a character from the end + void RemoveCharacter(); + + // Should the caret be rendered + LTBOOL IsCaretOn(); + + virtual void CalculateSize(); + +protected: + ILTClient *m_pLTClient; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + CUIFormattedPolyString* m_pDescription; + CUIFormattedPolyString* m_pText; + + uint16 m_nMaxLength; // The maximum length for the string + uint16 m_nCaretPos; + char *m_pStringValue; // The pointer that is updated in the UpdateData function + + LTBOOL m_bCaretEnabled; + uint32 m_argbCaretColor; + float m_fCaretTime; + LT_POLYF4 m_Caret; + LT_POLYF4 m_Frame[4]; + + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The height of the control + + uint16 m_nFixedWidth; + LTBOOL m_bUseFrame; + + eInputMode m_eInputMode; + + // Receives a message when the "enter" key is pressed. + CLTGUICommandHandler *m_pCommandHandler; + + FilterCallbackFn m_pFn; +}; + +#endif // !defined(_LTGUIEDITCTRL_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguiframe.cpp b/Jack/Libs/LTGUIMgr/ltguiframe.cpp new file mode 100644 index 00000000..7069f556 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguiframe.cpp @@ -0,0 +1,286 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIFrame.cpp +// +// PURPOSE : Simple resizeable frame control +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIFrame::CLTGUIFrame() +{ + + m_hFrame = LTNULL; + + m_nWidth = 0; + m_nHeight = 0; + m_nBaseWidth = 0; + m_nBaseHeight = 0; + + m_bEnabled = LTFALSE; + + m_bSimpleStretch = LTFALSE; + + m_fTextureScale = 1.0f; + + m_argbColor = 0xFFFFFFFF; + + memset(m_Poly,0,sizeof(m_Poly)); + memset(m_Border,0,sizeof(m_Border)); + + m_nBorderWidth = 0; + m_BorderColor = 0xFF000000; + +} + +CLTGUIFrame::~CLTGUIFrame() +{ + Destroy(); +} + +// Create the control +LTBOOL CLTGUIFrame::Create ( HTEXTURE hFrame, uint16 nWidth, uint16 nHeight, LTBOOL bSimpleStretch) +{ + if (!hFrame || !nHeight || !nWidth) return LTFALSE; + + m_hFrame = hFrame; + + m_nBaseWidth = nWidth; + m_nBaseHeight = nHeight; + m_nWidth = nWidth; + m_nHeight = nHeight; + + m_bSimpleStretch = bSimpleStretch; + m_argbColor = 0xFFFFFFFF; + + InitPolies(); + m_bCreated=LTTRUE; + + return LTTRUE; +} + +LTBOOL CLTGUIFrame::Create (uint32 argbColor, uint16 nWidth, uint16 nHeight) +{ + if (!nHeight || !nWidth) return LTFALSE; + + m_hFrame = LTNULL; + + m_nBaseWidth = nWidth; + m_nBaseHeight = nHeight; + m_nWidth = nWidth; + m_nHeight = nHeight; + + m_bSimpleStretch = LTTRUE; + + m_argbColor = argbColor; + + + InitPolies(); + m_bCreated=LTTRUE; + + return LTTRUE; + +} + +// Render the control +void CLTGUIFrame::Render() +{ + // Sanity checks... + if (!IsVisible()) return; + + g_pDrawPrim->SetTexture(m_hFrame); + + // set up the render state + SetRenderState(); + + // draw our button + if (m_bSimpleStretch) + { + g_pDrawPrim->DrawPrim(m_Poly); + } + else + { + g_pDrawPrim->DrawPrim(m_Poly,9); + } + + if (m_nBorderWidth) + { + for (int f = 0;f < 4; ++f) + g_pDrawPrim->SetRGBA(&m_Border[f],m_BorderColor); + + // draw our frames + g_pDrawPrim->DrawPrim(m_Border,4); + } + + +} + +void CLTGUIFrame::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + ScalePolies(); +} + +void CLTGUIFrame::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nWidth = (uint16)((float)m_nBaseWidth * m_fScale); + m_nHeight = (uint16)((float)m_nBaseHeight * m_fScale); + ScalePolies(); + +} + +void CLTGUIFrame::SetTextureScale(float fScale) +{ + m_fTextureScale = fScale; + ScalePolies(); + +} + +void CLTGUIFrame::InitPolies() +{ + ScalePolies(); + + if (m_bSimpleStretch) + { + SetupQuadUVs(m_Poly[0], m_hFrame, 0.0f, 0.0f, 1.0f, 1.0f); + g_pDrawPrim->SetRGBA(&m_Poly[0],m_argbColor); + } + else + { + float uv[4] = {0.0f, 0.25f, 0.75f, 1.0f}; + + + for (int r = 0; r < 3; r++) + { + for (int c = 0; c < 3; c++) + { + int i = r*3+c; + g_pDrawPrim->SetRGBA(&m_Poly[i],0xFFFFFFFF); + SetupQuadUVs(m_Poly[i], m_hFrame, uv[c], uv[r], uv[c+1] - uv[c], uv[r+1] - uv[r]); + } + } + } + + +} + +void CLTGUIFrame::ScalePolies() +{ + uint32 tw,th; + float fx = (float)m_pos.x; + float fy = (float)m_pos.y; + + if (m_bSimpleStretch) + { + float fw = (float)m_nWidth; + float fh = (float)m_nHeight; + g_pDrawPrim->SetXYWH(&m_Poly[0],fx,fy,fw,fh); + } + else + { + if (!m_hFrame) return; + g_pTexInterface->GetTextureDims(m_hFrame,tw,th); + float fw = (float)tw; + float fh = (float)th; + + float x[4] = {fx, fx+fw*0.25f, (fx+m_nWidth) - fw*0.25f, (fx+m_nWidth) }; + float y[4] = {fy, fy+fh*0.25f, (fy+m_nHeight) - fh*0.25f, (fy+m_nHeight) }; + + + for (int r = 0; r < 3; r++) + { + for (int c = 0; c < 3; c++) + { + int i = r*3+c; + g_pDrawPrim->SetXY4(&m_Poly[i],x[c],y[r],x[c+1],y[r],x[c+1],y[r+1],x[c],y[r+1]); + } + } + } + + float BorderW = ((float)m_nBorderWidth * m_fScale); + + //top + fx = (float)m_pos.x - BorderW; + fy = (float)m_pos.y - BorderW; + float fw = (float)m_nWidth + BorderW; + float fh = BorderW; + g_pDrawPrim->SetXYWH(&m_Border[0],fx,fy,fw,fh); + + //right + fx = (float)(m_pos.x + m_nWidth); + fy = (float)m_pos.y - BorderW; + fw = (float)BorderW; + fh = (float)GetHeight() + BorderW; + g_pDrawPrim->SetXYWH(&m_Border[1],fx,fy,fw,fh); + + //bottom + fx = (float)m_pos.x; + fy = (float)(m_pos.y + GetHeight()); + fw = (float)m_nWidth + BorderW; + fh = BorderW; + g_pDrawPrim->SetXYWH(&m_Border[2],fx,fy,fw,fh); + + //left + fx = (float)m_pos.x - BorderW; + fy = (float)m_pos.y; + fw = (float)BorderW; + fh = (float)GetHeight() + BorderW; + g_pDrawPrim->SetXYWH(&m_Border[3],fx,fy,fw,fh); + + +} + +void CLTGUIFrame::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + +} + + +void CLTGUIFrame::SetSize(uint16 nWidth, uint16 nHeight) +{ + m_nBaseWidth = nWidth; + m_nBaseHeight = nHeight; + m_nWidth = (uint16)((float)m_nBaseWidth * m_fScale); + m_nHeight = (uint16)((float)m_nBaseHeight * m_fScale); + ScalePolies(); +} + +void CLTGUIFrame::SetFrame(HTEXTURE hFrame) +{ + m_hFrame = hFrame; + m_argbColor = 0xFFFFFFFF; + InitPolies(); + ScalePolies(); +} + +void CLTGUIFrame::SetColor(uint32 argbColor) +{ + m_hFrame = LTNULL; + m_argbColor = argbColor; + g_pDrawPrim->SetRGBA(&m_Poly[0],m_argbColor); + ScalePolies(); +} + +// Sets the width of the frames's border, set to 0 to not show the frame +void CLTGUIFrame::SetBorder(uint8 nBorderWidth, uint32 nBorderColor) +{ + m_nBorderWidth = nBorderWidth; + m_BorderColor = nBorderColor; + ScalePolies(); +} diff --git a/Jack/Libs/LTGUIMgr/ltguiframe.h b/Jack/Libs/LTGUIMgr/ltguiframe.h new file mode 100644 index 00000000..7fc58bd6 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguiframe.h @@ -0,0 +1,73 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIFrame.h +// +// PURPOSE : Simple resizeable frame control +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_LTGUIFRAME_H_) +#define _LTGUIFRAME_H_ + + +class CLTGUIFrame : public CLTGUICtrl +{ +public: + CLTGUIFrame(); + virtual ~CLTGUIFrame(); + + // Create the control + LTBOOL Create (HTEXTURE hFrame, uint16 nWidth, uint16 nHeight, LTBOOL bSimpleStretch = LTFALSE); + LTBOOL Create (uint32 argbColor, uint16 nWidth, uint16 nHeight); + + + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + virtual void SetTextureScale(float fScale); + + void SetFrame(HTEXTURE hFrame); + void SetColor(uint32 argbColor); + void SetSize(uint16 nWidth, uint16 nHeight); + + // Sets the width of the frames's border, set to 0 to not show the frame + void SetBorder(uint8 nBorderWidth, uint32 nBorderColor); + + + // Render the control + virtual void Render (); + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return m_nWidth; } + virtual uint16 GetHeight ( ) { return m_nHeight; } + + +protected: + void SetRenderState(); + void InitPolies(); + void ScalePolies(); + +protected: + + LT_POLYGT4 m_Poly[9]; + HTEXTURE m_hFrame; // normal texture + uint32 m_argbColor; + LTFLOAT m_fTextureScale; + + LTBOOL m_bSimpleStretch; + + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The height of the control + uint16 m_nBaseWidth; // The unscaled width of the control + uint16 m_nBaseHeight; // The unscaled height of the control + + uint8 m_nBorderWidth; + uint32 m_BorderColor; + LT_POLYF4 m_Border[4]; + +}; + +#endif // _LTGUIFRAME_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguilargetext.cpp b/Jack/Libs/LTGUIMgr/ltguilargetext.cpp new file mode 100644 index 00000000..c98a4748 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguilargetext.cpp @@ -0,0 +1,503 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUILargeText.cp +// +// PURPOSE : Simple text control which may be used as a menu item. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "LTGUILargeText.h" + + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUILargeText::CLTGUILargeText() +{ + m_nFixedHeight = 0; + m_nNumLines = 0; + memset(m_nLineOffsets,0,sizeof(m_nLineOffsets)); + m_nFirstLine = kMaxNumLines+1; + m_nLastLine = kMaxNumLines+1; + m_nFrameWidth = 0; + memset(m_Frame,0,sizeof(m_Frame)); + + m_pUp = LTNULL; + m_pDown = LTNULL; + +} + +CLTGUILargeText::~CLTGUILargeText() +{ + Destroy(); +} + +// Create the control +LTBOOL CLTGUILargeText::Create ( const char *pText, CUIFont *pFont, uint8 nFontSize, LTIntPt ptTextSize ) +{ + if (!SetFont(pFont,nFontSize)) + { + return LTFALSE; + } + + if (!SetSize(ptTextSize)) + { + return LTFALSE; + } + + // Add the string + if (pText) + { + SetString(pText); + } + + + return LTTRUE; +} + +// Destroys the control +void CLTGUILargeText::Destroy ( ) +{ + CLTGUITextCtrl::Destroy ( ); + if (m_pUp) + { + debug_delete(m_pUp); + m_pUp = LTNULL; + } + if (m_pDown) + { + debug_delete(m_pDown); + m_pDown = LTNULL; + } + +} + + +LTBOOL CLTGUILargeText::SetSize(LTIntPt ptTextSize) +{ + if (ptTextSize.x < (m_nBaseFontSize * 2)) + return LTFALSE; + if (ptTextSize.y < m_nBaseFontSize) + return LTFALSE; + + SetFixedWidth(ptTextSize.x); + m_nFixedHeight = ptTextSize.y; + + CalculateSize(); + + return LTTRUE; +} + + +void CLTGUILargeText::CalculateSize() +{ + + m_nWidth = (uint16)(m_fScale * (float)m_nFixedWidth); + m_nHeight = (uint16)(m_fScale * (float)m_nFixedHeight); + + if (m_pUp) + m_nWidth += m_pUp->GetWidth(); + + float frameW = ((float)m_nFrameWidth * m_fScale); + + //top + float fx = (float)m_pos.x - frameW; + float fy = (float)m_pos.y - frameW; + float fw = (float)m_nWidth + frameW; + float fh = frameW; + g_pDrawPrim->SetXYWH(&m_Frame[0],fx,fy,fw,fh); + + //right + fx = (float)(m_pos.x + m_nWidth); + fy = (float)m_pos.y - frameW; + fw = (float)frameW; + fh = (float)m_nHeight + frameW; + g_pDrawPrim->SetXYWH(&m_Frame[1],fx,fy,fw,fh); + + //bottom + fx = (float)m_pos.x; + fy = (float)(m_pos.y + m_nHeight); + fw = (float)m_nWidth + frameW; + fh = frameW; + g_pDrawPrim->SetXYWH(&m_Frame[2],fx,fy,fw,fh); + + //left + fx = (float)m_pos.x - frameW; + fy = (float)m_pos.y; + fw = (float)frameW; + fh = (float)m_nHeight + frameW; + g_pDrawPrim->SetXYWH(&m_Frame[3],fx,fy,fw,fh); + + + CalculateLines(); +} + + +void CLTGUILargeText::CalculateLines() +{ + m_nNumLines = 0; + memset(m_nLineOffsets,0,sizeof(m_nLineOffsets)); + m_nFirstLine = kMaxNumLines+1; + m_nLastLine = kMaxNumLines+1; + + if (m_pString && m_pString->GetLength()) + { + LT_POLYGT4* pPolys = m_pString->GetPolys(); + + uint16 nPos = 0; + float fYPos = pPolys[nPos].verts[ 0 ].y; + m_nNumLines = 1; + m_nLineOffsets[0] = 0; + + //if the pos is in our rect, and we haven't found the first line yet, this is it + if (fYPos >= m_pos.y) + m_nFirstLine = 0; + + + + //while we have chars to test + while (nPos < m_pString->GetLength()) + { + //find the top of the char + float fTestY = pPolys[nPos].verts[ 0 ].y; + + //have started a new line? + if (fTestY > fYPos) + { + //if the pos is in our rect, and we haven't found the first line yet, this is it + if (fTestY >= m_pos.y && m_nFirstLine > kMaxNumLines) + m_nFirstLine = m_nNumLines; + + //if the os is past the bottom of our rect, and we haven't found the last line, this is it + if (fTestY+m_nFontSize >= (m_pos.y+m_nHeight) && m_nLastLine > kMaxNumLines) + m_nLastLine = m_nNumLines-1; + + fYPos = fTestY; + m_nLineOffsets[m_nNumLines] = nPos; + m_nNumLines++; + + + + if (m_nNumLines >= kMaxNumLines) + { + ASSERT(!"CLTGUILargeText::SetSize() : Too many lines."); + return; + } + + } + nPos++; + } + + //if we never ran past the bottom, the last line visible is the last line + if (m_nLastLine > kMaxNumLines) + m_nLastLine = m_nNumLines-1; + + } + +} + +// Render the control +void CLTGUILargeText::Render() +{ + // Sanity checks... + if (!IsVisible() || !m_pString) return; + + if (m_nFrameWidth) + { + // set up the render state + SetRenderState(); + + for (int f = 0;f < 4; ++f) + g_pDrawPrim->SetRGBA(&m_Frame[f],GetCurrentColor()); + + // draw our frames + g_pDrawPrim->DrawPrim(m_Frame,4); + } + + + uint32 argbColor=GetCurrentColor(); + m_pString->SetColor(argbColor); + + //if we know what lines to draw + if (m_nFirstLine <= kMaxNumLines) + { + //figure out the first char + uint16 nFirstChar = m_nLineOffsets[m_nFirstLine]; + uint16 nLastChar = m_pString->GetLength(); + + //if the last line drawn is not the last overall line, + // find the first char of the next line and step back one + if (m_nLastLine < (m_nNumLines-1)) + nLastChar = m_nLineOffsets[m_nLastLine+1]; + + // draw 'em + m_pString->Render(nFirstChar,nLastChar); + + if (m_pUp && m_nFirstLine > 0) + m_pUp->Render(); + if (m_pDown && m_nFirstLine < (m_nNumLines-1) ) + m_pDown->Render(); + + } +} + + +// Sets the width of the text's frame, set to 0 to not show the frame +void CLTGUILargeText::SetFrameWidth(uint8 nFrameWidth) +{ + m_nFrameWidth = nFrameWidth; + if (nFrameWidth) + { + CalculateSize(); + } +} + + +void CLTGUILargeText::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_NOCOLOROP); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_NOBLEND); + +} + +void CLTGUILargeText::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + + float line = 0; + if (m_nFirstLine <= kMaxNumLines) + { + line = (float)(m_nFirstLine * m_nFontSize); + } + + + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y+line); + } + + if (m_pUp) + { + LTIntPt pos = m_basePos; + pos.x += m_nFixedWidth; + m_pUp->SetBasePos(pos); + } + + if (m_pDown) + { + LTIntPt pos = m_basePos; + pos.x += m_nFixedWidth; + pos.y += (m_nFixedHeight - m_pDown->GetHeight()); + m_pDown->SetBasePos(pos); + } + +} + +void CLTGUILargeText::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + uint16 nWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + float line = 0; + if (m_nFirstLine <= kMaxNumLines) + { + line = (float)(m_nFirstLine * m_nFontSize); + } + + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y+line); + m_pString->SetCharScreenHeight(m_nFontSize); + m_pString->SetWrapWidth(nWidth); + } + if (m_pUp) + { + m_pUp->SetScale(m_fScale); + } + if (m_pDown) + { + m_pDown->SetScale(m_fScale); + } + + CalculateSize(); + +} + + +void CLTGUILargeText::SetIndent(uint16 nIndent) +{ + if (m_nFixedWidth) + { + ASSERT(m_nFixedWidth > nIndent); + if(m_nFixedWidth <= nIndent) + return; + } + + m_nIndent = nIndent; + + if (m_nFixedWidth && !m_bClip) + { + uint16 nTrueWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + if (m_pString) + { + m_pString->SetWrapWidth(nTrueWidth); + } + + } + + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + float line = 0; + if (m_nFirstLine <= kMaxNumLines) + { + line = (float)(m_nFirstLine * m_nFontSize); + } + + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y+line); + } + + CalculateSize(); + +} + + +LTBOOL CLTGUILargeText::OnUp ( ) +{ + if (!m_pString || m_nFirstLine == 0 || m_nFirstLine > kMaxNumLines) + return LTFALSE; + m_nFirstLine--; + float fi = (float)m_nIndent * m_fScale; + + LT_POLYGT4* pPolys = m_pString->GetPolys(); + + uint16 nPos = m_nLineOffsets[m_nFirstLine]; + float fYPos = pPolys[nPos].verts[ 0 ].y; + float fBasePos = pPolys[0].verts[ 0 ].y; + float offset = fYPos - fBasePos; + + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y-offset); + CalculateLines(); + + return LTTRUE; + + +} + +LTBOOL CLTGUILargeText::OnDown ( ) +{ + if (!m_pString || m_nFirstLine >= (m_nNumLines-1) ) + return LTFALSE; + m_nFirstLine++; + float fi = (float)m_nIndent * m_fScale; + + LT_POLYGT4* pPolys = m_pString->GetPolys(); + + uint16 nPos = m_nLineOffsets[m_nFirstLine]; + float fYPos = pPolys[nPos].verts[ 0 ].y; + float fBasePos = pPolys[0].verts[ 0 ].y; + float offset = fYPos - fBasePos; + + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y-offset); + CalculateLines(); + + return LTTRUE; +} + + +// Handles the left button down message +LTBOOL CLTGUILargeText::OnLButtonDown(int x, int y) +{ + // Get the control that the click was on + if (m_pUp && m_pUp->IsOnMe(x,y)) + { + m_pUp->Select(LTTRUE); + return LTTRUE; + } + if (m_pDown && m_pDown->IsOnMe(x,y)) + { + m_pDown->Select(LTTRUE); + return LTTRUE; + } + + return LTFALSE; +} + +// Handles the left button up message +LTBOOL CLTGUILargeText::OnLButtonUp(int x, int y) +{ + // Get the control that the click was on + if (m_pUp && m_pUp->IsOnMe(x,y) && m_pUp->IsSelected()) + { + m_pUp->Select(LTFALSE); + return OnUp(); + } + if (m_pDown && m_pDown->IsOnMe(x,y) && m_pDown->IsSelected()) + { + m_pDown->Select(LTFALSE); + return OnDown(); + } + + return LTFALSE; +} + +// Handles the mouse move message +LTBOOL CLTGUILargeText::OnMouseMove(int x, int y) +{ + if (m_pUp && !m_pUp->IsOnMe(x,y)) + m_pUp->Select(LTFALSE); + if (m_pDown && !m_pDown->IsOnMe(x,y)) + m_pDown->Select(LTFALSE); + + return LTFALSE; +} + + + +LTBOOL CLTGUILargeText::UseArrows(LTFLOAT fTextureScale, HTEXTURE hUpNormal, + HTEXTURE hUpSelected, HTEXTURE hDownNormal, HTEXTURE hDownSelected) +{ + if (m_pUp) + { + debug_delete(m_pUp); + m_pUp = LTNULL; + } + if (m_pDown) + { + debug_delete(m_pDown); + m_pDown = LTNULL; + } + + + m_pUp = debug_new(CLTGUIButton); + m_pUp->Create(LTNULL,LTNULL,hUpNormal,hUpSelected); + m_pUp->SetTextureScale(fTextureScale); + LTIntPt pos = m_basePos; + pos.x += m_nFixedWidth; + m_pUp->SetBasePos(pos); + m_pUp->SetScale(m_fScale); + + m_pDown = debug_new(CLTGUIButton); + m_pDown->Create(LTNULL,LTNULL,hDownNormal,hDownSelected); + m_pDown->SetTextureScale(fTextureScale); + pos.y += (m_nFixedHeight - m_pDown->GetHeight()); + m_pDown->SetBasePos(pos); + m_pDown->SetScale(m_fScale); + + CalculateSize(); + + return LTTRUE; +} + diff --git a/Jack/Libs/LTGUIMgr/ltguilargetext.h b/Jack/Libs/LTGUIMgr/ltguilargetext.h new file mode 100644 index 00000000..cd4320c3 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguilargetext.h @@ -0,0 +1,100 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUILargeText.h +// +// PURPOSE : Simple text control which may be used as a menu item. +// +// (c) 2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_LTGUILARGETEXT_H_) +#define _LTGUILARGETEXT_H_ + + +// This control is designed to display large pieces of text which may need to word-wrap +// or scroll... it is not intended to be a menu item +class CLTGUILargeText : public CLTGUITextCtrl +{ +public: + CLTGUILargeText(); + virtual ~CLTGUILargeText(); + + // Create the control + // pText - The initial text that is displayed for this control. Pass in + // LTNULL if you do not want initial text. A copy of this text + // is made so the string may be discarded after making this call. + // pFont - The font to use for this string. + // nFontSize - The font size to use for this string. + // ptTextSize - The width and height of the control + LTBOOL Create ( const char *pText, CUIFont *pFont, uint8 nFontSize, LTIntPt ptTextSize); + + + // Destroys the control + virtual void Destroy ( ); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + + virtual void SetIndent(uint16 nIndent); + + virtual LTBOOL SetSize(LTIntPt ptTextSize); + + // Render the control + virtual void Render (); + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return m_nWidth; } + virtual uint16 GetHeight ( ) { return m_nHeight; } + + // Sets the width of the list's frame, set to 0 to not show the frame + void SetFrameWidth(uint8 nFrameWidth); + LTBOOL UseArrows(LTFLOAT fTextureScale, HTEXTURE hUpNormal, HTEXTURE hUpSelected, + HTEXTURE hDownNormal, HTEXTURE hDownSelected); + + + // Commonly used keyboard messages + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + + // Mouse messages + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnMouseMove(int x, int y); + + + enum Consts + { + kMaxNumLines = 64 + }; + +protected: + void SetRenderState(); + + virtual void CalculateSize(); + virtual void CalculateLines(); + +protected: + + uint16 m_nFirstLine; + uint16 m_nLastLine; + uint16 m_nNumLines; + uint16 m_nLineOffsets[kMaxNumLines]; + uint16 m_nFixedHeight; + + uint16 m_nLBDownSel; // The control index that is selected from the current left button message + uint16 m_nRBDownSel; // The control index that is selected from the current right button message + + uint8 m_nFrameWidth; + LT_POLYF4 m_Frame[4]; + + CLTGUIButton* m_pUp; + CLTGUIButton* m_pDown; + + + +}; + +#endif // _LTGUILARGETEXT_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguilistctrl.cpp b/Jack/Libs/LTGUIMgr/ltguilistctrl.cpp new file mode 100644 index 00000000..16c62a78 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguilistctrl.cpp @@ -0,0 +1,988 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIListCtrl.cpp +// +// PURPOSE : Control which maintains a scrolling list of other controls. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "ltguilistctrl.h" +#include "vkdefs.h" + +const uint16 CLTGUIListCtrl::kMaxNumControls = 0xFFFE; +const uint16 CLTGUIListCtrl::kNoSelection = 0xFFFF; + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIListCtrl::CLTGUIListCtrl() +{ + m_nCurrentIndex = 0; + m_nFirstShown = 0; + m_nLastShown = kNoSelection; + m_nHeight = 100; + m_nItemSpacing = 0; + m_nLBDownSel = kNoSelection; + m_nRBDownSel = kNoSelection; + m_bNeedsRecalculation = LTTRUE; + m_bScrollWrap = LTTRUE; + m_bScrollByPage = LTFALSE; + m_nFrameWidth = 0; + + m_pUp = LTNULL; + m_pDown = LTNULL; + m_nArrowOffset = 0; + + m_indent.x = 0; + m_indent.y = 0; + + memset(m_Frame,0,sizeof(m_Frame)); + +} + +CLTGUIListCtrl::~CLTGUIListCtrl() +{ + Destroy(); +} + +// Creation +LTBOOL CLTGUIListCtrl::Create (uint16 nHeight ) +{ + + m_nHeight=nHeight; + m_bCreated=LTTRUE; + + return LTTRUE; +} + +// Destroy the control +void CLTGUIListCtrl::Destroy ( ) +{ + RemoveAll(); + if (m_pUp) + { + debug_delete(m_pUp); + m_pUp = LTNULL; + } + if (m_pDown) + { + debug_delete(m_pDown); + m_pDown = LTNULL; + } + + m_bCreated=LTFALSE; +} + +// Render the control +void CLTGUIListCtrl::Render ( ) +{ + if (!IsVisible()) return; + + if (m_bNeedsRecalculation) + CalculatePositions(); + + if (m_nFrameWidth) + { + // set up the render state + SetRenderState(); + + for (int f = 0;f < 4; ++f) + g_pDrawPrim->SetRGBA(&m_Frame[f],GetCurrentColor()); + + // draw our frames + g_pDrawPrim->DrawPrim(m_Frame,4); + } + + + if (m_controlArray.size() > 0) + { + // Render the items unless they are off the control + for (uint16 i = m_nFirstShown; i <= m_nLastShown; i++ ) + { + if (m_controlArray[i]->IsVisible()) + m_controlArray[i]->Render (); + } + + if (m_pUp && m_bEnabled && m_nFirstShown > 0) + m_pUp->Render(); + if (m_pDown && m_bEnabled && m_nLastShown < (m_controlArray.size()-1) ) + m_pDown->Render(); + + } + + + +} + + +// Returns the height +uint16 CLTGUIListCtrl::GetHeight ( ) +{ + return (uint16) ((float)m_nHeight * m_fScale); +} + +// Returns the width +uint16 CLTGUIListCtrl::GetWidth ( ) +{ + if (m_bNeedsRecalculation) + CalculatePositions(); + return m_nWidth; +} + + +// Handle a keypress +LTBOOL CLTGUIListCtrl::HandleKeyDown(int key, int rep) +{ + if (key == VK_PRIOR) + return OnPageUp(); + if (key == VK_NEXT) + return OnPageDown(); + + if (CLTGUICtrl::HandleKeyDown(key, rep)) + { + return LTTRUE; + } + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->HandleKeyDown(key,rep); + return handled; + +} + +LTBOOL CLTGUIListCtrl::OnUp ( ) +{ + if (m_bScrollByPage) return OnPageUp(); + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnUp()) + return LTTRUE; + + uint32 sel = m_nCurrentIndex; + return (sel != PreviousSelection() || m_bScrollWrap); +} + +LTBOOL CLTGUIListCtrl::OnDown ( ) +{ + if (m_bScrollByPage) return OnPageDown(); + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnDown()) + return LTTRUE; + + uint32 sel = m_nCurrentIndex; + return (sel != NextSelection() || m_bScrollWrap); +} + + +LTBOOL CLTGUIListCtrl::OnLeft ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnLeft(); + return handled; +} + +LTBOOL CLTGUIListCtrl::OnRight ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnRight(); + return handled; +} + +LTBOOL CLTGUIListCtrl::OnEnter ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnEnter(); + return handled; +} + +LTBOOL CLTGUIListCtrl::OnPageUp ( ) +{ + if (m_nFirstShown == 0) return LTFALSE; + uint16 nSel = m_nFirstShown; + + int nHeight = m_nHeight - (2 * m_indent.y); + + int h = (int) ( (float)m_controlArray[nSel]->GetHeight()/m_fScale ); + while (nHeight >= h && nSel > 0) + { + //get the control's height (but unscale it) + nHeight -= h; + nSel--; + h = (int) ( (float)m_controlArray[nSel]->GetHeight()/m_fScale ); + + if (nHeight >= h) + nHeight -= m_nItemSpacing; + + } + + + m_nFirstShown = nSel; + SetSelection(nSel); + m_bNeedsRecalculation = LTTRUE; + + return LTTRUE; +} + +LTBOOL CLTGUIListCtrl::OnPageDown ( ) +{ + if (m_controlArray.size() == 0) return LTFALSE; + if (m_nLastShown >= (m_controlArray.size()-1)) return LTFALSE; + + SetSelection(m_nLastShown+1); + m_nFirstShown = m_nCurrentIndex; + m_bNeedsRecalculation = LTTRUE; + + return LTTRUE; + +} + +// Handles the left button down message +LTBOOL CLTGUIListCtrl::OnLButtonDown(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + if (pCtrl == m_pUp) + { + m_nLBDownSel=kNoSelection; + m_pUp->Select(LTTRUE); + return LTTRUE; + } + if (pCtrl == m_pDown) + { + m_nLBDownSel=kNoSelection; + m_pDown->Select(LTTRUE); + return LTTRUE; + } + + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // Select the control + SetSelection(nControlIndex); + + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + m_nLBDownSel=nControlIndex; + m_controlArray[nControlIndex]->OnLButtonDown(x,y); + return LTTRUE; + } + else + { + // This clears the index for what item was selected from a mouse down message + m_nLBDownSel=kNoSelection; + + return LTFALSE; + } +} + +// Handles the left button up message +LTBOOL CLTGUIListCtrl::OnLButtonUp(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + if (pCtrl == m_pUp) + { + return OnUp(); + } + if (pCtrl == m_pDown) + { + return OnDown(); + } + + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // If the mouse is over the same control now as it was when the down message was called + // then send the "enter" message to the control. + if (nControlIndex == m_nLBDownSel) + { + return m_controlArray[nControlIndex]->OnLButtonUp(x,y); + } + } + else + { + m_nLBDownSel=kNoSelection; + } + return LTFALSE; +} + +// Handles the right button down message +LTBOOL CLTGUIListCtrl::OnRButtonDown(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + if (pCtrl == m_pUp) + { + return LTFALSE; + } + if (pCtrl == m_pDown) + { + return LTFALSE; + } + + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // Select the control + SetSelection(nControlIndex); + + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + m_nRBDownSel=nControlIndex; + m_controlArray[nControlIndex]->OnRButtonDown(x,y); + return LTTRUE; + } + else + { + // This clears the index for what item was selected from a mouse down message + m_nLBDownSel=kNoSelection; + + return LTFALSE; + } +} + +// Handles the right button up message +LTBOOL CLTGUIListCtrl::OnRButtonUp(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + if (pCtrl == m_pUp) + { + return LTFALSE; + } + if (pCtrl == m_pDown) + { + return LTFALSE; + } + + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // If the mouse is over the same control now as it was when the down message was called + // then send the "enter" message to the control. + if (nControlIndex == m_nRBDownSel) + { + return m_controlArray[nControlIndex]->OnRButtonUp(x,y); + } + } + else + { + m_nRBDownSel=kNoSelection; + } + return LTFALSE; +} + +// Handles the mouse move message +LTBOOL CLTGUIListCtrl::OnMouseMove(int x, int y) +{ + uint16 nControlUnderPoint=0; + + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlUnderPoint); + + if(pCtrl) + { + if(m_pUp && m_pDown) + { + if (pCtrl == m_pUp) + { + bool bRV = !m_pUp->IsSelected(); + m_pUp->Select(LTTRUE); + m_pDown->Select(LTFALSE); + return bRV; + } + else if (pCtrl == m_pDown) + { + bool bRV = !m_pDown->IsSelected(); + m_pUp->Select(LTFALSE); + m_pDown->Select(LTTRUE); + return bRV; + } + else + { + m_pUp->Select(LTFALSE); + m_pDown->Select(LTFALSE); + } + } + + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + pCtrl->OnMouseMove(x,y); + + if (GetSelectedIndex() != nControlUnderPoint) + { + SetSelection(nControlUnderPoint); + + return LTTRUE; + } + } + + return LTFALSE; +} + +// Add a control the the array of controls +uint16 CLTGUIListCtrl::AddControl ( CLTGUICtrl *pControl ) +{ + ASSERT(pControl); + m_controlArray.push_back(pControl); + + if (!m_bEnabled) + pControl->Enable(LTFALSE); + + if ( m_controlArray.size() > 1 && (m_controlArray.size()-1) == m_nCurrentIndex ) + { + m_controlArray[m_nCurrentIndex]->Select(LTTRUE); + } + + m_bNeedsRecalculation = LTTRUE; + return m_controlArray.size()-1; +} + +// Remove a control +void CLTGUIListCtrl::RemoveControl ( CLTGUICtrl *pControl, LTBOOL bDelete) +{ + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end() && (*iter) != pControl) + iter++; + + if (iter != m_controlArray.end()) + { + if (bDelete) + debug_delete(*iter); + m_controlArray.erase(iter); + m_bNeedsRecalculation = LTTRUE; + } +} + +// Remove a control +void CLTGUIListCtrl::RemoveControl ( uint16 nIndex, LTBOOL bDelete ) +{ + if (nIndex >= m_controlArray.size()) + return; + + ControlArray::iterator iter = m_controlArray.begin() + nIndex; + if (bDelete) + debug_delete(*iter); + m_controlArray.erase(iter); + m_bNeedsRecalculation = LTTRUE; +} + +// Removes all of the controls +void CLTGUIListCtrl::RemoveAll ( LTBOOL bDelete ) +{ + if (bDelete) + { + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end()) + { + debug_delete(*iter); + iter++; + } + } + + m_controlArray.clear(); + m_bNeedsRecalculation = LTTRUE; +} + +// Return a control at a specific index +CLTGUICtrl *CLTGUIListCtrl::GetControl ( uint16 nIndex ) +{ + if (nIndex >= m_controlArray.size()) + return LTNULL; + + return m_controlArray[nIndex]; +} + +// Select a control +void CLTGUIListCtrl::ClearSelection() +{ + if (m_nCurrentIndex < m_controlArray.size() ) + { + m_controlArray[m_nCurrentIndex]->Select(LTFALSE); + } + m_nCurrentIndex = kNoSelection; +} + + +// Select a control +uint16 CLTGUIListCtrl::SetSelection( uint16 nIndex ) +{ + + if (nIndex >= m_controlArray.size() && nIndex != kNoSelection) + return m_nCurrentIndex; + + if (m_nCurrentIndex==nIndex) + { + if (m_nCurrentIndex < m_controlArray.size() ) + { + m_controlArray[m_nCurrentIndex]->Select(LTTRUE); + } + return m_nCurrentIndex; + } + + int nOldIndex=m_nCurrentIndex; + + if (m_nCurrentIndex < m_controlArray.size() ) + { + m_controlArray[m_nCurrentIndex]->Select(LTFALSE); + } + + + m_nCurrentIndex=nIndex; + + if (nIndex == kNoSelection) + return nIndex; + + m_controlArray[m_nCurrentIndex]->Select(LTTRUE); + + if (m_bNeedsRecalculation) + CalculatePositions(); + + + // Figure out if we should move the up or down + if ( m_nCurrentIndex < m_nFirstShown ) + { + m_nFirstShown = m_nCurrentIndex; + m_bNeedsRecalculation = LTTRUE; + } + else if ( m_nCurrentIndex > m_nLastShown ) + { + int nTop = m_basePos.y + m_indent.y; + int nBottom = (nTop + m_nHeight) - m_indent.y; + + int i = m_nCurrentIndex; + do + { + //get the control's height (but unscale it) + int h = (uint16) ( (float)m_controlArray[i]->GetHeight()/m_fScale ); + + nBottom -= h; + + if (nBottom > nTop) + { + i--; + nBottom -= m_nItemSpacing; + } + + + + } while (nBottom > nTop); + + m_nFirstShown = (i+1); + + m_bNeedsRecalculation = LTTRUE; + } + + return m_nCurrentIndex; + +} + +void CLTGUIListCtrl::CalculatePositions() +{ + int y = 0; + uint16 h = 0; + uint16 w = 0; + + m_nWidth = 0; + m_nLastShown = kNoSelection; + + uint16 nBaseWidth = 0; + if (m_pUp) + { + nBaseWidth = (uint16)((float)m_nArrowOffset * m_fScale) + m_pUp->GetWidth(); + m_nWidth = nBaseWidth; + } + + int nSpace = (int)(2.0f * m_fScale * (float)m_indent.x); + + //step through the controls + for (uint16 i = m_nFirstShown; i < m_controlArray.size(); i++ ) + { + if (!m_controlArray[i]->IsVisible()) continue; + + LTIntPt pos = m_basePos; + pos.x += m_indent.x; + pos.y += (y+m_indent.y); + m_controlArray[i]->SetBasePos(pos); + + //check the control's width + w = m_controlArray[i]->GetWidth() + nSpace; + if (w > m_nWidth) + m_nWidth = w; + + //get the control's height (but unscale it) + h = (uint16) ( (float)m_controlArray[i]->GetHeight()/m_fScale ); + + + //if we haven't identified the last shown control + //and the bottom of the control is beyond the height of the list + // the previous control is the last one that fit + if (m_nLastShown > m_controlArray.size() && (y+h) > (m_nHeight-m_indent.y)) + { + m_nLastShown = i-1; + } + + y += (h + m_nItemSpacing); + + } + + if (m_pUp && nBaseWidth < m_nWidth) + { + m_nArrowOffset = (uint16)((float)(m_nWidth - m_pUp->GetWidth()) / m_fScale); + LTIntPt pos = m_basePos; + pos.x += m_nArrowOffset; + m_pUp->SetBasePos(pos); + + pos.y += (m_nHeight - m_pDown->GetBaseHeight() ); + m_pDown->SetBasePos(pos); + + } + + + if (m_nLastShown > m_controlArray.size()) + { + m_nLastShown = m_controlArray.size()-1; + } + + float frameW = ((float)m_nFrameWidth * m_fScale); + + //top + float fx = (float)m_pos.x - frameW; + float fy = (float)m_pos.y - frameW; + float fw = (float)m_nWidth + frameW; + float fh = frameW; + g_pDrawPrim->SetXYWH(&m_Frame[0],fx,fy,fw,fh); + + //right + fx = (float)(m_pos.x + m_nWidth); + fy = (float)m_pos.y - frameW; + fw = (float)frameW; + fh = (float)GetHeight() + frameW; + g_pDrawPrim->SetXYWH(&m_Frame[1],fx,fy,fw,fh); + + //bottom + fx = (float)m_pos.x; + fy = (float)(m_pos.y + GetHeight()); + fw = (float)m_nWidth + frameW; + fh = frameW; + g_pDrawPrim->SetXYWH(&m_Frame[2],fx,fy,fw,fh); + + //left + fx = (float)m_pos.x - frameW; + fy = (float)m_pos.y; + fw = (float)frameW; + fh = (float)GetHeight() + frameW; + g_pDrawPrim->SetXYWH(&m_Frame[3],fx,fy,fw,fh); + + m_bNeedsRecalculation = LTFALSE; +} + +// Gets the index of the control that is under the specific screen point. +// Returns FALSE if there isn't one under the specified point. +CLTGUICtrl *CLTGUIListCtrl::GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex) +{ + ASSERT(pnIndex); + + if (m_pUp && (m_nFirstShown > 0) && m_pUp->IsOnMe(xPos,yPos)) + { + *pnIndex=kNoSelection; + return m_pUp; + } + + if (m_pDown && (m_nLastShown < (m_controlArray.size()-1)) && m_pDown->IsOnMe(xPos,yPos)) + { + *pnIndex=kNoSelection; + return m_pDown; + } + + //alright, so the user didn't click on either the up or down arrows, but lets see if they + //are in the scrollbar gutter, because if they are, we shouldn't allow them to + if(m_pUp && m_pDown) + { + //see if the point is in the rectangle that is left of the arrows + int nLeft = LTMIN(m_pUp->GetPos().x, m_pDown->GetPos().x); + + if(xPos >= nLeft) + { + //we are in the scrollbar gutter, don't allow the user to select a list item + *pnIndex=kNoSelection; + return NULL; + } + } + + //no items + if (m_nLastShown >= m_controlArray.size()) return LTNULL; + + // See if the user clicked on any of the controls. + int i; + for (i=m_nFirstShown; i <= m_nLastShown; i++) + { + // Check to see if the click is in the bounding box for the control + if (m_controlArray[i]->IsOnMe(xPos,yPos)) + { + *pnIndex=i; + + return m_controlArray[i]; + } + } + + return LTNULL; +} + +uint16 CLTGUIListCtrl::NextSelection() +{ + uint16 select = m_nCurrentIndex; + if (select == kNoSelection) + select = m_controlArray.size(); + uint16 oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + select++; + if (select >= m_controlArray.size()) + { + if (m_bScrollWrap) + select = 0; + else + { + select = m_controlArray.size() - 1; + oldSelect = select; + } + + } + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nCurrentIndex; + + return SetSelection(select); + +} + +uint16 CLTGUIListCtrl::PreviousSelection() +{ + uint16 select = m_nCurrentIndex; + if (select == kNoSelection) + select = 0; + uint16 oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + if (select == 0) + { + if (m_bScrollWrap) + select = m_controlArray.size()-1; + else + { + select = 0; + oldSelect = select; + } + } + else + select--; + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nCurrentIndex; + + return SetSelection(select); + +} + +void CLTGUIListCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + m_bNeedsRecalculation = LTTRUE; + + if (m_pUp) + { + LTIntPt pos = m_basePos; + pos.x += m_nArrowOffset; + m_pUp->SetBasePos(pos); + } + + if (m_pDown) + { + LTIntPt pos = m_basePos; + pos.x += m_nArrowOffset; + pos.y += (m_nHeight - m_pDown->GetBaseHeight() ); + m_pDown->SetBasePos(pos); + } +} + + +void CLTGUIListCtrl::SetScale(float fScale) +{ + m_pos.x = (int)(fScale * (float)m_basePos.x); + m_pos.y = (int)(fScale * (float)m_basePos.y); + m_fScale = fScale; + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->SetScale(m_fScale); + } + if (m_pUp) + { + m_pUp->SetScale(m_fScale); + } + if (m_pDown) + { + m_pDown->SetScale(m_fScale); + } + m_bNeedsRecalculation = LTTRUE; +} + +//when the list is selected/deselected +void CLTGUIListCtrl::OnSelChange() +{ + if (IsSelected()) + SetSelection(0); + else + { + if (m_pUp) + m_pUp->Select(LTFALSE); + if (m_pDown) + m_pDown->Select(LTFALSE); + ClearSelection(); + } +} + + +LTBOOL CLTGUIListCtrl::UseArrows(uint16 xOffset, LTFLOAT fTextureScale, HTEXTURE hUpNormal, + HTEXTURE hUpSelected, HTEXTURE hDownNormal, HTEXTURE hDownSelected) +{ + if (m_pUp) + { + debug_delete(m_pUp); + m_pUp = LTNULL; + } + if (m_pDown) + { + debug_delete(m_pDown); + m_pDown = LTNULL; + } + + m_nArrowOffset = xOffset; + + m_pUp = debug_new(CLTGUIButton); + m_pUp->Create(LTNULL,LTNULL,hUpNormal,hUpSelected); + m_pUp->SetTextureScale(fTextureScale); + LTIntPt pos = m_basePos; + pos.x += m_nArrowOffset; + m_pUp->SetBasePos(pos); + m_pUp->SetScale(m_fScale); + + m_pDown = debug_new(CLTGUIButton); + m_pDown->Create(LTNULL,LTNULL,hDownNormal,hDownSelected); + m_pDown->SetTextureScale(fTextureScale); + m_pDown->SetScale(m_fScale); + pos.y += (m_nHeight - m_pDown->GetBaseHeight() ); + m_pDown->SetBasePos(pos); + + + + return LTTRUE; +} + + +// Sets the width of the list's frame, set to 0 to not show the frame +void CLTGUIListCtrl::SetFrameWidth(uint8 nFrameWidth) +{ + m_nFrameWidth = nFrameWidth; + if (nFrameWidth) + { + m_bNeedsRecalculation = LTTRUE; + } +} + + + +void CLTGUIListCtrl::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_NOCOLOROP); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_NOBLEND); + +} + + +void CLTGUIListCtrl::Enable ( LTBOOL bEnabled ) +{ + CLTGUICtrl::Enable (bEnabled); + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->Enable (bEnabled); + } + if (m_pUp) + { + m_pUp->Enable (bEnabled); + } + if (m_pDown) + { + m_pDown->Enable (bEnabled); + } + +} + + +// Update data +void CLTGUIListCtrl::UpdateData (LTBOOL bSaveAndValidate) +{ + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->UpdateData(bSaveAndValidate); + } + +} + +uint32 CLTGUIListCtrl::GetHelpID() +{ + if (m_nHelpID) + return m_nHelpID; + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + return pCtrl->GetHelpID(); + + return 0; +} diff --git a/Jack/Libs/LTGUIMgr/ltguilistctrl.h b/Jack/Libs/LTGUIMgr/ltguilistctrl.h new file mode 100644 index 00000000..49b2faa9 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguilistctrl.h @@ -0,0 +1,157 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIListCtrl.h +// +// PURPOSE : Control which maintains a scrolling list of other controls. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUILISTCTRL_H_) +#define _LTGUILISTCTRL_H_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +class CLTGUIButton; + +class CLTGUIListCtrl : public CLTGUICtrl +{ +public: + CLTGUIListCtrl(); + virtual ~CLTGUIListCtrl(); + + // Creation + LTBOOL Create (uint16 nHeight ); + LTBOOL UseArrows(uint16 xOffset, LTFLOAT fTextureScale, HTEXTURE hUpNormal, HTEXTURE hUpSelected, + HTEXTURE hDownNormal, HTEXTURE hDownSelected); + + + // Enable/Disable the control + virtual void Enable ( LTBOOL bEnabled ); + + + // Destroy the control + void Destroy ( ); + + // Render the control + void Render (); + + // Width/Height calculations + uint16 GetWidth ( ); + uint16 GetHeight ( ); + + // Handle a keypress + LTBOOL HandleKeyDown(int key, int rep); + + // Commonly used keyboard messages + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + virtual LTBOOL OnLeft ( ); + virtual LTBOOL OnRight ( ); + virtual LTBOOL OnEnter ( ); + + LTBOOL OnPageUp ( ); + LTBOOL OnPageDown ( ); + + // Mouse messages + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnRButtonDown(int x, int y); + virtual LTBOOL OnRButtonUp(int x, int y); + virtual LTBOOL OnMouseMove(int x, int y); + + // Set the number of pixels between items + void SetItemSpacing ( int nSpacing ) { m_nItemSpacing=nSpacing; m_bNeedsRecalculation = LTTRUE;} + + // Sets the height of the listbox + void SetHeight(uint16 nHeight) { m_nHeight=nHeight; m_bNeedsRecalculation = LTTRUE;} + + // Sets the width of the list's frame, set to 0 to not show the frame + void SetFrameWidth(uint8 nFrameWidth); + + // Add/Remove controls to the array + static const uint16 kMaxNumControls; + static const uint16 kNoSelection; + uint16 AddControl ( CLTGUICtrl *pControl ); + void RemoveControl ( CLTGUICtrl *pControl, LTBOOL bDelete = LTTRUE ); + void RemoveControl ( uint16 nIndex, LTBOOL bDelete = LTTRUE ); + void RemoveAll(LTBOOL bDelete = LTTRUE ); + uint16 GetNumControls ( ) { return m_controlArray.size(); } + + CLTGUICtrl *GetControl ( uint16 nIndex ); + + + //when list is selected/deselected + void OnSelChange(); + + // Update data + virtual void UpdateData ( LTBOOL bSaveAndValidate = LTTRUE ); + + + //select/deslect items in list + uint16 SetSelection( uint16 nIndex ); + void ClearSelection(); + + + uint16 GetSelectedIndex ( ) { return m_nCurrentIndex; } + CLTGUICtrl *GetSelectedControl ( ) { return GetControl(m_nCurrentIndex); } + + uint16 PreviousSelection(); + uint16 NextSelection(); + + uint16 GetLastShown ( ); + uint16 GetStartIndex ( ) { return m_nFirstShown; } + void SetStartIndex ( uint16 nIndex ) { m_nFirstShown=nIndex; m_bNeedsRecalculation = LTTRUE;} + + // Gets the index of the control that is under the specific screen point. + // Returns FALSE if there isn't one under the specified point. + CLTGUICtrl *GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex); + + virtual void SetIndent(LTIntPt indent) { m_indent = indent; m_bNeedsRecalculation = LTTRUE;} + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + void SetScrollWrap(LTBOOL bWrap) {m_bScrollWrap = bWrap;} + void SetScrollByPage(LTBOOL bByPage) {m_bScrollByPage = bByPage;} + + void CalculatePositions(); + + virtual uint32 GetHelpID(); + +protected: + + void SetRenderState(); + + +protected: + int m_nItemSpacing; // The number of pixels between items + uint16 m_nCurrentIndex; // Selected item + uint16 m_nFirstShown; // First item displayed on the screen + uint16 m_nLastShown; // First item displayed on the screen + uint16 m_nHeight; // Height of the control + uint16 m_nWidth; // Width of the control + uint16 m_nLBDownSel; // The control index that is selected from the current left button message + uint16 m_nRBDownSel; // The control index that is selected from the current right button message + + + LTIntPt m_indent; + + uint8 m_nFrameWidth; + LT_POLYF4 m_Frame[4]; + + LTBOOL m_bNeedsRecalculation; + LTBOOL m_bScrollWrap; + LTBOOL m_bScrollByPage; // scroll by pages rather than by individual items + + ControlArray m_controlArray; + + CLTGUIButton* m_pUp; + CLTGUIButton* m_pDown; + uint16 m_nArrowOffset; + +}; + +#endif // !defined(_LTGUILISTCTRL_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguimgr.h b/Jack/Libs/LTGUIMgr/ltguimgr.h new file mode 100644 index 00000000..db366353 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguimgr.h @@ -0,0 +1,58 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIMgr.h +// +// PURPOSE : Shared header for the library of LTGUI controls +// +// (c) 1997-2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_LTGUIMGR_H_) +#define _LTGUIMGR_H_ + + +#include "BuildDefines.h" +#include "lithtech.h" +#include "iltfontmanager.h" + +//TO2 specific +#include "..\..\shared\DebugNew.h" + +#pragma warning( disable : 4786 ) +#include + +typedef std::vector PStringArray; +typedef std::vector FPStringArray; + +//base classes +#include "..\ltguimgr\ltguicommandhandler.h" +#include "..\ltguimgr\ltguictrl.h" +typedef std::vector ControlArray; + +//basic control classes +#include "..\ltguimgr\ltguitextitemctrl.h" +#include "..\ltguimgr\ltguibutton.h" +#include "..\ltguimgr\ltguicyclectrl.h" +#include "..\ltguimgr\ltguitoggle.h" +#include "..\ltguimgr\ltguislider.h" +#include "..\ltguimgr\ltguicolumnctrl.h" +#include "..\ltguimgr\ltguiframe.h" +#include "..\ltguimgr\ltguieditctrl.h" +#include "..\ltguimgr\ltguilargetext.h" + +//container control classes +#include "..\ltguimgr\ltguiwindow.h" +#include "..\ltguimgr\ltguilistctrl.h" + + +//these are defined in the module that links +extern ILTDrawPrim* g_pDrawPrim; +extern ILTFontManager* g_pFontManager; +extern ILTTexInterface* g_pTexInterface; + +//utility functions for handling UV coordinates +#include "..\ltguimgr\ltquaduvutils.h" + +#endif // _LTGUIMGR_H_ diff --git a/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj b/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj new file mode 100644 index 00000000..0cca6e1b --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj.vspscc b/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj.vspscc new file mode 100644 index 00000000..e72c2c3c --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguimgr60.vcproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "file:C:\\proj\\to2\\source\\Game\\Libs\\LTGUIMgr\\ltguimgr60.vcproj" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" +} diff --git a/Jack/Libs/LTGUIMgr/ltguislider.cpp b/Jack/Libs/LTGUIMgr/ltguislider.cpp new file mode 100644 index 00000000..5a73d281 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguislider.cpp @@ -0,0 +1,559 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUISlider.cpp +// +// PURPOSE : Control to display a full/empty style slider bar. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" + + +namespace +{ + enum eBarElements + { + eFull = 0, + eEmpty, + eLeft, + eRight + }; +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUISlider::CLTGUISlider() +{ + m_pText = LTNULL; + m_pNumbers = LTNULL; + + m_pFont = LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + + m_bNumDisplay = 0; + m_pnValue = LTNULL; + m_nMinSlider = 0; + m_nMaxSlider = 10; + m_nSliderPos = 0; + m_nSliderIncrement = 1; + + m_nHeight = 0; + m_nWidth = 0; + m_nArrowWidth = 0; + m_nArrowHeight = 0; + + m_bOverLeft = LTFALSE; + m_bOverRight = LTFALSE; + + m_bDisplayOnly = false; + + memset(m_Bar,0,sizeof(m_Bar)); + + m_pCallback = NULL; + +} + +CLTGUISlider::~CLTGUISlider() +{ + Destroy(); +} + + +LTBOOL CLTGUISlider::Create ( const char *pText, uint32 nHelpID, CUIFont *pFont, uint8 nFontSize, HTEXTURE hBarTexture, + uint16 nBarOffset, uint16 nBarWidth, uint16 nBarHeight, int *pnValue) +{ + + if (!hBarTexture) return LTFALSE; + m_hBar = hBarTexture; + + m_pnValue = pnValue; + + if (!SetFont(pFont,nFontSize)) + { + return LTFALSE; + } + + m_nBarWidth = nBarWidth; + m_nBarHeight = nBarHeight; + m_nBarOffset = nBarOffset; + + uint32 w,h; + g_pTexInterface->GetTextureDims(m_hBar,w,h); + + m_nArrowWidth = w / 2; + m_nArrowHeight = h / 2; + + + SetHelpID(nHelpID); + + if ( pText) + { + if (m_pText) + m_pText->SetText((char *)pText); + else + { + m_pText = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pText,(float)m_pos.x,(float)m_pos.y); + m_pText->SetCharScreenHeight(m_nFontSize); + + } + } + + InitBar(); + + return LTTRUE; +} + +void CLTGUISlider::SetNumericDisplay(LTBOOL bDisplay) +{ + m_bNumDisplay = bDisplay; + if (bDisplay) + { + char szNum[16]; + sprintf(szNum,"%d",m_nSliderPos); + if (m_pNumbers) + m_pNumbers->SetText(szNum); + else + { + m_pNumbers = g_pFontManager->CreateFormattedPolyString(m_pFont,szNum,(float)m_pos.x,(float)m_pos.y); + m_pNumbers->SetCharScreenHeight(m_nFontSize); + + } + ScaleBar(); + } +} + + +// Update data +void CLTGUISlider::UpdateData(LTBOOL bSaveAndValidate) +{ + //sanity check + if (!m_pnValue) + { + return; + } + + if (bSaveAndValidate) + { + *m_pnValue=GetSliderPos(); + } + else + { + SetSliderPos(*m_pnValue); + } +} + +// Sets the min and max of the slider bar +void CLTGUISlider::SetSliderRange(int nMin, int nMax) +{ + if (nMax <= nMin) return; + + m_nMinSlider = nMin; + m_nMaxSlider = nMax; + + // Call this to make sure that the slider stays within range + SetSliderPos(m_nSliderPos); +} + +// Sets the slider position +void CLTGUISlider::SetSliderPos(int nPos) +{ + m_nSliderPos=nPos; + if ( m_nSliderPos > m_nMaxSlider ) + { + m_nSliderPos=m_nMaxSlider; + } + if ( m_nSliderPos < m_nMinSlider ) + { + m_nSliderPos=m_nMinSlider; + } + + if (m_bNumDisplay) + { + char szNum[16]; + sprintf(szNum,"%d",m_nSliderPos); + if (m_pNumbers) + m_pNumbers->SetText(szNum); + else + { + m_pNumbers = g_pFontManager->CreateFormattedPolyString(m_pFont,szNum,(float)m_pos.x,(float)m_pos.y); + m_pNumbers->SetCharScreenHeight(m_nFontSize); + + } + } + + ScaleBar(); +} + + +// Handle the left command +LTBOOL CLTGUISlider::OnLeft() +{ + if (m_bDisplayOnly) return LTFALSE; + + int nPos = m_nSliderPos-m_nSliderIncrement; + + if ( nPos < m_nMinSlider ) + { + nPos=m_nMinSlider; + } + if (nPos != m_nSliderPos) + { + if (m_pCallback && !m_pCallback(this,nPos,m_nSliderPos)) + return LTFALSE; + + SetSliderPos(nPos); + return LTTRUE; + } + return LTFALSE; +} + +// Handle the right command +LTBOOL CLTGUISlider::OnRight() +{ + if (m_bDisplayOnly) return LTFALSE; + + int nPos = m_nSliderPos+m_nSliderIncrement; + if ( nPos > m_nMaxSlider ) + { + nPos = m_nMaxSlider; + } + if (nPos != m_nSliderPos) + { + if (m_pCallback && !m_pCallback(this,nPos,m_nSliderPos)) + return LTFALSE; + SetSliderPos(nPos); + return LTTRUE; + } + return LTFALSE; +} + +void CLTGUISlider::OnSelChange() +{ + if (!IsSelected()) + { + m_bOverLeft = LTFALSE; + m_bOverRight = LTFALSE; + } +} + +// Destroys the control +void CLTGUISlider::Destroy ( ) +{ + if ( m_pText) + { + g_pFontManager->DestroyPolyString(m_pText); + m_pText=LTNULL; + } + if ( m_pNumbers) + { + g_pFontManager->DestroyPolyString(m_pNumbers); + m_pNumbers=LTNULL; + } +} + +// Render the control +void CLTGUISlider::Render () +{ + if (m_pText) + { + m_pText->SetColor(GetCurrentColor()); + m_pText->Render(); + } + + g_pDrawPrim->SetTexture(m_hBar); + + // set up the render state + SetRenderState(); + + +// draw bar + + if (m_bEnabled && m_nSliderPos > m_nMinSlider) + { + g_pDrawPrim->SetTexture(m_hBar); + g_pDrawPrim->DrawPrim(&m_Bar[eFull]); + } + + if (m_bEnabled && m_nSliderPos < m_nMaxSlider) + { + g_pDrawPrim->SetTexture(m_hBar); + g_pDrawPrim->DrawPrim(&m_Bar[eEmpty]); + } + +// draw arrows + if (!m_bDisplayOnly) + { + if (m_bOverLeft) + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MUL_SRCALPHA_ONE); + else + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + g_pDrawPrim->SetTexture(m_hBar); + g_pDrawPrim->DrawPrim(&m_Bar[eLeft]); + + if (m_bOverRight) + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MUL_SRCALPHA_ONE); + else + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + g_pDrawPrim->SetTexture(m_hBar); + g_pDrawPrim->DrawPrim(&m_Bar[eRight]); + } + + +// Draw Numbers + if (m_pNumbers) + { + m_pNumbers->SetColor(GetCurrentColor()); + m_pNumbers->Render(); + } + + + +} + +LTBOOL CLTGUISlider::OnMouseMove(int x, int y) +{ + LTBOOL bWasOverLeft = m_bOverLeft; + LTBOOL bWasOverRight = m_bOverRight; + + m_bOverLeft = (x >= m_rcLeft.left && y >= m_rcLeft.top && x <= m_rcLeft.right && y <= m_rcLeft.bottom); + m_bOverRight = (x >= m_rcRight.left && y >= m_rcRight.top && x <= m_rcRight.right && y <= m_rcRight.bottom); + + //determine if we have changed controls + return ((!bWasOverLeft && m_bOverLeft) || + (!bWasOverRight && m_bOverRight)); +} + + +LTBOOL CLTGUISlider::OnLButtonUp(int x, int y) +{ + if (m_bDisplayOnly) return LTFALSE; + if (m_bOverLeft) return OnLeft(); + if (m_bOverRight) return OnRight(); + if (x >= m_rcBar.left && y >= m_rcBar.top && x <= m_rcBar.right && y <= m_rcBar.bottom) + { + float fPercent = (float)(x - m_rcBar.left) / (float)(m_rcBar.right - m_rcBar.left); + int nPos = m_nSliderIncrement * (int)((fPercent * (float)(m_nMaxSlider - m_nMinSlider) / (float)m_nSliderIncrement) + 0.5f); + if (nPos+m_nMinSlider != m_nSliderPos) + { + if (m_pCallback && !m_pCallback(this,(nPos+m_nMinSlider),m_nSliderPos)) + return LTFALSE; + + SetSliderPos(nPos+m_nMinSlider); + return LTTRUE; + } + + } + return LTFALSE; + +} + +void CLTGUISlider::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + ScaleBar(); + if (m_pText) + { + float x = (float)m_pos.x; + float y = (float)m_pos.y; + m_pText->SetPosition(x,y); + } + if (m_pNumbers) + { + float x = (float)(m_rcBar.right + m_nHeight + 4); + float y = (float)m_pos.y; + m_pNumbers->SetPosition(x,y); + } + +} + +void CLTGUISlider::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + ScaleBar(); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + if (m_pText) + { + float x = (float)m_pos.x; + float y = (float)m_pos.y; + m_pText->SetPosition(x,y); + m_pText->SetCharScreenHeight(m_nFontSize); + } + if (m_pNumbers) + { + float x = (float)(m_rcBar.right + m_nHeight + 4); + float y = (float)m_pos.y; + m_pNumbers->SetPosition(x,y); + m_pNumbers->SetCharScreenHeight(m_nFontSize); + } +} + +void CLTGUISlider::SetTextureScale(float fScale) +{ +// m_fTextureScale = fScale; + ScaleBar(); +} + + +void CLTGUISlider::InitBar() +{ + ScaleBar(); + SetupQuadUVs(m_Bar[eFull], m_hBar, 0.0f,0.0f,0.5f,0.5f); + SetupQuadUVs(m_Bar[eEmpty], m_hBar, 0.5f,0.0f,0.5f,0.5f); + SetupQuadUVs(m_Bar[eLeft], m_hBar, 0.0f,0.5f,0.5f,0.5f); + SetupQuadUVs(m_Bar[eRight], m_hBar, 0.5f,0.5f,0.5f,0.5f); + + for (int i = 0; i < 4; i++) + g_pDrawPrim->SetRGBA(&m_Bar[i],0xFFFFFFFF); + +} + +void CLTGUISlider::ScaleBar() +{ + //determine height of bar + uint16 nHt = m_nBaseFontSize; + if (m_nBarHeight > nHt) nHt = m_nBarHeight; + if (m_nArrowHeight > nHt) nHt = m_nArrowHeight; + m_nHeight = (uint16)((float)nHt * m_fScale); + m_nWidth = (uint16)((float)(m_nBarOffset + m_nBarWidth) * m_fScale); + + float fPercent = (float)(m_nSliderPos - m_nMinSlider) / (float)(m_nMaxSlider - m_nMinSlider); + + //left arrow + float x = (float)m_pos.x + ((float)m_nBarOffset * m_fScale); + float y = (float)m_pos.y; + float fw = (float)m_nArrowWidth * m_fScale; + float fh = (float)m_nArrowHeight * m_fScale; + + float yo = ((float)m_nHeight - fh) / 2.0f; + float arrowGap = fw / 4.0f; + float arrowSpace = fw + arrowGap; + + if (m_bDisplayOnly) + { + arrowGap = 0.0f; + arrowSpace = 0.0f; + } + float barWidth = ((float)m_nBarWidth * m_fScale) - 2 * arrowSpace; + + g_pDrawPrim->SetXYWH(&m_Bar[eLeft],x,y + yo,fw,fh); + + m_rcLeft.left = (int)x; + m_rcLeft.top = (int)(y + yo); + m_rcLeft.right = (int)(x + fw); + m_rcLeft.bottom = m_rcLeft.top + (int)fh; + + + //full part of bar + x += arrowSpace; + fw = fPercent * barWidth; + fh = (float)m_nBarHeight * m_fScale; + yo = ((float)m_nHeight - fh) / 2.0f; + g_pDrawPrim->SetXYWH(&m_Bar[eFull],x,y+yo,fw,fh); + m_rcBar.left = (int)x; + m_rcBar.top = (int)(y + yo); + + //empty part of bar + x += fw; + fw = barWidth * (1.0f - fPercent); + g_pDrawPrim->SetXYWH(&m_Bar[eEmpty],x,y+yo,fw,fh); + m_rcBar.right = (int)(x + fw); + m_rcBar.bottom = m_rcBar.top + (int)fh; + + //right arrow + fw = (float)m_nArrowWidth * m_fScale; + fh = (float)m_nArrowHeight * m_fScale; + x = (float)(m_pos.x + m_nWidth) - fw; + yo = ((float)m_nHeight - fh) / 2.0f; + g_pDrawPrim->SetXYWH(&m_Bar[eRight],x,y+yo,fw,fh); + + m_rcRight.left = (int)x; + m_rcRight.top = (int)(y + yo); + m_rcRight.right = (int)(x + fw); + m_rcRight.bottom = m_rcRight.top + (int)fh; + + if (m_pNumbers) + { + float x = (float)(m_rcBar.right + m_nHeight + 4); + float y = (float)m_pos.y; + m_pNumbers->SetPosition(x,y); + } + + +} + +void CLTGUISlider::SetRenderState() +{ + g_pDrawPrim->SetTransformType(DRAWPRIM_TRANSFORM_SCREEN); + g_pDrawPrim->SetZBufferMode(DRAWPRIM_NOZ); + g_pDrawPrim->SetClipMode(DRAWPRIM_NOCLIP); + g_pDrawPrim->SetFillMode(DRAWPRIM_FILL); + g_pDrawPrim->SetColorOp(DRAWPRIM_MODULATE); + g_pDrawPrim->SetAlphaTestMode(DRAWPRIM_NOALPHATEST); + g_pDrawPrim->SetAlphaBlendMode(DRAWPRIM_BLEND_MOD_SRCALPHA); + +} + + +//used to calculate the x offset of the slider at a given position +float CLTGUISlider::CalculateSliderOffset(int pos) +{ + + float fPercent = (float)(pos - m_nMinSlider) / (float)(m_nMaxSlider - m_nMinSlider); + + //left arrow + float x = ((float)m_nBarOffset * m_fScale); + float fw = (float)m_nArrowWidth * m_fScale; + + float arrowGap = fw / 4.0f; + float arrowSpace = fw + arrowGap; + float barWidth = ((float)m_nBarWidth * m_fScale) - 2 * arrowSpace; + + //full part of bar + x += arrowSpace; + x += fPercent * barWidth; + + return x; +} + +// Set the font +LTBOOL CLTGUISlider::SetFont(CUIFont *pFont, uint8 nFontSize) +{ + if (!pFont && !nFontSize) + { + return LTFALSE; + } + + if (pFont) + m_pFont = pFont; + if (nFontSize) + m_nBaseFontSize = nFontSize; + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (m_pText) + { + m_pText->SetFont(m_pFont); + m_pText->SetCharScreenHeight(m_nFontSize); + } + if (m_pNumbers) + { + m_pNumbers->SetFont(m_pFont); + m_pNumbers->SetCharScreenHeight(m_nFontSize); + } + + + return LTTRUE; +} + +// for controls to display a value, but not accept input +void CLTGUISlider::SetDisplayOnly(bool bDisplayOnly) +{ + m_bDisplayOnly = bDisplayOnly; + ScaleBar(); +} diff --git a/Jack/Libs/LTGUIMgr/ltguislider.h b/Jack/Libs/LTGUIMgr/ltguislider.h new file mode 100644 index 00000000..4502da99 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguislider.h @@ -0,0 +1,146 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUISlider.h +// +// PURPOSE : Control to display a full/empty style slider bar. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#ifndef _LTGUISLIDER_H_ +#define _LTGUISLIDER_H_ + +class CLTGUISlider; +//slider texture layout: +// upper left quarter : used for the part of the bar that's "full" +// upper right quarter : used for the part of the bar that's "empty" +// lower left quarter : used for the left arrow +// lower right quarter : used for the right arrow + +//the slider callback is used when some external code is needed to determine whether +// a position is valid. +// returns true if the nNewPos is valid, given the nOldPos, false otherwise +// normal range checking occurs before the callback is checked +typedef bool (*SliderCallBackFn)(CLTGUISlider* pSlider, int nNewPos, int nOldPos); + +class CLTGUISlider : public CLTGUICtrl +{ +public: + CLTGUISlider(); + virtual ~CLTGUISlider(); + + // Create the control + // pText - Text to display to the left of the slider bar + // pFont - The font to use for rendering the strings. + // nBarOffset - The number of pixels that the Bar is from the left position. This lets you line + // up Bars that have different text strings. + // nBarWidth - The total width of the Bar bar and it's arrows + // nBarHeight - The height of the bar + // pnValue - Pointer to the value to store the position in when UpdateData is called + LTBOOL Create ( const char *pText, uint32 dwHelpID, CUIFont *pFont, uint8 nFontSize, HTEXTURE hBarTexture, + uint16 nBarOffset, uint16 nBarWidth, uint16 nBarHeight, int *pnValue=LTNULL); + + void Destroy(); + + // Update data + void UpdateData(LTBOOL bSaveAndValidate=LTTRUE); + + // Sets the min and max of the slider bar + void SetSliderRange(int nMin, int nMax); + + // Gets/Sets the position of the slider bar + int GetSliderPos() { return m_nSliderPos; } + void SetSliderPos(int nPos); + + // Sets the slider increment which is how much to move the bar when left and right is pressed + void SetSliderIncrement(int nIncrement) { m_nSliderIncrement=nIncrement; } + + // turns on or off numerical display + void SetNumericDisplay(LTBOOL bDisplay); + + // for controls to display a value, but not accept input + void SetDisplayOnly(bool bDisplayOnly); + + // Render the control + void Render (); + + virtual LTBOOL OnMouseMove(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnLeft(); + virtual LTBOOL OnRight(); + virtual LTBOOL OnEnter() {return LTFALSE;} + + virtual void OnSelChange(); + + // Width/Height calculations + virtual uint16 GetWidth ( ) {return (uint16)m_nWidth;} + virtual uint16 GetHeight ( ) {return (uint16)m_nHeight;} + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + virtual void SetTextureScale(float fScale); + + // Set the font, pass in a NULL pointer to change only the font size + // pass in a font size of 0 to retain the current size. + virtual LTBOOL SetFont ( CUIFont *pFont, uint8 nFontSize); + + //used to calculate the x offset of the slider at a given position + float CalculateSliderOffset(int pos); + + // note that this is unscaled + uint16 GetBarHeight() {return m_nBarHeight;} + + void SetRangeCallback(SliderCallBackFn pCallback) {m_pCallback = pCallback;} + + +protected: + void SetRenderState(); + void InitBar(); + void ScaleBar(); + + +protected: + + CUIPolyString* m_pText; + CUIPolyString* m_pNumbers; + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + bool m_bDisplayOnly; + + LTBOOL m_bNumDisplay; + int* m_pnValue; + int m_nMinSlider; + int m_nMaxSlider; + int m_nSliderPos; + int m_nSliderIncrement; + + uint16 m_nHeight; + uint16 m_nWidth; + + // 0 = Full, 1 = Empty, 2 = LeftArrow, 3 = RightArrow + LT_POLYGT4 m_Bar[4]; + HTEXTURE m_hBar; // full texture + + uint16 m_nBarWidth; + uint16 m_nBarHeight; + uint16 m_nBarOffset; + + uint16 m_nArrowWidth; + uint16 m_nArrowHeight; + + LTBOOL m_bOverLeft; + LTBOOL m_bOverRight; + + LTRect m_rcLeft; + LTRect m_rcRight; + LTRect m_rcBar; + + SliderCallBackFn m_pCallback; +}; + +#endif // _LTGUISlider_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguitextitemctrl.cpp b/Jack/Libs/LTGUIMgr/ltguitextitemctrl.cpp new file mode 100644 index 00000000..ba3af087 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguitextitemctrl.cpp @@ -0,0 +1,278 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUITextItemCtrl.cp +// +// PURPOSE : Simple text control which may be used as a menu item. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUITextCtrl::CLTGUITextCtrl() +{ + m_pFont = LTNULL; + m_nFontSize = 0; + m_nBaseFontSize = 0; + m_pCommandHandler = LTNULL; + m_nWidth = 0; + m_nHeight = 0; + m_nFixedWidth = 0; + m_nIndent = 0; + m_bClip = LTFALSE; + m_pString = LTNULL; + +} + +CLTGUITextCtrl::~CLTGUITextCtrl() +{ + Destroy(); +} + +// Create the control +LTBOOL CLTGUITextCtrl::Create ( const char* pText, + uint32 nCommandID, + uint32 nHelpID, + CUIFont* pFont, + uint8 nFontSize, + CLTGUICommandHandler *pCommandHandler, + uint32 nParam1, + uint32 nParam2) +{ + m_pCommandHandler = pCommandHandler; + + + if (!SetFont(pFont,nFontSize)) + { + return LTFALSE; + } + + // Add the string + if (pText) + { + SetString(pText); + } + + CLTGUICtrl::Create(nCommandID, nHelpID, nParam1,nParam2); + + return LTTRUE; +} + + +// Destroys the control +void CLTGUITextCtrl::Destroy ( ) +{ + if (m_pString) + { + g_pFontManager->DestroyPolyString(m_pString); + m_pString = LTNULL; + } + +} + + +// Add more strings to the control. These are cycled when OnLeft() and OnRight() are called +void CLTGUITextCtrl::SetString(const char *pString) +{ + if ( !pString || !m_pFont || !m_nFontSize) + return; + + int nLen = strlen(pString); + ASSERT(nLen < 1024); + if (nLen >= 1024) + return; + + + if (!m_pString) + m_pString = g_pFontManager->CreateFormattedPolyString(m_pFont,(char *)pString,(float)m_pos.x,(float)m_pos.y); + else + m_pString->SetText((char *)pString); + + + if (m_pString) + { + if (m_nFixedWidth && !m_bClip) + { + uint16 nWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + m_pString->SetWrapWidth(nWidth); + } + + m_pString->SetCharScreenHeight(m_nFontSize); + CalculateSize(); + + } +} + + +// Set the font +LTBOOL CLTGUITextCtrl::SetFont(CUIFont *pFont, uint8 nFontSize) +{ + if (!pFont && !nFontSize) + { + return LTFALSE; + } + + if (pFont) + m_pFont = pFont; + if (nFontSize) + m_nBaseFontSize = nFontSize; + + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + + if (m_pString) + { + m_pString->SetFont(m_pFont); + m_pString->SetCharScreenHeight(m_nFontSize); + CalculateSize(); + } + + + return LTTRUE; +} + + +void CLTGUITextCtrl::CalculateSize() +{ + if (!m_pFont || !m_pString) + { + if (m_nFixedWidth) + m_nWidth=m_nFixedWidth; + else + m_nWidth=0; + m_nHeight=0; + return; + } + if (m_nFixedWidth) + { + m_nWidth = (uint16)(m_fScale * (float)m_nFixedWidth); + } + else + { + float fi = (float)m_nIndent * m_fScale; + m_nWidth = (uint16)m_pString->GetWidth() + (uint16)fi; + } + + m_nHeight = (uint16)m_pString->GetHeight(); +} + +// Render the control +void CLTGUITextCtrl::Render() +{ + // Sanity checks... + if (!IsVisible() || !m_pString) return; + + uint32 argbColor=GetCurrentColor(); + m_pString->SetColor(argbColor); + if (m_nFixedWidth && m_bClip) + { + CUIRECT rc; + rc.x = (float)m_pos.x; + rc.y = (float)m_pos.y; + rc.width = (float)m_nWidth; + rc.height = (float)m_nHeight; + m_pString->RenderClipped(&rc); + } + else + m_pString->Render(); +} + + +// Enter was pressed +LTBOOL CLTGUITextCtrl::OnEnter ( ) +{ + // Send the command + if ( m_pCommandHandler && m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2) ) + return LTTRUE; + return LTFALSE; +} + +void CLTGUITextCtrl::SetBasePos ( LTIntPt pos ) +{ + CLTGUICtrl::SetBasePos(pos); + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y); + } +} + +void CLTGUITextCtrl::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_nFontSize = (uint8)(m_fScale * (float)m_nBaseFontSize); + uint16 nWidth = 0; + if (m_nFixedWidth && !m_bClip) + { + nWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + } + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y); + m_pString->SetCharScreenHeight(m_nFontSize); + m_pString->SetWrapWidth(nWidth); + } + CalculateSize(); + +} + + +void CLTGUITextCtrl::SetFixedWidth(uint16 nWidth, LTBOOL bClip) +{ + uint16 nMinWidth = m_nBaseFontSize + m_nIndent + 1; + ASSERT(nWidth == 0 || nWidth >= nMinWidth); + if (nWidth > 0 && nWidth < nMinWidth) + nWidth = nMinWidth; + + m_nFixedWidth = nWidth; + m_bClip = bClip; + + uint16 nTrueWidth = 0; + if (m_nFixedWidth && !m_bClip) + { + nTrueWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + } + if (m_pString) + { + m_pString->SetWrapWidth(nTrueWidth); + } + CalculateSize(); + +} + +void CLTGUITextCtrl::SetIndent(uint16 nIndent) +{ + if (m_nFixedWidth) + { + ASSERT(m_nFixedWidth > nIndent); + if(m_nFixedWidth <= nIndent) + return; + } + + m_nIndent = nIndent; + + if (m_nFixedWidth && !m_bClip) + { + uint16 nTrueWidth = (uint16)(m_fScale * (float)(m_nFixedWidth-m_nIndent)); + if (m_pString) + { + m_pString->SetWrapWidth(nTrueWidth); + } + + } + + if (m_pString) + { + float fi = (float)m_nIndent * m_fScale; + m_pString->SetPosition((float)m_pos.x+fi,(float)m_pos.y); + } + + CalculateSize(); + +} diff --git a/Jack/Libs/LTGUIMgr/ltguitextitemctrl.h b/Jack/Libs/LTGUIMgr/ltguitextitemctrl.h new file mode 100644 index 00000000..48b69dbf --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguitextitemctrl.h @@ -0,0 +1,99 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUITextItemCtrl.h +// +// PURPOSE : Simple text control which may be used as a menu item. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + + +#if !defined(_LTGUITEXTITEMCTRL_H_) +#define _LTGUITEXTITEMCTRL_H_ + + +// This control displays a string of text which fades out upon being unselected. +// It can contain multiple strings (see CLTGUICtrl::AddString()) which are cycled +// when OnLeft() and OnRight() are called. This is useful in menu code for selecting +// options. +class CLTGUITextCtrl : public CLTGUICtrl +{ +public: + CLTGUITextCtrl(); + virtual ~CLTGUITextCtrl(); + + // Create the control + // nCommandID - The command ID which is sent when "enter" is pressed. + // nHelpID - The help ID which is used to display help text. + // pText - The initial text that is displayed for this control. Pass in + // LTNULL if you do not want initial text. A copy of this text + // is made so the string may be discarded after making this call. + // pFont - The font to use for this string. + // nFontSize - The font size to use for this string. + // pCommandHandler - handler which receives messages when the "enter" key is pressed. + LTBOOL Create ( const char *pText, uint32 nCommandID, uint32 nHelpID, + CUIFont *pFont, uint8 nFontSize, CLTGUICommandHandler *pCommandHandler, + uint32 nParam1 = 0, uint32 nParam2 = 0); + + // Destroys the control + virtual void Destroy ( ); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + virtual void SetFixedWidth(uint16 nWidth, LTBOOL bClip = LTFALSE); + virtual uint16 GetFixedWidth() {return m_nFixedWidth;} + + virtual void SetIndent(uint16 nIndent); + + virtual void SetCommandHandler(CLTGUICommandHandler *pCommandHandler) + { m_pCommandHandler = pCommandHandler; } + + // Add more strings to the control. These are cycled when OnLeft() and OnRight() are called + virtual void SetString(const char *pText); + CUIFormattedPolyString* GetString() {return m_pString;} + + // Render the control + virtual void Render (); + + // Set the font, pass in a NULL pointer to change only the font size + // pass in a font size of 0 to retain the current size. + virtual LTBOOL SetFont ( CUIFont *pFont, uint8 nFontSize); + + // Width/Height calculations + virtual uint16 GetWidth ( ) { return m_nWidth; } + virtual uint16 GetHeight ( ) { return m_nHeight; } + + // Commonly used keyboard messages + virtual LTBOOL OnEnter ( ); + virtual LTBOOL OnLButtonUp(int x, int y) {return OnEnter();} + + // Gets the base font size. + virtual uint8 GetBaseFontSize( ) const { return m_nBaseFontSize; } + +protected: + virtual void CalculateSize(); + +protected: + + CUIFont* m_pFont; // The font for this control + uint8 m_nFontSize; // The scaled font size to use. + uint8 m_nBaseFontSize; // The font size before scaling + + uint16 m_nWidth; // The width of the control + uint16 m_nHeight; // The height of the control + + uint16 m_nIndent; + + uint16 m_nFixedWidth; + LTBOOL m_bClip; + + + CUIFormattedPolyString* m_pString; + + // Receives a message when the "enter" key is pressed. + CLTGUICommandHandler *m_pCommandHandler; +}; + +#endif // _LTGUITEXTITEMCTRL_H_ \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguitoggle.cpp b/Jack/Libs/LTGUIMgr/ltguitoggle.cpp new file mode 100644 index 00000000..d7c7850f --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguitoggle.cpp @@ -0,0 +1,108 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIToggle.cpp +// +// PURPOSE : Text control which toggles between two values. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "LTGUIToggle.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIToggle::CLTGUIToggle() +{ + m_bOn = LTFALSE; +} + +CLTGUIToggle::~CLTGUIToggle() +{ + Destroy(); +} + +// Create the control +// pText - The initial text that is displayed for this control. Pass in +// LTNULL if you do not want initial text. A copy of this text +// is made so the string may be discarded after making this call. +// pFont - The font to use for this string. +// nFontSize - The font size to use for this string. +// nHeaderWidth - The width to use for the header string +// pbValue - Value to store the on/off status in when UpdateData is called +LTBOOL CLTGUIToggle::Create ( const char *pText, uint32 nHelpID, CUIFont *pFont, uint8 nFontSize, + uint16 nHeaderWidth, LTBOOL *pbValue) +{ + + // Initialize the base class + if (!CLTGUICycleCtrl::Create(pText, nHelpID, pFont, nFontSize, nHeaderWidth, LTNULL)) + { + return LTFALSE; + } + + AddString("OFF"); + AddString("ON"); + + m_pbValue=pbValue; + + SetOn(LTFALSE); + + return LTTRUE; +} + +// Update data +void CLTGUIToggle::UpdateData(LTBOOL bSaveAndValidate) +{ + if (!m_pbValue) + return; + + if (bSaveAndValidate) + { + *m_pbValue = m_bOn; + } + else + { + SetOn(*m_pbValue); + } +} + +// Sets the control on/off state +void CLTGUIToggle::SetOn(LTBOOL bOn) +{ + LTBOOL bWasOn = m_bOn; + + m_bOn = bOn; + + if ( m_bOn ) + { + SetSelIndex(1); + } + else + { + SetSelIndex(0); + } + + if (m_pCommandHandler && m_bOn != bWasOn) + { + m_pCommandHandler->SendCommand(m_nCommandID, m_nParam1, m_nParam2); + } + + +} + +// Set the string to use for "ON" +void CLTGUIToggle::SetOnString(const char *pStrOn) +{ + m_stringArray[1]->SetText((char *)pStrOn); +} + +// Set the string to use for "OFF" +void CLTGUIToggle::SetOffString(const char *pStrOff) +{ + m_stringArray[0]->SetText((char *)pStrOff); +} + diff --git a/Jack/Libs/LTGUIMgr/ltguitoggle.h b/Jack/Libs/LTGUIMgr/ltguitoggle.h new file mode 100644 index 00000000..6821b3bc --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguitoggle.h @@ -0,0 +1,54 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIToggle.h +// +// PURPOSE : Text control which toggles between two values. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUITOGGLE_H_) +#define _LTGUITOGGLE_H_ + + +#include "ltguimgr.h" + +class CLTGUIToggle : public CLTGUICycleCtrl +{ +public: + CLTGUIToggle(); + virtual ~CLTGUIToggle(); + + // Create the control + // pText - The initial text that is displayed for this control. Pass in + // LTNULL if you do not want initial text. A copy of this text + // is made so the string may be discarded after making this call. + // pFont - The font to use for this string. + // nFontSize - The font size to use for this string. + // nHeaderWidth - The width to use for the header string + // pbValue - Value to store the on/off status in when UpdateData is called + LTBOOL Create ( const char *pText, uint32 nHelpID, CUIFont *pFont, uint8 nFontSize, + uint16 nHeaderWidth, LTBOOL *pbValue=LTNULL); + + void SetOnString(const char *pStrOn); + void SetOffString(const char *pStrOff); + + // Update data + void UpdateData(LTBOOL bSaveAndValidate=LTTRUE); + + // Sets/gets the on/off status + LTBOOL IsOn() { return m_bOn; } + virtual void SetOn(LTBOOL bOn); + + // Left and Right key presses + virtual LTBOOL OnLeft() { SetOn(!IsOn()); return LTTRUE;} + virtual LTBOOL OnRight() { SetOn(!IsOn()); return LTTRUE;} + +protected: + LTBOOL m_bOn; + LTBOOL *m_pbValue; // Value to store the on/off status in when UpdateData is called. + +}; + +#endif // !defined(_LTGUITOGGLE_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltguiwindow.cpp b/Jack/Libs/LTGUIMgr/ltguiwindow.cpp new file mode 100644 index 00000000..9af9c682 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguiwindow.cpp @@ -0,0 +1,553 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIWindow.h +// +// PURPOSE : Base class for window-type controls (e.g. message boxes) +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "ltguimgr.h" +#include "LTGUIWindow.h" +#include "vkdefs.h" + +const uint16 CLTGUIWindow::kMaxNumControls = 0xFFFE; +const uint16 CLTGUIWindow::kNoSelection = 0xFFFF; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CLTGUIWindow::CLTGUIWindow() +{ + m_nCurrentIndex = 0; + m_nHeight = 0; + m_nWidth = 0; + m_nMouseDownItemSel = -1; + + +} + +CLTGUIWindow::~CLTGUIWindow() +{ + Destroy(); +} + +// Creation +LTBOOL CLTGUIWindow::Create (HTEXTURE hFrame, uint16 nWidth, uint16 nHeight, LTBOOL bSimpleStretch) +{ + + m_nHeight=nHeight; + m_nWidth=nWidth; + + m_Frame.Create(hFrame,nWidth,nHeight,bSimpleStretch); + + m_bCreated=LTTRUE; + + return LTTRUE; +} + +// Destroy the control +void CLTGUIWindow::Destroy ( ) +{ + if (m_bCreated) + { + m_Frame.Destroy(); + RemoveAll(); + } + + m_bCreated=LTFALSE; +} + +// Render the control +void CLTGUIWindow::Render ( ) +{ + if (!IsVisible()) return; + + m_Frame.Render(); + + // Render the items + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + if (m_controlArray[i]->IsVisible()) + m_controlArray[i]->Render (); + } + +} + + +// Returns the height +uint16 CLTGUIWindow::GetHeight ( ) +{ + return (uint16) ((float)m_nHeight * m_fScale); +} + +// Returns the width +uint16 CLTGUIWindow::GetWidth ( ) +{ + return (uint16) ((float)m_nWidth * m_fScale); +} + +// Handles gamepad input +LTBOOL CLTGUIWindow::HandleInterfaceCommand(int command) +{ + if (CLTGUICtrl::HandleInterfaceCommand(command)) + { + return LTTRUE; + } + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->HandleInterfaceCommand(command); + return handled; +} + +// Handle a keypress +LTBOOL CLTGUIWindow::HandleKeyDown(int key, int rep) +{ + if (CLTGUICtrl::HandleKeyDown(key, rep)) + { + return LTTRUE; + } + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->HandleKeyDown(key,rep); + return handled; + +} + +// Handle a keypress +LTBOOL CLTGUIWindow::HandleChar(unsigned char c) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->HandleChar(c); + return handled; + +} + +LTBOOL CLTGUIWindow::OnUp ( ) +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnUp()) + return LTTRUE; + + uint16 sel = m_nCurrentIndex; + return (sel != PreviousSelection()); +} + +LTBOOL CLTGUIWindow::OnDown ( ) +{ + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl && pCtrl->OnDown()) + return LTTRUE; + + uint16 sel = m_nCurrentIndex; + return (sel != NextSelection()); +} + + +LTBOOL CLTGUIWindow::OnLeft ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnLeft(); + return handled; +} + +LTBOOL CLTGUIWindow::OnRight ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnRight(); + return handled; +} + +LTBOOL CLTGUIWindow::OnEnter ( ) +{ + LTBOOL handled = LTFALSE; + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + handled = pCtrl->OnEnter(); + return handled; +} + +// Handles the left button down message +LTBOOL CLTGUIWindow::OnLButtonDown(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // Select the control + SetSelection(nControlIndex); + + // Record this control as the one being selected from the mouse click. + // If the mouse is still over it on the UP message, then the "enter" message will be sent. + m_nMouseDownItemSel=nControlIndex; + m_controlArray[nControlIndex]->OnLButtonDown(x,y); + return LTTRUE; + } + else + { + // This clears the index for what item was selected from a mouse down message + m_nMouseDownItemSel=-1; + + return LTFALSE; + } +} + +// Handles the left button up message +LTBOOL CLTGUIWindow::OnLButtonUp(int x, int y) +{ + // Get the control that the click was on + uint16 nControlIndex=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlIndex); + if(pCtrl) + { + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + // If the mouse is over the same control now as it was when the down message was called + // then send the "enter" message to the control. + if (nControlIndex == m_nMouseDownItemSel) + { + return m_controlArray[nControlIndex]->OnLButtonUp(x,y); + } + } + else + { + m_nMouseDownItemSel=-1; + } + return LTFALSE; +} + +// Handles the mouse move message +LTBOOL CLTGUIWindow::OnMouseMove(int x, int y) +{ + uint16 nControlUnderPoint=0; + CLTGUICtrl *pCtrl = GetControlUnderPoint(x, y, &nControlUnderPoint); + if(pCtrl) + { + // Make sure we're enabled + if(!pCtrl->IsEnabled()) + return LTFALSE; + + if (pCtrl->OnMouseMove(x,y)) + return LTTRUE; + + if (GetSelectedIndex() != nControlUnderPoint) + { + SetSelection(nControlUnderPoint); + return LTTRUE; + } + } + + return LTFALSE; +} + +// Add a control the the array of controls +uint16 CLTGUIWindow::AddControl ( CLTGUICtrl *pControl, LTIntPt offset ) +{ + ASSERT(pControl); + if (!pControl) return kNoSelection; + + LTIntPt pos = m_basePos; + pos.x += offset.x; + pos.y += offset.y; + pControl->SetBasePos(pos); + pControl->SetScale(m_fScale); + + m_controlArray.push_back(pControl); + + return m_controlArray.size()-1; +} + +// Remove a control +void CLTGUIWindow::RemoveControl ( CLTGUICtrl *pControl, LTBOOL bDelete ) +{ + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end() && (*iter) != pControl) + iter++; + + if (iter != m_controlArray.end()) + { + if (bDelete) + debug_delete(*iter); + m_controlArray.erase(iter); + } +} + +// Remove a control +void CLTGUIWindow::RemoveControl ( uint16 nIndex, LTBOOL bDelete ) +{ + if (nIndex >= m_controlArray.size()) + return; + + ControlArray::iterator iter = m_controlArray.begin() + nIndex; + if (bDelete) + debug_delete(*iter); + m_controlArray.erase(iter); +} + +// Removes all of the controls +void CLTGUIWindow::RemoveAll ( LTBOOL bDelete ) +{ + if (bDelete) + { + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end()) + { + debug_delete(*iter); + iter++; + } + } + + m_controlArray.clear(); +} + +// Return a control at a specific index +CLTGUICtrl *CLTGUIWindow::GetControl ( uint16 nIndex ) +{ + if (nIndex >= m_controlArray.size()) + return LTNULL; + + return m_controlArray[nIndex]; +} + +int CLTGUIWindow::GetIndex(CLTGUICtrl* pControl) +{ + int index = 0; + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end() && (*iter) != pControl) + { + iter++; + index++; + } + + if (iter == m_controlArray.end()) + { + index = -1; + } + + return index; + +} + +void CLTGUIWindow::SetControlOffset(CLTGUICtrl *pControl, LTIntPt offset) +{ + ControlArray::iterator iter = m_controlArray.begin(); + while (iter != m_controlArray.end() && (*iter) != pControl) + iter++; + + if (iter != m_controlArray.end()) + { + LTIntPt pos = m_basePos; + pos.x += offset.x; + pos.y += offset.y; + (*iter)->SetBasePos(pos); + } +} + +// Select a control +void CLTGUIWindow::ClearSelection() +{ + if (m_nCurrentIndex < m_controlArray.size() ) + { + m_controlArray[m_nCurrentIndex]->Select(LTFALSE); + } + m_nCurrentIndex = kNoSelection; +} + + +// Select a control +uint16 CLTGUIWindow::SetSelection( uint16 nIndex ) +{ + + if (nIndex >= m_controlArray.size()) + return m_nCurrentIndex; + + if (!m_controlArray[nIndex]->IsEnabled()) + return m_nCurrentIndex; + + if (m_nCurrentIndex==nIndex) + return m_nCurrentIndex; + + if (m_nCurrentIndex < m_controlArray.size() ) + { + m_controlArray[m_nCurrentIndex]->Select(LTFALSE); + } + + + m_nCurrentIndex=nIndex; + m_controlArray[m_nCurrentIndex]->Select(LTTRUE); + + return m_nCurrentIndex; + +} + +// Gets the index of the control that is under the specific screen point. +// Returns FALSE if there isn't one under the specified point. +CLTGUICtrl *CLTGUIWindow::GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex) +{ + ASSERT(pnIndex); + if (!pnIndex) return LTNULL; + + // See if the user clicked on any of the controls. + for (uint16 i = 0; i < m_controlArray.size(); i++) + { + // Check to see if the click is in the bounding box for the control + if (m_controlArray[i]->IsOnMe(xPos,yPos)) + { + *pnIndex=i; + + return m_controlArray[i]; + } + } + + return LTNULL; +} + +uint16 CLTGUIWindow::NextSelection() +{ + uint16 select = m_nCurrentIndex; + if (select == kNoSelection) + select = m_controlArray.size()-1; + uint16 oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + select++; + if (select >= m_controlArray.size()) + { + select = 0; + } + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nCurrentIndex; + + return SetSelection(select); + +} + +uint16 CLTGUIWindow::PreviousSelection() +{ + uint16 select = m_nCurrentIndex; + if (select == kNoSelection) + select = 0; + int oldSelect = select; + + CLTGUICtrl* pCtrl = LTNULL; + do + { + if (select == 0) + { + select = m_controlArray.size()-1; + } + else + select--; + + pCtrl = GetControl(select); + + } while (select != oldSelect && pCtrl && !pCtrl->IsEnabled() ); + + + if (!pCtrl || !pCtrl->IsEnabled() ) + select = m_nCurrentIndex; + + return SetSelection(select); + +} + +void CLTGUIWindow::SetBasePos ( LTIntPt pos ) +{ + LTIntPt offset; + offset.x = pos.x - m_basePos.x; + offset.y = pos.y - m_basePos.y; + CLTGUICtrl::SetBasePos(pos); + m_Frame.SetBasePos(pos); + + for (uint16 i = 0; i < m_controlArray.size(); i++) + { + LTIntPt pos = m_controlArray[i]->GetBasePos(); + pos.x += offset.x; + pos.y += offset.y; + m_controlArray[i]->SetBasePos(pos); + } + +} + + +void CLTGUIWindow::SetScale(float fScale) +{ + CLTGUICtrl::SetScale(fScale); + m_Frame.SetScale(m_fScale); + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->SetScale(m_fScale); + } +} + + +void CLTGUIWindow::Enable ( LTBOOL bEnabled ) +{ + CLTGUICtrl::Enable (bEnabled); + for (uint16 i = 0; i < m_controlArray.size(); i++ ) + { + m_controlArray[i]->Enable (bEnabled); + } + +} + + +//when the list is selected/deselected +void CLTGUIWindow::OnSelChange() +{ + ClearSelection(); + if (IsSelected()) + { + uint16 nTry = 0; + while (nTry < m_controlArray.size() && m_nCurrentIndex != kNoSelection) + { + SetSelection(nTry); + nTry++; + } + } +} + +void CLTGUIWindow::SetSize(uint16 nWidth, uint16 nHeight) +{ + m_nHeight = nHeight; + m_nWidth = nWidth; + m_Frame.SetSize(nWidth,nHeight); +} + + +uint32 CLTGUIWindow::GetHelpID() +{ + if (m_nHelpID) + return m_nHelpID; + + CLTGUICtrl* pCtrl = GetSelectedControl(); + if (pCtrl) + return pCtrl->GetHelpID(); + + return 0; +} diff --git a/Jack/Libs/LTGUIMgr/ltguiwindow.h b/Jack/Libs/LTGUIMgr/ltguiwindow.h new file mode 100644 index 00000000..6e320859 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltguiwindow.h @@ -0,0 +1,117 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTGUIWindow.h +// +// PURPOSE : Base class for window-type controls (e.g. message boxes) +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#if !defined(_LTGUIWINDOW_H_) +#define _LTGUIWINDOW_H_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + + +class CLTGUIFrame; + +class CLTGUIWindow : public CLTGUICtrl +{ +public: + CLTGUIWindow(); + virtual ~CLTGUIWindow(); + + // Creation + LTBOOL Create (HTEXTURE hFrame, uint16 nWidth, uint16 nHeight, LTBOOL bSimpleStretch = LTFALSE); + + // Destroy the control + void Destroy ( ); + + // Render the control + virtual void Render (); + + // Width/Height calculations + uint16 GetWidth ( ); + uint16 GetHeight ( ); + + // Commonly used keyboard messages + virtual LTBOOL OnUp ( ); + virtual LTBOOL OnDown ( ); + virtual LTBOOL OnLeft ( ); + virtual LTBOOL OnRight ( ); + virtual LTBOOL OnEnter ( ); + + // Handles gamepad input + virtual LTBOOL HandleInterfaceCommand(int command); + + // Handles a key press. Returns FALSE if the key was not processed through this method. + // Left, Up, Down, Right, and Enter are automatically passed through OnUp(), OnDown(), etc. + virtual LTBOOL HandleKeyDown(int key, int rep); + + // Handles a character input. + virtual LTBOOL HandleChar(unsigned char c); + + // Mouse messages + virtual LTBOOL OnLButtonDown(int x, int y); + virtual LTBOOL OnLButtonUp(int x, int y); + virtual LTBOOL OnMouseMove(int x, int y); + + // Add/Remove controls to the array + static const uint16 kMaxNumControls; + static const uint16 kNoSelection; + uint16 AddControl ( CLTGUICtrl *pControl, LTIntPt offset ); + void RemoveControl ( CLTGUICtrl *pControl, LTBOOL bDelete = LTTRUE ); + void RemoveControl ( uint16 nIndex, LTBOOL bDelete = LTTRUE ); + void RemoveAll( LTBOOL bDelete = LTTRUE ); + uint16 GetNumControls ( ) { return m_controlArray.size(); } + + CLTGUICtrl *GetControl ( uint16 nIndex ); + int GetIndex(CLTGUICtrl* pControl); + + void SetControlOffset(CLTGUICtrl *pControl, LTIntPt offset); + + //when list is selected/deselected + void OnSelChange(); + + //select/deslect items in list + uint16 SetSelection( uint16 nIndex ); + void ClearSelection(); + + uint16 GetSelectedIndex ( ) { return m_nCurrentIndex; } + CLTGUICtrl *GetSelectedControl ( ) { return GetControl(m_nCurrentIndex); } + + uint16 PreviousSelection(); + uint16 NextSelection(); + + // Gets the index of the control that is under the specific screen point. + // Returns FALSE if there isn't one under the specified point. + CLTGUICtrl *GetControlUnderPoint(int xPos, int yPos, uint16 *pnIndex); + + virtual void SetBasePos ( LTIntPt pos ); + virtual void SetScale(float fScale); + + // Enable/Disable the control + virtual void Enable ( LTBOOL bEnabled ); + + + void SetSize(uint16 nWidth, uint16 nHeight); + + virtual uint32 GetHelpID(); + + +protected: + uint16 m_nCurrentIndex; // Selected item + uint16 m_nHeight; // Height of the control + uint16 m_nWidth; // Width of the control + uint16 m_nMouseDownItemSel; // The control index that is selected from the current mouse down message + + ControlArray m_controlArray; + + CLTGUIFrame m_Frame; + +}; + +#endif // !defined(_LTGUIWindow_H_) \ No newline at end of file diff --git a/Jack/Libs/LTGUIMgr/ltquaduvutils.h b/Jack/Libs/LTGUIMgr/ltquaduvutils.h new file mode 100644 index 00000000..6b00bd3d --- /dev/null +++ b/Jack/Libs/LTGUIMgr/ltquaduvutils.h @@ -0,0 +1,79 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : LTQuadUVUtils.h +// +// PURPOSE : Utility functions for setting up and manipulating UV coordinates +// on quads. This helps with bilinear filtering. +// +// (c) 2001 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#ifndef __LTQUADUVUTILS_H__ +#define __LTQUADUVUTILS_H__ + + +// Utility function that will take a texture, a polygon, and the dimensions needed +//and setup the UV coordinates of the polygon so that it will work properly with +//bilinear filtering on the specified texture +template +void SetupQuadUVs(T& Poly, HTEXTURE hTexture, float fX, float fY, float fWidth, float fHeight) +{ + //first off we need to get the dimensions of a pixel in texture space + float fHalfPixelWidth = 0.0f; + float fHalfPixelHeight = 0.0f; + + uint32 nTexWidth, nTexHeight; + if(g_pTexInterface->GetTextureDims(hTexture, nTexWidth, nTexHeight) == LT_OK) + { + fHalfPixelWidth = 0.5f / nTexWidth; + fHalfPixelHeight = 0.5f / nTexHeight; + + //handle adjustments for negative values + if(fWidth < 0.0f) + fHalfPixelWidth = -fHalfPixelWidth; + if(fHeight < 0.0f) + fHalfPixelHeight = -fHalfPixelHeight; + } + + Poly.verts[0].u = fX + fHalfPixelWidth; + Poly.verts[0].v = fY + fHalfPixelHeight; + Poly.verts[1].u = fX + fWidth - fHalfPixelWidth; + Poly.verts[1].v = fY + fHalfPixelHeight; + Poly.verts[2].u = fX + fWidth - fHalfPixelWidth; + Poly.verts[2].v = fY + fHeight - fHalfPixelHeight; + Poly.verts[3].u = fX + fHalfPixelWidth; + Poly.verts[3].v = fY + fHeight - fHalfPixelHeight; +} + +//this will rotate the UVs in a quad clockwise in 90 degree increments +template +void RotateQuadUVs(T& Poly, uint32 n90DegIncs) +{ + //make sure it is within the range of 0..3 + n90DegIncs %= 4; + + //bail if no rotation + if(n90DegIncs == 0) + return; + + //alright, save the old values + float fU[4]; + float fV[4]; + + uint32 nCurrVert; + for(nCurrVert = 0; nCurrVert < 4; nCurrVert++) + { + fU[nCurrVert] = Poly.verts[nCurrVert].u; + fV[nCurrVert] = Poly.verts[nCurrVert].v; + } + + //now handle the offsetting + for(nCurrVert = 0; nCurrVert < 4; nCurrVert++) + { + Poly.verts[nCurrVert].u = fU[(nCurrVert + n90DegIncs) % 4]; + Poly.verts[nCurrVert].v = fV[(nCurrVert + n90DegIncs) % 4]; + } +} + +#endif diff --git a/Jack/Libs/LTGUIMgr/vkdefs.h b/Jack/Libs/LTGUIMgr/vkdefs.h new file mode 100644 index 00000000..582d3a73 --- /dev/null +++ b/Jack/Libs/LTGUIMgr/vkdefs.h @@ -0,0 +1,152 @@ +//---------------------------------------------------------- +// +// MODULE : VKDEFS.DSC +// +// PURPOSE : Keyboard definitions +// +// CREATED : 6/27/97 7:26:40 PM +// +//---------------------------------------------------------- + +#define VK_LBUTTON 1 +#define VK_RBUTTON 2 +#define VK_CANCEL 3 +#define VK_MBUTTON 4 + +#define VK_BACK 8 +#define VK_TAB 9 + +#define VK_CLEAR 12 +#define VK_RETURN 13 + +#define VK_SHIFT 16 +#define VK_CONTROL 17 +#define VK_MENU 18 +#define VK_PAUSE 19 +#define VK_CAPITAL 20 + + +#define VK_ESCAPE 27 + +#define VK_SPACE 32 +#define VK_PRIOR 33 +#define VK_NEXT 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 +#define VK_SELECT 41 +#define VK_PRINT 42 +#define VK_EXECUTE 43 +#define VK_SNAPSHOT 44 +#define VK_INSERT 45 +#define VK_DELETE 46 +#define VK_HELP 47 + +#define VK_0 48 +#define VK_1 49 +#define VK_2 50 +#define VK_3 51 +#define VK_4 52 +#define VK_5 53 +#define VK_6 54 +#define VK_7 55 +#define VK_8 56 +#define VK_9 57 + +#define VK_A 65 +#define VK_B 66 +#define VK_C 67 +#define VK_D 68 +#define VK_E 69 +#define VK_F 70 +#define VK_G 71 +#define VK_H 72 +#define VK_I 73 +#define VK_J 74 +#define VK_K 75 +#define VK_L 76 +#define VK_M 77 +#define VK_N 78 +#define VK_O 79 +#define VK_P 80 +#define VK_Q 81 +#define VK_R 82 +#define VK_S 83 +#define VK_T 84 +#define VK_U 85 +#define VK_V 86 +#define VK_W 87 +#define VK_X 88 +#define VK_Y 89 +#define VK_Z 90 + +#define VK_LWIN 91 +#define VK_RWIN 92 +#define VK_APPS 93 + +#define VK_NUMPAD0 96 +#define VK_NUMPAD1 97 +#define VK_NUMPAD2 98 +#define VK_NUMPAD3 99 +#define VK_NUMPAD4 100 +#define VK_NUMPAD5 101 +#define VK_NUMPAD6 102 +#define VK_NUMPAD7 103 +#define VK_NUMPAD8 104 +#define VK_NUMPAD9 105 +#define VK_MULTIPLY 106 +#define VK_ADD 107 +#define VK_SEPARATOR 108 +#define VK_SUBTRACT 109 +#define VK_DECIMAL 110 +#define VK_DIVIDE 111 +#define VK_F1 112 +#define VK_F2 113 +#define VK_F3 114 +#define VK_F4 115 +#define VK_F5 116 +#define VK_F6 117 +#define VK_F7 118 +#define VK_F8 119 +#define VK_F9 120 +#define VK_F10 121 +#define VK_F11 122 +#define VK_F12 123 +#define VK_F13 124 +#define VK_F14 125 +#define VK_F15 126 +#define VK_F16 127 +#define VK_F17 128 +#define VK_F18 129 +#define VK_F19 130 +#define VK_F20 131 +#define VK_F21 132 +#define VK_F22 133 +#define VK_F23 134 +#define VK_F24 135 + +#define VK_NUMLOCK 144 +#define VK_SCROLL 145 + +#define VK_LSHIFT 160 +#define VK_RSHIFT 161 +#define VK_LCONTROL 162 +#define VK_RCONTROL 163 +#define VK_LMENU 164 +#define VK_RMENU 165 + +#define VK_PROCESSKEY 229 + +#define VK_ATTN 246 +#define VK_CRSEL 247 +#define VK_EXSEL 248 +#define VK_EREOF 249 +#define VK_PLAY 250 +#define VK_ZOOM 251 +#define VK_NONAME 252 +#define VK_PA1 253 +#define VK_OEM_CLEAR 254 + diff --git a/Jack/ObjectDLL/AI.cpp b/Jack/ObjectDLL/AI.cpp new file mode 100644 index 00000000..94d155ce --- /dev/null +++ b/Jack/ObjectDLL/AI.cpp @@ -0,0 +1,6361 @@ +// ----------------------------------------------------------------------- // +// +// MODULE : AI.cpp +// +// PURPOSE : Base AI class +// +// (c) 1997-2002 Monolith Productions, Inc. All Rights Reserved +// +// ----------------------------------------------------------------------- // + +#include "stdafx.h" + +#include "AI.h" +#include "ObjectMsgs.h" +#include "ParsedMsg.h" +#include "VolumeBrushTypes.h" +#include "PlayerObj.h" +#include "AIState.h" +#include "AIPathMgr.h" +#include "AITarget.h" +#include "TeleportPoint.h" +#include "AINodeMgr.h" +#include "AIRegion.h" +#include "Camera.h" +#include "AISenseRecorderGame.h" +#include "AIGoalMgr.h" +#include "AIGoalAbstract.h" +#include "AIBrain.h" +#include "AIHumanState.h" +#include "AIVolumeMgr.h" + +#include "AnimationMgr.h" +#include "AIGoalButeMgr.h" +#include "ServerSoundMgr.h" +#include "SurfaceMgr.h" +#include "AIStimulusMgr.h" +#include "CharacterMgr.h" +#include "SurfaceFunctions.h" +#include "RelationButeMgr.h" +#include "Weapon.h" +#include "Attachments.h" +#include "ServerTrackedNodeMgr.h" +#include "ServerTrackedNodeContext.h" +#include "ObjectRelationMgr.h" +#include "AIAssert.h" +#include "AIMovement.h" +#include "AIPathKnowledgeMgr.h" +#include "KeyItem.h" +#include "Spawner.h" +#include "CharacterHitBox.h" +#include "RelationMgr.h" +#include "AICentralKnowledgeMgr.h" +#include "Searchable.h" +#include "AIGoalSpecialDamage.h" +#include "SharedFXStructs.h" + +#include + +extern CAIGoalButeMgr* g_pAIGoalButeMgr; +extern CServerSoundMgr* g_pServerSoundMgr; +extern CAIStimulusMgr* g_pAIStimulusMgr; +extern CCharacterMgr* g_pCharacterMgr; + +static CVarTrack g_SenseInfoTrack; +static CVarTrack g_AccuracyInfoTrack; +static CVarTrack g_AIInfoTrack; + +// Specifies the maximum number of ai's that can be in the level. If number +// is over this level, no new one's will be spawned in. +static CVarTrack g_AIMaxNumber; + +LINKFROM_MODULE( AI ); + + +#define ROTATION_SPEED_STATIC 0.5f +#define ROTATION_SPEED_MOVING 2.0f + +#define BODY_SKIN_INDEX 0 +#define HEAD_SKIN_INDEX 1 +#define SKIN_EXT_RANDOM "RANDOM" + + +// Define our properties (what is available in DEdit)... +#pragma force_active on +BEGIN_CLASS(CAI) + + // Overrides + + ADD_STRINGPROP_FLAG(SpawnItem, "", PF_HIDDEN) + ADD_REALPROP_FLAG(HitPoints, -1.0f, PF_HIDDEN) + ADD_REALPROP_FLAG(ArmorPoints, -1.0f, PF_HIDDEN) + ADD_STRINGPROP(BodySkinExtension, "") + + // New properties + + ADD_BOOLPROP_FLAG(IsCinematicAI, LTFALSE, 0) + ADD_BOOLPROP_FLAG(CanTalk, LTTRUE, 0) + + PROP_DEFINEGROUP(AttributeOverrides, PF_GROUP(3)) + + // Basic attributes + + ADD_STRINGPROP_FLAG(SoundRadius, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(HitPoints, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(Armor, "", PF_GROUP(3)) + + ADD_STRINGPROP_FLAG(Accuracy, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(FullAccuracyRadius, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(AccuracyMissPerturb, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(MaxMovementAccuracyPerturb, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(MovementAccuracyPerturbTime,"", PF_GROUP(3)) + + ADD_STRINGPROP_FLAG(Awareness, "", PF_GROUP(3)) + + ADD_BOOLPROP_FLAG(Senses, LTTRUE, PF_GROUP(3)) + + // Sense attributes + + ADD_STRINGPROP_FLAG(CanSeeEnemy, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(SeeEnemyDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanSeeAllyDeath, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(SeeAllyDeathDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearAllyDeath, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearAllyDeathDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearAllyPain, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearAllyPainDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanSeeEnemyFlashlight, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(SeeEnemyFlashlightDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanSeeEnemyFootprint, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(SeeEnemyFootprintDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearEnemyFootstep, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearEnemyFootstepDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearEnemyDisturbance, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearEnemyDisturbanceDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearEnemyWeaponImpact, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearEnemyWeaponImpactDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearEnemyWeaponImpact, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearEnemyWeaponImpactDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearEnemyWeaponFire, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearEnemyWeaponFireDistance, "", PF_GROUP(3)|PF_RADIUS) + ADD_STRINGPROP_FLAG(CanHearAllyWeaponFire, "", PF_GROUP(3)) + ADD_STRINGPROP_FLAG(HearAllyWeaponFireDistance, "", PF_GROUP(3)|PF_RADIUS) + + PROP_DEFINEGROUP(Commands, PF_GROUP(4)) + + ADD_STRINGPROP_FLAG(Initial, "", PF_GROUP(4) | PF_NOTIFYCHANGE) + ADD_STRINGPROP_FLAG(ActivateOn, "", PF_GROUP(4) | PF_NOTIFYCHANGE) + ADD_STRINGPROP_FLAG(ActivateOff, "", PF_GROUP(4) | PF_NOTIFYCHANGE) + ADD_STRINGPROP_FLAG(ProximityGoalCommand, "", PF_GROUP(4) | PF_NOTIFYCHANGE) + ADD_STRINGPROP_FLAG(OnMarkingCommand, "", PF_GROUP(4) | PF_NOTIFYCHANGE) + +END_CLASS_DEFAULT_FLAGS_PLUGIN(CAI, CCharacter, NULL, NULL, 0, CAIPlugin) +#pragma force_active off + +static LTBOOL ValidateMsgRemoveGoal( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( !g_pAIGoalButeMgr ) + return LTTRUE; + + // Find goal by name. + for(uint32 iGoalType=0; iGoalType < kGoal_Count; ++iGoalType) + { + if( stricmp(s_aszGoalTypes[iGoalType], cpMsgParams.m_Args[1]) == 0) + { + break; + } + } + + AIGBM_GoalTemplate* pGoalTemplate = g_pAIGoalButeMgr->GetTemplate( (EnumAIGoalType)iGoalType ); + if( !pGoalTemplate || iGoalType == kGoal_Count ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgRemoveGoal()" ); + pInterface->CPrint( " MSG - REMOVEGOAL - Invalid goal '%s' not found in file '%s'!", cpMsgParams.m_Args[1], GOAL_FILE ); + } + + return LTFALSE; + } + + return LTTRUE; +} + +static LTBOOL ValidateMsgAddGoal( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( !g_pAIGoalButeMgr ) + return LTTRUE; + + if( cpMsgParams.m_nArgs < 2 || !cpMsgParams.m_Args[1] ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgAddGoal()" ); + pInterface->CPrint( " MSG - ADDGOAL - No goal was specified!" ); + } + + return LTFALSE; + } + + // Find goal by name. + for(uint32 iGoalType=0; iGoalType < kGoal_Count; ++iGoalType) + { + if( stricmp(s_aszGoalTypes[iGoalType], cpMsgParams.m_Args[1]) == 0) + { + break; + } + } + + AIGBM_GoalTemplate* pGoalTemplate = g_pAIGoalButeMgr->GetTemplate( (EnumAIGoalType)iGoalType ); + if( !pGoalTemplate || iGoalType == kGoal_Count ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgAddGoal()" ); + pInterface->CPrint( " MSG - ADDGOAL - Invalid goal '%s' not found in file '%s'!", cpMsgParams.m_Args[1], GOAL_FILE ); + } + + return LTFALSE; + } + + return LTTRUE; +} + +static LTBOOL ValidateMsgGoalset( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( !g_pAIGoalButeMgr ) + return LTTRUE; + + uint32 iGoalSet = g_pAIGoalButeMgr->GetGoalSetIndex( cpMsgParams.m_Args[1] ); + if( iGoalSet == (uint32)-1 ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgGoalset()" ); + pInterface->CPrint( " MSG - GOALSET - Invalid goalset '%s' not found in file '%s'!", cpMsgParams.m_Args[1], GOAL_FILE ); + } + + return LTFALSE; + } + + return LTTRUE; +} + +static LTBOOL ValidateMsgGoalPrefix( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( !g_pAIGoalButeMgr ) + return LTTRUE; + + uint8 len = strlen(GOAL_CMD_PREFIX); + + // Check to see if this is a goal prefix command and verrify the goal... + + if( _strnicmp( cpMsgParams.m_Args[0], GOAL_CMD_PREFIX, len ) == 0 ) + { + char szMsg[128] = {0}; + LTStrCpy( szMsg, cpMsgParams.m_Args[0], ARRAY_LEN( szMsg )); + + const char* pPrefix = strtok( szMsg, "_" ); + const char* pGoal = strtok( NULL, " " ); + + if( !pGoal ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgGoalPrefix()" ); + pInterface->CPrint( " MSG - %s - No goal was specified!", GOAL_CMD_PREFIX ); + + CCommandMgrPlugin::SetForceDisplayPropInfo( true ); + } + + return LTTRUE; + } + + // Find goal by name. + for(uint32 iGoalType=0; iGoalType < kGoal_Count; ++iGoalType) + { + if( stricmp(s_aszGoalTypes[iGoalType], pGoal) == 0) + { + break; + } + } + + + AIGBM_GoalTemplate* pGoalTemplate = g_pAIGoalButeMgr->GetTemplate( (EnumAIGoalType)iGoalType ); + if( !pGoalTemplate || iGoalType == kGoal_Count ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateMsgGoalPrefix()" ); + pInterface->CPrint( " MSG - %s - Invalid goal '%s' not found in file '%s'!", GOAL_CMD_PREFIX, pGoal, GOAL_FILE ); + + CCommandMgrPlugin::SetForceDisplayPropInfo( true ); + } + } + + // Always return true if we handled a special message + return LTTRUE; + } + + // Return false if the special message was not handled + return LTFALSE; +} + +static LTBOOL ValidateFaceObject( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( cpMsgParams.m_Args[1] ) + { + if( pInterface->FindObject( cpMsgParams.m_Args[1] ) != LT_OK ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateFaceObject()" ); + pInterface->CPrint( " MSG - FACEOBJECT - Could not find object '%s'!", cpMsgParams.m_Args[1] ); + } + + return LTFALSE; + } + + return LTTRUE; + } + + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateFaceObject()" ); + pInterface->CPrint( " MSG - FACEOBJECT - No Object specified!"); + } + + return LTFALSE; +} + +static LTBOOL ValidateTarget( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( cpMsgParams.m_Args[1] ) + { + if( pInterface->FindObject( cpMsgParams.m_Args[1] ) != LT_OK ) + { + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateTarget()" ); + pInterface->CPrint( " MSG - TARGET - Could not find object '%s'!", cpMsgParams.m_Args[1] ); + } + + return LTFALSE; + } + + return LTTRUE; + } + + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - ValidateTarget()" ); + pInterface->CPrint( " MSG - TARGET - No Object specified!"); + } + + return LTFALSE; +} + +static LTBOOL VelidateDelcmd( ILTPreInterface *pInterface, ConParse &cpMsgParams ) +{ + if( cpMsgParams.m_Args[1] ) + { + if( !_stricmp( cpMsgParams.m_Args[1], "ACTIVATEON" ) || + !_stricmp( cpMsgParams.m_Args[1], "ACTIVATEOFF" )) + { + return LTTRUE; + } + + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - VelidateDelcmd()" ); + pInterface->CPrint( " MSG - DELCMD - Invalid Command specified '%s'!", cpMsgParams.m_Args[1] ); + } + + return LTFALSE; + } + + if( CCommandMgrPlugin::s_bShowMsgErrors ) + { + pInterface->ShowDebugWindow( LTTRUE ); + pInterface->CPrint( "ERROR! - VelidateDelcmd()" ); + pInterface->CPrint( " MSG - DELCMD - No Command specified!"); + } + + return LTFALSE; +} + +// +// Register the class with the command mgr plugin and add any messages to the class +// + +CMDMGR_BEGIN_REGISTER_CLASS( CAI ) + +// Message Num Params Validation FnPtr Syntax + CMDMGR_ADD_MSG( ACTIVATE, 1, NULL, "ACTIVATE" ) + CMDMGR_ADD_MSG( CINERACT, 2, NULL, "CINERACT " ) + CMDMGR_ADD_MSG( CINERACTLOOP, 2, NULL, "CINERACTLOOP " ) + CMDMGR_ADD_MSG( TRACKLOOKAT, 1, NULL, "TRACKLOOKAT" ) + CMDMGR_ADD_MSG( TRACKAIMAT, 1, NULL, "TRACKAIMAT" ) + CMDMGR_ADD_MSG( TRACKNONE, 1, NULL, "TRACKNONE" ) + CMDMGR_ADD_MSG( ALIGNMENT, 2, NULL, "ALIGNMENT " ) + CMDMGR_ADD_MSG( DAMAGEMASK, 2, NULL, "DAMAGEMASK " ) + CMDMGR_ADD_MSG( IGNOREVOLUMES, 2, NULL, "IGNOREVOLUMES <1-or-0>" ) + CMDMGR_ADD_MSG( ADDGOAL, -1, ValidateMsgAddGoal, "ADDGOAL " ) + CMDMGR_ADD_MSG( REMOVEGOAL, 2, ValidateMsgRemoveGoal, "REMOVEGOAL " ) + CMDMGR_ADD_MSG( GOALSET, 2, ValidateMsgGoalset, "GOALSET " ) + CMDMGR_ADD_MSG( GOALSCRIPT, -1, NULL, "GOALSCRIPT

      T}3j^KC(VsdY3F?eQnPS}C6{DP{G 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 V`Q-WQtV={-sBJ*~D@OR}|Fmb?K58*F1^%hqn$ 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 Kfu^?+)&B$ZO*-}f literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/snd/Intro.wav b/Jack/Launcher/RES/snd/Intro.wav new file mode 100644 index 0000000000000000000000000000000000000000..ca8b5f53f6d7e3f80ea4623b19a575d34a97315f GIT binary patch literal 616776 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/InstallF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/InstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8ba6044fd0c6b00bbc8fc0eb444c51205dec07cc GIT binary patch literal 9056 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 r`P@FBVs0f6*$-|zXV08H=Q-y* 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 Czsa)z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/LowDetailU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/LowDetailU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27b2170e038c4afe963fceec8a039f14a261fe48 GIT binary patch literal 15536 zcmeHOc~F(t6{mlrse%XyF%q>gF2pL5s2HtVT(DB(ZnI3LGnr|1rZbr_X4)oo)QQtA zoy4gbjV94*qNb>Esg*^m0?Gq~$M!%}0x_V(g=nHE^6T%ugNN()z`h}vftkl#zB%`N zXFumI-~GNfan_!MAn#v1uY>si8UOq8|3^U)yvkola8Qu>zxNlCj*zq_X`yLN;pvSr z=?x=JG(P7+(icc9$CMHzlwfc^9?M4GY&_a&8jaCL+a7bF-@QgytW^RVFvMPZL*}J) z5O*FQ+iA&Z#GJ-c1(;BQ7i+P)9vkmqJFpg*^d%lWfzb5kjGMe$1<)()Zr`JKha7K= zO}Q3#7AHr2jJG}RLVp(qc-z1n0~5n0cS+Vf z-n~PfjI_kCTg|r3A745@O>|!KnC+c~uuO#InqnAt2CJ`PH}H4h*-AwGx1|hvr8Y+W z`@0mHg6FoxiQ9#*c@;gZ?1$)GoQa&i+|q1Mj+uFdLNN8xZC^S^{8!S z{db%ho%P+oJd=7h0?)WHwFo~i#q(vDSBm)^+7^^TTB~C9ZmR%Uh;NlKfYb;uWpg~3 zRf@?)7@3bqmv=(&t`3VXV8b1}1q{wLdxNl)hRB^?gm1`+KYDps9tIVd?Ekb7Qwot( z>P>wa7I*@!t43gc8RnLnfjqtlgL0cE1nv-Ctie0LqML|5jz0UZMt@v1e1G+b0>tKl zWiZ-}nZ;)8lifG_3ri7bT_OT@?wCp@l&f28zS$^pX^6_lva4oeFtZwwTT2J-C?At^ zdw8CCniyS##9}l27u;U}UBc^tk&X!1Wx#}TLSPw~*}(hAFtrS?-NG9{=)1?_Qff!K zF}whr3Z@qu%KLad&Vj$E6oJNUTG|`iulu1Gj&1 z1(;ZfIoxYmGk~M6*zNqj2Q1VGX!^7gm|X4+;!Zc8^NjW2XJ_%`F3-4PBordSjakKJ zv#scY zaFp0aN(_06(kN4jH7q1hW7<+GxJaX zs#Y@I6(lJgUPy(ARU*pP>kn+FPs@Pk24joNB)~S-jcM+N*&fU&Mv|vxA+Q-8us?dm zBPNb6XoNY7iq~{mLoIU!hXau^TFKRF#E7)+ha6~CBVG|*=M1~=+#7MbP zyAD9Ix2lT?5=LrQy#&M^A5Bd_v?w;=JOf#U9KpGiOS=8E`P#U4Qh7BMcXfmo=UKl2OwkK_i&}bdYz2 zi!^q`6qX2!1QH7)3ydnnBwHzwLaFSGr(k$hMMSDqM3PHVOjsFJ7m*56h%8T{T8tr* zfWYFBB#szcnwTM~l|W1)r2woA0fd<~f6OU!j65J0i%Xh* zRe_iI@Yr!RphI3<;FYnZ&Ds@!eld~`Bz?3aW{a}%I=wJ%5)GSDBSscUE2FI}Iyq1^ zDP{h#%^-oTOVUb8DpF$AOQaA`5moqlL`GYh`mP$uA_h~AdO=ZAA)FJa!WJw3`gv`= z2DrH@F|UNUGvu-Ge0RfdE3ot&7P1EJJrz0_?XI7yX|qgv^psW2sFG2=CcwM&mq<+w zkqiO{qa864NPKwL#*<7YQacx_)MlY-DFabT8ru?5Qj{c-1Z>2Rz}6*q1y7qrnyps| z=m;6vY>${nhcwk9fN+VyB2&E}0d+~}C`7anDO&uz+PNdFYXLWbtbu+!7|d&$d9wb^ zO8lV`FI2Rw1*CNFYS&NIB$I5a3&e=mvdr0SQNoQ57&0??$x23fj1iJ=Qg&HpyHB!6&0Gc>0 z04A5`#uJLnD!?*`%f2<{VC9->{P`>VMrz>RRL~)1;4o6$_jS!d#_*C-=0N*aTX>sB zVTUfJ!_JZ8u5u}0>+-DuB@=)trf|xXf$X@;t}U%q)xI_0E2MoGtpS+*6pcy^e7QrF2P8GMU(Y32bSts-|$_+hX?>=s(7{2KZ3G?<@FmAa?=- z3lNuD*K5t57xKT`Sc?xXVp)ZEz3^iyXm=U-Z+w8VLn0tGU{3;byhnmVa?Q)5cvs`# zeP4C^{q|A2J*aQ( z_@M~f(>V<>TMMJMm-pCuCiso5L${oIzXk`cVBcl%G2xeTXlyMCDoTa71=vOg;D;K4 zwo;&Y%^F_=@kIcSg85Ql1fK_U%~Ze-hr&0w!uQsN9K7+!x~$+8TgL6H*mW7H^*D4D zf4cx494(M7;{BDN^4kI)s@DPGb_Ci=f#919fZv1h!$R+~z*M(+Iry|2Bl9ro$k&mZ zPWSn&I_z*mNNQux*4iEymZEF5A^J)rLL^EO95o3 zjQ|tJ<6rr*l)n{{mxC+=ZUg#k$d34^DE!ck(6qbe_XUS<_tTypS>jt*b(?kJldP`QC|M$+e*=w_6H8es6gAcF%v+KJsox@QRNk z-roI8a>=riZ@ER}oWP}lC9&xe{#p$lDh68TkHGTtX22$T%ooB*C77CfbHx7h(eG#U z_)AL2=EBg=FNdbwX(<5fCx_e{aEsVuYkBuIp9jDGQRvE@gEk(UcIe!4_qFYH;2Oa) zSYH!pojn5osKJ|6O-qUzCZ4Pxb+G!0EjeL-I?#R9o*o?jyDo$tx*3w{-2=$jPe)MD F{{VTH42A#z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/MainAppBackground.bmp b/Jack/Launcher/RES/Lang/FR/bmp/MainAppBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4da4633fe4a9d53056c5f073cb0cb16628d7fbcd GIT binary patch literal 386176 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/MediumDetailD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/MediumDetailD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..98d70ae97508271cd1a5b8cd7d182ad24cbd24cb GIT binary patch literal 15536 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 H8a4VqX*u}} literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/NextD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/NextD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa0f7bd81669b468717310f7c023db30ef1c0135 GIT binary patch literal 9056 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 W);Dy&OHw6{Ff`%pOa+zn>h*tw`ix)z literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/NextF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/NextF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2788e76d73f00467a0772ac644d03b8486f6db5 GIT binary patch literal 9056 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 V)8fqBPYO<>oK82Kp_oKP{RNToZMFaa literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/NextX.bmp b/Jack/Launcher/RES/Lang/FR/bmp/NextX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7027f05e995800676cf2a4c3fa210e919d8c0477 GIT binary patch literal 9056 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 oc$|_AJEk+V!JE8{K_+djJ3c literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/OkF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/OkF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e376f64d3a4377c9231d3dfdbba491570388a9b2 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/OptionsBackground.bmp b/Jack/Launcher/RES/Lang/FR/bmp/OptionsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ed0f721b1c9348e972178128b820d7356c864e01 GIT binary patch literal 656696 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 NaJ~Q1_FZXd{|{p#j7b0h literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/OptionsF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/OptionsF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..98a4a7a3140cc580a0a1d51a9a2fae6a757277e2 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/OptionsX.bmp b/Jack/Launcher/RES/Lang/FR/bmp/OptionsX.bmp new file mode 100644 index 0000000000000000000000000000000000000000..85b59d9b735d2f08b0665c8966da3aad7fe54cac GIT binary patch literal 9056 zcmd^E`%_fc9jE_5e=zLcbN6xY?%sP@_QCtHf+CMvi3$}0%0nR_3kXU96(2DoCILsq zJZK|kG$@GW%{ZDNnpfLMO9-hAod#Xgq&1mNGt>UiOnyjzv!A=CJ#z!A!;%ec>CV|Z z=brOD-}C)^?)Uq>=bW3BTOoz{f62H;;_t;@!2f$;1XudI_5H9g_5bgmUMMg~l?J6o zA5ksF9&x3ev#;xQW{;(pPiF3!i`h0~&z!I&ULcm;L?|OdDG^FmP7zCtN|od}YRb8! z+x2ev$v>_d|9aIs4<1%HvCyPc8SVAFqsg_VGk*PLDYaM07yHL?|Z0 zHexDJi}{I_RCpm@EoSu!bX?l=y5^b3`o9cFSGXykSf3OfjgHkPk~Z`tKR#+n9563dx=;>gq?n_%86J-EC)I1tX>+>%cFXEe8rV9y*$iGJ;d4um+&)|3(^or zy1HAdu6`pVk*|z$g%Wc(F{>{k;UX_q`-$2~L@#GK&e>k(stMn` zg@{FJ?()AJ1!<2v_IaE8MWe0RC^Z?CRwBRZcP9k$!^mH3dsN2j>$m>`B_;RGZ?A2c zG$>=7JfzYk*7E`qemzdV07epPdrCcPIed=OW*s80& zCAwZxqT6NHvnKmlf_Gn#`5a~gJ~NV5fQu&cg170l;6cN)y{c7GQ)=RyG^lpKg2EL3XK>@A3Z|{qO@Qsx7z8nT;W;J7X*e=m!mu|ZD@oW zFM^zT%WQ0UeyVaMmU9WuMXwvn&U-C;%XNFw6$^f-q!Q7*_y@ zE*gVWjNMYy&H3P_m-Fp2hsgfM|+swksG?&qZw2J3EK ztmD#N!5&BU^f}jDE%i>a(kd-SX?cKuCv=FRAhw^nbSs&1Nl>N#J_F<)-+q$7FE=n)E~Ys$BwAkUJiO85o!nlUJW6g0*8B}e8iyOJg>xbsD}yeXFwNM^^H$CIkopQ zYvxia=hADwh$){4p;u)JAduhkNkD~OKp4ElO&ycJZ;}C?`5^aW6h(2awmqB zhQ!xJ%&d=0YOpP{8lq-3%t&sGp3@jR?{Zvx{_IA4 zu(vMy)=TWXrsPGp64P#uTXBb7+Gh9RkNv-W{LZPDJ&8?FvBeL@u5EDj|K8-j!|0M} zKP1c5bDx*r_Y;GP-U}=94=?X70TJbpz^IDpF_oe5RS`3*BWInBN+yCrSYmZ>Y*kQn z<+R8OJl6g7zSQ7FypE5A#8u&g!uQcdL=x!&_2?aAuf`t`#h;BPv&TrJ6S~GXqK7sqz-u!`&@~!^L4Qy7ecY-|B~2g^LrAC%}1v+ zYgRht4)rOHp53zigZ4FB+E;zp4s^rf8|+r!cqhNBf?2als(mtM*?D%*7M=4Jy~{RG zvUlCBcG}PAzVE5i|ATr!liHizeM(~HwJclTzV2h9W3v|ClBHekfAop9f(fhuYE)X4 z%3;0M@k6lE4ce+S?GYKiv(uX21PEC;8}cTf>RCPhgI}ZAJgI%2yLajA^xH7W^&ht{ z{(HMB<%%^f3#-Gj4k!LkI^O{(b zAyzMuXqQTK+eNxJQ72k|N^C3u6RD{{?tEH3q)6vcVn3?HH2Mt0!Lw99yhQ6(tQ>q= z=2!@BBI7BMfl%#T@L33X1`i9uRr2d%eeKgKu=#cn+v*A@mZvbC^qE?*a3%3wkx7kq ztFQBx2v)I04~!GO7ONK%Vb{~_u{W?g3=(4oD}YiAD%83c*^ew8G`8%MgE#Z*?tN`; zU$C)h=+sJ=@#TQV4lP!>oR&Km0vZ%gVj_gQ3MzT&(q!UvwfkEHey85{fWm^PccidK zrDKlY^y<_V?ejA3x<=RXJ0n>6tiC8#FA%F2LbVv}K1zGC_l~-^@}Qt368i#~Q=!_W zNbgbNW7?+ zN^SrvM25`bCa4wyPQA}wMv)>?r7@aqv^Lw0%@e-amjVw8)`3BC)(2LnLBQF!%p;&G zukPNBCoir)e%|)S^VUbtvyR@LoK)vK*%8yK0MmVPrQ5^`mkH%iLT8_{LB3^! z$CbNIC?7Jh9Q6>C2ahjDC9Wt#pqwbu=OZ)fk5>G8>t8SKJbzhz{ZZJG`oOe{{&Rnrl6>ATp>|yCxv|mb zyd%zfg;b9Us`8v(Jv!{HPh<@$$HoxxiK_7qKRY_~tao^gcVrEk_**;)+QS2?Jp8MM z`{N4i6#xhisdhb$!TgDK@!PbHK(nP1i2CwWPRA#QmW3r=m=aPtVAE~S^lC<#OhmPg z(tK;jV(;TYy$&m#6)WdL)!@@G4frJt-Z!cSSQ6G=1}I);ZoHDP{>qBot+_wkzy0jx zt*0+e)ZRQ5*8@dXgj*okAkixmao5U0r?Il|MHn`e1O&pD)(fm= zeblsi|MhE+o(nZ7wEX^j+0NF;6%A1<8}ctbux_gV+tMThD?=Sety1wP%vzYfA zgBDy2OucZr@gd)oy6NhOz$$1LJR3%WQQ79eZGxSwY$G)@x|2G$Y`?%F9PYH?Xrv(K54fmMF-wV~;kglU2mrZ3zI1yu4F zg&Lu7py;QiyIO_Y<8}ASS{|+1+ZMa#a`dXks1*$*O~3Q4OFn6VCJ&ub;V`Ncu7Fdm zKH=&!jf}tSP11Y%iFXFoK;7wTc znPv;Ccp`RbN!gCMy7u8ozV%`r5+um#B2&Ji=t)mlzN{X zi)i5uSrOIZV+Kj9w16YIZq_V~hO0^k?8koO&=kdAPF#g zrdQIkFj^W)E0;A;JmBq2iwrHr#yrBDeM) zA}++VIDX;;A#*Iirqf%j#qHz5EIJFUnPHE~j9Ew~s7)K}lIsHY+<;Qil3;jvO0%2N z=Ddw+S#TkMcPM~+*I_I4EkkgQ01`XYik;Wq-`xrzye!;$^|S0dJC5B++0-<3_W4OO z>kuhLExEL4%hknOn`4&O2d7<3-_{J7v;GP+6NVg+a$)V4ZJ&O3C+p~)nB@(A33Uir zeWT9#Mv`m#=BpdNY|Gf%>@u#5J9XmJQz$c${03BucrDvuXHOQCE7BcQ7?5>Y2VC!N zyv3bycF@x41eaoSAqFDd!Iq{1^3%A*%EB=BzwS3SwD>25IX!jTH!(0iK*df3bHGe->LE#(;e-P}U(`b|Wg^a2(oq8x z0u6X+d`r<{v(q}T(`T%Rn1t>n1{s%O{hNo{Le1xm!|v_5}!m zcmV+j%6tJ~B!o|&!r_qKJJO+u0bXJ9dQRIKPNy<(ZYPJ*9AMNdxWr2ea1BhZ?UF+V zF8nqzJf(<{0apNs(Xvol^><2*o$;^;KXs8|Tc&_ArvDnN#(4>{=+>!V-iPotwyyjF zSyZJ9nO;}NdZqrP%ngjJCJF38=?JCTPRnQ0vLpzjm@_b@+{SMc+^^5T<&}YOE1c6V z5QDdmq!k&IaxXL>PS@(g=t)DQz~TIY_B@(27Mk>(R1A z!b&lBz^oc;P=dcAX2?q`@m+@TJBfnHV2_+h!igbRl}FOD=nlbgJC+mVD0-K8MxH=K zK}4iX5UXa&*jXz3xvcYiqw7Kk_eG|mi|ySO8C=q|jwwpx9H}-*q)cQKc(GHsSzsca zV%^G@Ul|FKC-OLaM5KrplTH&P>O_eqkzCb@xD_em8D$(J$1E@xL2#RB=eh6Ql`Vql z@y^NyD~=d`t?*fWUhk8Mpo_Cga3ey(u(uON7A#VPNK|2RHd1Anp>>F59piLP@wlq( zqZPU+nI>GU3}xi#H~204`t#QjQc6O&BOcTMxZa5n}OQ4pk?P1!|>;vUyAE^&(! zC7wy}L`9>yI zF#W9mj3`z3i^HEA{{GhQJ(T>vxBlL*ANjNYOK-7sC#K8KC+ununOo)gK{2Jsr_CnBCRM43{d?rrAW3DrHk7s${%EgYLS&RxgZ?p`=`jO!Hz2Oy@WS zTE2EP(m<9-snbP%Yx+m-cQIGKv-1Ai`<}mb%F>;52~^yfCqtJsXol^fm=uaJQ%nNI z%%t3BQ0~(yX-t76!zyWPIxstaq|XZ-!pV#$yd`n1yj_7MhtxL`q6n=NhupC8O@` zFP?M>S7)qlSw?Mc)r{CnF|(~i0#Nuy{AV&z23wA?IKBr#l?%8;S+&-DtP?;E<% zKWvd-Sb;HQfnmTr&X_IN&2d+!xG9oonJ{eEqy2Ffbiw#iHdUcd*BG-6LGz4*7hwE= zp|&YJ2hP{}<*Gb0W!l*imD97x5-4dbJ`*jCrlnJ81~Scc$nJLw?!0xfGr=6OGGBQ< zc>YyNoPwMg8zo-?_pu^28KA+BT#~N5z5gYb z6tDtN!5NjbJlhIXIwi{zDLxgc_KDaNBCf=hz2M4TbY)AO5s{{p)|E*-FEKvla=!{? zK!q}}Lg8N_^DUQpUlQxfXl)tVI5X6r-v&lq5OHTj>~WE*h*GYhm{>wE>0}VhWoD@( zTsEw3Swiz`#i|9gB9E45(W;LrRgp;j9|92vqb@lwBJL8cEf*Uq7~^GSV5N3YmB)}O zLs&IR)Kvp2p~qXaK}+X{{nJ}=r6TscNPSYIDx~Cjyi3A2U6QH=XXLROy}3=IUM^M@ z5V%yEDfY04JKGIP<*w|jM8uWTx(au%%gTT&0LOd8RsYe~28^!_7<!gDkY02 zvCFzS0xRr#9;3dIsFq07izVC!ialzjQ<=l3baHCa466kQjIk1!cnz!BclPIdzgw#B zJzxJ-$Ka`T118jZ4X*))%D^i!-%7@(5~#X+UIuhx!)39)f{1}ULdlEml~rleql>*4 zG=lIW;7joc+W~QM@pjy}GD0xGC7(w#2>1x~h5XJ4tiqQyNx2mg7FaEJ;|_?}a}Fr+ zBRDyo4J+6S95jQfd?T-(sQMLH@lx9SG(4^$c+z#hQP(`fYjlIF(S{4IQU}2|uPFSl z$o(oIAS524U{6gQBhvoLCF=;G}>t zWJ(>BL#EY3;JNQdT?ZRchD@%5@Q-L2Fy@-y=xg{Qq#S(>(;*&m?^l6lU>B&>-6CJ9 zx0!DZ^+hBVM+VNsBdZV1uTyz#0$hx~kOrx^UWO@Qc7m0*0x<+W0s;VpNK<2ML5tvt zam#McSlp7g?cOmv<&IQ7PFr~g%|;|N0Kll6o4Zf`c;oT!=yJ63@tn1-V^f<(r!=8l z@~``)x1K_O` zL?}b3M?er()su>yTFARpJ3uO=ru`#|jgdz^gZ6m%?~>?_IXGbNrm*$G*92VHs_=ag zk;10ePt3R>moL@5d~>H8ua%KIgIEDB zxFKRJq6flqq`6T5#1Wjd^=%NxR{|!e2ra=PL615_=z>c8^4o%D-j=(=;u;Y4;r<8$ zeZ`6`6{(9UW)6w)Y+mrBlHudehmZSS;eA^4;yBY+UI8nt6IfxdN5~qP_yQ|Oa6lM= zJg^$C1WY<%wSNCY9v?)um+AK`Zt3k4S8egCtmWy7&+i9Ks71)a>`1iw#48*XRbLaV zWGN!QO@qzV>R`?I%EM6Q(ur;jucL(CthW!tO(Xb~5jw8IXVbz=PZUX@sDW%>`$ua>~ z|51mB6*Nc1UynB33>tP(ti>6yuQ`JNGO$ASj`R}I12IIfC3Z;*yaw@E(4cal^p~jI zW^4gl4?W`bJB~hD_?a!9BXk3hgk`tOTc0`h+Ir|ANhgwt6rHgJy5m*9BELmy3LhlA z>M>S!wjgIvpQ4qY(27jRd*+&nUp)L^#Z{gqJyMS~nkfxM|;mdycC(zl+2syt6MYHv_|JNPe^S-FNkSz z3z!K>a%1u4`Rg*q*icC6S7l^U_5*XyqoCpCVvqB0idw*m&)yNm@=nt@(r0dgd z3HiVeY#BR$-T@_00Tp?HH$jjx;Ss)!#@Hz!B*~vZj!3w>@EKthoQXz|vl6_ITxIx? zgJI8OyB#R5lwwcQ>YZ-Nd|IC88d8Ka4$jUItL~Vx9^@|l->l4b-GGa<2G?KqF1AW< z2u4yYPm(rZ@vunn9azen3BHkoUYPA92nHe_g9zt4_z_Ngt0)qo+2A9DV4H07{ z0v#{VJJ!(>?H#*-x`OcCff7zw$XGz^o&+mLtS-=+Z*e_kz0fNVg&h>`WB}LLZS4u^ z9gEgl7Ob?4oK&yyM&pYP&e$ug?3aEp5YYqRfM6gApyNM1Y~*j8U>7k>_d#SIDWfXT_tUKzq^kt&g_WdyK`uOOo@UbO4Gx)9F({r(T* Czj%)T literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/PlayU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/PlayU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..39d4bb1bd16d938ba863deba08e0b5d5198cd6d3 GIT binary patch literal 9056 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 BPj&zR literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/PreviousF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/PreviousF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f85d6f12527d0327483e92a604098ed23fa83de1 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/PreviousU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/PreviousU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f9ef8d65568fa96d24dcc24f537a518b05253d13 GIT binary patch literal 9056 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 Oev6QuIB-rz#{U7EnuwtQ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de44ca2fdec9f3fbb5b53b21b48cf6426eb38519 GIT binary patch literal 6296 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 bLdYaJL;@!e42qFW0Y7q;+5TdK literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/Publisher1WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..279befa58505345309c555c45133b3f36110e10f GIT binary patch literal 6296 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 a^_Te@t?;4qOBIZMqgDTR!*IDsU;hR0o)U)u literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/Publisher2WebU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/Publisher2WebU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c9635db95fbedca54a415b3fbcb7cd9ac5fb200e GIT binary patch literal 9056 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 MhMxYv9}_10A0*r&asU7T literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/QuitU.bmp b/Jack/Launcher/RES/Lang/FR/bmp/QuitU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..97c8591a9ddc0f0833f31c4b6fe8e58c11c9da3e GIT binary patch literal 9056 zcmd^_c~lkG9mnb4{ZAW_H+SH@H*cM{@Yqp9Jfd|;3!31T*eDT!2re}!YHWxBafxUa zZLC$}If(WcJP}ChE@72@2_#W$X+R^MfJRT!Y6a};cjof0BZB8W#5CG>e%y2C&hIY2 z&-{M(-nm0$RIK17|3ZBb=##Go9c}XH@1QmAOP^E|sOsm7$lOrl>xQGHCCdxr8$p zbLJvh&cX`Lbdoc|qCC!cm^17l`b>n6Ol%&YA&$J4d@(ZbzK~?B0BZcoMqa;K29-i| zshr_Yoarbhp5ZKIDzQ=}R;$Dsl~}71>xL$rr4BN*y2D)yR#1Uam7JxN6HjxdTw>f# zggD8;wDaI#-tpB+Tz#zCos-he`tn>VN}JBfHgb|)Hc)T4$NIERmRwOzV>`O3d%%)6i%(hytw zNm>A|8p*+cOaBL6z=V&fK8LQ1U^R79tJbnbErQi%UrRnGp1VKj28cU1hkdH(#y|hn zbL&>mtk{cgR{0sI$+#r%I!J^B1S2*}*hs*&u;Fw>AJf^lX)Rm*tOtmtSY=gCP>ABn6dw0&lCx{hHrqkD1VtkKoDOHi#*rv|P=`sfHGz5I0_uuJjJ+2a~6i)R> zpx_}z2qfS#(W}eSKejS7W z>Ooc;vMztqej9fin}1CBeJhQ)!qS^}x_j^3>7D(m`7DZb=n@x}oVu zrGI8@z1-S%ySu0NA8oghM-^y74J|_r{nCmI1HtHL7hq^2>k=d7W7 z#h^cH?0LkhoT>VpN?L&2-cSM5_cyv_R~mp7K+#()g+3aGX)q8!>V6b8E-5SMFny}P z9sw<9WGE{XvJ&@4e!nJN(Xi;3a;AN7Dr`-Cq6$KzPXtCB@*k6}wx3c2;5|Mbv7$c1 zOkhS)8yQAsJFrkzv;=BOGSp;-4mwa+mDWa;(b|qZSD{0l3hfLZE0|AlRdPmz;bQC@ zxbP3cCKZgGlpi|bh}vE#@64&rP*^F=M0~*nB`bE9+Q{tf$BOwL#fZC96DeB2B}12e zxDzGdLxtw4GKCD~M-Uo@Rh%iG2+N7^8WGoyopO9a)TxN6$Fz>3M`XnwD+WxTHFGm+ zj?xgCM+$S4NEs`N0(Y4v8d36RnygtifMH`LR&(Y8BD^lm@Z!4hbIYEeSur)H#1LG} z-Fuz6_e9)}K^Vg9!e|j7^b(E)llvLMGzVh^1!^+WL44>SL z#)m4d7&Lt%vC=K$!atmt+&puBbIdDE_UB4?D_)SP4${6}+-HR<%n&waWZ(d}HC(Jf zfX#bYOle0bp=78hW2I0on#>lrGkp+nXh6&dh;9{d`Ak1HExqmKgbVYNzKNJt_Jm25K44}!^H}%!G9Po^nyIwe$ZRk0AmL-E4IaLI7;_(c?#j86V?_QC6O7Jj{GMaS&83&xOgMHt?5El+#IfZmIv(WdHURUFk`*}6eyM*VecZ!vwJ)=>R1>k7 zH}Cf~rt$i9s>octVL$l>Lz>9fmb0!X{{7i3oulzgSo#~lO)UsBvdh;D;%z{=!aK-(Ri0U2~J_Kc@ zUm=2MJkq%uts-Ip`P;b{ z4Z%>ZQUv4UW#zd=k7+#8X$-Mc_}NcuY}p!dliIXFZQeL4y@Q?gfmKSoGiu|N)f;-= z-Q(QyN9Vl64#)T!wL^9=X=Qv&WBXY(3y-SiZ6zA}aYMiX=`g{zO(Sj|z4Uy)Gi2bx zw~45XE9u*vJ3n&1zt5SP(KG3V^I~|FG~53lu;Q&18pjz!&{1pHKIt$acsFpV5}OD3 zHX(m~2CnE$9V^#&!@G8Tw-K8=l zo&Jps)Yrpxcv}r`tL5#|2NC*xr0>vPKE0*}O8sF%^p{v7u>muLl=c&2XepI` z<;u%p(P51sqikH6ca5Y>A5yLhst|&zw1G9+z*>zYbr3Bis8)ak*9gH?x}b7>@JVaf zUqC5zLT0mcDT#Ho5KP z_?9O{URu;LH_j!F literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/UninstallD.bmp b/Jack/Launcher/RES/Lang/FR/bmp/UninstallD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e421c22dd16819ffa6ac5d9bd6079b5fffe91a05 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/FR/bmp/UninstallF.bmp b/Jack/Launcher/RES/Lang/FR/bmp/UninstallF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc38bb4bee6aacb0e6c0f6a1b3db87dd90ef6980 GIT binary patch literal 9056 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 Dz1582 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CustomD.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CustomD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bcdd0abbfaea3cd51de026513fc3f0ea49fdf812 GIT binary patch literal 9056 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 literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CustomF.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CustomF.bmp new file mode 100644 index 0000000000000000000000000000000000000000..77d9282d0d844b53d31393bccf064caf70e7a68e GIT binary patch literal 9056 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 Hr=I%1DV!|+ literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/CustomU.bmp b/Jack/Launcher/RES/Lang/EN/bmp/CustomU.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b38eee760fd45ffcd36a15ff9ecdf8048717e162 GIT binary patch literal 9056 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 Ie)ZM=1w1q2B>(^b literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/bmp/DetailSettingsBackground.bmp b/Jack/Launcher/RES/Lang/EN/bmp/DetailSettingsBackground.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5db5a56244ddb0e9459ec84b56ed667649ce5724 GIT binary patch literal 875576 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∈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

    wlMuBnC}Wb%1m& zE5*J6T2GDAZm5{%4Fi$F(o`X-6^J%9NY>W8CF(Rjd-JJT6*QL+I!tY}3&f z=s;JqG~EqM*>bEXR2?ITEXU7=ffwQ3$k;X$pE!?WkA34mepb_b)ePl=hZqK~hMKa& z6#jRJIN?L5(m@d7MEU5R$mP&pH}-wmwsf4MlHum_C_xV|$@M!ku4Si8Tz=gQeU8^f z-fhzhO% zNC}Nb2#D|2h1~H`-Le%CHTtd}xM<5v@q zTU5_5J=ayk(2rHOH&U}XCzUeOX*-4oa5E89cctPqX3&KPA=u2yK}tr#pg-M}=tCE3)i+HtIEI=1F#jNeLCkI;Mi33%mCNpO z*+?T|wydI9ZQTmBSdJnC{^4VR-2HJt2Br#0EkLFNWa$keNqroWT7jsO_vFTre7t`Z z=+Fd~%&5;aPx*~`542jE93FsI1v1+sX`8EkiB4 z19pWhgN;(VcbFPso-)o!5dUUV9&MFwgg-|lDTjd$sS0UoDHiUX;<Ya6PsDVrj+S6Bm((o`X-6-a5SkkkrI2c+NPT-qn7iy*Cnjkxt8HZYS<1yJ9CMgA}d3WlAA ze6n>vEok;i2AMJt*GHeYWQ=WBCd(r@veH$OECV~{dKC^r!4r>zD;$LG<~v3DQ72do z0~sGs73oadBnM=B0ZB-*+dljjGJNAeN>hcTRv@LRLQ*Rbb@HCvIFjVT_pYP@D-{jv zbm{=+s8F4mz)P2xz^WO6k@q`Nr^E}-0FBO94yuRj*Z-5&>}G*w7y1#;I7B1wH5 zl3IZ%llSDtk^Do?a>}lk zLQO>Qm8o<(qOc(9LIttQp{E-e0(((M;2B0|7}~OJi;5Zx*T=+;dZd6|%XAD4X>(0< zjqMxQS~UuYIZ=yzqRKktC$J9H2sfSeO{h*X&&V=PSSL(b*0dwjN73ahFP%~h^+sUK z5HLzpg`-v&cYbOdt)FH)3X}JvRvhCnCX~ReGZk4@WDlR%rf$*o?3C(ulJAA<#0PdA zQYjP{z>{NVV))Q7k9U-TFwMo}X8fEmSb>REBSwU?B8t>S{AlZns$fhF(+DkxIv3l7 zM=(v2ftrbx!qL`CsW4+1@bSbS$T18%wo>p8VRV^yfLFglJFrNcdy?$3oX?4x8B>R{ zRVdccVhkxk;Ee+*O%;+_ft02SNv%K z(>0tcOQ&K65i)%IbX9XBUH0`{>G4Rj@x@4Ohp??x4~)?8N@Wfeu!bpLB_62E(R8XK zkTI&P6ts2Lmvbo;p>3dVYXDN3DkQZ6DNPlUT7eWM?@6sl#(_)}F3K}xRkr24u4ri^ zBpr;m6Pi{GpFnM09b(+Sf=0gZ1^ zL@IV#MNBMNNpVHh!8;=TV+0!X7uTSmChS?*8_HfhcTRv-^e-jnM@a^GYm z<3J_~7aTVh2TF(xi6_D|n+&j@qM}zgG9+`h_25ZWh)w$6HxkgLV=oBoRFra}G&NKP z6@8BD8E$M4qd|!41qu>OLvd7@Bz0#_L!xviuq?D1fq?nBx7d3fK*DTH zkur5UpB9Pb8RW;I@oEG@JUEU7W@jA9b#BQOB((x5T-lRPi)0)~Rk-f1xbj#TMZw_6 z5Zk(pbulkoOm2Da&EHEKINAQI<)p3`X6pC;+oj|)ZygG#k8)pmKe_4MAMD4%eXX3_ zw$*`3&^ivm;--6nDCrK`BrufuM{hK8DOTpwLbUVI(DVcHMm8>xXtNHuCN~T{3 z{^Ng7Ztn9gB*}N(=%1C7&%GCfxM&xWpBY4qLHer~E+ser`Bn%jQxQMi{NAhC%S%MH zLOW<*OvASS%5)o2e|8 z;Dz3t%3@K3R112--WqP!b~F4HZH6iqyoVg5DGRzvnOqIeMOl%jWgM!l4U(UDls3C$pauvD}Fyc{jov zw-s~yd+#UH-pS8!-0<7KN~WFn|1pui@{h?hYZF&~C5Zm;QZnl$xTP;8$s3yK1&{v> zfxOVCY1WPl?mVp$pV0LvmAg@wT1OR=_f_+5S~okJ~=Y^HEV zvnDK2kI7mqs!Re==5`88ZTPZYU1V8J&ZzRdn^p3X%O=S>2?Hfs^aaThgBMbDqM$%t*=)9m^^0G`FP3#6p4() zT6&CrQ|TefQOY#wR+sh8Pef8HkR-@W4U%yn6NTnso*j5YgN_4Dr=>;Mn3?sGH2WNy zViz{>y(Bp&Nq?6l|6`RT@#1IBEpq|{;#^spw(5L2ncKUj`VqEG4^<=oy(D>yYZRq5 z+AHPcc7191R+79TNw+A0?;YZumnCTx0&&ywj?>8omNbrV4Ncs`dGA0ZSeQI4wN>r+Tdn95~5pGF+tQxuF0 z@v>{E#La0xjwxl9(a3PKgr|x|0D+g1p;{G+Lxj^*g^98sq=(W6k*ZcoM#fbvde>}{ zo|r%6DJMrC+J#R>QY(;vU)FtVTkz%fXy0oBMTnBk-Tq_+fC+{OD;su21S+R&2T9W*toZNE! zPWJ~%vP!BKGWV|#<6B}D_1b5@Sxz3{Vz-NnN%yn#6h&0}RzE}f86KT#1CM?TqtndM z7f4lS&dhCgo!APxqk#AhD?{aIgil6NE0BgyjbvUG$vBXzINewAdw>QutSvqzx6u^31i@*`rv8jQo4sO$ zKXvH~my)_%U27qAKf8JVAhu1HzNqO(gg9ZB?&iBFqkD>Bzlt7{UKiI`lIs3T_8*bE zMU|v`c}!hTh|_EJzip^%XG)1A?JFnu=+b?jN^;mIcGs%Eyxj^j=H7DhMP2&5mzCeF ztY}w~ynH@MelB&ODp7FXMZ$9ut1w@VP^Tx+cdyld-Z0nHm8JPIIUNgzU-piH9kLmTpmKw4@ALau`NdkT;M4JPB*~I}%+_>$ z?l&q1sPP9ElbhfEy{$%lV_W*GNLIbn6h-eKS*uVVckrD@_-)Ibzf6+j(raic=^i;d zP)=r{?@pslTwAd%^@)o~-GBYg5qm-N^wk>(^6okR`d`2C=3C#QW{RXq^*3X%qMol1 znAJ-Q(^;+h;#ZQSi2l2|_ueG=ktDU_PbE^_ordAq>&lX(Urd(%m+y?F7B;SI2ZG6S z5@|r7hDw%ux-64{1Fo6ZM89ZkyIHrCNee2~#fc)7uEU*YB2qOxTmpq(uyq}!C(0<~ zEcqYVOW7$67OaB8%*2S7$Udv7$e<6K)RTc)a;q?K;(W5;0)~RI7ZdS}OMgpJcbX)`_S-1ZMwndkISg||0_0$jEPiFo>D%RfkRdUx`v#ZukYTsz%VubG|$sbA5Sj8e1 z`~Z*nj-NM3QZwvj!4k>Y=YRe|GVQ%>i7UN{5bc{YKkew)z1g~SFKwUdWqYfqGN|R)i?Wgb?MAbprpYjxHpj+(m1)?rDzTf^p{so zQ!~X1!UsC6s5(=@!B zo3K}M+J9GQhFR6H&57hS4ZX*I0$un}%Dn)K^mefV@P3Juqh8|G^42NFCs-n ziH<3PxH-L&bSHHy#L*E=R`Tcd;%lg<*Gr; z2JY`8O7+q*zL%t}EDB4hOY`v2XAl{D6FT(o7c^1qP`zg3=~fp-6wos9B_eUE&{Zv$ zCV+?TVePt|ro_(+<8&!So+Zk|WD3$WM@Bo|WIxP43kXh^6XHh7JrB!fI!n`+>2&4_ zG~kRwP!(%a;2E(>YFiMJl-J9_Mlsrf7&{qlW~0ik*@cbQgQQjsLwLIcZ%Ko`F6f{&QgG zs0gMf#gx@WH%Y7bq1UI?WyR0_lQeTFPiy6O)vXXrUtTC5X-?YD{Bgxt7Lw%ql4QIC z!C5cWKgT7D(t@+Ej#a#TNoUauXNpTUzFyZB!Vy! zqkK9g#&ZPDMl9T0gkU&yWc~fDAf^A>~;p@mxB(Ef;c-7f>8)%UzC3` zw+LR!WYqz6>%h>(e31Y?3X(I_RadYG84{SL9`@pv*(${oZcrlgqslv|@`|?lf}2v) z6z@#F{nvq{Rv@(MRyX6*A{hr#6{LGBiV3nGl@VJ?!KW?7x3MWWBB~p|jm-24CK2=Y z^pD<3y5gL*oX`ok>1l*Pe_xtDx9MQT5Zx=M9k27yKPGjrON|Bl>p~P}ugq48l-!5E zbN=1$;JPkvtVogszd#^&_k*iftz5nwzF4WoY%O@Q0d@@;yf<|HYIFy2c|wwc7cX+b zX(r6T-1E``UAYf&D%OAXjd#Dp(pwvZI7#z;n`m36u^p2}(PM4}AfN;G9Z^A-l>yd+_* z@S@LRyx!U3Wj6mezMU;$%Wkcgn(00ddo~9IWEiBSL7YydUN0vXi_%Zncj>n?{$Im@ zOHylqGAFyMyhnU@3V#MyUOGNaf_=EBURt2U(1x}RX;U?E6cPB|%jM+GdT9w>P1VlA zJP-ziTM6J0St)0}$+dc$TvaH_ob(I6dlnSLe~rhbxsE|W3X@rE3PS_aiBTquXi++vif<%Y_g5mXD(r)DCyf9~(%FMJKq_&mKqDu@3pJ~$? z1cfkZKdu8wtw89orMQ0zkX#1x88@m*)}0l}qS=yBg-|67CxE!i{$n!p7qH;$5xOBo zzI56T-^Opk0Y-un>E`xy=zIB0;g5cuOnVijBMBlKftoveuABQwMaxm^MpaWP(!NT( z_n+VR8AQU*>!(T2V-nx9l`tY!BY>NO(;FHv5E$48V|P=!S@g$mJ-^;-A+`cM`h0Hq|j`l{BUXbt5X8v~Eg9-JBLtXT?CE0nH-i z@49HJ%CgDSIq6(PyH=o6VMT{mWYG5Is*25I5RZf#rBs)fZ+RAJNYy4mO9wJP36%f^ z$-D)D0&>bgAyrUR*#a^<5rxMTwnJ9AVL6!2he}yF#iXpKR2ef0xk+CmjnR|t`t=~G z6^Oz{d}<_fKr#+wqWq94P%JW0ayJ=!$KUs>WY&K|er7=w3WK-%AO0zs^X6Zx`CUHND@~LB8qs;f2t`iTfserL_8A{yJHVJ74cJy^S?8PD)=;rTw21-UDhkEb0IEVBHv{#$|=uwcLg(KHs3C$V#4 z5>ml&N&(4S*00NX-w^d%KKT{VDn0Q|Uk?)M6>0*~EN=dFBWe10B;!CP%8Z^36wQf4 zL5^v5bnc&$*{>Iok-AlvjZ66W%Rfi+{AZ%HI~uC58Q@$KN3zfNwOO*DnotKZ~@ zzgLNT>xO!EFdZ5x?a(B?9ND(kZTeIiO0te1K zIbmoe3Uktv?)~*30m!OafD|elF$GA*fmEfaS}&q*%wx{G=xQS6SJLd;I^`b! zE(zlZOkkEQ1P3P##g6=OqLn!QG$B4=CR&5@*ek!hvf%Lx4EA766t3BL8-1&-B@3_T*Fea*g^)IZ>kCAuRA76FUMY{n_q*m9aTo}gL%GyyrqTPzYRk?8D+5;*_Vl(SIcJ{Fp zev9E*%tE8wPoQ9&V~=|og^^aH3JNMixjt+PLx(`&l=vC50>jLPOk@oCX^Q73-}X;N zQY(-`br(K8l5rpt1xTav-!-?T$x&*7Y01Izf0Ab3z0lsSXQP`W>9^%B90 z)4u4<*qN5=5Tbj@I@rkD>~_V-?qIm4xGIfz+3rPU>F$nDu9I$&VSY^K4oO-gKT4pZ zK6GnYy0xw$E!~-C%@1(F#rLeKthh5xUjtew=+rP5*(ldd;LWlbzY*oK^wdQq7A{7# zj4vEp7X@3pGcL*(nyI>cI`iVl7JbT(?Y?IDdAt_#A(_prUsy2_{Lz;O6G@S}tmf^@ zFnGzYz#su)I1IC;s<8s2#2Zc(2l|XK&Q50-hc@}%e=?FAPm@TDxRvN;#s!GP4>TRlW=sf+`p>qvuWb?iwq!Z!If;m<<4)W~=Ay)1 zcomz{-E^zqOE53qqMD3ZnHpVkmC%SD0B9E9%qq%8TU)tmh27Ot+DIe0s0gHP*U5&0 zy~&2I!lVHCOWm?dKux_6F}trSen=CdMfM<@*K!WJKy|k9Xv5mbt6-9&)f@5^AR(8& z4j^I9r<=}T$j+xkVnbhpq*frMiAY?d8zi<-MRJ{6av4djKnhp)FlLZoQ#tlL6Cc1 z1c8Gfs174C(^)2=m^c)^p}_V~q#qF{(_a@IoNi|gKuS}Eq*fqQs!t7) zT7eWM?@6sl#(`9YYj!nxLgWLbNA4O8U3O;&8aefCaCd1MgJLRAvt@Ug=b}=W^_9<1 zEf`UYnl+rP8|C91Gb{8?COI2B+#E$2Y3j%F<@CZrP{?%=(vXp%U4X2-?58vy4%uZq z9rJ=+C8g_KxFuv>DYu{$Rp-jo7kNzK^kqVBxN;G2QzoL5UyxN#&rw2|BW4rXkPsf* z&7kba1c-UoSt~sJx z?Fq85j-8H%#>?ijsW|K+1h-Qp%e(2}lrtH$50OufjypOqHM&qr^ze##WHI`zpi-ug zgS2LD9gV#>)S1hXIV0@o3MK~@QCE$MihZ3XDh3f#F9a*pof7R#Azd*y4x}_yNNNRA znkpo<0x3-1lUk9C1DPmXq70TUxGbI#9hMAnGSZIG6EGwc`$MTyD3TU5XXiHM6w4Rx zxz3R0E@qODIfc_nMP`rdZe{2o%(Luv6BIgO9@4{0v*{wQ9*03p0Sfb&7{;Q}n-Pf$ zY|F}&;2AgJ%^7;i(jkw?}00D#xAI8M>G)K6(g0+cWTym|N9?Gye3OY~J zN4Q<-b`Idk8)3w_F-xY~hF>e2-7Zb!6N33j_T+SymOWalZ)EVo6R zokW1vX&CU$Hw>gyIW}Ypkkks~rmIN$KOK^qflS_$T9I4@a(T?fzKYK!27$$CiVMZe za4O2oJR`dZ_uzzeDh_fYYx+@#ZFDjhC)}A9!&+@TD~i_SRM)0%;apQAi#taB5BaM{ zdmPT@Am>h2CqT5cvho?~^%*I)*(q5mN+fNhk`#xBO2e57DipA@ z$Io$|RFA8N6!$AgTp+5_7*S@~B+G6X$cD57QY(;|m-i&~X_1Tr zscNq3gz`}FFfJ6E5(H~mDvI*B*D5WCmTCn`z{E=fj+)beVkU%%gE!=>Cp}R9jF)dJ zO!i{y)pQ|_Q&fZdRve~Mb_g9|gO(i#azNk)5=Z!@suDnNIRiHu? za`qMzHaKY}r^uUNw=senH}~-QOB6)Vf=&Y$b2|~Qn2};kXw_xGqcbB`4moHmf5RxG zxZ}$CA+^I;42HkAa~Qnh=R293Llz>XKO8%x+hN~fFDR-O z!@rEEK*>E30u@N~9?8_bF_=fA4j&Rax}R}&Q2QP|DO4vBoND$aI@TSJ{3$~^6+d5= zCHs<`S9}#7i+0N_30lU};sWZNN0`lWcnn=%_*urL8gOhE$B0Y?kn6;8`y?EtsRB|f zjun%4W5gfG=Ox* zq$*t1{+BQ-!;@DIQh@-c1MLI(OX|b)!|DNJ2tG8tPBcD3M^V7W_!OjsV-YAbaZ{N| z!|OB#62fFL88|IUZ|RVvD}sm-gPVuO(zA)Pk#Vrh(N{7Yzkn?cb+UtyyX0$e+%sZs zsKe2EH0LM~q>R`{_>f*xA$QC1kYu$ryORVS?~;A~Fp4kyCKRQqg5fx|p;&aiFfzXh zMy)8QJim4~YK1Y5Vxpf#Fh(YYzBK+O??O#%b>bUMAHq0RM%O7$mx4nR#N(suU>i~z z&E58gM%U#bFc<}Lb#xu0Wu>=5H4WO}D%H7Lu|zVSx+{3G8#g)D7< z)w3pyYvBk^G(OtLErg1Bl@P88LfiAS^$I9N$)Aa zqHa=nXJ?pXW{Z=L`Nm0;bnHqSm*iE5CWQm0yv2&iQqzD!x3~Y|+i$+{*7=u1ic{bC z+c(eibw>Wi8*iayPo3W$^p?-x|HgOrBBsV4y#0p2@onc1-+J?nxBu!nsIUGv-hTV7 zx88o@tv=_iAN}a9H@I^=z?3_`OWo`-5_*C{5Zq*y0fP)1dGCW{#-GcD zml?O?zIHL0`4i07-(5`Z{6Cmg_rE3I>?ZMCN)p@Y?oJZQGe7gSCzGVx-pB}y8DDdP zKAO|FXzGP`?5*$7BXw#UV?o65R;Ni&RgS}S3M%}ly&_o@Ykml^#o8uq48{&^#>S41)T7&1WxR_}*KBX*>T+va zZK<+aGt1axLJc~+i~{wkAG*b4>qXT%Ee?$1s7wY#d1kpCjP=qPkQ+I@S0@9etCIn{ zyEzK_lVPlz8XR|wMItGk#p4QV^hTPahYh{r8ZBemiO~-C#Nn-&HVF8W>!#{{$BDuO6$%i z=k5xVq#!j0nQtdQq#bHV)Q>;(dP320Q<3`ORY`KHPMV!0y$fGSUZ;$FckeLxJ4r!?lrL-q!nG^h!$ZTE;&>w{WB~PBAs`rxp6rx zL1qDEiKP~2eI@yu52RUo@_oj(G$-fhNq>`^EK8sHd2+mAAW7;jiuV#~1qGx9=aVy+ znBFm+WtOGYV3q#um32Kx^KUxJK>O0KNeZe`Z_Hus9QsJ!oT+t{7?g=%WjP5pR3Oxf z;EoCetq?NAA}}^8X4$=qvB;Bl0-{&taZkgST$u+*$Av5BG`YakEAnNu+W1$_)!-oQJPVRP~EgO0tC^y(aVx(IAcp!I;v` zgkFluGDcFkatIOzScsOv;1UjYgase$5-;AYAcxzUp1FFW>Ef6)8!zM=vi!ouM0u&@ zYe{mK^o8he>HXaybkiD#{_+Df*nLlQB;=Dskrv8-hm?I^Y~K=F$ke}27M@F9e>vGC zJ@n&C$*u3$8!&HKw#B&LgoPs8LKhRhjKR5$WMH770=-8#q_Q1dlJ6E#9=DS&ayeT- zq6q1@+^JCfkgJef<^7A4C&+3yTlIj@`^sl5Z<2Xg~RTR>yMIPuR!@6fyYluadu} zzZ^r7lahDt=0ZP78kk1bTcmC4RatKDXfJP&)cafIb!*Wv%DT2TJkxfyqorkCTT6>! zx3_F)Q6 zt>q`l4r!xUO9S%#D$@Md#p2k>C5wJoMYi=Gf$Tu>@R^6(8<#R7==Hx({w}yxy4~C% zmiKkPvrB1fUE9*S*3{Ouv>F}lX2*t(){eH;_3M?6wH@tkZ5^zot*u2Vw@ljrlKJX& z0Gaz?AnUd1;4HU%PRW=pZ7myG)_N^+=eo6GM{X56($c!Vm35R`8rExTTQ;<>YgJhg zH>9Jzy|qJWYin(9ms=H+8>(*DAnO~-9ZTEVH*|Ce29FVZEiG$*Gme{T0CLwy0jc1) zMc|ld@fI~MY*jI{NXB@BTO!DprQlV*Yv|P&Jft(S7WsfGwHtA23 zZ_}q~Vb|)UrDl>mF5P`D`LQIeN4)Nn{v72sOa2Bnb5-(}cS!Fh$=mlz){eGWIAE{e zzM*|})8fV@58T(daM8j=4NI3cG&e0>()_@R#)Z7FuwmiCB}GdlEwaAhQ)`U3l+a>5u3Jdq_H&yemn|j|#*5i)8Qv z>9g-)X{%^XC+}XA9+Of@@_>XYqw~z#Y1}TB^f}Cp_CQ19;$_WE%}X1bs_STMYFg5? zWJzP=;-==N#jI@6!llc(SIrG#^*6fs>0I@t zA8c%TU}xJg8OvQU6PzokpT?u8UIVJ7SCeeR5X1GmiI)zPkrcCCNgm{+r1UaL5k}A$y4r&)#_< z`BUWXRcRJ3%WJosOD;Sato!@qHL1R1-9_n#k|;8;v>zv9(#%(R^?@VeCqKWSe!)Y@ z`MdGklb_!reN8y|BM??Iap@yz&Vu^I42jB0xBX{Uf`tC>lEh8>t@?iPvn%e$9M_??x|6BhsHpm#cZIqx&A~eXO_l@g2QS?%ci&M<4xJCpCT>P22kB2g$q( z@!QOCq%9Tjxb?69EJ=1r(g#V~Hv^u7*WXE!e~mx+Ht=V~uO@FuQub%b&%gi6YtPU*mA)b9TNzU_PZ`+9fo z?tA>n-rlW-w0+N$J9~E&x9=1Se4@9PSD$=r6UM)y>_2~q$8pg)=#buh$+@~Z`CZ{p z{0*+hdp!)GNIv_|D?pb15kNM){XrsKSef}o@)mCFkCWp!5uRT-&w^rU_9KzpwWYVe zuWw+-Q+-eMKCydvp!czzeSP}|p4?mRb$2|q`*H5fQ@uNOJicT5cCq$PSo&kEcJGIm zzPz$1fr*QU+R5i{O<4I&E6*-+y2yJkL~MyV#iZY^@4lc z?ccSxZ`Y39dmbCwxBu~{`icjK5AQGT?0u?lxbKObyZ7zreZ2HU@3DQo1G_&K$8>On zQw8KIj>~fNnTj)rSAEf$vzfFXJngyU|3YsehV}Iq*poM$u7Anw$MY!R;7^&L@P8k@ zLu%voQg+9Gy_C%P^LFOQ{t~xvUiPnqCU$!Nn(=yXY_5~OBP@OQzrmz`@z_skk-l)^ z7U^y#{%m~0@ovd%4zlTx;pW*(=`TcaPazB+>2}~?7#o|~Xs(htg~rJfM_zR9W(pA1 z8RDc=LqR5&;qhHadhhxRBt`xTlSF3Azt3F2neVa63xAQTlZJTX;LGCCUhxzt7J@?h zceDJzO8zI*^f`u2Xop$PlK0NsCe14qWR6qX+}W88IZ%N9%q=ure<@6D>CQYtl~U9L zpW^$OvNJp6{6n$y-@J0py6`hsR(|u9m3wuZbWXeVCFiEB<1m{bf619%x#`=u>C6vz zoh{6HayI!??R7fQ7AGI1(uHm}liuhA-A;GB#m_vFD{R{yZOu3vvt65mLcB5M#LSR8 zwarOoej|dJp8~?|S0P+Ma9MEbDuToG)O$oE$m|_U)GKUWj+1Aqi=|n%dglkyygGT2 zuFt1Wb&hOo&{y4k3%&5N^MTab;5XA7dppxRdn{*;w28b>7#~TOB20S6l^B(+HRI^1{^! zyKgU+Zr9b>7p0OkQ)`gs##Z5TQoYS`TIR5vRji!W5mwIhI9rYkcowJ7D;t|!ld)G3 zXYP`K=RIbRUS9bpEIg#^l3?V+3zx|7-cAq^kwp=C6q%vXWx4m7J1<7_nQETe5Y_Kw z%0I=zgzOBcFm@T^tpLf6n;@^rEB|cX_;*-yM=b>x&{bnh;0U>QfuHX%>z*1i$PHRkS4vw^1UL|6gEXja3eXs>;|WQUWwc-my+kvmCiR~8r5W-< zse$z_lg7gB+7(Kt!=8xJ{T?3BX_qdD*EWr3)J92FQh1EVTL)fQOJ!vK}wo|rM1QBXy42HMk?ABMK_sQD`dirHyf>sEKz z3U5Z%s`X4LaNu@CAP)E98mm@yP|!|_K+NSeEehs2qtv$7FkPJbdE#+yN)~FB?)r5t zvdeT=!L~ZB`~YRmrkkSGkzwY{7_T9}ALUbU8t_=k{mJ6k@41fpRa$tM7zH7`Ps zei+D%2}t&S8YGi}P+)RhKs@$jN|026+)PWv#F&(vMCh00=?ow37q*sBZ3U%^nPUtWx z^Ac?m24|FV)|DnsMdnNf1_MxSPE8kGw<)BUF)ZB$^tmMps_9|Z?Rdi)i8EZN>k?{- zWHsa~x|Qb<=1HXONNUeyg|>r!@;(y8Z+$$7L>`(N6rTV>R6mjh`!I;lTsMmN<5ASQ z6@|%rQ7eioAgAMB0zQanlq4S^p_EgcD(}-H}>>T*kq}T~$`qKn|aU z`UB=!I?L+sFVCN`xOx7<^89(tjq~T%H#P8o{rvg`%?%3{F64#se0TBu`423uUtHg? zpkXnrQbR-2qQ(XF3;Fo+rSt3OFK&QjT3%nj~4~C!&}R3iC!`tX#Hy)yfrX zRyM78XxZ`yn^!JtZe8=>L(9vnR>NwwEL*;0#nL4!R<2pGY~=&XS2nF*xpLX6B`en~ zUA7doP0Jrxwrs_crsZ&S&|pwt&CPWXc1_EgFE!0tvbO1g2jJ_Pd1dLca?`A3E1Q-t zZQ`R%4?fhy3-caY37@xWc~kSMCCy8gJhXi2vSnPO%x`IGTDNA&$|cK}EMK{7*#pa$ zuXQVP@F+K?Zx9o-;LqWzMx^gb z33gMYFE3xLnm`D+R$WSGAk;!}vHSEiqaO)>Wf%2R$Y(jbkFp1BVQgx#rZkUV>^3R} zP?!_VbEQ6|>`a#nODh+nn@y*NkQ~$cB$s?L^rUL)Iu%vm35nOsCzzBxOGFVhlYMeRQ7UqPpc$((pGhNp-lG5F=xiz!$E zGfyeGwtlq~Gxp0$d8VaO-^6$h(_VV@VkwV0a|XsuycmwJjzy3IuX?d{8g|DJyXZuQl2RvjEE#O z5kos^!gU(2tZZ6mx-8%9XEPHoMmaKT^=bXDTx_lg5FC|K8=IAF<1lR|4wRk5ya}HS zIk_sdvlzzW;Xs8GFNP~mO*bP-u517@t6@TAt!;z!s5sAqn2nNbhV(F6#~Fvo)YwgQ zdt4UUs+>_1#9TRo}?v$#FP~Xx-Nmsx@NljPo*{q1!EDUcCCSD9DRHQCB z;jDVG^_15sI&q)T_JC9f8D7ZH0*#5_m4ku32^Y(Bx~3Ohvzr_fXfq4fM}#Uc+X#Ma z9AfU-3MtP3Xj4&zw03f`wQFY0*;}>H})gw4&*X$-S9mhg=oYK==fw_S&&oc_ldN5n0E*z_n?h1;iiI!m; z+zA&;aZXj}UURXG;-L0;(Wt5*B01BKdIHK|TcmDwg3dA~F)|rIr;BaE$|z}Jx~Jk# zgqbEb<<836-HO`2uT>li!oh0V!#!&xm^~^(IZ+TvbGG3?YFCA}EZ?f)M5HHPi+(3g z)Roo8)rP9fA_X4V`FxMJR*F(YK{TPHIgQKMhHI&=zq*+?j+98K*E~&>anll`(r8e< zWt6r6L*kG0263 z>e6DK$ZBa16FcySDeB<{u~BZg^6JHeIMS+j`C?V)T+8RxAZ?UYse1o)dPy0lDM|)b zNLx5wo5o|C0Ws7Kgt^cfe>5qEWCP@DV9MPYBg#_8U{vovVs3HMY>s7IE-{}*76CZH znYz&ubI_MvU70E5g_*e5Y(Un`=6KQHRNVj}D6}VP9H6{L;;dYXI2ctE+s0!MkG}iB z)r)cdB-X>ce6eb65us)mh1k>WpbAq-a~25vde-S!&&3q#!BJ<7y)z3eeZq&Tr31Z5~L`RS|GK$Ws#yN ziXtgWVlTF5QW@KsB$cZ1q+B&irsl)c*q%;4BvoT4HK|Nur}DuWd;G;|0r{PKFYZD? zEeS?dDwP6@60sb-&wI{!&U2pU|NQ^p&^pa@y;N9-TPJHZ%$%f)7%Ul(t?8+N8KoPX zz00zV>4{)Q4R%fd9J+Y;&cRe2O(vY2pKqKelSwC`DmE&?%2dFn5r#w{N}9wBS(C-x zI)f2rihUuPOmxjADMD%xY`jGCaDx7doC?`FWjs)H$v=l7cZ89PR|Xea+c&CQv4XbQ z|+0~yF;IRw)1(;&xL$_6{u83zaO&t&&tr1@A@;aIFO*fc_V zd<*(B^LTCgK?tOvXd^;^)jHU*0|+R}1aV#GiRlKBc@$}{#txWlDa6llprbfTbFY{J zqoEMrUK)EU@ttNCR1zit6_UyNU|*hPVQ^JWMcnXoz)PVB{-sX&>6SY?vZo5(IT(#o zr1hu~Bpd4tSI|^|PL2oMqVbRdbbFogGPn@uyVjXd0yD_G2c3pLOSa^6r-uSrGaf9z;kQ`GHzGV~9FlsSxGzIg<+bXOUy06zotKmg2Qsv)qs;kKE3(yLvAiF_}( z)S%PcP6V9cx*jL7o zPP(QZW9MKf=p{s2I1;Q6_K3)1kV%TQie^ocyrlR@=-y)vZo5+iFRT z+fKYCyTlG4@AHuCQhTsH<)zNS+QK=Fy(tiN4F#Uaa3HHctiaPU^T?hEPv>B5*_1|j zMpcOIOR6xsFc7e{hxJ$56R;=2(m7aLI-{`z;EZXY?KQkcF7>bmNBhYLj_NWTorAU2 zD;k5%1G;V~Fi?Ogk!bH$U})VCkEl%%hOWU{T=|U&m~N5o2ZsVR`(e`k!M$_y(K_#b zi>|)0G}^@Jjlrf`4D8_{Q8(&hU{}@lM&Bc0?|ia0qjr5ZAD?YfbMHpJK8D+Vn40_8 z-jf~KW9RN1tWB)k@EUV1hUVZ*AP2#2H$(H&t-;+Fc8{nGp%|I1GJbAe6rCm#mC*rpt5 zU-yY3>KrhgV-aIDX-Dc~eR;0M`VpHCP?!CXS3{n@$@qHaT;85e{ z)Z%$ajs_Nq{>fpntoL{x+C~akyWo209IV-oPg;JYaoKG3^+#s|DRP4%~tO4L;whiIPN=Ix!Z&7wR3k4CK_*PWTgM3;WK7i4ZN{|z}Y2% zFYavMZNLA$Cf?4$kmI2e3yEjrg8p}AS`C}zkrx3Be5tcRuszmZuVZ7ZMpB%fdk`E~BF&91%K5K~EtuimxyM6+wJW2~57Z-(o9E*cLclwJtb>nGC_q>1W1T+~Bm z18I6nL=V>&S`9<(!RX@>-A~ER!H}zN2I{B8Ts|?`?Ajp?8VD39VT=4^yKARC7@a$` zy+pbq?UWR52I|c;5VvmX(3J3r8p*sZJ6Q3bxJU3n6p~y8}H^G>t&L;TVI|>MS7g5rZqW$!yX91<8*L6{lzjZ4I^?A$g1p zOIM0E2>uKrGIYZlr#U|>q0&oLmY^j=&P+fFl1YS~D6s~EZ8ISRqG*@t9xMuMgfJzn zHVzXg$axiH1e2lDfgBZLwVr^~Vbx&Z_LCiPxAz7*|e`T6I8#{$dT7IvmZk%lcxumf`E}F`au?+5{o)9@^H6gc8 zbLy8$T<^}2w^WkNhMDlj)p?op4EbI!nue$Zu_G`~MDwIR+Xpaxlq4aOT|0mbhK%?L z74zY`YgC$4JSl|(7*cv5SyTb&3Igg7OIWR?aRj1RsDisMuH5ax>BY(ZP1gqt?NP79 zBcp+=C8$?W@bSW=7Rgvk?E@GNf{YpI&S`))B2cG?DALGK%_lWE60>yryD>9E0uDeI zin%1p$$cyB!C-#$WV((!XOn~mfx000Z!B8!gMbD|iv&X>tTTFCqOuf@z|A4W5(&Be z&Tv{>(IZ_hs4bS)aN1;Qnyu*J(ST2(IKldb!-(EO2J0|0?j%ysn#MYx3<|ZhV119N zjnH7a)vKHsqv9dB94w(g%cfwXMOtyj5kXiV0w2*i7)d=10dFY0n%jwx2TCQVxk96X zj2ulwj55^$FkQS{DcZgT!!bf>IM`)o8dMJ%{HP{1-dPCxB~}Y{iSX%wPo^;BW=O?A zY{4B}(pwX-8^>!~xi=ReOCbF#IKxH*Ih{2o`VkY3BmvKq%+_E> zXcbS!V(Mn+V97`h8Ynsro5{-%c0*S!TGvQJAR7i#tKeD@+IL{Z+Or9RI<0V8wreo> zf;3vNb*V9%5gGPbP6Z`CKOR5{56~o6j5u`a>Ld0bzR5~OO2!M zJH#oF2(btvvB`i(^&>=$2n?Y{L50Jo6$A0k$epXjuBE|VBw;E5QjI5rUVzv_P&CM= zSsLQfNmZDxaz@Wfv9{MxBdG|Lz^>U$k;_GNBqs0W8-aKdTx#%6jxbmX0zi0_X&Od= z0G@?b2zn$P^Ed*PF0WxCHfeAPH`Im;ng*@~b+k-{X0uTr=<##48uIpIRR2Cqp_G+ zGmY&u6X7XD{GmrC0v`G;A^~qE3~K9~4tD!=3Q-8;&2~LmDw%=0ld5W>F#&U7a*cvl zR%N4SloW*&B^^pq5`ykJrL`v@!V~Lom32N@1bXWfneedEh&3V_0H;`j3C1}(0*(gt zH5I{_K?trU+wTn7stinNUAeO`P&;Z1T3Bv4N6Ntz#~`iJ2|^w6jqFq+2B_Pu2-~3j zWRgYJJ1%!US=v;t#PIb$P4p-^ z12Tyyha+FYKXEn=p^oDJ#djxr14H;#{H2HWEp z8HjZ>$~z&I)f!^Xl37aLlFYdK3W*5b2zmT`f*diK-2_+-wlW3U6rK&*yFEk1E|&H)Cp=5`&uwh$E{E0rMQy{H%&ii@!fu+%6m^MrYd zDreX*NSE^eaySdcGA$br9<|0nv5Bo@Ks02s%i>}18m=026A-s>=|VO)ody|^GMPqj z1XP4L7R417&B};w5y3EV2?aR?Ap#F5K`vwvazQDf$BD#d-DwPOvSm)Vi2_urOaCjgsfR~P?)r3lPW+zogupry2$u_6H*d8ZhnF7&H zwZ|0VSaI;-U@RzEnT(r2pwC8S?@?7r&8Hv`9T!ZL%ZZQpZt_+s z3t~4qoe206!6LvP0qkLehU0m{KD4>Wg|O9$#z4qv$YVq4)ifkQ{v7ABpCQ|aWywJe zpN;TM(BZ&PYQyeR5b=*Fd43W^|kqpT1T?puf2L`vt z4#uCWZ~&5@GffqdaRVkREe0(W^i>fXjkG;O5dS3sxsM^+hh@n@4I%w`IF_^x>73gL zjI%^TL@o7ucR8k$297E5Wg|RGk)10)t=ZgDx6Ftolq%FT#R~K-U^A4F(lJn4BCsYY z*BU2`qa}k$%^~DKJ}K!z!la~3_qqUbr~Ys0F*+r~2|@N04RZm4=`Ti4CayC{&cFk0 z#xFz&3X*ui5oPEZ&$GgDf#yS+IYuhS6jVVnu9_>ovZFnz+d7UwBN*1?9rKvv7*IJk ztw`SD!j?jPOO7`%x9c&^M>w{$#T4~% zlgUWaf2}8C7Yq=_Kr>S$j8VMN{^8I5=x6`^gQ}q>FaGf#Ny#5Vg7Gib80Xf{{>>l$ z@jri?)A`^0(G?SKz|Q-l|L$i$kbe5J-v=@)J^1507yjk$?w?#&l1EWmrM-X_0Fp_h z^dsbzjWn5|F|yI5nbC8DY*tA-0DV-CETmzEH9MAw64xPKgF-8QJOVJ6BpvtN_=i$| z0>7-NrkP^{@7Y1}LjamTYDb}Nh>6sR6VG6XktD+l@_+AzaDSr)OG8G~YZwxVBJoNR zSrLZBIaR2-^RMK`+3{M`{b??){Pymjre22m^)HL61oP^b9)#duStSudZ`^~O z-7o!Eg&61sNxHE6XBQw?edGt)*TS%)D^41OMugUA&|h)g-ceVx$TCg`98r0r#RFUk&F>VIxjBIU=Khj~C+F|l zf3f=yg39mi{?nuXZue*N3%k2Nn2G+|-4D#_U+n&0y|3;5)zNQE3(nd9efQ6I|M@q@ zf42LZzvlhP?#6$%`ya9={-@o4GO5vE!u5gB!duV^0}ZKAFG!?x6bvZOST=cgHj`q2 zZcpJ*;ltfCM9U-fv!5aK=nx8WnP$E;K#7pg8*aS)M(C-+T?y!Q%r&qC4HySsT zaN4FuOm0q(?I`01Gz0?X!?C1oNMmjreR?9L|2dSCqj!JeS7McryCg*)p zh^FvNbCcpBfGenHCH1F*cxM`xrs%i+a`$ZD-|haz@4UPSZ3esf*8<1?6+BbFxBGj6 z&r>l<{mJeF87io+n|}ts?VqZGTtVEb!O$8uK(-fD1(l|0>%0$-x7U1{abLKoqH-U z_NO22KKdteu!pxTsyx))g#;J)m{c%*-WKQr_!TInku;nso% zDLV5C7JCvzcWi26ZhkH@zc3w-&&|8<=@1?LUj3fU{F2t`v1JU z`?C34Ki@s}XSaVD_nZlQ3t^c*-u2tt23GdmRyEzE=#s1r^s#1|sbxo8{`N`CLcLQL-CKAF+a0C!`G&!X6b|EPjE_! z%)pR2IXjW2>KC7wom`j;1}Elc=Ofa@^h9uBc4C6g*)Uo1xykwT+$?M?3&Dj2*fFCE zk+}mHk~u6(+J{I^|7aaKN(Ju&+@xj3NQmO3U?0)sVz~qJ? zmwtT4+LXRrC&=7h&|>2QCyq1r38)@VK#qA5nt&5eLj^E+vTu;C_LDt>eJ7692`YOB z`j3wdJUunkcVeg?E`g`}dQbM892+{u|DA-m^68$QlRdCa4xH@mKQT0L;?&6#CuvgW zyZZV@`=0)&5hsrC_Am6DJPt*rXs18Xdt&h9K<^2dDUT2L_nn3(^H|TZe*Wq`(bxBM zZ|~Dj_db1mfKkQw9_RmHqwL@5{oKjp$B*^zoE$!YA(_Lnq`!a9kj{C9!M&Ntuh-t6 zr1M%vfR_tTX!QRKd`BlgZ|v@xf#^Tl-F-gr`tHAmZS+s<1xrvf{tvr1e;#=13tNIP zay+g7quoFMXMgZ7{v0mkUPwnFWd42lBNKD~EBuj<^^nE?AszWG{>TRWx|M29*MIx* z5cfAOk4ZxYda<~A@!aP6xvg{SE9X|BH(als+1xCHo4WKjyWjf#F9-e!#E~#L{%`;K zuXg`R_y{lXD7ubw$~=InX?T-Z8yar46Ywdc>RUVUz3b8Dlvbzx<5{mjJ+E8l;nwsP*djn%c4 z^|R|2w=S%&)y{0K*EXJmf^uWy{H59oUpcdRW@T-2W9#C^#@VyaoIiUW4$6<3aBh8j zZR709`AeH;FP!Demo8qu`s~G(^O$<|+}5SDFj=mxz#Iuv;_AxgRd_Ae&Rp8O{LGoN zo114h&s;dawRLu5ef|3vp1pMW?1jy<2QVaaSeCR6>0DELNoJz~cs@R<(kaZWN(s?K zZ)#~RW*?ej@@s>DT{TLH8Kf1h?a3fA!{*f$gIaoou$Ho5(b1m5OcXUe333 zUfTCu+m+RlYZqPHv@&+41Vk;L&Uj}LU9x-e0Zxp?h;%TV^7?L?GOWKBX&g))+S&r7Dww`J39ON3vKhaK~ z;TA))J!v62l0xA5P>ZK^S|q9`|0eLQ?+0>_kN(P-b-9}j#kCINmO zeCzS4K%k$TOCRA~>I6KDsraa1Is785xg!*bf}R225Off09@kz<_@>SE39uM%lr%Oq zE?^!zs%6BZc5tuLi4u~m@_|ruNKmSS07_CcNfC2V#E65I1h&&M0pV3{yZe}MzHWo) zZ>3R~>$we*q@8S+qftmmgdKt%l&h|Q5MoK3tO79}+5mBKzcg&{Mn1hEPj(uTLCE}2 zENL6kIji6>1@$)Br25I;!}XJFOp5;q&JnuPNSs(SJHYQ1Co_>ix=Il#>JvW?Jo%NA z=;}Nk=uHKWJ-!n-^2Ir6IuIaqH@Ulf^XGx1Uq2T3JQDCKpPiBZZs1oF(TvjI9vrSE z1sa`FQcUup7p!_m=&Ki$WO?Yb4*zO_h%$pSt^qMg3Zy|+O%q;3aUm=L*{ zSlkhoq`aZ1Ow`9|;pw!9Al3jSs4A9L z$J5c}Zb&}Mer|p|mV81G+t`4VccgLl9`ne)p_?CotO|^PeF&UTu#PdeaR(^2yw?Lr zvYK6k3ieLuSH*PF1P*8#1zRr9fC{6aJYr_c5Qbnf8iqXCX^8$Ymh8QePh*Kq--S9Np{uYm)|7qsS1BX#-0j+Pbi_z^wq@c4$dAy{3u6msfCVZD@d#!MRpMaKAz8u(<;NuQnz9j* z<56ImvehyK1Q4tyA2B45+Lc~B97_Pa9LSLQ!?ENm9aGXdx3YjqfNPI5=5~;M#!Nsx zlM;Ogc%D=+qrn+W-9hv~@qyGh^H|UFs$P0Wod9vCD(!I~rT92NU0oa+%ylA5@<`t` zP}sv4(!N2$(Qtv*r!8Q_TJRpc&8CVa=4WI>r zY6RehWW{$<$Hlw@`Dhvf8WwQoK8AehAxq93)Dpuum?7W(BumCWr6p}cI_H*(JS9y+ zjYf;s>?}N0x=k!7Gq)~9o22dplNRDMG}VW~{ZBzhcjCLpk3aoA#1f9zR8{2<9$6- zJxDbiKi<>d|1@{!6DPjca~#gS?>+V1V<#Dyf1fygx*t}#)2Bx##!rn8_79!v8(iq` zAMWkjIsM4sshz92|t1t`82nlMut5I(f2xpnq_1VDM!B>5<{_!NJj?Q>O-Z zPVEkSWq7=IV61<5u$QYa9CL$x+x>t%&l8voyl_OIm{zR&`b1+cRppJtfx520K)j2>=sQ1w{6rZ9cf$|SW>lauh z@Nd8~+3q4h4GMy^R9AlkQji8D7b!p7!0OK=QWTIAGFNSyzo?dgZ&p)zH)zvdV{7fE z9FUce#C3N?nIaiWzp%VV&VtMp=Li@cdMO>QGL+f?b2<^9cv0(M4vSJIj=`DPX(nZE zO)z+bnuCR?2`hPMsHl~B;42f1Np z5Xeg?nNR^T4M0OCxN5-xQb!Q%VbNH7FpfUb4e_pS;)KYghb1{2ZoV^$oOJ0zi6Bh{ zs&sDzlfKQ##hqS=WOcl=1O-`O?49q7)V~FXJFU`_GljjlA*Ul4S` z=|_muZc96o1hPu!Sl4WFOrnO!%4jYPV%!9MH9=VyW-5rcN<0B~E*{shJJ{AB#HWo> zZJODj4x_Jv?q4X>1C0ro1PdZySjq78K)|8e=m9ZxPOa%-ki;^ zO{dZu$!MLiau9|(CKr-U<(KG3BHm9ct&M(!CLUmGARM*VuVqIYjZ7F2XLCLpZqRpr zH7x7&Il^QXSvZYzq+2V#qwXf3;PNeLuF-D(im^u^HA!?12HpZ8zu=<@v(e*5Jrn#I z(QtJ3bihI|9;JFijtl67W<<;uciV30N#V++uB8F{yR71Z<#fZ-a3rlghb12bA#|byn;P5o75Cx0xd4w>2#x&50!J4XOysMZkVR&unN;Me1zz^ zQp1XNkQYWXHe6ES<~rMJ{-Rig;-wO33`T=uCL4;TV@dc^X^#+X5oy{`;|XqhlH58_ z9;LjsBRvss_60TugEcTJCLkr(*V&ixUuIg=9OJWt0V@{%F!^L87D>oD0_&R5K2L~K z4F||s=Q2|qI`pKBn)DjGNuwr~rqeSPWh|dlmXrWmw2=Sl$P#$%$;^1NxXpA8#xcb4 zrzH|@V=^h}Bov@_6o`i*DP@1C@*YVR=}kYeU=+1-HfP$!oCnp!ULC$rmScj5>*s5ajUdz;1++ zZu8hwOjI%G$8w`X^yaHMycju{6oHIxn|kZXj)XZ8=rplApDYhjSu~o(oAjx0FeX>Ia<2HUK|Hy$AgAiS^BIhf|xrAth;>9yfj&^6FtFiJ9;1as_4EfNFL z0qlfc=oZyc2%5=o$jEdK7J*kksoHijSl^nv!EZw~$V$+pd3Jy)s9|m50s-CTXh^lW zra}m4#KT5cYdBmYkmDJgCymC~xd=)Pa){g4>|~%IN057GQv&s+Ly_lf4;D;->Cpj(p9wS1!0%|uas1@REuMNh5uD)p3fu06VPGm=Ay}2}6 zxh&dFESeBG29Yg@h$dv$3%7$H!J3H@bXU(bdO8HYjvjBeInOuKK*=N|9EG@uX-F)> zB8x|Mh%Q?b0O_H?zjejOLU<*p7R{)7y3Vu!Znc?rn4>jZv=0FS0ZEZ0_r#0q7!2$Q z*TLp?YG7709OL6gR*y#q>Vqv1nnCd4>A~2rATF_edK`iCQg!33&$L>0A4$Y^BD>+w zcXipqj1rWxCaJS#5JVtMVkQ@qJWjeq&|SutMd(GOc`_L_T7w-SZ$`50p;!-&AqCP~ zWp6NWUxZUeB%dA#oOj}?OCc~Bl4W3iILY>4A+{kWS=T#D86MqEx0L}O{-3L!m=n&7df0+(~Z>Iqw6A(K`elKbtD_A&NhcqjGwt{@2h ztOUf3;PM-N<`fD@Y$u`7iH!s<`cMSYPRE;<=v8JPw9eooLCF(;zJ@9gH9uJJinUljgqJ9xTjaCXd?H%4tWVH3zs_v(f*XK`y8ye!<*8 zcI0O@Sc5?W;Z-9$p+}XDr9nu;sg-I*RE@X=>4%al)Y|oinKLxt111$H*@3{86$>SF zZWnAPFzh67Tj2o*io$`_9c+`nX2r`fXT9OiCW9F#;=sHhf}j%Y;B52+IypF(Fp3c! z>kPo1Ao%I@w15==Tc)&pt?^`&941&zSu#8m$e0De$f?+*tP}@*uWAOZ1|?K6PbjHT8+o17T3A!spTjmRDR zubfukGEQ*_qp!h2wOoiafP+N<54CpyS%)~`YFFgW*)J9XN%h8w9*$PXx<~U)glm8x zV#1lyE<_Un;a)7-Iss2Wxi&3l*x95rEbPDW0{ofO2qAy6Y&B@8aLMtd-EMTXR( z%WDuq#mH+$v`BNX5T_$q5~5*2DintPBu3>Xp`<+4kkK|X{v<@vL@J$212k4RY60hK zvR*>~K`%cEojMzCG;TwAD&ALISrM4S_H4optfyOq5={zc)+K@OjudFDvw40_Q1=oa zKt)MYV?1WkCPgosqgYb3Z6@oy!c z>CSh?T|^MrLjKcuvJf$~4R$;fnHhzjg`g<~V*_yuxMC%tx5ERbgWyZ;3f(z7Xvn59 zDcKVfoD6`&|JKDG|^=yP)!yB1bLC>rGi!{DrSZn3Xca0CL5ec zNF(tg>RO$dh=>b?vKs6f3^*nla8TsM8ykI&`vd%Aq6Rk@sCdxZGtmal9^Z)bZZ8cS zOOQ_VE;E6Ea%s}FrAthRLN4v(8bm*e4(>a^G zRiXL76}@p0n@8%2ozG<(uTe5!&Lb+IVP5>ftBtloDupzbMhUiaFihkuBYV^&2^0kW zbQGcvgD8eoEyM&sQfTDJG6#FAC5nLyN)yOvU0K3Vl5NQp1eIA4Qte2)v2Ovuj7A7G z=r9pXEs!@6PEwUfB_~@CM#)hCI=dpOum`fA;%zL|U@xTI3OsEH1qrdt2sNW&#Uy*g zq*F7FPqhXEa|fhfYNa_i{$oJ_o;1}hcW z=Eggt?g!NrgGB)A(gKKAhrozE0GBe$wl&xhB@OukO`n~E;h(vgQq^oeSpupeLKne3 zb~<2)+>Jy%5Ua5z%NfK3L+ zX?1bsi&s?lq>=h;?n>VVK~A*}r0`%MACHQYQI8|(0k|TZ>{uE>hs+QcyG}EchyjYV zok%q9`vfg?f5a0Y6Bvv|rbre#HSrKn7fD6iRPDjM&;~7b-S-t;r3Du}R`Z64mxjtp zaHNMIb>eKN+embYQNL%(vLtZx6 zo&eko%~?vM5V>Y?zK^4}$&WP+9?&syuM3Q+f{q z1h5eMfa)k7*^xd^kExr~T2Ds$5;sD6zH^_<> zSS2)6I%ClW9WGA}Y70MWM5cuL5bXMtVobqP#QCv2+j=rfR$ve8&cz|X8%Y)+ACEN$ zqZ=U1tjn{y)*=5mNTVmqeo%m0eC@@vN4RMthCR~-Pn_~h9e5u`ObKUyp3qYi8lrd5nX{9W2Mm)xoYA>Xf1^14^~LqjJ6N- zBVgZAUkv z967|(1ceh*znjnKbgP@aWm`M0kpnTj3V$c8~#jynBpkR$Obvz z3mQ@Ztl=mPn#gL>M%xywK?sCMEZH@iycJS{(BLJT+@f|g93?<7bi%U@UnQT+?NCKx z(IJ}^Y%dMm4|}IOtwHLV*g8zdO5LCRide%k3Xi5lcvkXgYNm%5#sMj6gB=RA-8LPR zX*$!oyaoxSv;`MzLTWh2a4>BN9xo{}hboCi7#Izi1R8ZBFUe?CP>!$^os1gk3S0_&of(}6PlU}TSxE<<~kR+B=p9qh#v)p8#ymC`(eP83vda&rPy z78GQ8(eNy+3K_0#N#MR*DuB*Jvgvk6%N0FoLvhl%1JG1T*`PgRQe)8)o5dT{I9vlV zI>k?7Iy-~H72yE~b8DTkU89ivcjZU`+^C)wB-P(=jv#&n$wP>IC6ZZbilJuO$)r{I zPogPD=~!o!8&J6GS{j-xuw3D=Zq^6eRli*)|43*yT1K8OS~-nEp6E=ZkbSMa&O!(X zi-LKlnP_-&&XGM*ry3y@DQ1BiMJ#PB;1kRW5}7)iDQI9xYOga<2@y?kor9_Hl8O%H zSaSkEz(Q{TE=SlS6f$u3Vz6IYnl64)qJ@cE4a7^&>YPvL)Yj%)h%jS4!vuJ;y}^IZ{K4ICPmM!6p%E@ zFn}Vk!EjV1Xj_MigTst`i5!i@>5yY4quaV>5#tL~90?vln+t|8;@aq=a9dBs$z7BH zoup`1iIe%Krwo)81!or-b8O|>Kz}4Hbtu=d2ik`4TR)v4+lOVzCm521vyAQ6Z3vhm zcl)p`IjAAK$=$fsIVT6Tq-{vUQ8X48$a&@s!c3xj4X;Gxg3=l8Su!E*+o=j7tl1vz9QcdP)t{o|A?#Lr@0KjxXI7~Yw+c*j77?BD*6bWJk zVlyS`Y_F4Up-yKcsiAVgr%1(F%MG&5KCjsO%0#8>Ma?~ls33(Xb`X(C=m3UnAC@Jb zU`V}5^lu80nn2s#?XRirOJY{>RuS#nTAMjxJ&Pie__9=4=yNax~8KyF6c zkD!1NkYC91=ZQ7YSz?f^&;Xo)8yVj6Y4aU5emgr3*Q8Na=I?L z3YN8 zTsY?t`YWIlU?4}l2>Dj-^KzK>8x!qWxYIca$$)BUO9jxOn4qKp3y{Fm<&24PD+e7B zCO-{vv5;>VS%&wk5Qx~Dk9iD zwGzT8X0pZ0UEF>*t3+Jj3F+*h0L9fX$kU7C6UA~0EHsqGcfz~D$0<;8{n#cO zt5c3s;4VzVvO=MTOL9}aMhi#xm6;@iiQvMX#AJh`j&u|BXa6r4GS@KV6YL-*L|FBZ zT&A!C@cm&KGJ2pH`CMyC05ypzIjALVLmF%AYxT87MTBc54L&iII$dNZx=QYfaxmH~ z@absc&JWgs-$^-?^#mvlwpZX9VNOg9xC%0>g)qfaSWh4;BJQaR+M3YmQ0PNjnRQAY zg3?nGN*;*yfXk2?r;-v(=HPKrWs}S|3mY6GgtdZ@11I_mR7YV?q*HBAakNden)tDp(1_u_$tbdb9VmK@ZO%)@hXP)pi| zbS^GLfk8qD8pbe%C}3qeX}oAzu?!P{0byE<{u(Lf#p!O2hcw5bi5b34)i>y91?UNU z6{bj6B*dt*Q~CpX5)}t2r(sgiXS2RQ@Q~n8$T`rD0RW2X3BNS?4b*ig;vjiOlDmU5 z@Z(j9sq|5*p*??3kyude)eEFS{{V(idN~|RKEV*OF5-qSvc+UzV$x3J@rEJWhh@n@ z4LSbsoP1_Wjy^mkjm0%uKNcGz(Hz(W<^nzq1}qHTByPjtiyVew;mSx>c_g#|fM@g_ zQWS<9rGW|nl30?!BJzY^l<2LfjLH&PZ*hvwB$W-_hXe!23&{=2YwTLCqd+}LO>h=R z;*&06sAz8C`tT9fLMtBJSEX9S1#rhxZv?$53g)mDg6Rr+pWTq{!!qO(>>%kPF8GKj z3M6BKq6&pwVMpMQ44F8nA#fgaPsu?o!H_2#Gt%j}nwsGu4Y;ZBJLJ%#G5Xw^yd#Bd zB3>jv7I%S0Ll;a*6p|Z}D22rVdJ^_wj3bQ9KPyu-q$wF-!ni(|QWHU&dI>#gNu6q| zl%x+Y9JfFzQ>TqVp|XvL5D7CObB&MmU~%uJP25+sTtMt8SvF}C1%Lxw0VOd(e@h_= zT<@nhWc#oz`2<5kg2m!t^>ty$_F-9aP(v~g&&fe8X&chHxY`=>4G2nzhPymMj%(V$jIOAxw(ET<+MbX<}#fK-6_qxz<~rU~hBIuaIzdsVY30YOn@ zNz2iqlFWgfH7Im@YkH>TGBS8^Gu|U7mkE%qGQlJT=Qu34#uj2 zMhEg4*)*aN4M|AdhQ%POtG3~qdQwiSsa#ww7)10g;2UtzDzP;FD6JIGfdxrH7Cvcl zY|{P!ZEhMpLZO(2Qv-AsgZM|V@oY<$NVJo&Cp1U47N-Q_5dA|EU?g8P#KUtbQ?aOa z!k$$l%1eetvoUPsS~$1{>ewhNXp51@kb%N~c0;xg%aTtp1ey(Tz5l2o+lOVzK@G_~ zJSPXWq-{v&;-U~-|R!`P%-LtbS%o4r&P0g57g+P)pi|G!|C_Xg|FWo|&2m zP0U0mKAb-@6OGNr=Vs^W?+MS&$L1#%LJOfOIkb?NO~ODSc&Oqt3-dE!vh3UlBZd(U zP0T0f#U+psh$ES-DnT_N_r&}>qy+Tl#1^9Ai3QQ3Gch$YJvRZ-_T0?;RB|>1&GyXf z?BrxTIyo^n7oMM8;9Eko6Fg6FdU9qESRiG9$tfB!__F|mLpV7%I}x7?N9>*1|70P? z_f5^t&&E^pb6s{k^=a(bJ}g5%!H(IfSy&_YvEy@}Y)J0Y7;;cMl!s^JpoTQan>)q>jfBeC%AH9C}&aE4-KltFSH*eg&f9LMoH}AfC z@BRC?@7#Xy;O70?Z@qoz?g#g7y>tKet=qr#(|b2=-Fo}2H*ep*aqO+zH*eqg>AjnG z?!A8f*4sC3z4O+++wa`I_3oW_Zr{Fh>)O2^eelLl-_QJYK>g3(yT_OA-Mqo~|Kzvs z+<52it()(>&F{SNlecc(dH2otZeP3i&aLY|y?6WOod-@AAF z?c2A1^uew7e)R5}_wQW4egDlH502jW;GH*r@7}fhH~y>lZvW`UTd!Y#{mnP7X5anj zL}KF2-?(-E-h1~xxN-N+-P>>f_&49Y_Wpx=H{X8e);srZ-g<{m-MjbpPj6no_160z z+u_xShiTW{aJ@z|~Vci!B&^K0+k;mPjYy>avAji21T`_`Ku-1+Gn zx8HmH{!gyIe*4y12oryT^*3+azkBb-n{VBJz$;?pTi0&geB<_yZ{555lk2zMcyRyq zH*ep+d*?Qf^X_ddyK(ES2Y3Je{deBJcjwkm@7@2+ckbSM@9yAlzQ z^27K4@vS%Szj^KY?bqLb$yxXq6E9uAdH>d(58k@*4kO+F@y+XZAKZP5X}EpoCa?G2 zjr+H5-o3^I{r0^#c?q}Pc;m+FKlx9ufAHSTYj^J7dh+e}ZoPH?%{%YiyM6baom<~{ z`;8lSZr!i?3Ze_x&qd$DY6X z(kstxZauiZ`TW_duRV9}{PUNuUVZ7=YcId}@|8P3IDh_`E7jPh+4e5QykkU*%u4GzjCRVa~|!$i)+IEv{#(Td&nr(^CpYYSBvN zQBN<{OxxWo_|?2!(5M88S=_v`WoL|Hv1FT0ZAI0xe%U))ES7!WD-?>wO3icKY{m5p zm8F{RmdeZ4+3JdOcCozS7Tk3|@8^oHyHaxVj#;*kuK3oqO14-moXJV1>v+1WE{x6Z zZ{nqm%`;{$XJ&G_O*_50_pte4GEag&6J8(WK-Z)JJRQxQeoSBT2TCYmg5{p^#*FDQ~)|dT4an<*i%Gu>&K3l8Wg=)1_EG#)@-l+Pf zZ=0*0=DS6$nwMFw?op40m(Q0xZ)HVu7Ij|G~U0uQO+8!mvQZCTE4t)=e+{LCAAAhGwT+sWxuxOm8)l~ z%QbefU#NOH-a$1(1J9;o6)NU(R;k)*>Z)&Mb6)Xi)pZtK<$Ou0A_bs3X_#;pMnBHP zmo6?sFqW6nR!(uNl}g@Utz~Kko=QmeOH&ZMd%UO4|T=a^* zr5MX+YgW-`31zRI&6W$B*`?ZY)z55{{3W)UX?aR^!z~rhs-AwPf;U?#?&KbE{i7vc zHZQHYcFHN51=G#iR%~kiW8BT=3tJ^qato4Pb#=qFOxIsou0eMxYik9;p{{3vw|ee! zEnTTO-iCxpI7Y4PyP2wg%=KByzG+n*G!Sh3XI`}{rphcDj_Ow2oEM5uPm5XH+B$dE z^R;TpE9-92v*c7V zRpb{oJg4duj-KN=t2N0{3jT6M^2?>n+^Cw`cQ5X)&1|eVv=gM(f7_TnZ=FVVn)wF{GwZ|LsKt8)vUCSx}9;z37qnfw!>vGB4SWaaN`szBX@K~vK zuBJFe-!E#O;n`l%F^U(w`sPw` zb1iGHuFHO9b2H^G+4^G9(T=I^YSmoXbSs{5QDQnv1&?K(tJofXxs0E7^E31H0PfPo z#r4&dMR6W2uXt6-qd+08;71g1-OKx#s^_1n`8f`btfv;7Og?L8eJGWTf}PH-Z)9rj zrfczJ)oRUm@Tj&|SjuX4w&?mx;4HQC!LiW3v&ceSUo*X$>Dp4-CRSOtY`>)ILQCb= zR!TaTw-%Ss94RfIeSX=fUV;v1^U_jkeZ!J{4$5QB=9$|1y2i2NZAt~Lw1S6s(|*}3 z<~3H2m(?>|*~LO#-zcn?$|RBG%4RLIE*0~hA+N4DrkP#L7k#@@Ep1dWYQ-Z2a{Vk{ zcXC7^T2|FAtQM`a=A|4bHp{z^PaoA;Zg?ZtD`nlBt7R=MJu|B9YvSD6`uR=GqyS`< zHK}k0=Z~UGTH9DJN)>ct@~_lNRZr2E&#YCPVr|n+$ycsklAg(DN|xg($NcA3t7XIk zGH!lDshXuq4xeG=YhKaAXJt&sDaXcHsF-+m+2>HSq?NVBTB)WN^CjQgxL_)^wKBfL zEY_;HjY5q%s9dP{KCi-Ct9p4eS2L~H z?5MxLi5u&eudo#r9U^A0pcY)sFVrk$^AdqkZCOi|7fVb2%1Y5+Udq?9m9wd0&CdIq zX1;1`8U2`*x6-EUdtR;N>&r_VS;gAf>R$DH)vXq@)e3>1@2rti|+-w6?5E*;RscZ?WtbHwoUns_R#nnw6TP_|+=TpoHH|FJ+fs z^~?*)-dV5kOnTk+D*k%S&m3J^ud2ST7gvkR?6dQ1OsbU8{Y~7wv{BML%14sAT+8}| z&g^|ns(Pu^*2?CppD%ANm6kp4{HyO>qbROq*UTL0*h(C!SP&cQRk;? z*~KMYt60inu~aLb@rtIK4oBvMiI=WcUBrw`vy?TIvt2iv^R0af!NK| z@?Ks}=bhC>-7QPrnw!5^$`c&Am6c-cD4}JlP_0!jY;CQp&Z?WsLIwIU(aoh-FI7Ff zy~x^z=%5x}J}0?Qx!{nzYQg2`*Ozat z(rzVhYHpbm#V3zoAM@p*=T&oVtt&$#B&3adBo%C3$7^J+(3T`tzn6tlJRR?f@S*7e20^z79B zvv}o|XD?P!igMD6oA_SGV<~Z_NwVxemp3k)DX!PN((;-0Wf#pV?uvxY5Sb#V?78SH zA9H-mVa>pVlb14FI84`*taZD7VJI)Tc~@TvO-~6EFFd=Ur_o%OONMf#Vr2^Ln~hiU z^Ht8qwH40SHMgQIahp0@%VxQrTAG};+{H6Rjv(}2H4jN>7ZZ*A_t#!sOBdZuLc!HV zEu)MF=k_&m_xm#!H=Qh1bYuCP%|^^GdXDXTgif_*-17QbrIeNO>nrQ)m>=gT*3bU9>Cf17H3!CRl zTBWdDO=rtRUklCz_doh~UzpiiPuuB=R`E5n=n(ds8P$DZMKYEz+u2;HZ0F4Ka&@g% zy>jbkqnn22^N#}EEJ&0X~js&A^h=H#LEUJ$c*`MDK$ z(=QhdtGHrrE}E6%-p!_3bl0@n8QsjAT>tG-vB;&`XE#~~eifiz#;vZ|l3jfEWxldV z;Nu@%E}NBAPq(=~6EWkqR5Libzln2~uWqd`u069M=S`>Nau&FSWlQH;FV{BDa5uiN zR$D(`Ef=||o`0>X=LBNmA`@u3y2R11doCVFp^w(x6pq=W_ATK!vrFake#S3Xt=RnR zh%j;cxiw?mDspw$baLDmT`$|b*{oFUvbnaVxyv}rS`HV5$J@-yYSv=n3zmyFTE3zv z*Fvc=72si@^I;BVF{{-T$4?JUQ7C6{CC6MPqa zjud(Iy$xNY9`fs+Q!Z4GvRq4Sf{dH-^6863rK&EBj85#k7w0ZryZlP2U^%Wh!icUN z*UAxSW~*7G>S|;wmTTv55!LcCv8!2St5^h}D4L}e&Gx=hF#KmY8!h?Lg%tO3+u3n< zi(g*knw)37c|~}$=f~^k;+d_I?-p{Z=Xi_fAs{Ib|4ECkTwPzPW;E}mj8mvoNYVJ& zg1zh!sx9$AKA90BA8tOpWV@KnRk=B><|;>*oTXK^wMBx%KXX~CZA*#C$>IG?d|`Wi zIW|5`5js2-PtDOWl!%!i@Z&~kT#+aPkq?@l7P>$gYavAOXr5=DoS2%NpPyTpKNdo4 zb!uj2VKNz>oQ8;Ep088%o}ZSrV0v;!8J~bVedE8I4R#$HwOk zP^&sRRrB)zdqQZgLtiq_4-2M;`4Ch)5Z5n&+(=DN&o3ay8ncoy2NJxaQpik%=D?1` zkbPF>7mbNCTKHqG#H1LedQSEa4UL={o*3?#7#|%yH8g^X%Gjx%k%@`^zS-GpuVKQwWAc=+_>_)yP8A2KMDBmBbAf!@)H(?dgJ0|Rptz5TPJ zBg2!Y$L3C>qB1*tGBh^Se`7Sn)9vB#(niyuUojvO7H86D;=43Ew7 zduN8m##5&TPLJj?D}YPmYdGjSr8oJcnl|#u0Fz z6l?Yu8S>SA3<-2wA|2S0{S5iur!Zu9_*3-|G=6Ma zpnmWu6XR2(oSb;3=`a&KJ3cudVs=@T<4pg;#4Ju{VSZ{V1~zD9Vtit3cx)Pn!~&ZA z+%(bP#Li^T!qm*{G)Ev#iC@JiQ`5r}3$r6rld}s`6Z6wN7AT|9g^`~Rr^e={Mp(71 zq!E_w=roTtiNiX88OmYVaR4(O8JpWaEISTr#@8R7kER`cpL#lmcmL!6^2C4BwVaqI z7zzoFXGTW;AL8CUxX!b__kC>1kz-r7+-JW`#!(-clrJg^t^|Aq92xANFht4ukPhNojba3k(eu>vG zm<}e{HB6@gAhYX*M1U9#06D*2NE!vwwsKDd$>^Gp)QXgsXegfbxL}%*g}aoUF*Bhb z8HAFNW5*u*Ylj|s$u|N&h)h$AUK}`OtB7WcvPQ_XVn0G-5Ihk6LnSa>&6 zp^wQk&}%;B9yrt)*UMoqP4*uPh0%-S#59IsQ1~;xXq}mY=UTRFMX1Jn?8mlgW`ZCGRz%zlT?aK~m$()2qFF-gW#Wwds2Rpi zWH>lnYsN8nt3WapAPwR$%jSF61<0y#wAOFPrllS68wR3Nq0*{c6|B^&!m*Bvo_M^z zjmhKL$5I&>CCr)c@?X&_SRM3&5f?LV6vgmb?6HTtZCdzFD7L_eAY5+egpxPR* zEAX?vgJ!`#IbK{qR%G|R2<3WGKH`+oYArCoR@+cR^ z;!E>3E{zcq=h+ti4}61Vg@%b|T}IF z-nm{t-WEs44RM@bFCdNL7+kp{ZwqAa+W^sTVgs*LWomn31AWiW76Ow;zHBzTR^a2Z zZOuAX*0oLeNE=gjPvB=9V>c&D1KXEH9FY~&34BxNT2l}aF0oC7 zqvWG<3~U&Y1-b@y$;cI95Damz0?*RkXZKmnDHC zabq;?6TF?8v3ZAfHZ#oRefS|b3dtu0v13gap#Y#YaiT1zMShxK(=D6$&)x&qp&pV@ zHwcSJE}?;AKr~#49VfQAZZlH z-j#b&kEDMUNUrBxy+08xFw5sG; zT#|!OWH1@t7L*WnG2zI{;m>9Kqi0+rBA~>oRj3F;K~_`3!3(f^u(GC@O`;0hgJ(sH z8DVG@Fp5~>wF5c1UP$VI99%sR?S6cHkTeQp-^x9yL$ZH0NNTC8T&k&XgghcE@@Qrb z$JZo12R#JcBoYI!01e<1x(Ns6yM;V?I+vWUNi-Ieo!elwArD~4Cv$#~MQ`}ik(W1! z{ZK$o2#*lrW#N_Mty?B^Cv2-xm^GlAqO4iv$jCGJiD^e9L zg|9q4%@gmUAu@>rRr5p?@P)8rSRAoIB!jb=EPl6SO32d8y(y zm;bhu0o;`;DU6Y6<-{p5ojlQAn1dw1uZp9@UqWFZ86@a}5QYKS!pF8DP05|G8dF?p zjFfAIR$e|NoT!1eig3Y^1E16l%F1)>MRz*{SAewQI!JQReMicPg%K%bJ`!guv;&56 ziFQ~Da&e>}(hy_>kwPH6KQvj!f=__OLgAVGVFixfRp4k4$n**zjpFEA6_Ec~8&YOY z#4Q84@?fR%B`JyVOe#r6+^b42n6xp(Dxt!VG4x`X zNeBl>c8HS-;ZO~3#lSfm(N1M!Pu7F{fIBlJk(`H*2>1yBGP))pu694TK1kLb$Xa*A zZVX3e<(4!EWJh&JYD*Phve|8v0I?Y524Mg}U7(7|&1BI6jzjk*jt@J}GN3gBSRqNX zh^vLz;Ws0GlfLUb%^v*(g0$^^b$ z_Q$DFr2K`nGps|f%sMPZxKIcP7vHv6ZjQLol^`;MQ$;2)f=_oy2&@^%@%2Jd17vtD zK$@12eCQUDGz#Rdm3vZyq@gXj&8ihHRJaJ1nPK-bgjxX=b1{W{QIN-JlKL0!RyM-w zIHVVN6P6q%8{Wv2w=hWJZ;}5-u%t-JgK;NHGbrdoy?96%*+Tp%vcY&?1o6-TL58T! zE4H10_d-H5UIuAP5L0U+RYo?lAz`tKSmZSW zxo^FYGzjGUdI4z^hxWSbx1>QJJE}lZ*_ur}EMLr&1B1@iFgr<-#Zs2(<-8b^7x>Q6 z!$y_UBn@X3sQyHS3BQdKW%$L6Rd(7ag@N?MP`cPW(K6VmPDu+$_L?tbQ7wGNbh9>b z0diP4dj5E5ki%w1Q;c-thM_?D!V>u)^*IE4OWZ>kq6R%UGn_0lFM?#0sL$ca<4>>( z4FG9dHIg$oM$#yd`_>D|s)0!1X3dtIUAZTXBB=sNh3o!AxUg8LErLOt>N_ih1|SNA zHSm2>EgAB9^ChFgYQFOWA2>|V7mJy*VX7!iAZuY$|03xaKf|9Ti)d!iW@WPno|0T6 zXLm*>t{L?PkQW4vhE@8R_dVoVu%*aYoI_qHX~>F4j{Y;GS|O9t5GyKmD6g7{;1v#| zzoh)rG^ibQe&W6F<4@$01W4hr_uan=ASA#^c{*|b>X4j%TO_DtXxJRp8I1r@&Uy))GD?T`csNq=js%p)CoGb5cGy zg=@!NNJ2DU!Y>1x-0A1V^Gy>dD;Ya$m|2q$xnf=|eZo-Uw^~ZYC6J*z{=YOc1o($sOK~^X> z$8`^Amr$3k>81w^>xr^%dz`F}_i?RX%L`v>x({4=LvMI>PJ0`o-}#~5aMAr&t)Bi@ zy}_F0%Fo!&^NYIm32y6gtuL~P?)|SJkXIif27Qok4!v4T7Gy)hqV$5iI|D}%k#2Q8XdAYF<+2^_{thLSm8DEUY>tcBmw{*W>Qg+t`XmkKN76^ zP;KN07`j4jbBHBJy^8o|soGj%K~nOdQW%t4XO{nnjft1_BPcPI7TiuB3@dN!&2g*- z#?H6EIGfz-b-+=DkqXGpL_ly{c?@hHR?%FvHW=?I>y0m8;4$9%cNF+$E@^#1sbA&A zANGJ(0dQO8*SPA3XG?-g`!w4tnBSO;&W8|DI6l4%{5;wX)vu zw_H+vwrSGI^6d@h%zx%*R0%;TsXH$%>TMUAEc3lue?;AG=CAN`-+A%%vTpwNWN0jX zd&6fY%T^zy!I0`?Y#eH`WQCMA2aZQbM==*$XX4PYL{b0buL%M0`cKfWLxu=$HCZW- zxk1JUrw!YeCG?~+ls`gj$YS3xcN2wT1!%j;7NNAHzK}xXvY9rt5bvfehlJDw4Fn31 zA!sNfVs2#*mGEYcjt(P(UK3MHhY+=dwRia)s{qj`hUS}spsNuDcS8_W47IwXDCsU# zWD>9Q?3oyY=02s`o<%wQ46*bTt)Ep2v+{jYDPC-Ow#N{8c($xIm@k+09gmKsA0ZFR z&2tN1)%tI_#yNG+e7dZ+mwH2F>bI3@ne<%y9PfNyDHA!kZDc%>Z~jO%Z8sHfsJ?4z zQ-^w;*RCmfp{Y-`U%95Y^mQ3eX?;fRFfQ};FR(a%cjHeRNO1G#(u?gJhIl~L&|6a= z37iZ4a*eZ)hhftvaHNm!rq^O1M zu*fM3mmzjZdU{;QF-c;Ylx$f!1IdhtED;V72gb&LH<+7VM(d2pE!4>Z=>2bCD%cYIu5EQ%lZujL|#CM z{;e#c$wGL``t~QcyZA(=YJVT^zKHm?EU>6AZ}~!5-_6Cg$i>v%EM1Bd?76T&(Rv(| ztu_Od6PN|3fD2)Y^Pf8}v}icxK|{zhosk-ZEV5TwJc&I-1doJ9u@KhG$G0Iqq@hL@ zFHam&B(ww7J06Uv=@gJKIJ7`ggH#rx#@xabqUjZhl^x2ah44ix%+TJF+7suTn4s;q5CO&RUr;@n=|5rr zk*V9WO6@fzloWCLa^D`y9Boossh=wAyGrUVnhFp^dFWH4Xa@O`@mN`R@FRZCNLTcT z)}MP>>(|u;DpIMT7m)BXO5JHW&n%!uKZ&0Eavy&?)Ld5k4Z0&pw9p(;${9{J;j7@j z95Wx_6q!MZGOo;d$SOJ?k_Zli2ER|CY$kRpNU%?sE^?AsKg!g^fg-G=XQ_3?k*uIUWR>CeUPv?bedh^S_ zeavj{9t{wXO?|2>$iISUnV6;>eX17+gNEYSf6@9$^<`9*+GS+lTh^^8yicM|(1b)C z4_womzWbFA2OYf|hekewV7+|d&o5rO{KY((HqT0bnNH(kfuGpfr#j-CnZAg{JBI?? z{ODe-|A$hOS4EX=+RoZ9*U?qa$^LB| zzW?eQdefI;$i(M);lhS*ytJq{UJ$dTRmWZ05|rjkBH2*;^e-Dll^~|)#gJX z^f^-V)i?CU?>&^==vco)-1iJ^TCSZ#QqHM1;^pZx#DEyRLy=P~>s>72i&~f3zR!=@ zT7N~UqlhRrIQ!JoPe1k9$JwwKi1=Q6plt3(*_M*pP8JO*fsMfu;oyWu0p7`{G8zBs z!`Z|+r>G`&Z0TdoIWrD@TItfI6<$mdDhfk}zk%8i&fKo79kv~j5QiR~md-ND!RYsK zoCE}(7q&8+fXEWWCGkIHU$|dl;>u6v-I-cG9vX}?g~PavxKclZ9FpxKH*Aj!6u^psq$Lj-1b@4RuvUdP#4SVE;h4`d9 z7Y6ClVKXpB@EUkYES>BReel|wTVA^On6#NXROfhJfxV~i&$6?mw53R#+>psdfgoj~ zXhz)a9Br=Dq}r4=U>JQ44mGlK61^GsAV3BZ7PCfiU~6yuDv&e+WFtV%rkilG+razJ~;5`liz|G9QCcMKPH?%S616l z6c|II?5Gqz&NiPbmHr)abWXuNzaNG2s8ZW0PLV=8X?xjSI`?Jt)2BC$Ww2XcezSC2 zn`);W8B^LOzbW1FsX@zH_U8~L3@3k2eE!?8lqJ>narqUs{duU*?{xHyTh^V)H4l7x zl(ieQ0UAd=*3Nd(T7x1mZ1xv_1+SY#dX%5{tt`17YO)CNtSn}#Fc%&n^CJ)}Xfd?D zF+D4)A2nv$S#+1w*DOJxC}M`1h77&VF-m3vwPScCJaC#|si1(DN>ET5ft>?Io`%H; zL&k%I_6q&%ov}NgGZqSwUkvHYpr0&bSy@^#AFbVmRUl~;h<4kO%~*kiuy>6}sz7R0 z644CL1~N;*iS*lv|pFs zRhynwLymtQ-k_wKWpahhErz%=%+5{9Ffb3azi{j{xoQGRRF0OrU)l33JM z3g!|E*HYB_Pn9xWh0KH~kV~FZ?N2`Yc;e)Z1n#Zx&2!T82ISf@G)~8s2 z-=t!IMMp()&t5jnY3JkFm=Q28?l^6#5UfEKnkQYm$@F2zq?Qv+MgbLO3TZ=(Y9TnK zm_})r`Yd0XB?!|JavvD5S|Mz>zz{MNM+_KQA-}^p^f9G84NIanD|Oswe^y0Lm{~* zzH;fcuh76U(3wb*I-5jtZG%Gtg98I74>PrE!*F;JmJJ!)L!gwt_&%+FT`Bj;Yg}-H zm*?G=Rl8;0g*ct-`vTWx>7$7A&I>{k4x{!b&O?{1VdC^s-W)Kz{nvr!Zcx&bra; z_xNj@`ZO$4pX#QB&6}BVaLqAD-7=2C{ZD0m?VS1+`>yt6+^@rU6VB5UPIkdDVXvDX zCz`>msV6rml+9h}9QK+5B&wJsk%ra8_m6~|+KuHyMWlB2v*Iyr_l{g;AxL}4XL-$! zcKPP-v7j^R`^l9Jhp%mZQtd!NWgyFfcB-nlccf(4>)6PVB(`aZh-4%~bY5<%7ejHU zFnq`anjaDv*?5YSkfT6J4_*cXd&3_{L@2COlvWajiCwX7GFq+3c5oq&GZs z6cG^u`vTgmZM&QMhl;~q4w@kY?PrMhzI_QtY{Tn)8`N)L5wA+AIl7Mkt`%bwJI~2Q zn+5`BCb6tLz9eqaKHvWu5`>fm;s3%l{_!$#A@co6x!z^2*YcrFHQ zfZAxIv%xB%b3AMl#Vu@MyX2gCg~1%jvSA%9Ms?so5uBIZ-Gpb-sK9dzsUX#%s5Pq` z9FXPHgDQzzi`LCj4Og#r^m;}+L|Y`5WvJ3*0>1%&!!av~ZG;i`l)^eI5-&KnuH zu6qn)%Hw5zfOjDnmT&qsck4Pwg{hVrn zPN1HITjGC>k3Fh3sJ}pPE>T1tVjqdxcKghlvr?XNIIys7SkgWGU8xRVNK4@&+~~yP zWNR&V%{;nPo_u2pJ_yp)b~8rkl-&)EaW|qs+k%m+ES8FJ zXhW)2kPAb*+sS?LB#UQm85Hix6oiiDB{TE|aiMpDIv1G>!$QNdu>(q+<>O{kSA{1Q zmaV%JS^&f4$#4bSEmVlOutmoyL?(0Cq7$Yuh3g>wu2?jfsJc5Xb%QrV(#{jTW+2T8 zkiByASB>Q0+asw0sg)V5I(nB8ILzNdnLqVo-FD#|GSWO$u`J;|pMM>_^N)mRJNBi9 zg~u0n&GD}O2t^}V7NzbgxDF=%3xVt?|!e9=E)Heskis8FIlxf5-)! z#bT&jh!n_cMFxZFh|HiP#UWOdgFk})SXwyh0?S2)j!khawmM?@_}9WZ zGQ`6olB-#MhL%$vD~2-|4rd-=2Zhih9w~CmOkSqXMqtp|oMAo;zX#cgnnN|=Kmo(F z4%6C2tuUb>+!Zs867LJ+T6gbPg9IQv4r>R(2vRm;ZAkjBholN5m7=sT#5i2wwiWZD zdI?PoXZ(k%ZF9kx@pclm8`*fI*({a%7S*n8gutyyB=6A71O?*k_>tN$ad%nWb}$Er z;pvR@=MS8Aj)r-eF45?rJNSuJP8%aQhF{rX8?5_E=f94UsGejs*S=rFPQR z9s2`iwRI>qwkySoY-6~rZtvvj%mlrCr4nRjX-qZejl=tr%MEtRVsU)%d8mtwjrb&M zhIeGVSd3ebkztUJ7oL~eN&H}9qROgiD3Dl=Qo20zGkh;uJ0D3}|H$|9LUrx21bI#o zMN&K|ZG%)}lKQZd0ev?7&oo?7g2Kz1QGx<>!6+Fd8uz$~laAI%sqT1ck zgp(}@s`!Qq|E8Uep_7u8?6sgAPRI~f_xs)ewcJm*%W4jRXcw7wi{DXT5b zomsV=&-?w`uBoA2Ob2GgMVZ({g$LD-kt{o##VWCEM*C0|jKl1Avv9I{^u8=D9LG6y zWe5hY4Edt6v61DIwg^tUdFs-R9IsnG$AUx_(>mr^KRSvWrRXZy1Yn?Z^0?Ot3~B@z zya)^)U}9X6p%lhX;fs4Iju?IczdoCx!gJ-lzd4fC1KCyw z9Fe}J^;&3bYI$I0seP77arBRrgJGX|1!k8GkxAFEAq4N(4jyIna*k9vdOe<^lp-JH z*bN@~ve}Q7;CaNzKpQhzLO2?DmB=B$op!CkLqoyg+4oMt%3(jG&cVw?XaXZk+(O5T zu`na?vf&g+@XI4lT@fYQgz<$EIcP{=Cq8DG@Gt)40a)T_aF|XzfMm>pp|=CFvkHU? zUK$Z_hVHs4lKXFngz69nB#i_FV@_ z70Ae%fc*S=A!!82Mu6;HxhGX5(VCD{fuzEfwtv&7pJ9$EaVXM3Je-jtuz5m_7)dD< z7``hrBWxmSdcb3p2qj=i>WGdezDG)gk>beLF&T1Vklln413AB5NE!ule!Y-13gqm{J!uq46-cdc!QL|Il3}MVBfY#* zhR%q{J%-}2sg%yMj9|szj0`c@@igi!_NG19Jwg~7 zP28M8xhuo(bJNJKQ7DjIrrUDb&tUt=D2B7E(Ccx^&qzkGE<5Hb|oBM5~^@UYX@?Ey^u5tWP>32=sF;26v*t#J!uq) z0NIiNNrmfODd~i13#_Q<2FnB=tasRt@C+>xE?XK(^HZXhqu z$Tq}`%8lqeRX~h~riGV+GsKY~&hTd;BI-h5I_XL@?h=D}R?$4eeDcyfsS`%li3?8$ zFN$uOVNeYKIS*5kbJqb$qd?BD7m`MSoW*L??Mb6Zsz6fVI-O`Ps4N+_Mco+1wmG6e z2K(UHQ#X$v?Rxn4`vY{qA#%?z&`lb^u}$`z)ga&EIp*);-!>WbQr z&v`Qx9MWQmdL+K*K_EX03!IsT&PlpN2$6`@8BymW$|*%rjf@$9?Arxez)}2A&T$d{ zY>rGEG!$VeAucfjb(G8~ZvaR~axTc~kZ_jg+aqZd$Rq28WDP*J)&e=Za!(pXQU#I< z*Uu)x1<4EV;^#~%Eo_QP{9;8O6@CrLBu$^+LJYy%Y=nO*&+Mzi_|>g zF>x*jJQj+JQLMy^ZuS@xHql40j+tx5RwPuiVUP$p>pV_8Mi@&>oe@6>QAo-juELlR zEk@bLJi}NM6^cefE}7X&YetYK6qTRDsYlnM(WpRiImKbkFeqL^%!wz~jDwiAilb2& z=hq8IgD{LmOdk^#PJxU=m>>FMJNQeAFr9>GDu}Yz`Q8TvU{4>vVKfP zYUzXx5k+c(T(afx%lyf==16c6b`WX8pi1#JO(R(vOZZ%zVek{0SL%HbD#8Fsne})f zW1?`8&_>isOYQzNt3f!)t5NWsIb1dv5X3hqI6;R}?O%}I6DHarX4JA}v!u!7o9HlF zOjZG8TOE*}ma{_E1Ia3Y+;Kf1w}7Nnhon&;+T=*R+C5nXlK$%Ge{z1BL>08+5&&@840IeFCToVFVc;ktKruIlgJW(4N24&d*5mja^*<3ol7I#GMri`b9EU`-omjCD2Xf?dyj@% zRE#7Rr4e#@G#%9 zLsF_vAY+n-6GOLbjz(3L4Am)*Rexd`KLMZbt8yg&N zKjC6V=7dPoHq~=-z8SwQx(oIL@imP3qZGXD3~h>Eg?mU%q_#-OkhB(^tPb9~7*q&%UOwK7H8rv!A~F9P$$u zUb^%kv+AC|{N&}!7cXAE^wRU@#mf%|&WRVU=+_<>b9m|UAK@E)@v>(=@S@hQewe9q zNE@cm|0tm&CxA<(rNpDOpx`q>eP9Lg@bk#aTuIzUSS?DK!q_+}C(sZ#B)0NXmoHtq zeDP^&5RFTJefc7PdEENqrOP?b{H^p(em8?5JFz9>L`H~7*^moB~Z^-tmi z{`945m-{X~>|TEPrOOvzcpoG89%gOd{6so(4_PO-PB=q4^uDE$dr4Jr!qITYL}f0+ zXcWbJ5*U(-2Q$552B*qNx8REXkmpTckeU}2FL@9uaNvD1>_>HWpv>i1IXkcxNZVV1 zoLw&@RUoNkRjRS1AX-8*gDEY5@UOh7n_e(xo}%9}{GDsM`5$qt!+5$s)6Yq- z$NL#jU=?#(|H>P><>~vio^_5g6RPPMH+YyP^##Mc`l@%5p%}OS>VgoYWDoroA+4m# zsqF2c{%rv#i*&UNM4^bAaMV9?bkWe!28t-qQ@MPW23C==telo`fi=A{6+Zli-u9SF z1>oa>@uDs|boMp>8upeYZ+uq%-SoAh`x*YC58wZWZu(?!npN%l5Ls?|qF~6dt+5p5 zQJkJm(c>sKA|$#a(4)J>LtI|&8dkfdX0^YVELSKziE2^b4rQu5I4kZkoC-y#+-}A< zrqckK=8~f{kkjCZObCqLG7YduFaG~r9Q$f;RAHpD(w3MwshyQxS(*dowCLk=?ELoD z-_SaWzNr7|_`>mpg>kKazw?*0zGwU?t)J+9kJcaZqJPl8zN_7deoMc$W4m#W*3%2` zdO`o`v14QJ)K_A&ZGLpeb4JF(|zC4UuPHrz7-RX=7gA{ zHp^j903`{>ae@k%LL4My7pFCz4sFJE(&veSB>Xtge&v7@Cg@4d z1ZQ9sK*&3<50Wa7RJPK_bRG!NuiPe{f1Vf`ohZ^{M@qXd>nEVe-laP4)4?bNZq(wf^O1)u#2M?a%1{N5+O6HO=`FjTW6YZ-VE$&xcmBZY7S1noCM z(3L=-rkTfxrYy)B>VjxksqVyX$sX`S@(&4#$^<~hb>~BlH#MM7I9Z3hSu&_9J>7(p zUZowCfqFLw(zgaA!#6@w1(M3t=0snS$h8)o4KgCNY`*6y{R*9PY)_lIs{j1lCqDhL zfdc(g&pvUiOE%>(rS`u}$@np?M^umRzr?_d&GyssrI9Q8A+>$rzfgJp5v@B_^RRSF zUC<98T94}ws^{sM_{cBXo7Ilw%tpsLFO(EnYs8CA0xH0$v7$B^>ER|)6hk1HmT@9R zc-@pyum@BuaH}2bey!V8JL>a{`akq{&wb?6|7Kv|)A}joeO^D;(sYF%Y%?yh(%)ni z=brp@Ver$kNH0NlB|-Mf=O>2#tNxs7KJ`8Qx9SVBybn&cs2$Kf`NIfAxgcE2k z3Q-XN3WcyoCYps;(U}z_jRI*ABt~wAsH0UBG{#pR?%EA$5}_)ar*IUPX9VJ3LP9W6 z5%bA6qCDLdOJ|&jm{BOg9lbe>v+IRp35H>$f|ZUxAju1uBM?9&ZVD>gt?odv#Iod(|J$7HOVJ+S-v_p*>_I22oGhI)=MXJjvp)F&y*G zucoVRbkQG_Rnwd+ZO!;*Nh}Mj6*paCVtP2xkK7CShPaYq{yj`Gf@T}J0tbSTut3OR zP%z3UQP{e-1=6wvgwo^nK~e>hicfk#!szJY@CU8o;gM0q$8ay|?_BsBt>@cB4SnR? zFF$c_d!K*w+_T?DNS;Y-TB!AJsPp=-lp1&W47=uELUgu2CPuO!BXnH-cl{SiSy-Ag zO25*^hrXpdRKNG`bF?pi9)&(JJ~lpTogbMP8=f@BCq^cT=A5yy(c$6oiD4!wn!}@` z!{dQ5Ix;-Q|Lw`)5#AWK$0vt}N5>cuU^CwC$_13n<6R1i_r-I+^!T|B4B4T!AMjg0 zq44XPRJUv#3%0`=|t-O$Axd}SK}77)k>E4+g5(c zm|!WR!^SwjW{r*5lam(fEe|(Ojt!5Gl}BeLMn@(mN4RNYV+oSRfQ;CChQ~*TM~2aF-?~4c0Vnj8BZRqDdAyK00Ac4o{TF zdnQM?W0PZ}qh7=}xyIY$IJ;grsxWFLtE219j@>;S0~4rLI*mW5`ec@z`jq~sH`U4R zpDYflGk8>=5}|TFs`We73;Or@qlxR(%;stRh-yphYW9vkJS66p$Crj$=zSgnW zrMk;qx}&+XtGlbC+}YXHv460qqnkIod;3%08zE0%w)V_RkMsq8c--qOFS_vC11BdA+YoBxq5v7Xa^$vB>__N>-l^CzD` zlyIrfsnRR5F@L8&rFP_ER8UC`Jg#+@YJX1uF&@^3M7sVBA8!4LtL*L>{TYRGtiRmy ztiJMqJMkU;Wp&rY$Tf9Y?MB~P<|}BjrssHd@MH4L-R1U)QGIbY`>J1WQJ)j7_Yp=u zH{-}JsO|0TU8AD!k`+!SD{Sv)h^`Z1;J^0vrD*#TY{(bC5-uN`t?8k7k%Y`I;S61ckqOrQ}bG1`34`KSKCcDclv!tPIk<{ zWB$aMdrrUOo)8>n(hC=j=T9`Rozy_R;y-lXIufzBzl>@|{1maAf}Y z?2)tc^AEBYCr&KR_P^uU$$L)Rvv7*7IeBvS{(J7_Hk^FNyMFSXv;6n$BPZvNALB-K z-8Vb?(?@6TS$JCr8|G*AGKM3!grN$d_E9N^*MeQg3Jh#AoTv0Zp`{=?`r5Cu7nl6m zKVsnH#bL%1{Q*-GzW1SRD&X~BC_MO2i+a}!hEflRVs49H6xD0p{}&AFxOBQ%eN9iR zuEGWE_Z{cHO=t9#Uu{usoZ2^ke-Mrrjz;->wwTFhGr2+`o12}^7Vnt}a-~8k8|UWy zAvHA}1SO^@kf#iS!{y+PC_@|u-$sx!%n*pH`q4WsASC8f`d8`T|2*Q`#Q5}0S1%mh zq&~(Q?|&*$w+{lO10d?QRnOS^Z5G4_8V_c-`WgW%1E%lyZi_R8$UbV;XWk$QBj@ zx$_Snqsljg%vhkEAvm5r8U@oq_GrK_7pA9J6)P(RQ`z|-o{Nh|jt8^ZU~YQ;Xk3b? zf`Fd>;OA#4@4X?0&9@F>YXV{!Lq!AiCK^b5ReVyjC?y1hfJd2o26NM+ws^+QH`SfZ zW_PL7L0{^2=!lZJtAzlGWA4ZaU9CsxpTnp}gH3j7$ZCDT-WU=tD zshogtB23$g;0_p>UMLu=;|-;Uwh%fLofdxFZGBTUH96718){oSa*q+|z_&A7uc`CQ zwe3_pVrQyVb$G)pXuB+kwUgOo?YJrA$tboq+}ylj(l*a}BAL_3&q{nK)k?DVn=Bn- zhQSTjS^9=_eD;SWw*{rcalXVz66e<6et0!*e~FSPBc#ZizG*s%885>9BE*|vU^Ff? zdj*i3O{p-mKPi8+otp!hT`wdlkj((8(?l>;PPAz3qTV6z8pU?CS+?I zQEh6Sp!b-z>E@RGhB?IR!|tIL8m#w@b2pk)A8gGobtjSJ*p9N=xr3u5?^Gk?B6q1? z)9j^-_4cMNxB^Oaj8GF`(RRdW71|{WlyJixF+!2!LxmV)R_CCakBby<$S5B+k~^IQ zZqlo|%@|T@7}KsS+3>LDx*uu9dYDFWzYB z1>2)p?mA0XtQ{hQ+z!ty?MnnhQC>(wx%ESpTh9UF+w>3CyybU^9D2z!OZ826}hC~odG&A%ijSo%6f~Yd|>;vkEB(1n* z@YzCzT8qX;wpuo01Gm%AlwOdwA|<*?80Zxgi@=~S#94u3Y+xAm@D>~;Z*~O^WxUD6 z{uIPbFvyW~@Fw*bP)e#6#LwLVh!q&5@L&}fOrpYD1hKRcnHoyk-46 z8v!uA0ziWsV7_4NpT@S%P|G;2>|4@HV@BW_N{vQ52dT4NH|ImSh`+Iv2?H}Af z*xx%abZDTrzqfy|XJlZYf2g;AsHfap?ok8f-rEQJd-nJA^!D})F7~RPP5r$+y?wkp z($mjBgFXCpe{WC!{=Odh8z1JCo}q(1yx4PasHbQD@F4#x_cr$o@XnjP+jDJ9jag$TMrPo_3R%QVIDIs zOU1;cBOU2spa9Q~om|Ins{dDYTQoEnOq?(1^86pR&MS z^jhh%Bm+X=?He=w$;Fb{XHaZjjM|!t=xbz2)O4|Uv8#ucFDAy1i#fFy6WRWC-_Gz+O)8Ty7k4(eO;=?xpB{(2@(3UUrA z=7A=~)&vU%r_+;^?^wE6vnivo%S*Q`g-JiJ5pbTN<)jyzkWnB-yAWC9hm@Si#PpOT zGNNY!BF;*- zQkatn0G$#zQey|z5vEi!z7vN#8EM0hbS+)1Rf2Rd)ky|F3~<7ibYV zTbVQ-AmWbEn_i5al?h6bJHB5PV!Gg@5sHU|1|8E2tB)oF1L+^|SKKq6VGgV?tn^}| z+y|)&GA%Bai4YU!DA;bqFh-NZp{f^SCW44m-P0ufR8m%KhUvw|_@*3aU|Qmy;Q5N* zOQR^6V`=qT7L8WKOsY8RV1k-E#wJuYV3hr4_OVQ*<6<({nRii8UOa7cuvqnCR2t9G z08zIAD5WI4q5(|qSt}E*p;b7b!8H!3eA$&U-7OTh$S}09P$Or|xWU`=>Mlk-4r`&R z)a*_+U{X$U2&biMc1SUNguB8`6oF!bRp@jsi-rUW+|a0YH<`5$M#nheR+I)oBXVz; zb5jR^$t{q%JA#|zNi#K~AyEq5DB0SJp^+uZvd$Ql2b~8SNJeSaJBZfchvX(o0qneV z2@Nl=jJqsKItR5VD?Ga8QZ8L|QQN@sh-nQ*jZaqpnZ2C5gMSB65=x{H}n4*g5O zToH{)xq~R=Fu-S-Be71WJ(VnSc4x@k)9T|S7?Jfl6+|JYNfj*%u51AHAyRn~S>gbp z?I`(Ryq2&J46cipm7@g8x1(3o2s^F5sftq9l3MCdWH2(61G@Quo@(k9l3W83y%9@!;Z`TMFgf^q1sL>u)MTw!M z)ly25I2z0~s@ew=ClOJd!jP#7(pwiTnO|xMIpP9q6d;$Ho5%d4j~9ka7}twrE7lBG$@{$fC3BFUId;B~YQs#rBMt@I4eN zyP{+ZGO7(a)Hch`CPQksswNYEaSjDk2a~FJ9!#+&OA2G@T=y~bBCWERP$9kJ^j!Dq z#l$h9il=S^rcndbmtu_4dp5d!koV*WdJze8n5IG_Lwb;R^da((rFp+v}=GcIO;lcH+JukHi6MK*xnOb`> zSrpQTpO{{3gyt)}9v&eaAm-zfgs44Ev%0dS6E$lu#>`lh2>*e zGoKRfdfTeNEbr)M6mz!Q}Yc#{oJusX;jB` zrT3pOzcTjA#r~eot{D5Z`~VQL;_P6WY8O@=&y-$la(T>?dr+OY4}P(3%v06Pz?dha zo@y^v9mkViY#fI_9qU8<``8pVrf#fHRm?D1;>p(edDQ_d70Fm0hO;0W{O8A13c<4mX2ANG7hA{^zyid zaF{S(oLRoJJg%X7F|phDYjr$}tc>}TxPS+fi%l%I=#y7FB2ymfTJ)MpX{SO-gtPv??vx)eR6fM?BrSi_tn8(Doe$$vxXa4jp49cHG;q z9yo=j+*aGUy1W6%S#8f}MQABj5KlX2rlK(-kyz4lX&+LjlH^5g%jGgmF2<-v7@Blt zElF06Xshfudv3u^p7Y(}zodkq# z|7l%Wf|*{-#*a+>^z@#M!n0w6X}KVnE{eyB-;~rOBrO-q_pCK-R&eSfb72-zKRwlr zV@&X!k#c*}n^1&u654U+mdfp`_e_e{3A5`$R_K|EpPs6-NjHxpOqR=y4?#dkoe362 zo*a%xB^+AT+QRc@rX#y{11O8B`044z=nA4Hi}}xaYd~d%=9PACMk+E2liOFl7$Y&v zxKyaqXB>A?@zX08gYjer9bDPOAO`^;mx&f1PtH~_Bpb!la zHU(sNnZg%xJQ~w)YvYN4N#)t-aNWgFSBamVN!i&=oROW(UfXlLco0IH1B&T`=G^Qo zM?1m=RafTQW&wVqPHRYiOzNvw?%DFJtpKwLvjQ;!k;g_t-&lTC&LFiSA?9jf%1|cp z)pNzA4S-mb2}>n&2%(h;OAyBh5b_2GSKR>S!l54gI-wOJ1ihUJ^ZOI!$W&e)D2}d) zO?YFDUlO4pT_IsN&rcO*QpCd%^R+8u>CA=p=rtTkE;hzNy~!Mvz$K^7G$>#)$C{^v zF)Bt41B75q=QuXC_F~c$$;o2y;1v#3BBEq&hD8j0b4ZO@0aDzRo?X9($K0PVSn(g`-*w zc#{W&Y2@xR%pEt2!P|`EUv@QG9b7l=cbyI319Gk!4@YW*N0!@-acLo%NWf${u@6sx zC&M?FeGN!xMmqE1+Iz;}<%rcnIHoW;e1M`GZoESnkn^R9dJZEXYh^rYO@2sfu{e~b zPR`gA(g)~LFS*!l6RbccnmBh_2jEAX&@2}5_gDmRx>s}0gdK;}uX7Iqbg#@l4^o5D zJxN16S_wtulhR?BG{anJf#-14B6Wwk>OCWGLv}1USqsy(XndwM&94|?N&;ovg#~#( ztO|LEf0=O39;0y>{9ApTI9mV@Dk{}p3<>88QtX)801OD}4N^SLt|;w4|-}hVd~0Wv(U`x#o$1ZP{Ksh9U~A%P!M8BESb##A5>i#wu8jm z(K#dhD#EQn&~?HBL7ZTZg1`Q!zAl^`7BoP&AgWdjeo2C2qz+NLIEH zLTJ&vD`JcBwK=FAQkfMn5P=gz%_>3InstkE$U&WM9-CQW5=0j2vk=Ec zj+^j<{PLrz17`Fx{;*EblKq6v;@(!ApfLu9K~=K>lW6S%MVdTrOwVD;crNye%NJ`E z{EQB(GfqsawegNoH9yex3GMD_f!%Bv^jVo0+(n&z0Ru8aVY^pr1rYF$9U@xRX3E z9yyO{K(I3fqg?j4IuXnqn@6ssx-zERvLk+-n9(;(ssMvnNzfrYhyyce-N_^kMv9IT zXG265($T4T&O<03k}P#vJL_?J9*V+V;;7gTc^VPqF%@%6g(yJMeGgn6Va{o=1vvSO{vhP%`c0_Z4RzUMKYXGa=9#l zV?Hp!`4Fk6I1yV{kdjB!JcJhu%|ta?R;J}+n_7g(m!CG$d#M7S?#bo^XV zA8c(IyU96EX{M9zbs`Wu6N_%b+*V-l#PH4v7?KdbdSmmF+GZLDFl#srSwCx+>5vW*<0~Zm@^zT& zLa+oOf=dkJC+Th(U@kc~LceH=j8+g#p~27N#qg}4Ie3SsuYe|y*-m6_{HVybIvnU- z$!oxLQAf*W6Aj>QU|rZPrd<^9ATijyhdq@t3wD;rg_Gtf-l_m$^Lh6=Kw7FuK6pz= z8U=E8y^t&c2`fe`Ei|3Wl9Q7{(=-jfk1>yoV)F{2GclqL2RQN>*UqE-OtxT3zzaRPW-IP9FTinWs2T1dIVoPeD+bKfLWD=~O z_z>@*%E-Y7$JL!A{Ym`*tOTAfx0a_y3e=@1-lX1!wjQ3um>^5YE{+OVx{j5hFG<2| z4sE1Zly^;LSm2JwY>7|TdPWZ4B0;{1AcdfH(bD!WNYM#}Ie9Jz<0}CQ)(WeSlS>|o zXOvVfA!w5DW4n#NQnMueDhD@8{7qOXydx0@7ssWNxyv{|lJa1) zmw<4V7|iH(fNWSDl7lxzQU~PV>VeF{zpM)q0kS38lG?q^1sTR`QUH+#OP$QEz^A1o z&vXW0c|)J0WH5q7I&z3E7M)(gbL<_TaoOiscrV611l7y9GJ^+V3~!tf<;1FfFwM*v z!e>cP`iviDR1QC2E3fQ+NZPw_y0G}Pm2d#GS%QaQ&L^2&{3LvE9$?;ttdJ}v3V;DN z{G!AI(v85VE`|`}mtkR%C>&c%H~+)8TgDNZag3L?0*4BERsm%HYJh-)6|Nlzqn6hJ z$j+J#somJQkbG|m$~i47dJo|WdXddEo&9PW62uOuI}1-OoWh{u%D_@{qPL7ejVQSA zrm4ec2Yk1B9iie;jU_7fA?x_OALft>mtsjsE*>V%SqT`CY-;!8j2e-CF7%ma;h{}U znNbm9p3#F@@x!1;W5X^&Xb~!Md_6=od<9)x@~{)fLR%sLv^wH^!SqO&1;Z)C85G4b z5CKO<>8(J{uNM*_r5XWpcD;~Pfz<9TG!B^`wj+(n-ZREy#w2dhX=LXyX&m(wyYXSF zN9DG`XG-A(d&7glMipt{NoxM8*P)ml-HFq~3_plQ;bXX**h(Ta{9YlQxTs}rVoxXt z;UH$~gR~OQI~M0n<-BMX1t=8k`5MZQmw-sMg2>ogfE-;fBvl|IYXWk1y^vIa)b1^hj8uKI2Z^yI{~|gt zmgbf*smCPuE@xgx53p0{V3;BzPC1}S*u*H8q5eSPC$a`h*C9zHXIw^X4QGvTQ>o^J z9zb#OF)S#S*`gH2HMKuUL7wXEmz;b32$4;|F6w_hf35J70p_nsK)d9-y zFu9%>SH;0uL`e7xIo>d^>_TL-{2URry zL>Xt-3rQ77?cR!K3vmeeg#UXFEz79CI5Q_SCkE4_teAHE=v`#D@oaE%rOn%ne)pwI zFTMQqag63emo7QxN0?{v^>=ce$1h(>CdwMYOP3yFuz~I53YT8K{2}9+m;MNk%X|9L z6A!*9<5xZRcFsv9IWImm2d@zVp>wg`gj^6*lK6n6qd6Gu3ePwVBSVL0CXXu4K)MP6 zo`IX;@nk^+vV_CsaD*eX=}?eOhFq!uu_gSz9*`3W5;|(3NQxjKaK^`|-VyQDNZWFR zKruxEA%bV_kbLDQ#kE6FA(^0?sz45{0m$CBM?xFo8jw_h)b1_g!DSjDWMvZm4B>U6 zF=Z+ssoxw4PR{4%W)<=ok|o?xTx0kn-(%eA=5Nl~-f!zytq(D~^~wp)Vs`4br;K+q zL4=%$;})MT^LOhZt>0_=@7Aw9$agk;I6QCi08_R?I4g0Jd@|yRlrV~9NemeuGaLU% zT*?uOl_D?ZxxxRXpp82U(ZR8nHa9j;oz7f15SVXW|M>&} zdSNDK#DoK|cEGRR2$Jw9BdLL&N^y|%N40R|q%DyuNd;s);KcPtft+10Bvl}_TZ&;K zcoa`FQN_4WVna!~_|}Lj6gaw5m?ElgC{!mU5QiZ*(XtARkh$ad_x0~idSBB2ZTmm! z%Vw~6MW9BveJ^iOU4qVdD?U{a6KlHo$2Mhg7DIMli zayE^_4M-qjyk$f4lr@JAwcx04v@EK^naR`j!c>h|yf6GF!h00E2RX5u`gn>&d4|PD z=lO*X%`ymIhXZIB<{MUk;LFqda2+7$1qpmf?l3dT@zBUCpoyw?1p7q6K118cIP(if0DcXvg@_Rf=BPS@nrje9^G%V^d$AfMRUox{OVO=Knio{b*@)nm@4>6?^F7F zpJL2aCo{YHp4HDDx}g6)onrc~LGBS&7!xhogQVmWSJ=(Y&A~vyZ9t||(nupehfzo_ z6kd^m#}p=Ftx<%y(4?tgQ5dz7mx6OPlj33FyPOP;IY2rDNH{Hr8D9s;c|pSVk)`Hz z&yb>BXlAE+M|eyjJfJ#anU8>9kELf#QU=czB~TXQEn!@PK(slqS|n8c-T+AzNV>P_ ztiG(dXf(5FX_jr%h>h!kpR&oCApH?j{w*aI8A=w985y!Z;uApzd`4#J9AX|*Y4;WV zQ|jCL`(OUVeayaKxK_LB{7e1U>JRjPU}za#gsKpoXa*vuxpt%|*TO)!1wzNO8*n!icHj=JMb;Q>U}k&A^M{IHk4FGN?k#a9|O4 z#|*sawGXofiJHlf@nA~il;tqq>DZs<1s;B!v3_v|DliDk9KvZa<@GS;1qZB}Sa({3 zWV$G3sd_)~90}fdtxeaW5BS4hhvkD|qL2*+gRUoxH ziyEAj+<=jq+Uz8~h|(#8+B>KU0RtLG#>ULa@p0c9Hz$V!V?wxzSak4a|FdY=l8mw( z$i3&uZ)yGW-e<1qf$u%B9sPVt?It3uJ zv?iHV$(YKKiP1@uzmX-HoUq1+C-GOT(Md*ZGU{?X3us1m} z%n;A<;jA-0!92^6$#G+BWOQuY3Yc&?Il+`mn|Yx2BvUEJWBzYglaqYX8n?#Gu?B#g zT`we6AhkOS;a*A^{p6WFF6@7RJ3^7}K{eS!Q#+#<8LQaSH_%PXet+k{cpUqYj7;7U zd{ciHqspY@nT10#Oz_-YUq=V4?QJbGDSSk=yVlV+^sZ;sL1v(}spf;lhr?|$=yL1F zCPQnekHL`)knHN|>Fn+8>+9lgoxPo1{hggOurt?^S30_wI7y3pU-zN?9U}w1Jp;WR zoxM!O?Ct73xWBWnqpPp4lL?r;ecfHX9rVZdb@cal^|IccZvNff(=*7F$dw?|(BD2Y`DRvB~$DL(s>7OD@Tp`nx;2=;rV4 z?kRUVz5GT4I7;gVq;&~M?Y36w{G|F}D=HA1Co@|n4*av~&K5FmQR`zWe1YQx)RSo7 zZ|PTy#t|8`_V$U?zG&fA8xT{`>bBY1}Cels^h z^6}bfkZJA3GUFU3zdkr2eRWV7t~Ei4$=p%K7alpeFh6@jMi(BNJ$mfe40P6GZ|Hq5 zY*l~46wHrn{o2K=oDNV?5rjrh5qw>}m-+K$wVOGXYR}U$#?r11VLac4MV&r&l2MOG zPM=;l{qV69M~=NP9J9GgFKlJ#E)!h&8HJ~?;d z?6D&!7ET^JcJ|EKdyk!%J#qZl$@@>;`@pdir%%q#-g9zp_Vn@jxs&g@_f&bd%u=zP4r{)9Zw!ywJJ?q)w(PY;!hk_#GS}dnnm> z%cL78%a8_6e~OFI)D-z%%HG160;b-3=9=F6>Tm8<==YDR)~8-C>(>A0zKVK)XZ9~# z(|2BcN?+ZrHn%Yq)!gx-{*Sl=@kbet*mU*r+tq_@oHFed;4z4Vq9bz@aZF7Yvr|*q zsX{Kx#K`$VVXjojW(wKDEK$_a;>_Iryfb|i8Z0hk^M%7RL6D7$g=r21A!D66d@N-4 zAx>XZjDvEai?8OQD3*%O>wt(3$b86|xm=OCkPM0}96Q0h!-$`|r!*hs=J;wD9xg}) zQucHZmZllcIG@kQA!{fVOSu^ev$E53xnpxdb}kz<0AygbNXBl0qza^VUrFQ$(@eTI ziKA~DA+19x79%<+{LH}Y)9=P!$z&4~m#e$^r?1$&0{~5?yl?O_G@c!W-sBT=lZC zeZ}(6r;NK4G!m2hQK6P`=RQc2nPA{eGL$lykZ@fJtM~>vXyHcO9Epbvi)aW$^Hc*U zx>lg5f~eh1T+L*Pg_{!8%-M7AkTSYtltCVc6D(P>{$;aO+Ug0vX-R~m?!KnBZtH;( zYgS!!Pd1lT>*g_^4dgcDa0%|XrtaL)p_*l*4sn2kyX*fe@7$W(y0ZLE+4801R*&r- zcH5TK5=oKZ9VG5Jcbs!@4i10=g5XUACCZXKnr?g2RW?P57tu6r$r|^JdnQ$>nyOUt zmX{n3ZrIXyIrVp1ntIa1tFQX$(A{=Z+a)wk1OSFbW z67CNn49sfmm^k{$3(nwOvL_Cq@9uRgu9_bBJGmXJUR_pej_>{I7(QisUBl# z3ujrHLZO7fmlUR-m5||oBPG8*rldni_q`I0pn)F$v>g%oL=u{Kuw)`;hNW(qBO|KL z^b%gE)Y3~ORXaY-v<#;BBnyTNu_g^LIx-opb5cqNAgBSO;}GLK0WwE0fe14bj`Nx6 z_!z*0a*{9~&j1fV#$rckBvLwn9FRab4iu#}7QuiFGh@jq)9MdM0yj=MJ-_fn@+z(o z%W$>8=}4g!c}5;zB2Cijhz=feEA{RvbnHKckmCb+9zqlnRq!VsquR5Y0qRU&i^s}h~Y;{-QF*E#Gw(fQ+b zzC9OMV{@1*Yq@*2?y(nuzK+(KbZk;$1rJJ38On#0S zkN~Ds+o<$nBAk)Z5~CA{12_)PiuWbgEkj<(QYCW&XWAx&ulS^&5Ynfuy(~&jC*;aA z3DI8;C2x0KN%!3%e&o{WN{a6GlUb?x#&gbPM7K&|Lc-+&QCl1iM@hP#Ff}oyD7fp< zC?bI>F8X90>NK8SN=M?Kcwp8gj-lQqc1YO(_m!aOl25M#kkN_4mjjosfNA#u zp5q4}es~dQ`ZBn7AG9teKD>C5?_Iq30sq0bF7x9LE`BiZyAK2;@8XA-1mTVW3pmO6 zpW@YCzI5)=#ny-Ym-vET5y-iVEXl8b@Zlh18O~q43}Rbr=-k!e*65{yQNec`iX{dH zMh6ClM}~*w%b|g*gTwq!Yv4mb==gGQ5bt|vXc(Bep^@0|=v6_b8yIX2ygPI?HZgE@ zd}w%3FzEQ@(SaC)9{6kiZg7PE9**(%{9s_Xk?dfiZLV2Bm3 z4#xn)8;${oH#`RJ-PNmuEoL{2jK%m+b|WBkgP_t~8RFwchS^Mqkhi)CIUM+_7pG+K z6iS9CCJ|Q>Xz#h&NTFfM9Kn}ON+<+1rlhF!ryNd#d^pqCCL(UT`T(cN8Axcidoi(; zMedm$_!LAVC8`RpP2`T2&bF~J|%{_ zC=p79PBwN<%eKIr&Gq!n5C8{MhOEX>3qo4zJL!T*W#fW5i;+T1Jd4JokdYeiPUjxA z#}t(pdOE7WBN3U3K@@p5mqE1_%v>lH_!_}sL;d6gHI^n746Bn4QE@7COF!z|YxgbT z__UJe$;}=u2AL)qTlNFolA!E~b&Cmv3MD|?S&Swe%BslNc5?={i0l{X-rm`ilGbc# zJIf|UXdV`6oS6%y9hBi+nQUigf(u91tEW4KmRam7nm3GgN7XdRVY>OzA!*>2;7j)A zR>6TPCk#SBJsnjPne_rI;5=bTP|tUSIFrcRz=2b#ollK(n{u91qEYAKCaDw2o^(_l zCf}mki@bCdW9)NYm*7rK^UWv@_@7nbQ66Sw2!er6iPC4ve*R-B0(VQ>BGdU z!%w9G;RvN?+7Kp4n%EY=7r^@oHK5l&X;RCGHQON*!;*dVA`6n%bFh+0LbP|5DPTg= zmIVM3WKu7aa=8x-Y;vfa$O+S4Ahu6VPw%+^u8lkb(fu}=?}}%}Vk}NEA6?xfBBUbg z4f@=e!J0m~O=(h>$Jqm(#obfX#mOAA2BiWSYCW>TXViFQilB+}kD4th!Rwrv<8idA zR_ML}#%Ifi^80PpnAEd16@xx~1d>XESrb=iHG%&L1ZFqBHyT zq~gqzH)DB#?QGJ|oO=sb?J!M0Qio^HS$Zq`CiMy38!G6Fk6xLDZ&5JkgGlYH5e*R`&Hw z(lC-r7vvRxfI}mQV_d%|`1>qCWE`?_NrkJ9uLkIAd}; z>7K?tDZ9dsCkGrE3YTXow&K9knKT2$igY0dM46sn=mYD*R3s<1(n`PW1w=g0Ic`1P0oRU503>D5LBL z(THJ+hfP^N-w>gsban>bpz;eTDec}_MyEPFOD}r6-TJ(uQDpd+#IIONDoQ9}kY)^W zysxITuD;cRAeSR-x|ibOaSf4Dc69u|nE{edUU@Pl&Je;j!zcpCNxsJ2W%FGvXkm_C z#AL6O#Z{FUrP2mZ{N*H3BI;o{X@Kxs`gzVwBhCd-90b!`d2;;X2?4j?BYsd3d?Y)| zA0ZoMEy{T?7t(?dK#z>*a{M05b-1y^u@}e;^GlgtE)&5{2}UB-#)4(HC zmjAC1v}+~b7dMw)Q)*|?>^b&Mr5n;d-%%zJ-XR*f2R@}h;XY?U2T?@k2M8l6)I!!1 z%$BP_z(&wtO1hOhm+crpm>(i;dKSxiRErU6&bPZ@-;Wcd;y8GRya0>a%m^|#mzry( z0VO}VfD6eS1tE#vW@{j5sSTiMH`Rt4n8ePM<47rS;JCO=%6RcSr~=VY-Q8!F$NM9o z(tVrc>ZB+ERTSBI=ckZt1Vn$UYnW5aCnW*~t;7o)la}Q4iOj$PP5pv0)Sl;LVpm}I z9?R^%o`U(?kvMLX-N4a2^3)sPA0<3H(e<2=0Xh$-duN0fkd6Y-9X<5EsaEP@J7mIQ zTn-9QN`tbXcqU89)Cr$mAgo9sW-lHZl8>M*&9Ul8gsK3UqR$AM0JuRjA?B~dB#@7Z zJPik3i%~2lQQh{=+Vv?qs4cGn?vO}E*ahq?c@fu;o?)Pkc%hC5N24`?K_T+gh4&Ce zInZnE#oBmito3?|Fn225)&SE{u-Xg~s!L5oK2e+#PN8HM&L%^5asd~(aQ>=SHz6xA zrHNLyix_`1LmWW`4J}hLuJ)}udHUHA=*gCHm^_4OJBuL(VU=E>NG_9_2Xt_|krSyQ z9h2Ch7E+@|DMJw(QlWbo(LqgO_hQmck?mm(>4lY8Jr@;S00_o}BGXyZoJnwId0UzX zfJ7tKKsR{e!V1C;M)d7&=2}I-fQ3a~6J0u4^%L0K4tk znLKOQ3VWcrLxLBFSWx8LfnoA~t((mXGInh}VHqOKUb$spQTw zD9%??y3*MhGLZFq$>g*HR2$sTCUc6&5dI)FsA({l3NXIZnX@%<=*Tl1t4&-0DlJhA z-R~U7Q-piYIYK?31j>tMY(oCP4U{Rm5h0KVu$}dRfbJrbaEeHj?#09zsA;Bk&HM5m2c>9Hap}vGF4EAS&SKi&@2D zoeRM4Az{_40ziAnF}_DN)X1YgOub)`&I{^z(I;Yq0*nEm2(dm|)sr1aOk7RrXzxYc zmZn$?e2lpEZO#JtoX%Q-p5>iKRfXJ`Mfo7O_{1hU7l7$UATZx!Y9L4=P!+umcyf6f z^^O{+ivXlN76Y(EL~UC7N)a8M#fT>Ge@2fAppPY;MFt+};9pO{D!d*_>ZD$bqy^x> zL8d%nX>5$K8iw6o*;z{gwk0!YsiMJ%OsjEHZuiv0UYM;BcoVF zg4SGEdogA<@aXW)6Uas%hfdJoRWcBGYJ_1=j_ei70}bPiUb6)$ij9kDbfoBJCAywX z7Kk%ZyoQk@PL4SBAVc8ib*!_LWHN!(>fRYFA+Z}|VDy?km_d4iAwUcd*;tmrI6QGq z4e8m+blZ(NlR${m3m=4mC@{TvQ*8+(*ku^*EP@xXLeVkGnHv&3bNNX}IjLAD7Mara z&e|b8LJq*f945~lEjA0oX4B$IaGNzMT#=1Yy#^8pH}wR>lD1QTX;Zz@OzazEUotT& z>bx)6N?()|LPiYQV%X*2{1n2Sj zZ~>*MuGQ0>bOSkQe_XPx+j2Zb76>YBRw25G4kT-)ZUP-1-uxl=G;evtE^Ok5; zp??5jn2cNiilup7t>kZW8O&Mge+B&}UreVlYdK4`YcWh_3IBE<87X6}Kw3AI7?$H_ z04hGD)VyXv%BH^{nP{p1jz(dALBvqkVwg$@^In|^PZ2eTGor-~Q+?_WnfG*-l#Ri= zGHQkVFIP3SE8DdyGEcRC^@!7%L})q(+-BrNEGP% zPjn4eNs#oVS*+)g!(mZeg5!wZB|^7Qz#Yt_re_GXkl|}LA|;Ae!f+BD=|cqo;m&-I z0{{dI#t8hFjxOLZe<`KW-$dYE;J|qb+zp;)Dnq`y6{L<$DZ+4EXu7STfb- zvfL$9G0u;gHt<~}-$QHLR3)6to=Qyp-HR7SmW^vo|KW<+9VFi5Cu)U&FOER(7gP_siL zeS)W(XMccA%Ij&=SdQR3?vi zcAof9lD6m`h%i_pnes%wL~M2$xCt3mL>eQ)$U|Wx&cULBP!cFzViv86K0CgEwxgMn zm?V&w>7z5#xHF?dBS)GNdCTOqKpled@K`ik@45i)Qmm7ncTRZ>oI&A0`)T$A@2*=8 zWAsww`U1v9Q&B)4S>n(Vfu##uyE#tK?X3@XEU%UpIjhXM985&TM07pvmRpGN%?oFH+cwDi@ zBiV>62IJ8us#E;7NR$m&JGO;UsRBx`O&{~w1w3$>W7G2jpg>x~P)Th~rx6UHI}BJ4 zH1L8;jD@N=40ns_I37x8iWo9Z;`BYNAsr^L0jMm|nO)=*5D_vg0bIK>FlgBC=+4Lx zXeIhOQdTeJ4AC+xi(fdo^DQ1aLBTb zGI)yPM9|Z`jK0IL@6vSicT#-Z>jHDO1)pq_p+!>TTo%}s_XXvHGyo5q{y&}(1|80M z-cnC4Q=~SZcRVV%O(p)3X``4Gt!;wl4^tNjUeG8^7SbWqK@VEV;jduEOj$b-XGm=V zk#vZ4pFeKC!~_tB?IXkbkDw(ucXSgC0C;f@ZHvhD44s1~=TERO@e65u>t0N}UD8>{ zi}iD=gv>}*sg&>s5>?hLT}JKkcj=A^bY7x-n5sQ;RzWC=XLW3xA&%O;^Ep_yq7oIz zxx}K01Vu%TV<(SEz&#}1*0V7JoOrUFQkzOdDzYcact9oN>T}@XP@E)yUbVrnN#=^9#TDzy9ExR$%^k1kj!qAc@nowyq2wSThU_g7aSxZfgkFx zfZ2o15W#3ZD8ipmQe6YFK-go1!qH;;?E%7KeSy1_O3so@0wn_A5gX~1HIV+Ii4hne zhtjx=6Gqr30(cZa2;%De9O*(v1(y%u3gM`I!6zWKz&%Qq180I(cX2l*k%J^7_LD(8 zhVe8KxX1(GSPIf;2*C)BYUdC+a@P{u5~?f!;YyZr2!t$0IUErmIOSQtQckz@aMGX#N>%))iggu@1e4Iw}j{< z#7kkJxHN5eXd-J;7J!E%t?GnX;V|O4nCnuKbTrNy^lc(DIp>{uDqrDHgP@i04aY4k zbBX6#Vmam1QBW8teiV8~?y@UWi*UdZZ)YH6^<`1=3_?)9NOO)5Tb(M0_Dm}X*?(Dt zoRyBl+~qV*1~UKXO3p~gUv&s+OTi!#T;zrkC7FZ=kJ%KTieaN^08Nq4p}sty2}=pp zAcRZ+7l)r(7aL4lL>Rb_5==SQoXNt}w~sbG?v;ANnukybBE$UDzX$oP*IL9}JSD^yu^|#& z7_F3@NCTJvjXIc+q}eNs#3hQ2vrEYuMFklufp~_v!U9%_OQnM6Ag&M14g|B{IT_j7 zN?xJn4FeGfCIFhKWJA$n(n(DTf(*kPlN%n>8JZ4T0qF$`N=Qen*`J#f*GiVK0K}Q- z!D5pv=nE4v^n8>oK9iDX5JFo!s{BVI@9^F;pS~l4lU| z+out-^5Z)>DU+lIB;`6q;8VH2NWNB zCqrH%ub}IAYWSZ7ji?Zm=pOZx913?ydB4O+bMvG>G=uS08sSOeRG3Xw1;CcKnQxR9+!Y;g6p@KhiLs3-Am{#+aiSQU93j)Yd>@(mh0lVYLSzCVE@7Bd^2&1%(R>af&Pv1iqnmg- z5wp)GqC-QQn+76o0ss|7#Vtv=05KyK4l<>L`cai4;wCyV%DXV`o!=1cM{EjP9|w}h z3G3+jP{6l{+7f~!r7nRo@<{|2I5`qwL`<=KQY1NuMu_$!TF8eWrzS}cCM6|kQCouI zmGqA|sr>z^LuJoNP2>#S91=|WQQGTgiFo%EBJRB`DxN_^6ol!TjQgtO*k^ab~9=*n%l!8XXJ^D7s-RLD>YGcXCPsj{D4Hl(2|NSDMgml7seR+2_I4v z0oMB`01^;zOJ>Nik}o?3{u9ae^x?visZEkmLecSt+Ud`oPS38O&)`+y-Vt50wDRof9 zX_+qXS`=kP(I+BVpstbcMe(^5eu2)KO%({Bidex~$R)t|HJD{#WoUJiatf3gC2lB0 zk4OcU7e1oY+lq(FuVdA-6m0b&`Dje_9IaSVR7nbx9~~nP(tr2fX~U+4Gij(`=sKB( zqjb1R`ETV6gzUd8N`96QHfe{E2TysgbT5hi6U#K46|DK)mqE!{2`T;fPR>dRguK-z zq|IDz+pxk!Ak@eJCW(krY=#$yaLN%c6**I&#mvWzPg*=RT9i^*j3J={jX> zI`F70A>_q`q=Z%^DoVCryMkeAVwvNwu^QP_(#t$qvS~0D{Fl;aNVk(IASpm?X1YKU ztQY(6wBh52iGU;q%DFvw92b`Dk_X3Te{n*7`FxbjKa-MY5Yh&5?46>1m^hbAEWRvC zo{x~Xe?kZc*Lx>tqU4?KD`_*=uOjB+{g6k&o}|L$?+{;9?URK_B^-heNNp@ltROXE z6JL@k3m9P_pKvCWU{LWQH6d2UXSgSm^%4agn_tBU!<@%@$C!t$U`+9b7*5N2QWej$ z731HeDi+vU(t1EqPS$x36G9_xjlQR)4L015G_F{ybKMN)0Qz&@`A*9iz`1q%UR9_Y) zXCdSj2wC~@ot%}D4k2ykYBxsFV0IsGo$Ltt9P-MbP*F0MOVBz4gOC!2Pr#NJFaVju zOr(r?4% zBwxi$;|bFgK;3|g2~T{Q0a!%D=rD&7XQgS_Or@z(!xfd9PQnm`{V5r#Sc#ggyU}FXf6YBHSN)aG=aY7C=doPEQ zXAnZ>o%eDIA^R_jlCxe3Vbb0^IV&X{LfXuArEPFY><*}P>~`{gRM5dDs-p|&0J-Kh z@$nEjRJj1}L1qWDk+3&^0yqWpelxb80Gt=pbY!V>sWE_CF_j{>lTHZkbsVfV9PHWI=~@1KHlCirR*R?O)A5PqY&tOwuJzRP zt9v4?QQSv z{Q0ZxulGOO*xB3M-nsw9_RhntFLrl#_8xtC|IwfS;lX!*GQaN&|MS8A=9gO!`K#@F z|McgF8{50P{O#7xgU!eH?(ILm|JByU!NK0WKksed-+Q$CPaC`caImqz`^CniFAw&1 zcDEiMY##jS%gz1!8`}>zHXir$vyK0>zwvnMzkIp-r+W`R-}-EG<0JE5etMDr+L!zM z)19w&zu0}Wx&Ltgi~axb&-XSCzGbU>+mN)oyZ7+n*I(}bdFR32_QAm>d)nUE*xT5D zw6U|%+B~;=e|TqqZ*ymF|Iz;5{k<>t+5g739M9(055L>od$jQtwCwCIX1?$1|L(!V zt?iBdJ^7s{Pqw!o?Cc!eXOYzIqkG#2-)(GfJbCo__WqOIorhn1wSTbp_1Ak_4|g8z z{WBEqZ*M+%xc`rQ&cV*TtuMdadD8#z+k?*zwm0_v{=f2Jn;RRu8;?FRQ>T)sZ(QRO zw!V10z5Vdv7yI9SyK(Q~;&3m8y z=|6t{_XqdxJ@{g0c=xOA&Ap9-ZyxS_wZF5owY~XZ|H0natxVd|8i*J1S#lgc}7XSS3zub8A?ZK1nt%IHYulK&( zJ-E+rAN=F?*8XEYdjB5|?(OYwanq0fw0F>d@Oba@``f#FPrlpT`}+RpFw`feGIctM zYl|N*-Ku}``$nUAr@3}#_15~e=H2zhwdLy{-@LxK`bmBLX7k3<-&|Y&!}7K3&E{%z zr7{1f+t+UWO{1}XZE^VK^*eX3)tA5dyZY_=%}<;2joWK$*YB+T-R+xquJ7Ds(d$8W zVp2$4T)VM$V|j6DvC*i1`bl$nZLQh-_}co7we>&VUc7sAt+Co%zkBQ7KWMJqUcd9n z>f+7y<>mFp+U=!lx9_YiE!_P5B8xR{{o#{aH?H08Utd~YTfXz@-5cw-RzGSqmKsY| zdM184iS@;1+0f<+dD|(fb{S9D@+zhgI)>A54LitN%X50MR9Lc9$I%SKG*sn}xj-pd zuB!OMWxG+e?d8wP`5?c#B6ajd&#Ku?-}M@6fmbk{LTY0A`#$4IeQkvqSgx*Hrn0_b zXl|)e3|!B(ypZfs;F*RIl!CBUa?7FTS$bIy3V~X3?7%5GLCbziHyy9wdNs#zgZ@xe zSB+}juhz6&f$^-2QcX?FoJ!*KT79{u2EM6S)`D);i>d}RxN3Nwq5%wU*lKw>R4m8w zP0gmLqNTj$)pi?my5Tj70EAe@yofu_@rbzLA?Q{NXvSS4C>5NNYt0=jT!{0hV5Q6j0I1%0$;P-f@arT z*8=XGPqi$U+vD_=g_@>>f4u!^nL%cT=c+Axu*3q2ZSi%kSfN@aS1LA`_vY1&vSUEh zYzk=;KB;peo^H90VW{?;qEyO(6{y}^V5&yh_T0d*i$Te)xj|q%MzPj#%jHn5g+T!6 zHf*Mbic(h#o^AMczwH4YAMgPyP1UNaE=B26Q`4tjqP{X$E31yJTBY)w;V!tQA2^y* zx6Er*Xeb(XsM!_^hD9<*+Fb6&POgx@t>giqx0dW-b@5K!@C-Hy#=I72iknk{(lT)J zo?`{n>J+S*Oz!)>-#uBX!^3n!5JppSjX)_wkEghyZn#>l)Uqdh&#jc)is#y4S@VOy z_k(#`_l%OJx~4H_sjeGZbywlwjefgQ)?CjomN{NrN^oV0wiCpE$VJjQOckFEu|dGT*7Td3CqK3?XIWzrN9duCQqt4 zFU)@K^e8YmX;S*0B(4WG_FxmD*N4a+L1B~@9U*Il~=!IdRmmTtSQQS=L?@?yCX zx^}JTS4_JVyf+6rzdEO?LEWfYYS}e&cM7UyTmD<2YY~!Mt~&EIrKKJ!=hf8I#N?^B z_`AQkyXpbk&&xA>#jbFag`i|qRc0esyufIw7fsi+tbEY4>dTt)$7^}Rvm2@sLS_jP z4PQ>6+%OCuL1d`Dazb^QS`3m1H<6itGpyT zbcapXD3lm!HCN!$P1CU|np+jlQn>yCBHB)+CZ{5uF<(ItX#wYf{B#YaS~c88K|=_b zCR{nU?m1ytY?hF!rf*x0>w1Re*k!-$6_??oMNbVILESXUn%!SxTjiSKSyj6nOW)2g13w zWxZc%a0aScu*x>W*=)zP4Sk_h3~Zz2ze!(=9i*lvQ$pg>>SE2|_8s3+aM0=5EPLJ! zho@ziZMR$s*8>OHvJUxy!FwwdT{p08*YlPGW4=_feZ#BzVN)xFR;j;^K(?04h52PC zFm=}qR622HPbE>GUz}SY@Te%&Cimc$bhqLfYRL*M_}BC5wHgzfb=6xmRiBTpGyiod z%o&b4Ut^r*uph2eRMqnRvRYKRNl;APWuvy}x}`$dg)ak(SxQ3U+O3sZ#VtaGVl+IP zpr+v)%|K~bE?i#m>Qyf&dF7f_W2k!(?k`$49K($_e7)B2(Xj=~D%EU1biIDxa5VR$ zYicF*3r5XWU8R(pI{hu`tG8-Z(09P9%%hdfV!-Jc1y`_rs?~ZU%)5=M3XcYM$Y)nj z5B}PX9wUSz?6{@bao_8#xU}%*x^FC~^TC7%0J2V|6-S>T|Crj5kuSSjO zAbL5pLd8Y-DvM>+Q=K`}DSC69XT^p{-!WCshUX3RUB99Qj#XM-E`-iCLoGONP~r~y z3qb)|ZLMIsmMw>@tUgWiABOMNeATX7jzzmmV3Y$@_1qR3esF6wr>q5fP-57K>(`nk zy}C>X?9zIeYs>-JVnLzSkQp+n;@Ms^A1H2_(JBSQujm1LuNE9nFHE#4gs+$3PuQj0 z2#f{AFT&E-8axizvFO?5u-d@Z@f)tqracR>j?(Q{RL@YG3uSAmaLYzAnVws8)qbPu zz*8DemG{q0^ROnzbEorZ$b22_877`cf@jI~O=h1M+G3-mgmx}p`+ew^uxUz-nrDQK z8mNsQ|DmZg9lL}rrw-fAT7?1jAohk$6(cFoHNR#DHJEfBPAVWRh-3(#)|M(h6KpkQ zZoXJ@Llv3km)4r9T4`W*IC`lzA2_u#lE8#W9+!)W;zj*p9PMEg7}Yw{*SSYwpB zT4jJM{gh3wQ7Fw73N0@eG!|9WMUbl~Ij&sHP_-PIngdxp2NgzdOP=XRnu;Ch8f*z))(-T5e&f z>Ez3EWk;(8TF`7RIn1xgSACS2?{OA(!5pSp(ooc*&qLA+VY8w+jK`UCRl8`HLH<_wV9EF7%c=`LKrYt2U8yN!K>F1d6l5(Vzd?wBlH`;xAf+m zz2t_sm4=BBu9bDQ-$zHn!2DIYra4X54$=%+JM|JL8mo0jWoQuNeX5~dEb)Q^UsY;; zE_WlWl$}axKCnx=-TeK7KmMRxKv;YLB;3+eS)5Yn;>fHs;Dp)RgDGXHnA6`jSWxjk) zX}aoM%`GminuF^#%n@279&Lx~mNv7*(5d@Sn1xvLzp*TTvPsdZ1Wy zYz5n@VPHm4h-)*m}vW&NYm=GLg(vFH!&K)-v9SQLxS03JqVj=NYv6(yOjI zO$Up~u7$;7sXA8!zJXke5|r~&?WbUwn<`JyQuRiFz*c-kFQPqZUNvf(Ua|e62NxE# z1*AYk;v$AA9sLUAt@}M*jc!}WUK~>oJE?)`Q?Uw_c{HM~$=k)i2^XAFg#k~h=G2V9 zto56Q|A*T3h7lB+)nZsHYejwHDYvNq?VZJ%QBY9XbE`~_G6Gbeg&|*X!yB$wsg{bi zVtK_%z3PacA^gm1NBkNgZ}1HU-tdK9{y{m^4%L3ec2zpGb$r;Mrn&1S$4k~Vp>Sc| zF>D-`LVz_9@(YzNug1fl!M(^Y6az(D^s(lwAV4iE0gw?$`^BbV1y*&*!(q2e&Rl=! z7H%&$O4yKdxRM@LZ)zrS`b$jQy0M6tua?!ar*R~@TL3bzaJ!yY!<*P*LD|6Rbqn}y zw?5;wRl(6z(YgH^u=~G(zfFTpjQFf53QfMw`;JS^KYrK(Vr))9SRY+{Ec;iSX`%&j$$PF8>sRJMHL1tD*!)?C4QXx1xX4UZfzb>UP9p4AsEG*(xqRPpc_Y_x>8l|)^Rr_@;>S12I+_NTZ`rVG zzGCud?NGd$l82#Go5S(4y>QMi<89fMtQ#=F48y!QsTBb#OX3i?ZQ+{+w4fn_CU59@x4c7H~SkezY16vM@{` z(3@qYrX|P5PWOc`UHfeHZXh;_@38?FKGRWnuo9OQlv~PQR|4#FuUf_Azy!DQc-NZQ zQqMz`sSg{fv!X(yve=+=&_&W1hUfS$K7R!h-cy+*F&?SJxw_+V;3CdyO?(<3M@j*x z&7UuMguHGWniCL@!l$U%p;ayvLrkn<0Wr%zBqp((hUbb8#GJx@yq$`LoWrH_7Cy>1 z?&g(=sj*X~Y3idpa|@YCTynq>Q<*sK6h#&)a4TwJ$|S`zZ9DpO+(f)MW?b@2iNwrQ zYx=dR8QymM{7if{8*j~AnkI!5XOazxs#%iVi8yIWXKF^BoK9rMA}^{=5n9qt#^clv zDN_Ij#xqmXdM-|@<7{#!&Sxc6lOpci%q*SgQVU5%C~&yhSteg=2|hWVk0%));GoO; zsX$Bez1bXafR>(`x2BdT%{`SweYIv!%XAYajf{?u3`|ckdE{zrbaFa2bY*NTHZ(Xf z#^jR8_~^i7c5GyLG{zK@QO1kL28Nko^6KEw;6Q8eaOnIX<57lx82a@HvrU+rGCDeR zRc4`#kB^Kg@(z7#W?(QmJUBEtIvR^jO$-l=4KU$kY&aGh8XX!K9UmGQos7k1CkKY& zW23RD*!WCrbZ|I6Hk6u(4aFuV2CwqjlLMpi;pvh7p)qA(Wccd9I8$3juTD-~x#Er` zPJf55gTs2|%51DPl)O5@z?O;efsxSxR-76fh>eZMViU1}%R^U($HoUH^oiJL?CQYC z*u=ngvnSFS=VCp4P)zVE|rGch_iFflrK zWt=05C8ow8e{5)CTz>a2u?hL4;i3H4?9>#W7#kTK_vu`^H_8yz1Tn}`n& zT^^hm8lD)PijPgUhJHCRIX!q~kO?+ix;S2ZrOrS70N~ z=*rMcJT}M#nemZ{iIIuX*vQz>P(0Qji;s^o6K7;JJ~BKoJ30~9VTWR<4HwV$b|MAVamE^g{|MGRu d*I$3}^~yo?@4v6~CC}Z}zfK-R|NdL@{{ld5nMwcv literal 0 HcmV?d00001 diff --git a/Jack/Launcher/RES/Lang/EN/PSD/Error.psd b/Jack/Launcher/RES/Lang/EN/PSD/Error.psd new file mode 100644 index 0000000000000000000000000000000000000000..d6a6af89fc9106555dfc19d9ea6ab6ac621b9431 GIT binary patch literal 25190 zcmeIa2Ut@{+czE{*aB&!n;sG%kdTA`A(W61q!;N@M0)Q{P^t8_u7c3~APo0&C}?m|mQcmX}e^OwGv3DfF~? zarC4OGbi2CCe}Gb6jJPyk)7jTQ<@Q36B?CPlb7a}Zlmy;;GsxKFG|f2Oiw8mWai|T zXOxyPGs@CD**+0$D0#XZq!eV7r!c1%9o+*z|Pa4S(NS-#?<>ke4N5`tF zDq)qAu&6Z4QS9dC<|vXlN+be+5R_FHmZwY?6qa#7c?Lsr;y&C~SSB>sBupzRaLkEw z6bnU;pr8p%Ls4o_ozk4*@|>bVW=d*NMY*RwAde=Yh`dc3OTi}0s*FWz1TORmZ z;D378KkoWl9{5|}e|pzH?)qCE_*>xr)7}NC9;rW=st&t+px(#pj^GMF4yRLsmTD$D}1;Rw#iEdNwil@}F^$dD

ol#@{jNw((Pz-BEVOdlOpz-|zmiVbhi+ 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

dRhMw3VwjvTBnBJ#}) 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